diff --git a/.obsidian/app.json b/.obsidian/app.json index 4297b0b..06f45c7 100644 --- a/.obsidian/app.json +++ b/.obsidian/app.json @@ -1,7 +1,7 @@ { "promptDelete": false, "newLinkFormat": "relative", - "attachmentFolderPath": "./assets/IoC", + "attachmentFolderPath": "./assets/引言", "showUnsupportedFiles": false, "newFileLocation": "current", "useMarkdownLinks": true, @@ -12,9 +12,6 @@ "foldIndent": true, "showIndentGuide": false, "smartIndentList": true, - "spellcheckLanguages": [ - "zh-CN", - "en-US" - ], + "spellcheckLanguages": null, "alwaysUpdateLinks": true } \ No newline at end of file diff --git a/.obsidian/appearance.json b/.obsidian/appearance.json index e39d435..ad5d4dc 100644 --- a/.obsidian/appearance.json +++ b/.obsidian/appearance.json @@ -2,7 +2,7 @@ "accentColor": "", "cssTheme": "Minimal", "monospaceFontFamily": "Maple Mono SC NF", - "theme": "moonstone", + "theme": "obsidian", "interfaceFontFamily": "霞鹜文楷", "textFontFamily": "霞鹜文楷等宽", "translucency": false diff --git a/.obsidian/core-plugins-migration.json b/.obsidian/core-plugins-migration.json index 597024c..c128689 100644 --- a/.obsidian/core-plugins-migration.json +++ b/.obsidian/core-plugins-migration.json @@ -26,5 +26,6 @@ "file-recovery": true, "publish": false, "sync": false, - "bookmarks": true + "bookmarks": true, + "properties": false } \ No newline at end of file diff --git a/.obsidian/plugins/dataview/main.js b/.obsidian/plugins/dataview/main.js index 8207a45..11a47fc 100644 --- a/.obsidian/plugins/dataview/main.js +++ b/.obsidian/plugins/dataview/main.js @@ -695,7 +695,7 @@ function intlConfigString(localeStr, numberingSystem, outputCalendar) { function mapMonths(f) { const ms = []; for (let i = 1; i <= 12; i++) { - const dt = DateTime.utc(2016, i, 1); + const dt = DateTime.utc(2009, i, 1); ms.push(f(dt)); } return ms; @@ -710,8 +710,8 @@ function mapWeekdays(f) { return ms; } -function listStuff(loc, length, defaultOK, englishFn, intlFn) { - const mode = loc.listingMode(defaultOK); +function listStuff(loc, length, englishFn, intlFn) { + const mode = loc.listingMode(); if (mode === "error") { return null; @@ -772,9 +772,13 @@ class PolyNumberFormatter { class PolyDateFormatter { constructor(dt, intl, opts) { this.opts = opts; + this.originalZone = undefined; let z = undefined; - if (dt.zone.isUniversal) { + if (this.opts.timeZone) { + // Don't apply any workarounds if a timeZone is explicitly provided in opts + this.dt = dt; + } else if (dt.zone.type === "fixed") { // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like. // That is why fixed-offset TZ is set to that unless it is: // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT. @@ -787,25 +791,23 @@ class PolyDateFormatter { z = offsetZ; this.dt = dt; } else { - // Not all fixed-offset zones like Etc/+4:30 are present in tzdata. - // So we have to make do. Two cases: - // 1. The format options tell us to show the zone. We can't do that, so the best - // we can do is format the date in UTC. - // 2. The format options don't tell us to show the zone. Then we can adjust them - // the time and tell the formatter to show it to us in UTC, so that the time is right - // and the bad zone doesn't show up. + // Not all fixed-offset zones like Etc/+4:30 are present in tzdata so + // we manually apply the offset and substitute the zone as needed. z = "UTC"; - if (opts.timeZoneName) { - this.dt = dt; - } else { - this.dt = dt.offset === 0 ? dt : DateTime.fromMillis(dt.ts + dt.offset * 60 * 1000); - } + this.dt = dt.offset === 0 ? dt : dt.setZone("UTC").plus({ minutes: dt.offset }); + this.originalZone = dt.zone; } } else if (dt.zone.type === "system") { this.dt = dt; - } else { + } else if (dt.zone.type === "iana") { this.dt = dt; z = dt.zone.name; + } else { + // Custom zones can have any offset / offsetName so we just manually + // apply the offset and substitute the zone as needed. + z = "UTC"; + this.dt = dt.setZone("UTC").plus({ minutes: dt.offset }); + this.originalZone = dt.zone; } const intlOpts = { ...this.opts }; @@ -814,11 +816,35 @@ class PolyDateFormatter { } format() { + if (this.originalZone) { + // If we have to substitute in the actual zone name, we have to use + // formatToParts so that the timezone can be replaced. + return this.formatToParts() + .map(({ value }) => value) + .join(""); + } return this.dtf.format(this.dt.toJSDate()); } formatToParts() { - return this.dtf.formatToParts(this.dt.toJSDate()); + const parts = this.dtf.formatToParts(this.dt.toJSDate()); + if (this.originalZone) { + return parts.map((part) => { + if (part.type === "timeZoneName") { + const offsetName = this.originalZone.offsetName(this.dt.ts, { + locale: this.dt.locale, + format: this.opts.timeZoneName, + }); + return { + ...part, + value: offsetName, + }; + } else { + return part; + } + }); + } + return parts; } resolvedOptions() { @@ -937,8 +963,8 @@ class Locale { return this.clone({ ...alts, defaultToEN: false }); } - months(length, format = false, defaultOK = true) { - return listStuff(this, length, defaultOK, months, () => { + months(length, format = false) { + return listStuff(this, length, months, () => { const intl = format ? { month: length, day: "numeric" } : { month: length }, formatStr = format ? "format" : "standalone"; if (!this.monthsCache[formatStr][length]) { @@ -948,8 +974,8 @@ class Locale { }); } - weekdays(length, format = false, defaultOK = true) { - return listStuff(this, length, defaultOK, weekdays, () => { + weekdays(length, format = false) { + return listStuff(this, length, weekdays, () => { const intl = format ? { weekday: length, year: "numeric", month: "long", day: "numeric" } : { weekday: length }, @@ -963,11 +989,10 @@ class Locale { }); } - meridiems(defaultOK = true) { + meridiems() { return listStuff( this, undefined, - defaultOK, () => meridiems, () => { // In theory there could be aribitrary day periods. We're gonna assume there are exactly two @@ -984,8 +1009,8 @@ class Locale { ); } - eras(length, defaultOK = true) { - return listStuff(this, length, defaultOK, eras, () => { + eras(length) { + return listStuff(this, length, eras, () => { const intl = { era: length }; // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates @@ -1211,7 +1236,7 @@ function normalizeZone(input, defaultZone) { else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input); } else if (isNumber(input)) { return FixedOffsetZone.instance(input); - } else if (typeof input === "object" && input.offset && typeof input.offset === "number") { + } else if (typeof input === "object" && "offset" in input && typeof input.offset === "function") { // This is dumb, but the instanceof check above doesn't seem to really work // so we're duck checking it return input; @@ -1328,10 +1353,10 @@ class Settings { /** * Set the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century. * @type {number} - * @example Settings.twoDigitCutoffYear = 0 // cut-off year is 0, so all 'yy' are interpretted as current century + * @example Settings.twoDigitCutoffYear = 0 // cut-off year is 0, so all 'yy' are interpreted as current century * @example Settings.twoDigitCutoffYear = 50 // '49' -> 1949; '50' -> 2050 - * @example Settings.twoDigitCutoffYear = 1950 // interpretted as 50 - * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpretted as 50 + * @example Settings.twoDigitCutoffYear = 1950 // interpreted as 50 + * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpreted as 50 */ static set twoDigitCutoffYear(cutoffYear) { twoDigitCutoffYear = cutoffYear % 100; @@ -1513,7 +1538,7 @@ function daysInMonth(year, month) { } } -// covert a calendar object to a local timestamp (epoch, but with the offset baked in) +// convert a calendar object to a local timestamp (epoch, but with the offset baked in) function objToLocalTS(obj) { let d = Date.UTC( obj.year, @@ -1528,7 +1553,10 @@ function objToLocalTS(obj) { // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that if (obj.year < 100 && obj.year >= 0) { d = new Date(d); - d.setUTCFullYear(d.getUTCFullYear() - 1900); + // set the month and day again, this is necessary because year 2000 is a leap year, but year 100 is not + // so if obj.year is in 99, but obj.day makes it roll over into year 100, + // the calculations done by Date.UTC are using year 2000 - which is incorrect + d.setUTCFullYear(obj.year, obj.month - 1, obj.day); } return +d; } @@ -1836,6 +1864,9 @@ class Formatter { } static parseFormat(fmt) { + // white-space is always considered a literal in user-provided formats + // the " " token has a special meaning (see unitForToken) + let current = null, currentFull = "", bracketed = false; @@ -1844,7 +1875,7 @@ class Formatter { const c = fmt.charAt(i); if (c === "'") { if (currentFull.length > 0) { - splits.push({ literal: bracketed, val: currentFull }); + splits.push({ literal: bracketed || /^\s+$/.test(currentFull), val: currentFull }); } current = null; currentFull = ""; @@ -1855,7 +1886,7 @@ class Formatter { currentFull += c; } else { if (currentFull.length > 0) { - splits.push({ literal: false, val: currentFull }); + splits.push({ literal: /^\s+$/.test(currentFull), val: currentFull }); } currentFull = c; current = c; @@ -1863,7 +1894,7 @@ class Formatter { } if (currentFull.length > 0) { - splits.push({ literal: bracketed, val: currentFull }); + splits.push({ literal: bracketed || /^\s+$/.test(currentFull), val: currentFull }); } return splits; @@ -1887,24 +1918,25 @@ class Formatter { return df.format(); } - formatDateTime(dt, opts = {}) { - const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts }); - return df.format(); + dtFormatter(dt, opts = {}) { + return this.loc.dtFormatter(dt, { ...this.opts, ...opts }); } - formatDateTimeParts(dt, opts = {}) { - const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts }); - return df.formatToParts(); + formatDateTime(dt, opts) { + return this.dtFormatter(dt, opts).format(); } - formatInterval(interval, opts = {}) { - const df = this.loc.dtFormatter(interval.start, { ...this.opts, ...opts }); + formatDateTimeParts(dt, opts) { + return this.dtFormatter(dt, opts).formatToParts(); + } + + formatInterval(interval, opts) { + const df = this.dtFormatter(interval.start, opts); return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate()); } - resolvedOptions(dt, opts = {}) { - const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts }); - return df.resolvedOptions(); + resolvedOptions(dt, opts) { + return this.dtFormatter(dt, opts).resolvedOptions(); } num(n, p = 0) { @@ -1959,7 +1991,7 @@ class Formatter { era = (length) => knownEnglish ? eraForDateTime(dt, length) : string({ era: length }, "era"), tokenToString = (token) => { - // Where possible: http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles + // Where possible: https://cldr.unicode.org/translation/date-time/date-time-symbols switch (token) { // ms case "S": @@ -2636,28 +2668,61 @@ function clone$1(dur, alts, clear = false) { return new Duration(conf); } -function antiTrunc(n) { - return n < 0 ? Math.floor(n) : Math.ceil(n); -} - -// NB: mutates parameters -function convert(matrix, fromMap, fromUnit, toMap, toUnit) { - const conv = matrix[toUnit][fromUnit], - raw = fromMap[fromUnit] / conv, - sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]), - // ok, so this is wild, but see the matrix in the tests - added = - !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw); - toMap[toUnit] += added; - fromMap[fromUnit] -= added * conv; +function durationToMillis(matrix, vals) { + let sum = vals.milliseconds ?? 0; + for (const unit of reverseUnits.slice(1)) { + if (vals[unit]) { + sum += vals[unit] * matrix[unit]["milliseconds"]; + } + } + return sum; } // NB: mutates parameters function normalizeValues(matrix, vals) { - reverseUnits.reduce((previous, current) => { + // the logic below assumes the overall value of the duration is positive + // if this is not the case, factor is used to make it so + const factor = durationToMillis(matrix, vals) < 0 ? -1 : 1; + + orderedUnits$1.reduceRight((previous, current) => { if (!isUndefined(vals[current])) { if (previous) { - convert(matrix, vals, previous, vals, current); + const previousVal = vals[previous] * factor; + const conv = matrix[current][previous]; + + // if (previousVal < 0): + // lower order unit is negative (e.g. { years: 2, days: -2 }) + // normalize this by reducing the higher order unit by the appropriate amount + // and increasing the lower order unit + // this can never make the higher order unit negative, because this function only operates + // on positive durations, so the amount of time represented by the lower order unit cannot + // be larger than the higher order unit + // else: + // lower order unit is positive (e.g. { years: 2, days: 450 } or { years: -2, days: 450 }) + // in this case we attempt to convert as much as possible from the lower order unit into + // the higher order one + // + // Math.floor takes care of both of these cases, rounding away from 0 + // if previousVal < 0 it makes the absolute value larger + // if previousVal >= it makes the absolute value smaller + const rollUp = Math.floor(previousVal / conv); + vals[current] += rollUp * factor; + vals[previous] -= rollUp * conv * factor; + } + return current; + } else { + return previous; + } + }, null); + + // try to convert any decimals into smaller units if possible + // for example for { years: 2.5, days: 0, seconds: 0 } we want to get { years: 2, days: 182, hours: 12 } + orderedUnits$1.reduce((previous, current) => { + if (!isUndefined(vals[current])) { + if (previous) { + const fraction = vals[previous] % 1; + vals[previous] -= fraction; + vals[current] += fraction * matrix[previous][current]; } return current; } else { @@ -2973,6 +3038,8 @@ class Duration { * ``` */ toHuman(opts = {}) { + if (!this.isValid) return INVALID$2; + const l = orderedUnits$1 .map((unit) => { const val = this.values[unit]; @@ -3059,26 +3126,11 @@ class Duration { includePrefix: false, format: "extended", ...opts, + includeOffset: false, }; - const value = this.shiftTo("hours", "minutes", "seconds", "milliseconds"); - - let fmt = opts.format === "basic" ? "hhmm" : "hh:mm"; - - if (!opts.suppressSeconds || value.seconds !== 0 || value.milliseconds !== 0) { - fmt += opts.format === "basic" ? "ss" : ":ss"; - if (!opts.suppressMilliseconds || value.milliseconds !== 0) { - fmt += ".SSS"; - } - } - - let str = value.toFormat(fmt); - - if (opts.includePrefix) { - str = "T" + str; - } - - return str; + const dateTime = DateTime.fromMillis(millis, { zone: "UTC" }); + return dateTime.toISOTime(opts); } /** @@ -3102,7 +3154,9 @@ class Duration { * @return {number} */ toMillis() { - return this.as("milliseconds"); + if (!this.isValid) return NaN; + + return durationToMillis(this.matrix, this.values); } /** @@ -3212,8 +3266,17 @@ class Duration { /** * Reduce this Duration to its canonical representation in its current units. + * Assuming the overall value of the Duration is positive, this means: + * - excessive values for lower-order units are converted to higher-order units (if possible, see first and second example) + * - negative lower-order units are converted to higher order units (there must be such a higher order unit, otherwise + * the overall value would be negative, see second example) + * - fractional values for higher-order units are converted to lower-order units (if possible, see fourth example) + * + * If the overall value is negative, the result of this method is equivalent to `this.negate().normalize().negate()`. * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 } + * @example Duration.fromObject({ days: 5000 }).normalize().toObject() //=> { days: 5000 } * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 } + * @example Duration.fromObject({ years: 2.5, days: 0, hours: 0 }).normalize().toObject() //=> { years: 2, days: 182, hours: 12 } * @return {Duration} */ normalize() { @@ -3270,16 +3333,12 @@ class Duration { own += vals[k]; } + // only keep the integer part for now in the hopes of putting any decimal part + // into a smaller unit later const i = Math.trunc(own); built[k] = i; accumulated[k] = (own * 1000 - i * 1000) / 1000; - // plus anything further down the chain that should be rolled up in to this - for (const down in vals) { - if (orderedUnits$1.indexOf(down) > orderedUnits$1.indexOf(k)) { - convert(this.matrix, vals, down, built, k); - } - } // otherwise, keep it in the wings to boil it later } else if (isNumber(vals[k])) { accumulated[k] = vals[k]; @@ -3295,7 +3354,8 @@ class Duration { } } - return clone$1(this, { values: built }, true).normalize(); + normalizeValues(this.matrix, built); + return clone$1(this, { values: built }, true); } /** @@ -3692,7 +3752,7 @@ class Interval { if (!this.isValid) return NaN; const start = this.start.startOf(unit), end = this.end.startOf(unit); - return Math.floor(end.diff(start, unit).get(unit)) + 1; + return Math.floor(end.diff(start, unit).get(unit)) + (end.valueOf() !== this.end.valueOf()); } /** @@ -4275,6 +4335,14 @@ function highOrderDiffs(cursor, later, units) { const earlier = cursor; let lowestOrder, highWater; + /* This loop tries to diff using larger units first. + If we overshoot, we backtrack and try the next smaller unit. + "cursor" starts out at the earlier timestamp and moves closer and closer to "later" + as we use smaller and smaller units. + highWater keeps track of where we would be if we added one more of the smallest unit, + this is used later to potentially convert any difference smaller than the smallest higher order unit + into a fraction of that smallest higher order unit + */ for (const [unit, differ] of differs) { if (units.indexOf(unit) >= 0) { lowestOrder = unit; @@ -4283,8 +4351,20 @@ function highOrderDiffs(cursor, later, units) { highWater = earlier.plus(results); if (highWater > later) { + // we overshot the end point, backtrack cursor by 1 results[unit]--; cursor = earlier.plus(results); + + // if we are still overshooting now, we need to backtrack again + // this happens in certain situations when diffing times in different zones, + // because this calculation ignores time zones + if (cursor > later) { + // keep the "overshot by 1" around as highWater + highWater = cursor; + // backtrack cursor by 1 + results[unit]--; + cursor = earlier.plus(results); + } } else { cursor = highWater; } @@ -4447,6 +4527,10 @@ function escapeToken(value) { return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"); } +/** + * @param token + * @param {Locale} loc + */ function unitForToken(token, loc) { const one = digitRegex(loc), two = digitRegex(loc, "{2}"), @@ -4467,9 +4551,9 @@ function unitForToken(token, loc) { switch (t.val) { // era case "G": - return oneOf(loc.eras("short", false), 0); + return oneOf(loc.eras("short"), 0); case "GG": - return oneOf(loc.eras("long", false), 0); + return oneOf(loc.eras("long"), 0); // years case "y": return intUnit(oneToSix); @@ -4487,17 +4571,17 @@ function unitForToken(token, loc) { case "MM": return intUnit(two); case "MMM": - return oneOf(loc.months("short", true, false), 1); + return oneOf(loc.months("short", true), 1); case "MMMM": - return oneOf(loc.months("long", true, false), 1); + return oneOf(loc.months("long", true), 1); case "L": return intUnit(oneOrTwo); case "LL": return intUnit(two); case "LLL": - return oneOf(loc.months("short", false, false), 1); + return oneOf(loc.months("short", false), 1); case "LLLL": - return oneOf(loc.months("long", false, false), 1); + return oneOf(loc.months("long", false), 1); // dates case "d": return intUnit(oneOrTwo); @@ -4557,13 +4641,13 @@ function unitForToken(token, loc) { case "c": return intUnit(one); case "EEE": - return oneOf(loc.weekdays("short", false, false), 1); + return oneOf(loc.weekdays("short", false), 1); case "EEEE": - return oneOf(loc.weekdays("long", false, false), 1); + return oneOf(loc.weekdays("long", false), 1); case "ccc": - return oneOf(loc.weekdays("short", true, false), 1); + return oneOf(loc.weekdays("short", true), 1); case "cccc": - return oneOf(loc.weekdays("long", true, false), 1); + return oneOf(loc.weekdays("long", true), 1); // offset/zone case "Z": case "ZZ": @@ -4574,6 +4658,10 @@ function unitForToken(token, loc) { // because we don't have any way to figure out what they are case "z": return simple(/[a-z_+-/]{1,256}?/i); + // this special-case "token" represents a place where a macro-token expanded into a white-space literal + // in this case we accept any non-newline white-space + case " ": + return simple(/[^\S\n\r]/); default: return literal(t); } @@ -4609,10 +4697,14 @@ const partTypeStyleToTokenVal = { }, dayperiod: "a", dayPeriod: "a", - hour: { + hour12: { numeric: "h", "2-digit": "hh", }, + hour24: { + numeric: "H", + "2-digit": "HH", + }, minute: { numeric: "m", "2-digit": "mm", @@ -4627,19 +4719,39 @@ const partTypeStyleToTokenVal = { }, }; -function tokenForPart(part, formatOpts) { +function tokenForPart(part, formatOpts, resolvedOpts) { const { type, value } = part; if (type === "literal") { + const isSpace = /^\s+$/.test(value); return { - literal: true, - val: value, + literal: !isSpace, + val: isSpace ? " " : value, }; } const style = formatOpts[type]; - let val = partTypeStyleToTokenVal[type]; + // The user might have explicitly specified hour12 or hourCycle + // if so, respect their decision + // if not, refer back to the resolvedOpts, which are based on the locale + let actualType = type; + if (type === "hour") { + if (formatOpts.hour12 != null) { + actualType = formatOpts.hour12 ? "hour12" : "hour24"; + } else if (formatOpts.hourCycle != null) { + if (formatOpts.hourCycle === "h11" || formatOpts.hourCycle === "h12") { + actualType = "hour12"; + } else { + actualType = "hour24"; + } + } else { + // tokens only differentiate between 24 hours or not, + // so we do not need to check hourCycle here, which is less supported anyways + actualType = resolvedOpts.hour12 ? "hour12" : "hour24"; + } + } + let val = partTypeStyleToTokenVal[actualType]; if (typeof val === "object") { val = val[style]; } @@ -4828,8 +4940,10 @@ function formatOptsToTokens(formatOpts, locale) { } const formatter = Formatter.create(locale, formatOpts); - const parts = formatter.formatDateTimeParts(getDummyDateTime()); - return parts.map((p) => tokenForPart(p, formatOpts)); + const df = formatter.dtFormatter(getDummyDateTime()); + const parts = df.formatToParts(); + const resolvedOpts = df.resolvedOptions(); + return parts.map((p) => tokenForPart(p, formatOpts, resolvedOpts)); } const nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334], @@ -5103,7 +5217,7 @@ function adjustTime(inst, dur) { // by handling the zone options function parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) { const { setZone, zone } = opts; - if (parsed && Object.keys(parsed).length !== 0) { + if ((parsed && Object.keys(parsed).length !== 0) || parsedZone) { const interpretationZone = parsedZone || zone, inst = DateTime.fromObject(parsed, { ...opts, @@ -5159,14 +5273,14 @@ function toISOTime( if (extended) { c += ":"; c += padStart(o.c.minute); - if (o.c.second !== 0 || !suppressSeconds) { + if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) { c += ":"; } } else { c += padStart(o.c.minute); } - if (o.c.second !== 0 || !suppressSeconds) { + if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) { c += padStart(o.c.second); if (o.c.millisecond !== 0 || !suppressMilliseconds) { @@ -5829,7 +5943,7 @@ class DateTime { /** * Create an invalid DateTime. - * @param {DateTime} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent + * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent. * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information * @return {DateTime} */ @@ -6178,6 +6292,43 @@ class DateTime { } } + /** + * Get those DateTimes which have the same local time as this DateTime, but a different offset from UTC + * in this DateTime's zone. During DST changes local time can be ambiguous, for example + * `2023-10-29T02:30:00` in `Europe/Berlin` can have offset `+01:00` or `+02:00`. + * This method will return both possible DateTimes if this DateTime's local time is ambiguous. + * @returns {DateTime[]} + */ + getPossibleOffsets() { + if (!this.isValid || this.isOffsetFixed) { + return [this]; + } + const dayMs = 86400000; + const minuteMs = 60000; + const localTS = objToLocalTS(this.c); + const oEarlier = this.zone.offset(localTS - dayMs); + const oLater = this.zone.offset(localTS + dayMs); + + const o1 = this.zone.offset(localTS - oEarlier * minuteMs); + const o2 = this.zone.offset(localTS - oLater * minuteMs); + if (o1 === o2) { + return [this]; + } + const ts1 = localTS - o1 * minuteMs; + const ts2 = localTS - o2 * minuteMs; + const c1 = tsToObj(ts1, o1); + const c2 = tsToObj(ts2, o2); + if ( + c1.hour === c2.hour && + c1.minute === c2.minute && + c1.second === c2.second && + c1.millisecond === c2.millisecond + ) { + return [clone(this, { ts: ts1 }), clone(this, { ts: ts2 })]; + } + return [this]; + } + /** * Returns true if this DateTime is in a leap year, false otherwise * @example DateTime.local(2016).isInLeapYear //=> true @@ -7180,7 +7331,7 @@ function friendlyDateTime(dateTimeish) { } } -const VERSION = "3.2.1"; +const VERSION = "3.4.3"; var Luxon = /*#__PURE__*/Object.freeze({ __proto__: null, @@ -7330,19 +7481,23 @@ var Result; var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; -function commonjsRequire (path) { - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } var parsimmon_umd_min = {exports: {}}; +parsimmon_umd_min.exports; + (function (module, exports) { -!function(n,t){module.exports=t();}("undefined"!=typeof self?self:commonjsGlobal,function(){return function(n){var t={};function r(e){if(t[e])return t[e].exports;var u=t[e]={i:e,l:!1,exports:{}};return n[e].call(u.exports,u,u.exports,r),u.l=!0,u.exports}return r.m=n,r.c=t,r.d=function(n,t,e){r.o(n,t)||Object.defineProperty(n,t,{configurable:!1,enumerable:!0,get:e});},r.r=function(n){Object.defineProperty(n,"__esModule",{value:!0});},r.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(t,"a",t),t},r.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},r.p="",r(r.s=0)}([function(n,t,r){function e(n){if(!(this instanceof e))return new e(n);this._=n;}var u=e.prototype;function o(n,t){for(var r=0;r>7),buf:function(n){var t=i(function(n,t,r,e){return n.concat(r===e.length-1?Buffer.from([t,0]).readUInt16BE(0):e.readUInt16BE(r))},[],n);return Buffer.from(a(function(n){return (n<<1&65535)>>8},t))}(r.buf)};}),r}function c(){return "undefined"!=typeof Buffer}function s(){if(!c())throw new Error("Buffer global does not exist; please use webpack if you need to parse Buffers in the browser.")}function l(n){s();var t=i(function(n,t){return n+t},0,n);if(t%8!=0)throw new Error("The bits ["+n.join(", ")+"] add up to "+t+" which is not an even number of bytes; the total should be divisible by 8");var r,u=t/8,o=(r=function(n){return n>48},i(function(n,t){return n||(r(t)?t:n)},null,n));if(o)throw new Error(o+" bit range requested exceeds 48 bit (6 byte) Number max.");return new e(function(t,r){var e=u+r;return e>t.length?x(r,u.toString()+" bytes"):b(e,i(function(n,t){var r=f(t,n.buf);return {coll:n.coll.concat(r.v),buf:r.buf}},{coll:[],buf:t.slice(r,e)},n).coll)})}function h(n,t){return new e(function(r,e){return s(),e+t>r.length?x(e,t+" bytes for "+n):b(e+t,r.slice(e,e+t))})}function p(n,t){if("number"!=typeof(r=t)||Math.floor(r)!==r||t<0||t>6)throw new Error(n+" requires integer length in range [0, 6].");var r;}function d(n){return p("uintBE",n),h("uintBE("+n+")",n).map(function(t){return t.readUIntBE(0,n)})}function v(n){return p("uintLE",n),h("uintLE("+n+")",n).map(function(t){return t.readUIntLE(0,n)})}function g(n){return p("intBE",n),h("intBE("+n+")",n).map(function(t){return t.readIntBE(0,n)})}function m(n){return p("intLE",n),h("intLE("+n+")",n).map(function(t){return t.readIntLE(0,n)})}function y(n){return n instanceof e}function E(n){return "[object Array]"==={}.toString.call(n)}function w(n){return c()&&Buffer.isBuffer(n)}function b(n,t){return {status:!0,index:n,value:t,furthest:-1,expected:[]}}function x(n,t){return E(t)||(t=[t]),{status:!1,index:-1,value:null,furthest:n,expected:t}}function B(n,t){if(!t)return n;if(n.furthest>t.furthest)return n;var r=n.furthest===t.furthest?function(n,t){if(function(){if(void 0!==e._supportsSet)return e._supportsSet;var n="undefined"!=typeof Set;return e._supportsSet=n,n}()&&Array.from){for(var r=new Set(n),u=0;u=0;){if(i in r){e=r[i].line,0===o&&(o=r[i].lineStart);break}("\n"===n.charAt(i)||"\r"===n.charAt(i)&&"\n"!==n.charAt(i+1))&&(u++,0===o&&(o=i+1)),i--;}var a=e+u,f=t-o;return r[t]={line:a,lineStart:o},{offset:t,line:a+1,column:f+1}}function _(n){if(!y(n))throw new Error("not a parser: "+n)}function L(n,t){return "string"==typeof n?n.charAt(t):n[t]}function O(n){if("number"!=typeof n)throw new Error("not a number: "+n)}function k(n){if("function"!=typeof n)throw new Error("not a function: "+n)}function P(n){if("string"!=typeof n)throw new Error("not a string: "+n)}var q=2,A=3,I=8,F=5*I,M=4*I,z=" ";function R(n,t){return new Array(t+1).join(n)}function U(n,t,r){var e=t-n.length;return e<=0?n:R(r,e)+n}function W(n,t,r,e){return {from:n-t>0?n-t:0,to:n+r>e?e:n+r}}function D(n,t){var r,e,u,o,f,c=t.index,s=c.offset,l=1;if(s===n.length)return "Got the end of the input";if(w(n)){var h=s-s%I,p=s-h,d=W(h,F,M+I,n.length),v=a(function(n){return a(function(n){return U(n.toString(16),2,"0")},n)},function(n,t){var r=n.length,e=[],u=0;if(r<=t)return [n.slice()];for(var o=0;o=4&&(r+=1),l=2,u=a(function(n){return n.length<=4?n.join(" "):n.slice(0,4).join(" ")+" "+n.slice(4).join(" ")},v),(f=(8*(o.to>0?o.to-1:o.to)).toString(16).length)<2&&(f=2);}else {var g=n.split(/\r\n|[\n\r\u2028\u2029]/);r=c.column-1,e=c.line-1,o=W(e,q,A,g.length),u=g.slice(o.from,o.to),f=o.to.toString().length;}var m=e-o.from;return w(n)&&(f=(8*(o.to>0?o.to-1:o.to)).toString(16).length)<2&&(f=2),i(function(t,e,u){var i,a=u===m,c=a?"> ":z;return i=w(n)?U((8*(o.from+u)).toString(16),f,"0"):U((o.from+u+1).toString(),f," "),[].concat(t,[c+i+" | "+e],a?[z+R(" ",f)+" | "+U("",r," ")+R("^",l)]:[])},[],u).join("\n")}function N(n,t){return ["\n","-- PARSING FAILED "+R("-",50),"\n\n",D(n,t),"\n\n",(r=t.expected,1===r.length?"Expected:\n\n"+r[0]:"Expected one of the following: \n\n"+r.join(", ")),"\n"].join("");var r;}function G(n){return void 0!==n.flags?n.flags:[n.global?"g":"",n.ignoreCase?"i":"",n.multiline?"m":"",n.unicode?"u":"",n.sticky?"y":""].join("")}function C(){for(var n=[].slice.call(arguments),t=n.length,r=0;r=2?O(t):t=0;var r=function(n){return RegExp("^(?:"+n.source+")",G(n))}(n),u=""+n;return e(function(n,e){var o=r.exec(n.slice(e));if(o){if(0<=t&&t<=o.length){var i=o[0],a=o[t];return b(e+i.length,a)}return x(e,"valid match group (0 to "+o.length+") in "+u)}return x(e,u)})}function X(n){return e(function(t,r){return b(r,n)})}function Y(n){return e(function(t,r){return x(r,n)})}function Z(n){if(y(n))return e(function(t,r){var e=n._(t,r);return e.index=r,e.value="",e});if("string"==typeof n)return Z(K(n));if(n instanceof RegExp)return Z(Q(n));throw new Error("not a string, regexp, or parser: "+n)}function $(n){return _(n),e(function(t,r){var e=n._(t,r),u=t.slice(r,e.index);return e.status?x(r,'not "'+u+'"'):b(r,null)})}function nn(n){return k(n),e(function(t,r){var e=L(t,r);return r=n.length?x(t,"any character/byte"):b(t+1,L(n,t))}),on=e(function(n,t){return b(n.length,n.slice(t))}),an=e(function(n,t){return t=0}).desc(t)},e.optWhitespace=hn,e.Parser=e,e.range=function(n,t){return nn(function(r){return n<=r&&r<=t}).desc(n+"-"+t)},e.regex=Q,e.regexp=Q,e.sepBy=V,e.sepBy1=H,e.seq=C,e.seqMap=J,e.seqObj=function(){for(var n,t={},r=0,u=(n=arguments,Array.prototype.slice.call(n)),o=u.length,i=0;i255)throw new Error("Value specified to byte constructor ("+n+"=0x"+n.toString(16)+") is larger in value than a single byte.");var t=(n>15?"0x":"0x0")+n.toString(16);return e(function(r,e){var u=L(r,e);return u===n?b(e+1,u):x(e,t)})},buffer:function(n){return h("buffer",n).map(function(n){return Buffer.from(n)})},encodedString:function(n,t){return h("string",t).map(function(t){return t.toString(n)})},uintBE:d,uint8BE:d(1),uint16BE:d(2),uint32BE:d(4),uintLE:v,uint8LE:v(1),uint16LE:v(2),uint32LE:v(4),intBE:g,int8BE:g(1),int16BE:g(2),int32BE:g(4),intLE:m,int8LE:m(1),int16LE:m(2),int32LE:m(4),floatBE:h("floatBE",4).map(function(n){return n.readFloatBE(0)}),floatLE:h("floatLE",4).map(function(n){return n.readFloatLE(0)}),doubleBE:h("doubleBE",8).map(function(n){return n.readDoubleBE(0)}),doubleLE:h("doubleLE",8).map(function(n){return n.readDoubleLE(0)})},n.exports=e;}])}); -}(parsimmon_umd_min)); + !function(n,t){module.exports=t();}("undefined"!=typeof self?self:commonjsGlobal,function(){return function(n){var t={};function r(e){if(t[e])return t[e].exports;var u=t[e]={i:e,l:!1,exports:{}};return n[e].call(u.exports,u,u.exports,r),u.l=!0,u.exports}return r.m=n,r.c=t,r.d=function(n,t,e){r.o(n,t)||Object.defineProperty(n,t,{configurable:!1,enumerable:!0,get:e});},r.r=function(n){Object.defineProperty(n,"__esModule",{value:!0});},r.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(t,"a",t),t},r.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},r.p="",r(r.s=0)}([function(n,t,r){function e(n){if(!(this instanceof e))return new e(n);this._=n;}var u=e.prototype;function o(n,t){for(var r=0;r>7),buf:function(n){var t=i(function(n,t,r,e){return n.concat(r===e.length-1?Buffer.from([t,0]).readUInt16BE(0):e.readUInt16BE(r))},[],n);return Buffer.from(a(function(n){return (n<<1&65535)>>8},t))}(r.buf)};}),r}function c(){return "undefined"!=typeof Buffer}function s(){if(!c())throw new Error("Buffer global does not exist; please use webpack if you need to parse Buffers in the browser.")}function l(n){s();var t=i(function(n,t){return n+t},0,n);if(t%8!=0)throw new Error("The bits ["+n.join(", ")+"] add up to "+t+" which is not an even number of bytes; the total should be divisible by 8");var r,u=t/8,o=(r=function(n){return n>48},i(function(n,t){return n||(r(t)?t:n)},null,n));if(o)throw new Error(o+" bit range requested exceeds 48 bit (6 byte) Number max.");return new e(function(t,r){var e=u+r;return e>t.length?x(r,u.toString()+" bytes"):b(e,i(function(n,t){var r=f(t,n.buf);return {coll:n.coll.concat(r.v),buf:r.buf}},{coll:[],buf:t.slice(r,e)},n).coll)})}function h(n,t){return new e(function(r,e){return s(),e+t>r.length?x(e,t+" bytes for "+n):b(e+t,r.slice(e,e+t))})}function p(n,t){if("number"!=typeof(r=t)||Math.floor(r)!==r||t<0||t>6)throw new Error(n+" requires integer length in range [0, 6].");var r;}function d(n){return p("uintBE",n),h("uintBE("+n+")",n).map(function(t){return t.readUIntBE(0,n)})}function v(n){return p("uintLE",n),h("uintLE("+n+")",n).map(function(t){return t.readUIntLE(0,n)})}function g(n){return p("intBE",n),h("intBE("+n+")",n).map(function(t){return t.readIntBE(0,n)})}function m(n){return p("intLE",n),h("intLE("+n+")",n).map(function(t){return t.readIntLE(0,n)})}function y(n){return n instanceof e}function E(n){return "[object Array]"==={}.toString.call(n)}function w(n){return c()&&Buffer.isBuffer(n)}function b(n,t){return {status:!0,index:n,value:t,furthest:-1,expected:[]}}function x(n,t){return E(t)||(t=[t]),{status:!1,index:-1,value:null,furthest:n,expected:t}}function B(n,t){if(!t)return n;if(n.furthest>t.furthest)return n;var r=n.furthest===t.furthest?function(n,t){if(function(){if(void 0!==e._supportsSet)return e._supportsSet;var n="undefined"!=typeof Set;return e._supportsSet=n,n}()&&Array.from){for(var r=new Set(n),u=0;u=0;){if(i in r){e=r[i].line,0===o&&(o=r[i].lineStart);break}("\n"===n.charAt(i)||"\r"===n.charAt(i)&&"\n"!==n.charAt(i+1))&&(u++,0===o&&(o=i+1)),i--;}var a=e+u,f=t-o;return r[t]={line:a,lineStart:o},{offset:t,line:a+1,column:f+1}}function _(n){if(!y(n))throw new Error("not a parser: "+n)}function L(n,t){return "string"==typeof n?n.charAt(t):n[t]}function O(n){if("number"!=typeof n)throw new Error("not a number: "+n)}function k(n){if("function"!=typeof n)throw new Error("not a function: "+n)}function P(n){if("string"!=typeof n)throw new Error("not a string: "+n)}var q=2,A=3,I=8,F=5*I,M=4*I,z=" ";function R(n,t){return new Array(t+1).join(n)}function U(n,t,r){var e=t-n.length;return e<=0?n:R(r,e)+n}function W(n,t,r,e){return {from:n-t>0?n-t:0,to:n+r>e?e:n+r}}function D(n,t){var r,e,u,o,f,c=t.index,s=c.offset,l=1;if(s===n.length)return "Got the end of the input";if(w(n)){var h=s-s%I,p=s-h,d=W(h,F,M+I,n.length),v=a(function(n){return a(function(n){return U(n.toString(16),2,"0")},n)},function(n,t){var r=n.length,e=[],u=0;if(r<=t)return [n.slice()];for(var o=0;o=4&&(r+=1),l=2,u=a(function(n){return n.length<=4?n.join(" "):n.slice(0,4).join(" ")+" "+n.slice(4).join(" ")},v),(f=(8*(o.to>0?o.to-1:o.to)).toString(16).length)<2&&(f=2);}else {var g=n.split(/\r\n|[\n\r\u2028\u2029]/);r=c.column-1,e=c.line-1,o=W(e,q,A,g.length),u=g.slice(o.from,o.to),f=o.to.toString().length;}var m=e-o.from;return w(n)&&(f=(8*(o.to>0?o.to-1:o.to)).toString(16).length)<2&&(f=2),i(function(t,e,u){var i,a=u===m,c=a?"> ":z;return i=w(n)?U((8*(o.from+u)).toString(16),f,"0"):U((o.from+u+1).toString(),f," "),[].concat(t,[c+i+" | "+e],a?[z+R(" ",f)+" | "+U("",r," ")+R("^",l)]:[])},[],u).join("\n")}function N(n,t){return ["\n","-- PARSING FAILED "+R("-",50),"\n\n",D(n,t),"\n\n",(r=t.expected,1===r.length?"Expected:\n\n"+r[0]:"Expected one of the following: \n\n"+r.join(", ")),"\n"].join("");var r;}function G(n){return void 0!==n.flags?n.flags:[n.global?"g":"",n.ignoreCase?"i":"",n.multiline?"m":"",n.unicode?"u":"",n.sticky?"y":""].join("")}function C(){for(var n=[].slice.call(arguments),t=n.length,r=0;r=2?O(t):t=0;var r=function(n){return RegExp("^(?:"+n.source+")",G(n))}(n),u=""+n;return e(function(n,e){var o=r.exec(n.slice(e));if(o){if(0<=t&&t<=o.length){var i=o[0],a=o[t];return b(e+i.length,a)}return x(e,"valid match group (0 to "+o.length+") in "+u)}return x(e,u)})}function X(n){return e(function(t,r){return b(r,n)})}function Y(n){return e(function(t,r){return x(r,n)})}function Z(n){if(y(n))return e(function(t,r){var e=n._(t,r);return e.index=r,e.value="",e});if("string"==typeof n)return Z(K(n));if(n instanceof RegExp)return Z(Q(n));throw new Error("not a string, regexp, or parser: "+n)}function $(n){return _(n),e(function(t,r){var e=n._(t,r),u=t.slice(r,e.index);return e.status?x(r,'not "'+u+'"'):b(r,null)})}function nn(n){return k(n),e(function(t,r){var e=L(t,r);return r=n.length?x(t,"any character/byte"):b(t+1,L(n,t))}),on=e(function(n,t){return b(n.length,n.slice(t))}),an=e(function(n,t){return t=0}).desc(t)},e.optWhitespace=hn,e.Parser=e,e.range=function(n,t){return nn(function(r){return n<=r&&r<=t}).desc(n+"-"+t)},e.regex=Q,e.regexp=Q,e.sepBy=V,e.sepBy1=H,e.seq=C,e.seqMap=J,e.seqObj=function(){for(var n,t={},r=0,u=(n=arguments,Array.prototype.slice.call(n)),o=u.length,i=0;i255)throw new Error("Value specified to byte constructor ("+n+"=0x"+n.toString(16)+") is larger in value than a single byte.");var t=(n>15?"0x":"0x0")+n.toString(16);return e(function(r,e){var u=L(r,e);return u===n?b(e+1,u):x(e,t)})},buffer:function(n){return h("buffer",n).map(function(n){return Buffer.from(n)})},encodedString:function(n,t){return h("string",t).map(function(t){return t.toString(n)})},uintBE:d,uint8BE:d(1),uint16BE:d(2),uint32BE:d(4),uintLE:v,uint8LE:v(1),uint16LE:v(2),uint32LE:v(4),intBE:g,int8BE:g(1),int16BE:g(2),int32BE:g(4),intLE:m,int8LE:m(1),int16LE:m(2),int32LE:m(4),floatBE:h("floatBE",4).map(function(n){return n.readFloatBE(0)}),floatLE:h("floatLE",4).map(function(n){return n.readFloatLE(0)}),doubleBE:h("doubleBE",8).map(function(n){return n.readDoubleBE(0)}),doubleLE:h("doubleLE",8).map(function(n){return n.readDoubleLE(0)})},n.exports=e;}])}); +} (parsimmon_umd_min, parsimmon_umd_min.exports)); + +var parsimmon_umd_minExports = parsimmon_umd_min.exports; var emojiRegex = () => { // https://mths.be/emoji - return /(?:[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDD-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF6](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7C\uDE80-\uDE86\uDE90-\uDEAC\uDEB0-\uDEBA\uDEC0-\uDEC2\uDED0-\uDED9\uDEE0-\uDEE7]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?))/g; + return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC08\uDC26](?:\u200D\u2B1B)?|[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g; }; /** Normalize a duration to all of the proper units. */ @@ -7414,14 +7569,14 @@ function escapeRegex(str) { return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); } /** A parsimmon parser which canonicalizes variable names while properly respecting emoji. */ -const VAR_NAME_CANONICALIZER = parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regex(new RegExp(emojiRegex(), "")), parsimmon_umd_min.exports.regex(/[0-9\p{Letter}_-]+/u).map(str => str.toLocaleLowerCase()), parsimmon_umd_min.exports.whitespace.map(_ => "-"), parsimmon_umd_min.exports.any.map(_ => "")) +const VAR_NAME_CANONICALIZER = parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regex(new RegExp(emojiRegex(), "")), parsimmon_umd_minExports.regex(/[0-9\p{Letter}_-]+/u).map(str => str.toLocaleLowerCase()), parsimmon_umd_minExports.whitespace.map(_ => "-"), parsimmon_umd_minExports.any.map(_ => "")) .many() .map(result => result.join("")); /** Convert an arbitrary variable name into something JS/query friendly. */ function canonicalizeVarName(name) { return VAR_NAME_CANONICALIZER.tryParse(name); } -const HEADER_CANONICALIZER = parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regex(new RegExp(emojiRegex(), "")), parsimmon_umd_min.exports.regex(/[0-9\p{Letter}_-]+/u), parsimmon_umd_min.exports.whitespace.map(_ => " "), parsimmon_umd_min.exports.any.map(_ => " ")) +const HEADER_CANONICALIZER = parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regex(new RegExp(emojiRegex(), "")), parsimmon_umd_minExports.regex(/[0-9\p{Letter}_-]+/u), parsimmon_umd_minExports.whitespace.map(_ => " "), parsimmon_umd_minExports.any.map(_ => " ")) .many() .map(result => { return result.join("").split(/\s+/).join(" ").trim(); @@ -7445,7 +7600,7 @@ function renderMinimalDate(time, settings, locale) { function renderMinimalDuration(dur) { dur = normalizeDuration(dur); // toHuman outputs zero quantities e.g. "0 seconds" - dur = Duration.fromObject(Object.fromEntries(Object.entries(dur.toObject()).filter(([, quantity]) => quantity > 0))); + dur = Duration.fromObject(Object.fromEntries(Object.entries(dur.toObject()).filter(([, quantity]) => quantity != 0))); return dur.toHuman(); } /** Determine if two sets are equal in contents. */ @@ -7818,9 +7973,6 @@ var Groupings; ////////// /** The Obsidian 'link', used for uniquely describing a file, header, or block. */ class Link { - constructor(fields) { - Object.assign(this, fields); - } /** Create a link to a specific file. */ static file(path, embed = false, display) { return new Link({ @@ -7867,6 +8019,9 @@ class Link { static fromObject(object) { return new Link(object); } + constructor(fields) { + Object.assign(this, fields); + } /** Checks for link equality (i.e., that the links are pointing to the same exact location). */ equals(other) { if (other == undefined || other == null) @@ -8016,15 +8171,15 @@ var Widgets; /** Implementation of DataArray, minus the dynamic variable access, which is implemented via proxy. */ class DataArrayImpl { + static wrap(arr, settings, defaultComparator = Values.compareValue) { + return new Proxy(new DataArrayImpl(arr, settings, defaultComparator), DataArrayImpl.ARRAY_PROXY); + } constructor(values, settings, defaultComparator = Values.compareValue) { this.values = values; this.settings = settings; this.defaultComparator = defaultComparator; this.length = values.length; } - static wrap(arr, settings, defaultComparator = Values.compareValue) { - return new Proxy(new DataArrayImpl(arr, settings, defaultComparator), DataArrayImpl.ARRAY_PROXY); - } lwrap(values) { return DataArrayImpl.wrap(values, this.settings, this.defaultComparator); } @@ -8477,14 +8632,17 @@ var papaparse_min = {exports: {}}; /* @license Papa Parse -v5.3.2 +v5.4.1 https://github.com/mholt/PapaParse License: MIT */ +papaparse_min.exports; (function (module, exports) { -!function(e,t){module.exports=t();}(commonjsGlobal,function s(){var f="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==f?f:{};var n=!f.document&&!!f.postMessage,o=n&&/blob:/i.test((f.location||{}).protocol),a={},h=0,b={parse:function(e,t){var i=(t=t||{}).dynamicTyping||!1;M(i)&&(t.dynamicTypingFunction=i,i={});if(t.dynamicTyping=i,t.transform=!!M(t.transform)&&t.transform,t.worker&&b.WORKERS_SUPPORTED){var r=function(){if(!b.WORKERS_SUPPORTED)return !1;var e=(i=f.URL||f.webkitURL||null,r=s.toString(),b.BLOB_URL||(b.BLOB_URL=i.createObjectURL(new Blob(["(",r,")();"],{type:"text/javascript"})))),t=new f.Worker(e);var i,r;return t.onmessage=_,t.id=h++,a[t.id]=t}();return r.userStep=t.step,r.userChunk=t.chunk,r.userComplete=t.complete,r.userError=t.error,t.step=M(t.step),t.chunk=M(t.chunk),t.complete=M(t.complete),t.error=M(t.error),delete t.worker,void r.postMessage({input:e,config:t,workerId:r.id})}var n=null;b.NODE_STREAM_INPUT,"string"==typeof e?n=t.download?new l(t):new p(t):!0===e.readable&&M(e.read)&&M(e.on)?n=new g(t):(f.File&&e instanceof File||e instanceof Object)&&(n=new c(t));return n.stream(e)},unparse:function(e,t){var n=!1,_=!0,m=",",y="\r\n",s='"',a=s+s,i=!1,r=null,o=!1;!function(){if("object"!=typeof t)return;"string"!=typeof t.delimiter||b.BAD_DELIMITERS.filter(function(e){return -1!==t.delimiter.indexOf(e)}).length||(m=t.delimiter);("boolean"==typeof t.quotes||"function"==typeof t.quotes||Array.isArray(t.quotes))&&(n=t.quotes);"boolean"!=typeof t.skipEmptyLines&&"string"!=typeof t.skipEmptyLines||(i=t.skipEmptyLines);"string"==typeof t.newline&&(y=t.newline);"string"==typeof t.quoteChar&&(s=t.quoteChar);"boolean"==typeof t.header&&(_=t.header);if(Array.isArray(t.columns)){if(0===t.columns.length)throw new Error("Option columns is empty");r=t.columns;}void 0!==t.escapeChar&&(a=t.escapeChar+s);("boolean"==typeof t.escapeFormulae||t.escapeFormulae instanceof RegExp)&&(o=t.escapeFormulae instanceof RegExp?t.escapeFormulae:/^[=+\-@\t\r].*$/);}();var h=new RegExp(j(s),"g");"string"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return u(null,e,i);if("object"==typeof e[0])return u(r||Object.keys(e[0]),e,i)}else if("object"==typeof e)return "string"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields||r),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:"object"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||"object"==typeof e.data[0]||(e.data=[e.data])),u(e.fields||[],e.data||[],i);throw new Error("Unable to serialize unrecognized input");function u(e,t,i){var r="";"string"==typeof e&&(e=JSON.parse(e)),"string"==typeof t&&(t=JSON.parse(t));var n=Array.isArray(e)&&0=this._config.preview;if(o)f.postMessage({results:n,workerId:b.WORKER_ID,finished:a});else if(M(this._config.chunk)&&!t){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);n=void 0,this._completeResults=void 0;}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!a||!M(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),a||n&&n.meta.paused||this._nextChunk(),n}this._halted=!0;},this._sendError=function(e){M(this._config.error)?this._config.error(e):o&&this._config.error&&f.postMessage({workerId:b.WORKER_ID,error:e,finished:!1});};}function l(e){var r;(e=e||{}).chunkSize||(e.chunkSize=b.RemoteChunkSize),u.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded();}:function(){this._readChunk();},this.stream=function(e){this._input=e,this._nextChunk();},this._readChunk=function(){if(this._finished)this._chunkLoaded();else {if(r=new XMLHttpRequest,this._config.withCredentials&&(r.withCredentials=this._config.withCredentials),n||(r.onload=v(this._chunkLoaded,this),r.onerror=v(this._chunkError,this)),r.open(this._config.downloadRequestBody?"POST":"GET",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var t in e)r.setRequestHeader(t,e[t]);}if(this._config.chunkSize){var i=this._start+this._config.chunkSize-1;r.setRequestHeader("Range","bytes="+this._start+"-"+i);}try{r.send(this._config.downloadRequestBody);}catch(e){this._chunkError(e.message);}n&&0===r.status&&this._chunkError();}},this._chunkLoaded=function(){4===r.readyState&&(r.status<200||400<=r.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:r.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader("Content-Range");if(null===t)return -1;return parseInt(t.substring(t.lastIndexOf("/")+1))}(r),this.parseChunk(r.responseText)));},this._chunkError=function(e){var t=r.statusText||e;this._sendError(new Error(t));};}function c(e){var r,n;(e=e||{}).chunkSize||(e.chunkSize=b.LocalChunkSize),u.call(this,e);var s="undefined"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,s?((r=new FileReader).onload=v(this._chunkLoaded,this),r.onerror=v(this._chunkError,this)):r=new FileReaderSync,this._nextChunk();},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount=this._input.size,this.parseChunk(e.target.result);},this._chunkError=function(){this._sendError(r.error);};}function p(e){var i;u.call(this,e=e||{}),this.stream=function(e){return i=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,t=this._config.chunkSize;return t?(e=i.substring(0,t),i=i.substring(t)):(e=i,i=""),this._finished=!i,this.parseChunk(e)}};}function g(e){u.call(this,e=e||{});var t=[],i=!0,r=!1;this.pause=function(){u.prototype.pause.apply(this,arguments),this._input.pause();},this.resume=function(){u.prototype.resume.apply(this,arguments),this._input.resume();},this.stream=function(e){this._input=e,this._input.on("data",this._streamData),this._input.on("end",this._streamEnd),this._input.on("error",this._streamError);},this._checkIsFinished=function(){r&&1===t.length&&(this._finished=!0);},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):i=!0;},this._streamData=v(function(e){try{t.push("string"==typeof e?e:e.toString(this._config.encoding)),i&&(i=!1,this._checkIsFinished(),this.parseChunk(t.shift()));}catch(e){this._streamError(e);}},this),this._streamError=v(function(e){this._streamCleanUp(),this._sendError(e);},this),this._streamEnd=v(function(){this._streamCleanUp(),r=!0,this._streamData("");},this),this._streamCleanUp=v(function(){this._input.removeListener("data",this._streamData),this._input.removeListener("end",this._streamEnd),this._input.removeListener("error",this._streamError);},this);}function i(m){var a,o,h,r=Math.pow(2,53),n=-r,s=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,u=/^(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))$/,t=this,i=0,f=0,d=!1,e=!1,l=[],c={data:[],errors:[],meta:{}};if(M(m.step)){var p=m.step;m.step=function(e){if(c=e,_())g();else {if(g(),0===c.data.length)return;i+=e.data.length,m.preview&&i>m.preview?o.abort():(c.data=c.data[0],p(c,t));}};}function y(e){return "greedy"===m.skipEmptyLines?""===e.join("").trim():1===e.length&&0===e[0].length}function g(){return c&&h&&(k("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+b.DefaultDelimiter+"'"),h=!1),m.skipEmptyLines&&(c.data=c.data.filter(function(e){return !y(e)})),_()&&function(){if(!c)return;function e(e,t){M(m.transformHeader)&&(e=m.transformHeader(e,t)),l.push(e);}if(Array.isArray(c.data[0])){for(var t=0;_()&&t=l.length?"__parsed_extra":l[i]),m.transform&&(s=m.transform(s,n)),s=v(n,s),"__parsed_extra"===n?(r[n]=r[n]||[],r[n].push(s)):r[n]=s;}return m.header&&(i>l.length?k("FieldMismatch","TooManyFields","Too many fields: expected "+l.length+" fields but parsed "+i,f+t):i=r.length/2?"\r\n":"\r"}(e,r)),h=!1,m.delimiter)M(m.delimiter)&&(m.delimiter=m.delimiter(e),c.meta.delimiter=m.delimiter);else {var n=function(e,t,i,r,n){var s,a,o,h;n=n||[",","\t","|",";",b.RECORD_SEP,b.UNIT_SEP];for(var u=0;u=D)return C(!0)}else for(m=F,F++;;){if(-1===(m=r.indexOf(S,m+1)))return i||u.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:h.length,index:F}),E();if(m===n-1)return E(r.substring(F,m).replace(_,S));if(S!==L||r[m+1]!==L){if(S===L||0===m||r[m-1]!==L){-1!==p&&p=D)return C(!0);break}u.push({type:"Quotes",code:"InvalidQuotes",message:"Trailing quote on quoted field is malformed",row:h.length,index:F}),m++;}}else m++;}return E();function k(e){h.push(e),d=F;}function b(e){var t=0;if(-1!==e){var i=r.substring(m+1,e);i&&""===i.trim()&&(t=i.length);}return t}function E(e){return i||(void 0===e&&(e=r.substring(F)),f.push(e),F=n,k(f),o&&R()),C()}function w(e){F=e,k(f),f=[],g=r.indexOf(x,F);}function C(e){return {data:h,errors:u,meta:{delimiter:O,linebreak:x,aborted:z,truncated:!!e,cursor:d+(t||0)}}}function R(){T(C()),h=[],u=[];}},this.abort=function(){z=!0;},this.getCharIndex=function(){return F};}function _(e){var t=e.data,i=a[t.workerId],r=!1;if(t.error)i.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){r=!0,m(t.workerId,{data:[],errors:[],meta:{aborted:!0}});},pause:y,resume:y};if(M(i.userStep)){for(var s=0;s=this._config.preview;if(o)f.postMessage({results:n,workerId:b.WORKER_ID,finished:a});else if(J(this._config.chunk)&&!t){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);n=void 0,this._completeResults=void 0;}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!a||!J(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),a||n&&n.meta.paused||this._nextChunk(),n}this._halted=!0;},this._sendError=function(e){J(this._config.error)?this._config.error(e):o&&this._config.error&&f.postMessage({workerId:b.WORKER_ID,error:e,finished:!1});};}function l(e){var i;(e=e||{}).chunkSize||(e.chunkSize=b.RemoteChunkSize),h.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded();}:function(){this._readChunk();},this.stream=function(e){this._input=e,this._nextChunk();},this._readChunk=function(){if(this._finished)this._chunkLoaded();else {if(i=new XMLHttpRequest,this._config.withCredentials&&(i.withCredentials=this._config.withCredentials),n||(i.onload=v(this._chunkLoaded,this),i.onerror=v(this._chunkError,this)),i.open(this._config.downloadRequestBody?"POST":"GET",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var t in e)i.setRequestHeader(t,e[t]);}if(this._config.chunkSize){var r=this._start+this._config.chunkSize-1;i.setRequestHeader("Range","bytes="+this._start+"-"+r);}try{i.send(this._config.downloadRequestBody);}catch(e){this._chunkError(e.message);}n&&0===i.status&&this._chunkError();}},this._chunkLoaded=function(){4===i.readyState&&(i.status<200||400<=i.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:i.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader("Content-Range");if(null===t)return -1;return parseInt(t.substring(t.lastIndexOf("/")+1))}(i),this.parseChunk(i.responseText)));},this._chunkError=function(e){var t=i.statusText||e;this._sendError(new Error(t));};}function c(e){var i,n;(e=e||{}).chunkSize||(e.chunkSize=b.LocalChunkSize),h.call(this,e);var s="undefined"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,s?((i=new FileReader).onload=v(this._chunkLoaded,this),i.onerror=v(this._chunkError,this)):i=new FileReaderSync,this._nextChunk();},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount=this._input.size,this.parseChunk(e.target.result);},this._chunkError=function(){this._sendError(i.error);};}function p(e){var r;h.call(this,e=e||{}),this.stream=function(e){return r=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,t=this._config.chunkSize;return t?(e=r.substring(0,t),r=r.substring(t)):(e=r,r=""),this._finished=!r,this.parseChunk(e)}};}function g(e){h.call(this,e=e||{});var t=[],r=!0,i=!1;this.pause=function(){h.prototype.pause.apply(this,arguments),this._input.pause();},this.resume=function(){h.prototype.resume.apply(this,arguments),this._input.resume();},this.stream=function(e){this._input=e,this._input.on("data",this._streamData),this._input.on("end",this._streamEnd),this._input.on("error",this._streamError);},this._checkIsFinished=function(){i&&1===t.length&&(this._finished=!0);},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):r=!0;},this._streamData=v(function(e){try{t.push("string"==typeof e?e:e.toString(this._config.encoding)),r&&(r=!1,this._checkIsFinished(),this.parseChunk(t.shift()));}catch(e){this._streamError(e);}},this),this._streamError=v(function(e){this._streamCleanUp(),this._sendError(e);},this),this._streamEnd=v(function(){this._streamCleanUp(),i=!0,this._streamData("");},this),this._streamCleanUp=v(function(){this._input.removeListener("data",this._streamData),this._input.removeListener("end",this._streamEnd),this._input.removeListener("error",this._streamError);},this);}function r(m){var a,o,u,i=Math.pow(2,53),n=-i,s=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,h=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,t=this,r=0,f=0,d=!1,e=!1,l=[],c={data:[],errors:[],meta:{}};if(J(m.step)){var p=m.step;m.step=function(e){if(c=e,_())g();else {if(g(),0===c.data.length)return;r+=e.data.length,m.preview&&r>m.preview?o.abort():(c.data=c.data[0],p(c,t));}};}function y(e){return "greedy"===m.skipEmptyLines?""===e.join("").trim():1===e.length&&0===e[0].length}function g(){return c&&u&&(k("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+b.DefaultDelimiter+"'"),u=!1),m.skipEmptyLines&&(c.data=c.data.filter(function(e){return !y(e)})),_()&&function(){if(!c)return;function e(e,t){J(m.transformHeader)&&(e=m.transformHeader(e,t)),l.push(e);}if(Array.isArray(c.data[0])){for(var t=0;_()&&t=l.length?"__parsed_extra":l[r]),m.transform&&(s=m.transform(s,n)),s=v(n,s),"__parsed_extra"===n?(i[n]=i[n]||[],i[n].push(s)):i[n]=s;}return m.header&&(r>l.length?k("FieldMismatch","TooManyFields","Too many fields: expected "+l.length+" fields but parsed "+r,f+t):r=i.length/2?"\r\n":"\r"}(e,i)),u=!1,m.delimiter)J(m.delimiter)&&(m.delimiter=m.delimiter(e),c.meta.delimiter=m.delimiter);else {var n=function(e,t,r,i,n){var s,a,o,u;n=n||[",","\t","|",";",b.RECORD_SEP,b.UNIT_SEP];for(var h=0;h=N)return L(!0)}else for(S=W,W++;;){if(-1===(S=i.indexOf(z,S+1)))return r||h.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:u.length,index:W}),T();if(S===n-1)return T(i.substring(W,S).replace(C,z));if(z!==K||i[S+1]!==K){if(z===K||0===S||i[S-1]!==K){-1!==w&&w=N)return L(!0);break}h.push({type:"Quotes",code:"InvalidQuotes",message:"Trailing quote on quoted field is malformed",row:u.length,index:W}),S++;}}else S++;}return T();function I(e){u.push(e),d=W;}function A(e){var t=0;if(-1!==e){var r=i.substring(S+1,e);r&&""===r.trim()&&(t=r.length);}return t}function T(e){return r||(void 0===e&&(e=i.substring(W)),f.push(e),W=n,I(f),o&&F()),L()}function D(e){W=e,I(f),f=[],R=i.indexOf(P,W);}function L(e){return {data:u,errors:h,meta:{delimiter:M,linebreak:P,aborted:H,truncated:!!e,cursor:d+(t||0)}}}function F(){q(L()),u=[],h=[];}},this.abort=function(){H=!0;},this.getCharIndex=function(){return W};}function _(e){var t=e.data,r=a[t.workerId],i=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){i=!0,m(t.workerId,{data:[],errors:[],meta:{aborted:!0}});},pause:y,resume:y};if(J(r.userStep)){for(var s=0;s { + return parsimmon_umd_minExports.seqMap(child, parsimmon_umd_minExports.seq(parsimmon_umd_minExports.optWhitespace, sep, parsimmon_umd_minExports.optWhitespace, child).many(), (first, rest) => { if (rest.length == 0) return first; let node = combine(first, rest[0][1], rest[0][3]); @@ -8687,7 +8845,7 @@ function createBinaryParser(child, sep, combine) { }); } function chainOpt(base, ...funcs) { - return parsimmon_umd_min.exports.custom((success, failure) => { + return parsimmon_umd_minExports.custom((success, failure) => { return (input, i) => { let result = base._(input, i); if (!result.status) @@ -8702,20 +8860,20 @@ function chainOpt(base, ...funcs) { }; }); } -const EXPRESSION = parsimmon_umd_min.exports.createLanguage({ +const EXPRESSION = parsimmon_umd_minExports.createLanguage({ // A floating point number; the decimal point is optional. - number: q => parsimmon_umd_min.exports.regexp(/-?[0-9]+(\.[0-9]+)?/) + number: q => parsimmon_umd_minExports.regexp(/-?[0-9]+(\.[0-9]+)?/) .map(str => Number.parseFloat(str)) .desc("number"), // A quote-surrounded string which supports escape characters ('\'). - string: q => parsimmon_umd_min.exports.string('"') - .then(parsimmon_umd_min.exports.alt(q.escapeCharacter, parsimmon_umd_min.exports.noneOf('"\\')) + string: q => parsimmon_umd_minExports.string('"') + .then(parsimmon_umd_minExports.alt(q.escapeCharacter, parsimmon_umd_minExports.noneOf('"\\')) .atLeast(0) .map(chars => chars.join(""))) - .skip(parsimmon_umd_min.exports.string('"')) + .skip(parsimmon_umd_minExports.string('"')) .desc("string"), - escapeCharacter: _ => parsimmon_umd_min.exports.string("\\") - .then(parsimmon_umd_min.exports.any) + escapeCharacter: _ => parsimmon_umd_minExports.string("\\") + .then(parsimmon_umd_minExports.any) .map(escaped => { // If we are escaping a backslash or a quote, pass in on in escaped form if (escaped === '"') @@ -8726,38 +8884,38 @@ const EXPRESSION = parsimmon_umd_min.exports.createLanguage({ return "\\" + escaped; }), // A boolean true/false value. - bool: _ => parsimmon_umd_min.exports.regexp(/true|false|True|False/) + bool: _ => parsimmon_umd_minExports.regexp(/true|false|True|False/) .map(str => str.toLowerCase() == "true") .desc("boolean ('true' or 'false')"), // A tag of the form '#stuff/hello-there'. - tag: _ => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("#"), parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regexp(/[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]/).desc("text")).many(), (start, rest) => start + rest.join("")).desc("tag ('#hello/stuff')"), + tag: _ => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("#"), parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regexp(/[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]/).desc("text")).many(), (start, rest) => start + rest.join("")).desc("tag ('#hello/stuff')"), // A variable identifier, which is alphanumeric and must start with a letter or... emoji. - identifier: _ => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regexp(/\p{Letter}/u), parsimmon_umd_min.exports.regexp(EMOJI_REGEX).desc("text")), parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regexp(/[0-9\p{Letter}_-]/u), parsimmon_umd_min.exports.regexp(EMOJI_REGEX).desc("text")).many(), (first, rest) => first + rest.join("")).desc("variable identifier"), + identifier: _ => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regexp(/\p{Letter}/u), parsimmon_umd_minExports.regexp(EMOJI_REGEX).desc("text")), parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regexp(/[0-9\p{Letter}_-]/u), parsimmon_umd_minExports.regexp(EMOJI_REGEX).desc("text")).many(), (first, rest) => first + rest.join("")).desc("variable identifier"), // An Obsidian link of the form [[]]. - link: _ => parsimmon_umd_min.exports.regexp(/\[\[([^\[\]]*?)\]\]/u, 1) + link: _ => parsimmon_umd_minExports.regexp(/\[\[([^\[\]]*?)\]\]/u, 1) .map(linkInner => parseInnerLink(linkInner)) .desc("file link"), // An embeddable link which can start with '!'. This overlaps with the normal negation operator, so it is only // provided for metadata parsing. - embedLink: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("!").atMost(1), q.link, (p, l) => { + embedLink: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("!").atMost(1), q.link, (p, l) => { if (p.length > 0) l.embed = true; return l; }).desc("file link"), // Binary plus or minus operator. - binaryPlusMinus: _ => parsimmon_umd_min.exports.regexp(/\+|-/) + binaryPlusMinus: _ => parsimmon_umd_minExports.regexp(/\+|-/) .map(str => str) .desc("'+' or '-'"), // Binary times or divide operator. - binaryMulDiv: _ => parsimmon_umd_min.exports.regexp(/\*|\/|%/) + binaryMulDiv: _ => parsimmon_umd_minExports.regexp(/\*|\/|%/) .map(str => str) .desc("'*' or '/' or '%'"), // Binary comparison operator. - binaryCompareOp: _ => parsimmon_umd_min.exports.regexp(/>=|<=|!=|>|<|=/) + binaryCompareOp: _ => parsimmon_umd_minExports.regexp(/>=|<=|!=|>|<|=/) .map(str => str) .desc("'>=' or '<=' or '!=' or '=' or '>' or '<'"), // Binary boolean combination operator. - binaryBooleanOp: _ => parsimmon_umd_min.exports.regexp(/and|or|&|\|/i) + binaryBooleanOp: _ => parsimmon_umd_minExports.regexp(/and|or|&|\|/i) .map(str => { if (str.toLowerCase() == "and") return "&"; @@ -8768,67 +8926,67 @@ const EXPRESSION = parsimmon_umd_min.exports.createLanguage({ }) .desc("'and' or 'or'"), // A date which can be YYYY-MM[-DDTHH:mm:ss]. - rootDate: _ => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/\d{4}/), parsimmon_umd_min.exports.string("-"), parsimmon_umd_min.exports.regexp(/\d{2}/), (year, _, month) => { + rootDate: _ => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/\d{4}/), parsimmon_umd_minExports.string("-"), parsimmon_umd_minExports.regexp(/\d{2}/), (year, _, month) => { return DateTime.fromObject({ year: Number.parseInt(year), month: Number.parseInt(month) }); }).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"), - dateShorthand: _ => parsimmon_umd_min.exports.alt(...Object.keys(DATE_SHORTHANDS) + dateShorthand: _ => parsimmon_umd_minExports.alt(...Object.keys(DATE_SHORTHANDS) .sort((a, b) => b.length - a.length) - .map(parsimmon_umd_min.exports.string)), - date: q => chainOpt(q.rootDate, (ym) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("-"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_, day) => ym.set({ day: Number.parseInt(day) })), (ymd) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("T"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_, hour) => ymd.set({ hour: Number.parseInt(hour) })), (ymdh) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string(":"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_, minute) => ymdh.set({ minute: Number.parseInt(minute) })), (ymdhm) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string(":"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_, second) => ymdhm.set({ second: Number.parseInt(second) })), (ymdhms) => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("."), parsimmon_umd_min.exports.regexp(/\d{3}/), (_, millisecond) => ymdhms.set({ millisecond: Number.parseInt(millisecond) })), parsimmon_umd_min.exports.succeed(ymdhms) // pass - ), (dt) => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("+").or(parsimmon_umd_min.exports.string("-")), parsimmon_umd_min.exports.regexp(/\d{1,2}(:\d{2})?/), (pm, hr) => dt.setZone("UTC" + pm + hr, { keepLocalTime: true })), parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("Z"), () => dt.setZone("utc", { keepLocalTime: true })), parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("["), parsimmon_umd_min.exports.regexp(/[0-9A-Za-z+-\/]+/u), parsimmon_umd_min.exports.string("]"), (_a, zone, _b) => dt.setZone(zone, { keepLocalTime: true })))) + .map(parsimmon_umd_minExports.string)), + date: q => chainOpt(q.rootDate, (ym) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("-"), parsimmon_umd_minExports.regexp(/\d{2}/), (_, day) => ym.set({ day: Number.parseInt(day) })), (ymd) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("T"), parsimmon_umd_minExports.regexp(/\d{2}/), (_, hour) => ymd.set({ hour: Number.parseInt(hour) })), (ymdh) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string(":"), parsimmon_umd_minExports.regexp(/\d{2}/), (_, minute) => ymdh.set({ minute: Number.parseInt(minute) })), (ymdhm) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string(":"), parsimmon_umd_minExports.regexp(/\d{2}/), (_, second) => ymdhm.set({ second: Number.parseInt(second) })), (ymdhms) => parsimmon_umd_minExports.alt(parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("."), parsimmon_umd_minExports.regexp(/\d{3}/), (_, millisecond) => ymdhms.set({ millisecond: Number.parseInt(millisecond) })), parsimmon_umd_minExports.succeed(ymdhms) // pass + ), (dt) => parsimmon_umd_minExports.alt(parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("+").or(parsimmon_umd_minExports.string("-")), parsimmon_umd_minExports.regexp(/\d{1,2}(:\d{2})?/), (pm, hr) => dt.setZone("UTC" + pm + hr, { keepLocalTime: true })), parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("Z"), () => dt.setZone("utc", { keepLocalTime: true })), parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("["), parsimmon_umd_minExports.regexp(/[0-9A-Za-z+-\/]+/u), parsimmon_umd_minExports.string("]"), (_a, zone, _b) => dt.setZone(zone, { keepLocalTime: true })))) .assert((dt) => dt.isValid, "valid date") .desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"), // A date, plus various shorthand times of day it could be. - datePlus: q => parsimmon_umd_min.exports.alt(q.dateShorthand.map(d => DATE_SHORTHANDS[d]()), q.date).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS] or in shorthand"), + datePlus: q => parsimmon_umd_minExports.alt(q.dateShorthand.map(d => DATE_SHORTHANDS[d]()), q.date).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS] or in shorthand"), // A duration of time. - durationType: _ => parsimmon_umd_min.exports.alt(...Object.keys(DURATION_TYPES) + durationType: _ => parsimmon_umd_minExports.alt(...Object.keys(DURATION_TYPES) .sort((a, b) => b.length - a.length) - .map(parsimmon_umd_min.exports.string)), - duration: q => parsimmon_umd_min.exports.seqMap(q.number, parsimmon_umd_min.exports.optWhitespace, q.durationType, (count, _, t) => DURATION_TYPES[t].mapUnits(x => x * count)) - .sepBy1(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace).or(parsimmon_umd_min.exports.optWhitespace)) + .map(parsimmon_umd_minExports.string)), + duration: q => parsimmon_umd_minExports.seqMap(q.number, parsimmon_umd_minExports.optWhitespace, q.durationType, (count, _, t) => DURATION_TYPES[t].mapUnits(x => x * count)) + .sepBy1(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace).or(parsimmon_umd_minExports.optWhitespace)) .map(durations => durations.reduce((p, c) => p.plus(c))) .desc("duration like 4hr2min"), // A raw null value. - rawNull: _ => parsimmon_umd_min.exports.string("null"), + rawNull: _ => parsimmon_umd_minExports.string("null"), // Source parsing. tagSource: q => q.tag.map(tag => Sources.tag(tag)), - csvSource: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("csv(").skip(parsimmon_umd_min.exports.optWhitespace), q.string, parsimmon_umd_min.exports.string(")"), (_1, path, _2) => Sources.csv(path)), + csvSource: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("csv(").skip(parsimmon_umd_minExports.optWhitespace), q.string, parsimmon_umd_minExports.string(")"), (_1, path, _2) => Sources.csv(path)), linkIncomingSource: q => q.link.map(link => Sources.link(link.path, true)), - linkOutgoingSource: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("outgoing(").skip(parsimmon_umd_min.exports.optWhitespace), q.link, parsimmon_umd_min.exports.string(")"), (_1, link, _2) => Sources.link(link.path, false)), + linkOutgoingSource: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("outgoing(").skip(parsimmon_umd_minExports.optWhitespace), q.link, parsimmon_umd_minExports.string(")"), (_1, link, _2) => Sources.link(link.path, false)), folderSource: q => q.string.map(str => Sources.folder(str)), - parensSource: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("("), parsimmon_umd_min.exports.optWhitespace, q.source, parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string(")"), (_1, _2, field, _3, _4) => field), - negateSource: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.string("-"), parsimmon_umd_min.exports.string("!")), q.atomSource, (_, source) => Sources.negate(source)), - atomSource: q => parsimmon_umd_min.exports.alt(q.parensSource, q.negateSource, q.linkOutgoingSource, q.linkIncomingSource, q.folderSource, q.tagSource, q.csvSource), + parensSource: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("("), parsimmon_umd_minExports.optWhitespace, q.source, parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string(")"), (_1, _2, field, _3, _4) => field), + negateSource: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.alt(parsimmon_umd_minExports.string("-"), parsimmon_umd_minExports.string("!")), q.atomSource, (_, source) => Sources.negate(source)), + atomSource: q => parsimmon_umd_minExports.alt(q.parensSource, q.negateSource, q.linkOutgoingSource, q.linkIncomingSource, q.folderSource, q.tagSource, q.csvSource), binaryOpSource: q => createBinaryParser(q.atomSource, q.binaryBooleanOp.map(s => s), Sources.binaryOp), source: q => q.binaryOpSource, // Field parsing. variableField: q => q.identifier .chain(r => { if (KEYWORDS.includes(r.toUpperCase())) { - return parsimmon_umd_min.exports.fail("Variable fields cannot be a keyword (" + KEYWORDS.join(" or ") + ")"); + return parsimmon_umd_minExports.fail("Variable fields cannot be a keyword (" + KEYWORDS.join(" or ") + ")"); } else { - return parsimmon_umd_min.exports.succeed(Fields.variable(r)); + return parsimmon_umd_minExports.succeed(Fields.variable(r)); } }) .desc("variable"), numberField: q => q.number.map(val => Fields.literal(val)).desc("number"), stringField: q => q.string.map(val => Fields.literal(val)).desc("string"), boolField: q => q.bool.map(val => Fields.literal(val)).desc("boolean"), - dateField: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("date("), parsimmon_umd_min.exports.optWhitespace, q.datePlus, parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string(")"), (prefix, _1, date, _2, postfix) => Fields.literal(date)).desc("date"), - durationField: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("dur("), parsimmon_umd_min.exports.optWhitespace, q.duration, parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string(")"), (prefix, _1, dur, _2, postfix) => Fields.literal(dur)).desc("duration"), + dateField: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("date("), parsimmon_umd_minExports.optWhitespace, q.datePlus, parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string(")"), (prefix, _1, date, _2, postfix) => Fields.literal(date)).desc("date"), + durationField: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("dur("), parsimmon_umd_minExports.optWhitespace, q.duration, parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string(")"), (prefix, _1, dur, _2, postfix) => Fields.literal(dur)).desc("duration"), nullField: q => q.rawNull.map(_ => Fields.NULL), linkField: q => q.link.map(f => Fields.literal(f)), listField: q => q.field - .sepBy(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)) - .wrap(parsimmon_umd_min.exports.string("[").skip(parsimmon_umd_min.exports.optWhitespace), parsimmon_umd_min.exports.optWhitespace.then(parsimmon_umd_min.exports.string("]"))) + .sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)) + .wrap(parsimmon_umd_minExports.string("[").skip(parsimmon_umd_minExports.optWhitespace), parsimmon_umd_minExports.optWhitespace.then(parsimmon_umd_minExports.string("]"))) .map(l => Fields.list(l)) .desc("list ('[1, 2, 3]')"), - objectField: q => parsimmon_umd_min.exports.seqMap(q.identifier.or(q.string), parsimmon_umd_min.exports.string(":").trim(parsimmon_umd_min.exports.optWhitespace), q.field, (name, _sep, value) => { + objectField: q => parsimmon_umd_minExports.seqMap(q.identifier.or(q.string), parsimmon_umd_minExports.string(":").trim(parsimmon_umd_minExports.optWhitespace), q.field, (name, _sep, value) => { return { name, value }; }) - .sepBy(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)) - .wrap(parsimmon_umd_min.exports.string("{").skip(parsimmon_umd_min.exports.optWhitespace), parsimmon_umd_min.exports.optWhitespace.then(parsimmon_umd_min.exports.string("}"))) + .sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)) + .wrap(parsimmon_umd_minExports.string("{").skip(parsimmon_umd_minExports.optWhitespace), parsimmon_umd_minExports.optWhitespace.then(parsimmon_umd_minExports.string("}"))) .map(vals => { let res = {}; for (let entry of vals) @@ -8836,13 +8994,13 @@ const EXPRESSION = parsimmon_umd_min.exports.createLanguage({ return Fields.object(res); }) .desc("object ('{ a: 1, b: 2 }')"), - atomInlineField: q => parsimmon_umd_min.exports.alt(q.date, q.duration.map(d => normalizeDuration(d)), q.string, q.tag, q.embedLink, q.bool, q.number, q.rawNull), - inlineFieldList: q => q.atomInlineField.sepBy(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace).lookahead(q.atomInlineField)), - inlineField: q => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.seqMap(q.atomInlineField, parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace), q.inlineFieldList, (f, _s, l) => [f].concat(l)), q.atomInlineField), - atomField: q => parsimmon_umd_min.exports.alt( + atomInlineField: q => parsimmon_umd_minExports.alt(q.date, q.duration.map(d => normalizeDuration(d)), q.string, q.tag, q.embedLink, q.bool, q.number, q.rawNull), + inlineFieldList: q => q.atomInlineField.sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace).lookahead(q.atomInlineField)), + inlineField: q => parsimmon_umd_minExports.alt(parsimmon_umd_minExports.seqMap(q.atomInlineField, parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace), q.inlineFieldList, (f, _s, l) => [f].concat(l)), q.atomInlineField), + atomField: q => parsimmon_umd_minExports.alt( // Place embed links above negated fields as they are the special parser case '![[thing]]' and are generally unambigious. q.embedLink.map(l => Fields.literal(l)), q.negatedField, q.linkField, q.listField, q.objectField, q.lambdaField, q.parensField, q.boolField, q.numberField, q.stringField, q.dateField, q.durationField, q.nullField, q.variableField), - indexField: q => parsimmon_umd_min.exports.seqMap(q.atomField, parsimmon_umd_min.exports.alt(q.dotPostfix, q.indexPostfix, q.functionPostfix).many(), (obj, postfixes) => { + indexField: q => parsimmon_umd_minExports.seqMap(q.atomField, parsimmon_umd_minExports.alt(q.dotPostfix, q.indexPostfix, q.functionPostfix).many(), (obj, postfixes) => { let result = obj; for (let post of postfixes) { switch (post.type) { @@ -8859,20 +9017,20 @@ const EXPRESSION = parsimmon_umd_min.exports.createLanguage({ } return result; }), - negatedField: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("!"), q.indexField, (_, field) => Fields.negate(field)).desc("negated field"), - parensField: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("("), parsimmon_umd_min.exports.optWhitespace, q.field, parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string(")"), (_1, _2, field, _3, _4) => field), - lambdaField: q => parsimmon_umd_min.exports.seqMap(q.identifier - .sepBy(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)) - .wrap(parsimmon_umd_min.exports.string("(").trim(parsimmon_umd_min.exports.optWhitespace), parsimmon_umd_min.exports.string(")").trim(parsimmon_umd_min.exports.optWhitespace)), parsimmon_umd_min.exports.string("=>").trim(parsimmon_umd_min.exports.optWhitespace), q.field, (ident, _ignore, value) => { + negatedField: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("!"), q.indexField, (_, field) => Fields.negate(field)).desc("negated field"), + parensField: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("("), parsimmon_umd_minExports.optWhitespace, q.field, parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string(")"), (_1, _2, field, _3, _4) => field), + lambdaField: q => parsimmon_umd_minExports.seqMap(q.identifier + .sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)) + .wrap(parsimmon_umd_minExports.string("(").trim(parsimmon_umd_minExports.optWhitespace), parsimmon_umd_minExports.string(")").trim(parsimmon_umd_minExports.optWhitespace)), parsimmon_umd_minExports.string("=>").trim(parsimmon_umd_minExports.optWhitespace), q.field, (ident, _ignore, value) => { return { type: "lambda", arguments: ident, value }; }), - dotPostfix: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("."), q.identifier, (_, field) => { + dotPostfix: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("."), q.identifier, (_, field) => { return { type: "dot", field: field }; }), - indexPostfix: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("["), parsimmon_umd_min.exports.optWhitespace, q.field, parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string("]"), (_, _2, field, _3, _4) => { + indexPostfix: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("["), parsimmon_umd_minExports.optWhitespace, q.field, parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string("]"), (_, _2, field, _3, _4) => { return { type: "index", field }; }), - functionPostfix: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("("), parsimmon_umd_min.exports.optWhitespace, q.field.sepBy(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)), parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string(")"), (_, _1, fields, _2, _3) => { + functionPostfix: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("("), parsimmon_umd_minExports.optWhitespace, q.field.sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)), parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string(")"), (_, _1, fields, _2, _3) => { return { type: "function", fields }; }), // The precedence hierarchy of operators - multiply/divide, add/subtract, compare, and then boolean operations. @@ -9009,12 +9167,12 @@ function extractInlineFields(line, includeTaskFields = false) { return filteredFields; } /** Validates that a raw field name has a valid form. */ -const FULL_LINE_KEY_PART = parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regexp(new RegExp(emojiRegex(), "u")), parsimmon_umd_min.exports.regexp(/[0-9\p{Letter}\w\s_/-]+/u)) +const FULL_LINE_KEY_PART = parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regexp(new RegExp(emojiRegex(), "u")), parsimmon_umd_minExports.regexp(/[0-9\p{Letter}\w\s_/-]+/u)) .many() .map(parts => parts.join("")); -parsimmon_umd_min.exports.regexp(/[^0-9\w\p{Letter}]*/u) +parsimmon_umd_minExports.regexp(/[^0-9\w\p{Letter}]*/u) .then(FULL_LINE_KEY_PART) - .skip(parsimmon_umd_min.exports.regexp(/[_\*~`]*/u)); + .skip(parsimmon_umd_minExports.regexp(/[_\*~`]*/u)); const CREATED_DATE_REGEX = /\u{2795}\s*(\d{4}-\d{2}-\d{2})/u; const DUE_DATE_REGEX = /(?:\u{1F4C5}|\u{1F4C6}|\u{1F5D3}\u{FE0F}?)\s*(\d{4}-\d{2}-\d{2})/u; const DONE_DATE_REGEX = /\u{2705}\s*(\d{4}-\d{2}-\d{2})/u; @@ -9367,7 +9525,7 @@ function parseFrontmatter(value) { /** Parse a CSV file into a collection of data rows. */ function parseCsv(content) { - let parsed = papaparse_min.exports.parse(content, { + let parsed = papaparse_minExports.parse(content, { header: true, skipEmptyLines: true, comments: "#", @@ -9483,6 +9641,10 @@ var Transferable; Transferable.value = value; })(Transferable || (Transferable = {})); +function commonjsRequire(path) { + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); +} + var localforage$1 = {exports: {}}; /*! @@ -9491,2817 +9653,2819 @@ var localforage$1 = {exports: {}}; https://localforage.github.io/localForage (c) 2013-2017 Mozilla, Apache License 2.0 */ +localforage$1.exports; (function (module, exports) { -(function(f){{module.exports=f();}})(function(){return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof commonjsRequire=="function"&&commonjsRequire;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw (f.code="MODULE_NOT_FOUND", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r);}return n[o].exports}var i=typeof commonjsRequire=="function"&&commonjsRequire;for(var o=0;o element; its readystatechange event will be fired asynchronously once it is inserted - // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called. - var scriptEl = global.document.createElement('script'); - scriptEl.onreadystatechange = function () { - nextTick(); - - scriptEl.onreadystatechange = null; - scriptEl.parentNode.removeChild(scriptEl); - scriptEl = null; - }; - global.document.documentElement.appendChild(scriptEl); - }; - } else { - scheduleDrain = function () { - setTimeout(nextTick, 0); - }; - } -} - -var draining; -var queue = []; -//named nextTick for less confusing stack traces -function nextTick() { - draining = true; - var i, oldQueue; - var len = queue.length; - while (len) { - oldQueue = queue; - queue = []; - i = -1; - while (++i < len) { - oldQueue[i](); - } - len = queue.length; - } - draining = false; -} - -module.exports = immediate; -function immediate(task) { - if (queue.push(task) === 1 && !draining) { - scheduleDrain(); - } -} - -}).call(this,typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); -},{}],2:[function(_dereq_,module,exports){ -var immediate = _dereq_(1); - -/* istanbul ignore next */ -function INTERNAL() {} - -var handlers = {}; - -var REJECTED = ['REJECTED']; -var FULFILLED = ['FULFILLED']; -var PENDING = ['PENDING']; - -module.exports = Promise; - -function Promise(resolver) { - if (typeof resolver !== 'function') { - throw new TypeError('resolver must be a function'); - } - this.state = PENDING; - this.queue = []; - this.outcome = void 0; - if (resolver !== INTERNAL) { - safelyResolveThenable(this, resolver); - } -} - -Promise.prototype["catch"] = function (onRejected) { - return this.then(null, onRejected); -}; -Promise.prototype.then = function (onFulfilled, onRejected) { - if (typeof onFulfilled !== 'function' && this.state === FULFILLED || - typeof onRejected !== 'function' && this.state === REJECTED) { - return this; - } - var promise = new this.constructor(INTERNAL); - if (this.state !== PENDING) { - var resolver = this.state === FULFILLED ? onFulfilled : onRejected; - unwrap(promise, resolver, this.outcome); - } else { - this.queue.push(new QueueItem(promise, onFulfilled, onRejected)); - } - - return promise; -}; -function QueueItem(promise, onFulfilled, onRejected) { - this.promise = promise; - if (typeof onFulfilled === 'function') { - this.onFulfilled = onFulfilled; - this.callFulfilled = this.otherCallFulfilled; - } - if (typeof onRejected === 'function') { - this.onRejected = onRejected; - this.callRejected = this.otherCallRejected; - } -} -QueueItem.prototype.callFulfilled = function (value) { - handlers.resolve(this.promise, value); -}; -QueueItem.prototype.otherCallFulfilled = function (value) { - unwrap(this.promise, this.onFulfilled, value); -}; -QueueItem.prototype.callRejected = function (value) { - handlers.reject(this.promise, value); -}; -QueueItem.prototype.otherCallRejected = function (value) { - unwrap(this.promise, this.onRejected, value); -}; - -function unwrap(promise, func, value) { - immediate(function () { - var returnValue; - try { - returnValue = func(value); - } catch (e) { - return handlers.reject(promise, e); - } - if (returnValue === promise) { - handlers.reject(promise, new TypeError('Cannot resolve promise with itself')); - } else { - handlers.resolve(promise, returnValue); - } - }); -} - -handlers.resolve = function (self, value) { - var result = tryCatch(getThen, value); - if (result.status === 'error') { - return handlers.reject(self, result.value); - } - var thenable = result.value; - - if (thenable) { - safelyResolveThenable(self, thenable); - } else { - self.state = FULFILLED; - self.outcome = value; - var i = -1; - var len = self.queue.length; - while (++i < len) { - self.queue[i].callFulfilled(value); - } - } - return self; -}; -handlers.reject = function (self, error) { - self.state = REJECTED; - self.outcome = error; - var i = -1; - var len = self.queue.length; - while (++i < len) { - self.queue[i].callRejected(error); - } - return self; -}; - -function getThen(obj) { - // Make sure we only access the accessor once as required by the spec - var then = obj && obj.then; - if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') { - return function appyThen() { - then.apply(obj, arguments); - }; - } -} - -function safelyResolveThenable(self, thenable) { - // Either fulfill, reject or reject with error - var called = false; - function onError(value) { - if (called) { - return; - } - called = true; - handlers.reject(self, value); - } - - function onSuccess(value) { - if (called) { - return; - } - called = true; - handlers.resolve(self, value); - } - - function tryToUnwrap() { - thenable(onSuccess, onError); - } - - var result = tryCatch(tryToUnwrap); - if (result.status === 'error') { - onError(result.value); - } -} - -function tryCatch(func, value) { - var out = {}; - try { - out.value = func(value); - out.status = 'success'; - } catch (e) { - out.status = 'error'; - out.value = e; - } - return out; -} - -Promise.resolve = resolve; -function resolve(value) { - if (value instanceof this) { - return value; - } - return handlers.resolve(new this(INTERNAL), value); -} - -Promise.reject = reject; -function reject(reason) { - var promise = new this(INTERNAL); - return handlers.reject(promise, reason); -} - -Promise.all = all; -function all(iterable) { - var self = this; - if (Object.prototype.toString.call(iterable) !== '[object Array]') { - return this.reject(new TypeError('must be an array')); - } - - var len = iterable.length; - var called = false; - if (!len) { - return this.resolve([]); - } - - var values = new Array(len); - var resolved = 0; - var i = -1; - var promise = new this(INTERNAL); - - while (++i < len) { - allResolver(iterable[i], i); - } - return promise; - function allResolver(value, i) { - self.resolve(value).then(resolveFromAll, function (error) { - if (!called) { - called = true; - handlers.reject(promise, error); - } - }); - function resolveFromAll(outValue) { - values[i] = outValue; - if (++resolved === len && !called) { - called = true; - handlers.resolve(promise, values); - } - } - } -} - -Promise.race = race; -function race(iterable) { - var self = this; - if (Object.prototype.toString.call(iterable) !== '[object Array]') { - return this.reject(new TypeError('must be an array')); - } - - var len = iterable.length; - var called = false; - if (!len) { - return this.resolve([]); - } - - var i = -1; - var promise = new this(INTERNAL); - - while (++i < len) { - resolver(iterable[i]); - } - return promise; - function resolver(value) { - self.resolve(value).then(function (response) { - if (!called) { - called = true; - handlers.resolve(promise, response); - } - }, function (error) { - if (!called) { - called = true; - handlers.reject(promise, error); - } - }); - } -} - -},{"1":1}],3:[function(_dereq_,module,exports){ -(function (global){ -if (typeof global.Promise !== 'function') { - global.Promise = _dereq_(2); -} - -}).call(this,typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); -},{"2":2}],4:[function(_dereq_,module,exports){ - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function getIDB() { - /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */ - try { - if (typeof indexedDB !== 'undefined') { - return indexedDB; - } - if (typeof webkitIndexedDB !== 'undefined') { - return webkitIndexedDB; - } - if (typeof mozIndexedDB !== 'undefined') { - return mozIndexedDB; - } - if (typeof OIndexedDB !== 'undefined') { - return OIndexedDB; - } - if (typeof msIndexedDB !== 'undefined') { - return msIndexedDB; - } - } catch (e) { - return; - } -} - -var idb = getIDB(); - -function isIndexedDBValid() { - try { - // Initialize IndexedDB; fall back to vendor-prefixed versions - // if needed. - if (!idb || !idb.open) { - return false; - } - // We mimic PouchDB here; - // - // We test for openDatabase because IE Mobile identifies itself - // as Safari. Oh the lulz... - var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform); - - var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1; - - // Safari <10.1 does not meet our requirements for IDB support - // (see: https://github.com/pouchdb/pouchdb/issues/5572). - // Safari 10.1 shipped with fetch, we can use that to detect it. - // Note: this creates issues with `window.fetch` polyfills and - // overrides; see: - // https://github.com/localForage/localForage/issues/856 - return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' && - // some outdated implementations of IDB that appear on Samsung - // and HTC Android devices <4.4 are missing IDBKeyRange - // See: https://github.com/mozilla/localForage/issues/128 - // See: https://github.com/mozilla/localForage/issues/272 - typeof IDBKeyRange !== 'undefined'; - } catch (e) { - return false; - } -} - -// Abstracts constructing a Blob object, so it also works in older -// browsers that don't support the native Blob constructor. (i.e. -// old QtWebKit versions, at least). -// Abstracts constructing a Blob object, so it also works in older -// browsers that don't support the native Blob constructor. (i.e. -// old QtWebKit versions, at least). -function createBlob(parts, properties) { - /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */ - parts = parts || []; - properties = properties || {}; - try { - return new Blob(parts, properties); - } catch (e) { - if (e.name !== 'TypeError') { - throw e; - } - var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder; - var builder = new Builder(); - for (var i = 0; i < parts.length; i += 1) { - builder.append(parts[i]); - } - return builder.getBlob(properties.type); - } -} - -// This is CommonJS because lie is an external dependency, so Rollup -// can just ignore it. -if (typeof Promise === 'undefined') { - // In the "nopromises" build this will just throw if you don't have - // a global promise object, but it would throw anyway later. - _dereq_(3); -} -var Promise$1 = Promise; - -function executeCallback(promise, callback) { - if (callback) { - promise.then(function (result) { - callback(null, result); - }, function (error) { - callback(error); - }); - } -} - -function executeTwoCallbacks(promise, callback, errorCallback) { - if (typeof callback === 'function') { - promise.then(callback); - } - - if (typeof errorCallback === 'function') { - promise["catch"](errorCallback); - } -} - -function normalizeKey(key) { - // Cast the key to a string, as that's all we can set as a key. - if (typeof key !== 'string') { - console.warn(key + ' used as a key, but it is not a string.'); - key = String(key); - } - - return key; -} - -function getCallback() { - if (arguments.length && typeof arguments[arguments.length - 1] === 'function') { - return arguments[arguments.length - 1]; - } -} - -// Some code originally from async_storage.js in -// [Gaia](https://github.com/mozilla-b2g/gaia). - -var DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support'; -var supportsBlobs = void 0; -var dbContexts = {}; -var toString = Object.prototype.toString; - -// Transaction Modes -var READ_ONLY = 'readonly'; -var READ_WRITE = 'readwrite'; - -// Transform a binary string to an array buffer, because otherwise -// weird stuff happens when you try to work with the binary string directly. -// It is known. -// From http://stackoverflow.com/questions/14967647/ (continues on next line) -// encode-decode-image-with-base64-breaks-image (2013-04-21) -function _binStringToArrayBuffer(bin) { - var length = bin.length; - var buf = new ArrayBuffer(length); - var arr = new Uint8Array(buf); - for (var i = 0; i < length; i++) { - arr[i] = bin.charCodeAt(i); - } - return buf; -} - -// -// Blobs are not supported in all versions of IndexedDB, notably -// Chrome <37 and Android <5. In those versions, storing a blob will throw. -// -// Various other blob bugs exist in Chrome v37-42 (inclusive). -// Detecting them is expensive and confusing to users, and Chrome 37-42 -// is at very low usage worldwide, so we do a hacky userAgent check instead. -// -// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120 -// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916 -// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836 -// -// Code borrowed from PouchDB. See: -// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js -// -function _checkBlobSupportWithoutCaching(idb) { - return new Promise$1(function (resolve) { - var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE); - var blob = createBlob(['']); - txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key'); - - txn.onabort = function (e) { - // If the transaction aborts now its due to not being able to - // write to the database, likely due to the disk being full - e.preventDefault(); - e.stopPropagation(); - resolve(false); - }; - - txn.oncomplete = function () { - var matchedChrome = navigator.userAgent.match(/Chrome\/(\d+)/); - var matchedEdge = navigator.userAgent.match(/Edge\//); - // MS Edge pretends to be Chrome 42: - // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx - resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43); - }; - })["catch"](function () { - return false; // error, so assume unsupported - }); -} - -function _checkBlobSupport(idb) { - if (typeof supportsBlobs === 'boolean') { - return Promise$1.resolve(supportsBlobs); - } - return _checkBlobSupportWithoutCaching(idb).then(function (value) { - supportsBlobs = value; - return supportsBlobs; - }); -} - -function _deferReadiness(dbInfo) { - var dbContext = dbContexts[dbInfo.name]; - - // Create a deferred object representing the current database operation. - var deferredOperation = {}; - - deferredOperation.promise = new Promise$1(function (resolve, reject) { - deferredOperation.resolve = resolve; - deferredOperation.reject = reject; - }); - - // Enqueue the deferred operation. - dbContext.deferredOperations.push(deferredOperation); - - // Chain its promise to the database readiness. - if (!dbContext.dbReady) { - dbContext.dbReady = deferredOperation.promise; - } else { - dbContext.dbReady = dbContext.dbReady.then(function () { - return deferredOperation.promise; - }); - } -} - -function _advanceReadiness(dbInfo) { - var dbContext = dbContexts[dbInfo.name]; - - // Dequeue a deferred operation. - var deferredOperation = dbContext.deferredOperations.pop(); - - // Resolve its promise (which is part of the database readiness - // chain of promises). - if (deferredOperation) { - deferredOperation.resolve(); - return deferredOperation.promise; - } -} - -function _rejectReadiness(dbInfo, err) { - var dbContext = dbContexts[dbInfo.name]; - - // Dequeue a deferred operation. - var deferredOperation = dbContext.deferredOperations.pop(); - - // Reject its promise (which is part of the database readiness - // chain of promises). - if (deferredOperation) { - deferredOperation.reject(err); - return deferredOperation.promise; - } -} - -function _getConnection(dbInfo, upgradeNeeded) { - return new Promise$1(function (resolve, reject) { - dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext(); - - if (dbInfo.db) { - if (upgradeNeeded) { - _deferReadiness(dbInfo); - dbInfo.db.close(); - } else { - return resolve(dbInfo.db); - } - } - - var dbArgs = [dbInfo.name]; - - if (upgradeNeeded) { - dbArgs.push(dbInfo.version); - } - - var openreq = idb.open.apply(idb, dbArgs); - - if (upgradeNeeded) { - openreq.onupgradeneeded = function (e) { - var db = openreq.result; - try { - db.createObjectStore(dbInfo.storeName); - if (e.oldVersion <= 1) { - // Added when support for blob shims was added - db.createObjectStore(DETECT_BLOB_SUPPORT_STORE); - } - } catch (ex) { - if (ex.name === 'ConstraintError') { - console.warn('The database "' + dbInfo.name + '"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage "' + dbInfo.storeName + '" already exists.'); - } else { - throw ex; - } - } - }; - } - - openreq.onerror = function (e) { - e.preventDefault(); - reject(openreq.error); - }; - - openreq.onsuccess = function () { - var db = openreq.result; - db.onversionchange = function (e) { - // Triggered when the database is modified (e.g. adding an objectStore) or - // deleted (even when initiated by other sessions in different tabs). - // Closing the connection here prevents those operations from being blocked. - // If the database is accessed again later by this instance, the connection - // will be reopened or the database recreated as needed. - e.target.close(); - }; - resolve(db); - _advanceReadiness(dbInfo); - }; - }); -} - -function _getOriginalConnection(dbInfo) { - return _getConnection(dbInfo, false); -} - -function _getUpgradedConnection(dbInfo) { - return _getConnection(dbInfo, true); -} - -function _isUpgradeNeeded(dbInfo, defaultVersion) { - if (!dbInfo.db) { - return true; - } - - var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName); - var isDowngrade = dbInfo.version < dbInfo.db.version; - var isUpgrade = dbInfo.version > dbInfo.db.version; - - if (isDowngrade) { - // If the version is not the default one - // then warn for impossible downgrade. - if (dbInfo.version !== defaultVersion) { - console.warn('The database "' + dbInfo.name + '"' + " can't be downgraded from version " + dbInfo.db.version + ' to version ' + dbInfo.version + '.'); - } - // Align the versions to prevent errors. - dbInfo.version = dbInfo.db.version; - } - - if (isUpgrade || isNewStore) { - // If the store is new then increment the version (if needed). - // This will trigger an "upgradeneeded" event which is required - // for creating a store. - if (isNewStore) { - var incVersion = dbInfo.db.version + 1; - if (incVersion > dbInfo.version) { - dbInfo.version = incVersion; - } - } - - return true; - } - - return false; -} - -// encode a blob for indexeddb engines that don't support blobs -function _encodeBlob(blob) { - return new Promise$1(function (resolve, reject) { - var reader = new FileReader(); - reader.onerror = reject; - reader.onloadend = function (e) { - var base64 = btoa(e.target.result || ''); - resolve({ - __local_forage_encoded_blob: true, - data: base64, - type: blob.type - }); - }; - reader.readAsBinaryString(blob); - }); -} - -// decode an encoded blob -function _decodeBlob(encodedBlob) { - var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data)); - return createBlob([arrayBuff], { type: encodedBlob.type }); -} - -// is this one of our fancy encoded blobs? -function _isEncodedBlob(value) { - return value && value.__local_forage_encoded_blob; -} - -// Specialize the default `ready()` function by making it dependent -// on the current database operations. Thus, the driver will be actually -// ready when it's been initialized (default) *and* there are no pending -// operations on the database (initiated by some other instances). -function _fullyReady(callback) { - var self = this; - - var promise = self._initReady().then(function () { - var dbContext = dbContexts[self._dbInfo.name]; - - if (dbContext && dbContext.dbReady) { - return dbContext.dbReady; - } - }); - - executeTwoCallbacks(promise, callback, callback); - return promise; -} - -// Try to establish a new db connection to replace the -// current one which is broken (i.e. experiencing -// InvalidStateError while creating a transaction). -function _tryReconnect(dbInfo) { - _deferReadiness(dbInfo); - - var dbContext = dbContexts[dbInfo.name]; - var forages = dbContext.forages; - - for (var i = 0; i < forages.length; i++) { - var forage = forages[i]; - if (forage._dbInfo.db) { - forage._dbInfo.db.close(); - forage._dbInfo.db = null; - } - } - dbInfo.db = null; - - return _getOriginalConnection(dbInfo).then(function (db) { - dbInfo.db = db; - if (_isUpgradeNeeded(dbInfo)) { - // Reopen the database for upgrading. - return _getUpgradedConnection(dbInfo); - } - return db; - }).then(function (db) { - // store the latest db reference - // in case the db was upgraded - dbInfo.db = dbContext.db = db; - for (var i = 0; i < forages.length; i++) { - forages[i]._dbInfo.db = db; - } - })["catch"](function (err) { - _rejectReadiness(dbInfo, err); - throw err; - }); -} - -// FF doesn't like Promises (micro-tasks) and IDDB store operations, -// so we have to do it with callbacks -function createTransaction(dbInfo, mode, callback, retries) { - if (retries === undefined) { - retries = 1; - } - - try { - var tx = dbInfo.db.transaction(dbInfo.storeName, mode); - callback(null, tx); - } catch (err) { - if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) { - return Promise$1.resolve().then(function () { - if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) { - // increase the db version, to create the new ObjectStore - if (dbInfo.db) { - dbInfo.version = dbInfo.db.version + 1; - } - // Reopen the database for upgrading. - return _getUpgradedConnection(dbInfo); - } - }).then(function () { - return _tryReconnect(dbInfo).then(function () { - createTransaction(dbInfo, mode, callback, retries - 1); - }); - })["catch"](callback); - } - - callback(err); - } -} - -function createDbContext() { - return { - // Running localForages sharing a database. - forages: [], - // Shared database. - db: null, - // Database readiness (promise). - dbReady: null, - // Deferred operations on the database. - deferredOperations: [] - }; -} - -// Open the IndexedDB database (automatically creates one if one didn't -// previously exist), using any options set in the config. -function _initStorage(options) { - var self = this; - var dbInfo = { - db: null - }; - - if (options) { - for (var i in options) { - dbInfo[i] = options[i]; - } - } - - // Get the current context of the database; - var dbContext = dbContexts[dbInfo.name]; - - // ...or create a new context. - if (!dbContext) { - dbContext = createDbContext(); - // Register the new context in the global container. - dbContexts[dbInfo.name] = dbContext; - } - - // Register itself as a running localForage in the current context. - dbContext.forages.push(self); - - // Replace the default `ready()` function with the specialized one. - if (!self._initReady) { - self._initReady = self.ready; - self.ready = _fullyReady; - } - - // Create an array of initialization states of the related localForages. - var initPromises = []; - - function ignoreErrors() { - // Don't handle errors here, - // just makes sure related localForages aren't pending. - return Promise$1.resolve(); - } - - for (var j = 0; j < dbContext.forages.length; j++) { - var forage = dbContext.forages[j]; - if (forage !== self) { - // Don't wait for itself... - initPromises.push(forage._initReady()["catch"](ignoreErrors)); - } - } - - // Take a snapshot of the related localForages. - var forages = dbContext.forages.slice(0); - - // Initialize the connection process only when - // all the related localForages aren't pending. - return Promise$1.all(initPromises).then(function () { - dbInfo.db = dbContext.db; - // Get the connection or open a new one without upgrade. - return _getOriginalConnection(dbInfo); - }).then(function (db) { - dbInfo.db = db; - if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) { - // Reopen the database for upgrading. - return _getUpgradedConnection(dbInfo); - } - return db; - }).then(function (db) { - dbInfo.db = dbContext.db = db; - self._dbInfo = dbInfo; - // Share the final connection amongst related localForages. - for (var k = 0; k < forages.length; k++) { - var forage = forages[k]; - if (forage !== self) { - // Self is already up-to-date. - forage._dbInfo.db = dbInfo.db; - forage._dbInfo.version = dbInfo.version; - } - } - }); -} - -function getItem(key, callback) { - var self = this; - - key = normalizeKey(key); - - var promise = new Promise$1(function (resolve, reject) { - self.ready().then(function () { - createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) { - if (err) { - return reject(err); - } - - try { - var store = transaction.objectStore(self._dbInfo.storeName); - var req = store.get(key); - - req.onsuccess = function () { - var value = req.result; - if (value === undefined) { - value = null; - } - if (_isEncodedBlob(value)) { - value = _decodeBlob(value); - } - resolve(value); - }; - - req.onerror = function () { - reject(req.error); - }; - } catch (e) { - reject(e); - } - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - return promise; -} - -// Iterate over all items stored in database. -function iterate(iterator, callback) { - var self = this; - - var promise = new Promise$1(function (resolve, reject) { - self.ready().then(function () { - createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) { - if (err) { - return reject(err); - } - - try { - var store = transaction.objectStore(self._dbInfo.storeName); - var req = store.openCursor(); - var iterationNumber = 1; - - req.onsuccess = function () { - var cursor = req.result; - - if (cursor) { - var value = cursor.value; - if (_isEncodedBlob(value)) { - value = _decodeBlob(value); - } - var result = iterator(value, cursor.key, iterationNumber++); - - // when the iterator callback returns any - // (non-`undefined`) value, then we stop - // the iteration immediately - if (result !== void 0) { - resolve(result); - } else { - cursor["continue"](); - } - } else { - resolve(); - } - }; - - req.onerror = function () { - reject(req.error); - }; - } catch (e) { - reject(e); - } - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - - return promise; -} - -function setItem(key, value, callback) { - var self = this; - - key = normalizeKey(key); - - var promise = new Promise$1(function (resolve, reject) { - var dbInfo; - self.ready().then(function () { - dbInfo = self._dbInfo; - if (toString.call(value) === '[object Blob]') { - return _checkBlobSupport(dbInfo.db).then(function (blobSupport) { - if (blobSupport) { - return value; - } - return _encodeBlob(value); - }); - } - return value; - }).then(function (value) { - createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) { - if (err) { - return reject(err); - } - - try { - var store = transaction.objectStore(self._dbInfo.storeName); - - // The reason we don't _save_ null is because IE 10 does - // not support saving the `null` type in IndexedDB. How - // ironic, given the bug below! - // See: https://github.com/mozilla/localForage/issues/161 - if (value === null) { - value = undefined; - } - - var req = store.put(value, key); - - transaction.oncomplete = function () { - // Cast to undefined so the value passed to - // callback/promise is the same as what one would get out - // of `getItem()` later. This leads to some weirdness - // (setItem('foo', undefined) will return `null`), but - // it's not my fault localStorage is our baseline and that - // it's weird. - if (value === undefined) { - value = null; - } - - resolve(value); - }; - transaction.onabort = transaction.onerror = function () { - var err = req.error ? req.error : req.transaction.error; - reject(err); - }; - } catch (e) { - reject(e); - } - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - return promise; -} - -function removeItem(key, callback) { - var self = this; - - key = normalizeKey(key); - - var promise = new Promise$1(function (resolve, reject) { - self.ready().then(function () { - createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) { - if (err) { - return reject(err); - } - - try { - var store = transaction.objectStore(self._dbInfo.storeName); - // We use a Grunt task to make this safe for IE and some - // versions of Android (including those used by Cordova). - // Normally IE won't like `.delete()` and will insist on - // using `['delete']()`, but we have a build step that - // fixes this for us now. - var req = store["delete"](key); - transaction.oncomplete = function () { - resolve(); - }; - - transaction.onerror = function () { - reject(req.error); - }; - - // The request will be also be aborted if we've exceeded our storage - // space. - transaction.onabort = function () { - var err = req.error ? req.error : req.transaction.error; - reject(err); - }; - } catch (e) { - reject(e); - } - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - return promise; -} - -function clear(callback) { - var self = this; - - var promise = new Promise$1(function (resolve, reject) { - self.ready().then(function () { - createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) { - if (err) { - return reject(err); - } - - try { - var store = transaction.objectStore(self._dbInfo.storeName); - var req = store.clear(); - - transaction.oncomplete = function () { - resolve(); - }; - - transaction.onabort = transaction.onerror = function () { - var err = req.error ? req.error : req.transaction.error; - reject(err); - }; - } catch (e) { - reject(e); - } - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - return promise; -} - -function length(callback) { - var self = this; - - var promise = new Promise$1(function (resolve, reject) { - self.ready().then(function () { - createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) { - if (err) { - return reject(err); - } - - try { - var store = transaction.objectStore(self._dbInfo.storeName); - var req = store.count(); - - req.onsuccess = function () { - resolve(req.result); - }; - - req.onerror = function () { - reject(req.error); - }; - } catch (e) { - reject(e); - } - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - return promise; -} - -function key(n, callback) { - var self = this; - - var promise = new Promise$1(function (resolve, reject) { - if (n < 0) { - resolve(null); - - return; - } - - self.ready().then(function () { - createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) { - if (err) { - return reject(err); - } - - try { - var store = transaction.objectStore(self._dbInfo.storeName); - var advanced = false; - var req = store.openKeyCursor(); - - req.onsuccess = function () { - var cursor = req.result; - if (!cursor) { - // this means there weren't enough keys - resolve(null); - - return; - } - - if (n === 0) { - // We have the first key, return it if that's what they - // wanted. - resolve(cursor.key); - } else { - if (!advanced) { - // Otherwise, ask the cursor to skip ahead n - // records. - advanced = true; - cursor.advance(n); - } else { - // When we get here, we've got the nth key. - resolve(cursor.key); - } - } - }; - - req.onerror = function () { - reject(req.error); - }; - } catch (e) { - reject(e); - } - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - return promise; -} - -function keys(callback) { - var self = this; - - var promise = new Promise$1(function (resolve, reject) { - self.ready().then(function () { - createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) { - if (err) { - return reject(err); - } - - try { - var store = transaction.objectStore(self._dbInfo.storeName); - var req = store.openKeyCursor(); - var keys = []; - - req.onsuccess = function () { - var cursor = req.result; - - if (!cursor) { - resolve(keys); - return; - } - - keys.push(cursor.key); - cursor["continue"](); - }; - - req.onerror = function () { - reject(req.error); - }; - } catch (e) { - reject(e); - } - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - return promise; -} - -function dropInstance(options, callback) { - callback = getCallback.apply(this, arguments); - - var currentConfig = this.config(); - options = typeof options !== 'function' && options || {}; - if (!options.name) { - options.name = options.name || currentConfig.name; - options.storeName = options.storeName || currentConfig.storeName; - } - - var self = this; - var promise; - if (!options.name) { - promise = Promise$1.reject('Invalid arguments'); - } else { - var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db; - - var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) { - var dbContext = dbContexts[options.name]; - var forages = dbContext.forages; - dbContext.db = db; - for (var i = 0; i < forages.length; i++) { - forages[i]._dbInfo.db = db; - } - return db; - }); - - if (!options.storeName) { - promise = dbPromise.then(function (db) { - _deferReadiness(options); - - var dbContext = dbContexts[options.name]; - var forages = dbContext.forages; - - db.close(); - for (var i = 0; i < forages.length; i++) { - var forage = forages[i]; - forage._dbInfo.db = null; - } - - var dropDBPromise = new Promise$1(function (resolve, reject) { - var req = idb.deleteDatabase(options.name); - - req.onerror = function () { - var db = req.result; - if (db) { - db.close(); - } - reject(req.error); - }; - - req.onblocked = function () { - // Closing all open connections in onversionchange handler should prevent this situation, but if - // we do get here, it just means the request remains pending - eventually it will succeed or error - console.warn('dropInstance blocked for database "' + options.name + '" until all open connections are closed'); - }; - - req.onsuccess = function () { - var db = req.result; - if (db) { - db.close(); - } - resolve(db); - }; - }); - - return dropDBPromise.then(function (db) { - dbContext.db = db; - for (var i = 0; i < forages.length; i++) { - var _forage = forages[i]; - _advanceReadiness(_forage._dbInfo); - } - })["catch"](function (err) { - (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function () {}); - throw err; - }); - }); - } else { - promise = dbPromise.then(function (db) { - if (!db.objectStoreNames.contains(options.storeName)) { - return; - } - - var newVersion = db.version + 1; - - _deferReadiness(options); - - var dbContext = dbContexts[options.name]; - var forages = dbContext.forages; - - db.close(); - for (var i = 0; i < forages.length; i++) { - var forage = forages[i]; - forage._dbInfo.db = null; - forage._dbInfo.version = newVersion; - } - - var dropObjectPromise = new Promise$1(function (resolve, reject) { - var req = idb.open(options.name, newVersion); - - req.onerror = function (err) { - var db = req.result; - db.close(); - reject(err); - }; - - req.onupgradeneeded = function () { - var db = req.result; - db.deleteObjectStore(options.storeName); - }; - - req.onsuccess = function () { - var db = req.result; - db.close(); - resolve(db); - }; - }); - - return dropObjectPromise.then(function (db) { - dbContext.db = db; - for (var j = 0; j < forages.length; j++) { - var _forage2 = forages[j]; - _forage2._dbInfo.db = db; - _advanceReadiness(_forage2._dbInfo); - } - })["catch"](function (err) { - (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function () {}); - throw err; - }); - }); - } - } - - executeCallback(promise, callback); - return promise; -} - -var asyncStorage = { - _driver: 'asyncStorage', - _initStorage: _initStorage, - _support: isIndexedDBValid(), - iterate: iterate, - getItem: getItem, - setItem: setItem, - removeItem: removeItem, - clear: clear, - length: length, - key: key, - keys: keys, - dropInstance: dropInstance -}; - -function isWebSQLValid() { - return typeof openDatabase === 'function'; -} - -// Sadly, the best way to save binary data in WebSQL/localStorage is serializing -// it to Base64, so this is how we store it to prevent very strange errors with less -// verbose ways of binary <-> string data storage. -var BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - -var BLOB_TYPE_PREFIX = '~~local_forage_type~'; -var BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/; - -var SERIALIZED_MARKER = '__lfsc__:'; -var SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length; - -// OMG the serializations! -var TYPE_ARRAYBUFFER = 'arbf'; -var TYPE_BLOB = 'blob'; -var TYPE_INT8ARRAY = 'si08'; -var TYPE_UINT8ARRAY = 'ui08'; -var TYPE_UINT8CLAMPEDARRAY = 'uic8'; -var TYPE_INT16ARRAY = 'si16'; -var TYPE_INT32ARRAY = 'si32'; -var TYPE_UINT16ARRAY = 'ur16'; -var TYPE_UINT32ARRAY = 'ui32'; -var TYPE_FLOAT32ARRAY = 'fl32'; -var TYPE_FLOAT64ARRAY = 'fl64'; -var TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length; - -var toString$1 = Object.prototype.toString; - -function stringToBuffer(serializedString) { - // Fill the string into a ArrayBuffer. - var bufferLength = serializedString.length * 0.75; - var len = serializedString.length; - var i; - var p = 0; - var encoded1, encoded2, encoded3, encoded4; - - if (serializedString[serializedString.length - 1] === '=') { - bufferLength--; - if (serializedString[serializedString.length - 2] === '=') { - bufferLength--; - } - } - - var buffer = new ArrayBuffer(bufferLength); - var bytes = new Uint8Array(buffer); - - for (i = 0; i < len; i += 4) { - encoded1 = BASE_CHARS.indexOf(serializedString[i]); - encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]); - encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]); - encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]); - - /*jslint bitwise: true */ - bytes[p++] = encoded1 << 2 | encoded2 >> 4; - bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; - bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63; - } - return buffer; -} - -// Converts a buffer to a string to store, serialized, in the backend -// storage library. -function bufferToString(buffer) { - // base64-arraybuffer - var bytes = new Uint8Array(buffer); - var base64String = ''; - var i; - - for (i = 0; i < bytes.length; i += 3) { - /*jslint bitwise: true */ - base64String += BASE_CHARS[bytes[i] >> 2]; - base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4]; - base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6]; - base64String += BASE_CHARS[bytes[i + 2] & 63]; - } - - if (bytes.length % 3 === 2) { - base64String = base64String.substring(0, base64String.length - 1) + '='; - } else if (bytes.length % 3 === 1) { - base64String = base64String.substring(0, base64String.length - 2) + '=='; - } - - return base64String; -} - -// Serialize a value, afterwards executing a callback (which usually -// instructs the `setItem()` callback/promise to be executed). This is how -// we store binary data with localStorage. -function serialize(value, callback) { - var valueType = ''; - if (value) { - valueType = toString$1.call(value); - } - - // Cannot use `value instanceof ArrayBuffer` or such here, as these - // checks fail when running the tests using casper.js... - // - // TODO: See why those tests fail and use a better solution. - if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) { - // Convert binary arrays to a string and prefix the string with - // a special marker. - var buffer; - var marker = SERIALIZED_MARKER; - - if (value instanceof ArrayBuffer) { - buffer = value; - marker += TYPE_ARRAYBUFFER; - } else { - buffer = value.buffer; - - if (valueType === '[object Int8Array]') { - marker += TYPE_INT8ARRAY; - } else if (valueType === '[object Uint8Array]') { - marker += TYPE_UINT8ARRAY; - } else if (valueType === '[object Uint8ClampedArray]') { - marker += TYPE_UINT8CLAMPEDARRAY; - } else if (valueType === '[object Int16Array]') { - marker += TYPE_INT16ARRAY; - } else if (valueType === '[object Uint16Array]') { - marker += TYPE_UINT16ARRAY; - } else if (valueType === '[object Int32Array]') { - marker += TYPE_INT32ARRAY; - } else if (valueType === '[object Uint32Array]') { - marker += TYPE_UINT32ARRAY; - } else if (valueType === '[object Float32Array]') { - marker += TYPE_FLOAT32ARRAY; - } else if (valueType === '[object Float64Array]') { - marker += TYPE_FLOAT64ARRAY; - } else { - callback(new Error('Failed to get type for BinaryArray')); - } - } - - callback(marker + bufferToString(buffer)); - } else if (valueType === '[object Blob]') { - // Conver the blob to a binaryArray and then to a string. - var fileReader = new FileReader(); - - fileReader.onload = function () { - // Backwards-compatible prefix for the blob type. - var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result); - - callback(SERIALIZED_MARKER + TYPE_BLOB + str); - }; - - fileReader.readAsArrayBuffer(value); - } else { - try { - callback(JSON.stringify(value)); - } catch (e) { - console.error("Couldn't convert value into a JSON string: ", value); - - callback(null, e); - } - } -} - -// Deserialize data we've inserted into a value column/field. We place -// special markers into our strings to mark them as encoded; this isn't -// as nice as a meta field, but it's the only sane thing we can do whilst -// keeping localStorage support intact. -// -// Oftentimes this will just deserialize JSON content, but if we have a -// special marker (SERIALIZED_MARKER, defined above), we will extract -// some kind of arraybuffer/binary data/typed array out of the string. -function deserialize(value) { - // If we haven't marked this string as being specially serialized (i.e. - // something other than serialized JSON), we can just return it and be - // done with it. - if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) { - return JSON.parse(value); - } - - // The following code deals with deserializing some kind of Blob or - // TypedArray. First we separate out the type of data we're dealing - // with from the data itself. - var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH); - var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH); - - var blobType; - // Backwards-compatible blob type serialization strategy. - // DBs created with older versions of localForage will simply not have the blob type. - if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) { - var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX); - blobType = matcher[1]; - serializedString = serializedString.substring(matcher[0].length); - } - var buffer = stringToBuffer(serializedString); - - // Return the right type based on the code/type set during - // serialization. - switch (type) { - case TYPE_ARRAYBUFFER: - return buffer; - case TYPE_BLOB: - return createBlob([buffer], { type: blobType }); - case TYPE_INT8ARRAY: - return new Int8Array(buffer); - case TYPE_UINT8ARRAY: - return new Uint8Array(buffer); - case TYPE_UINT8CLAMPEDARRAY: - return new Uint8ClampedArray(buffer); - case TYPE_INT16ARRAY: - return new Int16Array(buffer); - case TYPE_UINT16ARRAY: - return new Uint16Array(buffer); - case TYPE_INT32ARRAY: - return new Int32Array(buffer); - case TYPE_UINT32ARRAY: - return new Uint32Array(buffer); - case TYPE_FLOAT32ARRAY: - return new Float32Array(buffer); - case TYPE_FLOAT64ARRAY: - return new Float64Array(buffer); - default: - throw new Error('Unkown type: ' + type); - } -} - -var localforageSerializer = { - serialize: serialize, - deserialize: deserialize, - stringToBuffer: stringToBuffer, - bufferToString: bufferToString -}; - -/* - * Includes code from: - * - * base64-arraybuffer - * https://github.com/niklasvh/base64-arraybuffer - * - * Copyright (c) 2012 Niklas von Hertzen - * Licensed under the MIT license. - */ - -function createDbTable(t, dbInfo, callback, errorCallback) { - t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback); -} - -// Open the WebSQL database (automatically creates one if one didn't -// previously exist), using any options set in the config. -function _initStorage$1(options) { - var self = this; - var dbInfo = { - db: null - }; - - if (options) { - for (var i in options) { - dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i]; - } - } - - var dbInfoPromise = new Promise$1(function (resolve, reject) { - // Open the database; the openDatabase API will automatically - // create it for us if it doesn't exist. - try { - dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size); - } catch (e) { - return reject(e); - } - - // Create our key/value table if it doesn't exist. - dbInfo.db.transaction(function (t) { - createDbTable(t, dbInfo, function () { - self._dbInfo = dbInfo; - resolve(); - }, function (t, error) { - reject(error); - }); - }, reject); - }); - - dbInfo.serializer = localforageSerializer; - return dbInfoPromise; -} - -function tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) { - t.executeSql(sqlStatement, args, callback, function (t, error) { - if (error.code === error.SYNTAX_ERR) { - t.executeSql('SELECT name FROM sqlite_master ' + "WHERE type='table' AND name = ?", [dbInfo.storeName], function (t, results) { - if (!results.rows.length) { - // if the table is missing (was deleted) - // re-create it table and retry - createDbTable(t, dbInfo, function () { - t.executeSql(sqlStatement, args, callback, errorCallback); - }, errorCallback); - } else { - errorCallback(t, error); - } - }, errorCallback); - } else { - errorCallback(t, error); - } - }, errorCallback); -} - -function getItem$1(key, callback) { - var self = this; - - key = normalizeKey(key); - - var promise = new Promise$1(function (resolve, reject) { - self.ready().then(function () { - var dbInfo = self._dbInfo; - dbInfo.db.transaction(function (t) { - tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) { - var result = results.rows.length ? results.rows.item(0).value : null; - - // Check to see if this is serialized content we need to - // unpack. - if (result) { - result = dbInfo.serializer.deserialize(result); - } - - resolve(result); - }, function (t, error) { - reject(error); - }); - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - return promise; -} - -function iterate$1(iterator, callback) { - var self = this; - - var promise = new Promise$1(function (resolve, reject) { - self.ready().then(function () { - var dbInfo = self._dbInfo; - - dbInfo.db.transaction(function (t) { - tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) { - var rows = results.rows; - var length = rows.length; - - for (var i = 0; i < length; i++) { - var item = rows.item(i); - var result = item.value; - - // Check to see if this is serialized content - // we need to unpack. - if (result) { - result = dbInfo.serializer.deserialize(result); - } - - result = iterator(result, item.key, i + 1); - - // void(0) prevents problems with redefinition - // of `undefined`. - if (result !== void 0) { - resolve(result); - return; - } - } - - resolve(); - }, function (t, error) { - reject(error); - }); - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - return promise; -} - -function _setItem(key, value, callback, retriesLeft) { - var self = this; - - key = normalizeKey(key); - - var promise = new Promise$1(function (resolve, reject) { - self.ready().then(function () { - // The localStorage API doesn't return undefined values in an - // "expected" way, so undefined is always cast to null in all - // drivers. See: https://github.com/mozilla/localForage/pull/42 - if (value === undefined) { - value = null; - } - - // Save the original value to pass to the callback. - var originalValue = value; - - var dbInfo = self._dbInfo; - dbInfo.serializer.serialize(value, function (value, error) { - if (error) { - reject(error); - } else { - dbInfo.db.transaction(function (t) { - tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () { - resolve(originalValue); - }, function (t, error) { - reject(error); - }); - }, function (sqlError) { - // The transaction failed; check - // to see if it's a quota error. - if (sqlError.code === sqlError.QUOTA_ERR) { - // We reject the callback outright for now, but - // it's worth trying to re-run the transaction. - // Even if the user accepts the prompt to use - // more storage on Safari, this error will - // be called. - // - // Try to re-run the transaction. - if (retriesLeft > 0) { - resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1])); - return; - } - reject(sqlError); - } - }); - } - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - return promise; -} - -function setItem$1(key, value, callback) { - return _setItem.apply(this, [key, value, callback, 1]); -} - -function removeItem$1(key, callback) { - var self = this; - - key = normalizeKey(key); - - var promise = new Promise$1(function (resolve, reject) { - self.ready().then(function () { - var dbInfo = self._dbInfo; - dbInfo.db.transaction(function (t) { - tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () { - resolve(); - }, function (t, error) { - reject(error); - }); - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - return promise; -} - -// Deletes every item in the table. -// TODO: Find out if this resets the AUTO_INCREMENT number. -function clear$1(callback) { - var self = this; - - var promise = new Promise$1(function (resolve, reject) { - self.ready().then(function () { - var dbInfo = self._dbInfo; - dbInfo.db.transaction(function (t) { - tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () { - resolve(); - }, function (t, error) { - reject(error); - }); - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - return promise; -} - -// Does a simple `COUNT(key)` to get the number of items stored in -// localForage. -function length$1(callback) { - var self = this; - - var promise = new Promise$1(function (resolve, reject) { - self.ready().then(function () { - var dbInfo = self._dbInfo; - dbInfo.db.transaction(function (t) { - // Ahhh, SQL makes this one soooooo easy. - tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) { - var result = results.rows.item(0).c; - resolve(result); - }, function (t, error) { - reject(error); - }); - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - return promise; -} - -// Return the key located at key index X; essentially gets the key from a -// `WHERE id = ?`. This is the most efficient way I can think to implement -// this rarely-used (in my experience) part of the API, but it can seem -// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so -// the ID of each key will change every time it's updated. Perhaps a stored -// procedure for the `setItem()` SQL would solve this problem? -// TODO: Don't change ID on `setItem()`. -function key$1(n, callback) { - var self = this; - - var promise = new Promise$1(function (resolve, reject) { - self.ready().then(function () { - var dbInfo = self._dbInfo; - dbInfo.db.transaction(function (t) { - tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) { - var result = results.rows.length ? results.rows.item(0).key : null; - resolve(result); - }, function (t, error) { - reject(error); - }); - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - return promise; -} - -function keys$1(callback) { - var self = this; - - var promise = new Promise$1(function (resolve, reject) { - self.ready().then(function () { - var dbInfo = self._dbInfo; - dbInfo.db.transaction(function (t) { - tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) { - var keys = []; - - for (var i = 0; i < results.rows.length; i++) { - keys.push(results.rows.item(i).key); - } - - resolve(keys); - }, function (t, error) { - reject(error); - }); - }); - })["catch"](reject); - }); - - executeCallback(promise, callback); - return promise; -} - -// https://www.w3.org/TR/webdatabase/#databases -// > There is no way to enumerate or delete the databases available for an origin from this API. -function getAllStoreNames(db) { - return new Promise$1(function (resolve, reject) { - db.transaction(function (t) { - t.executeSql('SELECT name FROM sqlite_master ' + "WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'", [], function (t, results) { - var storeNames = []; - - for (var i = 0; i < results.rows.length; i++) { - storeNames.push(results.rows.item(i).name); - } - - resolve({ - db: db, - storeNames: storeNames - }); - }, function (t, error) { - reject(error); - }); - }, function (sqlError) { - reject(sqlError); - }); - }); -} - -function dropInstance$1(options, callback) { - callback = getCallback.apply(this, arguments); - - var currentConfig = this.config(); - options = typeof options !== 'function' && options || {}; - if (!options.name) { - options.name = options.name || currentConfig.name; - options.storeName = options.storeName || currentConfig.storeName; - } - - var self = this; - var promise; - if (!options.name) { - promise = Promise$1.reject('Invalid arguments'); - } else { - promise = new Promise$1(function (resolve) { - var db; - if (options.name === currentConfig.name) { - // use the db reference of the current instance - db = self._dbInfo.db; - } else { - db = openDatabase(options.name, '', '', 0); - } - - if (!options.storeName) { - // drop all database tables - resolve(getAllStoreNames(db)); - } else { - resolve({ - db: db, - storeNames: [options.storeName] - }); - } - }).then(function (operationInfo) { - return new Promise$1(function (resolve, reject) { - operationInfo.db.transaction(function (t) { - function dropTable(storeName) { - return new Promise$1(function (resolve, reject) { - t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () { - resolve(); - }, function (t, error) { - reject(error); - }); - }); - } - - var operations = []; - for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) { - operations.push(dropTable(operationInfo.storeNames[i])); - } - - Promise$1.all(operations).then(function () { - resolve(); - })["catch"](function (e) { - reject(e); - }); - }, function (sqlError) { - reject(sqlError); - }); - }); - }); - } - - executeCallback(promise, callback); - return promise; -} - -var webSQLStorage = { - _driver: 'webSQLStorage', - _initStorage: _initStorage$1, - _support: isWebSQLValid(), - iterate: iterate$1, - getItem: getItem$1, - setItem: setItem$1, - removeItem: removeItem$1, - clear: clear$1, - length: length$1, - key: key$1, - keys: keys$1, - dropInstance: dropInstance$1 -}; - -function isLocalStorageValid() { - try { - return typeof localStorage !== 'undefined' && 'setItem' in localStorage && - // in IE8 typeof localStorage.setItem === 'object' - !!localStorage.setItem; - } catch (e) { - return false; - } -} - -function _getKeyPrefix(options, defaultConfig) { - var keyPrefix = options.name + '/'; - - if (options.storeName !== defaultConfig.storeName) { - keyPrefix += options.storeName + '/'; - } - return keyPrefix; -} - -// Check if localStorage throws when saving an item -function checkIfLocalStorageThrows() { - var localStorageTestKey = '_localforage_support_test'; - - try { - localStorage.setItem(localStorageTestKey, true); - localStorage.removeItem(localStorageTestKey); - - return false; - } catch (e) { - return true; - } -} - -// Check if localStorage is usable and allows to save an item -// This method checks if localStorage is usable in Safari Private Browsing -// mode, or in any other case where the available quota for localStorage -// is 0 and there wasn't any saved items yet. -function _isLocalStorageUsable() { - return !checkIfLocalStorageThrows() || localStorage.length > 0; -} - -// Config the localStorage backend, using options set in the config. -function _initStorage$2(options) { - var self = this; - var dbInfo = {}; - if (options) { - for (var i in options) { - dbInfo[i] = options[i]; - } - } - - dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig); - - if (!_isLocalStorageUsable()) { - return Promise$1.reject(); - } - - self._dbInfo = dbInfo; - dbInfo.serializer = localforageSerializer; - - return Promise$1.resolve(); -} - -// Remove all keys from the datastore, effectively destroying all data in -// the app's key/value store! -function clear$2(callback) { - var self = this; - var promise = self.ready().then(function () { - var keyPrefix = self._dbInfo.keyPrefix; - - for (var i = localStorage.length - 1; i >= 0; i--) { - var key = localStorage.key(i); - - if (key.indexOf(keyPrefix) === 0) { - localStorage.removeItem(key); - } - } - }); - - executeCallback(promise, callback); - return promise; -} - -// Retrieve an item from the store. Unlike the original async_storage -// library in Gaia, we don't modify return values at all. If a key's value -// is `undefined`, we pass that value to the callback function. -function getItem$2(key, callback) { - var self = this; - - key = normalizeKey(key); - - var promise = self.ready().then(function () { - var dbInfo = self._dbInfo; - var result = localStorage.getItem(dbInfo.keyPrefix + key); - - // If a result was found, parse it from the serialized - // string into a JS object. If result isn't truthy, the key - // is likely undefined and we'll pass it straight to the - // callback. - if (result) { - result = dbInfo.serializer.deserialize(result); - } - - return result; - }); - - executeCallback(promise, callback); - return promise; -} - -// Iterate over all items in the store. -function iterate$2(iterator, callback) { - var self = this; - - var promise = self.ready().then(function () { - var dbInfo = self._dbInfo; - var keyPrefix = dbInfo.keyPrefix; - var keyPrefixLength = keyPrefix.length; - var length = localStorage.length; - - // We use a dedicated iterator instead of the `i` variable below - // so other keys we fetch in localStorage aren't counted in - // the `iterationNumber` argument passed to the `iterate()` - // callback. - // - // See: github.com/mozilla/localForage/pull/435#discussion_r38061530 - var iterationNumber = 1; - - for (var i = 0; i < length; i++) { - var key = localStorage.key(i); - if (key.indexOf(keyPrefix) !== 0) { - continue; - } - var value = localStorage.getItem(key); - - // If a result was found, parse it from the serialized - // string into a JS object. If result isn't truthy, the - // key is likely undefined and we'll pass it straight - // to the iterator. - if (value) { - value = dbInfo.serializer.deserialize(value); - } - - value = iterator(value, key.substring(keyPrefixLength), iterationNumber++); - - if (value !== void 0) { - return value; - } - } - }); - - executeCallback(promise, callback); - return promise; -} - -// Same as localStorage's key() method, except takes a callback. -function key$2(n, callback) { - var self = this; - var promise = self.ready().then(function () { - var dbInfo = self._dbInfo; - var result; - try { - result = localStorage.key(n); - } catch (error) { - result = null; - } - - // Remove the prefix from the key, if a key is found. - if (result) { - result = result.substring(dbInfo.keyPrefix.length); - } - - return result; - }); - - executeCallback(promise, callback); - return promise; -} - -function keys$2(callback) { - var self = this; - var promise = self.ready().then(function () { - var dbInfo = self._dbInfo; - var length = localStorage.length; - var keys = []; - - for (var i = 0; i < length; i++) { - var itemKey = localStorage.key(i); - if (itemKey.indexOf(dbInfo.keyPrefix) === 0) { - keys.push(itemKey.substring(dbInfo.keyPrefix.length)); - } - } - - return keys; - }); - - executeCallback(promise, callback); - return promise; -} - -// Supply the number of keys in the datastore to the callback function. -function length$2(callback) { - var self = this; - var promise = self.keys().then(function (keys) { - return keys.length; - }); - - executeCallback(promise, callback); - return promise; -} - -// Remove an item from the store, nice and simple. -function removeItem$2(key, callback) { - var self = this; - - key = normalizeKey(key); - - var promise = self.ready().then(function () { - var dbInfo = self._dbInfo; - localStorage.removeItem(dbInfo.keyPrefix + key); - }); - - executeCallback(promise, callback); - return promise; -} - -// Set a key's value and run an optional callback once the value is set. -// Unlike Gaia's implementation, the callback function is passed the value, -// in case you want to operate on that value only after you're sure it -// saved, or something like that. -function setItem$2(key, value, callback) { - var self = this; - - key = normalizeKey(key); - - var promise = self.ready().then(function () { - // Convert undefined values to null. - // https://github.com/mozilla/localForage/pull/42 - if (value === undefined) { - value = null; - } - - // Save the original value to pass to the callback. - var originalValue = value; - - return new Promise$1(function (resolve, reject) { - var dbInfo = self._dbInfo; - dbInfo.serializer.serialize(value, function (value, error) { - if (error) { - reject(error); - } else { - try { - localStorage.setItem(dbInfo.keyPrefix + key, value); - resolve(originalValue); - } catch (e) { - // localStorage capacity exceeded. - // TODO: Make this a specific error/event. - if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') { - reject(e); - } - reject(e); - } - } - }); - }); - }); - - executeCallback(promise, callback); - return promise; -} - -function dropInstance$2(options, callback) { - callback = getCallback.apply(this, arguments); - - options = typeof options !== 'function' && options || {}; - if (!options.name) { - var currentConfig = this.config(); - options.name = options.name || currentConfig.name; - options.storeName = options.storeName || currentConfig.storeName; - } - - var self = this; - var promise; - if (!options.name) { - promise = Promise$1.reject('Invalid arguments'); - } else { - promise = new Promise$1(function (resolve) { - if (!options.storeName) { - resolve(options.name + '/'); - } else { - resolve(_getKeyPrefix(options, self._defaultConfig)); - } - }).then(function (keyPrefix) { - for (var i = localStorage.length - 1; i >= 0; i--) { - var key = localStorage.key(i); - - if (key.indexOf(keyPrefix) === 0) { - localStorage.removeItem(key); - } - } - }); - } - - executeCallback(promise, callback); - return promise; -} - -var localStorageWrapper = { - _driver: 'localStorageWrapper', - _initStorage: _initStorage$2, - _support: isLocalStorageValid(), - iterate: iterate$2, - getItem: getItem$2, - setItem: setItem$2, - removeItem: removeItem$2, - clear: clear$2, - length: length$2, - key: key$2, - keys: keys$2, - dropInstance: dropInstance$2 -}; - -var sameValue = function sameValue(x, y) { - return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y); -}; - -var includes = function includes(array, searchElement) { - var len = array.length; - var i = 0; - while (i < len) { - if (sameValue(array[i], searchElement)) { - return true; - } - i++; - } - - return false; -}; - -var isArray = Array.isArray || function (arg) { - return Object.prototype.toString.call(arg) === '[object Array]'; -}; - -// Drivers are stored here when `defineDriver()` is called. -// They are shared across all instances of localForage. -var DefinedDrivers = {}; - -var DriverSupport = {}; - -var DefaultDrivers = { - INDEXEDDB: asyncStorage, - WEBSQL: webSQLStorage, - LOCALSTORAGE: localStorageWrapper -}; - -var DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver]; - -var OptionalDriverMethods = ['dropInstance']; - -var LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods); - -var DefaultConfig = { - description: '', - driver: DefaultDriverOrder.slice(), - name: 'localforage', - // Default DB size is _JUST UNDER_ 5MB, as it's the highest size - // we can use without a prompt. - size: 4980736, - storeName: 'keyvaluepairs', - version: 1.0 -}; - -function callWhenReady(localForageInstance, libraryMethod) { - localForageInstance[libraryMethod] = function () { - var _args = arguments; - return localForageInstance.ready().then(function () { - return localForageInstance[libraryMethod].apply(localForageInstance, _args); - }); - }; -} - -function extend() { - for (var i = 1; i < arguments.length; i++) { - var arg = arguments[i]; - - if (arg) { - for (var _key in arg) { - if (arg.hasOwnProperty(_key)) { - if (isArray(arg[_key])) { - arguments[0][_key] = arg[_key].slice(); - } else { - arguments[0][_key] = arg[_key]; - } - } - } - } - } - - return arguments[0]; -} - -var LocalForage = function () { - function LocalForage(options) { - _classCallCheck(this, LocalForage); - - for (var driverTypeKey in DefaultDrivers) { - if (DefaultDrivers.hasOwnProperty(driverTypeKey)) { - var driver = DefaultDrivers[driverTypeKey]; - var driverName = driver._driver; - this[driverTypeKey] = driverName; - - if (!DefinedDrivers[driverName]) { - // we don't need to wait for the promise, - // since the default drivers can be defined - // in a blocking manner - this.defineDriver(driver); - } - } - } - - this._defaultConfig = extend({}, DefaultConfig); - this._config = extend({}, this._defaultConfig, options); - this._driverSet = null; - this._initDriver = null; - this._ready = false; - this._dbInfo = null; - - this._wrapLibraryMethodsWithReady(); - this.setDriver(this._config.driver)["catch"](function () {}); - } - - // Set any config values for localForage; can be called anytime before - // the first API call (e.g. `getItem`, `setItem`). - // We loop through options so we don't overwrite existing config - // values. - - - LocalForage.prototype.config = function config(options) { - // If the options argument is an object, we use it to set values. - // Otherwise, we return either a specified config value or all - // config values. - if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') { - // If localforage is ready and fully initialized, we can't set - // any new configuration values. Instead, we return an error. - if (this._ready) { - return new Error("Can't call config() after localforage " + 'has been used.'); - } - - for (var i in options) { - if (i === 'storeName') { - options[i] = options[i].replace(/\W/g, '_'); - } - - if (i === 'version' && typeof options[i] !== 'number') { - return new Error('Database version must be a number.'); - } - - this._config[i] = options[i]; - } - - // after all config options are set and - // the driver option is used, try setting it - if ('driver' in options && options.driver) { - return this.setDriver(this._config.driver); - } - - return true; - } else if (typeof options === 'string') { - return this._config[options]; - } else { - return this._config; - } - }; - - // Used to define a custom driver, shared across all instances of - // localForage. - - - LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) { - var promise = new Promise$1(function (resolve, reject) { - try { - var driverName = driverObject._driver; - var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver'); - - // A driver name should be defined and not overlap with the - // library-defined, default drivers. - if (!driverObject._driver) { - reject(complianceError); - return; - } - - var driverMethods = LibraryMethods.concat('_initStorage'); - for (var i = 0, len = driverMethods.length; i < len; i++) { - var driverMethodName = driverMethods[i]; - - // when the property is there, - // it should be a method even when optional - var isRequired = !includes(OptionalDriverMethods, driverMethodName); - if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') { - reject(complianceError); - return; - } - } - - var configureMissingMethods = function configureMissingMethods() { - var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) { - return function () { - var error = new Error('Method ' + methodName + ' is not implemented by the current driver'); - var promise = Promise$1.reject(error); - executeCallback(promise, arguments[arguments.length - 1]); - return promise; - }; - }; - - for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) { - var optionalDriverMethod = OptionalDriverMethods[_i]; - if (!driverObject[optionalDriverMethod]) { - driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod); - } - } - }; - - configureMissingMethods(); - - var setDriverSupport = function setDriverSupport(support) { - if (DefinedDrivers[driverName]) { - console.info('Redefining LocalForage driver: ' + driverName); - } - DefinedDrivers[driverName] = driverObject; - DriverSupport[driverName] = support; - // don't use a then, so that we can define - // drivers that have simple _support methods - // in a blocking manner - resolve(); - }; - - if ('_support' in driverObject) { - if (driverObject._support && typeof driverObject._support === 'function') { - driverObject._support().then(setDriverSupport, reject); - } else { - setDriverSupport(!!driverObject._support); - } - } else { - setDriverSupport(true); - } - } catch (e) { - reject(e); - } - }); - - executeTwoCallbacks(promise, callback, errorCallback); - return promise; - }; - - LocalForage.prototype.driver = function driver() { - return this._driver || null; - }; - - LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) { - var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.')); - - executeTwoCallbacks(getDriverPromise, callback, errorCallback); - return getDriverPromise; - }; - - LocalForage.prototype.getSerializer = function getSerializer(callback) { - var serializerPromise = Promise$1.resolve(localforageSerializer); - executeTwoCallbacks(serializerPromise, callback); - return serializerPromise; - }; - - LocalForage.prototype.ready = function ready(callback) { - var self = this; - - var promise = self._driverSet.then(function () { - if (self._ready === null) { - self._ready = self._initDriver(); - } - - return self._ready; - }); - - executeTwoCallbacks(promise, callback, callback); - return promise; - }; - - LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) { - var self = this; - - if (!isArray(drivers)) { - drivers = [drivers]; - } - - var supportedDrivers = this._getSupportedDrivers(drivers); - - function setDriverToConfig() { - self._config.driver = self.driver(); - } - - function extendSelfWithDriver(driver) { - self._extend(driver); - setDriverToConfig(); - - self._ready = self._initStorage(self._config); - return self._ready; - } - - function initDriver(supportedDrivers) { - return function () { - var currentDriverIndex = 0; - - function driverPromiseLoop() { - while (currentDriverIndex < supportedDrivers.length) { - var driverName = supportedDrivers[currentDriverIndex]; - currentDriverIndex++; - - self._dbInfo = null; - self._ready = null; - - return self.getDriver(driverName).then(extendSelfWithDriver)["catch"](driverPromiseLoop); - } - - setDriverToConfig(); - var error = new Error('No available storage method found.'); - self._driverSet = Promise$1.reject(error); - return self._driverSet; - } - - return driverPromiseLoop(); - }; - } - - // There might be a driver initialization in progress - // so wait for it to finish in order to avoid a possible - // race condition to set _dbInfo - var oldDriverSetDone = this._driverSet !== null ? this._driverSet["catch"](function () { - return Promise$1.resolve(); - }) : Promise$1.resolve(); - - this._driverSet = oldDriverSetDone.then(function () { - var driverName = supportedDrivers[0]; - self._dbInfo = null; - self._ready = null; - - return self.getDriver(driverName).then(function (driver) { - self._driver = driver._driver; - setDriverToConfig(); - self._wrapLibraryMethodsWithReady(); - self._initDriver = initDriver(supportedDrivers); - }); - })["catch"](function () { - setDriverToConfig(); - var error = new Error('No available storage method found.'); - self._driverSet = Promise$1.reject(error); - return self._driverSet; - }); - - executeTwoCallbacks(this._driverSet, callback, errorCallback); - return this._driverSet; - }; - - LocalForage.prototype.supports = function supports(driverName) { - return !!DriverSupport[driverName]; - }; - - LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) { - extend(this, libraryMethodsAndProperties); - }; - - LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) { - var supportedDrivers = []; - for (var i = 0, len = drivers.length; i < len; i++) { - var driverName = drivers[i]; - if (this.supports(driverName)) { - supportedDrivers.push(driverName); - } - } - return supportedDrivers; - }; - - LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() { - // Add a stub for each driver API method that delays the call to the - // corresponding driver method until localForage is ready. These stubs - // will be replaced by the driver methods as soon as the driver is - // loaded, so there is no performance impact. - for (var i = 0, len = LibraryMethods.length; i < len; i++) { - callWhenReady(this, LibraryMethods[i]); - } - }; - - LocalForage.prototype.createInstance = function createInstance(options) { - return new LocalForage(options); - }; - - return LocalForage; -}(); - -// The actual localForage object that we expose as a module or via a -// global. It's extended by pulling in one of our other libraries. - - -var localforage_js = new LocalForage(); - -module.exports = localforage_js; - -},{"3":3}]},{},[4])(4) -}); -}(localforage$1)); - -var localforage = localforage$1.exports; + (function(f){{module.exports=f();}})(function(){return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof commonjsRequire=="function"&&commonjsRequire;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw (f.code="MODULE_NOT_FOUND", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r);}return n[o].exports}var i=typeof commonjsRequire=="function"&&commonjsRequire;for(var o=0;o element; its readystatechange event will be fired asynchronously once it is inserted + // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called. + var scriptEl = global.document.createElement('script'); + scriptEl.onreadystatechange = function () { + nextTick(); + + scriptEl.onreadystatechange = null; + scriptEl.parentNode.removeChild(scriptEl); + scriptEl = null; + }; + global.document.documentElement.appendChild(scriptEl); + }; + } else { + scheduleDrain = function () { + setTimeout(nextTick, 0); + }; + } + } + + var draining; + var queue = []; + //named nextTick for less confusing stack traces + function nextTick() { + draining = true; + var i, oldQueue; + var len = queue.length; + while (len) { + oldQueue = queue; + queue = []; + i = -1; + while (++i < len) { + oldQueue[i](); + } + len = queue.length; + } + draining = false; + } + + module.exports = immediate; + function immediate(task) { + if (queue.push(task) === 1 && !draining) { + scheduleDrain(); + } + } + + }).call(this,typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); + },{}],2:[function(_dereq_,module,exports){ + var immediate = _dereq_(1); + + /* istanbul ignore next */ + function INTERNAL() {} + + var handlers = {}; + + var REJECTED = ['REJECTED']; + var FULFILLED = ['FULFILLED']; + var PENDING = ['PENDING']; + + module.exports = Promise; + + function Promise(resolver) { + if (typeof resolver !== 'function') { + throw new TypeError('resolver must be a function'); + } + this.state = PENDING; + this.queue = []; + this.outcome = void 0; + if (resolver !== INTERNAL) { + safelyResolveThenable(this, resolver); + } + } + + Promise.prototype["catch"] = function (onRejected) { + return this.then(null, onRejected); + }; + Promise.prototype.then = function (onFulfilled, onRejected) { + if (typeof onFulfilled !== 'function' && this.state === FULFILLED || + typeof onRejected !== 'function' && this.state === REJECTED) { + return this; + } + var promise = new this.constructor(INTERNAL); + if (this.state !== PENDING) { + var resolver = this.state === FULFILLED ? onFulfilled : onRejected; + unwrap(promise, resolver, this.outcome); + } else { + this.queue.push(new QueueItem(promise, onFulfilled, onRejected)); + } + + return promise; + }; + function QueueItem(promise, onFulfilled, onRejected) { + this.promise = promise; + if (typeof onFulfilled === 'function') { + this.onFulfilled = onFulfilled; + this.callFulfilled = this.otherCallFulfilled; + } + if (typeof onRejected === 'function') { + this.onRejected = onRejected; + this.callRejected = this.otherCallRejected; + } + } + QueueItem.prototype.callFulfilled = function (value) { + handlers.resolve(this.promise, value); + }; + QueueItem.prototype.otherCallFulfilled = function (value) { + unwrap(this.promise, this.onFulfilled, value); + }; + QueueItem.prototype.callRejected = function (value) { + handlers.reject(this.promise, value); + }; + QueueItem.prototype.otherCallRejected = function (value) { + unwrap(this.promise, this.onRejected, value); + }; + + function unwrap(promise, func, value) { + immediate(function () { + var returnValue; + try { + returnValue = func(value); + } catch (e) { + return handlers.reject(promise, e); + } + if (returnValue === promise) { + handlers.reject(promise, new TypeError('Cannot resolve promise with itself')); + } else { + handlers.resolve(promise, returnValue); + } + }); + } + + handlers.resolve = function (self, value) { + var result = tryCatch(getThen, value); + if (result.status === 'error') { + return handlers.reject(self, result.value); + } + var thenable = result.value; + + if (thenable) { + safelyResolveThenable(self, thenable); + } else { + self.state = FULFILLED; + self.outcome = value; + var i = -1; + var len = self.queue.length; + while (++i < len) { + self.queue[i].callFulfilled(value); + } + } + return self; + }; + handlers.reject = function (self, error) { + self.state = REJECTED; + self.outcome = error; + var i = -1; + var len = self.queue.length; + while (++i < len) { + self.queue[i].callRejected(error); + } + return self; + }; + + function getThen(obj) { + // Make sure we only access the accessor once as required by the spec + var then = obj && obj.then; + if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') { + return function appyThen() { + then.apply(obj, arguments); + }; + } + } + + function safelyResolveThenable(self, thenable) { + // Either fulfill, reject or reject with error + var called = false; + function onError(value) { + if (called) { + return; + } + called = true; + handlers.reject(self, value); + } + + function onSuccess(value) { + if (called) { + return; + } + called = true; + handlers.resolve(self, value); + } + + function tryToUnwrap() { + thenable(onSuccess, onError); + } + + var result = tryCatch(tryToUnwrap); + if (result.status === 'error') { + onError(result.value); + } + } + + function tryCatch(func, value) { + var out = {}; + try { + out.value = func(value); + out.status = 'success'; + } catch (e) { + out.status = 'error'; + out.value = e; + } + return out; + } + + Promise.resolve = resolve; + function resolve(value) { + if (value instanceof this) { + return value; + } + return handlers.resolve(new this(INTERNAL), value); + } + + Promise.reject = reject; + function reject(reason) { + var promise = new this(INTERNAL); + return handlers.reject(promise, reason); + } + + Promise.all = all; + function all(iterable) { + var self = this; + if (Object.prototype.toString.call(iterable) !== '[object Array]') { + return this.reject(new TypeError('must be an array')); + } + + var len = iterable.length; + var called = false; + if (!len) { + return this.resolve([]); + } + + var values = new Array(len); + var resolved = 0; + var i = -1; + var promise = new this(INTERNAL); + + while (++i < len) { + allResolver(iterable[i], i); + } + return promise; + function allResolver(value, i) { + self.resolve(value).then(resolveFromAll, function (error) { + if (!called) { + called = true; + handlers.reject(promise, error); + } + }); + function resolveFromAll(outValue) { + values[i] = outValue; + if (++resolved === len && !called) { + called = true; + handlers.resolve(promise, values); + } + } + } + } + + Promise.race = race; + function race(iterable) { + var self = this; + if (Object.prototype.toString.call(iterable) !== '[object Array]') { + return this.reject(new TypeError('must be an array')); + } + + var len = iterable.length; + var called = false; + if (!len) { + return this.resolve([]); + } + + var i = -1; + var promise = new this(INTERNAL); + + while (++i < len) { + resolver(iterable[i]); + } + return promise; + function resolver(value) { + self.resolve(value).then(function (response) { + if (!called) { + called = true; + handlers.resolve(promise, response); + } + }, function (error) { + if (!called) { + called = true; + handlers.reject(promise, error); + } + }); + } + } + + },{"1":1}],3:[function(_dereq_,module,exports){ + (function (global){ + if (typeof global.Promise !== 'function') { + global.Promise = _dereq_(2); + } + + }).call(this,typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); + },{"2":2}],4:[function(_dereq_,module,exports){ + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + function getIDB() { + /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */ + try { + if (typeof indexedDB !== 'undefined') { + return indexedDB; + } + if (typeof webkitIndexedDB !== 'undefined') { + return webkitIndexedDB; + } + if (typeof mozIndexedDB !== 'undefined') { + return mozIndexedDB; + } + if (typeof OIndexedDB !== 'undefined') { + return OIndexedDB; + } + if (typeof msIndexedDB !== 'undefined') { + return msIndexedDB; + } + } catch (e) { + return; + } + } + + var idb = getIDB(); + + function isIndexedDBValid() { + try { + // Initialize IndexedDB; fall back to vendor-prefixed versions + // if needed. + if (!idb || !idb.open) { + return false; + } + // We mimic PouchDB here; + // + // We test for openDatabase because IE Mobile identifies itself + // as Safari. Oh the lulz... + var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform); + + var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1; + + // Safari <10.1 does not meet our requirements for IDB support + // (see: https://github.com/pouchdb/pouchdb/issues/5572). + // Safari 10.1 shipped with fetch, we can use that to detect it. + // Note: this creates issues with `window.fetch` polyfills and + // overrides; see: + // https://github.com/localForage/localForage/issues/856 + return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' && + // some outdated implementations of IDB that appear on Samsung + // and HTC Android devices <4.4 are missing IDBKeyRange + // See: https://github.com/mozilla/localForage/issues/128 + // See: https://github.com/mozilla/localForage/issues/272 + typeof IDBKeyRange !== 'undefined'; + } catch (e) { + return false; + } + } + + // Abstracts constructing a Blob object, so it also works in older + // browsers that don't support the native Blob constructor. (i.e. + // old QtWebKit versions, at least). + // Abstracts constructing a Blob object, so it also works in older + // browsers that don't support the native Blob constructor. (i.e. + // old QtWebKit versions, at least). + function createBlob(parts, properties) { + /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */ + parts = parts || []; + properties = properties || {}; + try { + return new Blob(parts, properties); + } catch (e) { + if (e.name !== 'TypeError') { + throw e; + } + var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder; + var builder = new Builder(); + for (var i = 0; i < parts.length; i += 1) { + builder.append(parts[i]); + } + return builder.getBlob(properties.type); + } + } + + // This is CommonJS because lie is an external dependency, so Rollup + // can just ignore it. + if (typeof Promise === 'undefined') { + // In the "nopromises" build this will just throw if you don't have + // a global promise object, but it would throw anyway later. + _dereq_(3); + } + var Promise$1 = Promise; + + function executeCallback(promise, callback) { + if (callback) { + promise.then(function (result) { + callback(null, result); + }, function (error) { + callback(error); + }); + } + } + + function executeTwoCallbacks(promise, callback, errorCallback) { + if (typeof callback === 'function') { + promise.then(callback); + } + + if (typeof errorCallback === 'function') { + promise["catch"](errorCallback); + } + } + + function normalizeKey(key) { + // Cast the key to a string, as that's all we can set as a key. + if (typeof key !== 'string') { + console.warn(key + ' used as a key, but it is not a string.'); + key = String(key); + } + + return key; + } + + function getCallback() { + if (arguments.length && typeof arguments[arguments.length - 1] === 'function') { + return arguments[arguments.length - 1]; + } + } + + // Some code originally from async_storage.js in + // [Gaia](https://github.com/mozilla-b2g/gaia). + + var DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support'; + var supportsBlobs = void 0; + var dbContexts = {}; + var toString = Object.prototype.toString; + + // Transaction Modes + var READ_ONLY = 'readonly'; + var READ_WRITE = 'readwrite'; + + // Transform a binary string to an array buffer, because otherwise + // weird stuff happens when you try to work with the binary string directly. + // It is known. + // From http://stackoverflow.com/questions/14967647/ (continues on next line) + // encode-decode-image-with-base64-breaks-image (2013-04-21) + function _binStringToArrayBuffer(bin) { + var length = bin.length; + var buf = new ArrayBuffer(length); + var arr = new Uint8Array(buf); + for (var i = 0; i < length; i++) { + arr[i] = bin.charCodeAt(i); + } + return buf; + } + + // + // Blobs are not supported in all versions of IndexedDB, notably + // Chrome <37 and Android <5. In those versions, storing a blob will throw. + // + // Various other blob bugs exist in Chrome v37-42 (inclusive). + // Detecting them is expensive and confusing to users, and Chrome 37-42 + // is at very low usage worldwide, so we do a hacky userAgent check instead. + // + // content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120 + // 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916 + // FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836 + // + // Code borrowed from PouchDB. See: + // https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js + // + function _checkBlobSupportWithoutCaching(idb) { + return new Promise$1(function (resolve) { + var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE); + var blob = createBlob(['']); + txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key'); + + txn.onabort = function (e) { + // If the transaction aborts now its due to not being able to + // write to the database, likely due to the disk being full + e.preventDefault(); + e.stopPropagation(); + resolve(false); + }; + + txn.oncomplete = function () { + var matchedChrome = navigator.userAgent.match(/Chrome\/(\d+)/); + var matchedEdge = navigator.userAgent.match(/Edge\//); + // MS Edge pretends to be Chrome 42: + // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx + resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43); + }; + })["catch"](function () { + return false; // error, so assume unsupported + }); + } + + function _checkBlobSupport(idb) { + if (typeof supportsBlobs === 'boolean') { + return Promise$1.resolve(supportsBlobs); + } + return _checkBlobSupportWithoutCaching(idb).then(function (value) { + supportsBlobs = value; + return supportsBlobs; + }); + } + + function _deferReadiness(dbInfo) { + var dbContext = dbContexts[dbInfo.name]; + + // Create a deferred object representing the current database operation. + var deferredOperation = {}; + + deferredOperation.promise = new Promise$1(function (resolve, reject) { + deferredOperation.resolve = resolve; + deferredOperation.reject = reject; + }); + + // Enqueue the deferred operation. + dbContext.deferredOperations.push(deferredOperation); + + // Chain its promise to the database readiness. + if (!dbContext.dbReady) { + dbContext.dbReady = deferredOperation.promise; + } else { + dbContext.dbReady = dbContext.dbReady.then(function () { + return deferredOperation.promise; + }); + } + } + + function _advanceReadiness(dbInfo) { + var dbContext = dbContexts[dbInfo.name]; + + // Dequeue a deferred operation. + var deferredOperation = dbContext.deferredOperations.pop(); + + // Resolve its promise (which is part of the database readiness + // chain of promises). + if (deferredOperation) { + deferredOperation.resolve(); + return deferredOperation.promise; + } + } + + function _rejectReadiness(dbInfo, err) { + var dbContext = dbContexts[dbInfo.name]; + + // Dequeue a deferred operation. + var deferredOperation = dbContext.deferredOperations.pop(); + + // Reject its promise (which is part of the database readiness + // chain of promises). + if (deferredOperation) { + deferredOperation.reject(err); + return deferredOperation.promise; + } + } + + function _getConnection(dbInfo, upgradeNeeded) { + return new Promise$1(function (resolve, reject) { + dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext(); + + if (dbInfo.db) { + if (upgradeNeeded) { + _deferReadiness(dbInfo); + dbInfo.db.close(); + } else { + return resolve(dbInfo.db); + } + } + + var dbArgs = [dbInfo.name]; + + if (upgradeNeeded) { + dbArgs.push(dbInfo.version); + } + + var openreq = idb.open.apply(idb, dbArgs); + + if (upgradeNeeded) { + openreq.onupgradeneeded = function (e) { + var db = openreq.result; + try { + db.createObjectStore(dbInfo.storeName); + if (e.oldVersion <= 1) { + // Added when support for blob shims was added + db.createObjectStore(DETECT_BLOB_SUPPORT_STORE); + } + } catch (ex) { + if (ex.name === 'ConstraintError') { + console.warn('The database "' + dbInfo.name + '"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage "' + dbInfo.storeName + '" already exists.'); + } else { + throw ex; + } + } + }; + } + + openreq.onerror = function (e) { + e.preventDefault(); + reject(openreq.error); + }; + + openreq.onsuccess = function () { + var db = openreq.result; + db.onversionchange = function (e) { + // Triggered when the database is modified (e.g. adding an objectStore) or + // deleted (even when initiated by other sessions in different tabs). + // Closing the connection here prevents those operations from being blocked. + // If the database is accessed again later by this instance, the connection + // will be reopened or the database recreated as needed. + e.target.close(); + }; + resolve(db); + _advanceReadiness(dbInfo); + }; + }); + } + + function _getOriginalConnection(dbInfo) { + return _getConnection(dbInfo, false); + } + + function _getUpgradedConnection(dbInfo) { + return _getConnection(dbInfo, true); + } + + function _isUpgradeNeeded(dbInfo, defaultVersion) { + if (!dbInfo.db) { + return true; + } + + var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName); + var isDowngrade = dbInfo.version < dbInfo.db.version; + var isUpgrade = dbInfo.version > dbInfo.db.version; + + if (isDowngrade) { + // If the version is not the default one + // then warn for impossible downgrade. + if (dbInfo.version !== defaultVersion) { + console.warn('The database "' + dbInfo.name + '"' + " can't be downgraded from version " + dbInfo.db.version + ' to version ' + dbInfo.version + '.'); + } + // Align the versions to prevent errors. + dbInfo.version = dbInfo.db.version; + } + + if (isUpgrade || isNewStore) { + // If the store is new then increment the version (if needed). + // This will trigger an "upgradeneeded" event which is required + // for creating a store. + if (isNewStore) { + var incVersion = dbInfo.db.version + 1; + if (incVersion > dbInfo.version) { + dbInfo.version = incVersion; + } + } + + return true; + } + + return false; + } + + // encode a blob for indexeddb engines that don't support blobs + function _encodeBlob(blob) { + return new Promise$1(function (resolve, reject) { + var reader = new FileReader(); + reader.onerror = reject; + reader.onloadend = function (e) { + var base64 = btoa(e.target.result || ''); + resolve({ + __local_forage_encoded_blob: true, + data: base64, + type: blob.type + }); + }; + reader.readAsBinaryString(blob); + }); + } + + // decode an encoded blob + function _decodeBlob(encodedBlob) { + var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data)); + return createBlob([arrayBuff], { type: encodedBlob.type }); + } + + // is this one of our fancy encoded blobs? + function _isEncodedBlob(value) { + return value && value.__local_forage_encoded_blob; + } + + // Specialize the default `ready()` function by making it dependent + // on the current database operations. Thus, the driver will be actually + // ready when it's been initialized (default) *and* there are no pending + // operations on the database (initiated by some other instances). + function _fullyReady(callback) { + var self = this; + + var promise = self._initReady().then(function () { + var dbContext = dbContexts[self._dbInfo.name]; + + if (dbContext && dbContext.dbReady) { + return dbContext.dbReady; + } + }); + + executeTwoCallbacks(promise, callback, callback); + return promise; + } + + // Try to establish a new db connection to replace the + // current one which is broken (i.e. experiencing + // InvalidStateError while creating a transaction). + function _tryReconnect(dbInfo) { + _deferReadiness(dbInfo); + + var dbContext = dbContexts[dbInfo.name]; + var forages = dbContext.forages; + + for (var i = 0; i < forages.length; i++) { + var forage = forages[i]; + if (forage._dbInfo.db) { + forage._dbInfo.db.close(); + forage._dbInfo.db = null; + } + } + dbInfo.db = null; + + return _getOriginalConnection(dbInfo).then(function (db) { + dbInfo.db = db; + if (_isUpgradeNeeded(dbInfo)) { + // Reopen the database for upgrading. + return _getUpgradedConnection(dbInfo); + } + return db; + }).then(function (db) { + // store the latest db reference + // in case the db was upgraded + dbInfo.db = dbContext.db = db; + for (var i = 0; i < forages.length; i++) { + forages[i]._dbInfo.db = db; + } + })["catch"](function (err) { + _rejectReadiness(dbInfo, err); + throw err; + }); + } + + // FF doesn't like Promises (micro-tasks) and IDDB store operations, + // so we have to do it with callbacks + function createTransaction(dbInfo, mode, callback, retries) { + if (retries === undefined) { + retries = 1; + } + + try { + var tx = dbInfo.db.transaction(dbInfo.storeName, mode); + callback(null, tx); + } catch (err) { + if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) { + return Promise$1.resolve().then(function () { + if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) { + // increase the db version, to create the new ObjectStore + if (dbInfo.db) { + dbInfo.version = dbInfo.db.version + 1; + } + // Reopen the database for upgrading. + return _getUpgradedConnection(dbInfo); + } + }).then(function () { + return _tryReconnect(dbInfo).then(function () { + createTransaction(dbInfo, mode, callback, retries - 1); + }); + })["catch"](callback); + } + + callback(err); + } + } + + function createDbContext() { + return { + // Running localForages sharing a database. + forages: [], + // Shared database. + db: null, + // Database readiness (promise). + dbReady: null, + // Deferred operations on the database. + deferredOperations: [] + }; + } + + // Open the IndexedDB database (automatically creates one if one didn't + // previously exist), using any options set in the config. + function _initStorage(options) { + var self = this; + var dbInfo = { + db: null + }; + + if (options) { + for (var i in options) { + dbInfo[i] = options[i]; + } + } + + // Get the current context of the database; + var dbContext = dbContexts[dbInfo.name]; + + // ...or create a new context. + if (!dbContext) { + dbContext = createDbContext(); + // Register the new context in the global container. + dbContexts[dbInfo.name] = dbContext; + } + + // Register itself as a running localForage in the current context. + dbContext.forages.push(self); + + // Replace the default `ready()` function with the specialized one. + if (!self._initReady) { + self._initReady = self.ready; + self.ready = _fullyReady; + } + + // Create an array of initialization states of the related localForages. + var initPromises = []; + + function ignoreErrors() { + // Don't handle errors here, + // just makes sure related localForages aren't pending. + return Promise$1.resolve(); + } + + for (var j = 0; j < dbContext.forages.length; j++) { + var forage = dbContext.forages[j]; + if (forage !== self) { + // Don't wait for itself... + initPromises.push(forage._initReady()["catch"](ignoreErrors)); + } + } + + // Take a snapshot of the related localForages. + var forages = dbContext.forages.slice(0); + + // Initialize the connection process only when + // all the related localForages aren't pending. + return Promise$1.all(initPromises).then(function () { + dbInfo.db = dbContext.db; + // Get the connection or open a new one without upgrade. + return _getOriginalConnection(dbInfo); + }).then(function (db) { + dbInfo.db = db; + if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) { + // Reopen the database for upgrading. + return _getUpgradedConnection(dbInfo); + } + return db; + }).then(function (db) { + dbInfo.db = dbContext.db = db; + self._dbInfo = dbInfo; + // Share the final connection amongst related localForages. + for (var k = 0; k < forages.length; k++) { + var forage = forages[k]; + if (forage !== self) { + // Self is already up-to-date. + forage._dbInfo.db = dbInfo.db; + forage._dbInfo.version = dbInfo.version; + } + } + }); + } + + function getItem(key, callback) { + var self = this; + + key = normalizeKey(key); + + var promise = new Promise$1(function (resolve, reject) { + self.ready().then(function () { + createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) { + if (err) { + return reject(err); + } + + try { + var store = transaction.objectStore(self._dbInfo.storeName); + var req = store.get(key); + + req.onsuccess = function () { + var value = req.result; + if (value === undefined) { + value = null; + } + if (_isEncodedBlob(value)) { + value = _decodeBlob(value); + } + resolve(value); + }; + + req.onerror = function () { + reject(req.error); + }; + } catch (e) { + reject(e); + } + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + return promise; + } + + // Iterate over all items stored in database. + function iterate(iterator, callback) { + var self = this; + + var promise = new Promise$1(function (resolve, reject) { + self.ready().then(function () { + createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) { + if (err) { + return reject(err); + } + + try { + var store = transaction.objectStore(self._dbInfo.storeName); + var req = store.openCursor(); + var iterationNumber = 1; + + req.onsuccess = function () { + var cursor = req.result; + + if (cursor) { + var value = cursor.value; + if (_isEncodedBlob(value)) { + value = _decodeBlob(value); + } + var result = iterator(value, cursor.key, iterationNumber++); + + // when the iterator callback returns any + // (non-`undefined`) value, then we stop + // the iteration immediately + if (result !== void 0) { + resolve(result); + } else { + cursor["continue"](); + } + } else { + resolve(); + } + }; + + req.onerror = function () { + reject(req.error); + }; + } catch (e) { + reject(e); + } + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + + return promise; + } + + function setItem(key, value, callback) { + var self = this; + + key = normalizeKey(key); + + var promise = new Promise$1(function (resolve, reject) { + var dbInfo; + self.ready().then(function () { + dbInfo = self._dbInfo; + if (toString.call(value) === '[object Blob]') { + return _checkBlobSupport(dbInfo.db).then(function (blobSupport) { + if (blobSupport) { + return value; + } + return _encodeBlob(value); + }); + } + return value; + }).then(function (value) { + createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) { + if (err) { + return reject(err); + } + + try { + var store = transaction.objectStore(self._dbInfo.storeName); + + // The reason we don't _save_ null is because IE 10 does + // not support saving the `null` type in IndexedDB. How + // ironic, given the bug below! + // See: https://github.com/mozilla/localForage/issues/161 + if (value === null) { + value = undefined; + } + + var req = store.put(value, key); + + transaction.oncomplete = function () { + // Cast to undefined so the value passed to + // callback/promise is the same as what one would get out + // of `getItem()` later. This leads to some weirdness + // (setItem('foo', undefined) will return `null`), but + // it's not my fault localStorage is our baseline and that + // it's weird. + if (value === undefined) { + value = null; + } + + resolve(value); + }; + transaction.onabort = transaction.onerror = function () { + var err = req.error ? req.error : req.transaction.error; + reject(err); + }; + } catch (e) { + reject(e); + } + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + return promise; + } + + function removeItem(key, callback) { + var self = this; + + key = normalizeKey(key); + + var promise = new Promise$1(function (resolve, reject) { + self.ready().then(function () { + createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) { + if (err) { + return reject(err); + } + + try { + var store = transaction.objectStore(self._dbInfo.storeName); + // We use a Grunt task to make this safe for IE and some + // versions of Android (including those used by Cordova). + // Normally IE won't like `.delete()` and will insist on + // using `['delete']()`, but we have a build step that + // fixes this for us now. + var req = store["delete"](key); + transaction.oncomplete = function () { + resolve(); + }; + + transaction.onerror = function () { + reject(req.error); + }; + + // The request will be also be aborted if we've exceeded our storage + // space. + transaction.onabort = function () { + var err = req.error ? req.error : req.transaction.error; + reject(err); + }; + } catch (e) { + reject(e); + } + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + return promise; + } + + function clear(callback) { + var self = this; + + var promise = new Promise$1(function (resolve, reject) { + self.ready().then(function () { + createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) { + if (err) { + return reject(err); + } + + try { + var store = transaction.objectStore(self._dbInfo.storeName); + var req = store.clear(); + + transaction.oncomplete = function () { + resolve(); + }; + + transaction.onabort = transaction.onerror = function () { + var err = req.error ? req.error : req.transaction.error; + reject(err); + }; + } catch (e) { + reject(e); + } + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + return promise; + } + + function length(callback) { + var self = this; + + var promise = new Promise$1(function (resolve, reject) { + self.ready().then(function () { + createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) { + if (err) { + return reject(err); + } + + try { + var store = transaction.objectStore(self._dbInfo.storeName); + var req = store.count(); + + req.onsuccess = function () { + resolve(req.result); + }; + + req.onerror = function () { + reject(req.error); + }; + } catch (e) { + reject(e); + } + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + return promise; + } + + function key(n, callback) { + var self = this; + + var promise = new Promise$1(function (resolve, reject) { + if (n < 0) { + resolve(null); + + return; + } + + self.ready().then(function () { + createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) { + if (err) { + return reject(err); + } + + try { + var store = transaction.objectStore(self._dbInfo.storeName); + var advanced = false; + var req = store.openKeyCursor(); + + req.onsuccess = function () { + var cursor = req.result; + if (!cursor) { + // this means there weren't enough keys + resolve(null); + + return; + } + + if (n === 0) { + // We have the first key, return it if that's what they + // wanted. + resolve(cursor.key); + } else { + if (!advanced) { + // Otherwise, ask the cursor to skip ahead n + // records. + advanced = true; + cursor.advance(n); + } else { + // When we get here, we've got the nth key. + resolve(cursor.key); + } + } + }; + + req.onerror = function () { + reject(req.error); + }; + } catch (e) { + reject(e); + } + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + return promise; + } + + function keys(callback) { + var self = this; + + var promise = new Promise$1(function (resolve, reject) { + self.ready().then(function () { + createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) { + if (err) { + return reject(err); + } + + try { + var store = transaction.objectStore(self._dbInfo.storeName); + var req = store.openKeyCursor(); + var keys = []; + + req.onsuccess = function () { + var cursor = req.result; + + if (!cursor) { + resolve(keys); + return; + } + + keys.push(cursor.key); + cursor["continue"](); + }; + + req.onerror = function () { + reject(req.error); + }; + } catch (e) { + reject(e); + } + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + return promise; + } + + function dropInstance(options, callback) { + callback = getCallback.apply(this, arguments); + + var currentConfig = this.config(); + options = typeof options !== 'function' && options || {}; + if (!options.name) { + options.name = options.name || currentConfig.name; + options.storeName = options.storeName || currentConfig.storeName; + } + + var self = this; + var promise; + if (!options.name) { + promise = Promise$1.reject('Invalid arguments'); + } else { + var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db; + + var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) { + var dbContext = dbContexts[options.name]; + var forages = dbContext.forages; + dbContext.db = db; + for (var i = 0; i < forages.length; i++) { + forages[i]._dbInfo.db = db; + } + return db; + }); + + if (!options.storeName) { + promise = dbPromise.then(function (db) { + _deferReadiness(options); + + var dbContext = dbContexts[options.name]; + var forages = dbContext.forages; + + db.close(); + for (var i = 0; i < forages.length; i++) { + var forage = forages[i]; + forage._dbInfo.db = null; + } + + var dropDBPromise = new Promise$1(function (resolve, reject) { + var req = idb.deleteDatabase(options.name); + + req.onerror = function () { + var db = req.result; + if (db) { + db.close(); + } + reject(req.error); + }; + + req.onblocked = function () { + // Closing all open connections in onversionchange handler should prevent this situation, but if + // we do get here, it just means the request remains pending - eventually it will succeed or error + console.warn('dropInstance blocked for database "' + options.name + '" until all open connections are closed'); + }; + + req.onsuccess = function () { + var db = req.result; + if (db) { + db.close(); + } + resolve(db); + }; + }); + + return dropDBPromise.then(function (db) { + dbContext.db = db; + for (var i = 0; i < forages.length; i++) { + var _forage = forages[i]; + _advanceReadiness(_forage._dbInfo); + } + })["catch"](function (err) { + (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function () {}); + throw err; + }); + }); + } else { + promise = dbPromise.then(function (db) { + if (!db.objectStoreNames.contains(options.storeName)) { + return; + } + + var newVersion = db.version + 1; + + _deferReadiness(options); + + var dbContext = dbContexts[options.name]; + var forages = dbContext.forages; + + db.close(); + for (var i = 0; i < forages.length; i++) { + var forage = forages[i]; + forage._dbInfo.db = null; + forage._dbInfo.version = newVersion; + } + + var dropObjectPromise = new Promise$1(function (resolve, reject) { + var req = idb.open(options.name, newVersion); + + req.onerror = function (err) { + var db = req.result; + db.close(); + reject(err); + }; + + req.onupgradeneeded = function () { + var db = req.result; + db.deleteObjectStore(options.storeName); + }; + + req.onsuccess = function () { + var db = req.result; + db.close(); + resolve(db); + }; + }); + + return dropObjectPromise.then(function (db) { + dbContext.db = db; + for (var j = 0; j < forages.length; j++) { + var _forage2 = forages[j]; + _forage2._dbInfo.db = db; + _advanceReadiness(_forage2._dbInfo); + } + })["catch"](function (err) { + (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function () {}); + throw err; + }); + }); + } + } + + executeCallback(promise, callback); + return promise; + } + + var asyncStorage = { + _driver: 'asyncStorage', + _initStorage: _initStorage, + _support: isIndexedDBValid(), + iterate: iterate, + getItem: getItem, + setItem: setItem, + removeItem: removeItem, + clear: clear, + length: length, + key: key, + keys: keys, + dropInstance: dropInstance + }; + + function isWebSQLValid() { + return typeof openDatabase === 'function'; + } + + // Sadly, the best way to save binary data in WebSQL/localStorage is serializing + // it to Base64, so this is how we store it to prevent very strange errors with less + // verbose ways of binary <-> string data storage. + var BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + + var BLOB_TYPE_PREFIX = '~~local_forage_type~'; + var BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/; + + var SERIALIZED_MARKER = '__lfsc__:'; + var SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length; + + // OMG the serializations! + var TYPE_ARRAYBUFFER = 'arbf'; + var TYPE_BLOB = 'blob'; + var TYPE_INT8ARRAY = 'si08'; + var TYPE_UINT8ARRAY = 'ui08'; + var TYPE_UINT8CLAMPEDARRAY = 'uic8'; + var TYPE_INT16ARRAY = 'si16'; + var TYPE_INT32ARRAY = 'si32'; + var TYPE_UINT16ARRAY = 'ur16'; + var TYPE_UINT32ARRAY = 'ui32'; + var TYPE_FLOAT32ARRAY = 'fl32'; + var TYPE_FLOAT64ARRAY = 'fl64'; + var TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length; + + var toString$1 = Object.prototype.toString; + + function stringToBuffer(serializedString) { + // Fill the string into a ArrayBuffer. + var bufferLength = serializedString.length * 0.75; + var len = serializedString.length; + var i; + var p = 0; + var encoded1, encoded2, encoded3, encoded4; + + if (serializedString[serializedString.length - 1] === '=') { + bufferLength--; + if (serializedString[serializedString.length - 2] === '=') { + bufferLength--; + } + } + + var buffer = new ArrayBuffer(bufferLength); + var bytes = new Uint8Array(buffer); + + for (i = 0; i < len; i += 4) { + encoded1 = BASE_CHARS.indexOf(serializedString[i]); + encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]); + encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]); + encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]); + + /*jslint bitwise: true */ + bytes[p++] = encoded1 << 2 | encoded2 >> 4; + bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; + bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63; + } + return buffer; + } + + // Converts a buffer to a string to store, serialized, in the backend + // storage library. + function bufferToString(buffer) { + // base64-arraybuffer + var bytes = new Uint8Array(buffer); + var base64String = ''; + var i; + + for (i = 0; i < bytes.length; i += 3) { + /*jslint bitwise: true */ + base64String += BASE_CHARS[bytes[i] >> 2]; + base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4]; + base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6]; + base64String += BASE_CHARS[bytes[i + 2] & 63]; + } + + if (bytes.length % 3 === 2) { + base64String = base64String.substring(0, base64String.length - 1) + '='; + } else if (bytes.length % 3 === 1) { + base64String = base64String.substring(0, base64String.length - 2) + '=='; + } + + return base64String; + } + + // Serialize a value, afterwards executing a callback (which usually + // instructs the `setItem()` callback/promise to be executed). This is how + // we store binary data with localStorage. + function serialize(value, callback) { + var valueType = ''; + if (value) { + valueType = toString$1.call(value); + } + + // Cannot use `value instanceof ArrayBuffer` or such here, as these + // checks fail when running the tests using casper.js... + // + // TODO: See why those tests fail and use a better solution. + if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) { + // Convert binary arrays to a string and prefix the string with + // a special marker. + var buffer; + var marker = SERIALIZED_MARKER; + + if (value instanceof ArrayBuffer) { + buffer = value; + marker += TYPE_ARRAYBUFFER; + } else { + buffer = value.buffer; + + if (valueType === '[object Int8Array]') { + marker += TYPE_INT8ARRAY; + } else if (valueType === '[object Uint8Array]') { + marker += TYPE_UINT8ARRAY; + } else if (valueType === '[object Uint8ClampedArray]') { + marker += TYPE_UINT8CLAMPEDARRAY; + } else if (valueType === '[object Int16Array]') { + marker += TYPE_INT16ARRAY; + } else if (valueType === '[object Uint16Array]') { + marker += TYPE_UINT16ARRAY; + } else if (valueType === '[object Int32Array]') { + marker += TYPE_INT32ARRAY; + } else if (valueType === '[object Uint32Array]') { + marker += TYPE_UINT32ARRAY; + } else if (valueType === '[object Float32Array]') { + marker += TYPE_FLOAT32ARRAY; + } else if (valueType === '[object Float64Array]') { + marker += TYPE_FLOAT64ARRAY; + } else { + callback(new Error('Failed to get type for BinaryArray')); + } + } + + callback(marker + bufferToString(buffer)); + } else if (valueType === '[object Blob]') { + // Conver the blob to a binaryArray and then to a string. + var fileReader = new FileReader(); + + fileReader.onload = function () { + // Backwards-compatible prefix for the blob type. + var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result); + + callback(SERIALIZED_MARKER + TYPE_BLOB + str); + }; + + fileReader.readAsArrayBuffer(value); + } else { + try { + callback(JSON.stringify(value)); + } catch (e) { + console.error("Couldn't convert value into a JSON string: ", value); + + callback(null, e); + } + } + } + + // Deserialize data we've inserted into a value column/field. We place + // special markers into our strings to mark them as encoded; this isn't + // as nice as a meta field, but it's the only sane thing we can do whilst + // keeping localStorage support intact. + // + // Oftentimes this will just deserialize JSON content, but if we have a + // special marker (SERIALIZED_MARKER, defined above), we will extract + // some kind of arraybuffer/binary data/typed array out of the string. + function deserialize(value) { + // If we haven't marked this string as being specially serialized (i.e. + // something other than serialized JSON), we can just return it and be + // done with it. + if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) { + return JSON.parse(value); + } + + // The following code deals with deserializing some kind of Blob or + // TypedArray. First we separate out the type of data we're dealing + // with from the data itself. + var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH); + var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH); + + var blobType; + // Backwards-compatible blob type serialization strategy. + // DBs created with older versions of localForage will simply not have the blob type. + if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) { + var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX); + blobType = matcher[1]; + serializedString = serializedString.substring(matcher[0].length); + } + var buffer = stringToBuffer(serializedString); + + // Return the right type based on the code/type set during + // serialization. + switch (type) { + case TYPE_ARRAYBUFFER: + return buffer; + case TYPE_BLOB: + return createBlob([buffer], { type: blobType }); + case TYPE_INT8ARRAY: + return new Int8Array(buffer); + case TYPE_UINT8ARRAY: + return new Uint8Array(buffer); + case TYPE_UINT8CLAMPEDARRAY: + return new Uint8ClampedArray(buffer); + case TYPE_INT16ARRAY: + return new Int16Array(buffer); + case TYPE_UINT16ARRAY: + return new Uint16Array(buffer); + case TYPE_INT32ARRAY: + return new Int32Array(buffer); + case TYPE_UINT32ARRAY: + return new Uint32Array(buffer); + case TYPE_FLOAT32ARRAY: + return new Float32Array(buffer); + case TYPE_FLOAT64ARRAY: + return new Float64Array(buffer); + default: + throw new Error('Unkown type: ' + type); + } + } + + var localforageSerializer = { + serialize: serialize, + deserialize: deserialize, + stringToBuffer: stringToBuffer, + bufferToString: bufferToString + }; + + /* + * Includes code from: + * + * base64-arraybuffer + * https://github.com/niklasvh/base64-arraybuffer + * + * Copyright (c) 2012 Niklas von Hertzen + * Licensed under the MIT license. + */ + + function createDbTable(t, dbInfo, callback, errorCallback) { + t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback); + } + + // Open the WebSQL database (automatically creates one if one didn't + // previously exist), using any options set in the config. + function _initStorage$1(options) { + var self = this; + var dbInfo = { + db: null + }; + + if (options) { + for (var i in options) { + dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i]; + } + } + + var dbInfoPromise = new Promise$1(function (resolve, reject) { + // Open the database; the openDatabase API will automatically + // create it for us if it doesn't exist. + try { + dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size); + } catch (e) { + return reject(e); + } + + // Create our key/value table if it doesn't exist. + dbInfo.db.transaction(function (t) { + createDbTable(t, dbInfo, function () { + self._dbInfo = dbInfo; + resolve(); + }, function (t, error) { + reject(error); + }); + }, reject); + }); + + dbInfo.serializer = localforageSerializer; + return dbInfoPromise; + } + + function tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) { + t.executeSql(sqlStatement, args, callback, function (t, error) { + if (error.code === error.SYNTAX_ERR) { + t.executeSql('SELECT name FROM sqlite_master ' + "WHERE type='table' AND name = ?", [dbInfo.storeName], function (t, results) { + if (!results.rows.length) { + // if the table is missing (was deleted) + // re-create it table and retry + createDbTable(t, dbInfo, function () { + t.executeSql(sqlStatement, args, callback, errorCallback); + }, errorCallback); + } else { + errorCallback(t, error); + } + }, errorCallback); + } else { + errorCallback(t, error); + } + }, errorCallback); + } + + function getItem$1(key, callback) { + var self = this; + + key = normalizeKey(key); + + var promise = new Promise$1(function (resolve, reject) { + self.ready().then(function () { + var dbInfo = self._dbInfo; + dbInfo.db.transaction(function (t) { + tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) { + var result = results.rows.length ? results.rows.item(0).value : null; + + // Check to see if this is serialized content we need to + // unpack. + if (result) { + result = dbInfo.serializer.deserialize(result); + } + + resolve(result); + }, function (t, error) { + reject(error); + }); + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + return promise; + } + + function iterate$1(iterator, callback) { + var self = this; + + var promise = new Promise$1(function (resolve, reject) { + self.ready().then(function () { + var dbInfo = self._dbInfo; + + dbInfo.db.transaction(function (t) { + tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) { + var rows = results.rows; + var length = rows.length; + + for (var i = 0; i < length; i++) { + var item = rows.item(i); + var result = item.value; + + // Check to see if this is serialized content + // we need to unpack. + if (result) { + result = dbInfo.serializer.deserialize(result); + } + + result = iterator(result, item.key, i + 1); + + // void(0) prevents problems with redefinition + // of `undefined`. + if (result !== void 0) { + resolve(result); + return; + } + } + + resolve(); + }, function (t, error) { + reject(error); + }); + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + return promise; + } + + function _setItem(key, value, callback, retriesLeft) { + var self = this; + + key = normalizeKey(key); + + var promise = new Promise$1(function (resolve, reject) { + self.ready().then(function () { + // The localStorage API doesn't return undefined values in an + // "expected" way, so undefined is always cast to null in all + // drivers. See: https://github.com/mozilla/localForage/pull/42 + if (value === undefined) { + value = null; + } + + // Save the original value to pass to the callback. + var originalValue = value; + + var dbInfo = self._dbInfo; + dbInfo.serializer.serialize(value, function (value, error) { + if (error) { + reject(error); + } else { + dbInfo.db.transaction(function (t) { + tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () { + resolve(originalValue); + }, function (t, error) { + reject(error); + }); + }, function (sqlError) { + // The transaction failed; check + // to see if it's a quota error. + if (sqlError.code === sqlError.QUOTA_ERR) { + // We reject the callback outright for now, but + // it's worth trying to re-run the transaction. + // Even if the user accepts the prompt to use + // more storage on Safari, this error will + // be called. + // + // Try to re-run the transaction. + if (retriesLeft > 0) { + resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1])); + return; + } + reject(sqlError); + } + }); + } + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + return promise; + } + + function setItem$1(key, value, callback) { + return _setItem.apply(this, [key, value, callback, 1]); + } + + function removeItem$1(key, callback) { + var self = this; + + key = normalizeKey(key); + + var promise = new Promise$1(function (resolve, reject) { + self.ready().then(function () { + var dbInfo = self._dbInfo; + dbInfo.db.transaction(function (t) { + tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () { + resolve(); + }, function (t, error) { + reject(error); + }); + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + return promise; + } + + // Deletes every item in the table. + // TODO: Find out if this resets the AUTO_INCREMENT number. + function clear$1(callback) { + var self = this; + + var promise = new Promise$1(function (resolve, reject) { + self.ready().then(function () { + var dbInfo = self._dbInfo; + dbInfo.db.transaction(function (t) { + tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () { + resolve(); + }, function (t, error) { + reject(error); + }); + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + return promise; + } + + // Does a simple `COUNT(key)` to get the number of items stored in + // localForage. + function length$1(callback) { + var self = this; + + var promise = new Promise$1(function (resolve, reject) { + self.ready().then(function () { + var dbInfo = self._dbInfo; + dbInfo.db.transaction(function (t) { + // Ahhh, SQL makes this one soooooo easy. + tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) { + var result = results.rows.item(0).c; + resolve(result); + }, function (t, error) { + reject(error); + }); + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + return promise; + } + + // Return the key located at key index X; essentially gets the key from a + // `WHERE id = ?`. This is the most efficient way I can think to implement + // this rarely-used (in my experience) part of the API, but it can seem + // inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so + // the ID of each key will change every time it's updated. Perhaps a stored + // procedure for the `setItem()` SQL would solve this problem? + // TODO: Don't change ID on `setItem()`. + function key$1(n, callback) { + var self = this; + + var promise = new Promise$1(function (resolve, reject) { + self.ready().then(function () { + var dbInfo = self._dbInfo; + dbInfo.db.transaction(function (t) { + tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) { + var result = results.rows.length ? results.rows.item(0).key : null; + resolve(result); + }, function (t, error) { + reject(error); + }); + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + return promise; + } + + function keys$1(callback) { + var self = this; + + var promise = new Promise$1(function (resolve, reject) { + self.ready().then(function () { + var dbInfo = self._dbInfo; + dbInfo.db.transaction(function (t) { + tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) { + var keys = []; + + for (var i = 0; i < results.rows.length; i++) { + keys.push(results.rows.item(i).key); + } + + resolve(keys); + }, function (t, error) { + reject(error); + }); + }); + })["catch"](reject); + }); + + executeCallback(promise, callback); + return promise; + } + + // https://www.w3.org/TR/webdatabase/#databases + // > There is no way to enumerate or delete the databases available for an origin from this API. + function getAllStoreNames(db) { + return new Promise$1(function (resolve, reject) { + db.transaction(function (t) { + t.executeSql('SELECT name FROM sqlite_master ' + "WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'", [], function (t, results) { + var storeNames = []; + + for (var i = 0; i < results.rows.length; i++) { + storeNames.push(results.rows.item(i).name); + } + + resolve({ + db: db, + storeNames: storeNames + }); + }, function (t, error) { + reject(error); + }); + }, function (sqlError) { + reject(sqlError); + }); + }); + } + + function dropInstance$1(options, callback) { + callback = getCallback.apply(this, arguments); + + var currentConfig = this.config(); + options = typeof options !== 'function' && options || {}; + if (!options.name) { + options.name = options.name || currentConfig.name; + options.storeName = options.storeName || currentConfig.storeName; + } + + var self = this; + var promise; + if (!options.name) { + promise = Promise$1.reject('Invalid arguments'); + } else { + promise = new Promise$1(function (resolve) { + var db; + if (options.name === currentConfig.name) { + // use the db reference of the current instance + db = self._dbInfo.db; + } else { + db = openDatabase(options.name, '', '', 0); + } + + if (!options.storeName) { + // drop all database tables + resolve(getAllStoreNames(db)); + } else { + resolve({ + db: db, + storeNames: [options.storeName] + }); + } + }).then(function (operationInfo) { + return new Promise$1(function (resolve, reject) { + operationInfo.db.transaction(function (t) { + function dropTable(storeName) { + return new Promise$1(function (resolve, reject) { + t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () { + resolve(); + }, function (t, error) { + reject(error); + }); + }); + } + + var operations = []; + for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) { + operations.push(dropTable(operationInfo.storeNames[i])); + } + + Promise$1.all(operations).then(function () { + resolve(); + })["catch"](function (e) { + reject(e); + }); + }, function (sqlError) { + reject(sqlError); + }); + }); + }); + } + + executeCallback(promise, callback); + return promise; + } + + var webSQLStorage = { + _driver: 'webSQLStorage', + _initStorage: _initStorage$1, + _support: isWebSQLValid(), + iterate: iterate$1, + getItem: getItem$1, + setItem: setItem$1, + removeItem: removeItem$1, + clear: clear$1, + length: length$1, + key: key$1, + keys: keys$1, + dropInstance: dropInstance$1 + }; + + function isLocalStorageValid() { + try { + return typeof localStorage !== 'undefined' && 'setItem' in localStorage && + // in IE8 typeof localStorage.setItem === 'object' + !!localStorage.setItem; + } catch (e) { + return false; + } + } + + function _getKeyPrefix(options, defaultConfig) { + var keyPrefix = options.name + '/'; + + if (options.storeName !== defaultConfig.storeName) { + keyPrefix += options.storeName + '/'; + } + return keyPrefix; + } + + // Check if localStorage throws when saving an item + function checkIfLocalStorageThrows() { + var localStorageTestKey = '_localforage_support_test'; + + try { + localStorage.setItem(localStorageTestKey, true); + localStorage.removeItem(localStorageTestKey); + + return false; + } catch (e) { + return true; + } + } + + // Check if localStorage is usable and allows to save an item + // This method checks if localStorage is usable in Safari Private Browsing + // mode, or in any other case where the available quota for localStorage + // is 0 and there wasn't any saved items yet. + function _isLocalStorageUsable() { + return !checkIfLocalStorageThrows() || localStorage.length > 0; + } + + // Config the localStorage backend, using options set in the config. + function _initStorage$2(options) { + var self = this; + var dbInfo = {}; + if (options) { + for (var i in options) { + dbInfo[i] = options[i]; + } + } + + dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig); + + if (!_isLocalStorageUsable()) { + return Promise$1.reject(); + } + + self._dbInfo = dbInfo; + dbInfo.serializer = localforageSerializer; + + return Promise$1.resolve(); + } + + // Remove all keys from the datastore, effectively destroying all data in + // the app's key/value store! + function clear$2(callback) { + var self = this; + var promise = self.ready().then(function () { + var keyPrefix = self._dbInfo.keyPrefix; + + for (var i = localStorage.length - 1; i >= 0; i--) { + var key = localStorage.key(i); + + if (key.indexOf(keyPrefix) === 0) { + localStorage.removeItem(key); + } + } + }); + + executeCallback(promise, callback); + return promise; + } + + // Retrieve an item from the store. Unlike the original async_storage + // library in Gaia, we don't modify return values at all. If a key's value + // is `undefined`, we pass that value to the callback function. + function getItem$2(key, callback) { + var self = this; + + key = normalizeKey(key); + + var promise = self.ready().then(function () { + var dbInfo = self._dbInfo; + var result = localStorage.getItem(dbInfo.keyPrefix + key); + + // If a result was found, parse it from the serialized + // string into a JS object. If result isn't truthy, the key + // is likely undefined and we'll pass it straight to the + // callback. + if (result) { + result = dbInfo.serializer.deserialize(result); + } + + return result; + }); + + executeCallback(promise, callback); + return promise; + } + + // Iterate over all items in the store. + function iterate$2(iterator, callback) { + var self = this; + + var promise = self.ready().then(function () { + var dbInfo = self._dbInfo; + var keyPrefix = dbInfo.keyPrefix; + var keyPrefixLength = keyPrefix.length; + var length = localStorage.length; + + // We use a dedicated iterator instead of the `i` variable below + // so other keys we fetch in localStorage aren't counted in + // the `iterationNumber` argument passed to the `iterate()` + // callback. + // + // See: github.com/mozilla/localForage/pull/435#discussion_r38061530 + var iterationNumber = 1; + + for (var i = 0; i < length; i++) { + var key = localStorage.key(i); + if (key.indexOf(keyPrefix) !== 0) { + continue; + } + var value = localStorage.getItem(key); + + // If a result was found, parse it from the serialized + // string into a JS object. If result isn't truthy, the + // key is likely undefined and we'll pass it straight + // to the iterator. + if (value) { + value = dbInfo.serializer.deserialize(value); + } + + value = iterator(value, key.substring(keyPrefixLength), iterationNumber++); + + if (value !== void 0) { + return value; + } + } + }); + + executeCallback(promise, callback); + return promise; + } + + // Same as localStorage's key() method, except takes a callback. + function key$2(n, callback) { + var self = this; + var promise = self.ready().then(function () { + var dbInfo = self._dbInfo; + var result; + try { + result = localStorage.key(n); + } catch (error) { + result = null; + } + + // Remove the prefix from the key, if a key is found. + if (result) { + result = result.substring(dbInfo.keyPrefix.length); + } + + return result; + }); + + executeCallback(promise, callback); + return promise; + } + + function keys$2(callback) { + var self = this; + var promise = self.ready().then(function () { + var dbInfo = self._dbInfo; + var length = localStorage.length; + var keys = []; + + for (var i = 0; i < length; i++) { + var itemKey = localStorage.key(i); + if (itemKey.indexOf(dbInfo.keyPrefix) === 0) { + keys.push(itemKey.substring(dbInfo.keyPrefix.length)); + } + } + + return keys; + }); + + executeCallback(promise, callback); + return promise; + } + + // Supply the number of keys in the datastore to the callback function. + function length$2(callback) { + var self = this; + var promise = self.keys().then(function (keys) { + return keys.length; + }); + + executeCallback(promise, callback); + return promise; + } + + // Remove an item from the store, nice and simple. + function removeItem$2(key, callback) { + var self = this; + + key = normalizeKey(key); + + var promise = self.ready().then(function () { + var dbInfo = self._dbInfo; + localStorage.removeItem(dbInfo.keyPrefix + key); + }); + + executeCallback(promise, callback); + return promise; + } + + // Set a key's value and run an optional callback once the value is set. + // Unlike Gaia's implementation, the callback function is passed the value, + // in case you want to operate on that value only after you're sure it + // saved, or something like that. + function setItem$2(key, value, callback) { + var self = this; + + key = normalizeKey(key); + + var promise = self.ready().then(function () { + // Convert undefined values to null. + // https://github.com/mozilla/localForage/pull/42 + if (value === undefined) { + value = null; + } + + // Save the original value to pass to the callback. + var originalValue = value; + + return new Promise$1(function (resolve, reject) { + var dbInfo = self._dbInfo; + dbInfo.serializer.serialize(value, function (value, error) { + if (error) { + reject(error); + } else { + try { + localStorage.setItem(dbInfo.keyPrefix + key, value); + resolve(originalValue); + } catch (e) { + // localStorage capacity exceeded. + // TODO: Make this a specific error/event. + if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') { + reject(e); + } + reject(e); + } + } + }); + }); + }); + + executeCallback(promise, callback); + return promise; + } + + function dropInstance$2(options, callback) { + callback = getCallback.apply(this, arguments); + + options = typeof options !== 'function' && options || {}; + if (!options.name) { + var currentConfig = this.config(); + options.name = options.name || currentConfig.name; + options.storeName = options.storeName || currentConfig.storeName; + } + + var self = this; + var promise; + if (!options.name) { + promise = Promise$1.reject('Invalid arguments'); + } else { + promise = new Promise$1(function (resolve) { + if (!options.storeName) { + resolve(options.name + '/'); + } else { + resolve(_getKeyPrefix(options, self._defaultConfig)); + } + }).then(function (keyPrefix) { + for (var i = localStorage.length - 1; i >= 0; i--) { + var key = localStorage.key(i); + + if (key.indexOf(keyPrefix) === 0) { + localStorage.removeItem(key); + } + } + }); + } + + executeCallback(promise, callback); + return promise; + } + + var localStorageWrapper = { + _driver: 'localStorageWrapper', + _initStorage: _initStorage$2, + _support: isLocalStorageValid(), + iterate: iterate$2, + getItem: getItem$2, + setItem: setItem$2, + removeItem: removeItem$2, + clear: clear$2, + length: length$2, + key: key$2, + keys: keys$2, + dropInstance: dropInstance$2 + }; + + var sameValue = function sameValue(x, y) { + return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y); + }; + + var includes = function includes(array, searchElement) { + var len = array.length; + var i = 0; + while (i < len) { + if (sameValue(array[i], searchElement)) { + return true; + } + i++; + } + + return false; + }; + + var isArray = Array.isArray || function (arg) { + return Object.prototype.toString.call(arg) === '[object Array]'; + }; + + // Drivers are stored here when `defineDriver()` is called. + // They are shared across all instances of localForage. + var DefinedDrivers = {}; + + var DriverSupport = {}; + + var DefaultDrivers = { + INDEXEDDB: asyncStorage, + WEBSQL: webSQLStorage, + LOCALSTORAGE: localStorageWrapper + }; + + var DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver]; + + var OptionalDriverMethods = ['dropInstance']; + + var LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods); + + var DefaultConfig = { + description: '', + driver: DefaultDriverOrder.slice(), + name: 'localforage', + // Default DB size is _JUST UNDER_ 5MB, as it's the highest size + // we can use without a prompt. + size: 4980736, + storeName: 'keyvaluepairs', + version: 1.0 + }; + + function callWhenReady(localForageInstance, libraryMethod) { + localForageInstance[libraryMethod] = function () { + var _args = arguments; + return localForageInstance.ready().then(function () { + return localForageInstance[libraryMethod].apply(localForageInstance, _args); + }); + }; + } + + function extend() { + for (var i = 1; i < arguments.length; i++) { + var arg = arguments[i]; + + if (arg) { + for (var _key in arg) { + if (arg.hasOwnProperty(_key)) { + if (isArray(arg[_key])) { + arguments[0][_key] = arg[_key].slice(); + } else { + arguments[0][_key] = arg[_key]; + } + } + } + } + } + + return arguments[0]; + } + + var LocalForage = function () { + function LocalForage(options) { + _classCallCheck(this, LocalForage); + + for (var driverTypeKey in DefaultDrivers) { + if (DefaultDrivers.hasOwnProperty(driverTypeKey)) { + var driver = DefaultDrivers[driverTypeKey]; + var driverName = driver._driver; + this[driverTypeKey] = driverName; + + if (!DefinedDrivers[driverName]) { + // we don't need to wait for the promise, + // since the default drivers can be defined + // in a blocking manner + this.defineDriver(driver); + } + } + } + + this._defaultConfig = extend({}, DefaultConfig); + this._config = extend({}, this._defaultConfig, options); + this._driverSet = null; + this._initDriver = null; + this._ready = false; + this._dbInfo = null; + + this._wrapLibraryMethodsWithReady(); + this.setDriver(this._config.driver)["catch"](function () {}); + } + + // Set any config values for localForage; can be called anytime before + // the first API call (e.g. `getItem`, `setItem`). + // We loop through options so we don't overwrite existing config + // values. + + + LocalForage.prototype.config = function config(options) { + // If the options argument is an object, we use it to set values. + // Otherwise, we return either a specified config value or all + // config values. + if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') { + // If localforage is ready and fully initialized, we can't set + // any new configuration values. Instead, we return an error. + if (this._ready) { + return new Error("Can't call config() after localforage " + 'has been used.'); + } + + for (var i in options) { + if (i === 'storeName') { + options[i] = options[i].replace(/\W/g, '_'); + } + + if (i === 'version' && typeof options[i] !== 'number') { + return new Error('Database version must be a number.'); + } + + this._config[i] = options[i]; + } + + // after all config options are set and + // the driver option is used, try setting it + if ('driver' in options && options.driver) { + return this.setDriver(this._config.driver); + } + + return true; + } else if (typeof options === 'string') { + return this._config[options]; + } else { + return this._config; + } + }; + + // Used to define a custom driver, shared across all instances of + // localForage. + + + LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) { + var promise = new Promise$1(function (resolve, reject) { + try { + var driverName = driverObject._driver; + var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver'); + + // A driver name should be defined and not overlap with the + // library-defined, default drivers. + if (!driverObject._driver) { + reject(complianceError); + return; + } + + var driverMethods = LibraryMethods.concat('_initStorage'); + for (var i = 0, len = driverMethods.length; i < len; i++) { + var driverMethodName = driverMethods[i]; + + // when the property is there, + // it should be a method even when optional + var isRequired = !includes(OptionalDriverMethods, driverMethodName); + if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') { + reject(complianceError); + return; + } + } + + var configureMissingMethods = function configureMissingMethods() { + var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) { + return function () { + var error = new Error('Method ' + methodName + ' is not implemented by the current driver'); + var promise = Promise$1.reject(error); + executeCallback(promise, arguments[arguments.length - 1]); + return promise; + }; + }; + + for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) { + var optionalDriverMethod = OptionalDriverMethods[_i]; + if (!driverObject[optionalDriverMethod]) { + driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod); + } + } + }; + + configureMissingMethods(); + + var setDriverSupport = function setDriverSupport(support) { + if (DefinedDrivers[driverName]) { + console.info('Redefining LocalForage driver: ' + driverName); + } + DefinedDrivers[driverName] = driverObject; + DriverSupport[driverName] = support; + // don't use a then, so that we can define + // drivers that have simple _support methods + // in a blocking manner + resolve(); + }; + + if ('_support' in driverObject) { + if (driverObject._support && typeof driverObject._support === 'function') { + driverObject._support().then(setDriverSupport, reject); + } else { + setDriverSupport(!!driverObject._support); + } + } else { + setDriverSupport(true); + } + } catch (e) { + reject(e); + } + }); + + executeTwoCallbacks(promise, callback, errorCallback); + return promise; + }; + + LocalForage.prototype.driver = function driver() { + return this._driver || null; + }; + + LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) { + var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.')); + + executeTwoCallbacks(getDriverPromise, callback, errorCallback); + return getDriverPromise; + }; + + LocalForage.prototype.getSerializer = function getSerializer(callback) { + var serializerPromise = Promise$1.resolve(localforageSerializer); + executeTwoCallbacks(serializerPromise, callback); + return serializerPromise; + }; + + LocalForage.prototype.ready = function ready(callback) { + var self = this; + + var promise = self._driverSet.then(function () { + if (self._ready === null) { + self._ready = self._initDriver(); + } + + return self._ready; + }); + + executeTwoCallbacks(promise, callback, callback); + return promise; + }; + + LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) { + var self = this; + + if (!isArray(drivers)) { + drivers = [drivers]; + } + + var supportedDrivers = this._getSupportedDrivers(drivers); + + function setDriverToConfig() { + self._config.driver = self.driver(); + } + + function extendSelfWithDriver(driver) { + self._extend(driver); + setDriverToConfig(); + + self._ready = self._initStorage(self._config); + return self._ready; + } + + function initDriver(supportedDrivers) { + return function () { + var currentDriverIndex = 0; + + function driverPromiseLoop() { + while (currentDriverIndex < supportedDrivers.length) { + var driverName = supportedDrivers[currentDriverIndex]; + currentDriverIndex++; + + self._dbInfo = null; + self._ready = null; + + return self.getDriver(driverName).then(extendSelfWithDriver)["catch"](driverPromiseLoop); + } + + setDriverToConfig(); + var error = new Error('No available storage method found.'); + self._driverSet = Promise$1.reject(error); + return self._driverSet; + } + + return driverPromiseLoop(); + }; + } + + // There might be a driver initialization in progress + // so wait for it to finish in order to avoid a possible + // race condition to set _dbInfo + var oldDriverSetDone = this._driverSet !== null ? this._driverSet["catch"](function () { + return Promise$1.resolve(); + }) : Promise$1.resolve(); + + this._driverSet = oldDriverSetDone.then(function () { + var driverName = supportedDrivers[0]; + self._dbInfo = null; + self._ready = null; + + return self.getDriver(driverName).then(function (driver) { + self._driver = driver._driver; + setDriverToConfig(); + self._wrapLibraryMethodsWithReady(); + self._initDriver = initDriver(supportedDrivers); + }); + })["catch"](function () { + setDriverToConfig(); + var error = new Error('No available storage method found.'); + self._driverSet = Promise$1.reject(error); + return self._driverSet; + }); + + executeTwoCallbacks(this._driverSet, callback, errorCallback); + return this._driverSet; + }; + + LocalForage.prototype.supports = function supports(driverName) { + return !!DriverSupport[driverName]; + }; + + LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) { + extend(this, libraryMethodsAndProperties); + }; + + LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) { + var supportedDrivers = []; + for (var i = 0, len = drivers.length; i < len; i++) { + var driverName = drivers[i]; + if (this.supports(driverName)) { + supportedDrivers.push(driverName); + } + } + return supportedDrivers; + }; + + LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() { + // Add a stub for each driver API method that delays the call to the + // corresponding driver method until localForage is ready. These stubs + // will be replaced by the driver methods as soon as the driver is + // loaded, so there is no performance impact. + for (var i = 0, len = LibraryMethods.length; i < len; i++) { + callWhenReady(this, LibraryMethods[i]); + } + }; + + LocalForage.prototype.createInstance = function createInstance(options) { + return new LocalForage(options); + }; + + return LocalForage; + }(); + + // The actual localForage object that we expose as a module or via a + // global. It's extended by pulling in one of our other libraries. + + + var localforage_js = new LocalForage(); + + module.exports = localforage_js; + + },{"3":3}]},{},[4])(4) + }); +} (localforage$1, localforage$1.exports)); + +var localforageExports = localforage$1.exports; +var localforage = /*@__PURE__*/getDefaultExportFromCjs(localforageExports); /** Simpler wrapper for a file-backed cache for arbitrary metadata. */ class LocalStorageCache { @@ -12394,7 +12558,7 @@ function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) { }; } -var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLy8gdGhlc2UgYXJlbid0IHJlYWxseSBwcml2YXRlLCBidXQgbm9yIGFyZSB0aGV5IHJlYWxseSB1c2VmdWwgdG8gZG9jdW1lbnQKCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBMdXhvbkVycm9yIGV4dGVuZHMgRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkRGF0ZVRpbWVFcnJvciBleHRlbmRzIEx1eG9uRXJyb3IgewogICAgY29uc3RydWN0b3IocmVhc29uKSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIERhdGVUaW1lOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgY2xhc3MgSW52YWxpZEludGVydmFsRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHsKICAgIGNvbnN0cnVjdG9yKHJlYXNvbikgewogICAgICBzdXBlcihgSW52YWxpZCBJbnRlcnZhbDogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIEludmFsaWREdXJhdGlvbkVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24pIHsKICAgICAgc3VwZXIoYEludmFsaWQgRHVyYXRpb246ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkVW5pdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3Rvcih1bml0KSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIHVuaXQgJHt1bml0fWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBab25lSXNBYnN0cmFjdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgc3VwZXIoIlpvbmUgaXMgYW4gYWJzdHJhY3QgY2xhc3MiKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNvbnN0IG4gPSAibnVtZXJpYyIsCiAgICBzID0gInNob3J0IiwKICAgIGwgPSAibG9uZyI7CgogIGNvbnN0IERBVEVfU0hPUlQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IG4sCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRURfV0lUSF9XRUVLREFZID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBzLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogcywKICB9OwoKICBjb25zdCBEQVRFX0ZVTEwgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IGwsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9IVUdFID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICB9OwoKICBjb25zdCBUSU1FX1NJTVBMRSA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgVElNRV9XSVRIX1NFQ09ORFMgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgdGltZVpvbmVOYW1lOiBzLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9MT05HX09GRlNFVCA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgY29uc3QgVElNRV8yNF9TSU1QTEUgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfU0VDT05EUyA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICBob3VyQ3ljbGU6ICJoMjMiLAogIH07CgogIGNvbnN0IFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogbCwKICB9OwoKICBjb25zdCBEQVRFVElNRV9TSE9SVCA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbiwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBuLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHNlY29uZDogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICB3ZWVrZGF5OiBzLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IHMsCiAgfTsKCiAgY29uc3QgREFURVRJTUVfSFVHRSA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIHdlZWtkYXk6IGwsCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgdGltZVpvbmVOYW1lOiBsLAogIH07CgogIGNvbnN0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgLyoqCiAgICogQGludGVyZmFjZQogICAqLwogIGNsYXNzIFpvbmUgewogICAgLyoqCiAgICAgKiBUaGUgdHlwZSBvZiB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB0eXBlKCkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhpcyB6b25lLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICBnZXQgaWFuYU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLm5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIG9mZnNldCBpcyBrbm93biB0byBiZSBmaXhlZCBmb3IgdGhlIHdob2xlIHllYXIuCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyBjb21tb24gbmFtZSAoc3VjaCBhcyBFU1QpIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBuYW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gYWZmZWN0IHRoZSBmb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmZvcm1hdCAtIFdoYXQgc3R5bGUgb2Ygb2Zmc2V0IHRvIHJldHVybi4gQWNjZXB0cyAnbG9uZycgb3IgJ3Nob3J0Jy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmxvY2FsZSAtIFdoYXQgbG9jYWxlIHRvIHJldHVybiB0aGUgb2Zmc2V0IG5hbWUgaW4uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIG9mZnNldE5hbWUodHMsIG9wdHMpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG9mZnNldCdzIHZhbHVlIGFzIGEgc3RyaW5nCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBvZmZzZXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0cyAnbmFycm93JywgJ3Nob3J0Jywgb3IgJ3RlY2hpZScuIFJldHVybmluZyAnKzYnLCAnKzA2OjAwJywgb3IgJyswNjAwJyByZXNwZWN0aXZlbHkKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgZm9yIHRoaXMgem9uZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC4KICAgICAqIEBhYnN0cmFjdAogICAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBjb21wdXRlIHRoZSBvZmZzZXQKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgZXF1YWwgdG8gYW5vdGhlciB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7Wm9uZX0gb3RoZXJab25lIC0gdGhlIHpvbmUgdG8gY29tcGFyZQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyWm9uZSkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIHZhbGlkLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uJDEgPSBudWxsOwoKICAvKioKICAgKiBSZXByZXNlbnRzIHRoZSBsb2NhbCB6b25lIGZvciB0aGlzIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgU3lzdGVtWm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGxvY2FsIHpvbmUKICAgICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24kMSA9PT0gbnVsbCkgewogICAgICAgIHNpbmdsZXRvbiQxID0gbmV3IFN5c3RlbVpvbmUoKTsKICAgICAgfQogICAgICByZXR1cm4gc2luZ2xldG9uJDE7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gInN5c3RlbSI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVW5pdmVyc2FsKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldE5hbWUodHMsIHsgZm9ybWF0LCBsb2NhbGUgfSkgewogICAgICByZXR1cm4gcGFyc2Vab25lSW5mbyh0cywgZm9ybWF0LCBsb2NhbGUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHJldHVybiAtbmV3IERhdGUodHMpLmdldFRpbWV6b25lT2Zmc2V0KCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAic3lzdGVtIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgbGV0IGR0ZkNhY2hlID0ge307CiAgZnVuY3Rpb24gbWFrZURURih6b25lKSB7CiAgICBpZiAoIWR0ZkNhY2hlW3pvbmVdKSB7CiAgICAgIGR0ZkNhY2hlW3pvbmVdID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIiwgewogICAgICAgIGhvdXIxMjogZmFsc2UsCiAgICAgICAgdGltZVpvbmU6IHpvbmUsCiAgICAgICAgeWVhcjogIm51bWVyaWMiLAogICAgICAgIG1vbnRoOiAiMi1kaWdpdCIsCiAgICAgICAgZGF5OiAiMi1kaWdpdCIsCiAgICAgICAgaG91cjogIjItZGlnaXQiLAogICAgICAgIG1pbnV0ZTogIjItZGlnaXQiLAogICAgICAgIHNlY29uZDogIjItZGlnaXQiLAogICAgICAgIGVyYTogInNob3J0IiwKICAgICAgfSk7CiAgICB9CiAgICByZXR1cm4gZHRmQ2FjaGVbem9uZV07CiAgfQoKICBjb25zdCB0eXBlVG9Qb3MgPSB7CiAgICB5ZWFyOiAwLAogICAgbW9udGg6IDEsCiAgICBkYXk6IDIsCiAgICBlcmE6IDMsCiAgICBob3VyOiA0LAogICAgbWludXRlOiA1LAogICAgc2Vjb25kOiA2LAogIH07CgogIGZ1bmN0aW9uIGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSkgewogICAgY29uc3QgZm9ybWF0dGVkID0gZHRmLmZvcm1hdChkYXRlKS5yZXBsYWNlKC9cdTIwMEUvZywgIiIpLAogICAgICBwYXJzZWQgPSAvKFxkKylcLyhcZCspXC8oXGQrKSAoQUR8QkMpLD8gKFxkKyk6KFxkKyk6KFxkKykvLmV4ZWMoZm9ybWF0dGVkKSwKICAgICAgWywgZk1vbnRoLCBmRGF5LCBmWWVhciwgZmFkT3JCYywgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gcGFyc2VkOwogICAgcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmYWRPckJjLCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF07CiAgfQoKICBmdW5jdGlvbiBwYXJ0c09mZnNldChkdGYsIGRhdGUpIHsKICAgIGNvbnN0IGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXRUb1BhcnRzKGRhdGUpOwogICAgY29uc3QgZmlsbGVkID0gW107CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykgewogICAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBmb3JtYXR0ZWRbaV07CiAgICAgIGNvbnN0IHBvcyA9IHR5cGVUb1Bvc1t0eXBlXTsKCiAgICAgIGlmICh0eXBlID09PSAiZXJhIikgewogICAgICAgIGZpbGxlZFtwb3NdID0gdmFsdWU7CiAgICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKHBvcykpIHsKICAgICAgICBmaWxsZWRbcG9zXSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmaWxsZWQ7CiAgfQoKICBsZXQgaWFuYVpvbmVDYWNoZSA9IHt9OwogIC8qKgogICAqIEEgem9uZSBpZGVudGlmaWVkIGJ5IGFuIElBTkEgaWRlbnRpZmllciwgbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgSUFOQVpvbmUgZXh0ZW5kcyBab25lIHsKICAgIC8qKgogICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBab25lIG5hbWUKICAgICAqIEByZXR1cm4ge0lBTkFab25lfQogICAgICovCiAgICBzdGF0aWMgY3JlYXRlKG5hbWUpIHsKICAgICAgaWYgKCFpYW5hWm9uZUNhY2hlW25hbWVdKSB7CiAgICAgICAgaWFuYVpvbmVDYWNoZVtuYW1lXSA9IG5ldyBJQU5BWm9uZShuYW1lKTsKICAgICAgfQogICAgICByZXR1cm4gaWFuYVpvbmVDYWNoZVtuYW1lXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7CiAgICAgIGlhbmFab25lQ2FjaGUgPSB7fTsKICAgICAgZHRmQ2FjaGUgPSB7fTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlzIGEgdmFsaWQgc3BlY2lmaWVyLiBUaGlzIG9ubHkgY2hlY2tzIHRoZSBzdHJpbmcncyBmb3JtYXQsIG5vdCB0aGF0IHRoZSBzcGVjaWZpZXIgaWRlbnRpZmllcyBhIGtub3duIHpvbmU7IHNlZSBpc1ZhbGlkWm9uZSBmb3IgdGhhdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIHN0cmluZyB0byBjaGVjayB2YWxpZGl0eSBvbgogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiQW1lcmljYS9OZXdfWW9yayIpIC8vPT4gdHJ1ZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiU3BvcnR+fmJsb3JwIikgLy89PiBmYWxzZQogICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgcmV0dXJucyBmYWxzZSBmb3Igc29tZSB2YWxpZCBJQU5BIG5hbWVzLiBVc2UgaXNWYWxpZFpvbmUgaW5zdGVhZC4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkU3BlY2lmaWVyKHMpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZFpvbmUocyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHByb3ZpZGVkIHN0cmluZyBpZGVudGlmaWVzIGEgcmVhbCB6b25lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFRoZSBzdHJpbmcgdG8gY2hlY2sKICAgICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKCJBbWVyaWNhL05ld19Zb3JrIikgLy89PiB0cnVlCiAgICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZSgiRmFudGFzaWEvQ2FzdGxlIikgLy89PiBmYWxzZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIlNwb3J0fn5ibG9ycCIpIC8vPT4gZmFsc2UKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkWm9uZSh6b25lKSB7CiAgICAgIGlmICghem9uZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbi1VUyIsIHsgdGltZVpvbmU6IHpvbmUgfSkuZm9ybWF0KCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KCiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy56b25lTmFtZSA9IG5hbWU7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy52YWxpZCA9IElBTkFab25lLmlzVmFsaWRab25lKG5hbWUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJpYW5hIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IG5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7CiAgICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSwgdGhpcy5uYW1lKTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLm9mZnNldCh0cyksIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCh0cykgewogICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpOwoKICAgICAgaWYgKGlzTmFOKGRhdGUpKSByZXR1cm4gTmFOOwoKICAgICAgY29uc3QgZHRmID0gbWFrZURURih0aGlzLm5hbWUpOwogICAgICBsZXQgW3llYXIsIG1vbnRoLCBkYXksIGFkT3JCYywgaG91ciwgbWludXRlLCBzZWNvbmRdID0gZHRmLmZvcm1hdFRvUGFydHMKICAgICAgICA/IHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkKICAgICAgICA6IGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSk7CgogICAgICBpZiAoYWRPckJjID09PSAiQkMiKSB7CiAgICAgICAgeWVhciA9IC1NYXRoLmFicyh5ZWFyKSArIDE7CiAgICAgIH0KCiAgICAgIC8vIGJlY2F1c2Ugd2UncmUgdXNpbmcgaG91cjEyIGFuZCBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDI1NTY0JmNhbj0yJnE9JTIyMjQlM0EwMCUyMiUyMGRhdGV0aW1lZm9ybWF0CiAgICAgIGNvbnN0IGFkanVzdGVkSG91ciA9IGhvdXIgPT09IDI0ID8gMCA6IGhvdXI7CgogICAgICBjb25zdCBhc1VUQyA9IG9ialRvTG9jYWxUUyh7CiAgICAgICAgeWVhciwKICAgICAgICBtb250aCwKICAgICAgICBkYXksCiAgICAgICAgaG91cjogYWRqdXN0ZWRIb3VyLAogICAgICAgIG1pbnV0ZSwKICAgICAgICBzZWNvbmQsCiAgICAgICAgbWlsbGlzZWNvbmQ6IDAsCiAgICAgIH0pOwoKICAgICAgbGV0IGFzVFMgPSArZGF0ZTsKICAgICAgY29uc3Qgb3ZlciA9IGFzVFMgJSAxMDAwOwogICAgICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlcjsKICAgICAgcmV0dXJuIChhc1VUQyAtIGFzVFMpIC8gKDYwICogMTAwMCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiaWFuYSIgJiYgb3RoZXJab25lLm5hbWUgPT09IHRoaXMubmFtZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0aGlzLnZhbGlkOwogICAgfQogIH0KCiAgLy8gdG9kbyAtIHJlbWFwIGNhY2hpbmcKCiAgbGV0IGludGxMRkNhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkTEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBkdGYgPSBpbnRsTEZDYWNoZVtrZXldOwogICAgaWYgKCFkdGYpIHsKICAgICAgZHRmID0gbmV3IEludGwuTGlzdEZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTEZDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsRFRDYWNoZSA9IHt9OwogIGZ1bmN0aW9uIGdldENhY2hlZERURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkgewogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pOwogICAgbGV0IGR0ZiA9IGludGxEVENhY2hlW2tleV07CiAgICBpZiAoIWR0ZikgewogICAgICBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsRFRDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsTnVtQ2FjaGUgPSB7fTsKICBmdW5jdGlvbiBnZXRDYWNoZWRJTkYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBpbmYgPSBpbnRsTnVtQ2FjaGVba2V5XTsKICAgIGlmICghaW5mKSB7CiAgICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTnVtQ2FjaGVba2V5XSA9IGluZjsKICAgIH0KICAgIHJldHVybiBpbmY7CiAgfQoKICBsZXQgaW50bFJlbENhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkUlRGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7CiAgICBjb25zdCB7IGJhc2UsIC4uLmNhY2hlS2V5T3B0cyB9ID0gb3B0czsgLy8gZXhjbHVkZSBgYmFzZWAgZnJvbSB0aGUgb3B0aW9ucwogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgY2FjaGVLZXlPcHRzXSk7CiAgICBsZXQgaW5mID0gaW50bFJlbENhY2hlW2tleV07CiAgICBpZiAoIWluZikgewogICAgICBpbmYgPSBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQobG9jU3RyaW5nLCBvcHRzKTsKICAgICAgaW50bFJlbENhY2hlW2tleV0gPSBpbmY7CiAgICB9CiAgICByZXR1cm4gaW5mOwogIH0KCiAgbGV0IHN5c0xvY2FsZUNhY2hlID0gbnVsbDsKICBmdW5jdGlvbiBzeXN0ZW1Mb2NhbGUoKSB7CiAgICBpZiAoc3lzTG9jYWxlQ2FjaGUpIHsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfSBlbHNlIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VMb2NhbGVTdHJpbmcobG9jYWxlU3RyKSB7CiAgICAvLyBJIHJlYWxseSB3YW50IHRvIGF2b2lkIHdyaXRpbmcgYSBCQ1AgNDcgcGFyc2VyCiAgICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDcKICAgIC8vIEluc3RlYWQsIHdlJ2xsIGRvIHRoaXM6CgogICAgLy8gYSkgaWYgdGhlIHN0cmluZyBoYXMgbm8gLXUgZXh0ZW5zaW9ucywganVzdCBsZWF2ZSBpdCBhbG9uZQogICAgLy8gYikgaWYgaXQgZG9lcywgdXNlIEludGwgdG8gcmVzb2x2ZSBldmVyeXRoaW5nCiAgICAvLyBjKSBpZiBJbnRsIGZhaWxzLCB0cnkgYWdhaW4gd2l0aG91dCB0aGUgLXUKCiAgICAvLyBwcml2YXRlIHN1YnRhZ3MgYW5kIHVuaWNvZGUgc3VidGFncyBoYXZlIG9yZGVyaW5nIHJlcXVpcmVtZW50cywKICAgIC8vIGFuZCB3ZSdyZSBub3QgcHJvcGVybHkgcGFyc2luZyB0aGlzLCBzbyBqdXN0IHN0cmlwIG91dCB0aGUKICAgIC8vIHByaXZhdGUgb25lcyBpZiB0aGV5IGV4aXN0LgogICAgY29uc3QgeEluZGV4ID0gbG9jYWxlU3RyLmluZGV4T2YoIi14LSIpOwogICAgaWYgKHhJbmRleCAhPT0gLTEpIHsKICAgICAgbG9jYWxlU3RyID0gbG9jYWxlU3RyLnN1YnN0cmluZygwLCB4SW5kZXgpOwogICAgfQoKICAgIGNvbnN0IHVJbmRleCA9IGxvY2FsZVN0ci5pbmRleE9mKCItdS0iKTsKICAgIGlmICh1SW5kZXggPT09IC0xKSB7CiAgICAgIHJldHVybiBbbG9jYWxlU3RyXTsKICAgIH0gZWxzZSB7CiAgICAgIGxldCBvcHRpb25zOwogICAgICBsZXQgc2VsZWN0ZWRTdHI7CiAgICAgIHRyeSB7CiAgICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihsb2NhbGVTdHIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gbG9jYWxlU3RyOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgY29uc3Qgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTsKICAgICAgICBvcHRpb25zID0gZ2V0Q2FjaGVkRFRGKHNtYWxsZXIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gc21hbGxlcjsKICAgICAgfQoKICAgICAgY29uc3QgeyBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBvcHRpb25zOwogICAgICByZXR1cm4gW3NlbGVjdGVkU3RyLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyXTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGludGxDb25maWdTdHJpbmcobG9jYWxlU3RyLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSB7CiAgICBpZiAob3V0cHV0Q2FsZW5kYXIgfHwgbnVtYmVyaW5nU3lzdGVtKSB7CiAgICAgIGlmICghbG9jYWxlU3RyLmluY2x1ZGVzKCItdS0iKSkgewogICAgICAgIGxvY2FsZVN0ciArPSAiLXUiOwogICAgICB9CgogICAgICBpZiAob3V0cHV0Q2FsZW5kYXIpIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1jYS0ke291dHB1dENhbGVuZGFyfWA7CiAgICAgIH0KCiAgICAgIGlmIChudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1udS0ke251bWJlcmluZ1N5c3RlbX1gOwogICAgICB9CiAgICAgIHJldHVybiBsb2NhbGVTdHI7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbG9jYWxlU3RyOwogICAgfQogIH0KCiAgZnVuY3Rpb24gbWFwTW9udGhzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxMjsgaSsrKSB7CiAgICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMTYsIGksIDEpOwogICAgICBtcy5wdXNoKGYoZHQpKTsKICAgIH0KICAgIHJldHVybiBtczsKICB9CgogIGZ1bmN0aW9uIG1hcFdlZWtkYXlzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHsKICAgICAgY29uc3QgZHQgPSBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzICsgaSk7CiAgICAgIG1zLnB1c2goZihkdCkpOwogICAgfQogICAgcmV0dXJuIG1zOwogIH0KCiAgZnVuY3Rpb24gbGlzdFN0dWZmKGxvYywgbGVuZ3RoLCBkZWZhdWx0T0ssIGVuZ2xpc2hGbiwgaW50bEZuKSB7CiAgICBjb25zdCBtb2RlID0gbG9jLmxpc3RpbmdNb2RlKGRlZmF1bHRPSyk7CgogICAgaWYgKG1vZGUgPT09ICJlcnJvciIpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICJlbiIpIHsKICAgICAgcmV0dXJuIGVuZ2xpc2hGbihsZW5ndGgpOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIGludGxGbihsZW5ndGgpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gc3VwcG9ydHNGYXN0TnVtYmVycyhsb2MpIHsKICAgIGlmIChsb2MubnVtYmVyaW5nU3lzdGVtICYmIGxvYy5udW1iZXJpbmdTeXN0ZW0gIT09ICJsYXRuIikgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gKAogICAgICAgIGxvYy5udW1iZXJpbmdTeXN0ZW0gPT09ICJsYXRuIiB8fAogICAgICAgICFsb2MubG9jYWxlIHx8CiAgICAgICAgbG9jLmxvY2FsZS5zdGFydHNXaXRoKCJlbiIpIHx8CiAgICAgICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jLmludGwpLnJlc29sdmVkT3B0aW9ucygpLm51bWJlcmluZ1N5c3RlbSA9PT0gImxhdG4iCiAgICAgICk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBQb2x5TnVtYmVyRm9ybWF0dGVyIHsKICAgIGNvbnN0cnVjdG9yKGludGwsIGZvcmNlU2ltcGxlLCBvcHRzKSB7CiAgICAgIHRoaXMucGFkVG8gPSBvcHRzLnBhZFRvIHx8IDA7CiAgICAgIHRoaXMuZmxvb3IgPSBvcHRzLmZsb29yIHx8IGZhbHNlOwoKICAgICAgY29uc3QgeyBwYWRUbywgZmxvb3IsIC4uLm90aGVyT3B0cyB9ID0gb3B0czsKCiAgICAgIGlmICghZm9yY2VTaW1wbGUgfHwgT2JqZWN0LmtleXMob3RoZXJPcHRzKS5sZW5ndGggPiAwKSB7CiAgICAgICAgY29uc3QgaW50bE9wdHMgPSB7IHVzZUdyb3VwaW5nOiBmYWxzZSwgLi4ub3B0cyB9OwogICAgICAgIGlmIChvcHRzLnBhZFRvID4gMCkgaW50bE9wdHMubWluaW11bUludGVnZXJEaWdpdHMgPSBvcHRzLnBhZFRvOwogICAgICAgIHRoaXMuaW5mID0gZ2V0Q2FjaGVkSU5GKGludGwsIGludGxPcHRzKTsKICAgICAgfQogICAgfQoKICAgIGZvcm1hdChpKSB7CiAgICAgIGlmICh0aGlzLmluZikgewogICAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiBpOwogICAgICAgIHJldHVybiB0aGlzLmluZi5mb3JtYXQoZml4ZWQpOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIHRvIG1hdGNoIHRoZSBicm93c2VyJ3MgbnVtYmVyZm9ybWF0dGVyIGRlZmF1bHRzCiAgICAgICAgY29uc3QgZml4ZWQgPSB0aGlzLmZsb29yID8gTWF0aC5mbG9vcihpKSA6IHJvdW5kVG8oaSwgMyk7CiAgICAgICAgcmV0dXJuIHBhZFN0YXJ0KGZpeGVkLCB0aGlzLnBhZFRvKTsKICAgICAgfQogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgUG9seURhdGVGb3JtYXR0ZXIgewogICAgY29uc3RydWN0b3IoZHQsIGludGwsIG9wdHMpIHsKICAgICAgdGhpcy5vcHRzID0gb3B0czsKCiAgICAgIGxldCB6ID0gdW5kZWZpbmVkOwogICAgICBpZiAoZHQuem9uZS5pc1VuaXZlcnNhbCkgewogICAgICAgIC8vIFVUQy04IG9yIEV0Yy9VVEMtOCBhcmUgbm90IHBhcnQgb2YgdHpkYXRhLCBvbmx5IEV0Yy9HTVQrOCBhbmQgdGhlIGxpa2UuCiAgICAgICAgLy8gVGhhdCBpcyB3aHkgZml4ZWQtb2Zmc2V0IFRaIGlzIHNldCB0byB0aGF0IHVubGVzcyBpdCBpczoKICAgICAgICAvLyAxLiBSZXByZXNlbnRpbmcgb2Zmc2V0IDAgd2hlbiBVVEMgaXMgdXNlZCB0byBtYWludGFpbiBwcmV2aW91cyBiZWhhdmlvciBhbmQgZG9lcyBub3QgYmVjb21lIEdNVC4KICAgICAgICAvLyAyLiBVbnN1cHBvcnRlZCBieSB0aGUgYnJvd3NlcjoKICAgICAgICAvLyAgICAtIHNvbWUgZG8gbm90IHN1cHBvcnQgRXRjLwogICAgICAgIC8vICAgIC0gPCBFdGMvR01ULTE0LCA+IEV0Yy9HTVQrMTIsIGFuZCAzMC1taW51dGUgb3IgNDUtbWludXRlIG9mZnNldHMgYXJlIG5vdCBwYXJ0IG9mIHR6ZGF0YQogICAgICAgIGNvbnN0IGdtdE9mZnNldCA9IC0xICogKGR0Lm9mZnNldCAvIDYwKTsKICAgICAgICBjb25zdCBvZmZzZXRaID0gZ210T2Zmc2V0ID49IDAgPyBgRXRjL0dNVCske2dtdE9mZnNldH1gIDogYEV0Yy9HTVQke2dtdE9mZnNldH1gOwogICAgICAgIGlmIChkdC5vZmZzZXQgIT09IDAgJiYgSUFOQVpvbmUuY3JlYXRlKG9mZnNldFopLnZhbGlkKSB7CiAgICAgICAgICB6ID0gb2Zmc2V0WjsKICAgICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gTm90IGFsbCBmaXhlZC1vZmZzZXQgem9uZXMgbGlrZSBFdGMvKzQ6MzAgYXJlIHByZXNlbnQgaW4gdHpkYXRhLgogICAgICAgICAgLy8gU28gd2UgaGF2ZSB0byBtYWtlIGRvLiBUd28gY2FzZXM6CiAgICAgICAgICAvLyAxLiBUaGUgZm9ybWF0IG9wdGlvbnMgdGVsbCB1cyB0byBzaG93IHRoZSB6b25lLiBXZSBjYW4ndCBkbyB0aGF0LCBzbyB0aGUgYmVzdAogICAgICAgICAgLy8gd2UgY2FuIGRvIGlzIGZvcm1hdCB0aGUgZGF0ZSBpbiBVVEMuCiAgICAgICAgICAvLyAyLiBUaGUgZm9ybWF0IG9wdGlvbnMgZG9uJ3QgdGVsbCB1cyB0byBzaG93IHRoZSB6b25lLiBUaGVuIHdlIGNhbiBhZGp1c3QgdGhlbQogICAgICAgICAgLy8gdGhlIHRpbWUgYW5kIHRlbGwgdGhlIGZvcm1hdHRlciB0byBzaG93IGl0IHRvIHVzIGluIFVUQywgc28gdGhhdCB0aGUgdGltZSBpcyByaWdodAogICAgICAgICAgLy8gYW5kIHRoZSBiYWQgem9uZSBkb2Vzbid0IHNob3cgdXAuCiAgICAgICAgICB6ID0gIlVUQyI7CiAgICAgICAgICBpZiAob3B0cy50aW1lWm9uZU5hbWUpIHsKICAgICAgICAgICAgdGhpcy5kdCA9IGR0OwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5kdCA9IGR0Lm9mZnNldCA9PT0gMCA/IGR0IDogRGF0ZVRpbWUuZnJvbU1pbGxpcyhkdC50cyArIGR0Lm9mZnNldCAqIDYwICogMTAwMCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGR0LnpvbmUudHlwZSA9PT0gInN5c3RlbSIpIHsKICAgICAgICB0aGlzLmR0ID0gZHQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5kdCA9IGR0OwogICAgICAgIHogPSBkdC56b25lLm5hbWU7CiAgICAgIH0KCiAgICAgIGNvbnN0IGludGxPcHRzID0geyAuLi50aGlzLm9wdHMgfTsKICAgICAgaW50bE9wdHMudGltZVpvbmUgPSBpbnRsT3B0cy50aW1lWm9uZSB8fCB6OwogICAgICB0aGlzLmR0ZiA9IGdldENhY2hlZERURihpbnRsLCBpbnRsT3B0cyk7CiAgICB9CgogICAgZm9ybWF0KCkgewogICAgICByZXR1cm4gdGhpcy5kdGYuZm9ybWF0KHRoaXMuZHQudG9KU0RhdGUoKSk7CiAgICB9CgogICAgZm9ybWF0VG9QYXJ0cygpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRmLmZvcm1hdFRvUGFydHModGhpcy5kdC50b0pTRGF0ZSgpKTsKICAgIH0KCiAgICByZXNvbHZlZE9wdGlvbnMoKSB7CiAgICAgIHJldHVybiB0aGlzLmR0Zi5yZXNvbHZlZE9wdGlvbnMoKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgY2xhc3MgUG9seVJlbEZvcm1hdHRlciB7CiAgICBjb25zdHJ1Y3RvcihpbnRsLCBpc0VuZ2xpc2gsIG9wdHMpIHsKICAgICAgdGhpcy5vcHRzID0geyBzdHlsZTogImxvbmciLCAuLi5vcHRzIH07CiAgICAgIGlmICghaXNFbmdsaXNoICYmIGhhc1JlbGF0aXZlKCkpIHsKICAgICAgICB0aGlzLnJ0ZiA9IGdldENhY2hlZFJURihpbnRsLCBvcHRzKTsKICAgICAgfQogICAgfQoKICAgIGZvcm1hdChjb3VudCwgdW5pdCkgewogICAgICBpZiAodGhpcy5ydGYpIHsKICAgICAgICByZXR1cm4gdGhpcy5ydGYuZm9ybWF0KGNvdW50LCB1bml0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCB0aGlzLm9wdHMubnVtZXJpYywgdGhpcy5vcHRzLnN0eWxlICE9PSAibG9uZyIpOwogICAgICB9CiAgICB9CgogICAgZm9ybWF0VG9QYXJ0cyhjb3VudCwgdW5pdCkgewogICAgICBpZiAodGhpcy5ydGYpIHsKICAgICAgICByZXR1cm4gdGhpcy5ydGYuZm9ybWF0VG9QYXJ0cyhjb3VudCwgdW5pdCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBMb2NhbGUgewogICAgc3RhdGljIGZyb21PcHRzKG9wdHMpIHsKICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUob3B0cy5sb2NhbGUsIG9wdHMubnVtYmVyaW5nU3lzdGVtLCBvcHRzLm91dHB1dENhbGVuZGFyLCBvcHRzLmRlZmF1bHRUb0VOKTsKICAgIH0KCiAgICBzdGF0aWMgY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhciwgZGVmYXVsdFRvRU4gPSBmYWxzZSkgewogICAgICBjb25zdCBzcGVjaWZpZWRMb2NhbGUgPSBsb2NhbGUgfHwgU2V0dGluZ3MuZGVmYXVsdExvY2FsZTsKICAgICAgLy8gdGhlIHN5c3RlbSBsb2NhbGUgaXMgdXNlZnVsIGZvciBodW1hbiByZWFkYWJsZSBzdHJpbmdzIGJ1dCBhbm5veWluZyBmb3IgcGFyc2luZy9mb3JtYXR0aW5nIGtub3duIGZvcm1hdHMKICAgICAgY29uc3QgbG9jYWxlUiA9IHNwZWNpZmllZExvY2FsZSB8fCAoZGVmYXVsdFRvRU4gPyAiZW4tVVMiIDogc3lzdGVtTG9jYWxlKCkpOwogICAgICBjb25zdCBudW1iZXJpbmdTeXN0ZW1SID0gbnVtYmVyaW5nU3lzdGVtIHx8IFNldHRpbmdzLmRlZmF1bHROdW1iZXJpbmdTeXN0ZW07CiAgICAgIGNvbnN0IG91dHB1dENhbGVuZGFyUiA9IG91dHB1dENhbGVuZGFyIHx8IFNldHRpbmdzLmRlZmF1bHRPdXRwdXRDYWxlbmRhcjsKICAgICAgcmV0dXJuIG5ldyBMb2NhbGUobG9jYWxlUiwgbnVtYmVyaW5nU3lzdGVtUiwgb3V0cHV0Q2FsZW5kYXJSLCBzcGVjaWZpZWRMb2NhbGUpOwogICAgfQoKICAgIHN0YXRpYyByZXNldENhY2hlKCkgewogICAgICBzeXNMb2NhbGVDYWNoZSA9IG51bGw7CiAgICAgIGludGxEVENhY2hlID0ge307CiAgICAgIGludGxOdW1DYWNoZSA9IHt9OwogICAgICBpbnRsUmVsQ2FjaGUgPSB7fTsKICAgIH0KCiAgICBzdGF0aWMgZnJvbU9iamVjdCh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhciB9ID0ge30pIHsKICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKTsKICAgIH0KCiAgICBjb25zdHJ1Y3Rvcihsb2NhbGUsIG51bWJlcmluZywgb3V0cHV0Q2FsZW5kYXIsIHNwZWNpZmllZExvY2FsZSkgewogICAgICBjb25zdCBbcGFyc2VkTG9jYWxlLCBwYXJzZWROdW1iZXJpbmdTeXN0ZW0sIHBhcnNlZE91dHB1dENhbGVuZGFyXSA9IHBhcnNlTG9jYWxlU3RyaW5nKGxvY2FsZSk7CgogICAgICB0aGlzLmxvY2FsZSA9IHBhcnNlZExvY2FsZTsKICAgICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPSBudW1iZXJpbmcgfHwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtIHx8IG51bGw7CiAgICAgIHRoaXMub3V0cHV0Q2FsZW5kYXIgPSBvdXRwdXRDYWxlbmRhciB8fCBwYXJzZWRPdXRwdXRDYWxlbmRhciB8fCBudWxsOwogICAgICB0aGlzLmludGwgPSBpbnRsQ29uZmlnU3RyaW5nKHRoaXMubG9jYWxlLCB0aGlzLm51bWJlcmluZ1N5c3RlbSwgdGhpcy5vdXRwdXRDYWxlbmRhcik7CgogICAgICB0aGlzLndlZWtkYXlzQ2FjaGUgPSB7IGZvcm1hdDoge30sIHN0YW5kYWxvbmU6IHt9IH07CiAgICAgIHRoaXMubW9udGhzQ2FjaGUgPSB7IGZvcm1hdDoge30sIHN0YW5kYWxvbmU6IHt9IH07CiAgICAgIHRoaXMubWVyaWRpZW1DYWNoZSA9IG51bGw7CiAgICAgIHRoaXMuZXJhQ2FjaGUgPSB7fTsKCiAgICAgIHRoaXMuc3BlY2lmaWVkTG9jYWxlID0gc3BlY2lmaWVkTG9jYWxlOwogICAgICB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID0gbnVsbDsKICAgIH0KCiAgICBnZXQgZmFzdE51bWJlcnMoKSB7CiAgICAgIGlmICh0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID09IG51bGwpIHsKICAgICAgICB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID0gc3VwcG9ydHNGYXN0TnVtYmVycyh0aGlzKTsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMuZmFzdE51bWJlcnNDYWNoZWQ7CiAgICB9CgogICAgbGlzdGluZ01vZGUoKSB7CiAgICAgIGNvbnN0IGlzQWN0dWFsbHlFbiA9IHRoaXMuaXNFbmdsaXNoKCk7CiAgICAgIGNvbnN0IGhhc05vV2VpcmRuZXNzID0KICAgICAgICAodGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IG51bGwgfHwgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09ICJsYXRuIikgJiYKICAgICAgICAodGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gbnVsbCB8fCB0aGlzLm91dHB1dENhbGVuZGFyID09PSAiZ3JlZ29yeSIpOwogICAgICByZXR1cm4gaXNBY3R1YWxseUVuICYmIGhhc05vV2VpcmRuZXNzID8gImVuIiA6ICJpbnRsIjsKICAgIH0KCiAgICBjbG9uZShhbHRzKSB7CiAgICAgIGlmICghYWx0cyB8fCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhbHRzKS5sZW5ndGggPT09IDApIHsKICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gTG9jYWxlLmNyZWF0ZSgKICAgICAgICAgIGFsdHMubG9jYWxlIHx8IHRoaXMuc3BlY2lmaWVkTG9jYWxlLAogICAgICAgICAgYWx0cy5udW1iZXJpbmdTeXN0ZW0gfHwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICBhbHRzLm91dHB1dENhbGVuZGFyIHx8IHRoaXMub3V0cHV0Q2FsZW5kYXIsCiAgICAgICAgICBhbHRzLmRlZmF1bHRUb0VOIHx8IGZhbHNlCiAgICAgICAgKTsKICAgICAgfQogICAgfQoKICAgIHJlZGVmYXVsdFRvRU4oYWx0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmNsb25lKHsgLi4uYWx0cywgZGVmYXVsdFRvRU46IHRydWUgfSk7CiAgICB9CgogICAgcmVkZWZhdWx0VG9TeXN0ZW0oYWx0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmNsb25lKHsgLi4uYWx0cywgZGVmYXVsdFRvRU46IGZhbHNlIH0pOwogICAgfQoKICAgIG1vbnRocyhsZW5ndGgsIGZvcm1hdCA9IGZhbHNlLCBkZWZhdWx0T0sgPSB0cnVlKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBkZWZhdWx0T0ssIG1vbnRocywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQgPyB7IG1vbnRoOiBsZW5ndGgsIGRheTogIm51bWVyaWMiIH0gOiB7IG1vbnRoOiBsZW5ndGggfSwKICAgICAgICAgIGZvcm1hdFN0ciA9IGZvcm1hdCA/ICJmb3JtYXQiIDogInN0YW5kYWxvbmUiOwogICAgICAgIGlmICghdGhpcy5tb250aHNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0pIHsKICAgICAgICAgIHRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdID0gbWFwTW9udGhzKChkdCkgPT4gdGhpcy5leHRyYWN0KGR0LCBpbnRsLCAibW9udGgiKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgd2Vla2RheXMobGVuZ3RoLCBmb3JtYXQgPSBmYWxzZSwgZGVmYXVsdE9LID0gdHJ1ZSkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgZGVmYXVsdE9LLCB3ZWVrZGF5cywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQKICAgICAgICAgICAgPyB7IHdlZWtkYXk6IGxlbmd0aCwgeWVhcjogIm51bWVyaWMiLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9CiAgICAgICAgICAgIDogeyB3ZWVrZGF5OiBsZW5ndGggfSwKICAgICAgICAgIGZvcm1hdFN0ciA9IGZvcm1hdCA/ICJmb3JtYXQiIDogInN0YW5kYWxvbmUiOwogICAgICAgIGlmICghdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSA9IG1hcFdlZWtkYXlzKChkdCkgPT4KICAgICAgICAgICAgdGhpcy5leHRyYWN0KGR0LCBpbnRsLCAid2Vla2RheSIpCiAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgbWVyaWRpZW1zKGRlZmF1bHRPSyA9IHRydWUpIHsKICAgICAgcmV0dXJuIGxpc3RTdHVmZigKICAgICAgICB0aGlzLAogICAgICAgIHVuZGVmaW5lZCwKICAgICAgICBkZWZhdWx0T0ssCiAgICAgICAgKCkgPT4gbWVyaWRpZW1zLAogICAgICAgICgpID0+IHsKICAgICAgICAgIC8vIEluIHRoZW9yeSB0aGVyZSBjb3VsZCBiZSBhcmliaXRyYXJ5IGRheSBwZXJpb2RzLiBXZSdyZSBnb25uYSBhc3N1bWUgdGhlcmUgYXJlIGV4YWN0bHkgdHdvCiAgICAgICAgICAvLyBmb3IgQU0gYW5kIFBNLiBUaGlzIGlzIHByb2JhYmx5IHdyb25nLCBidXQgaXQncyBtYWtlcyBwYXJzaW5nIHdheSBlYXNpZXIuCiAgICAgICAgICBpZiAoIXRoaXMubWVyaWRpZW1DYWNoZSkgewogICAgICAgICAgICBjb25zdCBpbnRsID0geyBob3VyOiAibnVtZXJpYyIsIGhvdXJDeWNsZTogImgxMiIgfTsKICAgICAgICAgICAgdGhpcy5tZXJpZGllbUNhY2hlID0gW0RhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMsIDkpLCBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCAxOSldLm1hcCgKICAgICAgICAgICAgICAoZHQpID0+IHRoaXMuZXh0cmFjdChkdCwgaW50bCwgImRheXBlcmlvZCIpCiAgICAgICAgICAgICk7CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIHRoaXMubWVyaWRpZW1DYWNoZTsKICAgICAgICB9CiAgICAgICk7CiAgICB9CgogICAgZXJhcyhsZW5ndGgsIGRlZmF1bHRPSyA9IHRydWUpIHsKICAgICAgcmV0dXJuIGxpc3RTdHVmZih0aGlzLCBsZW5ndGgsIGRlZmF1bHRPSywgZXJhcywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSB7IGVyYTogbGVuZ3RoIH07CgogICAgICAgIC8vIFRoaXMgaXMgcHJvYmxlbWF0aWMuIERpZmZlcmVudCBjYWxlbmRhcnMgYXJlIGdvaW5nIHRvIGRlZmluZSBlcmFzIHRvdGFsbHkgZGlmZmVyZW50bHkuIFdoYXQgSSBuZWVkIGlzIHRoZSBtaW5pbXVtIHNldCBvZiBkYXRlcwogICAgICAgIC8vIHRvIGRlZmluaXRlbHkgZW51bWVyYXRlIHRoZW0uCiAgICAgICAgaWYgKCF0aGlzLmVyYUNhY2hlW2xlbmd0aF0pIHsKICAgICAgICAgIHRoaXMuZXJhQ2FjaGVbbGVuZ3RoXSA9IFtEYXRlVGltZS51dGMoLTQwLCAxLCAxKSwgRGF0ZVRpbWUudXRjKDIwMTcsIDEsIDEpXS5tYXAoKGR0KSA9PgogICAgICAgICAgICB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJlcmEiKQogICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLmVyYUNhY2hlW2xlbmd0aF07CiAgICAgIH0pOwogICAgfQoKICAgIGV4dHJhY3QoZHQsIGludGxPcHRzLCBmaWVsZCkgewogICAgICBjb25zdCBkZiA9IHRoaXMuZHRGb3JtYXR0ZXIoZHQsIGludGxPcHRzKSwKICAgICAgICByZXN1bHRzID0gZGYuZm9ybWF0VG9QYXJ0cygpLAogICAgICAgIG1hdGNoaW5nID0gcmVzdWx0cy5maW5kKChtKSA9PiBtLnR5cGUudG9Mb3dlckNhc2UoKSA9PT0gZmllbGQpOwogICAgICByZXR1cm4gbWF0Y2hpbmcgPyBtYXRjaGluZy52YWx1ZSA6IG51bGw7CiAgICB9CgogICAgbnVtYmVyRm9ybWF0dGVyKG9wdHMgPSB7fSkgewogICAgICAvLyB0aGlzIGZvcmNlc2ltcGxlIG9wdGlvbiBpcyBuZXZlciB1c2VkICh0aGUgb25seSBjYWxsZXIgc2hvcnQtY2lyY3VpdHMgb24gaXQsIGJ1dCBpdCBzZWVtcyBzYWZlciB0byBsZWF2ZSkKICAgICAgLy8gKGluIGNvbnRyYXN0LCB0aGUgcmVzdCBvZiB0aGUgY29uZGl0aW9uIGlzIHVzZWQgaGVhdmlseSkKICAgICAgcmV0dXJuIG5ldyBQb2x5TnVtYmVyRm9ybWF0dGVyKHRoaXMuaW50bCwgb3B0cy5mb3JjZVNpbXBsZSB8fCB0aGlzLmZhc3ROdW1iZXJzLCBvcHRzKTsKICAgIH0KCiAgICBkdEZvcm1hdHRlcihkdCwgaW50bE9wdHMgPSB7fSkgewogICAgICByZXR1cm4gbmV3IFBvbHlEYXRlRm9ybWF0dGVyKGR0LCB0aGlzLmludGwsIGludGxPcHRzKTsKICAgIH0KCiAgICByZWxGb3JtYXR0ZXIob3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiBuZXcgUG9seVJlbEZvcm1hdHRlcih0aGlzLmludGwsIHRoaXMuaXNFbmdsaXNoKCksIG9wdHMpOwogICAgfQoKICAgIGxpc3RGb3JtYXR0ZXIob3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiBnZXRDYWNoZWRMRih0aGlzLmludGwsIG9wdHMpOwogICAgfQoKICAgIGlzRW5nbGlzaCgpIHsKICAgICAgcmV0dXJuICgKICAgICAgICB0aGlzLmxvY2FsZSA9PT0gImVuIiB8fAogICAgICAgIHRoaXMubG9jYWxlLnRvTG93ZXJDYXNlKCkgPT09ICJlbi11cyIgfHwKICAgICAgICBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmludGwpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZS5zdGFydHNXaXRoKCJlbi11cyIpCiAgICAgICk7CiAgICB9CgogICAgZXF1YWxzKG90aGVyKSB7CiAgICAgIHJldHVybiAoCiAgICAgICAgdGhpcy5sb2NhbGUgPT09IG90aGVyLmxvY2FsZSAmJgogICAgICAgIHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBvdGhlci5udW1iZXJpbmdTeXN0ZW0gJiYKICAgICAgICB0aGlzLm91dHB1dENhbGVuZGFyID09PSBvdGhlci5vdXRwdXRDYWxlbmRhcgogICAgICApOwogICAgfQogIH0KCiAgbGV0IHNpbmdsZXRvbiA9IG51bGw7CgogIC8qKgogICAqIEEgem9uZSB3aXRoIGEgZml4ZWQgb2Zmc2V0IChtZWFuaW5nIG5vIERTVCkKICAgKiBAaW1wbGVtZW50cyB7Wm9uZX0KICAgKi8KICBjbGFzcyBGaXhlZE9mZnNldFpvbmUgZXh0ZW5kcyBab25lIHsKICAgIC8qKgogICAgICogR2V0IGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIFVUQwogICAgICogQHJldHVybiB7Rml4ZWRPZmZzZXRab25lfQogICAgICovCiAgICBzdGF0aWMgZ2V0IHV0Y0luc3RhbmNlKCkgewogICAgICBpZiAoc2luZ2xldG9uID09PSBudWxsKSB7CiAgICAgICAgc2luZ2xldG9uID0gbmV3IEZpeGVkT2Zmc2V0Wm9uZSgwKTsKICAgICAgfQogICAgICByZXR1cm4gc2luZ2xldG9uOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGFuIGluc3RhbmNlIHdpdGggYSBzcGVjaWZpZWQgb2Zmc2V0CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0IC0gVGhlIG9mZnNldCBpbiBtaW51dGVzCiAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBpbnN0YW5jZShvZmZzZXQpIHsKICAgICAgcmV0dXJuIG9mZnNldCA9PT0gMCA/IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZSA6IG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBhbiBpbnN0YW5jZSBvZiBGaXhlZE9mZnNldFpvbmUgZnJvbSBhIFVUQyBvZmZzZXQgc3RyaW5nLCBsaWtlICJVVEMrNiIKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIG9mZnNldCBzdHJpbmcgdG8gcGFyc2UKICAgICAqIEBleGFtcGxlIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcigiVVRDKzYiKQogICAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKCJVVEMrMDYiKQogICAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKCJVVEMtNjowMCIpCiAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBwYXJzZVNwZWNpZmllcihzKSB7CiAgICAgIGlmIChzKSB7CiAgICAgICAgY29uc3QgciA9IHMubWF0Y2goL151dGMoPzooWystXVxkezEsMn0pKD86OihcZHsyfSkpPyk/JC9pKTsKICAgICAgICBpZiAocikgewogICAgICAgICAgcmV0dXJuIG5ldyBGaXhlZE9mZnNldFpvbmUoc2lnbmVkT2Zmc2V0KHJbMV0sIHJbMl0pKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgY29uc3RydWN0b3Iob2Zmc2V0KSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy5maXhlZCA9IG9mZnNldDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IHR5cGUoKSB7CiAgICAgIHJldHVybiAiZml4ZWQiOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuZml4ZWQgPT09IDAgPyAiVVRDIiA6IGBVVEMke2Zvcm1hdE9mZnNldCh0aGlzLmZpeGVkLCAibmFycm93Iil9YDsKICAgIH0KCiAgICBnZXQgaWFuYU5hbWUoKSB7CiAgICAgIGlmICh0aGlzLmZpeGVkID09PSAwKSB7CiAgICAgICAgcmV0dXJuICJFdGMvVVRDIjsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gYEV0Yy9HTVQke2Zvcm1hdE9mZnNldCgtdGhpcy5maXhlZCwgIm5hcnJvdyIpfWA7CiAgICAgIH0KICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSgpIHsKICAgICAgcmV0dXJuIHRoaXMubmFtZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLmZpeGVkLCBmb3JtYXQpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLmZpeGVkOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBlcXVhbHMob3RoZXJab25lKSB7CiAgICAgIHJldHVybiBvdGhlclpvbmUudHlwZSA9PT0gImZpeGVkIiAmJiBvdGhlclpvbmUuZml4ZWQgPT09IHRoaXMuZml4ZWQ7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIC8qKgogICAqIEEgem9uZSB0aGF0IGZhaWxlZCB0byBwYXJzZS4gWW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGluc3RhbnRpYXRlIHRoaXMuCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgSW52YWxpZFpvbmUgZXh0ZW5kcyBab25lIHsKICAgIGNvbnN0cnVjdG9yKHpvbmVOYW1lKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiAgQHByaXZhdGUgKi8KICAgICAgdGhpcy56b25lTmFtZSA9IHpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJpbnZhbGlkIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IG5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSgpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGZvcm1hdE9mZnNldCgpIHsKICAgICAgcmV0dXJuICIiOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXQoKSB7CiAgICAgIHJldHVybiBOYU47CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscygpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNWYWxpZCgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gbm9ybWFsaXplWm9uZShpbnB1dCwgZGVmYXVsdFpvbmUpIHsKICAgIGlmIChpc1VuZGVmaW5lZChpbnB1dCkgfHwgaW5wdXQgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIGRlZmF1bHRab25lOwogICAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIFpvbmUpIHsKICAgICAgcmV0dXJuIGlucHV0OwogICAgfSBlbHNlIGlmIChpc1N0cmluZyhpbnB1dCkpIHsKICAgICAgY29uc3QgbG93ZXJlZCA9IGlucHV0LnRvTG93ZXJDYXNlKCk7CiAgICAgIGlmIChsb3dlcmVkID09PSAiZGVmYXVsdCIpIHJldHVybiBkZWZhdWx0Wm9uZTsKICAgICAgZWxzZSBpZiAobG93ZXJlZCA9PT0gImxvY2FsIiB8fCBsb3dlcmVkID09PSAic3lzdGVtIikgcmV0dXJuIFN5c3RlbVpvbmUuaW5zdGFuY2U7CiAgICAgIGVsc2UgaWYgKGxvd2VyZWQgPT09ICJ1dGMiIHx8IGxvd2VyZWQgPT09ICJnbXQiKSByZXR1cm4gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlOwogICAgICBlbHNlIHJldHVybiBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIobG93ZXJlZCkgfHwgSUFOQVpvbmUuY3JlYXRlKGlucHV0KTsKICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIoaW5wdXQpKSB7CiAgICAgIHJldHVybiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoaW5wdXQpOwogICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICJvYmplY3QiICYmIGlucHV0Lm9mZnNldCAmJiB0eXBlb2YgaW5wdXQub2Zmc2V0ID09PSAibnVtYmVyIikgewogICAgICAvLyBUaGlzIGlzIGR1bWIsIGJ1dCB0aGUgaW5zdGFuY2VvZiBjaGVjayBhYm92ZSBkb2Vzbid0IHNlZW0gdG8gcmVhbGx5IHdvcmsKICAgICAgLy8gc28gd2UncmUgZHVjayBjaGVja2luZyBpdAogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbmV3IEludmFsaWRab25lKGlucHV0KTsKICAgIH0KICB9CgogIGxldCBub3cgPSAoKSA9PiBEYXRlLm5vdygpLAogICAgZGVmYXVsdFpvbmUgPSAic3lzdGVtIiwKICAgIGRlZmF1bHRMb2NhbGUgPSBudWxsLAogICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bGwsCiAgICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLAogICAgdHdvRGlnaXRDdXRvZmZZZWFyID0gNjAsCiAgICB0aHJvd09uSW52YWxpZDsKCiAgLyoqCiAgICogU2V0dGluZ3MgY29udGFpbnMgc3RhdGljIGdldHRlcnMgYW5kIHNldHRlcnMgdGhhdCBjb250cm9sIEx1eG9uJ3Mgb3ZlcmFsbCBiZWhhdmlvci4gTHV4b24gaXMgYSBzaW1wbGUgbGlicmFyeSB3aXRoIGZldyBvcHRpb25zLCBidXQgdGhlIG9uZXMgaXQgZG9lcyBoYXZlIGxpdmUgaGVyZS4KICAgKi8KICBjbGFzcyBTZXR0aW5ncyB7CiAgICAvKioKICAgICAqIEdldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuCiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgbm93KCkgewogICAgICByZXR1cm4gbm93OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBjYWxsYmFjayBmb3IgcmV0dXJuaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KICAgICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgbnVtYmVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIEVwb2NoIG1pbGxpc2Vjb25kIGNvdW50CiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiBEYXRlLm5vdygpICsgMzAwMCAvLyBwcmV0ZW5kIGl0IGlzIDMgc2Vjb25kcyBpbiB0aGUgZnV0dXJlCiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiAwIC8vIGFsd2F5cyBwcmV0ZW5kIGl0J3MgSmFuIDEsIDE5NzAgYXQgbWlkbmlnaHQgaW4gVVRDIHRpbWUKICAgICAqLwogICAgc3RhdGljIHNldCBub3cobikgewogICAgICBub3cgPSBuOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSB0byBjcmVhdGUgRGF0ZVRpbWVzIGluLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogVXNlIHRoZSB2YWx1ZSAic3lzdGVtIiB0byByZXNldCB0aGlzIHZhbHVlIHRvIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgc2V0IGRlZmF1bHRab25lKHpvbmUpIHsKICAgICAgZGVmYXVsdFpvbmUgPSB6b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSBvYmplY3QgY3VycmVudGx5IHVzZWQgdG8gY3JlYXRlIERhdGVUaW1lcy4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUgKHRoZSBvbmUgc2V0IG9uIHRoZSBtYWNoaW5lIHRoYXQgcnVucyB0aGlzIGNvZGUpLgogICAgICogQHR5cGUge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgZGVmYXVsdFpvbmUoKSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGRlZmF1bHRab25lLCBTeXN0ZW1ab25lLmluc3RhbmNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TG9jYWxlKCkgewogICAgICByZXR1cm4gZGVmYXVsdExvY2FsZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIHNldCBkZWZhdWx0TG9jYWxlKGxvY2FsZSkgewogICAgICBkZWZhdWx0TG9jYWxlID0gbG9jYWxlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IG51bWJlcmluZyBzeXN0ZW0gdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gZGVmYXVsdE51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbShudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBvdXRwdXQgY2FsZW5kYXIgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIoKSB7CiAgICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKG91dHB1dENhbGVuZGFyKSB7CiAgICAgIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjdXRvZmYgeWVhciBhZnRlciB3aGljaCBhIHN0cmluZyBlbmNvZGluZyBhIHllYXIgYXMgdHdvIGRpZ2l0cyBpcyBpbnRlcnByZXRlZCB0byBvY2N1ciBpbiB0aGUgY3VycmVudCBjZW50dXJ5LgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgc3RhdGljIGdldCB0d29EaWdpdEN1dG9mZlllYXIoKSB7CiAgICAgIHJldHVybiB0d29EaWdpdEN1dG9mZlllYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGN1dG9mZiB5ZWFyIGFmdGVyIHdoaWNoIGEgc3RyaW5nIGVuY29kaW5nIGEgeWVhciBhcyB0d28gZGlnaXRzIGlzIGludGVycHJldGVkIHRvIG9jY3VyIGluIHRoZSBjdXJyZW50IGNlbnR1cnkuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gMCAvLyBjdXQtb2ZmIHllYXIgaXMgMCwgc28gYWxsICd5eScgYXJlIGludGVycHJldHRlZCBhcyBjdXJyZW50IGNlbnR1cnkKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDUwIC8vICc0OScgLT4gMTk0OTsgJzUwJyAtPiAyMDUwCiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPSAxOTUwIC8vIGludGVycHJldHRlZCBhcyA1MAogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gMjA1MCAvLyBBTFNPIGludGVycHJldHRlZCBhcyA1MAogICAgICovCiAgICBzdGF0aWMgc2V0IHR3b0RpZ2l0Q3V0b2ZmWWVhcihjdXRvZmZZZWFyKSB7CiAgICAgIHR3b0RpZ2l0Q3V0b2ZmWWVhciA9IGN1dG9mZlllYXIgJSAxMDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgZ2V0IHRocm93T25JbnZhbGlkKCkgewogICAgICByZXR1cm4gdGhyb3dPbkludmFsaWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgc2V0IHRocm93T25JbnZhbGlkKHQpIHsKICAgICAgdGhyb3dPbkludmFsaWQgPSB0OwogICAgfQoKICAgIC8qKgogICAgICogUmVzZXQgTHV4b24ncyBnbG9iYWwgY2FjaGVzLiBTaG91bGQgb25seSBiZSBuZWNlc3NhcnkgaW4gdGVzdGluZyBzY2VuYXJpb3MuCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBzdGF0aWMgcmVzZXRDYWNoZXMoKSB7CiAgICAgIExvY2FsZS5yZXNldENhY2hlKCk7CiAgICAgIElBTkFab25lLnJlc2V0Q2FjaGUoKTsKICAgIH0KICB9CgogIC8qCiAgICBUaGlzIGlzIGp1c3QgYSBqdW5rIGRyYXdlciwgY29udGFpbmluZyBhbnl0aGluZyB1c2VkIGFjcm9zcyBtdWx0aXBsZSBjbGFzc2VzLgogICAgQmVjYXVzZSBMdXhvbiBpcyBzbWFsbChpc2gpLCB0aGlzIHNob3VsZCBzdGF5IHNtYWxsIGFuZCB3ZSB3b24ndCB3b3JyeSBhYm91dCBzcGxpdHRpbmcKICAgIGl0IHVwIGludG8sIHNheSwgcGFyc2luZ1V0aWwuanMgYW5kIGJhc2ljVXRpbC5qcyBhbmQgc28gb24uIEJ1dCB0aGV5IGFyZSBkaXZpZGVkIHVwIGJ5IGZlYXR1cmUgYXJlYS4KICAqLwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICAvLyBUWVBFUwoKICBmdW5jdGlvbiBpc1VuZGVmaW5lZChvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJ1bmRlZmluZWQiOwogIH0KCiAgZnVuY3Rpb24gaXNOdW1iZXIobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAibnVtYmVyIjsKICB9CgogIGZ1bmN0aW9uIGlzSW50ZWdlcihvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJudW1iZXIiICYmIG8gJSAxID09PSAwOwogIH0KCiAgZnVuY3Rpb24gaXNTdHJpbmcobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAic3RyaW5nIjsKICB9CgogIGZ1bmN0aW9uIGlzRGF0ZShvKSB7CiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pID09PSAiW29iamVjdCBEYXRlXSI7CiAgfQoKICAvLyBDQVBBQklMSVRJRVMKCiAgZnVuY3Rpb24gaGFzUmVsYXRpdmUoKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gdHlwZW9mIEludGwgIT09ICJ1bmRlZmluZWQiICYmICEhSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CgogIC8vIE9CSkVDVFMgQU5EIEFSUkFZUwoKICBmdW5jdGlvbiBtYXliZUFycmF5KHRoaW5nKSB7CiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGluZykgPyB0aGluZyA6IFt0aGluZ107CiAgfQoKICBmdW5jdGlvbiBiZXN0QnkoYXJyLCBieSwgY29tcGFyZSkgewogICAgaWYgKGFyci5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0KICAgIHJldHVybiBhcnIucmVkdWNlKChiZXN0LCBuZXh0KSA9PiB7CiAgICAgIGNvbnN0IHBhaXIgPSBbYnkobmV4dCksIG5leHRdOwogICAgICBpZiAoIWJlc3QpIHsKICAgICAgICByZXR1cm4gcGFpcjsKICAgICAgfSBlbHNlIGlmIChjb21wYXJlKGJlc3RbMF0sIHBhaXJbMF0pID09PSBiZXN0WzBdKSB7CiAgICAgICAgcmV0dXJuIGJlc3Q7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhaXI7CiAgICAgIH0KICAgIH0sIG51bGwpWzFdOwogIH0KCiAgZnVuY3Rpb24gcGljayhvYmosIGtleXMpIHsKICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYSwgaykgPT4gewogICAgICBhW2tdID0gb2JqW2tdOwogICAgICByZXR1cm4gYTsKICAgIH0sIHt9KTsKICB9CgogIGZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkgewogICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOwogIH0KCiAgLy8gTlVNQkVSUyBBTkQgU1RSSU5HUwoKICBmdW5jdGlvbiBpbnRlZ2VyQmV0d2Vlbih0aGluZywgYm90dG9tLCB0b3ApIHsKICAgIHJldHVybiBpc0ludGVnZXIodGhpbmcpICYmIHRoaW5nID49IGJvdHRvbSAmJiB0aGluZyA8PSB0b3A7CiAgfQoKICAvLyB4ICUgbiBidXQgdGFrZXMgdGhlIHNpZ24gb2YgbiBpbnN0ZWFkIG9mIHgKICBmdW5jdGlvbiBmbG9vck1vZCh4LCBuKSB7CiAgICByZXR1cm4geCAtIG4gKiBNYXRoLmZsb29yKHggLyBuKTsKICB9CgogIGZ1bmN0aW9uIHBhZFN0YXJ0KGlucHV0LCBuID0gMikgewogICAgY29uc3QgaXNOZWcgPSBpbnB1dCA8IDA7CiAgICBsZXQgcGFkZGVkOwogICAgaWYgKGlzTmVnKSB7CiAgICAgIHBhZGRlZCA9ICItIiArICgiIiArIC1pbnB1dCkucGFkU3RhcnQobiwgIjAiKTsKICAgIH0gZWxzZSB7CiAgICAgIHBhZGRlZCA9ICgiIiArIGlucHV0KS5wYWRTdGFydChuLCAiMCIpOwogICAgfQogICAgcmV0dXJuIHBhZGRlZDsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSW50ZWdlcihzdHJpbmcpIHsKICAgIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09ICIiKSB7CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nLCAxMCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZUZsb2F0aW5nKHN0cmluZykgewogICAgaWYgKGlzVW5kZWZpbmVkKHN0cmluZykgfHwgc3RyaW5nID09PSBudWxsIHx8IHN0cmluZyA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHN0cmluZyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZU1pbGxpcyhmcmFjdGlvbikgewogICAgLy8gUmV0dXJuIHVuZGVmaW5lZCAoaW5zdGVhZCBvZiAwKSBpbiB0aGVzZSBjYXNlcywgd2hlcmUgZnJhY3Rpb24gaXMgbm90IHNldAogICAgaWYgKGlzVW5kZWZpbmVkKGZyYWN0aW9uKSB8fCBmcmFjdGlvbiA9PT0gbnVsbCB8fCBmcmFjdGlvbiA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IGYgPSBwYXJzZUZsb2F0KCIwLiIgKyBmcmFjdGlvbikgKiAxMDAwOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihmKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJvdW5kVG8obnVtYmVyLCBkaWdpdHMsIHRvd2FyZFplcm8gPSBmYWxzZSkgewogICAgY29uc3QgZmFjdG9yID0gMTAgKiogZGlnaXRzLAogICAgICByb3VuZGVyID0gdG93YXJkWmVybyA/IE1hdGgudHJ1bmMgOiBNYXRoLnJvdW5kOwogICAgcmV0dXJuIHJvdW5kZXIobnVtYmVyICogZmFjdG9yKSAvIGZhY3RvcjsKICB9CgogIC8vIERBVEUgQkFTSUNTCgogIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikgewogICAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApOwogIH0KCiAgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7CiAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTsKICB9CgogIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7CiAgICBjb25zdCBtb2RNb250aCA9IGZsb29yTW9kKG1vbnRoIC0gMSwgMTIpICsgMSwKICAgICAgbW9kWWVhciA9IHllYXIgKyAobW9udGggLSBtb2RNb250aCkgLyAxMjsKCiAgICBpZiAobW9kTW9udGggPT09IDIpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIobW9kWWVhcikgPyAyOSA6IDI4OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdW21vZE1vbnRoIC0gMV07CiAgICB9CiAgfQoKICAvLyBjb3ZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBsb2NhbCB0aW1lc3RhbXAgKGVwb2NoLCBidXQgd2l0aCB0aGUgb2Zmc2V0IGJha2VkIGluKQogIGZ1bmN0aW9uIG9ialRvTG9jYWxUUyhvYmopIHsKICAgIGxldCBkID0gRGF0ZS5VVEMoCiAgICAgIG9iai55ZWFyLAogICAgICBvYmoubW9udGggLSAxLAogICAgICBvYmouZGF5LAogICAgICBvYmouaG91ciwKICAgICAgb2JqLm1pbnV0ZSwKICAgICAgb2JqLnNlY29uZCwKICAgICAgb2JqLm1pbGxpc2Vjb25kCiAgICApOwoKICAgIC8vIGZvciBsZWdhY3kgcmVhc29ucywgeWVhcnMgYmV0d2VlbiAwIGFuZCA5OSBhcmUgaW50ZXJwcmV0ZWQgYXMgMTlYWDsgcmV2ZXJ0IHRoYXQKICAgIGlmIChvYmoueWVhciA8IDEwMCAmJiBvYmoueWVhciA+PSAwKSB7CiAgICAgIGQgPSBuZXcgRGF0ZShkKTsKICAgICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTsKICAgIH0KICAgIHJldHVybiArZDsKICB9CgogIGZ1bmN0aW9uIHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcikgewogICAgY29uc3QgcDEgPQogICAgICAgICh3ZWVrWWVhciArCiAgICAgICAgICBNYXRoLmZsb29yKHdlZWtZZWFyIC8gNCkgLQogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDEwMCkgKwogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQwMCkpICUKICAgICAgICA3LAogICAgICBsYXN0ID0gd2Vla1llYXIgLSAxLAogICAgICBwMiA9IChsYXN0ICsgTWF0aC5mbG9vcihsYXN0IC8gNCkgLSBNYXRoLmZsb29yKGxhc3QgLyAxMDApICsgTWF0aC5mbG9vcihsYXN0IC8gNDAwKSkgJSA3OwogICAgcmV0dXJuIHAxID09PSA0IHx8IHAyID09PSAzID8gNTMgOiA1MjsKICB9CgogIGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXIpIHsKICAgIGlmICh5ZWFyID4gOTkpIHsKICAgICAgcmV0dXJuIHllYXI7CiAgICB9IGVsc2UgcmV0dXJuIHllYXIgPiBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPyAxOTAwICsgeWVhciA6IDIwMDAgKyB5ZWFyOwogIH0KCiAgLy8gUEFSU0lORwoKICBmdW5jdGlvbiBwYXJzZVpvbmVJbmZvKHRzLCBvZmZzZXRGb3JtYXQsIGxvY2FsZSwgdGltZVpvbmUgPSBudWxsKSB7CiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpLAogICAgICBpbnRsT3B0cyA9IHsKICAgICAgICBob3VyQ3ljbGU6ICJoMjMiLAogICAgICAgIHllYXI6ICJudW1lcmljIiwKICAgICAgICBtb250aDogIjItZGlnaXQiLAogICAgICAgIGRheTogIjItZGlnaXQiLAogICAgICAgIGhvdXI6ICIyLWRpZ2l0IiwKICAgICAgICBtaW51dGU6ICIyLWRpZ2l0IiwKICAgICAgfTsKCiAgICBpZiAodGltZVpvbmUpIHsKICAgICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTsKICAgIH0KCiAgICBjb25zdCBtb2RpZmllZCA9IHsgdGltZVpvbmVOYW1lOiBvZmZzZXRGb3JtYXQsIC4uLmludGxPcHRzIH07CgogICAgY29uc3QgcGFyc2VkID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBtb2RpZmllZCkKICAgICAgLmZvcm1hdFRvUGFydHMoZGF0ZSkKICAgICAgLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSAidGltZXpvbmVuYW1lIik7CiAgICByZXR1cm4gcGFyc2VkID8gcGFyc2VkLnZhbHVlIDogbnVsbDsKICB9CgogIC8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwCiAgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikgewogICAgbGV0IG9mZkhvdXIgPSBwYXJzZUludChvZmZIb3VyU3RyLCAxMCk7CgogICAgLy8gZG9uJ3QgfHwgdGhpcyBiZWNhdXNlIHdlIHdhbnQgdG8gcHJlc2VydmUgLTAKICAgIGlmIChOdW1iZXIuaXNOYU4ob2ZmSG91cikpIHsKICAgICAgb2ZmSG91ciA9IDA7CiAgICB9CgogICAgY29uc3Qgb2ZmTWluID0gcGFyc2VJbnQob2ZmTWludXRlU3RyLCAxMCkgfHwgMCwKICAgICAgb2ZmTWluU2lnbmVkID0gb2ZmSG91ciA8IDAgfHwgT2JqZWN0LmlzKG9mZkhvdXIsIC0wKSA/IC1vZmZNaW4gOiBvZmZNaW47CiAgICByZXR1cm4gb2ZmSG91ciAqIDYwICsgb2ZmTWluU2lnbmVkOwogIH0KCiAgLy8gQ09FUkNJT04KCiAgZnVuY3Rpb24gYXNOdW1iZXIodmFsdWUpIHsKICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2YWx1ZSk7CiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAiYm9vbGVhbiIgfHwgdmFsdWUgPT09ICIiIHx8IE51bWJlci5pc05hTihudW1lcmljVmFsdWUpKQogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEludmFsaWQgdW5pdCB2YWx1ZSAke3ZhbHVlfWApOwogICAgcmV0dXJuIG51bWVyaWNWYWx1ZTsKICB9CgogIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7fTsKICAgIGZvciAoY29uc3QgdSBpbiBvYmopIHsKICAgICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHsKICAgICAgICBjb25zdCB2ID0gb2JqW3VdOwogICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVyKHUpXSA9IGFzTnVtYmVyKHYpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9mZnNldChvZmZzZXQsIGZvcm1hdCkgewogICAgY29uc3QgaG91cnMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAvIDYwKSksCiAgICAgIG1pbnV0ZXMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAlIDYwKSksCiAgICAgIHNpZ24gPSBvZmZzZXQgPj0gMCA/ICIrIiA6ICItIjsKCiAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIGAke3NpZ259JHtwYWRTdGFydChob3VycywgMil9OiR7cGFkU3RhcnQobWludXRlcywgMil9YDsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke2hvdXJzfSR7bWludXRlcyA+IDAgPyBgOiR7bWludXRlc31gIDogIiJ9YDsKICAgICAgY2FzZSAidGVjaGllIjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX0ke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFZhbHVlIGZvcm1hdCAke2Zvcm1hdH0gaXMgb3V0IG9mIHJhbmdlIGZvciBwcm9wZXJ0eSBmb3JtYXRgKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7CiAgICByZXR1cm4gcGljayhvYmosIFsiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0pOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY29uc3QgbW9udGhzTG9uZyA9IFsKICAgICJKYW51YXJ5IiwKICAgICJGZWJydWFyeSIsCiAgICAiTWFyY2giLAogICAgIkFwcmlsIiwKICAgICJNYXkiLAogICAgIkp1bmUiLAogICAgIkp1bHkiLAogICAgIkF1Z3VzdCIsCiAgICAiU2VwdGVtYmVyIiwKICAgICJPY3RvYmVyIiwKICAgICJOb3ZlbWJlciIsCiAgICAiRGVjZW1iZXIiLAogIF07CgogIGNvbnN0IG1vbnRoc1Nob3J0ID0gWwogICAgIkphbiIsCiAgICAiRmViIiwKICAgICJNYXIiLAogICAgIkFwciIsCiAgICAiTWF5IiwKICAgICJKdW4iLAogICAgIkp1bCIsCiAgICAiQXVnIiwKICAgICJTZXAiLAogICAgIk9jdCIsCiAgICAiTm92IiwKICAgICJEZWMiLAogIF07CgogIGNvbnN0IG1vbnRoc05hcnJvdyA9IFsiSiIsICJGIiwgIk0iLCAiQSIsICJNIiwgIkoiLCAiSiIsICJBIiwgIlMiLCAiTyIsICJOIiwgIkQiXTsKCiAgZnVuY3Rpb24gbW9udGhzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc05hcnJvd107CiAgICAgIGNhc2UgInNob3J0IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc1Nob3J0XTsKICAgICAgY2FzZSAibG9uZyI6CiAgICAgICAgcmV0dXJuIFsuLi5tb250aHNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgY2FzZSAiMi1kaWdpdCI6CiAgICAgICAgcmV0dXJuIFsiMDEiLCAiMDIiLCAiMDMiLCAiMDQiLCAiMDUiLCAiMDYiLCAiMDciLCAiMDgiLCAiMDkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGNvbnN0IHdlZWtkYXlzTG9uZyA9IFsKICAgICJNb25kYXkiLAogICAgIlR1ZXNkYXkiLAogICAgIldlZG5lc2RheSIsCiAgICAiVGh1cnNkYXkiLAogICAgIkZyaWRheSIsCiAgICAiU2F0dXJkYXkiLAogICAgIlN1bmRheSIsCiAgXTsKCiAgY29uc3Qgd2Vla2RheXNTaG9ydCA9IFsiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIl07CgogIGNvbnN0IHdlZWtkYXlzTmFycm93ID0gWyJNIiwgIlQiLCAiVyIsICJUIiwgIkYiLCAiUyIsICJTIl07CgogIGZ1bmN0aW9uIHdlZWtkYXlzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLndlZWtkYXlzTmFycm93XTsKICAgICAgY2FzZSAic2hvcnQiOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNTaG9ydF07CiAgICAgIGNhc2UgImxvbmciOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyJdOwogICAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiBudWxsOwogICAgfQogIH0KCiAgY29uc3QgbWVyaWRpZW1zID0gWyJBTSIsICJQTSJdOwoKICBjb25zdCBlcmFzTG9uZyA9IFsiQmVmb3JlIENocmlzdCIsICJBbm5vIERvbWluaSJdOwoKICBjb25zdCBlcmFzU2hvcnQgPSBbIkJDIiwgIkFEIl07CgogIGNvbnN0IGVyYXNOYXJyb3cgPSBbIkIiLCAiQSJdOwoKICBmdW5jdGlvbiBlcmFzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNOYXJyb3ddOwogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIFsuLi5lcmFzU2hvcnRdOwogICAgICBjYXNlICJsb25nIjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNMb25nXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpIHsKICAgIHJldHVybiBtZXJpZGllbXNbZHQuaG91ciA8IDEyID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHsKICAgIHJldHVybiB3ZWVrZGF5cyhsZW5ndGgpW2R0LndlZWtkYXkgLSAxXTsKICB9CgogIGZ1bmN0aW9uIG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkgewogICAgcmV0dXJuIG1vbnRocyhsZW5ndGgpW2R0Lm1vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiBlcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7CiAgICByZXR1cm4gZXJhcyhsZW5ndGgpW2R0LnllYXIgPCAwID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCBudW1lcmljID0gImFsd2F5cyIsIG5hcnJvdyA9IGZhbHNlKSB7CiAgICBjb25zdCB1bml0cyA9IHsKICAgICAgeWVhcnM6IFsieWVhciIsICJ5ci4iXSwKICAgICAgcXVhcnRlcnM6IFsicXVhcnRlciIsICJxdHIuIl0sCiAgICAgIG1vbnRoczogWyJtb250aCIsICJtby4iXSwKICAgICAgd2Vla3M6IFsid2VlayIsICJ3ay4iXSwKICAgICAgZGF5czogWyJkYXkiLCAiZGF5IiwgImRheXMiXSwKICAgICAgaG91cnM6IFsiaG91ciIsICJoci4iXSwKICAgICAgbWludXRlczogWyJtaW51dGUiLCAibWluLiJdLAogICAgICBzZWNvbmRzOiBbInNlY29uZCIsICJzZWMuIl0sCiAgICB9OwoKICAgIGNvbnN0IGxhc3RhYmxlID0gWyJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiXS5pbmRleE9mKHVuaXQpID09PSAtMTsKCiAgICBpZiAobnVtZXJpYyA9PT0gImF1dG8iICYmIGxhc3RhYmxlKSB7CiAgICAgIGNvbnN0IGlzRGF5ID0gdW5pdCA9PT0gImRheXMiOwogICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvbW9ycm93IiA6IGBuZXh0ICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgICBjYXNlIC0xOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInllc3RlcmRheSIgOiBgbGFzdCAke3VuaXRzW3VuaXRdWzBdfWA7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvZGF5IiA6IGB0aGlzICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgfQogICAgfQoKICAgIGNvbnN0IGlzSW5QYXN0ID0gT2JqZWN0LmlzKGNvdW50LCAtMCkgfHwgY291bnQgPCAwLAogICAgICBmbXRWYWx1ZSA9IE1hdGguYWJzKGNvdW50KSwKICAgICAgc2luZ3VsYXIgPSBmbXRWYWx1ZSA9PT0gMSwKICAgICAgbGlsVW5pdHMgPSB1bml0c1t1bml0XSwKICAgICAgZm10VW5pdCA9IG5hcnJvdwogICAgICAgID8gc2luZ3VsYXIKICAgICAgICAgID8gbGlsVW5pdHNbMV0KICAgICAgICAgIDogbGlsVW5pdHNbMl0gfHwgbGlsVW5pdHNbMV0KICAgICAgICA6IHNpbmd1bGFyCiAgICAgICAgPyB1bml0c1t1bml0XVswXQogICAgICAgIDogdW5pdDsKICAgIHJldHVybiBpc0luUGFzdCA/IGAke2ZtdFZhbHVlfSAke2ZtdFVuaXR9IGFnb2AgOiBgaW4gJHtmbXRWYWx1ZX0gJHtmbXRVbml0fWA7CiAgfQoKICBmdW5jdGlvbiBzdHJpbmdpZnlUb2tlbnMoc3BsaXRzLCB0b2tlblRvU3RyaW5nKSB7CiAgICBsZXQgcyA9ICIiOwogICAgZm9yIChjb25zdCB0b2tlbiBvZiBzcGxpdHMpIHsKICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICBzICs9IHRva2VuLnZhbDsKICAgICAgfSBlbHNlIHsKICAgICAgICBzICs9IHRva2VuVG9TdHJpbmcodG9rZW4udmFsKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHM7CiAgfQoKICBjb25zdCBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzID0gewogICAgRDogREFURV9TSE9SVCwKICAgIEREOiBEQVRFX01FRCwKICAgIERERDogREFURV9GVUxMLAogICAgRERERDogREFURV9IVUdFLAogICAgdDogVElNRV9TSU1QTEUsCiAgICB0dDogVElNRV9XSVRIX1NFQ09ORFMsCiAgICB0dHQ6IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQsCiAgICB0dHR0OiBUSU1FX1dJVEhfTE9OR19PRkZTRVQsCiAgICBUOiBUSU1FXzI0X1NJTVBMRSwKICAgIFRUOiBUSU1FXzI0X1dJVEhfU0VDT05EUywKICAgIFRUVDogVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCwKICAgIFRUVFQ6IFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCwKICAgIGY6IERBVEVUSU1FX1NIT1JULAogICAgZmY6IERBVEVUSU1FX01FRCwKICAgIGZmZjogREFURVRJTUVfRlVMTCwKICAgIGZmZmY6IERBVEVUSU1FX0hVR0UsCiAgICBGOiBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMsCiAgICBGRjogREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUywKICAgIEZGRjogREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMsCiAgICBGRkZGOiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUywKICB9OwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBGb3JtYXR0ZXIgewogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gbmV3IEZvcm1hdHRlcihsb2NhbGUsIG9wdHMpOwogICAgfQoKICAgIHN0YXRpYyBwYXJzZUZvcm1hdChmbXQpIHsKICAgICAgbGV0IGN1cnJlbnQgPSBudWxsLAogICAgICAgIGN1cnJlbnRGdWxsID0gIiIsCiAgICAgICAgYnJhY2tldGVkID0gZmFsc2U7CiAgICAgIGNvbnN0IHNwbGl0cyA9IFtdOwogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZtdC5sZW5ndGg7IGkrKykgewogICAgICAgIGNvbnN0IGMgPSBmbXQuY2hhckF0KGkpOwogICAgICAgIGlmIChjID09PSAiJyIpIHsKICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogYnJhY2tldGVkLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICAgICAgfQogICAgICAgICAgY3VycmVudCA9IG51bGw7CiAgICAgICAgICBjdXJyZW50RnVsbCA9ICIiOwogICAgICAgICAgYnJhY2tldGVkID0gIWJyYWNrZXRlZDsKICAgICAgICB9IGVsc2UgaWYgKGJyYWNrZXRlZCkgewogICAgICAgICAgY3VycmVudEZ1bGwgKz0gYzsKICAgICAgICB9IGVsc2UgaWYgKGMgPT09IGN1cnJlbnQpIHsKICAgICAgICAgIGN1cnJlbnRGdWxsICs9IGM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogZmFsc2UsIHZhbDogY3VycmVudEZ1bGwgfSk7CiAgICAgICAgICB9CiAgICAgICAgICBjdXJyZW50RnVsbCA9IGM7CiAgICAgICAgICBjdXJyZW50ID0gYzsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgc3BsaXRzLnB1c2goeyBsaXRlcmFsOiBicmFja2V0ZWQsIHZhbDogY3VycmVudEZ1bGwgfSk7CiAgICAgIH0KCiAgICAgIHJldHVybiBzcGxpdHM7CiAgICB9CgogICAgc3RhdGljIG1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pIHsKICAgICAgcmV0dXJuIG1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHNbdG9rZW5dOwogICAgfQoKICAgIGNvbnN0cnVjdG9yKGxvY2FsZSwgZm9ybWF0T3B0cykgewogICAgICB0aGlzLm9wdHMgPSBmb3JtYXRPcHRzOwogICAgICB0aGlzLmxvYyA9IGxvY2FsZTsKICAgICAgdGhpcy5zeXN0ZW1Mb2MgPSBudWxsOwogICAgfQoKICAgIGZvcm1hdFdpdGhTeXN0ZW1EZWZhdWx0KGR0LCBvcHRzKSB7CiAgICAgIGlmICh0aGlzLnN5c3RlbUxvYyA9PT0gbnVsbCkgewogICAgICAgIHRoaXMuc3lzdGVtTG9jID0gdGhpcy5sb2MucmVkZWZhdWx0VG9TeXN0ZW0oKTsKICAgICAgfQogICAgICBjb25zdCBkZiA9IHRoaXMuc3lzdGVtTG9jLmR0Rm9ybWF0dGVyKGR0LCB7IC4uLnRoaXMub3B0cywgLi4ub3B0cyB9KTsKICAgICAgcmV0dXJuIGRmLmZvcm1hdCgpOwogICAgfQoKICAgIGZvcm1hdERhdGVUaW1lKGR0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5mb3JtYXQoKTsKICAgIH0KCiAgICBmb3JtYXREYXRlVGltZVBhcnRzKGR0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5mb3JtYXRUb1BhcnRzKCk7CiAgICB9CgogICAgZm9ybWF0SW50ZXJ2YWwoaW50ZXJ2YWwsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBkZiA9IHRoaXMubG9jLmR0Rm9ybWF0dGVyKGludGVydmFsLnN0YXJ0LCB7IC4uLnRoaXMub3B0cywgLi4ub3B0cyB9KTsKICAgICAgcmV0dXJuIGRmLmR0Zi5mb3JtYXRSYW5nZShpbnRlcnZhbC5zdGFydC50b0pTRGF0ZSgpLCBpbnRlcnZhbC5lbmQudG9KU0RhdGUoKSk7CiAgICB9CgogICAgcmVzb2x2ZWRPcHRpb25zKGR0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5yZXNvbHZlZE9wdGlvbnMoKTsKICAgIH0KCiAgICBudW0obiwgcCA9IDApIHsKICAgICAgLy8gd2UgZ2V0IHNvbWUgcGVyZiBvdXQgb2YgZG9pbmcgdGhpcyBoZXJlLCBhbm5veWluZ2x5CiAgICAgIGlmICh0aGlzLm9wdHMuZm9yY2VTaW1wbGUpIHsKICAgICAgICByZXR1cm4gcGFkU3RhcnQobiwgcCk7CiAgICAgIH0KCiAgICAgIGNvbnN0IG9wdHMgPSB7IC4uLnRoaXMub3B0cyB9OwoKICAgICAgaWYgKHAgPiAwKSB7CiAgICAgICAgb3B0cy5wYWRUbyA9IHA7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLmxvYy5udW1iZXJGb3JtYXR0ZXIob3B0cykuZm9ybWF0KG4pOwogICAgfQoKICAgIGZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyhkdCwgZm10KSB7CiAgICAgIGNvbnN0IGtub3duRW5nbGlzaCA9IHRoaXMubG9jLmxpc3RpbmdNb2RlKCkgPT09ICJlbiIsCiAgICAgICAgdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPSB0aGlzLmxvYy5vdXRwdXRDYWxlbmRhciAmJiB0aGlzLmxvYy5vdXRwdXRDYWxlbmRhciAhPT0gImdyZWdvcnkiLAogICAgICAgIHN0cmluZyA9IChvcHRzLCBleHRyYWN0KSA9PiB0aGlzLmxvYy5leHRyYWN0KGR0LCBvcHRzLCBleHRyYWN0KSwKICAgICAgICBmb3JtYXRPZmZzZXQgPSAob3B0cykgPT4gewogICAgICAgICAgaWYgKGR0LmlzT2Zmc2V0Rml4ZWQgJiYgZHQub2Zmc2V0ID09PSAwICYmIG9wdHMuYWxsb3daKSB7CiAgICAgICAgICAgIHJldHVybiAiWiI7CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIGR0LmlzVmFsaWQgPyBkdC56b25lLmZvcm1hdE9mZnNldChkdC50cywgb3B0cy5mb3JtYXQpIDogIiI7CiAgICAgICAgfSwKICAgICAgICBtZXJpZGllbSA9ICgpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyBtZXJpZGllbUZvckRhdGVUaW1lKGR0KQogICAgICAgICAgICA6IHN0cmluZyh7IGhvdXI6ICJudW1lcmljIiwgaG91ckN5Y2xlOiAiaDEyIiB9LCAiZGF5cGVyaW9kIiksCiAgICAgICAgbW9udGggPSAobGVuZ3RoLCBzdGFuZGFsb25lKSA9PgogICAgICAgICAga25vd25FbmdsaXNoCiAgICAgICAgICAgID8gbW9udGhGb3JEYXRlVGltZShkdCwgbGVuZ3RoKQogICAgICAgICAgICA6IHN0cmluZyhzdGFuZGFsb25lID8geyBtb250aDogbGVuZ3RoIH0gOiB7IG1vbnRoOiBsZW5ndGgsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpLAogICAgICAgIHdlZWtkYXkgPSAobGVuZ3RoLCBzdGFuZGFsb25lKSA9PgogICAgICAgICAga25vd25FbmdsaXNoCiAgICAgICAgICAgID8gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpCiAgICAgICAgICAgIDogc3RyaW5nKAogICAgICAgICAgICAgICAgc3RhbmRhbG9uZSA/IHsgd2Vla2RheTogbGVuZ3RoIH0gOiB7IHdlZWtkYXk6IGxlbmd0aCwgbW9udGg6ICJsb25nIiwgZGF5OiAibnVtZXJpYyIgfSwKICAgICAgICAgICAgICAgICJ3ZWVrZGF5IgogICAgICAgICAgICAgICksCiAgICAgICAgbWF5YmVNYWNybyA9ICh0b2tlbikgPT4gewogICAgICAgICAgY29uc3QgZm9ybWF0T3B0cyA9IEZvcm1hdHRlci5tYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuKTsKICAgICAgICAgIGlmIChmb3JtYXRPcHRzKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFdpdGhTeXN0ZW1EZWZhdWx0KGR0LCBmb3JtYXRPcHRzKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGVyYSA9IChsZW5ndGgpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2ggPyBlcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSA6IHN0cmluZyh7IGVyYTogbGVuZ3RoIH0sICJlcmEiKSwKICAgICAgICB0b2tlblRvU3RyaW5nID0gKHRva2VuKSA9PiB7CiAgICAgICAgICAvLyBXaGVyZSBwb3NzaWJsZTogaHR0cDovL2NsZHIudW5pY29kZS5vcmcvdHJhbnNsYXRpb24vZGF0ZS10aW1lLTEvZGF0ZS10aW1lI1RPQy1TdGFuZGFsb25lLXZzLi1Gb3JtYXQtU3R5bGVzCiAgICAgICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgICAgICAgIC8vIG1zCiAgICAgICAgICAgIGNhc2UgIlMiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taWxsaXNlY29uZCk7CiAgICAgICAgICAgIGNhc2UgInUiOgogICAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgICAgIGNhc2UgIlNTUyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbGxpc2Vjb25kLCAzKTsKICAgICAgICAgICAgLy8gc2Vjb25kcwogICAgICAgICAgICBjYXNlICJzIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuc2Vjb25kKTsKICAgICAgICAgICAgY2FzZSAic3MiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5zZWNvbmQsIDIpOwogICAgICAgICAgICAvLyBmcmFjdGlvbmFsIHNlY29uZHMKICAgICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGR0Lm1pbGxpc2Vjb25kIC8gMTApLCAyKTsKICAgICAgICAgICAgY2FzZSAidXV1IjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC5taWxsaXNlY29uZCAvIDEwMCkpOwogICAgICAgICAgICAvLyBtaW51dGVzCiAgICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taW51dGUpOwogICAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbnV0ZSwgMik7CiAgICAgICAgICAgIC8vIGhvdXJzCiAgICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMik7CiAgICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciAlIDEyID09PSAwID8gMTIgOiBkdC5ob3VyICUgMTIsIDIpOwogICAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91cik7CiAgICAgICAgICAgIGNhc2UgIkhIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciwgMik7CiAgICAgICAgICAgIC8vIG9mZnNldAogICAgICAgICAgICBjYXNlICJaIjoKICAgICAgICAgICAgICAvLyBsaWtlICs2CiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogIm5hcnJvdyIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTsKICAgICAgICAgICAgY2FzZSAiWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2OjAwCiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogInNob3J0IiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2MDAKICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHsgZm9ybWF0OiAidGVjaGllIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlIEVTVAogICAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiAic2hvcnQiLCBsb2NhbGU6IHRoaXMubG9jLmxvY2FsZSB9KTsKICAgICAgICAgICAgY2FzZSAiWlpaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgRWFzdGVybiBTdGFuZGFyZCBUaW1lCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmUub2Zmc2V0TmFtZShkdC50cywgeyBmb3JtYXQ6ICJsb25nIiwgbG9jYWxlOiB0aGlzLmxvYy5sb2NhbGUgfSk7CiAgICAgICAgICAgIC8vIHpvbmUKICAgICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmVOYW1lOwogICAgICAgICAgICAvLyBtZXJpZGllbXMKICAgICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgICAgcmV0dXJuIG1lcmlkaWVtKCk7CiAgICAgICAgICAgIC8vIGRhdGVzCiAgICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7IGRheTogIm51bWVyaWMiIH0sICJkYXkiKSA6IHRoaXMubnVtKGR0LmRheSk7CiAgICAgICAgICAgIGNhc2UgImRkIjoKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyBkYXk6ICIyLWRpZ2l0IiB9LCAiZGF5IikgOiB0aGlzLm51bShkdC5kYXksIDIpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtkYXkpOwogICAgICAgICAgICBjYXNlICJjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoInNob3J0IiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgImNjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiY2NjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1QnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIGZvcm1hdAogICAgICAgICAgICBjYXNlICJFIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7CiAgICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAnVHVlcycKICAgICAgICAgICAgICByZXR1cm4gd2Vla2RheSgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUVFIjoKICAgICAgICAgICAgICAvLyBsaWtlICdUJwogICAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KCJuYXJyb3ciLCBmYWxzZSk7CiAgICAgICAgICAgIC8vIG1vbnRocyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoKTsKICAgICAgICAgICAgY2FzZSAiTEwiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEsIGRvZXNuJ3Qgc2VlbSB0byB3b3JrCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAiMi1kaWdpdCIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiTExMTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5CiAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoKCJsb25nIiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgIkxMTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEoKICAgICAgICAgICAgICByZXR1cm4gbW9udGgoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyBtb250aHMgLSBmb3JtYXQKICAgICAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIgfSwgIm1vbnRoIikKICAgICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgpOwogICAgICAgICAgICBjYXNlICJNTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMQogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogIjItZGlnaXQiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIk1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSmFudWFyeQogICAgICAgICAgICAgIHJldHVybiBtb250aCgibG9uZyIsIGZhbHNlKTsKICAgICAgICAgICAgY2FzZSAiTU1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSgogICAgICAgICAgICAgIHJldHVybiBtb250aCgibmFycm93IiwgZmFsc2UpOwogICAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICAvLyBsaWtlIDIwMTQKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyB5ZWFyOiAibnVtZXJpYyIgfSwgInllYXIiKSA6IHRoaXMubnVtKGR0LnllYXIpOwogICAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxNAogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiAiMi1kaWdpdCIgfSwgInllYXIiKQogICAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAieXl5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDQpOwogICAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDYpOwogICAgICAgICAgICAvLyBlcmFzCiAgICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICAgIC8vIGxpa2UgQUQKICAgICAgICAgICAgICByZXR1cm4gZXJhKCJzaG9ydCIpOwogICAgICAgICAgICBjYXNlICJHRyI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbm5vIERvbWluaQogICAgICAgICAgICAgIHJldHVybiBlcmEoImxvbmciKTsKICAgICAgICAgICAgY2FzZSAiR0dHR0ciOgogICAgICAgICAgICAgIHJldHVybiBlcmEoIm5hcnJvdyIpOwogICAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAia2trayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLCA0KTsKICAgICAgICAgICAgY2FzZSAiVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIpOwogICAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIsIDIpOwogICAgICAgICAgICBjYXNlICJvIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQub3JkaW5hbCk7CiAgICAgICAgICAgIGNhc2UgIm9vbyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm9yZGluYWwsIDMpOwogICAgICAgICAgICBjYXNlICJxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQucXVhcnRlcik7CiAgICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIsIDIpOwogICAgICAgICAgICBjYXNlICJYIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC50cyAvIDEwMDApKTsKICAgICAgICAgICAgY2FzZSAieCI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnRzKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICByZXR1cm4gbWF5YmVNYWNybyh0b2tlbik7CiAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIHRva2VuVG9TdHJpbmcpOwogICAgfQoKICAgIGZvcm1hdER1cmF0aW9uRnJvbVN0cmluZyhkdXIsIGZtdCkgewogICAgICBjb25zdCB0b2tlblRvRmllbGQgPSAodG9rZW4pID0+IHsKICAgICAgICAgIHN3aXRjaCAodG9rZW5bMF0pIHsKICAgICAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaWxsaXNlY29uZCI7CiAgICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICAgIHJldHVybiAic2Vjb25kIjsKICAgICAgICAgICAgY2FzZSAibSI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgICAgICBjYXNlICJoIjoKICAgICAgICAgICAgICByZXR1cm4gImhvdXIiOwogICAgICAgICAgICBjYXNlICJkIjoKICAgICAgICAgICAgICByZXR1cm4gImRheSI7CiAgICAgICAgICAgIGNhc2UgInciOgogICAgICAgICAgICAgIHJldHVybiAid2VlayI7CiAgICAgICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgICAgIHJldHVybiAibW9udGgiOwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICByZXR1cm4gInllYXIiOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdG9rZW5Ub1N0cmluZyA9IChsaWxkdXIpID0+ICh0b2tlbikgPT4gewogICAgICAgICAgY29uc3QgbWFwcGVkID0gdG9rZW5Ub0ZpZWxkKHRva2VuKTsKICAgICAgICAgIGlmIChtYXBwZWQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGxpbGR1ci5nZXQobWFwcGVkKSwgdG9rZW4ubGVuZ3RoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHRva2VucyA9IEZvcm1hdHRlci5wYXJzZUZvcm1hdChmbXQpLAogICAgICAgIHJlYWxUb2tlbnMgPSB0b2tlbnMucmVkdWNlKAogICAgICAgICAgKGZvdW5kLCB7IGxpdGVyYWwsIHZhbCB9KSA9PiAobGl0ZXJhbCA/IGZvdW5kIDogZm91bmQuY29uY2F0KHZhbCkpLAogICAgICAgICAgW10KICAgICAgICApLAogICAgICAgIGNvbGxhcHNlZCA9IGR1ci5zaGlmdFRvKC4uLnJlYWxUb2tlbnMubWFwKHRva2VuVG9GaWVsZCkuZmlsdGVyKCh0KSA9PiB0KSk7CiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnModG9rZW5zLCB0b2tlblRvU3RyaW5nKGNvbGxhcHNlZCkpOwogICAgfQogIH0KCiAgY2xhc3MgSW52YWxpZCB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24sIGV4cGxhbmF0aW9uKSB7CiAgICAgIHRoaXMucmVhc29uID0gcmVhc29uOwogICAgICB0aGlzLmV4cGxhbmF0aW9uID0gZXhwbGFuYXRpb247CiAgICB9CgogICAgdG9NZXNzYWdlKCkgewogICAgICBpZiAodGhpcy5leHBsYW5hdGlvbikgewogICAgICAgIHJldHVybiBgJHt0aGlzLnJlYXNvbn06ICR7dGhpcy5leHBsYW5hdGlvbn1gOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLnJlYXNvbjsKICAgICAgfQogICAgfQogIH0KCiAgLyoKICAgKiBUaGlzIGZpbGUgaGFuZGxlcyBwYXJzaW5nIGZvciB3ZWxsLXNwZWNpZmllZCBmb3JtYXRzLiBIZXJlJ3MgaG93IGl0IHdvcmtzOgogICAqIFR3byB0aGluZ3MgZ28gaW50byBwYXJzaW5nOiBhIHJlZ2V4IHRvIG1hdGNoIHdpdGggYW5kIGFuIGV4dHJhY3RvciB0byB0YWtlIGFwYXJ0IHRoZSBncm91cHMgaW4gdGhlIG1hdGNoLgogICAqIEFuIGV4dHJhY3RvciBpcyBqdXN0IGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHJlZ2V4IG1hdGNoIGFycmF5IGFuZCByZXR1cm5zIGEgeyB5ZWFyOiAuLi4sIG1vbnRoOiAuLi4gfSBvYmplY3QKICAgKiBwYXJzZSgpIGRvZXMgdGhlIHdvcmsgb2YgZXhlY3V0aW5nIHRoZSByZWdleCBhbmQgYXBwbHlpbmcgdGhlIGV4dHJhY3Rvci4gSXQgdGFrZXMgbXVsdGlwbGUgcmVnZXgvZXh0cmFjdG9yIHBhaXJzIHRvIHRyeSBpbiBzZXF1ZW5jZS4KICAgKiBFeHRyYWN0b3JzIGNhbiB0YWtlIGEgImN1cnNvciIgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQgaW4gdGhlIG1hdGNoIHRvIGxvb2sgYXQuIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBjb21iaW5lIGV4dHJhY3RvcnMuCiAgICogY29tYmluZUV4dHJhY3RvcnMoKSBkb2VzIHRoZSB3b3JrIG9mIGNvbWJpbmluZyB0aGVtLCBrZWVwaW5nIHRyYWNrIG9mIHRoZSBjdXJzb3IgdGhyb3VnaCBtdWx0aXBsZSBleHRyYWN0aW9ucy4KICAgKiBTb21lIGV4dHJhY3Rpb25zIGFyZSBzdXBlciBkdW1iIGFuZCBzaW1wbGVQYXJzZSBhbmQgZnJvbVN0cmluZ3MgaGVscCBEUlkgdGhlbS4KICAgKi8KCiAgY29uc3QgaWFuYVJlZ2V4ID0gL1tBLVphLXpfKy1dezEsMjU2fSg/Ojo/XC9bQS1aYS16MC05XystXXsxLDI1Nn0oPzpcL1tBLVphLXowLTlfKy1dezEsMjU2fSk/KT8vOwoKICBmdW5jdGlvbiBjb21iaW5lUmVnZXhlcyguLi5yZWdleGVzKSB7CiAgICBjb25zdCBmdWxsID0gcmVnZXhlcy5yZWR1Y2UoKGYsIHIpID0+IGYgKyByLnNvdXJjZSwgIiIpOwogICAgcmV0dXJuIFJlZ0V4cChgXiR7ZnVsbH0kYCk7CiAgfQoKICBmdW5jdGlvbiBjb21iaW5lRXh0cmFjdG9ycyguLi5leHRyYWN0b3JzKSB7CiAgICByZXR1cm4gKG0pID0+CiAgICAgIGV4dHJhY3RvcnMKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFttZXJnZWRWYWxzLCBtZXJnZWRab25lLCBjdXJzb3JdLCBleCkgPT4gewogICAgICAgICAgICBjb25zdCBbdmFsLCB6b25lLCBuZXh0XSA9IGV4KG0sIGN1cnNvcik7CiAgICAgICAgICAgIHJldHVybiBbeyAuLi5tZXJnZWRWYWxzLCAuLi52YWwgfSwgem9uZSB8fCBtZXJnZWRab25lLCBuZXh0XTsKICAgICAgICAgIH0sCiAgICAgICAgICBbe30sIG51bGwsIDFdCiAgICAgICAgKQogICAgICAgIC5zbGljZSgwLCAyKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlKHMsIC4uLnBhdHRlcm5zKSB7CiAgICBpZiAocyA9PSBudWxsKSB7CiAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07CiAgICB9CgogICAgZm9yIChjb25zdCBbcmVnZXgsIGV4dHJhY3Rvcl0gb2YgcGF0dGVybnMpIHsKICAgICAgY29uc3QgbSA9IHJlZ2V4LmV4ZWMocyk7CiAgICAgIGlmIChtKSB7CiAgICAgICAgcmV0dXJuIGV4dHJhY3RvcihtKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIFtudWxsLCBudWxsXTsKICB9CgogIGZ1bmN0aW9uIHNpbXBsZVBhcnNlKC4uLmtleXMpIHsKICAgIHJldHVybiAobWF0Y2gsIGN1cnNvcikgPT4gewogICAgICBjb25zdCByZXQgPSB7fTsKICAgICAgbGV0IGk7CgogICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewogICAgICAgIHJldFtrZXlzW2ldXSA9IHBhcnNlSW50ZWdlcihtYXRjaFtjdXJzb3IgKyBpXSk7CiAgICAgIH0KICAgICAgcmV0dXJuIFtyZXQsIG51bGwsIGN1cnNvciArIGldOwogICAgfTsKICB9CgogIC8vIElTTyBhbmQgU1FMIHBhcnNpbmcKICBjb25zdCBvZmZzZXRSZWdleCA9IC8oPzooWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8pLzsKICBjb25zdCBpc29FeHRlbmRlZFpvbmUgPSBgKD86JHtvZmZzZXRSZWdleC5zb3VyY2V9Pyg/OlxcWygke2lhbmFSZWdleC5zb3VyY2V9KVxcXSk/KT9gOwogIGNvbnN0IGlzb1RpbWVCYXNlUmVnZXggPSAvKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlsuLF0oXGR7MSwzMH0pKT8pPyk/LzsKICBjb25zdCBpc29UaW1lUmVnZXggPSBSZWdFeHAoYCR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JHtpc29FeHRlbmRlZFpvbmV9YCk7CiAgY29uc3QgaXNvVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzpUJHtpc29UaW1lUmVnZXguc291cmNlfSk/YCk7CiAgY29uc3QgaXNvWW1kUmVnZXggPSAvKFsrLV1cZHs2fXxcZHs0fSkoPzotPyhcZFxkKSg/Oi0/KFxkXGQpKT8pPy87CiAgY29uc3QgaXNvV2Vla1JlZ2V4ID0gLyhcZHs0fSktP1coXGRcZCkoPzotPyhcZCkpPy87CiAgY29uc3QgaXNvT3JkaW5hbFJlZ2V4ID0gLyhcZHs0fSktPyhcZHszfSkvOwogIGNvbnN0IGV4dHJhY3RJU09XZWVrRGF0YSA9IHNpbXBsZVBhcnNlKCJ3ZWVrWWVhciIsICJ3ZWVrTnVtYmVyIiwgIndlZWtEYXkiKTsKICBjb25zdCBleHRyYWN0SVNPT3JkaW5hbERhdGEgPSBzaW1wbGVQYXJzZSgieWVhciIsICJvcmRpbmFsIik7CiAgY29uc3Qgc3FsWW1kUmVnZXggPSAvKFxkezR9KS0oXGRcZCktKFxkXGQpLzsgLy8gZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0aGUgSVNPIG9uZQogIGNvbnN0IHNxbFRpbWVSZWdleCA9IFJlZ0V4cCgKICAgIGAke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSA/KD86JHtvZmZzZXRSZWdleC5zb3VyY2V9fCgke2lhbmFSZWdleC5zb3VyY2V9KSk/YAogICk7CiAgY29uc3Qgc3FsVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzogJHtzcWxUaW1lUmVnZXguc291cmNlfSk/YCk7CgogIGZ1bmN0aW9uIGludChtYXRjaCwgcG9zLCBmYWxsYmFjaykgewogICAgY29uc3QgbSA9IG1hdGNoW3Bvc107CiAgICByZXR1cm4gaXNVbmRlZmluZWQobSkgPyBmYWxsYmFjayA6IHBhcnNlSW50ZWdlcihtKTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJU09ZbWQobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgeWVhcjogaW50KG1hdGNoLCBjdXJzb3IpLAogICAgICBtb250aDogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAxKSwKICAgICAgZGF5OiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDEpLAogICAgfTsKCiAgICByZXR1cm4gW2l0ZW0sIG51bGwsIGN1cnNvciArIDNdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdElTT1RpbWUobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgaG91cnM6IGludChtYXRjaCwgY3Vyc29yLCAwKSwKICAgICAgbWludXRlczogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAwKSwKICAgICAgc2Vjb25kczogaW50KG1hdGNoLCBjdXJzb3IgKyAyLCAwKSwKICAgICAgbWlsbGlzZWNvbmRzOiBwYXJzZU1pbGxpcyhtYXRjaFtjdXJzb3IgKyAzXSksCiAgICB9OwoKICAgIHJldHVybiBbaXRlbSwgbnVsbCwgY3Vyc29yICsgNF07CiAgfQoKICBmdW5jdGlvbiBleHRyYWN0SVNPT2Zmc2V0KG1hdGNoLCBjdXJzb3IpIHsKICAgIGNvbnN0IGxvY2FsID0gIW1hdGNoW2N1cnNvcl0gJiYgIW1hdGNoW2N1cnNvciArIDFdLAogICAgICBmdWxsT2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG1hdGNoW2N1cnNvciArIDFdLCBtYXRjaFtjdXJzb3IgKyAyXSksCiAgICAgIHpvbmUgPSBsb2NhbCA/IG51bGwgOiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoZnVsbE9mZnNldCk7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAzXTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJQU5BWm9uZShtYXRjaCwgY3Vyc29yKSB7CiAgICBjb25zdCB6b25lID0gbWF0Y2hbY3Vyc29yXSA/IElBTkFab25lLmNyZWF0ZShtYXRjaFtjdXJzb3JdKSA6IG51bGw7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAxXTsKICB9CgogIC8vIElTTyB0aW1lIHBhcnNpbmcKCiAgY29uc3QgaXNvVGltZU9ubHkgPSBSZWdFeHAoYF5UPyR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JGApOwoKICAvLyBJU08gZHVyYXRpb24gcGFyc2luZwoKICBjb25zdCBpc29EdXJhdGlvbiA9CiAgICAvXi0/UCg/Oig/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVkpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KU0pPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVcpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KUQpPyg/OlQoPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylIKT8oPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylNKT8oPzooLT9cZHsxLDIwfSkoPzpbLixdKC0/XGR7MSwyMH0pKT9TKT8pPykkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdElTT0R1cmF0aW9uKG1hdGNoKSB7CiAgICBjb25zdCBbcywgeWVhclN0ciwgbW9udGhTdHIsIHdlZWtTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIsIG1pbGxpc2Vjb25kc1N0cl0gPQogICAgICBtYXRjaDsKCiAgICBjb25zdCBoYXNOZWdhdGl2ZVByZWZpeCA9IHNbMF0gPT09ICItIjsKICAgIGNvbnN0IG5lZ2F0aXZlU2Vjb25kcyA9IHNlY29uZFN0ciAmJiBzZWNvbmRTdHJbMF0gPT09ICItIjsKCiAgICBjb25zdCBtYXliZU5lZ2F0ZSA9IChudW0sIGZvcmNlID0gZmFsc2UpID0+CiAgICAgIG51bSAhPT0gdW5kZWZpbmVkICYmIChmb3JjZSB8fCAobnVtICYmIGhhc05lZ2F0aXZlUHJlZml4KSkgPyAtbnVtIDogbnVtOwoKICAgIHJldHVybiBbCiAgICAgIHsKICAgICAgICB5ZWFyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh5ZWFyU3RyKSksCiAgICAgICAgbW9udGhzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1vbnRoU3RyKSksCiAgICAgICAgd2Vla3M6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcod2Vla1N0cikpLAogICAgICAgIGRheXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoZGF5U3RyKSksCiAgICAgICAgaG91cnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoaG91clN0cikpLAogICAgICAgIG1pbnV0ZXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcobWludXRlU3RyKSksCiAgICAgICAgc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhzZWNvbmRTdHIpLCBzZWNvbmRTdHIgPT09ICItMCIpLAogICAgICAgIG1pbGxpc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VNaWxsaXMobWlsbGlzZWNvbmRzU3RyKSwgbmVnYXRpdmVTZWNvbmRzKSwKICAgICAgfSwKICAgIF07CiAgfQoKICAvLyBUaGVzZSBhcmUgYSBsaXR0bGUgYnJhaW5kZWFkLiBFRFQgKnNob3VsZCogdGVsbCB1cyB0aGF0IHdlJ3JlIGluLCBzYXksIEFtZXJpY2EvTmV3X1lvcmsKICAvLyBhbmQgbm90IGp1c3QgdGhhdCB3ZSdyZSBpbiAtMjQwICpyaWdodCBub3cqLiBCdXQgc2luY2UgSSBkb24ndCB0aGluayB0aGVzZSBhcmUgdXNlZCB0aGF0IG9mdGVuCiAgLy8gSSdtIGp1c3QgZ29pbmcgdG8gaWdub3JlIHRoYXQKICBjb25zdCBvYnNPZmZzZXRzID0gewogICAgR01UOiAwLAogICAgRURUOiAtNCAqIDYwLAogICAgRVNUOiAtNSAqIDYwLAogICAgQ0RUOiAtNSAqIDYwLAogICAgQ1NUOiAtNiAqIDYwLAogICAgTURUOiAtNiAqIDYwLAogICAgTVNUOiAtNyAqIDYwLAogICAgUERUOiAtNyAqIDYwLAogICAgUFNUOiAtOCAqIDYwLAogIH07CgogIGZ1bmN0aW9uIGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKSB7CiAgICBjb25zdCByZXN1bHQgPSB7CiAgICAgIHllYXI6IHllYXJTdHIubGVuZ3RoID09PSAyID8gdW50cnVuY2F0ZVllYXIocGFyc2VJbnRlZ2VyKHllYXJTdHIpKSA6IHBhcnNlSW50ZWdlcih5ZWFyU3RyKSwKICAgICAgbW9udGg6IG1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpICsgMSwKICAgICAgZGF5OiBwYXJzZUludGVnZXIoZGF5U3RyKSwKICAgICAgaG91cjogcGFyc2VJbnRlZ2VyKGhvdXJTdHIpLAogICAgICBtaW51dGU6IHBhcnNlSW50ZWdlcihtaW51dGVTdHIpLAogICAgfTsKCiAgICBpZiAoc2Vjb25kU3RyKSByZXN1bHQuc2Vjb25kID0gcGFyc2VJbnRlZ2VyKHNlY29uZFN0cik7CiAgICBpZiAod2Vla2RheVN0cikgewogICAgICByZXN1bHQud2Vla2RheSA9CiAgICAgICAgd2Vla2RheVN0ci5sZW5ndGggPiAzCiAgICAgICAgICA/IHdlZWtkYXlzTG9uZy5pbmRleE9mKHdlZWtkYXlTdHIpICsgMQogICAgICAgICAgOiB3ZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0cikgKyAxOwogICAgfQoKICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvLyBSRkMgMjgyMi81MzIyCiAgY29uc3QgcmZjMjgyMiA9CiAgICAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLFxzKT8oXGR7MSwyfSlccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylccyhcZHsyLDR9KVxzKFxkXGQpOihcZFxkKSg/OjooXGRcZCkpP1xzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXGRcZCkoXGRcZCkpKSQvOwoKICBmdW5jdGlvbiBleHRyYWN0UkZDMjgyMihtYXRjaCkgewogICAgY29uc3QgWwogICAgICAgICwKICAgICAgICB3ZWVrZGF5U3RyLAogICAgICAgIGRheVN0ciwKICAgICAgICBtb250aFN0ciwKICAgICAgICB5ZWFyU3RyLAogICAgICAgIGhvdXJTdHIsCiAgICAgICAgbWludXRlU3RyLAogICAgICAgIHNlY29uZFN0ciwKICAgICAgICBvYnNPZmZzZXQsCiAgICAgICAgbWlsT2Zmc2V0LAogICAgICAgIG9mZkhvdXJTdHIsCiAgICAgICAgb2ZmTWludXRlU3RyLAogICAgICBdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKCiAgICBsZXQgb2Zmc2V0OwogICAgaWYgKG9ic09mZnNldCkgewogICAgICBvZmZzZXQgPSBvYnNPZmZzZXRzW29ic09mZnNldF07CiAgICB9IGVsc2UgaWYgKG1pbE9mZnNldCkgewogICAgICBvZmZzZXQgPSAwOwogICAgfSBlbHNlIHsKICAgICAgb2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cik7CiAgICB9CgogICAgcmV0dXJuIFtyZXN1bHQsIG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KV07CiAgfQoKICBmdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7CiAgICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZQogICAgcmV0dXJuIHMKICAgICAgLnJlcGxhY2UoL1woW14oKV0qXCl8W1xuXHRdL2csICIgIikKICAgICAgLnJlcGxhY2UoLyhcc1xzKykvZywgIiAiKQogICAgICAudHJpbSgpOwogIH0KCiAgLy8gaHR0cCBkYXRlCgogIGNvbnN0IHJmYzExMjMgPQogICAgICAvXihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLCAoXGRcZCkgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoXGR7NH0pIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQvLAogICAgcmZjODUwID0KICAgICAgL14oTW9uZGF5fFR1ZXNkYXl8V2VkbmVzZGF5fFRodXJzZGF5fEZyaWRheXxTYXR1cmRheXxTdW5kYXkpLCAoXGRcZCktKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKS0oXGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJC8sCiAgICBhc2NpaSA9CiAgICAgIC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1bikgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoIFxkfFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIChcZHs0fSkkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdFJGQzExMjNPcjg1MChtYXRjaCkgewogICAgY29uc3QgWywgd2Vla2RheVN0ciwgZGF5U3RyLCBtb250aFN0ciwgeWVhclN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHJdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKICAgIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdEFTQ0lJKG1hdGNoKSB7CiAgICBjb25zdCBbLCB3ZWVrZGF5U3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0ciwgeWVhclN0cl0gPSBtYXRjaCwKICAgICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpOwogICAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07CiAgfQoKICBjb25zdCBpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvWW1kUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvV2Vla1dpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29XZWVrUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29PcmRpbmFsUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvVGltZUNvbWJpbmVkUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29UaW1lUmVnZXgpOwoKICBjb25zdCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldCA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1ltZCwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoCiAgICBleHRyYWN0SVNPV2Vla0RhdGEsCiAgICBleHRyYWN0SVNPVGltZSwKICAgIGV4dHJhY3RJU09PZmZzZXQsCiAgICBleHRyYWN0SUFOQVpvbmUKICApOwogIGNvbnN0IGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWUgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09PcmRpbmFsRGF0YSwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CgogIC8qCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gcGFyc2VJU09EYXRlKHMpIHsKICAgIHJldHVybiBwYXJzZSgKICAgICAgcywKICAgICAgW2lzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0XSwKICAgICAgW2lzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXRdLAogICAgICBbaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWVdLAogICAgICBbaXNvVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0XQogICAgKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlUkZDMjgyMkRhdGUocykgewogICAgcmV0dXJuIHBhcnNlKHByZXByb2Nlc3NSRkMyODIyKHMpLCBbcmZjMjgyMiwgZXh0cmFjdFJGQzI4MjJdKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSFRUUERhdGUocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbcmZjMTEyMywgZXh0cmFjdFJGQzExMjNPcjg1MF0sCiAgICAgIFtyZmM4NTAsIGV4dHJhY3RSRkMxMTIzT3I4NTBdLAogICAgICBbYXNjaWksIGV4dHJhY3RBU0NJSV0KICAgICk7CiAgfQoKICBmdW5jdGlvbiBwYXJzZUlTT0R1cmF0aW9uKHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvRHVyYXRpb24sIGV4dHJhY3RJU09EdXJhdGlvbl0pOwogIH0KCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpOwoKICBmdW5jdGlvbiBwYXJzZUlTT1RpbWVPbmx5KHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pOwogIH0KCiAgY29uc3Qgc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFltZFJlZ2V4LCBzcWxUaW1lRXh0ZW5zaW9uUmVnZXgpOwogIGNvbnN0IHNxbFRpbWVDb21iaW5lZFJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsVGltZVJlZ2V4KTsKCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZSA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1RpbWUsCiAgICBleHRyYWN0SVNPT2Zmc2V0LAogICAgZXh0cmFjdElBTkFab25lCiAgKTsKCiAgZnVuY3Rpb24gcGFyc2VTUUwocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXRdLAogICAgICBbc3FsVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmVdCiAgICApOwogIH0KCiAgY29uc3QgSU5WQUxJRCQyID0gIkludmFsaWQgRHVyYXRpb24iOwoKICAvLyB1bml0IGNvbnZlcnNpb24gY29uc3RhbnRzCiAgY29uc3QgbG93T3JkZXJNYXRyaXggPSB7CiAgICAgIHdlZWtzOiB7CiAgICAgICAgZGF5czogNywKICAgICAgICBob3VyczogNyAqIDI0LAogICAgICAgIG1pbnV0ZXM6IDcgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiA3ICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgZGF5czogewogICAgICAgIGhvdXJzOiAyNCwKICAgICAgICBtaW51dGVzOiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDI0ICogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCiAgICAgIGhvdXJzOiB7IG1pbnV0ZXM6IDYwLCBzZWNvbmRzOiA2MCAqIDYwLCBtaWxsaXNlY29uZHM6IDYwICogNjAgKiAxMDAwIH0sCiAgICAgIG1pbnV0ZXM6IHsgc2Vjb25kczogNjAsIG1pbGxpc2Vjb25kczogNjAgKiAxMDAwIH0sCiAgICAgIHNlY29uZHM6IHsgbWlsbGlzZWNvbmRzOiAxMDAwIH0sCiAgICB9LAogICAgY2FzdWFsTWF0cml4ID0gewogICAgICB5ZWFyczogewogICAgICAgIHF1YXJ0ZXJzOiA0LAogICAgICAgIG1vbnRoczogMTIsCiAgICAgICAgd2Vla3M6IDUyLAogICAgICAgIGRheXM6IDM2NSwKICAgICAgICBob3VyczogMzY1ICogMjQsCiAgICAgICAgbWludXRlczogMzY1ICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogMTMsCiAgICAgICAgZGF5czogOTEsCiAgICAgICAgaG91cnM6IDkxICogMjQsCiAgICAgICAgbWludXRlczogOTEgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDkxICogMjQgKiA2MCAqIDYwLAogICAgICAgIG1pbGxpc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogNCwKICAgICAgICBkYXlzOiAzMCwKICAgICAgICBob3VyczogMzAgKiAyNCwKICAgICAgICBtaW51dGVzOiAzMCAqIDI0ICogNjAsCiAgICAgICAgc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzMCAqIDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCgogICAgICAuLi5sb3dPcmRlck1hdHJpeCwKICAgIH0sCiAgICBkYXlzSW5ZZWFyQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQwMCwKICAgIGRheXNJbk1vbnRoQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQ4MDAsCiAgICBhY2N1cmF0ZU1hdHJpeCA9IHsKICAgICAgeWVhcnM6IHsKICAgICAgICBxdWFydGVyczogNCwKICAgICAgICBtb250aHM6IDEyLAogICAgICAgIHdlZWtzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyA3LAogICAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luWWVhckFjY3VyYXRlICogMjQsCiAgICAgICAgbWludXRlczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogZGF5c0luWWVhckFjY3VyYXRlIC8gMjgsCiAgICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlIC8gNCwKICAgICAgICBob3VyczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0KSAvIDQsCiAgICAgICAgbWludXRlczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjApIC8gNCwKICAgICAgICBzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwKSAvIDQsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCkgLyA0LAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogZGF5c0luTW9udGhBY2N1cmF0ZSAvIDcsCiAgICAgICAgZGF5czogZGF5c0luTW9udGhBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0LAogICAgICAgIG1pbnV0ZXM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgLi4ubG93T3JkZXJNYXRyaXgsCiAgICB9OwoKICAvLyB1bml0cyBvcmRlcmVkIGJ5IHNpemUKICBjb25zdCBvcmRlcmVkVW5pdHMkMSA9IFsKICAgICJ5ZWFycyIsCiAgICAicXVhcnRlcnMiLAogICAgIm1vbnRocyIsCiAgICAid2Vla3MiLAogICAgImRheXMiLAogICAgImhvdXJzIiwKICAgICJtaW51dGVzIiwKICAgICJzZWNvbmRzIiwKICAgICJtaWxsaXNlY29uZHMiLAogIF07CgogIGNvbnN0IHJldmVyc2VVbml0cyA9IG9yZGVyZWRVbml0cyQxLnNsaWNlKDApLnJldmVyc2UoKTsKCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zICJjcmVhdGUgYW5vdGhlciBpbnN0YW5jZSBqdXN0IGxpa2UgdGhpcyBvbmUsIGJ1dCB3aXRoIHRoZXNlIGNoYW5nZXMiCiAgZnVuY3Rpb24gY2xvbmUkMShkdXIsIGFsdHMsIGNsZWFyID0gZmFsc2UpIHsKICAgIC8vIGRlZXAgbWVyZ2UgZm9yIHZhbHMKICAgIGNvbnN0IGNvbmYgPSB7CiAgICAgIHZhbHVlczogY2xlYXIgPyBhbHRzLnZhbHVlcyA6IHsgLi4uZHVyLnZhbHVlcywgLi4uKGFsdHMudmFsdWVzIHx8IHt9KSB9LAogICAgICBsb2M6IGR1ci5sb2MuY2xvbmUoYWx0cy5sb2MpLAogICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IGFsdHMuY29udmVyc2lvbkFjY3VyYWN5IHx8IGR1ci5jb252ZXJzaW9uQWNjdXJhY3ksCiAgICAgIG1hdHJpeDogYWx0cy5tYXRyaXggfHwgZHVyLm1hdHJpeCwKICAgIH07CiAgICByZXR1cm4gbmV3IER1cmF0aW9uKGNvbmYpOwogIH0KCiAgZnVuY3Rpb24gYW50aVRydW5jKG4pIHsKICAgIHJldHVybiBuIDwgMCA/IE1hdGguZmxvb3IobikgOiBNYXRoLmNlaWwobik7CiAgfQoKICAvLyBOQjogbXV0YXRlcyBwYXJhbWV0ZXJzCiAgZnVuY3Rpb24gY29udmVydChtYXRyaXgsIGZyb21NYXAsIGZyb21Vbml0LCB0b01hcCwgdG9Vbml0KSB7CiAgICBjb25zdCBjb252ID0gbWF0cml4W3RvVW5pdF1bZnJvbVVuaXRdLAogICAgICByYXcgPSBmcm9tTWFwW2Zyb21Vbml0XSAvIGNvbnYsCiAgICAgIHNhbWVTaWduID0gTWF0aC5zaWduKHJhdykgPT09IE1hdGguc2lnbih0b01hcFt0b1VuaXRdKSwKICAgICAgLy8gb2ssIHNvIHRoaXMgaXMgd2lsZCwgYnV0IHNlZSB0aGUgbWF0cml4IGluIHRoZSB0ZXN0cwogICAgICBhZGRlZCA9CiAgICAgICAgIXNhbWVTaWduICYmIHRvTWFwW3RvVW5pdF0gIT09IDAgJiYgTWF0aC5hYnMocmF3KSA8PSAxID8gYW50aVRydW5jKHJhdykgOiBNYXRoLnRydW5jKHJhdyk7CiAgICB0b01hcFt0b1VuaXRdICs9IGFkZGVkOwogICAgZnJvbU1hcFtmcm9tVW5pdF0gLT0gYWRkZWQgKiBjb252OwogIH0KCiAgLy8gTkI6IG11dGF0ZXMgcGFyYW1ldGVycwogIGZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlcyhtYXRyaXgsIHZhbHMpIHsKICAgIHJldmVyc2VVbml0cy5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiB7CiAgICAgIGlmICghaXNVbmRlZmluZWQodmFsc1tjdXJyZW50XSkpIHsKICAgICAgICBpZiAocHJldmlvdXMpIHsKICAgICAgICAgIGNvbnZlcnQobWF0cml4LCB2YWxzLCBwcmV2aW91cywgdmFscywgY3VycmVudCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjdXJyZW50OwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBwcmV2aW91czsKICAgICAgfQogICAgfSwgbnVsbCk7CiAgfQoKICAvLyBSZW1vdmUgYWxsIHByb3BlcnRpZXMgd2l0aCBhIHZhbHVlIG9mIDAgZnJvbSBhbiBvYmplY3QKICBmdW5jdGlvbiByZW1vdmVaZXJvZXModmFscykgewogICAgY29uc3QgbmV3VmFscyA9IHt9OwogICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFscykpIHsKICAgICAgaWYgKHZhbHVlICE9PSAwKSB7CiAgICAgICAgbmV3VmFsc1trZXldID0gdmFsdWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBuZXdWYWxzOwogIH0KCiAgLyoqCiAgICogQSBEdXJhdGlvbiBvYmplY3QgcmVwcmVzZW50cyBhIHBlcmlvZCBvZiB0aW1lLCBsaWtlICIyIG1vbnRocyIgb3IgIjEgZGF5LCAxIGhvdXIiLiBDb25jZXB0dWFsbHksIGl0J3MganVzdCBhIG1hcCBvZiB1bml0cyB0byB0aGVpciBxdWFudGl0aWVzLCBhY2NvbXBhbmllZCBieSBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS4gVGhleSBjYW4gYmUgdXNlZCBvbiB0aGVpciBvd24gb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBMdXhvbiB0eXBlczsgZm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHtAbGluayBEYXRlVGltZSNwbHVzfSB0byBhZGQgYSBEdXJhdGlvbiBvYmplY3QgdG8gYSBEYXRlVGltZSwgcHJvZHVjaW5nIGFub3RoZXIgRGF0ZVRpbWUuCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIER1cmF0aW9uOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGEgRHVyYXRpb24sIHVzZSB7QGxpbmsgRHVyYXRpb24uZnJvbU1pbGxpc30sIHtAbGluayBEdXJhdGlvbi5mcm9tT2JqZWN0fSwgb3Ige0BsaW5rIER1cmF0aW9uLmZyb21JU099LgogICAqICogKipVbml0IHZhbHVlcyoqIFNlZSB0aGUge0BsaW5rIER1cmF0aW9uI3llYXJzfSwge0BsaW5rIER1cmF0aW9uI21vbnRoc30sIHtAbGluayBEdXJhdGlvbiN3ZWVrc30sIHtAbGluayBEdXJhdGlvbiNkYXlzfSwge0BsaW5rIER1cmF0aW9uI2hvdXJzfSwge0BsaW5rIER1cmF0aW9uI21pbnV0ZXN9LCB7QGxpbmsgRHVyYXRpb24jc2Vjb25kc30sIHtAbGluayBEdXJhdGlvbiNtaWxsaXNlY29uZHN9IGFjY2Vzc29ycy4KICAgKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSAge0BsaW5rIER1cmF0aW9uI2xvY2FsZX0gYW5kIHtAbGluayBEdXJhdGlvbiNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy4KICAgKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgbmV3IER1cmF0aW9ucyBvdXQgb2Ygb2xkIG9uZXMgdXNlIHtAbGluayBEdXJhdGlvbiNwbHVzfSwge0BsaW5rIER1cmF0aW9uI21pbnVzfSwge0BsaW5rIER1cmF0aW9uI25vcm1hbGl6ZX0sIHtAbGluayBEdXJhdGlvbiNzZXR9LCB7QGxpbmsgRHVyYXRpb24jcmVjb25maWd1cmV9LCB7QGxpbmsgRHVyYXRpb24jc2hpZnRUb30sIGFuZCB7QGxpbmsgRHVyYXRpb24jbmVnYXRlfS4KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgRHVyYXRpb24gaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgRHVyYXRpb24jYXN9LCB7QGxpbmsgRHVyYXRpb24jdG9JU099LCB7QGxpbmsgRHVyYXRpb24jdG9Gb3JtYXR9LCBhbmQge0BsaW5rIER1cmF0aW9uI3RvSlNPTn0KICAgKgogICAqIFRoZXJlJ3MgYXJlIG1vcmUgbWV0aG9kcyBkb2N1bWVudGVkIGJlbG93LiBJbiBhZGRpdGlvbiwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3VidGxlciB0b3BpY3MgbGlrZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgdmFsaWRpdHksIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi4KICAgKi8KICBjbGFzcyBEdXJhdGlvbiB7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCBhY2N1cmF0ZSA9IGNvbmZpZy5jb252ZXJzaW9uQWNjdXJhY3kgPT09ICJsb25ndGVybSIgfHwgZmFsc2U7CiAgICAgIGxldCBtYXRyaXggPSBhY2N1cmF0ZSA/IGFjY3VyYXRlTWF0cml4IDogY2FzdWFsTWF0cml4OwoKICAgICAgaWYgKGNvbmZpZy5tYXRyaXgpIHsKICAgICAgICBtYXRyaXggPSBjb25maWcubWF0cml4OwogICAgICB9CgogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnZhbHVlcyA9IGNvbmZpZy52YWx1ZXM7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuY29udmVyc2lvbkFjY3VyYWN5ID0gYWNjdXJhdGUgPyAibG9uZ3Rlcm0iIDogImNhc3VhbCI7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubWF0cml4ID0gbWF0cml4OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EdXJhdGlvbiA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgRHVyYXRpb24gZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgb2YgbWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbU1pbGxpcyhjb3VudCwgb3B0cykgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbGxpc2Vjb25kczogY291bnQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIElmIHRoaXMgb2JqZWN0IGlzIGVtcHR5IHRoZW4gYSB6ZXJvIG1pbGxpc2Vjb25kcyBkdXJhdGlvbiBpcyByZXR1cm5lZC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSB0aGUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgRGF0ZVRpbWUgZnJvbQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5xdWFydGVycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla3MKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouZGF5cwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGVzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9W11dIC0gb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhpcyBEdXJhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBjdXN0b20gY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHsKICAgICAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICJvYmplY3QiKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKAogICAgICAgICAgYER1cmF0aW9uLmZyb21PYmplY3Q6IGFyZ3VtZW50IGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCwgZ290ICR7CiAgICAgICAgICBvYmogPT09IG51bGwgPyAibnVsbCIgOiB0eXBlb2Ygb2JqCiAgICAgICAgfWAKICAgICAgICApOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IER1cmF0aW9uKHsKICAgICAgICB2YWx1ZXM6IG5vcm1hbGl6ZU9iamVjdChvYmosIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgICAgY29udmVyc2lvbkFjY3VyYWN5OiBvcHRzLmNvbnZlcnNpb25BY2N1cmFjeSwKICAgICAgICBtYXRyaXg6IG9wdHMubWF0cml4LAogICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gRHVyYXRpb25MaWtlLgogICAgICoKICAgICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVtYmVyIHwgRHVyYXRpb259IGR1cmF0aW9uTGlrZQogICAgICogT25lIG9mOgogICAgICogLSBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIC0gbnVtYmVyIHJlcHJlc2VudGluZyBtaWxsaXNlY29uZHMKICAgICAqIC0gRHVyYXRpb24gaW5zdGFuY2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbkxpa2UpIHsKICAgICAgaWYgKGlzTnVtYmVyKGR1cmF0aW9uTGlrZSkpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgaWYgKER1cmF0aW9uLmlzRHVyYXRpb24oZHVyYXRpb25MaWtlKSkgewogICAgICAgIHJldHVybiBkdXJhdGlvbkxpa2U7CiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uTGlrZSA9PT0gIm9iamVjdCIpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdChkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBVbmtub3duIGR1cmF0aW9uIGFyZ3VtZW50ICR7ZHVyYXRpb25MaWtlfSBvZiB0eXBlICR7dHlwZW9mIGR1cmF0aW9uTGlrZX1gCiAgICAgICAgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSBkdXJhdGlvbiBzdHJpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyBmb3IgcGFyc2luZwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBwcmVzZXQgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9ucwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDNZNk0xVzREVDEySDMwTTVTJykudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDMsIG1vbnRoczogNiwgd2Vla3M6IDEsIGRheXM6IDQsIGhvdXJzOiAxMiwgbWludXRlczogMzAsIHNlY29uZHM6IDUgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUFQyM0gnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjMgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDVZM00nKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogNSwgbW9udGhzOiAzIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09EdXJhdGlvbih0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSB0aW1lIHN0cmluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGV4dCB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgcHJlc2V0IGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm1hdHJpeD1PYmplY3RdIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjIyOjMzLjQ0NCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMjIsIHNlY29uZHM6IDMzLCBtaWxsaXNlY29uZHM6IDQ0NCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJ1QxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnVDExMDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPVGltZSh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09UaW1lT25seSh0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRHVyYXRpb24uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBkYXRldGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHsKICAgICAgaWYgKCFyZWFzb24pIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRHVyYXRpb24gaXMgaW52YWxpZCIpOwogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pOwoKICAgICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWREdXJhdGlvbkVycm9yKGludmFsaWQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oeyBpbnZhbGlkIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBzdGF0aWMgbm9ybWFsaXplVW5pdCh1bml0KSB7CiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgICAgeWVhcjogInllYXJzIiwKICAgICAgICB5ZWFyczogInllYXJzIiwKICAgICAgICBxdWFydGVyOiAicXVhcnRlcnMiLAogICAgICAgIHF1YXJ0ZXJzOiAicXVhcnRlcnMiLAogICAgICAgIG1vbnRoOiAibW9udGhzIiwKICAgICAgICBtb250aHM6ICJtb250aHMiLAogICAgICAgIHdlZWs6ICJ3ZWVrcyIsCiAgICAgICAgd2Vla3M6ICJ3ZWVrcyIsCiAgICAgICAgZGF5OiAiZGF5cyIsCiAgICAgICAgZGF5czogImRheXMiLAogICAgICAgIGhvdXI6ICJob3VycyIsCiAgICAgICAgaG91cnM6ICJob3VycyIsCiAgICAgICAgbWludXRlOiAibWludXRlcyIsCiAgICAgICAgbWludXRlczogIm1pbnV0ZXMiLAogICAgICAgIHNlY29uZDogInNlY29uZHMiLAogICAgICAgIHNlY29uZHM6ICJzZWNvbmRzIiwKICAgICAgICBtaWxsaXNlY29uZDogIm1pbGxpc2Vjb25kcyIsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAibWlsbGlzZWNvbmRzIiwKICAgICAgfVt1bml0ID8gdW5pdC50b0xvd2VyQ2FzZSgpIDogdW5pdF07CgogICAgICBpZiAoIW5vcm1hbGl6ZWQpIHRocm93IG5ldyBJbnZhbGlkVW5pdEVycm9yKHVuaXQpOwoKICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBEdXJhdGlvbi4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0R1cmF0aW9uKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkR1cmF0aW9uKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCAgdGhlIGxvY2FsZSBvZiBhIER1cmF0aW9uLCBzdWNoICdlbi1HQicKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBsb2NhbGUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRHVyYXRpb24sIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRHVyYXRpb24KICAgICAqCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy4gWW91IG1heSB1c2UgdGhlc2UgdG9rZW5zOgogICAgICogKiBgU2AgZm9yIG1pbGxpc2Vjb25kcwogICAgICogKiBgc2AgZm9yIHNlY29uZHMKICAgICAqICogYG1gIGZvciBtaW51dGVzCiAgICAgKiAqIGBoYCBmb3IgaG91cnMKICAgICAqICogYGRgIGZvciBkYXlzCiAgICAgKiAqIGB3YCBmb3Igd2Vla3MKICAgICAqICogYE1gIGZvciBtb250aHMKICAgICAqICogYHlgIGZvciB5ZWFycwogICAgICogTm90ZXM6CiAgICAgKiAqIEFkZCBwYWRkaW5nIGJ5IHJlcGVhdGluZyB0aGUgdG9rZW4sIGUuZy4gInl5IiBwYWRzIHRoZSB5ZWFycyB0byB0d28gZGlnaXRzLCAiaGhoaCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzCiAgICAgKiAqIFRva2VucyBjYW4gYmUgZXNjYXBlZCBieSB3cmFwcGluZyB3aXRoIHNpbmdsZSBxdW90ZXMuCiAgICAgKiAqIFRoZSBkdXJhdGlvbiB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgc2V0IG9mIHVuaXRzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHVzaW5nIHtAbGluayBEdXJhdGlvbiNzaGlmdFRvfSBhbmQgdGhlIER1cmF0aW9ucydzIGNvbnZlcnNpb24gYWNjdXJhY3kgc2V0dGluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsb29yPXRydWVdIC0gZmxvb3IgbnVtZXJpY2FsIHZhbHVlcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5IGQgcyIpIC8vPT4gIjEgNiAyIgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5eSBkZCBzc3MiKSAvLz0+ICIwMSAwNiAwMDIiCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoIk0gUyIpIC8vPT4gIjEyIDUxODQwMjAwMCIKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9Gb3JtYXQoZm10LCBvcHRzID0ge30pIHsKICAgICAgLy8gcmV2ZXJzZS1jb21wYXQgc2luY2UgMS4yOyB3ZSBhbHdheXMgcm91bmQgZG93biBub3csIG5ldmVyIHVwLCBhbmQgd2UgZG8gaXQgYnkgZGVmYXVsdAogICAgICBjb25zdCBmbXRPcHRzID0gewogICAgICAgIC4uLm9wdHMsCiAgICAgICAgZmxvb3I6IG9wdHMucm91bmQgIT09IGZhbHNlICYmIG9wdHMuZmxvb3IgIT09IGZhbHNlLAogICAgICB9OwogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLCBmbXRPcHRzKS5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcodGhpcywgZm10KQogICAgICAgIDogSU5WQUxJRCQyOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIER1cmF0aW9uIHdpdGggYWxsIHVuaXRzIGluY2x1ZGVkLgogICAgICogVG8gbW9kaWZ5IGl0cyBiZWhhdmlvciB1c2UgdGhlIGBsaXN0U3R5bGVgIGFuZCBhbnkgSW50bC5OdW1iZXJGb3JtYXQgb3B0aW9uLCB0aG91Z2ggYHVuaXREaXNwbGF5YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50LgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL051bWJlckZvcm1hdAogICAgICogQHBhcmFtIG9wdHMgLSBPbiBvcHRpb24gb2JqZWN0IHRvIG92ZXJyaWRlIHRoZSBmb3JtYXR0aW5nLiBBY2NlcHRzIHRoZSBzYW1lIGtleXMgYXMgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIG9mIHRoZSBuYXRpdmUgYEludC5OdW1iZXJGb3JtYXRgIGNvbnN0cnVjdG9yLCBhcyB3ZWxsIGFzIGBsaXN0U3R5bGVgLgogICAgICogQGV4YW1wbGUKICAgICAqIGBgYGpzCiAgICAgKiB2YXIgZHVyID0gRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEsIGhvdXJzOiA1LCBtaW51dGVzOiA2IH0pCiAgICAgKiBkdXIudG9IdW1hbigpIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCA2IG1pbnV0ZXMnCiAgICAgKiBkdXIudG9IdW1hbih7IGxpc3RTdHlsZTogImxvbmciIH0pIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCBhbmQgNiBtaW51dGVzJwogICAgICogZHVyLnRvSHVtYW4oeyB1bml0RGlzcGxheTogInNob3J0IiB9KSAvLz0+ICcxIGRheSwgNSBociwgNiBtaW4nCiAgICAgKiBgYGAKICAgICAqLwogICAgdG9IdW1hbihvcHRzID0ge30pIHsKICAgICAgY29uc3QgbCA9IG9yZGVyZWRVbml0cyQxCiAgICAgICAgLm1hcCgodW5pdCkgPT4gewogICAgICAgICAgY29uc3QgdmFsID0gdGhpcy52YWx1ZXNbdW5pdF07CiAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiB0aGlzLmxvYwogICAgICAgICAgICAubnVtYmVyRm9ybWF0dGVyKHsgc3R5bGU6ICJ1bml0IiwgdW5pdERpc3BsYXk6ICJsb25nIiwgLi4ub3B0cywgdW5pdDogdW5pdC5zbGljZSgwLCAtMSkgfSkKICAgICAgICAgICAgLmZvcm1hdCh2YWwpOwogICAgICAgIH0pCiAgICAgICAgLmZpbHRlcigobikgPT4gbik7CgogICAgICByZXR1cm4gdGhpcy5sb2MKICAgICAgICAubGlzdEZvcm1hdHRlcih7IHR5cGU6ICJjb25qdW5jdGlvbiIsIHN0eWxlOiBvcHRzLmxpc3RTdHlsZSB8fCAibmFycm93IiwgLi4ub3B0cyB9KQogICAgICAgIC5mb3JtYXQobCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCB0aGlzIER1cmF0aW9uJ3MgdmFsdWVzLgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgdG9PYmplY3QoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4ge307CiAgICAgIHJldHVybiB7IC4uLnRoaXMudmFsdWVzIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbi4KICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjRHVyYXRpb25zCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDMsIHNlY29uZHM6IDQ1IH0pLnRvSVNPKCkgLy89PiAnUDNZVDQ1UycKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDQsIHNlY29uZHM6IDQ1IH0pLnRvSVNPKCkgLy89PiAnUDRNVDQ1UycKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDUgfSkudG9JU08oKSAvLz0+ICdQNU0nCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogNSB9KS50b0lTTygpIC8vPT4gJ1BUNU0nCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWlsbGlzZWNvbmRzOiA2IH0pLnRvSVNPKCkgLy89PiAnUFQwLjAwNlMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSVNPKCkgewogICAgICAvLyB3ZSBjb3VsZCB1c2UgdGhlIGZvcm1hdHRlciwgYnV0IHRoaXMgaXMgYW4gZWFzaWVyIHdheSB0byBnZXQgdGhlIG1pbmltdW0gc3RyaW5nCiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKCiAgICAgIGxldCBzID0gIlAiOwogICAgICBpZiAodGhpcy55ZWFycyAhPT0gMCkgcyArPSB0aGlzLnllYXJzICsgIlkiOwogICAgICBpZiAodGhpcy5tb250aHMgIT09IDAgfHwgdGhpcy5xdWFydGVycyAhPT0gMCkgcyArPSB0aGlzLm1vbnRocyArIHRoaXMucXVhcnRlcnMgKiAzICsgIk0iOwogICAgICBpZiAodGhpcy53ZWVrcyAhPT0gMCkgcyArPSB0aGlzLndlZWtzICsgIlciOwogICAgICBpZiAodGhpcy5kYXlzICE9PSAwKSBzICs9IHRoaXMuZGF5cyArICJEIjsKICAgICAgaWYgKHRoaXMuaG91cnMgIT09IDAgfHwgdGhpcy5taW51dGVzICE9PSAwIHx8IHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMCkKICAgICAgICBzICs9ICJUIjsKICAgICAgaWYgKHRoaXMuaG91cnMgIT09IDApIHMgKz0gdGhpcy5ob3VycyArICJIIjsKICAgICAgaWYgKHRoaXMubWludXRlcyAhPT0gMCkgcyArPSB0aGlzLm1pbnV0ZXMgKyAiTSI7CiAgICAgIGlmICh0aGlzLnNlY29uZHMgIT09IDAgfHwgdGhpcy5taWxsaXNlY29uZHMgIT09IDApCiAgICAgICAgLy8gdGhpcyB3aWxsIGhhbmRsZSAiZmxvYXRpbmcgcG9pbnQgbWFkbmVzcyIgYnkgcmVtb3ZpbmcgZXh0cmEgZGVjaW1hbCBwbGFjZXMKICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81ODgwMDQvaXMtZmxvYXRpbmctcG9pbnQtbWF0aC1icm9rZW4KICAgICAgICBzICs9IHJvdW5kVG8odGhpcy5zZWNvbmRzICsgdGhpcy5taWxsaXNlY29uZHMgLyAxMDAwLCAzKSArICJTIjsKICAgICAgaWYgKHMgPT09ICJQIikgcyArPSAiVDBTIjsKICAgICAgcmV0dXJuIHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiwgZm9ybWF0dGVkIGFzIGEgdGltZSBvZiBkYXkuCiAgICAgKiBOb3RlIHRoYXQgdGhpcyB3aWxsIHJldHVybiBudWxsIGlmIHRoZSBkdXJhdGlvbiBpcyBpbnZhbGlkLCBuZWdhdGl2ZSwgb3IgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIDI0IGhvdXJzLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lcwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVQcmVmaXg9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgYFRgIHByZWZpeAogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSgpIC8vPT4gJzExOjAwOjAwLjAwMCcKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NNaWxsaXNlY29uZHM6IHRydWUgfSkgLy89PiAnMTE6MDA6MDAnCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzU2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMCcKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMTE6MDA6MDAuMDAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBmb3JtYXQ6ICdiYXNpYycgfSkgLy89PiAnMTEwMDAwLjAwMCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09UaW1lKG9wdHMgPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIG51bGw7CgogICAgICBjb25zdCBtaWxsaXMgPSB0aGlzLnRvTWlsbGlzKCk7CiAgICAgIGlmIChtaWxsaXMgPCAwIHx8IG1pbGxpcyA+PSA4NjQwMDAwMCkgcmV0dXJuIG51bGw7CgogICAgICBvcHRzID0gewogICAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzOiBmYWxzZSwKICAgICAgICBzdXBwcmVzc1NlY29uZHM6IGZhbHNlLAogICAgICAgIGluY2x1ZGVQcmVmaXg6IGZhbHNlLAogICAgICAgIGZvcm1hdDogImV4dGVuZGVkIiwKICAgICAgICAuLi5vcHRzLAogICAgICB9OwoKICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnNoaWZ0VG8oImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiKTsKCiAgICAgIGxldCBmbXQgPSBvcHRzLmZvcm1hdCA9PT0gImJhc2ljIiA/ICJoaG1tIiA6ICJoaDptbSI7CgogICAgICBpZiAoIW9wdHMuc3VwcHJlc3NTZWNvbmRzIHx8IHZhbHVlLnNlY29uZHMgIT09IDAgfHwgdmFsdWUubWlsbGlzZWNvbmRzICE9PSAwKSB7CiAgICAgICAgZm10ICs9IG9wdHMuZm9ybWF0ID09PSAiYmFzaWMiID8gInNzIiA6ICI6c3MiOwogICAgICAgIGlmICghb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcyB8fCB2YWx1ZS5taWxsaXNlY29uZHMgIT09IDApIHsKICAgICAgICAgIGZtdCArPSAiLlNTUyI7CiAgICAgICAgfQogICAgICB9CgogICAgICBsZXQgc3RyID0gdmFsdWUudG9Gb3JtYXQoZm10KTsKCiAgICAgIGlmIChvcHRzLmluY2x1ZGVQcmVmaXgpIHsKICAgICAgICBzdHIgPSAiVCIgKyBzdHI7CiAgICAgIH0KCiAgICAgIHJldHVybiBzdHI7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24gYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBKU09OLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0pTT04oKSB7CiAgICAgIHJldHVybiB0aGlzLnRvSVNPKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24gYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBkZWJ1Z2dpbmcuCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU3RyaW5nKCkgewogICAgICByZXR1cm4gdGhpcy50b0lTTygpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBtaWxsaXNlY29uZHMgdmFsdWUgb2YgdGhpcyBEdXJhdGlvbi4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdG9NaWxsaXMoKSB7CiAgICAgIHJldHVybiB0aGlzLmFzKCJtaWxsaXNlY29uZHMiKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gbWlsbGlzZWNvbmRzIHZhbHVlIG9mIHRoaXMgRHVyYXRpb24uIEFsaWFzIG9mIHtAbGluayB0b01pbGxpc30KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdmFsdWVPZigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1ha2UgdGhpcyBEdXJhdGlvbiBsb25nZXIgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gYWRkLiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHBsdXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksCiAgICAgICAgcmVzdWx0ID0ge307CgogICAgICBmb3IgKGNvbnN0IGsgb2Ygb3JkZXJlZFVuaXRzJDEpIHsKICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkoZHVyLnZhbHVlcywgaykgfHwgaGFzT3duUHJvcGVydHkodGhpcy52YWx1ZXMsIGspKSB7CiAgICAgICAgICByZXN1bHRba10gPSBkdXIuZ2V0KGspICsgdGhpcy5nZXQoayk7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogcmVzdWx0IH0sIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogTWFrZSB0aGlzIER1cmF0aW9uIHNob3J0ZXIgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gc3VidHJhY3QuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgbWludXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CiAgICAgIHJldHVybiB0aGlzLnBsdXMoZHVyLm5lZ2F0ZSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNjYWxlIHRoaXMgRHVyYXRpb24gYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICogQHBhcmFtIHtmdW5jdGlvbn0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCB1bml0LiBBcml0eSBpcyAxIG9yIDI6IHRoZSB2YWx1ZSBvZiB0aGUgdW5pdCBhbmQsIG9wdGlvbmFsbHksIHRoZSB1bml0IG5hbWUuIE11c3QgcmV0dXJuIGEgbnVtYmVyLgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBtaW51dGVzOiAzMCB9KS5tYXBVbml0cyh4ID0+IHggKiAyKSAvLz0+IHsgaG91cnM6IDIsIG1pbnV0ZXM6IDYwIH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgbWludXRlczogMzAgfSkubWFwVW5pdHMoKHgsIHUpID0+IHUgPT09ICJob3VycyIgPyB4ICogMiA6IHgpIC8vPT4geyBob3VyczogMiwgbWludXRlczogMzAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG1hcFVuaXRzKGZuKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgY29uc3QgcmVzdWx0ID0ge307CiAgICAgIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcykpIHsKICAgICAgICByZXN1bHRba10gPSBhc051bWJlcihmbih0aGlzLnZhbHVlc1trXSwgaykpOwogICAgICB9CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsgdmFsdWVzOiByZXN1bHQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHZhbHVlIG9mIHVuaXQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIGEgdW5pdCBzdWNoIGFzICdtaW51dGUnIG9yICdkYXknCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgneWVhcnMnKSAvLz0+IDIKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAyLCBkYXlzOiAzfSkuZ2V0KCdtb250aHMnKSAvLz0+IDAKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAyLCBkYXlzOiAzfSkuZ2V0KCdkYXlzJykgLy89PiAzCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCh1bml0KSB7CiAgICAgIHJldHVybiB0aGlzW0R1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCldOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IHZhbHVlcyAtIGEgbWFwcGluZyBvZiB1bml0cyB0byBudW1iZXJzCiAgICAgKiBAZXhhbXBsZSBkdXIuc2V0KHsgeWVhcnM6IDIwMTcgfSkKICAgICAqIEBleGFtcGxlIGR1ci5zZXQoeyBob3VyczogOCwgbWludXRlczogMzAgfSkKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzZXQodmFsdWVzKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IG1peGVkID0geyAuLi50aGlzLnZhbHVlcywgLi4ubm9ybWFsaXplT2JqZWN0KHZhbHVlcywgRHVyYXRpb24ubm9ybWFsaXplVW5pdCkgfTsKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IG1peGVkIH0pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIGxvY2FsZSBhbmQvb3IgbnVtYmVyaW5nU3lzdGVtLiAgUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICogQGV4YW1wbGUgZHVyLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgY29udmVyc2lvbkFjY3VyYWN5LCBtYXRyaXggfSA9IHt9KSB7CiAgICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0gfSk7CiAgICAgIGNvbnN0IG9wdHMgPSB7IGxvYywgbWF0cml4LCBjb252ZXJzaW9uQWNjdXJhY3kgfTsKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgZHVyYXRpb24gaW4gdGhlIHNwZWNpZmllZCB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlcycgb3IgJ2RheXMnCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMX0pLmFzKCdkYXlzJykgLy89PiAzNjUKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAxfSkuYXMoJ21vbnRocycpIC8vPT4gMTIKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe2hvdXJzOiA2MH0pLmFzKCdkYXlzJykgLy89PiAyLjUKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgYXModW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5zaGlmdFRvKHVuaXQpLmdldCh1bml0KSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJlZHVjZSB0aGlzIER1cmF0aW9uIHRvIGl0cyBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gaW4gaXRzIGN1cnJlbnQgdW5pdHMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDIsIGRheXM6IDUwMDAgfSkubm9ybWFsaXplKCkudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDE1LCBkYXlzOiAyNTUgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMiwgbWludXRlczogLTQ1IH0pLm5vcm1hbGl6ZSgpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMTUgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG5vcm1hbGl6ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gdGhpcy50b09iamVjdCgpOwogICAgICBub3JtYWxpemVWYWx1ZXModGhpcy5tYXRyaXgsIHZhbHMpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2NhbGUgdW5pdHMgdG8gaXRzIGxhcmdlc3QgcmVwcmVzZW50YXRpb24KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDkwMDAwIH0pLnJlc2NhbGUoKS50b09iamVjdCgpIC8vPT4geyBtaW51dGVzOiAxLCBzZWNvbmRzOiAzMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgcmVzY2FsZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gcmVtb3ZlWmVyb2VzKHRoaXMubm9ybWFsaXplKCkuc2hpZnRUb0FsbCgpLnRvT2JqZWN0KCkpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgdGhpcyBEdXJhdGlvbiBpbnRvIGl0cyByZXByZXNlbnRhdGlvbiBpbiBhIGRpZmZlcmVudCBzZXQgb2YgdW5pdHMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLnNoaWZ0VG8oJ21pbnV0ZXMnLCAnbWlsbGlzZWNvbmRzJykudG9PYmplY3QoKSAvLz0+IHsgbWludXRlczogNjAsIG1pbGxpc2Vjb25kczogMzAwMDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG8oLi4udW5pdHMpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgaWYgKHVuaXRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CgogICAgICB1bml0cyA9IHVuaXRzLm1hcCgodSkgPT4gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1KSk7CgogICAgICBjb25zdCBidWlsdCA9IHt9LAogICAgICAgIGFjY3VtdWxhdGVkID0ge30sCiAgICAgICAgdmFscyA9IHRoaXMudG9PYmplY3QoKTsKICAgICAgbGV0IGxhc3RVbml0OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKHVuaXRzLmluZGV4T2YoaykgPj0gMCkgewogICAgICAgICAgbGFzdFVuaXQgPSBrOwoKICAgICAgICAgIGxldCBvd24gPSAwOwoKICAgICAgICAgIC8vIGFueXRoaW5nIHdlIGhhdmVuJ3QgYm9pbGVkIGRvd24geWV0IHNob3VsZCBnZXQgYm9pbGVkIHRvIHRoaXMgdW5pdAogICAgICAgICAgZm9yIChjb25zdCBhayBpbiBhY2N1bXVsYXRlZCkgewogICAgICAgICAgICBvd24gKz0gdGhpcy5tYXRyaXhbYWtdW2tdICogYWNjdW11bGF0ZWRbYWtdOwogICAgICAgICAgICBhY2N1bXVsYXRlZFtha10gPSAwOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIHBsdXMgYW55dGhpbmcgdGhhdCdzIGFscmVhZHkgaW4gdGhpcyB1bml0CiAgICAgICAgICBpZiAoaXNOdW1iZXIodmFsc1trXSkpIHsKICAgICAgICAgICAgb3duICs9IHZhbHNba107CiAgICAgICAgICB9CgogICAgICAgICAgY29uc3QgaSA9IE1hdGgudHJ1bmMob3duKTsKICAgICAgICAgIGJ1aWx0W2tdID0gaTsKICAgICAgICAgIGFjY3VtdWxhdGVkW2tdID0gKG93biAqIDEwMDAgLSBpICogMTAwMCkgLyAxMDAwOwoKICAgICAgICAgIC8vIHBsdXMgYW55dGhpbmcgZnVydGhlciBkb3duIHRoZSBjaGFpbiB0aGF0IHNob3VsZCBiZSByb2xsZWQgdXAgaW4gdG8gdGhpcwogICAgICAgICAgZm9yIChjb25zdCBkb3duIGluIHZhbHMpIHsKICAgICAgICAgICAgaWYgKG9yZGVyZWRVbml0cyQxLmluZGV4T2YoZG93bikgPiBvcmRlcmVkVW5pdHMkMS5pbmRleE9mKGspKSB7CiAgICAgICAgICAgICAgY29udmVydCh0aGlzLm1hdHJpeCwgdmFscywgZG93biwgYnVpbHQsIGspOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICAvLyBvdGhlcndpc2UsIGtlZXAgaXQgaW4gdGhlIHdpbmdzIHRvIGJvaWwgaXQgbGF0ZXIKICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKHZhbHNba10pKSB7CiAgICAgICAgICBhY2N1bXVsYXRlZFtrXSA9IHZhbHNba107CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBhbnl0aGluZyBsZWZ0b3ZlciBiZWNvbWVzIHRoZSBkZWNpbWFsIGZvciB0aGUgbGFzdCB1bml0CiAgICAgIC8vIGxhc3RVbml0IG11c3QgYmUgZGVmaW5lZCBzaW5jZSB1bml0cyBpcyBub3QgZW1wdHkKICAgICAgZm9yIChjb25zdCBrZXkgaW4gYWNjdW11bGF0ZWQpIHsKICAgICAgICBpZiAoYWNjdW11bGF0ZWRba2V5XSAhPT0gMCkgewogICAgICAgICAgYnVpbHRbbGFzdFVuaXRdICs9CiAgICAgICAgICAgIGtleSA9PT0gbGFzdFVuaXQgPyBhY2N1bXVsYXRlZFtrZXldIDogYWNjdW11bGF0ZWRba2V5XSAvIHRoaXMubWF0cml4W2xhc3RVbml0XVtrZXldOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IGJ1aWx0IH0sIHRydWUpLm5vcm1hbGl6ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogU2hpZnQgdGhpcyBEdXJhdGlvbiB0byBhbGwgYXZhaWxhYmxlIHVuaXRzLgogICAgICogU2FtZSBhcyBzaGlmdFRvKCJ5ZWFycyIsICJtb250aHMiLCAid2Vla3MiLCAiZGF5cyIsICJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiLCAibWlsbGlzZWNvbmRzIikKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzaGlmdFRvQWxsKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIHJldHVybiB0aGlzLnNoaWZ0VG8oCiAgICAgICAgInllYXJzIiwKICAgICAgICAibW9udGhzIiwKICAgICAgICAid2Vla3MiLAogICAgICAgICJkYXlzIiwKICAgICAgICAiaG91cnMiLAogICAgICAgICJtaW51dGVzIiwKICAgICAgICAic2Vjb25kcyIsCiAgICAgICAgIm1pbGxpc2Vjb25kcyIKICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgbmVnYXRpdmUgb2YgdGhpcyBEdXJhdGlvbi4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgc2Vjb25kczogMzAgfSkubmVnYXRlKCkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IC0xLCBzZWNvbmRzOiAtMzAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG5lZ2F0ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBuZWdhdGVkID0ge307CiAgICAgIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcykpIHsKICAgICAgICBuZWdhdGVkW2tdID0gdGhpcy52YWx1ZXNba10gPT09IDAgPyAwIDogLXRoaXMudmFsdWVzW2tdOwogICAgICB9CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsgdmFsdWVzOiBuZWdhdGVkIH0sIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB5ZWFycy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB5ZWFycygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnllYXJzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHF1YXJ0ZXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHF1YXJ0ZXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMucXVhcnRlcnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbW9udGhzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1vbnRocygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1vbnRocyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB3ZWVrcwogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMud2Vla3MgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGF5cy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBkYXlzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuZGF5cyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBob3Vycy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBob3VycygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLmhvdXJzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1pbnV0ZXMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWludXRlcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbnV0ZXMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2Vjb25kcy4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgZ2V0IHNlY29uZHMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5zZWNvbmRzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1pbGxpc2Vjb25kcy4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1pbGxpc2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbGxpc2Vjb25kcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBEdXJhdGlvbiBpcyBpbnZhbGlkLiBJbnZhbGlkIGR1cmF0aW9ucyBhcmUgcmV0dXJuZWQgYnkgZGlmZiBvcGVyYXRpb25zCiAgICAgKiBvbiBpbnZhbGlkIERhdGVUaW1lcyBvciBJbnRlcnZhbHMuCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNWYWxpZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA9PT0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZAogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICBnZXQgaW52YWxpZFJlYXNvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5yZWFzb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBEdXJhdGlvbiBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRHVyYXRpb24gaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQuZXhwbGFuYXRpb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogRXF1YWxpdHkgY2hlY2sKICAgICAqIFR3byBEdXJhdGlvbnMgYXJlIGVxdWFsIGlmZiB0aGV5IGhhdmUgdGhlIHNhbWUgdW5pdHMgYW5kIHRoZSBzYW1lIHZhbHVlcyBmb3IgZWFjaCB1bml0LgogICAgICogQHBhcmFtIHtEdXJhdGlvbn0gb3RoZXIKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGVxdWFscyhvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhb3RoZXIuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQoKICAgICAgaWYgKCF0aGlzLmxvYy5lcXVhbHMob3RoZXIubG9jKSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gZXEodjEsIHYyKSB7CiAgICAgICAgLy8gQ29uc2lkZXIgMCBhbmQgdW5kZWZpbmVkIGFzIGVxdWFsCiAgICAgICAgaWYgKHYxID09PSB1bmRlZmluZWQgfHwgdjEgPT09IDApIHJldHVybiB2MiA9PT0gdW5kZWZpbmVkIHx8IHYyID09PSAwOwogICAgICAgIHJldHVybiB2MSA9PT0gdjI7CiAgICAgIH0KCiAgICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMkMSkgewogICAgICAgIGlmICghZXEodGhpcy52YWx1ZXNbdV0sIG90aGVyLnZhbHVlc1t1XSkpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgfQoKICBjb25zdCBJTlZBTElEJDEgPSAiSW52YWxpZCBJbnRlcnZhbCI7CgogIC8vIGNoZWNrcyBpZiB0aGUgc3RhcnQgaXMgZXF1YWwgdG8gb3IgYmVmb3JlIHRoZSBlbmQKICBmdW5jdGlvbiB2YWxpZGF0ZVN0YXJ0RW5kKHN0YXJ0LCBlbmQpIHsKICAgIGlmICghc3RhcnQgfHwgIXN0YXJ0LmlzVmFsaWQpIHsKICAgICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoIm1pc3Npbmcgb3IgaW52YWxpZCBzdGFydCIpOwogICAgfSBlbHNlIGlmICghZW5kIHx8ICFlbmQuaXNWYWxpZCkgewogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgibWlzc2luZyBvciBpbnZhbGlkIGVuZCIpOwogICAgfSBlbHNlIGlmIChlbmQgPCBzdGFydCkgewogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgKICAgICAgICAiZW5kIGJlZm9yZSBzdGFydCIsCiAgICAgICAgYFRoZSBlbmQgb2YgYW4gaW50ZXJ2YWwgbXVzdCBiZSBhZnRlciBpdHMgc3RhcnQsIGJ1dCB5b3UgaGFkIHN0YXJ0PSR7c3RhcnQudG9JU08oKX0gYW5kIGVuZD0ke2VuZC50b0lTTygpfWAKICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQogIH0KCiAgLyoqCiAgICogQW4gSW50ZXJ2YWwgb2JqZWN0IHJlcHJlc2VudHMgYSBoYWxmLW9wZW4gaW50ZXJ2YWwgb2YgdGltZSwgd2hlcmUgZWFjaCBlbmRwb2ludCBpcyBhIHtAbGluayBEYXRlVGltZX0uIENvbmNlcHR1YWxseSwgaXQncyBhIGNvbnRhaW5lciBmb3IgdGhvc2UgdHdvIGVuZHBvaW50cywgYWNjb21wYW5pZWQgYnkgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIGNvbXBhcmluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLgogICAqCiAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgbWV0aG9kcyBhbmQgZ2V0dGVycyBpbiBJbnRlcnZhbDoKICAgKgogICAqICogKipDcmVhdGlvbioqIFRvIGNyZWF0ZSBhbiBJbnRlcnZhbCwgdXNlIHtAbGluayBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzfSwge0BsaW5rIEludGVydmFsLmFmdGVyfSwge0BsaW5rIEludGVydmFsLmJlZm9yZX0sIG9yIHtAbGluayBJbnRlcnZhbC5mcm9tSVNPfS4KICAgKiAqICoqQWNjZXNzb3JzKiogVXNlIHtAbGluayBJbnRlcnZhbCNzdGFydH0gYW5kIHtAbGluayBJbnRlcnZhbCNlbmR9IHRvIGdldCB0aGUgc3RhcnQgYW5kIGVuZC4KICAgKiAqICoqSW50ZXJyb2dhdGlvbioqIFRvIGFuYWx5emUgdGhlIEludGVydmFsLCB1c2Uge0BsaW5rIEludGVydmFsI2NvdW50fSwge0BsaW5rIEludGVydmFsI2xlbmd0aH0sIHtAbGluayBJbnRlcnZhbCNoYXNTYW1lfSwge0BsaW5rIEludGVydmFsI2NvbnRhaW5zfSwge0BsaW5rIEludGVydmFsI2lzQWZ0ZXJ9LCBvciB7QGxpbmsgSW50ZXJ2YWwjaXNCZWZvcmV9LgogICAqICogKipUcmFuc2Zvcm1hdGlvbioqIFRvIGNyZWF0ZSBvdGhlciBJbnRlcnZhbHMgb3V0IG9mIHRoaXMgb25lLCB1c2Uge0BsaW5rIEludGVydmFsI3NldH0sIHtAbGluayBJbnRlcnZhbCNzcGxpdEF0fSwge0BsaW5rIEludGVydmFsI3NwbGl0Qnl9LCB7QGxpbmsgSW50ZXJ2YWwjZGl2aWRlRXF1YWxseX0sIHtAbGluayBJbnRlcnZhbC5tZXJnZX0sIHtAbGluayBJbnRlcnZhbC54b3J9LCB7QGxpbmsgSW50ZXJ2YWwjdW5pb259LCB7QGxpbmsgSW50ZXJ2YWwjaW50ZXJzZWN0aW9ufSwgb3Ige0BsaW5rIEludGVydmFsI2RpZmZlcmVuY2V9LgogICAqICogKipDb21wYXJpc29uKiogVG8gY29tcGFyZSB0aGlzIEludGVydmFsIHRvIGFub3RoZXIgb25lLCB1c2Uge0BsaW5rIEludGVydmFsI2VxdWFsc30sIHtAbGluayBJbnRlcnZhbCNvdmVybGFwc30sIHtAbGluayBJbnRlcnZhbCNhYnV0c1N0YXJ0fSwge0BsaW5rIEludGVydmFsI2FidXRzRW5kfSwge0BsaW5rIEludGVydmFsI2VuZ3VsZnN9CiAgICogKiAqKk91dHB1dCoqIFRvIGNvbnZlcnQgdGhlIEludGVydmFsIGludG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCBzZWUge0BsaW5rIEludGVydmFsI3RvU3RyaW5nfSwge0BsaW5rIEludGVydmFsI3RvTG9jYWxlU3RyaW5nfSwge0BsaW5rIEludGVydmFsI3RvSVNPfSwge0BsaW5rIEludGVydmFsI3RvSVNPRGF0ZX0sIHtAbGluayBJbnRlcnZhbCN0b0lTT1RpbWV9LCB7QGxpbmsgSW50ZXJ2YWwjdG9Gb3JtYXR9LCBhbmQge0BsaW5rIEludGVydmFsI3RvRHVyYXRpb259LgogICAqLwogIGNsYXNzIEludGVydmFsIHsKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwogICAgY29uc3RydWN0b3IoY29uZmlnKSB7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMucyA9IGNvbmZpZy5zdGFydDsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5lID0gY29uZmlnLmVuZDsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5pbnZhbGlkID0gY29uZmlnLmludmFsaWQgfHwgbnVsbDsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5pc0x1eG9uSW50ZXJ2YWwgPSB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgSW50ZXJ2YWwuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBJbnRlcnZhbCBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHsKICAgICAgaWYgKCFyZWFzb24pIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgSW50ZXJ2YWwgaXMgaW52YWxpZCIpOwogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pOwoKICAgICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRJbnRlcnZhbEVycm9yKGludmFsaWQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgSW50ZXJ2YWwoeyBpbnZhbGlkIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gSW50ZXJ2YWwgZnJvbSBhIHN0YXJ0IERhdGVUaW1lIGFuZCBhbiBlbmQgRGF0ZVRpbWUuIEluY2x1c2l2ZSBvZiB0aGUgc3RhcnQgYnV0IG5vdCB0aGUgZW5kLgogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IGVuZAogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tRGF0ZVRpbWVzKHN0YXJ0LCBlbmQpIHsKICAgICAgY29uc3QgYnVpbHRTdGFydCA9IGZyaWVuZGx5RGF0ZVRpbWUoc3RhcnQpLAogICAgICAgIGJ1aWx0RW5kID0gZnJpZW5kbHlEYXRlVGltZShlbmQpOwoKICAgICAgY29uc3QgdmFsaWRhdGVFcnJvciA9IHZhbGlkYXRlU3RhcnRFbmQoYnVpbHRTdGFydCwgYnVpbHRFbmQpOwoKICAgICAgaWYgKHZhbGlkYXRlRXJyb3IgPT0gbnVsbCkgewogICAgICAgIHJldHVybiBuZXcgSW50ZXJ2YWwoewogICAgICAgICAgc3RhcnQ6IGJ1aWx0U3RhcnQsCiAgICAgICAgICBlbmQ6IGJ1aWx0RW5kLAogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB2YWxpZGF0ZUVycm9yOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gSW50ZXJ2YWwgZnJvbSBhIHN0YXJ0IERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCB0by4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IHN0YXJ0CiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gdGhlIGxlbmd0aCBvZiB0aGUgSW50ZXJ2YWwuCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGFmdGVyKHN0YXJ0LCBkdXJhdGlvbikgewogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKSwKICAgICAgICBkdCA9IGZyaWVuZGx5RGF0ZVRpbWUoc3RhcnQpOwogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdCwgZHQucGx1cyhkdXIpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGFuIGVuZCBEYXRlVGltZSBhbmQgYSBEdXJhdGlvbiB0byBleHRlbmQgYmFja3dhcmRzIHRvLgogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gdGhlIGxlbmd0aCBvZiB0aGUgSW50ZXJ2YWwuCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGJlZm9yZShlbmQsIGR1cmF0aW9uKSB7CiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShlbmQpOwogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdC5taW51cyhkdXIpLCBkdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gSW50ZXJ2YWwgZnJvbSBhbiBJU08gODYwMSBzdHJpbmcuCiAgICAgKiBBY2NlcHRzIGA8c3RhcnQ+LzxlbmQ+YCwgYDxzdGFydD4vPGR1cmF0aW9uPmAsIGFuZCBgPGR1cmF0aW9uPi88ZW5kPmAgZm9ybWF0cy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIElTTyBzdHJpbmcgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBvcHRpb25zIHRvIHBhc3Mge0BsaW5rIERhdGVUaW1lI2Zyb21JU099IGFuZCBvcHRpb25hbGx5IHtAbGluayBEdXJhdGlvbiNmcm9tSVNPfQogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMpIHsKICAgICAgY29uc3QgW3MsIGVdID0gKHRleHQgfHwgIiIpLnNwbGl0KCIvIiwgMik7CiAgICAgIGlmIChzICYmIGUpIHsKICAgICAgICBsZXQgc3RhcnQsIHN0YXJ0SXNWYWxpZDsKICAgICAgICB0cnkgewogICAgICAgICAgc3RhcnQgPSBEYXRlVGltZS5mcm9tSVNPKHMsIG9wdHMpOwogICAgICAgICAgc3RhcnRJc1ZhbGlkID0gc3RhcnQuaXNWYWxpZDsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBzdGFydElzVmFsaWQgPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGxldCBlbmQsIGVuZElzVmFsaWQ7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIGVuZCA9IERhdGVUaW1lLmZyb21JU08oZSwgb3B0cyk7CiAgICAgICAgICBlbmRJc1ZhbGlkID0gZW5kLmlzVmFsaWQ7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgZW5kSXNWYWxpZCA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0YXJ0SXNWYWxpZCAmJiBlbmRJc1ZhbGlkKSB7CiAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzdGFydCwgZW5kKTsKICAgICAgICB9CgogICAgICAgIGlmIChzdGFydElzVmFsaWQpIHsKICAgICAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21JU08oZSwgb3B0cyk7CiAgICAgICAgICBpZiAoZHVyLmlzVmFsaWQpIHsKICAgICAgICAgICAgcmV0dXJuIEludGVydmFsLmFmdGVyKHN0YXJ0LCBkdXIpOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoZW5kSXNWYWxpZCkgewogICAgICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhzLCBvcHRzKTsKICAgICAgICAgIGlmIChkdXIuaXNWYWxpZCkgewogICAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYmVmb3JlKGVuZCwgZHVyKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBhbiBJbnRlcnZhbC4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0ludGVydmFsKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkludGVydmFsKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHN0YXJ0IG9mIHRoZSBJbnRlcnZhbAogICAgICogQHR5cGUge0RhdGVUaW1lfQogICAgICovCiAgICBnZXQgc3RhcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnMgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZW5kIG9mIHRoZSBJbnRlcnZhbAogICAgICogQHR5cGUge0RhdGVUaW1lfQogICAgICovCiAgICBnZXQgZW5kKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5lIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGlzIEludGVydmFsJ3MgZW5kIGlzIGF0IGxlYXN0IGl0cyBzdGFydCwgbWVhbmluZyB0aGF0IHRoZSBJbnRlcnZhbCBpc24ndCAnYmFja3dhcmRzJy4KICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNWYWxpZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZFJlYXNvbiA9PT0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIEludGVydmFsIGlzIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIEludGVydmFsIGlzIHZhbGlkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgaW52YWxpZFJlYXNvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5yZWFzb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBJbnRlcnZhbCBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQuZXhwbGFuYXRpb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbCBpbiB0aGUgc3BlY2lmaWVkIHVuaXQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byByZXR1cm4gdGhlIGxlbmd0aCBpbi4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgbGVuZ3RoKHVuaXQgPSAibWlsbGlzZWNvbmRzIikgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50b0R1cmF0aW9uKC4uLlt1bml0XSkuZ2V0KHVuaXQpIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgY291bnQgb2YgbWludXRlcywgaG91cnMsIGRheXMsIG1vbnRocywgb3IgeWVhcnMgaW5jbHVkZWQgaW4gdGhlIEludGVydmFsLCBldmVuIGluIHBhcnQuCiAgICAgKiBVbmxpa2Uge0BsaW5rIEludGVydmFsI2xlbmd0aH0gdGhpcyBjb3VudHMgc2VjdGlvbnMgb2YgdGhlIGNhbGVuZGFyLCBub3QgcGVyaW9kcyBvZiB0aW1lLCBlLmcuIHNwZWNpZnlpbmcgJ2RheScKICAgICAqIGFza3MgJ3doYXQgZGF0ZXMgYXJlIGluY2x1ZGVkIGluIHRoaXMgaW50ZXJ2YWw/Jywgbm90ICdob3cgbWFueSBkYXlzIGxvbmcgaXMgdGhpcyBpbnRlcnZhbD8nCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3VuaXQ9J21pbGxpc2Vjb25kcyddIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgY291bnQodW5pdCA9ICJtaWxsaXNlY29uZHMiKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gTmFOOwogICAgICBjb25zdCBzdGFydCA9IHRoaXMuc3RhcnQuc3RhcnRPZih1bml0KSwKICAgICAgICBlbmQgPSB0aGlzLmVuZC5zdGFydE9mKHVuaXQpOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihlbmQuZGlmZihzdGFydCwgdW5pdCkuZ2V0KHVuaXQpKSArIDE7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGhhc1NhbWUodW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5pc0VtcHR5KCkgfHwgdGhpcy5lLm1pbnVzKDEpLmhhc1NhbWUodGhpcy5zLCB1bml0KSA6IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBEYXRlVGltZXMuCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0VtcHR5KCkgewogICAgICByZXR1cm4gdGhpcy5zLnZhbHVlT2YoKSA9PT0gdGhpcy5lLnZhbHVlT2YoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBpcyBhZnRlciB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGlzQWZ0ZXIoZGF0ZVRpbWUpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIHRoaXMucyA+IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBiZWZvcmUgdGhlIHNwZWNpZmllZCBEYXRlVGltZS4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0JlZm9yZShkYXRlVGltZSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gdGhpcy5lIDw9IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBjb250YWlucyB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGNvbnRhaW5zKGRhdGVUaW1lKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gZGF0ZVRpbWUgJiYgdGhpcy5lID4gZGF0ZVRpbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0cyIgdGhlIHN0YXJ0IGFuZC9vciBlbmQgZGF0ZXMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIHRvIHNldAogICAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLnN0YXJ0IC0gdGhlIHN0YXJ0aW5nIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSB2YWx1ZXMuZW5kIC0gdGhlIGVuZGluZyBEYXRlVGltZQogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHNldCh7IHN0YXJ0LCBlbmQgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQgfHwgdGhpcy5zLCBlbmQgfHwgdGhpcy5lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgYXQgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIERhdGVUaW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC4KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzcGxpdEF0KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIFtdOwogICAgICBjb25zdCBzb3J0ZWQgPSBkYXRlVGltZXMKICAgICAgICAgIC5tYXAoZnJpZW5kbHlEYXRlVGltZSkKICAgICAgICAgIC5maWx0ZXIoKGQpID0+IHRoaXMuY29udGFpbnMoZCkpCiAgICAgICAgICAuc29ydCgpLAogICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpID0gMDsKCiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSBzb3J0ZWRbaV0gfHwgdGhpcy5lLAogICAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaSArPSAxOwogICAgICB9CgogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgaW50byBzbWFsbGVyIEludGVydmFscywgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4KICAgICAqIExlZnQgb3ZlciB0aW1lIGlzIGdyb3VwZWQgaW50byBhIHNtYWxsZXIgaW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgbGVuZ3RoIG9mIGVhY2ggcmVzdWx0aW5nIGludGVydmFsLgogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHNwbGl0QnkoZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CgogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhZHVyLmlzVmFsaWQgfHwgZHVyLmFzKCJtaWxsaXNlY29uZHMiKSA9PT0gMCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQoKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpZHggPSAxLAogICAgICAgIG5leHQ7CgogICAgICBjb25zdCByZXN1bHRzID0gW107CiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLnN0YXJ0LnBsdXMoZHVyLm1hcFVuaXRzKCh4KSA9PiB4ICogaWR4KSk7CiAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaWR4ICs9IDE7CiAgICAgIH0KCiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfQoKICAgIC8qKgogICAgICogU3BsaXQgdGhpcyBJbnRlcnZhbCBpbnRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNtYWxsZXIgaW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlck9mUGFydHMgLSBUaGUgbnVtYmVyIG9mIEludGVydmFscyB0byBkaXZpZGUgdGhlIEludGVydmFsIGludG8uCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgZGl2aWRlRXF1YWxseShudW1iZXJPZlBhcnRzKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107CiAgICAgIHJldHVybiB0aGlzLnNwbGl0QnkodGhpcy5sZW5ndGgoKSAvIG51bWJlck9mUGFydHMpLnNsaWNlKDAsIG51bWJlck9mUGFydHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBvdmVybGFwcyB3aXRoIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBvdmVybGFwcyhvdGhlcikgewogICAgICByZXR1cm4gdGhpcy5lID4gb3RoZXIucyAmJiB0aGlzLnMgPCBvdGhlci5lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBhZGphY2VudCB0byB0aGUgc3BlY2lmaWVkIEludGVydmFsJ3Mgc3RhcnQuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgYWJ1dHNTdGFydChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK3RoaXMuZSA9PT0gK290aGVyLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBhYnV0c0VuZChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGVuZ3VsZnMgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlbmd1bGZzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gb3RoZXIucyAmJiB0aGlzLmUgPj0gb3RoZXIuZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgaGFzIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgYXMgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLnMuZXF1YWxzKG90aGVyLnMpICYmIHRoaXMuZS5lcXVhbHMob3RoZXIuZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIFNwZWNpZmljYWxseSwgdGhlIHJlc3VsdGluZyBJbnRlcnZhbCBoYXMgdGhlIG1heGltdW0gc3RhcnQgdGltZSBhbmQgdGhlIG1pbmltdW0gZW5kIHRpbWUgb2YgdGhlIHR3byBJbnRlcnZhbHMuCiAgICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGludGVyc2VjdGlvbiBpcyBlbXB0eSwgbWVhbmluZywgdGhlIGludGVydmFscyBkb24ndCBpbnRlcnNlY3QuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIGludGVyc2VjdGlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPiBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lIDwgb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CgogICAgICBpZiAocyA+PSBlKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIHVuaW9uIG9mIHRoaXMgSW50ZXJ2YWwgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuCiAgICAgKiBTcGVjaWZpY2FsbHksIHRoZSByZXN1bHRpbmcgSW50ZXJ2YWwgaGFzIHRoZSBtaW5pbXVtIHN0YXJ0IHRpbWUgYW5kIHRoZSBtYXhpbXVtIGVuZCB0aW1lIG9mIHRoZSB0d28gSW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bmlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPCBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIGUpOwogICAgfQoKICAgIC8qKgogICAgICogTWVyZ2UgYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIGludG8gYSBlcXVpdmFsZW50IG1pbmltYWwgc2V0IG9mIEludGVydmFscy4KICAgICAqIENvbWJpbmVzIG92ZXJsYXBwaW5nIGFuZCBhZGphY2VudCBJbnRlcnZhbHMuCiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbnRlcnZhbHMKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbWVyZ2UoaW50ZXJ2YWxzKSB7CiAgICAgIGNvbnN0IFtmb3VuZCwgZmluYWxdID0gaW50ZXJ2YWxzCiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEucyAtIGIucykKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFtzb2ZhciwgY3VycmVudF0sIGl0ZW0pID0+IHsKICAgICAgICAgICAgaWYgKCFjdXJyZW50KSB7CiAgICAgICAgICAgICAgcmV0dXJuIFtzb2ZhciwgaXRlbV07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5vdmVybGFwcyhpdGVtKSB8fCBjdXJyZW50LmFidXRzU3RhcnQoaXRlbSkpIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLCBjdXJyZW50LnVuaW9uKGl0ZW0pXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLmNvbmNhdChbY3VycmVudF0pLCBpdGVtXTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIFtbXSwgbnVsbF0KICAgICAgICApOwogICAgICBpZiAoZmluYWwpIHsKICAgICAgICBmb3VuZC5wdXNoKGZpbmFsKTsKICAgICAgfQogICAgICByZXR1cm4gZm91bmQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIHJlcHJlc2VudGluZyB0aGUgc3BhbnMgb2YgdGltZSB0aGF0IG9ubHkgYXBwZWFyIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHN0YXRpYyB4b3IoaW50ZXJ2YWxzKSB7CiAgICAgIGxldCBzdGFydCA9IG51bGwsCiAgICAgICAgY3VycmVudENvdW50ID0gMDsKICAgICAgY29uc3QgcmVzdWx0cyA9IFtdLAogICAgICAgIGVuZHMgPSBpbnRlcnZhbHMubWFwKChpKSA9PiBbCiAgICAgICAgICB7IHRpbWU6IGkucywgdHlwZTogInMiIH0sCiAgICAgICAgICB7IHRpbWU6IGkuZSwgdHlwZTogImUiIH0sCiAgICAgICAgXSksCiAgICAgICAgZmxhdHRlbmVkID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi5lbmRzKSwKICAgICAgICBhcnIgPSBmbGF0dGVuZWQuc29ydCgoYSwgYikgPT4gYS50aW1lIC0gYi50aW1lKTsKCiAgICAgIGZvciAoY29uc3QgaSBvZiBhcnIpIHsKICAgICAgICBjdXJyZW50Q291bnQgKz0gaS50eXBlID09PSAicyIgPyAxIDogLTE7CgogICAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHsKICAgICAgICAgIHN0YXJ0ID0gaS50aW1lOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7CiAgICAgICAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBpLnRpbWUpKTsKICAgICAgICAgIH0KCiAgICAgICAgICBzdGFydCA9IG51bGw7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gSW50ZXJ2YWwubWVyZ2UocmVzdWx0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBzcGFuIG9mIHRpbWUgaW4gdGhpcyBJbnRlcnZhbCB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7Li4uSW50ZXJ2YWx9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIGRpZmZlcmVuY2UoLi4uaW50ZXJ2YWxzKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC54b3IoW3RoaXNdLmNvbmNhdChpbnRlcnZhbHMpKQogICAgICAgIC5tYXAoKGkpID0+IHRoaXMuaW50ZXJzZWN0aW9uKGkpKQogICAgICAgIC5maWx0ZXIoKGkpID0+IGkgJiYgIWkuaXNFbXB0eSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgIHJldHVybiBgWyR7dGhpcy5zLnRvSVNPKCl9IOKAkyAke3RoaXMuZS50b0lTTygpfSlgOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgSW50ZXJ2YWwuIEFjY2VwdHMgdGhlIHNhbWUgb3B0aW9ucyBhcyB0aGUKICAgICAqIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMKICAgICAqIHtAbGluayBEYXRlVGltZS5EQVRFX0ZVTEx9IG9yIHtAbGluayBEYXRlVGltZS5USU1FX1NJTVBMRX0uIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZAogICAgICogaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCiAgICAgKiBJbnRlcnZhbCBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbgogICAgICogc3BlY2lmaWVkLgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdAogICAgICogQHBhcmFtIHtPYmplY3R9IFtmb3JtYXRPcHRzPURhdGVUaW1lLkRBVEVfU0hPUlRdIC0gRWl0aGVyIGEgRGF0ZVRpbWUgcHJlc2V0IG9yCiAgICAgKiBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHN0YXJ0IERhdGVUaW1lLgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZygpOyAvLz0+IDExLzcvMjAyMiDigJMgMTEvOC8yMDIyCiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tSVNPKCcyMDIyLTExLTA3VDA5OjAwWi8yMDIyLTExLTA4VDA5OjAwWicpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gTm92ZW1iZXIgNyDigJMgOCwgMjAyMgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwsIHsgbG9jYWxlOiAnZnItRlInIH0pOyAvLz0+IDfigJM4IG5vdmVtYnJlIDIwMjIKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuVElNRV9TSU1QTEUpOyAvLz0+IDY6MDAg4oCTIDg6MDAgUE0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnc2hvcnQnLCBtb250aDogJ3Nob3J0JywgZGF5OiAnMi1kaWdpdCcsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSk7IC8vPT4gTW9uLCBOb3YgMDcsIDY6MDAg4oCTIDg6MDAgcAogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5zLmxvYy5jbG9uZShvcHRzKSwgZm9ybWF0T3B0cykuZm9ybWF0SW50ZXJ2YWwodGhpcykKICAgICAgICA6IElOVkFMSUQkMTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT30KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08ob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTTyhvcHRzKX0vJHt0aGlzLmUudG9JU08ob3B0cyl9YDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBkYXRlIG9mIHRoaXMgSW50ZXJ2YWwuCiAgICAgKiBUaGUgdGltZSBjb21wb25lbnRzIGFyZSBpZ25vcmVkLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPRGF0ZSgpfS8ke3RoaXMuZS50b0lTT0RhdGUoKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRpbWUgb2YgdGhpcyBJbnRlcnZhbC4KICAgICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFRoZSBzYW1lIG9wdGlvbnMgYXMge0BsaW5rIERhdGVUaW1lI3RvSVNPfQogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTT1RpbWUob3B0cyl9LyR7dGhpcy5lLnRvSVNPVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQKICAgICAqIHN0cmluZy4gKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBJbnRlcnZhbCN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZQogICAgICogZm9ybWF0dGluZyB0b29sLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVGb3JtYXQgLSBUaGUgZm9ybWF0IHN0cmluZy4gVGhpcyBzdHJpbmcgZm9ybWF0cyB0aGUgc3RhcnQgYW5kIGVuZCB0aW1lLgogICAgICogU2VlIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0gZm9yIGRldGFpbHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuc2VwYXJhdG9yID0gICcg4oCTICddIC0gQSBzZXBhcmF0b3IgdG8gcGxhY2UgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICogcmVwcmVzZW50YXRpb25zLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0Zvcm1hdChkYXRlRm9ybWF0LCB7IHNlcGFyYXRvciA9ICIg4oCTICIgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvRm9ybWF0KGRhdGVGb3JtYXQpfSR7c2VwYXJhdG9yfSR7dGhpcy5lLnRvRm9ybWF0KGRhdGVGb3JtYXQpfWA7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYSBEdXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHRpbWUgc3Bhbm5lZCBieSB0aGlzIGludGVydmFsLgogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbigpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogODg0ODkyNTcgfQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignZGF5cycpLnRvT2JqZWN0KCkgLy89PiB7IGRheXM6IDEuMDI0MTgxMjE1Mjc3Nzc3OCB9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcyddKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjQsIG1pbnV0ZXM6IDM0LjgyMDk1IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXSkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDI0LCBtaW51dGVzOiAzNCwgc2Vjb25kczogNDkuMjU3IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ3NlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBzZWNvbmRzOiA4ODQ4OS4yNTcgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHRvRHVyYXRpb24odW5pdCwgb3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKHRoaXMuaW52YWxpZFJlYXNvbik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZS5kaWZmKHRoaXMucywgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzCiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtYXBGbgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSkKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLm1hcEVuZHBvaW50cyhlbmRwb2ludCA9PiBlbmRwb2ludC5wbHVzKHsgaG91cnM6IDIgfSkpCiAgICAgKi8KICAgIG1hcEVuZHBvaW50cyhtYXBGbikgewogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhtYXBGbih0aGlzLnMpLCBtYXBGbih0aGlzLmUpKTsKICAgIH0KICB9CgogIC8qKgogICAqIFRoZSBJbmZvIGNsYXNzIGNvbnRhaW5zIHN0YXRpYyBtZXRob2RzIGZvciByZXRyaWV2aW5nIGdlbmVyYWwgdGltZSBhbmQgZGF0ZSByZWxhdGVkIGRhdGEuIEZvciBleGFtcGxlLCBpdCBoYXMgbWV0aG9kcyBmb3IgZmluZGluZyBvdXQgaWYgYSB0aW1lIHpvbmUgaGFzIGEgRFNULCBmb3IgbGlzdGluZyB0aGUgbW9udGhzIGluIGFueSBzdXBwb3J0ZWQgbG9jYWxlLCBhbmQgZm9yIGRpc2NvdmVyaW5nIHdoaWNoIG9mIEx1eG9uIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCiAgICovCiAgY2xhc3MgSW5mbyB7CiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gWm9uZSB0byBjaGVjay4gRGVmYXVsdHMgdG8gdGhlIGVudmlyb25tZW50J3MgbG9jYWwgem9uZS4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBoYXNEU1Qoem9uZSA9IFNldHRpbmdzLmRlZmF1bHRab25lKSB7CiAgICAgIGNvbnN0IHByb3RvID0gRGF0ZVRpbWUubm93KCkuc2V0Wm9uZSh6b25lKS5zZXQoeyBtb250aDogMTIgfSk7CgogICAgICByZXR1cm4gIXpvbmUuaXNVbml2ZXJzYWwgJiYgcHJvdG8ub2Zmc2V0ICE9PSBwcm90by5zZXQoeyBtb250aDogNiB9KS5vZmZzZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGUgc3BlY2lmaWVkIHpvbmUgaXMgYSB2YWxpZCBJQU5BIHNwZWNpZmllci4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB6b25lIC0gWm9uZSB0byBjaGVjawogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzVmFsaWRJQU5BWm9uZSh6b25lKSB7CiAgICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkWm9uZSh6b25lKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBpbnB1dCBpbnRvIGEge0BsaW5rIFpvbmV9IGluc3RhbmNlLgogICAgICoKICAgICAqICogSWYgYGlucHV0YCBpcyBhbHJlYWR5IGEgWm9uZSBpbnN0YW5jZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCB0aW1lIHpvbmUgbmFtZSwgYSBab25lIGluc3RhbmNlCiAgICAgKiAgIHdpdGggdGhhdCBuYW1lIGlzIHJldHVybmVkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIHRoYXQgZG9lc24ndCByZWZlciB0byBhIGtub3duIHRpbWUgem9uZSwgYSBab25lCiAgICAgKiAgIGluc3RhbmNlIHdpdGgge0BsaW5rIFpvbmUjaXNWYWxpZH0gPT0gZmFsc2UgaXMgcmV0dXJuZWQuCiAgICAgKiAqIElmIGBpbnB1dCBpcyBhIG51bWJlciwgYSBab25lIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBmaXhlZCBvZmZzZXQKICAgICAqICAgaW4gbWludXRlcyBpcyByZXR1cm5lZC4KICAgICAqICogSWYgYGlucHV0YCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoZSBkZWZhdWx0IHpvbmUgaXMgcmV0dXJuZWQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfG51bWJlcn0gW2lucHV0XSAtIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQKICAgICAqIEByZXR1cm4ge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBub3JtYWxpemVab25lKGlucHV0KSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGlucHV0LCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygc3RhbmRhbG9uZSBtb250aCBuYW1lcy4KICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibnVtZXJpYyIsICIyLWRpZ2l0IiwgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcj0nZ3JlZ29yeSddIC0gdGhlIGNhbGVuZGFyCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygpWzBdIC8vPT4gJ0phbnVhcnknCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnKVswXSAvLz0+ICdKYW4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycpWzBdIC8vPT4gJzEnCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9IClbMF0gLy89PiAnamFudi4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycsIHsgbG9jYWxlOiAnYXInIH0pWzBdIC8vPT4gJ9mhJwogICAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ2xvbmcnLCB7IG91dHB1dENhbGVuZGFyOiAnaXNsYW1pYycgfSlbMF0gLy89PiAnUmFiacq7IEknCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1vbnRocygKICAgICAgbGVuZ3RoID0gImxvbmciLAogICAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwsIG91dHB1dENhbGVuZGFyID0gImdyZWdvcnkiIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZm9ybWF0IG1vbnRoIG5hbWVzLgogICAgICogRm9ybWF0IG1vbnRocyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIG1vbnRocyBpbiB0aGF0IHRoZXkncmUgbWVhbnQgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGRheSBvZiB0aGUgbW9udGguIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jbW9udGhzfQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJudW1lcmljIiwgIjItZGlnaXQiLCAibmFycm93IiwgInNob3J0IiwgImxvbmciCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm91dHB1dENhbGVuZGFyPSdncmVnb3J5J10gLSB0aGUgY2FsZW5kYXIKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbW9udGhzRm9ybWF0KAogICAgICBsZW5ndGggPSAibG9uZyIsCiAgICAgIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCwgb3V0cHV0Q2FsZW5kYXIgPSAiZ3JlZ29yeSIgfSA9IHt9CiAgICApIHsKICAgICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpKS5tb250aHMobGVuZ3RoLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIHdlZWsgbmFtZXMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgd2Vla2RheSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibmFycm93IiwgInNob3J0IiwgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoKVswXSAvLz0+ICdNb25kYXknCiAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcpWzBdIC8vPT4gJ01vbicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdmci1DQScgfSlbMF0gLy89PiAnbHVuLicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAn2KfZhNin2KvZhtmK2YYnCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIHdlZWtkYXlzKGxlbmd0aCA9ICJsb25nIiwgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fSkgewogICAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgd2VlayBuYW1lcy4KICAgICAqIEZvcm1hdCB3ZWVrZGF5cyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIHdlZWtkYXlzIGluIHRoYXQgdGhleSdyZSBtZWFudCB0byBhcHBlYXIgbmV4dCB0byBtb3JlIGRhdGUgaW5mb3JtYXRpb24uIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jd2Vla2RheXN9CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgbW9udGggcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT1udWxsXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgd2Vla2RheXNGb3JtYXQoCiAgICAgIGxlbmd0aCA9ICJsb25nIiwKICAgICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG51bGwpKS53ZWVrZGF5cyhsZW5ndGgsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGFycmF5IG9mIG1lcmlkaWVtcy4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKCkgLy89PiBbICdBTScsICdQTScgXQogICAgICogQGV4YW1wbGUgSW5mby5tZXJpZGllbXMoeyBsb2NhbGU6ICdteScgfSkgLy89PiBbICfhgJThgLbhgJThgIDhgLonLCAn4YCK4YCU4YCxJyBdCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1lcmlkaWVtcyh7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSkubWVyaWRpZW1zKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZXJhcywgc3VjaCBhcyBbJ0JDJywgJ0FEJ10uIFRoZSBsb2NhbGUgY2FuIGJlIHNwZWNpZmllZCwgYnV0IHRoZSBjYWxlbmRhciBzeXN0ZW0gaXMgYWx3YXlzIEdyZWdvcmlhbi4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdzaG9ydCddIC0gdGhlIGxlbmd0aCBvZiB0aGUgZXJhIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJzaG9ydCIgb3IgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCkgLy89PiBbICdCQycsICdBRCcgXQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJykgLy89PiBbICdCZWZvcmUgQ2hyaXN0JywgJ0Fubm8gRG9taW5pJyBdCiAgICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnLCB7IGxvY2FsZTogJ2ZyJyB9KSAvLz0+IFsgJ2F2YW50IErDqXN1cy1DaHJpc3QnLCAnYXByw6hzIErDqXN1cy1DaHJpc3QnIF0KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgZXJhcyhsZW5ndGggPSAic2hvcnQiLCB7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVsbCwgImdyZWdvcnkiKS5lcmFzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHNldCBvZiBhdmFpbGFibGUgZmVhdHVyZXMgaW4gdGhpcyBlbnZpcm9ubWVudC4KICAgICAqIFNvbWUgZmVhdHVyZXMgb2YgTHV4b24gYXJlIG5vdCBhdmFpbGFibGUgaW4gYWxsIGVudmlyb25tZW50cy4gRm9yIGV4YW1wbGUsIG9uIG9sZGVyIGJyb3dzZXJzLCByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlLiBVc2UgdGhpcyBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IGlmIHRoYXQncyB0aGUgY2FzZS4KICAgICAqIEtleXM6CiAgICAgKiAqIGByZWxhdGl2ZWA6IHdoZXRoZXIgdGhpcyBlbnZpcm9ubWVudCBzdXBwb3J0cyByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcKICAgICAqIEBleGFtcGxlIEluZm8uZmVhdHVyZXMoKSAvLz0+IHsgcmVsYXRpdmU6IGZhbHNlIH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGZlYXR1cmVzKCkgewogICAgICByZXR1cm4geyByZWxhdGl2ZTogaGFzUmVsYXRpdmUoKSB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF5RGlmZihlYXJsaWVyLCBsYXRlcikgewogICAgY29uc3QgdXRjRGF5U3RhcnQgPSAoZHQpID0+IGR0LnRvVVRDKDAsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksCiAgICAgIG1zID0gdXRjRGF5U3RhcnQobGF0ZXIpIC0gdXRjRGF5U3RhcnQoZWFybGllcik7CiAgICByZXR1cm4gTWF0aC5mbG9vcihEdXJhdGlvbi5mcm9tTWlsbGlzKG1zKS5hcygiZGF5cyIpKTsKICB9CgogIGZ1bmN0aW9uIGhpZ2hPcmRlckRpZmZzKGN1cnNvciwgbGF0ZXIsIHVuaXRzKSB7CiAgICBjb25zdCBkaWZmZXJzID0gWwogICAgICBbInllYXJzIiwgKGEsIGIpID0+IGIueWVhciAtIGEueWVhcl0sCiAgICAgIFsicXVhcnRlcnMiLCAoYSwgYikgPT4gYi5xdWFydGVyIC0gYS5xdWFydGVyICsgKGIueWVhciAtIGEueWVhcikgKiA0XSwKICAgICAgWyJtb250aHMiLCAoYSwgYikgPT4gYi5tb250aCAtIGEubW9udGggKyAoYi55ZWFyIC0gYS55ZWFyKSAqIDEyXSwKICAgICAgWwogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgKGEsIGIpID0+IHsKICAgICAgICAgIGNvbnN0IGRheXMgPSBkYXlEaWZmKGEsIGIpOwogICAgICAgICAgcmV0dXJuIChkYXlzIC0gKGRheXMgJSA3KSkgLyA3OwogICAgICAgIH0sCiAgICAgIF0sCiAgICAgIFsiZGF5cyIsIGRheURpZmZdLAogICAgXTsKCiAgICBjb25zdCByZXN1bHRzID0ge307CiAgICBjb25zdCBlYXJsaWVyID0gY3Vyc29yOwogICAgbGV0IGxvd2VzdE9yZGVyLCBoaWdoV2F0ZXI7CgogICAgZm9yIChjb25zdCBbdW5pdCwgZGlmZmVyXSBvZiBkaWZmZXJzKSB7CiAgICAgIGlmICh1bml0cy5pbmRleE9mKHVuaXQpID49IDApIHsKICAgICAgICBsb3dlc3RPcmRlciA9IHVuaXQ7CgogICAgICAgIHJlc3VsdHNbdW5pdF0gPSBkaWZmZXIoY3Vyc29yLCBsYXRlcik7CiAgICAgICAgaGlnaFdhdGVyID0gZWFybGllci5wbHVzKHJlc3VsdHMpOwoKICAgICAgICBpZiAoaGlnaFdhdGVyID4gbGF0ZXIpIHsKICAgICAgICAgIHJlc3VsdHNbdW5pdF0tLTsKICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY3Vyc29yID0gaGlnaFdhdGVyOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBbY3Vyc29yLCByZXN1bHRzLCBoaWdoV2F0ZXIsIGxvd2VzdE9yZGVyXTsKICB9CgogIGZ1bmN0aW9uIGRpZmYgKGVhcmxpZXIsIGxhdGVyLCB1bml0cywgb3B0cykgewogICAgbGV0IFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdID0gaGlnaE9yZGVyRGlmZnMoZWFybGllciwgbGF0ZXIsIHVuaXRzKTsKCiAgICBjb25zdCByZW1haW5pbmdNaWxsaXMgPSBsYXRlciAtIGN1cnNvcjsKCiAgICBjb25zdCBsb3dlck9yZGVyVW5pdHMgPSB1bml0cy5maWx0ZXIoCiAgICAgICh1KSA9PiBbImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiXS5pbmRleE9mKHUpID49IDAKICAgICk7CgogICAgaWYgKGxvd2VyT3JkZXJVbml0cy5sZW5ndGggPT09IDApIHsKICAgICAgaWYgKGhpZ2hXYXRlciA8IGxhdGVyKSB7CiAgICAgICAgaGlnaFdhdGVyID0gY3Vyc29yLnBsdXMoeyBbbG93ZXN0T3JkZXJdOiAxIH0pOwogICAgICB9CgogICAgICBpZiAoaGlnaFdhdGVyICE9PSBjdXJzb3IpIHsKICAgICAgICByZXN1bHRzW2xvd2VzdE9yZGVyXSA9IChyZXN1bHRzW2xvd2VzdE9yZGVyXSB8fCAwKSArIHJlbWFpbmluZ01pbGxpcyAvIChoaWdoV2F0ZXIgLSBjdXJzb3IpOwogICAgICB9CiAgICB9CgogICAgY29uc3QgZHVyYXRpb24gPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHJlc3VsdHMsIG9wdHMpOwoKICAgIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID4gMCkgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhyZW1haW5pbmdNaWxsaXMsIG9wdHMpCiAgICAgICAgLnNoaWZ0VG8oLi4ubG93ZXJPcmRlclVuaXRzKQogICAgICAgIC5wbHVzKGR1cmF0aW9uKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBkdXJhdGlvbjsKICAgIH0KICB9CgogIGNvbnN0IG51bWJlcmluZ1N5c3RlbXMgPSB7CiAgICBhcmFiOiAiW1x1MDY2MC1cdTA2NjldIiwKICAgIGFyYWJleHQ6ICJbXHUwNkYwLVx1MDZGOV0iLAogICAgYmFsaTogIltcdTFCNTAtXHUxQjU5XSIsCiAgICBiZW5nOiAiW1x1MDlFNi1cdTA5RUZdIiwKICAgIGRldmE6ICJbXHUwOTY2LVx1MDk2Rl0iLAogICAgZnVsbHdpZGU6ICJbXHVGRjEwLVx1RkYxOV0iLAogICAgZ3VqcjogIltcdTBBRTYtXHUwQUVGXSIsCiAgICBoYW5pZGVjOiAiW+OAh3zkuIB85LqMfOS4iXzlm5t85LqUfOWFrXzkuIN85YWrfOS5nV0iLAogICAga2htcjogIltcdTE3RTAtXHUxN0U5XSIsCiAgICBrbmRhOiAiW1x1MENFNi1cdTBDRUZdIiwKICAgIGxhb286ICJbXHUwRUQwLVx1MEVEOV0iLAogICAgbGltYjogIltcdTE5NDYtXHUxOTRGXSIsCiAgICBtbHltOiAiW1x1MEQ2Ni1cdTBENkZdIiwKICAgIG1vbmc6ICJbXHUxODEwLVx1MTgxOV0iLAogICAgbXltcjogIltcdTEwNDAtXHUxMDQ5XSIsCiAgICBvcnlhOiAiW1x1MEI2Ni1cdTBCNkZdIiwKICAgIHRhbWxkZWM6ICJbXHUwQkU2LVx1MEJFRl0iLAogICAgdGVsdTogIltcdTBDNjYtXHUwQzZGXSIsCiAgICB0aGFpOiAiW1x1MEU1MC1cdTBFNTldIiwKICAgIHRpYnQ6ICJbXHUwRjIwLVx1MEYyOV0iLAogICAgbGF0bjogIlxcZCIsCiAgfTsKCiAgY29uc3QgbnVtYmVyaW5nU3lzdGVtc1VURjE2ID0gewogICAgYXJhYjogWzE2MzIsIDE2NDFdLAogICAgYXJhYmV4dDogWzE3NzYsIDE3ODVdLAogICAgYmFsaTogWzY5OTIsIDcwMDFdLAogICAgYmVuZzogWzI1MzQsIDI1NDNdLAogICAgZGV2YTogWzI0MDYsIDI0MTVdLAogICAgZnVsbHdpZGU6IFs2NTI5NiwgNjUzMDNdLAogICAgZ3VqcjogWzI3OTAsIDI3OTldLAogICAga2htcjogWzYxMTIsIDYxMjFdLAogICAga25kYTogWzMzMDIsIDMzMTFdLAogICAgbGFvbzogWzM3OTIsIDM4MDFdLAogICAgbGltYjogWzY0NzAsIDY0NzldLAogICAgbWx5bTogWzM0MzAsIDM0MzldLAogICAgbW9uZzogWzYxNjAsIDYxNjldLAogICAgbXltcjogWzQxNjAsIDQxNjldLAogICAgb3J5YTogWzI5MTgsIDI5MjddLAogICAgdGFtbGRlYzogWzMwNDYsIDMwNTVdLAogICAgdGVsdTogWzMxNzQsIDMxODNdLAogICAgdGhhaTogWzM2NjQsIDM2NzNdLAogICAgdGlidDogWzM4NzIsIDM4ODFdLAogIH07CgogIGNvbnN0IGhhbmlkZWNDaGFycyA9IG51bWJlcmluZ1N5c3RlbXMuaGFuaWRlYy5yZXBsYWNlKC9bXFt8XF1dL2csICIiKS5zcGxpdCgiIik7CgogIGZ1bmN0aW9uIHBhcnNlRGlnaXRzKHN0cikgewogICAgbGV0IHZhbHVlID0gcGFyc2VJbnQoc3RyLCAxMCk7CiAgICBpZiAoaXNOYU4odmFsdWUpKSB7CiAgICAgIHZhbHVlID0gIiI7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpOwoKICAgICAgICBpZiAoc3RyW2ldLnNlYXJjaChudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMpICE9PSAtMSkgewogICAgICAgICAgdmFsdWUgKz0gaGFuaWRlY0NoYXJzLmluZGV4T2Yoc3RyW2ldKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbnVtYmVyaW5nU3lzdGVtc1VURjE2KSB7CiAgICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBudW1iZXJpbmdTeXN0ZW1zVVRGMTZba2V5XTsKICAgICAgICAgICAgaWYgKGNvZGUgPj0gbWluICYmIGNvZGUgPD0gbWF4KSB7CiAgICAgICAgICAgICAgdmFsdWUgKz0gY29kZSAtIG1pbjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGRpZ2l0UmVnZXgoeyBudW1iZXJpbmdTeXN0ZW0gfSwgYXBwZW5kID0gIiIpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKGAke251bWJlcmluZ1N5c3RlbXNbbnVtYmVyaW5nU3lzdGVtIHx8ICJsYXRuIl19JHthcHBlbmR9YCk7CiAgfQoKICBjb25zdCBNSVNTSU5HX0ZUUCA9ICJtaXNzaW5nIEludGwuRGF0ZVRpbWVGb3JtYXQuZm9ybWF0VG9QYXJ0cyBzdXBwb3J0IjsKCiAgZnVuY3Rpb24gaW50VW5pdChyZWdleCwgcG9zdCA9IChpKSA9PiBpKSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHBvc3QocGFyc2VEaWdpdHMocykpIH07CiAgfQoKICBjb25zdCBOQlNQID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApOwogIGNvbnN0IHNwYWNlT3JOQlNQID0gYFsgJHtOQlNQfV1gOwogIGNvbnN0IHNwYWNlT3JOQlNQUmVnRXhwID0gbmV3IFJlZ0V4cChzcGFjZU9yTkJTUCwgImciKTsKCiAgZnVuY3Rpb24gZml4TGlzdFJlZ2V4KHMpIHsKICAgIC8vIG1ha2UgZG90cyBvcHRpb25hbCBhbmQgYWxzbyBtYWtlIHRoZW0gbGl0ZXJhbAogICAgLy8gbWFrZSBzcGFjZSBhbmQgbm9uIGJyZWFrYWJsZSBzcGFjZSBjaGFyYWN0ZXJzIGludGVyY2hhbmdlYWJsZQogICAgcmV0dXJuIHMucmVwbGFjZSgvXC4vZywgIlxcLj8iKS5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCBzcGFjZU9yTkJTUCk7CiAgfQoKICBmdW5jdGlvbiBzdHJpcEluc2Vuc2l0aXZpdGllcyhzKSB7CiAgICByZXR1cm4gcwogICAgICAucmVwbGFjZSgvXC4vZywgIiIpIC8vIGlnbm9yZSBkb3RzIHRoYXQgd2VyZSBtYWRlIG9wdGlvbmFsCiAgICAgIC5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCAiICIpIC8vIGludGVyY2hhbmdlIHNwYWNlIGFuZCBuYnNwCiAgICAgIC50b0xvd2VyQ2FzZSgpOwogIH0KCiAgZnVuY3Rpb24gb25lT2Yoc3RyaW5ncywgc3RhcnRJbmRleCkgewogICAgaWYgKHN0cmluZ3MgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gewogICAgICAgIHJlZ2V4OiBSZWdFeHAoc3RyaW5ncy5tYXAoZml4TGlzdFJlZ2V4KS5qb2luKCJ8IikpLAogICAgICAgIGRlc2VyOiAoW3NdKSA9PgogICAgICAgICAgc3RyaW5ncy5maW5kSW5kZXgoKGkpID0+IHN0cmlwSW5zZW5zaXRpdml0aWVzKHMpID09PSBzdHJpcEluc2Vuc2l0aXZpdGllcyhpKSkgKyBzdGFydEluZGV4LAogICAgICB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gb2Zmc2V0KHJlZ2V4LCBncm91cHMpIHsKICAgIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFssIGgsIG1dKSA9PiBzaWduZWRPZmZzZXQoaCwgbSksIGdyb3VwcyB9OwogIH0KCiAgZnVuY3Rpb24gc2ltcGxlKHJlZ2V4KSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHMgfTsKICB9CgogIGZ1bmN0aW9uIGVzY2FwZVRva2VuKHZhbHVlKSB7CiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywgIlxcJCYiKTsKICB9CgogIGZ1bmN0aW9uIHVuaXRGb3JUb2tlbih0b2tlbiwgbG9jKSB7CiAgICBjb25zdCBvbmUgPSBkaWdpdFJlZ2V4KGxvYyksCiAgICAgIHR3byA9IGRpZ2l0UmVnZXgobG9jLCAiezJ9IiksCiAgICAgIHRocmVlID0gZGlnaXRSZWdleChsb2MsICJ7M30iKSwKICAgICAgZm91ciA9IGRpZ2l0UmVnZXgobG9jLCAiezR9IiksCiAgICAgIHNpeCA9IGRpZ2l0UmVnZXgobG9jLCAiezZ9IiksCiAgICAgIG9uZU9yVHdvID0gZGlnaXRSZWdleChsb2MsICJ7MSwyfSIpLAogICAgICBvbmVUb1RocmVlID0gZGlnaXRSZWdleChsb2MsICJ7MSwzfSIpLAogICAgICBvbmVUb1NpeCA9IGRpZ2l0UmVnZXgobG9jLCAiezEsNn0iKSwKICAgICAgb25lVG9OaW5lID0gZGlnaXRSZWdleChsb2MsICJ7MSw5fSIpLAogICAgICB0d29Ub0ZvdXIgPSBkaWdpdFJlZ2V4KGxvYywgInsyLDR9IiksCiAgICAgIGZvdXJUb1NpeCA9IGRpZ2l0UmVnZXgobG9jLCAiezQsNn0iKSwKICAgICAgbGl0ZXJhbCA9ICh0KSA9PiAoeyByZWdleDogUmVnRXhwKGVzY2FwZVRva2VuKHQudmFsKSksIGRlc2VyOiAoW3NdKSA9PiBzLCBsaXRlcmFsOiB0cnVlIH0pLAogICAgICB1bml0YXRlID0gKHQpID0+IHsKICAgICAgICBpZiAodG9rZW4ubGl0ZXJhbCkgewogICAgICAgICAgcmV0dXJuIGxpdGVyYWwodCk7CiAgICAgICAgfQogICAgICAgIHN3aXRjaCAodC52YWwpIHsKICAgICAgICAgIC8vIGVyYQogICAgICAgICAgY2FzZSAiRyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MuZXJhcygic2hvcnQiLCBmYWxzZSksIDApOwogICAgICAgICAgY2FzZSAiR0ciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoImxvbmciLCBmYWxzZSksIDApOwogICAgICAgICAgLy8geWVhcnMKICAgICAgICAgIGNhc2UgInkiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1NpeCk7CiAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpOwogICAgICAgICAgY2FzZSAieXl5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXIpOwogICAgICAgICAgY2FzZSAieXl5eXkiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyVG9TaXgpOwogICAgICAgICAgY2FzZSAieXl5eXl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoc2l4KTsKICAgICAgICAgIC8vIG1vbnRocwogICAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIk1NIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIk1NTSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJzaG9ydCIsIHRydWUsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJNTU1NIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoImxvbmciLCB0cnVlLCBmYWxzZSksIDEpOwogICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIkxMIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIkxMTCI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJzaG9ydCIsIGZhbHNlLCBmYWxzZSksIDEpOwogICAgICAgICAgY2FzZSAiTExMTCI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJsb25nIiwgZmFsc2UsIGZhbHNlKSwgMSk7CiAgICAgICAgICAvLyBkYXRlcwogICAgICAgICAgY2FzZSAiZCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgImRkIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIC8vIG9yZGluYWxzCiAgICAgICAgICBjYXNlICJvIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7CiAgICAgICAgICBjYXNlICJvb28iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7CiAgICAgICAgICAvLyB0aW1lCiAgICAgICAgICBjYXNlICJISCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAiaGgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiaCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIm1tIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJxIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAicXEiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAicyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInNzIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIlMiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1RocmVlKTsKICAgICAgICAgIGNhc2UgIlNTUyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHRocmVlKTsKICAgICAgICAgIGNhc2UgInUiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKG9uZVRvTmluZSk7CiAgICAgICAgICBjYXNlICJ1dSI6CiAgICAgICAgICAgIHJldHVybiBzaW1wbGUob25lT3JUd28pOwogICAgICAgICAgY2FzZSAidXV1IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lKTsKICAgICAgICAgIC8vIG1lcmlkaWVtCiAgICAgICAgICBjYXNlICJhIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tZXJpZGllbXMoKSwgMCk7CiAgICAgICAgICAvLyB3ZWVrWWVhciAoaykKICAgICAgICAgIGNhc2UgImtra2siOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyKTsKICAgICAgICAgIGNhc2UgImtrIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvVG9Gb3VyLCB1bnRydW5jYXRlWWVhcik7CiAgICAgICAgICAvLyB3ZWVrTnVtYmVyIChXKQogICAgICAgICAgY2FzZSAiVyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIldXIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIC8vIHdlZWtkYXlzCiAgICAgICAgICBjYXNlICJFIjoKICAgICAgICAgIGNhc2UgImMiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmUpOwogICAgICAgICAgY2FzZSAiRUVFIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy53ZWVrZGF5cygic2hvcnQiLCBmYWxzZSwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKCJsb25nIiwgZmFsc2UsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJjY2MiOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKCJzaG9ydCIsIHRydWUsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJjY2NjIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy53ZWVrZGF5cygibG9uZyIsIHRydWUsIGZhbHNlKSwgMSk7CiAgICAgICAgICAvLyBvZmZzZXQvem9uZQogICAgICAgICAgY2FzZSAiWiI6CiAgICAgICAgICBjYXNlICJaWiI6CiAgICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKD86Oigke3R3by5zb3VyY2V9KSk/YCksIDIpOwogICAgICAgICAgY2FzZSAiWlpaIjoKICAgICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKGAoWystXSR7b25lT3JUd28uc291cmNlfSkoJHt0d28uc291cmNlfSk/YCksIDIpOwogICAgICAgICAgLy8gd2UgZG9uJ3Qgc3VwcG9ydCBaWlpaIChQU1QpIG9yIFpaWlpaIChQYWNpZmljIFN0YW5kYXJkIFRpbWUpIGluIHBhcnNpbmcKICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhbnkgd2F5IHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGV5IGFyZQogICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgIHJldHVybiBzaW1wbGUoL1thLXpfKy0vXXsxLDI1Nn0/L2kpOwogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIGxpdGVyYWwodCk7CiAgICAgICAgfQogICAgICB9OwoKICAgIGNvbnN0IHVuaXQgPSB1bml0YXRlKHRva2VuKSB8fCB7CiAgICAgIGludmFsaWRSZWFzb246IE1JU1NJTkdfRlRQLAogICAgfTsKCiAgICB1bml0LnRva2VuID0gdG9rZW47CgogICAgcmV0dXJuIHVuaXQ7CiAgfQoKICBjb25zdCBwYXJ0VHlwZVN0eWxlVG9Ub2tlblZhbCA9IHsKICAgIHllYXI6IHsKICAgICAgIjItZGlnaXQiOiAieXkiLAogICAgICBudW1lcmljOiAieXl5eXkiLAogICAgfSwKICAgIG1vbnRoOiB7CiAgICAgIG51bWVyaWM6ICJNIiwKICAgICAgIjItZGlnaXQiOiAiTU0iLAogICAgICBzaG9ydDogIk1NTSIsCiAgICAgIGxvbmc6ICJNTU1NIiwKICAgIH0sCiAgICBkYXk6IHsKICAgICAgbnVtZXJpYzogImQiLAogICAgICAiMi1kaWdpdCI6ICJkZCIsCiAgICB9LAogICAgd2Vla2RheTogewogICAgICBzaG9ydDogIkVFRSIsCiAgICAgIGxvbmc6ICJFRUVFIiwKICAgIH0sCiAgICBkYXlwZXJpb2Q6ICJhIiwKICAgIGRheVBlcmlvZDogImEiLAogICAgaG91cjogewogICAgICBudW1lcmljOiAiaCIsCiAgICAgICIyLWRpZ2l0IjogImhoIiwKICAgIH0sCiAgICBtaW51dGU6IHsKICAgICAgbnVtZXJpYzogIm0iLAogICAgICAiMi1kaWdpdCI6ICJtbSIsCiAgICB9LAogICAgc2Vjb25kOiB7CiAgICAgIG51bWVyaWM6ICJzIiwKICAgICAgIjItZGlnaXQiOiAic3MiLAogICAgfSwKICAgIHRpbWVab25lTmFtZTogewogICAgICBsb25nOiAiWlpaWloiLAogICAgICBzaG9ydDogIlpaWiIsCiAgICB9LAogIH07CgogIGZ1bmN0aW9uIHRva2VuRm9yUGFydChwYXJ0LCBmb3JtYXRPcHRzKSB7CiAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBwYXJ0OwoKICAgIGlmICh0eXBlID09PSAibGl0ZXJhbCIpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBsaXRlcmFsOiB0cnVlLAogICAgICAgIHZhbDogdmFsdWUsCiAgICAgIH07CiAgICB9CgogICAgY29uc3Qgc3R5bGUgPSBmb3JtYXRPcHRzW3R5cGVdOwoKICAgIGxldCB2YWwgPSBwYXJ0VHlwZVN0eWxlVG9Ub2tlblZhbFt0eXBlXTsKICAgIGlmICh0eXBlb2YgdmFsID09PSAib2JqZWN0IikgewogICAgICB2YWwgPSB2YWxbc3R5bGVdOwogICAgfQoKICAgIGlmICh2YWwpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBsaXRlcmFsOiBmYWxzZSwKICAgICAgICB2YWwsCiAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIHVuZGVmaW5lZDsKICB9CgogIGZ1bmN0aW9uIGJ1aWxkUmVnZXgodW5pdHMpIHsKICAgIGNvbnN0IHJlID0gdW5pdHMubWFwKCh1KSA9PiB1LnJlZ2V4KS5yZWR1Y2UoKGYsIHIpID0+IGAke2Z9KCR7ci5zb3VyY2V9KWAsICIiKTsKICAgIHJldHVybiBbYF4ke3JlfSRgLCB1bml0c107CiAgfQoKICBmdW5jdGlvbiBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSB7CiAgICBjb25zdCBtYXRjaGVzID0gaW5wdXQubWF0Y2gocmVnZXgpOwoKICAgIGlmIChtYXRjaGVzKSB7CiAgICAgIGNvbnN0IGFsbCA9IHt9OwogICAgICBsZXQgbWF0Y2hJbmRleCA9IDE7CiAgICAgIGZvciAoY29uc3QgaSBpbiBoYW5kbGVycykgewogICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShoYW5kbGVycywgaSkpIHsKICAgICAgICAgIGNvbnN0IGggPSBoYW5kbGVyc1tpXSwKICAgICAgICAgICAgZ3JvdXBzID0gaC5ncm91cHMgPyBoLmdyb3VwcyArIDEgOiAxOwogICAgICAgICAgaWYgKCFoLmxpdGVyYWwgJiYgaC50b2tlbikgewogICAgICAgICAgICBhbGxbaC50b2tlbi52YWxbMF1dID0gaC5kZXNlcihtYXRjaGVzLnNsaWNlKG1hdGNoSW5kZXgsIG1hdGNoSW5kZXggKyBncm91cHMpKTsKICAgICAgICAgIH0KICAgICAgICAgIG1hdGNoSW5kZXggKz0gZ3JvdXBzOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gW21hdGNoZXMsIGFsbF07CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gW21hdGNoZXMsIHt9XTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcykgewogICAgY29uc3QgdG9GaWVsZCA9ICh0b2tlbikgPT4gewogICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICByZXR1cm4gIm1pbGxpc2Vjb25kIjsKICAgICAgICBjYXNlICJzIjoKICAgICAgICAgIHJldHVybiAic2Vjb25kIjsKICAgICAgICBjYXNlICJtIjoKICAgICAgICAgIHJldHVybiAibWludXRlIjsKICAgICAgICBjYXNlICJoIjoKICAgICAgICBjYXNlICJIIjoKICAgICAgICAgIHJldHVybiAiaG91ciI7CiAgICAgICAgY2FzZSAiZCI6CiAgICAgICAgICByZXR1cm4gImRheSI7CiAgICAgICAgY2FzZSAibyI6CiAgICAgICAgICByZXR1cm4gIm9yZGluYWwiOwogICAgICAgIGNhc2UgIkwiOgogICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgcmV0dXJuICJtb250aCI7CiAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICByZXR1cm4gInllYXIiOwogICAgICAgIGNhc2UgIkUiOgogICAgICAgIGNhc2UgImMiOgogICAgICAgICAgcmV0dXJuICJ3ZWVrZGF5IjsKICAgICAgICBjYXNlICJXIjoKICAgICAgICAgIHJldHVybiAid2Vla051bWJlciI7CiAgICAgICAgY2FzZSAiayI6CiAgICAgICAgICByZXR1cm4gIndlZWtZZWFyIjsKICAgICAgICBjYXNlICJxIjoKICAgICAgICAgIHJldHVybiAicXVhcnRlciI7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICB9OwoKICAgIGxldCB6b25lID0gbnVsbDsKICAgIGxldCBzcGVjaWZpY09mZnNldDsKICAgIGlmICghaXNVbmRlZmluZWQobWF0Y2hlcy56KSkgewogICAgICB6b25lID0gSUFOQVpvbmUuY3JlYXRlKG1hdGNoZXMueik7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLlopKSB7CiAgICAgIGlmICghem9uZSkgewogICAgICAgIHpvbmUgPSBuZXcgRml4ZWRPZmZzZXRab25lKG1hdGNoZXMuWik7CiAgICAgIH0KICAgICAgc3BlY2lmaWNPZmZzZXQgPSBtYXRjaGVzLlo7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnEpKSB7CiAgICAgIG1hdGNoZXMuTSA9IChtYXRjaGVzLnEgLSAxKSAqIDMgKyAxOwogICAgfQoKICAgIGlmICghaXNVbmRlZmluZWQobWF0Y2hlcy5oKSkgewogICAgICBpZiAobWF0Y2hlcy5oIDwgMTIgJiYgbWF0Y2hlcy5hID09PSAxKSB7CiAgICAgICAgbWF0Y2hlcy5oICs9IDEyOwogICAgICB9IGVsc2UgaWYgKG1hdGNoZXMuaCA9PT0gMTIgJiYgbWF0Y2hlcy5hID09PSAwKSB7CiAgICAgICAgbWF0Y2hlcy5oID0gMDsKICAgICAgfQogICAgfQoKICAgIGlmIChtYXRjaGVzLkcgPT09IDAgJiYgbWF0Y2hlcy55KSB7CiAgICAgIG1hdGNoZXMueSA9IC1tYXRjaGVzLnk7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnUpKSB7CiAgICAgIG1hdGNoZXMuUyA9IHBhcnNlTWlsbGlzKG1hdGNoZXMudSk7CiAgICB9CgogICAgY29uc3QgdmFscyA9IE9iamVjdC5rZXlzKG1hdGNoZXMpLnJlZHVjZSgociwgaykgPT4gewogICAgICBjb25zdCBmID0gdG9GaWVsZChrKTsKICAgICAgaWYgKGYpIHsKICAgICAgICByW2ZdID0gbWF0Y2hlc1trXTsKICAgICAgfQoKICAgICAgcmV0dXJuIHI7CiAgICB9LCB7fSk7CgogICAgcmV0dXJuIFt2YWxzLCB6b25lLCBzcGVjaWZpY09mZnNldF07CiAgfQoKICBsZXQgZHVtbXlEYXRlVGltZUNhY2hlID0gbnVsbDsKCiAgZnVuY3Rpb24gZ2V0RHVtbXlEYXRlVGltZSgpIHsKICAgIGlmICghZHVtbXlEYXRlVGltZUNhY2hlKSB7CiAgICAgIGR1bW15RGF0ZVRpbWVDYWNoZSA9IERhdGVUaW1lLmZyb21NaWxsaXMoMTU1NTU1NTU1NTU1NSk7CiAgICB9CgogICAgcmV0dXJuIGR1bW15RGF0ZVRpbWVDYWNoZTsKICB9CgogIGZ1bmN0aW9uIG1heWJlRXhwYW5kTWFjcm9Ub2tlbih0b2tlbiwgbG9jYWxlKSB7CiAgICBpZiAodG9rZW4ubGl0ZXJhbCkgewogICAgICByZXR1cm4gdG9rZW47CiAgICB9CgogICAgY29uc3QgZm9ybWF0T3B0cyA9IEZvcm1hdHRlci5tYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuLnZhbCk7CiAgICBjb25zdCB0b2tlbnMgPSBmb3JtYXRPcHRzVG9Ub2tlbnMoZm9ybWF0T3B0cywgbG9jYWxlKTsKCiAgICBpZiAodG9rZW5zID09IG51bGwgfHwgdG9rZW5zLmluY2x1ZGVzKHVuZGVmaW5lZCkpIHsKICAgICAgcmV0dXJuIHRva2VuOwogICAgfQoKICAgIHJldHVybiB0b2tlbnM7CiAgfQoKICBmdW5jdGlvbiBleHBhbmRNYWNyb1Rva2Vucyh0b2tlbnMsIGxvY2FsZSkgewogICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQoLi4udG9rZW5zLm1hcCgodCkgPT4gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHQsIGxvY2FsZSkpKTsKICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGZ1bmN0aW9uIGV4cGxhaW5Gcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkgewogICAgY29uc3QgdG9rZW5zID0gZXhwYW5kTWFjcm9Ub2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZvcm1hdCksIGxvY2FsZSksCiAgICAgIHVuaXRzID0gdG9rZW5zLm1hcCgodCkgPT4gdW5pdEZvclRva2VuKHQsIGxvY2FsZSkpLAogICAgICBkaXNxdWFsaWZ5aW5nVW5pdCA9IHVuaXRzLmZpbmQoKHQpID0+IHQuaW52YWxpZFJlYXNvbik7CgogICAgaWYgKGRpc3F1YWxpZnlpbmdVbml0KSB7CiAgICAgIHJldHVybiB7IGlucHV0LCB0b2tlbnMsIGludmFsaWRSZWFzb246IGRpc3F1YWxpZnlpbmdVbml0LmludmFsaWRSZWFzb24gfTsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IFtyZWdleFN0cmluZywgaGFuZGxlcnNdID0gYnVpbGRSZWdleCh1bml0cyksCiAgICAgICAgcmVnZXggPSBSZWdFeHAocmVnZXhTdHJpbmcsICJpIiksCiAgICAgICAgW3Jhd01hdGNoZXMsIG1hdGNoZXNdID0gbWF0Y2goaW5wdXQsIHJlZ2V4LCBoYW5kbGVycyksCiAgICAgICAgW3Jlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXRdID0gbWF0Y2hlcwogICAgICAgICAgPyBkYXRlVGltZUZyb21NYXRjaGVzKG1hdGNoZXMpCiAgICAgICAgICA6IFtudWxsLCBudWxsLCB1bmRlZmluZWRdOwogICAgICBpZiAoaGFzT3duUHJvcGVydHkobWF0Y2hlcywgImEiKSAmJiBoYXNPd25Qcm9wZXJ0eShtYXRjaGVzLCAiSCIpKSB7CiAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKAogICAgICAgICAgIkNhbid0IGluY2x1ZGUgbWVyaWRpZW0gd2hlbiBzcGVjaWZ5aW5nIDI0LWhvdXIgZm9ybWF0IgogICAgICAgICk7CiAgICAgIH0KICAgICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgcmVnZXgsIHJhd01hdGNoZXMsIG1hdGNoZXMsIHJlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXQgfTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHBhcnNlRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpIHsKICAgIGNvbnN0IHsgcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZFJlYXNvbiB9ID0gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlLCBpbnB1dCwgZm9ybWF0KTsKICAgIHJldHVybiBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZFJlYXNvbl07CiAgfQoKICBmdW5jdGlvbiBmb3JtYXRPcHRzVG9Ub2tlbnMoZm9ybWF0T3B0cywgbG9jYWxlKSB7CiAgICBpZiAoIWZvcm1hdE9wdHMpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgY29uc3QgZm9ybWF0dGVyID0gRm9ybWF0dGVyLmNyZWF0ZShsb2NhbGUsIGZvcm1hdE9wdHMpOwogICAgY29uc3QgcGFydHMgPSBmb3JtYXR0ZXIuZm9ybWF0RGF0ZVRpbWVQYXJ0cyhnZXREdW1teURhdGVUaW1lKCkpOwogICAgcmV0dXJuIHBhcnRzLm1hcCgocCkgPT4gdG9rZW5Gb3JQYXJ0KHAsIGZvcm1hdE9wdHMpKTsKICB9CgogIGNvbnN0IG5vbkxlYXBMYWRkZXIgPSBbMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzRdLAogICAgbGVhcExhZGRlciA9IFswLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNV07CgogIGZ1bmN0aW9uIHVuaXRPdXRPZlJhbmdlKHVuaXQsIHZhbHVlKSB7CiAgICByZXR1cm4gbmV3IEludmFsaWQoCiAgICAgICJ1bml0IG91dCBvZiByYW5nZSIsCiAgICAgIGB5b3Ugc3BlY2lmaWVkICR7dmFsdWV9IChvZiB0eXBlICR7dHlwZW9mIHZhbHVlfSkgYXMgYSAke3VuaXR9LCB3aGljaCBpcyBpbnZhbGlkYAogICAgKTsKICB9CgogIGZ1bmN0aW9uIGRheU9mV2Vlayh5ZWFyLCBtb250aCwgZGF5KSB7CiAgICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKTsKCiAgICBpZiAoeWVhciA8IDEwMCAmJiB5ZWFyID49IDApIHsKICAgICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTsKICAgIH0KCiAgICBjb25zdCBqcyA9IGQuZ2V0VVRDRGF5KCk7CgogICAgcmV0dXJuIGpzID09PSAwID8gNyA6IGpzOwogIH0KCiAgZnVuY3Rpb24gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSkgewogICAgcmV0dXJuIGRheSArIChpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIpW21vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpIHsKICAgIGNvbnN0IHRhYmxlID0gaXNMZWFwWWVhcih5ZWFyKSA/IGxlYXBMYWRkZXIgOiBub25MZWFwTGFkZGVyLAogICAgICBtb250aDAgPSB0YWJsZS5maW5kSW5kZXgoKGkpID0+IGkgPCBvcmRpbmFsKSwKICAgICAgZGF5ID0gb3JkaW5hbCAtIHRhYmxlW21vbnRoMF07CiAgICByZXR1cm4geyBtb250aDogbW9udGgwICsgMSwgZGF5IH07CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub1dlZWsoZ3JlZ09iaikgewogICAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSBncmVnT2JqLAogICAgICBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSksCiAgICAgIHdlZWtkYXkgPSBkYXlPZldlZWsoeWVhciwgbW9udGgsIGRheSk7CgogICAgbGV0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcpLAogICAgICB3ZWVrWWVhcjsKCiAgICBpZiAod2Vla051bWJlciA8IDEpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyIC0gMTsKICAgICAgd2Vla051bWJlciA9IHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKHdlZWtOdW1iZXIgPiB3ZWVrc0luV2Vla1llYXIoeWVhcikpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyICsgMTsKICAgICAgd2Vla051bWJlciA9IDE7CiAgICB9IGVsc2UgewogICAgICB3ZWVrWWVhciA9IHllYXI7CiAgICB9CgogICAgcmV0dXJuIHsgd2Vla1llYXIsIHdlZWtOdW1iZXIsIHdlZWtkYXksIC4uLnRpbWVPYmplY3QoZ3JlZ09iaikgfTsKICB9CgogIGZ1bmN0aW9uIHdlZWtUb0dyZWdvcmlhbih3ZWVrRGF0YSkgewogICAgY29uc3QgeyB3ZWVrWWVhciwgd2Vla051bWJlciwgd2Vla2RheSB9ID0gd2Vla0RhdGEsCiAgICAgIHdlZWtkYXlPZkphbjQgPSBkYXlPZldlZWsod2Vla1llYXIsIDEsIDQpLAogICAgICB5ZWFySW5EYXlzID0gZGF5c0luWWVhcih3ZWVrWWVhcik7CgogICAgbGV0IG9yZGluYWwgPSB3ZWVrTnVtYmVyICogNyArIHdlZWtkYXkgLSB3ZWVrZGF5T2ZKYW40IC0gMywKICAgICAgeWVhcjsKCiAgICBpZiAob3JkaW5hbCA8IDEpIHsKICAgICAgeWVhciA9IHdlZWtZZWFyIC0gMTsKICAgICAgb3JkaW5hbCArPSBkYXlzSW5ZZWFyKHllYXIpOwogICAgfSBlbHNlIGlmIChvcmRpbmFsID4geWVhckluRGF5cykgewogICAgICB5ZWFyID0gd2Vla1llYXIgKyAxOwogICAgICBvcmRpbmFsIC09IGRheXNJblllYXIod2Vla1llYXIpOwogICAgfSBlbHNlIHsKICAgICAgeWVhciA9IHdlZWtZZWFyOwogICAgfQoKICAgIGNvbnN0IHsgbW9udGgsIGRheSB9ID0gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKTsKICAgIHJldHVybiB7IHllYXIsIG1vbnRoLCBkYXksIC4uLnRpbWVPYmplY3Qod2Vla0RhdGEpIH07CiAgfQoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub09yZGluYWwoZ3JlZ0RhdGEpIHsKICAgIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSB9ID0gZ3JlZ0RhdGE7CiAgICBjb25zdCBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSk7CiAgICByZXR1cm4geyB5ZWFyLCBvcmRpbmFsLCAuLi50aW1lT2JqZWN0KGdyZWdEYXRhKSB9OwogIH0KCiAgZnVuY3Rpb24gb3JkaW5hbFRvR3JlZ29yaWFuKG9yZGluYWxEYXRhKSB7CiAgICBjb25zdCB7IHllYXIsIG9yZGluYWwgfSA9IG9yZGluYWxEYXRhOwogICAgY29uc3QgeyBtb250aCwgZGF5IH0gPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpOwogICAgcmV0dXJuIHsgeWVhciwgbW9udGgsIGRheSwgLi4udGltZU9iamVjdChvcmRpbmFsRGF0YSkgfTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRXZWVrRGF0YShvYmopIHsKICAgIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoud2Vla1llYXIpLAogICAgICB2YWxpZFdlZWsgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla051bWJlciwgMSwgd2Vla3NJbldlZWtZZWFyKG9iai53ZWVrWWVhcikpLAogICAgICB2YWxpZFdlZWtkYXkgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla2RheSwgMSwgNyk7CgogICAgaWYgKCF2YWxpZFllYXIpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrWWVhciIsIG9iai53ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKCF2YWxpZFdlZWspIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrIiwgb2JqLndlZWspOwogICAgfSBlbHNlIGlmICghdmFsaWRXZWVrZGF5KSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgid2Vla2RheSIsIG9iai53ZWVrZGF5KTsKICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBoYXNJbnZhbGlkT3JkaW5hbERhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE9yZGluYWwgPSBpbnRlZ2VyQmV0d2VlbihvYmoub3JkaW5hbCwgMSwgZGF5c0luWWVhcihvYmoueWVhcikpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkT3JkaW5hbCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm9yZGluYWwiLCBvYmoub3JkaW5hbCk7CiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE1vbnRoID0gaW50ZWdlckJldHdlZW4ob2JqLm1vbnRoLCAxLCAxMiksCiAgICAgIHZhbGlkRGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLmRheSwgMSwgZGF5c0luTW9udGgob2JqLnllYXIsIG9iai5tb250aCkpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkTW9udGgpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtb250aCIsIG9iai5tb250aCk7CiAgICB9IGVsc2UgaWYgKCF2YWxpZERheSkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoImRheSIsIG9iai5kYXkpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRUaW1lRGF0YShvYmopIHsKICAgIGNvbnN0IHsgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0gPSBvYmo7CiAgICBjb25zdCB2YWxpZEhvdXIgPQogICAgICAgIGludGVnZXJCZXR3ZWVuKGhvdXIsIDAsIDIzKSB8fAogICAgICAgIChob3VyID09PSAyNCAmJiBtaW51dGUgPT09IDAgJiYgc2Vjb25kID09PSAwICYmIG1pbGxpc2Vjb25kID09PSAwKSwKICAgICAgdmFsaWRNaW51dGUgPSBpbnRlZ2VyQmV0d2VlbihtaW51dGUsIDAsIDU5KSwKICAgICAgdmFsaWRTZWNvbmQgPSBpbnRlZ2VyQmV0d2VlbihzZWNvbmQsIDAsIDU5KSwKICAgICAgdmFsaWRNaWxsaXNlY29uZCA9IGludGVnZXJCZXR3ZWVuKG1pbGxpc2Vjb25kLCAwLCA5OTkpOwoKICAgIGlmICghdmFsaWRIb3VyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgiaG91ciIsIGhvdXIpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaW51dGUpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtaW51dGUiLCBtaW51dGUpOwogICAgfSBlbHNlIGlmICghdmFsaWRTZWNvbmQpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJzZWNvbmQiLCBzZWNvbmQpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaWxsaXNlY29uZCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm1pbGxpc2Vjb25kIiwgbWlsbGlzZWNvbmQpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGNvbnN0IElOVkFMSUQgPSAiSW52YWxpZCBEYXRlVGltZSI7CiAgY29uc3QgTUFYX0RBVEUgPSA4LjY0ZTE1OwoKICBmdW5jdGlvbiB1bnN1cHBvcnRlZFpvbmUoem9uZSkgewogICAgcmV0dXJuIG5ldyBJbnZhbGlkKCJ1bnN1cHBvcnRlZCB6b25lIiwgYHRoZSB6b25lICIke3pvbmUubmFtZX0iIGlzIG5vdCBzdXBwb3J0ZWRgKTsKICB9CgogIC8vIHdlIGNhY2hlIHdlZWsgZGF0YSBvbiB0aGUgRFQgb2JqZWN0IGFuZCB0aGlzIGludGVybWVkaWF0ZXMgdGhlIGNhY2hlCiAgZnVuY3Rpb24gcG9zc2libHlDYWNoZWRXZWVrRGF0YShkdCkgewogICAgaWYgKGR0LndlZWtEYXRhID09PSBudWxsKSB7CiAgICAgIGR0LndlZWtEYXRhID0gZ3JlZ29yaWFuVG9XZWVrKGR0LmMpOwogICAgfQogICAgcmV0dXJuIGR0LndlZWtEYXRhOwogIH0KCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zLCAibWFrZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGVzZSBtb2RpZmljYXRpb25zIi4gYWxsICJzZXR0ZXJzIiByZWFsbHkgdXNlIHRoaXMKICAvLyB0byBjcmVhdGUgYSBuZXcgb2JqZWN0IHdoaWxlIG9ubHkgY2hhbmdpbmcgc29tZSBvZiB0aGUgcHJvcGVydGllcwogIGZ1bmN0aW9uIGNsb25lKGluc3QsIGFsdHMpIHsKICAgIGNvbnN0IGN1cnJlbnQgPSB7CiAgICAgIHRzOiBpbnN0LnRzLAogICAgICB6b25lOiBpbnN0LnpvbmUsCiAgICAgIGM6IGluc3QuYywKICAgICAgbzogaW5zdC5vLAogICAgICBsb2M6IGluc3QubG9jLAogICAgICBpbnZhbGlkOiBpbnN0LmludmFsaWQsCiAgICB9OwogICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IC4uLmN1cnJlbnQsIC4uLmFsdHMsIG9sZDogY3VycmVudCB9KTsKICB9CgogIC8vIGZpbmQgdGhlIHJpZ2h0IG9mZnNldCBhIGdpdmVuIGxvY2FsIHRpbWUuIFRoZSBvIGlucHV0IGlzIG91ciBndWVzcywgd2hpY2ggZGV0ZXJtaW5lcyB3aGljaAogIC8vIG9mZnNldCB3ZSdsbCBwaWNrIGluIGFtYmlndW91cyBjYXNlcyAoZS5nLiB0aGVyZSBhcmUgdHdvIDMgQU1zIGIvYyBGYWxsYmFjayBEU1QpCiAgZnVuY3Rpb24gZml4T2Zmc2V0KGxvY2FsVFMsIG8sIHR6KSB7CiAgICAvLyBPdXIgVVRDIHRpbWUgaXMganVzdCBhIGd1ZXNzIGJlY2F1c2Ugb3VyIG9mZnNldCBpcyBqdXN0IGEgZ3Vlc3MKICAgIGxldCB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvICogNjAgKiAxMDAwOwoKICAgIC8vIFRlc3Qgd2hldGhlciB0aGUgem9uZSBtYXRjaGVzIHRoZSBvZmZzZXQgZm9yIHRoaXMgdHMKICAgIGNvbnN0IG8yID0gdHoub2Zmc2V0KHV0Y0d1ZXNzKTsKCiAgICAvLyBJZiBzbywgb2Zmc2V0IGRpZG4ndCBjaGFuZ2UgYW5kIHdlJ3JlIGRvbmUKICAgIGlmIChvID09PSBvMikgewogICAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvXTsKICAgIH0KCiAgICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgdHMgYnkgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIG9mZnNldAogICAgdXRjR3Vlc3MgLT0gKG8yIC0gbykgKiA2MCAqIDEwMDA7CgogICAgLy8gSWYgdGhhdCBnaXZlcyB1cyB0aGUgbG9jYWwgdGltZSB3ZSB3YW50LCB3ZSdyZSBkb25lCiAgICBjb25zdCBvMyA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7CiAgICBpZiAobzIgPT09IG8zKSB7CiAgICAgIHJldHVybiBbdXRjR3Vlc3MsIG8yXTsKICAgIH0KCiAgICAvLyBJZiBpdCdzIGRpZmZlcmVudCwgd2UncmUgaW4gYSBob2xlIHRpbWUuIFRoZSBvZmZzZXQgaGFzIGNoYW5nZWQsIGJ1dCB0aGUgd2UgZG9uJ3QgYWRqdXN0IHRoZSB0aW1lCiAgICByZXR1cm4gW2xvY2FsVFMgLSBNYXRoLm1pbihvMiwgbzMpICogNjAgKiAxMDAwLCBNYXRoLm1heChvMiwgbzMpXTsKICB9CgogIC8vIGNvbnZlcnQgYW4gZXBvY2ggdGltZXN0YW1wIGludG8gYSBjYWxlbmRhciBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gb2Zmc2V0CiAgZnVuY3Rpb24gdHNUb09iaih0cywgb2Zmc2V0KSB7CiAgICB0cyArPSBvZmZzZXQgKiA2MCAqIDEwMDA7CgogICAgY29uc3QgZCA9IG5ldyBEYXRlKHRzKTsKCiAgICByZXR1cm4gewogICAgICB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksCiAgICAgIG1vbnRoOiBkLmdldFVUQ01vbnRoKCkgKyAxLAogICAgICBkYXk6IGQuZ2V0VVRDRGF0ZSgpLAogICAgICBob3VyOiBkLmdldFVUQ0hvdXJzKCksCiAgICAgIG1pbnV0ZTogZC5nZXRVVENNaW51dGVzKCksCiAgICAgIHNlY29uZDogZC5nZXRVVENTZWNvbmRzKCksCiAgICAgIG1pbGxpc2Vjb25kOiBkLmdldFVUQ01pbGxpc2Vjb25kcygpLAogICAgfTsKICB9CgogIC8vIGNvbnZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBlcG9jaCB0aW1lc3RhbXAKICBmdW5jdGlvbiBvYmpUb1RTKG9iaiwgb2Zmc2V0LCB6b25lKSB7CiAgICByZXR1cm4gZml4T2Zmc2V0KG9ialRvTG9jYWxUUyhvYmopLCBvZmZzZXQsIHpvbmUpOwogIH0KCiAgLy8gY3JlYXRlIGEgbmV3IERUIGluc3RhbmNlIGJ5IGFkZGluZyBhIGR1cmF0aW9uLCBhZGp1c3RpbmcgZm9yIERTVHMKICBmdW5jdGlvbiBhZGp1c3RUaW1lKGluc3QsIGR1cikgewogICAgY29uc3Qgb1ByZSA9IGluc3QubywKICAgICAgeWVhciA9IGluc3QuYy55ZWFyICsgTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICBtb250aCA9IGluc3QuYy5tb250aCArIE1hdGgudHJ1bmMoZHVyLm1vbnRocykgKyBNYXRoLnRydW5jKGR1ci5xdWFydGVycykgKiAzLAogICAgICBjID0gewogICAgICAgIC4uLmluc3QuYywKICAgICAgICB5ZWFyLAogICAgICAgIG1vbnRoLAogICAgICAgIGRheToKICAgICAgICAgIE1hdGgubWluKGluc3QuYy5kYXksIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSkgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIuZGF5cykgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIud2Vla3MpICogNywKICAgICAgfSwKICAgICAgbWlsbGlzVG9BZGQgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsKICAgICAgICB5ZWFyczogZHVyLnllYXJzIC0gTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICAgIHF1YXJ0ZXJzOiBkdXIucXVhcnRlcnMgLSBNYXRoLnRydW5jKGR1ci5xdWFydGVycyksCiAgICAgICAgbW9udGhzOiBkdXIubW9udGhzIC0gTWF0aC50cnVuYyhkdXIubW9udGhzKSwKICAgICAgICB3ZWVrczogZHVyLndlZWtzIC0gTWF0aC50cnVuYyhkdXIud2Vla3MpLAogICAgICAgIGRheXM6IGR1ci5kYXlzIC0gTWF0aC50cnVuYyhkdXIuZGF5cyksCiAgICAgICAgaG91cnM6IGR1ci5ob3VycywKICAgICAgICBtaW51dGVzOiBkdXIubWludXRlcywKICAgICAgICBzZWNvbmRzOiBkdXIuc2Vjb25kcywKICAgICAgICBtaWxsaXNlY29uZHM6IGR1ci5taWxsaXNlY29uZHMsCiAgICAgIH0pLmFzKCJtaWxsaXNlY29uZHMiKSwKICAgICAgbG9jYWxUUyA9IG9ialRvTG9jYWxUUyhjKTsKCiAgICBsZXQgW3RzLCBvXSA9IGZpeE9mZnNldChsb2NhbFRTLCBvUHJlLCBpbnN0LnpvbmUpOwoKICAgIGlmIChtaWxsaXNUb0FkZCAhPT0gMCkgewogICAgICB0cyArPSBtaWxsaXNUb0FkZDsKICAgICAgLy8gdGhhdCBjb3VsZCBoYXZlIGNoYW5nZWQgdGhlIG9mZnNldCBieSBnb2luZyBvdmVyIGEgRFNULCBidXQgd2Ugd2FudCB0byBrZWVwIHRoZSB0cyB0aGUgc2FtZQogICAgICBvID0gaW5zdC56b25lLm9mZnNldCh0cyk7CiAgICB9CgogICAgcmV0dXJuIHsgdHMsIG8gfTsKICB9CgogIC8vIGhlbHBlciB1c2VmdWwgaW4gdHVybmluZyB0aGUgcmVzdWx0cyBvZiBwYXJzaW5nIGludG8gcmVhbCBkYXRlcwogIC8vIGJ5IGhhbmRsaW5nIHRoZSB6b25lIG9wdGlvbnMKICBmdW5jdGlvbiBwYXJzZURhdGFUb0RhdGVUaW1lKHBhcnNlZCwgcGFyc2VkWm9uZSwgb3B0cywgZm9ybWF0LCB0ZXh0LCBzcGVjaWZpY09mZnNldCkgewogICAgY29uc3QgeyBzZXRab25lLCB6b25lIH0gPSBvcHRzOwogICAgaWYgKHBhcnNlZCAmJiBPYmplY3Qua2V5cyhwYXJzZWQpLmxlbmd0aCAhPT0gMCkgewogICAgICBjb25zdCBpbnRlcnByZXRhdGlvblpvbmUgPSBwYXJzZWRab25lIHx8IHpvbmUsCiAgICAgICAgaW5zdCA9IERhdGVUaW1lLmZyb21PYmplY3QocGFyc2VkLCB7CiAgICAgICAgICAuLi5vcHRzLAogICAgICAgICAgem9uZTogaW50ZXJwcmV0YXRpb25ab25lLAogICAgICAgICAgc3BlY2lmaWNPZmZzZXQsCiAgICAgICAgfSk7CiAgICAgIHJldHVybiBzZXRab25lID8gaW5zdCA6IGluc3Quc2V0Wm9uZSh6b25lKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKAogICAgICAgIG5ldyBJbnZhbGlkKCJ1bnBhcnNhYmxlIiwgYHRoZSBpbnB1dCAiJHt0ZXh0fSIgY2FuJ3QgYmUgcGFyc2VkIGFzICR7Zm9ybWF0fWApCiAgICAgICk7CiAgICB9CiAgfQoKICAvLyBpZiB5b3Ugd2FudCB0byBvdXRwdXQgYSB0ZWNobmljYWwgZm9ybWF0IChlLmcuIFJGQyAyODIyKSwgdGhpcyBoZWxwZXIKICAvLyBoZWxwcyBoYW5kbGUgdGhlIGRldGFpbHMKICBmdW5jdGlvbiB0b1RlY2hGb3JtYXQoZHQsIGZvcm1hdCwgYWxsb3daID0gdHJ1ZSkgewogICAgcmV0dXJuIGR0LmlzVmFsaWQKICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKExvY2FsZS5jcmVhdGUoImVuLVVTIiksIHsKICAgICAgICAgIGFsbG93WiwKICAgICAgICAgIGZvcmNlU2ltcGxlOiB0cnVlLAogICAgICAgIH0pLmZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyhkdCwgZm9ybWF0KQogICAgICA6IG51bGw7CiAgfQoKICBmdW5jdGlvbiB0b0lTT0RhdGUobywgZXh0ZW5kZWQpIHsKICAgIGNvbnN0IGxvbmdGb3JtYXQgPSBvLmMueWVhciA+IDk5OTkgfHwgby5jLnllYXIgPCAwOwogICAgbGV0IGMgPSAiIjsKICAgIGlmIChsb25nRm9ybWF0ICYmIG8uYy55ZWFyID49IDApIGMgKz0gIisiOwogICAgYyArPSBwYWRTdGFydChvLmMueWVhciwgbG9uZ0Zvcm1hdCA/IDYgOiA0KTsKCiAgICBpZiAoZXh0ZW5kZWQpIHsKICAgICAgYyArPSAiLSI7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1vbnRoKTsKICAgICAgYyArPSAiLSI7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLmRheSk7CiAgICB9IGVsc2UgewogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLmRheSk7CiAgICB9CiAgICByZXR1cm4gYzsKICB9CgogIGZ1bmN0aW9uIHRvSVNPVGltZSgKICAgIG8sCiAgICBleHRlbmRlZCwKICAgIHN1cHByZXNzU2Vjb25kcywKICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzLAogICAgaW5jbHVkZU9mZnNldCwKICAgIGV4dGVuZGVkWm9uZQogICkgewogICAgbGV0IGMgPSBwYWRTdGFydChvLmMuaG91cik7CiAgICBpZiAoZXh0ZW5kZWQpIHsKICAgICAgYyArPSAiOiI7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbnV0ZSk7CiAgICAgIGlmIChvLmMuc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc1NlY29uZHMpIHsKICAgICAgICBjICs9ICI6IjsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgYyArPSBwYWRTdGFydChvLmMubWludXRlKTsKICAgIH0KCiAgICBpZiAoby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLnNlY29uZCk7CgogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc01pbGxpc2Vjb25kcykgewogICAgICAgIGMgKz0gIi4iOwogICAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbGxpc2Vjb25kLCAzKTsKICAgICAgfQogICAgfQoKICAgIGlmIChpbmNsdWRlT2Zmc2V0KSB7CiAgICAgIGlmIChvLmlzT2Zmc2V0Rml4ZWQgJiYgby5vZmZzZXQgPT09IDAgJiYgIWV4dGVuZGVkWm9uZSkgewogICAgICAgIGMgKz0gIloiOwogICAgICB9IGVsc2UgaWYgKG8ubyA8IDApIHsKICAgICAgICBjICs9ICItIjsKICAgICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoLW8ubyAvIDYwKSk7CiAgICAgICAgYyArPSAiOiI7CiAgICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKC1vLm8gJSA2MCkpOwogICAgICB9IGVsc2UgewogICAgICAgIGMgKz0gIisiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gLyA2MCkpOwogICAgICAgIGMgKz0gIjoiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gJSA2MCkpOwogICAgICB9CiAgICB9CgogICAgaWYgKGV4dGVuZGVkWm9uZSkgewogICAgICBjICs9ICJbIiArIG8uem9uZS5pYW5hTmFtZSArICJdIjsKICAgIH0KICAgIHJldHVybiBjOwogIH0KCiAgLy8gZGVmYXVsdHMgZm9yIHVuc3BlY2lmaWVkIHVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzCiAgY29uc3QgZGVmYXVsdFVuaXRWYWx1ZXMgPSB7CiAgICAgIG1vbnRoOiAxLAogICAgICBkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7CiAgICAgIHdlZWtOdW1iZXI6IDEsCiAgICAgIHdlZWtkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXMgPSB7CiAgICAgIG9yZGluYWw6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH07CgogIC8vIFVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzLCBzb3J0ZWQgYnkgYmlnbmVzcwogIGNvbnN0IG9yZGVyZWRVbml0cyA9IFsieWVhciIsICJtb250aCIsICJkYXkiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0sCiAgICBvcmRlcmVkV2Vla1VuaXRzID0gWwogICAgICAid2Vla1llYXIiLAogICAgICAid2Vla051bWJlciIsCiAgICAgICJ3ZWVrZGF5IiwKICAgICAgImhvdXIiLAogICAgICAibWludXRlIiwKICAgICAgInNlY29uZCIsCiAgICAgICJtaWxsaXNlY29uZCIsCiAgICBdLAogICAgb3JkZXJlZE9yZGluYWxVbml0cyA9IFsieWVhciIsICJvcmRpbmFsIiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlY29uZCJdOwoKICAvLyBzdGFuZGFyZGl6ZSBjYXNlIGFuZCBwbHVyYWxpdHkgaW4gdW5pdHMKICBmdW5jdGlvbiBub3JtYWxpemVVbml0KHVuaXQpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgIHllYXI6ICJ5ZWFyIiwKICAgICAgeWVhcnM6ICJ5ZWFyIiwKICAgICAgbW9udGg6ICJtb250aCIsCiAgICAgIG1vbnRoczogIm1vbnRoIiwKICAgICAgZGF5OiAiZGF5IiwKICAgICAgZGF5czogImRheSIsCiAgICAgIGhvdXI6ICJob3VyIiwKICAgICAgaG91cnM6ICJob3VyIiwKICAgICAgbWludXRlOiAibWludXRlIiwKICAgICAgbWludXRlczogIm1pbnV0ZSIsCiAgICAgIHF1YXJ0ZXI6ICJxdWFydGVyIiwKICAgICAgcXVhcnRlcnM6ICJxdWFydGVyIiwKICAgICAgc2Vjb25kOiAic2Vjb25kIiwKICAgICAgc2Vjb25kczogInNlY29uZCIsCiAgICAgIG1pbGxpc2Vjb25kOiAibWlsbGlzZWNvbmQiLAogICAgICBtaWxsaXNlY29uZHM6ICJtaWxsaXNlY29uZCIsCiAgICAgIHdlZWtkYXk6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla2RheXM6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrc251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrbnVtYmVyczogIndlZWtOdW1iZXIiLAogICAgICB3ZWVreWVhcjogIndlZWtZZWFyIiwKICAgICAgd2Vla3llYXJzOiAid2Vla1llYXIiLAogICAgICBvcmRpbmFsOiAib3JkaW5hbCIsCiAgICB9W3VuaXQudG9Mb3dlckNhc2UoKV07CgogICAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTsKCiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIC8vIHRoaXMgaXMgYSBkdW1iZWQgZG93biB2ZXJzaW9uIG9mIGZyb21PYmplY3QoKSB0aGF0IHJ1bnMgYWJvdXQgNjAlIGZhc3RlcgogIC8vIGJ1dCBkb2Vzbid0IGRvIGFueSB2YWxpZGF0aW9uLCBtYWtlcyBhIGJ1bmNoIG9mIGFzc3VtcHRpb25zIGFib3V0IHdoYXQgdW5pdHMKICAvLyBhcmUgcHJlc2VudCwgYW5kIHNvIG9uLgogIGZ1bmN0aW9uIHF1aWNrRFQob2JqLCBvcHRzKSB7CiAgICBjb25zdCB6b25lID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgIHRzTm93ID0gU2V0dGluZ3Mubm93KCk7CgogICAgbGV0IHRzLCBvOwoKICAgIC8vIGFzc3VtZSB3ZSBoYXZlIHRoZSBoaWdoZXItb3JkZXIgdW5pdHMKICAgIGlmICghaXNVbmRlZmluZWQob2JqLnllYXIpKSB7CiAgICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMpIHsKICAgICAgICBpZiAoaXNVbmRlZmluZWQob2JqW3VdKSkgewogICAgICAgICAgb2JqW3VdID0gZGVmYXVsdFVuaXRWYWx1ZXNbdV07CiAgICAgICAgfQogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB8fCBoYXNJbnZhbGlkVGltZURhdGEob2JqKTsKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgY29uc3Qgb2Zmc2V0UHJvdmlzID0gem9uZS5vZmZzZXQodHNOb3cpOwogICAgICBbdHMsIG9dID0gb2JqVG9UUyhvYmosIG9mZnNldFByb3Zpcywgem9uZSk7CiAgICB9IGVsc2UgewogICAgICB0cyA9IHRzTm93OwogICAgfQoKICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoeyB0cywgem9uZSwgbG9jLCBvIH0pOwogIH0KCiAgZnVuY3Rpb24gZGlmZlJlbGF0aXZlKHN0YXJ0LCBlbmQsIG9wdHMpIHsKICAgIGNvbnN0IHJvdW5kID0gaXNVbmRlZmluZWQob3B0cy5yb3VuZCkgPyB0cnVlIDogb3B0cy5yb3VuZCwKICAgICAgZm9ybWF0ID0gKGMsIHVuaXQpID0+IHsKICAgICAgICBjID0gcm91bmRUbyhjLCByb3VuZCB8fCBvcHRzLmNhbGVuZGFyeSA/IDAgOiAyLCB0cnVlKTsKICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBlbmQubG9jLmNsb25lKG9wdHMpLnJlbEZvcm1hdHRlcihvcHRzKTsKICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChjLCB1bml0KTsKICAgICAgfSwKICAgICAgZGlmZmVyID0gKHVuaXQpID0+IHsKICAgICAgICBpZiAob3B0cy5jYWxlbmRhcnkpIHsKICAgICAgICAgIGlmICghZW5kLmhhc1NhbWUoc3RhcnQsIHVuaXQpKSB7CiAgICAgICAgICAgIHJldHVybiBlbmQuc3RhcnRPZih1bml0KS5kaWZmKHN0YXJ0LnN0YXJ0T2YodW5pdCksIHVuaXQpLmdldCh1bml0KTsKICAgICAgICAgIH0gZWxzZSByZXR1cm4gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCk7CiAgICAgICAgfQogICAgICB9OwoKICAgIGlmIChvcHRzLnVuaXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdChkaWZmZXIob3B0cy51bml0KSwgb3B0cy51bml0KTsKICAgIH0KCiAgICBmb3IgKGNvbnN0IHVuaXQgb2Ygb3B0cy51bml0cykgewogICAgICBjb25zdCBjb3VudCA9IGRpZmZlcih1bml0KTsKICAgICAgaWYgKE1hdGguYWJzKGNvdW50KSA+PSAxKSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmb3JtYXQoc3RhcnQgPiBlbmQgPyAtMCA6IDAsIG9wdHMudW5pdHNbb3B0cy51bml0cy5sZW5ndGggLSAxXSk7CiAgfQoKICBmdW5jdGlvbiBsYXN0T3B0cyhhcmdMaXN0KSB7CiAgICBsZXQgb3B0cyA9IHt9LAogICAgICBhcmdzOwogICAgaWYgKGFyZ0xpc3QubGVuZ3RoID4gMCAmJiB0eXBlb2YgYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdID09PSAib2JqZWN0IikgewogICAgICBvcHRzID0gYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdOwogICAgICBhcmdzID0gQXJyYXkuZnJvbShhcmdMaXN0KS5zbGljZSgwLCBhcmdMaXN0Lmxlbmd0aCAtIDEpOwogICAgfSBlbHNlIHsKICAgICAgYXJncyA9IEFycmF5LmZyb20oYXJnTGlzdCk7CiAgICB9CiAgICByZXR1cm4gW29wdHMsIGFyZ3NdOwogIH0KCiAgLyoqCiAgICogQSBEYXRlVGltZSBpcyBhbiBpbW11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZSBhbmQgYWNjb21wYW55aW5nIG1ldGhvZHMuIEl0IGNvbnRhaW5zIGNsYXNzIGFuZCBpbnN0YW5jZSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLgogICAqCiAgICogQSBEYXRlVGltZSBjb21wcmlzZXMgb2Y6CiAgICogKiBBIHRpbWVzdGFtcC4gRWFjaCBEYXRlVGltZSBpbnN0YW5jZSByZWZlcnMgdG8gYSBzcGVjaWZpYyBtaWxsaXNlY29uZCBvZiB0aGUgVW5peCBlcG9jaC4KICAgKiAqIEEgdGltZSB6b25lLiBFYWNoIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzcGVjaWZpYyB6b25lIChieSBkZWZhdWx0IHRoZSBsb2NhbCBzeXN0ZW0ncyB6b25lKS4KICAgKiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0aGF0IGVmZmVjdCBob3cgb3V0cHV0IHN0cmluZ3MgYXJlIGZvcm1hdHRlZCwgc3VjaCBhcyBgbG9jYWxlYCwgYG51bWJlcmluZ1N5c3RlbWAsIGFuZCBgb3V0cHV0Q2FsZW5kYXJgLgogICAqCiAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZnVuY3Rpb25hbGl0eSBpdCBwcm92aWRlczoKICAgKgogICAqICogKipDcmVhdGlvbioqOiBUbyBjcmVhdGUgYSBEYXRlVGltZSBmcm9tIGl0cyBjb21wb25lbnRzLCB1c2Ugb25lIG9mIGl0cyBmYWN0b3J5IGNsYXNzIG1ldGhvZHM6IHtAbGluayBEYXRlVGltZS5sb2NhbH0sIHtAbGluayBEYXRlVGltZS51dGN9LCBhbmQgKG1vc3QgZmxleGlibHkpIHtAbGluayBEYXRlVGltZS5mcm9tT2JqZWN0fS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgc3RhbmRhcmQgc3RyaW5nIGZvcm1hdCwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSVNPfSwge0BsaW5rIERhdGVUaW1lLmZyb21IVFRQfSwgYW5kIHtAbGluayBEYXRlVGltZS5mcm9tUkZDMjgyMn0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIGN1c3RvbSBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lLmZyb21Gb3JtYXR9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBuYXRpdmUgSlMgZGF0ZSwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSlNEYXRlfS4KICAgKiAqICoqR3JlZ29yaWFuIGNhbGVuZGFyIGFuZCB0aW1lKio6IFRvIGV4YW1pbmUgdGhlIEdyZWdvcmlhbiBwcm9wZXJ0aWVzIG9mIGEgRGF0ZVRpbWUgaW5kaXZpZHVhbGx5IChpLmUgYXMgb3Bwb3NlZCB0byBjb2xsZWN0aXZlbHkgdGhyb3VnaCB7QGxpbmsgRGF0ZVRpbWUjdG9PYmplY3R9KSwgdXNlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjeWVhcn0sIHtAbGluayBEYXRlVGltZSNtb250aH0sCiAgICoge0BsaW5rIERhdGVUaW1lI2RheX0sIHtAbGluayBEYXRlVGltZSNob3VyfSwge0BsaW5rIERhdGVUaW1lI21pbnV0ZX0sIHtAbGluayBEYXRlVGltZSNzZWNvbmR9LCB7QGxpbmsgRGF0ZVRpbWUjbWlsbGlzZWNvbmR9IGFjY2Vzc29ycy4KICAgKiAqICoqV2VlayBjYWxlbmRhcioqOiBGb3IgSVNPIHdlZWsgY2FsZW5kYXIgYXR0cmlidXRlcywgc2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjd2Vla1llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjd2Vla051bWJlcn0sIGFuZCB7QGxpbmsgRGF0ZVRpbWUjd2Vla2RheX0gYWNjZXNzb3JzLgogICAqICogKipDb25maWd1cmF0aW9uKiogU2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjbG9jYWxlfSBhbmQge0BsaW5rIERhdGVUaW1lI251bWJlcmluZ1N5c3RlbX0gYWNjZXNzb3JzLgogICAqICogKipUcmFuc2Zvcm1hdGlvbioqOiBUbyB0cmFuc2Zvcm0gdGhlIERhdGVUaW1lIGludG8gb3RoZXIgRGF0ZVRpbWVzLCB1c2Uge0BsaW5rIERhdGVUaW1lI3NldH0sIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0sIHtAbGluayBEYXRlVGltZSNzZXRab25lfSwge0BsaW5rIERhdGVUaW1lI3NldExvY2FsZX0sIHtAbGluayBEYXRlVGltZS5wbHVzfSwge0BsaW5rIERhdGVUaW1lI21pbnVzfSwge0BsaW5rIERhdGVUaW1lI2VuZE9mfSwge0BsaW5rIERhdGVUaW1lI3N0YXJ0T2Z9LCB7QGxpbmsgRGF0ZVRpbWUjdG9VVEN9LCBhbmQge0BsaW5rIERhdGVUaW1lI3RvTG9jYWx9LgogICAqICogKipPdXRwdXQqKjogVG8gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN0b1JlbGF0aXZlfSwge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmVDYWxlbmRhcn0sIHtAbGluayBEYXRlVGltZSN0b0pTT059LCB7QGxpbmsgRGF0ZVRpbWUjdG9JU099LCB7QGxpbmsgRGF0ZVRpbWUjdG9IVFRQfSwge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSwge0BsaW5rIERhdGVUaW1lI3RvUkZDMjgyMn0sIHtAbGluayBEYXRlVGltZSN0b1N0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0sIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30gYW5kIHtAbGluayBEYXRlVGltZSN0b0pTRGF0ZX0uCiAgICoKICAgKiBUaGVyZSdzIHBsZW50eSBvdGhlcnMgZG9jdW1lbnRlZCBiZWxvdy4gSW4gYWRkaXRpb24sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1YnRsZXIgdG9waWNzIGxpa2UgaW50ZXJuYXRpb25hbGl6YXRpb24sIHRpbWUgem9uZXMsIGFsdGVybmF0aXZlIGNhbGVuZGFycywgdmFsaWRpdHksIGFuZCBzbyBvbiwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLgogICAqLwogIGNsYXNzIERhdGVUaW1lIHsKICAgIC8qKgogICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCB6b25lID0gY29uZmlnLnpvbmUgfHwgU2V0dGluZ3MuZGVmYXVsdFpvbmU7CgogICAgICBsZXQgaW52YWxpZCA9CiAgICAgICAgY29uZmlnLmludmFsaWQgfHwKICAgICAgICAoTnVtYmVyLmlzTmFOKGNvbmZpZy50cykgPyBuZXcgSW52YWxpZCgiaW52YWxpZCBpbnB1dCIpIDogbnVsbCkgfHwKICAgICAgICAoIXpvbmUuaXNWYWxpZCA/IHVuc3VwcG9ydGVkWm9uZSh6b25lKSA6IG51bGwpOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnRzID0gaXNVbmRlZmluZWQoY29uZmlnLnRzKSA/IFNldHRpbmdzLm5vdygpIDogY29uZmlnLnRzOwoKICAgICAgbGV0IGMgPSBudWxsLAogICAgICAgIG8gPSBudWxsOwogICAgICBpZiAoIWludmFsaWQpIHsKICAgICAgICBjb25zdCB1bmNoYW5nZWQgPSBjb25maWcub2xkICYmIGNvbmZpZy5vbGQudHMgPT09IHRoaXMudHMgJiYgY29uZmlnLm9sZC56b25lLmVxdWFscyh6b25lKTsKCiAgICAgICAgaWYgKHVuY2hhbmdlZCkgewogICAgICAgICAgW2MsIG9dID0gW2NvbmZpZy5vbGQuYywgY29uZmlnLm9sZC5vXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc3Qgb3QgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGMgPSB0c1RvT2JqKHRoaXMudHMsIG90KTsKICAgICAgICAgIGludmFsaWQgPSBOdW1iZXIuaXNOYU4oYy55ZWFyKSA/IG5ldyBJbnZhbGlkKCJpbnZhbGlkIGlucHV0IikgOiBudWxsOwogICAgICAgICAgYyA9IGludmFsaWQgPyBudWxsIDogYzsKICAgICAgICAgIG8gPSBpbnZhbGlkID8gbnVsbCA6IG90OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5fem9uZSA9IHpvbmU7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQ7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMud2Vla0RhdGEgPSBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmMgPSBjOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLm8gPSBvOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EYXRlVGltZSA9IHRydWU7CiAgICB9CgogICAgLy8gQ09OU1RSVUNUCgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmb3IgdGhlIGN1cnJlbnQgaW5zdGFudCwgaW4gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS4KICAgICAqCiAgICAgKiBVc2UgU2V0dGluZ3MgdG8gb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdCB2YWx1ZXMgaWYgbmVlZGVkLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvL34+IG5vdyBpbiB0aGUgSVNPIGZvcm1hdAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBub3coKSB7CiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe30pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbG9jYWwgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYGxvY2FsKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbW9udGg9MV0gLSBUaGUgbW9udGgsIDEtaW5kZXhlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFtkYXk9MV0gLSBUaGUgZGF5IG9mIHRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiBub3cKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKHsgem9uZTogIkFtZXJpY2EvTmV3X1lvcmsiIH0pICAgICAgLy9+PiBub3csIGluIFVTIGVhc3QgY29hc3QgdGltZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDEtMDFUMDA6MDA6MDAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgeyBsb2NhbGU6ICJmciIgfSkgICAgIC8vfj4gMjAxNy0wMy0xMlQwMDowMDowMCwgd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgeyB6b25lOiAidXRjIiB9KSAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMCwgaW4gVVRDCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCkgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSkgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBsb2NhbCgpIHsKICAgICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSwKICAgICAgICBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXSA9IGFyZ3M7CiAgICAgIHJldHVybiBxdWlja0RUKHsgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0sIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgaW4gVVRDCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3llYXJdIC0gVGhlIGNhbGVuZGFyIHllYXIuIElmIG9taXR0ZWQgKGFzIGluLCBjYWxsIGB1dGMoKWAgd2l0aCBubyBhcmd1bWVudHMpLCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgdXNlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RheT0xXSAtIFRoZSBkYXkgb2YgdGhlIG1vbnRoCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVdIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAxLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgeyBsb2NhbGU6ICJmciIgfSkgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWiB3aXRoIGEgRnJlbmNoIGxvY2FsZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTApICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSwgeyBsb2NhbGU6ICJmciIgfSkgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NVogd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgdXRjKCkgewogICAgICBjb25zdCBbb3B0cywgYXJnc10gPSBsYXN0T3B0cyhhcmd1bWVudHMpLAogICAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJnczsKCiAgICAgIG9wdHMuem9uZSA9IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZTsKICAgICAgcmV0dXJuIHF1aWNrRFQoeyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdC4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLgogICAgICogQHBhcmFtIHtEYXRlfSBkYXRlIC0gYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG8KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUpTRGF0ZShkYXRlLCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgdHMgPSBpc0RhdGUoZGF0ZSkgPyBkYXRlLnZhbHVlT2YoKSA6IE5hTjsKICAgICAgaWYgKE51bWJlci5pc05hTih0cykpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiaW52YWxpZCBpbnB1dCIpOwogICAgICB9CgogICAgICBjb25zdCB6b25lVG9Vc2UgPSBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmVUb1VzZSkpOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsKICAgICAgICB0czogdHMsCiAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MCBVVEMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50bwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tTWlsbGlzKG1pbGxpc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghaXNOdW1iZXIobWlsbGlzZWNvbmRzKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBmcm9tTWlsbGlzIHJlcXVpcmVzIGEgbnVtZXJpY2FsIGlucHV0LCBidXQgcmVjZWl2ZWQgYSAke3R5cGVvZiBtaWxsaXNlY29uZHN9IHdpdGggdmFsdWUgJHttaWxsaXNlY29uZHN9YAogICAgICAgICk7CiAgICAgIH0gZWxzZSBpZiAobWlsbGlzZWNvbmRzIDwgLU1BWF9EQVRFIHx8IG1pbGxpc2Vjb25kcyA+IE1BWF9EQVRFKSB7CiAgICAgICAgLy8gdGhpcyBpc24ndCBwZXJmZWN0IGJlY2F1c2UgYmVjYXVzZSB3ZSBjYW4gc3RpbGwgZW5kIHVwIG91dCBvZiByYW5nZSBiZWNhdXNlIG9mIGFkZGl0aW9uYWwgc2hpZnRpbmcsIGJ1dCBpdCdzIGEgc3RhcnQKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiVGltZXN0YW1wIG91dCBvZiByYW5nZSIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IG1pbGxpc2Vjb25kcywKICAgICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksCiAgICAgICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLAogICAgICAgIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwIFVUQwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZQogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdGlvbnMuem9uZT0nbG9jYWwnXSAtIHRoZSB6b25lIHRvIHBsYWNlIHRoZSBEYXRlVGltZSBpbnRvCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc3RhdGljIGZyb21TZWNvbmRzKHNlY29uZHMsIG9wdGlvbnMgPSB7fSkgewogICAgICBpZiAoIWlzTnVtYmVyKHNlY29uZHMpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tU2Vjb25kcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dCIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IHNlY29uZHMgKiAxMDAwLAogICAgICAgICAgem9uZTogbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIGtleXMgbGlrZSAneWVhcicgYW5kICdob3VyJyB3aXRoIHJlYXNvbmFibGUgZGVmYXVsdHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb20KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoueWVhciAtIGEgeWVhciwgc3VjaCBhcyAxOTg3CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1vbnRoIC0gYSBtb250aCwgMS0xMgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXkgLSBhIGRheSBvZiB0aGUgbW9udGgsIDEtMzEsIGRlcGVuZGluZyBvbiB0aGUgbW9udGgKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoub3JkaW5hbCAtIGRheSBvZiB0aGUgeWVhciwgMS0zNjUgb3IgMzY2CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLndlZWtZZWFyIC0gYW4gSVNPIHdlZWsgeWVhcgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrTnVtYmVyIC0gYW4gSVNPIHdlZWsgbnVtYmVyLCBiZXR3ZWVuIDEgYW5kIDUyIG9yIDUzLCBkZXBlbmRpbmcgb24gdGhlIHllYXIKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla2RheSAtIGFuIElTTyB3ZWVrZGF5LCAxLTcsIHdoZXJlIDEgaXMgTW9uZGF5IGFuZCA3IGlzIFN1bmRheQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VyIC0gaG91ciBvZiB0aGUgZGF5LCAwLTIzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZSAtIG1pbnV0ZSBvZiB0aGUgaG91ciwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5zZWNvbmQgLSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taWxsaXNlY29uZCAtIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIDAtOTk5CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBpbnRlcnByZXQgdGhlIG51bWJlcnMgaW4gdGhlIGNvbnRleHQgb2YgYSBwYXJ0aWN1bGFyIHpvbmUuIENhbiB0YWtlIGFueSB2YWx1ZSB0YWtlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc2V0Wm9uZSgpCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgeWVhcjogMTk4MiwgbW9udGg6IDUsIGRheTogMjV9KS50b0lTT0RhdGUoKSAvLz0+ICcxOTgyLTA1LTI1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIgfSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wMS0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0pIC8vfj4gdG9kYXkgYXQgMTA6MjY6MDYKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ3V0YycgfSksCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICdsb2NhbCcgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ0FtZXJpY2EvTmV3X1lvcmsnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgd2Vla1llYXI6IDIwMTYsIHdlZWtOdW1iZXI6IDIsIHdlZWtkYXk6IDMgfSkudG9JU09EYXRlKCkgLy89PiAnMjAxNi0wMS0xMycKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbU9iamVjdChvYmosIG9wdHMgPSB7fSkgewogICAgICBvYmogPSBvYmogfHwge307CiAgICAgIGNvbnN0IHpvbmVUb1VzZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICAgIGlmICghem9uZVRvVXNlLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7CiAgICAgIH0KCiAgICAgIGNvbnN0IHRzTm93ID0gU2V0dGluZ3Mubm93KCksCiAgICAgICAgb2Zmc2V0UHJvdmlzID0gIWlzVW5kZWZpbmVkKG9wdHMuc3BlY2lmaWNPZmZzZXQpCiAgICAgICAgICA/IG9wdHMuc3BlY2lmaWNPZmZzZXQKICAgICAgICAgIDogem9uZVRvVXNlLm9mZnNldCh0c05vdyksCiAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yTUQgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5tb250aCkgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQuZGF5KSwKICAgICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELAogICAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyLAogICAgICAgIGxvYyA9IExvY2FsZS5mcm9tT2JqZWN0KG9wdHMpOwoKICAgICAgLy8gY2FzZXM6CiAgICAgIC8vIGp1c3QgYSB3ZWVrZGF5IC0+IHRoaXMgd2VlaydzIGluc3RhbmNlIG9mIHRoYXQgd2Vla2RheSwgbm8gd29ycmllcwogICAgICAvLyAoZ3JlZ29yaWFuIGRhdGEgb3Igb3JkaW5hbCkgKyAod2Vla1llYXIgb3Igd2Vla051bWJlcikgLT4gZXJyb3IKICAgICAgLy8gKGdyZWdvcmlhbiBtb250aCBvciBkYXkpICsgb3JkaW5hbCAtPiBlcnJvcgogICAgICAvLyBvdGhlcndpc2UganVzdCB1c2Ugd2Vla3Mgb3Igb3JkaW5hbHMgb3IgZ3JlZ29yaWFuLCBkZXBlbmRpbmcgb24gd2hhdCdzIHNwZWNpZmllZAoKICAgICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigKICAgICAgICAgICJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzIgogICAgICAgICk7CiAgICAgIH0KCiAgICAgIGlmIChjb250YWluc0dyZWdvck1EICYmIGNvbnRhaW5zT3JkaW5hbCkgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigiQ2FuJ3QgbWl4IG9yZGluYWwgZGF0ZXMgd2l0aCBtb250aC9kYXkiKTsKICAgICAgfQoKICAgICAgY29uc3QgdXNlV2Vla0RhdGEgPSBkZWZpbml0ZVdlZWtEZWYgfHwgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiAhY29udGFpbnNHcmVnb3IpOwoKICAgICAgLy8gY29uZmlndXJlIG91cnNlbHZlcyB0byBkZWFsIHdpdGggZ3JlZ29yaWFuIGRhdGVzIG9yIHdlZWsgc3R1ZmYKICAgICAgbGV0IHVuaXRzLAogICAgICAgIGRlZmF1bHRWYWx1ZXMsCiAgICAgICAgb2JqTm93ID0gdHNUb09iaih0c05vdywgb2Zmc2V0UHJvdmlzKTsKICAgICAgaWYgKHVzZVdlZWtEYXRhKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkV2Vla1VuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0V2Vla1VuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9XZWVrKG9iak5vdyk7CiAgICAgIH0gZWxzZSBpZiAoY29udGFpbnNPcmRpbmFsKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkT3JkaW5hbFVuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9PcmRpbmFsKG9iak5vdyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkVW5pdHM7CiAgICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRVbml0VmFsdWVzOwogICAgICB9CgogICAgICAvLyBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3Npbmcgc3R1ZmYKICAgICAgbGV0IGZvdW5kRmlyc3QgPSBmYWxzZTsKICAgICAgZm9yIChjb25zdCB1IG9mIHVuaXRzKSB7CiAgICAgICAgY29uc3QgdiA9IG5vcm1hbGl6ZWRbdV07CiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2KSkgewogICAgICAgICAgZm91bmRGaXJzdCA9IHRydWU7CiAgICAgICAgfSBlbHNlIGlmIChmb3VuZEZpcnN0KSB7CiAgICAgICAgICBub3JtYWxpemVkW3VdID0gZGVmYXVsdFZhbHVlc1t1XTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbm9ybWFsaXplZFt1XSA9IG9iak5vd1t1XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgdmFsdWVzIHdlIGhhdmUgYXJlIGluIHJhbmdlCiAgICAgIGNvbnN0IGhpZ2hlck9yZGVySW52YWxpZCA9IHVzZVdlZWtEYXRhCiAgICAgICAgICA/IGhhc0ludmFsaWRXZWVrRGF0YShub3JtYWxpemVkKQogICAgICAgICAgOiBjb250YWluc09yZGluYWwKICAgICAgICAgID8gaGFzSW52YWxpZE9yZGluYWxEYXRhKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG5vcm1hbGl6ZWQpLAogICAgICAgIGludmFsaWQgPSBoaWdoZXJPcmRlckludmFsaWQgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG5vcm1hbGl6ZWQpOwoKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgLy8gY29tcHV0ZSB0aGUgYWN0dWFsIHRpbWUKICAgICAgY29uc3QgZ3JlZ29yaWFuID0gdXNlV2Vla0RhdGEKICAgICAgICAgID8gd2Vla1RvR3JlZ29yaWFuKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbAogICAgICAgICAgPyBvcmRpbmFsVG9HcmVnb3JpYW4obm9ybWFsaXplZCkKICAgICAgICAgIDogbm9ybWFsaXplZCwKICAgICAgICBbdHNGaW5hbCwgb2Zmc2V0RmluYWxdID0gb2JqVG9UUyhncmVnb3JpYW4sIG9mZnNldFByb3Zpcywgem9uZVRvVXNlKSwKICAgICAgICBpbnN0ID0gbmV3IERhdGVUaW1lKHsKICAgICAgICAgIHRzOiB0c0ZpbmFsLAogICAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgICAgbzogb2Zmc2V0RmluYWwsCiAgICAgICAgICBsb2MsCiAgICAgICAgfSk7CgogICAgICAvLyBncmVnb3JpYW4gZGF0YSArIHdlZWtkYXkgc2VydmVzIG9ubHkgdG8gdmFsaWRhdGUKICAgICAgaWYgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiBjb250YWluc0dyZWdvciAmJiBvYmoud2Vla2RheSAhPT0gaW5zdC53ZWVrZGF5KSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoCiAgICAgICAgICAibWlzbWF0Y2hlZCB3ZWVrZGF5IiwKICAgICAgICAgIGB5b3UgY2FuJ3Qgc3BlY2lmeSBib3RoIGEgd2Vla2RheSBvZiAke25vcm1hbGl6ZWQud2Vla2RheX0gYW5kIGEgZGF0ZSBvZiAke2luc3QudG9JU08oKX1gCiAgICAgICAgKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGluc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIElTTyA4NjAxIHN0cmluZwogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcsIHtzZXRab25lOiB0cnVlfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzJywge3pvbmU6ICd1dGMnfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtVzA1LTQnKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUlTT0RhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJJU08gODYwMSIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBSRkMgMjgyMiBzdHJpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIFJGQyAyODIyIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZS4gU2luY2UgdGhlIG9mZnNldCBpcyBhbHdheXMgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMzoxMiBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJ0ZyaSwgMjUgTm92IDIwMTYgMTM6MjM6MTIgKzA2MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzIFonKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tUkZDMjgyMih0ZXh0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VSRkMyODIyRGF0ZSh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlJGQyAyODIyIiwgdGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIEhUVFAgaGVhZGVyIGRhdGUKICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBIVFRQIGhlYWRlciBkYXRlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSBIVFRQIGRhdGVzIGFyZSBhbHdheXMgaW4gVVRDLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggdGhlIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nLiBGb3IgSFRUUCBkYXRlcywgdGhpcyBpcyBhbHdheXMgVVRDLCBzbyB0aGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGB6b25lYCBvcHRpb24gdG8gJ3V0YycsIGJ1dCB0aGlzIG9wdGlvbiBpcyBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzaW1pbGFyIG1ldGhvZHMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuLCAwNiBOb3YgMTk5NCAwODo0OTozNyBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3IEdNVCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuIE5vdiAgNiAwODo0OTozNyAxOTk0JykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUhUVFAodGV4dCwgb3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IFt2YWxzLCBwYXJzZWRab25lXSA9IHBhcnNlSFRUUERhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJIVFRQIiwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIGlucHV0IHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZy4KICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvcGFyc2luZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgdGhlIGxpbmsgYmVsb3cgZm9yIHRoZSBmb3JtYXRzKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byB0aGlzIHpvbmUKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSBhIGxvY2FsZSBzdHJpbmcgdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyBsb2NhbGUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIHJlc3VsdGluZyBEYXRlVGltZSB0byB0aGlzIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIGlmIChpc1VuZGVmaW5lZCh0ZXh0KSB8fCBpc1VuZGVmaW5lZChmbXQpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tRm9ybWF0IHJlcXVpcmVzIGFuIGlucHV0IHN0cmluZyBhbmQgYSBmb3JtYXQiKTsKICAgICAgfQoKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRzLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pLAogICAgICAgIFt2YWxzLCBwYXJzZWRab25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZF0gPSBwYXJzZUZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICAgIGlmIChpbnZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgYGZvcm1hdCAke2ZtdH1gLCB0ZXh0LCBzcGVjaWZpY09mZnNldCk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIHVzZSBmcm9tRm9ybWF0IGluc3RlYWQKICAgICAqLwogICAgc3RhdGljIGZyb21TdHJpbmcodGV4dCwgZm10LCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXQodGV4dCwgZm10LCBvcHRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBTUUwgZGF0ZSwgdGltZSwgb3IgZGF0ZXRpbWUKICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIHVzZSB0aGlzIHpvbmUgaWYgbm8gb2Zmc2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgaW5wdXQgc3RyaW5nIGl0c2VsZi4gV2lsbCBhbHNvIGNvbnZlcnQgdGhlIERhdGVUaW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIHRvIHRoaXMgbnVtYmVyaW5nIHN5c3RlbQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1JykKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDInKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIrMDY6MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIgQW1lcmljYS9Mb3NfQW5nZWxlcycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJywgeyBzZXRab25lOiB0cnVlIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MicsIHsgem9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcwOToxMjozNC4zNDInKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tU1FMKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVNRTCh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlNRTCIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIERhdGVUaW1lIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkgewogICAgICBpZiAoIXJlYXNvbikgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBEYXRlVGltZSBpcyBpbnZhbGlkIik7CiAgICAgIH0KCiAgICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7CgogICAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZERhdGVUaW1lRXJyb3IoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IGludmFsaWQgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlVGltZS4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0RhdGVUaW1lKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkRhdGVUaW1lKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFByb2R1Y2UgdGhlIGZvcm1hdCBzdHJpbmcgZm9yIGEgc2V0IG9mIG9wdGlvbnMKICAgICAqIEBwYXJhbSBmb3JtYXRPcHRzCiAgICAgKiBAcGFyYW0gbG9jYWxlT3B0cwogICAgICogQHJldHVybnMge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIHBhcnNlRm9ybWF0Rm9yT3B0cyhmb3JtYXRPcHRzLCBsb2NhbGVPcHRzID0ge30pIHsKICAgICAgY29uc3QgdG9rZW5MaXN0ID0gZm9ybWF0T3B0c1RvVG9rZW5zKGZvcm1hdE9wdHMsIExvY2FsZS5mcm9tT2JqZWN0KGxvY2FsZU9wdHMpKTsKICAgICAgcmV0dXJuICF0b2tlbkxpc3QgPyBudWxsIDogdG9rZW5MaXN0Lm1hcCgodCkgPT4gKHQgPyB0LnZhbCA6IG51bGwpKS5qb2luKCIiKTsKICAgIH0KCiAgICAvKioKICAgICAqIFByb2R1Y2UgdGhlIHRoZSBmdWxseSBleHBhbmRlZCBmb3JtYXQgdG9rZW4gZm9yIHRoZSBsb2NhbGUKICAgICAqIERvZXMgTk9UIHF1b3RlIGNoYXJhY3RlcnMsIHNvIHF1b3RlZCB0b2tlbnMgd2lsbCBub3Qgcm91bmQgdHJpcCBjb3JyZWN0bHkKICAgICAqIEBwYXJhbSBmbXQKICAgICAqIEBwYXJhbSBsb2NhbGVPcHRzCiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgZXhwYW5kRm9ybWF0KGZtdCwgbG9jYWxlT3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IGV4cGFuZGVkID0gZXhwYW5kTWFjcm9Ub2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIExvY2FsZS5mcm9tT2JqZWN0KGxvY2FsZU9wdHMpKTsKICAgICAgcmV0dXJuIGV4cGFuZGVkLm1hcCgodCkgPT4gdC52YWwpLmpvaW4oIiIpOwogICAgfQoKICAgIC8vIElORk8KCiAgICAvKioKICAgICAqIEdldCB0aGUgdmFsdWUgb2YgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZScgb3IgJ2RheScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnbW9udGgnKTsgLy89PiA3CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA3LCA0KS5nZXQoJ2RheScpOyAvLz0+IDQKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgZ2V0KHVuaXQpIHsKICAgICAgcmV0dXJuIHRoaXNbdW5pdF07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIERhdGVUaW1lIGlzIHZhbGlkLiBJbnZhbGlkIERhdGVUaW1lcyBvY2N1ciB3aGVuOgogICAgICogKiBUaGUgRGF0ZVRpbWUgd2FzIGNyZWF0ZWQgZnJvbSBpbnZhbGlkIGNhbGVuZGFyIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSAxM3RoIG1vbnRoIG9yIEZlYnJ1YXJ5IDMwCiAgICAgKiAqIFRoZSBEYXRlVGltZSB3YXMgY3JlYXRlZCBieSBhbiBvcGVyYXRpb24gb24gYW5vdGhlciBpbnZhbGlkIGRhdGUKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNWYWxpZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA9PT0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIERhdGVUaW1lIGlzIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIERhdGVUaW1lIGlzIHZhbGlkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgaW52YWxpZFJlYXNvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5yZWFzb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBEYXRlVGltZSBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQuZXhwbGFuYXRpb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBsb2NhbGUgb2YgYSBEYXRlVGltZSwgc3VjaCAnZW4tR0InLiBUaGUgbG9jYWxlIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICoKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBsb2NhbGUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRGF0ZVRpbWUsIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRGF0ZVRpbWUKICAgICAqCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgb3V0cHV0IGNhbGVuZGFyIG9mIGEgRGF0ZVRpbWUsIHN1Y2ggJ2lzbGFtaWMnLiBUaGUgb3V0cHV0IGNhbGVuZGFyIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICoKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBvdXRwdXRDYWxlbmRhcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLm91dHB1dENhbGVuZGFyIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgdGltZSB6b25lIGFzc29jaWF0ZWQgd2l0aCB0aGlzIERhdGVUaW1lLgogICAgICogQHR5cGUge1pvbmV9CiAgICAgKi8KICAgIGdldCB6b25lKCkgewogICAgICByZXR1cm4gdGhpcy5fem9uZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbmFtZSBvZiB0aGUgdGltZSB6b25lLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IHpvbmVOYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy56b25lLm5hbWUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB5ZWFyCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkueWVhciAvLz0+IDIwMTcKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB5ZWFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLnllYXIgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHF1YXJ0ZXIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5xdWFydGVyIC8vPT4gMgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHF1YXJ0ZXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBNYXRoLmNlaWwodGhpcy5jLm1vbnRoIC8gMykgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1vbnRoICgxLTEyKS4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5tb250aCAvLz0+IDUKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBtb250aCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5tb250aCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGF5IG9mIHRoZSBtb250aCAoMS0zMGlzaCkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkuZGF5IC8vPT4gMjUKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBkYXkoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuZGF5IDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBob3VyIG9mIHRoZSBkYXkgKDAtMjMpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDkpLmhvdXIgLy89PiA5CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgaG91cigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5ob3VyIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtaW51dGUgb2YgdGhlIGhvdXIgKDAtNTkpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwKS5taW51dGUgLy89PiAzMAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1pbnV0ZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5taW51dGUgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHNlY29uZCBvZiB0aGUgbWludXRlICgwLTU5KS4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1LCA5LCAzMCwgNTIpLnNlY29uZCAvLz0+IDUyCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgc2Vjb25kKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLnNlY29uZCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWlsbGlzZWNvbmQgb2YgdGhlIHNlY29uZCAoMC05OTkpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1MiwgNjU0KS5taWxsaXNlY29uZCAvLz0+IDY1NAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1pbGxpc2Vjb25kKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbGxpc2Vjb25kIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB3ZWVrIHllYXIKICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMTIsIDMxKS53ZWVrWWVhciAvLz0+IDIwMTUKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrWWVhcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEodGhpcykud2Vla1llYXIgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWsgbnVtYmVyIG9mIHRoZSB3ZWVrIHllYXIgKDEtNTJpc2gpLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkud2Vla051bWJlciAvLz0+IDIxCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgd2Vla051bWJlcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEodGhpcykud2Vla051bWJlciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGF5IG9mIHRoZSB3ZWVrLgogICAgICogMSBpcyBNb25kYXkgYW5kIDcgaXMgU3VuZGF5CiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDExLCAzMSkud2Vla2RheSAvLz0+IDQKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrZGF5KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrZGF5IDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBvcmRpbmFsIChtZWFuaW5nIHRoZSBkYXkgb2YgdGhlIHllYXIpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkub3JkaW5hbCAvLz0+IDE0NQogICAgICogQHR5cGUge251bWJlcnxEYXRlVGltZX0KICAgICAqLwogICAgZ2V0IG9yZGluYWwoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKS5vcmRpbmFsIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBodW1hbiByZWFkYWJsZSBzaG9ydCBtb250aCBuYW1lLCBzdWNoIGFzICdPY3QnLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAxMCwgMzApLm1vbnRoU2hvcnQgLy89PiBPY3QKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBtb250aFNob3J0KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoInNob3J0IiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMubW9udGggLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgbW9udGggbmFtZSwgc3VjaCBhcyAnT2N0b2JlcicuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkubW9udGhMb25nIC8vPT4gT2N0b2JlcgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG1vbnRoTG9uZygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEluZm8ubW9udGhzKCJsb25nIiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMubW9udGggLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IHdlZWtkYXksIHN1Y2ggYXMgJ01vbicuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkud2Vla2RheVNob3J0IC8vPT4gTW9uCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgd2Vla2RheVNob3J0KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cygic2hvcnQiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy53ZWVrZGF5IC0gMV0gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBodW1hbiByZWFkYWJsZSBsb25nIHdlZWtkYXksIHN1Y2ggYXMgJ01vbmRheScuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkud2Vla2RheUxvbmcgLy89PiBNb25kYXkKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB3ZWVrZGF5TG9uZygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEluZm8ud2Vla2RheXMoImxvbmciLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy53ZWVrZGF5IC0gMV0gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBVVEMgb2Zmc2V0IG9mIHRoaXMgRGF0ZVRpbWUgaW4gbWludXRlcwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkub2Zmc2V0IC8vPT4gLTI0MAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkub2Zmc2V0IC8vPT4gMAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG9mZnNldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/ICt0aGlzLm8gOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHNob3J0IGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlICJFU1QiIG9yICJFRFQiLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgb2Zmc2V0TmFtZVNob3J0KCkgewogICAgICBpZiAodGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuem9uZS5vZmZzZXROYW1lKHRoaXMudHMsIHsKICAgICAgICAgIGZvcm1hdDogInNob3J0IiwKICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUsCiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbG9uZyBodW1hbiBuYW1lIGZvciB0aGUgem9uZSdzIGN1cnJlbnQgb2Zmc2V0LCBmb3IgZXhhbXBsZSAiRWFzdGVybiBTdGFuZGFyZCBUaW1lIiBvciAiRWFzdGVybiBEYXlsaWdodCBUaW1lIi4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG9mZnNldE5hbWVMb25nKCkgewogICAgICBpZiAodGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuem9uZS5vZmZzZXROYW1lKHRoaXMudHMsIHsKICAgICAgICAgIGZvcm1hdDogImxvbmciLAogICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSwKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IHdoZXRoZXIgdGhpcyB6b25lJ3Mgb2Zmc2V0IGV2ZXIgY2hhbmdlcywgYXMgaW4gYSBEU1QuCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzT2Zmc2V0Rml4ZWQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUuaXNVbml2ZXJzYWwgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHdoZXRoZXIgdGhlIERhdGVUaW1lIGlzIGluIGEgRFNULgogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc0luRFNUKCkgewogICAgICBpZiAodGhpcy5pc09mZnNldEZpeGVkKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAoCiAgICAgICAgICB0aGlzLm9mZnNldCA+IHRoaXMuc2V0KHsgbW9udGg6IDEsIGRheTogMSB9KS5vZmZzZXQgfHwKICAgICAgICAgIHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoeyBtb250aDogNSB9KS5vZmZzZXQKICAgICAgICApOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBEYXRlVGltZSBpcyBpbiBhIGxlYXAgeWVhciwgZmFsc2Ugb3RoZXJ3aXNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2KS5pc0luTGVhcFllYXIgLy89PiB0cnVlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5pc0luTGVhcFllYXIgLy89PiBmYWxzZQogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc0luTGVhcFllYXIoKSB7CiAgICAgIHJldHVybiBpc0xlYXBZZWFyKHRoaXMueWVhcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGlzIERhdGVUaW1lJ3MgbW9udGgKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYsIDIpLmRheXNJbk1vbnRoIC8vPT4gMjkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYsIDMpLmRheXNJbk1vbnRoIC8vPT4gMzEKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBkYXlzSW5Nb250aCgpIHsKICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhciwgdGhpcy5tb250aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGlzIERhdGVUaW1lJ3MgeWVhcgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNikuZGF5c0luWWVhciAvLz0+IDM2NgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykuZGF5c0luWWVhciAvLz0+IDM2NQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXNJblllYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBkYXlzSW5ZZWFyKHRoaXMueWVhcikgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygd2Vla3MgaW4gdGhpcyBEYXRlVGltZSdzIHllYXIKICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAwNCkud2Vla3NJbldlZWtZZWFyIC8vPT4gNTMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLndlZWtzSW5XZWVrWWVhciAvLz0+IDUyCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgd2Vla3NJbldlZWtZZWFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gd2Vla3NJbldlZWtZZWFyKHRoaXMud2Vla1llYXIpIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVzb2x2ZWQgSW50bCBvcHRpb25zIGZvciB0aGlzIERhdGVUaW1lLgogICAgICogVGhpcyBpcyB1c2VmdWwgaW4gdW5kZXJzdGFuZGluZyB0aGUgYmVoYXZpb3Igb2YgZm9ybWF0dGluZyBtZXRob2RzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIHRoZSBzYW1lIG9wdGlvbnMgYXMgdG9Mb2NhbGVTdHJpbmcKICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgcmVzb2x2ZWRMb2NhbGVPcHRpb25zKG9wdHMgPSB7fSkgewogICAgICBjb25zdCB7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBjYWxlbmRhciB9ID0gRm9ybWF0dGVyLmNyZWF0ZSgKICAgICAgICB0aGlzLmxvYy5jbG9uZShvcHRzKSwKICAgICAgICBvcHRzCiAgICAgICkucmVzb2x2ZWRPcHRpb25zKHRoaXMpOwogICAgICByZXR1cm4geyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXI6IGNhbGVuZGFyIH07CiAgICB9CgogICAgLy8gVFJBTlNGT1JNCgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgRGF0ZVRpbWUncyB6b25lIHRvIFVUQy4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICoKICAgICAqIEVxdWl2YWxlbnQgdG8ge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9KCd1dGMnKQogICAgICogQHBhcmFtIHtudW1iZXJ9IFtvZmZzZXQ9MF0gLSBvcHRpb25hbGx5LCBhbiBvZmZzZXQgZnJvbSBVVEMgaW4gbWludXRlcwogICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzPXt9XSAtIG9wdGlvbnMgdG8gcGFzcyB0byBgc2V0Wm9uZSgpYAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHRvVVRDKG9mZnNldCA9IDAsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5zZXRab25lKEZpeGVkT2Zmc2V0Wm9uZS5pbnN0YW5jZShvZmZzZXQpLCBvcHRzKTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gdGhlIGhvc3QncyBsb2NhbCB6b25lLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKgogICAgICogRXF1aXZhbGVudCB0byBgc2V0Wm9uZSgnbG9jYWwnKWAKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICB0b0xvY2FsKCkgewogICAgICByZXR1cm4gdGhpcy5zZXRab25lKFNldHRpbmdzLmRlZmF1bHRab25lKTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gc3BlY2lmaWVkIHpvbmUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqCiAgICAgKiBCeSBkZWZhdWx0LCB0aGUgc2V0dGVyIGtlZXBzIHRoZSB1bmRlcmx5aW5nIHRpbWUgdGhlIHNhbWUgKGFzIGluLCB0aGUgc2FtZSB0aW1lc3RhbXApLCBidXQgdGhlIG5ldyBpbnN0YW5jZSB3aWxsIHJlcG9ydCBkaWZmZXJlbnQgbG9jYWwgdGltZXMgYW5kIGNvbnNpZGVyIERTVHMgd2hlbiBtYWtpbmcgY29tcHV0YXRpb25zLCBhcyB3aXRoIHtAbGluayBEYXRlVGltZSNwbHVzfS4gWW91IG1heSB3aXNoIHRvIHVzZSB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbH0gYW5kIHtAbGluayBEYXRlVGltZSN0b1VUQ30gd2hpY2ggcHJvdmlkZSBzaW1wbGUgY29udmVuaWVuY2Ugd3JhcHBlcnMgZm9yIGNvbW1vbmx5IHVzZWQgem9uZXMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbem9uZT0nbG9jYWwnXSAtIGEgem9uZSBpZGVudGlmaWVyLiBBcyBhIHN0cmluZywgdGhhdCBjYW4gYmUgYW55IElBTkEgem9uZSBzdXBwb3J0ZWQgYnkgdGhlIGhvc3QgZW52aXJvbm1lbnQsIG9yIGEgZml4ZWQtb2Zmc2V0IG5hbWUgb2YgdGhlIGZvcm0gJ1VUQyszJywgb3IgdGhlIHN0cmluZ3MgJ2xvY2FsJyBvciAndXRjJy4gWW91IG1heSBhbHNvIHN1cHBseSBhbiBpbnN0YW5jZSBvZiBhIHtAbGluayBEYXRlVGltZSNab25lfSBjbGFzcy4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5rZWVwTG9jYWxUaW1lPWZhbHNlXSAtIElmIHRydWUsIGFkanVzdCB0aGUgdW5kZXJseWluZyB0aW1lIHNvIHRoYXQgdGhlIGxvY2FsIHRpbWUgc3RheXMgdGhlIHNhbWUsIGJ1dCBpbiB0aGUgdGFyZ2V0IHpvbmUuIFlvdSBzaG91bGQgcmFyZWx5IG5lZWQgdGhpcy4KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZSA9IGZhbHNlLCBrZWVwQ2FsZW5kYXJUaW1lID0gZmFsc2UgfSA9IHt9KSB7CiAgICAgIHpvbmUgPSBub3JtYWxpemVab25lKHpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKTsKICAgICAgaWYgKHpvbmUuZXF1YWxzKHRoaXMuem9uZSkpIHsKICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfSBlbHNlIGlmICghem9uZS5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmUpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZXQgbmV3VFMgPSB0aGlzLnRzOwogICAgICAgIGlmIChrZWVwTG9jYWxUaW1lIHx8IGtlZXBDYWxlbmRhclRpbWUpIHsKICAgICAgICAgIGNvbnN0IG9mZnNldEd1ZXNzID0gem9uZS5vZmZzZXQodGhpcy50cyk7CiAgICAgICAgICBjb25zdCBhc09iaiA9IHRoaXMudG9PYmplY3QoKTsKICAgICAgICAgIFtuZXdUU10gPSBvYmpUb1RTKGFzT2JqLCBvZmZzZXRHdWVzcywgem9uZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHRzOiBuZXdUUywgem9uZSB9KTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvciBvdXRwdXRDYWxlbmRhci4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgLSB0aGUgcHJvcGVydGllcyB0byBzZXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5yZWNvbmZpZ3VyZSh7IGxvY2FsZTogJ2VuLUdCJyB9KQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHJlY29uZmlndXJlKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyIH0gPSB7fSkgewogICAgICBjb25zdCBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhciB9KTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgbG9jIH0pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIGxvY2FsZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICogSnVzdCBhIGNvbnZlbmllbnQgYWxpYXMgZm9yIHJlY29uZmlndXJlKHsgbG9jYWxlIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkuc2V0TG9jYWxlKCdlbi1HQicpCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc2V0TG9jYWxlKGxvY2FsZSkgewogICAgICByZXR1cm4gdGhpcy5yZWNvbmZpZ3VyZSh7IGxvY2FsZSB9KTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIHVuaXRzLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBZb3UgY2FuIG9ubHkgc2V0IHVuaXRzIHdpdGggdGhpcyBtZXRob2Q7IGZvciAic2V0dGluZyIgbWV0YWRhdGEsIHNlZSB7QGxpbmsgRGF0ZVRpbWUjcmVjb25maWd1cmV9IGFuZCB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0uCiAgICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gYSBtYXBwaW5nIG9mIHVuaXRzIHRvIG51bWJlcnMKICAgICAqIEBleGFtcGxlIGR0LnNldCh7IHllYXI6IDIwMTcgfSkKICAgICAqIEBleGFtcGxlIGR0LnNldCh7IGhvdXI6IDgsIG1pbnV0ZTogMzAgfSkKICAgICAqIEBleGFtcGxlIGR0LnNldCh7IHdlZWtkYXk6IDUgfSkKICAgICAqIEBleGFtcGxlIGR0LnNldCh7IHllYXI6IDIwMDUsIG9yZGluYWw6IDIzNCB9KQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHNldCh2YWx1ZXMpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZU9iamVjdCh2YWx1ZXMsIG5vcm1hbGl6ZVVuaXQpLAogICAgICAgIHNldHRpbmdXZWVrU3R1ZmYgPQogICAgICAgICAgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla1llYXIpIHx8CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrTnVtYmVyKSB8fAogICAgICAgICAgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla2RheSksCiAgICAgICAgY29udGFpbnNPcmRpbmFsID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQub3JkaW5hbCksCiAgICAgICAgY29udGFpbnNHcmVnb3JZZWFyID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQueWVhciksCiAgICAgICAgY29udGFpbnNHcmVnb3JNRCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm1vbnRoKSB8fCAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yID0gY29udGFpbnNHcmVnb3JZZWFyIHx8IGNvbnRhaW5zR3JlZ29yTUQsCiAgICAgICAgZGVmaW5pdGVXZWVrRGVmID0gbm9ybWFsaXplZC53ZWVrWWVhciB8fCBub3JtYWxpemVkLndlZWtOdW1iZXI7CgogICAgICBpZiAoKGNvbnRhaW5zR3JlZ29yIHx8IGNvbnRhaW5zT3JkaW5hbCkgJiYgZGVmaW5pdGVXZWVrRGVmKSB7CiAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKAogICAgICAgICAgIkNhbid0IG1peCB3ZWVrWWVhci93ZWVrTnVtYmVyIHVuaXRzIHdpdGggeWVhci9tb250aC9kYXkgb3Igb3JkaW5hbHMiCiAgICAgICAgKTsKICAgICAgfQoKICAgICAgaWYgKGNvbnRhaW5zR3JlZ29yTUQgJiYgY29udGFpbnNPcmRpbmFsKSB7CiAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKCJDYW4ndCBtaXggb3JkaW5hbCBkYXRlcyB3aXRoIG1vbnRoL2RheSIpOwogICAgICB9CgogICAgICBsZXQgbWl4ZWQ7CiAgICAgIGlmIChzZXR0aW5nV2Vla1N0dWZmKSB7CiAgICAgICAgbWl4ZWQgPSB3ZWVrVG9HcmVnb3JpYW4oeyAuLi5ncmVnb3JpYW5Ub1dlZWsodGhpcy5jKSwgLi4ubm9ybWFsaXplZCB9KTsKICAgICAgfSBlbHNlIGlmICghaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSkgewogICAgICAgIG1peGVkID0gb3JkaW5hbFRvR3JlZ29yaWFuKHsgLi4uZ3JlZ29yaWFuVG9PcmRpbmFsKHRoaXMuYyksIC4uLm5vcm1hbGl6ZWQgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbWl4ZWQgPSB7IC4uLnRoaXMudG9PYmplY3QoKSwgLi4ubm9ybWFsaXplZCB9OwoKICAgICAgICAvLyBpZiB3ZSBkaWRuJ3Qgc2V0IHRoZSBkYXkgYnV0IHdlIGVuZGVkIHVwIG9uIGFuIG92ZXJmbG93IGRhdGUsCiAgICAgICAgLy8gdXNlIHRoZSBsYXN0IGRheSBvZiB0aGUgcmlnaHQgbW9udGgKICAgICAgICBpZiAoaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpKSB7CiAgICAgICAgICBtaXhlZC5kYXkgPSBNYXRoLm1pbihkYXlzSW5Nb250aChtaXhlZC55ZWFyLCBtaXhlZC5tb250aCksIG1peGVkLmRheSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBjb25zdCBbdHMsIG9dID0gb2JqVG9UUyhtaXhlZCwgdGhpcy5vLCB0aGlzLnpvbmUpOwogICAgICByZXR1cm4gY2xvbmUodGhpcywgeyB0cywgbyB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lCiAgICAgKgogICAgICogQWRkaW5nIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBvciBtaWxsaXNlY29uZHMgaW5jcmVhc2VzIHRoZSB0aW1lc3RhbXAgYnkgdGhlIHJpZ2h0IG51bWJlciBvZiBtaWxsaXNlY29uZHMuIEFkZGluZyBkYXlzLCBtb250aHMsIG9yIHllYXJzIHNoaWZ0cyB0aGUgY2FsZW5kYXIsIGFjY291bnRpbmcgZm9yIERTVHMgYW5kIGxlYXAgeWVhcnMgYWxvbmcgdGhlIHdheS4gVGh1cywgYGR0LnBsdXMoeyBob3VyczogMjQgfSlgIG1heSByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdGltZSB0aGFuIGBkdC5wbHVzKHsgZGF5czogMSB9KWAgaWYgdGhlcmUncyBhIERTVCBzaGlmdCBpbiBiZXR3ZWVuLgogICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gYWRkLiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cygxMjMpIC8vfj4gaW4gMTIzIG1pbGxpc2Vjb25kcwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IG1pbnV0ZXM6IDE1IH0pIC8vfj4gaW4gMTUgbWludXRlcwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkgLy9+PiB0aGlzIHRpbWUgdG9tb3Jyb3cKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAtMSB9KSAvL34+IHRoaXMgdGltZSB5ZXN0ZXJkYXkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBob3VyczogMywgbWludXRlczogMTMgfSkgLy9+PiBpbiAzIGhyLCAxMyBtaW4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSkgLy9+PiBpbiAzIGhyLCAxMyBtaW4KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBwbHVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CiAgICAgIHJldHVybiBjbG9uZSh0aGlzLCBhZGp1c3RUaW1lKHRoaXMsIGR1cikpOwogICAgfQoKICAgIC8qKgogICAgICogU3VidHJhY3QgYSBwZXJpb2Qgb2YgdGltZSB0byB0aGlzIERhdGVUaW1lIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyBEYXRlVGltZQogICAgICogU2VlIHtAbGluayBEYXRlVGltZSNwbHVzfQogICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gc3VidHJhY3QuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpCiAgICAgQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIG1pbnVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbikubmVnYXRlKCk7CiAgICAgIHJldHVybiBjbG9uZSh0aGlzLCBhZGp1c3RUaW1lKHRoaXMsIGR1cikpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhpcyBEYXRlVGltZSB0byB0aGUgYmVnaW5uaW5nIG9mIGEgdW5pdCBvZiB0aW1lLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBUaGUgdW5pdCB0byBnbyB0byB0aGUgYmVnaW5uaW5nIG9mLiBDYW4gYmUgJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCBvciAnbWlsbGlzZWNvbmQnLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignbW9udGgnKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMy0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLnN0YXJ0T2YoJ3llYXInKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMS0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLnN0YXJ0T2YoJ3dlZWsnKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMy0wMycsIHdlZWtzIGFsd2F5cyBzdGFydCBvbiBNb25kYXlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuc3RhcnRPZignZGF5JykudG9JU09UaW1lKCk7IC8vPT4gJzAwOjAwLjAwMC0wNTowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5zdGFydE9mKCdob3VyJykudG9JU09UaW1lKCk7IC8vPT4gJzA1OjAwOjAwLjAwMC0wNTowMCcKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGFydE9mKHVuaXQpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBvID0ge30sCiAgICAgICAgbm9ybWFsaXplZFVuaXQgPSBEdXJhdGlvbi5ub3JtYWxpemVVbml0KHVuaXQpOwogICAgICBzd2l0Y2ggKG5vcm1hbGl6ZWRVbml0KSB7CiAgICAgICAgY2FzZSAieWVhcnMiOgogICAgICAgICAgby5tb250aCA9IDE7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgInF1YXJ0ZXJzIjoKICAgICAgICBjYXNlICJtb250aHMiOgogICAgICAgICAgby5kYXkgPSAxOwogICAgICAgIC8vIGZhbGxzIHRocm91Z2gKICAgICAgICBjYXNlICJ3ZWVrcyI6CiAgICAgICAgY2FzZSAiZGF5cyI6CiAgICAgICAgICBvLmhvdXIgPSAwOwogICAgICAgIC8vIGZhbGxzIHRocm91Z2gKICAgICAgICBjYXNlICJob3VycyI6CiAgICAgICAgICBvLm1pbnV0ZSA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgIm1pbnV0ZXMiOgogICAgICAgICAgby5zZWNvbmQgPSAwOwogICAgICAgIC8vIGZhbGxzIHRocm91Z2gKICAgICAgICBjYXNlICJzZWNvbmRzIjoKICAgICAgICAgIG8ubWlsbGlzZWNvbmQgPSAwOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgLy8gbm8gZGVmYXVsdCwgaW52YWxpZCB1bml0cyB0aHJvdyBpbiBub3JtYWxpemVVbml0KCkKICAgICAgfQoKICAgICAgaWYgKG5vcm1hbGl6ZWRVbml0ID09PSAid2Vla3MiKSB7CiAgICAgICAgby53ZWVrZGF5ID0gMTsKICAgICAgfQoKICAgICAgaWYgKG5vcm1hbGl6ZWRVbml0ID09PSAicXVhcnRlcnMiKSB7CiAgICAgICAgY29uc3QgcSA9IE1hdGguY2VpbCh0aGlzLm1vbnRoIC8gMyk7CiAgICAgICAgby5tb250aCA9IChxIC0gMSkgKiAzICsgMTsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMuc2V0KG8pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhpcyBEYXRlVGltZSB0byB0aGUgZW5kIChtZWFuaW5nIHRoZSBsYXN0IG1pbGxpc2Vjb25kKSBvZiBhIHVuaXQgb2YgdGltZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBUaGUgdW5pdCB0byBnbyB0byB0aGUgZW5kIG9mLiBDYW4gYmUgJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCBvciAnbWlsbGlzZWNvbmQnLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuZW5kT2YoJ21vbnRoJykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0zMVQyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZigneWVhcicpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMTItMzFUMjM6NTk6NTkuOTk5LTA1OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuZW5kT2YoJ3dlZWsnKS50b0lTTygpOyAvLyA9PiAnMjAxNC0wMy0wOVQyMzo1OTo1OS45OTktMDU6MDAnLCB3ZWVrcyBzdGFydCBvbiBNb25kYXlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuZW5kT2YoJ2RheScpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMDMtMDNUMjM6NTk6NTkuOTk5LTA1OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLmVuZE9mKCdob3VyJykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QwNTo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgZW5kT2YodW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyB0aGlzLnBsdXMoeyBbdW5pdF06IDEgfSkKICAgICAgICAgICAgLnN0YXJ0T2YodW5pdCkKICAgICAgICAgICAgLm1pbnVzKDEpCiAgICAgICAgOiB0aGlzOwogICAgfQoKICAgIC8vIE9VVFBVVAoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nLgogICAgICogKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZSBmb3JtYXR0aW5nIHRvb2wuIEZvciBhIHRhYmxlIG9mIHRva2VucyBhbmQgdGhlaXIgaW50ZXJwcmV0YXRpb25zLCBzZWUgW2hlcmVdKGh0dHBzOi8vbW9tZW50LmdpdGh1Yi5pby9sdXhvbi8jL2Zvcm1hdHRpbmc/aWQ9dGFibGUtb2YtdG9rZW5zKS4KICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRzIHRvIG92ZXJyaWRlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgb24gdGhpcyBEYXRlVGltZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJykgLy89PiAnMjAxNyBBcHIgMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2ZyJykudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJykgLy89PiAnMjAxNyBhdnIuIDIyJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJywgeyBsb2NhbGU6ICJmciIgfSkgLy89PiAnMjAxNyBhdnIuIDIyJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoIkhIICdob3VycyBhbmQnIG1tICdtaW51dGVzJyIpIC8vPT4gJzIwIGhvdXJzIGFuZCA1NSBtaW51dGVzJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0Zvcm1hdChmbXQsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLnJlZGVmYXVsdFRvRU4ob3B0cykpLmZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyh0aGlzLCBmbXQpCiAgICAgICAgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgZGF0ZS4gQWNjZXB0cyB0aGUgc2FtZSBvcHRpb25zIGFzIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIGFuZCBhbnkgcHJlc2V0cyBkZWZpbmVkIGJ5IEx1eG9uLCBzdWNoIGFzIGBEYXRlVGltZS5EQVRFX0ZVTExgIG9yIGBEYXRlVGltZS5USU1FX1NJTVBMRWAuCiAgICAgKiBUaGUgZXhhY3QgYmVoYXZpb3Igb2YgdGhpcyBtZXRob2QgaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb24KICAgICAqIG9mIHRoZSBEYXRlVGltZSBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0CiAgICAgKiBAcGFyYW0gZm9ybWF0T3B0cyB7T2JqZWN0fSAtIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZygpOyAvLz0+IDQvMjAvMjAxNwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkuc2V0TG9jYWxlKCdlbi1nYicpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gJzIwLzA0LzIwMTcnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwpOyAvLz0+ICdBcHJpbCAyMCwgMjAxNycKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCwgeyBsb2NhbGU6ICdmcicgfSk7IC8vPT4gJzI4IGFvw7t0IDIwMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5USU1FX1NJTVBMRSk7IC8vPT4gJzExOjMyIEFNJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuREFURVRJTUVfU0hPUlQpOyAvLz0+ICc0LzIwLzIwMTcsIDExOjMyIEFNJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnbG9uZycsIG1vbnRoOiAnbG9uZycsIGRheTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHVyc2RheSwgQXByaWwgMjAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IHdlZWtkYXk6ICdzaG9ydCcsIG1vbnRoOiAnc2hvcnQnLCBkYXk6ICcyLWRpZ2l0JywgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KTsgLy89PiAnVGh1LCBBcHIgMjAsIDExOjI3IEFNJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoeyBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnLCBob3VyQ3ljbGU6ICdoMjMnIH0pOyAvLz0+ICcxMTozMicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9Mb2NhbGVTdHJpbmcoZm9ybWF0T3B0cyA9IERBVEVfU0hPUlQsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLmNsb25lKG9wdHMpLCBmb3JtYXRPcHRzKS5mb3JtYXREYXRlVGltZSh0aGlzKQogICAgICAgIDogSU5WQUxJRDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gYXJyYXkgb2YgZm9ybWF0ICJwYXJ0cyIsIG1lYW5pbmcgaW5kaXZpZHVhbCB0b2tlbnMgYWxvbmcgd2l0aCBtZXRhZGF0YS4gVGhpcyBpcyBhbGxvd3MgY2FsbGVycyB0byBwb3N0LXByb2Nlc3MgaW5kaXZpZHVhbCBzZWN0aW9ucyBvZiB0aGUgZm9ybWF0dGVkIG91dHB1dC4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdC9mb3JtYXRUb1BhcnRzCiAgICAgKiBAcGFyYW0gb3B0cyB7T2JqZWN0fSAtIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3Igb3B0aW9ucywgc2FtZSBhcyBgdG9Mb2NhbGVTdHJpbmdgLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVQYXJ0cygpOyAvLz0+IFsKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnZGF5JywgdmFsdWU6ICcyNScgfSwKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAnLycgfSwKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnbW9udGgnLCB2YWx1ZTogJzA1JyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcvJyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICd5ZWFyJywgdmFsdWU6ICcxOTgyJyB9CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiBdCiAgICAgKi8KICAgIHRvTG9jYWxlUGFydHMob3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIG9wdHMpLmZvcm1hdERhdGVUaW1lUGFydHModGhpcykKICAgICAgICA6IFtdOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzU2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIHNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5leHRlbmRlZFpvbmU9ZmFsc2VdIC0gYWRkIHRoZSB0aW1lIHpvbmUgZm9ybWF0IGV4dGVuc2lvbgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MywgNSwgMjUpLnRvSVNPKCkgLy89PiAnMTk4Mi0wNS0yNVQwMDowMDowMC4wMDBaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNS0wNDowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMjAxNy0wNC0yMlQyMDo0NzowNS4zMzUnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTyh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcyMDE3MDQyMlQyMDQ3MDUuMzM1LTA0MDAnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSVNPKHsKICAgICAgZm9ybWF0ID0gImV4dGVuZGVkIiwKICAgICAgc3VwcHJlc3NTZWNvbmRzID0gZmFsc2UsCiAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzID0gZmFsc2UsCiAgICAgIGluY2x1ZGVPZmZzZXQgPSB0cnVlLAogICAgICBleHRlbmRlZFpvbmUgPSBmYWxzZSwKICAgIH0gPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICBjb25zdCBleHQgPSBmb3JtYXQgPT09ICJleHRlbmRlZCI7CgogICAgICBsZXQgYyA9IHRvSVNPRGF0ZSh0aGlzLCBleHQpOwogICAgICBjICs9ICJUIjsKICAgICAgYyArPSB0b0lTT1RpbWUodGhpcywgZXh0LCBzdXBwcmVzc1NlY29uZHMsIHN1cHByZXNzTWlsbGlzZWNvbmRzLCBpbmNsdWRlT2Zmc2V0LCBleHRlbmRlZFpvbmUpOwogICAgICByZXR1cm4gYzsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lJ3MgZGF0ZSBjb21wb25lbnQKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MiwgNSwgMjUpLnRvSVNPRGF0ZSgpIC8vPT4gJzE5ODItMDUtMjUnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MiwgNSwgMjUpLnRvSVNPRGF0ZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxOTgyMDUyNScKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09EYXRlKHsgZm9ybWF0ID0gImV4dGVuZGVkIiB9ID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQoKICAgICAgcmV0dXJuIHRvSVNPRGF0ZSh0aGlzLCBmb3JtYXQgPT09ICJleHRlbmRlZCIpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyB3ZWVrIGRhdGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09XZWVrRGF0ZSgpIC8vPT4gJzE5ODItVzIxLTInCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSVNPV2Vla0RhdGUoKSB7CiAgICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgImtra2stJ1cnV1ctYyIpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyB0aW1lIGNvbXBvbmVudAogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmV4dGVuZGVkWm9uZT10cnVlXSAtIGFkZCB0aGUgdGltZSB6b25lIGZvcm1hdCBleHRlbnNpb24KICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKCkgLy89PiAnMDc6MzQ6MTkuMzYxWicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQsIHNlY29uZHM6IDAsIG1pbGxpc2Vjb25kczogMCB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc1NlY29uZHM6IHRydWUgfSkgLy89PiAnMDc6MzRaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoeyBmb3JtYXQ6ICdiYXNpYycgfSkgLy89PiAnMDczNDE5LjM2MVonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSh7IGluY2x1ZGVQcmVmaXg6IHRydWUgfSkgLy89PiAnVDA3OjM0OjE5LjM2MVonCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSVNPVGltZSh7CiAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzID0gZmFsc2UsCiAgICAgIHN1cHByZXNzU2Vjb25kcyA9IGZhbHNlLAogICAgICBpbmNsdWRlT2Zmc2V0ID0gdHJ1ZSwKICAgICAgaW5jbHVkZVByZWZpeCA9IGZhbHNlLAogICAgICBleHRlbmRlZFpvbmUgPSBmYWxzZSwKICAgICAgZm9ybWF0ID0gImV4dGVuZGVkIiwKICAgIH0gPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICBsZXQgYyA9IGluY2x1ZGVQcmVmaXggPyAiVCIgOiAiIjsKICAgICAgcmV0dXJuICgKICAgICAgICBjICsKICAgICAgICB0b0lTT1RpbWUoCiAgICAgICAgICB0aGlzLAogICAgICAgICAgZm9ybWF0ID09PSAiZXh0ZW5kZWQiLAogICAgICAgICAgc3VwcHJlc3NTZWNvbmRzLAogICAgICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMsCiAgICAgICAgICBpbmNsdWRlT2Zmc2V0LAogICAgICAgICAgZXh0ZW5kZWRab25lCiAgICAgICAgKQogICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBSRkMgMjgyMi1jb21wYXRpYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvUkZDMjgyMigpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMDA6MDA6MDAgKzAwMDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCAtMDQwMCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9SRkMyODIyKCkgewogICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsICJFRUUsIGRkIExMTCB5eXl5IEhIOm1tOnNzIFpaWiIsIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEhUVFAgaGVhZGVycy4gVGhlIG91dHB1dCBpcyBhbHdheXMgZXhwcmVzc2VkIGluIEdNVC4KICAgICAqIFNwZWNpZmljYWxseSwgdGhlIHN0cmluZyBjb25mb3JtcyB0byBSRkMgMTEyMy4KICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvSFRUUCgpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMDA6MDA6MDAgR01UJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzLCAxOSkudG9IVFRQKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAxOTowMDowMCBHTVQnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSFRUUCgpIHsKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLnRvVVRDKCksICJFRUUsIGRkIExMTCB5eXl5IEhIOm1tOnNzICdHTVQnIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBTUUwgRGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1NRTERhdGUoKSAvLz0+ICcyMDE0LTA3LTEzJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1NRTERhdGUoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgICAgcmV0dXJuIHRvSVNPRGF0ZSh0aGlzLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBUaW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVpvbmU9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgem9uZSwgc3VjaCBhcyAnQW1lcmljYS9OZXdfWW9yaycuIE92ZXJyaWRlcyBpbmNsdWRlT2Zmc2V0LgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0U3BhY2U9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSB0aW1lIGFuZCB0aGUgb2Zmc2V0LCBzdWNoIGFzICcwNToxNToxNi4zNDUgLTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkudG9TUUwoKSAvLz0+ICcwNToxNToxNi4zNDUnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b1NRTCgpIC8vPT4gJzA1OjE1OjE2LjM0NSAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b1NRTCh7IGluY2x1ZGVPZmZzZXQ6IGZhbHNlIH0pIC8vPT4gJzA1OjE1OjE2LjM0NScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKHsgaW5jbHVkZVpvbmU6IGZhbHNlIH0pIC8vPT4gJzA1OjE1OjE2LjM0NSBBbWVyaWNhL05ld19Zb3JrJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1NRTFRpbWUoeyBpbmNsdWRlT2Zmc2V0ID0gdHJ1ZSwgaW5jbHVkZVpvbmUgPSBmYWxzZSwgaW5jbHVkZU9mZnNldFNwYWNlID0gdHJ1ZSB9ID0ge30pIHsKICAgICAgbGV0IGZtdCA9ICJISDptbTpzcy5TU1MiOwoKICAgICAgaWYgKGluY2x1ZGVab25lIHx8IGluY2x1ZGVPZmZzZXQpIHsKICAgICAgICBpZiAoaW5jbHVkZU9mZnNldFNwYWNlKSB7CiAgICAgICAgICBmbXQgKz0gIiAiOwogICAgICAgIH0KICAgICAgICBpZiAoaW5jbHVkZVpvbmUpIHsKICAgICAgICAgIGZtdCArPSAieiI7CiAgICAgICAgfSBlbHNlIGlmIChpbmNsdWRlT2Zmc2V0KSB7CiAgICAgICAgICBmbXQgKz0gIlpaIjsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgZm10LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBEYXRlVGltZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVab25lPWZhbHNlXSAtIGluY2x1ZGUgdGhlIHpvbmUsIHN1Y2ggYXMgJ0FtZXJpY2EvTmV3X1lvcmsnLiBPdmVycmlkZXMgaW5jbHVkZU9mZnNldC4KICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldFNwYWNlPXRydWVdIC0gaW5jbHVkZSB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgdGltZSBhbmQgdGhlIG9mZnNldCwgc3VjaCBhcyAnMDU6MTU6MTYuMzQ1IC0wNDowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9TUUwoKSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCBaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKCkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgLTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlWm9uZTogdHJ1ZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCBBbWVyaWNhL05ld19Zb3JrJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1NRTChvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQoKICAgICAgcmV0dXJuIGAke3RoaXMudG9TUUxEYXRlKCl9ICR7dGhpcy50b1NRTFRpbWUob3B0cyl9YDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU3RyaW5nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50b0lTTygpIDogSU5WQUxJRDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVwb2NoIG1pbGxpc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLiBBbGlhcyBvZiB7QGxpbmsgRGF0ZVRpbWUjdG9NaWxsaXN9CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHZhbHVlT2YoKSB7CiAgICAgIHJldHVybiB0aGlzLnRvTWlsbGlzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBtaWxsaXNlY29uZHMgb2YgdGhpcyBEYXRlVGltZS4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdG9NaWxsaXMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRzIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICB0b1NlY29uZHMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRzIC8gMTAwMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVwb2NoIHNlY29uZHMgKGFzIGEgd2hvbGUgbnVtYmVyKSBvZiB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICB0b1VuaXhJbnRlZ2VyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gTWF0aC5mbG9vcih0aGlzLnRzIC8gMTAwMCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBKU09OLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0pTT04oKSB7CiAgICAgIHJldHVybiB0aGlzLnRvSVNPKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgQlNPTiBzZXJpYWxpemFibGUgZXF1aXZhbGVudCB0byB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7RGF0ZX0KICAgICAqLwogICAgdG9CU09OKCkgewogICAgICByZXR1cm4gdGhpcy50b0pTRGF0ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggdGhpcyBEYXRlVGltZSdzIHllYXIsIG1vbnRoLCBkYXksIGFuZCBzbyBvbi4KICAgICAqIEBwYXJhbSBvcHRzIC0gb3B0aW9ucyBmb3IgZ2VuZXJhdGluZyB0aGUgb2JqZWN0CiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVDb25maWc9ZmFsc2VdIC0gaW5jbHVkZSBjb25maWd1cmF0aW9uIGF0dHJpYnV0ZXMgaW4gdGhlIG91dHB1dAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9PYmplY3QoKSAvLz0+IHsgeWVhcjogMjAxNywgbW9udGg6IDQsIGRheTogMjIsIGhvdXI6IDIwLCBtaW51dGU6IDQ5LCBzZWNvbmQ6IDQyLCBtaWxsaXNlY29uZDogMjY4IH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgdG9PYmplY3Qob3B0cyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4ge307CgogICAgICBjb25zdCBiYXNlID0geyAuLi50aGlzLmMgfTsKCiAgICAgIGlmIChvcHRzLmluY2x1ZGVDb25maWcpIHsKICAgICAgICBiYXNlLm91dHB1dENhbGVuZGFyID0gdGhpcy5vdXRwdXRDYWxlbmRhcjsKICAgICAgICBiYXNlLm51bWJlcmluZ1N5c3RlbSA9IHRoaXMubG9jLm51bWJlcmluZ1N5c3RlbTsKICAgICAgICBiYXNlLmxvY2FsZSA9IHRoaXMubG9jLmxvY2FsZTsKICAgICAgfQogICAgICByZXR1cm4gYmFzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IERhdGUgZXF1aXZhbGVudCB0byB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7RGF0ZX0KICAgICAqLwogICAgdG9KU0RhdGUoKSB7CiAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmlzVmFsaWQgPyB0aGlzLnRzIDogTmFOKTsKICAgIH0KCiAgICAvLyBDT01QQVJFCgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gRGF0ZVRpbWVzIGFzIGEgRHVyYXRpb24uCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIERhdGVUaW1lIHRvIGNvbXBhcmUgdGhpcyBvbmUgdG8KICAgICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIGFycmF5IG9mIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgY3JlYXRpb24gb2YgdGhlIER1cmF0aW9uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBleGFtcGxlCiAgICAgKiB2YXIgaTEgPSBEYXRlVGltZS5mcm9tSVNPKCcxOTgyLTA1LTI1VDA5OjQ1JyksCiAgICAgKiAgICAgaTIgPSBEYXRlVGltZS5mcm9tSVNPKCcxOTgzLTEwLTE0VDEwOjMwJyk7CiAgICAgKiBpMi5kaWZmKGkxKS50b09iamVjdCgpIC8vPT4geyBtaWxsaXNlY29uZHM6IDQzODA3NTAwMDAwIH0KICAgICAqIGkyLmRpZmYoaTEsICdob3VycycpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMjE2OC43NSB9CiAgICAgKiBpMi5kaWZmKGkxLCBbJ21vbnRocycsICdkYXlzJ10pLnRvT2JqZWN0KCkgLy89PiB7IG1vbnRoczogMTYsIGRheXM6IDE5LjAzMTI1IH0KICAgICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnLCAnaG91cnMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTksIGhvdXJzOiAwLjc1IH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBkaWZmKG90aGVyRGF0ZVRpbWUsIHVuaXQgPSAibWlsbGlzZWNvbmRzIiwgb3B0cyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlckRhdGVUaW1lLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uaW52YWxpZCgiY3JlYXRlZCBieSBkaWZmaW5nIGFuIGludmFsaWQgRGF0ZVRpbWUiKTsKICAgICAgfQoKICAgICAgY29uc3QgZHVyT3B0cyA9IHsgbG9jYWxlOiB0aGlzLmxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtOiB0aGlzLm51bWJlcmluZ1N5c3RlbSwgLi4ub3B0cyB9OwoKICAgICAgY29uc3QgdW5pdHMgPSBtYXliZUFycmF5KHVuaXQpLm1hcChEdXJhdGlvbi5ub3JtYWxpemVVbml0KSwKICAgICAgICBvdGhlcklzTGF0ZXIgPSBvdGhlckRhdGVUaW1lLnZhbHVlT2YoKSA+IHRoaXMudmFsdWVPZigpLAogICAgICAgIGVhcmxpZXIgPSBvdGhlcklzTGF0ZXIgPyB0aGlzIDogb3RoZXJEYXRlVGltZSwKICAgICAgICBsYXRlciA9IG90aGVySXNMYXRlciA/IG90aGVyRGF0ZVRpbWUgOiB0aGlzLAogICAgICAgIGRpZmZlZCA9IGRpZmYoZWFybGllciwgbGF0ZXIsIHVuaXRzLCBkdXJPcHRzKTsKCiAgICAgIHJldHVybiBvdGhlcklzTGF0ZXIgPyBkaWZmZWQubmVnYXRlKCkgOiBkaWZmZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCByaWdodCBub3cuCiAgICAgKiBTZWUge0BsaW5rIERhdGVUaW1lI2RpZmZ9CiAgICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gW3VuaXQ9WydtaWxsaXNlY29uZHMnXV0gLSB0aGUgdW5pdCBvciB1bml0cyB1bml0cyAoc3VjaCBhcyAnaG91cnMnIG9yICdkYXlzJykgdG8gaW5jbHVkZSBpbiB0aGUgZHVyYXRpb24KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgY3JlYXRpb24gb2YgdGhlIER1cmF0aW9uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBkaWZmTm93KHVuaXQgPSAibWlsbGlzZWNvbmRzIiwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmRpZmYoRGF0ZVRpbWUubm93KCksIHVuaXQsIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIEludGVydmFsIHNwYW5uaW5nIGJldHdlZW4gdGhpcyBEYXRlVGltZSBhbmQgYW5vdGhlciBEYXRlVGltZQogICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBvdGhlciBlbmQgcG9pbnQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgdW50aWwob3RoZXJEYXRlVGltZSkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyh0aGlzLCBvdGhlckRhdGVUaW1lKSA6IHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIERhdGVUaW1lIGlzIGluIHRoZSBzYW1lIHVuaXQgb2YgdGltZSBhcyBhbm90aGVyIERhdGVUaW1lLgogICAgICogSGlnaGVyLW9yZGVyIHVuaXRzIG11c3QgYWxzbyBiZSBpZGVudGljYWwgZm9yIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJuIGB0cnVlYC4KICAgICAqIE5vdGUgdGhhdCB0aW1lIHpvbmVzIGFyZSAqKmlnbm9yZWQqKiBpbiB0aGlzIGNvbXBhcmlzb24sIHdoaWNoIGNvbXBhcmVzIHRoZSAqKmxvY2FsKiogY2FsZW5kYXIgdGltZS4gVXNlIHtAbGluayBEYXRlVGltZSNzZXRab25lfSB0byBjb252ZXJ0IG9uZSBvZiB0aGUgZGF0ZXMgaWYgbmVlZGVkLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBvdGhlciBEYXRlVGltZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNoZWNrIHNhbWVuZXNzIG9uCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5oYXNTYW1lKG90aGVyRFQsICdkYXknKTsgLy9+PiB0cnVlIGlmIG90aGVyRFQgaXMgaW4gdGhlIHNhbWUgY3VycmVudCBjYWxlbmRhciBkYXkKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGhhc1NhbWUob3RoZXJEYXRlVGltZSwgdW5pdCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwoKICAgICAgY29uc3QgaW5wdXRNcyA9IG90aGVyRGF0ZVRpbWUudmFsdWVPZigpOwogICAgICBjb25zdCBhZGp1c3RlZFRvWm9uZSA9IHRoaXMuc2V0Wm9uZShvdGhlckRhdGVUaW1lLnpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KTsKICAgICAgcmV0dXJuIGFkanVzdGVkVG9ab25lLnN0YXJ0T2YodW5pdCkgPD0gaW5wdXRNcyAmJiBpbnB1dE1zIDw9IGFkanVzdGVkVG9ab25lLmVuZE9mKHVuaXQpOwogICAgfQoKICAgIC8qKgogICAgICogRXF1YWxpdHkgY2hlY2sKICAgICAqIFR3byBEYXRlVGltZXMgYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgcmVwcmVzZW50IHRoZSBzYW1lIG1pbGxpc2Vjb25kLCBoYXZlIHRoZSBzYW1lIHpvbmUgYW5kIGxvY2F0aW9uLCBhbmQgYXJlIGJvdGggdmFsaWQuCiAgICAgKiBUbyBjb21wYXJlIGp1c3QgdGhlIG1pbGxpc2Vjb25kIHZhbHVlcywgdXNlIGArZHQxID09PSArZHQyYC4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyIC0gdGhlIG90aGVyIERhdGVUaW1lCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgcmV0dXJuICgKICAgICAgICB0aGlzLmlzVmFsaWQgJiYKICAgICAgICBvdGhlci5pc1ZhbGlkICYmCiAgICAgICAgdGhpcy52YWx1ZU9mKCkgPT09IG90aGVyLnZhbHVlT2YoKSAmJgogICAgICAgIHRoaXMuem9uZS5lcXVhbHMob3RoZXIuem9uZSkgJiYKICAgICAgICB0aGlzLmxvYy5lcXVhbHMob3RoZXIubG9jKQogICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHRoaXMgdGltZSByZWxhdGl2ZSB0byBub3csIHN1Y2ggYXMgImluIHR3byBkYXlzIi4gQ2FuIG9ubHkgaW50ZXJuYXRpb25hbGl6ZSBpZiB5b3VyCiAgICAgKiBwbGF0Zm9ybSBzdXBwb3J0cyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC4gUm91bmRzIGRvd24gYnkgZGVmYXVsdC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgb3V0cHV0CiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBbb3B0aW9ucy5iYXNlPURhdGVUaW1lLm5vdygpXSAtIHRoZSBEYXRlVGltZSB0byB1c2UgYXMgdGhlIGJhc2lzIHRvIHdoaWNoIHRoaXMgdGltZSBpcyBjb21wYXJlZC4gRGVmYXVsdHMgdG8gbm93LgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnN0eWxlPSJsb25nIl0gLSB0aGUgc3R5bGUgb2YgdW5pdHMsIG11c3QgYmUgImxvbmciLCAic2hvcnQiLCBvciAibmFycm93IgogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IG9wdGlvbnMudW5pdCAtIHVzZSBhIHNwZWNpZmljIHVuaXQgb3IgYXJyYXkgb2YgdW5pdHM7IGlmIG9taXR0ZWQsIG9yIGFuIGFycmF5LCB0aGUgbWV0aG9kIHdpbGwgcGljayB0aGUgYmVzdCB1bml0LiBVc2UgYW4gYXJyYXkgb3Igb25lIG9mICJ5ZWFycyIsICJxdWFydGVycyIsICJtb250aHMiLCAid2Vla3MiLCAiZGF5cyIsICJob3VycyIsICJtaW51dGVzIiwgb3IgInNlY29uZHMiCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnJvdW5kPXRydWVdIC0gd2hldGhlciB0byByb3VuZCB0aGUgbnVtYmVycyBpbiB0aGUgb3V0cHV0LgogICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnBhZGRpbmc9MF0gLSBwYWRkaW5nIGluIG1pbGxpc2Vjb25kcy4gVGhpcyBhbGxvd3MgeW91IHRvIHJvdW5kIHVwIHRoZSByZXN1bHQgaWYgaXQgZml0cyBpbnNpZGUgdGhlIHRocmVzaG9sZC4gRG9uJ3QgdXNlIGluIGNvbWJpbmF0aW9uIHdpdGgge3JvdW5kOiBmYWxzZX0gYmVjYXVzZSB0aGUgZGVjaW1hbCBvdXRwdXQgd2lsbCBpbmNsdWRlIHRoZSBwYWRkaW5nLgogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubG9jYWxlIC0gb3ZlcnJpZGUgdGhlIGxvY2FsZSBvZiB0aGlzIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKCkgLy89PiAiaW4gMSBkYXkiCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoImVzIikudG9SZWxhdGl2ZSh7IGRheXM6IDEgfSkgLy89PiAiZGVudHJvIGRlIDEgZMOtYSIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoeyBsb2NhbGU6ICJmciIgfSkgLy89PiAiZGFucyAyMyBoZXVyZXMiCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGRheXM6IDIgfSkudG9SZWxhdGl2ZSgpIC8vPT4gIjIgZGF5cyBhZ28iCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGRheXM6IDIgfSkudG9SZWxhdGl2ZSh7IHVuaXQ6ICJob3VycyIgfSkgLy89PiAiNDggaG91cnMgYWdvIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBob3VyczogMzYgfSkudG9SZWxhdGl2ZSh7IHJvdW5kOiBmYWxzZSB9KSAvLz0+ICIxLjUgZGF5cyBhZ28iCiAgICAgKi8KICAgIHRvUmVsYXRpdmUob3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKICAgICAgY29uc3QgYmFzZSA9IG9wdGlvbnMuYmFzZSB8fCBEYXRlVGltZS5mcm9tT2JqZWN0KHt9LCB7IHpvbmU6IHRoaXMuem9uZSB9KSwKICAgICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nID8gKHRoaXMgPCBiYXNlID8gLW9wdGlvbnMucGFkZGluZyA6IG9wdGlvbnMucGFkZGluZykgOiAwOwogICAgICBsZXQgdW5pdHMgPSBbInllYXJzIiwgIm1vbnRocyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyJdOwogICAgICBsZXQgdW5pdCA9IG9wdGlvbnMudW5pdDsKICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy51bml0KSkgewogICAgICAgIHVuaXRzID0gb3B0aW9ucy51bml0OwogICAgICAgIHVuaXQgPSB1bmRlZmluZWQ7CiAgICAgIH0KICAgICAgcmV0dXJuIGRpZmZSZWxhdGl2ZShiYXNlLCB0aGlzLnBsdXMocGFkZGluZyksIHsKICAgICAgICAuLi5vcHRpb25zLAogICAgICAgIG51bWVyaWM6ICJhbHdheXMiLAogICAgICAgIHVuaXRzLAogICAgICAgIHVuaXQsCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGRhdGUgcmVsYXRpdmUgdG8gdG9kYXksIHN1Y2ggYXMgInllc3RlcmRheSIgb3IgIm5leHQgbW9udGgiLgogICAgICogT25seSBpbnRlcm5hdGlvbmFsaXplcyBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0cyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgb3V0cHV0CiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBbb3B0aW9ucy5iYXNlPURhdGVUaW1lLm5vdygpXSAtIHRoZSBEYXRlVGltZSB0byB1c2UgYXMgdGhlIGJhc2lzIHRvIHdoaWNoIHRoaXMgdGltZSBpcyBjb21wYXJlZC4gRGVmYXVsdHMgdG8gbm93LgogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubG9jYWxlIC0gb3ZlcnJpZGUgdGhlIGxvY2FsZSBvZiB0aGlzIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdDsgaWYgb21pdHRlZCwgdGhlIG1ldGhvZCB3aWxsIHBpY2sgdGhlIHVuaXQuIFVzZSBvbmUgb2YgInllYXJzIiwgInF1YXJ0ZXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsIG9yICJkYXlzIgogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubnVtYmVyaW5nU3lzdGVtIC0gb3ZlcnJpZGUgdGhlIG51bWJlcmluZ1N5c3RlbSBvZiB0aGlzIERhdGVUaW1lLiBUaGUgSW50bCBzeXN0ZW0gbWF5IGNob29zZSBub3QgdG8gaG9ub3IgdGhpcwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZUNhbGVuZGFyKCkgLy89PiAidG9tb3Jyb3ciCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoImVzIikucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSgpIC8vPT4gIiJtYcOxYW5hIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZUNhbGVuZGFyKHsgbG9jYWxlOiAiZnIiIH0pIC8vPT4gImRlbWFpbiIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoKSAvLz0+ICIyIGRheXMgYWdvIgogICAgICovCiAgICB0b1JlbGF0aXZlQ2FsZW5kYXIob3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKCiAgICAgIHJldHVybiBkaWZmUmVsYXRpdmUob3B0aW9ucy5iYXNlIHx8IERhdGVUaW1lLmZyb21PYmplY3Qoe30sIHsgem9uZTogdGhpcy56b25lIH0pLCB0aGlzLCB7CiAgICAgICAgLi4ub3B0aW9ucywKICAgICAgICBudW1lcmljOiAiYXV0byIsCiAgICAgICAgdW5pdHM6IFsieWVhcnMiLCAibW9udGhzIiwgImRheXMiXSwKICAgICAgICBjYWxlbmRhcnk6IHRydWUsCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBtaW4gb2Ygc2V2ZXJhbCBkYXRlIHRpbWVzCiAgICAgKiBAcGFyYW0gey4uLkRhdGVUaW1lfSBkYXRlVGltZXMgLSB0aGUgRGF0ZVRpbWVzIGZyb20gd2hpY2ggdG8gY2hvb3NlIHRoZSBtaW5pbXVtCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0gdGhlIG1pbiBEYXRlVGltZSwgb3IgdW5kZWZpbmVkIGlmIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50CiAgICAgKi8KICAgIHN0YXRpYyBtaW4oLi4uZGF0ZVRpbWVzKSB7CiAgICAgIGlmICghZGF0ZVRpbWVzLmV2ZXJ5KERhdGVUaW1lLmlzRGF0ZVRpbWUpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJtaW4gcmVxdWlyZXMgYWxsIGFyZ3VtZW50cyBiZSBEYXRlVGltZXMiKTsKICAgICAgfQogICAgICByZXR1cm4gYmVzdEJ5KGRhdGVUaW1lcywgKGkpID0+IGkudmFsdWVPZigpLCBNYXRoLm1pbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIG1heCBvZiBzZXZlcmFsIGRhdGUgdGltZXMKICAgICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1heGltdW0KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWF4IERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnQKICAgICAqLwogICAgc3RhdGljIG1heCguLi5kYXRlVGltZXMpIHsKICAgICAgaWYgKCFkYXRlVGltZXMuZXZlcnkoRGF0ZVRpbWUuaXNEYXRlVGltZSkpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm1heCByZXF1aXJlcyBhbGwgYXJndW1lbnRzIGJlIERhdGVUaW1lcyIpOwogICAgICB9CiAgICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCAoaSkgPT4gaS52YWx1ZU9mKCksIE1hdGgubWF4KTsKICAgIH0KCiAgICAvLyBNSVNDCgogICAgLyoqCiAgICAgKiBFeHBsYWluIGhvdyBhIHN0cmluZyB3b3VsZCBiZSBwYXJzZWQgYnkgZnJvbUZvcm1hdCgpCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBzdHJpbmcgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHRoZSBzdHJpbmcgaXMgZXhwZWN0ZWQgdG8gYmUgaW4gKHNlZSBkZXNjcmlwdGlvbikKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0YWtlbiBieSBmcm9tRm9ybWF0KCkKICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGZyb21Gb3JtYXRFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyA9IHt9KSB7CiAgICAgIGNvbnN0IHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCB9ID0gb3B0aW9ucywKICAgICAgICBsb2NhbGVUb1VzZSA9IExvY2FsZS5mcm9tT3B0cyh7CiAgICAgICAgICBsb2NhbGUsCiAgICAgICAgICBudW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICBkZWZhdWx0VG9FTjogdHJ1ZSwKICAgICAgICB9KTsKICAgICAgcmV0dXJuIGV4cGxhaW5Gcm9tVG9rZW5zKGxvY2FsZVRvVXNlLCB0ZXh0LCBmbXQpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21Gb3JtYXRFeHBsYWluIGluc3RlYWQKICAgICAqLwogICAgc3RhdGljIGZyb21TdHJpbmdFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyA9IHt9KSB7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tRm9ybWF0RXhwbGFpbih0ZXh0LCBmbXQsIG9wdGlvbnMpOwogICAgfQoKICAgIC8vIEZPUk1BVCBQUkVTRVRTCgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlIDEwLzE0LzE5ODMKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9TSE9SVCgpIHsKICAgICAgcmV0dXJuIERBVEVfU0hPUlQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMnCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVfTUVEKCkgewogICAgICByZXR1cm4gREFURV9NRUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmksIE9jdCAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9NRURfV0lUSF9XRUVLREFZKCkgewogICAgICByZXR1cm4gREFURV9NRURfV0lUSF9XRUVLREFZOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9GVUxMKCkgewogICAgICByZXR1cm4gREFURV9GVUxMOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnVHVlc2RheSwgT2N0b2JlciAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9IVUdFKCkgewogICAgICByZXR1cm4gREFURV9IVUdFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9TSU1QTEUoKSB7CiAgICAgIHJldHVybiBUSU1FX1NJTVBMRTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IFRJTUVfV0lUSF9TRUNPTkRTKCkgewogICAgICByZXR1cm4gVElNRV9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9XSVRIX1NIT1JUX09GRlNFVCgpIHsKICAgICAgcmV0dXJuIFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9XSVRIX0xPTkdfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV9XSVRIX0xPTkdfT0ZGU0VUOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzAnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9TSU1QTEUoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1NJTVBMRTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzJywgYWx3YXlzIDI0LWhvdXIuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IFRJTUVfMjRfV0lUSF9TRUNPTkRTKCkgewogICAgICByZXR1cm4gVElNRV8yNF9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBFRFQnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCgpIHsKICAgICAgcmV0dXJuIFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMTAvMTQvMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9TSE9SVCgpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX1NIT1JUOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMTAvMTQvMTk4MywgOTozMDozMyBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEKCkgewogICAgICByZXR1cm4gREFURVRJTUVfTUVEOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0IDE0LCAxOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpLCAxNCBPY3QgMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZKCkgewogICAgICByZXR1cm4gREFURVRJTUVfTUVEX1dJVEhfV0VFS0RBWTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdG9iZXIgMTQsIDE5ODMsIDk6MzAgQU0gRURUJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX0ZVTEwoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9GVUxMOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MywgOTozMDozMyBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaWRheSwgT2N0b2JlciAxNCwgMTk4MywgOTozMCBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfSFVHRSgpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0hVR0U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmlkYXksIE9jdG9iZXIgMTQsIDE5ODMsIDk6MzA6MzMgQU0gRWFzdGVybiBEYXlsaWdodCBUaW1lJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTKCkgewogICAgICByZXR1cm4gREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFM7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGZ1bmN0aW9uIGZyaWVuZGx5RGF0ZVRpbWUoZGF0ZVRpbWVpc2gpIHsKICAgIGlmIChEYXRlVGltZS5pc0RhdGVUaW1lKGRhdGVUaW1laXNoKSkgewogICAgICByZXR1cm4gZGF0ZVRpbWVpc2g7CiAgICB9IGVsc2UgaWYgKGRhdGVUaW1laXNoICYmIGRhdGVUaW1laXNoLnZhbHVlT2YgJiYgaXNOdW1iZXIoZGF0ZVRpbWVpc2gudmFsdWVPZigpKSkgewogICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUpTRGF0ZShkYXRlVGltZWlzaCk7CiAgICB9IGVsc2UgaWYgKGRhdGVUaW1laXNoICYmIHR5cGVvZiBkYXRlVGltZWlzaCA9PT0gIm9iamVjdCIpIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoZGF0ZVRpbWVpc2gpOwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKAogICAgICAgIGBVbmtub3duIGRhdGV0aW1lIGFyZ3VtZW50OiAke2RhdGVUaW1laXNofSwgb2YgdHlwZSAke3R5cGVvZiBkYXRlVGltZWlzaH1gCiAgICAgICk7CiAgICB9CiAgfQoKICAvLy8vLy8vLy8vLy8vLy8vLy8vLw0KICAvLyBRdWVyeSBTZXR0aW5ncyAvLw0KICAvLy8vLy8vLy8vLy8vLy8vLy8vLw0KICBjb25zdCBERUZBVUxUX1FVRVJZX1NFVFRJTkdTID0gew0KICAgICAgcmVuZGVyTnVsbEFzOiAiXFwtIiwNCiAgICAgIHRhc2tDb21wbGV0aW9uVHJhY2tpbmc6IGZhbHNlLA0KICAgICAgdGFza0NvbXBsZXRpb25Vc2VFbW9qaVNob3J0aGFuZDogZmFsc2UsDQogICAgICB0YXNrQ29tcGxldGlvblRleHQ6ICJjb21wbGV0aW9uIiwNCiAgICAgIHRhc2tDb21wbGV0aW9uRGF0ZUZvcm1hdDogInl5eXktTU0tZGQiLA0KICAgICAgcmVjdXJzaXZlU3ViVGFza0NvbXBsZXRpb246IGZhbHNlLA0KICAgICAgd2Fybk9uRW1wdHlSZXN1bHQ6IHRydWUsDQogICAgICByZWZyZXNoRW5hYmxlZDogdHJ1ZSwNCiAgICAgIHJlZnJlc2hJbnRlcnZhbDogMjUwMCwNCiAgICAgIGRlZmF1bHREYXRlRm9ybWF0OiAiTU1NTSBkZCwgeXl5eSIsDQogICAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXQ6ICJoOm1tIGEgLSBNTU1NIGRkLCB5eXl5IiwNCiAgICAgIG1heFJlY3Vyc2l2ZVJlbmRlckRlcHRoOiA0LA0KICAgICAgdGFibGVJZENvbHVtbk5hbWU6ICJGaWxlIiwNCiAgICAgIHRhYmxlR3JvdXBDb2x1bW5OYW1lOiAiR3JvdXAiLA0KICAgICAgc2hvd1Jlc3VsdENvdW50OiB0cnVlLA0KICB9Ow0KICBjb25zdCBERUZBVUxUX0VYUE9SVF9TRVRUSU5HUyA9IHsNCiAgICAgIGFsbG93SHRtbDogdHJ1ZSwNCiAgfTsNCiAgLyoqIERlZmF1bHQgc2V0dGluZ3MgZm9yIGRhdGF2aWV3IG9uIGluc3RhbGwuICovDQogICh7DQogICAgICAuLi5ERUZBVUxUX1FVRVJZX1NFVFRJTkdTLA0KICAgICAgLi4uREVGQVVMVF9FWFBPUlRfU0VUVElOR1MsDQogICAgICAuLi57DQogICAgICAgICAgaW5saW5lUXVlcnlQcmVmaXg6ICI9IiwNCiAgICAgICAgICBpbmxpbmVKc1F1ZXJ5UHJlZml4OiAiJD0iLA0KICAgICAgICAgIGlubGluZVF1ZXJpZXNJbkNvZGVibG9ja3M6IHRydWUsDQogICAgICAgICAgZW5hYmxlSW5saW5lRGF0YXZpZXc6IHRydWUsDQogICAgICAgICAgZW5hYmxlRGF0YXZpZXdKczogZmFsc2UsDQogICAgICAgICAgZW5hYmxlSW5saW5lRGF0YXZpZXdKczogZmFsc2UsDQogICAgICAgICAgcHJldHR5UmVuZGVySW5saW5lRmllbGRzOiB0cnVlLA0KICAgICAgICAgIGRhdGF2aWV3SnNLZXl3b3JkOiAiZGF0YXZpZXdqcyIsDQogICAgICB9LA0KICB9KTsKCiAgLyoqIEZ1bmN0aW9uYWwgcmV0dXJuIHR5cGUgZm9yIGVycm9yIGhhbmRsaW5nLiAqLw0KICBjbGFzcyBTdWNjZXNzIHsNCiAgICAgIGNvbnN0cnVjdG9yKHZhbHVlKSB7DQogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOw0KICAgICAgICAgIHRoaXMuc3VjY2Vzc2Z1bCA9IHRydWU7DQogICAgICB9DQogICAgICBtYXAoZikgew0KICAgICAgICAgIHJldHVybiBuZXcgU3VjY2VzcyhmKHRoaXMudmFsdWUpKTsNCiAgICAgIH0NCiAgICAgIGZsYXRNYXAoZikgew0KICAgICAgICAgIHJldHVybiBmKHRoaXMudmFsdWUpOw0KICAgICAgfQ0KICAgICAgbWFwRXJyKGYpIHsNCiAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgIH0NCiAgICAgIGJpbWFwKHN1Y2MsIF9mYWlsKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXMubWFwKHN1Y2MpOw0KICAgICAgfQ0KICAgICAgb3JFbHNlKF92YWx1ZSkgew0KICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlOw0KICAgICAgfQ0KICAgICAgY2FzdCgpIHsNCiAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgIH0NCiAgICAgIG9yRWxzZVRocm93KF9tZXNzYWdlKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7DQogICAgICB9DQogIH0NCiAgLyoqIEZ1bmN0aW9uYWwgcmV0dXJuIHR5cGUgZm9yIGVycm9yIGhhbmRsaW5nLiAqLw0KICBjbGFzcyBGYWlsdXJlIHsNCiAgICAgIGNvbnN0cnVjdG9yKGVycm9yKSB7DQogICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yOw0KICAgICAgICAgIHRoaXMuc3VjY2Vzc2Z1bCA9IGZhbHNlOw0KICAgICAgfQ0KICAgICAgbWFwKF9mKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXM7DQogICAgICB9DQogICAgICBmbGF0TWFwKF9mKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXM7DQogICAgICB9DQogICAgICBtYXBFcnIoZikgew0KICAgICAgICAgIHJldHVybiBuZXcgRmFpbHVyZShmKHRoaXMuZXJyb3IpKTsNCiAgICAgIH0NCiAgICAgIGJpbWFwKF9zdWNjLCBmYWlsKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXMubWFwRXJyKGZhaWwpOw0KICAgICAgfQ0KICAgICAgb3JFbHNlKHZhbHVlKSB7DQogICAgICAgICAgcmV0dXJuIHZhbHVlOw0KICAgICAgfQ0KICAgICAgY2FzdCgpIHsNCiAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgIH0NCiAgICAgIG9yRWxzZVRocm93KG1lc3NhZ2UpIHsNCiAgICAgICAgICBpZiAobWVzc2FnZSkNCiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UodGhpcy5lcnJvcikpOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCIiICsgdGhpcy5lcnJvcik7DQogICAgICB9DQogIH0NCiAgLyoqIE1vbmFkaWMgJ1Jlc3VsdCcgdHlwZSB3aGljaCBlbmNhcHN1bGF0ZXMgd2hldGhlciBhIHByb2NlZHVyZSBzdWNjZWVkZWQgb3IgZmFpbGVkLCBhcyB3ZWxsIGFzIGl0J3MgcmV0dXJuIHZhbHVlLiAqLw0KICB2YXIgUmVzdWx0Ow0KICAoZnVuY3Rpb24gKFJlc3VsdCkgew0KICAgICAgLyoqIENvbnN0cnVjdCBhIG5ldyBzdWNjZXNzIHJlc3VsdCB3cmFwcGluZyB0aGUgZ2l2ZW4gdmFsdWUuICovDQogICAgICBmdW5jdGlvbiBzdWNjZXNzKHZhbHVlKSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKHZhbHVlKTsNCiAgICAgIH0NCiAgICAgIFJlc3VsdC5zdWNjZXNzID0gc3VjY2VzczsNCiAgICAgIC8qKiBDb25zdHJ1Y3QgYSBuZXcgZmFpbHVyZSB2YWx1ZSB3cmFwcGluZyB0aGUgZ2l2ZW4gZXJyb3IuICovDQogICAgICBmdW5jdGlvbiBmYWlsdXJlKGVycm9yKSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKGVycm9yKTsNCiAgICAgIH0NCiAgICAgIFJlc3VsdC5mYWlsdXJlID0gZmFpbHVyZTsNCiAgICAgIC8qKiBKb2luIHR3byByZXN1bHRzIHdpdGggYSBiaS1mdW5jdGlvbiBhbmQgcmV0dXJuIGEgbmV3IHJlc3VsdC4gKi8NCiAgICAgIGZ1bmN0aW9uIGZsYXRNYXAyKGZpcnN0LCBzZWNvbmQsIGYpIHsNCiAgICAgICAgICBpZiAoZmlyc3Quc3VjY2Vzc2Z1bCkgew0KICAgICAgICAgICAgICBpZiAoc2Vjb25kLnN1Y2Nlc3NmdWwpDQogICAgICAgICAgICAgICAgICByZXR1cm4gZihmaXJzdC52YWx1ZSwgc2Vjb25kLnZhbHVlKTsNCiAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmUoc2Vjb25kLmVycm9yKTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlKGZpcnN0LmVycm9yKTsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBSZXN1bHQuZmxhdE1hcDIgPSBmbGF0TWFwMjsNCiAgICAgIC8qKiBKb2luIHR3byByZXN1bHRzIHdpdGggYSBiaS1mdW5jdGlvbiBhbmQgcmV0dXJuIGEgbmV3IHJlc3VsdC4gKi8NCiAgICAgIGZ1bmN0aW9uIG1hcDIoZmlyc3QsIHNlY29uZCwgZikgew0KICAgICAgICAgIHJldHVybiBmbGF0TWFwMihmaXJzdCwgc2Vjb25kLCAoYSwgYikgPT4gc3VjY2VzcyhmKGEsIGIpKSk7DQogICAgICB9DQogICAgICBSZXN1bHQubWFwMiA9IG1hcDI7DQogIH0pKFJlc3VsdCB8fCAoUmVzdWx0ID0ge30pKTsKCiAgdmFyIGNvbW1vbmpzR2xvYmFsID0gdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGhpcyA6IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDoge307CgogIHZhciBwYXJzaW1tb25fdW1kX21pbiA9IHtleHBvcnRzOiB7fX07CgogIChmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiAgIWZ1bmN0aW9uKG4sdCl7bW9kdWxlLmV4cG9ydHM9dCgpO30oInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6Y29tbW9uanNHbG9iYWwsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHQ9e307ZnVuY3Rpb24gcihlKXtpZih0W2VdKXJldHVybiB0W2VdLmV4cG9ydHM7dmFyIHU9dFtlXT17aTplLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIG5bZV0uY2FsbCh1LmV4cG9ydHMsdSx1LmV4cG9ydHMsciksdS5sPSEwLHUuZXhwb3J0c31yZXR1cm4gci5tPW4sci5jPXQsci5kPWZ1bmN0aW9uKG4sdCxlKXtyLm8obix0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sdCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0OmV9KTt9LHIucj1mdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7fSxyLm49ZnVuY3Rpb24obil7dmFyIHQ9biYmbi5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIG4uZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gbn07cmV0dXJuIHIuZCh0LCJhIix0KSx0fSxyLm89ZnVuY3Rpb24obix0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sdCl9LHIucD0iIixyKHIucz0wKX0oW2Z1bmN0aW9uKG4sdCxyKXtmdW5jdGlvbiBlKG4pe2lmKCEodGhpcyBpbnN0YW5jZW9mIGUpKXJldHVybiBuZXcgZShuKTt0aGlzLl89bjt9dmFyIHU9ZS5wcm90b3R5cGU7ZnVuY3Rpb24gbyhuLHQpe2Zvcih2YXIgcj0wO3I8bjtyKyspdChyKTt9ZnVuY3Rpb24gaShuLHQscil7cmV0dXJuIGZ1bmN0aW9uKG4sdCl7byh0Lmxlbmd0aCxmdW5jdGlvbihyKXtuKHRbcl0scix0KTt9KTt9KGZ1bmN0aW9uKHIsZSx1KXt0PW4odCxyLGUsdSk7fSxyKSx0fWZ1bmN0aW9uIGEobix0KXtyZXR1cm4gaShmdW5jdGlvbih0LHIsZSx1KXtyZXR1cm4gdC5jb25jYXQoW24ocixlLHUpXSl9LFtdLHQpfWZ1bmN0aW9uIGYobix0KXt2YXIgcj17djowLGJ1Zjp0fTtyZXR1cm4gbyhuLGZ1bmN0aW9uKCl7dmFyIG47cj17djpyLnY8PDF8KG49ci5idWYsblswXT4+NyksYnVmOmZ1bmN0aW9uKG4pe3ZhciB0PWkoZnVuY3Rpb24obix0LHIsZSl7cmV0dXJuIG4uY29uY2F0KHI9PT1lLmxlbmd0aC0xP0J1ZmZlci5mcm9tKFt0LDBdKS5yZWFkVUludDE2QkUoMCk6ZS5yZWFkVUludDE2QkUocikpfSxbXSxuKTtyZXR1cm4gQnVmZmVyLmZyb20oYShmdW5jdGlvbihuKXtyZXR1cm4gKG48PDEmNjU1MzUpPj44fSx0KSl9KHIuYnVmKX07fSkscn1mdW5jdGlvbiBjKCl7cmV0dXJuICJ1bmRlZmluZWQiIT10eXBlb2YgQnVmZmVyfWZ1bmN0aW9uIHMoKXtpZighYygpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyIGdsb2JhbCBkb2VzIG5vdCBleGlzdDsgcGxlYXNlIHVzZSB3ZWJwYWNrIGlmIHlvdSBuZWVkIHRvIHBhcnNlIEJ1ZmZlcnMgaW4gdGhlIGJyb3dzZXIuIil9ZnVuY3Rpb24gbChuKXtzKCk7dmFyIHQ9aShmdW5jdGlvbihuLHQpe3JldHVybiBuK3R9LDAsbik7aWYodCU4IT0wKXRocm93IG5ldyBFcnJvcigiVGhlIGJpdHMgWyIrbi5qb2luKCIsICIpKyJdIGFkZCB1cCB0byAiK3QrIiB3aGljaCBpcyBub3QgYW4gZXZlbiBudW1iZXIgb2YgYnl0ZXM7IHRoZSB0b3RhbCBzaG91bGQgYmUgZGl2aXNpYmxlIGJ5IDgiKTt2YXIgcix1PXQvOCxvPShyPWZ1bmN0aW9uKG4pe3JldHVybiBuPjQ4fSxpKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG58fChyKHQpP3Q6bil9LG51bGwsbikpO2lmKG8pdGhyb3cgbmV3IEVycm9yKG8rIiBiaXQgcmFuZ2UgcmVxdWVzdGVkIGV4Y2VlZHMgNDggYml0ICg2IGJ5dGUpIE51bWJlciBtYXguIik7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKHQscil7dmFyIGU9dStyO3JldHVybiBlPnQubGVuZ3RoP3gocix1LnRvU3RyaW5nKCkrIiBieXRlcyIpOmIoZSxpKGZ1bmN0aW9uKG4sdCl7dmFyIHI9Zih0LG4uYnVmKTtyZXR1cm4ge2NvbGw6bi5jb2xsLmNvbmNhdChyLnYpLGJ1ZjpyLmJ1Zn19LHtjb2xsOltdLGJ1Zjp0LnNsaWNlKHIsZSl9LG4pLmNvbGwpfSl9ZnVuY3Rpb24gaChuLHQpe3JldHVybiBuZXcgZShmdW5jdGlvbihyLGUpe3JldHVybiBzKCksZSt0PnIubGVuZ3RoP3goZSx0KyIgYnl0ZXMgZm9yICIrbik6YihlK3Qsci5zbGljZShlLGUrdCkpfSl9ZnVuY3Rpb24gcChuLHQpe2lmKCJudW1iZXIiIT10eXBlb2Yocj10KXx8TWF0aC5mbG9vcihyKSE9PXJ8fHQ8MHx8dD42KXRocm93IG5ldyBFcnJvcihuKyIgcmVxdWlyZXMgaW50ZWdlciBsZW5ndGggaW4gcmFuZ2UgWzAsIDZdLiIpO3ZhciByO31mdW5jdGlvbiBkKG4pe3JldHVybiBwKCJ1aW50QkUiLG4pLGgoInVpbnRCRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkVUludEJFKDAsbil9KX1mdW5jdGlvbiB2KG4pe3JldHVybiBwKCJ1aW50TEUiLG4pLGgoInVpbnRMRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkVUludExFKDAsbil9KX1mdW5jdGlvbiBnKG4pe3JldHVybiBwKCJpbnRCRSIsbiksaCgiaW50QkUoIituKyIpIixuKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhZEludEJFKDAsbil9KX1mdW5jdGlvbiBtKG4pe3JldHVybiBwKCJpbnRMRSIsbiksaCgiaW50TEUoIituKyIpIixuKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhZEludExFKDAsbil9KX1mdW5jdGlvbiB5KG4pe3JldHVybiBuIGluc3RhbmNlb2YgZX1mdW5jdGlvbiBFKG4pe3JldHVybiAiW29iamVjdCBBcnJheV0iPT09e30udG9TdHJpbmcuY2FsbChuKX1mdW5jdGlvbiB3KG4pe3JldHVybiBjKCkmJkJ1ZmZlci5pc0J1ZmZlcihuKX1mdW5jdGlvbiBiKG4sdCl7cmV0dXJuIHtzdGF0dXM6ITAsaW5kZXg6bix2YWx1ZTp0LGZ1cnRoZXN0Oi0xLGV4cGVjdGVkOltdfX1mdW5jdGlvbiB4KG4sdCl7cmV0dXJuIEUodCl8fCh0PVt0XSkse3N0YXR1czohMSxpbmRleDotMSx2YWx1ZTpudWxsLGZ1cnRoZXN0Om4sZXhwZWN0ZWQ6dH19ZnVuY3Rpb24gQihuLHQpe2lmKCF0KXJldHVybiBuO2lmKG4uZnVydGhlc3Q+dC5mdXJ0aGVzdClyZXR1cm4gbjt2YXIgcj1uLmZ1cnRoZXN0PT09dC5mdXJ0aGVzdD9mdW5jdGlvbihuLHQpe2lmKGZ1bmN0aW9uKCl7aWYodm9pZCAwIT09ZS5fc3VwcG9ydHNTZXQpcmV0dXJuIGUuX3N1cHBvcnRzU2V0O3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2YgU2V0O3JldHVybiBlLl9zdXBwb3J0c1NldD1uLG59KCkmJkFycmF5LmZyb20pe2Zvcih2YXIgcj1uZXcgU2V0KG4pLHU9MDt1PHQubGVuZ3RoO3UrKylyLmFkZCh0W3VdKTt2YXIgbz1BcnJheS5mcm9tKHIpO3JldHVybiBvLnNvcnQoKSxvfWZvcih2YXIgaT17fSxhPTA7YTxuLmxlbmd0aDthKyspaVtuW2FdXT0hMDtmb3IodmFyIGY9MDtmPHQubGVuZ3RoO2YrKylpW3RbZl1dPSEwO3ZhciBjPVtdO2Zvcih2YXIgcyBpbiBpKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChpLHMpJiZjLnB1c2gocyk7cmV0dXJuIGMuc29ydCgpLGN9KG4uZXhwZWN0ZWQsdC5leHBlY3RlZCk6dC5leHBlY3RlZDtyZXR1cm4ge3N0YXR1czpuLnN0YXR1cyxpbmRleDpuLmluZGV4LHZhbHVlOm4udmFsdWUsZnVydGhlc3Q6dC5mdXJ0aGVzdCxleHBlY3RlZDpyfX12YXIgaj17fTtmdW5jdGlvbiBTKG4sdCl7aWYodyhuKSlyZXR1cm4ge29mZnNldDp0LGxpbmU6LTEsY29sdW1uOi0xfTtuIGluIGp8fChqW25dPXt9KTtmb3IodmFyIHI9altuXSxlPTAsdT0wLG89MCxpPXQ7aT49MDspe2lmKGkgaW4gcil7ZT1yW2ldLmxpbmUsMD09PW8mJihvPXJbaV0ubGluZVN0YXJ0KTticmVha30oIlxuIj09PW4uY2hhckF0KGkpfHwiXHIiPT09bi5jaGFyQXQoaSkmJiJcbiIhPT1uLmNoYXJBdChpKzEpKSYmKHUrKywwPT09byYmKG89aSsxKSksaS0tO312YXIgYT1lK3UsZj10LW87cmV0dXJuIHJbdF09e2xpbmU6YSxsaW5lU3RhcnQ6b30se29mZnNldDp0LGxpbmU6YSsxLGNvbHVtbjpmKzF9fWZ1bmN0aW9uIF8obil7aWYoIXkobikpdGhyb3cgbmV3IEVycm9yKCJub3QgYSBwYXJzZXI6ICIrbil9ZnVuY3Rpb24gTChuLHQpe3JldHVybiAic3RyaW5nIj09dHlwZW9mIG4/bi5jaGFyQXQodCk6blt0XX1mdW5jdGlvbiBPKG4pe2lmKCJudW1iZXIiIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIG51bWJlcjogIituKX1mdW5jdGlvbiBrKG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigibm90IGEgZnVuY3Rpb246ICIrbil9ZnVuY3Rpb24gUChuKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJub3QgYSBzdHJpbmc6ICIrbil9dmFyIHE9MixBPTMsST04LEY9NSpJLE09NCpJLHo9IiAgIjtmdW5jdGlvbiBSKG4sdCl7cmV0dXJuIG5ldyBBcnJheSh0KzEpLmpvaW4obil9ZnVuY3Rpb24gVShuLHQscil7dmFyIGU9dC1uLmxlbmd0aDtyZXR1cm4gZTw9MD9uOlIocixlKStufWZ1bmN0aW9uIFcobix0LHIsZSl7cmV0dXJuIHtmcm9tOm4tdD4wP24tdDowLHRvOm4rcj5lP2U6bityfX1mdW5jdGlvbiBEKG4sdCl7dmFyIHIsZSx1LG8sZixjPXQuaW5kZXgscz1jLm9mZnNldCxsPTE7aWYocz09PW4ubGVuZ3RoKXJldHVybiAiR290IHRoZSBlbmQgb2YgdGhlIGlucHV0IjtpZih3KG4pKXt2YXIgaD1zLXMlSSxwPXMtaCxkPVcoaCxGLE0rSSxuLmxlbmd0aCksdj1hKGZ1bmN0aW9uKG4pe3JldHVybiBhKGZ1bmN0aW9uKG4pe3JldHVybiBVKG4udG9TdHJpbmcoMTYpLDIsIjAiKX0sbil9LGZ1bmN0aW9uKG4sdCl7dmFyIHI9bi5sZW5ndGgsZT1bXSx1PTA7aWYocjw9dClyZXR1cm4gW24uc2xpY2UoKV07Zm9yKHZhciBvPTA7bzxyO28rKyllW3VdfHxlLnB1c2goW10pLGVbdV0ucHVzaChuW29dKSwobysxKSV0PT0wJiZ1Kys7cmV0dXJuIGV9KG4uc2xpY2UoZC5mcm9tLGQudG8pLnRvSlNPTigpLmRhdGEsSSkpO289ZnVuY3Rpb24obil7cmV0dXJuIDA9PT1uLmZyb20mJjE9PT1uLnRvP3tmcm9tOm4uZnJvbSx0bzpuLnRvfTp7ZnJvbTpuLmZyb20vSSx0bzpNYXRoLmZsb29yKG4udG8vSSl9fShkKSxlPWgvSSxyPTMqcCxwPj00JiYocis9MSksbD0yLHU9YShmdW5jdGlvbihuKXtyZXR1cm4gbi5sZW5ndGg8PTQ/bi5qb2luKCIgIik6bi5zbGljZSgwLDQpLmpvaW4oIiAiKSsiICAiK24uc2xpY2UoNCkuam9pbigiICIpfSx2KSwoZj0oOCooby50bz4wP28udG8tMTpvLnRvKSkudG9TdHJpbmcoMTYpLmxlbmd0aCk8MiYmKGY9Mik7fWVsc2Uge3ZhciBnPW4uc3BsaXQoL1xyXG58W1xuXHJcdTIwMjhcdTIwMjldLyk7cj1jLmNvbHVtbi0xLGU9Yy5saW5lLTEsbz1XKGUscSxBLGcubGVuZ3RoKSx1PWcuc2xpY2Uoby5mcm9tLG8udG8pLGY9by50by50b1N0cmluZygpLmxlbmd0aDt9dmFyIG09ZS1vLmZyb207cmV0dXJuIHcobikmJihmPSg4KihvLnRvPjA/by50by0xOm8udG8pKS50b1N0cmluZygxNikubGVuZ3RoKTwyJiYoZj0yKSxpKGZ1bmN0aW9uKHQsZSx1KXt2YXIgaSxhPXU9PT1tLGM9YT8iPiAiOno7cmV0dXJuIGk9dyhuKT9VKCg4KihvLmZyb20rdSkpLnRvU3RyaW5nKDE2KSxmLCIwIik6VSgoby5mcm9tK3UrMSkudG9TdHJpbmcoKSxmLCIgIiksW10uY29uY2F0KHQsW2MraSsiIHwgIitlXSxhP1t6K1IoIiAiLGYpKyIgfCAiK1UoIiIsciwiICIpK1IoIl4iLGwpXTpbXSl9LFtdLHUpLmpvaW4oIlxuIil9ZnVuY3Rpb24gTihuLHQpe3JldHVybiBbIlxuIiwiLS0gUEFSU0lORyBGQUlMRUQgIitSKCItIiw1MCksIlxuXG4iLEQobix0KSwiXG5cbiIsKHI9dC5leHBlY3RlZCwxPT09ci5sZW5ndGg/IkV4cGVjdGVkOlxuXG4iK3JbMF06IkV4cGVjdGVkIG9uZSBvZiB0aGUgZm9sbG93aW5nOiBcblxuIityLmpvaW4oIiwgIikpLCJcbiJdLmpvaW4oIiIpO3ZhciByO31mdW5jdGlvbiBHKG4pe3JldHVybiB2b2lkIDAhPT1uLmZsYWdzP24uZmxhZ3M6W24uZ2xvYmFsPyJnIjoiIixuLmlnbm9yZUNhc2U/ImkiOiIiLG4ubXVsdGlsaW5lPyJtIjoiIixuLnVuaWNvZGU/InUiOiIiLG4uc3RpY2t5PyJ5IjoiIl0uam9pbigiIil9ZnVuY3Rpb24gQygpe2Zvcih2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdD1uLmxlbmd0aCxyPTA7cjx0O3IrPTEpXyhuW3JdKTtyZXR1cm4gZShmdW5jdGlvbihyLGUpe2Zvcih2YXIgdSxvPW5ldyBBcnJheSh0KSxpPTA7aTx0O2krPTEpe2lmKCEodT1CKG5baV0uXyhyLGUpLHUpKS5zdGF0dXMpcmV0dXJuIHU7b1tpXT11LnZhbHVlLGU9dS5pbmRleDt9cmV0dXJuIEIoYihlLG8pLHUpfSl9ZnVuY3Rpb24gSigpe3ZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZigwPT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJzZXFNYXAgbmVlZHMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7dmFyIHQ9bi5wb3AoKTtyZXR1cm4gayh0KSxDLmFwcGx5KG51bGwsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiB0LmFwcGx5KG51bGwsbil9KX1mdW5jdGlvbiBUKCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpLHQ9bi5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIFkoInplcm8gYWx0ZXJuYXRlcyIpO2Zvcih2YXIgcj0wO3I8dDtyKz0xKV8obltyXSk7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGUsdT0wO3U8bi5sZW5ndGg7dSs9MSlpZigoZT1CKG5bdV0uXyh0LHIpLGUpKS5zdGF0dXMpcmV0dXJuIGU7cmV0dXJuIGV9KX1mdW5jdGlvbiBWKG4sdCl7cmV0dXJuIEgobix0KS5vcihYKFtdKSl9ZnVuY3Rpb24gSChuLHQpe3JldHVybiBfKG4pLF8odCksSihuLHQudGhlbihuKS5tYW55KCksZnVuY3Rpb24obix0KXtyZXR1cm4gW25dLmNvbmNhdCh0KX0pfWZ1bmN0aW9uIEsobil7UChuKTt2YXIgdD0iJyIrbisiJyI7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT1lK24ubGVuZ3RoLG89ci5zbGljZShlLHUpO3JldHVybiBvPT09bj9iKHUsbyk6eChlLHQpfSl9ZnVuY3Rpb24gUShuLHQpeyFmdW5jdGlvbihuKXtpZighKG4gaW5zdGFuY2VvZiBSZWdFeHApKXRocm93IG5ldyBFcnJvcigibm90IGEgcmVnZXhwOiAiK24pO2Zvcih2YXIgdD1HKG4pLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGU9dC5jaGFyQXQocik7aWYoImkiIT09ZSYmIm0iIT09ZSYmInUiIT09ZSYmInMiIT09ZSl0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIHJlZ2V4cCBmbGFnICInK2UrJyI6ICcrbil9fShuKSxhcmd1bWVudHMubGVuZ3RoPj0yP08odCk6dD0wO3ZhciByPWZ1bmN0aW9uKG4pe3JldHVybiBSZWdFeHAoIl4oPzoiK24uc291cmNlKyIpIixHKG4pKX0obiksdT0iIituO3JldHVybiBlKGZ1bmN0aW9uKG4sZSl7dmFyIG89ci5leGVjKG4uc2xpY2UoZSkpO2lmKG8pe2lmKDA8PXQmJnQ8PW8ubGVuZ3RoKXt2YXIgaT1vWzBdLGE9b1t0XTtyZXR1cm4gYihlK2kubGVuZ3RoLGEpfXJldHVybiB4KGUsInZhbGlkIG1hdGNoIGdyb3VwICgwIHRvICIrby5sZW5ndGgrIikgaW4gIit1KX1yZXR1cm4geChlLHUpfSl9ZnVuY3Rpb24gWChuKXtyZXR1cm4gZShmdW5jdGlvbih0LHIpe3JldHVybiBiKHIsbil9KX1mdW5jdGlvbiBZKG4pe3JldHVybiBlKGZ1bmN0aW9uKHQscil7cmV0dXJuIHgocixuKX0pfWZ1bmN0aW9uIFoobil7aWYoeShuKSlyZXR1cm4gZShmdW5jdGlvbih0LHIpe3ZhciBlPW4uXyh0LHIpO3JldHVybiBlLmluZGV4PXIsZS52YWx1ZT0iIixlfSk7aWYoInN0cmluZyI9PXR5cGVvZiBuKXJldHVybiBaKEsobikpO2lmKG4gaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuIFooUShuKSk7dGhyb3cgbmV3IEVycm9yKCJub3QgYSBzdHJpbmcsIHJlZ2V4cCwgb3IgcGFyc2VyOiAiK24pfWZ1bmN0aW9uICQobil7cmV0dXJuIF8obiksZShmdW5jdGlvbih0LHIpe3ZhciBlPW4uXyh0LHIpLHU9dC5zbGljZShyLGUuaW5kZXgpO3JldHVybiBlLnN0YXR1cz94KHIsJ25vdCAiJyt1KyciJyk6YihyLG51bGwpfSl9ZnVuY3Rpb24gbm4obil7cmV0dXJuIGsobiksZShmdW5jdGlvbih0LHIpe3ZhciBlPUwodCxyKTtyZXR1cm4gcjx0Lmxlbmd0aCYmbihlKT9iKHIrMSxlKTp4KHIsImEgY2hhcmFjdGVyL2J5dGUgbWF0Y2hpbmcgIituKX0pfWZ1bmN0aW9uIHRuKG4sdCl7YXJndW1lbnRzLmxlbmd0aDwyJiYodD1uLG49dm9pZCAwKTt2YXIgcj1lKGZ1bmN0aW9uKG4sZSl7cmV0dXJuIHIuXz10KCkuXyxyLl8obixlKX0pO3JldHVybiBuP3IuZGVzYyhuKTpyfWZ1bmN0aW9uIHJuKCl7cmV0dXJuIFkoImZhbnRhc3ktbGFuZC9lbXB0eSIpfXUucGFyc2U9ZnVuY3Rpb24obil7aWYoInN0cmluZyIhPXR5cGVvZiBuJiYhdyhuKSl0aHJvdyBuZXcgRXJyb3IoIi5wYXJzZSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgc3RyaW5nIG9yIEJ1ZmZlciBhcyBpdHMgYXJndW1lbnQiKTt2YXIgdCxyPXRoaXMuc2tpcChhbikuXyhuLDApO3JldHVybiB0PXIuc3RhdHVzP3tzdGF0dXM6ITAsdmFsdWU6ci52YWx1ZX06e3N0YXR1czohMSxpbmRleDpTKG4sci5mdXJ0aGVzdCksZXhwZWN0ZWQ6ci5leHBlY3RlZH0sZGVsZXRlIGpbbl0sdH0sdS50cnlQYXJzZT1mdW5jdGlvbihuKXt2YXIgdD10aGlzLnBhcnNlKG4pO2lmKHQuc3RhdHVzKXJldHVybiB0LnZhbHVlO3ZhciByPU4obix0KSxlPW5ldyBFcnJvcihyKTt0aHJvdyBlLnR5cGU9IlBhcnNpbW1vbkVycm9yIixlLnJlc3VsdD10LGV9LHUuYXNzZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHRoaXMuY2hhaW4oZnVuY3Rpb24ocil7cmV0dXJuIG4ocik/WChyKTpZKHQpfSl9LHUub3I9ZnVuY3Rpb24obil7cmV0dXJuIFQodGhpcyxuKX0sdS50cmltPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLndyYXAobixuKX0sdS53cmFwPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIEoobix0aGlzLHQsZnVuY3Rpb24obix0KXtyZXR1cm4gdH0pfSx1LnRocnU9ZnVuY3Rpb24obil7cmV0dXJuIG4odGhpcyl9LHUudGhlbj1mdW5jdGlvbihuKXtyZXR1cm4gXyhuKSxDKHRoaXMsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuWzFdfSl9LHUubWFueT1mdW5jdGlvbigpe3ZhciBuPXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9W10sdT12b2lkIDA7Oyl7aWYoISh1PUIobi5fKHQsciksdSkpLnN0YXR1cylyZXR1cm4gQihiKHIsZSksdSk7aWYocj09PXUuaW5kZXgpdGhyb3cgbmV3IEVycm9yKCJpbmZpbml0ZSBsb29wIGRldGVjdGVkIGluIC5tYW55KCkgcGFyc2VyIC0tLSBjYWxsaW5nIC5tYW55KCkgb24gYSBwYXJzZXIgd2hpY2ggY2FuIGFjY2VwdCB6ZXJvIGNoYXJhY3RlcnMgaXMgdXN1YWxseSB0aGUgY2F1c2UiKTtyPXUuaW5kZXgsZS5wdXNoKHUudmFsdWUpO319KX0sdS50aWVXaXRoPWZ1bmN0aW9uKG4pe3JldHVybiBQKG4pLHRoaXMubWFwKGZ1bmN0aW9uKHQpe2lmKGZ1bmN0aW9uKG4pe2lmKCFFKG4pKXRocm93IG5ldyBFcnJvcigibm90IGFuIGFycmF5OiAiK24pfSh0KSx0Lmxlbmd0aCl7UCh0WzBdKTtmb3IodmFyIHI9dFswXSxlPTE7ZTx0Lmxlbmd0aDtlKyspUCh0W2VdKSxyKz1uK3RbZV07cmV0dXJuIHJ9cmV0dXJuICIifSl9LHUudGllPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGllV2l0aCgiIil9LHUudGltZXM9ZnVuY3Rpb24obix0KXt2YXIgcj10aGlzO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDImJih0PW4pLE8obiksTyh0KSxlKGZ1bmN0aW9uKGUsdSl7Zm9yKHZhciBvPVtdLGk9dm9pZCAwLGE9dm9pZCAwLGY9MDtmPG47Zis9MSl7aWYoYT1CKGk9ci5fKGUsdSksYSksIWkuc3RhdHVzKXJldHVybiBhO3U9aS5pbmRleCxvLnB1c2goaS52YWx1ZSk7fWZvcig7Zjx0JiYoYT1CKGk9ci5fKGUsdSksYSksaS5zdGF0dXMpO2YrPTEpdT1pLmluZGV4LG8ucHVzaChpLnZhbHVlKTtyZXR1cm4gQihiKHUsbyksYSl9KX0sdS5yZXN1bHQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIG59KX0sdS5hdE1vc3Q9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMudGltZXMoMCxuKX0sdS5hdExlYXN0PWZ1bmN0aW9uKG4pe3JldHVybiBKKHRoaXMudGltZXMobiksdGhpcy5tYW55KCksZnVuY3Rpb24obix0KXtyZXR1cm4gbi5jb25jYXQodCl9KX0sdS5tYXA9ZnVuY3Rpb24obil7ayhuKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzP0IoYih1LmluZGV4LG4odS52YWx1ZSkpLHUpOnV9KX0sdS5jb250cmFtYXA9ZnVuY3Rpb24obil7ayhuKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5wYXJzZShuKHIuc2xpY2UoZSkpKTtyZXR1cm4gdS5zdGF0dXM/YihlK3IubGVuZ3RoLHUudmFsdWUpOnV9KX0sdS5wcm9tYXA9ZnVuY3Rpb24obix0KXtyZXR1cm4gayhuKSxrKHQpLHRoaXMuY29udHJhbWFwKG4pLm1hcCh0KX0sdS5za2lwPWZ1bmN0aW9uKG4pe3JldHVybiBDKHRoaXMsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuWzBdfSl9LHUubWFyaz1mdW5jdGlvbigpe3JldHVybiBKKGVuLHRoaXMsZW4sZnVuY3Rpb24obix0LHIpe3JldHVybiB7c3RhcnQ6bix2YWx1ZTp0LGVuZDpyfX0pfSx1Lm5vZGU9ZnVuY3Rpb24obil7cmV0dXJuIEooZW4sdGhpcyxlbixmdW5jdGlvbih0LHIsZSl7cmV0dXJuIHtuYW1lOm4sdmFsdWU6cixzdGFydDp0LGVuZDplfX0pfSx1LnNlcEJ5PWZ1bmN0aW9uKG4pe3JldHVybiBWKHRoaXMsbil9LHUuc2VwQnkxPWZ1bmN0aW9uKG4pe3JldHVybiBIKHRoaXMsbil9LHUubG9va2FoZWFkPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNraXAoWihuKSl9LHUubm90Rm9sbG93ZWRCeT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5za2lwKCQobikpfSx1LmRlc2M9ZnVuY3Rpb24obil7RShuKXx8KG49W25dKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzfHwodS5leHBlY3RlZD1uKSx1fSl9LHUuZmFsbGJhY2s9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMub3IoWChuKSl9LHUuYXA9ZnVuY3Rpb24obil7cmV0dXJuIEoobix0aGlzLGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4odCl9KX0sdS5jaGFpbj1mdW5jdGlvbihuKXt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzP0Iobih1LnZhbHVlKS5fKHIsdS5pbmRleCksdSk6dX0pfSx1LmNvbmNhdD11Lm9yLHUuZW1wdHk9cm4sdS5vZj1YLHVbImZhbnRhc3ktbGFuZC9hcCJdPXUuYXAsdVsiZmFudGFzeS1sYW5kL2NoYWluIl09dS5jaGFpbix1WyJmYW50YXN5LWxhbmQvY29uY2F0Il09dS5jb25jYXQsdVsiZmFudGFzeS1sYW5kL2VtcHR5Il09dS5lbXB0eSx1WyJmYW50YXN5LWxhbmQvb2YiXT11Lm9mLHVbImZhbnRhc3ktbGFuZC9tYXAiXT11Lm1hcDt2YXIgZW49ZShmdW5jdGlvbihuLHQpe3JldHVybiBiKHQsUyhuLHQpKX0pLHVuPWUoZnVuY3Rpb24obix0KXtyZXR1cm4gdD49bi5sZW5ndGg/eCh0LCJhbnkgY2hhcmFjdGVyL2J5dGUiKTpiKHQrMSxMKG4sdCkpfSksb249ZShmdW5jdGlvbihuLHQpe3JldHVybiBiKG4ubGVuZ3RoLG4uc2xpY2UodCkpfSksYW49ZShmdW5jdGlvbihuLHQpe3JldHVybiB0PG4ubGVuZ3RoP3godCwiRU9GIik6Yih0LG51bGwpfSksZm49USgvWzAtOV0vKS5kZXNjKCJhIGRpZ2l0IiksY249USgvWzAtOV0qLykuZGVzYygib3B0aW9uYWwgZGlnaXRzIiksc249USgvW2Etel0vaSkuZGVzYygiYSBsZXR0ZXIiKSxsbj1RKC9bYS16XSovaSkuZGVzYygib3B0aW9uYWwgbGV0dGVycyIpLGhuPVEoL1xzKi8pLmRlc2MoIm9wdGlvbmFsIHdoaXRlc3BhY2UiKSxwbj1RKC9ccysvKS5kZXNjKCJ3aGl0ZXNwYWNlIiksZG49SygiXHIiKSx2bj1LKCJcbiIpLGduPUsoIlxyXG4iKSxtbj1UKGduLHZuLGRuKS5kZXNjKCJuZXdsaW5lIikseW49VChtbixhbik7ZS5hbGw9b24sZS5hbHQ9VCxlLmFueT11bixlLmNyPWRuLGUuY3JlYXRlTGFuZ3VhZ2U9ZnVuY3Rpb24obil7dmFyIHQ9e307Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJmZ1bmN0aW9uKHIpe3Rbcl09dG4oZnVuY3Rpb24oKXtyZXR1cm4gbltyXSh0KX0pO30ocik7cmV0dXJuIHR9LGUuY3JsZj1nbixlLmN1c3RvbT1mdW5jdGlvbihuKXtyZXR1cm4gZShuKGIseCkpfSxlLmRpZ2l0PWZuLGUuZGlnaXRzPWNuLGUuZW1wdHk9cm4sZS5lbmQ9eW4sZS5lb2Y9YW4sZS5mYWlsPVksZS5mb3JtYXRFcnJvcj1OLGUuaW5kZXg9ZW4sZS5pc1BhcnNlcj15LGUubGF6eT10bixlLmxldHRlcj1zbixlLmxldHRlcnM9bG4sZS5sZj12bixlLmxvb2thaGVhZD1aLGUubWFrZUZhaWx1cmU9eCxlLm1ha2VTdWNjZXNzPWIsZS5uZXdsaW5lPW1uLGUubm9uZU9mPWZ1bmN0aW9uKG4pe3JldHVybiBubihmdW5jdGlvbih0KXtyZXR1cm4gbi5pbmRleE9mKHQpPDB9KS5kZXNjKCJub25lIG9mICciK24rIiciKX0sZS5ub3RGb2xsb3dlZEJ5PSQsZS5vZj1YLGUub25lT2Y9ZnVuY3Rpb24obil7Zm9yKHZhciB0PW4uc3BsaXQoIiIpLHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdPSInIit0W3JdKyInIjtyZXR1cm4gbm4oZnVuY3Rpb24odCl7cmV0dXJuIG4uaW5kZXhPZih0KT49MH0pLmRlc2ModCl9LGUub3B0V2hpdGVzcGFjZT1obixlLlBhcnNlcj1lLGUucmFuZ2U9ZnVuY3Rpb24obix0KXtyZXR1cm4gbm4oZnVuY3Rpb24ocil7cmV0dXJuIG48PXImJnI8PXR9KS5kZXNjKG4rIi0iK3QpfSxlLnJlZ2V4PVEsZS5yZWdleHA9USxlLnNlcEJ5PVYsZS5zZXBCeTE9SCxlLnNlcT1DLGUuc2VxTWFwPUosZS5zZXFPYmo9ZnVuY3Rpb24oKXtmb3IodmFyIG4sdD17fSxyPTAsdT0obj1hcmd1bWVudHMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobikpLG89dS5sZW5ndGgsaT0wO2k8bztpKz0xKXt2YXIgYT11W2ldO2lmKCF5KGEpKXtpZihFKGEpJiYyPT09YS5sZW5ndGgmJiJzdHJpbmciPT10eXBlb2YgYVswXSYmeShhWzFdKSl7dmFyIGY9YVswXTtpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxmKSl0aHJvdyBuZXcgRXJyb3IoInNlcU9iajogZHVwbGljYXRlIGtleSAiK2YpO3RbZl09ITAscisrO2NvbnRpbnVlfXRocm93IG5ldyBFcnJvcigic2VxT2JqIGFyZ3VtZW50cyBtdXN0IGJlIHBhcnNlcnMgb3IgW3N0cmluZywgcGFyc2VyXSBhcnJheSBwYWlycy4iKX19aWYoMD09PXIpdGhyb3cgbmV3IEVycm9yKCJzZXFPYmogZXhwZWN0cyBhdCBsZWFzdCBvbmUgbmFtZWQgcGFyc2VyLCBmb3VuZCB6ZXJvIik7cmV0dXJuIGUoZnVuY3Rpb24obix0KXtmb3IodmFyIHIsZT17fSxpPTA7aTxvO2krPTEpe3ZhciBhLGY7aWYoRSh1W2ldKT8oYT11W2ldWzBdLGY9dVtpXVsxXSk6KGE9bnVsbCxmPXVbaV0pLCEocj1CKGYuXyhuLHQpLHIpKS5zdGF0dXMpcmV0dXJuIHI7YSYmKGVbYV09ci52YWx1ZSksdD1yLmluZGV4O31yZXR1cm4gQihiKHQsZSkscil9KX0sZS5zdHJpbmc9SyxlLnN1Y2NlZWQ9WCxlLnRha2VXaGlsZT1mdW5jdGlvbihuKXtyZXR1cm4gayhuKSxlKGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXI7ZTx0Lmxlbmd0aCYmbihMKHQsZSkpOyllKys7cmV0dXJuIGIoZSx0LnNsaWNlKHIsZSkpfSl9LGUudGVzdD1ubixlLndoaXRlc3BhY2U9cG4sZVsiZmFudGFzeS1sYW5kL2VtcHR5Il09cm4sZVsiZmFudGFzeS1sYW5kL29mIl09WCxlLkJpbmFyeT17Yml0U2VxOmwsYml0U2VxT2JqOmZ1bmN0aW9uKG4pe3MoKTt2YXIgdD17fSxyPTAsZT1hKGZ1bmN0aW9uKG4pe2lmKEUobikpe3ZhciBlPW47aWYoMiE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiWyIrZS5qb2luKCIsICIpKyJdIHNob3VsZCBiZSBsZW5ndGggMiwgZ290IGxlbmd0aCAiK2UubGVuZ3RoKTtpZihQKGVbMF0pLE8oZVsxXSksT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZVswXSkpdGhyb3cgbmV3IEVycm9yKCJkdXBsaWNhdGUga2V5IGluIGJpdFNlcU9iajogIitlWzBdKTtyZXR1cm4gdFtlWzBdXT0hMCxyKyssZX1yZXR1cm4gTyhuKSxbbnVsbCxuXX0sbik7aWYocjwxKXRocm93IG5ldyBFcnJvcigiYml0U2VxT2JqIGV4cGVjdHMgYXQgbGVhc3Qgb25lIG5hbWVkIHBhaXIsIGdvdCBbIituLmpvaW4oIiwgIikrIl0iKTt2YXIgdT1hKGZ1bmN0aW9uKG4pe3JldHVybiBuWzBdfSxlKTtyZXR1cm4gbChhKGZ1bmN0aW9uKG4pe3JldHVybiBuWzFdfSxlKSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBpKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG51bGwhPT10WzBdJiYoblt0WzBdXT10WzFdKSxufSx7fSxhKGZ1bmN0aW9uKHQscil7cmV0dXJuIFt0LG5bcl1dfSx1KSl9KX0sYnl0ZTpmdW5jdGlvbihuKXtpZihzKCksTyhuKSxuPjI1NSl0aHJvdyBuZXcgRXJyb3IoIlZhbHVlIHNwZWNpZmllZCB0byBieXRlIGNvbnN0cnVjdG9yICgiK24rIj0weCIrbi50b1N0cmluZygxNikrIikgaXMgbGFyZ2VyIGluIHZhbHVlIHRoYW4gYSBzaW5nbGUgYnl0ZS4iKTt2YXIgdD0obj4xNT8iMHgiOiIweDAiKStuLnRvU3RyaW5nKDE2KTtyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PUwocixlKTtyZXR1cm4gdT09PW4/YihlKzEsdSk6eChlLHQpfSl9LGJ1ZmZlcjpmdW5jdGlvbihuKXtyZXR1cm4gaCgiYnVmZmVyIixuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIEJ1ZmZlci5mcm9tKG4pfSl9LGVuY29kZWRTdHJpbmc6ZnVuY3Rpb24obix0KXtyZXR1cm4gaCgic3RyaW5nIix0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQudG9TdHJpbmcobil9KX0sdWludEJFOmQsdWludDhCRTpkKDEpLHVpbnQxNkJFOmQoMiksdWludDMyQkU6ZCg0KSx1aW50TEU6dix1aW50OExFOnYoMSksdWludDE2TEU6digyKSx1aW50MzJMRTp2KDQpLGludEJFOmcsaW50OEJFOmcoMSksaW50MTZCRTpnKDIpLGludDMyQkU6Zyg0KSxpbnRMRTptLGludDhMRTptKDEpLGludDE2TEU6bSgyKSxpbnQzMkxFOm0oNCksZmxvYXRCRTpoKCJmbG9hdEJFIiw0KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVhZEZsb2F0QkUoMCl9KSxmbG9hdExFOmgoImZsb2F0TEUiLDQpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRmxvYXRMRSgwKX0pLGRvdWJsZUJFOmgoImRvdWJsZUJFIiw4KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVhZERvdWJsZUJFKDApfSksZG91YmxlTEU6aCgiZG91YmxlTEUiLDgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRG91YmxlTEUoMCl9KX0sbi5leHBvcnRzPWU7fV0pfSk7CiAgfShwYXJzaW1tb25fdW1kX21pbikpOwoKICB2YXIgZW1vamlSZWdleCA9ICgpID0+IHsKICAJLy8gaHR0cHM6Ly9tdGhzLmJlL2Vtb2ppCiAgCXJldHVybiAvKD86WyMqMC05XVx1RkUwRj9cdTIwRTN8W1x4QTlceEFFXHUyMDNDXHUyMDQ5XHUyMTIyXHUyMTM5XHUyMTk0LVx1MjE5OVx1MjFBOVx1MjFBQVx1MjMxQVx1MjMxQlx1MjMyOFx1MjNDRlx1MjNFRC1cdTIzRUZcdTIzRjFcdTIzRjJcdTIzRjgtXHUyM0ZBXHUyNEMyXHUyNUFBXHUyNUFCXHUyNUI2XHUyNUMwXHUyNUZCXHUyNUZDXHUyNUZFXHUyNjAwLVx1MjYwNFx1MjYwRVx1MjYxMVx1MjYxNFx1MjYxNVx1MjYxOFx1MjYyMFx1MjYyMlx1MjYyM1x1MjYyNlx1MjYyQVx1MjYyRVx1MjYyRlx1MjYzOC1cdTI2M0FcdTI2NDBcdTI2NDJcdTI2NDgtXHUyNjUzXHUyNjVGXHUyNjYwXHUyNjYzXHUyNjY1XHUyNjY2XHUyNjY4XHUyNjdCXHUyNjdFXHUyNjdGXHUyNjkyXHUyNjk0LVx1MjY5N1x1MjY5OVx1MjY5Qlx1MjY5Q1x1MjZBMFx1MjZBN1x1MjZBQVx1MjZCMFx1MjZCMVx1MjZCRFx1MjZCRVx1MjZDNFx1MjZDOFx1MjZDRlx1MjZEMVx1MjZEM1x1MjZFOVx1MjZGMC1cdTI2RjVcdTI2RjdcdTI2RjhcdTI2RkFcdTI3MDJcdTI3MDhcdTI3MDlcdTI3MEZcdTI3MTJcdTI3MTRcdTI3MTZcdTI3MURcdTI3MjFcdTI3MzNcdTI3MzRcdTI3NDRcdTI3NDdcdTI3NTdcdTI3NjNcdTI3QTFcdTI5MzRcdTI5MzVcdTJCMDUtXHUyQjA3XHUyQjFCXHUyQjFDXHUyQjU1XHUzMDMwXHUzMDNEXHUzMjk3XHUzMjk5XVx1RkUwRj98W1x1MjYxRFx1MjcwQ1x1MjcwRF0oPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1MjcwQVx1MjcwQl0oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHUyM0U5LVx1MjNFQ1x1MjNGMFx1MjNGM1x1MjVGRFx1MjY5M1x1MjZBMVx1MjZBQlx1MjZDNVx1MjZDRVx1MjZENFx1MjZFQVx1MjZGRFx1MjcwNVx1MjcyOFx1Mjc0Q1x1Mjc0RVx1Mjc1My1cdTI3NTVcdTI3OTUtXHUyNzk3XHUyN0IwXHUyN0JGXHUyQjUwXXxcdTI2RjkoPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xcdTI3NjRcdUZFMEY/KD86XHUyMDBEKD86XHVEODNEXHVERDI1fFx1RDgzRVx1REU3OSkpP3xcdUQ4M0MoPzpbXHVEQzA0XHVERDcwXHVERDcxXHVERDdFXHVERDdGXHVERTAyXHVERTM3XHVERjIxXHVERjI0LVx1REYyQ1x1REYzNlx1REY3RFx1REY5Nlx1REY5N1x1REY5OS1cdURGOUJcdURGOUVcdURGOUZcdURGQ0RcdURGQ0VcdURGRDQtXHVERkRGXHVERkY1XHVERkY3XVx1RkUwRj98W1x1REY4NVx1REZDMlx1REZDN10oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVERkMzXHVERkM0XHVERkNBXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1REZDQlx1REZDQ10oPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVEQ0NGXHVERDhFXHVERDkxLVx1REQ5QVx1REUwMVx1REUxQVx1REUyRlx1REUzMi1cdURFMzZcdURFMzgtXHVERTNBXHVERTUwXHVERTUxXHVERjAwLVx1REYyMFx1REYyRC1cdURGMzVcdURGMzctXHVERjdDXHVERjdFLVx1REY4NFx1REY4Ni1cdURGOTNcdURGQTAtXHVERkMxXHVERkM1XHVERkM2XHVERkM4XHVERkM5XHVERkNGLVx1REZEM1x1REZFMC1cdURGRjBcdURGRjgtXHVERkZGXXxcdURERTZcdUQ4M0NbXHVEREU4LVx1RERFQ1x1RERFRVx1RERGMVx1RERGMlx1RERGNFx1RERGNi1cdURERkFcdURERkNcdURERkRcdURERkZdfFx1RERFN1x1RDgzQ1tcdURERTZcdURERTdcdURERTktXHVEREVGXHVEREYxLVx1RERGNFx1RERGNi1cdURERjlcdURERkJcdURERkNcdURERkVcdURERkZdfFx1RERFOFx1RDgzQ1tcdURERTZcdURERThcdURERTlcdURERUItXHVEREVFXHVEREYwLVx1RERGNVx1RERGN1x1RERGQS1cdURERkZdfFx1RERFOVx1RDgzQ1tcdURERUFcdURERUNcdURERUZcdURERjBcdURERjJcdURERjRcdURERkZdfFx1RERFQVx1RDgzQ1tcdURERTZcdURERThcdURERUFcdURERUNcdURERURcdURERjctXHVEREZBXXxcdURERUJcdUQ4M0NbXHVEREVFLVx1RERGMFx1RERGMlx1RERGNFx1RERGN118XHVEREVDXHVEODNDW1x1RERFNlx1RERFN1x1RERFOS1cdURERUVcdURERjEtXHVEREYzXHVEREY1LVx1RERGQVx1RERGQ1x1RERGRV18XHVEREVEXHVEODNDW1x1RERGMFx1RERGMlx1RERGM1x1RERGN1x1RERGOVx1RERGQV18XHVEREVFXHVEODNDW1x1RERFOC1cdURERUFcdURERjEtXHVEREY0XHVEREY2LVx1RERGOV18XHVEREVGXHVEODNDW1x1RERFQVx1RERGMlx1RERGNFx1RERGNV18XHVEREYwXHVEODNDW1x1RERFQVx1RERFQy1cdURERUVcdURERjJcdURERjNcdURERjVcdURERjdcdURERkNcdURERkVcdURERkZdfFx1RERGMVx1RDgzQ1tcdURERTYtXHVEREU4XHVEREVFXHVEREYwXHVEREY3LVx1RERGQlx1RERGRV18XHVEREYyXHVEODNDW1x1RERFNlx1RERFOC1cdURERURcdURERjAtXHVEREZGXXxcdURERjNcdUQ4M0NbXHVEREU2XHVEREU4XHVEREVBLVx1RERFQ1x1RERFRVx1RERGMVx1RERGNFx1RERGNVx1RERGN1x1RERGQVx1RERGRl18XHVEREY0XHVEODNDXHVEREYyfFx1RERGNVx1RDgzQ1tcdURERTZcdURERUEtXHVEREVEXHVEREYwLVx1RERGM1x1RERGNy1cdURERjlcdURERkNcdURERkVdfFx1RERGNlx1RDgzQ1x1RERFNnxcdURERjdcdUQ4M0NbXHVEREVBXHVEREY0XHVEREY4XHVEREZBXHVEREZDXXxcdURERjhcdUQ4M0NbXHVEREU2LVx1RERFQVx1RERFQy1cdURERjRcdURERjctXHVEREY5XHVEREZCXHVEREZELVx1RERGRl18XHVEREY5XHVEODNDW1x1RERFNlx1RERFOFx1RERFOVx1RERFQi1cdURERURcdURERUYtXHVEREY0XHVEREY3XHVEREY5XHVEREZCXHVEREZDXHVEREZGXXxcdURERkFcdUQ4M0NbXHVEREU2XHVEREVDXHVEREYyXHVEREYzXHVEREY4XHVEREZFXHVEREZGXXxcdURERkJcdUQ4M0NbXHVEREU2XHVEREU4XHVEREVBXHVEREVDXHVEREVFXHVEREYzXHVEREZBXXxcdURERkNcdUQ4M0NbXHVEREVCXHVEREY4XXxcdURERkRcdUQ4M0NcdURERjB8XHVEREZFXHVEODNDW1x1RERFQVx1RERGOV18XHVEREZGXHVEODNDW1x1RERFNlx1RERGMlx1RERGQ118XHVERkYzXHVGRTBGPyg/Olx1MjAwRCg/Olx1MjZBN1x1RkUwRj98XHVEODNDXHVERjA4KSk/fFx1REZGNCg/Olx1MjAwRFx1MjYyMFx1RkUwRj98XHVEQjQwXHVEQzY3XHVEQjQwXHVEQzYyXHVEQjQwKD86XHVEQzY1XHVEQjQwXHVEQzZFXHVEQjQwXHVEQzY3fFx1REM3M1x1REI0MFx1REM2M1x1REI0MFx1REM3NHxcdURDNzdcdURCNDBcdURDNkNcdURCNDBcdURDNzMpXHVEQjQwXHVEQzdGKT8pfFx1RDgzRCg/OltcdURDM0ZcdURDRkRcdURENDlcdURENEFcdURENkZcdURENzBcdURENzNcdURENzYtXHVERDc5XHVERDg3XHVERDhBLVx1REQ4RFx1RERBNVx1RERBOFx1RERCMVx1RERCMlx1RERCQ1x1RERDMi1cdUREQzRcdURERDEtXHVEREQzXHVERERDLVx1RERERVx1RERFMVx1RERFM1x1RERFOFx1RERFRlx1RERGM1x1RERGQVx1REVDQlx1REVDRC1cdURFQ0ZcdURFRTAtXHVERUU1XHVERUU5XHVERUYwXHVERUYzXVx1RkUwRj98W1x1REM0Mlx1REM0M1x1REM0Ni1cdURDNTBcdURDNjZcdURDNjdcdURDNkItXHVEQzZEXHVEQzcyXHVEQzc0LVx1REM3Nlx1REM3OFx1REM3Q1x1REM4M1x1REM4NVx1REM4Rlx1REM5MVx1RENBQVx1REQ3QVx1REQ5NVx1REQ5Nlx1REU0Q1x1REU0Rlx1REVDMFx1REVDQ10oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVEQzZFXHVEQzcwXHVEQzcxXHVEQzczXHVEQzc3XHVEQzgxXHVEQzgyXHVEQzg2XHVEQzg3XHVERTQ1LVx1REU0N1x1REU0Qlx1REU0RFx1REU0RVx1REVBM1x1REVCNC1cdURFQjZdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVERDc0XHVERDkwXSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVEQzAwLVx1REMwN1x1REMwOS1cdURDMTRcdURDMTYtXHVEQzNBXHVEQzNDLVx1REMzRVx1REM0MFx1REM0NFx1REM0NVx1REM1MS1cdURDNjVcdURDNkFcdURDNzktXHVEQzdCXHVEQzdELVx1REM4MFx1REM4NFx1REM4OC1cdURDOEVcdURDOTBcdURDOTItXHVEQ0E5XHVEQ0FCLVx1RENGQ1x1RENGRi1cdUREM0RcdURENEItXHVERDRFXHVERDUwLVx1REQ2N1x1RERBNFx1RERGQi1cdURFMkRcdURFMkYtXHVERTM0XHVERTM3LVx1REU0NFx1REU0OC1cdURFNEFcdURFODAtXHVERUEyXHVERUE0LVx1REVCM1x1REVCNy1cdURFQkZcdURFQzEtXHVERUM1XHVERUQwLVx1REVEMlx1REVENS1cdURFRDdcdURFREQtXHVERURGXHVERUVCXHVERUVDXHVERUY0LVx1REVGQ1x1REZFMC1cdURGRUJcdURGRjBdfFx1REMwOCg/Olx1MjAwRFx1MkIxQik/fFx1REMxNSg/Olx1MjAwRFx1RDgzRVx1RERCQSk/fFx1REMzQig/Olx1MjAwRFx1Mjc0NFx1RkUwRj8pP3xcdURDNDFcdUZFMEY/KD86XHUyMDBEXHVEODNEXHVEREU4XHVGRTBGPyk/fFx1REM2OCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjh8XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEKD86W1x1REM2OFx1REM2OV1cdTIwMERcdUQ4M0QoPzpcdURDNjYoPzpcdTIwMERcdUQ4M0RcdURDNjYpP3xcdURDNjcoPzpcdTIwMERcdUQ4M0RbXHVEQzY2XHVEQzY3XSk/KXxbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdURDNjYoPzpcdTIwMERcdUQ4M0RcdURDNjYpP3xcdURDNjcoPzpcdTIwMERcdUQ4M0RbXHVEQzY2XHVEQzY3XSk/KXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkMtXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OFx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEXHVEQzY4XHVEODNDW1x1REZGQlx1REZGRC1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCXHVERkZDXHVERkZFXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OFx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEXHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRV0pKSk/KSk/fFx1REM2OSg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9bXHVEQzY4XHVEQzY5XXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0QoPzpbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdURDNjYoPzpcdTIwMERcdUQ4M0RcdURDNjYpP3xcdURDNjcoPzpcdTIwMERcdUQ4M0RbXHVEQzY2XHVEQzY3XSk/fFx1REM2OVx1MjAwRFx1RDgzRCg/Olx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pKXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkMtXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XXxcdURDOEJcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldXHVEODNDW1x1REZGQlx1REZGRC1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCXHVERkZDXHVERkZFXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XXxcdURDOEJcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldXHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCLVx1REZGRV0pKSk/KSk/fFx1REM2Rig/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFx1REQ3NSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFx1REUyRSg/Olx1MjAwRFx1RDgzRFx1RENBOCk/fFx1REUzNSg/Olx1MjAwRFx1RDgzRFx1RENBQik/fFx1REUzNig/Olx1MjAwRFx1RDgzQ1x1REYyQlx1RkUwRj8pPyl8XHVEODNFKD86W1x1REQwQ1x1REQwRlx1REQxOC1cdUREMUZcdUREMzAtXHVERDM0XHVERDM2XHVERDc3XHVEREI1XHVEREI2XHVEREJCXHVEREQyXHVEREQzXHVEREQ1XHVERUMzLVx1REVDNVx1REVGMFx1REVGMi1cdURFRjZdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REQyNlx1REQzNVx1REQzNy1cdUREMzlcdUREM0RcdUREM0VcdUREQjhcdUREQjlcdUREQ0QtXHVERENGXHVEREQ0XHVEREQ2LVx1RERERF0oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFtcdUREREVcdUREREZdKD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1REQwRFx1REQwRVx1REQxMC1cdUREMTdcdUREMjAtXHVERDI1XHVERDI3LVx1REQyRlx1REQzQVx1REQzRi1cdURENDVcdURENDctXHVERDc2XHVERDc4LVx1RERCNFx1RERCN1x1RERCQVx1RERCQy1cdUREQ0NcdURERDBcdURERTAtXHVEREZGXHVERTcwLVx1REU3NFx1REU3OC1cdURFN0NcdURFODAtXHVERTg2XHVERTkwLVx1REVBQ1x1REVCMC1cdURFQkFcdURFQzAtXHVERUMyXHVERUQwLVx1REVEOVx1REVFMC1cdURFRTddfFx1REQzQyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGP3xcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xcdURERDEoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMSkpfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT9cdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZDLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQlx1REZGQ1x1REZGRVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZEXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkVdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZCLVx1REZGRl0pKSk/KSk/fFx1REVGMSg/Olx1RDgzQyg/Olx1REZGQig/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkMtXHVERkZGXSk/fFx1REZGQyg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXSk/fFx1REZGRCg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKT98XHVERkZFKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKT98XHVERkZGKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkVdKT8pKT8pKS9nOwogIH07CgogIC8qKiBOb3JtYWxpemUgYSBkdXJhdGlvbiB0byBhbGwgb2YgdGhlIHByb3BlciB1bml0cy4gKi8NCiAgZnVuY3Rpb24gbm9ybWFsaXplRHVyYXRpb24oZHVyKSB7DQogICAgICBpZiAoZHVyID09PSB1bmRlZmluZWQgfHwgZHVyID09PSBudWxsKQ0KICAgICAgICAgIHJldHVybiBkdXI7DQogICAgICByZXR1cm4gZHVyLnNoaWZ0VG9BbGwoKS5ub3JtYWxpemUoKTsNCiAgfQ0KICAvKiogU3RyaXAgdGhlIHRpbWUgY29tcG9uZW50cyBvZiBhIGRhdGUgdGltZSBvYmplY3QuICovDQogIGZ1bmN0aW9uIHN0cmlwVGltZShkdCkgew0KICAgICAgaWYgKGR0ID09PSBudWxsIHx8IGR0ID09PSB1bmRlZmluZWQpDQogICAgICAgICAgcmV0dXJuIGR0Ow0KICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3Qoew0KICAgICAgICAgIHllYXI6IGR0LnllYXIsDQogICAgICAgICAgbW9udGg6IGR0Lm1vbnRoLA0KICAgICAgICAgIGRheTogZHQuZGF5LA0KICAgICAgfSk7DQogIH0NCiAgLyoqIFRyeSB0byBleHRyYWN0IGEgWVlZWU1NREQgZGF0ZSBmcm9tIGEgc3RyaW5nLiAqLw0KICBmdW5jdGlvbiBleHRyYWN0RGF0ZShzdHIpIHsNCiAgICAgIGxldCBkYXRlTWF0Y2ggPSAvKFxkezR9KS0oXGR7Mn0pLShcZHsyfSkvLmV4ZWMoc3RyKTsNCiAgICAgIGlmICghZGF0ZU1hdGNoKQ0KICAgICAgICAgIGRhdGVNYXRjaCA9IC8oXGR7NH0pKFxkezJ9KShcZHsyfSkvLmV4ZWMoc3RyKTsNCiAgICAgIGlmIChkYXRlTWF0Y2gpIHsNCiAgICAgICAgICBsZXQgeWVhciA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbMV0pOw0KICAgICAgICAgIGxldCBtb250aCA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbMl0pOw0KICAgICAgICAgIGxldCBkYXkgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzNdKTsNCiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXIsIG1vbnRoLCBkYXkgfSk7DQogICAgICB9DQogICAgICByZXR1cm4gdW5kZWZpbmVkOw0KICB9DQogIC8qKiBHZXQgdGhlIGZvbGRlciBjb250YWluaW5nIHRoZSBnaXZlbiBwYXRoIChpLmUuLCBsaWtlIGNvbXB1dGluZyAncGF0aC8uLicpLiAqLw0KICBmdW5jdGlvbiBnZXRQYXJlbnRGb2xkZXIocGF0aCkgew0KICAgICAgcmV0dXJuIHBhdGguc3BsaXQoIi8iKS5zbGljZSgwLCAtMSkuam9pbigiLyIpOw0KICB9DQogIC8qKiBHZXQgdGhlICJ0aXRsZSIgZm9yIGEgZmlsZSwgYnkgc3RyaXBwaW5nIG90aGVyIHBhcnRzIG9mIHRoZSBwYXRoIGFzIHdlbGwgYXMgdGhlIGV4dGVuc2lvbi4gKi8NCiAgZnVuY3Rpb24gZ2V0RmlsZVRpdGxlKHBhdGgpIHsNCiAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCIvIikpDQogICAgICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKHBhdGgubGFzdEluZGV4T2YoIi8iKSArIDEpOw0KICAgICAgaWYgKHBhdGguZW5kc1dpdGgoIi5tZCIpKQ0KICAgICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIDMpOw0KICAgICAgcmV0dXJuIHBhdGg7DQogIH0NCiAgLyoqIEdldCB0aGUgZXh0ZW5zaW9uIG9mIGEgZmlsZSBmcm9tIHRoZSBmaWxlIHBhdGguICovDQogIGZ1bmN0aW9uIGdldEV4dGVuc2lvbihwYXRoKSB7DQogICAgICBpZiAoIXBhdGguaW5jbHVkZXMoIi4iKSkNCiAgICAgICAgICByZXR1cm4gIiI7DQogICAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZigiLiIpICsgMSk7DQogIH0NCiAgLyoqIFBhcnNlIGFsbCBzdWJ0YWdzIG91dCBvZiB0aGUgZ2l2ZW4gdGFnLiBJLmUuLCAjaGVsbG8vaS9hbSB3b3VsZCB5aWVsZCBbI2hlbGxvL2kvYW0sICNoZWxsby9pLCAjaGVsbG9dLiAqLw0KICBmdW5jdGlvbiBleHRyYWN0U3VidGFncyh0YWcpIHsNCiAgICAgIGxldCByZXN1bHQgPSBbdGFnXTsNCiAgICAgIHdoaWxlICh0YWcuaW5jbHVkZXMoIi8iKSkgew0KICAgICAgICAgIHRhZyA9IHRhZy5zdWJzdHJpbmcoMCwgdGFnLmxhc3RJbmRleE9mKCIvIikpOw0KICAgICAgICAgIHJlc3VsdC5wdXNoKHRhZyk7DQogICAgICB9DQogICAgICByZXR1cm4gcmVzdWx0Ow0KICB9DQogIC8qKiBBIHBhcnNpbW1vbiBwYXJzZXIgd2hpY2ggY2Fub25pY2FsaXplcyB2YXJpYWJsZSBuYW1lcyB3aGlsZSBwcm9wZXJseSByZXNwZWN0aW5nIGVtb2ppLiAqLw0KICBjb25zdCBWQVJfTkFNRV9DQU5PTklDQUxJWkVSID0gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgIiIpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleCgvWzAtOVxwe0xldHRlcn1fLV0rL3UpLm1hcChzdHIgPT4gc3RyLnRvTG9jYWxlTG93ZXJDYXNlKCkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLndoaXRlc3BhY2UubWFwKF8gPT4gIi0iKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbnkubWFwKF8gPT4gIiIpKQ0KICAgICAgLm1hbnkoKQ0KICAgICAgLm1hcChyZXN1bHQgPT4gcmVzdWx0LmpvaW4oIiIpKTsNCiAgLyoqIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhcmlhYmxlIG5hbWUgaW50byBzb21ldGhpbmcgSlMvcXVlcnkgZnJpZW5kbHkuICovDQogIGZ1bmN0aW9uIGNhbm9uaWNhbGl6ZVZhck5hbWUobmFtZSkgew0KICAgICAgcmV0dXJuIFZBUl9OQU1FX0NBTk9OSUNBTElaRVIudHJ5UGFyc2UobmFtZSk7DQogIH0NCiAgY29uc3QgSEVBREVSX0NBTk9OSUNBTElaRVIgPSBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4KG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIikpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4KC9bMC05XHB7TGV0dGVyfV8tXSsvdSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMud2hpdGVzcGFjZS5tYXAoXyA9PiAiICIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFueS5tYXAoXyA9PiAiICIpKQ0KICAgICAgLm1hbnkoKQ0KICAgICAgLm1hcChyZXN1bHQgPT4gew0KICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCIiKS5zcGxpdCgvXHMrLykuam9pbigiICIpLnRyaW0oKTsNCiAgfSk7DQogIC8qKg0KICAgKiBOb3JtYWxpemVzIHRoZSB0ZXh0IGluIGEgaGVhZGVyIHRvIGJlIHNvbWV0aGluZyB0aGF0IGlzIGFjdHVhbGx5IGxpbmthYmxlIHRvLiBUaGlzIG1pbWljcw0KICAgKiBob3cgT2JzaWRpYW4gZG9lcyBpdCdzIG5vcm1hbGl6YXRpb24sIGNvbGxhcHNpbmcgcmVwZWF0ZWQgc3BhY2VzIGFuZCBzdHJpcHBpbmcgb3V0IGNvbnRyb2wgY2hhcmFjdGVycy4NCiAgICovDQogIGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlckZvckxpbmsoaGVhZGVyKSB7DQogICAgICByZXR1cm4gSEVBREVSX0NBTk9OSUNBTElaRVIudHJ5UGFyc2UoaGVhZGVyKTsNCiAgfQ0KICAvKiogUmVuZGVyIGEgZHVyYXRpb24gaW4gYSBtaW5pbWFsIGZvcm1hdCB0byBzYXZlIHNwYWNlLiAqLw0KICBmdW5jdGlvbiByZW5kZXJNaW5pbWFsRHVyYXRpb24oZHVyKSB7DQogICAgICBkdXIgPSBub3JtYWxpemVEdXJhdGlvbihkdXIpOw0KICAgICAgLy8gdG9IdW1hbiBvdXRwdXRzIHplcm8gcXVhbnRpdGllcyBlLmcuICIwIHNlY29uZHMiDQogICAgICBkdXIgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhkdXIudG9PYmplY3QoKSkuZmlsdGVyKChbLCBxdWFudGl0eV0pID0+IHF1YW50aXR5ID4gMCkpKTsNCiAgICAgIHJldHVybiBkdXIudG9IdW1hbigpOw0KICB9CgogIHZhciBWYWx1ZXM7DQogIChmdW5jdGlvbiAoVmFsdWVzKSB7DQogICAgICAvKiogQ29udmVydCBhbiBhcmJpdHJhcnkgdmFsdWUgaW50byBhIHJlYXNvbmFibGUsIE1hcmtkb3duLWZyaWVuZGx5IHN0cmluZyBpZiBwb3NzaWJsZS4gKi8NCiAgICAgIGZ1bmN0aW9uIHRvU3RyaW5nKGZpZWxkLCBzZXR0aW5nID0gREVGQVVMVF9RVUVSWV9TRVRUSU5HUywgcmVjdXJzaXZlID0gZmFsc2UpIHsNCiAgICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBWYWx1ZShmaWVsZCk7DQogICAgICAgICAgaWYgKCF3cmFwcGVkKQ0KICAgICAgICAgICAgICByZXR1cm4gc2V0dGluZy5yZW5kZXJOdWxsQXM7DQogICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsNCiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gc2V0dGluZy5yZW5kZXJOdWxsQXM7DQogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsNCiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoNCiAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gIiIgKyB3cmFwcGVkLnZhbHVlOw0KICAgICAgICAgICAgICBjYXNlICJodG1sIjoNCiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm91dGVySFRNTDsNCiAgICAgICAgICAgICAgY2FzZSAid2lkZ2V0IjoNCiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm1hcmtkb3duKCk7DQogICAgICAgICAgICAgIGNhc2UgImxpbmsiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFya2Rvd24oKTsNCiAgICAgICAgICAgICAgY2FzZSAiZnVuY3Rpb24iOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuICI8ZnVuY3Rpb24+IjsNCiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOg0KICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9ICIiOw0KICAgICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkNCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIlsiOw0KICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdyYXBwZWQudmFsdWUubWFwKGYgPT4gdG9TdHJpbmcoZiwgc2V0dGluZywgdHJ1ZSkpLmpvaW4oIiwgIik7DQogICAgICAgICAgICAgICAgICBpZiAocmVjdXJzaXZlKQ0KICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiXSI7DQogICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuICgieyAiICsNCiAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyh3cmFwcGVkLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGUgPT4gZVswXSArICI6ICIgKyB0b1N0cmluZyhlWzFdLCBzZXR0aW5nLCB0cnVlKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oIiwgIikgKw0KICAgICAgICAgICAgICAgICAgICAgICIgfSIpOw0KICAgICAgICAgICAgICBjYXNlICJkYXRlIjoNCiAgICAgICAgICAgICAgICAgIGlmICh3cmFwcGVkLnZhbHVlLnNlY29uZCA9PSAwICYmIHdyYXBwZWQudmFsdWUuaG91ciA9PSAwICYmIHdyYXBwZWQudmFsdWUubWludXRlID09IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS50b0Zvcm1hdChzZXR0aW5nLmRlZmF1bHREYXRlRm9ybWF0KTsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLnRvRm9ybWF0KHNldHRpbmcuZGVmYXVsdERhdGVUaW1lRm9ybWF0KTsNCiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlck1pbmltYWxEdXJhdGlvbih3cmFwcGVkLnZhbHVlKTsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBWYWx1ZXMudG9TdHJpbmcgPSB0b1N0cmluZzsNCiAgICAgIC8qKiBXcmFwIGEgbGl0ZXJhbCB2YWx1ZSBzbyB5b3UgY2FuIHN3aXRjaCBvbiBpdCBlYXNpbHkuICovDQogICAgICBmdW5jdGlvbiB3cmFwVmFsdWUodmFsKSB7DQogICAgICAgICAgaWYgKGlzTnVsbCh2YWwpKQ0KICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibnVsbCIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICBlbHNlIGlmIChpc051bWJlcih2YWwpKQ0KICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibnVtYmVyIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKHZhbCkpDQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJzdHJpbmciLCB2YWx1ZTogdmFsIH07DQogICAgICAgICAgZWxzZSBpZiAoaXNCb29sZWFuKHZhbCkpDQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJib29sZWFuIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgIGVsc2UgaWYgKGlzRHVyYXRpb24odmFsKSkNCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImR1cmF0aW9uIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgIGVsc2UgaWYgKGlzRGF0ZSh2YWwpKQ0KICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZGF0ZSIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICBlbHNlIGlmIChpc1dpZGdldCh2YWwpKQ0KICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAid2lkZ2V0IiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsKSkNCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImFycmF5IiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgIGVsc2UgaWYgKGlzTGluayh2YWwpKQ0KICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibGluayIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbCkpDQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJmdW5jdGlvbiIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICBlbHNlIGlmIChpc0h0bWwodmFsKSkNCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImh0bWwiLCB2YWx1ZTogdmFsIH07DQogICAgICAgICAgZWxzZSBpZiAoaXNPYmplY3QodmFsKSkNCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm9iamVjdCIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICB9DQogICAgICBWYWx1ZXMud3JhcFZhbHVlID0gd3JhcFZhbHVlOw0KICAgICAgLyoqIFJlY3Vyc2l2ZWx5IG1hcCBjb21wbGV4IG9iamVjdHMgYXQgdGhlIGxlYXZlcy4gKi8NCiAgICAgIGZ1bmN0aW9uIG1hcExlYXZlcyh2YWwsIGZ1bmMpIHsNCiAgICAgICAgICBpZiAoaXNPYmplY3QodmFsKSkgew0KICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YWwpKQ0KICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYXBMZWF2ZXModmFsdWUsIGZ1bmMpOw0KICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHsNCiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdOw0KICAgICAgICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWwpDQogICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChtYXBMZWF2ZXModmFsdWUsIGZ1bmMpKTsNCiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIHJldHVybiBmdW5jKHZhbCk7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgVmFsdWVzLm1hcExlYXZlcyA9IG1hcExlYXZlczsNCiAgICAgIC8qKiBDb21wYXJlIHR3byBhcmJpdHJhcnkgSmF2YVNjcmlwdCB2YWx1ZXMuIFByb2R1Y2VzIGEgdG90YWwgb3JkZXJpbmcgb3ZlciBBTlkgcG9zc2libGUgZGF0YXZpZXcgdmFsdWUuICovDQogICAgICBmdW5jdGlvbiBjb21wYXJlVmFsdWUodmFsMSwgdmFsMiwgbGlua05vcm1hbGl6ZXIpIHsNCiAgICAgICAgICB2YXIgX2EsIF9iOw0KICAgICAgICAgIC8vIEhhbmRsZSB1bmRlZmluZWQvbnVsbHMgZmlyc3QuDQogICAgICAgICAgaWYgKHZhbDEgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgdmFsMSA9IG51bGw7DQogICAgICAgICAgaWYgKHZhbDIgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgdmFsMiA9IG51bGw7DQogICAgICAgICAgaWYgKHZhbDEgPT09IG51bGwgJiYgdmFsMiA9PT0gbnVsbCkNCiAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgZWxzZSBpZiAodmFsMSA9PT0gbnVsbCkNCiAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KICAgICAgICAgIGVsc2UgaWYgKHZhbDIgPT09IG51bGwpDQogICAgICAgICAgICAgIHJldHVybiAxOw0KICAgICAgICAgIC8vIEEgbm9uLW51bGwgdmFsdWUgbm93IHdoaWNoIHdlIGNhbiB3cmFwICYgY29tcGFyZSBvbi4NCiAgICAgICAgICBsZXQgd3JhcDEgPSB3cmFwVmFsdWUodmFsMSk7DQogICAgICAgICAgbGV0IHdyYXAyID0gd3JhcFZhbHVlKHZhbDIpOw0KICAgICAgICAgIGlmICh3cmFwMSA9PT0gdW5kZWZpbmVkICYmIHdyYXAyID09PSB1bmRlZmluZWQpDQogICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgIGVsc2UgaWYgKHdyYXAxID09PSB1bmRlZmluZWQpDQogICAgICAgICAgICAgIHJldHVybiAtMTsNCiAgICAgICAgICBlbHNlIGlmICh3cmFwMiA9PT0gdW5kZWZpbmVkKQ0KICAgICAgICAgICAgICByZXR1cm4gMTsNCiAgICAgICAgICAvLyBTaG9ydC1jaXJjdWl0IG9uIGRpZmZlcmVudCB0eXBlcyBvciBvbiByZWZlcmVuY2UgZXF1YWxpdHkuDQogICAgICAgICAgaWYgKHdyYXAxLnR5cGUgIT0gd3JhcDIudHlwZSkNCiAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnR5cGUubG9jYWxlQ29tcGFyZSh3cmFwMi50eXBlKTsNCiAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPT09IHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICBzd2l0Y2ggKHdyYXAxLnR5cGUpIHsNCiAgICAgICAgICAgICAgY2FzZSAic3RyaW5nIjoNCiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZS5sb2NhbGVDb21wYXJlKHdyYXAyLnZhbHVlKTsNCiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoNCiAgICAgICAgICAgICAgICAgIGlmICh3cmFwMS52YWx1ZSA8IHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdyYXAxLnZhbHVlID09IHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7DQogICAgICAgICAgICAgIGNhc2UgIm51bGwiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOg0KICAgICAgICAgICAgICAgICAgaWYgKHdyYXAxLnZhbHVlID09IHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA/IDEgOiAtMTsNCiAgICAgICAgICAgICAgY2FzZSAibGluayI6DQogICAgICAgICAgICAgICAgICBsZXQgbGluazEgPSB3cmFwMS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgIGxldCBsaW5rMiA9IHdyYXAyLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZSA9IGxpbmtOb3JtYWxpemVyICE9PSBudWxsICYmIGxpbmtOb3JtYWxpemVyICE9PSB2b2lkIDAgPyBsaW5rTm9ybWFsaXplciA6ICgoeCkgPT4geCk7DQogICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBjb21wYXJlIGJ5IGZpbGUgbmFtZSBvciBkaXNwbGF5LCBzaW5jZSB0aGF0IHdvdWxkIGJyZWFrIGxpbmsgZXF1YWxpdHkuIENvbXBhcmUgYnkgcGF0aC4NCiAgICAgICAgICAgICAgICAgIGxldCBwYXRoQ29tcGFyZSA9IG5vcm1hbGl6ZShsaW5rMS5wYXRoKS5sb2NhbGVDb21wYXJlKG5vcm1hbGl6ZShsaW5rMi5wYXRoKSk7DQogICAgICAgICAgICAgICAgICBpZiAocGF0aENvbXBhcmUgIT0gMCkNCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aENvbXBhcmU7DQogICAgICAgICAgICAgICAgICAvLyBUaGVuIGNvbXBhcmUgYnkgdHlwZS4NCiAgICAgICAgICAgICAgICAgIGxldCB0eXBlQ29tcGFyZSA9IGxpbmsxLnR5cGUubG9jYWxlQ29tcGFyZShsaW5rMi50eXBlKTsNCiAgICAgICAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZSAhPSAwKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlQ29tcGFyZTsNCiAgICAgICAgICAgICAgICAgIC8vIFRoZW4gY29tcGFyZSBieSBzdWJwYXRoIGV4aXN0ZW5jZS4NCiAgICAgICAgICAgICAgICAgIGlmIChsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOw0KICAgICAgICAgICAgICAgICAgaWYgKCFsaW5rMS5zdWJwYXRoICYmIGxpbmsyLnN1YnBhdGgpDQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KICAgICAgICAgICAgICAgICAgaWYgKCFsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgICAgLy8gU2luY2UgYm90aCBoYXZlIGEgc3VicGF0aCwgY29tcGFyZSBieSBzdWJwYXRoLg0KICAgICAgICAgICAgICAgICAgcmV0dXJuICgoX2EgPSBsaW5rMS5zdWJwYXRoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAiIikubG9jYWxlQ29tcGFyZSgoX2IgPSBsaW5rMi5zdWJwYXRoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAiIik7DQogICAgICAgICAgICAgIGNhc2UgImRhdGUiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlIDwgd3JhcDIudmFsdWUNCiAgICAgICAgICAgICAgICAgICAgICA/IC0xDQogICAgICAgICAgICAgICAgICAgICAgOiB3cmFwMS52YWx1ZS5lcXVhbHMod3JhcDIudmFsdWUpDQogICAgICAgICAgICAgICAgICAgICAgICAgID8gMA0KICAgICAgICAgICAgICAgICAgICAgICAgICA6IDE7DQogICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoNCiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA8IHdyYXAyLnZhbHVlDQogICAgICAgICAgICAgICAgICAgICAgPyAtMQ0KICAgICAgICAgICAgICAgICAgICAgIDogd3JhcDEudmFsdWUuZXF1YWxzKHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICA/IDANCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxOw0KICAgICAgICAgICAgICBjYXNlICJhcnJheSI6DQogICAgICAgICAgICAgICAgICBsZXQgZjEgPSB3cmFwMS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgIGxldCBmMiA9IHdyYXAyLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IE1hdGgubWluKGYxLmxlbmd0aCwgZjIubGVuZ3RoKTsgaW5kZXgrKykgew0KICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21wID0gY29tcGFyZVZhbHVlKGYxW2luZGV4XSwgZjJbaW5kZXhdKTsNCiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcDsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIHJldHVybiBmMS5sZW5ndGggLSBmMi5sZW5ndGg7DQogICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6DQogICAgICAgICAgICAgICAgICBsZXQgbzEgPSB3cmFwMS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgIGxldCBvMiA9IHdyYXAyLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgbGV0IGsxID0gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvMSkpOw0KICAgICAgICAgICAgICAgICAgbGV0IGsyID0gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvMikpOw0KICAgICAgICAgICAgICAgICAgazEuc29ydCgpOw0KICAgICAgICAgICAgICAgICAgazIuc29ydCgpOw0KICAgICAgICAgICAgICAgICAgbGV0IGtleUNvbXBhcmUgPSBjb21wYXJlVmFsdWUoazEsIGsyKTsNCiAgICAgICAgICAgICAgICAgIGlmIChrZXlDb21wYXJlICE9IDApDQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleUNvbXBhcmU7DQogICAgICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgb2YgazEpIHsNCiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShvMVtrZXldLCBvMltrZXldKTsNCiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcDsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICBjYXNlICJ3aWRnZXQiOg0KICAgICAgICAgICAgICBjYXNlICJodG1sIjoNCiAgICAgICAgICAgICAgY2FzZSAiZnVuY3Rpb24iOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgVmFsdWVzLmNvbXBhcmVWYWx1ZSA9IGNvbXBhcmVWYWx1ZTsNCiAgICAgIC8qKiBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIERhdGF2ZWl3IHR5cGUgZm9yIGFuIGFyYml0cmFyeSB2YWx1ZS4gKi8NCiAgICAgIGZ1bmN0aW9uIHR5cGVPZih2YWwpIHsNCiAgICAgICAgICB2YXIgX2E7DQogICAgICAgICAgcmV0dXJuIChfYSA9IHdyYXBWYWx1ZSh2YWwpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudHlwZTsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy50eXBlT2YgPSB0eXBlT2Y7DQogICAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyAidHJ1dGh5IiAoaS5lLiwgaXMgbm9uLW51bGwgYW5kIGhhcyBkYXRhIGluIGl0KS4gKi8NCiAgICAgIGZ1bmN0aW9uIGlzVHJ1dGh5KGZpZWxkKSB7DQogICAgICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwVmFsdWUoZmllbGQpOw0KICAgICAgICAgIGlmICghd3JhcHBlZCkNCiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7DQogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZSAhPSAwOw0KICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubGVuZ3RoID4gMDsNCiAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsNCiAgICAgICAgICAgICAgY2FzZSAibGluayI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gISF3cmFwcGVkLnZhbHVlLnBhdGg7DQogICAgICAgICAgICAgIGNhc2UgImRhdGUiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9NaWxsaXMoKSAhPSAwOw0KICAgICAgICAgICAgICBjYXNlICJkdXJhdGlvbiI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5hcygic2Vjb25kcyIpICE9IDA7DQogICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMod3JhcHBlZC52YWx1ZSkubGVuZ3RoID4gMDsNCiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubGVuZ3RoID4gMDsNCiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgIGNhc2UgImh0bWwiOg0KICAgICAgICAgICAgICBjYXNlICJ3aWRnZXQiOg0KICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBWYWx1ZXMuaXNUcnV0aHkgPSBpc1RydXRoeTsNCiAgICAgIC8qKiBEZWVwIGNvcHkgYSBmaWVsZC4gKi8NCiAgICAgIGZ1bmN0aW9uIGRlZXBDb3B5KGZpZWxkKSB7DQogICAgICAgICAgaWYgKGZpZWxkID09PSBudWxsIHx8IGZpZWxkID09PSB1bmRlZmluZWQpDQogICAgICAgICAgICAgIHJldHVybiBmaWVsZDsNCiAgICAgICAgICBpZiAoVmFsdWVzLmlzQXJyYXkoZmllbGQpKSB7DQogICAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQoZmllbGQubWFwKHYgPT4gZGVlcENvcHkodikpKTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAoVmFsdWVzLmlzT2JqZWN0KGZpZWxkKSkgew0KICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmaWVsZCkpDQogICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IGRlZXBDb3B5KHZhbHVlKTsNCiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIHJldHVybiBmaWVsZDsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBWYWx1ZXMuZGVlcENvcHkgPSBkZWVwQ29weTsNCiAgICAgIGZ1bmN0aW9uIGlzU3RyaW5nKHZhbCkgew0KICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJzdHJpbmciOw0KICAgICAgfQ0KICAgICAgVmFsdWVzLmlzU3RyaW5nID0gaXNTdHJpbmc7DQogICAgICBmdW5jdGlvbiBpc051bWJlcih2YWwpIHsNCiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSAibnVtYmVyIjsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc051bWJlciA9IGlzTnVtYmVyOw0KICAgICAgZnVuY3Rpb24gaXNEYXRlKHZhbCkgew0KICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEYXRlVGltZTsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0RhdGUgPSBpc0RhdGU7DQogICAgICBmdW5jdGlvbiBpc0R1cmF0aW9uKHZhbCkgew0KICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEdXJhdGlvbjsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0R1cmF0aW9uID0gaXNEdXJhdGlvbjsNCiAgICAgIGZ1bmN0aW9uIGlzTnVsbCh2YWwpIHsNCiAgICAgICAgICByZXR1cm4gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkOw0KICAgICAgfQ0KICAgICAgVmFsdWVzLmlzTnVsbCA9IGlzTnVsbDsNCiAgICAgIGZ1bmN0aW9uIGlzQXJyYXkodmFsKSB7DQogICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsKTsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0FycmF5ID0gaXNBcnJheTsNCiAgICAgIGZ1bmN0aW9uIGlzQm9vbGVhbih2YWwpIHsNCiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gImJvb2xlYW4iOw0KICAgICAgfQ0KICAgICAgVmFsdWVzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjsNCiAgICAgIGZ1bmN0aW9uIGlzTGluayh2YWwpIHsNCiAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgTGluazsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0xpbmsgPSBpc0xpbms7DQogICAgICBmdW5jdGlvbiBpc1dpZGdldCh2YWwpIHsNCiAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgV2lkZ2V0Ow0KICAgICAgfQ0KICAgICAgVmFsdWVzLmlzV2lkZ2V0ID0gaXNXaWRnZXQ7DQogICAgICBmdW5jdGlvbiBpc0h0bWwodmFsKSB7DQogICAgICAgICAgaWYgKHR5cGVvZiBIVE1MRWxlbWVudCAhPT0gInVuZGVmaW5lZCIpIHsNCiAgICAgICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50Ow0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0h0bWwgPSBpc0h0bWw7DQogICAgICAvKiogQ2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBvYmplY3QgKGFuZCBub3QgYW55IG90aGVyIGRhdGF2aWV3LXJlY29nbml6ZWQgb2JqZWN0LWxpa2UgdHlwZSkuICovDQogICAgICBmdW5jdGlvbiBpc09iamVjdCh2YWwpIHsNCiAgICAgICAgICByZXR1cm4gKHR5cGVvZiB2YWwgPT0gIm9iamVjdCIgJiYNCiAgICAgICAgICAgICAgIWlzSHRtbCh2YWwpICYmDQogICAgICAgICAgICAgICFpc1dpZGdldCh2YWwpICYmDQogICAgICAgICAgICAgICFpc0FycmF5KHZhbCkgJiYNCiAgICAgICAgICAgICAgIWlzRHVyYXRpb24odmFsKSAmJg0KICAgICAgICAgICAgICAhaXNEYXRlKHZhbCkgJiYNCiAgICAgICAgICAgICAgIWlzTGluayh2YWwpICYmDQogICAgICAgICAgICAgIHZhbCAhPT0gdW5kZWZpbmVkICYmDQogICAgICAgICAgICAgICFpc051bGwodmFsKSk7DQogICAgICB9DQogICAgICBWYWx1ZXMuaXNPYmplY3QgPSBpc09iamVjdDsNCiAgICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsKSB7DQogICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gImZ1bmN0aW9uIjsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjsNCiAgfSkoVmFsdWVzIHx8IChWYWx1ZXMgPSB7fSkpOw0KICAvLy8vLy8vLy8vLy8vLy8NCiAgLy8gR3JvdXBpbmdzIC8vDQogIC8vLy8vLy8vLy8vLy8vLw0KICB2YXIgR3JvdXBpbmdzOw0KICAoZnVuY3Rpb24gKEdyb3VwaW5ncykgew0KICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGdyb3VwIGVudHJ5IGlzIGEgc3RhbmRhbG9uZSB2YWx1ZSwgb3IgYSBncm91cGluZyBvZiBzdWItZW50cmllcy4gKi8NCiAgICAgIGZ1bmN0aW9uIGlzRWxlbWVudEdyb3VwKGVudHJ5KSB7DQogICAgICAgICAgcmV0dXJuIFZhbHVlcy5pc09iamVjdChlbnRyeSkgJiYgT2JqZWN0LmtleXMoZW50cnkpLmxlbmd0aCA9PSAyICYmICJrZXkiIGluIGVudHJ5ICYmICJyb3dzIiBpbiBlbnRyeTsNCiAgICAgIH0NCiAgICAgIEdyb3VwaW5ncy5pc0VsZW1lbnRHcm91cCA9IGlzRWxlbWVudEdyb3VwOw0KICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGFycmF5IGlzIGEgZ3JvdXBpbmcgYXJyYXkuICovDQogICAgICBmdW5jdGlvbiBpc0dyb3VwaW5nKGVudHJ5KSB7DQogICAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBlbnRyeSkNCiAgICAgICAgICAgICAgaWYgKCFpc0VsZW1lbnRHcm91cChlbGVtZW50KSkNCiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgIH0NCiAgICAgIEdyb3VwaW5ncy5pc0dyb3VwaW5nID0gaXNHcm91cGluZzsNCiAgICAgIC8qKiBDb3VudCB0aGUgdG90YWwgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgcmVjdXJzaXZlIGdyb3VwaW5nLiAqLw0KICAgICAgZnVuY3Rpb24gY291bnQoZWxlbWVudHMpIHsNCiAgICAgICAgICBpZiAoaXNHcm91cGluZyhlbGVtZW50cykpIHsNCiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IDA7DQogICAgICAgICAgICAgIGZvciAobGV0IHN1Ymdyb3VwIG9mIGVsZW1lbnRzKQ0KICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGNvdW50KHN1Ymdyb3VwLnJvd3MpOw0KICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzLmxlbmd0aDsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBHcm91cGluZ3MuY291bnQgPSBjb3VudDsNCiAgfSkoR3JvdXBpbmdzIHx8IChHcm91cGluZ3MgPSB7fSkpOw0KICAvLy8vLy8vLy8vDQogIC8vIExJTksgLy8NCiAgLy8vLy8vLy8vLw0KICAvKiogVGhlIE9ic2lkaWFuICdsaW5rJywgdXNlZCBmb3IgdW5pcXVlbHkgZGVzY3JpYmluZyBhIGZpbGUsIGhlYWRlciwgb3IgYmxvY2suICovDQogIGNsYXNzIExpbmsgew0KICAgICAgY29uc3RydWN0b3IoZmllbGRzKSB7DQogICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBmaWVsZHMpOw0KICAgICAgfQ0KICAgICAgLyoqIENyZWF0ZSBhIGxpbmsgdG8gYSBzcGVjaWZpYyBmaWxlLiAqLw0KICAgICAgc3RhdGljIGZpbGUocGF0aCwgZW1iZWQgPSBmYWxzZSwgZGlzcGxheSkgew0KICAgICAgICAgIHJldHVybiBuZXcgTGluayh7DQogICAgICAgICAgICAgIHBhdGgsDQogICAgICAgICAgICAgIGVtYmVkLA0KICAgICAgICAgICAgICBkaXNwbGF5LA0KICAgICAgICAgICAgICBzdWJwYXRoOiB1bmRlZmluZWQsDQogICAgICAgICAgICAgIHR5cGU6ICJmaWxlIiwNCiAgICAgICAgICB9KTsNCiAgICAgIH0NCiAgICAgIHN0YXRpYyBpbmZlcihsaW5rcGF0aCwgZW1iZWQgPSBmYWxzZSwgZGlzcGxheSkgew0KICAgICAgICAgIGlmIChsaW5rcGF0aC5pbmNsdWRlcygiI14iKSkgew0KICAgICAgICAgICAgICBsZXQgc3BsaXQgPSBsaW5rcGF0aC5zcGxpdCgiI14iKTsNCiAgICAgICAgICAgICAgcmV0dXJuIExpbmsuYmxvY2soc3BsaXRbMF0sIHNwbGl0WzFdLCBlbWJlZCwgZGlzcGxheSk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKGxpbmtwYXRoLmluY2x1ZGVzKCIjIikpIHsNCiAgICAgICAgICAgICAgbGV0IHNwbGl0ID0gbGlua3BhdGguc3BsaXQoIiMiKTsNCiAgICAgICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHNwbGl0WzBdLCBzcGxpdFsxXSwgZW1iZWQsIGRpc3BsYXkpOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgIHJldHVybiBMaW5rLmZpbGUobGlua3BhdGgsIGVtYmVkLCBkaXNwbGF5KTsNCiAgICAgIH0NCiAgICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZSBhbmQgaGVhZGVyIGluIHRoYXQgZmlsZS4gKi8NCiAgICAgIHN0YXRpYyBoZWFkZXIocGF0aCwgaGVhZGVyLCBlbWJlZCwgZGlzcGxheSkgew0KICAgICAgICAgIC8vIEhlYWRlcnMgbmVlZCB0byBiZSBub3JtYWxpemVkIHRvIGFscGhhLW51bWVyaWMgJiB3aXRoIGV4dHJhIHNwYWNpbmcgcmVtb3ZlZC4NCiAgICAgICAgICByZXR1cm4gbmV3IExpbmsoew0KICAgICAgICAgICAgICBwYXRoLA0KICAgICAgICAgICAgICBlbWJlZCwNCiAgICAgICAgICAgICAgZGlzcGxheSwNCiAgICAgICAgICAgICAgc3VicGF0aDogbm9ybWFsaXplSGVhZGVyRm9yTGluayhoZWFkZXIpLA0KICAgICAgICAgICAgICB0eXBlOiAiaGVhZGVyIiwNCiAgICAgICAgICB9KTsNCiAgICAgIH0NCiAgICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZSBhbmQgYmxvY2sgaW4gdGhhdCBmaWxlLiAqLw0KICAgICAgc3RhdGljIGJsb2NrKHBhdGgsIGJsb2NrSWQsIGVtYmVkLCBkaXNwbGF5KSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsNCiAgICAgICAgICAgICAgcGF0aCwNCiAgICAgICAgICAgICAgZW1iZWQsDQogICAgICAgICAgICAgIGRpc3BsYXksDQogICAgICAgICAgICAgIHN1YnBhdGg6IGJsb2NrSWQsDQogICAgICAgICAgICAgIHR5cGU6ICJibG9jayIsDQogICAgICAgICAgfSk7DQogICAgICB9DQogICAgICBzdGF0aWMgZnJvbU9iamVjdChvYmplY3QpIHsNCiAgICAgICAgICByZXR1cm4gbmV3IExpbmsob2JqZWN0KTsNCiAgICAgIH0NCiAgICAgIC8qKiBDaGVja3MgZm9yIGxpbmsgZXF1YWxpdHkgKGkuZS4sIHRoYXQgdGhlIGxpbmtzIGFyZSBwb2ludGluZyB0byB0aGUgc2FtZSBleGFjdCBsb2NhdGlvbikuICovDQogICAgICBlcXVhbHMob3RoZXIpIHsNCiAgICAgICAgICBpZiAob3RoZXIgPT0gdW5kZWZpbmVkIHx8IG90aGVyID09IG51bGwpDQogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICByZXR1cm4gdGhpcy5wYXRoID09IG90aGVyLnBhdGggJiYgdGhpcy50eXBlID09IG90aGVyLnR5cGUgJiYgdGhpcy5zdWJwYXRoID09IG90aGVyLnN1YnBhdGg7DQogICAgICB9DQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gaXQncyBtYXJrZG93biByZXByZXNlbnRhdGlvbi4gKi8NCiAgICAgIHRvU3RyaW5nKCkgew0KICAgICAgICAgIHJldHVybiB0aGlzLm1hcmtkb3duKCk7DQogICAgICB9DQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gYSByYXcgb2JqZWN0IHdoaWNoIGlzIHNlcmlhbGl6YXRpb24tZnJpZW5kbHkuICovDQogICAgICB0b09iamVjdCgpIHsNCiAgICAgICAgICByZXR1cm4geyBwYXRoOiB0aGlzLnBhdGgsIHR5cGU6IHRoaXMudHlwZSwgc3VicGF0aDogdGhpcy5zdWJwYXRoLCBkaXNwbGF5OiB0aGlzLmRpc3BsYXksIGVtYmVkOiB0aGlzLmVtYmVkIH07DQogICAgICB9DQogICAgICAvKiogVXBkYXRlIHRoaXMgbGluayB3aXRoIGEgbmV3IHBhdGguICovDQogICAgICAvL0B0cy1pZ25vcmU7IGVycm9yIGFwcGVhcmVkIGFmdGVyIHVwZGF0aW5nIE9ic2lkaWFuIHRvIDAuMTUuNDsgaXQgYWxzbyB1cGRhdGVkIG90aGVyIHBhY2thZ2VzIGJ1dCBkaWRuJ3Qgc2F5IHdoaWNoDQogICAgICB3aXRoUGF0aChwYXRoKSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKE9iamVjdC5hc3NpZ24oe30sIHRoaXMsIHsgcGF0aCB9KSk7DQogICAgICB9DQogICAgICAvKiogUmV0dXJuIGEgbmV3IGxpbmsgd2hpY2ggcG9pbnRzIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJ1dCB3aXRoIGEgbmV3IGRpc3BsYXkgdmFsdWUuICovDQogICAgICB3aXRoRGlzcGxheShkaXNwbGF5KSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKE9iamVjdC5hc3NpZ24oe30sIHRoaXMsIHsgZGlzcGxheSB9KSk7DQogICAgICB9DQogICAgICAvKiogQ29udmVydCBhIGZpbGUgbGluayBpbnRvIGEgbGluayB0byBhIHNwZWNpZmljIGhlYWRlci4gKi8NCiAgICAgIHdpdGhIZWFkZXIoaGVhZGVyKSB7DQogICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHRoaXMucGF0aCwgaGVhZGVyLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpOw0KICAgICAgfQ0KICAgICAgLyoqIENvbnZlcnQgYW55IGxpbmsgaW50byBhIGxpbmsgdG8gaXRzIGZpbGUuICovDQogICAgICB0b0ZpbGUoKSB7DQogICAgICAgICAgcmV0dXJuIExpbmsuZmlsZSh0aGlzLnBhdGgsIHRoaXMuZW1iZWQsIHRoaXMuZGlzcGxheSk7DQogICAgICB9DQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhbiBlbWJlZGRlZCBsaW5rLiAqLw0KICAgICAgdG9FbWJlZCgpIHsNCiAgICAgICAgICBpZiAodGhpcy5lbWJlZCkgew0KICAgICAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIGxldCBsaW5rID0gbmV3IExpbmsodGhpcyk7DQogICAgICAgICAgICAgIGxpbmsuZW1iZWQgPSB0cnVlOw0KICAgICAgICAgICAgICByZXR1cm4gbGluazsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhIG5vbi1lbWJlZGRlZCBsaW5rLiAqLw0KICAgICAgZnJvbUVtYmVkKCkgew0KICAgICAgICAgIGlmICghdGhpcy5lbWJlZCkgew0KICAgICAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIGxldCBsaW5rID0gbmV3IExpbmsodGhpcyk7DQogICAgICAgICAgICAgIGxpbmsuZW1iZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgcmV0dXJuIGxpbms7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIHRvIG1hcmtkb3duIHNvIGl0IGNhbiBiZSByZW5kZXJlZC4gKi8NCiAgICAgIG1hcmtkb3duKCkgew0KICAgICAgICAgIGxldCByZXN1bHQgPSAodGhpcy5lbWJlZCA/ICIhIiA6ICIiKSArICJbWyIgKyB0aGlzLm9ic2lkaWFuTGluaygpOw0KICAgICAgICAgIGlmICh0aGlzLmRpc3BsYXkpIHsNCiAgICAgICAgICAgICAgcmVzdWx0ICs9ICJ8IiArIHRoaXMuZGlzcGxheTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIHJlc3VsdCArPSAifCIgKyBnZXRGaWxlVGl0bGUodGhpcy5wYXRoKTsNCiAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIiB8fCB0aGlzLnR5cGUgPT0gImJsb2NrIikNCiAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiID4gIiArIHRoaXMuc3VicGF0aDsNCiAgICAgICAgICB9DQogICAgICAgICAgcmVzdWx0ICs9ICJdXSI7DQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgIH0NCiAgICAgIC8qKiBDb252ZXJ0IHRoZSBpbm5lciBwYXJ0IG9mIHRoZSBsaW5rIHRvIHNvbWV0aGluZyB0aGF0IE9ic2lkaWFuIGNhbiBvcGVuIC8gdW5kZXJzdGFuZC4gKi8NCiAgICAgIG9ic2lkaWFuTGluaygpIHsNCiAgICAgICAgICB2YXIgX2EsIF9iOw0KICAgICAgICAgIGNvbnN0IGVzY2FwZWQgPSB0aGlzLnBhdGgucmVwbGFjZSgifCIsICJcXHwiKTsNCiAgICAgICAgICBpZiAodGhpcy50eXBlID09ICJoZWFkZXIiKQ0KICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZCArICIjIiArICgoX2EgPSB0aGlzLnN1YnBhdGgpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZXBsYWNlKCJ8IiwgIlxcfCIpKTsNCiAgICAgICAgICBpZiAodGhpcy50eXBlID09ICJibG9jayIpDQogICAgICAgICAgICAgIHJldHVybiBlc2NhcGVkICsgIiNeIiArICgoX2IgPSB0aGlzLnN1YnBhdGgpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5yZXBsYWNlKCJ8IiwgIlxcfCIpKTsNCiAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgIHJldHVybiBlc2NhcGVkOw0KICAgICAgfQ0KICAgICAgLyoqIFRoZSBzdHJpcHBlZCBuYW1lIG9mIHRoZSBmaWxlIHRoaXMgbGluayBwb2ludHMgdG8uICovDQogICAgICBmaWxlTmFtZSgpIHsNCiAgICAgICAgICByZXR1cm4gZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCkucmVwbGFjZSgiLm1kIiwgIiIpOw0KICAgICAgfQ0KICB9DQogIC8vLy8vLy8vLy8vLy8vLy8vDQogIC8vIFdJREdFVCBCQVNFIC8vDQogIC8vLy8vLy8vLy8vLy8vLy8vDQogIC8qKg0KICAgKiBBIHRyaXZpYWwgYmFzZSBjbGFzcyB3aGljaCBqdXN0IGRlZmluZXMgdGhlICckd2lkZ2V0JyBpZGVudGlmaWVyIHR5cGUuIFN1YnR5cGVzIG9mDQogICAqIHdpZGdldCBhcmUgcmVzcG9uc2libGUgZm9yIGFkZGluZyB3aGF0ZXZlciBtZXRhZGF0YSBpcyByZWxldmFudC4gSWYgeW91IHdhbnQgeW91ciB3aWRnZXQNCiAgICogdG8gaGF2ZSByZW5kZXJpbmcgZnVuY3Rpb25hbGl0eSAod2hpY2ggeW91IHByb2JhYmx5IGRvKSwgeW91IHNob3VsZCBleHRlbmQgYFJlbmRlcldpZGdldGAuDQogICAqLw0KICBjbGFzcyBXaWRnZXQgew0KICAgICAgY29uc3RydWN0b3IoJHdpZGdldCkgew0KICAgICAgICAgIHRoaXMuJHdpZGdldCA9ICR3aWRnZXQ7DQogICAgICB9DQogIH0NCiAgLyoqIEEgdHJpdmlhbCB3aWRnZXQgd2hpY2ggcmVuZGVycyBhIChrZXksIHZhbHVlKSBwYWlyLCBhbmQgYWxsb3dzIGFjY2Vzc2luZyB0aGUga2V5IGFuZCB2YWx1ZS4gKi8NCiAgY2xhc3MgTGlzdFBhaXJXaWRnZXQgZXh0ZW5kcyBXaWRnZXQgew0KICAgICAgY29uc3RydWN0b3Ioa2V5LCB2YWx1ZSkgew0KICAgICAgICAgIHN1cGVyKCJkYXRhdmlldzpsaXN0LXBhaXIiKTsNCiAgICAgICAgICB0aGlzLmtleSA9IGtleTsNCiAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7DQogICAgICB9DQogICAgICBtYXJrZG93bigpIHsNCiAgICAgICAgICByZXR1cm4gYCR7VmFsdWVzLnRvU3RyaW5nKHRoaXMua2V5KX06ICR7VmFsdWVzLnRvU3RyaW5nKHRoaXMudmFsdWUpfWA7DQogICAgICB9DQogIH0NCiAgLyoqIEEgc2ltcGxlIHdpZGdldCB3aGljaCByZW5kZXJzIGFuIGV4dGVybmFsIGxpbmsuICovDQogIGNsYXNzIEV4dGVybmFsTGlua1dpZGdldCBleHRlbmRzIFdpZGdldCB7DQogICAgICBjb25zdHJ1Y3Rvcih1cmwsIGRpc3BsYXkpIHsNCiAgICAgICAgICBzdXBlcigiZGF0YXZpZXc6ZXh0ZXJuYWwtbGluayIpOw0KICAgICAgICAgIHRoaXMudXJsID0gdXJsOw0KICAgICAgICAgIHRoaXMuZGlzcGxheSA9IGRpc3BsYXk7DQogICAgICB9DQogICAgICBtYXJrZG93bigpIHsNCiAgICAgICAgICB2YXIgX2E7DQogICAgICAgICAgcmV0dXJuIGBbJHsoX2EgPSB0aGlzLmRpc3BsYXkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMudXJsfV0oJHt0aGlzLnVybH0pYDsNCiAgICAgIH0NCiAgfQ0KICB2YXIgV2lkZ2V0czsNCiAgKGZ1bmN0aW9uIChXaWRnZXRzKSB7DQogICAgICAvKiogQ3JlYXRlIGEgbGlzdCBwYWlyIHdpZGdldCBtYXRjaGluZyB0aGUgZ2l2ZW4ga2V5IGFuZCB2YWx1ZS4gKi8NCiAgICAgIGZ1bmN0aW9uIGxpc3RQYWlyKGtleSwgdmFsdWUpIHsNCiAgICAgICAgICByZXR1cm4gbmV3IExpc3RQYWlyV2lkZ2V0KGtleSwgdmFsdWUpOw0KICAgICAgfQ0KICAgICAgV2lkZ2V0cy5saXN0UGFpciA9IGxpc3RQYWlyOw0KICAgICAgLyoqIENyZWF0ZSBhbiBleHRlcm5hbCBsaW5rIHdpZGdldCB3aGljaCByZW5kZXJzIGFuIGV4dGVybmFsIE9ic2lkaWFuIGxpbmsuICovDQogICAgICBmdW5jdGlvbiBleHRlcm5hbExpbmsodXJsLCBkaXNwbGF5KSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBFeHRlcm5hbExpbmtXaWRnZXQodXJsLCBkaXNwbGF5KTsNCiAgICAgIH0NCiAgICAgIFdpZGdldHMuZXh0ZXJuYWxMaW5rID0gZXh0ZXJuYWxMaW5rOw0KICAgICAgLyoqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gd2lkZ2V0IGlzIGEgbGlzdCBwYWlyIHdpZGdldC4gKi8NCiAgICAgIGZ1bmN0aW9uIGlzTGlzdFBhaXIod2lkZ2V0KSB7DQogICAgICAgICAgcmV0dXJuIHdpZGdldC4kd2lkZ2V0ID09PSAiZGF0YXZpZXc6bGlzdC1wYWlyIjsNCiAgICAgIH0NCiAgICAgIFdpZGdldHMuaXNMaXN0UGFpciA9IGlzTGlzdFBhaXI7DQogICAgICBmdW5jdGlvbiBpc0V4dGVybmFsTGluayh3aWRnZXQpIHsNCiAgICAgICAgICByZXR1cm4gd2lkZ2V0LiR3aWRnZXQgPT09ICJkYXRhdmlldzpleHRlcm5hbC1saW5rIjsNCiAgICAgIH0NCiAgICAgIFdpZGdldHMuaXNFeHRlcm5hbExpbmsgPSBpc0V4dGVybmFsTGluazsNCiAgICAgIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiB3aWRnZXQgaXMgYW55IGtpbmQgb2YgYnVpbHQtaW4gd2lkZ2V0IHdpdGggc3BlY2lhbCByZW5kZXJpbmcgaGFuZGxpbmcuICovDQogICAgICBmdW5jdGlvbiBpc0J1aWx0aW4od2lkZ2V0KSB7DQogICAgICAgICAgcmV0dXJuIGlzTGlzdFBhaXIod2lkZ2V0KSB8fCBpc0V4dGVybmFsTGluayh3aWRnZXQpOw0KICAgICAgfQ0KICAgICAgV2lkZ2V0cy5pc0J1aWx0aW4gPSBpc0J1aWx0aW47DQogIH0pKFdpZGdldHMgfHwgKFdpZGdldHMgPSB7fSkpOwoKICAvKiogVXRpbGl0eSBtZXRob2RzIGZvciBjcmVhdGluZyAmIGNvbXBhcmluZyBmaWVsZHMuICovDQogIHZhciBGaWVsZHM7DQogIChmdW5jdGlvbiAoRmllbGRzKSB7DQogICAgICBmdW5jdGlvbiB2YXJpYWJsZShuYW1lKSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogInZhcmlhYmxlIiwgbmFtZSB9Ow0KICAgICAgfQ0KICAgICAgRmllbGRzLnZhcmlhYmxlID0gdmFyaWFibGU7DQogICAgICBmdW5jdGlvbiBsaXRlcmFsKHZhbHVlKSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxpdGVyYWwiLCB2YWx1ZSB9Ow0KICAgICAgfQ0KICAgICAgRmllbGRzLmxpdGVyYWwgPSBsaXRlcmFsOw0KICAgICAgZnVuY3Rpb24gYmluYXJ5T3AobGVmdCwgb3AsIHJpZ2h0KSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3AsIHJpZ2h0IH07DQogICAgICB9DQogICAgICBGaWVsZHMuYmluYXJ5T3AgPSBiaW5hcnlPcDsNCiAgICAgIGZ1bmN0aW9uIGluZGV4KG9iaiwgaW5kZXgpIHsNCiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiaW5kZXgiLCBvYmplY3Q6IG9iaiwgaW5kZXggfTsNCiAgICAgIH0NCiAgICAgIEZpZWxkcy5pbmRleCA9IGluZGV4Ow0KICAgICAgLyoqIENvbnZlcnRzIGEgc3RyaW5nIGluIGRvdC1ub3RhdGlvbi1mb3JtYXQgaW50byBhIHZhcmlhYmxlIHdoaWNoIGluZGV4ZXMuICovDQogICAgICBmdW5jdGlvbiBpbmRleFZhcmlhYmxlKG5hbWUpIHsNCiAgICAgICAgICBsZXQgcGFydHMgPSBuYW1lLnNwbGl0KCIuIik7DQogICAgICAgICAgbGV0IHJlc3VsdCA9IEZpZWxkcy52YXJpYWJsZShwYXJ0c1swXSk7DQogICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHBhcnRzLmxlbmd0aDsgaW5kZXgrKykgew0KICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuaW5kZXgocmVzdWx0LCBGaWVsZHMubGl0ZXJhbChwYXJ0c1tpbmRleF0pKTsNCiAgICAgICAgICB9DQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgIH0NCiAgICAgIEZpZWxkcy5pbmRleFZhcmlhYmxlID0gaW5kZXhWYXJpYWJsZTsNCiAgICAgIGZ1bmN0aW9uIGxhbWJkYShhcmdzLCB2YWx1ZSkgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsYW1iZGEiLCBhcmd1bWVudHM6IGFyZ3MsIHZhbHVlIH07DQogICAgICB9DQogICAgICBGaWVsZHMubGFtYmRhID0gbGFtYmRhOw0KICAgICAgZnVuY3Rpb24gZnVuYyhmdW5jLCBhcmdzKSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZ1bmN0aW9uIiwgZnVuYywgYXJndW1lbnRzOiBhcmdzIH07DQogICAgICB9DQogICAgICBGaWVsZHMuZnVuYyA9IGZ1bmM7DQogICAgICBmdW5jdGlvbiBsaXN0KHZhbHVlcykgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaXN0IiwgdmFsdWVzIH07DQogICAgICB9DQogICAgICBGaWVsZHMubGlzdCA9IGxpc3Q7DQogICAgICBmdW5jdGlvbiBvYmplY3QodmFsdWVzKSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm9iamVjdCIsIHZhbHVlcyB9Ow0KICAgICAgfQ0KICAgICAgRmllbGRzLm9iamVjdCA9IG9iamVjdDsNCiAgICAgIGZ1bmN0aW9uIG5lZ2F0ZShjaGlsZCkgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJuZWdhdGVkIiwgY2hpbGQgfTsNCiAgICAgIH0NCiAgICAgIEZpZWxkcy5uZWdhdGUgPSBuZWdhdGU7DQogICAgICBmdW5jdGlvbiBpc0NvbXBhcmVPcChvcCkgew0KICAgICAgICAgIHJldHVybiBvcCA9PSAiPD0iIHx8IG9wID09ICI8IiB8fCBvcCA9PSAiPiIgfHwgb3AgPT0gIj49IiB8fCBvcCA9PSAiIT0iIHx8IG9wID09ICI9IjsNCiAgICAgIH0NCiAgICAgIEZpZWxkcy5pc0NvbXBhcmVPcCA9IGlzQ29tcGFyZU9wOw0KICAgICAgRmllbGRzLk5VTEwgPSBGaWVsZHMubGl0ZXJhbChudWxsKTsNCiAgfSkoRmllbGRzIHx8IChGaWVsZHMgPSB7fSkpOwoKICAvKiogQVNUIGltcGxlbWVudGF0aW9uIGZvciBxdWVyaWVzIG92ZXIgZGF0YSBzb3VyY2VzLiAqLw0KICAvKiogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGNyZWF0aW5nIGFuZCBtYW5pcHVsYXRpbmcgc291cmNlcy4gKi8NCiAgdmFyIFNvdXJjZXM7DQogIChmdW5jdGlvbiAoU291cmNlcykgew0KICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBzZWFyY2hlcyBmcm9tIGEgdGFnLiAqLw0KICAgICAgZnVuY3Rpb24gdGFnKHRhZykgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ0YWciLCB0YWcgfTsNCiAgICAgIH0NCiAgICAgIFNvdXJjZXMudGFnID0gdGFnOw0KICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBmZXRjaGVzIGZyb20gYSBDU1YgZmlsZS4gKi8NCiAgICAgIGZ1bmN0aW9uIGNzdihwYXRoKSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImNzdiIsIHBhdGggfTsNCiAgICAgIH0NCiAgICAgIFNvdXJjZXMuY3N2ID0gY3N2Ow0KICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBzZWFyY2hlcyBmb3IgZmlsZXMgdW5kZXIgYSBmb2xkZXIgcHJlZml4LiAqLw0KICAgICAgZnVuY3Rpb24gZm9sZGVyKHByZWZpeCkgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJmb2xkZXIiLCBmb2xkZXI6IHByZWZpeCB9Ow0KICAgICAgfQ0KICAgICAgU291cmNlcy5mb2xkZXIgPSBmb2xkZXI7DQogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHNlYXJjaGVzIGZvciBmaWxlcyB3aGljaCBsaW5rIHRvL2Zyb20gYSBnaXZlbiBmaWxlLiAqLw0KICAgICAgZnVuY3Rpb24gbGluayhmaWxlLCBpbmNvbWluZykgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaW5rIiwgZmlsZSwgZGlyZWN0aW9uOiBpbmNvbWluZyA/ICJpbmNvbWluZyIgOiAib3V0Z29pbmciIH07DQogICAgICB9DQogICAgICBTb3VyY2VzLmxpbmsgPSBsaW5rOw0KICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBqb2lucyB0d28gc291cmNlcyBieSBhIGxvZ2ljYWwgb3BlcmF0b3IgKGFuZC9vcikuICovDQogICAgICBmdW5jdGlvbiBiaW5hcnlPcChsZWZ0LCBvcCwgcmlnaHQpIHsNCiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcCwgcmlnaHQgfTsNCiAgICAgIH0NCiAgICAgIFNvdXJjZXMuYmluYXJ5T3AgPSBiaW5hcnlPcDsNCiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggdGFrZXMgdGhlIGludGVyc2VjdGlvbiBvZiB0d28gc291cmNlcy4gKi8NCiAgICAgIGZ1bmN0aW9uIGFuZChsZWZ0LCByaWdodCkgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJiaW5hcnlvcCIsIGxlZnQsIG9wOiAiJiIsIHJpZ2h0IH07DQogICAgICB9DQogICAgICBTb3VyY2VzLmFuZCA9IGFuZDsNCiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggdGFrZXMgdGhlIHVuaW9uIG9mIHR3byBzb3VyY2VzLiAqLw0KICAgICAgZnVuY3Rpb24gb3IobGVmdCwgcmlnaHQpIHsNCiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcDogInwiLCByaWdodCB9Ow0KICAgICAgfQ0KICAgICAgU291cmNlcy5vciA9IG9yOw0KICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBuZWdhdGVzIHRoZSB1bmRlcmx5aW5nIHNvdXJjZS4gKi8NCiAgICAgIGZ1bmN0aW9uIG5lZ2F0ZShjaGlsZCkgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJuZWdhdGUiLCBjaGlsZCB9Ow0KICAgICAgfQ0KICAgICAgU291cmNlcy5uZWdhdGUgPSBuZWdhdGU7DQogICAgICBmdW5jdGlvbiBlbXB0eSgpIHsNCiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZW1wdHkiIH07DQogICAgICB9DQogICAgICBTb3VyY2VzLmVtcHR5ID0gZW1wdHk7DQogIH0pKFNvdXJjZXMgfHwgKFNvdXJjZXMgPSB7fSkpOwoKICAvKiogRW1vamkgcmVnZXggd2l0aG91dCBhbnkgYWRkaXRpb25hbCBmbGFncy4gKi8NCiAgY29uc3QgRU1PSklfUkVHRVggPSBuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgIiIpOw0KICAvKiogUHJvdmlkZXMgYSBsb29rdXAgdGFibGUgZm9yIHVuaXQgZHVyYXRpb25zIG9mIHRoZSBnaXZlbiB0eXBlLiAqLw0KICBjb25zdCBEVVJBVElPTl9UWVBFUyA9IHsNCiAgICAgIHllYXI6IER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSwNCiAgICAgIHllYXJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksDQogICAgICB5cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLA0KICAgICAgeXJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksDQogICAgICBtb250aDogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwNCiAgICAgIG1vbnRoczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwNCiAgICAgIG1vOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLA0KICAgICAgbW9zOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLA0KICAgICAgd2VlazogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLA0KICAgICAgd2Vla3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwNCiAgICAgIHdrOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksDQogICAgICB3a3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwNCiAgICAgIHc6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwNCiAgICAgIGRheTogRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSksDQogICAgICBkYXlzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSwNCiAgICAgIGQ6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLA0KICAgICAgaG91cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLA0KICAgICAgaG91cnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwNCiAgICAgIGhyOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksDQogICAgICBocnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwNCiAgICAgIGg6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwNCiAgICAgIG1pbnV0ZTogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksDQogICAgICBtaW51dGVzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwNCiAgICAgIG1pbjogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksDQogICAgICBtaW5zOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwNCiAgICAgIG06IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLA0KICAgICAgc2Vjb25kOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwNCiAgICAgIHNlY29uZHM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLA0KICAgICAgc2VjOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwNCiAgICAgIHNlY3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLA0KICAgICAgczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksDQogIH07DQogIC8qKiBTaG9ydGhhbmQgZm9yIGNvbW1vbiBkYXRlcyAocmVsYXRpdmUgdG8gcmlnaHQgbm93KS4gKi8NCiAgY29uc3QgREFURV9TSE9SVEhBTkRTID0gew0KICAgICAgbm93OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLA0KICAgICAgdG9kYXk6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZigiZGF5IiksDQogICAgICB5ZXN0ZXJkYXk6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkNCiAgICAgICAgICAuc3RhcnRPZigiZGF5IikNCiAgICAgICAgICAubWludXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSkpLA0KICAgICAgdG9tb3Jyb3c6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkNCiAgICAgICAgICAuc3RhcnRPZigiZGF5IikNCiAgICAgICAgICAucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSksDQogICAgICBzb3c6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZigid2VlayIpLA0KICAgICAgInN0YXJ0LW9mLXdlZWsiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoIndlZWsiKSwNCiAgICAgIGVvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigid2VlayIpLA0KICAgICAgImVuZC1vZi13ZWVrIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigid2VlayIpLA0KICAgICAgc295OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoInllYXIiKSwNCiAgICAgICJzdGFydC1vZi15ZWFyIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ5ZWFyIiksDQogICAgICBlb3k6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoInllYXIiKSwNCiAgICAgICJlbmQtb2YteWVhciI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoInllYXIiKSwNCiAgICAgIHNvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJtb250aCIpLA0KICAgICAgInN0YXJ0LW9mLW1vbnRoIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJtb250aCIpLA0KICAgICAgZW9tOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJtb250aCIpLA0KICAgICAgImVuZC1vZi1tb250aCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoIm1vbnRoIiksDQogIH07DQogIC8qKg0KICAgKiBLZXl3b3JkcyB3aGljaCBjYW5ub3QgYmUgdXNlZCBhcyB2YXJpYWJsZXMgZGlyZWN0bHkuIFVzZSBgcm93Ljx0aGluZz5gIGlmIGl0IGlzIGEgdmFyaWFibGUgeW91IGhhdmUgZGVmaW5lZCBhbmQgd2FudA0KICAgKiB0byBhY2Nlc3MuDQogICAqLw0KICBjb25zdCBLRVlXT1JEUyA9IFsiRlJPTSIsICJXSEVSRSIsICJMSU1JVCIsICJHUk9VUCIsICJGTEFUVEVOIl07DQogIC8vLy8vLy8vLy8vLy8vLw0KICAvLyBVdGlsaXRpZXMgLy8NCiAgLy8vLy8vLy8vLy8vLy8vDQogIC8qKiBTcGxpdCBvbiB1bmVzY2FwZWQgcGlwZXMgaW4gYW4gaW5uZXIgbGluay4gKi8NCiAgZnVuY3Rpb24gc3BsaXRPblVuZXNjYXBlZFBpcGUobGluaykgew0KICAgICAgbGV0IHBpcGUgPSAtMTsNCiAgICAgIHdoaWxlICgocGlwZSA9IGxpbmsuaW5kZXhPZigifCIsIHBpcGUgKyAxKSkgPj0gMCkgew0KICAgICAgICAgIGlmIChwaXBlID4gMCAmJiBsaW5rW3BpcGUgLSAxXSA9PSAiXFwiKQ0KICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICByZXR1cm4gW2xpbmsuc3Vic3RyaW5nKDAsIHBpcGUpLnJlcGxhY2UoL1xcXHwvZywgInwiKSwgbGluay5zdWJzdHJpbmcocGlwZSArIDEpXTsNCiAgICAgIH0NCiAgICAgIHJldHVybiBbbGluay5yZXBsYWNlKC9cXFx8L2csICJ8IiksIHVuZGVmaW5lZF07DQogIH0NCiAgLyoqIEF0dGVtcHQgdG8gcGFyc2UgdGhlIGluc2lkZSBvZiBhIGxpbmsgdG8gcHVsbCBvdXQgZGlzcGxheSBuYW1lLCBzdWJwYXRoLCBldGMuICovDQogIGZ1bmN0aW9uIHBhcnNlSW5uZXJMaW5rKHJhd2xpbmspIHsNCiAgICAgIGxldCBbbGluaywgZGlzcGxheV0gPSBzcGxpdE9uVW5lc2NhcGVkUGlwZShyYXdsaW5rKTsNCiAgICAgIHJldHVybiBMaW5rLmluZmVyKGxpbmssIGZhbHNlLCBkaXNwbGF5KTsNCiAgfQ0KICAvKiogQ3JlYXRlIGEgbGVmdC1hc3NvY2lhdGl2ZSBiaW5hcnkgcGFyc2VyIHdoaWNoIHBhcnNlcyB0aGUgZ2l2ZW4gc3ViLWVsZW1lbnQgYW5kIHNlcGFyYXRvci4gSGFuZGxlcyB3aGl0ZXNwYWNlLiAqLw0KICBmdW5jdGlvbiBjcmVhdGVCaW5hcnlQYXJzZXIoY2hpbGQsIHNlcCwgY29tYmluZSkgew0KICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKGNoaWxkLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHNlcCwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBjaGlsZCkubWFueSgpLCAoZmlyc3QsIHJlc3QpID0+IHsNCiAgICAgICAgICBpZiAocmVzdC5sZW5ndGggPT0gMCkNCiAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0Ow0KICAgICAgICAgIGxldCBub2RlID0gY29tYmluZShmaXJzdCwgcmVzdFswXVsxXSwgcmVzdFswXVszXSk7DQogICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHJlc3QubGVuZ3RoOyBpbmRleCsrKSB7DQogICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5lKG5vZGUsIHJlc3RbaW5kZXhdWzFdLCByZXN0W2luZGV4XVszXSk7DQogICAgICAgICAgfQ0KICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgfSk7DQogIH0NCiAgZnVuY3Rpb24gY2hhaW5PcHQoYmFzZSwgLi4uZnVuY3MpIHsNCiAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmN1c3RvbSgoc3VjY2VzcywgZmFpbHVyZSkgPT4gew0KICAgICAgICAgIHJldHVybiAoaW5wdXQsIGkpID0+IHsNCiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGJhc2UuXyhpbnB1dCwgaSk7DQogICAgICAgICAgICAgIGlmICghcmVzdWx0LnN0YXR1cykNCiAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgZnVuY3MpIHsNCiAgICAgICAgICAgICAgICAgIGxldCBuZXh0ID0gZnVuYyhyZXN1bHQudmFsdWUpLl8oaW5wdXQsIHJlc3VsdC5pbmRleCk7DQogICAgICAgICAgICAgICAgICBpZiAoIW5leHQuc3RhdHVzKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXh0Ow0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgfTsNCiAgICAgIH0pOw0KICB9DQogIGNvbnN0IEVYUFJFU1NJT04gPSBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmNyZWF0ZUxhbmd1YWdlKHsNCiAgICAgIC8vIEEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOyB0aGUgZGVjaW1hbCBwb2ludCBpcyBvcHRpb25hbC4NCiAgICAgIG51bWJlcjogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvLT9bMC05XSsoXC5bMC05XSspPy8pDQogICAgICAgICAgLm1hcChzdHIgPT4gTnVtYmVyLnBhcnNlRmxvYXQoc3RyKSkNCiAgICAgICAgICAuZGVzYygibnVtYmVyIiksDQogICAgICAvLyBBIHF1b3RlLXN1cnJvdW5kZWQgc3RyaW5nIHdoaWNoIHN1cHBvcnRzIGVzY2FwZSBjaGFyYWN0ZXJzICgnXCcpLg0KICAgICAgc3RyaW5nOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCciJykNCiAgICAgICAgICAudGhlbihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLmVzY2FwZUNoYXJhY3RlciwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5ub25lT2YoJyJcXCcpKQ0KICAgICAgICAgIC5hdExlYXN0KDApDQogICAgICAgICAgLm1hcChjaGFycyA9PiBjaGFycy5qb2luKCIiKSkpDQogICAgICAgICAgLnNraXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoJyInKSkNCiAgICAgICAgICAuZGVzYygic3RyaW5nIiksDQogICAgICBlc2NhcGVDaGFyYWN0ZXI6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIlxcIikNCiAgICAgICAgICAudGhlbihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFueSkNCiAgICAgICAgICAubWFwKGVzY2FwZWQgPT4gew0KICAgICAgICAgIC8vIElmIHdlIGFyZSBlc2NhcGluZyBhIGJhY2tzbGFzaCBvciBhIHF1b3RlLCBwYXNzIGluIG9uIGluIGVzY2FwZWQgZm9ybQ0KICAgICAgICAgIGlmIChlc2NhcGVkID09PSAnIicpDQogICAgICAgICAgICAgIHJldHVybiAnIic7DQogICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICJcXCIpDQogICAgICAgICAgICAgIHJldHVybiAiXFwiOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgcmV0dXJuICJcXCIgKyBlc2NhcGVkOw0KICAgICAgfSksDQogICAgICAvLyBBIGJvb2xlYW4gdHJ1ZS9mYWxzZSB2YWx1ZS4NCiAgICAgIGJvb2w6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL3RydWV8ZmFsc2V8VHJ1ZXxGYWxzZS8pDQogICAgICAgICAgLm1hcChzdHIgPT4gc3RyLnRvTG93ZXJDYXNlKCkgPT0gInRydWUiKQ0KICAgICAgICAgIC5kZXNjKCJib29sZWFuICgndHJ1ZScgb3IgJ2ZhbHNlJykiKSwNCiAgICAgIC8vIEEgdGFnIG9mIHRoZSBmb3JtICcjc3R1ZmYvaGVsbG8tdGhlcmUnLg0KICAgICAgdGFnOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIjIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9bXlx1MjAwMC1cdTIwNkZcdTJFMDAtXHUyRTdGJyEiIyQlJigpKissLjo7PD0+P0BeYHt8fX5cW1xdXFxcc10vKS5kZXNjKCJ0ZXh0IikpLm1hbnkoKSwgKHN0YXJ0LCByZXN0KSA9PiBzdGFydCArIHJlc3Quam9pbigiIikpLmRlc2MoInRhZyAoJyNoZWxsby9zdHVmZicpIiksDQogICAgICAvLyBBIHZhcmlhYmxlIGlkZW50aWZpZXIsIHdoaWNoIGlzIGFscGhhbnVtZXJpYyBhbmQgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIG9yLi4uIGVtb2ppLg0KICAgICAgaWRlbnRpZmllcjogXyA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXHB7TGV0dGVyfS91KSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9bMC05XHB7TGV0dGVyfV8tXS91KSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSkubWFueSgpLCAoZmlyc3QsIHJlc3QpID0+IGZpcnN0ICsgcmVzdC5qb2luKCIiKSkuZGVzYygidmFyaWFibGUgaWRlbnRpZmllciIpLA0KICAgICAgLy8gQW4gT2JzaWRpYW4gbGluayBvZiB0aGUgZm9ybSBbWzxsaW5rPl1dLg0KICAgICAgbGluazogXyA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXFtcWyhbXlxbXF1dKj8pXF1cXS91LCAxKQ0KICAgICAgICAgIC5tYXAobGlua0lubmVyID0+IHBhcnNlSW5uZXJMaW5rKGxpbmtJbm5lcikpDQogICAgICAgICAgLmRlc2MoImZpbGUgbGluayIpLA0KICAgICAgLy8gQW4gZW1iZWRkYWJsZSBsaW5rIHdoaWNoIGNhbiBzdGFydCB3aXRoICchJy4gVGhpcyBvdmVybGFwcyB3aXRoIHRoZSBub3JtYWwgbmVnYXRpb24gb3BlcmF0b3IsIHNvIGl0IGlzIG9ubHkNCiAgICAgIC8vIHByb3ZpZGVkIGZvciBtZXRhZGF0YSBwYXJzaW5nLg0KICAgICAgZW1iZWRMaW5rOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIhIikuYXRNb3N0KDEpLCBxLmxpbmssIChwLCBsKSA9PiB7DQogICAgICAgICAgaWYgKHAubGVuZ3RoID4gMCkNCiAgICAgICAgICAgICAgbC5lbWJlZCA9IHRydWU7DQogICAgICAgICAgcmV0dXJuIGw7DQogICAgICB9KS5kZXNjKCJmaWxlIGxpbmsiKSwNCiAgICAgIC8vIEJpbmFyeSBwbHVzIG9yIG1pbnVzIG9wZXJhdG9yLg0KICAgICAgYmluYXJ5UGx1c01pbnVzOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9cK3wtLykNCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpDQogICAgICAgICAgLmRlc2MoIicrJyBvciAnLSciKSwNCiAgICAgIC8vIEJpbmFyeSB0aW1lcyBvciBkaXZpZGUgb3BlcmF0b3IuDQogICAgICBiaW5hcnlNdWxEaXY6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1wqfFwvfCUvKQ0KICAgICAgICAgIC5tYXAoc3RyID0+IHN0cikNCiAgICAgICAgICAuZGVzYygiJyonIG9yICcvJyBvciAnJSciKSwNCiAgICAgIC8vIEJpbmFyeSBjb21wYXJpc29uIG9wZXJhdG9yLg0KICAgICAgYmluYXJ5Q29tcGFyZU9wOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC8+PXw8PXwhPXw+fDx8PS8pDQogICAgICAgICAgLm1hcChzdHIgPT4gc3RyKQ0KICAgICAgICAgIC5kZXNjKCInPj0nIG9yICc8PScgb3IgJyE9JyBvciAnPScgb3IgJz4nIG9yICc8JyIpLA0KICAgICAgLy8gQmluYXJ5IGJvb2xlYW4gY29tYmluYXRpb24gb3BlcmF0b3IuDQogICAgICBiaW5hcnlCb29sZWFuT3A6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL2FuZHxvcnwmfFx8L2kpDQogICAgICAgICAgLm1hcChzdHIgPT4gew0KICAgICAgICAgIGlmIChzdHIudG9Mb3dlckNhc2UoKSA9PSAiYW5kIikNCiAgICAgICAgICAgICAgcmV0dXJuICImIjsNCiAgICAgICAgICBlbHNlIGlmIChzdHIudG9Mb3dlckNhc2UoKSA9PSAib3IiKQ0KICAgICAgICAgICAgICByZXR1cm4gInwiOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgcmV0dXJuIHN0cjsNCiAgICAgIH0pDQogICAgICAgICAgLmRlc2MoIidhbmQnIG9yICdvciciKSwNCiAgICAgIC8vIEEgZGF0ZSB3aGljaCBjYW4gYmUgWVlZWS1NTVstRERUSEg6bW06c3NdLg0KICAgICAgcm9vdERhdGU6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezR9LyksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCItIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoeWVhciwgXywgbW9udGgpID0+IHsNCiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IE51bWJlci5wYXJzZUludCh5ZWFyKSwgbW9udGg6IE51bWJlci5wYXJzZUludChtb250aCkgfSk7DQogICAgICB9KS5kZXNjKCJkYXRlIGluIGZvcm1hdCBZWVlZLU1NWy1ERFRISC1NTS1TUy5NU10iKSwNCiAgICAgIGRhdGVTaG9ydGhhbmQ6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQoLi4uT2JqZWN0LmtleXMoREFURV9TSE9SVEhBTkRTKQ0KICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKQ0KICAgICAgICAgIC5tYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcpKSwNCiAgICAgIGRhdGU6IHEgPT4gY2hhaW5PcHQocS5yb290RGF0ZSwgKHltKSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLSIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKF8sIGRheSkgPT4geW0uc2V0KHsgZGF5OiBOdW1iZXIucGFyc2VJbnQoZGF5KSB9KSksICh5bWQpID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJUIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgaG91cikgPT4geW1kLnNldCh7IGhvdXI6IE51bWJlci5wYXJzZUludChob3VyKSB9KSksICh5bWRoKSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKF8sIG1pbnV0ZSkgPT4geW1kaC5zZXQoeyBtaW51dGU6IE51bWJlci5wYXJzZUludChtaW51dGUpIH0pKSwgKHltZGhtKSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKF8sIHNlY29uZCkgPT4geW1kaG0uc2V0KHsgc2Vjb25kOiBOdW1iZXIucGFyc2VJbnQoc2Vjb25kKSB9KSksICh5bWRobXMpID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIuIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9cZHszfS8pLCAoXywgbWlsbGlzZWNvbmQpID0+IHltZGhtcy5zZXQoeyBtaWxsaXNlY29uZDogTnVtYmVyLnBhcnNlSW50KG1pbGxpc2Vjb25kKSB9KSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3VjY2VlZCh5bWRobXMpIC8vIHBhc3MNCiAgICAgICksIChkdCkgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIisiKS5vcihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLSIpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezEsMn0oOlxkezJ9KT8vKSwgKHBtLCBocikgPT4gZHQuc2V0Wm9uZSgiVVRDIiArIHBtICsgaHIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJaIiksICgpID0+IGR0LnNldFpvbmUoInV0YyIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJbIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9bMC05QS1aYS16Ky1cL10rL3UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiXSIpLCAoX2EsIHpvbmUsIF9iKSA9PiBkdC5zZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSkpKQ0KICAgICAgICAgIC5hc3NlcnQoKGR0KSA9PiBkdC5pc1ZhbGlkLCAidmFsaWQgZGF0ZSIpDQogICAgICAgICAgLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSIpLA0KICAgICAgLy8gQSBkYXRlLCBwbHVzIHZhcmlvdXMgc2hvcnRoYW5kIHRpbWVzIG9mIGRheSBpdCBjb3VsZCBiZS4NCiAgICAgIGRhdGVQbHVzOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHEuZGF0ZVNob3J0aGFuZC5tYXAoZCA9PiBEQVRFX1NIT1JUSEFORFNbZF0oKSksIHEuZGF0ZSkuZGVzYygiZGF0ZSBpbiBmb3JtYXQgWVlZWS1NTVstRERUSEgtTU0tU1MuTVNdIG9yIGluIHNob3J0aGFuZCIpLA0KICAgICAgLy8gQSBkdXJhdGlvbiBvZiB0aW1lLg0KICAgICAgZHVyYXRpb25UeXBlOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KC4uLk9iamVjdC5rZXlzKERVUkFUSU9OX1RZUEVTKQ0KICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKQ0KICAgICAgICAgIC5tYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcpKSwNCiAgICAgIGR1cmF0aW9uOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHEubnVtYmVyLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZHVyYXRpb25UeXBlLCAoY291bnQsIF8sIHQpID0+IERVUkFUSU9OX1RZUEVTW3RdLm1hcFVuaXRzKHggPT4geCAqIGNvdW50KSkNCiAgICAgICAgICAuc2VwQnkxKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLm9yKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSkpDQogICAgICAgICAgLm1hcChkdXJhdGlvbnMgPT4gZHVyYXRpb25zLnJlZHVjZSgocCwgYykgPT4gcC5wbHVzKGMpKSkNCiAgICAgICAgICAuZGVzYygiZHVyYXRpb24gbGlrZSA0aHIybWluIiksDQogICAgICAvLyBBIHJhdyBudWxsIHZhbHVlLg0KICAgICAgcmF3TnVsbDogXyA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygibnVsbCIpLA0KICAgICAgLy8gU291cmNlIHBhcnNpbmcuDQogICAgICB0YWdTb3VyY2U6IHEgPT4gcS50YWcubWFwKHRhZyA9PiBTb3VyY2VzLnRhZyh0YWcpKSwNCiAgICAgIGNzdlNvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiY3N2KCIpLnNraXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5zdHJpbmcsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChfMSwgcGF0aCwgXzIpID0+IFNvdXJjZXMuY3N2KHBhdGgpKSwNCiAgICAgIGxpbmtJbmNvbWluZ1NvdXJjZTogcSA9PiBxLmxpbmsubWFwKGxpbmsgPT4gU291cmNlcy5saW5rKGxpbmsucGF0aCwgdHJ1ZSkpLA0KICAgICAgbGlua091dGdvaW5nU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJvdXRnb2luZygiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEubGluaywgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBsaW5rLCBfMikgPT4gU291cmNlcy5saW5rKGxpbmsucGF0aCwgZmFsc2UpKSwNCiAgICAgIGZvbGRlclNvdXJjZTogcSA9PiBxLnN0cmluZy5tYXAoc3RyID0+IFNvdXJjZXMuZm9sZGVyKHN0cikpLA0KICAgICAgcGFyZW5zU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIoIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5zb3VyY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBfMiwgZmllbGQsIF8zLCBfNCkgPT4gZmllbGQpLA0KICAgICAgbmVnYXRlU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCItIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIhIikpLCBxLmF0b21Tb3VyY2UsIChfLCBzb3VyY2UpID0+IFNvdXJjZXMubmVnYXRlKHNvdXJjZSkpLA0KICAgICAgYXRvbVNvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLnBhcmVuc1NvdXJjZSwgcS5uZWdhdGVTb3VyY2UsIHEubGlua091dGdvaW5nU291cmNlLCBxLmxpbmtJbmNvbWluZ1NvdXJjZSwgcS5mb2xkZXJTb3VyY2UsIHEudGFnU291cmNlLCBxLmNzdlNvdXJjZSksDQogICAgICBiaW5hcnlPcFNvdXJjZTogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5hdG9tU291cmNlLCBxLmJpbmFyeUJvb2xlYW5PcC5tYXAocyA9PiBzKSwgU291cmNlcy5iaW5hcnlPcCksDQogICAgICBzb3VyY2U6IHEgPT4gcS5iaW5hcnlPcFNvdXJjZSwNCiAgICAgIC8vIEZpZWxkIHBhcnNpbmcuDQogICAgICB2YXJpYWJsZUZpZWxkOiBxID0+IHEuaWRlbnRpZmllcg0KICAgICAgICAgIC5jaGFpbihyID0+IHsNCiAgICAgICAgICBpZiAoS0VZV09SRFMuaW5jbHVkZXMoci50b1VwcGVyQ2FzZSgpKSkgew0KICAgICAgICAgICAgICByZXR1cm4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5mYWlsKCJWYXJpYWJsZSBmaWVsZHMgY2Fubm90IGJlIGEga2V5d29yZCAoIiArIEtFWVdPUkRTLmpvaW4oIiBvciAiKSArICIpIik7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICByZXR1cm4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdWNjZWVkKEZpZWxkcy52YXJpYWJsZShyKSk7DQogICAgICAgICAgfQ0KICAgICAgfSkNCiAgICAgICAgICAuZGVzYygidmFyaWFibGUiKSwNCiAgICAgIG51bWJlckZpZWxkOiBxID0+IHEubnVtYmVyLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygibnVtYmVyIiksDQogICAgICBzdHJpbmdGaWVsZDogcSA9PiBxLnN0cmluZy5tYXAodmFsID0+IEZpZWxkcy5saXRlcmFsKHZhbCkpLmRlc2MoInN0cmluZyIpLA0KICAgICAgYm9vbEZpZWxkOiBxID0+IHEuYm9vbC5tYXAodmFsID0+IEZpZWxkcy5saXRlcmFsKHZhbCkpLmRlc2MoImJvb2xlYW4iKSwNCiAgICAgIGRhdGVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiZGF0ZSgiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmRhdGVQbHVzLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChwcmVmaXgsIF8xLCBkYXRlLCBfMiwgcG9zdGZpeCkgPT4gRmllbGRzLmxpdGVyYWwoZGF0ZSkpLmRlc2MoImRhdGUiKSwNCiAgICAgIGR1cmF0aW9uRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoImR1cigiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmR1cmF0aW9uLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChwcmVmaXgsIF8xLCBkdXIsIF8yLCBwb3N0Zml4KSA9PiBGaWVsZHMubGl0ZXJhbChkdXIpKS5kZXNjKCJkdXJhdGlvbiIpLA0KICAgICAgbnVsbEZpZWxkOiBxID0+IHEucmF3TnVsbC5tYXAoXyA9PiBGaWVsZHMuTlVMTCksDQogICAgICBsaW5rRmllbGQ6IHEgPT4gcS5saW5rLm1hcChmID0+IEZpZWxkcy5saXRlcmFsKGYpKSwNCiAgICAgIGxpc3RGaWVsZDogcSA9PiBxLmZpZWxkDQogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpKQ0KICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJbIikuc2tpcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiXSIpKSkNCiAgICAgICAgICAubWFwKGwgPT4gRmllbGRzLmxpc3QobCkpDQogICAgICAgICAgLmRlc2MoImxpc3QgKCdbMSwgMiwgM10nKSIpLA0KICAgICAgb2JqZWN0RmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocS5pZGVudGlmaWVyLm9yKHEuc3RyaW5nKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIjoiKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuZmllbGQsIChuYW1lLCBfc2VwLCB2YWx1ZSkgPT4gew0KICAgICAgICAgIHJldHVybiB7IG5hbWUsIHZhbHVlIH07DQogICAgICB9KQ0KICAgICAgICAgIC5zZXBCeShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkNCiAgICAgICAgICAud3JhcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygieyIpLnNraXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLnRoZW4ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIn0iKSkpDQogICAgICAgICAgLm1hcCh2YWxzID0+IHsNCiAgICAgICAgICBsZXQgcmVzID0ge307DQogICAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgdmFscykNCiAgICAgICAgICAgICAgcmVzW2VudHJ5Lm5hbWVdID0gZW50cnkudmFsdWU7DQogICAgICAgICAgcmV0dXJuIEZpZWxkcy5vYmplY3QocmVzKTsNCiAgICAgIH0pDQogICAgICAgICAgLmRlc2MoIm9iamVjdCAoJ3sgYTogMSwgYjogMiB9JykiKSwNCiAgICAgIGF0b21JbmxpbmVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLmRhdGUsIHEuZHVyYXRpb24ubWFwKGQgPT4gbm9ybWFsaXplRHVyYXRpb24oZCkpLCBxLnN0cmluZywgcS50YWcsIHEuZW1iZWRMaW5rLCBxLmJvb2wsIHEubnVtYmVyLCBxLnJhd051bGwpLA0KICAgICAgaW5saW5lRmllbGRMaXN0OiBxID0+IHEuYXRvbUlubGluZUZpZWxkLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLmxvb2thaGVhZChxLmF0b21JbmxpbmVGaWVsZCkpLA0KICAgICAgaW5saW5lRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocS5hdG9tSW5saW5lRmllbGQsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLmlubGluZUZpZWxkTGlzdCwgKGYsIF9zLCBsKSA9PiBbZl0uY29uY2F0KGwpKSwgcS5hdG9tSW5saW5lRmllbGQpLA0KICAgICAgYXRvbUZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KA0KICAgICAgLy8gUGxhY2UgZW1iZWQgbGlua3MgYWJvdmUgbmVnYXRlZCBmaWVsZHMgYXMgdGhleSBhcmUgdGhlIHNwZWNpYWwgcGFyc2VyIGNhc2UgJyFbW3RoaW5nXV0nIGFuZCBhcmUgZ2VuZXJhbGx5IHVuYW1iaWdpb3VzLg0KICAgICAgcS5lbWJlZExpbmsubWFwKGwgPT4gRmllbGRzLmxpdGVyYWwobCkpLCBxLm5lZ2F0ZWRGaWVsZCwgcS5saW5rRmllbGQsIHEubGlzdEZpZWxkLCBxLm9iamVjdEZpZWxkLCBxLmxhbWJkYUZpZWxkLCBxLnBhcmVuc0ZpZWxkLCBxLmJvb2xGaWVsZCwgcS5udW1iZXJGaWVsZCwgcS5zdHJpbmdGaWVsZCwgcS5kYXRlRmllbGQsIHEuZHVyYXRpb25GaWVsZCwgcS5udWxsRmllbGQsIHEudmFyaWFibGVGaWVsZCksDQogICAgICBpbmRleEZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHEuYXRvbUZpZWxkLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLmRvdFBvc3RmaXgsIHEuaW5kZXhQb3N0Zml4LCBxLmZ1bmN0aW9uUG9zdGZpeCkubWFueSgpLCAob2JqLCBwb3N0Zml4ZXMpID0+IHsNCiAgICAgICAgICBsZXQgcmVzdWx0ID0gb2JqOw0KICAgICAgICAgIGZvciAobGV0IHBvc3Qgb2YgcG9zdGZpeGVzKSB7DQogICAgICAgICAgICAgIHN3aXRjaCAocG9zdC50eXBlKSB7DQogICAgICAgICAgICAgICAgICBjYXNlICJkb3QiOg0KICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIEZpZWxkcy5saXRlcmFsKHBvc3QuZmllbGQpKTsNCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgIGNhc2UgImluZGV4IjoNCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuaW5kZXgocmVzdWx0LCBwb3N0LmZpZWxkKTsNCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoNCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuZnVuYyhyZXN1bHQsIHBvc3QuZmllbGRzKTsNCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgfSksDQogICAgICBuZWdhdGVkRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIiEiKSwgcS5pbmRleEZpZWxkLCAoXywgZmllbGQpID0+IEZpZWxkcy5uZWdhdGUoZmllbGQpKS5kZXNjKCJuZWdhdGVkIGZpZWxkIiksDQogICAgICBwYXJlbnNGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZmllbGQsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBfMiwgZmllbGQsIF8zLCBfNCkgPT4gZmllbGQpLA0KICAgICAgbGFtYmRhRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocS5pZGVudGlmaWVyDQogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpKQ0KICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIoIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiKSIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCI9PiIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5maWVsZCwgKGlkZW50LCBfaWdub3JlLCB2YWx1ZSkgPT4gew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsYW1iZGEiLCBhcmd1bWVudHM6IGlkZW50LCB2YWx1ZSB9Ow0KICAgICAgfSksDQogICAgICBkb3RQb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIuIiksIHEuaWRlbnRpZmllciwgKF8sIGZpZWxkKSA9PiB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRvdCIsIGZpZWxkOiBmaWVsZCB9Ow0KICAgICAgfSksDQogICAgICBpbmRleFBvc3RmaXg6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIlsiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmZpZWxkLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJdIiksIChfLCBfMiwgZmllbGQsIF8zLCBfNCkgPT4gew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJpbmRleCIsIGZpZWxkIH07DQogICAgICB9KSwNCiAgICAgIGZ1bmN0aW9uUG9zdGZpeDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZmllbGQuc2VwQnkocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChfLCBfMSwgZmllbGRzLCBfMiwgXzMpID0+IHsNCiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZnVuY3Rpb24iLCBmaWVsZHMgfTsNCiAgICAgIH0pLA0KICAgICAgLy8gVGhlIHByZWNlZGVuY2UgaGllcmFyY2h5IG9mIG9wZXJhdG9ycyAtIG11bHRpcGx5L2RpdmlkZSwgYWRkL3N1YnRyYWN0LCBjb21wYXJlLCBhbmQgdGhlbiBib29sZWFuIG9wZXJhdGlvbnMuDQogICAgICBiaW5hcnlNdWxEaXZGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5pbmRleEZpZWxkLCBxLmJpbmFyeU11bERpdiwgRmllbGRzLmJpbmFyeU9wKSwNCiAgICAgIGJpbmFyeVBsdXNNaW51c0ZpZWxkOiBxID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmJpbmFyeU11bERpdkZpZWxkLCBxLmJpbmFyeVBsdXNNaW51cywgRmllbGRzLmJpbmFyeU9wKSwNCiAgICAgIGJpbmFyeUNvbXBhcmVGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5iaW5hcnlQbHVzTWludXNGaWVsZCwgcS5iaW5hcnlDb21wYXJlT3AsIEZpZWxkcy5iaW5hcnlPcCksDQogICAgICBiaW5hcnlCb29sZWFuRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5Q29tcGFyZUZpZWxkLCBxLmJpbmFyeUJvb2xlYW5PcCwgRmllbGRzLmJpbmFyeU9wKSwNCiAgICAgIGJpbmFyeU9wRmllbGQ6IHEgPT4gcS5iaW5hcnlCb29sZWFuRmllbGQsDQogICAgICBmaWVsZDogcSA9PiBxLmJpbmFyeU9wRmllbGQsDQogIH0pOwoKICAvKiogUGFyc2UgaW5saW5lIGZpZWxkcyBhbmQgb3RoZXIgZW1iZWRkZWQgbWV0YWRhdGEgaW4gYSBsaW5lLiAqLw0KICAvKiogVGhlIHdyYXBwZXIgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhbiBpbmxpbmUgZmllbGQuICovDQogIGNvbnN0IElOTElORV9GSUVMRF9XUkFQUEVSUyA9IE9iamVjdC5mcmVlemUoew0KICAgICAgIlsiOiAiXSIsDQogICAgICAiKCI6ICIpIiwNCiAgfSk7DQogIC8qKg0KICAgKiBGaW5kIGEgbWF0Y2hpbmcgY2xvc2luZyBicmFja2V0IHRoYXQgb2NjdXJzIGF0IG9yIGFmdGVyIGBzdGFydGAsIHJlc3BlY3RpbmcgbmVzdGluZyBhbmQgZXNjYXBlcy4gSWYgZm91bmQsDQogICAqIHJldHVybnMgdGhlIHZhbHVlIGNvbnRhaW5lZCB3aXRoaW4gYW5kIHRoZSBzdHJpbmcgaW5kZXggYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgdmFsdWUuDQogICAqLw0KICBmdW5jdGlvbiBmaW5kQ2xvc2luZyhsaW5lLCBzdGFydCwgb3BlbiwgY2xvc2UpIHsNCiAgICAgIGxldCBuZXN0aW5nID0gMDsNCiAgICAgIGxldCBlc2NhcGVkID0gZmFsc2U7DQogICAgICBmb3IgKGxldCBpbmRleCA9IHN0YXJ0OyBpbmRleCA8IGxpbmUubGVuZ3RoOyBpbmRleCsrKSB7DQogICAgICAgICAgbGV0IGNoYXIgPSBsaW5lLmNoYXJBdChpbmRleCk7DQogICAgICAgICAgLy8gQWxsb3dzIGZvciBkb3VibGUgZXNjYXBlcyBsaWtlICdcXCcgdG8gYmUgcmVuZGVyZWQgbm9ybWFsbHkuDQogICAgICAgICAgaWYgKGNoYXIgPT0gIlxcIikgew0KICAgICAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWQ7DQogICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgIH0NCiAgICAgICAgICAvLyBJZiBlc2NhcGVkLCBpZ25vcmUgdGhlIG5leHQgY2hhcmFjdGVyIGZvciBjb21wdXRpbmcgbmVzdGluZywgcmVnYXJkbGVzcyBvZiB3aGF0IGl0IGlzLg0KICAgICAgICAgIGlmIChlc2NhcGVkKSB7DQogICAgICAgICAgICAgIGVzY2FwZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmIChjaGFyID09IG9wZW4pDQogICAgICAgICAgICAgIG5lc3RpbmcrKzsNCiAgICAgICAgICBlbHNlIGlmIChjaGFyID09IGNsb3NlKQ0KICAgICAgICAgICAgICBuZXN0aW5nLS07DQogICAgICAgICAgLy8gT25seSBvY2N1cnMgaWYgd2UgYXJlIG9uIGEgY2xvc2UgY2hhcmFjdGVyIGFuZCB0cmhlcmUgaXMgbm8gbW9yZSBuZXN0aW5nLg0KICAgICAgICAgIGlmIChuZXN0aW5nIDwgMCkNCiAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IGxpbmUuc3Vic3RyaW5nKHN0YXJ0LCBpbmRleCkudHJpbSgpLCBlbmRJbmRleDogaW5kZXggKyAxIH07DQogICAgICAgICAgZXNjYXBlZCA9IGZhbHNlOw0KICAgICAgfQ0KICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgfQ0KICAvKiogRmluZCB0aGUgJzo6JyBzZXBhcmF0b3IgaW4gYW4gaW5saW5lIGZpZWxkLiAqLw0KICBmdW5jdGlvbiBmaW5kU2VwYXJhdG9yKGxpbmUsIHN0YXJ0KSB7DQogICAgICBsZXQgc2VwID0gbGluZS5pbmRleE9mKCI6OiIsIHN0YXJ0KTsNCiAgICAgIGlmIChzZXAgPCAwKQ0KICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICByZXR1cm4geyBrZXk6IGxpbmUuc3Vic3RyaW5nKHN0YXJ0LCBzZXApLnRyaW0oKSwgdmFsdWVJbmRleDogc2VwICsgMiB9Ow0KICB9DQogIC8qKiBUcnkgdG8gY29tcGxldGVseSBwYXJzZSBhbiBpbmxpbmUgZmllbGQgc3RhcnRpbmcgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLiBBc3N1ZW1zIGBzdGFydGAgaXMgb24gYSB3cmFwcGluZyBjaGFyYWN0ZXIuICovDQogIGZ1bmN0aW9uIGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIHN0YXJ0KSB7DQogICAgICBsZXQgb3BlbiA9IGxpbmUuY2hhckF0KHN0YXJ0KTsNCiAgICAgIGxldCBrZXkgPSBmaW5kU2VwYXJhdG9yKGxpbmUsIHN0YXJ0ICsgMSk7DQogICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpDQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgIC8vIEZhaWwgdGhlIG1hdGNoIGlmIHdlIGZpbmQgYW55IHNlcGFyYXRvciBjaGFyYWN0ZXJzIChub3QgYWxsb3dlZCBpbiBrZXlzKS4NCiAgICAgIGZvciAobGV0IHNlcCBvZiBPYmplY3Qua2V5cyhJTkxJTkVfRklFTERfV1JBUFBFUlMpLmNvbmNhdChPYmplY3QudmFsdWVzKElOTElORV9GSUVMRF9XUkFQUEVSUykpKSB7DQogICAgICAgICAgaWYgKGtleS5rZXkuaW5jbHVkZXMoc2VwKSkNCiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgIH0NCiAgICAgIGxldCB2YWx1ZSA9IGZpbmRDbG9zaW5nKGxpbmUsIGtleS52YWx1ZUluZGV4LCBvcGVuLCBJTkxJTkVfRklFTERfV1JBUFBFUlNbb3Blbl0pOw0KICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpDQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgIHJldHVybiB7DQogICAgICAgICAga2V5OiBrZXkua2V5LA0KICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSwNCiAgICAgICAgICBzdGFydDogc3RhcnQsDQogICAgICAgICAgc3RhcnRWYWx1ZToga2V5LnZhbHVlSW5kZXgsDQogICAgICAgICAgZW5kOiB2YWx1ZS5lbmRJbmRleCwNCiAgICAgICAgICB3cmFwcGluZzogb3BlbiwNCiAgICAgIH07DQogIH0NCiAgLyoqIFBhcnNlIGEgdGV4dHVhbCBpbmxpbmUgZmllbGQgdmFsdWUgaW50byBzb21ldGhpbmcgd2UgY2FuIHdvcmsgd2l0aC4gKi8NCiAgZnVuY3Rpb24gcGFyc2VJbmxpbmVWYWx1ZSh2YWx1ZSkgew0KICAgICAgLy8gRW1wdHkgaW5saW5lIHZhbHVlcyAoaS5lLiwgbm8gdGV4dCkgc2hvdWxkIG1hcCB0byBudWxsIHRvIG1hdGNoIGxvbmctdGVybSBEYXRhdmlldyBzZW1hbnRpY3MuDQogICAgICAvLyBOdWxsIGlzIGFsc28gYSBtb3JlIHVuaXZlcnNhbCB0eXBlIHRvIGRlYWwgd2l0aCB0aGFuIHN0cmluZ3MsIHNpbmNlIGFsbCBmdW5jdGlvbnMgYWNjZXB0IG51bGxzLg0KICAgICAgaWYgKHZhbHVlLnRyaW0oKSA9PSAiIikNCiAgICAgICAgICByZXR1cm4gbnVsbDsNCiAgICAgIC8vIFRoZSBzdHJpcHBlZCBsaXRlcmFsIGZpZWxkIHBhcnNlciB1bmRlcnN0YW5kcyBhbGwgb2YgdGhlIG5vbi1hcnJheS9ub24tb2JqZWN0IGZpZWxkcyBhbmQgY2FuIHBhcnNlIHRoZW0gZm9yIHVzLg0KICAgICAgLy8gSW5saW5lIGZpZWxkIG9iamVjdHMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkOyBpbmxpbmUgYXJyYXkgb2JqZWN0cyBoYXZlIHRvIGJlIGhhbmRsZWQgYnkgdGhlIHBhcnNlcg0KICAgICAgLy8gc2VwYXJhdGVseS4NCiAgICAgIGxldCBpbmxpbmUgPSBFWFBSRVNTSU9OLmlubGluZUZpZWxkLnBhcnNlKHZhbHVlKTsNCiAgICAgIGlmIChpbmxpbmUuc3RhdHVzKQ0KICAgICAgICAgIHJldHVybiBpbmxpbmUudmFsdWU7DQogICAgICBlbHNlDQogICAgICAgICAgcmV0dXJuIHZhbHVlOw0KICB9DQogIC8qKiBFeHRyYWN0cyBpbmxpbmUgZmllbGRzIG9mIHRoZSBmb3JtICdba2V5OjogdmFsdWVdJyBmcm9tIGEgbGluZSBvZiB0ZXh0LiBUaGlzIGlzIGRvbmUgaW4gYSByZWxhdGl2ZWx5DQogICAqICJyb2J1c3QiIHdheSB0byBhdm9pZCBmYWlsaW5nIGR1ZSB0byBiYWQgbmVzdGluZyBvciBvdGhlciBpbnRlcmZlcmluZyBNYXJrZG93biBzeW1ib2xzOg0KICAgKg0KICAgKiAtIExvb2sgZm9yIGFueSB3cmFwcGVycyAoJ1snIGFuZCAnKCcpIGluIHRoZSBsaW5lLCB0cnlpbmcgdG8gcGFyc2Ugd2hhdGV2ZXIgY29tZXMgYWZ0ZXIgaXQgYXMgYW4gaW5saW5lIGtleTo6Lg0KICAgKiAtIElmIHN1Y2Nlc3NmdWwsIHNjYW4gdW50aWwgeW91IGZpbmQgYSBtYXRjaGluZyBlbmQgYnJhY2tldCwgYW5kIHBhcnNlIHdoYXRldmVyIHJlbWFpbnMgYXMgYW4gaW5saW5lIHZhbHVlLg0KICAgKi8NCiAgZnVuY3Rpb24gZXh0cmFjdElubGluZUZpZWxkcyhsaW5lLCBpbmNsdWRlVGFza0ZpZWxkcyA9IGZhbHNlKSB7DQogICAgICBsZXQgZmllbGRzID0gW107DQogICAgICBmb3IgKGxldCB3cmFwcGVyIG9mIE9iamVjdC5rZXlzKElOTElORV9GSUVMRF9XUkFQUEVSUykpIHsNCiAgICAgICAgICBsZXQgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyKTsNCiAgICAgICAgICB3aGlsZSAoZm91bmRJbmRleCA+PSAwKSB7DQogICAgICAgICAgICAgIGxldCBwYXJzZWRGaWVsZCA9IGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIGZvdW5kSW5kZXgpOw0KICAgICAgICAgICAgICBpZiAoIXBhcnNlZEZpZWxkKSB7DQogICAgICAgICAgICAgICAgICBmb3VuZEluZGV4ID0gbGluZS5pbmRleE9mKHdyYXBwZXIsIGZvdW5kSW5kZXggKyAxKTsNCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIGZpZWxkcy5wdXNoKHBhcnNlZEZpZWxkKTsNCiAgICAgICAgICAgICAgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyLCBwYXJzZWRGaWVsZC5lbmQpOw0KICAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgIGlmIChpbmNsdWRlVGFza0ZpZWxkcykNCiAgICAgICAgICBmaWVsZHMgPSBmaWVsZHMuY29uY2F0KGV4dHJhY3RTcGVjaWFsVGFza0ZpZWxkcyhsaW5lKSk7DQogICAgICBmaWVsZHMuc29ydCgoYSwgYikgPT4gYS5zdGFydCAtIGIuc3RhcnQpOw0KICAgICAgbGV0IGZpbHRlcmVkRmllbGRzID0gW107DQogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgIGlmIChpID09IDAgfHwgZmlsdGVyZWRGaWVsZHNbZmlsdGVyZWRGaWVsZHMubGVuZ3RoIC0gMV0uZW5kIDwgZmllbGRzW2ldLnN0YXJ0KSB7DQogICAgICAgICAgICAgIGZpbHRlcmVkRmllbGRzLnB1c2goZmllbGRzW2ldKTsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gZmlsdGVyZWRGaWVsZHM7DQogIH0NCiAgLyoqIFZhbGlkYXRlcyB0aGF0IGEgcmF3IGZpZWxkIG5hbWUgaGFzIGEgdmFsaWQgZm9ybS4gKi8NCiAgY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJUID0gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAobmV3IFJlZ0V4cChlbW9qaVJlZ2V4KCksICJ1IikpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvWzAtOVxwe0xldHRlcn1cd1xzXy8tXSsvdSkpDQogICAgICAubWFueSgpDQogICAgICAubWFwKHBhcnRzID0+IHBhcnRzLmpvaW4oIiIpKTsNCiAgY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJTRVIgPSBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvW14wLTlcd1xwe0xldHRlcn1dKi91KQ0KICAgICAgLnRoZW4oRlVMTF9MSU5FX0tFWV9QQVJUKQ0KICAgICAgLnNraXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1tfXCp+YF0qL3UpKTsNCiAgLyoqIEF0dGVtcHQgdG8gZXh0cmFjdCBhIGZ1bGwtbGluZSBmaWVsZCAoS2V5OjogVmFsdWUgY29uc3VtaW5nIHRoZSBlbnRpcmUgY29udGVudCBsaW5lKS4gKi8NCiAgZnVuY3Rpb24gZXh0cmFjdEZ1bGxMaW5lRmllbGQodGV4dCkgew0KICAgICAgbGV0IHNlcCA9IGZpbmRTZXBhcmF0b3IodGV4dCwgMCk7DQogICAgICBpZiAoIXNlcCkNCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOw0KICAgICAgLy8gV2UgbmVlZCB0byBwb3N0LXByb2Nlc3MgdGhlIGtleSB0byBkcm9wIHVubmVjZXNzYXJ5IG9wZW5pbmcgYW5ub3RhdGlvbnMgYXMgd2VsbCBhcw0KICAgICAgLy8gZHJvcCBzdXJyb3VuZGluZyBNYXJrZG93bi4NCiAgICAgIGxldCByZWFsS2V5ID0gRlVMTF9MSU5FX0tFWV9QQVJTRVIucGFyc2Uoc2VwLmtleSk7DQogICAgICBpZiAoIXJlYWxLZXkuc3RhdHVzKQ0KICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICByZXR1cm4gew0KICAgICAgICAgIGtleTogcmVhbEtleS52YWx1ZSwNCiAgICAgICAgICB2YWx1ZTogdGV4dC5zdWJzdHJpbmcoc2VwLnZhbHVlSW5kZXgpLnRyaW0oKSwNCiAgICAgICAgICBzdGFydDogMCwNCiAgICAgICAgICBzdGFydFZhbHVlOiBzZXAudmFsdWVJbmRleCwNCiAgICAgICAgICBlbmQ6IHRleHQubGVuZ3RoLA0KICAgICAgfTsNCiAgfQ0KICBjb25zdCBDUkVBVEVEX0RBVEVfUkVHRVggPSAvXHV7Mjc5NX1ccyooXGR7NH0tXGR7Mn0tXGR7Mn0pL3U7DQogIGNvbnN0IERVRV9EQVRFX1JFR0VYID0gLyg/Olx1ezFGNEM1fXxcdXsxRjRDNn18XHV7MUY1RDN9XHV7RkUwRn0/KVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsNCiAgY29uc3QgRE9ORV9EQVRFX1JFR0VYID0gL1x1ezI3MDV9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91Ow0KICBjb25zdCBTQ0hFRFVMRURfREFURV9SRUdFWCA9IC9bXHV7MjNGM31cdXsyMzFCfV1ccyooXGR7NH0tXGR7Mn0tXGR7Mn0pL3U7DQogIGNvbnN0IFNUQVJUX0RBVEVfUkVHRVggPSAvXHV7MUY2RUJ9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91Ow0KICBjb25zdCBFTU9KSV9SRUdFWEVTID0gWw0KICAgICAgeyByZWdleDogQ1JFQVRFRF9EQVRFX1JFR0VYLCBrZXk6ICJjcmVhdGVkIiB9LA0KICAgICAgeyByZWdleDogU1RBUlRfREFURV9SRUdFWCwga2V5OiAic3RhcnQiIH0sDQogICAgICB7IHJlZ2V4OiBTQ0hFRFVMRURfREFURV9SRUdFWCwga2V5OiAic2NoZWR1bGVkIiB9LA0KICAgICAgeyByZWdleDogRFVFX0RBVEVfUkVHRVgsIGtleTogImR1ZSIgfSwNCiAgICAgIHsgcmVnZXg6IERPTkVfREFURV9SRUdFWCwga2V5OiAiY29tcGxldGlvbiIgfSwNCiAgXTsNCiAgLyoqIFBhcnNlIHNwZWNpYWwgY29tcGxldGVkL2R1ZS9kb25lIHRhc2sgZmllbGRzIHdoaWNoIGFyZSBtYXJrZWQgdmlhIGVtb2ppLiAqLw0KICBmdW5jdGlvbiBleHRyYWN0U3BlY2lhbFRhc2tGaWVsZHMobGluZSkgew0KICAgICAgbGV0IHJlc3VsdHMgPSBbXTsNCiAgICAgIGZvciAobGV0IHsgcmVnZXgsIGtleSB9IG9mIEVNT0pJX1JFR0VYRVMpIHsNCiAgICAgICAgICBjb25zdCBtYXRjaCA9IHJlZ2V4LmV4ZWMobGluZSk7DQogICAgICAgICAgaWYgKCFtYXRjaCkNCiAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgcmVzdWx0cy5wdXNoKHsNCiAgICAgICAgICAgICAga2V5LA0KICAgICAgICAgICAgICB2YWx1ZTogbWF0Y2hbMV0sDQogICAgICAgICAgICAgIHN0YXJ0OiBtYXRjaC5pbmRleCwNCiAgICAgICAgICAgICAgc3RhcnRWYWx1ZTogbWF0Y2guaW5kZXggKyAxLA0KICAgICAgICAgICAgICBlbmQ6IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoLA0KICAgICAgICAgICAgICB3cmFwcGluZzogImVtb2ppLXNob3J0aGFuZCIsDQogICAgICAgICAgfSk7DQogICAgICB9DQogICAgICByZXR1cm4gcmVzdWx0czsNCiAgfQoKICAvKiogQWxsIGV4dHJhY3RlZCBtYXJrZG93biBmaWxlIG1ldGFkYXRhIG9idGFpbmVkIGZyb20gYSBmaWxlLiAqLw0KICBjbGFzcyBQYWdlTWV0YWRhdGEgew0KICAgICAgY29uc3RydWN0b3IocGF0aCwgaW5pdCkgew0KICAgICAgICAgIHRoaXMucGF0aCA9IHBhdGg7DQogICAgICAgICAgdGhpcy5maWVsZHMgPSBuZXcgTWFwKCk7DQogICAgICAgICAgdGhpcy5mcm9udG1hdHRlciA9IHt9Ow0KICAgICAgICAgIHRoaXMudGFncyA9IG5ldyBTZXQoKTsNCiAgICAgICAgICB0aGlzLmFsaWFzZXMgPSBuZXcgU2V0KCk7DQogICAgICAgICAgdGhpcy5saW5rcyA9IFtdOw0KICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7DQogICAgICAgICAgdGhpcy5saXN0cyA9ICh0aGlzLmxpc3RzIHx8IFtdKS5tYXAobCA9PiBuZXcgTGlzdEl0ZW0obCkpOw0KICAgICAgfQ0KICAgICAgLyoqIENhbm9uaWNhbGl6ZSByYXcgbGlua3MgYW5kIG90aGVyIGRhdGEgaW4gcGFydGlhbCBkYXRhIHdpdGggbm9ybWFsaXplcnMsIHJldHVybmluZyBhIGNvbXBsZXRlZCBvYmplY3QuICovDQogICAgICBzdGF0aWMgY2Fub25pY2FsaXplKGRhdGEsIGxpbmtOb3JtYWxpemVyKSB7DQogICAgICAgICAgLy8gTXV0YXRlIHRoZSBkYXRhIGZvciBub3csIHdoaWNoIGlzIHByb2JhYmx5IGEgYmFkIGlkZWEgYnV0Li4uIGFsbCB3ZWxsLg0KICAgICAgICAgIGlmIChkYXRhLmZyb250bWF0dGVyKSB7DQogICAgICAgICAgICAgIGRhdGEuZnJvbnRtYXR0ZXIgPSBWYWx1ZXMubWFwTGVhdmVzKGRhdGEuZnJvbnRtYXR0ZXIsIHQgPT4gVmFsdWVzLmlzTGluayh0KSA/IGxpbmtOb3JtYWxpemVyKHQpIDogdCk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmIChkYXRhLmZpZWxkcykgew0KICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgZGF0YS5maWVsZHMuZW50cmllcygpKSB7DQogICAgICAgICAgICAgICAgICBkYXRhLmZpZWxkcy5zZXQoa2V5LCBWYWx1ZXMubWFwTGVhdmVzKHZhbHVlLCB0ID0+IChWYWx1ZXMuaXNMaW5rKHQpID8gbGlua05vcm1hbGl6ZXIodCkgOiB0KSkpOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmIChkYXRhLmxpc3RzKSB7DQogICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgZGF0YS5saXN0cykgew0KICAgICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGl0ZW0uZmllbGRzLmVudHJpZXMoKSkgew0KICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZmllbGRzLnNldChrZXksIHZhbHVlLm1hcCh4ID0+IFZhbHVlcy5tYXBMZWF2ZXMoeCwgdCA9PiAoVmFsdWVzLmlzTGluayh0KSA/IGxpbmtOb3JtYWxpemVyKHQpIDogdCkpKSk7DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgaWYgKGRhdGEubGlua3MpIHsNCiAgICAgICAgICAgICAgZGF0YS5saW5rcyA9IGRhdGEubGlua3MubWFwKGwgPT4gbGlua05vcm1hbGl6ZXIobCkpOw0KICAgICAgICAgIH0NCiAgICAgICAgICAvLyBUaGlzIGlzIHByZXR0eSB1Z2x5LCBidXQgaXQncyBub3QgcG9zc2libGUgdG8gbm9ybWFsaXplIG9uIHRoZSB3b3JrZXIgdGhyZWFkIHRoYXQgZG9lcyBwYXJzaW5nLg0KICAgICAgICAgIC8vIFRoZSBiZXN0IHdheSB0byBpbXByb3ZlIHRoaXMgaXMgdG8gaW5zdGVhZCBqdXN0IGNhbm9uaWNhbGl6ZSB0aGUgZW50aXJlIGRhdGEgb2JqZWN0OyBJIGNhbiB0cnkgdG8NCiAgICAgICAgICAvLyBvcHRpbWl6ZSBgVmFsdWVzLm1hcExlYXZlc2AgdG8gb25seSBtdXRhdGUgaWYgaXQgYWN0dWFsbHkgY2hhbmdlcyB0aGluZ3MuDQogICAgICAgICAgcmV0dXJuIG5ldyBQYWdlTWV0YWRhdGEoZGF0YS5wYXRoLCBkYXRhKTsNCiAgICAgIH0NCiAgICAgIC8qKiBUaGUgbmFtZSAoYmFzZWQgb24gcGF0aCkgb2YgdGhpcyBmaWxlLiAqLw0KICAgICAgbmFtZSgpIHsNCiAgICAgICAgICByZXR1cm4gZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCk7DQogICAgICB9DQogICAgICAvKiogVGhlIGNvbnRhaW5pbmcgZm9sZGVyIChiYXNlZCBvbiBwYXRoKSBvZiB0aGlzIGZpbGUuICovDQogICAgICBmb2xkZXIoKSB7DQogICAgICAgICAgcmV0dXJuIGdldFBhcmVudEZvbGRlcih0aGlzLnBhdGgpOw0KICAgICAgfQ0KICAgICAgLyoqIFRoZSBleHRlbnNpb24gb2YgdGhpcyBmaWxlIChsaWtlbHkgJ21kJykuICovDQogICAgICBleHRlbnNpb24oKSB7DQogICAgICAgICAgcmV0dXJuIGdldEV4dGVuc2lvbih0aGlzLnBhdGgpOw0KICAgICAgfQ0KICAgICAgLyoqIFJldHVybiBhIHNldCBvZiB0YWdzIEFORCBhbGwgb2YgdGhlaXIgcGFyZW50IHRhZ3MgKHNvICNoZWxsby95ZXMgd291bGQgYmVjb21lICNoZWxsbywgI2hlbGxvL3llcykuICovDQogICAgICBmdWxsVGFncygpIHsNCiAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpOw0KICAgICAgICAgIGZvciAobGV0IHRhZyBvZiB0aGlzLnRhZ3MpIHsNCiAgICAgICAgICAgICAgZm9yIChsZXQgc3VidGFnIG9mIGV4dHJhY3RTdWJ0YWdzKHRhZykpDQogICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHN1YnRhZyk7DQogICAgICAgICAgfQ0KICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICB9DQogICAgICAvKiogQ29udmVydCBhbGwgbGlua3MgaW4gdGhpcyBmaWxlIHRvIGZpbGUgbGlua3MuICovDQogICAgICBmaWxlTGlua3MoKSB7DQogICAgICAgICAgLy8gV2Ugd2FudCB0byBtYWtlIHRoZW0gZGlzdGluY3QsIGJ1dCB3aGVyZSBsaW5rcyBhcmUgbm90IHJhdyBsaW5rcyB3ZQ0KICAgICAgICAgIC8vIG5vdyBrZWVwIHRoZSBhZGRpdGlvbmFsIG1ldGFkYXRhLg0KICAgICAgICAgIGxldCBkaXN0aW5jdExpbmtzID0gbmV3IFNldCh0aGlzLmxpbmtzKTsNCiAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShkaXN0aW5jdExpbmtzKTsNCiAgICAgIH0NCiAgICAgIC8qKiBNYXAgdGhpcyBtZXRhZGF0YSB0byBhIGZ1bGwgb2JqZWN0OyB1c2VzIHRoZSBpbmRleCBmb3IgYWRkaXRpb25hbCBkYXRhIGxvb2t1cHMuICAqLw0KICAgICAgc2VyaWFsaXplKGluZGV4LCBjYWNoZSkgew0KICAgICAgICAgIC8vIENvbnZlcnQgbGlzdCBpdGVtcyB2aWEgdGhlIGNhbm9uaWNhbGl6YXRpb24gY2FjaGUuDQogICAgICAgICAgbGV0IHJlYWxDYWNoZSA9IGNhY2hlICE9PSBudWxsICYmIGNhY2hlICE9PSB2b2lkIDAgPyBjYWNoZSA6IG5ldyBMaXN0U2VyaWFsaXphdGlvbkNhY2hlKHRoaXMubGlzdHMpOw0KICAgICAgICAgIGxldCByZXN1bHQgPSB7DQogICAgICAgICAgICAgIGZpbGU6IHsNCiAgICAgICAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCwNCiAgICAgICAgICAgICAgICAgIGZvbGRlcjogdGhpcy5mb2xkZXIoKSwNCiAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSgpLA0KICAgICAgICAgICAgICAgICAgbGluazogTGluay5maWxlKHRoaXMucGF0aCksDQogICAgICAgICAgICAgICAgICBvdXRsaW5rczogdGhpcy5maWxlTGlua3MoKSwNCiAgICAgICAgICAgICAgICAgIGlubGlua3M6IEFycmF5LmZyb20oaW5kZXgubGlua3MuZ2V0SW52ZXJzZSh0aGlzLnBhdGgpKS5tYXAobCA9PiBMaW5rLmZpbGUobCkpLA0KICAgICAgICAgICAgICAgICAgZXRhZ3M6IEFycmF5LmZyb20odGhpcy50YWdzKSwNCiAgICAgICAgICAgICAgICAgIHRhZ3M6IEFycmF5LmZyb20odGhpcy5mdWxsVGFncygpKSwNCiAgICAgICAgICAgICAgICAgIGFsaWFzZXM6IEFycmF5LmZyb20odGhpcy5hbGlhc2VzKSwNCiAgICAgICAgICAgICAgICAgIGxpc3RzOiB0aGlzLmxpc3RzLm1hcChsID0+IHJlYWxDYWNoZS5nZXQobC5saW5lKSksDQogICAgICAgICAgICAgICAgICB0YXNrczogdGhpcy5saXN0cy5maWx0ZXIobCA9PiAhIWwudGFzaykubWFwKGwgPT4gcmVhbENhY2hlLmdldChsLmxpbmUpKSwNCiAgICAgICAgICAgICAgICAgIGN0aW1lOiB0aGlzLmN0aW1lLA0KICAgICAgICAgICAgICAgICAgY2RheTogc3RyaXBUaW1lKHRoaXMuY3RpbWUpLA0KICAgICAgICAgICAgICAgICAgbXRpbWU6IHRoaXMubXRpbWUsDQogICAgICAgICAgICAgICAgICBtZGF5OiBzdHJpcFRpbWUodGhpcy5tdGltZSksDQogICAgICAgICAgICAgICAgICBzaXplOiB0aGlzLnNpemUsDQogICAgICAgICAgICAgICAgICBzdGFycmVkOiBpbmRleC5zdGFycmVkLnN0YXJyZWQodGhpcy5wYXRoKSwNCiAgICAgICAgICAgICAgICAgIGZyb250bWF0dGVyOiBWYWx1ZXMuZGVlcENvcHkodGhpcy5mcm9udG1hdHRlciksDQogICAgICAgICAgICAgICAgICBleHQ6IHRoaXMuZXh0ZW5zaW9uKCksDQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgfTsNCiAgICAgICAgICAvLyBBZGQgdGhlIGN1cnJlbnQgZGF5IGlmIHByZXNlbnQuDQogICAgICAgICAgaWYgKHRoaXMuZGF5KQ0KICAgICAgICAgICAgICByZXN1bHQuZmlsZS5kYXkgPSB0aGlzLmRheTsNCiAgICAgICAgICAvLyBUaGVuIGFwcGVuZCB0aGUgY29tcHV0ZWQgZmllbGRzLg0KICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiB0aGlzLmZpZWxkcy5lbnRyaWVzKCkpIHsNCiAgICAgICAgICAgICAgaWYgKGtleSBpbiByZXN1bHQpDQogICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gRG9uJ3QgYWxsb3cgZmllbGRzIHRvIG92ZXJyaWRlIGV4aXN0aW5nIGtleXMuDQogICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7DQogICAgICAgICAgfQ0KICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICB9DQogIH0NCiAgLyoqIEEgbGlzdCBpdGVtIGluc2lkZSBvZiBhIGxpc3QuICovDQogIGNsYXNzIExpc3RJdGVtIHsNCiAgICAgIGNvbnN0cnVjdG9yKGluaXQpIHsNCiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpOw0KICAgICAgICAgIHRoaXMuZmllbGRzID0gdGhpcy5maWVsZHMgfHwgbmV3IE1hcCgpOw0KICAgICAgICAgIHRoaXMudGFncyA9IHRoaXMudGFncyB8fCBuZXcgU2V0KCk7DQogICAgICAgICAgdGhpcy5jaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4gfHwgW107DQogICAgICAgICAgdGhpcy5saW5rcyA9IHRoaXMubGlua3MgfHwgW107DQogICAgICB9DQogICAgICBpZCgpIHsNCiAgICAgICAgICByZXR1cm4gYCR7dGhpcy5maWxlKCkucGF0aH0tJHt0aGlzLmxpbmV9YDsNCiAgICAgIH0NCiAgICAgIGZpbGUoKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXMubGluay50b0ZpbGUoKTsNCiAgICAgIH0NCiAgICAgIG1hcmtkb3duKCkgew0KICAgICAgICAgIGlmICh0aGlzLnRhc2spDQogICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnN5bWJvbH0gWyR7dGhpcy50YXNrLmNvbXBsZXRlZCA/ICJ4IiA6ICIgIn1dICR7dGhpcy50ZXh0fWA7DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5zeW1ib2x9ICR7dGhpcy50ZXh0fWA7DQogICAgICB9DQogICAgICBjcmVhdGVkKCkgew0KICAgICAgICAgIHZhciBfYSwgX2IsIF9jOw0KICAgICAgICAgIHJldHVybiAoX2MgPSAoKF9iID0gKF9hID0gdGhpcy5maWVsZHMuZ2V0KCJjcmVhdGVkIikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMuZmllbGRzLmdldCgiY3RpbWUiKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGhpcy5maWVsZHMuZ2V0KCJjZGF5IikpKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NbMF07DQogICAgICB9DQogICAgICBkdWUoKSB7DQogICAgICAgICAgdmFyIF9hLCBfYiwgX2M7DQogICAgICAgICAgcmV0dXJuIChfYyA9ICgoX2IgPSAoX2EgPSB0aGlzLmZpZWxkcy5nZXQoImR1ZSIpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmZpZWxkcy5nZXQoImR1ZXRpbWUiKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGhpcy5maWVsZHMuZ2V0KCJkdWVkYXkiKSkpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY1swXTsNCiAgICAgIH0NCiAgICAgIGNvbXBsZXRlZCgpIHsNCiAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7DQogICAgICAgICAgcmV0dXJuIChfZCA9ICgoX2MgPSAoX2IgPSAoX2EgPSB0aGlzLmZpZWxkcy5nZXQoImNvbXBsZXRlZCIpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmZpZWxkcy5nZXQoImNvbXBsZXRpb24iKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGhpcy5maWVsZHMuZ2V0KCJjb21wdGltZSIpKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiB0aGlzLmZpZWxkcy5nZXQoImNvbXBkYXkiKSkpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZFswXTsNCiAgICAgIH0NCiAgICAgIHN0YXJ0KCkgew0KICAgICAgICAgIHZhciBfYTsNCiAgICAgICAgICByZXR1cm4gKF9hID0gdGhpcy5maWVsZHMuZ2V0KCJzdGFydCIpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMF07DQogICAgICB9DQogICAgICBzY2hlZHVsZWQoKSB7DQogICAgICAgICAgdmFyIF9hOw0KICAgICAgICAgIHJldHVybiAoX2EgPSB0aGlzLmZpZWxkcy5nZXQoInNjaGVkdWxlZCIpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMF07DQogICAgICB9DQogICAgICAvKiogQ3JlYXRlIGFuIEFQSS1mcmllbmRseSBjb3B5IG9mIHRoaXMgbGlzdCBpdGVtLiBEZS1kdXBsaWNhdGlvbiBpcyBkb25lIHZpYSB0aGUgcHJvdmlkZWQgY2FjaGUuICovDQogICAgICBzZXJpYWxpemUoY2FjaGUpIHsNCiAgICAgICAgICAvLyBNYXAgY2hpbGRyZW4gdG8gdGhlaXIgc2VyaWFsaXplZC9kZS1kdXBsaWNhdGVkIGVxdWl2YWxlbnRzIHJpZ2h0IGF3YXkuDQogICAgICAgICAgbGV0IGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5tYXAobCA9PiBjYWNoZS5nZXQobCkpLmZpbHRlcigobCkgPT4gbCAhPT0gdW5kZWZpbmVkKTsNCiAgICAgICAgICBsZXQgcmVzdWx0ID0gew0KICAgICAgICAgICAgICBzeW1ib2w6IHRoaXMuc3ltYm9sLA0KICAgICAgICAgICAgICBsaW5rOiB0aGlzLmxpbmssDQogICAgICAgICAgICAgIHNlY3Rpb246IHRoaXMuc2VjdGlvbiwNCiAgICAgICAgICAgICAgdGV4dDogdGhpcy50ZXh0LA0KICAgICAgICAgICAgICB0YWdzOiBBcnJheS5mcm9tKHRoaXMudGFncyksDQogICAgICAgICAgICAgIGxpbmU6IHRoaXMubGluZSwNCiAgICAgICAgICAgICAgbGluZUNvdW50OiB0aGlzLmxpbmVDb3VudCwNCiAgICAgICAgICAgICAgbGlzdDogdGhpcy5saXN0LA0KICAgICAgICAgICAgICBvdXRsaW5rczogQXJyYXkuZnJvbSh0aGlzLmxpbmtzKSwNCiAgICAgICAgICAgICAgcGF0aDogdGhpcy5saW5rLnBhdGgsDQogICAgICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbiwNCiAgICAgICAgICAgICAgdGFzazogISF0aGlzLnRhc2ssDQogICAgICAgICAgICAgIGFubm90YXRlZDogdGhpcy5maWVsZHMuc2l6ZSA+IDAsDQogICAgICAgICAgICAgIHBvc2l0aW9uOiBWYWx1ZXMuZGVlcENvcHkodGhpcy5wb3NpdGlvbiksDQogICAgICAgICAgICAgIHN1YnRhc2tzOiBjaGlsZHJlbiwNCiAgICAgICAgICAgICAgcmVhbDogISF0aGlzLnRhc2ssDQogICAgICAgICAgICAgIGhlYWRlcjogdGhpcy5zZWN0aW9uLCAvLyBAZGVwcmVjYXRlZCwgdXNlICdpdGVtLnNlY3Rpb24nIGluc3RlYWQuDQogICAgICAgICAgfTsNCiAgICAgICAgICBpZiAodGhpcy5wYXJlbnQgfHwgdGhpcy5wYXJlbnQgPT09IDApDQogICAgICAgICAgICAgIHJlc3VsdC5wYXJlbnQgPSB0aGlzLnBhcmVudDsNCiAgICAgICAgICBpZiAodGhpcy5ibG9ja0lkKQ0KICAgICAgICAgICAgICByZXN1bHQuYmxvY2tJZCA9IHRoaXMuYmxvY2tJZDsNCiAgICAgICAgICBhZGRGaWVsZHModGhpcy5maWVsZHMsIHJlc3VsdCk7DQogICAgICAgICAgaWYgKHRoaXMudGFzaykgew0KICAgICAgICAgICAgICByZXN1bHQuc3RhdHVzID0gdGhpcy50YXNrLnN0YXR1czsNCiAgICAgICAgICAgICAgcmVzdWx0LmNoZWNrZWQgPSB0aGlzLnRhc2suY2hlY2tlZDsNCiAgICAgICAgICAgICAgcmVzdWx0LmNvbXBsZXRlZCA9IHRoaXMudGFzay5jb21wbGV0ZWQ7DQogICAgICAgICAgICAgIHJlc3VsdC5mdWxseUNvbXBsZXRlZCA9IHRoaXMudGFzay5mdWxseUNvbXBsZXRlZDsNCiAgICAgICAgICAgICAgbGV0IGNyZWF0ZWQgPSB0aGlzLmNyZWF0ZWQoKSwgZHVlID0gdGhpcy5kdWUoKSwgY29tcGxldGVkID0gdGhpcy5jb21wbGV0ZWQoKSwgc3RhcnQgPSB0aGlzLnN0YXJ0KCksIHNjaGVkdWxlZCA9IHRoaXMuc2NoZWR1bGVkKCk7DQogICAgICAgICAgICAgIGlmIChjcmVhdGVkKQ0KICAgICAgICAgICAgICAgICAgcmVzdWx0LmNyZWF0ZWQgPSBWYWx1ZXMuZGVlcENvcHkoY3JlYXRlZCk7DQogICAgICAgICAgICAgIGlmIChkdWUpDQogICAgICAgICAgICAgICAgICByZXN1bHQuZHVlID0gVmFsdWVzLmRlZXBDb3B5KGR1ZSk7DQogICAgICAgICAgICAgIGlmIChjb21wbGV0ZWQpDQogICAgICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGlvbiA9IFZhbHVlcy5kZWVwQ29weShjb21wbGV0ZWQpOw0KICAgICAgICAgICAgICBpZiAoc3RhcnQpDQogICAgICAgICAgICAgICAgICByZXN1bHQuc3RhcnQgPSBWYWx1ZXMuZGVlcENvcHkoc3RhcnQpOw0KICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVkKQ0KICAgICAgICAgICAgICAgICAgcmVzdWx0LnNjaGVkdWxlZCA9IFZhbHVlcy5kZWVwQ29weShzY2hlZHVsZWQpOw0KICAgICAgICAgIH0NCiAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgfQ0KICB9DQogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KICAvLyBDb252ZXJzaW9uIC8gU2VyaWFsaXphdGlvbiBVdGlsaXRpZXMgLy8NCiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogIC8qKiBEZS1kdXBsaWNhdGVzIGxpc3QgaXRlbXMgYWNyb3NzIHNlY3Rpb24gbWV0YWRhdGEgYW5kIHBhZ2UgbWV0YWRhdGEuICovDQogIGNsYXNzIExpc3RTZXJpYWxpemF0aW9uQ2FjaGUgew0KICAgICAgY29uc3RydWN0b3IobGlzdEl0ZW1zKSB7DQogICAgICAgICAgdGhpcy5saXN0SXRlbXMgPSB7fTsNCiAgICAgICAgICB0aGlzLmNhY2hlID0ge307DQogICAgICAgICAgdGhpcy5zZWVuID0gbmV3IFNldCgpOw0KICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgbGlzdEl0ZW1zKQ0KICAgICAgICAgICAgICB0aGlzLmxpc3RJdGVtc1tpdGVtLmxpbmVdID0gaXRlbTsNCiAgICAgIH0NCiAgICAgIGdldChsaW5lbm8pIHsNCiAgICAgICAgICBpZiAobGluZW5vIGluIHRoaXMuY2FjaGUpDQogICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhY2hlW2xpbmVub107DQogICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWVuLmhhcyhsaW5lbm8pKSB7DQogICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBEYXRhdmlldzogRW5jb3VudGVyZWQgYSBjaXJjdWxhciBsaXN0IChsaW5lIG51bWJlciAke2xpbmVub307IGNoaWxkcmVuICR7dGhpcy5saXN0SXRlbXNbbGluZW5vXS5jaGlsZHJlbi5qb2luKCIsICIpfSlgKTsNCiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgICAgICB9DQogICAgICAgICAgdGhpcy5zZWVuLmFkZChsaW5lbm8pOw0KICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmxpc3RJdGVtc1tsaW5lbm9dLnNlcmlhbGl6ZSh0aGlzKTsNCiAgICAgICAgICB0aGlzLmNhY2hlW2xpbmVub10gPSByZXN1bHQ7DQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgIH0NCiAgfQ0KICBmdW5jdGlvbiBhZGRGaWVsZHMoZmllbGRzLCB0YXJnZXQpIHsNCiAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlc10gb2YgZmllbGRzLmVudHJpZXMoKSkgew0KICAgICAgICAgIGlmIChrZXkgaW4gdGFyZ2V0KQ0KICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICB0YXJnZXRba2V5XSA9IHZhbHVlcy5sZW5ndGggPT0gMSA/IHZhbHVlc1swXSA6IHZhbHVlczsNCiAgICAgIH0NCiAgICAgIHJldHVybiB0YXJnZXQ7DQogIH0KCiAgLyoqIENvbW1vbiB1dGlsaXRpZXMgZm9yIGV4dHJhY3RpbmcgdGFncywgbGlua3MsIGFuZCBvdGhlciBidXNpbmVzcyBmcm9tIG1ldGFkYXRhLiAqLw0KICBjb25zdCBQT1RFTlRJQUxfVEFHX01BVENIRVIgPSAvI1teXHMsO1wuOiFcPyciYCgpXFtcXVx7XH1dKy9naXU7DQogIC8qKiBFeHRyYWN0IGFsbCB0YWdzIGZyb20gdGhlIGdpdmVuIHNvdXJjZSBzdHJpbmcuICovDQogIGZ1bmN0aW9uIGV4dHJhY3RUYWdzJDEoc291cmNlKSB7DQogICAgICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpOw0KICAgICAgbGV0IG1hdGNoZXMgPSBzb3VyY2UubWF0Y2hBbGwoUE9URU5USUFMX1RBR19NQVRDSEVSKTsNCiAgICAgIGZvciAobGV0IG1hdGNoIG9mIG1hdGNoZXMpIHsNCiAgICAgICAgICBsZXQgcGFyc2VkID0gRVhQUkVTU0lPTi50YWcucGFyc2UobWF0Y2hbMF0pOw0KICAgICAgICAgIGlmIChwYXJzZWQuc3RhdHVzKQ0KICAgICAgICAgICAgICByZXN1bHQuYWRkKHBhcnNlZC52YWx1ZSk7DQogICAgICB9DQogICAgICByZXR1cm4gcmVzdWx0Ow0KICB9CgogIC8qKiBJbXBvcnRlciBmb3IgbWFya2Rvd24gZG9jdW1lbnRzLiAqLw0KICAvKiogRXh0cmFjdCBtYXJrZG93biBtZXRhZGF0YSBmcm9tIHRoZSBnaXZlbiBPYnNpZGlhbiBtYXJrZG93biBmaWxlLiAqLw0KICBmdW5jdGlvbiBwYXJzZVBhZ2UocGF0aCwgY29udGVudHMsIHN0YXQsIG1ldGFkYXRhKSB7DQogICAgICBsZXQgdGFncyA9IG5ldyBTZXQoKTsNCiAgICAgIGxldCBhbGlhc2VzID0gbmV3IFNldCgpOw0KICAgICAgbGV0IGZpZWxkcyA9IG5ldyBNYXAoKTsNCiAgICAgIGxldCBsaW5rcyA9IFtdOw0KICAgICAgLy8gRmlsZSB0YWdzLCBpbmNsdWRpbmcgZnJvbnQtbWF0dGVyIGFuZCBpbi1maWxlIHRhZ3MuDQogICAgICAobWV0YWRhdGEudGFncyB8fCBbXSkuZm9yRWFjaCh0ID0+IHRhZ3MuYWRkKHQudGFnLnN0YXJ0c1dpdGgoIiMiKSA/IHQudGFnIDogIiMiICsgdC50YWcpKTsNCiAgICAgIC8vIEZyb250LW1hdHRlciBmaWxlIHRhZ3MsIGFsaWFzZXMsIEFORCBmcm9udG1hdHRlciBwcm9wZXJ0aWVzLg0KICAgICAgaWYgKG1ldGFkYXRhLmZyb250bWF0dGVyKSB7DQogICAgICAgICAgZm9yIChsZXQgdGFnIG9mIGV4dHJhY3RUYWdzKG1ldGFkYXRhLmZyb250bWF0dGVyKSkgew0KICAgICAgICAgICAgICBpZiAoIXRhZy5zdGFydHNXaXRoKCIjIikpDQogICAgICAgICAgICAgICAgICB0YWcgPSAiIyIgKyB0YWc7DQogICAgICAgICAgICAgIHRhZ3MuYWRkKHRhZyk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGZvciAobGV0IGFsaWFzIG9mIGV4dHJhY3RBbGlhc2VzKG1ldGFkYXRhLmZyb250bWF0dGVyKSB8fCBbXSkNCiAgICAgICAgICAgICAgYWxpYXNlcy5hZGQoYWxpYXMpOw0KICAgICAgICAgIGxldCBmcm9udEZpZWxkcyA9IHBhcnNlRnJvbnRtYXR0ZXIobWV0YWRhdGEuZnJvbnRtYXR0ZXIpOw0KICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmcm9udEZpZWxkcykpIHsNCiAgICAgICAgICAgICAgaWYgKGtleSA9PSAicG9zaXRpb24iKQ0KICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgIGFkZElubGluZUZpZWxkKGtleSwgdmFsdWUsIGZpZWxkcyk7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgLy8gTGlua3MgaW4gbWV0YWRhdGEuDQogICAgICBjb25zdCBsaW5rc0J5TGluZSA9IHt9Ow0KICAgICAgZm9yIChsZXQgcmF3TGluayBvZiBtZXRhZGF0YS5saW5rcyB8fCBbXSkgew0KICAgICAgICAgIGNvbnN0IGxpbmsgPSBMaW5rLmluZmVyKHJhd0xpbmsubGluaywgZmFsc2UsIHJhd0xpbmsuZGlzcGxheVRleHQpOw0KICAgICAgICAgIGNvbnN0IGxpbmUgPSByYXdMaW5rLnBvc2l0aW9uLnN0YXJ0LmxpbmU7DQogICAgICAgICAgbGlua3MucHVzaChsaW5rKTsNCiAgICAgICAgICBpZiAoIShsaW5lIGluIGxpbmtzQnlMaW5lKSkNCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0gPSBbbGlua107DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICBsaW5rc0J5TGluZVtsaW5lXS5wdXNoKGxpbmspOw0KICAgICAgfQ0KICAgICAgLy8gRW1iZWQgTGlua3MgaW4gbWV0YWRhdGEuDQogICAgICBmb3IgKGxldCByYXdFbWJlZCBvZiBtZXRhZGF0YS5lbWJlZHMgfHwgW10pIHsNCiAgICAgICAgICBjb25zdCBsaW5rID0gTGluay5pbmZlcihyYXdFbWJlZC5saW5rLCB0cnVlLCByYXdFbWJlZC5kaXNwbGF5VGV4dCk7DQogICAgICAgICAgY29uc3QgbGluZSA9IHJhd0VtYmVkLnBvc2l0aW9uLnN0YXJ0LmxpbmU7DQogICAgICAgICAgbGlua3MucHVzaChsaW5rKTsNCiAgICAgICAgICBpZiAoIShsaW5lIGluIGxpbmtzQnlMaW5lKSkNCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0gPSBbbGlua107DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICBsaW5rc0J5TGluZVtsaW5lXS5wdXNoKGxpbmspOw0KICAgICAgfQ0KICAgICAgLy8gTWVyZ2UgZnJvbnRtYXR0ZXIgZmllbGRzIHdpdGggcGFyc2VkIGZpZWxkcy4NCiAgICAgIGxldCBtYXJrZG93bkRhdGEgPSBwYXJzZU1hcmtkb3duKHBhdGgsIGNvbnRlbnRzLnNwbGl0KCJcbiIpLCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpOw0KICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhmaWVsZHMsIG1hcmtkb3duRGF0YS5maWVsZHMpOw0KICAgICAgLy8gU3RyaXAgInBvc2l0aW9uIiBmcm9tIGZyb250bWF0dGVyIHNpbmNlIGl0IGlzIE9ic2lkaWFuIGRldGVybWluZWQuDQogICAgICBjb25zdCBmcm9udG1hdHRlciA9IG1ldGFkYXRhLmZyb250bWF0dGVyIHx8IHt9Ow0KICAgICAgaWYgKGZyb250bWF0dGVyICYmICJwb3NpdGlvbiIgaW4gZnJvbnRtYXR0ZXIpDQogICAgICAgICAgZGVsZXRlIGZyb250bWF0dGVyWyJwb3NpdGlvbiJdOw0KICAgICAgcmV0dXJuIG5ldyBQYWdlTWV0YWRhdGEocGF0aCwgew0KICAgICAgICAgIHRhZ3MsDQogICAgICAgICAgYWxpYXNlcywNCiAgICAgICAgICBsaW5rcywNCiAgICAgICAgICBsaXN0czogbWFya2Rvd25EYXRhLmxpc3RzLA0KICAgICAgICAgIGZpZWxkczogZmluYWxpemVJbmxpbmVGaWVsZHMoZmllbGRzKSwNCiAgICAgICAgICBmcm9udG1hdHRlcjogZnJvbnRtYXR0ZXIsDQogICAgICAgICAgY3RpbWU6IERhdGVUaW1lLmZyb21NaWxsaXMoc3RhdC5jdGltZSksDQogICAgICAgICAgbXRpbWU6IERhdGVUaW1lLmZyb21NaWxsaXMoc3RhdC5tdGltZSksDQogICAgICAgICAgc2l6ZTogc3RhdC5zaXplLA0KICAgICAgICAgIGRheTogZmluZERhdGUocGF0aCwgZmllbGRzKSwNCiAgICAgIH0pOw0KICB9DQogIC8qKiBFeHRyYWN0IHRhZ3MgaW50ZWxsaWdlbnRseSBmcm9tIGZyb250bWF0dGVyLiBIYW5kbGVzIGFycmF5cywgbnVtYmVycywgYW5kIHN0cmluZ3MuICovDQogIGZ1bmN0aW9uIGV4dHJhY3RUYWdzKG1ldGFkYXRhKSB7DQogICAgICBsZXQgdGFnS2V5cyA9IE9iamVjdC5rZXlzKG1ldGFkYXRhKS5maWx0ZXIodCA9PiB0LnRvTG93ZXJDYXNlKCkgPT0gInRhZ3MiIHx8IHQudG9Mb3dlckNhc2UoKSA9PSAidGFnIik7DQogICAgICByZXR1cm4gdGFnS2V5cw0KICAgICAgICAgIC5tYXAoayA9PiBzcGxpdEZyb250bWF0dGVyVGFnT3JBbGlhcyhtZXRhZGF0YVtrXSwgL1ssXHNdKy8pKQ0KICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IHAuY29uY2F0KGMpLCBbXSkNCiAgICAgICAgICAubWFwKHN0ciA9PiAoc3RyLnN0YXJ0c1dpdGgoIiMiKSA/IHN0ciA6ICIjIiArIHN0cikpOw0KICB9DQogIC8qKiBFeHRyYWN0IGFsaWFzZXMgaW50ZWxsaWdlbnRseSBmcm9tIGZyb250bWF0dGVyLiBIYW5kbGVzIGFycmF5cywgbnVtYmVycywgYW5kIHN0cmluZ3MuICAqLw0KICBmdW5jdGlvbiBleHRyYWN0QWxpYXNlcyhtZXRhZGF0YSkgew0KICAgICAgbGV0IGFsaWFzS2V5cyA9IE9iamVjdC5rZXlzKG1ldGFkYXRhKS5maWx0ZXIodCA9PiB0LnRvTG93ZXJDYXNlKCkgPT0gImFsaWFzIiB8fCB0LnRvTG93ZXJDYXNlKCkgPT0gImFsaWFzZXMiKTsNCiAgICAgIGNvbnN0IHJlc3VsdCA9IFtdOw0KICAgICAgZm9yIChsZXQga2V5IG9mIGFsaWFzS2V5cykgew0KICAgICAgICAgIGNvbnN0IHZhbHVlID0gbWV0YWRhdGFba2V5XTsNCiAgICAgICAgICBpZiAoIXZhbHVlKQ0KICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpDQogICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnZhbHVlLm1hcCh2ID0+ICgiIiArIHYpLnRyaW0oKSkpOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uc3BsaXRGcm9udG1hdHRlclRhZ09yQWxpYXModmFsdWUsIC8sLykpOw0KICAgICAgfQ0KICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgfQ0KICAvKiogU3BsaXQgYSBmcm9udG1hdHRlciBsaXN0IGludG8gc2VwYXJhdGUgZWxlbWVudHM7IGhhbmRsZXMgYWN0dWFsIGxpc3RzLCBjb21tYSBzZXBhcmF0ZWQgbGlzdHMsIGFuZCBzaW5nbGUgZWxlbWVudHMuICovDQogIGZ1bmN0aW9uIHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKGRhdGEsIG9uKSB7DQogICAgICBpZiAoZGF0YSA9PSBudWxsIHx8IGRhdGEgPT0gdW5kZWZpbmVkKQ0KICAgICAgICAgIHJldHVybiBbXTsNCiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7DQogICAgICAgICAgcmV0dXJuIGRhdGENCiAgICAgICAgICAgICAgLmZpbHRlcihzID0+ICEhcykNCiAgICAgICAgICAgICAgLm1hcChzID0+IHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKHMsIG9uKSkNCiAgICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gcC5jb25jYXQoYyksIFtdKTsNCiAgICAgIH0NCiAgICAgIC8vIEZvcmNlIHRvIGEgc3RyaW5nIHRvIGhhbmRsZSBudW1iZXJzIGFuZCBzbyBvbi4NCiAgICAgIHJldHVybiAoIiIgKyBkYXRhKQ0KICAgICAgICAgIC5zcGxpdChvbikNCiAgICAgICAgICAuZmlsdGVyKHQgPT4gISF0KQ0KICAgICAgICAgIC5tYXAodCA9PiB0LnRyaW0oKSkNCiAgICAgICAgICAuZmlsdGVyKHQgPT4gdC5sZW5ndGggPiAwKTsNCiAgfQ0KICAvKiogUGFyc2UgcmF3IChuZXdsaW5lLWRlbGltaXRlZCkgbWFya2Rvd24sIHJldHVybmluZyBpbmxpbmUgZmllbGRzLCBsaXN0IGl0ZW1zLCBhbmQgb3RoZXIgbWV0YWRhdGEuICovDQogIGZ1bmN0aW9uIHBhcnNlTWFya2Rvd24ocGF0aCwgY29udGVudHMsIG1ldGFkYXRhLCBsaW5rc0J5TGluZSkgew0KICAgICAgbGV0IGZpZWxkcyA9IG5ldyBNYXAoKTsNCiAgICAgIC8vIEV4dHJhY3QgdGFzayBkYXRhIGFuZCBhcHBlbmQgdGhlIGdsb2JhbCBkYXRhIGV4dHJhY3RlZCBmcm9tIHRoZW0gdG8gb3VyIGZpZWxkcy4NCiAgICAgIGxldCBbbGlzdHMsIGV4dHJhRGF0YV0gPSBwYXJzZUxpc3RzKHBhdGgsIGNvbnRlbnRzLCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpOw0KICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVzXSBvZiBleHRyYURhdGEuZW50cmllcygpKSB7DQogICAgICAgICAgaWYgKCFmaWVsZHMuaGFzKGtleSkpDQogICAgICAgICAgICAgIGZpZWxkcy5zZXQoa2V5LCB2YWx1ZXMpOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgZmllbGRzLnNldChrZXksIGZpZWxkcy5nZXQoa2V5KS5jb25jYXQodmFsdWVzKSk7DQogICAgICB9DQogICAgICAvLyBUaGUgT2JzaWRpYW4gbWV0YWRhdGEgY2FjaGUgd2lsbCB0cmFjayBsaXN0IGVsZW1lbnRzIGluc2lkZSBvZiBvdGhlciBlbGVtZW50IGdyb3VwcyAobGlrZSBhbm5vdGF0aW9ucyBhbmQNCiAgICAgIC8vIGNhbGxvdXRzKS4uLiB0aGlzIG1lYW5zIHdlIG1pZ2h0IHNlZSBtZXRhZGF0YSB0d2ljZSwgc28gc2tpcCB0aGVtIG5vdy4gVmVyeSBhbm5veWluZy4NCiAgICAgIGNvbnN0IGxpc3RMaW5lc1RvU2tpcCA9IG5ldyBTZXQoKTsNCiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaXN0cykgew0KICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZS5saW5lQ291bnQ7IGkrKykNCiAgICAgICAgICAgICAgbGlzdExpbmVzVG9Ta2lwLmFkZChsaW5lLmxpbmUgKyBpKTsNCiAgICAgIH0NCiAgICAgIC8vIE9ubHkgcGFyc2UgaGVhZGluZyBhbmQgcGFyYWdyYXBoIGVsZW1lbnRzIGZvciBpbmxpbmUgZmllbGRzOyB3ZSB3aWxsIHBhcnNlIGxpc3QgbWV0YWRhdGEgc2VwYXJhdGVseS4NCiAgICAgIGZvciAobGV0IHNlY3Rpb24gb2YgbWV0YWRhdGEuc2VjdGlvbnMgfHwgW10pIHsNCiAgICAgICAgICBpZiAoc2VjdGlvbi50eXBlID09ICJsaXN0IiB8fCBzZWN0aW9uLnR5cGUgPT0gInJ1bGluZyIpDQogICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgIGZvciAobGV0IGxpbmVubyA9IHNlY3Rpb24ucG9zaXRpb24uc3RhcnQubGluZTsgbGluZW5vIDw9IHNlY3Rpb24ucG9zaXRpb24uZW5kLmxpbmU7IGxpbmVubysrKSB7DQogICAgICAgICAgICAgIGxldCBsaW5lID0gY29udGVudHNbbGluZW5vXTsNCiAgICAgICAgICAgICAgaWYgKGxpbmUgPT0gdW5kZWZpbmVkIHx8IGxpbmUgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICBpZiAobGlzdExpbmVzVG9Ta2lwLmhhcyhsaW5lbm8pKQ0KICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgIC8vIEZhc3QgYmFpbC1vdXQgZm9yIGxpbmVzIHRoYXQgYXJlIHRvbyBsb25nIG9yIGRvIG5vdCBjb250YWluICc6OicuDQogICAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCA+IDMyNzY4IHx8ICFsaW5lLmluY2x1ZGVzKCI6OiIpKQ0KICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnRyaW0oKTsNCiAgICAgICAgICAgICAgbGV0IGlubGluZUZpZWxkcyA9IGV4dHJhY3RJbmxpbmVGaWVsZHMobGluZSk7DQogICAgICAgICAgICAgIGlmIChpbmxpbmVGaWVsZHMubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaWZpZWxkIG9mIGlubGluZUZpZWxkcykNCiAgICAgICAgICAgICAgICAgICAgICBhZGRSYXdJbmxpbmVGaWVsZChpZmllbGQsIGZpZWxkcyk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICBsZXQgZnVsbExpbmUgPSBleHRyYWN0RnVsbExpbmVGaWVsZChsaW5lKTsNCiAgICAgICAgICAgICAgICAgIGlmIChmdWxsTGluZSkNCiAgICAgICAgICAgICAgICAgICAgICBhZGRSYXdJbmxpbmVGaWVsZChmdWxsTGluZSwgZmllbGRzKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgIHJldHVybiB7IGZpZWxkcywgbGlzdHMgfTsNCiAgfQ0KICAvLyBUT0RPOiBDb25zaWRlciB1c2luZyBhbiBhY3R1YWwgcGFyc2VyIGluIGxlaXUgb2YgYSBtb3JlIGV4cGVuc2l2ZSByZWdleC4NCiAgY29uc3QgTElTVF9JVEVNX1JFR0VYID0gL15bXHM+XSooXGQrXC58XGQrXCl8XCp8LXxcKylccyooXFsuezAsMX1cXSk/XHMqKC4qKSQvbXU7DQogIC8qKg0KICAgKiBQYXJzZSBsaXN0IGl0ZW1zIGZyb20gdGhlIHBhZ2UgKyBtZXRhZGF0YS4gVGhpcyByZXF1aXJlcyBzb21lIGFkZGl0aW9uYWwgcGFyc2luZyBhYm92ZSB3aGF0ZXZlciBPYnNpZGlhbiBwcm92aWRlcywNCiAgICogc2luY2UgT2JzaWRpYW4gb25seSBnaXZlcyBsaW5lIG51bWJlcnMuDQogICAqLw0KICBmdW5jdGlvbiBwYXJzZUxpc3RzKHBhdGgsIGNvbnRlbnQsIG1ldGFkYXRhLCBsaW5rc0J5TGluZSkgew0KICAgICAgdmFyIF9hOw0KICAgICAgbGV0IGNhY2hlID0ge307DQogICAgICAvLyBQbGFjZSBhbGwgb2YgdGhlIHZhbHVlcyBpbiB0aGUgY2FjaGUgYmVmb3JlIHJlc29sdmluZyBjaGlsZHJlbiAmIG1ldGFkYXRhIHJlbGF0aW9uc2hpcHMuDQogICAgICBmb3IgKGxldCByYXdFbGVtZW50IG9mIG1ldGFkYXRhLmxpc3RJdGVtcyB8fCBbXSkgew0KICAgICAgICAgIC8vIE1hdGNoIG9uIHRoZSBmaXJzdCBsaW5lIHRvIGdldCB0aGUgc3ltYm9sIGFuZCBmaXJzdCBsaW5lIG9mIHRleHQuDQogICAgICAgICAgbGV0IHJhd01hdGNoID0gTElTVF9JVEVNX1JFR0VYLmV4ZWMoY29udGVudFtyYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmVdKTsNCiAgICAgICAgICBpZiAoIXJhd01hdGNoKQ0KICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAvLyBBbmQgdGhlbiBzdHJpcCB1bm5lY2Vzc2FyeSBzcGFjaW5nIGZyb20gdGhlIHJlbWFpbmluZyBsaW5lcy4NCiAgICAgICAgICBsZXQgdGV4dFBhcnRzID0gW3Jhd01hdGNoWzNdXQ0KICAgICAgICAgICAgICAuY29uY2F0KGNvbnRlbnQuc2xpY2UocmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICsgMSwgcmF3RWxlbWVudC5wb3NpdGlvbi5lbmQubGluZSArIDEpKQ0KICAgICAgICAgICAgICAubWFwKHQgPT4gdC50cmltKCkpOw0KICAgICAgICAgIGxldCB0ZXh0V2l0aE5ld2xpbmUgPSB0ZXh0UGFydHMuam9pbigiXG4iKTsNCiAgICAgICAgICBsZXQgdGV4dE5vTmV3bGluZSA9IHRleHRQYXJ0cy5qb2luKCIgIik7DQogICAgICAgICAgLy8gRmluZCB0aGUgbGlzdCB0aGF0IHdlIGFyZSBhIHBhcnQgb2YgYnkgbGluZS4NCiAgICAgICAgICBsZXQgY29udGFpbmluZ0xpc3RJZCA9IChtZXRhZGF0YS5zZWN0aW9ucyB8fCBbXSkuZmluZEluZGV4KHMgPT4gcy50eXBlID09ICJsaXN0IiAmJg0KICAgICAgICAgICAgICBzLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPD0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICYmDQogICAgICAgICAgICAgIHMucG9zaXRpb24uZW5kLmxpbmUgPj0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lKTsNCiAgICAgICAgICAvLyBGaW5kIHRoZSBzZWN0aW9uIHdlIGJlbG9uZyB0byBhcyB3ZWxsLg0KICAgICAgICAgIGxldCBzZWN0aW9uTmFtZSA9IGZpbmRQcmV2aW91c0hlYWRlcihyYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUsIG1ldGFkYXRhLmhlYWRpbmdzIHx8IFtdKTsNCiAgICAgICAgICBsZXQgc2VjdGlvbkxpbmsgPSBzZWN0aW9uTmFtZSA9PT0gdW5kZWZpbmVkID8gTGluay5maWxlKHBhdGgpIDogTGluay5oZWFkZXIocGF0aCwgc2VjdGlvbk5hbWUpOw0KICAgICAgICAgIGxldCBjbG9zZXN0TGluayA9IHJhd0VsZW1lbnQuaWQgPT09IHVuZGVmaW5lZCA/IHNlY3Rpb25MaW5rIDogTGluay5ibG9jayhwYXRoLCByYXdFbGVtZW50LmlkKTsNCiAgICAgICAgICAvLyBHYXRoZXIgYW55IGxpbmtzIHRoYXQgb2NjdXIgb24gdGhlIHNhbWUgbGluZXMgYXMgdGhlIHRhc2suDQogICAgICAgICAgY29uc3QgbGlua3MgPSBbXTsNCiAgICAgICAgICBmb3IgKGxldCBsaW5lID0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lOyBsaW5lIDw9IHJhd0VsZW1lbnQucG9zaXRpb24uZW5kLmxpbmU7IGxpbmUrKykgew0KICAgICAgICAgICAgICBpZiAobGlua3NCeUxpbmVbbGluZV0pDQogICAgICAgICAgICAgICAgICBsaW5rcy5wdXNoKC4uLmxpbmtzQnlMaW5lW2xpbmVdKTsNCiAgICAgICAgICB9DQogICAgICAgICAgLy8gQ29uc3RydWN0IHVuaXZlcnNhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGVsZW1lbnQgKGJlZm9yZSB0YXNrcykuDQogICAgICAgICAgbGV0IGl0ZW0gPSBuZXcgTGlzdEl0ZW0oew0KICAgICAgICAgICAgICBzeW1ib2w6IHJhd01hdGNoWzFdLA0KICAgICAgICAgICAgICBsaW5rOiBjbG9zZXN0TGluaywNCiAgICAgICAgICAgICAgbGlua3M6IGxpbmtzLA0KICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uTGluaywNCiAgICAgICAgICAgICAgdGV4dDogdGV4dFdpdGhOZXdsaW5lLA0KICAgICAgICAgICAgICB0YWdzOiBleHRyYWN0VGFncyQxKHRleHROb05ld2xpbmUpLA0KICAgICAgICAgICAgICBsaW5lOiByYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUsDQogICAgICAgICAgICAgIGxpbmVDb3VudDogcmF3RWxlbWVudC5wb3NpdGlvbi5lbmQubGluZSAtIHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZSArIDEsDQogICAgICAgICAgICAgIGxpc3Q6IGNvbnRhaW5pbmdMaXN0SWQgPT0gLTEgPyAtMSA6IChtZXRhZGF0YS5zZWN0aW9ucyB8fCBbXSlbY29udGFpbmluZ0xpc3RJZF0ucG9zaXRpb24uc3RhcnQubGluZSwNCiAgICAgICAgICAgICAgcG9zaXRpb246IHJhd0VsZW1lbnQucG9zaXRpb24sDQogICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSwNCiAgICAgICAgICAgICAgYmxvY2tJZDogcmF3RWxlbWVudC5pZCwNCiAgICAgICAgICB9KTsNCiAgICAgICAgICBpZiAocmF3RWxlbWVudC5wYXJlbnQgPj0gMCAmJiByYXdFbGVtZW50LnBhcmVudCAhPSBpdGVtLmxpbmUpDQogICAgICAgICAgICAgIGl0ZW0ucGFyZW50ID0gcmF3RWxlbWVudC5wYXJlbnQ7DQogICAgICAgICAgLy8gU2V0IHVwIHRoZSBiYXNpYyB0YXNrIGluZm9ybWF0aW9uIGZvciBub3csIHRob3VnaCB3ZSBoYXZlIHRvIHJlY29tcHV0ZSBgZnVsbHlDb21wdXRlZGAgbGF0ZXIuDQogICAgICAgICAgaWYgKHJhd0VsZW1lbnQudGFzaykgew0KICAgICAgICAgICAgICBpdGVtLnRhc2sgPSB7DQogICAgICAgICAgICAgICAgICBzdGF0dXM6IHJhd0VsZW1lbnQudGFzaywNCiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IHJhd0VsZW1lbnQudGFzayAhPSAiIiAmJiByYXdFbGVtZW50LnRhc2sgIT0gIiAiLA0KICAgICAgICAgICAgICAgICAgY29tcGxldGVkOiByYXdFbGVtZW50LnRhc2sgPT0gIlgiIHx8IHJhd0VsZW1lbnQudGFzayA9PSAieCIsDQogICAgICAgICAgICAgICAgICBmdWxseUNvbXBsZXRlZDogcmF3RWxlbWVudC50YXNrID09ICJYIiB8fCByYXdFbGVtZW50LnRhc2sgPT0gIngiLA0KICAgICAgICAgICAgICB9Ow0KICAgICAgICAgIH0NCiAgICAgICAgICAvLyBFeHRyYWN0IGlubGluZSBmaWVsZHM7IGV4dHJhY3QgZnVsbC1saW5lIGZpZWxkcyBvbmx5IGlmIHdlIGFyZSBOT1QgYSB0YXNrLg0KICAgICAgICAgIGl0ZW0uZmllbGRzID0gbmV3IE1hcCgpOw0KICAgICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZXh0cmFjdElubGluZUZpZWxkcyh0ZXh0Tm9OZXdsaW5lLCB0cnVlKSkNCiAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZWxlbWVudCwgaXRlbS5maWVsZHMpOw0KICAgICAgICAgIGlmICghcmF3RWxlbWVudC50YXNrICYmIGl0ZW0uZmllbGRzLnNpemUgPT0gMCkgew0KICAgICAgICAgICAgICBsZXQgZnVsbExpbmUgPSBleHRyYWN0RnVsbExpbmVGaWVsZCh0ZXh0Tm9OZXdsaW5lKTsNCiAgICAgICAgICAgICAgaWYgKGZ1bGxMaW5lKQ0KICAgICAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZnVsbExpbmUsIGl0ZW0uZmllbGRzKTsNCiAgICAgICAgICB9DQogICAgICAgICAgY2FjaGVbaXRlbS5saW5lXSA9IGl0ZW07DQogICAgICB9DQogICAgICAvLyBUcmVlIHVwZGF0aW5nIHBhc3Nlcy4gVXBkYXRlIGNoaWxkIGxpc3RzLiBQcm9wb2dhdGUgbWV0YWRhdGEgdXAgdG8gcGFyZW50IHRhc2tzLiBVcGRhdGUgdGFzayBgZnVsbHlDb21wbGV0ZWRgLg0KICAgICAgbGV0IGxpdGVyYWxzID0gbmV3IE1hcCgpOw0KICAgICAgZm9yIChsZXQgbGlzdEl0ZW0gb2YgT2JqZWN0LnZhbHVlcyhjYWNoZSkpIHsNCiAgICAgICAgICAvLyBQYXNzIDE6IFVwZGF0ZSBjaGlsZCBsaXN0cy4NCiAgICAgICAgICBpZiAobGlzdEl0ZW0ucGFyZW50ICE9PSB1bmRlZmluZWQgJiYgbGlzdEl0ZW0ucGFyZW50IGluIGNhY2hlKSB7DQogICAgICAgICAgICAgIGxldCBwYXJlbnQgPSBjYWNoZVtsaXN0SXRlbS5wYXJlbnRdOw0KICAgICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChsaXN0SXRlbS5saW5lKTsNCiAgICAgICAgICB9DQogICAgICAgICAgLy8gUGFzcyAyOiBQcm9wb2dhdGUgbWV0YWRhdGEgdXAgdG8gdGhlIHBhcmVudCB0YXNrIG9yIHJvb3QgZWxlbWVudC4NCiAgICAgICAgICBpZiAoIWxpc3RJdGVtLnRhc2spIHsNCiAgICAgICAgICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhsaXRlcmFscywgbGlzdEl0ZW0uZmllbGRzKTsNCiAgICAgICAgICAgICAgLy8gVE9ETyAoYmxhY2tzbWl0aGd1KTogVGhlIGJlbG93IGNvZGUgcHJvcGVybHkgcHJvcG9nYXRlcyBtZXRhZGF0YSB1cCB0byB0aGUgbmVhcmVzdCB0YXNrLCB3aGljaCBpcyB0aGUNCiAgICAgICAgICAgICAgLy8gbW9yZSBpbnR1aXRpdmUgYmVoYXZpb3IuIEZvciBub3csIHRob3VnaCwgd2Ugd2lsbCBrZWVwIHRoZSBleGlzdGluZyBsb2dpYy4NCiAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgbGV0IHJvb3Q6IExpc3RJdGVtIHwgdW5kZWZpbmVkID0gbGlzdEl0ZW07DQogICAgICAgICAgICAgIHdoaWxlICghIXJvb3QgJiYgIXJvb3QudGFzaykgcm9vdCA9IGNhY2hlW3Jvb3QucGFyZW50ID8/IC0xXTsNCgogICAgICAgICAgICAgIC8vIElmIHRoZSByb290IGlzIG51bGwsIGFwcGVuZCB0aGlzIG1ldGFkYXRhIHRvIHRoZSByb290OyBvdGhlcndpc2UsIGFwcGVuZCB0byB0aGUgdGFzay4NCiAgICAgICAgICAgICAgbWVyZ2VGaWVsZEdyb3Vwcyhyb290ID09PSB1bmRlZmluZWQgfHwgcm9vdCA9PSBudWxsID8gbGl0ZXJhbHMgOiByb290LmZpZWxkcywgbGlzdEl0ZW0uZmllbGRzKTsNCiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICB9DQogICAgICAgICAgLy8gUGFzcyAzOiBQcm9wb2dhdGUgYGZ1bGx5Q29tcGxldGVkYCB1cCB0aGUgdGFzayB0cmVlLiBUaGlzIGlzIGEgbGl0dGxlIGxlc3MgZWZmaWNpZW50IHRoYW4ganVzdCBkb2luZyBhIHNpbXBsZQ0KICAgICAgICAgIC8vIERGUyB1c2luZyB0aGUgY2hpbGRyZW4gSURzLCBidXQgaXQncyBwcm9iYWJseSBmaW5lLg0KICAgICAgICAgIGlmIChsaXN0SXRlbS50YXNrKSB7DQogICAgICAgICAgICAgIGxldCBjdXJyID0gbGlzdEl0ZW07DQogICAgICAgICAgICAgIHdoaWxlICghIWN1cnIpIHsNCiAgICAgICAgICAgICAgICAgIGlmIChjdXJyLnRhc2spDQogICAgICAgICAgICAgICAgICAgICAgY3Vyci50YXNrLmZ1bGx5Q29tcGxldGVkID0gY3Vyci50YXNrLmZ1bGx5Q29tcGxldGVkICYmIGxpc3RJdGVtLnRhc2suY29tcGxldGVkOw0KICAgICAgICAgICAgICAgICAgY3VyciA9IGNhY2hlWyhfYSA9IGN1cnIucGFyZW50KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAtMV07DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gW09iamVjdC52YWx1ZXMoY2FjaGUpLCBsaXRlcmFsc107DQogIH0NCiAgLyoqIEF0dGVtcHQgdG8gZmluZCBhIGRhdGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBwYWdlIGZyb20gbWV0YWRhdGEgb3IgZmlsZW5hbWVzLiAqLw0KICBmdW5jdGlvbiBmaW5kRGF0ZShmaWxlLCBmaWVsZHMpIHsNCiAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDsNCiAgICAgIGZvciAobGV0IGtleSBvZiBmaWVsZHMua2V5cygpKSB7DQogICAgICAgICAgaWYgKCEoa2V5LnRvTG9jYWxlTG93ZXJDYXNlKCkgPT0gImRhdGUiIHx8IGtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09ICJkYXkiKSkNCiAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgbGV0IHZhbHVlID0gZmllbGRzLmdldChrZXkpOw0KICAgICAgICAgIGlmIChWYWx1ZXMuaXNEYXRlKHZhbHVlKSkgew0KICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKFZhbHVlcy5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwICYmIFZhbHVlcy5pc0RhdGUodmFsdWVbMF0pKSB7DQogICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAoVmFsdWVzLmlzTGluayh2YWx1ZSkpIHsNCiAgICAgICAgICAgICAgbGV0IGRhdGUgPSAoX2MgPSAoX2EgPSBleHRyYWN0RGF0ZSh2YWx1ZS5wYXRoKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZXh0cmFjdERhdGUoKF9iID0gdmFsdWUuc3VicGF0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogIiIpKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBleHRyYWN0RGF0ZSgoX2QgPSB2YWx1ZS5kaXNwbGF5KSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAiIik7DQogICAgICAgICAgICAgIGlmIChkYXRlKQ0KICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGU7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgcmV0dXJuIGV4dHJhY3REYXRlKGdldEZpbGVUaXRsZShmaWxlKSk7DQogIH0NCiAgLyoqIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgZnJvbnRtYXR0ZXIgaW50byBmaWVsZHMuIFdlIGhhdmUgdG8gZGFuY2UgYXJvdW5kIFlBTUwgc3RydWN0dXJlLiAqLw0KICBmdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyKHZhbHVlKSB7DQogICAgICBpZiAodmFsdWUgPT0gbnVsbCkgew0KICAgICAgICAgIHJldHVybiBudWxsOw0KICAgICAgfQ0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAib2JqZWN0Iikgew0KICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgew0KICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107DQogICAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIHZhbHVlKSB7DQogICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwYXJzZUZyb250bWF0dGVyKGNoaWxkKSk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7DQogICAgICAgICAgICAgIGxldCBkYXRlUGFyc2UgPSBEYXRlVGltZS5mcm9tSlNEYXRlKHZhbHVlKTsNCiAgICAgICAgICAgICAgcmV0dXJuIGRhdGVQYXJzZTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIGxldCBvYmplY3QgPSB2YWx1ZTsNCiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9Ow0KICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gb2JqZWN0KSB7DQogICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHBhcnNlRnJvbnRtYXR0ZXIob2JqZWN0W2tleV0pOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAibnVtYmVyIikgew0KICAgICAgICAgIHJldHVybiB2YWx1ZTsNCiAgICAgIH0NCiAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gImJvb2xlYW4iKSB7DQogICAgICAgICAgcmV0dXJuIHZhbHVlOw0KICAgICAgfQ0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAic3RyaW5nIikgew0KICAgICAgICAgIGxldCBkYXRlUGFyc2UgPSBFWFBSRVNTSU9OLmRhdGUucGFyc2UodmFsdWUpOw0KICAgICAgICAgIGlmIChkYXRlUGFyc2Uuc3RhdHVzKQ0KICAgICAgICAgICAgICByZXR1cm4gZGF0ZVBhcnNlLnZhbHVlOw0KICAgICAgICAgIGxldCBkdXJhdGlvblBhcnNlID0gRVhQUkVTU0lPTi5kdXJhdGlvbi5wYXJzZSh2YWx1ZSk7DQogICAgICAgICAgaWYgKGR1cmF0aW9uUGFyc2Uuc3RhdHVzKQ0KICAgICAgICAgICAgICByZXR1cm4gZHVyYXRpb25QYXJzZS52YWx1ZTsNCiAgICAgICAgICBsZXQgbGlua1BhcnNlID0gRVhQUkVTU0lPTi5lbWJlZExpbmsucGFyc2UodmFsdWUpOw0KICAgICAgICAgIGlmIChsaW5rUGFyc2Uuc3RhdHVzKQ0KICAgICAgICAgICAgICByZXR1cm4gbGlua1BhcnNlLnZhbHVlOw0KICAgICAgICAgIHJldHVybiB2YWx1ZTsNCiAgICAgIH0NCiAgICAgIC8vIEJhY2t1cCBpZiB3ZSBkb24ndCB1bmRlcnN0YW5kIHRoZSB0eXBlLg0KICAgICAgcmV0dXJuIG51bGw7DQogIH0NCiAgLyoqIEFkZCBhIHBhcnNlZCBpbmxpbmUgZmllbGQgdG8gdGhlIG91dHB1dCBtYXAuICovDQogIGZ1bmN0aW9uIGFkZFJhd0lubGluZUZpZWxkKGZpZWxkLCBvdXRwdXQpIHsNCiAgICAgIGFkZElubGluZUZpZWxkKGZpZWxkLmtleSwgcGFyc2VJbmxpbmVWYWx1ZShmaWVsZC52YWx1ZSksIG91dHB1dCk7DQogIH0NCiAgLyoqIEFkZCBhIHJhdyBpbmxpbmUgZmllbGQgdG8gYW4gb3V0cHV0IG1hcCwgY2Fub25pY2FsaXppbmcgYXMgbmVlZGVkLiAqLw0KICBmdW5jdGlvbiBhZGRJbmxpbmVGaWVsZChrZXksIHZhbHVlLCBvdXRwdXQpIHsNCiAgICAgIHZhciBfYTsNCiAgICAgIGlmICghb3V0cHV0LmhhcyhrZXkpKQ0KICAgICAgICAgIG91dHB1dC5zZXQoa2V5LCBbdmFsdWVdKTsNCiAgICAgIGVsc2UNCiAgICAgICAgICAoX2EgPSBvdXRwdXQuZ2V0KGtleSkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdXNoKHZhbHVlKTsNCiAgfQ0KICAvKiogR2l2ZW4gYSByYXcgbGlzdCBvZiBpbmxpbmUgZmllbGQgdmFsdWVzLCBhZGQgbm9ybWFsaXplZCBrZXlzIGFuZCBzcXVhc2ggdGhlbS4gKi8NCiAgZnVuY3Rpb24gZmluYWxpemVJbmxpbmVGaWVsZHMoZmllbGRzKSB7DQogICAgICAvLyBDb21wdXRlIHVuaXF1ZSBub3JtYWxpemVkIGtleXMgKHRoYXQgZG8gbm90IG92ZXJsYXAgdy8gdGhlIGZpZWxkcykuDQogICAgICBsZXQgbm9ybWFsaXplZCA9IG5ldyBNYXAoKTsNCiAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlc10gb2YgZmllbGRzLmVudHJpZXMoKSkgew0KICAgICAgICAgIGxldCBub3JtS2V5ID0gY2Fub25pY2FsaXplVmFyTmFtZShrZXkpOw0KICAgICAgICAgIGlmIChub3JtS2V5ID09ICIiIHx8IGZpZWxkcy5oYXMobm9ybUtleSkpDQogICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgIGlmICghbm9ybWFsaXplZC5oYXMobm9ybUtleSkpDQogICAgICAgICAgICAgIG5vcm1hbGl6ZWQuc2V0KG5vcm1LZXksIHZhbHVlcyk7DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICBub3JtYWxpemVkLnNldChub3JtS2V5LCBub3JtYWxpemVkLmdldChub3JtS2V5KS5jb25jYXQodmFsdWVzKSk7DQogICAgICB9DQogICAgICAvLyBDb21iaW5lIG5vcm1hbGl6ZWQgKyBub3JtYWwga2V5cy4NCiAgICAgIGxldCBpbnRlcmltID0gbmV3IE1hcCgpOw0KICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhpbnRlcmltLCBmaWVsZHMpOw0KICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhpbnRlcmltLCBub3JtYWxpemVkKTsNCiAgICAgIC8vIEFuZCB0aGVuIGZsYXR0ZW4gdGhlbS4NCiAgICAgIGxldCByZXN1bHQgPSBuZXcgTWFwKCk7DQogICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgaW50ZXJpbS5lbnRyaWVzKCkpIHsNCiAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09IDEpDQogICAgICAgICAgICAgIHJlc3VsdC5zZXQoa2V5LCB2YWx1ZVswXSk7DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWUpOw0KICAgICAgfQ0KICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgfQ0KICAvKiogQ29weSBhbGwgZmllbGRzIG9mICdzb3VyY2UnIGludG8gJ3RhcmdldCcuICovDQogIGZ1bmN0aW9uIG1lcmdlRmllbGRHcm91cHModGFyZ2V0LCBzb3VyY2UpIHsNCiAgICAgIGZvciAobGV0IGtleSBvZiBzb3VyY2Uua2V5cygpKSB7DQogICAgICAgICAgaWYgKCF0YXJnZXQuaGFzKGtleSkpDQogICAgICAgICAgICAgIHRhcmdldC5zZXQoa2V5LCBzb3VyY2UuZ2V0KGtleSkpOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgdGFyZ2V0LnNldChrZXksIHRhcmdldC5nZXQoa2V5KS5jb25jYXQoc291cmNlLmdldChrZXkpKSk7DQogICAgICB9DQogIH0NCiAgLyoqIEZpbmQgdGhlIGhlYWRlciB0aGF0IGlzIG1vc3QgaW1tZWRpYXRlbHkgYWJvdmUgdGhlIGdpdmVuIGxpbmUgbnVtYmVyLiAqLw0KICBmdW5jdGlvbiBmaW5kUHJldmlvdXNIZWFkZXIobGluZSwgaGVhZGVycykgew0KICAgICAgaWYgKGhlYWRlcnMubGVuZ3RoID09IDApDQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgIGlmIChoZWFkZXJzWzBdLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPiBsaW5lKQ0KICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICBsZXQgaW5kZXggPSBoZWFkZXJzLmxlbmd0aCAtIDE7DQogICAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBoZWFkZXJzW2luZGV4XS5wb3NpdGlvbi5zdGFydC5saW5lID4gbGluZSkNCiAgICAgICAgICBpbmRleC0tOw0KICAgICAgcmV0dXJuIGhlYWRlcnNbaW5kZXhdLmhlYWRpbmc7DQogIH0KCiAgLyoqIEFjdHVhbCBpbXBvcnQgaW1wbGVtZW50YXRpb24gYmFja2VuZC4gVGhpcyBtdXN0IHJlbWFpbiBzZXBhcmF0ZSBmcm9tIGBpbXBvcnQtZW50cnlgIHNpbmNlIGl0IGlzIHVzZWQgd2l0aG91dCB3ZWIgd29ya2Vycy4gKi8NCiAgZnVuY3Rpb24gcnVuSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0cywgbWV0YWRhdGEpIHsNCiAgICAgIHJldHVybiBwYXJzZVBhZ2UocGF0aCwgY29udGVudHMsIHN0YXRzLCBtZXRhZGF0YSk7DQogIH0KCiAgLyoqIFNpbXBsaWZpZXMgcGFzc2luZyBkYXRhdmlldyB2YWx1ZXMgYWNyb3NzIHRoZSBKUyB3ZWIgd29ya2VyIGJhcnJpZXIuICovDQogIHZhciBUcmFuc2ZlcmFibGU7DQogIChmdW5jdGlvbiAoVHJhbnNmZXJhYmxlKSB7DQogICAgICAvKiogQ29udmVydCBhIGxpdGVyYWwgdmFsdWUgdG8gYSBzZXJpYWxpemVyLWZyaWVuZGx5IHRyYW5zZmVyYWJsZSB2YWx1ZS4gKi8NCiAgICAgIGZ1bmN0aW9uIHRyYW5zZmVyYWJsZSh2YWx1ZSkgew0KICAgICAgICAgIC8vIEhhbmRsZSBzaW1wbGUgdW5pdmVyc2FsIHR5cGVzIGZpcnN0Lg0KICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkgew0KICAgICAgICAgICAgICBsZXQgY29waWVkID0gbmV3IE1hcCgpOw0KICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIHZhbHVlLmVudHJpZXMoKSkNCiAgICAgICAgICAgICAgICAgIGNvcGllZC5zZXQodHJhbnNmZXJhYmxlKGtleSksIHRyYW5zZmVyYWJsZSh2YWwpKTsNCiAgICAgICAgICAgICAgcmV0dXJuIGNvcGllZDsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBTZXQpIHsNCiAgICAgICAgICAgICAgbGV0IGNvcGllZCA9IG5ldyBTZXQoKTsNCiAgICAgICAgICAgICAgZm9yIChsZXQgdmFsIG9mIHZhbHVlKQ0KICAgICAgICAgICAgICAgICAgY29waWVkLmFkZCh0cmFuc2ZlcmFibGUodmFsKSk7DQogICAgICAgICAgICAgIHJldHVybiBjb3BpZWQ7DQogICAgICAgICAgfQ0KICAgICAgICAgIGxldCB3cmFwcGVkID0gVmFsdWVzLndyYXBWYWx1ZSh2YWx1ZSk7DQogICAgICAgICAgaWYgKHdyYXBwZWQgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCB0cmFuc2ZlcmFibGUgdmFsdWU6ICIgKyB2YWx1ZSk7DQogICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsNCiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6DQogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6DQogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6DQogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWU7DQogICAgICAgICAgICAgIGNhc2UgImRhdGUiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICAgICAgICAgICAgICAiX19fdHJhbnNmZXItdHlwZSI6ICJkYXRlIiwNCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdHJhbnNmZXJhYmxlKHdyYXBwZWQudmFsdWUudG9PYmplY3QoKSksDQogICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogew0KICAgICAgICAgICAgICAgICAgICAgICAgICB6b25lOiB3cmFwcGVkLnZhbHVlLnpvbmUuZXF1YWxzKFN5c3RlbVpvbmUuaW5zdGFuY2UpID8gdW5kZWZpbmVkIDogd3JhcHBlZC52YWx1ZS56b25lTmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgIl9fX3RyYW5zZmVyLXR5cGUiOiAiZHVyYXRpb24iLCB2YWx1ZTogdHJhbnNmZXJhYmxlKHdyYXBwZWQudmFsdWUudG9PYmplY3QoKSkgfTsNCiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFwKHYgPT4gdHJhbnNmZXJhYmxlKHYpKTsNCiAgICAgICAgICAgICAgY2FzZSAibGluayI6DQogICAgICAgICAgICAgICAgICByZXR1cm4geyAiX19fdHJhbnNmZXItdHlwZSI6ICJsaW5rIiwgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpIH07DQogICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6DQogICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSkpDQogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB0cmFuc2ZlcmFibGUodmFsdWUpOw0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBUcmFuc2ZlcmFibGUudHJhbnNmZXJhYmxlID0gdHJhbnNmZXJhYmxlOw0KICAgICAgLyoqIENvbnZlcnQgYSB0cmFuc2ZlcmFibGUgdmFsdWUgYmFjayB0byBhIGxpdGVyYWwgdmFsdWUgd2UgY2FuIHdvcmsgd2l0aC4gKi8NCiAgICAgIGZ1bmN0aW9uIHZhbHVlKHRyYW5zZmVyYWJsZSkgew0KICAgICAgICAgIGlmICh0cmFuc2ZlcmFibGUgPT09IG51bGwpIHsNCiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZmVyYWJsZSA9PT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZmVyYWJsZSBpbnN0YW5jZW9mIE1hcCkgew0KICAgICAgICAgICAgICBsZXQgcmVhbCA9IG5ldyBNYXAoKTsNCiAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsXSBvZiB0cmFuc2ZlcmFibGUuZW50cmllcygpKQ0KICAgICAgICAgICAgICAgICAgcmVhbC5zZXQodmFsdWUoa2V5KSwgdmFsdWUodmFsKSk7DQogICAgICAgICAgICAgIHJldHVybiByZWFsOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIGlmICh0cmFuc2ZlcmFibGUgaW5zdGFuY2VvZiBTZXQpIHsNCiAgICAgICAgICAgICAgbGV0IHJlYWwgPSBuZXcgU2V0KCk7DQogICAgICAgICAgICAgIGZvciAobGV0IHZhbCBvZiB0cmFuc2ZlcmFibGUpDQogICAgICAgICAgICAgICAgICByZWFsLmFkZCh2YWx1ZSh2YWwpKTsNCiAgICAgICAgICAgICAgcmV0dXJuIHJlYWw7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodHJhbnNmZXJhYmxlKSkgew0KICAgICAgICAgICAgICByZXR1cm4gdHJhbnNmZXJhYmxlLm1hcCh2ID0+IHZhbHVlKHYpKTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHRyYW5zZmVyYWJsZSA9PT0gIm9iamVjdCIpIHsNCiAgICAgICAgICAgICAgaWYgKCJfX190cmFuc2Zlci10eXBlIiBpbiB0cmFuc2ZlcmFibGUpIHsNCiAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHJhbnNmZXJhYmxlWyJfX190cmFuc2Zlci10eXBlIl0pIHsNCiAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkYXRlIjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGVPcHRzID0gdmFsdWUodHJhbnNmZXJhYmxlLm9wdGlvbnMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0ZURhdGEgPSB2YWx1ZSh0cmFuc2ZlcmFibGUudmFsdWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlRGF0YSwgeyB6b25lOiBkYXRlT3B0cy56b25lIH0pOw0KICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QodmFsdWUodHJhbnNmZXJhYmxlLnZhbHVlKSk7DQogICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGluayI6DQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBMaW5rLmZyb21PYmplY3QodmFsdWUodHJhbnNmZXJhYmxlLnZhbHVlKSk7DQogICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFVucmVjb2duaXplZCB0cmFuc2ZlciB0eXBlICcke3RyYW5zZmVyYWJsZVsiX19fdHJhbnNmZXItdHlwZSJdfSdgKTsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgT2JqZWN0LmVudHJpZXModHJhbnNmZXJhYmxlKSkNCiAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWUodmFsKTsNCiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICB9DQogICAgICAgICAgcmV0dXJuIHRyYW5zZmVyYWJsZTsNCiAgICAgIH0NCiAgICAgIFRyYW5zZmVyYWJsZS52YWx1ZSA9IHZhbHVlOw0KICB9KShUcmFuc2ZlcmFibGUgfHwgKFRyYW5zZmVyYWJsZSA9IHt9KSk7CgogIC8qKiBFbnRyeS1wb2ludCBzY3JpcHQgdXNlZCBieSB0aGUgaW5kZXggYXMgYSB3ZWIgd29ya2VyLiAqLw0KICAvKiogQW4gaW1wb3J0IHdoaWNoIGNhbiBmYWlsIGFuZCByYWlzZSBhbiBleGNlcHRpb24sIHdoaWNoIHdpbGwgYmUgY2F1Z2h0IGJ5IHRoZSBoYW5kbGVyLiAqLw0KICBmdW5jdGlvbiBmYWlsYWJsZUltcG9ydChwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpIHsNCiAgICAgIGlmIChtZXRhZGF0YSA9PT0gdW5kZWZpbmVkIHx8IG1ldGFkYXRhID09PSBudWxsKSB7DQogICAgICAgICAgdGhyb3cgRXJyb3IoYENhbm5vdCBpbmRleCBmaWxlLCBzaW5jZSBpdCBoYXMgbm8gT2JzaWRpYW4gZmlsZSBtZXRhZGF0YS5gKTsNCiAgICAgIH0NCiAgICAgIHJldHVybiBydW5JbXBvcnQocGF0aCwgY29udGVudHMsIHN0YXQsIG1ldGFkYXRhKTsNCiAgfQ0KICBvbm1lc3NhZ2UgPSBhc3luYyAoZXZ0KSA9PiB7DQogICAgICB0cnkgew0KICAgICAgICAgIGxldCB7IHBhdGgsIGNvbnRlbnRzLCBzdGF0LCBtZXRhZGF0YSB9ID0gZXZ0LmRhdGE7DQogICAgICAgICAgbGV0IHJlc3VsdCA9IGZhaWxhYmxlSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0LCBtZXRhZGF0YSk7DQogICAgICAgICAgcG9zdE1lc3NhZ2UoeyBwYXRoOiBldnQuZGF0YS5wYXRoLCByZXN1bHQ6IFRyYW5zZmVyYWJsZS50cmFuc2ZlcmFibGUocmVzdWx0KSB9KTsNCiAgICAgIH0NCiAgICAgIGNhdGNoIChlcnJvcikgew0KICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTsNCiAgICAgICAgICBwb3N0TWVzc2FnZSh7DQogICAgICAgICAgICAgIHBhdGg6IGV2dC5kYXRhLnBhdGgsDQogICAgICAgICAgICAgIHJlc3VsdDogew0KICAgICAgICAgICAgICAgICAgJGVycm9yOiBgRmFpbGVkIHRvIGluZGV4IGZpbGU6ICR7ZXZ0LmRhdGEucGF0aH06ICR7ZXJyb3J9YCwNCiAgICAgICAgICAgICAgfSwNCiAgICAgICAgICB9KTsNCiAgICAgIH0NCiAgfTsKCn0pKCk7Cgo=', null, false); +var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLy8gdGhlc2UgYXJlbid0IHJlYWxseSBwcml2YXRlLCBidXQgbm9yIGFyZSB0aGV5IHJlYWxseSB1c2VmdWwgdG8gZG9jdW1lbnQKCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBMdXhvbkVycm9yIGV4dGVuZHMgRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkRGF0ZVRpbWVFcnJvciBleHRlbmRzIEx1eG9uRXJyb3IgewogICAgY29uc3RydWN0b3IocmVhc29uKSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIERhdGVUaW1lOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgY2xhc3MgSW52YWxpZEludGVydmFsRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHsKICAgIGNvbnN0cnVjdG9yKHJlYXNvbikgewogICAgICBzdXBlcihgSW52YWxpZCBJbnRlcnZhbDogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIEludmFsaWREdXJhdGlvbkVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24pIHsKICAgICAgc3VwZXIoYEludmFsaWQgRHVyYXRpb246ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkVW5pdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3Rvcih1bml0KSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIHVuaXQgJHt1bml0fWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBab25lSXNBYnN0cmFjdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgc3VwZXIoIlpvbmUgaXMgYW4gYWJzdHJhY3QgY2xhc3MiKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNvbnN0IG4gPSAibnVtZXJpYyIsCiAgICBzID0gInNob3J0IiwKICAgIGwgPSAibG9uZyI7CgogIGNvbnN0IERBVEVfU0hPUlQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IG4sCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRURfV0lUSF9XRUVLREFZID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBzLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogcywKICB9OwoKICBjb25zdCBEQVRFX0ZVTEwgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IGwsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9IVUdFID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICB9OwoKICBjb25zdCBUSU1FX1NJTVBMRSA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgVElNRV9XSVRIX1NFQ09ORFMgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgdGltZVpvbmVOYW1lOiBzLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9MT05HX09GRlNFVCA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgY29uc3QgVElNRV8yNF9TSU1QTEUgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfU0VDT05EUyA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICBob3VyQ3ljbGU6ICJoMjMiLAogIH07CgogIGNvbnN0IFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogbCwKICB9OwoKICBjb25zdCBEQVRFVElNRV9TSE9SVCA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbiwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBuLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHNlY29uZDogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICB3ZWVrZGF5OiBzLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IHMsCiAgfTsKCiAgY29uc3QgREFURVRJTUVfSFVHRSA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIHdlZWtkYXk6IGwsCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgdGltZVpvbmVOYW1lOiBsLAogIH07CgogIGNvbnN0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgLyoqCiAgICogQGludGVyZmFjZQogICAqLwogIGNsYXNzIFpvbmUgewogICAgLyoqCiAgICAgKiBUaGUgdHlwZSBvZiB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB0eXBlKCkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhpcyB6b25lLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICBnZXQgaWFuYU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLm5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIG9mZnNldCBpcyBrbm93biB0byBiZSBmaXhlZCBmb3IgdGhlIHdob2xlIHllYXIuCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyBjb21tb24gbmFtZSAoc3VjaCBhcyBFU1QpIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBuYW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gYWZmZWN0IHRoZSBmb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmZvcm1hdCAtIFdoYXQgc3R5bGUgb2Ygb2Zmc2V0IHRvIHJldHVybi4gQWNjZXB0cyAnbG9uZycgb3IgJ3Nob3J0Jy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmxvY2FsZSAtIFdoYXQgbG9jYWxlIHRvIHJldHVybiB0aGUgb2Zmc2V0IG5hbWUgaW4uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIG9mZnNldE5hbWUodHMsIG9wdHMpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG9mZnNldCdzIHZhbHVlIGFzIGEgc3RyaW5nCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBvZmZzZXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0cyAnbmFycm93JywgJ3Nob3J0Jywgb3IgJ3RlY2hpZScuIFJldHVybmluZyAnKzYnLCAnKzA2OjAwJywgb3IgJyswNjAwJyByZXNwZWN0aXZlbHkKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgZm9yIHRoaXMgem9uZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC4KICAgICAqIEBhYnN0cmFjdAogICAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBjb21wdXRlIHRoZSBvZmZzZXQKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgZXF1YWwgdG8gYW5vdGhlciB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7Wm9uZX0gb3RoZXJab25lIC0gdGhlIHpvbmUgdG8gY29tcGFyZQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyWm9uZSkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIHZhbGlkLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uJDEgPSBudWxsOwoKICAvKioKICAgKiBSZXByZXNlbnRzIHRoZSBsb2NhbCB6b25lIGZvciB0aGlzIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgU3lzdGVtWm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGxvY2FsIHpvbmUKICAgICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24kMSA9PT0gbnVsbCkgewogICAgICAgIHNpbmdsZXRvbiQxID0gbmV3IFN5c3RlbVpvbmUoKTsKICAgICAgfQogICAgICByZXR1cm4gc2luZ2xldG9uJDE7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gInN5c3RlbSI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVW5pdmVyc2FsKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldE5hbWUodHMsIHsgZm9ybWF0LCBsb2NhbGUgfSkgewogICAgICByZXR1cm4gcGFyc2Vab25lSW5mbyh0cywgZm9ybWF0LCBsb2NhbGUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHJldHVybiAtbmV3IERhdGUodHMpLmdldFRpbWV6b25lT2Zmc2V0KCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAic3lzdGVtIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgbGV0IGR0ZkNhY2hlID0ge307CiAgZnVuY3Rpb24gbWFrZURURih6b25lKSB7CiAgICBpZiAoIWR0ZkNhY2hlW3pvbmVdKSB7CiAgICAgIGR0ZkNhY2hlW3pvbmVdID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIiwgewogICAgICAgIGhvdXIxMjogZmFsc2UsCiAgICAgICAgdGltZVpvbmU6IHpvbmUsCiAgICAgICAgeWVhcjogIm51bWVyaWMiLAogICAgICAgIG1vbnRoOiAiMi1kaWdpdCIsCiAgICAgICAgZGF5OiAiMi1kaWdpdCIsCiAgICAgICAgaG91cjogIjItZGlnaXQiLAogICAgICAgIG1pbnV0ZTogIjItZGlnaXQiLAogICAgICAgIHNlY29uZDogIjItZGlnaXQiLAogICAgICAgIGVyYTogInNob3J0IiwKICAgICAgfSk7CiAgICB9CiAgICByZXR1cm4gZHRmQ2FjaGVbem9uZV07CiAgfQoKICBjb25zdCB0eXBlVG9Qb3MgPSB7CiAgICB5ZWFyOiAwLAogICAgbW9udGg6IDEsCiAgICBkYXk6IDIsCiAgICBlcmE6IDMsCiAgICBob3VyOiA0LAogICAgbWludXRlOiA1LAogICAgc2Vjb25kOiA2LAogIH07CgogIGZ1bmN0aW9uIGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSkgewogICAgY29uc3QgZm9ybWF0dGVkID0gZHRmLmZvcm1hdChkYXRlKS5yZXBsYWNlKC9cdTIwMEUvZywgIiIpLAogICAgICBwYXJzZWQgPSAvKFxkKylcLyhcZCspXC8oXGQrKSAoQUR8QkMpLD8gKFxkKyk6KFxkKyk6KFxkKykvLmV4ZWMoZm9ybWF0dGVkKSwKICAgICAgWywgZk1vbnRoLCBmRGF5LCBmWWVhciwgZmFkT3JCYywgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gcGFyc2VkOwogICAgcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmYWRPckJjLCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF07CiAgfQoKICBmdW5jdGlvbiBwYXJ0c09mZnNldChkdGYsIGRhdGUpIHsKICAgIGNvbnN0IGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXRUb1BhcnRzKGRhdGUpOwogICAgY29uc3QgZmlsbGVkID0gW107CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykgewogICAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBmb3JtYXR0ZWRbaV07CiAgICAgIGNvbnN0IHBvcyA9IHR5cGVUb1Bvc1t0eXBlXTsKCiAgICAgIGlmICh0eXBlID09PSAiZXJhIikgewogICAgICAgIGZpbGxlZFtwb3NdID0gdmFsdWU7CiAgICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKHBvcykpIHsKICAgICAgICBmaWxsZWRbcG9zXSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmaWxsZWQ7CiAgfQoKICBsZXQgaWFuYVpvbmVDYWNoZSA9IHt9OwogIC8qKgogICAqIEEgem9uZSBpZGVudGlmaWVkIGJ5IGFuIElBTkEgaWRlbnRpZmllciwgbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgSUFOQVpvbmUgZXh0ZW5kcyBab25lIHsKICAgIC8qKgogICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBab25lIG5hbWUKICAgICAqIEByZXR1cm4ge0lBTkFab25lfQogICAgICovCiAgICBzdGF0aWMgY3JlYXRlKG5hbWUpIHsKICAgICAgaWYgKCFpYW5hWm9uZUNhY2hlW25hbWVdKSB7CiAgICAgICAgaWFuYVpvbmVDYWNoZVtuYW1lXSA9IG5ldyBJQU5BWm9uZShuYW1lKTsKICAgICAgfQogICAgICByZXR1cm4gaWFuYVpvbmVDYWNoZVtuYW1lXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7CiAgICAgIGlhbmFab25lQ2FjaGUgPSB7fTsKICAgICAgZHRmQ2FjaGUgPSB7fTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlzIGEgdmFsaWQgc3BlY2lmaWVyLiBUaGlzIG9ubHkgY2hlY2tzIHRoZSBzdHJpbmcncyBmb3JtYXQsIG5vdCB0aGF0IHRoZSBzcGVjaWZpZXIgaWRlbnRpZmllcyBhIGtub3duIHpvbmU7IHNlZSBpc1ZhbGlkWm9uZSBmb3IgdGhhdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIHN0cmluZyB0byBjaGVjayB2YWxpZGl0eSBvbgogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiQW1lcmljYS9OZXdfWW9yayIpIC8vPT4gdHJ1ZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiU3BvcnR+fmJsb3JwIikgLy89PiBmYWxzZQogICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgcmV0dXJucyBmYWxzZSBmb3Igc29tZSB2YWxpZCBJQU5BIG5hbWVzLiBVc2UgaXNWYWxpZFpvbmUgaW5zdGVhZC4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkU3BlY2lmaWVyKHMpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZFpvbmUocyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHByb3ZpZGVkIHN0cmluZyBpZGVudGlmaWVzIGEgcmVhbCB6b25lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFRoZSBzdHJpbmcgdG8gY2hlY2sKICAgICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKCJBbWVyaWNhL05ld19Zb3JrIikgLy89PiB0cnVlCiAgICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZSgiRmFudGFzaWEvQ2FzdGxlIikgLy89PiBmYWxzZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIlNwb3J0fn5ibG9ycCIpIC8vPT4gZmFsc2UKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkWm9uZSh6b25lKSB7CiAgICAgIGlmICghem9uZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbi1VUyIsIHsgdGltZVpvbmU6IHpvbmUgfSkuZm9ybWF0KCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KCiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy56b25lTmFtZSA9IG5hbWU7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy52YWxpZCA9IElBTkFab25lLmlzVmFsaWRab25lKG5hbWUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJpYW5hIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IG5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7CiAgICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSwgdGhpcy5uYW1lKTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLm9mZnNldCh0cyksIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCh0cykgewogICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpOwoKICAgICAgaWYgKGlzTmFOKGRhdGUpKSByZXR1cm4gTmFOOwoKICAgICAgY29uc3QgZHRmID0gbWFrZURURih0aGlzLm5hbWUpOwogICAgICBsZXQgW3llYXIsIG1vbnRoLCBkYXksIGFkT3JCYywgaG91ciwgbWludXRlLCBzZWNvbmRdID0gZHRmLmZvcm1hdFRvUGFydHMKICAgICAgICA/IHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkKICAgICAgICA6IGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSk7CgogICAgICBpZiAoYWRPckJjID09PSAiQkMiKSB7CiAgICAgICAgeWVhciA9IC1NYXRoLmFicyh5ZWFyKSArIDE7CiAgICAgIH0KCiAgICAgIC8vIGJlY2F1c2Ugd2UncmUgdXNpbmcgaG91cjEyIGFuZCBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDI1NTY0JmNhbj0yJnE9JTIyMjQlM0EwMCUyMiUyMGRhdGV0aW1lZm9ybWF0CiAgICAgIGNvbnN0IGFkanVzdGVkSG91ciA9IGhvdXIgPT09IDI0ID8gMCA6IGhvdXI7CgogICAgICBjb25zdCBhc1VUQyA9IG9ialRvTG9jYWxUUyh7CiAgICAgICAgeWVhciwKICAgICAgICBtb250aCwKICAgICAgICBkYXksCiAgICAgICAgaG91cjogYWRqdXN0ZWRIb3VyLAogICAgICAgIG1pbnV0ZSwKICAgICAgICBzZWNvbmQsCiAgICAgICAgbWlsbGlzZWNvbmQ6IDAsCiAgICAgIH0pOwoKICAgICAgbGV0IGFzVFMgPSArZGF0ZTsKICAgICAgY29uc3Qgb3ZlciA9IGFzVFMgJSAxMDAwOwogICAgICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlcjsKICAgICAgcmV0dXJuIChhc1VUQyAtIGFzVFMpIC8gKDYwICogMTAwMCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiaWFuYSIgJiYgb3RoZXJab25lLm5hbWUgPT09IHRoaXMubmFtZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0aGlzLnZhbGlkOwogICAgfQogIH0KCiAgLy8gdG9kbyAtIHJlbWFwIGNhY2hpbmcKCiAgbGV0IGludGxMRkNhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkTEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBkdGYgPSBpbnRsTEZDYWNoZVtrZXldOwogICAgaWYgKCFkdGYpIHsKICAgICAgZHRmID0gbmV3IEludGwuTGlzdEZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTEZDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsRFRDYWNoZSA9IHt9OwogIGZ1bmN0aW9uIGdldENhY2hlZERURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkgewogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pOwogICAgbGV0IGR0ZiA9IGludGxEVENhY2hlW2tleV07CiAgICBpZiAoIWR0ZikgewogICAgICBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsRFRDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsTnVtQ2FjaGUgPSB7fTsKICBmdW5jdGlvbiBnZXRDYWNoZWRJTkYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBpbmYgPSBpbnRsTnVtQ2FjaGVba2V5XTsKICAgIGlmICghaW5mKSB7CiAgICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTnVtQ2FjaGVba2V5XSA9IGluZjsKICAgIH0KICAgIHJldHVybiBpbmY7CiAgfQoKICBsZXQgaW50bFJlbENhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkUlRGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7CiAgICBjb25zdCB7IGJhc2UsIC4uLmNhY2hlS2V5T3B0cyB9ID0gb3B0czsgLy8gZXhjbHVkZSBgYmFzZWAgZnJvbSB0aGUgb3B0aW9ucwogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgY2FjaGVLZXlPcHRzXSk7CiAgICBsZXQgaW5mID0gaW50bFJlbENhY2hlW2tleV07CiAgICBpZiAoIWluZikgewogICAgICBpbmYgPSBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQobG9jU3RyaW5nLCBvcHRzKTsKICAgICAgaW50bFJlbENhY2hlW2tleV0gPSBpbmY7CiAgICB9CiAgICByZXR1cm4gaW5mOwogIH0KCiAgbGV0IHN5c0xvY2FsZUNhY2hlID0gbnVsbDsKICBmdW5jdGlvbiBzeXN0ZW1Mb2NhbGUoKSB7CiAgICBpZiAoc3lzTG9jYWxlQ2FjaGUpIHsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfSBlbHNlIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VMb2NhbGVTdHJpbmcobG9jYWxlU3RyKSB7CiAgICAvLyBJIHJlYWxseSB3YW50IHRvIGF2b2lkIHdyaXRpbmcgYSBCQ1AgNDcgcGFyc2VyCiAgICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDcKICAgIC8vIEluc3RlYWQsIHdlJ2xsIGRvIHRoaXM6CgogICAgLy8gYSkgaWYgdGhlIHN0cmluZyBoYXMgbm8gLXUgZXh0ZW5zaW9ucywganVzdCBsZWF2ZSBpdCBhbG9uZQogICAgLy8gYikgaWYgaXQgZG9lcywgdXNlIEludGwgdG8gcmVzb2x2ZSBldmVyeXRoaW5nCiAgICAvLyBjKSBpZiBJbnRsIGZhaWxzLCB0cnkgYWdhaW4gd2l0aG91dCB0aGUgLXUKCiAgICAvLyBwcml2YXRlIHN1YnRhZ3MgYW5kIHVuaWNvZGUgc3VidGFncyBoYXZlIG9yZGVyaW5nIHJlcXVpcmVtZW50cywKICAgIC8vIGFuZCB3ZSdyZSBub3QgcHJvcGVybHkgcGFyc2luZyB0aGlzLCBzbyBqdXN0IHN0cmlwIG91dCB0aGUKICAgIC8vIHByaXZhdGUgb25lcyBpZiB0aGV5IGV4aXN0LgogICAgY29uc3QgeEluZGV4ID0gbG9jYWxlU3RyLmluZGV4T2YoIi14LSIpOwogICAgaWYgKHhJbmRleCAhPT0gLTEpIHsKICAgICAgbG9jYWxlU3RyID0gbG9jYWxlU3RyLnN1YnN0cmluZygwLCB4SW5kZXgpOwogICAgfQoKICAgIGNvbnN0IHVJbmRleCA9IGxvY2FsZVN0ci5pbmRleE9mKCItdS0iKTsKICAgIGlmICh1SW5kZXggPT09IC0xKSB7CiAgICAgIHJldHVybiBbbG9jYWxlU3RyXTsKICAgIH0gZWxzZSB7CiAgICAgIGxldCBvcHRpb25zOwogICAgICBsZXQgc2VsZWN0ZWRTdHI7CiAgICAgIHRyeSB7CiAgICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihsb2NhbGVTdHIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gbG9jYWxlU3RyOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgY29uc3Qgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTsKICAgICAgICBvcHRpb25zID0gZ2V0Q2FjaGVkRFRGKHNtYWxsZXIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gc21hbGxlcjsKICAgICAgfQoKICAgICAgY29uc3QgeyBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBvcHRpb25zOwogICAgICByZXR1cm4gW3NlbGVjdGVkU3RyLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyXTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGludGxDb25maWdTdHJpbmcobG9jYWxlU3RyLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSB7CiAgICBpZiAob3V0cHV0Q2FsZW5kYXIgfHwgbnVtYmVyaW5nU3lzdGVtKSB7CiAgICAgIGlmICghbG9jYWxlU3RyLmluY2x1ZGVzKCItdS0iKSkgewogICAgICAgIGxvY2FsZVN0ciArPSAiLXUiOwogICAgICB9CgogICAgICBpZiAob3V0cHV0Q2FsZW5kYXIpIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1jYS0ke291dHB1dENhbGVuZGFyfWA7CiAgICAgIH0KCiAgICAgIGlmIChudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1udS0ke251bWJlcmluZ1N5c3RlbX1gOwogICAgICB9CiAgICAgIHJldHVybiBsb2NhbGVTdHI7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbG9jYWxlU3RyOwogICAgfQogIH0KCiAgZnVuY3Rpb24gbWFwTW9udGhzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxMjsgaSsrKSB7CiAgICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMDksIGksIDEpOwogICAgICBtcy5wdXNoKGYoZHQpKTsKICAgIH0KICAgIHJldHVybiBtczsKICB9CgogIGZ1bmN0aW9uIG1hcFdlZWtkYXlzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHsKICAgICAgY29uc3QgZHQgPSBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzICsgaSk7CiAgICAgIG1zLnB1c2goZihkdCkpOwogICAgfQogICAgcmV0dXJuIG1zOwogIH0KCiAgZnVuY3Rpb24gbGlzdFN0dWZmKGxvYywgbGVuZ3RoLCBlbmdsaXNoRm4sIGludGxGbikgewogICAgY29uc3QgbW9kZSA9IGxvYy5saXN0aW5nTW9kZSgpOwoKICAgIGlmIChtb2RlID09PSAiZXJyb3IiKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfSBlbHNlIGlmIChtb2RlID09PSAiZW4iKSB7CiAgICAgIHJldHVybiBlbmdsaXNoRm4obGVuZ3RoKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBpbnRsRm4obGVuZ3RoKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHN1cHBvcnRzRmFzdE51bWJlcnMobG9jKSB7CiAgICBpZiAobG9jLm51bWJlcmluZ1N5c3RlbSAmJiBsb2MubnVtYmVyaW5nU3lzdGVtICE9PSAibGF0biIpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICgKICAgICAgICBsb2MubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biIgfHwKICAgICAgICAhbG9jLmxvY2FsZSB8fAogICAgICAgIGxvYy5sb2NhbGUuc3RhcnRzV2l0aCgiZW4iKSB8fAogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvYy5pbnRsKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW0gPT09ICJsYXRuIgogICAgICApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgUG9seU51bWJlckZvcm1hdHRlciB7CiAgICBjb25zdHJ1Y3RvcihpbnRsLCBmb3JjZVNpbXBsZSwgb3B0cykgewogICAgICB0aGlzLnBhZFRvID0gb3B0cy5wYWRUbyB8fCAwOwogICAgICB0aGlzLmZsb29yID0gb3B0cy5mbG9vciB8fCBmYWxzZTsKCiAgICAgIGNvbnN0IHsgcGFkVG8sIGZsb29yLCAuLi5vdGhlck9wdHMgfSA9IG9wdHM7CgogICAgICBpZiAoIWZvcmNlU2ltcGxlIHx8IE9iamVjdC5rZXlzKG90aGVyT3B0cykubGVuZ3RoID4gMCkgewogICAgICAgIGNvbnN0IGludGxPcHRzID0geyB1c2VHcm91cGluZzogZmFsc2UsIC4uLm9wdHMgfTsKICAgICAgICBpZiAob3B0cy5wYWRUbyA+IDApIGludGxPcHRzLm1pbmltdW1JbnRlZ2VyRGlnaXRzID0gb3B0cy5wYWRUbzsKICAgICAgICB0aGlzLmluZiA9IGdldENhY2hlZElORihpbnRsLCBpbnRsT3B0cyk7CiAgICAgIH0KICAgIH0KCiAgICBmb3JtYXQoaSkgewogICAgICBpZiAodGhpcy5pbmYpIHsKICAgICAgICBjb25zdCBmaXhlZCA9IHRoaXMuZmxvb3IgPyBNYXRoLmZsb29yKGkpIDogaTsKICAgICAgICByZXR1cm4gdGhpcy5pbmYuZm9ybWF0KGZpeGVkKTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyB0byBtYXRjaCB0aGUgYnJvd3NlcidzIG51bWJlcmZvcm1hdHRlciBkZWZhdWx0cwogICAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiByb3VuZFRvKGksIDMpOwogICAgICAgIHJldHVybiBwYWRTdGFydChmaXhlZCwgdGhpcy5wYWRUbyk7CiAgICAgIH0KICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNsYXNzIFBvbHlEYXRlRm9ybWF0dGVyIHsKICAgIGNvbnN0cnVjdG9yKGR0LCBpbnRsLCBvcHRzKSB7CiAgICAgIHRoaXMub3B0cyA9IG9wdHM7CiAgICAgIHRoaXMub3JpZ2luYWxab25lID0gdW5kZWZpbmVkOwoKICAgICAgbGV0IHogPSB1bmRlZmluZWQ7CiAgICAgIGlmICh0aGlzLm9wdHMudGltZVpvbmUpIHsKICAgICAgICAvLyBEb24ndCBhcHBseSBhbnkgd29ya2Fyb3VuZHMgaWYgYSB0aW1lWm9uZSBpcyBleHBsaWNpdGx5IHByb3ZpZGVkIGluIG9wdHMKICAgICAgICB0aGlzLmR0ID0gZHQ7CiAgICAgIH0gZWxzZSBpZiAoZHQuem9uZS50eXBlID09PSAiZml4ZWQiKSB7CiAgICAgICAgLy8gVVRDLTggb3IgRXRjL1VUQy04IGFyZSBub3QgcGFydCBvZiB0emRhdGEsIG9ubHkgRXRjL0dNVCs4IGFuZCB0aGUgbGlrZS4KICAgICAgICAvLyBUaGF0IGlzIHdoeSBmaXhlZC1vZmZzZXQgVFogaXMgc2V0IHRvIHRoYXQgdW5sZXNzIGl0IGlzOgogICAgICAgIC8vIDEuIFJlcHJlc2VudGluZyBvZmZzZXQgMCB3aGVuIFVUQyBpcyB1c2VkIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yIGFuZCBkb2VzIG5vdCBiZWNvbWUgR01ULgogICAgICAgIC8vIDIuIFVuc3VwcG9ydGVkIGJ5IHRoZSBicm93c2VyOgogICAgICAgIC8vICAgIC0gc29tZSBkbyBub3Qgc3VwcG9ydCBFdGMvCiAgICAgICAgLy8gICAgLSA8IEV0Yy9HTVQtMTQsID4gRXRjL0dNVCsxMiwgYW5kIDMwLW1pbnV0ZSBvciA0NS1taW51dGUgb2Zmc2V0cyBhcmUgbm90IHBhcnQgb2YgdHpkYXRhCiAgICAgICAgY29uc3QgZ210T2Zmc2V0ID0gLTEgKiAoZHQub2Zmc2V0IC8gNjApOwogICAgICAgIGNvbnN0IG9mZnNldFogPSBnbXRPZmZzZXQgPj0gMCA/IGBFdGMvR01UKyR7Z210T2Zmc2V0fWAgOiBgRXRjL0dNVCR7Z210T2Zmc2V0fWA7CiAgICAgICAgaWYgKGR0Lm9mZnNldCAhPT0gMCAmJiBJQU5BWm9uZS5jcmVhdGUob2Zmc2V0WikudmFsaWQpIHsKICAgICAgICAgIHogPSBvZmZzZXRaOwogICAgICAgICAgdGhpcy5kdCA9IGR0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBOb3QgYWxsIGZpeGVkLW9mZnNldCB6b25lcyBsaWtlIEV0Yy8rNDozMCBhcmUgcHJlc2VudCBpbiB0emRhdGEgc28KICAgICAgICAgIC8vIHdlIG1hbnVhbGx5IGFwcGx5IHRoZSBvZmZzZXQgYW5kIHN1YnN0aXR1dGUgdGhlIHpvbmUgYXMgbmVlZGVkLgogICAgICAgICAgeiA9ICJVVEMiOwogICAgICAgICAgdGhpcy5kdCA9IGR0Lm9mZnNldCA9PT0gMCA/IGR0IDogZHQuc2V0Wm9uZSgiVVRDIikucGx1cyh7IG1pbnV0ZXM6IGR0Lm9mZnNldCB9KTsKICAgICAgICAgIHRoaXMub3JpZ2luYWxab25lID0gZHQuem9uZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZHQuem9uZS50eXBlID09PSAic3lzdGVtIikgewogICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgfSBlbHNlIGlmIChkdC56b25lLnR5cGUgPT09ICJpYW5hIikgewogICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgICB6ID0gZHQuem9uZS5uYW1lOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIEN1c3RvbSB6b25lcyBjYW4gaGF2ZSBhbnkgb2Zmc2V0IC8gb2Zmc2V0TmFtZSBzbyB3ZSBqdXN0IG1hbnVhbGx5CiAgICAgICAgLy8gYXBwbHkgdGhlIG9mZnNldCBhbmQgc3Vic3RpdHV0ZSB0aGUgem9uZSBhcyBuZWVkZWQuCiAgICAgICAgeiA9ICJVVEMiOwogICAgICAgIHRoaXMuZHQgPSBkdC5zZXRab25lKCJVVEMiKS5wbHVzKHsgbWludXRlczogZHQub2Zmc2V0IH0pOwogICAgICAgIHRoaXMub3JpZ2luYWxab25lID0gZHQuem9uZTsKICAgICAgfQoKICAgICAgY29uc3QgaW50bE9wdHMgPSB7IC4uLnRoaXMub3B0cyB9OwogICAgICBpbnRsT3B0cy50aW1lWm9uZSA9IGludGxPcHRzLnRpbWVab25lIHx8IHo7CiAgICAgIHRoaXMuZHRmID0gZ2V0Q2FjaGVkRFRGKGludGwsIGludGxPcHRzKTsKICAgIH0KCiAgICBmb3JtYXQoKSB7CiAgICAgIGlmICh0aGlzLm9yaWdpbmFsWm9uZSkgewogICAgICAgIC8vIElmIHdlIGhhdmUgdG8gc3Vic3RpdHV0ZSBpbiB0aGUgYWN0dWFsIHpvbmUgbmFtZSwgd2UgaGF2ZSB0byB1c2UKICAgICAgICAvLyBmb3JtYXRUb1BhcnRzIHNvIHRoYXQgdGhlIHRpbWV6b25lIGNhbiBiZSByZXBsYWNlZC4KICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRUb1BhcnRzKCkKICAgICAgICAgIC5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpCiAgICAgICAgICAuam9pbigiIik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZHRmLmZvcm1hdCh0aGlzLmR0LnRvSlNEYXRlKCkpOwogICAgfQoKICAgIGZvcm1hdFRvUGFydHMoKSB7CiAgICAgIGNvbnN0IHBhcnRzID0gdGhpcy5kdGYuZm9ybWF0VG9QYXJ0cyh0aGlzLmR0LnRvSlNEYXRlKCkpOwogICAgICBpZiAodGhpcy5vcmlnaW5hbFpvbmUpIHsKICAgICAgICByZXR1cm4gcGFydHMubWFwKChwYXJ0KSA9PiB7CiAgICAgICAgICBpZiAocGFydC50eXBlID09PSAidGltZVpvbmVOYW1lIikgewogICAgICAgICAgICBjb25zdCBvZmZzZXROYW1lID0gdGhpcy5vcmlnaW5hbFpvbmUub2Zmc2V0TmFtZSh0aGlzLmR0LnRzLCB7CiAgICAgICAgICAgICAgbG9jYWxlOiB0aGlzLmR0LmxvY2FsZSwKICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMub3B0cy50aW1lWm9uZU5hbWUsCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgIC4uLnBhcnQsCiAgICAgICAgICAgICAgdmFsdWU6IG9mZnNldE5hbWUsCiAgICAgICAgICAgIH07CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gcGFydDsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gcGFydHM7CiAgICB9CgogICAgcmVzb2x2ZWRPcHRpb25zKCkgewogICAgICByZXR1cm4gdGhpcy5kdGYucmVzb2x2ZWRPcHRpb25zKCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIFBvbHlSZWxGb3JtYXR0ZXIgewogICAgY29uc3RydWN0b3IoaW50bCwgaXNFbmdsaXNoLCBvcHRzKSB7CiAgICAgIHRoaXMub3B0cyA9IHsgc3R5bGU6ICJsb25nIiwgLi4ub3B0cyB9OwogICAgICBpZiAoIWlzRW5nbGlzaCAmJiBoYXNSZWxhdGl2ZSgpKSB7CiAgICAgICAgdGhpcy5ydGYgPSBnZXRDYWNoZWRSVEYoaW50bCwgb3B0cyk7CiAgICAgIH0KICAgIH0KCiAgICBmb3JtYXQoY291bnQsIHVuaXQpIHsKICAgICAgaWYgKHRoaXMucnRmKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdFJlbGF0aXZlVGltZSh1bml0LCBjb3VudCwgdGhpcy5vcHRzLm51bWVyaWMsIHRoaXMub3B0cy5zdHlsZSAhPT0gImxvbmciKTsKICAgICAgfQogICAgfQoKICAgIGZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpIHsKICAgICAgaWYgKHRoaXMucnRmKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgTG9jYWxlIHsKICAgIHN0YXRpYyBmcm9tT3B0cyhvcHRzKSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKG9wdHMubG9jYWxlLCBvcHRzLm51bWJlcmluZ1N5c3RlbSwgb3B0cy5vdXRwdXRDYWxlbmRhciwgb3B0cy5kZWZhdWx0VG9FTik7CiAgICB9CgogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIsIGRlZmF1bHRUb0VOID0gZmFsc2UpIHsKICAgICAgY29uc3Qgc3BlY2lmaWVkTG9jYWxlID0gbG9jYWxlIHx8IFNldHRpbmdzLmRlZmF1bHRMb2NhbGU7CiAgICAgIC8vIHRoZSBzeXN0ZW0gbG9jYWxlIGlzIHVzZWZ1bCBmb3IgaHVtYW4gcmVhZGFibGUgc3RyaW5ncyBidXQgYW5ub3lpbmcgZm9yIHBhcnNpbmcvZm9ybWF0dGluZyBrbm93biBmb3JtYXRzCiAgICAgIGNvbnN0IGxvY2FsZVIgPSBzcGVjaWZpZWRMb2NhbGUgfHwgKGRlZmF1bHRUb0VOID8gImVuLVVTIiA6IHN5c3RlbUxvY2FsZSgpKTsKICAgICAgY29uc3QgbnVtYmVyaW5nU3lzdGVtUiA9IG51bWJlcmluZ1N5c3RlbSB8fCBTZXR0aW5ncy5kZWZhdWx0TnVtYmVyaW5nU3lzdGVtOwogICAgICBjb25zdCBvdXRwdXRDYWxlbmRhclIgPSBvdXRwdXRDYWxlbmRhciB8fCBTZXR0aW5ncy5kZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICAgIHJldHVybiBuZXcgTG9jYWxlKGxvY2FsZVIsIG51bWJlcmluZ1N5c3RlbVIsIG91dHB1dENhbGVuZGFyUiwgc3BlY2lmaWVkTG9jYWxlKTsKICAgIH0KCiAgICBzdGF0aWMgcmVzZXRDYWNoZSgpIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBudWxsOwogICAgICBpbnRsRFRDYWNoZSA9IHt9OwogICAgICBpbnRsTnVtQ2FjaGUgPSB7fTsKICAgICAgaW50bFJlbENhY2hlID0ge307CiAgICB9CgogICAgc3RhdGljIGZyb21PYmplY3QoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcik7CiAgICB9CgogICAgY29uc3RydWN0b3IobG9jYWxlLCBudW1iZXJpbmcsIG91dHB1dENhbGVuZGFyLCBzcGVjaWZpZWRMb2NhbGUpIHsKICAgICAgY29uc3QgW3BhcnNlZExvY2FsZSwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtLCBwYXJzZWRPdXRwdXRDYWxlbmRhcl0gPSBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGUpOwoKICAgICAgdGhpcy5sb2NhbGUgPSBwYXJzZWRMb2NhbGU7CiAgICAgIHRoaXMubnVtYmVyaW5nU3lzdGVtID0gbnVtYmVyaW5nIHx8IHBhcnNlZE51bWJlcmluZ1N5c3RlbSB8fCBudWxsOwogICAgICB0aGlzLm91dHB1dENhbGVuZGFyID0gb3V0cHV0Q2FsZW5kYXIgfHwgcGFyc2VkT3V0cHV0Q2FsZW5kYXIgfHwgbnVsbDsKICAgICAgdGhpcy5pbnRsID0gaW50bENvbmZpZ1N0cmluZyh0aGlzLmxvY2FsZSwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sIHRoaXMub3V0cHV0Q2FsZW5kYXIpOwoKICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9OwogICAgICB0aGlzLm1vbnRoc0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9OwogICAgICB0aGlzLm1lcmlkaWVtQ2FjaGUgPSBudWxsOwogICAgICB0aGlzLmVyYUNhY2hlID0ge307CgogICAgICB0aGlzLnNwZWNpZmllZExvY2FsZSA9IHNwZWNpZmllZExvY2FsZTsKICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IG51bGw7CiAgICB9CgogICAgZ2V0IGZhc3ROdW1iZXJzKCkgewogICAgICBpZiAodGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9PSBudWxsKSB7CiAgICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IHN1cHBvcnRzRmFzdE51bWJlcnModGhpcyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkOwogICAgfQoKICAgIGxpc3RpbmdNb2RlKCkgewogICAgICBjb25zdCBpc0FjdHVhbGx5RW4gPSB0aGlzLmlzRW5nbGlzaCgpOwogICAgICBjb25zdCBoYXNOb1dlaXJkbmVzcyA9CiAgICAgICAgKHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBudWxsIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biIpICYmCiAgICAgICAgKHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG51bGwgfHwgdGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gImdyZWdvcnkiKTsKICAgICAgcmV0dXJuIGlzQWN0dWFsbHlFbiAmJiBoYXNOb1dlaXJkbmVzcyA/ICJlbiIgOiAiaW50bCI7CiAgICB9CgogICAgY2xvbmUoYWx0cykgewogICAgICBpZiAoIWFsdHMgfHwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYWx0cykubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUoCiAgICAgICAgICBhbHRzLmxvY2FsZSB8fCB0aGlzLnNwZWNpZmllZExvY2FsZSwKICAgICAgICAgIGFsdHMubnVtYmVyaW5nU3lzdGVtIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgYWx0cy5vdXRwdXRDYWxlbmRhciB8fCB0aGlzLm91dHB1dENhbGVuZGFyLAogICAgICAgICAgYWx0cy5kZWZhdWx0VG9FTiB8fCBmYWxzZQogICAgICAgICk7CiAgICAgIH0KICAgIH0KCiAgICByZWRlZmF1bHRUb0VOKGFsdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiB0cnVlIH0pOwogICAgfQoKICAgIHJlZGVmYXVsdFRvU3lzdGVtKGFsdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiBmYWxzZSB9KTsKICAgIH0KCiAgICBtb250aHMobGVuZ3RoLCBmb3JtYXQgPSBmYWxzZSkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgbW9udGhzLCAoKSA9PiB7CiAgICAgICAgY29uc3QgaW50bCA9IGZvcm1hdCA/IHsgbW9udGg6IGxlbmd0aCwgZGF5OiAibnVtZXJpYyIgfSA6IHsgbW9udGg6IGxlbmd0aCB9LAogICAgICAgICAgZm9ybWF0U3RyID0gZm9ybWF0ID8gImZvcm1hdCIgOiAic3RhbmRhbG9uZSI7CiAgICAgICAgaWYgKCF0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy5tb250aHNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0gPSBtYXBNb250aHMoKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJtb250aCIpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdOwogICAgICB9KTsKICAgIH0KCiAgICB3ZWVrZGF5cyhsZW5ndGgsIGZvcm1hdCA9IGZhbHNlKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCB3ZWVrZGF5cywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQKICAgICAgICAgICAgPyB7IHdlZWtkYXk6IGxlbmd0aCwgeWVhcjogIm51bWVyaWMiLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9CiAgICAgICAgICAgIDogeyB3ZWVrZGF5OiBsZW5ndGggfSwKICAgICAgICAgIGZvcm1hdFN0ciA9IGZvcm1hdCA/ICJmb3JtYXQiIDogInN0YW5kYWxvbmUiOwogICAgICAgIGlmICghdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSA9IG1hcFdlZWtkYXlzKChkdCkgPT4KICAgICAgICAgICAgdGhpcy5leHRyYWN0KGR0LCBpbnRsLCAid2Vla2RheSIpCiAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgbWVyaWRpZW1zKCkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKAogICAgICAgIHRoaXMsCiAgICAgICAgdW5kZWZpbmVkLAogICAgICAgICgpID0+IG1lcmlkaWVtcywKICAgICAgICAoKSA9PiB7CiAgICAgICAgICAvLyBJbiB0aGVvcnkgdGhlcmUgY291bGQgYmUgYXJpYml0cmFyeSBkYXkgcGVyaW9kcy4gV2UncmUgZ29ubmEgYXNzdW1lIHRoZXJlIGFyZSBleGFjdGx5IHR3bwogICAgICAgICAgLy8gZm9yIEFNIGFuZCBQTS4gVGhpcyBpcyBwcm9iYWJseSB3cm9uZywgYnV0IGl0J3MgbWFrZXMgcGFyc2luZyB3YXkgZWFzaWVyLgogICAgICAgICAgaWYgKCF0aGlzLm1lcmlkaWVtQ2FjaGUpIHsKICAgICAgICAgICAgY29uc3QgaW50bCA9IHsgaG91cjogIm51bWVyaWMiLCBob3VyQ3ljbGU6ICJoMTIiIH07CiAgICAgICAgICAgIHRoaXMubWVyaWRpZW1DYWNoZSA9IFtEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCA5KSwgRGF0ZVRpbWUudXRjKDIwMTYsIDExLCAxMywgMTkpXS5tYXAoCiAgICAgICAgICAgICAgKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJkYXlwZXJpb2QiKQogICAgICAgICAgICApOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiB0aGlzLm1lcmlkaWVtQ2FjaGU7CiAgICAgICAgfQogICAgICApOwogICAgfQoKICAgIGVyYXMobGVuZ3RoKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBlcmFzLCAoKSA9PiB7CiAgICAgICAgY29uc3QgaW50bCA9IHsgZXJhOiBsZW5ndGggfTsKCiAgICAgICAgLy8gVGhpcyBpcyBwcm9ibGVtYXRpYy4gRGlmZmVyZW50IGNhbGVuZGFycyBhcmUgZ29pbmcgdG8gZGVmaW5lIGVyYXMgdG90YWxseSBkaWZmZXJlbnRseS4gV2hhdCBJIG5lZWQgaXMgdGhlIG1pbmltdW0gc2V0IG9mIGRhdGVzCiAgICAgICAgLy8gdG8gZGVmaW5pdGVseSBlbnVtZXJhdGUgdGhlbS4KICAgICAgICBpZiAoIXRoaXMuZXJhQ2FjaGVbbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy5lcmFDYWNoZVtsZW5ndGhdID0gW0RhdGVUaW1lLnV0YygtNDAsIDEsIDEpLCBEYXRlVGltZS51dGMoMjAxNywgMSwgMSldLm1hcCgoZHQpID0+CiAgICAgICAgICAgIHRoaXMuZXh0cmFjdChkdCwgaW50bCwgImVyYSIpCiAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuZXJhQ2FjaGVbbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgZXh0cmFjdChkdCwgaW50bE9wdHMsIGZpZWxkKSB7CiAgICAgIGNvbnN0IGRmID0gdGhpcy5kdEZvcm1hdHRlcihkdCwgaW50bE9wdHMpLAogICAgICAgIHJlc3VsdHMgPSBkZi5mb3JtYXRUb1BhcnRzKCksCiAgICAgICAgbWF0Y2hpbmcgPSByZXN1bHRzLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBmaWVsZCk7CiAgICAgIHJldHVybiBtYXRjaGluZyA/IG1hdGNoaW5nLnZhbHVlIDogbnVsbDsKICAgIH0KCiAgICBudW1iZXJGb3JtYXR0ZXIob3B0cyA9IHt9KSB7CiAgICAgIC8vIHRoaXMgZm9yY2VzaW1wbGUgb3B0aW9uIGlzIG5ldmVyIHVzZWQgKHRoZSBvbmx5IGNhbGxlciBzaG9ydC1jaXJjdWl0cyBvbiBpdCwgYnV0IGl0IHNlZW1zIHNhZmVyIHRvIGxlYXZlKQogICAgICAvLyAoaW4gY29udHJhc3QsIHRoZSByZXN0IG9mIHRoZSBjb25kaXRpb24gaXMgdXNlZCBoZWF2aWx5KQogICAgICByZXR1cm4gbmV3IFBvbHlOdW1iZXJGb3JtYXR0ZXIodGhpcy5pbnRsLCBvcHRzLmZvcmNlU2ltcGxlIHx8IHRoaXMuZmFzdE51bWJlcnMsIG9wdHMpOwogICAgfQoKICAgIGR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiBuZXcgUG9seURhdGVGb3JtYXR0ZXIoZHQsIHRoaXMuaW50bCwgaW50bE9wdHMpOwogICAgfQoKICAgIHJlbEZvcm1hdHRlcihvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIG5ldyBQb2x5UmVsRm9ybWF0dGVyKHRoaXMuaW50bCwgdGhpcy5pc0VuZ2xpc2goKSwgb3B0cyk7CiAgICB9CgogICAgbGlzdEZvcm1hdHRlcihvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIGdldENhY2hlZExGKHRoaXMuaW50bCwgb3B0cyk7CiAgICB9CgogICAgaXNFbmdsaXNoKCkgewogICAgICByZXR1cm4gKAogICAgICAgIHRoaXMubG9jYWxlID09PSAiZW4iIHx8CiAgICAgICAgdGhpcy5sb2NhbGUudG9Mb3dlckNhc2UoKSA9PT0gImVuLXVzIiB8fAogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuaW50bCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLnN0YXJ0c1dpdGgoImVuLXVzIikKICAgICAgKTsKICAgIH0KCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgcmV0dXJuICgKICAgICAgICB0aGlzLmxvY2FsZSA9PT0gb3RoZXIubG9jYWxlICYmCiAgICAgICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IG90aGVyLm51bWJlcmluZ1N5c3RlbSAmJgogICAgICAgIHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG90aGVyLm91dHB1dENhbGVuZGFyCiAgICAgICk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uID0gbnVsbDsKCiAgLyoqCiAgICogQSB6b25lIHdpdGggYSBmaXhlZCBvZmZzZXQgKG1lYW5pbmcgbm8gRFNUKQogICAqIEBpbXBsZW1lbnRzIHtab25lfQogICAqLwogIGNsYXNzIEZpeGVkT2Zmc2V0Wm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgVVRDCiAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgdXRjSW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24gPT09IG51bGwpIHsKICAgICAgICBzaW5nbGV0b24gPSBuZXcgRml4ZWRPZmZzZXRab25lKDApOwogICAgICB9CiAgICAgIHJldHVybiBzaW5nbGV0b247CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYW4gaW5zdGFuY2Ugd2l0aCBhIHNwZWNpZmllZCBvZmZzZXQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgLSBUaGUgb2Zmc2V0IGluIG1pbnV0ZXMKICAgICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX0KICAgICAqLwogICAgc3RhdGljIGluc3RhbmNlKG9mZnNldCkgewogICAgICByZXR1cm4gb2Zmc2V0ID09PSAwID8gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlIDogbmV3IEZpeGVkT2Zmc2V0Wm9uZShvZmZzZXQpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGFuIGluc3RhbmNlIG9mIEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIGEgVVRDIG9mZnNldCBzdHJpbmcsIGxpa2UgIlVUQys2IgogICAgICogQHBhcmFtIHtzdHJpbmd9IHMgLSBUaGUgb2Zmc2V0IHN0cmluZyB0byBwYXJzZQogICAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKCJVVEMrNiIpCiAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQyswNiIpCiAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQy02OjAwIikKICAgICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX0KICAgICAqLwogICAgc3RhdGljIHBhcnNlU3BlY2lmaWVyKHMpIHsKICAgICAgaWYgKHMpIHsKICAgICAgICBjb25zdCByID0gcy5tYXRjaCgvXnV0Yyg/OihbKy1dXGR7MSwyfSkoPzo6KFxkezJ9KSk/KT8kL2kpOwogICAgICAgIGlmIChyKSB7CiAgICAgICAgICByZXR1cm4gbmV3IEZpeGVkT2Zmc2V0Wm9uZShzaWduZWRPZmZzZXQoclsxXSwgclsyXSkpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBjb25zdHJ1Y3RvcihvZmZzZXQpIHsKICAgICAgc3VwZXIoKTsKICAgICAgLyoqIEBwcml2YXRlICoqLwogICAgICB0aGlzLmZpeGVkID0gb2Zmc2V0OwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJmaXhlZCI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5maXhlZCA9PT0gMCA/ICJVVEMiIDogYFVUQyR7Zm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsICJuYXJyb3ciKX1gOwogICAgfQoKICAgIGdldCBpYW5hTmFtZSgpIHsKICAgICAgaWYgKHRoaXMuZml4ZWQgPT09IDApIHsKICAgICAgICByZXR1cm4gIkV0Yy9VVEMiOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBgRXRjL0dNVCR7Zm9ybWF0T2Zmc2V0KC10aGlzLmZpeGVkLCAibmFycm93Iil9YDsKICAgICAgfQogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXROYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5uYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1VuaXZlcnNhbCgpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZml4ZWQ7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiZml4ZWQiICYmIG90aGVyWm9uZS5maXhlZCA9PT0gdGhpcy5maXhlZDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgLyoqCiAgICogQSB6b25lIHRoYXQgZmFpbGVkIHRvIHBhcnNlLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy4KICAgKiBAaW1wbGVtZW50cyB7Wm9uZX0KICAgKi8KICBjbGFzcyBJbnZhbGlkWm9uZSBleHRlbmRzIFpvbmUgewogICAgY29uc3RydWN0b3Ioem9uZU5hbWUpIHsKICAgICAgc3VwZXIoKTsKICAgICAgLyoqICBAcHJpdmF0ZSAqLwogICAgICB0aGlzLnpvbmVOYW1lID0gem9uZU5hbWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gImludmFsaWQiOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuem9uZU5hbWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1VuaXZlcnNhbCgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXROYW1lKCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCgpIHsKICAgICAgcmV0dXJuIE5hTjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZXF1YWxzKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBub3JtYWxpemVab25lKGlucHV0LCBkZWZhdWx0Wm9uZSkgewogICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSB8fCBpbnB1dCA9PT0gbnVsbCkgewogICAgICByZXR1cm4gZGVmYXVsdFpvbmU7CiAgICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgWm9uZSkgewogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKGlucHV0KSkgewogICAgICBjb25zdCBsb3dlcmVkID0gaW5wdXQudG9Mb3dlckNhc2UoKTsKICAgICAgaWYgKGxvd2VyZWQgPT09ICJkZWZhdWx0IikgcmV0dXJuIGRlZmF1bHRab25lOwogICAgICBlbHNlIGlmIChsb3dlcmVkID09PSAibG9jYWwiIHx8IGxvd2VyZWQgPT09ICJzeXN0ZW0iKSByZXR1cm4gU3lzdGVtWm9uZS5pbnN0YW5jZTsKICAgICAgZWxzZSBpZiAobG93ZXJlZCA9PT0gInV0YyIgfHwgbG93ZXJlZCA9PT0gImdtdCIpIHJldHVybiBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2U7CiAgICAgIGVsc2UgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihsb3dlcmVkKSB8fCBJQU5BWm9uZS5jcmVhdGUoaW5wdXQpOwogICAgfSBlbHNlIGlmIChpc051bWJlcihpbnB1dCkpIHsKICAgICAgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5pbnN0YW5jZShpbnB1dCk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gIm9iamVjdCIgJiYgIm9mZnNldCIgaW4gaW5wdXQgJiYgdHlwZW9mIGlucHV0Lm9mZnNldCA9PT0gImZ1bmN0aW9uIikgewogICAgICAvLyBUaGlzIGlzIGR1bWIsIGJ1dCB0aGUgaW5zdGFuY2VvZiBjaGVjayBhYm92ZSBkb2Vzbid0IHNlZW0gdG8gcmVhbGx5IHdvcmsKICAgICAgLy8gc28gd2UncmUgZHVjayBjaGVja2luZyBpdAogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbmV3IEludmFsaWRab25lKGlucHV0KTsKICAgIH0KICB9CgogIGxldCBub3cgPSAoKSA9PiBEYXRlLm5vdygpLAogICAgZGVmYXVsdFpvbmUgPSAic3lzdGVtIiwKICAgIGRlZmF1bHRMb2NhbGUgPSBudWxsLAogICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bGwsCiAgICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLAogICAgdHdvRGlnaXRDdXRvZmZZZWFyID0gNjAsCiAgICB0aHJvd09uSW52YWxpZDsKCiAgLyoqCiAgICogU2V0dGluZ3MgY29udGFpbnMgc3RhdGljIGdldHRlcnMgYW5kIHNldHRlcnMgdGhhdCBjb250cm9sIEx1eG9uJ3Mgb3ZlcmFsbCBiZWhhdmlvci4gTHV4b24gaXMgYSBzaW1wbGUgbGlicmFyeSB3aXRoIGZldyBvcHRpb25zLCBidXQgdGhlIG9uZXMgaXQgZG9lcyBoYXZlIGxpdmUgaGVyZS4KICAgKi8KICBjbGFzcyBTZXR0aW5ncyB7CiAgICAvKioKICAgICAqIEdldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuCiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgbm93KCkgewogICAgICByZXR1cm4gbm93OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBjYWxsYmFjayBmb3IgcmV0dXJuaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KICAgICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgbnVtYmVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIEVwb2NoIG1pbGxpc2Vjb25kIGNvdW50CiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiBEYXRlLm5vdygpICsgMzAwMCAvLyBwcmV0ZW5kIGl0IGlzIDMgc2Vjb25kcyBpbiB0aGUgZnV0dXJlCiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiAwIC8vIGFsd2F5cyBwcmV0ZW5kIGl0J3MgSmFuIDEsIDE5NzAgYXQgbWlkbmlnaHQgaW4gVVRDIHRpbWUKICAgICAqLwogICAgc3RhdGljIHNldCBub3cobikgewogICAgICBub3cgPSBuOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSB0byBjcmVhdGUgRGF0ZVRpbWVzIGluLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogVXNlIHRoZSB2YWx1ZSAic3lzdGVtIiB0byByZXNldCB0aGlzIHZhbHVlIHRvIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgc2V0IGRlZmF1bHRab25lKHpvbmUpIHsKICAgICAgZGVmYXVsdFpvbmUgPSB6b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSBvYmplY3QgY3VycmVudGx5IHVzZWQgdG8gY3JlYXRlIERhdGVUaW1lcy4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUgKHRoZSBvbmUgc2V0IG9uIHRoZSBtYWNoaW5lIHRoYXQgcnVucyB0aGlzIGNvZGUpLgogICAgICogQHR5cGUge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgZGVmYXVsdFpvbmUoKSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGRlZmF1bHRab25lLCBTeXN0ZW1ab25lLmluc3RhbmNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TG9jYWxlKCkgewogICAgICByZXR1cm4gZGVmYXVsdExvY2FsZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIHNldCBkZWZhdWx0TG9jYWxlKGxvY2FsZSkgewogICAgICBkZWZhdWx0TG9jYWxlID0gbG9jYWxlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IG51bWJlcmluZyBzeXN0ZW0gdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gZGVmYXVsdE51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbShudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBvdXRwdXQgY2FsZW5kYXIgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIoKSB7CiAgICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKG91dHB1dENhbGVuZGFyKSB7CiAgICAgIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjdXRvZmYgeWVhciBhZnRlciB3aGljaCBhIHN0cmluZyBlbmNvZGluZyBhIHllYXIgYXMgdHdvIGRpZ2l0cyBpcyBpbnRlcnByZXRlZCB0byBvY2N1ciBpbiB0aGUgY3VycmVudCBjZW50dXJ5LgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgc3RhdGljIGdldCB0d29EaWdpdEN1dG9mZlllYXIoKSB7CiAgICAgIHJldHVybiB0d29EaWdpdEN1dG9mZlllYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGN1dG9mZiB5ZWFyIGFmdGVyIHdoaWNoIGEgc3RyaW5nIGVuY29kaW5nIGEgeWVhciBhcyB0d28gZGlnaXRzIGlzIGludGVycHJldGVkIHRvIG9jY3VyIGluIHRoZSBjdXJyZW50IGNlbnR1cnkuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gMCAvLyBjdXQtb2ZmIHllYXIgaXMgMCwgc28gYWxsICd5eScgYXJlIGludGVycHJldGVkIGFzIGN1cnJlbnQgY2VudHVyeQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gNTAgLy8gJzQ5JyAtPiAxOTQ5OyAnNTAnIC0+IDIwNTAKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDE5NTAgLy8gaW50ZXJwcmV0ZWQgYXMgNTAKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDIwNTAgLy8gQUxTTyBpbnRlcnByZXRlZCBhcyA1MAogICAgICovCiAgICBzdGF0aWMgc2V0IHR3b0RpZ2l0Q3V0b2ZmWWVhcihjdXRvZmZZZWFyKSB7CiAgICAgIHR3b0RpZ2l0Q3V0b2ZmWWVhciA9IGN1dG9mZlllYXIgJSAxMDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgZ2V0IHRocm93T25JbnZhbGlkKCkgewogICAgICByZXR1cm4gdGhyb3dPbkludmFsaWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgc2V0IHRocm93T25JbnZhbGlkKHQpIHsKICAgICAgdGhyb3dPbkludmFsaWQgPSB0OwogICAgfQoKICAgIC8qKgogICAgICogUmVzZXQgTHV4b24ncyBnbG9iYWwgY2FjaGVzLiBTaG91bGQgb25seSBiZSBuZWNlc3NhcnkgaW4gdGVzdGluZyBzY2VuYXJpb3MuCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBzdGF0aWMgcmVzZXRDYWNoZXMoKSB7CiAgICAgIExvY2FsZS5yZXNldENhY2hlKCk7CiAgICAgIElBTkFab25lLnJlc2V0Q2FjaGUoKTsKICAgIH0KICB9CgogIC8qCiAgICBUaGlzIGlzIGp1c3QgYSBqdW5rIGRyYXdlciwgY29udGFpbmluZyBhbnl0aGluZyB1c2VkIGFjcm9zcyBtdWx0aXBsZSBjbGFzc2VzLgogICAgQmVjYXVzZSBMdXhvbiBpcyBzbWFsbChpc2gpLCB0aGlzIHNob3VsZCBzdGF5IHNtYWxsIGFuZCB3ZSB3b24ndCB3b3JyeSBhYm91dCBzcGxpdHRpbmcKICAgIGl0IHVwIGludG8sIHNheSwgcGFyc2luZ1V0aWwuanMgYW5kIGJhc2ljVXRpbC5qcyBhbmQgc28gb24uIEJ1dCB0aGV5IGFyZSBkaXZpZGVkIHVwIGJ5IGZlYXR1cmUgYXJlYS4KICAqLwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICAvLyBUWVBFUwoKICBmdW5jdGlvbiBpc1VuZGVmaW5lZChvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJ1bmRlZmluZWQiOwogIH0KCiAgZnVuY3Rpb24gaXNOdW1iZXIobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAibnVtYmVyIjsKICB9CgogIGZ1bmN0aW9uIGlzSW50ZWdlcihvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJudW1iZXIiICYmIG8gJSAxID09PSAwOwogIH0KCiAgZnVuY3Rpb24gaXNTdHJpbmcobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAic3RyaW5nIjsKICB9CgogIGZ1bmN0aW9uIGlzRGF0ZShvKSB7CiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pID09PSAiW29iamVjdCBEYXRlXSI7CiAgfQoKICAvLyBDQVBBQklMSVRJRVMKCiAgZnVuY3Rpb24gaGFzUmVsYXRpdmUoKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gdHlwZW9mIEludGwgIT09ICJ1bmRlZmluZWQiICYmICEhSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CgogIC8vIE9CSkVDVFMgQU5EIEFSUkFZUwoKICBmdW5jdGlvbiBtYXliZUFycmF5KHRoaW5nKSB7CiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGluZykgPyB0aGluZyA6IFt0aGluZ107CiAgfQoKICBmdW5jdGlvbiBiZXN0QnkoYXJyLCBieSwgY29tcGFyZSkgewogICAgaWYgKGFyci5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0KICAgIHJldHVybiBhcnIucmVkdWNlKChiZXN0LCBuZXh0KSA9PiB7CiAgICAgIGNvbnN0IHBhaXIgPSBbYnkobmV4dCksIG5leHRdOwogICAgICBpZiAoIWJlc3QpIHsKICAgICAgICByZXR1cm4gcGFpcjsKICAgICAgfSBlbHNlIGlmIChjb21wYXJlKGJlc3RbMF0sIHBhaXJbMF0pID09PSBiZXN0WzBdKSB7CiAgICAgICAgcmV0dXJuIGJlc3Q7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhaXI7CiAgICAgIH0KICAgIH0sIG51bGwpWzFdOwogIH0KCiAgZnVuY3Rpb24gcGljayhvYmosIGtleXMpIHsKICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYSwgaykgPT4gewogICAgICBhW2tdID0gb2JqW2tdOwogICAgICByZXR1cm4gYTsKICAgIH0sIHt9KTsKICB9CgogIGZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkgewogICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOwogIH0KCiAgLy8gTlVNQkVSUyBBTkQgU1RSSU5HUwoKICBmdW5jdGlvbiBpbnRlZ2VyQmV0d2Vlbih0aGluZywgYm90dG9tLCB0b3ApIHsKICAgIHJldHVybiBpc0ludGVnZXIodGhpbmcpICYmIHRoaW5nID49IGJvdHRvbSAmJiB0aGluZyA8PSB0b3A7CiAgfQoKICAvLyB4ICUgbiBidXQgdGFrZXMgdGhlIHNpZ24gb2YgbiBpbnN0ZWFkIG9mIHgKICBmdW5jdGlvbiBmbG9vck1vZCh4LCBuKSB7CiAgICByZXR1cm4geCAtIG4gKiBNYXRoLmZsb29yKHggLyBuKTsKICB9CgogIGZ1bmN0aW9uIHBhZFN0YXJ0KGlucHV0LCBuID0gMikgewogICAgY29uc3QgaXNOZWcgPSBpbnB1dCA8IDA7CiAgICBsZXQgcGFkZGVkOwogICAgaWYgKGlzTmVnKSB7CiAgICAgIHBhZGRlZCA9ICItIiArICgiIiArIC1pbnB1dCkucGFkU3RhcnQobiwgIjAiKTsKICAgIH0gZWxzZSB7CiAgICAgIHBhZGRlZCA9ICgiIiArIGlucHV0KS5wYWRTdGFydChuLCAiMCIpOwogICAgfQogICAgcmV0dXJuIHBhZGRlZDsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSW50ZWdlcihzdHJpbmcpIHsKICAgIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09ICIiKSB7CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nLCAxMCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZUZsb2F0aW5nKHN0cmluZykgewogICAgaWYgKGlzVW5kZWZpbmVkKHN0cmluZykgfHwgc3RyaW5nID09PSBudWxsIHx8IHN0cmluZyA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHN0cmluZyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZU1pbGxpcyhmcmFjdGlvbikgewogICAgLy8gUmV0dXJuIHVuZGVmaW5lZCAoaW5zdGVhZCBvZiAwKSBpbiB0aGVzZSBjYXNlcywgd2hlcmUgZnJhY3Rpb24gaXMgbm90IHNldAogICAgaWYgKGlzVW5kZWZpbmVkKGZyYWN0aW9uKSB8fCBmcmFjdGlvbiA9PT0gbnVsbCB8fCBmcmFjdGlvbiA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IGYgPSBwYXJzZUZsb2F0KCIwLiIgKyBmcmFjdGlvbikgKiAxMDAwOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihmKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJvdW5kVG8obnVtYmVyLCBkaWdpdHMsIHRvd2FyZFplcm8gPSBmYWxzZSkgewogICAgY29uc3QgZmFjdG9yID0gMTAgKiogZGlnaXRzLAogICAgICByb3VuZGVyID0gdG93YXJkWmVybyA/IE1hdGgudHJ1bmMgOiBNYXRoLnJvdW5kOwogICAgcmV0dXJuIHJvdW5kZXIobnVtYmVyICogZmFjdG9yKSAvIGZhY3RvcjsKICB9CgogIC8vIERBVEUgQkFTSUNTCgogIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikgewogICAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApOwogIH0KCiAgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7CiAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTsKICB9CgogIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7CiAgICBjb25zdCBtb2RNb250aCA9IGZsb29yTW9kKG1vbnRoIC0gMSwgMTIpICsgMSwKICAgICAgbW9kWWVhciA9IHllYXIgKyAobW9udGggLSBtb2RNb250aCkgLyAxMjsKCiAgICBpZiAobW9kTW9udGggPT09IDIpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIobW9kWWVhcikgPyAyOSA6IDI4OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdW21vZE1vbnRoIC0gMV07CiAgICB9CiAgfQoKICAvLyBjb252ZXJ0IGEgY2FsZW5kYXIgb2JqZWN0IHRvIGEgbG9jYWwgdGltZXN0YW1wIChlcG9jaCwgYnV0IHdpdGggdGhlIG9mZnNldCBiYWtlZCBpbikKICBmdW5jdGlvbiBvYmpUb0xvY2FsVFMob2JqKSB7CiAgICBsZXQgZCA9IERhdGUuVVRDKAogICAgICBvYmoueWVhciwKICAgICAgb2JqLm1vbnRoIC0gMSwKICAgICAgb2JqLmRheSwKICAgICAgb2JqLmhvdXIsCiAgICAgIG9iai5taW51dGUsCiAgICAgIG9iai5zZWNvbmQsCiAgICAgIG9iai5taWxsaXNlY29uZAogICAgKTsKCiAgICAvLyBmb3IgbGVnYWN5IHJlYXNvbnMsIHllYXJzIGJldHdlZW4gMCBhbmQgOTkgYXJlIGludGVycHJldGVkIGFzIDE5WFg7IHJldmVydCB0aGF0CiAgICBpZiAob2JqLnllYXIgPCAxMDAgJiYgb2JqLnllYXIgPj0gMCkgewogICAgICBkID0gbmV3IERhdGUoZCk7CiAgICAgIC8vIHNldCB0aGUgbW9udGggYW5kIGRheSBhZ2FpbiwgdGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB5ZWFyIDIwMDAgaXMgYSBsZWFwIHllYXIsIGJ1dCB5ZWFyIDEwMCBpcyBub3QKICAgICAgLy8gc28gaWYgb2JqLnllYXIgaXMgaW4gOTksIGJ1dCBvYmouZGF5IG1ha2VzIGl0IHJvbGwgb3ZlciBpbnRvIHllYXIgMTAwLAogICAgICAvLyB0aGUgY2FsY3VsYXRpb25zIGRvbmUgYnkgRGF0ZS5VVEMgYXJlIHVzaW5nIHllYXIgMjAwMCAtIHdoaWNoIGlzIGluY29ycmVjdAogICAgICBkLnNldFVUQ0Z1bGxZZWFyKG9iai55ZWFyLCBvYmoubW9udGggLSAxLCBvYmouZGF5KTsKICAgIH0KICAgIHJldHVybiArZDsKICB9CgogIGZ1bmN0aW9uIHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcikgewogICAgY29uc3QgcDEgPQogICAgICAgICh3ZWVrWWVhciArCiAgICAgICAgICBNYXRoLmZsb29yKHdlZWtZZWFyIC8gNCkgLQogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDEwMCkgKwogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQwMCkpICUKICAgICAgICA3LAogICAgICBsYXN0ID0gd2Vla1llYXIgLSAxLAogICAgICBwMiA9IChsYXN0ICsgTWF0aC5mbG9vcihsYXN0IC8gNCkgLSBNYXRoLmZsb29yKGxhc3QgLyAxMDApICsgTWF0aC5mbG9vcihsYXN0IC8gNDAwKSkgJSA3OwogICAgcmV0dXJuIHAxID09PSA0IHx8IHAyID09PSAzID8gNTMgOiA1MjsKICB9CgogIGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXIpIHsKICAgIGlmICh5ZWFyID4gOTkpIHsKICAgICAgcmV0dXJuIHllYXI7CiAgICB9IGVsc2UgcmV0dXJuIHllYXIgPiBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPyAxOTAwICsgeWVhciA6IDIwMDAgKyB5ZWFyOwogIH0KCiAgLy8gUEFSU0lORwoKICBmdW5jdGlvbiBwYXJzZVpvbmVJbmZvKHRzLCBvZmZzZXRGb3JtYXQsIGxvY2FsZSwgdGltZVpvbmUgPSBudWxsKSB7CiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpLAogICAgICBpbnRsT3B0cyA9IHsKICAgICAgICBob3VyQ3ljbGU6ICJoMjMiLAogICAgICAgIHllYXI6ICJudW1lcmljIiwKICAgICAgICBtb250aDogIjItZGlnaXQiLAogICAgICAgIGRheTogIjItZGlnaXQiLAogICAgICAgIGhvdXI6ICIyLWRpZ2l0IiwKICAgICAgICBtaW51dGU6ICIyLWRpZ2l0IiwKICAgICAgfTsKCiAgICBpZiAodGltZVpvbmUpIHsKICAgICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTsKICAgIH0KCiAgICBjb25zdCBtb2RpZmllZCA9IHsgdGltZVpvbmVOYW1lOiBvZmZzZXRGb3JtYXQsIC4uLmludGxPcHRzIH07CgogICAgY29uc3QgcGFyc2VkID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBtb2RpZmllZCkKICAgICAgLmZvcm1hdFRvUGFydHMoZGF0ZSkKICAgICAgLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSAidGltZXpvbmVuYW1lIik7CiAgICByZXR1cm4gcGFyc2VkID8gcGFyc2VkLnZhbHVlIDogbnVsbDsKICB9CgogIC8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwCiAgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikgewogICAgbGV0IG9mZkhvdXIgPSBwYXJzZUludChvZmZIb3VyU3RyLCAxMCk7CgogICAgLy8gZG9uJ3QgfHwgdGhpcyBiZWNhdXNlIHdlIHdhbnQgdG8gcHJlc2VydmUgLTAKICAgIGlmIChOdW1iZXIuaXNOYU4ob2ZmSG91cikpIHsKICAgICAgb2ZmSG91ciA9IDA7CiAgICB9CgogICAgY29uc3Qgb2ZmTWluID0gcGFyc2VJbnQob2ZmTWludXRlU3RyLCAxMCkgfHwgMCwKICAgICAgb2ZmTWluU2lnbmVkID0gb2ZmSG91ciA8IDAgfHwgT2JqZWN0LmlzKG9mZkhvdXIsIC0wKSA/IC1vZmZNaW4gOiBvZmZNaW47CiAgICByZXR1cm4gb2ZmSG91ciAqIDYwICsgb2ZmTWluU2lnbmVkOwogIH0KCiAgLy8gQ09FUkNJT04KCiAgZnVuY3Rpb24gYXNOdW1iZXIodmFsdWUpIHsKICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2YWx1ZSk7CiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAiYm9vbGVhbiIgfHwgdmFsdWUgPT09ICIiIHx8IE51bWJlci5pc05hTihudW1lcmljVmFsdWUpKQogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEludmFsaWQgdW5pdCB2YWx1ZSAke3ZhbHVlfWApOwogICAgcmV0dXJuIG51bWVyaWNWYWx1ZTsKICB9CgogIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7fTsKICAgIGZvciAoY29uc3QgdSBpbiBvYmopIHsKICAgICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHsKICAgICAgICBjb25zdCB2ID0gb2JqW3VdOwogICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVyKHUpXSA9IGFzTnVtYmVyKHYpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9mZnNldChvZmZzZXQsIGZvcm1hdCkgewogICAgY29uc3QgaG91cnMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAvIDYwKSksCiAgICAgIG1pbnV0ZXMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAlIDYwKSksCiAgICAgIHNpZ24gPSBvZmZzZXQgPj0gMCA/ICIrIiA6ICItIjsKCiAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIGAke3NpZ259JHtwYWRTdGFydChob3VycywgMil9OiR7cGFkU3RhcnQobWludXRlcywgMil9YDsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke2hvdXJzfSR7bWludXRlcyA+IDAgPyBgOiR7bWludXRlc31gIDogIiJ9YDsKICAgICAgY2FzZSAidGVjaGllIjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX0ke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFZhbHVlIGZvcm1hdCAke2Zvcm1hdH0gaXMgb3V0IG9mIHJhbmdlIGZvciBwcm9wZXJ0eSBmb3JtYXRgKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7CiAgICByZXR1cm4gcGljayhvYmosIFsiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0pOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY29uc3QgbW9udGhzTG9uZyA9IFsKICAgICJKYW51YXJ5IiwKICAgICJGZWJydWFyeSIsCiAgICAiTWFyY2giLAogICAgIkFwcmlsIiwKICAgICJNYXkiLAogICAgIkp1bmUiLAogICAgIkp1bHkiLAogICAgIkF1Z3VzdCIsCiAgICAiU2VwdGVtYmVyIiwKICAgICJPY3RvYmVyIiwKICAgICJOb3ZlbWJlciIsCiAgICAiRGVjZW1iZXIiLAogIF07CgogIGNvbnN0IG1vbnRoc1Nob3J0ID0gWwogICAgIkphbiIsCiAgICAiRmViIiwKICAgICJNYXIiLAogICAgIkFwciIsCiAgICAiTWF5IiwKICAgICJKdW4iLAogICAgIkp1bCIsCiAgICAiQXVnIiwKICAgICJTZXAiLAogICAgIk9jdCIsCiAgICAiTm92IiwKICAgICJEZWMiLAogIF07CgogIGNvbnN0IG1vbnRoc05hcnJvdyA9IFsiSiIsICJGIiwgIk0iLCAiQSIsICJNIiwgIkoiLCAiSiIsICJBIiwgIlMiLCAiTyIsICJOIiwgIkQiXTsKCiAgZnVuY3Rpb24gbW9udGhzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc05hcnJvd107CiAgICAgIGNhc2UgInNob3J0IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc1Nob3J0XTsKICAgICAgY2FzZSAibG9uZyI6CiAgICAgICAgcmV0dXJuIFsuLi5tb250aHNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgY2FzZSAiMi1kaWdpdCI6CiAgICAgICAgcmV0dXJuIFsiMDEiLCAiMDIiLCAiMDMiLCAiMDQiLCAiMDUiLCAiMDYiLCAiMDciLCAiMDgiLCAiMDkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGNvbnN0IHdlZWtkYXlzTG9uZyA9IFsKICAgICJNb25kYXkiLAogICAgIlR1ZXNkYXkiLAogICAgIldlZG5lc2RheSIsCiAgICAiVGh1cnNkYXkiLAogICAgIkZyaWRheSIsCiAgICAiU2F0dXJkYXkiLAogICAgIlN1bmRheSIsCiAgXTsKCiAgY29uc3Qgd2Vla2RheXNTaG9ydCA9IFsiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIl07CgogIGNvbnN0IHdlZWtkYXlzTmFycm93ID0gWyJNIiwgIlQiLCAiVyIsICJUIiwgIkYiLCAiUyIsICJTIl07CgogIGZ1bmN0aW9uIHdlZWtkYXlzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLndlZWtkYXlzTmFycm93XTsKICAgICAgY2FzZSAic2hvcnQiOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNTaG9ydF07CiAgICAgIGNhc2UgImxvbmciOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyJdOwogICAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiBudWxsOwogICAgfQogIH0KCiAgY29uc3QgbWVyaWRpZW1zID0gWyJBTSIsICJQTSJdOwoKICBjb25zdCBlcmFzTG9uZyA9IFsiQmVmb3JlIENocmlzdCIsICJBbm5vIERvbWluaSJdOwoKICBjb25zdCBlcmFzU2hvcnQgPSBbIkJDIiwgIkFEIl07CgogIGNvbnN0IGVyYXNOYXJyb3cgPSBbIkIiLCAiQSJdOwoKICBmdW5jdGlvbiBlcmFzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNOYXJyb3ddOwogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIFsuLi5lcmFzU2hvcnRdOwogICAgICBjYXNlICJsb25nIjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNMb25nXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpIHsKICAgIHJldHVybiBtZXJpZGllbXNbZHQuaG91ciA8IDEyID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHsKICAgIHJldHVybiB3ZWVrZGF5cyhsZW5ndGgpW2R0LndlZWtkYXkgLSAxXTsKICB9CgogIGZ1bmN0aW9uIG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkgewogICAgcmV0dXJuIG1vbnRocyhsZW5ndGgpW2R0Lm1vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiBlcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7CiAgICByZXR1cm4gZXJhcyhsZW5ndGgpW2R0LnllYXIgPCAwID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCBudW1lcmljID0gImFsd2F5cyIsIG5hcnJvdyA9IGZhbHNlKSB7CiAgICBjb25zdCB1bml0cyA9IHsKICAgICAgeWVhcnM6IFsieWVhciIsICJ5ci4iXSwKICAgICAgcXVhcnRlcnM6IFsicXVhcnRlciIsICJxdHIuIl0sCiAgICAgIG1vbnRoczogWyJtb250aCIsICJtby4iXSwKICAgICAgd2Vla3M6IFsid2VlayIsICJ3ay4iXSwKICAgICAgZGF5czogWyJkYXkiLCAiZGF5IiwgImRheXMiXSwKICAgICAgaG91cnM6IFsiaG91ciIsICJoci4iXSwKICAgICAgbWludXRlczogWyJtaW51dGUiLCAibWluLiJdLAogICAgICBzZWNvbmRzOiBbInNlY29uZCIsICJzZWMuIl0sCiAgICB9OwoKICAgIGNvbnN0IGxhc3RhYmxlID0gWyJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiXS5pbmRleE9mKHVuaXQpID09PSAtMTsKCiAgICBpZiAobnVtZXJpYyA9PT0gImF1dG8iICYmIGxhc3RhYmxlKSB7CiAgICAgIGNvbnN0IGlzRGF5ID0gdW5pdCA9PT0gImRheXMiOwogICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvbW9ycm93IiA6IGBuZXh0ICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgICBjYXNlIC0xOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInllc3RlcmRheSIgOiBgbGFzdCAke3VuaXRzW3VuaXRdWzBdfWA7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvZGF5IiA6IGB0aGlzICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgfQogICAgfQoKICAgIGNvbnN0IGlzSW5QYXN0ID0gT2JqZWN0LmlzKGNvdW50LCAtMCkgfHwgY291bnQgPCAwLAogICAgICBmbXRWYWx1ZSA9IE1hdGguYWJzKGNvdW50KSwKICAgICAgc2luZ3VsYXIgPSBmbXRWYWx1ZSA9PT0gMSwKICAgICAgbGlsVW5pdHMgPSB1bml0c1t1bml0XSwKICAgICAgZm10VW5pdCA9IG5hcnJvdwogICAgICAgID8gc2luZ3VsYXIKICAgICAgICAgID8gbGlsVW5pdHNbMV0KICAgICAgICAgIDogbGlsVW5pdHNbMl0gfHwgbGlsVW5pdHNbMV0KICAgICAgICA6IHNpbmd1bGFyCiAgICAgICAgPyB1bml0c1t1bml0XVswXQogICAgICAgIDogdW5pdDsKICAgIHJldHVybiBpc0luUGFzdCA/IGAke2ZtdFZhbHVlfSAke2ZtdFVuaXR9IGFnb2AgOiBgaW4gJHtmbXRWYWx1ZX0gJHtmbXRVbml0fWA7CiAgfQoKICBmdW5jdGlvbiBzdHJpbmdpZnlUb2tlbnMoc3BsaXRzLCB0b2tlblRvU3RyaW5nKSB7CiAgICBsZXQgcyA9ICIiOwogICAgZm9yIChjb25zdCB0b2tlbiBvZiBzcGxpdHMpIHsKICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICBzICs9IHRva2VuLnZhbDsKICAgICAgfSBlbHNlIHsKICAgICAgICBzICs9IHRva2VuVG9TdHJpbmcodG9rZW4udmFsKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHM7CiAgfQoKICBjb25zdCBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzID0gewogICAgRDogREFURV9TSE9SVCwKICAgIEREOiBEQVRFX01FRCwKICAgIERERDogREFURV9GVUxMLAogICAgRERERDogREFURV9IVUdFLAogICAgdDogVElNRV9TSU1QTEUsCiAgICB0dDogVElNRV9XSVRIX1NFQ09ORFMsCiAgICB0dHQ6IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQsCiAgICB0dHR0OiBUSU1FX1dJVEhfTE9OR19PRkZTRVQsCiAgICBUOiBUSU1FXzI0X1NJTVBMRSwKICAgIFRUOiBUSU1FXzI0X1dJVEhfU0VDT05EUywKICAgIFRUVDogVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCwKICAgIFRUVFQ6IFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCwKICAgIGY6IERBVEVUSU1FX1NIT1JULAogICAgZmY6IERBVEVUSU1FX01FRCwKICAgIGZmZjogREFURVRJTUVfRlVMTCwKICAgIGZmZmY6IERBVEVUSU1FX0hVR0UsCiAgICBGOiBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMsCiAgICBGRjogREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUywKICAgIEZGRjogREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMsCiAgICBGRkZGOiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUywKICB9OwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBGb3JtYXR0ZXIgewogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gbmV3IEZvcm1hdHRlcihsb2NhbGUsIG9wdHMpOwogICAgfQoKICAgIHN0YXRpYyBwYXJzZUZvcm1hdChmbXQpIHsKICAgICAgLy8gd2hpdGUtc3BhY2UgaXMgYWx3YXlzIGNvbnNpZGVyZWQgYSBsaXRlcmFsIGluIHVzZXItcHJvdmlkZWQgZm9ybWF0cwogICAgICAvLyB0aGUgIiAiIHRva2VuIGhhcyBhIHNwZWNpYWwgbWVhbmluZyAoc2VlIHVuaXRGb3JUb2tlbikKCiAgICAgIGxldCBjdXJyZW50ID0gbnVsbCwKICAgICAgICBjdXJyZW50RnVsbCA9ICIiLAogICAgICAgIGJyYWNrZXRlZCA9IGZhbHNlOwogICAgICBjb25zdCBzcGxpdHMgPSBbXTsKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbXQubGVuZ3RoOyBpKyspIHsKICAgICAgICBjb25zdCBjID0gZm10LmNoYXJBdChpKTsKICAgICAgICBpZiAoYyA9PT0gIiciKSB7CiAgICAgICAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkgewogICAgICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCB8fCAvXlxzKyQvLnRlc3QoY3VycmVudEZ1bGwpLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICAgICAgfQogICAgICAgICAgY3VycmVudCA9IG51bGw7CiAgICAgICAgICBjdXJyZW50RnVsbCA9ICIiOwogICAgICAgICAgYnJhY2tldGVkID0gIWJyYWNrZXRlZDsKICAgICAgICB9IGVsc2UgaWYgKGJyYWNrZXRlZCkgewogICAgICAgICAgY3VycmVudEZ1bGwgKz0gYzsKICAgICAgICB9IGVsc2UgaWYgKGMgPT09IGN1cnJlbnQpIHsKICAgICAgICAgIGN1cnJlbnRGdWxsICs9IGM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogL15ccyskLy50ZXN0KGN1cnJlbnRGdWxsKSwgdmFsOiBjdXJyZW50RnVsbCB9KTsKICAgICAgICAgIH0KICAgICAgICAgIGN1cnJlbnRGdWxsID0gYzsKICAgICAgICAgIGN1cnJlbnQgPSBjOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGN1cnJlbnRGdWxsLmxlbmd0aCA+IDApIHsKICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCB8fCAvXlxzKyQvLnRlc3QoY3VycmVudEZ1bGwpLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICB9CgogICAgICByZXR1cm4gc3BsaXRzOwogICAgfQoKICAgIHN0YXRpYyBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuKSB7CiAgICAgIHJldHVybiBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzW3Rva2VuXTsKICAgIH0KCiAgICBjb25zdHJ1Y3Rvcihsb2NhbGUsIGZvcm1hdE9wdHMpIHsKICAgICAgdGhpcy5vcHRzID0gZm9ybWF0T3B0czsKICAgICAgdGhpcy5sb2MgPSBsb2NhbGU7CiAgICAgIHRoaXMuc3lzdGVtTG9jID0gbnVsbDsKICAgIH0KCiAgICBmb3JtYXRXaXRoU3lzdGVtRGVmYXVsdChkdCwgb3B0cykgewogICAgICBpZiAodGhpcy5zeXN0ZW1Mb2MgPT09IG51bGwpIHsKICAgICAgICB0aGlzLnN5c3RlbUxvYyA9IHRoaXMubG9jLnJlZGVmYXVsdFRvU3lzdGVtKCk7CiAgICAgIH0KICAgICAgY29uc3QgZGYgPSB0aGlzLnN5c3RlbUxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5mb3JtYXQoKTsKICAgIH0KCiAgICBkdEZvcm1hdHRlcihkdCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICB9CgogICAgZm9ybWF0RGF0ZVRpbWUoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLmZvcm1hdCgpOwogICAgfQoKICAgIGZvcm1hdERhdGVUaW1lUGFydHMoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLmZvcm1hdFRvUGFydHMoKTsKICAgIH0KCiAgICBmb3JtYXRJbnRlcnZhbChpbnRlcnZhbCwgb3B0cykgewogICAgICBjb25zdCBkZiA9IHRoaXMuZHRGb3JtYXR0ZXIoaW50ZXJ2YWwuc3RhcnQsIG9wdHMpOwogICAgICByZXR1cm4gZGYuZHRmLmZvcm1hdFJhbmdlKGludGVydmFsLnN0YXJ0LnRvSlNEYXRlKCksIGludGVydmFsLmVuZC50b0pTRGF0ZSgpKTsKICAgIH0KCiAgICByZXNvbHZlZE9wdGlvbnMoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLnJlc29sdmVkT3B0aW9ucygpOwogICAgfQoKICAgIG51bShuLCBwID0gMCkgewogICAgICAvLyB3ZSBnZXQgc29tZSBwZXJmIG91dCBvZiBkb2luZyB0aGlzIGhlcmUsIGFubm95aW5nbHkKICAgICAgaWYgKHRoaXMub3B0cy5mb3JjZVNpbXBsZSkgewogICAgICAgIHJldHVybiBwYWRTdGFydChuLCBwKTsKICAgICAgfQoKICAgICAgY29uc3Qgb3B0cyA9IHsgLi4udGhpcy5vcHRzIH07CgogICAgICBpZiAocCA+IDApIHsKICAgICAgICBvcHRzLnBhZFRvID0gcDsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMubG9jLm51bWJlckZvcm1hdHRlcihvcHRzKS5mb3JtYXQobik7CiAgICB9CgogICAgZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKGR0LCBmbXQpIHsKICAgICAgY29uc3Qga25vd25FbmdsaXNoID0gdGhpcy5sb2MubGlzdGluZ01vZGUoKSA9PT0gImVuIiwKICAgICAgICB1c2VEYXRlVGltZUZvcm1hdHRlciA9IHRoaXMubG9jLm91dHB1dENhbGVuZGFyICYmIHRoaXMubG9jLm91dHB1dENhbGVuZGFyICE9PSAiZ3JlZ29yeSIsCiAgICAgICAgc3RyaW5nID0gKG9wdHMsIGV4dHJhY3QpID0+IHRoaXMubG9jLmV4dHJhY3QoZHQsIG9wdHMsIGV4dHJhY3QpLAogICAgICAgIGZvcm1hdE9mZnNldCA9IChvcHRzKSA9PiB7CiAgICAgICAgICBpZiAoZHQuaXNPZmZzZXRGaXhlZCAmJiBkdC5vZmZzZXQgPT09IDAgJiYgb3B0cy5hbGxvd1opIHsKICAgICAgICAgICAgcmV0dXJuICJaIjsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gZHQuaXNWYWxpZCA/IGR0LnpvbmUuZm9ybWF0T2Zmc2V0KGR0LnRzLCBvcHRzLmZvcm1hdCkgOiAiIjsKICAgICAgICB9LAogICAgICAgIG1lcmlkaWVtID0gKCkgPT4KICAgICAgICAgIGtub3duRW5nbGlzaAogICAgICAgICAgICA/IG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpCiAgICAgICAgICAgIDogc3RyaW5nKHsgaG91cjogIm51bWVyaWMiLCBob3VyQ3ljbGU6ICJoMTIiIH0sICJkYXlwZXJpb2QiKSwKICAgICAgICBtb250aCA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyBtb250aEZvckRhdGVUaW1lKGR0LCBsZW5ndGgpCiAgICAgICAgICAgIDogc3RyaW5nKHN0YW5kYWxvbmUgPyB7IG1vbnRoOiBsZW5ndGggfSA6IHsgbW9udGg6IGxlbmd0aCwgZGF5OiAibnVtZXJpYyIgfSwgIm1vbnRoIiksCiAgICAgICAgd2Vla2RheSA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyB3ZWVrZGF5Rm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkKICAgICAgICAgICAgOiBzdHJpbmcoCiAgICAgICAgICAgICAgICBzdGFuZGFsb25lID8geyB3ZWVrZGF5OiBsZW5ndGggfSA6IHsgd2Vla2RheTogbGVuZ3RoLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9LAogICAgICAgICAgICAgICAgIndlZWtkYXkiCiAgICAgICAgICAgICAgKSwKICAgICAgICBtYXliZU1hY3JvID0gKHRva2VuKSA9PiB7CiAgICAgICAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pOwogICAgICAgICAgaWYgKGZvcm1hdE9wdHMpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0V2l0aFN5c3RlbURlZmF1bHQoZHQsIGZvcm1hdE9wdHMpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZXJhID0gKGxlbmd0aCkgPT4KICAgICAgICAgIGtub3duRW5nbGlzaCA/IGVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIDogc3RyaW5nKHsgZXJhOiBsZW5ndGggfSwgImVyYSIpLAogICAgICAgIHRva2VuVG9TdHJpbmcgPSAodG9rZW4pID0+IHsKICAgICAgICAgIC8vIFdoZXJlIHBvc3NpYmxlOiBodHRwczovL2NsZHIudW5pY29kZS5vcmcvdHJhbnNsYXRpb24vZGF0ZS10aW1lL2RhdGUtdGltZS1zeW1ib2xzCiAgICAgICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgICAgICAgIC8vIG1zCiAgICAgICAgICAgIGNhc2UgIlMiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taWxsaXNlY29uZCk7CiAgICAgICAgICAgIGNhc2UgInUiOgogICAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgICAgIGNhc2UgIlNTUyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbGxpc2Vjb25kLCAzKTsKICAgICAgICAgICAgLy8gc2Vjb25kcwogICAgICAgICAgICBjYXNlICJzIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuc2Vjb25kKTsKICAgICAgICAgICAgY2FzZSAic3MiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5zZWNvbmQsIDIpOwogICAgICAgICAgICAvLyBmcmFjdGlvbmFsIHNlY29uZHMKICAgICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGR0Lm1pbGxpc2Vjb25kIC8gMTApLCAyKTsKICAgICAgICAgICAgY2FzZSAidXV1IjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC5taWxsaXNlY29uZCAvIDEwMCkpOwogICAgICAgICAgICAvLyBtaW51dGVzCiAgICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taW51dGUpOwogICAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbnV0ZSwgMik7CiAgICAgICAgICAgIC8vIGhvdXJzCiAgICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMik7CiAgICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciAlIDEyID09PSAwID8gMTIgOiBkdC5ob3VyICUgMTIsIDIpOwogICAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91cik7CiAgICAgICAgICAgIGNhc2UgIkhIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciwgMik7CiAgICAgICAgICAgIC8vIG9mZnNldAogICAgICAgICAgICBjYXNlICJaIjoKICAgICAgICAgICAgICAvLyBsaWtlICs2CiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogIm5hcnJvdyIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTsKICAgICAgICAgICAgY2FzZSAiWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2OjAwCiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogInNob3J0IiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2MDAKICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHsgZm9ybWF0OiAidGVjaGllIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlIEVTVAogICAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiAic2hvcnQiLCBsb2NhbGU6IHRoaXMubG9jLmxvY2FsZSB9KTsKICAgICAgICAgICAgY2FzZSAiWlpaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgRWFzdGVybiBTdGFuZGFyZCBUaW1lCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmUub2Zmc2V0TmFtZShkdC50cywgeyBmb3JtYXQ6ICJsb25nIiwgbG9jYWxlOiB0aGlzLmxvYy5sb2NhbGUgfSk7CiAgICAgICAgICAgIC8vIHpvbmUKICAgICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmVOYW1lOwogICAgICAgICAgICAvLyBtZXJpZGllbXMKICAgICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgICAgcmV0dXJuIG1lcmlkaWVtKCk7CiAgICAgICAgICAgIC8vIGRhdGVzCiAgICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7IGRheTogIm51bWVyaWMiIH0sICJkYXkiKSA6IHRoaXMubnVtKGR0LmRheSk7CiAgICAgICAgICAgIGNhc2UgImRkIjoKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyBkYXk6ICIyLWRpZ2l0IiB9LCAiZGF5IikgOiB0aGlzLm51bShkdC5kYXksIDIpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtkYXkpOwogICAgICAgICAgICBjYXNlICJjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoInNob3J0IiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgImNjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiY2NjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1QnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIGZvcm1hdAogICAgICAgICAgICBjYXNlICJFIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7CiAgICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAnVHVlcycKICAgICAgICAgICAgICByZXR1cm4gd2Vla2RheSgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUVFIjoKICAgICAgICAgICAgICAvLyBsaWtlICdUJwogICAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KCJuYXJyb3ciLCBmYWxzZSk7CiAgICAgICAgICAgIC8vIG1vbnRocyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoKTsKICAgICAgICAgICAgY2FzZSAiTEwiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEsIGRvZXNuJ3Qgc2VlbSB0byB3b3JrCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAiMi1kaWdpdCIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiTExMTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5CiAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoKCJsb25nIiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgIkxMTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEoKICAgICAgICAgICAgICByZXR1cm4gbW9udGgoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyBtb250aHMgLSBmb3JtYXQKICAgICAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIgfSwgIm1vbnRoIikKICAgICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgpOwogICAgICAgICAgICBjYXNlICJNTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMQogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogIjItZGlnaXQiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIk1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSmFudWFyeQogICAgICAgICAgICAgIHJldHVybiBtb250aCgibG9uZyIsIGZhbHNlKTsKICAgICAgICAgICAgY2FzZSAiTU1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSgogICAgICAgICAgICAgIHJldHVybiBtb250aCgibmFycm93IiwgZmFsc2UpOwogICAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICAvLyBsaWtlIDIwMTQKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyB5ZWFyOiAibnVtZXJpYyIgfSwgInllYXIiKSA6IHRoaXMubnVtKGR0LnllYXIpOwogICAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxNAogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiAiMi1kaWdpdCIgfSwgInllYXIiKQogICAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAieXl5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDQpOwogICAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDYpOwogICAgICAgICAgICAvLyBlcmFzCiAgICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICAgIC8vIGxpa2UgQUQKICAgICAgICAgICAgICByZXR1cm4gZXJhKCJzaG9ydCIpOwogICAgICAgICAgICBjYXNlICJHRyI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbm5vIERvbWluaQogICAgICAgICAgICAgIHJldHVybiBlcmEoImxvbmciKTsKICAgICAgICAgICAgY2FzZSAiR0dHR0ciOgogICAgICAgICAgICAgIHJldHVybiBlcmEoIm5hcnJvdyIpOwogICAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAia2trayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLCA0KTsKICAgICAgICAgICAgY2FzZSAiVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIpOwogICAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIsIDIpOwogICAgICAgICAgICBjYXNlICJvIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQub3JkaW5hbCk7CiAgICAgICAgICAgIGNhc2UgIm9vbyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm9yZGluYWwsIDMpOwogICAgICAgICAgICBjYXNlICJxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQucXVhcnRlcik7CiAgICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIsIDIpOwogICAgICAgICAgICBjYXNlICJYIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC50cyAvIDEwMDApKTsKICAgICAgICAgICAgY2FzZSAieCI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnRzKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICByZXR1cm4gbWF5YmVNYWNybyh0b2tlbik7CiAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIHRva2VuVG9TdHJpbmcpOwogICAgfQoKICAgIGZvcm1hdER1cmF0aW9uRnJvbVN0cmluZyhkdXIsIGZtdCkgewogICAgICBjb25zdCB0b2tlblRvRmllbGQgPSAodG9rZW4pID0+IHsKICAgICAgICAgIHN3aXRjaCAodG9rZW5bMF0pIHsKICAgICAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaWxsaXNlY29uZCI7CiAgICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICAgIHJldHVybiAic2Vjb25kIjsKICAgICAgICAgICAgY2FzZSAibSI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgICAgICBjYXNlICJoIjoKICAgICAgICAgICAgICByZXR1cm4gImhvdXIiOwogICAgICAgICAgICBjYXNlICJkIjoKICAgICAgICAgICAgICByZXR1cm4gImRheSI7CiAgICAgICAgICAgIGNhc2UgInciOgogICAgICAgICAgICAgIHJldHVybiAid2VlayI7CiAgICAgICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgICAgIHJldHVybiAibW9udGgiOwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICByZXR1cm4gInllYXIiOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdG9rZW5Ub1N0cmluZyA9IChsaWxkdXIpID0+ICh0b2tlbikgPT4gewogICAgICAgICAgY29uc3QgbWFwcGVkID0gdG9rZW5Ub0ZpZWxkKHRva2VuKTsKICAgICAgICAgIGlmIChtYXBwZWQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGxpbGR1ci5nZXQobWFwcGVkKSwgdG9rZW4ubGVuZ3RoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHRva2VucyA9IEZvcm1hdHRlci5wYXJzZUZvcm1hdChmbXQpLAogICAgICAgIHJlYWxUb2tlbnMgPSB0b2tlbnMucmVkdWNlKAogICAgICAgICAgKGZvdW5kLCB7IGxpdGVyYWwsIHZhbCB9KSA9PiAobGl0ZXJhbCA/IGZvdW5kIDogZm91bmQuY29uY2F0KHZhbCkpLAogICAgICAgICAgW10KICAgICAgICApLAogICAgICAgIGNvbGxhcHNlZCA9IGR1ci5zaGlmdFRvKC4uLnJlYWxUb2tlbnMubWFwKHRva2VuVG9GaWVsZCkuZmlsdGVyKCh0KSA9PiB0KSk7CiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnModG9rZW5zLCB0b2tlblRvU3RyaW5nKGNvbGxhcHNlZCkpOwogICAgfQogIH0KCiAgY2xhc3MgSW52YWxpZCB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24sIGV4cGxhbmF0aW9uKSB7CiAgICAgIHRoaXMucmVhc29uID0gcmVhc29uOwogICAgICB0aGlzLmV4cGxhbmF0aW9uID0gZXhwbGFuYXRpb247CiAgICB9CgogICAgdG9NZXNzYWdlKCkgewogICAgICBpZiAodGhpcy5leHBsYW5hdGlvbikgewogICAgICAgIHJldHVybiBgJHt0aGlzLnJlYXNvbn06ICR7dGhpcy5leHBsYW5hdGlvbn1gOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLnJlYXNvbjsKICAgICAgfQogICAgfQogIH0KCiAgLyoKICAgKiBUaGlzIGZpbGUgaGFuZGxlcyBwYXJzaW5nIGZvciB3ZWxsLXNwZWNpZmllZCBmb3JtYXRzLiBIZXJlJ3MgaG93IGl0IHdvcmtzOgogICAqIFR3byB0aGluZ3MgZ28gaW50byBwYXJzaW5nOiBhIHJlZ2V4IHRvIG1hdGNoIHdpdGggYW5kIGFuIGV4dHJhY3RvciB0byB0YWtlIGFwYXJ0IHRoZSBncm91cHMgaW4gdGhlIG1hdGNoLgogICAqIEFuIGV4dHJhY3RvciBpcyBqdXN0IGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHJlZ2V4IG1hdGNoIGFycmF5IGFuZCByZXR1cm5zIGEgeyB5ZWFyOiAuLi4sIG1vbnRoOiAuLi4gfSBvYmplY3QKICAgKiBwYXJzZSgpIGRvZXMgdGhlIHdvcmsgb2YgZXhlY3V0aW5nIHRoZSByZWdleCBhbmQgYXBwbHlpbmcgdGhlIGV4dHJhY3Rvci4gSXQgdGFrZXMgbXVsdGlwbGUgcmVnZXgvZXh0cmFjdG9yIHBhaXJzIHRvIHRyeSBpbiBzZXF1ZW5jZS4KICAgKiBFeHRyYWN0b3JzIGNhbiB0YWtlIGEgImN1cnNvciIgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQgaW4gdGhlIG1hdGNoIHRvIGxvb2sgYXQuIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBjb21iaW5lIGV4dHJhY3RvcnMuCiAgICogY29tYmluZUV4dHJhY3RvcnMoKSBkb2VzIHRoZSB3b3JrIG9mIGNvbWJpbmluZyB0aGVtLCBrZWVwaW5nIHRyYWNrIG9mIHRoZSBjdXJzb3IgdGhyb3VnaCBtdWx0aXBsZSBleHRyYWN0aW9ucy4KICAgKiBTb21lIGV4dHJhY3Rpb25zIGFyZSBzdXBlciBkdW1iIGFuZCBzaW1wbGVQYXJzZSBhbmQgZnJvbVN0cmluZ3MgaGVscCBEUlkgdGhlbS4KICAgKi8KCiAgY29uc3QgaWFuYVJlZ2V4ID0gL1tBLVphLXpfKy1dezEsMjU2fSg/Ojo/XC9bQS1aYS16MC05XystXXsxLDI1Nn0oPzpcL1tBLVphLXowLTlfKy1dezEsMjU2fSk/KT8vOwoKICBmdW5jdGlvbiBjb21iaW5lUmVnZXhlcyguLi5yZWdleGVzKSB7CiAgICBjb25zdCBmdWxsID0gcmVnZXhlcy5yZWR1Y2UoKGYsIHIpID0+IGYgKyByLnNvdXJjZSwgIiIpOwogICAgcmV0dXJuIFJlZ0V4cChgXiR7ZnVsbH0kYCk7CiAgfQoKICBmdW5jdGlvbiBjb21iaW5lRXh0cmFjdG9ycyguLi5leHRyYWN0b3JzKSB7CiAgICByZXR1cm4gKG0pID0+CiAgICAgIGV4dHJhY3RvcnMKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFttZXJnZWRWYWxzLCBtZXJnZWRab25lLCBjdXJzb3JdLCBleCkgPT4gewogICAgICAgICAgICBjb25zdCBbdmFsLCB6b25lLCBuZXh0XSA9IGV4KG0sIGN1cnNvcik7CiAgICAgICAgICAgIHJldHVybiBbeyAuLi5tZXJnZWRWYWxzLCAuLi52YWwgfSwgem9uZSB8fCBtZXJnZWRab25lLCBuZXh0XTsKICAgICAgICAgIH0sCiAgICAgICAgICBbe30sIG51bGwsIDFdCiAgICAgICAgKQogICAgICAgIC5zbGljZSgwLCAyKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlKHMsIC4uLnBhdHRlcm5zKSB7CiAgICBpZiAocyA9PSBudWxsKSB7CiAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07CiAgICB9CgogICAgZm9yIChjb25zdCBbcmVnZXgsIGV4dHJhY3Rvcl0gb2YgcGF0dGVybnMpIHsKICAgICAgY29uc3QgbSA9IHJlZ2V4LmV4ZWMocyk7CiAgICAgIGlmIChtKSB7CiAgICAgICAgcmV0dXJuIGV4dHJhY3RvcihtKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIFtudWxsLCBudWxsXTsKICB9CgogIGZ1bmN0aW9uIHNpbXBsZVBhcnNlKC4uLmtleXMpIHsKICAgIHJldHVybiAobWF0Y2gsIGN1cnNvcikgPT4gewogICAgICBjb25zdCByZXQgPSB7fTsKICAgICAgbGV0IGk7CgogICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewogICAgICAgIHJldFtrZXlzW2ldXSA9IHBhcnNlSW50ZWdlcihtYXRjaFtjdXJzb3IgKyBpXSk7CiAgICAgIH0KICAgICAgcmV0dXJuIFtyZXQsIG51bGwsIGN1cnNvciArIGldOwogICAgfTsKICB9CgogIC8vIElTTyBhbmQgU1FMIHBhcnNpbmcKICBjb25zdCBvZmZzZXRSZWdleCA9IC8oPzooWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8pLzsKICBjb25zdCBpc29FeHRlbmRlZFpvbmUgPSBgKD86JHtvZmZzZXRSZWdleC5zb3VyY2V9Pyg/OlxcWygke2lhbmFSZWdleC5zb3VyY2V9KVxcXSk/KT9gOwogIGNvbnN0IGlzb1RpbWVCYXNlUmVnZXggPSAvKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlsuLF0oXGR7MSwzMH0pKT8pPyk/LzsKICBjb25zdCBpc29UaW1lUmVnZXggPSBSZWdFeHAoYCR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JHtpc29FeHRlbmRlZFpvbmV9YCk7CiAgY29uc3QgaXNvVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzpUJHtpc29UaW1lUmVnZXguc291cmNlfSk/YCk7CiAgY29uc3QgaXNvWW1kUmVnZXggPSAvKFsrLV1cZHs2fXxcZHs0fSkoPzotPyhcZFxkKSg/Oi0/KFxkXGQpKT8pPy87CiAgY29uc3QgaXNvV2Vla1JlZ2V4ID0gLyhcZHs0fSktP1coXGRcZCkoPzotPyhcZCkpPy87CiAgY29uc3QgaXNvT3JkaW5hbFJlZ2V4ID0gLyhcZHs0fSktPyhcZHszfSkvOwogIGNvbnN0IGV4dHJhY3RJU09XZWVrRGF0YSA9IHNpbXBsZVBhcnNlKCJ3ZWVrWWVhciIsICJ3ZWVrTnVtYmVyIiwgIndlZWtEYXkiKTsKICBjb25zdCBleHRyYWN0SVNPT3JkaW5hbERhdGEgPSBzaW1wbGVQYXJzZSgieWVhciIsICJvcmRpbmFsIik7CiAgY29uc3Qgc3FsWW1kUmVnZXggPSAvKFxkezR9KS0oXGRcZCktKFxkXGQpLzsgLy8gZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0aGUgSVNPIG9uZQogIGNvbnN0IHNxbFRpbWVSZWdleCA9IFJlZ0V4cCgKICAgIGAke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSA/KD86JHtvZmZzZXRSZWdleC5zb3VyY2V9fCgke2lhbmFSZWdleC5zb3VyY2V9KSk/YAogICk7CiAgY29uc3Qgc3FsVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzogJHtzcWxUaW1lUmVnZXguc291cmNlfSk/YCk7CgogIGZ1bmN0aW9uIGludChtYXRjaCwgcG9zLCBmYWxsYmFjaykgewogICAgY29uc3QgbSA9IG1hdGNoW3Bvc107CiAgICByZXR1cm4gaXNVbmRlZmluZWQobSkgPyBmYWxsYmFjayA6IHBhcnNlSW50ZWdlcihtKTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJU09ZbWQobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgeWVhcjogaW50KG1hdGNoLCBjdXJzb3IpLAogICAgICBtb250aDogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAxKSwKICAgICAgZGF5OiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDEpLAogICAgfTsKCiAgICByZXR1cm4gW2l0ZW0sIG51bGwsIGN1cnNvciArIDNdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdElTT1RpbWUobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgaG91cnM6IGludChtYXRjaCwgY3Vyc29yLCAwKSwKICAgICAgbWludXRlczogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAwKSwKICAgICAgc2Vjb25kczogaW50KG1hdGNoLCBjdXJzb3IgKyAyLCAwKSwKICAgICAgbWlsbGlzZWNvbmRzOiBwYXJzZU1pbGxpcyhtYXRjaFtjdXJzb3IgKyAzXSksCiAgICB9OwoKICAgIHJldHVybiBbaXRlbSwgbnVsbCwgY3Vyc29yICsgNF07CiAgfQoKICBmdW5jdGlvbiBleHRyYWN0SVNPT2Zmc2V0KG1hdGNoLCBjdXJzb3IpIHsKICAgIGNvbnN0IGxvY2FsID0gIW1hdGNoW2N1cnNvcl0gJiYgIW1hdGNoW2N1cnNvciArIDFdLAogICAgICBmdWxsT2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG1hdGNoW2N1cnNvciArIDFdLCBtYXRjaFtjdXJzb3IgKyAyXSksCiAgICAgIHpvbmUgPSBsb2NhbCA/IG51bGwgOiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoZnVsbE9mZnNldCk7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAzXTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJQU5BWm9uZShtYXRjaCwgY3Vyc29yKSB7CiAgICBjb25zdCB6b25lID0gbWF0Y2hbY3Vyc29yXSA/IElBTkFab25lLmNyZWF0ZShtYXRjaFtjdXJzb3JdKSA6IG51bGw7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAxXTsKICB9CgogIC8vIElTTyB0aW1lIHBhcnNpbmcKCiAgY29uc3QgaXNvVGltZU9ubHkgPSBSZWdFeHAoYF5UPyR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JGApOwoKICAvLyBJU08gZHVyYXRpb24gcGFyc2luZwoKICBjb25zdCBpc29EdXJhdGlvbiA9CiAgICAvXi0/UCg/Oig/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVkpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KU0pPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVcpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KUQpPyg/OlQoPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylIKT8oPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylNKT8oPzooLT9cZHsxLDIwfSkoPzpbLixdKC0/XGR7MSwyMH0pKT9TKT8pPykkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdElTT0R1cmF0aW9uKG1hdGNoKSB7CiAgICBjb25zdCBbcywgeWVhclN0ciwgbW9udGhTdHIsIHdlZWtTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIsIG1pbGxpc2Vjb25kc1N0cl0gPQogICAgICBtYXRjaDsKCiAgICBjb25zdCBoYXNOZWdhdGl2ZVByZWZpeCA9IHNbMF0gPT09ICItIjsKICAgIGNvbnN0IG5lZ2F0aXZlU2Vjb25kcyA9IHNlY29uZFN0ciAmJiBzZWNvbmRTdHJbMF0gPT09ICItIjsKCiAgICBjb25zdCBtYXliZU5lZ2F0ZSA9IChudW0sIGZvcmNlID0gZmFsc2UpID0+CiAgICAgIG51bSAhPT0gdW5kZWZpbmVkICYmIChmb3JjZSB8fCAobnVtICYmIGhhc05lZ2F0aXZlUHJlZml4KSkgPyAtbnVtIDogbnVtOwoKICAgIHJldHVybiBbCiAgICAgIHsKICAgICAgICB5ZWFyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh5ZWFyU3RyKSksCiAgICAgICAgbW9udGhzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1vbnRoU3RyKSksCiAgICAgICAgd2Vla3M6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcod2Vla1N0cikpLAogICAgICAgIGRheXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoZGF5U3RyKSksCiAgICAgICAgaG91cnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoaG91clN0cikpLAogICAgICAgIG1pbnV0ZXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcobWludXRlU3RyKSksCiAgICAgICAgc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhzZWNvbmRTdHIpLCBzZWNvbmRTdHIgPT09ICItMCIpLAogICAgICAgIG1pbGxpc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VNaWxsaXMobWlsbGlzZWNvbmRzU3RyKSwgbmVnYXRpdmVTZWNvbmRzKSwKICAgICAgfSwKICAgIF07CiAgfQoKICAvLyBUaGVzZSBhcmUgYSBsaXR0bGUgYnJhaW5kZWFkLiBFRFQgKnNob3VsZCogdGVsbCB1cyB0aGF0IHdlJ3JlIGluLCBzYXksIEFtZXJpY2EvTmV3X1lvcmsKICAvLyBhbmQgbm90IGp1c3QgdGhhdCB3ZSdyZSBpbiAtMjQwICpyaWdodCBub3cqLiBCdXQgc2luY2UgSSBkb24ndCB0aGluayB0aGVzZSBhcmUgdXNlZCB0aGF0IG9mdGVuCiAgLy8gSSdtIGp1c3QgZ29pbmcgdG8gaWdub3JlIHRoYXQKICBjb25zdCBvYnNPZmZzZXRzID0gewogICAgR01UOiAwLAogICAgRURUOiAtNCAqIDYwLAogICAgRVNUOiAtNSAqIDYwLAogICAgQ0RUOiAtNSAqIDYwLAogICAgQ1NUOiAtNiAqIDYwLAogICAgTURUOiAtNiAqIDYwLAogICAgTVNUOiAtNyAqIDYwLAogICAgUERUOiAtNyAqIDYwLAogICAgUFNUOiAtOCAqIDYwLAogIH07CgogIGZ1bmN0aW9uIGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKSB7CiAgICBjb25zdCByZXN1bHQgPSB7CiAgICAgIHllYXI6IHllYXJTdHIubGVuZ3RoID09PSAyID8gdW50cnVuY2F0ZVllYXIocGFyc2VJbnRlZ2VyKHllYXJTdHIpKSA6IHBhcnNlSW50ZWdlcih5ZWFyU3RyKSwKICAgICAgbW9udGg6IG1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpICsgMSwKICAgICAgZGF5OiBwYXJzZUludGVnZXIoZGF5U3RyKSwKICAgICAgaG91cjogcGFyc2VJbnRlZ2VyKGhvdXJTdHIpLAogICAgICBtaW51dGU6IHBhcnNlSW50ZWdlcihtaW51dGVTdHIpLAogICAgfTsKCiAgICBpZiAoc2Vjb25kU3RyKSByZXN1bHQuc2Vjb25kID0gcGFyc2VJbnRlZ2VyKHNlY29uZFN0cik7CiAgICBpZiAod2Vla2RheVN0cikgewogICAgICByZXN1bHQud2Vla2RheSA9CiAgICAgICAgd2Vla2RheVN0ci5sZW5ndGggPiAzCiAgICAgICAgICA/IHdlZWtkYXlzTG9uZy5pbmRleE9mKHdlZWtkYXlTdHIpICsgMQogICAgICAgICAgOiB3ZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0cikgKyAxOwogICAgfQoKICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvLyBSRkMgMjgyMi81MzIyCiAgY29uc3QgcmZjMjgyMiA9CiAgICAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLFxzKT8oXGR7MSwyfSlccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylccyhcZHsyLDR9KVxzKFxkXGQpOihcZFxkKSg/OjooXGRcZCkpP1xzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXGRcZCkoXGRcZCkpKSQvOwoKICBmdW5jdGlvbiBleHRyYWN0UkZDMjgyMihtYXRjaCkgewogICAgY29uc3QgWwogICAgICAgICwKICAgICAgICB3ZWVrZGF5U3RyLAogICAgICAgIGRheVN0ciwKICAgICAgICBtb250aFN0ciwKICAgICAgICB5ZWFyU3RyLAogICAgICAgIGhvdXJTdHIsCiAgICAgICAgbWludXRlU3RyLAogICAgICAgIHNlY29uZFN0ciwKICAgICAgICBvYnNPZmZzZXQsCiAgICAgICAgbWlsT2Zmc2V0LAogICAgICAgIG9mZkhvdXJTdHIsCiAgICAgICAgb2ZmTWludXRlU3RyLAogICAgICBdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKCiAgICBsZXQgb2Zmc2V0OwogICAgaWYgKG9ic09mZnNldCkgewogICAgICBvZmZzZXQgPSBvYnNPZmZzZXRzW29ic09mZnNldF07CiAgICB9IGVsc2UgaWYgKG1pbE9mZnNldCkgewogICAgICBvZmZzZXQgPSAwOwogICAgfSBlbHNlIHsKICAgICAgb2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cik7CiAgICB9CgogICAgcmV0dXJuIFtyZXN1bHQsIG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KV07CiAgfQoKICBmdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7CiAgICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZQogICAgcmV0dXJuIHMKICAgICAgLnJlcGxhY2UoL1woW14oKV0qXCl8W1xuXHRdL2csICIgIikKICAgICAgLnJlcGxhY2UoLyhcc1xzKykvZywgIiAiKQogICAgICAudHJpbSgpOwogIH0KCiAgLy8gaHR0cCBkYXRlCgogIGNvbnN0IHJmYzExMjMgPQogICAgICAvXihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLCAoXGRcZCkgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoXGR7NH0pIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQvLAogICAgcmZjODUwID0KICAgICAgL14oTW9uZGF5fFR1ZXNkYXl8V2VkbmVzZGF5fFRodXJzZGF5fEZyaWRheXxTYXR1cmRheXxTdW5kYXkpLCAoXGRcZCktKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKS0oXGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJC8sCiAgICBhc2NpaSA9CiAgICAgIC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1bikgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoIFxkfFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIChcZHs0fSkkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdFJGQzExMjNPcjg1MChtYXRjaCkgewogICAgY29uc3QgWywgd2Vla2RheVN0ciwgZGF5U3RyLCBtb250aFN0ciwgeWVhclN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHJdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKICAgIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdEFTQ0lJKG1hdGNoKSB7CiAgICBjb25zdCBbLCB3ZWVrZGF5U3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0ciwgeWVhclN0cl0gPSBtYXRjaCwKICAgICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpOwogICAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07CiAgfQoKICBjb25zdCBpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvWW1kUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvV2Vla1dpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29XZWVrUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29PcmRpbmFsUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvVGltZUNvbWJpbmVkUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29UaW1lUmVnZXgpOwoKICBjb25zdCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldCA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1ltZCwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoCiAgICBleHRyYWN0SVNPV2Vla0RhdGEsCiAgICBleHRyYWN0SVNPVGltZSwKICAgIGV4dHJhY3RJU09PZmZzZXQsCiAgICBleHRyYWN0SUFOQVpvbmUKICApOwogIGNvbnN0IGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWUgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09PcmRpbmFsRGF0YSwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CgogIC8qCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gcGFyc2VJU09EYXRlKHMpIHsKICAgIHJldHVybiBwYXJzZSgKICAgICAgcywKICAgICAgW2lzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0XSwKICAgICAgW2lzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXRdLAogICAgICBbaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWVdLAogICAgICBbaXNvVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0XQogICAgKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlUkZDMjgyMkRhdGUocykgewogICAgcmV0dXJuIHBhcnNlKHByZXByb2Nlc3NSRkMyODIyKHMpLCBbcmZjMjgyMiwgZXh0cmFjdFJGQzI4MjJdKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSFRUUERhdGUocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbcmZjMTEyMywgZXh0cmFjdFJGQzExMjNPcjg1MF0sCiAgICAgIFtyZmM4NTAsIGV4dHJhY3RSRkMxMTIzT3I4NTBdLAogICAgICBbYXNjaWksIGV4dHJhY3RBU0NJSV0KICAgICk7CiAgfQoKICBmdW5jdGlvbiBwYXJzZUlTT0R1cmF0aW9uKHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvRHVyYXRpb24sIGV4dHJhY3RJU09EdXJhdGlvbl0pOwogIH0KCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpOwoKICBmdW5jdGlvbiBwYXJzZUlTT1RpbWVPbmx5KHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pOwogIH0KCiAgY29uc3Qgc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFltZFJlZ2V4LCBzcWxUaW1lRXh0ZW5zaW9uUmVnZXgpOwogIGNvbnN0IHNxbFRpbWVDb21iaW5lZFJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsVGltZVJlZ2V4KTsKCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZSA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1RpbWUsCiAgICBleHRyYWN0SVNPT2Zmc2V0LAogICAgZXh0cmFjdElBTkFab25lCiAgKTsKCiAgZnVuY3Rpb24gcGFyc2VTUUwocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXRdLAogICAgICBbc3FsVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmVdCiAgICApOwogIH0KCiAgY29uc3QgSU5WQUxJRCQyID0gIkludmFsaWQgRHVyYXRpb24iOwoKICAvLyB1bml0IGNvbnZlcnNpb24gY29uc3RhbnRzCiAgY29uc3QgbG93T3JkZXJNYXRyaXggPSB7CiAgICAgIHdlZWtzOiB7CiAgICAgICAgZGF5czogNywKICAgICAgICBob3VyczogNyAqIDI0LAogICAgICAgIG1pbnV0ZXM6IDcgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiA3ICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgZGF5czogewogICAgICAgIGhvdXJzOiAyNCwKICAgICAgICBtaW51dGVzOiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDI0ICogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCiAgICAgIGhvdXJzOiB7IG1pbnV0ZXM6IDYwLCBzZWNvbmRzOiA2MCAqIDYwLCBtaWxsaXNlY29uZHM6IDYwICogNjAgKiAxMDAwIH0sCiAgICAgIG1pbnV0ZXM6IHsgc2Vjb25kczogNjAsIG1pbGxpc2Vjb25kczogNjAgKiAxMDAwIH0sCiAgICAgIHNlY29uZHM6IHsgbWlsbGlzZWNvbmRzOiAxMDAwIH0sCiAgICB9LAogICAgY2FzdWFsTWF0cml4ID0gewogICAgICB5ZWFyczogewogICAgICAgIHF1YXJ0ZXJzOiA0LAogICAgICAgIG1vbnRoczogMTIsCiAgICAgICAgd2Vla3M6IDUyLAogICAgICAgIGRheXM6IDM2NSwKICAgICAgICBob3VyczogMzY1ICogMjQsCiAgICAgICAgbWludXRlczogMzY1ICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogMTMsCiAgICAgICAgZGF5czogOTEsCiAgICAgICAgaG91cnM6IDkxICogMjQsCiAgICAgICAgbWludXRlczogOTEgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDkxICogMjQgKiA2MCAqIDYwLAogICAgICAgIG1pbGxpc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogNCwKICAgICAgICBkYXlzOiAzMCwKICAgICAgICBob3VyczogMzAgKiAyNCwKICAgICAgICBtaW51dGVzOiAzMCAqIDI0ICogNjAsCiAgICAgICAgc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzMCAqIDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCgogICAgICAuLi5sb3dPcmRlck1hdHJpeCwKICAgIH0sCiAgICBkYXlzSW5ZZWFyQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQwMCwKICAgIGRheXNJbk1vbnRoQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQ4MDAsCiAgICBhY2N1cmF0ZU1hdHJpeCA9IHsKICAgICAgeWVhcnM6IHsKICAgICAgICBxdWFydGVyczogNCwKICAgICAgICBtb250aHM6IDEyLAogICAgICAgIHdlZWtzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyA3LAogICAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luWWVhckFjY3VyYXRlICogMjQsCiAgICAgICAgbWludXRlczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogZGF5c0luWWVhckFjY3VyYXRlIC8gMjgsCiAgICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlIC8gNCwKICAgICAgICBob3VyczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0KSAvIDQsCiAgICAgICAgbWludXRlczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjApIC8gNCwKICAgICAgICBzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwKSAvIDQsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCkgLyA0LAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogZGF5c0luTW9udGhBY2N1cmF0ZSAvIDcsCiAgICAgICAgZGF5czogZGF5c0luTW9udGhBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0LAogICAgICAgIG1pbnV0ZXM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgLi4ubG93T3JkZXJNYXRyaXgsCiAgICB9OwoKICAvLyB1bml0cyBvcmRlcmVkIGJ5IHNpemUKICBjb25zdCBvcmRlcmVkVW5pdHMkMSA9IFsKICAgICJ5ZWFycyIsCiAgICAicXVhcnRlcnMiLAogICAgIm1vbnRocyIsCiAgICAid2Vla3MiLAogICAgImRheXMiLAogICAgImhvdXJzIiwKICAgICJtaW51dGVzIiwKICAgICJzZWNvbmRzIiwKICAgICJtaWxsaXNlY29uZHMiLAogIF07CgogIGNvbnN0IHJldmVyc2VVbml0cyA9IG9yZGVyZWRVbml0cyQxLnNsaWNlKDApLnJldmVyc2UoKTsKCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zICJjcmVhdGUgYW5vdGhlciBpbnN0YW5jZSBqdXN0IGxpa2UgdGhpcyBvbmUsIGJ1dCB3aXRoIHRoZXNlIGNoYW5nZXMiCiAgZnVuY3Rpb24gY2xvbmUkMShkdXIsIGFsdHMsIGNsZWFyID0gZmFsc2UpIHsKICAgIC8vIGRlZXAgbWVyZ2UgZm9yIHZhbHMKICAgIGNvbnN0IGNvbmYgPSB7CiAgICAgIHZhbHVlczogY2xlYXIgPyBhbHRzLnZhbHVlcyA6IHsgLi4uZHVyLnZhbHVlcywgLi4uKGFsdHMudmFsdWVzIHx8IHt9KSB9LAogICAgICBsb2M6IGR1ci5sb2MuY2xvbmUoYWx0cy5sb2MpLAogICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IGFsdHMuY29udmVyc2lvbkFjY3VyYWN5IHx8IGR1ci5jb252ZXJzaW9uQWNjdXJhY3ksCiAgICAgIG1hdHJpeDogYWx0cy5tYXRyaXggfHwgZHVyLm1hdHJpeCwKICAgIH07CiAgICByZXR1cm4gbmV3IER1cmF0aW9uKGNvbmYpOwogIH0KCiAgZnVuY3Rpb24gZHVyYXRpb25Ub01pbGxpcyhtYXRyaXgsIHZhbHMpIHsKICAgIGxldCBzdW0gPSB2YWxzLm1pbGxpc2Vjb25kcyA/PyAwOwogICAgZm9yIChjb25zdCB1bml0IG9mIHJldmVyc2VVbml0cy5zbGljZSgxKSkgewogICAgICBpZiAodmFsc1t1bml0XSkgewogICAgICAgIHN1bSArPSB2YWxzW3VuaXRdICogbWF0cml4W3VuaXRdWyJtaWxsaXNlY29uZHMiXTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHN1bTsKICB9CgogIC8vIE5COiBtdXRhdGVzIHBhcmFtZXRlcnMKICBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZXMobWF0cml4LCB2YWxzKSB7CiAgICAvLyB0aGUgbG9naWMgYmVsb3cgYXNzdW1lcyB0aGUgb3ZlcmFsbCB2YWx1ZSBvZiB0aGUgZHVyYXRpb24gaXMgcG9zaXRpdmUKICAgIC8vIGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBmYWN0b3IgaXMgdXNlZCB0byBtYWtlIGl0IHNvCiAgICBjb25zdCBmYWN0b3IgPSBkdXJhdGlvblRvTWlsbGlzKG1hdHJpeCwgdmFscykgPCAwID8gLTEgOiAxOwoKICAgIG9yZGVyZWRVbml0cyQxLnJlZHVjZVJpZ2h0KChwcmV2aW91cywgY3VycmVudCkgPT4gewogICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgaWYgKHByZXZpb3VzKSB7CiAgICAgICAgICBjb25zdCBwcmV2aW91c1ZhbCA9IHZhbHNbcHJldmlvdXNdICogZmFjdG9yOwogICAgICAgICAgY29uc3QgY29udiA9IG1hdHJpeFtjdXJyZW50XVtwcmV2aW91c107CgogICAgICAgICAgLy8gaWYgKHByZXZpb3VzVmFsIDwgMCk6CiAgICAgICAgICAvLyBsb3dlciBvcmRlciB1bml0IGlzIG5lZ2F0aXZlIChlLmcuIHsgeWVhcnM6IDIsIGRheXM6IC0yIH0pCiAgICAgICAgICAvLyBub3JtYWxpemUgdGhpcyBieSByZWR1Y2luZyB0aGUgaGlnaGVyIG9yZGVyIHVuaXQgYnkgdGhlIGFwcHJvcHJpYXRlIGFtb3VudAogICAgICAgICAgLy8gYW5kIGluY3JlYXNpbmcgdGhlIGxvd2VyIG9yZGVyIHVuaXQKICAgICAgICAgIC8vIHRoaXMgY2FuIG5ldmVyIG1ha2UgdGhlIGhpZ2hlciBvcmRlciB1bml0IG5lZ2F0aXZlLCBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gb25seSBvcGVyYXRlcwogICAgICAgICAgLy8gb24gcG9zaXRpdmUgZHVyYXRpb25zLCBzbyB0aGUgYW1vdW50IG9mIHRpbWUgcmVwcmVzZW50ZWQgYnkgdGhlIGxvd2VyIG9yZGVyIHVuaXQgY2Fubm90CiAgICAgICAgICAvLyBiZSBsYXJnZXIgdGhhbiB0aGUgaGlnaGVyIG9yZGVyIHVuaXQKICAgICAgICAgIC8vIGVsc2U6CiAgICAgICAgICAvLyBsb3dlciBvcmRlciB1bml0IGlzIHBvc2l0aXZlIChlLmcuIHsgeWVhcnM6IDIsIGRheXM6IDQ1MCB9IG9yIHsgeWVhcnM6IC0yLCBkYXlzOiA0NTAgfSkKICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBhdHRlbXB0IHRvIGNvbnZlcnQgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBsb3dlciBvcmRlciB1bml0IGludG8KICAgICAgICAgIC8vIHRoZSBoaWdoZXIgb3JkZXIgb25lCiAgICAgICAgICAvLwogICAgICAgICAgLy8gTWF0aC5mbG9vciB0YWtlcyBjYXJlIG9mIGJvdGggb2YgdGhlc2UgY2FzZXMsIHJvdW5kaW5nIGF3YXkgZnJvbSAwCiAgICAgICAgICAvLyBpZiBwcmV2aW91c1ZhbCA8IDAgaXQgbWFrZXMgdGhlIGFic29sdXRlIHZhbHVlIGxhcmdlcgogICAgICAgICAgLy8gaWYgcHJldmlvdXNWYWwgPj0gaXQgbWFrZXMgdGhlIGFic29sdXRlIHZhbHVlIHNtYWxsZXIKICAgICAgICAgIGNvbnN0IHJvbGxVcCA9IE1hdGguZmxvb3IocHJldmlvdXNWYWwgLyBjb252KTsKICAgICAgICAgIHZhbHNbY3VycmVudF0gKz0gcm9sbFVwICogZmFjdG9yOwogICAgICAgICAgdmFsc1twcmV2aW91c10gLT0gcm9sbFVwICogY29udiAqIGZhY3RvcjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHByZXZpb3VzOwogICAgICB9CiAgICB9LCBudWxsKTsKCiAgICAvLyB0cnkgdG8gY29udmVydCBhbnkgZGVjaW1hbHMgaW50byBzbWFsbGVyIHVuaXRzIGlmIHBvc3NpYmxlCiAgICAvLyBmb3IgZXhhbXBsZSBmb3IgeyB5ZWFyczogMi41LCBkYXlzOiAwLCBzZWNvbmRzOiAwIH0gd2Ugd2FudCB0byBnZXQgeyB5ZWFyczogMiwgZGF5czogMTgyLCBob3VyczogMTIgfQogICAgb3JkZXJlZFVuaXRzJDEucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4gewogICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgaWYgKHByZXZpb3VzKSB7CiAgICAgICAgICBjb25zdCBmcmFjdGlvbiA9IHZhbHNbcHJldmlvdXNdICUgMTsKICAgICAgICAgIHZhbHNbcHJldmlvdXNdIC09IGZyYWN0aW9uOwogICAgICAgICAgdmFsc1tjdXJyZW50XSArPSBmcmFjdGlvbiAqIG1hdHJpeFtwcmV2aW91c11bY3VycmVudF07CiAgICAgICAgfQogICAgICAgIHJldHVybiBjdXJyZW50OwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBwcmV2aW91czsKICAgICAgfQogICAgfSwgbnVsbCk7CiAgfQoKICAvLyBSZW1vdmUgYWxsIHByb3BlcnRpZXMgd2l0aCBhIHZhbHVlIG9mIDAgZnJvbSBhbiBvYmplY3QKICBmdW5jdGlvbiByZW1vdmVaZXJvZXModmFscykgewogICAgY29uc3QgbmV3VmFscyA9IHt9OwogICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFscykpIHsKICAgICAgaWYgKHZhbHVlICE9PSAwKSB7CiAgICAgICAgbmV3VmFsc1trZXldID0gdmFsdWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBuZXdWYWxzOwogIH0KCiAgLyoqCiAgICogQSBEdXJhdGlvbiBvYmplY3QgcmVwcmVzZW50cyBhIHBlcmlvZCBvZiB0aW1lLCBsaWtlICIyIG1vbnRocyIgb3IgIjEgZGF5LCAxIGhvdXIiLiBDb25jZXB0dWFsbHksIGl0J3MganVzdCBhIG1hcCBvZiB1bml0cyB0byB0aGVpciBxdWFudGl0aWVzLCBhY2NvbXBhbmllZCBieSBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS4gVGhleSBjYW4gYmUgdXNlZCBvbiB0aGVpciBvd24gb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBMdXhvbiB0eXBlczsgZm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHtAbGluayBEYXRlVGltZSNwbHVzfSB0byBhZGQgYSBEdXJhdGlvbiBvYmplY3QgdG8gYSBEYXRlVGltZSwgcHJvZHVjaW5nIGFub3RoZXIgRGF0ZVRpbWUuCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIER1cmF0aW9uOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGEgRHVyYXRpb24sIHVzZSB7QGxpbmsgRHVyYXRpb24uZnJvbU1pbGxpc30sIHtAbGluayBEdXJhdGlvbi5mcm9tT2JqZWN0fSwgb3Ige0BsaW5rIER1cmF0aW9uLmZyb21JU099LgogICAqICogKipVbml0IHZhbHVlcyoqIFNlZSB0aGUge0BsaW5rIER1cmF0aW9uI3llYXJzfSwge0BsaW5rIER1cmF0aW9uI21vbnRoc30sIHtAbGluayBEdXJhdGlvbiN3ZWVrc30sIHtAbGluayBEdXJhdGlvbiNkYXlzfSwge0BsaW5rIER1cmF0aW9uI2hvdXJzfSwge0BsaW5rIER1cmF0aW9uI21pbnV0ZXN9LCB7QGxpbmsgRHVyYXRpb24jc2Vjb25kc30sIHtAbGluayBEdXJhdGlvbiNtaWxsaXNlY29uZHN9IGFjY2Vzc29ycy4KICAgKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSAge0BsaW5rIER1cmF0aW9uI2xvY2FsZX0gYW5kIHtAbGluayBEdXJhdGlvbiNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy4KICAgKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgbmV3IER1cmF0aW9ucyBvdXQgb2Ygb2xkIG9uZXMgdXNlIHtAbGluayBEdXJhdGlvbiNwbHVzfSwge0BsaW5rIER1cmF0aW9uI21pbnVzfSwge0BsaW5rIER1cmF0aW9uI25vcm1hbGl6ZX0sIHtAbGluayBEdXJhdGlvbiNzZXR9LCB7QGxpbmsgRHVyYXRpb24jcmVjb25maWd1cmV9LCB7QGxpbmsgRHVyYXRpb24jc2hpZnRUb30sIGFuZCB7QGxpbmsgRHVyYXRpb24jbmVnYXRlfS4KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgRHVyYXRpb24gaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgRHVyYXRpb24jYXN9LCB7QGxpbmsgRHVyYXRpb24jdG9JU099LCB7QGxpbmsgRHVyYXRpb24jdG9Gb3JtYXR9LCBhbmQge0BsaW5rIER1cmF0aW9uI3RvSlNPTn0KICAgKgogICAqIFRoZXJlJ3MgYXJlIG1vcmUgbWV0aG9kcyBkb2N1bWVudGVkIGJlbG93LiBJbiBhZGRpdGlvbiwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3VidGxlciB0b3BpY3MgbGlrZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgdmFsaWRpdHksIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi4KICAgKi8KICBjbGFzcyBEdXJhdGlvbiB7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCBhY2N1cmF0ZSA9IGNvbmZpZy5jb252ZXJzaW9uQWNjdXJhY3kgPT09ICJsb25ndGVybSIgfHwgZmFsc2U7CiAgICAgIGxldCBtYXRyaXggPSBhY2N1cmF0ZSA/IGFjY3VyYXRlTWF0cml4IDogY2FzdWFsTWF0cml4OwoKICAgICAgaWYgKGNvbmZpZy5tYXRyaXgpIHsKICAgICAgICBtYXRyaXggPSBjb25maWcubWF0cml4OwogICAgICB9CgogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnZhbHVlcyA9IGNvbmZpZy52YWx1ZXM7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuY29udmVyc2lvbkFjY3VyYWN5ID0gYWNjdXJhdGUgPyAibG9uZ3Rlcm0iIDogImNhc3VhbCI7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubWF0cml4ID0gbWF0cml4OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EdXJhdGlvbiA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgRHVyYXRpb24gZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgb2YgbWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbU1pbGxpcyhjb3VudCwgb3B0cykgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbGxpc2Vjb25kczogY291bnQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIElmIHRoaXMgb2JqZWN0IGlzIGVtcHR5IHRoZW4gYSB6ZXJvIG1pbGxpc2Vjb25kcyBkdXJhdGlvbiBpcyByZXR1cm5lZC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSB0aGUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgRGF0ZVRpbWUgZnJvbQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5xdWFydGVycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla3MKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouZGF5cwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGVzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9W11dIC0gb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhpcyBEdXJhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBjdXN0b20gY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHsKICAgICAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICJvYmplY3QiKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKAogICAgICAgICAgYER1cmF0aW9uLmZyb21PYmplY3Q6IGFyZ3VtZW50IGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCwgZ290ICR7CiAgICAgICAgICBvYmogPT09IG51bGwgPyAibnVsbCIgOiB0eXBlb2Ygb2JqCiAgICAgICAgfWAKICAgICAgICApOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IER1cmF0aW9uKHsKICAgICAgICB2YWx1ZXM6IG5vcm1hbGl6ZU9iamVjdChvYmosIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgICAgY29udmVyc2lvbkFjY3VyYWN5OiBvcHRzLmNvbnZlcnNpb25BY2N1cmFjeSwKICAgICAgICBtYXRyaXg6IG9wdHMubWF0cml4LAogICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gRHVyYXRpb25MaWtlLgogICAgICoKICAgICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVtYmVyIHwgRHVyYXRpb259IGR1cmF0aW9uTGlrZQogICAgICogT25lIG9mOgogICAgICogLSBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIC0gbnVtYmVyIHJlcHJlc2VudGluZyBtaWxsaXNlY29uZHMKICAgICAqIC0gRHVyYXRpb24gaW5zdGFuY2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbkxpa2UpIHsKICAgICAgaWYgKGlzTnVtYmVyKGR1cmF0aW9uTGlrZSkpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgaWYgKER1cmF0aW9uLmlzRHVyYXRpb24oZHVyYXRpb25MaWtlKSkgewogICAgICAgIHJldHVybiBkdXJhdGlvbkxpa2U7CiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uTGlrZSA9PT0gIm9iamVjdCIpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdChkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBVbmtub3duIGR1cmF0aW9uIGFyZ3VtZW50ICR7ZHVyYXRpb25MaWtlfSBvZiB0eXBlICR7dHlwZW9mIGR1cmF0aW9uTGlrZX1gCiAgICAgICAgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSBkdXJhdGlvbiBzdHJpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyBmb3IgcGFyc2luZwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBwcmVzZXQgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9ucwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDNZNk0xVzREVDEySDMwTTVTJykudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDMsIG1vbnRoczogNiwgd2Vla3M6IDEsIGRheXM6IDQsIGhvdXJzOiAxMiwgbWludXRlczogMzAsIHNlY29uZHM6IDUgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUFQyM0gnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjMgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDVZM00nKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogNSwgbW9udGhzOiAzIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09EdXJhdGlvbih0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSB0aW1lIHN0cmluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGV4dCB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgcHJlc2V0IGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm1hdHJpeD1PYmplY3RdIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjIyOjMzLjQ0NCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMjIsIHNlY29uZHM6IDMzLCBtaWxsaXNlY29uZHM6IDQ0NCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJ1QxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnVDExMDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPVGltZSh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09UaW1lT25seSh0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRHVyYXRpb24uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBkYXRldGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHsKICAgICAgaWYgKCFyZWFzb24pIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRHVyYXRpb24gaXMgaW52YWxpZCIpOwogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pOwoKICAgICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWREdXJhdGlvbkVycm9yKGludmFsaWQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oeyBpbnZhbGlkIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBzdGF0aWMgbm9ybWFsaXplVW5pdCh1bml0KSB7CiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgICAgeWVhcjogInllYXJzIiwKICAgICAgICB5ZWFyczogInllYXJzIiwKICAgICAgICBxdWFydGVyOiAicXVhcnRlcnMiLAogICAgICAgIHF1YXJ0ZXJzOiAicXVhcnRlcnMiLAogICAgICAgIG1vbnRoOiAibW9udGhzIiwKICAgICAgICBtb250aHM6ICJtb250aHMiLAogICAgICAgIHdlZWs6ICJ3ZWVrcyIsCiAgICAgICAgd2Vla3M6ICJ3ZWVrcyIsCiAgICAgICAgZGF5OiAiZGF5cyIsCiAgICAgICAgZGF5czogImRheXMiLAogICAgICAgIGhvdXI6ICJob3VycyIsCiAgICAgICAgaG91cnM6ICJob3VycyIsCiAgICAgICAgbWludXRlOiAibWludXRlcyIsCiAgICAgICAgbWludXRlczogIm1pbnV0ZXMiLAogICAgICAgIHNlY29uZDogInNlY29uZHMiLAogICAgICAgIHNlY29uZHM6ICJzZWNvbmRzIiwKICAgICAgICBtaWxsaXNlY29uZDogIm1pbGxpc2Vjb25kcyIsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAibWlsbGlzZWNvbmRzIiwKICAgICAgfVt1bml0ID8gdW5pdC50b0xvd2VyQ2FzZSgpIDogdW5pdF07CgogICAgICBpZiAoIW5vcm1hbGl6ZWQpIHRocm93IG5ldyBJbnZhbGlkVW5pdEVycm9yKHVuaXQpOwoKICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBEdXJhdGlvbi4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0R1cmF0aW9uKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkR1cmF0aW9uKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCAgdGhlIGxvY2FsZSBvZiBhIER1cmF0aW9uLCBzdWNoICdlbi1HQicKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBsb2NhbGUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRHVyYXRpb24sIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRHVyYXRpb24KICAgICAqCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy4gWW91IG1heSB1c2UgdGhlc2UgdG9rZW5zOgogICAgICogKiBgU2AgZm9yIG1pbGxpc2Vjb25kcwogICAgICogKiBgc2AgZm9yIHNlY29uZHMKICAgICAqICogYG1gIGZvciBtaW51dGVzCiAgICAgKiAqIGBoYCBmb3IgaG91cnMKICAgICAqICogYGRgIGZvciBkYXlzCiAgICAgKiAqIGB3YCBmb3Igd2Vla3MKICAgICAqICogYE1gIGZvciBtb250aHMKICAgICAqICogYHlgIGZvciB5ZWFycwogICAgICogTm90ZXM6CiAgICAgKiAqIEFkZCBwYWRkaW5nIGJ5IHJlcGVhdGluZyB0aGUgdG9rZW4sIGUuZy4gInl5IiBwYWRzIHRoZSB5ZWFycyB0byB0d28gZGlnaXRzLCAiaGhoaCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzCiAgICAgKiAqIFRva2VucyBjYW4gYmUgZXNjYXBlZCBieSB3cmFwcGluZyB3aXRoIHNpbmdsZSBxdW90ZXMuCiAgICAgKiAqIFRoZSBkdXJhdGlvbiB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgc2V0IG9mIHVuaXRzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHVzaW5nIHtAbGluayBEdXJhdGlvbiNzaGlmdFRvfSBhbmQgdGhlIER1cmF0aW9ucydzIGNvbnZlcnNpb24gYWNjdXJhY3kgc2V0dGluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsb29yPXRydWVdIC0gZmxvb3IgbnVtZXJpY2FsIHZhbHVlcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5IGQgcyIpIC8vPT4gIjEgNiAyIgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5eSBkZCBzc3MiKSAvLz0+ICIwMSAwNiAwMDIiCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoIk0gUyIpIC8vPT4gIjEyIDUxODQwMjAwMCIKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9Gb3JtYXQoZm10LCBvcHRzID0ge30pIHsKICAgICAgLy8gcmV2ZXJzZS1jb21wYXQgc2luY2UgMS4yOyB3ZSBhbHdheXMgcm91bmQgZG93biBub3csIG5ldmVyIHVwLCBhbmQgd2UgZG8gaXQgYnkgZGVmYXVsdAogICAgICBjb25zdCBmbXRPcHRzID0gewogICAgICAgIC4uLm9wdHMsCiAgICAgICAgZmxvb3I6IG9wdHMucm91bmQgIT09IGZhbHNlICYmIG9wdHMuZmxvb3IgIT09IGZhbHNlLAogICAgICB9OwogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLCBmbXRPcHRzKS5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcodGhpcywgZm10KQogICAgICAgIDogSU5WQUxJRCQyOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIER1cmF0aW9uIHdpdGggYWxsIHVuaXRzIGluY2x1ZGVkLgogICAgICogVG8gbW9kaWZ5IGl0cyBiZWhhdmlvciB1c2UgdGhlIGBsaXN0U3R5bGVgIGFuZCBhbnkgSW50bC5OdW1iZXJGb3JtYXQgb3B0aW9uLCB0aG91Z2ggYHVuaXREaXNwbGF5YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50LgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL051bWJlckZvcm1hdAogICAgICogQHBhcmFtIG9wdHMgLSBPbiBvcHRpb24gb2JqZWN0IHRvIG92ZXJyaWRlIHRoZSBmb3JtYXR0aW5nLiBBY2NlcHRzIHRoZSBzYW1lIGtleXMgYXMgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIG9mIHRoZSBuYXRpdmUgYEludC5OdW1iZXJGb3JtYXRgIGNvbnN0cnVjdG9yLCBhcyB3ZWxsIGFzIGBsaXN0U3R5bGVgLgogICAgICogQGV4YW1wbGUKICAgICAqIGBgYGpzCiAgICAgKiB2YXIgZHVyID0gRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEsIGhvdXJzOiA1LCBtaW51dGVzOiA2IH0pCiAgICAgKiBkdXIudG9IdW1hbigpIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCA2IG1pbnV0ZXMnCiAgICAgKiBkdXIudG9IdW1hbih7IGxpc3RTdHlsZTogImxvbmciIH0pIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCBhbmQgNiBtaW51dGVzJwogICAgICogZHVyLnRvSHVtYW4oeyB1bml0RGlzcGxheTogInNob3J0IiB9KSAvLz0+ICcxIGRheSwgNSBociwgNiBtaW4nCiAgICAgKiBgYGAKICAgICAqLwogICAgdG9IdW1hbihvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDI7CgogICAgICBjb25zdCBsID0gb3JkZXJlZFVuaXRzJDEKICAgICAgICAubWFwKCh1bml0KSA9PiB7CiAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnZhbHVlc1t1bml0XTsKICAgICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWwpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHRoaXMubG9jCiAgICAgICAgICAgIC5udW1iZXJGb3JtYXR0ZXIoeyBzdHlsZTogInVuaXQiLCB1bml0RGlzcGxheTogImxvbmciLCAuLi5vcHRzLCB1bml0OiB1bml0LnNsaWNlKDAsIC0xKSB9KQogICAgICAgICAgICAuZm9ybWF0KHZhbCk7CiAgICAgICAgfSkKICAgICAgICAuZmlsdGVyKChuKSA9PiBuKTsKCiAgICAgIHJldHVybiB0aGlzLmxvYwogICAgICAgIC5saXN0Rm9ybWF0dGVyKHsgdHlwZTogImNvbmp1bmN0aW9uIiwgc3R5bGU6IG9wdHMubGlzdFN0eWxlIHx8ICJuYXJyb3ciLCAuLi5vcHRzIH0pCiAgICAgICAgLmZvcm1hdChsKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoaXMgRHVyYXRpb24ncyB2YWx1ZXMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICB0b09iamVjdCgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKICAgICAgcmV0dXJuIHsgLi4udGhpcy52YWx1ZXMgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNEdXJhdGlvbnMKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMywgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQM1lUNDVTJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNCwgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQNE1UNDVTJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNSB9KS50b0lTTygpIC8vPT4gJ1A1TScKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiA1IH0pLnRvSVNPKCkgLy89PiAnUFQ1TScKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDYgfSkudG9JU08oKSAvLz0+ICdQVDAuMDA2UycKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08oKSB7CiAgICAgIC8vIHdlIGNvdWxkIHVzZSB0aGUgZm9ybWF0dGVyLCBidXQgdGhpcyBpcyBhbiBlYXNpZXIgd2F5IHRvIGdldCB0aGUgbWluaW11bSBzdHJpbmcKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwoKICAgICAgbGV0IHMgPSAiUCI7CiAgICAgIGlmICh0aGlzLnllYXJzICE9PSAwKSBzICs9IHRoaXMueWVhcnMgKyAiWSI7CiAgICAgIGlmICh0aGlzLm1vbnRocyAhPT0gMCB8fCB0aGlzLnF1YXJ0ZXJzICE9PSAwKSBzICs9IHRoaXMubW9udGhzICsgdGhpcy5xdWFydGVycyAqIDMgKyAiTSI7CiAgICAgIGlmICh0aGlzLndlZWtzICE9PSAwKSBzICs9IHRoaXMud2Vla3MgKyAiVyI7CiAgICAgIGlmICh0aGlzLmRheXMgIT09IDApIHMgKz0gdGhpcy5kYXlzICsgIkQiOwogICAgICBpZiAodGhpcy5ob3VycyAhPT0gMCB8fCB0aGlzLm1pbnV0ZXMgIT09IDAgfHwgdGhpcy5zZWNvbmRzICE9PSAwIHx8IHRoaXMubWlsbGlzZWNvbmRzICE9PSAwKQogICAgICAgIHMgKz0gIlQiOwogICAgICBpZiAodGhpcy5ob3VycyAhPT0gMCkgcyArPSB0aGlzLmhvdXJzICsgIkgiOwogICAgICBpZiAodGhpcy5taW51dGVzICE9PSAwKSBzICs9IHRoaXMubWludXRlcyArICJNIjsKICAgICAgaWYgKHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMCkKICAgICAgICAvLyB0aGlzIHdpbGwgaGFuZGxlICJmbG9hdGluZyBwb2ludCBtYWRuZXNzIiBieSByZW1vdmluZyBleHRyYSBkZWNpbWFsIHBsYWNlcwogICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU4ODAwNC9pcy1mbG9hdGluZy1wb2ludC1tYXRoLWJyb2tlbgogICAgICAgIHMgKz0gcm91bmRUbyh0aGlzLnNlY29uZHMgKyB0aGlzLm1pbGxpc2Vjb25kcyAvIDEwMDAsIDMpICsgIlMiOwogICAgICBpZiAocyA9PT0gIlAiKSBzICs9ICJUMFMiOwogICAgICByZXR1cm4gczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLCBmb3JtYXR0ZWQgYXMgYSB0aW1lIG9mIGRheS4KICAgICAqIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlIGR1cmF0aW9uIGlzIGludmFsaWQsIG5lZ2F0aXZlLCBvciBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMjQgaG91cnMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKCkgLy89PiAnMTE6MDA6MDAuMDAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc01pbGxpc2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMDowMCcKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NTZWNvbmRzOiB0cnVlIH0pIC8vPT4gJzExOjAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBpbmNsdWRlUHJlZml4OiB0cnVlIH0pIC8vPT4gJ1QxMTowMDowMC4wMDAnCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxMTAwMDAuMDAwJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKCiAgICAgIGNvbnN0IG1pbGxpcyA9IHRoaXMudG9NaWxsaXMoKTsKICAgICAgaWYgKG1pbGxpcyA8IDAgfHwgbWlsbGlzID49IDg2NDAwMDAwKSByZXR1cm4gbnVsbDsKCiAgICAgIG9wdHMgPSB7CiAgICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHM6IGZhbHNlLAogICAgICAgIHN1cHByZXNzU2Vjb25kczogZmFsc2UsCiAgICAgICAgaW5jbHVkZVByZWZpeDogZmFsc2UsCiAgICAgICAgZm9ybWF0OiAiZXh0ZW5kZWQiLAogICAgICAgIC4uLm9wdHMsCiAgICAgICAgaW5jbHVkZU9mZnNldDogZmFsc2UsCiAgICAgIH07CgogICAgICBjb25zdCBkYXRlVGltZSA9IERhdGVUaW1lLmZyb21NaWxsaXMobWlsbGlzLCB7IHpvbmU6ICJVVEMiIH0pOwogICAgICByZXR1cm4gZGF0ZVRpbWUudG9JU09UaW1lKG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSlNPTi4KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9KU09OKCkgewogICAgICByZXR1cm4gdGhpcy50b0lTTygpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgcmV0dXJuIHRoaXMudG9JU08oKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gbWlsbGlzZWNvbmRzIHZhbHVlIG9mIHRoaXMgRHVyYXRpb24uCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvTWlsbGlzKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIE5hTjsKCiAgICAgIHJldHVybiBkdXJhdGlvblRvTWlsbGlzKHRoaXMubWF0cml4LCB0aGlzLnZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIG1pbGxpc2Vjb25kcyB2YWx1ZSBvZiB0aGlzIER1cmF0aW9uLiBBbGlhcyBvZiB7QGxpbmsgdG9NaWxsaXN9CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHZhbHVlT2YoKSB7CiAgICAgIHJldHVybiB0aGlzLnRvTWlsbGlzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWtlIHRoaXMgRHVyYXRpb24gbG9uZ2VyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIGFkZC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBwbHVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIHJlc3VsdCA9IHt9OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KGR1ci52YWx1ZXMsIGspIHx8IGhhc093blByb3BlcnR5KHRoaXMudmFsdWVzLCBrKSkgewogICAgICAgICAgcmVzdWx0W2tdID0gZHVyLmdldChrKSArIHRoaXMuZ2V0KGspOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IHJlc3VsdCB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1ha2UgdGhpcyBEdXJhdGlvbiBzaG9ydGVyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIHN1YnRyYWN0LiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG1pbnVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pOwogICAgICByZXR1cm4gdGhpcy5wbHVzKGR1ci5uZWdhdGUoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTY2FsZSB0aGlzIER1cmF0aW9uIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggdW5pdC4gQXJpdHkgaXMgMSBvciAyOiB0aGUgdmFsdWUgb2YgdGhlIHVuaXQgYW5kLCBvcHRpb25hbGx5LCB0aGUgdW5pdCBuYW1lLiBNdXN0IHJldHVybiBhIG51bWJlci4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgbWludXRlczogMzAgfSkubWFwVW5pdHMoeCA9PiB4ICogMikgLy89PiB7IGhvdXJzOiAyLCBtaW51dGVzOiA2MCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKCh4LCB1KSA9PiB1ID09PSAiaG91cnMiID8geCAqIDIgOiB4KSAvLz0+IHsgaG91cnM6IDIsIG1pbnV0ZXM6IDMwIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBtYXBVbml0cyhmbikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHJlc3VsdCA9IHt9OwogICAgICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXModGhpcy52YWx1ZXMpKSB7CiAgICAgICAgcmVzdWx0W2tdID0gYXNOdW1iZXIoZm4odGhpcy52YWx1ZXNba10sIGspKTsKICAgICAgfQogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogcmVzdWx0IH0sIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDIsIGRheXM6IDN9KS5nZXQoJ3llYXJzJykgLy89PiAyCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnbW9udGhzJykgLy89PiAwCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnZGF5cycpIC8vPT4gMwogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQodW5pdCkgewogICAgICByZXR1cm4gdGhpc1tEdXJhdGlvbi5ub3JtYWxpemVVbml0KHVuaXQpXTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIHVuaXRzLiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVycwogICAgICogQGV4YW1wbGUgZHVyLnNldCh7IHllYXJzOiAyMDE3IH0pCiAgICAgKiBAZXhhbXBsZSBkdXIuc2V0KHsgaG91cnM6IDgsIG1pbnV0ZXM6IDMwIH0pCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc2V0KHZhbHVlcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CgogICAgICBjb25zdCBtaXhlZCA9IHsgLi4udGhpcy52YWx1ZXMsIC4uLm5vcm1hbGl6ZU9iamVjdCh2YWx1ZXMsIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpIH07CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsgdmFsdWVzOiBtaXhlZCB9KTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBsb2NhbGUgYW5kL29yIG51bWJlcmluZ1N5c3RlbS4gIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBleGFtcGxlIGR1ci5yZWNvbmZpZ3VyZSh7IGxvY2FsZTogJ2VuLUdCJyB9KQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHJlY29uZmlndXJlKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNvbnZlcnNpb25BY2N1cmFjeSwgbWF0cml4IH0gPSB7fSkgewogICAgICBjb25zdCBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtIH0pOwogICAgICBjb25zdCBvcHRzID0geyBsb2MsIG1hdHJpeCwgY29udmVyc2lvbkFjY3VyYWN5IH07CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGR1cmF0aW9uIGluIHRoZSBzcGVjaWZpZWQgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZXMnIG9yICdkYXlzJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDF9KS5hcygnZGF5cycpIC8vPT4gMzY1CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMX0pLmFzKCdtb250aHMnKSAvLz0+IDEyCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHtob3VyczogNjB9KS5hcygnZGF5cycpIC8vPT4gMi41CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIGFzKHVuaXQpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuc2hpZnRUbyh1bml0KS5nZXQodW5pdCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWR1Y2UgdGhpcyBEdXJhdGlvbiB0byBpdHMgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGluIGl0cyBjdXJyZW50IHVuaXRzLgogICAgICogQXNzdW1pbmcgdGhlIG92ZXJhbGwgdmFsdWUgb2YgdGhlIER1cmF0aW9uIGlzIHBvc2l0aXZlLCB0aGlzIG1lYW5zOgogICAgICogLSBleGNlc3NpdmUgdmFsdWVzIGZvciBsb3dlci1vcmRlciB1bml0cyBhcmUgY29udmVydGVkIHRvIGhpZ2hlci1vcmRlciB1bml0cyAoaWYgcG9zc2libGUsIHNlZSBmaXJzdCBhbmQgc2Vjb25kIGV4YW1wbGUpCiAgICAgKiAtIG5lZ2F0aXZlIGxvd2VyLW9yZGVyIHVuaXRzIGFyZSBjb252ZXJ0ZWQgdG8gaGlnaGVyIG9yZGVyIHVuaXRzICh0aGVyZSBtdXN0IGJlIHN1Y2ggYSBoaWdoZXIgb3JkZXIgdW5pdCwgb3RoZXJ3aXNlCiAgICAgKiAgIHRoZSBvdmVyYWxsIHZhbHVlIHdvdWxkIGJlIG5lZ2F0aXZlLCBzZWUgc2Vjb25kIGV4YW1wbGUpCiAgICAgKiAtIGZyYWN0aW9uYWwgdmFsdWVzIGZvciBoaWdoZXItb3JkZXIgdW5pdHMgYXJlIGNvbnZlcnRlZCB0byBsb3dlci1vcmRlciB1bml0cyAoaWYgcG9zc2libGUsIHNlZSBmb3VydGggZXhhbXBsZSkKICAgICAqCiAgICAgKiBJZiB0aGUgb3ZlcmFsbCB2YWx1ZSBpcyBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBvZiB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGB0aGlzLm5lZ2F0ZSgpLm5vcm1hbGl6ZSgpLm5lZ2F0ZSgpYC4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMiwgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMTUsIGRheXM6IDI1NSB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBkYXlzOiA1MDAwIH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTIsIG1pbnV0ZXM6IC00NSB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDE1IH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMi41LCBkYXlzOiAwLCBob3VyczogMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMiwgZGF5czogMTgyLCBob3VyczogMTIgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG5vcm1hbGl6ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gdGhpcy50b09iamVjdCgpOwogICAgICBub3JtYWxpemVWYWx1ZXModGhpcy5tYXRyaXgsIHZhbHMpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2NhbGUgdW5pdHMgdG8gaXRzIGxhcmdlc3QgcmVwcmVzZW50YXRpb24KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDkwMDAwIH0pLnJlc2NhbGUoKS50b09iamVjdCgpIC8vPT4geyBtaW51dGVzOiAxLCBzZWNvbmRzOiAzMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgcmVzY2FsZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gcmVtb3ZlWmVyb2VzKHRoaXMubm9ybWFsaXplKCkuc2hpZnRUb0FsbCgpLnRvT2JqZWN0KCkpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgdGhpcyBEdXJhdGlvbiBpbnRvIGl0cyByZXByZXNlbnRhdGlvbiBpbiBhIGRpZmZlcmVudCBzZXQgb2YgdW5pdHMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLnNoaWZ0VG8oJ21pbnV0ZXMnLCAnbWlsbGlzZWNvbmRzJykudG9PYmplY3QoKSAvLz0+IHsgbWludXRlczogNjAsIG1pbGxpc2Vjb25kczogMzAwMDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG8oLi4udW5pdHMpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgaWYgKHVuaXRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CgogICAgICB1bml0cyA9IHVuaXRzLm1hcCgodSkgPT4gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1KSk7CgogICAgICBjb25zdCBidWlsdCA9IHt9LAogICAgICAgIGFjY3VtdWxhdGVkID0ge30sCiAgICAgICAgdmFscyA9IHRoaXMudG9PYmplY3QoKTsKICAgICAgbGV0IGxhc3RVbml0OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKHVuaXRzLmluZGV4T2YoaykgPj0gMCkgewogICAgICAgICAgbGFzdFVuaXQgPSBrOwoKICAgICAgICAgIGxldCBvd24gPSAwOwoKICAgICAgICAgIC8vIGFueXRoaW5nIHdlIGhhdmVuJ3QgYm9pbGVkIGRvd24geWV0IHNob3VsZCBnZXQgYm9pbGVkIHRvIHRoaXMgdW5pdAogICAgICAgICAgZm9yIChjb25zdCBhayBpbiBhY2N1bXVsYXRlZCkgewogICAgICAgICAgICBvd24gKz0gdGhpcy5tYXRyaXhbYWtdW2tdICogYWNjdW11bGF0ZWRbYWtdOwogICAgICAgICAgICBhY2N1bXVsYXRlZFtha10gPSAwOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIHBsdXMgYW55dGhpbmcgdGhhdCdzIGFscmVhZHkgaW4gdGhpcyB1bml0CiAgICAgICAgICBpZiAoaXNOdW1iZXIodmFsc1trXSkpIHsKICAgICAgICAgICAgb3duICs9IHZhbHNba107CiAgICAgICAgICB9CgogICAgICAgICAgLy8gb25seSBrZWVwIHRoZSBpbnRlZ2VyIHBhcnQgZm9yIG5vdyBpbiB0aGUgaG9wZXMgb2YgcHV0dGluZyBhbnkgZGVjaW1hbCBwYXJ0CiAgICAgICAgICAvLyBpbnRvIGEgc21hbGxlciB1bml0IGxhdGVyCiAgICAgICAgICBjb25zdCBpID0gTWF0aC50cnVuYyhvd24pOwogICAgICAgICAgYnVpbHRba10gPSBpOwogICAgICAgICAgYWNjdW11bGF0ZWRba10gPSAob3duICogMTAwMCAtIGkgKiAxMDAwKSAvIDEwMDA7CgogICAgICAgICAgLy8gb3RoZXJ3aXNlLCBrZWVwIGl0IGluIHRoZSB3aW5ncyB0byBib2lsIGl0IGxhdGVyCiAgICAgICAgfSBlbHNlIGlmIChpc051bWJlcih2YWxzW2tdKSkgewogICAgICAgICAgYWNjdW11bGF0ZWRba10gPSB2YWxzW2tdOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gYW55dGhpbmcgbGVmdG92ZXIgYmVjb21lcyB0aGUgZGVjaW1hbCBmb3IgdGhlIGxhc3QgdW5pdAogICAgICAvLyBsYXN0VW5pdCBtdXN0IGJlIGRlZmluZWQgc2luY2UgdW5pdHMgaXMgbm90IGVtcHR5CiAgICAgIGZvciAoY29uc3Qga2V5IGluIGFjY3VtdWxhdGVkKSB7CiAgICAgICAgaWYgKGFjY3VtdWxhdGVkW2tleV0gIT09IDApIHsKICAgICAgICAgIGJ1aWx0W2xhc3RVbml0XSArPQogICAgICAgICAgICBrZXkgPT09IGxhc3RVbml0ID8gYWNjdW11bGF0ZWRba2V5XSA6IGFjY3VtdWxhdGVkW2tleV0gLyB0aGlzLm1hdHJpeFtsYXN0VW5pdF1ba2V5XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIG5vcm1hbGl6ZVZhbHVlcyh0aGlzLm1hdHJpeCwgYnVpbHQpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogYnVpbHQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTaGlmdCB0aGlzIER1cmF0aW9uIHRvIGFsbCBhdmFpbGFibGUgdW5pdHMuCiAgICAgKiBTYW1lIGFzIHNoaWZ0VG8oInllYXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG9BbGwoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIHRoaXMuc2hpZnRUbygKICAgICAgICAieWVhcnMiLAogICAgICAgICJtb250aHMiLAogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgImRheXMiLAogICAgICAgICJob3VycyIsCiAgICAgICAgIm1pbnV0ZXMiLAogICAgICAgICJzZWNvbmRzIiwKICAgICAgICAibWlsbGlzZWNvbmRzIgogICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBuZWdhdGl2ZSBvZiB0aGlzIER1cmF0aW9uLgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBzZWNvbmRzOiAzMCB9KS5uZWdhdGUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogLTEsIHNlY29uZHM6IC0zMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgbmVnYXRlKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IG5lZ2F0ZWQgPSB7fTsKICAgICAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHRoaXMudmFsdWVzKSkgewogICAgICAgIG5lZ2F0ZWRba10gPSB0aGlzLnZhbHVlc1trXSA9PT0gMCA/IDAgOiAtdGhpcy52YWx1ZXNba107CiAgICAgIH0KICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IG5lZ2F0ZWQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHllYXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHllYXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMueWVhcnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcXVhcnRlcnMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgcXVhcnRlcnMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5xdWFydGVycyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtb250aHMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbW9udGhzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubW9udGhzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWtzCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgd2Vla3MoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy53ZWVrcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXlzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5kYXlzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhvdXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGhvdXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuaG91cnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWludXRlcy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBtaW51dGVzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWludXRlcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBzZWNvbmRzLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQgc2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnNlY29uZHMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWlsbGlzZWNvbmRzLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWlsbGlzZWNvbmRzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWlsbGlzZWNvbmRzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIER1cmF0aW9uIGlzIGludmFsaWQuIEludmFsaWQgZHVyYXRpb25zIGFyZSByZXR1cm5lZCBieSBkaWZmIG9wZXJhdGlvbnMKICAgICAqIG9uIGludmFsaWQgRGF0ZVRpbWVzIG9yIEludGVydmFscy4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRHVyYXRpb24gYmVjYW1lIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIER1cmF0aW9uIGlzIHZhbGlkCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBFcXVhbGl0eSBjaGVjawogICAgICogVHdvIER1cmF0aW9ucyBhcmUgZXF1YWwgaWZmIHRoZXkgaGF2ZSB0aGUgc2FtZSB1bml0cyBhbmQgdGhlIHNhbWUgdmFsdWVzIGZvciBlYWNoIHVuaXQuCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlci5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICBpZiAoIXRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICBmdW5jdGlvbiBlcSh2MSwgdjIpIHsKICAgICAgICAvLyBDb25zaWRlciAwIGFuZCB1bmRlZmluZWQgYXMgZXF1YWwKICAgICAgICBpZiAodjEgPT09IHVuZGVmaW5lZCB8fCB2MSA9PT0gMCkgcmV0dXJuIHYyID09PSB1bmRlZmluZWQgfHwgdjIgPT09IDA7CiAgICAgICAgcmV0dXJuIHYxID09PSB2MjsKICAgICAgfQoKICAgICAgZm9yIChjb25zdCB1IG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKCFlcSh0aGlzLnZhbHVlc1t1XSwgb3RoZXIudmFsdWVzW3VdKSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIGNvbnN0IElOVkFMSUQkMSA9ICJJbnZhbGlkIEludGVydmFsIjsKCiAgLy8gY2hlY2tzIGlmIHRoZSBzdGFydCBpcyBlcXVhbCB0byBvciBiZWZvcmUgdGhlIGVuZAogIGZ1bmN0aW9uIHZhbGlkYXRlU3RhcnRFbmQoc3RhcnQsIGVuZCkgewogICAgaWYgKCFzdGFydCB8fCAhc3RhcnQuaXNWYWxpZCkgewogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgibWlzc2luZyBvciBpbnZhbGlkIHN0YXJ0Iik7CiAgICB9IGVsc2UgaWYgKCFlbmQgfHwgIWVuZC5pc1ZhbGlkKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKCJtaXNzaW5nIG9yIGludmFsaWQgZW5kIik7CiAgICB9IGVsc2UgaWYgKGVuZCA8IHN0YXJ0KSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKAogICAgICAgICJlbmQgYmVmb3JlIHN0YXJ0IiwKICAgICAgICBgVGhlIGVuZCBvZiBhbiBpbnRlcnZhbCBtdXN0IGJlIGFmdGVyIGl0cyBzdGFydCwgYnV0IHlvdSBoYWQgc3RhcnQ9JHtzdGFydC50b0lTTygpfSBhbmQgZW5kPSR7ZW5kLnRvSVNPKCl9YAogICAgICApOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgfQoKICAvKioKICAgKiBBbiBJbnRlcnZhbCBvYmplY3QgcmVwcmVzZW50cyBhIGhhbGYtb3BlbiBpbnRlcnZhbCBvZiB0aW1lLCB3aGVyZSBlYWNoIGVuZHBvaW50IGlzIGEge0BsaW5rIERhdGVUaW1lfS4gQ29uY2VwdHVhbGx5LCBpdCdzIGEgY29udGFpbmVyIGZvciB0aG9zZSB0d28gZW5kcG9pbnRzLCBhY2NvbXBhbmllZCBieSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgY29tcGFyaW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIEludGVydmFsOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGFuIEludGVydmFsLCB1c2Uge0BsaW5rIEludGVydmFsLmZyb21EYXRlVGltZXN9LCB7QGxpbmsgSW50ZXJ2YWwuYWZ0ZXJ9LCB7QGxpbmsgSW50ZXJ2YWwuYmVmb3JlfSwgb3Ige0BsaW5rIEludGVydmFsLmZyb21JU099LgogICAqICogKipBY2Nlc3NvcnMqKiBVc2Uge0BsaW5rIEludGVydmFsI3N0YXJ0fSBhbmQge0BsaW5rIEludGVydmFsI2VuZH0gdG8gZ2V0IHRoZSBzdGFydCBhbmQgZW5kLgogICAqICogKipJbnRlcnJvZ2F0aW9uKiogVG8gYW5hbHl6ZSB0aGUgSW50ZXJ2YWwsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjY291bnR9LCB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSwge0BsaW5rIEludGVydmFsI2hhc1NhbWV9LCB7QGxpbmsgSW50ZXJ2YWwjY29udGFpbnN9LCB7QGxpbmsgSW50ZXJ2YWwjaXNBZnRlcn0sIG9yIHtAbGluayBJbnRlcnZhbCNpc0JlZm9yZX0uCiAgICogKiAqKlRyYW5zZm9ybWF0aW9uKiogVG8gY3JlYXRlIG90aGVyIEludGVydmFscyBvdXQgb2YgdGhpcyBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjc2V0fSwge0BsaW5rIEludGVydmFsI3NwbGl0QXR9LCB7QGxpbmsgSW50ZXJ2YWwjc3BsaXRCeX0sIHtAbGluayBJbnRlcnZhbCNkaXZpZGVFcXVhbGx5fSwge0BsaW5rIEludGVydmFsLm1lcmdlfSwge0BsaW5rIEludGVydmFsLnhvcn0sIHtAbGluayBJbnRlcnZhbCN1bmlvbn0sIHtAbGluayBJbnRlcnZhbCNpbnRlcnNlY3Rpb259LCBvciB7QGxpbmsgSW50ZXJ2YWwjZGlmZmVyZW5jZX0uCiAgICogKiAqKkNvbXBhcmlzb24qKiBUbyBjb21wYXJlIHRoaXMgSW50ZXJ2YWwgdG8gYW5vdGhlciBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjZXF1YWxzfSwge0BsaW5rIEludGVydmFsI292ZXJsYXBzfSwge0BsaW5rIEludGVydmFsI2FidXRzU3RhcnR9LCB7QGxpbmsgSW50ZXJ2YWwjYWJ1dHNFbmR9LCB7QGxpbmsgSW50ZXJ2YWwjZW5ndWxmc30KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgSW50ZXJ2YWwgaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgSW50ZXJ2YWwjdG9TdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9Mb2NhbGVTdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU099LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU09EYXRlfSwge0BsaW5rIEludGVydmFsI3RvSVNPVGltZX0sIHtAbGluayBJbnRlcnZhbCN0b0Zvcm1hdH0sIGFuZCB7QGxpbmsgSW50ZXJ2YWwjdG9EdXJhdGlvbn0uCiAgICovCiAgY2xhc3MgSW50ZXJ2YWwgewogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBjb25zdHJ1Y3Rvcihjb25maWcpIHsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5zID0gY29uZmlnLnN0YXJ0OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmUgPSBjb25maWcuZW5kOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmludmFsaWQgPSBjb25maWcuaW52YWxpZCB8fCBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25JbnRlcnZhbCA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gaW52YWxpZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIEludGVydmFsIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkgewogICAgICBpZiAoIXJlYXNvbikgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBJbnRlcnZhbCBpcyBpbnZhbGlkIik7CiAgICAgIH0KCiAgICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7CgogICAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEludGVydmFsRXJyb3IoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7IGludmFsaWQgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGFuIGVuZCBEYXRlVGltZS4gSW5jbHVzaXZlIG9mIHRoZSBzdGFydCBidXQgbm90IHRoZSBlbmQuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBzdGFydAogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCkgewogICAgICBjb25zdCBidWlsdFN0YXJ0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCksCiAgICAgICAgYnVpbHRFbmQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7CgogICAgICBjb25zdCB2YWxpZGF0ZUVycm9yID0gdmFsaWRhdGVTdGFydEVuZChidWlsdFN0YXJ0LCBidWlsdEVuZCk7CgogICAgICBpZiAodmFsaWRhdGVFcnJvciA9PSBudWxsKSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7CiAgICAgICAgICBzdGFydDogYnVpbHRTdGFydCwKICAgICAgICAgIGVuZDogYnVpbHRFbmQsCiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHZhbGlkYXRlRXJyb3I7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGEgRHVyYXRpb24gdG8gZXh0ZW5kIHRvLgogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnQKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgYWZ0ZXIoc3RhcnQsIGR1cmF0aW9uKSB7CiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCk7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0LCBkdC5wbHVzKGR1cikpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gZW5kIERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCBiYWNrd2FyZHMgdG8uCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBlbmQKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgYmVmb3JlKGVuZCwgZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksCiAgICAgICAgZHQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0Lm1pbnVzKGR1ciksIGR0KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGFuIElTTyA4NjAxIHN0cmluZy4KICAgICAqIEFjY2VwdHMgYDxzdGFydD4vPGVuZD5gLCBgPHN0YXJ0Pi88ZHVyYXRpb24+YCwgYW5kIGA8ZHVyYXRpb24+LzxlbmQ+YCBmb3JtYXRzLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZyB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIG9wdGlvbnMgdG8gcGFzcyB7QGxpbmsgRGF0ZVRpbWUjZnJvbUlTT30gYW5kIG9wdGlvbmFsbHkge0BsaW5rIER1cmF0aW9uI2Zyb21JU099CiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGZyb21JU08odGV4dCwgb3B0cykgewogICAgICBjb25zdCBbcywgZV0gPSAodGV4dCB8fCAiIikuc3BsaXQoIi8iLCAyKTsKICAgICAgaWYgKHMgJiYgZSkgewogICAgICAgIGxldCBzdGFydCwgc3RhcnRJc1ZhbGlkOwogICAgICAgIHRyeSB7CiAgICAgICAgICBzdGFydCA9IERhdGVUaW1lLmZyb21JU08ocywgb3B0cyk7CiAgICAgICAgICBzdGFydElzVmFsaWQgPSBzdGFydC5pc1ZhbGlkOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIHN0YXJ0SXNWYWxpZCA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgbGV0IGVuZCwgZW5kSXNWYWxpZDsKICAgICAgICB0cnkgewogICAgICAgICAgZW5kID0gRGF0ZVRpbWUuZnJvbUlTTyhlLCBvcHRzKTsKICAgICAgICAgIGVuZElzVmFsaWQgPSBlbmQuaXNWYWxpZDsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBlbmRJc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RhcnRJc1ZhbGlkICYmIGVuZElzVmFsaWQpIHsKICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBlbmQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0YXJ0SXNWYWxpZCkgewogICAgICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhlLCBvcHRzKTsKICAgICAgICAgIGlmIChkdXIuaXNWYWxpZCkgewogICAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYWZ0ZXIoc3RhcnQsIGR1cik7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChlbmRJc1ZhbGlkKSB7CiAgICAgICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tSVNPKHMsIG9wdHMpOwogICAgICAgICAgaWYgKGR1ci5pc1ZhbGlkKSB7CiAgICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5iZWZvcmUoZW5kLCBkdXIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgidW5wYXJzYWJsZSIsIGB0aGUgaW5wdXQgIiR7dGV4dH0iIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMWApOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIEludGVydmFsLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzSW50ZXJ2YWwobykgewogICAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uSW50ZXJ2YWwpIHx8IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc3RhcnQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAdHlwZSB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIGdldCBzdGFydCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMucyA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlbmQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAdHlwZSB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIGdldCBlbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBlbmQgaXMgYXQgbGVhc3QgaXRzIHN0YXJ0LCBtZWFuaW5nIHRoYXQgdGhlIEludGVydmFsIGlzbid0ICdiYWNrd2FyZHMnLgogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkUmVhc29uID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgSW50ZXJ2YWwgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIEludGVydmFsIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBJbnRlcnZhbCBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIEludGVydmFsIGluIHRoZSBzcGVjaWZpZWQgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIHJldHVybiB0aGUgbGVuZ3RoIGluLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBsZW5ndGgodW5pdCA9ICJtaWxsaXNlY29uZHMiKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvRHVyYXRpb24oLi4uW3VuaXRdKS5nZXQodW5pdCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb3VudCBvZiBtaW51dGVzLCBob3VycywgZGF5cywgbW9udGhzLCBvciB5ZWFycyBpbmNsdWRlZCBpbiB0aGUgSW50ZXJ2YWwsIGV2ZW4gaW4gcGFydC4KICAgICAqIFVubGlrZSB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSB0aGlzIGNvdW50cyBzZWN0aW9ucyBvZiB0aGUgY2FsZW5kYXIsIG5vdCBwZXJpb2RzIG9mIHRpbWUsIGUuZy4gc3BlY2lmeWluZyAnZGF5JwogICAgICogYXNrcyAnd2hhdCBkYXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhpcyBpbnRlcnZhbD8nLCBub3QgJ2hvdyBtYW55IGRheXMgbG9uZyBpcyB0aGlzIGludGVydmFsPycKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdW5pdD0nbWlsbGlzZWNvbmRzJ10gLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNvdW50LgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBjb3VudCh1bml0ID0gIm1pbGxpc2Vjb25kcyIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBOYU47CiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5zdGFydC5zdGFydE9mKHVuaXQpLAogICAgICAgIGVuZCA9IHRoaXMuZW5kLnN0YXJ0T2YodW5pdCk7CiAgICAgIHJldHVybiBNYXRoLmZsb29yKGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCkpICsgKGVuZC52YWx1ZU9mKCkgIT09IHRoaXMuZW5kLnZhbHVlT2YoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGhhc1NhbWUodW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5pc0VtcHR5KCkgfHwgdGhpcy5lLm1pbnVzKDEpLmhhc1NhbWUodGhpcy5zLCB1bml0KSA6IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBEYXRlVGltZXMuCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0VtcHR5KCkgewogICAgICByZXR1cm4gdGhpcy5zLnZhbHVlT2YoKSA9PT0gdGhpcy5lLnZhbHVlT2YoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBpcyBhZnRlciB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGlzQWZ0ZXIoZGF0ZVRpbWUpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIHRoaXMucyA+IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBiZWZvcmUgdGhlIHNwZWNpZmllZCBEYXRlVGltZS4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0JlZm9yZShkYXRlVGltZSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gdGhpcy5lIDw9IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBjb250YWlucyB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGNvbnRhaW5zKGRhdGVUaW1lKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gZGF0ZVRpbWUgJiYgdGhpcy5lID4gZGF0ZVRpbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0cyIgdGhlIHN0YXJ0IGFuZC9vciBlbmQgZGF0ZXMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIHRvIHNldAogICAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLnN0YXJ0IC0gdGhlIHN0YXJ0aW5nIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSB2YWx1ZXMuZW5kIC0gdGhlIGVuZGluZyBEYXRlVGltZQogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHNldCh7IHN0YXJ0LCBlbmQgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQgfHwgdGhpcy5zLCBlbmQgfHwgdGhpcy5lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgYXQgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIERhdGVUaW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC4KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzcGxpdEF0KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIFtdOwogICAgICBjb25zdCBzb3J0ZWQgPSBkYXRlVGltZXMKICAgICAgICAgIC5tYXAoZnJpZW5kbHlEYXRlVGltZSkKICAgICAgICAgIC5maWx0ZXIoKGQpID0+IHRoaXMuY29udGFpbnMoZCkpCiAgICAgICAgICAuc29ydCgpLAogICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpID0gMDsKCiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSBzb3J0ZWRbaV0gfHwgdGhpcy5lLAogICAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaSArPSAxOwogICAgICB9CgogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgaW50byBzbWFsbGVyIEludGVydmFscywgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4KICAgICAqIExlZnQgb3ZlciB0aW1lIGlzIGdyb3VwZWQgaW50byBhIHNtYWxsZXIgaW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgbGVuZ3RoIG9mIGVhY2ggcmVzdWx0aW5nIGludGVydmFsLgogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHNwbGl0QnkoZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CgogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhZHVyLmlzVmFsaWQgfHwgZHVyLmFzKCJtaWxsaXNlY29uZHMiKSA9PT0gMCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQoKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpZHggPSAxLAogICAgICAgIG5leHQ7CgogICAgICBjb25zdCByZXN1bHRzID0gW107CiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLnN0YXJ0LnBsdXMoZHVyLm1hcFVuaXRzKCh4KSA9PiB4ICogaWR4KSk7CiAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaWR4ICs9IDE7CiAgICAgIH0KCiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfQoKICAgIC8qKgogICAgICogU3BsaXQgdGhpcyBJbnRlcnZhbCBpbnRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNtYWxsZXIgaW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlck9mUGFydHMgLSBUaGUgbnVtYmVyIG9mIEludGVydmFscyB0byBkaXZpZGUgdGhlIEludGVydmFsIGludG8uCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgZGl2aWRlRXF1YWxseShudW1iZXJPZlBhcnRzKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107CiAgICAgIHJldHVybiB0aGlzLnNwbGl0QnkodGhpcy5sZW5ndGgoKSAvIG51bWJlck9mUGFydHMpLnNsaWNlKDAsIG51bWJlck9mUGFydHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBvdmVybGFwcyB3aXRoIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBvdmVybGFwcyhvdGhlcikgewogICAgICByZXR1cm4gdGhpcy5lID4gb3RoZXIucyAmJiB0aGlzLnMgPCBvdGhlci5lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBhZGphY2VudCB0byB0aGUgc3BlY2lmaWVkIEludGVydmFsJ3Mgc3RhcnQuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgYWJ1dHNTdGFydChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK3RoaXMuZSA9PT0gK290aGVyLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBhYnV0c0VuZChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGVuZ3VsZnMgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlbmd1bGZzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gb3RoZXIucyAmJiB0aGlzLmUgPj0gb3RoZXIuZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgaGFzIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgYXMgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLnMuZXF1YWxzKG90aGVyLnMpICYmIHRoaXMuZS5lcXVhbHMob3RoZXIuZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIFNwZWNpZmljYWxseSwgdGhlIHJlc3VsdGluZyBJbnRlcnZhbCBoYXMgdGhlIG1heGltdW0gc3RhcnQgdGltZSBhbmQgdGhlIG1pbmltdW0gZW5kIHRpbWUgb2YgdGhlIHR3byBJbnRlcnZhbHMuCiAgICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGludGVyc2VjdGlvbiBpcyBlbXB0eSwgbWVhbmluZywgdGhlIGludGVydmFscyBkb24ndCBpbnRlcnNlY3QuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIGludGVyc2VjdGlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPiBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lIDwgb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CgogICAgICBpZiAocyA+PSBlKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIHVuaW9uIG9mIHRoaXMgSW50ZXJ2YWwgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuCiAgICAgKiBTcGVjaWZpY2FsbHksIHRoZSByZXN1bHRpbmcgSW50ZXJ2YWwgaGFzIHRoZSBtaW5pbXVtIHN0YXJ0IHRpbWUgYW5kIHRoZSBtYXhpbXVtIGVuZCB0aW1lIG9mIHRoZSB0d28gSW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bmlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPCBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIGUpOwogICAgfQoKICAgIC8qKgogICAgICogTWVyZ2UgYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIGludG8gYSBlcXVpdmFsZW50IG1pbmltYWwgc2V0IG9mIEludGVydmFscy4KICAgICAqIENvbWJpbmVzIG92ZXJsYXBwaW5nIGFuZCBhZGphY2VudCBJbnRlcnZhbHMuCiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbnRlcnZhbHMKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbWVyZ2UoaW50ZXJ2YWxzKSB7CiAgICAgIGNvbnN0IFtmb3VuZCwgZmluYWxdID0gaW50ZXJ2YWxzCiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEucyAtIGIucykKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFtzb2ZhciwgY3VycmVudF0sIGl0ZW0pID0+IHsKICAgICAgICAgICAgaWYgKCFjdXJyZW50KSB7CiAgICAgICAgICAgICAgcmV0dXJuIFtzb2ZhciwgaXRlbV07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5vdmVybGFwcyhpdGVtKSB8fCBjdXJyZW50LmFidXRzU3RhcnQoaXRlbSkpIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLCBjdXJyZW50LnVuaW9uKGl0ZW0pXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLmNvbmNhdChbY3VycmVudF0pLCBpdGVtXTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIFtbXSwgbnVsbF0KICAgICAgICApOwogICAgICBpZiAoZmluYWwpIHsKICAgICAgICBmb3VuZC5wdXNoKGZpbmFsKTsKICAgICAgfQogICAgICByZXR1cm4gZm91bmQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIHJlcHJlc2VudGluZyB0aGUgc3BhbnMgb2YgdGltZSB0aGF0IG9ubHkgYXBwZWFyIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHN0YXRpYyB4b3IoaW50ZXJ2YWxzKSB7CiAgICAgIGxldCBzdGFydCA9IG51bGwsCiAgICAgICAgY3VycmVudENvdW50ID0gMDsKICAgICAgY29uc3QgcmVzdWx0cyA9IFtdLAogICAgICAgIGVuZHMgPSBpbnRlcnZhbHMubWFwKChpKSA9PiBbCiAgICAgICAgICB7IHRpbWU6IGkucywgdHlwZTogInMiIH0sCiAgICAgICAgICB7IHRpbWU6IGkuZSwgdHlwZTogImUiIH0sCiAgICAgICAgXSksCiAgICAgICAgZmxhdHRlbmVkID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi5lbmRzKSwKICAgICAgICBhcnIgPSBmbGF0dGVuZWQuc29ydCgoYSwgYikgPT4gYS50aW1lIC0gYi50aW1lKTsKCiAgICAgIGZvciAoY29uc3QgaSBvZiBhcnIpIHsKICAgICAgICBjdXJyZW50Q291bnQgKz0gaS50eXBlID09PSAicyIgPyAxIDogLTE7CgogICAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHsKICAgICAgICAgIHN0YXJ0ID0gaS50aW1lOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7CiAgICAgICAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBpLnRpbWUpKTsKICAgICAgICAgIH0KCiAgICAgICAgICBzdGFydCA9IG51bGw7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gSW50ZXJ2YWwubWVyZ2UocmVzdWx0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBzcGFuIG9mIHRpbWUgaW4gdGhpcyBJbnRlcnZhbCB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7Li4uSW50ZXJ2YWx9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIGRpZmZlcmVuY2UoLi4uaW50ZXJ2YWxzKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC54b3IoW3RoaXNdLmNvbmNhdChpbnRlcnZhbHMpKQogICAgICAgIC5tYXAoKGkpID0+IHRoaXMuaW50ZXJzZWN0aW9uKGkpKQogICAgICAgIC5maWx0ZXIoKGkpID0+IGkgJiYgIWkuaXNFbXB0eSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgIHJldHVybiBgWyR7dGhpcy5zLnRvSVNPKCl9IOKAkyAke3RoaXMuZS50b0lTTygpfSlgOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgSW50ZXJ2YWwuIEFjY2VwdHMgdGhlIHNhbWUgb3B0aW9ucyBhcyB0aGUKICAgICAqIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMKICAgICAqIHtAbGluayBEYXRlVGltZS5EQVRFX0ZVTEx9IG9yIHtAbGluayBEYXRlVGltZS5USU1FX1NJTVBMRX0uIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZAogICAgICogaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCiAgICAgKiBJbnRlcnZhbCBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbgogICAgICogc3BlY2lmaWVkLgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdAogICAgICogQHBhcmFtIHtPYmplY3R9IFtmb3JtYXRPcHRzPURhdGVUaW1lLkRBVEVfU0hPUlRdIC0gRWl0aGVyIGEgRGF0ZVRpbWUgcHJlc2V0IG9yCiAgICAgKiBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHN0YXJ0IERhdGVUaW1lLgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZygpOyAvLz0+IDExLzcvMjAyMiDigJMgMTEvOC8yMDIyCiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tSVNPKCcyMDIyLTExLTA3VDA5OjAwWi8yMDIyLTExLTA4VDA5OjAwWicpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gTm92ZW1iZXIgNyDigJMgOCwgMjAyMgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwsIHsgbG9jYWxlOiAnZnItRlInIH0pOyAvLz0+IDfigJM4IG5vdmVtYnJlIDIwMjIKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuVElNRV9TSU1QTEUpOyAvLz0+IDY6MDAg4oCTIDg6MDAgUE0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnc2hvcnQnLCBtb250aDogJ3Nob3J0JywgZGF5OiAnMi1kaWdpdCcsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSk7IC8vPT4gTW9uLCBOb3YgMDcsIDY6MDAg4oCTIDg6MDAgcAogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5zLmxvYy5jbG9uZShvcHRzKSwgZm9ybWF0T3B0cykuZm9ybWF0SW50ZXJ2YWwodGhpcykKICAgICAgICA6IElOVkFMSUQkMTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT30KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08ob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTTyhvcHRzKX0vJHt0aGlzLmUudG9JU08ob3B0cyl9YDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBkYXRlIG9mIHRoaXMgSW50ZXJ2YWwuCiAgICAgKiBUaGUgdGltZSBjb21wb25lbnRzIGFyZSBpZ25vcmVkLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPRGF0ZSgpfS8ke3RoaXMuZS50b0lTT0RhdGUoKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRpbWUgb2YgdGhpcyBJbnRlcnZhbC4KICAgICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFRoZSBzYW1lIG9wdGlvbnMgYXMge0BsaW5rIERhdGVUaW1lI3RvSVNPfQogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTT1RpbWUob3B0cyl9LyR7dGhpcy5lLnRvSVNPVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQKICAgICAqIHN0cmluZy4gKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBJbnRlcnZhbCN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZQogICAgICogZm9ybWF0dGluZyB0b29sLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVGb3JtYXQgLSBUaGUgZm9ybWF0IHN0cmluZy4gVGhpcyBzdHJpbmcgZm9ybWF0cyB0aGUgc3RhcnQgYW5kIGVuZCB0aW1lLgogICAgICogU2VlIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0gZm9yIGRldGFpbHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuc2VwYXJhdG9yID0gICcg4oCTICddIC0gQSBzZXBhcmF0b3IgdG8gcGxhY2UgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICogcmVwcmVzZW50YXRpb25zLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0Zvcm1hdChkYXRlRm9ybWF0LCB7IHNlcGFyYXRvciA9ICIg4oCTICIgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvRm9ybWF0KGRhdGVGb3JtYXQpfSR7c2VwYXJhdG9yfSR7dGhpcy5lLnRvRm9ybWF0KGRhdGVGb3JtYXQpfWA7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYSBEdXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHRpbWUgc3Bhbm5lZCBieSB0aGlzIGludGVydmFsLgogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbigpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogODg0ODkyNTcgfQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignZGF5cycpLnRvT2JqZWN0KCkgLy89PiB7IGRheXM6IDEuMDI0MTgxMjE1Mjc3Nzc3OCB9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcyddKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjQsIG1pbnV0ZXM6IDM0LjgyMDk1IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXSkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDI0LCBtaW51dGVzOiAzNCwgc2Vjb25kczogNDkuMjU3IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ3NlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBzZWNvbmRzOiA4ODQ4OS4yNTcgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHRvRHVyYXRpb24odW5pdCwgb3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKHRoaXMuaW52YWxpZFJlYXNvbik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZS5kaWZmKHRoaXMucywgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzCiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtYXBGbgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSkKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLm1hcEVuZHBvaW50cyhlbmRwb2ludCA9PiBlbmRwb2ludC5wbHVzKHsgaG91cnM6IDIgfSkpCiAgICAgKi8KICAgIG1hcEVuZHBvaW50cyhtYXBGbikgewogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhtYXBGbih0aGlzLnMpLCBtYXBGbih0aGlzLmUpKTsKICAgIH0KICB9CgogIC8qKgogICAqIFRoZSBJbmZvIGNsYXNzIGNvbnRhaW5zIHN0YXRpYyBtZXRob2RzIGZvciByZXRyaWV2aW5nIGdlbmVyYWwgdGltZSBhbmQgZGF0ZSByZWxhdGVkIGRhdGEuIEZvciBleGFtcGxlLCBpdCBoYXMgbWV0aG9kcyBmb3IgZmluZGluZyBvdXQgaWYgYSB0aW1lIHpvbmUgaGFzIGEgRFNULCBmb3IgbGlzdGluZyB0aGUgbW9udGhzIGluIGFueSBzdXBwb3J0ZWQgbG9jYWxlLCBhbmQgZm9yIGRpc2NvdmVyaW5nIHdoaWNoIG9mIEx1eG9uIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCiAgICovCiAgY2xhc3MgSW5mbyB7CiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gWm9uZSB0byBjaGVjay4gRGVmYXVsdHMgdG8gdGhlIGVudmlyb25tZW50J3MgbG9jYWwgem9uZS4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBoYXNEU1Qoem9uZSA9IFNldHRpbmdzLmRlZmF1bHRab25lKSB7CiAgICAgIGNvbnN0IHByb3RvID0gRGF0ZVRpbWUubm93KCkuc2V0Wm9uZSh6b25lKS5zZXQoeyBtb250aDogMTIgfSk7CgogICAgICByZXR1cm4gIXpvbmUuaXNVbml2ZXJzYWwgJiYgcHJvdG8ub2Zmc2V0ICE9PSBwcm90by5zZXQoeyBtb250aDogNiB9KS5vZmZzZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGUgc3BlY2lmaWVkIHpvbmUgaXMgYSB2YWxpZCBJQU5BIHNwZWNpZmllci4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB6b25lIC0gWm9uZSB0byBjaGVjawogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzVmFsaWRJQU5BWm9uZSh6b25lKSB7CiAgICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkWm9uZSh6b25lKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBpbnB1dCBpbnRvIGEge0BsaW5rIFpvbmV9IGluc3RhbmNlLgogICAgICoKICAgICAqICogSWYgYGlucHV0YCBpcyBhbHJlYWR5IGEgWm9uZSBpbnN0YW5jZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCB0aW1lIHpvbmUgbmFtZSwgYSBab25lIGluc3RhbmNlCiAgICAgKiAgIHdpdGggdGhhdCBuYW1lIGlzIHJldHVybmVkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIHRoYXQgZG9lc24ndCByZWZlciB0byBhIGtub3duIHRpbWUgem9uZSwgYSBab25lCiAgICAgKiAgIGluc3RhbmNlIHdpdGgge0BsaW5rIFpvbmUjaXNWYWxpZH0gPT0gZmFsc2UgaXMgcmV0dXJuZWQuCiAgICAgKiAqIElmIGBpbnB1dCBpcyBhIG51bWJlciwgYSBab25lIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBmaXhlZCBvZmZzZXQKICAgICAqICAgaW4gbWludXRlcyBpcyByZXR1cm5lZC4KICAgICAqICogSWYgYGlucHV0YCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoZSBkZWZhdWx0IHpvbmUgaXMgcmV0dXJuZWQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfG51bWJlcn0gW2lucHV0XSAtIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQKICAgICAqIEByZXR1cm4ge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBub3JtYWxpemVab25lKGlucHV0KSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGlucHV0LCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygc3RhbmRhbG9uZSBtb250aCBuYW1lcy4KICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibnVtZXJpYyIsICIyLWRpZ2l0IiwgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcj0nZ3JlZ29yeSddIC0gdGhlIGNhbGVuZGFyCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygpWzBdIC8vPT4gJ0phbnVhcnknCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnKVswXSAvLz0+ICdKYW4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycpWzBdIC8vPT4gJzEnCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9IClbMF0gLy89PiAnamFudi4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycsIHsgbG9jYWxlOiAnYXInIH0pWzBdIC8vPT4gJ9mhJwogICAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ2xvbmcnLCB7IG91dHB1dENhbGVuZGFyOiAnaXNsYW1pYycgfSlbMF0gLy89PiAnUmFiacq7IEknCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1vbnRocygKICAgICAgbGVuZ3RoID0gImxvbmciLAogICAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwsIG91dHB1dENhbGVuZGFyID0gImdyZWdvcnkiIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZm9ybWF0IG1vbnRoIG5hbWVzLgogICAgICogRm9ybWF0IG1vbnRocyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIG1vbnRocyBpbiB0aGF0IHRoZXkncmUgbWVhbnQgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGRheSBvZiB0aGUgbW9udGguIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jbW9udGhzfQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJudW1lcmljIiwgIjItZGlnaXQiLCAibmFycm93IiwgInNob3J0IiwgImxvbmciCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm91dHB1dENhbGVuZGFyPSdncmVnb3J5J10gLSB0aGUgY2FsZW5kYXIKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbW9udGhzRm9ybWF0KAogICAgICBsZW5ndGggPSAibG9uZyIsCiAgICAgIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCwgb3V0cHV0Q2FsZW5kYXIgPSAiZ3JlZ29yeSIgfSA9IHt9CiAgICApIHsKICAgICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpKS5tb250aHMobGVuZ3RoLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIHdlZWsgbmFtZXMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgd2Vla2RheSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibmFycm93IiwgInNob3J0IiwgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoKVswXSAvLz0+ICdNb25kYXknCiAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcpWzBdIC8vPT4gJ01vbicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdmci1DQScgfSlbMF0gLy89PiAnbHVuLicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAn2KfZhNin2KvZhtmK2YYnCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIHdlZWtkYXlzKGxlbmd0aCA9ICJsb25nIiwgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fSkgewogICAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgd2VlayBuYW1lcy4KICAgICAqIEZvcm1hdCB3ZWVrZGF5cyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIHdlZWtkYXlzIGluIHRoYXQgdGhleSdyZSBtZWFudCB0byBhcHBlYXIgbmV4dCB0byBtb3JlIGRhdGUgaW5mb3JtYXRpb24uIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jd2Vla2RheXN9CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgbW9udGggcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT1udWxsXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgd2Vla2RheXNGb3JtYXQoCiAgICAgIGxlbmd0aCA9ICJsb25nIiwKICAgICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG51bGwpKS53ZWVrZGF5cyhsZW5ndGgsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGFycmF5IG9mIG1lcmlkaWVtcy4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKCkgLy89PiBbICdBTScsICdQTScgXQogICAgICogQGV4YW1wbGUgSW5mby5tZXJpZGllbXMoeyBsb2NhbGU6ICdteScgfSkgLy89PiBbICfhgJThgLbhgJThgIDhgLonLCAn4YCK4YCU4YCxJyBdCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1lcmlkaWVtcyh7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSkubWVyaWRpZW1zKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZXJhcywgc3VjaCBhcyBbJ0JDJywgJ0FEJ10uIFRoZSBsb2NhbGUgY2FuIGJlIHNwZWNpZmllZCwgYnV0IHRoZSBjYWxlbmRhciBzeXN0ZW0gaXMgYWx3YXlzIEdyZWdvcmlhbi4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdzaG9ydCddIC0gdGhlIGxlbmd0aCBvZiB0aGUgZXJhIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJzaG9ydCIgb3IgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCkgLy89PiBbICdCQycsICdBRCcgXQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJykgLy89PiBbICdCZWZvcmUgQ2hyaXN0JywgJ0Fubm8gRG9taW5pJyBdCiAgICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnLCB7IGxvY2FsZTogJ2ZyJyB9KSAvLz0+IFsgJ2F2YW50IErDqXN1cy1DaHJpc3QnLCAnYXByw6hzIErDqXN1cy1DaHJpc3QnIF0KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgZXJhcyhsZW5ndGggPSAic2hvcnQiLCB7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVsbCwgImdyZWdvcnkiKS5lcmFzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHNldCBvZiBhdmFpbGFibGUgZmVhdHVyZXMgaW4gdGhpcyBlbnZpcm9ubWVudC4KICAgICAqIFNvbWUgZmVhdHVyZXMgb2YgTHV4b24gYXJlIG5vdCBhdmFpbGFibGUgaW4gYWxsIGVudmlyb25tZW50cy4gRm9yIGV4YW1wbGUsIG9uIG9sZGVyIGJyb3dzZXJzLCByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlLiBVc2UgdGhpcyBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IGlmIHRoYXQncyB0aGUgY2FzZS4KICAgICAqIEtleXM6CiAgICAgKiAqIGByZWxhdGl2ZWA6IHdoZXRoZXIgdGhpcyBlbnZpcm9ubWVudCBzdXBwb3J0cyByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcKICAgICAqIEBleGFtcGxlIEluZm8uZmVhdHVyZXMoKSAvLz0+IHsgcmVsYXRpdmU6IGZhbHNlIH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGZlYXR1cmVzKCkgewogICAgICByZXR1cm4geyByZWxhdGl2ZTogaGFzUmVsYXRpdmUoKSB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF5RGlmZihlYXJsaWVyLCBsYXRlcikgewogICAgY29uc3QgdXRjRGF5U3RhcnQgPSAoZHQpID0+IGR0LnRvVVRDKDAsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksCiAgICAgIG1zID0gdXRjRGF5U3RhcnQobGF0ZXIpIC0gdXRjRGF5U3RhcnQoZWFybGllcik7CiAgICByZXR1cm4gTWF0aC5mbG9vcihEdXJhdGlvbi5mcm9tTWlsbGlzKG1zKS5hcygiZGF5cyIpKTsKICB9CgogIGZ1bmN0aW9uIGhpZ2hPcmRlckRpZmZzKGN1cnNvciwgbGF0ZXIsIHVuaXRzKSB7CiAgICBjb25zdCBkaWZmZXJzID0gWwogICAgICBbInllYXJzIiwgKGEsIGIpID0+IGIueWVhciAtIGEueWVhcl0sCiAgICAgIFsicXVhcnRlcnMiLCAoYSwgYikgPT4gYi5xdWFydGVyIC0gYS5xdWFydGVyICsgKGIueWVhciAtIGEueWVhcikgKiA0XSwKICAgICAgWyJtb250aHMiLCAoYSwgYikgPT4gYi5tb250aCAtIGEubW9udGggKyAoYi55ZWFyIC0gYS55ZWFyKSAqIDEyXSwKICAgICAgWwogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgKGEsIGIpID0+IHsKICAgICAgICAgIGNvbnN0IGRheXMgPSBkYXlEaWZmKGEsIGIpOwogICAgICAgICAgcmV0dXJuIChkYXlzIC0gKGRheXMgJSA3KSkgLyA3OwogICAgICAgIH0sCiAgICAgIF0sCiAgICAgIFsiZGF5cyIsIGRheURpZmZdLAogICAgXTsKCiAgICBjb25zdCByZXN1bHRzID0ge307CiAgICBjb25zdCBlYXJsaWVyID0gY3Vyc29yOwogICAgbGV0IGxvd2VzdE9yZGVyLCBoaWdoV2F0ZXI7CgogICAgLyogVGhpcyBsb29wIHRyaWVzIHRvIGRpZmYgdXNpbmcgbGFyZ2VyIHVuaXRzIGZpcnN0LgogICAgICAgSWYgd2Ugb3ZlcnNob290LCB3ZSBiYWNrdHJhY2sgYW5kIHRyeSB0aGUgbmV4dCBzbWFsbGVyIHVuaXQuCiAgICAgICAiY3Vyc29yIiBzdGFydHMgb3V0IGF0IHRoZSBlYXJsaWVyIHRpbWVzdGFtcCBhbmQgbW92ZXMgY2xvc2VyIGFuZCBjbG9zZXIgdG8gImxhdGVyIgogICAgICAgYXMgd2UgdXNlIHNtYWxsZXIgYW5kIHNtYWxsZXIgdW5pdHMuCiAgICAgICBoaWdoV2F0ZXIga2VlcHMgdHJhY2sgb2Ygd2hlcmUgd2Ugd291bGQgYmUgaWYgd2UgYWRkZWQgb25lIG1vcmUgb2YgdGhlIHNtYWxsZXN0IHVuaXQsCiAgICAgICB0aGlzIGlzIHVzZWQgbGF0ZXIgdG8gcG90ZW50aWFsbHkgY29udmVydCBhbnkgZGlmZmVyZW5jZSBzbWFsbGVyIHRoYW4gdGhlIHNtYWxsZXN0IGhpZ2hlciBvcmRlciB1bml0CiAgICAgICBpbnRvIGEgZnJhY3Rpb24gb2YgdGhhdCBzbWFsbGVzdCBoaWdoZXIgb3JkZXIgdW5pdAogICAgKi8KICAgIGZvciAoY29uc3QgW3VuaXQsIGRpZmZlcl0gb2YgZGlmZmVycykgewogICAgICBpZiAodW5pdHMuaW5kZXhPZih1bml0KSA+PSAwKSB7CiAgICAgICAgbG93ZXN0T3JkZXIgPSB1bml0OwoKICAgICAgICByZXN1bHRzW3VuaXRdID0gZGlmZmVyKGN1cnNvciwgbGF0ZXIpOwogICAgICAgIGhpZ2hXYXRlciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKCiAgICAgICAgaWYgKGhpZ2hXYXRlciA+IGxhdGVyKSB7CiAgICAgICAgICAvLyB3ZSBvdmVyc2hvdCB0aGUgZW5kIHBvaW50LCBiYWNrdHJhY2sgY3Vyc29yIGJ5IDEKICAgICAgICAgIHJlc3VsdHNbdW5pdF0tLTsKICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKCiAgICAgICAgICAvLyBpZiB3ZSBhcmUgc3RpbGwgb3ZlcnNob290aW5nIG5vdywgd2UgbmVlZCB0byBiYWNrdHJhY2sgYWdhaW4KICAgICAgICAgIC8vIHRoaXMgaGFwcGVucyBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgd2hlbiBkaWZmaW5nIHRpbWVzIGluIGRpZmZlcmVudCB6b25lcywKICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcyBjYWxjdWxhdGlvbiBpZ25vcmVzIHRpbWUgem9uZXMKICAgICAgICAgIGlmIChjdXJzb3IgPiBsYXRlcikgewogICAgICAgICAgICAvLyBrZWVwIHRoZSAib3ZlcnNob3QgYnkgMSIgYXJvdW5kIGFzIGhpZ2hXYXRlcgogICAgICAgICAgICBoaWdoV2F0ZXIgPSBjdXJzb3I7CiAgICAgICAgICAgIC8vIGJhY2t0cmFjayBjdXJzb3IgYnkgMQogICAgICAgICAgICByZXN1bHRzW3VuaXRdLS07CiAgICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgY3Vyc29yID0gaGlnaFdhdGVyOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBbY3Vyc29yLCByZXN1bHRzLCBoaWdoV2F0ZXIsIGxvd2VzdE9yZGVyXTsKICB9CgogIGZ1bmN0aW9uIGRpZmYgKGVhcmxpZXIsIGxhdGVyLCB1bml0cywgb3B0cykgewogICAgbGV0IFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdID0gaGlnaE9yZGVyRGlmZnMoZWFybGllciwgbGF0ZXIsIHVuaXRzKTsKCiAgICBjb25zdCByZW1haW5pbmdNaWxsaXMgPSBsYXRlciAtIGN1cnNvcjsKCiAgICBjb25zdCBsb3dlck9yZGVyVW5pdHMgPSB1bml0cy5maWx0ZXIoCiAgICAgICh1KSA9PiBbImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiXS5pbmRleE9mKHUpID49IDAKICAgICk7CgogICAgaWYgKGxvd2VyT3JkZXJVbml0cy5sZW5ndGggPT09IDApIHsKICAgICAgaWYgKGhpZ2hXYXRlciA8IGxhdGVyKSB7CiAgICAgICAgaGlnaFdhdGVyID0gY3Vyc29yLnBsdXMoeyBbbG93ZXN0T3JkZXJdOiAxIH0pOwogICAgICB9CgogICAgICBpZiAoaGlnaFdhdGVyICE9PSBjdXJzb3IpIHsKICAgICAgICByZXN1bHRzW2xvd2VzdE9yZGVyXSA9IChyZXN1bHRzW2xvd2VzdE9yZGVyXSB8fCAwKSArIHJlbWFpbmluZ01pbGxpcyAvIChoaWdoV2F0ZXIgLSBjdXJzb3IpOwogICAgICB9CiAgICB9CgogICAgY29uc3QgZHVyYXRpb24gPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHJlc3VsdHMsIG9wdHMpOwoKICAgIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID4gMCkgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhyZW1haW5pbmdNaWxsaXMsIG9wdHMpCiAgICAgICAgLnNoaWZ0VG8oLi4ubG93ZXJPcmRlclVuaXRzKQogICAgICAgIC5wbHVzKGR1cmF0aW9uKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBkdXJhdGlvbjsKICAgIH0KICB9CgogIGNvbnN0IG51bWJlcmluZ1N5c3RlbXMgPSB7CiAgICBhcmFiOiAiW1x1MDY2MC1cdTA2NjldIiwKICAgIGFyYWJleHQ6ICJbXHUwNkYwLVx1MDZGOV0iLAogICAgYmFsaTogIltcdTFCNTAtXHUxQjU5XSIsCiAgICBiZW5nOiAiW1x1MDlFNi1cdTA5RUZdIiwKICAgIGRldmE6ICJbXHUwOTY2LVx1MDk2Rl0iLAogICAgZnVsbHdpZGU6ICJbXHVGRjEwLVx1RkYxOV0iLAogICAgZ3VqcjogIltcdTBBRTYtXHUwQUVGXSIsCiAgICBoYW5pZGVjOiAiW+OAh3zkuIB85LqMfOS4iXzlm5t85LqUfOWFrXzkuIN85YWrfOS5nV0iLAogICAga2htcjogIltcdTE3RTAtXHUxN0U5XSIsCiAgICBrbmRhOiAiW1x1MENFNi1cdTBDRUZdIiwKICAgIGxhb286ICJbXHUwRUQwLVx1MEVEOV0iLAogICAgbGltYjogIltcdTE5NDYtXHUxOTRGXSIsCiAgICBtbHltOiAiW1x1MEQ2Ni1cdTBENkZdIiwKICAgIG1vbmc6ICJbXHUxODEwLVx1MTgxOV0iLAogICAgbXltcjogIltcdTEwNDAtXHUxMDQ5XSIsCiAgICBvcnlhOiAiW1x1MEI2Ni1cdTBCNkZdIiwKICAgIHRhbWxkZWM6ICJbXHUwQkU2LVx1MEJFRl0iLAogICAgdGVsdTogIltcdTBDNjYtXHUwQzZGXSIsCiAgICB0aGFpOiAiW1x1MEU1MC1cdTBFNTldIiwKICAgIHRpYnQ6ICJbXHUwRjIwLVx1MEYyOV0iLAogICAgbGF0bjogIlxcZCIsCiAgfTsKCiAgY29uc3QgbnVtYmVyaW5nU3lzdGVtc1VURjE2ID0gewogICAgYXJhYjogWzE2MzIsIDE2NDFdLAogICAgYXJhYmV4dDogWzE3NzYsIDE3ODVdLAogICAgYmFsaTogWzY5OTIsIDcwMDFdLAogICAgYmVuZzogWzI1MzQsIDI1NDNdLAogICAgZGV2YTogWzI0MDYsIDI0MTVdLAogICAgZnVsbHdpZGU6IFs2NTI5NiwgNjUzMDNdLAogICAgZ3VqcjogWzI3OTAsIDI3OTldLAogICAga2htcjogWzYxMTIsIDYxMjFdLAogICAga25kYTogWzMzMDIsIDMzMTFdLAogICAgbGFvbzogWzM3OTIsIDM4MDFdLAogICAgbGltYjogWzY0NzAsIDY0NzldLAogICAgbWx5bTogWzM0MzAsIDM0MzldLAogICAgbW9uZzogWzYxNjAsIDYxNjldLAogICAgbXltcjogWzQxNjAsIDQxNjldLAogICAgb3J5YTogWzI5MTgsIDI5MjddLAogICAgdGFtbGRlYzogWzMwNDYsIDMwNTVdLAogICAgdGVsdTogWzMxNzQsIDMxODNdLAogICAgdGhhaTogWzM2NjQsIDM2NzNdLAogICAgdGlidDogWzM4NzIsIDM4ODFdLAogIH07CgogIGNvbnN0IGhhbmlkZWNDaGFycyA9IG51bWJlcmluZ1N5c3RlbXMuaGFuaWRlYy5yZXBsYWNlKC9bXFt8XF1dL2csICIiKS5zcGxpdCgiIik7CgogIGZ1bmN0aW9uIHBhcnNlRGlnaXRzKHN0cikgewogICAgbGV0IHZhbHVlID0gcGFyc2VJbnQoc3RyLCAxMCk7CiAgICBpZiAoaXNOYU4odmFsdWUpKSB7CiAgICAgIHZhbHVlID0gIiI7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpOwoKICAgICAgICBpZiAoc3RyW2ldLnNlYXJjaChudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMpICE9PSAtMSkgewogICAgICAgICAgdmFsdWUgKz0gaGFuaWRlY0NoYXJzLmluZGV4T2Yoc3RyW2ldKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbnVtYmVyaW5nU3lzdGVtc1VURjE2KSB7CiAgICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBudW1iZXJpbmdTeXN0ZW1zVVRGMTZba2V5XTsKICAgICAgICAgICAgaWYgKGNvZGUgPj0gbWluICYmIGNvZGUgPD0gbWF4KSB7CiAgICAgICAgICAgICAgdmFsdWUgKz0gY29kZSAtIG1pbjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGRpZ2l0UmVnZXgoeyBudW1iZXJpbmdTeXN0ZW0gfSwgYXBwZW5kID0gIiIpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKGAke251bWJlcmluZ1N5c3RlbXNbbnVtYmVyaW5nU3lzdGVtIHx8ICJsYXRuIl19JHthcHBlbmR9YCk7CiAgfQoKICBjb25zdCBNSVNTSU5HX0ZUUCA9ICJtaXNzaW5nIEludGwuRGF0ZVRpbWVGb3JtYXQuZm9ybWF0VG9QYXJ0cyBzdXBwb3J0IjsKCiAgZnVuY3Rpb24gaW50VW5pdChyZWdleCwgcG9zdCA9IChpKSA9PiBpKSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHBvc3QocGFyc2VEaWdpdHMocykpIH07CiAgfQoKICBjb25zdCBOQlNQID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApOwogIGNvbnN0IHNwYWNlT3JOQlNQID0gYFsgJHtOQlNQfV1gOwogIGNvbnN0IHNwYWNlT3JOQlNQUmVnRXhwID0gbmV3IFJlZ0V4cChzcGFjZU9yTkJTUCwgImciKTsKCiAgZnVuY3Rpb24gZml4TGlzdFJlZ2V4KHMpIHsKICAgIC8vIG1ha2UgZG90cyBvcHRpb25hbCBhbmQgYWxzbyBtYWtlIHRoZW0gbGl0ZXJhbAogICAgLy8gbWFrZSBzcGFjZSBhbmQgbm9uIGJyZWFrYWJsZSBzcGFjZSBjaGFyYWN0ZXJzIGludGVyY2hhbmdlYWJsZQogICAgcmV0dXJuIHMucmVwbGFjZSgvXC4vZywgIlxcLj8iKS5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCBzcGFjZU9yTkJTUCk7CiAgfQoKICBmdW5jdGlvbiBzdHJpcEluc2Vuc2l0aXZpdGllcyhzKSB7CiAgICByZXR1cm4gcwogICAgICAucmVwbGFjZSgvXC4vZywgIiIpIC8vIGlnbm9yZSBkb3RzIHRoYXQgd2VyZSBtYWRlIG9wdGlvbmFsCiAgICAgIC5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCAiICIpIC8vIGludGVyY2hhbmdlIHNwYWNlIGFuZCBuYnNwCiAgICAgIC50b0xvd2VyQ2FzZSgpOwogIH0KCiAgZnVuY3Rpb24gb25lT2Yoc3RyaW5ncywgc3RhcnRJbmRleCkgewogICAgaWYgKHN0cmluZ3MgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gewogICAgICAgIHJlZ2V4OiBSZWdFeHAoc3RyaW5ncy5tYXAoZml4TGlzdFJlZ2V4KS5qb2luKCJ8IikpLAogICAgICAgIGRlc2VyOiAoW3NdKSA9PgogICAgICAgICAgc3RyaW5ncy5maW5kSW5kZXgoKGkpID0+IHN0cmlwSW5zZW5zaXRpdml0aWVzKHMpID09PSBzdHJpcEluc2Vuc2l0aXZpdGllcyhpKSkgKyBzdGFydEluZGV4LAogICAgICB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gb2Zmc2V0KHJlZ2V4LCBncm91cHMpIHsKICAgIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFssIGgsIG1dKSA9PiBzaWduZWRPZmZzZXQoaCwgbSksIGdyb3VwcyB9OwogIH0KCiAgZnVuY3Rpb24gc2ltcGxlKHJlZ2V4KSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHMgfTsKICB9CgogIGZ1bmN0aW9uIGVzY2FwZVRva2VuKHZhbHVlKSB7CiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywgIlxcJCYiKTsKICB9CgogIC8qKgogICAqIEBwYXJhbSB0b2tlbgogICAqIEBwYXJhbSB7TG9jYWxlfSBsb2MKICAgKi8KICBmdW5jdGlvbiB1bml0Rm9yVG9rZW4odG9rZW4sIGxvYykgewogICAgY29uc3Qgb25lID0gZGlnaXRSZWdleChsb2MpLAogICAgICB0d28gPSBkaWdpdFJlZ2V4KGxvYywgInsyfSIpLAogICAgICB0aHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezN9IiksCiAgICAgIGZvdXIgPSBkaWdpdFJlZ2V4KGxvYywgIns0fSIpLAogICAgICBzaXggPSBkaWdpdFJlZ2V4KGxvYywgIns2fSIpLAogICAgICBvbmVPclR3byA9IGRpZ2l0UmVnZXgobG9jLCAiezEsMn0iKSwKICAgICAgb25lVG9UaHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsM30iKSwKICAgICAgb25lVG9TaXggPSBkaWdpdFJlZ2V4KGxvYywgInsxLDZ9IiksCiAgICAgIG9uZVRvTmluZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsOX0iKSwKICAgICAgdHdvVG9Gb3VyID0gZGlnaXRSZWdleChsb2MsICJ7Miw0fSIpLAogICAgICBmb3VyVG9TaXggPSBkaWdpdFJlZ2V4KGxvYywgIns0LDZ9IiksCiAgICAgIGxpdGVyYWwgPSAodCkgPT4gKHsgcmVnZXg6IFJlZ0V4cChlc2NhcGVUb2tlbih0LnZhbCkpLCBkZXNlcjogKFtzXSkgPT4gcywgbGl0ZXJhbDogdHJ1ZSB9KSwKICAgICAgdW5pdGF0ZSA9ICh0KSA9PiB7CiAgICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICAgIHJldHVybiBsaXRlcmFsKHQpOwogICAgICAgIH0KICAgICAgICBzd2l0Y2ggKHQudmFsKSB7CiAgICAgICAgICAvLyBlcmEKICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoInNob3J0IiksIDApOwogICAgICAgICAgY2FzZSAiR0ciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoImxvbmciKSwgMCk7CiAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvU2l4KTsKICAgICAgICAgIGNhc2UgInl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvVG9Gb3VyLCB1bnRydW5jYXRlWWVhcik7CiAgICAgICAgICBjYXNlICJ5eXl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CiAgICAgICAgICBjYXNlICJ5eXl5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXJUb1NpeCk7CiAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChzaXgpOwogICAgICAgICAgLy8gbW9udGhzCiAgICAgICAgICBjYXNlICJNIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAiTU0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoInNob3J0IiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiTU1NTSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJsb25nIiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIkxMIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIkxMTCI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJzaG9ydCIsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJMTExMIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoImxvbmciLCBmYWxzZSksIDEpOwogICAgICAgICAgLy8gZGF0ZXMKICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJkZCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyBvcmRpbmFscwogICAgICAgICAgY2FzZSAibyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvVGhyZWUpOwogICAgICAgICAgY2FzZSAib29vIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodGhyZWUpOwogICAgICAgICAgLy8gdGltZQogICAgICAgICAgY2FzZSAiSEgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiSCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJtIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAicSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJzcyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJTIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7CiAgICAgICAgICBjYXNlICJTU1MiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7CiAgICAgICAgICBjYXNlICJ1IjoKICAgICAgICAgICAgcmV0dXJuIHNpbXBsZShvbmVUb05pbmUpOwogICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInV1dSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZSk7CiAgICAgICAgICAvLyBtZXJpZGllbQogICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubWVyaWRpZW1zKCksIDApOwogICAgICAgICAgLy8gd2Vla1llYXIgKGspCiAgICAgICAgICBjYXNlICJra2trIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CiAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpOwogICAgICAgICAgLy8gd2Vla051bWJlciAoVykKICAgICAgICAgIGNhc2UgIlciOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyB3ZWVrZGF5cwogICAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgICBjYXNlICJjIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lKTsKICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKCJsb25nIiwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgImNjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiY2NjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoImxvbmciLCB0cnVlKSwgMSk7CiAgICAgICAgICAvLyBvZmZzZXQvem9uZQogICAgICAgICAgY2FzZSAiWiI6CiAgICAgICAgICBjYXNlICJaWiI6CiAgICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKD86Oigke3R3by5zb3VyY2V9KSk/YCksIDIpOwogICAgICAgICAgY2FzZSAiWlpaIjoKICAgICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKGAoWystXSR7b25lT3JUd28uc291cmNlfSkoJHt0d28uc291cmNlfSk/YCksIDIpOwogICAgICAgICAgLy8gd2UgZG9uJ3Qgc3VwcG9ydCBaWlpaIChQU1QpIG9yIFpaWlpaIChQYWNpZmljIFN0YW5kYXJkIFRpbWUpIGluIHBhcnNpbmcKICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhbnkgd2F5IHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGV5IGFyZQogICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgIHJldHVybiBzaW1wbGUoL1thLXpfKy0vXXsxLDI1Nn0/L2kpOwogICAgICAgICAgLy8gdGhpcyBzcGVjaWFsLWNhc2UgInRva2VuIiByZXByZXNlbnRzIGEgcGxhY2Ugd2hlcmUgYSBtYWNyby10b2tlbiBleHBhbmRlZCBpbnRvIGEgd2hpdGUtc3BhY2UgbGl0ZXJhbAogICAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdlIGFjY2VwdCBhbnkgbm9uLW5ld2xpbmUgd2hpdGUtc3BhY2UKICAgICAgICAgIGNhc2UgIiAiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKC9bXlxTXG5ccl0vKTsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHJldHVybiBsaXRlcmFsKHQpOwogICAgICAgIH0KICAgICAgfTsKCiAgICBjb25zdCB1bml0ID0gdW5pdGF0ZSh0b2tlbikgfHwgewogICAgICBpbnZhbGlkUmVhc29uOiBNSVNTSU5HX0ZUUCwKICAgIH07CgogICAgdW5pdC50b2tlbiA9IHRva2VuOwoKICAgIHJldHVybiB1bml0OwogIH0KCiAgY29uc3QgcGFydFR5cGVTdHlsZVRvVG9rZW5WYWwgPSB7CiAgICB5ZWFyOiB7CiAgICAgICIyLWRpZ2l0IjogInl5IiwKICAgICAgbnVtZXJpYzogInl5eXl5IiwKICAgIH0sCiAgICBtb250aDogewogICAgICBudW1lcmljOiAiTSIsCiAgICAgICIyLWRpZ2l0IjogIk1NIiwKICAgICAgc2hvcnQ6ICJNTU0iLAogICAgICBsb25nOiAiTU1NTSIsCiAgICB9LAogICAgZGF5OiB7CiAgICAgIG51bWVyaWM6ICJkIiwKICAgICAgIjItZGlnaXQiOiAiZGQiLAogICAgfSwKICAgIHdlZWtkYXk6IHsKICAgICAgc2hvcnQ6ICJFRUUiLAogICAgICBsb25nOiAiRUVFRSIsCiAgICB9LAogICAgZGF5cGVyaW9kOiAiYSIsCiAgICBkYXlQZXJpb2Q6ICJhIiwKICAgIGhvdXIxMjogewogICAgICBudW1lcmljOiAiaCIsCiAgICAgICIyLWRpZ2l0IjogImhoIiwKICAgIH0sCiAgICBob3VyMjQ6IHsKICAgICAgbnVtZXJpYzogIkgiLAogICAgICAiMi1kaWdpdCI6ICJISCIsCiAgICB9LAogICAgbWludXRlOiB7CiAgICAgIG51bWVyaWM6ICJtIiwKICAgICAgIjItZGlnaXQiOiAibW0iLAogICAgfSwKICAgIHNlY29uZDogewogICAgICBudW1lcmljOiAicyIsCiAgICAgICIyLWRpZ2l0IjogInNzIiwKICAgIH0sCiAgICB0aW1lWm9uZU5hbWU6IHsKICAgICAgbG9uZzogIlpaWlpaIiwKICAgICAgc2hvcnQ6ICJaWloiLAogICAgfSwKICB9OwoKICBmdW5jdGlvbiB0b2tlbkZvclBhcnQocGFydCwgZm9ybWF0T3B0cywgcmVzb2x2ZWRPcHRzKSB7CiAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBwYXJ0OwoKICAgIGlmICh0eXBlID09PSAibGl0ZXJhbCIpIHsKICAgICAgY29uc3QgaXNTcGFjZSA9IC9eXHMrJC8udGVzdCh2YWx1ZSk7CiAgICAgIHJldHVybiB7CiAgICAgICAgbGl0ZXJhbDogIWlzU3BhY2UsCiAgICAgICAgdmFsOiBpc1NwYWNlID8gIiAiIDogdmFsdWUsCiAgICAgIH07CiAgICB9CgogICAgY29uc3Qgc3R5bGUgPSBmb3JtYXRPcHRzW3R5cGVdOwoKICAgIC8vIFRoZSB1c2VyIG1pZ2h0IGhhdmUgZXhwbGljaXRseSBzcGVjaWZpZWQgaG91cjEyIG9yIGhvdXJDeWNsZQogICAgLy8gaWYgc28sIHJlc3BlY3QgdGhlaXIgZGVjaXNpb24KICAgIC8vIGlmIG5vdCwgcmVmZXIgYmFjayB0byB0aGUgcmVzb2x2ZWRPcHRzLCB3aGljaCBhcmUgYmFzZWQgb24gdGhlIGxvY2FsZQogICAgbGV0IGFjdHVhbFR5cGUgPSB0eXBlOwogICAgaWYgKHR5cGUgPT09ICJob3VyIikgewogICAgICBpZiAoZm9ybWF0T3B0cy5ob3VyMTIgIT0gbnVsbCkgewogICAgICAgIGFjdHVhbFR5cGUgPSBmb3JtYXRPcHRzLmhvdXIxMiA/ICJob3VyMTIiIDogImhvdXIyNCI7CiAgICAgIH0gZWxzZSBpZiAoZm9ybWF0T3B0cy5ob3VyQ3ljbGUgIT0gbnVsbCkgewogICAgICAgIGlmIChmb3JtYXRPcHRzLmhvdXJDeWNsZSA9PT0gImgxMSIgfHwgZm9ybWF0T3B0cy5ob3VyQ3ljbGUgPT09ICJoMTIiKSB7CiAgICAgICAgICBhY3R1YWxUeXBlID0gImhvdXIxMiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGFjdHVhbFR5cGUgPSAiaG91cjI0IjsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gdG9rZW5zIG9ubHkgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIDI0IGhvdXJzIG9yIG5vdCwKICAgICAgICAvLyBzbyB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayBob3VyQ3ljbGUgaGVyZSwgd2hpY2ggaXMgbGVzcyBzdXBwb3J0ZWQgYW55d2F5cwogICAgICAgIGFjdHVhbFR5cGUgPSByZXNvbHZlZE9wdHMuaG91cjEyID8gImhvdXIxMiIgOiAiaG91cjI0IjsKICAgICAgfQogICAgfQogICAgbGV0IHZhbCA9IHBhcnRUeXBlU3R5bGVUb1Rva2VuVmFsW2FjdHVhbFR5cGVdOwogICAgaWYgKHR5cGVvZiB2YWwgPT09ICJvYmplY3QiKSB7CiAgICAgIHZhbCA9IHZhbFtzdHlsZV07CiAgICB9CgogICAgaWYgKHZhbCkgewogICAgICByZXR1cm4gewogICAgICAgIGxpdGVyYWw6IGZhbHNlLAogICAgICAgIHZhbCwKICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgZnVuY3Rpb24gYnVpbGRSZWdleCh1bml0cykgewogICAgY29uc3QgcmUgPSB1bml0cy5tYXAoKHUpID0+IHUucmVnZXgpLnJlZHVjZSgoZiwgcikgPT4gYCR7Zn0oJHtyLnNvdXJjZX0pYCwgIiIpOwogICAgcmV0dXJuIFtgXiR7cmV9JGAsIHVuaXRzXTsKICB9CgogIGZ1bmN0aW9uIG1hdGNoKGlucHV0LCByZWdleCwgaGFuZGxlcnMpIHsKICAgIGNvbnN0IG1hdGNoZXMgPSBpbnB1dC5tYXRjaChyZWdleCk7CgogICAgaWYgKG1hdGNoZXMpIHsKICAgICAgY29uc3QgYWxsID0ge307CiAgICAgIGxldCBtYXRjaEluZGV4ID0gMTsKICAgICAgZm9yIChjb25zdCBpIGluIGhhbmRsZXJzKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KGhhbmRsZXJzLCBpKSkgewogICAgICAgICAgY29uc3QgaCA9IGhhbmRsZXJzW2ldLAogICAgICAgICAgICBncm91cHMgPSBoLmdyb3VwcyA/IGguZ3JvdXBzICsgMSA6IDE7CiAgICAgICAgICBpZiAoIWgubGl0ZXJhbCAmJiBoLnRva2VuKSB7CiAgICAgICAgICAgIGFsbFtoLnRva2VuLnZhbFswXV0gPSBoLmRlc2VyKG1hdGNoZXMuc2xpY2UobWF0Y2hJbmRleCwgbWF0Y2hJbmRleCArIGdyb3VwcykpOwogICAgICAgICAgfQogICAgICAgICAgbWF0Y2hJbmRleCArPSBncm91cHM7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBbbWF0Y2hlcywgYWxsXTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBbbWF0Y2hlcywge31dOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF0ZVRpbWVGcm9tTWF0Y2hlcyhtYXRjaGVzKSB7CiAgICBjb25zdCB0b0ZpZWxkID0gKHRva2VuKSA9PiB7CiAgICAgIHN3aXRjaCAodG9rZW4pIHsKICAgICAgICBjYXNlICJTIjoKICAgICAgICAgIHJldHVybiAibWlsbGlzZWNvbmQiOwogICAgICAgIGNhc2UgInMiOgogICAgICAgICAgcmV0dXJuICJzZWNvbmQiOwogICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgIGNhc2UgImgiOgogICAgICAgIGNhc2UgIkgiOgogICAgICAgICAgcmV0dXJuICJob3VyIjsKICAgICAgICBjYXNlICJkIjoKICAgICAgICAgIHJldHVybiAiZGF5IjsKICAgICAgICBjYXNlICJvIjoKICAgICAgICAgIHJldHVybiAib3JkaW5hbCI7CiAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICByZXR1cm4gIm1vbnRoIjsKICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgIHJldHVybiAieWVhciI7CiAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICByZXR1cm4gIndlZWtkYXkiOwogICAgICAgIGNhc2UgIlciOgogICAgICAgICAgcmV0dXJuICJ3ZWVrTnVtYmVyIjsKICAgICAgICBjYXNlICJrIjoKICAgICAgICAgIHJldHVybiAid2Vla1llYXIiOwogICAgICAgIGNhc2UgInEiOgogICAgICAgICAgcmV0dXJuICJxdWFydGVyIjsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH07CgogICAgbGV0IHpvbmUgPSBudWxsOwogICAgbGV0IHNwZWNpZmljT2Zmc2V0OwogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnopKSB7CiAgICAgIHpvbmUgPSBJQU5BWm9uZS5jcmVhdGUobWF0Y2hlcy56KTsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuWikpIHsKICAgICAgaWYgKCF6b25lKSB7CiAgICAgICAgem9uZSA9IG5ldyBGaXhlZE9mZnNldFpvbmUobWF0Y2hlcy5aKTsKICAgICAgfQogICAgICBzcGVjaWZpY09mZnNldCA9IG1hdGNoZXMuWjsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMucSkpIHsKICAgICAgbWF0Y2hlcy5NID0gKG1hdGNoZXMucSAtIDEpICogMyArIDE7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLmgpKSB7CiAgICAgIGlmIChtYXRjaGVzLmggPCAxMiAmJiBtYXRjaGVzLmEgPT09IDEpIHsKICAgICAgICBtYXRjaGVzLmggKz0gMTI7CiAgICAgIH0gZWxzZSBpZiAobWF0Y2hlcy5oID09PSAxMiAmJiBtYXRjaGVzLmEgPT09IDApIHsKICAgICAgICBtYXRjaGVzLmggPSAwOwogICAgICB9CiAgICB9CgogICAgaWYgKG1hdGNoZXMuRyA9PT0gMCAmJiBtYXRjaGVzLnkpIHsKICAgICAgbWF0Y2hlcy55ID0gLW1hdGNoZXMueTsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMudSkpIHsKICAgICAgbWF0Y2hlcy5TID0gcGFyc2VNaWxsaXMobWF0Y2hlcy51KTsKICAgIH0KCiAgICBjb25zdCB2YWxzID0gT2JqZWN0LmtleXMobWF0Y2hlcykucmVkdWNlKChyLCBrKSA9PiB7CiAgICAgIGNvbnN0IGYgPSB0b0ZpZWxkKGspOwogICAgICBpZiAoZikgewogICAgICAgIHJbZl0gPSBtYXRjaGVzW2tdOwogICAgICB9CgogICAgICByZXR1cm4gcjsKICAgIH0sIHt9KTsKCiAgICByZXR1cm4gW3ZhbHMsIHpvbmUsIHNwZWNpZmljT2Zmc2V0XTsKICB9CgogIGxldCBkdW1teURhdGVUaW1lQ2FjaGUgPSBudWxsOwoKICBmdW5jdGlvbiBnZXREdW1teURhdGVUaW1lKCkgewogICAgaWYgKCFkdW1teURhdGVUaW1lQ2FjaGUpIHsKICAgICAgZHVtbXlEYXRlVGltZUNhY2hlID0gRGF0ZVRpbWUuZnJvbU1pbGxpcygxNTU1NTU1NTU1NTU1KTsKICAgIH0KCiAgICByZXR1cm4gZHVtbXlEYXRlVGltZUNhY2hlOwogIH0KCiAgZnVuY3Rpb24gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHRva2VuLCBsb2NhbGUpIHsKICAgIGlmICh0b2tlbi5saXRlcmFsKSB7CiAgICAgIHJldHVybiB0b2tlbjsKICAgIH0KCiAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4udmFsKTsKICAgIGNvbnN0IHRva2VucyA9IGZvcm1hdE9wdHNUb1Rva2Vucyhmb3JtYXRPcHRzLCBsb2NhbGUpOwoKICAgIGlmICh0b2tlbnMgPT0gbnVsbCB8fCB0b2tlbnMuaW5jbHVkZXModW5kZWZpbmVkKSkgewogICAgICByZXR1cm4gdG9rZW47CiAgICB9CgogICAgcmV0dXJuIHRva2VuczsKICB9CgogIGZ1bmN0aW9uIGV4cGFuZE1hY3JvVG9rZW5zKHRva2VucywgbG9jYWxlKSB7CiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi50b2tlbnMubWFwKCh0KSA9PiBtYXliZUV4cGFuZE1hY3JvVG9rZW4odCwgbG9jYWxlKSkpOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlLCBpbnB1dCwgZm9ybWF0KSB7CiAgICBjb25zdCB0b2tlbnMgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm9ybWF0KSwgbG9jYWxlKSwKICAgICAgdW5pdHMgPSB0b2tlbnMubWFwKCh0KSA9PiB1bml0Rm9yVG9rZW4odCwgbG9jYWxlKSksCiAgICAgIGRpc3F1YWxpZnlpbmdVbml0ID0gdW5pdHMuZmluZCgodCkgPT4gdC5pbnZhbGlkUmVhc29uKTsKCiAgICBpZiAoZGlzcXVhbGlmeWluZ1VuaXQpIHsKICAgICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgaW52YWxpZFJlYXNvbjogZGlzcXVhbGlmeWluZ1VuaXQuaW52YWxpZFJlYXNvbiB9OwogICAgfSBlbHNlIHsKICAgICAgY29uc3QgW3JlZ2V4U3RyaW5nLCBoYW5kbGVyc10gPSBidWlsZFJlZ2V4KHVuaXRzKSwKICAgICAgICByZWdleCA9IFJlZ0V4cChyZWdleFN0cmluZywgImkiKSwKICAgICAgICBbcmF3TWF0Y2hlcywgbWF0Y2hlc10gPSBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSwKICAgICAgICBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldF0gPSBtYXRjaGVzCiAgICAgICAgICA/IGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcykKICAgICAgICAgIDogW251bGwsIG51bGwsIHVuZGVmaW5lZF07CiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShtYXRjaGVzLCAiYSIpICYmIGhhc093blByb3BlcnR5KG1hdGNoZXMsICJIIikpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoCiAgICAgICAgICAiQ2FuJ3QgaW5jbHVkZSBtZXJpZGllbSB3aGVuIHNwZWNpZnlpbmcgMjQtaG91ciBmb3JtYXQiCiAgICAgICAgKTsKICAgICAgfQogICAgICByZXR1cm4geyBpbnB1dCwgdG9rZW5zLCByZWdleCwgcmF3TWF0Y2hlcywgbWF0Y2hlcywgcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VGcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkgewogICAgY29uc3QgeyByZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uIH0gPSBleHBsYWluRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpOwogICAgcmV0dXJuIFtyZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uXTsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9wdHNUb1Rva2Vucyhmb3JtYXRPcHRzLCBsb2NhbGUpIHsKICAgIGlmICghZm9ybWF0T3B0cykgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBjb25zdCBmb3JtYXR0ZXIgPSBGb3JtYXR0ZXIuY3JlYXRlKGxvY2FsZSwgZm9ybWF0T3B0cyk7CiAgICBjb25zdCBkZiA9IGZvcm1hdHRlci5kdEZvcm1hdHRlcihnZXREdW1teURhdGVUaW1lKCkpOwogICAgY29uc3QgcGFydHMgPSBkZi5mb3JtYXRUb1BhcnRzKCk7CiAgICBjb25zdCByZXNvbHZlZE9wdHMgPSBkZi5yZXNvbHZlZE9wdGlvbnMoKTsKICAgIHJldHVybiBwYXJ0cy5tYXAoKHApID0+IHRva2VuRm9yUGFydChwLCBmb3JtYXRPcHRzLCByZXNvbHZlZE9wdHMpKTsKICB9CgogIGNvbnN0IG5vbkxlYXBMYWRkZXIgPSBbMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzRdLAogICAgbGVhcExhZGRlciA9IFswLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNV07CgogIGZ1bmN0aW9uIHVuaXRPdXRPZlJhbmdlKHVuaXQsIHZhbHVlKSB7CiAgICByZXR1cm4gbmV3IEludmFsaWQoCiAgICAgICJ1bml0IG91dCBvZiByYW5nZSIsCiAgICAgIGB5b3Ugc3BlY2lmaWVkICR7dmFsdWV9IChvZiB0eXBlICR7dHlwZW9mIHZhbHVlfSkgYXMgYSAke3VuaXR9LCB3aGljaCBpcyBpbnZhbGlkYAogICAgKTsKICB9CgogIGZ1bmN0aW9uIGRheU9mV2Vlayh5ZWFyLCBtb250aCwgZGF5KSB7CiAgICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKTsKCiAgICBpZiAoeWVhciA8IDEwMCAmJiB5ZWFyID49IDApIHsKICAgICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTsKICAgIH0KCiAgICBjb25zdCBqcyA9IGQuZ2V0VVRDRGF5KCk7CgogICAgcmV0dXJuIGpzID09PSAwID8gNyA6IGpzOwogIH0KCiAgZnVuY3Rpb24gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSkgewogICAgcmV0dXJuIGRheSArIChpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIpW21vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpIHsKICAgIGNvbnN0IHRhYmxlID0gaXNMZWFwWWVhcih5ZWFyKSA/IGxlYXBMYWRkZXIgOiBub25MZWFwTGFkZGVyLAogICAgICBtb250aDAgPSB0YWJsZS5maW5kSW5kZXgoKGkpID0+IGkgPCBvcmRpbmFsKSwKICAgICAgZGF5ID0gb3JkaW5hbCAtIHRhYmxlW21vbnRoMF07CiAgICByZXR1cm4geyBtb250aDogbW9udGgwICsgMSwgZGF5IH07CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub1dlZWsoZ3JlZ09iaikgewogICAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSBncmVnT2JqLAogICAgICBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSksCiAgICAgIHdlZWtkYXkgPSBkYXlPZldlZWsoeWVhciwgbW9udGgsIGRheSk7CgogICAgbGV0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcpLAogICAgICB3ZWVrWWVhcjsKCiAgICBpZiAod2Vla051bWJlciA8IDEpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyIC0gMTsKICAgICAgd2Vla051bWJlciA9IHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKHdlZWtOdW1iZXIgPiB3ZWVrc0luV2Vla1llYXIoeWVhcikpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyICsgMTsKICAgICAgd2Vla051bWJlciA9IDE7CiAgICB9IGVsc2UgewogICAgICB3ZWVrWWVhciA9IHllYXI7CiAgICB9CgogICAgcmV0dXJuIHsgd2Vla1llYXIsIHdlZWtOdW1iZXIsIHdlZWtkYXksIC4uLnRpbWVPYmplY3QoZ3JlZ09iaikgfTsKICB9CgogIGZ1bmN0aW9uIHdlZWtUb0dyZWdvcmlhbih3ZWVrRGF0YSkgewogICAgY29uc3QgeyB3ZWVrWWVhciwgd2Vla051bWJlciwgd2Vla2RheSB9ID0gd2Vla0RhdGEsCiAgICAgIHdlZWtkYXlPZkphbjQgPSBkYXlPZldlZWsod2Vla1llYXIsIDEsIDQpLAogICAgICB5ZWFySW5EYXlzID0gZGF5c0luWWVhcih3ZWVrWWVhcik7CgogICAgbGV0IG9yZGluYWwgPSB3ZWVrTnVtYmVyICogNyArIHdlZWtkYXkgLSB3ZWVrZGF5T2ZKYW40IC0gMywKICAgICAgeWVhcjsKCiAgICBpZiAob3JkaW5hbCA8IDEpIHsKICAgICAgeWVhciA9IHdlZWtZZWFyIC0gMTsKICAgICAgb3JkaW5hbCArPSBkYXlzSW5ZZWFyKHllYXIpOwogICAgfSBlbHNlIGlmIChvcmRpbmFsID4geWVhckluRGF5cykgewogICAgICB5ZWFyID0gd2Vla1llYXIgKyAxOwogICAgICBvcmRpbmFsIC09IGRheXNJblllYXIod2Vla1llYXIpOwogICAgfSBlbHNlIHsKICAgICAgeWVhciA9IHdlZWtZZWFyOwogICAgfQoKICAgIGNvbnN0IHsgbW9udGgsIGRheSB9ID0gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKTsKICAgIHJldHVybiB7IHllYXIsIG1vbnRoLCBkYXksIC4uLnRpbWVPYmplY3Qod2Vla0RhdGEpIH07CiAgfQoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub09yZGluYWwoZ3JlZ0RhdGEpIHsKICAgIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSB9ID0gZ3JlZ0RhdGE7CiAgICBjb25zdCBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSk7CiAgICByZXR1cm4geyB5ZWFyLCBvcmRpbmFsLCAuLi50aW1lT2JqZWN0KGdyZWdEYXRhKSB9OwogIH0KCiAgZnVuY3Rpb24gb3JkaW5hbFRvR3JlZ29yaWFuKG9yZGluYWxEYXRhKSB7CiAgICBjb25zdCB7IHllYXIsIG9yZGluYWwgfSA9IG9yZGluYWxEYXRhOwogICAgY29uc3QgeyBtb250aCwgZGF5IH0gPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpOwogICAgcmV0dXJuIHsgeWVhciwgbW9udGgsIGRheSwgLi4udGltZU9iamVjdChvcmRpbmFsRGF0YSkgfTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRXZWVrRGF0YShvYmopIHsKICAgIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoud2Vla1llYXIpLAogICAgICB2YWxpZFdlZWsgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla051bWJlciwgMSwgd2Vla3NJbldlZWtZZWFyKG9iai53ZWVrWWVhcikpLAogICAgICB2YWxpZFdlZWtkYXkgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla2RheSwgMSwgNyk7CgogICAgaWYgKCF2YWxpZFllYXIpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrWWVhciIsIG9iai53ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKCF2YWxpZFdlZWspIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrIiwgb2JqLndlZWspOwogICAgfSBlbHNlIGlmICghdmFsaWRXZWVrZGF5KSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgid2Vla2RheSIsIG9iai53ZWVrZGF5KTsKICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBoYXNJbnZhbGlkT3JkaW5hbERhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE9yZGluYWwgPSBpbnRlZ2VyQmV0d2VlbihvYmoub3JkaW5hbCwgMSwgZGF5c0luWWVhcihvYmoueWVhcikpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkT3JkaW5hbCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm9yZGluYWwiLCBvYmoub3JkaW5hbCk7CiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE1vbnRoID0gaW50ZWdlckJldHdlZW4ob2JqLm1vbnRoLCAxLCAxMiksCiAgICAgIHZhbGlkRGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLmRheSwgMSwgZGF5c0luTW9udGgob2JqLnllYXIsIG9iai5tb250aCkpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkTW9udGgpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtb250aCIsIG9iai5tb250aCk7CiAgICB9IGVsc2UgaWYgKCF2YWxpZERheSkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoImRheSIsIG9iai5kYXkpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRUaW1lRGF0YShvYmopIHsKICAgIGNvbnN0IHsgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0gPSBvYmo7CiAgICBjb25zdCB2YWxpZEhvdXIgPQogICAgICAgIGludGVnZXJCZXR3ZWVuKGhvdXIsIDAsIDIzKSB8fAogICAgICAgIChob3VyID09PSAyNCAmJiBtaW51dGUgPT09IDAgJiYgc2Vjb25kID09PSAwICYmIG1pbGxpc2Vjb25kID09PSAwKSwKICAgICAgdmFsaWRNaW51dGUgPSBpbnRlZ2VyQmV0d2VlbihtaW51dGUsIDAsIDU5KSwKICAgICAgdmFsaWRTZWNvbmQgPSBpbnRlZ2VyQmV0d2VlbihzZWNvbmQsIDAsIDU5KSwKICAgICAgdmFsaWRNaWxsaXNlY29uZCA9IGludGVnZXJCZXR3ZWVuKG1pbGxpc2Vjb25kLCAwLCA5OTkpOwoKICAgIGlmICghdmFsaWRIb3VyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgiaG91ciIsIGhvdXIpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaW51dGUpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtaW51dGUiLCBtaW51dGUpOwogICAgfSBlbHNlIGlmICghdmFsaWRTZWNvbmQpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJzZWNvbmQiLCBzZWNvbmQpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaWxsaXNlY29uZCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm1pbGxpc2Vjb25kIiwgbWlsbGlzZWNvbmQpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGNvbnN0IElOVkFMSUQgPSAiSW52YWxpZCBEYXRlVGltZSI7CiAgY29uc3QgTUFYX0RBVEUgPSA4LjY0ZTE1OwoKICBmdW5jdGlvbiB1bnN1cHBvcnRlZFpvbmUoem9uZSkgewogICAgcmV0dXJuIG5ldyBJbnZhbGlkKCJ1bnN1cHBvcnRlZCB6b25lIiwgYHRoZSB6b25lICIke3pvbmUubmFtZX0iIGlzIG5vdCBzdXBwb3J0ZWRgKTsKICB9CgogIC8vIHdlIGNhY2hlIHdlZWsgZGF0YSBvbiB0aGUgRFQgb2JqZWN0IGFuZCB0aGlzIGludGVybWVkaWF0ZXMgdGhlIGNhY2hlCiAgZnVuY3Rpb24gcG9zc2libHlDYWNoZWRXZWVrRGF0YShkdCkgewogICAgaWYgKGR0LndlZWtEYXRhID09PSBudWxsKSB7CiAgICAgIGR0LndlZWtEYXRhID0gZ3JlZ29yaWFuVG9XZWVrKGR0LmMpOwogICAgfQogICAgcmV0dXJuIGR0LndlZWtEYXRhOwogIH0KCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zLCAibWFrZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGVzZSBtb2RpZmljYXRpb25zIi4gYWxsICJzZXR0ZXJzIiByZWFsbHkgdXNlIHRoaXMKICAvLyB0byBjcmVhdGUgYSBuZXcgb2JqZWN0IHdoaWxlIG9ubHkgY2hhbmdpbmcgc29tZSBvZiB0aGUgcHJvcGVydGllcwogIGZ1bmN0aW9uIGNsb25lKGluc3QsIGFsdHMpIHsKICAgIGNvbnN0IGN1cnJlbnQgPSB7CiAgICAgIHRzOiBpbnN0LnRzLAogICAgICB6b25lOiBpbnN0LnpvbmUsCiAgICAgIGM6IGluc3QuYywKICAgICAgbzogaW5zdC5vLAogICAgICBsb2M6IGluc3QubG9jLAogICAgICBpbnZhbGlkOiBpbnN0LmludmFsaWQsCiAgICB9OwogICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IC4uLmN1cnJlbnQsIC4uLmFsdHMsIG9sZDogY3VycmVudCB9KTsKICB9CgogIC8vIGZpbmQgdGhlIHJpZ2h0IG9mZnNldCBhIGdpdmVuIGxvY2FsIHRpbWUuIFRoZSBvIGlucHV0IGlzIG91ciBndWVzcywgd2hpY2ggZGV0ZXJtaW5lcyB3aGljaAogIC8vIG9mZnNldCB3ZSdsbCBwaWNrIGluIGFtYmlndW91cyBjYXNlcyAoZS5nLiB0aGVyZSBhcmUgdHdvIDMgQU1zIGIvYyBGYWxsYmFjayBEU1QpCiAgZnVuY3Rpb24gZml4T2Zmc2V0KGxvY2FsVFMsIG8sIHR6KSB7CiAgICAvLyBPdXIgVVRDIHRpbWUgaXMganVzdCBhIGd1ZXNzIGJlY2F1c2Ugb3VyIG9mZnNldCBpcyBqdXN0IGEgZ3Vlc3MKICAgIGxldCB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvICogNjAgKiAxMDAwOwoKICAgIC8vIFRlc3Qgd2hldGhlciB0aGUgem9uZSBtYXRjaGVzIHRoZSBvZmZzZXQgZm9yIHRoaXMgdHMKICAgIGNvbnN0IG8yID0gdHoub2Zmc2V0KHV0Y0d1ZXNzKTsKCiAgICAvLyBJZiBzbywgb2Zmc2V0IGRpZG4ndCBjaGFuZ2UgYW5kIHdlJ3JlIGRvbmUKICAgIGlmIChvID09PSBvMikgewogICAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvXTsKICAgIH0KCiAgICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgdHMgYnkgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIG9mZnNldAogICAgdXRjR3Vlc3MgLT0gKG8yIC0gbykgKiA2MCAqIDEwMDA7CgogICAgLy8gSWYgdGhhdCBnaXZlcyB1cyB0aGUgbG9jYWwgdGltZSB3ZSB3YW50LCB3ZSdyZSBkb25lCiAgICBjb25zdCBvMyA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7CiAgICBpZiAobzIgPT09IG8zKSB7CiAgICAgIHJldHVybiBbdXRjR3Vlc3MsIG8yXTsKICAgIH0KCiAgICAvLyBJZiBpdCdzIGRpZmZlcmVudCwgd2UncmUgaW4gYSBob2xlIHRpbWUuIFRoZSBvZmZzZXQgaGFzIGNoYW5nZWQsIGJ1dCB0aGUgd2UgZG9uJ3QgYWRqdXN0IHRoZSB0aW1lCiAgICByZXR1cm4gW2xvY2FsVFMgLSBNYXRoLm1pbihvMiwgbzMpICogNjAgKiAxMDAwLCBNYXRoLm1heChvMiwgbzMpXTsKICB9CgogIC8vIGNvbnZlcnQgYW4gZXBvY2ggdGltZXN0YW1wIGludG8gYSBjYWxlbmRhciBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gb2Zmc2V0CiAgZnVuY3Rpb24gdHNUb09iaih0cywgb2Zmc2V0KSB7CiAgICB0cyArPSBvZmZzZXQgKiA2MCAqIDEwMDA7CgogICAgY29uc3QgZCA9IG5ldyBEYXRlKHRzKTsKCiAgICByZXR1cm4gewogICAgICB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksCiAgICAgIG1vbnRoOiBkLmdldFVUQ01vbnRoKCkgKyAxLAogICAgICBkYXk6IGQuZ2V0VVRDRGF0ZSgpLAogICAgICBob3VyOiBkLmdldFVUQ0hvdXJzKCksCiAgICAgIG1pbnV0ZTogZC5nZXRVVENNaW51dGVzKCksCiAgICAgIHNlY29uZDogZC5nZXRVVENTZWNvbmRzKCksCiAgICAgIG1pbGxpc2Vjb25kOiBkLmdldFVUQ01pbGxpc2Vjb25kcygpLAogICAgfTsKICB9CgogIC8vIGNvbnZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBlcG9jaCB0aW1lc3RhbXAKICBmdW5jdGlvbiBvYmpUb1RTKG9iaiwgb2Zmc2V0LCB6b25lKSB7CiAgICByZXR1cm4gZml4T2Zmc2V0KG9ialRvTG9jYWxUUyhvYmopLCBvZmZzZXQsIHpvbmUpOwogIH0KCiAgLy8gY3JlYXRlIGEgbmV3IERUIGluc3RhbmNlIGJ5IGFkZGluZyBhIGR1cmF0aW9uLCBhZGp1c3RpbmcgZm9yIERTVHMKICBmdW5jdGlvbiBhZGp1c3RUaW1lKGluc3QsIGR1cikgewogICAgY29uc3Qgb1ByZSA9IGluc3QubywKICAgICAgeWVhciA9IGluc3QuYy55ZWFyICsgTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICBtb250aCA9IGluc3QuYy5tb250aCArIE1hdGgudHJ1bmMoZHVyLm1vbnRocykgKyBNYXRoLnRydW5jKGR1ci5xdWFydGVycykgKiAzLAogICAgICBjID0gewogICAgICAgIC4uLmluc3QuYywKICAgICAgICB5ZWFyLAogICAgICAgIG1vbnRoLAogICAgICAgIGRheToKICAgICAgICAgIE1hdGgubWluKGluc3QuYy5kYXksIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSkgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIuZGF5cykgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIud2Vla3MpICogNywKICAgICAgfSwKICAgICAgbWlsbGlzVG9BZGQgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsKICAgICAgICB5ZWFyczogZHVyLnllYXJzIC0gTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICAgIHF1YXJ0ZXJzOiBkdXIucXVhcnRlcnMgLSBNYXRoLnRydW5jKGR1ci5xdWFydGVycyksCiAgICAgICAgbW9udGhzOiBkdXIubW9udGhzIC0gTWF0aC50cnVuYyhkdXIubW9udGhzKSwKICAgICAgICB3ZWVrczogZHVyLndlZWtzIC0gTWF0aC50cnVuYyhkdXIud2Vla3MpLAogICAgICAgIGRheXM6IGR1ci5kYXlzIC0gTWF0aC50cnVuYyhkdXIuZGF5cyksCiAgICAgICAgaG91cnM6IGR1ci5ob3VycywKICAgICAgICBtaW51dGVzOiBkdXIubWludXRlcywKICAgICAgICBzZWNvbmRzOiBkdXIuc2Vjb25kcywKICAgICAgICBtaWxsaXNlY29uZHM6IGR1ci5taWxsaXNlY29uZHMsCiAgICAgIH0pLmFzKCJtaWxsaXNlY29uZHMiKSwKICAgICAgbG9jYWxUUyA9IG9ialRvTG9jYWxUUyhjKTsKCiAgICBsZXQgW3RzLCBvXSA9IGZpeE9mZnNldChsb2NhbFRTLCBvUHJlLCBpbnN0LnpvbmUpOwoKICAgIGlmIChtaWxsaXNUb0FkZCAhPT0gMCkgewogICAgICB0cyArPSBtaWxsaXNUb0FkZDsKICAgICAgLy8gdGhhdCBjb3VsZCBoYXZlIGNoYW5nZWQgdGhlIG9mZnNldCBieSBnb2luZyBvdmVyIGEgRFNULCBidXQgd2Ugd2FudCB0byBrZWVwIHRoZSB0cyB0aGUgc2FtZQogICAgICBvID0gaW5zdC56b25lLm9mZnNldCh0cyk7CiAgICB9CgogICAgcmV0dXJuIHsgdHMsIG8gfTsKICB9CgogIC8vIGhlbHBlciB1c2VmdWwgaW4gdHVybmluZyB0aGUgcmVzdWx0cyBvZiBwYXJzaW5nIGludG8gcmVhbCBkYXRlcwogIC8vIGJ5IGhhbmRsaW5nIHRoZSB6b25lIG9wdGlvbnMKICBmdW5jdGlvbiBwYXJzZURhdGFUb0RhdGVUaW1lKHBhcnNlZCwgcGFyc2VkWm9uZSwgb3B0cywgZm9ybWF0LCB0ZXh0LCBzcGVjaWZpY09mZnNldCkgewogICAgY29uc3QgeyBzZXRab25lLCB6b25lIH0gPSBvcHRzOwogICAgaWYgKChwYXJzZWQgJiYgT2JqZWN0LmtleXMocGFyc2VkKS5sZW5ndGggIT09IDApIHx8IHBhcnNlZFpvbmUpIHsKICAgICAgY29uc3QgaW50ZXJwcmV0YXRpb25ab25lID0gcGFyc2VkWm9uZSB8fCB6b25lLAogICAgICAgIGluc3QgPSBEYXRlVGltZS5mcm9tT2JqZWN0KHBhcnNlZCwgewogICAgICAgICAgLi4ub3B0cywKICAgICAgICAgIHpvbmU6IGludGVycHJldGF0aW9uWm9uZSwKICAgICAgICAgIHNwZWNpZmljT2Zmc2V0LAogICAgICAgIH0pOwogICAgICByZXR1cm4gc2V0Wm9uZSA/IGluc3QgOiBpbnN0LnNldFpvbmUoem9uZSk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgKICAgICAgICBuZXcgSW52YWxpZCgidW5wYXJzYWJsZSIsIGB0aGUgaW5wdXQgIiR7dGV4dH0iIGNhbid0IGJlIHBhcnNlZCBhcyAke2Zvcm1hdH1gKQogICAgICApOwogICAgfQogIH0KCiAgLy8gaWYgeW91IHdhbnQgdG8gb3V0cHV0IGEgdGVjaG5pY2FsIGZvcm1hdCAoZS5nLiBSRkMgMjgyMiksIHRoaXMgaGVscGVyCiAgLy8gaGVscHMgaGFuZGxlIHRoZSBkZXRhaWxzCiAgZnVuY3Rpb24gdG9UZWNoRm9ybWF0KGR0LCBmb3JtYXQsIGFsbG93WiA9IHRydWUpIHsKICAgIHJldHVybiBkdC5pc1ZhbGlkCiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZShMb2NhbGUuY3JlYXRlKCJlbi1VUyIpLCB7CiAgICAgICAgICBhbGxvd1osCiAgICAgICAgICBmb3JjZVNpbXBsZTogdHJ1ZSwKICAgICAgICB9KS5mb3JtYXREYXRlVGltZUZyb21TdHJpbmcoZHQsIGZvcm1hdCkKICAgICAgOiBudWxsOwogIH0KCiAgZnVuY3Rpb24gdG9JU09EYXRlKG8sIGV4dGVuZGVkKSB7CiAgICBjb25zdCBsb25nRm9ybWF0ID0gby5jLnllYXIgPiA5OTk5IHx8IG8uYy55ZWFyIDwgMDsKICAgIGxldCBjID0gIiI7CiAgICBpZiAobG9uZ0Zvcm1hdCAmJiBvLmMueWVhciA+PSAwKSBjICs9ICIrIjsKICAgIGMgKz0gcGFkU3RhcnQoby5jLnllYXIsIGxvbmdGb3JtYXQgPyA2IDogNCk7CgogICAgaWYgKGV4dGVuZGVkKSB7CiAgICAgIGMgKz0gIi0iOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7CiAgICAgIGMgKz0gIi0iOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpOwogICAgfSBlbHNlIHsKICAgICAgYyArPSBwYWRTdGFydChvLmMubW9udGgpOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpOwogICAgfQogICAgcmV0dXJuIGM7CiAgfQoKICBmdW5jdGlvbiB0b0lTT1RpbWUoCiAgICBvLAogICAgZXh0ZW5kZWQsCiAgICBzdXBwcmVzc1NlY29uZHMsCiAgICBzdXBwcmVzc01pbGxpc2Vjb25kcywKICAgIGluY2x1ZGVPZmZzZXQsCiAgICBleHRlbmRlZFpvbmUKICApIHsKICAgIGxldCBjID0gcGFkU3RhcnQoby5jLmhvdXIpOwogICAgaWYgKGV4dGVuZGVkKSB7CiAgICAgIGMgKz0gIjoiOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpOwogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8IG8uYy5zZWNvbmQgIT09IDAgfHwgIXN1cHByZXNzU2Vjb25kcykgewogICAgICAgIGMgKz0gIjoiOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpOwogICAgfQoKICAgIGlmIChvLmMubWlsbGlzZWNvbmQgIT09IDAgfHwgby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLnNlY29uZCk7CgogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc01pbGxpc2Vjb25kcykgewogICAgICAgIGMgKz0gIi4iOwogICAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbGxpc2Vjb25kLCAzKTsKICAgICAgfQogICAgfQoKICAgIGlmIChpbmNsdWRlT2Zmc2V0KSB7CiAgICAgIGlmIChvLmlzT2Zmc2V0Rml4ZWQgJiYgby5vZmZzZXQgPT09IDAgJiYgIWV4dGVuZGVkWm9uZSkgewogICAgICAgIGMgKz0gIloiOwogICAgICB9IGVsc2UgaWYgKG8ubyA8IDApIHsKICAgICAgICBjICs9ICItIjsKICAgICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoLW8ubyAvIDYwKSk7CiAgICAgICAgYyArPSAiOiI7CiAgICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKC1vLm8gJSA2MCkpOwogICAgICB9IGVsc2UgewogICAgICAgIGMgKz0gIisiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gLyA2MCkpOwogICAgICAgIGMgKz0gIjoiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gJSA2MCkpOwogICAgICB9CiAgICB9CgogICAgaWYgKGV4dGVuZGVkWm9uZSkgewogICAgICBjICs9ICJbIiArIG8uem9uZS5pYW5hTmFtZSArICJdIjsKICAgIH0KICAgIHJldHVybiBjOwogIH0KCiAgLy8gZGVmYXVsdHMgZm9yIHVuc3BlY2lmaWVkIHVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzCiAgY29uc3QgZGVmYXVsdFVuaXRWYWx1ZXMgPSB7CiAgICAgIG1vbnRoOiAxLAogICAgICBkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7CiAgICAgIHdlZWtOdW1iZXI6IDEsCiAgICAgIHdlZWtkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXMgPSB7CiAgICAgIG9yZGluYWw6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH07CgogIC8vIFVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzLCBzb3J0ZWQgYnkgYmlnbmVzcwogIGNvbnN0IG9yZGVyZWRVbml0cyA9IFsieWVhciIsICJtb250aCIsICJkYXkiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0sCiAgICBvcmRlcmVkV2Vla1VuaXRzID0gWwogICAgICAid2Vla1llYXIiLAogICAgICAid2Vla051bWJlciIsCiAgICAgICJ3ZWVrZGF5IiwKICAgICAgImhvdXIiLAogICAgICAibWludXRlIiwKICAgICAgInNlY29uZCIsCiAgICAgICJtaWxsaXNlY29uZCIsCiAgICBdLAogICAgb3JkZXJlZE9yZGluYWxVbml0cyA9IFsieWVhciIsICJvcmRpbmFsIiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlY29uZCJdOwoKICAvLyBzdGFuZGFyZGl6ZSBjYXNlIGFuZCBwbHVyYWxpdHkgaW4gdW5pdHMKICBmdW5jdGlvbiBub3JtYWxpemVVbml0KHVuaXQpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgIHllYXI6ICJ5ZWFyIiwKICAgICAgeWVhcnM6ICJ5ZWFyIiwKICAgICAgbW9udGg6ICJtb250aCIsCiAgICAgIG1vbnRoczogIm1vbnRoIiwKICAgICAgZGF5OiAiZGF5IiwKICAgICAgZGF5czogImRheSIsCiAgICAgIGhvdXI6ICJob3VyIiwKICAgICAgaG91cnM6ICJob3VyIiwKICAgICAgbWludXRlOiAibWludXRlIiwKICAgICAgbWludXRlczogIm1pbnV0ZSIsCiAgICAgIHF1YXJ0ZXI6ICJxdWFydGVyIiwKICAgICAgcXVhcnRlcnM6ICJxdWFydGVyIiwKICAgICAgc2Vjb25kOiAic2Vjb25kIiwKICAgICAgc2Vjb25kczogInNlY29uZCIsCiAgICAgIG1pbGxpc2Vjb25kOiAibWlsbGlzZWNvbmQiLAogICAgICBtaWxsaXNlY29uZHM6ICJtaWxsaXNlY29uZCIsCiAgICAgIHdlZWtkYXk6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla2RheXM6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrc251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrbnVtYmVyczogIndlZWtOdW1iZXIiLAogICAgICB3ZWVreWVhcjogIndlZWtZZWFyIiwKICAgICAgd2Vla3llYXJzOiAid2Vla1llYXIiLAogICAgICBvcmRpbmFsOiAib3JkaW5hbCIsCiAgICB9W3VuaXQudG9Mb3dlckNhc2UoKV07CgogICAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTsKCiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIC8vIHRoaXMgaXMgYSBkdW1iZWQgZG93biB2ZXJzaW9uIG9mIGZyb21PYmplY3QoKSB0aGF0IHJ1bnMgYWJvdXQgNjAlIGZhc3RlcgogIC8vIGJ1dCBkb2Vzbid0IGRvIGFueSB2YWxpZGF0aW9uLCBtYWtlcyBhIGJ1bmNoIG9mIGFzc3VtcHRpb25zIGFib3V0IHdoYXQgdW5pdHMKICAvLyBhcmUgcHJlc2VudCwgYW5kIHNvIG9uLgogIGZ1bmN0aW9uIHF1aWNrRFQob2JqLCBvcHRzKSB7CiAgICBjb25zdCB6b25lID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgIHRzTm93ID0gU2V0dGluZ3Mubm93KCk7CgogICAgbGV0IHRzLCBvOwoKICAgIC8vIGFzc3VtZSB3ZSBoYXZlIHRoZSBoaWdoZXItb3JkZXIgdW5pdHMKICAgIGlmICghaXNVbmRlZmluZWQob2JqLnllYXIpKSB7CiAgICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMpIHsKICAgICAgICBpZiAoaXNVbmRlZmluZWQob2JqW3VdKSkgewogICAgICAgICAgb2JqW3VdID0gZGVmYXVsdFVuaXRWYWx1ZXNbdV07CiAgICAgICAgfQogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB8fCBoYXNJbnZhbGlkVGltZURhdGEob2JqKTsKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgY29uc3Qgb2Zmc2V0UHJvdmlzID0gem9uZS5vZmZzZXQodHNOb3cpOwogICAgICBbdHMsIG9dID0gb2JqVG9UUyhvYmosIG9mZnNldFByb3Zpcywgem9uZSk7CiAgICB9IGVsc2UgewogICAgICB0cyA9IHRzTm93OwogICAgfQoKICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoeyB0cywgem9uZSwgbG9jLCBvIH0pOwogIH0KCiAgZnVuY3Rpb24gZGlmZlJlbGF0aXZlKHN0YXJ0LCBlbmQsIG9wdHMpIHsKICAgIGNvbnN0IHJvdW5kID0gaXNVbmRlZmluZWQob3B0cy5yb3VuZCkgPyB0cnVlIDogb3B0cy5yb3VuZCwKICAgICAgZm9ybWF0ID0gKGMsIHVuaXQpID0+IHsKICAgICAgICBjID0gcm91bmRUbyhjLCByb3VuZCB8fCBvcHRzLmNhbGVuZGFyeSA/IDAgOiAyLCB0cnVlKTsKICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBlbmQubG9jLmNsb25lKG9wdHMpLnJlbEZvcm1hdHRlcihvcHRzKTsKICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChjLCB1bml0KTsKICAgICAgfSwKICAgICAgZGlmZmVyID0gKHVuaXQpID0+IHsKICAgICAgICBpZiAob3B0cy5jYWxlbmRhcnkpIHsKICAgICAgICAgIGlmICghZW5kLmhhc1NhbWUoc3RhcnQsIHVuaXQpKSB7CiAgICAgICAgICAgIHJldHVybiBlbmQuc3RhcnRPZih1bml0KS5kaWZmKHN0YXJ0LnN0YXJ0T2YodW5pdCksIHVuaXQpLmdldCh1bml0KTsKICAgICAgICAgIH0gZWxzZSByZXR1cm4gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCk7CiAgICAgICAgfQogICAgICB9OwoKICAgIGlmIChvcHRzLnVuaXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdChkaWZmZXIob3B0cy51bml0KSwgb3B0cy51bml0KTsKICAgIH0KCiAgICBmb3IgKGNvbnN0IHVuaXQgb2Ygb3B0cy51bml0cykgewogICAgICBjb25zdCBjb3VudCA9IGRpZmZlcih1bml0KTsKICAgICAgaWYgKE1hdGguYWJzKGNvdW50KSA+PSAxKSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmb3JtYXQoc3RhcnQgPiBlbmQgPyAtMCA6IDAsIG9wdHMudW5pdHNbb3B0cy51bml0cy5sZW5ndGggLSAxXSk7CiAgfQoKICBmdW5jdGlvbiBsYXN0T3B0cyhhcmdMaXN0KSB7CiAgICBsZXQgb3B0cyA9IHt9LAogICAgICBhcmdzOwogICAgaWYgKGFyZ0xpc3QubGVuZ3RoID4gMCAmJiB0eXBlb2YgYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdID09PSAib2JqZWN0IikgewogICAgICBvcHRzID0gYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdOwogICAgICBhcmdzID0gQXJyYXkuZnJvbShhcmdMaXN0KS5zbGljZSgwLCBhcmdMaXN0Lmxlbmd0aCAtIDEpOwogICAgfSBlbHNlIHsKICAgICAgYXJncyA9IEFycmF5LmZyb20oYXJnTGlzdCk7CiAgICB9CiAgICByZXR1cm4gW29wdHMsIGFyZ3NdOwogIH0KCiAgLyoqCiAgICogQSBEYXRlVGltZSBpcyBhbiBpbW11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZSBhbmQgYWNjb21wYW55aW5nIG1ldGhvZHMuIEl0IGNvbnRhaW5zIGNsYXNzIGFuZCBpbnN0YW5jZSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLgogICAqCiAgICogQSBEYXRlVGltZSBjb21wcmlzZXMgb2Y6CiAgICogKiBBIHRpbWVzdGFtcC4gRWFjaCBEYXRlVGltZSBpbnN0YW5jZSByZWZlcnMgdG8gYSBzcGVjaWZpYyBtaWxsaXNlY29uZCBvZiB0aGUgVW5peCBlcG9jaC4KICAgKiAqIEEgdGltZSB6b25lLiBFYWNoIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzcGVjaWZpYyB6b25lIChieSBkZWZhdWx0IHRoZSBsb2NhbCBzeXN0ZW0ncyB6b25lKS4KICAgKiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0aGF0IGVmZmVjdCBob3cgb3V0cHV0IHN0cmluZ3MgYXJlIGZvcm1hdHRlZCwgc3VjaCBhcyBgbG9jYWxlYCwgYG51bWJlcmluZ1N5c3RlbWAsIGFuZCBgb3V0cHV0Q2FsZW5kYXJgLgogICAqCiAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZnVuY3Rpb25hbGl0eSBpdCBwcm92aWRlczoKICAgKgogICAqICogKipDcmVhdGlvbioqOiBUbyBjcmVhdGUgYSBEYXRlVGltZSBmcm9tIGl0cyBjb21wb25lbnRzLCB1c2Ugb25lIG9mIGl0cyBmYWN0b3J5IGNsYXNzIG1ldGhvZHM6IHtAbGluayBEYXRlVGltZS5sb2NhbH0sIHtAbGluayBEYXRlVGltZS51dGN9LCBhbmQgKG1vc3QgZmxleGlibHkpIHtAbGluayBEYXRlVGltZS5mcm9tT2JqZWN0fS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgc3RhbmRhcmQgc3RyaW5nIGZvcm1hdCwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSVNPfSwge0BsaW5rIERhdGVUaW1lLmZyb21IVFRQfSwgYW5kIHtAbGluayBEYXRlVGltZS5mcm9tUkZDMjgyMn0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIGN1c3RvbSBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lLmZyb21Gb3JtYXR9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBuYXRpdmUgSlMgZGF0ZSwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSlNEYXRlfS4KICAgKiAqICoqR3JlZ29yaWFuIGNhbGVuZGFyIGFuZCB0aW1lKio6IFRvIGV4YW1pbmUgdGhlIEdyZWdvcmlhbiBwcm9wZXJ0aWVzIG9mIGEgRGF0ZVRpbWUgaW5kaXZpZHVhbGx5IChpLmUgYXMgb3Bwb3NlZCB0byBjb2xsZWN0aXZlbHkgdGhyb3VnaCB7QGxpbmsgRGF0ZVRpbWUjdG9PYmplY3R9KSwgdXNlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjeWVhcn0sIHtAbGluayBEYXRlVGltZSNtb250aH0sCiAgICoge0BsaW5rIERhdGVUaW1lI2RheX0sIHtAbGluayBEYXRlVGltZSNob3VyfSwge0BsaW5rIERhdGVUaW1lI21pbnV0ZX0sIHtAbGluayBEYXRlVGltZSNzZWNvbmR9LCB7QGxpbmsgRGF0ZVRpbWUjbWlsbGlzZWNvbmR9IGFjY2Vzc29ycy4KICAgKiAqICoqV2VlayBjYWxlbmRhcioqOiBGb3IgSVNPIHdlZWsgY2FsZW5kYXIgYXR0cmlidXRlcywgc2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjd2Vla1llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjd2Vla051bWJlcn0sIGFuZCB7QGxpbmsgRGF0ZVRpbWUjd2Vla2RheX0gYWNjZXNzb3JzLgogICAqICogKipDb25maWd1cmF0aW9uKiogU2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjbG9jYWxlfSBhbmQge0BsaW5rIERhdGVUaW1lI251bWJlcmluZ1N5c3RlbX0gYWNjZXNzb3JzLgogICAqICogKipUcmFuc2Zvcm1hdGlvbioqOiBUbyB0cmFuc2Zvcm0gdGhlIERhdGVUaW1lIGludG8gb3RoZXIgRGF0ZVRpbWVzLCB1c2Uge0BsaW5rIERhdGVUaW1lI3NldH0sIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0sIHtAbGluayBEYXRlVGltZSNzZXRab25lfSwge0BsaW5rIERhdGVUaW1lI3NldExvY2FsZX0sIHtAbGluayBEYXRlVGltZS5wbHVzfSwge0BsaW5rIERhdGVUaW1lI21pbnVzfSwge0BsaW5rIERhdGVUaW1lI2VuZE9mfSwge0BsaW5rIERhdGVUaW1lI3N0YXJ0T2Z9LCB7QGxpbmsgRGF0ZVRpbWUjdG9VVEN9LCBhbmQge0BsaW5rIERhdGVUaW1lI3RvTG9jYWx9LgogICAqICogKipPdXRwdXQqKjogVG8gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN0b1JlbGF0aXZlfSwge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmVDYWxlbmRhcn0sIHtAbGluayBEYXRlVGltZSN0b0pTT059LCB7QGxpbmsgRGF0ZVRpbWUjdG9JU099LCB7QGxpbmsgRGF0ZVRpbWUjdG9IVFRQfSwge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSwge0BsaW5rIERhdGVUaW1lI3RvUkZDMjgyMn0sIHtAbGluayBEYXRlVGltZSN0b1N0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0sIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30gYW5kIHtAbGluayBEYXRlVGltZSN0b0pTRGF0ZX0uCiAgICoKICAgKiBUaGVyZSdzIHBsZW50eSBvdGhlcnMgZG9jdW1lbnRlZCBiZWxvdy4gSW4gYWRkaXRpb24sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1YnRsZXIgdG9waWNzIGxpa2UgaW50ZXJuYXRpb25hbGl6YXRpb24sIHRpbWUgem9uZXMsIGFsdGVybmF0aXZlIGNhbGVuZGFycywgdmFsaWRpdHksIGFuZCBzbyBvbiwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLgogICAqLwogIGNsYXNzIERhdGVUaW1lIHsKICAgIC8qKgogICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCB6b25lID0gY29uZmlnLnpvbmUgfHwgU2V0dGluZ3MuZGVmYXVsdFpvbmU7CgogICAgICBsZXQgaW52YWxpZCA9CiAgICAgICAgY29uZmlnLmludmFsaWQgfHwKICAgICAgICAoTnVtYmVyLmlzTmFOKGNvbmZpZy50cykgPyBuZXcgSW52YWxpZCgiaW52YWxpZCBpbnB1dCIpIDogbnVsbCkgfHwKICAgICAgICAoIXpvbmUuaXNWYWxpZCA/IHVuc3VwcG9ydGVkWm9uZSh6b25lKSA6IG51bGwpOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnRzID0gaXNVbmRlZmluZWQoY29uZmlnLnRzKSA/IFNldHRpbmdzLm5vdygpIDogY29uZmlnLnRzOwoKICAgICAgbGV0IGMgPSBudWxsLAogICAgICAgIG8gPSBudWxsOwogICAgICBpZiAoIWludmFsaWQpIHsKICAgICAgICBjb25zdCB1bmNoYW5nZWQgPSBjb25maWcub2xkICYmIGNvbmZpZy5vbGQudHMgPT09IHRoaXMudHMgJiYgY29uZmlnLm9sZC56b25lLmVxdWFscyh6b25lKTsKCiAgICAgICAgaWYgKHVuY2hhbmdlZCkgewogICAgICAgICAgW2MsIG9dID0gW2NvbmZpZy5vbGQuYywgY29uZmlnLm9sZC5vXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc3Qgb3QgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGMgPSB0c1RvT2JqKHRoaXMudHMsIG90KTsKICAgICAgICAgIGludmFsaWQgPSBOdW1iZXIuaXNOYU4oYy55ZWFyKSA/IG5ldyBJbnZhbGlkKCJpbnZhbGlkIGlucHV0IikgOiBudWxsOwogICAgICAgICAgYyA9IGludmFsaWQgPyBudWxsIDogYzsKICAgICAgICAgIG8gPSBpbnZhbGlkID8gbnVsbCA6IG90OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5fem9uZSA9IHpvbmU7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQ7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMud2Vla0RhdGEgPSBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmMgPSBjOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLm8gPSBvOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EYXRlVGltZSA9IHRydWU7CiAgICB9CgogICAgLy8gQ09OU1RSVUNUCgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmb3IgdGhlIGN1cnJlbnQgaW5zdGFudCwgaW4gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS4KICAgICAqCiAgICAgKiBVc2UgU2V0dGluZ3MgdG8gb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdCB2YWx1ZXMgaWYgbmVlZGVkLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvL34+IG5vdyBpbiB0aGUgSVNPIGZvcm1hdAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBub3coKSB7CiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe30pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbG9jYWwgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYGxvY2FsKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbW9udGg9MV0gLSBUaGUgbW9udGgsIDEtaW5kZXhlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFtkYXk9MV0gLSBUaGUgZGF5IG9mIHRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiBub3cKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKHsgem9uZTogIkFtZXJpY2EvTmV3X1lvcmsiIH0pICAgICAgLy9+PiBub3csIGluIFVTIGVhc3QgY29hc3QgdGltZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDEtMDFUMDA6MDA6MDAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgeyBsb2NhbGU6ICJmciIgfSkgICAgIC8vfj4gMjAxNy0wMy0xMlQwMDowMDowMCwgd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgeyB6b25lOiAidXRjIiB9KSAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMCwgaW4gVVRDCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCkgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSkgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBsb2NhbCgpIHsKICAgICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSwKICAgICAgICBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXSA9IGFyZ3M7CiAgICAgIHJldHVybiBxdWlja0RUKHsgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0sIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgaW4gVVRDCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3llYXJdIC0gVGhlIGNhbGVuZGFyIHllYXIuIElmIG9taXR0ZWQgKGFzIGluLCBjYWxsIGB1dGMoKWAgd2l0aCBubyBhcmd1bWVudHMpLCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgdXNlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RheT0xXSAtIFRoZSBkYXkgb2YgdGhlIG1vbnRoCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVdIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAxLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgeyBsb2NhbGU6ICJmciIgfSkgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWiB3aXRoIGEgRnJlbmNoIGxvY2FsZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTApICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSwgeyBsb2NhbGU6ICJmciIgfSkgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NVogd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgdXRjKCkgewogICAgICBjb25zdCBbb3B0cywgYXJnc10gPSBsYXN0T3B0cyhhcmd1bWVudHMpLAogICAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJnczsKCiAgICAgIG9wdHMuem9uZSA9IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZTsKICAgICAgcmV0dXJuIHF1aWNrRFQoeyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdC4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLgogICAgICogQHBhcmFtIHtEYXRlfSBkYXRlIC0gYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG8KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUpTRGF0ZShkYXRlLCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgdHMgPSBpc0RhdGUoZGF0ZSkgPyBkYXRlLnZhbHVlT2YoKSA6IE5hTjsKICAgICAgaWYgKE51bWJlci5pc05hTih0cykpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiaW52YWxpZCBpbnB1dCIpOwogICAgICB9CgogICAgICBjb25zdCB6b25lVG9Vc2UgPSBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmVUb1VzZSkpOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsKICAgICAgICB0czogdHMsCiAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MCBVVEMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50bwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tTWlsbGlzKG1pbGxpc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghaXNOdW1iZXIobWlsbGlzZWNvbmRzKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBmcm9tTWlsbGlzIHJlcXVpcmVzIGEgbnVtZXJpY2FsIGlucHV0LCBidXQgcmVjZWl2ZWQgYSAke3R5cGVvZiBtaWxsaXNlY29uZHN9IHdpdGggdmFsdWUgJHttaWxsaXNlY29uZHN9YAogICAgICAgICk7CiAgICAgIH0gZWxzZSBpZiAobWlsbGlzZWNvbmRzIDwgLU1BWF9EQVRFIHx8IG1pbGxpc2Vjb25kcyA+IE1BWF9EQVRFKSB7CiAgICAgICAgLy8gdGhpcyBpc24ndCBwZXJmZWN0IGJlY2F1c2UgYmVjYXVzZSB3ZSBjYW4gc3RpbGwgZW5kIHVwIG91dCBvZiByYW5nZSBiZWNhdXNlIG9mIGFkZGl0aW9uYWwgc2hpZnRpbmcsIGJ1dCBpdCdzIGEgc3RhcnQKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiVGltZXN0YW1wIG91dCBvZiByYW5nZSIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IG1pbGxpc2Vjb25kcywKICAgICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksCiAgICAgICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLAogICAgICAgIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwIFVUQwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZQogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdGlvbnMuem9uZT0nbG9jYWwnXSAtIHRoZSB6b25lIHRvIHBsYWNlIHRoZSBEYXRlVGltZSBpbnRvCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc3RhdGljIGZyb21TZWNvbmRzKHNlY29uZHMsIG9wdGlvbnMgPSB7fSkgewogICAgICBpZiAoIWlzTnVtYmVyKHNlY29uZHMpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tU2Vjb25kcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dCIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IHNlY29uZHMgKiAxMDAwLAogICAgICAgICAgem9uZTogbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIGtleXMgbGlrZSAneWVhcicgYW5kICdob3VyJyB3aXRoIHJlYXNvbmFibGUgZGVmYXVsdHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb20KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoueWVhciAtIGEgeWVhciwgc3VjaCBhcyAxOTg3CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1vbnRoIC0gYSBtb250aCwgMS0xMgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXkgLSBhIGRheSBvZiB0aGUgbW9udGgsIDEtMzEsIGRlcGVuZGluZyBvbiB0aGUgbW9udGgKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoub3JkaW5hbCAtIGRheSBvZiB0aGUgeWVhciwgMS0zNjUgb3IgMzY2CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLndlZWtZZWFyIC0gYW4gSVNPIHdlZWsgeWVhcgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrTnVtYmVyIC0gYW4gSVNPIHdlZWsgbnVtYmVyLCBiZXR3ZWVuIDEgYW5kIDUyIG9yIDUzLCBkZXBlbmRpbmcgb24gdGhlIHllYXIKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla2RheSAtIGFuIElTTyB3ZWVrZGF5LCAxLTcsIHdoZXJlIDEgaXMgTW9uZGF5IGFuZCA3IGlzIFN1bmRheQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VyIC0gaG91ciBvZiB0aGUgZGF5LCAwLTIzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZSAtIG1pbnV0ZSBvZiB0aGUgaG91ciwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5zZWNvbmQgLSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taWxsaXNlY29uZCAtIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIDAtOTk5CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBpbnRlcnByZXQgdGhlIG51bWJlcnMgaW4gdGhlIGNvbnRleHQgb2YgYSBwYXJ0aWN1bGFyIHpvbmUuIENhbiB0YWtlIGFueSB2YWx1ZSB0YWtlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc2V0Wm9uZSgpCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgeWVhcjogMTk4MiwgbW9udGg6IDUsIGRheTogMjV9KS50b0lTT0RhdGUoKSAvLz0+ICcxOTgyLTA1LTI1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIgfSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wMS0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0pIC8vfj4gdG9kYXkgYXQgMTA6MjY6MDYKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ3V0YycgfSksCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICdsb2NhbCcgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ0FtZXJpY2EvTmV3X1lvcmsnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgd2Vla1llYXI6IDIwMTYsIHdlZWtOdW1iZXI6IDIsIHdlZWtkYXk6IDMgfSkudG9JU09EYXRlKCkgLy89PiAnMjAxNi0wMS0xMycKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbU9iamVjdChvYmosIG9wdHMgPSB7fSkgewogICAgICBvYmogPSBvYmogfHwge307CiAgICAgIGNvbnN0IHpvbmVUb1VzZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICAgIGlmICghem9uZVRvVXNlLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7CiAgICAgIH0KCiAgICAgIGNvbnN0IHRzTm93ID0gU2V0dGluZ3Mubm93KCksCiAgICAgICAgb2Zmc2V0UHJvdmlzID0gIWlzVW5kZWZpbmVkKG9wdHMuc3BlY2lmaWNPZmZzZXQpCiAgICAgICAgICA/IG9wdHMuc3BlY2lmaWNPZmZzZXQKICAgICAgICAgIDogem9uZVRvVXNlLm9mZnNldCh0c05vdyksCiAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yTUQgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5tb250aCkgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQuZGF5KSwKICAgICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELAogICAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyLAogICAgICAgIGxvYyA9IExvY2FsZS5mcm9tT2JqZWN0KG9wdHMpOwoKICAgICAgLy8gY2FzZXM6CiAgICAgIC8vIGp1c3QgYSB3ZWVrZGF5IC0+IHRoaXMgd2VlaydzIGluc3RhbmNlIG9mIHRoYXQgd2Vla2RheSwgbm8gd29ycmllcwogICAgICAvLyAoZ3JlZ29yaWFuIGRhdGEgb3Igb3JkaW5hbCkgKyAod2Vla1llYXIgb3Igd2Vla051bWJlcikgLT4gZXJyb3IKICAgICAgLy8gKGdyZWdvcmlhbiBtb250aCBvciBkYXkpICsgb3JkaW5hbCAtPiBlcnJvcgogICAgICAvLyBvdGhlcndpc2UganVzdCB1c2Ugd2Vla3Mgb3Igb3JkaW5hbHMgb3IgZ3JlZ29yaWFuLCBkZXBlbmRpbmcgb24gd2hhdCdzIHNwZWNpZmllZAoKICAgICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigKICAgICAgICAgICJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzIgogICAgICAgICk7CiAgICAgIH0KCiAgICAgIGlmIChjb250YWluc0dyZWdvck1EICYmIGNvbnRhaW5zT3JkaW5hbCkgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigiQ2FuJ3QgbWl4IG9yZGluYWwgZGF0ZXMgd2l0aCBtb250aC9kYXkiKTsKICAgICAgfQoKICAgICAgY29uc3QgdXNlV2Vla0RhdGEgPSBkZWZpbml0ZVdlZWtEZWYgfHwgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiAhY29udGFpbnNHcmVnb3IpOwoKICAgICAgLy8gY29uZmlndXJlIG91cnNlbHZlcyB0byBkZWFsIHdpdGggZ3JlZ29yaWFuIGRhdGVzIG9yIHdlZWsgc3R1ZmYKICAgICAgbGV0IHVuaXRzLAogICAgICAgIGRlZmF1bHRWYWx1ZXMsCiAgICAgICAgb2JqTm93ID0gdHNUb09iaih0c05vdywgb2Zmc2V0UHJvdmlzKTsKICAgICAgaWYgKHVzZVdlZWtEYXRhKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkV2Vla1VuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0V2Vla1VuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9XZWVrKG9iak5vdyk7CiAgICAgIH0gZWxzZSBpZiAoY29udGFpbnNPcmRpbmFsKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkT3JkaW5hbFVuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9PcmRpbmFsKG9iak5vdyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkVW5pdHM7CiAgICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRVbml0VmFsdWVzOwogICAgICB9CgogICAgICAvLyBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3Npbmcgc3R1ZmYKICAgICAgbGV0IGZvdW5kRmlyc3QgPSBmYWxzZTsKICAgICAgZm9yIChjb25zdCB1IG9mIHVuaXRzKSB7CiAgICAgICAgY29uc3QgdiA9IG5vcm1hbGl6ZWRbdV07CiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2KSkgewogICAgICAgICAgZm91bmRGaXJzdCA9IHRydWU7CiAgICAgICAgfSBlbHNlIGlmIChmb3VuZEZpcnN0KSB7CiAgICAgICAgICBub3JtYWxpemVkW3VdID0gZGVmYXVsdFZhbHVlc1t1XTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbm9ybWFsaXplZFt1XSA9IG9iak5vd1t1XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgdmFsdWVzIHdlIGhhdmUgYXJlIGluIHJhbmdlCiAgICAgIGNvbnN0IGhpZ2hlck9yZGVySW52YWxpZCA9IHVzZVdlZWtEYXRhCiAgICAgICAgICA/IGhhc0ludmFsaWRXZWVrRGF0YShub3JtYWxpemVkKQogICAgICAgICAgOiBjb250YWluc09yZGluYWwKICAgICAgICAgID8gaGFzSW52YWxpZE9yZGluYWxEYXRhKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG5vcm1hbGl6ZWQpLAogICAgICAgIGludmFsaWQgPSBoaWdoZXJPcmRlckludmFsaWQgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG5vcm1hbGl6ZWQpOwoKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgLy8gY29tcHV0ZSB0aGUgYWN0dWFsIHRpbWUKICAgICAgY29uc3QgZ3JlZ29yaWFuID0gdXNlV2Vla0RhdGEKICAgICAgICAgID8gd2Vla1RvR3JlZ29yaWFuKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbAogICAgICAgICAgPyBvcmRpbmFsVG9HcmVnb3JpYW4obm9ybWFsaXplZCkKICAgICAgICAgIDogbm9ybWFsaXplZCwKICAgICAgICBbdHNGaW5hbCwgb2Zmc2V0RmluYWxdID0gb2JqVG9UUyhncmVnb3JpYW4sIG9mZnNldFByb3Zpcywgem9uZVRvVXNlKSwKICAgICAgICBpbnN0ID0gbmV3IERhdGVUaW1lKHsKICAgICAgICAgIHRzOiB0c0ZpbmFsLAogICAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgICAgbzogb2Zmc2V0RmluYWwsCiAgICAgICAgICBsb2MsCiAgICAgICAgfSk7CgogICAgICAvLyBncmVnb3JpYW4gZGF0YSArIHdlZWtkYXkgc2VydmVzIG9ubHkgdG8gdmFsaWRhdGUKICAgICAgaWYgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiBjb250YWluc0dyZWdvciAmJiBvYmoud2Vla2RheSAhPT0gaW5zdC53ZWVrZGF5KSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoCiAgICAgICAgICAibWlzbWF0Y2hlZCB3ZWVrZGF5IiwKICAgICAgICAgIGB5b3UgY2FuJ3Qgc3BlY2lmeSBib3RoIGEgd2Vla2RheSBvZiAke25vcm1hbGl6ZWQud2Vla2RheX0gYW5kIGEgZGF0ZSBvZiAke2luc3QudG9JU08oKX1gCiAgICAgICAgKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGluc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIElTTyA4NjAxIHN0cmluZwogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcsIHtzZXRab25lOiB0cnVlfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzJywge3pvbmU6ICd1dGMnfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtVzA1LTQnKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUlTT0RhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJJU08gODYwMSIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBSRkMgMjgyMiBzdHJpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIFJGQyAyODIyIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZS4gU2luY2UgdGhlIG9mZnNldCBpcyBhbHdheXMgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMzoxMiBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJ0ZyaSwgMjUgTm92IDIwMTYgMTM6MjM6MTIgKzA2MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzIFonKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tUkZDMjgyMih0ZXh0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VSRkMyODIyRGF0ZSh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlJGQyAyODIyIiwgdGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIEhUVFAgaGVhZGVyIGRhdGUKICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBIVFRQIGhlYWRlciBkYXRlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSBIVFRQIGRhdGVzIGFyZSBhbHdheXMgaW4gVVRDLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggdGhlIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nLiBGb3IgSFRUUCBkYXRlcywgdGhpcyBpcyBhbHdheXMgVVRDLCBzbyB0aGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGB6b25lYCBvcHRpb24gdG8gJ3V0YycsIGJ1dCB0aGlzIG9wdGlvbiBpcyBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzaW1pbGFyIG1ldGhvZHMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuLCAwNiBOb3YgMTk5NCAwODo0OTozNyBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3IEdNVCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuIE5vdiAgNiAwODo0OTozNyAxOTk0JykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUhUVFAodGV4dCwgb3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IFt2YWxzLCBwYXJzZWRab25lXSA9IHBhcnNlSFRUUERhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJIVFRQIiwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIGlucHV0IHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZy4KICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvcGFyc2luZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgdGhlIGxpbmsgYmVsb3cgZm9yIHRoZSBmb3JtYXRzKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byB0aGlzIHpvbmUKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSBhIGxvY2FsZSBzdHJpbmcgdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyBsb2NhbGUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIHJlc3VsdGluZyBEYXRlVGltZSB0byB0aGlzIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIGlmIChpc1VuZGVmaW5lZCh0ZXh0KSB8fCBpc1VuZGVmaW5lZChmbXQpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tRm9ybWF0IHJlcXVpcmVzIGFuIGlucHV0IHN0cmluZyBhbmQgYSBmb3JtYXQiKTsKICAgICAgfQoKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRzLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pLAogICAgICAgIFt2YWxzLCBwYXJzZWRab25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZF0gPSBwYXJzZUZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICAgIGlmIChpbnZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgYGZvcm1hdCAke2ZtdH1gLCB0ZXh0LCBzcGVjaWZpY09mZnNldCk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIHVzZSBmcm9tRm9ybWF0IGluc3RlYWQKICAgICAqLwogICAgc3RhdGljIGZyb21TdHJpbmcodGV4dCwgZm10LCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXQodGV4dCwgZm10LCBvcHRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBTUUwgZGF0ZSwgdGltZSwgb3IgZGF0ZXRpbWUKICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIHVzZSB0aGlzIHpvbmUgaWYgbm8gb2Zmc2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgaW5wdXQgc3RyaW5nIGl0c2VsZi4gV2lsbCBhbHNvIGNvbnZlcnQgdGhlIERhdGVUaW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIHRvIHRoaXMgbnVtYmVyaW5nIHN5c3RlbQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1JykKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDInKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIrMDY6MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIgQW1lcmljYS9Mb3NfQW5nZWxlcycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJywgeyBzZXRab25lOiB0cnVlIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MicsIHsgem9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcwOToxMjozNC4zNDInKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tU1FMKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVNRTCh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlNRTCIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBEYXRlVGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50LgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtleHBsYW5hdGlvbj1udWxsXSAtIGxvbmdlciBleHBsYW5hdGlvbiwgbWF5IGluY2x1ZGUgcGFyYW1ldGVycyBhbmQgb3RoZXIgdXNlZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBpbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24gPSBudWxsKSB7CiAgICAgIGlmICghcmVhc29uKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIERhdGVUaW1lIGlzIGludmFsaWQiKTsKICAgICAgfQoKICAgICAgY29uc3QgaW52YWxpZCA9IHJlYXNvbiBpbnN0YW5jZW9mIEludmFsaWQgPyByZWFzb24gOiBuZXcgSW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKTsKCiAgICAgIGlmIChTZXR0aW5ncy50aHJvd09uSW52YWxpZCkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkRGF0ZVRpbWVFcnJvcihpbnZhbGlkKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsgaW52YWxpZCB9KTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIERhdGVUaW1lLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzRGF0ZVRpbWUobykgewogICAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uRGF0ZVRpbWUpIHx8IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUHJvZHVjZSB0aGUgZm9ybWF0IHN0cmluZyBmb3IgYSBzZXQgb2Ygb3B0aW9ucwogICAgICogQHBhcmFtIGZvcm1hdE9wdHMKICAgICAqIEBwYXJhbSBsb2NhbGVPcHRzCiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgcGFyc2VGb3JtYXRGb3JPcHRzKGZvcm1hdE9wdHMsIGxvY2FsZU9wdHMgPSB7fSkgewogICAgICBjb25zdCB0b2tlbkxpc3QgPSBmb3JtYXRPcHRzVG9Ub2tlbnMoZm9ybWF0T3B0cywgTG9jYWxlLmZyb21PYmplY3QobG9jYWxlT3B0cykpOwogICAgICByZXR1cm4gIXRva2VuTGlzdCA/IG51bGwgOiB0b2tlbkxpc3QubWFwKCh0KSA9PiAodCA/IHQudmFsIDogbnVsbCkpLmpvaW4oIiIpOwogICAgfQoKICAgIC8qKgogICAgICogUHJvZHVjZSB0aGUgdGhlIGZ1bGx5IGV4cGFuZGVkIGZvcm1hdCB0b2tlbiBmb3IgdGhlIGxvY2FsZQogICAgICogRG9lcyBOT1QgcXVvdGUgY2hhcmFjdGVycywgc28gcXVvdGVkIHRva2VucyB3aWxsIG5vdCByb3VuZCB0cmlwIGNvcnJlY3RseQogICAgICogQHBhcmFtIGZtdAogICAgICogQHBhcmFtIGxvY2FsZU9wdHMKICAgICAqIEByZXR1cm5zIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBleHBhbmRGb3JtYXQoZm10LCBsb2NhbGVPcHRzID0ge30pIHsKICAgICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm10KSwgTG9jYWxlLmZyb21PYmplY3QobG9jYWxlT3B0cykpOwogICAgICByZXR1cm4gZXhwYW5kZWQubWFwKCh0KSA9PiB0LnZhbCkuam9pbigiIik7CiAgICB9CgogICAgLy8gSU5GTwoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNywgNCkuZ2V0KCdtb250aCcpOyAvLz0+IDcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnZGF5Jyk7IC8vPT4gNAogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQodW5pdCkgewogICAgICByZXR1cm4gdGhpc1t1bml0XTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQuIEludmFsaWQgRGF0ZVRpbWVzIG9jY3VyIHdoZW46CiAgICAgKiAqIFRoZSBEYXRlVGltZSB3YXMgY3JlYXRlZCBmcm9tIGludmFsaWQgY2FsZW5kYXIgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIDEzdGggbW9udGggb3IgRmVicnVhcnkgMzAKICAgICAqICogVGhlIERhdGVUaW1lIHdhcyBjcmVhdGVkIGJ5IGFuIG9wZXJhdGlvbiBvbiBhbm90aGVyIGludmFsaWQgZGF0ZQogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRGF0ZVRpbWUgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIERhdGVUaW1lIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEYXRlVGltZSBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxvY2FsZSBvZiBhIERhdGVUaW1lLCBzdWNoICdlbi1HQicuIFRoZSBsb2NhbGUgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lCiAgICAgKgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGxvY2FsZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLmxvY2FsZSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEYXRlVGltZSwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICoKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBudW1iZXJpbmdTeXN0ZW0oKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5udW1iZXJpbmdTeXN0ZW0gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBvdXRwdXQgY2FsZW5kYXIgb2YgYSBEYXRlVGltZSwgc3VjaCAnaXNsYW1pYycuIFRoZSBvdXRwdXQgY2FsZW5kYXIgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lCiAgICAgKgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG91dHB1dENhbGVuZGFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB0aW1lIHpvbmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAdHlwZSB7Wm9uZX0KICAgICAqLwogICAgZ2V0IHpvbmUoKSB7CiAgICAgIHJldHVybiB0aGlzLl96b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBuYW1lIG9mIHRoZSB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgem9uZU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUubmFtZSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHllYXIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS55ZWFyIC8vPT4gMjAxNwogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHllYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMueWVhciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcXVhcnRlcgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnF1YXJ0ZXIgLy89PiAyCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgcXVhcnRlcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IE1hdGguY2VpbCh0aGlzLmMubW9udGggLyAzKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbW9udGggKDEtMTIpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLm1vbnRoIC8vPT4gNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1vbnRoKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1vbnRoIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoICgxLTMwaXNoKS4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5kYXkgLy89PiAyNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5kYXkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhvdXIgb2YgdGhlIGRheSAoMC0yMykuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSkuaG91ciAvLz0+IDkKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBob3VyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLmhvdXIgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1pbnV0ZSBvZiB0aGUgaG91ciAoMC01OSkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzApLm1pbnV0ZSAvLz0+IDMwCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWludXRlKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbnV0ZSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2Vjb25kIG9mIHRoZSBtaW51dGUgKDAtNTkpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1Mikuc2Vjb25kIC8vPT4gNTIKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBzZWNvbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuc2Vjb25kIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kICgwLTk5OSkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzAsIDUyLCA2NTQpLm1pbGxpc2Vjb25kIC8vPT4gNjU0CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWlsbGlzZWNvbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMubWlsbGlzZWNvbmQgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWsgeWVhcgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAxMiwgMzEpLndlZWtZZWFyIC8vPT4gMjAxNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtZZWFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrWWVhciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgd2VlayBudW1iZXIgb2YgdGhlIHdlZWsgeWVhciAoMS01MmlzaCkuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS53ZWVrTnVtYmVyIC8vPT4gMjEKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrTnVtYmVyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrTnVtYmVyIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsuCiAgICAgKiAxIGlzIE1vbmRheSBhbmQgNyBpcyBTdW5kYXkKICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMTEsIDMxKS53ZWVrZGF5IC8vPT4gNAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtkYXkoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtkYXkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG9yZGluYWwgKG1lYW5pbmcgdGhlIGRheSBvZiB0aGUgeWVhcikKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5vcmRpbmFsIC8vPT4gMTQ1CiAgICAgKiBAdHlwZSB7bnVtYmVyfERhdGVUaW1lfQogICAgICovCiAgICBnZXQgb3JkaW5hbCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGdyZWdvcmlhblRvT3JkaW5hbCh0aGlzLmMpLm9yZGluYWwgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IG1vbnRoIG5hbWUsIHN1Y2ggYXMgJ09jdCcuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkubW9udGhTaG9ydCAvLz0+IE9jdAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG1vbnRoU2hvcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLm1vbnRocygic2hvcnQiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgbG9uZyBtb250aCBuYW1lLCBzdWNoIGFzICdPY3RvYmVyJy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS5tb250aExvbmcgLy89PiBPY3RvYmVyCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbW9udGhMb25nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoImxvbmciLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgc2hvcnQgd2Vla2RheSwgc3VjaCBhcyAnTW9uJy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5U2hvcnQgLy89PiBNb24KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB3ZWVrZGF5U2hvcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLndlZWtkYXlzKCJzaG9ydCIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgd2Vla2RheSwgc3VjaCBhcyAnTW9uZGF5Jy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5TG9uZyAvLz0+IE1vbmRheQogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IHdlZWtkYXlMb25nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cygibG9uZyIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIFVUQyBvZmZzZXQgb2YgdGhpcyBEYXRlVGltZSBpbiBtaW51dGVzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5vZmZzZXQgLy89PiAtMjQwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5vZmZzZXQgLy89PiAwCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgb2Zmc2V0KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gK3RoaXMubyA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2hvcnQgaHVtYW4gbmFtZSBmb3IgdGhlIHpvbmUncyBjdXJyZW50IG9mZnNldCwgZm9yIGV4YW1wbGUgIkVTVCIgb3IgIkVEVCIuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBvZmZzZXROYW1lU2hvcnQoKSB7CiAgICAgIGlmICh0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgZm9ybWF0OiAic2hvcnQiLAogICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSwKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBsb25nIGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlICJFYXN0ZXJuIFN0YW5kYXJkIFRpbWUiIG9yICJFYXN0ZXJuIERheWxpZ2h0IFRpbWUiLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgb2Zmc2V0TmFtZUxvbmcoKSB7CiAgICAgIGlmICh0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgZm9ybWF0OiAibG9uZyIsCiAgICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLAogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciB0aGlzIHpvbmUncyBvZmZzZXQgZXZlciBjaGFuZ2VzLCBhcyBpbiBhIERTVC4KICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNPZmZzZXRGaXhlZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuem9uZS5pc1VuaXZlcnNhbCA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgaW4gYSBEU1QuCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzSW5EU1QoKSB7CiAgICAgIGlmICh0aGlzLmlzT2Zmc2V0Rml4ZWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgIHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoeyBtb250aDogMSwgZGF5OiAxIH0pLm9mZnNldCB8fAogICAgICAgICAgdGhpcy5vZmZzZXQgPiB0aGlzLnNldCh7IG1vbnRoOiA1IH0pLm9mZnNldAogICAgICAgICk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aG9zZSBEYXRlVGltZXMgd2hpY2ggaGF2ZSB0aGUgc2FtZSBsb2NhbCB0aW1lIGFzIHRoaXMgRGF0ZVRpbWUsIGJ1dCBhIGRpZmZlcmVudCBvZmZzZXQgZnJvbSBVVEMKICAgICAqIGluIHRoaXMgRGF0ZVRpbWUncyB6b25lLiBEdXJpbmcgRFNUIGNoYW5nZXMgbG9jYWwgdGltZSBjYW4gYmUgYW1iaWd1b3VzLCBmb3IgZXhhbXBsZQogICAgICogYDIwMjMtMTAtMjlUMDI6MzA6MDBgIGluIGBFdXJvcGUvQmVybGluYCBjYW4gaGF2ZSBvZmZzZXQgYCswMTowMGAgb3IgYCswMjowMGAuCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBib3RoIHBvc3NpYmxlIERhdGVUaW1lcyBpZiB0aGlzIERhdGVUaW1lJ3MgbG9jYWwgdGltZSBpcyBhbWJpZ3VvdXMuCiAgICAgKiBAcmV0dXJucyB7RGF0ZVRpbWVbXX0KICAgICAqLwogICAgZ2V0UG9zc2libGVPZmZzZXRzKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCB0aGlzLmlzT2Zmc2V0Rml4ZWQpIHsKICAgICAgICByZXR1cm4gW3RoaXNdOwogICAgICB9CiAgICAgIGNvbnN0IGRheU1zID0gODY0MDAwMDA7CiAgICAgIGNvbnN0IG1pbnV0ZU1zID0gNjAwMDA7CiAgICAgIGNvbnN0IGxvY2FsVFMgPSBvYmpUb0xvY2FsVFModGhpcy5jKTsKICAgICAgY29uc3Qgb0VhcmxpZXIgPSB0aGlzLnpvbmUub2Zmc2V0KGxvY2FsVFMgLSBkYXlNcyk7CiAgICAgIGNvbnN0IG9MYXRlciA9IHRoaXMuem9uZS5vZmZzZXQobG9jYWxUUyArIGRheU1zKTsKCiAgICAgIGNvbnN0IG8xID0gdGhpcy56b25lLm9mZnNldChsb2NhbFRTIC0gb0VhcmxpZXIgKiBtaW51dGVNcyk7CiAgICAgIGNvbnN0IG8yID0gdGhpcy56b25lLm9mZnNldChsb2NhbFRTIC0gb0xhdGVyICogbWludXRlTXMpOwogICAgICBpZiAobzEgPT09IG8yKSB7CiAgICAgICAgcmV0dXJuIFt0aGlzXTsKICAgICAgfQogICAgICBjb25zdCB0czEgPSBsb2NhbFRTIC0gbzEgKiBtaW51dGVNczsKICAgICAgY29uc3QgdHMyID0gbG9jYWxUUyAtIG8yICogbWludXRlTXM7CiAgICAgIGNvbnN0IGMxID0gdHNUb09iaih0czEsIG8xKTsKICAgICAgY29uc3QgYzIgPSB0c1RvT2JqKHRzMiwgbzIpOwogICAgICBpZiAoCiAgICAgICAgYzEuaG91ciA9PT0gYzIuaG91ciAmJgogICAgICAgIGMxLm1pbnV0ZSA9PT0gYzIubWludXRlICYmCiAgICAgICAgYzEuc2Vjb25kID09PSBjMi5zZWNvbmQgJiYKICAgICAgICBjMS5taWxsaXNlY29uZCA9PT0gYzIubWlsbGlzZWNvbmQKICAgICAgKSB7CiAgICAgICAgcmV0dXJuIFtjbG9uZSh0aGlzLCB7IHRzOiB0czEgfSksIGNsb25lKHRoaXMsIHsgdHM6IHRzMiB9KV07CiAgICAgIH0KICAgICAgcmV0dXJuIFt0aGlzXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIERhdGVUaW1lIGlzIGluIGEgbGVhcCB5ZWFyLCBmYWxzZSBvdGhlcndpc2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYpLmlzSW5MZWFwWWVhciAvLz0+IHRydWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLmlzSW5MZWFwWWVhciAvLz0+IGZhbHNlCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzSW5MZWFwWWVhcigpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyBtb250aAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMikuZGF5c0luTW9udGggLy89PiAyOQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMykuZGF5c0luTW9udGggLy89PiAzMQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXNJbk1vbnRoKCkgewogICAgICByZXR1cm4gZGF5c0luTW9udGgodGhpcy55ZWFyLCB0aGlzLm1vbnRoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyB5ZWFyCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2KS5kYXlzSW5ZZWFyIC8vPT4gMzY2CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5kYXlzSW5ZZWFyIC8vPT4gMzY1CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgZGF5c0luWWVhcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGRheXNJblllYXIodGhpcy55ZWFyKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB3ZWVrcyBpbiB0aGlzIERhdGVUaW1lJ3MgeWVhcgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDA0KS53ZWVrc0luV2Vla1llYXIgLy89PiA1MwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykud2Vla3NJbldlZWtZZWFyIC8vPT4gNTIKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrc0luV2Vla1llYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB3ZWVrc0luV2Vla1llYXIodGhpcy53ZWVrWWVhcikgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByZXNvbHZlZCBJbnRsIG9wdGlvbnMgZm9yIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBUaGlzIGlzIHVzZWZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBiZWhhdmlvciBvZiBmb3JtYXR0aW5nIG1ldGhvZHMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gdGhlIHNhbWUgb3B0aW9ucyBhcyB0b0xvY2FsZVN0cmluZwogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICByZXNvbHZlZExvY2FsZU9wdGlvbnMob3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBGb3JtYXR0ZXIuY3JlYXRlKAogICAgICAgIHRoaXMubG9jLmNsb25lKG9wdHMpLAogICAgICAgIG9wdHMKICAgICAgKS5yZXNvbHZlZE9wdGlvbnModGhpcyk7CiAgICAgIHJldHVybiB7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcjogY2FsZW5kYXIgfTsKICAgIH0KCiAgICAvLyBUUkFOU0ZPUk0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gVVRDLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKgogICAgICogRXF1aXZhbGVudCB0byB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0oJ3V0YycpCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29mZnNldD0wXSAtIG9wdGlvbmFsbHksIGFuIG9mZnNldCBmcm9tIFVUQyBpbiBtaW51dGVzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9e31dIC0gb3B0aW9ucyB0byBwYXNzIHRvIGBzZXRab25lKClgCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgdG9VVEMob2Zmc2V0ID0gMCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKG9mZnNldCksIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byB0aGUgaG9zdCdzIGxvY2FsIHpvbmUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqCiAgICAgKiBFcXVpdmFsZW50IHRvIGBzZXRab25lKCdsb2NhbCcpYAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHRvTG9jYWwoKSB7CiAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byBzcGVjaWZpZWQgem9uZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICoKICAgICAqIEJ5IGRlZmF1bHQsIHRoZSBzZXR0ZXIga2VlcHMgdGhlIHVuZGVybHlpbmcgdGltZSB0aGUgc2FtZSAoYXMgaW4sIHRoZSBzYW1lIHRpbWVzdGFtcCksIGJ1dCB0aGUgbmV3IGluc3RhbmNlIHdpbGwgcmVwb3J0IGRpZmZlcmVudCBsb2NhbCB0aW1lcyBhbmQgY29uc2lkZXIgRFNUcyB3aGVuIG1ha2luZyBjb21wdXRhdGlvbnMsIGFzIHdpdGgge0BsaW5rIERhdGVUaW1lI3BsdXN9LiBZb3UgbWF5IHdpc2ggdG8gdXNlIHtAbGluayBEYXRlVGltZSN0b0xvY2FsfSBhbmQge0BsaW5rIERhdGVUaW1lI3RvVVRDfSB3aGljaCBwcm92aWRlIHNpbXBsZSBjb252ZW5pZW5jZSB3cmFwcGVycyBmb3IgY29tbW9ubHkgdXNlZCB6b25lcy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gYSB6b25lIGlkZW50aWZpZXIuIEFzIGEgc3RyaW5nLCB0aGF0IGNhbiBiZSBhbnkgSUFOQSB6b25lIHN1cHBvcnRlZCBieSB0aGUgaG9zdCBlbnZpcm9ubWVudCwgb3IgYSBmaXhlZC1vZmZzZXQgbmFtZSBvZiB0aGUgZm9ybSAnVVRDKzMnLCBvciB0aGUgc3RyaW5ncyAnbG9jYWwnIG9yICd1dGMnLiBZb3UgbWF5IGFsc28gc3VwcGx5IGFuIGluc3RhbmNlIG9mIGEge0BsaW5rIERhdGVUaW1lI1pvbmV9IGNsYXNzLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmtlZXBMb2NhbFRpbWU9ZmFsc2VdIC0gSWYgdHJ1ZSwgYWRqdXN0IHRoZSB1bmRlcmx5aW5nIHRpbWUgc28gdGhhdCB0aGUgbG9jYWwgdGltZSBzdGF5cyB0aGUgc2FtZSwgYnV0IGluIHRoZSB0YXJnZXQgem9uZS4gWW91IHNob3VsZCByYXJlbHkgbmVlZCB0aGlzLgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHNldFpvbmUoem9uZSwgeyBrZWVwTG9jYWxUaW1lID0gZmFsc2UsIGtlZXBDYWxlbmRhclRpbWUgPSBmYWxzZSB9ID0ge30pIHsKICAgICAgem9uZSA9IG5vcm1hbGl6ZVpvbmUoem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoem9uZS5lcXVhbHModGhpcy56b25lKSkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9IGVsc2UgaWYgKCF6b25lLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZSkpOwogICAgICB9IGVsc2UgewogICAgICAgIGxldCBuZXdUUyA9IHRoaXMudHM7CiAgICAgICAgaWYgKGtlZXBMb2NhbFRpbWUgfHwga2VlcENhbGVuZGFyVGltZSkgewogICAgICAgICAgY29uc3Qgb2Zmc2V0R3Vlc3MgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGNvbnN0IGFzT2JqID0gdGhpcy50b09iamVjdCgpOwogICAgICAgICAgW25ld1RTXSA9IG9ialRvVFMoYXNPYmosIG9mZnNldEd1ZXNzLCB6b25lKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdHM6IG5ld1RTLCB6b25lIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG9yIG91dHB1dENhbGVuZGFyLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIHRoZSBwcm9wZXJ0aWVzIHRvIHNldAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7CiAgICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyIH0pOwogICAgICByZXR1cm4gY2xvbmUodGhpcywgeyBsb2MgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgbG9jYWxlLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBKdXN0IGEgY29udmVuaWVudCBhbGlhcyBmb3IgcmVjb25maWd1cmUoeyBsb2NhbGUgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5zZXRMb2NhbGUoJ2VuLUdCJykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzZXRMb2NhbGUobG9jYWxlKSB7CiAgICAgIHJldHVybiB0aGlzLnJlY29uZmlndXJlKHsgbG9jYWxlIH0pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqIFlvdSBjYW4gb25seSBzZXQgdW5pdHMgd2l0aCB0aGlzIG1ldGhvZDsgZm9yICJzZXR0aW5nIiBtZXRhZGF0YSwgc2VlIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0gYW5kIHtAbGluayBEYXRlVGltZSNzZXRab25lfS4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVycwogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAxNyB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgaG91cjogOCwgbWludXRlOiAzMCB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgd2Vla2RheTogNSB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAwNSwgb3JkaW5hbDogMjM0IH0pCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc2V0KHZhbHVlcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CgogICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplT2JqZWN0KHZhbHVlcywgbm9ybWFsaXplVW5pdCksCiAgICAgICAgc2V0dGluZ1dlZWtTdHVmZiA9CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrWWVhcikgfHwKICAgICAgICAgICFpc1VuZGVmaW5lZChub3JtYWxpemVkLndlZWtOdW1iZXIpIHx8CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrZGF5KSwKICAgICAgICBjb250YWluc09yZGluYWwgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSwKICAgICAgICBjb250YWluc0dyZWdvclllYXIgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC55ZWFyKSwKICAgICAgICBjb250YWluc0dyZWdvck1EID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQubW9udGgpIHx8ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSksCiAgICAgICAgY29udGFpbnNHcmVnb3IgPSBjb250YWluc0dyZWdvclllYXIgfHwgY29udGFpbnNHcmVnb3JNRCwKICAgICAgICBkZWZpbml0ZVdlZWtEZWYgPSBub3JtYWxpemVkLndlZWtZZWFyIHx8IG5vcm1hbGl6ZWQud2Vla051bWJlcjsKCiAgICAgIGlmICgoY29udGFpbnNHcmVnb3IgfHwgY29udGFpbnNPcmRpbmFsKSAmJiBkZWZpbml0ZVdlZWtEZWYpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoCiAgICAgICAgICAiQ2FuJ3QgbWl4IHdlZWtZZWFyL3dlZWtOdW1iZXIgdW5pdHMgd2l0aCB5ZWFyL21vbnRoL2RheSBvciBvcmRpbmFscyIKICAgICAgICApOwogICAgICB9CgogICAgICBpZiAoY29udGFpbnNHcmVnb3JNRCAmJiBjb250YWluc09yZGluYWwpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5Iik7CiAgICAgIH0KCiAgICAgIGxldCBtaXhlZDsKICAgICAgaWYgKHNldHRpbmdXZWVrU3R1ZmYpIHsKICAgICAgICBtaXhlZCA9IHdlZWtUb0dyZWdvcmlhbih7IC4uLmdyZWdvcmlhblRvV2Vlayh0aGlzLmMpLCAuLi5ub3JtYWxpemVkIH0pOwogICAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpKSB7CiAgICAgICAgbWl4ZWQgPSBvcmRpbmFsVG9HcmVnb3JpYW4oeyAuLi5ncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKSwgLi4ubm9ybWFsaXplZCB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBtaXhlZCA9IHsgLi4udGhpcy50b09iamVjdCgpLCAuLi5ub3JtYWxpemVkIH07CgogICAgICAgIC8vIGlmIHdlIGRpZG4ndCBzZXQgdGhlIGRheSBidXQgd2UgZW5kZWQgdXAgb24gYW4gb3ZlcmZsb3cgZGF0ZSwKICAgICAgICAvLyB1c2UgdGhlIGxhc3QgZGF5IG9mIHRoZSByaWdodCBtb250aAogICAgICAgIGlmIChpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSkpIHsKICAgICAgICAgIG1peGVkLmRheSA9IE1hdGgubWluKGRheXNJbk1vbnRoKG1peGVkLnllYXIsIG1peGVkLm1vbnRoKSwgbWl4ZWQuZGF5KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGNvbnN0IFt0cywgb10gPSBvYmpUb1RTKG1peGVkLCB0aGlzLm8sIHRoaXMuem9uZSk7CiAgICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHRzLCBvIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGEgcGVyaW9kIG9mIHRpbWUgdG8gdGhpcyBEYXRlVGltZSBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUKICAgICAqCiAgICAgKiBBZGRpbmcgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG9yIG1pbGxpc2Vjb25kcyBpbmNyZWFzZXMgdGhlIHRpbWVzdGFtcCBieSB0aGUgcmlnaHQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4gQWRkaW5nIGRheXMsIG1vbnRocywgb3IgeWVhcnMgc2hpZnRzIHRoZSBjYWxlbmRhciwgYWNjb3VudGluZyBmb3IgRFNUcyBhbmQgbGVhcCB5ZWFycyBhbG9uZyB0aGUgd2F5LiBUaHVzLCBgZHQucGx1cyh7IGhvdXJzOiAyNCB9KWAgbWF5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0aW1lIHRoYW4gYGR0LnBsdXMoeyBkYXlzOiAxIH0pYCBpZiB0aGVyZSdzIGEgRFNUIHNoaWZ0IGluIGJldHdlZW4uCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBhZGQuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKDEyMykgLy9+PiBpbiAxMjMgbWlsbGlzZWNvbmRzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgbWludXRlczogMTUgfSkgLy9+PiBpbiAxNSBtaW51dGVzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KSAvL34+IHRoaXMgdGltZSB0b21vcnJvdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IC0xIH0pIC8vfj4gdGhpcyB0aW1lIHllc3RlcmRheQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSAvL34+IGluIDMgaHIsIDEzIG1pbgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDMsIG1pbnV0ZXM6IDEzIH0pKSAvL34+IGluIDMgaHIsIDEzIG1pbgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHBsdXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lCiAgICAgKiBTZWUge0BsaW5rIERhdGVUaW1lI3BsdXN9CiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgbWludXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKS5uZWdhdGUoKTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSB1bml0IG9mIHRpbWUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBiZWdpbm5pbmcgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5zdGFydE9mKCdtb250aCcpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAxJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZigneWVhcicpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAxLTAxJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignd2VlaycpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAzJywgd2Vla3MgYWx3YXlzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5zdGFydE9mKCdkYXknKS50b0lTT1RpbWUoKTsgLy89PiAnMDA6MDAuMDAwLTA1OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLnN0YXJ0T2YoJ2hvdXInKS50b0lTT1RpbWUoKTsgLy89PiAnMDU6MDA6MDAuMDAwLTA1OjAwJwogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXJ0T2YodW5pdCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IG8gPSB7fSwKICAgICAgICBub3JtYWxpemVkVW5pdCA9IER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCk7CiAgICAgIHN3aXRjaCAobm9ybWFsaXplZFVuaXQpIHsKICAgICAgICBjYXNlICJ5ZWFycyI6CiAgICAgICAgICBvLm1vbnRoID0gMTsKICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgY2FzZSAicXVhcnRlcnMiOgogICAgICAgIGNhc2UgIm1vbnRocyI6CiAgICAgICAgICBvLmRheSA9IDE7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgIndlZWtzIjoKICAgICAgICBjYXNlICJkYXlzIjoKICAgICAgICAgIG8uaG91ciA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgImhvdXJzIjoKICAgICAgICAgIG8ubWludXRlID0gMDsKICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgY2FzZSAibWludXRlcyI6CiAgICAgICAgICBvLnNlY29uZCA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgInNlY29uZHMiOgogICAgICAgICAgby5taWxsaXNlY29uZCA9IDA7CiAgICAgICAgICBicmVhazsKICAgICAgICAvLyBubyBkZWZhdWx0LCBpbnZhbGlkIHVuaXRzIHRocm93IGluIG5vcm1hbGl6ZVVuaXQoKQogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09ICJ3ZWVrcyIpIHsKICAgICAgICBvLndlZWtkYXkgPSAxOwogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09ICJxdWFydGVycyIpIHsKICAgICAgICBjb25zdCBxID0gTWF0aC5jZWlsKHRoaXMubW9udGggLyAzKTsKICAgICAgICBvLm1vbnRoID0gKHEgLSAxKSAqIDMgKyAxOwogICAgICB9CgogICAgICByZXR1cm4gdGhpcy5zZXQobyk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBlbmQgKG1lYW5pbmcgdGhlIGxhc3QgbWlsbGlzZWNvbmQpIG9mIGEgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBlbmQgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignbW9udGgnKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTMxVDIzOjU5OjU5Ljk5OS0wNTowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLmVuZE9mKCd5ZWFyJykudG9JU08oKTsgLy89PiAnMjAxNC0xMi0zMVQyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignd2VlaycpLnRvSVNPKCk7IC8vID0+ICcyMDE0LTAzLTA5VDIzOjU5OjU5Ljk5OS0wNTowMCcsIHdlZWtzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5lbmRPZignZGF5JykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuZW5kT2YoJ2hvdXInKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTAzVDA1OjU5OjU5Ljk5OS0wNTowMCcKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBlbmRPZih1bml0KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IHRoaXMucGx1cyh7IFt1bml0XTogMSB9KQogICAgICAgICAgICAuc3RhcnRPZih1bml0KQogICAgICAgICAgICAubWludXMoMSkKICAgICAgICA6IHRoaXM7CiAgICB9CgogICAgLy8gT1VUUFVUCgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuCiAgICAgKiAqKllvdSBtYXkgbm90IHdhbnQgdGhpcy4qKiBTZWUge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3IgYSBtb3JlIGZsZXhpYmxlIGZvcm1hdHRpbmcgdG9vbC4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvZm9ybWF0dGluZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgc3RyaW5nCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IEFwciAyMicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgnZnInKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnLCB7IGxvY2FsZTogImZyIiB9KSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgiSEggJ2hvdXJzIGFuZCcgbW0gJ21pbnV0ZXMnIikgLy89PiAnMjAgaG91cnMgYW5kIDU1IG1pbnV0ZXMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvRm9ybWF0KGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MucmVkZWZhdWx0VG9FTihvcHRzKSkuZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKHRoaXMsIGZtdCkKICAgICAgICA6IElOVkFMSUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbG9jYWxpemVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhpcyBkYXRlLiBBY2NlcHRzIHRoZSBzYW1lIG9wdGlvbnMgYXMgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMgYERhdGVUaW1lLkRBVEVfRlVMTGAgb3IgYERhdGVUaW1lLlRJTUVfU0lNUExFYC4KICAgICAqIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZCBpcyBicm93c2VyLXNwZWNpZmljLCBidXQgaW4gZ2VuZXJhbCBpdCB3aWxsIHJldHVybiBhbiBhcHByb3ByaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICogb2YgdGhlIERhdGVUaW1lIGluIHRoZSBhc3NpZ25lZCBsb2NhbGUuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSBmb3JtYXRPcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0cyB0byBvdmVycmlkZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9uIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gNC8yMC8yMDE3CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2VuLWdiJykudG9Mb2NhbGVTdHJpbmcoKTsgLy89PiAnMjAvMDQvMjAxNycKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gJ0FwcmlsIDIwLCAyMDE3JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuREFURV9GVUxMLCB7IGxvY2FsZTogJ2ZyJyB9KTsgLy89PiAnMjggYW/Du3QgMjAyMicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLlRJTUVfU0lNUExFKTsgLy89PiAnMTE6MzIgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFVElNRV9TSE9SVCk7IC8vPT4gJzQvMjAvMjAxNywgMTE6MzIgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IHdlZWtkYXk6ICdsb25nJywgbW9udGg6ICdsb25nJywgZGF5OiAnMi1kaWdpdCcgfSk7IC8vPT4gJ1RodXJzZGF5LCBBcHJpbCAyMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgd2Vla2RheTogJ3Nob3J0JywgbW9udGg6ICdzaG9ydCcsIGRheTogJzItZGlnaXQnLCBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHUsIEFwciAyMCwgMTE6MjcgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsIGhvdXJDeWNsZTogJ2gyMycgfSk7IC8vPT4gJzExOjMyJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIGZvcm1hdE9wdHMpLmZvcm1hdERhdGVUaW1lKHRoaXMpCiAgICAgICAgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBmb3JtYXQgInBhcnRzIiwgbWVhbmluZyBpbmRpdmlkdWFsIHRva2VucyBhbG9uZyB3aXRoIG1ldGFkYXRhLiBUaGlzIGlzIGFsbG93cyBjYWxsZXJzIHRvIHBvc3QtcHJvY2VzcyBpbmRpdmlkdWFsIHNlY3Rpb25zIG9mIHRoZSBmb3JtYXR0ZWQgb3V0cHV0LgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0L2Zvcm1hdFRvUGFydHMKICAgICAqIEBwYXJhbSBvcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zLCBzYW1lIGFzIGB0b0xvY2FsZVN0cmluZ2AuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVBhcnRzKCk7IC8vPT4gWwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdkYXknLCB2YWx1ZTogJzI1JyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcvJyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdtb250aCcsIHZhbHVlOiAnMDUnIH0sCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJy8nIH0sCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ3llYXInLCB2YWx1ZTogJzE5ODInIH0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+IF0KICAgICAqLwogICAgdG9Mb2NhbGVQYXJ0cyhvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZAogICAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShvcHRzKSwgb3B0cykuZm9ybWF0RGF0ZVRpbWVQYXJ0cyh0aGlzKQogICAgICAgIDogW107CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmV4dGVuZGVkWm9uZT1mYWxzZV0gLSBhZGQgdGhlIHRpbWUgem9uZSBmb3JtYXQgZXh0ZW5zaW9uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgzLCA1LCAyNSkudG9JU08oKSAvLz0+ICcxOTgyLTA1LTI1VDAwOjAwOjAwLjAwMFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTygpIC8vPT4gJzIwMTctMDQtMjJUMjA6NDc6MDUuMzM1LTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzIwMTcwNDIyVDIwNDcwNS4zMzUtMDQwMCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08oewogICAgICBmb3JtYXQgPSAiZXh0ZW5kZWQiLAogICAgICBzdXBwcmVzc1NlY29uZHMgPSBmYWxzZSwKICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSwKICAgICAgaW5jbHVkZU9mZnNldCA9IHRydWUsCiAgICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLAogICAgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGNvbnN0IGV4dCA9IGZvcm1hdCA9PT0gImV4dGVuZGVkIjsKCiAgICAgIGxldCBjID0gdG9JU09EYXRlKHRoaXMsIGV4dCk7CiAgICAgIGMgKz0gIlQiOwogICAgICBjICs9IHRvSVNPVGltZSh0aGlzLCBleHQsIHN1cHByZXNzU2Vjb25kcywgc3VwcHJlc3NNaWxsaXNlY29uZHMsIGluY2x1ZGVPZmZzZXQsIGV4dGVuZGVkWm9uZSk7CiAgICAgIHJldHVybiBjOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyBkYXRlIGNvbXBvbmVudAogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wNS0yNScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzE5ODIwNTI1JwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoeyBmb3JtYXQgPSAiZXh0ZW5kZWQiIH0gPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIGZvcm1hdCA9PT0gImV4dGVuZGVkIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHdlZWsgZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODIsIDUsIDI1KS50b0lTT1dlZWtEYXRlKCkgLy89PiAnMTk4Mi1XMjEtMicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09XZWVrRGF0ZSgpIHsKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCAia2tray0nVydXVy1jIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHRpbWUgY29tcG9uZW50CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuZXh0ZW5kZWRab25lPXRydWVdIC0gYWRkIHRoZSB0aW1lIHpvbmUgZm9ybWF0IGV4dGVuc2lvbgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlUHJlZml4PWZhbHNlXSAtIGluY2x1ZGUgdGhlIGBUYCBwcmVmaXgKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoKSAvLz0+ICcwNzozNDoxOS4zNjFaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCwgc2Vjb25kczogMCwgbWlsbGlzZWNvbmRzOiAwIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzU2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcwNzozNFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcwNzM0MTkuMzYxWicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMDc6MzQ6MTkuMzYxWicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09UaW1lKHsKICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSwKICAgICAgc3VwcHJlc3NTZWNvbmRzID0gZmFsc2UsCiAgICAgIGluY2x1ZGVPZmZzZXQgPSB0cnVlLAogICAgICBpbmNsdWRlUHJlZml4ID0gZmFsc2UsCiAgICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLAogICAgICBmb3JtYXQgPSAiZXh0ZW5kZWQiLAogICAgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGxldCBjID0gaW5jbHVkZVByZWZpeCA/ICJUIiA6ICIiOwogICAgICByZXR1cm4gKAogICAgICAgIGMgKwogICAgICAgIHRvSVNPVGltZSgKICAgICAgICAgIHRoaXMsCiAgICAgICAgICBmb3JtYXQgPT09ICJleHRlbmRlZCIsCiAgICAgICAgICBzdXBwcmVzc1NlY29uZHMsCiAgICAgICAgICBzdXBwcmVzc01pbGxpc2Vjb25kcywKICAgICAgICAgIGluY2x1ZGVPZmZzZXQsCiAgICAgICAgICBleHRlbmRlZFpvbmUKICAgICAgICApCiAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIFJGQyAyODIyLWNvbXBhdGlibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCArMDAwMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1JGQzI4MjIoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDAwOjAwOjAwIC0wNDAwJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1JGQzI4MjIoKSB7CiAgICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgWlpaIiwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSFRUUCBoZWFkZXJzLiBUaGUgb3V0cHV0IGlzIGFsd2F5cyBleHByZXNzZWQgaW4gR01ULgogICAgICogU3BlY2lmaWNhbGx5LCB0aGUgc3RyaW5nIGNvbmZvcm1zIHRvIFJGQyAxMTIzLgogICAgICogQHNlZSBodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMzLmh0bWwjc2VjMy4zLjEKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9IVFRQKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCBHTVQnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMsIDE5KS50b0hUVFAoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDE5OjAwOjAwIEdNVCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9IVFRQKCkgewogICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMudG9VVEMoKSwgIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgJ0dNVCciKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBEYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvU1FMRGF0ZSgpIC8vPT4gJzIwMTQtMDctMTMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMRGF0ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIFRpbWUKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlWm9uZT1mYWxzZV0gLSBpbmNsdWRlIHRoZSB6b25lLCBzdWNoIGFzICdBbWVyaWNhL05ld19Zb3JrJy4gT3ZlcnJpZGVzIGluY2x1ZGVPZmZzZXQuCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXRTcGFjZT10cnVlXSAtIGluY2x1ZGUgdGhlIHNwYWNlIGJldHdlZW4gdGhlIHRpbWUgYW5kIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJzA1OjE1OjE2LjM0NSAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS50b1NRTCgpIC8vPT4gJzA1OjE1OjE2LjM0NScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKCkgLy89PiAnMDU6MTU6MTYuMzQ1IC0wNDowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoeyBpbmNsdWRlWm9uZTogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1IEFtZXJpY2EvTmV3X1lvcmsnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMVGltZSh7IGluY2x1ZGVPZmZzZXQgPSB0cnVlLCBpbmNsdWRlWm9uZSA9IGZhbHNlLCBpbmNsdWRlT2Zmc2V0U3BhY2UgPSB0cnVlIH0gPSB7fSkgewogICAgICBsZXQgZm10ID0gIkhIOm1tOnNzLlNTUyI7CgogICAgICBpZiAoaW5jbHVkZVpvbmUgfHwgaW5jbHVkZU9mZnNldCkgewogICAgICAgIGlmIChpbmNsdWRlT2Zmc2V0U3BhY2UpIHsKICAgICAgICAgIGZtdCArPSAiICI7CiAgICAgICAgfQogICAgICAgIGlmIChpbmNsdWRlWm9uZSkgewogICAgICAgICAgZm10ICs9ICJ6IjsKICAgICAgICB9IGVsc2UgaWYgKGluY2x1ZGVPZmZzZXQpIHsKICAgICAgICAgIGZtdCArPSAiWloiOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCBmbXQsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVpvbmU9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgem9uZSwgc3VjaCBhcyAnQW1lcmljYS9OZXdfWW9yaycuIE92ZXJyaWRlcyBpbmNsdWRlT2Zmc2V0LgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0U3BhY2U9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSB0aW1lIGFuZCB0aGUgb2Zmc2V0LCBzdWNoIGFzICcwNToxNToxNi4zNDUgLTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1NRTCgpIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoKSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1NRTCh7IGluY2x1ZGVab25lOiB0cnVlIH0pIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIEFtZXJpY2EvTmV3X1lvcmsnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMKG9wdHMgPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICByZXR1cm4gYCR7dGhpcy50b1NRTERhdGUoKX0gJHt0aGlzLnRvU1FMVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciBkZWJ1Z2dpbmcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9TdHJpbmcoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvSVNPKCkgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggbWlsbGlzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuIEFsaWFzIG9mIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdmFsdWVPZigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVwb2NoIG1pbGxpc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICB0b01pbGxpcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvU2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgLyAxMDAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggc2Vjb25kcyAoYXMgYSB3aG9sZSBudW1iZXIpIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvVW5peEludGVnZXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBNYXRoLmZsb29yKHRoaXMudHMgLyAxMDAwKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEpTT04uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSlNPTigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9JU08oKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBCU09OIHNlcmlhbGl6YWJsZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICovCiAgICB0b0JTT04oKSB7CiAgICAgIHJldHVybiB0aGlzLnRvSlNEYXRlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCB0aGlzIERhdGVUaW1lJ3MgeWVhciwgbW9udGgsIGRheSwgYW5kIHNvIG9uLgogICAgICogQHBhcmFtIG9wdHMgLSBvcHRpb25zIGZvciBnZW5lcmF0aW5nIHRoZSBvYmplY3QKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZUNvbmZpZz1mYWxzZV0gLSBpbmNsdWRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlcyBpbiB0aGUgb3V0cHV0CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b09iamVjdCgpIC8vPT4geyB5ZWFyOiAyMDE3LCBtb250aDogNCwgZGF5OiAyMiwgaG91cjogMjAsIG1pbnV0ZTogNDksIHNlY29uZDogNDIsIG1pbGxpc2Vjb25kOiAyNjggfQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICB0b09iamVjdChvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKCiAgICAgIGNvbnN0IGJhc2UgPSB7IC4uLnRoaXMuYyB9OwoKICAgICAgaWYgKG9wdHMuaW5jbHVkZUNvbmZpZykgewogICAgICAgIGJhc2Uub3V0cHV0Q2FsZW5kYXIgPSB0aGlzLm91dHB1dENhbGVuZGFyOwogICAgICAgIGJhc2UubnVtYmVyaW5nU3lzdGVtID0gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtOwogICAgICAgIGJhc2UubG9jYWxlID0gdGhpcy5sb2MubG9jYWxlOwogICAgICB9CiAgICAgIHJldHVybiBiYXNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgRGF0ZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICovCiAgICB0b0pTRGF0ZSgpIHsKICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU4pOwogICAgfQoKICAgIC8vIENPTVBBUkUKCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBEYXRlVGltZXMgYXMgYSBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgRGF0ZVRpbWUgdG8gY29tcGFyZSB0aGlzIG9uZSB0bwogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgYXJyYXkgb2YgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUKICAgICAqIHZhciBpMSA9IERhdGVUaW1lLmZyb21JU08oJzE5ODItMDUtMjVUMDk6NDUnKSwKICAgICAqICAgICBpMiA9IERhdGVUaW1lLmZyb21JU08oJzE5ODMtMTAtMTRUMTA6MzAnKTsKICAgICAqIGkyLmRpZmYoaTEpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogNDM4MDc1MDAwMDAgfQogICAgICogaTIuZGlmZihpMSwgJ2hvdXJzJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDEyMTY4Ljc1IH0KICAgICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTkuMDMxMjUgfQogICAgICogaTIuZGlmZihpMSwgWydtb250aHMnLCAnZGF5cycsICdob3VycyddKS50b09iamVjdCgpIC8vPT4geyBtb250aHM6IDE2LCBkYXlzOiAxOSwgaG91cnM6IDAuNzUgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIGRpZmYob3RoZXJEYXRlVGltZSwgdW5pdCA9ICJtaWxsaXNlY29uZHMiLCBvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyRGF0ZVRpbWUuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKCJjcmVhdGVkIGJ5IGRpZmZpbmcgYW4gaW52YWxpZCBEYXRlVGltZSIpOwogICAgICB9CgogICAgICBjb25zdCBkdXJPcHRzID0geyBsb2NhbGU6IHRoaXMubG9jYWxlLCBudW1iZXJpbmdTeXN0ZW06IHRoaXMubnVtYmVyaW5nU3lzdGVtLCAuLi5vcHRzIH07CgogICAgICBjb25zdCB1bml0cyA9IG1heWJlQXJyYXkodW5pdCkubWFwKER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIG90aGVySXNMYXRlciA9IG90aGVyRGF0ZVRpbWUudmFsdWVPZigpID4gdGhpcy52YWx1ZU9mKCksCiAgICAgICAgZWFybGllciA9IG90aGVySXNMYXRlciA/IHRoaXMgOiBvdGhlckRhdGVUaW1lLAogICAgICAgIGxhdGVyID0gb3RoZXJJc0xhdGVyID8gb3RoZXJEYXRlVGltZSA6IHRoaXMsCiAgICAgICAgZGlmZmVkID0gZGlmZihlYXJsaWVyLCBsYXRlciwgdW5pdHMsIGR1ck9wdHMpOwoKICAgICAgcmV0dXJuIG90aGVySXNMYXRlciA/IGRpZmZlZC5uZWdhdGUoKSA6IGRpZmZlZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgRGF0ZVRpbWUgYW5kIHJpZ2h0IG5vdy4KICAgICAqIFNlZSB7QGxpbmsgRGF0ZVRpbWUjZGlmZn0KICAgICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIHVuaXRzIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIGRpZmZOb3codW5pdCA9ICJtaWxsaXNlY29uZHMiLCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIHRoaXMuZGlmZihEYXRlVGltZS5ub3coKSwgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgc3Bhbm5pbmcgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCBhbm90aGVyIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIGVuZCBwb2ludCBvZiB0aGUgSW50ZXJ2YWwKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bnRpbChvdGhlckRhdGVUaW1lKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHRoaXMsIG90aGVyRGF0ZVRpbWUpIDogdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgRGF0ZVRpbWUgaXMgaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lIGFzIGFub3RoZXIgRGF0ZVRpbWUuCiAgICAgKiBIaWdoZXItb3JkZXIgdW5pdHMgbXVzdCBhbHNvIGJlIGlkZW50aWNhbCBmb3IgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gYHRydWVgLgogICAgICogTm90ZSB0aGF0IHRpbWUgem9uZXMgYXJlICoqaWdub3JlZCoqIGluIHRoaXMgY29tcGFyaXNvbiwgd2hpY2ggY29tcGFyZXMgdGhlICoqbG9jYWwqKiBjYWxlbmRhciB0aW1lLiBVc2Uge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9IHRvIGNvbnZlcnQgb25lIG9mIHRoZSBkYXRlcyBpZiBuZWVkZWQuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLmhhc1NhbWUob3RoZXJEVCwgJ2RheScpOyAvL34+IHRydWUgaWYgb3RoZXJEVCBpcyBpbiB0aGUgc2FtZSBjdXJyZW50IGNhbGVuZGFyIGRheQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgaGFzU2FtZShvdGhlckRhdGVUaW1lLCB1bml0KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CgogICAgICBjb25zdCBpbnB1dE1zID0gb3RoZXJEYXRlVGltZS52YWx1ZU9mKCk7CiAgICAgIGNvbnN0IGFkanVzdGVkVG9ab25lID0gdGhpcy5zZXRab25lKG90aGVyRGF0ZVRpbWUuem9uZSwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pOwogICAgICByZXR1cm4gYWRqdXN0ZWRUb1pvbmUuc3RhcnRPZih1bml0KSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gYWRqdXN0ZWRUb1pvbmUuZW5kT2YodW5pdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFcXVhbGl0eSBjaGVjawogICAgICogVHdvIERhdGVUaW1lcyBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSByZXByZXNlbnQgdGhlIHNhbWUgbWlsbGlzZWNvbmQsIGhhdmUgdGhlIHNhbWUgem9uZSBhbmQgbG9jYXRpb24sIGFuZCBhcmUgYm90aCB2YWxpZC4KICAgICAqIFRvIGNvbXBhcmUganVzdCB0aGUgbWlsbGlzZWNvbmQgdmFsdWVzLCB1c2UgYCtkdDEgPT09ICtkdDJgLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXIgLSB0aGUgb3RoZXIgRGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGVxdWFscyhvdGhlcikgewogICAgICByZXR1cm4gKAogICAgICAgIHRoaXMuaXNWYWxpZCAmJgogICAgICAgIG90aGVyLmlzVmFsaWQgJiYKICAgICAgICB0aGlzLnZhbHVlT2YoKSA9PT0gb3RoZXIudmFsdWVPZigpICYmCiAgICAgICAgdGhpcy56b25lLmVxdWFscyhvdGhlci56b25lKSAmJgogICAgICAgIHRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpCiAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgdGhpcyB0aW1lIHJlbGF0aXZlIHRvIG5vdywgc3VjaCBhcyAiaW4gdHdvIGRheXMiLiBDYW4gb25seSBpbnRlcm5hdGlvbmFsaXplIGlmIHlvdXIKICAgICAqIHBsYXRmb3JtIHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LiBSb3VuZHMgZG93biBieSBkZWZhdWx0LgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc3R5bGU9ImxvbmciXSAtIHRoZSBzdHlsZSBvZiB1bml0cywgbXVzdCBiZSAibG9uZyIsICJzaG9ydCIsIG9yICJuYXJyb3ciCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdCBvciBhcnJheSBvZiB1bml0czsgaWYgb21pdHRlZCwgb3IgYW4gYXJyYXksIHRoZSBtZXRob2Qgd2lsbCBwaWNrIHRoZSBiZXN0IHVuaXQuIFVzZSBhbiBhcnJheSBvciBvbmUgb2YgInllYXJzIiwgInF1YXJ0ZXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCBvciAic2Vjb25kcyIKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMucm91bmQ9dHJ1ZV0gLSB3aGV0aGVyIHRvIHJvdW5kIHRoZSBudW1iZXJzIGluIHRoZSBvdXRwdXQuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMucGFkZGluZz0wXSAtIHBhZGRpbmcgaW4gbWlsbGlzZWNvbmRzLiBUaGlzIGFsbG93cyB5b3UgdG8gcm91bmQgdXAgdGhlIHJlc3VsdCBpZiBpdCBmaXRzIGluc2lkZSB0aGUgdGhyZXNob2xkLiBEb24ndCB1c2UgaW4gY29tYmluYXRpb24gd2l0aCB7cm91bmQ6IGZhbHNlfSBiZWNhdXNlIHRoZSBkZWNpbWFsIG91dHB1dCB3aWxsIGluY2x1ZGUgdGhlIHBhZGRpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIG92ZXJyaWRlIHRoZSBudW1iZXJpbmdTeXN0ZW0gb2YgdGhpcyBEYXRlVGltZS4gVGhlIEludGwgc3lzdGVtIG1heSBjaG9vc2Ugbm90IHRvIGhvbm9yIHRoaXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoKSAvLz0+ICJpbiAxIGRheSIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS50b1JlbGF0aXZlKHsgZGF5czogMSB9KSAvLz0+ICJkZW50cm8gZGUgMSBkw61hIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSh7IGxvY2FsZTogImZyIiB9KSAvLz0+ICJkYW5zIDIzIGhldXJlcyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKCkgLy89PiAiMiBkYXlzIGFnbyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKHsgdW5pdDogImhvdXJzIiB9KSAvLz0+ICI0OCBob3VycyBhZ28iCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGhvdXJzOiAzNiB9KS50b1JlbGF0aXZlKHsgcm91bmQ6IGZhbHNlIH0pIC8vPT4gIjEuNSBkYXlzIGFnbyIKICAgICAqLwogICAgdG9SZWxhdGl2ZShvcHRpb25zID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwogICAgICBjb25zdCBiYXNlID0gb3B0aW9ucy5iYXNlIHx8IERhdGVUaW1lLmZyb21PYmplY3Qoe30sIHsgem9uZTogdGhpcy56b25lIH0pLAogICAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcgPyAodGhpcyA8IGJhc2UgPyAtb3B0aW9ucy5wYWRkaW5nIDogb3B0aW9ucy5wYWRkaW5nKSA6IDA7CiAgICAgIGxldCB1bml0cyA9IFsieWVhcnMiLCAibW9udGhzIiwgImRheXMiLCAiaG91cnMiLCAibWludXRlcyIsICJzZWNvbmRzIl07CiAgICAgIGxldCB1bml0ID0gb3B0aW9ucy51bml0OwogICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnVuaXQpKSB7CiAgICAgICAgdW5pdHMgPSBvcHRpb25zLnVuaXQ7CiAgICAgICAgdW5pdCA9IHVuZGVmaW5lZDsKICAgICAgfQogICAgICByZXR1cm4gZGlmZlJlbGF0aXZlKGJhc2UsIHRoaXMucGx1cyhwYWRkaW5nKSwgewogICAgICAgIC4uLm9wdGlvbnMsCiAgICAgICAgbnVtZXJpYzogImFsd2F5cyIsCiAgICAgICAgdW5pdHMsCiAgICAgICAgdW5pdCwKICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgZGF0ZSByZWxhdGl2ZSB0byB0b2RheSwgc3VjaCBhcyAieWVzdGVyZGF5IiBvciAibmV4dCBtb250aCIuCiAgICAgKiBPbmx5IGludGVybmF0aW9uYWxpemVzIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVuaXQgLSB1c2UgYSBzcGVjaWZpYyB1bml0OyBpZiBvbWl0dGVkLCB0aGUgbWV0aG9kIHdpbGwgcGljayB0aGUgdW5pdC4gVXNlIG9uZSBvZiAieWVhcnMiLCAicXVhcnRlcnMiLCAibW9udGhzIiwgIndlZWtzIiwgb3IgImRheXMiCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoKSAvLz0+ICJ0b21vcnJvdyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKCkgLy89PiAiIm1hw7FhbmEiCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoeyBsb2NhbGU6ICJmciIgfSkgLy89PiAiZGVtYWluIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBkYXlzOiAyIH0pLnRvUmVsYXRpdmVDYWxlbmRhcigpIC8vPT4gIjIgZGF5cyBhZ28iCiAgICAgKi8KICAgIHRvUmVsYXRpdmVDYWxlbmRhcihvcHRpb25zID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwoKICAgICAgcmV0dXJuIGRpZmZSZWxhdGl2ZShvcHRpb25zLmJhc2UgfHwgRGF0ZVRpbWUuZnJvbU9iamVjdCh7fSwgeyB6b25lOiB0aGlzLnpvbmUgfSksIHRoaXMsIHsKICAgICAgICAuLi5vcHRpb25zLAogICAgICAgIG51bWVyaWM6ICJhdXRvIiwKICAgICAgICB1bml0czogWyJ5ZWFycyIsICJtb250aHMiLCAiZGF5cyJdLAogICAgICAgIGNhbGVuZGFyeTogdHJ1ZSwKICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIG1pbiBvZiBzZXZlcmFsIGRhdGUgdGltZXMKICAgICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1pbmltdW0KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWluIERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnQKICAgICAqLwogICAgc3RhdGljIG1pbiguLi5kYXRlVGltZXMpIHsKICAgICAgaWYgKCFkYXRlVGltZXMuZXZlcnkoRGF0ZVRpbWUuaXNEYXRlVGltZSkpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm1pbiByZXF1aXJlcyBhbGwgYXJndW1lbnRzIGJlIERhdGVUaW1lcyIpOwogICAgICB9CiAgICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCAoaSkgPT4gaS52YWx1ZU9mKCksIE1hdGgubWluKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgbWF4IG9mIHNldmVyYWwgZGF0ZSB0aW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIERhdGVUaW1lcyBmcm9tIHdoaWNoIHRvIGNob29zZSB0aGUgbWF4aW11bQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9IHRoZSBtYXggRGF0ZVRpbWUsIG9yIHVuZGVmaW5lZCBpZiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudAogICAgICovCiAgICBzdGF0aWMgbWF4KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIWRhdGVUaW1lcy5ldmVyeShEYXRlVGltZS5pc0RhdGVUaW1lKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibWF4IHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzIik7CiAgICAgIH0KICAgICAgcmV0dXJuIGJlc3RCeShkYXRlVGltZXMsIChpKSA9PiBpLnZhbHVlT2YoKSwgTWF0aC5tYXgpOwogICAgfQoKICAgIC8vIE1JU0MKCiAgICAvKioKICAgICAqIEV4cGxhaW4gaG93IGEgc3RyaW5nIHdvdWxkIGJlIHBhcnNlZCBieSBmcm9tRm9ybWF0KCkKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgdGhlIHN0cmluZyBpcyBleHBlY3RlZCB0byBiZSBpbiAoc2VlIGRlc2NyaXB0aW9uKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRha2VuIGJ5IGZyb21Gb3JtYXQoKQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZnJvbUZvcm1hdEV4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRpb25zLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pOwogICAgICByZXR1cm4gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUZvcm1hdEV4cGxhaW4gaW5zdGVhZAogICAgICovCiAgICBzdGF0aWMgZnJvbVN0cmluZ0V4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXRFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyk7CiAgICB9CgogICAgLy8gRk9STUFUIFBSRVNFVFMKCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgMTAvMTQvMTk4MwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX1NIT1JUKCkgewogICAgICByZXR1cm4gREFURV9TSE9SVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9NRUQoKSB7CiAgICAgIHJldHVybiBEQVRFX01FRDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaSwgT2N0IDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX01FRF9XSVRIX1dFRUtEQVkoKSB7CiAgICAgIHJldHVybiBEQVRFX01FRF9XSVRIX1dFRUtEQVk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX0ZVTEwoKSB7CiAgICAgIHJldHVybiBEQVRFX0ZVTEw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdUdWVzZGF5LCBPY3RvYmVyIDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX0hVR0UoKSB7CiAgICAgIHJldHVybiBEQVRFX0hVR0U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1NJTVBMRSgpIHsKICAgICAgcmV0dXJuIFRJTUVfU0lNUExFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBUSU1FX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1dJVEhfU0hPUlRfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV9XSVRIX1NIT1JUX09GRlNFVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1dJVEhfTE9OR19PRkZTRVQoKSB7CiAgICAgIHJldHVybiBUSU1FX1dJVEhfTE9OR19PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1NJTVBMRSgpIHsKICAgICAgcmV0dXJuIFRJTUVfMjRfU0lNUExFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVEVCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUKCkgewogICAgICByZXR1cm4gREFURVRJTUVfU0hPUlQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9NRUQoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzA6MzMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmksIDE0IE9jdCAxOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MywgOTozMCBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfRlVMTCgpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0ZVTEw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzLCA5OjMwOjMzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpZGF5LCBPY3RvYmVyIDE0LCAxOTgzLCA5OjMwIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9IVUdFKCkgewogICAgICByZXR1cm4gREFURVRJTUVfSFVHRTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaWRheSwgT2N0b2JlciAxNCwgMTk4MywgOTozMDozMyBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUzsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgZnVuY3Rpb24gZnJpZW5kbHlEYXRlVGltZShkYXRlVGltZWlzaCkgewogICAgaWYgKERhdGVUaW1lLmlzRGF0ZVRpbWUoZGF0ZVRpbWVpc2gpKSB7CiAgICAgIHJldHVybiBkYXRlVGltZWlzaDsKICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgZGF0ZVRpbWVpc2gudmFsdWVPZiAmJiBpc051bWJlcihkYXRlVGltZWlzaC52YWx1ZU9mKCkpKSB7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGVUaW1laXNoKTsKICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgdHlwZW9mIGRhdGVUaW1laXNoID09PSAib2JqZWN0IikgewogICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlVGltZWlzaCk7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoCiAgICAgICAgYFVua25vd24gZGF0ZXRpbWUgYXJndW1lbnQ6ICR7ZGF0ZVRpbWVpc2h9LCBvZiB0eXBlICR7dHlwZW9mIGRhdGVUaW1laXNofWAKICAgICAgKTsKICAgIH0KICB9CgogIC8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgLy8gUXVlcnkgU2V0dGluZ3MgLy8KICAvLy8vLy8vLy8vLy8vLy8vLy8vLwogIGNvbnN0IERFRkFVTFRfUVVFUllfU0VUVElOR1MgPSB7CiAgICAgIHJlbmRlck51bGxBczogIlxcLSIsCiAgICAgIHRhc2tDb21wbGV0aW9uVHJhY2tpbmc6IGZhbHNlLAogICAgICB0YXNrQ29tcGxldGlvblVzZUVtb2ppU2hvcnRoYW5kOiBmYWxzZSwKICAgICAgdGFza0NvbXBsZXRpb25UZXh0OiAiY29tcGxldGlvbiIsCiAgICAgIHRhc2tDb21wbGV0aW9uRGF0ZUZvcm1hdDogInl5eXktTU0tZGQiLAogICAgICByZWN1cnNpdmVTdWJUYXNrQ29tcGxldGlvbjogZmFsc2UsCiAgICAgIHdhcm5PbkVtcHR5UmVzdWx0OiB0cnVlLAogICAgICByZWZyZXNoRW5hYmxlZDogdHJ1ZSwKICAgICAgcmVmcmVzaEludGVydmFsOiAyNTAwLAogICAgICBkZWZhdWx0RGF0ZUZvcm1hdDogIk1NTU0gZGQsIHl5eXkiLAogICAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXQ6ICJoOm1tIGEgLSBNTU1NIGRkLCB5eXl5IiwKICAgICAgbWF4UmVjdXJzaXZlUmVuZGVyRGVwdGg6IDQsCiAgICAgIHRhYmxlSWRDb2x1bW5OYW1lOiAiRmlsZSIsCiAgICAgIHRhYmxlR3JvdXBDb2x1bW5OYW1lOiAiR3JvdXAiLAogICAgICBzaG93UmVzdWx0Q291bnQ6IHRydWUsCiAgfTsKICBjb25zdCBERUZBVUxUX0VYUE9SVF9TRVRUSU5HUyA9IHsKICAgICAgYWxsb3dIdG1sOiB0cnVlLAogIH07CiAgLyoqIERlZmF1bHQgc2V0dGluZ3MgZm9yIGRhdGF2aWV3IG9uIGluc3RhbGwuICovCiAgKHsKICAgICAgLi4uREVGQVVMVF9RVUVSWV9TRVRUSU5HUywKICAgICAgLi4uREVGQVVMVF9FWFBPUlRfU0VUVElOR1MsCiAgICAgIC4uLnsKICAgICAgICAgIGlubGluZVF1ZXJ5UHJlZml4OiAiPSIsCiAgICAgICAgICBpbmxpbmVKc1F1ZXJ5UHJlZml4OiAiJD0iLAogICAgICAgICAgaW5saW5lUXVlcmllc0luQ29kZWJsb2NrczogdHJ1ZSwKICAgICAgICAgIGVuYWJsZUlubGluZURhdGF2aWV3OiB0cnVlLAogICAgICAgICAgZW5hYmxlRGF0YXZpZXdKczogZmFsc2UsCiAgICAgICAgICBlbmFibGVJbmxpbmVEYXRhdmlld0pzOiBmYWxzZSwKICAgICAgICAgIHByZXR0eVJlbmRlcklubGluZUZpZWxkczogdHJ1ZSwKICAgICAgICAgIGRhdGF2aWV3SnNLZXl3b3JkOiAiZGF0YXZpZXdqcyIsCiAgICAgIH0sCiAgfSk7CgogIC8qKiBGdW5jdGlvbmFsIHJldHVybiB0eXBlIGZvciBlcnJvciBoYW5kbGluZy4gKi8KICBjbGFzcyBTdWNjZXNzIHsKICAgICAgY29uc3RydWN0b3IodmFsdWUpIHsKICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKICAgICAgICAgIHRoaXMuc3VjY2Vzc2Z1bCA9IHRydWU7CiAgICAgIH0KICAgICAgbWFwKGYpIHsKICAgICAgICAgIHJldHVybiBuZXcgU3VjY2VzcyhmKHRoaXMudmFsdWUpKTsKICAgICAgfQogICAgICBmbGF0TWFwKGYpIHsKICAgICAgICAgIHJldHVybiBmKHRoaXMudmFsdWUpOwogICAgICB9CiAgICAgIG1hcEVycihmKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBiaW1hcChzdWNjLCBfZmFpbCkgewogICAgICAgICAgcmV0dXJuIHRoaXMubWFwKHN1Y2MpOwogICAgICB9CiAgICAgIG9yRWxzZShfdmFsdWUpIHsKICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlOwogICAgICB9CiAgICAgIGNhc3QoKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBvckVsc2VUaHJvdyhfbWVzc2FnZSkgewogICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CiAgICAgIH0KICB9CiAgLyoqIEZ1bmN0aW9uYWwgcmV0dXJuIHR5cGUgZm9yIGVycm9yIGhhbmRsaW5nLiAqLwogIGNsYXNzIEZhaWx1cmUgewogICAgICBjb25zdHJ1Y3RvcihlcnJvcikgewogICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yOwogICAgICAgICAgdGhpcy5zdWNjZXNzZnVsID0gZmFsc2U7CiAgICAgIH0KICAgICAgbWFwKF9mKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBmbGF0TWFwKF9mKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBtYXBFcnIoZikgewogICAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKGYodGhpcy5lcnJvcikpOwogICAgICB9CiAgICAgIGJpbWFwKF9zdWNjLCBmYWlsKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5tYXBFcnIoZmFpbCk7CiAgICAgIH0KICAgICAgb3JFbHNlKHZhbHVlKSB7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgY2FzdCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIG9yRWxzZVRocm93KG1lc3NhZ2UpIHsKICAgICAgICAgIGlmIChtZXNzYWdlKQogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKHRoaXMuZXJyb3IpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyB0aGlzLmVycm9yKTsKICAgICAgfQogIH0KICAvKiogTW9uYWRpYyAnUmVzdWx0JyB0eXBlIHdoaWNoIGVuY2Fwc3VsYXRlcyB3aGV0aGVyIGEgcHJvY2VkdXJlIHN1Y2NlZWRlZCBvciBmYWlsZWQsIGFzIHdlbGwgYXMgaXQncyByZXR1cm4gdmFsdWUuICovCiAgdmFyIFJlc3VsdDsKICAoZnVuY3Rpb24gKFJlc3VsdCkgewogICAgICAvKiogQ29uc3RydWN0IGEgbmV3IHN1Y2Nlc3MgcmVzdWx0IHdyYXBwaW5nIHRoZSBnaXZlbiB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gc3VjY2Vzcyh2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKHZhbHVlKTsKICAgICAgfQogICAgICBSZXN1bHQuc3VjY2VzcyA9IHN1Y2Nlc3M7CiAgICAgIC8qKiBDb25zdHJ1Y3QgYSBuZXcgZmFpbHVyZSB2YWx1ZSB3cmFwcGluZyB0aGUgZ2l2ZW4gZXJyb3IuICovCiAgICAgIGZ1bmN0aW9uIGZhaWx1cmUoZXJyb3IpIHsKICAgICAgICAgIHJldHVybiBuZXcgRmFpbHVyZShlcnJvcik7CiAgICAgIH0KICAgICAgUmVzdWx0LmZhaWx1cmUgPSBmYWlsdXJlOwogICAgICAvKiogSm9pbiB0d28gcmVzdWx0cyB3aXRoIGEgYmktZnVuY3Rpb24gYW5kIHJldHVybiBhIG5ldyByZXN1bHQuICovCiAgICAgIGZ1bmN0aW9uIGZsYXRNYXAyKGZpcnN0LCBzZWNvbmQsIGYpIHsKICAgICAgICAgIGlmIChmaXJzdC5zdWNjZXNzZnVsKSB7CiAgICAgICAgICAgICAgaWYgKHNlY29uZC5zdWNjZXNzZnVsKQogICAgICAgICAgICAgICAgICByZXR1cm4gZihmaXJzdC52YWx1ZSwgc2Vjb25kLnZhbHVlKTsKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlKHNlY29uZC5lcnJvcik7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZShmaXJzdC5lcnJvcik7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgUmVzdWx0LmZsYXRNYXAyID0gZmxhdE1hcDI7CiAgICAgIC8qKiBKb2luIHR3byByZXN1bHRzIHdpdGggYSBiaS1mdW5jdGlvbiBhbmQgcmV0dXJuIGEgbmV3IHJlc3VsdC4gKi8KICAgICAgZnVuY3Rpb24gbWFwMihmaXJzdCwgc2Vjb25kLCBmKSB7CiAgICAgICAgICByZXR1cm4gZmxhdE1hcDIoZmlyc3QsIHNlY29uZCwgKGEsIGIpID0+IHN1Y2Nlc3MoZihhLCBiKSkpOwogICAgICB9CiAgICAgIFJlc3VsdC5tYXAyID0gbWFwMjsKICB9KShSZXN1bHQgfHwgKFJlc3VsdCA9IHt9KSk7CgogIHZhciBjb21tb25qc0dsb2JhbCA9IHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHt9OwoKICB2YXIgcGFyc2ltbW9uX3VtZF9taW4gPSB7ZXhwb3J0czoge319OwoKICBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzOwoKICAoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewogIAkhZnVuY3Rpb24obix0KXttb2R1bGUuZXhwb3J0cz10KCk7fSgidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjpjb21tb25qc0dsb2JhbCxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgdD17fTtmdW5jdGlvbiByKGUpe2lmKHRbZV0pcmV0dXJuIHRbZV0uZXhwb3J0czt2YXIgdT10W2VdPXtpOmUsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gbltlXS5jYWxsKHUuZXhwb3J0cyx1LHUuZXhwb3J0cyxyKSx1Lmw9ITAsdS5leHBvcnRzfXJldHVybiByLm09bixyLmM9dCxyLmQ9ZnVuY3Rpb24obix0LGUpe3IubyhuLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkobix0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6ZX0pO30sci5yPWZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt9LHIubj1mdW5jdGlvbihuKXt2YXIgdD1uJiZuLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gbi5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBufTtyZXR1cm4gci5kKHQsImEiLHQpLHR9LHIubz1mdW5jdGlvbihuLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KX0sci5wPSIiLHIoci5zPTApfShbZnVuY3Rpb24obix0LHIpe2Z1bmN0aW9uIGUobil7aWYoISh0aGlzIGluc3RhbmNlb2YgZSkpcmV0dXJuIG5ldyBlKG4pO3RoaXMuXz1uO312YXIgdT1lLnByb3RvdHlwZTtmdW5jdGlvbiBvKG4sdCl7Zm9yKHZhciByPTA7cjxuO3IrKyl0KHIpO31mdW5jdGlvbiBpKG4sdCxyKXtyZXR1cm4gZnVuY3Rpb24obix0KXtvKHQubGVuZ3RoLGZ1bmN0aW9uKHIpe24odFtyXSxyLHQpO30pO30oZnVuY3Rpb24ocixlLHUpe3Q9bih0LHIsZSx1KTt9LHIpLHR9ZnVuY3Rpb24gYShuLHQpe3JldHVybiBpKGZ1bmN0aW9uKHQscixlLHUpe3JldHVybiB0LmNvbmNhdChbbihyLGUsdSldKX0sW10sdCl9ZnVuY3Rpb24gZihuLHQpe3ZhciByPXt2OjAsYnVmOnR9O3JldHVybiBvKG4sZnVuY3Rpb24oKXt2YXIgbjtyPXt2OnIudjw8MXwobj1yLmJ1ZixuWzBdPj43KSxidWY6ZnVuY3Rpb24obil7dmFyIHQ9aShmdW5jdGlvbihuLHQscixlKXtyZXR1cm4gbi5jb25jYXQocj09PWUubGVuZ3RoLTE/QnVmZmVyLmZyb20oW3QsMF0pLnJlYWRVSW50MTZCRSgwKTplLnJlYWRVSW50MTZCRShyKSl9LFtdLG4pO3JldHVybiBCdWZmZXIuZnJvbShhKGZ1bmN0aW9uKG4pe3JldHVybiAobjw8MSY2NTUzNSk+Pjh9LHQpKX0oci5idWYpfTt9KSxyfWZ1bmN0aW9uIGMoKXtyZXR1cm4gInVuZGVmaW5lZCIhPXR5cGVvZiBCdWZmZXJ9ZnVuY3Rpb24gcygpe2lmKCFjKCkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIgZ2xvYmFsIGRvZXMgbm90IGV4aXN0OyBwbGVhc2UgdXNlIHdlYnBhY2sgaWYgeW91IG5lZWQgdG8gcGFyc2UgQnVmZmVycyBpbiB0aGUgYnJvd3Nlci4iKX1mdW5jdGlvbiBsKG4pe3MoKTt2YXIgdD1pKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4rdH0sMCxuKTtpZih0JTghPTApdGhyb3cgbmV3IEVycm9yKCJUaGUgYml0cyBbIituLmpvaW4oIiwgIikrIl0gYWRkIHVwIHRvICIrdCsiIHdoaWNoIGlzIG5vdCBhbiBldmVuIG51bWJlciBvZiBieXRlczsgdGhlIHRvdGFsIHNob3VsZCBiZSBkaXZpc2libGUgYnkgOCIpO3ZhciByLHU9dC84LG89KHI9ZnVuY3Rpb24obil7cmV0dXJuIG4+NDh9LGkoZnVuY3Rpb24obix0KXtyZXR1cm4gbnx8KHIodCk/dDpuKX0sbnVsbCxuKSk7aWYobyl0aHJvdyBuZXcgRXJyb3IobysiIGJpdCByYW5nZSByZXF1ZXN0ZWQgZXhjZWVkcyA0OCBiaXQgKDYgYnl0ZSkgTnVtYmVyIG1heC4iKTtyZXR1cm4gbmV3IGUoZnVuY3Rpb24odCxyKXt2YXIgZT11K3I7cmV0dXJuIGU+dC5sZW5ndGg/eChyLHUudG9TdHJpbmcoKSsiIGJ5dGVzIik6YihlLGkoZnVuY3Rpb24obix0KXt2YXIgcj1mKHQsbi5idWYpO3JldHVybiB7Y29sbDpuLmNvbGwuY29uY2F0KHIudiksYnVmOnIuYnVmfX0se2NvbGw6W10sYnVmOnQuc2xpY2UocixlKX0sbikuY29sbCl9KX1mdW5jdGlvbiBoKG4sdCl7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKHIsZSl7cmV0dXJuIHMoKSxlK3Q+ci5sZW5ndGg/eChlLHQrIiBieXRlcyBmb3IgIituKTpiKGUrdCxyLnNsaWNlKGUsZSt0KSl9KX1mdW5jdGlvbiBwKG4sdCl7aWYoIm51bWJlciIhPXR5cGVvZihyPXQpfHxNYXRoLmZsb29yKHIpIT09cnx8dDwwfHx0PjYpdGhyb3cgbmV3IEVycm9yKG4rIiByZXF1aXJlcyBpbnRlZ2VyIGxlbmd0aCBpbiByYW5nZSBbMCwgNl0uIik7dmFyIHI7fWZ1bmN0aW9uIGQobil7cmV0dXJuIHAoInVpbnRCRSIsbiksaCgidWludEJFKCIrbisiKSIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50QkUoMCxuKX0pfWZ1bmN0aW9uIHYobil7cmV0dXJuIHAoInVpbnRMRSIsbiksaCgidWludExFKCIrbisiKSIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50TEUoMCxuKX0pfWZ1bmN0aW9uIGcobil7cmV0dXJuIHAoImludEJFIixuKSxoKCJpbnRCRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50QkUoMCxuKX0pfWZ1bmN0aW9uIG0obil7cmV0dXJuIHAoImludExFIixuKSxoKCJpbnRMRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50TEUoMCxuKX0pfWZ1bmN0aW9uIHkobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBlfWZ1bmN0aW9uIEUobil7cmV0dXJuICJbb2JqZWN0IEFycmF5XSI9PT17fS50b1N0cmluZy5jYWxsKG4pfWZ1bmN0aW9uIHcobil7cmV0dXJuIGMoKSYmQnVmZmVyLmlzQnVmZmVyKG4pfWZ1bmN0aW9uIGIobix0KXtyZXR1cm4ge3N0YXR1czohMCxpbmRleDpuLHZhbHVlOnQsZnVydGhlc3Q6LTEsZXhwZWN0ZWQ6W119fWZ1bmN0aW9uIHgobix0KXtyZXR1cm4gRSh0KXx8KHQ9W3RdKSx7c3RhdHVzOiExLGluZGV4Oi0xLHZhbHVlOm51bGwsZnVydGhlc3Q6bixleHBlY3RlZDp0fX1mdW5jdGlvbiBCKG4sdCl7aWYoIXQpcmV0dXJuIG47aWYobi5mdXJ0aGVzdD50LmZ1cnRoZXN0KXJldHVybiBuO3ZhciByPW4uZnVydGhlc3Q9PT10LmZ1cnRoZXN0P2Z1bmN0aW9uKG4sdCl7aWYoZnVuY3Rpb24oKXtpZih2b2lkIDAhPT1lLl9zdXBwb3J0c1NldClyZXR1cm4gZS5fc3VwcG9ydHNTZXQ7dmFyIG49InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQ7cmV0dXJuIGUuX3N1cHBvcnRzU2V0PW4sbn0oKSYmQXJyYXkuZnJvbSl7Zm9yKHZhciByPW5ldyBTZXQobiksdT0wO3U8dC5sZW5ndGg7dSsrKXIuYWRkKHRbdV0pO3ZhciBvPUFycmF5LmZyb20ocik7cmV0dXJuIG8uc29ydCgpLG99Zm9yKHZhciBpPXt9LGE9MDthPG4ubGVuZ3RoO2ErKylpW25bYV1dPSEwO2Zvcih2YXIgZj0wO2Y8dC5sZW5ndGg7ZisrKWlbdFtmXV09ITA7dmFyIGM9W107Zm9yKHZhciBzIGluIGkpKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscykmJmMucHVzaChzKTtyZXR1cm4gYy5zb3J0KCksY30obi5leHBlY3RlZCx0LmV4cGVjdGVkKTp0LmV4cGVjdGVkO3JldHVybiB7c3RhdHVzOm4uc3RhdHVzLGluZGV4Om4uaW5kZXgsdmFsdWU6bi52YWx1ZSxmdXJ0aGVzdDp0LmZ1cnRoZXN0LGV4cGVjdGVkOnJ9fXZhciBqPXt9O2Z1bmN0aW9uIFMobix0KXtpZih3KG4pKXJldHVybiB7b2Zmc2V0OnQsbGluZTotMSxjb2x1bW46LTF9O24gaW4ganx8KGpbbl09e30pO2Zvcih2YXIgcj1qW25dLGU9MCx1PTAsbz0wLGk9dDtpPj0wOyl7aWYoaSBpbiByKXtlPXJbaV0ubGluZSwwPT09byYmKG89cltpXS5saW5lU3RhcnQpO2JyZWFrfSgiXG4iPT09bi5jaGFyQXQoaSl8fCJcciI9PT1uLmNoYXJBdChpKSYmIlxuIiE9PW4uY2hhckF0KGkrMSkpJiYodSsrLDA9PT1vJiYobz1pKzEpKSxpLS07fXZhciBhPWUrdSxmPXQtbztyZXR1cm4gclt0XT17bGluZTphLGxpbmVTdGFydDpvfSx7b2Zmc2V0OnQsbGluZTphKzEsY29sdW1uOmYrMX19ZnVuY3Rpb24gXyhuKXtpZigheShuKSl0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHBhcnNlcjogIituKX1mdW5jdGlvbiBMKG4sdCl7cmV0dXJuICJzdHJpbmciPT10eXBlb2Ygbj9uLmNoYXJBdCh0KTpuW3RdfWZ1bmN0aW9uIE8obil7aWYoIm51bWJlciIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigibm90IGEgbnVtYmVyOiAiK24pfWZ1bmN0aW9uIGsobil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJub3QgYSBmdW5jdGlvbjogIituKX1mdW5jdGlvbiBQKG4pe2lmKCJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZzogIituKX12YXIgcT0yLEE9MyxJPTgsRj01KkksTT00Kkksej0iICAiO2Z1bmN0aW9uIFIobix0KXtyZXR1cm4gbmV3IEFycmF5KHQrMSkuam9pbihuKX1mdW5jdGlvbiBVKG4sdCxyKXt2YXIgZT10LW4ubGVuZ3RoO3JldHVybiBlPD0wP246UihyLGUpK259ZnVuY3Rpb24gVyhuLHQscixlKXtyZXR1cm4ge2Zyb206bi10PjA/bi10OjAsdG86bityPmU/ZTpuK3J9fWZ1bmN0aW9uIEQobix0KXt2YXIgcixlLHUsbyxmLGM9dC5pbmRleCxzPWMub2Zmc2V0LGw9MTtpZihzPT09bi5sZW5ndGgpcmV0dXJuICJHb3QgdGhlIGVuZCBvZiB0aGUgaW5wdXQiO2lmKHcobikpe3ZhciBoPXMtcyVJLHA9cy1oLGQ9VyhoLEYsTStJLG4ubGVuZ3RoKSx2PWEoZnVuY3Rpb24obil7cmV0dXJuIGEoZnVuY3Rpb24obil7cmV0dXJuIFUobi50b1N0cmluZygxNiksMiwiMCIpfSxuKX0sZnVuY3Rpb24obix0KXt2YXIgcj1uLmxlbmd0aCxlPVtdLHU9MDtpZihyPD10KXJldHVybiBbbi5zbGljZSgpXTtmb3IodmFyIG89MDtvPHI7bysrKWVbdV18fGUucHVzaChbXSksZVt1XS5wdXNoKG5bb10pLChvKzEpJXQ9PTAmJnUrKztyZXR1cm4gZX0obi5zbGljZShkLmZyb20sZC50bykudG9KU09OKCkuZGF0YSxJKSk7bz1mdW5jdGlvbihuKXtyZXR1cm4gMD09PW4uZnJvbSYmMT09PW4udG8/e2Zyb206bi5mcm9tLHRvOm4udG99Ontmcm9tOm4uZnJvbS9JLHRvOk1hdGguZmxvb3Iobi50by9JKX19KGQpLGU9aC9JLHI9MypwLHA+PTQmJihyKz0xKSxsPTIsdT1hKGZ1bmN0aW9uKG4pe3JldHVybiBuLmxlbmd0aDw9ND9uLmpvaW4oIiAiKTpuLnNsaWNlKDAsNCkuam9pbigiICIpKyIgICIrbi5zbGljZSg0KS5qb2luKCIgIil9LHYpLChmPSg4KihvLnRvPjA/by50by0xOm8udG8pKS50b1N0cmluZygxNikubGVuZ3RoKTwyJiYoZj0yKTt9ZWxzZSB7dmFyIGc9bi5zcGxpdCgvXHJcbnxbXG5cclx1MjAyOFx1MjAyOV0vKTtyPWMuY29sdW1uLTEsZT1jLmxpbmUtMSxvPVcoZSxxLEEsZy5sZW5ndGgpLHU9Zy5zbGljZShvLmZyb20sby50byksZj1vLnRvLnRvU3RyaW5nKCkubGVuZ3RoO312YXIgbT1lLW8uZnJvbTtyZXR1cm4gdyhuKSYmKGY9KDgqKG8udG8+MD9vLnRvLTE6by50bykpLnRvU3RyaW5nKDE2KS5sZW5ndGgpPDImJihmPTIpLGkoZnVuY3Rpb24odCxlLHUpe3ZhciBpLGE9dT09PW0sYz1hPyI+ICI6ejtyZXR1cm4gaT13KG4pP1UoKDgqKG8uZnJvbSt1KSkudG9TdHJpbmcoMTYpLGYsIjAiKTpVKChvLmZyb20rdSsxKS50b1N0cmluZygpLGYsIiAiKSxbXS5jb25jYXQodCxbYytpKyIgfCAiK2VdLGE/W3orUigiICIsZikrIiB8ICIrVSgiIixyLCIgIikrUigiXiIsbCldOltdKX0sW10sdSkuam9pbigiXG4iKX1mdW5jdGlvbiBOKG4sdCl7cmV0dXJuIFsiXG4iLCItLSBQQVJTSU5HIEZBSUxFRCAiK1IoIi0iLDUwKSwiXG5cbiIsRChuLHQpLCJcblxuIiwocj10LmV4cGVjdGVkLDE9PT1yLmxlbmd0aD8iRXhwZWN0ZWQ6XG5cbiIrclswXToiRXhwZWN0ZWQgb25lIG9mIHRoZSBmb2xsb3dpbmc6IFxuXG4iK3Iuam9pbigiLCAiKSksIlxuIl0uam9pbigiIik7dmFyIHI7fWZ1bmN0aW9uIEcobil7cmV0dXJuIHZvaWQgMCE9PW4uZmxhZ3M/bi5mbGFnczpbbi5nbG9iYWw/ImciOiIiLG4uaWdub3JlQ2FzZT8iaSI6IiIsbi5tdWx0aWxpbmU/Im0iOiIiLG4udW5pY29kZT8idSI6IiIsbi5zdGlja3k/InkiOiIiXS5qb2luKCIiKX1mdW5jdGlvbiBDKCl7Zm9yKHZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PW4ubGVuZ3RoLHI9MDtyPHQ7cis9MSlfKG5bcl0pO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7Zm9yKHZhciB1LG89bmV3IEFycmF5KHQpLGk9MDtpPHQ7aSs9MSl7aWYoISh1PUIobltpXS5fKHIsZSksdSkpLnN0YXR1cylyZXR1cm4gdTtvW2ldPXUudmFsdWUsZT11LmluZGV4O31yZXR1cm4gQihiKGUsbyksdSl9KX1mdW5jdGlvbiBKKCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2lmKDA9PT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoInNlcU1hcCBuZWVkcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTt2YXIgdD1uLnBvcCgpO3JldHVybiBrKHQpLEMuYXBwbHkobnVsbCxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHQuYXBwbHkobnVsbCxuKX0pfWZ1bmN0aW9uIFQoKXt2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdD1uLmxlbmd0aDtpZigwPT09dClyZXR1cm4gWSgiemVybyBhbHRlcm5hdGVzIik7Zm9yKHZhciByPTA7cjx0O3IrPTEpXyhuW3JdKTtyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZSx1PTA7dTxuLmxlbmd0aDt1Kz0xKWlmKChlPUIoblt1XS5fKHQsciksZSkpLnN0YXR1cylyZXR1cm4gZTtyZXR1cm4gZX0pfWZ1bmN0aW9uIFYobix0KXtyZXR1cm4gSChuLHQpLm9yKFgoW10pKX1mdW5jdGlvbiBIKG4sdCl7cmV0dXJuIF8obiksXyh0KSxKKG4sdC50aGVuKG4pLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBbbl0uY29uY2F0KHQpfSl9ZnVuY3Rpb24gSyhuKXtQKG4pO3ZhciB0PSInIituKyInIjtyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PWUrbi5sZW5ndGgsbz1yLnNsaWNlKGUsdSk7cmV0dXJuIG89PT1uP2IodSxvKTp4KGUsdCl9KX1mdW5jdGlvbiBRKG4sdCl7IWZ1bmN0aW9uKG4pe2lmKCEobiBpbnN0YW5jZW9mIFJlZ0V4cCkpdGhyb3cgbmV3IEVycm9yKCJub3QgYSByZWdleHA6ICIrbik7Zm9yKHZhciB0PUcobikscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgZT10LmNoYXJBdChyKTtpZigiaSIhPT1lJiYibSIhPT1lJiYidSIhPT1lJiYicyIhPT1lKXRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgcmVnZXhwIGZsYWcgIicrZSsnIjogJytuKX19KG4pLGFyZ3VtZW50cy5sZW5ndGg+PTI/Tyh0KTp0PTA7dmFyIHI9ZnVuY3Rpb24obil7cmV0dXJuIFJlZ0V4cCgiXig/OiIrbi5zb3VyY2UrIikiLEcobikpfShuKSx1PSIiK247cmV0dXJuIGUoZnVuY3Rpb24obixlKXt2YXIgbz1yLmV4ZWMobi5zbGljZShlKSk7aWYobyl7aWYoMDw9dCYmdDw9by5sZW5ndGgpe3ZhciBpPW9bMF0sYT1vW3RdO3JldHVybiBiKGUraS5sZW5ndGgsYSl9cmV0dXJuIHgoZSwidmFsaWQgbWF0Y2ggZ3JvdXAgKDAgdG8gIitvLmxlbmd0aCsiKSBpbiAiK3UpfXJldHVybiB4KGUsdSl9KX1mdW5jdGlvbiBYKG4pe3JldHVybiBlKGZ1bmN0aW9uKHQscil7cmV0dXJuIGIocixuKX0pfWZ1bmN0aW9uIFkobil7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtyZXR1cm4geChyLG4pfSl9ZnVuY3Rpb24gWihuKXtpZih5KG4pKXJldHVybiBlKGZ1bmN0aW9uKHQscil7dmFyIGU9bi5fKHQscik7cmV0dXJuIGUuaW5kZXg9cixlLnZhbHVlPSIiLGV9KTtpZigic3RyaW5nIj09dHlwZW9mIG4pcmV0dXJuIFooSyhuKSk7aWYobiBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4gWihRKG4pKTt0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZywgcmVnZXhwLCBvciBwYXJzZXI6ICIrbil9ZnVuY3Rpb24gJChuKXtyZXR1cm4gXyhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9bi5fKHQsciksdT10LnNsaWNlKHIsZS5pbmRleCk7cmV0dXJuIGUuc3RhdHVzP3gociwnbm90ICInK3UrJyInKTpiKHIsbnVsbCl9KX1mdW5jdGlvbiBubihuKXtyZXR1cm4gayhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9TCh0LHIpO3JldHVybiByPHQubGVuZ3RoJiZuKGUpP2IocisxLGUpOngociwiYSBjaGFyYWN0ZXIvYnl0ZSBtYXRjaGluZyAiK24pfSl9ZnVuY3Rpb24gdG4obix0KXthcmd1bWVudHMubGVuZ3RoPDImJih0PW4sbj12b2lkIDApO3ZhciByPWUoZnVuY3Rpb24obixlKXtyZXR1cm4gci5fPXQoKS5fLHIuXyhuLGUpfSk7cmV0dXJuIG4/ci5kZXNjKG4pOnJ9ZnVuY3Rpb24gcm4oKXtyZXR1cm4gWSgiZmFudGFzeS1sYW5kL2VtcHR5Iil9dS5wYXJzZT1mdW5jdGlvbihuKXtpZigic3RyaW5nIiE9dHlwZW9mIG4mJiF3KG4pKXRocm93IG5ldyBFcnJvcigiLnBhcnNlIG11c3QgYmUgY2FsbGVkIHdpdGggYSBzdHJpbmcgb3IgQnVmZmVyIGFzIGl0cyBhcmd1bWVudCIpO3ZhciB0LHI9dGhpcy5za2lwKGFuKS5fKG4sMCk7cmV0dXJuIHQ9ci5zdGF0dXM/e3N0YXR1czohMCx2YWx1ZTpyLnZhbHVlfTp7c3RhdHVzOiExLGluZGV4OlMobixyLmZ1cnRoZXN0KSxleHBlY3RlZDpyLmV4cGVjdGVkfSxkZWxldGUgaltuXSx0fSx1LnRyeVBhcnNlPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMucGFyc2Uobik7aWYodC5zdGF0dXMpcmV0dXJuIHQudmFsdWU7dmFyIHI9TihuLHQpLGU9bmV3IEVycm9yKHIpO3Rocm93IGUudHlwZT0iUGFyc2ltbW9uRXJyb3IiLGUucmVzdWx0PXQsZX0sdS5hc3NlcnQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gdGhpcy5jaGFpbihmdW5jdGlvbihyKXtyZXR1cm4gbihyKT9YKHIpOlkodCl9KX0sdS5vcj1mdW5jdGlvbihuKXtyZXR1cm4gVCh0aGlzLG4pfSx1LnRyaW09ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMud3JhcChuLG4pfSx1LndyYXA9ZnVuY3Rpb24obix0KXtyZXR1cm4gSihuLHRoaXMsdCxmdW5jdGlvbihuLHQpe3JldHVybiB0fSl9LHUudGhydT1mdW5jdGlvbihuKXtyZXR1cm4gbih0aGlzKX0sdS50aGVuPWZ1bmN0aW9uKG4pe3JldHVybiBfKG4pLEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMV19KX0sdS5tYW55PWZ1bmN0aW9uKCl7dmFyIG49dGhpcztyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT1bXSx1PXZvaWQgMDs7KXtpZighKHU9QihuLl8odCxyKSx1KSkuc3RhdHVzKXJldHVybiBCKGIocixlKSx1KTtpZihyPT09dS5pbmRleCl0aHJvdyBuZXcgRXJyb3IoImluZmluaXRlIGxvb3AgZGV0ZWN0ZWQgaW4gLm1hbnkoKSBwYXJzZXIgLS0tIGNhbGxpbmcgLm1hbnkoKSBvbiBhIHBhcnNlciB3aGljaCBjYW4gYWNjZXB0IHplcm8gY2hhcmFjdGVycyBpcyB1c3VhbGx5IHRoZSBjYXVzZSIpO3I9dS5pbmRleCxlLnB1c2godS52YWx1ZSk7fX0pfSx1LnRpZVdpdGg9ZnVuY3Rpb24obil7cmV0dXJuIFAobiksdGhpcy5tYXAoZnVuY3Rpb24odCl7aWYoZnVuY3Rpb24obil7aWYoIUUobikpdGhyb3cgbmV3IEVycm9yKCJub3QgYW4gYXJyYXk6ICIrbil9KHQpLHQubGVuZ3RoKXtQKHRbMF0pO2Zvcih2YXIgcj10WzBdLGU9MTtlPHQubGVuZ3RoO2UrKylQKHRbZV0pLHIrPW4rdFtlXTtyZXR1cm4gcn1yZXR1cm4gIiJ9KX0sdS50aWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aWVXaXRoKCIiKX0sdS50aW1lcz1mdW5jdGlvbihuLHQpe3ZhciByPXRoaXM7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9biksTyhuKSxPKHQpLGUoZnVuY3Rpb24oZSx1KXtmb3IodmFyIG89W10saT12b2lkIDAsYT12b2lkIDAsZj0wO2Y8bjtmKz0xKXtpZihhPUIoaT1yLl8oZSx1KSxhKSwhaS5zdGF0dXMpcmV0dXJuIGE7dT1pLmluZGV4LG8ucHVzaChpLnZhbHVlKTt9Zm9yKDtmPHQmJihhPUIoaT1yLl8oZSx1KSxhKSxpLnN0YXR1cyk7Zis9MSl1PWkuaW5kZXgsby5wdXNoKGkudmFsdWUpO3JldHVybiBCKGIodSxvKSxhKX0pfSx1LnJlc3VsdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbn0pfSx1LmF0TW9zdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy50aW1lcygwLG4pfSx1LmF0TGVhc3Q9ZnVuY3Rpb24obil7cmV0dXJuIEoodGhpcy50aW1lcyhuKSx0aGlzLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBuLmNvbmNhdCh0KX0pfSx1Lm1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihiKHUuaW5kZXgsbih1LnZhbHVlKSksdSk6dX0pfSx1LmNvbnRyYW1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10LnBhcnNlKG4oci5zbGljZShlKSkpO3JldHVybiB1LnN0YXR1cz9iKGUrci5sZW5ndGgsdS52YWx1ZSk6dX0pfSx1LnByb21hcD1mdW5jdGlvbihuLHQpe3JldHVybiBrKG4pLGsodCksdGhpcy5jb250cmFtYXAobikubWFwKHQpfSx1LnNraXA9ZnVuY3Rpb24obil7cmV0dXJuIEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19KX0sdS5tYXJrPWZ1bmN0aW9uKCl7cmV0dXJuIEooZW4sdGhpcyxlbixmdW5jdGlvbihuLHQscil7cmV0dXJuIHtzdGFydDpuLHZhbHVlOnQsZW5kOnJ9fSl9LHUubm9kZT1mdW5jdGlvbihuKXtyZXR1cm4gSihlbix0aGlzLGVuLGZ1bmN0aW9uKHQscixlKXtyZXR1cm4ge25hbWU6bix2YWx1ZTpyLHN0YXJ0OnQsZW5kOmV9fSl9LHUuc2VwQnk9ZnVuY3Rpb24obil7cmV0dXJuIFYodGhpcyxuKX0sdS5zZXBCeTE9ZnVuY3Rpb24obil7cmV0dXJuIEgodGhpcyxuKX0sdS5sb29rYWhlYWQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2tpcChaKG4pKX0sdS5ub3RGb2xsb3dlZEJ5PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNraXAoJChuKSl9LHUuZGVzYz1mdW5jdGlvbihuKXtFKG4pfHwobj1bbl0pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXN8fCh1LmV4cGVjdGVkPW4pLHV9KX0sdS5mYWxsYmFjaz1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5vcihYKG4pKX0sdS5hcD1mdW5jdGlvbihuKXtyZXR1cm4gSihuLHRoaXMsZnVuY3Rpb24obix0KXtyZXR1cm4gbih0KX0pfSx1LmNoYWluPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihuKHUudmFsdWUpLl8ocix1LmluZGV4KSx1KTp1fSl9LHUuY29uY2F0PXUub3IsdS5lbXB0eT1ybix1Lm9mPVgsdVsiZmFudGFzeS1sYW5kL2FwIl09dS5hcCx1WyJmYW50YXN5LWxhbmQvY2hhaW4iXT11LmNoYWluLHVbImZhbnRhc3ktbGFuZC9jb25jYXQiXT11LmNvbmNhdCx1WyJmYW50YXN5LWxhbmQvZW1wdHkiXT11LmVtcHR5LHVbImZhbnRhc3ktbGFuZC9vZiJdPXUub2YsdVsiZmFudGFzeS1sYW5kL21hcCJdPXUubWFwO3ZhciBlbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIodCxTKG4sdCkpfSksdW49ZShmdW5jdGlvbihuLHQpe3JldHVybiB0Pj1uLmxlbmd0aD94KHQsImFueSBjaGFyYWN0ZXIvYnl0ZSIpOmIodCsxLEwobix0KSl9KSxvbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIobi5sZW5ndGgsbi5zbGljZSh0KSl9KSxhbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQ8bi5sZW5ndGg/eCh0LCJFT0YiKTpiKHQsbnVsbCl9KSxmbj1RKC9bMC05XS8pLmRlc2MoImEgZGlnaXQiKSxjbj1RKC9bMC05XSovKS5kZXNjKCJvcHRpb25hbCBkaWdpdHMiKSxzbj1RKC9bYS16XS9pKS5kZXNjKCJhIGxldHRlciIpLGxuPVEoL1thLXpdKi9pKS5kZXNjKCJvcHRpb25hbCBsZXR0ZXJzIiksaG49USgvXHMqLykuZGVzYygib3B0aW9uYWwgd2hpdGVzcGFjZSIpLHBuPVEoL1xzKy8pLmRlc2MoIndoaXRlc3BhY2UiKSxkbj1LKCJcciIpLHZuPUsoIlxuIiksZ249SygiXHJcbiIpLG1uPVQoZ24sdm4sZG4pLmRlc2MoIm5ld2xpbmUiKSx5bj1UKG1uLGFuKTtlLmFsbD1vbixlLmFsdD1ULGUuYW55PXVuLGUuY3I9ZG4sZS5jcmVhdGVMYW5ndWFnZT1mdW5jdGlvbihuKXt2YXIgdD17fTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmZnVuY3Rpb24ocil7dFtyXT10bihmdW5jdGlvbigpe3JldHVybiBuW3JdKHQpfSk7fShyKTtyZXR1cm4gdH0sZS5jcmxmPWduLGUuY3VzdG9tPWZ1bmN0aW9uKG4pe3JldHVybiBlKG4oYix4KSl9LGUuZGlnaXQ9Zm4sZS5kaWdpdHM9Y24sZS5lbXB0eT1ybixlLmVuZD15bixlLmVvZj1hbixlLmZhaWw9WSxlLmZvcm1hdEVycm9yPU4sZS5pbmRleD1lbixlLmlzUGFyc2VyPXksZS5sYXp5PXRuLGUubGV0dGVyPXNuLGUubGV0dGVycz1sbixlLmxmPXZuLGUubG9va2FoZWFkPVosZS5tYWtlRmFpbHVyZT14LGUubWFrZVN1Y2Nlc3M9YixlLm5ld2xpbmU9bW4sZS5ub25lT2Y9ZnVuY3Rpb24obil7cmV0dXJuIG5uKGZ1bmN0aW9uKHQpe3JldHVybiBuLmluZGV4T2YodCk8MH0pLmRlc2MoIm5vbmUgb2YgJyIrbisiJyIpfSxlLm5vdEZvbGxvd2VkQnk9JCxlLm9mPVgsZS5vbmVPZj1mdW5jdGlvbihuKXtmb3IodmFyIHQ9bi5zcGxpdCgiIikscj0wO3I8dC5sZW5ndGg7cisrKXRbcl09IiciK3Rbcl0rIiciO3JldHVybiBubihmdW5jdGlvbih0KXtyZXR1cm4gbi5pbmRleE9mKHQpPj0wfSkuZGVzYyh0KX0sZS5vcHRXaGl0ZXNwYWNlPWhuLGUuUGFyc2VyPWUsZS5yYW5nZT1mdW5jdGlvbihuLHQpe3JldHVybiBubihmdW5jdGlvbihyKXtyZXR1cm4gbjw9ciYmcjw9dH0pLmRlc2MobisiLSIrdCl9LGUucmVnZXg9USxlLnJlZ2V4cD1RLGUuc2VwQnk9VixlLnNlcEJ5MT1ILGUuc2VxPUMsZS5zZXFNYXA9SixlLnNlcU9iaj1mdW5jdGlvbigpe2Zvcih2YXIgbix0PXt9LHI9MCx1PShuPWFyZ3VtZW50cyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKSksbz11Lmxlbmd0aCxpPTA7aTxvO2krPTEpe3ZhciBhPXVbaV07aWYoIXkoYSkpe2lmKEUoYSkmJjI9PT1hLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBhWzBdJiZ5KGFbMV0pKXt2YXIgZj1hWzBdO2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGYpKXRocm93IG5ldyBFcnJvcigic2VxT2JqOiBkdXBsaWNhdGUga2V5ICIrZik7dFtmXT0hMCxyKys7Y29udGludWV9dGhyb3cgbmV3IEVycm9yKCJzZXFPYmogYXJndW1lbnRzIG11c3QgYmUgcGFyc2VycyBvciBbc3RyaW5nLCBwYXJzZXJdIGFycmF5IHBhaXJzLiIpfX1pZigwPT09cil0aHJvdyBuZXcgRXJyb3IoInNlcU9iaiBleHBlY3RzIGF0IGxlYXN0IG9uZSBuYW1lZCBwYXJzZXIsIGZvdW5kIHplcm8iKTtyZXR1cm4gZShmdW5jdGlvbihuLHQpe2Zvcih2YXIgcixlPXt9LGk9MDtpPG87aSs9MSl7dmFyIGEsZjtpZihFKHVbaV0pPyhhPXVbaV1bMF0sZj11W2ldWzFdKTooYT1udWxsLGY9dVtpXSksIShyPUIoZi5fKG4sdCkscikpLnN0YXR1cylyZXR1cm4gcjthJiYoZVthXT1yLnZhbHVlKSx0PXIuaW5kZXg7fXJldHVybiBCKGIodCxlKSxyKX0pfSxlLnN0cmluZz1LLGUuc3VjY2VlZD1YLGUudGFrZVdoaWxlPWZ1bmN0aW9uKG4pe3JldHVybiBrKG4pLGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9cjtlPHQubGVuZ3RoJiZuKEwodCxlKSk7KWUrKztyZXR1cm4gYihlLHQuc2xpY2UocixlKSl9KX0sZS50ZXN0PW5uLGUud2hpdGVzcGFjZT1wbixlWyJmYW50YXN5LWxhbmQvZW1wdHkiXT1ybixlWyJmYW50YXN5LWxhbmQvb2YiXT1YLGUuQmluYXJ5PXtiaXRTZXE6bCxiaXRTZXFPYmo6ZnVuY3Rpb24obil7cygpO3ZhciB0PXt9LHI9MCxlPWEoZnVuY3Rpb24obil7aWYoRShuKSl7dmFyIGU9bjtpZigyIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJbIitlLmpvaW4oIiwgIikrIl0gc2hvdWxkIGJlIGxlbmd0aCAyLCBnb3QgbGVuZ3RoICIrZS5sZW5ndGgpO2lmKFAoZVswXSksTyhlWzFdKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlWzBdKSl0aHJvdyBuZXcgRXJyb3IoImR1cGxpY2F0ZSBrZXkgaW4gYml0U2VxT2JqOiAiK2VbMF0pO3JldHVybiB0W2VbMF1dPSEwLHIrKyxlfXJldHVybiBPKG4pLFtudWxsLG5dfSxuKTtpZihyPDEpdGhyb3cgbmV3IEVycm9yKCJiaXRTZXFPYmogZXhwZWN0cyBhdCBsZWFzdCBvbmUgbmFtZWQgcGFpciwgZ290IFsiK24uam9pbigiLCAiKSsiXSIpO3ZhciB1PWEoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19LGUpO3JldHVybiBsKGEoZnVuY3Rpb24obil7cmV0dXJuIG5bMV19LGUpKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIGkoZnVuY3Rpb24obix0KXtyZXR1cm4gbnVsbCE9PXRbMF0mJihuW3RbMF1dPXRbMV0pLG59LHt9LGEoZnVuY3Rpb24odCxyKXtyZXR1cm4gW3QsbltyXV19LHUpKX0pfSxieXRlOmZ1bmN0aW9uKG4pe2lmKHMoKSxPKG4pLG4+MjU1KXRocm93IG5ldyBFcnJvcigiVmFsdWUgc3BlY2lmaWVkIHRvIGJ5dGUgY29uc3RydWN0b3IgKCIrbisiPTB4IituLnRvU3RyaW5nKDE2KSsiKSBpcyBsYXJnZXIgaW4gdmFsdWUgdGhhbiBhIHNpbmdsZSBieXRlLiIpO3ZhciB0PShuPjE1PyIweCI6IjB4MCIpK24udG9TdHJpbmcoMTYpO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9TChyLGUpO3JldHVybiB1PT09bj9iKGUrMSx1KTp4KGUsdCl9KX0sYnVmZmVyOmZ1bmN0aW9uKG4pe3JldHVybiBoKCJidWZmZXIiLG4pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gQnVmZmVyLmZyb20obil9KX0sZW5jb2RlZFN0cmluZzpmdW5jdGlvbihuLHQpe3JldHVybiBoKCJzdHJpbmciLHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZyhuKX0pfSx1aW50QkU6ZCx1aW50OEJFOmQoMSksdWludDE2QkU6ZCgyKSx1aW50MzJCRTpkKDQpLHVpbnRMRTp2LHVpbnQ4TEU6digxKSx1aW50MTZMRTp2KDIpLHVpbnQzMkxFOnYoNCksaW50QkU6ZyxpbnQ4QkU6ZygxKSxpbnQxNkJFOmcoMiksaW50MzJCRTpnKDQpLGludExFOm0saW50OExFOm0oMSksaW50MTZMRTptKDIpLGludDMyTEU6bSg0KSxmbG9hdEJFOmgoImZsb2F0QkUiLDQpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRmxvYXRCRSgwKX0pLGZsb2F0TEU6aCgiZmxvYXRMRSIsNCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWRGbG9hdExFKDApfSksZG91YmxlQkU6aCgiZG91YmxlQkUiLDgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRG91YmxlQkUoMCl9KSxkb3VibGVMRTpoKCJkb3VibGVMRSIsOCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWREb3VibGVMRSgwKX0pfSxuLmV4cG9ydHM9ZTt9XSl9KTsgCiAgfSAocGFyc2ltbW9uX3VtZF9taW4sIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMpKTsKCiAgdmFyIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cyA9IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHM7CgogIHZhciBlbW9qaVJlZ2V4ID0gKCkgPT4gewogIAkvLyBodHRwczovL210aHMuYmUvZW1vamkKICAJcmV0dXJuIC9bIyowLTldXHVGRTBGP1x1MjBFM3xbXHhBOVx4QUVcdTIwM0NcdTIwNDlcdTIxMjJcdTIxMzlcdTIxOTQtXHUyMTk5XHUyMUE5XHUyMUFBXHUyMzFBXHUyMzFCXHUyMzI4XHUyM0NGXHUyM0VELVx1MjNFRlx1MjNGMVx1MjNGMlx1MjNGOC1cdTIzRkFcdTI0QzJcdTI1QUFcdTI1QUJcdTI1QjZcdTI1QzBcdTI1RkJcdTI1RkNcdTI1RkVcdTI2MDAtXHUyNjA0XHUyNjBFXHUyNjExXHUyNjE0XHUyNjE1XHUyNjE4XHUyNjIwXHUyNjIyXHUyNjIzXHUyNjI2XHUyNjJBXHUyNjJFXHUyNjJGXHUyNjM4LVx1MjYzQVx1MjY0MFx1MjY0Mlx1MjY0OC1cdTI2NTNcdTI2NUZcdTI2NjBcdTI2NjNcdTI2NjVcdTI2NjZcdTI2NjhcdTI2N0JcdTI2N0VcdTI2N0ZcdTI2OTJcdTI2OTQtXHUyNjk3XHUyNjk5XHUyNjlCXHUyNjlDXHUyNkEwXHUyNkE3XHUyNkFBXHUyNkIwXHUyNkIxXHUyNkJEXHUyNkJFXHUyNkM0XHUyNkM4XHUyNkNGXHUyNkQxXHUyNkQzXHUyNkU5XHUyNkYwLVx1MjZGNVx1MjZGN1x1MjZGOFx1MjZGQVx1MjcwMlx1MjcwOFx1MjcwOVx1MjcwRlx1MjcxMlx1MjcxNFx1MjcxNlx1MjcxRFx1MjcyMVx1MjczM1x1MjczNFx1Mjc0NFx1Mjc0N1x1Mjc1N1x1Mjc2M1x1MjdBMVx1MjkzNFx1MjkzNVx1MkIwNS1cdTJCMDdcdTJCMUJcdTJCMUNcdTJCNTVcdTMwMzBcdTMwM0RcdTMyOTdcdTMyOTldXHVGRTBGP3xbXHUyNjFEXHUyNzBDXHUyNzBEXSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHUyNzBBXHUyNzBCXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/fFtcdTIzRTktXHUyM0VDXHUyM0YwXHUyM0YzXHUyNUZEXHUyNjkzXHUyNkExXHUyNkFCXHUyNkM1XHUyNkNFXHUyNkQ0XHUyNkVBXHUyNkZEXHUyNzA1XHUyNzI4XHUyNzRDXHUyNzRFXHUyNzUzLVx1Mjc1NVx1Mjc5NS1cdTI3OTdcdTI3QjBcdTI3QkZcdTJCNTBdfFx1MjZGOSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFx1Mjc2NFx1RkUwRj8oPzpcdTIwMEQoPzpcdUQ4M0RcdUREMjV8XHVEODNFXHVERTc5KSk/fFx1RDgzQyg/OltcdURDMDRcdURENzBcdURENzFcdUREN0VcdUREN0ZcdURFMDJcdURFMzdcdURGMjFcdURGMjQtXHVERjJDXHVERjM2XHVERjdEXHVERjk2XHVERjk3XHVERjk5LVx1REY5Qlx1REY5RVx1REY5Rlx1REZDRFx1REZDRVx1REZENC1cdURGREZcdURGRjVcdURGRjddXHVGRTBGP3xbXHVERjg1XHVERkMyXHVERkM3XSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/fFtcdURGQzNcdURGQzRcdURGQ0FdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVERkNCXHVERkNDXSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFtcdURDQ0ZcdUREOEVcdUREOTEtXHVERDlBXHVERTAxXHVERTFBXHVERTJGXHVERTMyLVx1REUzNlx1REUzOC1cdURFM0FcdURFNTBcdURFNTFcdURGMDAtXHVERjIwXHVERjJELVx1REYzNVx1REYzNy1cdURGN0NcdURGN0UtXHVERjg0XHVERjg2LVx1REY5M1x1REZBMC1cdURGQzFcdURGQzVcdURGQzZcdURGQzhcdURGQzlcdURGQ0YtXHVERkQzXHVERkUwLVx1REZGMFx1REZGOC1cdURGRkZdfFx1RERFNlx1RDgzQ1tcdURERTgtXHVEREVDXHVEREVFXHVEREYxXHVEREYyXHVEREY0XHVEREY2LVx1RERGQVx1RERGQ1x1RERGRFx1RERGRl18XHVEREU3XHVEODNDW1x1RERFNlx1RERFN1x1RERFOS1cdURERUZcdURERjEtXHVEREY0XHVEREY2LVx1RERGOVx1RERGQlx1RERGQ1x1RERGRVx1RERGRl18XHVEREU4XHVEODNDW1x1RERFNlx1RERFOFx1RERFOVx1RERFQi1cdURERUVcdURERjAtXHVEREY1XHVEREY3XHVEREZBLVx1RERGRl18XHVEREU5XHVEODNDW1x1RERFQVx1RERFQ1x1RERFRlx1RERGMFx1RERGMlx1RERGNFx1RERGRl18XHVEREVBXHVEODNDW1x1RERFNlx1RERFOFx1RERFQVx1RERFQ1x1RERFRFx1RERGNy1cdURERkFdfFx1RERFQlx1RDgzQ1tcdURERUUtXHVEREYwXHVEREYyXHVEREY0XHVEREY3XXxcdURERUNcdUQ4M0NbXHVEREU2XHVEREU3XHVEREU5LVx1RERFRVx1RERGMS1cdURERjNcdURERjUtXHVEREZBXHVEREZDXHVEREZFXXxcdURERURcdUQ4M0NbXHVEREYwXHVEREYyXHVEREYzXHVEREY3XHVEREY5XHVEREZBXXxcdURERUVcdUQ4M0NbXHVEREU4LVx1RERFQVx1RERGMS1cdURERjRcdURERjYtXHVEREY5XXxcdURERUZcdUQ4M0NbXHVEREVBXHVEREYyXHVEREY0XHVEREY1XXxcdURERjBcdUQ4M0NbXHVEREVBXHVEREVDLVx1RERFRVx1RERGMlx1RERGM1x1RERGNVx1RERGN1x1RERGQ1x1RERGRVx1RERGRl18XHVEREYxXHVEODNDW1x1RERFNi1cdURERThcdURERUVcdURERjBcdURERjctXHVEREZCXHVEREZFXXxcdURERjJcdUQ4M0NbXHVEREU2XHVEREU4LVx1RERFRFx1RERGMC1cdURERkZdfFx1RERGM1x1RDgzQ1tcdURERTZcdURERThcdURERUEtXHVEREVDXHVEREVFXHVEREYxXHVEREY0XHVEREY1XHVEREY3XHVEREZBXHVEREZGXXxcdURERjRcdUQ4M0NcdURERjJ8XHVEREY1XHVEODNDW1x1RERFNlx1RERFQS1cdURERURcdURERjAtXHVEREYzXHVEREY3LVx1RERGOVx1RERGQ1x1RERGRV18XHVEREY2XHVEODNDXHVEREU2fFx1RERGN1x1RDgzQ1tcdURERUFcdURERjRcdURERjhcdURERkFcdURERkNdfFx1RERGOFx1RDgzQ1tcdURERTYtXHVEREVBXHVEREVDLVx1RERGNFx1RERGNy1cdURERjlcdURERkJcdURERkQtXHVEREZGXXxcdURERjlcdUQ4M0NbXHVEREU2XHVEREU4XHVEREU5XHVEREVCLVx1RERFRFx1RERFRi1cdURERjRcdURERjdcdURERjlcdURERkJcdURERkNcdURERkZdfFx1RERGQVx1RDgzQ1tcdURERTZcdURERUNcdURERjJcdURERjNcdURERjhcdURERkVcdURERkZdfFx1RERGQlx1RDgzQ1tcdURERTZcdURERThcdURERUFcdURERUNcdURERUVcdURERjNcdURERkFdfFx1RERGQ1x1RDgzQ1tcdURERUJcdURERjhdfFx1RERGRFx1RDgzQ1x1RERGMHxcdURERkVcdUQ4M0NbXHVEREVBXHVEREY5XXxcdURERkZcdUQ4M0NbXHVEREU2XHVEREYyXHVEREZDXXxcdURGRjNcdUZFMEY/KD86XHUyMDBEKD86XHUyNkE3XHVGRTBGP3xcdUQ4M0NcdURGMDgpKT98XHVERkY0KD86XHUyMDBEXHUyNjIwXHVGRTBGP3xcdURCNDBcdURDNjdcdURCNDBcdURDNjJcdURCNDAoPzpcdURDNjVcdURCNDBcdURDNkVcdURCNDBcdURDNjd8XHVEQzczXHVEQjQwXHVEQzYzXHVEQjQwXHVEQzc0fFx1REM3N1x1REI0MFx1REM2Q1x1REI0MFx1REM3MylcdURCNDBcdURDN0YpPyl8XHVEODNEKD86W1x1REMwOFx1REMyNl0oPzpcdTIwMERcdTJCMUIpP3xbXHVEQzNGXHVEQ0ZEXHVERDQ5XHVERDRBXHVERDZGXHVERDcwXHVERDczXHVERDc2LVx1REQ3OVx1REQ4N1x1REQ4QS1cdUREOERcdUREQTVcdUREQThcdUREQjFcdUREQjJcdUREQkNcdUREQzItXHVEREM0XHVEREQxLVx1REREM1x1REREQy1cdUREREVcdURERTFcdURERTNcdURERThcdURERUZcdURERjNcdURERkFcdURFQ0JcdURFQ0QtXHVERUNGXHVERUUwLVx1REVFNVx1REVFOVx1REVGMFx1REVGM11cdUZFMEY/fFtcdURDNDJcdURDNDNcdURDNDYtXHVEQzUwXHVEQzY2XHVEQzY3XHVEQzZCLVx1REM2RFx1REM3Mlx1REM3NC1cdURDNzZcdURDNzhcdURDN0NcdURDODNcdURDODVcdURDOEZcdURDOTFcdURDQUFcdUREN0FcdUREOTVcdUREOTZcdURFNENcdURFNEZcdURFQzBcdURFQ0NdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REM2RVx1REM3MFx1REM3MVx1REM3M1x1REM3N1x1REM4MVx1REM4Mlx1REM4Nlx1REM4N1x1REU0NS1cdURFNDdcdURFNEJcdURFNERcdURFNEVcdURFQTNcdURFQjQtXHVERUI2XSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1REQ3NFx1REQ5MF0oPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REMwMC1cdURDMDdcdURDMDktXHVEQzE0XHVEQzE2LVx1REMyNVx1REMyNy1cdURDM0FcdURDM0MtXHVEQzNFXHVEQzQwXHVEQzQ0XHVEQzQ1XHVEQzUxLVx1REM2NVx1REM2QVx1REM3OS1cdURDN0JcdURDN0QtXHVEQzgwXHVEQzg0XHVEQzg4LVx1REM4RVx1REM5MFx1REM5Mi1cdURDQTlcdURDQUItXHVEQ0ZDXHVEQ0ZGLVx1REQzRFx1REQ0Qi1cdURENEVcdURENTAtXHVERDY3XHVEREE0XHVEREZCLVx1REUyRFx1REUyRi1cdURFMzRcdURFMzctXHVERTQ0XHVERTQ4LVx1REU0QVx1REU4MC1cdURFQTJcdURFQTQtXHVERUIzXHVERUI3LVx1REVCRlx1REVDMS1cdURFQzVcdURFRDAtXHVERUQyXHVERUQ1LVx1REVEN1x1REVEQy1cdURFREZcdURFRUJcdURFRUNcdURFRjQtXHVERUZDXHVERkUwLVx1REZFQlx1REZGMF18XHVEQzE1KD86XHUyMDBEXHVEODNFXHVEREJBKT98XHVEQzNCKD86XHUyMDBEXHUyNzQ0XHVGRTBGPyk/fFx1REM0MVx1RkUwRj8oPzpcdTIwMERcdUQ4M0RcdURERThcdUZFMEY/KT98XHVEQzY4KD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OHxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XVx1MjAwRFx1RDgzRCg/Olx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pfFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDKD86XHVERkZCKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OFx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEXHVEQzY4XHVEODNDW1x1REZGQy1cdURGRkZdKSkpP3xcdURGRkMoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCXHVERkZELVx1REZGRl0pKSk/fFx1REZGRCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKSkpP3xcdURGRkUoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRFx1REZGRl0pKSk/fFx1REZGRig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkItXHVERkZFXSkpKT8pKT98XHVEQzY5KD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1tcdURDNjhcdURDNjldfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRCg/OltcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT98XHVEQzY5XHUyMDBEXHVEODNEKD86XHVEQzY2KD86XHUyMDBEXHVEODNEXHVEQzY2KT98XHVEQzY3KD86XHUyMDBEXHVEODNEW1x1REM2Nlx1REM2N10pPykpfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDKD86XHVERkZCKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XXxcdURDOEJcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldXHVEODNDW1x1REZGQy1cdURGRkZdKSkpP3xcdURGRkMoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCXHVERkZELVx1REZGRl0pKSk/fFx1REZGRCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKSkpP3xcdURGRkUoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCLVx1REZGRFx1REZGRl0pKSk/fFx1REZGRig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkItXHVERkZFXSkpKT8pKT98XHVEQzZGKD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98XHVERDc1KD86XHVGRTBGfFx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98XHVERTJFKD86XHUyMDBEXHVEODNEXHVEQ0E4KT98XHVERTM1KD86XHUyMDBEXHVEODNEXHVEQ0FCKT98XHVERTM2KD86XHUyMDBEXHVEODNDXHVERjJCXHVGRTBGPyk/KXxcdUQ4M0UoPzpbXHVERDBDXHVERDBGXHVERDE4LVx1REQxRlx1REQzMC1cdUREMzRcdUREMzZcdURENzdcdUREQjVcdUREQjZcdUREQkJcdURERDJcdURERDNcdURERDVcdURFQzMtXHVERUM1XHVERUYwXHVERUYyLVx1REVGOF0oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVERDI2XHVERDM1XHVERDM3LVx1REQzOVx1REQzRFx1REQzRVx1RERCOFx1RERCOVx1RERDRC1cdUREQ0ZcdURERDRcdURERDYtXHVEREREXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1RERERVx1RERERl0oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVERDBEXHVERDBFXHVERDEwLVx1REQxN1x1REQyMC1cdUREMjVcdUREMjctXHVERDJGXHVERDNBXHVERDNGLVx1REQ0NVx1REQ0Ny1cdURENzZcdURENzgtXHVEREI0XHVEREI3XHVEREJBXHVEREJDLVx1RERDQ1x1REREMFx1RERFMC1cdURERkZcdURFNzAtXHVERTdDXHVERTgwLVx1REU4OFx1REU5MC1cdURFQkRcdURFQkYtXHVERUMyXHVERUNFLVx1REVEQlx1REVFMC1cdURFRThdfFx1REQzQyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGP3xcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xcdURERDEoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMSkpfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT9cdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZDLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQlx1REZGQ1x1REZGRVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZEXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkVdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZCLVx1REZGRl0pKSk/KSk/fFx1REVGMSg/Olx1RDgzQyg/Olx1REZGQig/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkMtXHVERkZGXSk/fFx1REZGQyg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXSk/fFx1REZGRCg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKT98XHVERkZFKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKT98XHVERkZGKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkVdKT8pKT8pL2c7CiAgfTsKCiAgLyoqIE5vcm1hbGl6ZSBhIGR1cmF0aW9uIHRvIGFsbCBvZiB0aGUgcHJvcGVyIHVuaXRzLiAqLwogIGZ1bmN0aW9uIG5vcm1hbGl6ZUR1cmF0aW9uKGR1cikgewogICAgICBpZiAoZHVyID09PSB1bmRlZmluZWQgfHwgZHVyID09PSBudWxsKQogICAgICAgICAgcmV0dXJuIGR1cjsKICAgICAgcmV0dXJuIGR1ci5zaGlmdFRvQWxsKCkubm9ybWFsaXplKCk7CiAgfQogIC8qKiBTdHJpcCB0aGUgdGltZSBjb21wb25lbnRzIG9mIGEgZGF0ZSB0aW1lIG9iamVjdC4gKi8KICBmdW5jdGlvbiBzdHJpcFRpbWUoZHQpIHsKICAgICAgaWYgKGR0ID09PSBudWxsIHx8IGR0ID09PSB1bmRlZmluZWQpCiAgICAgICAgICByZXR1cm4gZHQ7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KHsKICAgICAgICAgIHllYXI6IGR0LnllYXIsCiAgICAgICAgICBtb250aDogZHQubW9udGgsCiAgICAgICAgICBkYXk6IGR0LmRheSwKICAgICAgfSk7CiAgfQogIC8qKiBUcnkgdG8gZXh0cmFjdCBhIFlZWVlNTUREIGRhdGUgZnJvbSBhIHN0cmluZy4gKi8KICBmdW5jdGlvbiBleHRyYWN0RGF0ZShzdHIpIHsKICAgICAgbGV0IGRhdGVNYXRjaCA9IC8oXGR7NH0pLShcZHsyfSktKFxkezJ9KS8uZXhlYyhzdHIpOwogICAgICBpZiAoIWRhdGVNYXRjaCkKICAgICAgICAgIGRhdGVNYXRjaCA9IC8oXGR7NH0pKFxkezJ9KShcZHsyfSkvLmV4ZWMoc3RyKTsKICAgICAgaWYgKGRhdGVNYXRjaCkgewogICAgICAgICAgbGV0IHllYXIgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzFdKTsKICAgICAgICAgIGxldCBtb250aCA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbMl0pOwogICAgICAgICAgbGV0IGRheSA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbM10pOwogICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyLCBtb250aCwgZGF5IH0pOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgfQogIC8qKiBHZXQgdGhlIGZvbGRlciBjb250YWluaW5nIHRoZSBnaXZlbiBwYXRoIChpLmUuLCBsaWtlIGNvbXB1dGluZyAncGF0aC8uLicpLiAqLwogIGZ1bmN0aW9uIGdldFBhcmVudEZvbGRlcihwYXRoKSB7CiAgICAgIHJldHVybiBwYXRoLnNwbGl0KCIvIikuc2xpY2UoMCwgLTEpLmpvaW4oIi8iKTsKICB9CiAgLyoqIEdldCB0aGUgInRpdGxlIiBmb3IgYSBmaWxlLCBieSBzdHJpcHBpbmcgb3RoZXIgcGFydHMgb2YgdGhlIHBhdGggYXMgd2VsbCBhcyB0aGUgZXh0ZW5zaW9uLiAqLwogIGZ1bmN0aW9uIGdldEZpbGVUaXRsZShwYXRoKSB7CiAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCIvIikpCiAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZigiLyIpICsgMSk7CiAgICAgIGlmIChwYXRoLmVuZHNXaXRoKCIubWQiKSkKICAgICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIDMpOwogICAgICByZXR1cm4gcGF0aDsKICB9CiAgLyoqIEdldCB0aGUgZXh0ZW5zaW9uIG9mIGEgZmlsZSBmcm9tIHRoZSBmaWxlIHBhdGguICovCiAgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uKHBhdGgpIHsKICAgICAgaWYgKCFwYXRoLmluY2x1ZGVzKCIuIikpCiAgICAgICAgICByZXR1cm4gIiI7CiAgICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhwYXRoLmxhc3RJbmRleE9mKCIuIikgKyAxKTsKICB9CiAgLyoqIFBhcnNlIGFsbCBzdWJ0YWdzIG91dCBvZiB0aGUgZ2l2ZW4gdGFnLiBJLmUuLCAjaGVsbG8vaS9hbSB3b3VsZCB5aWVsZCBbI2hlbGxvL2kvYW0sICNoZWxsby9pLCAjaGVsbG9dLiAqLwogIGZ1bmN0aW9uIGV4dHJhY3RTdWJ0YWdzKHRhZykgewogICAgICBsZXQgcmVzdWx0ID0gW3RhZ107CiAgICAgIHdoaWxlICh0YWcuaW5jbHVkZXMoIi8iKSkgewogICAgICAgICAgdGFnID0gdGFnLnN1YnN0cmluZygwLCB0YWcubGFzdEluZGV4T2YoIi8iKSk7CiAgICAgICAgICByZXN1bHQucHVzaCh0YWcpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQogIC8qKiBBIHBhcnNpbW1vbiBwYXJzZXIgd2hpY2ggY2Fub25pY2FsaXplcyB2YXJpYWJsZSBuYW1lcyB3aGlsZSBwcm9wZXJseSByZXNwZWN0aW5nIGVtb2ppLiAqLwogIGNvbnN0IFZBUl9OQU1FX0NBTk9OSUNBTElaRVIgPSBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgIiIpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4KC9bMC05XHB7TGV0dGVyfV8tXSsvdSkubWFwKHN0ciA9PiBzdHIudG9Mb2NhbGVMb3dlckNhc2UoKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy53aGl0ZXNwYWNlLm1hcChfID0+ICItIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbnkubWFwKF8gPT4gIiIpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocmVzdWx0ID0+IHJlc3VsdC5qb2luKCIiKSk7CiAgLyoqIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhcmlhYmxlIG5hbWUgaW50byBzb21ldGhpbmcgSlMvcXVlcnkgZnJpZW5kbHkuICovCiAgZnVuY3Rpb24gY2Fub25pY2FsaXplVmFyTmFtZShuYW1lKSB7CiAgICAgIHJldHVybiBWQVJfTkFNRV9DQU5PTklDQUxJWkVSLnRyeVBhcnNlKG5hbWUpOwogIH0KICBjb25zdCBIRUFERVJfQ0FOT05JQ0FMSVpFUiA9IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4KG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIikpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXgoL1swLTlccHtMZXR0ZXJ9Xy1dKy91KSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLndoaXRlc3BhY2UubWFwKF8gPT4gIiAiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFueS5tYXAoXyA9PiAiICIpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocmVzdWx0ID0+IHsKICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCIiKS5zcGxpdCgvXHMrLykuam9pbigiICIpLnRyaW0oKTsKICB9KTsKICAvKioKICAgKiBOb3JtYWxpemVzIHRoZSB0ZXh0IGluIGEgaGVhZGVyIHRvIGJlIHNvbWV0aGluZyB0aGF0IGlzIGFjdHVhbGx5IGxpbmthYmxlIHRvLiBUaGlzIG1pbWljcwogICAqIGhvdyBPYnNpZGlhbiBkb2VzIGl0J3Mgbm9ybWFsaXphdGlvbiwgY29sbGFwc2luZyByZXBlYXRlZCBzcGFjZXMgYW5kIHN0cmlwcGluZyBvdXQgY29udHJvbCBjaGFyYWN0ZXJzLgogICAqLwogIGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlckZvckxpbmsoaGVhZGVyKSB7CiAgICAgIHJldHVybiBIRUFERVJfQ0FOT05JQ0FMSVpFUi50cnlQYXJzZShoZWFkZXIpOwogIH0KICAvKiogUmVuZGVyIGEgZHVyYXRpb24gaW4gYSBtaW5pbWFsIGZvcm1hdCB0byBzYXZlIHNwYWNlLiAqLwogIGZ1bmN0aW9uIHJlbmRlck1pbmltYWxEdXJhdGlvbihkdXIpIHsKICAgICAgZHVyID0gbm9ybWFsaXplRHVyYXRpb24oZHVyKTsKICAgICAgLy8gdG9IdW1hbiBvdXRwdXRzIHplcm8gcXVhbnRpdGllcyBlLmcuICIwIHNlY29uZHMiCiAgICAgIGR1ciA9IER1cmF0aW9uLmZyb21PYmplY3QoT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGR1ci50b09iamVjdCgpKS5maWx0ZXIoKFssIHF1YW50aXR5XSkgPT4gcXVhbnRpdHkgIT0gMCkpKTsKICAgICAgcmV0dXJuIGR1ci50b0h1bWFuKCk7CiAgfQoKICB2YXIgVmFsdWVzOwogIChmdW5jdGlvbiAoVmFsdWVzKSB7CiAgICAgIC8qKiBDb252ZXJ0IGFuIGFyYml0cmFyeSB2YWx1ZSBpbnRvIGEgcmVhc29uYWJsZSwgTWFya2Rvd24tZnJpZW5kbHkgc3RyaW5nIGlmIHBvc3NpYmxlLiAqLwogICAgICBmdW5jdGlvbiB0b1N0cmluZyhmaWVsZCwgc2V0dGluZyA9IERFRkFVTFRfUVVFUllfU0VUVElOR1MsIHJlY3Vyc2l2ZSA9IGZhbHNlKSB7CiAgICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBWYWx1ZShmaWVsZCk7CiAgICAgICAgICBpZiAoIXdyYXBwZWQpCiAgICAgICAgICAgICAgcmV0dXJuIHNldHRpbmcucmVuZGVyTnVsbEFzOwogICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsKICAgICAgICAgICAgICBjYXNlICJudWxsIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldHRpbmcucmVuZGVyTnVsbEFzOwogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlOwogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6CiAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAiIiArIHdyYXBwZWQudmFsdWU7CiAgICAgICAgICAgICAgY2FzZSAiaHRtbCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm91dGVySFRNTDsKICAgICAgICAgICAgICBjYXNlICJ3aWRnZXQiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpOwogICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuICI8ZnVuY3Rpb24+IjsKICAgICAgICAgICAgICBjYXNlICJhcnJheSI6CiAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAiIjsKICAgICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiWyI7CiAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3cmFwcGVkLnZhbHVlLm1hcChmID0+IHRvU3RyaW5nKGYsIHNldHRpbmcsIHRydWUpKS5qb2luKCIsICIpOwogICAgICAgICAgICAgICAgICBpZiAocmVjdXJzaXZlKQogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJdIjsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOgogICAgICAgICAgICAgICAgICByZXR1cm4gKCJ7ICIgKwogICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGUgPT4gZVswXSArICI6ICIgKyB0b1N0cmluZyhlWzFdLCBzZXR0aW5nLCB0cnVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbigiLCAiKSArCiAgICAgICAgICAgICAgICAgICAgICAiIH0iKTsKICAgICAgICAgICAgICBjYXNlICJkYXRlIjoKICAgICAgICAgICAgICAgICAgaWYgKHdyYXBwZWQudmFsdWUuc2Vjb25kID09IDAgJiYgd3JhcHBlZC52YWx1ZS5ob3VyID09IDAgJiYgd3JhcHBlZC52YWx1ZS5taW51dGUgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZUZvcm1hdCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZVRpbWVGb3JtYXQpOwogICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlck1pbmltYWxEdXJhdGlvbih3cmFwcGVkLnZhbHVlKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMudG9TdHJpbmcgPSB0b1N0cmluZzsKICAgICAgLyoqIFdyYXAgYSBsaXRlcmFsIHZhbHVlIHNvIHlvdSBjYW4gc3dpdGNoIG9uIGl0IGVhc2lseS4gKi8KICAgICAgZnVuY3Rpb24gd3JhcFZhbHVlKHZhbCkgewogICAgICAgICAgaWYgKGlzTnVsbCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJudWxsIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNOdW1iZXIodmFsKSkKICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibnVtYmVyIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcodmFsKSkKICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAic3RyaW5nIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNCb29sZWFuKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJvb2xlYW4iLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0R1cmF0aW9uKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImR1cmF0aW9uIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNEYXRlKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRhdGUiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc1dpZGdldCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ3aWRnZXQiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImFycmF5IiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNMaW5rKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxpbmsiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZ1bmN0aW9uIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNIdG1sKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImh0bWwiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJvYmplY3QiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgfQogICAgICBWYWx1ZXMud3JhcFZhbHVlID0gd3JhcFZhbHVlOwogICAgICAvKiogUmVjdXJzaXZlbHkgbWFwIGNvbXBsZXggb2JqZWN0cyBhdCB0aGUgbGVhdmVzLiAqLwogICAgICBmdW5jdGlvbiBtYXBMZWF2ZXModmFsLCBmdW5jKSB7CiAgICAgICAgICBpZiAoaXNPYmplY3QodmFsKSkgewogICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7fTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsKSkKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYXBMZWF2ZXModmFsdWUsIGZ1bmMpOwogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107CiAgICAgICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsKQogICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChtYXBMZWF2ZXModmFsdWUsIGZ1bmMpKTsKICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZ1bmModmFsKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMubWFwTGVhdmVzID0gbWFwTGVhdmVzOwogICAgICAvKiogQ29tcGFyZSB0d28gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdmFsdWVzLiBQcm9kdWNlcyBhIHRvdGFsIG9yZGVyaW5nIG92ZXIgQU5ZIHBvc3NpYmxlIGRhdGF2aWV3IHZhbHVlLiAqLwogICAgICBmdW5jdGlvbiBjb21wYXJlVmFsdWUodmFsMSwgdmFsMiwgbGlua05vcm1hbGl6ZXIpIHsKICAgICAgICAgIHZhciBfYSwgX2I7CiAgICAgICAgICAvLyBIYW5kbGUgdW5kZWZpbmVkL251bGxzIGZpcnN0LgogICAgICAgICAgaWYgKHZhbDEgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICB2YWwxID0gbnVsbDsKICAgICAgICAgIGlmICh2YWwyID09PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgdmFsMiA9IG51bGw7CiAgICAgICAgICBpZiAodmFsMSA9PT0gbnVsbCAmJiB2YWwyID09PSBudWxsKQogICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgZWxzZSBpZiAodmFsMSA9PT0gbnVsbCkKICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICBlbHNlIGlmICh2YWwyID09PSBudWxsKQogICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgLy8gQSBub24tbnVsbCB2YWx1ZSBub3cgd2hpY2ggd2UgY2FuIHdyYXAgJiBjb21wYXJlIG9uLgogICAgICAgICAgbGV0IHdyYXAxID0gd3JhcFZhbHVlKHZhbDEpOwogICAgICAgICAgbGV0IHdyYXAyID0gd3JhcFZhbHVlKHZhbDIpOwogICAgICAgICAgaWYgKHdyYXAxID09PSB1bmRlZmluZWQgJiYgd3JhcDIgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgIGVsc2UgaWYgKHdyYXAxID09PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgZWxzZSBpZiAod3JhcDIgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgIC8vIFNob3J0LWNpcmN1aXQgb24gZGlmZmVyZW50IHR5cGVzIG9yIG9uIHJlZmVyZW5jZSBlcXVhbGl0eS4KICAgICAgICAgIGlmICh3cmFwMS50eXBlICE9IHdyYXAyLnR5cGUpCiAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnR5cGUubG9jYWxlQ29tcGFyZSh3cmFwMi50eXBlKTsKICAgICAgICAgIGlmICh3cmFwMS52YWx1ZSA9PT0gd3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICBzd2l0Y2ggKHdyYXAxLnR5cGUpIHsKICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUubG9jYWxlQ29tcGFyZSh3cmFwMi52YWx1ZSk7CiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKICAgICAgICAgICAgICAgICAgaWYgKHdyYXAxLnZhbHVlIDwgd3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdyYXAxLnZhbHVlID09IHdyYXAyLnZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgIGNhc2UgIm51bGwiOgogICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICBjYXNlICJib29sZWFuIjoKICAgICAgICAgICAgICAgICAgaWYgKHdyYXAxLnZhbHVlID09IHdyYXAyLnZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA/IDEgOiAtMTsKICAgICAgICAgICAgICBjYXNlICJsaW5rIjoKICAgICAgICAgICAgICAgICAgbGV0IGxpbmsxID0gd3JhcDEudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBsaW5rMiA9IHdyYXAyLnZhbHVlOwogICAgICAgICAgICAgICAgICBsZXQgbm9ybWFsaXplID0gbGlua05vcm1hbGl6ZXIgIT09IG51bGwgJiYgbGlua05vcm1hbGl6ZXIgIT09IHZvaWQgMCA/IGxpbmtOb3JtYWxpemVyIDogKCh4KSA9PiB4KTsKICAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgY29tcGFyZSBieSBmaWxlIG5hbWUgb3IgZGlzcGxheSwgc2luY2UgdGhhdCB3b3VsZCBicmVhayBsaW5rIGVxdWFsaXR5LiBDb21wYXJlIGJ5IHBhdGguCiAgICAgICAgICAgICAgICAgIGxldCBwYXRoQ29tcGFyZSA9IG5vcm1hbGl6ZShsaW5rMS5wYXRoKS5sb2NhbGVDb21wYXJlKG5vcm1hbGl6ZShsaW5rMi5wYXRoKSk7CiAgICAgICAgICAgICAgICAgIGlmIChwYXRoQ29tcGFyZSAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdGhDb21wYXJlOwogICAgICAgICAgICAgICAgICAvLyBUaGVuIGNvbXBhcmUgYnkgdHlwZS4KICAgICAgICAgICAgICAgICAgbGV0IHR5cGVDb21wYXJlID0gbGluazEudHlwZS5sb2NhbGVDb21wYXJlKGxpbmsyLnR5cGUpOwogICAgICAgICAgICAgICAgICBpZiAodHlwZUNvbXBhcmUgIT0gMCkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlQ29tcGFyZTsKICAgICAgICAgICAgICAgICAgLy8gVGhlbiBjb21wYXJlIGJ5IHN1YnBhdGggZXhpc3RlbmNlLgogICAgICAgICAgICAgICAgICBpZiAobGluazEuc3VicGF0aCAmJiAhbGluazIuc3VicGF0aCkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgICBpZiAoIWxpbmsxLnN1YnBhdGggJiYgbGluazIuc3VicGF0aCkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgaWYgKCFsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIGJvdGggaGF2ZSBhIHN1YnBhdGgsIGNvbXBhcmUgYnkgc3VicGF0aC4KICAgICAgICAgICAgICAgICAgcmV0dXJuICgoX2EgPSBsaW5rMS5zdWJwYXRoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAiIikubG9jYWxlQ29tcGFyZSgoX2IgPSBsaW5rMi5zdWJwYXRoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAiIik7CiAgICAgICAgICAgICAgY2FzZSAiZGF0ZSI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA8IHdyYXAyLnZhbHVlCiAgICAgICAgICAgICAgICAgICAgICA/IC0xCiAgICAgICAgICAgICAgICAgICAgICA6IHdyYXAxLnZhbHVlLmVxdWFscyh3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICA/IDAKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDE7CiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUgPCB3cmFwMi52YWx1ZQogICAgICAgICAgICAgICAgICAgICAgPyAtMQogICAgICAgICAgICAgICAgICAgICAgOiB3cmFwMS52YWx1ZS5lcXVhbHMod3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxOwogICAgICAgICAgICAgIGNhc2UgImFycmF5IjoKICAgICAgICAgICAgICAgICAgbGV0IGYxID0gd3JhcDEudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBmMiA9IHdyYXAyLnZhbHVlOwogICAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgTWF0aC5taW4oZjEubGVuZ3RoLCBmMi5sZW5ndGgpOyBpbmRleCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShmMVtpbmRleF0sIGYyW2luZGV4XSk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiBmMS5sZW5ndGggLSBmMi5sZW5ndGg7CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgbGV0IG8xID0gd3JhcDEudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBvMiA9IHdyYXAyLnZhbHVlOwogICAgICAgICAgICAgICAgICBsZXQgazEgPSBBcnJheS5mcm9tKE9iamVjdC5rZXlzKG8xKSk7CiAgICAgICAgICAgICAgICAgIGxldCBrMiA9IEFycmF5LmZyb20oT2JqZWN0LmtleXMobzIpKTsKICAgICAgICAgICAgICAgICAgazEuc29ydCgpOwogICAgICAgICAgICAgICAgICBrMi5zb3J0KCk7CiAgICAgICAgICAgICAgICAgIGxldCBrZXlDb21wYXJlID0gY29tcGFyZVZhbHVlKGsxLCBrMik7CiAgICAgICAgICAgICAgICAgIGlmIChrZXlDb21wYXJlICE9IDApCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5Q29tcGFyZTsKICAgICAgICAgICAgICAgICAgZm9yIChsZXQga2V5IG9mIGsxKSB7CiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShvMVtrZXldLCBvMltrZXldKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wICE9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgY2FzZSAid2lkZ2V0IjoKICAgICAgICAgICAgICBjYXNlICJodG1sIjoKICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5jb21wYXJlVmFsdWUgPSBjb21wYXJlVmFsdWU7CiAgICAgIC8qKiBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIERhdGF2ZWl3IHR5cGUgZm9yIGFuIGFyYml0cmFyeSB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gdHlwZU9mKHZhbCkgewogICAgICAgICAgdmFyIF9hOwogICAgICAgICAgcmV0dXJuIChfYSA9IHdyYXBWYWx1ZSh2YWwpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudHlwZTsKICAgICAgfQogICAgICBWYWx1ZXMudHlwZU9mID0gdHlwZU9mOwogICAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyAidHJ1dGh5IiAoaS5lLiwgaXMgbm9uLW51bGwgYW5kIGhhcyBkYXRhIGluIGl0KS4gKi8KICAgICAgZnVuY3Rpb24gaXNUcnV0aHkoZmllbGQpIHsKICAgICAgICAgIGxldCB3cmFwcGVkID0gd3JhcFZhbHVlKGZpZWxkKTsKICAgICAgICAgIGlmICghd3JhcHBlZCkKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICBzd2l0Y2ggKHdyYXBwZWQudHlwZSkgewogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlICE9IDA7CiAgICAgICAgICAgICAgY2FzZSAic3RyaW5nIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubGVuZ3RoID4gMDsKICAgICAgICAgICAgICBjYXNlICJib29sZWFuIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWU7CiAgICAgICAgICAgICAgY2FzZSAibGluayI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAhIXdyYXBwZWQudmFsdWUucGF0aDsKICAgICAgICAgICAgICBjYXNlICJkYXRlIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9NaWxsaXMoKSAhPSAwOwogICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUuYXMoInNlY29uZHMiKSAhPSAwOwogICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh3cmFwcGVkLnZhbHVlKS5sZW5ndGggPiAwOwogICAgICAgICAgICAgIGNhc2UgImFycmF5IjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubGVuZ3RoID4gMDsKICAgICAgICAgICAgICBjYXNlICJudWxsIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgIGNhc2UgImh0bWwiOgogICAgICAgICAgICAgIGNhc2UgIndpZGdldCI6CiAgICAgICAgICAgICAgY2FzZSAiZnVuY3Rpb24iOgogICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMuaXNUcnV0aHkgPSBpc1RydXRoeTsKICAgICAgLyoqIERlZXAgY29weSBhIGZpZWxkLiAqLwogICAgICBmdW5jdGlvbiBkZWVwQ29weShmaWVsZCkgewogICAgICAgICAgaWYgKGZpZWxkID09PSBudWxsIHx8IGZpZWxkID09PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkOwogICAgICAgICAgaWYgKFZhbHVlcy5pc0FycmF5KGZpZWxkKSkgewogICAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQoZmllbGQubWFwKHYgPT4gZGVlcENvcHkodikpKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKFZhbHVlcy5pc09iamVjdChmaWVsZCkpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307CiAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZpZWxkKSkKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBkZWVwQ29weSh2YWx1ZSk7CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiBmaWVsZDsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMuZGVlcENvcHkgPSBkZWVwQ29weTsKICAgICAgZnVuY3Rpb24gaXNTdHJpbmcodmFsKSB7CiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSAic3RyaW5nIjsKICAgICAgfQogICAgICBWYWx1ZXMuaXNTdHJpbmcgPSBpc1N0cmluZzsKICAgICAgZnVuY3Rpb24gaXNOdW1iZXIodmFsKSB7CiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSAibnVtYmVyIjsKICAgICAgfQogICAgICBWYWx1ZXMuaXNOdW1iZXIgPSBpc051bWJlcjsKICAgICAgZnVuY3Rpb24gaXNEYXRlKHZhbCkgewogICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIERhdGVUaW1lOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0RhdGUgPSBpc0RhdGU7CiAgICAgIGZ1bmN0aW9uIGlzRHVyYXRpb24odmFsKSB7CiAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgRHVyYXRpb247CiAgICAgIH0KICAgICAgVmFsdWVzLmlzRHVyYXRpb24gPSBpc0R1cmF0aW9uOwogICAgICBmdW5jdGlvbiBpc051bGwodmFsKSB7CiAgICAgICAgICByZXR1cm4gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkOwogICAgICB9CiAgICAgIFZhbHVlcy5pc051bGwgPSBpc051bGw7CiAgICAgIGZ1bmN0aW9uIGlzQXJyYXkodmFsKSB7CiAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0FycmF5ID0gaXNBcnJheTsKICAgICAgZnVuY3Rpb24gaXNCb29sZWFuKHZhbCkgewogICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICJib29sZWFuIjsKICAgICAgfQogICAgICBWYWx1ZXMuaXNCb29sZWFuID0gaXNCb29sZWFuOwogICAgICBmdW5jdGlvbiBpc0xpbmsodmFsKSB7CiAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgTGluazsKICAgICAgfQogICAgICBWYWx1ZXMuaXNMaW5rID0gaXNMaW5rOwogICAgICBmdW5jdGlvbiBpc1dpZGdldCh2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBXaWRnZXQ7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzV2lkZ2V0ID0gaXNXaWRnZXQ7CiAgICAgIGZ1bmN0aW9uIGlzSHRtbCh2YWwpIHsKICAgICAgICAgIGlmICh0eXBlb2YgSFRNTEVsZW1lbnQgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5pc0h0bWwgPSBpc0h0bWw7CiAgICAgIC8qKiBDaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGFuIG9iamVjdCAoYW5kIG5vdCBhbnkgb3RoZXIgZGF0YXZpZXctcmVjb2duaXplZCBvYmplY3QtbGlrZSB0eXBlKS4gKi8KICAgICAgZnVuY3Rpb24gaXNPYmplY3QodmFsKSB7CiAgICAgICAgICByZXR1cm4gKHR5cGVvZiB2YWwgPT0gIm9iamVjdCIgJiYKICAgICAgICAgICAgICAhaXNIdG1sKHZhbCkgJiYKICAgICAgICAgICAgICAhaXNXaWRnZXQodmFsKSAmJgogICAgICAgICAgICAgICFpc0FycmF5KHZhbCkgJiYKICAgICAgICAgICAgICAhaXNEdXJhdGlvbih2YWwpICYmCiAgICAgICAgICAgICAgIWlzRGF0ZSh2YWwpICYmCiAgICAgICAgICAgICAgIWlzTGluayh2YWwpICYmCiAgICAgICAgICAgICAgdmFsICE9PSB1bmRlZmluZWQgJiYKICAgICAgICAgICAgICAhaXNOdWxsKHZhbCkpOwogICAgICB9CiAgICAgIFZhbHVlcy5pc09iamVjdCA9IGlzT2JqZWN0OwogICAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbCkgewogICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gImZ1bmN0aW9uIjsKICAgICAgfQogICAgICBWYWx1ZXMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247CiAgfSkoVmFsdWVzIHx8IChWYWx1ZXMgPSB7fSkpOwogIC8vLy8vLy8vLy8vLy8vLwogIC8vIEdyb3VwaW5ncyAvLwogIC8vLy8vLy8vLy8vLy8vLwogIHZhciBHcm91cGluZ3M7CiAgKGZ1bmN0aW9uIChHcm91cGluZ3MpIHsKICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGdyb3VwIGVudHJ5IGlzIGEgc3RhbmRhbG9uZSB2YWx1ZSwgb3IgYSBncm91cGluZyBvZiBzdWItZW50cmllcy4gKi8KICAgICAgZnVuY3Rpb24gaXNFbGVtZW50R3JvdXAoZW50cnkpIHsKICAgICAgICAgIHJldHVybiBWYWx1ZXMuaXNPYmplY3QoZW50cnkpICYmIE9iamVjdC5rZXlzKGVudHJ5KS5sZW5ndGggPT0gMiAmJiAia2V5IiBpbiBlbnRyeSAmJiAicm93cyIgaW4gZW50cnk7CiAgICAgIH0KICAgICAgR3JvdXBpbmdzLmlzRWxlbWVudEdyb3VwID0gaXNFbGVtZW50R3JvdXA7CiAgICAgIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBhcnJheSBpcyBhIGdyb3VwaW5nIGFycmF5LiAqLwogICAgICBmdW5jdGlvbiBpc0dyb3VwaW5nKGVudHJ5KSB7CiAgICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGVudHJ5KQogICAgICAgICAgICAgIGlmICghaXNFbGVtZW50R3JvdXAoZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICAgIEdyb3VwaW5ncy5pc0dyb3VwaW5nID0gaXNHcm91cGluZzsKICAgICAgLyoqIENvdW50IHRoZSB0b3RhbCBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSByZWN1cnNpdmUgZ3JvdXBpbmcuICovCiAgICAgIGZ1bmN0aW9uIGNvdW50KGVsZW1lbnRzKSB7CiAgICAgICAgICBpZiAoaXNHcm91cGluZyhlbGVtZW50cykpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gMDsKICAgICAgICAgICAgICBmb3IgKGxldCBzdWJncm91cCBvZiBlbGVtZW50cykKICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGNvdW50KHN1Ymdyb3VwLnJvd3MpOwogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudHMubGVuZ3RoOwogICAgICAgICAgfQogICAgICB9CiAgICAgIEdyb3VwaW5ncy5jb3VudCA9IGNvdW50OwogIH0pKEdyb3VwaW5ncyB8fCAoR3JvdXBpbmdzID0ge30pKTsKICAvLy8vLy8vLy8vCiAgLy8gTElOSyAvLwogIC8vLy8vLy8vLy8KICAvKiogVGhlIE9ic2lkaWFuICdsaW5rJywgdXNlZCBmb3IgdW5pcXVlbHkgZGVzY3JpYmluZyBhIGZpbGUsIGhlYWRlciwgb3IgYmxvY2suICovCiAgY2xhc3MgTGluayB7CiAgICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZS4gKi8KICAgICAgc3RhdGljIGZpbGUocGF0aCwgZW1iZWQgPSBmYWxzZSwgZGlzcGxheSkgewogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsKICAgICAgICAgICAgICBwYXRoLAogICAgICAgICAgICAgIGVtYmVkLAogICAgICAgICAgICAgIGRpc3BsYXksCiAgICAgICAgICAgICAgc3VicGF0aDogdW5kZWZpbmVkLAogICAgICAgICAgICAgIHR5cGU6ICJmaWxlIiwKICAgICAgICAgIH0pOwogICAgICB9CiAgICAgIHN0YXRpYyBpbmZlcihsaW5rcGF0aCwgZW1iZWQgPSBmYWxzZSwgZGlzcGxheSkgewogICAgICAgICAgaWYgKGxpbmtwYXRoLmluY2x1ZGVzKCIjXiIpKSB7CiAgICAgICAgICAgICAgbGV0IHNwbGl0ID0gbGlua3BhdGguc3BsaXQoIiNeIik7CiAgICAgICAgICAgICAgcmV0dXJuIExpbmsuYmxvY2soc3BsaXRbMF0sIHNwbGl0WzFdLCBlbWJlZCwgZGlzcGxheSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChsaW5rcGF0aC5pbmNsdWRlcygiIyIpKSB7CiAgICAgICAgICAgICAgbGV0IHNwbGl0ID0gbGlua3BhdGguc3BsaXQoIiMiKTsKICAgICAgICAgICAgICByZXR1cm4gTGluay5oZWFkZXIoc3BsaXRbMF0sIHNwbGl0WzFdLCBlbWJlZCwgZGlzcGxheSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIExpbmsuZmlsZShsaW5rcGF0aCwgZW1iZWQsIGRpc3BsYXkpOwogICAgICB9CiAgICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZSBhbmQgaGVhZGVyIGluIHRoYXQgZmlsZS4gKi8KICAgICAgc3RhdGljIGhlYWRlcihwYXRoLCBoZWFkZXIsIGVtYmVkLCBkaXNwbGF5KSB7CiAgICAgICAgICAvLyBIZWFkZXJzIG5lZWQgdG8gYmUgbm9ybWFsaXplZCB0byBhbHBoYS1udW1lcmljICYgd2l0aCBleHRyYSBzcGFjaW5nIHJlbW92ZWQuCiAgICAgICAgICByZXR1cm4gbmV3IExpbmsoewogICAgICAgICAgICAgIHBhdGgsCiAgICAgICAgICAgICAgZW1iZWQsCiAgICAgICAgICAgICAgZGlzcGxheSwKICAgICAgICAgICAgICBzdWJwYXRoOiBub3JtYWxpemVIZWFkZXJGb3JMaW5rKGhlYWRlciksCiAgICAgICAgICAgICAgdHlwZTogImhlYWRlciIsCiAgICAgICAgICB9KTsKICAgICAgfQogICAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUgYW5kIGJsb2NrIGluIHRoYXQgZmlsZS4gKi8KICAgICAgc3RhdGljIGJsb2NrKHBhdGgsIGJsb2NrSWQsIGVtYmVkLCBkaXNwbGF5KSB7CiAgICAgICAgICByZXR1cm4gbmV3IExpbmsoewogICAgICAgICAgICAgIHBhdGgsCiAgICAgICAgICAgICAgZW1iZWQsCiAgICAgICAgICAgICAgZGlzcGxheSwKICAgICAgICAgICAgICBzdWJwYXRoOiBibG9ja0lkLAogICAgICAgICAgICAgIHR5cGU6ICJibG9jayIsCiAgICAgICAgICB9KTsKICAgICAgfQogICAgICBzdGF0aWMgZnJvbU9iamVjdChvYmplY3QpIHsKICAgICAgICAgIHJldHVybiBuZXcgTGluayhvYmplY3QpOwogICAgICB9CiAgICAgIGNvbnN0cnVjdG9yKGZpZWxkcykgewogICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBmaWVsZHMpOwogICAgICB9CiAgICAgIC8qKiBDaGVja3MgZm9yIGxpbmsgZXF1YWxpdHkgKGkuZS4sIHRoYXQgdGhlIGxpbmtzIGFyZSBwb2ludGluZyB0byB0aGUgc2FtZSBleGFjdCBsb2NhdGlvbikuICovCiAgICAgIGVxdWFscyhvdGhlcikgewogICAgICAgICAgaWYgKG90aGVyID09IHVuZGVmaW5lZCB8fCBvdGhlciA9PSBudWxsKQogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIHJldHVybiB0aGlzLnBhdGggPT0gb3RoZXIucGF0aCAmJiB0aGlzLnR5cGUgPT0gb3RoZXIudHlwZSAmJiB0aGlzLnN1YnBhdGggPT0gb3RoZXIuc3VicGF0aDsKICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gaXQncyBtYXJrZG93biByZXByZXNlbnRhdGlvbi4gKi8KICAgICAgdG9TdHJpbmcoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5tYXJrZG93bigpOwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IHRoaXMgbGluayB0byBhIHJhdyBvYmplY3Qgd2hpY2ggaXMgc2VyaWFsaXphdGlvbi1mcmllbmRseS4gKi8KICAgICAgdG9PYmplY3QoKSB7CiAgICAgICAgICByZXR1cm4geyBwYXRoOiB0aGlzLnBhdGgsIHR5cGU6IHRoaXMudHlwZSwgc3VicGF0aDogdGhpcy5zdWJwYXRoLCBkaXNwbGF5OiB0aGlzLmRpc3BsYXksIGVtYmVkOiB0aGlzLmVtYmVkIH07CiAgICAgIH0KICAgICAgLyoqIFVwZGF0ZSB0aGlzIGxpbmsgd2l0aCBhIG5ldyBwYXRoLiAqLwogICAgICAvL0B0cy1pZ25vcmU7IGVycm9yIGFwcGVhcmVkIGFmdGVyIHVwZGF0aW5nIE9ic2lkaWFuIHRvIDAuMTUuNDsgaXQgYWxzbyB1cGRhdGVkIG90aGVyIHBhY2thZ2VzIGJ1dCBkaWRuJ3Qgc2F5IHdoaWNoCiAgICAgIHdpdGhQYXRoKHBhdGgpIHsKICAgICAgICAgIHJldHVybiBuZXcgTGluayhPYmplY3QuYXNzaWduKHt9LCB0aGlzLCB7IHBhdGggfSkpOwogICAgICB9CiAgICAgIC8qKiBSZXR1cm4gYSBuZXcgbGluayB3aGljaCBwb2ludHMgdG8gdGhlIHNhbWUgbG9jYXRpb24gYnV0IHdpdGggYSBuZXcgZGlzcGxheSB2YWx1ZS4gKi8KICAgICAgd2l0aERpc3BsYXkoZGlzcGxheSkgewogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKE9iamVjdC5hc3NpZ24oe30sIHRoaXMsIHsgZGlzcGxheSB9KSk7CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgYSBmaWxlIGxpbmsgaW50byBhIGxpbmsgdG8gYSBzcGVjaWZpYyBoZWFkZXIuICovCiAgICAgIHdpdGhIZWFkZXIoaGVhZGVyKSB7CiAgICAgICAgICByZXR1cm4gTGluay5oZWFkZXIodGhpcy5wYXRoLCBoZWFkZXIsIHRoaXMuZW1iZWQsIHRoaXMuZGlzcGxheSk7CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgYW55IGxpbmsgaW50byBhIGxpbmsgdG8gaXRzIGZpbGUuICovCiAgICAgIHRvRmlsZSgpIHsKICAgICAgICAgIHJldHVybiBMaW5rLmZpbGUodGhpcy5wYXRoLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpOwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IHRoaXMgbGluayBpbnRvIGFuIGVtYmVkZGVkIGxpbmsuICovCiAgICAgIHRvRW1iZWQoKSB7CiAgICAgICAgICBpZiAodGhpcy5lbWJlZCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgbGV0IGxpbmsgPSBuZXcgTGluayh0aGlzKTsKICAgICAgICAgICAgICBsaW5rLmVtYmVkID0gdHJ1ZTsKICAgICAgICAgICAgICByZXR1cm4gbGluazsKICAgICAgICAgIH0KICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhIG5vbi1lbWJlZGRlZCBsaW5rLiAqLwogICAgICBmcm9tRW1iZWQoKSB7CiAgICAgICAgICBpZiAoIXRoaXMuZW1iZWQpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGxldCBsaW5rID0gbmV3IExpbmsodGhpcyk7CiAgICAgICAgICAgICAgbGluay5lbWJlZCA9IGZhbHNlOwogICAgICAgICAgICAgIHJldHVybiBsaW5rOwogICAgICAgICAgfQogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IHRoaXMgbGluayB0byBtYXJrZG93biBzbyBpdCBjYW4gYmUgcmVuZGVyZWQuICovCiAgICAgIG1hcmtkb3duKCkgewogICAgICAgICAgbGV0IHJlc3VsdCA9ICh0aGlzLmVtYmVkID8gIiEiIDogIiIpICsgIltbIiArIHRoaXMub2JzaWRpYW5MaW5rKCk7CiAgICAgICAgICBpZiAodGhpcy5kaXNwbGF5KSB7CiAgICAgICAgICAgICAgcmVzdWx0ICs9ICJ8IiArIHRoaXMuZGlzcGxheTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJlc3VsdCArPSAifCIgKyBnZXRGaWxlVGl0bGUodGhpcy5wYXRoKTsKICAgICAgICAgICAgICBpZiAodGhpcy50eXBlID09ICJoZWFkZXIiIHx8IHRoaXMudHlwZSA9PSAiYmxvY2siKQogICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIiA+ICIgKyB0aGlzLnN1YnBhdGg7CiAgICAgICAgICB9CiAgICAgICAgICByZXN1bHQgKz0gIl1dIjsKICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgdGhlIGlubmVyIHBhcnQgb2YgdGhlIGxpbmsgdG8gc29tZXRoaW5nIHRoYXQgT2JzaWRpYW4gY2FuIG9wZW4gLyB1bmRlcnN0YW5kLiAqLwogICAgICBvYnNpZGlhbkxpbmsoKSB7CiAgICAgICAgICB2YXIgX2EsIF9iOwogICAgICAgICAgY29uc3QgZXNjYXBlZCA9IHRoaXMucGF0aC5yZXBsYWNlKCJ8IiwgIlxcfCIpOwogICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIikKICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZCArICIjIiArICgoX2EgPSB0aGlzLnN1YnBhdGgpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZXBsYWNlKCJ8IiwgIlxcfCIpKTsKICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gImJsb2NrIikKICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZCArICIjXiIgKyAoKF9iID0gdGhpcy5zdWJwYXRoKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucmVwbGFjZSgifCIsICJcXHwiKSk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIGVzY2FwZWQ7CiAgICAgIH0KICAgICAgLyoqIFRoZSBzdHJpcHBlZCBuYW1lIG9mIHRoZSBmaWxlIHRoaXMgbGluayBwb2ludHMgdG8uICovCiAgICAgIGZpbGVOYW1lKCkgewogICAgICAgICAgcmV0dXJuIGdldEZpbGVUaXRsZSh0aGlzLnBhdGgpLnJlcGxhY2UoIi5tZCIsICIiKTsKICAgICAgfQogIH0KICAvLy8vLy8vLy8vLy8vLy8vLwogIC8vIFdJREdFVCBCQVNFIC8vCiAgLy8vLy8vLy8vLy8vLy8vLy8KICAvKioKICAgKiBBIHRyaXZpYWwgYmFzZSBjbGFzcyB3aGljaCBqdXN0IGRlZmluZXMgdGhlICckd2lkZ2V0JyBpZGVudGlmaWVyIHR5cGUuIFN1YnR5cGVzIG9mCiAgICogd2lkZ2V0IGFyZSByZXNwb25zaWJsZSBmb3IgYWRkaW5nIHdoYXRldmVyIG1ldGFkYXRhIGlzIHJlbGV2YW50LiBJZiB5b3Ugd2FudCB5b3VyIHdpZGdldAogICAqIHRvIGhhdmUgcmVuZGVyaW5nIGZ1bmN0aW9uYWxpdHkgKHdoaWNoIHlvdSBwcm9iYWJseSBkbyksIHlvdSBzaG91bGQgZXh0ZW5kIGBSZW5kZXJXaWRnZXRgLgogICAqLwogIGNsYXNzIFdpZGdldCB7CiAgICAgIGNvbnN0cnVjdG9yKCR3aWRnZXQpIHsKICAgICAgICAgIHRoaXMuJHdpZGdldCA9ICR3aWRnZXQ7CiAgICAgIH0KICB9CiAgLyoqIEEgdHJpdmlhbCB3aWRnZXQgd2hpY2ggcmVuZGVycyBhIChrZXksIHZhbHVlKSBwYWlyLCBhbmQgYWxsb3dzIGFjY2Vzc2luZyB0aGUga2V5IGFuZCB2YWx1ZS4gKi8KICBjbGFzcyBMaXN0UGFpcldpZGdldCBleHRlbmRzIFdpZGdldCB7CiAgICAgIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUpIHsKICAgICAgICAgIHN1cGVyKCJkYXRhdmlldzpsaXN0LXBhaXIiKTsKICAgICAgICAgIHRoaXMua2V5ID0ga2V5OwogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgICB9CiAgICAgIG1hcmtkb3duKCkgewogICAgICAgICAgcmV0dXJuIGAke1ZhbHVlcy50b1N0cmluZyh0aGlzLmtleSl9OiAke1ZhbHVlcy50b1N0cmluZyh0aGlzLnZhbHVlKX1gOwogICAgICB9CiAgfQogIC8qKiBBIHNpbXBsZSB3aWRnZXQgd2hpY2ggcmVuZGVycyBhbiBleHRlcm5hbCBsaW5rLiAqLwogIGNsYXNzIEV4dGVybmFsTGlua1dpZGdldCBleHRlbmRzIFdpZGdldCB7CiAgICAgIGNvbnN0cnVjdG9yKHVybCwgZGlzcGxheSkgewogICAgICAgICAgc3VwZXIoImRhdGF2aWV3OmV4dGVybmFsLWxpbmsiKTsKICAgICAgICAgIHRoaXMudXJsID0gdXJsOwogICAgICAgICAgdGhpcy5kaXNwbGF5ID0gZGlzcGxheTsKICAgICAgfQogICAgICBtYXJrZG93bigpIHsKICAgICAgICAgIHZhciBfYTsKICAgICAgICAgIHJldHVybiBgWyR7KF9hID0gdGhpcy5kaXNwbGF5KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLnVybH1dKCR7dGhpcy51cmx9KWA7CiAgICAgIH0KICB9CiAgdmFyIFdpZGdldHM7CiAgKGZ1bmN0aW9uIChXaWRnZXRzKSB7CiAgICAgIC8qKiBDcmVhdGUgYSBsaXN0IHBhaXIgd2lkZ2V0IG1hdGNoaW5nIHRoZSBnaXZlbiBrZXkgYW5kIHZhbHVlLiAqLwogICAgICBmdW5jdGlvbiBsaXN0UGFpcihrZXksIHZhbHVlKSB7CiAgICAgICAgICByZXR1cm4gbmV3IExpc3RQYWlyV2lkZ2V0KGtleSwgdmFsdWUpOwogICAgICB9CiAgICAgIFdpZGdldHMubGlzdFBhaXIgPSBsaXN0UGFpcjsKICAgICAgLyoqIENyZWF0ZSBhbiBleHRlcm5hbCBsaW5rIHdpZGdldCB3aGljaCByZW5kZXJzIGFuIGV4dGVybmFsIE9ic2lkaWFuIGxpbmsuICovCiAgICAgIGZ1bmN0aW9uIGV4dGVybmFsTGluayh1cmwsIGRpc3BsYXkpIHsKICAgICAgICAgIHJldHVybiBuZXcgRXh0ZXJuYWxMaW5rV2lkZ2V0KHVybCwgZGlzcGxheSk7CiAgICAgIH0KICAgICAgV2lkZ2V0cy5leHRlcm5hbExpbmsgPSBleHRlcm5hbExpbms7CiAgICAgIC8qKiBDaGVja3MgaWYgdGhlIGdpdmVuIHdpZGdldCBpcyBhIGxpc3QgcGFpciB3aWRnZXQuICovCiAgICAgIGZ1bmN0aW9uIGlzTGlzdFBhaXIod2lkZ2V0KSB7CiAgICAgICAgICByZXR1cm4gd2lkZ2V0LiR3aWRnZXQgPT09ICJkYXRhdmlldzpsaXN0LXBhaXIiOwogICAgICB9CiAgICAgIFdpZGdldHMuaXNMaXN0UGFpciA9IGlzTGlzdFBhaXI7CiAgICAgIGZ1bmN0aW9uIGlzRXh0ZXJuYWxMaW5rKHdpZGdldCkgewogICAgICAgICAgcmV0dXJuIHdpZGdldC4kd2lkZ2V0ID09PSAiZGF0YXZpZXc6ZXh0ZXJuYWwtbGluayI7CiAgICAgIH0KICAgICAgV2lkZ2V0cy5pc0V4dGVybmFsTGluayA9IGlzRXh0ZXJuYWxMaW5rOwogICAgICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gd2lkZ2V0IGlzIGFueSBraW5kIG9mIGJ1aWx0LWluIHdpZGdldCB3aXRoIHNwZWNpYWwgcmVuZGVyaW5nIGhhbmRsaW5nLiAqLwogICAgICBmdW5jdGlvbiBpc0J1aWx0aW4od2lkZ2V0KSB7CiAgICAgICAgICByZXR1cm4gaXNMaXN0UGFpcih3aWRnZXQpIHx8IGlzRXh0ZXJuYWxMaW5rKHdpZGdldCk7CiAgICAgIH0KICAgICAgV2lkZ2V0cy5pc0J1aWx0aW4gPSBpc0J1aWx0aW47CiAgfSkoV2lkZ2V0cyB8fCAoV2lkZ2V0cyA9IHt9KSk7CgogIC8qKiBVdGlsaXR5IG1ldGhvZHMgZm9yIGNyZWF0aW5nICYgY29tcGFyaW5nIGZpZWxkcy4gKi8KICB2YXIgRmllbGRzOwogIChmdW5jdGlvbiAoRmllbGRzKSB7CiAgICAgIGZ1bmN0aW9uIHZhcmlhYmxlKG5hbWUpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ2YXJpYWJsZSIsIG5hbWUgfTsKICAgICAgfQogICAgICBGaWVsZHMudmFyaWFibGUgPSB2YXJpYWJsZTsKICAgICAgZnVuY3Rpb24gbGl0ZXJhbCh2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxpdGVyYWwiLCB2YWx1ZSB9OwogICAgICB9CiAgICAgIEZpZWxkcy5saXRlcmFsID0gbGl0ZXJhbDsKICAgICAgZnVuY3Rpb24gYmluYXJ5T3AobGVmdCwgb3AsIHJpZ2h0KSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcCwgcmlnaHQgfTsKICAgICAgfQogICAgICBGaWVsZHMuYmluYXJ5T3AgPSBiaW5hcnlPcDsKICAgICAgZnVuY3Rpb24gaW5kZXgob2JqLCBpbmRleCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImluZGV4Iiwgb2JqZWN0OiBvYmosIGluZGV4IH07CiAgICAgIH0KICAgICAgRmllbGRzLmluZGV4ID0gaW5kZXg7CiAgICAgIC8qKiBDb252ZXJ0cyBhIHN0cmluZyBpbiBkb3Qtbm90YXRpb24tZm9ybWF0IGludG8gYSB2YXJpYWJsZSB3aGljaCBpbmRleGVzLiAqLwogICAgICBmdW5jdGlvbiBpbmRleFZhcmlhYmxlKG5hbWUpIHsKICAgICAgICAgIGxldCBwYXJ0cyA9IG5hbWUuc3BsaXQoIi4iKTsKICAgICAgICAgIGxldCByZXN1bHQgPSBGaWVsZHMudmFyaWFibGUocGFydHNbMF0pOwogICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHBhcnRzLmxlbmd0aDsgaW5kZXgrKykgewogICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIEZpZWxkcy5saXRlcmFsKHBhcnRzW2luZGV4XSkpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfQogICAgICBGaWVsZHMuaW5kZXhWYXJpYWJsZSA9IGluZGV4VmFyaWFibGU7CiAgICAgIGZ1bmN0aW9uIGxhbWJkYShhcmdzLCB2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxhbWJkYSIsIGFyZ3VtZW50czogYXJncywgdmFsdWUgfTsKICAgICAgfQogICAgICBGaWVsZHMubGFtYmRhID0gbGFtYmRhOwogICAgICBmdW5jdGlvbiBmdW5jKGZ1bmMsIGFyZ3MpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJmdW5jdGlvbiIsIGZ1bmMsIGFyZ3VtZW50czogYXJncyB9OwogICAgICB9CiAgICAgIEZpZWxkcy5mdW5jID0gZnVuYzsKICAgICAgZnVuY3Rpb24gbGlzdCh2YWx1ZXMpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaXN0IiwgdmFsdWVzIH07CiAgICAgIH0KICAgICAgRmllbGRzLmxpc3QgPSBsaXN0OwogICAgICBmdW5jdGlvbiBvYmplY3QodmFsdWVzKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAib2JqZWN0IiwgdmFsdWVzIH07CiAgICAgIH0KICAgICAgRmllbGRzLm9iamVjdCA9IG9iamVjdDsKICAgICAgZnVuY3Rpb24gbmVnYXRlKGNoaWxkKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAibmVnYXRlZCIsIGNoaWxkIH07CiAgICAgIH0KICAgICAgRmllbGRzLm5lZ2F0ZSA9IG5lZ2F0ZTsKICAgICAgZnVuY3Rpb24gaXNDb21wYXJlT3Aob3ApIHsKICAgICAgICAgIHJldHVybiBvcCA9PSAiPD0iIHx8IG9wID09ICI8IiB8fCBvcCA9PSAiPiIgfHwgb3AgPT0gIj49IiB8fCBvcCA9PSAiIT0iIHx8IG9wID09ICI9IjsKICAgICAgfQogICAgICBGaWVsZHMuaXNDb21wYXJlT3AgPSBpc0NvbXBhcmVPcDsKICAgICAgRmllbGRzLk5VTEwgPSBGaWVsZHMubGl0ZXJhbChudWxsKTsKICB9KShGaWVsZHMgfHwgKEZpZWxkcyA9IHt9KSk7CgogIC8qKiBBU1QgaW1wbGVtZW50YXRpb24gZm9yIHF1ZXJpZXMgb3ZlciBkYXRhIHNvdXJjZXMuICovCiAgLyoqIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBhbmQgbWFuaXB1bGF0aW5nIHNvdXJjZXMuICovCiAgdmFyIFNvdXJjZXM7CiAgKGZ1bmN0aW9uIChTb3VyY2VzKSB7CiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggc2VhcmNoZXMgZnJvbSBhIHRhZy4gKi8KICAgICAgZnVuY3Rpb24gdGFnKHRhZykgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogInRhZyIsIHRhZyB9OwogICAgICB9CiAgICAgIFNvdXJjZXMudGFnID0gdGFnOwogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIGZldGNoZXMgZnJvbSBhIENTViBmaWxlLiAqLwogICAgICBmdW5jdGlvbiBjc3YocGF0aCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImNzdiIsIHBhdGggfTsKICAgICAgfQogICAgICBTb3VyY2VzLmNzdiA9IGNzdjsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBzZWFyY2hlcyBmb3IgZmlsZXMgdW5kZXIgYSBmb2xkZXIgcHJlZml4LiAqLwogICAgICBmdW5jdGlvbiBmb2xkZXIocHJlZml4KSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZm9sZGVyIiwgZm9sZGVyOiBwcmVmaXggfTsKICAgICAgfQogICAgICBTb3VyY2VzLmZvbGRlciA9IGZvbGRlcjsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBzZWFyY2hlcyBmb3IgZmlsZXMgd2hpY2ggbGluayB0by9mcm9tIGEgZ2l2ZW4gZmlsZS4gKi8KICAgICAgZnVuY3Rpb24gbGluayhmaWxlLCBpbmNvbWluZykgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxpbmsiLCBmaWxlLCBkaXJlY3Rpb246IGluY29taW5nID8gImluY29taW5nIiA6ICJvdXRnb2luZyIgfTsKICAgICAgfQogICAgICBTb3VyY2VzLmxpbmsgPSBsaW5rOwogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIGpvaW5zIHR3byBzb3VyY2VzIGJ5IGEgbG9naWNhbCBvcGVyYXRvciAoYW5kL29yKS4gKi8KICAgICAgZnVuY3Rpb24gYmluYXJ5T3AobGVmdCwgb3AsIHJpZ2h0KSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcCwgcmlnaHQgfTsKICAgICAgfQogICAgICBTb3VyY2VzLmJpbmFyeU9wID0gYmluYXJ5T3A7CiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggdGFrZXMgdGhlIGludGVyc2VjdGlvbiBvZiB0d28gc291cmNlcy4gKi8KICAgICAgZnVuY3Rpb24gYW5kKGxlZnQsIHJpZ2h0KSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcDogIiYiLCByaWdodCB9OwogICAgICB9CiAgICAgIFNvdXJjZXMuYW5kID0gYW5kOwogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHRha2VzIHRoZSB1bmlvbiBvZiB0d28gc291cmNlcy4gKi8KICAgICAgZnVuY3Rpb24gb3IobGVmdCwgcmlnaHQpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJiaW5hcnlvcCIsIGxlZnQsIG9wOiAifCIsIHJpZ2h0IH07CiAgICAgIH0KICAgICAgU291cmNlcy5vciA9IG9yOwogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIG5lZ2F0ZXMgdGhlIHVuZGVybHlpbmcgc291cmNlLiAqLwogICAgICBmdW5jdGlvbiBuZWdhdGUoY2hpbGQpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJuZWdhdGUiLCBjaGlsZCB9OwogICAgICB9CiAgICAgIFNvdXJjZXMubmVnYXRlID0gbmVnYXRlOwogICAgICBmdW5jdGlvbiBlbXB0eSgpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJlbXB0eSIgfTsKICAgICAgfQogICAgICBTb3VyY2VzLmVtcHR5ID0gZW1wdHk7CiAgfSkoU291cmNlcyB8fCAoU291cmNlcyA9IHt9KSk7CgogIC8qKiBFbW9qaSByZWdleCB3aXRob3V0IGFueSBhZGRpdGlvbmFsIGZsYWdzLiAqLwogIGNvbnN0IEVNT0pJX1JFR0VYID0gbmV3IFJlZ0V4cChlbW9qaVJlZ2V4KCksICIiKTsKICAvKiogUHJvdmlkZXMgYSBsb29rdXAgdGFibGUgZm9yIHVuaXQgZHVyYXRpb25zIG9mIHRoZSBnaXZlbiB0eXBlLiAqLwogIGNvbnN0IERVUkFUSU9OX1RZUEVTID0gewogICAgICB5ZWFyOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksCiAgICAgIHllYXJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksCiAgICAgIHlyOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksCiAgICAgIHlyczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICBtb250aDogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwKICAgICAgbW9udGhzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLAogICAgICBtbzogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwKICAgICAgbW9zOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLAogICAgICB3ZWVrOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksCiAgICAgIHdlZWtzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksCiAgICAgIHdrOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksCiAgICAgIHdrczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3OiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksCiAgICAgIGRheTogRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSksCiAgICAgIGRheXM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLAogICAgICBkOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSwKICAgICAgaG91cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLAogICAgICBob3VyczogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLAogICAgICBocjogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLAogICAgICBocnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaDogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLAogICAgICBtaW51dGU6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLAogICAgICBtaW51dGVzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwKICAgICAgbWluOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwKICAgICAgbWluczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksCiAgICAgIG06IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLAogICAgICBzZWNvbmQ6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLAogICAgICBzZWNvbmRzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwKICAgICAgc2VjOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwKICAgICAgc2VjczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksCiAgICAgIHM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLAogIH07CiAgLyoqIFNob3J0aGFuZCBmb3IgY29tbW9uIGRhdGVzIChyZWxhdGl2ZSB0byByaWdodCBub3cpLiAqLwogIGNvbnN0IERBVEVfU0hPUlRIQU5EUyA9IHsKICAgICAgbm93OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLAogICAgICB0b2RheTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJkYXkiKSwKICAgICAgeWVzdGVyZGF5OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpCiAgICAgICAgICAuc3RhcnRPZigiZGF5IikKICAgICAgICAgIC5taW51cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSksCiAgICAgIHRvbW9ycm93OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpCiAgICAgICAgICAuc3RhcnRPZigiZGF5IikKICAgICAgICAgIC5wbHVzKER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pKSwKICAgICAgc293OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoIndlZWsiKSwKICAgICAgInN0YXJ0LW9mLXdlZWsiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoIndlZWsiKSwKICAgICAgZW93OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJ3ZWVrIiksCiAgICAgICJlbmQtb2Ytd2VlayI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoIndlZWsiKSwKICAgICAgc295OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoInllYXIiKSwKICAgICAgInN0YXJ0LW9mLXllYXIiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoInllYXIiKSwKICAgICAgZW95OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJ5ZWFyIiksCiAgICAgICJlbmQtb2YteWVhciI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoInllYXIiKSwKICAgICAgc29tOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoIm1vbnRoIiksCiAgICAgICJzdGFydC1vZi1tb250aCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZigibW9udGgiKSwKICAgICAgZW9tOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJtb250aCIpLAogICAgICAiZW5kLW9mLW1vbnRoIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigibW9udGgiKSwKICB9OwogIC8qKgogICAqIEtleXdvcmRzIHdoaWNoIGNhbm5vdCBiZSB1c2VkIGFzIHZhcmlhYmxlcyBkaXJlY3RseS4gVXNlIGByb3cuPHRoaW5nPmAgaWYgaXQgaXMgYSB2YXJpYWJsZSB5b3UgaGF2ZSBkZWZpbmVkIGFuZCB3YW50CiAgICogdG8gYWNjZXNzLgogICAqLwogIGNvbnN0IEtFWVdPUkRTID0gWyJGUk9NIiwgIldIRVJFIiwgIkxJTUlUIiwgIkdST1VQIiwgIkZMQVRURU4iXTsKICAvLy8vLy8vLy8vLy8vLy8KICAvLyBVdGlsaXRpZXMgLy8KICAvLy8vLy8vLy8vLy8vLy8KICAvKiogU3BsaXQgb24gdW5lc2NhcGVkIHBpcGVzIGluIGFuIGlubmVyIGxpbmsuICovCiAgZnVuY3Rpb24gc3BsaXRPblVuZXNjYXBlZFBpcGUobGluaykgewogICAgICBsZXQgcGlwZSA9IC0xOwogICAgICB3aGlsZSAoKHBpcGUgPSBsaW5rLmluZGV4T2YoInwiLCBwaXBlICsgMSkpID49IDApIHsKICAgICAgICAgIGlmIChwaXBlID4gMCAmJiBsaW5rW3BpcGUgLSAxXSA9PSAiXFwiKQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgcmV0dXJuIFtsaW5rLnN1YnN0cmluZygwLCBwaXBlKS5yZXBsYWNlKC9cXFx8L2csICJ8IiksIGxpbmsuc3Vic3RyaW5nKHBpcGUgKyAxKV07CiAgICAgIH0KICAgICAgcmV0dXJuIFtsaW5rLnJlcGxhY2UoL1xcXHwvZywgInwiKSwgdW5kZWZpbmVkXTsKICB9CiAgLyoqIEF0dGVtcHQgdG8gcGFyc2UgdGhlIGluc2lkZSBvZiBhIGxpbmsgdG8gcHVsbCBvdXQgZGlzcGxheSBuYW1lLCBzdWJwYXRoLCBldGMuICovCiAgZnVuY3Rpb24gcGFyc2VJbm5lckxpbmsocmF3bGluaykgewogICAgICBsZXQgW2xpbmssIGRpc3BsYXldID0gc3BsaXRPblVuZXNjYXBlZFBpcGUocmF3bGluayk7CiAgICAgIHJldHVybiBMaW5rLmluZmVyKGxpbmssIGZhbHNlLCBkaXNwbGF5KTsKICB9CiAgLyoqIENyZWF0ZSBhIGxlZnQtYXNzb2NpYXRpdmUgYmluYXJ5IHBhcnNlciB3aGljaCBwYXJzZXMgdGhlIGdpdmVuIHN1Yi1lbGVtZW50IGFuZCBzZXBhcmF0b3IuIEhhbmRsZXMgd2hpdGVzcGFjZS4gKi8KICBmdW5jdGlvbiBjcmVhdGVCaW5hcnlQYXJzZXIoY2hpbGQsIHNlcCwgY29tYmluZSkgewogICAgICByZXR1cm4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChjaGlsZCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgc2VwLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgY2hpbGQpLm1hbnkoKSwgKGZpcnN0LCByZXN0KSA9PiB7CiAgICAgICAgICBpZiAocmVzdC5sZW5ndGggPT0gMCkKICAgICAgICAgICAgICByZXR1cm4gZmlyc3Q7CiAgICAgICAgICBsZXQgbm9kZSA9IGNvbWJpbmUoZmlyc3QsIHJlc3RbMF1bMV0sIHJlc3RbMF1bM10pOwogICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHJlc3QubGVuZ3RoOyBpbmRleCsrKSB7CiAgICAgICAgICAgICAgbm9kZSA9IGNvbWJpbmUobm9kZSwgcmVzdFtpbmRleF1bMV0sIHJlc3RbaW5kZXhdWzNdKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBub2RlOwogICAgICB9KTsKICB9CiAgZnVuY3Rpb24gY2hhaW5PcHQoYmFzZSwgLi4uZnVuY3MpIHsKICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5jdXN0b20oKHN1Y2Nlc3MsIGZhaWx1cmUpID0+IHsKICAgICAgICAgIHJldHVybiAoaW5wdXQsIGkpID0+IHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYmFzZS5fKGlucHV0LCBpKTsKICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5zdGF0dXMpCiAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgZm9yIChsZXQgZnVuYyBvZiBmdW5jcykgewogICAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IGZ1bmMocmVzdWx0LnZhbHVlKS5fKGlucHV0LCByZXN1bHQuaW5kZXgpOwogICAgICAgICAgICAgICAgICBpZiAoIW5leHQuc3RhdHVzKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV4dDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH07CiAgICAgIH0pOwogIH0KICBjb25zdCBFWFBSRVNTSU9OID0gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmNyZWF0ZUxhbmd1YWdlKHsKICAgICAgLy8gQSBmbG9hdGluZyBwb2ludCBudW1iZXI7IHRoZSBkZWNpbWFsIHBvaW50IGlzIG9wdGlvbmFsLgogICAgICBudW1iZXI6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvLT9bMC05XSsoXC5bMC05XSspPy8pCiAgICAgICAgICAubWFwKHN0ciA9PiBOdW1iZXIucGFyc2VGbG9hdChzdHIpKQogICAgICAgICAgLmRlc2MoIm51bWJlciIpLAogICAgICAvLyBBIHF1b3RlLXN1cnJvdW5kZWQgc3RyaW5nIHdoaWNoIHN1cHBvcnRzIGVzY2FwZSBjaGFyYWN0ZXJzICgnXCcpLgogICAgICBzdHJpbmc6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygnIicpCiAgICAgICAgICAudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHEuZXNjYXBlQ2hhcmFjdGVyLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMubm9uZU9mKCciXFwnKSkKICAgICAgICAgIC5hdExlYXN0KDApCiAgICAgICAgICAubWFwKGNoYXJzID0+IGNoYXJzLmpvaW4oIiIpKSkKICAgICAgICAgIC5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoJyInKSkKICAgICAgICAgIC5kZXNjKCJzdHJpbmciKSwKICAgICAgZXNjYXBlQ2hhcmFjdGVyOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIlxcIikKICAgICAgICAgIC50aGVuKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbnkpCiAgICAgICAgICAubWFwKGVzY2FwZWQgPT4gewogICAgICAgICAgLy8gSWYgd2UgYXJlIGVzY2FwaW5nIGEgYmFja3NsYXNoIG9yIGEgcXVvdGUsIHBhc3MgaW4gb24gaW4gZXNjYXBlZCBmb3JtCiAgICAgICAgICBpZiAoZXNjYXBlZCA9PT0gJyInKQogICAgICAgICAgICAgIHJldHVybiAnIic7CiAgICAgICAgICBpZiAoZXNjYXBlZCA9PT0gIlxcIikKICAgICAgICAgICAgICByZXR1cm4gIlxcIjsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXR1cm4gIlxcIiArIGVzY2FwZWQ7CiAgICAgIH0pLAogICAgICAvLyBBIGJvb2xlYW4gdHJ1ZS9mYWxzZSB2YWx1ZS4KICAgICAgYm9vbDogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC90cnVlfGZhbHNlfFRydWV8RmFsc2UvKQogICAgICAgICAgLm1hcChzdHIgPT4gc3RyLnRvTG93ZXJDYXNlKCkgPT0gInRydWUiKQogICAgICAgICAgLmRlc2MoImJvb2xlYW4gKCd0cnVlJyBvciAnZmFsc2UnKSIpLAogICAgICAvLyBBIHRhZyBvZiB0aGUgZm9ybSAnI3N0dWZmL2hlbGxvLXRoZXJlJy4KICAgICAgdGFnOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiIyIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1teXHUyMDAwLVx1MjA2Rlx1MkUwMC1cdTJFN0YnISIjJCUmKCkqKywuOjs8PT4/QF5ge3x9flxbXF1cXFxzXS8pLmRlc2MoInRleHQiKSkubWFueSgpLCAoc3RhcnQsIHJlc3QpID0+IHN0YXJ0ICsgcmVzdC5qb2luKCIiKSkuZGVzYygidGFnICgnI2hlbGxvL3N0dWZmJykiKSwKICAgICAgLy8gQSB2YXJpYWJsZSBpZGVudGlmaWVyLCB3aGljaCBpcyBhbHBoYW51bWVyaWMgYW5kIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBvci4uLiBlbW9qaS4KICAgICAgaWRlbnRpZmllcjogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXHB7TGV0dGVyfS91KSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cChFTU9KSV9SRUdFWCkuZGVzYygidGV4dCIpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9bMC05XHB7TGV0dGVyfV8tXS91KSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cChFTU9KSV9SRUdFWCkuZGVzYygidGV4dCIpKS5tYW55KCksIChmaXJzdCwgcmVzdCkgPT4gZmlyc3QgKyByZXN0LmpvaW4oIiIpKS5kZXNjKCJ2YXJpYWJsZSBpZGVudGlmaWVyIiksCiAgICAgIC8vIEFuIE9ic2lkaWFuIGxpbmsgb2YgdGhlIGZvcm0gW1s8bGluaz5dXS4KICAgICAgbGluazogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cW1xbKFteXFtcXV0qPylcXVxdL3UsIDEpCiAgICAgICAgICAubWFwKGxpbmtJbm5lciA9PiBwYXJzZUlubmVyTGluayhsaW5rSW5uZXIpKQogICAgICAgICAgLmRlc2MoImZpbGUgbGluayIpLAogICAgICAvLyBBbiBlbWJlZGRhYmxlIGxpbmsgd2hpY2ggY2FuIHN0YXJ0IHdpdGggJyEnLiBUaGlzIG92ZXJsYXBzIHdpdGggdGhlIG5vcm1hbCBuZWdhdGlvbiBvcGVyYXRvciwgc28gaXQgaXMgb25seQogICAgICAvLyBwcm92aWRlZCBmb3IgbWV0YWRhdGEgcGFyc2luZy4KICAgICAgZW1iZWRMaW5rOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiISIpLmF0TW9zdCgxKSwgcS5saW5rLCAocCwgbCkgPT4gewogICAgICAgICAgaWYgKHAubGVuZ3RoID4gMCkKICAgICAgICAgICAgICBsLmVtYmVkID0gdHJ1ZTsKICAgICAgICAgIHJldHVybiBsOwogICAgICB9KS5kZXNjKCJmaWxlIGxpbmsiKSwKICAgICAgLy8gQmluYXJ5IHBsdXMgb3IgbWludXMgb3BlcmF0b3IuCiAgICAgIGJpbmFyeVBsdXNNaW51czogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cK3wtLykKICAgICAgICAgIC5tYXAoc3RyID0+IHN0cikKICAgICAgICAgIC5kZXNjKCInKycgb3IgJy0nIiksCiAgICAgIC8vIEJpbmFyeSB0aW1lcyBvciBkaXZpZGUgb3BlcmF0b3IuCiAgICAgIGJpbmFyeU11bERpdjogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cKnxcL3wlLykKICAgICAgICAgIC5tYXAoc3RyID0+IHN0cikKICAgICAgICAgIC5kZXNjKCInKicgb3IgJy8nIG9yICclJyIpLAogICAgICAvLyBCaW5hcnkgY29tcGFyaXNvbiBvcGVyYXRvci4KICAgICAgYmluYXJ5Q29tcGFyZU9wOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoLz49fDw9fCE9fD58PHw9LykKICAgICAgICAgIC5tYXAoc3RyID0+IHN0cikKICAgICAgICAgIC5kZXNjKCInPj0nIG9yICc8PScgb3IgJyE9JyBvciAnPScgb3IgJz4nIG9yICc8JyIpLAogICAgICAvLyBCaW5hcnkgYm9vbGVhbiBjb21iaW5hdGlvbiBvcGVyYXRvci4KICAgICAgYmluYXJ5Qm9vbGVhbk9wOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL2FuZHxvcnwmfFx8L2kpCiAgICAgICAgICAubWFwKHN0ciA9PiB7CiAgICAgICAgICBpZiAoc3RyLnRvTG93ZXJDYXNlKCkgPT0gImFuZCIpCiAgICAgICAgICAgICAgcmV0dXJuICImIjsKICAgICAgICAgIGVsc2UgaWYgKHN0ci50b0xvd2VyQ2FzZSgpID09ICJvciIpCiAgICAgICAgICAgICAgcmV0dXJuICJ8IjsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXR1cm4gc3RyOwogICAgICB9KQogICAgICAgICAgLmRlc2MoIidhbmQnIG9yICdvciciKSwKICAgICAgLy8gQSBkYXRlIHdoaWNoIGNhbiBiZSBZWVlZLU1NWy1ERFRISDptbTpzc10uCiAgICAgIHJvb3REYXRlOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7NH0vKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLSIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoeWVhciwgXywgbW9udGgpID0+IHsKICAgICAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KHsgeWVhcjogTnVtYmVyLnBhcnNlSW50KHllYXIpLCBtb250aDogTnVtYmVyLnBhcnNlSW50KG1vbnRoKSB9KTsKICAgICAgfSkuZGVzYygiZGF0ZSBpbiBmb3JtYXQgWVlZWS1NTVstRERUSEgtTU0tU1MuTVNdIiksCiAgICAgIGRhdGVTaG9ydGhhbmQ6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdCguLi5PYmplY3Qua2V5cyhEQVRFX1NIT1JUSEFORFMpCiAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCkKICAgICAgICAgIC5tYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZykpLAogICAgICBkYXRlOiBxID0+IGNoYWluT3B0KHEucm9vdERhdGUsICh5bSkgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCItIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBkYXkpID0+IHltLnNldCh7IGRheTogTnVtYmVyLnBhcnNlSW50KGRheSkgfSkpLCAoeW1kKSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIlQiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKF8sIGhvdXIpID0+IHltZC5zZXQoeyBob3VyOiBOdW1iZXIucGFyc2VJbnQoaG91cikgfSkpLCAoeW1kaCkgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCI6IiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBtaW51dGUpID0+IHltZGguc2V0KHsgbWludXRlOiBOdW1iZXIucGFyc2VJbnQobWludXRlKSB9KSksICh5bWRobSkgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCI6IiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBzZWNvbmQpID0+IHltZGhtLnNldCh7IHNlY29uZDogTnVtYmVyLnBhcnNlSW50KHNlY29uZCkgfSkpLCAoeW1kaG1zKSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLiIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHszfS8pLCAoXywgbWlsbGlzZWNvbmQpID0+IHltZGhtcy5zZXQoeyBtaWxsaXNlY29uZDogTnVtYmVyLnBhcnNlSW50KG1pbGxpc2Vjb25kKSB9KSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdWNjZWVkKHltZGhtcykgLy8gcGFzcwogICAgICApLCAoZHQpID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIrIikub3IocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLSIpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7MSwyfSg6XGR7Mn0pPy8pLCAocG0sIGhyKSA9PiBkdC5zZXRab25lKCJVVEMiICsgcG0gKyBociwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJaIiksICgpID0+IGR0LnNldFpvbmUoInV0YyIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiWyIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9bMC05QS1aYS16Ky1cL10rL3UpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJdIiksIChfYSwgem9uZSwgX2IpID0+IGR0LnNldFpvbmUoem9uZSwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pKSkpCiAgICAgICAgICAuYXNzZXJ0KChkdCkgPT4gZHQuaXNWYWxpZCwgInZhbGlkIGRhdGUiKQogICAgICAgICAgLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSIpLAogICAgICAvLyBBIGRhdGUsIHBsdXMgdmFyaW91cyBzaG9ydGhhbmQgdGltZXMgb2YgZGF5IGl0IGNvdWxkIGJlLgogICAgICBkYXRlUGx1czogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHEuZGF0ZVNob3J0aGFuZC5tYXAoZCA9PiBEQVRFX1NIT1JUSEFORFNbZF0oKSksIHEuZGF0ZSkuZGVzYygiZGF0ZSBpbiBmb3JtYXQgWVlZWS1NTVstRERUSEgtTU0tU1MuTVNdIG9yIGluIHNob3J0aGFuZCIpLAogICAgICAvLyBBIGR1cmF0aW9uIG9mIHRpbWUuCiAgICAgIGR1cmF0aW9uVHlwZTogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KC4uLk9iamVjdC5rZXlzKERVUkFUSU9OX1RZUEVTKQogICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpCiAgICAgICAgICAubWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcpKSwKICAgICAgZHVyYXRpb246IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChxLm51bWJlciwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZHVyYXRpb25UeXBlLCAoY291bnQsIF8sIHQpID0+IERVUkFUSU9OX1RZUEVTW3RdLm1hcFVuaXRzKHggPT4geCAqIGNvdW50KSkKICAgICAgICAgIC5zZXBCeTEocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLm9yKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC5tYXAoZHVyYXRpb25zID0+IGR1cmF0aW9ucy5yZWR1Y2UoKHAsIGMpID0+IHAucGx1cyhjKSkpCiAgICAgICAgICAuZGVzYygiZHVyYXRpb24gbGlrZSA0aHIybWluIiksCiAgICAgIC8vIEEgcmF3IG51bGwgdmFsdWUuCiAgICAgIHJhd051bGw6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygibnVsbCIpLAogICAgICAvLyBTb3VyY2UgcGFyc2luZy4KICAgICAgdGFnU291cmNlOiBxID0+IHEudGFnLm1hcCh0YWcgPT4gU291cmNlcy50YWcodGFnKSksCiAgICAgIGNzdlNvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoImNzdigiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5zdHJpbmcsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBwYXRoLCBfMikgPT4gU291cmNlcy5jc3YocGF0aCkpLAogICAgICBsaW5rSW5jb21pbmdTb3VyY2U6IHEgPT4gcS5saW5rLm1hcChsaW5rID0+IFNvdXJjZXMubGluayhsaW5rLnBhdGgsIHRydWUpKSwKICAgICAgbGlua091dGdvaW5nU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygib3V0Z29pbmcoIikuc2tpcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEubGluaywgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAoXzEsIGxpbmssIF8yKSA9PiBTb3VyY2VzLmxpbmsobGluay5wYXRoLCBmYWxzZSkpLAogICAgICBmb2xkZXJTb3VyY2U6IHEgPT4gcS5zdHJpbmcubWFwKHN0ciA9PiBTb3VyY2VzLmZvbGRlcihzdHIpKSwKICAgICAgcGFyZW5zU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5zb3VyY2UsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIpIiksIChfMSwgXzIsIGZpZWxkLCBfMywgXzQpID0+IGZpZWxkKSwKICAgICAgbmVnYXRlU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCItIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiEiKSksIHEuYXRvbVNvdXJjZSwgKF8sIHNvdXJjZSkgPT4gU291cmNlcy5uZWdhdGUoc291cmNlKSksCiAgICAgIGF0b21Tb3VyY2U6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLnBhcmVuc1NvdXJjZSwgcS5uZWdhdGVTb3VyY2UsIHEubGlua091dGdvaW5nU291cmNlLCBxLmxpbmtJbmNvbWluZ1NvdXJjZSwgcS5mb2xkZXJTb3VyY2UsIHEudGFnU291cmNlLCBxLmNzdlNvdXJjZSksCiAgICAgIGJpbmFyeU9wU291cmNlOiBxID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmF0b21Tb3VyY2UsIHEuYmluYXJ5Qm9vbGVhbk9wLm1hcChzID0+IHMpLCBTb3VyY2VzLmJpbmFyeU9wKSwKICAgICAgc291cmNlOiBxID0+IHEuYmluYXJ5T3BTb3VyY2UsCiAgICAgIC8vIEZpZWxkIHBhcnNpbmcuCiAgICAgIHZhcmlhYmxlRmllbGQ6IHEgPT4gcS5pZGVudGlmaWVyCiAgICAgICAgICAuY2hhaW4ociA9PiB7CiAgICAgICAgICBpZiAoS0VZV09SRFMuaW5jbHVkZXMoci50b1VwcGVyQ2FzZSgpKSkgewogICAgICAgICAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuZmFpbCgiVmFyaWFibGUgZmllbGRzIGNhbm5vdCBiZSBhIGtleXdvcmQgKCIgKyBLRVlXT1JEUy5qb2luKCIgb3IgIikgKyAiKSIpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdWNjZWVkKEZpZWxkcy52YXJpYWJsZShyKSk7CiAgICAgICAgICB9CiAgICAgIH0pCiAgICAgICAgICAuZGVzYygidmFyaWFibGUiKSwKICAgICAgbnVtYmVyRmllbGQ6IHEgPT4gcS5udW1iZXIubWFwKHZhbCA9PiBGaWVsZHMubGl0ZXJhbCh2YWwpKS5kZXNjKCJudW1iZXIiKSwKICAgICAgc3RyaW5nRmllbGQ6IHEgPT4gcS5zdHJpbmcubWFwKHZhbCA9PiBGaWVsZHMubGl0ZXJhbCh2YWwpKS5kZXNjKCJzdHJpbmciKSwKICAgICAgYm9vbEZpZWxkOiBxID0+IHEuYm9vbC5tYXAodmFsID0+IEZpZWxkcy5saXRlcmFsKHZhbCkpLmRlc2MoImJvb2xlYW4iKSwKICAgICAgZGF0ZUZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiZGF0ZSgiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZGF0ZVBsdXMsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIpIiksIChwcmVmaXgsIF8xLCBkYXRlLCBfMiwgcG9zdGZpeCkgPT4gRmllbGRzLmxpdGVyYWwoZGF0ZSkpLmRlc2MoImRhdGUiKSwKICAgICAgZHVyYXRpb25GaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoImR1cigiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZHVyYXRpb24sIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIpIiksIChwcmVmaXgsIF8xLCBkdXIsIF8yLCBwb3N0Zml4KSA9PiBGaWVsZHMubGl0ZXJhbChkdXIpKS5kZXNjKCJkdXJhdGlvbiIpLAogICAgICBudWxsRmllbGQ6IHEgPT4gcS5yYXdOdWxsLm1hcChfID0+IEZpZWxkcy5OVUxMKSwKICAgICAgbGlua0ZpZWxkOiBxID0+IHEubGluay5tYXAoZiA9PiBGaWVsZHMubGl0ZXJhbChmKSksCiAgICAgIGxpc3RGaWVsZDogcSA9PiBxLmZpZWxkCiAgICAgICAgICAuc2VwQnkocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpKQogICAgICAgICAgLndyYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiWyIpLnNraXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZS50aGVuKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIl0iKSkpCiAgICAgICAgICAubWFwKGwgPT4gRmllbGRzLmxpc3QobCkpCiAgICAgICAgICAuZGVzYygibGlzdCAoJ1sxLCAyLCAzXScpIiksCiAgICAgIG9iamVjdEZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5pZGVudGlmaWVyLm9yKHEuc3RyaW5nKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiOiIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLmZpZWxkLCAobmFtZSwgX3NlcCwgdmFsdWUpID0+IHsKICAgICAgICAgIHJldHVybiB7IG5hbWUsIHZhbHVlIH07CiAgICAgIH0pCiAgICAgICAgICAuc2VwQnkocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpKQogICAgICAgICAgLndyYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygieyIpLnNraXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZS50aGVuKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIn0iKSkpCiAgICAgICAgICAubWFwKHZhbHMgPT4gewogICAgICAgICAgbGV0IHJlcyA9IHt9OwogICAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgdmFscykKICAgICAgICAgICAgICByZXNbZW50cnkubmFtZV0gPSBlbnRyeS52YWx1ZTsKICAgICAgICAgIHJldHVybiBGaWVsZHMub2JqZWN0KHJlcyk7CiAgICAgIH0pCiAgICAgICAgICAuZGVzYygib2JqZWN0ICgneyBhOiAxLCBiOiAyIH0nKSIpLAogICAgICBhdG9tSW5saW5lRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLmRhdGUsIHEuZHVyYXRpb24ubWFwKGQgPT4gbm9ybWFsaXplRHVyYXRpb24oZCkpLCBxLnN0cmluZywgcS50YWcsIHEuZW1iZWRMaW5rLCBxLmJvb2wsIHEubnVtYmVyLCBxLnJhd051bGwpLAogICAgICBpbmxpbmVGaWVsZExpc3Q6IHEgPT4gcS5hdG9tSW5saW5lRmllbGQuc2VwQnkocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLmxvb2thaGVhZChxLmF0b21JbmxpbmVGaWVsZCkpLAogICAgICBpbmxpbmVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5hdG9tSW5saW5lRmllbGQsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5pbmxpbmVGaWVsZExpc3QsIChmLCBfcywgbCkgPT4gW2ZdLmNvbmNhdChsKSksIHEuYXRvbUlubGluZUZpZWxkKSwKICAgICAgYXRvbUZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQoCiAgICAgIC8vIFBsYWNlIGVtYmVkIGxpbmtzIGFib3ZlIG5lZ2F0ZWQgZmllbGRzIGFzIHRoZXkgYXJlIHRoZSBzcGVjaWFsIHBhcnNlciBjYXNlICchW1t0aGluZ11dJyBhbmQgYXJlIGdlbmVyYWxseSB1bmFtYmlnaW91cy4KICAgICAgcS5lbWJlZExpbmsubWFwKGwgPT4gRmllbGRzLmxpdGVyYWwobCkpLCBxLm5lZ2F0ZWRGaWVsZCwgcS5saW5rRmllbGQsIHEubGlzdEZpZWxkLCBxLm9iamVjdEZpZWxkLCBxLmxhbWJkYUZpZWxkLCBxLnBhcmVuc0ZpZWxkLCBxLmJvb2xGaWVsZCwgcS5udW1iZXJGaWVsZCwgcS5zdHJpbmdGaWVsZCwgcS5kYXRlRmllbGQsIHEuZHVyYXRpb25GaWVsZCwgcS5udWxsRmllbGQsIHEudmFyaWFibGVGaWVsZCksCiAgICAgIGluZGV4RmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChxLmF0b21GaWVsZCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLmRvdFBvc3RmaXgsIHEuaW5kZXhQb3N0Zml4LCBxLmZ1bmN0aW9uUG9zdGZpeCkubWFueSgpLCAob2JqLCBwb3N0Zml4ZXMpID0+IHsKICAgICAgICAgIGxldCByZXN1bHQgPSBvYmo7CiAgICAgICAgICBmb3IgKGxldCBwb3N0IG9mIHBvc3RmaXhlcykgewogICAgICAgICAgICAgIHN3aXRjaCAocG9zdC50eXBlKSB7CiAgICAgICAgICAgICAgICAgIGNhc2UgImRvdCI6CiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuaW5kZXgocmVzdWx0LCBGaWVsZHMubGl0ZXJhbChwb3N0LmZpZWxkKSk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgY2FzZSAiaW5kZXgiOgogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRmllbGRzLmluZGV4KHJlc3VsdCwgcG9zdC5maWVsZCk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgY2FzZSAiZnVuY3Rpb24iOgogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRmllbGRzLmZ1bmMocmVzdWx0LCBwb3N0LmZpZWxkcyk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9KSwKICAgICAgbmVnYXRlZEZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiISIpLCBxLmluZGV4RmllbGQsIChfLCBmaWVsZCkgPT4gRmllbGRzLm5lZ2F0ZShmaWVsZCkpLmRlc2MoIm5lZ2F0ZWQgZmllbGQiKSwKICAgICAgcGFyZW5zRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIoIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmZpZWxkLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAoXzEsIF8yLCBmaWVsZCwgXzMsIF80KSA9PiBmaWVsZCksCiAgICAgIGxhbWJkYUZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5pZGVudGlmaWVyCiAgICAgICAgICAuc2VwQnkocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpKQogICAgICAgICAgLndyYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIpIikudHJpbShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCI9PiIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLmZpZWxkLCAoaWRlbnQsIF9pZ25vcmUsIHZhbHVlKSA9PiB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAibGFtYmRhIiwgYXJndW1lbnRzOiBpZGVudCwgdmFsdWUgfTsKICAgICAgfSksCiAgICAgIGRvdFBvc3RmaXg6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIuIiksIHEuaWRlbnRpZmllciwgKF8sIGZpZWxkKSA9PiB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZG90IiwgZmllbGQ6IGZpZWxkIH07CiAgICAgIH0pLAogICAgICBpbmRleFBvc3RmaXg6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJbIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmZpZWxkLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiXSIpLCAoXywgXzIsIGZpZWxkLCBfMywgXzQpID0+IHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJpbmRleCIsIGZpZWxkIH07CiAgICAgIH0pLAogICAgICBmdW5jdGlvblBvc3RmaXg6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIoIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmZpZWxkLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIpIiksIChfLCBfMSwgZmllbGRzLCBfMiwgXzMpID0+IHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJmdW5jdGlvbiIsIGZpZWxkcyB9OwogICAgICB9KSwKICAgICAgLy8gVGhlIHByZWNlZGVuY2UgaGllcmFyY2h5IG9mIG9wZXJhdG9ycyAtIG11bHRpcGx5L2RpdmlkZSwgYWRkL3N1YnRyYWN0LCBjb21wYXJlLCBhbmQgdGhlbiBib29sZWFuIG9wZXJhdGlvbnMuCiAgICAgIGJpbmFyeU11bERpdkZpZWxkOiBxID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmluZGV4RmllbGQsIHEuYmluYXJ5TXVsRGl2LCBGaWVsZHMuYmluYXJ5T3ApLAogICAgICBiaW5hcnlQbHVzTWludXNGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5iaW5hcnlNdWxEaXZGaWVsZCwgcS5iaW5hcnlQbHVzTWludXMsIEZpZWxkcy5iaW5hcnlPcCksCiAgICAgIGJpbmFyeUNvbXBhcmVGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5iaW5hcnlQbHVzTWludXNGaWVsZCwgcS5iaW5hcnlDb21wYXJlT3AsIEZpZWxkcy5iaW5hcnlPcCksCiAgICAgIGJpbmFyeUJvb2xlYW5GaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5iaW5hcnlDb21wYXJlRmllbGQsIHEuYmluYXJ5Qm9vbGVhbk9wLCBGaWVsZHMuYmluYXJ5T3ApLAogICAgICBiaW5hcnlPcEZpZWxkOiBxID0+IHEuYmluYXJ5Qm9vbGVhbkZpZWxkLAogICAgICBmaWVsZDogcSA9PiBxLmJpbmFyeU9wRmllbGQsCiAgfSk7CgogIC8qKiBQYXJzZSBpbmxpbmUgZmllbGRzIGFuZCBvdGhlciBlbWJlZGRlZCBtZXRhZGF0YSBpbiBhIGxpbmUuICovCiAgLyoqIFRoZSB3cmFwcGVyIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgYW4gaW5saW5lIGZpZWxkLiAqLwogIGNvbnN0IElOTElORV9GSUVMRF9XUkFQUEVSUyA9IE9iamVjdC5mcmVlemUoewogICAgICAiWyI6ICJdIiwKICAgICAgIigiOiAiKSIsCiAgfSk7CiAgLyoqCiAgICogRmluZCBhIG1hdGNoaW5nIGNsb3NpbmcgYnJhY2tldCB0aGF0IG9jY3VycyBhdCBvciBhZnRlciBgc3RhcnRgLCByZXNwZWN0aW5nIG5lc3RpbmcgYW5kIGVzY2FwZXMuIElmIGZvdW5kLAogICAqIHJldHVybnMgdGhlIHZhbHVlIGNvbnRhaW5lZCB3aXRoaW4gYW5kIHRoZSBzdHJpbmcgaW5kZXggYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgdmFsdWUuCiAgICovCiAgZnVuY3Rpb24gZmluZENsb3NpbmcobGluZSwgc3RhcnQsIG9wZW4sIGNsb3NlKSB7CiAgICAgIGxldCBuZXN0aW5nID0gMDsKICAgICAgbGV0IGVzY2FwZWQgPSBmYWxzZTsKICAgICAgZm9yIChsZXQgaW5kZXggPSBzdGFydDsgaW5kZXggPCBsaW5lLmxlbmd0aDsgaW5kZXgrKykgewogICAgICAgICAgbGV0IGNoYXIgPSBsaW5lLmNoYXJBdChpbmRleCk7CiAgICAgICAgICAvLyBBbGxvd3MgZm9yIGRvdWJsZSBlc2NhcGVzIGxpa2UgJ1xcJyB0byBiZSByZW5kZXJlZCBub3JtYWxseS4KICAgICAgICAgIGlmIChjaGFyID09ICJcXCIpIHsKICAgICAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWQ7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBJZiBlc2NhcGVkLCBpZ25vcmUgdGhlIG5leHQgY2hhcmFjdGVyIGZvciBjb21wdXRpbmcgbmVzdGluZywgcmVnYXJkbGVzcyBvZiB3aGF0IGl0IGlzLgogICAgICAgICAgaWYgKGVzY2FwZWQpIHsKICAgICAgICAgICAgICBlc2NhcGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoY2hhciA9PSBvcGVuKQogICAgICAgICAgICAgIG5lc3RpbmcrKzsKICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT0gY2xvc2UpCiAgICAgICAgICAgICAgbmVzdGluZy0tOwogICAgICAgICAgLy8gT25seSBvY2N1cnMgaWYgd2UgYXJlIG9uIGEgY2xvc2UgY2hhcmFjdGVyIGFuZCB0cmhlcmUgaXMgbm8gbW9yZSBuZXN0aW5nLgogICAgICAgICAgaWYgKG5lc3RpbmcgPCAwKQogICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBsaW5lLnN1YnN0cmluZyhzdGFydCwgaW5kZXgpLnRyaW0oKSwgZW5kSW5kZXg6IGluZGV4ICsgMSB9OwogICAgICAgICAgZXNjYXBlZCA9IGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgfQogIC8qKiBGaW5kIHRoZSAnOjonIHNlcGFyYXRvciBpbiBhbiBpbmxpbmUgZmllbGQuICovCiAgZnVuY3Rpb24gZmluZFNlcGFyYXRvcihsaW5lLCBzdGFydCkgewogICAgICBsZXQgc2VwID0gbGluZS5pbmRleE9mKCI6OiIsIHN0YXJ0KTsKICAgICAgaWYgKHNlcCA8IDApCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICByZXR1cm4geyBrZXk6IGxpbmUuc3Vic3RyaW5nKHN0YXJ0LCBzZXApLnRyaW0oKSwgdmFsdWVJbmRleDogc2VwICsgMiB9OwogIH0KICAvKiogVHJ5IHRvIGNvbXBsZXRlbHkgcGFyc2UgYW4gaW5saW5lIGZpZWxkIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4gQXNzdWVtcyBgc3RhcnRgIGlzIG9uIGEgd3JhcHBpbmcgY2hhcmFjdGVyLiAqLwogIGZ1bmN0aW9uIGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIHN0YXJ0KSB7CiAgICAgIGxldCBvcGVuID0gbGluZS5jaGFyQXQoc3RhcnQpOwogICAgICBsZXQga2V5ID0gZmluZFNlcGFyYXRvcihsaW5lLCBzdGFydCArIDEpOwogICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICAvLyBGYWlsIHRoZSBtYXRjaCBpZiB3ZSBmaW5kIGFueSBzZXBhcmF0b3IgY2hhcmFjdGVycyAobm90IGFsbG93ZWQgaW4ga2V5cykuCiAgICAgIGZvciAobGV0IHNlcCBvZiBPYmplY3Qua2V5cyhJTkxJTkVfRklFTERfV1JBUFBFUlMpLmNvbmNhdChPYmplY3QudmFsdWVzKElOTElORV9GSUVMRF9XUkFQUEVSUykpKSB7CiAgICAgICAgICBpZiAoa2V5LmtleS5pbmNsdWRlcyhzZXApKQogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIH0KICAgICAgbGV0IHZhbHVlID0gZmluZENsb3NpbmcobGluZSwga2V5LnZhbHVlSW5kZXgsIG9wZW4sIElOTElORV9GSUVMRF9XUkFQUEVSU1tvcGVuXSk7CiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgcmV0dXJuIHsKICAgICAgICAgIGtleToga2V5LmtleSwKICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSwKICAgICAgICAgIHN0YXJ0OiBzdGFydCwKICAgICAgICAgIHN0YXJ0VmFsdWU6IGtleS52YWx1ZUluZGV4LAogICAgICAgICAgZW5kOiB2YWx1ZS5lbmRJbmRleCwKICAgICAgICAgIHdyYXBwaW5nOiBvcGVuLAogICAgICB9OwogIH0KICAvKiogUGFyc2UgYSB0ZXh0dWFsIGlubGluZSBmaWVsZCB2YWx1ZSBpbnRvIHNvbWV0aGluZyB3ZSBjYW4gd29yayB3aXRoLiAqLwogIGZ1bmN0aW9uIHBhcnNlSW5saW5lVmFsdWUodmFsdWUpIHsKICAgICAgLy8gRW1wdHkgaW5saW5lIHZhbHVlcyAoaS5lLiwgbm8gdGV4dCkgc2hvdWxkIG1hcCB0byBudWxsIHRvIG1hdGNoIGxvbmctdGVybSBEYXRhdmlldyBzZW1hbnRpY3MuCiAgICAgIC8vIE51bGwgaXMgYWxzbyBhIG1vcmUgdW5pdmVyc2FsIHR5cGUgdG8gZGVhbCB3aXRoIHRoYW4gc3RyaW5ncywgc2luY2UgYWxsIGZ1bmN0aW9ucyBhY2NlcHQgbnVsbHMuCiAgICAgIGlmICh2YWx1ZS50cmltKCkgPT0gIiIpCiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgLy8gVGhlIHN0cmlwcGVkIGxpdGVyYWwgZmllbGQgcGFyc2VyIHVuZGVyc3RhbmRzIGFsbCBvZiB0aGUgbm9uLWFycmF5L25vbi1vYmplY3QgZmllbGRzIGFuZCBjYW4gcGFyc2UgdGhlbSBmb3IgdXMuCiAgICAgIC8vIElubGluZSBmaWVsZCBvYmplY3RzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZDsgaW5saW5lIGFycmF5IG9iamVjdHMgaGF2ZSB0byBiZSBoYW5kbGVkIGJ5IHRoZSBwYXJzZXIKICAgICAgLy8gc2VwYXJhdGVseS4KICAgICAgbGV0IGlubGluZSA9IEVYUFJFU1NJT04uaW5saW5lRmllbGQucGFyc2UodmFsdWUpOwogICAgICBpZiAoaW5saW5lLnN0YXR1cykKICAgICAgICAgIHJldHVybiBpbmxpbmUudmFsdWU7CiAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiB2YWx1ZTsKICB9CiAgLyoqIEV4dHJhY3RzIGlubGluZSBmaWVsZHMgb2YgdGhlIGZvcm0gJ1trZXk6OiB2YWx1ZV0nIGZyb20gYSBsaW5lIG9mIHRleHQuIFRoaXMgaXMgZG9uZSBpbiBhIHJlbGF0aXZlbHkKICAgKiAicm9idXN0IiB3YXkgdG8gYXZvaWQgZmFpbGluZyBkdWUgdG8gYmFkIG5lc3Rpbmcgb3Igb3RoZXIgaW50ZXJmZXJpbmcgTWFya2Rvd24gc3ltYm9sczoKICAgKgogICAqIC0gTG9vayBmb3IgYW55IHdyYXBwZXJzICgnWycgYW5kICcoJykgaW4gdGhlIGxpbmUsIHRyeWluZyB0byBwYXJzZSB3aGF0ZXZlciBjb21lcyBhZnRlciBpdCBhcyBhbiBpbmxpbmUga2V5OjouCiAgICogLSBJZiBzdWNjZXNzZnVsLCBzY2FuIHVudGlsIHlvdSBmaW5kIGEgbWF0Y2hpbmcgZW5kIGJyYWNrZXQsIGFuZCBwYXJzZSB3aGF0ZXZlciByZW1haW5zIGFzIGFuIGlubGluZSB2YWx1ZS4KICAgKi8KICBmdW5jdGlvbiBleHRyYWN0SW5saW5lRmllbGRzKGxpbmUsIGluY2x1ZGVUYXNrRmllbGRzID0gZmFsc2UpIHsKICAgICAgbGV0IGZpZWxkcyA9IFtdOwogICAgICBmb3IgKGxldCB3cmFwcGVyIG9mIE9iamVjdC5rZXlzKElOTElORV9GSUVMRF9XUkFQUEVSUykpIHsKICAgICAgICAgIGxldCBmb3VuZEluZGV4ID0gbGluZS5pbmRleE9mKHdyYXBwZXIpOwogICAgICAgICAgd2hpbGUgKGZvdW5kSW5kZXggPj0gMCkgewogICAgICAgICAgICAgIGxldCBwYXJzZWRGaWVsZCA9IGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIGZvdW5kSW5kZXgpOwogICAgICAgICAgICAgIGlmICghcGFyc2VkRmllbGQpIHsKICAgICAgICAgICAgICAgICAgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyLCBmb3VuZEluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBmaWVsZHMucHVzaChwYXJzZWRGaWVsZCk7CiAgICAgICAgICAgICAgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyLCBwYXJzZWRGaWVsZC5lbmQpOwogICAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChpbmNsdWRlVGFza0ZpZWxkcykKICAgICAgICAgIGZpZWxkcyA9IGZpZWxkcy5jb25jYXQoZXh0cmFjdFNwZWNpYWxUYXNrRmllbGRzKGxpbmUpKTsKICAgICAgZmllbGRzLnNvcnQoKGEsIGIpID0+IGEuc3RhcnQgLSBiLnN0YXJ0KTsKICAgICAgbGV0IGZpbHRlcmVkRmllbGRzID0gW107CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBpZiAoaSA9PSAwIHx8IGZpbHRlcmVkRmllbGRzW2ZpbHRlcmVkRmllbGRzLmxlbmd0aCAtIDFdLmVuZCA8IGZpZWxkc1tpXS5zdGFydCkgewogICAgICAgICAgICAgIGZpbHRlcmVkRmllbGRzLnB1c2goZmllbGRzW2ldKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZmlsdGVyZWRGaWVsZHM7CiAgfQogIC8qKiBWYWxpZGF0ZXMgdGhhdCBhIHJhdyBmaWVsZCBuYW1lIGhhcyBhIHZhbGlkIGZvcm0uICovCiAgY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJUID0gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAidSIpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvWzAtOVxwe0xldHRlcn1cd1xzXy8tXSsvdSkpCiAgICAgIC5tYW55KCkKICAgICAgLm1hcChwYXJ0cyA9PiBwYXJ0cy5qb2luKCIiKSk7CiAgY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJTRVIgPSBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9bXjAtOVx3XHB7TGV0dGVyfV0qL3UpCiAgICAgIC50aGVuKEZVTExfTElORV9LRVlfUEFSVCkKICAgICAgLnNraXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvW19cKn5gXSovdSkpOwogIC8qKiBBdHRlbXB0IHRvIGV4dHJhY3QgYSBmdWxsLWxpbmUgZmllbGQgKEtleTo6IFZhbHVlIGNvbnN1bWluZyB0aGUgZW50aXJlIGNvbnRlbnQgbGluZSkuICovCiAgZnVuY3Rpb24gZXh0cmFjdEZ1bGxMaW5lRmllbGQodGV4dCkgewogICAgICBsZXQgc2VwID0gZmluZFNlcGFyYXRvcih0ZXh0LCAwKTsKICAgICAgaWYgKCFzZXApCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICAvLyBXZSBuZWVkIHRvIHBvc3QtcHJvY2VzcyB0aGUga2V5IHRvIGRyb3AgdW5uZWNlc3Nhcnkgb3BlbmluZyBhbm5vdGF0aW9ucyBhcyB3ZWxsIGFzCiAgICAgIC8vIGRyb3Agc3Vycm91bmRpbmcgTWFya2Rvd24uCiAgICAgIGxldCByZWFsS2V5ID0gRlVMTF9MSU5FX0tFWV9QQVJTRVIucGFyc2Uoc2VwLmtleSk7CiAgICAgIGlmICghcmVhbEtleS5zdGF0dXMpCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICByZXR1cm4gewogICAgICAgICAga2V5OiByZWFsS2V5LnZhbHVlLAogICAgICAgICAgdmFsdWU6IHRleHQuc3Vic3RyaW5nKHNlcC52YWx1ZUluZGV4KS50cmltKCksCiAgICAgICAgICBzdGFydDogMCwKICAgICAgICAgIHN0YXJ0VmFsdWU6IHNlcC52YWx1ZUluZGV4LAogICAgICAgICAgZW5kOiB0ZXh0Lmxlbmd0aCwKICAgICAgfTsKICB9CiAgY29uc3QgQ1JFQVRFRF9EQVRFX1JFR0VYID0gL1x1ezI3OTV9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91OwogIGNvbnN0IERVRV9EQVRFX1JFR0VYID0gLyg/Olx1ezFGNEM1fXxcdXsxRjRDNn18XHV7MUY1RDN9XHV7RkUwRn0/KVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsKICBjb25zdCBET05FX0RBVEVfUkVHRVggPSAvXHV7MjcwNX1ccyooXGR7NH0tXGR7Mn0tXGR7Mn0pL3U7CiAgY29uc3QgU0NIRURVTEVEX0RBVEVfUkVHRVggPSAvW1x1ezIzRjN9XHV7MjMxQn1dXHMqKFxkezR9LVxkezJ9LVxkezJ9KS91OwogIGNvbnN0IFNUQVJUX0RBVEVfUkVHRVggPSAvXHV7MUY2RUJ9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91OwogIGNvbnN0IEVNT0pJX1JFR0VYRVMgPSBbCiAgICAgIHsgcmVnZXg6IENSRUFURURfREFURV9SRUdFWCwga2V5OiAiY3JlYXRlZCIgfSwKICAgICAgeyByZWdleDogU1RBUlRfREFURV9SRUdFWCwga2V5OiAic3RhcnQiIH0sCiAgICAgIHsgcmVnZXg6IFNDSEVEVUxFRF9EQVRFX1JFR0VYLCBrZXk6ICJzY2hlZHVsZWQiIH0sCiAgICAgIHsgcmVnZXg6IERVRV9EQVRFX1JFR0VYLCBrZXk6ICJkdWUiIH0sCiAgICAgIHsgcmVnZXg6IERPTkVfREFURV9SRUdFWCwga2V5OiAiY29tcGxldGlvbiIgfSwKICBdOwogIC8qKiBQYXJzZSBzcGVjaWFsIGNvbXBsZXRlZC9kdWUvZG9uZSB0YXNrIGZpZWxkcyB3aGljaCBhcmUgbWFya2VkIHZpYSBlbW9qaS4gKi8KICBmdW5jdGlvbiBleHRyYWN0U3BlY2lhbFRhc2tGaWVsZHMobGluZSkgewogICAgICBsZXQgcmVzdWx0cyA9IFtdOwogICAgICBmb3IgKGxldCB7IHJlZ2V4LCBrZXkgfSBvZiBFTU9KSV9SRUdFWEVTKSB7CiAgICAgICAgICBjb25zdCBtYXRjaCA9IHJlZ2V4LmV4ZWMobGluZSk7CiAgICAgICAgICBpZiAoIW1hdGNoKQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgcmVzdWx0cy5wdXNoKHsKICAgICAgICAgICAgICBrZXksCiAgICAgICAgICAgICAgdmFsdWU6IG1hdGNoWzFdLAogICAgICAgICAgICAgIHN0YXJ0OiBtYXRjaC5pbmRleCwKICAgICAgICAgICAgICBzdGFydFZhbHVlOiBtYXRjaC5pbmRleCArIDEsCiAgICAgICAgICAgICAgZW5kOiBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCwKICAgICAgICAgICAgICB3cmFwcGluZzogImVtb2ppLXNob3J0aGFuZCIsCiAgICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICB9CgogIC8qKiBBbGwgZXh0cmFjdGVkIG1hcmtkb3duIGZpbGUgbWV0YWRhdGEgb2J0YWluZWQgZnJvbSBhIGZpbGUuICovCiAgY2xhc3MgUGFnZU1ldGFkYXRhIHsKICAgICAgY29uc3RydWN0b3IocGF0aCwgaW5pdCkgewogICAgICAgICAgdGhpcy5wYXRoID0gcGF0aDsKICAgICAgICAgIHRoaXMuZmllbGRzID0gbmV3IE1hcCgpOwogICAgICAgICAgdGhpcy5mcm9udG1hdHRlciA9IHt9OwogICAgICAgICAgdGhpcy50YWdzID0gbmV3IFNldCgpOwogICAgICAgICAgdGhpcy5hbGlhc2VzID0gbmV3IFNldCgpOwogICAgICAgICAgdGhpcy5saW5rcyA9IFtdOwogICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBpbml0KTsKICAgICAgICAgIHRoaXMubGlzdHMgPSAodGhpcy5saXN0cyB8fCBbXSkubWFwKGwgPT4gbmV3IExpc3RJdGVtKGwpKTsKICAgICAgfQogICAgICAvKiogQ2Fub25pY2FsaXplIHJhdyBsaW5rcyBhbmQgb3RoZXIgZGF0YSBpbiBwYXJ0aWFsIGRhdGEgd2l0aCBub3JtYWxpemVycywgcmV0dXJuaW5nIGEgY29tcGxldGVkIG9iamVjdC4gKi8KICAgICAgc3RhdGljIGNhbm9uaWNhbGl6ZShkYXRhLCBsaW5rTm9ybWFsaXplcikgewogICAgICAgICAgLy8gTXV0YXRlIHRoZSBkYXRhIGZvciBub3csIHdoaWNoIGlzIHByb2JhYmx5IGEgYmFkIGlkZWEgYnV0Li4uIGFsbCB3ZWxsLgogICAgICAgICAgaWYgKGRhdGEuZnJvbnRtYXR0ZXIpIHsKICAgICAgICAgICAgICBkYXRhLmZyb250bWF0dGVyID0gVmFsdWVzLm1hcExlYXZlcyhkYXRhLmZyb250bWF0dGVyLCB0ID0+IFZhbHVlcy5pc0xpbmsodCkgPyBsaW5rTm9ybWFsaXplcih0KSA6IHQpOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGRhdGEuZmllbGRzKSB7CiAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGRhdGEuZmllbGRzLmVudHJpZXMoKSkgewogICAgICAgICAgICAgICAgICBkYXRhLmZpZWxkcy5zZXQoa2V5LCBWYWx1ZXMubWFwTGVhdmVzKHZhbHVlLCB0ID0+IChWYWx1ZXMuaXNMaW5rKHQpID8gbGlua05vcm1hbGl6ZXIodCkgOiB0KSkpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChkYXRhLmxpc3RzKSB7CiAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBkYXRhLmxpc3RzKSB7CiAgICAgICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBpdGVtLmZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZmllbGRzLnNldChrZXksIHZhbHVlLm1hcCh4ID0+IFZhbHVlcy5tYXBMZWF2ZXMoeCwgdCA9PiAoVmFsdWVzLmlzTGluayh0KSA/IGxpbmtOb3JtYWxpemVyKHQpIDogdCkpKSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZGF0YS5saW5rcykgewogICAgICAgICAgICAgIGRhdGEubGlua3MgPSBkYXRhLmxpbmtzLm1hcChsID0+IGxpbmtOb3JtYWxpemVyKGwpKTsKICAgICAgICAgIH0KICAgICAgICAgIC8vIFRoaXMgaXMgcHJldHR5IHVnbHksIGJ1dCBpdCdzIG5vdCBwb3NzaWJsZSB0byBub3JtYWxpemUgb24gdGhlIHdvcmtlciB0aHJlYWQgdGhhdCBkb2VzIHBhcnNpbmcuCiAgICAgICAgICAvLyBUaGUgYmVzdCB3YXkgdG8gaW1wcm92ZSB0aGlzIGlzIHRvIGluc3RlYWQganVzdCBjYW5vbmljYWxpemUgdGhlIGVudGlyZSBkYXRhIG9iamVjdDsgSSBjYW4gdHJ5IHRvCiAgICAgICAgICAvLyBvcHRpbWl6ZSBgVmFsdWVzLm1hcExlYXZlc2AgdG8gb25seSBtdXRhdGUgaWYgaXQgYWN0dWFsbHkgY2hhbmdlcyB0aGluZ3MuCiAgICAgICAgICByZXR1cm4gbmV3IFBhZ2VNZXRhZGF0YShkYXRhLnBhdGgsIGRhdGEpOwogICAgICB9CiAgICAgIC8qKiBUaGUgbmFtZSAoYmFzZWQgb24gcGF0aCkgb2YgdGhpcyBmaWxlLiAqLwogICAgICBuYW1lKCkgewogICAgICAgICAgcmV0dXJuIGdldEZpbGVUaXRsZSh0aGlzLnBhdGgpOwogICAgICB9CiAgICAgIC8qKiBUaGUgY29udGFpbmluZyBmb2xkZXIgKGJhc2VkIG9uIHBhdGgpIG9mIHRoaXMgZmlsZS4gKi8KICAgICAgZm9sZGVyKCkgewogICAgICAgICAgcmV0dXJuIGdldFBhcmVudEZvbGRlcih0aGlzLnBhdGgpOwogICAgICB9CiAgICAgIC8qKiBUaGUgZXh0ZW5zaW9uIG9mIHRoaXMgZmlsZSAobGlrZWx5ICdtZCcpLiAqLwogICAgICBleHRlbnNpb24oKSB7CiAgICAgICAgICByZXR1cm4gZ2V0RXh0ZW5zaW9uKHRoaXMucGF0aCk7CiAgICAgIH0KICAgICAgLyoqIFJldHVybiBhIHNldCBvZiB0YWdzIEFORCBhbGwgb2YgdGhlaXIgcGFyZW50IHRhZ3MgKHNvICNoZWxsby95ZXMgd291bGQgYmVjb21lICNoZWxsbywgI2hlbGxvL3llcykuICovCiAgICAgIGZ1bGxUYWdzKCkgewogICAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBTZXQoKTsKICAgICAgICAgIGZvciAobGV0IHRhZyBvZiB0aGlzLnRhZ3MpIHsKICAgICAgICAgICAgICBmb3IgKGxldCBzdWJ0YWcgb2YgZXh0cmFjdFN1YnRhZ3ModGFnKSkKICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChzdWJ0YWcpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfQogICAgICAvKiogQ29udmVydCBhbGwgbGlua3MgaW4gdGhpcyBmaWxlIHRvIGZpbGUgbGlua3MuICovCiAgICAgIGZpbGVMaW5rcygpIHsKICAgICAgICAgIC8vIFdlIHdhbnQgdG8gbWFrZSB0aGVtIGRpc3RpbmN0LCBidXQgd2hlcmUgbGlua3MgYXJlIG5vdCByYXcgbGlua3Mgd2UKICAgICAgICAgIC8vIG5vdyBrZWVwIHRoZSBhZGRpdGlvbmFsIG1ldGFkYXRhLgogICAgICAgICAgbGV0IGRpc3RpbmN0TGlua3MgPSBuZXcgU2V0KHRoaXMubGlua3MpOwogICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZGlzdGluY3RMaW5rcyk7CiAgICAgIH0KICAgICAgLyoqIE1hcCB0aGlzIG1ldGFkYXRhIHRvIGEgZnVsbCBvYmplY3Q7IHVzZXMgdGhlIGluZGV4IGZvciBhZGRpdGlvbmFsIGRhdGEgbG9va3Vwcy4gICovCiAgICAgIHNlcmlhbGl6ZShpbmRleCwgY2FjaGUpIHsKICAgICAgICAgIC8vIENvbnZlcnQgbGlzdCBpdGVtcyB2aWEgdGhlIGNhbm9uaWNhbGl6YXRpb24gY2FjaGUuCiAgICAgICAgICBsZXQgcmVhbENhY2hlID0gY2FjaGUgIT09IG51bGwgJiYgY2FjaGUgIT09IHZvaWQgMCA/IGNhY2hlIDogbmV3IExpc3RTZXJpYWxpemF0aW9uQ2FjaGUodGhpcy5saXN0cyk7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gewogICAgICAgICAgICAgIGZpbGU6IHsKICAgICAgICAgICAgICAgICAgcGF0aDogdGhpcy5wYXRoLAogICAgICAgICAgICAgICAgICBmb2xkZXI6IHRoaXMuZm9sZGVyKCksCiAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSgpLAogICAgICAgICAgICAgICAgICBsaW5rOiBMaW5rLmZpbGUodGhpcy5wYXRoKSwKICAgICAgICAgICAgICAgICAgb3V0bGlua3M6IHRoaXMuZmlsZUxpbmtzKCksCiAgICAgICAgICAgICAgICAgIGlubGlua3M6IEFycmF5LmZyb20oaW5kZXgubGlua3MuZ2V0SW52ZXJzZSh0aGlzLnBhdGgpKS5tYXAobCA9PiBMaW5rLmZpbGUobCkpLAogICAgICAgICAgICAgICAgICBldGFnczogQXJyYXkuZnJvbSh0aGlzLnRhZ3MpLAogICAgICAgICAgICAgICAgICB0YWdzOiBBcnJheS5mcm9tKHRoaXMuZnVsbFRhZ3MoKSksCiAgICAgICAgICAgICAgICAgIGFsaWFzZXM6IEFycmF5LmZyb20odGhpcy5hbGlhc2VzKSwKICAgICAgICAgICAgICAgICAgbGlzdHM6IHRoaXMubGlzdHMubWFwKGwgPT4gcmVhbENhY2hlLmdldChsLmxpbmUpKSwKICAgICAgICAgICAgICAgICAgdGFza3M6IHRoaXMubGlzdHMuZmlsdGVyKGwgPT4gISFsLnRhc2spLm1hcChsID0+IHJlYWxDYWNoZS5nZXQobC5saW5lKSksCiAgICAgICAgICAgICAgICAgIGN0aW1lOiB0aGlzLmN0aW1lLAogICAgICAgICAgICAgICAgICBjZGF5OiBzdHJpcFRpbWUodGhpcy5jdGltZSksCiAgICAgICAgICAgICAgICAgIG10aW1lOiB0aGlzLm10aW1lLAogICAgICAgICAgICAgICAgICBtZGF5OiBzdHJpcFRpbWUodGhpcy5tdGltZSksCiAgICAgICAgICAgICAgICAgIHNpemU6IHRoaXMuc2l6ZSwKICAgICAgICAgICAgICAgICAgc3RhcnJlZDogaW5kZXguc3RhcnJlZC5zdGFycmVkKHRoaXMucGF0aCksCiAgICAgICAgICAgICAgICAgIGZyb250bWF0dGVyOiBWYWx1ZXMuZGVlcENvcHkodGhpcy5mcm9udG1hdHRlciksCiAgICAgICAgICAgICAgICAgIGV4dDogdGhpcy5leHRlbnNpb24oKSwKICAgICAgICAgICAgICB9LAogICAgICAgICAgfTsKICAgICAgICAgIC8vIEFkZCB0aGUgY3VycmVudCBkYXkgaWYgcHJlc2VudC4KICAgICAgICAgIGlmICh0aGlzLmRheSkKICAgICAgICAgICAgICByZXN1bHQuZmlsZS5kYXkgPSB0aGlzLmRheTsKICAgICAgICAgIC8vIFRoZW4gYXBwZW5kIHRoZSBjb21wdXRlZCBmaWVsZHMuCiAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgdGhpcy5maWVsZHMuZW50cmllcygpKSB7CiAgICAgICAgICAgICAgaWYgKGtleSBpbiByZXN1bHQpCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBEb24ndCBhbGxvdyBmaWVsZHMgdG8gb3ZlcnJpZGUgZXhpc3Rpbmcga2V5cy4KICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfQogIH0KICAvKiogQSBsaXN0IGl0ZW0gaW5zaWRlIG9mIGEgbGlzdC4gKi8KICBjbGFzcyBMaXN0SXRlbSB7CiAgICAgIGNvbnN0cnVjdG9yKGluaXQpIHsKICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7CiAgICAgICAgICB0aGlzLmZpZWxkcyA9IHRoaXMuZmllbGRzIHx8IG5ldyBNYXAoKTsKICAgICAgICAgIHRoaXMudGFncyA9IHRoaXMudGFncyB8fCBuZXcgU2V0KCk7CiAgICAgICAgICB0aGlzLmNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbiB8fCBbXTsKICAgICAgICAgIHRoaXMubGlua3MgPSB0aGlzLmxpbmtzIHx8IFtdOwogICAgICB9CiAgICAgIGlkKCkgewogICAgICAgICAgcmV0dXJuIGAke3RoaXMuZmlsZSgpLnBhdGh9LSR7dGhpcy5saW5lfWA7CiAgICAgIH0KICAgICAgZmlsZSgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmxpbmsudG9GaWxlKCk7CiAgICAgIH0KICAgICAgbWFya2Rvd24oKSB7CiAgICAgICAgICBpZiAodGhpcy50YXNrKQogICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnN5bWJvbH0gWyR7dGhpcy50YXNrLmNvbXBsZXRlZCA/ICJ4IiA6ICIgIn1dICR7dGhpcy50ZXh0fWA7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuc3ltYm9sfSAke3RoaXMudGV4dH1gOwogICAgICB9CiAgICAgIGNyZWF0ZWQoKSB7CiAgICAgICAgICB2YXIgX2EsIF9iLCBfYzsKICAgICAgICAgIHJldHVybiAoX2MgPSAoKF9iID0gKF9hID0gdGhpcy5maWVsZHMuZ2V0KCJjcmVhdGVkIikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMuZmllbGRzLmdldCgiY3RpbWUiKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGhpcy5maWVsZHMuZ2V0KCJjZGF5IikpKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NbMF07CiAgICAgIH0KICAgICAgZHVlKCkgewogICAgICAgICAgdmFyIF9hLCBfYiwgX2M7CiAgICAgICAgICByZXR1cm4gKF9jID0gKChfYiA9IChfYSA9IHRoaXMuZmllbGRzLmdldCgiZHVlIikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMuZmllbGRzLmdldCgiZHVldGltZSIpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB0aGlzLmZpZWxkcy5nZXQoImR1ZWRheSIpKSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jWzBdOwogICAgICB9CiAgICAgIGNvbXBsZXRlZCgpIHsKICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDsKICAgICAgICAgIHJldHVybiAoX2QgPSAoKF9jID0gKF9iID0gKF9hID0gdGhpcy5maWVsZHMuZ2V0KCJjb21wbGV0ZWQiKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5maWVsZHMuZ2V0KCJjb21wbGV0aW9uIikpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHRoaXMuZmllbGRzLmdldCgiY29tcHRpbWUiKSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogdGhpcy5maWVsZHMuZ2V0KCJjb21wZGF5IikpKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RbMF07CiAgICAgIH0KICAgICAgc3RhcnQoKSB7CiAgICAgICAgICB2YXIgX2E7CiAgICAgICAgICByZXR1cm4gKF9hID0gdGhpcy5maWVsZHMuZ2V0KCJzdGFydCIpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMF07CiAgICAgIH0KICAgICAgc2NoZWR1bGVkKCkgewogICAgICAgICAgdmFyIF9hOwogICAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMuZmllbGRzLmdldCgic2NoZWR1bGVkIikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVswXTsKICAgICAgfQogICAgICAvKiogQ3JlYXRlIGFuIEFQSS1mcmllbmRseSBjb3B5IG9mIHRoaXMgbGlzdCBpdGVtLiBEZS1kdXBsaWNhdGlvbiBpcyBkb25lIHZpYSB0aGUgcHJvdmlkZWQgY2FjaGUuICovCiAgICAgIHNlcmlhbGl6ZShjYWNoZSkgewogICAgICAgICAgLy8gTWFwIGNoaWxkcmVuIHRvIHRoZWlyIHNlcmlhbGl6ZWQvZGUtZHVwbGljYXRlZCBlcXVpdmFsZW50cyByaWdodCBhd2F5LgogICAgICAgICAgbGV0IGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5tYXAobCA9PiBjYWNoZS5nZXQobCkpLmZpbHRlcigobCkgPT4gbCAhPT0gdW5kZWZpbmVkKTsKICAgICAgICAgIGxldCByZXN1bHQgPSB7CiAgICAgICAgICAgICAgc3ltYm9sOiB0aGlzLnN5bWJvbCwKICAgICAgICAgICAgICBsaW5rOiB0aGlzLmxpbmssCiAgICAgICAgICAgICAgc2VjdGlvbjogdGhpcy5zZWN0aW9uLAogICAgICAgICAgICAgIHRleHQ6IHRoaXMudGV4dCwKICAgICAgICAgICAgICB0YWdzOiBBcnJheS5mcm9tKHRoaXMudGFncyksCiAgICAgICAgICAgICAgbGluZTogdGhpcy5saW5lLAogICAgICAgICAgICAgIGxpbmVDb3VudDogdGhpcy5saW5lQ291bnQsCiAgICAgICAgICAgICAgbGlzdDogdGhpcy5saXN0LAogICAgICAgICAgICAgIG91dGxpbmtzOiBBcnJheS5mcm9tKHRoaXMubGlua3MpLAogICAgICAgICAgICAgIHBhdGg6IHRoaXMubGluay5wYXRoLAogICAgICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbiwKICAgICAgICAgICAgICB0YXNrOiAhIXRoaXMudGFzaywKICAgICAgICAgICAgICBhbm5vdGF0ZWQ6IHRoaXMuZmllbGRzLnNpemUgPiAwLAogICAgICAgICAgICAgIHBvc2l0aW9uOiBWYWx1ZXMuZGVlcENvcHkodGhpcy5wb3NpdGlvbiksCiAgICAgICAgICAgICAgc3VidGFza3M6IGNoaWxkcmVuLAogICAgICAgICAgICAgIHJlYWw6ICEhdGhpcy50YXNrLAogICAgICAgICAgICAgIGhlYWRlcjogdGhpcy5zZWN0aW9uLCAvLyBAZGVwcmVjYXRlZCwgdXNlICdpdGVtLnNlY3Rpb24nIGluc3RlYWQuCiAgICAgICAgICB9OwogICAgICAgICAgaWYgKHRoaXMucGFyZW50IHx8IHRoaXMucGFyZW50ID09PSAwKQogICAgICAgICAgICAgIHJlc3VsdC5wYXJlbnQgPSB0aGlzLnBhcmVudDsKICAgICAgICAgIGlmICh0aGlzLmJsb2NrSWQpCiAgICAgICAgICAgICAgcmVzdWx0LmJsb2NrSWQgPSB0aGlzLmJsb2NrSWQ7CiAgICAgICAgICBhZGRGaWVsZHModGhpcy5maWVsZHMsIHJlc3VsdCk7CiAgICAgICAgICBpZiAodGhpcy50YXNrKSB7CiAgICAgICAgICAgICAgcmVzdWx0LnN0YXR1cyA9IHRoaXMudGFzay5zdGF0dXM7CiAgICAgICAgICAgICAgcmVzdWx0LmNoZWNrZWQgPSB0aGlzLnRhc2suY2hlY2tlZDsKICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGVkID0gdGhpcy50YXNrLmNvbXBsZXRlZDsKICAgICAgICAgICAgICByZXN1bHQuZnVsbHlDb21wbGV0ZWQgPSB0aGlzLnRhc2suZnVsbHlDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgbGV0IGNyZWF0ZWQgPSB0aGlzLmNyZWF0ZWQoKSwgZHVlID0gdGhpcy5kdWUoKSwgY29tcGxldGVkID0gdGhpcy5jb21wbGV0ZWQoKSwgc3RhcnQgPSB0aGlzLnN0YXJ0KCksIHNjaGVkdWxlZCA9IHRoaXMuc2NoZWR1bGVkKCk7CiAgICAgICAgICAgICAgaWYgKGNyZWF0ZWQpCiAgICAgICAgICAgICAgICAgIHJlc3VsdC5jcmVhdGVkID0gVmFsdWVzLmRlZXBDb3B5KGNyZWF0ZWQpOwogICAgICAgICAgICAgIGlmIChkdWUpCiAgICAgICAgICAgICAgICAgIHJlc3VsdC5kdWUgPSBWYWx1ZXMuZGVlcENvcHkoZHVlKTsKICAgICAgICAgICAgICBpZiAoY29tcGxldGVkKQogICAgICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGlvbiA9IFZhbHVlcy5kZWVwQ29weShjb21wbGV0ZWQpOwogICAgICAgICAgICAgIGlmIChzdGFydCkKICAgICAgICAgICAgICAgICAgcmVzdWx0LnN0YXJ0ID0gVmFsdWVzLmRlZXBDb3B5KHN0YXJ0KTsKICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVkKQogICAgICAgICAgICAgICAgICByZXN1bHQuc2NoZWR1bGVkID0gVmFsdWVzLmRlZXBDb3B5KHNjaGVkdWxlZCk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgfQogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIC8vIENvbnZlcnNpb24gLyBTZXJpYWxpemF0aW9uIFV0aWxpdGllcyAvLwogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIC8qKiBEZS1kdXBsaWNhdGVzIGxpc3QgaXRlbXMgYWNyb3NzIHNlY3Rpb24gbWV0YWRhdGEgYW5kIHBhZ2UgbWV0YWRhdGEuICovCiAgY2xhc3MgTGlzdFNlcmlhbGl6YXRpb25DYWNoZSB7CiAgICAgIGNvbnN0cnVjdG9yKGxpc3RJdGVtcykgewogICAgICAgICAgdGhpcy5saXN0SXRlbXMgPSB7fTsKICAgICAgICAgIHRoaXMuY2FjaGUgPSB7fTsKICAgICAgICAgIHRoaXMuc2VlbiA9IG5ldyBTZXQoKTsKICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgbGlzdEl0ZW1zKQogICAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1zW2l0ZW0ubGluZV0gPSBpdGVtOwogICAgICB9CiAgICAgIGdldChsaW5lbm8pIHsKICAgICAgICAgIGlmIChsaW5lbm8gaW4gdGhpcy5jYWNoZSkKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYWNoZVtsaW5lbm9dOwogICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWVuLmhhcyhsaW5lbm8pKSB7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coYERhdGF2aWV3OiBFbmNvdW50ZXJlZCBhIGNpcmN1bGFyIGxpc3QgKGxpbmUgbnVtYmVyICR7bGluZW5vfTsgY2hpbGRyZW4gJHt0aGlzLmxpc3RJdGVtc1tsaW5lbm9dLmNoaWxkcmVuLmpvaW4oIiwgIil9KWApOwogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLnNlZW4uYWRkKGxpbmVubyk7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5saXN0SXRlbXNbbGluZW5vXS5zZXJpYWxpemUodGhpcyk7CiAgICAgICAgICB0aGlzLmNhY2hlW2xpbmVub10gPSByZXN1bHQ7CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgfQogIGZ1bmN0aW9uIGFkZEZpZWxkcyhmaWVsZHMsIHRhcmdldCkgewogICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZXNdIG9mIGZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgIGlmIChrZXkgaW4gdGFyZ2V0KQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZXMubGVuZ3RoID09IDEgPyB2YWx1ZXNbMF0gOiB2YWx1ZXM7CiAgICAgIH0KICAgICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8qKiBDb21tb24gdXRpbGl0aWVzIGZvciBleHRyYWN0aW5nIHRhZ3MsIGxpbmtzLCBhbmQgb3RoZXIgYnVzaW5lc3MgZnJvbSBtZXRhZGF0YS4gKi8KICBjb25zdCBQT1RFTlRJQUxfVEFHX01BVENIRVIgPSAvI1teXHMsO1wuOiFcPyciYCgpXFtcXVx7XH1dKy9naXU7CiAgLyoqIEV4dHJhY3QgYWxsIHRhZ3MgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIHN0cmluZy4gKi8KICBmdW5jdGlvbiBleHRyYWN0VGFncyQxKHNvdXJjZSkgewogICAgICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpOwogICAgICBsZXQgbWF0Y2hlcyA9IHNvdXJjZS5tYXRjaEFsbChQT1RFTlRJQUxfVEFHX01BVENIRVIpOwogICAgICBmb3IgKGxldCBtYXRjaCBvZiBtYXRjaGVzKSB7CiAgICAgICAgICBsZXQgcGFyc2VkID0gRVhQUkVTU0lPTi50YWcucGFyc2UobWF0Y2hbMF0pOwogICAgICAgICAgaWYgKHBhcnNlZC5zdGF0dXMpCiAgICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJzZWQudmFsdWUpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvKiogSW1wb3J0ZXIgZm9yIG1hcmtkb3duIGRvY3VtZW50cy4gKi8KICAvKiogRXh0cmFjdCBtYXJrZG93biBtZXRhZGF0YSBmcm9tIHRoZSBnaXZlbiBPYnNpZGlhbiBtYXJrZG93biBmaWxlLiAqLwogIGZ1bmN0aW9uIHBhcnNlUGFnZShwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpIHsKICAgICAgbGV0IHRhZ3MgPSBuZXcgU2V0KCk7CiAgICAgIGxldCBhbGlhc2VzID0gbmV3IFNldCgpOwogICAgICBsZXQgZmllbGRzID0gbmV3IE1hcCgpOwogICAgICBsZXQgbGlua3MgPSBbXTsKICAgICAgLy8gRmlsZSB0YWdzLCBpbmNsdWRpbmcgZnJvbnQtbWF0dGVyIGFuZCBpbi1maWxlIHRhZ3MuCiAgICAgIChtZXRhZGF0YS50YWdzIHx8IFtdKS5mb3JFYWNoKHQgPT4gdGFncy5hZGQodC50YWcuc3RhcnRzV2l0aCgiIyIpID8gdC50YWcgOiAiIyIgKyB0LnRhZykpOwogICAgICAvLyBGcm9udC1tYXR0ZXIgZmlsZSB0YWdzLCBhbGlhc2VzLCBBTkQgZnJvbnRtYXR0ZXIgcHJvcGVydGllcy4KICAgICAgaWYgKG1ldGFkYXRhLmZyb250bWF0dGVyKSB7CiAgICAgICAgICBmb3IgKGxldCB0YWcgb2YgZXh0cmFjdFRhZ3MobWV0YWRhdGEuZnJvbnRtYXR0ZXIpKSB7CiAgICAgICAgICAgICAgaWYgKCF0YWcuc3RhcnRzV2l0aCgiIyIpKQogICAgICAgICAgICAgICAgICB0YWcgPSAiIyIgKyB0YWc7CiAgICAgICAgICAgICAgdGFncy5hZGQodGFnKTsKICAgICAgICAgIH0KICAgICAgICAgIGZvciAobGV0IGFsaWFzIG9mIGV4dHJhY3RBbGlhc2VzKG1ldGFkYXRhLmZyb250bWF0dGVyKSB8fCBbXSkKICAgICAgICAgICAgICBhbGlhc2VzLmFkZChhbGlhcyk7CiAgICAgICAgICBsZXQgZnJvbnRGaWVsZHMgPSBwYXJzZUZyb250bWF0dGVyKG1ldGFkYXRhLmZyb250bWF0dGVyKTsKICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmcm9udEZpZWxkcykpIHsKICAgICAgICAgICAgICBpZiAoa2V5ID09ICJwb3NpdGlvbiIpCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIGFkZElubGluZUZpZWxkKGtleSwgdmFsdWUsIGZpZWxkcyk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gQWRkIGZyb250bWF0dGVyIGxpbmtzIHRvIGxpbmtzLgogICAgICBpZiAobWV0YWRhdGEuZnJvbnRtYXR0ZXJMaW5rcykgewogICAgICAgICAgZm9yIChsZXQgcmF3TGluayBvZiBtZXRhZGF0YS5mcm9udG1hdHRlckxpbmtzIHx8IFtdKSB7CiAgICAgICAgICAgICAgY29uc3QgbGluayA9IExpbmsuaW5mZXIocmF3TGluay5saW5rLCBmYWxzZSwgcmF3TGluay5kaXNwbGF5VGV4dCk7CiAgICAgICAgICAgICAgbGlua3MucHVzaChsaW5rKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICAvLyBMaW5rcyBpbiBtZXRhZGF0YS4KICAgICAgY29uc3QgbGlua3NCeUxpbmUgPSB7fTsKICAgICAgZm9yIChsZXQgcmF3TGluayBvZiBtZXRhZGF0YS5saW5rcyB8fCBbXSkgewogICAgICAgICAgY29uc3QgbGluayA9IExpbmsuaW5mZXIocmF3TGluay5saW5rLCBmYWxzZSwgcmF3TGluay5kaXNwbGF5VGV4dCk7CiAgICAgICAgICBjb25zdCBsaW5lID0gcmF3TGluay5wb3NpdGlvbi5zdGFydC5saW5lOwogICAgICAgICAgbGlua3MucHVzaChsaW5rKTsKICAgICAgICAgIGlmICghKGxpbmUgaW4gbGlua3NCeUxpbmUpKQogICAgICAgICAgICAgIGxpbmtzQnlMaW5lW2xpbmVdID0gW2xpbmtdOwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIGxpbmtzQnlMaW5lW2xpbmVdLnB1c2gobGluayk7CiAgICAgIH0KICAgICAgLy8gRW1iZWQgTGlua3MgaW4gbWV0YWRhdGEuCiAgICAgIGZvciAobGV0IHJhd0VtYmVkIG9mIG1ldGFkYXRhLmVtYmVkcyB8fCBbXSkgewogICAgICAgICAgY29uc3QgbGluayA9IExpbmsuaW5mZXIocmF3RW1iZWQubGluaywgdHJ1ZSwgcmF3RW1iZWQuZGlzcGxheVRleHQpOwogICAgICAgICAgY29uc3QgbGluZSA9IHJhd0VtYmVkLnBvc2l0aW9uLnN0YXJ0LmxpbmU7CiAgICAgICAgICBsaW5rcy5wdXNoKGxpbmspOwogICAgICAgICAgaWYgKCEobGluZSBpbiBsaW5rc0J5TGluZSkpCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0gPSBbbGlua107CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0ucHVzaChsaW5rKTsKICAgICAgfQogICAgICAvLyBNZXJnZSBmcm9udG1hdHRlciBmaWVsZHMgd2l0aCBwYXJzZWQgZmllbGRzLgogICAgICBsZXQgbWFya2Rvd25EYXRhID0gcGFyc2VNYXJrZG93bihwYXRoLCBjb250ZW50cy5zcGxpdCgiXG4iKSwgbWV0YWRhdGEsIGxpbmtzQnlMaW5lKTsKICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhmaWVsZHMsIG1hcmtkb3duRGF0YS5maWVsZHMpOwogICAgICAvLyBTdHJpcCAicG9zaXRpb24iIGZyb20gZnJvbnRtYXR0ZXIgc2luY2UgaXQgaXMgT2JzaWRpYW4gZGV0ZXJtaW5lZC4KICAgICAgY29uc3QgZnJvbnRtYXR0ZXIgPSBtZXRhZGF0YS5mcm9udG1hdHRlciB8fCB7fTsKICAgICAgaWYgKGZyb250bWF0dGVyICYmICJwb3NpdGlvbiIgaW4gZnJvbnRtYXR0ZXIpCiAgICAgICAgICBkZWxldGUgZnJvbnRtYXR0ZXJbInBvc2l0aW9uIl07CiAgICAgIHJldHVybiBuZXcgUGFnZU1ldGFkYXRhKHBhdGgsIHsKICAgICAgICAgIHRhZ3MsCiAgICAgICAgICBhbGlhc2VzLAogICAgICAgICAgbGlua3MsCiAgICAgICAgICBsaXN0czogbWFya2Rvd25EYXRhLmxpc3RzLAogICAgICAgICAgZmllbGRzOiBmaW5hbGl6ZUlubGluZUZpZWxkcyhmaWVsZHMpLAogICAgICAgICAgZnJvbnRtYXR0ZXI6IGZyb250bWF0dGVyLAogICAgICAgICAgY3RpbWU6IERhdGVUaW1lLmZyb21NaWxsaXMoc3RhdC5jdGltZSksCiAgICAgICAgICBtdGltZTogRGF0ZVRpbWUuZnJvbU1pbGxpcyhzdGF0Lm10aW1lKSwKICAgICAgICAgIHNpemU6IHN0YXQuc2l6ZSwKICAgICAgICAgIGRheTogZmluZERhdGUocGF0aCwgZmllbGRzKSwKICAgICAgfSk7CiAgfQogIC8qKiBFeHRyYWN0IHRhZ3MgaW50ZWxsaWdlbnRseSBmcm9tIGZyb250bWF0dGVyLiBIYW5kbGVzIGFycmF5cywgbnVtYmVycywgYW5kIHN0cmluZ3MuICovCiAgZnVuY3Rpb24gZXh0cmFjdFRhZ3MobWV0YWRhdGEpIHsKICAgICAgbGV0IHRhZ0tleXMgPSBPYmplY3Qua2V5cyhtZXRhZGF0YSkuZmlsdGVyKHQgPT4gdC50b0xvd2VyQ2FzZSgpID09ICJ0YWdzIiB8fCB0LnRvTG93ZXJDYXNlKCkgPT0gInRhZyIpOwogICAgICByZXR1cm4gdGFnS2V5cwogICAgICAgICAgLm1hcChrID0+IHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKG1ldGFkYXRhW2tdLCAvWyxcc10rLykpCiAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBwLmNvbmNhdChjKSwgW10pCiAgICAgICAgICAubWFwKHN0ciA9PiAoc3RyLnN0YXJ0c1dpdGgoIiMiKSA/IHN0ciA6ICIjIiArIHN0cikpOwogIH0KICAvKiogRXh0cmFjdCBhbGlhc2VzIGludGVsbGlnZW50bHkgZnJvbSBmcm9udG1hdHRlci4gSGFuZGxlcyBhcnJheXMsIG51bWJlcnMsIGFuZCBzdHJpbmdzLiAgKi8KICBmdW5jdGlvbiBleHRyYWN0QWxpYXNlcyhtZXRhZGF0YSkgewogICAgICBsZXQgYWxpYXNLZXlzID0gT2JqZWN0LmtleXMobWV0YWRhdGEpLmZpbHRlcih0ID0+IHQudG9Mb3dlckNhc2UoKSA9PSAiYWxpYXMiIHx8IHQudG9Mb3dlckNhc2UoKSA9PSAiYWxpYXNlcyIpOwogICAgICBjb25zdCByZXN1bHQgPSBbXTsKICAgICAgZm9yIChsZXQga2V5IG9mIGFsaWFzS2V5cykgewogICAgICAgICAgY29uc3QgdmFsdWUgPSBtZXRhZGF0YVtrZXldOwogICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkKICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi52YWx1ZS5tYXAodiA9PiAoIiIgKyB2KS50cmltKCkpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi5zcGxpdEZyb250bWF0dGVyVGFnT3JBbGlhcyh2YWx1ZSwgLywvKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgLyoqIFNwbGl0IGEgZnJvbnRtYXR0ZXIgbGlzdCBpbnRvIHNlcGFyYXRlIGVsZW1lbnRzOyBoYW5kbGVzIGFjdHVhbCBsaXN0cywgY29tbWEgc2VwYXJhdGVkIGxpc3RzLCBhbmQgc2luZ2xlIGVsZW1lbnRzLiAqLwogIGZ1bmN0aW9uIHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKGRhdGEsIG9uKSB7CiAgICAgIGlmIChkYXRhID09IG51bGwgfHwgZGF0YSA9PSB1bmRlZmluZWQpCiAgICAgICAgICByZXR1cm4gW107CiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7CiAgICAgICAgICByZXR1cm4gZGF0YQogICAgICAgICAgICAgIC5maWx0ZXIocyA9PiAhIXMpCiAgICAgICAgICAgICAgLm1hcChzID0+IHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKHMsIG9uKSkKICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBwLmNvbmNhdChjKSwgW10pOwogICAgICB9CiAgICAgIC8vIEZvcmNlIHRvIGEgc3RyaW5nIHRvIGhhbmRsZSBudW1iZXJzIGFuZCBzbyBvbi4KICAgICAgcmV0dXJuICgiIiArIGRhdGEpCiAgICAgICAgICAuc3BsaXQob24pCiAgICAgICAgICAuZmlsdGVyKHQgPT4gISF0KQogICAgICAgICAgLm1hcCh0ID0+IHQudHJpbSgpKQogICAgICAgICAgLmZpbHRlcih0ID0+IHQubGVuZ3RoID4gMCk7CiAgfQogIC8qKiBQYXJzZSByYXcgKG5ld2xpbmUtZGVsaW1pdGVkKSBtYXJrZG93biwgcmV0dXJuaW5nIGlubGluZSBmaWVsZHMsIGxpc3QgaXRlbXMsIGFuZCBvdGhlciBtZXRhZGF0YS4gKi8KICBmdW5jdGlvbiBwYXJzZU1hcmtkb3duKHBhdGgsIGNvbnRlbnRzLCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpIHsKICAgICAgbGV0IGZpZWxkcyA9IG5ldyBNYXAoKTsKICAgICAgLy8gRXh0cmFjdCB0YXNrIGRhdGEgYW5kIGFwcGVuZCB0aGUgZ2xvYmFsIGRhdGEgZXh0cmFjdGVkIGZyb20gdGhlbSB0byBvdXIgZmllbGRzLgogICAgICBsZXQgW2xpc3RzLCBleHRyYURhdGFdID0gcGFyc2VMaXN0cyhwYXRoLCBjb250ZW50cywgbWV0YWRhdGEsIGxpbmtzQnlMaW5lKTsKICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVzXSBvZiBleHRyYURhdGEuZW50cmllcygpKSB7CiAgICAgICAgICBpZiAoIWZpZWxkcy5oYXMoa2V5KSkKICAgICAgICAgICAgICBmaWVsZHMuc2V0KGtleSwgdmFsdWVzKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBmaWVsZHMuc2V0KGtleSwgZmllbGRzLmdldChrZXkpLmNvbmNhdCh2YWx1ZXMpKTsKICAgICAgfQogICAgICAvLyBUaGUgT2JzaWRpYW4gbWV0YWRhdGEgY2FjaGUgd2lsbCB0cmFjayBsaXN0IGVsZW1lbnRzIGluc2lkZSBvZiBvdGhlciBlbGVtZW50IGdyb3VwcyAobGlrZSBhbm5vdGF0aW9ucyBhbmQKICAgICAgLy8gY2FsbG91dHMpLi4uIHRoaXMgbWVhbnMgd2UgbWlnaHQgc2VlIG1ldGFkYXRhIHR3aWNlLCBzbyBza2lwIHRoZW0gbm93LiBWZXJ5IGFubm95aW5nLgogICAgICBjb25zdCBsaXN0TGluZXNUb1NraXAgPSBuZXcgU2V0KCk7CiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaXN0cykgewogICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lLmxpbmVDb3VudDsgaSsrKQogICAgICAgICAgICAgIGxpc3RMaW5lc1RvU2tpcC5hZGQobGluZS5saW5lICsgaSk7CiAgICAgIH0KICAgICAgLy8gT25seSBwYXJzZSBoZWFkaW5nIGFuZCBwYXJhZ3JhcGggZWxlbWVudHMgZm9yIGlubGluZSBmaWVsZHM7IHdlIHdpbGwgcGFyc2UgbGlzdCBtZXRhZGF0YSBzZXBhcmF0ZWx5LgogICAgICBmb3IgKGxldCBzZWN0aW9uIG9mIG1ldGFkYXRhLnNlY3Rpb25zIHx8IFtdKSB7CiAgICAgICAgICBpZiAoc2VjdGlvbi50eXBlID09ICJsaXN0IiB8fCBzZWN0aW9uLnR5cGUgPT0gInJ1bGluZyIpCiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICBmb3IgKGxldCBsaW5lbm8gPSBzZWN0aW9uLnBvc2l0aW9uLnN0YXJ0LmxpbmU7IGxpbmVubyA8PSBzZWN0aW9uLnBvc2l0aW9uLmVuZC5saW5lOyBsaW5lbm8rKykgewogICAgICAgICAgICAgIGxldCBsaW5lID0gY29udGVudHNbbGluZW5vXTsKICAgICAgICAgICAgICBpZiAobGluZSA9PSB1bmRlZmluZWQgfHwgbGluZSA9PSBudWxsKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICBpZiAobGlzdExpbmVzVG9Ta2lwLmhhcyhsaW5lbm8pKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAvLyBGYXN0IGJhaWwtb3V0IGZvciBsaW5lcyB0aGF0IGFyZSB0b28gbG9uZyBvciBkbyBub3QgY29udGFpbiAnOjonLgogICAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCA+IDMyNzY4IHx8ICFsaW5lLmluY2x1ZGVzKCI6OiIpKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICBsaW5lID0gbGluZS50cmltKCk7CiAgICAgICAgICAgICAgbGV0IGlubGluZUZpZWxkcyA9IGV4dHJhY3RJbmxpbmVGaWVsZHMobGluZSk7CiAgICAgICAgICAgICAgaWYgKGlubGluZUZpZWxkcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGlmaWVsZCBvZiBpbmxpbmVGaWVsZHMpCiAgICAgICAgICAgICAgICAgICAgICBhZGRSYXdJbmxpbmVGaWVsZChpZmllbGQsIGZpZWxkcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBsZXQgZnVsbExpbmUgPSBleHRyYWN0RnVsbExpbmVGaWVsZChsaW5lKTsKICAgICAgICAgICAgICAgICAgaWYgKGZ1bGxMaW5lKQogICAgICAgICAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZnVsbExpbmUsIGZpZWxkcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB7IGZpZWxkcywgbGlzdHMgfTsKICB9CiAgLy8gVE9ETzogQ29uc2lkZXIgdXNpbmcgYW4gYWN0dWFsIHBhcnNlciBpbiBsZWl1IG9mIGEgbW9yZSBleHBlbnNpdmUgcmVnZXguCiAgY29uc3QgTElTVF9JVEVNX1JFR0VYID0gL15bXHM+XSooXGQrXC58XGQrXCl8XCp8LXxcKylccyooXFsuezAsMX1cXSk/XHMqKC4qKSQvbXU7CiAgLyoqCiAgICogUGFyc2UgbGlzdCBpdGVtcyBmcm9tIHRoZSBwYWdlICsgbWV0YWRhdGEuIFRoaXMgcmVxdWlyZXMgc29tZSBhZGRpdGlvbmFsIHBhcnNpbmcgYWJvdmUgd2hhdGV2ZXIgT2JzaWRpYW4gcHJvdmlkZXMsCiAgICogc2luY2UgT2JzaWRpYW4gb25seSBnaXZlcyBsaW5lIG51bWJlcnMuCiAgICovCiAgZnVuY3Rpb24gcGFyc2VMaXN0cyhwYXRoLCBjb250ZW50LCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpIHsKICAgICAgdmFyIF9hOwogICAgICBsZXQgY2FjaGUgPSB7fTsKICAgICAgLy8gUGxhY2UgYWxsIG9mIHRoZSB2YWx1ZXMgaW4gdGhlIGNhY2hlIGJlZm9yZSByZXNvbHZpbmcgY2hpbGRyZW4gJiBtZXRhZGF0YSByZWxhdGlvbnNoaXBzLgogICAgICBmb3IgKGxldCByYXdFbGVtZW50IG9mIG1ldGFkYXRhLmxpc3RJdGVtcyB8fCBbXSkgewogICAgICAgICAgLy8gTWF0Y2ggb24gdGhlIGZpcnN0IGxpbmUgdG8gZ2V0IHRoZSBzeW1ib2wgYW5kIGZpcnN0IGxpbmUgb2YgdGV4dC4KICAgICAgICAgIGxldCByYXdNYXRjaCA9IExJU1RfSVRFTV9SRUdFWC5leGVjKGNvbnRlbnRbcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lXSk7CiAgICAgICAgICBpZiAoIXJhd01hdGNoKQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgLy8gQW5kIHRoZW4gc3RyaXAgdW5uZWNlc3Nhcnkgc3BhY2luZyBmcm9tIHRoZSByZW1haW5pbmcgbGluZXMuCiAgICAgICAgICBsZXQgdGV4dFBhcnRzID0gW3Jhd01hdGNoWzNdXQogICAgICAgICAgICAgIC5jb25jYXQoY29udGVudC5zbGljZShyYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUgKyAxLCByYXdFbGVtZW50LnBvc2l0aW9uLmVuZC5saW5lICsgMSkpCiAgICAgICAgICAgICAgLm1hcCh0ID0+IHQudHJpbSgpKTsKICAgICAgICAgIGxldCB0ZXh0V2l0aE5ld2xpbmUgPSB0ZXh0UGFydHMuam9pbigiXG4iKTsKICAgICAgICAgIGxldCB0ZXh0Tm9OZXdsaW5lID0gdGV4dFBhcnRzLmpvaW4oIiAiKTsKICAgICAgICAgIC8vIEZpbmQgdGhlIGxpc3QgdGhhdCB3ZSBhcmUgYSBwYXJ0IG9mIGJ5IGxpbmUuCiAgICAgICAgICBsZXQgY29udGFpbmluZ0xpc3RJZCA9IChtZXRhZGF0YS5zZWN0aW9ucyB8fCBbXSkuZmluZEluZGV4KHMgPT4gcy50eXBlID09ICJsaXN0IiAmJgogICAgICAgICAgICAgIHMucG9zaXRpb24uc3RhcnQubGluZSA8PSByYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUgJiYKICAgICAgICAgICAgICBzLnBvc2l0aW9uLmVuZC5saW5lID49IHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZSk7CiAgICAgICAgICAvLyBGaW5kIHRoZSBzZWN0aW9uIHdlIGJlbG9uZyB0byBhcyB3ZWxsLgogICAgICAgICAgbGV0IHNlY3Rpb25OYW1lID0gZmluZFByZXZpb3VzSGVhZGVyKHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZSwgbWV0YWRhdGEuaGVhZGluZ3MgfHwgW10pOwogICAgICAgICAgbGV0IHNlY3Rpb25MaW5rID0gc2VjdGlvbk5hbWUgPT09IHVuZGVmaW5lZCA/IExpbmsuZmlsZShwYXRoKSA6IExpbmsuaGVhZGVyKHBhdGgsIHNlY3Rpb25OYW1lKTsKICAgICAgICAgIGxldCBjbG9zZXN0TGluayA9IHJhd0VsZW1lbnQuaWQgPT09IHVuZGVmaW5lZCA/IHNlY3Rpb25MaW5rIDogTGluay5ibG9jayhwYXRoLCByYXdFbGVtZW50LmlkKTsKICAgICAgICAgIC8vIEdhdGhlciBhbnkgbGlua3MgdGhhdCBvY2N1ciBvbiB0aGUgc2FtZSBsaW5lcyBhcyB0aGUgdGFzay4KICAgICAgICAgIGNvbnN0IGxpbmtzID0gW107CiAgICAgICAgICBmb3IgKGxldCBsaW5lID0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lOyBsaW5lIDw9IHJhd0VsZW1lbnQucG9zaXRpb24uZW5kLmxpbmU7IGxpbmUrKykgewogICAgICAgICAgICAgIGlmIChsaW5rc0J5TGluZVtsaW5lXSkKICAgICAgICAgICAgICAgICAgbGlua3MucHVzaCguLi5saW5rc0J5TGluZVtsaW5lXSk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBDb25zdHJ1Y3QgdW5pdmVyc2FsIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZWxlbWVudCAoYmVmb3JlIHRhc2tzKS4KICAgICAgICAgIGxldCBpdGVtID0gbmV3IExpc3RJdGVtKHsKICAgICAgICAgICAgICBzeW1ib2w6IHJhd01hdGNoWzFdLAogICAgICAgICAgICAgIGxpbms6IGNsb3Nlc3RMaW5rLAogICAgICAgICAgICAgIGxpbmtzOiBsaW5rcywKICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uTGluaywKICAgICAgICAgICAgICB0ZXh0OiB0ZXh0V2l0aE5ld2xpbmUsCiAgICAgICAgICAgICAgdGFnczogZXh0cmFjdFRhZ3MkMSh0ZXh0Tm9OZXdsaW5lKSwKICAgICAgICAgICAgICBsaW5lOiByYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUsCiAgICAgICAgICAgICAgbGluZUNvdW50OiByYXdFbGVtZW50LnBvc2l0aW9uLmVuZC5saW5lIC0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICsgMSwKICAgICAgICAgICAgICBsaXN0OiBjb250YWluaW5nTGlzdElkID09IC0xID8gLTEgOiAobWV0YWRhdGEuc2VjdGlvbnMgfHwgW10pW2NvbnRhaW5pbmdMaXN0SWRdLnBvc2l0aW9uLnN0YXJ0LmxpbmUsCiAgICAgICAgICAgICAgcG9zaXRpb246IHJhd0VsZW1lbnQucG9zaXRpb24sCiAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLAogICAgICAgICAgICAgIGJsb2NrSWQ6IHJhd0VsZW1lbnQuaWQsCiAgICAgICAgICB9KTsKICAgICAgICAgIGlmIChyYXdFbGVtZW50LnBhcmVudCA+PSAwICYmIHJhd0VsZW1lbnQucGFyZW50ICE9IGl0ZW0ubGluZSkKICAgICAgICAgICAgICBpdGVtLnBhcmVudCA9IHJhd0VsZW1lbnQucGFyZW50OwogICAgICAgICAgLy8gU2V0IHVwIHRoZSBiYXNpYyB0YXNrIGluZm9ybWF0aW9uIGZvciBub3csIHRob3VnaCB3ZSBoYXZlIHRvIHJlY29tcHV0ZSBgZnVsbHlDb21wdXRlZGAgbGF0ZXIuCiAgICAgICAgICBpZiAocmF3RWxlbWVudC50YXNrKSB7CiAgICAgICAgICAgICAgaXRlbS50YXNrID0gewogICAgICAgICAgICAgICAgICBzdGF0dXM6IHJhd0VsZW1lbnQudGFzaywKICAgICAgICAgICAgICAgICAgY2hlY2tlZDogcmF3RWxlbWVudC50YXNrICE9ICIiICYmIHJhd0VsZW1lbnQudGFzayAhPSAiICIsCiAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZDogcmF3RWxlbWVudC50YXNrID09ICJYIiB8fCByYXdFbGVtZW50LnRhc2sgPT0gIngiLAogICAgICAgICAgICAgICAgICBmdWxseUNvbXBsZXRlZDogcmF3RWxlbWVudC50YXNrID09ICJYIiB8fCByYXdFbGVtZW50LnRhc2sgPT0gIngiLAogICAgICAgICAgICAgIH07CiAgICAgICAgICB9CiAgICAgICAgICAvLyBFeHRyYWN0IGlubGluZSBmaWVsZHM7IGV4dHJhY3QgZnVsbC1saW5lIGZpZWxkcyBvbmx5IGlmIHdlIGFyZSBOT1QgYSB0YXNrLgogICAgICAgICAgaXRlbS5maWVsZHMgPSBuZXcgTWFwKCk7CiAgICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGV4dHJhY3RJbmxpbmVGaWVsZHModGV4dE5vTmV3bGluZSwgdHJ1ZSkpCiAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZWxlbWVudCwgaXRlbS5maWVsZHMpOwogICAgICAgICAgaWYgKCFyYXdFbGVtZW50LnRhc2sgJiYgaXRlbS5maWVsZHMuc2l6ZSA9PSAwKSB7CiAgICAgICAgICAgICAgbGV0IGZ1bGxMaW5lID0gZXh0cmFjdEZ1bGxMaW5lRmllbGQodGV4dE5vTmV3bGluZSk7CiAgICAgICAgICAgICAgaWYgKGZ1bGxMaW5lKQogICAgICAgICAgICAgICAgICBhZGRSYXdJbmxpbmVGaWVsZChmdWxsTGluZSwgaXRlbS5maWVsZHMpOwogICAgICAgICAgfQogICAgICAgICAgY2FjaGVbaXRlbS5saW5lXSA9IGl0ZW07CiAgICAgIH0KICAgICAgLy8gVHJlZSB1cGRhdGluZyBwYXNzZXMuIFVwZGF0ZSBjaGlsZCBsaXN0cy4gUHJvcG9nYXRlIG1ldGFkYXRhIHVwIHRvIHBhcmVudCB0YXNrcy4gVXBkYXRlIHRhc2sgYGZ1bGx5Q29tcGxldGVkYC4KICAgICAgbGV0IGxpdGVyYWxzID0gbmV3IE1hcCgpOwogICAgICBmb3IgKGxldCBsaXN0SXRlbSBvZiBPYmplY3QudmFsdWVzKGNhY2hlKSkgewogICAgICAgICAgLy8gUGFzcyAxOiBVcGRhdGUgY2hpbGQgbGlzdHMuCiAgICAgICAgICBpZiAobGlzdEl0ZW0ucGFyZW50ICE9PSB1bmRlZmluZWQgJiYgbGlzdEl0ZW0ucGFyZW50IGluIGNhY2hlKSB7CiAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IGNhY2hlW2xpc3RJdGVtLnBhcmVudF07CiAgICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gobGlzdEl0ZW0ubGluZSk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBQYXNzIDI6IFByb3BvZ2F0ZSBtZXRhZGF0YSB1cCB0byB0aGUgcGFyZW50IHRhc2sgb3Igcm9vdCBlbGVtZW50LgogICAgICAgICAgaWYgKCFsaXN0SXRlbS50YXNrKSB7CiAgICAgICAgICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhsaXRlcmFscywgbGlzdEl0ZW0uZmllbGRzKTsKICAgICAgICAgICAgICAvLyBUT0RPIChibGFja3NtaXRoZ3UpOiBUaGUgYmVsb3cgY29kZSBwcm9wZXJseSBwcm9wb2dhdGVzIG1ldGFkYXRhIHVwIHRvIHRoZSBuZWFyZXN0IHRhc2ssIHdoaWNoIGlzIHRoZQogICAgICAgICAgICAgIC8vIG1vcmUgaW50dWl0aXZlIGJlaGF2aW9yLiBGb3Igbm93LCB0aG91Z2gsIHdlIHdpbGwga2VlcCB0aGUgZXhpc3RpbmcgbG9naWMuCiAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICBsZXQgcm9vdDogTGlzdEl0ZW0gfCB1bmRlZmluZWQgPSBsaXN0SXRlbTsKICAgICAgICAgICAgICB3aGlsZSAoISFyb290ICYmICFyb290LnRhc2spIHJvb3QgPSBjYWNoZVtyb290LnBhcmVudCA/PyAtMV07CgogICAgICAgICAgICAgIC8vIElmIHRoZSByb290IGlzIG51bGwsIGFwcGVuZCB0aGlzIG1ldGFkYXRhIHRvIHRoZSByb290OyBvdGhlcndpc2UsIGFwcGVuZCB0byB0aGUgdGFzay4KICAgICAgICAgICAgICBtZXJnZUZpZWxkR3JvdXBzKHJvb3QgPT09IHVuZGVmaW5lZCB8fCByb290ID09IG51bGwgPyBsaXRlcmFscyA6IHJvb3QuZmllbGRzLCBsaXN0SXRlbS5maWVsZHMpOwogICAgICAgICAgICAgICovCiAgICAgICAgICB9CiAgICAgICAgICAvLyBQYXNzIDM6IFByb3BvZ2F0ZSBgZnVsbHlDb21wbGV0ZWRgIHVwIHRoZSB0YXNrIHRyZWUuIFRoaXMgaXMgYSBsaXR0bGUgbGVzcyBlZmZpY2llbnQgdGhhbiBqdXN0IGRvaW5nIGEgc2ltcGxlCiAgICAgICAgICAvLyBERlMgdXNpbmcgdGhlIGNoaWxkcmVuIElEcywgYnV0IGl0J3MgcHJvYmFibHkgZmluZS4KICAgICAgICAgIGlmIChsaXN0SXRlbS50YXNrKSB7CiAgICAgICAgICAgICAgbGV0IGN1cnIgPSBsaXN0SXRlbTsKICAgICAgICAgICAgICB3aGlsZSAoISFjdXJyKSB7CiAgICAgICAgICAgICAgICAgIGlmIChjdXJyLnRhc2spCiAgICAgICAgICAgICAgICAgICAgICBjdXJyLnRhc2suZnVsbHlDb21wbGV0ZWQgPSBjdXJyLnRhc2suZnVsbHlDb21wbGV0ZWQgJiYgbGlzdEl0ZW0udGFzay5jb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgIGN1cnIgPSBjYWNoZVsoX2EgPSBjdXJyLnBhcmVudCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogLTFdOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gW09iamVjdC52YWx1ZXMoY2FjaGUpLCBsaXRlcmFsc107CiAgfQogIC8qKiBBdHRlbXB0IHRvIGZpbmQgYSBkYXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gcGFnZSBmcm9tIG1ldGFkYXRhIG9yIGZpbGVuYW1lcy4gKi8KICBmdW5jdGlvbiBmaW5kRGF0ZShmaWxlLCBmaWVsZHMpIHsKICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kOwogICAgICBmb3IgKGxldCBrZXkgb2YgZmllbGRzLmtleXMoKSkgewogICAgICAgICAgaWYgKCEoa2V5LnRvTG9jYWxlTG93ZXJDYXNlKCkgPT0gImRhdGUiIHx8IGtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09ICJkYXkiKSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIGxldCB2YWx1ZSA9IGZpZWxkcy5nZXQoa2V5KTsKICAgICAgICAgIGlmIChWYWx1ZXMuaXNEYXRlKHZhbHVlKSkgewogICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKFZhbHVlcy5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwICYmIFZhbHVlcy5pc0RhdGUodmFsdWVbMF0pKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlWzBdOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoVmFsdWVzLmlzTGluayh2YWx1ZSkpIHsKICAgICAgICAgICAgICBsZXQgZGF0ZSA9IChfYyA9IChfYSA9IGV4dHJhY3REYXRlKHZhbHVlLnBhdGgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBleHRyYWN0RGF0ZSgoX2IgPSB2YWx1ZS5zdWJwYXRoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAiIikpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IGV4dHJhY3REYXRlKChfZCA9IHZhbHVlLmRpc3BsYXkpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6ICIiKTsKICAgICAgICAgICAgICBpZiAoZGF0ZSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGU7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGV4dHJhY3REYXRlKGdldEZpbGVUaXRsZShmaWxlKSk7CiAgfQogIC8qKiBSZWN1cnNpdmVseSBjb252ZXJ0IGZyb250bWF0dGVyIGludG8gZmllbGRzLiBXZSBoYXZlIHRvIGRhbmNlIGFyb3VuZCBZQU1MIHN0cnVjdHVyZS4gKi8KICBmdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyKHZhbHVlKSB7CiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJvYmplY3QiKSB7CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107CiAgICAgICAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocGFyc2VGcm9udG1hdHRlcihjaGlsZCkpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7CiAgICAgICAgICAgICAgbGV0IGRhdGVQYXJzZSA9IERhdGVUaW1lLmZyb21KU0RhdGUodmFsdWUpOwogICAgICAgICAgICAgIHJldHVybiBkYXRlUGFyc2U7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBsZXQgb2JqZWN0ID0gdmFsdWU7CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBvYmplY3QpIHsKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBwYXJzZUZyb250bWF0dGVyKG9iamVjdFtrZXldKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJudW1iZXIiKSB7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAiYm9vbGVhbiIpIHsKICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciKSB7CiAgICAgICAgICBsZXQgZGF0ZVBhcnNlID0gRVhQUkVTU0lPTi5kYXRlLnBhcnNlKHZhbHVlKTsKICAgICAgICAgIGlmIChkYXRlUGFyc2Uuc3RhdHVzKQogICAgICAgICAgICAgIHJldHVybiBkYXRlUGFyc2UudmFsdWU7CiAgICAgICAgICBsZXQgZHVyYXRpb25QYXJzZSA9IEVYUFJFU1NJT04uZHVyYXRpb24ucGFyc2UodmFsdWUpOwogICAgICAgICAgaWYgKGR1cmF0aW9uUGFyc2Uuc3RhdHVzKQogICAgICAgICAgICAgIHJldHVybiBkdXJhdGlvblBhcnNlLnZhbHVlOwogICAgICAgICAgbGV0IGxpbmtQYXJzZSA9IEVYUFJFU1NJT04uZW1iZWRMaW5rLnBhcnNlKHZhbHVlKTsKICAgICAgICAgIGlmIChsaW5rUGFyc2Uuc3RhdHVzKQogICAgICAgICAgICAgIHJldHVybiBsaW5rUGFyc2UudmFsdWU7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgLy8gQmFja3VwIGlmIHdlIGRvbid0IHVuZGVyc3RhbmQgdGhlIHR5cGUuCiAgICAgIHJldHVybiBudWxsOwogIH0KICAvKiogQWRkIGEgcGFyc2VkIGlubGluZSBmaWVsZCB0byB0aGUgb3V0cHV0IG1hcC4gKi8KICBmdW5jdGlvbiBhZGRSYXdJbmxpbmVGaWVsZChmaWVsZCwgb3V0cHV0KSB7CiAgICAgIGFkZElubGluZUZpZWxkKGZpZWxkLmtleSwgcGFyc2VJbmxpbmVWYWx1ZShmaWVsZC52YWx1ZSksIG91dHB1dCk7CiAgfQogIC8qKiBBZGQgYSByYXcgaW5saW5lIGZpZWxkIHRvIGFuIG91dHB1dCBtYXAsIGNhbm9uaWNhbGl6aW5nIGFzIG5lZWRlZC4gKi8KICBmdW5jdGlvbiBhZGRJbmxpbmVGaWVsZChrZXksIHZhbHVlLCBvdXRwdXQpIHsKICAgICAgdmFyIF9hOwogICAgICBpZiAoIW91dHB1dC5oYXMoa2V5KSkKICAgICAgICAgIG91dHB1dC5zZXQoa2V5LCBbdmFsdWVdKTsKICAgICAgZWxzZQogICAgICAgICAgKF9hID0gb3V0cHV0LmdldChrZXkpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVzaCh2YWx1ZSk7CiAgfQogIC8qKiBHaXZlbiBhIHJhdyBsaXN0IG9mIGlubGluZSBmaWVsZCB2YWx1ZXMsIGFkZCBub3JtYWxpemVkIGtleXMgYW5kIHNxdWFzaCB0aGVtLiAqLwogIGZ1bmN0aW9uIGZpbmFsaXplSW5saW5lRmllbGRzKGZpZWxkcykgewogICAgICAvLyBDb21wdXRlIHVuaXF1ZSBub3JtYWxpemVkIGtleXMgKHRoYXQgZG8gbm90IG92ZXJsYXAgdy8gdGhlIGZpZWxkcykuCiAgICAgIGxldCBub3JtYWxpemVkID0gbmV3IE1hcCgpOwogICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZXNdIG9mIGZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgIGxldCBub3JtS2V5ID0gY2Fub25pY2FsaXplVmFyTmFtZShrZXkpOwogICAgICAgICAgaWYgKG5vcm1LZXkgPT0gIiIgfHwgZmllbGRzLmhhcyhub3JtS2V5KSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIGlmICghbm9ybWFsaXplZC5oYXMobm9ybUtleSkpCiAgICAgICAgICAgICAgbm9ybWFsaXplZC5zZXQobm9ybUtleSwgdmFsdWVzKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBub3JtYWxpemVkLnNldChub3JtS2V5LCBub3JtYWxpemVkLmdldChub3JtS2V5KS5jb25jYXQodmFsdWVzKSk7CiAgICAgIH0KICAgICAgLy8gQ29tYmluZSBub3JtYWxpemVkICsgbm9ybWFsIGtleXMuCiAgICAgIGxldCBpbnRlcmltID0gbmV3IE1hcCgpOwogICAgICBtZXJnZUZpZWxkR3JvdXBzKGludGVyaW0sIGZpZWxkcyk7CiAgICAgIG1lcmdlRmllbGRHcm91cHMoaW50ZXJpbSwgbm9ybWFsaXplZCk7CiAgICAgIC8vIEFuZCB0aGVuIGZsYXR0ZW4gdGhlbS4KICAgICAgbGV0IHJlc3VsdCA9IG5ldyBNYXAoKTsKICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGludGVyaW0uZW50cmllcygpKSB7CiAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09IDEpCiAgICAgICAgICAgICAgcmVzdWx0LnNldChrZXksIHZhbHVlWzBdKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWUpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQogIC8qKiBDb3B5IGFsbCBmaWVsZHMgb2YgJ3NvdXJjZScgaW50byAndGFyZ2V0Jy4gKi8KICBmdW5jdGlvbiBtZXJnZUZpZWxkR3JvdXBzKHRhcmdldCwgc291cmNlKSB7CiAgICAgIGZvciAobGV0IGtleSBvZiBzb3VyY2Uua2V5cygpKSB7CiAgICAgICAgICBpZiAoIXRhcmdldC5oYXMoa2V5KSkKICAgICAgICAgICAgICB0YXJnZXQuc2V0KGtleSwgc291cmNlLmdldChrZXkpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB0YXJnZXQuc2V0KGtleSwgdGFyZ2V0LmdldChrZXkpLmNvbmNhdChzb3VyY2UuZ2V0KGtleSkpKTsKICAgICAgfQogIH0KICAvKiogRmluZCB0aGUgaGVhZGVyIHRoYXQgaXMgbW9zdCBpbW1lZGlhdGVseSBhYm92ZSB0aGUgZ2l2ZW4gbGluZSBudW1iZXIuICovCiAgZnVuY3Rpb24gZmluZFByZXZpb3VzSGVhZGVyKGxpbmUsIGhlYWRlcnMpIHsKICAgICAgaWYgKGhlYWRlcnMubGVuZ3RoID09IDApCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICBpZiAoaGVhZGVyc1swXS5wb3NpdGlvbi5zdGFydC5saW5lID4gbGluZSkKICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIGxldCBpbmRleCA9IGhlYWRlcnMubGVuZ3RoIC0gMTsKICAgICAgd2hpbGUgKGluZGV4ID49IDAgJiYgaGVhZGVyc1tpbmRleF0ucG9zaXRpb24uc3RhcnQubGluZSA+IGxpbmUpCiAgICAgICAgICBpbmRleC0tOwogICAgICByZXR1cm4gaGVhZGVyc1tpbmRleF0uaGVhZGluZzsKICB9CgogIC8qKiBBY3R1YWwgaW1wb3J0IGltcGxlbWVudGF0aW9uIGJhY2tlbmQuIFRoaXMgbXVzdCByZW1haW4gc2VwYXJhdGUgZnJvbSBgaW1wb3J0LWVudHJ5YCBzaW5jZSBpdCBpcyB1c2VkIHdpdGhvdXQgd2ViIHdvcmtlcnMuICovCiAgZnVuY3Rpb24gcnVuSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0cywgbWV0YWRhdGEpIHsKICAgICAgcmV0dXJuIHBhcnNlUGFnZShwYXRoLCBjb250ZW50cywgc3RhdHMsIG1ldGFkYXRhKTsKICB9CgogIC8qKiBTaW1wbGlmaWVzIHBhc3NpbmcgZGF0YXZpZXcgdmFsdWVzIGFjcm9zcyB0aGUgSlMgd2ViIHdvcmtlciBiYXJyaWVyLiAqLwogIHZhciBUcmFuc2ZlcmFibGU7CiAgKGZ1bmN0aW9uIChUcmFuc2ZlcmFibGUpIHsKICAgICAgLyoqIENvbnZlcnQgYSBsaXRlcmFsIHZhbHVlIHRvIGEgc2VyaWFsaXplci1mcmllbmRseSB0cmFuc2ZlcmFibGUgdmFsdWUuICovCiAgICAgIGZ1bmN0aW9uIHRyYW5zZmVyYWJsZSh2YWx1ZSkgewogICAgICAgICAgLy8gSGFuZGxlIHNpbXBsZSB1bml2ZXJzYWwgdHlwZXMgZmlyc3QuCiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBNYXApIHsKICAgICAgICAgICAgICBsZXQgY29waWVkID0gbmV3IE1hcCgpOwogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgdmFsdWUuZW50cmllcygpKQogICAgICAgICAgICAgICAgICBjb3BpZWQuc2V0KHRyYW5zZmVyYWJsZShrZXkpLCB0cmFuc2ZlcmFibGUodmFsKSk7CiAgICAgICAgICAgICAgcmV0dXJuIGNvcGllZDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgU2V0KSB7CiAgICAgICAgICAgICAgbGV0IGNvcGllZCA9IG5ldyBTZXQoKTsKICAgICAgICAgICAgICBmb3IgKGxldCB2YWwgb2YgdmFsdWUpCiAgICAgICAgICAgICAgICAgIGNvcGllZC5hZGQodHJhbnNmZXJhYmxlKHZhbCkpOwogICAgICAgICAgICAgIHJldHVybiBjb3BpZWQ7CiAgICAgICAgICB9CiAgICAgICAgICBsZXQgd3JhcHBlZCA9IFZhbHVlcy53cmFwVmFsdWUodmFsdWUpOwogICAgICAgICAgaWYgKHdyYXBwZWQgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICB0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIHRyYW5zZmVyYWJsZSB2YWx1ZTogIiArIHZhbHVlKTsKICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7CiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6CiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsKICAgICAgICAgICAgICBjYXNlICJkYXRlIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICJfX190cmFuc2Zlci10eXBlIjogImRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpLAogICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgICAgICAgICAgIHpvbmU6IHdyYXBwZWQudmFsdWUuem9uZS5lcXVhbHMoU3lzdGVtWm9uZS5pbnN0YW5jZSkgPyB1bmRlZmluZWQgOiB3cmFwcGVkLnZhbHVlLnpvbmVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBjYXNlICJkdXJhdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB7ICJfX190cmFuc2Zlci10eXBlIjogImR1cmF0aW9uIiwgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpIH07CiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXAodiA9PiB0cmFuc2ZlcmFibGUodikpOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICByZXR1cm4geyAiX19fdHJhbnNmZXItdHlwZSI6ICJsaW5rIiwgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpIH07CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHRyYW5zZmVyYWJsZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgVHJhbnNmZXJhYmxlLnRyYW5zZmVyYWJsZSA9IHRyYW5zZmVyYWJsZTsKICAgICAgLyoqIENvbnZlcnQgYSB0cmFuc2ZlcmFibGUgdmFsdWUgYmFjayB0byBhIGxpdGVyYWwgdmFsdWUgd2UgY2FuIHdvcmsgd2l0aC4gKi8KICAgICAgZnVuY3Rpb24gdmFsdWUodHJhbnNmZXJhYmxlKSB7CiAgICAgICAgICBpZiAodHJhbnNmZXJhYmxlID09PSBudWxsKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICh0cmFuc2ZlcmFibGUgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICh0cmFuc2ZlcmFibGUgaW5zdGFuY2VvZiBNYXApIHsKICAgICAgICAgICAgICBsZXQgcmVhbCA9IG5ldyBNYXAoKTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIHRyYW5zZmVyYWJsZS5lbnRyaWVzKCkpCiAgICAgICAgICAgICAgICAgIHJlYWwuc2V0KHZhbHVlKGtleSksIHZhbHVlKHZhbCkpOwogICAgICAgICAgICAgIHJldHVybiByZWFsOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAodHJhbnNmZXJhYmxlIGluc3RhbmNlb2YgU2V0KSB7CiAgICAgICAgICAgICAgbGV0IHJlYWwgPSBuZXcgU2V0KCk7CiAgICAgICAgICAgICAgZm9yIChsZXQgdmFsIG9mIHRyYW5zZmVyYWJsZSkKICAgICAgICAgICAgICAgICAgcmVhbC5hZGQodmFsdWUodmFsKSk7CiAgICAgICAgICAgICAgcmV0dXJuIHJlYWw7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRyYW5zZmVyYWJsZSkpIHsKICAgICAgICAgICAgICByZXR1cm4gdHJhbnNmZXJhYmxlLm1hcCh2ID0+IHZhbHVlKHYpKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0cmFuc2ZlcmFibGUgPT09ICJvYmplY3QiKSB7CiAgICAgICAgICAgICAgaWYgKCJfX190cmFuc2Zlci10eXBlIiBpbiB0cmFuc2ZlcmFibGUpIHsKICAgICAgICAgICAgICAgICAgc3dpdGNoICh0cmFuc2ZlcmFibGVbIl9fX3RyYW5zZmVyLXR5cGUiXSkgewogICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZGF0ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGVPcHRzID0gdmFsdWUodHJhbnNmZXJhYmxlLm9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRlRGF0YSA9IHZhbHVlKHRyYW5zZmVyYWJsZS52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoZGF0ZURhdGEsIHsgem9uZTogZGF0ZU9wdHMuem9uZSB9KTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh2YWx1ZSh0cmFuc2ZlcmFibGUudmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBMaW5rLmZyb21PYmplY3QodmFsdWUodHJhbnNmZXJhYmxlLnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBVbnJlY29nbml6ZWQgdHJhbnNmZXIgdHlwZSAnJHt0cmFuc2ZlcmFibGVbIl9fX3RyYW5zZmVyLXR5cGUiXX0nYCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgT2JqZWN0LmVudHJpZXModHJhbnNmZXJhYmxlKSkKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZSh2YWwpOwogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gdHJhbnNmZXJhYmxlOwogICAgICB9CiAgICAgIFRyYW5zZmVyYWJsZS52YWx1ZSA9IHZhbHVlOwogIH0pKFRyYW5zZmVyYWJsZSB8fCAoVHJhbnNmZXJhYmxlID0ge30pKTsKCiAgLyoqIEVudHJ5LXBvaW50IHNjcmlwdCB1c2VkIGJ5IHRoZSBpbmRleCBhcyBhIHdlYiB3b3JrZXIuICovCiAgLyoqIEFuIGltcG9ydCB3aGljaCBjYW4gZmFpbCBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uLCB3aGljaCB3aWxsIGJlIGNhdWdodCBieSB0aGUgaGFuZGxlci4gKi8KICBmdW5jdGlvbiBmYWlsYWJsZUltcG9ydChwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpIHsKICAgICAgaWYgKG1ldGFkYXRhID09PSB1bmRlZmluZWQgfHwgbWV0YWRhdGEgPT09IG51bGwpIHsKICAgICAgICAgIHRocm93IEVycm9yKGBDYW5ub3QgaW5kZXggZmlsZSwgc2luY2UgaXQgaGFzIG5vIE9ic2lkaWFuIGZpbGUgbWV0YWRhdGEuYCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJ1bkltcG9ydChwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpOwogIH0KICBvbm1lc3NhZ2UgPSBhc3luYyAoZXZ0KSA9PiB7CiAgICAgIHRyeSB7CiAgICAgICAgICBsZXQgeyBwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEgfSA9IGV2dC5kYXRhOwogICAgICAgICAgbGV0IHJlc3VsdCA9IGZhaWxhYmxlSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0LCBtZXRhZGF0YSk7CiAgICAgICAgICBwb3N0TWVzc2FnZSh7IHBhdGg6IGV2dC5kYXRhLnBhdGgsIHJlc3VsdDogVHJhbnNmZXJhYmxlLnRyYW5zZmVyYWJsZShyZXN1bHQpIH0pOwogICAgICB9CiAgICAgIGNhdGNoIChlcnJvcikgewogICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpOwogICAgICAgICAgcG9zdE1lc3NhZ2UoewogICAgICAgICAgICAgIHBhdGg6IGV2dC5kYXRhLnBhdGgsCiAgICAgICAgICAgICAgcmVzdWx0OiB7CiAgICAgICAgICAgICAgICAgICRlcnJvcjogYEZhaWxlZCB0byBpbmRleCBmaWxlOiAke2V2dC5kYXRhLnBhdGh9OiAke2Vycm9yfWAsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgIH0pOwogICAgICB9CiAgfTsKCn0pKCk7Cgo=', null, false); /* eslint-enable */ /** Controls and creates Dataview file importers, allowing for asynchronous loading and parsing of files. */ @@ -12488,6 +12652,10 @@ class FileImporter extends obsidian.Component { /** Stores various indices on all files in the vault to make dataview generation fast. */ /** Aggregate index which has several sub-indices and will initialize all of them. */ class FullIndex extends obsidian.Component { + /** Generate a full index from the given vault. */ + static create(app, indexVersion, onChange) { + return new FullIndex(app, indexVersion, onChange); + } /** Construct a new index using the app data and a current data version. */ constructor(app, indexVersion, onChange) { super(); @@ -12513,10 +12681,6 @@ class FullIndex extends obsidian.Component { // The starred cache fetches starred entries semi-regularly via an interval. this.addChild((this.starred = new StarredCache(this.app, () => this.touch()))); } - /** Generate a full index from the given vault. */ - static create(app, indexVersion, onChange) { - return new FullIndex(app, indexVersion, onChange); - } /** Trigger a metadata event on the metadata cache. */ trigger(...args) { this.metadataCache.trigger("dataview:metadata-change", ...args); @@ -12652,14 +12816,14 @@ class FullIndex extends obsidian.Component { } /** Indexes files by their full prefix - essentially a simple prefix tree. */ class PrefixIndex extends obsidian.Component { + static create(vault, updateRevision) { + return new PrefixIndex(vault, updateRevision); + } constructor(vault, updateRevision) { super(); this.vault = vault; this.updateRevision = updateRevision; } - static create(vault, updateRevision) { - return new PrefixIndex(vault, updateRevision); - } *walk(folder, filter) { for (const file of folder.children) { if (file instanceof obsidian.TFolder) { @@ -12807,9 +12971,22 @@ class StarredCache extends obsidian.Component { /** Fetch all starred files from the stars plugin, if present. */ static fetch(app) { var _a, _b, _c, _d; - let items = (_d = (_c = (_b = (_a = app === null || app === void 0 ? void 0 : app.internalPlugins) === null || _a === void 0 ? void 0 : _a.plugins) === null || _b === void 0 ? void 0 : _b.starred) === null || _c === void 0 ? void 0 : _c.instance) === null || _d === void 0 ? void 0 : _d.items; + let items = (_d = (_c = (_b = (_a = app === null || app === void 0 ? void 0 : app.internalPlugins) === null || _a === void 0 ? void 0 : _a.plugins) === null || _b === void 0 ? void 0 : _b.bookmarks) === null || _c === void 0 ? void 0 : _c.instance) === null || _d === void 0 ? void 0 : _d.items; if (items == undefined) return new Set(); + // Retrieve all grouped (nested) items, returning a flat array + const flattenItems = (items) => { + let children = []; + return items + .map(i => { + if (i.type == "group" && i.items && i.items.length) { + children = [...children, ...i.items]; + } + return i; + }) + .concat(children.length ? flattenItems(children) : children); + }; + items = flattenItems(items); return new Set(items.filter((l) => l.type === "file").map(l => l.path)); } } @@ -13310,6 +13487,11 @@ var DefaultFunctions; .add2("null", "string", (_nul, _format) => null) .vectorize(2, [0]) .build(); + DefaultFunctions.durationformat = new FunctionBuilder("durationformat") + .add2("duration", "string", (dur, format) => dur.toFormat(format)) + .add2("null", "string", (_nul, _format) => null) + .vectorize(2, [0]) + .build(); DefaultFunctions.localtime = new FunctionBuilder("localtime") .add1("date", d => d.toLocal()) .add1("null", () => null) @@ -13329,6 +13511,14 @@ var DefaultFunctions; .add1("null", () => null) .vectorize(1, [0]) .build(); + /** Format a number using a standard currency format. */ + DefaultFunctions.currencyformat = new FunctionBuilder("currencyformat") + .add2("number", "string", (num, format) => Intl.NumberFormat(currentLocale(), { style: "currency", currency: format }).format(num)) + .add2("null", "string", (_nul, _format) => null) + .add1("number", num => Intl.NumberFormat(currentLocale(), { style: "currency", currency: "USD" }).format(num)) + .add1("null", () => null) + .vectorize(2, [0]) + .build(); /** * Convert any value to a reasonable internal string representation. Most useful for dates, strings, numbers, and * so on. @@ -13347,6 +13537,21 @@ var DefaultFunctions; .add2("null", "*", () => null) .vectorize(2, [0]) .build(); + DefaultFunctions.trunc = new FunctionBuilder("trunc") + .add1("number", n => Math.trunc(n)) + .add1("null", () => null) + .vectorize(1, [0]) + .build(); + DefaultFunctions.floor = new FunctionBuilder("floor") + .add1("number", n => Math.floor(n)) + .add1("null", () => null) + .vectorize(1, [0]) + .build(); + DefaultFunctions.ceil = new FunctionBuilder("ceil") + .add1("number", n => Math.ceil(n)) + .add1("null", () => null) + .vectorize(1, [0]) + .build(); DefaultFunctions.min = new FunctionBuilder("min") .add2("*", "null", (a, _n) => a) .add2("null", "*", (_n, a) => a) @@ -13704,6 +13909,10 @@ var DefaultFunctions; .add2("array", "function", (arr, f, ctx) => arr.filter(v => Values.isTruthy(f(ctx, v)))) .add2("null", "*", () => null) .build(); + DefaultFunctions.unique = new FunctionBuilder("unique") + .add1("array", (arr, ctx) => DataArray.wrap(arr, ctx.settings).distinct().array()) + .add1("null", () => null) + .build(); DefaultFunctions.map = new FunctionBuilder("map") .add2("array", "function", (arr, f, ctx) => arr.map(v => f(ctx, v))) .add2("null", "*", () => null) @@ -13748,13 +13957,18 @@ const DEFAULT_FUNCTIONS = { date: DefaultFunctions.date, dur: DefaultFunctions.dur, dateformat: DefaultFunctions.dateformat, + durationformat: DefaultFunctions.durationformat, localtime: DefaultFunctions.localtime, number: DefaultFunctions.number, + currencyformat: DefaultFunctions.currencyformat, string: DefaultFunctions.string, object: DefaultFunctions.object, typeof: DefaultFunctions.typeOf, // Math Operations. round: DefaultFunctions.round, + trunc: DefaultFunctions.trunc, + floor: DefaultFunctions.floor, + ceil: DefaultFunctions.ceil, min: DefaultFunctions.min, max: DefaultFunctions.max, minby: DefaultFunctions.minby, @@ -13794,6 +14008,7 @@ const DEFAULT_FUNCTIONS = { any: DefaultFunctions.any, none: DefaultFunctions.none, filter: DefaultFunctions.filter, + unique: DefaultFunctions.unique, map: DefaultFunctions.map, nonnull: DefaultFunctions.nonnull, // Object/Utility operations. @@ -13807,12 +14022,12 @@ const DEFAULT_FUNCTIONS = { /** Provides a global dispatch table for evaluating binary operators, including comparison. */ /** Provides implementations for binary operators on two types using a registry. */ class BinaryOpHandler { - constructor() { - this.map = new Map(); - } static create() { return new BinaryOpHandler(); } + constructor() { + this.map = new Map(); + } register(left, op, right, func) { this.map.set(BinaryOpHandler.repr(op, left, right), func); return this; @@ -14555,7 +14770,7 @@ const satisfies = (v, r) => { // export CJS style for parity compareVersions.validate = validate; compareVersions.compare = compare; -compareVersions.sastisfies = satisfies; +compareVersions.satisfies = satisfies; const semver = /^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i; @@ -14621,11 +14836,11 @@ const assertValidOperator = (op) => { } }; -var n,l$1,u$1,t$1,o$1,r$1,f$1,e$1={},c$1=[],s$1=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function a$1(n,l){for(var u in l)n[u]=l[u];return n}function h$1(n){var l=n.parentNode;l&&l.removeChild(n);}function v$1(l,u,i){var t,o,r,f={};for(r in u)"key"==r?t=u[r]:"ref"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),"function"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return y$1(l,f,t,o,null)}function y$1(n,i,t,o,r){var f={type:n,props:i,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++u$1:r};return null==r&&null!=l$1.vnode&&l$1.vnode(f),f}function p$1(){return {current:null}}function d$1(n){return n.children}function _$1(n,l){this.props=n,this.context=l;}function k$2(n,l){if(null==l)return n.__?k$2(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l0?y$1(_.type,_.props,_.key,null,_.__v):_)){if(_.__=u,_.__b=u.__b+1,null===(p=w[h])||p&&_.key==p.key&&_.type===p.type)w[h]=void 0;else for(v=0;v2&&(f.children=arguments.length>3?n.call(arguments,2):i),y$1(l.type,f,t||l.key,o||l.ref,null)}function D$1(n,l){var u={__c:l="__cC"+f$1++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(m$1);},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n);};}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=c$1.slice,l$1={__e:function(n,l,u,i){for(var t,o,r;l=l.__;)if((t=l.__c)&&!t.__)try{if((o=t.constructor)&&null!=o.getDerivedStateFromError&&(t.setState(o.getDerivedStateFromError(n)),r=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(n,i||{}),r=t.__d),r)return t.__E=t}catch(l){n=l;}throw n}},u$1=0,_$1.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=a$1({},this.state),"function"==typeof n&&(n=n(a$1({},u),this.props)),n&&a$1(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),m$1(this));},_$1.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),m$1(this));},_$1.prototype.render=d$1,t$1=[],o$1="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,g$2.__r=0,f$1=0; +var n,l$1,u$1,i$1,o$1,r$1,f$1,e$1,c$1={},s$1=[],a$1=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,h$1=Array.isArray;function v$1(n,l){for(var u in l)n[u]=l[u];return n}function p$1(n){var l=n.parentNode;l&&l.removeChild(n);}function y$1(l,u,t){var i,o,r,f={};for(r in u)"key"==r?i=u[r]:"ref"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),"function"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return d$1(l,f,i,o,null)}function d$1(n,t,i,o,r){var f={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++u$1:r};return null==r&&null!=l$1.vnode&&l$1.vnode(f),f}function _$1(){return {current:null}}function k$2(n){return n.children}function b$1(n,l){this.props=n,this.context=l;}function g$2(n,l){if(null==l)return n.__?g$2(n.__,n.__.__k.indexOf(n)+1):null;for(var u;ll&&i$1.sort(f$1));x$2.__r=0;}function P$1(n,l,u,t,i,o,r,f,e,a,v){var p,y,_,b,m,w,x,P,C,H=0,I=t&&t.__k||s$1,T=I.length,j=T,z=l.length;for(u.__k=[],p=0;p0?d$1(b.type,b.props,b.key,b.ref?b.ref:null,b.__v):b)?(b.__=u,b.__b=u.__b+1,-1===(P=A$2(b,I,x=p+H,j))?_=c$1:(_=I[P]||c$1,I[P]=void 0,j--),L$1(n,b,_,i,o,r,f,e,a,v),m=b.__e,(y=b.ref)&&_.ref!=y&&(_.ref&&O$1(_.ref,null,b),v.push(y,b.__c||m,b)),null!=m&&(null==w&&(w=m),(C=_===c$1||null===_.__v)?-1==P&&H--:P!==x&&(P===x+1?H++:P>x?j>z-x?H+=P-x:H--:H=P(null!=e?1:0))for(;r>=0||f=0){if((e=l[r])&&i==e.key&&o===e.type)return r;r--;}if(f2&&(e.children=arguments.length>3?n.call(arguments,2):t),d$1(l.type,e,i||l.key,o||l.ref,null)}function G$1(n,l){var u={__c:l="__cC"+e$1++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=[],(t={})[l]=this,this.getChildContext=function(){return t},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,w$2(n);});},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n);};}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=s$1.slice,l$1={__e:function(n,l,u,t){for(var i,o,r;l=l.__;)if((i=l.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(n)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),r=i.__d),r)return i.__E=i}catch(l){n=l;}throw n}},u$1=0,b$1.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=v$1({},this.state),"function"==typeof n&&(n=n(v$1({},u),this.props)),n&&v$1(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),w$2(this));},b$1.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),w$2(this));},b$1.prototype.render=k$2,i$1=[],r$1="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,f$1=function(n,l){return n.__v.__b-l.__v.__b},x$2.__r=0,e$1=0; -var t,u,r,o=0,i=[],c=l$1.__b,f=l$1.__r,e=l$1.diffed,a=l$1.__c,v=l$1.unmount;function l(t,r){l$1.__h&&l$1.__h(u,t,o||r),o=0;var i=u.__H||(u.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({}),i.__[t]}function m(n){return o=1,p(w$1,n)}function p(n,r,o){var i=l(t++,2);return i.t=n,i.__c||(i.__=[o?o(r):w$1(void 0,r),function(n){var t=i.t(i.__[0],n);i.__[0]!==t&&(i.__=[t,i.__[1]],i.__c.setState({}));}],i.__c=u),i.__}function y(r,o){var i=l(t++,3);!l$1.__s&&k$1(i.__H,o)&&(i.__=r,i.__H=o,u.__H.__h.push(i));}function d(r,o){var i=l(t++,4);!l$1.__s&&k$1(i.__H,o)&&(i.__=r,i.__H=o,u.__h.push(i));}function h(n){return o=5,_(function(){return {current:n}},[])}function s(n,t,u){o=6,d(function(){return "function"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==u?u:u.concat(n));}function _(n,u){var r=l(t++,7);return k$1(r.__H,u)&&(r.__=n(),r.__H=u,r.__h=n),r.__}function A$1(n,t){return o=8,_(function(){return n},t)}function F$1(n){var r=u.context[n.__c],o=l(t++,9);return o.c=n,r?(null==o.__&&(o.__=!0,r.sub(u)),r.props.value):n.__}function T$1(t,u){l$1.useDebugValue&&l$1.useDebugValue(u?u(t):t);}function x$1(){for(var t;t=i.shift();)if(t.__P)try{t.__H.__h.forEach(g$1),t.__H.__h.forEach(j$1),t.__H.__h=[];}catch(u){t.__H.__h=[],l$1.__e(u,t.__v);}}l$1.__b=function(n){u=null,c&&c(n);},l$1.__r=function(n){f&&f(n),t=0;var r=(u=n.__c).__H;r&&(r.__h.forEach(g$1),r.__h.forEach(j$1),r.__h=[]);},l$1.diffed=function(t){e&&e(t);var o=t.__c;o&&o.__H&&o.__H.__h.length&&(1!==i.push(o)&&r===l$1.requestAnimationFrame||((r=l$1.requestAnimationFrame)||function(n){var t,u=function(){clearTimeout(r),b&&cancelAnimationFrame(t),setTimeout(n);},r=setTimeout(u,100);b&&(t=requestAnimationFrame(u));})(x$1)),u=null;},l$1.__c=function(t,u){u.some(function(t){try{t.__h.forEach(g$1),t.__h=t.__h.filter(function(n){return !n.__||j$1(n)});}catch(r){u.some(function(n){n.__h&&(n.__h=[]);}),u=[],l$1.__e(r,t.__v);}}),a&&a(t,u);},l$1.unmount=function(t){v&&v(t);var u,r=t.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{g$1(n);}catch(n){u=n;}}),u&&l$1.__e(u,r.__v));};var b="function"==typeof requestAnimationFrame;function g$1(n){var t=u,r=n.__c;"function"==typeof r&&(n.__c=void 0,r()),u=t;}function j$1(n){var t=u;n.__c=n.__(),u=t;}function k$1(n,t){return !n||n.length!==t.length||t.some(function(t,u){return t!==n[u]})}function w$1(n,t){return "function"==typeof t?t(n):t} +var t,r,u,i,o=0,f=[],c=[],e=l$1.__b,a=l$1.__r,v=l$1.diffed,l=l$1.__c,m=l$1.unmount;function d(t,u){l$1.__h&&l$1.__h(r,t,o||u),o=0;var i=r.__H||(r.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({__V:c}),i.__[t]}function h(n){return o=1,s(B$1,n)}function s(n,u,i){var o=d(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):B$1(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}));}],o.__c=r,!r.u)){var f=function(n,t,r){if(!o.__c.__H)return !0;var u=o.__c.__H.__.filter(function(n){return n.__c});if(u.every(function(n){return !n.__N}))return !c||c.call(this,n,t,r);var i=!1;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0);}}),!(!i&&o.__c.props===n)&&(!c||c.call(this,n,t,r))};r.u=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u;}e&&e.call(this,n,t,r);},r.shouldComponentUpdate=f;}return o.__N||o.__}function p(u,i){var o=d(t++,3);!l$1.__s&&z$1(o.__H,i)&&(o.__=u,o.i=i,r.__H.__h.push(o));}function y(u,i){var o=d(t++,4);!l$1.__s&&z$1(o.__H,i)&&(o.__=u,o.i=i,r.__h.push(o));}function _(n){return o=5,F$1(function(){return {current:n}},[])}function A$1(n,t,r){o=6,y(function(){return "function"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n));}function F$1(n,r){var u=d(t++,7);return z$1(u.__H,r)?(u.__V=n(),u.i=r,u.__h=n,u.__V):u.__}function T$1(n,t){return o=8,F$1(function(){return n},t)}function q$1(n){var u=r.context[n.__c],i=d(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function x$1(t,r){l$1.useDebugValue&&l$1.useDebugValue(r?r(t):t);}function V$1(){var n=d(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__="P"+i[0]+"-"+i[1]++;}return n.__}function b(){for(var t;t=f.shift();)if(t.__P&&t.__H)try{t.__H.__h.forEach(k$1),t.__H.__h.forEach(w$1),t.__H.__h=[];}catch(r){t.__H.__h=[],l$1.__e(r,t.__v);}}l$1.__b=function(n){r=null,e&&e(n);},l$1.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.__V=c,n.__N=n.i=void 0;})):(i.__h.forEach(k$1),i.__h.forEach(w$1),i.__h=[],t=0)),u=r;},l$1.diffed=function(t){v&&v(t);var o=t.__c;o&&o.__H&&(o.__H.__h.length&&(1!==f.push(o)&&i===l$1.requestAnimationFrame||((i=l$1.requestAnimationFrame)||j$1)(b)),o.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.__V!==c&&(n.__=n.__V),n.i=void 0,n.__V=c;})),u=r=null;},l$1.__c=function(t,r){r.some(function(t){try{t.__h.forEach(k$1),t.__h=t.__h.filter(function(n){return !n.__||w$1(n)});}catch(u){r.some(function(n){n.__h&&(n.__h=[]);}),r=[],l$1.__e(u,t.__v);}}),l&&l(t,r);},l$1.unmount=function(t){m&&m(t);var r,u=t.__c;u&&u.__H&&(u.__H.__.forEach(function(n){try{k$1(n);}catch(n){r=n;}}),u.__H=void 0,r&&l$1.__e(r,u.__v));};var g$1="function"==typeof requestAnimationFrame;function j$1(n){var t,r=function(){clearTimeout(u),g$1&&cancelAnimationFrame(t),setTimeout(n);},u=setTimeout(r,100);g$1&&(t=requestAnimationFrame(r));}function k$1(n){var t=r,u=n.__c;"function"==typeof u&&(n.__c=void 0,u()),r=t;}function w$1(n){var t=r;n.__c=n.__(),r=t;}function z$1(n,t){return !n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function B$1(n,t){return "function"==typeof t?t(n):t} -function C(n,t){for(var e in t)n[e]=t[e];return n}function S(n,t){for(var e in n)if("__source"!==e&&!(e in t))return !0;for(var r in t)if("__source"!==r&&n[r]!==t[r])return !0;return !1}function E(n){this.props=n;}function g(n,t){function e(n){var e=this.props.ref,r=e==n.ref;return !r&&e&&(e.call?e(null):e.current=null),t?!t(this.props,n)||!r:S(this.props,n)}function r(t){return this.shouldComponentUpdate=e,v$1(n,t)}return r.displayName="Memo("+(n.displayName||n.name)+")",r.prototype.isReactComponent=!0,r.__f=!0,r}(E.prototype=new _$1).isPureReactComponent=!0,E.prototype.shouldComponentUpdate=function(n,t){return S(this.props,n)||S(this.state,t)};var w=l$1.__b;l$1.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),w&&w(n);};var R="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function x(n){function t(t){var e=C({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=R,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(n.displayName||n.name)+")",t}var N=function(n,t){return null==n?null:A$2(A$2(n).map(t))},k={map:N,forEach:N,count:function(n){return n?A$2(n).length:0},only:function(n){var t=A$2(n);if(1!==t.length)throw "Children.only";return t[0]},toArray:A$2},A=l$1.__e;l$1.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);A(n,t,e,r);};var O=l$1.unmount;function L(){this.__u=0,this.t=null,this.__b=null;}function U(n){var t=n.__.__c;return t&&t.__e&&t.__e(n)}function F(n){var t,e,r;function u(u){if(t||(t=n()).then(function(n){e=n.default||n;},function(n){r=n;}),r)throw r;if(!e)throw t;return v$1(e,u)}return u.displayName="Lazy",u.__f=!0,u}function M(){this.u=null,this.o=null;}l$1.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),O&&O(n);},(L.prototype=new _$1).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=U(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l());};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__e){var n=r.state.__e;r.__v.__k[0]=function n(t,e,r){return t&&(t.__v=null,t.__k=t.__k&&t.__k.map(function(t){return n(t,e,r)}),t.__c&&t.__c.__P===e&&(t.__e&&r.insertBefore(t.__e,t.__d),t.__c.__e=!0,t.__c.__P=r)),t}(n,n.__c.__P,n.__c.__O);}var t;for(r.setState({__e:r.__b=null});t=r.t.pop();)t.forceUpdate();}},f=!0===t.__h;r.__u++||f||r.setState({__e:r.__b=r.__v.__k[0]}),n.then(i,i);},L.prototype.componentWillUnmount=function(){this.t=[];},L.prototype.render=function(n,t){if(this.__b){if(this.__v.__k){var e=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=function n(t,e,r){return t&&(t.__c&&t.__c.__H&&(t.__c.__H.__.forEach(function(n){"function"==typeof n.__c&&n.__c();}),t.__c.__H=null),null!=(t=C({},t)).__c&&(t.__c.__P===r&&(t.__c.__P=e),t.__c=null),t.__k=t.__k&&t.__k.map(function(t){return n(t,e,r)})),t}(this.__b,e,r.__O=r.__P);}this.__b=null;}var u=t.__e&&v$1(d$1,null,n.fallback);return u&&(u.__h=null),[v$1(d$1,null,t.__e?null:n.children),u]};var T=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&("t"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]>>1,1),t.i.removeChild(n);}}),S$1(v$1(D,{context:t.context},n.__v),t.l)):t.l&&t.componentWillUnmount();}function W(n,t){var e=v$1(I,{__v:n,i:t});return e.containerInfo=t,e}(M.prototype=new _$1).__e=function(n){var t=this,e=U(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),T(t,n,r)):u();};e?e(o):o();}},M.prototype.render=function(n){this.u=null,this.o=new Map;var t=A$2(n.children);n.revealOrder&&"b"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},M.prototype.componentDidUpdate=M.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){T(n,e,t);});};var P="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,V=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,j="undefined"!=typeof document,z=function(n){return ("undefined"!=typeof Symbol&&"symbol"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(n)};function B(n,t,e){return null==t.__k&&(t.textContent=""),S$1(n,t),"function"==typeof e&&e(),n?n.__c:null}function $(n,t,e){return q$1(n,t),"function"==typeof e&&e(),n?n.__c:null}_$1.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(n){Object.defineProperty(_$1.prototype,n,{configurable:!0,get:function(){return this["UNSAFE_"+n]},set:function(t){Object.defineProperty(this,n,{configurable:!0,writable:!0,value:t});}});});var H=l$1.event;function Z(){}function Y(){return this.cancelBubble}function q(){return this.defaultPrevented}l$1.event=function(n){return H&&(n=H(n)),n.persist=Z,n.isPropagationStopped=Y,n.isDefaultPrevented=q,n.nativeEvent=n};var G,J={configurable:!0,get:function(){return this.class}},K=l$1.vnode;l$1.vnode=function(n){var t=n.type,e=n.props,r=e;if("string"==typeof t){var u=-1===t.indexOf("-");for(var o in r={},e){var i=e[o];j&&"children"===o&&"noscript"===t||"value"===o&&"defaultValue"in e&&null==i||("defaultValue"===o&&"value"in e&&null==e.value?o="value":"download"===o&&!0===i?i="":/ondoubleclick/i.test(o)?o="ondblclick":/^onchange(textarea|input)/i.test(o+t)&&!z(e.type)?o="oninput":/^onfocus$/i.test(o)?o="onfocusin":/^onblur$/i.test(o)?o="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(o)?o=o.toLowerCase():u&&V.test(o)?o=o.replace(/[A-Z0-9]/,"-$&").toLowerCase():null===i&&(i=void 0),r[o]=i);}"select"==t&&r.multiple&&Array.isArray(r.value)&&(r.value=A$2(e.children).forEach(function(n){n.props.selected=-1!=r.value.indexOf(n.props.value);})),"select"==t&&null!=r.defaultValue&&(r.value=A$2(e.children).forEach(function(n){n.props.selected=r.multiple?-1!=r.defaultValue.indexOf(n.props.value):r.defaultValue==n.props.value;})),n.props=r,e.class!=e.className&&(J.enumerable="className"in e,null!=e.className&&(r.class=e.className),Object.defineProperty(r,"className",J));}n.$$typeof=P,K&&K(n);};var Q=l$1.__r;l$1.__r=function(n){Q&&Q(n),G=n.__c;};var X={ReactCurrentDispatcher:{current:{readContext:function(n){return G.__n[n.__c].props.value}}}};function tn(n){return v$1.bind(null,n)}function en(n){return !!n&&n.$$typeof===P}function rn(n){return en(n)?B$1.apply(null,arguments):n}function un(n){return !!n.__k&&(S$1(null,n),!0)}function on(n){return n&&(n.base||1===n.nodeType&&n)||null}var ln=function(n,t){return n(t)},fn=function(n,t){return n(t)};var React = {useState:m,useReducer:p,useEffect:y,useLayoutEffect:d,useRef:h,useImperativeHandle:s,useMemo:_,useCallback:A$1,useContext:F$1,useDebugValue:T$1,version:"17.0.2",Children:k,render:B,hydrate:$,unmountComponentAtNode:un,createPortal:W,createElement:v$1,createContext:D$1,createFactory:tn,cloneElement:rn,createRef:p$1,Fragment:d$1,isValidElement:en,findDOMNode:on,Component:_$1,PureComponent:E,memo:g,forwardRef:x,flushSync:fn,unstable_batchedUpdates:ln,StrictMode:d$1,Suspense:L,SuspenseList:M,lazy:F,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:X}; +function g(n,t){for(var e in t)n[e]=t[e];return n}function C(n,t){for(var e in n)if("__source"!==e&&!(e in t))return !0;for(var r in t)if("__source"!==r&&n[r]!==t[r])return !0;return !1}function E(n,t){return n===t&&(0!==n||1/n==1/t)||n!=n&&t!=t}function w(n){this.props=n;}function x(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return !r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:C(this.props,n)}function u(e){return this.shouldComponentUpdate=r,y$1(n,e)}return u.displayName="Memo("+(n.displayName||n.name)+")",u.prototype.isReactComponent=!0,u.__f=!0,u}(w.prototype=new b$1).isPureReactComponent=!0,w.prototype.shouldComponentUpdate=function(n,t){return C(this.props,n)||C(this.state,t)};var R=l$1.__b;l$1.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),R&&R(n);};var N="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function k(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=N,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(n.displayName||n.name)+")",t}var A=function(n,t){return null==n?null:C$1(C$1(n).map(t))},O={map:A,forEach:A,count:function(n){return n?C$1(n).length:0},only:function(n){var t=C$1(n);if(1!==t.length)throw "Children.only";return t[0]},toArray:C$1},T=l$1.__e;l$1.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);T(n,t,e,r);};var F=l$1.unmount;function I(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){"function"==typeof n.__c&&n.__c();}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return I(n,t,e)})),n}function L(n,t,e){return n&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return L(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.insertBefore(n.__e,n.__d),n.__c.__e=!0,n.__c.__P=e)),n}function U(){this.__u=0,this.t=null,this.__b=null;}function D(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function M(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n;},function(n){u=n;}),u)throw u;if(!r)throw e;return y$1(r,o)}return o.displayName="Lazy",o.__f=!0,o}function V(){this.u=null,this.o=null;}l$1.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),F&&F(n);},(U.prototype=new b$1).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=D(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l());};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=L(n,n.__c.__P,n.__c.__O);}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate();}},c=!0===t.__h;r.__u++||c||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i);},U.prototype.componentWillUnmount=function(){this.t=[];},U.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),o=this.__v.__k[0].__c;this.__v.__k[0]=I(this.__b,r,o.__O=o.__P);}this.__b=null;}var i=e.__a&&y$1(k$2,null,n.fallback);return i&&(i.__h=null),[y$1(k$2,null,e.__a?null:n.children),i]};var W=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&("t"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]>>1,1),e.i.removeChild(n);}}),D$1(y$1(P,{context:e.context},n.__v),e.l);}function z(n,e){var r=y$1(j,{__v:n,i:e});return r.containerInfo=e,r}(V.prototype=new b$1).__a=function(n){var t=this,e=D(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),W(t,n,r)):u();};e?e(o):o();}},V.prototype.render=function(n){this.u=null,this.o=new Map;var t=C$1(n.children);n.revealOrder&&"b"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},V.prototype.componentDidUpdate=V.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){W(n,e,t);});};var B="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,H=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Z=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Y=/[A-Z0-9]/g,$="undefined"!=typeof document,q=function(n){return ("undefined"!=typeof Symbol&&"symbol"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function G(n,t,e){return null==t.__k&&(t.textContent=""),D$1(n,t),"function"==typeof e&&e(),n?n.__c:null}function J(n,t,e){return E$1(n,t),"function"==typeof e&&e(),n?n.__c:null}b$1.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(b$1.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n});}});});var K=l$1.event;function Q(){}function X(){return this.cancelBubble}function nn(){return this.defaultPrevented}l$1.event=function(n){return K&&(n=K(n)),n.persist=Q,n.isPropagationStopped=X,n.isDefaultPrevented=nn,n.nativeEvent=n};var tn,en={enumerable:!1,configurable:!0,get:function(){return this.class}},rn=l$1.vnode;l$1.vnode=function(n){"string"==typeof n.type&&function(n){var t=n.props,e=n.type,u={};for(var o in t){var i=t[o];if(!("value"===o&&"defaultValue"in t&&null==i||$&&"children"===o&&"noscript"===e||"class"===o||"className"===o)){var l=o.toLowerCase();"defaultValue"===o&&"value"in t&&null==t.value?o="value":"download"===o&&!0===i?i="":"ondoubleclick"===l?o="ondblclick":"onchange"!==l||"input"!==e&&"textarea"!==e||q(t.type)?"onfocus"===l?o="onfocusin":"onblur"===l?o="onfocusout":Z.test(o)?o=l:-1===e.indexOf("-")&&H.test(o)?o=o.replace(Y,"-$&").toLowerCase():null===i&&(i=void 0):l=o="oninput","oninput"===l&&u[o=l]&&(o="oninputCapture"),u[o]=i;}}"select"==e&&u.multiple&&Array.isArray(u.value)&&(u.value=C$1(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value);})),"select"==e&&null!=u.defaultValue&&(u.value=C$1(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value;})),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,"className",en)):(t.className&&!t.class||t.class&&t.className)&&(u.class=u.className=t.className),n.props=u;}(n),n.$$typeof=B,rn&&rn(n);};var un=l$1.__r;l$1.__r=function(n){un&&un(n),tn=n.__c;};var on=l$1.diffed;l$1.diffed=function(n){on&&on(n);var t=n.props,e=n.__e;null!=e&&"textarea"===n.type&&"value"in t&&t.value!==e.value&&(e.value=null==t.value?"":t.value),tn=null;};var ln={ReactCurrentDispatcher:{current:{readContext:function(n){return tn.__n[n.__c].props.value}}}};function fn(n){return y$1.bind(null,n)}function an(n){return !!n&&n.$$typeof===B}function sn(n){return an(n)&&n.type===k$2}function hn(n){return an(n)?F$2.apply(null,arguments):n}function vn(n){return !!n.__k&&(D$1(null,n),!0)}function dn(n){return n&&(n.base||1===n.nodeType&&n)||null}var pn=function(n,t){return n(t)},mn=function(n,t){return n(t)},yn=k$2;function _n(n){n();}function bn(n){return n}function Sn(){return [!1,_n]}var gn=y,Cn=an;function En(n,t){var e=t(),r=h({h:{__:e,v:t}}),u=r[0].h,o=r[1];return y(function(){u.__=e,u.v=t,E(u.__,t())||o({h:u});},[n,e,t]),p(function(){return E(u.__,u.v())||o({h:u}),n(function(){E(u.__,u.v())||o({h:u});})},[n]),e}var wn={useState:h,useId:V$1,useReducer:s,useEffect:p,useLayoutEffect:y,useInsertionEffect:gn,useTransition:Sn,useDeferredValue:bn,useSyncExternalStore:En,startTransition:_n,useRef:_,useImperativeHandle:A$1,useMemo:F$1,useCallback:T$1,useContext:q$1,useDebugValue:x$1,version:"17.0.2",Children:O,render:G,hydrate:J,unmountComponentAtNode:vn,createPortal:z,createElement:y$1,createContext:G$1,createFactory:fn,cloneElement:hn,createRef:_$1,Fragment:k$2,isValidElement:an,isElement:Cn,isFragment:sn,findDOMNode:dn,Component:b$1,PureComponent:w,memo:x,forwardRef:k,flushSync:mn,unstable_batchedUpdates:pn,StrictMode:yn,Suspense:U,SuspenseList:V,lazy:M,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:ln}; const IMAGE_EXTENSIONS = Object.freeze(new Set([ ".tif", @@ -14667,12 +14882,12 @@ function extractImageDimensions(link) { } /** Provides core preact / rendering utilities for all view types. */ -const DataviewContext = D$1(undefined); +const DataviewContext = G$1(undefined); /** Hacky preact component which wraps Obsidian's markdown renderer into a neat component. */ function RawMarkdown({ content, sourcePath, inline = true, style, cls, onClick, }) { - const container = h(null); - const component = F$1(DataviewContext).component; - y(() => { + const container = _(null); + const component = q$1(DataviewContext).component; + p(() => { if (!container.current) return; container.current.innerHTML = ""; @@ -14688,149 +14903,149 @@ function RawMarkdown({ content, sourcePath, inline = true, style, cls, onClick, } }); }, [content, sourcePath, container.current]); - return v$1("span", { ref: container, style: style, class: cls, onClick: onClick }); + return y$1("span", { ref: container, style: style, class: cls, onClick: onClick }); } /** Hacky preact component which wraps Obsidian's markdown renderer into a neat component. */ -const Markdown = React.memo(RawMarkdown); +const Markdown = wn.memo(RawMarkdown); /** Embeds an HTML element in the react DOM. */ function RawEmbedHtml({ element }) { - const container = h(null); - y(() => { + const container = _(null); + p(() => { if (!container.current) return; container.current.innerHTML = ""; container.current.appendChild(element); }, [container.current, element]); - return v$1("span", { ref: container }); + return y$1("span", { ref: container }); } /** Embeds an HTML element in the react DOM. */ -const EmbedHtml = React.memo(RawEmbedHtml); +const EmbedHtml = wn.memo(RawEmbedHtml); /** Intelligently render an arbitrary literal value. */ function RawLit({ value, sourcePath, inline = false, depth = 0, }) { var _a, _b, _c; - const context = F$1(DataviewContext); + const context = q$1(DataviewContext); // Short-circuit if beyond the maximum render depth. if (depth >= context.settings.maxRecursiveRenderDepth) - return v$1(d$1, null, "..."); + return y$1(k$2, null, "..."); if (Values.isNull(value) || value === undefined) { - return v$1(Markdown, { content: context.settings.renderNullAs, sourcePath: sourcePath }); + return y$1(Markdown, { content: context.settings.renderNullAs, sourcePath: sourcePath }); } else if (Values.isString(value)) { - return v$1(Markdown, { content: value, sourcePath: sourcePath }); + return y$1(Markdown, { content: value, sourcePath: sourcePath }); } else if (Values.isNumber(value)) { - return v$1(d$1, null, "" + value); + return y$1(k$2, null, "" + value); } else if (Values.isBoolean(value)) { - return v$1(d$1, null, "" + value); + return y$1(k$2, null, "" + value); } else if (Values.isDate(value)) { - return v$1(d$1, null, renderMinimalDate(value, context.settings, currentLocale())); + return y$1(k$2, null, renderMinimalDate(value, context.settings, currentLocale())); } else if (Values.isDuration(value)) { - return v$1(d$1, null, renderMinimalDuration(value)); + return y$1(k$2, null, renderMinimalDuration(value)); } else if (Values.isLink(value)) { // Special case handling of image/video/etc embeddings to bypass the Obsidian API not working. if (isImageEmbed(value)) { let realFile = context.app.metadataCache.getFirstLinkpathDest(value.path, sourcePath); if (!realFile) - return v$1(Markdown, { content: value.markdown(), sourcePath: sourcePath }); + return y$1(Markdown, { content: value.markdown(), sourcePath: sourcePath }); let dimensions = extractImageDimensions(value); let resourcePath = context.app.vault.getResourcePath(realFile); if (dimensions && dimensions.length == 2) - return v$1("img", { alt: value.path, src: resourcePath, width: dimensions[0], height: dimensions[1] }); + return y$1("img", { alt: value.path, src: resourcePath, width: dimensions[0], height: dimensions[1] }); else if (dimensions && dimensions.length == 1) - return v$1("img", { alt: value.path, src: resourcePath, width: dimensions[0] }); + return y$1("img", { alt: value.path, src: resourcePath, width: dimensions[0] }); else - return v$1("img", { alt: value.path, src: resourcePath }); + return y$1("img", { alt: value.path, src: resourcePath }); } - return v$1(Markdown, { content: value.markdown(), sourcePath: sourcePath }); + return y$1(Markdown, { content: value.markdown(), sourcePath: sourcePath }); } else if (Values.isHtml(value)) { - return v$1(EmbedHtml, { element: value }); + return y$1(EmbedHtml, { element: value }); } else if (Values.isWidget(value)) { if (Widgets.isListPair(value)) { - return (v$1(d$1, null, - v$1(Lit, { value: value.key, sourcePath: sourcePath }), + return (y$1(k$2, null, + y$1(Lit, { value: value.key, sourcePath: sourcePath }), ":", " ", - v$1(Lit, { value: value.value, sourcePath: sourcePath }))); + y$1(Lit, { value: value.value, sourcePath: sourcePath }))); } else if (Widgets.isExternalLink(value)) { - return (v$1("a", { href: value.url, rel: "noopener", target: "_blank", class: "external-link" }, (_a = value.display) !== null && _a !== void 0 ? _a : value.url)); + return (y$1("a", { href: value.url, rel: "noopener", target: "_blank", class: "external-link" }, (_a = value.display) !== null && _a !== void 0 ? _a : value.url)); } else { - return v$1("b", null, + return y$1("b", null, ""); } } else if (Values.isFunction(value)) { - return v$1(d$1, null, ""); + return y$1(k$2, null, ""); } else if (Values.isArray(value) || DataArray.isDataArray(value)) { if (!inline) { - return (v$1("ul", { class: "dataview dataview-ul dataview-result-list-ul" }, value.map(subvalue => (v$1("li", { class: "dataview-result-list-li" }, - v$1(Lit, { value: subvalue, sourcePath: sourcePath, inline: inline, depth: depth + 1 })))))); + return (y$1("ul", { class: "dataview dataview-ul dataview-result-list-ul" }, value.map(subvalue => (y$1("li", { class: "dataview-result-list-li" }, + y$1(Lit, { value: subvalue, sourcePath: sourcePath, inline: inline, depth: depth + 1 })))))); } else { if (value.length == 0) - return v$1(d$1, null, ""); - return (v$1("span", { class: "dataview dataview-result-list-span" }, value.map((subvalue, index) => (v$1(d$1, null, + return y$1(k$2, null, ""); + return (y$1("span", { class: "dataview dataview-result-list-span" }, value.map((subvalue, index) => (y$1(k$2, null, index == 0 ? "" : ", ", - v$1(Lit, { value: subvalue, sourcePath: sourcePath, inline: inline, depth: depth + 1 })))))); + y$1(Lit, { value: subvalue, sourcePath: sourcePath, inline: inline, depth: depth + 1 })))))); } } else if (Values.isObject(value)) { // Don't render classes in case they have recursive references; spoopy. if (((_b = value === null || value === void 0 ? void 0 : value.constructor) === null || _b === void 0 ? void 0 : _b.name) && ((_c = value === null || value === void 0 ? void 0 : value.constructor) === null || _c === void 0 ? void 0 : _c.name) != "Object") { - return v$1(d$1, null, + return y$1(k$2, null, "<", value.constructor.name, ">"); } if (!inline) { - return (v$1("ul", { class: "dataview dataview-ul dataview-result-object-ul" }, Object.entries(value).map(([key, value]) => (v$1("li", { class: "dataview dataview-li dataview-result-object-li" }, + return (y$1("ul", { class: "dataview dataview-ul dataview-result-object-ul" }, Object.entries(value).map(([key, value]) => (y$1("li", { class: "dataview dataview-li dataview-result-object-li" }, key, ": ", - v$1(Lit, { value: value, sourcePath: sourcePath, inline: inline, depth: depth + 1 })))))); + y$1(Lit, { value: value, sourcePath: sourcePath, inline: inline, depth: depth + 1 })))))); } else { if (Object.keys(value).length == 0) - return v$1(d$1, null, ""); - return (v$1("span", { class: "dataview dataview-result-object-span" }, Object.entries(value).map(([key, value], index) => (v$1(d$1, null, + return y$1(k$2, null, ""); + return (y$1("span", { class: "dataview dataview-result-object-span" }, Object.entries(value).map(([key, value], index) => (y$1(k$2, null, index == 0 ? "" : ", ", key, ": ", - v$1(Lit, { value: value, sourcePath: sourcePath, inline: inline, depth: depth + 1 })))))); + y$1(Lit, { value: value, sourcePath: sourcePath, inline: inline, depth: depth + 1 })))))); } } - return v$1(d$1, null, + return y$1(k$2, null, ""); } /** Intelligently render an arbitrary literal value. */ -const Lit = React.memo(RawLit); +const Lit = wn.memo(RawLit); /** Render a simple nice looking error box in a code style. */ function ErrorPre(props, {}) { - return v$1("pre", { class: "dataview dataview-error" }, props.children); + return y$1("pre", { class: "dataview dataview-error" }, props.children); } /** Render a pretty centered error message in a box. */ function ErrorMessage({ message }) { - return (v$1("div", { class: "dataview dataview-error-box" }, - v$1("p", { class: "dataview dataview-error-message" }, message))); + return (y$1("div", { class: "dataview dataview-error-box" }, + y$1("p", { class: "dataview dataview-error-message" }, message))); } /** * Complex convienence hook which calls `compute` every time the index updates, updating the current state. */ function useIndexBackedState(container, app, settings, index, initial, compute) { - let [initialized, setInitialized] = m(false); - let [state, updateState] = m(initial); - let [lastReload, setLastReload] = m(index.revision); + let [initialized, setInitialized] = h(false); + let [state, updateState] = h(initial); + let [lastReload, setLastReload] = h(index.revision); // Initial setup to queue fetching the correct state. if (!initialized) { setLastReload(index.revision); @@ -14838,7 +15053,7 @@ function useIndexBackedState(container, app, settings, index, initial, compute) compute().then(updateState); } // Updated on every container re-create; automatically updates state. - y(() => { + p(() => { const refreshOperation = () => { if (lastReload != index.revision && container.isShown() && settings.refreshEnabled) { compute().then(updateState); @@ -14865,10 +15080,10 @@ class ReactRenderer extends obsidian.MarkdownRenderChild { } onload() { const context = Object.assign({}, { component: this }, this.init); - S$1(v$1(DataviewContext.Provider, { value: context }, this.element), this.containerEl); + D$1(y$1(DataviewContext.Provider, { value: context }, this.element), this.containerEl); } onunload() { - un(this.containerEl); + vn(this.containerEl); } } @@ -14879,7 +15094,7 @@ function wasLinkPressed(evt) { /** JSX component which renders a task element recursively. */ function TaskItem({ item }) { var _a; - let context = F$1(DataviewContext); + let context = q$1(DataviewContext); // Navigate to the given task on click. const onClicked = (evt) => { if (wasLinkPressed(evt)) { @@ -14929,15 +15144,15 @@ function TaskItem({ item }) { effectFn(); }; const checked = item.status !== " "; - return (v$1("li", { class: "dataview task-list-item" + (checked ? " is-checked" : ""), onClick: onClicked, "data-task": item.status }, - v$1("input", { class: "dataview task-list-item-checkbox", type: "checkbox", checked: checked, onClick: onChecked }), - v$1(Markdown, { inline: true, content: (_a = item.visual) !== null && _a !== void 0 ? _a : item.text, sourcePath: item.path }), - item.children.length > 0 && v$1(TaskList, { items: item.children }))); + return (y$1("li", { class: "dataview task-list-item" + (checked ? " is-checked" : ""), onClick: onClicked, "data-task": item.status }, + y$1("input", { class: "dataview task-list-item-checkbox", type: "checkbox", checked: checked, onClick: onChecked }), + y$1(Markdown, { inline: true, content: (_a = item.visual) !== null && _a !== void 0 ? _a : item.text, sourcePath: item.path }), + item.children.length > 0 && y$1(TaskList, { items: item.children }))); } /** JSX component which renders a plain list item recursively. */ function ListItem({ item }) { var _a; - let context = F$1(DataviewContext); + let context = q$1(DataviewContext); // Navigate to the given task on click. const onClicked = (evt) => { if (wasLinkPressed(evt)) { @@ -14956,42 +15171,42 @@ function ListItem({ item }) { // MacOS interprets the Command key as Meta. context.app.workspace.openLinkText(item.link.toFile().obsidianLink(), item.path, evt.ctrlKey || (evt.metaKey && obsidian.Platform.isMacOS), selectionState); }; - return (v$1("li", { class: "dataview task-list-basic-item", onClick: onClicked }, - v$1(Markdown, { inline: true, content: (_a = item.visual) !== null && _a !== void 0 ? _a : item.text, sourcePath: item.path }), - item.children.length > 0 && v$1(TaskList, { items: item.children }))); + return (y$1("li", { class: "dataview task-list-basic-item", onClick: onClicked }, + y$1(Markdown, { inline: true, content: (_a = item.visual) !== null && _a !== void 0 ? _a : item.text, sourcePath: item.path }), + item.children.length > 0 && y$1(TaskList, { items: item.children }))); } /** JSX component which renders a list of task items recursively. */ function TaskList({ items }) { - const settings = F$1(DataviewContext).settings; + const settings = q$1(DataviewContext).settings; if (items.length == 0 && settings.warnOnEmptyResult) - return v$1(ErrorMessage, { message: "Dataview: No results to show for task query." }); + return y$1(ErrorMessage, { message: "Dataview: No results to show for task query." }); let [nest, _mask] = nestItems(items); - return (v$1("ul", { class: "contains-task-list" }, nest.map(item => item.task ? v$1(TaskItem, { key: listId(item), item: item }) : v$1(ListItem, { key: listId(item), item: item })))); + return (y$1("ul", { class: "contains-task-list" }, nest.map(item => item.task ? y$1(TaskItem, { key: listId(item), item: item }) : y$1(ListItem, { key: listId(item), item: item })))); } /** JSX component which returns the result count. */ function ResultCount$1(props) { - const { settings } = F$1(DataviewContext); - return settings.showResultCount ? (v$1("span", { class: "dataview small-text" }, Groupings.count(props.item.rows))) : (v$1(d$1, null)); + const { settings } = q$1(DataviewContext); + return settings.showResultCount ? (y$1("span", { class: "dataview small-text" }, Groupings.count(props.item.rows))) : (y$1(k$2, null)); } /** JSX component which recursively renders grouped tasks. */ function TaskGrouping({ items, sourcePath }) { const isGrouping = items.length > 0 && Groupings.isGrouping(items); - return (v$1(d$1, null, + return (y$1(k$2, null, isGrouping && - items.map(item => (v$1(d$1, { key: item.key }, - v$1("h4", null, - v$1(Lit, { value: item.key, sourcePath: sourcePath }), - v$1(ResultCount$1, { item: item })), - v$1("div", { class: "dataview result-group" }, - v$1(TaskGrouping, { items: item.rows, sourcePath: sourcePath }))))), - !isGrouping && v$1(TaskList, { items: items }))); + items.map(item => (y$1(k$2, { key: item.key }, + y$1("h4", null, + y$1(Lit, { value: item.key, sourcePath: sourcePath }), + y$1(ResultCount$1, { item: item })), + y$1("div", { class: "dataview result-group" }, + y$1(TaskGrouping, { items: item.rows, sourcePath: sourcePath }))))), + !isGrouping && y$1(TaskList, { items: items }))); } /** * Pure view over (potentially grouped) tasks and list items which allows for checking/unchecking tasks and manipulating * the task view. */ function TaskView({ query, sourcePath }) { - let context = F$1(DataviewContext); + let context = q$1(DataviewContext); let items = useIndexBackedState(context.container, context.app, context.settings, context.index, { state: "loading" }, async () => { let result = await asyncTryOrPropogate(() => executeTask(query, sourcePath, context.index, context.settings)); if (!result.successful) @@ -15000,21 +15215,21 @@ function TaskView({ query, sourcePath }) { return { state: "ready", items: result.value.tasks }; }); if (items.state == "loading") - return (v$1(d$1, null, - v$1(ErrorPre, null, "Loading"))); + return (y$1(k$2, null, + y$1(ErrorPre, null, "Loading"))); else if (items.state == "error") - return (v$1(d$1, null, - v$1(ErrorPre, null, + return (y$1(k$2, null, + y$1(ErrorPre, null, "Dataview: ", items.error))); - return (v$1("div", { class: "dataview dataview-container" }, - v$1(TaskGrouping, { items: items.items, sourcePath: sourcePath }))); + return (y$1("div", { class: "dataview dataview-container" }, + y$1(TaskGrouping, { items: items.items, sourcePath: sourcePath }))); } function createTaskView(init, query, sourcePath) { - return new ReactRenderer(init, v$1(TaskView, { query: query, sourcePath: sourcePath })); + return new ReactRenderer(init, y$1(TaskView, { query: query, sourcePath: sourcePath })); } function createFixedTaskView(init, items, sourcePath) { - return new ReactRenderer(init, v$1(TaskGrouping, { items: items, sourcePath: sourcePath })); + return new ReactRenderer(init, y$1(TaskGrouping, { items: items, sourcePath: sourcePath })); } ///////////////////////// // Task De-Duplication // @@ -15138,12 +15353,12 @@ async function rewriteTask(vault, task, desiredStatus, desiredText) { } function ListGrouping({ items, sourcePath }) { - return (v$1("ul", { class: "dataview list-view-ul" }, items.map(item => (v$1("li", null, - v$1(Lit, { value: item, sourcePath: sourcePath })))))); + return (y$1("ul", { class: "dataview list-view-ul" }, items.map(item => (y$1("li", null, + y$1(Lit, { value: item, sourcePath: sourcePath })))))); } /** Pure view over list elements. */ function ListView({ query, sourcePath }) { - let context = F$1(DataviewContext); + let context = q$1(DataviewContext); let items = useIndexBackedState(context.container, context.app, context.settings, context.index, { state: "loading" }, async () => { let result = await asyncTryOrPropogate(() => executeList(query, context.index, sourcePath, context.settings)); if (!result.successful) @@ -15151,47 +15366,47 @@ function ListView({ query, sourcePath }) { return { state: "ready", items: result.value.data }; }); if (items.state == "loading") - return (v$1(d$1, null, - v$1(ErrorPre, null, "Loading..."))); + return (y$1(k$2, null, + y$1(ErrorPre, null, "Loading..."))); else if (items.state == "error") - return (v$1(d$1, null, + return (y$1(k$2, null, " ", - v$1(ErrorPre, null, + y$1(ErrorPre, null, "Dataview: ", items.error), " ")); if (items.items.length == 0 && context.settings.warnOnEmptyResult) - return v$1(ErrorMessage, { message: "Dataview: No results to show for list query." }); - return v$1(ListGrouping, { items: items.items, sourcePath: sourcePath }); + return y$1(ErrorMessage, { message: "Dataview: No results to show for list query." }); + return y$1(ListGrouping, { items: items.items, sourcePath: sourcePath }); } function createListView(init, query, sourcePath) { - return new ReactRenderer(init, v$1(ListView, { query: query, sourcePath: sourcePath })); + return new ReactRenderer(init, y$1(ListView, { query: query, sourcePath: sourcePath })); } function createFixedListView(init, elements, sourcePath) { - return new ReactRenderer(init, v$1(ListGrouping, { items: elements, sourcePath: sourcePath })); + return new ReactRenderer(init, y$1(ListGrouping, { items: elements, sourcePath: sourcePath })); } /** JSX component which returns the result count. */ function ResultCount(props) { - const { settings } = F$1(DataviewContext); - return settings.showResultCount ? v$1("span", { class: "dataview small-text" }, props.length) : v$1(d$1, null); + const { settings } = q$1(DataviewContext); + return settings.showResultCount ? y$1("span", { class: "dataview small-text" }, props.length) : y$1(k$2, null); } /** Simple table over headings and corresponding values. */ function TableGrouping({ headings, values, sourcePath, }) { - let settings = F$1(DataviewContext).settings; - return (v$1(d$1, null, - v$1("table", { class: "dataview table-view-table" }, - v$1("thead", { class: "table-view-thead" }, - v$1("tr", { class: "table-view-tr-header" }, headings.map((heading, index) => (v$1("th", { class: "table-view-th" }, - v$1(Markdown, { sourcePath: sourcePath, content: heading }), - index == 0 && v$1(ResultCount, { length: values.length })))))), - v$1("tbody", { class: "table-view-tbody" }, values.map(row => (v$1("tr", null, row.map(element => (v$1("td", null, - v$1(Lit, { value: element, sourcePath: sourcePath }))))))))), - settings.warnOnEmptyResult && values.length == 0 && (v$1(ErrorMessage, { message: "Dataview: No results to show for table query." })))); + let settings = q$1(DataviewContext).settings; + return (y$1(k$2, null, + y$1("table", { class: "dataview table-view-table" }, + y$1("thead", { class: "table-view-thead" }, + y$1("tr", { class: "table-view-tr-header" }, headings.map((heading, index) => (y$1("th", { class: "table-view-th" }, + y$1(Markdown, { sourcePath: sourcePath, content: heading }), + index == 0 && y$1(ResultCount, { length: values.length })))))), + y$1("tbody", { class: "table-view-tbody" }, values.map(row => (y$1("tr", null, row.map(element => (y$1("td", null, + y$1(Lit, { value: element, sourcePath: sourcePath }))))))))), + settings.warnOnEmptyResult && values.length == 0 && (y$1(ErrorMessage, { message: "Dataview: No results to show for table query." })))); } /** Pure view over list elements. */ function TableView({ query, sourcePath }) { - let context = F$1(DataviewContext); + let context = q$1(DataviewContext); let items = useIndexBackedState(context.container, context.app, context.settings, context.index, { state: "loading" }, async () => { let result = await asyncTryOrPropogate(() => executeTable(query, context.index, sourcePath, context.settings)); if (!result.successful) @@ -15199,22 +15414,22 @@ function TableView({ query, sourcePath }) { return { state: "ready", headings: result.value.names, values: result.value.data }; }); if (items.state == "loading") - return (v$1(d$1, null, - v$1(ErrorPre, null, "Loading..."))); + return (y$1(k$2, null, + y$1(ErrorPre, null, "Loading..."))); else if (items.state == "error") - return (v$1(d$1, null, + return (y$1(k$2, null, " ", - v$1(ErrorPre, null, + y$1(ErrorPre, null, "Dataview: ", items.error), " ")); - return v$1(TableGrouping, { headings: items.headings, values: items.values, sourcePath: sourcePath }); + return y$1(TableGrouping, { headings: items.headings, values: items.values, sourcePath: sourcePath }); } function createTableView(init, query, sourcePath) { - return new ReactRenderer(init, v$1(TableView, { query: query, sourcePath: sourcePath })); + return new ReactRenderer(init, y$1(TableView, { query: query, sourcePath: sourcePath })); } function createFixedTableView(init, headings, values, sourcePath) { - return new ReactRenderer(init, v$1(TableGrouping, { values: values, headings: headings, sourcePath: sourcePath })); + return new ReactRenderer(init, y$1(TableGrouping, { values: values, headings: headings, sourcePath: sourcePath })); } /** Utility functions for quickly creating fields. */ @@ -15232,7 +15447,7 @@ var QueryFields; /** Return a new parser which executes the underlying parser and returns it's raw string representation. */ function captureRaw(base) { - return parsimmon_umd_min.exports.custom((success, failure) => { + return parsimmon_umd_minExports.custom((success, failure) => { return (input, i) => { let result = base._(input, i); if (!result.status) @@ -15248,15 +15463,20 @@ function stripNewlines(text) { .map(t => t.trim()) .join(""); } +/** Given `parser`, return the parser that returns `if_eof()` if EOF is found, + * otherwise `parser` preceded by (non-optional) whitespace */ +function precededByWhitespaceIfNotEof(if_eof, parser) { + return parsimmon_umd_minExports.eof.map(if_eof).or(parsimmon_umd_minExports.whitespace.then(parser)); +} /** A parsimmon-powered parser-combinator implementation of the query language. */ -const QUERY_LANGUAGE = parsimmon_umd_min.exports.createLanguage({ +const QUERY_LANGUAGE = parsimmon_umd_minExports.createLanguage({ // Simple atom parsing, like words, identifiers, numbers. - queryType: q => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regexp(/TABLE|LIST|TASK|CALENDAR/i)) + queryType: q => parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regexp(/TABLE|LIST|TASK|CALENDAR/i)) .map(str => str.toLowerCase()) .desc("query type ('TABLE', 'LIST', 'TASK', or 'CALENDAR')"), - explicitNamedField: q => parsimmon_umd_min.exports.seqMap(EXPRESSION.field.skip(parsimmon_umd_min.exports.whitespace), parsimmon_umd_min.exports.regexp(/AS/i).skip(parsimmon_umd_min.exports.whitespace), EXPRESSION.identifier.or(EXPRESSION.string), (field, _as, ident) => QueryFields.named(ident, field)), - namedField: q => parsimmon_umd_min.exports.alt(q.explicitNamedField, captureRaw(EXPRESSION.field).map(([value, text]) => QueryFields.named(stripNewlines(text), value))), - sortField: q => parsimmon_umd_min.exports.seqMap(EXPRESSION.field.skip(parsimmon_umd_min.exports.optWhitespace), parsimmon_umd_min.exports.regexp(/ASCENDING|DESCENDING|ASC|DESC/i).atMost(1), (field, dir) => { + explicitNamedField: q => parsimmon_umd_minExports.seqMap(EXPRESSION.field.skip(parsimmon_umd_minExports.whitespace), parsimmon_umd_minExports.regexp(/AS/i).skip(parsimmon_umd_minExports.whitespace), EXPRESSION.identifier.or(EXPRESSION.string), (field, _as, ident) => QueryFields.named(ident, field)), + namedField: q => parsimmon_umd_minExports.alt(q.explicitNamedField, captureRaw(EXPRESSION.field).map(([value, text]) => QueryFields.named(stripNewlines(text), value))), + sortField: q => parsimmon_umd_minExports.seqMap(EXPRESSION.field.skip(parsimmon_umd_minExports.optWhitespace), parsimmon_umd_minExports.regexp(/ASCENDING|DESCENDING|ASC|DESC/i).atMost(1), (field, dir) => { let direction = dir.length == 0 ? "ascending" : dir[0].toLowerCase(); if (direction == "desc") direction = "descending"; @@ -15268,59 +15488,59 @@ const QUERY_LANGUAGE = parsimmon_umd_min.exports.createLanguage({ }; }), headerClause: q => q.queryType - .skip(parsimmon_umd_min.exports.whitespace) - .chain(qtype => { - switch (qtype) { - case "table": - return parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/WITHOUT\s+ID/i) - .skip(parsimmon_umd_min.exports.optWhitespace) - .atMost(1), parsimmon_umd_min.exports.sepBy(q.namedField, parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)), (withoutId, fields) => { - return { type: "table", fields, showId: withoutId.length == 0 }; - }); + .chain(type => { + switch (type) { + case "table": { + return precededByWhitespaceIfNotEof(() => ({ type, fields: [], showId: true }), parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/WITHOUT\s+ID/i) + .skip(parsimmon_umd_minExports.optWhitespace) + .atMost(1), parsimmon_umd_minExports.sepBy(q.namedField, parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)), (withoutId, fields) => { + return { type, fields, showId: withoutId.length == 0 }; + })); + } case "list": - return parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/WITHOUT\s+ID/i) - .skip(parsimmon_umd_min.exports.optWhitespace) + return precededByWhitespaceIfNotEof(() => ({ type, format: undefined, showId: true }), parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/WITHOUT\s+ID/i) + .skip(parsimmon_umd_minExports.optWhitespace) .atMost(1), EXPRESSION.field.atMost(1), (withoutId, format) => { return { - type: "list", + type, format: format.length == 1 ? format[0] : undefined, showId: withoutId.length == 0, }; - }); + })); case "task": - return parsimmon_umd_min.exports.succeed({ type: "task" }); + return parsimmon_umd_minExports.succeed({ type }); case "calendar": - return parsimmon_umd_min.exports.seqMap(q.namedField, field => { + return parsimmon_umd_minExports.whitespace.then(parsimmon_umd_minExports.seqMap(q.namedField, field => { return { - type: "calendar", + type, showId: true, field, }; - }); + })); default: - return parsimmon_umd_min.exports.fail(`Unrecognized query type '${qtype}'`); + return parsimmon_umd_minExports.fail(`Unrecognized query type '${type}'`); } }) .desc("TABLE or LIST or TASK or CALENDAR"), - fromClause: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/FROM/i), parsimmon_umd_min.exports.whitespace, EXPRESSION.source, (_1, _2, source) => source), - whereClause: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/WHERE/i), parsimmon_umd_min.exports.whitespace, EXPRESSION.field, (where, _, field) => { + fromClause: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/FROM/i), parsimmon_umd_minExports.whitespace, EXPRESSION.source, (_1, _2, source) => source), + whereClause: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/WHERE/i), parsimmon_umd_minExports.whitespace, EXPRESSION.field, (where, _, field) => { return { type: "where", clause: field }; }).desc("WHERE "), - sortByClause: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/SORT/i), parsimmon_umd_min.exports.whitespace, q.sortField.sepBy1(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)), (sort, _1, fields) => { + sortByClause: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/SORT/i), parsimmon_umd_minExports.whitespace, q.sortField.sepBy1(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)), (sort, _1, fields) => { return { type: "sort", fields }; }).desc("SORT field [ASC/DESC]"), - limitClause: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/LIMIT/i), parsimmon_umd_min.exports.whitespace, EXPRESSION.field, (limit, _1, field) => { + limitClause: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/LIMIT/i), parsimmon_umd_minExports.whitespace, EXPRESSION.field, (limit, _1, field) => { return { type: "limit", amount: field }; }).desc("LIMIT "), - flattenClause: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/FLATTEN/i).skip(parsimmon_umd_min.exports.whitespace), q.namedField, (_, field) => { + flattenClause: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/FLATTEN/i).skip(parsimmon_umd_minExports.whitespace), q.namedField, (_, field) => { return { type: "flatten", field }; }).desc("FLATTEN [AS ]"), - groupByClause: q => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/GROUP BY/i).skip(parsimmon_umd_min.exports.whitespace), q.namedField, (_, field) => { + groupByClause: q => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/GROUP BY/i).skip(parsimmon_umd_minExports.whitespace), q.namedField, (_, field) => { return { type: "group", field }; }).desc("GROUP BY [AS ]"), // Full query parsing. - clause: q => parsimmon_umd_min.exports.alt(q.fromClause, q.whereClause, q.sortByClause, q.limitClause, q.groupByClause, q.flattenClause), - query: q => parsimmon_umd_min.exports.seqMap(q.headerClause.trim(parsimmon_umd_min.exports.optWhitespace), q.fromClause.trim(parsimmon_umd_min.exports.optWhitespace).atMost(1), q.clause.trim(parsimmon_umd_min.exports.optWhitespace).many(), (header, from, clauses) => { + clause: q => parsimmon_umd_minExports.alt(q.fromClause, q.whereClause, q.sortByClause, q.limitClause, q.groupByClause, q.flattenClause), + query: q => parsimmon_umd_minExports.seqMap(q.headerClause.trim(parsimmon_umd_minExports.optWhitespace), q.fromClause.trim(parsimmon_umd_minExports.optWhitespace).atMost(1), q.clause.trim(parsimmon_umd_minExports.optWhitespace).many(), (header, from, clauses) => { return { header, source: from.length == 0 ? Sources.folder("") : from[0], @@ -18325,47 +18545,41 @@ class DataviewInlineApi { */ async view(viewName, input) { // Look for `${viewName}.js` first, then for `${viewName}/view.js`. - let simpleViewFile = this.app.metadataCache.getFirstLinkpathDest(viewName + ".js", this.currentFilePath); - if (simpleViewFile) { - let contents = await this.app.vault.read(simpleViewFile); - if (contents.contains("await")) - contents = "(async () => { " + contents + " })()"; - let func = new Function("dv", "input", contents); - try { - // This may directly render, in which case it will likely return undefined or null. - let result = await Promise.resolve(func(this, input)); - if (result) - await renderValue(result, this.container, this.currentFilePath, this.component, this.settings, true); - } - catch (ex) { - renderErrorPre(this.container, `Dataview: Failed to execute view '${simpleViewFile.path}'.\n\n${ex}`); - } - return; - } - // No `{viewName}.js`, so look for a folder instead. - let viewPath = `${viewName}/view.js`; - let viewFile = this.app.metadataCache.getFirstLinkpathDest(viewPath, this.currentFilePath); + const simpleViewPath = `${viewName}.js`; + const complexViewPath = `${viewName}/view.js`; + let checkForCss = false; + let viewFile = this.app.metadataCache.getFirstLinkpathDest(simpleViewPath, this.currentFilePath); if (!viewFile) { - renderErrorPre(this.container, `Dataview: custom view not found for '${viewPath}' or '${viewName}.js'.`); + viewFile = this.app.metadataCache.getFirstLinkpathDest(complexViewPath, this.currentFilePath); + checkForCss = true; + } + if (!viewFile) { + renderErrorPre(this.container, `Dataview: custom view not found for '${simpleViewPath}' or '${complexViewPath}'.`); return; } - let viewContents = await this.app.vault.read(viewFile); - if (viewContents.contains("await")) - viewContents = "(async () => { " + viewContents + " })()"; - let viewFunction = new Function("dv", "input", viewContents); + let contents = await this.app.vault.read(viewFile); + if (contents.contains("await")) + contents = "(async () => { " + contents + " })()"; + contents += `\n//# sourceURL=${viewFile.path}`; + let func = new Function("dv", "input", contents); try { - let result = await Promise.resolve(viewFunction(this, input)); + // This may directly render, in which case it will likely return undefined or null. + let result = await Promise.resolve(func(this, input)); if (result) await renderValue(result, this.container, this.currentFilePath, this.component, this.settings, true); } catch (ex) { - renderErrorPre(this.container, `Dataview: Error while executing view '${viewFile.path}'.\n\n${ex}`); + renderErrorPre(this.container, `Dataview: Failed to execute view '${viewFile.path}'.\n\n${ex}`); + } + if (!checkForCss) { + return; } // Check for optional CSS. let cssFile = this.app.metadataCache.getFirstLinkpathDest(`${viewName}/view.css`, this.currentFilePath); if (!cssFile) return; let cssContents = await this.app.vault.read(cssFile); + cssContents += `\n/*# sourceURL=${location.origin}/${cssFile.path} */`; this.container.createEl("style", { text: cssContents, attr: { scope: " " } }); } /** Render a dataview list of the given values. */ @@ -18886,15 +19100,18 @@ class DataviewApi { * execution via `result.successful` and obtain `result.value` or `result.error` resultingly. If * you'd rather this method throw on an error, use `dv.tryEvaluate`. */ - evaluate(expression, context) { + evaluate(expression, context, originFile) { let field = EXPRESSION.field.parse(expression); if (!field.status) return Result.failure(`Failed to parse expression "${expression}"`); - return this.evaluationContext.evaluate(field.value, context); + let evaluationContext = originFile + ? new Context(defaultLinkHandler(this.index, originFile), this.settings) + : this.evaluationContext; + return evaluationContext.evaluate(field.value, context); } /** Error-throwing version of `dv.evaluate`. */ - tryEvaluate(expression, context) { - return this.evaluate(expression, context).orElseThrow(); + tryEvaluate(expression, context, originFile) { + return this.evaluate(expression, context, originFile).orElseThrow(); } /////////////// // Rendering // @@ -19101,8 +19318,8 @@ async function replaceInlineFields(ctx, init) { if (!box) continue; const context = Object.assign({}, init, { container: box, component: component }); - S$1(v$1(DataviewContext.Provider, { value: context }, - v$1(Lit, { value: parseInlineValue(inlineFields[index].value), inline: true, sourcePath: ctx.sourcePath })), box); + D$1(y$1(DataviewContext.Provider, { value: context }, + y$1(Lit, { value: parseInlineValue(inlineFields[index].value), inline: true, sourcePath: ctx.sourcePath })), box); } } @@ -19885,4 +20102,4 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { } module.exports = DataviewPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9lcnJvcnMuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvc3lzdGVtWm9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvSUFOQVpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvbG9jYWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lcy9maXhlZE9mZnNldFpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL3pvbmVzL2ludmFsaWRab25lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL3pvbmVVdGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9zZXR0aW5ncy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC91dGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2VuZ2xpc2guanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0dGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2ludmFsaWQuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvcmVnZXhQYXJzZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2R1cmF0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbnRlcnZhbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW5mby5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9kaWZmLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2RpZ2l0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC90b2tlblBhcnNlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9jb252ZXJzaW9ucy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvZGF0ZXRpbWUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2x1eG9uLmpzIiwiLi4vc3JjL3NldHRpbmdzLnRzIiwiLi4vc3JjL2FwaS9yZXN1bHQudHMiLCIuLi9ub2RlX21vZHVsZXMvcGFyc2ltbW9uL2J1aWxkL3BhcnNpbW1vbi51bWQubWluLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Vtb2ppLXJlZ2V4L2luZGV4LmpzIiwiLi4vc3JjL3V0aWwvbm9ybWFsaXplLnRzIiwiLi4vc3JjL2RhdGEtbW9kZWwvdmFsdWUudHMiLCIuLi9zcmMvYXBpL2RhdGEtYXJyYXkudHMiLCIuLi9zcmMvdXRpbC9sb2NhbGUudHMiLCIuLi9zcmMvdWkvcmVuZGVyLnRzIiwiLi4vbm9kZV9tb2R1bGVzL3BhcGFwYXJzZS9wYXBhcGFyc2UubWluLmpzIiwiLi4vc3JjL2V4cHJlc3Npb24vZmllbGQudHMiLCIuLi9zcmMvZGF0YS1pbmRleC9zb3VyY2UudHMiLCIuLi9zcmMvZXhwcmVzc2lvbi9wYXJzZS50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC9pbmxpbmUtZmllbGQudHMiLCIuLi9zcmMvZGF0YS1tb2RlbC9tYXJrZG93bi50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC9tYXJrZG93bi1maWxlLnRzIiwiLi4vc3JjL2RhdGEtaW1wb3J0L2Nzdi50cyIsIi4uL3NyYy9kYXRhLW1vZGVsL3RyYW5zZmVyYWJsZS50cyIsIi4uL25vZGVfbW9kdWxlcy9sb2NhbGZvcmFnZS9kaXN0L2xvY2FsZm9yYWdlLmpzIiwiLi4vc3JjL2RhdGEtaW1wb3J0L3BlcnNpc3Rlci50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC93ZWItd29ya2VyL2ltcG9ydC1tYW5hZ2VyLnRzIiwiLi4vc3JjL2RhdGEtaW5kZXgvaW5kZXgudHMiLCIuLi9zcmMvZGF0YS1pbmRleC9yZXNvbHZlci50cyIsIi4uL3NyYy9leHByZXNzaW9uL2Z1bmN0aW9ucy50cyIsIi4uL3NyYy9leHByZXNzaW9uL2JpbmFyeW9wLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vY29udGV4dC50cyIsIi4uL3NyYy9xdWVyeS9lbmdpbmUudHMiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFyZS12ZXJzaW9ucy9pbmRleC5tanMiLCIuLi9ub2RlX21vZHVsZXMvcHJlYWN0L2Rpc3QvcHJlYWN0Lm1vZHVsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9wcmVhY3QvaG9va3MvZGlzdC9ob29rcy5tb2R1bGUuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9kaXN0L2NvbXBhdC5tb2R1bGUuanMiLCIuLi9zcmMvdXRpbC9tZWRpYS50cyIsIi4uL3NyYy91aS9tYXJrZG93bi50c3giLCIuLi9zcmMvdWkvdmlld3MvdGFzay12aWV3LnRzeCIsIi4uL3NyYy91aS92aWV3cy9saXN0LXZpZXcudHN4IiwiLi4vc3JjL3VpL3ZpZXdzL3RhYmxlLXZpZXcudHN4IiwiLi4vc3JjL3F1ZXJ5L3F1ZXJ5LnRzIiwiLi4vc3JjL3F1ZXJ5L3BhcnNlLnRzIiwiLi4vbm9kZV9tb2R1bGVzL29ic2lkaWFuLWNhbGVuZGFyLXVpL2Rpc3QvaW5kZXgubWpzIiwiLi4vc3JjL3VpL3JlZnJlc2hhYmxlLXZpZXcudHMiLCIuLi9zcmMvdWkvdmlld3MvY2FsZW5kYXItdmlldy50cyIsIi4uL3NyYy9hcGkvaW5saW5lLWFwaS50cyIsIi4uL3NyYy91aS92aWV3cy9qcy12aWV3LnRzIiwiLi4vc3JjL3VpL2V4cG9ydC9tYXJrZG93bi50cyIsIi4uL3NyYy9hcGkvcGx1Z2luLWFwaS50cyIsIi4uL3NyYy91aS92aWV3cy9pbmxpbmUtdmlldy50cyIsIi4uL3NyYy91aS92aWV3cy9pbmxpbmUtZmllbGQudHN4IiwiLi4vc3JjL3VpL2xwLXJlbmRlci50cyIsIi4uL3NyYy9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpudWxsLCJuYW1lcyI6WyJuIiwicyIsImwiLCJzaW5nbGV0b24iLCJFbmdsaXNoLmZvcm1hdFJlbGF0aXZlVGltZSIsIkVuZ2xpc2gubW9udGhzIiwiRW5nbGlzaC53ZWVrZGF5cyIsIkVuZ2xpc2gubWVyaWRpZW1zIiwiRW5nbGlzaC5lcmFzIiwiRm9ybWF0cy5EQVRFX1NIT1JUIiwiRm9ybWF0cy5EQVRFX01FRCIsIkZvcm1hdHMuREFURV9GVUxMIiwiRm9ybWF0cy5EQVRFX0hVR0UiLCJGb3JtYXRzLlRJTUVfU0lNUExFIiwiRm9ybWF0cy5USU1FX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuVElNRV9XSVRIX1NIT1JUX09GRlNFVCIsIkZvcm1hdHMuVElNRV9XSVRIX0xPTkdfT0ZGU0VUIiwiRm9ybWF0cy5USU1FXzI0X1NJTVBMRSIsIkZvcm1hdHMuVElNRV8yNF9XSVRIX1NFQ09ORFMiLCJGb3JtYXRzLlRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQiLCJGb3JtYXRzLlRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCIsIkZvcm1hdHMuREFURVRJTUVfU0hPUlQiLCJGb3JtYXRzLkRBVEVUSU1FX01FRCIsIkZvcm1hdHMuREFURVRJTUVfRlVMTCIsIkZvcm1hdHMuREFURVRJTUVfSFVHRSIsIkZvcm1hdHMuREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTIiwiRm9ybWF0cy5EQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTIiwiRm9ybWF0cy5EQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMiLCJFbmdsaXNoLm1lcmlkaWVtRm9yRGF0ZVRpbWUiLCJFbmdsaXNoLm1vbnRoRm9yRGF0ZVRpbWUiLCJFbmdsaXNoLndlZWtkYXlGb3JEYXRlVGltZSIsIkVuZ2xpc2guZXJhRm9yRGF0ZVRpbWUiLCJFbmdsaXNoLm1vbnRoc1Nob3J0IiwiRW5nbGlzaC53ZWVrZGF5c0xvbmciLCJFbmdsaXNoLndlZWtkYXlzU2hvcnQiLCJJTlZBTElEIiwib3JkZXJlZFVuaXRzIiwiY2xvbmUiLCJGb3JtYXRzLkRBVEVfTUVEX1dJVEhfV0VFS0RBWSIsIkZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfV0VFS0RBWSIsInRoaXMiLCJQLmFsdCIsIlAucmVnZXgiLCJQLndoaXRlc3BhY2UiLCJQLmFueSIsIk1hcmtkb3duUmVuZGVyZXIiLCJQLnNlcU1hcCIsIlAuc2VxIiwiUC5vcHRXaGl0ZXNwYWNlIiwiUC5jdXN0b20iLCJQLmNyZWF0ZUxhbmd1YWdlIiwiUC5yZWdleHAiLCJQLnN0cmluZyIsIlAubm9uZU9mIiwiUC5zdWNjZWVkIiwiUC5mYWlsIiwiTGlzdEl0ZW0iLCJQYXBhLnBhcnNlIiwicmVxdWlyZSIsImdsb2JhbCIsIkNvbXBvbmVudCIsIkRhdGF2aWV3SW1wb3J0V29ya2VyIiwiVEZpbGUiLCJURm9sZGVyIiwidSIsInQiLCJvIiwiciIsImYiLCJlIiwiYyIsImEiLCJoIiwidiIsInkiLCJwIiwiZCIsIl8iLCJrIiwiYiIsIm0iLCJnIiwiaiIsInoiLCJ3IiwieCIsIlAiLCJOIiwiTSIsIkEiLCJDIiwiSCIsIiQiLCJUIiwiSSIsIk8iLCJMIiwiUyIsInEiLCJCIiwiRCIsIkYiLCJpIiwiY3JlYXRlQ29udGV4dCIsInVzZVJlZiIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJGcmFnbWVudCIsInVzZVN0YXRlIiwiTWFya2Rvd25SZW5kZXJDaGlsZCIsInJlbmRlciIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJQbGF0Zm9ybSIsIlJlc3VsdENvdW50IiwiUC5zZXBCeSIsIldpZGdldFR5cGUiLCJlZGl0b3JJbmZvRmllbGQiLCJWaWV3UGx1Z2luIiwidmlldyIsIkRlY29yYXRpb24iLCJlZGl0b3JMaXZlUHJldmlld0ZpZWxkIiwic3ludGF4VHJlZSIsInRva2VuQ2xhc3NOb2RlUHJvcCIsIlBsdWdpbiIsImRlYm91bmNlIiwiUGx1Z2luU2V0dGluZ1RhYiIsIlNldHRpbmciXSwibWFwcGluZ3MiOiI7Ozs7OztB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QVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QixFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDWixJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9DLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUMzQixHQUFHO0FBQ0gsRUFBRSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFDRDtBQUNBLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUNyQixTQUFTLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRTtBQUM1QyxFQUFFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoRCxFQUFFLElBQUksR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QixFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDWixJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUMzQixHQUFHO0FBQ0gsRUFBRSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFDRDtBQUNBLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUN0QixTQUFTLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRTtBQUM1QyxFQUFFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoRCxFQUFFLElBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QixFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDWixJQUFJLEdBQUcsR0FBRyxJQUFJ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QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtBQUNkLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBT0EsU0FBTyxDQUFDO0FBQ3RDLElBQUksT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsR0FBRztBQUNkLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBT0EsU0FBTyxDQUFDO0FBQ3RDLElBQUksT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUU7QUFDbEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPQSxTQUFPLENBQUM7QUFDdEMsSUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxTQUFTLEdBQUcsS0FBSyxFQUFFLEdBQUcs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LElBQUksQ0FBQyxDQUFDO0FBQ2YsTUFBTSxJQUFJO0FBQ1YsTUFBTSxLQUFLO0FBQ1gsTUFBTSxHQUFHO0FBQ1QsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEQsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDNUIsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQ2pDLEtBQUs7QUFDTCxJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO0FBQ3RDLE1BQU0sS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQzlDLE1BQU0sUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0FBQ3ZELE1BQU0sTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQ2pELE1BQU0sS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQzlDLE1BQU0sSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO0FBQzNDLE1BQU0sS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO0FBQ3RCLE1BQU0sT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO0FBQzFCLE1BQU0sT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO0FBQzFCLE1BQU0sWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO0FBQ3BDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxj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SSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEYsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxPQUFPLEdBQUcsR0FBRztBQUNmLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO0FBQzVDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDbkU7QUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQztBQUM1QyxJQUFJLE9BQU8sT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEYsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFO0FBQ3hDLElBQUksTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFDbkQsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDMUIsTUFBTSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDL0MsS0FBSztBQUNMO0FBQ0EsSUFBSSxNQUFNLFNBQVMsR0FBRyxhQUFh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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU0sV0FBVyxFQUFFLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0ZBQStGLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLDJFQUEyRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsMERBQTBELENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsMkNBQTJDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTSwwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQXFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxNQUFNLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrREFBK0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnSUFBZ0ksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENB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UyxDQUFDLEVBQUUsQ0FBYyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsWUFBWSxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxjQUFjLFlBQVksTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtEQUFrRCxDQUFDLENBQUMsQ0FBQyxrTkFBa04sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsNkNBQTZDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVB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LFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDckMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFcEMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDckMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFbkMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdkMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDckMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFcEMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDM0MsT0FBTyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDNUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDekMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFdEMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDM0MsT0FBTyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDNUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDekMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7Q0FDekMsQ0FBQztBQUVGO0FBQ08sTUFBTSxlQUFlLEdBQUc7QUFDM0IsSUFBQSxHQUFHLEVBQUUsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFO0FBQzNCLElBQUEsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDNUMsSUFBQSxTQUFTLEVBQUUsTUFDUCxRQUFRLENBQUMsS0FBSyxFQUFFO1NBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUNkLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEQsSUFBQSxRQUFRLEVBQUUsTUFDTixRQUFRLENBQUMsS0FBSyxFQUFFO1NBQ1gsT0FBTyxDQUFDLEtBQUssQ0FB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RyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFDOztZQUNwRixPQUFPLENBQUEsRUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFDO0tBQzdDO0lBRU0sT0FBTyxHQUFBOztBQUNWLFFBQUEsT0FBTyxDQUFBLEVBQUEsSUFBQyxDQUFBLEVBQUEsR0FBQSxDQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBSSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBSSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFHLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLENBQUMsQ0FBQyxDQUFDO0tBQ25HO0lBRU0sR0FBRyxHQUFBOztBQUNOLFFBQUEsT0FBTyxDQUFBLEVBQUEsSUFBQyxDQUFBLEVBQUEsR0FBQSxDQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBSSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBSSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFHLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLENBQUMsQ0FBQyxDQUFDO0tBQ25HO0lBRU0sU0FBUyxH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QUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU9BLGVBQU8sRUFBRSxVQUFVLEVBQUVBLGVBQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDcjFCLENBQUMsVUFBVSxNQUFNLENBQUM7QUFFbEIsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixJ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QUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDMUM7QUFDQSxRQUFRLFlBQVksSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xELFFBQVEsWUFBWSxJQUFJLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDNUUsUUFBUSxZQUFZLElBQUksVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakYsUUFBUSxZQUFZLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDdEQsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNoQyxRQUFRLFlBQVksR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNoRixLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDdkMsUUFBUSxZQUFZLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDakYsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLFlBQVksQ0FBQztBQUN4QixDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FB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RSxJQUFJLElBQUksQ0FBQztBQUN4QixTQUFBLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQixTQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEYsU0FBQSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEcsU0FBQSxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsRCxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLGdCQUFBLENBQUEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMzQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7O0FBR0EsSUFBQSxnQkFBQSxDQUFBLEtBQUssR0FBaUIsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDO1NBQzFELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUM5QixTQUFB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RSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxTQUFTLEdBQWlCLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQztBQUNsRSxTQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssS0FBSyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ2xGLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEIsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxRQUFRLEdBQWlCLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUNoRSxTQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVB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LEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsU0FBQSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEYsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RCxTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLElBQUksR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDekMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsU0FBQSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEs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QUNsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzs7QUFFbEQsU0FBQSxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pGLFNBQUEsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqRixTQUFBLFlBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUUzRSxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUk7UUFDcEMsT0FBTyxpQkFBaUIsQ0FDcEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUN4RixDQUFDO0FBQ04sS0FBQyxDQUFDO1NBQ0QsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZELFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs7U0FFMUQsUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0UsUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUUsU0FBQSxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hGLFNBQUEsWUFBWSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7U0FFNUYsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBTSxFQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7O1NBRWhGLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOztBQUVwRSxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFB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QyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU9DLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBU0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFVixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRS9ELEdBQUMsQ0FBQyxLQUFLLEVBQUVBLEdBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMwRSxHQUFDLEVBQUUsQ0FBQyxPQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBT0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRWYsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDZ0IsR0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFZCxHQUFDLEdBQUdsRSxHQUFDLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDa0UsR0FBQyxDQUFDbEUsR0FBQyxDQUFDLGlCQUFpQixHQUFHaUUsR0FBQyxFQUFFZSxHQUFDLEVBQUMsQ0FBQyxTQUFTQSxHQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDaEIsR0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUNBLEdBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDTSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ1csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQ0osR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUNLLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUVKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNLLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUVkLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDSSxHQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQ0UsR0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNGLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDUSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFYixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ2dCLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUNSLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNTLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTSCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTSCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFNUYsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxTQUFTMkYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUVDLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsR0FBQyxDQUFDQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNELEdBQUMsQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyx5QkFBeUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBU0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDN0YsR0FBQyxDQUFDLEtBQUssQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTNEYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDNUYsR0FBQyxDQUFDLEtBQUssQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTaUYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNqRixHQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJNEUsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDa0IsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQ3hCLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUN0RSxHQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQ3NFLEdBQUMsQ0FBQ0EsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBR0ssR0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQ1EsR0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUNZLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDL0YsR0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTa0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ2xGLEdBQUMsQ0FBQyxHQUFHLEVBQUVBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTK0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTNCLEdBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBQyxDQUFDLEdBQUdxQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDTixHQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUVOLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVOLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFbUIsR0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTSCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDdkYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTc0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUd0RixHQUFDLENBQUMsT0FBTyxFQUFFQSxHQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUV1RixHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsR0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUN2RixHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRXNGLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUVmLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDLFNBQVN1QixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNoRyxHQUFDLENBQUMsRUFBRSxFQUFFQSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUNpRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDVCxHQUFDLENBQUNHLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRVAsR0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUNjLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU2UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNDLEdBQUMsRUFBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDNUIsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTMEIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDaEMsR0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUNZLEdBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ1YsR0FBQyxDQUFDLEtBQUssQ0FBQ3JFLEdBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMrRCxHQUFDLENBQUMsQ0FBQyxDQUF1RGEsR0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUNOLEdBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDUyxHQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDSCxHQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUNHLEdBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUNILEdBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDRCxHQUFDLENBQUNYLEdBQUMsQ0FBQyxFQUFFLENBQUNDLEdBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQ2UsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNiLEdBQUMsQ0FBQyxDQUFDOztBQ0FuaVQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDckUsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxFQUFFQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNxRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ3JGLEdBQUMsQ0FBQyxHQUFHLEVBQUUrRSxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMvRSxHQUFDLENBQUMsR0FBRyxFQUFFK0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU9BLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVNXLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTWSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVNSLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM5RixHQUFDLENBQUMsYUFBYSxFQUFFQSxHQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQWlLLFNBQVNzRixHQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDbkYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNrRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDbkYsR0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHQSxHQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFc0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUN0RixHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNrRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUVDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDbkYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQ2tGLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFbEYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxxQkFBcUIsQ0FBQyxTQUFTa0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNNLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FDQWgvRCxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUNwRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUl1RSxHQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNDLEdBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQ0ksR0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQUssZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNKLEdBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPeEUsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUN3RSxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUlELEdBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFdkUsR0FBQyxDQUFDeUUsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDekUsR0FBQyxDQUFDeUUsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUNFLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMzRSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQixHQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSXVFLEdBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQ0ssR0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQywyT0FBMk8sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sTUFBTSxFQUFFLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQ0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT0ssR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDVCxHQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLDJCQUEyQixDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQ0EsR0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQ0MsR0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLGNBQWMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxjQUFjLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNJLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNKLEdBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRyxDQUFDLENBQUksSUFBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFhLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU94RSxHQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMwRSxHQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBR0MsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFJLElBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQU0sWUFBYyxDQUFDLFFBQVEsQ0FBQzVFLENBQUMsQ0FBQyxVQUFVLENBQUNrRSxDQUFDLENBQUMsU0FBUyxDQUFDSSxDQUFDLENBQUMsZUFBZSxDQUFDRixDQUFDLENBQUMsTUFBTSxDQUFDSCxDQUFDLENBQUMsbUJBQW1CLENBQUNFLENBQUMsQ0FBQyxPQUFPLENBQUNvQyxDQUFDLENBQUMsV0FBVyxDQUFDckcsR0FBQyxDQUFDLFVBQVUsQ0FBQ21FLEdBQUMsQ0FBQyxhQUFhLENBQUNFLEdBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQ3RFLEdBQUMsQ0FBQyxhQUFhLENBQUM2RSxHQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQ0UsR0FBQyxDQUFDLFFBQVEsQ0FBQ04sR0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUNGLEdBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUNFLEdBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUM7O0FDRW4rUCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ3pDLElBQUksR0FBRyxDQUFDO0lBQ0osTUFBTTtJQUNOLE9BQU87SUFDUCxNQUFNO0lBQ04sTUFBTTtJQUNOLE9BQU87SUFDUCxPQUFPO0lBQ1AsTUFBTTtJQUNOLE9BQU87SUFDUCxPQUFPO0lBQ1AsUUFBUTtJQUNSLE1BQU07SUFDTixNQUFNO0lBQ04sT0FBTztJQUNQLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtBQUNULENBQUEsQ0FBQyxDQUNMLENBQUM7QUFFRjtBQUNNLFNBQVUsWUFBWSxDQUFDLElBQVUsRUFBQTtJQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0FBQUUsUUFBQSxPQUFPLEtBQUssQ0FBQztBQUUzQyxJQUFBLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEUsSUFBQSxPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFFRDtBQUNNLFNBQVUsc0JBQXNCLENBQUMsSUFBVSxFQUFBO0lBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztBQUFFLFFBQUEsT0FBTyxTQUFTLENBQUM7SUFFcEMsSUFBSSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNqRCxJQUFBLElBQUksS0FBSztBQUFFLFFBQUEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUzRCxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN6QyxJQUFBLElBQUksTUFBTTtRQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFHekMsSUFBQSxPQUFPLFNBQVMsQ0FBQztBQUNyQjs7QUMzQ0E7QUE4Qk8sTUFBTSxlQUFlLEdBQUc4QixHQUFhLENBQW1CLFNBQVUsQ0FBQyxDQUFDO0FBRTNFO1NBQ2dCLFdBQVcsQ0FBQyxFQUN4QixPQUFPLEVBQ1AsVUFBVSxFQUNWLE1BQU0sR0FBRyxJQUFJLEVBQ2IsS0FBSyxFQUNMLEdBQUcsRUFDSCxPQUFPLEdBUVYsRUFBQTtBQUNHLElBQUEsTUFBTSxTQUFTLEdBQUdDLENBQU0sQ0FBcUIsSUFBSSxDQUFDLENBQUM7SUFDbkQsTUFBTSxTQUFTLEdBQUdDLEdBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFeERDLENBQVMsQ0FBQyxNQUFLO1FBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO1lBQUUsT0FBTztBQUUvQixRQUFBLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNqQyxRQUFBN0QseUJBQWdCLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBSztBQUN6RixZQUFBLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPOztZQUcxQyxJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRCxZQUFBLE9BQU8sU0FBUyxFQUFFO0FBQ2QsZ0JBQUEsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQztnQkFDcEMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDL0MsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BELGFBQUE7QUFDTCxTQUFDLENBQUMsQ0FBQztLQUNOLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBRTdDLElBQUEsT0FBTzJCLGNBQU0sR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sR0FBUyxDQUFDO0FBQ3JGLENBQUM7QUFFRDtBQUNPLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFaEQ7QUFDZ0IsU0FBQSxZQUFZLENBQUMsRUFBRSxPQUFPLEVBQTRCLEVBQUE7QUFDOUQsSUFBQSxNQUFNLFNBQVMsR0FBR2dDLENBQU0sQ0FBcUIsSUFBSSxDQUFDLENBQUM7SUFFbkRFLENBQVMsQ0FBQyxNQUFLO1FBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO1lBQUUsT0FBTztBQUMvQixRQUFBLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNqQyxRQUFBLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFFakMsSUFBQSxPQUFPbEMsR0FBTSxDQUFBLE1BQUEsRUFBQSxFQUFBLEdBQUcsRUFBRSxTQUFTLEdBQVMsQ0FBQztBQUN6QyxDQUFDO0FBRUQ7QUFDTyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBRWxEO0FBQ2dCLFNBQUEsTUFBTSxDQUFDLEVBQ25CLEtBQUssRUFDTCxVQUFVLEVBQ1YsTUFBTSxHQUFHLEtBQUssRUFDZCxLQUFLLEdBQUcsQ0FBQyxHQU1aLEVBQUE7O0FBQ0csSUFBQSxNQUFNLE9BQU8sR0FBR2lDLEdBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQzs7QUFHNUMsSUFBQSxJQUFJLEtBQUssSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLHVCQUF1QjtRQUFFLE9BQU9qQyxHQUFBLENBQUNtQyxHQUFRLEVBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBZSxDQUFDO0lBRXZGLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO0FBQzdDLFFBQUEsT0FBT25DLEdBQUMsQ0FBQSxRQUFRLEVBQUMsRUFBQSxPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsR0FBSSxDQUFDO0FBQ3ZGLEtBQUE7QUFBTSxTQUFBLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPQSxHQUFBLENBQUMsUUFBUSxFQUFBLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFBLENBQUksQ0FBQztBQUMvRCxLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDL0IsUUFBQSxPQUFPQSxJQUFDbUMsR0FBUSxFQUFBLElBQUEsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFZLENBQUM7QUFDNUMsS0FBQTtBQUFNLFNBQUEsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2hDLFFBQUEsT0FBT25DLElBQUNtQyxHQUFRLEVBQUEsSUFBQSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQVksQ0FBQztBQUM1QyxLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDN0IsUUFBQSxPQUFPbkMsR0FBQyxDQUFBbUMsR0FBUSxFQUFFLElBQUEsRUFBQSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFZLENBQUM7QUFDN0YsS0FBQTtBQUFNLFNBQUEsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ2pDLE9BQU9uQyxHQUFBLENBQUNtQyxHQUFRLEVBQUUsSUFBQSxFQUFBLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFZLENBQUM7QUFDOUQsS0FBQTtBQUFNLFNBQUEsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFOztBQUU3QixRQUFBLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3JCLFlBQUEsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN0RixZQUFBLElBQUksQ0FBQyxRQUFRO0FBQUUsZ0JBQUEsT0FBT25DLEdBQUMsQ0FBQSxRQUFRLEVBQUMsRUFBQSxPQUFPLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEdBQUksQ0FBQztBQUV0RixZQUFBLElBQUksVUFBVSxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9DLFlBQUEsSUFBSSxZQUFZLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRS9ELFlBQUEsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUNwQyxPQUFPQSxHQUFBLENBQUEsS0FBQSxFQUFBLEVBQUssR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUEsQ0FBSSxDQUFDO0FBQy9GLGlCQUFBLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQztBQUN6QyxnQkFBQSxPQUFPQSxhQUFLLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBSSxDQUFDOztnQkFDeEUsT0FBT0EsR0FBQSxDQUFBLEtBQUEsRUFBQSxFQUFLLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUEsQ0FBSSxDQUFDO0FBQzNELFNBQUE7QUFFRCxRQUFBLE9BQU9BLEdBQUMsQ0FBQSxRQUFRLEVBQUMsRUFBQSxPQUFPLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEdBQUksQ0FBQztBQUMxRSxLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDN0IsUUFBQSxPQUFPQSxJQUFDLFNBQVMsRUFBQSxFQUFDLE9BQU8sRUFBRSxLQUFLLEdBQUksQ0FBQztBQUN4QyxLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDL0IsUUFBQSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0IsUUFDSUEsSUFBQ21DLEdBQVEsRUFBQSxJQUFBO2dCQUNMbkMsR0FBQyxDQUFBLEdBQUcsRUFBQyxFQUFBLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUksQ0FBQTs7Z0JBQUUsR0FBRztBQUN0RCxnQkFBQUEsR0FBQSxDQUFDLEdBQUcsRUFBQSxFQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUksQ0FBQSxDQUM1QyxFQUNiO0FBQ0wsU0FBQTtBQUFNLGFBQUEsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3RDLFlBQUEsUUFDSUEsR0FBQSxDQUFBLEdBQUEsRUFBQSxFQUFHLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxVQUFVLEVBQUMsTUFBTSxFQUFDLFFBQVEsRUFBQyxLQUFLLEVBQUMsZUFBZSxFQUNuRSxFQUFBLENBQUEsRUFBQSxHQUFBLEtBQUssQ0FBQyxPQUFPLE1BQUEsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLEdBQUksS0FBSyxDQUFDLEdBQUcsQ0FDM0IsRUFDTjtBQUNMLFNBQUE7QUFBTSxhQUFBO1lBQ0gsT0FBT0EsR0FBQSxDQUFBLEdBQUEsRUFBQSxJQUFBOztBQUF3QixnQkFBQSxLQUFLLENBQUMsT0FBTztxQkFBVSxDQUFDO0FBQzFELFNBQUE7QUFDSixLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDakMsT0FBT0EsR0FBQSxDQUFDbUMsR0FBUSxFQUFBLElBQUEsRUFBQSxZQUFBLENBQTRCLENBQUM7QUFDaEQsS0FBQTtBQUFNLFNBQUEsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDOUQsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNULFlBQUEsUUFDSW5DLEdBQUksQ0FBQSxJQUFBLEVBQUEsRUFBQSxLQUFLLEVBQUUsOENBQThDLEVBQUEsRUFDcEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQ2ZBLEdBQUksQ0FBQSxJQUFBLEVBQUEsRUFBQSxLQUFLLEVBQUMseUJBQXlCLEVBQUE7Z0JBQy9CQSxHQUFDLENBQUEsR0FBRyxFQUFDLEVBQUEsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUksQ0FBQSxDQUNqRixDQUNSLENBQUMsQ0FDRCxFQUNQO0FBQ0wsU0FBQTtBQUFNLGFBQUE7QUFDSCxZQUFBLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUFFLE9BQU9BLEdBQUEsQ0FBQ21DLEdBQVEsRUFBQSxJQUFBLEVBQUEsY0FBQSxDQUE4QixDQUFDO0FBRXRFLFlBQUEsUUFDSW5DLEdBQU0sQ0FBQSxNQUFBLEVBQUEsRUFBQSxLQUFLLEVBQUMsb0NBQW9DLEVBQUEsRUFDM0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLE1BQ3ZCQSxJQUFDbUMsR0FBUSxFQUFBLElBQUE7Z0JBQ0osS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSTtnQkFDdkJuQyxHQUFDLENBQUEsR0FBRyxFQUFDLEVBQUEsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUksQ0FBQSxDQUMzRSxDQUNkLENBQUMsQ0FDQyxFQUNUO0FBQ0wsU0FBQTtBQUNKLEtBQUE7QUFBTSxTQUFBLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTs7UUFFL0IsSUFBSSxDQUFBLENBQUEsRUFBQSxHQUFBLEtBQUssS0FBTCxJQUFBLElBQUEsS0FBSyx1QkFBTCxLQUFLLENBQUUsV0FBVyxNQUFBLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFFLElBQUksS0FBSSxDQUFBLENBQUEsRUFBQSxHQUFBLEtBQUssS0FBTCxJQUFBLElBQUEsS0FBSyxLQUFMLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUssQ0FBRSxXQUFXLE1BQUUsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsSUFBSSxLQUFJLFFBQVEsRUFBRTtBQUNsRSxZQUFBLE9BQU9BLElBQUNtQyxHQUFRLEVBQUEsSUFBQTs7Z0JBQU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJO29CQUFnQixDQUFDO0FBQ2hFLFNBQUE7UUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ1QsWUFBQSxRQUNJbkMsR0FBQSxDQUFBLElBQUEsRUFBQSxFQUFJLEtBQUssRUFBQyxnREFBZ0QsRUFBQSxFQUNyRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxNQUNwQ0EsR0FBQSxDQUFBLElBQUEsRUFBQSxFQUFJLEtBQUssRUFBQyxnREFBZ0QsRUFBQTtnQkFDckQsR0FBRzs7Z0JBQUdBLEdBQUMsQ0FBQSxHQUFHLEVBQUMsRUFBQSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBSSxDQUFBLENBQ3JGLENBQ1IsQ0FBQyxDQUNELEVBQ1A7QUFDTCxTQUFBO0FBQU0sYUFBQTtZQUNILElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQztnQkFBRSxPQUFPQSxHQUFBLENBQUNtQyxHQUFRLEVBQUEsSUFBQSxFQUFBLGdCQUFBLENBQWdDLENBQUM7QUFFckYsWUFBQSxRQUNJbkMsR0FBQSxDQUFBLE1BQUEsRUFBQSxFQUFNLEtBQUssRUFBQyxzQ0FBc0MsRUFBQSxFQUM3QyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssTUFDM0NBLEdBQUEsQ0FBQ21DLEdBQVEsRUFBQSxJQUFBO2dCQUNKLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUk7Z0JBQ3RCLEdBQUc7O2dCQUFHbkMsR0FBQyxDQUFBLEdBQUcsRUFBQyxFQUFBLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFJLENBQUEsQ0FDL0UsQ0FDZCxDQUFDLENBQ0MsRUFDVDtBQUNMLFNBQUE7QUFDSixLQUFBO0FBRUQsSUFBQSxPQUFPQSxJQUFDbUMsR0FBUSxFQUFBLElBQUE7O0FBQW9CLFFBQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFBZ0IsQ0FBQztBQUM5RSxDQUFDO0FBRUQ7QUFDTyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXRDO0FBQ2dCLFNBQUEsUUFBUSxDQUFDLEtBQXNDLEVBQUUsRUFBRSxFQUFBO0lBQy9ELE9BQU9uQyxHQUFBLENBQUEsS0FBQSxFQUFBLEVBQUssS0FBSyxFQUFDLHlCQUF5QixJQUFFLEtBQUssQ0FBQyxRQUFRLENBQU8sQ0FBQztBQUN2RSxDQUFDO0FBRUQ7QUFDZ0IsU0FBQSxZQUFZLENBQUMsRUFBRSxPQUFPLEVBQXVCLEVBQUE7QUFDekQsSUFBQSxRQUNJQSxHQUFBLENBQUEsS0FBQSxFQUFBLEVBQUssS0FBSyxFQUFDLDZCQUE2QixFQUFBO1FBQ3BDQSxHQUFHLENBQUEsR0FBQSxFQUFBLEVBQUEsS0FBSyxFQUFDLGlDQUFpQyxFQUFBLEVBQUUsT0FBTyxDQUFLLENBQ3RELEVBQ1I7QUFDTixDQUFDO0FBRUQ7O0FBRUc7QUFDYSxTQUFBLG1CQUFtQixDQUMvQixTQUFzQixFQUN0QixHQUFRLEVBQ1IsUUFBMEIsRUFDMUIsS0FBZ0IsRUFDaEIsT0FBVSxFQUNWLE9BQXlCLEVBQUE7SUFFekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsR0FBR29DLENBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxHQUFHQSxDQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0MsSUFBQSxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxHQUFHQSxDQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDOztJQUczRCxJQUFJLENBQUMsV0FBVyxFQUFFO0FBQ2QsUUFBQSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUVyQixRQUFBLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMvQixLQUFBOztJQUdERixDQUFTLENBQUMsTUFBSztRQUNYLE1BQU0sZ0JBQWdCLEdBQUcsTUFBSztBQUMxQixZQUFBLElBQUksVUFBVSxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLFFBQVEsQ0FBQyxjQUFjLEVBQUU7QUFDaEYsZ0JBQUEsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzVCLGdCQUFBLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakMsYUFBQTtBQUNMLFNBQUMsQ0FBQzs7QUFHRixRQUFBLElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLHdCQUF3QixFQUFFLGdCQUFnQixDQUFDLENBQUM7O1FBRTdFLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUUzRCxRQUFBLE9BQU8sTUFBSztBQUNSLFlBQUEsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDaEMsWUFBQSxTQUFTLEVBQUUsQ0FBQztBQUNoQixTQUFDLENBQUM7QUFDTixLQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUU1QixJQUFBLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFRDtBQUNNLE1BQU8sYUFBYyxTQUFRRyw0QkFBbUIsQ0FBQTtJQUNsRCxXQUEwQixDQUFBLElBQWtCLEVBQVMsT0FBc0IsRUFBQTtBQUN2RSxRQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFEQSxJQUFJLENBQUEsSUFBQSxHQUFKLElBQUksQ0FBYztRQUFTLElBQU8sQ0FBQSxPQUFBLEdBQVAsT0FBTyxDQUFlO0tBRTFFO0lBRU0sTUFBTSxHQUFBO0FBQ1QsUUFBQSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEUsUUFBQUMsR0FBTSxDQUFDdEMsR0FBQyxDQUFBLGVBQWUsQ0FBQyxRQUFRLEVBQUEsRUFBQyxLQUFLLEVBQUUsT0FBTyxJQUFHLElBQUksQ0FBQyxPQUFPLENBQTRCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQ2pIO0lBRU0sUUFBUSxHQUFBO0FBQ1gsUUFBQXVDLEVBQXNCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQzVDO0FBQ0o7O0FDaFJEO0FBQ0EsU0FBUyxjQUFjLENBQUMsR0FBK0MsRUFBQTtBQUNuRSxJQUFBLE9BQU8sR0FBRyxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxTQUFTLElBQUssR0FBRyxDQUFDLE1BQXNCLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQztBQUN2RyxDQUFDO0FBRUQ7QUFDQSxTQUFTLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBbUIsRUFBQTs7QUFDdkMsSUFBQSxJQUFJLE9BQU8sR0FBR04sR0FBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDOztBQUcxQyxJQUFBLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBK0MsS0FBSTtBQUNsRSxRQUFBLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLE9BQU87QUFDVixTQUFBO1FBRUQsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3RCLFFBQUEsTUFBTSxjQUFjLEdBQUc7QUFDbkIsWUFBQSxNQUFNLEVBQUU7QUFDSixnQkFBQSxNQUFNLEVBQUU7QUFDSixvQkFBQSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO29CQUN0RCxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO0FBQzFFLGlCQUFBO2dCQUNELElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtBQUNsQixhQUFBO1NBQ0osQ0FBQzs7QUFHRixRQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFDakMsSUFBSSxDQUFDLElBQUksRUFDVCxHQUFHLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQyxPQUFPLElBQUlPLGlCQUFRLENBQUMsT0FBTyxDQUFDLEVBQ2hELGNBQXFCLENBQ3hCLENBQUM7QUFDTixLQUFDLENBQUM7O0FBR0YsSUFBQSxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQStDLEtBQUk7UUFDbEUsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3RCLFFBQUEsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFDNUMsTUFBTSxNQUFNLEdBQUcsU0FBUyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7O0FBRXJDLFFBQUEsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFDL0MsTUFBTSxLQUFBLElBQUEsSUFBTixNQUFNLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQU4sTUFBTSxDQUFFLFlBQVksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFFMUMsUUFBQSxJQUFJLE9BQU8sR0FBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRTlCLFFBQUEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLDBCQUEwQixFQUFFO1lBQzdDLFNBQVMsT0FBTyxDQUFDLEtBQXdCLEVBQUE7QUFDckMsZ0JBQUEsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFjLENBQUMsQ0FBQztBQUM3QixnQkFBQSxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNuQztBQUNELFlBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDL0IsWUFBQSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNwQyxTQUFBO0FBRUQsUUFBQSxlQUFlLFFBQVEsR0FBQTtBQUNuQixZQUFBLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3JDLGdCQUFBLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixnQkFBQSxJQUFJLFdBQVcsR0FBVyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQ3JDLGdCQUFBLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRTtvQkFDekMsV0FBVyxHQUFHLGlCQUFpQixDQUMzQixLQUFLLENBQUMsSUFBSSxFQUNWLE9BQU8sQ0FBQyxRQUFRLENBQUMsK0JBQStCLEVBQ2hELE9BQU8sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQ25DLE9BQU8sQ0FBQyxRQUFRLENBQUMsd0JBQXdCLEVBQ3pDLFNBQVMsQ0FDWixDQUFDO0FBQ0wsaUJBQUE7QUFDRCxnQkFBQSxNQUFNLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3BFLGFBQUE7WUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUMzRDtBQUNELFFBQUEsUUFBUSxFQUFFLENBQUM7QUFDZixLQUFDLENBQUM7QUFFRixJQUFBLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDO0lBQ3BDLFFBQ0l4QyxHQUNJLENBQUEsSUFBQSxFQUFBLEVBQUEsS0FBSyxFQUFFLHlCQUF5QixJQUFJLE9BQU8sR0FBRyxhQUFhLEdBQUcsRUFBRSxDQUFDLEVBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUEsV0FBQSxFQUNQLElBQUksQ0FBQyxNQUFNLEVBQUE7QUFFdEIsUUFBQUEsR0FBQSxDQUFBLE9BQUEsRUFBQSxFQUFPLEtBQUssRUFBQyxrQ0FBa0MsRUFBQyxJQUFJLEVBQUMsVUFBVSxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBSSxDQUFBO1FBQ3hHQSxHQUFDLENBQUEsUUFBUSxJQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLE1BQUksSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLEdBQUEsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBSSxDQUFBO0FBQ25GLFFBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJQSxHQUFDLENBQUEsUUFBUSxFQUFDLEVBQUEsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUksQ0FBQSxDQUM5RCxFQUNQO0FBQ04sQ0FBQztBQUVEO0FBQ0EsU0FBUyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQXdCLEVBQUE7O0FBQzVDLElBQUEsSUFBSSxPQUFPLEdBQUdpQyxHQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7O0FBRzFDLElBQUEsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUErQyxLQUFJO0FBQ2xFLFFBQUEsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDckIsT0FBTztBQUNWLFNBQUE7UUFFRCxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDdEIsUUFBQSxNQUFNLGNBQWMsR0FBRztBQUNuQixZQUFBLE1BQU0sRUFBRTtBQUNKLGdCQUFBLE1BQU0sRUFBRTtBQUNKLG9CQUFBLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7b0JBQ3RELEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7QUFDMUUsaUJBQUE7Z0JBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO0FBQ2xCLGFBQUE7U0FDSixDQUFDOztBQUdGLFFBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFlBQVksRUFBRSxFQUNqQyxJQUFJLENBQUMsSUFBSSxFQUNULEdBQUcsQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDLE9BQU8sSUFBSU8saUJBQVEsQ0FBQyxPQUFPLENBQUMsRUFDaEQsY0FBcUIsQ0FDeEIsQ0FBQztBQUNOLEtBQUMsQ0FBQztJQUVGLFFBQ0l4QyxZQUFJLEtBQUssRUFBQywrQkFBK0IsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFBO1FBQ3hEQSxHQUFDLENBQUEsUUFBUSxJQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLE1BQUksSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLEdBQUEsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBSSxDQUFBO0FBQ25GLFFBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJQSxHQUFDLENBQUEsUUFBUSxFQUFDLEVBQUEsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUksQ0FBQSxDQUM5RCxFQUNQO0FBQ04sQ0FBQztBQUVEO0FBQ0EsU0FBUyxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQTBCLEVBQUE7SUFDL0MsTUFBTSxRQUFRLEdBQUdpQyxHQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3RELElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLGlCQUFpQjtBQUMvQyxRQUFBLE9BQU9qQyxJQUFDLFlBQVksRUFBQSxFQUFDLE9BQU8sRUFBQyw4Q0FBOEMsR0FBRyxDQUFDO0lBRW5GLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFFBQ0lBLEdBQUksQ0FBQSxJQUFBLEVBQUEsRUFBQSxLQUFLLEVBQUMsb0JBQW9CLElBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUNWLElBQUksQ0FBQyxJQUFJLEdBQUdBLEdBQUEsQ0FBQyxRQUFRLEVBQUEsRUFBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUEsQ0FBSSxHQUFHQSxHQUFDLENBQUEsUUFBUSxFQUFDLEVBQUEsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFJLENBQUEsQ0FDeEcsQ0FDQSxFQUNQO0FBQ04sQ0FBQztBQUVEO0FBQ0EsU0FBU3lDLGFBQVcsQ0FBQyxLQUFzRSxFQUFBO0lBQ3ZGLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBR1IsR0FBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ2pELElBQUEsT0FBTyxRQUFRLENBQUMsZUFBZSxJQUMzQmpDLEdBQU0sQ0FBQSxNQUFBLEVBQUEsRUFBQSxLQUFLLEVBQUMscUJBQXFCLEVBQUUsRUFBQSxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQVEsS0FFM0VBLEdBQUEsQ0FBQ21DLEdBQVEsRUFBQSxJQUFBLENBQVksQ0FDeEIsQ0FBQztBQUNOLENBQUM7QUFFRDtBQUNBLFNBQVMsWUFBWSxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBc0QsRUFBQTtBQUMzRixJQUFBLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbkUsUUFDSW5DLElBQUNtQyxHQUFRLEVBQUEsSUFBQTtRQUNKLFVBQVU7QUFDUCxZQUFBLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUNWbkMsR0FBQSxDQUFDbUMsR0FBUSxFQUFDLEVBQUEsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUE7QUFDbkIsZ0JBQUFuQyxHQUFBLENBQUEsSUFBQSxFQUFBLElBQUE7b0JBQ0lBLEdBQUMsQ0FBQSxHQUFHLEVBQUMsRUFBQSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFJLENBQUE7QUFDaEQsb0JBQUFBLEdBQUEsQ0FBQ3lDLGFBQVcsRUFBQyxFQUFBLElBQUksRUFBRSxJQUFJLEdBQUksQ0FDMUI7Z0JBQ0x6QyxHQUFLLENBQUEsS0FBQSxFQUFBLEVBQUEsS0FBSyxFQUFDLHVCQUF1QixFQUFBO0FBQzlCLG9CQUFBQSxHQUFBLENBQUMsWUFBWSxFQUFBLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQSxDQUFJLENBQ3hELENBQ0MsQ0FDZCxDQUFDO1FBQ0wsQ0FBQyxVQUFVLElBQUlBLEdBQUEsQ0FBQyxRQUFRLEVBQUEsRUFBQyxLQUFLLEVBQUUsS0FBb0IsRUFBQSxDQUFJLENBQ2xELEVBQ2I7QUFDTixDQUFDO0FBT0Q7OztBQUdHO1NBQ2EsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBd0MsRUFBQTtBQUNoRixJQUFBLElBQUksT0FBTyxHQUFHaUMsR0FBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRTFDLElBQUEsSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQzNCLE9BQU8sQ0FBQyxTQUFTLEVBQ2pCLE9BQU8sQ0FBQyxHQUFHLEVBQ1gsT0FBTyxDQUFDLFFBQVEsRUFDaEIsT0FBTyxDQUFDLEtBQUssRUFDYixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFDcEIsWUFBVztRQUNQLElBQUksTUFBTSxHQUFHLE1BQU0sbUJBQW1CLENBQUMsTUFDbkMsV0FBVyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQ2xFLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVU7QUFBRSxZQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDOztBQUM5RSxZQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzlELEtBQUMsQ0FDSixDQUFDO0FBRUYsSUFBQSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksU0FBUztRQUN4QixRQUNJakMsSUFBQ21DLEdBQVEsRUFBQSxJQUFBO0FBQ0wsWUFBQW5DLEdBQUEsQ0FBQyxRQUFRLEVBQUEsSUFBQSxFQUFBLFNBQUEsQ0FBbUIsQ0FDckIsRUFDYjtBQUNELFNBQUEsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLE9BQU87UUFDM0IsUUFDSUEsSUFBQ21DLEdBQVEsRUFBQSxJQUFBO0FBQ0wsWUFBQW5DLEdBQUEsQ0FBQyxRQUFRLEVBQUEsSUFBQTs7QUFBWSxnQkFBQSxLQUFLLENBQUMsS0FBSyxDQUFZLENBQ3JDLEVBQ2I7QUFFTixJQUFBLFFBQ0lBLEdBQUEsQ0FBQSxLQUFBLEVBQUEsRUFBSyxLQUFLLEVBQUMsNkJBQTZCLEVBQUE7QUFDcEMsUUFBQUEsR0FBQSxDQUFDLFlBQVksRUFBQSxFQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUksQ0FBQSxDQUMxRCxFQUNSO0FBQ04sQ0FBQztTQUVlLGNBQWMsQ0FBQyxJQUFrQixFQUFFLEtBQVksRUFBRSxVQUFrQixFQUFBO0FBQy9FLElBQUEsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUVBLElBQUMsUUFBUSxFQUFBLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7U0FFZSxtQkFBbUIsQ0FDL0IsSUFBa0IsRUFDbEIsS0FBMEIsRUFDMUIsVUFBa0IsRUFBQTtBQUVsQixJQUFBLE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFQSxJQUFDLFlBQVksRUFBQSxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQSxDQUFJLENBQUMsQ0FBQztBQUMzRixDQUFDO0FBRUQ7QUFDQTtBQUNBO0FBRUEsU0FBUyxNQUFNLENBQUMsSUFBZSxFQUFBO0lBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUN2QyxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsSUFBZSxFQUFBO0lBQ2pDLE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUN6QyxDQUFDO0FBRUQ7QUFDQSxTQUFTLGlCQUFpQixDQUFDLElBQWUsRUFBRSxNQUE4QixFQUFBO0lBQ3RFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlELElBQUEsS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUTtBQUFFLFFBQUEsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRWxFLElBQUEsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVEO0FBQ0EsU0FBUyxlQUFlLENBQUMsUUFBcUIsRUFBRSxNQUE4QixFQUFBO0FBQzFFLElBQUEsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBRztRQUMxQixPQUFPLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRTdELFFBQUEsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFM0IsUUFBQSxJQUFJLEdBQUc7QUFBRSxZQUFBLE9BQU8sR0FBRyxDQUFDOztBQUNmLFlBQUEsT0FBTyxPQUFPLENBQUM7QUFDeEIsS0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7OztBQUdHO0FBQ0csU0FBVSxTQUFTLENBQUMsR0FBZ0IsRUFBQTtBQUN0QyxJQUFBLElBQUksUUFBUSxHQUEyQixJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2pELElBQUEsSUFBSSxJQUFJLEdBQWdCLElBQUksR0FBRyxFQUFFLENBQUM7QUFFbEMsSUFBQSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRTtBQUNsQixRQUFBLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QixRQUFBLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLFFBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoQixLQUFBOztJQUdELEtBQUssSUFBSSxJQUFJLElBQUksR0FBRztBQUFFLFFBQUEsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBRXhELElBQUEsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FDbEIsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDL0YsQ0FBQztJQUNGLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFRDs7O0FBR0c7QUFDRyxTQUFVLFVBQVUsQ0FBQyxHQUF3QixFQUFBO0FBQy9DLElBQUEsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQzNCLFFBQUEsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBRztBQUNmLFlBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDcEQsU0FBQyxDQUFDLENBQUM7QUFDTixLQUFBO0FBQU0sU0FBQTtBQUNILFFBQUEsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsS0FBQTtBQUNMLENBQUM7QUFFRDtBQUNBO0FBQ0E7QUFFQTtBQUNBLFNBQVMsZUFBZSxDQUFDLElBQVksRUFBQTtJQUNqQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDLElBQUEsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDNUIsSUFBQSxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFBRSxRQUFBLElBQUksRUFBRSxDQUFDO0FBRXBELElBQUEsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFFRDtBQUNNLFNBQVUsaUJBQWlCLENBQzdCLFlBQW9CLEVBQ3BCLGlCQUEwQixFQUMxQixhQUFxQixFQUNyQixvQkFBNEIsRUFDNUIsUUFBaUIsRUFBQTtJQUVqQixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQztBQUV0QyxJQUFBLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxpQkFBaUI7QUFDL0IsUUFBQSxPQUFPLGVBQWUsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFNUYsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxJQUFBLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRCxJQUFBLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRW5DLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekUsSUFBQSxJQUFJLGlCQUFpQixFQUFFO1FBQ25CLGFBQWEsR0FBRyxnQ0FBZ0MsQ0FDNUMsYUFBYSxFQUNiLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDeEQsQ0FBQztBQUNMLEtBQUE7QUFBTSxTQUFBO0FBQ0gsUUFBQSxhQUFhLEdBQUcsY0FBYyxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDL0csS0FBQTtBQUNELElBQUEsYUFBYSxHQUFHLENBQUcsRUFBQSxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUcsRUFBQSxDQUFBLE9BQU8sS0FBQSxJQUFBLElBQVAsT0FBTyxLQUFQLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLE9BQU8sQ0FBRSxNQUFNLElBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUUsQ0FBQSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQztBQUV4QyxJQUFBLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQ7QUFDTyxlQUFlLFdBQVcsQ0FBQyxLQUFZLEVBQUUsSUFBVyxFQUFFLGFBQXFCLEVBQUUsV0FBb0IsRUFBQTtBQUNwRyxJQUFBLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssV0FBVyxJQUFJLFNBQVMsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU87QUFDbkcsSUFBQSxhQUFhLEdBQUcsYUFBYSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsYUFBYSxDQUFDO0FBRTFELElBQUEsSUFBSSxXQUFXLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxJQUFJLFFBQVEsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTNDLElBQUEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTztBQUN4QyxJQUFBLElBQUksS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RELElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDO1FBQUUsT0FBTztJQUUzQyxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxQyxJQUFBLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7UUFBRSxPQUFPOztBQUd2RCxJQUFBLElBQUksY0FBYyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9ELElBQUEsSUFBSSxXQUFXLEVBQUU7UUFDYixJQUFJLFlBQVksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRTNDLFFBQUEsSUFBSSxZQUFZLEdBQWEsQ0FBQyxHQUFHLGNBQWMsQ0FBQSxFQUFHLElBQUksQ0FBQyxNQUFNLENBQUssRUFBQSxFQUFBLGFBQWEsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsTUFBTSxDQUN6RyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FDNUQsQ0FBQztBQUVGLFFBQUEsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQztBQUMvRCxLQUFBO0FBQU0sU0FBQTtRQUNILFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQSxFQUFHLGNBQWMsQ0FBQSxFQUFHLElBQUksQ0FBQyxNQUFNLENBQUssRUFBQSxFQUFBLGFBQWEsQ0FBSyxFQUFBLEVBQUEsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBLENBQUUsQ0FBQztBQUN6RyxLQUFBO0FBRUQsSUFBQSxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDbkQsSUFBQSxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbEQ7O1NDbllnQixZQUFZLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUE0QyxFQUFBO0FBQ3hGLElBQUEsUUFDSUEsR0FBQSxDQUFBLElBQUEsRUFBQSxFQUFJLEtBQUssRUFBQyx1QkFBdUIsRUFDNUIsRUFBQSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksS0FDWEEsR0FBQSxDQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0ksUUFBQUEsR0FBQSxDQUFDLEdBQUcsRUFBQSxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsR0FBSSxDQUMzQyxDQUNSLENBQUMsQ0FDRCxFQUNQO0FBQ04sQ0FBQztBQU9EO1NBQ2dCLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQXdDLEVBQUE7QUFDaEYsSUFBQSxJQUFJLE9BQU8sR0FBR2lDLEdBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUUxQyxJQUFBLElBQUksS0FBSyxHQUFHLG1CQUFtQixDQUMzQixPQUFPLENBQUMsU0FBUyxFQUNqQixPQUFPLENBQUMsR0FBRyxFQUNYLE9BQU8sQ0FBQyxRQUFRLEVBQ2hCLE9BQU8sQ0FBQyxLQUFLLEVBQ2IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQ3BCLFlBQVc7UUFDUCxJQUFJLE1BQU0sR0FBRyxNQUFNLG1CQUFtQixDQUFDLE1BQ25DLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUNsRSxDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO0FBQUUsWUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUNuRixRQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3hELEtBQUMsQ0FDSixDQUFDO0FBRUYsSUFBQSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksU0FBUztRQUN4QixRQUNJakMsSUFBQ21DLEdBQVEsRUFBQSxJQUFBO0FBQ0wsWUFBQW5DLEdBQUEsQ0FBQyxRQUFRLEVBQUEsSUFBQSxFQUFBLFlBQUEsQ0FBc0IsQ0FDeEIsRUFDYjtBQUNELFNBQUEsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLE9BQU87UUFDM0IsUUFDSUEsSUFBQ21DLEdBQVEsRUFBQSxJQUFBO1lBQ0osR0FBRztBQUNKLFlBQUFuQyxHQUFBLENBQUMsUUFBUSxFQUFBLElBQUE7O2dCQUFZLEtBQUssQ0FBQyxLQUFLLENBQVk7WUFBQyxHQUFHLENBQ3pDLEVBQ2I7QUFFTixJQUFBLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0FBQzdELFFBQUEsT0FBT0EsSUFBQyxZQUFZLEVBQUEsRUFBQyxPQUFPLEVBQUMsOENBQThDLEdBQUcsQ0FBQztBQUVuRixJQUFBLE9BQU9BLEdBQUMsQ0FBQSxZQUFZLEVBQUMsRUFBQSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxHQUFJLENBQUM7QUFDeEUsQ0FBQztTQUVlLGNBQWMsQ0FBQyxJQUFrQixFQUFFLEtBQVksRUFBRSxVQUFrQixFQUFBO0FBQy9FLElBQUEsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUVBLElBQUMsUUFBUSxFQUFBLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7U0FFZSxtQkFBbUIsQ0FBQyxJQUFrQixFQUFFLFFBQW1CLEVBQUUsVUFBa0IsRUFBQTtBQUMzRixJQUFBLE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFQSxJQUFDLFlBQVksRUFBQSxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQSxDQUFJLENBQUMsQ0FBQztBQUM5Rjs7QUM5REE7QUFDQSxTQUFTLFdBQVcsQ0FBQyxLQUF5QixFQUFBO0lBQzFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBR2lDLEdBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNqRCxPQUFPLFFBQVEsQ0FBQyxlQUFlLEdBQUdqQyxHQUFBLENBQUEsTUFBQSxFQUFBLEVBQU0sS0FBSyxFQUFDLHFCQUFxQixJQUFFLEtBQUssQ0FBQyxNQUFNLENBQVEsR0FBR0EsR0FBQSxDQUFDbUMsR0FBUSxFQUFBLElBQUEsQ0FBWSxDQUFDO0FBQ3RILENBQUM7QUFFRDtBQUNNLFNBQVUsYUFBYSxDQUFDLEVBQzFCLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxHQUtiLEVBQUE7SUFDRyxJQUFJLFFBQVEsR0FBR0YsR0FBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUVwRCxRQUNJakMsSUFBQ21DLEdBQVEsRUFBQSxJQUFBO1FBQ0xuQyxHQUFPLENBQUEsT0FBQSxFQUFBLEVBQUEsS0FBSyxFQUFDLDJCQUEyQixFQUFBO1lBQ3BDQSxHQUFPLENBQUEsT0FBQSxFQUFBLEVBQUEsS0FBSyxFQUFDLGtCQUFrQixFQUFBO0FBQzNCLGdCQUFBQSxHQUFBLENBQUEsSUFBQSxFQUFBLEVBQUksS0FBSyxFQUFDLHNCQUFzQixJQUMzQixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssTUFDekJBLEdBQUksQ0FBQSxJQUFBLEVBQUEsRUFBQSxLQUFLLEVBQUMsZUFBZSxFQUFBO29CQUNyQkEsR0FBQyxDQUFBLFFBQVEsSUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUksQ0FBQTtBQUNyRCxvQkFBQSxLQUFLLElBQUksQ0FBQyxJQUFJQSxHQUFDLENBQUEsV0FBVyxJQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFJLENBQUEsQ0FDcEQsQ0FDUixDQUFDLENBQ0QsQ0FDRDtZQUNSQSxHQUFPLENBQUEsT0FBQSxFQUFBLEVBQUEsS0FBSyxFQUFDLGtCQUFrQixFQUFBLEVBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUNYQSxHQUFBLENBQUEsSUFBQSxFQUFBLElBQUEsRUFDSyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sS0FDWkEsR0FBQSxDQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0ksZ0JBQUFBLEdBQUEsQ0FBQyxHQUFHLEVBQUMsRUFBQSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUEsQ0FBSSxDQUM5QyxDQUNSLENBQUMsQ0FDRCxDQUNSLENBQUMsQ0FDRSxDQUNKO1FBQ1AsUUFBUSxDQUFDLGlCQUFpQixJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUM3Q0EsSUFBQyxZQUFZLEVBQUEsRUFBQyxPQUFPLEVBQUMsK0NBQStDLEdBQUcsQ0FDM0UsQ0FDTSxFQUNiO0FBQ04sQ0FBQztBQU9EO1NBQ2dCLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQXdDLEVBQUE7QUFDakYsSUFBQSxJQUFJLE9BQU8sR0FBR2lDLEdBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUUxQyxJQUFBLElBQUksS0FBSyxHQUFHLG1CQUFtQixDQUMzQixPQUFPLENBQUMsU0FBUyxFQUNqQixPQUFPLENBQUMsR0FBRyxFQUNYLE9BQU8sQ0FBQyxRQUFRLEVBQ2hCLE9BQU8sQ0FBQyxLQUFLLEVBQ2IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQ3BCLFlBQVc7UUFDUCxJQUFJLE1BQU0sR0FBRyxNQUFNLG1CQUFtQixDQUFDLE1BQ25DLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUNuRSxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO1lBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDdkYsS0FBQyxDQUNKLENBQUM7QUFFRixJQUFBLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxTQUFTO1FBQ3hCLFFBQ0lqQyxJQUFDbUMsR0FBUSxFQUFBLElBQUE7QUFDTCxZQUFBbkMsR0FBQSxDQUFDLFFBQVEsRUFBQSxJQUFBLEVBQUEsWUFBQSxDQUFzQixDQUN4QixFQUNiO0FBQ0QsU0FBQSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksT0FBTztRQUMzQixRQUNJQSxJQUFDbUMsR0FBUSxFQUFBLElBQUE7WUFDSixHQUFHO0FBQ0osWUFBQW5DLEdBQUEsQ0FBQyxRQUFRLEVBQUEsSUFBQTs7Z0JBQVksS0FBSyxDQUFDLEtBQUssQ0FBWTtZQUFDLEdBQUcsQ0FDekMsRUFDYjtBQUVOLElBQUEsT0FBT0EsSUFBQyxhQUFhLEVBQUEsRUFBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxHQUFJLENBQUM7QUFDckcsQ0FBQztTQUVlLGVBQWUsQ0FBQyxJQUFrQixFQUFFLEtBQVksRUFBRSxVQUFrQixFQUFBO0FBQ2hGLElBQUEsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUVBLElBQUMsU0FBUyxFQUFBLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3hGLENBQUM7QUFFSyxTQUFVLG9CQUFvQixDQUNoQyxJQUFrQixFQUNsQixRQUFrQixFQUNsQixNQUFtQixFQUNuQixVQUFrQixFQUFBO0lBRWxCLE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFQSxHQUFDLENBQUEsYUFBYSxJQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFJLENBQUEsQ0FBQyxDQUFDO0FBQ2xIOztBQ2pHQTtBQUNNLElBQVcsV0FBVyxDQVEzQjtBQVJELENBQUEsVUFBaUIsV0FBVyxFQUFBO0FBQ3hCLElBQUEsU0FBZ0IsS0FBSyxDQUFDLElBQVksRUFBRSxLQUFZLEVBQUE7QUFDNUMsUUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBZ0IsQ0FBQztLQUN4QztBQUZlLElBQUEsV0FBQSxDQUFBLEtBQUssUUFFcEIsQ0FBQTtBQUVELElBQUEsU0FBZ0IsTUFBTSxDQUFDLEtBQVksRUFBRSxHQUErQixFQUFBO0FBQ2hFLFFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUM7S0FDcEM7QUFGZSxJQUFBLFdBQUEsQ0FBQSxNQUFNLFNBRXJCLENBQUE7QUFDTCxDQUFDLEVBUmdCLFdBQVcsS0FBWCxXQUFXLEdBUTNCLEVBQUEsQ0FBQSxDQUFBOztBQ1lEO0FBQ00sU0FBVSxVQUFVLENBQUksSUFBaUIsRUFBQTtJQUMzQyxPQUFPdkIsZ0NBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEtBQUk7QUFDakMsUUFBQSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSTtZQUNoQixJQUFJLE1BQU0sR0FBSSxJQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07QUFBRSxnQkFBQSxPQUFPLE1BQU0sQ0FBQztBQUVsQyxZQUFBLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEcsU0FBQyxDQUFDO0FBQ04sS0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7QUFDQSxTQUFTLGFBQWEsQ0FBQyxJQUFZLEVBQUE7QUFDL0IsSUFBQSxPQUFPLElBQUk7U0FDTixLQUFLLENBQUMsU0FBUyxDQUFDO1NBQ2hCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2xCLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBRUQ7QUFDTyxNQUFNLGNBQWMsR0FBR0Msd0NBQWdCLENBQXFCOztBQUUvRCxJQUFBLFNBQVMsRUFBRSxDQUFDLElBQ1JULDZCQUFLLENBQVNVLGdDQUFRLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUMvQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQWUsQ0FBQztTQUMxQyxJQUFJLENBQUMscURBQXFELENBQUM7QUFDcEUsSUFBQSxrQkFBa0IsRUFBRSxDQUFDLElBQ2pCTCxnQ0FBUSxDQUNKLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDSCxvQ0FBWSxDQUFDLEVBQ25DUSxnQ0FBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQ1Isb0NBQVksQ0FBQyxFQUNsQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQzNDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQ3pEO0FBQ0wsSUFBQSxVQUFVLEVBQUUsQ0FBQyxJQUNURiw2QkFBSyxDQUNELENBQUMsQ0FBQyxrQkFBa0IsRUFDcEIsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUNyRztBQUNMLElBQUEsU0FBUyxFQUFFLENBQUMsSUFDUkssZ0NBQVEsQ0FDSixVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQ0UsdUNBQWUsQ0FBQyxFQUN0Q0csZ0NBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDcEQsQ0FBQyxLQUFLLEVBQUUsR0FBRyxLQUFJO1FBQ1gsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsV0FBVyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyRSxJQUFJLFNBQVMsSUFBSSxNQUFNO1lBQUUsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUNsRCxJQUFJLFNBQVMsSUFBSSxLQUFLO1lBQUUsU0FBUyxHQUFHLFdBQVcsQ0FBQztRQUNoRCxPQUFPO0FBQ0gsWUFBQSxLQUFLLEVBQUUsS0FBSztBQUNaLFlBQUEsU0FBUyxFQUFFLFNBQXVDO1NBQ3JELENBQUM7QUFDTixLQUFDLENBQ0o7QUFFTCxJQUFBLFlBQVksRUFBRSxDQUFDLElBQ1gsQ0FBQyxDQUFDLFNBQVM7QUFDTixTQUFBLElBQUksQ0FBQ1Isb0NBQVksQ0FBQztTQUNsQixLQUFLLENBQUMsS0FBSyxJQUFHO0FBQ1gsUUFBQSxRQUFRLEtBQUs7QUFDVCxZQUFBLEtBQUssT0FBTztnQkFDUixPQUFPRyxnQ0FBUSxDQUNYSyxnQ0FBUSxDQUFDLGVBQWUsQ0FBQztBQUNwQixxQkFBQSxJQUFJLENBQUNILHVDQUFlLENBQUM7QUFDckIscUJBQUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUNka0UsK0JBQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFOUQsZ0NBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUNKLHVDQUFlLENBQUMsQ0FBQyxFQUMxRCxDQUFDLFNBQVMsRUFBRSxNQUFNLEtBQUk7QUFDbEIsb0JBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBaUIsQ0FBQztBQUNuRixpQkFBQyxDQUNKLENBQUM7QUFDTixZQUFBLEtBQUssTUFBTTtnQkFDUCxPQUFPRixnQ0FBUSxDQUNYSyxnQ0FBUSxDQUFDLGVBQWUsQ0FBQztBQUNwQixxQkFBQSxJQUFJLENBQUNILHVDQUFlLENBQUM7QUFDckIscUJBQUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUNkLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUMxQixDQUFDLFNBQVMsRUFBRSxNQUFNLEtBQUk7b0JBQ2xCLE9BQU87QUFDSCx3QkFBQSxJQUFJLEVBQUUsTUFBTTtBQUNaLHdCQUFBLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUztBQUNsRCx3QkFBQSxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDO3FCQUNqQixDQUFDO0FBQ3JCLGlCQUFDLENBQ0osQ0FBQztBQUNOLFlBQUEsS0FBSyxNQUFNO2dCQUNQLE9BQU9NLGlDQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFpQixDQUFDLENBQUM7QUFDdEQsWUFBQSxLQUFLLFVBQVU7Z0JBQ1gsT0FBT1IsZ0NBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssSUFBRztvQkFDbEMsT0FBTztBQUNILHdCQUFBLElBQUksRUFBRSxVQUFVO0FBQ2hCLHdCQUFBLE1BQU0sRUFBRSxJQUFJO3dCQUNaLEtBQUs7cUJBQ08sQ0FBQztBQUNyQixpQkFBQyxDQUFDLENBQUM7QUFDUCxZQUFBO2dCQUNJLE9BQU9TLDhCQUFNLENBQUMsNEJBQTRCLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQzNELFNBQUE7QUFDTCxLQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsbUNBQW1DLENBQUM7QUFDbEQsSUFBQSxVQUFVLEVBQUUsQ0FBQyxJQUFJVCxnQ0FBUSxDQUFDSyxnQ0FBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFUixvQ0FBWSxFQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sS0FBSyxNQUFNLENBQUM7QUFDekcsSUFBQSxXQUFXLEVBQUUsQ0FBQyxJQUNWRyxnQ0FBUSxDQUFDSyxnQ0FBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFUixvQ0FBWSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssS0FBSTtRQUM3RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFlLENBQUM7QUFDekQsS0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ2pDLFlBQVksRUFBRSxDQUFDLElBQ1hHLGdDQUFRLENBQ0pLLGdDQUFRLENBQUMsT0FBTyxDQUFDLEVBQ2pCUixvQ0FBWSxFQUNaLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDUyxnQ0FBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQ0osdUNBQWUsQ0FBQyxDQUFDLEVBQ3ZELENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEtBQUk7QUFDakIsUUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQWdCLENBQUM7QUFDbEQsS0FBQyxDQUNKLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO0FBQ25DLElBQUEsV0FBVyxFQUFFLENBQUMsSUFDVkYsZ0NBQVEsQ0FBQ0ssZ0NBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRVIsb0NBQVksRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEtBQUk7UUFDOUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZSxDQUFDO0FBQ3pELEtBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7QUFDNUIsSUFBQSxhQUFhLEVBQUUsQ0FBQyxJQUNaRyxnQ0FBUSxDQUFDSyxnQ0FBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQ1Isb0NBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxLQUFJO0FBQ3pFLFFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFpQixDQUFDO0FBQ3JELEtBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQztBQUMxQyxJQUFBLGFBQWEsRUFBRSxDQUFDLElBQ1pHLGdDQUFRLENBQUNLLGdDQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDUixvQ0FBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEtBQUk7QUFDMUUsUUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQWUsQ0FBQztBQUNqRCxLQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUM7O0FBRTNDLElBQUEsTUFBTSxFQUFFLENBQUMsSUFBSUYsNkJBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUNoSCxLQUFLLEVBQUUsQ0FBQyxJQUNKSyxnQ0FBUSxDQUNKLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDRSx1Q0FBZSxDQUFDLEVBQ3BDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDQSx1Q0FBZSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUM1QyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQ0EsdUNBQWUsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUNyQyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxLQUFJO1FBQ3RCLE9BQU87WUFDSCxNQUFNO1lBQ04sTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN2RCxZQUFBLFVBQVUsRUFBRSxPQUFPO0FBQ25CLFlBQUEsUUFBUSxFQUFFLHNCQUFzQjtTQUMxQixDQUFDO0FBQ2YsS0FBQyxDQUNKO0FBQ1IsQ0FBQSxDQUFDLENBQUM7QUFFSDs7O0FBR0c7QUFDRyxTQUFVLFVBQVUsQ0FBQyxJQUFZLEVBQUE7SUFDbkMsSUFBSTtRQUNBLElBQUksS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hELFFBQUEsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLEtBQUE7QUFBQyxJQUFBLE9BQU8sS0FBSyxFQUFFO1FBQ1osT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNyQyxLQUFBO0FBQ0w7O0FDbk1BLFNBQVMsSUFBSSxHQUFHLEdBQUc7QUFDbkIsU0FBUyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUMxQjtBQUNBLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxHQUFHO0FBQ3ZCLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QixJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQztBQUNELFNBQVMsVUFBVSxDQUFDLEtBQUssRUFBRTtBQUMzQixJQUFJLE9BQU8sS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDO0FBQ2xGLENBQUM7QUFDRCxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUU7QUFDakIsSUFBSSxPQUFPLEVBQUUsRUFBRSxDQUFDO0FBQ2hCLENBQUM7QUFDRCxTQUFTLFlBQVksR0FBRztBQUN4QixJQUFJLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBQ0QsU0FBUyxPQUFPLENBQUMsR0FBRyxFQUFFO0FBQ3RCLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBQ0QsU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFO0FBQzVCLElBQUksT0FBTyxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUM7QUFDdkMsQ0FBQztBQUNELFNBQVMsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDOUIsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsS0FBSyxPQUFPLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQztBQUNsRyxDQUFDO0FBQ0QsU0FBUyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN6QixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUNELFNBQVMsUUFBUSxDQUFDLEdBQUcsRUFBRTtBQUN2QixJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFDRCxTQUFTLFdBQVcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7QUFDbkQsSUFBSSxJQUFJLFVBQVUsRUFBRTtBQUNwQixRQUFRLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFLFFBQVEsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtBQUN4RCxJQUFJLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7QUFDOUIsVUFBVSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0QsVUFBVSxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ3RCLENBQUM7QUFDRCxTQUFTLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtBQUMxRCxJQUFJLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtBQUM3QixRQUFRLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM5QyxRQUFRLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUU7QUFDekMsWUFBWSxPQUFPLElBQUksQ0FBQztBQUN4QixTQUFTO0FBQ1QsUUFBUSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtBQUN0QyxZQUFZLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUM5QixZQUFZLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BFLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzdDLGdCQUFnQixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQsYUFBYTtBQUNiLFlBQVksT0FBTyxNQUFNLENBQUM7QUFDMUIsU0FBUztBQUNULFFBQVEsT0FBTyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUNwQyxLQUFLO0FBQ0wsSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDekIsQ0FBQztBQUNELFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUU7QUFDM0csSUFBSSxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2hHLElBQUksSUFBSSxZQUFZLEVBQUU7QUFDdEIsUUFBUSxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2xHLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDM0MsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLGFBQWEsQ0FBQyxLQUFLLEVBQUU7QUFDOUIsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQztBQUN0QyxDQUFDO0FBQ0Q7QUFDQSxTQUFTLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBQzlCLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBQ0QsU0FBUyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7QUFDdEMsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUNELFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRTtBQUN0QixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFDRCxTQUFTLFlBQVksQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFO0FBQzdDLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuRCxRQUFRLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN6QixZQUFZLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDdkIsSUFBSSxPQUFPLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUNELFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRTtBQUMzQixJQUFJLE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBQ0QsU0FBUyxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ3BCLElBQUksT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFDRCxTQUFTLEtBQUssR0FBRztBQUNqQixJQUFJLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFDRCxTQUFTLEtBQUssR0FBRztBQUNqQixJQUFJLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLENBQUM7QUFDRCxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDL0MsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRCxJQUFJLE9BQU8sTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBQ0QsU0FBUyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7QUFDdEMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJO0FBQ3JCLFFBQVEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN4QyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLO0FBQ25ELFFBQVEsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUNELFNBQVMsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7QUFDMUM7QUFDQSxJQUFJLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekUsSUFBSSxLQUFLLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTtBQUNsQyxRQUFRLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRTtBQUNyQyxZQUFZLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEMsU0FBUztBQUNULGFBQWEsSUFBSSxHQUFHLEtBQUssT0FBTyxFQUFFO0FBQ2xDLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pELFNBQVM7QUFDVCxhQUFhLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtBQUNwQyxZQUFZLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRCxTQUFTO0FBQ1QsYUFBYSxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFO0FBQzNELFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4QyxTQUFTO0FBQ1QsYUFBYTtBQUNiLFlBQVksSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0MsU0FBUztBQUNULEtBQUs7QUFDTCxDQUFDO0FBQ0QsU0FBUyxRQUFRLENBQUMsT0FBTyxFQUFFO0FBQzNCLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBQ0QsU0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtBQUM5QixJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUk7QUFDL0IsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN6QixDQUFDO0FBQ0QsU0FBUyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7QUFDN0MsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUNEO0FBQ0EsSUFBSSxpQkFBaUIsQ0FBQztBQUN0QixTQUFTLHFCQUFxQixDQUFDLFNBQVMsRUFBRTtBQUMxQyxJQUFJLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztBQUNsQyxDQUFDO0FBQ0QsU0FBUyxxQkFBcUIsR0FBRztBQUNqQyxJQUFJLElBQUksQ0FBQyxpQkFBaUI7QUFDMUIsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7QUFDNUUsSUFBSSxPQUFPLGlCQUFpQixDQUFDO0FBQzdCLENBQUM7QUFDRDtBQUNBLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBQzVCLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDO0FBQzdCLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBQzVCLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUMzQyxJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQztBQUM3QixTQUFTLGVBQWUsR0FBRztBQUMzQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtBQUMzQixRQUFRLGdCQUFnQixHQUFHLElBQUksQ0FBQztBQUNoQyxRQUFRLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQyxLQUFLO0FBQ0wsQ0FBQztBQUNELFNBQVMsbUJBQW1CLENBQUMsRUFBRSxFQUFFO0FBQ2pDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFDRCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDckIsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNqQyxTQUFTLEtBQUssR0FBRztBQUNqQixJQUFJLElBQUksUUFBUTtBQUNoQixRQUFRLE9BQU87QUFDZixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDcEIsSUFBSSxHQUFHO0FBQ1A7QUFDQTtBQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzdELFlBQVksTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQsWUFBWSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QyxZQUFZLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakMsU0FBUztBQUNULFFBQVEscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEMsUUFBUSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLFFBQVEsT0FBTyxpQkFBaUIsQ0FBQyxNQUFNO0FBQ3ZDLFlBQVksaUJBQWlCLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUN0QztBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUM3RCxZQUFZLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pELFlBQVksSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDL0M7QUFDQSxnQkFBZ0IsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM3QyxnQkFBZ0IsUUFBUSxFQUFFLENBQUM7QUFDM0IsYUFBYTtBQUNiLFNBQVM7QUFDVCxRQUFRLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDcEMsS0FBSyxRQUFRLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtBQUN0QyxJQUFJLE9BQU8sZUFBZSxDQUFDLE1BQU0sRUFBRTtBQUNuQyxRQUFRLGVBQWUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ2hDLEtBQUs7QUFDTCxJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQztBQUM3QixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDckIsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDM0IsQ0FBQztBQUNELFNBQVMsTUFBTSxDQUFDLEVBQUUsRUFBRTtBQUNwQixJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7QUFDOUIsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDcEIsUUFBUSxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ2xDLFFBQVEsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztBQUMvQixRQUFRLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLFFBQVEsRUFBRSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BELFFBQVEsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUNyRCxLQUFLO0FBQ0wsQ0FBQztBQUNELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDM0IsSUFBSSxNQUFNLENBQUM7QUFDWCxTQUFTLFlBQVksR0FBRztBQUN4QixJQUFJLE1BQU0sR0FBRztBQUNiLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDWixRQUFRLENBQUMsRUFBRSxFQUFFO0FBQ2IsUUFBUSxDQUFDLEVBQUUsTUFBTTtBQUNqQixLQUFLLENBQUM7QUFDTixDQUFDO0FBQ0QsU0FBUyxZQUFZLEdBQUc7QUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtBQUNuQixRQUFRLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsS0FBSztBQUNMLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUNELFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDckMsSUFBSSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQzFCLFFBQVEsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDeEQsSUFBSSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQzFCLFFBQVEsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztBQUMvQixZQUFZLE9BQU87QUFDbkIsUUFBUSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTTtBQUM1QixZQUFZLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkMsWUFBWSxJQUFJLFFBQVEsRUFBRTtBQUMxQixnQkFBZ0IsSUFBSSxNQUFNO0FBQzFCLG9CQUFvQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLGdCQUFnQixRQUFRLEVBQUUsQ0FBQztBQUMzQixhQUFhO0FBQ2IsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsS0FBSztBQUNMLENBQUM7QUFDRDtBQUNBLFNBQVMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDdkMsSUFBSSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNsQyxJQUFJLFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUM3QyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLO0FBQ2hDLFlBQVksT0FBTztBQUNuQixRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQzlCLFFBQVEsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNqQyxRQUFRLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtBQUMvQixZQUFZLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDMUMsWUFBWSxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ25DLFNBQVM7QUFDVCxRQUFRLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQy9ELFFBQVEsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBQ2hDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3hCLFlBQVksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQzdCLGdCQUFnQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUs7QUFDbEQsb0JBQW9CLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxLQUFLLEVBQUU7QUFDOUMsd0JBQXdCLFlBQVksRUFBRSxDQUFDO0FBQ3ZDLHdCQUF3QixjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTTtBQUMxRCw0QkFBNEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRTtBQUMxRCxnQ0FBZ0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDdEQsNkJBQTZCO0FBQzdCLHlCQUF5QixDQUFDLENBQUM7QUFDM0Isd0JBQXdCLFlBQVksRUFBRSxDQUFDO0FBQ3ZDLHFCQUFxQjtBQUNyQixpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CLGFBQWE7QUFDYixpQkFBaUI7QUFDakIsZ0JBQWdCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLGFBQWE7QUFDYixZQUFZLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN0QixZQUFZLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEMsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0MsWUFBWSxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQy9CLFNBQVM7QUFDVCxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzNCLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTTtBQUN2QixZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3ZDLFFBQVEsSUFBSSxXQUFXLEVBQUU7QUFDekIsWUFBWSxLQUFLLEVBQUUsQ0FBQztBQUNwQixTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDN0IsUUFBUSxNQUFNLGlCQUFpQixHQUFHLHFCQUFxQixFQUFFLENBQUM7QUFDMUQsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSTtBQUM5QixZQUFZLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDckQsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwRCxZQUFZLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLFNBQVMsRUFBRSxLQUFLLElBQUk7QUFDcEIsWUFBWSxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3JELFlBQVksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckQsWUFBWSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ2hDLGdCQUFnQixNQUFNLEtBQUssQ0FBQztBQUM1QixhQUFhO0FBQ2IsU0FBUyxDQUFDLENBQUM7QUFDWDtBQUNBLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDM0MsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQyxZQUFZLE9BQU8sSUFBSSxDQUFDO0FBQ3hCLFNBQVM7QUFDVCxLQUFLO0FBQ0wsU0FBUztBQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDeEMsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN0RCxZQUFZLE9BQU8sSUFBSSxDQUFDO0FBQ3hCLFNBQVM7QUFDVCxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQ2hDLEtBQUs7QUFDTCxDQUFDO0FBQ0QsU0FBUyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQ2hELElBQUksY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU07QUFDdEMsUUFBUSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUFDRCxTQUFTLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7QUFDeEksSUFBSSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQzlCLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUN4QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNkLElBQUksTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQzNCLElBQUksT0FBTyxDQUFDLEVBQUU7QUFDZCxRQUFRLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLElBQUksTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQzFCLElBQUksTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNqQyxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1YsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFO0FBQ2hCLFFBQVEsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEQsUUFBUSxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdkMsUUFBUSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRTtBQUNwQixZQUFZLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDdEQsWUFBWSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdEIsU0FBUztBQUNULGFBQWEsSUFBSSxPQUFPLEVBQUU7QUFDMUIsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0QyxTQUFTO0FBQ1QsUUFBUSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDbkQsUUFBUSxJQUFJLEdBQUcsSUFBSSxXQUFXO0FBQzlCLFlBQVksTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RCxLQUFLO0FBQ0wsSUFBSSxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLElBQUksTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUMvQixJQUFJLFNBQVMsTUFBTSxDQUFDLEtBQUssRUFBRTtBQUMzQixRQUFRLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM1QixRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyQyxRQUFRLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQzNCLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDWixLQUFLO0FBQ0wsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkIsUUFBUSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVDLFFBQVEsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxRQUFRLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFDdEMsUUFBUSxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO0FBQ3RDLFFBQVEsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFO0FBQ3JDO0FBQ0EsWUFBWSxJQUFJLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztBQUNuQyxZQUFZLENBQUMsRUFBRSxDQUFDO0FBQ2hCLFlBQVksQ0FBQyxFQUFFLENBQUM7QUFDaEIsU0FBUztBQUNULGFBQWEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDM0M7QUFDQSxZQUFZLE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkMsWUFBWSxDQUFDLEVBQUUsQ0FBQztBQUNoQixTQUFTO0FBQ1QsYUFBYSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ2pFLFlBQVksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzlCLFNBQVM7QUFDVCxhQUFhLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUN4QyxZQUFZLENBQUMsRUFBRSxDQUFDO0FBQ2hCLFNBQVM7QUFDVCxhQUFhLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQzVELFlBQVksUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNsQyxZQUFZLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM5QixTQUFTO0FBQ1QsYUFBYTtBQUNiLFlBQVksU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuQyxZQUFZLENBQUMsRUFBRSxDQUFDO0FBQ2hCLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFO0FBQ2hCLFFBQVEsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztBQUMxQyxZQUFZLE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMLElBQUksT0FBTyxDQUFDO0FBQ1osUUFBUSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLElBQUksT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFO0FBQzVDLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLElBQUksTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQzNCLElBQUksTUFBTSxhQUFhLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDekMsSUFBSSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQzFCLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRTtBQUNoQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2YsWUFBWSxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRTtBQUNqQyxnQkFBZ0IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDL0Isb0JBQW9CLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekMsYUFBYTtBQUNiLFlBQVksS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUU7QUFDakMsZ0JBQWdCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDekMsb0JBQW9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekMsb0JBQW9CLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0MsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUIsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFO0FBQ2pDLGdCQUFnQixhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUU7QUFDbkMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLE1BQU0sQ0FBQztBQUM1QixZQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDcEMsS0FBSztBQUNMLElBQUksT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUNELFNBQVMsaUJBQWlCLENBQUMsWUFBWSxFQUFFO0FBQ3pDLElBQUksT0FBTyxPQUFPLFlBQVksS0FBSyxRQUFRLElBQUksWUFBWSxLQUFLLElBQUksR0FBRyxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBQ3pGLENBQUM7QUFDRCxTQUFTLGdCQUFnQixDQUFDLEtBQUssRUFBRTtBQUNqQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdkIsQ0FBQztBQUNELFNBQVMsZUFBZSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRTtBQUNuRSxJQUFJLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDO0FBQzFFLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzNDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtBQUN4QjtBQUNBLFFBQVEsbUJBQW1CLENBQUMsTUFBTTtBQUNsQyxZQUFZLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3pFLFlBQVksSUFBSSxVQUFVLEVBQUU7QUFDNUIsZ0JBQWdCLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQztBQUNuRCxhQUFhO0FBQ2IsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3hDLGFBQWE7QUFDYixZQUFZLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUN2QyxTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTCxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBQ0QsU0FBUyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFO0FBQ2pELElBQUksTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQztBQUM1QixJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7QUFDOUIsUUFBUSxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQy9CLFFBQVEsRUFBRSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNoRDtBQUNBO0FBQ0EsUUFBUSxFQUFFLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzNDLFFBQVEsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDcEIsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFO0FBQ2xDLElBQUksSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUN0QyxRQUFRLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QyxRQUFRLGVBQWUsRUFBRSxDQUFDO0FBQzFCLFFBQVEsU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLEtBQUs7QUFDTCxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUNELFNBQVMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDN0YsSUFBSSxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDO0FBQy9DLElBQUkscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckMsSUFBSSxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsRUFBRSxHQUFHO0FBQzlCLFFBQVEsUUFBUSxFQUFFLElBQUk7QUFDdEIsUUFBUSxHQUFHLEVBQUUsSUFBSTtBQUNqQjtBQUNBLFFBQVEsS0FBSztBQUNiLFFBQVEsTUFBTSxFQUFFLElBQUk7QUFDcEIsUUFBUSxTQUFTO0FBQ2pCLFFBQVEsS0FBSyxFQUFFLFlBQVksRUFBRTtBQUM3QjtBQUNBLFFBQVEsUUFBUSxFQUFFLEVBQUU7QUFDcEIsUUFBUSxVQUFVLEVBQUUsRUFBRTtBQUN0QixRQUFRLGFBQWEsRUFBRSxFQUFFO0FBQ3pCLFFBQVEsYUFBYSxFQUFFLEVBQUU7QUFDekIsUUFBUSxZQUFZLEVBQUUsRUFBRTtBQUN4QixRQUFRLE9BQU8sRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUM3RTtBQUNBLFFBQVEsU0FBUyxFQUFFLFlBQVksRUFBRTtBQUNqQyxRQUFRLEtBQUs7QUFDYixRQUFRLFVBQVUsRUFBRSxLQUFLO0FBQ3pCLEtBQUssQ0FBQztBQUNOLElBQUksSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3RCLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxRQUFRO0FBQ3JCLFVBQVUsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEtBQUs7QUFDeEUsWUFBWSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDdEQsWUFBWSxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRTtBQUNuRSxnQkFBZ0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakQsb0JBQW9CLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkMsZ0JBQWdCLElBQUksS0FBSztBQUN6QixvQkFBb0IsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3QyxhQUFhO0FBQ2IsWUFBWSxPQUFPLEdBQUcsQ0FBQztBQUN2QixTQUFTLENBQUM7QUFDVixVQUFVLEVBQUUsQ0FBQztBQUNiLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2hCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUNqQixJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDOUI7QUFDQSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEdBQUcsZUFBZSxHQUFHLGVBQWUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3BFLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO0FBQ3hCLFFBQVEsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO0FBQzdCLFlBQVksTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNuRDtBQUNBLFlBQVksRUFBRSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRCxZQUFZLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEMsU0FBUztBQUNULGFBQWE7QUFDYjtBQUNBLFlBQVksRUFBRSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzNDLFNBQVM7QUFDVCxRQUFRLElBQUksT0FBTyxDQUFDLEtBQUs7QUFDekIsWUFBWSxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNqRCxRQUFRLGVBQWUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUMxRixRQUFRLEtBQUssRUFBRSxDQUFDO0FBQ2hCLEtBQUs7QUFDTCxJQUFJLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLE1BQU0sZUFBZSxDQUFDO0FBQ3RCLElBQUksUUFBUSxHQUFHO0FBQ2YsUUFBUSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkMsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUM3QixLQUFLO0FBQ0wsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUN4QixRQUFRLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEYsUUFBUSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDLFFBQVEsT0FBTyxNQUFNO0FBQ3JCLFlBQVksTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN0RCxZQUFZLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztBQUM1QixnQkFBZ0IsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0MsU0FBUyxDQUFDO0FBQ1YsS0FBSztBQUNMLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNsQixRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUM5QyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUN0QyxZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDaEMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7QUFDdkMsU0FBUztBQUNULEtBQUs7QUFDTCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXLEdBQUcsS0FBSyxFQUFFO0FBQy9DLElBQUksTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUMxRCxJQUFJLE9BQU8sQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBQ0QsSUFBSSxZQUFZLEdBQUcsVUFBVSxDQUFDO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLFNBQVMsU0FBUyxHQUFHO0FBQ3JCLENBQUMsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQztBQUNuQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsd1VBQXdVLENBQUM7QUFDOVYsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsbUJBQW1CLENBQUMsR0FBRyxFQUFFO0FBQ2xDLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDVCxDQUFDLElBQUksTUFBTSxDQUFDO0FBQ1osQ0FBQyxJQUFJLGVBQWUsQ0FBQztBQUNyQjtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLEdBQUcsTUFBTSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0IsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGVBQWUsR0FBRyxFQUFFLElBQUksYUFBYSxDQUFDLENBQUMsT0FBTyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQztBQUNwSCxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25DLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztBQUNwRCxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsUUFBUSxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2hCLEdBQUcsSUFBSSxLQUFLLGlCQUFpQixDQUFDLElBQUksZUFBZSxNQUFNLGVBQWUsR0FBRyxFQUFFLElBQUksYUFBYSxDQUFDLENBQUMsT0FBTyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsRUFBRTtBQUN0SixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3hDLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxLQUFLLDJCQUEyQixDQUFDLEVBQUU7QUFDMUMsSUFBSSxZQUFZLENBQUMsR0FBRyxFQUFFLFFBQVEsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRCxJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO0FBQ2hDLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDVCxDQUFDLElBQUksTUFBTSxDQUFDO0FBQ1osQ0FBQyxJQUFJLGVBQWUsQ0FBQztBQUNyQjtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLEdBQUcsTUFBTSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0IsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGVBQWUsR0FBRyxFQUFFLElBQUksYUFBYSxDQUFDLENBQUMsV0FBVyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQztBQUN4SCxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25DLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztBQUNwRCxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsUUFBUSxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2hCLEdBQUcsSUFBSSxLQUFLLGlCQUFpQixDQUFDLElBQUksZUFBZSxNQUFNLGVBQWUsR0FBRyxFQUFFLElBQUksYUFBYSxDQUFDLENBQUMsV0FBVyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsRUFBRTtBQUMxSixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3hDLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxLQUFLLDJCQUEyQixDQUFDLEVBQUU7QUFDMUMsSUFBSSxZQUFZLENBQUMsR0FBRyxFQUFFLFFBQVEsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRCxJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNoQyxDQUFDLElBQUksZUFBZSxDQUFDO0FBQ3JCO0FBQ0EsQ0FBQyxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDeEMsRUFBRSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8saUJBQWlCLENBQUM7QUFDcEQsRUFBRSxPQUFPLG1CQUFtQixDQUFDO0FBQzdCLEVBQUU7QUFDRjtBQUNBLENBQUMsSUFBSSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqRCxDQUFDLElBQUksUUFBUSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNoQixHQUFHLGVBQWUsR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUM3QixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0MsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xCLEdBQUcsSUFBSSxrQkFBa0IsTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRTtBQUN6RixJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNCLElBQUksTUFBTTtBQUNWLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixJQUFJLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QztBQUNBLElBQUksSUFBSSxRQUFRLEVBQUU7QUFDbEIsS0FBSyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDbEIsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDN0QsS0FBSztBQUNMLElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekIsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDMUMsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO0FBQ25ELENBQUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDbEMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzVCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUM1QjtBQUNBLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxPQUFPLElBQUk7QUFDM0IsRUFBRSxJQUFJLFdBQVcsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdFLEVBQUUsSUFBSSxVQUFVLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRSxFQUFFLElBQUksVUFBVSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUUsRUFBRSxDQUFDO0FBQ0g7QUFDQSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFDRDtBQUNBLE1BQU0sR0FBRyxTQUFTLGVBQWUsQ0FBQztBQUNsQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDdEIsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUNWLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUNwRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakgsRUFBRTtBQUNGLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxNQUFNLDBCQUEwQixHQUFHLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNqRCxNQUFNLDBCQUEwQixHQUFHLEdBQUcsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQy9ELE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakYsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLEtBQUssRUFBRSxRQUFRLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hGO0FBQ0E7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNoQyxDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxNQUFNLHFCQUFxQixjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDekQsQ0FBQyxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMscUJBQXFCLEVBQUUsR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0FBQzlHO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLElBQUksWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN0QyxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLElBQUksWUFBWSxFQUFFO0FBQ3JCLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbkMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2hCLEdBQUcsSUFBSSxZQUFZLEVBQUU7QUFDckIsSUFBSSxJQUFJLFlBQVksQ0FBQyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsRUFBRTtBQUNqRCxLQUFLLFdBQVcsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztBQUM5SSxLQUFLO0FBQ0wsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLElBQUksT0FBTyxFQUFFLE9BQU87QUFDdkIsR0FBRyxhQUFhLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxjQUFjLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQy9DLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO0FBQ2hDLENBQUMsSUFBSSxrQkFBa0IsQ0FBQztBQUN4QixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiO0FBQ0EsQ0FBQyxJQUFJLElBQUksR0FBRztBQUNaLEVBQUUsR0FBRztBQUNMLEVBQUUsT0FBTyxFQUFFLElBQUk7QUFDZixFQUFFLEtBQUssRUFBRSxJQUFJO0FBQ2IsRUFBRSxRQUFRLEVBQUUsS0FBSztBQUNqQixFQUFFLE9BQU8sRUFBRSxvQkFBb0I7QUFDL0IsRUFBRSxJQUFJLEVBQUUsaUJBQWlCO0FBQ3pCLEVBQUUsS0FBSyxFQUFFLGtCQUFrQjtBQUMzQixFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ1YsRUFBRSxNQUFNLEVBQUUsS0FBSztBQUNmLEVBQUUsQ0FBQztBQUNIO0FBQ0EsQ0FBQyxjQUFjLENBQUMsT0FBTyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JEO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLGtCQUFrQixHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDOUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztBQUM5QyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7QUFDcEQsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLGtCQUFrQixDQUFDO0FBQ3BDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRTtBQUNwQixHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUM7QUFDakIsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNsQjtBQUNBLEdBQUcsSUFBSSxLQUFLLGdCQUFnQixDQUFDLElBQUksT0FBTyxNQUFNLE9BQU8sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNO0FBQ3RILElBQUksTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2xDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDakMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkMsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLElBQUksT0FBTyxFQUFFLE9BQU87QUFDdkIsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzdCLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbEMsSUFBSSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFCLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUM3QyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNCLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDckIsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2YsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUU7QUFDakMsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNoQyxDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxNQUFNLHFCQUFxQixjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDekQsQ0FBQyxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMscUJBQXFCLEVBQUUsR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0FBQzVHO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLElBQUksWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN0QyxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLElBQUksWUFBWSxFQUFFO0FBQ3JCLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbkMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2hCLEdBQUcsSUFBSSxZQUFZLEVBQUU7QUFDckIsSUFBSSxJQUFJLFlBQVksQ0FBQyxDQUFDLElBQUksS0FBSyx5QkFBeUIsQ0FBQyxFQUFFO0FBQzNELEtBQUssV0FBVyxDQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxHQUFHLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0FBQzFJLEtBQUs7QUFDTCxJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLGNBQWMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkMsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDL0MsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUU7QUFDbkMsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDaEMsQ0FBQyxJQUFJLHdCQUF3QixDQUFDO0FBQzlCLENBQUMsSUFBSSxRQUFRLENBQUM7QUFDZCxDQUFDLElBQUksZUFBZSxDQUFDO0FBQ3JCLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBQ2xFLENBQUMsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ3RCO0FBQ0EsQ0FBQyxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDeEMsRUFBRSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3BDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDWCxFQUFFO0FBQ0Y7QUFDQSxDQUFDLHdCQUF3QixHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25ELENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkc7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2hCLEdBQUcsZUFBZSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQzdCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsU0FBUyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN6RCxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzNDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbEIsR0FBRyxJQUFJLG9CQUFvQixHQUFHLHdCQUF3QixDQUFDO0FBQ3ZELEdBQUcsd0JBQXdCLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckQ7QUFDQSxHQUFHLElBQUksd0JBQXdCLEtBQUssb0JBQW9CLEVBQUU7QUFDMUQsSUFBSSxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RELElBQUksTUFBTTtBQUNWLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkI7QUFDQSxJQUFJLGNBQWMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU07QUFDaEUsS0FBSyxTQUFTLENBQUMsb0JBQW9CLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDNUMsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkIsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDbkQ7QUFDQSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDbkIsS0FBSyxRQUFRLEdBQUcsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEdBQUcsaUJBQWlCLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2RyxLQUFLLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNsQixLQUFLLE1BQU07QUFDWCxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVCLEtBQUs7QUFDTDtBQUNBLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUM1RCxJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMzQixHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzVCLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDcEQsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDMUMsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO0FBQ25ELENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoRDtBQUNBLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUM1QjtBQUNBLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxPQUFPLElBQUk7QUFDM0IsRUFBRSxJQUFJLFVBQVUsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFFLEVBQUUsSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RSxFQUFFLENBQUM7QUFDSDtBQUNBLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUNEO0FBQ0EsTUFBTSxnQkFBZ0IsU0FBUyxlQUFlLENBQUM7QUFDL0MsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO0FBQ3RCLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDVixFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRixFQUFFO0FBQ0YsQ0FBQztBQUNEO0FBQ0EsU0FBUyxPQUFPLEdBQUc7QUFDbkIsSUFBSSxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFDRCxTQUFTLGFBQWEsQ0FBQyxDQUFDLEVBQUU7QUFDMUIsSUFBSSxPQUFPLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUM3QyxDQUFDO0FBQ0QsU0FBUyxhQUFhLENBQUMsR0FBRyxLQUFLLEVBQUU7QUFDakMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFDRCxTQUFTLFNBQVMsQ0FBQyxJQUFJLEVBQUU7QUFDekIsSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBQ0QsU0FBUyxjQUFjLENBQUMsSUFBSSxFQUFFO0FBQzlCLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsUUFBUSxDQUFDLGNBQWMsRUFBRSxHQUFHLEtBQUssRUFBRTtBQUM1QyxJQUFJLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUM1QyxJQUFJLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNyQixJQUFJLElBQUksSUFBSSxDQUFDO0FBQ2IsSUFBSSxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RSxJQUFJLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUMvQyxJQUFJLElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xFLElBQUksS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRTtBQUMxQyxRQUFRLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDNUIsWUFBWSxJQUFJLEdBQUc7QUFDbkIsZ0JBQWdCLElBQUksRUFBRSxFQUFFO0FBQ3hCLGdCQUFnQixPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtBQUNwQyxhQUFhLENBQUM7QUFDZCxZQUFZLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0IsU0FBUztBQUNULFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0IsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0MsS0FBSztBQUNMLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLFNBQVMsU0FBUyxHQUFHO0FBQ3JCLENBQUMsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQztBQUNsQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsb3hCQUFveEIsQ0FBQztBQUMxeUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBQ0Q7QUFDQSxTQUFTLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO0FBQzFDLENBQUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQy9CLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixDQUFDLE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7QUFDbEMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNULENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNwQjtBQUNBLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3ZELEVBQUUsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RCxFQUFFO0FBQ0Y7QUFDQSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckMsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN4QyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDaEIsR0FBRyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssZ0JBQWdCLEdBQUc7QUFDaEQsS0FBSyxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLGlCQUFpQixTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0UsS0FBSyxFQUFFLENBQUM7QUFDUjtBQUNBLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6QixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUMsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNyQyxHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtBQUNwQyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQ1YsQ0FBQyxJQUFJLFFBQVEsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNqRCxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDVixDQUFDLElBQUksZ0JBQWdCLENBQUM7QUFDdEIsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxJQUFJLFVBQVUsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDM0MsQ0FBQyxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDdEI7QUFDQSxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDaEQsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9FLEVBQUU7QUFDRjtBQUNBLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNO0FBQzdELEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN4QixFQUFFLENBQUMsQ0FBQztBQUNKO0FBQ0EsQ0FBQyxJQUFJLFdBQVcsR0FBRztBQUNuQixFQUFFO0FBQ0YsR0FBRyxLQUFLLEVBQUUsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMzRSxHQUFHO0FBQ0gsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxJQUFJLEVBQUU7QUFDMUMsRUFBRSxDQUFDO0FBQ0g7QUFDQSxDQUFDLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNwQjtBQUNBLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNqRCxFQUFFLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELEVBQUU7QUFDRjtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2QixHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUNoQixHQUFHLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkQsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdkIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO0FBQ3RELEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNuQyxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNoRyxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDckcsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLE9BQU8sV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0MsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNoQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEIsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0QjtBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuRCxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pDLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQjtBQUNBLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNqQixJQUFJLE9BQU8sR0FBRztBQUNkLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWTtBQUN2QyxNQUFNLElBQUksV0FBVyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDL0ksTUFBTSxDQUFDO0FBQ1AsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZO0FBQzdDLE1BQU0sSUFBSSxXQUFXLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDdkssTUFBTSxDQUFDO0FBQ1AsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZO0FBQzdDLE1BQU0sSUFBSSxXQUFXLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM3SixNQUFNLENBQUM7QUFDUCxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztBQUNuQixJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDcEIsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBQ2pCLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssWUFBWSxDQUFDLEtBQUssUUFBUSxNQUFNLFFBQVEsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDOUg7QUFDQSxHQUFHLElBQUksS0FBSyxnQkFBZ0IsR0FBRyxFQUFFO0FBQ2pDLElBQUksVUFBVSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMxQyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQ1Y7QUFDQSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQy9DLEtBQUssTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5RDtBQUNBLEtBQUssSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDekIsTUFBTSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6QyxNQUFNLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkMsTUFBTSxNQUFNO0FBQ1osTUFBTSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdEQsTUFBTSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDekIsTUFBTSxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkMsTUFBTTtBQUNOLEtBQUs7QUFDTDtBQUNBLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkI7QUFDQSxJQUFJLEtBQUssQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNoRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNaLEtBQUs7QUFDTDtBQUNBLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUU7QUFDbkUsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtBQUNySyxJQUFJLEtBQUssZ0JBQWdCLEdBQUcsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO0FBQzFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDUDtBQUNBLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2hHLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNyRyxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDaEYsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QyxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2xELElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM3QztBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuRCxJQUFJLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDbkIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLEdBQUcsWUFBWSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN4QyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDbkIsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDcEIsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO0FBQ2hDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksZ0JBQWdCLENBQUM7QUFDdEIsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiO0FBQ0EsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDO0FBQ3pDLEdBQUcsS0FBSyxFQUFFO0FBQ1YsSUFBSSxRQUFRLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNqQyxJQUFJLE9BQU8sRUFBRTtBQUNiLEtBQUssT0FBTyxFQUFFO0FBQ2QsTUFBTSxxQkFBcUI7QUFDM0IsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDekMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssUUFBUSxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQzFDLE1BQU07QUFDTixLQUFLO0FBQ0wsSUFBSSxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUU7QUFDcEIsSUFBSTtBQUNKLEdBQUcsQ0FBQyxDQUFDO0FBQ0w7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QixHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsRCxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLEdBQUcsZUFBZSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvQyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xCLEdBQUcsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUM7QUFDdkMsR0FBRyxJQUFJLEtBQUssZ0JBQWdCLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQyxRQUFRLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekY7QUFDQSxHQUFHLElBQUksS0FBSyxtR0FBbUcsS0FBSyxFQUFFO0FBQ3RILElBQUksd0JBQXdCLENBQUMsT0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3RELElBQUk7QUFDSjtBQUNBLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDbkQsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RELEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN2RCxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDbkIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdCLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN2QyxHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDbkQ7QUFDQTtBQUNBLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUN4QixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDNUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzNCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUMzQixDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDakMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ3pCLENBQUMsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDekMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNyQyxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RTtBQUNBLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxPQUFPLElBQUk7QUFDM0IsRUFBRSxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlELEVBQUUsSUFBSSxVQUFVLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRSxFQUFFLElBQUksU0FBUyxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkUsRUFBRSxJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZFLEVBQUUsSUFBSSxlQUFlLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN6RixFQUFFLElBQUksT0FBTyxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakUsRUFBRSxJQUFJLGdCQUFnQixJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDNUYsRUFBRSxJQUFJLFlBQVksSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2hGLEVBQUUsQ0FBQztBQUNIO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxJQUFJO0FBQ04sRUFBRSxPQUFPO0FBQ1QsRUFBRSxPQUFPO0FBQ1QsRUFBRSxhQUFhO0FBQ2YsRUFBRSxLQUFLO0FBQ1AsRUFBRSxjQUFjO0FBQ2hCLEVBQUUsVUFBVTtBQUNaLEVBQUUsUUFBUTtBQUNWLEVBQUUsYUFBYTtBQUNmLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLE1BQU0sR0FBRyxTQUFTLGVBQWUsQ0FBQztBQUNsQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDdEIsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUNWLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUNuRTtBQUNBLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRTtBQUNoRSxHQUFHLElBQUksRUFBRSxDQUFDO0FBQ1YsR0FBRyxRQUFRLEVBQUUsQ0FBQztBQUNkLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDYixHQUFHLE9BQU8sRUFBRSxDQUFDO0FBQ2IsR0FBRyxhQUFhLEVBQUUsQ0FBQztBQUNuQixHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ1gsR0FBRyxjQUFjLEVBQUUsQ0FBQztBQUNwQixHQUFHLFVBQVUsRUFBRSxDQUFDO0FBQ2hCLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsRUFBRTtBQUNGLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxTQUFTLFNBQVMsR0FBRztBQUNyQixDQUFDLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QixDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsc0JBQXNCLENBQUM7QUFDbkMsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLHlVQUF5VSxDQUFDO0FBQy9WLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDaEMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNULENBQUMsSUFBSSxHQUFHLENBQUM7QUFDVCxDQUFDLElBQUksSUFBSSxDQUFDO0FBQ1YsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYjtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLEdBQUcsR0FBRyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QixHQUFHLElBQUksR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUIsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztBQUN0QyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLGdQQUFnUCxDQUFDLENBQUM7QUFDclEsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVCLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztBQUNwRCxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ3ZDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUN4QyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUM7QUFDOUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsV0FBVyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUM7QUFDaEUsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvQixHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDcEIsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JCO0FBQ0EsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO0FBQ2pCLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLFlBQVk7QUFDL0MsS0FBSyxJQUFJLFdBQVcsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNwRixLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0EsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ25CLElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDdEIsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBQ2pCO0FBQ0EsR0FBRyxJQUFJLEtBQUssZUFBZSxDQUFDLEVBQUU7QUFDOUIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxJQUFJO0FBQ0o7QUFDQSxHQUFHLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxFQUFFO0FBQ2hDLElBQUksWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUM7QUFDakUsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHLE9BQU8sRUFBRSxDQUFDO0FBQ2IsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO0FBQ25ELENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUMzQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDM0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzdCO0FBQ0E7QUFDQSxDQUFDLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0FBQ3BDO0FBQ0EsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE9BQU8sSUFBSTtBQUMzQixFQUFFLElBQUksU0FBUyxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkUsRUFBRSxJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZFLEVBQUUsSUFBSSxXQUFXLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3RSxFQUFFLENBQUM7QUFDSDtBQUNBLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFDRDtBQUNBLE1BQU0sS0FBSyxTQUFTLGVBQWUsQ0FBQztBQUNwQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDdEIsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUNWLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUNwRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0csRUFBRTtBQUNGLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxTQUFTLFNBQVMsR0FBRztBQUNyQixDQUFDLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QixDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsc0JBQXNCLENBQUM7QUFDbkMsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLHUwQkFBdTBCLENBQUM7QUFDNzFCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDaEMsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNWLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksS0FBSyxDQUFDO0FBQ1gsQ0FBQyxJQUFJLFFBQVEsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzdELENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLEtBQUssQ0FBQztBQUNYLENBQUMsSUFBSSxRQUFRLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM5RCxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDVixDQUFDLElBQUksTUFBTSxDQUFDO0FBQ1osQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDVixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLE1BQU0sQ0FBQztBQUNaLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiO0FBQ0EsQ0FBQyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUM7QUFDcEIsR0FBRyxLQUFLLEVBQUU7QUFDVixJQUFJLFNBQVMsRUFBRSxNQUFNO0FBQ3JCLElBQUksT0FBTyw4QkFBOEIsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvQyxJQUFJLE9BQU8sRUFBRSxnQkFBZ0I7QUFDN0IsSUFBSTtBQUNKLEdBQUcsQ0FBQyxDQUFDO0FBQ0w7QUFDQSxDQUFDLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQztBQUNwQixHQUFHLEtBQUssRUFBRTtBQUNWLElBQUksU0FBUyxFQUFFLE9BQU87QUFDdEIsSUFBSSxPQUFPLDhCQUE4QixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQy9DLElBQUksT0FBTyxFQUFFLFlBQVk7QUFDekIsSUFBSTtBQUNKLEdBQUcsQ0FBQyxDQUFDO0FBQ0w7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsR0FBRyxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2QixHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUNoQixHQUFHLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hCLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDeEMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDaEIsR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RELEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUM7QUFDaEQsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQy9DLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztBQUM3QyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLDZCQUE2QixDQUFDLENBQUM7QUFDdEQsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0FBQ25ELEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztBQUM3QyxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsV0FBVyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDaEMsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyQixHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckIsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xCLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyQixHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckIsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0QixHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNwQixHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEIsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCO0FBQ0EsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO0FBQ2pCLElBQUksT0FBTyxHQUFHO0FBQ2QsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZO0FBQ3JDLE1BQU0sSUFBSSxXQUFXLHlCQUF5QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzdHLE1BQU0sQ0FBQztBQUNQLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWTtBQUN2QyxNQUFNLElBQUksV0FBVyx5QkFBeUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM3RyxNQUFNLENBQUM7QUFDUCxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztBQUNuQixJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3RCLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztBQUNqQixHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLHNCQUFzQixDQUFDLEtBQUssUUFBUSxNQUFNLFFBQVEsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNwSixHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLHNCQUFzQixDQUFDLEtBQUssUUFBUSxNQUFNLFFBQVEsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNySixHQUFHLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUM3QixHQUFHLElBQUksS0FBSywrQkFBK0IsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxPQUFPLCtCQUErQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQy9CLEdBQUcsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzdCLEdBQUcsSUFBSSxLQUFLLCtCQUErQixDQUFDLEVBQUUsY0FBYyxDQUFDLE9BQU8sK0JBQStCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDL0IsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1QyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1QyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzdDLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzdDLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3QixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdCLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwQixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDbkQ7QUFDQSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDbEMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ3pCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ3ZDLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzNDLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzNDO0FBQ0E7QUFDQSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQ7QUFDQTtBQUNBLENBQUMsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDcEM7QUFDQSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxJQUFJO0FBQzNCLEVBQUUsSUFBSSxnQkFBZ0IsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQzVGLEVBQUUsSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqRSxFQUFFLElBQUkscUJBQXFCLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDM0csRUFBRSxJQUFJLHlCQUF5QixJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQ3ZILEVBQUUsSUFBSSx5QkFBeUIsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSx1QkFBdUIsR0FBRyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUN2SCxFQUFFLENBQUM7QUFDSDtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsY0FBYztBQUNoQixFQUFFLG1CQUFtQjtBQUNyQixFQUFFLHVCQUF1QjtBQUN6QixFQUFFLHVCQUF1QjtBQUN6QixFQUFFLGVBQWU7QUFDakIsRUFBRSxRQUFRO0FBQ1YsRUFBRSxLQUFLO0FBQ1AsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsTUFBTSxHQUFHLFNBQVMsZUFBZSxDQUFDO0FBQ2xDLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUN0QixFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ1YsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ3BFO0FBQ0EsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFO0FBQ3JFLEdBQUcsY0FBYyxFQUFFLENBQUM7QUFDcEIsR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUNYLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztBQUN6QixHQUFHLHVCQUF1QixFQUFFLENBQUM7QUFDN0IsR0FBRyx1QkFBdUIsRUFBRSxDQUFDO0FBQzdCLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsRUFBRTtBQUNGLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxTQUFTLFNBQVMsR0FBRztBQUNyQixDQUFDLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QixDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcscUJBQXFCLENBQUM7QUFDbEMsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLGd0QkFBZ3RCLENBQUM7QUFDdHVCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtBQUMxQyxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMvQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsbUJBQW1CLENBQUMsR0FBRyxFQUFFO0FBQ2xDLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDVCxDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQyxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDcEI7QUFDQSxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN2RCxFQUFFLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUNyQztBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JDLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDeEMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2hCLEdBQUcsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFLLGdCQUFnQixFQUFFO0FBQy9DLEtBQUssaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxpQkFBaUIsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9FLEtBQUssRUFBRSxDQUFDO0FBQ1I7QUFDQSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6QyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzFDLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDckMsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7QUFDbEMsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNWLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNWLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQztBQUN0QixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLElBQUksVUFBVSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMzQyxDQUFDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN0QjtBQUNBLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNoRCxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0UsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU07QUFDN0QsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLEVBQUUsQ0FBQyxDQUFDO0FBQ0o7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixHQUFHLEVBQUUsR0FBRyxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDaEIsR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3ZCLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztBQUN0RCxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixHQUFHLEVBQUUsSUFBSSxhQUFhLENBQUMsQ0FBQyxTQUFTLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0FBQ3hJLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3BHLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDaEMsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNwQixHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkQsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEI7QUFDQSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDakIsSUFBSSxPQUFPLEdBQUc7QUFDZCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVk7QUFDdkMsTUFBTSxJQUFJLFdBQVcsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQy9JLE1BQU0sQ0FBQztBQUNQLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWTtBQUM3QyxNQUFNLElBQUksV0FBVyxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZLLE1BQU0sQ0FBQztBQUNQLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWTtBQUM3QyxNQUFNLElBQUksV0FBVyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDN0osTUFBTSxDQUFDO0FBQ1AsS0FBSyxDQUFDO0FBQ047QUFDQSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbkIsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFO0FBQ3BCLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztBQUNqQixHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxlQUFlLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNFO0FBQ0EsR0FBRyxJQUFJLEtBQUssZ0JBQWdCLEVBQUUsRUFBRTtBQUNoQyxJQUFJLFVBQVUsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDMUMsSUFBSSxJQUFJLENBQUMsQ0FBQztBQUNWO0FBQ0EsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUMvQyxLQUFLLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUQ7QUFDQSxLQUFLLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3pCLE1BQU0sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekMsTUFBTSxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sTUFBTTtBQUNaLE1BQU0sV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3RELE1BQU0sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3pCLE1BQU0sYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QyxNQUFNLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25DLE1BQU07QUFDTixLQUFLO0FBQ0w7QUFDQSxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDaEUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDWixLQUFLO0FBQ0w7QUFDQSxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLGdCQUFnQixFQUFFLElBQUksZ0JBQWdCLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxJQUFJLGFBQWEsQ0FBQyxDQUFDLFNBQVMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUU7QUFDdEwsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzFDLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxLQUFLLDhDQUE4QyxFQUFFLEVBQUU7QUFDOUQsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxZQUFZLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckcsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLElBQUksT0FBTyxFQUFFLE9BQU87QUFDdkI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbEQsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdDO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3hDLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwQixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDaEMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQztBQUN0QixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2I7QUFDQSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQUM7QUFDekMsR0FBRyxLQUFLLEVBQUU7QUFDVixJQUFJLFFBQVEsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLElBQUksT0FBTyxFQUFFO0FBQ2IsS0FBSyxPQUFPLEVBQUU7QUFDZCxNQUFNLG1CQUFtQjtBQUN6QixNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUN6QyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxRQUFRLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDekMsTUFBTTtBQUNOLEtBQUs7QUFDTCxJQUFJLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRTtBQUNwQixJQUFJO0FBQ0osR0FBRyxDQUFDLENBQUM7QUFDTDtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLEdBQUcsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xELEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDdEMsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5QixHQUFHLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDL0MsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNsQixHQUFHLE1BQU0sd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0FBQ3ZDLEdBQUcsSUFBSSxLQUFLLGdCQUFnQixFQUFFLEVBQUUsd0JBQXdCLENBQUMsUUFBUSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hGO0FBQ0EsR0FBRyxJQUFJLEtBQUssa0dBQWtHLEtBQUssRUFBRTtBQUNySCxJQUFJLHdCQUF3QixDQUFDLE9BQU8sR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN0RCxJQUFJO0FBQ0o7QUFDQSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ25ELEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLElBQUksT0FBTyxFQUFFLE9BQU87QUFDdkIsR0FBRyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0RCxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkQsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QixHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDdkMsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO0FBQ25EO0FBQ0E7QUFDQSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDM0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ3hCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUM1QixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDM0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzNCLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNqQyxDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ3JDLENBQUMsSUFBSSxXQUFXLENBQUM7QUFDakIsQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkY7QUFDQSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxJQUFJO0FBQzNCLEVBQUUsSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RSxFQUFFLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUQsRUFBRSxJQUFJLFVBQVUsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFFLEVBQUUsSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RSxFQUFFLElBQUksU0FBUyxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkUsRUFBRSxJQUFJLGVBQWUsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3pGLEVBQUUsSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNoRixFQUFFLENBQUM7QUFDSDtBQUNBLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsTUFBTTtBQUMxQixFQUFFLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksQ0FBQyxFQUFFO0FBQ3BDLEdBQUcsWUFBWSxDQUFDLENBQUMsRUFBRSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdkQsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNIO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxPQUFPO0FBQ1QsRUFBRSxJQUFJO0FBQ04sRUFBRSxPQUFPO0FBQ1QsRUFBRSxPQUFPO0FBQ1QsRUFBRSxhQUFhO0FBQ2YsRUFBRSxVQUFVO0FBQ1osRUFBRSxRQUFRO0FBQ1YsRUFBRSxXQUFXO0FBQ2IsRUFBRSxhQUFhO0FBQ2YsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsTUFBTSxPQUFPLFNBQVMsZUFBZSxDQUFDO0FBQ3RDLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUN0QixFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ1YsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ25FO0FBQ0EsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFO0FBQ2hFLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDYixHQUFHLElBQUksRUFBRSxDQUFDO0FBQ1YsR0FBRyxRQUFRLEVBQUUsQ0FBQztBQUNkLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDYixHQUFHLE9BQU8sRUFBRSxDQUFDO0FBQ2IsR0FBRyxhQUFhLEVBQUUsQ0FBQztBQUNuQixHQUFHLFVBQVUsRUFBRSxDQUFDO0FBQ2hCLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsRUFBRTtBQUNGLENBQUM7QUFDRDtBQUNBLGVBQWUsZUFBZSxDQUFDLGdCQUFnQixFQUFFO0FBQ2pELElBQUksTUFBTSxJQUFJLEdBQUc7QUFDakIsUUFBUSxJQUFJLEVBQUUsRUFBRTtBQUNoQixRQUFRLE9BQU8sRUFBRSxFQUFFO0FBQ25CLFFBQVEsY0FBYyxFQUFFLEVBQUU7QUFDMUIsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN0RCxJQUFJLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLE1BQU07QUFDeEMsUUFBUSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzFELFFBQVEsY0FBYyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO0FBQzlFLFFBQVEsSUFBSSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNqRCxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNkLENBQUM7QUFDRCxTQUFTLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUU7QUFDbkQsSUFBSSxPQUFPLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkYsQ0FBQztBQUNELFNBQVMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRTtBQUNwRCxJQUFJLE9BQU8sZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRixDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsU0FBUyxPQUFPLEdBQUc7QUFDbkIsQ0FBQyxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLHFCQUFxQixDQUFDO0FBQ2xDLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyw0M0JBQTQzQixDQUFDO0FBQ2w1QixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFDRDtBQUNBLFNBQVMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7QUFDeEMsQ0FBQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDL0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsT0FBTyxTQUFTLENBQUM7QUFDbEIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtBQUMxQyxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMvQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDO0FBQ0Q7QUFDQSxTQUFTLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO0FBQzFDLENBQUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQy9CLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixDQUFDLE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUM7QUFDRDtBQUNBLFNBQVMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7QUFDMUMsQ0FBQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDL0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsT0FBTyxTQUFTLENBQUM7QUFDbEIsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNoQyxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ1Q7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLG1CQUFtQixDQUFDLEdBQUcsRUFBRTtBQUNsQyxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ1Q7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3ZDLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUNoQixHQUFHLElBQUksS0FBSyx3QkFBd0IsS0FBSyxFQUFFO0FBQzNDLElBQUksWUFBWSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNoQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1I7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QixHQUFHLEVBQUUsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0FBQ3hCLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDdEMsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0IsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7QUFDbEMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxPQUFPLGlCQUFpQixHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDUDtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyQixHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3RDLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDOUIsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2hCLEdBQUcsSUFBSSxLQUFLLGtCQUFrQixLQUFLLElBQUksT0FBTyxNQUFNLE9BQU8saUJBQWlCLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hILEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLGVBQWUsQ0FBQyxHQUFHLEVBQUU7QUFDOUIsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYjtBQUNBLENBQUMsTUFBTSxxQkFBcUIsR0FBRztBQUMvQixXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDbEIsRUFBRTtBQUNGLEdBQUcsUUFBUSxFQUFFLGlCQUFpQixhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvRixHQUFHO0FBQ0gsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNyQyxFQUFFO0FBQ0YsR0FBRyxhQUFhLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlDLEdBQUc7QUFDSCxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3JDLEVBQUUsRUFBRSxVQUFVLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDdkMsRUFBRSxDQUFDO0FBQ0g7QUFDQSxDQUFDLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUN4QjtBQUNBLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzNELEVBQUUsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRSxFQUFFO0FBQ0Y7QUFDQSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekMsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxlQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM1QyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDaEIsR0FBRyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQUsseUdBQXlHLEtBQUs7QUFDL0ksS0FBSyxpQkFBaUIsQ0FBQyxxQkFBcUIsRUFBRTtBQUM5QyxLQUFLLEtBQUssYUFBYSxLQUFLLElBQUksaUJBQWlCLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ25FLEtBQUssS0FBSyxnREFBZ0QsS0FBSyxJQUFJO0FBQ25FLE1BQU0sUUFBUSxFQUFFLGlCQUFpQixhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRyxNQUFNO0FBQ04sS0FBSyxLQUFLLG1CQUFtQixHQUFHLElBQUksRUFBRSxPQUFPLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDdkUsS0FBSyxLQUFLLHlCQUF5QixFQUFFLElBQUk7QUFDekMsTUFBTSxhQUFhLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pELE1BQU07QUFDTixLQUFLLEtBQUssbUJBQW1CLENBQUMsSUFBSSxFQUFFLE9BQU8sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNyRSxLQUFLLEtBQUssa0JBQWtCLEdBQUcsSUFBSSxFQUFFLFVBQVUsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUN4RSxLQUFLLENBQUM7QUFDTixLQUFLLEVBQUUsQ0FBQztBQUNSO0FBQ0EsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ2pDLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLElBQUksT0FBTyxFQUFFLE9BQU87QUFDdkIsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDN0MsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDbkIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3pDLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUN6QyxDQUFDLElBQUksS0FBSyxDQUFDO0FBQ1gsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNULENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYjtBQUNBLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDO0FBQ2YsR0FBRyxLQUFLLEVBQUU7QUFDVixJQUFJLElBQUksVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ3pCLElBQUksS0FBSyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDNUIsSUFBSSxjQUFjLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdDLElBQUksT0FBTyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsQyxJQUFJLGFBQWEsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUMsSUFBSSxPQUFPLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLElBQUksUUFBUSxFQUFFLGdCQUFnQixhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RGLElBQUksVUFBVSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyQyxJQUFJO0FBQ0osR0FBRyxDQUFDLENBQUM7QUFDTDtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsR0FBRyxFQUFFLEtBQUs7QUFDWixFQUFFLEtBQUssRUFBRSxJQUFJO0FBQ2IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUNuQixHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN0QixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2pDLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDeEMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFO0FBQ3BCLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztBQUNqQixHQUFHLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUMxQixHQUFHLElBQUksS0FBSyxhQUFhLEtBQUssRUFBRSxXQUFXLENBQUMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNuRSxHQUFHLElBQUksS0FBSyxhQUFhLElBQUksRUFBRSxXQUFXLENBQUMsS0FBSyxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyRSxHQUFHLElBQUksS0FBSyxzQkFBc0IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxjQUFjLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUYsR0FBRyxJQUFJLEtBQUssa0JBQWtCLEVBQUUsRUFBRSxXQUFXLENBQUMsT0FBTyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlFLEdBQUcsSUFBSSxLQUFLLHdCQUF3QixFQUFFLEVBQUUsV0FBVyxDQUFDLGFBQWEsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRyxHQUFHLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxPQUFPLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0UsR0FBRyxJQUFJLEtBQUssNkJBQTZCLEtBQUssRUFBRSxXQUFXLENBQUMsUUFBUSxHQUFHLGdCQUFnQixhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEosR0FBRyxJQUFJLEtBQUssa0JBQWtCLEdBQUcsRUFBRSxXQUFXLENBQUMsVUFBVSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6QixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUMsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNyQyxHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDdkMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN0QixDQUFDLElBQUksYUFBYSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDL0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLElBQUksUUFBUSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRSxDQUFDLElBQUksWUFBWSxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDMUMsQ0FBQyxNQUFNLE9BQU8sR0FBRyxHQUFHLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2pEO0FBQ0EsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2xELEVBQUUsSUFBSSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzRCxFQUFFLElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMvQixFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMvRSxFQUFFO0FBQ0Y7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLEdBQUcsRUFBRSxLQUFLO0FBQ1osRUFBRSxLQUFLLEVBQUUsSUFBSTtBQUNiLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLEdBQUcsSUFBSSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzlCLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3ZCLElBQUk7QUFDSjtBQUNBLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hCLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDbkIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5QixHQUFHLElBQUksUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RDLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsQjtBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuRCxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9CLElBQUk7QUFDSjtBQUNBLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsQixHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDcEIsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBQ2pCO0FBQ0EsR0FBRyxxQkFBcUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ2hDLElBQUksSUFBSSxRQUFRLEVBQUU7QUFDbEIsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1QjtBQUNBLEtBQUssSUFBSSxLQUFLLG9CQUFvQixDQUFDLEVBQUU7QUFDckMsTUFBTSxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLE1BQU07QUFDTixLQUFLLE1BQU07QUFDWCxLQUFLLFFBQVEsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckMsS0FBSyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDbEIsS0FBSyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEIsS0FBSztBQUNMLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRTtBQUN4QixJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTTtBQUN6QyxLQUFLLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDckIsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxJQUFJLEtBQUsscUhBQXFILEtBQUssRUFBRTtBQUN4SSxJQUFJLFlBQVksWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3pDLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkIsSUFBSSxXQUFXLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQUNoTCxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CLElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzNCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3BELElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDNUI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkQsSUFBSSxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QixHQUFHLElBQUksUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUM5QjtBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuRCxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN2QixJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsZUFBZSxDQUFDLEdBQUcsRUFBRTtBQUM5QixDQUFDLElBQUksR0FBRyxDQUFDO0FBQ1QsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNULENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksS0FBSyxDQUFDO0FBQ1gsQ0FBQyxJQUFJLFFBQVEsQ0FBQztBQUNkLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLEtBQUssQ0FBQztBQUNYLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDWCxDQUFDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN0QixDQUFDLElBQUksWUFBWSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDOUIsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiO0FBQ0EsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUM7QUFDZixHQUFHLEtBQUssRUFBRTtBQUNWLElBQUksS0FBSyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDNUIsSUFBSSxjQUFjLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdDLElBQUksdUJBQXVCLDhCQUE4QixHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ2hFLElBQUksdUJBQXVCLDhCQUE4QixHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ2hFLElBQUksbUJBQW1CLDBCQUEwQixHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ3hELElBQUk7QUFDSixHQUFHLENBQUMsQ0FBQztBQUNMO0FBQ0EsQ0FBQyxJQUFJLFNBQVMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0FBQ2hFLENBQUMsSUFBSSxZQUFZLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM5QyxDQUFDLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUN4QjtBQUNBLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNsRCxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkYsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxJQUFJLFNBQVMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0FBQ2hFLENBQUMsSUFBSSxZQUFZLGtCQUFrQixHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDeEI7QUFDQSxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbEQsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25GLEVBQUU7QUFDRjtBQUNBLENBQUMsSUFBSSxVQUFVLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsTUFBTSxPQUFPLEdBQUcsR0FBRyxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDakQ7QUFDQSxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDaEQsRUFBRSxJQUFJLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELEVBQUUsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQy9CLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzVFLEVBQUU7QUFDRjtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUNoQixHQUFHLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDNUIsR0FBRyxRQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2xDLEdBQUcsSUFBSSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2hDLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3JELElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3pCLElBQUk7QUFDSjtBQUNBLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hCLEdBQUcsS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1QixHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsR0FBRyxJQUFJLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDaEI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDckQsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDekIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDaEIsR0FBRyxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3ZCLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztBQUNsRCxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFDekMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO0FBQ2pELEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxXQUFXLGVBQWUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDeEQsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvQixHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25DLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuQixHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEIsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzNCLEdBQUcsSUFBSSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUMsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3JELElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3JCLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN4QixHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckIsR0FBRyxJQUFJLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4QyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbEI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDckQsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckIsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3hCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNsQixHQUFHLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUMxQixHQUFHLElBQUksS0FBSyxhQUFhLElBQUksRUFBRSxXQUFXLENBQUMsS0FBSyxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyRSxHQUFHLElBQUksS0FBSyxzQkFBc0IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxjQUFjLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUYsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3pCO0FBQ0EsR0FBRyxxQkFBcUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ2hDLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQyxNQUFNO0FBQzFCLEtBQUssU0FBUyxHQUFHLGlCQUFpQixFQUFFLENBQUM7QUFDckMsS0FBSyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDbkIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvQixLQUFLO0FBQ0wsSUFBSSxNQUFNLElBQUksU0FBUyxFQUFFO0FBQ3pCLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDckIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxJQUFJLEtBQUssd0JBQXdCLEtBQUssRUFBRTtBQUMzQyxJQUFJLFlBQVksYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzdDLElBQUksSUFBSSxDQUFDLENBQUM7QUFDVjtBQUNBLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDakQsS0FBSyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hFO0FBQ0EsS0FBSyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUMzQixNQUFNLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNDLE1BQU0sTUFBTTtBQUNaLE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hELE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzNCLE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekMsTUFBTTtBQUNOLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzdDLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixLQUFLO0FBQ0w7QUFDQSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztBQUMvQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDaEMsSUFBSSxJQUFJLFNBQVMsRUFBRSxDQUFDLE1BQU07QUFDMUIsS0FBSyxTQUFTLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztBQUNyQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNuQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLEtBQUs7QUFDTCxJQUFJLE1BQU0sSUFBSSxTQUFTLEVBQUU7QUFDekIsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztBQUNyQixJQUFJO0FBQ0o7QUFDQSxHQUFHLElBQUksS0FBSyxrQkFBa0IsS0FBSyxFQUFFO0FBQ3JDLElBQUksWUFBWSxrQkFBa0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFDLElBQUksSUFBSSxDQUFDLENBQUM7QUFDVjtBQUNBLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDakQsS0FBSyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hFO0FBQ0EsS0FBSyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUMzQixNQUFNLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNDLE1BQU0sTUFBTTtBQUNaLE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hELE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzNCLE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkMsTUFBTTtBQUNOLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzdDLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixLQUFLO0FBQ0w7QUFDQSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztBQUMvQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLElBQUksS0FBSyxtTUFBbU0sS0FBSyxFQUFFO0FBQ3ROLElBQUksVUFBVSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNuQyxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CLElBQUksV0FBVyxHQUFHLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDOUssSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUNuQixJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6QztBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNsRCxJQUFJLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQixHQUFHLElBQUksU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNoQyxHQUFHLFlBQVksQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDMUMsR0FBRyxJQUFJLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEMsR0FBRyxZQUFZLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3ZCLElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDakQ7QUFDQTtBQUNBLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUM5QixDQUFDLElBQUksRUFBRSxZQUFZLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ3hDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUM5QixDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDL0IsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDcEMsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDckMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzlCLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUMvQixDQUFDLElBQUksRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ2hDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUM5QixDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzNDLENBQUMsSUFBSSxFQUFFLGNBQWMsR0FBRyxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDMUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztBQUNYLENBQUMsSUFBSSxVQUFVLENBQUM7QUFDaEI7QUFDQTtBQUNBLENBQUMsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDcEM7QUFDQSxDQUFDLFNBQVMsdUJBQXVCLEdBQUc7QUFDcEMsRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLGNBQWMsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzNFLEVBQUU7QUFDRjtBQUNBLENBQUMsU0FBUyx1QkFBdUIsR0FBRztBQUNwQyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsY0FBYyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDaEYsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxTQUFTLG1CQUFtQixHQUFHO0FBQ2hDLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxjQUFjLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDbEQsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE9BQU8sSUFBSTtBQUMzQixFQUFFLElBQUksWUFBWSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDakYsRUFBRSxJQUFJLGNBQWMsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3RGLEVBQUUsSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNoRixFQUFFLElBQUksYUFBYSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDbkYsRUFBRSxJQUFJLGtCQUFrQixJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ2xHLEVBQUUsSUFBSSxtQkFBbUIsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNyRyxFQUFFLElBQUksWUFBWSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDaEYsRUFBRSxJQUFJLGFBQWEsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25GLEVBQUUsSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RSxFQUFFLElBQUksWUFBWSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDaEYsRUFBRSxJQUFJLE9BQU8sSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xFLEVBQUUsSUFBSSxnQkFBZ0IsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQzVGLEVBQUUsQ0FBQztBQUNIO0FBQ0EsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxNQUFNO0FBQzFCLEVBQUUsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssa0NBQWtDLE1BQU0sRUFBRTtBQUMvRCxHQUFHLFlBQVksQ0FBQyxFQUFFLEVBQUUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNsRSxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLHlCQUF5QixNQUFNLEVBQUU7QUFDdEQsR0FBRyxZQUFZLENBQUMsRUFBRSxFQUFFLFVBQVUsR0FBRyxhQUFhLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDbkUsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNIO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxjQUFjO0FBQ2hCLEVBQUUsWUFBWTtBQUNkLEVBQUUsVUFBVTtBQUNaLEVBQUUsV0FBVztBQUNiLEVBQUUsZ0JBQWdCO0FBQ2xCLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUsVUFBVTtBQUNaLEVBQUUsV0FBVztBQUNiLEVBQUUsT0FBTztBQUNULEVBQUUsVUFBVTtBQUNaLEVBQUUsS0FBSztBQUNQLEVBQUUsdUJBQXVCO0FBQ3pCLEVBQUUsdUJBQXVCO0FBQ3pCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsS0FBSztBQUNQLEVBQUUsVUFBVTtBQUNaLEVBQUUsUUFBUTtBQUNWLEVBQUUsVUFBVTtBQUNaLEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLE1BQU0sUUFBUSxTQUFTLGVBQWUsQ0FBQztBQUN2QyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDdEIsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUNWLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUNqRTtBQUNBLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUU7QUFDNUQsR0FBRyxVQUFVLEVBQUUsRUFBRTtBQUNqQixHQUFHLFlBQVksRUFBRSxDQUFDO0FBQ2xCLEdBQUcsVUFBVSxFQUFFLENBQUM7QUFDaEIsR0FBRyxXQUFXLEVBQUUsQ0FBQztBQUNqQixHQUFHLGdCQUFnQixFQUFFLENBQUM7QUFDdEIsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0FBQ3ZCLEdBQUcsVUFBVSxFQUFFLENBQUM7QUFDaEIsR0FBRyxXQUFXLEVBQUUsQ0FBQztBQUNqQixHQUFHLE9BQU8sRUFBRSxDQUFDO0FBQ2IsR0FBRyxVQUFVLEVBQUUsQ0FBQztBQUNoQixHQUFHLEtBQUssRUFBRSxFQUFFO0FBQ1osR0FBRyxjQUFjLEVBQUUsQ0FBQztBQUNwQixHQUFHLHVCQUF1QixFQUFFLEVBQUU7QUFDOUIsR0FBRyx1QkFBdUIsRUFBRSxFQUFFO0FBQzlCLEdBQUcsbUJBQW1CLEVBQUUsRUFBRTtBQUMxQixHQUFHLENBQUMsQ0FBQztBQUNMLEVBQUU7QUFDRjtBQUNBLENBQUMsSUFBSSx1QkFBdUIsR0FBRztBQUMvQixFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekIsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxJQUFJLHVCQUF1QixHQUFHO0FBQy9CLEVBQUUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6QixFQUFFO0FBQ0Y7QUFDQSxDQUFDLElBQUksbUJBQW1CLEdBQUc7QUFDM0IsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLEVBQUU7QUFDRjs7QUMzbEZBO0FBQ00sTUFBZ0IsMkJBQTRCLFNBQVE2RCw0QkFBbUIsQ0FBQTtBQUd6RSxJQUFBLFdBQUEsQ0FDVyxTQUFzQixFQUN0QixLQUFnQixFQUNoQixHQUFRLEVBQ1IsUUFBMEIsRUFBQTtRQUVqQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFMVixJQUFTLENBQUEsU0FBQSxHQUFULFNBQVMsQ0FBYTtRQUN0QixJQUFLLENBQUEsS0FBQSxHQUFMLEtBQUssQ0FBVztRQUNoQixJQUFHLENBQUEsR0FBQSxHQUFILEdBQUcsQ0FBSztRQUNSLElBQVEsQ0FBQSxRQUFBLEdBQVIsUUFBUSxDQUFrQjtRQWlCckMsSUFBWSxDQUFBLFlBQUEsR0FBRyxNQUFLOzs7WUFHaEIsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUU7Z0JBQ3BHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNqQixhQUFBO0FBQ0wsU0FBQyxDQUFDO0FBckJFLFFBQUEsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7S0FDdkI7SUFJRCxNQUFNLEdBQUE7UUFDRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDOztBQUV0QyxRQUFBLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDOztBQUV2RixRQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7S0FDbkU7QUFVSjs7QUNuQkssTUFBTyx3QkFBeUIsU0FBUSwyQkFBMkIsQ0FBQTtJQUVyRSxXQUNXLENBQUEsS0FBWSxFQUNaLFNBQXNCLEVBQ3RCLEtBQWdCLEVBQ2hCLE1BQWMsRUFDZCxRQUEwQixFQUMxQixHQUFRLEVBQUE7UUFFZixLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFQaEMsSUFBSyxDQUFBLEtBQUEsR0FBTCxLQUFLLENBQU87UUFDWixJQUFTLENBQUEsU0FBQSxHQUFULFNBQVMsQ0FBYTtRQUN0QixJQUFLLENBQUEsS0FBQSxHQUFMLEtBQUssQ0FBVztRQUNoQixJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBUTtRQUNkLElBQVEsQ0FBQSxRQUFBLEdBQVIsUUFBUSxDQUFrQjtRQUMxQixJQUFHLENBQUEsR0FBQSxHQUFILEdBQUcsQ0FBSztLQUdsQjtBQUVELElBQUEsTUFBTSxNQUFNLEdBQUE7O0FBQ1IsUUFBQSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxXQUFXLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxNQUN4QyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUN0RSxDQUFDO0FBQ0YsUUFBQSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRTtZQUN6QixjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pFLE9BQU87QUFDVixTQUFBO0FBQU0sYUFBQSxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtBQUM5RSxZQUFBLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHFDQUFxQyxDQUFDLENBQUM7WUFDdEUsT0FBTztBQUNWLFNBQUE7QUFDRCxRQUFBLElBQUksT0FBTyxHQUFHLElBQUksR0FBRyxFQUEwQixDQUFDO1FBQ2hELEtBQUssSUFBSSxJQUFJLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7QUFDckMsWUFBQSxNQUFNLEdBQUcsR0FBRztBQUNSLGdCQUFBLEtBQUssRUFBRSxTQUFTO0FBQ2hCLGdCQUFBLFNBQVMsRUFBRSxNQUFNO0FBQ2pCLGdCQUFBLFFBQVEsRUFBRSxJQUFJO2dCQUNkLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTthQUNsQixDQUFDO1lBQ0YsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDekMsWUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLGFBQUE7QUFBTSxpQkFBQTtnQkFDSCxDQUFBLEVBQUEsR0FBQSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFBLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QixhQUFBO0FBQ0osU0FBQTtBQUVELFFBQUEsTUFBTSxXQUFXLEdBQW9CO0FBQ2pDLFlBQUEsZ0JBQWdCLEVBQUUsT0FBTyxJQUFZLEtBQTJCO2dCQUM1RCxPQUFPO0FBQ0gsb0JBQUEsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUU7aUJBQ25ELENBQUM7YUFDTDtTQUNKLENBQUM7QUFFRixRQUFBLE1BQU0sT0FBTyxHQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQztBQUN0QixRQUFBLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUM7O1lBRXpCLE1BQU0sRUFBRyxJQUFZLENBQUMsU0FBUztBQUMvQixZQUFBLEtBQUssRUFBRTtnQkFDSCxVQUFVLENBQUMsSUFBWSxFQUFFLFFBQXFCLEVBQUE7QUFDMUMsb0JBQUEsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ2xELElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7d0JBQzNCLE9BQU87QUFDVixxQkFBQTtvQkFDRCxJQUFJLENBQUEsSUFBSSxLQUFBLElBQUEsSUFBSixJQUFJLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUosSUFBSSxDQUFFLE1BQU0sS0FBSSxDQUFDLEVBQUU7d0JBQ25CLE9BQU87QUFDVixxQkFBQTtBQUVELG9CQUFBLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNwRztBQUNELGdCQUFBLFVBQVUsRUFBRSxPQUFNLElBQUksS0FBRztBQUNyQixvQkFBQSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDbEQsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTt3QkFDM0IsT0FBTztBQUNWLHFCQUFBO29CQUNELElBQUksQ0FBQSxJQUFJLEtBQUEsSUFBQSxJQUFKLElBQUksS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBSixJQUFJLENBQUUsTUFBTSxLQUFJLENBQUMsRUFBRTt3QkFDbkIsT0FBTztBQUNWLHFCQUFBO29CQUNELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNwRixJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7d0JBQ2QsT0FBTztBQUNWLHFCQUFBO29CQUNELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3RELG9CQUFBLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDL0M7QUFDRCxnQkFBQSxZQUFZLEVBQUUsS0FBSztnQkFDbkIsT0FBTztBQUNWLGFBQUE7QUFDSixTQUFBLENBQUMsQ0FBQztLQUNOO0lBRUQsT0FBTyxHQUFBO1FBQ0gsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ2YsWUFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzVCLFNBQUE7QUFDRCxRQUFBLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQzVCO0FBQ0o7O0FDL0dEO0FBa0JBO01BQ2EsbUJBQW1CLENBQUE7SUFDNUIsV0FBMEIsQ0FBQSxHQUFrQixFQUFTLFdBQW1CLEVBQUE7UUFBOUMsSUFBRyxDQUFBLEdBQUEsR0FBSCxHQUFHLENBQWU7UUFBUyxJQUFXLENBQUEsV0FBQSxHQUFYLFdBQVcsQ0FBUTtLQUFJOztBQUdyRSxJQUFBLE1BQU0sR0FBRyxDQUFDLElBQVksRUFBRSxVQUFtQixFQUFBO0FBQzlDLFFBQUEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUM3RDs7QUFHTSxJQUFBLE1BQU0sSUFBSSxDQUFDLElBQW1CLEVBQUUsVUFBbUIsRUFBQTtBQUN0RCxRQUFBLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDOUQ7O0lBR00sU0FBUyxDQUFDLElBQW1CLEVBQUUsVUFBbUIsRUFBQTtBQUNyRCxRQUFBLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDbkU7QUFDSixDQUFBO01BRVksaUJBQWlCLENBQUE7QUE4QzFCLElBQUEsV0FBQSxDQUFZLEdBQWdCLEVBQUUsU0FBb0IsRUFBRSxTQUFzQixFQUFFLGVBQXVCLEVBQUE7OztRQWQ1RixJQUFLLENBQUEsS0FBQSxHQUFHLE1BQU0sQ0FBQzs7UUFHZixJQUFNLENBQUEsTUFBQSxHQUFHLE9BQU8sQ0FBQzs7UUFNakIsSUFBSyxDQUFBLEtBQUEsR0FBRyxLQUFLLENBQUM7QUFNakIsUUFBQSxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDdkIsUUFBQSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDbkIsUUFBQSxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFFN0IsUUFBQSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUMzQixRQUFBLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQzNCLFFBQUEsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7QUFFdkMsUUFBQSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNmLFFBQUEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzs7UUFHckUsSUFBSSxRQUFRLEdBQUcsQ0FBQSxFQUFBLEdBQUEsQ0FBQSxFQUFBLEdBQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBQSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLEVBQUUsQ0FBQztRQUN2RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUN0RyxZQUFBLElBQUksRUFBRSxRQUFRO0FBQ2pCLFNBQUEsQ0FBQyxDQUFDO0FBRUgsUUFBQSxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7S0FDNUU7Ozs7O0FBT00sSUFBQSxTQUFTLENBQUMsS0FBYyxFQUFBO0FBQzNCLFFBQUEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQzFEOztBQUdNLElBQUEsSUFBSSxDQUFDLElBQW1CLEVBQUE7QUFDM0IsUUFBQSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDcEQ7O0FBR00sSUFBQSxLQUFLLENBQUMsS0FBYyxFQUFBO0FBQ3ZCLFFBQUEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3REOztJQUdNLE9BQU8sR0FBQTtRQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDMUM7Ozs7O0FBT00sSUFBQSxNQUFNLEtBQUssQ0FDZCxNQUFjLEVBQ2QsVUFBbUIsRUFDbkIsUUFBMkIsRUFBQTtRQUUzQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxVQUFVLEtBQUEsSUFBQSxJQUFWLFVBQVUsS0FBVixLQUFBLENBQUEsR0FBQSxVQUFVLEdBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztLQUMvRTs7QUFHTSxJQUFBLE1BQU0sUUFBUSxDQUFDLE1BQWMsRUFBRSxVQUFtQixFQUFFLFFBQTJCLEVBQUE7UUFDbEYsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxLQUFBLElBQUEsSUFBVixVQUFVLEtBQVYsS0FBQSxDQUFBLEdBQUEsVUFBVSxHQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDbEY7O0FBR00sSUFBQSxNQUFNLGFBQWEsQ0FDdEIsTUFBYyxFQUNkLFVBQW1CLEVBQ25CLFFBQTJCLEVBQUE7UUFFM0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxLQUFBLElBQUEsSUFBVixVQUFVLEtBQVYsS0FBQSxDQUFBLEdBQUEsVUFBVSxHQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDdkY7O0FBR00sSUFBQSxNQUFNLGdCQUFnQixDQUFDLE1BQWMsRUFBRSxVQUFtQixFQUFFLFFBQTJCLEVBQUE7UUFDMUYsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxVQUFVLEtBQUEsSUFBQSxJQUFWLFVBQVUsS0FBVixLQUFBLENBQUEsR0FBQSxVQUFVLEdBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztLQUMxRjtBQUVEOzs7Ozs7Ozs7Ozs7OztBQWNHO0lBQ0ksUUFBUSxDQUFDLFVBQWtCLEVBQUUsT0FBb0IsRUFBQTtRQUNwRCxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07WUFBRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsK0JBQStCLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBRXZGLFFBQUEsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDaEU7O0lBR00sV0FBVyxDQUFDLFVBQWtCLEVBQUUsT0FBb0IsRUFBQTtRQUN2RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0tBQzNEOztJQUdNLE1BQU0sT0FBTyxDQUFDLE1BQWMsRUFBQTtBQUMvQixRQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ2xGOztJQUdNLE1BQU0sU0FBUyxDQUFDLElBQVksRUFBQTtBQUMvQixRQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ2xGOzs7O0FBTUQ7OztBQUdHO0FBQ0ksSUFBQSxLQUFLLENBQUMsR0FBUSxFQUFBO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDOUI7O0FBR00sSUFBQSxPQUFPLENBQUMsR0FBUSxFQUFBO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDaEM7O0FBR00sSUFBQSxXQUFXLENBQUMsR0FBWSxFQUFBO0FBQzNCLFFBQUEsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3JDOztBQUdNLElBQUEsUUFBUSxDQUFDLElBQVksRUFBRSxLQUFpQixHQUFBLEtBQUssRUFBRSxPQUFnQixFQUFBO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQzFDOztJQUdNLFdBQVcsQ0FBQyxJQUFZLEVBQUUsT0FBZSxFQUFFLEtBQWlCLEdBQUEsS0FBSyxFQUFFLE9BQWdCLEVBQUE7QUFDdEYsUUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDckQ7O0lBR00sU0FBUyxDQUFDLElBQVksRUFBRSxPQUFlLEVBQUUsS0FBaUIsR0FBQSxLQUFLLEVBQUUsT0FBZ0IsRUFBQTtBQUNwRixRQUFBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNwRDs7QUFHTSxJQUFBLElBQUksQ0FBQyxRQUFrQyxFQUFBO1FBQzFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDbEM7O0FBR00sSUFBQSxRQUFRLENBQUMsR0FBc0IsRUFBQTtRQUNsQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2pDOztBQUdNLElBQUEsS0FBSyxDQUFDLEtBQWEsRUFBQTtRQUN0QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2hDOztBQUdNLElBQUEsT0FBTyxDQUFDLEtBQVUsRUFBQTtRQUNyQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2xDOztBQUdNLElBQUEsS0FBSyxDQUFDLEtBQWMsRUFBQTtBQUN2QixRQUFBLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNqQztBQUVEOzs7QUFHRztJQUNJLE9BQU8sQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFBO1FBQ3pCLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDcEM7O0lBR00sS0FBSyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUE7UUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbEM7Ozs7O0FBT00sSUFBQSxFQUFFLENBQ0wsRUFBSyxFQUNMLElBQVMsRUFDVCxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsT0FBTyxLQUFtRCxFQUFFLEVBQUE7UUFFN0YsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUVyQyxRQUFBLElBQUksT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO0FBQzNDLFlBQUEsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNuRSxTQUFBO1FBRUQsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNGLFFBQUEsT0FBTyxHQUFHLENBQUM7S0FDZDs7QUFHTSxJQUFBLE1BQU0sQ0FBQyxLQUFhLEVBQUUsSUFBUyxFQUFFLE9BQXdCLEVBQUE7QUFDNUQsUUFBQSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0UsUUFBQSxJQUFJLENBQUMsTUFBTTtBQUFFLFlBQUEsTUFBTSxLQUFLLENBQUMsQ0FBQSxvQkFBQSxFQUF1QixLQUFLLENBQUEsZ0NBQUEsQ0FBa0MsQ0FBQyxDQUFDO1FBRXpGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFxQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQXVCLENBQUM7S0FDOUY7O0lBR00sU0FBUyxDQUFDLElBQVMsRUFBRSxPQUF3QixFQUFBO1FBQ2hELE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3RDOztJQUdNLElBQUksQ0FBQyxJQUFTLEVBQUUsT0FBd0IsRUFBQTtRQUMzQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztLQUN6QztBQUVEOzs7QUFHRztBQUNJLElBQUEsTUFBTSxJQUFJLENBQUMsUUFBZ0IsRUFBRSxLQUFVLEVBQUE7O0FBRTFDLFFBQUEsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsUUFBUSxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDekcsUUFBQSxJQUFJLGNBQWMsRUFBRTtBQUNoQixZQUFBLElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3pELFlBQUEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztBQUFFLGdCQUFBLFFBQVEsR0FBRyxpQkFBaUIsR0FBRyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ2xGLElBQUksSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFakQsSUFBSTs7QUFFQSxnQkFBQSxJQUFJLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3RELGdCQUFBLElBQUksTUFBTTtvQkFDTixNQUFNLFdBQVcsQ0FDYixNQUFhLEVBQ2IsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsZUFBZSxFQUNwQixJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUNQLENBQUM7QUFDVCxhQUFBO0FBQUMsWUFBQSxPQUFPLEVBQUUsRUFBRTtBQUNULGdCQUFBLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUEsa0NBQUEsRUFBcUMsY0FBYyxDQUFDLElBQUksQ0FBQSxNQUFBLEVBQVMsRUFBRSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3pHLGFBQUE7WUFFRCxPQUFPO0FBQ1YsU0FBQTs7QUFHRCxRQUFBLElBQUksUUFBUSxHQUFHLENBQUcsRUFBQSxRQUFRLFVBQVUsQ0FBQztBQUNyQyxRQUFBLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFM0YsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNYLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQXdDLHFDQUFBLEVBQUEsUUFBUSxDQUFTLE1BQUEsRUFBQSxRQUFRLENBQU8sS0FBQSxDQUFBLENBQUMsQ0FBQztZQUN6RyxPQUFPO0FBQ1YsU0FBQTtBQUVELFFBQUEsSUFBSSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdkQsUUFBQSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0FBQUUsWUFBQSxZQUFZLEdBQUcsaUJBQWlCLEdBQUcsWUFBWSxHQUFHLE9BQU8sQ0FBQztRQUM5RixJQUFJLFlBQVksR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRTdELElBQUk7QUFDQSxZQUFBLElBQUksTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUQsWUFBQSxJQUFJLE1BQU07Z0JBQ04sTUFBTSxXQUFXLENBQ2IsTUFBYSxFQUNiLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLGVBQWUsRUFDcEIsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FDUCxDQUFDO0FBQ1QsU0FBQTtBQUFDLFFBQUEsT0FBTyxFQUFFLEVBQUU7QUFDVCxZQUFBLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUEsc0NBQUEsRUFBeUMsUUFBUSxDQUFDLElBQUksQ0FBQSxNQUFBLEVBQVMsRUFBRSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3ZHLFNBQUE7O0FBR0QsUUFBQSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBLEVBQUcsUUFBUSxDQUFXLFNBQUEsQ0FBQSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUN4RyxRQUFBLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztBQUVyQixRQUFBLElBQUksV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztLQUNqRjs7QUFHTSxJQUFBLElBQUksQ0FBQyxNQUErQixFQUFBO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDdEY7O0lBR00sS0FBSyxDQUFDLE9BQWlCLEVBQUUsTUFBaUMsRUFBQTtRQUM3RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUNoRzs7QUFHTSxJQUFBLFFBQVEsQ0FBQyxLQUEwQixFQUFFLFdBQUEsR0FBdUIsSUFBSSxFQUFBO1FBQ25FLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3RHOzs7OztBQU9NLElBQUEsYUFBYSxDQUNoQixPQUFpQixFQUNqQixNQUFpQyxFQUNqQyxRQUFrQyxFQUFBO0FBRWxDLFFBQUEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQzVEOztJQUdNLFlBQVksQ0FBQyxNQUEyQyxFQUFFLFFBQWtDLEVBQUE7UUFDL0YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDbEQ7O0lBR00sZ0JBQWdCLENBQUMsTUFBMkIsRUFBRSxRQUFrQyxFQUFBO1FBQ25GLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDdEQ7QUFDSixDQUFBO0FBRUQ7O0FBRUc7QUFDYSxTQUFBLGFBQWEsQ0FBQyxNQUFjLEVBQUUsT0FBWSxFQUFBO0lBQ3RELE9BQU8sWUFBQTtBQUNILFFBQUEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEIsS0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwQixDQUFDO0FBRUQ7O0FBRUc7QUFDSSxlQUFlLGtCQUFrQixDQUFDLE1BQWMsRUFBRSxPQUFZLEVBQUE7QUFDakUsSUFBQSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDMUIsT0FBTyxhQUFhLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxHQUFHLE9BQU8sRUFBRSxPQUFPLENBQWlCLENBQUM7QUFDdkYsS0FBQTtBQUFNLFNBQUE7UUFDSCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzFELEtBQUE7QUFDTDs7QUMvYU0sTUFBTyxrQkFBbUIsU0FBUSwyQkFBMkIsQ0FBQTtBQUcvRCxJQUFBLFdBQUEsQ0FBbUIsR0FBZ0IsRUFBUyxNQUFjLEVBQVMsU0FBc0IsRUFBUyxNQUFjLEVBQUE7QUFDNUcsUUFBQSxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFEcEMsSUFBRyxDQUFBLEdBQUEsR0FBSCxHQUFHLENBQWE7UUFBUyxJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBUTtRQUFTLElBQVMsQ0FBQSxTQUFBLEdBQVQsU0FBUyxDQUFhO1FBQVMsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVE7S0FFL0c7QUFFRCxJQUFBLE1BQU0sTUFBTSxHQUFBO0FBQ1IsUUFBQSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDOUIsUUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtBQUNqQyxZQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxZQUFBLGNBQWMsQ0FDVixJQUFJLENBQUMsU0FBUyxFQUNkLGlGQUFpRixDQUNwRixDQUFDO1lBQ0YsT0FBTztBQUNWLFNBQUE7O1FBR0QsSUFBSTtBQUNBLFlBQUEsTUFBTSxrQkFBa0IsQ0FDcEIsa0JBQWtCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQ3pDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQ3JFLENBQUM7QUFDTCxTQUFBO0FBQUMsUUFBQSxPQUFPLENBQUMsRUFBRTtBQUNSLFlBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ2hDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsRSxTQUFBO0tBQ0o7O0FBM0JNLGtCQUFRLENBQUEsUUFBQSxHQUFXLHdDQUF3QyxDQUFDO0FBOEJ2RTtBQUNNLE1BQU8sd0JBQXlCLFNBQVEsMkJBQTJCLENBQUE7SUFNckUsV0FDVyxDQUFBLEdBQWdCLEVBQ2hCLE1BQWMsRUFDZCxTQUFzQixFQUN0QixNQUFtQixFQUNuQixNQUFjLEVBQUE7QUFFckIsUUFBQSxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFONUMsSUFBRyxDQUFBLEdBQUEsR0FBSCxHQUFHLENBQWE7UUFDaEIsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVE7UUFDZCxJQUFTLENBQUEsU0FBQSxHQUFULFNBQVMsQ0FBYTtRQUN0QixJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBYTtRQUNuQixJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBUTtLQUd4QjtBQUVELElBQUEsTUFBTSxNQUFNLEdBQUE7O0FBQ1IsUUFBQSxDQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsUUFBUSxNQUFFLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLE1BQU0sRUFBRSxDQUFDO0FBQ3hCLFFBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixFQUFFO1lBQzFFLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUMsWUFBQSxJQUFJLENBQUMsU0FBUyxHQUFHLGdDQUFnQyxDQUFDO0FBQ2xELFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUIsWUFBQSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixPQUFPO0FBQ1YsU0FBQTs7UUFHRCxJQUFJO1lBQ0EsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxQyxZQUFBLElBQUksTUFBTSxHQUFHLE1BQU0sa0JBQWtCLENBQ2pDLHdCQUF3QixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUMvQyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQzNELENBQUM7QUFDRixZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLFlBQUEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxNQUFNLEtBQUssU0FBUztnQkFBRSxPQUFPO0FBRWpDLFlBQUEsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0RSxTQUFBO0FBQUMsUUFBQSxPQUFPLENBQUMsRUFBRTtZQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0MsWUFBQSxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxpQ0FBaUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvRixTQUFBO0tBQ0o7O0FBekNNLHdCQUFRLENBQUEsUUFBQSxHQUFXLHNDQUFzQzs7QUNqQ3BFO0FBQ0E7QUFDQTtBQUVBO1NBQ2dCLGFBQWEsQ0FDekIsT0FBaUIsRUFDakIsTUFBbUIsRUFDbkIsUUFBeUMsRUFBQTtBQUV6QyxJQUFBLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUN2RCxRQUFBLE1BQU0sSUFBSSxLQUFLLENBQ1gsQ0FBMEIsdUJBQUEsRUFBQSxPQUFPLENBQUMsTUFBTSxDQUFBLG9DQUFBLEVBQXVDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQ3JHLENBQUM7SUFFTixRQUFRLEdBQUcsUUFBUSxLQUFSLElBQUEsSUFBQSxRQUFRLGNBQVIsUUFBUSxHQUFJLGdCQUFnQixDQUFDO0lBRXhDLE1BQU0sT0FBTyxHQUFlLEVBQUUsQ0FBQztBQUMvQixJQUFBLE1BQU0sVUFBVSxHQUFhLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7O0FBRzdFLElBQUEsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDMUMsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO0FBQzdCLFFBQUEsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDL0MsWUFBQSxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFMUUsWUFBQSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25CLFlBQUEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1RCxTQUFBO0FBQ0QsUUFBQSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pCLEtBQUE7OztBQUlELElBQUEsSUFBSSxLQUFLLEdBQUcsQ0FBSyxFQUFBLEVBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQzs7SUFFdkcsS0FBSyxJQUFJLENBQUssRUFBQSxFQUFBLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLElBQUEsQ0FBTSxDQUFDOztBQUUxRSxJQUFBLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFB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RyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzVCLFNBQUMsQ0FBQyxDQUFDO0tBQ047O0FBR08sSUFBQSxjQUFjLENBQUMsVUFBeUIsRUFBQTs7QUFFNUMsUUFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDdEQsWUFBQSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQUcsZ0JBQUEsVUFBVSxDQUFDLElBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFNLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdkcsU0FBQTtBQUVELFFBQUEsT0FBTyxVQUFVLENBQUM7S0FDckI7Ozs7QUFNRDs7O0FBR0c7QUFDSSxJQUFBLEtBQUssQ0FBQyxHQUFZLEVBQUE7QUFDckIsUUFBQSxJQUFJLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO0FBQUUsWUFBQSxPQUFPLEdBQUcsQ0FBQztBQUMzQyxRQUFBLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsRSxRQUFBLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUMvQzs7QUFHTSxJQUFBLE9BQU8sQ0FBQyxHQUFZLEVBQUE7QUFDdkIsUUFBQSxPQUFPLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMzRDs7QUFHTSxJQUFBLFdBQVcsQ0FBQyxHQUFZLEVBQUE7QUFDM0IsUUFBQSxPQUFPLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDckM7O0FBR00sSUFB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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9lcnJvcnMuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvc3lzdGVtWm9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvSUFOQVpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvbG9jYWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lcy9maXhlZE9mZnNldFpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL3pvbmVzL2ludmFsaWRab25lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL3pvbmVVdGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9zZXR0aW5ncy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC91dGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2VuZ2xpc2guanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0dGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2ludmFsaWQuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvcmVnZXhQYXJzZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2R1cmF0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbnRlcnZhbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW5mby5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9kaWZmLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2RpZ2l0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC90b2tlblBhcnNlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9jb252ZXJzaW9ucy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvZGF0ZXRpbWUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2x1eG9uLmpzIiwiLi4vc3JjL3NldHRpbmdzLnRzIiwiLi4vc3JjL2FwaS9yZXN1bHQudHMiLCIuLi9ub2RlX21vZHVsZXMvcGFyc2ltbW9uL2J1aWxkL3BhcnNpbW1vbi51bWQubWluLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Vtb2ppLXJlZ2V4L2luZGV4Lm1qcyIsIi4uL3NyYy91dGlsL25vcm1hbGl6ZS50cyIsIi4uL3NyYy9kYXRhLW1vZGVsL3ZhbHVlLnRzIiwiLi4vc3JjL2FwaS9kYXRhLWFycmF5LnRzIiwiLi4vc3JjL3V0aWwvbG9jYWxlLnRzIiwiLi4vc3JjL3VpL3JlbmRlci50cyIsIi4uL25vZGVfbW9kdWxlcy9wYXBhcGFyc2UvcGFwYXBhcnNlLm1pbi5qcyIsIi4uL3NyYy9leHByZXNzaW9uL2ZpZWxkLnRzIiwiLi4vc3JjL2RhdGEtaW5kZXgvc291cmNlLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vcGFyc2UudHMiLCIuLi9zcmMvZGF0YS1pbXBvcnQvaW5saW5lLWZpZWxkLnRzIiwiLi4vc3JjL2RhdGEtbW9kZWwvbWFya2Rvd24udHMiLCIuLi9zcmMvZGF0YS1pbXBvcnQvbWFya2Rvd24tZmlsZS50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC9jc3YudHMiLCIuLi9zcmMvZGF0YS1tb2RlbC90cmFuc2ZlcmFibGUudHMiLCIuLi9ub2RlX21vZHVsZXMvbG9jYWxmb3JhZ2UvZGlzdC9sb2NhbGZvcmFnZS5qcyIsIi4uL3NyYy9kYXRhLWltcG9ydC9wZXJzaXN0ZXIudHMiLCIuLi9zcmMvZGF0YS1pbXBvcnQvd2ViLXdvcmtlci9pbXBvcnQtbWFuYWdlci50cyIsIi4uL3NyYy9kYXRhLWluZGV4L2luZGV4LnRzIiwiLi4vc3JjL2RhdGEtaW5kZXgvcmVzb2x2ZXIudHMiLCIuLi9zcmMvZXhwcmVzc2lvbi9mdW5jdGlvbnMudHMiLCIuLi9zcmMvZXhwcmVzc2lvbi9iaW5hcnlvcC50cyIsIi4uL3NyYy9leHByZXNzaW9uL2NvbnRleHQudHMiLCIuLi9zcmMvcXVlcnkvZW5naW5lLnRzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhcmUtdmVyc2lvbnMvaW5kZXgubWpzIiwiLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9kaXN0L3ByZWFjdC5tb2R1bGUuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJlYWN0L2hvb2tzL2Rpc3QvaG9va3MubW9kdWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9jb21wYXQvZGlzdC9jb21wYXQubW9kdWxlLmpzIiwiLi4vc3JjL3V0aWwvbWVkaWEudHMiLCIuLi9zcmMvdWkvbWFya2Rvd24udHN4IiwiLi4vc3JjL3VpL3ZpZXdzL3Rhc2stdmlldy50c3giLCIuLi9zcmMvdWkvdmlld3MvbGlzdC12aWV3LnRzeCIsIi4uL3NyYy91aS92aWV3cy90YWJsZS12aWV3LnRzeCIsIi4uL3NyYy9xdWVyeS9xdWVyeS50cyIsIi4uL3NyYy9xdWVyeS9wYXJzZS50cyIsIi4uL25vZGVfbW9kdWxlcy9vYnNpZGlhbi1jYWxlbmRhci11aS9kaXN0L2luZGV4Lm1qcyIsIi4uL3NyYy91aS9yZWZyZXNoYWJsZS12aWV3LnRzIiwiLi4vc3JjL3VpL3ZpZXdzL2NhbGVuZGFyLXZpZXcudHMiLCIuLi9zcmMvYXBpL2lubGluZS1hcGkudHMiLCIuLi9zcmMvdWkvdmlld3MvanMtdmlldy50cyIsIi4uL3NyYy91aS9leHBvcnQvbWFya2Rvd24udHMiLCIuLi9zcmMvYXBpL3BsdWdpbi1hcGkudHMiLCIuLi9zcmMvdWkvdmlld3MvaW5saW5lLXZpZXcudHMiLCIuLi9zcmMvdWkvdmlld3MvaW5saW5lLWZpZWxkLnRzeCIsIi4uL3NyYy91aS9scC1yZW5kZXIudHMiLCIuLi9zcmMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6bnVsbCwibmFtZXMiOlsibiIsInMiLCJsIiwic2luZ2xldG9uIiwiRW5nbGlzaC5mb3JtYXRSZWxhdGl2ZVRpbWUiLCJFbmdsaXNoLm1vbnRocyIsIkVuZ2xpc2gud2Vla2RheXMiLCJFbmdsaXNoLm1lcmlkaWVtcyIsIkVuZ2xpc2guZXJhcyIsIkZvcm1hdHMuREFURV9TSE9SVCIsIkZvcm1hdHMuREFURV9NRUQiLCJGb3JtYXRzLkRBVEVfRlVMTCIsIkZvcm1hdHMuREFURV9IVUdFIiwiRm9ybWF0cy5USU1FX1NJTVBMRSIsIkZvcm1hdHMuVElNRV9XSVRIX1NFQ09ORFMiLCJGb3JtYXRzLlRJTUVfV0lUSF9TSE9SVF9PRkZTRVQiLCJGb3JtYXRzLlRJTUVfV0lUSF9MT05HX09GRlNFVCIsIkZvcm1hdHMuVElNRV8yNF9TSU1QTEUiLCJGb3JtYXRzLlRJTUVfMjRfV0lUSF9TRUNPTkRTIiwiRm9ybWF0cy5USU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUIiwiRm9ybWF0cy5USU1FXzI0X1dJVEhfTE9OR19PRkZTRVQiLCJGb3JtYXRzLkRBVEVUSU1FX1NIT1JUIiwiRm9ybWF0cy5EQVRFVElNRV9NRUQiLCJGb3JtYXRzLkRBVEVUSU1FX0ZVTEwiLCJGb3JtYXRzLkRBVEVUSU1FX0hVR0UiLCJGb3JtYXRzLkRBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMiLCJGb3JtYXRzLkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTIiwiRW5nbGlzaC5tZXJpZGllbUZvckRhdGVUaW1lIiwiRW5nbGlzaC5tb250aEZvckRhdGVUaW1lIiwiRW5nbGlzaC53ZWVrZGF5Rm9yRGF0ZVRpbWUiLCJFbmdsaXNoLmVyYUZvckRhdGVUaW1lIiwiRW5nbGlzaC5tb250aHNTaG9ydCIsIkVuZ2xpc2gud2Vla2RheXNMb25nIiwiRW5nbGlzaC53ZWVrZGF5c1Nob3J0IiwiSU5WQUxJRCIsIm9yZGVyZWRVbml0cyIsImNsb25lIiwiRm9ybWF0cy5EQVRFX01FRF9XSVRIX1dFRUtEQVkiLCJGb3JtYXRzLkRBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkiLCJ0aGlzIiwiUC5hbHQiLCJQLnJlZ2V4IiwiUC53aGl0ZXNwYWNlIiwiUC5hbnkiLCJNYXJrZG93blJlbmRlcmVyIiwiUC5zZXFNYXAiLCJQLnNlcSIsIlAub3B0V2hpdGVzcGFjZSIsIlAuY3VzdG9tIiwiUC5jcmVhdGVMYW5ndWFnZSIsIlAucmVnZXhwIiwiUC5zdHJpbmciLCJQLm5vbmVPZiIsIlAuc3VjY2VlZCIsIlAuZmFpbCIsIkxpc3RJdGVtIiwiUGFwYS5wYXJzZSIsInJlcXVpcmUiLCJnbG9iYWwiLCJDb21wb25lbnQiLCJEYXRhdmlld0ltcG9ydFdvcmtlciIsIlRGaWxlIiwiVEZvbGRlciIsInUiLCJpIiwibyIsInIiLCJmIiwiZSIsImMiLCJhIiwiaCIsInYiLCJwIiwieSIsImQiLCJfIiwiayIsImIiLCJnIiwibSIsInciLCJ4IiwiTCIsIk0iLCJQIiwiQSIsIk8iLCIkIiwicSIsIkMiLCJIIiwiVCIsIkkiLCJ6IiwiaiIsIkIiLCJOIiwiRCIsIkUiLCJGIiwiRyIsIlYiLCJ0IiwiUyIsImNyZWF0ZUNvbnRleHQiLCJ1c2VSZWYiLCJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwiUmVhY3QiLCJGcmFnbWVudCIsInVzZVN0YXRlIiwiTWFya2Rvd25SZW5kZXJDaGlsZCIsInJlbmRlciIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJQbGF0Zm9ybSIsIlJlc3VsdENvdW50IiwiUC5lb2YiLCJQLnNlcEJ5IiwiV2lkZ2V0VHlwZSIsImVkaXRvckluZm9GaWVsZCIsIlZpZXdQbHVnaW4iLCJ2aWV3IiwiRGVjb3JhdGlvbiIsImVkaXRvckxpdmVQcmV2aWV3RmllbGQiLCJzeW50YXhUcmVlIiwidG9rZW5DbGFzc05vZGVQcm9wIiwiUGx1Z2luIiwiZGVib3VuY2UiLCJQbHVnaW5TZXR0aW5nVGFiIiwi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LENBQUMsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUU7QUFDL0QsSUFBSSxPQUFPLFNBQVMsQ0FBQztBQUNyQixHQUFHLE1BQU07QUFDVCxJQUFJLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDTyxTQUFTLFdBQVcsQ0FBQyxRQUFRLEVBQUU7QUFDdEM7QUFDQSxFQUFFLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxLQUFLLEVBQUUsRUFBRTtBQUNyRSxJQUFJLE9BQU8sU0FBUyxDQUFDO0FBQ3JCLEdBQUcsTUFBTTtBQUNULElBQUksTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDakQsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsR0FBRztBQUNILENBQUM7QUFDRDtBQUNPLFNBQVMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxHQUFHLEtBQUssRUFBRTtBQUM1RCxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxNQUFNO0FBQzdCLElBQUksT0FBTyxHQUFHLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDbkQsRUFBRSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQzNDLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDTyxTQUFTLFVBQVUsQ0FBQyxJQUFJLEVBQUU7QUFDakMsRUFBRSxPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUNEO0FBQ08sU0FBUyxVQUFVLENBQUMs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LENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdEO0FBQ0EsRUFBRUQsY0FBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEtBQUs7QUFDbEQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFO0FBQ3JDLE1BQU0sSUFBSSxRQUFRLEVBQUU7QUFDcEIsUUFBUSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3BELFFBQVEsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN0RCxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDO0FBQ2pELE9BQU87QUFDUCxNQUFNLE9BQU8sT0FBTyxDQUFDO0FBQ3JCLEtBQUssTUFBTTtBQUNYLE1BQU0sT0FBTyxRQUFRLENBQUM7QUFDdEIsS0FBSztBQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNYO0FBQ0E7QUFDQTtBQUNBLEVBQUVBLGNBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxLQUFLO0FBQzdDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRTtBQUNyQyxNQUFNLElBQUksUUFBUSxFQUFFO0FBQ3BCLFFBQVEsTUFBTSxRQUFRLEdBQUcsSUFB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QUksT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdGLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxPQUFPLFlBQVk7QUFDckIsSUFBSSxNQUFNLEdBQUcsTUFBTTtBQUNuQixJQUFJLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxlQUFlLEdBQUcsSUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFJLEVBQUUsY0FBYyxHQUFHLFNBQVMsRUFBRSxHQUFHLEVBQUU7QUFDN0YsSUFBSTtBQUNKLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuRyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxPQUFPLFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxlQUFlLEdBQUcsSUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDbEcsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDckYsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxPQUFPLGNBQWM7QUFDdkIsSUFBSSxNQUFN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QUUsS0FBSztBQUNiLENBQUMsQ0FBQztBQUNGO0FBQ0EsTUFBTSxxQkFBcUIsR0FBRztBQUM5QixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3ZCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztBQUMxQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDdkIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLElBQUksRUFBRSxD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QUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pGLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBQ0Q7QUFDQSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUN2QyxFQUFFLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckM7QUFDQSxFQUFFLElBQUksT0FBTyxFQUFFO0FBQ2YsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDbkIsSUFBSSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLFFBQVEsRUFBRTtBQUM5QixNQUFNLElBQUksY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUN2QyxRQUFRLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDN0IsVUFBVSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0MsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ25DLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLEdBQUcs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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDZixNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQyxLQUFLLE1BQU07QUFDWCxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDZixNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ2YsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFDLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksWUFBWSxFQUFFO0FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDckMsR0FBRztBQUNILEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLE1BQU0saUJBQWlCLEdBQUc7QUFDMUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUNaLElBQUksR0FBRyxFQUFFLENBQUM7QUFDVixJQUFJLElBQUksRUFBRSxDQUFDO0FBQ1gsSUFBSSxNQUFNLEVBQUUsQ0FBQztBQUNiLElBQUksTUFBTSxFQUFFLENBQUM7QUFDYixJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLHFCQUFxQixHQUFHO0FBQzFCLElBQUksVUFBVSxFQUFFLENBQUM7QUFDakIsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNkLElBQUksSUFBSSxFQUFFLENBQUM7QUFDWCxJQUFJ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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsT0FBTyxLQUFLLEdBQUc7QUFDakIsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7QUFDNUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNuRSxJQUFJLE9BQU8sT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEYsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxPQUFPLEdBQUcsR0FBRztBQUNmLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO0FBQzVDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDbkU7QUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQztBQUM1QyxJQUFJLE9BQU8sT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxD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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFNLFdBQVcsRUFBRSxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLCtGQUErRixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQywyRUFBMkUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLDBEQUEwRCxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLDJDQUEyQyxDQUFDLENBQUMsSUFBSSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU0sMEJBQTBCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksTUFBTSxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0RBQStELENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0lBQWdJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsMENBQTBDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7Ozs7O0FDQTUyZCxpQkFBZSxNQUFNO0FBQ3JCO0FBQ0EsQ0FBQyxPQUFPLDYyV0FBNjJXLENBQUM7QUFDdDNXLENBQUM7O0FDR0Q7QUFDTSxTQUFVLGlCQUFpQixDQUFDLEdBQWEsRUFBQTtBQUMzQyxJQUFBLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssSUFBSTtBQUFFLFFBQUEsT0FBTyxHQUFHLENBQUM7QUFFbEQsSUFBQSxPQUFPLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7QUFDTSxTQUFVLFNBQVMsQ0FBQyxFQUFZLEVBQUE7QUFDbEMsSUFBQSxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxLQUFLLFNBQVM7QUFBRSxRQUFBLE9BQU8sRUFBRSxDQUFDO0lBRS9DLE9BQU8sUUFBUSxDQUFDLFVBQVUsQ0FBQztRQUN2QixJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDYixLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUs7UUFDZixHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUc7QUFDZCxLQUFBLENBQUMsQ0FBQztBQUNQLENBQUM7QUFnQkQ7QUFDTSxTQUFVLGVBQWUsQ0FBQyxJQUFZLEVBQUE7QUFDeEMsSUFBQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBT0Q7QUFDTSxTQUFVLFlBQVksQ0FBQyxJQUFZLEVBQUE7QUFDckMsSUFBQSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0FBQUUsUUFBQSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLElBQUEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztBQUFFLFFBQUEsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEUsSUFBQSxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQ7QUFDTSxTQUFVLFlBQVksQ0FBQyxJQUFZLEVBQUE7QUFDckMsSUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7QUFBRSxRQUFBLE9BQU8sRUFBRSxDQUFDO0FBQ25DLElBQUEsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUVEO0FBQ00sU0FBVSxjQUFjLENBQUMsR0FBVyxFQUFBO0FBQ3RDLElBQUEsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQixJQUFBLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUN0QixRQUFBLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0MsUUFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLEtBQUE7QUFFRCxJQUFBLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFFRDtBQUNNLFNBQVUsY0FBYyxDQUFJLElBQTZCLEVBQUE7SUFDM0QsSUFBSTtRQUNBLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDakIsS0FBQTtBQUFDLElBQUEsT0FBTyxLQUFLLEVBQUU7QUFDWixRQUFBLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsS0FBSyxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUQsS0FBQTtBQUNMLENBQUM7QUFFRDtBQUNPLGVBQWUsbUJBQW1CLENBQUksSUFBc0MsRUFBQTtJQUMvRSxJQUFJO1FBQ0EsT0FBTyxNQUFNLElBQUksRUFBRSxDQUFDO0FBQ3ZCLEtBQUE7QUFBQyxJQUFBLE9BQU8sS0FBSyxFQUFFO0FBQ1osUUFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEtBQUssR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVELEtBQUE7QUFDTCxDQUFDO0FBRUQ7OztBQUdHO0FBQ0csU0FBVSxXQUFXLENBQUMsR0FBVyxFQUFBO0lBQ25DLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQ7QUFDQSxNQUFNLHNCQUFzQixHQUFxQkMsNEJBQUssQ0FDbERDLDhCQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDckNBLDhCQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEVBQ2xFQyxtQ0FBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQzFCQyw0QkFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQ3JCO0FBQ0ksS0FBQSxJQUFJLEVBQUU7QUFDTixLQUFBLEdBQUcsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRXBDO0FBQ00sU0FBVSxtQkFBbUIsQ0FBQyxJQUFZLEVBQUE7QUFDNUMsSUFBQSxPQUFPLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsTUFBTSxvQkFBb0IsR0FBcUJILDRCQUFLLENBQ2hEQyw4QkFBTyxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQ3JDQSw4QkFBTyxDQUFDLHFCQUFxQixDQUFDLEVBQzlCQyxtQ0FBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQzFCQyw0QkFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQ3RCO0FBQ0ksS0FBQSxJQUFJLEVBQUU7S0FDTixHQUFHLENBQUMsTUFBTSxJQUFHO0FBQ1YsSUFBQSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN6RCxDQUFDLENBQUMsQ0FBQztBQUVQOzs7QUFHRztBQUNHLFNBQVUsc0JBQXNCLENBQUMsTUFBYyxFQUFBO0FBQ2pELElBQUEsT0FBTyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVEO1NBQ2dCLGlCQUFpQixDQUFDLElBQWMsRUFBRSxRQUF1QixFQUFFLE1BQWMsRUFBQTs7QUFFckYsSUFBQSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO0FBQ3hELFFBQUEsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDMUUsS0FBQTtBQUVELElBQUEsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVEO0FBQ00sU0FBVSxxQkFBcUIsQ0FBQyxHQUFhLEVBQUE7QUFDL0MsSUFBQSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7O0FBRzdCLElBQUEsR0FBRyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQ3JCLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUM3RixDQUFDO0FBRUYsSUFBQSxPQUFPLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN6QixDQUFDO0FBRUQ7QUFDZ0IsU0FBQSxTQUFTLENBQUksS0FBYSxFQUFFLE1BQWMsRUFBQTtBQUN0RCxJQUFBLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSTtBQUFFLFFBQUEsT0FBTyxLQUFLLENBQUM7SUFDNUMsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLO0FBQUUsUUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFBRSxZQUFBLE9BQU8sS0FBSyxDQUFDO0FBRTVELElBQUEsT0FBTyxJQUFJLENBQUM7QUFDaEI7O0FDMUVNLElBQVcsTUFBTSxDQXFTdEI7QUFyU0QsQ0FBQSxVQUFpQixNQUFNLEVBQUE7O0lBRW5CLFNBQWdCLFFBQVEsQ0FDcEIsS0FBVSxFQUNWLFVBQXlCLHNCQUFzQixFQUMvQyxZQUFxQixLQUFLLEVBQUE7QUFFMUIsUUFBQSxJQUFJLE9BQU8sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0IsUUFBQSxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQztRQUUxQyxRQUFRLE9BQU8sQ0FBQyxJQUFJO0FBQ2hCLFlBQUEsS0FBSyxNQUFNO2dCQUNQLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQztBQUNoQyxZQUFBLEtBQUssUUFBUTtnQkFDVCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDekIsWUFBQSxLQUFLLFFBQVEsQ0FBQztBQUNkLFlBQUEsS0FBSyxTQUFTO0FBQ1YsZ0JBQUEsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUM5QixZQUFBLEtBQUssTUFBTTtBQUNQLGdCQUFBLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7QUFDbkMsWUFBQSxLQUFLLFFBQVE7QUFDVCxnQkFBQSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDcEMsWUFBQSxLQUFLLE1BQU07QUFDUCxnQkFBQSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDcEMsWUFBQSxLQUFLLFVBQVU7QUFDWCxnQkFBQSxPQUFPLFlBQVksQ0FBQztBQUN4QixZQUFBLEtBQUssT0FBTztnQkFDUixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDaEIsZ0JBQUEsSUFBSSxTQUFTO29CQUFFLE1BQU0sSUFBSSxHQUFHLENBQUM7Z0JBQzdCLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEUsZ0JBQUEsSUFBSSxTQUFTO29CQUFFLE1BQU0sSUFBSSxHQUFHLENBQUM7QUFDN0IsZ0JBQUEsT0FBTyxNQUFNLENBQUM7QUFDbEIsWUFBQSxLQUFLLFFBQVE7QUFDVCxnQkFBQSxRQUNJLElBQUk7QUFDSixvQkFBQSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7eUJBQ3hCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQzt5QkFDckQsSUFBSSxDQUFDLElBQUksQ0FBQztBQUNmLG9CQUFBLElBQUksRUFDTjtBQUNOLFlBQUEsS0FBSyxNQUFNO2dCQUNQLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7b0JBQ25GLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDNUQsaUJBQUE7Z0JBRUQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUNqRSxZQUFBLEtBQUssVUFBVTtBQUNYLGdCQUFBLE9BQU8scUJBQXFCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25ELFNBQUE7S0FDSjtBQS9DZSxJQUFBLE1BQUEsQ0FBQSxRQUFRLFdBK0N2QixDQUFBOztJQUdELFNBQWdCLFNBQVMsQ0FBQyxHQUFZLEVBQUE7UUFDbEMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ2hELElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzthQUN6RCxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7YUFDekQsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQzNELElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzthQUM3RCxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7YUFDckQsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ3pELElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzthQUN2RCxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7YUFDckQsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQzdELElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzthQUNyRCxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7O0FBQ3pELFlBQUEsT0FBTyxTQUFTLENBQUM7S0FDekI7QUFkZSxJQUFBLE1BQUEsQ0FBQSxTQUFTLFlBY3hCLENBQUE7O0FBR0QsSUFBQSxTQUFnQixTQUFTLENBQUMsR0FBWSxFQUFFLElBQTZCLEVBQUE7QUFDakUsUUFBQSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNmLElBQUksTUFBTSxHQUFlLEVBQUUsQ0FBQztBQUM1QixZQUFBLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuRixZQUFBLE9BQU8sTUFBTSxDQUFDO0FBQ2pCLFNBQUE7QUFBTSxhQUFBLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLElBQUksTUFBTSxHQUFjLEVBQUUsQ0FBQztZQUMzQixLQUFLLElBQUksS0FBSyxJQUFJLEdBQUc7Z0JBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDM0QsWUFBQSxPQUFPLE1BQU0sQ0FBQztBQUNqQixTQUFBO0FBQU0sYUFBQTtBQUNILFlBQUEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEIsU0FBQTtLQUNKO0FBWmUsSUFBQSxNQUFBLENBQUEsU0FBUyxZQVl4QixDQUFBOztBQUdELElBQUEsU0FBZ0IsWUFBWSxDQUFDLElBQWEsRUFBRSxJQUFhLEVBQUUsY0FBeUMsRUFBQTs7O1FBRWhHLElBQUksSUFBSSxLQUFLLFNBQVM7WUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLElBQUksSUFBSSxLQUFLLFNBQVM7WUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3BDLFFBQUEsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJO0FBQUUsWUFBQSxPQUFPLENBQUMsQ0FBQzthQUN4QyxJQUFJLElBQUksS0FBSyxJQUFJO1lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUM3QixJQUFJLElBQUksS0FBSyxJQUFJO0FBQUUsWUFBQSxPQUFPLENBQUMsQ0FBQzs7QUFHakMsUUFBQSxJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUIsUUFBQSxJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFNUIsUUFBQSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLFNBQVM7QUFBRSxZQUFBLE9BQU8sQ0FBQyxDQUFDO2FBQ3BELElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ25DLElBQUksS0FBSyxLQUFLLFNBQVM7QUFBRSxZQUFBLE9BQU8sQ0FBQyxDQUFDOztBQUd2QyxRQUFBLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFFLFFBQUEsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLO0FBQUUsWUFBQSxPQUFPLENBQUMsQ0FBQztRQUUxQyxRQUFRLEtBQUssQ0FBQyxJQUFJO0FBQ2QsWUFBQSxLQUFLLFFBQVE7Z0JBQ1QsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBZSxDQUFDLENBQUM7QUFDNUQsWUFBQSxLQUFLLFFBQVE7QUFDVCxnQkFBQSxJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUksS0FBSyxDQUFDLEtBQWdCO29CQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDaEQscUJBQUEsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFLLEtBQUssQ0FBQyxLQUFnQjtBQUFFLG9CQUFBLE9BQU8sQ0FBQyxDQUFDO0FBQzFELGdCQUFBLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsWUFBQSxLQUFLLE1BQU07QUFDUCxnQkFBQSxPQUFPLENBQUMsQ0FBQztBQUNiLFlBQUEsS0FBSyxTQUFTO0FBQ1YsZ0JBQUEsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLO0FBQUUsb0JBQUEsT0FBTyxDQUFDLENBQUM7O0FBQ3BDLG9CQUFBLE9BQU8sS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckMsWUFBQSxLQUFLLE1BQU07QUFDUCxnQkFBQSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQ3hCLGdCQUFBLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFhLENBQUM7QUFDaEMsZ0JBQUEsSUFBSSxTQUFTLEdBQUcsY0FBYyxLQUFkLElBQUEsSUFBQSxjQUFjLGNBQWQsY0FBYyxJQUFLLENBQUMsQ0FBUyxLQUFLLENBQUMsQ0FBQyxDQUFDOztBQUdyRCxnQkFBQSxJQUFJLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzdFLElBQUksV0FBVyxJQUFJLENBQUM7QUFBRSxvQkFBQSxPQUFPLFdBQVcsQ0FBQzs7QUFHekMsZ0JBQUEsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLFdBQVcsSUFBSSxDQUFDO0FBQUUsb0JBQUEsT0FBTyxXQUFXLENBQUM7O0FBR3pDLGdCQUFBLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO0FBQUUsb0JBQUEsT0FBTyxDQUFDLENBQUM7QUFDOUMsZ0JBQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU87b0JBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztBQUFFLG9CQUFBLE9BQU8sQ0FBQyxDQUFDOztBQUcvQyxnQkFBQSxPQUFPLENBQUMsQ0FBQSxFQUFBLEdBQUEsS0FBSyxDQUFDLE9BQU8sTUFBQSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBSSxFQUFFLEVBQUUsYUFBYSxDQUFDLE1BQUEsS0FBSyxDQUFDLE9BQU8sTUFBSSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBQSxFQUFFLENBQUMsQ0FBQztBQUNwRSxZQUFBLEtBQUssTUFBTTtBQUNQLGdCQUFBLE9BQU8sS0FBSyxDQUFDLEtBQUssR0FBSSxLQUFLLENBQUMsS0FBa0I7c0JBQ3hDLENBQUMsQ0FBQztzQkFDRixLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBaUIsQ0FBQztBQUM3QywwQkFBRSxDQUFDOzBCQUNELENBQUMsQ0FBQztBQUNaLFlBQUEsS0FBSyxVQUFVO0FBQ1gsZ0JBQUEsT0FBTyxLQUFLLENBQUMsS0FBSyxHQUFJLEtBQUssQ0FBQyxLQUFrQjtzQkFDeEMsQ0FBQyxDQUFDO3NCQUNGLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFpQixDQUFDO0FBQzdDLDBCQUFFLENBQUM7MEJBQ0QsQ0FBQyxDQUFDO0FBQ1osWUFBQSxLQUFLLE9BQU87QUFDUixnQkFBQSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQ3JCLGdCQUFBLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFjLENBQUM7Z0JBQzlCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO0FBQ2pFLG9CQUFBLElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQzlDLElBQUksSUFBSSxJQUFJLENBQUM7QUFBRSx3QkFBQSxPQUFPLElBQUksQ0FBQztBQUM5QixpQkFBQTtBQUNELGdCQUFBLE9BQU8sRUFBRSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQ2pDLFlBQUEsS0FBSyxRQUFRO0FBQ1QsZ0JBQUEsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUNyQixnQkFBQSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBNEIsQ0FBQztBQUM1QyxnQkFBQSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyQyxnQkFBQSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDckMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNWLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFFVixJQUFJLFVBQVUsR0FBRyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLFVBQVUsSUFBSSxDQUFDO0FBQUUsb0JBQUEsT0FBTyxVQUFVLENBQUM7QUFFdkMsZ0JBQUEsS0FBSyxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUU7QUFDaEIsb0JBQUEsSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxJQUFJLElBQUksQ0FBQztBQUFFLHdCQUFBLE9BQU8sSUFBSSxDQUFDO0FBQzlCLGlCQUFBO0FBRUQsZ0JBQUEsT0FBTyxDQUFDLENBQUM7QUFDYixZQUFBLEtBQUssUUFBUSxDQUFDO0FBQ2QsWUFBQSxLQUFLLE1BQU0sQ0FBQztBQUNaLFlBQUEsS0FBSyxVQUFVO0FBQ1gsZ0JBQUEsT0FBTyxDQUFDLENBQUM7QUFDaEIsU0FBQTtLQUNKO0FBOUZlLElBQUEsTUFBQSxDQUFBLFlBQVksZUE4RjNCLENBQUE7O0lBR0QsU0FBZ0IsTUFBTSxDQUFDLEdBQVEsRUFBQTs7QUFDM0IsUUFBQSxPQUFPLE1BQUEsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFBLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFFLElBQUksQ0FBQztLQUMvQjtBQUZlLElBQUEsTUFBQSxDQUFBLE1BQU0sU0FFckIsQ0FBQTs7SUFHRCxTQUFnQixRQUFRLENBQUMsS0FBYyxFQUFBO0FBQ25DLFFBQUEsSUFBSSxPQUFPLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLFFBQUEsSUFBSSxDQUFDLE9BQU87QUFBRSxZQUFBLE9BQU8sS0FBSyxDQUFDO1FBRTNCLFFBQVEsT0FBTyxDQUFDLElBQUk7QUFDaEIsWUFBQSxLQUFLLFFBQVE7QUFDVCxnQkFBQSxPQUFPLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQzlCLFlBQUEsS0FBSyxRQUFRO0FBQ1QsZ0JBQUEsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDcEMsWUFBQSxLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQ3pCLFlBQUEsS0FBSyxNQUFNO0FBQ1AsZ0JBQUEsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDaEMsWUFBQSxLQUFLLE1BQU07Z0JBQ1AsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6QyxZQUFBLEtBQUssVUFBVTtnQkFDWCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QyxZQUFBLEtBQUssUUFBUTtBQUNULGdCQUFBLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNqRCxZQUFBLEtBQUssT0FBTztBQUNSLGdCQUFBLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLFlBQUEsS0FBSyxNQUFNO0FBQ1AsZ0JBQUEsT0FBTyxLQUFLLENBQUM7QUFDakIsWUFBQSxLQUFLLE1BQU0sQ0FBQztBQUNaLFlBQUEsS0FBSyxRQUFRLENBQUM7QUFDZCxZQUFBLEtBQUssVUFBVTtBQUNYLGdCQUFBLE9BQU8sSUFBSSxDQUFDO0FBQ25CLFNBQUE7S0FDSjtBQTVCZSxJQUFBLE1BQUEsQ0FBQSxRQUFRLFdBNEJ2QixDQUFBOztJQUdELFNBQWdCLFFBQVEsQ0FBb0IsS0FBUSxFQUFBO0FBQ2hELFFBQUEsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTO0FBQUUsWUFBQSxPQUFPLEtBQUssQ0FBQztBQUV4RCxRQUFBLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN2QixZQUFBLE9BQVEsRUFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQU0sQ0FBQztBQUNyRSxTQUFBO0FBQU0sYUFBQSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxNQUFNLEdBQTRCLEVBQUUsQ0FBQztBQUN6QyxZQUFBLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlFLFlBQUEsT0FBTyxNQUFXLENBQUM7QUFDdEIsU0FBQTtBQUFNLGFBQUE7QUFDSCxZQUFBLE9BQU8sS0FBSyxDQUFDO0FBQ2hCLFNBQUE7S0FDSjtBQVplLElBQUEsTUFBQSxDQUFBLFFBQVEsV0FZdkIsQ0FBQTtJQUVELFNBQWdCLFFBQVEsQ0FBQyxHQUFRLEVBQUE7QUFDN0IsUUFBQSxPQUFPLE9BQU8sR0FBRyxJQUFJLFFBQVEsQ0FBQztLQUNqQztBQUZlLElBQUEsTUFBQSxDQUFBLFFBQVEsV0FFdkIsQ0FBQTtJQUVELFNBQWdCLFFBQVEsQ0FBQyxHQUFRLEVBQUE7QUFDN0IsUUFBQSxPQUFPLE9BQU8sR0FBRyxJQUFJLFFBQVEsQ0FBQztLQUNqQztBQUZlLElBQUEsTUFBQSxDQUFBLFFBQVEsV0FFdkIsQ0FBQTtJQUVELFNBQWdCLE1BQU0sQ0FBQyxHQUFRLEVBQUE7UUFDM0IsT0FBTyxHQUFHLFlBQVksUUFBUSxDQUFDO0tBQ2xDO0FBRmUsSUFBQSxNQUFBLENBQUEsTUFBTSxTQUVyQixDQUFBO0lBRUQsU0FBZ0IsVUFBVSxDQUFDLEdBQVEsRUFBQTtRQUMvQixPQUFPLEdBQUcsWUFBWSxRQUFRLENBQUM7S0FDbEM7QUFGZSxJQUFBLE1BQUEsQ0FBQSxVQUFVLGFBRXpCLENBQUE7SUFFRCxTQUFnQixNQUFNLENBQUMsR0FBUSxFQUFBO0FBQzNCLFFBQUEsT0FBTyxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLENBQUM7S0FDNUM7QUFGZSxJQUFBLE1BQUEsQ0FBQSxNQUFNLFNBRXJCLENBQUE7SUFFRCxTQUFnQixPQUFPLENBQUMsR0FBUSxFQUFBO0FBQzVCLFFBQUEsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzdCO0FBRmUsSUFBQSxNQUFBLENBQUEsT0FBTyxVQUV0QixDQUFBO0lBRUQsU0FBZ0IsU0FBUyxDQUFDLEdBQVEsRUFBQTtBQUM5QixRQUFBLE9BQU8sT0FBTyxHQUFHLEtBQUssU0FBUyxDQUFDO0tBQ25DO0FBRmUsSUFBQSxNQUFBLENBQUEsU0FBUyxZQUV4QixDQUFBO0lBRUQsU0FBZ0IsTUFBTSxDQUFDLEdBQVEsRUFBQTtRQUMzQixPQUFPLEdBQUcsWUFBWSxJQUFJLENBQUM7S0FDOUI7QUFGZSxJQUFBLE1BQUEsQ0FBQSxNQUFNLFNBRXJCLENBQUE7SUFFRCxTQUFnQixRQUFRLENBQUMsR0FBUSxFQUFBO1FBQzdCLE9BQU8sR0FBRyxZQUFZLE1BQU0sQ0FBQztLQUNoQztBQUZlLElBQUEsTUFBQSxDQUFBLFFBQVEsV0FFdkIsQ0FBQTtJQUVELFNBQWdCLE1BQU0sQ0FBQyxHQUFRLEVBQUE7QUFDM0IsUUFBQSxJQUFJLE9BQU8sV0FBVyxLQUFLLFdBQVcsRUFBRTtZQUNwQyxPQUFPLEdBQUcsWUFBWSxXQUFXLENBQUM7QUFDckMsU0FBQTtBQUFNLGFBQUE7QUFDSCxZQUFBLE9BQU8sS0FBSyxDQUFDO0FBQ2hCLFNBQUE7S0FDSjtBQU5lLElBQUEsTUFBQSxDQUFBLE1BQU0sU0FNckIsQ0FBQTs7SUFHRCxTQUFnQixRQUFRLENBQUMsR0FBUSxFQUFBO0FBQzdCLFFBQUEsUUFDSSxPQUFPLEdBQUcsSUFBSSxRQUFRO1lBQ3RCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUNaLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUNkLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNiLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUNoQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDWixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDWixZQUFBLEdBQUcsS0FBSyxTQUFTO0FBQ2pCLFlBQUEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQ2Q7S0FDTDtBQVplLElBQUEsTUFBQSxDQUFBLFFBQVEsV0FZdkIsQ0FBQTtJQUVELFNBQWdCLFVBQVUsQ0FBQyxHQUFRLEVBQUE7QUFDL0IsUUFBQSxPQUFPLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQztLQUNuQztBQUZlLElBQUEsTUFBQSxDQUFBLFVBQVUsYUFFekIsQ0FBQTtBQUNMLENBQUMsRUFyU2dCLE1BQU0sS0FBTixNQUFNLEdBcVN0QixFQUFBLENBQUEsQ0FBQSxDQUFBO0FBRUQ7QUFDQTtBQUNBO0FBRU0sSUFBVyxTQUFTLENBdUJ6QjtBQXZCRCxDQUFBLFVBQWlCLFNBQVMsRUFBQTs7SUFFdEIsU0FBZ0IsY0FBYyxDQUFJLEtBQTBCLEVBQUE7UUFDeEQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUM7S0FDeEc7QUFGZSxJQUFBLFNBQUEsQ0FBQSxjQUFjLGlCQUU3QixDQUFBOztJQUdELFNBQWdCLFVBQVUsQ0FBSSxLQUFrQixFQUFBO1FBQzVDLEtBQUssSUFBSSxPQUFPLElBQUksS0FBSztBQUFFLFlBQUEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7QUFBRSxnQkFBQSxPQUFPLEtBQUssQ0FBQztBQUV0RSxRQUFBLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7QUFKZSxJQUFBLFNBQUEsQ0FBQSxVQUFVLGFBSXpCLENBQUE7O0lBR0QsU0FBZ0IsS0FBSyxDQUFJLFFBQXFCLEVBQUE7QUFDMUMsUUFBQSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN0QixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDZixLQUFLLElBQUksUUFBUSxJQUFJLFFBQVE7QUFBRSxnQkFBQSxNQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5RCxZQUFBLE9BQU8sTUFBTSxDQUFDO0FBQ2pCLFNBQUE7QUFBTSxhQUFBO1lBQ0gsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQzFCLFNBQUE7S0FDSjtBQVJlLElBQUEsU0FBQSxDQUFBLEtBQUssUUFRcEIsQ0FBQTtBQUNMLENBQUMsRUF2QmdCLFNBQVMsS0FBVCxTQUFTLEdBdUJ6QixFQUFBLENBQUEsQ0FBQSxDQUFBO0FBRUQ7QUFDQTtBQUNBO0FBRUE7TUFDYSxJQUFJLENBQUE7O0lBYU4sT0FBTyxJQUFJLENBQUMsSUFBWSxFQUFFLEtBQWlCLEdBQUEsS0FBSyxFQUFFLE9BQWdCLEVBQUE7UUFDckUsT0FBTyxJQUFJLElBQUksQ0FBQztZQUNaLElBQUk7WUFDSixLQUFLO1lBQ0wsT0FBTztBQUNQLFlBQUEsT0FBTyxFQUFFLFNBQVM7QUFDbEIsWUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNmLFNBQUEsQ0FBQyxDQUFDO0tBQ047SUFFTSxPQUFPLEtBQUssQ0FBQyxRQUFnQixFQUFFLEtBQWlCLEdBQUEsS0FBSyxFQUFFLE9BQWdCLEVBQUE7QUFDMUUsUUFBQSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekIsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxZQUFBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN6RCxTQUFBO0FBQU0sYUFBQSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoQyxZQUFBLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMxRCxTQUFBOztZQUFNLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3JEOztJQUdNLE9BQU8sTUFBTSxDQUFDLElBQVksRUFBRSxNQUFjLEVBQUUsS0FBZSxFQUFFLE9BQWdCLEVBQUE7O1FBRWhGLE9BQU8sSUFBSSxJQUFJLENBQUM7WUFDWixJQUFJO1lBQ0osS0FBSztZQUNMLE9BQU87QUFDUCxZQUFBLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQyxNQUFNLENBQUM7QUFDdkMsWUFBQSxJQUFJLEVBQUUsUUFBUTtBQUNqQixTQUFBLENBQUMsQ0FBQztLQUNOOztJQUdNLE9BQU8sS0FBSyxDQUFDLElBQVksRUFBRSxPQUFlLEVBQUUsS0FBZSxFQUFFLE9BQWdCLEVBQUE7UUFDaEYsT0FBTyxJQUFJLElBQUksQ0FBQztZQUNaLElBQUk7WUFDSixLQUFLO1lBQ0wsT0FBTztBQUNQLFlBQUEsT0FBTyxFQUFFLE9BQU87QUFDaEIsWUFBQSxJQUFJLEVBQUUsT0FBTztBQUNoQixTQUFBLENBQUMsQ0FBQztLQUNOO0lBRU0sT0FBTyxVQUFVLENBQUMsTUFBMkIsRUFBQTtBQUNoRCxRQUFBLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDM0I7QUFFRCxJQUFBLFdBQUEsQ0FBb0IsTUFBcUIsRUFBQTtBQUNyQyxRQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQy9COztBQUdNLElBQUEsTUFBTSxDQUFDLEtBQVcsRUFBQTtBQUNyQixRQUFBLElBQUksS0FBSyxJQUFJLFNBQVMsSUFBSSxLQUFLLElBQUksSUFBSTtBQUFFLFlBQUEsT0FBTyxLQUFLLENBQUM7UUFFdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQztLQUM5Rjs7SUFHTSxRQUFRLEdBQUE7QUFDWCxRQUFBLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQzFCOztJQUdNLFFBQVEsR0FBQTtBQUNYLFFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7S0FDaEg7OztBQUlNLElBQUEsUUFBUSxDQUFDLElBQVksRUFBQTtBQUN4QixRQUFBLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ3REOztBQUdNLElBQUEsV0FBVyxDQUFDLE9BQWdCLEVBQUE7QUFDL0IsUUFBQSxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztLQUN6RDs7QUFHTSxJQUFBLFVBQVUsQ0FBQyxNQUFjLEVBQUE7QUFDNUIsUUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDbkU7O0lBR00sTUFBTSxHQUFBO0FBQ1QsUUFBQSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUN6RDs7SUFHTSxPQUFPLEdBQUE7UUFDVixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDWixZQUFBLE9BQU8sSUFBSSxDQUFDO0FBQ2YsU0FBQTtBQUFNLGFBQUE7QUFDSCxZQUFBLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLFlBQUEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDbEIsWUFBQSxPQUFPLElBQUksQ0FBQztBQUNmLFNBQUE7S0FDSjs7SUFHTSxTQUFTLEdBQUE7QUFDWixRQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ2IsWUFBQSxPQUFPLElBQUksQ0FBQztBQUNmLFNBQUE7QUFBTSxhQUFBO0FBQ0gsWUFBQSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxQixZQUFBLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ25CLFlBQUEsT0FBTyxJQUFJLENBQUM7QUFDZixTQUFBO0tBQ0o7O0lBR00sUUFBUSxHQUFBO1FBQ1gsSUFBSSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVsRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDZCxZQUFBLE1BQU0sSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUNoQyxTQUFBO0FBQU0sYUFBQTtZQUNILE1BQU0sSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTztBQUFFLGdCQUFBLE1BQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUNyRixTQUFBO1FBRUQsTUFBTSxJQUFJLElBQUksQ0FBQztBQUNmLFFBQUEsT0FBTyxNQUFNLENBQUM7S0FDakI7O0lBR00sWUFBWSxHQUFBOztBQUNmLFFBQUEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzlDLFFBQUEsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVE7QUFBRSxZQUFBLE9BQU8sT0FBTyxHQUFHLEdBQUcsSUFBRyxDQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsT0FBTyxNQUFFLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQztBQUNwRixRQUFBLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPO0FBQUUsWUFBQSxPQUFPLE9BQU8sR0FBRyxJQUFJLElBQUcsQ0FBQSxFQUFBLEdBQUEsSUFBSSxDQUFDLE9BQU8sTUFBRSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBLENBQUM7O0FBQy9FLFlBQUEsT0FBTyxPQUFPLENBQUM7S0FDdkI7O0lBR00sUUFBUSxHQUFBO0FBQ1gsUUFBQSxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztLQUNyRDtBQUNKLENBQUE7QUFFRDtBQUNBO0FBQ0E7QUFFQTs7OztBQUlHO01BQ21CLE1BQU0sQ0FBQTtBQUN4QixJQUFBLFdBQUEsQ0FBMEIsT0FBZSxFQUFBO1FBQWYsSUFBTyxDQUFBLE9BQUEsR0FBUCxPQUFPLENBQVE7S0FBSTtBQVNoRCxDQUFBO0FBRUQ7QUFDTSxNQUFPLGNBQWUsU0FBUSxNQUFNLENBQUE7SUFDdEMsV0FBMEIsQ0FBQSxHQUFZLEVBQVMsS0FBYyxFQUFBO1FBQ3pELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRE4sSUFBRyxDQUFBLEdBQUEsR0FBSCxHQUFHLENBQVM7UUFBUyxJQUFLLENBQUEsS0FBQSxHQUFMLEtBQUssQ0FBUztLQUU1RDtJQUVlLFFBQVEsR0FBQTtBQUNwQixRQUFBLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0tBQ3pFO0FBQ0osQ0FBQTtBQUVEO0FBQ00sTUFBTyxrQkFBbUIsU0FBUSxNQUFNLENBQUE7SUFDMUMsV0FBMEIsQ0FBQSxHQUFXLEVBQVMsT0FBZ0IsRUFBQTtRQUMxRCxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQURWLElBQUcsQ0FBQSxHQUFBLEdBQUgsR0FBRyxDQUFRO1FBQVMsSUFBTyxDQUFBLE9BQUEsR0FBUCxPQUFPLENBQVM7S0FFN0Q7SUFFZSxRQUFRLEdBQUE7O0FBQ3BCLFFBQUEsT0FBTyxDQUFJLENBQUEsRUFBQSxDQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsT0FBTyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxHQUFHLENBQUssRUFBQSxFQUFBLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUN2RDtBQUNKLENBQUE7QUFFSyxJQUFXLE9BQU8sQ0F3QnZCO0FBeEJELENBQUEsVUFBaUIsT0FBTyxFQUFBOztBQUVwQixJQUFBLFNBQWdCLFFBQVEsQ0FBQyxHQUFZLEVBQUUsS0FBYyxFQUFBO0FBQ2pELFFBQUEsT0FBTyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDekM7QUFGZSxJQUFBLE9BQUEsQ0FBQSxRQUFRLFdBRXZCLENBQUE7O0FBR0QsSUFBQSxTQUFnQixZQUFZLENBQUMsR0FBVyxFQUFFLE9BQWdCLEVBQUE7QUFDdEQsUUFBQSxPQUFPLElBQUksa0JBQWtCLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQy9DO0FBRmUsSUFBQSxPQUFBLENBQUEsWUFBWSxlQUUzQixDQUFBOztJQUdELFNBQWdCLFVBQVUsQ0FBQyxNQUFjLEVBQUE7QUFDckMsUUFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLEtBQUssb0JBQW9CLENBQUM7S0FDbEQ7QUFGZSxJQUFBLE9BQUEsQ0FBQSxVQUFVLGFBRXpCLENBQUE7SUFFRCxTQUFnQixjQUFjLENBQUMsTUFBYyxFQUFBO0FBQ3pDLFFBQUEsT0FBTyxNQUFNLENBQUMsT0FBTyxLQUFLLHdCQUF3QixDQUFDO0tBQ3REO0FBRmUsSUFBQSxPQUFBLENBQUEsY0FBYyxpQkFFN0IsQ0FBQTs7SUFHRCxTQUFnQixTQUFTLENBQUMsTUFBYyxFQUFBO1FBQ3BDLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN2RDtBQUZlLElBQUEsT0FBQSxDQUFBLFNBQVMsWUFFeEIsQ0FBQTtBQUNMLENBQUMsRUF4QmdCLE9BQU8sS0FBUCxPQUFPLEdBd0J2QixFQUFBLENBQUEsQ0FBQTs7QUMxZkQ7QUFDQSxNQUFNLGFBQWEsQ0FBQTtJQWtEUixPQUFPLElBQUksQ0FDZCxHQUFRLEVBQ1IsUUFBdUIsRUFDdkIsaUJBQUEsR0FBMEMsTUFBTSxDQUFDLFlBQVksRUFBQTtBQUU3RCxRQUFBLE9BQU8sSUFBSSxLQUFLLENBQ1osSUFBSSxhQUFhLENBQUksR0FBRyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxFQUN0RCxhQUFhLENBQUMsV0FBVyxDQUM1QixDQUFDO0tBQ0w7QUFLRCxJQUFBLFdBQUEsQ0FDVyxNQUFhLEVBQ2IsUUFBdUIsRUFDdkIsaUJBQTBDLEdBQUEsTUFBTSxDQUFDLFlBQVksRUFBQTtRQUY3RCxJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBTztRQUNiLElBQVEsQ0FBQSxRQUFBLEdBQVIsUUFBUSxDQUFlO1FBQ3ZCLElBQWlCLENBQUEsaUJBQUEsR0FBakIsaUJBQWlCLENBQTRDO0FBRXBFLFFBQUEsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0tBQy9CO0FBRU8sSUFBQSxLQUFLLENBQUksTUFBVyxFQUFBO0FBQ3hCLFFBQUEsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBQzVFO0FBRU0sSUFBQSxLQUFLLENBQUMsU0FBZ0MsRUFBQTtBQUN6QyxRQUFBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0tBQ3BEO0FBRU0sSUFBQSxNQUFNLENBQUMsU0FBZ0MsRUFBQTtBQUMxQyxRQUFBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNoQztBQUVNLElBQUEsR0FBRyxDQUFJLENBQWtCLEVBQUE7QUFDNUIsUUFBQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6QztBQUVNLElBQUEsT0FBTyxDQUFJLENBQW9CLEVBQUE7UUFDbEMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLFFBQUEsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7QUFDOUMsWUFBQSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RELFlBQUEsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQUUsU0FBUztZQUUxQyxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUs7QUFBRSxnQkFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLFNBQUE7QUFFRCxRQUFBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUM3QjtBQUVNLElBQUEsTUFBTSxDQUFDLENBQXFCLEVBQUE7QUFDL0IsUUFBQSxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7QUFDckQsWUFBQSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdDLFNBQUE7QUFFRCxRQUFBLE9BQU8sSUFBVyxDQUFDO0tBQ3RCO0FBRU0sSUFBQSxLQUFLLENBQUMsS0FBYSxFQUFBO0FBQ3RCLFFBQUEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ2xEO0lBRU0sS0FBSyxDQUFDLEtBQWMsRUFBRSxHQUFZLEVBQUE7QUFDckMsUUFBQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDcEQ7QUFFTSxJQUFBLE1BQU0sQ0FBQyxLQUFtQixFQUFBO0FBQzdCLFFBQUEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0tBQ3ZEOztJQUdNLE9BQU8sQ0FBQyxPQUFVLEVBQUUsU0FBa0IsRUFBQTtRQUN6QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ2xGOztBQUdNLElBQUEsSUFBSSxDQUFDLElBQTJCLEVBQUE7UUFDbkMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7QUFBRSxZQUFBLE9BQU8sU0FBUyxDQUFDOztBQUM3QixZQUFBLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNsQztJQUVNLFNBQVMsQ0FBQyxJQUEyQixFQUFFLFNBQWtCLEVBQUE7QUFDNUQsUUFBQSxLQUFLLElBQUksS0FBSyxHQUFHLFNBQVMsS0FBVCxJQUFBLElBQUEsU0FBUyxjQUFULFNBQVMsR0FBSSxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7QUFDM0QsWUFBQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQUUsZ0JBQUEsT0FBTyxLQUFLLENBQUM7QUFDbEUsU0FBQTtRQUVELE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDYjtBQUVNLElBQUEsUUFBUSxDQUFDLE9BQVUsRUFBQTtRQUN0QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ3pDO0FBRU0sSUFBQSxJQUFJLENBQUMsR0FBWSxFQUFBO0FBQ3BCLFFBQUEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEQsYUFBQSxLQUFLLEVBQUU7YUFDUCxJQUFJLENBQUMsR0FBRyxLQUFILElBQUEsSUFBQSxHQUFHLGNBQUgsR0FBRyxHQUFJLElBQUksQ0FBQyxDQUFDO0tBQzFCO0FBRU0sSUFBQSxJQUFJLENBQUksR0FBcUIsRUFBRSxTQUEwQixFQUFFLFVBQStCLEVBQUE7QUFDN0YsUUFBQSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUM7QUFBRSxZQUFBLE9BQU8sSUFBSSxDQUFDO1FBQ3pDLElBQUksY0FBYyxHQUFHLFVBQVUsS0FBVixJQUFBLElBQUEsVUFBVSxLQUFWLEtBQUEsQ0FBQSxHQUFBLFVBQVUsR0FBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7QUFDMUQsUUFBQSxJQUFJLE9BQU8sR0FBRyxHQUFHLEtBQUgsSUFBQSxJQUFBLEdBQUcsY0FBSCxHQUFHLElBQUssQ0FBQyxDQUFJLEtBQUssQ0FBYSxDQUFDLENBQUM7O0FBRy9DLFFBQUEsSUFBSSxJQUFJLEdBQUksRUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxLQUFJO1lBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN6QyxTQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFJO0FBQ2YsWUFBQSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsRCxZQUFBLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xELE9BQU8sU0FBUyxLQUFLLE1BQU0sR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMzRixTQUFDLENBQUMsQ0FBQztBQUVILFFBQUEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQzdDO0FBRU0sSUFBQSxXQUFXLENBQ2QsR0FBcUIsRUFDckIsU0FBMEIsRUFDMUIsVUFBK0IsRUFBQTtBQUUvQixRQUFBLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQztBQUFFLFlBQUEsT0FBTyxJQUFJLENBQUM7UUFDekMsSUFBSSxjQUFjLEdBQUcsVUFBVSxLQUFWLElBQUEsSUFBQSxVQUFVLEtBQVYsS0FBQSxDQUFBLEdBQUEsVUFBVSxHQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztBQUMxRCxRQUFBLElBQUksT0FBTyxHQUFHLEdBQUcsS0FBSCxJQUFBLElBQUEsR0FBRyxjQUFILEdBQUcsSUFBSyxDQUFDLENBQUksS0FBSyxDQUFhLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUk7QUFDdEIsWUFBQSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsWUFBQSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdEIsT0FBTyxTQUFTLElBQUksTUFBTSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFGLFNBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBQSxPQUFPLElBQUksQ0FBQztLQUNmO0lBRU0sT0FBTyxDQUNWLEdBQW9CLEVBQ3BCLFVBQStCLEVBQUE7QUFFL0IsUUFBQSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUM7QUFBRSxZQUFBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQzs7O0FBSW5ELFFBQUEsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELFVBQVUsR0FBRyxVQUFVLEtBQUEsSUFBQSxJQUFWLFVBQVUsS0FBQSxLQUFBLENBQUEsR0FBVixVQUFVLEdBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRWxELElBQUksTUFBTSxHQUFxQyxFQUFFLENBQUM7UUFDbEQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxRQUFBLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzRCxRQUFBLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO0FBQ3RELFlBQUEsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xFLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbEMsZ0JBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RCxPQUFPLEdBQUcsTUFBTSxDQUFDO0FBQ2pCLGdCQUFBLFVBQVUsR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLGFBQUE7QUFBTSxpQkFBQTtnQkFDSCxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLGFBQUE7QUFDSixTQUFBO0FBQ0QsUUFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFNUQsUUFBQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDN0I7SUFFTSxPQUFPLENBQUksR0FBK0IsRUFBRSxVQUErQixFQUFBO1FBQzlFLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDbkMsWUFBQSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFHO2dCQUNoQixPQUFPO29CQUNILEdBQUcsRUFBRyxDQUFTLENBQUMsR0FBRztBQUNuQixvQkFBQSxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBRSxDQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBVSxFQUFFLFVBQWlCLENBQUM7aUJBQ3ZGLENBQUM7QUFDYixhQUFDLENBQUMsQ0FBQztBQUNOLFNBQUE7QUFBTSxhQUFBO1lBQ0gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQVUsRUFBRSxVQUFVLENBQVEsQ0FBQztBQUN0RCxTQUFBO0tBQ0o7SUFFTSxRQUFRLENBQUksR0FBcUIsRUFBRSxVQUErQixFQUFBO0FBQ3JFLFFBQUEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDO0FBQUUsWUFBQSxPQUFPLElBQUksQ0FBQztBQUN6QyxRQUFBLElBQUksT0FBTyxHQUFHLEdBQUcsS0FBQSxJQUFBLElBQUgsR0FBRyxLQUFILEtBQUEsQ0FBQSxHQUFBLEdBQUcsSUFBSyxDQUFDLElBQUksQ0FBYSxDQUFDLENBQUM7O1FBRzFDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxLQUFJO0FBQ3JDLFlBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQzdELFNBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDdkMsVUFBVSxHQUFHLFVBQVUsS0FBQSxJQUFBLElBQVYsVUFBVSxLQUFBLEtBQUEsQ0FBQSxHQUFWLFVBQVUsR0FBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFFbEQsSUFBSSxNQUFNLEdBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUMsUUFBQSxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN0RCxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN2RSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQyxhQUFBO0FBQ0osU0FBQTtBQUVELFFBQUEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQzdCO0FBRU0sSUFBQSxLQUFLLENBQUMsQ0FBd0IsRUFBQTtRQUNqQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQy9CO0FBRU0sSUFBQSxJQUFJLENBQUMsQ0FBd0IsRUFBQTtRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzlCO0FBRU0sSUFBQSxJQUFJLENBQUMsQ0FBd0IsRUFBQTtRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3REO0lBRU0sS0FBSyxHQUFBO1FBQ1IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7S0FDOUQ7SUFDTSxJQUFJLEdBQUE7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztLQUNuRjtBQUVNLElBQUEsRUFBRSxDQUFDLEdBQVcsRUFBQTtRQUNqQixJQUFJLE1BQU0sR0FBVSxFQUFFLENBQUM7QUFDdkIsUUFBQSxLQUFLLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDM0IsWUFBQSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsWUFBQSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUk7Z0JBQUUsU0FBUztBQUVwRCxZQUFBLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztBQUFFLGdCQUFBLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFDeEYsZ0JBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzQixTQUFBO0FBRUQsUUFBQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDN0I7QUFFTSxJQUFBLElBQUksQ0FBQyxHQUFXLEVBQUE7UUFDbkIsSUFBSSxNQUFNLEdBQVUsRUFBRSxDQUFDO0FBQ3ZCLFFBQUEsS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQzNCLFlBQUEsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLFlBQUEsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJO2dCQUFFLFNBQVM7QUFFcEQsWUFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RCLFNBQUE7QUFFRCxRQUFBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUM3QjtBQUVNLElBQUEsTUFBTSxDQUFDLEdBQVcsRUFBQTtRQUNyQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxLQUFLLEdBQVcsRUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFckQsUUFBQSxPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3JCLFlBQUEsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCLFlBQUEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRXRCLFlBQUEsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJO2dCQUFFLFNBQVM7QUFDcEQsWUFBQSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQUUsZ0JBQUEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN2RCxJQUFJLEtBQUssWUFBWSxhQUFhO0FBQUUsZ0JBQUEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUN0RSxnQkFBQSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXZCLFlBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQixTQUFBO0FBRUQsUUFBQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDN0I7QUFFTSxJQUFBLE9BQU8sQ0FBQyxDQUFxQixFQUFBO0FBQ2hDLFFBQUEsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO0FBQ3JELFlBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3QyxTQUFBO0tBQ0o7SUFFTSxLQUFLLEdBQUE7UUFDUixPQUFRLEVBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQzVDO0lBRU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUE7UUFDcEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0tBQ3pDO0lBRU0sUUFBUSxHQUFBO0FBQ1gsUUFBQSxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7S0FDN0M7O0FBdlVjLGFBQWUsQ0FBQSxlQUFBLEdBQWdCLElBQUksR0FBRyxDQUFDO0lBQ2xELE9BQU87SUFDUCxRQUFRO0lBQ1IsS0FBSztJQUNMLFNBQVM7SUFDVCxRQUFRO0lBQ1IsT0FBTztJQUNQLFFBQVE7SUFDUixTQUFTO0lBQ1QsT0FBTztJQUNQLE1BQU07SUFDTixXQUFXO0lBQ1gsVUFBVTtJQUNWLE1BQU07SUFDTixNQUFNO0lBQ04sYUFBYTtJQUNiLFNBQVM7SUFDVCxTQUFTO0lBQ1QsVUFBVTtJQUNWLE9BQU87SUFDUCxNQUFNO0lBQ04sTUFBTTtJQUNOLE9BQU87SUFDUCxNQUFNO0lBQ04sSUFBSTtJQUNKLE1BQU07SUFDTixPQUFPO0lBQ1AsUUFBUTtJQUNSLFNBQVM7SUFDVCxRQUFRO0lBQ1IsUUFBUTtJQUNSLE9BQU87SUFDUCxtQkFBbUI7SUFDbkIsVUFBVTtJQUNWLFVBQVU7QUFDYixDQUFBLENBQUMsQ0FBQztBQUVZLGFBQUEsQ0FBQSxXQUFXLEdBQXFDO0FBQzNELElBQUEsR0FBRyxFQUFFLFVBQVUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUE7UUFDakMsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO0FBQUUsWUFBQSxPQUFRLE1BQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN0RCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7QUFBRSxZQUFBLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN6RCxJQUFJLElBQUksS0FBSyxhQUFhO0FBQUUsWUFBQSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO0FBQzdELGFBQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDakUsSUFBSSxhQUFhLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFBRSxZQUFBLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBRTVGLFFBQUEsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzFCO0NBQ0osQ0FBQztBQTJSTjtBQUNNLElBQVcsU0FBUyxDQW9CekI7QUFwQkQsQ0FBQSxVQUFpQixTQUFTLEVBQUE7O0FBRXRCLElBQUEsU0FBZ0IsSUFBSSxDQUFJLEdBQXVCLEVBQUUsUUFBdUIsRUFBQTtRQUNwRSxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUM7QUFBRSxZQUFBLE9BQU8sR0FBRyxDQUFDO1FBQ2pDLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDNUM7QUFIZSxJQUFBLFNBQUEsQ0FBQSxJQUFJLE9BR25CLENBQUE7O0FBR0QsSUFBQSxTQUFnQixJQUFJLENBQUksR0FBZ0IsRUFBRSxRQUF1QixFQUFBO1FBQzdELElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQztBQUFFLFlBQUEsT0FBTyxHQUFHLENBQUM7UUFFakMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHO0FBQUUsWUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDN0M7QUFOZSxJQUFBLFNBQUEsQ0FBQSxJQUFJLE9BTW5CLENBQUE7O0lBR0QsU0FBZ0IsV0FBVyxDQUFDLEdBQVEsRUFBQTtRQUNoQyxPQUFPLEdBQUcsWUFBWSxhQUFhLENBQUM7S0FDdkM7QUFGZSxJQUFBLFNBQUEsQ0FBQSxXQUFXLGNBRTFCLENBQUE7QUFDTCxDQUFDLEVBcEJnQixTQUFTLEtBQVQsU0FBUyxHQW9CekIsRUFBQSxDQUFBLENBQUEsQ0FBQTtBQUVEO0FBQ0EsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztBQUN0QyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxLQUFrQjtJQUNsQyxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlELENBQUM7O0FDeGVEO1NBQ2dCLGFBQWEsR0FBQTtJQUN6QixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVc7QUFBRSxRQUFBLE9BQU8sT0FBTyxDQUFDO0FBQ2xELElBQUEsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztBQUNyQzs7QUNHQTtBQUNPLGVBQWUscUJBQXFCLENBQ3ZDLFFBQWdCLEVBQ2hCLFNBQXNCLEVBQ3RCLFVBQWtCLEVBQ2xCLFNBQW9CLEVBQUE7QUFFcEIsSUFBQSxJQUFJLFlBQVksR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDMUMsSUFBQSxNQUFNQyx5QkFBZ0IsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFckYsSUFBSSxTQUFTLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6RCxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxTQUFTLEVBQUU7UUFDaEQsT0FBTyxTQUFTLENBQUMsVUFBVSxFQUFFO0FBQ3pCLFlBQUEsWUFBWSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDbEQsU0FBQTtBQUNELFFBQUEsWUFBWSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2QyxLQUFBO0FBQ0wsQ0FBQztBQUVEO0FBQ2dCLFNBQUEsY0FBYyxDQUFDLFNBQXNCLEVBQUUsS0FBYSxFQUFBO0FBQ2hFLElBQUEsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0UsSUFBQSxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RCLElBQUEsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBRUQ7U0FDZ0IsZUFBZSxDQUFDLFNBQXNCLEVBQUUsTUFBYyxFQUFFLFFBQWlCLEVBQUE7QUFDckYsSUFBQSxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3RCxJQUFBLElBQUksUUFBUTtRQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsQ0FBQztBQUN6RCxJQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEIsSUFBQSxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBSUQ7QUFDTyxlQUFlLFdBQVcsQ0FDN0IsS0FBYyxFQUNkLFNBQXNCLEVBQ3RCLFVBQWtCLEVBQ2xCLFNBQW9CLEVBQ3BCLFFBQXVCLEVBQ3ZCLFVBQXNCLEdBQUEsS0FBSyxFQUMzQixPQUE4QixHQUFBLE1BQU0sRUFDcEMsS0FBQSxHQUFnQixDQUFDLEVBQUE7OztBQUdqQixJQUFBLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRTtBQUMxQyxRQUFBLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsT0FBTztBQUNWLEtBQUE7QUFFRCxJQUFBLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN0QixRQUFBLE1BQU0scUJBQXFCLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3hGLEtBQUE7QUFBTSxTQUFBLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUM3QixRQUFBLFNBQVMsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0UsS0FBQTtBQUFNLFNBQUEsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ2pDLFNBQVMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN0RCxLQUFBO1NBQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNwRixRQUFBLE1BQU0scUJBQXFCLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzdFLEtBQUE7QUFBTSxTQUFBLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUM3QixRQUFBLE1BQU0scUJBQXFCLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbkYsS0FBQTtBQUFNLFNBQUEsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzdCLFFBQUEsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQyxLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDL0IsUUFBQSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0IsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyRyxZQUFBLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMxRyxTQUFBO0FBQU0sYUFBQSxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdEMsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUEsRUFBQSxHQUFBLEtBQUssQ0FBQyxPQUFPLE1BQUksSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLEdBQUEsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUM5QyxZQUFBLElBQUksQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDO0FBQ3RCLFlBQUEsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDdkIsWUFBQSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUNwQyxZQUFBLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUN0QixZQUFBLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsU0FBQTtBQUFNLGFBQUE7WUFDSCxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUEsaUJBQUEsRUFBb0IsS0FBSyxDQUFDLE9BQU8sQ0FBRyxDQUFBLENBQUEsQ0FBQyxDQUFDO0FBQzlELFNBQUE7QUFDSixLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakMsUUFBQSxTQUFTLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3RDLEtBQUE7QUFBTSxTQUFBLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzlELFFBQUEsSUFBSSxVQUFVLEVBQUU7QUFDWixZQUFBLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO0FBQ2hDLGdCQUFBLEdBQUcsRUFBRTtvQkFDRCxVQUFVO29CQUNWLGFBQWE7b0JBQ2IsT0FBTyxJQUFJLE1BQU0sR0FBRyx5QkFBeUIsR0FBRyw4QkFBOEI7QUFDakYsaUJBQUE7QUFDSixhQUFBLENBQUMsQ0FBQztBQUNILFlBQUEsS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLEVBQUU7QUFDckIsZ0JBQUEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRSxNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hHLGFBQUE7QUFDSixTQUFBO0FBQU0sYUFBQTtBQUNILFlBQUEsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtBQUNuQixnQkFBQSxTQUFTLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNyQyxPQUFPO0FBQ1YsYUFBQTtBQUVELFlBQUEsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsMkJBQTJCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUYsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLFlBQUEsS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUU7QUFDbkIsZ0JBQUEsSUFBSSxLQUFLO29CQUFFLEtBQUssR0FBRyxLQUFLLENBQUM7O0FBQ3BCLG9CQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTNCLE1BQU0sV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEcsYUFBQTtBQUNKLFNBQUE7QUFDSixLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7O1FBRS9CLElBQUksQ0FBQSxDQUFBLEVBQUEsR0FBQSxLQUFLLEtBQUwsSUFBQSxJQUFBLEtBQUssdUJBQUwsS0FBSyxDQUFFLFdBQVcsTUFBQSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBRSxJQUFJLEtBQUksQ0FBQSxDQUFBLEVBQUEsR0FBQSxLQUFLLEtBQUwsSUFBQSxJQUFBLEtBQUssS0FBTCxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxLQUFLLENBQUUsV0FBVyxNQUFFLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLElBQUksS0FBSSxRQUFRLEVBQUU7WUFDbEUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFJLENBQUEsRUFBQSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBRyxDQUFBLENBQUEsQ0FBQyxDQUFDO1lBQ3BELE9BQU87QUFDVixTQUFBO0FBRUQsUUFBQSxJQUFJLFVBQVUsRUFBRTtZQUNaLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSwyQkFBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2RyxZQUFBLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM1QyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsMkJBQTJCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEcsZ0JBQUEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEcsYUFBQTtBQUNKLFNBQUE7QUFBTSxhQUFBO1lBQ0gsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDaEMsZ0JBQUEsU0FBUyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUN2QyxPQUFPO0FBQ1YsYUFBQTtBQUVELFlBQUEsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsNkJBQTZCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUYsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLFlBQUEsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDNUMsZ0JBQUEsSUFBSSxLQUFLO29CQUFFLEtBQUssR0FBRyxLQUFLLENBQUM7O0FBQ3BCLG9CQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFM0IsZ0JBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQzVCLE1BQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEcsYUFBQTtBQUNKLFNBQUE7QUFDSixLQUFBO0FBQU0sU0FBQTtBQUNILFFBQUEsU0FBUyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbEUsS0FBQTtBQUNMOzs7Ozs7Ozs7Ozs7O0NDakpBLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQXlHLE1BQUEsQ0FBQSxPQUFBLENBQWUsQ0FBQyxHQUFhLENBQUMsQ0FBQ0wsY0FBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQWMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLHdPQUF3TyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsWUFBWSxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxjQUFjLFlBQVksTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtEQUFrRCxDQUFDLENBQUMsQ0FBQyxvTkFBb04sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsNkNBQTZDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUs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UUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVwQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVuQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN2QyxLQUFLLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVwQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN6QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUV0QyxNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN6QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUN6QyxDQUFDO0FBRUY7QUFDTyxNQUFNLGVBQWUsR0FBRztBQUMzQixJQUFBLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDM0IsSUFBQSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUM1QyxJQUFBLFNBQVMsRUFBRSxNQUNQLFFBQVEsQ0FBQyxLQUFLLEVBQUU7U0FDWCxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRCxJQUFBLFFBQVEsRUFBRSxNQUNOLFFBQVEsQ0FBQyxLQUFLLEVBQUU7U0FDWCxPQUFPLENBQUMsS0FBSyxDQUFD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LEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUM7O1lBQ3BGLE9BQU8sQ0FBQSxFQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUM7S0FDN0M7SUFFTSxPQUFPLEdBQUE7O0FBQ1YsUUFBQSxPQUFPLENBQUEsRUFBQSxJQUFDLENBQUEsRUFBQSxHQUFBLENBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQUcsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsQ0FBQyxDQUFDLENBQUM7S0FDbkc7SUFFTSxHQUFHLEdBQUE7O0FBQ04sUUFBQSxPQUFPLENBQUEsRUFBQSxJQUFDLENBQUEsRUFBQSxHQUFBLENBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQUcsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsQ0FBQyxDQUFDLENBQUM7S0FDbkc7SUFFTSxTQUFTLEdB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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU9BLGVBQU8sRUFBRSxVQUFVLEVBQUVBLGVBQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7Q0FDcjFCLENBQUMsVUFBVSxNQUFNLENBQUM7Q0FFbEIsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFD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QUksQ0FBQyxDQUFDO0FBQ25ELFNBQVEsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxRQUFRLElBQUksQ0FBQyxDQUFDO0FBQzFELFNBQVEsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO01BQ3BEO0tBQ0QsT0FBTyxNQUFNLENBQUM7RUFDakI7QUFDRDtBQUNBO0FBQ0E7Q0FDQSxTQUFTLGNBQWMsQ0FBQyxNQUFNLEVBQUU7QUFDaEM7S0FDSSxJQUFJLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QyxLQUFJLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztLQUN0QixJQUFJLENBQUMsQ0FBQztBQUNWO0FBQ0EsS0FBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUMxQztTQUNRLFlBQVksSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzFDLFlBQVksSUFBSSxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3BFLFlBQVksSUFBSSxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNqRixTQUFRLFlBQVksSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztN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LENBQUMsT0FBTyxDQUFDO0FBQzVDLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxTQUFBLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDeEIsU0FBQSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDO0FBQzFDLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxTQUFBLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDeEIsU0FBQSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxHQUFHLEdBQWlCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztBQUN0RCxTQUFBLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0IsU0FBQSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLFNBQUEsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xHLFNBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssZ0JBQUEsQ0FBQSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDekMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxNQUFNLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxnQkFBQSxDQUFBLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLEdBQUcsR0FBaUIsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO0FBQ3RELFNBQUEsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQixTQUFBLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0IsU0FBQSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakcsU0FBQSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxnQkFBQSxDQUFBLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN6QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENB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LE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ2xDLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsVUFBVSxHQUFpQixJQUFJLGVBQWUsQ0FBQyxZQUFZLENBQUM7QUFDcEUsU0FBQSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLEtBQUssR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNyRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsUUFBUSxHQUFpQixJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUM7QUFDaEUsU0FBQSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEtBQUssR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMvRCxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsT0FBTyxHQUFpQixJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUM7U0FDOUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3JGLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEIsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxRQUFRLEdBQWlCLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQztTQUNoRSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDNUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDbkYsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFNBQVMsR0FBaUIsSUFBSSxlQUFlLENBQUMsV0FBVyxDQUFDO0FBQ2xFLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDbEYsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFFBQVEsR0FBaUIsSUFBSSxlQUFlLENBQUMsVUFBVSxDQUFDO0FBQ2hFLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEtBQUk7UUFDeEQsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ3JDLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6RSxTQUFBO0FBQU0sYUFBQTtBQUNILFlBQUEsT0FBTyxHQUFHLENBQUM7QUFDZCxTQUFBO0FBQ0wsS0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxnQkFBQSxDQUFBLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNqRixJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3BCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQztBQUNqRCxTQUFBLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN0RCxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUNsRCxTQUFBLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0RCxTQUFBLEtBQUssRUFB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U0FDeEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELFNBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JGLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxHQUFHLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO1NBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxTQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlELFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJ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QUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2xFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNoRSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbEUsUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQzNFOztBQUdNLElBQUEsUUFBUSxDQUFDLEVBQVksRUFBRSxJQUFhLEVBQUUsS0FBYyxFQUFFLEdBQVksRUFBQTtRQUNyRSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsUUFBQSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDaEUsYUFBQSxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFFNUUsUUFBQSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMxRSxRQUFBLElBQUksT0FBTztBQUFFLFlBQUEsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0FBRzlELFFBQUEsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckUsUUFBQSxJQUFJLFFBQVE7QUFBRSxZQUFBLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDOztBQUdoRSxRQUFBLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLFFBQUEsSUFBSSxRQUFRO0FBQUUsWUFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQzs7QUFHaEUsUUFBQSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRSxRQUFBLElBQUksUUFBUTtBQUFFLFlBQUEsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFaEUsUUFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBZ0MsNkJBQUEsRUFBQSxRQUFRLENBQUksQ0FBQSxFQUFBLEVBQUUsQ0FBSSxDQUFBLEVBQUEsU0FBUyxDQUFHLENBQUEsQ0FBQSxDQUFDLENBQUM7S0FDekY7O0FBR00sSUFBQSxPQUFPLElBQUksQ0FBQyxFQUFZLEVBQUUsSUFBc0IsRUFBRSxLQUF1QixFQUFBO0FBQzVFLFFBQUEsT0FBTyxHQUFHLElBQUksQ0FBQSxDQUFBLEVBQUksRUFBRSxDQUFJLENBQUEsRUFBQSxLQUFLLEVBQUUsQ0FBQztLQUNuQztBQUNKLENBQUE7QUFFRDtBQUNNLFNBQVUsZUFBZSxDQUFDLGNBQXFDLEVBQUE7QUFDakUsSUFBQSxRQUNJLGVBQWUsQ0FBQyxNQUFNLEVBQUU7O1NBRW5CLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQzs7U0FFakUsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0UsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRTNFLFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUVsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakYsU0FBQSxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pGLFNBQUEsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRTNFLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSTtRQUNwQyxPQUFPLGlCQUFpQixDQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQ3hGLENBQUM7QUFDTixLQUFDLENBQUM7U0FDRCxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkQsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOztTQUUxRCxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM3RSxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RSxTQUFBLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEYsU0FBQSxZQUFZLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDOztTQUU1RixRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFNLEVBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzs7U0FFaEYsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7O0FBRXBFLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVB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Q0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUVaLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFL0QsR0FBQyxDQUFDLEtBQUssRUFBRUEsR0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUzRFLEdBQUMsRUFBRSxDQUFDLE9BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFNLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFakIsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDa0IsR0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFakIsR0FBQyxHQUFHakUsR0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQ2lFLEdBQUMsQ0FBQ2pFLEdBQUMsQ0FBQyxpQkFBaUIsR0FBR2tFLEdBQUMsRUFBRWdCLEdBQUMsRUFBQyxDQUFDLFNBQVNBLEdBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSWxCLEdBQUMsQ0FBQyxJQUFJLENBQUNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0gsR0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQ1EsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNXLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUNKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQ0ssR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUVKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDaEIsR0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxJQUFJLENBQUNHLEdBQUMsQ0FBQyxDQUFDLENBQUNlLEdBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDLFNBQVNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRXRGLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDNEUsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQ0osR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSSxHQUFDLENBQUNFLEdBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDRixHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNXLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDakIsR0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQ2MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRUksR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdsQixHQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDbUIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDVCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ1UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVNFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBR25CLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUNtQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTSixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxTQUFTSyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFdkIsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxTQUFTc0IsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUVDLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxHQUFDLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0QsR0FBQyxDQUFDQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLHlCQUF5QixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxPQUFPLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBU0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMvRixHQUFDLENBQUMsS0FBSyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM4RixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzlGLEdBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU21GLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNuRixHQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSThFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQ2tCLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUN4QixHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDeEUsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQ3dFLEdBQUMsQ0FBQ0EsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNhLEdBQUMsQ0FBQyxDQUFDLENBQUNkLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHTSxHQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzdFLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQ2lHLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ2pHLEdBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNvRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQ0csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDdkYsR0FBQyxDQUFDLEdBQUcsRUFBRUEsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNpRyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTVCLEdBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBQyxDQUFDLEdBQUdzQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUdOLEdBQUMsQ0FBQyxDQUFDLENBQUNkLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRVEsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVOLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFbUIsR0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTTCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDdkYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTeUYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUd6RixHQUFDLENBQUMsT0FBTyxFQUFFQSxHQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUV1RixHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsR0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUN2RixHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFeUYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUVoQixHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDLFNBQVN1QixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDbEcsR0FBQyxDQUFDLEVBQUUsRUFBRUEsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUNtRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDVCxHQUFDLENBQUNHLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRVIsR0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDZSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTZSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDRCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsR0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDNUIsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0csR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMwQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUNqQyxHQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUNhLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDbEYsR0FBQyxDQUFDLEtBQUssQ0FBQ0MsR0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQytELEdBQUMsQ0FBQyxDQUFDLENBQXVEZSxHQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQ04sR0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUNTLEdBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUNILEdBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQ0csR0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQ0gsR0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUNELEdBQUMsQ0FBQ2IsR0FBQyxDQUFDLEVBQUUsQ0FBQ0UsR0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDQyxHQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDZSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ2QsR0FBQyxDQUFDLENBQUM7O0FDQWowVSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUN0RSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLEVBQUVBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDa0csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNsRyxHQUFDLENBQUMsR0FBRyxFQUFFZ0csR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDaEcsR0FBQyxDQUFDLEdBQUcsRUFBRWdHLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDTSxHQUFDLENBQUMsVUFBVSxDQUFDLE9BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTZCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTYyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPTixHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ1EsR0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNYLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBU1AsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ3BGLEdBQUMsQ0FBQyxhQUFhLEVBQUVBLEdBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBcUssU0FBU3dHLEdBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDekIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUNuRixHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDK0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNJLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQ25GLEdBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0EsR0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxxQkFBcUIsR0FBR2lHLEdBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxDQUFDakcsR0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDK0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQ25GLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMrRSxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFL0UsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJaUYsR0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLHFCQUFxQixDQUFDLFNBQVNnQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUNoQixHQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUNBLEdBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU2EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUNBdDVGLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDTyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUl6RyxHQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNzRSxHQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUNGLEdBQUMsQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFLLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDRSxHQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU9tQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQ25DLEdBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSXRFLEdBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFeUcsR0FBQyxDQUFDeEMsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDd0MsR0FBQyxDQUFDeEMsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUNFLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDc0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJekcsR0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDb0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyw2UkFBNlIsQ0FBQyxDQUFDLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQ0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDbEUsR0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQywyQkFBMkIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUNBLEdBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNzRSxHQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLGNBQWMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLGNBQWMsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNGLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDRSxHQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFJLENBQUMsQ0FBSSxJQUFDLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWEsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT21DLEdBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHeEMsR0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDSSxHQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBR0YsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDRixHQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUNZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNMLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU9LLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSCxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMs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QyxZQUFBLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUUxRSxZQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkIsWUFBQSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVELFNBQUE7QUFDRCxRQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekIsS0FBQTs7O0FBSUQsSUFBQSxJQUFJLEtBQUssR0FBRyxDQUFLLEVBQUEsRUFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDOztJQUV2RyxLQUFLLElBQUksQ0FBSyxFQUFBLEVBQUEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsSUFBQSxDQUFNLENBQUM7O0FBRTFFLElBQUEsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDMUMsUUFBQSxLQUFLLElBQUksQ0FBQSxFQUFBLEVBQUssT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENB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 diff --git a/.obsidian/plugins/dataview/manifest.json b/.obsidian/plugins/dataview/manifest.json index 76d9e26..c902d02 100644 --- a/.obsidian/plugins/dataview/manifest.json +++ b/.obsidian/plugins/dataview/manifest.json @@ -1,7 +1,7 @@ { "id": "dataview", "name": "Dataview", - "version": "0.5.56", + "version": "0.5.59", "minAppVersion": "0.13.11", "description": "Complex data views for the data-obsessed.", "author": "Michael Brenan ", diff --git a/.obsidian/plugins/dataview/styles.css b/.obsidian/plugins/dataview/styles.css index 050a51a..e884570 100644 --- a/.obsidian/plugins/dataview/styles.css +++ b/.obsidian/plugins/dataview/styles.css @@ -23,7 +23,7 @@ } .table-view-table > tbody > tr:hover { - background-color: var(--text-selection) !important; + background-color: var(--table-row-background-hover); } .table-view-table > thead > tr > th { diff --git a/.obsidian/plugins/easy-typing-obsidian/main.js b/.obsidian/plugins/easy-typing-obsidian/main.js index 0a1e842..8405331 100644 --- a/.obsidian/plugins/easy-typing-obsidian/main.js +++ b/.obsidian/plugins/easy-typing-obsidian/main.js @@ -173,7 +173,7 @@ var LineFormater = class { let line = doc.lineAt(fromB).text; let res = null; if (insertedStr.contains("\n")) { - res = this.formatLine(state, doc.lineAt(fromB).number, settings, offsetToPos(doc, fromB).ch, offsetToPos(doc, fromB).ch); + res = this.formatLine(state, doc.lineAt(fromB).number, settings, offsetToPos(doc, fromB).ch, offsetToPos(doc, toB - 1).ch); } else { res = this.formatLine(state, doc.lineAt(fromB).number, settings, offsetToPos(doc, toB).ch, offsetToPos(doc, fromB).ch); } @@ -1754,15 +1754,26 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { let updateLineStart = update.state.doc.lineAt(fromB).number; let updateLineEnd = update.state.doc.lineAt(toB).number; if (updateLineStart == updateLineEnd && getPosLineType(update.view.state, toB) == "text" /* text */) { - let changes = this.Formater.formatLineOfDoc(update.state, this.settings, toB, toB, insertedStr); + let changes = this.Formater.formatLineOfDoc(update.state, this.settings, fromB, toB, insertedStr); if (changes != null) { update.view.dispatch(...changes[0]); - update.view.dispatch(changes[1]); return; } } else { + let all_changes = []; + let inserted_array = insertedStr.split("\n"); + let update_start = fromB; for (let i = updateLineStart; i <= updateLineEnd; i++) { - this.formatOneLine(this.getEditor(), i); + let real_inserted = inserted_array[i - updateLineStart]; + let changes = this.Formater.formatLineOfDoc(update.state, this.settings, update_start, update_start + real_inserted.length, real_inserted); + if (changes != null) { + all_changes.push(...changes[0]); + } + update_start += real_inserted.length + 1; + } + if (all_changes.length > 0) { + update.view.dispatch(...all_changes); + return; } } } @@ -2172,6 +2183,17 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { key: "tab" }] }); + this.addCommand({ + id: "easy-typing-paste-without-format", + name: command_name_map.get("paste_wo_format"), + editorCallback: (editor) => this.normalPaste(editor), + hotkeys: [ + { + modifiers: ["Mod", "Shift"], + key: "v" + } + ] + }); this.addSettingTab(new EasyTypingSettingTab(this.app, this)); this.registerEvent(this.app.workspace.on("active-leaf-change", (leaf) => { if (leaf.view.getViewType() == "markdown") { @@ -2186,6 +2208,12 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { } onunload() { } + async normalPaste(editor) { + let clipboardText = await navigator.clipboard.readText(); + if (clipboardText === null || clipboardText === "") + return; + editor.replaceSelection(clipboardText); + } isCurrentFileExclude() { if (this.CurActiveMarkdown == "") { let file = this.app.workspace.getActiveFile(); @@ -2323,21 +2351,24 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { ["format_selection", "Format selected text or current line"], ["delete_blank_line", "Delete blank lines of the selected or whole article"], ["insert_codeblock", "Insert code block w/wo selection"], - ["switch_autoformat", "Switch autoformat"] + ["switch_autoformat", "Switch autoformat"], + ["paste_wo_format", "Paste without format"] ]); let command_name_map_zh_TW = /* @__PURE__ */ new Map([ ["format_article", "\u683C\u5F0F\u5316\u5168\u6587"], ["format_selection", "\u683C\u5F0F\u5316\u9078\u4E2D\u90E8\u5206/\u7576\u524D\u884C"], ["delete_blank_line", "\u522A\u9664\u9078\u4E2D\u90E8\u5206/\u5168\u6587\u7684\u591A\u9918\u7A7A\u767D\u884C"], ["insert_codeblock", "\u63D2\u5165\u4EE3\u78BC\u584A"], - ["switch_autoformat", "\u5207\u63DB\u81EA\u52D5\u683C\u5F0F\u5316\u958B\u95DC"] + ["switch_autoformat", "\u5207\u63DB\u81EA\u52D5\u683C\u5F0F\u5316\u958B\u95DC"], + ["paste_wo_format", "\u7121\u683C\u5F0F\u5316\u7C98\u8CBC"] ]); let command_name_map_zh = /* @__PURE__ */ new Map([ ["format_article", "\u683C\u5F0F\u5316\u5168\u6587"], ["format_selection", "\u683C\u5F0F\u5316\u9009\u4E2D\u90E8\u5206/\u5F53\u524D\u884C"], ["delete_blank_line", "\u522A\u9664\u9009\u4E2D\u90E8\u5206/\u5168\u6587\u7684\u591A\u4F59\u7A7A\u767D\u884C"], ["insert_codeblock", "\u63D2\u5165\u4EE3\u7801\u5757"], - ["switch_autoformat", "\u5207\u6362\u81EA\u52A8\u683C\u5F0F\u5316\u5F00\u5173"] + ["switch_autoformat", "\u5207\u6362\u81EA\u52A8\u683C\u5F0F\u5316\u5F00\u5173"], + ["paste_wo_format", "\u65E0\u683C\u5F0F\u5316\u7C98\u8D34"] ]); let command_name_map = command_name_map_en; if (lang == "zh") { @@ -2361,4 +2392,4 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { await this.saveData(this.settings); } }; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21haW4udHMiLCAic3JjL2NvcmUudHMiLCAic3JjL3V0aWxzLnRzIiwgInNyYy9zZXR0aW5ncy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQXBwLCBFZGl0b3IsIE1hcmtkb3duVmlldywgTW9kYWwsIE5vdGljZSwgUGx1Z2luLCBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nLCBXb3Jrc3BhY2UsIFdvcmtzcGFjZUxlYWYsIFRGaWxlIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHsgRWRpdG9yU3RhdGUsIEV4dGVuc2lvbiwgU3RhdGVGaWVsZCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgVGV4dCB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IFNlbGVjdGlvblJhbmdlLCBQcmVjIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBFYXN5VHlwaW5nU2V0dGluZ1RhYiwgRWFzeVR5cGluZ1NldHRpbmdzLCBERUZBVUxUX1NFVFRJTkdTLCBQYWlyU3RyaW5nLCBDb252ZXJ0UnVsZSB9IGZyb20gXCIuL3NldHRpbmdzXCJcbmltcG9ydCB7IEVkaXRvclZpZXcsIGtleW1hcCwgVmlld1VwZGF0ZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHsgcG9zVG9PZmZzZXQsIG9mZnNldFRvUG9zLCBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdCwgZ2V0VHlwZVN0ck9mVHJhbnNhYyB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBMaW5lRm9ybWF0ZXIsIGdldFBvc0xpbmVUeXBlLCBnZXRQb3NMaW5lVHlwZTIsIExpbmVUeXBlIH0gZnJvbSAnLi9jb3JlJ1xuaW1wb3J0IHsgc3ludGF4VHJlZSB9IGZyb20gXCJAY29kZW1pcnJvci9sYW5ndWFnZVwiO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lUeXBpbmdQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuXHRzZXR0aW5nczogRWFzeVR5cGluZ1NldHRpbmdzO1xuXHRzZWxlY3Rpb25SZXBsYWNlTWFwSW5pdGFsRGF0YTogW3N0cmluZywgUGFpclN0cmluZ11bXTtcblx0U2VsZWN0aW9uUmVwbGFjZU1hcDogTWFwPHN0cmluZywgUGFpclN0cmluZz47XG5cdFN5bWJvbFBhaXJzTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXHRoYWxmVG9GdWxsU3ltYm9sTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXHRCYXNpY0NvbnZSdWxlczogQ29udmVydFJ1bGVbXTtcblx0RlcySFdTeW1ib2xSdWxlczogQ29udmVydFJ1bGVbXTtcblx0Rm9ybWF0ZXI6IExpbmVGb3JtYXRlcjtcblx0SW50cmluc2ljRGVsZXRlUnVsZXM6IENvbnZlcnRSdWxlW107XG5cdEludHJpbnNpY0F1dG9QYWlyUnVsZXNQYXRjaDogQ29udmVydFJ1bGVbXTtcblx0Q3VyQWN0aXZlTWFya2Rvd246IHN0cmluZztcblxuXHRVc2VyRGVsZXRlUnVsZXM6IENvbnZlcnRSdWxlW107XG5cdFVzZXJDb252ZXJ0UnVsZXM6IENvbnZlcnRSdWxlW107XG5cdGxhbmc6IHN0cmluZztcblxuXHRjb21wb3NlX2JlZ2luX3BvczogbnVtYmVyO1xuXHRjb21wb3NlX2VuZF9wb3M6IG51bWJlcjtcblx0Y29tcG9zZV9uZWVkX2hhbmRsZTogYm9vbGVhbjtcblxuXG5cdGFzeW5jIG9ubG9hZCgpIHtcblx0XHRhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xuXHRcdHRoaXMuc2VsZWN0aW9uUmVwbGFjZU1hcEluaXRhbERhdGEgPSBbXG5cdFx0XHRbXCJcdTMwMTBcIiwgeyBsZWZ0OiBcIltcIiwgcmlnaHQ6IFwiXVwiIH1dLCBbXCJcdUZGRTVcIiwgeyBsZWZ0OiBcIiRcIiwgcmlnaHQ6IFwiJFwiIH1dLCBbXCJcdTAwQjdcIiwgeyBsZWZ0OiBcImBcIiwgcmlnaHQ6IFwiYFwiIH1dLFxuXHRcdFx0W1wiXHUzMDBBXCIsIHsgbGVmdDogXCJcdTMwMEFcIiwgcmlnaHQ6IFwiXHUzMDBCXCIgfV0sIFtcIlx1MjAxQ1wiLCB7IGxlZnQ6IFwiXHUyMDFDXCIsIHJpZ2h0OiBcIlx1MjAxRFwiIH1dLCBbXCJcdTIwMURcIiwgeyBsZWZ0OiBcIlx1MjAxQ1wiLCByaWdodDogXCJcdTIwMURcIiB9XSwgW1wiXHVGRjA4XCIsIHsgbGVmdDogXCJcdUZGMDhcIiwgcmlnaHQ6IFwiXHVGRjA5XCIgfV0sXG5cdFx0XHRbXCI8XCIsIHsgbGVmdDogXCI8XCIsIHJpZ2h0OiBcIj5cIiB9XVxuXHRcdF07XG5cdFx0dGhpcy5yZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKTtcblx0XHR0aGlzLlN5bWJvbFBhaXJzTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblx0XHRsZXQgU3ltYm9sUGFpcnMgPSBbXCJcdTMwMTBcdTMwMTFcIiwgXCJcdUZGMDhcdUZGMDlcIiwgXCJcdTMwMEFcdTMwMEJcIiwgXCJcdTIwMUNcdTIwMURcIiwgXCJcdTIwMThcdTIwMTlcIiwgXCJcdTMwMENcdTMwMERcIiwgXCJcdTMwMEVcdTMwMEZcIl1cblx0XHRmb3IgKGxldCBwYWlyU3RyIG9mIFN5bWJvbFBhaXJzKSB0aGlzLlN5bWJvbFBhaXJzTWFwLnNldChwYWlyU3RyLmNoYXJBdCgwKSwgcGFpclN0ci5jaGFyQXQoMSkpO1xuXG5cdFx0dGhpcy5oYWxmVG9GdWxsU3ltYm9sTWFwID0gbmV3IE1hcChbXG5cdFx0XHRbXCIuXCIsIFwiXHUzMDAyXCJdLFxuXHRcdFx0W1wiLFwiLCBcIlx1RkYwQ1wiXSxcblx0XHRcdFsnPycsICdcdUZGMUYnXSxcblx0XHRcdFsnIScsICdcdUZGMDEnXVxuXHRcdF0pOyBcblxuXHRcdGxldCBCYXNpY0NvbnZSdWxlU3RyaW5nTGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbWydcdTAwQjdcdTAwQjd8JywgJ2B8YCddLCBbXCJgXHUwMEI3fGBcIiwgXCJgYGB8XFxuYGBgXCJdLFxuXHRcdFtcIlx1MzAxMFx1MzAxMHxcdTMwMTFcIiwgXCJbW3xdXVwiXSwgWydcdTMwMTBcdTMwMTB8JywgXCJbW3xdXVwiXSwgWydcdUZGRTVcdUZGRTV8JywgJyR8JCddLCBbJyRcdUZGRTV8JCcsIFwiJCRcXG58XFxuJCRcIl0sIFtcIiQkfCRcIiwgXCIkJFxcbnxcXG4kJFwiXSwgWyckJHwnLCBcIiR8JFwiXSxcblx0XHRbXCI+XHUzMDBCfFwiLCBcIj4+fFwiXSwgWydcXG5cdTMwMEJ8JywgXCJcXG4+fFwiXSwgW1wiIFx1MzAwQnxcIiwgXCIgPnxcIl0sIFtcIlxcblx1MzAwMXxcIiwgXCJcXG4vfFwiXV07XG5cdFx0dGhpcy5CYXNpY0NvbnZSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KEJhc2ljQ29udlJ1bGVTdHJpbmdMaXN0KTtcblx0XHRsZXQgRlcySFdTeW1ib2xSdWxlc1N0ckxpc3Q6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+ID0gW1tcIlx1MzAwMlx1MzAwMnxcIiwgXCIufFwiXSwgW1wiXHVGRjAxXHVGRjAxfFwiLCBcIiF8XCJdLCBbXCJcdUZGMUJcdUZGMUJ8XCIsIFwiO3xcIl0sIFtcIlx1RkYwQ1x1RkYwQ3xcIiwgXCIsfFwiXSxcblx0XHRbXCJcdUZGMUFcdUZGMUF8XCIsIFwiOnxcIl0sIFsnXHVGRjFGXHVGRjFGfCcsICc/fCddLCBbJ1x1RkYwOFx1RkYwOHxcdUZGMDknLCBcIih8KVwiXSwgWydcdUZGMDhcdUZGMDh8JywgJyh8KSddLCBbXCJcdTIwMUNcdTIwMUN8XHUyMDFEXCIsIFwiXFxcInxcXFwiXCJdLCBbXCJcdTIwMUNcdTIwMUR8XHUyMDFEXCIsIFwiXFxcInxcXFwiXCJdLFxuXHRcdFtcIlx1MzAwQlx1MzAwQnxcIiwgXCI+fFwiXSwgW1wiXHUzMDBBXHUzMDBBfFx1MzAwQlwiLCBcIjx8XCJdLCBbJ1x1MzAwQVx1MzAwQXwnLCBcIjx8XCJdXTtcblx0XHR0aGlzLkZXMkhXU3ltYm9sUnVsZXMgPSBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdChGVzJIV1N5bWJvbFJ1bGVzU3RyTGlzdCk7XG5cblx0XHRsZXQgRGVsZXRlUnVsZXNTdHJMaXN0OiBBcnJheTxbc3RyaW5nLCBzdHJpbmddPiA9IFtbXCIkfCRcIiwgXCJ8XCJdLCBbJ2BgYHxcXG5gYGAnLCAnfCddLCBbJz09fD09JywgJ3wnXSwgWyckJFxcbnxcXG4kJCcsIFwifFwiXV07XG5cdFx0dGhpcy5JbnRyaW5zaWNEZWxldGVSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KERlbGV0ZVJ1bGVzU3RyTGlzdCk7XG5cblx0XHQvLyBsZXRcblx0XHRsZXQgYXV0b1BhaXJSdWxlc1BhdGNoU3RyTGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbW1wiXHUzMDEwXHUzMDExfFx1MzAxMVwiLCBcIlx1MzAxMFx1MzAxMXxcIl0sIFtcIlx1RkYwOFx1RkYwOXxcdUZGMDlcIiwgXCJcdUZGMDhcdUZGMDl8XCJdLFxuXHRcdFtcIjw+fD5cIiwgXCI8PnxcIl0sIFtcIlx1MzAwQVx1MzAwQnxcdTMwMEJcIiwgXCJcdTMwMEFcdTMwMEJ8XCJdLCBbXCJcdTMwMENcdTMwMER8XHUzMDBEXCIsIFwiXHUzMDBDXHUzMDBEfFwiXSwgW1wiXHUzMDBFXHUzMDBGfFx1MzAwRlwiLCBcIlx1MzAwRVx1MzAwRnxcIl1cblx0XHRdO1xuXHRcdHRoaXMuSW50cmluc2ljQXV0b1BhaXJSdWxlc1BhdGNoID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QoYXV0b1BhaXJSdWxlc1BhdGNoU3RyTGlzdCk7XG5cblx0XHR0aGlzLnJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJDb252ZXJ0UnVsZSgpO1xuXG5cdFx0dGhpcy5DdXJBY3RpdmVNYXJrZG93biA9IFwiXCI7XG5cblx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPSBmYWxzZTtcblxuXHRcdHRoaXMuRm9ybWF0ZXIgPSBuZXcgTGluZUZvcm1hdGVyKCk7XG5cblx0XHR0aGlzLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFtcblx0XHRcdEVkaXRvclN0YXRlLnRyYW5zYWN0aW9uRmlsdGVyLm9mKHRoaXMudHJhbnNhY3Rpb25GaWx0ZXJQbHVnaW4pLFxuXHRcdFx0RWRpdG9yVmlldy51cGRhdGVMaXN0ZW5lci5vZih0aGlzLnZpZXdVcGRhdGVQbHVnaW4pLFxuXHRcdFx0UHJlYy5oaWdoZXN0KEVkaXRvclZpZXcuZG9tRXZlbnRIYW5kbGVycyh7XG5cdFx0XHRcdFwia2V5dXBcIjogdGhpcy5vbktleXVwXG5cdFx0XHR9KSlcblx0XHRdKTtcblx0XHRcblxuXHRcdHRoaXMucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oUHJlYy5oaWdoZXN0KGtleW1hcC5vZihbXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJUYWJcIixcblx0XHRcdFx0cnVuOiAodmlldzogRWRpdG9yVmlldyk6IGJvb2xlYW4gPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHN1Y2Nlc3MgPSB0aGlzLmhhbmRsZVRhYkRvd24odmlldyk7XG5cdFx0XHRcdFx0cmV0dXJuIHN1Y2Nlc3M7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJFbnRlclwiLFxuXHRcdFx0XHRydW46ICh2aWV3OiBFZGl0b3JWaWV3KTogYm9vbGVhbiA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgc3VjY2VzcyA9IHRoaXMuaGFuZGxlRW50ZXIodmlldyk7XG5cdFx0XHRcdFx0cmV0dXJuIHN1Y2Nlc3M7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRdKSkpO1xuXG5cdFx0dGhpcy5sYW5nID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpO1xuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwID0gdGhpcy5nZXRDb21tYW5kTmFtZU1hcCgpO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWZvcm1hdC1hcnRpY2xlXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImZvcm1hdF9hcnRpY2xlXCIpLFxuXHRcdFx0ZWRpdG9yQ2FsbGJhY2s6IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KSA9PiB7XG5cdFx0XHRcdHRoaXMuZm9ybWF0QXJ0aWNsZShlZGl0b3IsIHZpZXcpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJzXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWZvcm1hdC1zZWxlY3Rpb25cIixcblx0XHRcdG5hbWU6IGNvbW1hbmRfbmFtZV9tYXAuZ2V0KFwiZm9ybWF0X3NlbGVjdGlvblwiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmZvcm1hdFNlbGVjdGlvbk9yQ3VyTGluZShlZGl0b3IsIHZpZXcpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJsXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWRlbGV0ZS1ibGFuay1saW5lXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImRlbGV0ZV9ibGFua19saW5lXCIpLFxuXHRcdFx0ZWRpdG9yQ2FsbGJhY2s6IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KSA9PiB7XG5cdFx0XHRcdHRoaXMuZGVsZXRlQmxhbmtMaW5lcyhlZGl0b3IpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJrXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWluc2VydC1jb2RlYmxvY2tcIixcblx0XHRcdG5hbWU6IGNvbW1hbmRfbmFtZV9tYXAuZ2V0KFwiaW5zZXJ0X2NvZGVibG9ja1wiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmNvbnZlcnQyQ29kZUJsb2NrKGVkaXRvcik7XG5cdFx0XHR9LFxuXHRcdFx0aG90a2V5czogW3tcblx0XHRcdFx0bW9kaWZpZXJzOiBbJ0N0cmwnLCAnU2hpZnQnXSxcblx0XHRcdFx0a2V5OiBcIm5cIlxuXHRcdFx0fV0sXG5cdFx0fSk7XG5cblx0XHR0aGlzLmFkZENvbW1hbmQoe1xuXHRcdFx0aWQ6IFwiZWFzeS10eXBpbmctZm9ybWF0LXN3aXRjaFwiLFxuXHRcdFx0bmFtZTogY29tbWFuZF9uYW1lX21hcC5nZXQoXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiKSxcblx0XHRcdGNhbGxiYWNrOiAoKSA9PiB0aGlzLnN3aXRjaEF1dG9Gb3JtYXR0aW5nKCksXG5cdFx0XHRob3RrZXlzOiBbe1xuXHRcdFx0XHRtb2RpZmllcnM6IFsnQ3RybCddLFxuXHRcdFx0XHRrZXk6IFwidGFiXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0Ly8gVGhpcyBhZGRzIGEgc2V0dGluZ3MgdGFiIHNvIHRoZSB1c2VyIGNhbiBjb25maWd1cmUgdmFyaW91cyBhc3BlY3RzIG9mIHRoZSBwbHVnaW5cblx0XHR0aGlzLmFkZFNldHRpbmdUYWIobmV3IEVhc3lUeXBpbmdTZXR0aW5nVGFiKHRoaXMuYXBwLCB0aGlzKSk7XG5cblx0XHR0aGlzLnJlZ2lzdGVyRXZlbnQodGhpcy5hcHAud29ya3NwYWNlLm9uKCdhY3RpdmUtbGVhZi1jaGFuZ2UnLCAobGVhZjogV29ya3NwYWNlTGVhZikgPT4ge1xuXHRcdFx0aWYgKGxlYWYudmlldy5nZXRWaWV3VHlwZSgpPT0nbWFya2Rvd24nKXtcblx0XHRcdFx0bGV0IGZpbGUgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xuXHRcdFx0XHRpZiAoZmlsZSE9bnVsbCAmJiB0aGlzLkN1ckFjdGl2ZU1hcmtkb3duICE9IGZpbGUucGF0aClcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24gPSBmaWxlLnBhdGg7XG5cdFx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpXG5cdFx0XHRcdFx0XHRuZXcgTm90aWNlKCduZXcgbWQtZmlsZSBvcGVuOiAnK2ZpbGUucGF0aClcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pKTtcblxuXHRcdC8vIHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2ZpbGUtb3BlbicsIChmaWxlOiBURmlsZSB8IG51bGwpID0+IHtcblx0XHQvLyBcdGlmIChmaWxlICE9IG51bGwpIHtcblx0XHQvLyBcdFx0bGV0IGVkaXRvciA9IHRoaXMuZ2V0RWRpdG9yKCk7XG5cdFx0Ly8gXHRcdGlmIChlZGl0b3IgPT09IG51bGwpIHJldHVybjtcblx0XHQvLyBcdFx0dGhpcy5Db250ZW50UGFyc2VyLnBhcnNlTmV3QXJ0aWNsZShlZGl0b3IuZ2V0VmFsdWUoKSk7XG5cdFx0Ly8gXHRcdGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSB7XG5cdFx0Ly8gXHRcdFx0bmV3IE5vdGljZShcIkVhc3lUeXBpbmc6IFBhcnNlIE5ldyBBcnRpY2xlOiBcIiArIGZpbGUudmF1bHQuZ2V0TmFtZSgpICsgJy8nICsgZmlsZS5wYXRoKTtcblx0XHQvLyBcdFx0XHQvLyBpZiAodGhpcy5zZXR0aW5ncy5kZWJ1ZykgdGhpcy5Db250ZW50UGFyc2VyLnByaW50KCk7XG5cdFx0Ly8gXHRcdH1cblx0XHQvLyBcdH1cblx0XHQvLyB9KSk7XG5cdH1cblxuXHRvbnVubG9hZCgpIHtcblx0fVxuXG5cdHRyYW5zYWN0aW9uRmlsdGVyUGx1Z2luID0gKHRyOiBUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uU3BlYyB8IHJlYWRvbmx5IFRyYW5zYWN0aW9uU3BlY1tdID0+IHtcblx0XHRjb25zdCBjaGFuZ2VzOiBUcmFuc2FjdGlvblNwZWNbXSA9IFtdO1xuXHRcdGlmICghdHIuZG9jQ2hhbmdlZCkgcmV0dXJuIHRyO1xuXHRcdGxldCBzZWxlY3RlZCA9IHRyLnN0YXJ0U3RhdGUuc2VsZWN0aW9uLmFzU2luZ2xlKCkubWFpbi5hbmNob3IhPXRyLnN0YXJ0U3RhdGUuc2VsZWN0aW9uLmFzU2luZ2xlKCkubWFpbi5oZWFkO1xuXG5cdFx0bGV0IGNoYW5nZVR5cGVTdHIgPSBnZXRUeXBlU3RyT2ZUcmFuc2FjKHRyKTtcblx0XHR0ci5jaGFuZ2VzLml0ZXJDaGFuZ2VzKChmcm9tQSwgdG9BLCBmcm9tQiwgdG9CLCBpbnNlcnRlZCkgPT4ge1xuXHRcdFx0bGV0IGNoYW5nZWRTdHIgPSB0ci5zdGFydFN0YXRlLnNsaWNlRG9jKGZyb21BLCB0b0EpO1xuXHRcdFx0bGV0IGluc2VydGVkU3RyID0gaW5zZXJ0ZWQuc2xpY2VTdHJpbmcoMCk7XG5cdFx0XHQvLyBpZiAodGhpcy5zZXR0aW5ncy5kZWJ1Zylcblx0XHRcdC8vIHtcblx0XHRcdC8vIFx0Y29uc29sZS5sb2coXCJUcmFuc2FjdGlvbkZpbHRlciBjYXRjaCBjaGFuZ2U6XCIsY2hhbmdlVHlwZVN0ciwgZnJvbUEsIHRvQSwgZnJvbUIsIHRvQiwgaW5zZXJ0ZWRTdHIpO1xuXHRcdFx0Ly8gfVxuXHRcdFx0Ly8gPT09PT09PT09PSBTZWxlY3Rpb24gUmVwbGFjZSA9PT09PT09PT09PT1cblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLlNlbGVjdGlvbkVuaGFuY2UpIHtcblx0XHRcdFx0aWYgKChjaGFuZ2VUeXBlU3RyID09ICdpbnB1dC50eXBlJyB8fCBjaGFuZ2VUeXBlU3RyID09IFwiaW5wdXQudHlwZS5jb21wb3NlXCIpICYmIGZyb21BICE9IHRvQSAmJiBmcm9tQiArIDEgPT09IHRvQikge1xuXHRcdFx0XHRcdGlmICh0aGlzLlNlbGVjdGlvblJlcGxhY2VNYXAuaGFzKGluc2VydGVkU3RyKSkge1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHsgY2hhbmdlczogeyBmcm9tOiBmcm9tQSwgaW5zZXJ0OiB0aGlzLlNlbGVjdGlvblJlcGxhY2VNYXAuZ2V0KGluc2VydGVkU3RyKT8ubGVmdCB9LCB1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIiB9KVxuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHsgY2hhbmdlczogeyBmcm9tOiB0b0EsIGluc2VydDogdGhpcy5TZWxlY3Rpb25SZXBsYWNlTWFwLmdldChpbnNlcnRlZFN0cik/LnJpZ2h0IH0sIHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiIH0pXG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc2VsZWN0ZWQpIHJldHVybiB0cjtcblxuXHRcdFx0Ly8gVXNlckRlZmluZWQgRGVsZXRlIFJ1bGVcblx0XHRcdGlmIChjaGFuZ2VUeXBlU3RyID09IFwiZGVsZXRlLmJhY2t3YXJkXCIpIHtcblx0XHRcdFx0Zm9yIChsZXQgcnVsZSBvZiB0aGlzLlVzZXJEZWxldGVSdWxlcykge1xuXHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQSk7XG5cdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9BLCB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyA9PT09PT09PT09IGRlbGV0ZSBwYWlyIHN5bWJvbCA9PT09PT09PT09PT1cblx0XHRcdGlmIChjaGFuZ2VUeXBlU3RyID09PSBcImRlbGV0ZS5iYWNrd2FyZFwiICYmIHRoaXMuc2V0dGluZ3MuSW50cmluc2ljU3ltYm9sUGFpcnMpIHtcblx0XHRcdFx0aWYgKHRoaXMuU3ltYm9sUGFpcnNNYXAuaGFzKGNoYW5nZWRTdHIpICYmIHRoaXMuU3ltYm9sUGFpcnNNYXAuZ2V0KGNoYW5nZWRTdHIpID09PSB0ci5zdGFydFN0YXRlLnNsaWNlRG9jKHRvQSwgdG9BICsgMSkpIHtcblx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goeyBjaGFuZ2VzOiB7IGZyb206IGZyb21BLCB0bzogdG9BICsgMSB9LCB1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIiB9KTtcblx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuSW50cmluc2ljRGVsZXRlUnVsZXMpIHtcblx0XHRcdFx0XHRsZXQgbGVmdCA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0EpO1xuXHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQSwgdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggfSxcblx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gXHU5MDFBXHU1RTM4XHU1MzU1XHU1QjU3XHU4RjkzXHU1MTY1XG5cdFx0XHRpZiAoKGNoYW5nZVR5cGVTdHIgPT0gJ2lucHV0LnR5cGUnIHx8IGNoYW5nZVR5cGVTdHIgPT0gXCJpbnB1dC50eXBlLmNvbXBvc2VcIikgJiYgZnJvbUEgPT09IHRvQSAmJiBmcm9tQiArIDEgPT09IHRvQikge1xuXHRcdFx0XHQvLyBpZiAodGhpcy5zZXR0aW5ncy5kZWJ1ZykgY29uc29sZS5sb2coXCJJbnB1dC50eXBlID0+IFwiLCBpbnNlcnRlZFN0cilcblx0XHRcdFx0Ly8gPT09PT09PT09PT0gYmFzaWMgY29udmVydCBydWxlcyA9PT09PT09PT09PT1cblx0XHRcdFx0Ly8gbm90IHN1cHBvcnQgdW5kbyBhbmQgcmVkb1xuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5CYXNlT2JFZGl0RW5oYW5jZSkge1xuXHRcdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5CYXNpY0NvbnZSdWxlcykge1xuXHRcdFx0XHRcdFx0aWYgKGluc2VydGVkU3RyICE9IHJ1bGUuYmVmb3JlLmxlZnQuY2hhckF0KHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoIC0gMSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0Ly8gXHU1OTA0XHU3NDA2XHU2NTg3XHU2ODYzXHU3QjJDIDAgXHU4ODRDXG5cdFx0XHRcdFx0XHRpZiAocnVsZS5iZWZvcmUubGVmdC5jaGFyQXQoMCkgPT09ICdcXG4nICYmIG9mZnNldFRvUG9zKHRyLnN0YXRlLmRvYywgZnJvbUEpLmxpbmUgPT09IDAgJiYgdG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAxID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMSwgdG9CKTtcblx0XHRcdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiwgdG9CICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQuc3Vic3RyaW5nKDEpICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMixcblx0XHRcdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQuc3Vic3RyaW5nKDEpICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCArIDEgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vIFx1OTAxQVx1NUUzOFx1NjBDNVx1NTFCNVx1NTkwNFx1NzQwNlxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0IpO1xuXHRcdFx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CLCB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCArIDEgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5GVzJIV0VuaGFuY2UpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuRlcySFdTeW1ib2xSdWxlcykge1xuXHRcdFx0XHRcdFx0aWYgKGluc2VydGVkU3RyICE9IHJ1bGUuYmVmb3JlLmxlZnQuY2hhckF0KHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoIC0gMSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0bGV0IGxlZnQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQik7XG5cdFx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CLCB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZnJvbTogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAxLFxuXHRcdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoICsgMSB9LFxuXHRcdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gPT09PT09PT09PT09PT09PSBhdXRvIHBhaXIgPT09PT09PT09PT09PT09PT1cblx0XHRcdFx0Ly8gbGV0IFBhaXJWYWxpZFNldCA9IG5ldyBTZXQoW1wiXCIsIFwiIFwiLFwiXFxuXCJdKVxuXHRcdFx0XHQvLyBsZXQgY2hhckFmdGVyQ3Vyc29yID0gdHIuc3RhcnRTdGF0ZS5zbGljZURvYyh0b0EsIHRvQSsxKTtcblx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuSW50cmluc2ljU3ltYm9sUGFpcnMpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuSW50cmluc2ljQXV0b1BhaXJSdWxlc1BhdGNoKSB7XG5cdFx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRTdHIgIT0gcnVsZS5iZWZvcmUubGVmdC5jaGFyQXQocnVsZS5iZWZvcmUubGVmdC5sZW5ndGggLSAxKSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRsZXQgbGVmdCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCwgdG9CKTtcblx0XHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IsIHRvQiArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDEsXG5cdFx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggKyAxIH0sXG5cdFx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAodGhpcy5TeW1ib2xQYWlyc01hcC5oYXMoaW5zZXJ0ZWRTdHIpKSB7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7IGZyb206IGZyb21BLCB0bzogdG9BLCBpbnNlcnQ6IGluc2VydGVkU3RyICsgdGhpcy5TeW1ib2xQYWlyc01hcC5nZXQoaW5zZXJ0ZWRTdHIpIH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IGZyb21BICsgMSB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBoYW5kbGUgYXV0b3BhaXIgZm9yIFwiXHUyMDFEXCIgYW5kIFwiXHUyMDE5XCJcblx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRTdHIgPT09ICdcdTIwMUQnIHx8IGluc2VydGVkU3RyID09PSAnXHUyMDE5Jykge1xuXHRcdFx0XHRcdFx0bGV0IHRlbXBTdHIgPSBpbnNlcnRlZFN0ciA9PT0gXCJcdTIwMURcIiA/IFwiXHUyMDFDXHUyMDFEXCIgOiBcIlx1MjAxOFx1MjAxOVwiO1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczogeyBmcm9tOiBmcm9tQSwgdG86IHRvQSwgaW5zZXJ0OiB0ZW1wU3RyIH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IGZyb21BICsgMSB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pXG5cdFx0cmV0dXJuIHRyO1xuXHR9XG5cblx0dmlld1VwZGF0ZVBsdWdpbiA9ICh1cGRhdGU6IFZpZXdVcGRhdGUpID0+IHtcblxuXHRcdC8vIGNvbnNvbGUubG9nKHRyZWUpO1xuXG5cdFx0Ly8gaWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiLS0tLS0tLVZpZXdVcGRhdGUtLS0tLS0tLS1cIik7XG5cdFx0bGV0IG5vdFNlbGVjdGVkID0gdHJ1ZTtcblx0XHRsZXQgbWFpblNlbGVjdGlvbiA9IHVwZGF0ZS52aWV3LnN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW47XG5cdFx0aWYgKG1haW5TZWxlY3Rpb24uYW5jaG9yICE9IG1haW5TZWxlY3Rpb24uaGVhZCkgbm90U2VsZWN0ZWQgPSBmYWxzZTtcblx0XHQvLyAtLS0tLS0gRGVidWcgLS0tLS0tLS0tLS0tXG5cdFx0Ly8gaWYgKG5vdFNlbGVjdGVkKXtcblx0XHQvLyBcdC8vIHRoaXMuRm9ybWF0ZXIucGFyc2VMaW5lV2l0aFN5bnRheFRyZWUodXBkYXRlLnN0YXRlLCB1cGRhdGUuc3RhdGUuZG9jLmxpbmVBdChtYWluU2VsZWN0aW9uLmFuY2hvcikubnVtYmVyKTtcblx0XHQvLyBcdGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHVwZGF0ZS5zdGF0ZSk7XG5cdFx0Ly8gXHRsZXQgcG9zID0gbWFpblNlbGVjdGlvbi5hbmNob3I7XG5cdFx0Ly8gXHRsZXQgbm9kZSA9IHRyZWUucmVzb2x2ZShwb3MsIDEpO1xuXHRcdC8vIFx0Y29uc29sZS5sb2cobm9kZS5uYW1lLCBub2RlLmZyb20sIG5vZGUudG8sIHVwZGF0ZS5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcobm9kZS5mcm9tLCBub2RlLnRvKSk7XG5cdFx0Ly8gfVxuXG5cdFx0aWYgKCF1cGRhdGUuZG9jQ2hhbmdlZCkgcmV0dXJuO1xuXG5cdFx0bGV0IGlzRXhjbHVkZUZpbGUgPSB0aGlzLmlzQ3VycmVudEZpbGVFeGNsdWRlKCk7XG5cdFx0Ly8gY29uc29sZS5sb2codGhpcy5DdXJBY3RpdmVNYXJrZG93biwgaXNFeGNsdWRlRmlsZSlcblxuXHRcdC8vIGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSBjb25zb2xlLmxvZyhcIi0tLS0tVmlld1VwZGF0ZVdDaGFuZ2UtLS0tLVwiKTtcblx0XHRsZXQgdHIgPSB1cGRhdGUudHJhbnNhY3Rpb25zWzBdXG5cdFx0bGV0IGNoYW5nZVR5cGUgPSBnZXRUeXBlU3RyT2ZUcmFuc2FjKHRyKTtcblx0XHR0ci5jaGFuZ2VzLml0ZXJDaGFuZ2VzKChmcm9tQSwgdG9BLCBmcm9tQiwgdG9CLCBpbnNlcnRlZCkgPT4ge1xuXHRcdFx0bGV0IGluc2VydGVkU3RyID0gaW5zZXJ0ZWQuc2xpY2VTdHJpbmcoMCk7XG5cdFx0XHRsZXQgY2hhbmdlZFN0ciA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKGZyb21BLCB0b0EpO1xuXHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpXG5cdFx0XHRcdGNvbnNvbGUubG9nKFwiVmlld1VwZGF0ZSBDYXRjaCBDaGFuZ2UtPiBUeXBlOiBcIiArIGNoYW5nZVR5cGUgKyBcIiwgXCIsIGZyb21BLCB0b0EsIGNoYW5nZWRTdHIsIGZyb21CLCB0b0IsIGluc2VydGVkU3RyKTtcblxuXHRcdFx0Ly8gXHU2MjdFXHU1MjMwXHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXHVGRjBDXHU2QkQ0XHU4RjgzXHU1NDhDIHRvQiBcdTc2ODRcdTRGNERcdTdGNkVcdTY2MkZcdTU0MjZcdTc2RjhcdTU0MENcdUZGMENcdTc2RjhcdTU0MENcdTRFMTRcdTY3MDBcdTdFQzhcdTYzRDJcdTUxNjVcdTY1ODdcdTVCNTdcdTRFM0FcdTRFMkRcdTY1ODdcdUZGMENcdTUyMTlcdTRFM0FcdTRFMkRcdTY1ODdcdThGOTNcdTUxNjVcdTdFRDNcdTY3NUZcdTc2ODRcdTcyQjZcdTYwMDFcblx0XHRcdGxldCBjdXJzb3IgPSB1cGRhdGUudmlldy5zdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluO1xuXHRcdFx0bGV0IENoaW5lc2VSZWdFeHAgPSAvXltcXHU0ZTAwLVxcdTlmYTVcdTMwMTBcdTMwMTFcdTAwQjdcdUZGRTVcdTMwMEFcdTMwMEJcdUZGMUZcdUZGMUFcdTIwMTlcdTIwMThcdTIwMURcdTIwMUNcdTMwMENcdTMwMERcdTMwMDFcdTMwMDJcdUZGMENcdUZGMDhcdUZGMDlcdUZGMDFcdTIwMTRcdTIwMTRcdTIwMjZcdTIwMjYwLTldKyQvO1xuXHRcdFx0bGV0IGNoaW5lc2VFbmRGbGFnID0gY2hhbmdlVHlwZSA9PSBcImlucHV0LnR5cGUuY29tcG9zZVwiICYmXG5cdFx0XHRcdGN1cnNvci5hbmNob3IgPT0gY3Vyc29yLmhlYWQgJiYgY3Vyc29yLmFuY2hvciA9PT0gdG9CICYmXG5cdFx0XHRcdENoaW5lc2VSZWdFeHAudGVzdChpbnNlcnRlZFN0cik7XG5cblx0XHRcdGlmIChjaGFuZ2VUeXBlICE9IFwiaW5wdXQudHlwZS5jb21wb3NlXCIpIHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZT1mYWxzZTtcblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgJiYgbm90U2VsZWN0ZWQgJiYgIWlzRXhjbHVkZUZpbGUgJiZcblx0XHRcdFx0Z2V0UG9zTGluZVR5cGUodXBkYXRlLnZpZXcuc3RhdGUsIGZyb21CKSA9PSBMaW5lVHlwZS50ZXh0KXtcblx0XHRcdFx0aWYgKGNoYW5nZVR5cGUgPT0gXCJpbnB1dC50eXBlLmNvbXBvc2VcIil7XG5cdFx0XHRcdFx0aWYgKHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZT09ZmFsc2Upe1xuXHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX2JlZ2luX3BvcyA9IGZyb21CO1xuXHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX2VuZF9wb3MgPSB0b0I7XG5cdFx0XHRcdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX2VuZF9wb3MgPSB0b0I7XG5cdFx0XHRcdFx0XHRpZih0aGlzLmNvbXBvc2VfYmVnaW5fcG9zPT10aGlzLmNvbXBvc2VfZW5kX3Bvcyl7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY2hpbmVzZUVuZEZsYWcpIHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZT1mYWxzZTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJDb21wb3NlXCIsIGNoaW5lc2VFbmRGbGFnLCB0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUpO1xuXHRcdFx0fVxuXHRcdFx0XG5cblx0XHRcdC8vIFx1NTIyNFx1NjVBRFx1NkJDRlx1NkIyMVx1OEY5M1x1NTE2NVx1N0VEM1x1Njc1RlxuXHRcdFx0aWYgKGNoYW5nZVR5cGUgPT0gJ2lucHV0LnR5cGUnIHx8IGNoYW5nZVR5cGUgPT0gXCJpbnB1dFwiIHx8IGNoaW5lc2VFbmRGbGFnIHx8IGNoYW5nZVR5cGUgPT0gJ25vbmUnKSB7XG5cdFx0XHRcdC8vIFx1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1OEY2Q1x1NTMxNlx1ODlDNFx1NTIxOVxuXHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuVXNlckNvbnZlcnRSdWxlcykge1xuXHRcdFx0XHRcdC8vIGlmIChpbnNlcnRlZFN0ciAhPSBydWxlLmJlZm9yZS5sZWZ0LnN1YnN0cmluZyhydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCAtIGluc2VydGVkU3RyLmxlbmd0aCkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGxldCBsZWZ0ID0gdXBkYXRlLnZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0IpO1xuXHRcdFx0XHRcdGxldCByaWdodCA9IHVwZGF0ZS52aWV3LnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IsIHRvQiArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHR0bzogdG9CICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggfSxcblx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuUHVuY1JlY3RpZnkgJiYgY2hpbmVzZUVuZEZsYWcgJiYgdGhpcy5jb21wb3NlX2JlZ2luX3Bvcz4xICYmIFxuXHRcdFx0XHRcdC9bLC4/IV0vLnRlc3QodXBkYXRlLnZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRoaXMuY29tcG9zZV9iZWdpbl9wb3MtMSwgdGhpcy5jb21wb3NlX2JlZ2luX3BvcykpKXtcblx0XHRcdFx0XHRsZXQgcHVuYyA9IHVwZGF0ZS52aWV3LnN0YXRlLmRvYy5zbGljZVN0cmluZyh0aGlzLmNvbXBvc2VfYmVnaW5fcG9zLTEsIHRoaXMuY29tcG9zZV9iZWdpbl9wb3MpXG5cdFx0XHRcdFx0aWYgKHRoaXMuY29tcG9zZV9iZWdpbl9wb3M+MiAmJiBcblx0XHRcdFx0XHRcdC9bXFxzXFxuXFx3XS8udGVzdCh1cGRhdGUudmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodGhpcy5jb21wb3NlX2JlZ2luX3Bvcy0yLCB0aGlzLmNvbXBvc2VfYmVnaW5fcG9zLTEpKSl7fVxuXHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0aGlzLmNvbXBvc2VfYmVnaW5fcG9zLTEsXG5cdFx0XHRcdFx0XHRcdFx0dG86IHRoaXMuY29tcG9zZV9iZWdpbl9wb3MsXG5cdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiB0aGlzLmhhbGZUb0Z1bGxTeW1ib2xNYXAuZ2V0KHB1bmMpXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdC8vIHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBcdTUyMjRcdTY1QURcdTY4M0NcdTVGMEZcdTUzMTZcdTY1ODdcdTY3MkNcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJyZWFkeSB0byBmb3JtYXRcIik7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwiY2hlY2sgaXMgZXhjbHVlIGZpbGU6XCIsIGlzRXhjbHVkZUZpbGUpXG5cdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgJiYgbm90U2VsZWN0ZWQgJiYgIWlzRXhjbHVkZUZpbGUgJiYgKGNoYW5nZVR5cGUgIT0gJ25vbmUnIHx8IGluc2VydGVkU3RyLmNvbnRhaW5zKFwiXFxuXCIpKSAmJlxuXHRcdFx0XHRcdGdldFBvc0xpbmVUeXBlKHVwZGF0ZS52aWV3LnN0YXRlLCBmcm9tQikgPT0gTGluZVR5cGUudGV4dCkge1xuXHRcdFx0XHRcdGxldCBjaGFuZ2VzID0gdGhpcy5Gb3JtYXRlci5mb3JtYXRMaW5lT2ZEb2ModXBkYXRlLnN0YXRlLCB0aGlzLnNldHRpbmdzLCBmcm9tQiwgY3Vyc29yLmFuY2hvciwgaW5zZXJ0ZWRTdHIpO1xuXHRcdFx0XHRcdGlmIChjaGFuZ2VzICE9IG51bGwpIHtcblx0XHRcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKC4uLmNoYW5nZXNbMF0pO1xuXHRcdFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goY2hhbmdlc1sxXSk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgJiYgIWlzRXhjbHVkZUZpbGUgJiYgY2hhbmdlVHlwZSA9PSBcImlucHV0LnBhc3RlXCIgJiYgIVBsYXRmb3JtLmlzSW9zQXBwKSB7XG5cdFx0XHRcdGxldCB1cGRhdGVMaW5lU3RhcnQgPSB1cGRhdGUuc3RhdGUuZG9jLmxpbmVBdChmcm9tQikubnVtYmVyO1xuXHRcdFx0XHRsZXQgdXBkYXRlTGluZUVuZCA9IHVwZGF0ZS5zdGF0ZS5kb2MubGluZUF0KHRvQikubnVtYmVyO1xuXHRcdFx0XHRpZiAodXBkYXRlTGluZVN0YXJ0ID09IHVwZGF0ZUxpbmVFbmQgJiYgZ2V0UG9zTGluZVR5cGUodXBkYXRlLnZpZXcuc3RhdGUsIHRvQikgPT0gTGluZVR5cGUudGV4dCkge1xuXHRcdFx0XHRcdGxldCBjaGFuZ2VzID0gdGhpcy5Gb3JtYXRlci5mb3JtYXRMaW5lT2ZEb2ModXBkYXRlLnN0YXRlLCB0aGlzLnNldHRpbmdzLCB0b0IsIHRvQiwgaW5zZXJ0ZWRTdHIpO1xuXHRcdFx0XHRcdGlmIChjaGFuZ2VzICE9IG51bGwpIHtcblx0XHRcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKC4uLmNoYW5nZXNbMF0pO1xuXHRcdFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goY2hhbmdlc1sxXSk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSB1cGRhdGVMaW5lU3RhcnQ7IGkgPD0gdXBkYXRlTGluZUVuZDsgaSsrKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmZvcm1hdE9uZUxpbmUodGhpcy5nZXRFZGl0b3IoKSwgaSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XHQvLyBpdGVyY2hhbmdlcyBlbmRcblx0fVxuXG5cdHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlVGFiRG93biA9ICh2aWV3OiBFZGl0b3JWaWV3KSA9PiB7XG5cdFx0aWYgKCF0aGlzLnNldHRpbmdzLlRhYm91dCkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0bGV0IHN0YXRlID0gdmlldy5zdGF0ZTtcblx0XHRsZXQgZG9jID0gc3RhdGUuZG9jXG5cdFx0Y29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuXHRcdGNvbnN0IHMgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbjtcblx0XHRpZiAocy5yYW5nZXMubGVuZ3RoID4gMSkgcmV0dXJuIGZhbHNlO1xuXHRcdGNvbnN0IHBvcyA9IHMubWFpbi50bztcblx0XHRsZXQgbGluZSA9IGRvYy5saW5lQXQocG9zKVxuXG5cdFx0Ly8gRGVidWcgaW5mb1xuXHRcdC8vIGNvbnNvbGUubG9nKGxpbmUudGV4dClcblx0XHQvLyBmb3IgKGxldCBwPWxpbmUuZnJvbTsgcDw9bGluZS50bzsgcCs9MSl7XG5cdFx0Ly8gXHRjb25zdCB0b2tlbiA9IHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lXG5cdFx0Ly8gXHRjb25zb2xlLmxvZyhwLWxpbmUuZnJvbSwgdG9rZW4pXG5cdFx0Ly8gfVxuXHRcdC8vIHJldHVybiB0cnVlO1xuXG5cdFx0Ly8gXHU1RjUzXHU1MTQ5XHU2ODA3XHU1NzI4XHU4ODRDXHU1MTg1XHU0RUUzXHU3ODAxXHU1MTg1XHU5MEU4XG5cdFx0aWYgKHBvcyAtIGxpbmUuZnJvbSAhPSAwICYmIHRyZWUucmVzb2x2ZShwb3MgLSAxLCAxKS5uYW1lLmNvbnRhaW5zKCdpbmxpbmUtY29kZScpKSB7XG5cdFx0XHRpZiAodHJlZS5yZXNvbHZlKHBvcywgMSkubmFtZS5jb250YWlucygnZm9ybWF0dGluZy1jb2RlX2lubGluZS1jb2RlJykpIHtcblx0XHRcdFx0dmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogcG9zICsgMSwgaGVhZDogcG9zICsgMSB9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGxldCBwID0gcG9zICsgMTsgcCA8IGxpbmUudG8gJiYgdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2lubGluZS1jb2RlJyk7IHAgKz0gMSkge1xuXHRcdFx0XHQvLyBcdTU5ODJcdTY3OUNcdTYyN0VcdTUyMzAgYCBcdTUyMTlcdTUxNDlcdTY4MDdcdThERjNcdTUyMzBcdTUxNzZcdTU0MEVcblx0XHRcdFx0aWYgKHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdmb3JtYXR0aW5nLWNvZGVfaW5saW5lLWNvZGUnKSkge1xuXHRcdFx0XHRcdHZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogcCwgaGVhZDogcCB9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBcdTU5ODJcdTY3OUNcdTZDQTFcdTYyN0VcdTUyMzAgYCBcdTUyMTlcdTc2RjRcdTYzQTVcdThERjNcdTUyMzBcdTg4NENcdTVDM0Vcblx0XHRcdFx0aWYgKHAgPT0gbGluZS50byAtIDEgJiYgdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2lubGluZS1jb2RlJykpIHtcblx0XHRcdFx0XHR2aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHAgKyAxLCBoZWFkOiBwICsgMSB9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlRW50ZXIgPSAodmlldzogRWRpdG9yVmlldykgPT4ge1xuXHRcdC8vIGNvbnNvbGUubG9nKFwidGhpcy5zZXR0aW5ncy5FbnRlclR3aWNlXCIsIHRoaXMuc2V0dGluZ3MuRW50ZXJUd2ljZSlcblx0XHRpZiAoIXRoaXMuc2V0dGluZ3MuRW50ZXJUd2ljZSkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0Y29uc3QgYmFzZVBhdGggPSAodGhpcy5hcHAudmF1bHQuYWRhcHRlciBhcyBhbnkpLmJhc2VQYXRoXG5cdFx0bGV0IGNvbmZpZ19wYXRoID0gYmFzZVBhdGggKyBcIi9cIisgdGhpcy5hcHAudmF1bHQuY29uZmlnRGlyK1wiL2FwcC5qc29uXCI7XG5cdFx0bGV0IGNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGNvbmZpZ19wYXRoLCAndXRmLTgnKSlcblx0XHRsZXQgc3RyaWN0TGluZUJyZWFrcyA9IGNvbmZpZy5zdHJpY3RMaW5lQnJlYWtzIHx8IGZhbHNlO1xuXHRcdGlmKCFzdHJpY3RMaW5lQnJlYWtzKSByZXR1cm4gZmFsc2U7XG5cblx0XHRsZXQgc3RhdGUgPSB2aWV3LnN0YXRlO1xuXHRcdGxldCBkb2MgPSBzdGF0ZS5kb2Ncblx0XHRjb25zdCB0cmVlID0gc3ludGF4VHJlZShzdGF0ZSk7XG5cdFx0Y29uc3QgcyA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uO1xuXHRcdGlmIChzLnJhbmdlcy5sZW5ndGggPiAxKSByZXR1cm4gZmFsc2U7XG5cdFx0Y29uc3QgcG9zID0gcy5tYWluLnRvO1xuXHRcdGxldCBsaW5lID0gZG9jLmxpbmVBdChwb3MpXG5cblx0XHQvLyBjb25zb2xlLmxvZyhsaW5lLnRleHQsIGdldFBvc0xpbmVUeXBlMihzdGF0ZSwgcG9zKSlcblx0XHQvLyBmb3IgKGxldCBwPWxpbmUuZnJvbTsgcDw9bGluZS50bzsgcCs9MSl7XG5cdFx0Ly8gXHRjb25zdCB0b2tlbiA9IHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lXG5cdFx0Ly8gXHRjb25zb2xlLmxvZyhwLWxpbmUuZnJvbSwgdG9rZW4pXG5cdFx0Ly8gfVxuXHRcdGlmICgvXlxccyokLy50ZXN0KGxpbmUudGV4dCkpIHJldHVybiBmYWxzZTtcblx0XHRlbHNlIGlmKGdldFBvc0xpbmVUeXBlMihzdGF0ZSwgcG9zKT09TGluZVR5cGUudGV4dCl7XG5cdFx0XHR2aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdGZyb206IHBvcyxcblx0XHRcdFx0XHR0bzogcG9zLFxuXHRcdFx0XHRcdGluc2VydDogJ1xcblxcbidcblx0XHRcdFx0fSxcblx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogcG9zKzIgfSxcblx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdH0pXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwcml2YXRlIHJlYWRvbmx5IG9uS2V5dXAgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHZpZXc6IEVkaXRvclZpZXcpID0+IHtcblx0XHRpZih0aGlzLnNldHRpbmdzLmRlYnVnKXtcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiS2V5dXA6XCIsIGV2ZW50LmtleSwgZXZlbnQuc2hpZnRLZXksIGV2ZW50LmN0cmxLZXl8fGV2ZW50Lm1ldGFLZXkpO1xuXHRcdFx0Y29uc29sZS5sb2coXCJLZXl1cDpcIiwgZXZlbnQua2V5KTtcblx0XHR9XG5cdFx0dGhpcy5oYW5kbGVFbmRDb21wb3NlVHlwZUtleShldmVudCwgdmlldyk7XG5cdH1cblxuXHRoYW5kbGVFbmRDb21wb3NlVHlwZUtleSA9IChldmVudDogS2V5Ym9hcmRFdmVudCwgdmlldzogRWRpdG9yVmlldykgPT4ge1xuXHRcdGlmICghdGhpcy5zZXR0aW5ncy5UcnlGaXhDaGluZXNlSU0pIHJldHVybjtcblx0XHRpZihbJ0VudGVyJ10uY29udGFpbnMoZXZlbnQua2V5KSAmJiB0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgJiYgXG5cdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgJiYgIXRoaXMuaXNDdXJyZW50RmlsZUV4Y2x1ZGUoKSl7XG5cdFx0XHRcdGxldCBjdXJzb3IgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW47XG5cdFx0XHRcdGlmKGdldFBvc0xpbmVUeXBlKHZpZXcuc3RhdGUsIGN1cnNvci5hbmNob3IpICE9IExpbmVUeXBlLnRleHQpIHJldHVybjtcblx0XHRcdFx0aWYgKGN1cnNvci5oZWFkICE9IGN1cnNvci5hbmNob3IpIHJldHVybjtcblx0XHRcdFx0bGV0IGluc2VydGVkU3RyID0gdmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodGhpcy5jb21wb3NlX2JlZ2luX3BvcywgY3Vyc29yLmFuY2hvcik7XG5cdFx0XHRcdGNvbnNvbGUubG9nKFwiaW5zZXJ0ZWQgc3RyXCIsIGluc2VydGVkU3RyKTtcblx0XHRcdFx0bGV0IGNoYW5nZXMgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmVPZkRvYyh2aWV3LnN0YXRlLCB0aGlzLnNldHRpbmdzLCBcblx0XHRcdFx0dGhpcy5jb21wb3NlX2JlZ2luX3BvcywgY3Vyc29yLmFuY2hvciwgaW5zZXJ0ZWRTdHIpO1xuXHRcdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPSBmYWxzZTtcblx0XHRcdFx0aWYgKGNoYW5nZXMgIT0gbnVsbCkge1xuXHRcdFx0XHRcdHZpZXcuZGlzcGF0Y2goLi4uY2hhbmdlc1swXSk7XG5cdFx0XHRcdFx0dmlldy5kaXNwYXRjaChjaGFuZ2VzWzFdKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRmb3JtYXRBcnRpY2xlID0gKGVkaXRvcjogRWRpdG9yLCB2aWV3OiBNYXJrZG93blZpZXcpOiB2b2lkID0+IHtcblx0XHRsZXQgbGluZUNvdW50ID0gZWRpdG9yLmxpbmVDb3VudCgpO1xuXHRcdGxldCBuZXdfYXJ0aWNsZSA9IFwiXCI7XG5cdFx0bGV0IGNzID0gZWRpdG9yLmdldEN1cnNvcigpO1xuXHRcdGxldCBjaCA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lQ291bnQ7IGkrKykge1xuXHRcdFx0aWYoaSE9MCkgbmV3X2FydGljbGUrPSdcXG4nO1xuXHRcdFx0aWYoaSE9Y3MubGluZSl7XG5cdFx0XHRcdG5ld19hcnRpY2xlICs9IHRoaXMucHJlRm9ybWF0T25lTGluZShlZGl0b3IsIGkgKyAxKVswXTtcblx0XHRcdH1cblx0XHRcdGVsc2V7XG5cdFx0XHRcdGxldCBuZXdEYXRhID0gdGhpcy5wcmVGb3JtYXRPbmVMaW5lKGVkaXRvciwgaSArIDEsIGNzLmNoKTtcblx0XHRcdFx0bmV3X2FydGljbGUgKz0gbmV3RGF0YVswXTtcblx0XHRcdFx0Y2ggPSBuZXdEYXRhWzFdO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRlZGl0b3Iuc2V0VmFsdWUobmV3X2FydGljbGUpO1xuXHRcdGVkaXRvci5zZXRDdXJzb3Ioe2xpbmU6Y3MubGluZSwgY2g6Y2h9KTtcblx0XHRuZXcgTm90aWNlKFwiRWFzeVR5cGluZzogRm9ybWF0IEFydGljbGUgRG9uZSFcIik7XG5cdH1cblxuXHRpc0N1cnJlbnRGaWxlRXhjbHVkZSgpOiBib29sZWFuIHtcblx0XHRpZiAodGhpcy5DdXJBY3RpdmVNYXJrZG93biA9PSBcIlwiKXtcblx0XHRcdGxldCBmaWxlID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKTtcblx0XHRcdGlmIChmaWxlIT1udWxsICYmIHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24gIT0gZmlsZS5wYXRoKVxuXHRcdFx0e1xuXHRcdFx0XHR0aGlzLkN1ckFjdGl2ZU1hcmtkb3duID0gZmlsZS5wYXRoO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGxldCBleGNsdWRlUGF0aHMgPSB0aGlzLnNldHRpbmdzLkV4Y2x1ZGVGaWxlcy5zcGxpdCgnXFxuJyk7XG5cdFx0Zm9yIChsZXQgZXBhdGggb2YgZXhjbHVkZVBhdGhzKSB7XG5cdFx0XHRpZiAoZXBhdGguY2hhckF0KDApID09ICcvJykgZXBhdGggPSBlcGF0aC5zdWJzdHJpbmcoMSk7XG5cdFx0XHRpZiAodGhpcy5DdXJBY3RpdmVNYXJrZG93biA9PSBlcGF0aCkgcmV0dXJuIHRydWU7XG5cdFx0XHRsZXQgbGVuID0gZXBhdGgubGVuZ3RoO1xuXHRcdFx0aWYgKHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24uc3Vic3RyaW5nKDAsIGxlbikgPT0gZXBhdGggJiYgKHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24uY2hhckF0KGxlbikgPT0gJy8nIHx8IHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24uY2hhckF0KGxlbikgPT0gJ1xcXFwnIHx8XG5cdFx0XHRcdGVwYXRoLmNoYXJBdChsZW4gLSAxKSA9PSBcIi9cIiB8fCBlcGF0aC5jaGFyQXQobGVuIC0gMSkgPT0gXCJcXFxcXCIpKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRmb3JtYXRTZWxlY3Rpb25PckN1ckxpbmUgPSAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldyk6IHZvaWQgPT4ge1xuXHRcdGlmICghZWRpdG9yLnNvbWV0aGluZ1NlbGVjdGVkKCkgfHwgZWRpdG9yLmdldFNlbGVjdGlvbigpID09PSAnJykge1xuXHRcdFx0bGV0IGxpbmVOdW1iZXIgPSBlZGl0b3IuZ2V0Q3Vyc29yKCkubGluZTtcblx0XHRcdGxldCBuZXdMaW5lRGF0YSA9IHRoaXMucHJlRm9ybWF0T25lTGluZShlZGl0b3IsIGxpbmVOdW1iZXIgKyAxLCBlZGl0b3IuZ2V0Q3Vyc29yKCkuY2gpO1xuXHRcdFx0ZWRpdG9yLnJlcGxhY2VSYW5nZShuZXdMaW5lRGF0YVswXSwge2xpbmU6IGxpbmVOdW1iZXIsIGNoOjB9LCB7bGluZTpsaW5lTnVtYmVyLCBjaDplZGl0b3IuZ2V0TGluZShsaW5lTnVtYmVyKS5sZW5ndGh9KTtcblx0XHRcdGVkaXRvci5zZXRTZWxlY3Rpb24oe2xpbmU6bGluZU51bWJlciwgY2g6bmV3TGluZURhdGFbMV19KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0bGV0IHNlbGVjdGlvbiA9IGVkaXRvci5saXN0U2VsZWN0aW9ucygpWzBdO1xuXHRcdGxldCBiZWdpbiA9IHNlbGVjdGlvbi5hbmNob3IubGluZTtcblx0XHRsZXQgZW5kID0gc2VsZWN0aW9uLmhlYWQubGluZTtcblx0XHRpZiAoYmVnaW4gPiBlbmQpIHtcblx0XHRcdGxldCB0ZW1wID0gYmVnaW47XG5cdFx0XHRiZWdpbiA9IGVuZDtcblx0XHRcdGVuZCA9IHRlbXA7XG5cdFx0fVxuXHRcdC8vIGNvbnNvbGUubG9nKGJlZ2luLCBlbmQpXG5cdFx0bGV0IG5ld19saW5lcyA9IFwiXCI7XG5cdFx0Zm9yIChsZXQgaT1iZWdpbjsgaSA8PSBlbmQ7IGkrKykge1xuXHRcdFx0aWYoaSE9YmVnaW4pIG5ld19saW5lcys9J1xcbic7XG5cdFx0XHRjb25zb2xlLmxvZygnaSsxJywgaSsxKVxuXHRcdFx0bmV3X2xpbmVzKz10aGlzLnByZUZvcm1hdE9uZUxpbmUoZWRpdG9yLCBpICsgMSlbMF07XG5cdFx0fVxuXHRcdGVkaXRvci5yZXBsYWNlUmFuZ2UobmV3X2xpbmVzLCB7bGluZTogYmVnaW4sIGNoOjB9LCB7bGluZTplbmQsIGNoOmVkaXRvci5nZXRMaW5lKGVuZCkubGVuZ3RofSk7XG5cdFx0aWYgKHNlbGVjdGlvbi5hbmNob3IubGluZSA8IHNlbGVjdGlvbi5oZWFkLmxpbmUpIHtcblx0XHRcdGVkaXRvci5zZXRTZWxlY3Rpb24oeyBsaW5lOiBzZWxlY3Rpb24uYW5jaG9yLmxpbmUsIGNoOiAwIH0sIHsgbGluZTogc2VsZWN0aW9uLmhlYWQubGluZSwgY2g6IGVkaXRvci5nZXRMaW5lKHNlbGVjdGlvbi5oZWFkLmxpbmUpLmxlbmd0aCB9KTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRlZGl0b3Iuc2V0U2VsZWN0aW9uKHsgbGluZTogc2VsZWN0aW9uLmFuY2hvci5saW5lLCBjaDogZWRpdG9yLmdldExpbmUoc2VsZWN0aW9uLmFuY2hvci5saW5lKS5sZW5ndGggfSwgeyBsaW5lOiBzZWxlY3Rpb24uaGVhZC5saW5lLCBjaDogMCB9KTtcblx0XHR9XG5cdH1cblxuXHQvLyBwYXJhbTogbGluZU51bWJlciBpcyAoMS1iYXNlZClcblx0Zm9ybWF0T25lTGluZSA9IChlZGl0b3I6IEVkaXRvciwgbGluZU51bWJlcjogbnVtYmVyKTogdm9pZCA9PiB7XG5cdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciwgbm90IHR5cGVkXG5cdFx0Y29uc3QgZWRpdG9yVmlldyA9IGVkaXRvci5jbSBhcyBFZGl0b3JWaWV3O1xuXHRcdGxldCBzdGF0ZSA9IGVkaXRvclZpZXcuc3RhdGU7XG5cdFx0bGV0IGxpbmUgPSBzdGF0ZS5kb2MubGluZShsaW5lTnVtYmVyKVxuXG5cdFx0aWYgKGdldFBvc0xpbmVUeXBlKHN0YXRlLCBsaW5lLmZyb20pID09IExpbmVUeXBlLnRleHQpIHtcblx0XHRcdGxldCBvbGRMaW5lID0gbGluZS50ZXh0O1xuXHRcdFx0bGV0IG5ld0xpbmUgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmUoc3RhdGUsIGxpbmVOdW1iZXIsIHRoaXMuc2V0dGluZ3MsIG9sZExpbmUubGVuZ3RoLCAwKVswXTtcblx0XHRcdGlmIChvbGRMaW5lICE9IG5ld0xpbmUpIHtcblx0XHRcdFx0ZWRpdG9yLnJlcGxhY2VSYW5nZShuZXdMaW5lLCB7IGxpbmU6IGxpbmVOdW1iZXIgLSAxLCBjaDogMCB9LCB7IGxpbmU6IGxpbmVOdW1iZXIgLSAxLCBjaDogb2xkTGluZS5sZW5ndGggfSk7XG5cdFx0XHRcdGVkaXRvci5zZXRDdXJzb3IoeyBsaW5lOiBsaW5lTnVtYmVyIC0gMSwgY2g6IGVkaXRvci5nZXRMaW5lKGxpbmVOdW1iZXIgLSAxKS5sZW5ndGggfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIHBhcmFtOiBsaW5lTnVtYmVyIGlzICgxLWJhc2VkKVxuXHRwcmVGb3JtYXRPbmVMaW5lID0gKGVkaXRvcjogRWRpdG9yLCBsaW5lTnVtYmVyOiBudW1iZXIsIGNoOm51bWJlcj0tMSk6IFtzdHJpbmcsIG51bWJlcl0gPT4ge1xuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IsIG5vdCB0eXBlZFxuXHRcdGNvbnN0IGVkaXRvclZpZXcgPSBlZGl0b3IuY20gYXMgRWRpdG9yVmlldztcblx0XHRsZXQgc3RhdGUgPSBlZGl0b3JWaWV3LnN0YXRlO1xuXHRcdGxldCBsaW5lID0gc3RhdGUuZG9jLmxpbmUobGluZU51bWJlcilcblxuXHRcdGxldCBuZXdMaW5lID0gbGluZS50ZXh0O1xuXHRcdGxldCBuZXdDaCA9IDA7XG5cdFx0bGV0IGN1ckNoID0gbGluZS50ZXh0Lmxlbmd0aDtcblx0XHRpZiAoY2ghPS0xKXtcblx0XHRcdGN1ckNoID0gY2g7XG5cdFx0fVxuXHRcdGlmIChnZXRQb3NMaW5lVHlwZShzdGF0ZSwgbGluZS5mcm9tKSA9PSBMaW5lVHlwZS50ZXh0KSB7XG5cdFx0XHRsZXQgbmV3TGluZURhdGEgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmUoc3RhdGUsIGxpbmVOdW1iZXIsIHRoaXMuc2V0dGluZ3MsIGN1ckNoLCAwKTtcblx0XHRcdG5ld0xpbmUgPSBuZXdMaW5lRGF0YVswXTtcblx0XHRcdG5ld0NoID0gbmV3TGluZURhdGFbMV07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFtuZXdMaW5lLCBuZXdDaF07XG5cdH1cblxuXHRkZWxldGVCbGFua0xpbmVzID0gKGVkaXRvcjogRWRpdG9yKTogdm9pZCA9PiB7XG5cdFx0Y29uc3QgYmFzZVBhdGggPSAodGhpcy5hcHAudmF1bHQuYWRhcHRlciBhcyBhbnkpLmJhc2VQYXRoXG5cdFx0bGV0IGNvbmZpZ19wYXRoID0gYmFzZVBhdGggKyBcIi9cIisgdGhpcy5hcHAudmF1bHQuY29uZmlnRGlyK1wiL2FwcC5qc29uXCI7XG5cdFx0aWYodGhpcy5zZXR0aW5ncy5kZWJ1Zyl7XG5cdFx0XHRjb25zb2xlLmxvZyhjb25maWdfcGF0aCk7XG5cdFx0XHRsZXQgY29uZmlnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoY29uZmlnX3BhdGgsICd1dGYtOCcpKVxuXHRcdFx0Y29uc29sZS5sb2coY29uZmlnKTtcblx0XHRcdC8vIHJldHVybjtcblx0XHR9XG5cdFx0Ly8gbGV0IGNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGNvbmZpZ19wYXRoLCAndXRmLTgnKSlcblx0XHQvLyBsZXQgc3RyaWN0TGluZUJyZWFrcyA9IGNvbmZpZy5zdHJpY3RMaW5lQnJlYWtzO1xuXHRcdC8vIHJldHVybiA7XG5cblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yLCBub3QgdHlwZWRcblx0XHRjb25zdCBlZGl0b3JWaWV3ID0gZWRpdG9yLmNtIGFzIEVkaXRvclZpZXc7XG5cdFx0bGV0IHN0YXRlID0gZWRpdG9yVmlldy5zdGF0ZTtcblx0XHRsZXQgZG9jID0gc3RhdGUuZG9jXG5cdFx0Y29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuXHRcdGxldCBzdGFydF9saW5lID0gMTtcblx0XHRsZXQgZW5kX2xpbmUgPSBkb2MubGluZXM7XG5cdFx0bGV0IGxpbmVfbnVtID0gZG9jLmxpbmVzO1xuXHRcdGNvbnN0IHNlbGVjdGVkID0gZWRpdG9yLnNvbWV0aGluZ1NlbGVjdGVkKCkgJiYgZWRpdG9yLmdldFNlbGVjdGlvbigpICE9ICcnO1xuXHRcdGlmIChzZWxlY3RlZCkge1xuXHRcdFx0bGV0IHNlbGVjdGlvbiA9IGVkaXRvci5saXN0U2VsZWN0aW9ucygpWzBdO1xuXHRcdFx0bGV0IGJlZ2luID0gc2VsZWN0aW9uLmFuY2hvci5saW5lICsgMTtcblx0XHRcdGxldCBlbmQgPSBzZWxlY3Rpb24uaGVhZC5saW5lICsgMTtcblx0XHRcdGlmIChiZWdpbiA+IGVuZCkge1xuXHRcdFx0XHRsZXQgdGVtcCA9IGJlZ2luO1xuXHRcdFx0XHRiZWdpbiA9IGVuZDtcblx0XHRcdFx0ZW5kID0gdGVtcDtcblx0XHRcdH1cblx0XHRcdHN0YXJ0X2xpbmUgPSBiZWdpbjtcblx0XHRcdGVuZF9saW5lID0gZW5kXG5cdFx0fVxuXG5cdFx0Ly8gaWYodGhpcy5zZXR0aW5ncy5kZWJ1Zyl7XG5cdFx0Ly8gXHRsZXQgbGluZV9pbmRleCA9IGVkaXRvci5nZXRDdXJzb3IoKS5saW5lICsgMTtcblx0XHQvLyBcdGxldCBjb250ZW50ID0gZWRpdG9yLmdldExpbmUoZWRpdG9yLmdldEN1cnNvcigpLmxpbmUpO1xuXHRcdC8vIFx0Y29uc29sZS5sb2coY29udGVudCk7XG5cdFx0Ly8gXHRmb3IgKGxldCBpPTA7aTxjb250ZW50Lmxlbmd0aDtpKyspe1xuXHRcdC8vIFx0XHRsZXQgbm9kZSA9IHRyZWUucmVzb2x2ZShkb2MubGluZShsaW5lX2luZGV4KS5mcm9tK2ksIDEpO1xuXHRcdC8vIFx0XHRjb25zb2xlLmxvZyhpLCBub2RlLm5hbWUpXG5cdFx0Ly8gXHR9XG5cdFx0Ly8gXHRyZXR1cm47XG5cdFx0Ly8gfVxuXHRcdFxuXHRcdFxuXHRcdGxldCBkZWxldGVfaW5kZXg6IG51bWJlcltdID0gW107XG5cdFx0bGV0IGJsYW5rX3JlZyA9IC9eXFxzKiQvO1xuXHRcdGxldCByZW1haW5fbmV4dF9ibGFuayA9IGZhbHNlO1xuXG5cdFx0aWYgKHN0YXJ0X2xpbmUgIT0gMSkge1xuXHRcdFx0bGV0IG5vZGUgPSB0cmVlLnJlc29sdmUoZG9jLmxpbmUoc3RhcnRfbGluZSAtIDEpLmZyb20sIDEpO1xuXHRcdFx0aWYgKG5vZGUubmFtZS5jb250YWlucygnbGlzdCcpIHx8IG5vZGUubmFtZS5jb250YWlucygncXVvdGUnKSB8fCBub2RlLm5hbWUuY29udGFpbnMoJ2Jsb2NraWQnKSkge1xuXHRcdFx0XHRyZW1haW5fbmV4dF9ibGFuayA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChlbmRfbGluZSAhPSBsaW5lX251bSAmJiAhYmxhbmtfcmVnLnRlc3QoZG9jLmxpbmUoZW5kX2xpbmUgKyAxKS50ZXh0KSkge1xuXHRcdFx0ZW5kX2xpbmUgKz0gMTtcblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gc3RhcnRfbGluZTsgaSA8PSBlbmRfbGluZTsgaSsrKSB7XG5cdFx0XHRsZXQgbGluZSA9IGRvYy5saW5lKGkpO1xuXHRcdFx0bGV0IHBvcyA9IGxpbmUuZnJvbTtcblx0XHRcdGxldCBub2RlID0gdHJlZS5yZXNvbHZlKHBvcywgMSk7XG5cblx0XHRcdC8vIFx1NUJGOVx1NEU4RVx1N0E3QVx1NzY3RFx1ODg0Q1xuXHRcdFx0aWYgKGJsYW5rX3JlZy50ZXN0KGxpbmUudGV4dCkgJiYgIXJlbWFpbl9uZXh0X2JsYW5rKSB7XG5cdFx0XHRcdGRlbGV0ZV9pbmRleC5wdXNoKGkpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKGJsYW5rX3JlZy50ZXN0KGxpbmUudGV4dCkgJiYgcmVtYWluX25leHRfYmxhbmspIHtcblx0XHRcdFx0cmVtYWluX25leHRfYmxhbmsgPSBmYWxzZTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChub2RlLm5hbWUuY29udGFpbnMoJ2hyJykgJiYgZGVsZXRlX2luZGV4W2RlbGV0ZV9pbmRleC5sZW5ndGggLSAxXSA9PSBpIC0gMSkge1xuXHRcdFx0XHRkZWxldGVfaW5kZXgucG9wKClcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKG5vZGUubmFtZS5jb250YWlucygnbGlzdCcpIHx8IG5vZGUubmFtZS5jb250YWlucygncXVvdGUnKSB8fCBub2RlLm5hbWUuY29udGFpbnMoJ2Jsb2NraWQnKSkge1xuXHRcdFx0XHRyZW1haW5fbmV4dF9ibGFuayA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0cmVtYWluX25leHRfYmxhbmsgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gY29uc29sZS5sb2coXCJkZWxldGVfaW5kZXhcIixkZWxldGVfaW5kZXgpXG5cdFx0bGV0IG5ld0NvbnRlbnQgPSBcIlwiO1xuXHRcdGZvciAobGV0IGkgPSAxOyBpIDwgbGluZV9udW07IGkrKykge1xuXHRcdFx0aWYgKCFkZWxldGVfaW5kZXguY29udGFpbnMoaSkpIHtcblx0XHRcdFx0bmV3Q29udGVudCArPSBkb2MubGluZShpKS50ZXh0ICsgJ1xcbic7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICghZGVsZXRlX2luZGV4LmNvbnRhaW5zKGxpbmVfbnVtKSkge1xuXHRcdFx0bmV3Q29udGVudCArPSBkb2MubGluZShsaW5lX251bSkudGV4dFxuXHRcdH1cblxuXHRcdGVkaXRvci5zZXRWYWx1ZShuZXdDb250ZW50KTtcblx0XHQvLyB0aGlzLkNvbnRlbnRQYXJzZXIucmVwYXJzZShlZGl0b3IuZ2V0VmFsdWUoKSwgMCk7XG5cdH1cblxuXHRzd2l0Y2hBdXRvRm9ybWF0dGluZygpIHtcblx0XHR0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgPSB0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgPyBmYWxzZSA6IHRydWU7XG5cdFx0bGV0IHN0YXR1cyA9IHRoaXMuc2V0dGluZ3MuQXV0b0Zvcm1hdCA/ICdvbicgOiAnb2ZmJztcblx0XHRuZXcgTm90aWNlKCdFYXN5VHlwaW5nOiBBdXRvZm9ybWF0IGlzICcgKyBzdGF0dXMgKyAnIScpO1xuXHR9XG5cblx0Y29udmVydDJDb2RlQmxvY2soZWRpdG9yOiBFZGl0b3IpIHtcblx0XHRpZiAodGhpcy5zZXR0aW5ncy5kZWJ1ZykgY29uc29sZS5sb2coXCItLS0tLSBFYXN5VHlwaW5nOiBpbnNlcnQgY29kZSBibG9jay0tLS0tXCIpO1xuXHRcdGlmIChlZGl0b3Iuc29tZXRoaW5nU2VsZWN0ZWQgJiYgZWRpdG9yLmdldFNlbGVjdGlvbigpICE9IFwiXCIpIHtcblx0XHRcdGxldCBzZWxlY3RlZCA9IGVkaXRvci5nZXRTZWxlY3Rpb24oKTtcblx0XHRcdGxldCBzZWxlY3RlZFJhbmdlID0gZWRpdG9yLmxpc3RTZWxlY3Rpb25zKClbMF07XG5cdFx0XHRsZXQgYW5jaG9yID0gc2VsZWN0ZWRSYW5nZS5hbmNob3I7XG5cdFx0XHRsZXQgaGVhZCA9IHNlbGVjdGVkUmFuZ2UuaGVhZDtcblxuXHRcdFx0bGV0IHJlcGxhY2VtZW50ID0gXCJgYGBcXG5cIiArIHNlbGVjdGVkICsgXCJcXG5gYGBcIjtcblx0XHRcdC8vIG1ha2Ugc3VyZSBhbmNob3IgPCBoZWFkXG5cdFx0XHRpZiAoYW5jaG9yLmxpbmUgPiBoZWFkLmxpbmUgfHwgKGFuY2hvci5saW5lID09IGhlYWQubGluZSAmJiBhbmNob3IuY2ggPiBoZWFkLmNoKSkge1xuXHRcdFx0XHRsZXQgdGVtcCA9IGFuY2hvcjtcblx0XHRcdFx0YW5jaG9yID0gaGVhZDtcblx0XHRcdFx0aGVhZCA9IHRlbXA7XG5cdFx0XHR9XG5cdFx0XHRsZXQgZHN0TGluZSA9IGFuY2hvci5saW5lO1xuXHRcdFx0aWYgKGFuY2hvci5jaCAhPSAwKSB7XG5cdFx0XHRcdHJlcGxhY2VtZW50ID0gJ1xcbicgKyByZXBsYWNlbWVudDtcblx0XHRcdFx0ZHN0TGluZSArPSAxO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGhlYWQuY2ggIT0gZWRpdG9yLmdldExpbmUoaGVhZC5saW5lKS5sZW5ndGgpIHtcblx0XHRcdFx0cmVwbGFjZW1lbnQgPSByZXBsYWNlbWVudCArICdcXG4nO1xuXHRcdFx0fVxuXHRcdFx0ZWRpdG9yLnJlcGxhY2VTZWxlY3Rpb24ocmVwbGFjZW1lbnQpO1xuXHRcdFx0ZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IGRzdExpbmUsIGNoOiAzIH0pO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdGxldCBjcyA9IGVkaXRvci5nZXRDdXJzb3IoKTtcblx0XHRcdGxldCByZXBsYWNlID0gXCJgYGBcXG5gYGBcIjtcblx0XHRcdGxldCBkc3RMaW5lID0gY3MubGluZTtcblx0XHRcdGlmIChjcy5jaCAhPSAwKSB7XG5cdFx0XHRcdHJlcGxhY2UgPSBcIlxcblwiICsgcmVwbGFjZTtcblx0XHRcdFx0ZHN0TGluZSArPSAxO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGNzLmNoICE9IGVkaXRvci5nZXRMaW5lKGNzLmxpbmUpLmxlbmd0aCkge1xuXHRcdFx0XHRyZXBsYWNlID0gcmVwbGFjZSArICdcXG4nO1xuXHRcdFx0fVxuXHRcdFx0ZWRpdG9yLnJlcGxhY2VSYW5nZShyZXBsYWNlLCBjcyk7XG5cdFx0XHRlZGl0b3Iuc2V0Q3Vyc29yKHsgbGluZTogZHN0TGluZSwgY2g6IDMgfSk7XG5cdFx0fVxuXG5cdH1cblxuXHRyZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKSB7XG5cdFx0dGhpcy5TZWxlY3Rpb25SZXBsYWNlTWFwID0gbmV3IE1hcCh0aGlzLnNlbGVjdGlvblJlcGxhY2VNYXBJbml0YWxEYXRhKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgdHJpZ2dlciA9IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyW2ldO1xuXHRcdFx0bGV0IGxlZnRzID0gdGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2ldLmxlZnQ7XG5cdFx0XHRsZXQgcmlnaHRzID0gdGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2ldLnJpZ2h0O1xuXG5cdFx0XHR0aGlzLlNlbGVjdGlvblJlcGxhY2VNYXAuc2V0KHRyaWdnZXIsIHsgbGVmdDogbGVmdHMsIHJpZ2h0OiByaWdodHMgfSk7XG5cdFx0fVxuXHR9XG5cblx0YWRkVXNlclNlbGVjdGlvblJlcFJ1bGUodHJpZ2dlcjogc3RyaW5nLCBsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRpZiAodGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIuaW5jbHVkZXModHJpZ2dlcikpIHJldHVybiBmYWxzZTtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5wdXNoKHRyaWdnZXIpXG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlLnB1c2goeyBsZWZ0OiBsZWZ0LCByaWdodDogcmlnaHQgfSk7XG5cdFx0dGhpcy5yZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGRlbGV0ZVVzZXJTZWxlY3Rpb25SZXBSdWxlKGlkeDogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKGlkeCA8IDAgfHwgaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLmxlbmd0aCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLnNwbGljZShpZHgsIDEpO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZS5zcGxpY2UoaWR4LCAxKTtcblx0XHR0aGlzLnJlZnJlc2hTZWxlY3Rpb25SZXBsYWNlUnVsZSgpO1xuXHR9XG5cblx0dXBkYXRlVXNlclNlbGVjdGlvblJlcFJ1bGUoaWR4OiBudW1iZXIsIGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZykge1xuXHRcdGlmIChpZHggPCAwIHx8IGlkeCA+PSB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5sZW5ndGgpIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWVbaWR4XS5sZWZ0ID0gbGVmdDtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWVbaWR4XS5yaWdodCA9IHJpZ2h0O1xuXHRcdHRoaXMucmVmcmVzaFNlbGVjdGlvblJlcGxhY2VSdWxlKCk7XG5cdH1cblxuXHRyZWZyZXNoVXNlckRlbGV0ZVJ1bGUoKSB7XG5cdFx0dGhpcy5Vc2VyRGVsZXRlUnVsZXMgPSBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdCh0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3QpO1xuXHR9XG5cblx0YWRkVXNlckRlbGV0ZVJ1bGUoYmVmb3JlOiBzdHJpbmcsIGFmdGVyOiBzdHJpbmcpIHtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3QucHVzaChbYmVmb3JlLCBhZnRlcl0pO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJEZWxldGVSdWxlKCk7XG5cdH1cblxuXHRkZWxldGVVc2VyRGVsZXRlUnVsZShpZHg6IG51bWJlcikge1xuXHRcdGlmIChpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0Lmxlbmd0aCB8fCBpZHggPCAwKSByZXR1cm47XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0LnNwbGljZShpZHgsIDEpO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJEZWxldGVSdWxlKCk7XG5cdH1cblxuXHR1cGRhdGVVc2VyRGVsZXRlUnVsZShpZHg6IG51bWJlciwgYmVmb3JlOiBzdHJpbmcsIGFmdGVyOiBzdHJpbmcpIHtcblx0XHRpZiAoaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdC5sZW5ndGggfHwgaWR4IDwgMCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdFtpZHhdWzBdID0gYmVmb3JlO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdFtpZHhdWzFdID0gYWZ0ZXI7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckRlbGV0ZVJ1bGUoKTtcblx0fVxuXG5cdHJlZnJlc2hVc2VyQ29udmVydFJ1bGUoKSB7XG5cdFx0dGhpcy5Vc2VyQ29udmVydFJ1bGVzID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QodGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdCk7XG5cdH1cblxuXHRhZGRVc2VyQ29udmVydFJ1bGUoYmVmb3JlOiBzdHJpbmcsIGFmdGVyOiBzdHJpbmcpIHtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0LnB1c2goW2JlZm9yZSwgYWZ0ZXJdKTtcblx0XHR0aGlzLnJlZnJlc2hVc2VyQ29udmVydFJ1bGUoKTtcblx0fVxuXG5cdGRlbGV0ZVVzZXJDb252ZXJ0UnVsZShpZHg6IG51bWJlcikge1xuXHRcdGlmIChpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5sZW5ndGggfHwgaWR4IDwgMCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3Quc3BsaWNlKGlkeCwgMSk7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckNvbnZlcnRSdWxlKCk7XG5cdH1cblxuXHRnZXRDb21tYW5kTmFtZU1hcCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+XG5cdHtcblx0XHRjb25zdCBsYW5nID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpO1xuXG5cdFx0bGV0IGNvbW1hbmRfbmFtZV9tYXBfZW4gPSBuZXcgTWFwKFtcblx0XHRcdFtcImZvcm1hdF9hcnRpY2xlXCIsIFwiRm9ybWF0IGN1cnJlbnQgYXJ0aWNsZVwiXSxcblx0XHRcdFtcImZvcm1hdF9zZWxlY3Rpb25cIiwgXCJGb3JtYXQgc2VsZWN0ZWQgdGV4dCBvciBjdXJyZW50IGxpbmVcIl0sXG5cdFx0XHRbXCJkZWxldGVfYmxhbmtfbGluZVwiLCBcIkRlbGV0ZSBibGFuayBsaW5lcyBvZiB0aGUgc2VsZWN0ZWQgb3Igd2hvbGUgYXJ0aWNsZVwiXSxcblx0XHRcdFtcImluc2VydF9jb2RlYmxvY2tcIiwgXCJJbnNlcnQgY29kZSBibG9jayB3L3dvIHNlbGVjdGlvblwiXSxcblx0XHRcdFtcInN3aXRjaF9hdXRvZm9ybWF0XCIsIFwiU3dpdGNoIGF1dG9mb3JtYXRcIl1cblx0XHRdKTtcblxuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwX3poX1RXID0gbmV3IE1hcChbXG5cdFx0XHRbXCJmb3JtYXRfYXJ0aWNsZVwiLCBcIlx1NjgzQ1x1NUYwRlx1NTMxNlx1NTE2OFx1NjU4N1wiXSxcblx0XHRcdFtcImZvcm1hdF9zZWxlY3Rpb25cIiwgXCJcdTY4M0NcdTVGMEZcdTUzMTZcdTkwNzhcdTRFMkRcdTkwRThcdTUyMDYvXHU3NTc2XHU1MjREXHU4ODRDXCJdLFxuXHRcdFx0W1wiZGVsZXRlX2JsYW5rX2xpbmVcIiwgXCJcdTUyMkFcdTk2NjRcdTkwNzhcdTRFMkRcdTkwRThcdTUyMDYvXHU1MTY4XHU2NTg3XHU3Njg0XHU1OTFBXHU5OTE4XHU3QTdBXHU3NjdEXHU4ODRDXCJdLFxuXHRcdFx0W1wiaW5zZXJ0X2NvZGVibG9ja1wiLCBcIlx1NjNEMlx1NTE2NVx1NEVFM1x1NzhCQ1x1NTg0QVwiXSxcblx0XHRcdFtcInN3aXRjaF9hdXRvZm9ybWF0XCIsIFwiXHU1MjA3XHU2M0RCXHU4MUVBXHU1MkQ1XHU2ODNDXHU1RjBGXHU1MzE2XHU5NThCXHU5NURDXCJdXG5cdFx0XSk7XG5cblx0XHRsZXQgY29tbWFuZF9uYW1lX21hcF96aCA9IG5ldyBNYXAoW1xuXHRcdFx0W1wiZm9ybWF0X2FydGljbGVcIiwgXCJcdTY4M0NcdTVGMEZcdTUzMTZcdTUxNjhcdTY1ODdcIl0sXG5cdFx0XHRbXCJmb3JtYXRfc2VsZWN0aW9uXCIsIFwiXHU2ODNDXHU1RjBGXHU1MzE2XHU5MDA5XHU0RTJEXHU5MEU4XHU1MjA2L1x1NUY1M1x1NTI0RFx1ODg0Q1wiXSxcblx0XHRcdFtcImRlbGV0ZV9ibGFua19saW5lXCIsIFwiXHU1MjJBXHU5NjY0XHU5MDA5XHU0RTJEXHU5MEU4XHU1MjA2L1x1NTE2OFx1NjU4N1x1NzY4NFx1NTkxQVx1NEY1OVx1N0E3QVx1NzY3RFx1ODg0Q1wiXSxcblx0XHRcdFtcImluc2VydF9jb2RlYmxvY2tcIiwgXCJcdTYzRDJcdTUxNjVcdTRFRTNcdTc4MDFcdTU3NTdcIl0sXG5cdFx0XHRbXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiLCBcIlx1NTIwN1x1NjM2Mlx1ODFFQVx1NTJBOFx1NjgzQ1x1NUYwRlx1NTMxNlx1NUYwMFx1NTE3M1wiXVxuXHRcdF0pO1xuXG5cdFx0bGV0IGNvbW1hbmRfbmFtZV9tYXAgPSBjb21tYW5kX25hbWVfbWFwX2VuO1xuXHRcdGlmIChsYW5nID09ICd6aCcpe1xuXHRcdFx0Y29tbWFuZF9uYW1lX21hcCA9IGNvbW1hbmRfbmFtZV9tYXBfemg7XG5cdFx0fVxuXHRcdGVsc2UgaWYobGFuZyA9PSAnemgtVFcnKXtcblx0XHRcdGNvbW1hbmRfbmFtZV9tYXAgPSBjb21tYW5kX25hbWVfbWFwX3poX1RXO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb21tYW5kX25hbWVfbWFwO1xuXHR9XG5cblx0dXBkYXRlVXNlckNvbnZlcnRSdWxlKGlkeDogbnVtYmVyLCBiZWZvcmU6IHN0cmluZywgYWZ0ZXI6IHN0cmluZykge1xuXHRcdGlmIChpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5sZW5ndGggfHwgaWR4IDwgMCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3RbaWR4XVswXSA9IGJlZm9yZTtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0W2lkeF1bMV0gPSBhZnRlcjtcblx0XHR0aGlzLnJlZnJlc2hVc2VyQ29udmVydFJ1bGUoKTtcblx0fVxuXG5cdGdldEVkaXRvciA9ICgpOiBFZGl0b3IgfCBudWxsID0+IHtcblx0XHRsZXQgZWRpdG9yID0gbnVsbDtcblx0XHRsZXQgbWFya2Rvd25WaWV3ID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcblx0XHRpZiAobWFya2Rvd25WaWV3KSB7XG5cdFx0XHRlZGl0b3IgPSBtYXJrZG93blZpZXcuZWRpdG9yO1xuXHRcdH1cblx0XHRpZiAoZWRpdG9yID09PSBudWxsKSBjb25zb2xlLmxvZygnY2FuXFwndCBnZXQgZWRpdG9yJyk7XG5cdFx0cmV0dXJuIGVkaXRvcjtcblx0fVxuXG5cdGFzeW5jIGxvYWRTZXR0aW5ncygpIHtcblx0XHR0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9TRVRUSU5HUywgYXdhaXQgdGhpcy5sb2FkRGF0YSgpKTtcblx0fVxuXG5cdGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcblx0XHRhd2FpdCB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xuXHR9XG59IiwgImltcG9ydCB7IE5vdGljZX0gZnJvbSBcIm9ic2lkaWFuXCJcbmltcG9ydCB7IEVhc3lUeXBpbmdTZXR0aW5ncywgV29ya01vZGUgfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHsgQW5ub3RhdGlvbiwgRWRpdG9yU3RhdGUsIEV4dGVuc2lvbiwgU3RhdGVGaWVsZCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgVGV4dCwgTGluZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IG9mZnNldFRvUG9zLCBwb3NUb09mZnNldCwgc3RyaW5nRGVsZXRlQXQsIHN0cmluZ0luc2VydEF0LCBpc1BhcmFtRGVmaW5lZH0gZnJvbSAnLi91dGlscydcbmltcG9ydCB7IHN5bnRheFRyZWUgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2VcIjtcblxuZXhwb3J0IGVudW0gTGluZVR5cGUgeyB0ZXh0ID0gJ3RleHQnLCBjb2RlYmxvY2sgPSAnY29kZWJsb2NrJywgZm9ybXVsYSA9ICdmb3JtdWxhJywgXG4gICAgICAgICAgICAgICAgICAgICAgICBub25lID0gJ25vbmUnLCBmcm9udG1hdHRlcj1cImZyb250bWF0dGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdW90ZT0ncXVvdGUnLCBjYWxsb3V0X3RpdGxlPSdjYWxsb3V0X3RpdGxlJywgbGlzdD0nbGlzdCcgfVxuXG5leHBvcnQgZW51bSBTcGFjZVN0YXRlIHtcbiAgICBub25lLFxuICAgIHNvZnQsXG4gICAgc3RyaWN0XG59XG5cbmV4cG9ydCBlbnVtIElubGluZVR5cGUge1xuICAgIHRleHQgPSAndGV4dCcsIGNvZGUgPSAnY29kZScsIGZvcm11bGEgPSAnZm9ybXVsYScsXG4gICAgd2lraWxpbmsgPSAnd2lraWxpbmsnLCBtZGxpbmsgPSBcIm1kbGlua1wiLFxuICAgIHVzZXIgPSAndXNlci1kZWZpbmVkJywgbm9uZSA9ICdub25lJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElubGluZUNoYW5nZSB7XG4gICAgdGV4dDogc3RyaW5nLFxuICAgIGJlZ2luOiBudW1iZXIsXG4gICAgZW5kOiBudW1iZXIsXG4gICAgb3JpZ2luOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcnRpY2xlUGFydCB7XG4gICAgdHlwZTogTGluZVR5cGU7XG4gICAgYmVnaW46IG51bWJlcjtcbiAgICBlbmQ6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElubGluZVBhcnQge1xuICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICB0eXBlOiBJbmxpbmVUeXBlO1xuICAgIGJlZ2luOiBudW1iZXI7XG4gICAgZW5kOiBudW1iZXI7XG4gICAgbGVmdFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZTtcbiAgICByaWdodFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZTtcbn1cblxuZXhwb3J0IGNsYXNzIExpbmVGb3JtYXRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7IH1cbiAgICBzeW50YXhUcmVlTm9kZU5hbWVUeXBlKG5hbWU6c3RyaW5nKTpJbmxpbmVUeXBle1xuICAgICAgICBpZihuYW1lLmNvbnRhaW5zKCdjb2RlJykgJiYgIW5hbWUuY29udGFpbnMoXCJsaW5rXCIpKXtcbiAgICAgICAgICAgIHJldHVybiBJbmxpbmVUeXBlLmNvZGU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihuYW1lLmNvbnRhaW5zKCdtYXRoJykpe1xuICAgICAgICAgICAgcmV0dXJuIElubGluZVR5cGUuZm9ybXVsYTtcbiAgICAgICAgfVxuICAgICAgICBlbHNle1xuICAgICAgICAgICAgcmV0dXJuIElubGluZVR5cGUudGV4dDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHBhcmFtIGxpbmVOdW06IDEtYmFzZWQgbGluZSBudW1iZXJcbiAgICBwYXJzZUxpbmVXaXRoU3ludGF4VHJlZShzdGF0ZTogRWRpdG9yU3RhdGUsIGxpbmVOdW06bnVtYmVyLCByZWdSZWdFeHA/OiBzdHJpbmcpe1xuICAgICAgICBsZXQgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYTogSW5saW5lUGFydFtdID0gW107XG4gICAgICAgIGxldCBsaW5lID0gc3RhdGUuZG9jLmxpbmUobGluZU51bSk7XG4gICAgICAgIGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHN0YXRlKTtcbiAgICAgICAgbGV0IHBvcyA9IGxpbmUuZnJvbTtcbiAgICAgICAgbGV0IHByZXZOb2RlVHlwZTpJbmxpbmVUeXBlID0gSW5saW5lVHlwZS5ub25lO1xuICAgICAgICBsZXQgcHJldkJlZ2luSWR4ID0gMDtcbiAgICAgICAgd2hpbGUocG9zPGxpbmUudG8pe1xuICAgICAgICAgICAgbGV0IG5vZGUgPSB0cmVlLnJlc29sdmUocG9zLCAxKTtcbiAgICAgICAgICAgIGxldCBjdXJOb2RlVHlwZSA9IHRoaXMuc3ludGF4VHJlZU5vZGVOYW1lVHlwZShub2RlLm5hbWUpXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKHByZXZOb2RlVHlwZT09SW5saW5lVHlwZS5ub25lKXtcbiAgICAgICAgICAgICAgICBwcmV2Tm9kZVR5cGU9Y3VyTm9kZVR5cGU7XG4gICAgICAgICAgICAgICAgcHJldkJlZ2luSWR4PTA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmKHByZXZOb2RlVHlwZT09Y3VyTm9kZVR5cGUpe31cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDpsaW5lLnRleHQuc3Vic3RyaW5nKHByZXZCZWdpbklkeCwgcG9zLWxpbmUuZnJvbSksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6cHJldk5vZGVUeXBlLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjpwcmV2QmVnaW5JZHgsXG4gICAgICAgICAgICAgICAgICAgIGVuZDpwb3MtbGluZS5mcm9tLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOlNwYWNlU3RhdGUubm9uZSxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6U3BhY2VTdGF0ZS5ub25lXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBwcmV2Tm9kZVR5cGUgPSBjdXJOb2RlVHlwZTtcbiAgICAgICAgICAgICAgICBwcmV2QmVnaW5JZHggPSBwb3MtbGluZS5mcm9tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdXBkYXRlIG5leHQgcG9zXG4gICAgICAgICAgICBpZiAoY3VyTm9kZVR5cGUgPT0gSW5saW5lVHlwZS50ZXh0KXtcbiAgICAgICAgICAgICAgICBwb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgcG9zID0gbm9kZS50bztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYocG9zPT1saW5lLnRvKXtcbiAgICAgICAgICAgICAgICBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OmxpbmUudGV4dC5zdWJzdHJpbmcocHJldkJlZ2luSWR4LCBwb3MtbGluZS5mcm9tKSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTpwcmV2Tm9kZVR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOnByZXZCZWdpbklkeCxcbiAgICAgICAgICAgICAgICAgICAgZW5kOnBvcy1saW5lLmZyb20sXG4gICAgICAgICAgICAgICAgICAgIGxlZnRTcGFjZVJlcXVpcmU6U3BhY2VTdGF0ZS5ub25lLFxuICAgICAgICAgICAgICAgICAgICByaWdodFNwYWNlUmVxdWlyZTpTcGFjZVN0YXRlLm5vbmVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwibGluZSBwYXJ0czogXCIsIGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGEpO1xuICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgbGV0IHJldEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXS50eXBlICE9IElubGluZVR5cGUudGV4dCkge1xuICAgICAgICAgICAgICAgIHJldEFycmF5LnB1c2gobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgdGVtcEFycmF5OiBJbmxpbmVQYXJ0W107XG4gICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1EZWZpbmVkKHJlZ1JlZ0V4cCkpXG4gICAgICAgICAgICAgICAgICAgIHRlbXBBcnJheSA9IHNwbGl0VGV4dFdpdGhMaW5rQW5kVXNlckRlZmluZWQobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXS5jb250ZW50LCByZWdSZWdFeHApO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGVtcEFycmF5ID0gc3BsaXRUZXh0V2l0aExpbmtBbmRVc2VyRGVmaW5lZChsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhW2ldLmNvbnRlbnQpO1xuICAgIFxuICAgICAgICAgICAgICAgIHRlbXBBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmJlZ2luICs9IGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0uYmVnaW47XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZW5kICs9IGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0uYmVnaW47XG4gICAgICAgICAgICAgICAgICAgIHJldEFycmF5LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2cocmV0QXJyYXkpXG4gICAgICAgIHJldHVybiByZXRBcnJheTtcbiAgICB9XG5cbiAgICBmb3JtYXRMaW5lT2ZEb2Moc3RhdGU6IEVkaXRvclN0YXRlLCBzZXR0aW5nczogRWFzeVR5cGluZ1NldHRpbmdzLCBmcm9tQjogbnVtYmVyLCB0b0I6IG51bWJlciwgaW5zZXJ0ZWRTdHI6IHN0cmluZyk6IFtUcmFuc2FjdGlvblNwZWNbXSwgVHJhbnNhY3Rpb25TcGVjXSB8IG51bGwge1xuICAgICAgICBsZXQgZG9jID0gc3RhdGUuZG9jO1xuICAgICAgICBsZXQgbGluZSA9IGRvYy5saW5lQXQoZnJvbUIpLnRleHQ7XG4gICAgICAgIGxldCByZXMgPSBudWxsXG4gICAgICAgIGlmIChpbnNlcnRlZFN0ci5jb250YWlucyhcIlxcblwiKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVzID0gdGhpcy5mb3JtYXRMaW5lKHN0YXRlLCBkb2MubGluZUF0KGZyb21CKS5udW1iZXIsIHNldHRpbmdzLCBvZmZzZXRUb1Bvcyhkb2MsIGZyb21CKS5jaCwgb2Zmc2V0VG9Qb3MoZG9jLCBmcm9tQikuY2gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgcmVzID0gdGhpcy5mb3JtYXRMaW5lKHN0YXRlLCBkb2MubGluZUF0KGZyb21CKS5udW1iZXIsIHNldHRpbmdzLCBvZmZzZXRUb1Bvcyhkb2MsIHRvQikuY2gsIG9mZnNldFRvUG9zKGRvYywgZnJvbUIpLmNoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzID09PW51bGwgfHwgcmVzWzJdLmxlbmd0aD09MCkgcmV0dXJuIG51bGw7XG4gICAgICAgIFxuICAgICAgICBsZXQgbmV3bGluZSA9IHN0cmluZ0luc2VydEF0KHJlc1swXSwgcmVzWzFdLCBcInxcIik7XG4gICAgICAgIC8vIGlmIChzZXR0aW5ncy5kZWJ1ZykgY29uc29sZS5sb2coXCJFYXN5VHlwaW5nOiBOZXcgTGluZSBTdHJpbmc6XCIsIG5ld2xpbmUpXG5cbiAgICAgICAgbGV0IGNoYW5nZXM6IFRyYW5zYWN0aW9uU3BlY1tdID0gW107XG4gICAgICAgIGxldCBvZmZzZXQgPSBkb2MubGluZUF0KGZyb21CKS5mcm9tO1xuXG4gICAgICAgIGZvcihsZXQgY2hhbmdlSXRlbSBvZiByZXNbMl0pXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgY2hhbmdlczp7ZnJvbTogb2Zmc2V0K2NoYW5nZUl0ZW0uYmVnaW4sIHRvOm9mZnNldCtjaGFuZ2VJdGVtLmVuZCwgaW5zZXJ0OmNoYW5nZUl0ZW0udGV4dH0sIHVzZXJFdmVudDpcIkVhc3lUeXBpbmcuY2hhbmdlXCJcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluc2VydGVkU3RyLmNvbnRhaW5zKFwiXFxuXCIpKXtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiaW5zZXJ0U3RyXCIsIGluc2VydGVkU3RyKVxuICAgICAgICAgICAgcmVzWzFdKz0gaW5zZXJ0ZWRTdHIubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbY2hhbmdlcywge3NlbGVjdGlvbjp7YW5jaG9yOm9mZnNldCtyZXNbMV19LCB1c2VyRXZlbnQ6XCJFYXN5VHlwaW5nLmNoYW5nZVwifV07XG4gICAgfVxuXG4gICAgLy8gXHU4RkQ0XHU1NkRFXHU1MDNDXHVGRjFBIFtcdTY3MDBcdTdFQzhcdTc2ODRcdTg4NENcdUZGMENcdTY3MDBcdTdFQzhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcdUZGMENcdTUxODVcdTVCQjlcdTY1MzlcdTUzRDhdXG4gICAgLy8gcGFyYW0gbGluZU51bTogMS1iYXNlZCBsaW5lIG51bWJlclxuICAgIGZvcm1hdExpbmUoc3RhdGU6IEVkaXRvclN0YXRlLCBsaW5lTnVtOm51bWJlciwgc2V0dGluZ3M6IEVhc3lUeXBpbmdTZXR0aW5ncywgY3VyQ2g6IG51bWJlciwgcHJldkNoPzogbnVtYmVyKTogW3N0cmluZywgbnVtYmVyLCBJbmxpbmVDaGFuZ2VbXV0gfCBudWxsIHtcbiAgICAgICAgLy8gbmV3IE5vdGljZShcImZvcm1hdC1ub3dcIik7XG4gICAgICAgIGxldCBsaW5lID0gc3RhdGUuZG9jLmxpbmUobGluZU51bSkudGV4dDtcbiAgICAgICAgbGV0IHJlZ051bGwgPSAvXlxccyokL2c7XG4gICAgICAgIGlmIChyZWdOdWxsLnRlc3QobGluZSkpIHJldHVybiBbbGluZSwgY3VyQ2gsIFtdXTtcbiAgICAgICAgLy8gMS4gXHU1MjEyXHU1MjA2XHU0RTAwXHU4ODRDXHU2NTg3XHU1QjU3XHU3Njg0XHU1MTg1XHU5MEU4XHU0RTBEXHU1NDBDXHU2QTIxXHU1NzU3XHU1MzNBXHU1N0RGXG4gICAgICAgIGxldCBsaW5lUGFydHM6IElubGluZVBhcnRbXTtcbiAgICAgICAgaWYgKHNldHRpbmdzLlVzZXJEZWZpbmVkUmVnU3dpdGNoKSB7XG4gICAgICAgICAgICAvLyBsaW5lUGFydHMgPSB0aGlzLnBhcnNlTGluZShsaW5lLCBzZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ0V4cCk7XG4gICAgICAgICAgICBsaW5lUGFydHMgPSB0aGlzLnBhcnNlTGluZVdpdGhTeW50YXhUcmVlKHN0YXRlLCBsaW5lTnVtLCBzZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ0V4cCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBsaW5lUGFydHMgPSB0aGlzLnBhcnNlTGluZShsaW5lKTtcbiAgICAgICAgICAgIGxpbmVQYXJ0cyA9IHRoaXMucGFyc2VMaW5lV2l0aFN5bnRheFRyZWUoc3RhdGUsIGxpbmVOdW0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmIChzZXR0aW5ncy5kZWJ1ZykgY29uc29sZS5sb2coXCJsaW5lIHBhcnRzXFxuXCIsIGxpbmVQYXJ0cyk7XG5cbiAgICAgICAgLy8gXHU1OTA3XHU0RUZEXHU1MzlGXHU2NzY1XHU3Njg0bGluZVBhcnRzLCBcdTZERjFcdTYyRjdcdThEMURcbiAgICAgICAgbGV0IGxpbmVQYXJ0c09yaWdpbiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobGluZVBhcnRzKSk7XG4gICAgICAgIGxldCBpbmxpbmVDaGFuZ2VMaXN0OiBJbmxpbmVDaGFuZ2VbXSA9IFtdO1xuXG4gICAgICAgIGxldCBjdXJzb3JMaW5lUGFydEluZGV4ID0gLTE7XG4gICAgICAgIGxldCBjdXJzb3JSZWxhdGl2ZUluZGV4ID0gLTE7XG4gICAgICAgIGxldCByZXN1bHRDdXJzb3JDaCA9IDA7ICAgICAvLyBcdThGOTNcdTUxRkFcdTc2ODRcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcblxuICAgICAgICAvLyAyLiBcdTYyN0VcdTUyMzBcdTUxNDlcdTY4MDdcdTYyNDBcdTU3MjhcdTc2ODRcdTkwRThcdTUyMDZcdUZGMENcdTU5ODJcdTY3OUNcdTY2MkYgSW5saW5lUGFydC50ZXh0XHVGRjBDXHU1MjE5XHU1NzI4XHU1MTQ5XHU2ODA3XHU1OTA0XHU2M0QyXHU1MTY1J1xcMCdcdTY3NjVcdTY4MDdcdThCQjBcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChjdXJDaCA+IGxpbmVQYXJ0c1tpXS5iZWdpbiAmJiBjdXJDaCA8PSBsaW5lUGFydHNbaV0uZW5kKSB7XG4gICAgICAgICAgICAgICAgY3Vyc29yTGluZVBhcnRJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgY3Vyc29yUmVsYXRpdmVJbmRleCA9IGN1ckNoIC0gbGluZVBhcnRzW2ldLmJlZ2luO1xuICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0udHlwZSA9PT0gSW5saW5lVHlwZS50ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gc3RyaW5nSW5zZXJ0QXQobGluZVBhcnRzW2ldLmNvbnRlbnQsIGN1cnNvclJlbGF0aXZlSW5kZXgsICdcXDAnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdExpbmUgPSAnJztcbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgIC8vIFx1NEZERFx1NUI1OFx1NTI0RFx1NEUwMFx1OTBFOFx1NTIwNlx1NzY4NFx1NTMzQVx1NTc1N1x1N0M3Qlx1NTc4Qlx1RkYwQ0lubGluZVR5cGUubm9uZSBcdTRFRTNcdTg4NjhcdTRFMDBcdTg4NENcdTc2ODRcdTVGMDBcdTU5Q0JcbiAgICAgICAgbGV0IHByZXZQYXJ0VHlwZTogc3RyaW5nID0gSW5saW5lVHlwZS5ub25lO1xuICAgICAgICBsZXQgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuXG4gICAgICAgIC8vIDMuIFx1OTA0RFx1NTM4Nlx1NkJDRlx1NEUyQVx1ODg0Q1x1OTBFOFx1NTIwNlx1RkYwQ1x1OEZEQlx1ODg0Q1x1NjgzQ1x1NUYwRlx1NTMxNlx1NTkwNFx1NzQwNlxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVQYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgLy8gMy4xIFx1NTk4Mlx1Njc5Q1x1ODg0Q1x1NTE4NVx1N0IyQ1x1NEUwMFx1OTBFOFx1NTIwNlx1NEUzQVx1NjU4N1x1NjcyQ1x1RkYwQ1x1NTIxOVx1NTkwNFx1NzQwNlx1NTNFNVx1OTk5Nlx1NUI1N1x1NkJDRFx1NTkyN1x1NTE5OVx1NzY4NFx1OTBFOFx1NTIwNlxuICAgICAgICAgICAgaWYgKGkgPT09IDAgJiYgbGluZVBhcnRzW2ldLnR5cGUgPT09IElubGluZVR5cGUudGV4dCAmJiBzZXR0aW5ncy5BdXRvQ2FwaXRhbCkge1xuICAgICAgICAgICAgICAgIC8vIDMuMS4xIFx1NTk4Mlx1Njc5QyBwcmV2Q3Vyc29yIFx1NEUxNFx1NTE0OVx1NjgwN1x1NEUwRFx1NTcyOFx1NkI2NFx1OTBFOFx1NTIwNlx1RkYwQ1x1NTIxOVx1OERGM1x1OEZDN1xuICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIGN1cnNvckxpbmVQYXJ0SW5kZXggIT0gMCkgeyB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdGaXJzdFNlbnRlbmNlID0gL15cXHMqKFxcLSAoXFxbW3ggXVxcXSApPyk/XHUyMDFDP1thLXpcXHUwNDAxXFx1MDQ1MVxcdTA0MTAtXFx1MDQ0Zl0vZztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ0hlYWRlclNlbnRlbmNlID0gL14oIysgfD4rID98XHUyMDFDKVthLXpcXHUwNDAxXFx1MDQ1MVxcdTA0MTAtXFx1MDQ0Zl0vZztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRleHRjb3B5ID0gbGluZVBhcnRzWzBdLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZ0ZpcnN0U2VudGVuY2UuZXhlYyh0ZXh0Y29weSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaEhlYWRlciA9IHJlZ0hlYWRlclNlbnRlbmNlLmV4ZWModGV4dGNvcHkpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZHN0Q2hhckluZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHN0Q2hhckluZGV4ID0gcmVnRmlyc3RTZW50ZW5jZS5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoSGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkc3RDaGFySW5kZXggPSByZWdIZWFkZXJTZW50ZW5jZS5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkF1dG9DYXBpdGFsTW9kZSA9PSBXb3JrTW9kZS5HbG9iYWxseSB8fCAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiBkc3RDaGFySW5kZXggPj0gcHJldkNoICYmIGRzdENoYXJJbmRleCA8IGN1ckNoKSkgeyB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHN0Q2hhckluZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoZHN0Q2hhckluZGV4ICE9IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1swXS5jb250ZW50ID0gdGV4dGNvcHkuc3Vic3RyaW5nKDAsIGRzdENoYXJJbmRleCkgKyB0ZXh0Y29weS5jaGFyQXQoZHN0Q2hhckluZGV4KS50b1VwcGVyQ2FzZSgpICsgdGV4dGNvcHkuc3Vic3RyaW5nKGRzdENoYXJJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKGxpbmVQYXJ0c1tpXS50eXBlKSB7XG4gICAgICAgICAgICAgICAgLy8gMy4yLjEgXHU1OTA0XHU3NDA2XHU2NTg3XHU2NzJDXHU1MzNBXHU1NzU3XG4gICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnRleHQ6XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRleHQuNCBcdTU5MDRcdTc0MDZcdTUzRTVcdTk5OTZcdTVCNTdcdTZCQ0RcdTU5MjdcdTUxOTlcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkF1dG9DYXBpdGFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVnID0gL1tcXC5cXD9cXCFcdTMwMDJcdUZGMDFcdUZGMUZdKFtcXHNdKilbYS16XFx1MDQwMVxcdTA0NTFcXHUwNDEwLVxcdTA0NGZdL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZy5leGVjKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wSW5kZXggPSByZWcubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInByZXZDaCwgY3VyQ2gsIG9mZnNldCwgdGVtcEluZGV4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2cocHJldkNoLCBjdXJDaCwgb2Zmc2V0LCB0ZW1wSW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlzU3BhY2VEb3QgPSB0ZW1wSW5kZXgtMjwwIHx8IGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleC0yLCB0ZW1wSW5kZXgpPT0nIC4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5BdXRvQ2FwaXRhbE1vZGUgPT0gV29ya01vZGUuR2xvYmFsbHkgJiYgIWlzU3BhY2VEb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgY29udGVudC5jaGFyQXQodGVtcEluZGV4KS50b1VwcGVyQ2FzZSgpICsgY29udGVudC5zdWJzdHJpbmcocmVnLmxhc3RJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiB0ZW1wSW5kZXggPj0gcHJldkNoIC0gb2Zmc2V0ICYmIHRlbXBJbmRleCA8IGN1ckNoIC0gb2Zmc2V0ICYmICFpc1NwYWNlRG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIGNvbnRlbnQuY2hhckF0KHRlbXBJbmRleCkudG9VcHBlckNhc2UoKSArIGNvbnRlbnQuc3Vic3RyaW5nKHJlZy5sYXN0SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9ICAgXG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVGV4dC4xIFx1NTkwNFx1NzQwNlx1NEUyRFx1ODJGMVx1NjU4N1x1NEU0Qlx1OTVGNFx1N0E3QVx1NjgzQ1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuQ2hpbmVzZUVuZ2xpc2hTcGFjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZzEgPSAvKFtBLVphLXpdKShbXFx1NGUwMC1cXHU5ZmE1XSkvZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMiA9IC8oW1xcdTRlMDAtXFx1OWZhNV0pKFtBLVphLXpdKS9naTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gY29udGVudC5yZXBsYWNlKHJlZzEsIFwiJDEgJDJcIikucmVwbGFjZShyZWcyLCBcIiQxICQyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkNoaW5lc2VOdW1iZXJTcGFjZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gLyhbMC05XSkoW1xcdTRlMDAtXFx1OWZhNV0pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZy5leGVjKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wSW5kZXggPSByZWcubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiB0ZW1wSW5kZXggPj0gcHJldkNoIC0gb2Zmc2V0ICYmIHRlbXBJbmRleCA8IGN1ckNoIC0gb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgXCIgXCIgKyBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJDaCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcxID0gLyhbXFx1NGUwMC1cXHU5ZmE1XSkoWzAtOV0pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZzEuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnMS5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIHRlbXBJbmRleCA+PSBwcmV2Q2ggLSBvZmZzZXQgJiYgdGVtcEluZGV4IDwgY3VyQ2ggLSBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBcIiBcIiArIGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkVuZ2xpc2hOdW1iZXJTcGFjZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gLyhbQS1aYS16XSkoXFxkKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWcuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyQ2ggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMSA9IC8oXFxkKShbQS1aYS16XSkvZztcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoID0gcmVnMS5leGVjKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wSW5kZXggPSByZWcxLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyQ2ggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjIgXHU1OTA0XHU3NDA2XHU0RTJEXHU2NTg3XHU5NUY0XHU2NUUwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5DaGluZXNlTm9TcGFjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oW1xcdTRlMDAtXFx1OWZhNVx1RkYwQ1x1MzAwMlx1MzAwMVx1RkYxQlx1MjAxOFx1MjAxOVx1MzAwQVx1MzAwQl0rKShcXHMrKShbXFx1NGUwMC1cXHU5ZmE1XHVGRjBDXHUzMDAyXHUzMDAxXHVGRjFCXHUyMDE4XHUyMDE5XHUzMDBBXHUzMDBCXSspL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocmVnLmV4ZWMoY29udGVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShyZWcsIFwiJDEkM1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBcdTY4MDdcdTcwQjlcdTRFMEVcdTY1ODdcdTY3MkNcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRleHQuMyBcdTU5MDRcdTc0MDZcdTY4MDdcdTcwQjlcdTRFMEVcdTY1ODdcdTY3MkNcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmKHNldHRpbmdzLkVuZ2xpc2hTcGFjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gLyhbLFxcLjtcXD9cXCFcXCldKShbMC05QS1aYS16XFx1MDQwMVxcdTA0NTFcXHUwNDEwLVxcdTA0NGZdKXwoW0EtWmEtejAtOVxcdTRlMDAtXFx1OWZhNTosXFwuXFw/XFwhJ1wiXSspKFxcKCl8WyxcXC47XFw/OiFdW1xcdTRlMDAtXFx1OWZhNV0vZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoID0gcmVnLmV4ZWMoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc1NwYWNlRG90ID0gJyEuPzssJy5jb250YWlucyhjb250ZW50LmNoYXJBdCh0ZW1wSW5kZXgtMSkpICYmICh0ZW1wSW5kZXgtMjwwIHx8IGNvbnRlbnQuY2hhckF0KHRlbXBJbmRleC0yKT09JyAnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlzTnVtUHVuY051bSA9IC9bLC5dXFxkLy50ZXN0KGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleC0xLCB0ZW1wSW5kZXgrMSkpICYmIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZW1wSW5kZXgtMjwwIHx8IC9cXGQvLnRlc3QoY29udGVudC5jaGFyQXQodGVtcEluZGV4LTIpKSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuUHVuY3R1YXRpb25TcGFjZU1vZGUgPT0gV29ya01vZGUuR2xvYmFsbHkgJiYgIWlzU3BhY2VEb3QgJiYgIWlzTnVtUHVuY051bSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBcIiBcIiArIGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiB0ZW1wSW5kZXggPj0gcHJldkNoIC0gb2Zmc2V0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRlbXBJbmRleCA8IGN1ckNoIC0gb2Zmc2V0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFpc1NwYWNlRG90ICYmICFpc051bVB1bmNOdW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgXCIgXCIgKyBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyQ2ggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFx1NTM1NVx1NzJFQ1x1NTkwNFx1NzQwNlx1NTE5Mlx1NTNGN1x1NTQwRVx1NjU4N1x1NjcyQ1x1NzY4NFx1ODFFQVx1NTJBOFx1N0E3QVx1NjgzQ1x1RkYwQ1x1NEUzQVx1NEU4Nlx1NTE3Q1x1NUJCOSA6ZW1vamk6IFx1NjgzQ1x1NUYwRlx1NzY4NFx1OEY5M1x1NTE2NVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcyID0gLyg6KShbQS1aYS16MC05X10rWyAsXFwuXFw/XFxcXFxcLzsnXCJcdUZGMENcdTMwMDJcdUZGMUZcdUZGMUJcdTIwMThcdTIwMUNcdTIwMURcdTIwMTlcdTMwMDFcXFtcXF1cXC1cXHtcXH1dKS9naTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShyZWcyLCBcIiQxICQyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWczID0gLyg6KShbXCInXSkvZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShyZWczLCBcIiQxICQyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRleHQuNyBcdTVGOTdcdTUyMzBcdTY1ODdcdTY3MkNcdTkwRThcdTUyMDZcdTY2MkZcdTU0MjZcdTRFRTVcdTdBN0FcdTc2N0RcdTdCMjZcdTVGMDBcdTU5Q0JcdTYyMTZcdTdFRDNcdTY3NUZcdUZGMENcdTc1MjhcdTY3NjVcdTUyMjRcdTY1QURcdTU0MEVcdTdFRURcdTY1ODdcdTY3MkNcdTUyNERcdTU0MEVcdTY2MkZcdTU0MjZcdTk3MDBcdTg5ODFcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ1N0cmljdFNwYWNlU3RhcnQgPSAvXlxcMD9cXHMvO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVnU3RyaWN0U3BhY2VFbmQgPSAvXFxzXFwwPyQvO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVnU3RhcnRXaXRoU3BhY2UgPSAvXlxcMD9bXFxzLFxcLjtcXD9cXCFcdUZGMENcdTMwMDJcdUZGMUJcdTMwMEJcdUZGMUZcdUZGMUE6XHVGRjAxflxcKlx1MzAwMVx1RkYwOFx1RkYwOVwiXHUyMDFEXFxdXFwpXFx9XS87XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdFbmRXaXRoU3BhY2UgPSAvW1xcc1x1RkYwQ1x1MzAwMlx1MzAwMVx1RkYxQVx1RkYxQlx1RkYxRlx1RkYwMVx1RkYwOFx1RkYwOX5cXCpcIlx1MzAwQVx1MjAxQ1xcW1xcKFxce11cXDA/JC87XG4gICAgICAgICAgICAgICAgICAgIGxldCB0eHRTdGFydFNwYWNlU2F0ZSA9IFNwYWNlU3RhdGUubm9uZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHR4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWdTdGFydFdpdGhTcGFjZS50ZXN0KGNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVnU3RyaWN0U3BhY2VTdGFydC50ZXN0KGNvbnRlbnQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dFN0YXJ0U3BhY2VTYXRlID0gU3BhY2VTdGF0ZS5zdHJpY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eHRTdGFydFNwYWNlU2F0ZSA9IFNwYWNlU3RhdGUuc29mdFxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ0VuZFdpdGhTcGFjZS50ZXN0KGNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVnU3RyaWN0U3BhY2VFbmQudGVzdChjb250ZW50KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5zdHJpY3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUuc29mdDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRleHQuOCBcdTY4MzlcdTYzNkVcdTUyNERcdTRFMDBcdTkwRThcdTUyMDZcdTc2ODRcdTUzM0FcdTU3NTdcdTdDN0JcdTU3OEJcdTU5MDRcdTc0MDZcdTdBN0FcdTY4M0NcdTZERkJcdTUyQTBcdTc2ODRcdTk1RUVcdTk4OThcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwcmV2UGFydFR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5ub25lOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmNvZGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGUgPiB0eHRTdGFydFNwYWNlU2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9ICcgJyArIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuZm9ybXVsYTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZSA+IHR4dFN0YXJ0U3BhY2VTYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gJyAnICsgY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5tZGxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSAmJiBzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlID4gdHh0U3RhcnRTcGFjZVNhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSAnICcgKyBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlICYmIHR4dFN0YXJ0U3BhY2VTYXRlID09IFNwYWNlU3RhdGUubm9uZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hhckF0VGV4dEJlZ2luID0gY29udGVudC5jaGFyQXQoMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWdNZExpbmtFbmQgPSAvXFxdLztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdExpbmtFbmRJbmRleCA9IGxpbmVQYXJ0c1tpIC0gMV0uY29udGVudC5zZWFyY2gocmVnTWRMaW5rRW5kKSAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRMaW5rRW5kID0gbGluZVBhcnRzW2kgLSAxXS5jb250ZW50LmNoYXJBdChjaGFyQXRMaW5rRW5kSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hhckF0TGlua0VuZCA9PT0gJ1snKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR3b05laWdoYm9yQ2hhcnMgPSBjaGFyQXRMaW5rRW5kICsgY2hhckF0VGV4dEJlZ2luO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnTm90TmVlZFNwYWNlID0gL1tcXHU0ZTAwLVxcdTlmYTVcdUZGMENcdTMwMDJcdUZGMUZcdUZGMUFcdUZGMUJcdTIwMURcdTIwMUNcdTIwMTlcdTIwMTgtXHVGRjA5fV1bXFx1NGUwMC1cXHU5ZmE1XS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZ05vdE5lZWRTcGFjZS50ZXN0KHR3b05laWdoYm9yQ2hhcnMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9ICcgJyArIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2kgLSAxXS5yaWdodFNwYWNlUmVxdWlyZSA+IHR4dFN0YXJ0U3BhY2VTYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gJyAnICsgY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRleHQuOSBcdTU5ODJcdTY3OUNcdTUxNDlcdTY4MDdcdTU3MjhcdThCRTVcdTUzM0FcdTU3NTdcdUZGMENcdTUyMTlcdThCQTFcdTdCOTdcdTY3MDBcdTdFQzhcdTUxNDlcdTY4MDdcdTc2ODRcdTRGNERcdTdGNkVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcgPSAnXFwwJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuID0gY29udGVudC5zZWFyY2gocmVnKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q3Vyc29yQ2ggPSBvZmZzZXQgKyBuO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gXHU1MjIwXHU5NjY0IFxcMFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBzdHJpbmdEZWxldGVBdChjb250ZW50LCBuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IElubGluZVR5cGUudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gdHh0RW5kU3BhY2VTdGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLy8gMy4yLjIgXHU1OTA0XHU3NDA2XHU4ODRDXHU1MTg1XHU0RUUzXHU3ODAxXHU1NzU3XHU5MEU4XHU1MjA2XG4gICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmNvZGU6XG4gICAgICAgICAgICAgICAgICAgIC8vIENvZGUuMSBcdTY4MzlcdTYzNkVcdTUyNERcdTRFMDBcdTUzM0FcdTU3NTdcdTdDN0JcdTU3OEJcdTU0OENzZXR0aW5nc1x1NkRGQlx1NTJBMFx1N0E3QVx1NjgzQ1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2gocHJldlBhcnRUeXBlKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubm9uZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS50ZXh0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlID4gcHJldlRleHRFbmRTcGFjZVN0YXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0uY29udGVudCArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5tZGxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUud2lraWxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lIHx8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnVzZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLnJpZ2h0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIENvZGUuMiBcdTU5ODJcdTY3OUNcdTUxNDlcdTY4MDdcdTU3MjhcdThCRTVcdTUzM0FcdTU3NTdcdUZGMENcdTUyMTlcdThCQTFcdTdCOTdcdTY3MDBcdTdFQzhcdTUxNDlcdTY4MDdcdTc2ODRcdTRGNERcdTdGNkVcbiAgICAgICAgICAgICAgICAgICAgaWYoaSA9PT0gY3Vyc29yTGluZVBhcnRJbmRleClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q3Vyc29yQ2ggPSBvZmZzZXQgKyBjdXJzb3JSZWxhdGl2ZUluZGV4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIENvZGUuMyBcdTUzRDhcdTkxQ0ZcdTY2RjRcdTY1QjBcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgcHJldlBhcnRUeXBlID0gSW5saW5lVHlwZS5jb2RlO1xuICAgICAgICAgICAgICAgICAgICBwcmV2VGV4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIDMuMi4zIFx1NTkwNFx1NzQwNlx1ODg0Q1x1NTE4NVx1NTE2Q1x1NUYwRlx1NzY4NFx1OTBFOFx1NTIwNlxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAvLyBGb3JtdWxhLjEgXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1NDhDc2V0dGluZ3NcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5wcmV2VGV4dEVuZFNwYWNlU3RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5yaWdodFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBGb3JtdWxhLjIgXHU1OTgyXHU2NzlDXHU1MTQ5XHU2ODA3XHU1NzI4XHU4QkU1XHU1MzNBXHU1NzU3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU3Njg0XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgY3Vyc29yUmVsYXRpdmVJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBGb3JtdWxhLjMgXHU1M0Q4XHU5MUNGXHU2NkY0XHU2NUIwXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IElubGluZVR5cGUuZm9ybXVsYTtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5tZGxpbms6XG4gICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2gocHJldlBhcnRUeXBlKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubm9uZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS50ZXh0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2VGV4dEVuZFNwYWNlU3RhdGU+c2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSkgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU9PVNwYWNlU3RhdGUuc3RyaWN0ICYmIHByZXZUZXh0RW5kU3BhY2VTdGF0ZTxTcGFjZVN0YXRlLnN0cmljdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLmNvbnRlbnQgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlICYmIHByZXZUZXh0RW5kU3BhY2VTdGF0ZT09U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ05vTmVlZFNwYWNlID0gL1tcXHU0ZTAwLVxcdTlmYTVdW1xcdTRlMDAtXFx1OWZhNV0vZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdFRleHRFbmQgPSBsaW5lUGFydHNbaS0xXS5jb250ZW50LmNoYXJBdChsaW5lUGFydHNbaS0xXS5jb250ZW50Lmxlbmd0aC0xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdExpbmtCZWdpbjpzdHJpbmcgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLnR5cGU9PUlubGluZVR5cGUud2lraWxpbmspXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWdBbGlhcyA9IC9cXHwvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJPZkFsaWFzQmVnaW4gPSBsaW5lUGFydHNbaV0uY29udGVudC5zZWFyY2gocmVnQWxpYXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJjaGFyT2ZBbGlhc0JlZ2luXCIsY2hhck9mQWxpYXNCZWdpbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiZWdpbkluZGV4ID0gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxpbmVQYXJ0c1tpXS5jb250ZW50LmNoYXJBdCgwKT09PSchJykgYmVnaW5JbmRleD0zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJPZkFsaWFzQmVnaW4hPS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luSW5kZXggPSBjaGFyT2ZBbGlhc0JlZ2luKzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyQXRMaW5rQmVnaW4gPSBsaW5lUGFydHNbaV0uY29udGVudC5jaGFyQXQoYmVnaW5JbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImJlZ2luSW5kZXhcIiwgYmVnaW5JbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjaGFyQXRMaW5rQmVnaW49PSddJykgYnJlYWs7ICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnTWRMaW5rQmVnaW4gPSAvXFxbLztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRMaW5rQmVnaW5JbmRleCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50LnNlYXJjaChyZWdNZExpbmtCZWdpbikrMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJBdExpbmtCZWdpbiA9IGxpbmVQYXJ0c1tpXS5jb250ZW50LmNoYXJBdChjaGFyQXRMaW5rQmVnaW5JbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjaGFyQXRMaW5rQmVnaW49PT0nXScpIGJyZWFrOyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR3b05laWdoYm9yQ2hhcnMgPSBjaGFyQXRUZXh0RW5kK2NoYXJBdExpbmtCZWdpbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIXJlZ05vTmVlZFNwYWNlLnRlc3QodHdvTmVpZ2hib3JDaGFycykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLmNvbnRlbnQgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKCFzZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSAmJiBzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPnByZXZUZXh0RW5kU3BhY2VTdGF0ZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLmNvbnRlbnQgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmNvZGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuZm9ybXVsYTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmV8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm1kbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaS0xXS5yaWdodFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmV8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIExpbmsuMiBcdTU5ODJcdTY3OUNcdThCRTVcdTUzM0FcdTU3NTdcdTY3MDlcdTUxNDlcdTY4MDdcdUZGMENcdTUyMTlcdThCQTFcdTdCOTdcdTY3MDBcdTdFQzhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcbiAgICAgICAgICAgICAgICAgICAgaWYoaSA9PT0gY3Vyc29yTGluZVBhcnRJbmRleClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q3Vyc29yQ2ggPSBvZmZzZXQgKyBjdXJzb3JSZWxhdGl2ZUluZGV4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIExpbmsuMyBcdTY2RjRcdTY1QjBcdTUzRDhcdTkxQ0ZcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgcHJldlBhcnRUeXBlID0gbGluZVBhcnRzW2ldLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLy8gMy4yLjUgXHU1OTA0XHU3NDA2XHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU1MzNBXHU1NzU3XHU3Njg0XHU5MEU4XHU1MjA2XG4gICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnVzZXI6XG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZXIuMSBcdTY4MzlcdTYzNkVcdTUyNERcdTRFMDBcdTUzM0FcdTU3NTdcdTdDN0JcdTU3OEJcdTU0OENzZXR0aW5nc1x1NkRGQlx1NTJBMFx1N0E3QVx1NjgzQ1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2gocHJldlBhcnRUeXBlKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubm9uZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS50ZXh0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0ubGVmdFNwYWNlUmVxdWlyZT5wcmV2VGV4dEVuZFNwYWNlU3RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0ubGVmdFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmV8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS5sZWZ0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZXx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0ubGVmdFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmV8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnVzZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS5sZWZ0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZXx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLnJpZ2h0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZXIuMiBcdTU5ODJcdTY3OUNcdThCRTVcdTUzM0FcdTU3NTdcdTY3MDlcdTUxNDlcdTY4MDdcdUZGMENcdTUyMTlcdThCQTFcdTdCOTdcdTY3MDBcdTdFQzhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcbiAgICAgICAgICAgICAgICAgICAgaWYoaSA9PT0gY3Vyc29yTGluZVBhcnRJbmRleClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q3Vyc29yQ2ggPSBvZmZzZXQgKyBjdXJzb3JSZWxhdGl2ZUluZGV4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIExpbmsuMyBcdTY2RjRcdTY1QjBcdTUzRDhcdTkxQ0ZcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgcHJldlBhcnRUeXBlID0gSW5saW5lVHlwZS51c2VyO1xuICAgICAgICAgICAgICAgICAgICBwcmV2VGV4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yKGxldCBpPTA7aTxsaW5lUGFydHMubGVuZ3RoO2krKylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYobGluZVBhcnRzW2ldLnR5cGUgPT09IElubGluZVR5cGUudGV4dCAmJiBsaW5lUGFydHNbaV0uY29udGVudCE9bGluZVBhcnRzT3JpZ2luW2ldLmNvbnRlbnQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBsaW5lUGFydHNbaV0uY29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNPcmlnaW5baV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c09yaWdpbltpXS5lbmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46IGxpbmVQYXJ0c09yaWdpbltpXS5jb250ZW50XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgaW5saW5lQ2hhbmdlTGlzdCA9IGlubGluZUNoYW5nZUxpc3Quc29ydCgoYSwgYik6bnVtYmVyPT5hLmJlZ2luLWIuYmVnaW4pO1xuICAgICAgICByZXR1cm4gW3Jlc3VsdExpbmUsIHJlc3VsdEN1cnNvckNoLCBpbmxpbmVDaGFuZ2VMaXN0XTtcbiAgICB9XG4gICAgXG59XG5cblxuZXhwb3J0IGNsYXNzIE1hcmtkb3duUGFyc2Vye1xuICAgIGNvbnN0cnVjdG9yKCl7fVxuXG59XG5cbmZ1bmN0aW9uIG1hdGNoV2l0aFJlZyh0ZXh0OiBzdHJpbmcsIHJlZ0V4cDogUmVnRXhwLCB0eXBlOiBJbmxpbmVUeXBlLCBpbmxpbmVUeXBlQXJyYXk6IElubGluZVBhcnRbXSxcbiAgICBjaGVja0FycmF5ID0gZmFsc2UsIGxlZnRTcGFjZVJlOiBTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lLCByaWdodFNwYWNlUmU6IFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLm5vbmUpOiBJbmxpbmVQYXJ0W10ge1xuICAgIGxldCByZXRBcnJheSA9IGlubGluZVR5cGVBcnJheTtcbiAgICBsZXQgbWF0Y2hBcnJheTogSW5saW5lUGFydFtdID0gW107XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5zb3J0KChhLCBiKTogbnVtYmVyID0+IGEuYmVnaW4gLSBiLmJlZ2luKTtcbiAgICAvLyBjb25zb2xlLmxvZygnYmVmb3JlLS0tLS0tLS0tLS1cXG4nLHJldEFycmF5KVxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGxldCBtYXRjaCA9IHJlZ0V4cC5leGVjKHRleHQpO1xuICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgbGV0IHZhbGlkID0gdHJ1ZTtcbiAgICAgICAgLy8gXHU2OEMwXHU2N0U1XHU1MUIyXHU3QTgxXG4gICAgICAgIGlmIChjaGVja0FycmF5KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYocmVnRXhwLmxhc3RJbmRleD5yZXRBcnJheVtpXS5iZWdpbiAmJiByZXRBcnJheVtpXS5lbmQ+bWF0Y2guaW5kZXgpe1xuICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2YWxpZCkgY29udGludWU7XG4gICAgICAgIG1hdGNoQXJyYXkucHVzaChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBtYXRjaFswXSxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgIGJlZ2luOiBtYXRjaC5pbmRleCxcbiAgICAgICAgICAgICAgICBlbmQ6IHJlZ0V4cC5sYXN0SW5kZXgsXG4gICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTogbGVmdFNwYWNlUmUsXG4gICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6IHJpZ2h0U3BhY2VSZVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbiAgICByZXRBcnJheSA9IHJldEFycmF5LmNvbmNhdChtYXRjaEFycmF5KTtcbiAgICAvLyBjb25zb2xlLmxvZygnQWZ0ZXI9PT09PT09PT09PVxcbicsIHJldEFycmF5KTtcbiAgICByZXR1cm4gcmV0QXJyYXk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoV2l0aEFiYnIodGV4dDogc3RyaW5nLCB0eXBlOiBJbmxpbmVUeXBlLCBpbmxpbmVUeXBlQXJyYXk6IElubGluZVBhcnRbXSwgY2hlY2tBcnJheSA9IGZhbHNlKXtcbiAgICBsZXQgcmV0QXJyYXkgPSBpbmxpbmVUeXBlQXJyYXk7XG4gICAgbGV0IG1hdGNoQXJyYXk6IElubGluZVBhcnRbXSA9IFtdO1xuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuc29ydCgoYSwgYik6IG51bWJlciA9PiBhLmJlZ2luIC0gYi5iZWdpbik7XG4gICAgbGV0IHJlZ0FiYnIgPSAvKFthLXpBLVpdXFwuKSsvZztcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBsZXQgbWF0Y2ggPSByZWdBYmJyLmV4ZWModGV4dCk7XG4gICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICBsZXQgdmFsaWQgPSB0cnVlO1xuICAgICAgICBsZXQgaXNJbkJsb2NrQmVnaW46Ym9vbGVhbiA9IChtYXRjaC5pbmRleD09MCk7XG4gICAgICAgIC8vIFx1NjhDMFx1NjdFNVx1NTFCMlx1N0E4MVxuICAgICAgICBpZiAoY2hlY2tBcnJheSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXRBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmKG1hdGNoLmluZGV4ID09IHJldEFycmF5W2ldLmVuZCl7XG4gICAgICAgICAgICAgICAgICAgIGlzSW5CbG9ja0JlZ2luID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYocmVnQWJici5sYXN0SW5kZXg+cmV0QXJyYXlbaV0uYmVnaW4gJiYgcmV0QXJyYXlbaV0uZW5kPm1hdGNoLmluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmKCFpc0luQmxvY2tCZWdpbiAmJiB2YWxpZClcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IHJlZ0NoYXIgPSAvW2EtekEtWjAtOV0vO1xuICAgICAgICAgICAgaWYocmVnQ2hhci50ZXN0KHRleHQuY2hhckF0KG1hdGNoLmluZGV4LTEpKSl7XG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmFsaWQpIGNvbnRpbnVlO1xuICAgICAgICBtYXRjaEFycmF5LnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGVudDogbWF0Y2hbMF0sXG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBiZWdpbjogbWF0Y2guaW5kZXgsXG4gICAgICAgICAgICAgICAgZW5kOiByZWdBYmJyLmxhc3RJbmRleCxcbiAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmUsXG4gICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbiAgICByZXRBcnJheSA9IHJldEFycmF5LmNvbmNhdChtYXRjaEFycmF5KTtcbiAgICAvLyBjb25zb2xlLmxvZygnQWZ0ZXI9PT09PT09PT09PVxcbicsIHJldEFycmF5KTtcbiAgICByZXR1cm4gcmV0QXJyYXk7XG59XG5cbi8qKlxuICogXHU1MjA2XHU1MjcyXHU0RTAwXHU4ODRDXHU2NTg3XHU2NzJDXHU0RTJEXHU3Njg0XHU5NEZFXHU2M0E1XHU1NDhDXHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU3Njg0XHU2QjYzXHU1MjE5XHU5MEU4XHU1MjA2XHVGRjBDXHU1Rjk3XHU1MjMwIElubGluZVBhcnQgXHU3Njg0XHU0RTBEXHU1NDBDXHU1MzNBXHU1N0RGXG4gKi9cbmZ1bmN0aW9uIHNwbGl0VGV4dFdpdGhMaW5rQW5kVXNlckRlZmluZWQodGV4dDogc3RyaW5nLCByZWdFeHBzPzogc3RyaW5nKTogSW5saW5lUGFydFtdIHtcbiAgICBsZXQgcmV0QXJyYXk6IElubGluZVBhcnRbXSA9IFtdO1xuICAgIGxldCByZWdXaWtpTGluayA9IC9cXCF7MCwyfVxcW1xcW1teXFxbXFxdXSo/XFxdXFxdL2c7XG4gICAgbGV0IHJlZ01kTGluayA9IC9cXCF7MCwyfVxcW1teXFxbXFxdXSo/XFxdXFwoW15cXHNcXClcXChcXFtcXF1cXHtcXH0nXSpcXCkvZztcbiAgICAvLyBsZXQgcmVnQmFyZUxpbmsgPSAvKGh0dHBzPzpcXC9cXC98ZnRwOlxcL1xcL3xvYnNpZGlhbjpcXC9cXC98em90ZXJvOlxcL1xcL3x3d3cuKVteXFxzXHVGRjA4XHVGRjA5XHUzMDBBXHUzMDBCXHUzMDAyXHVGRjBDXHVGRjAxXHVGRjFGXHVGRjFCXHVGRjFBXHUyMDFDXHUyMDFEXHUyMDE4XHUyMDE5XFwpXFwoXFxbXFxdXFx7XFx9J10rL2c7XG5cbiAgICAvLyAxLiBcdTUzMzlcdTkxNER3aWtpbGlua1xuICAgIHJldEFycmF5ID0gbWF0Y2hXaXRoUmVnKHRleHQsIHJlZ1dpa2lMaW5rLCBJbmxpbmVUeXBlLndpa2lsaW5rLCByZXRBcnJheSk7XG4gICAgLy8gMi4gXHU1MzM5XHU5MTREbWRsaW5rXG4gICAgcmV0QXJyYXkgPSBtYXRjaFdpdGhSZWcodGV4dCwgcmVnTWRMaW5rLCBJbmxpbmVUeXBlLm1kbGluaywgcmV0QXJyYXkpO1xuXG4gICAgLy8gMy4gXHU1MzM5XHU5MTREXHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XG4gICAgbGV0IHJlZ0V4cExpc3Q6IFJlZ0V4cFtdID0gW107XG4gICAgbGV0IGxlZnRTUmVxdWlyZUxpc3Q6IFNwYWNlU3RhdGVbXSA9IFtdO1xuICAgIGxldCByaWdodFNSZXF1aXJlTGlzdDogU3BhY2VTdGF0ZVtdID0gW107XG4gICAgbGV0IHJlZ051bGwgPSAvXlxccyokL2c7XG4gICAgbGV0IHJlZ1NSZXF1aXJlID0gL1xcfFtcXC09XFwrXVtcXC09XFwrXSQvO1xuICAgIGlmIChyZWdFeHBzKSB7XG4gICAgICAgIGxldCByZWdzID0gcmVnRXhwcy5zcGxpdCgnXFxuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVncy5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICBpZiAocmVnTnVsbC50ZXN0KHJlZ3NbaV0pKSBjb250aW51ZTtcblxuICAgICAgICAgICAgaWYgKCghcmVnU1JlcXVpcmUudGVzdChyZWdzW2ldKSkgfHwgcmVnc1tpXS5sZW5ndGggPD0gMykge1xuICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJFYXN5VHlwaW5nOiBcdTdCMkNcIiArIFN0cmluZyhpKSArIFwiXHU4ODRDXHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XHU0RTBEXHU3QjI2XHU1NDA4XHU4OUM0XHU4MzAzXFxuXCIrcmVnc1tpXSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcmVnSXRlbSA9IHJlZ3NbaV0uc3Vic3RyaW5nKDAsIHJlZ3NbaV0ubGVuZ3RoIC0gMyk7XG4gICAgICAgICAgICBsZXQgc3BhY2VSZXFTdHJpbmcgPSByZWdzW2ldLnN1YnN0cmluZyhyZWdzW2ldLmxlbmd0aCAtIDMpO1xuXG4gICAgICAgICAgICBsZXQgaXNWYWxpZFJlZyA9IHRydWU7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCByZWdUZW1wID0gbmV3IFJlZ0V4cChyZWdJdGVtLCAnZycpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBpc1ZhbGlkUmVnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5zZXR0aW5ncy5kZWJ1Zyl7XG4gICAgICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJFYXN1VHlwaW5nOiBCYWQgUmVnRXhwOlxcblwiICsgcmVnSXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNWYWxpZFJlZykge1xuICAgICAgICAgICAgICAgIHJlZ0V4cExpc3QucHVzaChuZXcgUmVnRXhwKHJlZ0l0ZW0sICdnJykpO1xuICAgICAgICAgICAgICAgIGxlZnRTUmVxdWlyZUxpc3QucHVzaChzdHIyU3BhY2VTdGF0ZShzcGFjZVJlcVN0cmluZy5jaGFyQXQoMSkpKTtcbiAgICAgICAgICAgICAgICByaWdodFNSZXF1aXJlTGlzdC5wdXNoKHN0cjJTcGFjZVN0YXRlKHNwYWNlUmVxU3RyaW5nLmNoYXJBdCgyKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZWdMZW4gPSByZWdFeHBMaXN0Lmxlbmd0aDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlZ0xlbjsgaSsrKSB7XG4gICAgICAgICAgICByZXRBcnJheSA9IG1hdGNoV2l0aFJlZyh0ZXh0LCByZWdFeHBMaXN0W2ldLCBJbmxpbmVUeXBlLnVzZXIsIHJldEFycmF5LCB0cnVlLCBsZWZ0U1JlcXVpcmVMaXN0W2ldLCByaWdodFNSZXF1aXJlTGlzdFtpXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBcdTUzMzlcdTkxNERcdTY1RjZcdTk1RjRcdTYyMzNcbiAgICByZXRBcnJheSA9IG1hdGNoV2l0aFJlZyh0ZXh0LCAvXFxkezEsMn06XFxkezEsMn0oOlxcZHswLDJ9KXswLDF9L2csIElubGluZVR5cGUudXNlciwgcmV0QXJyYXksIHRydWUsIFNwYWNlU3RhdGUubm9uZSwgU3BhY2VTdGF0ZS5ub25lKTtcblxuICAgIC8vIDQuIFx1NTMzOVx1OTE0RFx1N0YyOVx1NTE5OVx1NTk4MiBhLm0uXG4gICAgcmV0QXJyYXkgPSBtYXRjaFdpdGhBYmJyKHRleHQsIElubGluZVR5cGUudXNlciwgcmV0QXJyYXksIHRydWUpO1xuXG4gICAgLy8gNS4gXHU1Rjk3XHU1MjMwXHU1MjY5XHU0RjU5XHU3Njg0XHU2NTg3XHU2NzJDXHU5MEU4XHU1MjA2XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5zb3J0KChhLCBiKTogbnVtYmVyID0+IGEuYmVnaW4gLSBiLmJlZ2luKTtcblxuICAgIGxldCB0ZXh0QXJyYXk6IElubGluZVBhcnRbXSA9IFtdO1xuICAgIGxldCB0ZXh0QmVnaW4gPSAwO1xuICAgIGxldCB0ZXh0RW5kID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0ZXh0QmVnaW4gPCByZXRBcnJheVtpXS5iZWdpbikge1xuICAgICAgICAgICAgdGV4dEVuZCA9IHJldEFycmF5W2ldLmJlZ2luO1xuICAgICAgICAgICAgdGV4dEFycmF5LnB1c2goXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0ZXh0LnN1YnN0cmluZyh0ZXh0QmVnaW4sIHRleHRFbmQpLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBJbmxpbmVUeXBlLnRleHQsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiB0ZXh0QmVnaW4sXG4gICAgICAgICAgICAgICAgICAgIGVuZDogdGV4dEVuZCxcbiAgICAgICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lLFxuICAgICAgICAgICAgICAgICAgICByaWdodFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0ZXh0QmVnaW4gPSByZXRBcnJheVtpXS5lbmQ7XG4gICAgfVxuXG4gICAgaWYgKHRleHRCZWdpbiAhPSB0ZXh0Lmxlbmd0aCkge1xuICAgICAgICB0ZXh0QXJyYXkucHVzaChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0ZXh0LnN1YnN0cmluZyh0ZXh0QmVnaW4sIHRleHQubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBJbmxpbmVUeXBlLnRleHQsXG4gICAgICAgICAgICAgICAgYmVnaW46IHRleHRCZWdpbixcbiAgICAgICAgICAgICAgICBlbmQ6IHRleHQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGxlZnRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZSxcbiAgICAgICAgICAgICAgICByaWdodFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gNi4gXHU1NDA4XHU1RTc2XHU2NTg3XHU2NzJDXHU5MEU4XHU1MjA2XHU1NDhDXHU1MTc2XHU0RUQ2XHU5MEU4XHU1MjA2XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5jb25jYXQodGV4dEFycmF5KTtcbiAgICByZXRBcnJheSA9IHJldEFycmF5LnNvcnQoKGEsIGIpOiBudW1iZXIgPT4gYS5iZWdpbiAtIGIuYmVnaW4pO1xuICAgIHJldHVybiByZXRBcnJheVxufVxuXG4vLyBcdTVCNTdcdTdCMjZcdThGNkNcdTUzMTZcdTYyMTBcdTdBN0FcdTY4M0NcdTcyQjZcdTYwMDFcdTg5ODFcdTZDNDJcbmZ1bmN0aW9uIHN0cjJTcGFjZVN0YXRlKHM6IHN0cmluZyk6IFNwYWNlU3RhdGUge1xuICAgIHN3aXRjaCAocykge1xuICAgICAgICBjYXNlIFwiK1wiOlxuICAgICAgICAgICAgcmV0dXJuIFNwYWNlU3RhdGUuc3RyaWN0O1xuICAgICAgICBjYXNlICc9JzpcbiAgICAgICAgICAgIHJldHVybiBTcGFjZVN0YXRlLnNvZnQ7XG4gICAgICAgIGNhc2UgJy0nOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFNwYWNlU3RhdGUubm9uZTtcbiAgICB9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZzJTcGFjZVN0YXRlKHM6c3RyaW5nKTpTcGFjZVN0YXRlXG57XG4gICAgaWYoTnVtYmVyKHMpPT1TcGFjZVN0YXRlLm5vbmUpIHJldHVybiBTcGFjZVN0YXRlLm5vbmU7XG4gICAgaWYoTnVtYmVyKHMpPT1TcGFjZVN0YXRlLnNvZnQpIHJldHVybiBTcGFjZVN0YXRlLnNvZnQ7XG4gICAgaWYoTnVtYmVyKHMpPT1TcGFjZVN0YXRlLnN0cmljdCkgcmV0dXJuIFNwYWNlU3RhdGUuc3RyaWN0O1xuICAgIHJldHVybiBTcGFjZVN0YXRlLm5vbmU7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvc0xpbmVUeXBlKHN0YXRlOiBFZGl0b3JTdGF0ZSwgcG9zOiBudW1iZXIpOkxpbmVUeXBlIHtcbiAgICBjb25zdCBsaW5lID0gc3RhdGUuZG9jLmxpbmVBdChwb3MpXG4gICAgY29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuICAgIGNvbnN0IHRva2VuID0gdHJlZS5yZXNvbHZlKGxpbmUuZnJvbSwgMSkubmFtZVxuICAgIGlmICh0b2tlbi5jb250YWlucygnaG1kLWZyb250bWF0dGVyJykpe1xuICAgICAgICByZXR1cm4gTGluZVR5cGUuZnJvbnRtYXR0ZXJcbiAgICB9XG5cbiAgICBpZih0b2tlbi5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgZm9yKGxldCBwPWxpbmUuZnJvbSsxO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgICAgIGlmKCF0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gTGluZVR5cGUudGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5mb3JtdWxhXG4gICAgfVxuICAgIGVsc2UgaWYodG9rZW4uY29udGFpbnMoJ2NvZGUnKSAmJiB0b2tlbi5jb250YWlucygnYmxvY2snKSl7XG4gICAgICAgIGZvcihsZXQgcD1saW5lLmZyb20rMTtwPGxpbmUudG87cCs9MSl7XG4gICAgICAgICAgICBsZXQgdCA9IHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lXG4gICAgICAgICAgICBpZighKHQuY29udGFpbnMoJ2NvZGUnKSAmJiB0LmNvbnRhaW5zKCdibG9jaycpKSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLnRleHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTGluZVR5cGUuY29kZWJsb2NrXG4gICAgfVxuICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvc0xpbmVUeXBlMihzdGF0ZTogRWRpdG9yU3RhdGUsIHBvczogbnVtYmVyKTpMaW5lVHlwZSB7XG4gICAgY29uc3QgbGluZSA9IHN0YXRlLmRvYy5saW5lQXQocG9zKVxuICAgIGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHN0YXRlKTtcbiAgICBjb25zdCB0b2tlbiA9IHRyZWUucmVzb2x2ZShsaW5lLmZyb20sIDEpLm5hbWVcbiAgICBpZiAodG9rZW4uY29udGFpbnMoJ2htZC1mcm9udG1hdHRlcicpKXtcbiAgICAgICAgcmV0dXJuIExpbmVUeXBlLmZyb250bWF0dGVyXG4gICAgfVxuXG4gICAgaWYodG9rZW4uY29udGFpbnMoJ21hdGgnKSl7XG4gICAgICAgIGZvcihsZXQgcD1saW5lLmZyb20rMTtwPGxpbmUudG87cCs9MSl7XG4gICAgICAgICAgICBpZighdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ21hdGgnKSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLnRleHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTGluZVR5cGUuZm9ybXVsYVxuICAgIH1cbiAgICBlbHNlIGlmKHRva2VuLmNvbnRhaW5zKCdjb2RlJykgJiYgdG9rZW4uY29udGFpbnMoJ2Jsb2NrJykpe1xuICAgICAgICBmb3IobGV0IHA9bGluZS5mcm9tKzE7cDxsaW5lLnRvO3ArPTEpe1xuICAgICAgICAgICAgbGV0IHQgPSB0cmVlLnJlc29sdmUocCwgMSkubmFtZVxuICAgICAgICAgICAgaWYoISh0LmNvbnRhaW5zKCdjb2RlJykgJiYgdC5jb250YWlucygnYmxvY2snKSkpe1xuICAgICAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIExpbmVUeXBlLmNvZGVibG9ja1xuICAgIH1cblxuICAgIGZvcihsZXQgcD1saW5lLmZyb207cDxsaW5lLnRvO3ArPTEpe1xuICAgICAgICBpZih0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnbGlzdCcpKXtcbiAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS5saXN0XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZih0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnY2FsbG91dCcpKXtcbiAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS5jYWxsb3V0X3RpdGxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYodG9rZW4uY29udGFpbnMoJ3F1b3RlJykpe1xuICAgICAgICByZXR1cm4gTGluZVR5cGUucXVvdGU7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG59IiwgImltcG9ydCB7IEFubm90YXRpb24sIEVkaXRvclN0YXRlLCBFeHRlbnNpb24sIFN0YXRlRmllbGQsIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblNwZWMsIFRleHR9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IEVhc3lUeXBpbmdTZXR0aW5nVGFiLCBFYXN5VHlwaW5nU2V0dGluZ3MsIFBhaXJTdHJpbmcsIENvbnZlcnRSdWxlfSBmcm9tIFwiLi9zZXR0aW5nc1wiXG5cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc1RvT2Zmc2V0KGRvYzpUZXh0LCBwb3M6e2xpbmU6bnVtYmVyLCBjaDpudW1iZXJ9KSB7XG5cdHJldHVybiBkb2MubGluZShwb3MubGluZSArIDEpLmZyb20gKyBwb3MuY2hcbn1cbmV4cG9ydCBmdW5jdGlvbiBvZmZzZXRUb1Bvcyhkb2M6VGV4dCwgb2Zmc2V0Om51bWJlcikge1xuXHRsZXQgbGluZSA9IGRvYy5saW5lQXQob2Zmc2V0KVxuXHRyZXR1cm4ge2xpbmU6IGxpbmUubnVtYmVyIC0gMSwgY2g6IG9mZnNldCAtIGxpbmUuZnJvbX1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVTdHJPZlRyYW5zYWModHI6IFRyYW5zYWN0aW9uKTogc3RyaW5nIHtcblx0bGV0IFRyYW5zYWNUeXBlQXJyYXk6c3RyaW5nW10gPSBbXCJFYXN5VHlwaW5nLmNoYW5nZVwiLCBcblx0XHRcdFx0XHRcdFx0XCJpbnB1dC50eXBlLmNvbXBvc2VcIiwgXCJpbnB1dC50eXBlXCIsIFwiaW5wdXQucGFzdGVcIiwgXCJpbnB1dC5kcm9wXCIsIFwiaW5wdXQuY29tcGxldGVcIiwgXCJpbnB1dFwiLFxuXHRcdFx0XHRcdFx0XHRcImRlbGV0ZS5zZWxlY3Rpb25cIiwgXCJkZWxldGUuZm9yd2FyZFwiLCBcImRlbGV0ZS5iYWNrd2FyZFwiLCBcImRlbGV0ZS5jdXRcIiwgXCJkZWxldGVcIixcblx0XHRcdFx0XHRcdFx0XCJtb3ZlLmRyb3BcIixcblx0XHRcdFx0XHRcdFx0XCJ1bmRvXCIsIFwicmVkb1wiLFxuXHRcdFx0XHRcdFx0XHRcInNlbGVjdC5wb2ludGVyXCJdO1xuXHRmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgVHJhbnNhY1R5cGVBcnJheS5sZW5ndGg7IGkrKylcblx0e1xuXHRcdGlmICh0ci5pc1VzZXJFdmVudChUcmFuc2FjVHlwZUFycmF5W2ldKSlcblx0XHRcdHJldHVybiBUcmFuc2FjVHlwZUFycmF5W2ldO1xuXHR9XG5cdHJldHVybiBcIm5vbmVcIlxufVxuXG5mdW5jdGlvbiBzdHJpbmcycGFpcnN0cmluZyhzOiBzdHJpbmcpOlBhaXJTdHJpbmd7XG5cdGxldCBjdXJzb3JJZHggPSBzLmluZGV4T2YoXCJ8XCIpO1xuXHRsZXQgbGVmdCA9IHMuc3Vic3RyaW5nKDAsIGN1cnNvcklkeCk7XG5cdGxldCByaWdodCA9IHMuc3Vic3RyaW5nKGN1cnNvcklkeCsxKTtcblx0cmV0dXJuIHtsZWZ0OmxlZnQsIHJpZ2h0OnJpZ2h0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KGxpc3Q6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+KTpDb252ZXJ0UnVsZVtdIHtcblx0bGV0IHJlczpDb252ZXJ0UnVsZVtdID0gW107XG5cdGZvciAobGV0IGkgaW4gbGlzdCl7XG5cdFx0cmVzW2ldID0ge2JlZm9yZTogc3RyaW5nMnBhaXJzdHJpbmcobGlzdFtpXVswXSksIGFmdGVyOiBzdHJpbmcycGFpcnN0cmluZyhsaXN0W2ldWzFdKX1cblx0fVxuXHRyZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nRGVsZXRlQXQoc3RyOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOnN0cmluZ1xue1xuICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIGluZGV4KStzdHIuc3Vic3RyaW5nKGluZGV4KzEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nSW5zZXJ0QXQoc3RyOnN0cmluZywgaW5kZXg6IG51bWJlciwgczogc3RyaW5nKTpzdHJpbmdcbntcbiAgICByZXR1cm4gc3RyLnN1YnN0cmluZygwLCBpbmRleCkrcytzdHIuc3Vic3RyaW5nKGluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGFyYW1EZWZpbmVkKHBhcmFtOiBhbnkpOmJvb2xlYW5cbntcblx0cmV0dXJuIHR5cGVvZiBwYXJhbSE9PVwidW5kZWZpbmVkXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93U3RyaW5nKHM6IHN0cmluZyk6c3RyaW5ne1xuXHRyZXR1cm4gcy5yZXBsYWNlKC9cXG4vZywgJ1xcXFxuJyk7XG59IiwgImltcG9ydCB7IFNwYWNlU3RhdGUsIHN0cmluZzJTcGFjZVN0YXRlIH0gZnJvbSAnc3JjL2NvcmUnO1xuaW1wb3J0IHsgQXBwLCBUZXh0Q29tcG9uZW50LCBNYXJrZG93blZpZXcsIE1vZGFsLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZywgV29ya3NwYWNlLCBXb3Jrc3BhY2VMZWFmLCBUZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCBFYXN5VHlwaW5nUGx1Z2luIGZyb20gJy4vbWFpbic7XG5pbXBvcnQgeyBzaG93U3RyaW5nIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFpclN0cmluZyB7XG5cdGxlZnQ6IHN0cmluZztcblx0cmlnaHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb252ZXJ0UnVsZSB7XG5cdGJlZm9yZTogUGFpclN0cmluZztcblx0YWZ0ZXI6IFBhaXJTdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFJ1bGVUeXBlIHtkZWxldGU9IFwiRGVsZXRlIFJ1bGVcIiwgY29udmVydD0nQ29udmVydCBSdWxlJ31cbmV4cG9ydCBlbnVtIFdvcmtNb2RlIHsgT25seVdoZW5UeXBpbmcgPSBcInR5cGluZ1wiLCBHbG9iYWxseSA9IFwiZ2xvYmFsXCIgfVxuXG5leHBvcnQgaW50ZXJmYWNlIEVhc3lUeXBpbmdTZXR0aW5ncyB7XG5cdFRhYm91dDogYm9vbGVhbjtcblx0U2VsZWN0aW9uRW5oYW5jZTogYm9vbGVhbjtcblx0SW50cmluc2ljU3ltYm9sUGFpcnM6IGJvb2xlYW47XG5cdEJhc2VPYkVkaXRFbmhhbmNlOiBib29sZWFuO1xuXHRGVzJIV0VuaGFuY2U6IGJvb2xlYW47XG5cdEF1dG9Gb3JtYXQ6IGJvb2xlYW47XG5cdEV4Y2x1ZGVGaWxlczogc3RyaW5nO1xuXHRBdXRvQ2FwaXRhbDogYm9vbGVhbjtcblx0QXV0b0NhcGl0YWxNb2RlOiBXb3JrTW9kZTtcblx0Q2hpbmVzZUVuZ2xpc2hTcGFjZTogYm9vbGVhbjtcblx0RW5nbGlzaE51bWJlclNwYWNlOiBib29sZWFuO1xuXHRDaGluZXNlTm9TcGFjZTogYm9vbGVhbjtcblx0Q2hpbmVzZU51bWJlclNwYWNlOiBib29sZWFuO1xuXHRQdW5jdHVhdGlvblNwYWNlOiBib29sZWFuO1xuXHRQdW5jdHVhdGlvblNwYWNlTW9kZTogV29ya01vZGU7XG5cdElubGluZUNvZGVTcGFjZU1vZGU6IFNwYWNlU3RhdGU7XG5cdElubGluZUZvcm11bGFTcGFjZU1vZGU6IFNwYWNlU3RhdGU7XG5cdElubGluZUxpbmtTcGFjZU1vZGU6IFNwYWNlU3RhdGU7XG5cdElubGluZUxpbmtTbWFydFNwYWNlOiBib29sZWFuO1xuXHRVc2VyRGVmaW5lZFJlZ1N3aXRjaDogYm9vbGVhbjtcblx0VXNlckRlZmluZWRSZWdFeHA6IHN0cmluZztcblx0ZGVidWc6IGJvb2xlYW47XG5cblx0dXNlclNlbFJlcFJ1bGVUcmlnZ2VyOiBzdHJpbmdbXTtcblx0dXNlclNlbFJlcFJ1bGVWYWx1ZTogUGFpclN0cmluZ1tdO1xuXHR1c2VyRGVsZXRlUnVsZXNTdHJMaXN0OiBbc3RyaW5nLCBzdHJpbmddW107XG5cdHVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0OiBbc3RyaW5nLCBzdHJpbmddW107XG5cdHVzZXJTZWxSdWxlU2V0dGluZ3NPcGVuOiBib29sZWFuO1xuXHR1c2VyRGVsUnVsZVNldHRpbmdzT3BlbjogYm9vbGVhbjtcblx0dXNlckN2dFJ1bGVTZXR0aW5nc09wZW46IGJvb2xlYW47XG5cblx0RW50ZXJUd2ljZTogYm9vbGVhbjtcblx0UHVuY1JlY3RpZnk6IGJvb2xlYW47XG5cdFRyeUZpeENoaW5lc2VJTTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0VUVElOR1M6IEVhc3lUeXBpbmdTZXR0aW5ncyA9IHtcblx0VGFib3V0OiB0cnVlLFxuXHRTZWxlY3Rpb25FbmhhbmNlOiB0cnVlLFxuXHRJbnRyaW5zaWNTeW1ib2xQYWlyczogdHJ1ZSxcblx0QmFzZU9iRWRpdEVuaGFuY2U6IHRydWUsXG5cdEZXMkhXRW5oYW5jZTogdHJ1ZSxcblxuXHRBdXRvRm9ybWF0OiB0cnVlLFxuXHRFeGNsdWRlRmlsZXM6IFwiXCIsXG5cdENoaW5lc2VFbmdsaXNoU3BhY2U6IHRydWUsXG5cdENoaW5lc2VOdW1iZXJTcGFjZTogdHJ1ZSxcblx0RW5nbGlzaE51bWJlclNwYWNlOiB0cnVlLFxuXHRDaGluZXNlTm9TcGFjZTogdHJ1ZSxcblx0UHVuY3R1YXRpb25TcGFjZTogdHJ1ZSxcblx0QXV0b0NhcGl0YWw6IHRydWUsXG5cdEF1dG9DYXBpdGFsTW9kZTogV29ya01vZGUuT25seVdoZW5UeXBpbmcsXG5cdFB1bmN0dWF0aW9uU3BhY2VNb2RlOiBXb3JrTW9kZS5Pbmx5V2hlblR5cGluZyxcblx0SW5saW5lQ29kZVNwYWNlTW9kZTogU3BhY2VTdGF0ZS5zb2Z0LFxuXHRJbmxpbmVGb3JtdWxhU3BhY2VNb2RlOiBTcGFjZVN0YXRlLnNvZnQsXG5cdElubGluZUxpbmtTcGFjZU1vZGU6IFNwYWNlU3RhdGUuc29mdCxcblx0SW5saW5lTGlua1NtYXJ0U3BhY2U6IHRydWUsXG5cdFVzZXJEZWZpbmVkUmVnU3dpdGNoOiB0cnVlLFxuXHRVc2VyRGVmaW5lZFJlZ0V4cDogXCJ7ey4qP319fCsrXFxuXCIrXG5cdFx0XCI8Lio/PnwtLVxcblwiICtcblx0XHRcIlxcXFxbXFxcXCEuKj9cXFxcXVstK117MCwxfXwtK1xcblwiK1xuXHRcdFwiKGZpbGU6Ly8vfGh0dHBzPzovL3xmdHA6Ly98b2JzaWRpYW46Ly98em90ZXJvOi8vfHd3dy4pW15cXFxcc1x1RkYwOFx1RkYwOVx1MzAwQVx1MzAwQlx1MzAwMixcdUZGMENcdUZGMDFcdUZGMUY7XHVGRjFCXHVGRjFBXHUyMDFDXHUyMDFEXHUyMDE4XHUyMDE5XFxcXClcXFxcKFxcXFxbXFxcXF1cXFxce1xcXFx9J10rfCsrXFxuXCIrXG5cdFx0XCJcXG5bYS16QS1aMC05X1xcXFwtLl0rQFthLXpBLVowLTlfXFxcXC0uXSt8KytcXG5cIitcblx0XHRcIig/PCEjKSNbXFxcXHU0ZTAwLVxcXFx1OWZhNVxcXFx3XFxcXC9dK3wrK1wiLFxuXHRkZWJ1ZzogZmFsc2UsXG5cdHVzZXJTZWxSZXBSdWxlVHJpZ2dlcjogW1wiLVwiLCBcIiNcIl0sXG5cdHVzZXJTZWxSZXBSdWxlVmFsdWU6IFt7bGVmdDpcIn5+XCIsIHJpZ2h0Olwifn5cIn0sIHtsZWZ0OlwiI1wiLCByaWdodDpcIiBcIn1dLFxuXHR1c2VyRGVsZXRlUnVsZXNTdHJMaXN0OiBbW1wiZGVtb3xcIiwgXCJ8XCJdXSxcblx0dXNlckNvbnZlcnRSdWxlc1N0ckxpc3Q6IFtbXCI6KXxcIixcIlx1RDgzRFx1REUwMHxcIl1dLFxuXHR1c2VyU2VsUnVsZVNldHRpbmdzT3BlbjogdHJ1ZSxcblx0dXNlckRlbFJ1bGVTZXR0aW5nc09wZW46IHRydWUsXG5cdHVzZXJDdnRSdWxlU2V0dGluZ3NPcGVuOiB0cnVlLFxuXG5cdEVudGVyVHdpY2U6IGZhbHNlLFxuXHRUcnlGaXhDaGluZXNlSU06IGZhbHNlLFxuXHRQdW5jUmVjdGlmeTogZmFsc2UsXG59XG5cbmV4cG9ydCBjbGFzcyBFYXN5VHlwaW5nU2V0dGluZ1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuXHRwbHVnaW46IEVhc3lUeXBpbmdQbHVnaW47XG5cblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogRWFzeVR5cGluZ1BsdWdpbikge1xuXHRcdHN1cGVyKGFwcCwgcGx1Z2luKTtcblx0XHR0aGlzLnBsdWdpbiA9IHBsdWdpbjtcblx0fVxuXG5cdGRpc3BsYXkoKTogdm9pZCB7XG5cdFx0Y29uc3QgeyBjb250YWluZXJFbCB9ID0gdGhpcztcblxuXHRcdGNvbnRhaW5lckVsLmVtcHR5KCk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbChcImgxXCIsIHsgdGV4dDogXCJPYnNpZGlhbiBFYXN5VHlwaW5nIFBsdWdpblwiIH0pO1xuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwicFwiLCB7IHRleHQ6IFwiTW9yZSBkZXRhaWwgaXMgaW4gR2l0aHViOiBcIiB9KS5jcmVhdGVFbChcImFcIiwge1xuXHRcdFx0dGV4dDogXCJlYXN5LXR5cGluZy1vYnNpZGlhblwiLFxuXHRcdFx0aHJlZjogXCJodHRwczovL2dpdGh1Yi5jb20vWWFvemh1d2EvZWFzeS10eXBpbmctb2JzaWRpYW5cIixcblx0XHR9KTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ1x1NTg5RVx1NUYzQVx1N0YxNlx1OEY5MVx1OEJCRVx1N0Y2RSAoRW5oYW5jZWQgRWRpdGluZyBTZXR0aW5nKScgfSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3ltYm9sIGF1dG8gcGFpciBhbmQgZGVsZXRlIHdpdGggcGFpclwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU4OUVcdTUyQTBcdTU5MUFcdTc5Q0RcdTdCMjZcdTUzRjdcdTkxNERcdTVCRjlcdThGOTNcdTUxNjVcdUZGMENcdTkxNERcdTVCRjlcdTUyMjBcdTk2NjRcdUZGMENcdTU5ODJcdTMwMEFcdTMwMEIsIFx1MjAxQ1x1MjAxRCwgXHUzMDBDXHUzMDBELCBcdTMwMEVcdTMwMEYsXHUzMDEwXHUzMDExXHU3QjQ5XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkludHJpbnNpY1N5bWJvbFBhaXJzKVxuXHRcdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkludHJpbnNpY1N5bWJvbFBhaXJzID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNlbGVjdGlvbiBSZXBsYWNlIEVuaGFuY2VtZW50XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1OTAwOVx1NEUyRFx1NjU4N1x1NjcyQ1x1NjBDNVx1NTFCNVx1NEUwQlx1NzY4NFx1N0YxNlx1OEY5MVx1NTg5RVx1NUYzQVx1RkYwQ1x1NjMwOVx1RkZFNVx1MjE5MiRcdTkwMDlcdTRFMkRcdTc2ODRcdTY1ODdcdTY3MkMkLCBcdTYzMDlcdTAwQjdcdTIxOTJgXHU5MDA5XHU0RTJEXHU3Njg0XHU2NTg3XHU2NzJDYFx1RkYwQ1x1MzAwQSBcdTIxOTIgXHUzMDBBXHU5MDA5XHU0RTJEXHU3Njg0XHU2NTg3XHU2NzJDXHUzMDBCXHU3QjQ5XHU3QjQ5XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlNlbGVjdGlvbkVuaGFuY2UpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuU2VsZWN0aW9uRW5oYW5jZSA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJDb252ZXJ0IHN1Y2Nlc3NpdmUgZnVsbCB3aWR0aCBzeW1ib2wgdG8gaGFsZiB3aWR0aCBzeW1ib2xcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4RkRFXHU3RUVEXHU4RjkzXHU1MTY1XHU1MTY4XHU4OUQyXHU3QjI2XHU1M0Y3XHU4RjZDXHU1MzRBXHU4OUQyXHVGRjBDXHUzMDAyXHUzMDAyXHUyMTkyIC5cdUZGMENcdUZGMDFcdUZGMDFcdTIxOTIgIVx1RkYwQyBcdTMwMEJcdTMwMEJcdTIxOTIgPlwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5GVzJIV0VuaGFuY2UpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuRlcySFdFbmhhbmNlID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkJhc2ljIHN5bWJvbCBpbnB1dCBlbmhhbmNlIGZvciBvYnNpZGlhblwiKVxuXHRcdFx0LnNldERlc2MoXCJPYnNpZGlhbiBcdTc2ODRcdTU3RkFcdTc4NDBcdThGOTNcdTUxNjVcdTU4OUVcdTVGM0FcdUZGMENcdTU5ODJcdTMwMTBcdTMwMTB8IFx1MjE5MiBbW3xdXVx1RkYwQ1x1NTNFNVx1OTk5Nlx1NzY4NFx1MzAwMVx1MjE5MiAvXHVGRjBDXHU1M0U1XHU5OTk2XHU3Njg0XHUzMDBCXHUyMTkyID5cdUZGMENcdTAwQjdcdTAwQjd8IFx1MjE5MiBgfGBcdUZGMEMgYFx1MDBCN3xgIFx1NTNEOFx1NjIxMFx1NEVFM1x0XHU3ODAxXHU1NzU3XHVGRjBDXHVGRkU1XHVGRkU1fCBcdTIxOTIgJHwkXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkJhc2VPYkVkaXRFbmhhbmNlKVxuXHRcdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkJhc2VPYkVkaXRFbmhhbmNlID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlRhYm91dFwiKVxuXHRcdFx0LnNldERlc2MoXCJUYWJvdXQgaW5saW5lIGNvZGUuIFRhYlx1OERGM1x1NTFGQVx1ODg0Q1x1NTE4NVx1NEVFM1x1NzgwMVx1NTc1N1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5UYWJvdXQpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuVGFib3V0ID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywgeyB0ZXh0OiAnXHU4MUVBXHU1QjlBXHU0RTQ5XHU3RjE2XHU4RjkxXHU4RjZDXHU2MzYyXHU4OUM0XHU1MjE5IChDdXN0b21pemUgRWRpdCBDb252ZXJ0aW9uIFJ1bGUpJyB9KTtcblx0XHR0aGlzLmJ1aWxkVXNlclNlbFJlcFJ1bGVTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwuY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHtcblx0XHRcdGNsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wiLFxuXHRcdFx0YXR0cjoge1xuXHRcdFx0XHQuLi4odGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJ1bGVTZXR0aW5nc09wZW4/eyBvcGVuOiB0cnVlIH06e30pXG5cdFx0XHR9XG5cdFx0fSkpXG5cblx0XHR0aGlzLmJ1aWxkVXNlckRlbGV0ZVJ1bGVTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwuY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHtcblx0XHRcdGNsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wiLFxuXHRcdFx0YXR0cjoge1xuXHRcdFx0XHQuLi4odGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckRlbFJ1bGVTZXR0aW5nc09wZW4/eyBvcGVuOiB0cnVlIH06e30pXG5cdFx0XHR9XG5cdFx0fSkpXG5cblx0XHR0aGlzLmJ1aWxkVXNlckNvbnZlcnRSdWxlU2V0dGluZyh0aGlzLmNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiZGV0YWlsc1wiLCB7XG5cdFx0XHRjbHM6IFwiZWFzeXR5cGluZy1uZXN0ZWQtc2V0dGluZ3NcIixcblx0XHRcdGF0dHI6IHtcblx0XHRcdFx0Li4uKHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJDdnRSdWxlU2V0dGluZ3NPcGVuP3sgb3BlbjogdHJ1ZSB9Ont9KVxuXHRcdFx0fVxuXHRcdH0pKVxuXHRcdFxuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywgeyB0ZXh0OiAnXHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2XHU4QkJFXHU3RjZFIChBdXRvZm9ybWF0IFNldHRpbmcpJyB9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJBdXRvIGZvcm1hdHRpbmcgd2hlbiB0eXBpbmdcIilcblx0XHRcdC5zZXREZXNjKFwiXHU2NjJGXHU1NDI2XHU1NzI4XHU3RjE2XHU4RjkxXHU2NTg3XHU2ODYzXHU2NUY2XHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2XHU2NTg3XHU2NzJDXHVGRjBDXHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2XHU3Njg0XHU2MDNCXHU1RjAwXHU1MTczXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkF1dG9Gb3JtYXQpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0Zvcm1hdCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgncCcsIHsgdGV4dDogJ0RldGFpbGVkIFNldHRpbmcgQmVsb3cnIH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNwYWNlIGJldHdlZW4gQ2hpbmVzZSBhbmQgRW5nbGlzaFwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjhcdTRFMkRcdTY1ODdcdTU0OENcdTgyRjFcdTY1ODdcdTk1RjRcdTdBN0FcdTY4M0NcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQ2hpbmVzZUVuZ2xpc2hTcGFjZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQ2hpbmVzZUVuZ2xpc2hTcGFjZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNwYWNlIGJldHdlZW4gQ2hpbmVzZSBhbmQgTnVtYmVyXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1NEUyRFx1NjU4N1x1NTQ4Q1x1NjU3MFx1NUI1N1x1OTVGNFx1N0E3QVx1NjgzQ1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlTnVtYmVyU3BhY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkNoaW5lc2VOdW1iZXJTcGFjZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdFxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTcGFjZSBiZXR3ZWVuIEVuZ2lsc2ggYW5kIE51bWJlclwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjhcdTgyRjFcdTY1ODdcdTU0OENcdTY1NzBcdTVCNTdcdTk1RjRcdTdBN0FcdTY4M0NcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuRW5nbGlzaE51bWJlclNwYWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5FbmdsaXNoTnVtYmVyU3BhY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJEZWxldGUgdGhlIFNwYWNlIGJldHdlZW4gQ2hpbmVzZSBjaGFyYWN0ZXJzXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1NEUyRFx1NjU4N1x1NUI1N1x1N0IyNlx1OTVGNFx1NTNCQlx1OTY2NFx1N0E3QVx1NjgzQ1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlTm9TcGFjZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQ2hpbmVzZU5vU3BhY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJDYXBpdGFsaXplIHRoZSBmaXJzdCBsZXR0ZXIgb2YgZXZlcnkgc2VudGVuY2VcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4MkYxXHU2NTg3XHU2QkNGXHU0RTJBXHU1M0U1XHU5OTk2XHU1QjU3XHU2QkNEXHU1OTI3XHU1MTk5XCIpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihXb3JrTW9kZS5Pbmx5V2hlblR5cGluZywgXCJcdThGOTNcdTUxNjVcdTY1RjZcdTc1MUZcdTY1NDgoT25seSBXaGVuIFR5cGluZylcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihXb3JrTW9kZS5HbG9iYWxseSwgXCJcdTUxNjhcdTVDNDBcdTc1MUZcdTY1NDgoV29yayBHbG9iYWxseSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkF1dG9DYXBpdGFsTW9kZSk7XG5cdFx0XHRcdGRyb3Bkb3duLm9uQ2hhbmdlKGFzeW5jICh2OiBXb3JrTW9kZS5Pbmx5V2hlblR5cGluZyB8IFdvcmtNb2RlLkdsb2JhbGx5KSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0NhcGl0YWxNb2RlID0gdjtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFRvb2x0aXAoXCJcdTUyOUZcdTgwRkRcdTVGMDBcdTUxNzMoU3dpdGNoKVwiKTtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkF1dG9DYXBpdGFsKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5BdXRvQ2FwaXRhbCA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNtYXJ0bHkgaW5zZXJ0IHNwYWNlIGJldHdlZW4gdGV4dCBhbmQgcHVuY3R1YXRpb25cIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4XHU2NTg3XHU2NzJDXHU1NDhDXHU2ODA3XHU3MEI5XHU5NUY0XHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXCIpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihXb3JrTW9kZS5Pbmx5V2hlblR5cGluZywgXCJcdThGOTNcdTUxNjVcdTY1RjZcdTc1MUZcdTY1NDgoT25seSBXaGVuIFR5cGluZylcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihXb3JrTW9kZS5HbG9iYWxseSwgXCJcdTUxNjhcdTVDNDBcdTc1MUZcdTY1NDgoV29yayBHbG9iYWxseSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2VNb2RlKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nIHwgV29ya01vZGUuR2xvYmFsbHkpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5QdW5jdHVhdGlvblNwYWNlTW9kZSA9IHY7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5QdW5jdHVhdGlvblNwYWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5QdW5jdHVhdGlvblNwYWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2Ugc3RhdGVneSBiZXR3ZWVuIGlubGluZSBjb2RlIGFuZCB0ZXh0XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOCBgXHU4ODRDXHU1MTg1XHU0RUUzXHU3ODAxYCBcdTU0OENcdTY1ODdcdTY3MkNcdTk1RjRcdTc2ODRcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcdTMwMDJcIiArXG5cdFx0XHRcdFwiXHU2NUUwXHU4OTgxXHU2QzQyXHVGRjFBXHU1QkY5XHU2NzJDXHU3QzdCXHU1MjJCXHU1NzU3XHU0RTBFXHU1REU2XHU1M0YzXHU2NTg3XHU2NzJDXHU2Q0ExXHU2NzA5XHU3QTdBXHU2ODNDXHU3Njg0XHU4OTgxXHU2QzQyXHVGRjBDXCIgK1xuXHRcdFx0XHRcIlx1OEY2Rlx1N0E3QVx1NjgzQ1x1RkYxQVx1NUJGOVx1NjcyQ1x1N0M3Qlx1NTIyQlx1NTc1N1x1NEUwRVx1NTQ2OFx1NTZGNFx1NTMzQVx1NTc1N1x1NTNFQVx1ODk4MVx1NkM0Mlx1NjcwOVx1OEY2Rlx1N0E3QVx1NjgzQ1x1RkYwQ1x1OEY2Rlx1N0E3QVx1NjgzQ1x1NTk4Mlx1NUY1M1x1NTI0RFx1NTc1N1x1NURFNlx1OEZCOVx1NzY4NFx1NEUzNFx1OEZEMVx1NjU4N1x1NjcyQ1x1NEUzQVx1MzAwMlx1RkYwQ1x1RkYxQlx1RkYxRlx1N0I0OVx1NTE2OFx1ODlEMlx1NjgwN1x1NzBCOVx1RkYwQ1x1NUY1M1x1NTI0RFx1NTc1N1x1NTNGM1x1OEZCOVx1NzY4NFx1NEUzNFx1OEZEMVx1NjU4N1x1NjcyQ1x1NEUzQVx1NjI0MFx1NjcwOVx1NTE2OFx1NTM0QVx1ODlEMlx1NjgwN1x1NzBCOVx1RkYwQ1wiICtcblx0XHRcdFx0XCJcdTRFMjVcdTY4M0NcdTdBN0FcdTY4M0NcdUZGMUFcdTVGNTNcdTUyNERcdTU3NTdcdTRFMEVcdTRFMzRcdThGRDFcdTY1ODdcdTY3MkNcdTRFNEJcdTk1RjRcdTRFMjVcdTY4M0NcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcdTMwMDJcIlxuXHRcdFx0KVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUubm9uZSksIFwiXHU2NUUwXHU4OTgxXHU2QzQyKE5vIFJlcXVpcmUpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUuc29mdCksIFwiXHU4RjZGXHU3QTdBXHU2ODNDKFNvZnQgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUuc3RyaWN0KSwgXCJcdTRFMjVcdTY4M0NcdTdBN0FcdTY4M0MoU3RyaWN0IFNwYWNlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUoU3RyaW5nKHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGUpKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGUgPSBzdHJpbmcyU3BhY2VTdGF0ZSh2KTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNwYWNlIHN0YXRlZ3kgYmV0d2VlbiBpbmxpbmUgZm9ybXVsYSBhbmQgdGV4dFwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjggJFx1ODg0Q1x1NTE4NVx1NTE2Q1x1NUYwRiQgXHU1NDhDXHU2NTg3XHU2NzJDXHU5NUY0XHU3Njg0XHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XCIpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5ub25lKSwgXCJcdTY1RTBcdTg5ODFcdTZDNDIoTm8gUmVxdWlyZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zb2Z0KSwgXCJcdThGNkZcdTdBN0FcdTY4M0MoU29mdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zdHJpY3QpLCBcIlx1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQyhTdHJpY3QgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZShTdHJpbmcodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZSkpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZSA9IHN0cmluZzJTcGFjZVN0YXRlKHYpO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2Ugc3RyYXRlZ3kgYmV0d2VlbiBsaW5rIGFuZCB0ZXh0XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOCBbW3dpa2lsaW5rXV0gW21kbGlua10oLi4uKSBcdTU0OENcdTY1ODdcdTY3MkNcdTk1RjRcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcdTMwMDJcdTY2N0FcdTgwRkRcdTdBN0FcdTY4M0NcdTZBMjFcdTVGMEZcdTRFMEJcdTUyMTlcdTRGMUFcdTgwMDNcdTg2NTFcdThCRTVcdTk0RkVcdTYzQTVcdTU3NTdcdTc2ODRcdTY2M0VcdTc5M0FcdTUxODVcdTVCQjlcdUZGMDhcdTU5ODJ3aWtpXHU5NEZFXHU2M0E1XHU3Njg0XHU1MjJCXHU1NDBEXHVGRjA5XHU2NzY1XHU0RTBFXHU0RTM0XHU4RkQxXHU2NTg3XHU2NzJDXHU4RkRCXHU4ODRDXHU3QTdBXHU2ODNDXHUzMDAyXCIpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihcImR1bW15XCIsIFwiXHU1NDQ2XHU3QTdBXHU2ODNDKGR1bW15KVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFwic21hcnRcIiwgXCJcdTY2N0FcdTgwRkRcdTdBN0FcdTY4M0MoU21hcnQpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSA/IFwic21hcnRcIiA6IFwiZHVtbXlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLm9uQ2hhbmdlKGFzeW5jICh2OiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSA9IHYgPT0gXCJzbWFydFwiID8gdHJ1ZSA6IGZhbHNlO1xuXHRcdFx0XHRcdC8vIG5ldyBOb3RpY2UoU3RyaW5nKHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlKSk7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUubm9uZSksIFwiXHU2NUUwXHU4OTgxXHU2QzQyKE5vIFJlcXVpcmUpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUuc29mdCksIFwiXHU4RjZGXHU3QTdBXHU2ODNDKFNvZnQgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUuc3RyaWN0KSwgXCJcdTRFMjVcdTY4M0NcdTdBN0FcdTY4M0MoU3RyaWN0IFNwYWNlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUoU3RyaW5nKHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGUpKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGUgPSBzdHJpbmcyU3BhY2VTdGF0ZSh2KTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTgxRUFcdTVCOUFcdTRFNDlcdTZCNjNcdTUyMTlcdTUzM0FcdTU3NTcgKEN1c3RvbSByZWd1bGFyIGV4cHJlc3Npb25zIGJsb2NrKScgfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlVzZXIgRGVmaW5lZCBSZWdFeHAgU3dpdGNoXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1NUYwMFx1NTE3M1x1RkYwQ1x1NTMzOVx1OTE0RFx1NTIzMFx1NzY4NFx1NTE4NVx1NUJCOVx1NEUwRFx1OEZEQlx1ODg0Q1x1NjgzQ1x1NUYwRlx1NTMxNlx1RkYwQ1x1NEUxNFx1NTNFRlx1NEVFNVx1OEJCRVx1N0Y2RVx1NTMzOVx1OTE0RFx1NTIzMFx1NzY4NFx1NTE4NVx1NUJCOVx1NTc1N1x1NEUwRVx1NTE3Nlx1NEVENlx1NTE4NVx1NUJCOVx1NEU0Qlx1OTVGNFx1NzY4NFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ1N3aXRjaCkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuVXNlckRlZmluZWRSZWdTd2l0Y2ggPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwicFwiLCB7IHRleHQ6IFwiXHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHU3NkY4XHU1MTczXHU3N0U1XHU4QkM2XHVGRjBDXHU4OUMxIFwiIH0pLmNyZWF0ZUVsKFwiYVwiLCB7XG5cdFx0XHR0ZXh0OiBcIlx1MzAwQVx1OTYyRVx1NEUwMFx1NUNGMFx1RkYxQVx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1N0I4MFx1NjYwRVx1NjU1OVx1N0EwQlx1MzAwQlwiLFxuXHRcdFx0aHJlZjogXCJodHRwczovL2phdmFzY3JpcHQucnVhbnlpZmVuZy5jb20vc3RkbGliL3JlZ2V4cC5odG1sI1wiLFxuXHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoXCJwXCIsIHsgdGV4dDogXCJcdTZCNjNcdTUyMTlcdTg4NjhcdThGQkVcdTVGMEZcdTg5QzRcdTUyMTlcdTRGN0ZcdTc1MjhcdThCRjRcdTY2MEVcdTRFMEVcdTc5M0FcdTRGOEJcdUZGMUFcIiB9KS5jcmVhdGVFbChcImFcIiwge1xuXHRcdFx0dGV4dDogXCJcdTgxRUFcdTVCOUFcdTRFNDlcdTZCNjNcdTUyMTlcdTg4NjhcdThGQkVcdTVGMEZcdTg5QzRcdTUyMTlcIixcblx0XHRcdGhyZWY6IFwiaHR0cHM6Ly9naXRodWIuY29tL1lhb3podXdhL2Vhc3ktdHlwaW5nLW9ic2lkaWFuL2Jsb2IvbWFzdGVyL1VzZXJEZWZpbmVkUmVnRXhwLm1kXCIsXG5cdFx0fSk7XG5cblx0XHRjb25zdCByZWdDb250ZW50QXJlYVNldHRpbmcgPSBuZXcgU2V0dGluZyhjb250YWluZXJFbCk7XG5cdFx0cmVnQ29udGVudEFyZWFTZXR0aW5nLnNldHRpbmdFbC5zZXRBdHRyaWJ1dGUoXG5cdFx0XHRcInN0eWxlXCIsXG5cdFx0XHRcImRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1wiXG5cdFx0KTtcblx0XHRyZWdDb250ZW50QXJlYVNldHRpbmdcblx0XHRcdC5zZXROYW1lKFwiVXNlci1kZWZpbmVkIFJlZ3VsYXIgRXhwcmVzc2lvbiwgb25lIGV4cHJlc3Npb24gcGVyIGxpbmVcIilcblx0XHRcdC5zZXREZXNjKFxuXHRcdFx0XHRcIlx1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1RkYwQ1x1NTMzOVx1OTE0RFx1NTIzMFx1NzY4NFx1NTE4NVx1NUJCOVx1NEUwRFx1OEZEQlx1ODg0Q1x1NjgzQ1x1NUYwRlx1NTMxNlx1RkYwQ1x1NkJDRlx1ODg0Q1x1NEUwMFx1NEUyQVx1ODg2OFx1OEZCRVx1NUYwRlx1RkYwQ1x1ODg0Q1x1NUMzRVx1NEUwRFx1ODk4MVx1OTY4Rlx1NjEwRlx1NTJBMFx1N0E3QVx1NjgzQ1x1MzAwMlwiICtcblx0XHRcdFx0XCJcdTZCQ0ZcdTg4NENcdTY3MkJcdTVDM0UzXHU0RTJBXHU1QjU3XHU3QjI2XHU3Njg0XHU1NkZBXHU1QjlBXHU0RTNBfFx1NTQ4Q1x1NEUyNFx1NEUyQVx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1N0IyNlx1NTNGN1x1RkYwQ1x1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1N0IyNlx1NTNGN1x1NEUzQS09K1x1RkYwQ1x1NTIwNlx1NTIyQlx1NEVFM1x1ODg2OFx1NEUwRFx1ODk4MVx1NkM0Mlx1N0E3QVx1NjgzQygtKVx1RkYwQ1x1OEY2Rlx1N0E3QVx1NjgzQyg9KVx1RkYwQ1x1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQygrKVx1MzAwMlwiICtcblx0XHRcdFx0XCJcdThGRDlcdTRFMjRcdTRFMkFcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcdTdCMjZcdTUzRjdcdTUyMDZcdTUyMkJcdTRFM0FcdTUzMzlcdTkxNERcdTUzM0FcdTU3NTdcdTc2ODRcdTVERTZcdTUzRjNcdTRFMjRcdThGQjlcdTc2ODRcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcIlxuXHRcdFx0KTtcblx0XHRjb25zdCByZWdDb250ZW50QXJlYSA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChcblx0XHRcdHJlZ0NvbnRlbnRBcmVhU2V0dGluZy5jb250cm9sRWxcblx0XHQpO1xuXG5cdFx0c2V0QXR0cmlidXRlcyhyZWdDb250ZW50QXJlYS5pbnB1dEVsLCB7XG5cdFx0XHRzdHlsZTogXCJtYXJnaW4tdG9wOiAxMnB4OyB3aWR0aDogMTAwJTsgIGhlaWdodDogMzB2aDtcIixcblx0XHRcdC8vIGNsYXNzOiBcIm1zLWNzcy1lZGl0b3JcIixcblx0XHR9KTtcblx0XHRyZWdDb250ZW50QXJlYVxuXHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlVzZXJEZWZpbmVkUmVnRXhwKVxuXHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ0V4cCA9IHZhbHVlO1xuXHRcdFx0XHR0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywgeyB0ZXh0OiAnXHU2MzA3XHU1QjlBXHU2NTg3XHU0RUY2XHU0RTBEXHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2IChFeGNsdWRlIEZvbGRlcnMvRmlsZXMpJyB9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiRXhjbHVkZSBGb2xkZXJzL0ZpbGVzXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlRoaXMgcGx1Z2luIHdpbGwgcGFyc2UgZWFjaCBsaW5lIGFzIGEgZXhsdWRlIGZvbGRlciBvciBmaWxlLiBGb3IgZXhhbXBsZTogRGFpbHlOb3RlLywgRGFpbHlOb3RlL1dlZWtOb3Rlcy8sIERhaWx5Tm90ZS90ZXN0Lm1kXCIpXG5cdFx0XHQuYWRkVGV4dEFyZWEoKHRleHQpID0+XG5cdFx0XHRcdHRleHRcblx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuRXhjbHVkZUZpbGVzKVxuXHRcdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkV4Y2x1ZGVGaWxlcyA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdCk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdFeHBlcmltZW50YWwgRmVhdHVyZXMnIH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJFbmhhbmNlIENoaW5lc2UgSW5wdXQgTWV0aG9kXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NEUyRFx1NjU4N1x1OEY5M1x1NTE2NVx1NkNENVx1NEUwQlx1RkYwQ1x1NTZERVx1OEY2Nlx1OEY5M1x1NTE2NVx1ODJGMVx1NjU4N1x1NjVGNlx1ODFFQVx1NTJBOFx1NjgzQ1x1NUYwRlx1NTMxNlwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5UcnlGaXhDaGluZXNlSU0pLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlRyeUZpeENoaW5lc2VJTSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlN0cmljdCBMaW5lIGJyZWFrcyBNb2RlIEVudGVyIFR3aWNlXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NEUyNVx1NjgzQ1x1NjM2Mlx1ODg0Q1x1NzY4NFx1OEJCRVx1N0Y2RVx1NEUwQlx1RkYwQ1x1NTcyOFx1NjY2RVx1OTAxQVx1NjU4N1x1NjcyQ1x1ODg0Q1x1OEZEQlx1ODg0Q1x1NEUwMFx1NkIyMVx1NTZERVx1OEY2Nlx1NEYxQVx1NEVBN1x1NzUxRlx1NEUyNFx1NEUyQVx1NjM2Mlx1ODg0Q1x1N0IyNlwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5FbnRlclR3aWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5FbnRlclR3aWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlB1bmMgcmVjdGlmeVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTRFQzVcdTU3MjhcdThGOTNcdTUxNjVcdThGQzdcdTdBMEJcdTRFMkRcdUZGMENcdTRFMkRcdTY1ODdcdTk1RjRcdTc2ODRcdTgyRjFcdTY1ODdcdTY4MDdcdTcwQjlcdUZGMDgsLj8hXHVGRjA5XHU4MUVBXHU1MkE4XHU4RjZDXHU2MzYyXHU0RTNBXHU1MTY4XHU4OUQyXHVGRjA4XHU1M0VGXHU2NEE0XHU5NTAwXHVGRjA5XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmNSZWN0aWZ5KS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5QdW5jUmVjdGlmeSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlByaW50IGRlYnVnIGluZm8gaW4gY29uc29sZVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjhcdTYzQTdcdTUyMzZcdTUzRjBcdThGOTNcdTUxRkFcdThDMDNcdThCRDVcdTRGRTFcdTYwNkZcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVidWcpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmRlYnVnID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRidWlsZFVzZXJTZWxSZXBSdWxlU2V0dGluZyhjb250YWluZXJFbDogSFRNTERldGFpbHNFbGVtZW50KXtcblx0XHRjb250YWluZXJFbC5lbXB0eSgpO1xuICAgICAgICBjb250YWluZXJFbC5vbnRvZ2dsZSA9IGFzeW5jICgpID0+IHtcblx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJTZWxSdWxlU2V0dGluZ3NPcGVuID0gY29udGFpbmVyRWwub3Blbjtcblx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9O1xuXHRcdGNvbnN0IHN1bW1hcnkgPSBjb250YWluZXJFbC5jcmVhdGVFbChcInN1bW1hcnlcIiwge2NsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wifSk7XG5cdFx0c3VtbWFyeS5zZXRUZXh0KFwiXHU4MUVBXHU1QjlBXHU0RTQ5XHU5MDA5XHU0RTJEXHU2NTg3XHU2NzJDXHU3RjE2XHU4RjkxXHU1ODlFXHU1RjNBXHU4OUM0XHU1MjE5IChDdXN0b21pemUgU2VsZWN0aW9uIFJlcGxhY2UgUnVsZSlcIilcblxuICAgICAgICAvLyBzdW1tYXJ5LnNldEhlYWRpbmcoKS5zZXROYW1lKFwiVXNlciBkZWZpbmVkIFNlbGVjdGlvbiBSZXBsYWNlIFJ1bGVcIik7XG4gICAgICAgIC8vIHN1bW1hcnkuY3JlYXRlRGl2KFwiY29sbGFwc2VyXCIpLmNyZWF0ZURpdihcImhhbmRsZVwiKTtcblxuXHRcdGNvbnN0IHNlbGVjdGlvblJ1bGVTZXR0aW5nID0gbmV3IFNldHRpbmcoY29udGFpbmVyRWwpO1xuXHRcdHNlbGVjdGlvblJ1bGVTZXR0aW5nXG5cdFx0XHQuc2V0TmFtZShcIlNlbGVjdGlvbiBSZXBsZWNlIFJ1bGVcIilcblxuXHRcdGNvbnN0IHJlcGxhY2VSdWxlVHJpZ2dlciA9IG5ldyBUZXh0Q29tcG9uZW50KHNlbGVjdGlvblJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cmVwbGFjZVJ1bGVUcmlnZ2VyLnNldFBsYWNlaG9sZGVyKFwiVHJpZ2dyIFN5bWJvbFwiKTtcblxuXHRcdGNvbnN0IHJlcGxhY2VMZWZ0U3RyaW5nID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KHNlbGVjdGlvblJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cmVwbGFjZUxlZnRTdHJpbmcuc2V0UGxhY2Vob2xkZXIoXCJOZXcgTGVmdCBTaWRlIFN0cmluZ1wiKTtcblxuXHRcdGNvbnN0IHJlcGxhY2VSaWdodFN0cmluZyA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChzZWxlY3Rpb25SdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHJlcGxhY2VSaWdodFN0cmluZy5zZXRQbGFjZWhvbGRlcihcIk5ldyBSaWdodCBTaWRlIFN0cmluZ1wiKTtcblxuXHRcdHNlbGVjdGlvblJ1bGVTZXR0aW5nXG5cdFx0XHQuYWRkQnV0dG9uKChidXR0b24pID0+IHtcblx0XHRcdFx0YnV0dG9uXG5cdFx0XHRcdFx0LnNldEJ1dHRvblRleHQoXCIrXCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJBZGQgUnVsZVwiKVxuXHRcdFx0XHRcdC5vbkNsaWNrKGFzeW5jIChidXR0b25FbDogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRsZXQgdHJpZ2dlciA9IHJlcGxhY2VSdWxlVHJpZ2dlci5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0bGV0IGxlZnQgPSByZXBsYWNlTGVmdFN0cmluZy5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0bGV0IHJpZ2h0ID0gcmVwbGFjZVJpZ2h0U3RyaW5nLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAodHJpZ2dlciAmJiAobGVmdCB8fCByaWdodCkpIHtcblx0XHRcdFx0XHRcdFx0aWYodHJpZ2dlci5sZW5ndGg+MSl7XG5cdFx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIklubHZhbGlkIHRyaWdnZXIsIHRyaWdnZXIgbXVzdCBiZSBhIHN5bWJvbCBvZiBsZW5ndGggMVwiKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucGx1Z2luLmFkZFVzZXJTZWxlY3Rpb25SZXBSdWxlKHRyaWdnZXIsIGxlZnQsIHJpZ2h0KSl7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwid2FybmluZyEgVHJpZ2dlciBcIiArIHRyaWdnZXIgKyBcIiBpcyBhbHJlYWR5IGV4aXN0IVwiKVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIm1pc3NpbmcgaW5wdXRcIik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdC8vIGNvbnN0IHNlbFJlcFJ1bGVDb250YWluZXIgPSBjb250YWluZXJFbC5jcmVhdGVFbChcImRpdlwiKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHRyaWdnZXIgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXJbaV07XG5cdFx0XHRsZXQgbGVmdF9zID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpXS5sZWZ0O1xuXHRcdFx0bGV0IHJpZ2h0X3MgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2ldLnJpZ2h0O1xuXHRcdFx0bGV0IHNob3dTdHIgPSBcIlRyaWdnZXI6IFwiICsgdHJpZ2dlciArIFwiIFx1MjE5MiBcIiArIHNob3dTdHJpbmcobGVmdF9zKSArIFwic2VsZWN0ZWRcIiArIHNob3dTdHJpbmcocmlnaHRfcyk7XG5cdFx0XHQvLyBjb25zdCBzZXR0aW5nSXRlbSA9IHNlbFJlcFJ1bGVDb250YWluZXIuY3JlYXRlRWwoXCJkaXZcIik7XG5cdFx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdFx0LnNldE5hbWUoc2hvd1N0cilcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJnZWFyXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkVkaXQgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRuZXcgU2VsZWN0UnVsZUVkaXRNb2RhbCh0aGlzLmFwcCwgdHJpZ2dlcixsZWZ0X3MsIHJpZ2h0X3MsIGFzeW5jIChuZXdfbGVmdCwgbmV3X3JpZ2h0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4udXBkYXRlVXNlclNlbGVjdGlvblJlcFJ1bGUoaSwgbmV3X2xlZnQsIG5ld19yaWdodCk7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH0pLm9wZW4oKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRJY29uKFwidHJhc2hcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiUmVtb3ZlIHJ1bGVcIilcblx0XHRcdFx0XHRcdC5vbkNsaWNrKGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uZGVsZXRlVXNlclNlbGVjdGlvblJlcFJ1bGUoaSk7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pO1xuXHRcdH1cblxuXG5cdH1cblxuXHRidWlsZFVzZXJEZWxldGVSdWxlU2V0dGluZyhjb250YWluZXJFbDogSFRNTERldGFpbHNFbGVtZW50KXtcblx0XHRjb250YWluZXJFbC5lbXB0eSgpO1xuICAgICAgICBjb250YWluZXJFbC5vbnRvZ2dsZSA9IGFzeW5jICgpID0+IHtcblx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJEZWxSdWxlU2V0dGluZ3NPcGVuID0gY29udGFpbmVyRWwub3Blbjtcblx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9O1xuXHRcdGNvbnN0IHN1bW1hcnkgPSBjb250YWluZXJFbC5jcmVhdGVFbChcInN1bW1hcnlcIiwge2NsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wifSk7XG5cdFx0c3VtbWFyeS5zZXRUZXh0KFwiXHU4MUVBXHU1QjlBXHU0RTQ5XHU1MjIwXHU5NjY0XHU3RjE2XHU4RjkxXHU1ODlFXHU1RjNBXHU4OUM0XHU1MjE5IChDdXN0b21pemUgRGVsZXRlIFJ1bGUpXCIpXG5cblx0XHRjb25zdCBkZWxldGVSdWxlU2V0dGluZyA9IG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKTtcblx0XHRkZWxldGVSdWxlU2V0dGluZ1xuXHRcdFx0LnNldE5hbWUoXCJEZWxldGUgUnVsZVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTg5QzRcdTUyMTlcdUZGMUFcdTc1Mjh8XHU0RUUzXHU4ODY4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXHVGRjBDXHU1RkM1XHU5ODdCXHU1MzA1XHU1NDJCXHU1MTQ5XHU2ODA3XHUzMDAyIFRpcHM6IFVzaW5nIHwgdG8gaW5kaWNhdGUgdGhlIGN1cnNvciBwb3NpdGlvbi5cIilcblxuXHRcdGNvbnN0IHBhdHRlcm5CZWZvcmUgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoZGVsZXRlUnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRwYXR0ZXJuQmVmb3JlLnNldFBsYWNlaG9sZGVyKFwiQmVmb3JlIERlbGV0ZVwiKTtcblxuXHRcdGNvbnN0IHBhdHRlcm5BZnRlciA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChkZWxldGVSdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHBhdHRlcm5BZnRlci5zZXRQbGFjZWhvbGRlcihcIk5ldyBQYXR0ZXJuXCIpO1xuXG5cdFx0ZGVsZXRlUnVsZVNldHRpbmdcblx0XHRcdC5hZGRCdXR0b24oKGJ1dHRvbikgPT4ge1xuXHRcdFx0XHRidXR0b25cblx0XHRcdFx0XHQuc2V0QnV0dG9uVGV4dChcIitcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkFkZCBSdWxlXCIpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKGJ1dHRvbkVsOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdGxldCBiZWZvcmUgPSBwYXR0ZXJuQmVmb3JlLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRsZXQgYWZ0ZXIgPSBwYXR0ZXJuQWZ0ZXIuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGlmIChiZWZvcmUgJiYgYWZ0ZXIpIHtcblx0XHRcdFx0XHRcdFx0bGV0IHJlZ1J1bGUgPSAvXFx8L2c7XG5cdFx0XHRcdFx0XHRcdGlmKGJlZm9yZS5zZWFyY2gocmVnUnVsZSk9PS0xfHxhZnRlci5zZWFyY2gocmVnUnVsZSk9PS0xKXtcblx0XHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwiSW5sdmFsaWQgdHJpZ2dlciwgcGF0dGVybiBtdXN0IGNvbnRhaW4gc3ltYm9sIFxcfCB3aGljaCBpbmRpY2F0ZSBjdXJzb3IgcG9zaXRpb25cIik7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uYWRkVXNlckRlbGV0ZVJ1bGUoYmVmb3JlLCBhZnRlcik7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwibWlzc2luZyBpbnB1dFwiKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0Lmxlbmd0aDsgaSsrKXtcblx0XHRcdGxldCBiZWZvcmUgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0W2ldWzBdO1xuXHRcdFx0bGV0IGFmdGVyID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdFtpXVsxXTtcblx0XHRcdGxldCBzaG93U3RyID0gXCJcXFwiXCIgKyBzaG93U3RyaW5nKGJlZm9yZSkgKyBcIlxcXCIgIGRlbGV0ZS5iYWNrd2FyZHMgIFx1MjE5MiBcXFwiXCIrIHNob3dTdHJpbmcoYWZ0ZXIpK1wiXFxcIlwiOyBcblx0XHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0XHQuc2V0TmFtZShzaG93U3RyKVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcImdlYXJcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiRWRpdCBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdG5ldyBFZGl0Q29udmVydFJ1bGVNb2RhbCh0aGlzLmFwcCwgUnVsZVR5cGUuZGVsZXRlLCBiZWZvcmUsIGFmdGVyLCBhc3luYyAobmV3X2JlZm9yZSwgbmV3X2FmdGVyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4udXBkYXRlVXNlckRlbGV0ZVJ1bGUoaSwgbmV3X2JlZm9yZSwgbmV3X2FmdGVyKTtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fSkub3BlbigpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSlcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJ0cmFzaFwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJSZW1vdmUgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5kZWxldGVVc2VyRGVsZXRlUnVsZShpKTtcblx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSk7XG5cdFx0fVxuXG5cdH1cblxuXHRidWlsZFVzZXJDb252ZXJ0UnVsZVNldHRpbmcoY29udGFpbmVyRWw6IEhUTUxEZXRhaWxzRWxlbWVudCl7XG5cdFx0Y29udGFpbmVyRWwuZW1wdHkoKTtcbiAgICAgICAgY29udGFpbmVyRWwub250b2dnbGUgPSBhc3luYyAoKSA9PiB7XG5cdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyQ3Z0UnVsZVNldHRpbmdzT3BlbiA9IGNvbnRhaW5lckVsLm9wZW47XG5cdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgfTtcblx0XHRjb25zdCBzdW1tYXJ5ID0gY29udGFpbmVyRWwuY3JlYXRlRWwoXCJzdW1tYXJ5XCIsIHtjbHM6IFwiZWFzeXR5cGluZy1uZXN0ZWQtc2V0dGluZ3NcIn0pO1xuXHRcdHN1bW1hcnkuc2V0VGV4dChcIlx1ODFFQVx1NUI5QVx1NEU0OVx1N0YxNlx1OEY5MVx1OEY2Q1x1NjM2Mlx1ODlDNFx1NTIxOSAoQ3VzdG9taXplIENvbnZlcnQgUnVsZSlcIilcblxuXHRcdGNvbnN0IGNvbnZlcnRSdWxlU2V0dGluZyA9IG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKTtcblx0XHRjb252ZXJ0UnVsZVNldHRpbmdcblx0XHRcdC5zZXROYW1lKFwiQ29udmVydCBSdWxlXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1ODlDNFx1NTIxOVx1RkYxQVx1NzUyOHxcdTRFRTNcdTg4NjhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcdUZGMENcdTVGQzVcdTk4N0JcdTUzMDVcdTU0MkJcdTUxNDlcdTY4MDdcdTMwMDIgVGlwczogVXNpbmcgfCB0byBpbmRpY2F0ZSB0aGUgY3Vyc29yIHBvc2l0aW9uLlwiKVxuXG5cdFx0Y29uc3QgcGF0dGVybkJlZm9yZSA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChjb252ZXJ0UnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRwYXR0ZXJuQmVmb3JlLnNldFBsYWNlaG9sZGVyKFwiQmVmb3JlIENvbnZlcnRcIik7XG5cblx0XHRjb25zdCBwYXR0ZXJuQWZ0ZXIgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoY29udmVydFJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cGF0dGVybkFmdGVyLnNldFBsYWNlaG9sZGVyKFwiTmV3IFBhdHRlcm5cIik7XG5cblx0XHRjb252ZXJ0UnVsZVNldHRpbmdcblx0XHRcdC5hZGRCdXR0b24oKGJ1dHRvbikgPT4ge1xuXHRcdFx0XHRidXR0b25cblx0XHRcdFx0XHQuc2V0QnV0dG9uVGV4dChcIitcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkFkZCBSdWxlXCIpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKGJ1dHRvbkVsOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdGxldCBiZWZvcmUgPSBwYXR0ZXJuQmVmb3JlLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRsZXQgYWZ0ZXIgPSBwYXR0ZXJuQWZ0ZXIuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGlmIChiZWZvcmUgJiYgYWZ0ZXIpIHtcblx0XHRcdFx0XHRcdFx0bGV0IHJlZ1J1bGUgPSAvXFx8L2c7XG5cdFx0XHRcdFx0XHRcdGlmKGJlZm9yZS5zZWFyY2gocmVnUnVsZSk9PS0xfHxhZnRlci5zZWFyY2gocmVnUnVsZSk9PS0xKXtcblx0XHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwiSW5sdmFsaWQgdHJpZ2dlciwgcGF0dGVybiBtdXN0IGNvbnRhaW4gc3ltYm9sIFxcfCB3aGljaCBpbmRpY2F0ZSBjdXJzb3IgcG9zaXRpb25cIik7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uYWRkVXNlckNvbnZlcnRSdWxlKGJlZm9yZSwgYWZ0ZXIpO1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIm1pc3NpbmcgaW5wdXRcIik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QubGVuZ3RoOyBpKyspe1xuXHRcdFx0bGV0IGJlZm9yZSA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0W2ldWzBdO1xuXHRcdFx0bGV0IGFmdGVyID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3RbaV1bMV07XG5cdFx0XHRsZXQgc2hvd1N0ciA9IFwiXFxcIlwiICsgc2hvd1N0cmluZyhiZWZvcmUpICsgXCJcXFwiICBhdXRvIGNvbnZlcnQgdG8gXFxcIlwiKyBzaG93U3RyaW5nKGFmdGVyKStcIlxcXCJcIjsgXG5cdFx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdFx0LnNldE5hbWUoc2hvd1N0cilcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJnZWFyXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkVkaXQgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRuZXcgRWRpdENvbnZlcnRSdWxlTW9kYWwodGhpcy5hcHAsIFJ1bGVUeXBlLmNvbnZlcnQsIGJlZm9yZSwgYWZ0ZXIsIGFzeW5jIChuZXdfYmVmb3JlLCBuZXdfYWZ0ZXIpID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi51cGRhdGVVc2VyQ29udmVydFJ1bGUoaSwgbmV3X2JlZm9yZSwgbmV3X2FmdGVyKTtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fSkub3BlbigpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSlcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJ0cmFzaFwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJSZW1vdmUgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5kZWxldGVVc2VyQ29udmVydFJ1bGUoaSk7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG59XG5cblxuZnVuY3Rpb24gc2V0QXR0cmlidXRlcyhlbGVtZW50OiBhbnksIGF0dHJpYnV0ZXM6IGFueSkge1xuXHRmb3IgKGxldCBrZXkgaW4gYXR0cmlidXRlcykge1xuXHRcdGVsZW1lbnQuc2V0QXR0cmlidXRlKGtleSwgYXR0cmlidXRlc1trZXldKTtcblx0fVxufVxuXG5cbmV4cG9ydCBjbGFzcyBTZWxlY3RSdWxlRWRpdE1vZGFsIGV4dGVuZHMgTW9kYWwge1xuXHR0cmlnZ2VyOiBzdHJpbmc7XG5cdG9sZF9sZWZ0OiBzdHJpbmc7XG5cdG9sZF9yaWdodDogc3RyaW5nO1xuXHRuZXdfbGVmdDogc3RyaW5nO1xuXHRuZXdfcmlnaHQ6IHN0cmluZztcblx0b25TdWJtaXQ6IChuZXdfbGVmdDogc3RyaW5nLCBuZXdfcmlnaHQ6c3RyaW5nKSA9PiB2b2lkO1xuXG5cdGNvbnN0cnVjdG9yKGFwcDogQXBwLCB0cmlnZ2VyOiBzdHJpbmcsIGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZywgb25TdWJtaXQ6IChuZXdfbGVmdDogc3RyaW5nLCBuZXdfcmlnaHQ6c3RyaW5nKSA9PiB2b2lkKSB7XG5cdFx0c3VwZXIoYXBwKTtcblx0XHR0aGlzLnRyaWdnZXIgPSB0cmlnZ2VyO1xuXHRcdHRoaXMub2xkX2xlZnQgPSBsZWZ0O1xuXHRcdHRoaXMub2xkX3JpZ2h0ID0gcmlnaHQ7XG5cdFx0dGhpcy5uZXdfbGVmdCA9IGxlZnQ7XG5cdFx0dGhpcy5uZXdfcmlnaHQgPSByaWdodDtcblxuXHRcdHRoaXMub25TdWJtaXQgPSBvblN1Ym1pdDtcblx0fVxuXG5cdG9uT3BlbigpIHtcblx0XHRjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcblxuXHRcdGNvbnRlbnRFbC5jcmVhdGVFbChcImgxXCIsIHsgdGV4dDogXCJFZGl0IFNlbGVjdGlvbiBSZXBsYWNlIFJ1bGVcIiB9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5zZXROYW1lKFwiVHJpZ2dlclwiKVxuXHRcdFx0LmFkZFRleHQoKHRleHQpID0+IHtcblx0XHRcdFx0dGV4dC5zZXRWYWx1ZSh0aGlzLnRyaWdnZXIpO1xuXHRcdFx0XHR0ZXh0LnNldERpc2FibGVkKHRydWUpO1xuXHRcdFx0fSlcblx0XHRcblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuc2V0TmFtZShcIkxlZnRcIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT4ge1xuXHRcdFx0XHR0ZXh0LnNldFZhbHVlKHRoaXMub2xkX2xlZnQpO1xuXHRcdFx0XHR0ZXh0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubmV3X2xlZnQgPSB2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuc2V0TmFtZShcIlJpZ2h0XCIpXG5cdFx0XHQuYWRkVGV4dEFyZWEoKHRleHQpID0+IHtcblx0XHRcdFx0dGV4dC5zZXRWYWx1ZSh0aGlzLm9sZF9yaWdodCk7XG5cdFx0XHRcdHRleHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5uZXdfcmlnaHQgPSB2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSk7XG5cblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5hZGRCdXR0b24oKGJ0bikgPT5cblx0XHRcdFx0YnRuXG5cdFx0XHRcdFx0LnNldEJ1dHRvblRleHQoXCJVcGRhdGVcIilcblx0XHRcdFx0XHQuc2V0Q3RhKClcblx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHR0aGlzLm9uU3VibWl0KHRoaXMubmV3X2xlZnQsIHRoaXMubmV3X3JpZ2h0KTtcblx0XHRcdFx0XHR9KSk7XG5cdH1cblxuXHRvbkNsb3NlKCkge1xuXHRcdGxldCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcblx0XHRjb250ZW50RWwuZW1wdHkoKTtcblx0fVxufVxuXG5cblxuZXhwb3J0IGNsYXNzIEVkaXRDb252ZXJ0UnVsZU1vZGFsIGV4dGVuZHMgTW9kYWwge1xuXHR0eXBlOiBSdWxlVHlwZTtcblx0b2xkX2JlZm9yZTogc3RyaW5nO1xuXHRvbGRfYWZ0ZXI6IHN0cmluZztcblx0bmV3X2JlZm9yZTogc3RyaW5nO1xuXHRuZXdfYWZ0ZXI6IHN0cmluZztcblx0b25TdWJtaXQ6IChuZXdfYmVmb3JlOiBzdHJpbmcsIG5ld19hZnRlcjpzdHJpbmcpID0+IHZvaWQ7XG5cblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIHR5cGU6IFJ1bGVUeXBlLCBiZWZvcmU6IHN0cmluZywgYWZ0ZXI6IHN0cmluZywgb25TdWJtaXQ6IChuZXdfYmVmb3JlOiBzdHJpbmcsIG5ld19hZnRlcjpzdHJpbmcpID0+IHZvaWQpIHtcblx0XHRzdXBlcihhcHApO1xuXHRcdHRoaXMudHlwZSA9IHR5cGU7XG5cdFx0dGhpcy5vbGRfYmVmb3JlID0gYmVmb3JlO1xuXHRcdHRoaXMub2xkX2FmdGVyID0gYWZ0ZXI7XG5cdFx0dGhpcy5uZXdfYmVmb3JlID0gYmVmb3JlO1xuXHRcdHRoaXMubmV3X2FmdGVyID0gYWZ0ZXI7XG5cblx0XHR0aGlzLm9uU3VibWl0ID0gb25TdWJtaXQ7XG5cdH1cblxuXHRvbk9wZW4oKSB7XG5cdFx0Y29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG5cblx0XHRjb250ZW50RWwuY3JlYXRlRWwoXCJoMVwiLCB7IHRleHQ6IFwiRWRpdCBcIiArIHRoaXMudHlwZX0pO1xuXHRcdFxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5zZXROYW1lKFwiT2xkIFBhdHRlcm5cIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT4ge1xuXHRcdFx0XHR0ZXh0LnNldFZhbHVlKHRoaXMub2xkX2JlZm9yZSk7XG5cdFx0XHRcdHRleHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5uZXdfYmVmb3JlID0gdmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LnNldE5hbWUoXCJOZXcgUGF0dGVyblwiKVxuXHRcdFx0LmFkZFRleHRBcmVhKCh0ZXh0KSA9PiB7XG5cdFx0XHRcdHRleHQuc2V0VmFsdWUodGhpcy5vbGRfYWZ0ZXIpO1xuXHRcdFx0XHR0ZXh0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubmV3X2FmdGVyID0gdmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdH0pO1xuXG5cblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuYWRkQnV0dG9uKChidG4pID0+XG5cdFx0XHRcdGJ0blxuXHRcdFx0XHRcdC5zZXRCdXR0b25UZXh0KFwiVXBkYXRlXCIpXG5cdFx0XHRcdFx0LnNldEN0YSgpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuY2hlY2tDb252ZXJ0UGF0dGVyblN0cmluZyh0aGlzLm5ld19iZWZvcmUsIHRoaXMubmV3X2FmdGVyKSlcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGhpcy5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLm9uU3VibWl0KHRoaXMubmV3X2JlZm9yZSwgdGhpcy5uZXdfYWZ0ZXIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIkludmFsaWQgcGF0dGVybiBzdHJpbmchXCIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0fSkpO1xuXHR9XG5cblx0Y2hlY2tDb252ZXJ0UGF0dGVyblN0cmluZyhiZWZvcmU6IHN0cmluZywgYWZ0ZXI6c3RyaW5nKTpib29sZWFue1xuXHRcdGxldCByZWdSdWxlID0gL1xcfC9nO1xuXHRcdGlmKGJlZm9yZS5zZWFyY2gocmVnUnVsZSk9PS0xIHx8IGFmdGVyLnNlYXJjaChyZWdSdWxlKT09LTEpIHJldHVybiBmYWxzZTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdG9uQ2xvc2UoKSB7XG5cdFx0bGV0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuXHRcdGNvbnRlbnRFbC5lbXB0eSgpO1xuXHR9XG59XG5cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBNkg7QUFDN0gsbUJBQXVGO0FBQ3ZGLG9CQUFxQzs7O0FDRnJDLHNCQUFzQjs7O0FDT2YscUJBQXFCLEtBQVUsUUFBZTtBQUNwRCxNQUFJLE9BQU8sSUFBSSxPQUFPLE1BQU07QUFDNUIsU0FBTyxFQUFDLE1BQU0sS0FBSyxTQUFTLEdBQUcsSUFBSSxTQUFTLEtBQUssS0FBSTtBQUN0RDtBQUVPLDZCQUE2QixJQUF5QjtBQUM1RCxNQUFJLG1CQUE0QjtBQUFBLElBQUM7QUFBQSxJQUMzQjtBQUFBLElBQXNCO0FBQUEsSUFBYztBQUFBLElBQWU7QUFBQSxJQUFjO0FBQUEsSUFBa0I7QUFBQSxJQUNuRjtBQUFBLElBQW9CO0FBQUEsSUFBa0I7QUFBQSxJQUFtQjtBQUFBLElBQWM7QUFB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 +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21haW4udHMiLCAic3JjL2NvcmUudHMiLCAic3JjL3V0aWxzLnRzIiwgInNyYy9zZXR0aW5ncy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQXBwLCBFZGl0b3IsIE1hcmtkb3duVmlldywgTW9kYWwsIE5vdGljZSwgUGx1Z2luLCBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nLCBXb3Jrc3BhY2UsIFdvcmtzcGFjZUxlYWYsIFRGaWxlIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHsgRWRpdG9yU3RhdGUsIEV4dGVuc2lvbiwgU3RhdGVGaWVsZCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgVGV4dCB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IFNlbGVjdGlvblJhbmdlLCBQcmVjIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBFYXN5VHlwaW5nU2V0dGluZ1RhYiwgRWFzeVR5cGluZ1NldHRpbmdzLCBERUZBVUxUX1NFVFRJTkdTLCBQYWlyU3RyaW5nLCBDb252ZXJ0UnVsZSB9IGZyb20gXCIuL3NldHRpbmdzXCJcbmltcG9ydCB7IEVkaXRvclZpZXcsIGtleW1hcCwgVmlld1VwZGF0ZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHsgcG9zVG9PZmZzZXQsIG9mZnNldFRvUG9zLCBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdCwgZ2V0VHlwZVN0ck9mVHJhbnNhYyB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBMaW5lRm9ybWF0ZXIsIGdldFBvc0xpbmVUeXBlLCBnZXRQb3NMaW5lVHlwZTIsIExpbmVUeXBlIH0gZnJvbSAnLi9jb3JlJ1xuaW1wb3J0IHsgc3ludGF4VHJlZSB9IGZyb20gXCJAY29kZW1pcnJvci9sYW5ndWFnZVwiO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lUeXBpbmdQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuXHRzZXR0aW5nczogRWFzeVR5cGluZ1NldHRpbmdzO1xuXHRzZWxlY3Rpb25SZXBsYWNlTWFwSW5pdGFsRGF0YTogW3N0cmluZywgUGFpclN0cmluZ11bXTtcblx0U2VsZWN0aW9uUmVwbGFjZU1hcDogTWFwPHN0cmluZywgUGFpclN0cmluZz47XG5cdFN5bWJvbFBhaXJzTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXHRoYWxmVG9GdWxsU3ltYm9sTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXHRCYXNpY0NvbnZSdWxlczogQ29udmVydFJ1bGVbXTtcblx0RlcySFdTeW1ib2xSdWxlczogQ29udmVydFJ1bGVbXTtcblx0Rm9ybWF0ZXI6IExpbmVGb3JtYXRlcjtcblx0SW50cmluc2ljRGVsZXRlUnVsZXM6IENvbnZlcnRSdWxlW107XG5cdEludHJpbnNpY0F1dG9QYWlyUnVsZXNQYXRjaDogQ29udmVydFJ1bGVbXTtcblx0Q3VyQWN0aXZlTWFya2Rvd246IHN0cmluZztcblxuXHRVc2VyRGVsZXRlUnVsZXM6IENvbnZlcnRSdWxlW107XG5cdFVzZXJDb252ZXJ0UnVsZXM6IENvbnZlcnRSdWxlW107XG5cdGxhbmc6IHN0cmluZztcblxuXHRjb21wb3NlX2JlZ2luX3BvczogbnVtYmVyO1xuXHRjb21wb3NlX2VuZF9wb3M6IG51bWJlcjtcblx0Y29tcG9zZV9uZWVkX2hhbmRsZTogYm9vbGVhbjtcblxuXG5cdGFzeW5jIG9ubG9hZCgpIHtcblx0XHRhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xuXHRcdHRoaXMuc2VsZWN0aW9uUmVwbGFjZU1hcEluaXRhbERhdGEgPSBbXG5cdFx0XHRbXCJcdTMwMTBcIiwgeyBsZWZ0OiBcIltcIiwgcmlnaHQ6IFwiXVwiIH1dLCBbXCJcdUZGRTVcIiwgeyBsZWZ0OiBcIiRcIiwgcmlnaHQ6IFwiJFwiIH1dLCBbXCJcdTAwQjdcIiwgeyBsZWZ0OiBcImBcIiwgcmlnaHQ6IFwiYFwiIH1dLFxuXHRcdFx0W1wiXHUzMDBBXCIsIHsgbGVmdDogXCJcdTMwMEFcIiwgcmlnaHQ6IFwiXHUzMDBCXCIgfV0sIFtcIlx1MjAxQ1wiLCB7IGxlZnQ6IFwiXHUyMDFDXCIsIHJpZ2h0OiBcIlx1MjAxRFwiIH1dLCBbXCJcdTIwMURcIiwgeyBsZWZ0OiBcIlx1MjAxQ1wiLCByaWdodDogXCJcdTIwMURcIiB9XSwgW1wiXHVGRjA4XCIsIHsgbGVmdDogXCJcdUZGMDhcIiwgcmlnaHQ6IFwiXHVGRjA5XCIgfV0sXG5cdFx0XHRbXCI8XCIsIHsgbGVmdDogXCI8XCIsIHJpZ2h0OiBcIj5cIiB9XVxuXHRcdF07XG5cdFx0dGhpcy5yZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKTtcblx0XHR0aGlzLlN5bWJvbFBhaXJzTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblx0XHRsZXQgU3ltYm9sUGFpcnMgPSBbXCJcdTMwMTBcdTMwMTFcIiwgXCJcdUZGMDhcdUZGMDlcIiwgXCJcdTMwMEFcdTMwMEJcIiwgXCJcdTIwMUNcdTIwMURcIiwgXCJcdTIwMThcdTIwMTlcIiwgXCJcdTMwMENcdTMwMERcIiwgXCJcdTMwMEVcdTMwMEZcIl1cblx0XHRmb3IgKGxldCBwYWlyU3RyIG9mIFN5bWJvbFBhaXJzKSB0aGlzLlN5bWJvbFBhaXJzTWFwLnNldChwYWlyU3RyLmNoYXJBdCgwKSwgcGFpclN0ci5jaGFyQXQoMSkpO1xuXG5cdFx0dGhpcy5oYWxmVG9GdWxsU3ltYm9sTWFwID0gbmV3IE1hcChbXG5cdFx0XHRbXCIuXCIsIFwiXHUzMDAyXCJdLFxuXHRcdFx0W1wiLFwiLCBcIlx1RkYwQ1wiXSxcblx0XHRcdFsnPycsICdcdUZGMUYnXSxcblx0XHRcdFsnIScsICdcdUZGMDEnXVxuXHRcdF0pO1xuXG5cdFx0bGV0IEJhc2ljQ29udlJ1bGVTdHJpbmdMaXN0OiBBcnJheTxbc3RyaW5nLCBzdHJpbmddPiA9IFtbJ1x1MDBCN1x1MDBCN3wnLCAnYHxgJ10sIFtcImBcdTAwQjd8YFwiLCBcImBgYHxcXG5gYGBcIl0sXG5cdFx0W1wiXHUzMDEwXHUzMDEwfFx1MzAxMVwiLCBcIltbfF1dXCJdLCBbJ1x1MzAxMFx1MzAxMHwnLCBcIltbfF1dXCJdLCBbJ1x1RkZFNVx1RkZFNXwnLCAnJHwkJ10sIFsnJFx1RkZFNXwkJywgXCIkJFxcbnxcXG4kJFwiXSwgW1wiJCR8JFwiLCBcIiQkXFxufFxcbiQkXCJdLCBbJyQkfCcsIFwiJHwkXCJdLFxuXHRcdFtcIj5cdTMwMEJ8XCIsIFwiPj58XCJdLCBbJ1xcblx1MzAwQnwnLCBcIlxcbj58XCJdLCBbXCIgXHUzMDBCfFwiLCBcIiA+fFwiXSwgW1wiXFxuXHUzMDAxfFwiLCBcIlxcbi98XCJdXTtcblx0XHR0aGlzLkJhc2ljQ29udlJ1bGVzID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QoQmFzaWNDb252UnVsZVN0cmluZ0xpc3QpO1xuXHRcdGxldCBGVzJIV1N5bWJvbFJ1bGVzU3RyTGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbW1wiXHUzMDAyXHUzMDAyfFwiLCBcIi58XCJdLCBbXCJcdUZGMDFcdUZGMDF8XCIsIFwiIXxcIl0sIFtcIlx1RkYxQlx1RkYxQnxcIiwgXCI7fFwiXSwgW1wiXHVGRjBDXHVGRjBDfFwiLCBcIix8XCJdLFxuXHRcdFtcIlx1RkYxQVx1RkYxQXxcIiwgXCI6fFwiXSwgWydcdUZGMUZcdUZGMUZ8JywgJz98J10sIFsnXHVGRjA4XHVGRjA4fFx1RkYwOScsIFwiKHwpXCJdLCBbJ1x1RkYwOFx1RkYwOHwnLCAnKHwpJ10sIFtcIlx1MjAxQ1x1MjAxQ3xcdTIwMURcIiwgXCJcXFwifFxcXCJcIl0sIFtcIlx1MjAxQ1x1MjAxRHxcdTIwMURcIiwgXCJcXFwifFxcXCJcIl0sXG5cdFx0W1wiXHUzMDBCXHUzMDBCfFwiLCBcIj58XCJdLCBbXCJcdTMwMEFcdTMwMEF8XHUzMDBCXCIsIFwiPHxcIl0sIFsnXHUzMDBBXHUzMDBBfCcsIFwiPHxcIl1dO1xuXHRcdHRoaXMuRlcySFdTeW1ib2xSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KEZXMkhXU3ltYm9sUnVsZXNTdHJMaXN0KTtcblxuXHRcdGxldCBEZWxldGVSdWxlc1N0ckxpc3Q6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+ID0gW1tcIiR8JFwiLCBcInxcIl0sIFsnYGBgfFxcbmBgYCcsICd8J10sIFsnPT18PT0nLCAnfCddLCBbJyQkXFxufFxcbiQkJywgXCJ8XCJdXTtcblx0XHR0aGlzLkludHJpbnNpY0RlbGV0ZVJ1bGVzID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QoRGVsZXRlUnVsZXNTdHJMaXN0KTtcblxuXHRcdC8vIGxldFxuXHRcdGxldCBhdXRvUGFpclJ1bGVzUGF0Y2hTdHJMaXN0OiBBcnJheTxbc3RyaW5nLCBzdHJpbmddPiA9IFtbXCJcdTMwMTBcdTMwMTF8XHUzMDExXCIsIFwiXHUzMDEwXHUzMDExfFwiXSwgW1wiXHVGRjA4XHVGRjA5fFx1RkYwOVwiLCBcIlx1RkYwOFx1RkYwOXxcIl0sXG5cdFx0W1wiPD58PlwiLCBcIjw+fFwiXSwgW1wiXHUzMDBBXHUzMDBCfFx1MzAwQlwiLCBcIlx1MzAwQVx1MzAwQnxcIl0sIFtcIlx1MzAwQ1x1MzAwRHxcdTMwMERcIiwgXCJcdTMwMENcdTMwMER8XCJdLCBbXCJcdTMwMEVcdTMwMEZ8XHUzMDBGXCIsIFwiXHUzMDBFXHUzMDBGfFwiXVxuXHRcdF07XG5cdFx0dGhpcy5JbnRyaW5zaWNBdXRvUGFpclJ1bGVzUGF0Y2ggPSBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdChhdXRvUGFpclJ1bGVzUGF0Y2hTdHJMaXN0KTtcblxuXHRcdHRoaXMucmVmcmVzaFVzZXJEZWxldGVSdWxlKCk7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckNvbnZlcnRSdWxlKCk7XG5cblx0XHR0aGlzLkN1ckFjdGl2ZU1hcmtkb3duID0gXCJcIjtcblxuXHRcdHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXG5cdFx0dGhpcy5Gb3JtYXRlciA9IG5ldyBMaW5lRm9ybWF0ZXIoKTtcblxuXHRcdHRoaXMucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oW1xuXHRcdFx0RWRpdG9yU3RhdGUudHJhbnNhY3Rpb25GaWx0ZXIub2YodGhpcy50cmFuc2FjdGlvbkZpbHRlclBsdWdpbiksXG5cdFx0XHRFZGl0b3JWaWV3LnVwZGF0ZUxpc3RlbmVyLm9mKHRoaXMudmlld1VwZGF0ZVBsdWdpbiksXG5cdFx0XHRQcmVjLmhpZ2hlc3QoRWRpdG9yVmlldy5kb21FdmVudEhhbmRsZXJzKHtcblx0XHRcdFx0XCJrZXl1cFwiOiB0aGlzLm9uS2V5dXBcblx0XHRcdH0pKVxuXHRcdF0pO1xuXG5cblx0XHR0aGlzLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFByZWMuaGlnaGVzdChrZXltYXAub2YoW1xuXHRcdFx0e1xuXHRcdFx0XHRrZXk6IFwiVGFiXCIsXG5cdFx0XHRcdHJ1bjogKHZpZXc6IEVkaXRvclZpZXcpOiBib29sZWFuID0+IHtcblx0XHRcdFx0XHRjb25zdCBzdWNjZXNzID0gdGhpcy5oYW5kbGVUYWJEb3duKHZpZXcpO1xuXHRcdFx0XHRcdHJldHVybiBzdWNjZXNzO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRrZXk6IFwiRW50ZXJcIixcblx0XHRcdFx0cnVuOiAodmlldzogRWRpdG9yVmlldyk6IGJvb2xlYW4gPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHN1Y2Nlc3MgPSB0aGlzLmhhbmRsZUVudGVyKHZpZXcpO1xuXHRcdFx0XHRcdHJldHVybiBzdWNjZXNzO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XSkpKTtcblxuXHRcdHRoaXMubGFuZyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKTtcblx0XHRsZXQgY29tbWFuZF9uYW1lX21hcCA9IHRoaXMuZ2V0Q29tbWFuZE5hbWVNYXAoKTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJlYXN5LXR5cGluZy1mb3JtYXQtYXJ0aWNsZVwiLFxuXHRcdFx0bmFtZTogY29tbWFuZF9uYW1lX21hcC5nZXQoXCJmb3JtYXRfYXJ0aWNsZVwiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmZvcm1hdEFydGljbGUoZWRpdG9yLCB2aWV3KTtcblx0XHRcdH0sXG5cdFx0XHRob3RrZXlzOiBbe1xuXHRcdFx0XHRtb2RpZmllcnM6IFsnQ3RybCcsICdTaGlmdCddLFxuXHRcdFx0XHRrZXk6IFwic1wiXG5cdFx0XHR9XSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJlYXN5LXR5cGluZy1mb3JtYXQtc2VsZWN0aW9uXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImZvcm1hdF9zZWxlY3Rpb25cIiksXG5cdFx0XHRlZGl0b3JDYWxsYmFjazogKGVkaXRvcjogRWRpdG9yLCB2aWV3OiBNYXJrZG93blZpZXcpID0+IHtcblx0XHRcdFx0dGhpcy5mb3JtYXRTZWxlY3Rpb25PckN1ckxpbmUoZWRpdG9yLCB2aWV3KTtcblx0XHRcdH0sXG5cdFx0XHRob3RrZXlzOiBbe1xuXHRcdFx0XHRtb2RpZmllcnM6IFsnQ3RybCcsICdTaGlmdCddLFxuXHRcdFx0XHRrZXk6IFwibFwiXG5cdFx0XHR9XSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJlYXN5LXR5cGluZy1kZWxldGUtYmxhbmstbGluZVwiLFxuXHRcdFx0bmFtZTogY29tbWFuZF9uYW1lX21hcC5nZXQoXCJkZWxldGVfYmxhbmtfbGluZVwiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmRlbGV0ZUJsYW5rTGluZXMoZWRpdG9yKTtcblx0XHRcdH0sXG5cdFx0XHRob3RrZXlzOiBbe1xuXHRcdFx0XHRtb2RpZmllcnM6IFsnQ3RybCcsICdTaGlmdCddLFxuXHRcdFx0XHRrZXk6IFwia1wiXG5cdFx0XHR9XSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJlYXN5LXR5cGluZy1pbnNlcnQtY29kZWJsb2NrXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImluc2VydF9jb2RlYmxvY2tcIiksXG5cdFx0XHRlZGl0b3JDYWxsYmFjazogKGVkaXRvcjogRWRpdG9yLCB2aWV3OiBNYXJrZG93blZpZXcpID0+IHtcblx0XHRcdFx0dGhpcy5jb252ZXJ0MkNvZGVCbG9jayhlZGl0b3IpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJuXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWZvcm1hdC1zd2l0Y2hcIixcblx0XHRcdG5hbWU6IGNvbW1hbmRfbmFtZV9tYXAuZ2V0KFwic3dpdGNoX2F1dG9mb3JtYXRcIiksXG5cdFx0XHRjYWxsYmFjazogKCkgPT4gdGhpcy5zd2l0Y2hBdXRvRm9ybWF0dGluZygpLFxuXHRcdFx0aG90a2V5czogW3tcblx0XHRcdFx0bW9kaWZpZXJzOiBbJ0N0cmwnXSxcblx0XHRcdFx0a2V5OiBcInRhYlwiXG5cdFx0XHR9XSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJlYXN5LXR5cGluZy1wYXN0ZS13aXRob3V0LWZvcm1hdFwiLFxuXHRcdFx0bmFtZTogY29tbWFuZF9uYW1lX21hcC5nZXQoXCJwYXN0ZV93b19mb3JtYXRcIiksXG5cdFx0XHRlZGl0b3JDYWxsYmFjazogKGVkaXRvcikgPT4gdGhpcy5ub3JtYWxQYXN0ZShlZGl0b3IpLFxuXHRcdFx0aG90a2V5czogW1xuXHRcdFx0ICB7XG5cdFx0XHRcdG1vZGlmaWVyczogW1wiTW9kXCIsIFwiU2hpZnRcIl0sXG5cdFx0XHRcdGtleTogXCJ2XCIsXG5cdFx0XHQgIH0sXG5cdFx0XHRdLFxuXHRcdCAgfSk7XG5cblx0XHQvLyBUaGlzIGFkZHMgYSBzZXR0aW5ncyB0YWIgc28gdGhlIHVzZXIgY2FuIGNvbmZpZ3VyZSB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIHBsdWdpblxuXHRcdHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgRWFzeVR5cGluZ1NldHRpbmdUYWIodGhpcy5hcHAsIHRoaXMpKTtcblxuXHRcdHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2FjdGl2ZS1sZWFmLWNoYW5nZScsIChsZWFmOiBXb3Jrc3BhY2VMZWFmKSA9PiB7XG5cdFx0XHRpZiAobGVhZi52aWV3LmdldFZpZXdUeXBlKCkgPT0gJ21hcmtkb3duJykge1xuXHRcdFx0XHRsZXQgZmlsZSA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCk7XG5cdFx0XHRcdGlmIChmaWxlICE9IG51bGwgJiYgdGhpcy5DdXJBY3RpdmVNYXJrZG93biAhPSBmaWxlLnBhdGgpIHtcblx0XHRcdFx0XHR0aGlzLkN1ckFjdGl2ZU1hcmtkb3duID0gZmlsZS5wYXRoO1xuXHRcdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZSgnbmV3IG1kLWZpbGUgb3BlbjogJyArIGZpbGUucGF0aClcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pKTtcblxuXHRcdC8vIHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2ZpbGUtb3BlbicsIChmaWxlOiBURmlsZSB8IG51bGwpID0+IHtcblx0XHQvLyBcdGlmIChmaWxlICE9IG51bGwpIHtcblx0XHQvLyBcdFx0bGV0IGVkaXRvciA9IHRoaXMuZ2V0RWRpdG9yKCk7XG5cdFx0Ly8gXHRcdGlmIChlZGl0b3IgPT09IG51bGwpIHJldHVybjtcblx0XHQvLyBcdFx0dGhpcy5Db250ZW50UGFyc2VyLnBhcnNlTmV3QXJ0aWNsZShlZGl0b3IuZ2V0VmFsdWUoKSk7XG5cdFx0Ly8gXHRcdGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSB7XG5cdFx0Ly8gXHRcdFx0bmV3IE5vdGljZShcIkVhc3lUeXBpbmc6IFBhcnNlIE5ldyBBcnRpY2xlOiBcIiArIGZpbGUudmF1bHQuZ2V0TmFtZSgpICsgJy8nICsgZmlsZS5wYXRoKTtcblx0XHQvLyBcdFx0XHQvLyBpZiAodGhpcy5zZXR0aW5ncy5kZWJ1ZykgdGhpcy5Db250ZW50UGFyc2VyLnByaW50KCk7XG5cdFx0Ly8gXHRcdH1cblx0XHQvLyBcdH1cblx0XHQvLyB9KSk7XG5cdH1cblxuXHRvbnVubG9hZCgpIHtcblx0fVxuXG5cdHRyYW5zYWN0aW9uRmlsdGVyUGx1Z2luID0gKHRyOiBUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uU3BlYyB8IHJlYWRvbmx5IFRyYW5zYWN0aW9uU3BlY1tdID0+IHtcblx0XHRjb25zdCBjaGFuZ2VzOiBUcmFuc2FjdGlvblNwZWNbXSA9IFtdO1xuXHRcdGlmICghdHIuZG9jQ2hhbmdlZCkgcmV0dXJuIHRyO1xuXHRcdGxldCBzZWxlY3RlZCA9IHRyLnN0YXJ0U3RhdGUuc2VsZWN0aW9uLmFzU2luZ2xlKCkubWFpbi5hbmNob3IgIT0gdHIuc3RhcnRTdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluLmhlYWQ7XG5cblx0XHRsZXQgY2hhbmdlVHlwZVN0ciA9IGdldFR5cGVTdHJPZlRyYW5zYWModHIpO1xuXHRcdHRyLmNoYW5nZXMuaXRlckNoYW5nZXMoKGZyb21BLCB0b0EsIGZyb21CLCB0b0IsIGluc2VydGVkKSA9PiB7XG5cdFx0XHRsZXQgY2hhbmdlZFN0ciA9IHRyLnN0YXJ0U3RhdGUuc2xpY2VEb2MoZnJvbUEsIHRvQSk7XG5cdFx0XHRsZXQgaW5zZXJ0ZWRTdHIgPSBpbnNlcnRlZC5zbGljZVN0cmluZygwKTtcblx0XHRcdC8vIGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKVxuXHRcdFx0Ly8ge1xuXHRcdFx0Ly8gXHRjb25zb2xlLmxvZyhcIlRyYW5zYWN0aW9uRmlsdGVyIGNhdGNoIGNoYW5nZTpcIixjaGFuZ2VUeXBlU3RyLCBmcm9tQSwgdG9BLCBmcm9tQiwgdG9CLCBpbnNlcnRlZFN0cik7XG5cdFx0XHQvLyB9XG5cdFx0XHQvLyA9PT09PT09PT09IFNlbGVjdGlvbiBSZXBsYWNlID09PT09PT09PT09PVxuXHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuU2VsZWN0aW9uRW5oYW5jZSkge1xuXHRcdFx0XHRpZiAoKGNoYW5nZVR5cGVTdHIgPT0gJ2lucHV0LnR5cGUnIHx8IGNoYW5nZVR5cGVTdHIgPT0gXCJpbnB1dC50eXBlLmNvbXBvc2VcIikgJiYgZnJvbUEgIT0gdG9BICYmIGZyb21CICsgMSA9PT0gdG9CKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuU2VsZWN0aW9uUmVwbGFjZU1hcC5oYXMoaW5zZXJ0ZWRTdHIpKSB7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goeyBjaGFuZ2VzOiB7IGZyb206IGZyb21BLCBpbnNlcnQ6IHRoaXMuU2VsZWN0aW9uUmVwbGFjZU1hcC5nZXQoaW5zZXJ0ZWRTdHIpPy5sZWZ0IH0sIHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiIH0pXG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goeyBjaGFuZ2VzOiB7IGZyb206IHRvQSwgaW5zZXJ0OiB0aGlzLlNlbGVjdGlvblJlcGxhY2VNYXAuZ2V0KGluc2VydGVkU3RyKT8ucmlnaHQgfSwgdXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCIgfSlcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzZWxlY3RlZCkgcmV0dXJuIHRyO1xuXG5cdFx0XHQvLyBVc2VyRGVmaW5lZCBEZWxldGUgUnVsZVxuXHRcdFx0aWYgKGNoYW5nZVR5cGVTdHIgPT0gXCJkZWxldGUuYmFja3dhcmRcIikge1xuXHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuVXNlckRlbGV0ZVJ1bGVzKSB7XG5cdFx0XHRcdFx0bGV0IGxlZnQgPSB0ci5zdGFydFN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCwgdG9BKTtcblx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGFydFN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0EsIHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0ZnJvbTogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRpbnNlcnQ6IHJ1bGUuYWZ0ZXIubGVmdCArIHJ1bGUuYWZ0ZXIucmlnaHRcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoIH0sXG5cdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vID09PT09PT09PT0gZGVsZXRlIHBhaXIgc3ltYm9sID09PT09PT09PT09PVxuXHRcdFx0aWYgKGNoYW5nZVR5cGVTdHIgPT09IFwiZGVsZXRlLmJhY2t3YXJkXCIgJiYgdGhpcy5zZXR0aW5ncy5JbnRyaW5zaWNTeW1ib2xQYWlycykge1xuXHRcdFx0XHRpZiAodGhpcy5TeW1ib2xQYWlyc01hcC5oYXMoY2hhbmdlZFN0cikgJiYgdGhpcy5TeW1ib2xQYWlyc01hcC5nZXQoY2hhbmdlZFN0cikgPT09IHRyLnN0YXJ0U3RhdGUuc2xpY2VEb2ModG9BLCB0b0EgKyAxKSkge1xuXHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7IGNoYW5nZXM6IHsgZnJvbTogZnJvbUEsIHRvOiB0b0EgKyAxIH0sIHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiIH0pO1xuXHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5JbnRyaW5zaWNEZWxldGVSdWxlcykge1xuXHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQSk7XG5cdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9BLCB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBcdTkwMUFcdTVFMzhcdTUzNTVcdTVCNTdcdThGOTNcdTUxNjVcblx0XHRcdGlmICgoY2hhbmdlVHlwZVN0ciA9PSAnaW5wdXQudHlwZScgfHwgY2hhbmdlVHlwZVN0ciA9PSBcImlucHV0LnR5cGUuY29tcG9zZVwiKSAmJiBmcm9tQSA9PT0gdG9BICYmIGZyb21CICsgMSA9PT0gdG9CKSB7XG5cdFx0XHRcdC8vIGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSBjb25zb2xlLmxvZyhcIklucHV0LnR5cGUgPT4gXCIsIGluc2VydGVkU3RyKVxuXHRcdFx0XHQvLyA9PT09PT09PT09PSBiYXNpYyBjb252ZXJ0IHJ1bGVzID09PT09PT09PT09PVxuXHRcdFx0XHQvLyBub3Qgc3VwcG9ydCB1bmRvIGFuZCByZWRvXG5cdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkJhc2VPYkVkaXRFbmhhbmNlKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgcnVsZSBvZiB0aGlzLkJhc2ljQ29udlJ1bGVzKSB7XG5cdFx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRTdHIgIT0gcnVsZS5iZWZvcmUubGVmdC5jaGFyQXQocnVsZS5iZWZvcmUubGVmdC5sZW5ndGggLSAxKSkgY29udGludWU7XG5cdFx0XHRcdFx0XHQvLyBcdTU5MDRcdTc0MDZcdTY1ODdcdTY4NjNcdTdCMkMgMCBcdTg4NENcblx0XHRcdFx0XHRcdGlmIChydWxlLmJlZm9yZS5sZWZ0LmNoYXJBdCgwKSA9PT0gJ1xcbicgJiYgb2Zmc2V0VG9Qb3ModHIuc3RhdGUuZG9jLCBmcm9tQSkubGluZSA9PT0gMCAmJiB0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDEgPT09IDApIHtcblx0XHRcdFx0XHRcdFx0bGV0IGxlZnQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAxLCB0b0IpO1xuXHRcdFx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CLCB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdC5zdWJzdHJpbmcoMSkgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnJvbTogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAyLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpbnNlcnQ6IHJ1bGUuYWZ0ZXIubGVmdC5zdWJzdHJpbmcoMSkgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoICsgMSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly8gXHU5MDFBXHU1RTM4XHU2MEM1XHU1MUI1XHU1OTA0XHU3NDA2XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0bGV0IGxlZnQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQik7XG5cdFx0XHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IsIHRvQiArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoICsgMSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkZXMkhXRW5oYW5jZSkge1xuXHRcdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5GVzJIV1N5bWJvbFJ1bGVzKSB7XG5cdFx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRTdHIgIT0gcnVsZS5iZWZvcmUubGVmdC5jaGFyQXQocnVsZS5iZWZvcmUubGVmdC5sZW5ndGggLSAxKSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRsZXQgbGVmdCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCwgdG9CKTtcblx0XHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IsIHRvQiArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDEsXG5cdFx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggKyAxIH0sXG5cdFx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyA9PT09PT09PT09PT09PT09IGF1dG8gcGFpciA9PT09PT09PT09PT09PT09PVxuXHRcdFx0XHQvLyBsZXQgUGFpclZhbGlkU2V0ID0gbmV3IFNldChbXCJcIiwgXCIgXCIsXCJcXG5cIl0pXG5cdFx0XHRcdC8vIGxldCBjaGFyQWZ0ZXJDdXJzb3IgPSB0ci5zdGFydFN0YXRlLnNsaWNlRG9jKHRvQSwgdG9BKzEpO1xuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5JbnRyaW5zaWNTeW1ib2xQYWlycykge1xuXHRcdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5JbnRyaW5zaWNBdXRvUGFpclJ1bGVzUGF0Y2gpIHtcblx0XHRcdFx0XHRcdGlmIChpbnNlcnRlZFN0ciAhPSBydWxlLmJlZm9yZS5sZWZ0LmNoYXJBdChydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCAtIDEpKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0IpO1xuXHRcdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiwgdG9CICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMSxcblx0XHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRpbnNlcnQ6IHJ1bGUuYWZ0ZXIubGVmdCArIHJ1bGUuYWZ0ZXIucmlnaHRcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCArIDEgfSxcblx0XHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmICh0aGlzLlN5bWJvbFBhaXJzTWFwLmhhcyhpbnNlcnRlZFN0cikpIHtcblx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHsgZnJvbTogZnJvbUEsIHRvOiB0b0EsIGluc2VydDogaW5zZXJ0ZWRTdHIgKyB0aGlzLlN5bWJvbFBhaXJzTWFwLmdldChpbnNlcnRlZFN0cikgfSxcblx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogZnJvbUEgKyAxIH0sXG5cdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGhhbmRsZSBhdXRvcGFpciBmb3IgXCJcdTIwMURcIiBhbmQgXCJcdTIwMTlcIlxuXHRcdFx0XHRcdGlmIChpbnNlcnRlZFN0ciA9PT0gJ1x1MjAxRCcgfHwgaW5zZXJ0ZWRTdHIgPT09ICdcdTIwMTknKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGVtcFN0ciA9IGluc2VydGVkU3RyID09PSBcIlx1MjAxRFwiID8gXCJcdTIwMUNcdTIwMURcIiA6IFwiXHUyMDE4XHUyMDE5XCI7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7IGZyb206IGZyb21BLCB0bzogdG9BLCBpbnNlcnQ6IHRlbXBTdHIgfSxcblx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogZnJvbUEgKyAxIH0sXG5cdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSlcblx0XHRyZXR1cm4gdHI7XG5cdH1cblxuXHRhc3luYyBub3JtYWxQYXN0ZShlZGl0b3I6IEVkaXRvcik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGxldCBjbGlwYm9hcmRUZXh0ID0gYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpO1xuXHRcdGlmIChjbGlwYm9hcmRUZXh0ID09PSBudWxsIHx8IGNsaXBib2FyZFRleHQgPT09IFwiXCIpIHJldHVybjtcblxuXHRcdGVkaXRvci5yZXBsYWNlU2VsZWN0aW9uKGNsaXBib2FyZFRleHQpO1xuXHR9XG5cblx0dmlld1VwZGF0ZVBsdWdpbiA9ICh1cGRhdGU6IFZpZXdVcGRhdGUpID0+IHtcblxuXHRcdC8vIGNvbnNvbGUubG9nKHRyZWUpO1xuXG5cdFx0Ly8gaWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiLS0tLS0tLVZpZXdVcGRhdGUtLS0tLS0tLS1cIik7XG5cdFx0bGV0IG5vdFNlbGVjdGVkID0gdHJ1ZTtcblx0XHRsZXQgbWFpblNlbGVjdGlvbiA9IHVwZGF0ZS52aWV3LnN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW47XG5cdFx0aWYgKG1haW5TZWxlY3Rpb24uYW5jaG9yICE9IG1haW5TZWxlY3Rpb24uaGVhZCkgbm90U2VsZWN0ZWQgPSBmYWxzZTtcblx0XHQvLyAtLS0tLS0gRGVidWcgLS0tLS0tLS0tLS0tXG5cdFx0Ly8gaWYgKG5vdFNlbGVjdGVkKXtcblx0XHQvLyBcdC8vIHRoaXMuRm9ybWF0ZXIucGFyc2VMaW5lV2l0aFN5bnRheFRyZWUodXBkYXRlLnN0YXRlLCB1cGRhdGUuc3RhdGUuZG9jLmxpbmVBdChtYWluU2VsZWN0aW9uLmFuY2hvcikubnVtYmVyKTtcblx0XHQvLyBcdGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHVwZGF0ZS5zdGF0ZSk7XG5cdFx0Ly8gXHRsZXQgcG9zID0gbWFpblNlbGVjdGlvbi5hbmNob3I7XG5cdFx0Ly8gXHRsZXQgbm9kZSA9IHRyZWUucmVzb2x2ZShwb3MsIDEpO1xuXHRcdC8vIFx0Y29uc29sZS5sb2cobm9kZS5uYW1lLCBub2RlLmZyb20sIG5vZGUudG8sIHVwZGF0ZS5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcobm9kZS5mcm9tLCBub2RlLnRvKSk7XG5cdFx0Ly8gfVxuXG5cdFx0aWYgKCF1cGRhdGUuZG9jQ2hhbmdlZCkgcmV0dXJuO1xuXG5cdFx0bGV0IGlzRXhjbHVkZUZpbGUgPSB0aGlzLmlzQ3VycmVudEZpbGVFeGNsdWRlKCk7XG5cdFx0Ly8gY29uc29sZS5sb2codGhpcy5DdXJBY3RpdmVNYXJrZG93biwgaXNFeGNsdWRlRmlsZSlcblxuXHRcdC8vIGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSBjb25zb2xlLmxvZyhcIi0tLS0tVmlld1VwZGF0ZVdDaGFuZ2UtLS0tLVwiKTtcblx0XHRsZXQgdHIgPSB1cGRhdGUudHJhbnNhY3Rpb25zWzBdXG5cdFx0bGV0IGNoYW5nZVR5cGUgPSBnZXRUeXBlU3RyT2ZUcmFuc2FjKHRyKTtcblx0XHR0ci5jaGFuZ2VzLml0ZXJDaGFuZ2VzKChmcm9tQSwgdG9BLCBmcm9tQiwgdG9CLCBpbnNlcnRlZCkgPT4ge1xuXHRcdFx0bGV0IGluc2VydGVkU3RyID0gaW5zZXJ0ZWQuc2xpY2VTdHJpbmcoMCk7XG5cdFx0XHRsZXQgY2hhbmdlZFN0ciA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKGZyb21BLCB0b0EpO1xuXHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpXG5cdFx0XHRcdGNvbnNvbGUubG9nKFwiVmlld1VwZGF0ZSBDYXRjaCBDaGFuZ2UtPiBUeXBlOiBcIiArIGNoYW5nZVR5cGUgKyBcIiwgXCIsIGZyb21BLCB0b0EsIGNoYW5nZWRTdHIsIGZyb21CLCB0b0IsIGluc2VydGVkU3RyKTtcblxuXHRcdFx0Ly8gXHU2MjdFXHU1MjMwXHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXHVGRjBDXHU2QkQ0XHU4RjgzXHU1NDhDIHRvQiBcdTc2ODRcdTRGNERcdTdGNkVcdTY2MkZcdTU0MjZcdTc2RjhcdTU0MENcdUZGMENcdTc2RjhcdTU0MENcdTRFMTRcdTY3MDBcdTdFQzhcdTYzRDJcdTUxNjVcdTY1ODdcdTVCNTdcdTRFM0FcdTRFMkRcdTY1ODdcdUZGMENcdTUyMTlcdTRFM0FcdTRFMkRcdTY1ODdcdThGOTNcdTUxNjVcdTdFRDNcdTY3NUZcdTc2ODRcdTcyQjZcdTYwMDFcblx0XHRcdGxldCBjdXJzb3IgPSB1cGRhdGUudmlldy5zdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluO1xuXHRcdFx0bGV0IENoaW5lc2VSZWdFeHAgPSAvXltcXHU0ZTAwLVxcdTlmYTVcdTMwMTBcdTMwMTFcdTAwQjdcdUZGRTVcdTMwMEFcdTMwMEJcdUZGMUZcdUZGMUFcdTIwMTlcdTIwMThcdTIwMURcdTIwMUNcdTMwMENcdTMwMERcdTMwMDFcdTMwMDJcdUZGMENcdUZGMDhcdUZGMDlcdUZGMDFcdTIwMTRcdTIwMTRcdTIwMjZcdTIwMjYwLTldKyQvO1xuXHRcdFx0bGV0IGNoaW5lc2VFbmRGbGFnID0gY2hhbmdlVHlwZSA9PSBcImlucHV0LnR5cGUuY29tcG9zZVwiICYmXG5cdFx0XHRcdGN1cnNvci5hbmNob3IgPT0gY3Vyc29yLmhlYWQgJiYgY3Vyc29yLmFuY2hvciA9PT0gdG9CICYmXG5cdFx0XHRcdENoaW5lc2VSZWdFeHAudGVzdChpbnNlcnRlZFN0cik7XG5cblx0XHRcdGlmIChjaGFuZ2VUeXBlICE9IFwiaW5wdXQudHlwZS5jb21wb3NlXCIpIHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuQXV0b0Zvcm1hdCAmJiBub3RTZWxlY3RlZCAmJiAhaXNFeGNsdWRlRmlsZSAmJlxuXHRcdFx0XHRnZXRQb3NMaW5lVHlwZSh1cGRhdGUudmlldy5zdGF0ZSwgZnJvbUIpID09IExpbmVUeXBlLnRleHQpIHtcblx0XHRcdFx0aWYgKGNoYW5nZVR5cGUgPT0gXCJpbnB1dC50eXBlLmNvbXBvc2VcIikge1xuXHRcdFx0XHRcdGlmICh0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPT0gZmFsc2UpIHtcblx0XHRcdFx0XHRcdHRoaXMuY29tcG9zZV9iZWdpbl9wb3MgPSBmcm9tQjtcblx0XHRcdFx0XHRcdHRoaXMuY29tcG9zZV9lbmRfcG9zID0gdG9CO1xuXHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX25lZWRfaGFuZGxlID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLmNvbXBvc2VfZW5kX3BvcyA9IHRvQjtcblx0XHRcdFx0XHRcdGlmICh0aGlzLmNvbXBvc2VfYmVnaW5fcG9zID09IHRoaXMuY29tcG9zZV9lbmRfcG9zKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY2hpbmVzZUVuZEZsYWcpIHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcIkNvbXBvc2VcIiwgY2hpbmVzZUVuZEZsYWcsIHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSk7XG5cdFx0XHR9XG5cblxuXHRcdFx0Ly8gXHU1MjI0XHU2NUFEXHU2QkNGXHU2QjIxXHU4RjkzXHU1MTY1XHU3RUQzXHU2NzVGXG5cdFx0XHRpZiAoY2hhbmdlVHlwZSA9PSAnaW5wdXQudHlwZScgfHwgY2hhbmdlVHlwZSA9PSBcImlucHV0XCIgfHwgY2hpbmVzZUVuZEZsYWcgfHwgY2hhbmdlVHlwZSA9PSAnbm9uZScpIHtcblx0XHRcdFx0Ly8gXHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU4RjZDXHU1MzE2XHU4OUM0XHU1MjE5XG5cdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5Vc2VyQ29udmVydFJ1bGVzKSB7XG5cdFx0XHRcdFx0Ly8gaWYgKGluc2VydGVkU3RyICE9IHJ1bGUuYmVmb3JlLmxlZnQuc3Vic3RyaW5nKHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoIC0gaW5zZXJ0ZWRTdHIubGVuZ3RoKSkgY29udGludWU7XG5cdFx0XHRcdFx0bGV0IGxlZnQgPSB1cGRhdGUudmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQik7XG5cdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdXBkYXRlLnZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiwgdG9CICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdHRvOiB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5QdW5jUmVjdGlmeSAmJiBjaGluZXNlRW5kRmxhZyAmJiB0aGlzLmNvbXBvc2VfYmVnaW5fcG9zID4gMSAmJlxuXHRcdFx0XHRcdC9bLC4/IV0vLnRlc3QodXBkYXRlLnZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRoaXMuY29tcG9zZV9iZWdpbl9wb3MgLSAxLCB0aGlzLmNvbXBvc2VfYmVnaW5fcG9zKSkpIHtcblx0XHRcdFx0XHRsZXQgcHVuYyA9IHVwZGF0ZS52aWV3LnN0YXRlLmRvYy5zbGljZVN0cmluZyh0aGlzLmNvbXBvc2VfYmVnaW5fcG9zIC0gMSwgdGhpcy5jb21wb3NlX2JlZ2luX3Bvcylcblx0XHRcdFx0XHRpZiAodGhpcy5jb21wb3NlX2JlZ2luX3BvcyA+IDIgJiZcblx0XHRcdFx0XHRcdC9bXFxzXFxuXFx3XS8udGVzdCh1cGRhdGUudmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodGhpcy5jb21wb3NlX2JlZ2luX3BvcyAtIDIsIHRoaXMuY29tcG9zZV9iZWdpbl9wb3MgLSAxKSkpIHsgfVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0ZnJvbTogdGhpcy5jb21wb3NlX2JlZ2luX3BvcyAtIDEsXG5cdFx0XHRcdFx0XHRcdFx0dG86IHRoaXMuY29tcG9zZV9iZWdpbl9wb3MsXG5cdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiB0aGlzLmhhbGZUb0Z1bGxTeW1ib2xNYXAuZ2V0KHB1bmMpXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdC8vIHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBcdTUyMjRcdTY1QURcdTY4M0NcdTVGMEZcdTUzMTZcdTY1ODdcdTY3MkNcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJyZWFkeSB0byBmb3JtYXRcIik7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwiY2hlY2sgaXMgZXhjbHVlIGZpbGU6XCIsIGlzRXhjbHVkZUZpbGUpXG5cdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgJiYgbm90U2VsZWN0ZWQgJiYgIWlzRXhjbHVkZUZpbGUgJiYgKGNoYW5nZVR5cGUgIT0gJ25vbmUnIHx8IGluc2VydGVkU3RyLmNvbnRhaW5zKFwiXFxuXCIpKSAmJlxuXHRcdFx0XHRcdGdldFBvc0xpbmVUeXBlKHVwZGF0ZS52aWV3LnN0YXRlLCBmcm9tQikgPT0gTGluZVR5cGUudGV4dCkge1xuXHRcdFx0XHRcdGxldCBjaGFuZ2VzID0gdGhpcy5Gb3JtYXRlci5mb3JtYXRMaW5lT2ZEb2ModXBkYXRlLnN0YXRlLCB0aGlzLnNldHRpbmdzLCBmcm9tQiwgY3Vyc29yLmFuY2hvciwgaW5zZXJ0ZWRTdHIpO1xuXHRcdFx0XHRcdGlmIChjaGFuZ2VzICE9IG51bGwpIHtcblx0XHRcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKC4uLmNoYW5nZXNbMF0pO1xuXHRcdFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goY2hhbmdlc1sxXSk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgJiYgIWlzRXhjbHVkZUZpbGUgJiYgY2hhbmdlVHlwZSA9PSBcImlucHV0LnBhc3RlXCIgJiYgIVBsYXRmb3JtLmlzSW9zQXBwKSB7XG5cdFx0XHRcdGxldCB1cGRhdGVMaW5lU3RhcnQgPSB1cGRhdGUuc3RhdGUuZG9jLmxpbmVBdChmcm9tQikubnVtYmVyO1xuXHRcdFx0XHRsZXQgdXBkYXRlTGluZUVuZCA9IHVwZGF0ZS5zdGF0ZS5kb2MubGluZUF0KHRvQikubnVtYmVyO1xuXHRcdFx0XHRpZiAodXBkYXRlTGluZVN0YXJ0ID09IHVwZGF0ZUxpbmVFbmQgJiYgZ2V0UG9zTGluZVR5cGUodXBkYXRlLnZpZXcuc3RhdGUsIHRvQikgPT0gTGluZVR5cGUudGV4dCkge1xuXHRcdFx0XHRcdGxldCBjaGFuZ2VzID0gdGhpcy5Gb3JtYXRlci5mb3JtYXRMaW5lT2ZEb2ModXBkYXRlLnN0YXRlLCB0aGlzLnNldHRpbmdzLCBmcm9tQiwgdG9CLCBpbnNlcnRlZFN0cik7XG5cdFx0XHRcdFx0aWYgKGNoYW5nZXMgIT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goLi4uY2hhbmdlc1swXSk7XG5cdFx0XHRcdFx0XHQvLyB1cGRhdGUudmlldy5kaXNwYXRjaChjaGFuZ2VzWzFdKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0bGV0IGFsbF9jaGFuZ2VzOiBUcmFuc2FjdGlvblNwZWNbXSA9IFtdO1xuXHRcdFx0XHRcdGxldCBpbnNlcnRlZF9hcnJheSA9IGluc2VydGVkU3RyLnNwbGl0KFwiXFxuXCIpO1xuXHRcdFx0XHRcdGxldCB1cGRhdGVfc3RhcnQgPSBmcm9tQlxuXHRcdFx0XHRcdGZvciAobGV0IGkgPSB1cGRhdGVMaW5lU3RhcnQ7IGkgPD0gdXBkYXRlTGluZUVuZDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRsZXQgcmVhbF9pbnNlcnRlZCA9IGluc2VydGVkX2FycmF5W2kgLSB1cGRhdGVMaW5lU3RhcnRdO1xuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ3JlYWxfaW5zZXJ0ZWQnLCByZWFsX2luc2VydGVkLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKSlcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCd1cGRhdGVfZG9jX3RleHQnLCB1cGRhdGUuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHVwZGF0ZV9zdGFydCwgdXBkYXRlX3N0YXJ0ICsgcmVhbF9pbnNlcnRlZC5sZW5ndGgpLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKSlcblx0XHRcdFx0XHRcdGxldCBjaGFuZ2VzID0gdGhpcy5Gb3JtYXRlci5mb3JtYXRMaW5lT2ZEb2ModXBkYXRlLnN0YXRlLCB0aGlzLnNldHRpbmdzLCB1cGRhdGVfc3RhcnQsIHVwZGF0ZV9zdGFydCArIHJlYWxfaW5zZXJ0ZWQubGVuZ3RoLCByZWFsX2luc2VydGVkKTtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdjaGFuZ2VzJywgY2hhbmdlcylcblx0XHRcdFx0XHRcdGlmIChjaGFuZ2VzICE9IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0YWxsX2NoYW5nZXMucHVzaCguLi5jaGFuZ2VzWzBdKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHVwZGF0ZV9zdGFydCArPSByZWFsX2luc2VydGVkLmxlbmd0aCArIDE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChhbGxfY2hhbmdlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaCguLi5hbGxfY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XHQvLyBpdGVyY2hhbmdlcyBlbmRcblx0fVxuXG5cdHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlVGFiRG93biA9ICh2aWV3OiBFZGl0b3JWaWV3KSA9PiB7XG5cdFx0aWYgKCF0aGlzLnNldHRpbmdzLlRhYm91dCkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0bGV0IHN0YXRlID0gdmlldy5zdGF0ZTtcblx0XHRsZXQgZG9jID0gc3RhdGUuZG9jXG5cdFx0Y29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuXHRcdGNvbnN0IHMgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbjtcblx0XHRpZiAocy5yYW5nZXMubGVuZ3RoID4gMSkgcmV0dXJuIGZhbHNlO1xuXHRcdGNvbnN0IHBvcyA9IHMubWFpbi50bztcblx0XHRsZXQgbGluZSA9IGRvYy5saW5lQXQocG9zKVxuXG5cdFx0Ly8gRGVidWcgaW5mb1xuXHRcdC8vIGNvbnNvbGUubG9nKGxpbmUudGV4dClcblx0XHQvLyBmb3IgKGxldCBwPWxpbmUuZnJvbTsgcDw9bGluZS50bzsgcCs9MSl7XG5cdFx0Ly8gXHRjb25zdCB0b2tlbiA9IHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lXG5cdFx0Ly8gXHRjb25zb2xlLmxvZyhwLWxpbmUuZnJvbSwgdG9rZW4pXG5cdFx0Ly8gfVxuXHRcdC8vIHJldHVybiB0cnVlO1xuXG5cdFx0Ly8gXHU1RjUzXHU1MTQ5XHU2ODA3XHU1NzI4XHU4ODRDXHU1MTg1XHU0RUUzXHU3ODAxXHU1MTg1XHU5MEU4XG5cdFx0aWYgKHBvcyAtIGxpbmUuZnJvbSAhPSAwICYmIHRyZWUucmVzb2x2ZShwb3MgLSAxLCAxKS5uYW1lLmNvbnRhaW5zKCdpbmxpbmUtY29kZScpKSB7XG5cdFx0XHRpZiAodHJlZS5yZXNvbHZlKHBvcywgMSkubmFtZS5jb250YWlucygnZm9ybWF0dGluZy1jb2RlX2lubGluZS1jb2RlJykpIHtcblx0XHRcdFx0dmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogcG9zICsgMSwgaGVhZDogcG9zICsgMSB9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGxldCBwID0gcG9zICsgMTsgcCA8IGxpbmUudG8gJiYgdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2lubGluZS1jb2RlJyk7IHAgKz0gMSkge1xuXHRcdFx0XHQvLyBcdTU5ODJcdTY3OUNcdTYyN0VcdTUyMzAgYCBcdTUyMTlcdTUxNDlcdTY4MDdcdThERjNcdTUyMzBcdTUxNzZcdTU0MEVcblx0XHRcdFx0aWYgKHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdmb3JtYXR0aW5nLWNvZGVfaW5saW5lLWNvZGUnKSkge1xuXHRcdFx0XHRcdHZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogcCwgaGVhZDogcCB9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBcdTU5ODJcdTY3OUNcdTZDQTFcdTYyN0VcdTUyMzAgYCBcdTUyMTlcdTc2RjRcdTYzQTVcdThERjNcdTUyMzBcdTg4NENcdTVDM0Vcblx0XHRcdFx0aWYgKHAgPT0gbGluZS50byAtIDEgJiYgdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2lubGluZS1jb2RlJykpIHtcblx0XHRcdFx0XHR2aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHAgKyAxLCBoZWFkOiBwICsgMSB9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlRW50ZXIgPSAodmlldzogRWRpdG9yVmlldykgPT4ge1xuXHRcdC8vIGNvbnNvbGUubG9nKFwidGhpcy5zZXR0aW5ncy5FbnRlclR3aWNlXCIsIHRoaXMuc2V0dGluZ3MuRW50ZXJUd2ljZSlcblx0XHRpZiAoIXRoaXMuc2V0dGluZ3MuRW50ZXJUd2ljZSkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0Y29uc3QgYmFzZVBhdGggPSAodGhpcy5hcHAudmF1bHQuYWRhcHRlciBhcyBhbnkpLmJhc2VQYXRoXG5cdFx0bGV0IGNvbmZpZ19wYXRoID0gYmFzZVBhdGggKyBcIi9cIiArIHRoaXMuYXBwLnZhdWx0LmNvbmZpZ0RpciArIFwiL2FwcC5qc29uXCI7XG5cdFx0bGV0IGNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGNvbmZpZ19wYXRoLCAndXRmLTgnKSlcblx0XHRsZXQgc3RyaWN0TGluZUJyZWFrcyA9IGNvbmZpZy5zdHJpY3RMaW5lQnJlYWtzIHx8IGZhbHNlO1xuXHRcdGlmICghc3RyaWN0TGluZUJyZWFrcykgcmV0dXJuIGZhbHNlO1xuXG5cdFx0bGV0IHN0YXRlID0gdmlldy5zdGF0ZTtcblx0XHRsZXQgZG9jID0gc3RhdGUuZG9jXG5cdFx0Y29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuXHRcdGNvbnN0IHMgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbjtcblx0XHRpZiAocy5yYW5nZXMubGVuZ3RoID4gMSkgcmV0dXJuIGZhbHNlO1xuXHRcdGNvbnN0IHBvcyA9IHMubWFpbi50bztcblx0XHRsZXQgbGluZSA9IGRvYy5saW5lQXQocG9zKVxuXG5cdFx0Ly8gY29uc29sZS5sb2cobGluZS50ZXh0LCBnZXRQb3NMaW5lVHlwZTIoc3RhdGUsIHBvcykpXG5cdFx0Ly8gZm9yIChsZXQgcD1saW5lLmZyb207IHA8PWxpbmUudG87IHArPTEpe1xuXHRcdC8vIFx0Y29uc3QgdG9rZW4gPSB0cmVlLnJlc29sdmUocCwgMSkubmFtZVxuXHRcdC8vIFx0Y29uc29sZS5sb2cocC1saW5lLmZyb20sIHRva2VuKVxuXHRcdC8vIH1cblx0XHRpZiAoL15cXHMqJC8udGVzdChsaW5lLnRleHQpKSByZXR1cm4gZmFsc2U7XG5cdFx0ZWxzZSBpZiAoZ2V0UG9zTGluZVR5cGUyKHN0YXRlLCBwb3MpID09IExpbmVUeXBlLnRleHQpIHtcblx0XHRcdHZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0ZnJvbTogcG9zLFxuXHRcdFx0XHRcdHRvOiBwb3MsXG5cdFx0XHRcdFx0aW5zZXJ0OiAnXFxuXFxuJ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBwb3MgKyAyIH0sXG5cdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHR9KVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHJpdmF0ZSByZWFkb25seSBvbktleXVwID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB2aWV3OiBFZGl0b3JWaWV3KSA9PiB7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiS2V5dXA6XCIsIGV2ZW50LmtleSwgZXZlbnQuc2hpZnRLZXksIGV2ZW50LmN0cmxLZXl8fGV2ZW50Lm1ldGFLZXkpO1xuXHRcdFx0Y29uc29sZS5sb2coXCJLZXl1cDpcIiwgZXZlbnQua2V5KTtcblx0XHR9XG5cdFx0dGhpcy5oYW5kbGVFbmRDb21wb3NlVHlwZUtleShldmVudCwgdmlldyk7XG5cdH1cblxuXHRoYW5kbGVFbmRDb21wb3NlVHlwZUtleSA9IChldmVudDogS2V5Ym9hcmRFdmVudCwgdmlldzogRWRpdG9yVmlldykgPT4ge1xuXHRcdGlmICghdGhpcy5zZXR0aW5ncy5UcnlGaXhDaGluZXNlSU0pIHJldHVybjtcblx0XHRpZiAoWydFbnRlciddLmNvbnRhaW5zKGV2ZW50LmtleSkgJiYgdGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ICYmXG5cdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgJiYgIXRoaXMuaXNDdXJyZW50RmlsZUV4Y2x1ZGUoKSkge1xuXHRcdFx0bGV0IGN1cnNvciA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uLmFzU2luZ2xlKCkubWFpbjtcblx0XHRcdGlmIChnZXRQb3NMaW5lVHlwZSh2aWV3LnN0YXRlLCBjdXJzb3IuYW5jaG9yKSAhPSBMaW5lVHlwZS50ZXh0KSByZXR1cm47XG5cdFx0XHRpZiAoY3Vyc29yLmhlYWQgIT0gY3Vyc29yLmFuY2hvcikgcmV0dXJuO1xuXHRcdFx0bGV0IGluc2VydGVkU3RyID0gdmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodGhpcy5jb21wb3NlX2JlZ2luX3BvcywgY3Vyc29yLmFuY2hvcik7XG5cdFx0XHRjb25zb2xlLmxvZyhcImluc2VydGVkIHN0clwiLCBpbnNlcnRlZFN0cik7XG5cdFx0XHRsZXQgY2hhbmdlcyA9IHRoaXMuRm9ybWF0ZXIuZm9ybWF0TGluZU9mRG9jKHZpZXcuc3RhdGUsIHRoaXMuc2V0dGluZ3MsXG5cdFx0XHRcdHRoaXMuY29tcG9zZV9iZWdpbl9wb3MsIGN1cnNvci5hbmNob3IsIGluc2VydGVkU3RyKTtcblx0XHRcdHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXHRcdFx0aWYgKGNoYW5nZXMgIT0gbnVsbCkge1xuXHRcdFx0XHR2aWV3LmRpc3BhdGNoKC4uLmNoYW5nZXNbMF0pO1xuXHRcdFx0XHR2aWV3LmRpc3BhdGNoKGNoYW5nZXNbMV0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Zm9ybWF0QXJ0aWNsZSA9IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KTogdm9pZCA9PiB7XG5cdFx0bGV0IGxpbmVDb3VudCA9IGVkaXRvci5saW5lQ291bnQoKTtcblx0XHRsZXQgbmV3X2FydGljbGUgPSBcIlwiO1xuXHRcdGxldCBjcyA9IGVkaXRvci5nZXRDdXJzb3IoKTtcblx0XHRsZXQgY2ggPSAwO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbGluZUNvdW50OyBpKyspIHtcblx0XHRcdGlmIChpICE9IDApIG5ld19hcnRpY2xlICs9ICdcXG4nO1xuXHRcdFx0aWYgKGkgIT0gY3MubGluZSkge1xuXHRcdFx0XHRuZXdfYXJ0aWNsZSArPSB0aGlzLnByZUZvcm1hdE9uZUxpbmUoZWRpdG9yLCBpICsgMSlbMF07XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0bGV0IG5ld0RhdGEgPSB0aGlzLnByZUZvcm1hdE9uZUxpbmUoZWRpdG9yLCBpICsgMSwgY3MuY2gpO1xuXHRcdFx0XHRuZXdfYXJ0aWNsZSArPSBuZXdEYXRhWzBdO1xuXHRcdFx0XHRjaCA9IG5ld0RhdGFbMV07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGVkaXRvci5zZXRWYWx1ZShuZXdfYXJ0aWNsZSk7XG5cdFx0ZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IGNzLmxpbmUsIGNoOiBjaCB9KTtcblx0XHRuZXcgTm90aWNlKFwiRWFzeVR5cGluZzogRm9ybWF0IEFydGljbGUgRG9uZSFcIik7XG5cdH1cblxuXHRpc0N1cnJlbnRGaWxlRXhjbHVkZSgpOiBib29sZWFuIHtcblx0XHRpZiAodGhpcy5DdXJBY3RpdmVNYXJrZG93biA9PSBcIlwiKSB7XG5cdFx0XHRsZXQgZmlsZSA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCk7XG5cdFx0XHRpZiAoZmlsZSAhPSBudWxsICYmIHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24gIT0gZmlsZS5wYXRoKSB7XG5cdFx0XHRcdHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24gPSBmaWxlLnBhdGg7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGxldCBleGNsdWRlUGF0aHMgPSB0aGlzLnNldHRpbmdzLkV4Y2x1ZGVGaWxlcy5zcGxpdCgnXFxuJyk7XG5cdFx0Zm9yIChsZXQgZXBhdGggb2YgZXhjbHVkZVBhdGhzKSB7XG5cdFx0XHRpZiAoZXBhdGguY2hhckF0KDApID09ICcvJykgZXBhdGggPSBlcGF0aC5zdWJzdHJpbmcoMSk7XG5cdFx0XHRpZiAodGhpcy5DdXJBY3RpdmVNYXJrZG93biA9PSBlcGF0aCkgcmV0dXJuIHRydWU7XG5cdFx0XHRsZXQgbGVuID0gZXBhdGgubGVuZ3RoO1xuXHRcdFx0aWYgKHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24uc3Vic3RyaW5nKDAsIGxlbikgPT0gZXBhdGggJiYgKHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24uY2hhckF0KGxlbikgPT0gJy8nIHx8IHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24uY2hhckF0KGxlbikgPT0gJ1xcXFwnIHx8XG5cdFx0XHRcdGVwYXRoLmNoYXJBdChsZW4gLSAxKSA9PSBcIi9cIiB8fCBlcGF0aC5jaGFyQXQobGVuIC0gMSkgPT0gXCJcXFxcXCIpKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRmb3JtYXRTZWxlY3Rpb25PckN1ckxpbmUgPSAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldyk6IHZvaWQgPT4ge1xuXHRcdGlmICghZWRpdG9yLnNvbWV0aGluZ1NlbGVjdGVkKCkgfHwgZWRpdG9yLmdldFNlbGVjdGlvbigpID09PSAnJykge1xuXHRcdFx0bGV0IGxpbmVOdW1iZXIgPSBlZGl0b3IuZ2V0Q3Vyc29yKCkubGluZTtcblx0XHRcdGxldCBuZXdMaW5lRGF0YSA9IHRoaXMucHJlRm9ybWF0T25lTGluZShlZGl0b3IsIGxpbmVOdW1iZXIgKyAxLCBlZGl0b3IuZ2V0Q3Vyc29yKCkuY2gpO1xuXHRcdFx0ZWRpdG9yLnJlcGxhY2VSYW5nZShuZXdMaW5lRGF0YVswXSwgeyBsaW5lOiBsaW5lTnVtYmVyLCBjaDogMCB9LCB7IGxpbmU6IGxpbmVOdW1iZXIsIGNoOiBlZGl0b3IuZ2V0TGluZShsaW5lTnVtYmVyKS5sZW5ndGggfSk7XG5cdFx0XHRlZGl0b3Iuc2V0U2VsZWN0aW9uKHsgbGluZTogbGluZU51bWJlciwgY2g6IG5ld0xpbmVEYXRhWzFdIH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRsZXQgc2VsZWN0aW9uID0gZWRpdG9yLmxpc3RTZWxlY3Rpb25zKClbMF07XG5cdFx0bGV0IGJlZ2luID0gc2VsZWN0aW9uLmFuY2hvci5saW5lO1xuXHRcdGxldCBlbmQgPSBzZWxlY3Rpb24uaGVhZC5saW5lO1xuXHRcdGlmIChiZWdpbiA+IGVuZCkge1xuXHRcdFx0bGV0IHRlbXAgPSBiZWdpbjtcblx0XHRcdGJlZ2luID0gZW5kO1xuXHRcdFx0ZW5kID0gdGVtcDtcblx0XHR9XG5cdFx0Ly8gY29uc29sZS5sb2coYmVnaW4sIGVuZClcblx0XHRsZXQgbmV3X2xpbmVzID0gXCJcIjtcblx0XHRmb3IgKGxldCBpID0gYmVnaW47IGkgPD0gZW5kOyBpKyspIHtcblx0XHRcdGlmIChpICE9IGJlZ2luKSBuZXdfbGluZXMgKz0gJ1xcbic7XG5cdFx0XHRjb25zb2xlLmxvZygnaSsxJywgaSArIDEpXG5cdFx0XHRuZXdfbGluZXMgKz0gdGhpcy5wcmVGb3JtYXRPbmVMaW5lKGVkaXRvciwgaSArIDEpWzBdO1xuXHRcdH1cblx0XHRlZGl0b3IucmVwbGFjZVJhbmdlKG5ld19saW5lcywgeyBsaW5lOiBiZWdpbiwgY2g6IDAgfSwgeyBsaW5lOiBlbmQsIGNoOiBlZGl0b3IuZ2V0TGluZShlbmQpLmxlbmd0aCB9KTtcblx0XHRpZiAoc2VsZWN0aW9uLmFuY2hvci5saW5lIDwgc2VsZWN0aW9uLmhlYWQubGluZSkge1xuXHRcdFx0ZWRpdG9yLnNldFNlbGVjdGlvbih7IGxpbmU6IHNlbGVjdGlvbi5hbmNob3IubGluZSwgY2g6IDAgfSwgeyBsaW5lOiBzZWxlY3Rpb24uaGVhZC5saW5lLCBjaDogZWRpdG9yLmdldExpbmUoc2VsZWN0aW9uLmhlYWQubGluZSkubGVuZ3RoIH0pO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdGVkaXRvci5zZXRTZWxlY3Rpb24oeyBsaW5lOiBzZWxlY3Rpb24uYW5jaG9yLmxpbmUsIGNoOiBlZGl0b3IuZ2V0TGluZShzZWxlY3Rpb24uYW5jaG9yLmxpbmUpLmxlbmd0aCB9LCB7IGxpbmU6IHNlbGVjdGlvbi5oZWFkLmxpbmUsIGNoOiAwIH0pO1xuXHRcdH1cblx0fVxuXG5cdC8vIHBhcmFtOiBsaW5lTnVtYmVyIGlzICgxLWJhc2VkKVxuXHRmb3JtYXRPbmVMaW5lID0gKGVkaXRvcjogRWRpdG9yLCBsaW5lTnVtYmVyOiBudW1iZXIpOiB2b2lkID0+IHtcblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yLCBub3QgdHlwZWRcblx0XHRjb25zdCBlZGl0b3JWaWV3ID0gZWRpdG9yLmNtIGFzIEVkaXRvclZpZXc7XG5cdFx0bGV0IHN0YXRlID0gZWRpdG9yVmlldy5zdGF0ZTtcblx0XHRsZXQgbGluZSA9IHN0YXRlLmRvYy5saW5lKGxpbmVOdW1iZXIpXG5cblx0XHRpZiAoZ2V0UG9zTGluZVR5cGUoc3RhdGUsIGxpbmUuZnJvbSkgPT0gTGluZVR5cGUudGV4dCkge1xuXHRcdFx0bGV0IG9sZExpbmUgPSBsaW5lLnRleHQ7XG5cdFx0XHRsZXQgbmV3TGluZSA9IHRoaXMuRm9ybWF0ZXIuZm9ybWF0TGluZShzdGF0ZSwgbGluZU51bWJlciwgdGhpcy5zZXR0aW5ncywgb2xkTGluZS5sZW5ndGgsIDApWzBdO1xuXHRcdFx0aWYgKG9sZExpbmUgIT0gbmV3TGluZSkge1xuXHRcdFx0XHRlZGl0b3IucmVwbGFjZVJhbmdlKG5ld0xpbmUsIHsgbGluZTogbGluZU51bWJlciAtIDEsIGNoOiAwIH0sIHsgbGluZTogbGluZU51bWJlciAtIDEsIGNoOiBvbGRMaW5lLmxlbmd0aCB9KTtcblx0XHRcdFx0ZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IGxpbmVOdW1iZXIgLSAxLCBjaDogZWRpdG9yLmdldExpbmUobGluZU51bWJlciAtIDEpLmxlbmd0aCB9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gcGFyYW06IGxpbmVOdW1iZXIgaXMgKDEtYmFzZWQpXG5cdHByZUZvcm1hdE9uZUxpbmUgPSAoZWRpdG9yOiBFZGl0b3IsIGxpbmVOdW1iZXI6IG51bWJlciwgY2g6IG51bWJlciA9IC0xKTogW3N0cmluZywgbnVtYmVyXSA9PiB7XG5cdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciwgbm90IHR5cGVkXG5cdFx0Y29uc3QgZWRpdG9yVmlldyA9IGVkaXRvci5jbSBhcyBFZGl0b3JWaWV3O1xuXHRcdGxldCBzdGF0ZSA9IGVkaXRvclZpZXcuc3RhdGU7XG5cdFx0bGV0IGxpbmUgPSBzdGF0ZS5kb2MubGluZShsaW5lTnVtYmVyKVxuXG5cdFx0bGV0IG5ld0xpbmUgPSBsaW5lLnRleHQ7XG5cdFx0bGV0IG5ld0NoID0gMDtcblx0XHRsZXQgY3VyQ2ggPSBsaW5lLnRleHQubGVuZ3RoO1xuXHRcdGlmIChjaCAhPSAtMSkge1xuXHRcdFx0Y3VyQ2ggPSBjaDtcblx0XHR9XG5cdFx0aWYgKGdldFBvc0xpbmVUeXBlKHN0YXRlLCBsaW5lLmZyb20pID09IExpbmVUeXBlLnRleHQpIHtcblx0XHRcdGxldCBuZXdMaW5lRGF0YSA9IHRoaXMuRm9ybWF0ZXIuZm9ybWF0TGluZShzdGF0ZSwgbGluZU51bWJlciwgdGhpcy5zZXR0aW5ncywgY3VyQ2gsIDApO1xuXHRcdFx0bmV3TGluZSA9IG5ld0xpbmVEYXRhWzBdO1xuXHRcdFx0bmV3Q2ggPSBuZXdMaW5lRGF0YVsxXTtcblx0XHR9XG5cblx0XHRyZXR1cm4gW25ld0xpbmUsIG5ld0NoXTtcblx0fVxuXG5cdGRlbGV0ZUJsYW5rTGluZXMgPSAoZWRpdG9yOiBFZGl0b3IpOiB2b2lkID0+IHtcblx0XHRjb25zdCBiYXNlUGF0aCA9ICh0aGlzLmFwcC52YXVsdC5hZGFwdGVyIGFzIGFueSkuYmFzZVBhdGhcblx0XHRsZXQgY29uZmlnX3BhdGggPSBiYXNlUGF0aCArIFwiL1wiICsgdGhpcy5hcHAudmF1bHQuY29uZmlnRGlyICsgXCIvYXBwLmpzb25cIjtcblx0XHRpZiAodGhpcy5zZXR0aW5ncy5kZWJ1Zykge1xuXHRcdFx0Y29uc29sZS5sb2coY29uZmlnX3BhdGgpO1xuXHRcdFx0bGV0IGNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGNvbmZpZ19wYXRoLCAndXRmLTgnKSlcblx0XHRcdGNvbnNvbGUubG9nKGNvbmZpZyk7XG5cdFx0XHQvLyByZXR1cm47XG5cdFx0fVxuXHRcdC8vIGxldCBjb25maWcgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhjb25maWdfcGF0aCwgJ3V0Zi04JykpXG5cdFx0Ly8gbGV0IHN0cmljdExpbmVCcmVha3MgPSBjb25maWcuc3RyaWN0TGluZUJyZWFrcztcblx0XHQvLyByZXR1cm4gO1xuXG5cdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciwgbm90IHR5cGVkXG5cdFx0Y29uc3QgZWRpdG9yVmlldyA9IGVkaXRvci5jbSBhcyBFZGl0b3JWaWV3O1xuXHRcdGxldCBzdGF0ZSA9IGVkaXRvclZpZXcuc3RhdGU7XG5cdFx0bGV0IGRvYyA9IHN0YXRlLmRvY1xuXHRcdGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHN0YXRlKTtcblx0XHRsZXQgc3RhcnRfbGluZSA9IDE7XG5cdFx0bGV0IGVuZF9saW5lID0gZG9jLmxpbmVzO1xuXHRcdGxldCBsaW5lX251bSA9IGRvYy5saW5lcztcblx0XHRjb25zdCBzZWxlY3RlZCA9IGVkaXRvci5zb21ldGhpbmdTZWxlY3RlZCgpICYmIGVkaXRvci5nZXRTZWxlY3Rpb24oKSAhPSAnJztcblx0XHRpZiAoc2VsZWN0ZWQpIHtcblx0XHRcdGxldCBzZWxlY3Rpb24gPSBlZGl0b3IubGlzdFNlbGVjdGlvbnMoKVswXTtcblx0XHRcdGxldCBiZWdpbiA9IHNlbGVjdGlvbi5hbmNob3IubGluZSArIDE7XG5cdFx0XHRsZXQgZW5kID0gc2VsZWN0aW9uLmhlYWQubGluZSArIDE7XG5cdFx0XHRpZiAoYmVnaW4gPiBlbmQpIHtcblx0XHRcdFx0bGV0IHRlbXAgPSBiZWdpbjtcblx0XHRcdFx0YmVnaW4gPSBlbmQ7XG5cdFx0XHRcdGVuZCA9IHRlbXA7XG5cdFx0XHR9XG5cdFx0XHRzdGFydF9saW5lID0gYmVnaW47XG5cdFx0XHRlbmRfbGluZSA9IGVuZFxuXHRcdH1cblxuXHRcdC8vIGlmKHRoaXMuc2V0dGluZ3MuZGVidWcpe1xuXHRcdC8vIFx0bGV0IGxpbmVfaW5kZXggPSBlZGl0b3IuZ2V0Q3Vyc29yKCkubGluZSArIDE7XG5cdFx0Ly8gXHRsZXQgY29udGVudCA9IGVkaXRvci5nZXRMaW5lKGVkaXRvci5nZXRDdXJzb3IoKS5saW5lKTtcblx0XHQvLyBcdGNvbnNvbGUubG9nKGNvbnRlbnQpO1xuXHRcdC8vIFx0Zm9yIChsZXQgaT0wO2k8Y29udGVudC5sZW5ndGg7aSsrKXtcblx0XHQvLyBcdFx0bGV0IG5vZGUgPSB0cmVlLnJlc29sdmUoZG9jLmxpbmUobGluZV9pbmRleCkuZnJvbStpLCAxKTtcblx0XHQvLyBcdFx0Y29uc29sZS5sb2coaSwgbm9kZS5uYW1lKVxuXHRcdC8vIFx0fVxuXHRcdC8vIFx0cmV0dXJuO1xuXHRcdC8vIH1cblxuXG5cdFx0bGV0IGRlbGV0ZV9pbmRleDogbnVtYmVyW10gPSBbXTtcblx0XHRsZXQgYmxhbmtfcmVnID0gL15cXHMqJC87XG5cdFx0bGV0IHJlbWFpbl9uZXh0X2JsYW5rID0gZmFsc2U7XG5cblx0XHRpZiAoc3RhcnRfbGluZSAhPSAxKSB7XG5cdFx0XHRsZXQgbm9kZSA9IHRyZWUucmVzb2x2ZShkb2MubGluZShzdGFydF9saW5lIC0gMSkuZnJvbSwgMSk7XG5cdFx0XHRpZiAobm9kZS5uYW1lLmNvbnRhaW5zKCdsaXN0JykgfHwgbm9kZS5uYW1lLmNvbnRhaW5zKCdxdW90ZScpIHx8IG5vZGUubmFtZS5jb250YWlucygnYmxvY2tpZCcpKSB7XG5cdFx0XHRcdHJlbWFpbl9uZXh0X2JsYW5rID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGVuZF9saW5lICE9IGxpbmVfbnVtICYmICFibGFua19yZWcudGVzdChkb2MubGluZShlbmRfbGluZSArIDEpLnRleHQpKSB7XG5cdFx0XHRlbmRfbGluZSArPSAxO1xuXHRcdH1cblxuXHRcdGZvciAobGV0IGkgPSBzdGFydF9saW5lOyBpIDw9IGVuZF9saW5lOyBpKyspIHtcblx0XHRcdGxldCBsaW5lID0gZG9jLmxpbmUoaSk7XG5cdFx0XHRsZXQgcG9zID0gbGluZS5mcm9tO1xuXHRcdFx0bGV0IG5vZGUgPSB0cmVlLnJlc29sdmUocG9zLCAxKTtcblxuXHRcdFx0Ly8gXHU1QkY5XHU0RThFXHU3QTdBXHU3NjdEXHU4ODRDXG5cdFx0XHRpZiAoYmxhbmtfcmVnLnRlc3QobGluZS50ZXh0KSAmJiAhcmVtYWluX25leHRfYmxhbmspIHtcblx0XHRcdFx0ZGVsZXRlX2luZGV4LnB1c2goaSk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAoYmxhbmtfcmVnLnRlc3QobGluZS50ZXh0KSAmJiByZW1haW5fbmV4dF9ibGFuaykge1xuXHRcdFx0XHRyZW1haW5fbmV4dF9ibGFuayA9IGZhbHNlO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG5vZGUubmFtZS5jb250YWlucygnaHInKSAmJiBkZWxldGVfaW5kZXhbZGVsZXRlX2luZGV4Lmxlbmd0aCAtIDFdID09IGkgLSAxKSB7XG5cdFx0XHRcdGRlbGV0ZV9pbmRleC5wb3AoKVxuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAobm9kZS5uYW1lLmNvbnRhaW5zKCdsaXN0JykgfHwgbm9kZS5uYW1lLmNvbnRhaW5zKCdxdW90ZScpIHx8IG5vZGUubmFtZS5jb250YWlucygnYmxvY2tpZCcpKSB7XG5cdFx0XHRcdHJlbWFpbl9uZXh0X2JsYW5rID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRyZW1haW5fbmV4dF9ibGFuayA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBjb25zb2xlLmxvZyhcImRlbGV0ZV9pbmRleFwiLGRlbGV0ZV9pbmRleClcblx0XHRsZXQgbmV3Q29udGVudCA9IFwiXCI7XG5cdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBsaW5lX251bTsgaSsrKSB7XG5cdFx0XHRpZiAoIWRlbGV0ZV9pbmRleC5jb250YWlucyhpKSkge1xuXHRcdFx0XHRuZXdDb250ZW50ICs9IGRvYy5saW5lKGkpLnRleHQgKyAnXFxuJztcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKCFkZWxldGVfaW5kZXguY29udGFpbnMobGluZV9udW0pKSB7XG5cdFx0XHRuZXdDb250ZW50ICs9IGRvYy5saW5lKGxpbmVfbnVtKS50ZXh0XG5cdFx0fVxuXG5cdFx0ZWRpdG9yLnNldFZhbHVlKG5ld0NvbnRlbnQpO1xuXHRcdC8vIHRoaXMuQ29udGVudFBhcnNlci5yZXBhcnNlKGVkaXRvci5nZXRWYWx1ZSgpLCAwKTtcblx0fVxuXG5cdHN3aXRjaEF1dG9Gb3JtYXR0aW5nKCkge1xuXHRcdHRoaXMuc2V0dGluZ3MuQXV0b0Zvcm1hdCA9IHRoaXMuc2V0dGluZ3MuQXV0b0Zvcm1hdCA/IGZhbHNlIDogdHJ1ZTtcblx0XHRsZXQgc3RhdHVzID0gdGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ID8gJ29uJyA6ICdvZmYnO1xuXHRcdG5ldyBOb3RpY2UoJ0Vhc3lUeXBpbmc6IEF1dG9mb3JtYXQgaXMgJyArIHN0YXR1cyArICchJyk7XG5cdH1cblxuXHRjb252ZXJ0MkNvZGVCbG9jayhlZGl0b3I6IEVkaXRvcikge1xuXHRcdGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSBjb25zb2xlLmxvZyhcIi0tLS0tIEVhc3lUeXBpbmc6IGluc2VydCBjb2RlIGJsb2NrLS0tLS1cIik7XG5cdFx0aWYgKGVkaXRvci5zb21ldGhpbmdTZWxlY3RlZCAmJiBlZGl0b3IuZ2V0U2VsZWN0aW9uKCkgIT0gXCJcIikge1xuXHRcdFx0bGV0IHNlbGVjdGVkID0gZWRpdG9yLmdldFNlbGVjdGlvbigpO1xuXHRcdFx0bGV0IHNlbGVjdGVkUmFuZ2UgPSBlZGl0b3IubGlzdFNlbGVjdGlvbnMoKVswXTtcblx0XHRcdGxldCBhbmNob3IgPSBzZWxlY3RlZFJhbmdlLmFuY2hvcjtcblx0XHRcdGxldCBoZWFkID0gc2VsZWN0ZWRSYW5nZS5oZWFkO1xuXG5cdFx0XHRsZXQgcmVwbGFjZW1lbnQgPSBcImBgYFxcblwiICsgc2VsZWN0ZWQgKyBcIlxcbmBgYFwiO1xuXHRcdFx0Ly8gbWFrZSBzdXJlIGFuY2hvciA8IGhlYWRcblx0XHRcdGlmIChhbmNob3IubGluZSA+IGhlYWQubGluZSB8fCAoYW5jaG9yLmxpbmUgPT0gaGVhZC5saW5lICYmIGFuY2hvci5jaCA+IGhlYWQuY2gpKSB7XG5cdFx0XHRcdGxldCB0ZW1wID0gYW5jaG9yO1xuXHRcdFx0XHRhbmNob3IgPSBoZWFkO1xuXHRcdFx0XHRoZWFkID0gdGVtcDtcblx0XHRcdH1cblx0XHRcdGxldCBkc3RMaW5lID0gYW5jaG9yLmxpbmU7XG5cdFx0XHRpZiAoYW5jaG9yLmNoICE9IDApIHtcblx0XHRcdFx0cmVwbGFjZW1lbnQgPSAnXFxuJyArIHJlcGxhY2VtZW50O1xuXHRcdFx0XHRkc3RMaW5lICs9IDE7XG5cdFx0XHR9XG5cdFx0XHRpZiAoaGVhZC5jaCAhPSBlZGl0b3IuZ2V0TGluZShoZWFkLmxpbmUpLmxlbmd0aCkge1xuXHRcdFx0XHRyZXBsYWNlbWVudCA9IHJlcGxhY2VtZW50ICsgJ1xcbic7XG5cdFx0XHR9XG5cdFx0XHRlZGl0b3IucmVwbGFjZVNlbGVjdGlvbihyZXBsYWNlbWVudCk7XG5cdFx0XHRlZGl0b3Iuc2V0Q3Vyc29yKHsgbGluZTogZHN0TGluZSwgY2g6IDMgfSk7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0bGV0IGNzID0gZWRpdG9yLmdldEN1cnNvcigpO1xuXHRcdFx0bGV0IHJlcGxhY2UgPSBcImBgYFxcbmBgYFwiO1xuXHRcdFx0bGV0IGRzdExpbmUgPSBjcy5saW5lO1xuXHRcdFx0aWYgKGNzLmNoICE9IDApIHtcblx0XHRcdFx0cmVwbGFjZSA9IFwiXFxuXCIgKyByZXBsYWNlO1xuXHRcdFx0XHRkc3RMaW5lICs9IDE7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3MuY2ggIT0gZWRpdG9yLmdldExpbmUoY3MubGluZSkubGVuZ3RoKSB7XG5cdFx0XHRcdHJlcGxhY2UgPSByZXBsYWNlICsgJ1xcbic7XG5cdFx0XHR9XG5cdFx0XHRlZGl0b3IucmVwbGFjZVJhbmdlKHJlcGxhY2UsIGNzKTtcblx0XHRcdGVkaXRvci5zZXRDdXJzb3IoeyBsaW5lOiBkc3RMaW5lLCBjaDogMyB9KTtcblx0XHR9XG5cblx0fVxuXG5cdHJlZnJlc2hTZWxlY3Rpb25SZXBsYWNlUnVsZSgpIHtcblx0XHR0aGlzLlNlbGVjdGlvblJlcGxhY2VNYXAgPSBuZXcgTWFwKHRoaXMuc2VsZWN0aW9uUmVwbGFjZU1hcEluaXRhbERhdGEpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCB0cmlnZ2VyID0gdGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXJbaV07XG5cdFx0XHRsZXQgbGVmdHMgPSB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWVbaV0ubGVmdDtcblx0XHRcdGxldCByaWdodHMgPSB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWVbaV0ucmlnaHQ7XG5cblx0XHRcdHRoaXMuU2VsZWN0aW9uUmVwbGFjZU1hcC5zZXQodHJpZ2dlciwgeyBsZWZ0OiBsZWZ0cywgcmlnaHQ6IHJpZ2h0cyB9KTtcblx0XHR9XG5cdH1cblxuXHRhZGRVc2VyU2VsZWN0aW9uUmVwUnVsZSh0cmlnZ2VyOiBzdHJpbmcsIGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5pbmNsdWRlcyh0cmlnZ2VyKSkgcmV0dXJuIGZhbHNlO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLnB1c2godHJpZ2dlcilcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWUucHVzaCh7IGxlZnQ6IGxlZnQsIHJpZ2h0OiByaWdodCB9KTtcblx0XHR0aGlzLnJlZnJlc2hTZWxlY3Rpb25SZXBsYWNlUnVsZSgpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0ZGVsZXRlVXNlclNlbGVjdGlvblJlcFJ1bGUoaWR4OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAoaWR4IDwgMCB8fCBpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIubGVuZ3RoKSByZXR1cm47XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIuc3BsaWNlKGlkeCwgMSk7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlLnNwbGljZShpZHgsIDEpO1xuXHRcdHRoaXMucmVmcmVzaFNlbGVjdGlvblJlcGxhY2VSdWxlKCk7XG5cdH1cblxuXHR1cGRhdGVVc2VyU2VsZWN0aW9uUmVwUnVsZShpZHg6IG51bWJlciwgbGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nKSB7XG5cdFx0aWYgKGlkeCA8IDAgfHwgaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLmxlbmd0aCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpZHhdLmxlZnQgPSBsZWZ0O1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpZHhdLnJpZ2h0ID0gcmlnaHQ7XG5cdFx0dGhpcy5yZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKTtcblx0fVxuXG5cdHJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpIHtcblx0XHR0aGlzLlVzZXJEZWxldGVSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdCk7XG5cdH1cblxuXHRhZGRVc2VyRGVsZXRlUnVsZShiZWZvcmU6IHN0cmluZywgYWZ0ZXI6IHN0cmluZykge1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdC5wdXNoKFtiZWZvcmUsIGFmdGVyXSk7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckRlbGV0ZVJ1bGUoKTtcblx0fVxuXG5cdGRlbGV0ZVVzZXJEZWxldGVSdWxlKGlkeDogbnVtYmVyKSB7XG5cdFx0aWYgKGlkeCA+PSB0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3QubGVuZ3RoIHx8IGlkeCA8IDApIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3Quc3BsaWNlKGlkeCwgMSk7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckRlbGV0ZVJ1bGUoKTtcblx0fVxuXG5cdHVwZGF0ZVVzZXJEZWxldGVSdWxlKGlkeDogbnVtYmVyLCBiZWZvcmU6IHN0cmluZywgYWZ0ZXI6IHN0cmluZykge1xuXHRcdGlmIChpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0Lmxlbmd0aCB8fCBpZHggPCAwKSByZXR1cm47XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0W2lkeF1bMF0gPSBiZWZvcmU7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0W2lkeF1bMV0gPSBhZnRlcjtcblx0XHR0aGlzLnJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpO1xuXHR9XG5cblx0cmVmcmVzaFVzZXJDb252ZXJ0UnVsZSgpIHtcblx0XHR0aGlzLlVzZXJDb252ZXJ0UnVsZXMgPSBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdCh0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0KTtcblx0fVxuXG5cdGFkZFVzZXJDb252ZXJ0UnVsZShiZWZvcmU6IHN0cmluZywgYWZ0ZXI6IHN0cmluZykge1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QucHVzaChbYmVmb3JlLCBhZnRlcl0pO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJDb252ZXJ0UnVsZSgpO1xuXHR9XG5cblx0ZGVsZXRlVXNlckNvbnZlcnRSdWxlKGlkeDogbnVtYmVyKSB7XG5cdFx0aWYgKGlkeCA+PSB0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0Lmxlbmd0aCB8fCBpZHggPCAwKSByZXR1cm47XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5zcGxpY2UoaWR4LCAxKTtcblx0XHR0aGlzLnJlZnJlc2hVc2VyQ29udmVydFJ1bGUoKTtcblx0fVxuXG5cdGdldENvbW1hbmROYW1lTWFwKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuXHRcdGNvbnN0IGxhbmcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJyk7XG5cblx0XHRsZXQgY29tbWFuZF9uYW1lX21hcF9lbiA9IG5ldyBNYXAoW1xuXHRcdFx0W1wiZm9ybWF0X2FydGljbGVcIiwgXCJGb3JtYXQgY3VycmVudCBhcnRpY2xlXCJdLFxuXHRcdFx0W1wiZm9ybWF0X3NlbGVjdGlvblwiLCBcIkZvcm1hdCBzZWxlY3RlZCB0ZXh0IG9yIGN1cnJlbnQgbGluZVwiXSxcblx0XHRcdFtcImRlbGV0ZV9ibGFua19saW5lXCIsIFwiRGVsZXRlIGJsYW5rIGxpbmVzIG9mIHRoZSBzZWxlY3RlZCBvciB3aG9sZSBhcnRpY2xlXCJdLFxuXHRcdFx0W1wiaW5zZXJ0X2NvZGVibG9ja1wiLCBcIkluc2VydCBjb2RlIGJsb2NrIHcvd28gc2VsZWN0aW9uXCJdLFxuXHRcdFx0W1wic3dpdGNoX2F1dG9mb3JtYXRcIiwgXCJTd2l0Y2ggYXV0b2Zvcm1hdFwiXSxcblx0XHRcdFtcInBhc3RlX3dvX2Zvcm1hdFwiLCBcIlBhc3RlIHdpdGhvdXQgZm9ybWF0XCJdLFxuXHRcdF0pO1xuXG5cdFx0bGV0IGNvbW1hbmRfbmFtZV9tYXBfemhfVFcgPSBuZXcgTWFwKFtcblx0XHRcdFtcImZvcm1hdF9hcnRpY2xlXCIsIFwiXHU2ODNDXHU1RjBGXHU1MzE2XHU1MTY4XHU2NTg3XCJdLFxuXHRcdFx0W1wiZm9ybWF0X3NlbGVjdGlvblwiLCBcIlx1NjgzQ1x1NUYwRlx1NTMxNlx1OTA3OFx1NEUyRFx1OTBFOFx1NTIwNi9cdTc1NzZcdTUyNERcdTg4NENcIl0sXG5cdFx0XHRbXCJkZWxldGVfYmxhbmtfbGluZVwiLCBcIlx1NTIyQVx1OTY2NFx1OTA3OFx1NEUyRFx1OTBFOFx1NTIwNi9cdTUxNjhcdTY1ODdcdTc2ODRcdTU5MUFcdTk5MThcdTdBN0FcdTc2N0RcdTg4NENcIl0sXG5cdFx0XHRbXCJpbnNlcnRfY29kZWJsb2NrXCIsIFwiXHU2M0QyXHU1MTY1XHU0RUUzXHU3OEJDXHU1ODRBXCJdLFxuXHRcdFx0W1wic3dpdGNoX2F1dG9mb3JtYXRcIiwgXCJcdTUyMDdcdTYzREJcdTgxRUFcdTUyRDVcdTY4M0NcdTVGMEZcdTUzMTZcdTk1OEJcdTk1RENcIl0sXG5cdFx0XHRbXCJwYXN0ZV93b19mb3JtYXRcIiwgXCJcdTcxMjFcdTY4M0NcdTVGMEZcdTUzMTZcdTdDOThcdThDQkNcIl0sXG5cdFx0XSk7XG5cblx0XHRsZXQgY29tbWFuZF9uYW1lX21hcF96aCA9IG5ldyBNYXAoW1xuXHRcdFx0W1wiZm9ybWF0X2FydGljbGVcIiwgXCJcdTY4M0NcdTVGMEZcdTUzMTZcdTUxNjhcdTY1ODdcIl0sXG5cdFx0XHRbXCJmb3JtYXRfc2VsZWN0aW9uXCIsIFwiXHU2ODNDXHU1RjBGXHU1MzE2XHU5MDA5XHU0RTJEXHU5MEU4XHU1MjA2L1x1NUY1M1x1NTI0RFx1ODg0Q1wiXSxcblx0XHRcdFtcImRlbGV0ZV9ibGFua19saW5lXCIsIFwiXHU1MjJBXHU5NjY0XHU5MDA5XHU0RTJEXHU5MEU4XHU1MjA2L1x1NTE2OFx1NjU4N1x1NzY4NFx1NTkxQVx1NEY1OVx1N0E3QVx1NzY3RFx1ODg0Q1wiXSxcblx0XHRcdFtcImluc2VydF9jb2RlYmxvY2tcIiwgXCJcdTYzRDJcdTUxNjVcdTRFRTNcdTc4MDFcdTU3NTdcIl0sXG5cdFx0XHRbXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiLCBcIlx1NTIwN1x1NjM2Mlx1ODFFQVx1NTJBOFx1NjgzQ1x1NUYwRlx1NTMxNlx1NUYwMFx1NTE3M1wiXSxcblx0XHRcdFtcInBhc3RlX3dvX2Zvcm1hdFwiLCBcIlx1NjVFMFx1NjgzQ1x1NUYwRlx1NTMxNlx1N0M5OFx1OEQzNFwiXSxcblx0XHRdKTtcblxuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwID0gY29tbWFuZF9uYW1lX21hcF9lbjtcblx0XHRpZiAobGFuZyA9PSAnemgnKSB7XG5cdFx0XHRjb21tYW5kX25hbWVfbWFwID0gY29tbWFuZF9uYW1lX21hcF96aDtcblx0XHR9XG5cdFx0ZWxzZSBpZiAobGFuZyA9PSAnemgtVFcnKSB7XG5cdFx0XHRjb21tYW5kX25hbWVfbWFwID0gY29tbWFuZF9uYW1lX21hcF96aF9UVztcblx0XHR9XG5cblx0XHRyZXR1cm4gY29tbWFuZF9uYW1lX21hcDtcblx0fVxuXG5cdHVwZGF0ZVVzZXJDb252ZXJ0UnVsZShpZHg6IG51bWJlciwgYmVmb3JlOiBzdHJpbmcsIGFmdGVyOiBzdHJpbmcpIHtcblx0XHRpZiAoaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QubGVuZ3RoIHx8IGlkeCA8IDApIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0W2lkeF1bMF0gPSBiZWZvcmU7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdFtpZHhdWzFdID0gYWZ0ZXI7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckNvbnZlcnRSdWxlKCk7XG5cdH1cblxuXHRnZXRFZGl0b3IgPSAoKTogRWRpdG9yIHwgbnVsbCA9PiB7XG5cdFx0bGV0IGVkaXRvciA9IG51bGw7XG5cdFx0bGV0IG1hcmtkb3duVmlldyA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG5cdFx0aWYgKG1hcmtkb3duVmlldykge1xuXHRcdFx0ZWRpdG9yID0gbWFya2Rvd25WaWV3LmVkaXRvcjtcblx0XHR9XG5cdFx0aWYgKGVkaXRvciA9PT0gbnVsbCkgY29uc29sZS5sb2coJ2NhblxcJ3QgZ2V0IGVkaXRvcicpO1xuXHRcdHJldHVybiBlZGl0b3I7XG5cdH1cblxuXHRhc3luYyBsb2FkU2V0dGluZ3MoKSB7XG5cdFx0dGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfU0VUVElOR1MsIGF3YWl0IHRoaXMubG9hZERhdGEoKSk7XG5cdH1cblxuXHRhc3luYyBzYXZlU2V0dGluZ3MoKSB7XG5cdFx0YXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcblx0fVxufSIsICJpbXBvcnQgeyBOb3RpY2V9IGZyb20gXCJvYnNpZGlhblwiXG5pbXBvcnQgeyBFYXN5VHlwaW5nU2V0dGluZ3MsIFdvcmtNb2RlIH0gZnJvbSAnLi9zZXR0aW5ncydcbmltcG9ydCB7IEFubm90YXRpb24sIEVkaXRvclN0YXRlLCBFeHRlbnNpb24sIFN0YXRlRmllbGQsIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblNwZWMsIFRleHQsIExpbmUgfSBmcm9tICdAY29kZW1pcnJvci9zdGF0ZSc7XG5pbXBvcnQgeyBvZmZzZXRUb1BvcywgcG9zVG9PZmZzZXQsIHN0cmluZ0RlbGV0ZUF0LCBzdHJpbmdJbnNlcnRBdCwgaXNQYXJhbURlZmluZWR9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBzeW50YXhUcmVlIH0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5cbmV4cG9ydCBlbnVtIExpbmVUeXBlIHsgdGV4dCA9ICd0ZXh0JywgY29kZWJsb2NrID0gJ2NvZGVibG9jaycsIGZvcm11bGEgPSAnZm9ybXVsYScsIFxuICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSA9ICdub25lJywgZnJvbnRtYXR0ZXI9XCJmcm9udG1hdHRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGU9J3F1b3RlJywgY2FsbG91dF90aXRsZT0nY2FsbG91dF90aXRsZScsIGxpc3Q9J2xpc3QnIH1cblxuZXhwb3J0IGVudW0gU3BhY2VTdGF0ZSB7XG4gICAgbm9uZSxcbiAgICBzb2Z0LFxuICAgIHN0cmljdFxufVxuXG5leHBvcnQgZW51bSBJbmxpbmVUeXBlIHtcbiAgICB0ZXh0ID0gJ3RleHQnLCBjb2RlID0gJ2NvZGUnLCBmb3JtdWxhID0gJ2Zvcm11bGEnLFxuICAgIHdpa2lsaW5rID0gJ3dpa2lsaW5rJywgbWRsaW5rID0gXCJtZGxpbmtcIixcbiAgICB1c2VyID0gJ3VzZXItZGVmaW5lZCcsIG5vbmUgPSAnbm9uZSdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbmxpbmVDaGFuZ2Uge1xuICAgIHRleHQ6IHN0cmluZyxcbiAgICBiZWdpbjogbnVtYmVyLFxuICAgIGVuZDogbnVtYmVyLFxuICAgIG9yaWdpbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWNsZVBhcnQge1xuICAgIHR5cGU6IExpbmVUeXBlO1xuICAgIGJlZ2luOiBudW1iZXI7XG4gICAgZW5kOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbmxpbmVQYXJ0IHtcbiAgICBjb250ZW50OiBzdHJpbmc7XG4gICAgdHlwZTogSW5saW5lVHlwZTtcbiAgICBiZWdpbjogbnVtYmVyO1xuICAgIGVuZDogbnVtYmVyO1xuICAgIGxlZnRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGU7XG4gICAgcmlnaHRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGU7XG59XG5cbmV4cG9ydCBjbGFzcyBMaW5lRm9ybWF0ZXIge1xuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG4gICAgc3ludGF4VHJlZU5vZGVOYW1lVHlwZShuYW1lOnN0cmluZyk6SW5saW5lVHlwZXtcbiAgICAgICAgaWYobmFtZS5jb250YWlucygnY29kZScpICYmICFuYW1lLmNvbnRhaW5zKFwibGlua1wiKSl7XG4gICAgICAgICAgICByZXR1cm4gSW5saW5lVHlwZS5jb2RlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYobmFtZS5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgICAgIHJldHVybiBJbmxpbmVUeXBlLmZvcm11bGE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIHJldHVybiBJbmxpbmVUeXBlLnRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBwYXJhbSBsaW5lTnVtOiAxLWJhc2VkIGxpbmUgbnVtYmVyXG4gICAgcGFyc2VMaW5lV2l0aFN5bnRheFRyZWUoc3RhdGU6IEVkaXRvclN0YXRlLCBsaW5lTnVtOm51bWJlciwgcmVnUmVnRXhwPzogc3RyaW5nKXtcbiAgICAgICAgbGV0IGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGE6IElubGluZVBhcnRbXSA9IFtdO1xuICAgICAgICBsZXQgbGluZSA9IHN0YXRlLmRvYy5saW5lKGxpbmVOdW0pO1xuICAgICAgICBjb25zdCB0cmVlID0gc3ludGF4VHJlZShzdGF0ZSk7XG4gICAgICAgIGxldCBwb3MgPSBsaW5lLmZyb207XG4gICAgICAgIGxldCBwcmV2Tm9kZVR5cGU6SW5saW5lVHlwZSA9IElubGluZVR5cGUubm9uZTtcbiAgICAgICAgbGV0IHByZXZCZWdpbklkeCA9IDA7XG4gICAgICAgIHdoaWxlKHBvczxsaW5lLnRvKXtcbiAgICAgICAgICAgIGxldCBub2RlID0gdHJlZS5yZXNvbHZlKHBvcywgMSk7XG4gICAgICAgICAgICBsZXQgY3VyTm9kZVR5cGUgPSB0aGlzLnN5bnRheFRyZWVOb2RlTmFtZVR5cGUobm9kZS5uYW1lKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZihwcmV2Tm9kZVR5cGU9PUlubGluZVR5cGUubm9uZSl7XG4gICAgICAgICAgICAgICAgcHJldk5vZGVUeXBlPWN1ck5vZGVUeXBlO1xuICAgICAgICAgICAgICAgIHByZXZCZWdpbklkeD0wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZihwcmV2Tm9kZVR5cGU9PWN1ck5vZGVUeXBlKXt9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICAgIGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGEucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6bGluZS50ZXh0LnN1YnN0cmluZyhwcmV2QmVnaW5JZHgsIHBvcy1saW5lLmZyb20pLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOnByZXZOb2RlVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46cHJldkJlZ2luSWR4LFxuICAgICAgICAgICAgICAgICAgICBlbmQ6cG9zLWxpbmUuZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTpTcGFjZVN0YXRlLm5vbmUsXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOlNwYWNlU3RhdGUubm9uZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgcHJldk5vZGVUeXBlID0gY3VyTm9kZVR5cGU7XG4gICAgICAgICAgICAgICAgcHJldkJlZ2luSWR4ID0gcG9zLWxpbmUuZnJvbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHVwZGF0ZSBuZXh0IHBvc1xuICAgICAgICAgICAgaWYgKGN1ck5vZGVUeXBlID09IElubGluZVR5cGUudGV4dCl7XG4gICAgICAgICAgICAgICAgcG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICAgIHBvcyA9IG5vZGUudG87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKHBvcz09bGluZS50byl7XG4gICAgICAgICAgICAgICAgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDpsaW5lLnRleHQuc3Vic3RyaW5nKHByZXZCZWdpbklkeCwgcG9zLWxpbmUuZnJvbSksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6cHJldk5vZGVUeXBlLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjpwcmV2QmVnaW5JZHgsXG4gICAgICAgICAgICAgICAgICAgIGVuZDpwb3MtbGluZS5mcm9tLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOlNwYWNlU3RhdGUubm9uZSxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6U3BhY2VTdGF0ZS5ub25lXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImxpbmUgcGFydHM6IFwiLCBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhKTtcbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIGxldCByZXRBcnJheTogSW5saW5lUGFydFtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0udHlwZSAhPSBJbmxpbmVUeXBlLnRleHQpIHtcbiAgICAgICAgICAgICAgICByZXRBcnJheS5wdXNoKGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHRlbXBBcnJheTogSW5saW5lUGFydFtdO1xuICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChyZWdSZWdFeHApKVxuICAgICAgICAgICAgICAgICAgICB0ZW1wQXJyYXkgPSBzcGxpdFRleHRXaXRoTGlua0FuZFVzZXJEZWZpbmVkKGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0uY29udGVudCwgcmVnUmVnRXhwKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRlbXBBcnJheSA9IHNwbGl0VGV4dFdpdGhMaW5rQW5kVXNlckRlZmluZWQobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXS5jb250ZW50KTtcbiAgICBcbiAgICAgICAgICAgICAgICB0ZW1wQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5iZWdpbiArPSBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhW2ldLmJlZ2luO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmVuZCArPSBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhW2ldLmJlZ2luO1xuICAgICAgICAgICAgICAgICAgICByZXRBcnJheS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHJldEFycmF5KVxuICAgICAgICByZXR1cm4gcmV0QXJyYXk7XG4gICAgfVxuXG4gICAgZm9ybWF0TGluZU9mRG9jKHN0YXRlOiBFZGl0b3JTdGF0ZSwgc2V0dGluZ3M6IEVhc3lUeXBpbmdTZXR0aW5ncywgZnJvbUI6IG51bWJlciwgdG9COiBudW1iZXIsIGluc2VydGVkU3RyOiBzdHJpbmcpOiBbVHJhbnNhY3Rpb25TcGVjW10sIFRyYW5zYWN0aW9uU3BlY10gfCBudWxsIHtcbiAgICAgICAgbGV0IGRvYyA9IHN0YXRlLmRvYztcbiAgICAgICAgbGV0IGxpbmUgPSBkb2MubGluZUF0KGZyb21CKS50ZXh0O1xuICAgICAgICBsZXQgcmVzID0gbnVsbFxuICAgICAgICBpZiAoaW5zZXJ0ZWRTdHIuY29udGFpbnMoXCJcXG5cIikpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlcyA9IHRoaXMuZm9ybWF0TGluZShzdGF0ZSwgZG9jLmxpbmVBdChmcm9tQikubnVtYmVyLCBzZXR0aW5ncywgb2Zmc2V0VG9Qb3MoZG9jLCBmcm9tQikuY2gsIG9mZnNldFRvUG9zKGRvYywgdG9CLTEpLmNoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlcyA9IHRoaXMuZm9ybWF0TGluZShzdGF0ZSwgZG9jLmxpbmVBdChmcm9tQikubnVtYmVyLCBzZXR0aW5ncywgb2Zmc2V0VG9Qb3MoZG9jLCB0b0IpLmNoLCBvZmZzZXRUb1Bvcyhkb2MsIGZyb21CKS5jaCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcyA9PT1udWxsIHx8IHJlc1syXS5sZW5ndGg9PTApIHJldHVybiBudWxsO1xuICAgICAgICBcbiAgICAgICAgbGV0IG5ld2xpbmUgPSBzdHJpbmdJbnNlcnRBdChyZXNbMF0sIHJlc1sxXSwgXCJ8XCIpO1xuICAgICAgICAvLyBpZiAoc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiRWFzeVR5cGluZzogTmV3IExpbmUgU3RyaW5nOlwiLCBuZXdsaW5lKVxuXG4gICAgICAgIGxldCBjaGFuZ2VzOiBUcmFuc2FjdGlvblNwZWNbXSA9IFtdO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gZG9jLmxpbmVBdChmcm9tQikuZnJvbTtcblxuICAgICAgICBmb3IobGV0IGNoYW5nZUl0ZW0gb2YgcmVzWzJdKVxuICAgICAgICB7XG4gICAgICAgICAgICBjaGFuZ2VzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNoYW5nZXM6e2Zyb206IG9mZnNldCtjaGFuZ2VJdGVtLmJlZ2luLCB0bzpvZmZzZXQrY2hhbmdlSXRlbS5lbmQsIGluc2VydDpjaGFuZ2VJdGVtLnRleHR9LCB1c2VyRXZlbnQ6XCJFYXN5VHlwaW5nLmNoYW5nZVwiXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbnNlcnRlZFN0ci5jb250YWlucyhcIlxcblwiKSl7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImluc2VydFN0clwiLCBpbnNlcnRlZFN0cilcbiAgICAgICAgICAgIHJlc1sxXSs9IGluc2VydGVkU3RyLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2NoYW5nZXMsIHtzZWxlY3Rpb246e2FuY2hvcjpvZmZzZXQrcmVzWzFdfSwgdXNlckV2ZW50OlwiRWFzeVR5cGluZy5jaGFuZ2VcIn1dO1xuICAgIH1cblxuICAgIC8vIFx1OEZENFx1NTZERVx1NTAzQ1x1RkYxQSBbXHU2NzAwXHU3RUM4XHU3Njg0XHU4ODRDXHVGRjBDXHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXHVGRjBDXHU1MTg1XHU1QkI5XHU2NTM5XHU1M0Q4XVxuICAgIC8vIHBhcmFtIGxpbmVOdW06IDEtYmFzZWQgbGluZSBudW1iZXJcbiAgICBmb3JtYXRMaW5lKHN0YXRlOiBFZGl0b3JTdGF0ZSwgbGluZU51bTpudW1iZXIsIHNldHRpbmdzOiBFYXN5VHlwaW5nU2V0dGluZ3MsIGN1ckNoOiBudW1iZXIsIHByZXZDaD86IG51bWJlcik6IFtzdHJpbmcsIG51bWJlciwgSW5saW5lQ2hhbmdlW11dIHwgbnVsbCB7XG4gICAgICAgIC8vIG5ldyBOb3RpY2UoXCJmb3JtYXQtbm93XCIpO1xuICAgICAgICBsZXQgbGluZSA9IHN0YXRlLmRvYy5saW5lKGxpbmVOdW0pLnRleHQ7XG4gICAgICAgIGxldCByZWdOdWxsID0gL15cXHMqJC9nO1xuICAgICAgICBpZiAocmVnTnVsbC50ZXN0KGxpbmUpKSByZXR1cm4gW2xpbmUsIGN1ckNoLCBbXV07XG4gICAgICAgIC8vIDEuIFx1NTIxMlx1NTIwNlx1NEUwMFx1ODg0Q1x1NjU4N1x1NUI1N1x1NzY4NFx1NTE4NVx1OTBFOFx1NEUwRFx1NTQwQ1x1NkEyMVx1NTc1N1x1NTMzQVx1NTdERlxuICAgICAgICBsZXQgbGluZVBhcnRzOiBJbmxpbmVQYXJ0W107XG4gICAgICAgIGlmIChzZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ1N3aXRjaCkge1xuICAgICAgICAgICAgLy8gbGluZVBhcnRzID0gdGhpcy5wYXJzZUxpbmUobGluZSwgc2V0dGluZ3MuVXNlckRlZmluZWRSZWdFeHApO1xuICAgICAgICAgICAgbGluZVBhcnRzID0gdGhpcy5wYXJzZUxpbmVXaXRoU3ludGF4VHJlZShzdGF0ZSwgbGluZU51bSwgc2V0dGluZ3MuVXNlckRlZmluZWRSZWdFeHApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gbGluZVBhcnRzID0gdGhpcy5wYXJzZUxpbmUobGluZSk7XG4gICAgICAgICAgICBsaW5lUGFydHMgPSB0aGlzLnBhcnNlTGluZVdpdGhTeW50YXhUcmVlKHN0YXRlLCBsaW5lTnVtKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAoc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwibGluZSBwYXJ0c1xcblwiLCBsaW5lUGFydHMpO1xuXG4gICAgICAgIC8vIFx1NTkwN1x1NEVGRFx1NTM5Rlx1Njc2NVx1NzY4NGxpbmVQYXJ0cywgXHU2REYxXHU2MkY3XHU4RDFEXG4gICAgICAgIGxldCBsaW5lUGFydHNPcmlnaW4gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGxpbmVQYXJ0cykpO1xuICAgICAgICBsZXQgaW5saW5lQ2hhbmdlTGlzdDogSW5saW5lQ2hhbmdlW10gPSBbXTtcblxuICAgICAgICBsZXQgY3Vyc29yTGluZVBhcnRJbmRleCA9IC0xO1xuICAgICAgICBsZXQgY3Vyc29yUmVsYXRpdmVJbmRleCA9IC0xO1xuICAgICAgICBsZXQgcmVzdWx0Q3Vyc29yQ2ggPSAwOyAgICAgLy8gXHU4RjkzXHU1MUZBXHU3Njg0XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXG5cbiAgICAgICAgLy8gMi4gXHU2MjdFXHU1MjMwXHU1MTQ5XHU2ODA3XHU2MjQwXHU1NzI4XHU3Njg0XHU5MEU4XHU1MjA2XHVGRjBDXHU1OTgyXHU2NzlDXHU2NjJGIElubGluZVBhcnQudGV4dFx1RkYwQ1x1NTIxOVx1NTcyOFx1NTE0OVx1NjgwN1x1NTkwNFx1NjNEMlx1NTE2NSdcXDAnXHU2NzY1XHU2ODA3XHU4QkIwXHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZVBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoY3VyQ2ggPiBsaW5lUGFydHNbaV0uYmVnaW4gJiYgY3VyQ2ggPD0gbGluZVBhcnRzW2ldLmVuZCkge1xuICAgICAgICAgICAgICAgIGN1cnNvckxpbmVQYXJ0SW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGN1cnNvclJlbGF0aXZlSW5kZXggPSBjdXJDaCAtIGxpbmVQYXJ0c1tpXS5iZWdpbjtcbiAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLnR5cGUgPT09IElubGluZVR5cGUudGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IHN0cmluZ0luc2VydEF0KGxpbmVQYXJ0c1tpXS5jb250ZW50LCBjdXJzb3JSZWxhdGl2ZUluZGV4LCAnXFwwJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHRMaW5lID0gJyc7XG4gICAgICAgIGxldCBvZmZzZXQgPSAwO1xuICAgICAgICAvLyBcdTRGRERcdTVCNThcdTUyNERcdTRFMDBcdTkwRThcdTUyMDZcdTc2ODRcdTUzM0FcdTU3NTdcdTdDN0JcdTU3OEJcdUZGMENJbmxpbmVUeXBlLm5vbmUgXHU0RUUzXHU4ODY4XHU0RTAwXHU4ODRDXHU3Njg0XHU1RjAwXHU1OUNCXG4gICAgICAgIGxldCBwcmV2UGFydFR5cGU6IHN0cmluZyA9IElubGluZVR5cGUubm9uZTtcbiAgICAgICAgbGV0IHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZTtcblxuICAgICAgICAvLyAzLiBcdTkwNERcdTUzODZcdTZCQ0ZcdTRFMkFcdTg4NENcdTkwRThcdTUyMDZcdUZGMENcdThGREJcdTg4NENcdTY4M0NcdTVGMEZcdTUzMTZcdTU5MDRcdTc0MDZcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIC8vIDMuMSBcdTU5ODJcdTY3OUNcdTg4NENcdTUxODVcdTdCMkNcdTRFMDBcdTkwRThcdTUyMDZcdTRFM0FcdTY1ODdcdTY3MkNcdUZGMENcdTUyMTlcdTU5MDRcdTc0MDZcdTUzRTVcdTk5OTZcdTVCNTdcdTZCQ0RcdTU5MjdcdTUxOTlcdTc2ODRcdTkwRThcdTUyMDZcbiAgICAgICAgICAgIGlmIChpID09PSAwICYmIGxpbmVQYXJ0c1tpXS50eXBlID09PSBJbmxpbmVUeXBlLnRleHQgJiYgc2V0dGluZ3MuQXV0b0NhcGl0YWwpIHtcbiAgICAgICAgICAgICAgICAvLyAzLjEuMSBcdTU5ODJcdTY3OUMgcHJldkN1cnNvciBcdTRFMTRcdTUxNDlcdTY4MDdcdTRFMERcdTU3MjhcdTZCNjRcdTkwRThcdTUyMDZcdUZGMENcdTUyMTlcdThERjNcdThGQzdcbiAgICAgICAgICAgICAgICBpZiAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiBjdXJzb3JMaW5lUGFydEluZGV4ICE9IDApIHsgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVnRmlyc3RTZW50ZW5jZSA9IC9eXFxzKihcXC0gKFxcW1t4IF1cXF0gKT8pP1x1MjAxQz9bYS16XFx1MDQwMVxcdTA0NTFcXHUwNDEwLVxcdTA0NGZdL2c7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdIZWFkZXJTZW50ZW5jZSA9IC9eKCMrIHw+KyA/fFx1MjAxQylbYS16XFx1MDQwMVxcdTA0NTFcXHUwNDEwLVxcdTA0NGZdL2c7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0Y29weSA9IGxpbmVQYXJ0c1swXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWdGaXJzdFNlbnRlbmNlLmV4ZWModGV4dGNvcHkpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2hIZWFkZXIgPSByZWdIZWFkZXJTZW50ZW5jZS5leGVjKHRleHRjb3B5KTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRzdENoYXJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdENoYXJJbmRleCA9IHJlZ0ZpcnN0U2VudGVuY2UubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtYXRjaEhlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHN0Q2hhckluZGV4ID0gcmVnSGVhZGVyU2VudGVuY2UubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5BdXRvQ2FwaXRhbE1vZGUgPT0gV29ya01vZGUuR2xvYmFsbHkgfHwgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgZHN0Q2hhckluZGV4ID49IHByZXZDaCAmJiBkc3RDaGFySW5kZXggPCBjdXJDaCkpIHsgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdENoYXJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRzdENoYXJJbmRleCAhPSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbMF0uY29udGVudCA9IHRleHRjb3B5LnN1YnN0cmluZygwLCBkc3RDaGFySW5kZXgpICsgdGV4dGNvcHkuY2hhckF0KGRzdENoYXJJbmRleCkudG9VcHBlckNhc2UoKSArIHRleHRjb3B5LnN1YnN0cmluZyhkc3RDaGFySW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3dpdGNoIChsaW5lUGFydHNbaV0udHlwZSkge1xuICAgICAgICAgICAgICAgIC8vIDMuMi4xIFx1NTkwNFx1NzQwNlx1NjU4N1x1NjcyQ1x1NTMzQVx1NTc1N1xuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS50ZXh0OlxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjQgXHU1OTA0XHU3NDA2XHU1M0U1XHU5OTk2XHU1QjU3XHU2QkNEXHU1OTI3XHU1MTk5XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5BdXRvQ2FwaXRhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZyA9IC9bXFwuXFw/XFwhXHUzMDAyXHVGRjAxXHVGRjFGXShbXFxzXSopW2EtelxcdTA0MDFcXHUwNDUxXFx1MDQxMC1cXHUwNDRmXS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWcuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJwcmV2Q2gsIGN1ckNoLCBvZmZzZXQsIHRlbXBJbmRleFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHByZXZDaCwgY3VyQ2gsIG9mZnNldCwgdGVtcEluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc1NwYWNlRG90ID0gdGVtcEluZGV4LTI8MCB8fCBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgtMiwgdGVtcEluZGV4KT09JyAuJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuQXV0b0NhcGl0YWxNb2RlID09IFdvcmtNb2RlLkdsb2JhbGx5ICYmICFpc1NwYWNlRG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIGNvbnRlbnQuY2hhckF0KHRlbXBJbmRleCkudG9VcHBlckNhc2UoKSArIGNvbnRlbnQuc3Vic3RyaW5nKHJlZy5sYXN0SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCAmJiAhaXNTcGFjZURvdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBjb250ZW50LmNoYXJBdCh0ZW1wSW5kZXgpLnRvVXBwZXJDYXNlKCkgKyBjb250ZW50LnN1YnN0cmluZyhyZWcubGFzdEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSAgIFxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRleHQuMSBcdTU5MDRcdTc0MDZcdTRFMkRcdTgyRjFcdTY1ODdcdTRFNEJcdTk1RjRcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkNoaW5lc2VFbmdsaXNoU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcxID0gLyhbQS1aYS16XSkoW1xcdTRlMDAtXFx1OWZhNV0pL2dpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZzIgPSAvKFtcXHU0ZTAwLVxcdTlmYTVdKShbQS1aYS16XSkvZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShyZWcxLCBcIiQxICQyXCIpLnJlcGxhY2UocmVnMiwgXCIkMSAkMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5DaGluZXNlTnVtYmVyU3BhY2Upe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oWzAtOV0pKFtcXHU0ZTAwLVxcdTlmYTVdKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWcuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyQ2ggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMSA9IC8oW1xcdTRlMDAtXFx1OWZhNV0pKFswLTldKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWcxLmV4ZWMoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBJbmRleCA9IHJlZzEubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiB0ZW1wSW5kZXggPj0gcHJldkNoIC0gb2Zmc2V0ICYmIHRlbXBJbmRleCA8IGN1ckNoIC0gb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgXCIgXCIgKyBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJDaCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5FbmdsaXNoTnVtYmVyU3BhY2Upe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oW0EtWmEtel0pKFxcZCkvZztcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoID0gcmVnLmV4ZWMoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBJbmRleCA9IHJlZy5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIHRlbXBJbmRleCA+PSBwcmV2Q2ggLSBvZmZzZXQgJiYgdGVtcEluZGV4IDwgY3VyQ2ggLSBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBcIiBcIiArIGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZzEgPSAvKFxcZCkoW0EtWmEtel0pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZzEuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnMS5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIHRlbXBJbmRleCA+PSBwcmV2Q2ggLSBvZmZzZXQgJiYgdGVtcEluZGV4IDwgY3VyQ2ggLSBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBcIiBcIiArIGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVGV4dC4yIFx1NTkwNFx1NzQwNlx1NEUyRFx1NjU4N1x1OTVGNFx1NjVFMFx1N0E3QVx1NjgzQ1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuQ2hpbmVzZU5vU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcgPSAvKFtcXHU0ZTAwLVxcdTlmYTVcdUZGMENcdTMwMDJcdTMwMDFcdUZGMUJcdTIwMThcdTIwMTlcdTMwMEFcdTMwMEJdKykoXFxzKykoW1xcdTRlMDAtXFx1OWZhNVx1RkYwQ1x1MzAwMlx1MzAwMVx1RkYxQlx1MjAxOFx1MjAxOVx1MzAwQVx1MzAwQl0rKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHJlZy5leGVjKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocmVnLCBcIiQxJDNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gXHU2ODA3XHU3MEI5XHU0RTBFXHU2NTg3XHU2NzJDXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5QdW5jdHVhdGlvblNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjMgXHU1OTA0XHU3NDA2XHU2ODA3XHU3MEI5XHU0RTBFXHU2NTg3XHU2NzJDXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZihzZXR0aW5ncy5FbmdsaXNoU3BhY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oWyxcXC47XFw/XFwhXFwpXSkoWzAtOUEtWmEtelxcdTA0MDFcXHUwNDUxXFx1MDQxMC1cXHUwNDRmXSl8KFtBLVphLXowLTlcXHU0ZTAwLVxcdTlmYTU6LFxcLlxcP1xcISdcIl0rKShcXCgpfFssXFwuO1xcPzohXVtcXHU0ZTAwLVxcdTlmYTVdL2dpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZy5leGVjKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBJbmRleCA9IHJlZy5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNTcGFjZURvdCA9ICchLj87LCcuY29udGFpbnMoY29udGVudC5jaGFyQXQodGVtcEluZGV4LTEpKSAmJiAodGVtcEluZGV4LTI8MCB8fCBjb250ZW50LmNoYXJBdCh0ZW1wSW5kZXgtMik9PScgJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc051bVB1bmNOdW0gPSAvWywuXVxcZC8udGVzdChjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgtMSwgdGVtcEluZGV4KzEpKSAmJiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVtcEluZGV4LTI8MCB8fCAvXFxkLy50ZXN0KGNvbnRlbnQuY2hhckF0KHRlbXBJbmRleC0yKSkpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2VNb2RlID09IFdvcmtNb2RlLkdsb2JhbGx5ICYmICFpc1NwYWNlRG90ICYmICFpc051bVB1bmNOdW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgXCIgXCIgKyBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhaXNTcGFjZURvdCAmJiAhaXNOdW1QdW5jTnVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBcdTUzNTVcdTcyRUNcdTU5MDRcdTc0MDZcdTUxOTJcdTUzRjdcdTU0MEVcdTY1ODdcdTY3MkNcdTc2ODRcdTgxRUFcdTUyQThcdTdBN0FcdTY4M0NcdUZGMENcdTRFM0FcdTRFODZcdTUxN0NcdTVCQjkgOmVtb2ppOiBcdTY4M0NcdTVGMEZcdTc2ODRcdThGOTNcdTUxNjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMiA9IC8oOikoW0EtWmEtejAtOV9dK1sgLFxcLlxcP1xcXFxcXC87J1wiXHVGRjBDXHUzMDAyXHVGRjFGXHVGRjFCXHUyMDE4XHUyMDFDXHUyMDFEXHUyMDE5XHUzMDAxXFxbXFxdXFwtXFx7XFx9XSkvZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocmVnMiwgXCIkMSAkMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMyA9IC8oOikoW1wiJ10pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocmVnMywgXCIkMSAkMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjcgXHU1Rjk3XHU1MjMwXHU2NTg3XHU2NzJDXHU5MEU4XHU1MjA2XHU2NjJGXHU1NDI2XHU0RUU1XHU3QTdBXHU3NjdEXHU3QjI2XHU1RjAwXHU1OUNCXHU2MjE2XHU3RUQzXHU2NzVGXHVGRjBDXHU3NTI4XHU2NzY1XHU1MjI0XHU2NUFEXHU1NDBFXHU3RUVEXHU2NTg3XHU2NzJDXHU1MjREXHU1NDBFXHU2NjJGXHU1NDI2XHU5NzAwXHU4OTgxXHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdTdHJpY3RTcGFjZVN0YXJ0ID0gL15cXDA/XFxzLztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ1N0cmljdFNwYWNlRW5kID0gL1xcc1xcMD8kLztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ1N0YXJ0V2l0aFNwYWNlID0gL15cXDA/W1xccyxcXC47XFw/XFwhXHVGRjBDXHUzMDAyXHVGRjFCXHUzMDBCXHVGRjFGXHVGRjFBOlx1RkYwMX5cXCpcdTMwMDFcdUZGMDhcdUZGMDlcIlx1MjAxRFxcXVxcKVxcfV0vO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVnRW5kV2l0aFNwYWNlID0gL1tcXHNcdUZGMENcdTMwMDJcdTMwMDFcdUZGMUFcdUZGMUJcdUZGMUZcdUZGMDFcdUZGMDhcdUZGMDl+XFwqXCJcdTMwMEFcdTIwMUNcXFtcXChcXHtdXFwwPyQvO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHh0U3RhcnRTcGFjZVNhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0eHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVnU3RhcnRXaXRoU3BhY2UudGVzdChjb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ1N0cmljdFNwYWNlU3RhcnQudGVzdChjb250ZW50KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eHRTdGFydFNwYWNlU2F0ZSA9IFNwYWNlU3RhdGUuc3RyaWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0U3RhcnRTcGFjZVNhdGUgPSBTcGFjZVN0YXRlLnNvZnRcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWdFbmRXaXRoU3BhY2UudGVzdChjb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ1N0cmljdFNwYWNlRW5kLnRlc3QoY29udGVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUuc3RyaWN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLnNvZnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjggXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU5MEU4XHU1MjA2XHU3Njg0XHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1OTA0XHU3NDA2XHU3QTdBXHU2ODNDXHU2REZCXHU1MkEwXHU3Njg0XHU5NUVFXHU5ODk4XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocHJldlBhcnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubm9uZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlID4gdHh0U3RhcnRTcGFjZVNhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSAnICcgKyBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGUgPiB0eHRTdGFydFNwYWNlU2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9ICcgJyArIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUud2lraWxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UgJiYgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSA+IHR4dFN0YXJ0U3BhY2VTYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gJyAnICsgY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSAmJiB0eHRTdGFydFNwYWNlU2F0ZSA9PSBTcGFjZVN0YXRlLm5vbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdFRleHRCZWdpbiA9IGNvbnRlbnQuY2hhckF0KDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnTWRMaW5rRW5kID0gL1xcXS87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRMaW5rRW5kSW5kZXggPSBsaW5lUGFydHNbaSAtIDFdLmNvbnRlbnQuc2VhcmNoKHJlZ01kTGlua0VuZCkgLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hhckF0TGlua0VuZCA9IGxpbmVQYXJ0c1tpIC0gMV0uY29udGVudC5jaGFyQXQoY2hhckF0TGlua0VuZEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJBdExpbmtFbmQgPT09ICdbJykgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0d29OZWlnaGJvckNoYXJzID0gY2hhckF0TGlua0VuZCArIGNoYXJBdFRleHRCZWdpbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ05vdE5lZWRTcGFjZSA9IC9bXFx1NGUwMC1cXHU5ZmE1XHVGRjBDXHUzMDAyXHVGRjFGXHVGRjFBXHVGRjFCXHUyMDFEXHUyMDFDXHUyMDE5XHUyMDE4LVx1RkYwOX1dW1xcdTRlMDAtXFx1OWZhNV0vZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWdOb3ROZWVkU3BhY2UudGVzdCh0d29OZWlnaGJvckNoYXJzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSAnICcgKyBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnVzZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpIC0gMV0ucmlnaHRTcGFjZVJlcXVpcmUgPiB0eHRTdGFydFNwYWNlU2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9ICcgJyArIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjkgXHU1OTgyXHU2NzlDXHU1MTQ5XHU2ODA3XHU1NzI4XHU4QkU1XHU1MzNBXHU1NzU3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU3Njg0XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBjdXJzb3JMaW5lUGFydEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gJ1xcMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IGNvbnRlbnQuc2VhcmNoKHJlZylcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFx1NTIyMFx1OTY2NCBcXDBcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gc3RyaW5nRGVsZXRlQXQoY29udGVudCwgbik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBwcmV2UGFydFR5cGUgPSBJbmxpbmVUeXBlLnRleHQ7XG4gICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IHR4dEVuZFNwYWNlU3RhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIDMuMi4yIFx1NTkwNFx1NzQwNlx1ODg0Q1x1NTE4NVx1NEVFM1x1NzgwMVx1NTc1N1x1OTBFOFx1NTIwNlxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlLjEgXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1NDhDc2V0dGluZ3NcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZSA+IHByZXZUZXh0RW5kU3BhY2VTdGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLmNvbnRlbnQgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmNvZGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuZm9ybXVsYTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5yaWdodFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlLjIgXHU1OTgyXHU2NzlDXHU1MTQ5XHU2ODA3XHU1NzI4XHU4QkU1XHU1MzNBXHU1NzU3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU3Njg0XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgY3Vyc29yUmVsYXRpdmVJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlLjMgXHU1M0Q4XHU5MUNGXHU2NkY0XHU2NUIwXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IElubGluZVR5cGUuY29kZTtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyAzLjIuMyBcdTU5MDRcdTc0MDZcdTg4NENcdTUxODVcdTUxNkNcdTVGMEZcdTc2ODRcdTkwRThcdTUyMDZcbiAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuZm9ybXVsYTpcbiAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXVsYS4xIFx1NjgzOVx1NjM2RVx1NTI0RFx1NEUwMFx1NTMzQVx1NTc1N1x1N0M3Qlx1NTc4Qlx1NTQ4Q3NldHRpbmdzXHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaChwcmV2UGFydFR5cGUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5ub25lOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnRleHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGU+cHJldlRleHRFbmRTcGFjZVN0YXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0uY29udGVudCArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm1kbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0ucmlnaHRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXVsYS4yIFx1NTk4Mlx1Njc5Q1x1NTE0OVx1NjgwN1x1NTcyOFx1OEJFNVx1NTMzQVx1NTc1N1x1RkYwQ1x1NTIxOVx1OEJBMVx1N0I5N1x1NjcwMFx1N0VDOFx1NTE0OVx1NjgwN1x1NzY4NFx1NEY0RFx1N0Y2RVxuICAgICAgICAgICAgICAgICAgICBpZihpID09PSBjdXJzb3JMaW5lUGFydEluZGV4KVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDdXJzb3JDaCA9IG9mZnNldCArIGN1cnNvclJlbGF0aXZlSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXVsYS4zIFx1NTNEOFx1OTFDRlx1NjZGNFx1NjVCMFxuICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBwcmV2UGFydFR5cGUgPSBJbmxpbmVUeXBlLmZvcm11bGE7XG4gICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldlRleHRFbmRTcGFjZVN0YXRlPnNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGUpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPT1TcGFjZVN0YXRlLnN0cmljdCAmJiBwcmV2VGV4dEVuZFNwYWNlU3RhdGU8U3BhY2VTdGF0ZS5zdHJpY3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSAmJiBwcmV2VGV4dEVuZFNwYWNlU3RhdGU9PVNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWdOb05lZWRTcGFjZSA9IC9bXFx1NGUwMC1cXHU5ZmE1XVtcXHU0ZTAwLVxcdTlmYTVdL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRUZXh0RW5kID0gbGluZVBhcnRzW2ktMV0uY29udGVudC5jaGFyQXQobGluZVBhcnRzW2ktMV0uY29udGVudC5sZW5ndGgtMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRMaW5rQmVnaW46c3RyaW5nID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS50eXBlPT1JbmxpbmVUeXBlLndpa2lsaW5rKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnQWxpYXMgPSAvXFx8LztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyT2ZBbGlhc0JlZ2luID0gbGluZVBhcnRzW2ldLmNvbnRlbnQuc2VhcmNoKHJlZ0FsaWFzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiY2hhck9mQWxpYXNCZWdpblwiLGNoYXJPZkFsaWFzQmVnaW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmVnaW5JbmRleCA9IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihsaW5lUGFydHNbaV0uY29udGVudC5jaGFyQXQoMCk9PT0nIScpIGJlZ2luSW5kZXg9MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGFyT2ZBbGlhc0JlZ2luIT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbkluZGV4ID0gY2hhck9mQWxpYXNCZWdpbisxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhckF0TGlua0JlZ2luID0gbGluZVBhcnRzW2ldLmNvbnRlbnQuY2hhckF0KGJlZ2luSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJiZWdpbkluZGV4XCIsIGJlZ2luSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2hhckF0TGlua0JlZ2luPT0nXScpIGJyZWFrOyAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ01kTGlua0JlZ2luID0gL1xcWy87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hhckF0TGlua0JlZ2luSW5kZXggPSBsaW5lUGFydHNbaV0uY29udGVudC5zZWFyY2gocmVnTWRMaW5rQmVnaW4pKzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyQXRMaW5rQmVnaW4gPSBsaW5lUGFydHNbaV0uY29udGVudC5jaGFyQXQoY2hhckF0TGlua0JlZ2luSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2hhckF0TGlua0JlZ2luPT09J10nKSBicmVhazsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0d29OZWlnaGJvckNoYXJzID0gY2hhckF0VGV4dEVuZCtjaGFyQXRMaW5rQmVnaW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFyZWdOb05lZWRTcGFjZS50ZXN0KHR3b05laWdoYm9yQ2hhcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZighc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UgJiYgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5wcmV2VGV4dEVuZFNwYWNlU3RhdGUpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5tZGxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUud2lraWxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ktMV0ucmlnaHRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBMaW5rLjIgXHU1OTgyXHU2NzlDXHU4QkU1XHU1MzNBXHU1NzU3XHU2NzA5XHU1MTQ5XHU2ODA3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgY3Vyc29yUmVsYXRpdmVJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBMaW5rLjMgXHU2NkY0XHU2NUIwXHU1M0Q4XHU5MUNGXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IGxpbmVQYXJ0c1tpXS50eXBlO1xuICAgICAgICAgICAgICAgICAgICBwcmV2VGV4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIDMuMi41IFx1NTkwNFx1NzQwNlx1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1NTMzQVx1NTc1N1x1NzY4NFx1OTBFOFx1NTIwNlxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAvLyBVc2VyLjEgXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1NDhDc2V0dGluZ3NcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLmxlZnRTcGFjZVJlcXVpcmU+cHJldlRleHRFbmRTcGFjZVN0YXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0uY29udGVudCArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLmxlZnRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0ubGVmdFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmV8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm1kbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLmxlZnRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0ubGVmdFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmV8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5yaWdodFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBVc2VyLjIgXHU1OTgyXHU2NzlDXHU4QkU1XHU1MzNBXHU1NzU3XHU2NzA5XHU1MTQ5XHU2ODA3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgY3Vyc29yUmVsYXRpdmVJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBMaW5rLjMgXHU2NkY0XHU2NUIwXHU1M0Q4XHU5MUNGXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IElubGluZVR5cGUudXNlcjtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvcihsZXQgaT0wO2k8bGluZVBhcnRzLmxlbmd0aDtpKyspXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKGxpbmVQYXJ0c1tpXS50eXBlID09PSBJbmxpbmVUeXBlLnRleHQgJiYgbGluZVBhcnRzW2ldLmNvbnRlbnQhPWxpbmVQYXJ0c09yaWdpbltpXS5jb250ZW50KVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogbGluZVBhcnRzW2ldLmNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzT3JpZ2luW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNPcmlnaW5baV0uZW5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiBsaW5lUGFydHNPcmlnaW5baV0uY29udGVudFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXG4gICAgICAgIGlubGluZUNoYW5nZUxpc3QgPSBpbmxpbmVDaGFuZ2VMaXN0LnNvcnQoKGEsIGIpOm51bWJlcj0+YS5iZWdpbi1iLmJlZ2luKTtcbiAgICAgICAgcmV0dXJuIFtyZXN1bHRMaW5lLCByZXN1bHRDdXJzb3JDaCwgaW5saW5lQ2hhbmdlTGlzdF07XG4gICAgfVxuICAgIFxufVxuXG5cbmV4cG9ydCBjbGFzcyBNYXJrZG93blBhcnNlcntcbiAgICBjb25zdHJ1Y3Rvcigpe31cblxufVxuXG5mdW5jdGlvbiBtYXRjaFdpdGhSZWcodGV4dDogc3RyaW5nLCByZWdFeHA6IFJlZ0V4cCwgdHlwZTogSW5saW5lVHlwZSwgaW5saW5lVHlwZUFycmF5OiBJbmxpbmVQYXJ0W10sXG4gICAgY2hlY2tBcnJheSA9IGZhbHNlLCBsZWZ0U3BhY2VSZTogU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZSwgcmlnaHRTcGFjZVJlOiBTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lKTogSW5saW5lUGFydFtdIHtcbiAgICBsZXQgcmV0QXJyYXkgPSBpbmxpbmVUeXBlQXJyYXk7XG4gICAgbGV0IG1hdGNoQXJyYXk6IElubGluZVBhcnRbXSA9IFtdO1xuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuc29ydCgoYSwgYik6IG51bWJlciA9PiBhLmJlZ2luIC0gYi5iZWdpbik7XG4gICAgLy8gY29uc29sZS5sb2coJ2JlZm9yZS0tLS0tLS0tLS0tXFxuJyxyZXRBcnJheSlcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBsZXQgbWF0Y2ggPSByZWdFeHAuZXhlYyh0ZXh0KTtcbiAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWs7XG4gICAgICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgICAgIC8vIFx1NjhDMFx1NjdFNVx1NTFCMlx1N0E4MVxuICAgICAgICBpZiAoY2hlY2tBcnJheSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXRBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmKHJlZ0V4cC5sYXN0SW5kZXg+cmV0QXJyYXlbaV0uYmVnaW4gJiYgcmV0QXJyYXlbaV0uZW5kPm1hdGNoLmluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghdmFsaWQpIGNvbnRpbnVlO1xuICAgICAgICBtYXRjaEFycmF5LnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGVudDogbWF0Y2hbMF0sXG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBiZWdpbjogbWF0Y2guaW5kZXgsXG4gICAgICAgICAgICAgICAgZW5kOiByZWdFeHAubGFzdEluZGV4LFxuICAgICAgICAgICAgICAgIGxlZnRTcGFjZVJlcXVpcmU6IGxlZnRTcGFjZVJlLFxuICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOiByaWdodFNwYWNlUmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5jb25jYXQobWF0Y2hBcnJheSk7XG4gICAgLy8gY29uc29sZS5sb2coJ0FmdGVyPT09PT09PT09PT1cXG4nLCByZXRBcnJheSk7XG4gICAgcmV0dXJuIHJldEFycmF5O1xufVxuXG5mdW5jdGlvbiBtYXRjaFdpdGhBYmJyKHRleHQ6IHN0cmluZywgdHlwZTogSW5saW5lVHlwZSwgaW5saW5lVHlwZUFycmF5OiBJbmxpbmVQYXJ0W10sIGNoZWNrQXJyYXkgPSBmYWxzZSl7XG4gICAgbGV0IHJldEFycmF5ID0gaW5saW5lVHlwZUFycmF5O1xuICAgIGxldCBtYXRjaEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICByZXRBcnJheSA9IHJldEFycmF5LnNvcnQoKGEsIGIpOiBudW1iZXIgPT4gYS5iZWdpbiAtIGIuYmVnaW4pO1xuICAgIGxldCByZWdBYmJyID0gLyhbYS16QS1aXVxcLikrL2c7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgbGV0IG1hdGNoID0gcmVnQWJici5leGVjKHRleHQpO1xuICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgbGV0IHZhbGlkID0gdHJ1ZTtcbiAgICAgICAgbGV0IGlzSW5CbG9ja0JlZ2luOmJvb2xlYW4gPSAobWF0Y2guaW5kZXg9PTApO1xuICAgICAgICAvLyBcdTY4QzBcdTY3RTVcdTUxQjJcdTdBODFcbiAgICAgICAgaWYgKGNoZWNrQXJyYXkpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0QXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZihtYXRjaC5pbmRleCA9PSByZXRBcnJheVtpXS5lbmQpe1xuICAgICAgICAgICAgICAgICAgICBpc0luQmxvY2tCZWdpbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmKHJlZ0FiYnIubGFzdEluZGV4PnJldEFycmF5W2ldLmJlZ2luICYmIHJldEFycmF5W2ldLmVuZD5tYXRjaC5pbmRleCl7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZighaXNJbkJsb2NrQmVnaW4gJiYgdmFsaWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCByZWdDaGFyID0gL1thLXpBLVowLTldLztcbiAgICAgICAgICAgIGlmKHJlZ0NoYXIudGVzdCh0ZXh0LmNoYXJBdChtYXRjaC5pbmRleC0xKSkpe1xuICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbGlkKSBjb250aW51ZTtcbiAgICAgICAgbWF0Y2hBcnJheS5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG1hdGNoWzBdLFxuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgYmVnaW46IG1hdGNoLmluZGV4LFxuICAgICAgICAgICAgICAgIGVuZDogcmVnQWJici5sYXN0SW5kZXgsXG4gICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lLFxuICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5jb25jYXQobWF0Y2hBcnJheSk7XG4gICAgLy8gY29uc29sZS5sb2coJ0FmdGVyPT09PT09PT09PT1cXG4nLCByZXRBcnJheSk7XG4gICAgcmV0dXJuIHJldEFycmF5O1xufVxuXG4vKipcbiAqIFx1NTIwNlx1NTI3Mlx1NEUwMFx1ODg0Q1x1NjU4N1x1NjcyQ1x1NEUyRFx1NzY4NFx1OTRGRVx1NjNBNVx1NTQ4Q1x1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1NzY4NFx1NkI2M1x1NTIxOVx1OTBFOFx1NTIwNlx1RkYwQ1x1NUY5N1x1NTIzMCBJbmxpbmVQYXJ0IFx1NzY4NFx1NEUwRFx1NTQwQ1x1NTMzQVx1NTdERlxuICovXG5mdW5jdGlvbiBzcGxpdFRleHRXaXRoTGlua0FuZFVzZXJEZWZpbmVkKHRleHQ6IHN0cmluZywgcmVnRXhwcz86IHN0cmluZyk6IElubGluZVBhcnRbXSB7XG4gICAgbGV0IHJldEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICBsZXQgcmVnV2lraUxpbmsgPSAvXFwhezAsMn1cXFtcXFtbXlxcW1xcXV0qP1xcXVxcXS9nO1xuICAgIGxldCByZWdNZExpbmsgPSAvXFwhezAsMn1cXFtbXlxcW1xcXV0qP1xcXVxcKFteXFxzXFwpXFwoXFxbXFxdXFx7XFx9J10qXFwpL2c7XG4gICAgLy8gbGV0IHJlZ0JhcmVMaW5rID0gLyhodHRwcz86XFwvXFwvfGZ0cDpcXC9cXC98b2JzaWRpYW46XFwvXFwvfHpvdGVybzpcXC9cXC98d3d3LilbXlxcc1x1RkYwOFx1RkYwOVx1MzAwQVx1MzAwQlx1MzAwMlx1RkYwQ1x1RkYwMVx1RkYxRlx1RkYxQlx1RkYxQVx1MjAxQ1x1MjAxRFx1MjAxOFx1MjAxOVxcKVxcKFxcW1xcXVxce1xcfSddKy9nO1xuXG4gICAgLy8gMS4gXHU1MzM5XHU5MTREd2lraWxpbmtcbiAgICByZXRBcnJheSA9IG1hdGNoV2l0aFJlZyh0ZXh0LCByZWdXaWtpTGluaywgSW5saW5lVHlwZS53aWtpbGluaywgcmV0QXJyYXkpO1xuICAgIC8vIDIuIFx1NTMzOVx1OTE0RG1kbGlua1xuICAgIHJldEFycmF5ID0gbWF0Y2hXaXRoUmVnKHRleHQsIHJlZ01kTGluaywgSW5saW5lVHlwZS5tZGxpbmssIHJldEFycmF5KTtcblxuICAgIC8vIDMuIFx1NTMzOVx1OTE0RFx1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVxuICAgIGxldCByZWdFeHBMaXN0OiBSZWdFeHBbXSA9IFtdO1xuICAgIGxldCBsZWZ0U1JlcXVpcmVMaXN0OiBTcGFjZVN0YXRlW10gPSBbXTtcbiAgICBsZXQgcmlnaHRTUmVxdWlyZUxpc3Q6IFNwYWNlU3RhdGVbXSA9IFtdO1xuICAgIGxldCByZWdOdWxsID0gL15cXHMqJC9nO1xuICAgIGxldCByZWdTUmVxdWlyZSA9IC9cXHxbXFwtPVxcK11bXFwtPVxcK10kLztcbiAgICBpZiAocmVnRXhwcykge1xuICAgICAgICBsZXQgcmVncyA9IHJlZ0V4cHMuc3BsaXQoJ1xcbicpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlZ3MubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgaWYgKHJlZ051bGwudGVzdChyZWdzW2ldKSkgY29udGludWU7XG5cbiAgICAgICAgICAgIGlmICgoIXJlZ1NSZXF1aXJlLnRlc3QocmVnc1tpXSkpIHx8IHJlZ3NbaV0ubGVuZ3RoIDw9IDMpIHtcbiAgICAgICAgICAgICAgICBuZXcgTm90aWNlKFwiRWFzeVR5cGluZzogXHU3QjJDXCIgKyBTdHJpbmcoaSkgKyBcIlx1ODg0Q1x1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1NEUwRFx1N0IyNlx1NTQwOFx1ODlDNFx1ODMwM1xcblwiK3JlZ3NbaV0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHJlZ0l0ZW0gPSByZWdzW2ldLnN1YnN0cmluZygwLCByZWdzW2ldLmxlbmd0aCAtIDMpO1xuICAgICAgICAgICAgbGV0IHNwYWNlUmVxU3RyaW5nID0gcmVnc1tpXS5zdWJzdHJpbmcocmVnc1tpXS5sZW5ndGggLSAzKTtcblxuICAgICAgICAgICAgbGV0IGlzVmFsaWRSZWcgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgcmVnVGVtcCA9IG5ldyBSZWdFeHAocmVnSXRlbSwgJ2cnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaXNWYWxpZFJlZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuc2V0dGluZ3MuZGVidWcpe1xuICAgICAgICAgICAgICAgICAgICBuZXcgTm90aWNlKFwiRWFzdVR5cGluZzogQmFkIFJlZ0V4cDpcXG5cIiArIHJlZ0l0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWcpIHtcbiAgICAgICAgICAgICAgICByZWdFeHBMaXN0LnB1c2gobmV3IFJlZ0V4cChyZWdJdGVtLCAnZycpKTtcbiAgICAgICAgICAgICAgICBsZWZ0U1JlcXVpcmVMaXN0LnB1c2goc3RyMlNwYWNlU3RhdGUoc3BhY2VSZXFTdHJpbmcuY2hhckF0KDEpKSk7XG4gICAgICAgICAgICAgICAgcmlnaHRTUmVxdWlyZUxpc3QucHVzaChzdHIyU3BhY2VTdGF0ZShzcGFjZVJlcVN0cmluZy5jaGFyQXQoMikpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVnTGVuID0gcmVnRXhwTGlzdC5sZW5ndGg7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWdMZW47IGkrKykge1xuICAgICAgICAgICAgcmV0QXJyYXkgPSBtYXRjaFdpdGhSZWcodGV4dCwgcmVnRXhwTGlzdFtpXSwgSW5saW5lVHlwZS51c2VyLCByZXRBcnJheSwgdHJ1ZSwgbGVmdFNSZXF1aXJlTGlzdFtpXSwgcmlnaHRTUmVxdWlyZUxpc3RbaV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gXHU1MzM5XHU5MTREXHU2NUY2XHU5NUY0XHU2MjMzXG4gICAgcmV0QXJyYXkgPSBtYXRjaFdpdGhSZWcodGV4dCwgL1xcZHsxLDJ9OlxcZHsxLDJ9KDpcXGR7MCwyfSl7MCwxfS9nLCBJbmxpbmVUeXBlLnVzZXIsIHJldEFycmF5LCB0cnVlLCBTcGFjZVN0YXRlLm5vbmUsIFNwYWNlU3RhdGUubm9uZSk7XG5cbiAgICAvLyA0LiBcdTUzMzlcdTkxNERcdTdGMjlcdTUxOTlcdTU5ODIgYS5tLlxuICAgIHJldEFycmF5ID0gbWF0Y2hXaXRoQWJicih0ZXh0LCBJbmxpbmVUeXBlLnVzZXIsIHJldEFycmF5LCB0cnVlKTtcblxuICAgIC8vIDUuIFx1NUY5N1x1NTIzMFx1NTI2OVx1NEY1OVx1NzY4NFx1NjU4N1x1NjcyQ1x1OTBFOFx1NTIwNlxuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuc29ydCgoYSwgYik6IG51bWJlciA9PiBhLmJlZ2luIC0gYi5iZWdpbik7XG5cbiAgICBsZXQgdGV4dEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICBsZXQgdGV4dEJlZ2luID0gMDtcbiAgICBsZXQgdGV4dEVuZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXRBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGV4dEJlZ2luIDwgcmV0QXJyYXlbaV0uYmVnaW4pIHtcbiAgICAgICAgICAgIHRleHRFbmQgPSByZXRBcnJheVtpXS5iZWdpbjtcbiAgICAgICAgICAgIHRleHRBcnJheS5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdGV4dC5zdWJzdHJpbmcodGV4dEJlZ2luLCB0ZXh0RW5kKSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogSW5saW5lVHlwZS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjogdGV4dEJlZ2luLFxuICAgICAgICAgICAgICAgICAgICBlbmQ6IHRleHRFbmQsXG4gICAgICAgICAgICAgICAgICAgIGxlZnRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZSxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGV4dEJlZ2luID0gcmV0QXJyYXlbaV0uZW5kO1xuICAgIH1cblxuICAgIGlmICh0ZXh0QmVnaW4gIT0gdGV4dC5sZW5ndGgpIHtcbiAgICAgICAgdGV4dEFycmF5LnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGVudDogdGV4dC5zdWJzdHJpbmcodGV4dEJlZ2luLCB0ZXh0Lmxlbmd0aCksXG4gICAgICAgICAgICAgICAgdHlwZTogSW5saW5lVHlwZS50ZXh0LFxuICAgICAgICAgICAgICAgIGJlZ2luOiB0ZXh0QmVnaW4sXG4gICAgICAgICAgICAgICAgZW5kOiB0ZXh0Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmUsXG4gICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIDYuIFx1NTQwOFx1NUU3Nlx1NjU4N1x1NjcyQ1x1OTBFOFx1NTIwNlx1NTQ4Q1x1NTE3Nlx1NEVENlx1OTBFOFx1NTIwNlxuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuY29uY2F0KHRleHRBcnJheSk7XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5zb3J0KChhLCBiKTogbnVtYmVyID0+IGEuYmVnaW4gLSBiLmJlZ2luKTtcbiAgICByZXR1cm4gcmV0QXJyYXlcbn1cblxuLy8gXHU1QjU3XHU3QjI2XHU4RjZDXHU1MzE2XHU2MjEwXHU3QTdBXHU2ODNDXHU3MkI2XHU2MDAxXHU4OTgxXHU2QzQyXG5mdW5jdGlvbiBzdHIyU3BhY2VTdGF0ZShzOiBzdHJpbmcpOiBTcGFjZVN0YXRlIHtcbiAgICBzd2l0Y2ggKHMpIHtcbiAgICAgICAgY2FzZSBcIitcIjpcbiAgICAgICAgICAgIHJldHVybiBTcGFjZVN0YXRlLnN0cmljdDtcbiAgICAgICAgY2FzZSAnPSc6XG4gICAgICAgICAgICByZXR1cm4gU3BhY2VTdGF0ZS5zb2Z0O1xuICAgICAgICBjYXNlICctJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBTcGFjZVN0YXRlLm5vbmU7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmcyU3BhY2VTdGF0ZShzOnN0cmluZyk6U3BhY2VTdGF0ZVxue1xuICAgIGlmKE51bWJlcihzKT09U3BhY2VTdGF0ZS5ub25lKSByZXR1cm4gU3BhY2VTdGF0ZS5ub25lO1xuICAgIGlmKE51bWJlcihzKT09U3BhY2VTdGF0ZS5zb2Z0KSByZXR1cm4gU3BhY2VTdGF0ZS5zb2Z0O1xuICAgIGlmKE51bWJlcihzKT09U3BhY2VTdGF0ZS5zdHJpY3QpIHJldHVybiBTcGFjZVN0YXRlLnN0cmljdDtcbiAgICByZXR1cm4gU3BhY2VTdGF0ZS5ub25lO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb3NMaW5lVHlwZShzdGF0ZTogRWRpdG9yU3RhdGUsIHBvczogbnVtYmVyKTpMaW5lVHlwZSB7XG4gICAgY29uc3QgbGluZSA9IHN0YXRlLmRvYy5saW5lQXQocG9zKVxuICAgIGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHN0YXRlKTtcbiAgICBjb25zdCB0b2tlbiA9IHRyZWUucmVzb2x2ZShsaW5lLmZyb20sIDEpLm5hbWVcblxuICAgIC8vIGZvciAobGV0IHA9bGluZS5mcm9tOyBwPGxpbmUudG87IHArPTEpe1xuICAgIC8vICAgICBjb25zb2xlLmxvZyhwLWxpbmUuZnJvbSwgdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUpXG4gICAgLy8gfVxuXG4gICAgaWYgKHRva2VuLmNvbnRhaW5zKCdobWQtZnJvbnRtYXR0ZXInKSl7XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5mcm9udG1hdHRlclxuICAgIH1cblxuICAgIGlmKHRva2VuLmNvbnRhaW5zKCdtYXRoJykpe1xuICAgICAgICBmb3IobGV0IHA9bGluZS5mcm9tKzE7cDxsaW5lLnRvO3ArPTEpe1xuICAgICAgICAgICAgaWYoIXRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdtYXRoJykpe1xuICAgICAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIExpbmVUeXBlLmZvcm11bGFcbiAgICB9XG4gICAgZWxzZSBpZih0b2tlbi5jb250YWlucygnY29kZScpICYmIHRva2VuLmNvbnRhaW5zKCdibG9jaycpKXtcbiAgICAgICAgZm9yKGxldCBwPWxpbmUuZnJvbSsxO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgICAgIGxldCB0ID0gdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWVcbiAgICAgICAgICAgIGlmKCEodC5jb250YWlucygnY29kZScpICYmIHQuY29udGFpbnMoJ2Jsb2NrJykpKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gTGluZVR5cGUudGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5jb2RlYmxvY2tcbiAgICB9XG4gICAgcmV0dXJuIExpbmVUeXBlLnRleHRcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9zTGluZVR5cGUyKHN0YXRlOiBFZGl0b3JTdGF0ZSwgcG9zOiBudW1iZXIpOkxpbmVUeXBlIHtcbiAgICBjb25zdCBsaW5lID0gc3RhdGUuZG9jLmxpbmVBdChwb3MpXG4gICAgY29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuICAgIGNvbnN0IHRva2VuID0gdHJlZS5yZXNvbHZlKGxpbmUuZnJvbSwgMSkubmFtZVxuICAgIGlmICh0b2tlbi5jb250YWlucygnaG1kLWZyb250bWF0dGVyJykpe1xuICAgICAgICByZXR1cm4gTGluZVR5cGUuZnJvbnRtYXR0ZXJcbiAgICB9XG5cbiAgICBpZih0b2tlbi5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgZm9yKGxldCBwPWxpbmUuZnJvbSsxO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgICAgIGlmKCF0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gTGluZVR5cGUudGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5mb3JtdWxhXG4gICAgfVxuICAgIGVsc2UgaWYodG9rZW4uY29udGFpbnMoJ2NvZGUnKSAmJiB0b2tlbi5jb250YWlucygnYmxvY2snKSl7XG4gICAgICAgIGZvcihsZXQgcD1saW5lLmZyb20rMTtwPGxpbmUudG87cCs9MSl7XG4gICAgICAgICAgICBsZXQgdCA9IHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lXG4gICAgICAgICAgICBpZighKHQuY29udGFpbnMoJ2NvZGUnKSAmJiB0LmNvbnRhaW5zKCdibG9jaycpKSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLnRleHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTGluZVR5cGUuY29kZWJsb2NrXG4gICAgfVxuXG4gICAgZm9yKGxldCBwPWxpbmUuZnJvbTtwPGxpbmUudG87cCs9MSl7XG4gICAgICAgIGlmKHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdsaXN0Jykpe1xuICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLmxpc3RcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdjYWxsb3V0Jykpe1xuICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLmNhbGxvdXRfdGl0bGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZih0b2tlbi5jb250YWlucygncXVvdGUnKSl7XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5xdW90ZTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIExpbmVUeXBlLnRleHRcbn0iLCAiaW1wb3J0IHsgQW5ub3RhdGlvbiwgRWRpdG9yU3RhdGUsIEV4dGVuc2lvbiwgU3RhdGVGaWVsZCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgVGV4dH0gZnJvbSAnQGNvZGVtaXJyb3Ivc3RhdGUnO1xuaW1wb3J0IHsgRWFzeVR5cGluZ1NldHRpbmdUYWIsIEVhc3lUeXBpbmdTZXR0aW5ncywgUGFpclN0cmluZywgQ29udmVydFJ1bGV9IGZyb20gXCIuL3NldHRpbmdzXCJcblxuXG5leHBvcnQgZnVuY3Rpb24gcG9zVG9PZmZzZXQoZG9jOlRleHQsIHBvczp7bGluZTpudW1iZXIsIGNoOm51bWJlcn0pIHtcblx0cmV0dXJuIGRvYy5saW5lKHBvcy5saW5lICsgMSkuZnJvbSArIHBvcy5jaFxufVxuZXhwb3J0IGZ1bmN0aW9uIG9mZnNldFRvUG9zKGRvYzpUZXh0LCBvZmZzZXQ6bnVtYmVyKSB7XG5cdGxldCBsaW5lID0gZG9jLmxpbmVBdChvZmZzZXQpXG5cdHJldHVybiB7bGluZTogbGluZS5udW1iZXIgLSAxLCBjaDogb2Zmc2V0IC0gbGluZS5mcm9tfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZVN0ck9mVHJhbnNhYyh0cjogVHJhbnNhY3Rpb24pOiBzdHJpbmcge1xuXHRsZXQgVHJhbnNhY1R5cGVBcnJheTpzdHJpbmdbXSA9IFtcIkVhc3lUeXBpbmcuY2hhbmdlXCIsIFxuXHRcdFx0XHRcdFx0XHRcImlucHV0LnR5cGUuY29tcG9zZVwiLCBcImlucHV0LnR5cGVcIiwgXCJpbnB1dC5wYXN0ZVwiLCBcImlucHV0LmRyb3BcIiwgXCJpbnB1dC5jb21wbGV0ZVwiLCBcImlucHV0XCIsXG5cdFx0XHRcdFx0XHRcdFwiZGVsZXRlLnNlbGVjdGlvblwiLCBcImRlbGV0ZS5mb3J3YXJkXCIsIFwiZGVsZXRlLmJhY2t3YXJkXCIsIFwiZGVsZXRlLmN1dFwiLCBcImRlbGV0ZVwiLFxuXHRcdFx0XHRcdFx0XHRcIm1vdmUuZHJvcFwiLFxuXHRcdFx0XHRcdFx0XHRcInVuZG9cIiwgXCJyZWRvXCIsXG5cdFx0XHRcdFx0XHRcdFwic2VsZWN0LnBvaW50ZXJcIl07XG5cdGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBUcmFuc2FjVHlwZUFycmF5Lmxlbmd0aDsgaSsrKVxuXHR7XG5cdFx0aWYgKHRyLmlzVXNlckV2ZW50KFRyYW5zYWNUeXBlQXJyYXlbaV0pKVxuXHRcdFx0cmV0dXJuIFRyYW5zYWNUeXBlQXJyYXlbaV07XG5cdH1cblx0cmV0dXJuIFwibm9uZVwiXG59XG5cbmZ1bmN0aW9uIHN0cmluZzJwYWlyc3RyaW5nKHM6IHN0cmluZyk6UGFpclN0cmluZ3tcblx0bGV0IGN1cnNvcklkeCA9IHMuaW5kZXhPZihcInxcIik7XG5cdGxldCBsZWZ0ID0gcy5zdWJzdHJpbmcoMCwgY3Vyc29ySWR4KTtcblx0bGV0IHJpZ2h0ID0gcy5zdWJzdHJpbmcoY3Vyc29ySWR4KzEpO1xuXHRyZXR1cm4ge2xlZnQ6bGVmdCwgcmlnaHQ6cmlnaHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QobGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4pOkNvbnZlcnRSdWxlW10ge1xuXHRsZXQgcmVzOkNvbnZlcnRSdWxlW10gPSBbXTtcblx0Zm9yIChsZXQgaSBpbiBsaXN0KXtcblx0XHRyZXNbaV0gPSB7YmVmb3JlOiBzdHJpbmcycGFpcnN0cmluZyhsaXN0W2ldWzBdKSwgYWZ0ZXI6IHN0cmluZzJwYWlyc3RyaW5nKGxpc3RbaV1bMV0pfVxuXHR9XG5cdHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdEZWxldGVBdChzdHI6IHN0cmluZywgaW5kZXg6IG51bWJlcik6c3RyaW5nXG57XG4gICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgaW5kZXgpK3N0ci5zdWJzdHJpbmcoaW5kZXgrMSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdJbnNlcnRBdChzdHI6c3RyaW5nLCBpbmRleDogbnVtYmVyLCBzOiBzdHJpbmcpOnN0cmluZ1xue1xuICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIGluZGV4KStzK3N0ci5zdWJzdHJpbmcoaW5kZXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQYXJhbURlZmluZWQocGFyYW06IGFueSk6Ym9vbGVhblxue1xuXHRyZXR1cm4gdHlwZW9mIHBhcmFtIT09XCJ1bmRlZmluZWRcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dTdHJpbmcoczogc3RyaW5nKTpzdHJpbmd7XG5cdHJldHVybiBzLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKTtcbn0iLCAiaW1wb3J0IHsgU3BhY2VTdGF0ZSwgc3RyaW5nMlNwYWNlU3RhdGUgfSBmcm9tICdzcmMvY29yZSc7XG5pbXBvcnQgeyBBcHAsIFRleHRDb21wb25lbnQsIE1hcmtkb3duVmlldywgTW9kYWwsIE5vdGljZSwgUGx1Z2luLCBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nLCBXb3Jrc3BhY2UsIFdvcmtzcGFjZUxlYWYsIFRleHRBcmVhQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IEVhc3lUeXBpbmdQbHVnaW4gZnJvbSAnLi9tYWluJztcbmltcG9ydCB7IHNob3dTdHJpbmcgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBQYWlyU3RyaW5nIHtcblx0bGVmdDogc3RyaW5nO1xuXHRyaWdodDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnRSdWxlIHtcblx0YmVmb3JlOiBQYWlyU3RyaW5nO1xuXHRhZnRlcjogUGFpclN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gUnVsZVR5cGUge2RlbGV0ZT0gXCJEZWxldGUgUnVsZVwiLCBjb252ZXJ0PSdDb252ZXJ0IFJ1bGUnfVxuZXhwb3J0IGVudW0gV29ya01vZGUgeyBPbmx5V2hlblR5cGluZyA9IFwidHlwaW5nXCIsIEdsb2JhbGx5ID0gXCJnbG9iYWxcIiB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWFzeVR5cGluZ1NldHRpbmdzIHtcblx0VGFib3V0OiBib29sZWFuO1xuXHRTZWxlY3Rpb25FbmhhbmNlOiBib29sZWFuO1xuXHRJbnRyaW5zaWNTeW1ib2xQYWlyczogYm9vbGVhbjtcblx0QmFzZU9iRWRpdEVuaGFuY2U6IGJvb2xlYW47XG5cdEZXMkhXRW5oYW5jZTogYm9vbGVhbjtcblx0QXV0b0Zvcm1hdDogYm9vbGVhbjtcblx0RXhjbHVkZUZpbGVzOiBzdHJpbmc7XG5cdEF1dG9DYXBpdGFsOiBib29sZWFuO1xuXHRBdXRvQ2FwaXRhbE1vZGU6IFdvcmtNb2RlO1xuXHRDaGluZXNlRW5nbGlzaFNwYWNlOiBib29sZWFuO1xuXHRFbmdsaXNoTnVtYmVyU3BhY2U6IGJvb2xlYW47XG5cdENoaW5lc2VOb1NwYWNlOiBib29sZWFuO1xuXHRDaGluZXNlTnVtYmVyU3BhY2U6IGJvb2xlYW47XG5cdFB1bmN0dWF0aW9uU3BhY2U6IGJvb2xlYW47XG5cdFB1bmN0dWF0aW9uU3BhY2VNb2RlOiBXb3JrTW9kZTtcblx0SW5saW5lQ29kZVNwYWNlTW9kZTogU3BhY2VTdGF0ZTtcblx0SW5saW5lRm9ybXVsYVNwYWNlTW9kZTogU3BhY2VTdGF0ZTtcblx0SW5saW5lTGlua1NwYWNlTW9kZTogU3BhY2VTdGF0ZTtcblx0SW5saW5lTGlua1NtYXJ0U3BhY2U6IGJvb2xlYW47XG5cdFVzZXJEZWZpbmVkUmVnU3dpdGNoOiBib29sZWFuO1xuXHRVc2VyRGVmaW5lZFJlZ0V4cDogc3RyaW5nO1xuXHRkZWJ1ZzogYm9vbGVhbjtcblxuXHR1c2VyU2VsUmVwUnVsZVRyaWdnZXI6IHN0cmluZ1tdO1xuXHR1c2VyU2VsUmVwUnVsZVZhbHVlOiBQYWlyU3RyaW5nW107XG5cdHVzZXJEZWxldGVSdWxlc1N0ckxpc3Q6IFtzdHJpbmcsIHN0cmluZ11bXTtcblx0dXNlckNvbnZlcnRSdWxlc1N0ckxpc3Q6IFtzdHJpbmcsIHN0cmluZ11bXTtcblx0dXNlclNlbFJ1bGVTZXR0aW5nc09wZW46IGJvb2xlYW47XG5cdHVzZXJEZWxSdWxlU2V0dGluZ3NPcGVuOiBib29sZWFuO1xuXHR1c2VyQ3Z0UnVsZVNldHRpbmdzT3BlbjogYm9vbGVhbjtcblxuXHRFbnRlclR3aWNlOiBib29sZWFuO1xuXHRQdW5jUmVjdGlmeTogYm9vbGVhbjtcblx0VHJ5Rml4Q2hpbmVzZUlNOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVRUSU5HUzogRWFzeVR5cGluZ1NldHRpbmdzID0ge1xuXHRUYWJvdXQ6IHRydWUsXG5cdFNlbGVjdGlvbkVuaGFuY2U6IHRydWUsXG5cdEludHJpbnNpY1N5bWJvbFBhaXJzOiB0cnVlLFxuXHRCYXNlT2JFZGl0RW5oYW5jZTogdHJ1ZSxcblx0RlcySFdFbmhhbmNlOiB0cnVlLFxuXG5cdEF1dG9Gb3JtYXQ6IHRydWUsXG5cdEV4Y2x1ZGVGaWxlczogXCJcIixcblx0Q2hpbmVzZUVuZ2xpc2hTcGFjZTogdHJ1ZSxcblx0Q2hpbmVzZU51bWJlclNwYWNlOiB0cnVlLFxuXHRFbmdsaXNoTnVtYmVyU3BhY2U6IHRydWUsXG5cdENoaW5lc2VOb1NwYWNlOiB0cnVlLFxuXHRQdW5jdHVhdGlvblNwYWNlOiB0cnVlLFxuXHRBdXRvQ2FwaXRhbDogdHJ1ZSxcblx0QXV0b0NhcGl0YWxNb2RlOiBXb3JrTW9kZS5Pbmx5V2hlblR5cGluZyxcblx0UHVuY3R1YXRpb25TcGFjZU1vZGU6IFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nLFxuXHRJbmxpbmVDb2RlU3BhY2VNb2RlOiBTcGFjZVN0YXRlLnNvZnQsXG5cdElubGluZUZvcm11bGFTcGFjZU1vZGU6IFNwYWNlU3RhdGUuc29mdCxcblx0SW5saW5lTGlua1NwYWNlTW9kZTogU3BhY2VTdGF0ZS5zb2Z0LFxuXHRJbmxpbmVMaW5rU21hcnRTcGFjZTogdHJ1ZSxcblx0VXNlckRlZmluZWRSZWdTd2l0Y2g6IHRydWUsXG5cdFVzZXJEZWZpbmVkUmVnRXhwOiBcInt7Lio/fX18KytcXG5cIitcblx0XHRcIjwuKj8+fC0tXFxuXCIgK1xuXHRcdFwiXFxcXFtcXFxcIS4qP1xcXFxdWy0rXXswLDF9fC0rXFxuXCIrXG5cdFx0XCIoZmlsZTovLy98aHR0cHM/Oi8vfGZ0cDovL3xvYnNpZGlhbjovL3x6b3Rlcm86Ly98d3d3LilbXlxcXFxzXHVGRjA4XHVGRjA5XHUzMDBBXHUzMDBCXHUzMDAyLFx1RkYwQ1x1RkYwMVx1RkYxRjtcdUZGMUJcdUZGMUFcdTIwMUNcdTIwMURcdTIwMThcdTIwMTlcXFxcKVxcXFwoXFxcXFtcXFxcXVxcXFx7XFxcXH0nXSt8KytcXG5cIitcblx0XHRcIlxcblthLXpBLVowLTlfXFxcXC0uXStAW2EtekEtWjAtOV9cXFxcLS5dK3wrK1xcblwiK1xuXHRcdFwiKD88ISMpI1tcXFxcdTRlMDAtXFxcXHU5ZmE1XFxcXHdcXFxcL10rfCsrXCIsXG5cdGRlYnVnOiBmYWxzZSxcblx0dXNlclNlbFJlcFJ1bGVUcmlnZ2VyOiBbXCItXCIsIFwiI1wiXSxcblx0dXNlclNlbFJlcFJ1bGVWYWx1ZTogW3tsZWZ0Olwifn5cIiwgcmlnaHQ6XCJ+flwifSwge2xlZnQ6XCIjXCIsIHJpZ2h0OlwiIFwifV0sXG5cdHVzZXJEZWxldGVSdWxlc1N0ckxpc3Q6IFtbXCJkZW1vfFwiLCBcInxcIl1dLFxuXHR1c2VyQ29udmVydFJ1bGVzU3RyTGlzdDogW1tcIjopfFwiLFwiXHVEODNEXHVERTAwfFwiXV0sXG5cdHVzZXJTZWxSdWxlU2V0dGluZ3NPcGVuOiB0cnVlLFxuXHR1c2VyRGVsUnVsZVNldHRpbmdzT3BlbjogdHJ1ZSxcblx0dXNlckN2dFJ1bGVTZXR0aW5nc09wZW46IHRydWUsXG5cblx0RW50ZXJUd2ljZTogZmFsc2UsXG5cdFRyeUZpeENoaW5lc2VJTTogZmFsc2UsXG5cdFB1bmNSZWN0aWZ5OiBmYWxzZSxcbn1cblxuZXhwb3J0IGNsYXNzIEVhc3lUeXBpbmdTZXR0aW5nVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG5cdHBsdWdpbjogRWFzeVR5cGluZ1BsdWdpbjtcblxuXHRjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBFYXN5VHlwaW5nUGx1Z2luKSB7XG5cdFx0c3VwZXIoYXBwLCBwbHVnaW4pO1xuXHRcdHRoaXMucGx1Z2luID0gcGx1Z2luO1xuXHR9XG5cblx0ZGlzcGxheSgpOiB2b2lkIHtcblx0XHRjb25zdCB7IGNvbnRhaW5lckVsIH0gPSB0aGlzO1xuXG5cdFx0Y29udGFpbmVyRWwuZW1wdHkoKTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiaDFcIiwgeyB0ZXh0OiBcIk9ic2lkaWFuIEVhc3lUeXBpbmcgUGx1Z2luXCIgfSk7XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoXCJwXCIsIHsgdGV4dDogXCJNb3JlIGRldGFpbCBpcyBpbiBHaXRodWI6IFwiIH0pLmNyZWF0ZUVsKFwiYVwiLCB7XG5cdFx0XHR0ZXh0OiBcImVhc3ktdHlwaW5nLW9ic2lkaWFuXCIsXG5cdFx0XHRocmVmOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9ZYW96aHV3YS9lYXN5LXR5cGluZy1vYnNpZGlhblwiLFxuXHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywgeyB0ZXh0OiAnXHU1ODlFXHU1RjNBXHU3RjE2XHU4RjkxXHU4QkJFXHU3RjZFIChFbmhhbmNlZCBFZGl0aW5nIFNldHRpbmcpJyB9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTeW1ib2wgYXV0byBwYWlyIGFuZCBkZWxldGUgd2l0aCBwYWlyXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTg5RVx1NTJBMFx1NTkxQVx1NzlDRFx1N0IyNlx1NTNGN1x1OTE0RFx1NUJGOVx1OEY5M1x1NTE2NVx1RkYwQ1x1OTE0RFx1NUJGOVx1NTIyMFx1OTY2NFx1RkYwQ1x1NTk4Mlx1MzAwQVx1MzAwQiwgXHUyMDFDXHUyMDFELCBcdTMwMENcdTMwMEQsIFx1MzAwRVx1MzAwRixcdTMwMTBcdTMwMTFcdTdCNDlcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW50cmluc2ljU3ltYm9sUGFpcnMpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuSW50cmluc2ljU3ltYm9sUGFpcnMgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU2VsZWN0aW9uIFJlcGxhY2UgRW5oYW5jZW1lbnRcIilcblx0XHRcdC5zZXREZXNjKFwiXHU5MDA5XHU0RTJEXHU2NTg3XHU2NzJDXHU2MEM1XHU1MUI1XHU0RTBCXHU3Njg0XHU3RjE2XHU4RjkxXHU1ODlFXHU1RjNBXHVGRjBDXHU2MzA5XHVGRkU1XHUyMTkyJFx1OTAwOVx1NEUyRFx1NzY4NFx1NjU4N1x1NjcyQyQsIFx1NjMwOVx1MDBCN1x1MjE5MmBcdTkwMDlcdTRFMkRcdTc2ODRcdTY1ODdcdTY3MkNgXHVGRjBDXHUzMDBBIFx1MjE5MiBcdTMwMEFcdTkwMDlcdTRFMkRcdTc2ODRcdTY1ODdcdTY3MkNcdTMwMEJcdTdCNDlcdTdCNDlcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuU2VsZWN0aW9uRW5oYW5jZSlcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5TZWxlY3Rpb25FbmhhbmNlID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkNvbnZlcnQgc3VjY2Vzc2l2ZSBmdWxsIHdpZHRoIHN5bWJvbCB0byBoYWxmIHdpZHRoIHN5bWJvbFwiKVxuXHRcdFx0LnNldERlc2MoXCJcdThGREVcdTdFRURcdThGOTNcdTUxNjVcdTUxNjhcdTg5RDJcdTdCMjZcdTUzRjdcdThGNkNcdTUzNEFcdTg5RDJcdUZGMENcdTMwMDJcdTMwMDJcdTIxOTIgLlx1RkYwQ1x1RkYwMVx1RkYwMVx1MjE5MiAhXHVGRjBDIFx1MzAwQlx1MzAwQlx1MjE5MiA+XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkZXMkhXRW5oYW5jZSlcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5GVzJIV0VuaGFuY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiQmFzaWMgc3ltYm9sIGlucHV0IGVuaGFuY2UgZm9yIG9ic2lkaWFuXCIpXG5cdFx0XHQuc2V0RGVzYyhcIk9ic2lkaWFuIFx1NzY4NFx1NTdGQVx1Nzg0MFx1OEY5M1x1NTE2NVx1NTg5RVx1NUYzQVx1RkYwQ1x1NTk4Mlx1MzAxMFx1MzAxMHwgXHUyMTkyIFtbfF1dXHVGRjBDXHU1M0U1XHU5OTk2XHU3Njg0XHUzMDAxXHUyMTkyIC9cdUZGMENcdTUzRTVcdTk5OTZcdTc2ODRcdTMwMEJcdTIxOTIgPlx1RkYwQ1x1MDBCN1x1MDBCN3wgXHUyMTkyIGB8YFx1RkYwQyBgXHUwMEI3fGAgXHU1M0Q4XHU2MjEwXHU0RUUzXHRcdTc4MDFcdTU3NTdcdUZGMENcdUZGRTVcdUZGRTV8IFx1MjE5MiAkfCRcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQmFzZU9iRWRpdEVuaGFuY2UpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQmFzZU9iRWRpdEVuaGFuY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiVGFib3V0XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlRhYm91dCBpbmxpbmUgY29kZS4gVGFiXHU4REYzXHU1MUZBXHU4ODRDXHU1MTg1XHU0RUUzXHU3ODAxXHU1NzU3XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlRhYm91dClcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5UYWJvdXQgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTgxRUFcdTVCOUFcdTRFNDlcdTdGMTZcdThGOTFcdThGNkNcdTYzNjJcdTg5QzRcdTUyMTkgKEN1c3RvbWl6ZSBFZGl0IENvbnZlcnRpb24gUnVsZSknIH0pO1xuXHRcdHRoaXMuYnVpbGRVc2VyU2VsUmVwUnVsZVNldHRpbmcodGhpcy5jb250YWluZXJFbC5jcmVhdGVFbChcImRldGFpbHNcIiwge1xuXHRcdFx0Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCIsXG5cdFx0XHRhdHRyOiB7XG5cdFx0XHRcdC4uLih0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUnVsZVNldHRpbmdzT3Blbj97IG9wZW46IHRydWUgfTp7fSlcblx0XHRcdH1cblx0XHR9KSlcblxuXHRcdHRoaXMuYnVpbGRVc2VyRGVsZXRlUnVsZVNldHRpbmcodGhpcy5jb250YWluZXJFbC5jcmVhdGVFbChcImRldGFpbHNcIiwge1xuXHRcdFx0Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCIsXG5cdFx0XHRhdHRyOiB7XG5cdFx0XHRcdC4uLih0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyRGVsUnVsZVNldHRpbmdzT3Blbj97IG9wZW46IHRydWUgfTp7fSlcblx0XHRcdH1cblx0XHR9KSlcblxuXHRcdHRoaXMuYnVpbGRVc2VyQ29udmVydFJ1bGVTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwuY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHtcblx0XHRcdGNsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wiLFxuXHRcdFx0YXR0cjoge1xuXHRcdFx0XHQuLi4odGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckN2dFJ1bGVTZXR0aW5nc09wZW4/eyBvcGVuOiB0cnVlIH06e30pXG5cdFx0XHR9XG5cdFx0fSkpXG5cdFx0XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTZcdThCQkVcdTdGNkUgKEF1dG9mb3JtYXQgU2V0dGluZyknIH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkF1dG8gZm9ybWF0dGluZyB3aGVuIHR5cGluZ1wiKVxuXHRcdFx0LnNldERlc2MoXCJcdTY2MkZcdTU0MjZcdTU3MjhcdTdGMTZcdThGOTFcdTY1ODdcdTY4NjNcdTY1RjZcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTZcdTY1ODdcdTY3MkNcdUZGMENcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTZcdTc2ODRcdTYwM0JcdTVGMDBcdTUxNzNcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0Zvcm1hdClcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5BdXRvRm9ybWF0ID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJywgeyB0ZXh0OiAnRGV0YWlsZWQgU2V0dGluZyBCZWxvdycgfSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2UgYmV0d2VlbiBDaGluZXNlIGFuZCBFbmdsaXNoXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1NEUyRFx1NjU4N1x1NTQ4Q1x1ODJGMVx1NjU4N1x1OTVGNFx1N0E3QVx1NjgzQ1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlRW5nbGlzaFNwYWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlRW5nbGlzaFNwYWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2UgYmV0d2VlbiBDaGluZXNlIGFuZCBOdW1iZXJcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4XHU0RTJEXHU2NTg3XHU1NDhDXHU2NTcwXHU1QjU3XHU5NUY0XHU3QTdBXHU2ODNDXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkNoaW5lc2VOdW1iZXJTcGFjZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQ2hpbmVzZU51bWJlclNwYWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNwYWNlIGJldHdlZW4gRW5naWxzaCBhbmQgTnVtYmVyXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1ODJGMVx1NjU4N1x1NTQ4Q1x1NjU3MFx1NUI1N1x1OTVGNFx1N0E3QVx1NjgzQ1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5FbmdsaXNoTnVtYmVyU3BhY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkVuZ2xpc2hOdW1iZXJTcGFjZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkRlbGV0ZSB0aGUgU3BhY2UgYmV0d2VlbiBDaGluZXNlIGNoYXJhY3RlcnNcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4XHU0RTJEXHU2NTg3XHU1QjU3XHU3QjI2XHU5NUY0XHU1M0JCXHU5NjY0XHU3QTdBXHU2ODNDXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkNoaW5lc2VOb1NwYWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlTm9TcGFjZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiBldmVyeSBzZW50ZW5jZVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTgyRjFcdTY1ODdcdTZCQ0ZcdTRFMkFcdTUzRTVcdTk5OTZcdTVCNTdcdTZCQ0RcdTU5MjdcdTUxOTlcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nLCBcIlx1OEY5M1x1NTE2NVx1NjVGNlx1NzUxRlx1NjU0OChPbmx5IFdoZW4gVHlwaW5nKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLkdsb2JhbGx5LCBcIlx1NTE2OFx1NUM0MFx1NzUxRlx1NjU0OChXb3JrIEdsb2JhbGx5KVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0NhcGl0YWxNb2RlKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nIHwgV29ya01vZGUuR2xvYmFsbHkpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5BdXRvQ2FwaXRhbE1vZGUgPSB2O1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VG9vbHRpcChcIlx1NTI5Rlx1ODBGRFx1NUYwMFx1NTE3MyhTd2l0Y2gpXCIpO1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0NhcGl0YWwpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkF1dG9DYXBpdGFsID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU21hcnRseSBpbnNlcnQgc3BhY2UgYmV0d2VlbiB0ZXh0IGFuZCBwdW5jdHVhdGlvblwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjhcdTY1ODdcdTY3MkNcdTU0OENcdTY4MDdcdTcwQjlcdTk1RjRcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nLCBcIlx1OEY5M1x1NTE2NVx1NjVGNlx1NzUxRlx1NjU0OChPbmx5IFdoZW4gVHlwaW5nKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLkdsb2JhbGx5LCBcIlx1NTE2OFx1NUM0MFx1NzUxRlx1NjU0OChXb3JrIEdsb2JhbGx5KVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuUHVuY3R1YXRpb25TcGFjZU1vZGUpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogV29ya01vZGUuT25seVdoZW5UeXBpbmcgfCBXb3JrTW9kZS5HbG9iYWxseSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2VNb2RlID0gdjtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTcGFjZSBzdGF0ZWd5IGJldHdlZW4gaW5saW5lIGNvZGUgYW5kIHRleHRcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4IGBcdTg4NENcdTUxODVcdTRFRTNcdTc4MDFgIFx1NTQ4Q1x1NjU4N1x1NjcyQ1x1OTVGNFx1NzY4NFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1MzAwMlwiICtcblx0XHRcdFx0XCJcdTY1RTBcdTg5ODFcdTZDNDJcdUZGMUFcdTVCRjlcdTY3MkNcdTdDN0JcdTUyMkJcdTU3NTdcdTRFMEVcdTVERTZcdTUzRjNcdTY1ODdcdTY3MkNcdTZDQTFcdTY3MDlcdTdBN0FcdTY4M0NcdTc2ODRcdTg5ODFcdTZDNDJcdUZGMENcIiArXG5cdFx0XHRcdFwiXHU4RjZGXHU3QTdBXHU2ODNDXHVGRjFBXHU1QkY5XHU2NzJDXHU3QzdCXHU1MjJCXHU1NzU3XHU0RTBFXHU1NDY4XHU1NkY0XHU1MzNBXHU1NzU3XHU1M0VBXHU4OTgxXHU2QzQyXHU2NzA5XHU4RjZGXHU3QTdBXHU2ODNDXHVGRjBDXHU4RjZGXHU3QTdBXHU2ODNDXHU1OTgyXHU1RjUzXHU1MjREXHU1NzU3XHU1REU2XHU4RkI5XHU3Njg0XHU0RTM0XHU4RkQxXHU2NTg3XHU2NzJDXHU0RTNBXHUzMDAyXHVGRjBDXHVGRjFCXHVGRjFGXHU3QjQ5XHU1MTY4XHU4OUQyXHU2ODA3XHU3MEI5XHVGRjBDXHU1RjUzXHU1MjREXHU1NzU3XHU1M0YzXHU4RkI5XHU3Njg0XHU0RTM0XHU4RkQxXHU2NTg3XHU2NzJDXHU0RTNBXHU2MjQwXHU2NzA5XHU1MTY4XHU1MzRBXHU4OUQyXHU2ODA3XHU3MEI5XHVGRjBDXCIgK1xuXHRcdFx0XHRcIlx1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQ1x1RkYxQVx1NUY1M1x1NTI0RFx1NTc1N1x1NEUwRVx1NEUzNFx1OEZEMVx1NjU4N1x1NjcyQ1x1NEU0Qlx1OTVGNFx1NEUyNVx1NjgzQ1x1NkRGQlx1NTJBMFx1N0E3QVx1NjgzQ1x1MzAwMlwiXG5cdFx0XHQpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5ub25lKSwgXCJcdTY1RTBcdTg5ODFcdTZDNDIoTm8gUmVxdWlyZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zb2Z0KSwgXCJcdThGNkZcdTdBN0FcdTY4M0MoU29mdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zdHJpY3QpLCBcIlx1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQyhTdHJpY3QgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZShTdHJpbmcodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZSkpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZSA9IHN0cmluZzJTcGFjZVN0YXRlKHYpO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2Ugc3RhdGVneSBiZXR3ZWVuIGlubGluZSBmb3JtdWxhIGFuZCB0ZXh0XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOCAkXHU4ODRDXHU1MTg1XHU1MTZDXHU1RjBGJCBcdTU0OENcdTY1ODdcdTY3MkNcdTk1RjRcdTc2ODRcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLm5vbmUpLCBcIlx1NjVFMFx1ODk4MVx1NkM0MihObyBSZXF1aXJlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLnNvZnQpLCBcIlx1OEY2Rlx1N0E3QVx1NjgzQyhTb2Z0IFNwYWNlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLnN0cmljdCksIFwiXHU0RTI1XHU2ODNDXHU3QTdBXHU2ODNDKFN0cmljdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKFN0cmluZyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlKSk7XG5cdFx0XHRcdGRyb3Bkb3duLm9uQ2hhbmdlKGFzeW5jICh2OiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlID0gc3RyaW5nMlNwYWNlU3RhdGUodik7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTcGFjZSBzdHJhdGVneSBiZXR3ZWVuIGxpbmsgYW5kIHRleHRcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4IFtbd2lraWxpbmtdXSBbbWRsaW5rXSguLi4pIFx1NTQ4Q1x1NjU4N1x1NjcyQ1x1OTVGNFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1MzAwMlx1NjY3QVx1ODBGRFx1N0E3QVx1NjgzQ1x1NkEyMVx1NUYwRlx1NEUwQlx1NTIxOVx1NEYxQVx1ODAwM1x1ODY1MVx1OEJFNVx1OTRGRVx1NjNBNVx1NTc1N1x1NzY4NFx1NjYzRVx1NzkzQVx1NTE4NVx1NUJCOVx1RkYwOFx1NTk4Mndpa2lcdTk0RkVcdTYzQTVcdTc2ODRcdTUyMkJcdTU0MERcdUZGMDlcdTY3NjVcdTRFMEVcdTRFMzRcdThGRDFcdTY1ODdcdTY3MkNcdThGREJcdTg4NENcdTdBN0FcdTY4M0NcdTMwMDJcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFwiZHVtbXlcIiwgXCJcdTU0NDZcdTdBN0FcdTY4M0MoZHVtbXkpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oXCJzbWFydFwiLCBcIlx1NjY3QVx1ODBGRFx1N0E3QVx1NjgzQyhTbWFydClcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlID8gXCJzbWFydFwiIDogXCJkdW1teVwiKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlID0gdiA9PSBcInNtYXJ0XCIgPyB0cnVlIDogZmFsc2U7XG5cdFx0XHRcdFx0Ly8gbmV3IE5vdGljZShTdHJpbmcodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UpKTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5ub25lKSwgXCJcdTY1RTBcdTg5ODFcdTZDNDIoTm8gUmVxdWlyZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zb2Z0KSwgXCJcdThGNkZcdTdBN0FcdTY4M0MoU29mdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zdHJpY3QpLCBcIlx1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQyhTdHJpY3QgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZShTdHJpbmcodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSkpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSA9IHN0cmluZzJTcGFjZVN0YXRlKHYpO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ1x1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1NTMzQVx1NTc1NyAoQ3VzdG9tIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYmxvY2spJyB9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiVXNlciBEZWZpbmVkIFJlZ0V4cCBTd2l0Y2hcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHU1RjAwXHU1MTczXHVGRjBDXHU1MzM5XHU5MTREXHU1MjMwXHU3Njg0XHU1MTg1XHU1QkI5XHU0RTBEXHU4RkRCXHU4ODRDXHU2ODNDXHU1RjBGXHU1MzE2XHVGRjBDXHU0RTE0XHU1M0VGXHU0RUU1XHU4QkJFXHU3RjZFXHU1MzM5XHU5MTREXHU1MjMwXHU3Njg0XHU1MTg1XHU1QkI5XHU1NzU3XHU0RTBFXHU1MTc2XHU0RUQ2XHU1MTg1XHU1QkI5XHU0RTRCXHU5NUY0XHU3Njg0XHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlVzZXJEZWZpbmVkUmVnU3dpdGNoKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ1N3aXRjaCA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoXCJwXCIsIHsgdGV4dDogXCJcdTZCNjNcdTUyMTlcdTg4NjhcdThGQkVcdTVGMEZcdTc2RjhcdTUxNzNcdTc3RTVcdThCQzZcdUZGMENcdTg5QzEgXCIgfSkuY3JlYXRlRWwoXCJhXCIsIHtcblx0XHRcdHRleHQ6IFwiXHUzMDBBXHU5NjJFXHU0RTAwXHU1Q0YwXHVGRjFBXHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHU3QjgwXHU2NjBFXHU2NTU5XHU3QTBCXHUzMDBCXCIsXG5cdFx0XHRocmVmOiBcImh0dHBzOi8vamF2YXNjcmlwdC5ydWFueWlmZW5nLmNvbS9zdGRsaWIvcmVnZXhwLmh0bWwjXCIsXG5cdFx0fSk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbChcInBcIiwgeyB0ZXh0OiBcIlx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1ODlDNFx1NTIxOVx1NEY3Rlx1NzUyOFx1OEJGNFx1NjYwRVx1NEUwRVx1NzkzQVx1NEY4Qlx1RkYxQVwiIH0pLmNyZWF0ZUVsKFwiYVwiLCB7XG5cdFx0XHR0ZXh0OiBcIlx1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1ODlDNFx1NTIxOVwiLFxuXHRcdFx0aHJlZjogXCJodHRwczovL2dpdGh1Yi5jb20vWWFvemh1d2EvZWFzeS10eXBpbmctb2JzaWRpYW4vYmxvYi9tYXN0ZXIvVXNlckRlZmluZWRSZWdFeHAubWRcIixcblx0XHR9KTtcblxuXHRcdGNvbnN0IHJlZ0NvbnRlbnRBcmVhU2V0dGluZyA9IG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKTtcblx0XHRyZWdDb250ZW50QXJlYVNldHRpbmcuc2V0dGluZ0VsLnNldEF0dHJpYnV0ZShcblx0XHRcdFwic3R5bGVcIixcblx0XHRcdFwiZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XCJcblx0XHQpO1xuXHRcdHJlZ0NvbnRlbnRBcmVhU2V0dGluZ1xuXHRcdFx0LnNldE5hbWUoXCJVc2VyLWRlZmluZWQgUmVndWxhciBFeHByZXNzaW9uLCBvbmUgZXhwcmVzc2lvbiBwZXIgbGluZVwiKVxuXHRcdFx0LnNldERlc2MoXG5cdFx0XHRcdFwiXHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHVGRjBDXHU1MzM5XHU5MTREXHU1MjMwXHU3Njg0XHU1MTg1XHU1QkI5XHU0RTBEXHU4RkRCXHU4ODRDXHU2ODNDXHU1RjBGXHU1MzE2XHVGRjBDXHU2QkNGXHU4ODRDXHU0RTAwXHU0RTJBXHU4ODY4XHU4RkJFXHU1RjBGXHVGRjBDXHU4ODRDXHU1QzNFXHU0RTBEXHU4OTgxXHU5NjhGXHU2MTBGXHU1MkEwXHU3QTdBXHU2ODNDXHUzMDAyXCIgK1xuXHRcdFx0XHRcIlx1NkJDRlx1ODg0Q1x1NjcyQlx1NUMzRTNcdTRFMkFcdTVCNTdcdTdCMjZcdTc2ODRcdTU2RkFcdTVCOUFcdTRFM0F8XHU1NDhDXHU0RTI0XHU0RTJBXHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XHU3QjI2XHU1M0Y3XHVGRjBDXHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XHU3QjI2XHU1M0Y3XHU0RTNBLT0rXHVGRjBDXHU1MjA2XHU1MjJCXHU0RUUzXHU4ODY4XHU0RTBEXHU4OTgxXHU2QzQyXHU3QTdBXHU2ODNDKC0pXHVGRjBDXHU4RjZGXHU3QTdBXHU2ODNDKD0pXHVGRjBDXHU0RTI1XHU2ODNDXHU3QTdBXHU2ODNDKCspXHUzMDAyXCIgK1xuXHRcdFx0XHRcIlx1OEZEOVx1NEUyNFx1NEUyQVx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1N0IyNlx1NTNGN1x1NTIwNlx1NTIyQlx1NEUzQVx1NTMzOVx1OTE0RFx1NTMzQVx1NTc1N1x1NzY4NFx1NURFNlx1NTNGM1x1NEUyNFx1OEZCOVx1NzY4NFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVwiXG5cdFx0XHQpO1xuXHRcdGNvbnN0IHJlZ0NvbnRlbnRBcmVhID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KFxuXHRcdFx0cmVnQ29udGVudEFyZWFTZXR0aW5nLmNvbnRyb2xFbFxuXHRcdCk7XG5cblx0XHRzZXRBdHRyaWJ1dGVzKHJlZ0NvbnRlbnRBcmVhLmlucHV0RWwsIHtcblx0XHRcdHN0eWxlOiBcIm1hcmdpbi10b3A6IDEycHg7IHdpZHRoOiAxMDAlOyAgaGVpZ2h0OiAzMHZoO1wiLFxuXHRcdFx0Ly8gY2xhc3M6IFwibXMtY3NzLWVkaXRvclwiLFxuXHRcdH0pO1xuXHRcdHJlZ0NvbnRlbnRBcmVhXG5cdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuVXNlckRlZmluZWRSZWdFeHApXG5cdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlVzZXJEZWZpbmVkUmVnRXhwID0gdmFsdWU7XG5cdFx0XHRcdHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0fSk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTYzMDdcdTVCOUFcdTY1ODdcdTRFRjZcdTRFMERcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTYgKEV4Y2x1ZGUgRm9sZGVycy9GaWxlcyknIH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJFeGNsdWRlIEZvbGRlcnMvRmlsZXNcIilcblx0XHRcdC5zZXREZXNjKFwiVGhpcyBwbHVnaW4gd2lsbCBwYXJzZSBlYWNoIGxpbmUgYXMgYSBleGx1ZGUgZm9sZGVyIG9yIGZpbGUuIEZvciBleGFtcGxlOiBEYWlseU5vdGUvLCBEYWlseU5vdGUvV2Vla05vdGVzLywgRGFpbHlOb3RlL3Rlc3QubWRcIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT5cblx0XHRcdFx0dGV4dFxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5FeGNsdWRlRmlsZXMpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuRXhjbHVkZUZpbGVzID0gdmFsdWU7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0KTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ0V4cGVyaW1lbnRhbCBGZWF0dXJlcycgfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkVuaGFuY2UgQ2hpbmVzZSBJbnB1dCBNZXRob2RcIilcblx0XHRcdC5zZXREZXNjKFwiXHU0RTJEXHU2NTg3XHU4RjkzXHU1MTY1XHU2Q0Q1XHU0RTBCXHVGRjBDXHU1NkRFXHU4RjY2XHU4RjkzXHU1MTY1XHU4MkYxXHU2NTg3XHU2NUY2XHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlRyeUZpeENoaW5lc2VJTSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuVHJ5Rml4Q2hpbmVzZUlNID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3RyaWN0IExpbmUgYnJlYWtzIE1vZGUgRW50ZXIgVHdpY2VcIilcblx0XHRcdC5zZXREZXNjKFwiXHU0RTI1XHU2ODNDXHU2MzYyXHU4ODRDXHU3Njg0XHU4QkJFXHU3RjZFXHU0RTBCXHVGRjBDXHU1NzI4XHU2NjZFXHU5MDFBXHU2NTg3XHU2NzJDXHU4ODRDXHU4RkRCXHU4ODRDXHU0RTAwXHU2QjIxXHU1NkRFXHU4RjY2XHU0RjFBXHU0RUE3XHU3NTFGXHU0RTI0XHU0RTJBXHU2MzYyXHU4ODRDXHU3QjI2XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkVudGVyVHdpY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkVudGVyVHdpY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiUHVuYyByZWN0aWZ5XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NEVDNVx1NTcyOFx1OEY5M1x1NTE2NVx1OEZDN1x1N0EwQlx1NEUyRFx1RkYwQ1x1NEUyRFx1NjU4N1x1OTVGNFx1NzY4NFx1ODJGMVx1NjU4N1x1NjgwN1x1NzBCOVx1RkYwOCwuPyFcdUZGMDlcdTgxRUFcdTUyQThcdThGNkNcdTYzNjJcdTRFM0FcdTUxNjhcdTg5RDJcdUZGMDhcdTUzRUZcdTY0QTRcdTk1MDBcdUZGMDlcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuUHVuY1JlY3RpZnkpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmNSZWN0aWZ5ID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiUHJpbnQgZGVidWcgaW5mbyBpbiBjb25zb2xlXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1NjNBN1x1NTIzNlx1NTNGMFx1OEY5M1x1NTFGQVx1OEMwM1x1OEJENVx1NEZFMVx1NjA2RlwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWJ1Zykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVidWcgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0fVxuXG5cdGJ1aWxkVXNlclNlbFJlcFJ1bGVTZXR0aW5nKGNvbnRhaW5lckVsOiBIVE1MRGV0YWlsc0VsZW1lbnQpe1xuXHRcdGNvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgICAgIGNvbnRhaW5lckVsLm9udG9nZ2xlID0gYXN5bmMgKCkgPT4ge1xuXHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJ1bGVTZXR0aW5nc09wZW4gPSBjb250YWluZXJFbC5vcGVuO1xuXHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgIH07XG5cdFx0Y29uc3Qgc3VtbWFyeSA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwic3VtbWFyeVwiLCB7Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCJ9KTtcblx0XHRzdW1tYXJ5LnNldFRleHQoXCJcdTgxRUFcdTVCOUFcdTRFNDlcdTkwMDlcdTRFMkRcdTY1ODdcdTY3MkNcdTdGMTZcdThGOTFcdTU4OUVcdTVGM0FcdTg5QzRcdTUyMTkgKEN1c3RvbWl6ZSBTZWxlY3Rpb24gUmVwbGFjZSBSdWxlKVwiKVxuXG4gICAgICAgIC8vIHN1bW1hcnkuc2V0SGVhZGluZygpLnNldE5hbWUoXCJVc2VyIGRlZmluZWQgU2VsZWN0aW9uIFJlcGxhY2UgUnVsZVwiKTtcbiAgICAgICAgLy8gc3VtbWFyeS5jcmVhdGVEaXYoXCJjb2xsYXBzZXJcIikuY3JlYXRlRGl2KFwiaGFuZGxlXCIpO1xuXG5cdFx0Y29uc3Qgc2VsZWN0aW9uUnVsZVNldHRpbmcgPSBuZXcgU2V0dGluZyhjb250YWluZXJFbCk7XG5cdFx0c2VsZWN0aW9uUnVsZVNldHRpbmdcblx0XHRcdC5zZXROYW1lKFwiU2VsZWN0aW9uIFJlcGxlY2UgUnVsZVwiKVxuXG5cdFx0Y29uc3QgcmVwbGFjZVJ1bGVUcmlnZ2VyID0gbmV3IFRleHRDb21wb25lbnQoc2VsZWN0aW9uUnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRyZXBsYWNlUnVsZVRyaWdnZXIuc2V0UGxhY2Vob2xkZXIoXCJUcmlnZ3IgU3ltYm9sXCIpO1xuXG5cdFx0Y29uc3QgcmVwbGFjZUxlZnRTdHJpbmcgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoc2VsZWN0aW9uUnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRyZXBsYWNlTGVmdFN0cmluZy5zZXRQbGFjZWhvbGRlcihcIk5ldyBMZWZ0IFNpZGUgU3RyaW5nXCIpO1xuXG5cdFx0Y29uc3QgcmVwbGFjZVJpZ2h0U3RyaW5nID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KHNlbGVjdGlvblJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cmVwbGFjZVJpZ2h0U3RyaW5nLnNldFBsYWNlaG9sZGVyKFwiTmV3IFJpZ2h0IFNpZGUgU3RyaW5nXCIpO1xuXG5cdFx0c2VsZWN0aW9uUnVsZVNldHRpbmdcblx0XHRcdC5hZGRCdXR0b24oKGJ1dHRvbikgPT4ge1xuXHRcdFx0XHRidXR0b25cblx0XHRcdFx0XHQuc2V0QnV0dG9uVGV4dChcIitcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkFkZCBSdWxlXCIpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKGJ1dHRvbkVsOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdGxldCB0cmlnZ2VyID0gcmVwbGFjZVJ1bGVUcmlnZ2VyLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRsZXQgbGVmdCA9IHJlcGxhY2VMZWZ0U3RyaW5nLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRsZXQgcmlnaHQgPSByZXBsYWNlUmlnaHRTdHJpbmcuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGlmICh0cmlnZ2VyICYmIChsZWZ0IHx8IHJpZ2h0KSkge1xuXHRcdFx0XHRcdFx0XHRpZih0cmlnZ2VyLmxlbmd0aD4xKXtcblx0XHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwiSW5sdmFsaWQgdHJpZ2dlciwgdHJpZ2dlciBtdXN0IGJlIGEgc3ltYm9sIG9mIGxlbmd0aCAxXCIpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wbHVnaW4uYWRkVXNlclNlbGVjdGlvblJlcFJ1bGUodHJpZ2dlciwgbGVmdCwgcmlnaHQpKXtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJ3YXJuaW5nISBUcmlnZ2VyIFwiICsgdHJpZ2dlciArIFwiIGlzIGFscmVhZHkgZXhpc3QhXCIpXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwibWlzc2luZyBpbnB1dFwiKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Ly8gY29uc3Qgc2VsUmVwUnVsZUNvbnRhaW5lciA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiZGl2XCIpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgdHJpZ2dlciA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlcltpXTtcblx0XHRcdGxldCBsZWZ0X3MgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2ldLmxlZnQ7XG5cdFx0XHRsZXQgcmlnaHRfcyA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWVbaV0ucmlnaHQ7XG5cdFx0XHRsZXQgc2hvd1N0ciA9IFwiVHJpZ2dlcjogXCIgKyB0cmlnZ2VyICsgXCIgXHUyMTkyIFwiICsgc2hvd1N0cmluZyhsZWZ0X3MpICsgXCJzZWxlY3RlZFwiICsgc2hvd1N0cmluZyhyaWdodF9zKTtcblx0XHRcdC8vIGNvbnN0IHNldHRpbmdJdGVtID0gc2VsUmVwUnVsZUNvbnRhaW5lci5jcmVhdGVFbChcImRpdlwiKTtcblx0XHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0XHQuc2V0TmFtZShzaG93U3RyKVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcImdlYXJcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiRWRpdCBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdG5ldyBTZWxlY3RSdWxlRWRpdE1vZGFsKHRoaXMuYXBwLCB0cmlnZ2VyLGxlZnRfcywgcmlnaHRfcywgYXN5bmMgKG5ld19sZWZ0LCBuZXdfcmlnaHQpID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi51cGRhdGVVc2VyU2VsZWN0aW9uUmVwUnVsZShpLCBuZXdfbGVmdCwgbmV3X3JpZ2h0KTtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fSkub3BlbigpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSlcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJ0cmFzaFwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJSZW1vdmUgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5kZWxldGVVc2VyU2VsZWN0aW9uUmVwUnVsZShpKTtcblx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSk7XG5cdFx0fVxuXG5cblx0fVxuXG5cdGJ1aWxkVXNlckRlbGV0ZVJ1bGVTZXR0aW5nKGNvbnRhaW5lckVsOiBIVE1MRGV0YWlsc0VsZW1lbnQpe1xuXHRcdGNvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgICAgIGNvbnRhaW5lckVsLm9udG9nZ2xlID0gYXN5bmMgKCkgPT4ge1xuXHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckRlbFJ1bGVTZXR0aW5nc09wZW4gPSBjb250YWluZXJFbC5vcGVuO1xuXHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgIH07XG5cdFx0Y29uc3Qgc3VtbWFyeSA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwic3VtbWFyeVwiLCB7Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCJ9KTtcblx0XHRzdW1tYXJ5LnNldFRleHQoXCJcdTgxRUFcdTVCOUFcdTRFNDlcdTUyMjBcdTk2NjRcdTdGMTZcdThGOTFcdTU4OUVcdTVGM0FcdTg5QzRcdTUyMTkgKEN1c3RvbWl6ZSBEZWxldGUgUnVsZSlcIilcblxuXHRcdGNvbnN0IGRlbGV0ZVJ1bGVTZXR0aW5nID0gbmV3IFNldHRpbmcoY29udGFpbmVyRWwpO1xuXHRcdGRlbGV0ZVJ1bGVTZXR0aW5nXG5cdFx0XHQuc2V0TmFtZShcIkRlbGV0ZSBSdWxlXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1ODlDNFx1NTIxOVx1RkYxQVx1NzUyOHxcdTRFRTNcdTg4NjhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcdUZGMENcdTVGQzVcdTk4N0JcdTUzMDVcdTU0MkJcdTUxNDlcdTY4MDdcdTMwMDIgVGlwczogVXNpbmcgfCB0byBpbmRpY2F0ZSB0aGUgY3Vyc29yIHBvc2l0aW9uLlwiKVxuXG5cdFx0Y29uc3QgcGF0dGVybkJlZm9yZSA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChkZWxldGVSdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHBhdHRlcm5CZWZvcmUuc2V0UGxhY2Vob2xkZXIoXCJCZWZvcmUgRGVsZXRlXCIpO1xuXG5cdFx0Y29uc3QgcGF0dGVybkFmdGVyID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KGRlbGV0ZVJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cGF0dGVybkFmdGVyLnNldFBsYWNlaG9sZGVyKFwiTmV3IFBhdHRlcm5cIik7XG5cblx0XHRkZWxldGVSdWxlU2V0dGluZ1xuXHRcdFx0LmFkZEJ1dHRvbigoYnV0dG9uKSA9PiB7XG5cdFx0XHRcdGJ1dHRvblxuXHRcdFx0XHRcdC5zZXRCdXR0b25UZXh0KFwiK1wiKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiQWRkIFJ1bGVcIilcblx0XHRcdFx0XHQub25DbGljayhhc3luYyAoYnV0dG9uRWw6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IGJlZm9yZSA9IHBhdHRlcm5CZWZvcmUuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGxldCBhZnRlciA9IHBhdHRlcm5BZnRlci5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKGJlZm9yZSAmJiBhZnRlcikge1xuXHRcdFx0XHRcdFx0XHRsZXQgcmVnUnVsZSA9IC9cXHwvZztcblx0XHRcdFx0XHRcdFx0aWYoYmVmb3JlLnNlYXJjaChyZWdSdWxlKT09LTF8fGFmdGVyLnNlYXJjaChyZWdSdWxlKT09LTEpe1xuXHRcdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJJbmx2YWxpZCB0cmlnZ2VyLCBwYXR0ZXJuIG11c3QgY29udGFpbiBzeW1ib2wgXFx8IHdoaWNoIGluZGljYXRlIGN1cnNvciBwb3NpdGlvblwiKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5hZGRVc2VyRGVsZXRlUnVsZShiZWZvcmUsIGFmdGVyKTtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJtaXNzaW5nIGlucHV0XCIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3QubGVuZ3RoOyBpKyspe1xuXHRcdFx0bGV0IGJlZm9yZSA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3RbaV1bMF07XG5cdFx0XHRsZXQgYWZ0ZXIgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0W2ldWzFdO1xuXHRcdFx0bGV0IHNob3dTdHIgPSBcIlxcXCJcIiArIHNob3dTdHJpbmcoYmVmb3JlKSArIFwiXFxcIiAgZGVsZXRlLmJhY2t3YXJkcyAgXHUyMTkyIFxcXCJcIisgc2hvd1N0cmluZyhhZnRlcikrXCJcXFwiXCI7IFxuXHRcdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHRcdC5zZXROYW1lKHNob3dTdHIpXG5cdFx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRJY29uKFwiZ2VhclwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJFZGl0IHJ1bGVcIilcblx0XHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0bmV3IEVkaXRDb252ZXJ0UnVsZU1vZGFsKHRoaXMuYXBwLCBSdWxlVHlwZS5kZWxldGUsIGJlZm9yZSwgYWZ0ZXIsIGFzeW5jIChuZXdfYmVmb3JlLCBuZXdfYWZ0ZXIpID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi51cGRhdGVVc2VyRGVsZXRlUnVsZShpLCBuZXdfYmVmb3JlLCBuZXdfYWZ0ZXIpO1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0XHR9KS5vcGVuKCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcInRyYXNoXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIlJlbW92ZSBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljayhhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLmRlbGV0ZVVzZXJEZWxldGVSdWxlKGkpO1xuXHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KTtcblx0XHR9XG5cblx0fVxuXG5cdGJ1aWxkVXNlckNvbnZlcnRSdWxlU2V0dGluZyhjb250YWluZXJFbDogSFRNTERldGFpbHNFbGVtZW50KXtcblx0XHRjb250YWluZXJFbC5lbXB0eSgpO1xuICAgICAgICBjb250YWluZXJFbC5vbnRvZ2dsZSA9IGFzeW5jICgpID0+IHtcblx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJDdnRSdWxlU2V0dGluZ3NPcGVuID0gY29udGFpbmVyRWwub3Blbjtcblx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9O1xuXHRcdGNvbnN0IHN1bW1hcnkgPSBjb250YWluZXJFbC5jcmVhdGVFbChcInN1bW1hcnlcIiwge2NsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wifSk7XG5cdFx0c3VtbWFyeS5zZXRUZXh0KFwiXHU4MUVBXHU1QjlBXHU0RTQ5XHU3RjE2XHU4RjkxXHU4RjZDXHU2MzYyXHU4OUM0XHU1MjE5IChDdXN0b21pemUgQ29udmVydCBSdWxlKVwiKVxuXG5cdFx0Y29uc3QgY29udmVydFJ1bGVTZXR0aW5nID0gbmV3IFNldHRpbmcoY29udGFpbmVyRWwpO1xuXHRcdGNvbnZlcnRSdWxlU2V0dGluZ1xuXHRcdFx0LnNldE5hbWUoXCJDb252ZXJ0IFJ1bGVcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4OUM0XHU1MjE5XHVGRjFBXHU3NTI4fFx1NEVFM1x1ODg2OFx1NTE0OVx1NjgwN1x1NEY0RFx1N0Y2RVx1RkYwQ1x1NUZDNVx1OTg3Qlx1NTMwNVx1NTQyQlx1NTE0OVx1NjgwN1x1MzAwMiBUaXBzOiBVc2luZyB8IHRvIGluZGljYXRlIHRoZSBjdXJzb3IgcG9zaXRpb24uXCIpXG5cblx0XHRjb25zdCBwYXR0ZXJuQmVmb3JlID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KGNvbnZlcnRSdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHBhdHRlcm5CZWZvcmUuc2V0UGxhY2Vob2xkZXIoXCJCZWZvcmUgQ29udmVydFwiKTtcblxuXHRcdGNvbnN0IHBhdHRlcm5BZnRlciA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChjb252ZXJ0UnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRwYXR0ZXJuQWZ0ZXIuc2V0UGxhY2Vob2xkZXIoXCJOZXcgUGF0dGVyblwiKTtcblxuXHRcdGNvbnZlcnRSdWxlU2V0dGluZ1xuXHRcdFx0LmFkZEJ1dHRvbigoYnV0dG9uKSA9PiB7XG5cdFx0XHRcdGJ1dHRvblxuXHRcdFx0XHRcdC5zZXRCdXR0b25UZXh0KFwiK1wiKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiQWRkIFJ1bGVcIilcblx0XHRcdFx0XHQub25DbGljayhhc3luYyAoYnV0dG9uRWw6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IGJlZm9yZSA9IHBhdHRlcm5CZWZvcmUuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGxldCBhZnRlciA9IHBhdHRlcm5BZnRlci5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKGJlZm9yZSAmJiBhZnRlcikge1xuXHRcdFx0XHRcdFx0XHRsZXQgcmVnUnVsZSA9IC9cXHwvZztcblx0XHRcdFx0XHRcdFx0aWYoYmVmb3JlLnNlYXJjaChyZWdSdWxlKT09LTF8fGFmdGVyLnNlYXJjaChyZWdSdWxlKT09LTEpe1xuXHRcdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJJbmx2YWxpZCB0cmlnZ2VyLCBwYXR0ZXJuIG11c3QgY29udGFpbiBzeW1ib2wgXFx8IHdoaWNoIGluZGljYXRlIGN1cnNvciBwb3NpdGlvblwiKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5hZGRVc2VyQ29udmVydFJ1bGUoYmVmb3JlLCBhZnRlcik7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwibWlzc2luZyBpbnB1dFwiKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5sZW5ndGg7IGkrKyl7XG5cdFx0XHRsZXQgYmVmb3JlID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3RbaV1bMF07XG5cdFx0XHRsZXQgYWZ0ZXIgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdFtpXVsxXTtcblx0XHRcdGxldCBzaG93U3RyID0gXCJcXFwiXCIgKyBzaG93U3RyaW5nKGJlZm9yZSkgKyBcIlxcXCIgIGF1dG8gY29udmVydCB0byBcXFwiXCIrIHNob3dTdHJpbmcoYWZ0ZXIpK1wiXFxcIlwiOyBcblx0XHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0XHQuc2V0TmFtZShzaG93U3RyKVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcImdlYXJcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiRWRpdCBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdG5ldyBFZGl0Q29udmVydFJ1bGVNb2RhbCh0aGlzLmFwcCwgUnVsZVR5cGUuY29udmVydCwgYmVmb3JlLCBhZnRlciwgYXN5bmMgKG5ld19iZWZvcmUsIG5ld19hZnRlcikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnVwZGF0ZVVzZXJDb252ZXJ0UnVsZShpLCBuZXdfYmVmb3JlLCBuZXdfYWZ0ZXIpO1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0XHR9KS5vcGVuKCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcInRyYXNoXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIlJlbW92ZSBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljayhhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLmRlbGV0ZVVzZXJDb252ZXJ0UnVsZShpKTtcblx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cbn1cblxuXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzKGVsZW1lbnQ6IGFueSwgYXR0cmlidXRlczogYW55KSB7XG5cdGZvciAobGV0IGtleSBpbiBhdHRyaWJ1dGVzKSB7XG5cdFx0ZWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuXHR9XG59XG5cblxuZXhwb3J0IGNsYXNzIFNlbGVjdFJ1bGVFZGl0TW9kYWwgZXh0ZW5kcyBNb2RhbCB7XG5cdHRyaWdnZXI6IHN0cmluZztcblx0b2xkX2xlZnQ6IHN0cmluZztcblx0b2xkX3JpZ2h0OiBzdHJpbmc7XG5cdG5ld19sZWZ0OiBzdHJpbmc7XG5cdG5ld19yaWdodDogc3RyaW5nO1xuXHRvblN1Ym1pdDogKG5ld19sZWZ0OiBzdHJpbmcsIG5ld19yaWdodDpzdHJpbmcpID0+IHZvaWQ7XG5cblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIHRyaWdnZXI6IHN0cmluZywgbGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nLCBvblN1Ym1pdDogKG5ld19sZWZ0OiBzdHJpbmcsIG5ld19yaWdodDpzdHJpbmcpID0+IHZvaWQpIHtcblx0XHRzdXBlcihhcHApO1xuXHRcdHRoaXMudHJpZ2dlciA9IHRyaWdnZXI7XG5cdFx0dGhpcy5vbGRfbGVmdCA9IGxlZnQ7XG5cdFx0dGhpcy5vbGRfcmlnaHQgPSByaWdodDtcblx0XHR0aGlzLm5ld19sZWZ0ID0gbGVmdDtcblx0XHR0aGlzLm5ld19yaWdodCA9IHJpZ2h0O1xuXG5cdFx0dGhpcy5vblN1Ym1pdCA9IG9uU3VibWl0O1xuXHR9XG5cblx0b25PcGVuKCkge1xuXHRcdGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuXG5cdFx0Y29udGVudEVsLmNyZWF0ZUVsKFwiaDFcIiwgeyB0ZXh0OiBcIkVkaXQgU2VsZWN0aW9uIFJlcGxhY2UgUnVsZVwiIH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LnNldE5hbWUoXCJUcmlnZ2VyXCIpXG5cdFx0XHQuYWRkVGV4dCgodGV4dCkgPT4ge1xuXHRcdFx0XHR0ZXh0LnNldFZhbHVlKHRoaXMudHJpZ2dlcik7XG5cdFx0XHRcdHRleHQuc2V0RGlzYWJsZWQodHJ1ZSk7XG5cdFx0XHR9KVxuXHRcdFxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5zZXROYW1lKFwiTGVmdFwiKVxuXHRcdFx0LmFkZFRleHRBcmVhKCh0ZXh0KSA9PiB7XG5cdFx0XHRcdHRleHQuc2V0VmFsdWUodGhpcy5vbGRfbGVmdCk7XG5cdFx0XHRcdHRleHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5uZXdfbGVmdCA9IHZhbHVlXG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5zZXROYW1lKFwiUmlnaHRcIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT4ge1xuXHRcdFx0XHR0ZXh0LnNldFZhbHVlKHRoaXMub2xkX3JpZ2h0KTtcblx0XHRcdFx0dGV4dC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLm5ld19yaWdodCA9IHZhbHVlXG5cdFx0XHRcdH0pXG5cdFx0XHR9KTtcblxuXG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LmFkZEJ1dHRvbigoYnRuKSA9PlxuXHRcdFx0XHRidG5cblx0XHRcdFx0XHQuc2V0QnV0dG9uVGV4dChcIlVwZGF0ZVwiKVxuXHRcdFx0XHRcdC5zZXRDdGEoKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuY2xvc2UoKTtcblx0XHRcdFx0XHRcdHRoaXMub25TdWJtaXQodGhpcy5uZXdfbGVmdCwgdGhpcy5uZXdfcmlnaHQpO1xuXHRcdFx0XHRcdH0pKTtcblx0fVxuXG5cdG9uQ2xvc2UoKSB7XG5cdFx0bGV0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuXHRcdGNvbnRlbnRFbC5lbXB0eSgpO1xuXHR9XG59XG5cblxuXG5leHBvcnQgY2xhc3MgRWRpdENvbnZlcnRSdWxlTW9kYWwgZXh0ZW5kcyBNb2RhbCB7XG5cdHR5cGU6IFJ1bGVUeXBlO1xuXHRvbGRfYmVmb3JlOiBzdHJpbmc7XG5cdG9sZF9hZnRlcjogc3RyaW5nO1xuXHRuZXdfYmVmb3JlOiBzdHJpbmc7XG5cdG5ld19hZnRlcjogc3RyaW5nO1xuXHRvblN1Ym1pdDogKG5ld19iZWZvcmU6IHN0cmluZywgbmV3X2FmdGVyOnN0cmluZykgPT4gdm9pZDtcblxuXHRjb25zdHJ1Y3RvcihhcHA6IEFwcCwgdHlwZTogUnVsZVR5cGUsIGJlZm9yZTogc3RyaW5nLCBhZnRlcjogc3RyaW5nLCBvblN1Ym1pdDogKG5ld19iZWZvcmU6IHN0cmluZywgbmV3X2FmdGVyOnN0cmluZykgPT4gdm9pZCkge1xuXHRcdHN1cGVyKGFwcCk7XG5cdFx0dGhpcy50eXBlID0gdHlwZTtcblx0XHR0aGlzLm9sZF9iZWZvcmUgPSBiZWZvcmU7XG5cdFx0dGhpcy5vbGRfYWZ0ZXIgPSBhZnRlcjtcblx0XHR0aGlzLm5ld19iZWZvcmUgPSBiZWZvcmU7XG5cdFx0dGhpcy5uZXdfYWZ0ZXIgPSBhZnRlcjtcblxuXHRcdHRoaXMub25TdWJtaXQgPSBvblN1Ym1pdDtcblx0fVxuXG5cdG9uT3BlbigpIHtcblx0XHRjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcblxuXHRcdGNvbnRlbnRFbC5jcmVhdGVFbChcImgxXCIsIHsgdGV4dDogXCJFZGl0IFwiICsgdGhpcy50eXBlfSk7XG5cdFx0XG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LnNldE5hbWUoXCJPbGQgUGF0dGVyblwiKVxuXHRcdFx0LmFkZFRleHRBcmVhKCh0ZXh0KSA9PiB7XG5cdFx0XHRcdHRleHQuc2V0VmFsdWUodGhpcy5vbGRfYmVmb3JlKTtcblx0XHRcdFx0dGV4dC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLm5ld19iZWZvcmUgPSB2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuc2V0TmFtZShcIk5ldyBQYXR0ZXJuXCIpXG5cdFx0XHQuYWRkVGV4dEFyZWEoKHRleHQpID0+IHtcblx0XHRcdFx0dGV4dC5zZXRWYWx1ZSh0aGlzLm9sZF9hZnRlcik7XG5cdFx0XHRcdHRleHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5uZXdfYWZ0ZXIgPSB2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSk7XG5cblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5hZGRCdXR0b24oKGJ0bikgPT5cblx0XHRcdFx0YnRuXG5cdFx0XHRcdFx0LnNldEJ1dHRvblRleHQoXCJVcGRhdGVcIilcblx0XHRcdFx0XHQuc2V0Q3RhKClcblx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5jaGVja0NvbnZlcnRQYXR0ZXJuU3RyaW5nKHRoaXMubmV3X2JlZm9yZSwgdGhpcy5uZXdfYWZ0ZXIpKVxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0aGlzLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMub25TdWJtaXQodGhpcy5uZXdfYmVmb3JlLCB0aGlzLm5ld19hZnRlcik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwiSW52YWxpZCBwYXR0ZXJuIHN0cmluZyFcIik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHR9KSk7XG5cdH1cblxuXHRjaGVja0NvbnZlcnRQYXR0ZXJuU3RyaW5nKGJlZm9yZTogc3RyaW5nLCBhZnRlcjpzdHJpbmcpOmJvb2xlYW57XG5cdFx0bGV0IHJlZ1J1bGUgPSAvXFx8L2c7XG5cdFx0aWYoYmVmb3JlLnNlYXJjaChyZWdSdWxlKT09LTEgfHwgYWZ0ZXIuc2VhcmNoKHJlZ1J1bGUpPT0tMSkgcmV0dXJuIGZhbHNlO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0b25DbG9zZSgpIHtcblx0XHRsZXQgeyBjb250ZW50RWwgfSA9IHRoaXM7XG5cdFx0Y29udGVudEVsLmVtcHR5KCk7XG5cdH1cbn1cblxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHVCQUE2SDtBQUM3SCxtQkFBdUY7QUFDdkYsb0JBQXFDOzs7QUNGckMsc0JBQXNCOzs7QUNPZixxQkFBcUIsS0FBVSxRQUFlO0FBQ3BELE1BQUksT0FBTyxJQUFJLE9BQU8sTUFBTTtBQUM1QixTQUFPLEVBQUMsTUFBTSxLQUFLLFNBQVMsR0FBRyxJQUFJLFNBQVMsS0FBSyxLQUFJO0FBQ3REO0FBRU8sNkJBQTZCLElBQXlCO0FBQzVELE1BQUksbUJBQTRCO0FBQUEsSUFBQztBQUFBLElBQzNCO0FBQUEsSUFBc0I7QUFBQSxJQUFjO0FBQUEsSUFBZTtBQUFBLElBQWM7QUFBQSxJQUFrQjtBQUFBLElBQ25GO0FBQUEsSUFBb0I7QUFBQSxJQUFrQjtBQUFB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 diff --git a/.obsidian/plugins/easy-typing-obsidian/manifest.json b/.obsidian/plugins/easy-typing-obsidian/manifest.json index 415d920..4836ec7 100644 --- a/.obsidian/plugins/easy-typing-obsidian/manifest.json +++ b/.obsidian/plugins/easy-typing-obsidian/manifest.json @@ -1,7 +1,7 @@ { "id": "easy-typing-obsidian", "name": "Easy Typing", - "version": "5.1.9", + "version": "5.1.10", "minAppVersion": "0.15.0", "description": "Autoformat your note as typing.(Auto captalize, autospace)", "author": "yaozhuwa", diff --git a/.obsidian/plugins/notion-like-tables/data.json b/.obsidian/plugins/notion-like-tables/data.json index 58179a4..cd7dd95 100644 --- a/.obsidian/plugins/notion-like-tables/data.json +++ b/.obsidian/plugins/notion-like-tables/data.json @@ -1,4 +1,16 @@ { + "shouldDebug": false, + "createAtObsidianAttachmentFolder": false, + "customFolderForNewFiles": "", + "removeMarkdownOnExport": true, + "defaultEmbedWidth": "100%", + "defaultEmbedHeight": "340px", + "hasMigratedTo800": true, + "showWelcomeModal": false, + "showSupportModal": true, + "showWhatsNewModal": true, + "defaultFrozenColumnCount": 1, + "pluginVersion": "8.6.4", "data": { "table-id-ncD19n": { "model": { @@ -168,6 +180,5 @@ "viewModes": [], "eventType": "update-state" }, - "shouldClear": false, - "shouldDebug": false + "shouldClear": false } \ No newline at end of file diff --git a/.obsidian/plugins/notion-like-tables/main.js b/.obsidian/plugins/notion-like-tables/main.js index 2dbacbe..4e88703 100644 --- a/.obsidian/plugins/notion-like-tables/main.js +++ b/.obsidian/plugins/notion-like-tables/main.js @@ -54,10 +54,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var __publicField = (obj, key, value) => { - __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { @@ -236,20 +232,20 @@ var require_react_development = __commonJS({ { Object.freeze(emptyObject); } - function Component(props, context, updater) { + function Component2(props, context, updater) { this.props = props; this.context = context; this.refs = emptyObject; this.updater = updater || ReactNoopUpdateQueue; } - Component.prototype.isReactComponent = {}; - Component.prototype.setState = function(partialState, callback) { + Component2.prototype.isReactComponent = {}; + Component2.prototype.setState = function(partialState, callback) { if (typeof partialState !== "object" && typeof partialState !== "function" && partialState != null) { throw new Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables."); } this.updater.enqueueSetState(this, partialState, callback, "setState"); }; - Component.prototype.forceUpdate = function(callback) { + Component2.prototype.forceUpdate = function(callback) { this.updater.enqueueForceUpdate(this, callback, "forceUpdate"); }; { @@ -258,7 +254,7 @@ var require_react_development = __commonJS({ replaceState: ["replaceState", "Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."] }; var defineDeprecationWarning = function(methodName, info) { - Object.defineProperty(Component.prototype, methodName, { + Object.defineProperty(Component2.prototype, methodName, { get: function() { warn("%s(...) is deprecated in plain JavaScript React classes. %s", info[0], info[1]); return void 0; @@ -273,7 +269,7 @@ var require_react_development = __commonJS({ } function ComponentDummy() { } - ComponentDummy.prototype = Component.prototype; + ComponentDummy.prototype = Component2.prototype; function PureComponent(props, context, updater) { this.props = props; this.context = context; @@ -282,7 +278,7 @@ var require_react_development = __commonJS({ } var pureComponentPrototype = PureComponent.prototype = new ComponentDummy(); pureComponentPrototype.constructor = PureComponent; - assign(pureComponentPrototype, Component.prototype); + assign(pureComponentPrototype, Component2.prototype); pureComponentPrototype.isPureReactComponent = true; function createRef() { var refObject = { @@ -505,7 +501,7 @@ var require_react_development = __commonJS({ } return element; }; - function createElement2(type, config, children) { + function createElement3(type, config, children) { var propName; var props = {}; var key = null; @@ -626,7 +622,7 @@ var require_react_development = __commonJS({ } var SEPARATOR = "."; var SUBSEPARATOR = ":"; - function escape(key) { + function escape2(key) { var escapeRegex = /[=:]/g; var escaperLookup = { "=": "=0", @@ -647,7 +643,7 @@ var require_react_development = __commonJS({ { checkKeyStringCoercion(element.key); } - return escape("" + element.key); + return escape2("" + element.key); } return index.toString(36); } @@ -949,26 +945,26 @@ var require_react_development = __commonJS({ } return lazyType; } - function forwardRef(render) { + function forwardRef2(render2) { { - if (render != null && render.$$typeof === REACT_MEMO_TYPE) { + if (render2 != null && render2.$$typeof === REACT_MEMO_TYPE) { error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."); - } else if (typeof render !== "function") { - error("forwardRef requires a render function but was given %s.", render === null ? "null" : typeof render); + } else if (typeof render2 !== "function") { + error("forwardRef requires a render function but was given %s.", render2 === null ? "null" : typeof render2); } else { - if (render.length !== 0 && render.length !== 2) { - error("forwardRef render functions accept exactly two parameters: props and ref. %s", render.length === 1 ? "Did you forget to use the ref parameter?" : "Any additional parameter will be undefined."); + if (render2.length !== 0 && render2.length !== 2) { + error("forwardRef render functions accept exactly two parameters: props and ref. %s", render2.length === 1 ? "Did you forget to use the ref parameter?" : "Any additional parameter will be undefined."); } } - if (render != null) { - if (render.defaultProps != null || render.propTypes != null) { + if (render2 != null) { + if (render2.defaultProps != null || render2.propTypes != null) { error("forwardRef render functions do not support propTypes or defaultProps. Did you accidentally pass a React component?"); } } } var elementType = { $$typeof: REACT_FORWARD_REF_TYPE, - render + render: render2 }; { var ownName; @@ -980,8 +976,8 @@ var require_react_development = __commonJS({ }, set: function(name) { ownName = name; - if (!render.name && !render.displayName) { - render.displayName = name; + if (!render2.name && !render2.displayName) { + render2.displayName = name; } } }); @@ -1006,7 +1002,7 @@ var require_react_development = __commonJS({ } return false; } - function memo(type, compare) { + function memo2(type, compare) { { if (!isValidElementType2(type)) { error("memo: The first argument must be a component. Instead received: %s", type === null ? "null" : typeof type); @@ -1044,7 +1040,7 @@ var require_react_development = __commonJS({ } return dispatcher; } - function useContext5(Context) { + function useContext3(Context) { var dispatcher = resolveDispatcher(); { if (Context._context !== void 0) { @@ -1066,7 +1062,7 @@ var require_react_development = __commonJS({ var dispatcher = resolveDispatcher(); return dispatcher.useReducer(reducer, initialArg, init2); } - function useRef3(initialValue) { + function useRef4(initialValue) { var dispatcher = resolveDispatcher(); return dispatcher.useRef(initialValue); } @@ -1082,7 +1078,7 @@ var require_react_development = __commonJS({ var dispatcher = resolveDispatcher(); return dispatcher.useLayoutEffect(create, deps); } - function useCallback(callback, deps) { + function useCallback2(callback, deps) { var dispatcher = resolveDispatcher(); return dispatcher.useCallback(callback, deps); } @@ -1323,8 +1319,8 @@ var require_react_development = __commonJS({ return describeNativeComponentFrame(fn2, false); } } - function shouldConstruct(Component2) { - var prototype = Component2.prototype; + function shouldConstruct(Component3) { + var prototype = Component3.prototype; return !!(prototype && prototype.isReactComponent); } function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) { @@ -1581,7 +1577,7 @@ var require_react_development = __commonJS({ error("React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", typeString, info); } } - var element = createElement2.apply(this, arguments); + var element = createElement3.apply(this, arguments); if (element == null) { return element; } @@ -1828,7 +1824,7 @@ var require_react_development = __commonJS({ only: onlyChild }; exports.Children = Children; - exports.Component = Component; + exports.Component = Component2; exports.Fragment = REACT_FRAGMENT_TYPE; exports.Profiler = REACT_PROFILER_TYPE; exports.PureComponent = PureComponent; @@ -1840,14 +1836,14 @@ var require_react_development = __commonJS({ exports.createElement = createElement$1; exports.createFactory = createFactory; exports.createRef = createRef; - exports.forwardRef = forwardRef; + exports.forwardRef = forwardRef2; exports.isValidElement = isValidElement; exports.lazy = lazy; - exports.memo = memo; + exports.memo = memo2; exports.startTransition = startTransition; exports.unstable_act = act; - exports.useCallback = useCallback; - exports.useContext = useContext5; + exports.useCallback = useCallback2; + exports.useContext = useContext3; exports.useDebugValue = useDebugValue2; exports.useDeferredValue = useDeferredValue; exports.useEffect = useEffect2; @@ -1857,7 +1853,7 @@ var require_react_development = __commonJS({ exports.useLayoutEffect = useLayoutEffect2; exports.useMemo = useMemo3; exports.useReducer = useReducer; - exports.useRef = useRef3; + exports.useRef = useRef4; exports.useState = useState2; exports.useSyncExternalStore = useSyncExternalStore3; exports.useTransition = useTransition; @@ -2354,9 +2350,9 @@ var require_react_dom_development = __commonJS({ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); } - var React49 = require_react(); + var React58 = require_react(); var Scheduler = require_scheduler(); - var ReactSharedInternals = React49.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + var ReactSharedInternals = React58.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; var suppressWarning = false; function setSuppressWarning(newSuppressWarning) { { @@ -2405,7 +2401,7 @@ var require_react_dom_development = __commonJS({ var HostPortal = 4; var HostComponent = 5; var HostText = 6; - var Fragment2 = 7; + var Fragment22 = 7; var Mode = 8; var ContextConsumer = 9; var ContextProvider = 10; @@ -3312,8 +3308,8 @@ var require_react_dom_development = __commonJS({ return describeNativeComponentFrame(fn2, false); } } - function shouldConstruct(Component) { - var prototype = Component.prototype; + function shouldConstruct(Component2) { + var prototype = Component2.prototype; return !!(prototype && prototype.isReactComponent); } function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) { @@ -3482,7 +3478,7 @@ var require_react_dom_development = __commonJS({ return "DehydratedFragment"; case ForwardRef: return getWrappedName$1(type, type.render, "ForwardRef"); - case Fragment2: + case Fragment22: return "Fragment"; case HostComponent: return type; @@ -3877,7 +3873,7 @@ var require_react_dom_development = __commonJS({ { if (props.value == null) { if (typeof props.children === "object" && props.children !== null) { - React49.Children.forEach(props.children, function(child) { + React58.Children.forEach(props.children, function(child) { if (child == null) { return; } @@ -4099,10 +4095,10 @@ var require_react_dom_development = __commonJS({ } function postMountWrapper$3(element, props) { var node = element; - var textContent = node.textContent; - if (textContent === node._wrapperState.initialValue) { - if (textContent !== "" && textContent !== null) { - node.value = textContent; + var textContent2 = node.textContent; + if (textContent2 === node._wrapperState.initialValue) { + if (textContent2 !== "" && textContent2 !== null) { + node.value = textContent2; } } } @@ -4308,7 +4304,7 @@ var require_react_dom_development = __commonJS({ var warnedForNaNValue = false; var warnedForInfinityValue = false; var camelize = function(string) { - return string.replace(hyphenPattern, function(_3, character) { + return string.replace(hyphenPattern, function(_5, character) { return character.toUpperCase(); }); }; @@ -7219,7 +7215,7 @@ var require_react_dom_development = __commonJS({ var fallbackText = null; function initialize(nativeEventTarget) { root = nativeEventTarget; - startText = getText(); + startText = getText2(); return true; } function reset2() { @@ -7235,7 +7231,7 @@ var require_react_dom_development = __commonJS({ var startValue = startText; var startLength = startValue.length; var end; - var endValue = getText(); + var endValue = getText2(); var endLength = endValue.length; for (start = 0; start < startLength; start++) { if (startValue[start] !== endValue[start]) { @@ -7252,7 +7248,7 @@ var require_react_dom_development = __commonJS({ fallbackText = endValue.slice(start, sliceTail); return fallbackText; } - function getText() { + function getText2() { if ("value" in root) { return root.value; } @@ -8762,7 +8758,7 @@ var require_react_dom_development = __commonJS({ } return listeners; } - function getParent(inst) { + function getParent2(inst) { if (inst === null) { return null; } @@ -8778,19 +8774,19 @@ var require_react_dom_development = __commonJS({ var nodeA = instA; var nodeB = instB; var depthA = 0; - for (var tempA = nodeA; tempA; tempA = getParent(tempA)) { + for (var tempA = nodeA; tempA; tempA = getParent2(tempA)) { depthA++; } var depthB = 0; - for (var tempB = nodeB; tempB; tempB = getParent(tempB)) { + for (var tempB = nodeB; tempB; tempB = getParent2(tempB)) { depthB++; } while (depthA - depthB > 0) { - nodeA = getParent(nodeA); + nodeA = getParent2(nodeA); depthA--; } while (depthB - depthA > 0) { - nodeB = getParent(nodeB); + nodeB = getParent2(nodeB); depthB--; } var depth = depthA; @@ -8798,8 +8794,8 @@ var require_react_dom_development = __commonJS({ if (nodeA === nodeB || nodeB !== null && nodeA === nodeB.alternate) { return nodeA; } - nodeA = getParent(nodeA); - nodeB = getParent(nodeB); + nodeA = getParent2(nodeA); + nodeB = getParent2(nodeB); } return null; } @@ -8891,13 +8887,13 @@ var require_react_dom_development = __commonJS({ didWarnInvalidHydration = true; error("Prop `%s` did not match. Server: %s Client: %s", propName, JSON.stringify(normalizedServerValue), JSON.stringify(normalizedClientValue)); }; - warnForExtraAttributes = function(attributeNames) { + warnForExtraAttributes = function(attributeNames2) { if (didWarnInvalidHydration) { return; } didWarnInvalidHydration = true; var names = []; - attributeNames.forEach(function(name) { + attributeNames2.forEach(function(name) { names.push(name); }); error("Extra attributes from the server: %s", names); @@ -8910,9 +8906,9 @@ var require_react_dom_development = __commonJS({ } }; normalizeHTML = function(parent, html) { - var testElement = parent.namespaceURI === HTML_NAMESPACE ? parent.ownerDocument.createElement(parent.tagName) : parent.ownerDocument.createElementNS(parent.namespaceURI, parent.tagName); - testElement.innerHTML = html; - return testElement.innerHTML; + var testElement2 = parent.namespaceURI === HTML_NAMESPACE ? parent.ownerDocument.createElement(parent.tagName) : parent.ownerDocument.createElementNS(parent.namespaceURI, parent.tagName); + testElement2.innerHTML = html; + return testElement2.innerHTML; }; } var NORMALIZE_NEWLINES_REGEX = /\r\n?/g; @@ -9010,7 +9006,7 @@ var require_react_dom_development = __commonJS({ } } } - function createElement2(type, props, rootContainerElement, parentNamespace) { + function createElement3(type, props, rootContainerElement, parentNamespace) { var isCustomComponentTag; var ownerDocument = getOwnerDocumentFromRootContainer(rootContainerElement); var domElement; @@ -9862,7 +9858,7 @@ var require_react_dom_development = __commonJS({ } parentNamespace = hostContextDev.namespace; } - var domElement = createElement2(type, props, rootContainerInstance, parentNamespace); + var domElement = createElement3(type, props, rootContainerInstance, parentNamespace); precacheFiberNode(internalInstanceHandle, domElement); updateFiberProps(domElement, props); return domElement; @@ -9954,7 +9950,7 @@ var require_react_dom_development = __commonJS({ function commitTextUpdate(textInstance, oldText, newText) { textInstance.nodeValue = newText; } - function appendChild(parentInstance, child) { + function appendChild2(parentInstance, child) { parentInstance.appendChild(child); } function appendChildToContainer(container, child) { @@ -10466,9 +10462,9 @@ var require_react_dom_development = __commonJS({ var contextStackCursor = createCursor(emptyContextObject); var didPerformWorkStackCursor = createCursor(false); var previousContext = emptyContextObject; - function getUnmaskedContext(workInProgress2, Component, didPushOwnContextIfProvider) { + function getUnmaskedContext(workInProgress2, Component2, didPushOwnContextIfProvider) { { - if (didPushOwnContextIfProvider && isContextProvider(Component)) { + if (didPushOwnContextIfProvider && isContextProvider(Component2)) { return previousContext; } return contextStackCursor.current; @@ -10605,8 +10601,8 @@ var require_react_dom_development = __commonJS({ case HostRoot: return node.stateNode.context; case ClassComponent: { - var Component = node.type; - if (isContextProvider(Component)) { + var Component2 = node.type; + if (isContextProvider(Component2)) { return node.stateNode.__reactInternalMemoizedMergedChildContext; } break; @@ -11049,8 +11045,8 @@ var require_react_dom_development = __commonJS({ } function prepareToHydrateHostTextInstance(fiber) { var textInstance = fiber.stateNode; - var textContent = fiber.memoizedProps; - var shouldUpdate = hydrateTextInstance(textInstance, textContent, fiber); + var textContent2 = fiber.memoizedProps; + var shouldUpdate = hydrateTextInstance(textInstance, textContent2, fiber); if (shouldUpdate) { var returnFiber = hydrationParentFiber; if (returnFiber !== null) { @@ -11061,7 +11057,7 @@ var require_react_dom_development = __commonJS({ didNotMatchHydratedContainerTextInstance( parentContainer, textInstance, - textContent, + textContent2, isConcurrentMode ); break; @@ -11076,7 +11072,7 @@ var require_react_dom_development = __commonJS({ parentProps, parentInstance, textInstance, - textContent, + textContent2, _isConcurrentMode2 ); break; @@ -11362,10 +11358,10 @@ var require_react_dom_development = __commonJS({ pendingLegacyContextWarning = /* @__PURE__ */ new Map(); }; } - function resolveDefaultProps(Component, baseProps) { - if (Component && Component.defaultProps) { + function resolveDefaultProps(Component2, baseProps) { + if (Component2 && Component2.defaultProps) { var props = assign({}, baseProps); - var defaultProps = Component.defaultProps; + var defaultProps = Component2.defaultProps; for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; @@ -12038,7 +12034,7 @@ var require_react_dom_development = __commonJS({ } } var fakeInternalInstance = {}; - var emptyRefsObject = new React49.Component().refs; + var emptyRefsObject = new React58.Component().refs; var didWarnAboutStateAssignmentForComponent; var didWarnAboutUninitializedState; var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate; @@ -12802,13 +12798,13 @@ var require_react_dom_development = __commonJS({ } return newFiber; } - function updateTextNode(returnFiber, current2, textContent, lanes) { + function updateTextNode(returnFiber, current2, textContent2, lanes) { if (current2 === null || current2.tag !== HostText) { - var created = createFiberFromText(textContent, returnFiber.mode, lanes); + var created = createFiberFromText(textContent2, returnFiber.mode, lanes); created.return = returnFiber; return created; } else { - var existing = useFiber(current2, textContent); + var existing = useFiber(current2, textContent2); existing.return = returnFiber; return existing; } @@ -12847,7 +12843,7 @@ var require_react_dom_development = __commonJS({ } } function updateFragment2(returnFiber, current2, fragment, lanes, key) { - if (current2 === null || current2.tag !== Fragment2) { + if (current2 === null || current2.tag !== Fragment22) { var created = createFiberFromFragment(fragment, returnFiber.mode, lanes, key); created.return = returnFiber; return created; @@ -13230,15 +13226,15 @@ var require_react_dom_development = __commonJS({ } return resultingFirstChild; } - function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent, lanes) { + function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent2, lanes) { if (currentFirstChild !== null && currentFirstChild.tag === HostText) { deleteRemainingChildren(returnFiber, currentFirstChild.sibling); - var existing = useFiber(currentFirstChild, textContent); + var existing = useFiber(currentFirstChild, textContent2); existing.return = returnFiber; return existing; } deleteRemainingChildren(returnFiber, currentFirstChild); - var created = createFiberFromText(textContent, returnFiber.mode, lanes); + var created = createFiberFromText(textContent2, returnFiber.mode, lanes); created.return = returnFiber; return created; } @@ -13249,7 +13245,7 @@ var require_react_dom_development = __commonJS({ if (child.key === key) { var elementType = element.type; if (elementType === REACT_FRAGMENT_TYPE) { - if (child.tag === Fragment2) { + if (child.tag === Fragment22) { deleteRemainingChildren(returnFiber, child.sibling); var existing = useFiber(child, element.props.children); existing.return = returnFiber; @@ -13617,7 +13613,7 @@ var require_react_dom_development = __commonJS({ } return true; } - function renderWithHooks(current2, workInProgress2, Component, props, secondArg, nextRenderLanes) { + function renderWithHooks(current2, workInProgress2, Component2, props, secondArg, nextRenderLanes) { renderLanes = nextRenderLanes; currentlyRenderingFiber$1 = workInProgress2; { @@ -13637,7 +13633,7 @@ var require_react_dom_development = __commonJS({ ReactCurrentDispatcher$1.current = HooksDispatcherOnMountInDEV; } } - var children = Component(props, secondArg); + var children = Component2(props, secondArg); if (didScheduleRenderPhaseUpdateDuringThisPass) { var numberOfReRenders = 0; do { @@ -13657,7 +13653,7 @@ var require_react_dom_development = __commonJS({ hookTypesUpdateIndexDev = -1; } ReactCurrentDispatcher$1.current = HooksDispatcherOnRerenderInDEV; - children = Component(props, secondArg); + children = Component2(props, secondArg); } while (didScheduleRenderPhaseUpdateDuringThisPass); } ReactCurrentDispatcher$1.current = ContextOnlyDispatcher; @@ -15756,21 +15752,21 @@ var require_react_dom_development = __commonJS({ workInProgress2.child = reconcileChildFibers(workInProgress2, current2.child, null, renderLanes2); workInProgress2.child = reconcileChildFibers(workInProgress2, null, nextChildren, renderLanes2); } - function updateForwardRef(current2, workInProgress2, Component, nextProps, renderLanes2) { + function updateForwardRef(current2, workInProgress2, Component2, nextProps, renderLanes2) { { if (workInProgress2.type !== workInProgress2.elementType) { - var innerPropTypes = Component.propTypes; + var innerPropTypes = Component2.propTypes; if (innerPropTypes) { checkPropTypes( innerPropTypes, nextProps, "prop", - getComponentNameFromType(Component) + getComponentNameFromType(Component2) ); } } } - var render2 = Component.render; + var render3 = Component2.render; var ref = workInProgress2.ref; var nextChildren; var hasId; @@ -15781,12 +15777,12 @@ var require_react_dom_development = __commonJS({ { ReactCurrentOwner$1.current = workInProgress2; setIsRendering(true); - nextChildren = renderWithHooks(current2, workInProgress2, render2, nextProps, ref, renderLanes2); + nextChildren = renderWithHooks(current2, workInProgress2, render3, nextProps, ref, renderLanes2); hasId = checkDidRenderIdHook(); if (workInProgress2.mode & StrictLegacyMode) { setIsStrictModeForDevtools(true); try { - nextChildren = renderWithHooks(current2, workInProgress2, render2, nextProps, ref, renderLanes2); + nextChildren = renderWithHooks(current2, workInProgress2, render3, nextProps, ref, renderLanes2); hasId = checkDidRenderIdHook(); } finally { setIsStrictModeForDevtools(false); @@ -15808,10 +15804,10 @@ var require_react_dom_development = __commonJS({ reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2); return workInProgress2.child; } - function updateMemoComponent(current2, workInProgress2, Component, nextProps, renderLanes2) { + function updateMemoComponent(current2, workInProgress2, Component2, nextProps, renderLanes2) { if (current2 === null) { - var type = Component.type; - if (isSimpleFunctionComponent(type) && Component.compare === null && Component.defaultProps === void 0) { + var type = Component2.type; + if (isSimpleFunctionComponent(type) && Component2.compare === null && Component2.defaultProps === void 0) { var resolvedType = type; { resolvedType = resolveFunctionForHotReloading(type); @@ -15834,14 +15830,14 @@ var require_react_dom_development = __commonJS({ ); } } - var child = createFiberFromTypeAndProps(Component.type, null, nextProps, workInProgress2, workInProgress2.mode, renderLanes2); + var child = createFiberFromTypeAndProps(Component2.type, null, nextProps, workInProgress2, workInProgress2.mode, renderLanes2); child.ref = workInProgress2.ref; child.return = workInProgress2; workInProgress2.child = child; return child; } { - var _type = Component.type; + var _type = Component2.type; var _innerPropTypes = _type.propTypes; if (_innerPropTypes) { checkPropTypes( @@ -15856,7 +15852,7 @@ var require_react_dom_development = __commonJS({ var hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current2, renderLanes2); if (!hasScheduledUpdateOrContext) { var prevProps = currentChild.memoizedProps; - var compare = Component.compare; + var compare = Component2.compare; compare = compare !== null ? compare : shallowEqual2; if (compare(prevProps, nextProps) && current2.ref === workInProgress2.ref) { return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2); @@ -15869,7 +15865,7 @@ var require_react_dom_development = __commonJS({ workInProgress2.child = newChild; return newChild; } - function updateSimpleMemoComponent(current2, workInProgress2, Component, nextProps, renderLanes2) { + function updateSimpleMemoComponent(current2, workInProgress2, Component2, nextProps, renderLanes2) { { if (workInProgress2.type !== workInProgress2.elementType) { var outerMemoType = workInProgress2.elementType; @@ -15907,7 +15903,7 @@ var require_react_dom_development = __commonJS({ } } } - return updateFunctionComponent(current2, workInProgress2, Component, nextProps, renderLanes2); + return updateFunctionComponent(current2, workInProgress2, Component2, nextProps, renderLanes2); } function updateOffscreenComponent(current2, workInProgress2, renderLanes2) { var nextProps = workInProgress2.pendingProps; @@ -15997,23 +15993,23 @@ var require_react_dom_development = __commonJS({ } } } - function updateFunctionComponent(current2, workInProgress2, Component, nextProps, renderLanes2) { + function updateFunctionComponent(current2, workInProgress2, Component2, nextProps, renderLanes2) { { if (workInProgress2.type !== workInProgress2.elementType) { - var innerPropTypes = Component.propTypes; + var innerPropTypes = Component2.propTypes; if (innerPropTypes) { checkPropTypes( innerPropTypes, nextProps, "prop", - getComponentNameFromType(Component) + getComponentNameFromType(Component2) ); } } } var context; { - var unmaskedContext = getUnmaskedContext(workInProgress2, Component, true); + var unmaskedContext = getUnmaskedContext(workInProgress2, Component2, true); context = getMaskedContext(workInProgress2, unmaskedContext); } var nextChildren; @@ -16025,12 +16021,12 @@ var require_react_dom_development = __commonJS({ { ReactCurrentOwner$1.current = workInProgress2; setIsRendering(true); - nextChildren = renderWithHooks(current2, workInProgress2, Component, nextProps, context, renderLanes2); + nextChildren = renderWithHooks(current2, workInProgress2, Component2, nextProps, context, renderLanes2); hasId = checkDidRenderIdHook(); if (workInProgress2.mode & StrictLegacyMode) { setIsStrictModeForDevtools(true); try { - nextChildren = renderWithHooks(current2, workInProgress2, Component, nextProps, context, renderLanes2); + nextChildren = renderWithHooks(current2, workInProgress2, Component2, nextProps, context, renderLanes2); hasId = checkDidRenderIdHook(); } finally { setIsStrictModeForDevtools(false); @@ -16052,7 +16048,7 @@ var require_react_dom_development = __commonJS({ reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2); return workInProgress2.child; } - function updateClassComponent(current2, workInProgress2, Component, nextProps, renderLanes2) { + function updateClassComponent(current2, workInProgress2, Component2, nextProps, renderLanes2) { { switch (shouldError(workInProgress2)) { case false: { @@ -16075,19 +16071,19 @@ var require_react_dom_development = __commonJS({ } } if (workInProgress2.type !== workInProgress2.elementType) { - var innerPropTypes = Component.propTypes; + var innerPropTypes = Component2.propTypes; if (innerPropTypes) { checkPropTypes( innerPropTypes, nextProps, "prop", - getComponentNameFromType(Component) + getComponentNameFromType(Component2) ); } } } var hasContext; - if (isContextProvider(Component)) { + if (isContextProvider(Component2)) { hasContext = true; pushContextProvider(workInProgress2); } else { @@ -16098,15 +16094,15 @@ var require_react_dom_development = __commonJS({ var shouldUpdate; if (instance === null) { resetSuspendedCurrentOnMountInLegacyMode(current2, workInProgress2); - constructClassInstance(workInProgress2, Component, nextProps); - mountClassInstance(workInProgress2, Component, nextProps, renderLanes2); + constructClassInstance(workInProgress2, Component2, nextProps); + mountClassInstance(workInProgress2, Component2, nextProps, renderLanes2); shouldUpdate = true; } else if (current2 === null) { - shouldUpdate = resumeMountClassInstance(workInProgress2, Component, nextProps, renderLanes2); + shouldUpdate = resumeMountClassInstance(workInProgress2, Component2, nextProps, renderLanes2); } else { - shouldUpdate = updateClassInstance(current2, workInProgress2, Component, nextProps, renderLanes2); + shouldUpdate = updateClassInstance(current2, workInProgress2, Component2, nextProps, renderLanes2); } - var nextUnitOfWork = finishClassComponent(current2, workInProgress2, Component, shouldUpdate, hasContext, renderLanes2); + var nextUnitOfWork = finishClassComponent(current2, workInProgress2, Component2, shouldUpdate, hasContext, renderLanes2); { var inst = workInProgress2.stateNode; if (shouldUpdate && inst.props !== nextProps) { @@ -16118,19 +16114,19 @@ var require_react_dom_development = __commonJS({ } return nextUnitOfWork; } - function finishClassComponent(current2, workInProgress2, Component, shouldUpdate, hasContext, renderLanes2) { + function finishClassComponent(current2, workInProgress2, Component2, shouldUpdate, hasContext, renderLanes2) { markRef(current2, workInProgress2); var didCaptureError = (workInProgress2.flags & DidCapture) !== NoFlags; if (!shouldUpdate && !didCaptureError) { if (hasContext) { - invalidateContextProvider(workInProgress2, Component, false); + invalidateContextProvider(workInProgress2, Component2, false); } return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2); } var instance = workInProgress2.stateNode; ReactCurrentOwner$1.current = workInProgress2; var nextChildren; - if (didCaptureError && typeof Component.getDerivedStateFromError !== "function") { + if (didCaptureError && typeof Component2.getDerivedStateFromError !== "function") { nextChildren = null; { stopProfilerTimerIfRunning(); @@ -16164,7 +16160,7 @@ var require_react_dom_development = __commonJS({ } workInProgress2.memoizedState = instance.state; if (hasContext) { - invalidateContextProvider(workInProgress2, Component, true); + invalidateContextProvider(workInProgress2, Component2, true); } return workInProgress2.child; } @@ -16264,44 +16260,44 @@ var require_react_dom_development = __commonJS({ var lazyComponent = elementType; var payload = lazyComponent._payload; var init2 = lazyComponent._init; - var Component = init2(payload); - workInProgress2.type = Component; - var resolvedTag = workInProgress2.tag = resolveLazyComponentTag(Component); - var resolvedProps = resolveDefaultProps(Component, props); + var Component2 = init2(payload); + workInProgress2.type = Component2; + var resolvedTag = workInProgress2.tag = resolveLazyComponentTag(Component2); + var resolvedProps = resolveDefaultProps(Component2, props); var child; switch (resolvedTag) { case FunctionComponent: { { - validateFunctionComponentInDev(workInProgress2, Component); - workInProgress2.type = Component = resolveFunctionForHotReloading(Component); + validateFunctionComponentInDev(workInProgress2, Component2); + workInProgress2.type = Component2 = resolveFunctionForHotReloading(Component2); } - child = updateFunctionComponent(null, workInProgress2, Component, resolvedProps, renderLanes2); + child = updateFunctionComponent(null, workInProgress2, Component2, resolvedProps, renderLanes2); return child; } case ClassComponent: { { - workInProgress2.type = Component = resolveClassForHotReloading(Component); + workInProgress2.type = Component2 = resolveClassForHotReloading(Component2); } - child = updateClassComponent(null, workInProgress2, Component, resolvedProps, renderLanes2); + child = updateClassComponent(null, workInProgress2, Component2, resolvedProps, renderLanes2); return child; } case ForwardRef: { { - workInProgress2.type = Component = resolveForwardRefForHotReloading(Component); + workInProgress2.type = Component2 = resolveForwardRefForHotReloading(Component2); } - child = updateForwardRef(null, workInProgress2, Component, resolvedProps, renderLanes2); + child = updateForwardRef(null, workInProgress2, Component2, resolvedProps, renderLanes2); return child; } case MemoComponent: { { if (workInProgress2.type !== workInProgress2.elementType) { - var outerPropTypes = Component.propTypes; + var outerPropTypes = Component2.propTypes; if (outerPropTypes) { checkPropTypes( outerPropTypes, resolvedProps, "prop", - getComponentNameFromType(Component) + getComponentNameFromType(Component2) ); } } @@ -16309,8 +16305,8 @@ var require_react_dom_development = __commonJS({ child = updateMemoComponent( null, workInProgress2, - Component, - resolveDefaultProps(Component.type, resolvedProps), + Component2, + resolveDefaultProps(Component2.type, resolvedProps), renderLanes2 ); return child; @@ -16318,33 +16314,33 @@ var require_react_dom_development = __commonJS({ } var hint = ""; { - if (Component !== null && typeof Component === "object" && Component.$$typeof === REACT_LAZY_TYPE) { + if (Component2 !== null && typeof Component2 === "object" && Component2.$$typeof === REACT_LAZY_TYPE) { hint = " Did you wrap a component in React.lazy() more than once?"; } } - throw new Error("Element type is invalid. Received a promise that resolves to: " + Component + ". " + ("Lazy element type must resolve to a class or function." + hint)); + throw new Error("Element type is invalid. Received a promise that resolves to: " + Component2 + ". " + ("Lazy element type must resolve to a class or function." + hint)); } - function mountIncompleteClassComponent(_current, workInProgress2, Component, nextProps, renderLanes2) { + function mountIncompleteClassComponent(_current, workInProgress2, Component2, nextProps, renderLanes2) { resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress2); workInProgress2.tag = ClassComponent; var hasContext; - if (isContextProvider(Component)) { + if (isContextProvider(Component2)) { hasContext = true; pushContextProvider(workInProgress2); } else { hasContext = false; } prepareToReadContext(workInProgress2, renderLanes2); - constructClassInstance(workInProgress2, Component, nextProps); - mountClassInstance(workInProgress2, Component, nextProps, renderLanes2); - return finishClassComponent(null, workInProgress2, Component, true, hasContext, renderLanes2); + constructClassInstance(workInProgress2, Component2, nextProps); + mountClassInstance(workInProgress2, Component2, nextProps, renderLanes2); + return finishClassComponent(null, workInProgress2, Component2, true, hasContext, renderLanes2); } - function mountIndeterminateComponent(_current, workInProgress2, Component, renderLanes2) { + function mountIndeterminateComponent(_current, workInProgress2, Component2, renderLanes2) { resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress2); var props = workInProgress2.pendingProps; var context; { - var unmaskedContext = getUnmaskedContext(workInProgress2, Component, false); + var unmaskedContext = getUnmaskedContext(workInProgress2, Component2, false); context = getMaskedContext(workInProgress2, unmaskedContext); } prepareToReadContext(workInProgress2, renderLanes2); @@ -16354,8 +16350,8 @@ var require_react_dom_development = __commonJS({ markComponentRenderStarted(workInProgress2); } { - if (Component.prototype && typeof Component.prototype.render === "function") { - var componentName = getComponentNameFromType(Component) || "Unknown"; + if (Component2.prototype && typeof Component2.prototype.render === "function") { + var componentName = getComponentNameFromType(Component2) || "Unknown"; if (!didWarnAboutBadClass[componentName]) { error("The <%s /> component appears to have a render method, but doesn't extend React.Component. This is likely to cause errors. Change %s to extend React.Component instead.", componentName, componentName); didWarnAboutBadClass[componentName] = true; @@ -16366,7 +16362,7 @@ var require_react_dom_development = __commonJS({ } setIsRendering(true); ReactCurrentOwner$1.current = workInProgress2; - value = renderWithHooks(null, workInProgress2, Component, props, context, renderLanes2); + value = renderWithHooks(null, workInProgress2, Component2, props, context, renderLanes2); hasId = checkDidRenderIdHook(); setIsRendering(false); } @@ -16376,7 +16372,7 @@ var require_react_dom_development = __commonJS({ workInProgress2.flags |= PerformedWork; { if (typeof value === "object" && value !== null && typeof value.render === "function" && value.$$typeof === void 0) { - var _componentName = getComponentNameFromType(Component) || "Unknown"; + var _componentName = getComponentNameFromType(Component2) || "Unknown"; if (!didWarnAboutModulePatternComponent[_componentName]) { error("The <%s /> component appears to be a function component that returns a class instance. Change %s to a class that extends React.Component instead. If you can't use a class try assigning the prototype on the function as a workaround. `%s.prototype = React.Component.prototype`. Don't use an arrow function since it cannot be called with `new` by React.", _componentName, _componentName, _componentName); didWarnAboutModulePatternComponent[_componentName] = true; @@ -16385,7 +16381,7 @@ var require_react_dom_development = __commonJS({ } if (typeof value === "object" && value !== null && typeof value.render === "function" && value.$$typeof === void 0) { { - var _componentName2 = getComponentNameFromType(Component) || "Unknown"; + var _componentName2 = getComponentNameFromType(Component2) || "Unknown"; if (!didWarnAboutModulePatternComponent[_componentName2]) { error("The <%s /> component appears to be a function component that returns a class instance. Change %s to a class that extends React.Component instead. If you can't use a class try assigning the prototype on the function as a workaround. `%s.prototype = React.Component.prototype`. Don't use an arrow function since it cannot be called with `new` by React.", _componentName2, _componentName2, _componentName2); didWarnAboutModulePatternComponent[_componentName2] = true; @@ -16395,7 +16391,7 @@ var require_react_dom_development = __commonJS({ workInProgress2.memoizedState = null; workInProgress2.updateQueue = null; var hasContext = false; - if (isContextProvider(Component)) { + if (isContextProvider(Component2)) { hasContext = true; pushContextProvider(workInProgress2); } else { @@ -16404,15 +16400,15 @@ var require_react_dom_development = __commonJS({ workInProgress2.memoizedState = value.state !== null && value.state !== void 0 ? value.state : null; initializeUpdateQueue(workInProgress2); adoptClassInstance(workInProgress2, value); - mountClassInstance(workInProgress2, Component, props, renderLanes2); - return finishClassComponent(null, workInProgress2, Component, true, hasContext, renderLanes2); + mountClassInstance(workInProgress2, Component2, props, renderLanes2); + return finishClassComponent(null, workInProgress2, Component2, true, hasContext, renderLanes2); } else { workInProgress2.tag = FunctionComponent; { if (workInProgress2.mode & StrictLegacyMode) { setIsStrictModeForDevtools(true); try { - value = renderWithHooks(null, workInProgress2, Component, props, context, renderLanes2); + value = renderWithHooks(null, workInProgress2, Component2, props, context, renderLanes2); hasId = checkDidRenderIdHook(); } finally { setIsStrictModeForDevtools(false); @@ -16424,16 +16420,16 @@ var require_react_dom_development = __commonJS({ } reconcileChildren(null, workInProgress2, value, renderLanes2); { - validateFunctionComponentInDev(workInProgress2, Component); + validateFunctionComponentInDev(workInProgress2, Component2); } return workInProgress2.child; } } - function validateFunctionComponentInDev(workInProgress2, Component) { + function validateFunctionComponentInDev(workInProgress2, Component2) { { - if (Component) { - if (Component.childContextTypes) { - error("%s(...): childContextTypes cannot be defined on a function component.", Component.displayName || Component.name || "Component"); + if (Component2) { + if (Component2.childContextTypes) { + error("%s(...): childContextTypes cannot be defined on a function component.", Component2.displayName || Component2.name || "Component"); } } if (workInProgress2.ref !== null) { @@ -16452,15 +16448,15 @@ var require_react_dom_development = __commonJS({ error("Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?%s", info); } } - if (typeof Component.getDerivedStateFromProps === "function") { - var _componentName3 = getComponentNameFromType(Component) || "Unknown"; + if (typeof Component2.getDerivedStateFromProps === "function") { + var _componentName3 = getComponentNameFromType(Component2) || "Unknown"; if (!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3]) { error("%s: Function components do not support getDerivedStateFromProps.", _componentName3); didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3] = true; } } - if (typeof Component.contextType === "object" && Component.contextType !== null) { - var _componentName4 = getComponentNameFromType(Component) || "Unknown"; + if (typeof Component2.contextType === "object" && Component2.contextType !== null) { + var _componentName4 = getComponentNameFromType(Component2) || "Unknown"; if (!didWarnAboutContextTypeOnFunctionComponent[_componentName4]) { error("%s: Function components do not support contextType.", _componentName4); didWarnAboutContextTypeOnFunctionComponent[_componentName4] = true; @@ -17094,9 +17090,9 @@ var require_react_dom_development = __commonJS({ } } var newProps = workInProgress2.pendingProps; - var render2 = newProps.children; + var render3 = newProps.children; { - if (typeof render2 !== "function") { + if (typeof render3 !== "function") { error("A context consumer was rendered with multiple children, or a child that isn't a function. A context consumer expects a single child that is a function. If you did pass a function, make sure there is no trailing or leading whitespace around it."); } } @@ -17109,7 +17105,7 @@ var require_react_dom_development = __commonJS({ { ReactCurrentOwner$1.current = workInProgress2; setIsRendering(true); - newChildren = render2(newValue); + newChildren = render3(newValue); setIsRendering(false); } { @@ -17203,8 +17199,8 @@ var require_react_dom_development = __commonJS({ pushHostContext(workInProgress2); break; case ClassComponent: { - var Component = workInProgress2.type; - if (isContextProvider(Component)) { + var Component2 = workInProgress2.type; + if (isContextProvider(Component2)) { pushContextProvider(workInProgress2); } break; @@ -17328,10 +17324,10 @@ var require_react_dom_development = __commonJS({ return mountLazyComponent(current2, workInProgress2, elementType, renderLanes2); } case FunctionComponent: { - var Component = workInProgress2.type; + var Component2 = workInProgress2.type; var unresolvedProps = workInProgress2.pendingProps; - var resolvedProps = workInProgress2.elementType === Component ? unresolvedProps : resolveDefaultProps(Component, unresolvedProps); - return updateFunctionComponent(current2, workInProgress2, Component, resolvedProps, renderLanes2); + var resolvedProps = workInProgress2.elementType === Component2 ? unresolvedProps : resolveDefaultProps(Component2, unresolvedProps); + return updateFunctionComponent(current2, workInProgress2, Component2, resolvedProps, renderLanes2); } case ClassComponent: { var _Component = workInProgress2.type; @@ -17355,7 +17351,7 @@ var require_react_dom_development = __commonJS({ var _resolvedProps2 = workInProgress2.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2); return updateForwardRef(current2, workInProgress2, type, _resolvedProps2, renderLanes2); } - case Fragment2: + case Fragment22: return updateFragment(current2, workInProgress2, renderLanes2); case Mode: return updateMode(current2, workInProgress2, renderLanes2); @@ -17627,7 +17623,7 @@ var require_react_dom_development = __commonJS({ case SimpleMemoComponent: case FunctionComponent: case ForwardRef: - case Fragment2: + case Fragment22: case Mode: case Profiler: case ContextConsumer: @@ -17635,8 +17631,8 @@ var require_react_dom_development = __commonJS({ bubbleProperties(workInProgress2); return null; case ClassComponent: { - var Component = workInProgress2.type; - if (isContextProvider(Component)) { + var Component2 = workInProgress2.type; + if (isContextProvider(Component2)) { popContext(workInProgress2); } bubbleProperties(workInProgress2); @@ -17944,8 +17940,8 @@ var require_react_dom_development = __commonJS({ popTreeContext(workInProgress2); switch (workInProgress2.tag) { case ClassComponent: { - var Component = workInProgress2.type; - if (isContextProvider(Component)) { + var Component2 = workInProgress2.type; + if (isContextProvider(Component2)) { popContext(workInProgress2); } var flags = workInProgress2.flags; @@ -18836,7 +18832,7 @@ var require_react_dom_development = __commonJS({ if (before) { insertBefore(parent, stateNode, before); } else { - appendChild(parent, stateNode); + appendChild2(parent, stateNode); } } else if (tag === HostPortal) ; @@ -21597,18 +21593,18 @@ var require_react_dom_development = __commonJS({ var createFiber = function(tag, pendingProps, key, mode) { return new FiberNode(tag, pendingProps, key, mode); }; - function shouldConstruct$1(Component) { - var prototype = Component.prototype; + function shouldConstruct$1(Component2) { + var prototype = Component2.prototype; return !!(prototype && prototype.isReactComponent); } function isSimpleFunctionComponent(type) { return typeof type === "function" && !shouldConstruct$1(type) && type.defaultProps === void 0; } - function resolveLazyComponentTag(Component) { - if (typeof Component === "function") { - return shouldConstruct$1(Component) ? ClassComponent : FunctionComponent; - } else if (Component !== void 0 && Component !== null) { - var $$typeof = Component.$$typeof; + function resolveLazyComponentTag(Component2) { + if (typeof Component2 === "function") { + return shouldConstruct$1(Component2) ? ClassComponent : FunctionComponent; + } else if (Component2 !== void 0 && Component2 !== null) { + var $$typeof = Component2.$$typeof; if ($$typeof === REACT_FORWARD_REF_TYPE) { return ForwardRef; } @@ -21841,7 +21837,7 @@ var require_react_dom_development = __commonJS({ return fiber; } function createFiberFromFragment(elements, mode, lanes, key) { - var fiber = createFiber(Fragment2, elements, key, mode); + var fiber = createFiber(Fragment22, elements, key, mode); fiber.lanes = lanes; return fiber; } @@ -22042,9 +22038,9 @@ var require_react_dom_development = __commonJS({ var fiber = get(parentComponent); var parentContext = findCurrentUnmaskedContext(fiber); if (fiber.tag === ClassComponent) { - var Component = fiber.type; - if (isContextProvider(Component)) { - return processChildContext(fiber, Component, parentContext); + var Component2 = fiber.type; + if (isContextProvider(Component2)) { + return processChildContext(fiber, Component2, parentContext); } } return parentContext; @@ -22497,7 +22493,7 @@ var require_react_dom_development = __commonJS({ unmarkContainerAsRoot(container); } }; - function createRoot4(container, options2) { + function createRoot5(container, options2) { if (!isValidContainer(container)) { throw new Error("createRoot(...): Target container is not a DOM element."); } @@ -22760,7 +22756,7 @@ var require_react_dom_development = __commonJS({ } return legacyRenderSubtreeIntoContainer(null, element, container, true, callback); } - function render(element, container, callback) { + function render2(element, container, callback) { { error("ReactDOM.render is no longer supported in React 18. Use createRoot instead. Until you switch to the new API, your app will behave as if it's running React 17. Learn more: https://reactjs.org/link/switch-to-createroot"); } @@ -22856,7 +22852,7 @@ var require_react_dom_development = __commonJS({ error('You are importing createRoot from "react-dom" which is not supported. You should instead import it from "react-dom/client".'); } } - return createRoot4(container, options2); + return createRoot5(container, options2); } function hydrateRoot$1(container, initialChildren, options2) { { @@ -22897,7 +22893,7 @@ var require_react_dom_development = __commonJS({ exports.flushSync = flushSync$1; exports.hydrate = hydrate; exports.hydrateRoot = hydrateRoot$1; - exports.render = render; + exports.render = render2; exports.unmountComponentAtNode = unmountComponentAtNode; exports.unstable_batchedUpdates = batchedUpdates$1; exports.unstable_renderSubtreeIntoContainer = renderSubtreeIntoContainer; @@ -22954,11079 +22950,6 @@ var require_client = __commonJS({ } }); -// node_modules/react/cjs/react-jsx-runtime.development.js -var require_react_jsx_runtime_development = __commonJS({ - "node_modules/react/cjs/react-jsx-runtime.development.js"(exports) { - "use strict"; - if (true) { - (function() { - "use strict"; - var React49 = require_react(); - var REACT_ELEMENT_TYPE = Symbol.for("react.element"); - var REACT_PORTAL_TYPE = Symbol.for("react.portal"); - var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"); - var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"); - var REACT_PROFILER_TYPE = Symbol.for("react.profiler"); - var REACT_PROVIDER_TYPE = Symbol.for("react.provider"); - var REACT_CONTEXT_TYPE = Symbol.for("react.context"); - var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"); - var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"); - var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"); - var REACT_MEMO_TYPE = Symbol.for("react.memo"); - var REACT_LAZY_TYPE = Symbol.for("react.lazy"); - var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen"); - var MAYBE_ITERATOR_SYMBOL = Symbol.iterator; - var FAUX_ITERATOR_SYMBOL = "@@iterator"; - function getIteratorFn(maybeIterable) { - if (maybeIterable === null || typeof maybeIterable !== "object") { - return null; - } - var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; - if (typeof maybeIterator === "function") { - return maybeIterator; - } - return null; - } - var ReactSharedInternals = React49.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; - function error(format) { - { - { - for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - args[_key2 - 1] = arguments[_key2]; - } - printWarning("error", format, args); - } - } - } - function printWarning(level, format, args) { - { - var ReactDebugCurrentFrame2 = ReactSharedInternals.ReactDebugCurrentFrame; - var stack = ReactDebugCurrentFrame2.getStackAddendum(); - if (stack !== "") { - format += "%s"; - args = args.concat([stack]); - } - var argsWithFormat = args.map(function(item) { - return String(item); - }); - argsWithFormat.unshift("Warning: " + format); - Function.prototype.apply.call(console[level], console, argsWithFormat); - } - } - var enableScopeAPI = false; - var enableCacheElement = false; - var enableTransitionTracing = false; - var enableLegacyHidden = false; - var enableDebugTracing = false; - var REACT_MODULE_REFERENCE; - { - REACT_MODULE_REFERENCE = Symbol.for("react.module.reference"); - } - function isValidElementType2(type) { - if (typeof type === "string" || typeof type === "function") { - return true; - } - if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) { - return true; - } - if (typeof type === "object" && type !== null) { - if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) { - return true; - } - } - return false; - } - function getWrappedName(outerType, innerType, wrapperName) { - var displayName = outerType.displayName; - if (displayName) { - return displayName; - } - var functionName = innerType.displayName || innerType.name || ""; - return functionName !== "" ? wrapperName + "(" + functionName + ")" : wrapperName; - } - function getContextName(type) { - return type.displayName || "Context"; - } - function getComponentNameFromType(type) { - if (type == null) { - return null; - } - { - if (typeof type.tag === "number") { - error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."); - } - } - if (typeof type === "function") { - return type.displayName || type.name || null; - } - if (typeof type === "string") { - return type; - } - switch (type) { - case REACT_FRAGMENT_TYPE: - return "Fragment"; - case REACT_PORTAL_TYPE: - return "Portal"; - case REACT_PROFILER_TYPE: - return "Profiler"; - case REACT_STRICT_MODE_TYPE: - return "StrictMode"; - case REACT_SUSPENSE_TYPE: - return "Suspense"; - case REACT_SUSPENSE_LIST_TYPE: - return "SuspenseList"; - } - if (typeof type === "object") { - switch (type.$$typeof) { - case REACT_CONTEXT_TYPE: - var context = type; - return getContextName(context) + ".Consumer"; - case REACT_PROVIDER_TYPE: - var provider = type; - return getContextName(provider._context) + ".Provider"; - case REACT_FORWARD_REF_TYPE: - return getWrappedName(type, type.render, "ForwardRef"); - case REACT_MEMO_TYPE: - var outerName = type.displayName || null; - if (outerName !== null) { - return outerName; - } - return getComponentNameFromType(type.type) || "Memo"; - case REACT_LAZY_TYPE: { - var lazyComponent = type; - var payload = lazyComponent._payload; - var init2 = lazyComponent._init; - try { - return getComponentNameFromType(init2(payload)); - } catch (x2) { - return null; - } - } - } - } - return null; - } - var assign = Object.assign; - var disabledDepth = 0; - var prevLog; - var prevInfo; - var prevWarn; - var prevError; - var prevGroup; - var prevGroupCollapsed; - var prevGroupEnd; - function disabledLog() { - } - disabledLog.__reactDisabledLog = true; - function disableLogs() { - { - if (disabledDepth === 0) { - prevLog = console.log; - prevInfo = console.info; - prevWarn = console.warn; - prevError = console.error; - prevGroup = console.group; - prevGroupCollapsed = console.groupCollapsed; - prevGroupEnd = console.groupEnd; - var props = { - configurable: true, - enumerable: true, - value: disabledLog, - writable: true - }; - Object.defineProperties(console, { - info: props, - log: props, - warn: props, - error: props, - group: props, - groupCollapsed: props, - groupEnd: props - }); - } - disabledDepth++; - } - } - function reenableLogs() { - { - disabledDepth--; - if (disabledDepth === 0) { - var props = { - configurable: true, - enumerable: true, - writable: true - }; - Object.defineProperties(console, { - log: assign({}, props, { - value: prevLog - }), - info: assign({}, props, { - value: prevInfo - }), - warn: assign({}, props, { - value: prevWarn - }), - error: assign({}, props, { - value: prevError - }), - group: assign({}, props, { - value: prevGroup - }), - groupCollapsed: assign({}, props, { - value: prevGroupCollapsed - }), - groupEnd: assign({}, props, { - value: prevGroupEnd - }) - }); - } - if (disabledDepth < 0) { - error("disabledDepth fell below zero. This is a bug in React. Please file an issue."); - } - } - } - var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher; - var prefix2; - function describeBuiltInComponentFrame(name, source, ownerFn) { - { - if (prefix2 === void 0) { - try { - throw Error(); - } catch (x2) { - var match = x2.stack.trim().match(/\n( *(at )?)/); - prefix2 = match && match[1] || ""; - } - } - return "\n" + prefix2 + name; - } - } - var reentry = false; - var componentFrameCache; - { - var PossiblyWeakMap = typeof WeakMap === "function" ? WeakMap : Map; - componentFrameCache = new PossiblyWeakMap(); - } - function describeNativeComponentFrame(fn2, construct) { - if (!fn2 || reentry) { - return ""; - } - { - var frame = componentFrameCache.get(fn2); - if (frame !== void 0) { - return frame; - } - } - var control; - reentry = true; - var previousPrepareStackTrace = Error.prepareStackTrace; - Error.prepareStackTrace = void 0; - var previousDispatcher; - { - previousDispatcher = ReactCurrentDispatcher.current; - ReactCurrentDispatcher.current = null; - disableLogs(); - } - try { - if (construct) { - var Fake = function() { - throw Error(); - }; - Object.defineProperty(Fake.prototype, "props", { - set: function() { - throw Error(); - } - }); - if (typeof Reflect === "object" && Reflect.construct) { - try { - Reflect.construct(Fake, []); - } catch (x2) { - control = x2; - } - Reflect.construct(fn2, [], Fake); - } else { - try { - Fake.call(); - } catch (x2) { - control = x2; - } - fn2.call(Fake.prototype); - } - } else { - try { - throw Error(); - } catch (x2) { - control = x2; - } - fn2(); - } - } catch (sample) { - if (sample && control && typeof sample.stack === "string") { - var sampleLines = sample.stack.split("\n"); - var controlLines = control.stack.split("\n"); - var s2 = sampleLines.length - 1; - var c2 = controlLines.length - 1; - while (s2 >= 1 && c2 >= 0 && sampleLines[s2] !== controlLines[c2]) { - c2--; - } - for (; s2 >= 1 && c2 >= 0; s2--, c2--) { - if (sampleLines[s2] !== controlLines[c2]) { - if (s2 !== 1 || c2 !== 1) { - do { - s2--; - c2--; - if (c2 < 0 || sampleLines[s2] !== controlLines[c2]) { - var _frame = "\n" + sampleLines[s2].replace(" at new ", " at "); - if (fn2.displayName && _frame.includes("")) { - _frame = _frame.replace("", fn2.displayName); - } - { - if (typeof fn2 === "function") { - componentFrameCache.set(fn2, _frame); - } - } - return _frame; - } - } while (s2 >= 1 && c2 >= 0); - } - break; - } - } - } - } finally { - reentry = false; - { - ReactCurrentDispatcher.current = previousDispatcher; - reenableLogs(); - } - Error.prepareStackTrace = previousPrepareStackTrace; - } - var name = fn2 ? fn2.displayName || fn2.name : ""; - var syntheticFrame = name ? describeBuiltInComponentFrame(name) : ""; - { - if (typeof fn2 === "function") { - componentFrameCache.set(fn2, syntheticFrame); - } - } - return syntheticFrame; - } - function describeFunctionComponentFrame(fn2, source, ownerFn) { - { - return describeNativeComponentFrame(fn2, false); - } - } - function shouldConstruct(Component) { - var prototype = Component.prototype; - return !!(prototype && prototype.isReactComponent); - } - function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) { - if (type == null) { - return ""; - } - if (typeof type === "function") { - { - return describeNativeComponentFrame(type, shouldConstruct(type)); - } - } - if (typeof type === "string") { - return describeBuiltInComponentFrame(type); - } - switch (type) { - case REACT_SUSPENSE_TYPE: - return describeBuiltInComponentFrame("Suspense"); - case REACT_SUSPENSE_LIST_TYPE: - return describeBuiltInComponentFrame("SuspenseList"); - } - if (typeof type === "object") { - switch (type.$$typeof) { - case REACT_FORWARD_REF_TYPE: - return describeFunctionComponentFrame(type.render); - case REACT_MEMO_TYPE: - return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn); - case REACT_LAZY_TYPE: { - var lazyComponent = type; - var payload = lazyComponent._payload; - var init2 = lazyComponent._init; - try { - return describeUnknownElementTypeFrameInDEV(init2(payload), source, ownerFn); - } catch (x2) { - } - } - } - } - return ""; - } - var hasOwnProperty = Object.prototype.hasOwnProperty; - var loggedTypeFailures = {}; - var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; - function setCurrentlyValidatingElement(element) { - { - if (element) { - var owner = element._owner; - var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); - ReactDebugCurrentFrame.setExtraStackFrame(stack); - } else { - ReactDebugCurrentFrame.setExtraStackFrame(null); - } - } - } - function checkPropTypes(typeSpecs, values, location, componentName, element) { - { - var has = Function.call.bind(hasOwnProperty); - for (var typeSpecName in typeSpecs) { - if (has(typeSpecs, typeSpecName)) { - var error$1 = void 0; - try { - if (typeof typeSpecs[typeSpecName] !== "function") { - var err = Error((componentName || "React class") + ": " + location + " type `" + typeSpecName + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof typeSpecs[typeSpecName] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`."); - err.name = "Invariant Violation"; - throw err; - } - error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"); - } catch (ex) { - error$1 = ex; - } - if (error$1 && !(error$1 instanceof Error)) { - setCurrentlyValidatingElement(element); - error("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", componentName || "React class", location, typeSpecName, typeof error$1); - setCurrentlyValidatingElement(null); - } - if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) { - loggedTypeFailures[error$1.message] = true; - setCurrentlyValidatingElement(element); - error("Failed %s type: %s", location, error$1.message); - setCurrentlyValidatingElement(null); - } - } - } - } - } - var isArrayImpl = Array.isArray; - function isArray(a2) { - return isArrayImpl(a2); - } - function typeName(value) { - { - var hasToStringTag = typeof Symbol === "function" && Symbol.toStringTag; - var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object"; - return type; - } - } - function willCoercionThrow(value) { - { - try { - testStringCoercion(value); - return false; - } catch (e) { - return true; - } - } - } - function testStringCoercion(value) { - return "" + value; - } - function checkKeyStringCoercion(value) { - { - if (willCoercionThrow(value)) { - error("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", typeName(value)); - return testStringCoercion(value); - } - } - } - var ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner; - var RESERVED_PROPS = { - key: true, - ref: true, - __self: true, - __source: true - }; - var specialPropKeyWarningShown; - var specialPropRefWarningShown; - var didWarnAboutStringRefs; - { - didWarnAboutStringRefs = {}; - } - function hasValidRef(config) { - { - if (hasOwnProperty.call(config, "ref")) { - var getter = Object.getOwnPropertyDescriptor(config, "ref").get; - if (getter && getter.isReactWarning) { - return false; - } - } - } - return config.ref !== void 0; - } - function hasValidKey(config) { - { - if (hasOwnProperty.call(config, "key")) { - var getter = Object.getOwnPropertyDescriptor(config, "key").get; - if (getter && getter.isReactWarning) { - return false; - } - } - } - return config.key !== void 0; - } - function warnIfStringRefCannotBeAutoConverted(config, self2) { - { - if (typeof config.ref === "string" && ReactCurrentOwner.current && self2 && ReactCurrentOwner.current.stateNode !== self2) { - var componentName = getComponentNameFromType(ReactCurrentOwner.current.type); - if (!didWarnAboutStringRefs[componentName]) { - error('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref); - didWarnAboutStringRefs[componentName] = true; - } - } - } - } - function defineKeyPropWarningGetter(props, displayName) { - { - var warnAboutAccessingKey = function() { - if (!specialPropKeyWarningShown) { - specialPropKeyWarningShown = true; - error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", displayName); - } - }; - warnAboutAccessingKey.isReactWarning = true; - Object.defineProperty(props, "key", { - get: warnAboutAccessingKey, - configurable: true - }); - } - } - function defineRefPropWarningGetter(props, displayName) { - { - var warnAboutAccessingRef = function() { - if (!specialPropRefWarningShown) { - specialPropRefWarningShown = true; - error("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", displayName); - } - }; - warnAboutAccessingRef.isReactWarning = true; - Object.defineProperty(props, "ref", { - get: warnAboutAccessingRef, - configurable: true - }); - } - } - var ReactElement = function(type, key, ref, self2, source, owner, props) { - var element = { - $$typeof: REACT_ELEMENT_TYPE, - type, - key, - ref, - props, - _owner: owner - }; - { - element._store = {}; - Object.defineProperty(element._store, "validated", { - configurable: false, - enumerable: false, - writable: true, - value: false - }); - Object.defineProperty(element, "_self", { - configurable: false, - enumerable: false, - writable: false, - value: self2 - }); - Object.defineProperty(element, "_source", { - configurable: false, - enumerable: false, - writable: false, - value: source - }); - if (Object.freeze) { - Object.freeze(element.props); - Object.freeze(element); - } - } - return element; - }; - function jsxDEV(type, config, maybeKey, source, self2) { - { - var propName; - var props = {}; - var key = null; - var ref = null; - if (maybeKey !== void 0) { - { - checkKeyStringCoercion(maybeKey); - } - key = "" + maybeKey; - } - if (hasValidKey(config)) { - { - checkKeyStringCoercion(config.key); - } - key = "" + config.key; - } - if (hasValidRef(config)) { - ref = config.ref; - warnIfStringRefCannotBeAutoConverted(config, self2); - } - for (propName in config) { - if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { - props[propName] = config[propName]; - } - } - if (type && type.defaultProps) { - var defaultProps = type.defaultProps; - for (propName in defaultProps) { - if (props[propName] === void 0) { - props[propName] = defaultProps[propName]; - } - } - } - if (key || ref) { - var displayName = typeof type === "function" ? type.displayName || type.name || "Unknown" : type; - if (key) { - defineKeyPropWarningGetter(props, displayName); - } - if (ref) { - defineRefPropWarningGetter(props, displayName); - } - } - return ReactElement(type, key, ref, self2, source, ReactCurrentOwner.current, props); - } - } - var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner; - var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame; - function setCurrentlyValidatingElement$1(element) { - { - if (element) { - var owner = element._owner; - var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); - ReactDebugCurrentFrame$1.setExtraStackFrame(stack); - } else { - ReactDebugCurrentFrame$1.setExtraStackFrame(null); - } - } - } - var propTypesMisspellWarningShown; - { - propTypesMisspellWarningShown = false; - } - function isValidElement(object) { - { - return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; - } - } - function getDeclarationErrorAddendum() { - { - if (ReactCurrentOwner$1.current) { - var name = getComponentNameFromType(ReactCurrentOwner$1.current.type); - if (name) { - return "\n\nCheck the render method of `" + name + "`."; - } - } - return ""; - } - } - function getSourceInfoErrorAddendum(source) { - { - if (source !== void 0) { - var fileName = source.fileName.replace(/^.*[\\\/]/, ""); - var lineNumber = source.lineNumber; - return "\n\nCheck your code at " + fileName + ":" + lineNumber + "."; - } - return ""; - } - } - var ownerHasKeyUseWarning = {}; - function getCurrentComponentErrorInfo(parentType) { - { - var info = getDeclarationErrorAddendum(); - if (!info) { - var parentName = typeof parentType === "string" ? parentType : parentType.displayName || parentType.name; - if (parentName) { - info = "\n\nCheck the top-level render call using <" + parentName + ">."; - } - } - return info; - } - } - function validateExplicitKey(element, parentType) { - { - if (!element._store || element._store.validated || element.key != null) { - return; - } - element._store.validated = true; - var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); - if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { - return; - } - ownerHasKeyUseWarning[currentComponentErrorInfo] = true; - var childOwner = ""; - if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) { - childOwner = " It was passed a child from " + getComponentNameFromType(element._owner.type) + "."; - } - setCurrentlyValidatingElement$1(element); - error('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner); - setCurrentlyValidatingElement$1(null); - } - } - function validateChildKeys(node, parentType) { - { - if (typeof node !== "object") { - return; - } - if (isArray(node)) { - for (var i2 = 0; i2 < node.length; i2++) { - var child = node[i2]; - if (isValidElement(child)) { - validateExplicitKey(child, parentType); - } - } - } else if (isValidElement(node)) { - if (node._store) { - node._store.validated = true; - } - } else if (node) { - var iteratorFn = getIteratorFn(node); - if (typeof iteratorFn === "function") { - if (iteratorFn !== node.entries) { - var iterator = iteratorFn.call(node); - var step; - while (!(step = iterator.next()).done) { - if (isValidElement(step.value)) { - validateExplicitKey(step.value, parentType); - } - } - } - } - } - } - } - function validatePropTypes(element) { - { - var type = element.type; - if (type === null || type === void 0 || typeof type === "string") { - return; - } - var propTypes; - if (typeof type === "function") { - propTypes = type.propTypes; - } else if (typeof type === "object" && (type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MEMO_TYPE)) { - propTypes = type.propTypes; - } else { - return; - } - if (propTypes) { - var name = getComponentNameFromType(type); - checkPropTypes(propTypes, element.props, "prop", name, element); - } else if (type.PropTypes !== void 0 && !propTypesMisspellWarningShown) { - propTypesMisspellWarningShown = true; - var _name = getComponentNameFromType(type); - error("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", _name || "Unknown"); - } - if (typeof type.getDefaultProps === "function" && !type.getDefaultProps.isReactClassApproved) { - error("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead."); - } - } - } - function validateFragmentProps(fragment) { - { - var keys = Object.keys(fragment.props); - for (var i2 = 0; i2 < keys.length; i2++) { - var key = keys[i2]; - if (key !== "children" && key !== "key") { - setCurrentlyValidatingElement$1(fragment); - error("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", key); - setCurrentlyValidatingElement$1(null); - break; - } - } - if (fragment.ref !== null) { - setCurrentlyValidatingElement$1(fragment); - error("Invalid attribute `ref` supplied to `React.Fragment`."); - setCurrentlyValidatingElement$1(null); - } - } - } - function jsxWithValidation(type, props, key, isStaticChildren, source, self2) { - { - var validType = isValidElementType2(type); - if (!validType) { - var info = ""; - if (type === void 0 || typeof type === "object" && type !== null && Object.keys(type).length === 0) { - info += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports."; - } - var sourceInfo = getSourceInfoErrorAddendum(source); - if (sourceInfo) { - info += sourceInfo; - } else { - info += getDeclarationErrorAddendum(); - } - var typeString; - if (type === null) { - typeString = "null"; - } else if (isArray(type)) { - typeString = "array"; - } else if (type !== void 0 && type.$$typeof === REACT_ELEMENT_TYPE) { - typeString = "<" + (getComponentNameFromType(type.type) || "Unknown") + " />"; - info = " Did you accidentally export a JSX literal instead of a component?"; - } else { - typeString = typeof type; - } - error("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", typeString, info); - } - var element = jsxDEV(type, props, key, source, self2); - if (element == null) { - return element; - } - if (validType) { - var children = props.children; - if (children !== void 0) { - if (isStaticChildren) { - if (isArray(children)) { - for (var i2 = 0; i2 < children.length; i2++) { - validateChildKeys(children[i2], type); - } - if (Object.freeze) { - Object.freeze(children); - } - } else { - error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."); - } - } else { - validateChildKeys(children, type); - } - } - } - if (type === REACT_FRAGMENT_TYPE) { - validateFragmentProps(element); - } else { - validatePropTypes(element); - } - return element; - } - } - function jsxWithValidationStatic(type, props, key) { - { - return jsxWithValidation(type, props, key, true); - } - } - function jsxWithValidationDynamic(type, props, key) { - { - return jsxWithValidation(type, props, key, false); - } - } - var jsx3 = jsxWithValidationDynamic; - var jsxs2 = jsxWithValidationStatic; - exports.Fragment = REACT_FRAGMENT_TYPE; - exports.jsx = jsx3; - exports.jsxs = jsxs2; - })(); - } - } -}); - -// node_modules/react/jsx-runtime.js -var require_jsx_runtime = __commonJS({ - "node_modules/react/jsx-runtime.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_react_jsx_runtime_development(); - } - } -}); - -// node_modules/@emotion/sheet/dist/emotion-sheet.cjs.dev.js -var require_emotion_sheet_cjs_dev = __commonJS({ - "node_modules/@emotion/sheet/dist/emotion-sheet.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - function sheetForTag(tag) { - if (tag.sheet) { - return tag.sheet; - } - for (var i2 = 0; i2 < document.styleSheets.length; i2++) { - if (document.styleSheets[i2].ownerNode === tag) { - return document.styleSheets[i2]; - } - } - } - function createStyleElement(options) { - var tag = document.createElement("style"); - tag.setAttribute("data-emotion", options.key); - if (options.nonce !== void 0) { - tag.setAttribute("nonce", options.nonce); - } - tag.appendChild(document.createTextNode("")); - tag.setAttribute("data-s", ""); - return tag; - } - var StyleSheet = /* @__PURE__ */ function() { - function StyleSheet2(options) { - var _this = this; - this._insertTag = function(tag) { - var before; - if (_this.tags.length === 0) { - if (_this.insertionPoint) { - before = _this.insertionPoint.nextSibling; - } else if (_this.prepend) { - before = _this.container.firstChild; - } else { - before = _this.before; - } - } else { - before = _this.tags[_this.tags.length - 1].nextSibling; - } - _this.container.insertBefore(tag, before); - _this.tags.push(tag); - }; - this.isSpeedy = options.speedy === void 0 ? false : options.speedy; - this.tags = []; - this.ctr = 0; - this.nonce = options.nonce; - this.key = options.key; - this.container = options.container; - this.prepend = options.prepend; - this.insertionPoint = options.insertionPoint; - this.before = null; - } - var _proto = StyleSheet2.prototype; - _proto.hydrate = function hydrate(nodes) { - nodes.forEach(this._insertTag); - }; - _proto.insert = function insert2(rule) { - if (this.ctr % (this.isSpeedy ? 65e3 : 1) === 0) { - this._insertTag(createStyleElement(this)); - } - var tag = this.tags[this.tags.length - 1]; - if (true) { - var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105; - if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) { - console.error("You're attempting to insert the following rule:\n" + rule + "\n\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules."); - } - this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule; - } - if (this.isSpeedy) { - var sheet = sheetForTag(tag); - try { - sheet.insertRule(rule, sheet.cssRules.length); - } catch (e) { - if (!/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) { - console.error('There was a problem inserting the following rule: "' + rule + '"', e); - } - } - } else { - tag.appendChild(document.createTextNode(rule)); - } - this.ctr++; - }; - _proto.flush = function flush() { - this.tags.forEach(function(tag) { - return tag.parentNode && tag.parentNode.removeChild(tag); - }); - this.tags = []; - this.ctr = 0; - if (true) { - this._alreadyInsertedOrderInsensitiveRule = false; - } - }; - return StyleSheet2; - }(); - exports.StyleSheet = StyleSheet; - } -}); - -// node_modules/@emotion/sheet/dist/emotion-sheet.cjs.js -var require_emotion_sheet_cjs = __commonJS({ - "node_modules/@emotion/sheet/dist/emotion-sheet.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_emotion_sheet_cjs_dev(); - } - } -}); - -// node_modules/stylis/dist/umd/stylis.js -var require_stylis = __commonJS({ - "node_modules/stylis/dist/umd/stylis.js"(exports, module2) { - (function(e, r2) { - typeof exports === "object" && typeof module2 !== "undefined" ? r2(exports) : typeof define === "function" && define.amd ? define(["exports"], r2) : (e = e || self, r2(e.stylis = {})); - })(exports, function(e) { - "use strict"; - var r2 = "-ms-"; - var a2 = "-moz-"; - var c2 = "-webkit-"; - var n2 = "comm"; - var t2 = "rule"; - var s2 = "decl"; - var i2 = "@page"; - var u2 = "@media"; - var o2 = "@import"; - var f3 = "@charset"; - var l2 = "@viewport"; - var p2 = "@supports"; - var h2 = "@document"; - var v2 = "@namespace"; - var d2 = "@keyframes"; - var b2 = "@font-face"; - var w2 = "@counter-style"; - var m2 = "@font-feature-values"; - var g2 = "@layer"; - var k2 = Math.abs; - var $ = String.fromCharCode; - var x2 = Object.assign; - function E2(e2, r3) { - return M2(e2, 0) ^ 45 ? (((r3 << 2 ^ M2(e2, 0)) << 2 ^ M2(e2, 1)) << 2 ^ M2(e2, 2)) << 2 ^ M2(e2, 3) : 0; - } - function y2(e2) { - return e2.trim(); - } - function T(e2, r3) { - return (e2 = r3.exec(e2)) ? e2[0] : e2; - } - function A2(e2, r3, a3) { - return e2.replace(r3, a3); - } - function O2(e2, r3) { - return e2.indexOf(r3); - } - function M2(e2, r3) { - return e2.charCodeAt(r3) | 0; - } - function C(e2, r3, a3) { - return e2.slice(r3, a3); - } - function R2(e2) { - return e2.length; - } - function S2(e2) { - return e2.length; - } - function z2(e2, r3) { - return r3.push(e2), e2; - } - function N2(e2, r3) { - return e2.map(r3).join(""); - } - e.line = 1; - e.column = 1; - e.length = 0; - e.position = 0; - e.character = 0; - e.characters = ""; - function P2(r3, a3, c3, n3, t3, s3, i3) { - return { value: r3, root: a3, parent: c3, type: n3, props: t3, children: s3, line: e.line, column: e.column, length: i3, return: "" }; - } - function j2(e2, r3) { - return x2(P2("", null, null, "", null, null, 0), e2, { length: -e2.length }, r3); - } - function U2() { - return e.character; - } - function _3() { - e.character = e.position > 0 ? M2(e.characters, --e.position) : 0; - if (e.column--, e.character === 10) - e.column = 1, e.line--; - return e.character; - } - function F2() { - e.character = e.position < e.length ? M2(e.characters, e.position++) : 0; - if (e.column++, e.character === 10) - e.column = 1, e.line++; - return e.character; - } - function I2() { - return M2(e.characters, e.position); - } - function L2() { - return e.position; - } - function D2(r3, a3) { - return C(e.characters, r3, a3); - } - function Y2(e2) { - switch (e2) { - case 0: - case 9: - case 10: - case 13: - case 32: - return 5; - case 33: - case 43: - case 44: - case 47: - case 62: - case 64: - case 126: - case 59: - case 123: - case 125: - return 4; - case 58: - return 3; - case 34: - case 39: - case 40: - case 91: - return 2; - case 41: - case 93: - return 1; - } - return 0; - } - function K(r3) { - return e.line = e.column = 1, e.length = R2(e.characters = r3), e.position = 0, []; - } - function V(r3) { - return e.characters = "", r3; - } - function W2(r3) { - return y2(D2(e.position - 1, q2(r3 === 91 ? r3 + 2 : r3 === 40 ? r3 + 1 : r3))); - } - function B2(e2) { - return V(H2(K(e2))); - } - function G2(r3) { - while (e.character = I2()) - if (e.character < 33) - F2(); - else - break; - return Y2(r3) > 2 || Y2(e.character) > 3 ? "" : " "; - } - function H2(r3) { - while (F2()) - switch (Y2(e.character)) { - case 0: - z2(Q2(e.position - 1), r3); - break; - case 2: - z2(W2(e.character), r3); - break; - default: - z2($(e.character), r3); - } - return r3; - } - function Z2(r3, a3) { - while (--a3 && F2()) - if (e.character < 48 || e.character > 102 || e.character > 57 && e.character < 65 || e.character > 70 && e.character < 97) - break; - return D2(r3, L2() + (a3 < 6 && I2() == 32 && F2() == 32)); - } - function q2(r3) { - while (F2()) - switch (e.character) { - case r3: - return e.position; - case 34: - case 39: - if (r3 !== 34 && r3 !== 39) - q2(e.character); - break; - case 40: - if (r3 === 41) - q2(r3); - break; - case 92: - F2(); - break; - } - return e.position; - } - function J(r3, a3) { - while (F2()) - if (r3 + e.character === 47 + 10) - break; - else if (r3 + e.character === 42 + 42 && I2() === 47) - break; - return "/*" + D2(a3, e.position - 1) + "*" + $(r3 === 47 ? r3 : F2()); - } - function Q2(r3) { - while (!Y2(I2())) - F2(); - return D2(r3, e.position); - } - function X2(e2) { - return V(ee("", null, null, null, [""], e2 = K(e2), 0, [0], e2)); - } - function ee(e2, r3, a3, c3, n3, t3, s3, i3, u3) { - var o3 = 0; - var f4 = 0; - var l3 = s3; - var p3 = 0; - var h3 = 0; - var v3 = 0; - var d3 = 1; - var b3 = 1; - var w3 = 1; - var m3 = 0; - var g3 = ""; - var k3 = n3; - var x3 = t3; - var E3 = c3; - var y3 = g3; - while (b3) - switch (v3 = m3, m3 = F2()) { - case 40: - if (v3 != 108 && M2(y3, l3 - 1) == 58) { - if (O2(y3 += A2(W2(m3), "&", "&\f"), "&\f") != -1) - w3 = -1; - break; - } - case 34: - case 39: - case 91: - y3 += W2(m3); - break; - case 9: - case 10: - case 13: - case 32: - y3 += G2(v3); - break; - case 92: - y3 += Z2(L2() - 1, 7); - continue; - case 47: - switch (I2()) { - case 42: - case 47: - z2(ae(J(F2(), L2()), r3, a3), u3); - break; - default: - y3 += "/"; - } - break; - case 123 * d3: - i3[o3++] = R2(y3) * w3; - case 125 * d3: - case 59: - case 0: - switch (m3) { - case 0: - case 125: - b3 = 0; - case 59 + f4: - if (w3 == -1) - y3 = A2(y3, /\f/g, ""); - if (h3 > 0 && R2(y3) - l3) - z2(h3 > 32 ? ce(y3 + ";", c3, a3, l3 - 1) : ce(A2(y3, " ", "") + ";", c3, a3, l3 - 2), u3); - break; - case 59: - y3 += ";"; - default: - z2(E3 = re(y3, r3, a3, o3, f4, n3, i3, g3, k3 = [], x3 = [], l3), t3); - if (m3 === 123) - if (f4 === 0) - ee(y3, r3, E3, E3, k3, t3, l3, i3, x3); - else - switch (p3 === 99 && M2(y3, 3) === 110 ? 100 : p3) { - case 100: - case 108: - case 109: - case 115: - ee(e2, E3, E3, c3 && z2(re(e2, E3, E3, 0, 0, n3, i3, g3, n3, k3 = [], l3), x3), n3, x3, l3, i3, c3 ? k3 : x3); - break; - default: - ee(y3, E3, E3, E3, [""], x3, 0, i3, x3); - } - } - o3 = f4 = h3 = 0, d3 = w3 = 1, g3 = y3 = "", l3 = s3; - break; - case 58: - l3 = 1 + R2(y3), h3 = v3; - default: - if (d3 < 1) { - if (m3 == 123) - --d3; - else if (m3 == 125 && d3++ == 0 && _3() == 125) - continue; - } - switch (y3 += $(m3), m3 * d3) { - case 38: - w3 = f4 > 0 ? 1 : (y3 += "\f", -1); - break; - case 44: - i3[o3++] = (R2(y3) - 1) * w3, w3 = 1; - break; - case 64: - if (I2() === 45) - y3 += W2(F2()); - p3 = I2(), f4 = l3 = R2(g3 = y3 += Q2(L2())), m3++; - break; - case 45: - if (v3 === 45 && R2(y3) == 2) - d3 = 0; - } - } - return t3; - } - function re(e2, r3, a3, c3, n3, s3, i3, u3, o3, f4, l3) { - var p3 = n3 - 1; - var h3 = n3 === 0 ? s3 : [""]; - var v3 = S2(h3); - for (var d3 = 0, b3 = 0, w3 = 0; d3 < c3; ++d3) - for (var m3 = 0, g3 = C(e2, p3 + 1, p3 = k2(b3 = i3[d3])), $2 = e2; m3 < v3; ++m3) - if ($2 = y2(b3 > 0 ? h3[m3] + " " + g3 : A2(g3, /&\f/g, h3[m3]))) - o3[w3++] = $2; - return P2(e2, r3, a3, n3 === 0 ? t2 : u3, o3, f4, l3); - } - function ae(e2, r3, a3) { - return P2(e2, r3, a3, n2, $(U2()), C(e2, 2, -2), 0); - } - function ce(e2, r3, a3, c3) { - return P2(e2, r3, a3, s2, C(e2, 0, c3), C(e2, c3 + 1, -1), c3); - } - function ne(e2, n3, t3) { - switch (E2(e2, n3)) { - case 5103: - return c2 + "print-" + e2 + e2; - case 5737: - case 4201: - case 3177: - case 3433: - case 1641: - case 4457: - case 2921: - case 5572: - case 6356: - case 5844: - case 3191: - case 6645: - case 3005: - case 6391: - case 5879: - case 5623: - case 6135: - case 4599: - case 4855: - case 4215: - case 6389: - case 5109: - case 5365: - case 5621: - case 3829: - return c2 + e2 + e2; - case 4789: - return a2 + e2 + e2; - case 5349: - case 4246: - case 4810: - case 6968: - case 2756: - return c2 + e2 + a2 + e2 + r2 + e2 + e2; - case 5936: - switch (M2(e2, n3 + 11)) { - case 114: - return c2 + e2 + r2 + A2(e2, /[svh]\w+-[tblr]{2}/, "tb") + e2; - case 108: - return c2 + e2 + r2 + A2(e2, /[svh]\w+-[tblr]{2}/, "tb-rl") + e2; - case 45: - return c2 + e2 + r2 + A2(e2, /[svh]\w+-[tblr]{2}/, "lr") + e2; - } - case 6828: - case 4268: - case 2903: - return c2 + e2 + r2 + e2 + e2; - case 6165: - return c2 + e2 + r2 + "flex-" + e2 + e2; - case 5187: - return c2 + e2 + A2(e2, /(\w+).+(:[^]+)/, c2 + "box-$1$2" + r2 + "flex-$1$2") + e2; - case 5443: - return c2 + e2 + r2 + "flex-item-" + A2(e2, /flex-|-self/g, "") + (!T(e2, /flex-|baseline/) ? r2 + "grid-row-" + A2(e2, /flex-|-self/g, "") : "") + e2; - case 4675: - return c2 + e2 + r2 + "flex-line-pack" + A2(e2, /align-content|flex-|-self/g, "") + e2; - case 5548: - return c2 + e2 + r2 + A2(e2, "shrink", "negative") + e2; - case 5292: - return c2 + e2 + r2 + A2(e2, "basis", "preferred-size") + e2; - case 6060: - return c2 + "box-" + A2(e2, "-grow", "") + c2 + e2 + r2 + A2(e2, "grow", "positive") + e2; - case 4554: - return c2 + A2(e2, /([^-])(transform)/g, "$1" + c2 + "$2") + e2; - case 6187: - return A2(A2(A2(e2, /(zoom-|grab)/, c2 + "$1"), /(image-set)/, c2 + "$1"), e2, "") + e2; - case 5495: - case 3959: - return A2(e2, /(image-set\([^]*)/, c2 + "$1$`$1"); - case 4968: - return A2(A2(e2, /(.+:)(flex-)?(.*)/, c2 + "box-pack:$3" + r2 + "flex-pack:$3"), /s.+-b[^;]+/, "justify") + c2 + e2 + e2; - case 4200: - if (!T(e2, /flex-|baseline/)) - return r2 + "grid-column-align" + C(e2, n3) + e2; - break; - case 2592: - case 3360: - return r2 + A2(e2, "template-", "") + e2; - case 4384: - case 3616: - if (t3 && t3.some(function(e3, r3) { - return n3 = r3, T(e3.props, /grid-\w+-end/); - })) { - return ~O2(e2 + (t3 = t3[n3].value), "span") ? e2 : r2 + A2(e2, "-start", "") + e2 + r2 + "grid-row-span:" + (~O2(t3, "span") ? T(t3, /\d+/) : +T(t3, /\d+/) - +T(e2, /\d+/)) + ";"; - } - return r2 + A2(e2, "-start", "") + e2; - case 4896: - case 4128: - return t3 && t3.some(function(e3) { - return T(e3.props, /grid-\w+-start/); - }) ? e2 : r2 + A2(A2(e2, "-end", "-span"), "span ", "") + e2; - case 4095: - case 3583: - case 4068: - case 2532: - return A2(e2, /(.+)-inline(.+)/, c2 + "$1$2") + e2; - case 8116: - case 7059: - case 5753: - case 5535: - case 5445: - case 5701: - case 4933: - case 4677: - case 5533: - case 5789: - case 5021: - case 4765: - if (R2(e2) - 1 - n3 > 6) - switch (M2(e2, n3 + 1)) { - case 109: - if (M2(e2, n3 + 4) !== 45) - break; - case 102: - return A2(e2, /(.+:)(.+)-([^]+)/, "$1" + c2 + "$2-$3$1" + a2 + (M2(e2, n3 + 3) == 108 ? "$3" : "$2-$3")) + e2; - case 115: - return ~O2(e2, "stretch") ? ne(A2(e2, "stretch", "fill-available"), n3, t3) + e2 : e2; - } - break; - case 5152: - case 5920: - return A2(e2, /(.+?):(\d+)(\s*\/\s*(span)?\s*(\d+))?(.*)/, function(a3, c3, n4, t4, s3, i3, u3) { - return r2 + c3 + ":" + n4 + u3 + (t4 ? r2 + c3 + "-span:" + (s3 ? i3 : +i3 - +n4) + u3 : "") + e2; - }); - case 4949: - if (M2(e2, n3 + 6) === 121) - return A2(e2, ":", ":" + c2) + e2; - break; - case 6444: - switch (M2(e2, M2(e2, 14) === 45 ? 18 : 11)) { - case 120: - return A2(e2, /(.+:)([^;\s!]+)(;|(\s+)?!.+)?/, "$1" + c2 + (M2(e2, 14) === 45 ? "inline-" : "") + "box$3$1" + c2 + "$2$3$1" + r2 + "$2box$3") + e2; - case 100: - return A2(e2, ":", ":" + r2) + e2; - } - break; - case 5719: - case 2647: - case 2135: - case 3927: - case 2391: - return A2(e2, "scroll-", "scroll-snap-") + e2; - } - return e2; - } - function te(e2, r3) { - var a3 = ""; - var c3 = S2(e2); - for (var n3 = 0; n3 < c3; n3++) - a3 += r3(e2[n3], n3, e2, r3) || ""; - return a3; - } - function se(e2, r3, a3, c3) { - switch (e2.type) { - case g2: - if (e2.children.length) - break; - case o2: - case s2: - return e2.return = e2.return || e2.value; - case n2: - return ""; - case d2: - return e2.return = e2.value + "{" + te(e2.children, c3) + "}"; - case t2: - e2.value = e2.props.join(","); - } - return R2(a3 = te(e2.children, c3)) ? e2.return = e2.value + "{" + a3 + "}" : ""; - } - function ie(e2) { - var r3 = S2(e2); - return function(a3, c3, n3, t3) { - var s3 = ""; - for (var i3 = 0; i3 < r3; i3++) - s3 += e2[i3](a3, c3, n3, t3) || ""; - return s3; - }; - } - function ue(e2) { - return function(r3) { - if (!r3.root) { - if (r3 = r3.return) - e2(r3); - } - }; - } - function oe(e2, n3, i3, u3) { - if (e2.length > -1) { - if (!e2.return) - switch (e2.type) { - case s2: - e2.return = ne(e2.value, e2.length, i3); - return; - case d2: - return te([j2(e2, { value: A2(e2.value, "@", "@" + c2) })], u3); - case t2: - if (e2.length) - return N2(e2.props, function(n4) { - switch (T(n4, /(::plac\w+|:read-\w+)/)) { - case ":read-only": - case ":read-write": - return te([j2(e2, { props: [A2(n4, /:(read-\w+)/, ":" + a2 + "$1")] })], u3); - case "::placeholder": - return te([j2(e2, { props: [A2(n4, /:(plac\w+)/, ":" + c2 + "input-$1")] }), j2(e2, { props: [A2(n4, /:(plac\w+)/, ":" + a2 + "$1")] }), j2(e2, { props: [A2(n4, /:(plac\w+)/, r2 + "input-$1")] })], u3); - } - return ""; - }); - } - } - } - function fe(e2) { - switch (e2.type) { - case t2: - e2.props = e2.props.map(function(r3) { - return N2(B2(r3), function(r4, a3, c3) { - switch (M2(r4, 0)) { - case 12: - return C(r4, 1, R2(r4)); - case 0: - case 40: - case 43: - case 62: - case 126: - return r4; - case 58: - if (c3[++a3] === "global") - c3[a3] = "", c3[++a3] = "\f" + C(c3[a3], a3 = 1, -1); - case 32: - return a3 === 1 ? "" : r4; - default: - switch (a3) { - case 0: - e2 = r4; - return S2(c3) > 1 ? "" : r4; - case (a3 = S2(c3) - 1): - case 2: - return a3 === 2 ? r4 + e2 + e2 : r4 + e2; - default: - return r4; - } - } - }); - }); - } - } - e.CHARSET = f3; - e.COMMENT = n2; - e.COUNTER_STYLE = w2; - e.DECLARATION = s2; - e.DOCUMENT = h2; - e.FONT_FACE = b2; - e.FONT_FEATURE_VALUES = m2; - e.IMPORT = o2; - e.KEYFRAMES = d2; - e.LAYER = g2; - e.MEDIA = u2; - e.MOZ = a2; - e.MS = r2; - e.NAMESPACE = v2; - e.PAGE = i2; - e.RULESET = t2; - e.SUPPORTS = p2; - e.VIEWPORT = l2; - e.WEBKIT = c2; - e.abs = k2; - e.alloc = K; - e.append = z2; - e.assign = x2; - e.caret = L2; - e.char = U2; - e.charat = M2; - e.combine = N2; - e.comment = ae; - e.commenter = J; - e.compile = X2; - e.copy = j2; - e.dealloc = V; - e.declaration = ce; - e.delimit = W2; - e.delimiter = q2; - e.escaping = Z2; - e.from = $; - e.hash = E2; - e.identifier = Q2; - e.indexof = O2; - e.match = T; - e.middleware = ie; - e.namespace = fe; - e.next = F2; - e.node = P2; - e.parse = ee; - e.peek = I2; - e.prefix = ne; - e.prefixer = oe; - e.prev = _3; - e.replace = A2; - e.ruleset = re; - e.rulesheet = ue; - e.serialize = te; - e.sizeof = S2; - e.slice = D2; - e.stringify = se; - e.strlen = R2; - e.substr = C; - e.token = Y2; - e.tokenize = B2; - e.tokenizer = H2; - e.trim = y2; - e.whitespace = G2; - Object.defineProperty(e, "__esModule", { value: true }); - }); - } -}); - -// node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.cjs.dev.js -var require_emotion_weak_memoize_cjs_dev = __commonJS({ - "node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var weakMemoize = function weakMemoize2(func) { - var cache = /* @__PURE__ */ new WeakMap(); - return function(arg) { - if (cache.has(arg)) { - return cache.get(arg); - } - var ret = func(arg); - cache.set(arg, ret); - return ret; - }; - }; - exports["default"] = weakMemoize; - } -}); - -// node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.cjs.js -var require_emotion_weak_memoize_cjs = __commonJS({ - "node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_emotion_weak_memoize_cjs_dev(); - } - } -}); - -// node_modules/@emotion/cache/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.dev.js -var require_emotion_memoize_cjs_dev = __commonJS({ - "node_modules/@emotion/cache/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - function memoize(fn2) { - var cache = /* @__PURE__ */ Object.create(null); - return function(arg) { - if (cache[arg] === void 0) - cache[arg] = fn2(arg); - return cache[arg]; - }; - } - exports["default"] = memoize; - } -}); - -// node_modules/@emotion/cache/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.js -var require_emotion_memoize_cjs = __commonJS({ - "node_modules/@emotion/cache/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_emotion_memoize_cjs_dev(); - } - } -}); - -// node_modules/@emotion/cache/dist/emotion-cache.cjs.dev.js -var require_emotion_cache_cjs_dev = __commonJS({ - "node_modules/@emotion/cache/dist/emotion-cache.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var sheet = require_emotion_sheet_cjs(); - var stylis = require_stylis(); - var weakMemoize = require_emotion_weak_memoize_cjs(); - var memoize = require_emotion_memoize_cjs(); - function _interopDefault(e) { - return e && e.__esModule ? e : { "default": e }; - } - var weakMemoize__default = /* @__PURE__ */ _interopDefault(weakMemoize); - var memoize__default = /* @__PURE__ */ _interopDefault(memoize); - var identifierWithPointTracking = function identifierWithPointTracking2(begin, points, index) { - var previous = 0; - var character = 0; - while (true) { - previous = character; - character = stylis.peek(); - if (previous === 38 && character === 12) { - points[index] = 1; - } - if (stylis.token(character)) { - break; - } - stylis.next(); - } - return stylis.slice(begin, stylis.position); - }; - var toRules = function toRules2(parsed, points) { - var index = -1; - var character = 44; - do { - switch (stylis.token(character)) { - case 0: - if (character === 38 && stylis.peek() === 12) { - points[index] = 1; - } - parsed[index] += identifierWithPointTracking(stylis.position - 1, points, index); - break; - case 2: - parsed[index] += stylis.delimit(character); - break; - case 4: - if (character === 44) { - parsed[++index] = stylis.peek() === 58 ? "&\f" : ""; - points[index] = parsed[index].length; - break; - } - default: - parsed[index] += stylis.from(character); - } - } while (character = stylis.next()); - return parsed; - }; - var getRules = function getRules2(value, points) { - return stylis.dealloc(toRules(stylis.alloc(value), points)); - }; - var fixedElements = /* @__PURE__ */ new WeakMap(); - var compat = function compat2(element) { - if (element.type !== "rule" || !element.parent || element.length < 1) { - return; - } - var value = element.value, parent = element.parent; - var isImplicitRule = element.column === parent.column && element.line === parent.line; - while (parent.type !== "rule") { - parent = parent.parent; - if (!parent) - return; - } - if (element.props.length === 1 && value.charCodeAt(0) !== 58 && !fixedElements.get(parent)) { - return; - } - if (isImplicitRule) { - return; - } - fixedElements.set(element, true); - var points = []; - var rules = getRules(value, points); - var parentRules = parent.props; - for (var i2 = 0, k2 = 0; i2 < rules.length; i2++) { - for (var j2 = 0; j2 < parentRules.length; j2++, k2++) { - element.props[k2] = points[i2] ? rules[i2].replace(/&\f/g, parentRules[j2]) : parentRules[j2] + " " + rules[i2]; - } - } - }; - var removeLabel = function removeLabel2(element) { - if (element.type === "decl") { - var value = element.value; - if (value.charCodeAt(0) === 108 && value.charCodeAt(2) === 98) { - element["return"] = ""; - element.value = ""; - } - } - }; - var ignoreFlag = "emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason"; - var isIgnoringComment = function isIgnoringComment2(element) { - return element.type === "comm" && element.children.indexOf(ignoreFlag) > -1; - }; - var createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm2(cache) { - return function(element, index, children) { - if (element.type !== "rule" || cache.compat) - return; - var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g); - if (unsafePseudoClasses) { - var isNested = !!element.parent; - var commentContainer = isNested ? element.parent.children : children; - for (var i2 = commentContainer.length - 1; i2 >= 0; i2--) { - var node = commentContainer[i2]; - if (node.line < element.line) { - break; - } - if (node.column < element.column) { - if (isIgnoringComment(node)) { - return; - } - break; - } - } - unsafePseudoClasses.forEach(function(unsafePseudoClass) { - console.error('The pseudo class "' + unsafePseudoClass + '" is potentially unsafe when doing server-side rendering. Try changing it to "' + unsafePseudoClass.split("-child")[0] + '-of-type".'); - }); - } - }; - }; - var isImportRule = function isImportRule2(element) { - return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64; - }; - var isPrependedWithRegularRules = function isPrependedWithRegularRules2(index, children) { - for (var i2 = index - 1; i2 >= 0; i2--) { - if (!isImportRule(children[i2])) { - return true; - } - } - return false; - }; - var nullifyElement = function nullifyElement2(element) { - element.type = ""; - element.value = ""; - element["return"] = ""; - element.children = ""; - element.props = ""; - }; - var incorrectImportAlarm = function incorrectImportAlarm2(element, index, children) { - if (!isImportRule(element)) { - return; - } - if (element.parent) { - console.error("`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles."); - nullifyElement(element); - } else if (isPrependedWithRegularRules(index, children)) { - console.error("`@import` rules can't be after other rules. Please put your `@import` rules before your other rules."); - nullifyElement(element); - } - }; - function prefix2(value, length) { - switch (stylis.hash(value, length)) { - case 5103: - return stylis.WEBKIT + "print-" + value + value; - case 5737: - case 4201: - case 3177: - case 3433: - case 1641: - case 4457: - case 2921: - case 5572: - case 6356: - case 5844: - case 3191: - case 6645: - case 3005: - case 6391: - case 5879: - case 5623: - case 6135: - case 4599: - case 4855: - case 4215: - case 6389: - case 5109: - case 5365: - case 5621: - case 3829: - return stylis.WEBKIT + value + value; - case 5349: - case 4246: - case 4810: - case 6968: - case 2756: - return stylis.WEBKIT + value + stylis.MOZ + value + stylis.MS + value + value; - case 6828: - case 4268: - return stylis.WEBKIT + value + stylis.MS + value + value; - case 6165: - return stylis.WEBKIT + value + stylis.MS + "flex-" + value + value; - case 5187: - return stylis.WEBKIT + value + stylis.replace(value, /(\w+).+(:[^]+)/, stylis.WEBKIT + "box-$1$2" + stylis.MS + "flex-$1$2") + value; - case 5443: - return stylis.WEBKIT + value + stylis.MS + "flex-item-" + stylis.replace(value, /flex-|-self/, "") + value; - case 4675: - return stylis.WEBKIT + value + stylis.MS + "flex-line-pack" + stylis.replace(value, /align-content|flex-|-self/, "") + value; - case 5548: - return stylis.WEBKIT + value + stylis.MS + stylis.replace(value, "shrink", "negative") + value; - case 5292: - return stylis.WEBKIT + value + stylis.MS + stylis.replace(value, "basis", "preferred-size") + value; - case 6060: - return stylis.WEBKIT + "box-" + stylis.replace(value, "-grow", "") + stylis.WEBKIT + value + stylis.MS + stylis.replace(value, "grow", "positive") + value; - case 4554: - return stylis.WEBKIT + stylis.replace(value, /([^-])(transform)/g, "$1" + stylis.WEBKIT + "$2") + value; - case 6187: - return stylis.replace(stylis.replace(stylis.replace(value, /(zoom-|grab)/, stylis.WEBKIT + "$1"), /(image-set)/, stylis.WEBKIT + "$1"), value, "") + value; - case 5495: - case 3959: - return stylis.replace(value, /(image-set\([^]*)/, stylis.WEBKIT + "$1$`$1"); - case 4968: - return stylis.replace(stylis.replace(value, /(.+:)(flex-)?(.*)/, stylis.WEBKIT + "box-pack:$3" + stylis.MS + "flex-pack:$3"), /s.+-b[^;]+/, "justify") + stylis.WEBKIT + value + value; - case 4095: - case 3583: - case 4068: - case 2532: - return stylis.replace(value, /(.+)-inline(.+)/, stylis.WEBKIT + "$1$2") + value; - case 8116: - case 7059: - case 5753: - case 5535: - case 5445: - case 5701: - case 4933: - case 4677: - case 5533: - case 5789: - case 5021: - case 4765: - if (stylis.strlen(value) - 1 - length > 6) - switch (stylis.charat(value, length + 1)) { - case 109: - if (stylis.charat(value, length + 4) !== 45) - break; - case 102: - return stylis.replace(value, /(.+:)(.+)-([^]+)/, "$1" + stylis.WEBKIT + "$2-$3$1" + stylis.MOZ + (stylis.charat(value, length + 3) == 108 ? "$3" : "$2-$3")) + value; - case 115: - return ~stylis.indexof(value, "stretch") ? prefix2(stylis.replace(value, "stretch", "fill-available"), length) + value : value; - } - break; - case 4949: - if (stylis.charat(value, length + 1) !== 115) - break; - case 6444: - switch (stylis.charat(value, stylis.strlen(value) - 3 - (~stylis.indexof(value, "!important") && 10))) { - case 107: - return stylis.replace(value, ":", ":" + stylis.WEBKIT) + value; - case 101: - return stylis.replace(value, /(.+:)([^;!]+)(;|!.+)?/, "$1" + stylis.WEBKIT + (stylis.charat(value, 14) === 45 ? "inline-" : "") + "box$3$1" + stylis.WEBKIT + "$2$3$1" + stylis.MS + "$2box$3") + value; - } - break; - case 5936: - switch (stylis.charat(value, length + 11)) { - case 114: - return stylis.WEBKIT + value + stylis.MS + stylis.replace(value, /[svh]\w+-[tblr]{2}/, "tb") + value; - case 108: - return stylis.WEBKIT + value + stylis.MS + stylis.replace(value, /[svh]\w+-[tblr]{2}/, "tb-rl") + value; - case 45: - return stylis.WEBKIT + value + stylis.MS + stylis.replace(value, /[svh]\w+-[tblr]{2}/, "lr") + value; - } - return stylis.WEBKIT + value + stylis.MS + value + value; - } - return value; - } - var prefixer = function prefixer2(element, index, children, callback) { - if (element.length > -1) { - if (!element["return"]) - switch (element.type) { - case stylis.DECLARATION: - element["return"] = prefix2(element.value, element.length); - break; - case stylis.KEYFRAMES: - return stylis.serialize([stylis.copy(element, { - value: stylis.replace(element.value, "@", "@" + stylis.WEBKIT) - })], callback); - case stylis.RULESET: - if (element.length) - return stylis.combine(element.props, function(value) { - switch (stylis.match(value, /(::plac\w+|:read-\w+)/)) { - case ":read-only": - case ":read-write": - return stylis.serialize([stylis.copy(element, { - props: [stylis.replace(value, /:(read-\w+)/, ":" + stylis.MOZ + "$1")] - })], callback); - case "::placeholder": - return stylis.serialize([stylis.copy(element, { - props: [stylis.replace(value, /:(plac\w+)/, ":" + stylis.WEBKIT + "input-$1")] - }), stylis.copy(element, { - props: [stylis.replace(value, /:(plac\w+)/, ":" + stylis.MOZ + "$1")] - }), stylis.copy(element, { - props: [stylis.replace(value, /:(plac\w+)/, stylis.MS + "input-$1")] - })], callback); - } - return ""; - }); - } - } - }; - var isBrowser = typeof document !== "undefined"; - var getServerStylisCache = isBrowser ? void 0 : weakMemoize__default["default"](function() { - return memoize__default["default"](function() { - var cache = {}; - return function(name) { - return cache[name]; - }; - }); - }); - var defaultStylisPlugins = [prefixer]; - var createCache = function createCache2(options) { - var key = options.key; - if (!key) { - throw new Error("You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\nIf multiple caches share the same key they might \"fight\" for each other's style elements."); - } - if (isBrowser && key === "css") { - var ssrStyles = document.querySelectorAll("style[data-emotion]:not([data-s])"); - Array.prototype.forEach.call(ssrStyles, function(node) { - var dataEmotionAttribute = node.getAttribute("data-emotion"); - if (dataEmotionAttribute.indexOf(" ") === -1) { - return; - } - document.head.appendChild(node); - node.setAttribute("data-s", ""); - }); - } - var stylisPlugins = options.stylisPlugins || defaultStylisPlugins; - if (true) { - if (/[^a-z-]/.test(key)) { - throw new Error('Emotion key must only contain lower case alphabetical characters and - but "' + key + '" was passed'); - } - } - var inserted = {}; - var container; - var nodesToHydrate = []; - if (isBrowser) { - container = options.container || document.head; - Array.prototype.forEach.call( - document.querySelectorAll('style[data-emotion^="' + key + ' "]'), - function(node) { - var attrib = node.getAttribute("data-emotion").split(" "); - for (var i2 = 1; i2 < attrib.length; i2++) { - inserted[attrib[i2]] = true; - } - nodesToHydrate.push(node); - } - ); - } - var _insert; - var omnipresentPlugins = [compat, removeLabel]; - if (true) { - omnipresentPlugins.push(createUnsafeSelectorsAlarm({ - get compat() { - return cache.compat; - } - }), incorrectImportAlarm); - } - if (isBrowser) { - var currentSheet; - var finalizingPlugins = [stylis.stringify, true ? function(element) { - if (!element.root) { - if (element["return"]) { - currentSheet.insert(element["return"]); - } else if (element.value && element.type !== stylis.COMMENT) { - currentSheet.insert(element.value + "{}"); - } - } - } : stylis.rulesheet(function(rule) { - currentSheet.insert(rule); - })]; - var serializer = stylis.middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins)); - var stylis$1 = function stylis$12(styles) { - return stylis.serialize(stylis.compile(styles), serializer); - }; - _insert = function insert2(selector, serialized, sheet2, shouldCache) { - currentSheet = sheet2; - if (serialized.map !== void 0) { - currentSheet = { - insert: function insert3(rule) { - sheet2.insert(rule + serialized.map); - } - }; - } - stylis$1(selector ? selector + "{" + serialized.styles + "}" : serialized.styles); - if (shouldCache) { - cache.inserted[serialized.name] = true; - } - }; - } else { - var _finalizingPlugins = [stylis.stringify]; - var _serializer = stylis.middleware(omnipresentPlugins.concat(stylisPlugins, _finalizingPlugins)); - var _stylis = function _stylis2(styles) { - return stylis.serialize(stylis.compile(styles), _serializer); - }; - var serverStylisCache = getServerStylisCache(stylisPlugins)(key); - var getRules2 = function getRules3(selector, serialized) { - var name = serialized.name; - if (serverStylisCache[name] === void 0) { - serverStylisCache[name] = _stylis(selector ? selector + "{" + serialized.styles + "}" : serialized.styles); - } - return serverStylisCache[name]; - }; - _insert = function _insert2(selector, serialized, sheet2, shouldCache) { - var name = serialized.name; - var rules = getRules2(selector, serialized); - if (cache.compat === void 0) { - if (shouldCache) { - cache.inserted[name] = true; - } - if (serialized.map !== void 0) { - return rules + serialized.map; - } - return rules; - } else { - if (shouldCache) { - cache.inserted[name] = rules; - } else { - return rules; - } - } - }; - } - var cache = { - key, - sheet: new sheet.StyleSheet({ - key, - container, - nonce: options.nonce, - speedy: options.speedy, - prepend: options.prepend, - insertionPoint: options.insertionPoint - }), - nonce: options.nonce, - inserted, - registered: {}, - insert: _insert - }; - cache.sheet.hydrate(nodesToHydrate); - return cache; - }; - exports["default"] = createCache; - } -}); - -// node_modules/@emotion/cache/dist/emotion-cache.cjs.js -var require_emotion_cache_cjs = __commonJS({ - "node_modules/@emotion/cache/dist/emotion-cache.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_emotion_cache_cjs_dev(); - } - } -}); - -// node_modules/@babel/runtime/helpers/extends.js -var require_extends = __commonJS({ - "node_modules/@babel/runtime/helpers/extends.js"(exports, module2) { - function _extends2() { - module2.exports = _extends2 = Object.assign ? Object.assign.bind() : function(target) { - for (var i2 = 1; i2 < arguments.length; i2++) { - var source = arguments[i2]; - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - return target; - }, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - return _extends2.apply(this, arguments); - } - module2.exports = _extends2, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js -var require_react_is_development = __commonJS({ - "node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js"(exports) { - "use strict"; - if (true) { - (function() { - "use strict"; - var hasSymbol = typeof Symbol === "function" && Symbol.for; - var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for("react.element") : 60103; - var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for("react.portal") : 60106; - var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for("react.fragment") : 60107; - var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for("react.strict_mode") : 60108; - var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for("react.profiler") : 60114; - var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for("react.provider") : 60109; - var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for("react.context") : 60110; - var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for("react.async_mode") : 60111; - var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for("react.concurrent_mode") : 60111; - var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for("react.forward_ref") : 60112; - var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for("react.suspense") : 60113; - var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for("react.suspense_list") : 60120; - var REACT_MEMO_TYPE = hasSymbol ? Symbol.for("react.memo") : 60115; - var REACT_LAZY_TYPE = hasSymbol ? Symbol.for("react.lazy") : 60116; - var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for("react.block") : 60121; - var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for("react.fundamental") : 60117; - var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for("react.responder") : 60118; - var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for("react.scope") : 60119; - function isValidElementType2(type) { - return typeof type === "string" || typeof type === "function" || type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === "object" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); - } - function typeOf(object) { - if (typeof object === "object" && object !== null) { - var $$typeof = object.$$typeof; - switch ($$typeof) { - case REACT_ELEMENT_TYPE: - var type = object.type; - switch (type) { - case REACT_ASYNC_MODE_TYPE: - case REACT_CONCURRENT_MODE_TYPE: - case REACT_FRAGMENT_TYPE: - case REACT_PROFILER_TYPE: - case REACT_STRICT_MODE_TYPE: - case REACT_SUSPENSE_TYPE: - return type; - default: - var $$typeofType = type && type.$$typeof; - switch ($$typeofType) { - case REACT_CONTEXT_TYPE: - case REACT_FORWARD_REF_TYPE: - case REACT_LAZY_TYPE: - case REACT_MEMO_TYPE: - case REACT_PROVIDER_TYPE: - return $$typeofType; - default: - return $$typeof; - } - } - case REACT_PORTAL_TYPE: - return $$typeof; - } - } - return void 0; - } - var AsyncMode = REACT_ASYNC_MODE_TYPE; - var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; - var ContextConsumer = REACT_CONTEXT_TYPE; - var ContextProvider = REACT_PROVIDER_TYPE; - var Element = REACT_ELEMENT_TYPE; - var ForwardRef = REACT_FORWARD_REF_TYPE; - var Fragment2 = REACT_FRAGMENT_TYPE; - var Lazy = REACT_LAZY_TYPE; - var Memo = REACT_MEMO_TYPE; - var Portal = REACT_PORTAL_TYPE; - var Profiler = REACT_PROFILER_TYPE; - var StrictMode = REACT_STRICT_MODE_TYPE; - var Suspense = REACT_SUSPENSE_TYPE; - var hasWarnedAboutDeprecatedIsAsyncMode = false; - function isAsyncMode(object) { - { - if (!hasWarnedAboutDeprecatedIsAsyncMode) { - hasWarnedAboutDeprecatedIsAsyncMode = true; - console["warn"]("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API."); - } - } - return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; - } - function isConcurrentMode(object) { - return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; - } - function isContextConsumer2(object) { - return typeOf(object) === REACT_CONTEXT_TYPE; - } - function isContextProvider(object) { - return typeOf(object) === REACT_PROVIDER_TYPE; - } - function isElement(object) { - return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; - } - function isForwardRef(object) { - return typeOf(object) === REACT_FORWARD_REF_TYPE; - } - function isFragment(object) { - return typeOf(object) === REACT_FRAGMENT_TYPE; - } - function isLazy(object) { - return typeOf(object) === REACT_LAZY_TYPE; - } - function isMemo(object) { - return typeOf(object) === REACT_MEMO_TYPE; - } - function isPortal(object) { - return typeOf(object) === REACT_PORTAL_TYPE; - } - function isProfiler(object) { - return typeOf(object) === REACT_PROFILER_TYPE; - } - function isStrictMode(object) { - return typeOf(object) === REACT_STRICT_MODE_TYPE; - } - function isSuspense(object) { - return typeOf(object) === REACT_SUSPENSE_TYPE; - } - exports.AsyncMode = AsyncMode; - exports.ConcurrentMode = ConcurrentMode; - exports.ContextConsumer = ContextConsumer; - exports.ContextProvider = ContextProvider; - exports.Element = Element; - exports.ForwardRef = ForwardRef; - exports.Fragment = Fragment2; - exports.Lazy = Lazy; - exports.Memo = Memo; - exports.Portal = Portal; - exports.Profiler = Profiler; - exports.StrictMode = StrictMode; - exports.Suspense = Suspense; - exports.isAsyncMode = isAsyncMode; - exports.isConcurrentMode = isConcurrentMode; - exports.isContextConsumer = isContextConsumer2; - exports.isContextProvider = isContextProvider; - exports.isElement = isElement; - exports.isForwardRef = isForwardRef; - exports.isFragment = isFragment; - exports.isLazy = isLazy; - exports.isMemo = isMemo; - exports.isPortal = isPortal; - exports.isProfiler = isProfiler; - exports.isStrictMode = isStrictMode; - exports.isSuspense = isSuspense; - exports.isValidElementType = isValidElementType2; - exports.typeOf = typeOf; - })(); - } - } -}); - -// node_modules/hoist-non-react-statics/node_modules/react-is/index.js -var require_react_is = __commonJS({ - "node_modules/hoist-non-react-statics/node_modules/react-is/index.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_react_is_development(); - } - } -}); - -// node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js -var require_hoist_non_react_statics_cjs = __commonJS({ - "node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"(exports, module2) { - "use strict"; - var reactIs = require_react_is(); - var REACT_STATICS = { - childContextTypes: true, - contextType: true, - contextTypes: true, - defaultProps: true, - displayName: true, - getDefaultProps: true, - getDerivedStateFromError: true, - getDerivedStateFromProps: true, - mixins: true, - propTypes: true, - type: true - }; - var KNOWN_STATICS = { - name: true, - length: true, - prototype: true, - caller: true, - callee: true, - arguments: true, - arity: true - }; - var FORWARD_REF_STATICS = { - "$$typeof": true, - render: true, - defaultProps: true, - displayName: true, - propTypes: true - }; - var MEMO_STATICS = { - "$$typeof": true, - compare: true, - defaultProps: true, - displayName: true, - propTypes: true, - type: true - }; - var TYPE_STATICS = {}; - TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS; - TYPE_STATICS[reactIs.Memo] = MEMO_STATICS; - function getStatics(component) { - if (reactIs.isMemo(component)) { - return MEMO_STATICS; - } - return TYPE_STATICS[component["$$typeof"]] || REACT_STATICS; - } - var defineProperty = Object.defineProperty; - var getOwnPropertyNames = Object.getOwnPropertyNames; - var getOwnPropertySymbols = Object.getOwnPropertySymbols; - var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var getPrototypeOf = Object.getPrototypeOf; - var objectPrototype = Object.prototype; - function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) { - if (typeof sourceComponent !== "string") { - if (objectPrototype) { - var inheritedComponent = getPrototypeOf(sourceComponent); - if (inheritedComponent && inheritedComponent !== objectPrototype) { - hoistNonReactStatics(targetComponent, inheritedComponent, blacklist); - } - } - var keys = getOwnPropertyNames(sourceComponent); - if (getOwnPropertySymbols) { - keys = keys.concat(getOwnPropertySymbols(sourceComponent)); - } - var targetStatics = getStatics(targetComponent); - var sourceStatics = getStatics(sourceComponent); - for (var i2 = 0; i2 < keys.length; ++i2) { - var key = keys[i2]; - if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) { - var descriptor = getOwnPropertyDescriptor(sourceComponent, key); - try { - defineProperty(targetComponent, key, descriptor); - } catch (e) { - } - } - } - } - return targetComponent; - } - module2.exports = hoistNonReactStatics; - } -}); - -// node_modules/@emotion/react/_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.dev.js -var require_emotion_react_isolated_hnrs_cjs_dev = __commonJS({ - "node_modules/@emotion/react/_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var hoistNonReactStatics$1 = require_hoist_non_react_statics_cjs(); - function _interopDefault(e) { - return e && e.__esModule ? e : { "default": e }; - } - var hoistNonReactStatics__default = /* @__PURE__ */ _interopDefault(hoistNonReactStatics$1); - var hoistNonReactStatics = function(targetComponent, sourceComponent) { - return hoistNonReactStatics__default["default"](targetComponent, sourceComponent); - }; - exports["default"] = hoistNonReactStatics; - } -}); - -// node_modules/@emotion/utils/dist/emotion-utils.cjs.dev.js -var require_emotion_utils_cjs_dev = __commonJS({ - "node_modules/@emotion/utils/dist/emotion-utils.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var isBrowser = typeof document !== "undefined"; - function getRegisteredStyles(registered, registeredStyles, classNames) { - var rawClassName = ""; - classNames.split(" ").forEach(function(className) { - if (registered[className] !== void 0) { - registeredStyles.push(registered[className] + ";"); - } else { - rawClassName += className + " "; - } - }); - return rawClassName; - } - var registerStyles = function registerStyles2(cache, serialized, isStringTag) { - var className = cache.key + "-" + serialized.name; - if ((isStringTag === false || isBrowser === false && cache.compat !== void 0) && cache.registered[className] === void 0) { - cache.registered[className] = serialized.styles; - } - }; - var insertStyles = function insertStyles2(cache, serialized, isStringTag) { - registerStyles(cache, serialized, isStringTag); - var className = cache.key + "-" + serialized.name; - if (cache.inserted[serialized.name] === void 0) { - var stylesForSSR = ""; - var current = serialized; - do { - var maybeStyles = cache.insert(serialized === current ? "." + className : "", current, cache.sheet, true); - if (!isBrowser && maybeStyles !== void 0) { - stylesForSSR += maybeStyles; - } - current = current.next; - } while (current !== void 0); - if (!isBrowser && stylesForSSR.length !== 0) { - return stylesForSSR; - } - } - }; - exports.getRegisteredStyles = getRegisteredStyles; - exports.insertStyles = insertStyles; - exports.registerStyles = registerStyles; - } -}); - -// node_modules/@emotion/utils/dist/emotion-utils.cjs.js -var require_emotion_utils_cjs = __commonJS({ - "node_modules/@emotion/utils/dist/emotion-utils.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_emotion_utils_cjs_dev(); - } - } -}); - -// node_modules/@emotion/react/node_modules/@emotion/hash/dist/emotion-hash.cjs.dev.js -var require_emotion_hash_cjs_dev = __commonJS({ - "node_modules/@emotion/react/node_modules/@emotion/hash/dist/emotion-hash.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - function murmur2(str) { - var h2 = 0; - var k2, i2 = 0, len = str.length; - for (; len >= 4; ++i2, len -= 4) { - k2 = str.charCodeAt(i2) & 255 | (str.charCodeAt(++i2) & 255) << 8 | (str.charCodeAt(++i2) & 255) << 16 | (str.charCodeAt(++i2) & 255) << 24; - k2 = (k2 & 65535) * 1540483477 + ((k2 >>> 16) * 59797 << 16); - k2 ^= k2 >>> 24; - h2 = (k2 & 65535) * 1540483477 + ((k2 >>> 16) * 59797 << 16) ^ (h2 & 65535) * 1540483477 + ((h2 >>> 16) * 59797 << 16); - } - switch (len) { - case 3: - h2 ^= (str.charCodeAt(i2 + 2) & 255) << 16; - case 2: - h2 ^= (str.charCodeAt(i2 + 1) & 255) << 8; - case 1: - h2 ^= str.charCodeAt(i2) & 255; - h2 = (h2 & 65535) * 1540483477 + ((h2 >>> 16) * 59797 << 16); - } - h2 ^= h2 >>> 13; - h2 = (h2 & 65535) * 1540483477 + ((h2 >>> 16) * 59797 << 16); - return ((h2 ^ h2 >>> 15) >>> 0).toString(36); - } - exports["default"] = murmur2; - } -}); - -// node_modules/@emotion/react/node_modules/@emotion/hash/dist/emotion-hash.cjs.js -var require_emotion_hash_cjs = __commonJS({ - "node_modules/@emotion/react/node_modules/@emotion/hash/dist/emotion-hash.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_emotion_hash_cjs_dev(); - } - } -}); - -// node_modules/@emotion/react/node_modules/@emotion/unitless/dist/emotion-unitless.cjs.dev.js -var require_emotion_unitless_cjs_dev = __commonJS({ - "node_modules/@emotion/react/node_modules/@emotion/unitless/dist/emotion-unitless.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var unitlessKeys = { - animationIterationCount: 1, - aspectRatio: 1, - borderImageOutset: 1, - borderImageSlice: 1, - borderImageWidth: 1, - boxFlex: 1, - boxFlexGroup: 1, - boxOrdinalGroup: 1, - columnCount: 1, - columns: 1, - flex: 1, - flexGrow: 1, - flexPositive: 1, - flexShrink: 1, - flexNegative: 1, - flexOrder: 1, - gridRow: 1, - gridRowEnd: 1, - gridRowSpan: 1, - gridRowStart: 1, - gridColumn: 1, - gridColumnEnd: 1, - gridColumnSpan: 1, - gridColumnStart: 1, - msGridRow: 1, - msGridRowSpan: 1, - msGridColumn: 1, - msGridColumnSpan: 1, - fontWeight: 1, - lineHeight: 1, - opacity: 1, - order: 1, - orphans: 1, - tabSize: 1, - widows: 1, - zIndex: 1, - zoom: 1, - WebkitLineClamp: 1, - fillOpacity: 1, - floodOpacity: 1, - stopOpacity: 1, - strokeDasharray: 1, - strokeDashoffset: 1, - strokeMiterlimit: 1, - strokeOpacity: 1, - strokeWidth: 1 - }; - exports["default"] = unitlessKeys; - } -}); - -// node_modules/@emotion/react/node_modules/@emotion/unitless/dist/emotion-unitless.cjs.js -var require_emotion_unitless_cjs = __commonJS({ - "node_modules/@emotion/react/node_modules/@emotion/unitless/dist/emotion-unitless.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_emotion_unitless_cjs_dev(); - } - } -}); - -// node_modules/@emotion/react/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.dev.js -var require_emotion_memoize_cjs_dev2 = __commonJS({ - "node_modules/@emotion/react/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - function memoize(fn2) { - var cache = /* @__PURE__ */ Object.create(null); - return function(arg) { - if (cache[arg] === void 0) - cache[arg] = fn2(arg); - return cache[arg]; - }; - } - exports["default"] = memoize; - } -}); - -// node_modules/@emotion/react/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.js -var require_emotion_memoize_cjs2 = __commonJS({ - "node_modules/@emotion/react/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_emotion_memoize_cjs_dev2(); - } - } -}); - -// node_modules/@emotion/react/node_modules/@emotion/serialize/dist/emotion-serialize.cjs.dev.js -var require_emotion_serialize_cjs_dev = __commonJS({ - "node_modules/@emotion/react/node_modules/@emotion/serialize/dist/emotion-serialize.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var hashString2 = require_emotion_hash_cjs(); - var unitless = require_emotion_unitless_cjs(); - var memoize = require_emotion_memoize_cjs2(); - function _interopDefault(e) { - return e && e.__esModule ? e : { "default": e }; - } - var hashString__default = /* @__PURE__ */ _interopDefault(hashString2); - var unitless__default = /* @__PURE__ */ _interopDefault(unitless); - var memoize__default = /* @__PURE__ */ _interopDefault(memoize); - var ILLEGAL_ESCAPE_SEQUENCE_ERROR = `You have illegal escape sequence in your template literal, most likely inside content's property value. -Because you write your CSS inside a JavaScript string you actually have to do double escaping, so for example "content: '\\00d7';" should become "content: '\\\\00d7';". -You can read more about this here: -https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences`; - var UNDEFINED_AS_OBJECT_KEY_ERROR = "You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key)."; - var hyphenateRegex = /[A-Z]|^ms/g; - var animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g; - var isCustomProperty = function isCustomProperty2(property) { - return property.charCodeAt(1) === 45; - }; - var isProcessableValue = function isProcessableValue2(value) { - return value != null && typeof value !== "boolean"; - }; - var processStyleName = /* @__PURE__ */ memoize__default["default"](function(styleName) { - return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, "-$&").toLowerCase(); - }); - var processStyleValue = function processStyleValue2(key, value) { - switch (key) { - case "animation": - case "animationName": { - if (typeof value === "string") { - return value.replace(animationRegex, function(match, p1, p2) { - cursor = { - name: p1, - styles: p2, - next: cursor - }; - return p1; - }); - } - } - } - if (unitless__default["default"][key] !== 1 && !isCustomProperty(key) && typeof value === "number" && value !== 0) { - return value + "px"; - } - return value; - }; - if (true) { - contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\(|(no-)?(open|close)-quote/; - contentValues = ["normal", "none", "initial", "inherit", "unset"]; - oldProcessStyleValue = processStyleValue; - msPattern = /^-ms-/; - hyphenPattern = /-(.)/g; - hyphenatedCache = {}; - processStyleValue = function processStyleValue2(key, value) { - if (key === "content") { - if (typeof value !== "string" || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '"' && value.charAt(0) !== "'")) { - throw new Error("You seem to be using a value for 'content' without quotes, try replacing it with `content: '\"" + value + "\"'`"); - } - } - var processed = oldProcessStyleValue(key, value); - if (processed !== "" && !isCustomProperty(key) && key.indexOf("-") !== -1 && hyphenatedCache[key] === void 0) { - hyphenatedCache[key] = true; - console.error("Using kebab-case for css properties in objects is not supported. Did you mean " + key.replace(msPattern, "ms-").replace(hyphenPattern, function(str, _char) { - return _char.toUpperCase(); - }) + "?"); - } - return processed; - }; - } - var contentValuePattern; - var contentValues; - var oldProcessStyleValue; - var msPattern; - var hyphenPattern; - var hyphenatedCache; - var noComponentSelectorMessage = "Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform."; - function handleInterpolation(mergedProps, registered, interpolation) { - if (interpolation == null) { - return ""; - } - if (interpolation.__emotion_styles !== void 0) { - if (interpolation.toString() === "NO_COMPONENT_SELECTOR") { - throw new Error(noComponentSelectorMessage); - } - return interpolation; - } - switch (typeof interpolation) { - case "boolean": { - return ""; - } - case "object": { - if (interpolation.anim === 1) { - cursor = { - name: interpolation.name, - styles: interpolation.styles, - next: cursor - }; - return interpolation.name; - } - if (interpolation.styles !== void 0) { - var next = interpolation.next; - if (next !== void 0) { - while (next !== void 0) { - cursor = { - name: next.name, - styles: next.styles, - next: cursor - }; - next = next.next; - } - } - var styles = interpolation.styles + ";"; - if (interpolation.map !== void 0) { - styles += interpolation.map; - } - return styles; - } - return createStringFromObject(mergedProps, registered, interpolation); - } - case "function": { - if (mergedProps !== void 0) { - var previousCursor = cursor; - var result = interpolation(mergedProps); - cursor = previousCursor; - return handleInterpolation(mergedProps, registered, result); - } else if (true) { - console.error("Functions that are interpolated in css calls will be stringified.\nIf you want to have a css call based on props, create a function that returns a css call like this\nlet dynamicStyle = (props) => css`color: ${props.color}`\nIt can be called directly with props or interpolated in a styled call like this\nlet SomeComponent = styled('div')`${dynamicStyle}`"); - } - break; - } - case "string": - if (true) { - var matched = []; - var replaced = interpolation.replace(animationRegex, function(match, p1, p2) { - var fakeVarName = "animation" + matched.length; - matched.push("const " + fakeVarName + " = keyframes`" + p2.replace(/^@keyframes animation-\w+/, "") + "`"); - return "${" + fakeVarName + "}"; - }); - if (matched.length) { - console.error("`keyframes` output got interpolated into plain string, please wrap it with `css`.\n\nInstead of doing this:\n\n" + [].concat(matched, ["`" + replaced + "`"]).join("\n") + "\n\nYou should wrap it with `css` like this:\n\n" + ("css`" + replaced + "`")); - } - } - break; - } - if (registered == null) { - return interpolation; - } - var cached = registered[interpolation]; - return cached !== void 0 ? cached : interpolation; - } - function createStringFromObject(mergedProps, registered, obj) { - var string = ""; - if (Array.isArray(obj)) { - for (var i2 = 0; i2 < obj.length; i2++) { - string += handleInterpolation(mergedProps, registered, obj[i2]) + ";"; - } - } else { - for (var _key in obj) { - var value = obj[_key]; - if (typeof value !== "object") { - if (registered != null && registered[value] !== void 0) { - string += _key + "{" + registered[value] + "}"; - } else if (isProcessableValue(value)) { - string += processStyleName(_key) + ":" + processStyleValue(_key, value) + ";"; - } - } else { - if (_key === "NO_COMPONENT_SELECTOR" && true) { - throw new Error(noComponentSelectorMessage); - } - if (Array.isArray(value) && typeof value[0] === "string" && (registered == null || registered[value[0]] === void 0)) { - for (var _i = 0; _i < value.length; _i++) { - if (isProcessableValue(value[_i])) { - string += processStyleName(_key) + ":" + processStyleValue(_key, value[_i]) + ";"; - } - } - } else { - var interpolated = handleInterpolation(mergedProps, registered, value); - switch (_key) { - case "animation": - case "animationName": { - string += processStyleName(_key) + ":" + interpolated + ";"; - break; - } - default: { - if (_key === "undefined") { - console.error(UNDEFINED_AS_OBJECT_KEY_ERROR); - } - string += _key + "{" + interpolated + "}"; - } - } - } - } - } - } - return string; - } - var labelPattern = /label:\s*([^\s;\n{]+)\s*(;|$)/g; - var sourceMapPattern; - if (true) { - sourceMapPattern = /\/\*#\ssourceMappingURL=data:application\/json;\S+\s+\*\//g; - } - var cursor; - var serializeStyles = function serializeStyles2(args, registered, mergedProps) { - if (args.length === 1 && typeof args[0] === "object" && args[0] !== null && args[0].styles !== void 0) { - return args[0]; - } - var stringMode = true; - var styles = ""; - cursor = void 0; - var strings = args[0]; - if (strings == null || strings.raw === void 0) { - stringMode = false; - styles += handleInterpolation(mergedProps, registered, strings); - } else { - if (strings[0] === void 0) { - console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR); - } - styles += strings[0]; - } - for (var i2 = 1; i2 < args.length; i2++) { - styles += handleInterpolation(mergedProps, registered, args[i2]); - if (stringMode) { - if (strings[i2] === void 0) { - console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR); - } - styles += strings[i2]; - } - } - var sourceMap; - if (true) { - styles = styles.replace(sourceMapPattern, function(match2) { - sourceMap = match2; - return ""; - }); - } - labelPattern.lastIndex = 0; - var identifierName = ""; - var match; - while ((match = labelPattern.exec(styles)) !== null) { - identifierName += "-" + match[1]; - } - var name = hashString__default["default"](styles) + identifierName; - if (true) { - return { - name, - styles, - map: sourceMap, - next: cursor, - toString: function toString() { - return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; - } - }; - } - return { - name, - styles, - next: cursor - }; - }; - exports.serializeStyles = serializeStyles; - } -}); - -// node_modules/@emotion/react/node_modules/@emotion/serialize/dist/emotion-serialize.cjs.js -var require_emotion_serialize_cjs = __commonJS({ - "node_modules/@emotion/react/node_modules/@emotion/serialize/dist/emotion-serialize.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_emotion_serialize_cjs_dev(); - } - } -}); - -// node_modules/@emotion/react/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.cjs.dev.js -var require_emotion_use_insertion_effect_with_fallbacks_cjs_dev = __commonJS({ - "node_modules/@emotion/react/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var React49 = require_react(); - function _interopNamespace(e) { - if (e && e.__esModule) - return e; - var n2 = /* @__PURE__ */ Object.create(null); - if (e) { - Object.keys(e).forEach(function(k2) { - if (k2 !== "default") { - var d2 = Object.getOwnPropertyDescriptor(e, k2); - Object.defineProperty(n2, k2, d2.get ? d2 : { - enumerable: true, - get: function() { - return e[k2]; - } - }); - } - }); - } - n2["default"] = e; - return Object.freeze(n2); - } - var React__namespace = /* @__PURE__ */ _interopNamespace(React49); - var isBrowser = typeof document !== "undefined"; - var syncFallback = function syncFallback2(create) { - return create(); - }; - var useInsertionEffect = React__namespace["useInsertionEffect"] ? React__namespace["useInsertionEffect"] : false; - var useInsertionEffectAlwaysWithSyncFallback = !isBrowser ? syncFallback : useInsertionEffect || syncFallback; - var useInsertionEffectWithLayoutFallback = useInsertionEffect || React__namespace.useLayoutEffect; - exports.useInsertionEffectAlwaysWithSyncFallback = useInsertionEffectAlwaysWithSyncFallback; - exports.useInsertionEffectWithLayoutFallback = useInsertionEffectWithLayoutFallback; - } -}); - -// node_modules/@emotion/react/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.cjs.js -var require_emotion_use_insertion_effect_with_fallbacks_cjs = __commonJS({ - "node_modules/@emotion/react/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_emotion_use_insertion_effect_with_fallbacks_cjs_dev(); - } - } -}); - -// node_modules/@emotion/react/dist/emotion-element-48d2c2e4.cjs.dev.js -var require_emotion_element_48d2c2e4_cjs_dev = __commonJS({ - "node_modules/@emotion/react/dist/emotion-element-48d2c2e4.cjs.dev.js"(exports) { - "use strict"; - var React49 = require_react(); - var createCache = require_emotion_cache_cjs(); - var _extends2 = require_extends(); - var weakMemoize = require_emotion_weak_memoize_cjs(); - var _isolatedHnrs_dist_emotionReact_isolatedHnrs = require_emotion_react_isolated_hnrs_cjs_dev(); - var utils = require_emotion_utils_cjs(); - var serialize2 = require_emotion_serialize_cjs(); - var useInsertionEffectWithFallbacks = require_emotion_use_insertion_effect_with_fallbacks_cjs(); - function _interopDefault(e) { - return e && e.__esModule ? e : { "default": e }; - } - function _interopNamespace(e) { - if (e && e.__esModule) - return e; - var n2 = /* @__PURE__ */ Object.create(null); - if (e) { - Object.keys(e).forEach(function(k2) { - if (k2 !== "default") { - var d2 = Object.getOwnPropertyDescriptor(e, k2); - Object.defineProperty(n2, k2, d2.get ? d2 : { - enumerable: true, - get: function() { - return e[k2]; - } - }); - } - }); - } - n2["default"] = e; - return Object.freeze(n2); - } - var React__namespace = /* @__PURE__ */ _interopNamespace(React49); - var createCache__default = /* @__PURE__ */ _interopDefault(createCache); - var weakMemoize__default = /* @__PURE__ */ _interopDefault(weakMemoize); - var isBrowser = typeof document !== "undefined"; - var hasOwnProperty = {}.hasOwnProperty; - var EmotionCacheContext = /* @__PURE__ */ React__namespace.createContext( - typeof HTMLElement !== "undefined" ? /* @__PURE__ */ createCache__default["default"]({ - key: "css" - }) : null - ); - if (true) { - EmotionCacheContext.displayName = "EmotionCacheContext"; - } - var CacheProvider2 = EmotionCacheContext.Provider; - var __unsafe_useEmotionCache2 = function useEmotionCache() { - return React49.useContext(EmotionCacheContext); - }; - exports.withEmotionCache = function withEmotionCache2(func) { - return /* @__PURE__ */ React49.forwardRef(function(props, ref) { - var cache = React49.useContext(EmotionCacheContext); - return func(props, cache, ref); - }); - }; - if (!isBrowser) { - exports.withEmotionCache = function withEmotionCache2(func) { - return function(props) { - var cache = React49.useContext(EmotionCacheContext); - if (cache === null) { - cache = createCache__default["default"]({ - key: "css" - }); - return /* @__PURE__ */ React__namespace.createElement(EmotionCacheContext.Provider, { - value: cache - }, func(props, cache)); - } else { - return func(props, cache); - } - }; - }; - } - var ThemeContext2 = /* @__PURE__ */ React__namespace.createContext({}); - if (true) { - ThemeContext2.displayName = "EmotionThemeContext"; - } - var useTheme2 = function useTheme3() { - return React__namespace.useContext(ThemeContext2); - }; - var getTheme = function getTheme2(outerTheme, theme) { - if (typeof theme === "function") { - var mergedTheme = theme(outerTheme); - if (mergedTheme == null || typeof mergedTheme !== "object" || Array.isArray(mergedTheme)) { - throw new Error("[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!"); - } - return mergedTheme; - } - if (theme == null || typeof theme !== "object" || Array.isArray(theme)) { - throw new Error("[ThemeProvider] Please make your theme prop a plain object"); - } - return _extends2({}, outerTheme, theme); - }; - var createCacheWithTheme = /* @__PURE__ */ weakMemoize__default["default"](function(outerTheme) { - return weakMemoize__default["default"](function(theme) { - return getTheme(outerTheme, theme); - }); - }); - var ThemeProvider2 = function ThemeProvider3(props) { - var theme = React__namespace.useContext(ThemeContext2); - if (props.theme !== theme) { - theme = createCacheWithTheme(theme)(props.theme); - } - return /* @__PURE__ */ React__namespace.createElement(ThemeContext2.Provider, { - value: theme - }, props.children); - }; - function withTheme2(Component) { - var componentName = Component.displayName || Component.name || "Component"; - var render = function render2(props, ref) { - var theme = React__namespace.useContext(ThemeContext2); - return /* @__PURE__ */ React__namespace.createElement(Component, _extends2({ - theme, - ref - }, props)); - }; - var WithTheme = /* @__PURE__ */ React__namespace.forwardRef(render); - WithTheme.displayName = "WithTheme(" + componentName + ")"; - return _isolatedHnrs_dist_emotionReact_isolatedHnrs["default"](WithTheme, Component); - } - var getLastPart = function getLastPart2(functionName) { - var parts = functionName.split("."); - return parts[parts.length - 1]; - }; - var getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine2(line) { - var match = /^\s+at\s+([A-Za-z0-9$.]+)\s/.exec(line); - if (match) - return getLastPart(match[1]); - match = /^([A-Za-z0-9$.]+)@/.exec(line); - if (match) - return getLastPart(match[1]); - return void 0; - }; - var internalReactFunctionNames = /* @__PURE__ */ new Set(["renderWithHooks", "processChild", "finishClassComponent", "renderToString"]); - var sanitizeIdentifier = function sanitizeIdentifier2(identifier) { - return identifier.replace(/\$/g, "-"); - }; - var getLabelFromStackTrace = function getLabelFromStackTrace2(stackTrace) { - if (!stackTrace) - return void 0; - var lines = stackTrace.split("\n"); - for (var i2 = 0; i2 < lines.length; i2++) { - var functionName = getFunctionNameFromStackTraceLine(lines[i2]); - if (!functionName) - continue; - if (internalReactFunctionNames.has(functionName)) - break; - if (/^[A-Z]/.test(functionName)) - return sanitizeIdentifier(functionName); - } - return void 0; - }; - var typePropName = "__EMOTION_TYPE_PLEASE_DO_NOT_USE__"; - var labelPropName = "__EMOTION_LABEL_PLEASE_DO_NOT_USE__"; - var createEmotionProps = function createEmotionProps2(type, props) { - if (typeof props.css === "string" && props.css.indexOf(":") !== -1) { - throw new Error("Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`" + props.css + "`"); - } - var newProps = {}; - for (var key in props) { - if (hasOwnProperty.call(props, key)) { - newProps[key] = props[key]; - } - } - newProps[typePropName] = type; - if (!!props.css && (typeof props.css !== "object" || typeof props.css.name !== "string" || props.css.name.indexOf("-") === -1)) { - var label = getLabelFromStackTrace(new Error().stack); - if (label) - newProps[labelPropName] = label; - } - return newProps; - }; - var Insertion = function Insertion2(_ref) { - var cache = _ref.cache, serialized = _ref.serialized, isStringTag = _ref.isStringTag; - utils.registerStyles(cache, serialized, isStringTag); - var rules = useInsertionEffectWithFallbacks.useInsertionEffectAlwaysWithSyncFallback(function() { - return utils.insertStyles(cache, serialized, isStringTag); - }); - if (!isBrowser && rules !== void 0) { - var _ref2; - var serializedNames = serialized.name; - var next = serialized.next; - while (next !== void 0) { - serializedNames += " " + next.name; - next = next.next; - } - return /* @__PURE__ */ React__namespace.createElement("style", (_ref2 = {}, _ref2["data-emotion"] = cache.key + " " + serializedNames, _ref2.dangerouslySetInnerHTML = { - __html: rules - }, _ref2.nonce = cache.sheet.nonce, _ref2)); - } - return null; - }; - var Emotion = /* @__PURE__ */ exports.withEmotionCache(function(props, cache, ref) { - var cssProp = props.css; - if (typeof cssProp === "string" && cache.registered[cssProp] !== void 0) { - cssProp = cache.registered[cssProp]; - } - var WrappedComponent = props[typePropName]; - var registeredStyles = [cssProp]; - var className = ""; - if (typeof props.className === "string") { - className = utils.getRegisteredStyles(cache.registered, registeredStyles, props.className); - } else if (props.className != null) { - className = props.className + " "; - } - var serialized = serialize2.serializeStyles(registeredStyles, void 0, React__namespace.useContext(ThemeContext2)); - if (serialized.name.indexOf("-") === -1) { - var labelFromStack = props[labelPropName]; - if (labelFromStack) { - serialized = serialize2.serializeStyles([serialized, "label:" + labelFromStack + ";"]); - } - } - className += cache.key + "-" + serialized.name; - var newProps = {}; - for (var key in props) { - if (hasOwnProperty.call(props, key) && key !== "css" && key !== typePropName && key !== labelPropName) { - newProps[key] = props[key]; - } - } - newProps.ref = ref; - newProps.className = className; - return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(Insertion, { - cache, - serialized, - isStringTag: typeof WrappedComponent === "string" - }), /* @__PURE__ */ React__namespace.createElement(WrappedComponent, newProps)); - }); - if (true) { - Emotion.displayName = "EmotionCssPropInternal"; - } - var Emotion$1 = Emotion; - exports.CacheProvider = CacheProvider2; - exports.Emotion = Emotion$1; - exports.ThemeContext = ThemeContext2; - exports.ThemeProvider = ThemeProvider2; - exports.__unsafe_useEmotionCache = __unsafe_useEmotionCache2; - exports.createEmotionProps = createEmotionProps; - exports.hasOwnProperty = hasOwnProperty; - exports.isBrowser = isBrowser; - exports.useTheme = useTheme2; - exports.withTheme = withTheme2; - } -}); - -// node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.cjs.dev.js -var require_emotion_react_jsx_runtime_cjs_dev = __commonJS({ - "node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var ReactJSXRuntime = require_jsx_runtime(); - var emotionElement = require_emotion_element_48d2c2e4_cjs_dev(); - require_react(); - require_emotion_cache_cjs(); - require_extends(); - require_emotion_weak_memoize_cjs(); - require_emotion_react_isolated_hnrs_cjs_dev(); - require_hoist_non_react_statics_cjs(); - require_emotion_utils_cjs(); - require_emotion_serialize_cjs(); - require_emotion_use_insertion_effect_with_fallbacks_cjs(); - function _interopNamespace(e) { - if (e && e.__esModule) - return e; - var n2 = /* @__PURE__ */ Object.create(null); - if (e) { - Object.keys(e).forEach(function(k2) { - if (k2 !== "default") { - var d2 = Object.getOwnPropertyDescriptor(e, k2); - Object.defineProperty(n2, k2, d2.get ? d2 : { - enumerable: true, - get: function() { - return e[k2]; - } - }); - } - }); - } - n2["default"] = e; - return Object.freeze(n2); - } - var ReactJSXRuntime__namespace = /* @__PURE__ */ _interopNamespace(ReactJSXRuntime); - var Fragment2 = ReactJSXRuntime__namespace.Fragment; - function jsx3(type, props, key) { - if (!emotionElement.hasOwnProperty.call(props, "css")) { - return ReactJSXRuntime__namespace.jsx(type, props, key); - } - return ReactJSXRuntime__namespace.jsx(emotionElement.Emotion, emotionElement.createEmotionProps(type, props), key); - } - function jsxs2(type, props, key) { - if (!emotionElement.hasOwnProperty.call(props, "css")) { - return ReactJSXRuntime__namespace.jsxs(type, props, key); - } - return ReactJSXRuntime__namespace.jsxs(emotionElement.Emotion, emotionElement.createEmotionProps(type, props), key); - } - exports.Fragment = Fragment2; - exports.jsx = jsx3; - exports.jsxs = jsxs2; - } -}); - -// node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js -var require_emotion_react_jsx_runtime_cjs = __commonJS({ - "node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_emotion_react_jsx_runtime_cjs_dev(); - } - } -}); - -// node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js -var require_use_sync_external_store_shim_development = __commonJS({ - "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"(exports) { - "use strict"; - if (true) { - (function() { - "use strict"; - if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { - __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); - } - var React49 = require_react(); - var ReactSharedInternals = React49.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; - function error(format) { - { - { - for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - args[_key2 - 1] = arguments[_key2]; - } - printWarning("error", format, args); - } - } - } - function printWarning(level, format, args) { - { - var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; - var stack = ReactDebugCurrentFrame.getStackAddendum(); - if (stack !== "") { - format += "%s"; - args = args.concat([stack]); - } - var argsWithFormat = args.map(function(item) { - return String(item); - }); - argsWithFormat.unshift("Warning: " + format); - Function.prototype.apply.call(console[level], console, argsWithFormat); - } - } - function is(x2, y2) { - return x2 === y2 && (x2 !== 0 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2; - } - var objectIs = typeof Object.is === "function" ? Object.is : is; - var useState2 = React49.useState, useEffect2 = React49.useEffect, useLayoutEffect2 = React49.useLayoutEffect, useDebugValue2 = React49.useDebugValue; - var didWarnOld18Alpha = false; - var didWarnUncachedGetSnapshot = false; - function useSyncExternalStore3(subscribe2, getSnapshot, getServerSnapshot) { - { - if (!didWarnOld18Alpha) { - if (React49.startTransition !== void 0) { - didWarnOld18Alpha = true; - error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."); - } - } - } - var value = getSnapshot(); - { - if (!didWarnUncachedGetSnapshot) { - var cachedValue = getSnapshot(); - if (!objectIs(value, cachedValue)) { - error("The result of getSnapshot should be cached to avoid an infinite loop"); - didWarnUncachedGetSnapshot = true; - } - } - } - var _useState = useState2({ - inst: { - value, - getSnapshot - } - }), inst = _useState[0].inst, forceUpdate = _useState[1]; - useLayoutEffect2(function() { - inst.value = value; - inst.getSnapshot = getSnapshot; - if (checkIfSnapshotChanged(inst)) { - forceUpdate({ - inst - }); - } - }, [subscribe2, value, getSnapshot]); - useEffect2(function() { - if (checkIfSnapshotChanged(inst)) { - forceUpdate({ - inst - }); - } - var handleStoreChange = function() { - if (checkIfSnapshotChanged(inst)) { - forceUpdate({ - inst - }); - } - }; - return subscribe2(handleStoreChange); - }, [subscribe2]); - useDebugValue2(value); - return value; - } - function checkIfSnapshotChanged(inst) { - var latestGetSnapshot = inst.getSnapshot; - var prevValue = inst.value; - try { - var nextValue = latestGetSnapshot(); - return !objectIs(prevValue, nextValue); - } catch (error2) { - return true; - } - } - function useSyncExternalStore$1(subscribe2, getSnapshot, getServerSnapshot) { - return getSnapshot(); - } - var canUseDOM2 = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"); - var isServerEnvironment = !canUseDOM2; - var shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore3; - var useSyncExternalStore$2 = React49.useSyncExternalStore !== void 0 ? React49.useSyncExternalStore : shim; - exports.useSyncExternalStore = useSyncExternalStore$2; - if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") { - __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); - } - })(); - } - } -}); - -// node_modules/use-sync-external-store/shim/index.js -var require_shim = __commonJS({ - "node_modules/use-sync-external-store/shim/index.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_use_sync_external_store_shim_development(); - } - } -}); - -// node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js -var require_with_selector_development = __commonJS({ - "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js"(exports) { - "use strict"; - if (true) { - (function() { - "use strict"; - if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { - __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); - } - var React49 = require_react(); - var shim = require_shim(); - function is(x2, y2) { - return x2 === y2 && (x2 !== 0 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2; - } - var objectIs = typeof Object.is === "function" ? Object.is : is; - var useSyncExternalStore3 = shim.useSyncExternalStore; - var useRef3 = React49.useRef, useEffect2 = React49.useEffect, useMemo3 = React49.useMemo, useDebugValue2 = React49.useDebugValue; - function useSyncExternalStoreWithSelector3(subscribe2, getSnapshot, getServerSnapshot, selector, isEqual) { - var instRef = useRef3(null); - var inst; - if (instRef.current === null) { - inst = { - hasValue: false, - value: null - }; - instRef.current = inst; - } else { - inst = instRef.current; - } - var _useMemo = useMemo3(function() { - var hasMemo = false; - var memoizedSnapshot; - var memoizedSelection; - var memoizedSelector = function(nextSnapshot) { - if (!hasMemo) { - hasMemo = true; - memoizedSnapshot = nextSnapshot; - var _nextSelection = selector(nextSnapshot); - if (isEqual !== void 0) { - if (inst.hasValue) { - var currentSelection = inst.value; - if (isEqual(currentSelection, _nextSelection)) { - memoizedSelection = currentSelection; - return currentSelection; - } - } - } - memoizedSelection = _nextSelection; - return _nextSelection; - } - var prevSnapshot = memoizedSnapshot; - var prevSelection = memoizedSelection; - if (objectIs(prevSnapshot, nextSnapshot)) { - return prevSelection; - } - var nextSelection = selector(nextSnapshot); - if (isEqual !== void 0 && isEqual(prevSelection, nextSelection)) { - return prevSelection; - } - memoizedSnapshot = nextSnapshot; - memoizedSelection = nextSelection; - return nextSelection; - }; - var maybeGetServerSnapshot = getServerSnapshot === void 0 ? null : getServerSnapshot; - var getSnapshotWithSelector = function() { - return memoizedSelector(getSnapshot()); - }; - var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? void 0 : function() { - return memoizedSelector(maybeGetServerSnapshot()); - }; - return [getSnapshotWithSelector, getServerSnapshotWithSelector]; - }, [getSnapshot, getServerSnapshot, selector, isEqual]), getSelection = _useMemo[0], getServerSelection = _useMemo[1]; - var value = useSyncExternalStore3(subscribe2, getSelection, getServerSelection); - useEffect2(function() { - inst.hasValue = true; - inst.value = value; - }, [value]); - useDebugValue2(value); - return value; - } - exports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector3; - if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") { - __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); - } - })(); - } - } -}); - -// node_modules/use-sync-external-store/shim/with-selector.js -var require_with_selector = __commonJS({ - "node_modules/use-sync-external-store/shim/with-selector.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_with_selector_development(); - } - } -}); - -// node_modules/react-is/cjs/react-is.development.js -var require_react_is_development2 = __commonJS({ - "node_modules/react-is/cjs/react-is.development.js"(exports) { - "use strict"; - if (true) { - (function() { - "use strict"; - var REACT_ELEMENT_TYPE = Symbol.for("react.element"); - var REACT_PORTAL_TYPE = Symbol.for("react.portal"); - var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"); - var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"); - var REACT_PROFILER_TYPE = Symbol.for("react.profiler"); - var REACT_PROVIDER_TYPE = Symbol.for("react.provider"); - var REACT_CONTEXT_TYPE = Symbol.for("react.context"); - var REACT_SERVER_CONTEXT_TYPE = Symbol.for("react.server_context"); - var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"); - var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"); - var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"); - var REACT_MEMO_TYPE = Symbol.for("react.memo"); - var REACT_LAZY_TYPE = Symbol.for("react.lazy"); - var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen"); - var enableScopeAPI = false; - var enableCacheElement = false; - var enableTransitionTracing = false; - var enableLegacyHidden = false; - var enableDebugTracing = false; - var REACT_MODULE_REFERENCE; - { - REACT_MODULE_REFERENCE = Symbol.for("react.module.reference"); - } - function isValidElementType2(type) { - if (typeof type === "string" || typeof type === "function") { - return true; - } - if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) { - return true; - } - if (typeof type === "object" && type !== null) { - if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) { - return true; - } - } - return false; - } - function typeOf(object) { - if (typeof object === "object" && object !== null) { - var $$typeof = object.$$typeof; - switch ($$typeof) { - case REACT_ELEMENT_TYPE: - var type = object.type; - switch (type) { - case REACT_FRAGMENT_TYPE: - case REACT_PROFILER_TYPE: - case REACT_STRICT_MODE_TYPE: - case REACT_SUSPENSE_TYPE: - case REACT_SUSPENSE_LIST_TYPE: - return type; - default: - var $$typeofType = type && type.$$typeof; - switch ($$typeofType) { - case REACT_SERVER_CONTEXT_TYPE: - case REACT_CONTEXT_TYPE: - case REACT_FORWARD_REF_TYPE: - case REACT_LAZY_TYPE: - case REACT_MEMO_TYPE: - case REACT_PROVIDER_TYPE: - return $$typeofType; - default: - return $$typeof; - } - } - case REACT_PORTAL_TYPE: - return $$typeof; - } - } - return void 0; - } - var ContextConsumer = REACT_CONTEXT_TYPE; - var ContextProvider = REACT_PROVIDER_TYPE; - var Element = REACT_ELEMENT_TYPE; - var ForwardRef = REACT_FORWARD_REF_TYPE; - var Fragment2 = REACT_FRAGMENT_TYPE; - var Lazy = REACT_LAZY_TYPE; - var Memo = REACT_MEMO_TYPE; - var Portal = REACT_PORTAL_TYPE; - var Profiler = REACT_PROFILER_TYPE; - var StrictMode = REACT_STRICT_MODE_TYPE; - var Suspense = REACT_SUSPENSE_TYPE; - var SuspenseList = REACT_SUSPENSE_LIST_TYPE; - var hasWarnedAboutDeprecatedIsAsyncMode = false; - var hasWarnedAboutDeprecatedIsConcurrentMode = false; - function isAsyncMode(object) { - { - if (!hasWarnedAboutDeprecatedIsAsyncMode) { - hasWarnedAboutDeprecatedIsAsyncMode = true; - console["warn"]("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 18+."); - } - } - return false; - } - function isConcurrentMode(object) { - { - if (!hasWarnedAboutDeprecatedIsConcurrentMode) { - hasWarnedAboutDeprecatedIsConcurrentMode = true; - console["warn"]("The ReactIs.isConcurrentMode() alias has been deprecated, and will be removed in React 18+."); - } - } - return false; - } - function isContextConsumer2(object) { - return typeOf(object) === REACT_CONTEXT_TYPE; - } - function isContextProvider(object) { - return typeOf(object) === REACT_PROVIDER_TYPE; - } - function isElement(object) { - return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; - } - function isForwardRef(object) { - return typeOf(object) === REACT_FORWARD_REF_TYPE; - } - function isFragment(object) { - return typeOf(object) === REACT_FRAGMENT_TYPE; - } - function isLazy(object) { - return typeOf(object) === REACT_LAZY_TYPE; - } - function isMemo(object) { - return typeOf(object) === REACT_MEMO_TYPE; - } - function isPortal(object) { - return typeOf(object) === REACT_PORTAL_TYPE; - } - function isProfiler(object) { - return typeOf(object) === REACT_PROFILER_TYPE; - } - function isStrictMode(object) { - return typeOf(object) === REACT_STRICT_MODE_TYPE; - } - function isSuspense(object) { - return typeOf(object) === REACT_SUSPENSE_TYPE; - } - function isSuspenseList(object) { - return typeOf(object) === REACT_SUSPENSE_LIST_TYPE; - } - exports.ContextConsumer = ContextConsumer; - exports.ContextProvider = ContextProvider; - exports.Element = Element; - exports.ForwardRef = ForwardRef; - exports.Fragment = Fragment2; - exports.Lazy = Lazy; - exports.Memo = Memo; - exports.Portal = Portal; - exports.Profiler = Profiler; - exports.StrictMode = StrictMode; - exports.Suspense = Suspense; - exports.SuspenseList = SuspenseList; - exports.isAsyncMode = isAsyncMode; - exports.isConcurrentMode = isConcurrentMode; - exports.isContextConsumer = isContextConsumer2; - exports.isContextProvider = isContextProvider; - exports.isElement = isElement; - exports.isForwardRef = isForwardRef; - exports.isFragment = isFragment; - exports.isLazy = isLazy; - exports.isMemo = isMemo; - exports.isPortal = isPortal; - exports.isProfiler = isProfiler; - exports.isStrictMode = isStrictMode; - exports.isSuspense = isSuspense; - exports.isSuspenseList = isSuspenseList; - exports.isValidElementType = isValidElementType2; - exports.typeOf = typeOf; - })(); - } - } -}); - -// node_modules/react-is/index.js -var require_react_is2 = __commonJS({ - "node_modules/react-is/index.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_react_is_development2(); - } - } -}); - -// node_modules/@emotion/react/dist/emotion-react.cjs.dev.js -var require_emotion_react_cjs_dev = __commonJS({ - "node_modules/@emotion/react/dist/emotion-react.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var emotionElement = require_emotion_element_48d2c2e4_cjs_dev(); - var React49 = require_react(); - var utils = require_emotion_utils_cjs(); - var useInsertionEffectWithFallbacks = require_emotion_use_insertion_effect_with_fallbacks_cjs(); - var serialize2 = require_emotion_serialize_cjs(); - require_emotion_cache_cjs(); - require_extends(); - require_emotion_weak_memoize_cjs(); - require_emotion_react_isolated_hnrs_cjs_dev(); - require_hoist_non_react_statics_cjs(); - function _interopNamespace(e) { - if (e && e.__esModule) - return e; - var n2 = /* @__PURE__ */ Object.create(null); - if (e) { - Object.keys(e).forEach(function(k2) { - if (k2 !== "default") { - var d2 = Object.getOwnPropertyDescriptor(e, k2); - Object.defineProperty(n2, k2, d2.get ? d2 : { - enumerable: true, - get: function() { - return e[k2]; - } - }); - } - }); - } - n2["default"] = e; - return Object.freeze(n2); - } - var React__namespace = /* @__PURE__ */ _interopNamespace(React49); - var pkg = { - name: "@emotion/react", - version: "11.11.0", - main: "dist/emotion-react.cjs.js", - module: "dist/emotion-react.esm.js", - browser: { - "./dist/emotion-react.esm.js": "./dist/emotion-react.browser.esm.js" - }, - exports: { - ".": { - module: { - worker: "./dist/emotion-react.worker.esm.js", - browser: "./dist/emotion-react.browser.esm.js", - "default": "./dist/emotion-react.esm.js" - }, - "import": "./dist/emotion-react.cjs.mjs", - "default": "./dist/emotion-react.cjs.js" - }, - "./jsx-runtime": { - module: { - worker: "./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js", - browser: "./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js", - "default": "./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js" - }, - "import": "./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs", - "default": "./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js" - }, - "./_isolated-hnrs": { - module: { - worker: "./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js", - browser: "./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js", - "default": "./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js" - }, - "import": "./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs", - "default": "./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js" - }, - "./jsx-dev-runtime": { - module: { - worker: "./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js", - browser: "./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js", - "default": "./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js" - }, - "import": "./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs", - "default": "./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js" - }, - "./package.json": "./package.json", - "./types/css-prop": "./types/css-prop.d.ts", - "./macro": { - types: { - "import": "./macro.d.mts", - "default": "./macro.d.ts" - }, - "default": "./macro.js" - } - }, - types: "types/index.d.ts", - files: [ - "src", - "dist", - "jsx-runtime", - "jsx-dev-runtime", - "_isolated-hnrs", - "types/*.d.ts", - "macro.*" - ], - sideEffects: false, - author: "Emotion Contributors", - license: "MIT", - scripts: { - "test:typescript": "dtslint types" - }, - dependencies: { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.2", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", - "hoist-non-react-statics": "^3.3.1" - }, - peerDependencies: { - react: ">=16.8.0" - }, - peerDependenciesMeta: { - "@types/react": { - optional: true - } - }, - devDependencies: { - "@definitelytyped/dtslint": "0.0.112", - "@emotion/css": "11.11.0", - "@emotion/css-prettifier": "1.1.3", - "@emotion/server": "11.11.0", - "@emotion/styled": "11.11.0", - "html-tag-names": "^1.1.2", - react: "16.14.0", - "svg-tag-names": "^1.1.1", - typescript: "^4.5.5" - }, - repository: "https://github.com/emotion-js/emotion/tree/main/packages/react", - publishConfig: { - access: "public" - }, - "umd:main": "dist/emotion-react.umd.min.js", - preconstruct: { - entrypoints: [ - "./index.js", - "./jsx-runtime.js", - "./jsx-dev-runtime.js", - "./_isolated-hnrs.js" - ], - umdName: "emotionReact", - exports: { - envConditions: [ - "browser", - "worker" - ], - extra: { - "./types/css-prop": "./types/css-prop.d.ts", - "./macro": { - types: { - "import": "./macro.d.mts", - "default": "./macro.d.ts" - }, - "default": "./macro.js" - } - } - } - } - }; - var jsx3 = function jsx4(type, props) { - var args = arguments; - if (props == null || !emotionElement.hasOwnProperty.call(props, "css")) { - return React__namespace.createElement.apply(void 0, args); - } - var argsLength = args.length; - var createElementArgArray = new Array(argsLength); - createElementArgArray[0] = emotionElement.Emotion; - createElementArgArray[1] = emotionElement.createEmotionProps(type, props); - for (var i2 = 2; i2 < argsLength; i2++) { - createElementArgArray[i2] = args[i2]; - } - return React__namespace.createElement.apply(null, createElementArgArray); - }; - var warnedAboutCssPropForGlobal = false; - var Global2 = /* @__PURE__ */ emotionElement.withEmotionCache(function(props, cache) { - if (!warnedAboutCssPropForGlobal && (props.className || props.css)) { - console.error("It looks like you're using the css prop on Global, did you mean to use the styles prop instead?"); - warnedAboutCssPropForGlobal = true; - } - var styles = props.styles; - var serialized = serialize2.serializeStyles([styles], void 0, React__namespace.useContext(emotionElement.ThemeContext)); - if (!emotionElement.isBrowser) { - var _ref; - var serializedNames = serialized.name; - var serializedStyles = serialized.styles; - var next = serialized.next; - while (next !== void 0) { - serializedNames += " " + next.name; - serializedStyles += next.styles; - next = next.next; - } - var shouldCache = cache.compat === true; - var rules = cache.insert("", { - name: serializedNames, - styles: serializedStyles - }, cache.sheet, shouldCache); - if (shouldCache) { - return null; - } - return /* @__PURE__ */ React__namespace.createElement("style", (_ref = {}, _ref["data-emotion"] = cache.key + "-global " + serializedNames, _ref.dangerouslySetInnerHTML = { - __html: rules - }, _ref.nonce = cache.sheet.nonce, _ref)); - } - var sheetRef = React__namespace.useRef(); - useInsertionEffectWithFallbacks.useInsertionEffectWithLayoutFallback(function() { - var key = cache.key + "-global"; - var sheet = new cache.sheet.constructor({ - key, - nonce: cache.sheet.nonce, - container: cache.sheet.container, - speedy: cache.sheet.isSpeedy - }); - var rehydrating = false; - var node = document.querySelector('style[data-emotion="' + key + " " + serialized.name + '"]'); - if (cache.sheet.tags.length) { - sheet.before = cache.sheet.tags[0]; - } - if (node !== null) { - rehydrating = true; - node.setAttribute("data-emotion", key); - sheet.hydrate([node]); - } - sheetRef.current = [sheet, rehydrating]; - return function() { - sheet.flush(); - }; - }, [cache]); - useInsertionEffectWithFallbacks.useInsertionEffectWithLayoutFallback(function() { - var sheetRefCurrent = sheetRef.current; - var sheet = sheetRefCurrent[0], rehydrating = sheetRefCurrent[1]; - if (rehydrating) { - sheetRefCurrent[1] = false; - return; - } - if (serialized.next !== void 0) { - utils.insertStyles(cache, serialized.next, true); - } - if (sheet.tags.length) { - var element = sheet.tags[sheet.tags.length - 1].nextElementSibling; - sheet.before = element; - sheet.flush(); - } - cache.insert("", serialized, sheet, false); - }, [cache, serialized.name]); - return null; - }); - if (true) { - Global2.displayName = "EmotionGlobal"; - } - function css2() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return serialize2.serializeStyles(args); - } - var keyframes2 = function keyframes3() { - var insertable = css2.apply(void 0, arguments); - var name = "animation-" + insertable.name; - return { - name, - styles: "@keyframes " + name + "{" + insertable.styles + "}", - anim: 1, - toString: function toString() { - return "_EMO_" + this.name + "_" + this.styles + "_EMO_"; - } - }; - }; - var classnames = function classnames2(args) { - var len = args.length; - var i2 = 0; - var cls = ""; - for (; i2 < len; i2++) { - var arg = args[i2]; - if (arg == null) - continue; - var toAdd = void 0; - switch (typeof arg) { - case "boolean": - break; - case "object": { - if (Array.isArray(arg)) { - toAdd = classnames2(arg); - } else { - if (arg.styles !== void 0 && arg.name !== void 0) { - console.error("You have passed styles created with `css` from `@emotion/react` package to the `cx`.\n`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component."); - } - toAdd = ""; - for (var k2 in arg) { - if (arg[k2] && k2) { - toAdd && (toAdd += " "); - toAdd += k2; - } - } - } - break; - } - default: { - toAdd = arg; - } - } - if (toAdd) { - cls && (cls += " "); - cls += toAdd; - } - } - return cls; - }; - function merge2(registered, css3, className) { - var registeredStyles = []; - var rawClassName = utils.getRegisteredStyles(registered, registeredStyles, className); - if (registeredStyles.length < 2) { - return className; - } - return rawClassName + css3(registeredStyles); - } - var Insertion = function Insertion2(_ref) { - var cache = _ref.cache, serializedArr = _ref.serializedArr; - var rules = useInsertionEffectWithFallbacks.useInsertionEffectAlwaysWithSyncFallback(function() { - var rules2 = ""; - for (var i2 = 0; i2 < serializedArr.length; i2++) { - var res = utils.insertStyles(cache, serializedArr[i2], false); - if (!emotionElement.isBrowser && res !== void 0) { - rules2 += res; - } - } - if (!emotionElement.isBrowser) { - return rules2; - } - }); - if (!emotionElement.isBrowser && rules.length !== 0) { - var _ref2; - return /* @__PURE__ */ React__namespace.createElement("style", (_ref2 = {}, _ref2["data-emotion"] = cache.key + " " + serializedArr.map(function(serialized) { - return serialized.name; - }).join(" "), _ref2.dangerouslySetInnerHTML = { - __html: rules - }, _ref2.nonce = cache.sheet.nonce, _ref2)); - } - return null; - }; - var ClassNames2 = /* @__PURE__ */ emotionElement.withEmotionCache(function(props, cache) { - var hasRendered = false; - var serializedArr = []; - var css3 = function css4() { - if (hasRendered && true) { - throw new Error("css can only be used during render"); - } - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - var serialized = serialize2.serializeStyles(args, cache.registered); - serializedArr.push(serialized); - utils.registerStyles(cache, serialized, false); - return cache.key + "-" + serialized.name; - }; - var cx = function cx2() { - if (hasRendered && true) { - throw new Error("cx can only be used during render"); - } - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - return merge2(cache.registered, css3, classnames(args)); - }; - var content = { - css: css3, - cx, - theme: React__namespace.useContext(emotionElement.ThemeContext) - }; - var ele = props.children(content); - hasRendered = true; - return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(Insertion, { - cache, - serializedArr - }), ele); - }); - if (true) { - ClassNames2.displayName = "EmotionClassNames"; - } - if (true) { - isBrowser = typeof document !== "undefined"; - isTestEnv = typeof jest !== "undefined" || typeof vi !== "undefined"; - if (isBrowser && !isTestEnv) { - globalContext = typeof globalThis !== "undefined" ? globalThis : isBrowser ? window : global; - globalKey = "__EMOTION_REACT_" + pkg.version.split(".")[0] + "__"; - if (globalContext[globalKey]) { - console.warn("You are loading @emotion/react when it is already loaded. Running multiple instances may cause problems. This can happen if multiple versions are used, or if multiple builds of the same version are used."); - } - globalContext[globalKey] = true; - } - } - var isBrowser; - var isTestEnv; - var globalContext; - var globalKey; - exports.CacheProvider = emotionElement.CacheProvider; - exports.ThemeContext = emotionElement.ThemeContext; - exports.ThemeProvider = emotionElement.ThemeProvider; - exports.__unsafe_useEmotionCache = emotionElement.__unsafe_useEmotionCache; - exports.useTheme = emotionElement.useTheme; - Object.defineProperty(exports, "withEmotionCache", { - enumerable: true, - get: function() { - return emotionElement.withEmotionCache; - } - }); - exports.withTheme = emotionElement.withTheme; - exports.ClassNames = ClassNames2; - exports.Global = Global2; - exports.createElement = jsx3; - exports.css = css2; - exports.jsx = jsx3; - exports.keyframes = keyframes2; - } -}); - -// node_modules/@emotion/react/dist/emotion-react.cjs.js -var require_emotion_react_cjs = __commonJS({ - "node_modules/@emotion/react/dist/emotion-react.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_emotion_react_cjs_dev(); - } - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/typeof.js -var require_typeof = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/typeof.js"(exports, module2) { - function _typeof(obj) { - "@babel/helpers - typeof"; - return module2.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) { - return typeof obj2; - } : function(obj2) { - return obj2 && "function" == typeof Symbol && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }, module2.exports.__esModule = true, module2.exports["default"] = module2.exports, _typeof(obj); - } - module2.exports = _typeof, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/toPrimitive.js -var require_toPrimitive = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/toPrimitive.js"(exports, module2) { - var _typeof = require_typeof()["default"]; - function _toPrimitive(input, hint) { - if (_typeof(input) !== "object" || input === null) - return input; - var prim = input[Symbol.toPrimitive]; - if (prim !== void 0) { - var res = prim.call(input, hint || "default"); - if (_typeof(res) !== "object") - return res; - throw new TypeError("@@toPrimitive must return a primitive value."); - } - return (hint === "string" ? String : Number)(input); - } - module2.exports = _toPrimitive, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/toPropertyKey.js -var require_toPropertyKey = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/toPropertyKey.js"(exports, module2) { - var _typeof = require_typeof()["default"]; - var toPrimitive = require_toPrimitive(); - function _toPropertyKey(arg) { - var key = toPrimitive(arg, "string"); - return _typeof(key) === "symbol" ? key : String(key); - } - module2.exports = _toPropertyKey, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/defineProperty.js -var require_defineProperty = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/defineProperty.js"(exports, module2) { - var toPropertyKey = require_toPropertyKey(); - function _defineProperty2(obj, key, value) { - key = toPropertyKey(key); - if (key in obj) { - Object.defineProperty(obj, key, { - value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - return obj; - } - module2.exports = _defineProperty2, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/objectSpread2.js -var require_objectSpread2 = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/objectSpread2.js"(exports, module2) { - var defineProperty = require_defineProperty(); - function ownKeys2(object, enumerableOnly) { - var keys = Object.keys(object); - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - enumerableOnly && (symbols = symbols.filter(function(sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - })), keys.push.apply(keys, symbols); - } - return keys; - } - function _objectSpread22(target) { - for (var i2 = 1; i2 < arguments.length; i2++) { - var source = null != arguments[i2] ? arguments[i2] : {}; - i2 % 2 ? ownKeys2(Object(source), true).forEach(function(key) { - defineProperty(target, key, source[key]); - }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys2(Object(source)).forEach(function(key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - return target; - } - module2.exports = _objectSpread22, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/arrayWithHoles.js -var require_arrayWithHoles = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/arrayWithHoles.js"(exports, module2) { - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) - return arr; - } - module2.exports = _arrayWithHoles, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js -var require_iterableToArrayLimit = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js"(exports, module2) { - function _iterableToArrayLimit(arr, i2) { - var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; - if (null != _i) { - var _s, _e, _x, _r, _arr = [], _n = true, _d = false; - try { - if (_x = (_i = _i.call(arr)).next, 0 === i2) { - if (Object(_i) !== _i) - return; - _n = false; - } else - for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i2); _n = true) - ; - } catch (err) { - _d = true, _e = err; - } finally { - try { - if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) - return; - } finally { - if (_d) - throw _e; - } - } - return _arr; - } - } - module2.exports = _iterableToArrayLimit, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/arrayLikeToArray.js -var require_arrayLikeToArray = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/arrayLikeToArray.js"(exports, module2) { - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) - len = arr.length; - for (var i2 = 0, arr2 = new Array(len); i2 < len; i2++) - arr2[i2] = arr[i2]; - return arr2; - } - module2.exports = _arrayLikeToArray, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js -var require_unsupportedIterableToArray = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js"(exports, module2) { - var arrayLikeToArray = require_arrayLikeToArray(); - function _unsupportedIterableToArray(o2, minLen) { - if (!o2) - return; - if (typeof o2 === "string") - return arrayLikeToArray(o2, minLen); - var n2 = Object.prototype.toString.call(o2).slice(8, -1); - if (n2 === "Object" && o2.constructor) - n2 = o2.constructor.name; - if (n2 === "Map" || n2 === "Set") - return Array.from(o2); - if (n2 === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n2)) - return arrayLikeToArray(o2, minLen); - } - module2.exports = _unsupportedIterableToArray, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/nonIterableRest.js -var require_nonIterableRest = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/nonIterableRest.js"(exports, module2) { - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - module2.exports = _nonIterableRest, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/slicedToArray.js -var require_slicedToArray = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/slicedToArray.js"(exports, module2) { - var arrayWithHoles = require_arrayWithHoles(); - var iterableToArrayLimit = require_iterableToArrayLimit(); - var unsupportedIterableToArray = require_unsupportedIterableToArray(); - var nonIterableRest = require_nonIterableRest(); - function _slicedToArray(arr, i2) { - return arrayWithHoles(arr) || iterableToArrayLimit(arr, i2) || unsupportedIterableToArray(arr, i2) || nonIterableRest(); - } - module2.exports = _slicedToArray, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js -var require_objectWithoutPropertiesLoose = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js"(exports, module2) { - function _objectWithoutPropertiesLoose2(source, excluded) { - if (source == null) - return {}; - var target = {}; - var sourceKeys = Object.keys(source); - var key, i2; - for (i2 = 0; i2 < sourceKeys.length; i2++) { - key = sourceKeys[i2]; - if (excluded.indexOf(key) >= 0) - continue; - target[key] = source[key]; - } - return target; - } - module2.exports = _objectWithoutPropertiesLoose2, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/objectWithoutProperties.js -var require_objectWithoutProperties = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/objectWithoutProperties.js"(exports, module2) { - var objectWithoutPropertiesLoose = require_objectWithoutPropertiesLoose(); - function _objectWithoutProperties(source, excluded) { - if (source == null) - return {}; - var target = objectWithoutPropertiesLoose(source, excluded); - var key, i2; - if (Object.getOwnPropertySymbols) { - var sourceSymbolKeys = Object.getOwnPropertySymbols(source); - for (i2 = 0; i2 < sourceSymbolKeys.length; i2++) { - key = sourceSymbolKeys[i2]; - if (excluded.indexOf(key) >= 0) - continue; - if (!Object.prototype.propertyIsEnumerable.call(source, key)) - continue; - target[key] = source[key]; - } - } - return target; - } - module2.exports = _objectWithoutProperties, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/dist/useStateManager-7748b351.cjs.dev.js -var require_useStateManager_7748b351_cjs_dev = __commonJS({ - "node_modules/react-select/dist/useStateManager-7748b351.cjs.dev.js"(exports) { - "use strict"; - var _objectSpread = require_objectSpread2(); - var _slicedToArray = require_slicedToArray(); - var _objectWithoutProperties = require_objectWithoutProperties(); - var React49 = require_react(); - var _excluded = ["defaultInputValue", "defaultMenuIsOpen", "defaultValue", "inputValue", "menuIsOpen", "onChange", "onInputChange", "onMenuClose", "onMenuOpen", "value"]; - function useStateManager(_ref) { - var _ref$defaultInputValu = _ref.defaultInputValue, defaultInputValue = _ref$defaultInputValu === void 0 ? "" : _ref$defaultInputValu, _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen, defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe, _ref$defaultValue = _ref.defaultValue, defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue, propsInputValue = _ref.inputValue, propsMenuIsOpen = _ref.menuIsOpen, propsOnChange = _ref.onChange, propsOnInputChange = _ref.onInputChange, propsOnMenuClose = _ref.onMenuClose, propsOnMenuOpen = _ref.onMenuOpen, propsValue = _ref.value, restSelectProps = _objectWithoutProperties(_ref, _excluded); - var _useState = React49.useState(propsInputValue !== void 0 ? propsInputValue : defaultInputValue), _useState2 = _slicedToArray(_useState, 2), stateInputValue = _useState2[0], setStateInputValue = _useState2[1]; - var _useState3 = React49.useState(propsMenuIsOpen !== void 0 ? propsMenuIsOpen : defaultMenuIsOpen), _useState4 = _slicedToArray(_useState3, 2), stateMenuIsOpen = _useState4[0], setStateMenuIsOpen = _useState4[1]; - var _useState5 = React49.useState(propsValue !== void 0 ? propsValue : defaultValue), _useState6 = _slicedToArray(_useState5, 2), stateValue = _useState6[0], setStateValue = _useState6[1]; - var onChange = React49.useCallback(function(value2, actionMeta) { - if (typeof propsOnChange === "function") { - propsOnChange(value2, actionMeta); - } - setStateValue(value2); - }, [propsOnChange]); - var onInputChange = React49.useCallback(function(value2, actionMeta) { - var newValue; - if (typeof propsOnInputChange === "function") { - newValue = propsOnInputChange(value2, actionMeta); - } - setStateInputValue(newValue !== void 0 ? newValue : value2); - }, [propsOnInputChange]); - var onMenuOpen = React49.useCallback(function() { - if (typeof propsOnMenuOpen === "function") { - propsOnMenuOpen(); - } - setStateMenuIsOpen(true); - }, [propsOnMenuOpen]); - var onMenuClose = React49.useCallback(function() { - if (typeof propsOnMenuClose === "function") { - propsOnMenuClose(); - } - setStateMenuIsOpen(false); - }, [propsOnMenuClose]); - var inputValue = propsInputValue !== void 0 ? propsInputValue : stateInputValue; - var menuIsOpen = propsMenuIsOpen !== void 0 ? propsMenuIsOpen : stateMenuIsOpen; - var value = propsValue !== void 0 ? propsValue : stateValue; - return _objectSpread(_objectSpread({}, restSelectProps), {}, { - inputValue, - menuIsOpen, - onChange, - onInputChange, - onMenuClose, - onMenuOpen, - value - }); - } - exports.useStateManager = useStateManager; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/extends.js -var require_extends2 = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/extends.js"(exports, module2) { - function _extends2() { - module2.exports = _extends2 = Object.assign ? Object.assign.bind() : function(target) { - for (var i2 = 1; i2 < arguments.length; i2++) { - var source = arguments[i2]; - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - return target; - }, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - return _extends2.apply(this, arguments); - } - module2.exports = _extends2, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/classCallCheck.js -var require_classCallCheck = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/classCallCheck.js"(exports, module2) { - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - module2.exports = _classCallCheck, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/createClass.js -var require_createClass = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/createClass.js"(exports, module2) { - var toPropertyKey = require_toPropertyKey(); - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; - } - module2.exports = _createClass, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/setPrototypeOf.js -var require_setPrototypeOf = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/setPrototypeOf.js"(exports, module2) { - function _setPrototypeOf(o2, p2) { - module2.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - return _setPrototypeOf(o2, p2); - } - module2.exports = _setPrototypeOf, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/inherits.js -var require_inherits = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/inherits.js"(exports, module2) { - var setPrototypeOf = require_setPrototypeOf(); - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - Object.defineProperty(subClass, "prototype", { - writable: false - }); - if (superClass) - setPrototypeOf(subClass, superClass); - } - module2.exports = _inherits, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/getPrototypeOf.js -var require_getPrototypeOf = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/getPrototypeOf.js"(exports, module2) { - function _getPrototypeOf(o2) { - module2.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - return _getPrototypeOf(o2); - } - module2.exports = _getPrototypeOf, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js -var require_isNativeReflectConstruct = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js"(exports, module2) { - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - module2.exports = _isNativeReflectConstruct, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/assertThisInitialized.js -var require_assertThisInitialized = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/assertThisInitialized.js"(exports, module2) { - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - module2.exports = _assertThisInitialized, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js -var require_possibleConstructorReturn = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"(exports, module2) { - var _typeof = require_typeof()["default"]; - var assertThisInitialized = require_assertThisInitialized(); - function _possibleConstructorReturn(self2, call2) { - if (call2 && (_typeof(call2) === "object" || typeof call2 === "function")) { - return call2; - } else if (call2 !== void 0) { - throw new TypeError("Derived constructors may only return object or undefined"); - } - return assertThisInitialized(self2); - } - module2.exports = _possibleConstructorReturn, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/createSuper.js -var require_createSuper = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/createSuper.js"(exports, module2) { - var getPrototypeOf = require_getPrototypeOf(); - var isNativeReflectConstruct = require_isNativeReflectConstruct(); - var possibleConstructorReturn = require_possibleConstructorReturn(); - function _createSuper(Derived) { - var hasNativeReflectConstruct = isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return possibleConstructorReturn(this, result); - }; - } - module2.exports = _createSuper, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js -var require_arrayWithoutHoles = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js"(exports, module2) { - var arrayLikeToArray = require_arrayLikeToArray(); - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) - return arrayLikeToArray(arr); - } - module2.exports = _arrayWithoutHoles, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/iterableToArray.js -var require_iterableToArray = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/iterableToArray.js"(exports, module2) { - function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) - return Array.from(iter); - } - module2.exports = _iterableToArray, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/nonIterableSpread.js -var require_nonIterableSpread = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/nonIterableSpread.js"(exports, module2) { - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - module2.exports = _nonIterableSpread, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/toConsumableArray.js -var require_toConsumableArray = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/toConsumableArray.js"(exports, module2) { - var arrayWithoutHoles = require_arrayWithoutHoles(); - var iterableToArray = require_iterableToArray(); - var unsupportedIterableToArray = require_unsupportedIterableToArray(); - var nonIterableSpread = require_nonIterableSpread(); - function _toConsumableArray(arr) { - return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread(); - } - module2.exports = _toConsumableArray, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/react-select/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js -var require_taggedTemplateLiteral = __commonJS({ - "node_modules/react-select/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js"(exports, module2) { - function _taggedTemplateLiteral(strings, raw) { - if (!raw) { - raw = strings.slice(0); - } - return Object.freeze(Object.defineProperties(strings, { - raw: { - value: Object.freeze(raw) - } - })); - } - module2.exports = _taggedTemplateLiteral, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/@floating-ui/core/dist/floating-ui.core.umd.js -var require_floating_ui_core_umd = __commonJS({ - "node_modules/@floating-ui/core/dist/floating-ui.core.umd.js"(exports, module2) { - (function(global2, factory) { - typeof exports === "object" && typeof module2 !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.FloatingUICore = {})); - })(exports, function(exports2) { - "use strict"; - function getAlignment(placement) { - return placement.split("-")[1]; - } - function getLengthFromAxis(axis) { - return axis === "y" ? "height" : "width"; - } - function getSide(placement) { - return placement.split("-")[0]; - } - function getMainAxisFromPlacement(placement) { - return ["top", "bottom"].includes(getSide(placement)) ? "x" : "y"; - } - function computeCoordsFromPlacement(_ref, placement, rtl) { - let { - reference, - floating - } = _ref; - const commonX = reference.x + reference.width / 2 - floating.width / 2; - const commonY = reference.y + reference.height / 2 - floating.height / 2; - const mainAxis = getMainAxisFromPlacement(placement); - const length = getLengthFromAxis(mainAxis); - const commonAlign = reference[length] / 2 - floating[length] / 2; - const side = getSide(placement); - const isVertical = mainAxis === "x"; - let coords; - switch (side) { - case "top": - coords = { - x: commonX, - y: reference.y - floating.height - }; - break; - case "bottom": - coords = { - x: commonX, - y: reference.y + reference.height - }; - break; - case "right": - coords = { - x: reference.x + reference.width, - y: commonY - }; - break; - case "left": - coords = { - x: reference.x - floating.width, - y: commonY - }; - break; - default: - coords = { - x: reference.x, - y: reference.y - }; - } - switch (getAlignment(placement)) { - case "start": - coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1); - break; - case "end": - coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1); - break; - } - return coords; - } - const computePosition = (reference, floating, config) => __async(this, null, function* () { - const { - placement = "bottom", - strategy = "absolute", - middleware = [], - platform - } = config; - const validMiddleware = middleware.filter(Boolean); - const rtl = yield platform.isRTL == null ? void 0 : platform.isRTL(floating); - let rects = yield platform.getElementRects({ - reference, - floating, - strategy - }); - let { - x: x2, - y: y2 - } = computeCoordsFromPlacement(rects, placement, rtl); - let statefulPlacement = placement; - let middlewareData = {}; - let resetCount = 0; - for (let i2 = 0; i2 < validMiddleware.length; i2++) { - const { - name, - fn: fn2 - } = validMiddleware[i2]; - const { - x: nextX, - y: nextY, - data, - reset: reset2 - } = yield fn2({ - x: x2, - y: y2, - initialPlacement: placement, - placement: statefulPlacement, - strategy, - middlewareData, - rects, - platform, - elements: { - reference, - floating - } - }); - x2 = nextX != null ? nextX : x2; - y2 = nextY != null ? nextY : y2; - middlewareData = __spreadProps(__spreadValues({}, middlewareData), { - [name]: __spreadValues(__spreadValues({}, middlewareData[name]), data) - }); - if (reset2 && resetCount <= 50) { - resetCount++; - if (typeof reset2 === "object") { - if (reset2.placement) { - statefulPlacement = reset2.placement; - } - if (reset2.rects) { - rects = reset2.rects === true ? yield platform.getElementRects({ - reference, - floating, - strategy - }) : reset2.rects; - } - ({ - x: x2, - y: y2 - } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); - } - i2 = -1; - continue; - } - } - return { - x: x2, - y: y2, - placement: statefulPlacement, - strategy, - middlewareData - }; - }); - function expandPaddingObject(padding) { - return __spreadValues({ - top: 0, - right: 0, - bottom: 0, - left: 0 - }, padding); - } - function getSideObjectFromPadding(padding) { - return typeof padding !== "number" ? expandPaddingObject(padding) : { - top: padding, - right: padding, - bottom: padding, - left: padding - }; - } - function rectToClientRect(rect) { - return __spreadProps(__spreadValues({}, rect), { - top: rect.y, - left: rect.x, - right: rect.x + rect.width, - bottom: rect.y + rect.height - }); - } - function detectOverflow(state, options) { - return __async(this, null, function* () { - var _await$platform$isEle; - if (options === void 0) { - options = {}; - } - const { - x: x2, - y: y2, - platform, - rects, - elements, - strategy - } = state; - const { - boundary = "clippingAncestors", - rootBoundary = "viewport", - elementContext = "floating", - altBoundary = false, - padding = 0 - } = options; - const paddingObject = getSideObjectFromPadding(padding); - const altContext = elementContext === "floating" ? "reference" : "floating"; - const element = elements[altBoundary ? altContext : elementContext]; - const clippingClientRect = rectToClientRect(yield platform.getClippingRect({ - element: ((_await$platform$isEle = yield platform.isElement == null ? void 0 : platform.isElement(element)) != null ? _await$platform$isEle : true) ? element : element.contextElement || (yield platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating)), - boundary, - rootBoundary, - strategy - })); - const rect = elementContext === "floating" ? __spreadProps(__spreadValues({}, rects.floating), { - x: x2, - y: y2 - }) : rects.reference; - const offsetParent = yield platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating); - const offsetScale = (yield platform.isElement == null ? void 0 : platform.isElement(offsetParent)) ? (yield platform.getScale == null ? void 0 : platform.getScale(offsetParent)) || { - x: 1, - y: 1 - } : { - x: 1, - y: 1 - }; - const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? yield platform.convertOffsetParentRelativeRectToViewportRelativeRect({ - rect, - offsetParent, - strategy - }) : rect); - return { - top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y, - bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y, - left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x, - right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x - }; - }); - } - const min2 = Math.min; - const max2 = Math.max; - function within(min$1, value, max$1) { - return max2(min$1, min2(value, max$1)); - } - const arrow = (options) => ({ - name: "arrow", - options, - fn(state) { - return __async(this, null, function* () { - const { - element, - padding = 0 - } = options || {}; - const { - x: x2, - y: y2, - placement, - rects, - platform, - elements - } = state; - if (element == null) { - return {}; - } - const paddingObject = getSideObjectFromPadding(padding); - const coords = { - x: x2, - y: y2 - }; - const axis = getMainAxisFromPlacement(placement); - const length = getLengthFromAxis(axis); - const arrowDimensions = yield platform.getDimensions(element); - const isYAxis = axis === "y"; - const minProp = isYAxis ? "top" : "left"; - const maxProp = isYAxis ? "bottom" : "right"; - const clientProp = isYAxis ? "clientHeight" : "clientWidth"; - const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length]; - const startDiff = coords[axis] - rects.reference[axis]; - const arrowOffsetParent = yield platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element); - let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0; - if (!clientSize || !(yield platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent))) { - clientSize = elements.floating[clientProp] || rects.floating[length]; - } - const centerToReference = endDiff / 2 - startDiff / 2; - const min3 = paddingObject[minProp]; - const max3 = clientSize - arrowDimensions[length] - paddingObject[maxProp]; - const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference; - const offset2 = within(min3, center, max3); - const shouldAddOffset = getAlignment(placement) != null && center != offset2 && rects.reference[length] / 2 - (center < min3 ? paddingObject[minProp] : paddingObject[maxProp]) - arrowDimensions[length] / 2 < 0; - const alignmentOffset = shouldAddOffset ? center < min3 ? min3 - center : max3 - center : 0; - return { - [axis]: coords[axis] - alignmentOffset, - data: { - [axis]: offset2, - centerOffset: center - offset2 - } - }; - }); - } - }); - const sides = ["top", "right", "bottom", "left"]; - const allPlacements = /* @__PURE__ */ sides.reduce((acc, side) => acc.concat(side, side + "-start", side + "-end"), []); - const oppositeSideMap = { - left: "right", - right: "left", - bottom: "top", - top: "bottom" - }; - function getOppositePlacement(placement) { - return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]); - } - function getAlignmentSides(placement, rects, rtl) { - if (rtl === void 0) { - rtl = false; - } - const alignment = getAlignment(placement); - const mainAxis = getMainAxisFromPlacement(placement); - const length = getLengthFromAxis(mainAxis); - let mainAlignmentSide = mainAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top"; - if (rects.reference[length] > rects.floating[length]) { - mainAlignmentSide = getOppositePlacement(mainAlignmentSide); - } - return { - main: mainAlignmentSide, - cross: getOppositePlacement(mainAlignmentSide) - }; - } - const oppositeAlignmentMap = { - start: "end", - end: "start" - }; - function getOppositeAlignmentPlacement(placement) { - return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]); - } - function getPlacementList(alignment, autoAlignment, allowedPlacements) { - const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter((placement) => getAlignment(placement) === alignment), ...allowedPlacements.filter((placement) => getAlignment(placement) !== alignment)] : allowedPlacements.filter((placement) => getSide(placement) === placement); - return allowedPlacementsSortedByAlignment.filter((placement) => { - if (alignment) { - return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false); - } - return true; - }); - } - const autoPlacement = function(options) { - if (options === void 0) { - options = {}; - } - return { - name: "autoPlacement", - options, - fn(state) { - return __async(this, null, function* () { - var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE; - const { - rects, - middlewareData, - placement, - platform, - elements - } = state; - const _a2 = options, { - crossAxis = false, - alignment, - allowedPlacements = allPlacements, - autoAlignment = true - } = _a2, detectOverflowOptions = __objRest(_a2, [ - "crossAxis", - "alignment", - "allowedPlacements", - "autoAlignment" - ]); - const placements = alignment !== void 0 || allowedPlacements === allPlacements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements; - const overflow = yield detectOverflow(state, detectOverflowOptions); - const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0; - const currentPlacement = placements[currentIndex]; - if (currentPlacement == null) { - return {}; - } - const { - main, - cross - } = getAlignmentSides(currentPlacement, rects, yield platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)); - if (placement !== currentPlacement) { - return { - reset: { - placement: placements[0] - } - }; - } - const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]]; - const allOverflows = [...((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || [], { - placement: currentPlacement, - overflows: currentOverflows - }]; - const nextPlacement = placements[currentIndex + 1]; - if (nextPlacement) { - return { - data: { - index: currentIndex + 1, - overflows: allOverflows - }, - reset: { - placement: nextPlacement - } - }; - } - const placementsSortedByMostSpace = allOverflows.map((d2) => { - const alignment2 = getAlignment(d2.placement); - return [d2.placement, alignment2 && crossAxis ? d2.overflows.slice(0, 2).reduce((acc, v2) => acc + v2, 0) : d2.overflows[0], d2.overflows]; - }).sort((a2, b2) => a2[1] - b2[1]); - const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter((d2) => d2[2].slice( - 0, - getAlignment(d2[0]) ? 2 : 3 - ).every((v2) => v2 <= 0)); - const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0]; - if (resetPlacement !== placement) { - return { - data: { - index: currentIndex + 1, - overflows: allOverflows - }, - reset: { - placement: resetPlacement - } - }; - } - return {}; - }); - } - }; - }; - function getExpandedPlacements(placement) { - const oppositePlacement = getOppositePlacement(placement); - return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)]; - } - function getSideList(side, isStart, rtl) { - const lr = ["left", "right"]; - const rl = ["right", "left"]; - const tb = ["top", "bottom"]; - const bt = ["bottom", "top"]; - switch (side) { - case "top": - case "bottom": - if (rtl) - return isStart ? rl : lr; - return isStart ? lr : rl; - case "left": - case "right": - return isStart ? tb : bt; - default: - return []; - } - } - function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) { - const alignment = getAlignment(placement); - let list = getSideList(getSide(placement), direction === "start", rtl); - if (alignment) { - list = list.map((side) => side + "-" + alignment); - if (flipAlignment) { - list = list.concat(list.map(getOppositeAlignmentPlacement)); - } - } - return list; - } - const flip = function(options) { - if (options === void 0) { - options = {}; - } - return { - name: "flip", - options, - fn(state) { - return __async(this, null, function* () { - var _middlewareData$flip; - const { - placement, - middlewareData, - rects, - initialPlacement, - platform, - elements - } = state; - const _a2 = options, { - mainAxis: checkMainAxis = true, - crossAxis: checkCrossAxis = true, - fallbackPlacements: specifiedFallbackPlacements, - fallbackStrategy = "bestFit", - fallbackAxisSideDirection = "none", - flipAlignment = true - } = _a2, detectOverflowOptions = __objRest(_a2, [ - "mainAxis", - "crossAxis", - "fallbackPlacements", - "fallbackStrategy", - "fallbackAxisSideDirection", - "flipAlignment" - ]); - const side = getSide(placement); - const isBasePlacement = getSide(initialPlacement) === initialPlacement; - const rtl = yield platform.isRTL == null ? void 0 : platform.isRTL(elements.floating); - const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement)); - if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== "none") { - fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl)); - } - const placements = [initialPlacement, ...fallbackPlacements]; - const overflow = yield detectOverflow(state, detectOverflowOptions); - const overflows = []; - let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || []; - if (checkMainAxis) { - overflows.push(overflow[side]); - } - if (checkCrossAxis) { - const { - main, - cross - } = getAlignmentSides(placement, rects, rtl); - overflows.push(overflow[main], overflow[cross]); - } - overflowsData = [...overflowsData, { - placement, - overflows - }]; - if (!overflows.every((side2) => side2 <= 0)) { - var _middlewareData$flip2, _overflowsData$filter; - const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1; - const nextPlacement = placements[nextIndex]; - if (nextPlacement) { - return { - data: { - index: nextIndex, - overflows: overflowsData - }, - reset: { - placement: nextPlacement - } - }; - } - let resetPlacement = (_overflowsData$filter = overflowsData.filter((d2) => d2.overflows[0] <= 0).sort((a2, b2) => a2.overflows[1] - b2.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement; - if (!resetPlacement) { - switch (fallbackStrategy) { - case "bestFit": { - var _overflowsData$map$so; - const placement2 = (_overflowsData$map$so = overflowsData.map((d2) => [d2.placement, d2.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a2, b2) => a2[1] - b2[1])[0]) == null ? void 0 : _overflowsData$map$so[0]; - if (placement2) { - resetPlacement = placement2; - } - break; - } - case "initialPlacement": - resetPlacement = initialPlacement; - break; - } - } - if (placement !== resetPlacement) { - return { - reset: { - placement: resetPlacement - } - }; - } - } - return {}; - }); - } - }; - }; - function getSideOffsets(overflow, rect) { - return { - top: overflow.top - rect.height, - right: overflow.right - rect.width, - bottom: overflow.bottom - rect.height, - left: overflow.left - rect.width - }; - } - function isAnySideFullyClipped(overflow) { - return sides.some((side) => overflow[side] >= 0); - } - const hide = function(options) { - if (options === void 0) { - options = {}; - } - return { - name: "hide", - options, - fn(state) { - return __async(this, null, function* () { - const _a2 = options, { - strategy = "referenceHidden" - } = _a2, detectOverflowOptions = __objRest(_a2, [ - "strategy" - ]); - const { - rects - } = state; - switch (strategy) { - case "referenceHidden": { - const overflow = yield detectOverflow(state, __spreadProps(__spreadValues({}, detectOverflowOptions), { - elementContext: "reference" - })); - const offsets = getSideOffsets(overflow, rects.reference); - return { - data: { - referenceHiddenOffsets: offsets, - referenceHidden: isAnySideFullyClipped(offsets) - } - }; - } - case "escaped": { - const overflow = yield detectOverflow(state, __spreadProps(__spreadValues({}, detectOverflowOptions), { - altBoundary: true - })); - const offsets = getSideOffsets(overflow, rects.floating); - return { - data: { - escapedOffsets: offsets, - escaped: isAnySideFullyClipped(offsets) - } - }; - } - default: { - return {}; - } - } - }); - } - }; - }; - function getBoundingRect(rects) { - const minX = min2(...rects.map((rect) => rect.left)); - const minY = min2(...rects.map((rect) => rect.top)); - const maxX = max2(...rects.map((rect) => rect.right)); - const maxY = max2(...rects.map((rect) => rect.bottom)); - return { - x: minX, - y: minY, - width: maxX - minX, - height: maxY - minY - }; - } - function getRectsByLine(rects) { - const sortedRects = rects.slice().sort((a2, b2) => a2.y - b2.y); - const groups = []; - let prevRect = null; - for (let i2 = 0; i2 < sortedRects.length; i2++) { - const rect = sortedRects[i2]; - if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) { - groups.push([rect]); - } else { - groups[groups.length - 1].push(rect); - } - prevRect = rect; - } - return groups.map((rect) => rectToClientRect(getBoundingRect(rect))); - } - const inline = function(options) { - if (options === void 0) { - options = {}; - } - return { - name: "inline", - options, - fn(state) { - return __async(this, null, function* () { - const { - placement, - elements, - rects, - platform, - strategy - } = state; - const { - padding = 2, - x: x2, - y: y2 - } = options; - const nativeClientRects = Array.from((yield platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference)) || []); - const clientRects = getRectsByLine(nativeClientRects); - const fallback = rectToClientRect(getBoundingRect(nativeClientRects)); - const paddingObject = getSideObjectFromPadding(padding); - function getBoundingClientRect() { - if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x2 != null && y2 != null) { - return clientRects.find((rect) => x2 > rect.left - paddingObject.left && x2 < rect.right + paddingObject.right && y2 > rect.top - paddingObject.top && y2 < rect.bottom + paddingObject.bottom) || fallback; - } - if (clientRects.length >= 2) { - if (getMainAxisFromPlacement(placement) === "x") { - const firstRect = clientRects[0]; - const lastRect = clientRects[clientRects.length - 1]; - const isTop = getSide(placement) === "top"; - const top2 = firstRect.top; - const bottom2 = lastRect.bottom; - const left2 = isTop ? firstRect.left : lastRect.left; - const right2 = isTop ? firstRect.right : lastRect.right; - const width2 = right2 - left2; - const height2 = bottom2 - top2; - return { - top: top2, - bottom: bottom2, - left: left2, - right: right2, - width: width2, - height: height2, - x: left2, - y: top2 - }; - } - const isLeftSide = getSide(placement) === "left"; - const maxRight = max2(...clientRects.map((rect) => rect.right)); - const minLeft = min2(...clientRects.map((rect) => rect.left)); - const measureRects = clientRects.filter((rect) => isLeftSide ? rect.left === minLeft : rect.right === maxRight); - const top = measureRects[0].top; - const bottom = measureRects[measureRects.length - 1].bottom; - const left = minLeft; - const right = maxRight; - const width = right - left; - const height = bottom - top; - return { - top, - bottom, - left, - right, - width, - height, - x: left, - y: top - }; - } - return fallback; - } - const resetRects = yield platform.getElementRects({ - reference: { - getBoundingClientRect - }, - floating: elements.floating, - strategy - }); - if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) { - return { - reset: { - rects: resetRects - } - }; - } - return {}; - }); - } - }; - }; - function convertValueToCoords(state, value) { - return __async(this, null, function* () { - const { - placement, - platform, - elements - } = state; - const rtl = yield platform.isRTL == null ? void 0 : platform.isRTL(elements.floating); - const side = getSide(placement); - const alignment = getAlignment(placement); - const isVertical = getMainAxisFromPlacement(placement) === "x"; - const mainAxisMulti = ["left", "top"].includes(side) ? -1 : 1; - const crossAxisMulti = rtl && isVertical ? -1 : 1; - const rawValue = typeof value === "function" ? value(state) : value; - let { - mainAxis, - crossAxis, - alignmentAxis - } = typeof rawValue === "number" ? { - mainAxis: rawValue, - crossAxis: 0, - alignmentAxis: null - } : __spreadValues({ - mainAxis: 0, - crossAxis: 0, - alignmentAxis: null - }, rawValue); - if (alignment && typeof alignmentAxis === "number") { - crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis; - } - return isVertical ? { - x: crossAxis * crossAxisMulti, - y: mainAxis * mainAxisMulti - } : { - x: mainAxis * mainAxisMulti, - y: crossAxis * crossAxisMulti - }; - }); - } - const offset = function(value) { - if (value === void 0) { - value = 0; - } - return { - name: "offset", - options: value, - fn(state) { - return __async(this, null, function* () { - const { - x: x2, - y: y2 - } = state; - const diffCoords = yield convertValueToCoords(state, value); - return { - x: x2 + diffCoords.x, - y: y2 + diffCoords.y, - data: diffCoords - }; - }); - } - }; - }; - function getCrossAxis(axis) { - return axis === "x" ? "y" : "x"; - } - const shift = function(options) { - if (options === void 0) { - options = {}; - } - return { - name: "shift", - options, - fn(state) { - return __async(this, null, function* () { - const { - x: x2, - y: y2, - placement - } = state; - const _a2 = options, { - mainAxis: checkMainAxis = true, - crossAxis: checkCrossAxis = false, - limiter = { - fn: (_ref) => { - let { - x: x3, - y: y3 - } = _ref; - return { - x: x3, - y: y3 - }; - } - } - } = _a2, detectOverflowOptions = __objRest(_a2, [ - "mainAxis", - "crossAxis", - "limiter" - ]); - const coords = { - x: x2, - y: y2 - }; - const overflow = yield detectOverflow(state, detectOverflowOptions); - const mainAxis = getMainAxisFromPlacement(getSide(placement)); - const crossAxis = getCrossAxis(mainAxis); - let mainAxisCoord = coords[mainAxis]; - let crossAxisCoord = coords[crossAxis]; - if (checkMainAxis) { - const minSide = mainAxis === "y" ? "top" : "left"; - const maxSide = mainAxis === "y" ? "bottom" : "right"; - const min3 = mainAxisCoord + overflow[minSide]; - const max3 = mainAxisCoord - overflow[maxSide]; - mainAxisCoord = within(min3, mainAxisCoord, max3); - } - if (checkCrossAxis) { - const minSide = crossAxis === "y" ? "top" : "left"; - const maxSide = crossAxis === "y" ? "bottom" : "right"; - const min3 = crossAxisCoord + overflow[minSide]; - const max3 = crossAxisCoord - overflow[maxSide]; - crossAxisCoord = within(min3, crossAxisCoord, max3); - } - const limitedCoords = limiter.fn(__spreadProps(__spreadValues({}, state), { - [mainAxis]: mainAxisCoord, - [crossAxis]: crossAxisCoord - })); - return __spreadProps(__spreadValues({}, limitedCoords), { - data: { - x: limitedCoords.x - x2, - y: limitedCoords.y - y2 - } - }); - }); - } - }; - }; - const limitShift = function(options) { - if (options === void 0) { - options = {}; - } - return { - options, - fn(state) { - const { - x: x2, - y: y2, - placement, - rects, - middlewareData - } = state; - const { - offset: offset2 = 0, - mainAxis: checkMainAxis = true, - crossAxis: checkCrossAxis = true - } = options; - const coords = { - x: x2, - y: y2 - }; - const mainAxis = getMainAxisFromPlacement(placement); - const crossAxis = getCrossAxis(mainAxis); - let mainAxisCoord = coords[mainAxis]; - let crossAxisCoord = coords[crossAxis]; - const rawOffset = typeof offset2 === "function" ? offset2(state) : offset2; - const computedOffset = typeof rawOffset === "number" ? { - mainAxis: rawOffset, - crossAxis: 0 - } : __spreadValues({ - mainAxis: 0, - crossAxis: 0 - }, rawOffset); - if (checkMainAxis) { - const len = mainAxis === "y" ? "height" : "width"; - const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis; - const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis; - if (mainAxisCoord < limitMin) { - mainAxisCoord = limitMin; - } else if (mainAxisCoord > limitMax) { - mainAxisCoord = limitMax; - } - } - if (checkCrossAxis) { - var _middlewareData$offse, _middlewareData$offse2; - const len = mainAxis === "y" ? "width" : "height"; - const isOriginSide = ["top", "left"].includes(getSide(placement)); - const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis); - const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0); - if (crossAxisCoord < limitMin) { - crossAxisCoord = limitMin; - } else if (crossAxisCoord > limitMax) { - crossAxisCoord = limitMax; - } - } - return { - [mainAxis]: mainAxisCoord, - [crossAxis]: crossAxisCoord - }; - } - }; - }; - const size = function(options) { - if (options === void 0) { - options = {}; - } - return { - name: "size", - options, - fn(state) { - return __async(this, null, function* () { - const { - placement, - rects, - platform, - elements - } = state; - const _a2 = options, { - apply = () => { - } - } = _a2, detectOverflowOptions = __objRest(_a2, [ - "apply" - ]); - const overflow = yield detectOverflow(state, detectOverflowOptions); - const side = getSide(placement); - const alignment = getAlignment(placement); - const axis = getMainAxisFromPlacement(placement); - const isXAxis = axis === "x"; - const { - width, - height - } = rects.floating; - let heightSide; - let widthSide; - if (side === "top" || side === "bottom") { - heightSide = side; - widthSide = alignment === ((yield platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)) ? "start" : "end") ? "left" : "right"; - } else { - widthSide = side; - heightSide = alignment === "end" ? "top" : "bottom"; - } - const overflowAvailableHeight = height - overflow[heightSide]; - const overflowAvailableWidth = width - overflow[widthSide]; - const noShift = !state.middlewareData.shift; - let availableHeight = overflowAvailableHeight; - let availableWidth = overflowAvailableWidth; - if (isXAxis) { - const maximumClippingWidth = width - overflow.left - overflow.right; - availableWidth = alignment || noShift ? min2(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth; - } else { - const maximumClippingHeight = height - overflow.top - overflow.bottom; - availableHeight = alignment || noShift ? min2(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight; - } - if (noShift && !alignment) { - const xMin = max2(overflow.left, 0); - const xMax = max2(overflow.right, 0); - const yMin = max2(overflow.top, 0); - const yMax = max2(overflow.bottom, 0); - if (isXAxis) { - availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max2(overflow.left, overflow.right)); - } else { - availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max2(overflow.top, overflow.bottom)); - } - } - yield apply(__spreadProps(__spreadValues({}, state), { - availableWidth, - availableHeight - })); - const nextDimensions = yield platform.getDimensions(elements.floating); - if (width !== nextDimensions.width || height !== nextDimensions.height) { - return { - reset: { - rects: true - } - }; - } - return {}; - }); - } - }; - }; - exports2.arrow = arrow; - exports2.autoPlacement = autoPlacement; - exports2.computePosition = computePosition; - exports2.detectOverflow = detectOverflow; - exports2.flip = flip; - exports2.hide = hide; - exports2.inline = inline; - exports2.limitShift = limitShift; - exports2.offset = offset; - exports2.rectToClientRect = rectToClientRect; - exports2.shift = shift; - exports2.size = size; - Object.defineProperty(exports2, "__esModule", { value: true }); - }); - } -}); - -// node_modules/@floating-ui/dom/dist/floating-ui.dom.umd.js -var require_floating_ui_dom_umd = __commonJS({ - "node_modules/@floating-ui/dom/dist/floating-ui.dom.umd.js"(exports, module2) { - (function(global2, factory) { - typeof exports === "object" && typeof module2 !== "undefined" ? factory(exports, require_floating_ui_core_umd()) : typeof define === "function" && define.amd ? define(["exports", "@floating-ui/core"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.FloatingUIDOM = {}, global2.FloatingUICore)); - })(exports, function(exports2, core) { - "use strict"; - function getWindow(node) { - var _node$ownerDocument; - return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; - } - function getComputedStyle$1(element) { - return getWindow(element).getComputedStyle(element); - } - function isNode(value) { - return value instanceof getWindow(value).Node; - } - function getNodeName(node) { - return isNode(node) ? (node.nodeName || "").toLowerCase() : ""; - } - let uaString; - function getUAString() { - if (uaString) { - return uaString; - } - const uaData = navigator.userAgentData; - if (uaData && Array.isArray(uaData.brands)) { - uaString = uaData.brands.map((item) => item.brand + "/" + item.version).join(" "); - return uaString; - } - return navigator.userAgent; - } - function isHTMLElement(value) { - return value instanceof getWindow(value).HTMLElement; - } - function isElement(value) { - return value instanceof getWindow(value).Element; - } - function isShadowRoot(node) { - if (typeof ShadowRoot === "undefined") { - return false; - } - const OwnElement = getWindow(node).ShadowRoot; - return node instanceof OwnElement || node instanceof ShadowRoot; - } - function isOverflowElement(element) { - const { - overflow, - overflowX, - overflowY, - display - } = getComputedStyle$1(element); - return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !["inline", "contents"].includes(display); - } - function isTableElement(element) { - return ["table", "td", "th"].includes(getNodeName(element)); - } - function isContainingBlock(element) { - const isFirefox = /firefox/i.test(getUAString()); - const css2 = getComputedStyle$1(element); - const backdropFilter = css2.backdropFilter || css2.WebkitBackdropFilter; - return css2.transform !== "none" || css2.perspective !== "none" || (backdropFilter ? backdropFilter !== "none" : false) || isFirefox && css2.willChange === "filter" || isFirefox && (css2.filter ? css2.filter !== "none" : false) || ["transform", "perspective"].some((value) => css2.willChange.includes(value)) || ["paint", "layout", "strict", "content"].some((value) => { - const contain = css2.contain; - return contain != null ? contain.includes(value) : false; - }); - } - function isClientRectVisualViewportBased() { - return /^((?!chrome|android).)*safari/i.test(getUAString()); - } - function isLastTraversableNode(node) { - return ["html", "body", "#document"].includes(getNodeName(node)); - } - const min2 = Math.min; - const max2 = Math.max; - const round2 = Math.round; - function getCssDimensions(element) { - const css2 = getComputedStyle$1(element); - let width = parseFloat(css2.width); - let height = parseFloat(css2.height); - const hasOffset = isHTMLElement(element); - const offsetWidth = hasOffset ? element.offsetWidth : width; - const offsetHeight = hasOffset ? element.offsetHeight : height; - const shouldFallback = round2(width) !== offsetWidth || round2(height) !== offsetHeight; - if (shouldFallback) { - width = offsetWidth; - height = offsetHeight; - } - return { - width, - height, - fallback: shouldFallback - }; - } - function unwrapElement(element) { - return !isElement(element) ? element.contextElement : element; - } - const FALLBACK_SCALE = { - x: 1, - y: 1 - }; - function getScale(element) { - const domElement = unwrapElement(element); - if (!isHTMLElement(domElement)) { - return FALLBACK_SCALE; - } - const rect = domElement.getBoundingClientRect(); - const { - width, - height, - fallback - } = getCssDimensions(domElement); - let x2 = (fallback ? round2(rect.width) : rect.width) / width; - let y2 = (fallback ? round2(rect.height) : rect.height) / height; - if (!x2 || !Number.isFinite(x2)) { - x2 = 1; - } - if (!y2 || !Number.isFinite(y2)) { - y2 = 1; - } - return { - x: x2, - y: y2 - }; - } - function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) { - var _win$visualViewport, _win$visualViewport2; - if (includeScale === void 0) { - includeScale = false; - } - if (isFixedStrategy === void 0) { - isFixedStrategy = false; - } - const clientRect = element.getBoundingClientRect(); - const domElement = unwrapElement(element); - let scale = FALLBACK_SCALE; - if (includeScale) { - if (offsetParent) { - if (isElement(offsetParent)) { - scale = getScale(offsetParent); - } - } else { - scale = getScale(element); - } - } - const win = domElement ? getWindow(domElement) : window; - const addVisualOffsets = isClientRectVisualViewportBased() && isFixedStrategy; - let x2 = (clientRect.left + (addVisualOffsets ? ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0 : 0)) / scale.x; - let y2 = (clientRect.top + (addVisualOffsets ? ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0 : 0)) / scale.y; - let width = clientRect.width / scale.x; - let height = clientRect.height / scale.y; - if (domElement) { - const win2 = getWindow(domElement); - const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; - let currentIFrame = win2.frameElement; - while (currentIFrame && offsetParent && offsetWin !== win2) { - const iframeScale = getScale(currentIFrame); - const iframeRect = currentIFrame.getBoundingClientRect(); - const css2 = getComputedStyle(currentIFrame); - iframeRect.x += (currentIFrame.clientLeft + parseFloat(css2.paddingLeft)) * iframeScale.x; - iframeRect.y += (currentIFrame.clientTop + parseFloat(css2.paddingTop)) * iframeScale.y; - x2 *= iframeScale.x; - y2 *= iframeScale.y; - width *= iframeScale.x; - height *= iframeScale.y; - x2 += iframeRect.x; - y2 += iframeRect.y; - currentIFrame = getWindow(currentIFrame).frameElement; - } - } - return core.rectToClientRect({ - width, - height, - x: x2, - y: y2 - }); - } - function getDocumentElement(node) { - return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement; - } - function getNodeScroll(element) { - if (isElement(element)) { - return { - scrollLeft: element.scrollLeft, - scrollTop: element.scrollTop - }; - } - return { - scrollLeft: element.pageXOffset, - scrollTop: element.pageYOffset - }; - } - function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { - let { - rect, - offsetParent, - strategy - } = _ref; - const isOffsetParentAnElement = isHTMLElement(offsetParent); - const documentElement = getDocumentElement(offsetParent); - if (offsetParent === documentElement) { - return rect; - } - let scroll = { - scrollLeft: 0, - scrollTop: 0 - }; - let scale = { - x: 1, - y: 1 - }; - const offsets = { - x: 0, - y: 0 - }; - if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== "fixed") { - if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { - scroll = getNodeScroll(offsetParent); - } - if (isHTMLElement(offsetParent)) { - const offsetRect = getBoundingClientRect(offsetParent); - scale = getScale(offsetParent); - offsets.x = offsetRect.x + offsetParent.clientLeft; - offsets.y = offsetRect.y + offsetParent.clientTop; - } - } - return { - width: rect.width * scale.x, - height: rect.height * scale.y, - x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x, - y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y - }; - } - function getWindowScrollBarX(element) { - return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft; - } - function getDocumentRect(element) { - const html = getDocumentElement(element); - const scroll = getNodeScroll(element); - const body = element.ownerDocument.body; - const width = max2(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); - const height = max2(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); - let x2 = -scroll.scrollLeft + getWindowScrollBarX(element); - const y2 = -scroll.scrollTop; - if (getComputedStyle$1(body).direction === "rtl") { - x2 += max2(html.clientWidth, body.clientWidth) - width; - } - return { - width, - height, - x: x2, - y: y2 - }; - } - function getParentNode(node) { - if (getNodeName(node) === "html") { - return node; - } - const result = node.assignedSlot || node.parentNode || isShadowRoot(node) && node.host || getDocumentElement(node); - return isShadowRoot(result) ? result.host : result; - } - function getNearestOverflowAncestor(node) { - const parentNode = getParentNode(node); - if (isLastTraversableNode(parentNode)) { - return parentNode.ownerDocument.body; - } - if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { - return parentNode; - } - return getNearestOverflowAncestor(parentNode); - } - function getOverflowAncestors(node, list) { - var _node$ownerDocument; - if (list === void 0) { - list = []; - } - const scrollableAncestor = getNearestOverflowAncestor(node); - const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body); - const win = getWindow(scrollableAncestor); - if (isBody) { - return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []); - } - return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor)); - } - function getViewportRect(element, strategy) { - const win = getWindow(element); - const html = getDocumentElement(element); - const visualViewport = win.visualViewport; - let width = html.clientWidth; - let height = html.clientHeight; - let x2 = 0; - let y2 = 0; - if (visualViewport) { - width = visualViewport.width; - height = visualViewport.height; - const visualViewportBased = isClientRectVisualViewportBased(); - if (!visualViewportBased || visualViewportBased && strategy === "fixed") { - x2 = visualViewport.offsetLeft; - y2 = visualViewport.offsetTop; - } - } - return { - width, - height, - x: x2, - y: y2 - }; - } - function getInnerBoundingClientRect(element, strategy) { - const clientRect = getBoundingClientRect(element, true, strategy === "fixed"); - const top = clientRect.top + element.clientTop; - const left = clientRect.left + element.clientLeft; - const scale = isHTMLElement(element) ? getScale(element) : { - x: 1, - y: 1 - }; - const width = element.clientWidth * scale.x; - const height = element.clientHeight * scale.y; - const x2 = left * scale.x; - const y2 = top * scale.y; - return { - width, - height, - x: x2, - y: y2 - }; - } - function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) { - let rect; - if (clippingAncestor === "viewport") { - rect = getViewportRect(element, strategy); - } else if (clippingAncestor === "document") { - rect = getDocumentRect(getDocumentElement(element)); - } else if (isElement(clippingAncestor)) { - rect = getInnerBoundingClientRect(clippingAncestor, strategy); - } else { - const mutableRect = __spreadValues({}, clippingAncestor); - if (isClientRectVisualViewportBased()) { - var _win$visualViewport, _win$visualViewport2; - const win = getWindow(element); - mutableRect.x -= ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0; - mutableRect.y -= ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0; - } - rect = mutableRect; - } - return core.rectToClientRect(rect); - } - function hasFixedPositionAncestor(element, stopNode) { - const parentNode = getParentNode(element); - if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) { - return false; - } - return getComputedStyle$1(parentNode).position === "fixed" || hasFixedPositionAncestor(parentNode, stopNode); - } - function getClippingElementAncestors(element, cache) { - const cachedResult = cache.get(element); - if (cachedResult) { - return cachedResult; - } - let result = getOverflowAncestors(element).filter((el) => isElement(el) && getNodeName(el) !== "body"); - let currentContainingBlockComputedStyle = null; - const elementIsFixed = getComputedStyle$1(element).position === "fixed"; - let currentNode = elementIsFixed ? getParentNode(element) : element; - while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { - const computedStyle = getComputedStyle$1(currentNode); - const currentNodeIsContaining = isContainingBlock(currentNode); - if (!currentNodeIsContaining && computedStyle.position === "fixed") { - currentContainingBlockComputedStyle = null; - } - const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && ["absolute", "fixed"].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode); - if (shouldDropCurrentNode) { - result = result.filter((ancestor) => ancestor !== currentNode); - } else { - currentContainingBlockComputedStyle = computedStyle; - } - currentNode = getParentNode(currentNode); - } - cache.set(element, result); - return result; - } - function getClippingRect(_ref) { - let { - element, - boundary, - rootBoundary, - strategy - } = _ref; - const elementClippingAncestors = boundary === "clippingAncestors" ? getClippingElementAncestors(element, this._c) : [].concat(boundary); - const clippingAncestors = [...elementClippingAncestors, rootBoundary]; - const firstClippingAncestor = clippingAncestors[0]; - const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => { - const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy); - accRect.top = max2(rect.top, accRect.top); - accRect.right = min2(rect.right, accRect.right); - accRect.bottom = min2(rect.bottom, accRect.bottom); - accRect.left = max2(rect.left, accRect.left); - return accRect; - }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy)); - return { - width: clippingRect.right - clippingRect.left, - height: clippingRect.bottom - clippingRect.top, - x: clippingRect.left, - y: clippingRect.top - }; - } - function getDimensions(element) { - return getCssDimensions(element); - } - function getTrueOffsetParent(element, polyfill) { - if (!isHTMLElement(element) || getComputedStyle$1(element).position === "fixed") { - return null; - } - if (polyfill) { - return polyfill(element); - } - return element.offsetParent; - } - function getContainingBlock(element) { - let currentNode = getParentNode(element); - while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { - if (isContainingBlock(currentNode)) { - return currentNode; - } else { - currentNode = getParentNode(currentNode); - } - } - return null; - } - function getOffsetParent(element, polyfill) { - const window2 = getWindow(element); - if (!isHTMLElement(element)) { - return window2; - } - let offsetParent = getTrueOffsetParent(element, polyfill); - while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === "static") { - offsetParent = getTrueOffsetParent(offsetParent, polyfill); - } - if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle$1(offsetParent).position === "static" && !isContainingBlock(offsetParent))) { - return window2; - } - return offsetParent || getContainingBlock(element) || window2; - } - function getRectRelativeToOffsetParent(element, offsetParent, strategy) { - const isOffsetParentAnElement = isHTMLElement(offsetParent); - const documentElement = getDocumentElement(offsetParent); - const rect = getBoundingClientRect(element, true, strategy === "fixed", offsetParent); - let scroll = { - scrollLeft: 0, - scrollTop: 0 - }; - const offsets = { - x: 0, - y: 0 - }; - if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== "fixed") { - if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { - scroll = getNodeScroll(offsetParent); - } - if (isHTMLElement(offsetParent)) { - const offsetRect = getBoundingClientRect(offsetParent, true); - offsets.x = offsetRect.x + offsetParent.clientLeft; - offsets.y = offsetRect.y + offsetParent.clientTop; - } else if (documentElement) { - offsets.x = getWindowScrollBarX(documentElement); - } - } - return { - x: rect.left + scroll.scrollLeft - offsets.x, - y: rect.top + scroll.scrollTop - offsets.y, - width: rect.width, - height: rect.height - }; - } - const platform = { - getClippingRect, - convertOffsetParentRelativeRectToViewportRelativeRect, - isElement, - getDimensions, - getOffsetParent, - getDocumentElement, - getScale, - getElementRects(_ref) { - return __async(this, null, function* () { - let { - reference, - floating, - strategy - } = _ref; - const getOffsetParentFn = this.getOffsetParent || getOffsetParent; - const getDimensionsFn = this.getDimensions; - return { - reference: getRectRelativeToOffsetParent(reference, yield getOffsetParentFn(floating), strategy), - floating: __spreadValues({ - x: 0, - y: 0 - }, yield getDimensionsFn(floating)) - }; - }); - }, - getClientRects: (element) => Array.from(element.getClientRects()), - isRTL: (element) => getComputedStyle$1(element).direction === "rtl" - }; - function autoUpdate(reference, floating, update, options) { - if (options === void 0) { - options = {}; - } - const { - ancestorScroll = true, - ancestorResize = true, - elementResize = true, - animationFrame = false - } = options; - const ancestors = ancestorScroll || ancestorResize ? [...isElement(reference) ? getOverflowAncestors(reference) : reference.contextElement ? getOverflowAncestors(reference.contextElement) : [], ...getOverflowAncestors(floating)] : []; - ancestors.forEach((ancestor) => { - const isVisualViewport = !isElement(ancestor) && ancestor.toString().includes("V"); - if (ancestorScroll && (animationFrame ? isVisualViewport : true)) { - ancestor.addEventListener("scroll", update, { - passive: true - }); - } - ancestorResize && ancestor.addEventListener("resize", update); - }); - let observer = null; - if (elementResize) { - observer = new ResizeObserver(() => { - update(); - }); - isElement(reference) && !animationFrame && observer.observe(reference); - if (!isElement(reference) && reference.contextElement && !animationFrame) { - observer.observe(reference.contextElement); - } - observer.observe(floating); - } - let frameId; - let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null; - if (animationFrame) { - frameLoop(); - } - function frameLoop() { - const nextRefRect = getBoundingClientRect(reference); - if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) { - update(); - } - prevRefRect = nextRefRect; - frameId = requestAnimationFrame(frameLoop); - } - update(); - return () => { - var _observer; - ancestors.forEach((ancestor) => { - ancestorScroll && ancestor.removeEventListener("scroll", update); - ancestorResize && ancestor.removeEventListener("resize", update); - }); - (_observer = observer) == null ? void 0 : _observer.disconnect(); - observer = null; - if (animationFrame) { - cancelAnimationFrame(frameId); - } - }; - } - const computePosition = (reference, floating, options) => { - const cache = /* @__PURE__ */ new Map(); - const mergedOptions = __spreadValues({ - platform - }, options); - const platformWithCache = __spreadProps(__spreadValues({}, mergedOptions.platform), { - _c: cache - }); - return core.computePosition(reference, floating, __spreadProps(__spreadValues({}, mergedOptions), { - platform: platformWithCache - })); - }; - Object.defineProperty(exports2, "arrow", { - enumerable: true, - get: function() { - return core.arrow; - } - }); - Object.defineProperty(exports2, "autoPlacement", { - enumerable: true, - get: function() { - return core.autoPlacement; - } - }); - Object.defineProperty(exports2, "detectOverflow", { - enumerable: true, - get: function() { - return core.detectOverflow; - } - }); - Object.defineProperty(exports2, "flip", { - enumerable: true, - get: function() { - return core.flip; - } - }); - Object.defineProperty(exports2, "hide", { - enumerable: true, - get: function() { - return core.hide; - } - }); - Object.defineProperty(exports2, "inline", { - enumerable: true, - get: function() { - return core.inline; - } - }); - Object.defineProperty(exports2, "limitShift", { - enumerable: true, - get: function() { - return core.limitShift; - } - }); - Object.defineProperty(exports2, "offset", { - enumerable: true, - get: function() { - return core.offset; - } - }); - Object.defineProperty(exports2, "shift", { - enumerable: true, - get: function() { - return core.shift; - } - }); - Object.defineProperty(exports2, "size", { - enumerable: true, - get: function() { - return core.size; - } - }); - exports2.autoUpdate = autoUpdate; - exports2.computePosition = computePosition; - exports2.getOverflowAncestors = getOverflowAncestors; - exports2.platform = platform; - Object.defineProperty(exports2, "__esModule", { value: true }); - }); - } -}); - -// node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.cjs.js -var require_use_isomorphic_layout_effect_browser_cjs = __commonJS({ - "node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.cjs.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var react = require_react(); - var index = react.useLayoutEffect; - exports.default = index; - } -}); - -// node_modules/react-select/dist/index-2fe3dc33.cjs.dev.js -var require_index_2fe3dc33_cjs_dev = __commonJS({ - "node_modules/react-select/dist/index-2fe3dc33.cjs.dev.js"(exports) { - "use strict"; - var _objectSpread = require_objectSpread2(); - var _extends2 = require_extends2(); - var react = require_emotion_react_cjs(); - var _slicedToArray = require_slicedToArray(); - var _objectWithoutProperties = require_objectWithoutProperties(); - var _typeof = require_typeof(); - var _taggedTemplateLiteral = require_taggedTemplateLiteral(); - var _defineProperty2 = require_defineProperty(); - var React49 = require_react(); - var reactDom = require_react_dom(); - var dom = require_floating_ui_dom_umd(); - var useLayoutEffect2 = require_use_isomorphic_layout_effect_browser_cjs(); - function _interopDefault(e) { - return e && e.__esModule ? e : { "default": e }; - } - var useLayoutEffect__default = /* @__PURE__ */ _interopDefault(useLayoutEffect2); - var _excluded$3 = ["className", "clearValue", "cx", "getStyles", "getClassNames", "getValue", "hasValue", "isMulti", "isRtl", "options", "selectOption", "selectProps", "setValue", "theme"]; - var noop2 = function noop3() { - }; - function applyPrefixToName(prefix2, name) { - if (!name) { - return prefix2; - } else if (name[0] === "-") { - return prefix2 + name; - } else { - return prefix2 + "__" + name; - } - } - function classNames(prefix2, state) { - for (var _len = arguments.length, classNameList = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { - classNameList[_key - 2] = arguments[_key]; - } - var arr = [].concat(classNameList); - if (state && prefix2) { - for (var key in state) { - if (state.hasOwnProperty(key) && state[key]) { - arr.push("".concat(applyPrefixToName(prefix2, key))); - } - } - } - return arr.filter(function(i2) { - return i2; - }).map(function(i2) { - return String(i2).trim(); - }).join(" "); - } - var cleanValue = function cleanValue2(value) { - if (isArray(value)) - return value.filter(Boolean); - if (_typeof(value) === "object" && value !== null) - return [value]; - return []; - }; - var cleanCommonProps = function cleanCommonProps2(props) { - props.className; - props.clearValue; - props.cx; - props.getStyles; - props.getClassNames; - props.getValue; - props.hasValue; - props.isMulti; - props.isRtl; - props.options; - props.selectOption; - props.selectProps; - props.setValue; - props.theme; - var innerProps = _objectWithoutProperties(props, _excluded$3); - return _objectSpread({}, innerProps); - }; - var getStyleProps = function getStyleProps2(props, name, classNamesState) { - var cx = props.cx, getStyles = props.getStyles, getClassNames = props.getClassNames, className = props.className; - return { - css: getStyles(name, props), - className: cx(classNamesState !== null && classNamesState !== void 0 ? classNamesState : {}, getClassNames(name, props), className) - }; - }; - function handleInputChange(inputValue, actionMeta, onInputChange) { - if (onInputChange) { - var _newValue = onInputChange(inputValue, actionMeta); - if (typeof _newValue === "string") - return _newValue; - } - return inputValue; - } - function isDocumentElement(el) { - return [document.documentElement, document.body, window].indexOf(el) > -1; - } - function normalizedHeight(el) { - if (isDocumentElement(el)) { - return window.innerHeight; - } - return el.clientHeight; - } - function getScrollTop(el) { - if (isDocumentElement(el)) { - return window.pageYOffset; - } - return el.scrollTop; - } - function scrollTo(el, top) { - if (isDocumentElement(el)) { - window.scrollTo(0, top); - return; - } - el.scrollTop = top; - } - function getScrollParent(element) { - var style = getComputedStyle(element); - var excludeStaticParent = style.position === "absolute"; - var overflowRx = /(auto|scroll)/; - if (style.position === "fixed") - return document.documentElement; - for (var parent = element; parent = parent.parentElement; ) { - style = getComputedStyle(parent); - if (excludeStaticParent && style.position === "static") { - continue; - } - if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) { - return parent; - } - } - return document.documentElement; - } - function easeOutCubic(t2, b2, c2, d2) { - return c2 * ((t2 = t2 / d2 - 1) * t2 * t2 + 1) + b2; - } - function animatedScrollTo(element, to) { - var duration = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 200; - var callback = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : noop2; - var start = getScrollTop(element); - var change = to - start; - var increment = 10; - var currentTime = 0; - function animateScroll() { - currentTime += increment; - var val = easeOutCubic(currentTime, start, change, duration); - scrollTo(element, val); - if (currentTime < duration) { - window.requestAnimationFrame(animateScroll); - } else { - callback(element); - } - } - animateScroll(); - } - function scrollIntoView(menuEl, focusedEl) { - var menuRect = menuEl.getBoundingClientRect(); - var focusedRect = focusedEl.getBoundingClientRect(); - var overScroll = focusedEl.offsetHeight / 3; - if (focusedRect.bottom + overScroll > menuRect.bottom) { - scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight)); - } else if (focusedRect.top - overScroll < menuRect.top) { - scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0)); - } - } - function getBoundingClientObj(element) { - var rect = element.getBoundingClientRect(); - return { - bottom: rect.bottom, - height: rect.height, - left: rect.left, - right: rect.right, - top: rect.top, - width: rect.width - }; - } - function isTouchCapable() { - try { - document.createEvent("TouchEvent"); - return true; - } catch (e) { - return false; - } - } - function isMobileDevice() { - try { - return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); - } catch (e) { - return false; - } - } - var passiveOptionAccessed = false; - var options = { - get passive() { - return passiveOptionAccessed = true; - } - }; - var w2 = typeof window !== "undefined" ? window : {}; - if (w2.addEventListener && w2.removeEventListener) { - w2.addEventListener("p", noop2, options); - w2.removeEventListener("p", noop2, false); - } - var supportsPassiveEvents = passiveOptionAccessed; - function notNullish(item) { - return item != null; - } - function isArray(arg) { - return Array.isArray(arg); - } - function valueTernary(isMulti, multiValue, singleValue) { - return isMulti ? multiValue : singleValue; - } - function singleValueAsValue(singleValue) { - return singleValue; - } - function multiValueAsValue(multiValue) { - return multiValue; - } - var removeProps = function removeProps2(propsObj) { - for (var _len2 = arguments.length, properties = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - properties[_key2 - 1] = arguments[_key2]; - } - var propsMap = Object.entries(propsObj).filter(function(_ref) { - var _ref22 = _slicedToArray(_ref, 1), key = _ref22[0]; - return !properties.includes(key); - }); - return propsMap.reduce(function(newProps, _ref3) { - var _ref4 = _slicedToArray(_ref3, 2), key = _ref4[0], val = _ref4[1]; - newProps[key] = val; - return newProps; - }, {}); - }; - function getMenuPlacement(_ref) { - var preferredMaxHeight = _ref.maxHeight, menuEl = _ref.menuEl, minHeight = _ref.minHeight, preferredPlacement = _ref.placement, shouldScroll = _ref.shouldScroll, isFixedPosition = _ref.isFixedPosition, controlHeight = _ref.controlHeight; - var scrollParent = getScrollParent(menuEl); - var defaultState = { - placement: "bottom", - maxHeight: preferredMaxHeight - }; - if (!menuEl || !menuEl.offsetParent) - return defaultState; - var _scrollParent$getBoun = scrollParent.getBoundingClientRect(), scrollHeight = _scrollParent$getBoun.height; - var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(), menuBottom = _menuEl$getBoundingCl.bottom, menuHeight = _menuEl$getBoundingCl.height, menuTop = _menuEl$getBoundingCl.top; - var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(), containerTop = _menuEl$offsetParent$.top; - var viewHeight = isFixedPosition ? window.innerHeight : normalizedHeight(scrollParent); - var scrollTop = getScrollTop(scrollParent); - var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10); - var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10); - var viewSpaceAbove = containerTop - marginTop; - var viewSpaceBelow = viewHeight - menuTop; - var scrollSpaceAbove = viewSpaceAbove + scrollTop; - var scrollSpaceBelow = scrollHeight - scrollTop - menuTop; - var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom; - var scrollUp = scrollTop + menuTop - marginTop; - var scrollDuration = 160; - switch (preferredPlacement) { - case "auto": - case "bottom": - if (viewSpaceBelow >= menuHeight) { - return { - placement: "bottom", - maxHeight: preferredMaxHeight - }; - } - if (scrollSpaceBelow >= menuHeight && !isFixedPosition) { - if (shouldScroll) { - animatedScrollTo(scrollParent, scrollDown, scrollDuration); - } - return { - placement: "bottom", - maxHeight: preferredMaxHeight - }; - } - if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) { - if (shouldScroll) { - animatedScrollTo(scrollParent, scrollDown, scrollDuration); - } - var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom; - return { - placement: "bottom", - maxHeight: constrainedHeight - }; - } - if (preferredPlacement === "auto" || isFixedPosition) { - var _constrainedHeight = preferredMaxHeight; - var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove; - if (spaceAbove >= minHeight) { - _constrainedHeight = Math.min(spaceAbove - marginBottom - controlHeight, preferredMaxHeight); - } - return { - placement: "top", - maxHeight: _constrainedHeight - }; - } - if (preferredPlacement === "bottom") { - if (shouldScroll) { - scrollTo(scrollParent, scrollDown); - } - return { - placement: "bottom", - maxHeight: preferredMaxHeight - }; - } - break; - case "top": - if (viewSpaceAbove >= menuHeight) { - return { - placement: "top", - maxHeight: preferredMaxHeight - }; - } - if (scrollSpaceAbove >= menuHeight && !isFixedPosition) { - if (shouldScroll) { - animatedScrollTo(scrollParent, scrollUp, scrollDuration); - } - return { - placement: "top", - maxHeight: preferredMaxHeight - }; - } - if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) { - var _constrainedHeight2 = preferredMaxHeight; - if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) { - _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop; - } - if (shouldScroll) { - animatedScrollTo(scrollParent, scrollUp, scrollDuration); - } - return { - placement: "top", - maxHeight: _constrainedHeight2 - }; - } - return { - placement: "bottom", - maxHeight: preferredMaxHeight - }; - default: - throw new Error('Invalid placement provided "'.concat(preferredPlacement, '".')); - } - return defaultState; - } - function alignToControl(placement) { - var placementToCSSProp = { - bottom: "top", - top: "bottom" - }; - return placement ? placementToCSSProp[placement] : "bottom"; - } - var coercePlacement = function coercePlacement2(p2) { - return p2 === "auto" ? "bottom" : p2; - }; - var menuCSS = function menuCSS2(_ref22, unstyled) { - var _objectSpread22; - var placement = _ref22.placement, _ref2$theme = _ref22.theme, borderRadius = _ref2$theme.borderRadius, spacing = _ref2$theme.spacing, colors = _ref2$theme.colors; - return _objectSpread((_objectSpread22 = { - label: "menu" - }, _defineProperty2(_objectSpread22, alignToControl(placement), "100%"), _defineProperty2(_objectSpread22, "position", "absolute"), _defineProperty2(_objectSpread22, "width", "100%"), _defineProperty2(_objectSpread22, "zIndex", 1), _objectSpread22), unstyled ? {} : { - backgroundColor: colors.neutral0, - borderRadius, - boxShadow: "0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)", - marginBottom: spacing.menuGutter, - marginTop: spacing.menuGutter - }); - }; - var PortalPlacementContext = /* @__PURE__ */ React49.createContext(null); - var MenuPlacer = function MenuPlacer2(props) { - var children = props.children, minMenuHeight = props.minMenuHeight, maxMenuHeight = props.maxMenuHeight, menuPlacement = props.menuPlacement, menuPosition = props.menuPosition, menuShouldScrollIntoView = props.menuShouldScrollIntoView, theme = props.theme; - var _ref3 = React49.useContext(PortalPlacementContext) || {}, setPortalPlacement = _ref3.setPortalPlacement; - var ref = React49.useRef(null); - var _useState = React49.useState(maxMenuHeight), _useState2 = _slicedToArray(_useState, 2), maxHeight = _useState2[0], setMaxHeight = _useState2[1]; - var _useState3 = React49.useState(null), _useState4 = _slicedToArray(_useState3, 2), placement = _useState4[0], setPlacement = _useState4[1]; - var controlHeight = theme.spacing.controlHeight; - useLayoutEffect__default["default"](function() { - var menuEl = ref.current; - if (!menuEl) - return; - var isFixedPosition = menuPosition === "fixed"; - var shouldScroll = menuShouldScrollIntoView && !isFixedPosition; - var state = getMenuPlacement({ - maxHeight: maxMenuHeight, - menuEl, - minHeight: minMenuHeight, - placement: menuPlacement, - shouldScroll, - isFixedPosition, - controlHeight - }); - setMaxHeight(state.maxHeight); - setPlacement(state.placement); - setPortalPlacement === null || setPortalPlacement === void 0 ? void 0 : setPortalPlacement(state.placement); - }, [maxMenuHeight, menuPlacement, menuPosition, menuShouldScrollIntoView, minMenuHeight, setPortalPlacement, controlHeight]); - return children({ - ref, - placerProps: _objectSpread(_objectSpread({}, props), {}, { - placement: placement || coercePlacement(menuPlacement), - maxHeight - }) - }); - }; - var Menu3 = function Menu4(props) { - var children = props.children, innerRef = props.innerRef, innerProps = props.innerProps; - return react.jsx("div", _extends2({}, getStyleProps(props, "menu", { - menu: true - }), { - ref: innerRef - }, innerProps), children); - }; - var Menu$1 = Menu3; - var menuListCSS = function menuListCSS2(_ref4, unstyled) { - var maxHeight = _ref4.maxHeight, baseUnit = _ref4.theme.spacing.baseUnit; - return _objectSpread({ - maxHeight, - overflowY: "auto", - position: "relative", - WebkitOverflowScrolling: "touch" - }, unstyled ? {} : { - paddingBottom: baseUnit, - paddingTop: baseUnit - }); - }; - var MenuList = function MenuList2(props) { - var children = props.children, innerProps = props.innerProps, innerRef = props.innerRef, isMulti = props.isMulti; - return react.jsx("div", _extends2({}, getStyleProps(props, "menuList", { - "menu-list": true, - "menu-list--is-multi": isMulti - }), { - ref: innerRef - }, innerProps), children); - }; - var noticeCSS = function noticeCSS2(_ref5, unstyled) { - var _ref5$theme = _ref5.theme, baseUnit = _ref5$theme.spacing.baseUnit, colors = _ref5$theme.colors; - return _objectSpread({ - textAlign: "center" - }, unstyled ? {} : { - color: colors.neutral40, - padding: "".concat(baseUnit * 2, "px ").concat(baseUnit * 3, "px") - }); - }; - var noOptionsMessageCSS = noticeCSS; - var loadingMessageCSS = noticeCSS; - var NoOptionsMessage = function NoOptionsMessage2(props) { - var children = props.children, innerProps = props.innerProps; - return react.jsx("div", _extends2({}, getStyleProps(props, "noOptionsMessage", { - "menu-notice": true, - "menu-notice--no-options": true - }), innerProps), children); - }; - NoOptionsMessage.defaultProps = { - children: "No options" - }; - var LoadingMessage = function LoadingMessage2(props) { - var children = props.children, innerProps = props.innerProps; - return react.jsx("div", _extends2({}, getStyleProps(props, "loadingMessage", { - "menu-notice": true, - "menu-notice--loading": true - }), innerProps), children); - }; - LoadingMessage.defaultProps = { - children: "Loading..." - }; - var menuPortalCSS = function menuPortalCSS2(_ref6) { - var rect = _ref6.rect, offset = _ref6.offset, position = _ref6.position; - return { - left: rect.left, - position, - top: offset, - width: rect.width, - zIndex: 1 - }; - }; - var MenuPortal = function MenuPortal2(props) { - var appendTo = props.appendTo, children = props.children, controlElement = props.controlElement, innerProps = props.innerProps, menuPlacement = props.menuPlacement, menuPosition = props.menuPosition; - var menuPortalRef = React49.useRef(null); - var cleanupRef = React49.useRef(null); - var _useState5 = React49.useState(coercePlacement(menuPlacement)), _useState6 = _slicedToArray(_useState5, 2), placement = _useState6[0], setPortalPlacement = _useState6[1]; - var portalPlacementContext = React49.useMemo(function() { - return { - setPortalPlacement - }; - }, []); - var _useState7 = React49.useState(null), _useState8 = _slicedToArray(_useState7, 2), computedPosition = _useState8[0], setComputedPosition = _useState8[1]; - var updateComputedPosition = React49.useCallback(function() { - if (!controlElement) - return; - var rect = getBoundingClientObj(controlElement); - var scrollDistance = menuPosition === "fixed" ? 0 : window.pageYOffset; - var offset = rect[placement] + scrollDistance; - if (offset !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset) || rect.left !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left) || rect.width !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width)) { - setComputedPosition({ - offset, - rect - }); - } - }, [controlElement, menuPosition, placement, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width]); - useLayoutEffect__default["default"](function() { - updateComputedPosition(); - }, [updateComputedPosition]); - var runAutoUpdate = React49.useCallback(function() { - if (typeof cleanupRef.current === "function") { - cleanupRef.current(); - cleanupRef.current = null; - } - if (controlElement && menuPortalRef.current) { - cleanupRef.current = dom.autoUpdate(controlElement, menuPortalRef.current, updateComputedPosition, { - elementResize: "ResizeObserver" in window - }); - } - }, [controlElement, updateComputedPosition]); - useLayoutEffect__default["default"](function() { - runAutoUpdate(); - }, [runAutoUpdate]); - var setMenuPortalElement = React49.useCallback(function(menuPortalElement) { - menuPortalRef.current = menuPortalElement; - runAutoUpdate(); - }, [runAutoUpdate]); - if (!appendTo && menuPosition !== "fixed" || !computedPosition) - return null; - var menuWrapper = react.jsx("div", _extends2({ - ref: setMenuPortalElement - }, getStyleProps(_objectSpread(_objectSpread({}, props), {}, { - offset: computedPosition.offset, - position: menuPosition, - rect: computedPosition.rect - }), "menuPortal", { - "menu-portal": true - }), innerProps), children); - return react.jsx(PortalPlacementContext.Provider, { - value: portalPlacementContext - }, appendTo ? /* @__PURE__ */ reactDom.createPortal(menuWrapper, appendTo) : menuWrapper); - }; - var containerCSS = function containerCSS2(_ref) { - var isDisabled = _ref.isDisabled, isRtl = _ref.isRtl; - return { - label: "container", - direction: isRtl ? "rtl" : void 0, - pointerEvents: isDisabled ? "none" : void 0, - position: "relative" - }; - }; - var SelectContainer = function SelectContainer2(props) { - var children = props.children, innerProps = props.innerProps, isDisabled = props.isDisabled, isRtl = props.isRtl; - return react.jsx("div", _extends2({}, getStyleProps(props, "container", { - "--is-disabled": isDisabled, - "--is-rtl": isRtl - }), innerProps), children); - }; - var valueContainerCSS = function valueContainerCSS2(_ref22, unstyled) { - var spacing = _ref22.theme.spacing, isMulti = _ref22.isMulti, hasValue = _ref22.hasValue, controlShouldRenderValue = _ref22.selectProps.controlShouldRenderValue; - return _objectSpread({ - alignItems: "center", - display: isMulti && hasValue && controlShouldRenderValue ? "flex" : "grid", - flex: 1, - flexWrap: "wrap", - WebkitOverflowScrolling: "touch", - position: "relative", - overflow: "hidden" - }, unstyled ? {} : { - padding: "".concat(spacing.baseUnit / 2, "px ").concat(spacing.baseUnit * 2, "px") - }); - }; - var ValueContainer = function ValueContainer2(props) { - var children = props.children, innerProps = props.innerProps, isMulti = props.isMulti, hasValue = props.hasValue; - return react.jsx("div", _extends2({}, getStyleProps(props, "valueContainer", { - "value-container": true, - "value-container--is-multi": isMulti, - "value-container--has-value": hasValue - }), innerProps), children); - }; - var indicatorsContainerCSS = function indicatorsContainerCSS2() { - return { - alignItems: "center", - alignSelf: "stretch", - display: "flex", - flexShrink: 0 - }; - }; - var IndicatorsContainer = function IndicatorsContainer2(props) { - var children = props.children, innerProps = props.innerProps; - return react.jsx("div", _extends2({}, getStyleProps(props, "indicatorsContainer", { - indicators: true - }), innerProps), children); - }; - var _templateObject; - var _excluded$2 = ["size"]; - function _EMOTION_STRINGIFIED_CSS_ERROR__() { - return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; - } - var _ref2 = false ? { - name: "8mmkcg", - styles: "display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0" - } : { - name: "tj5bde-Svg", - styles: "display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;label:Svg;", - map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCSSIsImZpbGUiOiJpbmRpY2F0b3JzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4LCBrZXlmcmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7XG4gIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lLFxuICBDU1NPYmplY3RXaXRoTGFiZWwsXG4gIEdyb3VwQmFzZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0U3R5bGVQcm9wcyB9IGZyb20gJy4uL3V0aWxzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHtcbiAgc2l6ZSxcbiAgLi4ucHJvcHNcbn06IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3ZnJ10gJiB7IHNpemU6IG51bWJlciB9KSA9PiAoXG4gIDxzdmdcbiAgICBoZWlnaHQ9e3NpemV9XG4gICAgd2lkdGg9e3NpemV9XG4gICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgY3NzPXt7XG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIGZpbGw6ICdjdXJyZW50Q29sb3InLFxuICAgICAgbGluZUhlaWdodDogMSxcbiAgICAgIHN0cm9rZTogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBzdHJva2VXaWR0aDogMCxcbiAgICB9fVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIENyb3NzSWNvblByb3BzID0gSlNYLkludHJpbnNpY0VsZW1lbnRzWydzdmcnXSAmIHsgc2l6ZT86IG51bWJlciB9O1xuZXhwb3J0IGNvbnN0IENyb3NzSWNvbiA9IChwcm9wczogQ3Jvc3NJY29uUHJvcHMpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCB0eXBlIERvd25DaGV2cm9uUHJvcHMgPSBKU1guSW50cmluc2ljRWxlbWVudHNbJ3N2ZyddICYgeyBzaXplPzogbnVtYmVyIH07XG5leHBvcnQgY29uc3QgRG93bkNoZXZyb24gPSAocHJvcHM6IERvd25DaGV2cm9uUHJvcHMpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTQuNTE2IDcuNTQ4YzAuNDM2LTAuNDQ2IDEuMDQzLTAuNDgxIDEuNTc2IDBsMy45MDggMy43NDcgMy45MDgtMy43NDdjMC41MzMtMC40ODEgMS4xNDEtMC40NDYgMS41NzQgMCAwLjQzNiAwLjQ0NSAwLjQwOCAxLjE5NyAwIDEuNjE1LTAuNDA2IDAuNDE4LTQuNjk1IDQuNTAyLTQuNjk1IDQuNTAyLTAuMjE3IDAuMjIzLTAuNTAyIDAuMzM1LTAuNzg3IDAuMzM1cy0wLjU3LTAuMTEyLTAuNzg5LTAuMzM1YzAgMC00LjI4Ny00LjA4NC00LjY5NS00LjUwMnMtMC40MzYtMS4xNyAwLTEuNjE1elwiIC8+XG4gIDwvU3ZnPlxuKTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEJ1dHRvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8XG4gIE9wdGlvbiA9IHVua25vd24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuID0gYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPiA9IEdyb3VwQmFzZTxPcHRpb24+XG4+IGV4dGVuZHMgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWU8T3B0aW9uLCBJc011bHRpLCBHcm91cD4ge1xuICAvKiogVGhlIGNoaWxkcmVuIHRvIGJlIHJlbmRlcmVkIGluc2lkZSB0aGUgaW5kaWNhdG9yLiAqL1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xufVxuXG5jb25zdCBiYXNlQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNGb2N1c2VkLFxuICAgIHRoZW1lOiB7XG4gICAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgICBjb2xvcnMsXG4gICAgfSxcbiAgfTpcbiAgICB8IERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbiAgICB8IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JDb250YWluZXInLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gICAgICAgICc6aG92ZXInOiB7XG4gICAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsODAgOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgICAgICB9LFxuICAgICAgfSksXG59KTtcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBEcm9wZG93bkluZGljYXRvciA9IDxcbiAgT3B0aW9uLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPlxuPihcbiAgcHJvcHM6IERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2Ryb3Bkb3duSW5kaWNhdG9yJywge1xuICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgfSl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBDbGVhckluZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydkaXYnXTtcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IDxcbiAgT3B0aW9uLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPlxuPihcbiAgcHJvcHM6IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2NsZWFySW5kaWNhdG9yJywge1xuICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgfSl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPENyb3NzSWNvbiAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VwYXJhdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBJbmRpY2F0b3JTZXBhcmF0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbiAgaW5uZXJQcm9wcz86IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3BhbiddO1xufVxuXG5leHBvcnQgY29uc3QgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNEaXNhYmxlZCxcbiAgICB0aGVtZToge1xuICAgICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgICAgY29sb3JzLFxuICAgIH0sXG4gIH06IEluZGljYXRvclNlcGFyYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+LFxuICB1bnN0eWxlZDogYm9vbGVhblxuKTogQ1NTT2JqZWN0V2l0aExhYmVsID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yU2VwYXJhdG9yJyxcbiAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gIHdpZHRoOiAxLFxuICAuLi4odW5zdHlsZWRcbiAgICA/IHt9XG4gICAgOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsMTAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBtYXJnaW5Cb3R0b206IGJhc2VVbml0ICogMixcbiAgICAgICAgbWFyZ2luVG9wOiBiYXNlVW5pdCAqIDIsXG4gICAgICB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogSW5kaWNhdG9yU2VwYXJhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnaW5kaWNhdG9yU2VwYXJhdG9yJywge1xuICAgICAgICAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNGb2N1c2VkLFxuICAgIHNpemUsXG4gICAgdGhlbWU6IHtcbiAgICAgIGNvbG9ycyxcbiAgICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICB9LFxuICB9OiBMb2FkaW5nSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICAuLi4odW5zdHlsZWRcbiAgICA/IHt9XG4gICAgOiB7XG4gICAgICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICAgICAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICAgICAgfSksXG59KTtcblxuaW50ZXJmYWNlIExvYWRpbmdEb3RQcm9wcyB7XG4gIGRlbGF5OiBudW1iZXI7XG4gIG9mZnNldDogYm9vbGVhbjtcbn1cbmNvbnN0IExvYWRpbmdEb3QgPSAoeyBkZWxheSwgb2Zmc2V0IH06IExvYWRpbmdEb3RQcm9wcykgPT4gKFxuICA8c3BhblxuICAgIGNzcz17e1xuICAgICAgYW5pbWF0aW9uOiBgJHtsb2FkaW5nRG90QW5pbWF0aW9uc30gMXMgZWFzZS1pbi1vdXQgJHtkZWxheX1tcyBpbmZpbml0ZTtgLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGJvcmRlclJhZGl1czogJzFlbScsXG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIG1hcmdpbkxlZnQ6IG9mZnNldCA/ICcxZW0nIDogdW5kZWZpbmVkLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRpbmdJbmRpY2F0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydkaXYnXTtcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgLyoqIFNldCBzaXplIG9mIHRoZSBjb250YWluZXIuICovXG4gIHNpemU6IG51bWJlcjtcbn1cbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogTG9hZGluZ0luZGljYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+XG4pID0+IHtcbiAgY29uc3QgeyBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2xvYWRpbmdJbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2xvYWRpbmctaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgIH0pfVxuICAgICAgey4uLmlubmVyUHJvcHN9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */", - toString: _EMOTION_STRINGIFIED_CSS_ERROR__ - }; - var Svg = function Svg2(_ref) { - var size = _ref.size, props = _objectWithoutProperties(_ref, _excluded$2); - return react.jsx("svg", _extends2({ - height: size, - width: size, - viewBox: "0 0 20 20", - "aria-hidden": "true", - focusable: "false", - css: _ref2 - }, props)); - }; - var CrossIcon = function CrossIcon2(props) { - return react.jsx(Svg, _extends2({ - size: 20 - }, props), react.jsx("path", { - d: "M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z" - })); - }; - var DownChevron = function DownChevron2(props) { - return react.jsx(Svg, _extends2({ - size: 20 - }, props), react.jsx("path", { - d: "M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z" - })); - }; - var baseCSS = function baseCSS2(_ref3, unstyled) { - var isFocused = _ref3.isFocused, _ref3$theme = _ref3.theme, baseUnit = _ref3$theme.spacing.baseUnit, colors = _ref3$theme.colors; - return _objectSpread({ - label: "indicatorContainer", - display: "flex", - transition: "color 150ms" - }, unstyled ? {} : { - color: isFocused ? colors.neutral60 : colors.neutral20, - padding: baseUnit * 2, - ":hover": { - color: isFocused ? colors.neutral80 : colors.neutral40 - } - }); - }; - var dropdownIndicatorCSS = baseCSS; - var DropdownIndicator = function DropdownIndicator2(props) { - var children = props.children, innerProps = props.innerProps; - return react.jsx("div", _extends2({}, getStyleProps(props, "dropdownIndicator", { - indicator: true, - "dropdown-indicator": true - }), innerProps), children || react.jsx(DownChevron, null)); - }; - var clearIndicatorCSS = baseCSS; - var ClearIndicator = function ClearIndicator2(props) { - var children = props.children, innerProps = props.innerProps; - return react.jsx("div", _extends2({}, getStyleProps(props, "clearIndicator", { - indicator: true, - "clear-indicator": true - }), innerProps), children || react.jsx(CrossIcon, null)); - }; - var indicatorSeparatorCSS = function indicatorSeparatorCSS2(_ref4, unstyled) { - var isDisabled = _ref4.isDisabled, _ref4$theme = _ref4.theme, baseUnit = _ref4$theme.spacing.baseUnit, colors = _ref4$theme.colors; - return _objectSpread({ - label: "indicatorSeparator", - alignSelf: "stretch", - width: 1 - }, unstyled ? {} : { - backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20, - marginBottom: baseUnit * 2, - marginTop: baseUnit * 2 - }); - }; - var IndicatorSeparator = function IndicatorSeparator2(props) { - var innerProps = props.innerProps; - return react.jsx("span", _extends2({}, innerProps, getStyleProps(props, "indicatorSeparator", { - "indicator-separator": true - }))); - }; - var loadingDotAnimations = react.keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n 0%, 80%, 100% { opacity: 0; }\n 40% { opacity: 1; }\n"]))); - var loadingIndicatorCSS = function loadingIndicatorCSS2(_ref5, unstyled) { - var isFocused = _ref5.isFocused, size = _ref5.size, _ref5$theme = _ref5.theme, colors = _ref5$theme.colors, baseUnit = _ref5$theme.spacing.baseUnit; - return _objectSpread({ - label: "loadingIndicator", - display: "flex", - transition: "color 150ms", - alignSelf: "center", - fontSize: size, - lineHeight: 1, - marginRight: size, - textAlign: "center", - verticalAlign: "middle" - }, unstyled ? {} : { - color: isFocused ? colors.neutral60 : colors.neutral20, - padding: baseUnit * 2 - }); - }; - var LoadingDot = function LoadingDot2(_ref6) { - var delay = _ref6.delay, offset = _ref6.offset; - return react.jsx("span", { - css: /* @__PURE__ */ react.css({ - animation: "".concat(loadingDotAnimations, " 1s ease-in-out ").concat(delay, "ms infinite;"), - backgroundColor: "currentColor", - borderRadius: "1em", - display: "inline-block", - marginLeft: offset ? "1em" : void 0, - height: "1em", - verticalAlign: "top", - width: "1em" - }, false ? "" : ";label:LoadingDot;", false ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1RSSIsImZpbGUiOiJpbmRpY2F0b3JzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4LCBrZXlmcmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7XG4gIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lLFxuICBDU1NPYmplY3RXaXRoTGFiZWwsXG4gIEdyb3VwQmFzZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0U3R5bGVQcm9wcyB9IGZyb20gJy4uL3V0aWxzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHtcbiAgc2l6ZSxcbiAgLi4ucHJvcHNcbn06IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3ZnJ10gJiB7IHNpemU6IG51bWJlciB9KSA9PiAoXG4gIDxzdmdcbiAgICBoZWlnaHQ9e3NpemV9XG4gICAgd2lkdGg9e3NpemV9XG4gICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgY3NzPXt7XG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIGZpbGw6ICdjdXJyZW50Q29sb3InLFxuICAgICAgbGluZUhlaWdodDogMSxcbiAgICAgIHN0cm9rZTogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBzdHJva2VXaWR0aDogMCxcbiAgICB9fVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIENyb3NzSWNvblByb3BzID0gSlNYLkludHJpbnNpY0VsZW1lbnRzWydzdmcnXSAmIHsgc2l6ZT86IG51bWJlciB9O1xuZXhwb3J0IGNvbnN0IENyb3NzSWNvbiA9IChwcm9wczogQ3Jvc3NJY29uUHJvcHMpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCB0eXBlIERvd25DaGV2cm9uUHJvcHMgPSBKU1guSW50cmluc2ljRWxlbWVudHNbJ3N2ZyddICYgeyBzaXplPzogbnVtYmVyIH07XG5leHBvcnQgY29uc3QgRG93bkNoZXZyb24gPSAocHJvcHM6IERvd25DaGV2cm9uUHJvcHMpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTQuNTE2IDcuNTQ4YzAuNDM2LTAuNDQ2IDEuMDQzLTAuNDgxIDEuNTc2IDBsMy45MDggMy43NDcgMy45MDgtMy43NDdjMC41MzMtMC40ODEgMS4xNDEtMC40NDYgMS41NzQgMCAwLjQzNiAwLjQ0NSAwLjQwOCAxLjE5NyAwIDEuNjE1LTAuNDA2IDAuNDE4LTQuNjk1IDQuNTAyLTQuNjk1IDQuNTAyLTAuMjE3IDAuMjIzLTAuNTAyIDAuMzM1LTAuNzg3IDAuMzM1cy0wLjU3LTAuMTEyLTAuNzg5LTAuMzM1YzAgMC00LjI4Ny00LjA4NC00LjY5NS00LjUwMnMtMC40MzYtMS4xNyAwLTEuNjE1elwiIC8+XG4gIDwvU3ZnPlxuKTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEJ1dHRvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8XG4gIE9wdGlvbiA9IHVua25vd24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuID0gYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPiA9IEdyb3VwQmFzZTxPcHRpb24+XG4+IGV4dGVuZHMgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWU8T3B0aW9uLCBJc011bHRpLCBHcm91cD4ge1xuICAvKiogVGhlIGNoaWxkcmVuIHRvIGJlIHJlbmRlcmVkIGluc2lkZSB0aGUgaW5kaWNhdG9yLiAqL1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xufVxuXG5jb25zdCBiYXNlQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNGb2N1c2VkLFxuICAgIHRoZW1lOiB7XG4gICAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgICBjb2xvcnMsXG4gICAgfSxcbiAgfTpcbiAgICB8IERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbiAgICB8IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JDb250YWluZXInLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gICAgICAgICc6aG92ZXInOiB7XG4gICAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsODAgOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgICAgICB9LFxuICAgICAgfSksXG59KTtcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBEcm9wZG93bkluZGljYXRvciA9IDxcbiAgT3B0aW9uLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPlxuPihcbiAgcHJvcHM6IERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2Ryb3Bkb3duSW5kaWNhdG9yJywge1xuICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgfSl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBDbGVhckluZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydkaXYnXTtcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IDxcbiAgT3B0aW9uLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPlxuPihcbiAgcHJvcHM6IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2NsZWFySW5kaWNhdG9yJywge1xuICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgfSl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPENyb3NzSWNvbiAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VwYXJhdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBJbmRpY2F0b3JTZXBhcmF0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbiAgaW5uZXJQcm9wcz86IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3BhbiddO1xufVxuXG5leHBvcnQgY29uc3QgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNEaXNhYmxlZCxcbiAgICB0aGVtZToge1xuICAgICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgICAgY29sb3JzLFxuICAgIH0sXG4gIH06IEluZGljYXRvclNlcGFyYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+LFxuICB1bnN0eWxlZDogYm9vbGVhblxuKTogQ1NTT2JqZWN0V2l0aExhYmVsID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yU2VwYXJhdG9yJyxcbiAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gIHdpZHRoOiAxLFxuICAuLi4odW5zdHlsZWRcbiAgICA/IHt9XG4gICAgOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsMTAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBtYXJnaW5Cb3R0b206IGJhc2VVbml0ICogMixcbiAgICAgICAgbWFyZ2luVG9wOiBiYXNlVW5pdCAqIDIsXG4gICAgICB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogSW5kaWNhdG9yU2VwYXJhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnaW5kaWNhdG9yU2VwYXJhdG9yJywge1xuICAgICAgICAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNGb2N1c2VkLFxuICAgIHNpemUsXG4gICAgdGhlbWU6IHtcbiAgICAgIGNvbG9ycyxcbiAgICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICB9LFxuICB9OiBMb2FkaW5nSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICAuLi4odW5zdHlsZWRcbiAgICA/IHt9XG4gICAgOiB7XG4gICAgICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICAgICAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICAgICAgfSksXG59KTtcblxuaW50ZXJmYWNlIExvYWRpbmdEb3RQcm9wcyB7XG4gIGRlbGF5OiBudW1iZXI7XG4gIG9mZnNldDogYm9vbGVhbjtcbn1cbmNvbnN0IExvYWRpbmdEb3QgPSAoeyBkZWxheSwgb2Zmc2V0IH06IExvYWRpbmdEb3RQcm9wcykgPT4gKFxuICA8c3BhblxuICAgIGNzcz17e1xuICAgICAgYW5pbWF0aW9uOiBgJHtsb2FkaW5nRG90QW5pbWF0aW9uc30gMXMgZWFzZS1pbi1vdXQgJHtkZWxheX1tcyBpbmZpbml0ZTtgLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGJvcmRlclJhZGl1czogJzFlbScsXG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIG1hcmdpbkxlZnQ6IG9mZnNldCA/ICcxZW0nIDogdW5kZWZpbmVkLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRpbmdJbmRpY2F0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydkaXYnXTtcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgLyoqIFNldCBzaXplIG9mIHRoZSBjb250YWluZXIuICovXG4gIHNpemU6IG51bWJlcjtcbn1cbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogTG9hZGluZ0luZGljYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+XG4pID0+IHtcbiAgY29uc3QgeyBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2xvYWRpbmdJbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2xvYWRpbmctaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgIH0pfVxuICAgICAgey4uLmlubmVyUHJvcHN9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */") - }); - }; - var LoadingIndicator = function LoadingIndicator2(props) { - var innerProps = props.innerProps, isRtl = props.isRtl; - return react.jsx("div", _extends2({}, getStyleProps(props, "loadingIndicator", { - indicator: true, - "loading-indicator": true - }), innerProps), react.jsx(LoadingDot, { - delay: 0, - offset: isRtl - }), react.jsx(LoadingDot, { - delay: 160, - offset: true - }), react.jsx(LoadingDot, { - delay: 320, - offset: !isRtl - })); - }; - LoadingIndicator.defaultProps = { - size: 4 - }; - var css$1 = function css3(_ref, unstyled) { - var isDisabled = _ref.isDisabled, isFocused = _ref.isFocused, _ref$theme = _ref.theme, colors = _ref$theme.colors, borderRadius = _ref$theme.borderRadius, spacing = _ref$theme.spacing; - return _objectSpread({ - label: "control", - alignItems: "center", - cursor: "default", - display: "flex", - flexWrap: "wrap", - justifyContent: "space-between", - minHeight: spacing.controlHeight, - outline: "0 !important", - position: "relative", - transition: "all 100ms" - }, unstyled ? {} : { - backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0, - borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20, - borderRadius, - borderStyle: "solid", - borderWidth: 1, - boxShadow: isFocused ? "0 0 0 1px ".concat(colors.primary) : void 0, - "&:hover": { - borderColor: isFocused ? colors.primary : colors.neutral30 - } - }); - }; - var Control = function Control2(props) { - var children = props.children, isDisabled = props.isDisabled, isFocused = props.isFocused, innerRef = props.innerRef, innerProps = props.innerProps, menuIsOpen = props.menuIsOpen; - return react.jsx("div", _extends2({ - ref: innerRef - }, getStyleProps(props, "control", { - control: true, - "control--is-disabled": isDisabled, - "control--is-focused": isFocused, - "control--menu-is-open": menuIsOpen - }), innerProps), children); - }; - var Control$1 = Control; - var _excluded$1 = ["data"]; - var groupCSS = function groupCSS2(_ref, unstyled) { - var spacing = _ref.theme.spacing; - return unstyled ? {} : { - paddingBottom: spacing.baseUnit * 2, - paddingTop: spacing.baseUnit * 2 - }; - }; - var Group = function Group2(props) { - var children = props.children, cx = props.cx, getStyles = props.getStyles, getClassNames = props.getClassNames, Heading = props.Heading, headingProps = props.headingProps, innerProps = props.innerProps, label = props.label, theme = props.theme, selectProps = props.selectProps; - return react.jsx("div", _extends2({}, getStyleProps(props, "group", { - group: true - }), innerProps), react.jsx(Heading, _extends2({}, headingProps, { - selectProps, - theme, - getStyles, - getClassNames, - cx - }), label), react.jsx("div", null, children)); - }; - var groupHeadingCSS = function groupHeadingCSS2(_ref22, unstyled) { - var _ref2$theme = _ref22.theme, colors = _ref2$theme.colors, spacing = _ref2$theme.spacing; - return _objectSpread({ - label: "group", - cursor: "default", - display: "block" - }, unstyled ? {} : { - color: colors.neutral40, - fontSize: "75%", - fontWeight: 500, - marginBottom: "0.25em", - paddingLeft: spacing.baseUnit * 3, - paddingRight: spacing.baseUnit * 3, - textTransform: "uppercase" - }); - }; - var GroupHeading = function GroupHeading2(props) { - var _cleanCommonProps = cleanCommonProps(props); - _cleanCommonProps.data; - var innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded$1); - return react.jsx("div", _extends2({}, getStyleProps(props, "groupHeading", { - "group-heading": true - }), innerProps)); - }; - var Group$1 = Group; - var _excluded = ["innerRef", "isDisabled", "isHidden", "inputClassName"]; - var inputCSS = function inputCSS2(_ref, unstyled) { - var isDisabled = _ref.isDisabled, value = _ref.value, _ref$theme = _ref.theme, spacing = _ref$theme.spacing, colors = _ref$theme.colors; - return _objectSpread(_objectSpread({ - visibility: isDisabled ? "hidden" : "visible", - transform: value ? "translateZ(0)" : "" - }, containerStyle2), unstyled ? {} : { - margin: spacing.baseUnit / 2, - paddingBottom: spacing.baseUnit / 2, - paddingTop: spacing.baseUnit / 2, - color: colors.neutral80 - }); - }; - var spacingStyle = { - gridArea: "1 / 2", - font: "inherit", - minWidth: "2px", - border: 0, - margin: 0, - outline: 0, - padding: 0 - }; - var containerStyle2 = { - flex: "1 1 auto", - display: "inline-grid", - gridArea: "1 / 1 / 2 / 3", - gridTemplateColumns: "0 min-content", - "&:after": _objectSpread({ - content: 'attr(data-value) " "', - visibility: "hidden", - whiteSpace: "pre" - }, spacingStyle) - }; - var inputStyle = function inputStyle2(isHidden) { - return _objectSpread({ - label: "input", - color: "inherit", - background: 0, - opacity: isHidden ? 0 : 1, - width: "100%" - }, spacingStyle); - }; - var Input = function Input2(props) { - var cx = props.cx, value = props.value; - var _cleanCommonProps = cleanCommonProps(props), innerRef = _cleanCommonProps.innerRef, isDisabled = _cleanCommonProps.isDisabled, isHidden = _cleanCommonProps.isHidden, inputClassName = _cleanCommonProps.inputClassName, innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded); - return react.jsx("div", _extends2({}, getStyleProps(props, "input", { - "input-container": true - }), { - "data-value": value || "" - }), react.jsx("input", _extends2({ - className: cx({ - input: true - }, inputClassName), - ref: innerRef, - style: inputStyle(isHidden), - disabled: isDisabled - }, innerProps))); - }; - var Input$1 = Input; - var multiValueCSS = function multiValueCSS2(_ref, unstyled) { - var _ref$theme = _ref.theme, spacing = _ref$theme.spacing, borderRadius = _ref$theme.borderRadius, colors = _ref$theme.colors; - return _objectSpread({ - label: "multiValue", - display: "flex", - minWidth: 0 - }, unstyled ? {} : { - backgroundColor: colors.neutral10, - borderRadius: borderRadius / 2, - margin: spacing.baseUnit / 2 - }); - }; - var multiValueLabelCSS = function multiValueLabelCSS2(_ref22, unstyled) { - var _ref2$theme = _ref22.theme, borderRadius = _ref2$theme.borderRadius, colors = _ref2$theme.colors, cropWithEllipsis = _ref22.cropWithEllipsis; - return _objectSpread({ - overflow: "hidden", - textOverflow: cropWithEllipsis || cropWithEllipsis === void 0 ? "ellipsis" : void 0, - whiteSpace: "nowrap" - }, unstyled ? {} : { - borderRadius: borderRadius / 2, - color: colors.neutral80, - fontSize: "85%", - padding: 3, - paddingLeft: 6 - }); - }; - var multiValueRemoveCSS = function multiValueRemoveCSS2(_ref3, unstyled) { - var _ref3$theme = _ref3.theme, spacing = _ref3$theme.spacing, borderRadius = _ref3$theme.borderRadius, colors = _ref3$theme.colors, isFocused = _ref3.isFocused; - return _objectSpread({ - alignItems: "center", - display: "flex" - }, unstyled ? {} : { - borderRadius: borderRadius / 2, - backgroundColor: isFocused ? colors.dangerLight : void 0, - paddingLeft: spacing.baseUnit, - paddingRight: spacing.baseUnit, - ":hover": { - backgroundColor: colors.dangerLight, - color: colors.danger - } - }); - }; - var MultiValueGeneric = function MultiValueGeneric2(_ref4) { - var children = _ref4.children, innerProps = _ref4.innerProps; - return react.jsx("div", innerProps, children); - }; - var MultiValueContainer = MultiValueGeneric; - var MultiValueLabel = MultiValueGeneric; - function MultiValueRemove(_ref5) { - var children = _ref5.children, innerProps = _ref5.innerProps; - return react.jsx("div", _extends2({ - role: "button" - }, innerProps), children || react.jsx(CrossIcon, { - size: 14 - })); - } - var MultiValue = function MultiValue2(props) { - var children = props.children, components2 = props.components, data = props.data, innerProps = props.innerProps, isDisabled = props.isDisabled, removeProps2 = props.removeProps, selectProps = props.selectProps; - var Container = components2.Container, Label = components2.Label, Remove = components2.Remove; - return react.jsx(Container, { - data, - innerProps: _objectSpread(_objectSpread({}, getStyleProps(props, "multiValue", { - "multi-value": true, - "multi-value--is-disabled": isDisabled - })), innerProps), - selectProps - }, react.jsx(Label, { - data, - innerProps: _objectSpread({}, getStyleProps(props, "multiValueLabel", { - "multi-value__label": true - })), - selectProps - }, children), react.jsx(Remove, { - data, - innerProps: _objectSpread(_objectSpread({}, getStyleProps(props, "multiValueRemove", { - "multi-value__remove": true - })), {}, { - "aria-label": "Remove ".concat(children || "option") - }, removeProps2), - selectProps - })); - }; - var MultiValue$1 = MultiValue; - var optionCSS = function optionCSS2(_ref, unstyled) { - var isDisabled = _ref.isDisabled, isFocused = _ref.isFocused, isSelected = _ref.isSelected, _ref$theme = _ref.theme, spacing = _ref$theme.spacing, colors = _ref$theme.colors; - return _objectSpread({ - label: "option", - cursor: "default", - display: "block", - fontSize: "inherit", - width: "100%", - userSelect: "none", - WebkitTapHighlightColor: "rgba(0, 0, 0, 0)" - }, unstyled ? {} : { - backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : "transparent", - color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : "inherit", - padding: "".concat(spacing.baseUnit * 2, "px ").concat(spacing.baseUnit * 3, "px"), - ":active": { - backgroundColor: !isDisabled ? isSelected ? colors.primary : colors.primary50 : void 0 - } - }); - }; - var Option = function Option2(props) { - var children = props.children, isDisabled = props.isDisabled, isFocused = props.isFocused, isSelected = props.isSelected, innerRef = props.innerRef, innerProps = props.innerProps; - return react.jsx("div", _extends2({}, getStyleProps(props, "option", { - option: true, - "option--is-disabled": isDisabled, - "option--is-focused": isFocused, - "option--is-selected": isSelected - }), { - ref: innerRef, - "aria-disabled": isDisabled - }, innerProps), children); - }; - var Option$1 = Option; - var placeholderCSS = function placeholderCSS2(_ref, unstyled) { - var _ref$theme = _ref.theme, spacing = _ref$theme.spacing, colors = _ref$theme.colors; - return _objectSpread({ - label: "placeholder", - gridArea: "1 / 1 / 2 / 3" - }, unstyled ? {} : { - color: colors.neutral50, - marginLeft: spacing.baseUnit / 2, - marginRight: spacing.baseUnit / 2 - }); - }; - var Placeholder = function Placeholder2(props) { - var children = props.children, innerProps = props.innerProps; - return react.jsx("div", _extends2({}, getStyleProps(props, "placeholder", { - placeholder: true - }), innerProps), children); - }; - var Placeholder$1 = Placeholder; - var css2 = function css3(_ref, unstyled) { - var isDisabled = _ref.isDisabled, _ref$theme = _ref.theme, spacing = _ref$theme.spacing, colors = _ref$theme.colors; - return _objectSpread({ - label: "singleValue", - gridArea: "1 / 1 / 2 / 3", - maxWidth: "100%", - overflow: "hidden", - textOverflow: "ellipsis", - whiteSpace: "nowrap" - }, unstyled ? {} : { - color: isDisabled ? colors.neutral40 : colors.neutral80, - marginLeft: spacing.baseUnit / 2, - marginRight: spacing.baseUnit / 2 - }); - }; - var SingleValue = function SingleValue2(props) { - var children = props.children, isDisabled = props.isDisabled, innerProps = props.innerProps; - return react.jsx("div", _extends2({}, getStyleProps(props, "singleValue", { - "single-value": true, - "single-value--is-disabled": isDisabled - }), innerProps), children); - }; - var SingleValue$1 = SingleValue; - var components = { - ClearIndicator, - Control: Control$1, - DropdownIndicator, - DownChevron, - CrossIcon, - Group: Group$1, - GroupHeading, - IndicatorsContainer, - IndicatorSeparator, - Input: Input$1, - LoadingIndicator, - Menu: Menu$1, - MenuList, - MenuPortal, - LoadingMessage, - NoOptionsMessage, - MultiValue: MultiValue$1, - MultiValueContainer, - MultiValueLabel, - MultiValueRemove, - Option: Option$1, - Placeholder: Placeholder$1, - SelectContainer, - SingleValue: SingleValue$1, - ValueContainer - }; - var defaultComponents = function defaultComponents2(props) { - return _objectSpread(_objectSpread({}, components), props.components); - }; - exports.MenuPlacer = MenuPlacer; - exports.classNames = classNames; - exports.cleanValue = cleanValue; - exports.clearIndicatorCSS = clearIndicatorCSS; - exports.components = components; - exports.containerCSS = containerCSS; - exports.css = css$1; - exports.css$1 = css2; - exports.defaultComponents = defaultComponents; - exports.dropdownIndicatorCSS = dropdownIndicatorCSS; - exports.groupCSS = groupCSS; - exports.groupHeadingCSS = groupHeadingCSS; - exports.handleInputChange = handleInputChange; - exports.indicatorSeparatorCSS = indicatorSeparatorCSS; - exports.indicatorsContainerCSS = indicatorsContainerCSS; - exports.inputCSS = inputCSS; - exports.isDocumentElement = isDocumentElement; - exports.isMobileDevice = isMobileDevice; - exports.isTouchCapable = isTouchCapable; - exports.loadingIndicatorCSS = loadingIndicatorCSS; - exports.loadingMessageCSS = loadingMessageCSS; - exports.menuCSS = menuCSS; - exports.menuListCSS = menuListCSS; - exports.menuPortalCSS = menuPortalCSS; - exports.multiValueAsValue = multiValueAsValue; - exports.multiValueCSS = multiValueCSS; - exports.multiValueLabelCSS = multiValueLabelCSS; - exports.multiValueRemoveCSS = multiValueRemoveCSS; - exports.noOptionsMessageCSS = noOptionsMessageCSS; - exports.noop = noop2; - exports.notNullish = notNullish; - exports.optionCSS = optionCSS; - exports.placeholderCSS = placeholderCSS; - exports.removeProps = removeProps; - exports.scrollIntoView = scrollIntoView; - exports.singleValueAsValue = singleValueAsValue; - exports.supportsPassiveEvents = supportsPassiveEvents; - exports.valueContainerCSS = valueContainerCSS; - exports.valueTernary = valueTernary; - } -}); - -// node_modules/memoize-one/dist/memoize-one.cjs.js -var require_memoize_one_cjs = __commonJS({ - "node_modules/memoize-one/dist/memoize-one.cjs.js"(exports, module2) { - "use strict"; - var safeIsNaN = Number.isNaN || function ponyfill(value) { - return typeof value === "number" && value !== value; - }; - function isEqual(first, second) { - if (first === second) { - return true; - } - if (safeIsNaN(first) && safeIsNaN(second)) { - return true; - } - return false; - } - function areInputsEqual(newInputs, lastInputs) { - if (newInputs.length !== lastInputs.length) { - return false; - } - for (var i2 = 0; i2 < newInputs.length; i2++) { - if (!isEqual(newInputs[i2], lastInputs[i2])) { - return false; - } - } - return true; - } - function memoizeOne(resultFn, isEqual2) { - if (isEqual2 === void 0) { - isEqual2 = areInputsEqual; - } - var cache = null; - function memoized() { - var newArgs = []; - for (var _i = 0; _i < arguments.length; _i++) { - newArgs[_i] = arguments[_i]; - } - if (cache && cache.lastThis === this && isEqual2(newArgs, cache.lastArgs)) { - return cache.lastResult; - } - var lastResult = resultFn.apply(this, newArgs); - cache = { - lastResult, - lastArgs: newArgs, - lastThis: this - }; - return lastResult; - } - memoized.clear = function clear() { - cache = null; - }; - return memoized; - } - module2.exports = memoizeOne; - } -}); - -// node_modules/react-select/dist/Select-5041a4f3.cjs.dev.js -var require_Select_5041a4f3_cjs_dev = __commonJS({ - "node_modules/react-select/dist/Select-5041a4f3.cjs.dev.js"(exports) { - "use strict"; - var _extends2 = require_extends2(); - var _objectSpread = require_objectSpread2(); - var _classCallCheck = require_classCallCheck(); - var _createClass = require_createClass(); - var _inherits = require_inherits(); - var _createSuper = require_createSuper(); - var _toConsumableArray = require_toConsumableArray(); - var React49 = require_react(); - var index = require_index_2fe3dc33_cjs_dev(); - var react = require_emotion_react_cjs(); - var memoizeOne = require_memoize_one_cjs(); - var _objectWithoutProperties = require_objectWithoutProperties(); - function _interopDefault(e) { - return e && e.__esModule ? e : { "default": e }; - } - function _interopNamespace(e) { - if (e && e.__esModule) - return e; - var n2 = /* @__PURE__ */ Object.create(null); - if (e) { - Object.keys(e).forEach(function(k2) { - if (k2 !== "default") { - var d2 = Object.getOwnPropertyDescriptor(e, k2); - Object.defineProperty(n2, k2, d2.get ? d2 : { - enumerable: true, - get: function() { - return e[k2]; - } - }); - } - }); - } - n2["default"] = e; - return Object.freeze(n2); - } - var React__namespace = /* @__PURE__ */ _interopNamespace(React49); - var memoizeOne__default = /* @__PURE__ */ _interopDefault(memoizeOne); - function _EMOTION_STRINGIFIED_CSS_ERROR__$2() { - return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; - } - var _ref = false ? { - name: "7pg0cj-a11yText", - styles: "label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap" - } : { - name: "1f43avz-a11yText-A11yText", - styles: "label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;label:A11yText;", - map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNSSIsImZpbGUiOiJBMTF5VGV4dC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuLy8gQXNzaXN0aXZlIHRleHQgdG8gZGVzY3JpYmUgdmlzdWFsIGVsZW1lbnRzLiBIaWRkZW4gZm9yIHNpZ2h0ZWQgdXNlcnMuXG5jb25zdCBBMTF5VGV4dCA9IChwcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ10pID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAnYTExeVRleHQnLFxuICAgICAgekluZGV4OiA5OTk5LFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICB3aWR0aDogMSxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQTExeVRleHQ7XG4iXX0= */", - toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2 - }; - var A11yText = function A11yText2(props) { - return react.jsx("span", _extends2({ - css: _ref - }, props)); - }; - var A11yText$1 = A11yText; - var defaultAriaLiveMessages = { - guidance: function guidance(props) { - var isSearchable = props.isSearchable, isMulti = props.isMulti, isDisabled = props.isDisabled, tabSelectsValue = props.tabSelectsValue, context = props.context; - switch (context) { - case "menu": - return "Use Up and Down to choose options".concat(isDisabled ? "" : ", press Enter to select the currently focused option", ", press Escape to exit the menu").concat(tabSelectsValue ? ", press Tab to select the option and exit the menu" : "", "."); - case "input": - return "".concat(props["aria-label"] || "Select", " is focused ").concat(isSearchable ? ",type to refine list" : "", ", press Down to open the menu, ").concat(isMulti ? " press left to focus selected values" : ""); - case "value": - return "Use left and right to toggle between focused values, press Backspace to remove the currently focused value"; - default: - return ""; - } - }, - onChange: function onChange(props) { - var action = props.action, _props$label = props.label, label = _props$label === void 0 ? "" : _props$label, labels = props.labels, isDisabled = props.isDisabled; - switch (action) { - case "deselect-option": - case "pop-value": - case "remove-value": - return "option ".concat(label, ", deselected."); - case "clear": - return "All selected options have been cleared."; - case "initial-input-focus": - return "option".concat(labels.length > 1 ? "s" : "", " ").concat(labels.join(","), ", selected."); - case "select-option": - return isDisabled ? "option ".concat(label, " is disabled. Select another option.") : "option ".concat(label, ", selected."); - default: - return ""; - } - }, - onFocus: function onFocus(props) { - var context = props.context, focused = props.focused, options = props.options, _props$label2 = props.label, label = _props$label2 === void 0 ? "" : _props$label2, selectValue = props.selectValue, isDisabled = props.isDisabled, isSelected = props.isSelected; - var getArrayIndex = function getArrayIndex2(arr, item) { - return arr && arr.length ? "".concat(arr.indexOf(item) + 1, " of ").concat(arr.length) : ""; - }; - if (context === "value" && selectValue) { - return "value ".concat(label, " focused, ").concat(getArrayIndex(selectValue, focused), "."); - } - if (context === "menu") { - var disabled = isDisabled ? " disabled" : ""; - var status = "".concat(isSelected ? "selected" : "focused").concat(disabled); - return "option ".concat(label, " ").concat(status, ", ").concat(getArrayIndex(options, focused), "."); - } - return ""; - }, - onFilter: function onFilter(props) { - var inputValue = props.inputValue, resultsMessage = props.resultsMessage; - return "".concat(resultsMessage).concat(inputValue ? " for search term " + inputValue : "", "."); - } - }; - var LiveRegion = function LiveRegion2(props) { - var ariaSelection = props.ariaSelection, focusedOption = props.focusedOption, focusedValue = props.focusedValue, focusableOptions = props.focusableOptions, isFocused = props.isFocused, selectValue = props.selectValue, selectProps = props.selectProps, id2 = props.id; - var ariaLiveMessages = selectProps.ariaLiveMessages, getOptionLabel2 = selectProps.getOptionLabel, inputValue = selectProps.inputValue, isMulti = selectProps.isMulti, isOptionDisabled2 = selectProps.isOptionDisabled, isSearchable = selectProps.isSearchable, menuIsOpen = selectProps.menuIsOpen, options = selectProps.options, screenReaderStatus = selectProps.screenReaderStatus, tabSelectsValue = selectProps.tabSelectsValue; - var ariaLabel = selectProps["aria-label"]; - var ariaLive = selectProps["aria-live"]; - var messages = React49.useMemo(function() { - return _objectSpread(_objectSpread({}, defaultAriaLiveMessages), ariaLiveMessages || {}); - }, [ariaLiveMessages]); - var ariaSelected = React49.useMemo(function() { - var message = ""; - if (ariaSelection && messages.onChange) { - var option = ariaSelection.option, selectedOptions = ariaSelection.options, removedValue = ariaSelection.removedValue, removedValues = ariaSelection.removedValues, value = ariaSelection.value; - var asOption = function asOption2(val) { - return !Array.isArray(val) ? val : null; - }; - var selected = removedValue || option || asOption(value); - var label = selected ? getOptionLabel2(selected) : ""; - var multiSelected = selectedOptions || removedValues || void 0; - var labels = multiSelected ? multiSelected.map(getOptionLabel2) : []; - var onChangeProps = _objectSpread({ - isDisabled: selected && isOptionDisabled2(selected, selectValue), - label, - labels - }, ariaSelection); - message = messages.onChange(onChangeProps); - } - return message; - }, [ariaSelection, messages, isOptionDisabled2, selectValue, getOptionLabel2]); - var ariaFocused = React49.useMemo(function() { - var focusMsg = ""; - var focused = focusedOption || focusedValue; - var isSelected = !!(focusedOption && selectValue && selectValue.includes(focusedOption)); - if (focused && messages.onFocus) { - var onFocusProps = { - focused, - label: getOptionLabel2(focused), - isDisabled: isOptionDisabled2(focused, selectValue), - isSelected, - options: focusableOptions, - context: focused === focusedOption ? "menu" : "value", - selectValue - }; - focusMsg = messages.onFocus(onFocusProps); - } - return focusMsg; - }, [focusedOption, focusedValue, getOptionLabel2, isOptionDisabled2, messages, focusableOptions, selectValue]); - var ariaResults = React49.useMemo(function() { - var resultsMsg = ""; - if (menuIsOpen && options.length && messages.onFilter) { - var resultsMessage = screenReaderStatus({ - count: focusableOptions.length - }); - resultsMsg = messages.onFilter({ - inputValue, - resultsMessage - }); - } - return resultsMsg; - }, [focusableOptions, inputValue, menuIsOpen, messages, options, screenReaderStatus]); - var ariaGuidance = React49.useMemo(function() { - var guidanceMsg = ""; - if (messages.guidance) { - var context = focusedValue ? "value" : menuIsOpen ? "menu" : "input"; - guidanceMsg = messages.guidance({ - "aria-label": ariaLabel, - context, - isDisabled: focusedOption && isOptionDisabled2(focusedOption, selectValue), - isMulti, - isSearchable, - tabSelectsValue - }); - } - return guidanceMsg; - }, [ariaLabel, focusedOption, focusedValue, isMulti, isOptionDisabled2, isSearchable, menuIsOpen, messages, selectValue, tabSelectsValue]); - var ariaContext = "".concat(ariaFocused, " ").concat(ariaResults, " ").concat(ariaGuidance); - var ScreenReaderText = react.jsx(React49.Fragment, null, react.jsx("span", { - id: "aria-selection" - }, ariaSelected), react.jsx("span", { - id: "aria-context" - }, ariaContext)); - var isInitialFocus = (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === "initial-input-focus"; - return react.jsx(React49.Fragment, null, react.jsx(A11yText$1, { - id: id2 - }, isInitialFocus && ScreenReaderText), react.jsx(A11yText$1, { - "aria-live": ariaLive, - "aria-atomic": "false", - "aria-relevant": "additions text" - }, isFocused && !isInitialFocus && ScreenReaderText)); - }; - var LiveRegion$1 = LiveRegion; - var diacritics = [{ - base: "A", - letters: "A\u24B6\uFF21\xC0\xC1\xC2\u1EA6\u1EA4\u1EAA\u1EA8\xC3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\xC4\u01DE\u1EA2\xC5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F" - }, { - base: "AA", - letters: "\uA732" - }, { - base: "AE", - letters: "\xC6\u01FC\u01E2" - }, { - base: "AO", - letters: "\uA734" - }, { - base: "AU", - letters: "\uA736" - }, { - base: "AV", - letters: "\uA738\uA73A" - }, { - base: "AY", - letters: "\uA73C" - }, { - base: "B", - letters: "B\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181" - }, { - base: "C", - letters: "C\u24B8\uFF23\u0106\u0108\u010A\u010C\xC7\u1E08\u0187\u023B\uA73E" - }, { - base: "D", - letters: "D\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779" - }, { - base: "DZ", - letters: "\u01F1\u01C4" - }, { - base: "Dz", - letters: "\u01F2\u01C5" - }, { - base: "E", - letters: "E\u24BA\uFF25\xC8\xC9\xCA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\xCB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E" - }, { - base: "F", - letters: "F\u24BB\uFF26\u1E1E\u0191\uA77B" - }, { - base: "G", - letters: "G\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E" - }, { - base: "H", - letters: "H\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D" - }, { - base: "I", - letters: "I\u24BE\uFF29\xCC\xCD\xCE\u0128\u012A\u012C\u0130\xCF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197" - }, { - base: "J", - letters: "J\u24BF\uFF2A\u0134\u0248" - }, { - base: "K", - letters: "K\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2" - }, { - base: "L", - letters: "L\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780" - }, { - base: "LJ", - letters: "\u01C7" - }, { - base: "Lj", - letters: "\u01C8" - }, { - base: "M", - letters: "M\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C" - }, { - base: "N", - letters: "N\u24C3\uFF2E\u01F8\u0143\xD1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4" - }, { - base: "NJ", - letters: "\u01CA" - }, { - base: "Nj", - letters: "\u01CB" - }, { - base: "O", - letters: "O\u24C4\uFF2F\xD2\xD3\xD4\u1ED2\u1ED0\u1ED6\u1ED4\xD5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\xD6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\xD8\u01FE\u0186\u019F\uA74A\uA74C" - }, { - base: "OI", - letters: "\u01A2" - }, { - base: "OO", - letters: "\uA74E" - }, { - base: "OU", - letters: "\u0222" - }, { - base: "P", - letters: "P\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754" - }, { - base: "Q", - letters: "Q\u24C6\uFF31\uA756\uA758\u024A" - }, { - base: "R", - letters: "R\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782" - }, { - base: "S", - letters: "S\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784" - }, { - base: "T", - letters: "T\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786" - }, { - base: "TZ", - letters: "\uA728" - }, { - base: "U", - letters: "U\u24CA\uFF35\xD9\xDA\xDB\u0168\u1E78\u016A\u1E7A\u016C\xDC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244" - }, { - base: "V", - letters: "V\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245" - }, { - base: "VY", - letters: "\uA760" - }, { - base: "W", - letters: "W\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72" - }, { - base: "X", - letters: "X\u24CD\uFF38\u1E8A\u1E8C" - }, { - base: "Y", - letters: "Y\u24CE\uFF39\u1EF2\xDD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE" - }, { - base: "Z", - letters: "Z\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762" - }, { - base: "a", - letters: "a\u24D0\uFF41\u1E9A\xE0\xE1\xE2\u1EA7\u1EA5\u1EAB\u1EA9\xE3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\xE4\u01DF\u1EA3\xE5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250" - }, { - base: "aa", - letters: "\uA733" - }, { - base: "ae", - letters: "\xE6\u01FD\u01E3" - }, { - base: "ao", - letters: "\uA735" - }, { - base: "au", - letters: "\uA737" - }, { - base: "av", - letters: "\uA739\uA73B" - }, { - base: "ay", - letters: "\uA73D" - }, { - base: "b", - letters: "b\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253" - }, { - base: "c", - letters: "c\u24D2\uFF43\u0107\u0109\u010B\u010D\xE7\u1E09\u0188\u023C\uA73F\u2184" - }, { - base: "d", - letters: "d\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A" - }, { - base: "dz", - letters: "\u01F3\u01C6" - }, { - base: "e", - letters: "e\u24D4\uFF45\xE8\xE9\xEA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\xEB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD" - }, { - base: "f", - letters: "f\u24D5\uFF46\u1E1F\u0192\uA77C" - }, { - base: "g", - letters: "g\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F" - }, { - base: "h", - letters: "h\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265" - }, { - base: "hv", - letters: "\u0195" - }, { - base: "i", - letters: "i\u24D8\uFF49\xEC\xED\xEE\u0129\u012B\u012D\xEF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131" - }, { - base: "j", - letters: "j\u24D9\uFF4A\u0135\u01F0\u0249" - }, { - base: "k", - letters: "k\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3" - }, { - base: "l", - letters: "l\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747" - }, { - base: "lj", - letters: "\u01C9" - }, { - base: "m", - letters: "m\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F" - }, { - base: "n", - letters: "n\u24DD\uFF4E\u01F9\u0144\xF1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5" - }, { - base: "nj", - letters: "\u01CC" - }, { - base: "o", - letters: "o\u24DE\uFF4F\xF2\xF3\xF4\u1ED3\u1ED1\u1ED7\u1ED5\xF5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\xF6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\xF8\u01FF\u0254\uA74B\uA74D\u0275" - }, { - base: "oi", - letters: "\u01A3" - }, { - base: "ou", - letters: "\u0223" - }, { - base: "oo", - letters: "\uA74F" - }, { - base: "p", - letters: "p\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755" - }, { - base: "q", - letters: "q\u24E0\uFF51\u024B\uA757\uA759" - }, { - base: "r", - letters: "r\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783" - }, { - base: "s", - letters: "s\u24E2\uFF53\xDF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B" - }, { - base: "t", - letters: "t\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787" - }, { - base: "tz", - letters: "\uA729" - }, { - base: "u", - letters: "u\u24E4\uFF55\xF9\xFA\xFB\u0169\u1E79\u016B\u1E7B\u016D\xFC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289" - }, { - base: "v", - letters: "v\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C" - }, { - base: "vy", - letters: "\uA761" - }, { - base: "w", - letters: "w\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73" - }, { - base: "x", - letters: "x\u24E7\uFF58\u1E8B\u1E8D" - }, { - base: "y", - letters: "y\u24E8\uFF59\u1EF3\xFD\u0177\u1EF9\u0233\u1E8F\xFF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF" - }, { - base: "z", - letters: "z\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763" - }]; - var anyDiacritic = new RegExp("[" + diacritics.map(function(d2) { - return d2.letters; - }).join("") + "]", "g"); - var diacriticToBase = {}; - for (i2 = 0; i2 < diacritics.length; i2++) { - diacritic = diacritics[i2]; - for (j2 = 0; j2 < diacritic.letters.length; j2++) { - diacriticToBase[diacritic.letters[j2]] = diacritic.base; - } - } - var diacritic; - var j2; - var i2; - var stripDiacritics = function stripDiacritics2(str) { - return str.replace(anyDiacritic, function(match) { - return diacriticToBase[match]; - }); - }; - var memoizedStripDiacriticsForInput = memoizeOne__default["default"](stripDiacritics); - var trimString = function trimString2(str) { - return str.replace(/^\s+|\s+$/g, ""); - }; - var defaultStringify = function defaultStringify2(option) { - return "".concat(option.label, " ").concat(option.value); - }; - var createFilter = function createFilter2(config) { - return function(option, rawInput) { - if (option.data.__isNew__) - return true; - var _ignoreCase$ignoreAcc = _objectSpread({ - ignoreCase: true, - ignoreAccents: true, - stringify: defaultStringify, - trim: true, - matchFrom: "any" - }, config), ignoreCase = _ignoreCase$ignoreAcc.ignoreCase, ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents, stringify2 = _ignoreCase$ignoreAcc.stringify, trim = _ignoreCase$ignoreAcc.trim, matchFrom = _ignoreCase$ignoreAcc.matchFrom; - var input = trim ? trimString(rawInput) : rawInput; - var candidate = trim ? trimString(stringify2(option)) : stringify2(option); - if (ignoreCase) { - input = input.toLowerCase(); - candidate = candidate.toLowerCase(); - } - if (ignoreAccents) { - input = memoizedStripDiacriticsForInput(input); - candidate = stripDiacritics(candidate); - } - return matchFrom === "start" ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1; - }; - }; - var _excluded = ["innerRef"]; - function DummyInput(_ref3) { - var innerRef = _ref3.innerRef, props = _objectWithoutProperties(_ref3, _excluded); - var filteredProps = index.removeProps(props, "onExited", "in", "enter", "exit", "appear"); - return react.jsx("input", _extends2({ - ref: innerRef - }, filteredProps, { - css: /* @__PURE__ */ react.css({ - label: "dummyInput", - background: 0, - border: 0, - caretColor: "transparent", - fontSize: "inherit", - gridArea: "1 / 1 / 2 / 3", - outline: 0, - padding: 0, - width: 1, - color: "transparent", - left: -100, - opacity: 0, - position: "relative", - transform: "scale(.01)" - }, false ? "" : ";label:DummyInput;", false ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCTSIsImZpbGUiOiJEdW1teUlucHV0LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgcmVtb3ZlUHJvcHMgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIER1bW15SW5wdXQoe1xuICBpbm5lclJlZixcbiAgLi4ucHJvcHNcbn06IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snaW5wdXQnXSAmIHtcbiAgcmVhZG9ubHkgaW5uZXJSZWY6IFJlZjxIVE1MSW5wdXRFbGVtZW50Pjtcbn0pIHtcbiAgLy8gUmVtb3ZlIGFuaW1hdGlvbiBwcm9wcyBub3QgbWVhbnQgZm9yIEhUTUwgZWxlbWVudHNcbiAgY29uc3QgZmlsdGVyZWRQcm9wcyA9IHJlbW92ZVByb3BzKFxuICAgIHByb3BzLFxuICAgICdvbkV4aXRlZCcsXG4gICAgJ2luJyxcbiAgICAnZW50ZXInLFxuICAgICdleGl0JyxcbiAgICAnYXBwZWFyJ1xuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGlucHV0XG4gICAgICByZWY9e2lubmVyUmVmfVxuICAgICAgey4uLmZpbHRlcmVkUHJvcHN9XG4gICAgICBjc3M9e3tcbiAgICAgICAgbGFiZWw6ICdkdW1teUlucHV0JyxcbiAgICAgICAgLy8gZ2V0IHJpZCBvZiBhbnkgZGVmYXVsdCBzdHlsZXNcbiAgICAgICAgYmFja2dyb3VuZDogMCxcbiAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAvLyBpbXBvcnRhbnQhIHRoaXMgaGlkZXMgdGhlIGZsYXNoaW5nIGN1cnNvclxuICAgICAgICBjYXJldENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBmb250U2l6ZTogJ2luaGVyaXQnLFxuICAgICAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICAgICAgICBvdXRsaW5lOiAwLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAvLyBpbXBvcnRhbnQhIHdpdGhvdXQgYHdpZHRoYCBicm93c2VycyB3b24ndCBhbGxvdyBmb2N1c1xuICAgICAgICB3aWR0aDogMSxcblxuICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIGRlc2t0b3BcbiAgICAgICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG5cbiAgICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBtb2JpbGUgd2hpbHN0IG1haW50YWluaW5nIFwic2Nyb2xsIGludG8gdmlld1wiIGJlaGF2aW91clxuICAgICAgICBsZWZ0OiAtMTAwLFxuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoLjAxKScsXG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59XG4iXX0= */") - })); - } - var cancelScroll = function cancelScroll2(event) { - event.preventDefault(); - event.stopPropagation(); - }; - function useScrollCapture(_ref3) { - var isEnabled = _ref3.isEnabled, onBottomArrive = _ref3.onBottomArrive, onBottomLeave = _ref3.onBottomLeave, onTopArrive = _ref3.onTopArrive, onTopLeave = _ref3.onTopLeave; - var isBottom = React49.useRef(false); - var isTop = React49.useRef(false); - var touchStart = React49.useRef(0); - var scrollTarget = React49.useRef(null); - var handleEventDelta = React49.useCallback(function(event, delta) { - if (scrollTarget.current === null) - return; - var _scrollTarget$current = scrollTarget.current, scrollTop = _scrollTarget$current.scrollTop, scrollHeight = _scrollTarget$current.scrollHeight, clientHeight = _scrollTarget$current.clientHeight; - var target = scrollTarget.current; - var isDeltaPositive = delta > 0; - var availableScroll = scrollHeight - clientHeight - scrollTop; - var shouldCancelScroll = false; - if (availableScroll > delta && isBottom.current) { - if (onBottomLeave) - onBottomLeave(event); - isBottom.current = false; - } - if (isDeltaPositive && isTop.current) { - if (onTopLeave) - onTopLeave(event); - isTop.current = false; - } - if (isDeltaPositive && delta > availableScroll) { - if (onBottomArrive && !isBottom.current) { - onBottomArrive(event); - } - target.scrollTop = scrollHeight; - shouldCancelScroll = true; - isBottom.current = true; - } else if (!isDeltaPositive && -delta > scrollTop) { - if (onTopArrive && !isTop.current) { - onTopArrive(event); - } - target.scrollTop = 0; - shouldCancelScroll = true; - isTop.current = true; - } - if (shouldCancelScroll) { - cancelScroll(event); - } - }, [onBottomArrive, onBottomLeave, onTopArrive, onTopLeave]); - var onWheel = React49.useCallback(function(event) { - handleEventDelta(event, event.deltaY); - }, [handleEventDelta]); - var onTouchStart = React49.useCallback(function(event) { - touchStart.current = event.changedTouches[0].clientY; - }, []); - var onTouchMove = React49.useCallback(function(event) { - var deltaY = touchStart.current - event.changedTouches[0].clientY; - handleEventDelta(event, deltaY); - }, [handleEventDelta]); - var startListening = React49.useCallback(function(el) { - if (!el) - return; - var notPassive = index.supportsPassiveEvents ? { - passive: false - } : false; - el.addEventListener("wheel", onWheel, notPassive); - el.addEventListener("touchstart", onTouchStart, notPassive); - el.addEventListener("touchmove", onTouchMove, notPassive); - }, [onTouchMove, onTouchStart, onWheel]); - var stopListening = React49.useCallback(function(el) { - if (!el) - return; - el.removeEventListener("wheel", onWheel, false); - el.removeEventListener("touchstart", onTouchStart, false); - el.removeEventListener("touchmove", onTouchMove, false); - }, [onTouchMove, onTouchStart, onWheel]); - React49.useEffect(function() { - if (!isEnabled) - return; - var element = scrollTarget.current; - startListening(element); - return function() { - stopListening(element); - }; - }, [isEnabled, startListening, stopListening]); - return function(element) { - scrollTarget.current = element; - }; - } - var STYLE_KEYS = ["boxSizing", "height", "overflow", "paddingRight", "position"]; - var LOCK_STYLES = { - boxSizing: "border-box", - overflow: "hidden", - position: "relative", - height: "100%" - }; - function preventTouchMove(e) { - e.preventDefault(); - } - function allowTouchMove(e) { - e.stopPropagation(); - } - function preventInertiaScroll() { - var top = this.scrollTop; - var totalScroll = this.scrollHeight; - var currentScroll = top + this.offsetHeight; - if (top === 0) { - this.scrollTop = 1; - } else if (currentScroll === totalScroll) { - this.scrollTop = top - 1; - } - } - function isTouchDevice() { - return "ontouchstart" in window || navigator.maxTouchPoints; - } - var canUseDOM2 = !!(typeof window !== "undefined" && window.document && window.document.createElement); - var activeScrollLocks = 0; - var listenerOptions = { - capture: false, - passive: false - }; - function useScrollLock(_ref3) { - var isEnabled = _ref3.isEnabled, _ref$accountForScroll = _ref3.accountForScrollbars, accountForScrollbars = _ref$accountForScroll === void 0 ? true : _ref$accountForScroll; - var originalStyles = React49.useRef({}); - var scrollTarget = React49.useRef(null); - var addScrollLock = React49.useCallback(function(touchScrollTarget) { - if (!canUseDOM2) - return; - var target = document.body; - var targetStyle = target && target.style; - if (accountForScrollbars) { - STYLE_KEYS.forEach(function(key) { - var val = targetStyle && targetStyle[key]; - originalStyles.current[key] = val; - }); - } - if (accountForScrollbars && activeScrollLocks < 1) { - var currentPadding = parseInt(originalStyles.current.paddingRight, 10) || 0; - var clientWidth = document.body ? document.body.clientWidth : 0; - var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0; - Object.keys(LOCK_STYLES).forEach(function(key) { - var val = LOCK_STYLES[key]; - if (targetStyle) { - targetStyle[key] = val; - } - }); - if (targetStyle) { - targetStyle.paddingRight = "".concat(adjustedPadding, "px"); - } - } - if (target && isTouchDevice()) { - target.addEventListener("touchmove", preventTouchMove, listenerOptions); - if (touchScrollTarget) { - touchScrollTarget.addEventListener("touchstart", preventInertiaScroll, listenerOptions); - touchScrollTarget.addEventListener("touchmove", allowTouchMove, listenerOptions); - } - } - activeScrollLocks += 1; - }, [accountForScrollbars]); - var removeScrollLock = React49.useCallback(function(touchScrollTarget) { - if (!canUseDOM2) - return; - var target = document.body; - var targetStyle = target && target.style; - activeScrollLocks = Math.max(activeScrollLocks - 1, 0); - if (accountForScrollbars && activeScrollLocks < 1) { - STYLE_KEYS.forEach(function(key) { - var val = originalStyles.current[key]; - if (targetStyle) { - targetStyle[key] = val; - } - }); - } - if (target && isTouchDevice()) { - target.removeEventListener("touchmove", preventTouchMove, listenerOptions); - if (touchScrollTarget) { - touchScrollTarget.removeEventListener("touchstart", preventInertiaScroll, listenerOptions); - touchScrollTarget.removeEventListener("touchmove", allowTouchMove, listenerOptions); - } - } - }, [accountForScrollbars]); - React49.useEffect(function() { - if (!isEnabled) - return; - var element = scrollTarget.current; - addScrollLock(element); - return function() { - removeScrollLock(element); - }; - }, [isEnabled, addScrollLock, removeScrollLock]); - return function(element) { - scrollTarget.current = element; - }; - } - function _EMOTION_STRINGIFIED_CSS_ERROR__$1() { - return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; - } - var blurSelectInput = function blurSelectInput2() { - return document.activeElement && document.activeElement.blur(); - }; - var _ref2$1 = false ? { - name: "1kfdb0e", - styles: "position:fixed;left:0;bottom:0;right:0;top:0" - } : { - name: "bp8cua-ScrollManager", - styles: "position:fixed;left:0;bottom:0;right:0;top:0;label:ScrollManager;", - map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbE1hbmFnZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDVSIsImZpbGUiOiJTY3JvbGxNYW5hZ2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgRnJhZ21lbnQsIFJlYWN0RWxlbWVudCwgUmVmQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlU2Nyb2xsQ2FwdHVyZSBmcm9tICcuL3VzZVNjcm9sbENhcHR1cmUnO1xuaW1wb3J0IHVzZVNjcm9sbExvY2sgZnJvbSAnLi91c2VTY3JvbGxMb2NrJztcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IChyZWY6IFJlZkNhbGxiYWNrPEhUTUxFbGVtZW50PikgPT4gUmVhY3RFbGVtZW50O1xuICByZWFkb25seSBsb2NrRW5hYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2FwdHVyZUVuYWJsZWQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IG9uQm90dG9tQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Cb3R0b21MZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IG9uVG9wQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Ub3BMZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG59XG5cbmNvbnN0IGJsdXJTZWxlY3RJbnB1dCA9ICgpID0+XG4gIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmJsdXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcih7XG4gIGNoaWxkcmVuLFxuICBsb2NrRW5hYmxlZCxcbiAgY2FwdHVyZUVuYWJsZWQgPSB0cnVlLFxuICBvbkJvdHRvbUFycml2ZSxcbiAgb25Cb3R0b21MZWF2ZSxcbiAgb25Ub3BBcnJpdmUsXG4gIG9uVG9wTGVhdmUsXG59OiBQcm9wcykge1xuICBjb25zdCBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUsXG4gIH0pO1xuICBjb25zdCBzZXRTY3JvbGxMb2NrVGFyZ2V0ID0gdXNlU2Nyb2xsTG9jayh7IGlzRW5hYmxlZDogbG9ja0VuYWJsZWQgfSk7XG5cbiAgY29uc3QgdGFyZ2V0UmVmOiBSZWZDYWxsYmFjazxIVE1MRWxlbWVudD4gPSAoZWxlbWVudCkgPT4ge1xuICAgIHNldFNjcm9sbENhcHR1cmVUYXJnZXQoZWxlbWVudCk7XG4gICAgc2V0U2Nyb2xsTG9ja1RhcmdldChlbGVtZW50KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIHtsb2NrRW5hYmxlZCAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBvbkNsaWNrPXtibHVyU2VsZWN0SW5wdXR9XG4gICAgICAgICAgY3NzPXt7IHBvc2l0aW9uOiAnZml4ZWQnLCBsZWZ0OiAwLCBib3R0b206IDAsIHJpZ2h0OiAwLCB0b3A6IDAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7Y2hpbGRyZW4odGFyZ2V0UmVmKX1cbiAgICA8L0ZyYWdtZW50PlxuICApO1xufVxuIl19 */", - toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1 - }; - function ScrollManager(_ref3) { - var children = _ref3.children, lockEnabled = _ref3.lockEnabled, _ref$captureEnabled = _ref3.captureEnabled, captureEnabled = _ref$captureEnabled === void 0 ? true : _ref$captureEnabled, onBottomArrive = _ref3.onBottomArrive, onBottomLeave = _ref3.onBottomLeave, onTopArrive = _ref3.onTopArrive, onTopLeave = _ref3.onTopLeave; - var setScrollCaptureTarget = useScrollCapture({ - isEnabled: captureEnabled, - onBottomArrive, - onBottomLeave, - onTopArrive, - onTopLeave - }); - var setScrollLockTarget = useScrollLock({ - isEnabled: lockEnabled - }); - var targetRef = function targetRef2(element) { - setScrollCaptureTarget(element); - setScrollLockTarget(element); - }; - return react.jsx(React49.Fragment, null, lockEnabled && react.jsx("div", { - onClick: blurSelectInput, - css: _ref2$1 - }), children(targetRef)); - } - function _EMOTION_STRINGIFIED_CSS_ERROR__() { - return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; - } - var _ref2 = false ? { - name: "1a0ro4n-requiredInput", - styles: "label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%" - } : { - name: "5kkxb2-requiredInput-RequiredInput", - styles: "label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%;label:RequiredInput;", - map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlJlcXVpcmVkSW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNJIiwiZmlsZSI6IlJlcXVpcmVkSW5wdXQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBGb2N1c0V2ZW50SGFuZGxlciwgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmNvbnN0IFJlcXVpcmVkSW5wdXQ6IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgb25Gb2N1czogRm9jdXNFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD47XG59PiA9ICh7IG5hbWUsIG9uRm9jdXMgfSkgPT4gKFxuICA8aW5wdXRcbiAgICByZXF1aXJlZFxuICAgIG5hbWU9e25hbWV9XG4gICAgdGFiSW5kZXg9ey0xfVxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAncmVxdWlyZWRJbnB1dCcsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBib3R0b206IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgIH19XG4gICAgLy8gUHJldmVudCBgU3dpdGNoaW5nIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWRgIGVycm9yXG4gICAgdmFsdWU9XCJcIlxuICAgIG9uQ2hhbmdlPXsoKSA9PiB7fX1cbiAgLz5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IFJlcXVpcmVkSW5wdXQ7XG4iXX0= */", - toString: _EMOTION_STRINGIFIED_CSS_ERROR__ - }; - var RequiredInput = function RequiredInput2(_ref3) { - var name = _ref3.name, onFocus = _ref3.onFocus; - return react.jsx("input", { - required: true, - name, - tabIndex: -1, - "aria-hidden": "true", - onFocus, - css: _ref2, - value: "", - onChange: function onChange() { - } - }); - }; - var RequiredInput$1 = RequiredInput; - var formatGroupLabel = function formatGroupLabel2(group) { - return group.label; - }; - var getOptionLabel$1 = function getOptionLabel2(option) { - return option.label; - }; - var getOptionValue$1 = function getOptionValue2(option) { - return option.value; - }; - var isOptionDisabled = function isOptionDisabled2(option) { - return !!option.isDisabled; - }; - var defaultStyles = { - clearIndicator: index.clearIndicatorCSS, - container: index.containerCSS, - control: index.css, - dropdownIndicator: index.dropdownIndicatorCSS, - group: index.groupCSS, - groupHeading: index.groupHeadingCSS, - indicatorsContainer: index.indicatorsContainerCSS, - indicatorSeparator: index.indicatorSeparatorCSS, - input: index.inputCSS, - loadingIndicator: index.loadingIndicatorCSS, - loadingMessage: index.loadingMessageCSS, - menu: index.menuCSS, - menuList: index.menuListCSS, - menuPortal: index.menuPortalCSS, - multiValue: index.multiValueCSS, - multiValueLabel: index.multiValueLabelCSS, - multiValueRemove: index.multiValueRemoveCSS, - noOptionsMessage: index.noOptionsMessageCSS, - option: index.optionCSS, - placeholder: index.placeholderCSS, - singleValue: index.css$1, - valueContainer: index.valueContainerCSS - }; - function mergeStyles(source) { - var target = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - var styles = _objectSpread({}, source); - Object.keys(target).forEach(function(keyAsString) { - var key = keyAsString; - if (source[key]) { - styles[key] = function(rsCss, props) { - return target[key](source[key](rsCss, props), props); - }; - } else { - styles[key] = target[key]; - } - }); - return styles; - } - var colors = { - primary: "#2684FF", - primary75: "#4C9AFF", - primary50: "#B2D4FF", - primary25: "#DEEBFF", - danger: "#DE350B", - dangerLight: "#FFBDAD", - neutral0: "hsl(0, 0%, 100%)", - neutral5: "hsl(0, 0%, 95%)", - neutral10: "hsl(0, 0%, 90%)", - neutral20: "hsl(0, 0%, 80%)", - neutral30: "hsl(0, 0%, 70%)", - neutral40: "hsl(0, 0%, 60%)", - neutral50: "hsl(0, 0%, 50%)", - neutral60: "hsl(0, 0%, 40%)", - neutral70: "hsl(0, 0%, 30%)", - neutral80: "hsl(0, 0%, 20%)", - neutral90: "hsl(0, 0%, 10%)" - }; - var borderRadius = 4; - var baseUnit = 4; - var controlHeight = 38; - var menuGutter = baseUnit * 2; - var spacing = { - baseUnit, - controlHeight, - menuGutter - }; - var defaultTheme = { - borderRadius, - colors, - spacing - }; - var defaultProps = { - "aria-live": "polite", - backspaceRemovesValue: true, - blurInputOnSelect: index.isTouchCapable(), - captureMenuScroll: !index.isTouchCapable(), - classNames: {}, - closeMenuOnSelect: true, - closeMenuOnScroll: false, - components: {}, - controlShouldRenderValue: true, - escapeClearsValue: false, - filterOption: createFilter(), - formatGroupLabel, - getOptionLabel: getOptionLabel$1, - getOptionValue: getOptionValue$1, - isDisabled: false, - isLoading: false, - isMulti: false, - isRtl: false, - isSearchable: true, - isOptionDisabled, - loadingMessage: function loadingMessage() { - return "Loading..."; - }, - maxMenuHeight: 300, - minMenuHeight: 140, - menuIsOpen: false, - menuPlacement: "bottom", - menuPosition: "absolute", - menuShouldBlockScroll: false, - menuShouldScrollIntoView: !index.isMobileDevice(), - noOptionsMessage: function noOptionsMessage() { - return "No options"; - }, - openMenuOnFocus: false, - openMenuOnClick: true, - options: [], - pageSize: 5, - placeholder: "Select...", - screenReaderStatus: function screenReaderStatus(_ref3) { - var count = _ref3.count; - return "".concat(count, " result").concat(count !== 1 ? "s" : "", " available"); - }, - styles: {}, - tabIndex: 0, - tabSelectsValue: true, - unstyled: false - }; - function toCategorizedOption(props, option, selectValue, index2) { - var isDisabled = _isOptionDisabled(props, option, selectValue); - var isSelected = _isOptionSelected(props, option, selectValue); - var label = getOptionLabel(props, option); - var value = getOptionValue(props, option); - return { - type: "option", - data: option, - isDisabled, - isSelected, - label, - value, - index: index2 - }; - } - function buildCategorizedOptions(props, selectValue) { - return props.options.map(function(groupOrOption, groupOrOptionIndex) { - if ("options" in groupOrOption) { - var categorizedOptions = groupOrOption.options.map(function(option, optionIndex) { - return toCategorizedOption(props, option, selectValue, optionIndex); - }).filter(function(categorizedOption2) { - return isFocusable(props, categorizedOption2); - }); - return categorizedOptions.length > 0 ? { - type: "group", - data: groupOrOption, - options: categorizedOptions, - index: groupOrOptionIndex - } : void 0; - } - var categorizedOption = toCategorizedOption(props, groupOrOption, selectValue, groupOrOptionIndex); - return isFocusable(props, categorizedOption) ? categorizedOption : void 0; - }).filter(index.notNullish); - } - function buildFocusableOptionsFromCategorizedOptions(categorizedOptions) { - return categorizedOptions.reduce(function(optionsAccumulator, categorizedOption) { - if (categorizedOption.type === "group") { - optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function(option) { - return option.data; - }))); - } else { - optionsAccumulator.push(categorizedOption.data); - } - return optionsAccumulator; - }, []); - } - function buildFocusableOptions(props, selectValue) { - return buildFocusableOptionsFromCategorizedOptions(buildCategorizedOptions(props, selectValue)); - } - function isFocusable(props, categorizedOption) { - var _props$inputValue = props.inputValue, inputValue = _props$inputValue === void 0 ? "" : _props$inputValue; - var data = categorizedOption.data, isSelected = categorizedOption.isSelected, label = categorizedOption.label, value = categorizedOption.value; - return (!shouldHideSelectedOptions(props) || !isSelected) && _filterOption(props, { - label, - value, - data - }, inputValue); - } - function getNextFocusedValue(state, nextSelectValue) { - var focusedValue = state.focusedValue, lastSelectValue = state.selectValue; - var lastFocusedIndex = lastSelectValue.indexOf(focusedValue); - if (lastFocusedIndex > -1) { - var nextFocusedIndex = nextSelectValue.indexOf(focusedValue); - if (nextFocusedIndex > -1) { - return focusedValue; - } else if (lastFocusedIndex < nextSelectValue.length) { - return nextSelectValue[lastFocusedIndex]; - } - } - return null; - } - function getNextFocusedOption(state, options) { - var lastFocusedOption = state.focusedOption; - return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0]; - } - var getOptionLabel = function getOptionLabel2(props, data) { - return props.getOptionLabel(data); - }; - var getOptionValue = function getOptionValue2(props, data) { - return props.getOptionValue(data); - }; - function _isOptionDisabled(props, option, selectValue) { - return typeof props.isOptionDisabled === "function" ? props.isOptionDisabled(option, selectValue) : false; - } - function _isOptionSelected(props, option, selectValue) { - if (selectValue.indexOf(option) > -1) - return true; - if (typeof props.isOptionSelected === "function") { - return props.isOptionSelected(option, selectValue); - } - var candidate = getOptionValue(props, option); - return selectValue.some(function(i3) { - return getOptionValue(props, i3) === candidate; - }); - } - function _filterOption(props, option, inputValue) { - return props.filterOption ? props.filterOption(option, inputValue) : true; - } - var shouldHideSelectedOptions = function shouldHideSelectedOptions2(props) { - var hideSelectedOptions = props.hideSelectedOptions, isMulti = props.isMulti; - if (hideSelectedOptions === void 0) - return isMulti; - return hideSelectedOptions; - }; - var instanceId = 1; - var Select = /* @__PURE__ */ function(_Component) { - _inherits(Select2, _Component); - var _super = _createSuper(Select2); - function Select2(_props) { - var _this; - _classCallCheck(this, Select2); - _this = _super.call(this, _props); - _this.state = { - ariaSelection: null, - focusedOption: null, - focusedValue: null, - inputIsHidden: false, - isFocused: false, - selectValue: [], - clearFocusValueOnUpdate: false, - prevWasFocused: false, - inputIsHiddenAfterUpdate: void 0, - prevProps: void 0 - }; - _this.blockOptionHover = false; - _this.isComposing = false; - _this.commonProps = void 0; - _this.initialTouchX = 0; - _this.initialTouchY = 0; - _this.instancePrefix = ""; - _this.openAfterFocus = false; - _this.scrollToFocusedOptionOnUpdate = false; - _this.userIsDragging = void 0; - _this.controlRef = null; - _this.getControlRef = function(ref) { - _this.controlRef = ref; - }; - _this.focusedOptionRef = null; - _this.getFocusedOptionRef = function(ref) { - _this.focusedOptionRef = ref; - }; - _this.menuListRef = null; - _this.getMenuListRef = function(ref) { - _this.menuListRef = ref; - }; - _this.inputRef = null; - _this.getInputRef = function(ref) { - _this.inputRef = ref; - }; - _this.focus = _this.focusInput; - _this.blur = _this.blurInput; - _this.onChange = function(newValue, actionMeta) { - var _this$props = _this.props, onChange = _this$props.onChange, name = _this$props.name; - actionMeta.name = name; - _this.ariaOnChange(newValue, actionMeta); - onChange(newValue, actionMeta); - }; - _this.setValue = function(newValue, action, option) { - var _this$props2 = _this.props, closeMenuOnSelect = _this$props2.closeMenuOnSelect, isMulti = _this$props2.isMulti, inputValue = _this$props2.inputValue; - _this.onInputChange("", { - action: "set-value", - prevInputValue: inputValue - }); - if (closeMenuOnSelect) { - _this.setState({ - inputIsHiddenAfterUpdate: !isMulti - }); - _this.onMenuClose(); - } - _this.setState({ - clearFocusValueOnUpdate: true - }); - _this.onChange(newValue, { - action, - option - }); - }; - _this.selectOption = function(newValue) { - var _this$props3 = _this.props, blurInputOnSelect = _this$props3.blurInputOnSelect, isMulti = _this$props3.isMulti, name = _this$props3.name; - var selectValue = _this.state.selectValue; - var deselected = isMulti && _this.isOptionSelected(newValue, selectValue); - var isDisabled = _this.isOptionDisabled(newValue, selectValue); - if (deselected) { - var candidate = _this.getOptionValue(newValue); - _this.setValue(index.multiValueAsValue(selectValue.filter(function(i3) { - return _this.getOptionValue(i3) !== candidate; - })), "deselect-option", newValue); - } else if (!isDisabled) { - if (isMulti) { - _this.setValue(index.multiValueAsValue([].concat(_toConsumableArray(selectValue), [newValue])), "select-option", newValue); - } else { - _this.setValue(index.singleValueAsValue(newValue), "select-option"); - } - } else { - _this.ariaOnChange(index.singleValueAsValue(newValue), { - action: "select-option", - option: newValue, - name - }); - return; - } - if (blurInputOnSelect) { - _this.blurInput(); - } - }; - _this.removeValue = function(removedValue) { - var isMulti = _this.props.isMulti; - var selectValue = _this.state.selectValue; - var candidate = _this.getOptionValue(removedValue); - var newValueArray = selectValue.filter(function(i3) { - return _this.getOptionValue(i3) !== candidate; - }); - var newValue = index.valueTernary(isMulti, newValueArray, newValueArray[0] || null); - _this.onChange(newValue, { - action: "remove-value", - removedValue - }); - _this.focusInput(); - }; - _this.clearValue = function() { - var selectValue = _this.state.selectValue; - _this.onChange(index.valueTernary(_this.props.isMulti, [], null), { - action: "clear", - removedValues: selectValue - }); - }; - _this.popValue = function() { - var isMulti = _this.props.isMulti; - var selectValue = _this.state.selectValue; - var lastSelectedValue = selectValue[selectValue.length - 1]; - var newValueArray = selectValue.slice(0, selectValue.length - 1); - var newValue = index.valueTernary(isMulti, newValueArray, newValueArray[0] || null); - _this.onChange(newValue, { - action: "pop-value", - removedValue: lastSelectedValue - }); - }; - _this.getValue = function() { - return _this.state.selectValue; - }; - _this.cx = function() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return index.classNames.apply(void 0, [_this.props.classNamePrefix].concat(args)); - }; - _this.getOptionLabel = function(data) { - return getOptionLabel(_this.props, data); - }; - _this.getOptionValue = function(data) { - return getOptionValue(_this.props, data); - }; - _this.getStyles = function(key, props) { - var unstyled = _this.props.unstyled; - var base = defaultStyles[key](props, unstyled); - base.boxSizing = "border-box"; - var custom = _this.props.styles[key]; - return custom ? custom(base, props) : base; - }; - _this.getClassNames = function(key, props) { - var _this$props$className, _this$props$className2; - return (_this$props$className = (_this$props$className2 = _this.props.classNames)[key]) === null || _this$props$className === void 0 ? void 0 : _this$props$className.call(_this$props$className2, props); - }; - _this.getElementId = function(element) { - return "".concat(_this.instancePrefix, "-").concat(element); - }; - _this.getComponents = function() { - return index.defaultComponents(_this.props); - }; - _this.buildCategorizedOptions = function() { - return buildCategorizedOptions(_this.props, _this.state.selectValue); - }; - _this.getCategorizedOptions = function() { - return _this.props.menuIsOpen ? _this.buildCategorizedOptions() : []; - }; - _this.buildFocusableOptions = function() { - return buildFocusableOptionsFromCategorizedOptions(_this.buildCategorizedOptions()); - }; - _this.getFocusableOptions = function() { - return _this.props.menuIsOpen ? _this.buildFocusableOptions() : []; - }; - _this.ariaOnChange = function(value, actionMeta) { - _this.setState({ - ariaSelection: _objectSpread({ - value - }, actionMeta) - }); - }; - _this.onMenuMouseDown = function(event) { - if (event.button !== 0) { - return; - } - event.stopPropagation(); - event.preventDefault(); - _this.focusInput(); - }; - _this.onMenuMouseMove = function(event) { - _this.blockOptionHover = false; - }; - _this.onControlMouseDown = function(event) { - if (event.defaultPrevented) { - return; - } - var openMenuOnClick = _this.props.openMenuOnClick; - if (!_this.state.isFocused) { - if (openMenuOnClick) { - _this.openAfterFocus = true; - } - _this.focusInput(); - } else if (!_this.props.menuIsOpen) { - if (openMenuOnClick) { - _this.openMenu("first"); - } - } else { - if (event.target.tagName !== "INPUT" && event.target.tagName !== "TEXTAREA") { - _this.onMenuClose(); - } - } - if (event.target.tagName !== "INPUT" && event.target.tagName !== "TEXTAREA") { - event.preventDefault(); - } - }; - _this.onDropdownIndicatorMouseDown = function(event) { - if (event && event.type === "mousedown" && event.button !== 0) { - return; - } - if (_this.props.isDisabled) - return; - var _this$props4 = _this.props, isMulti = _this$props4.isMulti, menuIsOpen = _this$props4.menuIsOpen; - _this.focusInput(); - if (menuIsOpen) { - _this.setState({ - inputIsHiddenAfterUpdate: !isMulti - }); - _this.onMenuClose(); - } else { - _this.openMenu("first"); - } - event.preventDefault(); - }; - _this.onClearIndicatorMouseDown = function(event) { - if (event && event.type === "mousedown" && event.button !== 0) { - return; - } - _this.clearValue(); - event.preventDefault(); - _this.openAfterFocus = false; - if (event.type === "touchend") { - _this.focusInput(); - } else { - setTimeout(function() { - return _this.focusInput(); - }); - } - }; - _this.onScroll = function(event) { - if (typeof _this.props.closeMenuOnScroll === "boolean") { - if (event.target instanceof HTMLElement && index.isDocumentElement(event.target)) { - _this.props.onMenuClose(); - } - } else if (typeof _this.props.closeMenuOnScroll === "function") { - if (_this.props.closeMenuOnScroll(event)) { - _this.props.onMenuClose(); - } - } - }; - _this.onCompositionStart = function() { - _this.isComposing = true; - }; - _this.onCompositionEnd = function() { - _this.isComposing = false; - }; - _this.onTouchStart = function(_ref22) { - var touches = _ref22.touches; - var touch = touches && touches.item(0); - if (!touch) { - return; - } - _this.initialTouchX = touch.clientX; - _this.initialTouchY = touch.clientY; - _this.userIsDragging = false; - }; - _this.onTouchMove = function(_ref3) { - var touches = _ref3.touches; - var touch = touches && touches.item(0); - if (!touch) { - return; - } - var deltaX = Math.abs(touch.clientX - _this.initialTouchX); - var deltaY = Math.abs(touch.clientY - _this.initialTouchY); - var moveThreshold = 5; - _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold; - }; - _this.onTouchEnd = function(event) { - if (_this.userIsDragging) - return; - if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) { - _this.blurInput(); - } - _this.initialTouchX = 0; - _this.initialTouchY = 0; - }; - _this.onControlTouchEnd = function(event) { - if (_this.userIsDragging) - return; - _this.onControlMouseDown(event); - }; - _this.onClearIndicatorTouchEnd = function(event) { - if (_this.userIsDragging) - return; - _this.onClearIndicatorMouseDown(event); - }; - _this.onDropdownIndicatorTouchEnd = function(event) { - if (_this.userIsDragging) - return; - _this.onDropdownIndicatorMouseDown(event); - }; - _this.handleInputChange = function(event) { - var prevInputValue = _this.props.inputValue; - var inputValue = event.currentTarget.value; - _this.setState({ - inputIsHiddenAfterUpdate: false - }); - _this.onInputChange(inputValue, { - action: "input-change", - prevInputValue - }); - if (!_this.props.menuIsOpen) { - _this.onMenuOpen(); - } - }; - _this.onInputFocus = function(event) { - if (_this.props.onFocus) { - _this.props.onFocus(event); - } - _this.setState({ - inputIsHiddenAfterUpdate: false, - isFocused: true - }); - if (_this.openAfterFocus || _this.props.openMenuOnFocus) { - _this.openMenu("first"); - } - _this.openAfterFocus = false; - }; - _this.onInputBlur = function(event) { - var prevInputValue = _this.props.inputValue; - if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) { - _this.inputRef.focus(); - return; - } - if (_this.props.onBlur) { - _this.props.onBlur(event); - } - _this.onInputChange("", { - action: "input-blur", - prevInputValue - }); - _this.onMenuClose(); - _this.setState({ - focusedValue: null, - isFocused: false - }); - }; - _this.onOptionHover = function(focusedOption) { - if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) { - return; - } - _this.setState({ - focusedOption - }); - }; - _this.shouldHideSelectedOptions = function() { - return shouldHideSelectedOptions(_this.props); - }; - _this.onValueInputFocus = function(e) { - e.preventDefault(); - e.stopPropagation(); - _this.focus(); - }; - _this.onKeyDown = function(event) { - var _this$props5 = _this.props, isMulti = _this$props5.isMulti, backspaceRemovesValue = _this$props5.backspaceRemovesValue, escapeClearsValue = _this$props5.escapeClearsValue, inputValue = _this$props5.inputValue, isClearable = _this$props5.isClearable, isDisabled = _this$props5.isDisabled, menuIsOpen = _this$props5.menuIsOpen, onKeyDown = _this$props5.onKeyDown, tabSelectsValue = _this$props5.tabSelectsValue, openMenuOnFocus = _this$props5.openMenuOnFocus; - var _this$state = _this.state, focusedOption = _this$state.focusedOption, focusedValue = _this$state.focusedValue, selectValue = _this$state.selectValue; - if (isDisabled) - return; - if (typeof onKeyDown === "function") { - onKeyDown(event); - if (event.defaultPrevented) { - return; - } - } - _this.blockOptionHover = true; - switch (event.key) { - case "ArrowLeft": - if (!isMulti || inputValue) - return; - _this.focusValue("previous"); - break; - case "ArrowRight": - if (!isMulti || inputValue) - return; - _this.focusValue("next"); - break; - case "Delete": - case "Backspace": - if (inputValue) - return; - if (focusedValue) { - _this.removeValue(focusedValue); - } else { - if (!backspaceRemovesValue) - return; - if (isMulti) { - _this.popValue(); - } else if (isClearable) { - _this.clearValue(); - } - } - break; - case "Tab": - if (_this.isComposing) - return; - if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) { - return; - } - _this.selectOption(focusedOption); - break; - case "Enter": - if (event.keyCode === 229) { - break; - } - if (menuIsOpen) { - if (!focusedOption) - return; - if (_this.isComposing) - return; - _this.selectOption(focusedOption); - break; - } - return; - case "Escape": - if (menuIsOpen) { - _this.setState({ - inputIsHiddenAfterUpdate: false - }); - _this.onInputChange("", { - action: "menu-close", - prevInputValue: inputValue - }); - _this.onMenuClose(); - } else if (isClearable && escapeClearsValue) { - _this.clearValue(); - } - break; - case " ": - if (inputValue) { - return; - } - if (!menuIsOpen) { - _this.openMenu("first"); - break; - } - if (!focusedOption) - return; - _this.selectOption(focusedOption); - break; - case "ArrowUp": - if (menuIsOpen) { - _this.focusOption("up"); - } else { - _this.openMenu("last"); - } - break; - case "ArrowDown": - if (menuIsOpen) { - _this.focusOption("down"); - } else { - _this.openMenu("first"); - } - break; - case "PageUp": - if (!menuIsOpen) - return; - _this.focusOption("pageup"); - break; - case "PageDown": - if (!menuIsOpen) - return; - _this.focusOption("pagedown"); - break; - case "Home": - if (!menuIsOpen) - return; - _this.focusOption("first"); - break; - case "End": - if (!menuIsOpen) - return; - _this.focusOption("last"); - break; - default: - return; - } - event.preventDefault(); - }; - _this.instancePrefix = "react-select-" + (_this.props.instanceId || ++instanceId); - _this.state.selectValue = index.cleanValue(_props.value); - if (_props.menuIsOpen && _this.state.selectValue.length) { - var focusableOptions = _this.buildFocusableOptions(); - var optionIndex = focusableOptions.indexOf(_this.state.selectValue[0]); - _this.state.focusedOption = focusableOptions[optionIndex]; - } - return _this; - } - _createClass(Select2, [{ - key: "componentDidMount", - value: function componentDidMount() { - this.startListeningComposition(); - this.startListeningToTouch(); - if (this.props.closeMenuOnScroll && document && document.addEventListener) { - document.addEventListener("scroll", this.onScroll, true); - } - if (this.props.autoFocus) { - this.focusInput(); - } - if (this.props.menuIsOpen && this.state.focusedOption && this.menuListRef && this.focusedOptionRef) { - index.scrollIntoView(this.menuListRef, this.focusedOptionRef); - } - } - }, { - key: "componentDidUpdate", - value: function componentDidUpdate(prevProps) { - var _this$props6 = this.props, isDisabled = _this$props6.isDisabled, menuIsOpen = _this$props6.menuIsOpen; - var isFocused = this.state.isFocused; - if (isFocused && !isDisabled && prevProps.isDisabled || isFocused && menuIsOpen && !prevProps.menuIsOpen) { - this.focusInput(); - } - if (isFocused && isDisabled && !prevProps.isDisabled) { - this.setState({ - isFocused: false - }, this.onMenuClose); - } else if (!isFocused && !isDisabled && prevProps.isDisabled && this.inputRef === document.activeElement) { - this.setState({ - isFocused: true - }); - } - if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) { - index.scrollIntoView(this.menuListRef, this.focusedOptionRef); - this.scrollToFocusedOptionOnUpdate = false; - } - } - }, { - key: "componentWillUnmount", - value: function componentWillUnmount() { - this.stopListeningComposition(); - this.stopListeningToTouch(); - document.removeEventListener("scroll", this.onScroll, true); - } - }, { - key: "onMenuOpen", - value: function onMenuOpen() { - this.props.onMenuOpen(); - } - }, { - key: "onMenuClose", - value: function onMenuClose() { - this.onInputChange("", { - action: "menu-close", - prevInputValue: this.props.inputValue - }); - this.props.onMenuClose(); - } - }, { - key: "onInputChange", - value: function onInputChange(newValue, actionMeta) { - this.props.onInputChange(newValue, actionMeta); - } - }, { - key: "focusInput", - value: function focusInput() { - if (!this.inputRef) - return; - this.inputRef.focus(); - } - }, { - key: "blurInput", - value: function blurInput() { - if (!this.inputRef) - return; - this.inputRef.blur(); - } - }, { - key: "openMenu", - value: function openMenu(focusOption) { - var _this2 = this; - var _this$state2 = this.state, selectValue = _this$state2.selectValue, isFocused = _this$state2.isFocused; - var focusableOptions = this.buildFocusableOptions(); - var openAtIndex = focusOption === "first" ? 0 : focusableOptions.length - 1; - if (!this.props.isMulti) { - var selectedIndex = focusableOptions.indexOf(selectValue[0]); - if (selectedIndex > -1) { - openAtIndex = selectedIndex; - } - } - this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef); - this.setState({ - inputIsHiddenAfterUpdate: false, - focusedValue: null, - focusedOption: focusableOptions[openAtIndex] - }, function() { - return _this2.onMenuOpen(); - }); - } - }, { - key: "focusValue", - value: function focusValue(direction) { - var _this$state3 = this.state, selectValue = _this$state3.selectValue, focusedValue = _this$state3.focusedValue; - if (!this.props.isMulti) - return; - this.setState({ - focusedOption: null - }); - var focusedIndex = selectValue.indexOf(focusedValue); - if (!focusedValue) { - focusedIndex = -1; - } - var lastIndex = selectValue.length - 1; - var nextFocus = -1; - if (!selectValue.length) - return; - switch (direction) { - case "previous": - if (focusedIndex === 0) { - nextFocus = 0; - } else if (focusedIndex === -1) { - nextFocus = lastIndex; - } else { - nextFocus = focusedIndex - 1; - } - break; - case "next": - if (focusedIndex > -1 && focusedIndex < lastIndex) { - nextFocus = focusedIndex + 1; - } - break; - } - this.setState({ - inputIsHidden: nextFocus !== -1, - focusedValue: selectValue[nextFocus] - }); - } - }, { - key: "focusOption", - value: function focusOption() { - var direction = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "first"; - var pageSize = this.props.pageSize; - var focusedOption = this.state.focusedOption; - var options = this.getFocusableOptions(); - if (!options.length) - return; - var nextFocus = 0; - var focusedIndex = options.indexOf(focusedOption); - if (!focusedOption) { - focusedIndex = -1; - } - if (direction === "up") { - nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1; - } else if (direction === "down") { - nextFocus = (focusedIndex + 1) % options.length; - } else if (direction === "pageup") { - nextFocus = focusedIndex - pageSize; - if (nextFocus < 0) - nextFocus = 0; - } else if (direction === "pagedown") { - nextFocus = focusedIndex + pageSize; - if (nextFocus > options.length - 1) - nextFocus = options.length - 1; - } else if (direction === "last") { - nextFocus = options.length - 1; - } - this.scrollToFocusedOptionOnUpdate = true; - this.setState({ - focusedOption: options[nextFocus], - focusedValue: null - }); - } - }, { - key: "getTheme", - value: function getTheme() { - if (!this.props.theme) { - return defaultTheme; - } - if (typeof this.props.theme === "function") { - return this.props.theme(defaultTheme); - } - return _objectSpread(_objectSpread({}, defaultTheme), this.props.theme); - } - }, { - key: "getCommonProps", - value: function getCommonProps() { - var clearValue = this.clearValue, cx = this.cx, getStyles = this.getStyles, getClassNames = this.getClassNames, getValue2 = this.getValue, selectOption = this.selectOption, setValue = this.setValue, props = this.props; - var isMulti = props.isMulti, isRtl = props.isRtl, options = props.options; - var hasValue = this.hasValue(); - return { - clearValue, - cx, - getStyles, - getClassNames, - getValue: getValue2, - hasValue, - isMulti, - isRtl, - options, - selectOption, - selectProps: props, - setValue, - theme: this.getTheme() - }; - } - }, { - key: "hasValue", - value: function hasValue() { - var selectValue = this.state.selectValue; - return selectValue.length > 0; - } - }, { - key: "hasOptions", - value: function hasOptions() { - return !!this.getFocusableOptions().length; - } - }, { - key: "isClearable", - value: function isClearable() { - var _this$props7 = this.props, isClearable2 = _this$props7.isClearable, isMulti = _this$props7.isMulti; - if (isClearable2 === void 0) - return isMulti; - return isClearable2; - } - }, { - key: "isOptionDisabled", - value: function isOptionDisabled2(option, selectValue) { - return _isOptionDisabled(this.props, option, selectValue); - } - }, { - key: "isOptionSelected", - value: function isOptionSelected(option, selectValue) { - return _isOptionSelected(this.props, option, selectValue); - } - }, { - key: "filterOption", - value: function filterOption(option, inputValue) { - return _filterOption(this.props, option, inputValue); - } - }, { - key: "formatOptionLabel", - value: function formatOptionLabel(data, context) { - if (typeof this.props.formatOptionLabel === "function") { - var _inputValue = this.props.inputValue; - var _selectValue = this.state.selectValue; - return this.props.formatOptionLabel(data, { - context, - inputValue: _inputValue, - selectValue: _selectValue - }); - } else { - return this.getOptionLabel(data); - } - } - }, { - key: "formatGroupLabel", - value: function formatGroupLabel2(data) { - return this.props.formatGroupLabel(data); - } - }, { - key: "startListeningComposition", - value: function startListeningComposition() { - if (document && document.addEventListener) { - document.addEventListener("compositionstart", this.onCompositionStart, false); - document.addEventListener("compositionend", this.onCompositionEnd, false); - } - } - }, { - key: "stopListeningComposition", - value: function stopListeningComposition() { - if (document && document.removeEventListener) { - document.removeEventListener("compositionstart", this.onCompositionStart); - document.removeEventListener("compositionend", this.onCompositionEnd); - } - } - }, { - key: "startListeningToTouch", - value: function startListeningToTouch() { - if (document && document.addEventListener) { - document.addEventListener("touchstart", this.onTouchStart, false); - document.addEventListener("touchmove", this.onTouchMove, false); - document.addEventListener("touchend", this.onTouchEnd, false); - } - } - }, { - key: "stopListeningToTouch", - value: function stopListeningToTouch() { - if (document && document.removeEventListener) { - document.removeEventListener("touchstart", this.onTouchStart); - document.removeEventListener("touchmove", this.onTouchMove); - document.removeEventListener("touchend", this.onTouchEnd); - } - } - }, { - key: "renderInput", - value: function renderInput() { - var _this$props8 = this.props, isDisabled = _this$props8.isDisabled, isSearchable = _this$props8.isSearchable, inputId = _this$props8.inputId, inputValue = _this$props8.inputValue, tabIndex = _this$props8.tabIndex, form = _this$props8.form, menuIsOpen = _this$props8.menuIsOpen, required = _this$props8.required; - var _this$getComponents = this.getComponents(), Input = _this$getComponents.Input; - var _this$state4 = this.state, inputIsHidden = _this$state4.inputIsHidden, ariaSelection = _this$state4.ariaSelection; - var commonProps = this.commonProps; - var id2 = inputId || this.getElementId("input"); - var ariaAttributes = _objectSpread(_objectSpread(_objectSpread({ - "aria-autocomplete": "list", - "aria-expanded": menuIsOpen, - "aria-haspopup": true, - "aria-errormessage": this.props["aria-errormessage"], - "aria-invalid": this.props["aria-invalid"], - "aria-label": this.props["aria-label"], - "aria-labelledby": this.props["aria-labelledby"], - "aria-required": required, - role: "combobox" - }, menuIsOpen && { - "aria-controls": this.getElementId("listbox"), - "aria-owns": this.getElementId("listbox") - }), !isSearchable && { - "aria-readonly": true - }), this.hasValue() ? (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === "initial-input-focus" && { - "aria-describedby": this.getElementId("live-region") - } : { - "aria-describedby": this.getElementId("placeholder") - }); - if (!isSearchable) { - return /* @__PURE__ */ React__namespace.createElement(DummyInput, _extends2({ - id: id2, - innerRef: this.getInputRef, - onBlur: this.onInputBlur, - onChange: index.noop, - onFocus: this.onInputFocus, - disabled: isDisabled, - tabIndex, - inputMode: "none", - form, - value: "" - }, ariaAttributes)); - } - return /* @__PURE__ */ React__namespace.createElement(Input, _extends2({}, commonProps, { - autoCapitalize: "none", - autoComplete: "off", - autoCorrect: "off", - id: id2, - innerRef: this.getInputRef, - isDisabled, - isHidden: inputIsHidden, - onBlur: this.onInputBlur, - onChange: this.handleInputChange, - onFocus: this.onInputFocus, - spellCheck: "false", - tabIndex, - form, - type: "text", - value: inputValue - }, ariaAttributes)); - } - }, { - key: "renderPlaceholderOrValue", - value: function renderPlaceholderOrValue() { - var _this3 = this; - var _this$getComponents2 = this.getComponents(), MultiValue = _this$getComponents2.MultiValue, MultiValueContainer = _this$getComponents2.MultiValueContainer, MultiValueLabel = _this$getComponents2.MultiValueLabel, MultiValueRemove = _this$getComponents2.MultiValueRemove, SingleValue = _this$getComponents2.SingleValue, Placeholder = _this$getComponents2.Placeholder; - var commonProps = this.commonProps; - var _this$props9 = this.props, controlShouldRenderValue = _this$props9.controlShouldRenderValue, isDisabled = _this$props9.isDisabled, isMulti = _this$props9.isMulti, inputValue = _this$props9.inputValue, placeholder = _this$props9.placeholder; - var _this$state5 = this.state, selectValue = _this$state5.selectValue, focusedValue = _this$state5.focusedValue, isFocused = _this$state5.isFocused; - if (!this.hasValue() || !controlShouldRenderValue) { - return inputValue ? null : /* @__PURE__ */ React__namespace.createElement(Placeholder, _extends2({}, commonProps, { - key: "placeholder", - isDisabled, - isFocused, - innerProps: { - id: this.getElementId("placeholder") - } - }), placeholder); - } - if (isMulti) { - return selectValue.map(function(opt, index2) { - var isOptionFocused = opt === focusedValue; - var key = "".concat(_this3.getOptionLabel(opt), "-").concat(_this3.getOptionValue(opt)); - return /* @__PURE__ */ React__namespace.createElement(MultiValue, _extends2({}, commonProps, { - components: { - Container: MultiValueContainer, - Label: MultiValueLabel, - Remove: MultiValueRemove - }, - isFocused: isOptionFocused, - isDisabled, - key, - index: index2, - removeProps: { - onClick: function onClick() { - return _this3.removeValue(opt); - }, - onTouchEnd: function onTouchEnd() { - return _this3.removeValue(opt); - }, - onMouseDown: function onMouseDown(e) { - e.preventDefault(); - } - }, - data: opt - }), _this3.formatOptionLabel(opt, "value")); - }); - } - if (inputValue) { - return null; - } - var singleValue = selectValue[0]; - return /* @__PURE__ */ React__namespace.createElement(SingleValue, _extends2({}, commonProps, { - data: singleValue, - isDisabled - }), this.formatOptionLabel(singleValue, "value")); - } - }, { - key: "renderClearIndicator", - value: function renderClearIndicator() { - var _this$getComponents3 = this.getComponents(), ClearIndicator = _this$getComponents3.ClearIndicator; - var commonProps = this.commonProps; - var _this$props10 = this.props, isDisabled = _this$props10.isDisabled, isLoading = _this$props10.isLoading; - var isFocused = this.state.isFocused; - if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) { - return null; - } - var innerProps = { - onMouseDown: this.onClearIndicatorMouseDown, - onTouchEnd: this.onClearIndicatorTouchEnd, - "aria-hidden": "true" - }; - return /* @__PURE__ */ React__namespace.createElement(ClearIndicator, _extends2({}, commonProps, { - innerProps, - isFocused - })); - } - }, { - key: "renderLoadingIndicator", - value: function renderLoadingIndicator() { - var _this$getComponents4 = this.getComponents(), LoadingIndicator = _this$getComponents4.LoadingIndicator; - var commonProps = this.commonProps; - var _this$props11 = this.props, isDisabled = _this$props11.isDisabled, isLoading = _this$props11.isLoading; - var isFocused = this.state.isFocused; - if (!LoadingIndicator || !isLoading) - return null; - var innerProps = { - "aria-hidden": "true" - }; - return /* @__PURE__ */ React__namespace.createElement(LoadingIndicator, _extends2({}, commonProps, { - innerProps, - isDisabled, - isFocused - })); - } - }, { - key: "renderIndicatorSeparator", - value: function renderIndicatorSeparator() { - var _this$getComponents5 = this.getComponents(), DropdownIndicator = _this$getComponents5.DropdownIndicator, IndicatorSeparator = _this$getComponents5.IndicatorSeparator; - if (!DropdownIndicator || !IndicatorSeparator) - return null; - var commonProps = this.commonProps; - var isDisabled = this.props.isDisabled; - var isFocused = this.state.isFocused; - return /* @__PURE__ */ React__namespace.createElement(IndicatorSeparator, _extends2({}, commonProps, { - isDisabled, - isFocused - })); - } - }, { - key: "renderDropdownIndicator", - value: function renderDropdownIndicator() { - var _this$getComponents6 = this.getComponents(), DropdownIndicator = _this$getComponents6.DropdownIndicator; - if (!DropdownIndicator) - return null; - var commonProps = this.commonProps; - var isDisabled = this.props.isDisabled; - var isFocused = this.state.isFocused; - var innerProps = { - onMouseDown: this.onDropdownIndicatorMouseDown, - onTouchEnd: this.onDropdownIndicatorTouchEnd, - "aria-hidden": "true" - }; - return /* @__PURE__ */ React__namespace.createElement(DropdownIndicator, _extends2({}, commonProps, { - innerProps, - isDisabled, - isFocused - })); - } - }, { - key: "renderMenu", - value: function renderMenu() { - var _this4 = this; - var _this$getComponents7 = this.getComponents(), Group = _this$getComponents7.Group, GroupHeading = _this$getComponents7.GroupHeading, Menu3 = _this$getComponents7.Menu, MenuList = _this$getComponents7.MenuList, MenuPortal = _this$getComponents7.MenuPortal, LoadingMessage = _this$getComponents7.LoadingMessage, NoOptionsMessage = _this$getComponents7.NoOptionsMessage, Option = _this$getComponents7.Option; - var commonProps = this.commonProps; - var focusedOption = this.state.focusedOption; - var _this$props12 = this.props, captureMenuScroll = _this$props12.captureMenuScroll, inputValue = _this$props12.inputValue, isLoading = _this$props12.isLoading, loadingMessage = _this$props12.loadingMessage, minMenuHeight = _this$props12.minMenuHeight, maxMenuHeight = _this$props12.maxMenuHeight, menuIsOpen = _this$props12.menuIsOpen, menuPlacement = _this$props12.menuPlacement, menuPosition = _this$props12.menuPosition, menuPortalTarget = _this$props12.menuPortalTarget, menuShouldBlockScroll = _this$props12.menuShouldBlockScroll, menuShouldScrollIntoView = _this$props12.menuShouldScrollIntoView, noOptionsMessage = _this$props12.noOptionsMessage, onMenuScrollToTop = _this$props12.onMenuScrollToTop, onMenuScrollToBottom = _this$props12.onMenuScrollToBottom; - if (!menuIsOpen) - return null; - var render = function render2(props, id2) { - var type = props.type, data = props.data, isDisabled = props.isDisabled, isSelected = props.isSelected, label = props.label, value = props.value; - var isFocused = focusedOption === data; - var onHover = isDisabled ? void 0 : function() { - return _this4.onOptionHover(data); - }; - var onSelect = isDisabled ? void 0 : function() { - return _this4.selectOption(data); - }; - var optionId = "".concat(_this4.getElementId("option"), "-").concat(id2); - var innerProps = { - id: optionId, - onClick: onSelect, - onMouseMove: onHover, - onMouseOver: onHover, - tabIndex: -1 - }; - return /* @__PURE__ */ React__namespace.createElement(Option, _extends2({}, commonProps, { - innerProps, - data, - isDisabled, - isSelected, - key: optionId, - label, - type, - value, - isFocused, - innerRef: isFocused ? _this4.getFocusedOptionRef : void 0 - }), _this4.formatOptionLabel(props.data, "menu")); - }; - var menuUI; - if (this.hasOptions()) { - menuUI = this.getCategorizedOptions().map(function(item) { - if (item.type === "group") { - var _data = item.data, options = item.options, groupIndex = item.index; - var groupId = "".concat(_this4.getElementId("group"), "-").concat(groupIndex); - var headingId = "".concat(groupId, "-heading"); - return /* @__PURE__ */ React__namespace.createElement(Group, _extends2({}, commonProps, { - key: groupId, - data: _data, - options, - Heading: GroupHeading, - headingProps: { - id: headingId, - data: item.data - }, - label: _this4.formatGroupLabel(item.data) - }), item.options.map(function(option) { - return render(option, "".concat(groupIndex, "-").concat(option.index)); - })); - } else if (item.type === "option") { - return render(item, "".concat(item.index)); - } - }); - } else if (isLoading) { - var message = loadingMessage({ - inputValue - }); - if (message === null) - return null; - menuUI = /* @__PURE__ */ React__namespace.createElement(LoadingMessage, commonProps, message); - } else { - var _message = noOptionsMessage({ - inputValue - }); - if (_message === null) - return null; - menuUI = /* @__PURE__ */ React__namespace.createElement(NoOptionsMessage, commonProps, _message); - } - var menuPlacementProps = { - minMenuHeight, - maxMenuHeight, - menuPlacement, - menuPosition, - menuShouldScrollIntoView - }; - var menuElement = /* @__PURE__ */ React__namespace.createElement(index.MenuPlacer, _extends2({}, commonProps, menuPlacementProps), function(_ref4) { - var ref = _ref4.ref, _ref4$placerProps = _ref4.placerProps, placement = _ref4$placerProps.placement, maxHeight = _ref4$placerProps.maxHeight; - return /* @__PURE__ */ React__namespace.createElement(Menu3, _extends2({}, commonProps, menuPlacementProps, { - innerRef: ref, - innerProps: { - onMouseDown: _this4.onMenuMouseDown, - onMouseMove: _this4.onMenuMouseMove, - id: _this4.getElementId("listbox") - }, - isLoading, - placement - }), /* @__PURE__ */ React__namespace.createElement(ScrollManager, { - captureEnabled: captureMenuScroll, - onTopArrive: onMenuScrollToTop, - onBottomArrive: onMenuScrollToBottom, - lockEnabled: menuShouldBlockScroll - }, function(scrollTargetRef) { - return /* @__PURE__ */ React__namespace.createElement(MenuList, _extends2({}, commonProps, { - innerRef: function innerRef(instance) { - _this4.getMenuListRef(instance); - scrollTargetRef(instance); - }, - isLoading, - maxHeight, - focusedOption - }), menuUI); - })); - }); - return menuPortalTarget || menuPosition === "fixed" ? /* @__PURE__ */ React__namespace.createElement(MenuPortal, _extends2({}, commonProps, { - appendTo: menuPortalTarget, - controlElement: this.controlRef, - menuPlacement, - menuPosition - }), menuElement) : menuElement; - } - }, { - key: "renderFormField", - value: function renderFormField() { - var _this5 = this; - var _this$props13 = this.props, delimiter = _this$props13.delimiter, isDisabled = _this$props13.isDisabled, isMulti = _this$props13.isMulti, name = _this$props13.name, required = _this$props13.required; - var selectValue = this.state.selectValue; - if (required && !this.hasValue() && !isDisabled) { - return /* @__PURE__ */ React__namespace.createElement(RequiredInput$1, { - name, - onFocus: this.onValueInputFocus - }); - } - if (!name || isDisabled) - return; - if (isMulti) { - if (delimiter) { - var value = selectValue.map(function(opt) { - return _this5.getOptionValue(opt); - }).join(delimiter); - return /* @__PURE__ */ React__namespace.createElement("input", { - name, - type: "hidden", - value - }); - } else { - var input = selectValue.length > 0 ? selectValue.map(function(opt, i3) { - return /* @__PURE__ */ React__namespace.createElement("input", { - key: "i-".concat(i3), - name, - type: "hidden", - value: _this5.getOptionValue(opt) - }); - }) : /* @__PURE__ */ React__namespace.createElement("input", { - name, - type: "hidden", - value: "" - }); - return /* @__PURE__ */ React__namespace.createElement("div", null, input); - } - } else { - var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : ""; - return /* @__PURE__ */ React__namespace.createElement("input", { - name, - type: "hidden", - value: _value - }); - } - } - }, { - key: "renderLiveRegion", - value: function renderLiveRegion() { - var commonProps = this.commonProps; - var _this$state6 = this.state, ariaSelection = _this$state6.ariaSelection, focusedOption = _this$state6.focusedOption, focusedValue = _this$state6.focusedValue, isFocused = _this$state6.isFocused, selectValue = _this$state6.selectValue; - var focusableOptions = this.getFocusableOptions(); - return /* @__PURE__ */ React__namespace.createElement(LiveRegion$1, _extends2({}, commonProps, { - id: this.getElementId("live-region"), - ariaSelection, - focusedOption, - focusedValue, - isFocused, - selectValue, - focusableOptions - })); - } - }, { - key: "render", - value: function render() { - var _this$getComponents8 = this.getComponents(), Control = _this$getComponents8.Control, IndicatorsContainer = _this$getComponents8.IndicatorsContainer, SelectContainer = _this$getComponents8.SelectContainer, ValueContainer = _this$getComponents8.ValueContainer; - var _this$props14 = this.props, className = _this$props14.className, id2 = _this$props14.id, isDisabled = _this$props14.isDisabled, menuIsOpen = _this$props14.menuIsOpen; - var isFocused = this.state.isFocused; - var commonProps = this.commonProps = this.getCommonProps(); - return /* @__PURE__ */ React__namespace.createElement(SelectContainer, _extends2({}, commonProps, { - className, - innerProps: { - id: id2, - onKeyDown: this.onKeyDown - }, - isDisabled, - isFocused - }), this.renderLiveRegion(), /* @__PURE__ */ React__namespace.createElement(Control, _extends2({}, commonProps, { - innerRef: this.getControlRef, - innerProps: { - onMouseDown: this.onControlMouseDown, - onTouchEnd: this.onControlTouchEnd - }, - isDisabled, - isFocused, - menuIsOpen - }), /* @__PURE__ */ React__namespace.createElement(ValueContainer, _extends2({}, commonProps, { - isDisabled - }), this.renderPlaceholderOrValue(), this.renderInput()), /* @__PURE__ */ React__namespace.createElement(IndicatorsContainer, _extends2({}, commonProps, { - isDisabled - }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField()); - } - }], [{ - key: "getDerivedStateFromProps", - value: function getDerivedStateFromProps(props, state) { - var prevProps = state.prevProps, clearFocusValueOnUpdate = state.clearFocusValueOnUpdate, inputIsHiddenAfterUpdate = state.inputIsHiddenAfterUpdate, ariaSelection = state.ariaSelection, isFocused = state.isFocused, prevWasFocused = state.prevWasFocused; - var options = props.options, value = props.value, menuIsOpen = props.menuIsOpen, inputValue = props.inputValue, isMulti = props.isMulti; - var selectValue = index.cleanValue(value); - var newMenuOptionsState = {}; - if (prevProps && (value !== prevProps.value || options !== prevProps.options || menuIsOpen !== prevProps.menuIsOpen || inputValue !== prevProps.inputValue)) { - var focusableOptions = menuIsOpen ? buildFocusableOptions(props, selectValue) : []; - var focusedValue = clearFocusValueOnUpdate ? getNextFocusedValue(state, selectValue) : null; - var focusedOption = getNextFocusedOption(state, focusableOptions); - newMenuOptionsState = { - selectValue, - focusedOption, - focusedValue, - clearFocusValueOnUpdate: false - }; - } - var newInputIsHiddenState = inputIsHiddenAfterUpdate != null && props !== prevProps ? { - inputIsHidden: inputIsHiddenAfterUpdate, - inputIsHiddenAfterUpdate: void 0 - } : {}; - var newAriaSelection = ariaSelection; - var hasKeptFocus = isFocused && prevWasFocused; - if (isFocused && !hasKeptFocus) { - newAriaSelection = { - value: index.valueTernary(isMulti, selectValue, selectValue[0] || null), - options: selectValue, - action: "initial-input-focus" - }; - hasKeptFocus = !prevWasFocused; - } - if ((ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === "initial-input-focus") { - newAriaSelection = null; - } - return _objectSpread(_objectSpread(_objectSpread({}, newMenuOptionsState), newInputIsHiddenState), {}, { - prevProps: props, - ariaSelection: newAriaSelection, - prevWasFocused: hasKeptFocus - }); - } - }]); - return Select2; - }(React49.Component); - Select.defaultProps = defaultProps; - exports.Select = Select; - exports.createFilter = createFilter; - exports.defaultProps = defaultProps; - exports.defaultTheme = defaultTheme; - exports.getOptionLabel = getOptionLabel$1; - exports.getOptionValue = getOptionValue$1; - exports.mergeStyles = mergeStyles; - } -}); - -// node_modules/react-select/dist/react-select.cjs.dev.js -var require_react_select_cjs_dev = __commonJS({ - "node_modules/react-select/dist/react-select.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var useStateManager = require_useStateManager_7748b351_cjs_dev(); - var _extends2 = require_extends2(); - var React49 = require_react(); - var Select = require_Select_5041a4f3_cjs_dev(); - var react = require_emotion_react_cjs(); - var createCache = require_emotion_cache_cjs(); - var index = require_index_2fe3dc33_cjs_dev(); - require_objectSpread2(); - require_slicedToArray(); - require_objectWithoutProperties(); - require_classCallCheck(); - require_createClass(); - require_inherits(); - require_createSuper(); - require_toConsumableArray(); - require_memoize_one_cjs(); - require_typeof(); - require_taggedTemplateLiteral(); - require_defineProperty(); - require_react_dom(); - require_floating_ui_dom_umd(); - require_use_isomorphic_layout_effect_browser_cjs(); - function _interopDefault(e) { - return e && e.__esModule ? e : { "default": e }; - } - function _interopNamespace(e) { - if (e && e.__esModule) - return e; - var n2 = /* @__PURE__ */ Object.create(null); - if (e) { - Object.keys(e).forEach(function(k2) { - if (k2 !== "default") { - var d2 = Object.getOwnPropertyDescriptor(e, k2); - Object.defineProperty(n2, k2, d2.get ? d2 : { - enumerable: true, - get: function() { - return e[k2]; - } - }); - } - }); - } - n2["default"] = e; - return Object.freeze(n2); - } - var React__namespace = /* @__PURE__ */ _interopNamespace(React49); - var createCache__default = /* @__PURE__ */ _interopDefault(createCache); - var StateManagedSelect = /* @__PURE__ */ React49.forwardRef(function(props, ref) { - var baseSelectProps = useStateManager.useStateManager(props); - return /* @__PURE__ */ React__namespace.createElement(Select.Select, _extends2({ - ref - }, baseSelectProps)); - }); - var StateManagedSelect$1 = StateManagedSelect; - var NonceProvider = function(_ref) { - var nonce = _ref.nonce, children = _ref.children, cacheKey = _ref.cacheKey; - var emotionCache = React49.useMemo(function() { - return createCache__default["default"]({ - key: cacheKey, - nonce - }); - }, [cacheKey, nonce]); - return /* @__PURE__ */ React__namespace.createElement(react.CacheProvider, { - value: emotionCache - }, children); - }; - exports.useStateManager = useStateManager.useStateManager; - exports.createFilter = Select.createFilter; - exports.defaultTheme = Select.defaultTheme; - exports.mergeStyles = Select.mergeStyles; - exports.components = index.components; - exports.NonceProvider = NonceProvider; - exports["default"] = StateManagedSelect$1; - } -}); - -// node_modules/react-select/dist/react-select.cjs.js -var require_react_select_cjs = __commonJS({ - "node_modules/react-select/dist/react-select.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_react_select_cjs_dev(); - } - } -}); - -// node_modules/react-select/dist/react-select.cjs.default.js -var require_react_select_cjs_default = __commonJS({ - "node_modules/react-select/dist/react-select.cjs.default.js"(exports) { - exports._default = require_react_select_cjs().default; - } -}); - -// node_modules/fuzzysort/fuzzysort.js -var require_fuzzysort = __commonJS({ - "node_modules/fuzzysort/fuzzysort.js"(exports, module2) { - ((root, UMD) => { - if (typeof define === "function" && define.amd) - define([], UMD); - else if (typeof module2 === "object" && module2.exports) - module2.exports = UMD(); - else - root["fuzzysort"] = UMD(); - })(exports, (_3) => { - "use strict"; - var single = (search, target) => { - if (search == "farzher") - return { target: "farzher was here (^-^*)/", score: 0, _indexes: [0] }; - if (!search || !target) - return NULL; - var preparedSearch = getPreparedSearch(search); - if (!isObj(target)) - target = getPrepared(target); - var searchBitflags = preparedSearch.bitflags; - if ((searchBitflags & target._bitflags) !== searchBitflags) - return NULL; - return algorithm(preparedSearch, target); - }; - var go = (search, targets, options) => { - if (search == "farzher") - return [{ target: "farzher was here (^-^*)/", score: 0, _indexes: [0], obj: targets ? targets[0] : NULL }]; - if (!search) - return options && options.all ? all(search, targets, options) : noResults; - var preparedSearch = getPreparedSearch(search); - var searchBitflags = preparedSearch.bitflags; - var containsSpace = preparedSearch.containsSpace; - var threshold = options && options.threshold || INT_MIN; - var limit = options && options["limit"] || INT_MAX; - var resultsLen = 0; - var limitedCount = 0; - var targetsLen = targets.length; - if (options && options.key) { - var key = options.key; - for (var i2 = 0; i2 < targetsLen; ++i2) { - var obj = targets[i2]; - var target = getValue2(obj, key); - if (!target) - continue; - if (!isObj(target)) - target = getPrepared(target); - if ((searchBitflags & target._bitflags) !== searchBitflags) - continue; - var result = algorithm(preparedSearch, target); - if (result === NULL) - continue; - if (result.score < threshold) - continue; - result = { target: result.target, _targetLower: "", _targetLowerCodes: NULL, _nextBeginningIndexes: NULL, _bitflags: 0, score: result.score, _indexes: result._indexes, obj }; - if (resultsLen < limit) { - q2.add(result); - ++resultsLen; - } else { - ++limitedCount; - if (result.score > q2.peek().score) - q2.replaceTop(result); - } - } - } else if (options && options.keys) { - var scoreFn = options["scoreFn"] || defaultScoreFn; - var keys = options.keys; - var keysLen = keys.length; - for (var i2 = 0; i2 < targetsLen; ++i2) { - var obj = targets[i2]; - var objResults = new Array(keysLen); - for (var keyI = 0; keyI < keysLen; ++keyI) { - var key = keys[keyI]; - var target = getValue2(obj, key); - if (!target) { - objResults[keyI] = NULL; - continue; - } - if (!isObj(target)) - target = getPrepared(target); - if ((searchBitflags & target._bitflags) !== searchBitflags) - objResults[keyI] = NULL; - else - objResults[keyI] = algorithm(preparedSearch, target); - } - objResults.obj = obj; - var score = scoreFn(objResults); - if (score === NULL) - continue; - if (score < threshold) - continue; - objResults.score = score; - if (resultsLen < limit) { - q2.add(objResults); - ++resultsLen; - } else { - ++limitedCount; - if (score > q2.peek().score) - q2.replaceTop(objResults); - } - } - } else { - for (var i2 = 0; i2 < targetsLen; ++i2) { - var target = targets[i2]; - if (!target) - continue; - if (!isObj(target)) - target = getPrepared(target); - if ((searchBitflags & target._bitflags) !== searchBitflags) - continue; - var result = algorithm(preparedSearch, target); - if (result === NULL) - continue; - if (result.score < threshold) - continue; - if (resultsLen < limit) { - q2.add(result); - ++resultsLen; - } else { - ++limitedCount; - if (result.score > q2.peek().score) - q2.replaceTop(result); - } - } - } - if (resultsLen === 0) - return noResults; - var results = new Array(resultsLen); - for (var i2 = resultsLen - 1; i2 >= 0; --i2) - results[i2] = q2.poll(); - results.total = resultsLen + limitedCount; - return results; - }; - var highlight = (result, hOpen, hClose) => { - if (typeof hOpen === "function") - return highlightCallback(result, hOpen); - if (result === NULL) - return NULL; - if (hOpen === void 0) - hOpen = ""; - if (hClose === void 0) - hClose = ""; - var highlighted = ""; - var matchesIndex = 0; - var opened = false; - var target = result.target; - var targetLen = target.length; - var indexes2 = result._indexes; - indexes2 = indexes2.slice(0, indexes2.len).sort((a2, b2) => a2 - b2); - for (var i2 = 0; i2 < targetLen; ++i2) { - var char = target[i2]; - if (indexes2[matchesIndex] === i2) { - ++matchesIndex; - if (!opened) { - opened = true; - highlighted += hOpen; - } - if (matchesIndex === indexes2.length) { - highlighted += char + hClose + target.substr(i2 + 1); - break; - } - } else { - if (opened) { - opened = false; - highlighted += hClose; - } - } - highlighted += char; - } - return highlighted; - }; - var highlightCallback = (result, cb) => { - if (result === NULL) - return NULL; - var target = result.target; - var targetLen = target.length; - var indexes2 = result._indexes; - indexes2 = indexes2.slice(0, indexes2.len).sort((a2, b2) => a2 - b2); - var highlighted = ""; - var matchI = 0; - var indexesI = 0; - var opened = false; - var result = []; - for (var i2 = 0; i2 < targetLen; ++i2) { - var char = target[i2]; - if (indexes2[indexesI] === i2) { - ++indexesI; - if (!opened) { - opened = true; - result.push(highlighted); - highlighted = ""; - } - if (indexesI === indexes2.length) { - highlighted += char; - result.push(cb(highlighted, matchI++)); - highlighted = ""; - result.push(target.substr(i2 + 1)); - break; - } - } else { - if (opened) { - opened = false; - result.push(cb(highlighted, matchI++)); - highlighted = ""; - } - } - highlighted += char; - } - return result; - }; - var indexes = (result) => result._indexes.slice(0, result._indexes.len).sort((a2, b2) => a2 - b2); - var prepare = (target) => { - if (typeof target !== "string") - target = ""; - var info = prepareLowerInfo(target); - return { "target": target, _targetLower: info._lower, _targetLowerCodes: info.lowerCodes, _nextBeginningIndexes: NULL, _bitflags: info.bitflags, "score": NULL, _indexes: [0], "obj": NULL }; - }; - var prepareSearch = (search) => { - if (typeof search !== "string") - search = ""; - search = search.trim(); - var info = prepareLowerInfo(search); - var spaceSearches = []; - if (info.containsSpace) { - var searches = search.split(/\s+/); - searches = [...new Set(searches)]; - for (var i2 = 0; i2 < searches.length; i2++) { - if (searches[i2] === "") - continue; - var _info = prepareLowerInfo(searches[i2]); - spaceSearches.push({ lowerCodes: _info.lowerCodes, _lower: searches[i2].toLowerCase(), containsSpace: false }); - } - } - return { lowerCodes: info.lowerCodes, bitflags: info.bitflags, containsSpace: info.containsSpace, _lower: info._lower, spaceSearches }; - }; - var getPrepared = (target) => { - if (target.length > 999) - return prepare(target); - var targetPrepared = preparedCache.get(target); - if (targetPrepared !== void 0) - return targetPrepared; - targetPrepared = prepare(target); - preparedCache.set(target, targetPrepared); - return targetPrepared; - }; - var getPreparedSearch = (search) => { - if (search.length > 999) - return prepareSearch(search); - var searchPrepared = preparedSearchCache.get(search); - if (searchPrepared !== void 0) - return searchPrepared; - searchPrepared = prepareSearch(search); - preparedSearchCache.set(search, searchPrepared); - return searchPrepared; - }; - var all = (search, targets, options) => { - var results = []; - results.total = targets.length; - var limit = options && options.limit || INT_MAX; - if (options && options.key) { - for (var i2 = 0; i2 < targets.length; i2++) { - var obj = targets[i2]; - var target = getValue2(obj, options.key); - if (!target) - continue; - if (!isObj(target)) - target = getPrepared(target); - target.score = INT_MIN; - target._indexes.len = 0; - var result = target; - result = { target: result.target, _targetLower: "", _targetLowerCodes: NULL, _nextBeginningIndexes: NULL, _bitflags: 0, score: target.score, _indexes: NULL, obj }; - results.push(result); - if (results.length >= limit) - return results; - } - } else if (options && options.keys) { - for (var i2 = 0; i2 < targets.length; i2++) { - var obj = targets[i2]; - var objResults = new Array(options.keys.length); - for (var keyI = options.keys.length - 1; keyI >= 0; --keyI) { - var target = getValue2(obj, options.keys[keyI]); - if (!target) { - objResults[keyI] = NULL; - continue; - } - if (!isObj(target)) - target = getPrepared(target); - target.score = INT_MIN; - target._indexes.len = 0; - objResults[keyI] = target; - } - objResults.obj = obj; - objResults.score = INT_MIN; - results.push(objResults); - if (results.length >= limit) - return results; - } - } else { - for (var i2 = 0; i2 < targets.length; i2++) { - var target = targets[i2]; - if (!target) - continue; - if (!isObj(target)) - target = getPrepared(target); - target.score = INT_MIN; - target._indexes.len = 0; - results.push(target); - if (results.length >= limit) - return results; - } - } - return results; - }; - var algorithm = (preparedSearch, prepared, allowSpaces = false) => { - if (allowSpaces === false && preparedSearch.containsSpace) - return algorithmSpaces(preparedSearch, prepared); - var searchLower = preparedSearch._lower; - var searchLowerCodes = preparedSearch.lowerCodes; - var searchLowerCode = searchLowerCodes[0]; - var targetLowerCodes = prepared._targetLowerCodes; - var searchLen = searchLowerCodes.length; - var targetLen = targetLowerCodes.length; - var searchI = 0; - var targetI = 0; - var matchesSimpleLen = 0; - for (; ; ) { - var isMatch = searchLowerCode === targetLowerCodes[targetI]; - if (isMatch) { - matchesSimple[matchesSimpleLen++] = targetI; - ++searchI; - if (searchI === searchLen) - break; - searchLowerCode = searchLowerCodes[searchI]; - } - ++targetI; - if (targetI >= targetLen) - return NULL; - } - var searchI = 0; - var successStrict = false; - var matchesStrictLen = 0; - var nextBeginningIndexes = prepared._nextBeginningIndexes; - if (nextBeginningIndexes === NULL) - nextBeginningIndexes = prepared._nextBeginningIndexes = prepareNextBeginningIndexes(prepared.target); - var firstPossibleI = targetI = matchesSimple[0] === 0 ? 0 : nextBeginningIndexes[matchesSimple[0] - 1]; - var backtrackCount = 0; - if (targetI !== targetLen) - for (; ; ) { - if (targetI >= targetLen) { - if (searchI <= 0) - break; - ++backtrackCount; - if (backtrackCount > 200) - break; - --searchI; - var lastMatch = matchesStrict[--matchesStrictLen]; - targetI = nextBeginningIndexes[lastMatch]; - } else { - var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI]; - if (isMatch) { - matchesStrict[matchesStrictLen++] = targetI; - ++searchI; - if (searchI === searchLen) { - successStrict = true; - break; - } - ++targetI; - } else { - targetI = nextBeginningIndexes[targetI]; - } - } - } - var substringIndex = prepared._targetLower.indexOf(searchLower, matchesSimple[0]); - var isSubstring = ~substringIndex; - if (isSubstring && !successStrict) { - for (var i2 = 0; i2 < matchesSimpleLen; ++i2) - matchesSimple[i2] = substringIndex + i2; - } - var isSubstringBeginning = false; - if (isSubstring) { - isSubstringBeginning = prepared._nextBeginningIndexes[substringIndex - 1] === substringIndex; - } - { - if (successStrict) { - var matchesBest = matchesStrict; - var matchesBestLen = matchesStrictLen; - } else { - var matchesBest = matchesSimple; - var matchesBestLen = matchesSimpleLen; - } - var score = 0; - var extraMatchGroupCount = 0; - for (var i2 = 1; i2 < searchLen; ++i2) { - if (matchesBest[i2] - matchesBest[i2 - 1] !== 1) { - score -= matchesBest[i2]; - ++extraMatchGroupCount; - } - } - var unmatchedDistance = matchesBest[searchLen - 1] - matchesBest[0] - (searchLen - 1); - score -= (12 + unmatchedDistance) * extraMatchGroupCount; - if (matchesBest[0] !== 0) - score -= matchesBest[0] * matchesBest[0] * 0.2; - if (!successStrict) { - score *= 1e3; - } else { - var uniqueBeginningIndexes = 1; - for (var i2 = nextBeginningIndexes[0]; i2 < targetLen; i2 = nextBeginningIndexes[i2]) - ++uniqueBeginningIndexes; - if (uniqueBeginningIndexes > 24) - score *= (uniqueBeginningIndexes - 24) * 10; - } - if (isSubstring) - score /= 1 + searchLen * searchLen * 1; - if (isSubstringBeginning) - score /= 1 + searchLen * searchLen * 1; - score -= targetLen - searchLen; - prepared.score = score; - for (var i2 = 0; i2 < matchesBestLen; ++i2) - prepared._indexes[i2] = matchesBest[i2]; - prepared._indexes.len = matchesBestLen; - return prepared; - } - }; - var algorithmSpaces = (preparedSearch, target) => { - var seen_indexes = /* @__PURE__ */ new Set(); - var score = 0; - var result = NULL; - var first_seen_index_last_search = 0; - var searches = preparedSearch.spaceSearches; - for (var i2 = 0; i2 < searches.length; ++i2) { - var search = searches[i2]; - result = algorithm(search, target); - if (result === NULL) - return NULL; - score += result.score; - if (result._indexes[0] < first_seen_index_last_search) { - score -= first_seen_index_last_search - result._indexes[0]; - } - first_seen_index_last_search = result._indexes[0]; - for (var j2 = 0; j2 < result._indexes.len; ++j2) - seen_indexes.add(result._indexes[j2]); - } - var allowSpacesResult = algorithm(preparedSearch, target, true); - if (allowSpacesResult !== NULL && allowSpacesResult.score > score) { - return allowSpacesResult; - } - result.score = score; - var i2 = 0; - for (let index of seen_indexes) - result._indexes[i2++] = index; - result._indexes.len = i2; - return result; - }; - var prepareLowerInfo = (str) => { - var strLen = str.length; - var lower = str.toLowerCase(); - var lowerCodes = []; - var bitflags = 0; - var containsSpace = false; - for (var i2 = 0; i2 < strLen; ++i2) { - var lowerCode = lowerCodes[i2] = lower.charCodeAt(i2); - if (lowerCode === 32) { - containsSpace = true; - continue; - } - var bit = lowerCode >= 97 && lowerCode <= 122 ? lowerCode - 97 : lowerCode >= 48 && lowerCode <= 57 ? 26 : lowerCode <= 127 ? 30 : 31; - bitflags |= 1 << bit; - } - return { lowerCodes, bitflags, containsSpace, _lower: lower }; - }; - var prepareBeginningIndexes = (target) => { - var targetLen = target.length; - var beginningIndexes = []; - var beginningIndexesLen = 0; - var wasUpper = false; - var wasAlphanum = false; - for (var i2 = 0; i2 < targetLen; ++i2) { - var targetCode = target.charCodeAt(i2); - var isUpper = targetCode >= 65 && targetCode <= 90; - var isAlphanum = isUpper || targetCode >= 97 && targetCode <= 122 || targetCode >= 48 && targetCode <= 57; - var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum; - wasUpper = isUpper; - wasAlphanum = isAlphanum; - if (isBeginning) - beginningIndexes[beginningIndexesLen++] = i2; - } - return beginningIndexes; - }; - var prepareNextBeginningIndexes = (target) => { - var targetLen = target.length; - var beginningIndexes = prepareBeginningIndexes(target); - var nextBeginningIndexes = []; - var lastIsBeginning = beginningIndexes[0]; - var lastIsBeginningI = 0; - for (var i2 = 0; i2 < targetLen; ++i2) { - if (lastIsBeginning > i2) { - nextBeginningIndexes[i2] = lastIsBeginning; - } else { - lastIsBeginning = beginningIndexes[++lastIsBeginningI]; - nextBeginningIndexes[i2] = lastIsBeginning === void 0 ? targetLen : lastIsBeginning; - } - } - return nextBeginningIndexes; - }; - var cleanup = () => { - preparedCache.clear(); - preparedSearchCache.clear(); - matchesSimple = []; - matchesStrict = []; - }; - var preparedCache = /* @__PURE__ */ new Map(); - var preparedSearchCache = /* @__PURE__ */ new Map(); - var matchesSimple = []; - var matchesStrict = []; - var defaultScoreFn = (a2) => { - var max2 = INT_MIN; - var len = a2.length; - for (var i2 = 0; i2 < len; ++i2) { - var result = a2[i2]; - if (result === NULL) - continue; - var score = result.score; - if (score > max2) - max2 = score; - } - if (max2 === INT_MIN) - return NULL; - return max2; - }; - var getValue2 = (obj, prop) => { - var tmp = obj[prop]; - if (tmp !== void 0) - return tmp; - var segs = prop; - if (!Array.isArray(prop)) - segs = prop.split("."); - var len = segs.length; - var i2 = -1; - while (obj && ++i2 < len) - obj = obj[segs[i2]]; - return obj; - }; - var isObj = (x2) => { - return typeof x2 === "object"; - }; - var INT_MAX = Infinity; - var INT_MIN = -INT_MAX; - var noResults = []; - noResults.total = 0; - var NULL = null; - var fastpriorityqueue = (r2) => { - var e = [], o2 = 0, a2 = {}, v2 = (r3) => { - for (var a3 = 0, v3 = e[a3], c2 = 1; c2 < o2; ) { - var s2 = c2 + 1; - a3 = c2, s2 < o2 && e[s2].score < e[c2].score && (a3 = s2), e[a3 - 1 >> 1] = e[a3], c2 = 1 + (a3 << 1); - } - for (var f3 = a3 - 1 >> 1; a3 > 0 && v3.score < e[f3].score; f3 = (a3 = f3) - 1 >> 1) - e[a3] = e[f3]; - e[a3] = v3; - }; - return a2.add = (r3) => { - var a3 = o2; - e[o2++] = r3; - for (var v3 = a3 - 1 >> 1; a3 > 0 && r3.score < e[v3].score; v3 = (a3 = v3) - 1 >> 1) - e[a3] = e[v3]; - e[a3] = r3; - }, a2.poll = (r3) => { - if (0 !== o2) { - var a3 = e[0]; - return e[0] = e[--o2], v2(), a3; - } - }, a2.peek = (r3) => { - if (0 !== o2) - return e[0]; - }, a2.replaceTop = (r3) => { - e[0] = r3, v2(); - }, a2; - }; - var q2 = fastpriorityqueue(); - return { "single": single, "go": go, "highlight": highlight, "prepare": prepare, "indexes": indexes, "cleanup": cleanup }; - }); - } -}); - -// node_modules/papaparse/papaparse.min.js -var require_papaparse_min = __commonJS({ - "node_modules/papaparse/papaparse.min.js"(exports, module2) { - !function(e, t2) { - "function" == typeof define && define.amd ? define([], t2) : "object" == typeof module2 && "undefined" != typeof exports ? module2.exports = t2() : e.Papa = t2(); - }(exports, function s2() { - "use strict"; - var f3 = "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== f3 ? f3 : {}; - var n2 = !f3.document && !!f3.postMessage, o2 = f3.IS_PAPA_WORKER || false, a2 = {}, u2 = 0, b2 = { parse: function(e, t2) { - var r3 = (t2 = t2 || {}).dynamicTyping || false; - J(r3) && (t2.dynamicTypingFunction = r3, r3 = {}); - if (t2.dynamicTyping = r3, t2.transform = !!J(t2.transform) && t2.transform, t2.worker && b2.WORKERS_SUPPORTED) { - var i2 = function() { - if (!b2.WORKERS_SUPPORTED) - return false; - var e2 = (r4 = f3.URL || f3.webkitURL || null, i3 = s2.toString(), b2.BLOB_URL || (b2.BLOB_URL = r4.createObjectURL(new Blob(["var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; ", "(", i3, ")();"], { type: "text/javascript" })))), t3 = new f3.Worker(e2); - var r4, i3; - return t3.onmessage = _3, t3.id = u2++, a2[t3.id] = t3; - }(); - return i2.userStep = t2.step, i2.userChunk = t2.chunk, i2.userComplete = t2.complete, i2.userError = t2.error, t2.step = J(t2.step), t2.chunk = J(t2.chunk), t2.complete = J(t2.complete), t2.error = J(t2.error), delete t2.worker, void i2.postMessage({ input: e, config: t2, workerId: i2.id }); - } - var n3 = null; - b2.NODE_STREAM_INPUT, "string" == typeof e ? (e = function(e2) { - if (65279 === e2.charCodeAt(0)) - return e2.slice(1); - return e2; - }(e), n3 = t2.download ? new l2(t2) : new p2(t2)) : true === e.readable && J(e.read) && J(e.on) ? n3 = new g2(t2) : (f3.File && e instanceof File || e instanceof Object) && (n3 = new c2(t2)); - return n3.stream(e); - }, unparse: function(e, t2) { - var n3 = false, _4 = true, m3 = ",", y3 = "\r\n", s3 = '"', a3 = s3 + s3, r3 = false, i2 = null, o3 = false; - !function() { - if ("object" != typeof t2) - return; - "string" != typeof t2.delimiter || b2.BAD_DELIMITERS.filter(function(e2) { - return -1 !== t2.delimiter.indexOf(e2); - }).length || (m3 = t2.delimiter); - ("boolean" == typeof t2.quotes || "function" == typeof t2.quotes || Array.isArray(t2.quotes)) && (n3 = t2.quotes); - "boolean" != typeof t2.skipEmptyLines && "string" != typeof t2.skipEmptyLines || (r3 = t2.skipEmptyLines); - "string" == typeof t2.newline && (y3 = t2.newline); - "string" == typeof t2.quoteChar && (s3 = t2.quoteChar); - "boolean" == typeof t2.header && (_4 = t2.header); - if (Array.isArray(t2.columns)) { - if (0 === t2.columns.length) - throw new Error("Option columns is empty"); - i2 = t2.columns; - } - void 0 !== t2.escapeChar && (a3 = t2.escapeChar + s3); - ("boolean" == typeof t2.escapeFormulae || t2.escapeFormulae instanceof RegExp) && (o3 = t2.escapeFormulae instanceof RegExp ? t2.escapeFormulae : /^[=+\-@\t\r].*$/); - }(); - var u3 = new RegExp(Q2(s3), "g"); - "string" == typeof e && (e = JSON.parse(e)); - if (Array.isArray(e)) { - if (!e.length || Array.isArray(e[0])) - return h3(null, e, r3); - if ("object" == typeof e[0]) - return h3(i2 || Object.keys(e[0]), e, r3); - } else if ("object" == typeof e) - return "string" == typeof e.data && (e.data = JSON.parse(e.data)), Array.isArray(e.data) && (e.fields || (e.fields = e.meta && e.meta.fields || i2), e.fields || (e.fields = Array.isArray(e.data[0]) ? e.fields : "object" == typeof e.data[0] ? Object.keys(e.data[0]) : []), Array.isArray(e.data[0]) || "object" == typeof e.data[0] || (e.data = [e.data])), h3(e.fields || [], e.data || [], r3); - throw new Error("Unable to serialize unrecognized input"); - function h3(e2, t3, r4) { - var i3 = ""; - "string" == typeof e2 && (e2 = JSON.parse(e2)), "string" == typeof t3 && (t3 = JSON.parse(t3)); - var n4 = Array.isArray(e2) && 0 < e2.length, s4 = !Array.isArray(t3[0]); - if (n4 && _4) { - for (var a4 = 0; a4 < e2.length; a4++) - 0 < a4 && (i3 += m3), i3 += v3(e2[a4], a4); - 0 < t3.length && (i3 += y3); - } - for (var o4 = 0; o4 < t3.length; o4++) { - var u4 = n4 ? e2.length : t3[o4].length, h4 = false, f4 = n4 ? 0 === Object.keys(t3[o4]).length : 0 === t3[o4].length; - if (r4 && !n4 && (h4 = "greedy" === r4 ? "" === t3[o4].join("").trim() : 1 === t3[o4].length && 0 === t3[o4][0].length), "greedy" === r4 && n4) { - for (var d3 = [], l3 = 0; l3 < u4; l3++) { - var c3 = s4 ? e2[l3] : l3; - d3.push(t3[o4][c3]); - } - h4 = "" === d3.join("").trim(); - } - if (!h4) { - for (var p3 = 0; p3 < u4; p3++) { - 0 < p3 && !f4 && (i3 += m3); - var g3 = n4 && s4 ? e2[p3] : p3; - i3 += v3(t3[o4][g3], p3); - } - o4 < t3.length - 1 && (!r4 || 0 < u4 && !f4) && (i3 += y3); - } - } - return i3; - } - function v3(e2, t3) { - if (null == e2) - return ""; - if (e2.constructor === Date) - return JSON.stringify(e2).slice(1, 25); - var r4 = false; - o3 && "string" == typeof e2 && o3.test(e2) && (e2 = "'" + e2, r4 = true); - var i3 = e2.toString().replace(u3, a3); - return (r4 = r4 || true === n3 || "function" == typeof n3 && n3(e2, t3) || Array.isArray(n3) && n3[t3] || function(e3, t4) { - for (var r5 = 0; r5 < t4.length; r5++) - if (-1 < e3.indexOf(t4[r5])) - return true; - return false; - }(i3, b2.BAD_DELIMITERS) || -1 < i3.indexOf(m3) || " " === i3.charAt(0) || " " === i3.charAt(i3.length - 1)) ? s3 + i3 + s3 : i3; - } - } }; - if (b2.RECORD_SEP = String.fromCharCode(30), b2.UNIT_SEP = String.fromCharCode(31), b2.BYTE_ORDER_MARK = "\uFEFF", b2.BAD_DELIMITERS = ["\r", "\n", '"', b2.BYTE_ORDER_MARK], b2.WORKERS_SUPPORTED = !n2 && !!f3.Worker, b2.NODE_STREAM_INPUT = 1, b2.LocalChunkSize = 10485760, b2.RemoteChunkSize = 5242880, b2.DefaultDelimiter = ",", b2.Parser = E2, b2.ParserHandle = r2, b2.NetworkStreamer = l2, b2.FileStreamer = c2, b2.StringStreamer = p2, b2.ReadableStreamStreamer = g2, f3.jQuery) { - var d2 = f3.jQuery; - d2.fn.parse = function(o3) { - var r3 = o3.config || {}, u3 = []; - return this.each(function(e2) { - if (!("INPUT" === d2(this).prop("tagName").toUpperCase() && "file" === d2(this).attr("type").toLowerCase() && f3.FileReader) || !this.files || 0 === this.files.length) - return true; - for (var t2 = 0; t2 < this.files.length; t2++) - u3.push({ file: this.files[t2], inputElem: this, instanceConfig: d2.extend({}, r3) }); - }), e(), this; - function e() { - if (0 !== u3.length) { - var e2, t2, r4, i2, n3 = u3[0]; - if (J(o3.before)) { - var s3 = o3.before(n3.file, n3.inputElem); - if ("object" == typeof s3) { - if ("abort" === s3.action) - return e2 = "AbortError", t2 = n3.file, r4 = n3.inputElem, i2 = s3.reason, void (J(o3.error) && o3.error({ name: e2 }, t2, r4, i2)); - if ("skip" === s3.action) - return void h3(); - "object" == typeof s3.config && (n3.instanceConfig = d2.extend(n3.instanceConfig, s3.config)); - } else if ("skip" === s3) - return void h3(); - } - var a3 = n3.instanceConfig.complete; - n3.instanceConfig.complete = function(e3) { - J(a3) && a3(e3, n3.file, n3.inputElem), h3(); - }, b2.parse(n3.file, n3.instanceConfig); - } else - J(o3.complete) && o3.complete(); - } - function h3() { - u3.splice(0, 1), e(); - } - }; - } - function h2(e) { - this._handle = null, this._finished = false, this._completed = false, this._halted = false, this._input = null, this._baseIndex = 0, this._partialLine = "", this._rowCount = 0, this._start = 0, this._nextChunk = null, this.isFirstChunk = true, this._completeResults = { data: [], errors: [], meta: {} }, function(e2) { - var t2 = w2(e2); - t2.chunkSize = parseInt(t2.chunkSize), e2.step || e2.chunk || (t2.chunkSize = null); - this._handle = new r2(t2), (this._handle.streamer = this)._config = t2; - }.call(this, e), this.parseChunk = function(e2, t2) { - if (this.isFirstChunk && J(this._config.beforeFirstChunk)) { - var r3 = this._config.beforeFirstChunk(e2); - void 0 !== r3 && (e2 = r3); - } - this.isFirstChunk = false, this._halted = false; - var i2 = this._partialLine + e2; - this._partialLine = ""; - var n3 = this._handle.parse(i2, this._baseIndex, !this._finished); - if (!this._handle.paused() && !this._handle.aborted()) { - var s3 = n3.meta.cursor; - this._finished || (this._partialLine = i2.substring(s3 - this._baseIndex), this._baseIndex = s3), n3 && n3.data && (this._rowCount += n3.data.length); - var a3 = this._finished || this._config.preview && this._rowCount >= this._config.preview; - if (o2) - f3.postMessage({ results: n3, workerId: b2.WORKER_ID, finished: a3 }); - else if (J(this._config.chunk) && !t2) { - if (this._config.chunk(n3, this._handle), this._handle.paused() || this._handle.aborted()) - return void (this._halted = true); - n3 = void 0, this._completeResults = void 0; - } - return this._config.step || this._config.chunk || (this._completeResults.data = this._completeResults.data.concat(n3.data), this._completeResults.errors = this._completeResults.errors.concat(n3.errors), this._completeResults.meta = n3.meta), this._completed || !a3 || !J(this._config.complete) || n3 && n3.meta.aborted || (this._config.complete(this._completeResults, this._input), this._completed = true), a3 || n3 && n3.meta.paused || this._nextChunk(), n3; - } - this._halted = true; - }, this._sendError = function(e2) { - J(this._config.error) ? this._config.error(e2) : o2 && this._config.error && f3.postMessage({ workerId: b2.WORKER_ID, error: e2, finished: false }); - }; - } - function l2(e) { - var i2; - (e = e || {}).chunkSize || (e.chunkSize = b2.RemoteChunkSize), h2.call(this, e), this._nextChunk = n2 ? function() { - this._readChunk(), this._chunkLoaded(); - } : function() { - this._readChunk(); - }, this.stream = function(e2) { - this._input = e2, this._nextChunk(); - }, this._readChunk = function() { - if (this._finished) - this._chunkLoaded(); - else { - if (i2 = new XMLHttpRequest(), this._config.withCredentials && (i2.withCredentials = this._config.withCredentials), n2 || (i2.onload = v2(this._chunkLoaded, this), i2.onerror = v2(this._chunkError, this)), i2.open(this._config.downloadRequestBody ? "POST" : "GET", this._input, !n2), this._config.downloadRequestHeaders) { - var e2 = this._config.downloadRequestHeaders; - for (var t2 in e2) - i2.setRequestHeader(t2, e2[t2]); - } - if (this._config.chunkSize) { - var r3 = this._start + this._config.chunkSize - 1; - i2.setRequestHeader("Range", "bytes=" + this._start + "-" + r3); - } - try { - i2.send(this._config.downloadRequestBody); - } catch (e3) { - this._chunkError(e3.message); - } - n2 && 0 === i2.status && this._chunkError(); - } - }, this._chunkLoaded = function() { - 4 === i2.readyState && (i2.status < 200 || 400 <= i2.status ? this._chunkError() : (this._start += this._config.chunkSize ? this._config.chunkSize : i2.responseText.length, this._finished = !this._config.chunkSize || this._start >= function(e2) { - var t2 = e2.getResponseHeader("Content-Range"); - if (null === t2) - return -1; - return parseInt(t2.substring(t2.lastIndexOf("/") + 1)); - }(i2), this.parseChunk(i2.responseText))); - }, this._chunkError = function(e2) { - var t2 = i2.statusText || e2; - this._sendError(new Error(t2)); - }; - } - function c2(e) { - var i2, n3; - (e = e || {}).chunkSize || (e.chunkSize = b2.LocalChunkSize), h2.call(this, e); - var s3 = "undefined" != typeof FileReader; - this.stream = function(e2) { - this._input = e2, n3 = e2.slice || e2.webkitSlice || e2.mozSlice, s3 ? ((i2 = new FileReader()).onload = v2(this._chunkLoaded, this), i2.onerror = v2(this._chunkError, this)) : i2 = new FileReaderSync(), this._nextChunk(); - }, this._nextChunk = function() { - this._finished || this._config.preview && !(this._rowCount < this._config.preview) || this._readChunk(); - }, this._readChunk = function() { - var e2 = this._input; - if (this._config.chunkSize) { - var t2 = Math.min(this._start + this._config.chunkSize, this._input.size); - e2 = n3.call(e2, this._start, t2); - } - var r3 = i2.readAsText(e2, this._config.encoding); - s3 || this._chunkLoaded({ target: { result: r3 } }); - }, this._chunkLoaded = function(e2) { - this._start += this._config.chunkSize, this._finished = !this._config.chunkSize || this._start >= this._input.size, this.parseChunk(e2.target.result); - }, this._chunkError = function() { - this._sendError(i2.error); - }; - } - function p2(e) { - var r3; - h2.call(this, e = e || {}), this.stream = function(e2) { - return r3 = e2, this._nextChunk(); - }, this._nextChunk = function() { - if (!this._finished) { - var e2, t2 = this._config.chunkSize; - return t2 ? (e2 = r3.substring(0, t2), r3 = r3.substring(t2)) : (e2 = r3, r3 = ""), this._finished = !r3, this.parseChunk(e2); - } - }; - } - function g2(e) { - h2.call(this, e = e || {}); - var t2 = [], r3 = true, i2 = false; - this.pause = function() { - h2.prototype.pause.apply(this, arguments), this._input.pause(); - }, this.resume = function() { - h2.prototype.resume.apply(this, arguments), this._input.resume(); - }, this.stream = function(e2) { - this._input = e2, this._input.on("data", this._streamData), this._input.on("end", this._streamEnd), this._input.on("error", this._streamError); - }, this._checkIsFinished = function() { - i2 && 1 === t2.length && (this._finished = true); - }, this._nextChunk = function() { - this._checkIsFinished(), t2.length ? this.parseChunk(t2.shift()) : r3 = true; - }, this._streamData = v2(function(e2) { - try { - t2.push("string" == typeof e2 ? e2 : e2.toString(this._config.encoding)), r3 && (r3 = false, this._checkIsFinished(), this.parseChunk(t2.shift())); - } catch (e3) { - this._streamError(e3); - } - }, this), this._streamError = v2(function(e2) { - this._streamCleanUp(), this._sendError(e2); - }, this), this._streamEnd = v2(function() { - this._streamCleanUp(), i2 = true, this._streamData(""); - }, this), this._streamCleanUp = v2(function() { - this._input.removeListener("data", this._streamData), this._input.removeListener("end", this._streamEnd), this._input.removeListener("error", this._streamError); - }, this); - } - function r2(m3) { - var a3, o3, u3, i2 = Math.pow(2, 53), n3 = -i2, s3 = /^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/, h3 = /^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/, t2 = this, r3 = 0, f4 = 0, d3 = false, e = false, l3 = [], c3 = { data: [], errors: [], meta: {} }; - if (J(m3.step)) { - var p3 = m3.step; - m3.step = function(e2) { - if (c3 = e2, _4()) - g3(); - else { - if (g3(), 0 === c3.data.length) - return; - r3 += e2.data.length, m3.preview && r3 > m3.preview ? o3.abort() : (c3.data = c3.data[0], p3(c3, t2)); - } - }; - } - function y3(e2) { - return "greedy" === m3.skipEmptyLines ? "" === e2.join("").trim() : 1 === e2.length && 0 === e2[0].length; - } - function g3() { - return c3 && u3 && (k2("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" + b2.DefaultDelimiter + "'"), u3 = false), m3.skipEmptyLines && (c3.data = c3.data.filter(function(e2) { - return !y3(e2); - })), _4() && function() { - if (!c3) - return; - function e2(e3, t4) { - J(m3.transformHeader) && (e3 = m3.transformHeader(e3, t4)), l3.push(e3); - } - if (Array.isArray(c3.data[0])) { - for (var t3 = 0; _4() && t3 < c3.data.length; t3++) - c3.data[t3].forEach(e2); - c3.data.splice(0, 1); - } else - c3.data.forEach(e2); - }(), function() { - if (!c3 || !m3.header && !m3.dynamicTyping && !m3.transform) - return c3; - function e2(e3, t4) { - var r4, i3 = m3.header ? {} : []; - for (r4 = 0; r4 < e3.length; r4++) { - var n4 = r4, s4 = e3[r4]; - m3.header && (n4 = r4 >= l3.length ? "__parsed_extra" : l3[r4]), m3.transform && (s4 = m3.transform(s4, n4)), s4 = v3(n4, s4), "__parsed_extra" === n4 ? (i3[n4] = i3[n4] || [], i3[n4].push(s4)) : i3[n4] = s4; - } - return m3.header && (r4 > l3.length ? k2("FieldMismatch", "TooManyFields", "Too many fields: expected " + l3.length + " fields but parsed " + r4, f4 + t4) : r4 < l3.length && k2("FieldMismatch", "TooFewFields", "Too few fields: expected " + l3.length + " fields but parsed " + r4, f4 + t4)), i3; - } - var t3 = 1; - !c3.data.length || Array.isArray(c3.data[0]) ? (c3.data = c3.data.map(e2), t3 = c3.data.length) : c3.data = e2(c3.data, 0); - m3.header && c3.meta && (c3.meta.fields = l3); - return f4 += t3, c3; - }(); - } - function _4() { - return m3.header && 0 === l3.length; - } - function v3(e2, t3) { - return r4 = e2, m3.dynamicTypingFunction && void 0 === m3.dynamicTyping[r4] && (m3.dynamicTyping[r4] = m3.dynamicTypingFunction(r4)), true === (m3.dynamicTyping[r4] || m3.dynamicTyping) ? "true" === t3 || "TRUE" === t3 || "false" !== t3 && "FALSE" !== t3 && (function(e3) { - if (s3.test(e3)) { - var t4 = parseFloat(e3); - if (n3 < t4 && t4 < i2) - return true; - } - return false; - }(t3) ? parseFloat(t3) : h3.test(t3) ? new Date(t3) : "" === t3 ? null : t3) : t3; - var r4; - } - function k2(e2, t3, r4, i3) { - var n4 = { type: e2, code: t3, message: r4 }; - void 0 !== i3 && (n4.row = i3), c3.errors.push(n4); - } - this.parse = function(e2, t3, r4) { - var i3 = m3.quoteChar || '"'; - if (m3.newline || (m3.newline = function(e3, t4) { - e3 = e3.substring(0, 1048576); - var r5 = new RegExp(Q2(t4) + "([^]*?)" + Q2(t4), "gm"), i4 = (e3 = e3.replace(r5, "")).split("\r"), n5 = e3.split("\n"), s5 = 1 < n5.length && n5[0].length < i4[0].length; - if (1 === i4.length || s5) - return "\n"; - for (var a4 = 0, o4 = 0; o4 < i4.length; o4++) - "\n" === i4[o4][0] && a4++; - return a4 >= i4.length / 2 ? "\r\n" : "\r"; - }(e2, i3)), u3 = false, m3.delimiter) - J(m3.delimiter) && (m3.delimiter = m3.delimiter(e2), c3.meta.delimiter = m3.delimiter); - else { - var n4 = function(e3, t4, r5, i4, n5) { - var s5, a4, o4, u4; - n5 = n5 || [",", " ", "|", ";", b2.RECORD_SEP, b2.UNIT_SEP]; - for (var h4 = 0; h4 < n5.length; h4++) { - var f5 = n5[h4], d4 = 0, l4 = 0, c4 = 0; - o4 = void 0; - for (var p4 = new E2({ comments: i4, delimiter: f5, newline: t4, preview: 10 }).parse(e3), g4 = 0; g4 < p4.data.length; g4++) - if (r5 && y3(p4.data[g4])) - c4++; - else { - var _5 = p4.data[g4].length; - l4 += _5, void 0 !== o4 ? 0 < _5 && (d4 += Math.abs(_5 - o4), o4 = _5) : o4 = _5; - } - 0 < p4.data.length && (l4 /= p4.data.length - c4), (void 0 === a4 || d4 <= a4) && (void 0 === u4 || u4 < l4) && 1.99 < l4 && (a4 = d4, s5 = f5, u4 = l4); - } - return { successful: !!(m3.delimiter = s5), bestDelimiter: s5 }; - }(e2, m3.newline, m3.skipEmptyLines, m3.comments, m3.delimitersToGuess); - n4.successful ? m3.delimiter = n4.bestDelimiter : (u3 = true, m3.delimiter = b2.DefaultDelimiter), c3.meta.delimiter = m3.delimiter; - } - var s4 = w2(m3); - return m3.preview && m3.header && s4.preview++, a3 = e2, o3 = new E2(s4), c3 = o3.parse(a3, t3, r4), g3(), d3 ? { meta: { paused: true } } : c3 || { meta: { paused: false } }; - }, this.paused = function() { - return d3; - }, this.pause = function() { - d3 = true, o3.abort(), a3 = J(m3.chunk) ? "" : a3.substring(o3.getCharIndex()); - }, this.resume = function() { - t2.streamer._halted ? (d3 = false, t2.streamer.parseChunk(a3, true)) : setTimeout(t2.resume, 3); - }, this.aborted = function() { - return e; - }, this.abort = function() { - e = true, o3.abort(), c3.meta.aborted = true, J(m3.complete) && m3.complete(c3), a3 = ""; - }; - } - function Q2(e) { - return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); - } - function E2(j2) { - var z2, M2 = (j2 = j2 || {}).delimiter, P2 = j2.newline, U2 = j2.comments, q2 = j2.step, N2 = j2.preview, B2 = j2.fastMode, K = z2 = void 0 === j2.quoteChar || null === j2.quoteChar ? '"' : j2.quoteChar; - if (void 0 !== j2.escapeChar && (K = j2.escapeChar), ("string" != typeof M2 || -1 < b2.BAD_DELIMITERS.indexOf(M2)) && (M2 = ","), U2 === M2) - throw new Error("Comment character same as delimiter"); - true === U2 ? U2 = "#" : ("string" != typeof U2 || -1 < b2.BAD_DELIMITERS.indexOf(U2)) && (U2 = false), "\n" !== P2 && "\r" !== P2 && "\r\n" !== P2 && (P2 = "\n"); - var W2 = 0, H2 = false; - this.parse = function(i2, t2, r3) { - if ("string" != typeof i2) - throw new Error("Input must be a string"); - var n3 = i2.length, e = M2.length, s3 = P2.length, a3 = U2.length, o3 = J(q2), u3 = [], h3 = [], f4 = [], d3 = W2 = 0; - if (!i2) - return L2(); - if (j2.header && !t2) { - var l3 = i2.split(P2)[0].split(M2), c3 = [], p3 = {}, g3 = false; - for (var _4 in l3) { - var m3 = l3[_4]; - J(j2.transformHeader) && (m3 = j2.transformHeader(m3, _4)); - var y3 = m3, v3 = p3[m3] || 0; - for (0 < v3 && (g3 = true, y3 = m3 + "_" + v3), p3[m3] = v3 + 1; c3.includes(y3); ) - y3 = y3 + "_" + v3; - c3.push(y3); - } - if (g3) { - var k2 = i2.split(P2); - k2[0] = c3.join(M2), i2 = k2.join(P2); - } - } - if (B2 || false !== B2 && -1 === i2.indexOf(z2)) { - for (var b3 = i2.split(P2), E3 = 0; E3 < b3.length; E3++) { - if (f4 = b3[E3], W2 += f4.length, E3 !== b3.length - 1) - W2 += P2.length; - else if (r3) - return L2(); - if (!U2 || f4.substring(0, a3) !== U2) { - if (o3) { - if (u3 = [], I2(f4.split(M2)), F2(), H2) - return L2(); - } else - I2(f4.split(M2)); - if (N2 && N2 <= E3) - return u3 = u3.slice(0, N2), L2(true); - } - } - return L2(); - } - for (var w3 = i2.indexOf(M2, W2), R2 = i2.indexOf(P2, W2), C = new RegExp(Q2(K) + Q2(z2), "g"), S2 = i2.indexOf(z2, W2); ; ) - if (i2[W2] !== z2) - if (U2 && 0 === f4.length && i2.substring(W2, W2 + a3) === U2) { - if (-1 === R2) - return L2(); - W2 = R2 + s3, R2 = i2.indexOf(P2, W2), w3 = i2.indexOf(M2, W2); - } else if (-1 !== w3 && (w3 < R2 || -1 === R2)) - f4.push(i2.substring(W2, w3)), W2 = w3 + e, w3 = i2.indexOf(M2, W2); - else { - if (-1 === R2) - break; - if (f4.push(i2.substring(W2, R2)), D2(R2 + s3), o3 && (F2(), H2)) - return L2(); - if (N2 && u3.length >= N2) - return L2(true); - } - else - for (S2 = W2, W2++; ; ) { - if (-1 === (S2 = i2.indexOf(z2, S2 + 1))) - return r3 || h3.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row: u3.length, index: W2 }), T(); - if (S2 === n3 - 1) - return T(i2.substring(W2, S2).replace(C, z2)); - if (z2 !== K || i2[S2 + 1] !== K) { - if (z2 === K || 0 === S2 || i2[S2 - 1] !== K) { - -1 !== w3 && w3 < S2 + 1 && (w3 = i2.indexOf(M2, S2 + 1)), -1 !== R2 && R2 < S2 + 1 && (R2 = i2.indexOf(P2, S2 + 1)); - var O2 = A2(-1 === R2 ? w3 : Math.min(w3, R2)); - if (i2.substr(S2 + 1 + O2, e) === M2) { - f4.push(i2.substring(W2, S2).replace(C, z2)), i2[W2 = S2 + 1 + O2 + e] !== z2 && (S2 = i2.indexOf(z2, W2)), w3 = i2.indexOf(M2, W2), R2 = i2.indexOf(P2, W2); - break; - } - var x2 = A2(R2); - if (i2.substring(S2 + 1 + x2, S2 + 1 + x2 + s3) === P2) { - if (f4.push(i2.substring(W2, S2).replace(C, z2)), D2(S2 + 1 + x2 + s3), w3 = i2.indexOf(M2, W2), S2 = i2.indexOf(z2, W2), o3 && (F2(), H2)) - return L2(); - if (N2 && u3.length >= N2) - return L2(true); - break; - } - h3.push({ type: "Quotes", code: "InvalidQuotes", message: "Trailing quote on quoted field is malformed", row: u3.length, index: W2 }), S2++; - } - } else - S2++; - } - return T(); - function I2(e2) { - u3.push(e2), d3 = W2; - } - function A2(e2) { - var t3 = 0; - if (-1 !== e2) { - var r4 = i2.substring(S2 + 1, e2); - r4 && "" === r4.trim() && (t3 = r4.length); - } - return t3; - } - function T(e2) { - return r3 || (void 0 === e2 && (e2 = i2.substring(W2)), f4.push(e2), W2 = n3, I2(f4), o3 && F2()), L2(); - } - function D2(e2) { - W2 = e2, I2(f4), f4 = [], R2 = i2.indexOf(P2, W2); - } - function L2(e2) { - return { data: u3, errors: h3, meta: { delimiter: M2, linebreak: P2, aborted: H2, truncated: !!e2, cursor: d3 + (t2 || 0) } }; - } - function F2() { - q2(L2()), u3 = [], h3 = []; - } - }, this.abort = function() { - H2 = true; - }, this.getCharIndex = function() { - return W2; - }; - } - function _3(e) { - var t2 = e.data, r3 = a2[t2.workerId], i2 = false; - if (t2.error) - r3.userError(t2.error, t2.file); - else if (t2.results && t2.results.data) { - var n3 = { abort: function() { - i2 = true, m2(t2.workerId, { data: [], errors: [], meta: { aborted: true } }); - }, pause: y2, resume: y2 }; - if (J(r3.userStep)) { - for (var s3 = 0; s3 < t2.results.data.length && (r3.userStep({ data: t2.results.data[s3], errors: t2.results.errors, meta: t2.results.meta }, n3), !i2); s3++) - ; - delete t2.results; - } else - J(r3.userChunk) && (r3.userChunk(t2.results, n3, t2.file), delete t2.results); - } - t2.finished && !i2 && m2(t2.workerId, t2.results); - } - function m2(e, t2) { - var r3 = a2[e]; - J(r3.userComplete) && r3.userComplete(t2), r3.terminate(), delete a2[e]; - } - function y2() { - throw new Error("Not implemented."); - } - function w2(e) { - if ("object" != typeof e || null === e) - return e; - var t2 = Array.isArray(e) ? [] : {}; - for (var r3 in e) - t2[r3] = w2(e[r3]); - return t2; - } - function v2(e, t2) { - return function() { - e.apply(t2, arguments); - }; - } - function J(e) { - return "function" == typeof e; - } - return o2 && (f3.onmessage = function(e) { - var t2 = e.data; - void 0 === b2.WORKER_ID && t2 && (b2.WORKER_ID = t2.workerId); - if ("string" == typeof t2.input) - f3.postMessage({ workerId: b2.WORKER_ID, results: b2.parse(t2.input, t2.config), finished: true }); - else if (f3.File && t2.input instanceof File || t2.input instanceof Object) { - var r3 = b2.parse(t2.input, t2.config); - r3 && f3.postMessage({ workerId: b2.WORKER_ID, results: r3, finished: true }); - } - }), (l2.prototype = Object.create(h2.prototype)).constructor = l2, (c2.prototype = Object.create(h2.prototype)).constructor = c2, (p2.prototype = Object.create(p2.prototype)).constructor = p2, (g2.prototype = Object.create(h2.prototype)).constructor = g2, b2; - }); - } -}); - // node_modules/lodash/lodash.js var require_lodash = __commonJS({ "node_modules/lodash/lodash.js"(exports, module2) { @@ -34715,9 +23638,9 @@ var require_lodash = __commonJS({ return string.match(reUnicodeWord) || []; } var runInContext = function runInContext2(context) { - context = context == null ? root : _3.defaults(root.Object(), context, _3.pick(root, contextProps)); - var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError; - var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype; + context = context == null ? root : _5.defaults(root.Object(), context, _5.pick(root, contextProps)); + var Array3 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String3 = context.String, TypeError2 = context.TypeError; + var arrayProto = Array3.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype; var coreJsData = context["__core-js_shared__"]; var funcToString = funcProto.toString; var hasOwnProperty = objectProto.hasOwnProperty; @@ -35037,7 +23960,7 @@ var require_lodash = __commonJS({ Stack2.prototype.has = stackHas; Stack2.prototype.set = stackSet; function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length = result2.length; + var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String3) : [], length = result2.length; for (var key in value) { if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length)))) { result2.push(key); @@ -35100,7 +24023,7 @@ var require_lodash = __commonJS({ } } function baseAt(object, paths) { - var index = -1, length = paths.length, result2 = Array2(length), skip2 = object == null; + var index = -1, length = paths.length, result2 = Array3(length), skip2 = object == null; while (++index < length) { result2[index] = skip2 ? undefined2 : get(object, paths[index]); } @@ -35346,7 +24269,7 @@ var require_lodash = __commonJS({ return number >= nativeMin(start, end) && number < nativeMax(start, end); } function baseIntersection(arrays, iteratee2, comparator) { - var includes2 = comparator ? arrayIncludesWith : arrayIncludes, length = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = []; + var includes2 = comparator ? arrayIncludesWith : arrayIncludes, length = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array3(othLength), maxLength = Infinity, result2 = []; while (othIndex--) { var array = arrays[othIndex]; if (othIndex && iteratee2) { @@ -35527,7 +24450,7 @@ var require_lodash = __commonJS({ return value < other; } function baseMap(collection, iteratee2) { - var index = -1, result2 = isArrayLike(collection) ? Array2(collection.length) : []; + var index = -1, result2 = isArrayLike(collection) ? Array3(collection.length) : []; baseEach(collection, function(value, key, collection2) { result2[++index] = iteratee2(value, key, collection2); }); @@ -35702,7 +24625,7 @@ var require_lodash = __commonJS({ return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); } function baseRange(start, end, step, fromRight) { - var index = -1, length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), result2 = Array2(length); + var index = -1, length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), result2 = Array3(length); while (length--) { result2[fromRight ? length : ++index] = start; start += step; @@ -35784,7 +24707,7 @@ var require_lodash = __commonJS({ } length = start > end ? 0 : end - start >>> 0; start >>>= 0; - var result2 = Array2(length); + var result2 = Array3(length); while (++index < length) { result2[index] = array[index + start]; } @@ -35944,7 +24867,7 @@ var require_lodash = __commonJS({ if (length < 2) { return length ? baseUniq(arrays[0]) : []; } - var index = -1, result2 = Array2(length); + var index = -1, result2 = Array3(length); while (++index < length) { var array = arrays[index], othIndex = -1; while (++othIndex < length) { @@ -36041,7 +24964,7 @@ var require_lodash = __commonJS({ return object.index - other.index; } function composeArgs(args, partials, holders, isCurried) { - var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(leftLength + rangeLength), isUncurried = !isCurried; + var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array3(leftLength + rangeLength), isUncurried = !isCurried; while (++leftIndex < leftLength) { result2[leftIndex] = partials[leftIndex]; } @@ -36056,7 +24979,7 @@ var require_lodash = __commonJS({ return result2; } function composeArgsRight(args, partials, holders, isCurried) { - var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(rangeLength + rightLength), isUncurried = !isCurried; + var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array3(rangeLength + rightLength), isUncurried = !isCurried; while (++argsIndex < rangeLength) { result2[argsIndex] = args[argsIndex]; } @@ -36073,7 +24996,7 @@ var require_lodash = __commonJS({ } function copyArray(source, array) { var index = -1, length = source.length; - array || (array = Array2(length)); + array || (array = Array3(length)); while (++index < length) { array[index] = source[index]; } @@ -36206,7 +25129,7 @@ var require_lodash = __commonJS({ function createCurry(func, bitmask, arity) { var Ctor = createCtor(func); function wrapper() { - var length = arguments.length, args = Array2(length), index = length, placeholder = getHolder(wrapper); + var length = arguments.length, args = Array3(length), index = length, placeholder = getHolder(wrapper); while (index--) { args[index] = arguments[index]; } @@ -36286,7 +25209,7 @@ var require_lodash = __commonJS({ function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) { var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined2 : createCtor(func); function wrapper() { - var length = arguments.length, args = Array2(length), index = length; + var length = arguments.length, args = Array3(length), index = length; while (index--) { args[index] = arguments[index]; } @@ -36385,7 +25308,7 @@ var require_lodash = __commonJS({ function createPartial(func, bitmask, thisArg, partials) { var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func); function wrapper() { - var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn2 = this && this !== root && this instanceof wrapper ? Ctor : func; + var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array3(leftLength + argsLength), fn2 = this && this !== root && this instanceof wrapper ? Ctor : func; while (++leftIndex < leftLength) { args[leftIndex] = partials[leftIndex]; } @@ -36998,12 +25921,12 @@ var require_lodash = __commonJS({ function overRest(func, start, transform2) { start = nativeMax(start === undefined2 ? func.length - 1 : start, 0); return function() { - var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array2(length); + var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array3(length); while (++index < length) { array[index] = args[start + index]; } index = -1; - var otherArgs = Array2(start + 1); + var otherArgs = Array3(start + 1); while (++index < start) { otherArgs[index] = args[index]; } @@ -37125,7 +26048,7 @@ var require_lodash = __commonJS({ if (!length || size2 < 1) { return []; } - var index = 0, resIndex = 0, result2 = Array2(nativeCeil(length / size2)); + var index = 0, resIndex = 0, result2 = Array3(nativeCeil(length / size2)); while (index < length) { result2[resIndex++] = baseSlice(array, index, index += size2); } @@ -37146,7 +26069,7 @@ var require_lodash = __commonJS({ if (!length) { return []; } - var args = Array2(length - 1), array = arguments[0], index = length; + var args = Array3(length - 1), array = arguments[0], index = length; while (index--) { args[index - 1] = arguments[index]; } @@ -37607,11 +26530,11 @@ var require_lodash = __commonJS({ } return func(collection, getIteratee(predicate, 3)); } - function filter2(collection, predicate) { + function filter3(collection, predicate) { var func = isArray(collection) ? arrayFilter : baseFilter; return func(collection, getIteratee(predicate, 3)); } - var find2 = createFind(findIndex); + var find3 = createFind(findIndex); var findLast = createFind(findLastIndex); function flatMap(collection, iteratee2) { return baseFlatten(map2(collection, iteratee2), 1); @@ -37648,7 +26571,7 @@ var require_lodash = __commonJS({ return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1; } var invokeMap = baseRest(function(collection, path, args) { - var index = -1, isFunc = typeof path == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : []; + var index = -1, isFunc = typeof path == "function", result2 = isArrayLike(collection) ? Array3(collection.length) : []; baseEach(collection, function(value) { result2[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); }); @@ -38009,7 +26932,7 @@ var require_lodash = __commonJS({ customizer = typeof customizer == "function" ? customizer : undefined2; return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); } - function cloneDeep(value) { + function cloneDeep17(value) { return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); } function cloneDeepWith(value, customizer) { @@ -38031,7 +26954,7 @@ var require_lodash = __commonJS({ }()) ? baseIsArguments : function(value) { return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee"); }; - var isArray = Array2.isArray; + var isArray = Array3.isArray; var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; function isArrayLike(value) { return value != null && isLength(value.length) && !isFunction(value); @@ -38115,7 +27038,7 @@ var require_lodash = __commonJS({ return baseIsMatch(object, source, getMatchData(source), customizer); } function isNaN2(value) { - return isNumber2(value) && value != +value; + return isNumber4(value) && value != +value; } function isNative(value) { if (isMaskable(value)) { @@ -38129,7 +27052,7 @@ var require_lodash = __commonJS({ function isNil(value) { return value == null; } - function isNumber2(value) { + function isNumber4(value) { return typeof value == "number" || isObjectLike(value) && baseGetTag(value) == numberTag; } function isPlainObject4(value) { @@ -38538,7 +27461,7 @@ var require_lodash = __commonJS({ position -= target.length; return position >= 0 && string.slice(position, end) == target; } - function escape(string) { + function escape2(string) { string = toString(string); return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string; } @@ -39010,7 +27933,7 @@ var require_lodash = __commonJS({ lodash.dropRightWhile = dropRightWhile; lodash.dropWhile = dropWhile; lodash.fill = fill; - lodash.filter = filter2; + lodash.filter = filter3; lodash.flatMap = flatMap; lodash.flatMapDeep = flatMapDeep; lodash.flatMapDepth = flatMapDepth; @@ -39135,7 +28058,7 @@ var require_lodash = __commonJS({ lodash.ceil = ceil2; lodash.clamp = clamp; lodash.clone = clone2; - lodash.cloneDeep = cloneDeep; + lodash.cloneDeep = cloneDeep17; lodash.cloneDeepWith = cloneDeepWith; lodash.cloneWith = cloneWith; lodash.conformsTo = conformsTo; @@ -39144,10 +28067,10 @@ var require_lodash = __commonJS({ lodash.divide = divide; lodash.endsWith = endsWith; lodash.eq = eq; - lodash.escape = escape; + lodash.escape = escape2; lodash.escapeRegExp = escapeRegExp; lodash.every = every; - lodash.find = find2; + lodash.find = find3; lodash.findIndex = findIndex; lodash.findKey = findKey; lodash.findLast = findLast; @@ -39195,7 +28118,7 @@ var require_lodash = __commonJS({ lodash.isNative = isNative; lodash.isNil = isNil; lodash.isNull = isNull; - lodash.isNumber = isNumber2; + lodash.isNumber = isNumber4; lodash.isObject = isObject; lodash.isObjectLike = isObjectLike; lodash.isPlainObject = isPlainObject4; @@ -39449,54 +28372,9807 @@ var require_lodash = __commonJS({ } return lodash; }; - var _3 = runInContext(); + var _5 = runInContext(); if (typeof define == "function" && typeof define.amd == "object" && define.amd) { - root._ = _3; + root._ = _5; define(function() { - return _3; + return _5; }); } else if (freeModule) { - (freeModule.exports = _3)._ = _3; - freeExports._ = _3; + (freeModule.exports = _5)._ = _5; + freeExports._ = _5; } else { - root._ = _3; + root._ = _5; } }).call(exports); } }); +// node_modules/runtypes/lib/reflect.js +var require_reflect = __commonJS({ + "node_modules/runtypes/lib/reflect.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// node_modules/runtypes/lib/result.js +var require_result = __commonJS({ + "node_modules/runtypes/lib/result.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Failcode = void 0; + exports.Failcode = { + TYPE_INCORRECT: "TYPE_INCORRECT", + VALUE_INCORRECT: "VALUE_INCORRECT", + KEY_INCORRECT: "KEY_INCORRECT", + CONTENT_INCORRECT: "CONTENT_INCORRECT", + ARGUMENT_INCORRECT: "ARGUMENT_INCORRECT", + RETURN_INCORRECT: "RETURN_INCORRECT", + CONSTRAINT_FAILED: "CONSTRAINT_FAILED", + PROPERTY_MISSING: "PROPERTY_MISSING", + PROPERTY_PRESENT: "PROPERTY_PRESENT", + NOTHING_EXPECTED: "NOTHING_EXPECTED" + }; + } +}); + +// node_modules/runtypes/lib/errors.js +var require_errors = __commonJS({ + "node_modules/runtypes/lib/errors.js"(exports) { + "use strict"; + var __extends2 = exports && exports.__extends || function() { + var extendStatics = function(d2, b2) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) { + d3.__proto__ = b3; + } || function(d3, b3) { + for (var p2 in b3) + if (Object.prototype.hasOwnProperty.call(b3, p2)) + d3[p2] = b3[p2]; + }; + return extendStatics(d2, b2); + }; + return function(d2, b2) { + if (typeof b2 !== "function" && b2 !== null) + throw new TypeError("Class extends value " + String(b2) + " is not a constructor or null"); + extendStatics(d2, b2); + function __() { + this.constructor = d2; + } + d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __()); + }; + }(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ValidationError = void 0; + var ValidationError2 = function(_super) { + __extends2(ValidationError3, _super); + function ValidationError3(failure) { + var _this = _super.call(this, failure.message) || this; + _this.name = "ValidationError"; + _this.code = failure.code; + if (failure.details !== void 0) + _this.details = failure.details; + Object.setPrototypeOf(_this, ValidationError3.prototype); + return _this; + } + return ValidationError3; + }(Error); + exports.ValidationError = ValidationError2; + } +}); + +// node_modules/runtypes/lib/show.js +var require_show = __commonJS({ + "node_modules/runtypes/lib/show.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var showStringified = function(circular) { + return function(refl) { + switch (refl.tag) { + case "literal": + return '"'.concat(String(refl.value), '"'); + case "string": + return "string"; + case "brand": + return refl.brand; + case "constraint": + return refl.name || showStringified(circular)(refl.underlying); + case "union": + return refl.alternatives.map(showStringified(circular)).join(" | "); + case "intersect": + return refl.intersectees.map(showStringified(circular)).join(" & "); + default: + break; + } + return "`${".concat(show(false, circular)(refl), "}`"); + }; + }; + var showEmbedded = function(circular) { + return function(refl) { + switch (refl.tag) { + case "literal": + return String(refl.value); + case "brand": + return "${".concat(refl.brand, "}"); + case "constraint": + return refl.name ? "${".concat(refl.name, "}") : showEmbedded(circular)(refl.underlying); + case "union": + if (refl.alternatives.length === 1) { + var inner = refl.alternatives[0]; + return showEmbedded(circular)(inner.reflect); + } + break; + case "intersect": + if (refl.intersectees.length === 1) { + var inner = refl.intersectees[0]; + return showEmbedded(circular)(inner.reflect); + } + break; + default: + break; + } + return "${".concat(show(false, circular)(refl), "}"); + }; + }; + var show = function(needsParens, circular) { + return function(refl) { + var parenthesize = function(s2) { + return needsParens ? "(".concat(s2, ")") : s2; + }; + if (circular.has(refl)) + return parenthesize("CIRCULAR ".concat(refl.tag)); + else + circular.add(refl); + try { + switch (refl.tag) { + case "unknown": + case "never": + case "void": + case "boolean": + case "number": + case "bigint": + case "string": + case "symbol": + case "function": + return refl.tag; + case "literal": { + var value = refl.value; + return typeof value === "string" ? '"'.concat(value, '"') : String(value); + } + case "template": { + if (refl.strings.length === 0) + return '""'; + else if (refl.strings.length === 1) + return '"'.concat(refl.strings[0], '"'); + else if (refl.strings.length === 2) { + if (refl.strings.every(function(string) { + return string === ""; + })) { + var runtype = refl.runtypes[0]; + return showStringified(circular)(runtype.reflect); + } + } + var backtick_1 = false; + var inner = refl.strings.reduce(function(inner2, string, i2) { + var prefix2 = inner2 + string; + var runtype2 = refl.runtypes[i2]; + if (runtype2) { + var suffix = showEmbedded(circular)(runtype2.reflect); + if (!backtick_1 && suffix.startsWith("$")) + backtick_1 = true; + return prefix2 + suffix; + } else + return prefix2; + }, ""); + return backtick_1 ? "`".concat(inner, "`") : '"'.concat(inner, '"'); + } + case "array": + return "".concat(readonlyTag(refl)).concat(show(true, circular)(refl.element), "[]"); + case "dictionary": + return "{ [_: ".concat(refl.key, "]: ").concat(show(false, circular)(refl.value), " }"); + case "record": { + var keys = Object.keys(refl.fields); + return keys.length ? "{ ".concat(keys.map(function(k2) { + return "".concat(readonlyTag(refl)).concat(k2).concat(partialTag(refl, k2), ": ").concat(refl.fields[k2].tag === "optional" ? show(false, circular)(refl.fields[k2].underlying) : show(false, circular)(refl.fields[k2]), ";"); + }).join(" "), " }") : "{}"; + } + case "tuple": + return "[".concat(refl.components.map(show(false, circular)).join(", "), "]"); + case "union": + return parenthesize("".concat(refl.alternatives.map(show(true, circular)).join(" | "))); + case "intersect": + return parenthesize("".concat(refl.intersectees.map(show(true, circular)).join(" & "))); + case "optional": + return show(needsParens, circular)(refl.underlying) + " | undefined"; + case "constraint": + return refl.name || show(needsParens, circular)(refl.underlying); + case "instanceof": + return refl.ctor.name; + case "brand": + return show(needsParens, circular)(refl.entity); + } + } finally { + circular.delete(refl); + } + throw Error("impossible"); + }; + }; + exports.default = show(false, /* @__PURE__ */ new Set()); + function partialTag(_a2, key) { + var isPartial = _a2.isPartial, fields = _a2.fields; + return isPartial || key !== void 0 && fields[key].tag === "optional" ? "?" : ""; + } + function readonlyTag(_a2) { + var isReadonly = _a2.isReadonly; + return isReadonly ? "readonly " : ""; + } + } +}); + +// node_modules/runtypes/lib/util.js +var require_util = __commonJS({ + "node_modules/runtypes/lib/util.js"(exports) { + "use strict"; + var __assign = exports && exports.__assign || function() { + __assign = Object.assign || function(t2) { + for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) { + s2 = arguments[i2]; + for (var p2 in s2) + if (Object.prototype.hasOwnProperty.call(s2, p2)) + t2[p2] = s2[p2]; + } + return t2; + }; + return __assign.apply(this, arguments); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.FAILURE = exports.SUCCESS = exports.enumerableKeysOf = exports.typeOf = exports.hasKey = void 0; + var result_1 = require_result(); + var show_1 = require_show(); + function hasKey(key, object) { + return typeof object === "object" && object !== null && key in object; + } + exports.hasKey = hasKey; + var typeOf = function(value) { + var _a2, _b, _c; + return typeof value === "object" ? value === null ? "null" : Array.isArray(value) ? "array" : ((_a2 = value.constructor) === null || _a2 === void 0 ? void 0 : _a2.name) === "Object" ? "object" : (_c = (_b = value.constructor) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : typeof value : typeof value; + }; + exports.typeOf = typeOf; + var enumerableKeysOf = function(object) { + return typeof object === "object" && object !== null ? Reflect.ownKeys(object).filter(function(key) { + var _a2, _b; + return (_b = (_a2 = object.propertyIsEnumerable) === null || _a2 === void 0 ? void 0 : _a2.call(object, key)) !== null && _b !== void 0 ? _b : true; + }) : []; + }; + exports.enumerableKeysOf = enumerableKeysOf; + function SUCCESS(value) { + return { success: true, value }; + } + exports.SUCCESS = SUCCESS; + exports.FAILURE = Object.assign(function(code, message, details) { + return __assign({ success: false, code, message }, details ? { details } : {}); + }, { + TYPE_INCORRECT: function(self2, value) { + var message = "Expected ".concat(self2.tag === "template" ? "string ".concat((0, show_1.default)(self2)) : (0, show_1.default)(self2), ", but was ").concat((0, exports.typeOf)(value)); + return (0, exports.FAILURE)(result_1.Failcode.TYPE_INCORRECT, message); + }, + VALUE_INCORRECT: function(name, expected, received) { + return (0, exports.FAILURE)(result_1.Failcode.VALUE_INCORRECT, "Expected ".concat(name, " ").concat(String(expected), ", but was ").concat(String(received))); + }, + KEY_INCORRECT: function(self2, expected, value) { + return (0, exports.FAILURE)(result_1.Failcode.KEY_INCORRECT, "Expected ".concat((0, show_1.default)(self2), " key to be ").concat((0, show_1.default)(expected), ", but was ").concat((0, exports.typeOf)(value))); + }, + CONTENT_INCORRECT: function(self2, details) { + var formattedDetails = JSON.stringify(details, null, 2).replace(/^ *null,\n/gm, ""); + var message = "Validation failed:\n".concat(formattedDetails, ".\nObject should match ").concat((0, show_1.default)(self2)); + return (0, exports.FAILURE)(result_1.Failcode.CONTENT_INCORRECT, message, details); + }, + ARGUMENT_INCORRECT: function(message) { + return (0, exports.FAILURE)(result_1.Failcode.ARGUMENT_INCORRECT, message); + }, + RETURN_INCORRECT: function(message) { + return (0, exports.FAILURE)(result_1.Failcode.RETURN_INCORRECT, message); + }, + CONSTRAINT_FAILED: function(self2, message) { + var info = message ? ": ".concat(message) : ""; + return (0, exports.FAILURE)(result_1.Failcode.CONSTRAINT_FAILED, "Failed constraint check for ".concat((0, show_1.default)(self2)).concat(info)); + }, + PROPERTY_MISSING: function(self2) { + var message = "Expected ".concat((0, show_1.default)(self2), ", but was missing"); + return (0, exports.FAILURE)(result_1.Failcode.PROPERTY_MISSING, message); + }, + PROPERTY_PRESENT: function(value) { + var message = "Expected nothing, but was ".concat((0, exports.typeOf)(value)); + return (0, exports.FAILURE)(result_1.Failcode.PROPERTY_PRESENT, message); + }, + NOTHING_EXPECTED: function(value) { + var message = "Expected nothing, but was ".concat((0, exports.typeOf)(value)); + return (0, exports.FAILURE)(result_1.Failcode.NOTHING_EXPECTED, message); + } + }); + } +}); + +// node_modules/runtypes/lib/contract.js +var require_contract = __commonJS({ + "node_modules/runtypes/lib/contract.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o2, n2) { + var m2 = typeof Symbol === "function" && o2[Symbol.iterator]; + if (!m2) + return o2; + var i2 = m2.call(o2), r2, ar = [], e; + try { + while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done) + ar.push(r2.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r2 && !r2.done && (m2 = i2["return"])) + m2.call(i2); + } finally { + if (e) + throw e.error; + } + } + return ar; + }; + var __spreadArray2 = exports && exports.__spreadArray || function(to, from, pack) { + if (pack || arguments.length === 2) + for (var i2 = 0, l2 = from.length, ar; i2 < l2; i2++) { + if (ar || !(i2 in from)) { + if (!ar) + ar = Array.prototype.slice.call(from, 0, i2); + ar[i2] = from[i2]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Contract = void 0; + var errors_1 = require_errors(); + var util_1 = require_util(); + function Contract() { + var runtypes = []; + for (var _i = 0; _i < arguments.length; _i++) { + runtypes[_i] = arguments[_i]; + } + var lastIndex = runtypes.length - 1; + var argRuntypes = runtypes.slice(0, lastIndex); + var returnRuntype = runtypes[lastIndex]; + return { + enforce: function(f3) { + return function() { + var args = []; + for (var _i2 = 0; _i2 < arguments.length; _i2++) { + args[_i2] = arguments[_i2]; + } + if (args.length < argRuntypes.length) { + var message = "Expected ".concat(argRuntypes.length, " arguments but only received ").concat(args.length); + var failure = util_1.FAILURE.ARGUMENT_INCORRECT(message); + throw new errors_1.ValidationError(failure); + } + for (var i2 = 0; i2 < argRuntypes.length; i2++) + argRuntypes[i2].check(args[i2]); + return returnRuntype.check(f3.apply(void 0, __spreadArray2([], __read(args), false))); + }; + } + }; + } + exports.Contract = Contract; + } +}); + +// node_modules/runtypes/lib/asynccontract.js +var require_asynccontract = __commonJS({ + "node_modules/runtypes/lib/asynccontract.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o2, n2) { + var m2 = typeof Symbol === "function" && o2[Symbol.iterator]; + if (!m2) + return o2; + var i2 = m2.call(o2), r2, ar = [], e; + try { + while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done) + ar.push(r2.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r2 && !r2.done && (m2 = i2["return"])) + m2.call(i2); + } finally { + if (e) + throw e.error; + } + } + return ar; + }; + var __spreadArray2 = exports && exports.__spreadArray || function(to, from, pack) { + if (pack || arguments.length === 2) + for (var i2 = 0, l2 = from.length, ar; i2 < l2; i2++) { + if (ar || !(i2 in from)) { + if (!ar) + ar = Array.prototype.slice.call(from, 0, i2); + ar[i2] = from[i2]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AsyncContract = void 0; + var errors_1 = require_errors(); + var util_1 = require_util(); + function AsyncContract() { + var runtypes = []; + for (var _i = 0; _i < arguments.length; _i++) { + runtypes[_i] = arguments[_i]; + } + var lastIndex = runtypes.length - 1; + var argRuntypes = runtypes.slice(0, lastIndex); + var returnRuntype = runtypes[lastIndex]; + return { + enforce: function(f3) { + return function() { + var args = []; + for (var _i2 = 0; _i2 < arguments.length; _i2++) { + args[_i2] = arguments[_i2]; + } + if (args.length < argRuntypes.length) { + var message = "Expected ".concat(argRuntypes.length, " arguments but only received ").concat(args.length); + var failure = util_1.FAILURE.ARGUMENT_INCORRECT(message); + throw new errors_1.ValidationError(failure); + } + for (var i2 = 0; i2 < argRuntypes.length; i2++) + argRuntypes[i2].check(args[i2]); + var returnedPromise = f3.apply(void 0, __spreadArray2([], __read(args), false)); + if (!(returnedPromise instanceof Promise)) { + var message = "Expected function to return a promise, but instead got ".concat(returnedPromise); + var failure = util_1.FAILURE.RETURN_INCORRECT(message); + throw new errors_1.ValidationError(failure); + } + return returnedPromise.then(returnRuntype.check); + }; + } + }; + } + exports.AsyncContract = AsyncContract; + } +}); + +// node_modules/runtypes/lib/match.js +var require_match = __commonJS({ + "node_modules/runtypes/lib/match.js"(exports) { + "use strict"; + var __values = exports && exports.__values || function(o2) { + var s2 = typeof Symbol === "function" && Symbol.iterator, m2 = s2 && o2[s2], i2 = 0; + if (m2) + return m2.call(o2); + if (o2 && typeof o2.length === "number") + return { + next: function() { + if (o2 && i2 >= o2.length) + o2 = void 0; + return { value: o2 && o2[i2++], done: !o2 }; + } + }; + throw new TypeError(s2 ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + var __read = exports && exports.__read || function(o2, n2) { + var m2 = typeof Symbol === "function" && o2[Symbol.iterator]; + if (!m2) + return o2; + var i2 = m2.call(o2), r2, ar = [], e; + try { + while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done) + ar.push(r2.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r2 && !r2.done && (m2 = i2["return"])) + m2.call(i2); + } finally { + if (e) + throw e.error; + } + } + return ar; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.when = exports.match = void 0; + function match() { + var cases = []; + for (var _i = 0; _i < arguments.length; _i++) { + cases[_i] = arguments[_i]; + } + return function(x2) { + var e_1, _a2; + try { + for (var cases_1 = __values(cases), cases_1_1 = cases_1.next(); !cases_1_1.done; cases_1_1 = cases_1.next()) { + var _b = __read(cases_1_1.value, 2), T = _b[0], f3 = _b[1]; + if (T.guard(x2)) + return f3(x2); + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (cases_1_1 && !cases_1_1.done && (_a2 = cases_1.return)) + _a2.call(cases_1); + } finally { + if (e_1) + throw e_1.error; + } + } + throw new Error("No alternatives were matched"); + }; + } + exports.match = match; + function when(runtype, transformer) { + return [runtype, transformer]; + } + exports.when = when; + } +}); + +// node_modules/runtypes/lib/runtype.js +var require_runtype = __commonJS({ + "node_modules/runtypes/lib/runtype.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.innerValidate = exports.create = exports.isRuntype = void 0; + var index_1 = require_lib(); + var show_1 = require_show(); + var errors_1 = require_errors(); + var util_1 = require_util(); + var RuntypeSymbol = Symbol(); + var isRuntype = function(x2) { + return (0, util_1.hasKey)(RuntypeSymbol, x2); + }; + exports.isRuntype = isRuntype; + function create(validate2, A2) { + A2[RuntypeSymbol] = true; + A2.check = check; + A2.assert = check; + A2._innerValidate = function(value, visited) { + if (visited.has(value, A2)) + return (0, util_1.SUCCESS)(value); + return validate2(value, visited); + }; + A2.validate = function(value) { + return A2._innerValidate(value, VisitedState()); + }; + A2.guard = guard; + A2.Or = Or; + A2.And = And; + A2.optional = optional; + A2.nullable = nullable; + A2.withConstraint = withConstraint; + A2.withGuard = withGuard; + A2.withBrand = withBrand; + A2.reflect = A2; + A2.toString = function() { + return "Runtype<".concat((0, show_1.default)(A2), ">"); + }; + return A2; + function check(x2) { + var result = A2.validate(x2); + if (result.success) + return result.value; + else + throw new errors_1.ValidationError(result); + } + function guard(x2) { + return A2.validate(x2).success; + } + function Or(B2) { + return (0, index_1.Union)(A2, B2); + } + function And(B2) { + return (0, index_1.Intersect)(A2, B2); + } + function optional() { + return (0, index_1.Optional)(A2); + } + function nullable() { + return (0, index_1.Union)(A2, index_1.Null); + } + function withConstraint(constraint, options) { + return (0, index_1.Constraint)(A2, constraint, options); + } + function withGuard(guard2, options) { + return (0, index_1.Constraint)(A2, guard2, options); + } + function withBrand(B2) { + return (0, index_1.Brand)(B2, A2); + } + } + exports.create = create; + function innerValidate(targetType, value, visited) { + return targetType._innerValidate(value, visited); + } + exports.innerValidate = innerValidate; + function VisitedState() { + var members = /* @__PURE__ */ new WeakMap(); + var add = function(candidate, type) { + if (candidate === null || !(typeof candidate === "object")) + return; + var typeSet = members.get(candidate); + members.set(candidate, typeSet ? typeSet.set(type, true) : (/* @__PURE__ */ new WeakMap()).set(type, true)); + }; + var has = function(candidate, type) { + var typeSet = members.get(candidate); + var value = typeSet && typeSet.get(type) || false; + add(candidate, type); + return value; + }; + return { has }; + } + } +}); + +// node_modules/runtypes/lib/types/unknown.js +var require_unknown = __commonJS({ + "node_modules/runtypes/lib/types/unknown.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Unknown = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + var self2 = { tag: "unknown" }; + exports.Unknown = (0, runtype_1.create)(function(value) { + return (0, util_1.SUCCESS)(value); + }, self2); + } +}); + +// node_modules/runtypes/lib/types/never.js +var require_never = __commonJS({ + "node_modules/runtypes/lib/types/never.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Never = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + var self2 = { tag: "never" }; + exports.Never = (0, runtype_1.create)(util_1.FAILURE.NOTHING_EXPECTED, self2); + } +}); + +// node_modules/runtypes/lib/types/void.js +var require_void = __commonJS({ + "node_modules/runtypes/lib/types/void.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Void = void 0; + var unknown_1 = require_unknown(); + exports.Void = unknown_1.Unknown; + } +}); + +// node_modules/runtypes/lib/types/union.js +var require_union = __commonJS({ + "node_modules/runtypes/lib/types/union.js"(exports) { + "use strict"; + var __values = exports && exports.__values || function(o2) { + var s2 = typeof Symbol === "function" && Symbol.iterator, m2 = s2 && o2[s2], i2 = 0; + if (m2) + return m2.call(o2); + if (o2 && typeof o2.length === "number") + return { + next: function() { + if (o2 && i2 >= o2.length) + o2 = void 0; + return { value: o2 && o2[i2++], done: !o2 }; + } + }; + throw new TypeError(s2 ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Union = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + function Union2() { + var alternatives = []; + for (var _i = 0; _i < arguments.length; _i++) { + alternatives[_i] = arguments[_i]; + } + var match = function() { + var cases = []; + for (var _i2 = 0; _i2 < arguments.length; _i2++) { + cases[_i2] = arguments[_i2]; + } + return function(x2) { + for (var i2 = 0; i2 < alternatives.length; i2++) { + if (alternatives[i2].guard(x2)) { + return cases[i2](x2); + } + } + }; + }; + var self2 = { tag: "union", alternatives, match }; + return (0, runtype_1.create)(function(value, visited) { + var e_1, _a2, e_2, _b, e_3, _c, e_4, _d; + if (typeof value !== "object" || value === null) { + try { + for (var alternatives_1 = __values(alternatives), alternatives_1_1 = alternatives_1.next(); !alternatives_1_1.done; alternatives_1_1 = alternatives_1.next()) { + var alternative = alternatives_1_1.value; + if ((0, runtype_1.innerValidate)(alternative, value, visited).success) + return (0, util_1.SUCCESS)(value); + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (alternatives_1_1 && !alternatives_1_1.done && (_a2 = alternatives_1.return)) + _a2.call(alternatives_1); + } finally { + if (e_1) + throw e_1.error; + } + } + return util_1.FAILURE.TYPE_INCORRECT(self2, value); + } + var commonLiteralFields = {}; + try { + for (var alternatives_2 = __values(alternatives), alternatives_2_1 = alternatives_2.next(); !alternatives_2_1.done; alternatives_2_1 = alternatives_2.next()) { + var alternative = alternatives_2_1.value; + if (alternative.reflect.tag === "record") { + var _loop_1 = function(fieldName2) { + var field2 = alternative.reflect.fields[fieldName2]; + if (field2.tag === "literal") { + if (commonLiteralFields[fieldName2]) { + if (commonLiteralFields[fieldName2].every(function(value2) { + return value2 !== field2.value; + })) { + commonLiteralFields[fieldName2].push(field2.value); + } + } else { + commonLiteralFields[fieldName2] = [field2.value]; + } + } + }; + for (var fieldName in alternative.reflect.fields) { + _loop_1(fieldName); + } + } + } + } catch (e_2_1) { + e_2 = { error: e_2_1 }; + } finally { + try { + if (alternatives_2_1 && !alternatives_2_1.done && (_b = alternatives_2.return)) + _b.call(alternatives_2); + } finally { + if (e_2) + throw e_2.error; + } + } + for (var fieldName in commonLiteralFields) { + if (commonLiteralFields[fieldName].length === alternatives.length) { + try { + for (var alternatives_3 = (e_3 = void 0, __values(alternatives)), alternatives_3_1 = alternatives_3.next(); !alternatives_3_1.done; alternatives_3_1 = alternatives_3.next()) { + var alternative = alternatives_3_1.value; + if (alternative.reflect.tag === "record") { + var field = alternative.reflect.fields[fieldName]; + if (field.tag === "literal" && (0, util_1.hasKey)(fieldName, value) && value[fieldName] === field.value) { + return (0, runtype_1.innerValidate)(alternative, value, visited); + } + } + } + } catch (e_3_1) { + e_3 = { error: e_3_1 }; + } finally { + try { + if (alternatives_3_1 && !alternatives_3_1.done && (_c = alternatives_3.return)) + _c.call(alternatives_3); + } finally { + if (e_3) + throw e_3.error; + } + } + } + } + try { + for (var alternatives_4 = __values(alternatives), alternatives_4_1 = alternatives_4.next(); !alternatives_4_1.done; alternatives_4_1 = alternatives_4.next()) { + var targetType = alternatives_4_1.value; + if ((0, runtype_1.innerValidate)(targetType, value, visited).success) + return (0, util_1.SUCCESS)(value); + } + } catch (e_4_1) { + e_4 = { error: e_4_1 }; + } finally { + try { + if (alternatives_4_1 && !alternatives_4_1.done && (_d = alternatives_4.return)) + _d.call(alternatives_4); + } finally { + if (e_4) + throw e_4.error; + } + } + return util_1.FAILURE.TYPE_INCORRECT(self2, value); + }, self2); + } + exports.Union = Union2; + } +}); + +// node_modules/runtypes/lib/types/literal.js +var require_literal = __commonJS({ + "node_modules/runtypes/lib/types/literal.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Nullish = exports.Null = exports.Undefined = exports.Literal = exports.literal = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + var union_1 = require_union(); + function literal(value) { + return Array.isArray(value) ? String(value.map(String)) : typeof value === "bigint" ? String(value) + "n" : String(value); + } + exports.literal = literal; + function Literal2(valueBase) { + var self2 = { tag: "literal", value: valueBase }; + return (0, runtype_1.create)(function(value) { + return value === valueBase ? (0, util_1.SUCCESS)(value) : util_1.FAILURE.VALUE_INCORRECT("literal", "`".concat(literal(valueBase), "`"), "`".concat(literal(value), "`")); + }, self2); + } + exports.Literal = Literal2; + exports.Undefined = Literal2(void 0); + exports.Null = Literal2(null); + exports.Nullish = (0, union_1.Union)(exports.Null, exports.Undefined); + } +}); + +// node_modules/runtypes/lib/types/template.js +var require_template = __commonJS({ + "node_modules/runtypes/lib/types/template.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o2, n2) { + var m2 = typeof Symbol === "function" && o2[Symbol.iterator]; + if (!m2) + return o2; + var i2 = m2.call(o2), r2, ar = [], e; + try { + while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done) + ar.push(r2.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r2 && !r2.done && (m2 = i2["return"])) + m2.call(i2); + } finally { + if (e) + throw e.error; + } + } + return ar; + }; + var __spreadArray2 = exports && exports.__spreadArray || function(to, from, pack) { + if (pack || arguments.length === 2) + for (var i2 = 0, l2 = from.length, ar; i2 < l2; i2++) { + if (ar || !(i2 in from)) { + if (!ar) + ar = Array.prototype.slice.call(from, 0, i2); + ar[i2] = from[i2]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + }; + var __values = exports && exports.__values || function(o2) { + var s2 = typeof Symbol === "function" && Symbol.iterator, m2 = s2 && o2[s2], i2 = 0; + if (m2) + return m2.call(o2); + if (o2 && typeof o2.length === "number") + return { + next: function() { + if (o2 && i2 >= o2.length) + o2 = void 0; + return { value: o2 && o2[i2++], done: !o2 }; + } + }; + throw new TypeError(s2 ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Template = void 0; + var runtype_1 = require_runtype(); + var show_1 = require_show(); + var util_1 = require_util(); + var literal_1 = require_literal(); + var escapeRegExp = function(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + }; + var parseArgs = function(args) { + if (0 < args.length && Array.isArray(args[0])) { + var _a2 = __read(args), strings = _a2[0], runtypes = _a2.slice(1); + return [Array.from(strings), runtypes]; + } else { + var convenient = args; + var strings = convenient.reduce(function(strings2, arg) { + if (!(0, runtype_1.isRuntype)(arg)) + strings2.push(strings2.pop() + String(arg)); + else + strings2.push(""); + return strings2; + }, [""]); + var runtypes = convenient.filter(runtype_1.isRuntype); + return [strings, runtypes]; + } + }; + var flattenInnerRuntypes = function(strings, runtypes) { + for (var i2 = 0; i2 < runtypes.length; ) { + switch (runtypes[i2].reflect.tag) { + case "literal": { + var literal_2 = runtypes[i2]; + runtypes.splice(i2, 1); + var string = String(literal_2.value); + strings.splice(i2, 2, strings[i2] + string + strings[i2 + 1]); + break; + } + case "template": { + var template = runtypes[i2]; + runtypes.splice.apply(runtypes, __spreadArray2([i2, 1], __read(template.runtypes), false)); + var innerStrings = template.strings; + if (innerStrings.length === 1) { + strings.splice(i2, 2, strings[i2] + innerStrings[0] + strings[i2 + 1]); + } else { + var first = innerStrings[0]; + var rest = innerStrings.slice(1, -1); + var last2 = innerStrings[innerStrings.length - 1]; + strings.splice.apply(strings, __spreadArray2(__spreadArray2([i2, 2, strings[i2] + first], __read(rest), false), [last2 + strings[i2 + 1]], false)); + } + break; + } + case "union": { + var union = runtypes[i2]; + if (union.alternatives.length === 1) { + try { + var literal_3 = getInnerLiteral(union); + runtypes.splice(i2, 1); + var string = String(literal_3.value); + strings.splice(i2, 2, strings[i2] + string + strings[i2 + 1]); + break; + } catch (_5) { + i2++; + break; + } + } else { + i2++; + break; + } + } + case "intersect": { + var intersect = runtypes[i2]; + if (intersect.intersectees.length === 1) { + try { + var literal_4 = getInnerLiteral(intersect); + runtypes.splice(i2, 1); + var string = String(literal_4.value); + strings.splice(i2, 2, strings[i2] + string + strings[i2 + 1]); + break; + } catch (_5) { + i2++; + break; + } + } else { + i2++; + break; + } + } + default: + i2++; + break; + } + } + }; + var normalizeArgs = function(args) { + var _a2 = __read(parseArgs(args), 2), strings = _a2[0], runtypes = _a2[1]; + flattenInnerRuntypes(strings, runtypes); + return [strings, runtypes]; + }; + var getInnerLiteral = function(runtype) { + switch (runtype.reflect.tag) { + case "literal": + return runtype; + case "brand": + return getInnerLiteral(runtype.reflect.entity); + case "union": + if (runtype.reflect.alternatives.length === 1) + return getInnerLiteral(runtype.reflect.alternatives[0]); + break; + case "intersect": + if (runtype.reflect.intersectees.length === 1) + return getInnerLiteral(runtype.reflect.intersectees[0]); + break; + default: + break; + } + throw void 0; + }; + var identity2 = function(s2) { + return s2; + }; + var revivers = { + string: [function(s2) { + return globalThis.String(s2); + }, ".*"], + number: [ + function(s2) { + return globalThis.Number(s2); + }, + "[+-]?(?:\\d*\\.\\d+|\\d+\\.\\d*|\\d+)(?:[Ee][+-]?\\d+)?", + "0[Bb][01]+", + "0[Oo][0-7]+", + "0[Xx][0-9A-Fa-f]+" + ], + bigint: [function(s2) { + return globalThis.BigInt(s2); + }, "-?[1-9]d*"], + boolean: [function(s2) { + return s2 === "false" ? false : true; + }, "true", "false"], + null: [function() { + return null; + }, "null"], + undefined: [function() { + return void 0; + }, "undefined"] + }; + var getReviversFor = function(reflect) { + switch (reflect.tag) { + case "literal": { + var _a2 = __read(revivers[(0, util_1.typeOf)(reflect.value)] || [identity2], 1), reviver_1 = _a2[0]; + return reviver_1; + } + case "brand": + return getReviversFor(reflect.entity); + case "constraint": + return getReviversFor(reflect.underlying); + case "union": + return reflect.alternatives.map(getReviversFor); + case "intersect": + return reflect.intersectees.map(getReviversFor); + default: + var _b = __read(revivers[reflect.tag] || [identity2], 1), reviver = _b[0]; + return reviver; + } + }; + var reviveValidate = function(reflect, visited) { + return function(value) { + var e_1, _a2, e_2, _b; + var revivers2 = getReviversFor(reflect); + if (Array.isArray(revivers2)) { + switch (reflect.tag) { + case "union": + try { + for (var _c = __values(reflect.alternatives), _d = _c.next(); !_d.done; _d = _c.next()) { + var alternative = _d.value; + var validated = reviveValidate(alternative.reflect, visited)(value); + if (validated.success) + return validated; + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (_d && !_d.done && (_a2 = _c.return)) + _a2.call(_c); + } finally { + if (e_1) + throw e_1.error; + } + } + return util_1.FAILURE.TYPE_INCORRECT(reflect, value); + case "intersect": + try { + for (var _e = __values(reflect.intersectees), _f = _e.next(); !_f.done; _f = _e.next()) { + var intersectee = _f.value; + var validated = reviveValidate(intersectee.reflect, visited)(value); + if (!validated.success) + return validated; + } + } catch (e_2_1) { + e_2 = { error: e_2_1 }; + } finally { + try { + if (_f && !_f.done && (_b = _e.return)) + _b.call(_e); + } finally { + if (e_2) + throw e_2.error; + } + } + return (0, util_1.SUCCESS)(value); + default: + throw Error("impossible"); + } + } else { + var reviver = revivers2; + var validated = (0, runtype_1.innerValidate)(reflect, reviver(value), visited); + if (!validated.success && validated.code === "VALUE_INCORRECT" && reflect.tag === "literal") + return util_1.FAILURE.VALUE_INCORRECT("literal", '"'.concat((0, literal_1.literal)(reflect.value), '"'), '"'.concat(value, '"')); + return validated; + } + }; + }; + var getRegExpPatternFor = function(reflect) { + switch (reflect.tag) { + case "literal": + return escapeRegExp(String(reflect.value)); + case "brand": + return getRegExpPatternFor(reflect.entity); + case "constraint": + return getRegExpPatternFor(reflect.underlying); + case "union": + return reflect.alternatives.map(getRegExpPatternFor).join("|"); + case "template": { + return reflect.strings.map(escapeRegExp).reduce(function(pattern, string, i2) { + var prefix2 = pattern + string; + var runtype = reflect.runtypes[i2]; + if (runtype) + return prefix2 + "(?:".concat(getRegExpPatternFor(runtype.reflect), ")"); + else + return prefix2; + }, ""); + } + default: + var _a2 = __read(revivers[reflect.tag] || [void 0, ".*"]), patterns = _a2.slice(1); + return patterns.join("|"); + } + }; + var createRegExpForTemplate = function(reflect) { + var pattern = reflect.strings.map(escapeRegExp).reduce(function(pattern2, string, i2) { + var prefix2 = pattern2 + string; + var runtype = reflect.runtypes[i2]; + if (runtype) + return prefix2 + "(".concat(getRegExpPatternFor(runtype.reflect), ")"); + else + return prefix2; + }, ""); + return new RegExp("^".concat(pattern, "$"), "su"); + }; + function Template() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var _a2 = __read(normalizeArgs(args), 2), strings = _a2[0], runtypes = _a2[1]; + var self2 = { tag: "template", strings, runtypes }; + var regexp = createRegExpForTemplate(self2); + var test = function(value, visited) { + var matches = value.match(regexp); + if (matches) { + var values = matches.slice(1); + for (var i2 = 0; i2 < runtypes.length; i2++) { + var runtype = runtypes[i2]; + var value_1 = values[i2]; + var validated = reviveValidate(runtype.reflect, visited)(value_1); + if (!validated.success) + return validated; + } + return (0, util_1.SUCCESS)(value); + } else { + return util_1.FAILURE.VALUE_INCORRECT("string", "".concat((0, show_1.default)(self2)), '"'.concat((0, literal_1.literal)(value), '"')); + } + }; + return (0, runtype_1.create)(function(value, visited) { + if (typeof value !== "string") + return util_1.FAILURE.TYPE_INCORRECT(self2, value); + else { + var validated = test(value, visited); + if (!validated.success) { + var result = util_1.FAILURE.VALUE_INCORRECT("string", "".concat((0, show_1.default)(self2)), '"'.concat(value, '"')); + if (result.message !== validated.message) + result.message += " (inner: ".concat(validated.message, ")"); + return result; + } else + return (0, util_1.SUCCESS)(value); + } + }, self2); + } + exports.Template = Template; + } +}); + +// node_modules/runtypes/lib/types/boolean.js +var require_boolean = __commonJS({ + "node_modules/runtypes/lib/types/boolean.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Boolean = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + var self2 = { tag: "boolean" }; + exports.Boolean = (0, runtype_1.create)(function(value) { + return typeof value === "boolean" ? (0, util_1.SUCCESS)(value) : util_1.FAILURE.TYPE_INCORRECT(self2, value); + }, self2); + } +}); + +// node_modules/runtypes/lib/types/number.js +var require_number = __commonJS({ + "node_modules/runtypes/lib/types/number.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Number = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + var self2 = { tag: "number" }; + exports.Number = (0, runtype_1.create)(function(value) { + return typeof value === "number" ? (0, util_1.SUCCESS)(value) : util_1.FAILURE.TYPE_INCORRECT(self2, value); + }, self2); + } +}); + +// node_modules/runtypes/lib/types/bigint.js +var require_bigint = __commonJS({ + "node_modules/runtypes/lib/types/bigint.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.BigInt = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + var self2 = { tag: "bigint" }; + exports.BigInt = (0, runtype_1.create)(function(value) { + return typeof value === "bigint" ? (0, util_1.SUCCESS)(value) : util_1.FAILURE.TYPE_INCORRECT(self2, value); + }, self2); + } +}); + +// node_modules/runtypes/lib/types/string.js +var require_string = __commonJS({ + "node_modules/runtypes/lib/types/string.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.String = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + var self2 = { tag: "string" }; + exports.String = (0, runtype_1.create)(function(value) { + return typeof value === "string" ? (0, util_1.SUCCESS)(value) : util_1.FAILURE.TYPE_INCORRECT(self2, value); + }, self2); + } +}); + +// node_modules/runtypes/lib/types/symbol.js +var require_symbol = __commonJS({ + "node_modules/runtypes/lib/types/symbol.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Symbol = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + var f3 = function(key) { + var self3 = { tag: "symbol", key }; + return (0, runtype_1.create)(function(value) { + if (typeof value !== "symbol") + return util_1.FAILURE.TYPE_INCORRECT(self3, value); + else { + var keyForValue = globalThis.Symbol.keyFor(value); + if (keyForValue !== key) + return util_1.FAILURE.VALUE_INCORRECT("symbol key", quoteIfPresent(key), quoteIfPresent(keyForValue)); + else + return (0, util_1.SUCCESS)(value); + } + }, self3); + }; + var self2 = { tag: "symbol" }; + exports.Symbol = (0, runtype_1.create)(function(value) { + return typeof value === "symbol" ? (0, util_1.SUCCESS)(value) : util_1.FAILURE.TYPE_INCORRECT(self2, value); + }, Object.assign(f3, self2)); + var quoteIfPresent = function(key) { + return key === void 0 ? "undefined" : '"'.concat(key, '"'); + }; + } +}); + +// node_modules/runtypes/lib/types/array.js +var require_array = __commonJS({ + "node_modules/runtypes/lib/types/array.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Array = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + function InternalArr(element, isReadonly) { + var self2 = { tag: "array", isReadonly, element }; + return withExtraModifierFuncs((0, runtype_1.create)(function(xs, visited) { + if (!Array.isArray(xs)) + return util_1.FAILURE.TYPE_INCORRECT(self2, xs); + var keys = (0, util_1.enumerableKeysOf)(xs); + var results = keys.map(function(key) { + return (0, runtype_1.innerValidate)(element, xs[key], visited); + }); + var details = keys.reduce(function(details2, key) { + var result = results[key]; + if (!result.success) + details2[key] = result.details || result.message; + return details2; + }, []); + if ((0, util_1.enumerableKeysOf)(details).length !== 0) + return util_1.FAILURE.CONTENT_INCORRECT(self2, details); + else + return (0, util_1.SUCCESS)(xs); + }, self2)); + } + function Arr(element) { + return InternalArr(element, false); + } + exports.Array = Arr; + function withExtraModifierFuncs(A2) { + A2.asReadonly = asReadonly; + return A2; + function asReadonly() { + return InternalArr(A2.element, true); + } + } + } +}); + +// node_modules/runtypes/lib/types/tuple.js +var require_tuple = __commonJS({ + "node_modules/runtypes/lib/types/tuple.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Tuple = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + function Tuple() { + var components = []; + for (var _i = 0; _i < arguments.length; _i++) { + components[_i] = arguments[_i]; + } + var self2 = { tag: "tuple", components }; + return (0, runtype_1.create)(function(xs, visited) { + if (!Array.isArray(xs)) + return util_1.FAILURE.TYPE_INCORRECT(self2, xs); + if (xs.length !== components.length) + return util_1.FAILURE.CONSTRAINT_FAILED(self2, "Expected length ".concat(components.length, ", but was ").concat(xs.length)); + var keys = (0, util_1.enumerableKeysOf)(xs); + var results = keys.map(function(key) { + return (0, runtype_1.innerValidate)(components[key], xs[key], visited); + }); + var details = keys.reduce(function(details2, key) { + var result = results[key]; + if (!result.success) + details2[key] = result.details || result.message; + return details2; + }, []); + if ((0, util_1.enumerableKeysOf)(details).length !== 0) + return util_1.FAILURE.CONTENT_INCORRECT(self2, details); + else + return (0, util_1.SUCCESS)(xs); + }, self2); + } + exports.Tuple = Tuple; + } +}); + +// node_modules/runtypes/lib/types/record.js +var require_record = __commonJS({ + "node_modules/runtypes/lib/types/record.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o2, n2) { + var m2 = typeof Symbol === "function" && o2[Symbol.iterator]; + if (!m2) + return o2; + var i2 = m2.call(o2), r2, ar = [], e; + try { + while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done) + ar.push(r2.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r2 && !r2.done && (m2 = i2["return"])) + m2.call(i2); + } finally { + if (e) + throw e.error; + } + } + return ar; + }; + var __spreadArray2 = exports && exports.__spreadArray || function(to, from, pack) { + if (pack || arguments.length === 2) + for (var i2 = 0, l2 = from.length, ar; i2 < l2; i2++) { + if (ar || !(i2 in from)) { + if (!ar) + ar = Array.prototype.slice.call(from, 0, i2); + ar[i2] = from[i2]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Partial = exports.Record = exports.InternalRecord = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + function InternalRecord(fields, isPartial, isReadonly) { + var self2 = { tag: "record", isPartial, isReadonly, fields }; + return withExtraModifierFuncs((0, runtype_1.create)(function(x2, visited) { + if (x2 === null || x2 === void 0) { + return util_1.FAILURE.TYPE_INCORRECT(self2, x2); + } + var keysOfFields = (0, util_1.enumerableKeysOf)(fields); + if (keysOfFields.length !== 0 && typeof x2 !== "object") + return util_1.FAILURE.TYPE_INCORRECT(self2, x2); + var keys = __spreadArray2([], __read(new Set(__spreadArray2(__spreadArray2([], __read(keysOfFields), false), __read((0, util_1.enumerableKeysOf)(x2)), false))), false); + var results = keys.reduce(function(results2, key) { + var fieldsHasKey = (0, util_1.hasKey)(key, fields); + var xHasKey = (0, util_1.hasKey)(key, x2); + if (fieldsHasKey) { + var runtype = fields[key]; + var isOptional = isPartial || runtype.reflect.tag === "optional"; + if (xHasKey) { + var value = x2[key]; + if (isOptional && value === void 0) + results2[key] = (0, util_1.SUCCESS)(value); + else + results2[key] = (0, runtype_1.innerValidate)(runtype, value, visited); + } else { + if (!isOptional) + results2[key] = util_1.FAILURE.PROPERTY_MISSING(runtype.reflect); + else + results2[key] = (0, util_1.SUCCESS)(void 0); + } + } else if (xHasKey) { + var value = x2[key]; + results2[key] = (0, util_1.SUCCESS)(value); + } else { + throw new Error("impossible"); + } + return results2; + }, {}); + var details = keys.reduce(function(details2, key) { + var result = results[key]; + if (!result.success) + details2[key] = result.details || result.message; + return details2; + }, {}); + if ((0, util_1.enumerableKeysOf)(details).length !== 0) + return util_1.FAILURE.CONTENT_INCORRECT(self2, details); + else + return (0, util_1.SUCCESS)(x2); + }, self2)); + } + exports.InternalRecord = InternalRecord; + function Record2(fields) { + return InternalRecord(fields, false, false); + } + exports.Record = Record2; + function Partial(fields) { + return InternalRecord(fields, true, false); + } + exports.Partial = Partial; + function withExtraModifierFuncs(A2) { + A2.asPartial = asPartial; + A2.asReadonly = asReadonly; + A2.pick = pick; + A2.omit = omit2; + A2.extend = extend; + return A2; + function asPartial() { + return InternalRecord(A2.fields, true, A2.isReadonly); + } + function asReadonly() { + return InternalRecord(A2.fields, A2.isPartial, true); + } + function pick() { + var keys = []; + for (var _i = 0; _i < arguments.length; _i++) { + keys[_i] = arguments[_i]; + } + var result = {}; + keys.forEach(function(key) { + result[key] = A2.fields[key]; + }); + return InternalRecord(result, A2.isPartial, A2.isReadonly); + } + function omit2() { + var keys = []; + for (var _i = 0; _i < arguments.length; _i++) { + keys[_i] = arguments[_i]; + } + var result = {}; + var existingKeys = (0, util_1.enumerableKeysOf)(A2.fields); + existingKeys.forEach(function(key) { + if (!keys.includes(key)) + result[key] = A2.fields[key]; + }); + return InternalRecord(result, A2.isPartial, A2.isReadonly); + } + function extend(fields) { + return InternalRecord(Object.assign({}, A2.fields, fields), A2.isPartial, A2.isReadonly); + } + } + } +}); + +// node_modules/runtypes/lib/types/constraint.js +var require_constraint = __commonJS({ + "node_modules/runtypes/lib/types/constraint.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Guard = exports.Constraint = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + var unknown_1 = require_unknown(); + function Constraint(underlying, constraint, options) { + var name = options && options.name; + var args = options && options.args; + var self2 = { + tag: "constraint", + underlying, + constraint, + name, + args + }; + return (0, runtype_1.create)(function(value) { + var result = underlying.validate(value); + if (!result.success) + return result; + var message = constraint(result.value); + if (typeof message === "string") + return util_1.FAILURE.CONSTRAINT_FAILED(self2, message); + else if (!message) + return util_1.FAILURE.CONSTRAINT_FAILED(self2); + return (0, util_1.SUCCESS)(result.value); + }, self2); + } + exports.Constraint = Constraint; + var Guard = function(guard, options) { + return unknown_1.Unknown.withGuard(guard, options); + }; + exports.Guard = Guard; + } +}); + +// node_modules/runtypes/lib/types/dictionary.js +var require_dictionary = __commonJS({ + "node_modules/runtypes/lib/types/dictionary.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Dictionary = void 0; + var runtype_1 = require_runtype(); + var string_1 = require_string(); + var constraint_1 = require_constraint(); + var show_1 = require_show(); + var util_1 = require_util(); + var NumberKey = (0, constraint_1.Constraint)(string_1.String, function(s2) { + return !isNaN(+s2); + }, { name: "number" }); + function Dictionary(value, key) { + var keyRuntype = key === void 0 ? string_1.String : key === "string" ? string_1.String : key === "number" ? NumberKey : key; + var keyString = (0, show_1.default)(keyRuntype); + var self2 = { tag: "dictionary", key: keyString, value }; + return (0, runtype_1.create)(function(x2, visited) { + if (x2 === null || x2 === void 0 || typeof x2 !== "object") + return util_1.FAILURE.TYPE_INCORRECT(self2, x2); + if (Object.getPrototypeOf(x2) !== Object.prototype) { + if (!Array.isArray(x2) || keyString === "string") + return util_1.FAILURE.TYPE_INCORRECT(self2, x2); + } + var numberString = /^(?:NaN|-?\d+(?:\.\d+)?)$/; + var keys = (0, util_1.enumerableKeysOf)(x2); + var results = keys.reduce(function(results2, key2) { + var isNumberLikeKey = typeof key2 === "string" && numberString.test(key2); + var keyInterop = isNumberLikeKey ? globalThis.Number(key2) : key2; + if (isNumberLikeKey ? !keyRuntype.guard(keyInterop) && !keyRuntype.guard(key2) : !keyRuntype.guard(keyInterop)) { + results2[key2] = util_1.FAILURE.KEY_INCORRECT(self2, keyRuntype.reflect, keyInterop); + } else + results2[key2] = (0, runtype_1.innerValidate)(value, x2[key2], visited); + return results2; + }, {}); + var details = keys.reduce(function(details2, key2) { + var result = results[key2]; + if (!result.success) + details2[key2] = result.details || result.message; + return details2; + }, {}); + if ((0, util_1.enumerableKeysOf)(details).length !== 0) + return util_1.FAILURE.CONTENT_INCORRECT(self2, details); + else + return (0, util_1.SUCCESS)(x2); + }, self2); + } + exports.Dictionary = Dictionary; + } +}); + +// node_modules/runtypes/lib/types/intersect.js +var require_intersect = __commonJS({ + "node_modules/runtypes/lib/types/intersect.js"(exports) { + "use strict"; + var __values = exports && exports.__values || function(o2) { + var s2 = typeof Symbol === "function" && Symbol.iterator, m2 = s2 && o2[s2], i2 = 0; + if (m2) + return m2.call(o2); + if (o2 && typeof o2.length === "number") + return { + next: function() { + if (o2 && i2 >= o2.length) + o2 = void 0; + return { value: o2 && o2[i2++], done: !o2 }; + } + }; + throw new TypeError(s2 ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Intersect = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + function Intersect() { + var intersectees = []; + for (var _i = 0; _i < arguments.length; _i++) { + intersectees[_i] = arguments[_i]; + } + var self2 = { tag: "intersect", intersectees }; + return (0, runtype_1.create)(function(value, visited) { + var e_1, _a2; + try { + for (var intersectees_1 = __values(intersectees), intersectees_1_1 = intersectees_1.next(); !intersectees_1_1.done; intersectees_1_1 = intersectees_1.next()) { + var targetType = intersectees_1_1.value; + var result = (0, runtype_1.innerValidate)(targetType, value, visited); + if (!result.success) + return result; + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (intersectees_1_1 && !intersectees_1_1.done && (_a2 = intersectees_1.return)) + _a2.call(intersectees_1); + } finally { + if (e_1) + throw e_1.error; + } + } + return (0, util_1.SUCCESS)(value); + }, self2); + } + exports.Intersect = Intersect; + } +}); + +// node_modules/runtypes/lib/types/optional.js +var require_optional = __commonJS({ + "node_modules/runtypes/lib/types/optional.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Optional = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + function Optional(runtype) { + var self2 = { tag: "optional", underlying: runtype }; + return (0, runtype_1.create)(function(value) { + return value === void 0 ? (0, util_1.SUCCESS)(value) : runtype.validate(value); + }, self2); + } + exports.Optional = Optional; + } +}); + +// node_modules/runtypes/lib/types/function.js +var require_function = __commonJS({ + "node_modules/runtypes/lib/types/function.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Function = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + var self2 = { tag: "function" }; + exports.Function = (0, runtype_1.create)(function(value) { + return typeof value === "function" ? (0, util_1.SUCCESS)(value) : util_1.FAILURE.TYPE_INCORRECT(self2, value); + }, self2); + } +}); + +// node_modules/runtypes/lib/types/instanceof.js +var require_instanceof = __commonJS({ + "node_modules/runtypes/lib/types/instanceof.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.InstanceOf = void 0; + var runtype_1 = require_runtype(); + var util_1 = require_util(); + function InstanceOf(ctor) { + var self2 = { tag: "instanceof", ctor }; + return (0, runtype_1.create)(function(value) { + return value instanceof ctor ? (0, util_1.SUCCESS)(value) : util_1.FAILURE.TYPE_INCORRECT(self2, value); + }, self2); + } + exports.InstanceOf = InstanceOf; + } +}); + +// node_modules/runtypes/lib/types/lazy.js +var require_lazy = __commonJS({ + "node_modules/runtypes/lib/types/lazy.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Lazy = void 0; + var runtype_1 = require_runtype(); + function Lazy(delayed) { + var data = { + get tag() { + return getWrapped()["tag"]; + } + }; + var cached; + function getWrapped() { + if (!cached) { + cached = delayed(); + for (var k2 in cached) + if (k2 !== "tag") + data[k2] = cached[k2]; + } + return cached; + } + return (0, runtype_1.create)(function(x2) { + return getWrapped().validate(x2); + }, data); + } + exports.Lazy = Lazy; + } +}); + +// node_modules/runtypes/lib/types/brand.js +var require_brand = __commonJS({ + "node_modules/runtypes/lib/types/brand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Brand = void 0; + var runtype_1 = require_runtype(); + function Brand(brand, entity) { + var self2 = { tag: "brand", brand, entity }; + return (0, runtype_1.create)(function(value) { + return entity.validate(value); + }, self2); + } + exports.Brand = Brand; + } +}); + +// node_modules/runtypes/lib/decorator.js +var require_decorator = __commonJS({ + "node_modules/runtypes/lib/decorator.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.checked = exports.check = void 0; + var errors_1 = require_errors(); + var util_1 = require_util(); + var prototypes = /* @__PURE__ */ new WeakMap(); + function check(target, propertyKey, parameterIndex) { + var prototype = prototypes.get(target) || /* @__PURE__ */ new Map(); + prototypes.set(target, prototype); + var validParameterIndices = prototype.get(propertyKey) || []; + prototype.set(propertyKey, validParameterIndices); + validParameterIndices.push(parameterIndex); + } + exports.check = check; + function getValidParameterIndices(target, propertyKey, runtypeCount) { + var prototype = prototypes.get(target); + var validParameterIndices = prototype && prototype.get(propertyKey); + if (validParameterIndices) { + return validParameterIndices; + } + var indices = []; + for (var i2 = 0; i2 < runtypeCount; i2++) { + indices.push(i2); + } + return indices; + } + function checked() { + var runtypes = []; + for (var _i = 0; _i < arguments.length; _i++) { + runtypes[_i] = arguments[_i]; + } + if (runtypes.length === 0) { + throw new Error("No runtype provided to `@checked`. Please remove the decorator."); + } + return function(target, propertyKey, descriptor) { + var method = descriptor.value; + var methodId = (target.name || target.constructor.name + ".prototype") + (typeof propertyKey === "string" ? '["'.concat(propertyKey, '"]') : "[".concat(String(propertyKey), "]")); + var validParameterIndices = getValidParameterIndices(target, propertyKey, runtypes.length); + if (validParameterIndices.length !== runtypes.length) { + throw new Error("Number of `@checked` runtypes and @check parameters not matched."); + } + if (validParameterIndices.length > method.length) { + throw new Error("Number of `@checked` runtypes exceeds actual parameter length."); + } + descriptor.value = function() { + var args = []; + for (var _i2 = 0; _i2 < arguments.length; _i2++) { + args[_i2] = arguments[_i2]; + } + runtypes.forEach(function(type, typeIndex) { + var parameterIndex = validParameterIndices[typeIndex]; + var result = type.validate(args[parameterIndex]); + if (!result.success) { + var message = "".concat(methodId, ", argument #").concat(parameterIndex, ": ").concat(result.message); + var failure = util_1.FAILURE.ARGUMENT_INCORRECT(message); + throw new errors_1.ValidationError(failure); + } + }); + return method.apply(this, args); + }; + }; + } + exports.checked = checked; + } +}); + +// node_modules/runtypes/lib/index.js +var require_lib = __commonJS({ + "node_modules/runtypes/lib/index.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o2, m2, k2, k22) { + if (k22 === void 0) + k22 = k2; + Object.defineProperty(o2, k22, { enumerable: true, get: function() { + return m2[k2]; + } }); + } : function(o2, m2, k2, k22) { + if (k22 === void 0) + k22 = k2; + o2[k22] = m2[k2]; + }); + var __exportStar = exports && exports.__exportStar || function(m2, exports2) { + for (var p2 in m2) + if (p2 !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p2)) + __createBinding(exports2, m2, p2); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.InstanceOf = exports.Nullish = exports.Null = exports.Undefined = exports.Literal = void 0; + __exportStar(require_reflect(), exports); + __exportStar(require_result(), exports); + __exportStar(require_contract(), exports); + __exportStar(require_asynccontract(), exports); + __exportStar(require_match(), exports); + __exportStar(require_errors(), exports); + __exportStar(require_unknown(), exports); + __exportStar(require_never(), exports); + __exportStar(require_void(), exports); + var literal_1 = require_literal(); + Object.defineProperty(exports, "Literal", { enumerable: true, get: function() { + return literal_1.Literal; + } }); + Object.defineProperty(exports, "Undefined", { enumerable: true, get: function() { + return literal_1.Undefined; + } }); + Object.defineProperty(exports, "Null", { enumerable: true, get: function() { + return literal_1.Null; + } }); + Object.defineProperty(exports, "Nullish", { enumerable: true, get: function() { + return literal_1.Nullish; + } }); + __exportStar(require_template(), exports); + __exportStar(require_boolean(), exports); + __exportStar(require_number(), exports); + __exportStar(require_bigint(), exports); + __exportStar(require_string(), exports); + __exportStar(require_symbol(), exports); + __exportStar(require_array(), exports); + __exportStar(require_tuple(), exports); + __exportStar(require_record(), exports); + __exportStar(require_dictionary(), exports); + __exportStar(require_union(), exports); + __exportStar(require_intersect(), exports); + __exportStar(require_optional(), exports); + __exportStar(require_function(), exports); + var instanceof_1 = require_instanceof(); + Object.defineProperty(exports, "InstanceOf", { enumerable: true, get: function() { + return instanceof_1.InstanceOf; + } }); + __exportStar(require_lazy(), exports); + __exportStar(require_constraint(), exports); + __exportStar(require_brand(), exports); + __exportStar(require_decorator(), exports); + } +}); + +// node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +var require_use_sync_external_store_shim_development = __commonJS({ + "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"(exports) { + "use strict"; + if (true) { + (function() { + "use strict"; + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { + __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); + } + var React58 = require_react(); + var ReactSharedInternals = React58.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + function error(format) { + { + { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + printWarning("error", format, args); + } + } + } + function printWarning(level, format, args) { + { + var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; + var stack = ReactDebugCurrentFrame.getStackAddendum(); + if (stack !== "") { + format += "%s"; + args = args.concat([stack]); + } + var argsWithFormat = args.map(function(item) { + return String(item); + }); + argsWithFormat.unshift("Warning: " + format); + Function.prototype.apply.call(console[level], console, argsWithFormat); + } + } + function is(x2, y2) { + return x2 === y2 && (x2 !== 0 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2; + } + var objectIs = typeof Object.is === "function" ? Object.is : is; + var useState2 = React58.useState, useEffect2 = React58.useEffect, useLayoutEffect2 = React58.useLayoutEffect, useDebugValue2 = React58.useDebugValue; + var didWarnOld18Alpha = false; + var didWarnUncachedGetSnapshot = false; + function useSyncExternalStore3(subscribe2, getSnapshot, getServerSnapshot) { + { + if (!didWarnOld18Alpha) { + if (React58.startTransition !== void 0) { + didWarnOld18Alpha = true; + error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."); + } + } + } + var value = getSnapshot(); + { + if (!didWarnUncachedGetSnapshot) { + var cachedValue = getSnapshot(); + if (!objectIs(value, cachedValue)) { + error("The result of getSnapshot should be cached to avoid an infinite loop"); + didWarnUncachedGetSnapshot = true; + } + } + } + var _useState = useState2({ + inst: { + value, + getSnapshot + } + }), inst = _useState[0].inst, forceUpdate = _useState[1]; + useLayoutEffect2(function() { + inst.value = value; + inst.getSnapshot = getSnapshot; + if (checkIfSnapshotChanged(inst)) { + forceUpdate({ + inst + }); + } + }, [subscribe2, value, getSnapshot]); + useEffect2(function() { + if (checkIfSnapshotChanged(inst)) { + forceUpdate({ + inst + }); + } + var handleStoreChange = function() { + if (checkIfSnapshotChanged(inst)) { + forceUpdate({ + inst + }); + } + }; + return subscribe2(handleStoreChange); + }, [subscribe2]); + useDebugValue2(value); + return value; + } + function checkIfSnapshotChanged(inst) { + var latestGetSnapshot = inst.getSnapshot; + var prevValue = inst.value; + try { + var nextValue = latestGetSnapshot(); + return !objectIs(prevValue, nextValue); + } catch (error2) { + return true; + } + } + function useSyncExternalStore$1(subscribe2, getSnapshot, getServerSnapshot) { + return getSnapshot(); + } + var canUseDOM2 = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"); + var isServerEnvironment = !canUseDOM2; + var shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore3; + var useSyncExternalStore$2 = React58.useSyncExternalStore !== void 0 ? React58.useSyncExternalStore : shim; + exports.useSyncExternalStore = useSyncExternalStore$2; + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") { + __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); + } + })(); + } + } +}); + +// node_modules/use-sync-external-store/shim/index.js +var require_shim = __commonJS({ + "node_modules/use-sync-external-store/shim/index.js"(exports, module2) { + "use strict"; + if (false) { + module2.exports = null; + } else { + module2.exports = require_use_sync_external_store_shim_development(); + } + } +}); + +// node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +var require_with_selector_development = __commonJS({ + "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js"(exports) { + "use strict"; + if (true) { + (function() { + "use strict"; + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { + __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); + } + var React58 = require_react(); + var shim = require_shim(); + function is(x2, y2) { + return x2 === y2 && (x2 !== 0 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2; + } + var objectIs = typeof Object.is === "function" ? Object.is : is; + var useSyncExternalStore3 = shim.useSyncExternalStore; + var useRef4 = React58.useRef, useEffect2 = React58.useEffect, useMemo3 = React58.useMemo, useDebugValue2 = React58.useDebugValue; + function useSyncExternalStoreWithSelector3(subscribe2, getSnapshot, getServerSnapshot, selector, isEqual) { + var instRef = useRef4(null); + var inst; + if (instRef.current === null) { + inst = { + hasValue: false, + value: null + }; + instRef.current = inst; + } else { + inst = instRef.current; + } + var _useMemo = useMemo3(function() { + var hasMemo = false; + var memoizedSnapshot; + var memoizedSelection; + var memoizedSelector = function(nextSnapshot) { + if (!hasMemo) { + hasMemo = true; + memoizedSnapshot = nextSnapshot; + var _nextSelection = selector(nextSnapshot); + if (isEqual !== void 0) { + if (inst.hasValue) { + var currentSelection = inst.value; + if (isEqual(currentSelection, _nextSelection)) { + memoizedSelection = currentSelection; + return currentSelection; + } + } + } + memoizedSelection = _nextSelection; + return _nextSelection; + } + var prevSnapshot = memoizedSnapshot; + var prevSelection = memoizedSelection; + if (objectIs(prevSnapshot, nextSnapshot)) { + return prevSelection; + } + var nextSelection = selector(nextSnapshot); + if (isEqual !== void 0 && isEqual(prevSelection, nextSelection)) { + return prevSelection; + } + memoizedSnapshot = nextSnapshot; + memoizedSelection = nextSelection; + return nextSelection; + }; + var maybeGetServerSnapshot = getServerSnapshot === void 0 ? null : getServerSnapshot; + var getSnapshotWithSelector = function() { + return memoizedSelector(getSnapshot()); + }; + var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? void 0 : function() { + return memoizedSelector(maybeGetServerSnapshot()); + }; + return [getSnapshotWithSelector, getServerSnapshotWithSelector]; + }, [getSnapshot, getServerSnapshot, selector, isEqual]), getSelection = _useMemo[0], getServerSelection = _useMemo[1]; + var value = useSyncExternalStore3(subscribe2, getSelection, getServerSelection); + useEffect2(function() { + inst.hasValue = true; + inst.value = value; + }, [value]); + useDebugValue2(value); + return value; + } + exports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector3; + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") { + __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); + } + })(); + } + } +}); + +// node_modules/use-sync-external-store/shim/with-selector.js +var require_with_selector = __commonJS({ + "node_modules/use-sync-external-store/shim/with-selector.js"(exports, module2) { + "use strict"; + if (false) { + module2.exports = null; + } else { + module2.exports = require_with_selector_development(); + } + } +}); + +// node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js +var require_react_is_development = __commonJS({ + "node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js"(exports) { + "use strict"; + if (true) { + (function() { + "use strict"; + var hasSymbol = typeof Symbol === "function" && Symbol.for; + var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for("react.element") : 60103; + var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for("react.portal") : 60106; + var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for("react.fragment") : 60107; + var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for("react.strict_mode") : 60108; + var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for("react.profiler") : 60114; + var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for("react.provider") : 60109; + var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for("react.context") : 60110; + var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for("react.async_mode") : 60111; + var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for("react.concurrent_mode") : 60111; + var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for("react.forward_ref") : 60112; + var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for("react.suspense") : 60113; + var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for("react.suspense_list") : 60120; + var REACT_MEMO_TYPE = hasSymbol ? Symbol.for("react.memo") : 60115; + var REACT_LAZY_TYPE = hasSymbol ? Symbol.for("react.lazy") : 60116; + var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for("react.block") : 60121; + var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for("react.fundamental") : 60117; + var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for("react.responder") : 60118; + var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for("react.scope") : 60119; + function isValidElementType2(type) { + return typeof type === "string" || typeof type === "function" || type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === "object" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); + } + function typeOf(object) { + if (typeof object === "object" && object !== null) { + var $$typeof = object.$$typeof; + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + switch (type) { + case REACT_ASYNC_MODE_TYPE: + case REACT_CONCURRENT_MODE_TYPE: + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + return type; + default: + var $$typeofType = type && type.$$typeof; + switch ($$typeofType) { + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + default: + return $$typeof; + } + } + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + return void 0; + } + var AsyncMode = REACT_ASYNC_MODE_TYPE; + var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; + var ContextConsumer = REACT_CONTEXT_TYPE; + var ContextProvider = REACT_PROVIDER_TYPE; + var Element2 = REACT_ELEMENT_TYPE; + var ForwardRef = REACT_FORWARD_REF_TYPE; + var Fragment22 = REACT_FRAGMENT_TYPE; + var Lazy = REACT_LAZY_TYPE; + var Memo = REACT_MEMO_TYPE; + var Portal = REACT_PORTAL_TYPE; + var Profiler = REACT_PROFILER_TYPE; + var StrictMode = REACT_STRICT_MODE_TYPE; + var Suspense = REACT_SUSPENSE_TYPE; + var hasWarnedAboutDeprecatedIsAsyncMode = false; + function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; + console["warn"]("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API."); + } + } + return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; + } + function isConcurrentMode(object) { + return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; + } + function isContextConsumer2(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; + } + function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; + } + function isElement(object) { + return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + } + function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; + } + function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; + } + function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; + } + function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; + } + function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; + } + function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; + } + function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; + } + function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; + } + exports.AsyncMode = AsyncMode; + exports.ConcurrentMode = ConcurrentMode; + exports.ContextConsumer = ContextConsumer; + exports.ContextProvider = ContextProvider; + exports.Element = Element2; + exports.ForwardRef = ForwardRef; + exports.Fragment = Fragment22; + exports.Lazy = Lazy; + exports.Memo = Memo; + exports.Portal = Portal; + exports.Profiler = Profiler; + exports.StrictMode = StrictMode; + exports.Suspense = Suspense; + exports.isAsyncMode = isAsyncMode; + exports.isConcurrentMode = isConcurrentMode; + exports.isContextConsumer = isContextConsumer2; + exports.isContextProvider = isContextProvider; + exports.isElement = isElement; + exports.isForwardRef = isForwardRef; + exports.isFragment = isFragment; + exports.isLazy = isLazy; + exports.isMemo = isMemo; + exports.isPortal = isPortal; + exports.isProfiler = isProfiler; + exports.isStrictMode = isStrictMode; + exports.isSuspense = isSuspense; + exports.isValidElementType = isValidElementType2; + exports.typeOf = typeOf; + })(); + } + } +}); + +// node_modules/hoist-non-react-statics/node_modules/react-is/index.js +var require_react_is = __commonJS({ + "node_modules/hoist-non-react-statics/node_modules/react-is/index.js"(exports, module2) { + "use strict"; + if (false) { + module2.exports = null; + } else { + module2.exports = require_react_is_development(); + } + } +}); + +// node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js +var require_hoist_non_react_statics_cjs = __commonJS({ + "node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"(exports, module2) { + "use strict"; + var reactIs = require_react_is(); + var REACT_STATICS = { + childContextTypes: true, + contextType: true, + contextTypes: true, + defaultProps: true, + displayName: true, + getDefaultProps: true, + getDerivedStateFromError: true, + getDerivedStateFromProps: true, + mixins: true, + propTypes: true, + type: true + }; + var KNOWN_STATICS = { + name: true, + length: true, + prototype: true, + caller: true, + callee: true, + arguments: true, + arity: true + }; + var FORWARD_REF_STATICS = { + "$$typeof": true, + render: true, + defaultProps: true, + displayName: true, + propTypes: true + }; + var MEMO_STATICS = { + "$$typeof": true, + compare: true, + defaultProps: true, + displayName: true, + propTypes: true, + type: true + }; + var TYPE_STATICS = {}; + TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS; + TYPE_STATICS[reactIs.Memo] = MEMO_STATICS; + function getStatics(component) { + if (reactIs.isMemo(component)) { + return MEMO_STATICS; + } + return TYPE_STATICS[component["$$typeof"]] || REACT_STATICS; + } + var defineProperty = Object.defineProperty; + var getOwnPropertyNames = Object.getOwnPropertyNames; + var getOwnPropertySymbols = Object.getOwnPropertySymbols; + var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + var getPrototypeOf = Object.getPrototypeOf; + var objectPrototype = Object.prototype; + function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) { + if (typeof sourceComponent !== "string") { + if (objectPrototype) { + var inheritedComponent = getPrototypeOf(sourceComponent); + if (inheritedComponent && inheritedComponent !== objectPrototype) { + hoistNonReactStatics(targetComponent, inheritedComponent, blacklist); + } + } + var keys = getOwnPropertyNames(sourceComponent); + if (getOwnPropertySymbols) { + keys = keys.concat(getOwnPropertySymbols(sourceComponent)); + } + var targetStatics = getStatics(targetComponent); + var sourceStatics = getStatics(sourceComponent); + for (var i2 = 0; i2 < keys.length; ++i2) { + var key = keys[i2]; + if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) { + var descriptor = getOwnPropertyDescriptor(sourceComponent, key); + try { + defineProperty(targetComponent, key, descriptor); + } catch (e) { + } + } + } + } + return targetComponent; + } + module2.exports = hoistNonReactStatics; + } +}); + +// node_modules/react-redux/node_modules/react-is/cjs/react-is.development.js +var require_react_is_development2 = __commonJS({ + "node_modules/react-redux/node_modules/react-is/cjs/react-is.development.js"(exports) { + "use strict"; + if (true) { + (function() { + "use strict"; + var REACT_ELEMENT_TYPE = Symbol.for("react.element"); + var REACT_PORTAL_TYPE = Symbol.for("react.portal"); + var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"); + var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"); + var REACT_PROFILER_TYPE = Symbol.for("react.profiler"); + var REACT_PROVIDER_TYPE = Symbol.for("react.provider"); + var REACT_CONTEXT_TYPE = Symbol.for("react.context"); + var REACT_SERVER_CONTEXT_TYPE = Symbol.for("react.server_context"); + var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"); + var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"); + var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"); + var REACT_MEMO_TYPE = Symbol.for("react.memo"); + var REACT_LAZY_TYPE = Symbol.for("react.lazy"); + var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen"); + var enableScopeAPI = false; + var enableCacheElement = false; + var enableTransitionTracing = false; + var enableLegacyHidden = false; + var enableDebugTracing = false; + var REACT_MODULE_REFERENCE; + { + REACT_MODULE_REFERENCE = Symbol.for("react.module.reference"); + } + function isValidElementType2(type) { + if (typeof type === "string" || typeof type === "function") { + return true; + } + if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) { + return true; + } + if (typeof type === "object" && type !== null) { + if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) { + return true; + } + } + return false; + } + function typeOf(object) { + if (typeof object === "object" && object !== null) { + var $$typeof = object.$$typeof; + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + switch (type) { + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + case REACT_SUSPENSE_LIST_TYPE: + return type; + default: + var $$typeofType = type && type.$$typeof; + switch ($$typeofType) { + case REACT_SERVER_CONTEXT_TYPE: + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + default: + return $$typeof; + } + } + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + return void 0; + } + var ContextConsumer = REACT_CONTEXT_TYPE; + var ContextProvider = REACT_PROVIDER_TYPE; + var Element2 = REACT_ELEMENT_TYPE; + var ForwardRef = REACT_FORWARD_REF_TYPE; + var Fragment22 = REACT_FRAGMENT_TYPE; + var Lazy = REACT_LAZY_TYPE; + var Memo = REACT_MEMO_TYPE; + var Portal = REACT_PORTAL_TYPE; + var Profiler = REACT_PROFILER_TYPE; + var StrictMode = REACT_STRICT_MODE_TYPE; + var Suspense = REACT_SUSPENSE_TYPE; + var SuspenseList = REACT_SUSPENSE_LIST_TYPE; + var hasWarnedAboutDeprecatedIsAsyncMode = false; + var hasWarnedAboutDeprecatedIsConcurrentMode = false; + function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; + console["warn"]("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 18+."); + } + } + return false; + } + function isConcurrentMode(object) { + { + if (!hasWarnedAboutDeprecatedIsConcurrentMode) { + hasWarnedAboutDeprecatedIsConcurrentMode = true; + console["warn"]("The ReactIs.isConcurrentMode() alias has been deprecated, and will be removed in React 18+."); + } + } + return false; + } + function isContextConsumer2(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; + } + function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; + } + function isElement(object) { + return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + } + function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; + } + function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; + } + function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; + } + function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; + } + function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; + } + function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; + } + function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; + } + function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; + } + function isSuspenseList(object) { + return typeOf(object) === REACT_SUSPENSE_LIST_TYPE; + } + exports.ContextConsumer = ContextConsumer; + exports.ContextProvider = ContextProvider; + exports.Element = Element2; + exports.ForwardRef = ForwardRef; + exports.Fragment = Fragment22; + exports.Lazy = Lazy; + exports.Memo = Memo; + exports.Portal = Portal; + exports.Profiler = Profiler; + exports.StrictMode = StrictMode; + exports.Suspense = Suspense; + exports.SuspenseList = SuspenseList; + exports.isAsyncMode = isAsyncMode; + exports.isConcurrentMode = isConcurrentMode; + exports.isContextConsumer = isContextConsumer2; + exports.isContextProvider = isContextProvider; + exports.isElement = isElement; + exports.isForwardRef = isForwardRef; + exports.isFragment = isFragment; + exports.isLazy = isLazy; + exports.isMemo = isMemo; + exports.isPortal = isPortal; + exports.isProfiler = isProfiler; + exports.isStrictMode = isStrictMode; + exports.isSuspense = isSuspense; + exports.isSuspenseList = isSuspenseList; + exports.isValidElementType = isValidElementType2; + exports.typeOf = typeOf; + })(); + } + } +}); + +// node_modules/react-redux/node_modules/react-is/index.js +var require_react_is2 = __commonJS({ + "node_modules/react-redux/node_modules/react-is/index.js"(exports, module2) { + "use strict"; + if (false) { + module2.exports = null; + } else { + module2.exports = require_react_is_development2(); + } + } +}); + +// node_modules/react/cjs/react-jsx-runtime.development.js +var require_react_jsx_runtime_development = __commonJS({ + "node_modules/react/cjs/react-jsx-runtime.development.js"(exports) { + "use strict"; + if (true) { + (function() { + "use strict"; + var React58 = require_react(); + var REACT_ELEMENT_TYPE = Symbol.for("react.element"); + var REACT_PORTAL_TYPE = Symbol.for("react.portal"); + var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"); + var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"); + var REACT_PROFILER_TYPE = Symbol.for("react.profiler"); + var REACT_PROVIDER_TYPE = Symbol.for("react.provider"); + var REACT_CONTEXT_TYPE = Symbol.for("react.context"); + var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"); + var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"); + var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"); + var REACT_MEMO_TYPE = Symbol.for("react.memo"); + var REACT_LAZY_TYPE = Symbol.for("react.lazy"); + var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen"); + var MAYBE_ITERATOR_SYMBOL = Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = "@@iterator"; + function getIteratorFn(maybeIterable) { + if (maybeIterable === null || typeof maybeIterable !== "object") { + return null; + } + var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; + if (typeof maybeIterator === "function") { + return maybeIterator; + } + return null; + } + var ReactSharedInternals = React58.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + function error(format) { + { + { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + printWarning("error", format, args); + } + } + } + function printWarning(level, format, args) { + { + var ReactDebugCurrentFrame2 = ReactSharedInternals.ReactDebugCurrentFrame; + var stack = ReactDebugCurrentFrame2.getStackAddendum(); + if (stack !== "") { + format += "%s"; + args = args.concat([stack]); + } + var argsWithFormat = args.map(function(item) { + return String(item); + }); + argsWithFormat.unshift("Warning: " + format); + Function.prototype.apply.call(console[level], console, argsWithFormat); + } + } + var enableScopeAPI = false; + var enableCacheElement = false; + var enableTransitionTracing = false; + var enableLegacyHidden = false; + var enableDebugTracing = false; + var REACT_MODULE_REFERENCE; + { + REACT_MODULE_REFERENCE = Symbol.for("react.module.reference"); + } + function isValidElementType2(type) { + if (typeof type === "string" || typeof type === "function") { + return true; + } + if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) { + return true; + } + if (typeof type === "object" && type !== null) { + if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) { + return true; + } + } + return false; + } + function getWrappedName(outerType, innerType, wrapperName) { + var displayName = outerType.displayName; + if (displayName) { + return displayName; + } + var functionName = innerType.displayName || innerType.name || ""; + return functionName !== "" ? wrapperName + "(" + functionName + ")" : wrapperName; + } + function getContextName(type) { + return type.displayName || "Context"; + } + function getComponentNameFromType(type) { + if (type == null) { + return null; + } + { + if (typeof type.tag === "number") { + error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."); + } + } + if (typeof type === "function") { + return type.displayName || type.name || null; + } + if (typeof type === "string") { + return type; + } + switch (type) { + case REACT_FRAGMENT_TYPE: + return "Fragment"; + case REACT_PORTAL_TYPE: + return "Portal"; + case REACT_PROFILER_TYPE: + return "Profiler"; + case REACT_STRICT_MODE_TYPE: + return "StrictMode"; + case REACT_SUSPENSE_TYPE: + return "Suspense"; + case REACT_SUSPENSE_LIST_TYPE: + return "SuspenseList"; + } + if (typeof type === "object") { + switch (type.$$typeof) { + case REACT_CONTEXT_TYPE: + var context = type; + return getContextName(context) + ".Consumer"; + case REACT_PROVIDER_TYPE: + var provider = type; + return getContextName(provider._context) + ".Provider"; + case REACT_FORWARD_REF_TYPE: + return getWrappedName(type, type.render, "ForwardRef"); + case REACT_MEMO_TYPE: + var outerName = type.displayName || null; + if (outerName !== null) { + return outerName; + } + return getComponentNameFromType(type.type) || "Memo"; + case REACT_LAZY_TYPE: { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init2 = lazyComponent._init; + try { + return getComponentNameFromType(init2(payload)); + } catch (x2) { + return null; + } + } + } + } + return null; + } + var assign = Object.assign; + var disabledDepth = 0; + var prevLog; + var prevInfo; + var prevWarn; + var prevError; + var prevGroup; + var prevGroupCollapsed; + var prevGroupEnd; + function disabledLog() { + } + disabledLog.__reactDisabledLog = true; + function disableLogs() { + { + if (disabledDepth === 0) { + prevLog = console.log; + prevInfo = console.info; + prevWarn = console.warn; + prevError = console.error; + prevGroup = console.group; + prevGroupCollapsed = console.groupCollapsed; + prevGroupEnd = console.groupEnd; + var props = { + configurable: true, + enumerable: true, + value: disabledLog, + writable: true + }; + Object.defineProperties(console, { + info: props, + log: props, + warn: props, + error: props, + group: props, + groupCollapsed: props, + groupEnd: props + }); + } + disabledDepth++; + } + } + function reenableLogs() { + { + disabledDepth--; + if (disabledDepth === 0) { + var props = { + configurable: true, + enumerable: true, + writable: true + }; + Object.defineProperties(console, { + log: assign({}, props, { + value: prevLog + }), + info: assign({}, props, { + value: prevInfo + }), + warn: assign({}, props, { + value: prevWarn + }), + error: assign({}, props, { + value: prevError + }), + group: assign({}, props, { + value: prevGroup + }), + groupCollapsed: assign({}, props, { + value: prevGroupCollapsed + }), + groupEnd: assign({}, props, { + value: prevGroupEnd + }) + }); + } + if (disabledDepth < 0) { + error("disabledDepth fell below zero. This is a bug in React. Please file an issue."); + } + } + } + var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher; + var prefix2; + function describeBuiltInComponentFrame(name, source, ownerFn) { + { + if (prefix2 === void 0) { + try { + throw Error(); + } catch (x2) { + var match = x2.stack.trim().match(/\n( *(at )?)/); + prefix2 = match && match[1] || ""; + } + } + return "\n" + prefix2 + name; + } + } + var reentry = false; + var componentFrameCache; + { + var PossiblyWeakMap = typeof WeakMap === "function" ? WeakMap : Map; + componentFrameCache = new PossiblyWeakMap(); + } + function describeNativeComponentFrame(fn2, construct) { + if (!fn2 || reentry) { + return ""; + } + { + var frame = componentFrameCache.get(fn2); + if (frame !== void 0) { + return frame; + } + } + var control; + reentry = true; + var previousPrepareStackTrace = Error.prepareStackTrace; + Error.prepareStackTrace = void 0; + var previousDispatcher; + { + previousDispatcher = ReactCurrentDispatcher.current; + ReactCurrentDispatcher.current = null; + disableLogs(); + } + try { + if (construct) { + var Fake = function() { + throw Error(); + }; + Object.defineProperty(Fake.prototype, "props", { + set: function() { + throw Error(); + } + }); + if (typeof Reflect === "object" && Reflect.construct) { + try { + Reflect.construct(Fake, []); + } catch (x2) { + control = x2; + } + Reflect.construct(fn2, [], Fake); + } else { + try { + Fake.call(); + } catch (x2) { + control = x2; + } + fn2.call(Fake.prototype); + } + } else { + try { + throw Error(); + } catch (x2) { + control = x2; + } + fn2(); + } + } catch (sample) { + if (sample && control && typeof sample.stack === "string") { + var sampleLines = sample.stack.split("\n"); + var controlLines = control.stack.split("\n"); + var s2 = sampleLines.length - 1; + var c2 = controlLines.length - 1; + while (s2 >= 1 && c2 >= 0 && sampleLines[s2] !== controlLines[c2]) { + c2--; + } + for (; s2 >= 1 && c2 >= 0; s2--, c2--) { + if (sampleLines[s2] !== controlLines[c2]) { + if (s2 !== 1 || c2 !== 1) { + do { + s2--; + c2--; + if (c2 < 0 || sampleLines[s2] !== controlLines[c2]) { + var _frame = "\n" + sampleLines[s2].replace(" at new ", " at "); + if (fn2.displayName && _frame.includes("")) { + _frame = _frame.replace("", fn2.displayName); + } + { + if (typeof fn2 === "function") { + componentFrameCache.set(fn2, _frame); + } + } + return _frame; + } + } while (s2 >= 1 && c2 >= 0); + } + break; + } + } + } + } finally { + reentry = false; + { + ReactCurrentDispatcher.current = previousDispatcher; + reenableLogs(); + } + Error.prepareStackTrace = previousPrepareStackTrace; + } + var name = fn2 ? fn2.displayName || fn2.name : ""; + var syntheticFrame = name ? describeBuiltInComponentFrame(name) : ""; + { + if (typeof fn2 === "function") { + componentFrameCache.set(fn2, syntheticFrame); + } + } + return syntheticFrame; + } + function describeFunctionComponentFrame(fn2, source, ownerFn) { + { + return describeNativeComponentFrame(fn2, false); + } + } + function shouldConstruct(Component2) { + var prototype = Component2.prototype; + return !!(prototype && prototype.isReactComponent); + } + function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) { + if (type == null) { + return ""; + } + if (typeof type === "function") { + { + return describeNativeComponentFrame(type, shouldConstruct(type)); + } + } + if (typeof type === "string") { + return describeBuiltInComponentFrame(type); + } + switch (type) { + case REACT_SUSPENSE_TYPE: + return describeBuiltInComponentFrame("Suspense"); + case REACT_SUSPENSE_LIST_TYPE: + return describeBuiltInComponentFrame("SuspenseList"); + } + if (typeof type === "object") { + switch (type.$$typeof) { + case REACT_FORWARD_REF_TYPE: + return describeFunctionComponentFrame(type.render); + case REACT_MEMO_TYPE: + return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn); + case REACT_LAZY_TYPE: { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init2 = lazyComponent._init; + try { + return describeUnknownElementTypeFrameInDEV(init2(payload), source, ownerFn); + } catch (x2) { + } + } + } + } + return ""; + } + var hasOwnProperty = Object.prototype.hasOwnProperty; + var loggedTypeFailures = {}; + var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; + function setCurrentlyValidatingElement(element) { + { + if (element) { + var owner = element._owner; + var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); + ReactDebugCurrentFrame.setExtraStackFrame(stack); + } else { + ReactDebugCurrentFrame.setExtraStackFrame(null); + } + } + } + function checkPropTypes(typeSpecs, values, location, componentName, element) { + { + var has = Function.call.bind(hasOwnProperty); + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error$1 = void 0; + try { + if (typeof typeSpecs[typeSpecName] !== "function") { + var err = Error((componentName || "React class") + ": " + location + " type `" + typeSpecName + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof typeSpecs[typeSpecName] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`."); + err.name = "Invariant Violation"; + throw err; + } + error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"); + } catch (ex) { + error$1 = ex; + } + if (error$1 && !(error$1 instanceof Error)) { + setCurrentlyValidatingElement(element); + error("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", componentName || "React class", location, typeSpecName, typeof error$1); + setCurrentlyValidatingElement(null); + } + if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) { + loggedTypeFailures[error$1.message] = true; + setCurrentlyValidatingElement(element); + error("Failed %s type: %s", location, error$1.message); + setCurrentlyValidatingElement(null); + } + } + } + } + } + var isArrayImpl = Array.isArray; + function isArray(a2) { + return isArrayImpl(a2); + } + function typeName(value) { + { + var hasToStringTag = typeof Symbol === "function" && Symbol.toStringTag; + var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object"; + return type; + } + } + function willCoercionThrow(value) { + { + try { + testStringCoercion(value); + return false; + } catch (e) { + return true; + } + } + } + function testStringCoercion(value) { + return "" + value; + } + function checkKeyStringCoercion(value) { + { + if (willCoercionThrow(value)) { + error("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", typeName(value)); + return testStringCoercion(value); + } + } + } + var ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner; + var RESERVED_PROPS = { + key: true, + ref: true, + __self: true, + __source: true + }; + var specialPropKeyWarningShown; + var specialPropRefWarningShown; + var didWarnAboutStringRefs; + { + didWarnAboutStringRefs = {}; + } + function hasValidRef(config) { + { + if (hasOwnProperty.call(config, "ref")) { + var getter = Object.getOwnPropertyDescriptor(config, "ref").get; + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.ref !== void 0; + } + function hasValidKey(config) { + { + if (hasOwnProperty.call(config, "key")) { + var getter = Object.getOwnPropertyDescriptor(config, "key").get; + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.key !== void 0; + } + function warnIfStringRefCannotBeAutoConverted(config, self2) { + { + if (typeof config.ref === "string" && ReactCurrentOwner.current && self2 && ReactCurrentOwner.current.stateNode !== self2) { + var componentName = getComponentNameFromType(ReactCurrentOwner.current.type); + if (!didWarnAboutStringRefs[componentName]) { + error('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref); + didWarnAboutStringRefs[componentName] = true; + } + } + } + } + function defineKeyPropWarningGetter(props, displayName) { + { + var warnAboutAccessingKey = function() { + if (!specialPropKeyWarningShown) { + specialPropKeyWarningShown = true; + error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", displayName); + } + }; + warnAboutAccessingKey.isReactWarning = true; + Object.defineProperty(props, "key", { + get: warnAboutAccessingKey, + configurable: true + }); + } + } + function defineRefPropWarningGetter(props, displayName) { + { + var warnAboutAccessingRef = function() { + if (!specialPropRefWarningShown) { + specialPropRefWarningShown = true; + error("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", displayName); + } + }; + warnAboutAccessingRef.isReactWarning = true; + Object.defineProperty(props, "ref", { + get: warnAboutAccessingRef, + configurable: true + }); + } + } + var ReactElement = function(type, key, ref, self2, source, owner, props) { + var element = { + $$typeof: REACT_ELEMENT_TYPE, + type, + key, + ref, + props, + _owner: owner + }; + { + element._store = {}; + Object.defineProperty(element._store, "validated", { + configurable: false, + enumerable: false, + writable: true, + value: false + }); + Object.defineProperty(element, "_self", { + configurable: false, + enumerable: false, + writable: false, + value: self2 + }); + Object.defineProperty(element, "_source", { + configurable: false, + enumerable: false, + writable: false, + value: source + }); + if (Object.freeze) { + Object.freeze(element.props); + Object.freeze(element); + } + } + return element; + }; + function jsxDEV(type, config, maybeKey, source, self2) { + { + var propName; + var props = {}; + var key = null; + var ref = null; + if (maybeKey !== void 0) { + { + checkKeyStringCoercion(maybeKey); + } + key = "" + maybeKey; + } + if (hasValidKey(config)) { + { + checkKeyStringCoercion(config.key); + } + key = "" + config.key; + } + if (hasValidRef(config)) { + ref = config.ref; + warnIfStringRefCannotBeAutoConverted(config, self2); + } + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + props[propName] = config[propName]; + } + } + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; + for (propName in defaultProps) { + if (props[propName] === void 0) { + props[propName] = defaultProps[propName]; + } + } + } + if (key || ref) { + var displayName = typeof type === "function" ? type.displayName || type.name || "Unknown" : type; + if (key) { + defineKeyPropWarningGetter(props, displayName); + } + if (ref) { + defineRefPropWarningGetter(props, displayName); + } + } + return ReactElement(type, key, ref, self2, source, ReactCurrentOwner.current, props); + } + } + var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner; + var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame; + function setCurrentlyValidatingElement$1(element) { + { + if (element) { + var owner = element._owner; + var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); + ReactDebugCurrentFrame$1.setExtraStackFrame(stack); + } else { + ReactDebugCurrentFrame$1.setExtraStackFrame(null); + } + } + } + var propTypesMisspellWarningShown; + { + propTypesMisspellWarningShown = false; + } + function isValidElement(object) { + { + return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + } + } + function getDeclarationErrorAddendum() { + { + if (ReactCurrentOwner$1.current) { + var name = getComponentNameFromType(ReactCurrentOwner$1.current.type); + if (name) { + return "\n\nCheck the render method of `" + name + "`."; + } + } + return ""; + } + } + function getSourceInfoErrorAddendum(source) { + { + if (source !== void 0) { + var fileName = source.fileName.replace(/^.*[\\\/]/, ""); + var lineNumber = source.lineNumber; + return "\n\nCheck your code at " + fileName + ":" + lineNumber + "."; + } + return ""; + } + } + var ownerHasKeyUseWarning = {}; + function getCurrentComponentErrorInfo(parentType) { + { + var info = getDeclarationErrorAddendum(); + if (!info) { + var parentName = typeof parentType === "string" ? parentType : parentType.displayName || parentType.name; + if (parentName) { + info = "\n\nCheck the top-level render call using <" + parentName + ">."; + } + } + return info; + } + } + function validateExplicitKey(element, parentType) { + { + if (!element._store || element._store.validated || element.key != null) { + return; + } + element._store.validated = true; + var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); + if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { + return; + } + ownerHasKeyUseWarning[currentComponentErrorInfo] = true; + var childOwner = ""; + if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) { + childOwner = " It was passed a child from " + getComponentNameFromType(element._owner.type) + "."; + } + setCurrentlyValidatingElement$1(element); + error('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner); + setCurrentlyValidatingElement$1(null); + } + } + function validateChildKeys(node, parentType) { + { + if (typeof node !== "object") { + return; + } + if (isArray(node)) { + for (var i2 = 0; i2 < node.length; i2++) { + var child = node[i2]; + if (isValidElement(child)) { + validateExplicitKey(child, parentType); + } + } + } else if (isValidElement(node)) { + if (node._store) { + node._store.validated = true; + } + } else if (node) { + var iteratorFn = getIteratorFn(node); + if (typeof iteratorFn === "function") { + if (iteratorFn !== node.entries) { + var iterator = iteratorFn.call(node); + var step; + while (!(step = iterator.next()).done) { + if (isValidElement(step.value)) { + validateExplicitKey(step.value, parentType); + } + } + } + } + } + } + } + function validatePropTypes(element) { + { + var type = element.type; + if (type === null || type === void 0 || typeof type === "string") { + return; + } + var propTypes; + if (typeof type === "function") { + propTypes = type.propTypes; + } else if (typeof type === "object" && (type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MEMO_TYPE)) { + propTypes = type.propTypes; + } else { + return; + } + if (propTypes) { + var name = getComponentNameFromType(type); + checkPropTypes(propTypes, element.props, "prop", name, element); + } else if (type.PropTypes !== void 0 && !propTypesMisspellWarningShown) { + propTypesMisspellWarningShown = true; + var _name = getComponentNameFromType(type); + error("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", _name || "Unknown"); + } + if (typeof type.getDefaultProps === "function" && !type.getDefaultProps.isReactClassApproved) { + error("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead."); + } + } + } + function validateFragmentProps(fragment) { + { + var keys = Object.keys(fragment.props); + for (var i2 = 0; i2 < keys.length; i2++) { + var key = keys[i2]; + if (key !== "children" && key !== "key") { + setCurrentlyValidatingElement$1(fragment); + error("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", key); + setCurrentlyValidatingElement$1(null); + break; + } + } + if (fragment.ref !== null) { + setCurrentlyValidatingElement$1(fragment); + error("Invalid attribute `ref` supplied to `React.Fragment`."); + setCurrentlyValidatingElement$1(null); + } + } + } + function jsxWithValidation(type, props, key, isStaticChildren, source, self2) { + { + var validType = isValidElementType2(type); + if (!validType) { + var info = ""; + if (type === void 0 || typeof type === "object" && type !== null && Object.keys(type).length === 0) { + info += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports."; + } + var sourceInfo = getSourceInfoErrorAddendum(source); + if (sourceInfo) { + info += sourceInfo; + } else { + info += getDeclarationErrorAddendum(); + } + var typeString; + if (type === null) { + typeString = "null"; + } else if (isArray(type)) { + typeString = "array"; + } else if (type !== void 0 && type.$$typeof === REACT_ELEMENT_TYPE) { + typeString = "<" + (getComponentNameFromType(type.type) || "Unknown") + " />"; + info = " Did you accidentally export a JSX literal instead of a component?"; + } else { + typeString = typeof type; + } + error("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", typeString, info); + } + var element = jsxDEV(type, props, key, source, self2); + if (element == null) { + return element; + } + if (validType) { + var children = props.children; + if (children !== void 0) { + if (isStaticChildren) { + if (isArray(children)) { + for (var i2 = 0; i2 < children.length; i2++) { + validateChildKeys(children[i2], type); + } + if (Object.freeze) { + Object.freeze(children); + } + } else { + error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."); + } + } else { + validateChildKeys(children, type); + } + } + } + if (type === REACT_FRAGMENT_TYPE) { + validateFragmentProps(element); + } else { + validatePropTypes(element); + } + return element; + } + } + function jsxWithValidationStatic(type, props, key) { + { + return jsxWithValidation(type, props, key, true); + } + } + function jsxWithValidationDynamic(type, props, key) { + { + return jsxWithValidation(type, props, key, false); + } + } + var jsx129 = jsxWithValidationDynamic; + var jsxs55 = jsxWithValidationStatic; + exports.Fragment = REACT_FRAGMENT_TYPE; + exports.jsx = jsx129; + exports.jsxs = jsxs55; + })(); + } + } +}); + +// node_modules/react/jsx-runtime.js +var require_jsx_runtime = __commonJS({ + "node_modules/react/jsx-runtime.js"(exports, module2) { + "use strict"; + if (false) { + module2.exports = null; + } else { + module2.exports = require_react_jsx_runtime_development(); + } + } +}); + +// node_modules/markdown-it/node_modules/entities/lib/maps/entities.json +var require_entities = __commonJS({ + "node_modules/markdown-it/node_modules/entities/lib/maps/entities.json"(exports, module2) { + module2.exports = { Aacute: "\xC1", aacute: "\xE1", Abreve: "\u0102", abreve: "\u0103", ac: "\u223E", acd: "\u223F", acE: "\u223E\u0333", Acirc: "\xC2", acirc: "\xE2", acute: "\xB4", Acy: "\u0410", acy: "\u0430", AElig: "\xC6", aelig: "\xE6", af: "\u2061", Afr: "\u{1D504}", afr: "\u{1D51E}", Agrave: "\xC0", agrave: "\xE0", alefsym: "\u2135", aleph: "\u2135", Alpha: "\u0391", alpha: "\u03B1", Amacr: "\u0100", amacr: "\u0101", amalg: "\u2A3F", amp: "&", AMP: "&", andand: "\u2A55", And: "\u2A53", and: "\u2227", andd: "\u2A5C", andslope: "\u2A58", andv: "\u2A5A", ang: "\u2220", ange: "\u29A4", angle: "\u2220", angmsdaa: "\u29A8", angmsdab: "\u29A9", angmsdac: "\u29AA", angmsdad: "\u29AB", angmsdae: "\u29AC", angmsdaf: "\u29AD", angmsdag: "\u29AE", angmsdah: "\u29AF", angmsd: "\u2221", angrt: "\u221F", angrtvb: "\u22BE", angrtvbd: "\u299D", angsph: "\u2222", angst: "\xC5", angzarr: "\u237C", Aogon: "\u0104", aogon: "\u0105", Aopf: "\u{1D538}", aopf: "\u{1D552}", apacir: "\u2A6F", ap: "\u2248", apE: "\u2A70", ape: "\u224A", apid: "\u224B", apos: "'", ApplyFunction: "\u2061", approx: "\u2248", approxeq: "\u224A", Aring: "\xC5", aring: "\xE5", Ascr: "\u{1D49C}", ascr: "\u{1D4B6}", Assign: "\u2254", ast: "*", asymp: "\u2248", asympeq: "\u224D", Atilde: "\xC3", atilde: "\xE3", Auml: "\xC4", auml: "\xE4", awconint: "\u2233", awint: "\u2A11", backcong: "\u224C", backepsilon: "\u03F6", backprime: "\u2035", backsim: "\u223D", backsimeq: "\u22CD", Backslash: "\u2216", Barv: "\u2AE7", barvee: "\u22BD", barwed: "\u2305", Barwed: "\u2306", barwedge: "\u2305", bbrk: "\u23B5", bbrktbrk: "\u23B6", bcong: "\u224C", Bcy: "\u0411", bcy: "\u0431", bdquo: "\u201E", becaus: "\u2235", because: "\u2235", Because: "\u2235", bemptyv: "\u29B0", bepsi: "\u03F6", bernou: "\u212C", Bernoullis: "\u212C", Beta: "\u0392", beta: "\u03B2", beth: "\u2136", between: "\u226C", Bfr: "\u{1D505}", bfr: "\u{1D51F}", bigcap: "\u22C2", bigcirc: "\u25EF", bigcup: "\u22C3", bigodot: "\u2A00", bigoplus: "\u2A01", bigotimes: "\u2A02", bigsqcup: "\u2A06", bigstar: "\u2605", bigtriangledown: "\u25BD", bigtriangleup: "\u25B3", biguplus: "\u2A04", bigvee: "\u22C1", bigwedge: "\u22C0", bkarow: "\u290D", blacklozenge: "\u29EB", blacksquare: "\u25AA", blacktriangle: "\u25B4", blacktriangledown: "\u25BE", blacktriangleleft: "\u25C2", blacktriangleright: "\u25B8", blank: "\u2423", blk12: "\u2592", blk14: "\u2591", blk34: "\u2593", block: "\u2588", bne: "=\u20E5", bnequiv: "\u2261\u20E5", bNot: "\u2AED", bnot: "\u2310", Bopf: "\u{1D539}", bopf: "\u{1D553}", bot: "\u22A5", bottom: "\u22A5", bowtie: "\u22C8", boxbox: "\u29C9", boxdl: "\u2510", boxdL: "\u2555", boxDl: "\u2556", boxDL: "\u2557", boxdr: "\u250C", boxdR: "\u2552", boxDr: "\u2553", boxDR: "\u2554", boxh: "\u2500", boxH: "\u2550", boxhd: "\u252C", boxHd: "\u2564", boxhD: "\u2565", boxHD: "\u2566", boxhu: "\u2534", boxHu: "\u2567", boxhU: "\u2568", boxHU: "\u2569", boxminus: "\u229F", boxplus: "\u229E", boxtimes: "\u22A0", boxul: "\u2518", boxuL: "\u255B", boxUl: "\u255C", boxUL: "\u255D", boxur: "\u2514", boxuR: "\u2558", boxUr: "\u2559", boxUR: "\u255A", boxv: "\u2502", boxV: "\u2551", boxvh: "\u253C", boxvH: "\u256A", boxVh: "\u256B", boxVH: "\u256C", boxvl: "\u2524", boxvL: "\u2561", boxVl: "\u2562", boxVL: "\u2563", boxvr: "\u251C", boxvR: "\u255E", boxVr: "\u255F", boxVR: "\u2560", bprime: "\u2035", breve: "\u02D8", Breve: "\u02D8", brvbar: "\xA6", bscr: "\u{1D4B7}", Bscr: "\u212C", bsemi: "\u204F", bsim: "\u223D", bsime: "\u22CD", bsolb: "\u29C5", bsol: "\\", bsolhsub: "\u27C8", bull: "\u2022", bullet: "\u2022", bump: "\u224E", bumpE: "\u2AAE", bumpe: "\u224F", Bumpeq: "\u224E", bumpeq: "\u224F", Cacute: "\u0106", cacute: "\u0107", capand: "\u2A44", capbrcup: "\u2A49", capcap: "\u2A4B", cap: "\u2229", Cap: "\u22D2", capcup: "\u2A47", capdot: "\u2A40", CapitalDifferentialD: "\u2145", caps: "\u2229\uFE00", caret: "\u2041", caron: "\u02C7", Cayleys: "\u212D", ccaps: "\u2A4D", Ccaron: "\u010C", ccaron: "\u010D", Ccedil: "\xC7", ccedil: "\xE7", Ccirc: "\u0108", ccirc: "\u0109", Cconint: "\u2230", ccups: "\u2A4C", ccupssm: "\u2A50", Cdot: "\u010A", cdot: "\u010B", cedil: "\xB8", Cedilla: "\xB8", cemptyv: "\u29B2", cent: "\xA2", centerdot: "\xB7", CenterDot: "\xB7", cfr: "\u{1D520}", Cfr: "\u212D", CHcy: "\u0427", chcy: "\u0447", check: "\u2713", checkmark: "\u2713", Chi: "\u03A7", chi: "\u03C7", circ: "\u02C6", circeq: "\u2257", circlearrowleft: "\u21BA", circlearrowright: "\u21BB", circledast: "\u229B", circledcirc: "\u229A", circleddash: "\u229D", CircleDot: "\u2299", circledR: "\xAE", circledS: "\u24C8", CircleMinus: "\u2296", CirclePlus: "\u2295", CircleTimes: "\u2297", cir: "\u25CB", cirE: "\u29C3", cire: "\u2257", cirfnint: "\u2A10", cirmid: "\u2AEF", cirscir: "\u29C2", ClockwiseContourIntegral: "\u2232", CloseCurlyDoubleQuote: "\u201D", CloseCurlyQuote: "\u2019", clubs: "\u2663", clubsuit: "\u2663", colon: ":", Colon: "\u2237", Colone: "\u2A74", colone: "\u2254", coloneq: "\u2254", comma: ",", commat: "@", comp: "\u2201", compfn: "\u2218", complement: "\u2201", complexes: "\u2102", cong: "\u2245", congdot: "\u2A6D", Congruent: "\u2261", conint: "\u222E", Conint: "\u222F", ContourIntegral: "\u222E", copf: "\u{1D554}", Copf: "\u2102", coprod: "\u2210", Coproduct: "\u2210", copy: "\xA9", COPY: "\xA9", copysr: "\u2117", CounterClockwiseContourIntegral: "\u2233", crarr: "\u21B5", cross: "\u2717", Cross: "\u2A2F", Cscr: "\u{1D49E}", cscr: "\u{1D4B8}", csub: "\u2ACF", csube: "\u2AD1", csup: "\u2AD0", csupe: "\u2AD2", ctdot: "\u22EF", cudarrl: "\u2938", cudarrr: "\u2935", cuepr: "\u22DE", cuesc: "\u22DF", cularr: "\u21B6", cularrp: "\u293D", cupbrcap: "\u2A48", cupcap: "\u2A46", CupCap: "\u224D", cup: "\u222A", Cup: "\u22D3", cupcup: "\u2A4A", cupdot: "\u228D", cupor: "\u2A45", cups: "\u222A\uFE00", curarr: "\u21B7", curarrm: "\u293C", curlyeqprec: "\u22DE", curlyeqsucc: "\u22DF", curlyvee: "\u22CE", curlywedge: "\u22CF", curren: "\xA4", curvearrowleft: "\u21B6", curvearrowright: "\u21B7", cuvee: "\u22CE", cuwed: "\u22CF", cwconint: "\u2232", cwint: "\u2231", cylcty: "\u232D", dagger: "\u2020", Dagger: "\u2021", daleth: "\u2138", darr: "\u2193", Darr: "\u21A1", dArr: "\u21D3", dash: "\u2010", Dashv: "\u2AE4", dashv: "\u22A3", dbkarow: "\u290F", dblac: "\u02DD", Dcaron: "\u010E", dcaron: "\u010F", Dcy: "\u0414", dcy: "\u0434", ddagger: "\u2021", ddarr: "\u21CA", DD: "\u2145", dd: "\u2146", DDotrahd: "\u2911", ddotseq: "\u2A77", deg: "\xB0", Del: "\u2207", Delta: "\u0394", delta: "\u03B4", demptyv: "\u29B1", dfisht: "\u297F", Dfr: "\u{1D507}", dfr: "\u{1D521}", dHar: "\u2965", dharl: "\u21C3", dharr: "\u21C2", DiacriticalAcute: "\xB4", DiacriticalDot: "\u02D9", DiacriticalDoubleAcute: "\u02DD", DiacriticalGrave: "`", DiacriticalTilde: "\u02DC", diam: "\u22C4", diamond: "\u22C4", Diamond: "\u22C4", diamondsuit: "\u2666", diams: "\u2666", die: "\xA8", DifferentialD: "\u2146", digamma: "\u03DD", disin: "\u22F2", div: "\xF7", divide: "\xF7", divideontimes: "\u22C7", divonx: "\u22C7", DJcy: "\u0402", djcy: "\u0452", dlcorn: "\u231E", dlcrop: "\u230D", dollar: "$", Dopf: "\u{1D53B}", dopf: "\u{1D555}", Dot: "\xA8", dot: "\u02D9", DotDot: "\u20DC", doteq: "\u2250", doteqdot: "\u2251", DotEqual: "\u2250", dotminus: "\u2238", dotplus: "\u2214", dotsquare: "\u22A1", doublebarwedge: "\u2306", DoubleContourIntegral: "\u222F", DoubleDot: "\xA8", DoubleDownArrow: "\u21D3", DoubleLeftArrow: "\u21D0", DoubleLeftRightArrow: "\u21D4", DoubleLeftTee: "\u2AE4", DoubleLongLeftArrow: "\u27F8", DoubleLongLeftRightArrow: "\u27FA", DoubleLongRightArrow: "\u27F9", DoubleRightArrow: "\u21D2", DoubleRightTee: "\u22A8", DoubleUpArrow: "\u21D1", DoubleUpDownArrow: "\u21D5", DoubleVerticalBar: "\u2225", DownArrowBar: "\u2913", downarrow: "\u2193", DownArrow: "\u2193", Downarrow: "\u21D3", DownArrowUpArrow: "\u21F5", DownBreve: "\u0311", downdownarrows: "\u21CA", downharpoonleft: "\u21C3", downharpoonright: "\u21C2", DownLeftRightVector: "\u2950", DownLeftTeeVector: "\u295E", DownLeftVectorBar: "\u2956", DownLeftVector: "\u21BD", DownRightTeeVector: "\u295F", DownRightVectorBar: "\u2957", DownRightVector: "\u21C1", DownTeeArrow: "\u21A7", DownTee: "\u22A4", drbkarow: "\u2910", drcorn: "\u231F", drcrop: "\u230C", Dscr: "\u{1D49F}", dscr: "\u{1D4B9}", DScy: "\u0405", dscy: "\u0455", dsol: "\u29F6", Dstrok: "\u0110", dstrok: "\u0111", dtdot: "\u22F1", dtri: "\u25BF", dtrif: "\u25BE", duarr: "\u21F5", duhar: "\u296F", dwangle: "\u29A6", DZcy: "\u040F", dzcy: "\u045F", dzigrarr: "\u27FF", Eacute: "\xC9", eacute: "\xE9", easter: "\u2A6E", Ecaron: "\u011A", ecaron: "\u011B", Ecirc: "\xCA", ecirc: "\xEA", ecir: "\u2256", ecolon: "\u2255", Ecy: "\u042D", ecy: "\u044D", eDDot: "\u2A77", Edot: "\u0116", edot: "\u0117", eDot: "\u2251", ee: "\u2147", efDot: "\u2252", Efr: "\u{1D508}", efr: "\u{1D522}", eg: "\u2A9A", Egrave: "\xC8", egrave: "\xE8", egs: "\u2A96", egsdot: "\u2A98", el: "\u2A99", Element: "\u2208", elinters: "\u23E7", ell: "\u2113", els: "\u2A95", elsdot: "\u2A97", Emacr: "\u0112", emacr: "\u0113", empty: "\u2205", emptyset: "\u2205", EmptySmallSquare: "\u25FB", emptyv: "\u2205", EmptyVerySmallSquare: "\u25AB", emsp13: "\u2004", emsp14: "\u2005", emsp: "\u2003", ENG: "\u014A", eng: "\u014B", ensp: "\u2002", Eogon: "\u0118", eogon: "\u0119", Eopf: "\u{1D53C}", eopf: "\u{1D556}", epar: "\u22D5", eparsl: "\u29E3", eplus: "\u2A71", epsi: "\u03B5", Epsilon: "\u0395", epsilon: "\u03B5", epsiv: "\u03F5", eqcirc: "\u2256", eqcolon: "\u2255", eqsim: "\u2242", eqslantgtr: "\u2A96", eqslantless: "\u2A95", Equal: "\u2A75", equals: "=", EqualTilde: "\u2242", equest: "\u225F", Equilibrium: "\u21CC", equiv: "\u2261", equivDD: "\u2A78", eqvparsl: "\u29E5", erarr: "\u2971", erDot: "\u2253", escr: "\u212F", Escr: "\u2130", esdot: "\u2250", Esim: "\u2A73", esim: "\u2242", Eta: "\u0397", eta: "\u03B7", ETH: "\xD0", eth: "\xF0", Euml: "\xCB", euml: "\xEB", euro: "\u20AC", excl: "!", exist: "\u2203", Exists: "\u2203", expectation: "\u2130", exponentiale: "\u2147", ExponentialE: "\u2147", fallingdotseq: "\u2252", Fcy: "\u0424", fcy: "\u0444", female: "\u2640", ffilig: "\uFB03", fflig: "\uFB00", ffllig: "\uFB04", Ffr: "\u{1D509}", ffr: "\u{1D523}", filig: "\uFB01", FilledSmallSquare: "\u25FC", FilledVerySmallSquare: "\u25AA", fjlig: "fj", flat: "\u266D", fllig: "\uFB02", fltns: "\u25B1", fnof: "\u0192", Fopf: "\u{1D53D}", fopf: "\u{1D557}", forall: "\u2200", ForAll: "\u2200", fork: "\u22D4", forkv: "\u2AD9", Fouriertrf: "\u2131", fpartint: "\u2A0D", frac12: "\xBD", frac13: "\u2153", frac14: "\xBC", frac15: "\u2155", frac16: "\u2159", frac18: "\u215B", frac23: "\u2154", frac25: "\u2156", frac34: "\xBE", frac35: "\u2157", frac38: "\u215C", frac45: "\u2158", frac56: "\u215A", frac58: "\u215D", frac78: "\u215E", frasl: "\u2044", frown: "\u2322", fscr: "\u{1D4BB}", Fscr: "\u2131", gacute: "\u01F5", Gamma: "\u0393", gamma: "\u03B3", Gammad: "\u03DC", gammad: "\u03DD", gap: "\u2A86", Gbreve: "\u011E", gbreve: "\u011F", Gcedil: "\u0122", Gcirc: "\u011C", gcirc: "\u011D", Gcy: "\u0413", gcy: "\u0433", Gdot: "\u0120", gdot: "\u0121", ge: "\u2265", gE: "\u2267", gEl: "\u2A8C", gel: "\u22DB", geq: "\u2265", geqq: "\u2267", geqslant: "\u2A7E", gescc: "\u2AA9", ges: "\u2A7E", gesdot: "\u2A80", gesdoto: "\u2A82", gesdotol: "\u2A84", gesl: "\u22DB\uFE00", gesles: "\u2A94", Gfr: "\u{1D50A}", gfr: "\u{1D524}", gg: "\u226B", Gg: "\u22D9", ggg: "\u22D9", gimel: "\u2137", GJcy: "\u0403", gjcy: "\u0453", gla: "\u2AA5", gl: "\u2277", glE: "\u2A92", glj: "\u2AA4", gnap: "\u2A8A", gnapprox: "\u2A8A", gne: "\u2A88", gnE: "\u2269", gneq: "\u2A88", gneqq: "\u2269", gnsim: "\u22E7", Gopf: "\u{1D53E}", gopf: "\u{1D558}", grave: "`", GreaterEqual: "\u2265", GreaterEqualLess: "\u22DB", GreaterFullEqual: "\u2267", GreaterGreater: "\u2AA2", GreaterLess: "\u2277", GreaterSlantEqual: "\u2A7E", GreaterTilde: "\u2273", Gscr: "\u{1D4A2}", gscr: "\u210A", gsim: "\u2273", gsime: "\u2A8E", gsiml: "\u2A90", gtcc: "\u2AA7", gtcir: "\u2A7A", gt: ">", GT: ">", Gt: "\u226B", gtdot: "\u22D7", gtlPar: "\u2995", gtquest: "\u2A7C", gtrapprox: "\u2A86", gtrarr: "\u2978", gtrdot: "\u22D7", gtreqless: "\u22DB", gtreqqless: "\u2A8C", gtrless: "\u2277", gtrsim: "\u2273", gvertneqq: "\u2269\uFE00", gvnE: "\u2269\uFE00", Hacek: "\u02C7", hairsp: "\u200A", half: "\xBD", hamilt: "\u210B", HARDcy: "\u042A", hardcy: "\u044A", harrcir: "\u2948", harr: "\u2194", hArr: "\u21D4", harrw: "\u21AD", Hat: "^", hbar: "\u210F", Hcirc: "\u0124", hcirc: "\u0125", hearts: "\u2665", heartsuit: "\u2665", hellip: "\u2026", hercon: "\u22B9", hfr: "\u{1D525}", Hfr: "\u210C", HilbertSpace: "\u210B", hksearow: "\u2925", hkswarow: "\u2926", hoarr: "\u21FF", homtht: "\u223B", hookleftarrow: "\u21A9", hookrightarrow: "\u21AA", hopf: "\u{1D559}", Hopf: "\u210D", horbar: "\u2015", HorizontalLine: "\u2500", hscr: "\u{1D4BD}", Hscr: "\u210B", hslash: "\u210F", Hstrok: "\u0126", hstrok: "\u0127", HumpDownHump: "\u224E", HumpEqual: "\u224F", hybull: "\u2043", hyphen: "\u2010", Iacute: "\xCD", iacute: "\xED", ic: "\u2063", Icirc: "\xCE", icirc: "\xEE", Icy: "\u0418", icy: "\u0438", Idot: "\u0130", IEcy: "\u0415", iecy: "\u0435", iexcl: "\xA1", iff: "\u21D4", ifr: "\u{1D526}", Ifr: "\u2111", Igrave: "\xCC", igrave: "\xEC", ii: "\u2148", iiiint: "\u2A0C", iiint: "\u222D", iinfin: "\u29DC", iiota: "\u2129", IJlig: "\u0132", ijlig: "\u0133", Imacr: "\u012A", imacr: "\u012B", image: "\u2111", ImaginaryI: "\u2148", imagline: "\u2110", imagpart: "\u2111", imath: "\u0131", Im: "\u2111", imof: "\u22B7", imped: "\u01B5", Implies: "\u21D2", incare: "\u2105", in: "\u2208", infin: "\u221E", infintie: "\u29DD", inodot: "\u0131", intcal: "\u22BA", int: "\u222B", Int: "\u222C", integers: "\u2124", Integral: "\u222B", intercal: "\u22BA", Intersection: "\u22C2", intlarhk: "\u2A17", intprod: "\u2A3C", InvisibleComma: "\u2063", InvisibleTimes: "\u2062", IOcy: "\u0401", iocy: "\u0451", Iogon: "\u012E", iogon: "\u012F", Iopf: "\u{1D540}", iopf: "\u{1D55A}", Iota: "\u0399", iota: "\u03B9", iprod: "\u2A3C", iquest: "\xBF", iscr: "\u{1D4BE}", Iscr: "\u2110", isin: "\u2208", isindot: "\u22F5", isinE: "\u22F9", isins: "\u22F4", isinsv: "\u22F3", isinv: "\u2208", it: "\u2062", Itilde: "\u0128", itilde: "\u0129", Iukcy: "\u0406", iukcy: "\u0456", Iuml: "\xCF", iuml: "\xEF", Jcirc: "\u0134", jcirc: "\u0135", Jcy: "\u0419", jcy: "\u0439", Jfr: "\u{1D50D}", jfr: "\u{1D527}", jmath: "\u0237", Jopf: "\u{1D541}", jopf: "\u{1D55B}", Jscr: "\u{1D4A5}", jscr: "\u{1D4BF}", Jsercy: "\u0408", jsercy: "\u0458", Jukcy: "\u0404", jukcy: "\u0454", Kappa: "\u039A", kappa: "\u03BA", kappav: "\u03F0", Kcedil: "\u0136", kcedil: "\u0137", Kcy: "\u041A", kcy: "\u043A", Kfr: "\u{1D50E}", kfr: "\u{1D528}", kgreen: "\u0138", KHcy: "\u0425", khcy: "\u0445", KJcy: "\u040C", kjcy: "\u045C", Kopf: "\u{1D542}", kopf: "\u{1D55C}", Kscr: "\u{1D4A6}", kscr: "\u{1D4C0}", lAarr: "\u21DA", Lacute: "\u0139", lacute: "\u013A", laemptyv: "\u29B4", lagran: "\u2112", Lambda: "\u039B", lambda: "\u03BB", lang: "\u27E8", Lang: "\u27EA", langd: "\u2991", langle: "\u27E8", lap: "\u2A85", Laplacetrf: "\u2112", laquo: "\xAB", larrb: "\u21E4", larrbfs: "\u291F", larr: "\u2190", Larr: "\u219E", lArr: "\u21D0", larrfs: "\u291D", larrhk: "\u21A9", larrlp: "\u21AB", larrpl: "\u2939", larrsim: "\u2973", larrtl: "\u21A2", latail: "\u2919", lAtail: "\u291B", lat: "\u2AAB", late: "\u2AAD", lates: "\u2AAD\uFE00", lbarr: "\u290C", lBarr: "\u290E", lbbrk: "\u2772", lbrace: "{", lbrack: "[", lbrke: "\u298B", lbrksld: "\u298F", lbrkslu: "\u298D", Lcaron: "\u013D", lcaron: "\u013E", Lcedil: "\u013B", lcedil: "\u013C", lceil: "\u2308", lcub: "{", Lcy: "\u041B", lcy: "\u043B", ldca: "\u2936", ldquo: "\u201C", ldquor: "\u201E", ldrdhar: "\u2967", ldrushar: "\u294B", ldsh: "\u21B2", le: "\u2264", lE: "\u2266", LeftAngleBracket: "\u27E8", LeftArrowBar: "\u21E4", leftarrow: "\u2190", LeftArrow: "\u2190", Leftarrow: "\u21D0", LeftArrowRightArrow: "\u21C6", leftarrowtail: "\u21A2", LeftCeiling: "\u2308", LeftDoubleBracket: "\u27E6", LeftDownTeeVector: "\u2961", LeftDownVectorBar: "\u2959", LeftDownVector: "\u21C3", LeftFloor: "\u230A", leftharpoondown: "\u21BD", leftharpoonup: "\u21BC", leftleftarrows: "\u21C7", leftrightarrow: "\u2194", LeftRightArrow: "\u2194", Leftrightarrow: "\u21D4", leftrightarrows: "\u21C6", leftrightharpoons: "\u21CB", leftrightsquigarrow: "\u21AD", LeftRightVector: "\u294E", LeftTeeArrow: "\u21A4", LeftTee: "\u22A3", LeftTeeVector: "\u295A", leftthreetimes: "\u22CB", LeftTriangleBar: "\u29CF", LeftTriangle: "\u22B2", LeftTriangleEqual: "\u22B4", LeftUpDownVector: "\u2951", LeftUpTeeVector: "\u2960", LeftUpVectorBar: "\u2958", LeftUpVector: "\u21BF", LeftVectorBar: "\u2952", LeftVector: "\u21BC", lEg: "\u2A8B", leg: "\u22DA", leq: "\u2264", leqq: "\u2266", leqslant: "\u2A7D", lescc: "\u2AA8", les: "\u2A7D", lesdot: "\u2A7F", lesdoto: "\u2A81", lesdotor: "\u2A83", lesg: "\u22DA\uFE00", lesges: "\u2A93", lessapprox: "\u2A85", lessdot: "\u22D6", lesseqgtr: "\u22DA", lesseqqgtr: "\u2A8B", LessEqualGreater: "\u22DA", LessFullEqual: "\u2266", LessGreater: "\u2276", lessgtr: "\u2276", LessLess: "\u2AA1", lesssim: "\u2272", LessSlantEqual: "\u2A7D", LessTilde: "\u2272", lfisht: "\u297C", lfloor: "\u230A", Lfr: "\u{1D50F}", lfr: "\u{1D529}", lg: "\u2276", lgE: "\u2A91", lHar: "\u2962", lhard: "\u21BD", lharu: "\u21BC", lharul: "\u296A", lhblk: "\u2584", LJcy: "\u0409", ljcy: "\u0459", llarr: "\u21C7", ll: "\u226A", Ll: "\u22D8", llcorner: "\u231E", Lleftarrow: "\u21DA", llhard: "\u296B", lltri: "\u25FA", Lmidot: "\u013F", lmidot: "\u0140", lmoustache: "\u23B0", lmoust: "\u23B0", lnap: "\u2A89", lnapprox: "\u2A89", lne: "\u2A87", lnE: "\u2268", lneq: "\u2A87", lneqq: "\u2268", lnsim: "\u22E6", loang: "\u27EC", loarr: "\u21FD", lobrk: "\u27E6", longleftarrow: "\u27F5", LongLeftArrow: "\u27F5", Longleftarrow: "\u27F8", longleftrightarrow: "\u27F7", LongLeftRightArrow: "\u27F7", Longleftrightarrow: "\u27FA", longmapsto: "\u27FC", longrightarrow: "\u27F6", LongRightArrow: "\u27F6", Longrightarrow: "\u27F9", looparrowleft: "\u21AB", looparrowright: "\u21AC", lopar: "\u2985", Lopf: "\u{1D543}", lopf: "\u{1D55D}", loplus: "\u2A2D", lotimes: "\u2A34", lowast: "\u2217", lowbar: "_", LowerLeftArrow: "\u2199", LowerRightArrow: "\u2198", loz: "\u25CA", lozenge: "\u25CA", lozf: "\u29EB", lpar: "(", lparlt: "\u2993", lrarr: "\u21C6", lrcorner: "\u231F", lrhar: "\u21CB", lrhard: "\u296D", lrm: "\u200E", lrtri: "\u22BF", lsaquo: "\u2039", lscr: "\u{1D4C1}", Lscr: "\u2112", lsh: "\u21B0", Lsh: "\u21B0", lsim: "\u2272", lsime: "\u2A8D", lsimg: "\u2A8F", lsqb: "[", lsquo: "\u2018", lsquor: "\u201A", Lstrok: "\u0141", lstrok: "\u0142", ltcc: "\u2AA6", ltcir: "\u2A79", lt: "<", LT: "<", Lt: "\u226A", ltdot: "\u22D6", lthree: "\u22CB", ltimes: "\u22C9", ltlarr: "\u2976", ltquest: "\u2A7B", ltri: "\u25C3", ltrie: "\u22B4", ltrif: "\u25C2", ltrPar: "\u2996", lurdshar: "\u294A", luruhar: "\u2966", lvertneqq: "\u2268\uFE00", lvnE: "\u2268\uFE00", macr: "\xAF", male: "\u2642", malt: "\u2720", maltese: "\u2720", Map: "\u2905", map: "\u21A6", mapsto: "\u21A6", mapstodown: "\u21A7", mapstoleft: "\u21A4", mapstoup: "\u21A5", marker: "\u25AE", mcomma: "\u2A29", Mcy: "\u041C", mcy: "\u043C", mdash: "\u2014", mDDot: "\u223A", measuredangle: "\u2221", MediumSpace: "\u205F", Mellintrf: "\u2133", Mfr: "\u{1D510}", mfr: "\u{1D52A}", mho: "\u2127", micro: "\xB5", midast: "*", midcir: "\u2AF0", mid: "\u2223", middot: "\xB7", minusb: "\u229F", minus: "\u2212", minusd: "\u2238", minusdu: "\u2A2A", MinusPlus: "\u2213", mlcp: "\u2ADB", mldr: "\u2026", mnplus: "\u2213", models: "\u22A7", Mopf: "\u{1D544}", mopf: "\u{1D55E}", mp: "\u2213", mscr: "\u{1D4C2}", Mscr: "\u2133", mstpos: "\u223E", Mu: "\u039C", mu: "\u03BC", multimap: "\u22B8", mumap: "\u22B8", nabla: "\u2207", Nacute: "\u0143", nacute: "\u0144", nang: "\u2220\u20D2", nap: "\u2249", napE: "\u2A70\u0338", napid: "\u224B\u0338", napos: "\u0149", napprox: "\u2249", natural: "\u266E", naturals: "\u2115", natur: "\u266E", nbsp: "\xA0", nbump: "\u224E\u0338", nbumpe: "\u224F\u0338", ncap: "\u2A43", Ncaron: "\u0147", ncaron: "\u0148", Ncedil: "\u0145", ncedil: "\u0146", ncong: "\u2247", ncongdot: "\u2A6D\u0338", ncup: "\u2A42", Ncy: "\u041D", ncy: "\u043D", ndash: "\u2013", nearhk: "\u2924", nearr: "\u2197", neArr: "\u21D7", nearrow: "\u2197", ne: "\u2260", nedot: "\u2250\u0338", NegativeMediumSpace: "\u200B", NegativeThickSpace: "\u200B", NegativeThinSpace: "\u200B", NegativeVeryThinSpace: "\u200B", nequiv: "\u2262", nesear: "\u2928", nesim: "\u2242\u0338", NestedGreaterGreater: "\u226B", NestedLessLess: "\u226A", NewLine: "\n", nexist: "\u2204", nexists: "\u2204", Nfr: "\u{1D511}", nfr: "\u{1D52B}", ngE: "\u2267\u0338", nge: "\u2271", ngeq: "\u2271", ngeqq: "\u2267\u0338", ngeqslant: "\u2A7E\u0338", nges: "\u2A7E\u0338", nGg: "\u22D9\u0338", ngsim: "\u2275", nGt: "\u226B\u20D2", ngt: "\u226F", ngtr: "\u226F", nGtv: "\u226B\u0338", nharr: "\u21AE", nhArr: "\u21CE", nhpar: "\u2AF2", ni: "\u220B", nis: "\u22FC", nisd: "\u22FA", niv: "\u220B", NJcy: "\u040A", njcy: "\u045A", nlarr: "\u219A", nlArr: "\u21CD", nldr: "\u2025", nlE: "\u2266\u0338", nle: "\u2270", nleftarrow: "\u219A", nLeftarrow: "\u21CD", nleftrightarrow: "\u21AE", nLeftrightarrow: "\u21CE", nleq: "\u2270", nleqq: "\u2266\u0338", nleqslant: "\u2A7D\u0338", nles: "\u2A7D\u0338", nless: "\u226E", nLl: "\u22D8\u0338", nlsim: "\u2274", nLt: "\u226A\u20D2", nlt: "\u226E", nltri: "\u22EA", nltrie: "\u22EC", nLtv: "\u226A\u0338", nmid: "\u2224", NoBreak: "\u2060", NonBreakingSpace: "\xA0", nopf: "\u{1D55F}", Nopf: "\u2115", Not: "\u2AEC", not: "\xAC", NotCongruent: "\u2262", NotCupCap: "\u226D", NotDoubleVerticalBar: "\u2226", NotElement: "\u2209", NotEqual: "\u2260", NotEqualTilde: "\u2242\u0338", NotExists: "\u2204", NotGreater: "\u226F", NotGreaterEqual: "\u2271", NotGreaterFullEqual: "\u2267\u0338", NotGreaterGreater: "\u226B\u0338", NotGreaterLess: "\u2279", NotGreaterSlantEqual: "\u2A7E\u0338", NotGreaterTilde: "\u2275", NotHumpDownHump: "\u224E\u0338", NotHumpEqual: "\u224F\u0338", notin: "\u2209", notindot: "\u22F5\u0338", notinE: "\u22F9\u0338", notinva: "\u2209", notinvb: "\u22F7", notinvc: "\u22F6", NotLeftTriangleBar: "\u29CF\u0338", NotLeftTriangle: "\u22EA", NotLeftTriangleEqual: "\u22EC", NotLess: "\u226E", NotLessEqual: "\u2270", NotLessGreater: "\u2278", NotLessLess: "\u226A\u0338", NotLessSlantEqual: "\u2A7D\u0338", NotLessTilde: "\u2274", NotNestedGreaterGreater: "\u2AA2\u0338", NotNestedLessLess: "\u2AA1\u0338", notni: "\u220C", notniva: "\u220C", notnivb: "\u22FE", notnivc: "\u22FD", NotPrecedes: "\u2280", NotPrecedesEqual: "\u2AAF\u0338", NotPrecedesSlantEqual: "\u22E0", NotReverseElement: "\u220C", NotRightTriangleBar: "\u29D0\u0338", NotRightTriangle: "\u22EB", NotRightTriangleEqual: "\u22ED", NotSquareSubset: "\u228F\u0338", NotSquareSubsetEqual: "\u22E2", NotSquareSuperset: "\u2290\u0338", NotSquareSupersetEqual: "\u22E3", NotSubset: "\u2282\u20D2", NotSubsetEqual: "\u2288", NotSucceeds: "\u2281", NotSucceedsEqual: "\u2AB0\u0338", NotSucceedsSlantEqual: "\u22E1", NotSucceedsTilde: "\u227F\u0338", NotSuperset: "\u2283\u20D2", NotSupersetEqual: "\u2289", NotTilde: "\u2241", NotTildeEqual: "\u2244", NotTildeFullEqual: "\u2247", NotTildeTilde: "\u2249", NotVerticalBar: "\u2224", nparallel: "\u2226", npar: "\u2226", nparsl: "\u2AFD\u20E5", npart: "\u2202\u0338", npolint: "\u2A14", npr: "\u2280", nprcue: "\u22E0", nprec: "\u2280", npreceq: "\u2AAF\u0338", npre: "\u2AAF\u0338", nrarrc: "\u2933\u0338", nrarr: "\u219B", nrArr: "\u21CF", nrarrw: "\u219D\u0338", nrightarrow: "\u219B", nRightarrow: "\u21CF", nrtri: "\u22EB", nrtrie: "\u22ED", nsc: "\u2281", nsccue: "\u22E1", nsce: "\u2AB0\u0338", Nscr: "\u{1D4A9}", nscr: "\u{1D4C3}", nshortmid: "\u2224", nshortparallel: "\u2226", nsim: "\u2241", nsime: "\u2244", nsimeq: "\u2244", nsmid: "\u2224", nspar: "\u2226", nsqsube: "\u22E2", nsqsupe: "\u22E3", nsub: "\u2284", nsubE: "\u2AC5\u0338", nsube: "\u2288", nsubset: "\u2282\u20D2", nsubseteq: "\u2288", nsubseteqq: "\u2AC5\u0338", nsucc: "\u2281", nsucceq: "\u2AB0\u0338", nsup: "\u2285", nsupE: "\u2AC6\u0338", nsupe: "\u2289", nsupset: "\u2283\u20D2", nsupseteq: "\u2289", nsupseteqq: "\u2AC6\u0338", ntgl: "\u2279", Ntilde: "\xD1", ntilde: "\xF1", ntlg: "\u2278", ntriangleleft: "\u22EA", ntrianglelefteq: "\u22EC", ntriangleright: "\u22EB", ntrianglerighteq: "\u22ED", Nu: "\u039D", nu: "\u03BD", num: "#", numero: "\u2116", numsp: "\u2007", nvap: "\u224D\u20D2", nvdash: "\u22AC", nvDash: "\u22AD", nVdash: "\u22AE", nVDash: "\u22AF", nvge: "\u2265\u20D2", nvgt: ">\u20D2", nvHarr: "\u2904", nvinfin: "\u29DE", nvlArr: "\u2902", nvle: "\u2264\u20D2", nvlt: "<\u20D2", nvltrie: "\u22B4\u20D2", nvrArr: "\u2903", nvrtrie: "\u22B5\u20D2", nvsim: "\u223C\u20D2", nwarhk: "\u2923", nwarr: "\u2196", nwArr: "\u21D6", nwarrow: "\u2196", nwnear: "\u2927", Oacute: "\xD3", oacute: "\xF3", oast: "\u229B", Ocirc: "\xD4", ocirc: "\xF4", ocir: "\u229A", Ocy: "\u041E", ocy: "\u043E", odash: "\u229D", Odblac: "\u0150", odblac: "\u0151", odiv: "\u2A38", odot: "\u2299", odsold: "\u29BC", OElig: "\u0152", oelig: "\u0153", ofcir: "\u29BF", Ofr: "\u{1D512}", ofr: "\u{1D52C}", ogon: "\u02DB", Ograve: "\xD2", ograve: "\xF2", ogt: "\u29C1", ohbar: "\u29B5", ohm: "\u03A9", oint: "\u222E", olarr: "\u21BA", olcir: "\u29BE", olcross: "\u29BB", oline: "\u203E", olt: "\u29C0", Omacr: "\u014C", omacr: "\u014D", Omega: "\u03A9", omega: "\u03C9", Omicron: "\u039F", omicron: "\u03BF", omid: "\u29B6", ominus: "\u2296", Oopf: "\u{1D546}", oopf: "\u{1D560}", opar: "\u29B7", OpenCurlyDoubleQuote: "\u201C", OpenCurlyQuote: "\u2018", operp: "\u29B9", oplus: "\u2295", orarr: "\u21BB", Or: "\u2A54", or: "\u2228", ord: "\u2A5D", order: "\u2134", orderof: "\u2134", ordf: "\xAA", ordm: "\xBA", origof: "\u22B6", oror: "\u2A56", orslope: "\u2A57", orv: "\u2A5B", oS: "\u24C8", Oscr: "\u{1D4AA}", oscr: "\u2134", Oslash: "\xD8", oslash: "\xF8", osol: "\u2298", Otilde: "\xD5", otilde: "\xF5", otimesas: "\u2A36", Otimes: "\u2A37", otimes: "\u2297", Ouml: "\xD6", ouml: "\xF6", ovbar: "\u233D", OverBar: "\u203E", OverBrace: "\u23DE", OverBracket: "\u23B4", OverParenthesis: "\u23DC", para: "\xB6", parallel: "\u2225", par: "\u2225", parsim: "\u2AF3", parsl: "\u2AFD", part: "\u2202", PartialD: "\u2202", Pcy: "\u041F", pcy: "\u043F", percnt: "%", period: ".", permil: "\u2030", perp: "\u22A5", pertenk: "\u2031", Pfr: "\u{1D513}", pfr: "\u{1D52D}", Phi: "\u03A6", phi: "\u03C6", phiv: "\u03D5", phmmat: "\u2133", phone: "\u260E", Pi: "\u03A0", pi: "\u03C0", pitchfork: "\u22D4", piv: "\u03D6", planck: "\u210F", planckh: "\u210E", plankv: "\u210F", plusacir: "\u2A23", plusb: "\u229E", pluscir: "\u2A22", plus: "+", plusdo: "\u2214", plusdu: "\u2A25", pluse: "\u2A72", PlusMinus: "\xB1", plusmn: "\xB1", plussim: "\u2A26", plustwo: "\u2A27", pm: "\xB1", Poincareplane: "\u210C", pointint: "\u2A15", popf: "\u{1D561}", Popf: "\u2119", pound: "\xA3", prap: "\u2AB7", Pr: "\u2ABB", pr: "\u227A", prcue: "\u227C", precapprox: "\u2AB7", prec: "\u227A", preccurlyeq: "\u227C", Precedes: "\u227A", PrecedesEqual: "\u2AAF", PrecedesSlantEqual: "\u227C", PrecedesTilde: "\u227E", preceq: "\u2AAF", precnapprox: "\u2AB9", precneqq: "\u2AB5", precnsim: "\u22E8", pre: "\u2AAF", prE: "\u2AB3", precsim: "\u227E", prime: "\u2032", Prime: "\u2033", primes: "\u2119", prnap: "\u2AB9", prnE: "\u2AB5", prnsim: "\u22E8", prod: "\u220F", Product: "\u220F", profalar: "\u232E", profline: "\u2312", profsurf: "\u2313", prop: "\u221D", Proportional: "\u221D", Proportion: "\u2237", propto: "\u221D", prsim: "\u227E", prurel: "\u22B0", Pscr: "\u{1D4AB}", pscr: "\u{1D4C5}", Psi: "\u03A8", psi: "\u03C8", puncsp: "\u2008", Qfr: "\u{1D514}", qfr: "\u{1D52E}", qint: "\u2A0C", qopf: "\u{1D562}", Qopf: "\u211A", qprime: "\u2057", Qscr: "\u{1D4AC}", qscr: "\u{1D4C6}", quaternions: "\u210D", quatint: "\u2A16", quest: "?", questeq: "\u225F", quot: '"', QUOT: '"', rAarr: "\u21DB", race: "\u223D\u0331", Racute: "\u0154", racute: "\u0155", radic: "\u221A", raemptyv: "\u29B3", rang: "\u27E9", Rang: "\u27EB", rangd: "\u2992", range: "\u29A5", rangle: "\u27E9", raquo: "\xBB", rarrap: "\u2975", rarrb: "\u21E5", rarrbfs: "\u2920", rarrc: "\u2933", rarr: "\u2192", Rarr: "\u21A0", rArr: "\u21D2", rarrfs: "\u291E", rarrhk: "\u21AA", rarrlp: "\u21AC", rarrpl: "\u2945", rarrsim: "\u2974", Rarrtl: "\u2916", rarrtl: "\u21A3", rarrw: "\u219D", ratail: "\u291A", rAtail: "\u291C", ratio: "\u2236", rationals: "\u211A", rbarr: "\u290D", rBarr: "\u290F", RBarr: "\u2910", rbbrk: "\u2773", rbrace: "}", rbrack: "]", rbrke: "\u298C", rbrksld: "\u298E", rbrkslu: "\u2990", Rcaron: "\u0158", rcaron: "\u0159", Rcedil: "\u0156", rcedil: "\u0157", rceil: "\u2309", rcub: "}", Rcy: "\u0420", rcy: "\u0440", rdca: "\u2937", rdldhar: "\u2969", rdquo: "\u201D", rdquor: "\u201D", rdsh: "\u21B3", real: "\u211C", realine: "\u211B", realpart: "\u211C", reals: "\u211D", Re: "\u211C", rect: "\u25AD", reg: "\xAE", REG: "\xAE", ReverseElement: "\u220B", ReverseEquilibrium: "\u21CB", ReverseUpEquilibrium: "\u296F", rfisht: "\u297D", rfloor: "\u230B", rfr: "\u{1D52F}", Rfr: "\u211C", rHar: "\u2964", rhard: "\u21C1", rharu: "\u21C0", rharul: "\u296C", Rho: "\u03A1", rho: "\u03C1", rhov: "\u03F1", RightAngleBracket: "\u27E9", RightArrowBar: "\u21E5", rightarrow: "\u2192", RightArrow: "\u2192", Rightarrow: "\u21D2", RightArrowLeftArrow: "\u21C4", rightarrowtail: "\u21A3", RightCeiling: "\u2309", RightDoubleBracket: "\u27E7", RightDownTeeVector: "\u295D", RightDownVectorBar: "\u2955", RightDownVector: "\u21C2", RightFloor: "\u230B", rightharpoondown: "\u21C1", rightharpoonup: "\u21C0", rightleftarrows: "\u21C4", rightleftharpoons: "\u21CC", rightrightarrows: "\u21C9", rightsquigarrow: "\u219D", RightTeeArrow: "\u21A6", RightTee: "\u22A2", RightTeeVector: "\u295B", rightthreetimes: "\u22CC", RightTriangleBar: "\u29D0", RightTriangle: "\u22B3", RightTriangleEqual: "\u22B5", RightUpDownVector: "\u294F", RightUpTeeVector: "\u295C", RightUpVectorBar: "\u2954", RightUpVector: "\u21BE", RightVectorBar: "\u2953", RightVector: "\u21C0", ring: "\u02DA", risingdotseq: "\u2253", rlarr: "\u21C4", rlhar: "\u21CC", rlm: "\u200F", rmoustache: "\u23B1", rmoust: "\u23B1", rnmid: "\u2AEE", roang: "\u27ED", roarr: "\u21FE", robrk: "\u27E7", ropar: "\u2986", ropf: "\u{1D563}", Ropf: "\u211D", roplus: "\u2A2E", rotimes: "\u2A35", RoundImplies: "\u2970", rpar: ")", rpargt: "\u2994", rppolint: "\u2A12", rrarr: "\u21C9", Rrightarrow: "\u21DB", rsaquo: "\u203A", rscr: "\u{1D4C7}", Rscr: "\u211B", rsh: "\u21B1", Rsh: "\u21B1", rsqb: "]", rsquo: "\u2019", rsquor: "\u2019", rthree: "\u22CC", rtimes: "\u22CA", rtri: "\u25B9", rtrie: "\u22B5", rtrif: "\u25B8", rtriltri: "\u29CE", RuleDelayed: "\u29F4", ruluhar: "\u2968", rx: "\u211E", Sacute: "\u015A", sacute: "\u015B", sbquo: "\u201A", scap: "\u2AB8", Scaron: "\u0160", scaron: "\u0161", Sc: "\u2ABC", sc: "\u227B", sccue: "\u227D", sce: "\u2AB0", scE: "\u2AB4", Scedil: "\u015E", scedil: "\u015F", Scirc: "\u015C", scirc: "\u015D", scnap: "\u2ABA", scnE: "\u2AB6", scnsim: "\u22E9", scpolint: "\u2A13", scsim: "\u227F", Scy: "\u0421", scy: "\u0441", sdotb: "\u22A1", sdot: "\u22C5", sdote: "\u2A66", searhk: "\u2925", searr: "\u2198", seArr: "\u21D8", searrow: "\u2198", sect: "\xA7", semi: ";", seswar: "\u2929", setminus: "\u2216", setmn: "\u2216", sext: "\u2736", Sfr: "\u{1D516}", sfr: "\u{1D530}", sfrown: "\u2322", sharp: "\u266F", SHCHcy: "\u0429", shchcy: "\u0449", SHcy: "\u0428", shcy: "\u0448", ShortDownArrow: "\u2193", ShortLeftArrow: "\u2190", shortmid: "\u2223", shortparallel: "\u2225", ShortRightArrow: "\u2192", ShortUpArrow: "\u2191", shy: "\xAD", Sigma: "\u03A3", sigma: "\u03C3", sigmaf: "\u03C2", sigmav: "\u03C2", sim: "\u223C", simdot: "\u2A6A", sime: "\u2243", simeq: "\u2243", simg: "\u2A9E", simgE: "\u2AA0", siml: "\u2A9D", simlE: "\u2A9F", simne: "\u2246", simplus: "\u2A24", simrarr: "\u2972", slarr: "\u2190", SmallCircle: "\u2218", smallsetminus: "\u2216", smashp: "\u2A33", smeparsl: "\u29E4", smid: "\u2223", smile: "\u2323", smt: "\u2AAA", smte: "\u2AAC", smtes: "\u2AAC\uFE00", SOFTcy: "\u042C", softcy: "\u044C", solbar: "\u233F", solb: "\u29C4", sol: "/", Sopf: "\u{1D54A}", sopf: "\u{1D564}", spades: "\u2660", spadesuit: "\u2660", spar: "\u2225", sqcap: "\u2293", sqcaps: "\u2293\uFE00", sqcup: "\u2294", sqcups: "\u2294\uFE00", Sqrt: "\u221A", sqsub: "\u228F", sqsube: "\u2291", sqsubset: "\u228F", sqsubseteq: "\u2291", sqsup: "\u2290", sqsupe: "\u2292", sqsupset: "\u2290", sqsupseteq: "\u2292", square: "\u25A1", Square: "\u25A1", SquareIntersection: "\u2293", SquareSubset: "\u228F", SquareSubsetEqual: "\u2291", SquareSuperset: "\u2290", SquareSupersetEqual: "\u2292", SquareUnion: "\u2294", squarf: "\u25AA", squ: "\u25A1", squf: "\u25AA", srarr: "\u2192", Sscr: "\u{1D4AE}", sscr: "\u{1D4C8}", ssetmn: "\u2216", ssmile: "\u2323", sstarf: "\u22C6", Star: "\u22C6", star: "\u2606", starf: "\u2605", straightepsilon: "\u03F5", straightphi: "\u03D5", strns: "\xAF", sub: "\u2282", Sub: "\u22D0", subdot: "\u2ABD", subE: "\u2AC5", sube: "\u2286", subedot: "\u2AC3", submult: "\u2AC1", subnE: "\u2ACB", subne: "\u228A", subplus: "\u2ABF", subrarr: "\u2979", subset: "\u2282", Subset: "\u22D0", subseteq: "\u2286", subseteqq: "\u2AC5", SubsetEqual: "\u2286", subsetneq: "\u228A", subsetneqq: "\u2ACB", subsim: "\u2AC7", subsub: "\u2AD5", subsup: "\u2AD3", succapprox: "\u2AB8", succ: "\u227B", succcurlyeq: "\u227D", Succeeds: "\u227B", SucceedsEqual: "\u2AB0", SucceedsSlantEqual: "\u227D", SucceedsTilde: "\u227F", succeq: "\u2AB0", succnapprox: "\u2ABA", succneqq: "\u2AB6", succnsim: "\u22E9", succsim: "\u227F", SuchThat: "\u220B", sum: "\u2211", Sum: "\u2211", sung: "\u266A", sup1: "\xB9", sup2: "\xB2", sup3: "\xB3", sup: "\u2283", Sup: "\u22D1", supdot: "\u2ABE", supdsub: "\u2AD8", supE: "\u2AC6", supe: "\u2287", supedot: "\u2AC4", Superset: "\u2283", SupersetEqual: "\u2287", suphsol: "\u27C9", suphsub: "\u2AD7", suplarr: "\u297B", supmult: "\u2AC2", supnE: "\u2ACC", supne: "\u228B", supplus: "\u2AC0", supset: "\u2283", Supset: "\u22D1", supseteq: "\u2287", supseteqq: "\u2AC6", supsetneq: "\u228B", supsetneqq: "\u2ACC", supsim: "\u2AC8", supsub: "\u2AD4", supsup: "\u2AD6", swarhk: "\u2926", swarr: "\u2199", swArr: "\u21D9", swarrow: "\u2199", swnwar: "\u292A", szlig: "\xDF", Tab: " ", target: "\u2316", Tau: "\u03A4", tau: "\u03C4", tbrk: "\u23B4", Tcaron: "\u0164", tcaron: "\u0165", Tcedil: "\u0162", tcedil: "\u0163", Tcy: "\u0422", tcy: "\u0442", tdot: "\u20DB", telrec: "\u2315", Tfr: "\u{1D517}", tfr: "\u{1D531}", there4: "\u2234", therefore: "\u2234", Therefore: "\u2234", Theta: "\u0398", theta: "\u03B8", thetasym: "\u03D1", thetav: "\u03D1", thickapprox: "\u2248", thicksim: "\u223C", ThickSpace: "\u205F\u200A", ThinSpace: "\u2009", thinsp: "\u2009", thkap: "\u2248", thksim: "\u223C", THORN: "\xDE", thorn: "\xFE", tilde: "\u02DC", Tilde: "\u223C", TildeEqual: "\u2243", TildeFullEqual: "\u2245", TildeTilde: "\u2248", timesbar: "\u2A31", timesb: "\u22A0", times: "\xD7", timesd: "\u2A30", tint: "\u222D", toea: "\u2928", topbot: "\u2336", topcir: "\u2AF1", top: "\u22A4", Topf: "\u{1D54B}", topf: "\u{1D565}", topfork: "\u2ADA", tosa: "\u2929", tprime: "\u2034", trade: "\u2122", TRADE: "\u2122", triangle: "\u25B5", triangledown: "\u25BF", triangleleft: "\u25C3", trianglelefteq: "\u22B4", triangleq: "\u225C", triangleright: "\u25B9", trianglerighteq: "\u22B5", tridot: "\u25EC", trie: "\u225C", triminus: "\u2A3A", TripleDot: "\u20DB", triplus: "\u2A39", trisb: "\u29CD", tritime: "\u2A3B", trpezium: "\u23E2", Tscr: "\u{1D4AF}", tscr: "\u{1D4C9}", TScy: "\u0426", tscy: "\u0446", TSHcy: "\u040B", tshcy: "\u045B", Tstrok: "\u0166", tstrok: "\u0167", twixt: "\u226C", twoheadleftarrow: "\u219E", twoheadrightarrow: "\u21A0", Uacute: "\xDA", uacute: "\xFA", uarr: "\u2191", Uarr: "\u219F", uArr: "\u21D1", Uarrocir: "\u2949", Ubrcy: "\u040E", ubrcy: "\u045E", Ubreve: "\u016C", ubreve: "\u016D", Ucirc: "\xDB", ucirc: "\xFB", Ucy: "\u0423", ucy: "\u0443", udarr: "\u21C5", Udblac: "\u0170", udblac: "\u0171", udhar: "\u296E", ufisht: "\u297E", Ufr: "\u{1D518}", ufr: "\u{1D532}", Ugrave: "\xD9", ugrave: "\xF9", uHar: "\u2963", uharl: "\u21BF", uharr: "\u21BE", uhblk: "\u2580", ulcorn: "\u231C", ulcorner: "\u231C", ulcrop: "\u230F", ultri: "\u25F8", Umacr: "\u016A", umacr: "\u016B", uml: "\xA8", UnderBar: "_", UnderBrace: "\u23DF", UnderBracket: "\u23B5", UnderParenthesis: "\u23DD", Union: "\u22C3", UnionPlus: "\u228E", Uogon: "\u0172", uogon: "\u0173", Uopf: "\u{1D54C}", uopf: "\u{1D566}", UpArrowBar: "\u2912", uparrow: "\u2191", UpArrow: "\u2191", Uparrow: "\u21D1", UpArrowDownArrow: "\u21C5", updownarrow: "\u2195", UpDownArrow: "\u2195", Updownarrow: "\u21D5", UpEquilibrium: "\u296E", upharpoonleft: "\u21BF", upharpoonright: "\u21BE", uplus: "\u228E", UpperLeftArrow: "\u2196", UpperRightArrow: "\u2197", upsi: "\u03C5", Upsi: "\u03D2", upsih: "\u03D2", Upsilon: "\u03A5", upsilon: "\u03C5", UpTeeArrow: "\u21A5", UpTee: "\u22A5", upuparrows: "\u21C8", urcorn: "\u231D", urcorner: "\u231D", urcrop: "\u230E", Uring: "\u016E", uring: "\u016F", urtri: "\u25F9", Uscr: "\u{1D4B0}", uscr: "\u{1D4CA}", utdot: "\u22F0", Utilde: "\u0168", utilde: "\u0169", utri: "\u25B5", utrif: "\u25B4", uuarr: "\u21C8", Uuml: "\xDC", uuml: "\xFC", uwangle: "\u29A7", vangrt: "\u299C", varepsilon: "\u03F5", varkappa: "\u03F0", varnothing: "\u2205", varphi: "\u03D5", varpi: "\u03D6", varpropto: "\u221D", varr: "\u2195", vArr: "\u21D5", varrho: "\u03F1", varsigma: "\u03C2", varsubsetneq: "\u228A\uFE00", varsubsetneqq: "\u2ACB\uFE00", varsupsetneq: "\u228B\uFE00", varsupsetneqq: "\u2ACC\uFE00", vartheta: "\u03D1", vartriangleleft: "\u22B2", vartriangleright: "\u22B3", vBar: "\u2AE8", Vbar: "\u2AEB", vBarv: "\u2AE9", Vcy: "\u0412", vcy: "\u0432", vdash: "\u22A2", vDash: "\u22A8", Vdash: "\u22A9", VDash: "\u22AB", Vdashl: "\u2AE6", veebar: "\u22BB", vee: "\u2228", Vee: "\u22C1", veeeq: "\u225A", vellip: "\u22EE", verbar: "|", Verbar: "\u2016", vert: "|", Vert: "\u2016", VerticalBar: "\u2223", VerticalLine: "|", VerticalSeparator: "\u2758", VerticalTilde: "\u2240", VeryThinSpace: "\u200A", Vfr: "\u{1D519}", vfr: "\u{1D533}", vltri: "\u22B2", vnsub: "\u2282\u20D2", vnsup: "\u2283\u20D2", Vopf: "\u{1D54D}", vopf: "\u{1D567}", vprop: "\u221D", vrtri: "\u22B3", Vscr: "\u{1D4B1}", vscr: "\u{1D4CB}", vsubnE: "\u2ACB\uFE00", vsubne: "\u228A\uFE00", vsupnE: "\u2ACC\uFE00", vsupne: "\u228B\uFE00", Vvdash: "\u22AA", vzigzag: "\u299A", Wcirc: "\u0174", wcirc: "\u0175", wedbar: "\u2A5F", wedge: "\u2227", Wedge: "\u22C0", wedgeq: "\u2259", weierp: "\u2118", Wfr: "\u{1D51A}", wfr: "\u{1D534}", Wopf: "\u{1D54E}", wopf: "\u{1D568}", wp: "\u2118", wr: "\u2240", wreath: "\u2240", Wscr: "\u{1D4B2}", wscr: "\u{1D4CC}", xcap: "\u22C2", xcirc: "\u25EF", xcup: "\u22C3", xdtri: "\u25BD", Xfr: "\u{1D51B}", xfr: "\u{1D535}", xharr: "\u27F7", xhArr: "\u27FA", Xi: "\u039E", xi: "\u03BE", xlarr: "\u27F5", xlArr: "\u27F8", xmap: "\u27FC", xnis: "\u22FB", xodot: "\u2A00", Xopf: "\u{1D54F}", xopf: "\u{1D569}", xoplus: "\u2A01", xotime: "\u2A02", xrarr: "\u27F6", xrArr: "\u27F9", Xscr: "\u{1D4B3}", xscr: "\u{1D4CD}", xsqcup: "\u2A06", xuplus: "\u2A04", xutri: "\u25B3", xvee: "\u22C1", xwedge: "\u22C0", Yacute: "\xDD", yacute: "\xFD", YAcy: "\u042F", yacy: "\u044F", Ycirc: "\u0176", ycirc: "\u0177", Ycy: "\u042B", ycy: "\u044B", yen: "\xA5", Yfr: "\u{1D51C}", yfr: "\u{1D536}", YIcy: "\u0407", yicy: "\u0457", Yopf: "\u{1D550}", yopf: "\u{1D56A}", Yscr: "\u{1D4B4}", yscr: "\u{1D4CE}", YUcy: "\u042E", yucy: "\u044E", yuml: "\xFF", Yuml: "\u0178", Zacute: "\u0179", zacute: "\u017A", Zcaron: "\u017D", zcaron: "\u017E", Zcy: "\u0417", zcy: "\u0437", Zdot: "\u017B", zdot: "\u017C", zeetrf: "\u2128", ZeroWidthSpace: "\u200B", Zeta: "\u0396", zeta: "\u03B6", zfr: "\u{1D537}", Zfr: "\u2128", ZHcy: "\u0416", zhcy: "\u0436", zigrarr: "\u21DD", zopf: "\u{1D56B}", Zopf: "\u2124", Zscr: "\u{1D4B5}", zscr: "\u{1D4CF}", zwj: "\u200D", zwnj: "\u200C" }; + } +}); + +// node_modules/markdown-it/lib/common/entities.js +var require_entities2 = __commonJS({ + "node_modules/markdown-it/lib/common/entities.js"(exports, module2) { + "use strict"; + module2.exports = require_entities(); + } +}); + +// node_modules/uc.micro/categories/P/regex.js +var require_regex = __commonJS({ + "node_modules/uc.micro/categories/P/regex.js"(exports, module2) { + module2.exports = /[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/; + } +}); + +// node_modules/mdurl/encode.js +var require_encode = __commonJS({ + "node_modules/mdurl/encode.js"(exports, module2) { + "use strict"; + var encodeCache = {}; + function getEncodeCache(exclude) { + var i2, ch, cache = encodeCache[exclude]; + if (cache) { + return cache; + } + cache = encodeCache[exclude] = []; + for (i2 = 0; i2 < 128; i2++) { + ch = String.fromCharCode(i2); + if (/^[0-9a-z]$/i.test(ch)) { + cache.push(ch); + } else { + cache.push("%" + ("0" + i2.toString(16).toUpperCase()).slice(-2)); + } + } + for (i2 = 0; i2 < exclude.length; i2++) { + cache[exclude.charCodeAt(i2)] = exclude[i2]; + } + return cache; + } + function encode(string, exclude, keepEscaped) { + var i2, l2, code, nextCode, cache, result = ""; + if (typeof exclude !== "string") { + keepEscaped = exclude; + exclude = encode.defaultChars; + } + if (typeof keepEscaped === "undefined") { + keepEscaped = true; + } + cache = getEncodeCache(exclude); + for (i2 = 0, l2 = string.length; i2 < l2; i2++) { + code = string.charCodeAt(i2); + if (keepEscaped && code === 37 && i2 + 2 < l2) { + if (/^[0-9a-f]{2}$/i.test(string.slice(i2 + 1, i2 + 3))) { + result += string.slice(i2, i2 + 3); + i2 += 2; + continue; + } + } + if (code < 128) { + result += cache[code]; + continue; + } + if (code >= 55296 && code <= 57343) { + if (code >= 55296 && code <= 56319 && i2 + 1 < l2) { + nextCode = string.charCodeAt(i2 + 1); + if (nextCode >= 56320 && nextCode <= 57343) { + result += encodeURIComponent(string[i2] + string[i2 + 1]); + i2++; + continue; + } + } + result += "%EF%BF%BD"; + continue; + } + result += encodeURIComponent(string[i2]); + } + return result; + } + encode.defaultChars = ";/?:@&=+$,-_.!~*'()#"; + encode.componentChars = "-_.!~*'()"; + module2.exports = encode; + } +}); + +// node_modules/mdurl/decode.js +var require_decode = __commonJS({ + "node_modules/mdurl/decode.js"(exports, module2) { + "use strict"; + var decodeCache = {}; + function getDecodeCache(exclude) { + var i2, ch, cache = decodeCache[exclude]; + if (cache) { + return cache; + } + cache = decodeCache[exclude] = []; + for (i2 = 0; i2 < 128; i2++) { + ch = String.fromCharCode(i2); + cache.push(ch); + } + for (i2 = 0; i2 < exclude.length; i2++) { + ch = exclude.charCodeAt(i2); + cache[ch] = "%" + ("0" + ch.toString(16).toUpperCase()).slice(-2); + } + return cache; + } + function decode(string, exclude) { + var cache; + if (typeof exclude !== "string") { + exclude = decode.defaultChars; + } + cache = getDecodeCache(exclude); + return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) { + var i2, l2, b1, b2, b3, b4, chr, result = ""; + for (i2 = 0, l2 = seq.length; i2 < l2; i2 += 3) { + b1 = parseInt(seq.slice(i2 + 1, i2 + 3), 16); + if (b1 < 128) { + result += cache[b1]; + continue; + } + if ((b1 & 224) === 192 && i2 + 3 < l2) { + b2 = parseInt(seq.slice(i2 + 4, i2 + 6), 16); + if ((b2 & 192) === 128) { + chr = b1 << 6 & 1984 | b2 & 63; + if (chr < 128) { + result += "\uFFFD\uFFFD"; + } else { + result += String.fromCharCode(chr); + } + i2 += 3; + continue; + } + } + if ((b1 & 240) === 224 && i2 + 6 < l2) { + b2 = parseInt(seq.slice(i2 + 4, i2 + 6), 16); + b3 = parseInt(seq.slice(i2 + 7, i2 + 9), 16); + if ((b2 & 192) === 128 && (b3 & 192) === 128) { + chr = b1 << 12 & 61440 | b2 << 6 & 4032 | b3 & 63; + if (chr < 2048 || chr >= 55296 && chr <= 57343) { + result += "\uFFFD\uFFFD\uFFFD"; + } else { + result += String.fromCharCode(chr); + } + i2 += 6; + continue; + } + } + if ((b1 & 248) === 240 && i2 + 9 < l2) { + b2 = parseInt(seq.slice(i2 + 4, i2 + 6), 16); + b3 = parseInt(seq.slice(i2 + 7, i2 + 9), 16); + b4 = parseInt(seq.slice(i2 + 10, i2 + 12), 16); + if ((b2 & 192) === 128 && (b3 & 192) === 128 && (b4 & 192) === 128) { + chr = b1 << 18 & 1835008 | b2 << 12 & 258048 | b3 << 6 & 4032 | b4 & 63; + if (chr < 65536 || chr > 1114111) { + result += "\uFFFD\uFFFD\uFFFD\uFFFD"; + } else { + chr -= 65536; + result += String.fromCharCode(55296 + (chr >> 10), 56320 + (chr & 1023)); + } + i2 += 9; + continue; + } + } + result += "\uFFFD"; + } + return result; + }); + } + decode.defaultChars = ";/?:@&=+$,#"; + decode.componentChars = ""; + module2.exports = decode; + } +}); + +// node_modules/mdurl/format.js +var require_format = __commonJS({ + "node_modules/mdurl/format.js"(exports, module2) { + "use strict"; + module2.exports = function format(url) { + var result = ""; + result += url.protocol || ""; + result += url.slashes ? "//" : ""; + result += url.auth ? url.auth + "@" : ""; + if (url.hostname && url.hostname.indexOf(":") !== -1) { + result += "[" + url.hostname + "]"; + } else { + result += url.hostname || ""; + } + result += url.port ? ":" + url.port : ""; + result += url.pathname || ""; + result += url.search || ""; + result += url.hash || ""; + return result; + }; + } +}); + +// node_modules/mdurl/parse.js +var require_parse = __commonJS({ + "node_modules/mdurl/parse.js"(exports, module2) { + "use strict"; + function Url() { + this.protocol = null; + this.slashes = null; + this.auth = null; + this.port = null; + this.hostname = null; + this.hash = null; + this.search = null; + this.pathname = null; + } + var protocolPattern = /^([a-z0-9.+-]+:)/i; + var portPattern = /:[0-9]*$/; + var simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/; + var delims = ["<", ">", '"', "`", " ", "\r", "\n", " "]; + var unwise = ["{", "}", "|", "\\", "^", "`"].concat(delims); + var autoEscape = ["'"].concat(unwise); + var nonHostChars = ["%", "/", "?", ";", "#"].concat(autoEscape); + var hostEndingChars = ["/", "?", "#"]; + var hostnameMaxLen = 255; + var hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/; + var hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/; + var hostlessProtocol = { + "javascript": true, + "javascript:": true + }; + var slashedProtocol = { + "http": true, + "https": true, + "ftp": true, + "gopher": true, + "file": true, + "http:": true, + "https:": true, + "ftp:": true, + "gopher:": true, + "file:": true + }; + function urlParse(url, slashesDenoteHost) { + if (url && url instanceof Url) { + return url; + } + var u2 = new Url(); + u2.parse(url, slashesDenoteHost); + return u2; + } + Url.prototype.parse = function(url, slashesDenoteHost) { + var i2, l2, lowerProto, hec, slashes, rest = url; + rest = rest.trim(); + if (!slashesDenoteHost && url.split("#").length === 1) { + var simplePath = simplePathPattern.exec(rest); + if (simplePath) { + this.pathname = simplePath[1]; + if (simplePath[2]) { + this.search = simplePath[2]; + } + return this; + } + } + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + lowerProto = proto.toLowerCase(); + this.protocol = proto; + rest = rest.substr(proto.length); + } + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { + slashes = rest.substr(0, 2) === "//"; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) { + var hostEnd = -1; + for (i2 = 0; i2 < hostEndingChars.length; i2++) { + hec = rest.indexOf(hostEndingChars[i2]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { + hostEnd = hec; + } + } + var auth, atSign; + if (hostEnd === -1) { + atSign = rest.lastIndexOf("@"); + } else { + atSign = rest.lastIndexOf("@", hostEnd); + } + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = auth; + } + hostEnd = -1; + for (i2 = 0; i2 < nonHostChars.length; i2++) { + hec = rest.indexOf(nonHostChars[i2]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { + hostEnd = hec; + } + } + if (hostEnd === -1) { + hostEnd = rest.length; + } + if (rest[hostEnd - 1] === ":") { + hostEnd--; + } + var host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + this.parseHost(host); + this.hostname = this.hostname || ""; + var ipv6Hostname = this.hostname[0] === "[" && this.hostname[this.hostname.length - 1] === "]"; + if (!ipv6Hostname) { + var hostparts = this.hostname.split(/\./); + for (i2 = 0, l2 = hostparts.length; i2 < l2; i2++) { + var part = hostparts[i2]; + if (!part) { + continue; + } + if (!part.match(hostnamePartPattern)) { + var newpart = ""; + for (var j2 = 0, k2 = part.length; j2 < k2; j2++) { + if (part.charCodeAt(j2) > 127) { + newpart += "x"; + } else { + newpart += part[j2]; + } + } + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i2); + var notHost = hostparts.slice(i2 + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = notHost.join(".") + rest; + } + this.hostname = validParts.join("."); + break; + } + } + } + } + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ""; + } + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + } + } + var hash = rest.indexOf("#"); + if (hash !== -1) { + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf("?"); + if (qm !== -1) { + this.search = rest.substr(qm); + rest = rest.slice(0, qm); + } + if (rest) { + this.pathname = rest; + } + if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) { + this.pathname = ""; + } + return this; + }; + Url.prototype.parseHost = function(host) { + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ":") { + this.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) { + this.hostname = host; + } + }; + module2.exports = urlParse; + } +}); + +// node_modules/mdurl/index.js +var require_mdurl = __commonJS({ + "node_modules/mdurl/index.js"(exports, module2) { + "use strict"; + module2.exports.encode = require_encode(); + module2.exports.decode = require_decode(); + module2.exports.format = require_format(); + module2.exports.parse = require_parse(); + } +}); + +// node_modules/uc.micro/properties/Any/regex.js +var require_regex2 = __commonJS({ + "node_modules/uc.micro/properties/Any/regex.js"(exports, module2) { + module2.exports = /[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; + } +}); + +// node_modules/uc.micro/categories/Cc/regex.js +var require_regex3 = __commonJS({ + "node_modules/uc.micro/categories/Cc/regex.js"(exports, module2) { + module2.exports = /[\0-\x1F\x7F-\x9F]/; + } +}); + +// node_modules/uc.micro/categories/Cf/regex.js +var require_regex4 = __commonJS({ + "node_modules/uc.micro/categories/Cf/regex.js"(exports, module2) { + module2.exports = /[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/; + } +}); + +// node_modules/uc.micro/categories/Z/regex.js +var require_regex5 = __commonJS({ + "node_modules/uc.micro/categories/Z/regex.js"(exports, module2) { + module2.exports = /[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/; + } +}); + +// node_modules/uc.micro/index.js +var require_uc = __commonJS({ + "node_modules/uc.micro/index.js"(exports) { + "use strict"; + exports.Any = require_regex2(); + exports.Cc = require_regex3(); + exports.Cf = require_regex4(); + exports.P = require_regex(); + exports.Z = require_regex5(); + } +}); + +// node_modules/markdown-it/lib/common/utils.js +var require_utils = __commonJS({ + "node_modules/markdown-it/lib/common/utils.js"(exports) { + "use strict"; + function _class(obj) { + return Object.prototype.toString.call(obj); + } + function isString(obj) { + return _class(obj) === "[object String]"; + } + var _hasOwnProperty = Object.prototype.hasOwnProperty; + function has(object, key) { + return _hasOwnProperty.call(object, key); + } + function assign(obj) { + var sources = Array.prototype.slice.call(arguments, 1); + sources.forEach(function(source) { + if (!source) { + return; + } + if (typeof source !== "object") { + throw new TypeError(source + "must be object"); + } + Object.keys(source).forEach(function(key) { + obj[key] = source[key]; + }); + }); + return obj; + } + function arrayReplaceAt(src, pos, newElements) { + return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1)); + } + function isValidEntityCode(c2) { + if (c2 >= 55296 && c2 <= 57343) { + return false; + } + if (c2 >= 64976 && c2 <= 65007) { + return false; + } + if ((c2 & 65535) === 65535 || (c2 & 65535) === 65534) { + return false; + } + if (c2 >= 0 && c2 <= 8) { + return false; + } + if (c2 === 11) { + return false; + } + if (c2 >= 14 && c2 <= 31) { + return false; + } + if (c2 >= 127 && c2 <= 159) { + return false; + } + if (c2 > 1114111) { + return false; + } + return true; + } + function fromCodePoint2(c2) { + if (c2 > 65535) { + c2 -= 65536; + var surrogate1 = 55296 + (c2 >> 10), surrogate2 = 56320 + (c2 & 1023); + return String.fromCharCode(surrogate1, surrogate2); + } + return String.fromCharCode(c2); + } + var UNESCAPE_MD_RE = /\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g; + var ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi; + var UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + "|" + ENTITY_RE.source, "gi"); + var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i; + var entities = require_entities2(); + function replaceEntityPattern(match, name) { + var code = 0; + if (has(entities, name)) { + return entities[name]; + } + if (name.charCodeAt(0) === 35 && DIGITAL_ENTITY_TEST_RE.test(name)) { + code = name[1].toLowerCase() === "x" ? parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10); + if (isValidEntityCode(code)) { + return fromCodePoint2(code); + } + } + return match; + } + function unescapeMd(str) { + if (str.indexOf("\\") < 0) { + return str; + } + return str.replace(UNESCAPE_MD_RE, "$1"); + } + function unescapeAll(str) { + if (str.indexOf("\\") < 0 && str.indexOf("&") < 0) { + return str; + } + return str.replace(UNESCAPE_ALL_RE, function(match, escaped, entity) { + if (escaped) { + return escaped; + } + return replaceEntityPattern(match, entity); + }); + } + var HTML_ESCAPE_TEST_RE = /[&<>"]/; + var HTML_ESCAPE_REPLACE_RE = /[&<>"]/g; + var HTML_REPLACEMENTS = { + "&": "&", + "<": "<", + ">": ">", + '"': """ + }; + function replaceUnsafeChar(ch) { + return HTML_REPLACEMENTS[ch]; + } + function escapeHtml(str) { + if (HTML_ESCAPE_TEST_RE.test(str)) { + return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar); + } + return str; + } + var REGEXP_ESCAPE_RE = /[.?*+^$[\]\\(){}|-]/g; + function escapeRE(str) { + return str.replace(REGEXP_ESCAPE_RE, "\\$&"); + } + function isSpace(code) { + switch (code) { + case 9: + case 32: + return true; + } + return false; + } + function isWhiteSpace(code) { + if (code >= 8192 && code <= 8202) { + return true; + } + switch (code) { + case 9: + case 10: + case 11: + case 12: + case 13: + case 32: + case 160: + case 5760: + case 8239: + case 8287: + case 12288: + return true; + } + return false; + } + var UNICODE_PUNCT_RE = require_regex(); + function isPunctChar(ch) { + return UNICODE_PUNCT_RE.test(ch); + } + function isMdAsciiPunct(ch) { + switch (ch) { + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: + case 58: + case 59: + case 60: + case 61: + case 62: + case 63: + case 64: + case 91: + case 92: + case 93: + case 94: + case 95: + case 96: + case 123: + case 124: + case 125: + case 126: + return true; + default: + return false; + } + } + function normalizeReference(str) { + str = str.trim().replace(/\s+/g, " "); + if ("\u1E9E".toLowerCase() === "\u1E7E") { + str = str.replace(/ẞ/g, "\xDF"); + } + return str.toLowerCase().toUpperCase(); + } + exports.lib = {}; + exports.lib.mdurl = require_mdurl(); + exports.lib.ucmicro = require_uc(); + exports.assign = assign; + exports.isString = isString; + exports.has = has; + exports.unescapeMd = unescapeMd; + exports.unescapeAll = unescapeAll; + exports.isValidEntityCode = isValidEntityCode; + exports.fromCodePoint = fromCodePoint2; + exports.escapeHtml = escapeHtml; + exports.arrayReplaceAt = arrayReplaceAt; + exports.isSpace = isSpace; + exports.isWhiteSpace = isWhiteSpace; + exports.isMdAsciiPunct = isMdAsciiPunct; + exports.isPunctChar = isPunctChar; + exports.escapeRE = escapeRE; + exports.normalizeReference = normalizeReference; + } +}); + +// node_modules/markdown-it/lib/helpers/parse_link_label.js +var require_parse_link_label = __commonJS({ + "node_modules/markdown-it/lib/helpers/parse_link_label.js"(exports, module2) { + "use strict"; + module2.exports = function parseLinkLabel(state, start, disableNested) { + var level, found, marker, prevPos, labelEnd = -1, max2 = state.posMax, oldPos = state.pos; + state.pos = start + 1; + level = 1; + while (state.pos < max2) { + marker = state.src.charCodeAt(state.pos); + if (marker === 93) { + level--; + if (level === 0) { + found = true; + break; + } + } + prevPos = state.pos; + state.md.inline.skipToken(state); + if (marker === 91) { + if (prevPos === state.pos - 1) { + level++; + } else if (disableNested) { + state.pos = oldPos; + return -1; + } + } + } + if (found) { + labelEnd = state.pos; + } + state.pos = oldPos; + return labelEnd; + }; + } +}); + +// node_modules/markdown-it/lib/helpers/parse_link_destination.js +var require_parse_link_destination = __commonJS({ + "node_modules/markdown-it/lib/helpers/parse_link_destination.js"(exports, module2) { + "use strict"; + var unescapeAll = require_utils().unescapeAll; + module2.exports = function parseLinkDestination(str, pos, max2) { + var code, level, lines = 0, start = pos, result = { + ok: false, + pos: 0, + lines: 0, + str: "" + }; + if (str.charCodeAt(pos) === 60) { + pos++; + while (pos < max2) { + code = str.charCodeAt(pos); + if (code === 10) { + return result; + } + if (code === 60) { + return result; + } + if (code === 62) { + result.pos = pos + 1; + result.str = unescapeAll(str.slice(start + 1, pos)); + result.ok = true; + return result; + } + if (code === 92 && pos + 1 < max2) { + pos += 2; + continue; + } + pos++; + } + return result; + } + level = 0; + while (pos < max2) { + code = str.charCodeAt(pos); + if (code === 32) { + break; + } + if (code < 32 || code === 127) { + break; + } + if (code === 92 && pos + 1 < max2) { + if (str.charCodeAt(pos + 1) === 32) { + break; + } + pos += 2; + continue; + } + if (code === 40) { + level++; + if (level > 32) { + return result; + } + } + if (code === 41) { + if (level === 0) { + break; + } + level--; + } + pos++; + } + if (start === pos) { + return result; + } + if (level !== 0) { + return result; + } + result.str = unescapeAll(str.slice(start, pos)); + result.lines = lines; + result.pos = pos; + result.ok = true; + return result; + }; + } +}); + +// node_modules/markdown-it/lib/helpers/parse_link_title.js +var require_parse_link_title = __commonJS({ + "node_modules/markdown-it/lib/helpers/parse_link_title.js"(exports, module2) { + "use strict"; + var unescapeAll = require_utils().unescapeAll; + module2.exports = function parseLinkTitle(str, pos, max2) { + var code, marker, lines = 0, start = pos, result = { + ok: false, + pos: 0, + lines: 0, + str: "" + }; + if (pos >= max2) { + return result; + } + marker = str.charCodeAt(pos); + if (marker !== 34 && marker !== 39 && marker !== 40) { + return result; + } + pos++; + if (marker === 40) { + marker = 41; + } + while (pos < max2) { + code = str.charCodeAt(pos); + if (code === marker) { + result.pos = pos + 1; + result.lines = lines; + result.str = unescapeAll(str.slice(start + 1, pos)); + result.ok = true; + return result; + } else if (code === 40 && marker === 41) { + return result; + } else if (code === 10) { + lines++; + } else if (code === 92 && pos + 1 < max2) { + pos++; + if (str.charCodeAt(pos) === 10) { + lines++; + } + } + pos++; + } + return result; + }; + } +}); + +// node_modules/markdown-it/lib/helpers/index.js +var require_helpers = __commonJS({ + "node_modules/markdown-it/lib/helpers/index.js"(exports) { + "use strict"; + exports.parseLinkLabel = require_parse_link_label(); + exports.parseLinkDestination = require_parse_link_destination(); + exports.parseLinkTitle = require_parse_link_title(); + } +}); + +// node_modules/markdown-it/lib/renderer.js +var require_renderer = __commonJS({ + "node_modules/markdown-it/lib/renderer.js"(exports, module2) { + "use strict"; + var assign = require_utils().assign; + var unescapeAll = require_utils().unescapeAll; + var escapeHtml = require_utils().escapeHtml; + var default_rules = {}; + default_rules.code_inline = function(tokens, idx, options, env, slf) { + var token = tokens[idx]; + return "" + escapeHtml(tokens[idx].content) + ""; + }; + default_rules.code_block = function(tokens, idx, options, env, slf) { + var token = tokens[idx]; + return "" + escapeHtml(tokens[idx].content) + "\n"; + }; + default_rules.fence = function(tokens, idx, options, env, slf) { + var token = tokens[idx], info = token.info ? unescapeAll(token.info).trim() : "", langName = "", langAttrs = "", highlighted, i2, arr, tmpAttrs, tmpToken; + if (info) { + arr = info.split(/(\s+)/g); + langName = arr[0]; + langAttrs = arr.slice(2).join(""); + } + if (options.highlight) { + highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content); + } else { + highlighted = escapeHtml(token.content); + } + if (highlighted.indexOf("" + highlighted + "\n"; + } + return "
" + highlighted + "
\n"; + }; + default_rules.image = function(tokens, idx, options, env, slf) { + var token = tokens[idx]; + token.attrs[token.attrIndex("alt")][1] = slf.renderInlineAsText(token.children, options, env); + return slf.renderToken(tokens, idx, options); + }; + default_rules.hardbreak = function(tokens, idx, options) { + return options.xhtmlOut ? "
\n" : "
\n"; + }; + default_rules.softbreak = function(tokens, idx, options) { + return options.breaks ? options.xhtmlOut ? "
\n" : "
\n" : "\n"; + }; + default_rules.text = function(tokens, idx) { + return escapeHtml(tokens[idx].content); + }; + default_rules.html_block = function(tokens, idx) { + return tokens[idx].content; + }; + default_rules.html_inline = function(tokens, idx) { + return tokens[idx].content; + }; + function Renderer() { + this.rules = assign({}, default_rules); + } + Renderer.prototype.renderAttrs = function renderAttrs(token) { + var i2, l2, result; + if (!token.attrs) { + return ""; + } + result = ""; + for (i2 = 0, l2 = token.attrs.length; i2 < l2; i2++) { + result += " " + escapeHtml(token.attrs[i2][0]) + '="' + escapeHtml(token.attrs[i2][1]) + '"'; + } + return result; + }; + Renderer.prototype.renderToken = function renderToken(tokens, idx, options) { + var nextToken, result = "", needLf = false, token = tokens[idx]; + if (token.hidden) { + return ""; + } + if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) { + result += "\n"; + } + result += (token.nesting === -1 ? "\n" : ">"; + return result; + }; + Renderer.prototype.renderInline = function(tokens, options, env) { + var type, result = "", rules = this.rules; + for (var i2 = 0, len = tokens.length; i2 < len; i2++) { + type = tokens[i2].type; + if (typeof rules[type] !== "undefined") { + result += rules[type](tokens, i2, options, env, this); + } else { + result += this.renderToken(tokens, i2, options); + } + } + return result; + }; + Renderer.prototype.renderInlineAsText = function(tokens, options, env) { + var result = ""; + for (var i2 = 0, len = tokens.length; i2 < len; i2++) { + if (tokens[i2].type === "text") { + result += tokens[i2].content; + } else if (tokens[i2].type === "image") { + result += this.renderInlineAsText(tokens[i2].children, options, env); + } else if (tokens[i2].type === "softbreak") { + result += "\n"; + } + } + return result; + }; + Renderer.prototype.render = function(tokens, options, env) { + var i2, len, type, result = "", rules = this.rules; + for (i2 = 0, len = tokens.length; i2 < len; i2++) { + type = tokens[i2].type; + if (type === "inline") { + result += this.renderInline(tokens[i2].children, options, env); + } else if (typeof rules[type] !== "undefined") { + result += rules[tokens[i2].type](tokens, i2, options, env, this); + } else { + result += this.renderToken(tokens, i2, options, env); + } + } + return result; + }; + module2.exports = Renderer; + } +}); + +// node_modules/markdown-it/lib/ruler.js +var require_ruler = __commonJS({ + "node_modules/markdown-it/lib/ruler.js"(exports, module2) { + "use strict"; + function Ruler() { + this.__rules__ = []; + this.__cache__ = null; + } + Ruler.prototype.__find__ = function(name) { + for (var i2 = 0; i2 < this.__rules__.length; i2++) { + if (this.__rules__[i2].name === name) { + return i2; + } + } + return -1; + }; + Ruler.prototype.__compile__ = function() { + var self2 = this; + var chains = [""]; + self2.__rules__.forEach(function(rule) { + if (!rule.enabled) { + return; + } + rule.alt.forEach(function(altName) { + if (chains.indexOf(altName) < 0) { + chains.push(altName); + } + }); + }); + self2.__cache__ = {}; + chains.forEach(function(chain) { + self2.__cache__[chain] = []; + self2.__rules__.forEach(function(rule) { + if (!rule.enabled) { + return; + } + if (chain && rule.alt.indexOf(chain) < 0) { + return; + } + self2.__cache__[chain].push(rule.fn); + }); + }); + }; + Ruler.prototype.at = function(name, fn2, options) { + var index = this.__find__(name); + var opt = options || {}; + if (index === -1) { + throw new Error("Parser rule not found: " + name); + } + this.__rules__[index].fn = fn2; + this.__rules__[index].alt = opt.alt || []; + this.__cache__ = null; + }; + Ruler.prototype.before = function(beforeName, ruleName, fn2, options) { + var index = this.__find__(beforeName); + var opt = options || {}; + if (index === -1) { + throw new Error("Parser rule not found: " + beforeName); + } + this.__rules__.splice(index, 0, { + name: ruleName, + enabled: true, + fn: fn2, + alt: opt.alt || [] + }); + this.__cache__ = null; + }; + Ruler.prototype.after = function(afterName, ruleName, fn2, options) { + var index = this.__find__(afterName); + var opt = options || {}; + if (index === -1) { + throw new Error("Parser rule not found: " + afterName); + } + this.__rules__.splice(index + 1, 0, { + name: ruleName, + enabled: true, + fn: fn2, + alt: opt.alt || [] + }); + this.__cache__ = null; + }; + Ruler.prototype.push = function(ruleName, fn2, options) { + var opt = options || {}; + this.__rules__.push({ + name: ruleName, + enabled: true, + fn: fn2, + alt: opt.alt || [] + }); + this.__cache__ = null; + }; + Ruler.prototype.enable = function(list, ignoreInvalid) { + if (!Array.isArray(list)) { + list = [list]; + } + var result = []; + list.forEach(function(name) { + var idx = this.__find__(name); + if (idx < 0) { + if (ignoreInvalid) { + return; + } + throw new Error("Rules manager: invalid rule name " + name); + } + this.__rules__[idx].enabled = true; + result.push(name); + }, this); + this.__cache__ = null; + return result; + }; + Ruler.prototype.enableOnly = function(list, ignoreInvalid) { + if (!Array.isArray(list)) { + list = [list]; + } + this.__rules__.forEach(function(rule) { + rule.enabled = false; + }); + this.enable(list, ignoreInvalid); + }; + Ruler.prototype.disable = function(list, ignoreInvalid) { + if (!Array.isArray(list)) { + list = [list]; + } + var result = []; + list.forEach(function(name) { + var idx = this.__find__(name); + if (idx < 0) { + if (ignoreInvalid) { + return; + } + throw new Error("Rules manager: invalid rule name " + name); + } + this.__rules__[idx].enabled = false; + result.push(name); + }, this); + this.__cache__ = null; + return result; + }; + Ruler.prototype.getRules = function(chainName) { + if (this.__cache__ === null) { + this.__compile__(); + } + return this.__cache__[chainName] || []; + }; + module2.exports = Ruler; + } +}); + +// node_modules/markdown-it/lib/rules_core/normalize.js +var require_normalize = __commonJS({ + "node_modules/markdown-it/lib/rules_core/normalize.js"(exports, module2) { + "use strict"; + var NEWLINES_RE = /\r\n?|\n/g; + var NULL_RE = /\0/g; + module2.exports = function normalize(state) { + var str; + str = state.src.replace(NEWLINES_RE, "\n"); + str = str.replace(NULL_RE, "\uFFFD"); + state.src = str; + }; + } +}); + +// node_modules/markdown-it/lib/rules_core/block.js +var require_block = __commonJS({ + "node_modules/markdown-it/lib/rules_core/block.js"(exports, module2) { + "use strict"; + module2.exports = function block(state) { + var token; + if (state.inlineMode) { + token = new state.Token("inline", "", 0); + token.content = state.src; + token.map = [0, 1]; + token.children = []; + state.tokens.push(token); + } else { + state.md.block.parse(state.src, state.md, state.env, state.tokens); + } + }; + } +}); + +// node_modules/markdown-it/lib/rules_core/inline.js +var require_inline = __commonJS({ + "node_modules/markdown-it/lib/rules_core/inline.js"(exports, module2) { + "use strict"; + module2.exports = function inline(state) { + var tokens = state.tokens, tok, i2, l2; + for (i2 = 0, l2 = tokens.length; i2 < l2; i2++) { + tok = tokens[i2]; + if (tok.type === "inline") { + state.md.inline.parse(tok.content, state.md, state.env, tok.children); + } + } + }; + } +}); + +// node_modules/markdown-it/lib/rules_core/linkify.js +var require_linkify = __commonJS({ + "node_modules/markdown-it/lib/rules_core/linkify.js"(exports, module2) { + "use strict"; + var arrayReplaceAt = require_utils().arrayReplaceAt; + function isLinkOpen(str) { + return /^\s]/i.test(str); + } + function isLinkClose(str) { + return /^<\/a\s*>/i.test(str); + } + module2.exports = function linkify(state) { + var i2, j2, l2, tokens, token, currentToken, nodes, ln2, text, pos, lastPos, level, htmlLinkLevel, url, fullUrl, urlText, blockTokens = state.tokens, links; + if (!state.md.options.linkify) { + return; + } + for (j2 = 0, l2 = blockTokens.length; j2 < l2; j2++) { + if (blockTokens[j2].type !== "inline" || !state.md.linkify.pretest(blockTokens[j2].content)) { + continue; + } + tokens = blockTokens[j2].children; + htmlLinkLevel = 0; + for (i2 = tokens.length - 1; i2 >= 0; i2--) { + currentToken = tokens[i2]; + if (currentToken.type === "link_close") { + i2--; + while (tokens[i2].level !== currentToken.level && tokens[i2].type !== "link_open") { + i2--; + } + continue; + } + if (currentToken.type === "html_inline") { + if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) { + htmlLinkLevel--; + } + if (isLinkClose(currentToken.content)) { + htmlLinkLevel++; + } + } + if (htmlLinkLevel > 0) { + continue; + } + if (currentToken.type === "text" && state.md.linkify.test(currentToken.content)) { + text = currentToken.content; + links = state.md.linkify.match(text); + nodes = []; + level = currentToken.level; + lastPos = 0; + if (links.length > 0 && links[0].index === 0 && i2 > 0 && tokens[i2 - 1].type === "text_special") { + links = links.slice(1); + } + for (ln2 = 0; ln2 < links.length; ln2++) { + url = links[ln2].url; + fullUrl = state.md.normalizeLink(url); + if (!state.md.validateLink(fullUrl)) { + continue; + } + urlText = links[ln2].text; + if (!links[ln2].schema) { + urlText = state.md.normalizeLinkText("http://" + urlText).replace(/^http:\/\//, ""); + } else if (links[ln2].schema === "mailto:" && !/^mailto:/i.test(urlText)) { + urlText = state.md.normalizeLinkText("mailto:" + urlText).replace(/^mailto:/, ""); + } else { + urlText = state.md.normalizeLinkText(urlText); + } + pos = links[ln2].index; + if (pos > lastPos) { + token = new state.Token("text", "", 0); + token.content = text.slice(lastPos, pos); + token.level = level; + nodes.push(token); + } + token = new state.Token("link_open", "a", 1); + token.attrs = [["href", fullUrl]]; + token.level = level++; + token.markup = "linkify"; + token.info = "auto"; + nodes.push(token); + token = new state.Token("text", "", 0); + token.content = urlText; + token.level = level; + nodes.push(token); + token = new state.Token("link_close", "a", -1); + token.level = --level; + token.markup = "linkify"; + token.info = "auto"; + nodes.push(token); + lastPos = links[ln2].lastIndex; + } + if (lastPos < text.length) { + token = new state.Token("text", "", 0); + token.content = text.slice(lastPos); + token.level = level; + nodes.push(token); + } + blockTokens[j2].children = tokens = arrayReplaceAt(tokens, i2, nodes); + } + } + } + }; + } +}); + +// node_modules/markdown-it/lib/rules_core/replacements.js +var require_replacements = __commonJS({ + "node_modules/markdown-it/lib/rules_core/replacements.js"(exports, module2) { + "use strict"; + var RARE_RE = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/; + var SCOPED_ABBR_TEST_RE = /\((c|tm|r)\)/i; + var SCOPED_ABBR_RE = /\((c|tm|r)\)/ig; + var SCOPED_ABBR = { + c: "\xA9", + r: "\xAE", + tm: "\u2122" + }; + function replaceFn(match, name) { + return SCOPED_ABBR[name.toLowerCase()]; + } + function replace_scoped(inlineTokens) { + var i2, token, inside_autolink = 0; + for (i2 = inlineTokens.length - 1; i2 >= 0; i2--) { + token = inlineTokens[i2]; + if (token.type === "text" && !inside_autolink) { + token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn); + } + if (token.type === "link_open" && token.info === "auto") { + inside_autolink--; + } + if (token.type === "link_close" && token.info === "auto") { + inside_autolink++; + } + } + } + function replace_rare(inlineTokens) { + var i2, token, inside_autolink = 0; + for (i2 = inlineTokens.length - 1; i2 >= 0; i2--) { + token = inlineTokens[i2]; + if (token.type === "text" && !inside_autolink) { + if (RARE_RE.test(token.content)) { + token.content = token.content.replace(/\+-/g, "\xB1").replace(/\.{2,}/g, "\u2026").replace(/([?!])…/g, "$1..").replace(/([?!]){4,}/g, "$1$1$1").replace(/,{2,}/g, ",").replace(/(^|[^-])---(?=[^-]|$)/mg, "$1\u2014").replace(/(^|\s)--(?=\s|$)/mg, "$1\u2013").replace(/(^|[^-\s])--(?=[^-\s]|$)/mg, "$1\u2013"); + } + } + if (token.type === "link_open" && token.info === "auto") { + inside_autolink--; + } + if (token.type === "link_close" && token.info === "auto") { + inside_autolink++; + } + } + } + module2.exports = function replace(state) { + var blkIdx; + if (!state.md.options.typographer) { + return; + } + for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { + if (state.tokens[blkIdx].type !== "inline") { + continue; + } + if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) { + replace_scoped(state.tokens[blkIdx].children); + } + if (RARE_RE.test(state.tokens[blkIdx].content)) { + replace_rare(state.tokens[blkIdx].children); + } + } + }; + } +}); + +// node_modules/markdown-it/lib/rules_core/smartquotes.js +var require_smartquotes = __commonJS({ + "node_modules/markdown-it/lib/rules_core/smartquotes.js"(exports, module2) { + "use strict"; + var isWhiteSpace = require_utils().isWhiteSpace; + var isPunctChar = require_utils().isPunctChar; + var isMdAsciiPunct = require_utils().isMdAsciiPunct; + var QUOTE_TEST_RE = /['"]/; + var QUOTE_RE = /['"]/g; + var APOSTROPHE = "\u2019"; + function replaceAt(str, index, ch) { + return str.slice(0, index) + ch + str.slice(index + 1); + } + function process_inlines(tokens, state) { + var i2, token, text, t2, pos, max2, thisLevel, item, lastChar, nextChar, isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace, canOpen, canClose, j2, isSingle2, stack, openQuote, closeQuote; + stack = []; + for (i2 = 0; i2 < tokens.length; i2++) { + token = tokens[i2]; + thisLevel = tokens[i2].level; + for (j2 = stack.length - 1; j2 >= 0; j2--) { + if (stack[j2].level <= thisLevel) { + break; + } + } + stack.length = j2 + 1; + if (token.type !== "text") { + continue; + } + text = token.content; + pos = 0; + max2 = text.length; + OUTER: + while (pos < max2) { + QUOTE_RE.lastIndex = pos; + t2 = QUOTE_RE.exec(text); + if (!t2) { + break; + } + canOpen = canClose = true; + pos = t2.index + 1; + isSingle2 = t2[0] === "'"; + lastChar = 32; + if (t2.index - 1 >= 0) { + lastChar = text.charCodeAt(t2.index - 1); + } else { + for (j2 = i2 - 1; j2 >= 0; j2--) { + if (tokens[j2].type === "softbreak" || tokens[j2].type === "hardbreak") + break; + if (!tokens[j2].content) + continue; + lastChar = tokens[j2].content.charCodeAt(tokens[j2].content.length - 1); + break; + } + } + nextChar = 32; + if (pos < max2) { + nextChar = text.charCodeAt(pos); + } else { + for (j2 = i2 + 1; j2 < tokens.length; j2++) { + if (tokens[j2].type === "softbreak" || tokens[j2].type === "hardbreak") + break; + if (!tokens[j2].content) + continue; + nextChar = tokens[j2].content.charCodeAt(0); + break; + } + } + isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar)); + isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar)); + isLastWhiteSpace = isWhiteSpace(lastChar); + isNextWhiteSpace = isWhiteSpace(nextChar); + if (isNextWhiteSpace) { + canOpen = false; + } else if (isNextPunctChar) { + if (!(isLastWhiteSpace || isLastPunctChar)) { + canOpen = false; + } + } + if (isLastWhiteSpace) { + canClose = false; + } else if (isLastPunctChar) { + if (!(isNextWhiteSpace || isNextPunctChar)) { + canClose = false; + } + } + if (nextChar === 34 && t2[0] === '"') { + if (lastChar >= 48 && lastChar <= 57) { + canClose = canOpen = false; + } + } + if (canOpen && canClose) { + canOpen = isLastPunctChar; + canClose = isNextPunctChar; + } + if (!canOpen && !canClose) { + if (isSingle2) { + token.content = replaceAt(token.content, t2.index, APOSTROPHE); + } + continue; + } + if (canClose) { + for (j2 = stack.length - 1; j2 >= 0; j2--) { + item = stack[j2]; + if (stack[j2].level < thisLevel) { + break; + } + if (item.single === isSingle2 && stack[j2].level === thisLevel) { + item = stack[j2]; + if (isSingle2) { + openQuote = state.md.options.quotes[2]; + closeQuote = state.md.options.quotes[3]; + } else { + openQuote = state.md.options.quotes[0]; + closeQuote = state.md.options.quotes[1]; + } + token.content = replaceAt(token.content, t2.index, closeQuote); + tokens[item.token].content = replaceAt( + tokens[item.token].content, + item.pos, + openQuote + ); + pos += closeQuote.length - 1; + if (item.token === i2) { + pos += openQuote.length - 1; + } + text = token.content; + max2 = text.length; + stack.length = j2; + continue OUTER; + } + } + } + if (canOpen) { + stack.push({ + token: i2, + pos: t2.index, + single: isSingle2, + level: thisLevel + }); + } else if (canClose && isSingle2) { + token.content = replaceAt(token.content, t2.index, APOSTROPHE); + } + } + } + } + module2.exports = function smartquotes(state) { + var blkIdx; + if (!state.md.options.typographer) { + return; + } + for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { + if (state.tokens[blkIdx].type !== "inline" || !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) { + continue; + } + process_inlines(state.tokens[blkIdx].children, state); + } + }; + } +}); + +// node_modules/markdown-it/lib/rules_core/text_join.js +var require_text_join = __commonJS({ + "node_modules/markdown-it/lib/rules_core/text_join.js"(exports, module2) { + "use strict"; + module2.exports = function text_join(state) { + var j2, l2, tokens, curr, max2, last2, blockTokens = state.tokens; + for (j2 = 0, l2 = blockTokens.length; j2 < l2; j2++) { + if (blockTokens[j2].type !== "inline") + continue; + tokens = blockTokens[j2].children; + max2 = tokens.length; + for (curr = 0; curr < max2; curr++) { + if (tokens[curr].type === "text_special") { + tokens[curr].type = "text"; + } + } + for (curr = last2 = 0; curr < max2; curr++) { + if (tokens[curr].type === "text" && curr + 1 < max2 && tokens[curr + 1].type === "text") { + tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content; + } else { + if (curr !== last2) { + tokens[last2] = tokens[curr]; + } + last2++; + } + } + if (curr !== last2) { + tokens.length = last2; + } + } + }; + } +}); + +// node_modules/markdown-it/lib/token.js +var require_token = __commonJS({ + "node_modules/markdown-it/lib/token.js"(exports, module2) { + "use strict"; + function Token(type, tag, nesting) { + this.type = type; + this.tag = tag; + this.attrs = null; + this.map = null; + this.nesting = nesting; + this.level = 0; + this.children = null; + this.content = ""; + this.markup = ""; + this.info = ""; + this.meta = null; + this.block = false; + this.hidden = false; + } + Token.prototype.attrIndex = function attrIndex(name) { + var attrs, i2, len; + if (!this.attrs) { + return -1; + } + attrs = this.attrs; + for (i2 = 0, len = attrs.length; i2 < len; i2++) { + if (attrs[i2][0] === name) { + return i2; + } + } + return -1; + }; + Token.prototype.attrPush = function attrPush(attrData) { + if (this.attrs) { + this.attrs.push(attrData); + } else { + this.attrs = [attrData]; + } + }; + Token.prototype.attrSet = function attrSet(name, value) { + var idx = this.attrIndex(name), attrData = [name, value]; + if (idx < 0) { + this.attrPush(attrData); + } else { + this.attrs[idx] = attrData; + } + }; + Token.prototype.attrGet = function attrGet(name) { + var idx = this.attrIndex(name), value = null; + if (idx >= 0) { + value = this.attrs[idx][1]; + } + return value; + }; + Token.prototype.attrJoin = function attrJoin(name, value) { + var idx = this.attrIndex(name); + if (idx < 0) { + this.attrPush([name, value]); + } else { + this.attrs[idx][1] = this.attrs[idx][1] + " " + value; + } + }; + module2.exports = Token; + } +}); + +// node_modules/markdown-it/lib/rules_core/state_core.js +var require_state_core = __commonJS({ + "node_modules/markdown-it/lib/rules_core/state_core.js"(exports, module2) { + "use strict"; + var Token = require_token(); + function StateCore(src, md, env) { + this.src = src; + this.env = env; + this.tokens = []; + this.inlineMode = false; + this.md = md; + } + StateCore.prototype.Token = Token; + module2.exports = StateCore; + } +}); + +// node_modules/markdown-it/lib/parser_core.js +var require_parser_core = __commonJS({ + "node_modules/markdown-it/lib/parser_core.js"(exports, module2) { + "use strict"; + var Ruler = require_ruler(); + var _rules = [ + ["normalize", require_normalize()], + ["block", require_block()], + ["inline", require_inline()], + ["linkify", require_linkify()], + ["replacements", require_replacements()], + ["smartquotes", require_smartquotes()], + ["text_join", require_text_join()] + ]; + function Core() { + this.ruler = new Ruler(); + for (var i2 = 0; i2 < _rules.length; i2++) { + this.ruler.push(_rules[i2][0], _rules[i2][1]); + } + } + Core.prototype.process = function(state) { + var i2, l2, rules; + rules = this.ruler.getRules(""); + for (i2 = 0, l2 = rules.length; i2 < l2; i2++) { + rules[i2](state); + } + }; + Core.prototype.State = require_state_core(); + module2.exports = Core; + } +}); + +// node_modules/markdown-it/lib/rules_block/table.js +var require_table = __commonJS({ + "node_modules/markdown-it/lib/rules_block/table.js"(exports, module2) { + "use strict"; + var isSpace = require_utils().isSpace; + function getLine(state, line) { + var pos = state.bMarks[line] + state.tShift[line], max2 = state.eMarks[line]; + return state.src.slice(pos, max2); + } + function escapedSplit(str) { + var result = [], pos = 0, max2 = str.length, ch, isEscaped = false, lastPos = 0, current = ""; + ch = str.charCodeAt(pos); + while (pos < max2) { + if (ch === 124) { + if (!isEscaped) { + result.push(current + str.substring(lastPos, pos)); + current = ""; + lastPos = pos + 1; + } else { + current += str.substring(lastPos, pos - 1); + lastPos = pos; + } + } + isEscaped = ch === 92; + pos++; + ch = str.charCodeAt(pos); + } + result.push(current + str.substring(lastPos)); + return result; + } + module2.exports = function table(state, startLine, endLine, silent) { + var ch, lineText, pos, i2, l2, nextLine, columns, columnCount, token, aligns, t2, tableLines, tbodyLines, oldParentType, terminate, terminatorRules, firstCh, secondCh; + if (startLine + 2 > endLine) { + return false; + } + nextLine = startLine + 1; + if (state.sCount[nextLine] < state.blkIndent) { + return false; + } + if (state.sCount[nextLine] - state.blkIndent >= 4) { + return false; + } + pos = state.bMarks[nextLine] + state.tShift[nextLine]; + if (pos >= state.eMarks[nextLine]) { + return false; + } + firstCh = state.src.charCodeAt(pos++); + if (firstCh !== 124 && firstCh !== 45 && firstCh !== 58) { + return false; + } + if (pos >= state.eMarks[nextLine]) { + return false; + } + secondCh = state.src.charCodeAt(pos++); + if (secondCh !== 124 && secondCh !== 45 && secondCh !== 58 && !isSpace(secondCh)) { + return false; + } + if (firstCh === 45 && isSpace(secondCh)) { + return false; + } + while (pos < state.eMarks[nextLine]) { + ch = state.src.charCodeAt(pos); + if (ch !== 124 && ch !== 45 && ch !== 58 && !isSpace(ch)) { + return false; + } + pos++; + } + lineText = getLine(state, startLine + 1); + columns = lineText.split("|"); + aligns = []; + for (i2 = 0; i2 < columns.length; i2++) { + t2 = columns[i2].trim(); + if (!t2) { + if (i2 === 0 || i2 === columns.length - 1) { + continue; + } else { + return false; + } + } + if (!/^:?-+:?$/.test(t2)) { + return false; + } + if (t2.charCodeAt(t2.length - 1) === 58) { + aligns.push(t2.charCodeAt(0) === 58 ? "center" : "right"); + } else if (t2.charCodeAt(0) === 58) { + aligns.push("left"); + } else { + aligns.push(""); + } + } + lineText = getLine(state, startLine).trim(); + if (lineText.indexOf("|") === -1) { + return false; + } + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + columns = escapedSplit(lineText); + if (columns.length && columns[0] === "") + columns.shift(); + if (columns.length && columns[columns.length - 1] === "") + columns.pop(); + columnCount = columns.length; + if (columnCount === 0 || columnCount !== aligns.length) { + return false; + } + if (silent) { + return true; + } + oldParentType = state.parentType; + state.parentType = "table"; + terminatorRules = state.md.block.ruler.getRules("blockquote"); + token = state.push("table_open", "table", 1); + token.map = tableLines = [startLine, 0]; + token = state.push("thead_open", "thead", 1); + token.map = [startLine, startLine + 1]; + token = state.push("tr_open", "tr", 1); + token.map = [startLine, startLine + 1]; + for (i2 = 0; i2 < columns.length; i2++) { + token = state.push("th_open", "th", 1); + if (aligns[i2]) { + token.attrs = [["style", "text-align:" + aligns[i2]]]; + } + token = state.push("inline", "", 0); + token.content = columns[i2].trim(); + token.children = []; + token = state.push("th_close", "th", -1); + } + token = state.push("tr_close", "tr", -1); + token = state.push("thead_close", "thead", -1); + for (nextLine = startLine + 2; nextLine < endLine; nextLine++) { + if (state.sCount[nextLine] < state.blkIndent) { + break; + } + terminate = false; + for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) { + if (terminatorRules[i2](state, nextLine, endLine, true)) { + terminate = true; + break; + } + } + if (terminate) { + break; + } + lineText = getLine(state, nextLine).trim(); + if (!lineText) { + break; + } + if (state.sCount[nextLine] - state.blkIndent >= 4) { + break; + } + columns = escapedSplit(lineText); + if (columns.length && columns[0] === "") + columns.shift(); + if (columns.length && columns[columns.length - 1] === "") + columns.pop(); + if (nextLine === startLine + 2) { + token = state.push("tbody_open", "tbody", 1); + token.map = tbodyLines = [startLine + 2, 0]; + } + token = state.push("tr_open", "tr", 1); + token.map = [nextLine, nextLine + 1]; + for (i2 = 0; i2 < columnCount; i2++) { + token = state.push("td_open", "td", 1); + if (aligns[i2]) { + token.attrs = [["style", "text-align:" + aligns[i2]]]; + } + token = state.push("inline", "", 0); + token.content = columns[i2] ? columns[i2].trim() : ""; + token.children = []; + token = state.push("td_close", "td", -1); + } + token = state.push("tr_close", "tr", -1); + } + if (tbodyLines) { + token = state.push("tbody_close", "tbody", -1); + tbodyLines[1] = nextLine; + } + token = state.push("table_close", "table", -1); + tableLines[1] = nextLine; + state.parentType = oldParentType; + state.line = nextLine; + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_block/code.js +var require_code = __commonJS({ + "node_modules/markdown-it/lib/rules_block/code.js"(exports, module2) { + "use strict"; + module2.exports = function code(state, startLine, endLine) { + var nextLine, last2, token; + if (state.sCount[startLine] - state.blkIndent < 4) { + return false; + } + last2 = nextLine = startLine + 1; + while (nextLine < endLine) { + if (state.isEmpty(nextLine)) { + nextLine++; + continue; + } + if (state.sCount[nextLine] - state.blkIndent >= 4) { + nextLine++; + last2 = nextLine; + continue; + } + break; + } + state.line = last2; + token = state.push("code_block", "code", 0); + token.content = state.getLines(startLine, last2, 4 + state.blkIndent, false) + "\n"; + token.map = [startLine, state.line]; + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_block/fence.js +var require_fence = __commonJS({ + "node_modules/markdown-it/lib/rules_block/fence.js"(exports, module2) { + "use strict"; + module2.exports = function fence(state, startLine, endLine, silent) { + var marker, len, params, nextLine, mem, token, markup, haveEndMarker = false, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine]; + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + if (pos + 3 > max2) { + return false; + } + marker = state.src.charCodeAt(pos); + if (marker !== 126 && marker !== 96) { + return false; + } + mem = pos; + pos = state.skipChars(pos, marker); + len = pos - mem; + if (len < 3) { + return false; + } + markup = state.src.slice(mem, pos); + params = state.src.slice(pos, max2); + if (marker === 96) { + if (params.indexOf(String.fromCharCode(marker)) >= 0) { + return false; + } + } + if (silent) { + return true; + } + nextLine = startLine; + for (; ; ) { + nextLine++; + if (nextLine >= endLine) { + break; + } + pos = mem = state.bMarks[nextLine] + state.tShift[nextLine]; + max2 = state.eMarks[nextLine]; + if (pos < max2 && state.sCount[nextLine] < state.blkIndent) { + break; + } + if (state.src.charCodeAt(pos) !== marker) { + continue; + } + if (state.sCount[nextLine] - state.blkIndent >= 4) { + continue; + } + pos = state.skipChars(pos, marker); + if (pos - mem < len) { + continue; + } + pos = state.skipSpaces(pos); + if (pos < max2) { + continue; + } + haveEndMarker = true; + break; + } + len = state.sCount[startLine]; + state.line = nextLine + (haveEndMarker ? 1 : 0); + token = state.push("fence", "code", 0); + token.info = params; + token.content = state.getLines(startLine + 1, nextLine, len, true); + token.markup = markup; + token.map = [startLine, state.line]; + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_block/blockquote.js +var require_blockquote = __commonJS({ + "node_modules/markdown-it/lib/rules_block/blockquote.js"(exports, module2) { + "use strict"; + var isSpace = require_utils().isSpace; + module2.exports = function blockquote(state, startLine, endLine, silent) { + var adjustTab, ch, i2, initial, l2, lastLineEmpty, lines, nextLine, offset, oldBMarks, oldBSCount, oldIndent, oldParentType, oldSCount, oldTShift, spaceAfterMarker, terminate, terminatorRules, token, isOutdented, oldLineMax = state.lineMax, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine]; + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + if (state.src.charCodeAt(pos++) !== 62) { + return false; + } + if (silent) { + return true; + } + initial = offset = state.sCount[startLine] + 1; + if (state.src.charCodeAt(pos) === 32) { + pos++; + initial++; + offset++; + adjustTab = false; + spaceAfterMarker = true; + } else if (state.src.charCodeAt(pos) === 9) { + spaceAfterMarker = true; + if ((state.bsCount[startLine] + offset) % 4 === 3) { + pos++; + initial++; + offset++; + adjustTab = false; + } else { + adjustTab = true; + } + } else { + spaceAfterMarker = false; + } + oldBMarks = [state.bMarks[startLine]]; + state.bMarks[startLine] = pos; + while (pos < max2) { + ch = state.src.charCodeAt(pos); + if (isSpace(ch)) { + if (ch === 9) { + offset += 4 - (offset + state.bsCount[startLine] + (adjustTab ? 1 : 0)) % 4; + } else { + offset++; + } + } else { + break; + } + pos++; + } + oldBSCount = [state.bsCount[startLine]]; + state.bsCount[startLine] = state.sCount[startLine] + 1 + (spaceAfterMarker ? 1 : 0); + lastLineEmpty = pos >= max2; + oldSCount = [state.sCount[startLine]]; + state.sCount[startLine] = offset - initial; + oldTShift = [state.tShift[startLine]]; + state.tShift[startLine] = pos - state.bMarks[startLine]; + terminatorRules = state.md.block.ruler.getRules("blockquote"); + oldParentType = state.parentType; + state.parentType = "blockquote"; + for (nextLine = startLine + 1; nextLine < endLine; nextLine++) { + isOutdented = state.sCount[nextLine] < state.blkIndent; + pos = state.bMarks[nextLine] + state.tShift[nextLine]; + max2 = state.eMarks[nextLine]; + if (pos >= max2) { + break; + } + if (state.src.charCodeAt(pos++) === 62 && !isOutdented) { + initial = offset = state.sCount[nextLine] + 1; + if (state.src.charCodeAt(pos) === 32) { + pos++; + initial++; + offset++; + adjustTab = false; + spaceAfterMarker = true; + } else if (state.src.charCodeAt(pos) === 9) { + spaceAfterMarker = true; + if ((state.bsCount[nextLine] + offset) % 4 === 3) { + pos++; + initial++; + offset++; + adjustTab = false; + } else { + adjustTab = true; + } + } else { + spaceAfterMarker = false; + } + oldBMarks.push(state.bMarks[nextLine]); + state.bMarks[nextLine] = pos; + while (pos < max2) { + ch = state.src.charCodeAt(pos); + if (isSpace(ch)) { + if (ch === 9) { + offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4; + } else { + offset++; + } + } else { + break; + } + pos++; + } + lastLineEmpty = pos >= max2; + oldBSCount.push(state.bsCount[nextLine]); + state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0); + oldSCount.push(state.sCount[nextLine]); + state.sCount[nextLine] = offset - initial; + oldTShift.push(state.tShift[nextLine]); + state.tShift[nextLine] = pos - state.bMarks[nextLine]; + continue; + } + if (lastLineEmpty) { + break; + } + terminate = false; + for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) { + if (terminatorRules[i2](state, nextLine, endLine, true)) { + terminate = true; + break; + } + } + if (terminate) { + state.lineMax = nextLine; + if (state.blkIndent !== 0) { + oldBMarks.push(state.bMarks[nextLine]); + oldBSCount.push(state.bsCount[nextLine]); + oldTShift.push(state.tShift[nextLine]); + oldSCount.push(state.sCount[nextLine]); + state.sCount[nextLine] -= state.blkIndent; + } + break; + } + oldBMarks.push(state.bMarks[nextLine]); + oldBSCount.push(state.bsCount[nextLine]); + oldTShift.push(state.tShift[nextLine]); + oldSCount.push(state.sCount[nextLine]); + state.sCount[nextLine] = -1; + } + oldIndent = state.blkIndent; + state.blkIndent = 0; + token = state.push("blockquote_open", "blockquote", 1); + token.markup = ">"; + token.map = lines = [startLine, 0]; + state.md.block.tokenize(state, startLine, nextLine); + token = state.push("blockquote_close", "blockquote", -1); + token.markup = ">"; + state.lineMax = oldLineMax; + state.parentType = oldParentType; + lines[1] = state.line; + for (i2 = 0; i2 < oldTShift.length; i2++) { + state.bMarks[i2 + startLine] = oldBMarks[i2]; + state.tShift[i2 + startLine] = oldTShift[i2]; + state.sCount[i2 + startLine] = oldSCount[i2]; + state.bsCount[i2 + startLine] = oldBSCount[i2]; + } + state.blkIndent = oldIndent; + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_block/hr.js +var require_hr = __commonJS({ + "node_modules/markdown-it/lib/rules_block/hr.js"(exports, module2) { + "use strict"; + var isSpace = require_utils().isSpace; + module2.exports = function hr(state, startLine, endLine, silent) { + var marker, cnt, ch, token, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine]; + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + marker = state.src.charCodeAt(pos++); + if (marker !== 42 && marker !== 45 && marker !== 95) { + return false; + } + cnt = 1; + while (pos < max2) { + ch = state.src.charCodeAt(pos++); + if (ch !== marker && !isSpace(ch)) { + return false; + } + if (ch === marker) { + cnt++; + } + } + if (cnt < 3) { + return false; + } + if (silent) { + return true; + } + state.line = startLine + 1; + token = state.push("hr", "hr", 0); + token.map = [startLine, state.line]; + token.markup = Array(cnt + 1).join(String.fromCharCode(marker)); + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_block/list.js +var require_list = __commonJS({ + "node_modules/markdown-it/lib/rules_block/list.js"(exports, module2) { + "use strict"; + var isSpace = require_utils().isSpace; + function skipBulletListMarker(state, startLine) { + var marker, pos, max2, ch; + pos = state.bMarks[startLine] + state.tShift[startLine]; + max2 = state.eMarks[startLine]; + marker = state.src.charCodeAt(pos++); + if (marker !== 42 && marker !== 45 && marker !== 43) { + return -1; + } + if (pos < max2) { + ch = state.src.charCodeAt(pos); + if (!isSpace(ch)) { + return -1; + } + } + return pos; + } + function skipOrderedListMarker(state, startLine) { + var ch, start = state.bMarks[startLine] + state.tShift[startLine], pos = start, max2 = state.eMarks[startLine]; + if (pos + 1 >= max2) { + return -1; + } + ch = state.src.charCodeAt(pos++); + if (ch < 48 || ch > 57) { + return -1; + } + for (; ; ) { + if (pos >= max2) { + return -1; + } + ch = state.src.charCodeAt(pos++); + if (ch >= 48 && ch <= 57) { + if (pos - start >= 10) { + return -1; + } + continue; + } + if (ch === 41 || ch === 46) { + break; + } + return -1; + } + if (pos < max2) { + ch = state.src.charCodeAt(pos); + if (!isSpace(ch)) { + return -1; + } + } + return pos; + } + function markTightParagraphs(state, idx) { + var i2, l2, level = state.level + 2; + for (i2 = idx + 2, l2 = state.tokens.length - 2; i2 < l2; i2++) { + if (state.tokens[i2].level === level && state.tokens[i2].type === "paragraph_open") { + state.tokens[i2 + 2].hidden = true; + state.tokens[i2].hidden = true; + i2 += 2; + } + } + } + module2.exports = function list(state, startLine, endLine, silent) { + var ch, contentStart, i2, indent, indentAfterMarker, initial, isOrdered, itemLines, l2, listLines, listTokIdx, markerCharCode, markerValue, max2, nextLine, offset, oldListIndent, oldParentType, oldSCount, oldTShift, oldTight, pos, posAfterMarker, prevEmptyEnd, start, terminate, terminatorRules, token, isTerminatingParagraph = false, tight = true; + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + if (state.listIndent >= 0 && state.sCount[startLine] - state.listIndent >= 4 && state.sCount[startLine] < state.blkIndent) { + return false; + } + if (silent && state.parentType === "paragraph") { + if (state.sCount[startLine] >= state.blkIndent) { + isTerminatingParagraph = true; + } + } + if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) { + isOrdered = true; + start = state.bMarks[startLine] + state.tShift[startLine]; + markerValue = Number(state.src.slice(start, posAfterMarker - 1)); + if (isTerminatingParagraph && markerValue !== 1) + return false; + } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) { + isOrdered = false; + } else { + return false; + } + if (isTerminatingParagraph) { + if (state.skipSpaces(posAfterMarker) >= state.eMarks[startLine]) + return false; + } + markerCharCode = state.src.charCodeAt(posAfterMarker - 1); + if (silent) { + return true; + } + listTokIdx = state.tokens.length; + if (isOrdered) { + token = state.push("ordered_list_open", "ol", 1); + if (markerValue !== 1) { + token.attrs = [["start", markerValue]]; + } + } else { + token = state.push("bullet_list_open", "ul", 1); + } + token.map = listLines = [startLine, 0]; + token.markup = String.fromCharCode(markerCharCode); + nextLine = startLine; + prevEmptyEnd = false; + terminatorRules = state.md.block.ruler.getRules("list"); + oldParentType = state.parentType; + state.parentType = "list"; + while (nextLine < endLine) { + pos = posAfterMarker; + max2 = state.eMarks[nextLine]; + initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]); + while (pos < max2) { + ch = state.src.charCodeAt(pos); + if (ch === 9) { + offset += 4 - (offset + state.bsCount[nextLine]) % 4; + } else if (ch === 32) { + offset++; + } else { + break; + } + pos++; + } + contentStart = pos; + if (contentStart >= max2) { + indentAfterMarker = 1; + } else { + indentAfterMarker = offset - initial; + } + if (indentAfterMarker > 4) { + indentAfterMarker = 1; + } + indent = initial + indentAfterMarker; + token = state.push("list_item_open", "li", 1); + token.markup = String.fromCharCode(markerCharCode); + token.map = itemLines = [startLine, 0]; + if (isOrdered) { + token.info = state.src.slice(start, posAfterMarker - 1); + } + oldTight = state.tight; + oldTShift = state.tShift[startLine]; + oldSCount = state.sCount[startLine]; + oldListIndent = state.listIndent; + state.listIndent = state.blkIndent; + state.blkIndent = indent; + state.tight = true; + state.tShift[startLine] = contentStart - state.bMarks[startLine]; + state.sCount[startLine] = offset; + if (contentStart >= max2 && state.isEmpty(startLine + 1)) { + state.line = Math.min(state.line + 2, endLine); + } else { + state.md.block.tokenize(state, startLine, endLine, true); + } + if (!state.tight || prevEmptyEnd) { + tight = false; + } + prevEmptyEnd = state.line - startLine > 1 && state.isEmpty(state.line - 1); + state.blkIndent = state.listIndent; + state.listIndent = oldListIndent; + state.tShift[startLine] = oldTShift; + state.sCount[startLine] = oldSCount; + state.tight = oldTight; + token = state.push("list_item_close", "li", -1); + token.markup = String.fromCharCode(markerCharCode); + nextLine = startLine = state.line; + itemLines[1] = nextLine; + contentStart = state.bMarks[startLine]; + if (nextLine >= endLine) { + break; + } + if (state.sCount[nextLine] < state.blkIndent) { + break; + } + if (state.sCount[startLine] - state.blkIndent >= 4) { + break; + } + terminate = false; + for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) { + if (terminatorRules[i2](state, nextLine, endLine, true)) { + terminate = true; + break; + } + } + if (terminate) { + break; + } + if (isOrdered) { + posAfterMarker = skipOrderedListMarker(state, nextLine); + if (posAfterMarker < 0) { + break; + } + start = state.bMarks[nextLine] + state.tShift[nextLine]; + } else { + posAfterMarker = skipBulletListMarker(state, nextLine); + if (posAfterMarker < 0) { + break; + } + } + if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { + break; + } + } + if (isOrdered) { + token = state.push("ordered_list_close", "ol", -1); + } else { + token = state.push("bullet_list_close", "ul", -1); + } + token.markup = String.fromCharCode(markerCharCode); + listLines[1] = nextLine; + state.line = nextLine; + state.parentType = oldParentType; + if (tight) { + markTightParagraphs(state, listTokIdx); + } + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_block/reference.js +var require_reference = __commonJS({ + "node_modules/markdown-it/lib/rules_block/reference.js"(exports, module2) { + "use strict"; + var normalizeReference = require_utils().normalizeReference; + var isSpace = require_utils().isSpace; + module2.exports = function reference(state, startLine, _endLine, silent) { + var ch, destEndPos, destEndLineNo, endLine, href, i2, l2, label, labelEnd, oldParentType, res, start, str, terminate, terminatorRules, title, lines = 0, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine], nextLine = startLine + 1; + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + if (state.src.charCodeAt(pos) !== 91) { + return false; + } + while (++pos < max2) { + if (state.src.charCodeAt(pos) === 93 && state.src.charCodeAt(pos - 1) !== 92) { + if (pos + 1 === max2) { + return false; + } + if (state.src.charCodeAt(pos + 1) !== 58) { + return false; + } + break; + } + } + endLine = state.lineMax; + terminatorRules = state.md.block.ruler.getRules("reference"); + oldParentType = state.parentType; + state.parentType = "reference"; + for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) { + if (state.sCount[nextLine] - state.blkIndent > 3) { + continue; + } + if (state.sCount[nextLine] < 0) { + continue; + } + terminate = false; + for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) { + if (terminatorRules[i2](state, nextLine, endLine, true)) { + terminate = true; + break; + } + } + if (terminate) { + break; + } + } + str = state.getLines(startLine, nextLine, state.blkIndent, false).trim(); + max2 = str.length; + for (pos = 1; pos < max2; pos++) { + ch = str.charCodeAt(pos); + if (ch === 91) { + return false; + } else if (ch === 93) { + labelEnd = pos; + break; + } else if (ch === 10) { + lines++; + } else if (ch === 92) { + pos++; + if (pos < max2 && str.charCodeAt(pos) === 10) { + lines++; + } + } + } + if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 58) { + return false; + } + for (pos = labelEnd + 2; pos < max2; pos++) { + ch = str.charCodeAt(pos); + if (ch === 10) { + lines++; + } else if (isSpace(ch)) { + } else { + break; + } + } + res = state.md.helpers.parseLinkDestination(str, pos, max2); + if (!res.ok) { + return false; + } + href = state.md.normalizeLink(res.str); + if (!state.md.validateLink(href)) { + return false; + } + pos = res.pos; + lines += res.lines; + destEndPos = pos; + destEndLineNo = lines; + start = pos; + for (; pos < max2; pos++) { + ch = str.charCodeAt(pos); + if (ch === 10) { + lines++; + } else if (isSpace(ch)) { + } else { + break; + } + } + res = state.md.helpers.parseLinkTitle(str, pos, max2); + if (pos < max2 && start !== pos && res.ok) { + title = res.str; + pos = res.pos; + lines += res.lines; + } else { + title = ""; + pos = destEndPos; + lines = destEndLineNo; + } + while (pos < max2) { + ch = str.charCodeAt(pos); + if (!isSpace(ch)) { + break; + } + pos++; + } + if (pos < max2 && str.charCodeAt(pos) !== 10) { + if (title) { + title = ""; + pos = destEndPos; + lines = destEndLineNo; + while (pos < max2) { + ch = str.charCodeAt(pos); + if (!isSpace(ch)) { + break; + } + pos++; + } + } + } + if (pos < max2 && str.charCodeAt(pos) !== 10) { + return false; + } + label = normalizeReference(str.slice(1, labelEnd)); + if (!label) { + return false; + } + if (silent) { + return true; + } + if (typeof state.env.references === "undefined") { + state.env.references = {}; + } + if (typeof state.env.references[label] === "undefined") { + state.env.references[label] = { title, href }; + } + state.parentType = oldParentType; + state.line = startLine + lines + 1; + return true; + }; + } +}); + +// node_modules/markdown-it/lib/common/html_blocks.js +var require_html_blocks = __commonJS({ + "node_modules/markdown-it/lib/common/html_blocks.js"(exports, module2) { + "use strict"; + module2.exports = [ + "address", + "article", + "aside", + "base", + "basefont", + "blockquote", + "body", + "caption", + "center", + "col", + "colgroup", + "dd", + "details", + "dialog", + "dir", + "div", + "dl", + "dt", + "fieldset", + "figcaption", + "figure", + "footer", + "form", + "frame", + "frameset", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "head", + "header", + "hr", + "html", + "iframe", + "legend", + "li", + "link", + "main", + "menu", + "menuitem", + "nav", + "noframes", + "ol", + "optgroup", + "option", + "p", + "param", + "section", + "source", + "summary", + "table", + "tbody", + "td", + "tfoot", + "th", + "thead", + "title", + "tr", + "track", + "ul" + ]; + } +}); + +// node_modules/markdown-it/lib/common/html_re.js +var require_html_re = __commonJS({ + "node_modules/markdown-it/lib/common/html_re.js"(exports, module2) { + "use strict"; + var attr_name = "[a-zA-Z_:][a-zA-Z0-9:._-]*"; + var unquoted = "[^\"'=<>`\\x00-\\x20]+"; + var single_quoted = "'[^']*'"; + var double_quoted = '"[^"]*"'; + var attr_value = "(?:" + unquoted + "|" + single_quoted + "|" + double_quoted + ")"; + var attribute = "(?:\\s+" + attr_name + "(?:\\s*=\\s*" + attr_value + ")?)"; + var open_tag = "<[A-Za-z][A-Za-z0-9\\-]*" + attribute + "*\\s*\\/?>"; + var close_tag = "<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>"; + var comment = "|"; + var processing = "<[?][\\s\\S]*?[?]>"; + var declaration = "]*>"; + var cdata = ""; + var HTML_TAG_RE = new RegExp("^(?:" + open_tag + "|" + close_tag + "|" + comment + "|" + processing + "|" + declaration + "|" + cdata + ")"); + var HTML_OPEN_CLOSE_TAG_RE = new RegExp("^(?:" + open_tag + "|" + close_tag + ")"); + module2.exports.HTML_TAG_RE = HTML_TAG_RE; + module2.exports.HTML_OPEN_CLOSE_TAG_RE = HTML_OPEN_CLOSE_TAG_RE; + } +}); + +// node_modules/markdown-it/lib/rules_block/html_block.js +var require_html_block = __commonJS({ + "node_modules/markdown-it/lib/rules_block/html_block.js"(exports, module2) { + "use strict"; + var block_names = require_html_blocks(); + var HTML_OPEN_CLOSE_TAG_RE = require_html_re().HTML_OPEN_CLOSE_TAG_RE; + var HTML_SEQUENCES = [ + [/^<(script|pre|style|textarea)(?=(\s|>|$))/i, /<\/(script|pre|style|textarea)>/i, true], + [/^/, true], + [/^<\?/, /\?>/, true], + [/^/, true], + [/^/, true], + [new RegExp("^|$))", "i"), /^$/, true], + [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + "\\s*$"), /^$/, false] + ]; + module2.exports = function html_block(state, startLine, endLine, silent) { + var i2, nextLine, token, lineText, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine]; + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + if (!state.md.options.html) { + return false; + } + if (state.src.charCodeAt(pos) !== 60) { + return false; + } + lineText = state.src.slice(pos, max2); + for (i2 = 0; i2 < HTML_SEQUENCES.length; i2++) { + if (HTML_SEQUENCES[i2][0].test(lineText)) { + break; + } + } + if (i2 === HTML_SEQUENCES.length) { + return false; + } + if (silent) { + return HTML_SEQUENCES[i2][2]; + } + nextLine = startLine + 1; + if (!HTML_SEQUENCES[i2][1].test(lineText)) { + for (; nextLine < endLine; nextLine++) { + if (state.sCount[nextLine] < state.blkIndent) { + break; + } + pos = state.bMarks[nextLine] + state.tShift[nextLine]; + max2 = state.eMarks[nextLine]; + lineText = state.src.slice(pos, max2); + if (HTML_SEQUENCES[i2][1].test(lineText)) { + if (lineText.length !== 0) { + nextLine++; + } + break; + } + } + } + state.line = nextLine; + token = state.push("html_block", "", 0); + token.map = [startLine, nextLine]; + token.content = state.getLines(startLine, nextLine, state.blkIndent, true); + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_block/heading.js +var require_heading = __commonJS({ + "node_modules/markdown-it/lib/rules_block/heading.js"(exports, module2) { + "use strict"; + var isSpace = require_utils().isSpace; + module2.exports = function heading(state, startLine, endLine, silent) { + var ch, level, tmp, token, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine]; + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + ch = state.src.charCodeAt(pos); + if (ch !== 35 || pos >= max2) { + return false; + } + level = 1; + ch = state.src.charCodeAt(++pos); + while (ch === 35 && pos < max2 && level <= 6) { + level++; + ch = state.src.charCodeAt(++pos); + } + if (level > 6 || pos < max2 && !isSpace(ch)) { + return false; + } + if (silent) { + return true; + } + max2 = state.skipSpacesBack(max2, pos); + tmp = state.skipCharsBack(max2, 35, pos); + if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) { + max2 = tmp; + } + state.line = startLine + 1; + token = state.push("heading_open", "h" + String(level), 1); + token.markup = "########".slice(0, level); + token.map = [startLine, state.line]; + token = state.push("inline", "", 0); + token.content = state.src.slice(pos, max2).trim(); + token.map = [startLine, state.line]; + token.children = []; + token = state.push("heading_close", "h" + String(level), -1); + token.markup = "########".slice(0, level); + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_block/lheading.js +var require_lheading = __commonJS({ + "node_modules/markdown-it/lib/rules_block/lheading.js"(exports, module2) { + "use strict"; + module2.exports = function lheading(state, startLine, endLine) { + var content, terminate, i2, l2, token, pos, max2, level, marker, nextLine = startLine + 1, oldParentType, terminatorRules = state.md.block.ruler.getRules("paragraph"); + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + oldParentType = state.parentType; + state.parentType = "paragraph"; + for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) { + if (state.sCount[nextLine] - state.blkIndent > 3) { + continue; + } + if (state.sCount[nextLine] >= state.blkIndent) { + pos = state.bMarks[nextLine] + state.tShift[nextLine]; + max2 = state.eMarks[nextLine]; + if (pos < max2) { + marker = state.src.charCodeAt(pos); + if (marker === 45 || marker === 61) { + pos = state.skipChars(pos, marker); + pos = state.skipSpaces(pos); + if (pos >= max2) { + level = marker === 61 ? 1 : 2; + break; + } + } + } + } + if (state.sCount[nextLine] < 0) { + continue; + } + terminate = false; + for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) { + if (terminatorRules[i2](state, nextLine, endLine, true)) { + terminate = true; + break; + } + } + if (terminate) { + break; + } + } + if (!level) { + return false; + } + content = state.getLines(startLine, nextLine, state.blkIndent, false).trim(); + state.line = nextLine + 1; + token = state.push("heading_open", "h" + String(level), 1); + token.markup = String.fromCharCode(marker); + token.map = [startLine, state.line]; + token = state.push("inline", "", 0); + token.content = content; + token.map = [startLine, state.line - 1]; + token.children = []; + token = state.push("heading_close", "h" + String(level), -1); + token.markup = String.fromCharCode(marker); + state.parentType = oldParentType; + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_block/paragraph.js +var require_paragraph = __commonJS({ + "node_modules/markdown-it/lib/rules_block/paragraph.js"(exports, module2) { + "use strict"; + module2.exports = function paragraph(state, startLine) { + var content, terminate, i2, l2, token, oldParentType, nextLine = startLine + 1, terminatorRules = state.md.block.ruler.getRules("paragraph"), endLine = state.lineMax; + oldParentType = state.parentType; + state.parentType = "paragraph"; + for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) { + if (state.sCount[nextLine] - state.blkIndent > 3) { + continue; + } + if (state.sCount[nextLine] < 0) { + continue; + } + terminate = false; + for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) { + if (terminatorRules[i2](state, nextLine, endLine, true)) { + terminate = true; + break; + } + } + if (terminate) { + break; + } + } + content = state.getLines(startLine, nextLine, state.blkIndent, false).trim(); + state.line = nextLine; + token = state.push("paragraph_open", "p", 1); + token.map = [startLine, state.line]; + token = state.push("inline", "", 0); + token.content = content; + token.map = [startLine, state.line]; + token.children = []; + token = state.push("paragraph_close", "p", -1); + state.parentType = oldParentType; + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_block/state_block.js +var require_state_block = __commonJS({ + "node_modules/markdown-it/lib/rules_block/state_block.js"(exports, module2) { + "use strict"; + var Token = require_token(); + var isSpace = require_utils().isSpace; + function StateBlock(src, md, env, tokens) { + var ch, s2, start, pos, len, indent, offset, indent_found; + this.src = src; + this.md = md; + this.env = env; + this.tokens = tokens; + this.bMarks = []; + this.eMarks = []; + this.tShift = []; + this.sCount = []; + this.bsCount = []; + this.blkIndent = 0; + this.line = 0; + this.lineMax = 0; + this.tight = false; + this.ddIndent = -1; + this.listIndent = -1; + this.parentType = "root"; + this.level = 0; + this.result = ""; + s2 = this.src; + indent_found = false; + for (start = pos = indent = offset = 0, len = s2.length; pos < len; pos++) { + ch = s2.charCodeAt(pos); + if (!indent_found) { + if (isSpace(ch)) { + indent++; + if (ch === 9) { + offset += 4 - offset % 4; + } else { + offset++; + } + continue; + } else { + indent_found = true; + } + } + if (ch === 10 || pos === len - 1) { + if (ch !== 10) { + pos++; + } + this.bMarks.push(start); + this.eMarks.push(pos); + this.tShift.push(indent); + this.sCount.push(offset); + this.bsCount.push(0); + indent_found = false; + indent = 0; + offset = 0; + start = pos + 1; + } + } + this.bMarks.push(s2.length); + this.eMarks.push(s2.length); + this.tShift.push(0); + this.sCount.push(0); + this.bsCount.push(0); + this.lineMax = this.bMarks.length - 1; + } + StateBlock.prototype.push = function(type, tag, nesting) { + var token = new Token(type, tag, nesting); + token.block = true; + if (nesting < 0) + this.level--; + token.level = this.level; + if (nesting > 0) + this.level++; + this.tokens.push(token); + return token; + }; + StateBlock.prototype.isEmpty = function isEmpty(line) { + return this.bMarks[line] + this.tShift[line] >= this.eMarks[line]; + }; + StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) { + for (var max2 = this.lineMax; from < max2; from++) { + if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) { + break; + } + } + return from; + }; + StateBlock.prototype.skipSpaces = function skipSpaces(pos) { + var ch; + for (var max2 = this.src.length; pos < max2; pos++) { + ch = this.src.charCodeAt(pos); + if (!isSpace(ch)) { + break; + } + } + return pos; + }; + StateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min2) { + if (pos <= min2) { + return pos; + } + while (pos > min2) { + if (!isSpace(this.src.charCodeAt(--pos))) { + return pos + 1; + } + } + return pos; + }; + StateBlock.prototype.skipChars = function skipChars(pos, code) { + for (var max2 = this.src.length; pos < max2; pos++) { + if (this.src.charCodeAt(pos) !== code) { + break; + } + } + return pos; + }; + StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min2) { + if (pos <= min2) { + return pos; + } + while (pos > min2) { + if (code !== this.src.charCodeAt(--pos)) { + return pos + 1; + } + } + return pos; + }; + StateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) { + var i2, lineIndent, ch, first, last2, queue, lineStart, line = begin; + if (begin >= end) { + return ""; + } + queue = new Array(end - begin); + for (i2 = 0; line < end; line++, i2++) { + lineIndent = 0; + lineStart = first = this.bMarks[line]; + if (line + 1 < end || keepLastLF) { + last2 = this.eMarks[line] + 1; + } else { + last2 = this.eMarks[line]; + } + while (first < last2 && lineIndent < indent) { + ch = this.src.charCodeAt(first); + if (isSpace(ch)) { + if (ch === 9) { + lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4; + } else { + lineIndent++; + } + } else if (first - lineStart < this.tShift[line]) { + lineIndent++; + } else { + break; + } + first++; + } + if (lineIndent > indent) { + queue[i2] = new Array(lineIndent - indent + 1).join(" ") + this.src.slice(first, last2); + } else { + queue[i2] = this.src.slice(first, last2); + } + } + return queue.join(""); + }; + StateBlock.prototype.Token = Token; + module2.exports = StateBlock; + } +}); + +// node_modules/markdown-it/lib/parser_block.js +var require_parser_block = __commonJS({ + "node_modules/markdown-it/lib/parser_block.js"(exports, module2) { + "use strict"; + var Ruler = require_ruler(); + var _rules = [ + ["table", require_table(), ["paragraph", "reference"]], + ["code", require_code()], + ["fence", require_fence(), ["paragraph", "reference", "blockquote", "list"]], + ["blockquote", require_blockquote(), ["paragraph", "reference", "blockquote", "list"]], + ["hr", require_hr(), ["paragraph", "reference", "blockquote", "list"]], + ["list", require_list(), ["paragraph", "reference", "blockquote"]], + ["reference", require_reference()], + ["html_block", require_html_block(), ["paragraph", "reference", "blockquote"]], + ["heading", require_heading(), ["paragraph", "reference", "blockquote"]], + ["lheading", require_lheading()], + ["paragraph", require_paragraph()] + ]; + function ParserBlock() { + this.ruler = new Ruler(); + for (var i2 = 0; i2 < _rules.length; i2++) { + this.ruler.push(_rules[i2][0], _rules[i2][1], { alt: (_rules[i2][2] || []).slice() }); + } + } + ParserBlock.prototype.tokenize = function(state, startLine, endLine) { + var ok, i2, rules = this.ruler.getRules(""), len = rules.length, line = startLine, hasEmptyLines = false, maxNesting = state.md.options.maxNesting; + while (line < endLine) { + state.line = line = state.skipEmptyLines(line); + if (line >= endLine) { + break; + } + if (state.sCount[line] < state.blkIndent) { + break; + } + if (state.level >= maxNesting) { + state.line = endLine; + break; + } + for (i2 = 0; i2 < len; i2++) { + ok = rules[i2](state, line, endLine, false); + if (ok) { + break; + } + } + state.tight = !hasEmptyLines; + if (state.isEmpty(state.line - 1)) { + hasEmptyLines = true; + } + line = state.line; + if (line < endLine && state.isEmpty(line)) { + hasEmptyLines = true; + line++; + state.line = line; + } + } + }; + ParserBlock.prototype.parse = function(src, md, env, outTokens) { + var state; + if (!src) { + return; + } + state = new this.State(src, md, env, outTokens); + this.tokenize(state, state.line, state.lineMax); + }; + ParserBlock.prototype.State = require_state_block(); + module2.exports = ParserBlock; + } +}); + +// node_modules/markdown-it/lib/rules_inline/text.js +var require_text = __commonJS({ + "node_modules/markdown-it/lib/rules_inline/text.js"(exports, module2) { + "use strict"; + function isTerminatorChar(ch) { + switch (ch) { + case 10: + case 33: + case 35: + case 36: + case 37: + case 38: + case 42: + case 43: + case 45: + case 58: + case 60: + case 61: + case 62: + case 64: + case 91: + case 92: + case 93: + case 94: + case 95: + case 96: + case 123: + case 125: + case 126: + return true; + default: + return false; + } + } + module2.exports = function text(state, silent) { + var pos = state.pos; + while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) { + pos++; + } + if (pos === state.pos) { + return false; + } + if (!silent) { + state.pending += state.src.slice(state.pos, pos); + } + state.pos = pos; + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_inline/linkify.js +var require_linkify2 = __commonJS({ + "node_modules/markdown-it/lib/rules_inline/linkify.js"(exports, module2) { + "use strict"; + var SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i; + module2.exports = function linkify(state, silent) { + var pos, max2, match, proto, link, url, fullUrl, token; + if (!state.md.options.linkify) + return false; + if (state.linkLevel > 0) + return false; + pos = state.pos; + max2 = state.posMax; + if (pos + 3 > max2) + return false; + if (state.src.charCodeAt(pos) !== 58) + return false; + if (state.src.charCodeAt(pos + 1) !== 47) + return false; + if (state.src.charCodeAt(pos + 2) !== 47) + return false; + match = state.pending.match(SCHEME_RE); + if (!match) + return false; + proto = match[1]; + link = state.md.linkify.matchAtStart(state.src.slice(pos - proto.length)); + if (!link) + return false; + url = link.url; + url = url.replace(/\*+$/, ""); + fullUrl = state.md.normalizeLink(url); + if (!state.md.validateLink(fullUrl)) + return false; + if (!silent) { + state.pending = state.pending.slice(0, -proto.length); + token = state.push("link_open", "a", 1); + token.attrs = [["href", fullUrl]]; + token.markup = "linkify"; + token.info = "auto"; + token = state.push("text", "", 0); + token.content = state.md.normalizeLinkText(url); + token = state.push("link_close", "a", -1); + token.markup = "linkify"; + token.info = "auto"; + } + state.pos += url.length - proto.length; + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_inline/newline.js +var require_newline = __commonJS({ + "node_modules/markdown-it/lib/rules_inline/newline.js"(exports, module2) { + "use strict"; + var isSpace = require_utils().isSpace; + module2.exports = function newline(state, silent) { + var pmax, max2, ws, pos = state.pos; + if (state.src.charCodeAt(pos) !== 10) { + return false; + } + pmax = state.pending.length - 1; + max2 = state.posMax; + if (!silent) { + if (pmax >= 0 && state.pending.charCodeAt(pmax) === 32) { + if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 32) { + ws = pmax - 1; + while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 32) + ws--; + state.pending = state.pending.slice(0, ws); + state.push("hardbreak", "br", 0); + } else { + state.pending = state.pending.slice(0, -1); + state.push("softbreak", "br", 0); + } + } else { + state.push("softbreak", "br", 0); + } + } + pos++; + while (pos < max2 && isSpace(state.src.charCodeAt(pos))) { + pos++; + } + state.pos = pos; + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_inline/escape.js +var require_escape = __commonJS({ + "node_modules/markdown-it/lib/rules_inline/escape.js"(exports, module2) { + "use strict"; + var isSpace = require_utils().isSpace; + var ESCAPED = []; + for (i2 = 0; i2 < 256; i2++) { + ESCAPED.push(0); + } + var i2; + "\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(ch) { + ESCAPED[ch.charCodeAt(0)] = 1; + }); + module2.exports = function escape2(state, silent) { + var ch1, ch2, origStr, escapedStr, token, pos = state.pos, max2 = state.posMax; + if (state.src.charCodeAt(pos) !== 92) + return false; + pos++; + if (pos >= max2) + return false; + ch1 = state.src.charCodeAt(pos); + if (ch1 === 10) { + if (!silent) { + state.push("hardbreak", "br", 0); + } + pos++; + while (pos < max2) { + ch1 = state.src.charCodeAt(pos); + if (!isSpace(ch1)) + break; + pos++; + } + state.pos = pos; + return true; + } + escapedStr = state.src[pos]; + if (ch1 >= 55296 && ch1 <= 56319 && pos + 1 < max2) { + ch2 = state.src.charCodeAt(pos + 1); + if (ch2 >= 56320 && ch2 <= 57343) { + escapedStr += state.src[pos + 1]; + pos++; + } + } + origStr = "\\" + escapedStr; + if (!silent) { + token = state.push("text_special", "", 0); + if (ch1 < 256 && ESCAPED[ch1] !== 0) { + token.content = escapedStr; + } else { + token.content = origStr; + } + token.markup = origStr; + token.info = "escape"; + } + state.pos = pos + 1; + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_inline/backticks.js +var require_backticks = __commonJS({ + "node_modules/markdown-it/lib/rules_inline/backticks.js"(exports, module2) { + "use strict"; + module2.exports = function backtick(state, silent) { + var start, max2, marker, token, matchStart, matchEnd, openerLength, closerLength, pos = state.pos, ch = state.src.charCodeAt(pos); + if (ch !== 96) { + return false; + } + start = pos; + pos++; + max2 = state.posMax; + while (pos < max2 && state.src.charCodeAt(pos) === 96) { + pos++; + } + marker = state.src.slice(start, pos); + openerLength = marker.length; + if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) { + if (!silent) + state.pending += marker; + state.pos += openerLength; + return true; + } + matchStart = matchEnd = pos; + while ((matchStart = state.src.indexOf("`", matchEnd)) !== -1) { + matchEnd = matchStart + 1; + while (matchEnd < max2 && state.src.charCodeAt(matchEnd) === 96) { + matchEnd++; + } + closerLength = matchEnd - matchStart; + if (closerLength === openerLength) { + if (!silent) { + token = state.push("code_inline", "code", 0); + token.markup = marker; + token.content = state.src.slice(pos, matchStart).replace(/\n/g, " ").replace(/^ (.+) $/, "$1"); + } + state.pos = matchEnd; + return true; + } + state.backticks[closerLength] = matchStart; + } + state.backticksScanned = true; + if (!silent) + state.pending += marker; + state.pos += openerLength; + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_inline/strikethrough.js +var require_strikethrough = __commonJS({ + "node_modules/markdown-it/lib/rules_inline/strikethrough.js"(exports, module2) { + "use strict"; + module2.exports.tokenize = function strikethrough(state, silent) { + var i2, scanned, token, len, ch, start = state.pos, marker = state.src.charCodeAt(start); + if (silent) { + return false; + } + if (marker !== 126) { + return false; + } + scanned = state.scanDelims(state.pos, true); + len = scanned.length; + ch = String.fromCharCode(marker); + if (len < 2) { + return false; + } + if (len % 2) { + token = state.push("text", "", 0); + token.content = ch; + len--; + } + for (i2 = 0; i2 < len; i2 += 2) { + token = state.push("text", "", 0); + token.content = ch + ch; + state.delimiters.push({ + marker, + length: 0, + token: state.tokens.length - 1, + end: -1, + open: scanned.can_open, + close: scanned.can_close + }); + } + state.pos += scanned.length; + return true; + }; + function postProcess(state, delimiters) { + var i2, j2, startDelim, endDelim, token, loneMarkers = [], max2 = delimiters.length; + for (i2 = 0; i2 < max2; i2++) { + startDelim = delimiters[i2]; + if (startDelim.marker !== 126) { + continue; + } + if (startDelim.end === -1) { + continue; + } + endDelim = delimiters[startDelim.end]; + token = state.tokens[startDelim.token]; + token.type = "s_open"; + token.tag = "s"; + token.nesting = 1; + token.markup = "~~"; + token.content = ""; + token = state.tokens[endDelim.token]; + token.type = "s_close"; + token.tag = "s"; + token.nesting = -1; + token.markup = "~~"; + token.content = ""; + if (state.tokens[endDelim.token - 1].type === "text" && state.tokens[endDelim.token - 1].content === "~") { + loneMarkers.push(endDelim.token - 1); + } + } + while (loneMarkers.length) { + i2 = loneMarkers.pop(); + j2 = i2 + 1; + while (j2 < state.tokens.length && state.tokens[j2].type === "s_close") { + j2++; + } + j2--; + if (i2 !== j2) { + token = state.tokens[j2]; + state.tokens[j2] = state.tokens[i2]; + state.tokens[i2] = token; + } + } + } + module2.exports.postProcess = function strikethrough(state) { + var curr, tokens_meta = state.tokens_meta, max2 = state.tokens_meta.length; + postProcess(state, state.delimiters); + for (curr = 0; curr < max2; curr++) { + if (tokens_meta[curr] && tokens_meta[curr].delimiters) { + postProcess(state, tokens_meta[curr].delimiters); + } + } + }; + } +}); + +// node_modules/markdown-it/lib/rules_inline/emphasis.js +var require_emphasis = __commonJS({ + "node_modules/markdown-it/lib/rules_inline/emphasis.js"(exports, module2) { + "use strict"; + module2.exports.tokenize = function emphasis(state, silent) { + var i2, scanned, token, start = state.pos, marker = state.src.charCodeAt(start); + if (silent) { + return false; + } + if (marker !== 95 && marker !== 42) { + return false; + } + scanned = state.scanDelims(state.pos, marker === 42); + for (i2 = 0; i2 < scanned.length; i2++) { + token = state.push("text", "", 0); + token.content = String.fromCharCode(marker); + state.delimiters.push({ + marker, + length: scanned.length, + token: state.tokens.length - 1, + end: -1, + open: scanned.can_open, + close: scanned.can_close + }); + } + state.pos += scanned.length; + return true; + }; + function postProcess(state, delimiters) { + var i2, startDelim, endDelim, token, ch, isStrong, max2 = delimiters.length; + for (i2 = max2 - 1; i2 >= 0; i2--) { + startDelim = delimiters[i2]; + if (startDelim.marker !== 95 && startDelim.marker !== 42) { + continue; + } + if (startDelim.end === -1) { + continue; + } + endDelim = delimiters[startDelim.end]; + isStrong = i2 > 0 && delimiters[i2 - 1].end === startDelim.end + 1 && delimiters[i2 - 1].marker === startDelim.marker && delimiters[i2 - 1].token === startDelim.token - 1 && delimiters[startDelim.end + 1].token === endDelim.token + 1; + ch = String.fromCharCode(startDelim.marker); + token = state.tokens[startDelim.token]; + token.type = isStrong ? "strong_open" : "em_open"; + token.tag = isStrong ? "strong" : "em"; + token.nesting = 1; + token.markup = isStrong ? ch + ch : ch; + token.content = ""; + token = state.tokens[endDelim.token]; + token.type = isStrong ? "strong_close" : "em_close"; + token.tag = isStrong ? "strong" : "em"; + token.nesting = -1; + token.markup = isStrong ? ch + ch : ch; + token.content = ""; + if (isStrong) { + state.tokens[delimiters[i2 - 1].token].content = ""; + state.tokens[delimiters[startDelim.end + 1].token].content = ""; + i2--; + } + } + } + module2.exports.postProcess = function emphasis(state) { + var curr, tokens_meta = state.tokens_meta, max2 = state.tokens_meta.length; + postProcess(state, state.delimiters); + for (curr = 0; curr < max2; curr++) { + if (tokens_meta[curr] && tokens_meta[curr].delimiters) { + postProcess(state, tokens_meta[curr].delimiters); + } + } + }; + } +}); + +// node_modules/markdown-it/lib/rules_inline/link.js +var require_link = __commonJS({ + "node_modules/markdown-it/lib/rules_inline/link.js"(exports, module2) { + "use strict"; + var normalizeReference = require_utils().normalizeReference; + var isSpace = require_utils().isSpace; + module2.exports = function link(state, silent) { + var attrs, code, label, labelEnd, labelStart, pos, res, ref, token, href = "", title = "", oldPos = state.pos, max2 = state.posMax, start = state.pos, parseReference = true; + if (state.src.charCodeAt(state.pos) !== 91) { + return false; + } + labelStart = state.pos + 1; + labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true); + if (labelEnd < 0) { + return false; + } + pos = labelEnd + 1; + if (pos < max2 && state.src.charCodeAt(pos) === 40) { + parseReference = false; + pos++; + for (; pos < max2; pos++) { + code = state.src.charCodeAt(pos); + if (!isSpace(code) && code !== 10) { + break; + } + } + if (pos >= max2) { + return false; + } + start = pos; + res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax); + if (res.ok) { + href = state.md.normalizeLink(res.str); + if (state.md.validateLink(href)) { + pos = res.pos; + } else { + href = ""; + } + start = pos; + for (; pos < max2; pos++) { + code = state.src.charCodeAt(pos); + if (!isSpace(code) && code !== 10) { + break; + } + } + res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax); + if (pos < max2 && start !== pos && res.ok) { + title = res.str; + pos = res.pos; + for (; pos < max2; pos++) { + code = state.src.charCodeAt(pos); + if (!isSpace(code) && code !== 10) { + break; + } + } + } + } + if (pos >= max2 || state.src.charCodeAt(pos) !== 41) { + parseReference = true; + } + pos++; + } + if (parseReference) { + if (typeof state.env.references === "undefined") { + return false; + } + if (pos < max2 && state.src.charCodeAt(pos) === 91) { + start = pos + 1; + pos = state.md.helpers.parseLinkLabel(state, pos); + if (pos >= 0) { + label = state.src.slice(start, pos++); + } else { + pos = labelEnd + 1; + } + } else { + pos = labelEnd + 1; + } + if (!label) { + label = state.src.slice(labelStart, labelEnd); + } + ref = state.env.references[normalizeReference(label)]; + if (!ref) { + state.pos = oldPos; + return false; + } + href = ref.href; + title = ref.title; + } + if (!silent) { + state.pos = labelStart; + state.posMax = labelEnd; + token = state.push("link_open", "a", 1); + token.attrs = attrs = [["href", href]]; + if (title) { + attrs.push(["title", title]); + } + state.linkLevel++; + state.md.inline.tokenize(state); + state.linkLevel--; + token = state.push("link_close", "a", -1); + } + state.pos = pos; + state.posMax = max2; + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_inline/image.js +var require_image = __commonJS({ + "node_modules/markdown-it/lib/rules_inline/image.js"(exports, module2) { + "use strict"; + var normalizeReference = require_utils().normalizeReference; + var isSpace = require_utils().isSpace; + module2.exports = function image(state, silent) { + var attrs, code, content, label, labelEnd, labelStart, pos, ref, res, title, token, tokens, start, href = "", oldPos = state.pos, max2 = state.posMax; + if (state.src.charCodeAt(state.pos) !== 33) { + return false; + } + if (state.src.charCodeAt(state.pos + 1) !== 91) { + return false; + } + labelStart = state.pos + 2; + labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false); + if (labelEnd < 0) { + return false; + } + pos = labelEnd + 1; + if (pos < max2 && state.src.charCodeAt(pos) === 40) { + pos++; + for (; pos < max2; pos++) { + code = state.src.charCodeAt(pos); + if (!isSpace(code) && code !== 10) { + break; + } + } + if (pos >= max2) { + return false; + } + start = pos; + res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax); + if (res.ok) { + href = state.md.normalizeLink(res.str); + if (state.md.validateLink(href)) { + pos = res.pos; + } else { + href = ""; + } + } + start = pos; + for (; pos < max2; pos++) { + code = state.src.charCodeAt(pos); + if (!isSpace(code) && code !== 10) { + break; + } + } + res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax); + if (pos < max2 && start !== pos && res.ok) { + title = res.str; + pos = res.pos; + for (; pos < max2; pos++) { + code = state.src.charCodeAt(pos); + if (!isSpace(code) && code !== 10) { + break; + } + } + } else { + title = ""; + } + if (pos >= max2 || state.src.charCodeAt(pos) !== 41) { + state.pos = oldPos; + return false; + } + pos++; + } else { + if (typeof state.env.references === "undefined") { + return false; + } + if (pos < max2 && state.src.charCodeAt(pos) === 91) { + start = pos + 1; + pos = state.md.helpers.parseLinkLabel(state, pos); + if (pos >= 0) { + label = state.src.slice(start, pos++); + } else { + pos = labelEnd + 1; + } + } else { + pos = labelEnd + 1; + } + if (!label) { + label = state.src.slice(labelStart, labelEnd); + } + ref = state.env.references[normalizeReference(label)]; + if (!ref) { + state.pos = oldPos; + return false; + } + href = ref.href; + title = ref.title; + } + if (!silent) { + content = state.src.slice(labelStart, labelEnd); + state.md.inline.parse( + content, + state.md, + state.env, + tokens = [] + ); + token = state.push("image", "img", 0); + token.attrs = attrs = [["src", href], ["alt", ""]]; + token.children = tokens; + token.content = content; + if (title) { + attrs.push(["title", title]); + } + } + state.pos = pos; + state.posMax = max2; + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_inline/autolink.js +var require_autolink = __commonJS({ + "node_modules/markdown-it/lib/rules_inline/autolink.js"(exports, module2) { + "use strict"; + var EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/; + var AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)$/; + module2.exports = function autolink(state, silent) { + var url, fullUrl, token, ch, start, max2, pos = state.pos; + if (state.src.charCodeAt(pos) !== 60) { + return false; + } + start = state.pos; + max2 = state.posMax; + for (; ; ) { + if (++pos >= max2) + return false; + ch = state.src.charCodeAt(pos); + if (ch === 60) + return false; + if (ch === 62) + break; + } + url = state.src.slice(start + 1, pos); + if (AUTOLINK_RE.test(url)) { + fullUrl = state.md.normalizeLink(url); + if (!state.md.validateLink(fullUrl)) { + return false; + } + if (!silent) { + token = state.push("link_open", "a", 1); + token.attrs = [["href", fullUrl]]; + token.markup = "autolink"; + token.info = "auto"; + token = state.push("text", "", 0); + token.content = state.md.normalizeLinkText(url); + token = state.push("link_close", "a", -1); + token.markup = "autolink"; + token.info = "auto"; + } + state.pos += url.length + 2; + return true; + } + if (EMAIL_RE.test(url)) { + fullUrl = state.md.normalizeLink("mailto:" + url); + if (!state.md.validateLink(fullUrl)) { + return false; + } + if (!silent) { + token = state.push("link_open", "a", 1); + token.attrs = [["href", fullUrl]]; + token.markup = "autolink"; + token.info = "auto"; + token = state.push("text", "", 0); + token.content = state.md.normalizeLinkText(url); + token = state.push("link_close", "a", -1); + token.markup = "autolink"; + token.info = "auto"; + } + state.pos += url.length + 2; + return true; + } + return false; + }; + } +}); + +// node_modules/markdown-it/lib/rules_inline/html_inline.js +var require_html_inline = __commonJS({ + "node_modules/markdown-it/lib/rules_inline/html_inline.js"(exports, module2) { + "use strict"; + var HTML_TAG_RE = require_html_re().HTML_TAG_RE; + function isLinkOpen(str) { + return /^\s]/i.test(str); + } + function isLinkClose(str) { + return /^<\/a\s*>/i.test(str); + } + function isLetter(ch) { + var lc = ch | 32; + return lc >= 97 && lc <= 122; + } + module2.exports = function html_inline(state, silent) { + var ch, match, max2, token, pos = state.pos; + if (!state.md.options.html) { + return false; + } + max2 = state.posMax; + if (state.src.charCodeAt(pos) !== 60 || pos + 2 >= max2) { + return false; + } + ch = state.src.charCodeAt(pos + 1); + if (ch !== 33 && ch !== 63 && ch !== 47 && !isLetter(ch)) { + return false; + } + match = state.src.slice(pos).match(HTML_TAG_RE); + if (!match) { + return false; + } + if (!silent) { + token = state.push("html_inline", "", 0); + token.content = state.src.slice(pos, pos + match[0].length); + if (isLinkOpen(token.content)) + state.linkLevel++; + if (isLinkClose(token.content)) + state.linkLevel--; + } + state.pos += match[0].length; + return true; + }; + } +}); + +// node_modules/markdown-it/lib/rules_inline/entity.js +var require_entity = __commonJS({ + "node_modules/markdown-it/lib/rules_inline/entity.js"(exports, module2) { + "use strict"; + var entities = require_entities2(); + var has = require_utils().has; + var isValidEntityCode = require_utils().isValidEntityCode; + var fromCodePoint2 = require_utils().fromCodePoint; + var DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i; + var NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i; + module2.exports = function entity(state, silent) { + var ch, code, match, token, pos = state.pos, max2 = state.posMax; + if (state.src.charCodeAt(pos) !== 38) + return false; + if (pos + 1 >= max2) + return false; + ch = state.src.charCodeAt(pos + 1); + if (ch === 35) { + match = state.src.slice(pos).match(DIGITAL_RE); + if (match) { + if (!silent) { + code = match[1][0].toLowerCase() === "x" ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10); + token = state.push("text_special", "", 0); + token.content = isValidEntityCode(code) ? fromCodePoint2(code) : fromCodePoint2(65533); + token.markup = match[0]; + token.info = "entity"; + } + state.pos += match[0].length; + return true; + } + } else { + match = state.src.slice(pos).match(NAMED_RE); + if (match) { + if (has(entities, match[1])) { + if (!silent) { + token = state.push("text_special", "", 0); + token.content = entities[match[1]]; + token.markup = match[0]; + token.info = "entity"; + } + state.pos += match[0].length; + return true; + } + } + } + return false; + }; + } +}); + +// node_modules/markdown-it/lib/rules_inline/balance_pairs.js +var require_balance_pairs = __commonJS({ + "node_modules/markdown-it/lib/rules_inline/balance_pairs.js"(exports, module2) { + "use strict"; + function processDelimiters(state, delimiters) { + var closerIdx, openerIdx, closer, opener, minOpenerIdx, newMinOpenerIdx, isOddMatch, lastJump, openersBottom = {}, max2 = delimiters.length; + if (!max2) + return; + var headerIdx = 0; + var lastTokenIdx = -2; + var jumps = []; + for (closerIdx = 0; closerIdx < max2; closerIdx++) { + closer = delimiters[closerIdx]; + jumps.push(0); + if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) { + headerIdx = closerIdx; + } + lastTokenIdx = closer.token; + closer.length = closer.length || 0; + if (!closer.close) + continue; + if (!openersBottom.hasOwnProperty(closer.marker)) { + openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1]; + } + minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + closer.length % 3]; + openerIdx = headerIdx - jumps[headerIdx] - 1; + newMinOpenerIdx = openerIdx; + for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) { + opener = delimiters[openerIdx]; + if (opener.marker !== closer.marker) + continue; + if (opener.open && opener.end < 0) { + isOddMatch = false; + if (opener.close || closer.open) { + if ((opener.length + closer.length) % 3 === 0) { + if (opener.length % 3 !== 0 || closer.length % 3 !== 0) { + isOddMatch = true; + } + } + } + if (!isOddMatch) { + lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ? jumps[openerIdx - 1] + 1 : 0; + jumps[closerIdx] = closerIdx - openerIdx + lastJump; + jumps[openerIdx] = lastJump; + closer.open = false; + opener.end = closerIdx; + opener.close = false; + newMinOpenerIdx = -1; + lastTokenIdx = -2; + break; + } + } + } + if (newMinOpenerIdx !== -1) { + openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length || 0) % 3] = newMinOpenerIdx; + } + } + } + module2.exports = function link_pairs(state) { + var curr, tokens_meta = state.tokens_meta, max2 = state.tokens_meta.length; + processDelimiters(state, state.delimiters); + for (curr = 0; curr < max2; curr++) { + if (tokens_meta[curr] && tokens_meta[curr].delimiters) { + processDelimiters(state, tokens_meta[curr].delimiters); + } + } + }; + } +}); + +// node_modules/markdown-it/lib/rules_inline/fragments_join.js +var require_fragments_join = __commonJS({ + "node_modules/markdown-it/lib/rules_inline/fragments_join.js"(exports, module2) { + "use strict"; + module2.exports = function fragments_join(state) { + var curr, last2, level = 0, tokens = state.tokens, max2 = state.tokens.length; + for (curr = last2 = 0; curr < max2; curr++) { + if (tokens[curr].nesting < 0) + level--; + tokens[curr].level = level; + if (tokens[curr].nesting > 0) + level++; + if (tokens[curr].type === "text" && curr + 1 < max2 && tokens[curr + 1].type === "text") { + tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content; + } else { + if (curr !== last2) { + tokens[last2] = tokens[curr]; + } + last2++; + } + } + if (curr !== last2) { + tokens.length = last2; + } + }; + } +}); + +// node_modules/markdown-it/lib/rules_inline/state_inline.js +var require_state_inline = __commonJS({ + "node_modules/markdown-it/lib/rules_inline/state_inline.js"(exports, module2) { + "use strict"; + var Token = require_token(); + var isWhiteSpace = require_utils().isWhiteSpace; + var isPunctChar = require_utils().isPunctChar; + var isMdAsciiPunct = require_utils().isMdAsciiPunct; + function StateInline(src, md, env, outTokens) { + this.src = src; + this.env = env; + this.md = md; + this.tokens = outTokens; + this.tokens_meta = Array(outTokens.length); + this.pos = 0; + this.posMax = this.src.length; + this.level = 0; + this.pending = ""; + this.pendingLevel = 0; + this.cache = {}; + this.delimiters = []; + this._prev_delimiters = []; + this.backticks = {}; + this.backticksScanned = false; + this.linkLevel = 0; + } + StateInline.prototype.pushPending = function() { + var token = new Token("text", "", 0); + token.content = this.pending; + token.level = this.pendingLevel; + this.tokens.push(token); + this.pending = ""; + return token; + }; + StateInline.prototype.push = function(type, tag, nesting) { + if (this.pending) { + this.pushPending(); + } + var token = new Token(type, tag, nesting); + var token_meta = null; + if (nesting < 0) { + this.level--; + this.delimiters = this._prev_delimiters.pop(); + } + token.level = this.level; + if (nesting > 0) { + this.level++; + this._prev_delimiters.push(this.delimiters); + this.delimiters = []; + token_meta = { delimiters: this.delimiters }; + } + this.pendingLevel = this.level; + this.tokens.push(token); + this.tokens_meta.push(token_meta); + return token; + }; + StateInline.prototype.scanDelims = function(start, canSplitWord) { + var pos = start, lastChar, nextChar, count, can_open, can_close, isLastWhiteSpace, isLastPunctChar, isNextWhiteSpace, isNextPunctChar, left_flanking = true, right_flanking = true, max2 = this.posMax, marker = this.src.charCodeAt(start); + lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 32; + while (pos < max2 && this.src.charCodeAt(pos) === marker) { + pos++; + } + count = pos - start; + nextChar = pos < max2 ? this.src.charCodeAt(pos) : 32; + isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar)); + isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar)); + isLastWhiteSpace = isWhiteSpace(lastChar); + isNextWhiteSpace = isWhiteSpace(nextChar); + if (isNextWhiteSpace) { + left_flanking = false; + } else if (isNextPunctChar) { + if (!(isLastWhiteSpace || isLastPunctChar)) { + left_flanking = false; + } + } + if (isLastWhiteSpace) { + right_flanking = false; + } else if (isLastPunctChar) { + if (!(isNextWhiteSpace || isNextPunctChar)) { + right_flanking = false; + } + } + if (!canSplitWord) { + can_open = left_flanking && (!right_flanking || isLastPunctChar); + can_close = right_flanking && (!left_flanking || isNextPunctChar); + } else { + can_open = left_flanking; + can_close = right_flanking; + } + return { + can_open, + can_close, + length: count + }; + }; + StateInline.prototype.Token = Token; + module2.exports = StateInline; + } +}); + +// node_modules/markdown-it/lib/parser_inline.js +var require_parser_inline = __commonJS({ + "node_modules/markdown-it/lib/parser_inline.js"(exports, module2) { + "use strict"; + var Ruler = require_ruler(); + var _rules = [ + ["text", require_text()], + ["linkify", require_linkify2()], + ["newline", require_newline()], + ["escape", require_escape()], + ["backticks", require_backticks()], + ["strikethrough", require_strikethrough().tokenize], + ["emphasis", require_emphasis().tokenize], + ["link", require_link()], + ["image", require_image()], + ["autolink", require_autolink()], + ["html_inline", require_html_inline()], + ["entity", require_entity()] + ]; + var _rules2 = [ + ["balance_pairs", require_balance_pairs()], + ["strikethrough", require_strikethrough().postProcess], + ["emphasis", require_emphasis().postProcess], + ["fragments_join", require_fragments_join()] + ]; + function ParserInline() { + var i2; + this.ruler = new Ruler(); + for (i2 = 0; i2 < _rules.length; i2++) { + this.ruler.push(_rules[i2][0], _rules[i2][1]); + } + this.ruler2 = new Ruler(); + for (i2 = 0; i2 < _rules2.length; i2++) { + this.ruler2.push(_rules2[i2][0], _rules2[i2][1]); + } + } + ParserInline.prototype.skipToken = function(state) { + var ok, i2, pos = state.pos, rules = this.ruler.getRules(""), len = rules.length, maxNesting = state.md.options.maxNesting, cache = state.cache; + if (typeof cache[pos] !== "undefined") { + state.pos = cache[pos]; + return; + } + if (state.level < maxNesting) { + for (i2 = 0; i2 < len; i2++) { + state.level++; + ok = rules[i2](state, true); + state.level--; + if (ok) { + break; + } + } + } else { + state.pos = state.posMax; + } + if (!ok) { + state.pos++; + } + cache[pos] = state.pos; + }; + ParserInline.prototype.tokenize = function(state) { + var ok, i2, rules = this.ruler.getRules(""), len = rules.length, end = state.posMax, maxNesting = state.md.options.maxNesting; + while (state.pos < end) { + if (state.level < maxNesting) { + for (i2 = 0; i2 < len; i2++) { + ok = rules[i2](state, false); + if (ok) { + break; + } + } + } + if (ok) { + if (state.pos >= end) { + break; + } + continue; + } + state.pending += state.src[state.pos++]; + } + if (state.pending) { + state.pushPending(); + } + }; + ParserInline.prototype.parse = function(str, md, env, outTokens) { + var i2, rules, len; + var state = new this.State(str, md, env, outTokens); + this.tokenize(state); + rules = this.ruler2.getRules(""); + len = rules.length; + for (i2 = 0; i2 < len; i2++) { + rules[i2](state); + } + }; + ParserInline.prototype.State = require_state_inline(); + module2.exports = ParserInline; + } +}); + +// node_modules/linkify-it/lib/re.js +var require_re = __commonJS({ + "node_modules/linkify-it/lib/re.js"(exports, module2) { + "use strict"; + module2.exports = function(opts) { + var re = {}; + opts = opts || {}; + re.src_Any = require_regex2().source; + re.src_Cc = require_regex3().source; + re.src_Z = require_regex5().source; + re.src_P = require_regex().source; + re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join("|"); + re.src_ZCc = [re.src_Z, re.src_Cc].join("|"); + var text_separators = "[><\uFF5C]"; + re.src_pseudo_letter = "(?:(?!" + text_separators + "|" + re.src_ZPCc + ")" + re.src_Any + ")"; + re.src_ip4 = "(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"; + re.src_auth = "(?:(?:(?!" + re.src_ZCc + "|[@/\\[\\]()]).)+@)?"; + re.src_port = "(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?"; + re.src_host_terminator = "(?=$|" + text_separators + "|" + re.src_ZPCc + ")(?!" + (opts["---"] ? "-(?!--)|" : "-|") + "_|:\\d|\\.-|\\.(?!$|" + re.src_ZPCc + "))"; + re.src_path = "(?:[/?#](?:(?!" + re.src_ZCc + "|" + text_separators + `|[()[\\]{}.,"'?!\\-;]).|\\[(?:(?!` + re.src_ZCc + "|\\]).)*\\]|\\((?:(?!" + re.src_ZCc + "|[)]).)*\\)|\\{(?:(?!" + re.src_ZCc + '|[}]).)*\\}|\\"(?:(?!' + re.src_ZCc + `|["]).)+\\"|\\'(?:(?!` + re.src_ZCc + "|[']).)+\\'|\\'(?=" + re.src_pseudo_letter + "|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!" + re.src_ZCc + "|[.]|$)|" + (opts["---"] ? "\\-(?!--(?:[^-]|$))(?:-*)|" : "\\-+|") + ",(?!" + re.src_ZCc + "|$)|;(?!" + re.src_ZCc + "|$)|\\!+(?!" + re.src_ZCc + "|[!]|$)|\\?(?!" + re.src_ZCc + "|[?]|$))+|\\/)?"; + re.src_email_name = '[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*'; + re.src_xn = "xn--[a-z0-9\\-]{1,59}"; + re.src_domain_root = "(?:" + re.src_xn + "|" + re.src_pseudo_letter + "{1,63})"; + re.src_domain = "(?:" + re.src_xn + "|(?:" + re.src_pseudo_letter + ")|(?:" + re.src_pseudo_letter + "(?:-|" + re.src_pseudo_letter + "){0,61}" + re.src_pseudo_letter + "))"; + re.src_host = "(?:(?:(?:(?:" + re.src_domain + ")\\.)*" + re.src_domain + "))"; + re.tpl_host_fuzzy = "(?:" + re.src_ip4 + "|(?:(?:(?:" + re.src_domain + ")\\.)+(?:%TLDS%)))"; + re.tpl_host_no_ip_fuzzy = "(?:(?:(?:" + re.src_domain + ")\\.)+(?:%TLDS%))"; + re.src_host_strict = re.src_host + re.src_host_terminator; + re.tpl_host_fuzzy_strict = re.tpl_host_fuzzy + re.src_host_terminator; + re.src_host_port_strict = re.src_host + re.src_port + re.src_host_terminator; + re.tpl_host_port_fuzzy_strict = re.tpl_host_fuzzy + re.src_port + re.src_host_terminator; + re.tpl_host_port_no_ip_fuzzy_strict = re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator; + re.tpl_host_fuzzy_test = "localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:" + re.src_ZPCc + "|>|$))"; + re.tpl_email_fuzzy = "(^|" + text_separators + '|"|\\(|' + re.src_ZCc + ")(" + re.src_email_name + "@" + re.tpl_host_fuzzy_strict + ")"; + re.tpl_link_fuzzy = "(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|" + re.src_ZPCc + "))((?![$+<=>^`|\uFF5C])" + re.tpl_host_port_fuzzy_strict + re.src_path + ")"; + re.tpl_link_no_ip_fuzzy = "(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|" + re.src_ZPCc + "))((?![$+<=>^`|\uFF5C])" + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ")"; + return re; + }; + } +}); + +// node_modules/linkify-it/index.js +var require_linkify_it = __commonJS({ + "node_modules/linkify-it/index.js"(exports, module2) { + "use strict"; + function assign(obj) { + var sources = Array.prototype.slice.call(arguments, 1); + sources.forEach(function(source) { + if (!source) { + return; + } + Object.keys(source).forEach(function(key) { + obj[key] = source[key]; + }); + }); + return obj; + } + function _class(obj) { + return Object.prototype.toString.call(obj); + } + function isString(obj) { + return _class(obj) === "[object String]"; + } + function isObject(obj) { + return _class(obj) === "[object Object]"; + } + function isRegExp(obj) { + return _class(obj) === "[object RegExp]"; + } + function isFunction(obj) { + return _class(obj) === "[object Function]"; + } + function escapeRE(str) { + return str.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&"); + } + var defaultOptions = { + fuzzyLink: true, + fuzzyEmail: true, + fuzzyIP: false + }; + function isOptionsObj(obj) { + return Object.keys(obj || {}).reduce(function(acc, k2) { + return acc || defaultOptions.hasOwnProperty(k2); + }, false); + } + var defaultSchemas = { + "http:": { + validate: function(text, pos, self2) { + var tail = text.slice(pos); + if (!self2.re.http) { + self2.re.http = new RegExp( + "^\\/\\/" + self2.re.src_auth + self2.re.src_host_port_strict + self2.re.src_path, + "i" + ); + } + if (self2.re.http.test(tail)) { + return tail.match(self2.re.http)[0].length; + } + return 0; + } + }, + "https:": "http:", + "ftp:": "http:", + "//": { + validate: function(text, pos, self2) { + var tail = text.slice(pos); + if (!self2.re.no_http) { + self2.re.no_http = new RegExp( + "^" + self2.re.src_auth + "(?:localhost|(?:(?:" + self2.re.src_domain + ")\\.)+" + self2.re.src_domain_root + ")" + self2.re.src_port + self2.re.src_host_terminator + self2.re.src_path, + "i" + ); + } + if (self2.re.no_http.test(tail)) { + if (pos >= 3 && text[pos - 3] === ":") { + return 0; + } + if (pos >= 3 && text[pos - 3] === "/") { + return 0; + } + return tail.match(self2.re.no_http)[0].length; + } + return 0; + } + }, + "mailto:": { + validate: function(text, pos, self2) { + var tail = text.slice(pos); + if (!self2.re.mailto) { + self2.re.mailto = new RegExp( + "^" + self2.re.src_email_name + "@" + self2.re.src_host_strict, + "i" + ); + } + if (self2.re.mailto.test(tail)) { + return tail.match(self2.re.mailto)[0].length; + } + return 0; + } + } + }; + var tlds_2ch_src_re = "a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]"; + var tlds_default = "biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|"); + function resetScanCache(self2) { + self2.__index__ = -1; + self2.__text_cache__ = ""; + } + function createValidator(re) { + return function(text, pos) { + var tail = text.slice(pos); + if (re.test(tail)) { + return tail.match(re)[0].length; + } + return 0; + }; + } + function createNormalizer() { + return function(match, self2) { + self2.normalize(match); + }; + } + function compile(self2) { + var re = self2.re = require_re()(self2.__opts__); + var tlds = self2.__tlds__.slice(); + self2.onCompile(); + if (!self2.__tlds_replaced__) { + tlds.push(tlds_2ch_src_re); + } + tlds.push(re.src_xn); + re.src_tlds = tlds.join("|"); + function untpl(tpl) { + return tpl.replace("%TLDS%", re.src_tlds); + } + re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), "i"); + re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), "i"); + re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), "i"); + re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), "i"); + var aliases = []; + self2.__compiled__ = {}; + function schemaError(name, val) { + throw new Error('(LinkifyIt) Invalid schema "' + name + '": ' + val); + } + Object.keys(self2.__schemas__).forEach(function(name) { + var val = self2.__schemas__[name]; + if (val === null) { + return; + } + var compiled = { validate: null, link: null }; + self2.__compiled__[name] = compiled; + if (isObject(val)) { + if (isRegExp(val.validate)) { + compiled.validate = createValidator(val.validate); + } else if (isFunction(val.validate)) { + compiled.validate = val.validate; + } else { + schemaError(name, val); + } + if (isFunction(val.normalize)) { + compiled.normalize = val.normalize; + } else if (!val.normalize) { + compiled.normalize = createNormalizer(); + } else { + schemaError(name, val); + } + return; + } + if (isString(val)) { + aliases.push(name); + return; + } + schemaError(name, val); + }); + aliases.forEach(function(alias) { + if (!self2.__compiled__[self2.__schemas__[alias]]) { + return; + } + self2.__compiled__[alias].validate = self2.__compiled__[self2.__schemas__[alias]].validate; + self2.__compiled__[alias].normalize = self2.__compiled__[self2.__schemas__[alias]].normalize; + }); + self2.__compiled__[""] = { validate: null, normalize: createNormalizer() }; + var slist = Object.keys(self2.__compiled__).filter(function(name) { + return name.length > 0 && self2.__compiled__[name]; + }).map(escapeRE).join("|"); + self2.re.schema_test = RegExp("(^|(?!_)(?:[><\uFF5C]|" + re.src_ZPCc + "))(" + slist + ")", "i"); + self2.re.schema_search = RegExp("(^|(?!_)(?:[><\uFF5C]|" + re.src_ZPCc + "))(" + slist + ")", "ig"); + self2.re.schema_at_start = RegExp("^" + self2.re.schema_search.source, "i"); + self2.re.pretest = RegExp( + "(" + self2.re.schema_test.source + ")|(" + self2.re.host_fuzzy_test.source + ")|@", + "i" + ); + resetScanCache(self2); + } + function Match(self2, shift) { + var start = self2.__index__, end = self2.__last_index__, text = self2.__text_cache__.slice(start, end); + this.schema = self2.__schema__.toLowerCase(); + this.index = start + shift; + this.lastIndex = end + shift; + this.raw = text; + this.text = text; + this.url = text; + } + function createMatch(self2, shift) { + var match = new Match(self2, shift); + self2.__compiled__[match.schema].normalize(match, self2); + return match; + } + function LinkifyIt(schemas, options) { + if (!(this instanceof LinkifyIt)) { + return new LinkifyIt(schemas, options); + } + if (!options) { + if (isOptionsObj(schemas)) { + options = schemas; + schemas = {}; + } + } + this.__opts__ = assign({}, defaultOptions, options); + this.__index__ = -1; + this.__last_index__ = -1; + this.__schema__ = ""; + this.__text_cache__ = ""; + this.__schemas__ = assign({}, defaultSchemas, schemas); + this.__compiled__ = {}; + this.__tlds__ = tlds_default; + this.__tlds_replaced__ = false; + this.re = {}; + compile(this); + } + LinkifyIt.prototype.add = function add(schema, definition) { + this.__schemas__[schema] = definition; + compile(this); + return this; + }; + LinkifyIt.prototype.set = function set(options) { + this.__opts__ = assign(this.__opts__, options); + return this; + }; + LinkifyIt.prototype.test = function test(text) { + this.__text_cache__ = text; + this.__index__ = -1; + if (!text.length) { + return false; + } + var m2, ml, me, len, shift, next, re, tld_pos, at_pos; + if (this.re.schema_test.test(text)) { + re = this.re.schema_search; + re.lastIndex = 0; + while ((m2 = re.exec(text)) !== null) { + len = this.testSchemaAt(text, m2[2], re.lastIndex); + if (len) { + this.__schema__ = m2[2]; + this.__index__ = m2.index + m2[1].length; + this.__last_index__ = m2.index + m2[0].length + len; + break; + } + } + } + if (this.__opts__.fuzzyLink && this.__compiled__["http:"]) { + tld_pos = text.search(this.re.host_fuzzy_test); + if (tld_pos >= 0) { + if (this.__index__ < 0 || tld_pos < this.__index__) { + if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) { + shift = ml.index + ml[1].length; + if (this.__index__ < 0 || shift < this.__index__) { + this.__schema__ = ""; + this.__index__ = shift; + this.__last_index__ = ml.index + ml[0].length; + } + } + } + } + } + if (this.__opts__.fuzzyEmail && this.__compiled__["mailto:"]) { + at_pos = text.indexOf("@"); + if (at_pos >= 0) { + if ((me = text.match(this.re.email_fuzzy)) !== null) { + shift = me.index + me[1].length; + next = me.index + me[0].length; + if (this.__index__ < 0 || shift < this.__index__ || shift === this.__index__ && next > this.__last_index__) { + this.__schema__ = "mailto:"; + this.__index__ = shift; + this.__last_index__ = next; + } + } + } + } + return this.__index__ >= 0; + }; + LinkifyIt.prototype.pretest = function pretest(text) { + return this.re.pretest.test(text); + }; + LinkifyIt.prototype.testSchemaAt = function testSchemaAt(text, schema, pos) { + if (!this.__compiled__[schema.toLowerCase()]) { + return 0; + } + return this.__compiled__[schema.toLowerCase()].validate(text, pos, this); + }; + LinkifyIt.prototype.match = function match(text) { + var shift = 0, result = []; + if (this.__index__ >= 0 && this.__text_cache__ === text) { + result.push(createMatch(this, shift)); + shift = this.__last_index__; + } + var tail = shift ? text.slice(shift) : text; + while (this.test(tail)) { + result.push(createMatch(this, shift)); + tail = tail.slice(this.__last_index__); + shift += this.__last_index__; + } + if (result.length) { + return result; + } + return null; + }; + LinkifyIt.prototype.matchAtStart = function matchAtStart(text) { + this.__text_cache__ = text; + this.__index__ = -1; + if (!text.length) + return null; + var m2 = this.re.schema_at_start.exec(text); + if (!m2) + return null; + var len = this.testSchemaAt(text, m2[2], m2[0].length); + if (!len) + return null; + this.__schema__ = m2[2]; + this.__index__ = m2.index + m2[1].length; + this.__last_index__ = m2.index + m2[0].length + len; + return createMatch(this, 0); + }; + LinkifyIt.prototype.tlds = function tlds(list, keepOld) { + list = Array.isArray(list) ? list : [list]; + if (!keepOld) { + this.__tlds__ = list.slice(); + this.__tlds_replaced__ = true; + compile(this); + return this; + } + this.__tlds__ = this.__tlds__.concat(list).sort().filter(function(el, idx, arr) { + return el !== arr[idx - 1]; + }).reverse(); + compile(this); + return this; + }; + LinkifyIt.prototype.normalize = function normalize(match) { + if (!match.schema) { + match.url = "http://" + match.url; + } + if (match.schema === "mailto:" && !/^mailto:/i.test(match.url)) { + match.url = "mailto:" + match.url; + } + }; + LinkifyIt.prototype.onCompile = function onCompile() { + }; + module2.exports = LinkifyIt; + } +}); + +// node_modules/markdown-it/lib/presets/default.js +var require_default = __commonJS({ + "node_modules/markdown-it/lib/presets/default.js"(exports, module2) { + "use strict"; + module2.exports = { + options: { + html: false, + xhtmlOut: false, + breaks: false, + langPrefix: "language-", + linkify: false, + typographer: false, + quotes: "\u201C\u201D\u2018\u2019", + highlight: null, + maxNesting: 100 + }, + components: { + core: {}, + block: {}, + inline: {} + } + }; + } +}); + +// node_modules/markdown-it/lib/presets/zero.js +var require_zero = __commonJS({ + "node_modules/markdown-it/lib/presets/zero.js"(exports, module2) { + "use strict"; + module2.exports = { + options: { + html: false, + xhtmlOut: false, + breaks: false, + langPrefix: "language-", + linkify: false, + typographer: false, + quotes: "\u201C\u201D\u2018\u2019", + highlight: null, + maxNesting: 20 + }, + components: { + core: { + rules: [ + "normalize", + "block", + "inline", + "text_join" + ] + }, + block: { + rules: [ + "paragraph" + ] + }, + inline: { + rules: [ + "text" + ], + rules2: [ + "balance_pairs", + "fragments_join" + ] + } + } + }; + } +}); + +// node_modules/markdown-it/lib/presets/commonmark.js +var require_commonmark = __commonJS({ + "node_modules/markdown-it/lib/presets/commonmark.js"(exports, module2) { + "use strict"; + module2.exports = { + options: { + html: true, + xhtmlOut: true, + breaks: false, + langPrefix: "language-", + linkify: false, + typographer: false, + quotes: "\u201C\u201D\u2018\u2019", + highlight: null, + maxNesting: 20 + }, + components: { + core: { + rules: [ + "normalize", + "block", + "inline", + "text_join" + ] + }, + block: { + rules: [ + "blockquote", + "code", + "fence", + "heading", + "hr", + "html_block", + "lheading", + "list", + "reference", + "paragraph" + ] + }, + inline: { + rules: [ + "autolink", + "backticks", + "emphasis", + "entity", + "escape", + "html_inline", + "image", + "link", + "newline", + "text" + ], + rules2: [ + "balance_pairs", + "emphasis", + "fragments_join" + ] + } + } + }; + } +}); + +// node_modules/markdown-it/lib/index.js +var require_lib2 = __commonJS({ + "node_modules/markdown-it/lib/index.js"(exports, module2) { + "use strict"; + var utils = require_utils(); + var helpers = require_helpers(); + var Renderer = require_renderer(); + var ParserCore = require_parser_core(); + var ParserBlock = require_parser_block(); + var ParserInline = require_parser_inline(); + var LinkifyIt = require_linkify_it(); + var mdurl = require_mdurl(); + var punycode = require("punycode"); + var config = { + default: require_default(), + zero: require_zero(), + commonmark: require_commonmark() + }; + var BAD_PROTO_RE = /^(vbscript|javascript|file|data):/; + var GOOD_DATA_RE = /^data:image\/(gif|png|jpeg|webp);/; + function validateLink(url) { + var str = url.trim().toLowerCase(); + return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) ? true : false : true; + } + var RECODE_HOSTNAME_FOR = ["http:", "https:", "mailto:"]; + function normalizeLink(url) { + var parsed = mdurl.parse(url, true); + if (parsed.hostname) { + if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) { + try { + parsed.hostname = punycode.toASCII(parsed.hostname); + } catch (er) { + } + } + } + return mdurl.encode(mdurl.format(parsed)); + } + function normalizeLinkText(url) { + var parsed = mdurl.parse(url, true); + if (parsed.hostname) { + if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) { + try { + parsed.hostname = punycode.toUnicode(parsed.hostname); + } catch (er) { + } + } + } + return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + "%"); + } + function MarkdownIt(presetName, options) { + if (!(this instanceof MarkdownIt)) { + return new MarkdownIt(presetName, options); + } + if (!options) { + if (!utils.isString(presetName)) { + options = presetName || {}; + presetName = "default"; + } + } + this.inline = new ParserInline(); + this.block = new ParserBlock(); + this.core = new ParserCore(); + this.renderer = new Renderer(); + this.linkify = new LinkifyIt(); + this.validateLink = validateLink; + this.normalizeLink = normalizeLink; + this.normalizeLinkText = normalizeLinkText; + this.utils = utils; + this.helpers = utils.assign({}, helpers); + this.options = {}; + this.configure(presetName); + if (options) { + this.set(options); + } + } + MarkdownIt.prototype.set = function(options) { + utils.assign(this.options, options); + return this; + }; + MarkdownIt.prototype.configure = function(presets) { + var self2 = this, presetName; + if (utils.isString(presets)) { + presetName = presets; + presets = config[presetName]; + if (!presets) { + throw new Error('Wrong `markdown-it` preset "' + presetName + '", check name'); + } + } + if (!presets) { + throw new Error("Wrong `markdown-it` preset, can't be empty"); + } + if (presets.options) { + self2.set(presets.options); + } + if (presets.components) { + Object.keys(presets.components).forEach(function(name) { + if (presets.components[name].rules) { + self2[name].ruler.enableOnly(presets.components[name].rules); + } + if (presets.components[name].rules2) { + self2[name].ruler2.enableOnly(presets.components[name].rules2); + } + }); + } + return this; + }; + MarkdownIt.prototype.enable = function(list, ignoreInvalid) { + var result = []; + if (!Array.isArray(list)) { + list = [list]; + } + ["core", "block", "inline"].forEach(function(chain) { + result = result.concat(this[chain].ruler.enable(list, true)); + }, this); + result = result.concat(this.inline.ruler2.enable(list, true)); + var missed = list.filter(function(name) { + return result.indexOf(name) < 0; + }); + if (missed.length && !ignoreInvalid) { + throw new Error("MarkdownIt. Failed to enable unknown rule(s): " + missed); + } + return this; + }; + MarkdownIt.prototype.disable = function(list, ignoreInvalid) { + var result = []; + if (!Array.isArray(list)) { + list = [list]; + } + ["core", "block", "inline"].forEach(function(chain) { + result = result.concat(this[chain].ruler.disable(list, true)); + }, this); + result = result.concat(this.inline.ruler2.disable(list, true)); + var missed = list.filter(function(name) { + return result.indexOf(name) < 0; + }); + if (missed.length && !ignoreInvalid) { + throw new Error("MarkdownIt. Failed to disable unknown rule(s): " + missed); + } + return this; + }; + MarkdownIt.prototype.use = function(plugin) { + var args = [this].concat(Array.prototype.slice.call(arguments, 1)); + plugin.apply(plugin, args); + return this; + }; + MarkdownIt.prototype.parse = function(src, env) { + if (typeof src !== "string") { + throw new Error("Input data should be a String"); + } + var state = new this.core.State(src, this, env); + this.core.process(state); + return state.tokens; + }; + MarkdownIt.prototype.render = function(src, env) { + env = env || {}; + return this.renderer.render(this.parse(src, env), this.options, env); + }; + MarkdownIt.prototype.parseInline = function(src, env) { + var state = new this.core.State(src, this, env); + state.inlineMode = true; + this.core.process(state); + return state.tokens; + }; + MarkdownIt.prototype.renderInline = function(src, env) { + env = env || {}; + return this.renderer.render(this.parseInline(src, env), this.options, env); + }; + module2.exports = MarkdownIt; + } +}); + +// node_modules/markdown-it/index.js +var require_markdown_it = __commonJS({ + "node_modules/markdown-it/index.js"(exports, module2) { + "use strict"; + module2.exports = require_lib2(); + } +}); + +// node_modules/papaparse/papaparse.min.js +var require_papaparse_min = __commonJS({ + "node_modules/papaparse/papaparse.min.js"(exports, module2) { + !function(e, t2) { + "function" == typeof define && define.amd ? define([], t2) : "object" == typeof module2 && "undefined" != typeof exports ? module2.exports = t2() : e.Papa = t2(); + }(exports, function s2() { + "use strict"; + var f3 = "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== f3 ? f3 : {}; + var n2 = !f3.document && !!f3.postMessage, o2 = f3.IS_PAPA_WORKER || false, a2 = {}, u2 = 0, b2 = { parse: function(e, t2) { + var r3 = (t2 = t2 || {}).dynamicTyping || false; + J(r3) && (t2.dynamicTypingFunction = r3, r3 = {}); + if (t2.dynamicTyping = r3, t2.transform = !!J(t2.transform) && t2.transform, t2.worker && b2.WORKERS_SUPPORTED) { + var i2 = function() { + if (!b2.WORKERS_SUPPORTED) + return false; + var e2 = (r4 = f3.URL || f3.webkitURL || null, i3 = s2.toString(), b2.BLOB_URL || (b2.BLOB_URL = r4.createObjectURL(new Blob(["var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; ", "(", i3, ")();"], { type: "text/javascript" })))), t3 = new f3.Worker(e2); + var r4, i3; + return t3.onmessage = _5, t3.id = u2++, a2[t3.id] = t3; + }(); + return i2.userStep = t2.step, i2.userChunk = t2.chunk, i2.userComplete = t2.complete, i2.userError = t2.error, t2.step = J(t2.step), t2.chunk = J(t2.chunk), t2.complete = J(t2.complete), t2.error = J(t2.error), delete t2.worker, void i2.postMessage({ input: e, config: t2, workerId: i2.id }); + } + var n3 = null; + b2.NODE_STREAM_INPUT, "string" == typeof e ? (e = function(e2) { + if (65279 === e2.charCodeAt(0)) + return e2.slice(1); + return e2; + }(e), n3 = t2.download ? new l2(t2) : new p2(t2)) : true === e.readable && J(e.read) && J(e.on) ? n3 = new g2(t2) : (f3.File && e instanceof File || e instanceof Object) && (n3 = new c2(t2)); + return n3.stream(e); + }, unparse: function(e, t2) { + var n3 = false, _6 = true, m3 = ",", y3 = "\r\n", s3 = '"', a3 = s3 + s3, r3 = false, i2 = null, o3 = false; + !function() { + if ("object" != typeof t2) + return; + "string" != typeof t2.delimiter || b2.BAD_DELIMITERS.filter(function(e2) { + return -1 !== t2.delimiter.indexOf(e2); + }).length || (m3 = t2.delimiter); + ("boolean" == typeof t2.quotes || "function" == typeof t2.quotes || Array.isArray(t2.quotes)) && (n3 = t2.quotes); + "boolean" != typeof t2.skipEmptyLines && "string" != typeof t2.skipEmptyLines || (r3 = t2.skipEmptyLines); + "string" == typeof t2.newline && (y3 = t2.newline); + "string" == typeof t2.quoteChar && (s3 = t2.quoteChar); + "boolean" == typeof t2.header && (_6 = t2.header); + if (Array.isArray(t2.columns)) { + if (0 === t2.columns.length) + throw new Error("Option columns is empty"); + i2 = t2.columns; + } + void 0 !== t2.escapeChar && (a3 = t2.escapeChar + s3); + ("boolean" == typeof t2.escapeFormulae || t2.escapeFormulae instanceof RegExp) && (o3 = t2.escapeFormulae instanceof RegExp ? t2.escapeFormulae : /^[=+\-@\t\r].*$/); + }(); + var u3 = new RegExp(Q2(s3), "g"); + "string" == typeof e && (e = JSON.parse(e)); + if (Array.isArray(e)) { + if (!e.length || Array.isArray(e[0])) + return h3(null, e, r3); + if ("object" == typeof e[0]) + return h3(i2 || Object.keys(e[0]), e, r3); + } else if ("object" == typeof e) + return "string" == typeof e.data && (e.data = JSON.parse(e.data)), Array.isArray(e.data) && (e.fields || (e.fields = e.meta && e.meta.fields || i2), e.fields || (e.fields = Array.isArray(e.data[0]) ? e.fields : "object" == typeof e.data[0] ? Object.keys(e.data[0]) : []), Array.isArray(e.data[0]) || "object" == typeof e.data[0] || (e.data = [e.data])), h3(e.fields || [], e.data || [], r3); + throw new Error("Unable to serialize unrecognized input"); + function h3(e2, t3, r4) { + var i3 = ""; + "string" == typeof e2 && (e2 = JSON.parse(e2)), "string" == typeof t3 && (t3 = JSON.parse(t3)); + var n4 = Array.isArray(e2) && 0 < e2.length, s4 = !Array.isArray(t3[0]); + if (n4 && _6) { + for (var a4 = 0; a4 < e2.length; a4++) + 0 < a4 && (i3 += m3), i3 += v3(e2[a4], a4); + 0 < t3.length && (i3 += y3); + } + for (var o4 = 0; o4 < t3.length; o4++) { + var u4 = n4 ? e2.length : t3[o4].length, h4 = false, f4 = n4 ? 0 === Object.keys(t3[o4]).length : 0 === t3[o4].length; + if (r4 && !n4 && (h4 = "greedy" === r4 ? "" === t3[o4].join("").trim() : 1 === t3[o4].length && 0 === t3[o4][0].length), "greedy" === r4 && n4) { + for (var d3 = [], l3 = 0; l3 < u4; l3++) { + var c3 = s4 ? e2[l3] : l3; + d3.push(t3[o4][c3]); + } + h4 = "" === d3.join("").trim(); + } + if (!h4) { + for (var p3 = 0; p3 < u4; p3++) { + 0 < p3 && !f4 && (i3 += m3); + var g3 = n4 && s4 ? e2[p3] : p3; + i3 += v3(t3[o4][g3], p3); + } + o4 < t3.length - 1 && (!r4 || 0 < u4 && !f4) && (i3 += y3); + } + } + return i3; + } + function v3(e2, t3) { + if (null == e2) + return ""; + if (e2.constructor === Date) + return JSON.stringify(e2).slice(1, 25); + var r4 = false; + o3 && "string" == typeof e2 && o3.test(e2) && (e2 = "'" + e2, r4 = true); + var i3 = e2.toString().replace(u3, a3); + return (r4 = r4 || true === n3 || "function" == typeof n3 && n3(e2, t3) || Array.isArray(n3) && n3[t3] || function(e3, t4) { + for (var r5 = 0; r5 < t4.length; r5++) + if (-1 < e3.indexOf(t4[r5])) + return true; + return false; + }(i3, b2.BAD_DELIMITERS) || -1 < i3.indexOf(m3) || " " === i3.charAt(0) || " " === i3.charAt(i3.length - 1)) ? s3 + i3 + s3 : i3; + } + } }; + if (b2.RECORD_SEP = String.fromCharCode(30), b2.UNIT_SEP = String.fromCharCode(31), b2.BYTE_ORDER_MARK = "\uFEFF", b2.BAD_DELIMITERS = ["\r", "\n", '"', b2.BYTE_ORDER_MARK], b2.WORKERS_SUPPORTED = !n2 && !!f3.Worker, b2.NODE_STREAM_INPUT = 1, b2.LocalChunkSize = 10485760, b2.RemoteChunkSize = 5242880, b2.DefaultDelimiter = ",", b2.Parser = E2, b2.ParserHandle = r2, b2.NetworkStreamer = l2, b2.FileStreamer = c2, b2.StringStreamer = p2, b2.ReadableStreamStreamer = g2, f3.jQuery) { + var d2 = f3.jQuery; + d2.fn.parse = function(o3) { + var r3 = o3.config || {}, u3 = []; + return this.each(function(e2) { + if (!("INPUT" === d2(this).prop("tagName").toUpperCase() && "file" === d2(this).attr("type").toLowerCase() && f3.FileReader) || !this.files || 0 === this.files.length) + return true; + for (var t2 = 0; t2 < this.files.length; t2++) + u3.push({ file: this.files[t2], inputElem: this, instanceConfig: d2.extend({}, r3) }); + }), e(), this; + function e() { + if (0 !== u3.length) { + var e2, t2, r4, i2, n3 = u3[0]; + if (J(o3.before)) { + var s3 = o3.before(n3.file, n3.inputElem); + if ("object" == typeof s3) { + if ("abort" === s3.action) + return e2 = "AbortError", t2 = n3.file, r4 = n3.inputElem, i2 = s3.reason, void (J(o3.error) && o3.error({ name: e2 }, t2, r4, i2)); + if ("skip" === s3.action) + return void h3(); + "object" == typeof s3.config && (n3.instanceConfig = d2.extend(n3.instanceConfig, s3.config)); + } else if ("skip" === s3) + return void h3(); + } + var a3 = n3.instanceConfig.complete; + n3.instanceConfig.complete = function(e3) { + J(a3) && a3(e3, n3.file, n3.inputElem), h3(); + }, b2.parse(n3.file, n3.instanceConfig); + } else + J(o3.complete) && o3.complete(); + } + function h3() { + u3.splice(0, 1), e(); + } + }; + } + function h2(e) { + this._handle = null, this._finished = false, this._completed = false, this._halted = false, this._input = null, this._baseIndex = 0, this._partialLine = "", this._rowCount = 0, this._start = 0, this._nextChunk = null, this.isFirstChunk = true, this._completeResults = { data: [], errors: [], meta: {} }, function(e2) { + var t2 = w2(e2); + t2.chunkSize = parseInt(t2.chunkSize), e2.step || e2.chunk || (t2.chunkSize = null); + this._handle = new r2(t2), (this._handle.streamer = this)._config = t2; + }.call(this, e), this.parseChunk = function(e2, t2) { + if (this.isFirstChunk && J(this._config.beforeFirstChunk)) { + var r3 = this._config.beforeFirstChunk(e2); + void 0 !== r3 && (e2 = r3); + } + this.isFirstChunk = false, this._halted = false; + var i2 = this._partialLine + e2; + this._partialLine = ""; + var n3 = this._handle.parse(i2, this._baseIndex, !this._finished); + if (!this._handle.paused() && !this._handle.aborted()) { + var s3 = n3.meta.cursor; + this._finished || (this._partialLine = i2.substring(s3 - this._baseIndex), this._baseIndex = s3), n3 && n3.data && (this._rowCount += n3.data.length); + var a3 = this._finished || this._config.preview && this._rowCount >= this._config.preview; + if (o2) + f3.postMessage({ results: n3, workerId: b2.WORKER_ID, finished: a3 }); + else if (J(this._config.chunk) && !t2) { + if (this._config.chunk(n3, this._handle), this._handle.paused() || this._handle.aborted()) + return void (this._halted = true); + n3 = void 0, this._completeResults = void 0; + } + return this._config.step || this._config.chunk || (this._completeResults.data = this._completeResults.data.concat(n3.data), this._completeResults.errors = this._completeResults.errors.concat(n3.errors), this._completeResults.meta = n3.meta), this._completed || !a3 || !J(this._config.complete) || n3 && n3.meta.aborted || (this._config.complete(this._completeResults, this._input), this._completed = true), a3 || n3 && n3.meta.paused || this._nextChunk(), n3; + } + this._halted = true; + }, this._sendError = function(e2) { + J(this._config.error) ? this._config.error(e2) : o2 && this._config.error && f3.postMessage({ workerId: b2.WORKER_ID, error: e2, finished: false }); + }; + } + function l2(e) { + var i2; + (e = e || {}).chunkSize || (e.chunkSize = b2.RemoteChunkSize), h2.call(this, e), this._nextChunk = n2 ? function() { + this._readChunk(), this._chunkLoaded(); + } : function() { + this._readChunk(); + }, this.stream = function(e2) { + this._input = e2, this._nextChunk(); + }, this._readChunk = function() { + if (this._finished) + this._chunkLoaded(); + else { + if (i2 = new XMLHttpRequest(), this._config.withCredentials && (i2.withCredentials = this._config.withCredentials), n2 || (i2.onload = v2(this._chunkLoaded, this), i2.onerror = v2(this._chunkError, this)), i2.open(this._config.downloadRequestBody ? "POST" : "GET", this._input, !n2), this._config.downloadRequestHeaders) { + var e2 = this._config.downloadRequestHeaders; + for (var t2 in e2) + i2.setRequestHeader(t2, e2[t2]); + } + if (this._config.chunkSize) { + var r3 = this._start + this._config.chunkSize - 1; + i2.setRequestHeader("Range", "bytes=" + this._start + "-" + r3); + } + try { + i2.send(this._config.downloadRequestBody); + } catch (e3) { + this._chunkError(e3.message); + } + n2 && 0 === i2.status && this._chunkError(); + } + }, this._chunkLoaded = function() { + 4 === i2.readyState && (i2.status < 200 || 400 <= i2.status ? this._chunkError() : (this._start += this._config.chunkSize ? this._config.chunkSize : i2.responseText.length, this._finished = !this._config.chunkSize || this._start >= function(e2) { + var t2 = e2.getResponseHeader("Content-Range"); + if (null === t2) + return -1; + return parseInt(t2.substring(t2.lastIndexOf("/") + 1)); + }(i2), this.parseChunk(i2.responseText))); + }, this._chunkError = function(e2) { + var t2 = i2.statusText || e2; + this._sendError(new Error(t2)); + }; + } + function c2(e) { + var i2, n3; + (e = e || {}).chunkSize || (e.chunkSize = b2.LocalChunkSize), h2.call(this, e); + var s3 = "undefined" != typeof FileReader; + this.stream = function(e2) { + this._input = e2, n3 = e2.slice || e2.webkitSlice || e2.mozSlice, s3 ? ((i2 = new FileReader()).onload = v2(this._chunkLoaded, this), i2.onerror = v2(this._chunkError, this)) : i2 = new FileReaderSync(), this._nextChunk(); + }, this._nextChunk = function() { + this._finished || this._config.preview && !(this._rowCount < this._config.preview) || this._readChunk(); + }, this._readChunk = function() { + var e2 = this._input; + if (this._config.chunkSize) { + var t2 = Math.min(this._start + this._config.chunkSize, this._input.size); + e2 = n3.call(e2, this._start, t2); + } + var r3 = i2.readAsText(e2, this._config.encoding); + s3 || this._chunkLoaded({ target: { result: r3 } }); + }, this._chunkLoaded = function(e2) { + this._start += this._config.chunkSize, this._finished = !this._config.chunkSize || this._start >= this._input.size, this.parseChunk(e2.target.result); + }, this._chunkError = function() { + this._sendError(i2.error); + }; + } + function p2(e) { + var r3; + h2.call(this, e = e || {}), this.stream = function(e2) { + return r3 = e2, this._nextChunk(); + }, this._nextChunk = function() { + if (!this._finished) { + var e2, t2 = this._config.chunkSize; + return t2 ? (e2 = r3.substring(0, t2), r3 = r3.substring(t2)) : (e2 = r3, r3 = ""), this._finished = !r3, this.parseChunk(e2); + } + }; + } + function g2(e) { + h2.call(this, e = e || {}); + var t2 = [], r3 = true, i2 = false; + this.pause = function() { + h2.prototype.pause.apply(this, arguments), this._input.pause(); + }, this.resume = function() { + h2.prototype.resume.apply(this, arguments), this._input.resume(); + }, this.stream = function(e2) { + this._input = e2, this._input.on("data", this._streamData), this._input.on("end", this._streamEnd), this._input.on("error", this._streamError); + }, this._checkIsFinished = function() { + i2 && 1 === t2.length && (this._finished = true); + }, this._nextChunk = function() { + this._checkIsFinished(), t2.length ? this.parseChunk(t2.shift()) : r3 = true; + }, this._streamData = v2(function(e2) { + try { + t2.push("string" == typeof e2 ? e2 : e2.toString(this._config.encoding)), r3 && (r3 = false, this._checkIsFinished(), this.parseChunk(t2.shift())); + } catch (e3) { + this._streamError(e3); + } + }, this), this._streamError = v2(function(e2) { + this._streamCleanUp(), this._sendError(e2); + }, this), this._streamEnd = v2(function() { + this._streamCleanUp(), i2 = true, this._streamData(""); + }, this), this._streamCleanUp = v2(function() { + this._input.removeListener("data", this._streamData), this._input.removeListener("end", this._streamEnd), this._input.removeListener("error", this._streamError); + }, this); + } + function r2(m3) { + var a3, o3, u3, i2 = Math.pow(2, 53), n3 = -i2, s3 = /^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/, h3 = /^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/, t2 = this, r3 = 0, f4 = 0, d3 = false, e = false, l3 = [], c3 = { data: [], errors: [], meta: {} }; + if (J(m3.step)) { + var p3 = m3.step; + m3.step = function(e2) { + if (c3 = e2, _6()) + g3(); + else { + if (g3(), 0 === c3.data.length) + return; + r3 += e2.data.length, m3.preview && r3 > m3.preview ? o3.abort() : (c3.data = c3.data[0], p3(c3, t2)); + } + }; + } + function y3(e2) { + return "greedy" === m3.skipEmptyLines ? "" === e2.join("").trim() : 1 === e2.length && 0 === e2[0].length; + } + function g3() { + return c3 && u3 && (k2("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" + b2.DefaultDelimiter + "'"), u3 = false), m3.skipEmptyLines && (c3.data = c3.data.filter(function(e2) { + return !y3(e2); + })), _6() && function() { + if (!c3) + return; + function e2(e3, t4) { + J(m3.transformHeader) && (e3 = m3.transformHeader(e3, t4)), l3.push(e3); + } + if (Array.isArray(c3.data[0])) { + for (var t3 = 0; _6() && t3 < c3.data.length; t3++) + c3.data[t3].forEach(e2); + c3.data.splice(0, 1); + } else + c3.data.forEach(e2); + }(), function() { + if (!c3 || !m3.header && !m3.dynamicTyping && !m3.transform) + return c3; + function e2(e3, t4) { + var r4, i3 = m3.header ? {} : []; + for (r4 = 0; r4 < e3.length; r4++) { + var n4 = r4, s4 = e3[r4]; + m3.header && (n4 = r4 >= l3.length ? "__parsed_extra" : l3[r4]), m3.transform && (s4 = m3.transform(s4, n4)), s4 = v3(n4, s4), "__parsed_extra" === n4 ? (i3[n4] = i3[n4] || [], i3[n4].push(s4)) : i3[n4] = s4; + } + return m3.header && (r4 > l3.length ? k2("FieldMismatch", "TooManyFields", "Too many fields: expected " + l3.length + " fields but parsed " + r4, f4 + t4) : r4 < l3.length && k2("FieldMismatch", "TooFewFields", "Too few fields: expected " + l3.length + " fields but parsed " + r4, f4 + t4)), i3; + } + var t3 = 1; + !c3.data.length || Array.isArray(c3.data[0]) ? (c3.data = c3.data.map(e2), t3 = c3.data.length) : c3.data = e2(c3.data, 0); + m3.header && c3.meta && (c3.meta.fields = l3); + return f4 += t3, c3; + }(); + } + function _6() { + return m3.header && 0 === l3.length; + } + function v3(e2, t3) { + return r4 = e2, m3.dynamicTypingFunction && void 0 === m3.dynamicTyping[r4] && (m3.dynamicTyping[r4] = m3.dynamicTypingFunction(r4)), true === (m3.dynamicTyping[r4] || m3.dynamicTyping) ? "true" === t3 || "TRUE" === t3 || "false" !== t3 && "FALSE" !== t3 && (function(e3) { + if (s3.test(e3)) { + var t4 = parseFloat(e3); + if (n3 < t4 && t4 < i2) + return true; + } + return false; + }(t3) ? parseFloat(t3) : h3.test(t3) ? new Date(t3) : "" === t3 ? null : t3) : t3; + var r4; + } + function k2(e2, t3, r4, i3) { + var n4 = { type: e2, code: t3, message: r4 }; + void 0 !== i3 && (n4.row = i3), c3.errors.push(n4); + } + this.parse = function(e2, t3, r4) { + var i3 = m3.quoteChar || '"'; + if (m3.newline || (m3.newline = function(e3, t4) { + e3 = e3.substring(0, 1048576); + var r5 = new RegExp(Q2(t4) + "([^]*?)" + Q2(t4), "gm"), i4 = (e3 = e3.replace(r5, "")).split("\r"), n5 = e3.split("\n"), s5 = 1 < n5.length && n5[0].length < i4[0].length; + if (1 === i4.length || s5) + return "\n"; + for (var a4 = 0, o4 = 0; o4 < i4.length; o4++) + "\n" === i4[o4][0] && a4++; + return a4 >= i4.length / 2 ? "\r\n" : "\r"; + }(e2, i3)), u3 = false, m3.delimiter) + J(m3.delimiter) && (m3.delimiter = m3.delimiter(e2), c3.meta.delimiter = m3.delimiter); + else { + var n4 = function(e3, t4, r5, i4, n5) { + var s5, a4, o4, u4; + n5 = n5 || [",", " ", "|", ";", b2.RECORD_SEP, b2.UNIT_SEP]; + for (var h4 = 0; h4 < n5.length; h4++) { + var f5 = n5[h4], d4 = 0, l4 = 0, c4 = 0; + o4 = void 0; + for (var p4 = new E2({ comments: i4, delimiter: f5, newline: t4, preview: 10 }).parse(e3), g4 = 0; g4 < p4.data.length; g4++) + if (r5 && y3(p4.data[g4])) + c4++; + else { + var _7 = p4.data[g4].length; + l4 += _7, void 0 !== o4 ? 0 < _7 && (d4 += Math.abs(_7 - o4), o4 = _7) : o4 = _7; + } + 0 < p4.data.length && (l4 /= p4.data.length - c4), (void 0 === a4 || d4 <= a4) && (void 0 === u4 || u4 < l4) && 1.99 < l4 && (a4 = d4, s5 = f5, u4 = l4); + } + return { successful: !!(m3.delimiter = s5), bestDelimiter: s5 }; + }(e2, m3.newline, m3.skipEmptyLines, m3.comments, m3.delimitersToGuess); + n4.successful ? m3.delimiter = n4.bestDelimiter : (u3 = true, m3.delimiter = b2.DefaultDelimiter), c3.meta.delimiter = m3.delimiter; + } + var s4 = w2(m3); + return m3.preview && m3.header && s4.preview++, a3 = e2, o3 = new E2(s4), c3 = o3.parse(a3, t3, r4), g3(), d3 ? { meta: { paused: true } } : c3 || { meta: { paused: false } }; + }, this.paused = function() { + return d3; + }, this.pause = function() { + d3 = true, o3.abort(), a3 = J(m3.chunk) ? "" : a3.substring(o3.getCharIndex()); + }, this.resume = function() { + t2.streamer._halted ? (d3 = false, t2.streamer.parseChunk(a3, true)) : setTimeout(t2.resume, 3); + }, this.aborted = function() { + return e; + }, this.abort = function() { + e = true, o3.abort(), c3.meta.aborted = true, J(m3.complete) && m3.complete(c3), a3 = ""; + }; + } + function Q2(e) { + return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + } + function E2(j2) { + var z2, M2 = (j2 = j2 || {}).delimiter, P2 = j2.newline, U2 = j2.comments, q2 = j2.step, N2 = j2.preview, B2 = j2.fastMode, K = z2 = void 0 === j2.quoteChar || null === j2.quoteChar ? '"' : j2.quoteChar; + if (void 0 !== j2.escapeChar && (K = j2.escapeChar), ("string" != typeof M2 || -1 < b2.BAD_DELIMITERS.indexOf(M2)) && (M2 = ","), U2 === M2) + throw new Error("Comment character same as delimiter"); + true === U2 ? U2 = "#" : ("string" != typeof U2 || -1 < b2.BAD_DELIMITERS.indexOf(U2)) && (U2 = false), "\n" !== P2 && "\r" !== P2 && "\r\n" !== P2 && (P2 = "\n"); + var W2 = 0, H2 = false; + this.parse = function(i2, t2, r3) { + if ("string" != typeof i2) + throw new Error("Input must be a string"); + var n3 = i2.length, e = M2.length, s3 = P2.length, a3 = U2.length, o3 = J(q2), u3 = [], h3 = [], f4 = [], d3 = W2 = 0; + if (!i2) + return L2(); + if (j2.header && !t2) { + var l3 = i2.split(P2)[0].split(M2), c3 = [], p3 = {}, g3 = false; + for (var _6 in l3) { + var m3 = l3[_6]; + J(j2.transformHeader) && (m3 = j2.transformHeader(m3, _6)); + var y3 = m3, v3 = p3[m3] || 0; + for (0 < v3 && (g3 = true, y3 = m3 + "_" + v3), p3[m3] = v3 + 1; c3.includes(y3); ) + y3 = y3 + "_" + v3; + c3.push(y3); + } + if (g3) { + var k2 = i2.split(P2); + k2[0] = c3.join(M2), i2 = k2.join(P2); + } + } + if (B2 || false !== B2 && -1 === i2.indexOf(z2)) { + for (var b3 = i2.split(P2), E3 = 0; E3 < b3.length; E3++) { + if (f4 = b3[E3], W2 += f4.length, E3 !== b3.length - 1) + W2 += P2.length; + else if (r3) + return L2(); + if (!U2 || f4.substring(0, a3) !== U2) { + if (o3) { + if (u3 = [], I2(f4.split(M2)), F2(), H2) + return L2(); + } else + I2(f4.split(M2)); + if (N2 && N2 <= E3) + return u3 = u3.slice(0, N2), L2(true); + } + } + return L2(); + } + for (var w3 = i2.indexOf(M2, W2), R2 = i2.indexOf(P2, W2), C = new RegExp(Q2(K) + Q2(z2), "g"), S2 = i2.indexOf(z2, W2); ; ) + if (i2[W2] !== z2) + if (U2 && 0 === f4.length && i2.substring(W2, W2 + a3) === U2) { + if (-1 === R2) + return L2(); + W2 = R2 + s3, R2 = i2.indexOf(P2, W2), w3 = i2.indexOf(M2, W2); + } else if (-1 !== w3 && (w3 < R2 || -1 === R2)) + f4.push(i2.substring(W2, w3)), W2 = w3 + e, w3 = i2.indexOf(M2, W2); + else { + if (-1 === R2) + break; + if (f4.push(i2.substring(W2, R2)), D2(R2 + s3), o3 && (F2(), H2)) + return L2(); + if (N2 && u3.length >= N2) + return L2(true); + } + else + for (S2 = W2, W2++; ; ) { + if (-1 === (S2 = i2.indexOf(z2, S2 + 1))) + return r3 || h3.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row: u3.length, index: W2 }), T(); + if (S2 === n3 - 1) + return T(i2.substring(W2, S2).replace(C, z2)); + if (z2 !== K || i2[S2 + 1] !== K) { + if (z2 === K || 0 === S2 || i2[S2 - 1] !== K) { + -1 !== w3 && w3 < S2 + 1 && (w3 = i2.indexOf(M2, S2 + 1)), -1 !== R2 && R2 < S2 + 1 && (R2 = i2.indexOf(P2, S2 + 1)); + var O2 = A2(-1 === R2 ? w3 : Math.min(w3, R2)); + if (i2.substr(S2 + 1 + O2, e) === M2) { + f4.push(i2.substring(W2, S2).replace(C, z2)), i2[W2 = S2 + 1 + O2 + e] !== z2 && (S2 = i2.indexOf(z2, W2)), w3 = i2.indexOf(M2, W2), R2 = i2.indexOf(P2, W2); + break; + } + var x2 = A2(R2); + if (i2.substring(S2 + 1 + x2, S2 + 1 + x2 + s3) === P2) { + if (f4.push(i2.substring(W2, S2).replace(C, z2)), D2(S2 + 1 + x2 + s3), w3 = i2.indexOf(M2, W2), S2 = i2.indexOf(z2, W2), o3 && (F2(), H2)) + return L2(); + if (N2 && u3.length >= N2) + return L2(true); + break; + } + h3.push({ type: "Quotes", code: "InvalidQuotes", message: "Trailing quote on quoted field is malformed", row: u3.length, index: W2 }), S2++; + } + } else + S2++; + } + return T(); + function I2(e2) { + u3.push(e2), d3 = W2; + } + function A2(e2) { + var t3 = 0; + if (-1 !== e2) { + var r4 = i2.substring(S2 + 1, e2); + r4 && "" === r4.trim() && (t3 = r4.length); + } + return t3; + } + function T(e2) { + return r3 || (void 0 === e2 && (e2 = i2.substring(W2)), f4.push(e2), W2 = n3, I2(f4), o3 && F2()), L2(); + } + function D2(e2) { + W2 = e2, I2(f4), f4 = [], R2 = i2.indexOf(P2, W2); + } + function L2(e2) { + return { data: u3, errors: h3, meta: { delimiter: M2, linebreak: P2, aborted: H2, truncated: !!e2, cursor: d3 + (t2 || 0) } }; + } + function F2() { + q2(L2()), u3 = [], h3 = []; + } + }, this.abort = function() { + H2 = true; + }, this.getCharIndex = function() { + return W2; + }; + } + function _5(e) { + var t2 = e.data, r3 = a2[t2.workerId], i2 = false; + if (t2.error) + r3.userError(t2.error, t2.file); + else if (t2.results && t2.results.data) { + var n3 = { abort: function() { + i2 = true, m2(t2.workerId, { data: [], errors: [], meta: { aborted: true } }); + }, pause: y2, resume: y2 }; + if (J(r3.userStep)) { + for (var s3 = 0; s3 < t2.results.data.length && (r3.userStep({ data: t2.results.data[s3], errors: t2.results.errors, meta: t2.results.meta }, n3), !i2); s3++) + ; + delete t2.results; + } else + J(r3.userChunk) && (r3.userChunk(t2.results, n3, t2.file), delete t2.results); + } + t2.finished && !i2 && m2(t2.workerId, t2.results); + } + function m2(e, t2) { + var r3 = a2[e]; + J(r3.userComplete) && r3.userComplete(t2), r3.terminate(), delete a2[e]; + } + function y2() { + throw new Error("Not implemented."); + } + function w2(e) { + if ("object" != typeof e || null === e) + return e; + var t2 = Array.isArray(e) ? [] : {}; + for (var r3 in e) + t2[r3] = w2(e[r3]); + return t2; + } + function v2(e, t2) { + return function() { + e.apply(t2, arguments); + }; + } + function J(e) { + return "function" == typeof e; + } + return o2 && (f3.onmessage = function(e) { + var t2 = e.data; + void 0 === b2.WORKER_ID && t2 && (b2.WORKER_ID = t2.workerId); + if ("string" == typeof t2.input) + f3.postMessage({ workerId: b2.WORKER_ID, results: b2.parse(t2.input, t2.config), finished: true }); + else if (f3.File && t2.input instanceof File || t2.input instanceof Object) { + var r3 = b2.parse(t2.input, t2.config); + r3 && f3.postMessage({ workerId: b2.WORKER_ID, results: r3, finished: true }); + } + }), (l2.prototype = Object.create(h2.prototype)).constructor = l2, (c2.prototype = Object.create(h2.prototype)).constructor = c2, (p2.prototype = Object.create(p2.prototype)).constructor = p2, (g2.prototype = Object.create(h2.prototype)).constructor = g2, b2; + }); + } +}); + +// node_modules/fuzzysort/fuzzysort.js +var require_fuzzysort = __commonJS({ + "node_modules/fuzzysort/fuzzysort.js"(exports, module2) { + ((root, UMD) => { + if (typeof define === "function" && define.amd) + define([], UMD); + else if (typeof module2 === "object" && module2.exports) + module2.exports = UMD(); + else + root["fuzzysort"] = UMD(); + })(exports, (_5) => { + "use strict"; + var single = (search, target) => { + if (search == "farzher") + return { target: "farzher was here (^-^*)/", score: 0, _indexes: [0] }; + if (!search || !target) + return NULL; + var preparedSearch = getPreparedSearch(search); + if (!isObj(target)) + target = getPrepared(target); + var searchBitflags = preparedSearch.bitflags; + if ((searchBitflags & target._bitflags) !== searchBitflags) + return NULL; + return algorithm(preparedSearch, target); + }; + var go = (search, targets, options) => { + if (search == "farzher") + return [{ target: "farzher was here (^-^*)/", score: 0, _indexes: [0], obj: targets ? targets[0] : NULL }]; + if (!search) + return options && options.all ? all(search, targets, options) : noResults; + var preparedSearch = getPreparedSearch(search); + var searchBitflags = preparedSearch.bitflags; + var containsSpace = preparedSearch.containsSpace; + var threshold = options && options.threshold || INT_MIN; + var limit = options && options["limit"] || INT_MAX; + var resultsLen = 0; + var limitedCount = 0; + var targetsLen = targets.length; + if (options && options.key) { + var key = options.key; + for (var i2 = 0; i2 < targetsLen; ++i2) { + var obj = targets[i2]; + var target = getValue2(obj, key); + if (!target) + continue; + if (!isObj(target)) + target = getPrepared(target); + if ((searchBitflags & target._bitflags) !== searchBitflags) + continue; + var result = algorithm(preparedSearch, target); + if (result === NULL) + continue; + if (result.score < threshold) + continue; + result = { target: result.target, _targetLower: "", _targetLowerCodes: NULL, _nextBeginningIndexes: NULL, _bitflags: 0, score: result.score, _indexes: result._indexes, obj }; + if (resultsLen < limit) { + q2.add(result); + ++resultsLen; + } else { + ++limitedCount; + if (result.score > q2.peek().score) + q2.replaceTop(result); + } + } + } else if (options && options.keys) { + var scoreFn = options["scoreFn"] || defaultScoreFn; + var keys = options.keys; + var keysLen = keys.length; + for (var i2 = 0; i2 < targetsLen; ++i2) { + var obj = targets[i2]; + var objResults = new Array(keysLen); + for (var keyI = 0; keyI < keysLen; ++keyI) { + var key = keys[keyI]; + var target = getValue2(obj, key); + if (!target) { + objResults[keyI] = NULL; + continue; + } + if (!isObj(target)) + target = getPrepared(target); + if ((searchBitflags & target._bitflags) !== searchBitflags) + objResults[keyI] = NULL; + else + objResults[keyI] = algorithm(preparedSearch, target); + } + objResults.obj = obj; + var score = scoreFn(objResults); + if (score === NULL) + continue; + if (score < threshold) + continue; + objResults.score = score; + if (resultsLen < limit) { + q2.add(objResults); + ++resultsLen; + } else { + ++limitedCount; + if (score > q2.peek().score) + q2.replaceTop(objResults); + } + } + } else { + for (var i2 = 0; i2 < targetsLen; ++i2) { + var target = targets[i2]; + if (!target) + continue; + if (!isObj(target)) + target = getPrepared(target); + if ((searchBitflags & target._bitflags) !== searchBitflags) + continue; + var result = algorithm(preparedSearch, target); + if (result === NULL) + continue; + if (result.score < threshold) + continue; + if (resultsLen < limit) { + q2.add(result); + ++resultsLen; + } else { + ++limitedCount; + if (result.score > q2.peek().score) + q2.replaceTop(result); + } + } + } + if (resultsLen === 0) + return noResults; + var results = new Array(resultsLen); + for (var i2 = resultsLen - 1; i2 >= 0; --i2) + results[i2] = q2.poll(); + results.total = resultsLen + limitedCount; + return results; + }; + var highlight = (result, hOpen, hClose) => { + if (typeof hOpen === "function") + return highlightCallback(result, hOpen); + if (result === NULL) + return NULL; + if (hOpen === void 0) + hOpen = ""; + if (hClose === void 0) + hClose = ""; + var highlighted = ""; + var matchesIndex = 0; + var opened = false; + var target = result.target; + var targetLen = target.length; + var indexes2 = result._indexes; + indexes2 = indexes2.slice(0, indexes2.len).sort((a2, b2) => a2 - b2); + for (var i2 = 0; i2 < targetLen; ++i2) { + var char = target[i2]; + if (indexes2[matchesIndex] === i2) { + ++matchesIndex; + if (!opened) { + opened = true; + highlighted += hOpen; + } + if (matchesIndex === indexes2.length) { + highlighted += char + hClose + target.substr(i2 + 1); + break; + } + } else { + if (opened) { + opened = false; + highlighted += hClose; + } + } + highlighted += char; + } + return highlighted; + }; + var highlightCallback = (result, cb) => { + if (result === NULL) + return NULL; + var target = result.target; + var targetLen = target.length; + var indexes2 = result._indexes; + indexes2 = indexes2.slice(0, indexes2.len).sort((a2, b2) => a2 - b2); + var highlighted = ""; + var matchI = 0; + var indexesI = 0; + var opened = false; + var result = []; + for (var i2 = 0; i2 < targetLen; ++i2) { + var char = target[i2]; + if (indexes2[indexesI] === i2) { + ++indexesI; + if (!opened) { + opened = true; + result.push(highlighted); + highlighted = ""; + } + if (indexesI === indexes2.length) { + highlighted += char; + result.push(cb(highlighted, matchI++)); + highlighted = ""; + result.push(target.substr(i2 + 1)); + break; + } + } else { + if (opened) { + opened = false; + result.push(cb(highlighted, matchI++)); + highlighted = ""; + } + } + highlighted += char; + } + return result; + }; + var indexes = (result) => result._indexes.slice(0, result._indexes.len).sort((a2, b2) => a2 - b2); + var prepare = (target) => { + if (typeof target !== "string") + target = ""; + var info = prepareLowerInfo(target); + return { "target": target, _targetLower: info._lower, _targetLowerCodes: info.lowerCodes, _nextBeginningIndexes: NULL, _bitflags: info.bitflags, "score": NULL, _indexes: [0], "obj": NULL }; + }; + var prepareSearch = (search) => { + if (typeof search !== "string") + search = ""; + search = search.trim(); + var info = prepareLowerInfo(search); + var spaceSearches = []; + if (info.containsSpace) { + var searches = search.split(/\s+/); + searches = [...new Set(searches)]; + for (var i2 = 0; i2 < searches.length; i2++) { + if (searches[i2] === "") + continue; + var _info = prepareLowerInfo(searches[i2]); + spaceSearches.push({ lowerCodes: _info.lowerCodes, _lower: searches[i2].toLowerCase(), containsSpace: false }); + } + } + return { lowerCodes: info.lowerCodes, bitflags: info.bitflags, containsSpace: info.containsSpace, _lower: info._lower, spaceSearches }; + }; + var getPrepared = (target) => { + if (target.length > 999) + return prepare(target); + var targetPrepared = preparedCache.get(target); + if (targetPrepared !== void 0) + return targetPrepared; + targetPrepared = prepare(target); + preparedCache.set(target, targetPrepared); + return targetPrepared; + }; + var getPreparedSearch = (search) => { + if (search.length > 999) + return prepareSearch(search); + var searchPrepared = preparedSearchCache.get(search); + if (searchPrepared !== void 0) + return searchPrepared; + searchPrepared = prepareSearch(search); + preparedSearchCache.set(search, searchPrepared); + return searchPrepared; + }; + var all = (search, targets, options) => { + var results = []; + results.total = targets.length; + var limit = options && options.limit || INT_MAX; + if (options && options.key) { + for (var i2 = 0; i2 < targets.length; i2++) { + var obj = targets[i2]; + var target = getValue2(obj, options.key); + if (!target) + continue; + if (!isObj(target)) + target = getPrepared(target); + target.score = INT_MIN; + target._indexes.len = 0; + var result = target; + result = { target: result.target, _targetLower: "", _targetLowerCodes: NULL, _nextBeginningIndexes: NULL, _bitflags: 0, score: target.score, _indexes: NULL, obj }; + results.push(result); + if (results.length >= limit) + return results; + } + } else if (options && options.keys) { + for (var i2 = 0; i2 < targets.length; i2++) { + var obj = targets[i2]; + var objResults = new Array(options.keys.length); + for (var keyI = options.keys.length - 1; keyI >= 0; --keyI) { + var target = getValue2(obj, options.keys[keyI]); + if (!target) { + objResults[keyI] = NULL; + continue; + } + if (!isObj(target)) + target = getPrepared(target); + target.score = INT_MIN; + target._indexes.len = 0; + objResults[keyI] = target; + } + objResults.obj = obj; + objResults.score = INT_MIN; + results.push(objResults); + if (results.length >= limit) + return results; + } + } else { + for (var i2 = 0; i2 < targets.length; i2++) { + var target = targets[i2]; + if (!target) + continue; + if (!isObj(target)) + target = getPrepared(target); + target.score = INT_MIN; + target._indexes.len = 0; + results.push(target); + if (results.length >= limit) + return results; + } + } + return results; + }; + var algorithm = (preparedSearch, prepared, allowSpaces = false) => { + if (allowSpaces === false && preparedSearch.containsSpace) + return algorithmSpaces(preparedSearch, prepared); + var searchLower = preparedSearch._lower; + var searchLowerCodes = preparedSearch.lowerCodes; + var searchLowerCode = searchLowerCodes[0]; + var targetLowerCodes = prepared._targetLowerCodes; + var searchLen = searchLowerCodes.length; + var targetLen = targetLowerCodes.length; + var searchI = 0; + var targetI = 0; + var matchesSimpleLen = 0; + for (; ; ) { + var isMatch = searchLowerCode === targetLowerCodes[targetI]; + if (isMatch) { + matchesSimple[matchesSimpleLen++] = targetI; + ++searchI; + if (searchI === searchLen) + break; + searchLowerCode = searchLowerCodes[searchI]; + } + ++targetI; + if (targetI >= targetLen) + return NULL; + } + var searchI = 0; + var successStrict = false; + var matchesStrictLen = 0; + var nextBeginningIndexes = prepared._nextBeginningIndexes; + if (nextBeginningIndexes === NULL) + nextBeginningIndexes = prepared._nextBeginningIndexes = prepareNextBeginningIndexes(prepared.target); + var firstPossibleI = targetI = matchesSimple[0] === 0 ? 0 : nextBeginningIndexes[matchesSimple[0] - 1]; + var backtrackCount = 0; + if (targetI !== targetLen) + for (; ; ) { + if (targetI >= targetLen) { + if (searchI <= 0) + break; + ++backtrackCount; + if (backtrackCount > 200) + break; + --searchI; + var lastMatch = matchesStrict[--matchesStrictLen]; + targetI = nextBeginningIndexes[lastMatch]; + } else { + var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI]; + if (isMatch) { + matchesStrict[matchesStrictLen++] = targetI; + ++searchI; + if (searchI === searchLen) { + successStrict = true; + break; + } + ++targetI; + } else { + targetI = nextBeginningIndexes[targetI]; + } + } + } + var substringIndex = prepared._targetLower.indexOf(searchLower, matchesSimple[0]); + var isSubstring = ~substringIndex; + if (isSubstring && !successStrict) { + for (var i2 = 0; i2 < matchesSimpleLen; ++i2) + matchesSimple[i2] = substringIndex + i2; + } + var isSubstringBeginning = false; + if (isSubstring) { + isSubstringBeginning = prepared._nextBeginningIndexes[substringIndex - 1] === substringIndex; + } + { + if (successStrict) { + var matchesBest = matchesStrict; + var matchesBestLen = matchesStrictLen; + } else { + var matchesBest = matchesSimple; + var matchesBestLen = matchesSimpleLen; + } + var score = 0; + var extraMatchGroupCount = 0; + for (var i2 = 1; i2 < searchLen; ++i2) { + if (matchesBest[i2] - matchesBest[i2 - 1] !== 1) { + score -= matchesBest[i2]; + ++extraMatchGroupCount; + } + } + var unmatchedDistance = matchesBest[searchLen - 1] - matchesBest[0] - (searchLen - 1); + score -= (12 + unmatchedDistance) * extraMatchGroupCount; + if (matchesBest[0] !== 0) + score -= matchesBest[0] * matchesBest[0] * 0.2; + if (!successStrict) { + score *= 1e3; + } else { + var uniqueBeginningIndexes = 1; + for (var i2 = nextBeginningIndexes[0]; i2 < targetLen; i2 = nextBeginningIndexes[i2]) + ++uniqueBeginningIndexes; + if (uniqueBeginningIndexes > 24) + score *= (uniqueBeginningIndexes - 24) * 10; + } + if (isSubstring) + score /= 1 + searchLen * searchLen * 1; + if (isSubstringBeginning) + score /= 1 + searchLen * searchLen * 1; + score -= targetLen - searchLen; + prepared.score = score; + for (var i2 = 0; i2 < matchesBestLen; ++i2) + prepared._indexes[i2] = matchesBest[i2]; + prepared._indexes.len = matchesBestLen; + return prepared; + } + }; + var algorithmSpaces = (preparedSearch, target) => { + var seen_indexes = /* @__PURE__ */ new Set(); + var score = 0; + var result = NULL; + var first_seen_index_last_search = 0; + var searches = preparedSearch.spaceSearches; + for (var i2 = 0; i2 < searches.length; ++i2) { + var search = searches[i2]; + result = algorithm(search, target); + if (result === NULL) + return NULL; + score += result.score; + if (result._indexes[0] < first_seen_index_last_search) { + score -= first_seen_index_last_search - result._indexes[0]; + } + first_seen_index_last_search = result._indexes[0]; + for (var j2 = 0; j2 < result._indexes.len; ++j2) + seen_indexes.add(result._indexes[j2]); + } + var allowSpacesResult = algorithm(preparedSearch, target, true); + if (allowSpacesResult !== NULL && allowSpacesResult.score > score) { + return allowSpacesResult; + } + result.score = score; + var i2 = 0; + for (let index of seen_indexes) + result._indexes[i2++] = index; + result._indexes.len = i2; + return result; + }; + var prepareLowerInfo = (str) => { + var strLen = str.length; + var lower = str.toLowerCase(); + var lowerCodes = []; + var bitflags = 0; + var containsSpace = false; + for (var i2 = 0; i2 < strLen; ++i2) { + var lowerCode = lowerCodes[i2] = lower.charCodeAt(i2); + if (lowerCode === 32) { + containsSpace = true; + continue; + } + var bit = lowerCode >= 97 && lowerCode <= 122 ? lowerCode - 97 : lowerCode >= 48 && lowerCode <= 57 ? 26 : lowerCode <= 127 ? 30 : 31; + bitflags |= 1 << bit; + } + return { lowerCodes, bitflags, containsSpace, _lower: lower }; + }; + var prepareBeginningIndexes = (target) => { + var targetLen = target.length; + var beginningIndexes = []; + var beginningIndexesLen = 0; + var wasUpper = false; + var wasAlphanum = false; + for (var i2 = 0; i2 < targetLen; ++i2) { + var targetCode = target.charCodeAt(i2); + var isUpper = targetCode >= 65 && targetCode <= 90; + var isAlphanum = isUpper || targetCode >= 97 && targetCode <= 122 || targetCode >= 48 && targetCode <= 57; + var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum; + wasUpper = isUpper; + wasAlphanum = isAlphanum; + if (isBeginning) + beginningIndexes[beginningIndexesLen++] = i2; + } + return beginningIndexes; + }; + var prepareNextBeginningIndexes = (target) => { + var targetLen = target.length; + var beginningIndexes = prepareBeginningIndexes(target); + var nextBeginningIndexes = []; + var lastIsBeginning = beginningIndexes[0]; + var lastIsBeginningI = 0; + for (var i2 = 0; i2 < targetLen; ++i2) { + if (lastIsBeginning > i2) { + nextBeginningIndexes[i2] = lastIsBeginning; + } else { + lastIsBeginning = beginningIndexes[++lastIsBeginningI]; + nextBeginningIndexes[i2] = lastIsBeginning === void 0 ? targetLen : lastIsBeginning; + } + } + return nextBeginningIndexes; + }; + var cleanup = () => { + preparedCache.clear(); + preparedSearchCache.clear(); + matchesSimple = []; + matchesStrict = []; + }; + var preparedCache = /* @__PURE__ */ new Map(); + var preparedSearchCache = /* @__PURE__ */ new Map(); + var matchesSimple = []; + var matchesStrict = []; + var defaultScoreFn = (a2) => { + var max2 = INT_MIN; + var len = a2.length; + for (var i2 = 0; i2 < len; ++i2) { + var result = a2[i2]; + if (result === NULL) + continue; + var score = result.score; + if (score > max2) + max2 = score; + } + if (max2 === INT_MIN) + return NULL; + return max2; + }; + var getValue2 = (obj, prop) => { + var tmp = obj[prop]; + if (tmp !== void 0) + return tmp; + var segs = prop; + if (!Array.isArray(prop)) + segs = prop.split("."); + var len = segs.length; + var i2 = -1; + while (obj && ++i2 < len) + obj = obj[segs[i2]]; + return obj; + }; + var isObj = (x2) => { + return typeof x2 === "object"; + }; + var INT_MAX = Infinity; + var INT_MIN = -INT_MAX; + var noResults = []; + noResults.total = 0; + var NULL = null; + var fastpriorityqueue = (r2) => { + var e = [], o2 = 0, a2 = {}, v2 = (r3) => { + for (var a3 = 0, v3 = e[a3], c2 = 1; c2 < o2; ) { + var s2 = c2 + 1; + a3 = c2, s2 < o2 && e[s2].score < e[c2].score && (a3 = s2), e[a3 - 1 >> 1] = e[a3], c2 = 1 + (a3 << 1); + } + for (var f3 = a3 - 1 >> 1; a3 > 0 && v3.score < e[f3].score; f3 = (a3 = f3) - 1 >> 1) + e[a3] = e[f3]; + e[a3] = v3; + }; + return a2.add = (r3) => { + var a3 = o2; + e[o2++] = r3; + for (var v3 = a3 - 1 >> 1; a3 > 0 && r3.score < e[v3].score; v3 = (a3 = v3) - 1 >> 1) + e[a3] = e[v3]; + e[a3] = r3; + }, a2.poll = (r3) => { + if (0 !== o2) { + var a3 = e[0]; + return e[0] = e[--o2], v2(), a3; + } + }, a2.peek = (r3) => { + if (0 !== o2) + return e[0]; + }, a2.replaceTop = (r3) => { + e[0] = r3, v2(); + }, a2; + }; + var q2 = fastpriorityqueue(); + return { "single": single, "go": go, "highlight": highlight, "prepare": prepare, "indexes": indexes, "cleanup": cleanup }; + }); + } +}); + // src/main.ts var main_exports = {}; __export(main_exports, { DEFAULT_SETTINGS: () => DEFAULT_SETTINGS, - default: () => NLTPlugin + default: () => DataLoomPlugin }); module.exports = __toCommonJS(main_exports); -var import_obsidian14 = require("obsidian"); +var import_obsidian19 = require("obsidian"); -// src/obsidian/nlt-settings-tab.ts +// src/obsidian/modal/support-modal/index.tsx var import_obsidian = require("obsidian"); + +// src/obsidian/shared/index.ts +var renderBuyMeACoffeeBadge = (contentEl) => { + const linkEl = contentEl.createEl("a", { + href: "https://www.buymeacoffee.com/treywallis" + }); + const imgEl = linkEl.createEl("img"); + imgEl.src = "https://img.buymeacoffee.com/button-api/?text=Buy me a herbal tea&emoji=\u{1F375}&slug=treywallis&button_colour=9478F0&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00&refresh_id=1"; + imgEl.referrerPolicy = "no-referrer"; + imgEl.alt = "Buymeacoffee"; + imgEl.width = 180; +}; +var renderGitHubSponsorBadge = (contentEl) => { + const linkEl = contentEl.createEl("a", { + href: "https://github.com/sponsors/trey-wallis" + }); + const imgEl = linkEl.createEl("img"); + imgEl.src = "https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86"; + imgEl.referrerPolicy = "no-referrer"; + imgEl.alt = "GitHub Sponsor"; + imgEl.width = 110; +}; +var renderDivider = (contentEl) => { + const isFirstChild = contentEl.children.length === 0; + const dividerEl = contentEl.createEl("hr", { + cls: "dataloom-modal__divider" + }); + if (isFirstChild) { + dividerEl.addClass("dataloom-modal__divider--first-child"); + } +}; +var setModalTitle = (containerEl, text) => { + const modalTitleEl = containerEl.querySelector(".modal-title"); + modalTitleEl == null ? void 0 : modalTitleEl.createEl("h3", { text }); + modalTitleEl == null ? void 0 : modalTitleEl.addClass("dataloom-modal__title"); +}; + +// src/obsidian/modal/support-modal/index.tsx +var SupportModal = class extends import_obsidian.Modal { + constructor(app) { + super(app); + } + onOpen() { + const { containerEl } = this; + setModalTitle(containerEl, "Support DataLoom"); + const { contentEl } = this; + renderDivider(contentEl); + this.renderText(contentEl); + const badgeContainer = contentEl.createEl("div", { + cls: "dataloom-support-modal__badge-container" + }); + renderGitHubSponsorBadge(badgeContainer); + renderBuyMeACoffeeBadge(badgeContainer); + } + renderText(contentEl) { + const containerEl = contentEl.createEl("div", { + cls: "dataloom-support-modal__container" + }); + containerEl.createEl("p", { + text: "Fellow loomers, I need your help. I develop this plugin as a free service, however I cannot dedicate adequate time to it without some support." + }); + containerEl.createEl("p", { + text: "If this plugin has helped you, please consider supporting." + }); + containerEl.createEl("p", { + text: "Thank you." + }); + } + onClose() { + const { contentEl } = this; + contentEl.empty(); + } +}; + +// src/obsidian/modal/welcome-modal/index.tsx var import_obsidian2 = require("obsidian"); -var NLTSettingsTab = class extends import_obsidian.PluginSettingTab { - constructor(app2, plugin) { - super(app2, plugin); - __publicField(this, "plugin"); +var WelcomeModal = class extends import_obsidian2.Modal { + constructor(app) { + super(app); + } + onOpen() { + const { containerEl } = this; + containerEl.addClass("dataloom-welcome-modal"); + setModalTitle(containerEl, "Welcome to DataLoom"); + const { contentEl } = this; + contentEl.createDiv({ + text: "Weave together data from diverse sources into a cohesive table view." + }); + renderDivider(contentEl); + contentEl.createEl("h5", { + text: "Learn how to use", + cls: "dataloom-welcome-modal__title" + }); + const cardContainerEl = contentEl.createDiv({ + cls: "dataloom-welcome-modal__card-container" + }); + this.renderCard( + cardContainerEl, + "Quick start", + "Learn the basics of creating a loom", + "https://dataloom.xyz/getting-started/quick-start", + "table" + ); + this.renderCard( + cardContainerEl, + "Import markdown tables and CSV data", + "Learn how to import data from markdown tables and CSV files", + "https://dataloom.xyz/getting-started/importing", + "import" + ); + this.renderCard( + cardContainerEl, + "Embedded looms", + "Learn how to embed a loom into a markdown note", + "https://dataloom.xyz/getting-started/embedding-looms", + "sticky-note" + ); + this.renderCard( + cardContainerEl, + "Keyboard navigation", + "Learn how to navigate looms with your keyboard", + "https://dataloom.xyz/getting-started/keyboard-navigation", + "list-plus" + ); + } + renderCard(contentEl, title, description, link, iconId) { + const cardEl = contentEl.createDiv({ + cls: "dataloom-welcome-modal__card" + }); + const iconEl = cardEl.createDiv(); + (0, import_obsidian2.setIcon)(iconEl, iconId); + iconEl.firstChild.classList.add( + "dataloom-welcome-modal__card-icon" + ); + const cardContainerEl = cardEl.createDiv(); + cardContainerEl.createEl("h6", { + text: title, + cls: "dataloom-welcome-modal__card-title" + }); + cardContainerEl.createEl("p", { + text: description, + cls: "dataloom-welcome-modal__card-description" + }); + cardContainerEl.createEl("a", { text: "Get started", href: link }); + } + onClose() { + const { contentEl } = this; + contentEl.empty(); + } +}; + +// src/obsidian/modal/whats-new-modal/index.tsx +var import_obsidian4 = require("obsidian"); + +// src/data/network.ts +var import_obsidian3 = require("obsidian"); +var getLastestGithubRelease = () => __async(void 0, null, function* () { + try { + const response = yield (0, import_obsidian3.requestUrl)({ + url: "https://api.github.com/repos/trey-wallis/obsidian-dataloom/releases/latest", + method: "GET" + }); + const body = response.json; + return body; + } catch (err) { + console.error(err); + new import_obsidian3.Notice("Error fetching latest release"); + return null; + } +}); + +// src/obsidian/modal/whats-new-modal/index.tsx +var WhatsNewModal = class extends import_obsidian4.Modal { + constructor(app, onModalClose) { + super(app); + this.onModalClose = onModalClose; + } + onOpen() { + return __async(this, null, function* () { + const { containerEl } = this; + setModalTitle(containerEl, "DataLoom - What's New"); + const { contentEl } = this; + renderDivider(contentEl); + this.renderContent(contentEl); + }); + } + renderContent(contentEl) { + return __async(this, null, function* () { + const data = yield getLastestGithubRelease(); + const { body, published_at, tag_name } = data; + if (data) { + const tagEl = contentEl.createEl("h5", { + text: `v${tag_name}`, + cls: "dataloom-whats-new-modal__tag" + }); + const date = new Date(published_at); + tagEl.createSpan({ + text: date.toLocaleDateString(), + cls: "dataloom-whats-new-modal__date" + }); + const bodyEl = contentEl.createDiv(); + const replacedText = this.replaceIssueNumbersWithLinks(body); + import_obsidian4.MarkdownRenderer.render( + this.app, + replacedText, + bodyEl, + "", + new import_obsidian4.Component() + ); + bodyEl.querySelectorAll("a").forEach((a2) => { + const issueNumber = this.extractIssueNumberFromURL(a2.getText()); + if (issueNumber) { + a2.setText(issueNumber); + } + }); + contentEl.createEl("a", { + text: "View all releases", + href: "https://github.com/trey-wallis/obsidian-dataloom/releases" + }); + } else { + contentEl.createDiv({ + text: "Couldn't fetch latest release from GitHub." + }); + } + }); + } + replaceIssueNumbersWithLinks(text) { + const regex = /#(\d+)/g; + const replacedText = text.replace( + regex, + "https://github.com/trey-wallis/obsidian-dataloom/issues/$1" + ); + return replacedText; + } + extractIssueNumberFromURL(text) { + const regex = /\/(\d+)$/; + const matches = text.match(regex); + if (matches && matches.length > 1) { + return "#" + matches[1]; + } + return null; + } + onClose() { + const { contentEl } = this; + contentEl.empty(); + this.onModalClose(); + } +}; + +// src/obsidian/dataloom-settings-tab.ts +var import_obsidian5 = require("obsidian"); +var import_obsidian6 = require("obsidian"); +var DataLoomSettingsTab = class extends import_obsidian5.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); this.plugin = plugin; } display() { const { containerEl } = this; containerEl.empty(); - containerEl.createEl("h2", { text: "Notion-Like Tables" }); - containerEl.createSpan( - {}, - (span) => span.innerHTML = `Please restart Obsidian for these settings to take effect` - ); - new import_obsidian2.Setting(containerEl).setName("File").setHeading(); - const attachmentsFolderDesc = new DocumentFragment(); - attachmentsFolderDesc.createSpan({}, (span) => { - span.innerHTML = `Create tables in the attachments folder defined in the Obsidian settings.

This can be changed in Files & Links -> Default location for new attachments

Otherwise, the custom location below will be used.`; + this.renderSupportHeader(containerEl); + this.renderFileSettings(containerEl); + this.renderTableSettings(containerEl); + this.renderExportSettings(containerEl); + this.renderEmbeddedLoomSettings(containerEl); + this.renderModalSettings(containerEl); + this.renderDebugSettings(containerEl); + } + renderSupportHeader(containerEl) { + new import_obsidian6.Setting(containerEl).setName("DataLoom").setHeading(); + const supportDesc = new DocumentFragment(); + const textEl = supportDesc.createDiv({ + text: "Enjoying the plugin? Consider supporting the development of DataLoom by buying me an herbal tea or sponsoring me on GitHub." }); - new import_obsidian2.Setting(containerEl).setName("Create new tables in the attachments folder").setDesc(attachmentsFolderDesc).addToggle((cb) => { + textEl.style.marginBottom = "1.5em"; + renderGitHubSponsorBadge(supportDesc); + new import_obsidian6.Setting(containerEl).setDesc(supportDesc); + renderBuyMeACoffeeBadge(containerEl); + } + renderFileSettings(containerEl) { + new import_obsidian6.Setting(containerEl).setName("File").setHeading(); + const attachmentsFolderDesc = new DocumentFragment(); + attachmentsFolderDesc.createDiv({ + text: "Create looms in the attachments folder defined in the Obsidian settings." + }); + attachmentsFolderDesc.createSpan({ + text: "This can be changed in" + }); + attachmentsFolderDesc.createSpan({ + text: " Files & Links -> Default location for new attachments", + cls: "dataloom-modal-text--emphasize" + }); + attachmentsFolderDesc.createEl("br"); + attachmentsFolderDesc.createDiv({ + text: "Otherwise, the folder location below will be used" + }); + new import_obsidian6.Setting(containerEl).setName("Create new looms in the attachments folder").setDesc(attachmentsFolderDesc).addToggle((cb) => { cb.setValue( this.plugin.settings.createAtObsidianAttachmentFolder ).onChange((value) => __async(this, null, function* () { @@ -39505,49 +38181,113 @@ var NLTSettingsTab = class extends import_obsidian.PluginSettingTab { this.display(); })); }); - const customLocationDesc = new DocumentFragment(); - customLocationDesc.createSpan({}, (span) => { - span.innerHTML = `Folder that new tables will be created in. Please don't include a slash at the start or end.
e.g. myfolder/subdirectory

Default location is the vault root folder, if not specified.`; + const defaultLocationDesc = new DocumentFragment(); + defaultLocationDesc.createSpan({ + text: "Where newly created looms are placed. Default location is the vault root folder, if not specified." }); if (this.plugin.settings.createAtObsidianAttachmentFolder === false) { - new import_obsidian2.Setting(containerEl).setName("Custom location for new tables").setDesc(customLocationDesc).addText((cb) => { + new import_obsidian6.Setting(containerEl).setName("Default location for new looms").setDesc(defaultLocationDesc).addText((cb) => { cb.setValue( - this.plugin.settings.customFolderForNewTables + this.plugin.settings.customFolderForNewFiles ).onChange((value) => __async(this, null, function* () { - this.plugin.settings.customFolderForNewTables = value; + this.plugin.settings.customFolderForNewFiles = value; yield this.plugin.saveSettings(); })); }); } - const activeFileNameTimestampDesc = new DocumentFragment(); - activeFileNameTimestampDesc.createSpan({}, (span) => { - span.innerHTML = `If a markdown file is open, the active file name and current timestamp will be used as the table name.
e.g. if Test.md is open, the table will be named Test-2023-04-14T13.12.59-06.00.table

Otherwise, the default table file name will be used.
e.g Untitled.table`; + } + renderTableSettings(containerEl) { + const freezeColumnsDesc = new DocumentFragment(); + freezeColumnsDesc.createSpan({ + text: "The number of columns to stay in place when the table scrolls horizontally." }); - new import_obsidian2.Setting(containerEl).setName( - "Create table name based on active file name and timestamp" - ).setDesc(activeFileNameTimestampDesc).addToggle((cb) => { - cb.setValue( - this.plugin.settings.nameWithActiveFileNameAndTimestamp + new import_obsidian6.Setting(containerEl).setName("Table").setHeading(); + new import_obsidian6.Setting(containerEl).setName("Frozen columns").setDesc(freezeColumnsDesc).addDropdown((cb) => { + cb.addOptions({ + "0": "0", + "1": "1", + "2": "2", + "3": "3" + }).setValue( + this.plugin.settings.defaultFrozenColumnCount.toString() ).onChange((value) => __async(this, null, function* () { - this.plugin.settings.nameWithActiveFileNameAndTimestamp = value; + this.plugin.settings.defaultFrozenColumnCount = parseInt(value); yield this.plugin.saveSettings(); })); }); - const exportRenderMarkdownDesc = new DocumentFragment(); - exportRenderMarkdownDesc.createSpan({}, (span) => { - span.innerHTML = "This will cause all exported values to be rendered in markdown format. Disable this option if you primarily export in CSV and don't want markdown, like links wrapped in brackets."; + } + renderExportSettings(containerEl) { + const removeMarkdownOnExportDesc = new DocumentFragment(); + removeMarkdownOnExportDesc.createSpan({ + text: "If enabled, content will be exported as plain text instead of markdown. For example, if enabled, a checkbox cell's content will be exported true or false instead of [ ] or [x]." }); - new import_obsidian2.Setting(containerEl).setName("Export").setHeading(); - new import_obsidian2.Setting(containerEl).setName("Render markdown values").setDesc(exportRenderMarkdownDesc).addToggle((cb) => { - cb.setValue(this.plugin.settings.exportRenderMarkdown).onChange( + new import_obsidian6.Setting(containerEl).setName("Export").setHeading(); + new import_obsidian6.Setting(containerEl).setName("Remove markdown").setDesc(removeMarkdownOnExportDesc).addToggle((cb) => { + cb.setValue( + this.plugin.settings.removeMarkdownOnExport + ).onChange((value) => __async(this, null, function* () { + this.plugin.settings.removeMarkdownOnExport = value; + yield this.plugin.saveSettings(); + })); + }); + } + renderEmbeddedLoomSettings(containerEl) { + new import_obsidian6.Setting(containerEl).setName("Embedded looms").setHeading(); + const defaultEmbedWidthDesc = new DocumentFragment(); + defaultEmbedWidthDesc.createSpan({ + text: "The default embedded loom width. Accepts valid HTML width values. Like 100px, 50%, etc." + }); + defaultEmbedWidthDesc.createDiv({ + text: "Please close and reopen your embedded looms for this setting to take effect", + cls: "dataloom-modal-text--emphasize" + }); + new import_obsidian6.Setting(containerEl).setName("Default embedded loom width").setDesc(defaultEmbedWidthDesc).addText((cb) => { + cb.setValue(this.plugin.settings.defaultEmbedWidth).onChange( (value) => __async(this, null, function* () { - this.plugin.settings.exportRenderMarkdown = value; + this.plugin.settings.defaultEmbedWidth = value; yield this.plugin.saveSettings(); }) ); }); - new import_obsidian2.Setting(containerEl).setName("Debug").setHeading(); - new import_obsidian2.Setting(containerEl).setName("Debug mode").setDesc( + const defaultEmbedHeightDesc = new DocumentFragment(); + defaultEmbedHeightDesc.createSpan({ + text: "The default embedded loom height. Accepts valid HTML width values. Like 100px, 50%, etc." + }); + defaultEmbedHeightDesc.createDiv({ + text: "Please close and reopen your embedded looms for this setting to take effect", + cls: "dataloom-modal-text--emphasize" + }); + new import_obsidian6.Setting(containerEl).setName("Default embedded loom height").setDesc(defaultEmbedHeightDesc).addText((cb) => { + cb.setValue(this.plugin.settings.defaultEmbedHeight).onChange( + (value) => __async(this, null, function* () { + this.plugin.settings.defaultEmbedHeight = value; + yield this.plugin.saveSettings(); + }) + ); + }); + } + renderModalSettings(containerEl) { + new import_obsidian6.Setting(containerEl).setName("Modal").setHeading(); + new import_obsidian6.Setting(containerEl).setName("What's new modal").setDesc("Show the what's new modal when the plugin is updated.").addToggle((cb) => { + cb.setValue(this.plugin.settings.showWhatsNewModal).onChange( + (value) => __async(this, null, function* () { + this.plugin.settings.showWhatsNewModal = value; + yield this.plugin.saveSettings(); + }) + ); + }); + new import_obsidian6.Setting(containerEl).setName("Support modal").setDesc("Show the support modal when the plugin is updated.").addToggle((cb) => { + cb.setValue(this.plugin.settings.showSupportModal).onChange( + (value) => __async(this, null, function* () { + this.plugin.settings.showSupportModal = value; + yield this.plugin.saveSettings(); + }) + ); + }); + } + renderDebugSettings(containerEl) { + new import_obsidian6.Setting(containerEl).setName("Debug").setHeading(); + new import_obsidian6.Setting(containerEl).setName("Debug mode").setDesc( "Turns on console.log for plugin events. This is useful for troubleshooting." ).addToggle((cb) => { cb.setValue(this.plugin.settings.shouldDebug).onChange( @@ -39560,6 +38300,75 @@ var NLTSettingsTab = class extends import_obsidian.PluginSettingTab { } }; +// src/obsidian/editing-view-plugin.tsx +var import_view = require("@codemirror/view"); + +// src/data/constants.ts +var DEFAULT_LOOM_NAME = "Untitled"; +var LOOM_EXTENSION = "loom"; +var EXTENSION_REGEX = new RegExp(/\.[a-z]*$/); +var WIKI_LINK_REGEX = new RegExp(/\[\[([^|\]]+)(?:\|([\w-]+))?\]\]/g); + +// src/shared/conversion.ts +var pxToNum = (value) => { + return parseFloat(value.split("px")[0]); +}; +var numToPx = (value) => { + return `${value}px`; +}; +var stringToCurrencyString = (value, type) => { + return new Intl.NumberFormat("en-US", { + style: "currency", + currency: type + }).format(parseFloat(value)); +}; + +// src/obsidian/embedded/embed-utils.ts +var getEmbeddedLoomLinkEls = (view, mode) => { + const linkEls = []; + const { contentEl } = view; + const el = mode === "source" ? contentEl.querySelector(".markdown-source-view") : contentEl.querySelector(".markdown-reading-view"); + if (el) { + const embeddedLinkEls = el.querySelectorAll(".internal-embed"); + for (let i2 = 0; i2 < embeddedLinkEls.length; i2++) { + const linkEl = embeddedLinkEls[i2]; + const src = linkEl.getAttribute("src"); + if (src == null ? void 0 : src.endsWith(LOOM_EXTENSION)) + linkEls.push(linkEl); + } + } + return linkEls; +}; +var hasLoadedEmbeddedLoom = (linkEl) => { + if (linkEl.children.length > 0) { + const firstChildEl = linkEl.children[0]; + if (firstChildEl.classList.contains("dataloom-embedded-container")) + return true; + } + return false; +}; +var findEmbeddedLoomFile = (app, linkEl, sourcePath) => { + const src = linkEl.getAttribute("src"); + if (!src) + return null; + return app.metadataCache.getFirstLinkpathDest(src, sourcePath); +}; +var getLinkWidth = (linkEl, defaultWidth) => { + const width = linkEl.getAttribute("width"); + if (width === null || width === "0") + return defaultWidth; + return numToPx(width); +}; +var getLinkHeight = (linkEl, defaultHeight) => { + const height = linkEl.getAttribute("height"); + if (height === null || height === "0") + return defaultHeight; + return numToPx(height); +}; + +// src/obsidian/embedded/embedded-app-manager.tsx +var import_client4 = __toESM(require_client()); + // node_modules/immer/dist/immer.esm.mjs function n(n2) { for (var r2 = arguments.length, t2 = Array(r2 > 1 ? r2 - 1 : 0), e = 1; e < r2; e++) @@ -39576,15 +38385,16 @@ function r(n2) { return !!n2 && !!n2[Q]; } function t(n2) { + var r2; return !!n2 && (function(n3) { if (!n3 || "object" != typeof n3) return false; - var r2 = Object.getPrototypeOf(n3); - if (null === r2) + var r3 = Object.getPrototypeOf(n3); + if (null === r3) return true; - var t2 = Object.hasOwnProperty.call(r2, "constructor") && r2.constructor; + var t2 = Object.hasOwnProperty.call(r3, "constructor") && r3.constructor; return t2 === Object || "function" == typeof t2 && Function.toString.call(t2) === Z; - }(n2) || Array.isArray(n2) || !!n2[L] || !!n2.constructor[L] || s(n2) || v(n2)); + }(n2) || Array.isArray(n2) || !!n2[L] || !!(null === (r2 = n2.constructor) || void 0 === r2 ? void 0 : r2[L]) || s(n2) || v(n2)); } function i(n2, r2, t2) { void 0 === t2 && (t2 = false), 0 === o(n2) ? (t2 ? Object.keys : nn)(n2).forEach(function(e) { @@ -39605,7 +38415,7 @@ function a(n2, r2) { } function f(n2, r2, t2) { var e = o(n2); - 2 === e ? n2.set(r2, t2) : 3 === e ? (n2.delete(r2), n2.add(t2)) : n2[r2] = t2; + 2 === e ? n2.set(r2, t2) : 3 === e ? n2.add(t2) : n2[r2] = t2; } function c(n2, r2) { return n2 === r2 ? 0 !== n2 || 1 / n2 == 1 / r2 : n2 != n2 && r2 != r2; @@ -39631,9 +38441,9 @@ function l(n2) { return Object.create(Object.getPrototypeOf(n2), r2); } function d(n2, e) { - return void 0 === e && (e = false), y(n2) || r(n2) || !t(n2) ? n2 : (o(n2) > 1 && (n2.set = n2.add = n2.clear = n2.delete = h), Object.freeze(n2), e && i(n2, function(n3, r2) { + return void 0 === e && (e = false), y(n2) || r(n2) || !t(n2) || (o(n2) > 1 && (n2.set = n2.add = n2.clear = n2.delete = h), Object.freeze(n2), e && i(n2, function(n3, r2) { return d(r2, true); - }, true), n2); + }, true)), n2; } function h() { n(2); @@ -39654,10 +38464,10 @@ function _() { function j(n2, r2) { r2 && (b("Patches"), n2.u = [], n2.s = [], n2.v = r2); } -function O(n2) { - g(n2), n2.p.forEach(S), n2.p = null; -} function g(n2) { + O(n2), n2.p.forEach(S), n2.p = null; +} +function O(n2) { n2 === U && (U = n2.l); } function w(n2) { @@ -39665,12 +38475,12 @@ function w(n2) { } function S(n2) { var r2 = n2[Q]; - 0 === r2.i || 1 === r2.i ? r2.j() : r2.O = true; + 0 === r2.i || 1 === r2.i ? r2.j() : r2.g = true; } function P(r2, e) { e._ = e.p.length; var i2 = e.p[0], o2 = void 0 !== r2 && r2 !== i2; - return e.h.g || b("ES5").S(e, r2, o2), o2 ? (i2[Q].P && (O(e), n(4)), t(r2) && (r2 = M(e, r2), e.l || x(e, r2)), e.u && b("Patches").M(i2[Q].t, r2, e.u, e.s)) : r2 = M(e, i2, []), O(e), e.u && e.v(e.u, e.s), r2 !== H ? r2 : void 0; + return e.h.O || b("ES5").S(e, r2, o2), o2 ? (i2[Q].P && (g(e), n(4)), t(r2) && (r2 = M(e, r2), e.l || x(e, r2)), e.u && b("Patches").M(i2[Q].t, r2, e.u, e.s)) : r2 = M(e, i2, []), g(e), e.u && e.v(e.u, e.s), r2 !== H ? r2 : void 0; } function M(n2, r2, t2) { if (y(r2)) @@ -39686,28 +38496,29 @@ function M(n2, r2, t2) { return x(n2, e.t, true), e.t; if (!e.I) { e.I = true, e.A._--; - var o2 = 4 === e.i || 5 === e.i ? e.o = l(e.k) : e.o; - i(3 === e.i ? new Set(o2) : o2, function(r3, i2) { - return A(n2, e, o2, r3, i2, t2); - }), x(n2, o2, false), t2 && n2.u && b("Patches").R(e, t2, n2.u, n2.s); + var o2 = 4 === e.i || 5 === e.i ? e.o = l(e.k) : e.o, u2 = o2, a2 = false; + 3 === e.i && (u2 = new Set(o2), o2.clear(), a2 = true), i(u2, function(r3, i2) { + return A(n2, e, o2, r3, i2, t2, a2); + }), x(n2, o2, false), t2 && n2.u && b("Patches").N(e, t2, n2.u, n2.s); } return e.o; } -function A(e, i2, o2, a2, c2, s2) { +function A(e, i2, o2, a2, c2, s2, v2) { if (c2 === o2 && n(5), r(c2)) { - var v2 = M(e, c2, s2 && i2 && 3 !== i2.i && !u(i2.D, a2) ? s2.concat(a2) : void 0); - if (f(o2, a2, v2), !r(v2)) + var p2 = M(e, c2, s2 && i2 && 3 !== i2.i && !u(i2.R, a2) ? s2.concat(a2) : void 0); + if (f(o2, a2, p2), !r(p2)) return; e.m = false; - } + } else + v2 && o2.add(c2); if (t(c2) && !y(c2)) { - if (!e.h.F && e._ < 1) + if (!e.h.D && e._ < 1) return; M(e, c2), i2 && i2.A.l || x(e, c2); } } function x(n2, r2, t2) { - void 0 === t2 && (t2 = false), n2.h.F && n2.m && d(r2, t2); + void 0 === t2 && (t2 = false), !n2.l && n2.h.D && n2.m && d(r2, t2); } function z(n2, r2) { var t2 = n2[Q]; @@ -39728,16 +38539,16 @@ function k(n2) { function E(n2) { n2.o || (n2.o = l(n2.t)); } -function R(n2, r2, t2) { - var e = s(r2) ? b("MapSet").N(r2, t2) : v(r2) ? b("MapSet").T(r2, t2) : n2.g ? function(n3, r3) { - var t3 = Array.isArray(n3), e2 = { i: t3 ? 1 : 0, A: r3 ? r3.A : _(), P: false, I: false, D: {}, l: r3, t: n3, k: null, o: null, j: null, C: false }, i2 = e2, o2 = en; +function N(n2, r2, t2) { + var e = s(r2) ? b("MapSet").F(r2, t2) : v(r2) ? b("MapSet").T(r2, t2) : n2.O ? function(n3, r3) { + var t3 = Array.isArray(n3), e2 = { i: t3 ? 1 : 0, A: r3 ? r3.A : _(), P: false, I: false, R: {}, l: r3, t: n3, k: null, o: null, j: null, C: false }, i2 = e2, o2 = en; t3 && (i2 = [e2], o2 = on); var u2 = Proxy.revocable(i2, o2), a2 = u2.revoke, f3 = u2.proxy; return e2.k = f3, e2.j = a2, f3; }(r2, t2) : b("ES5").J(r2, t2); return (t2 ? t2.A : _()).p.push(e), e; } -function D(e) { +function R(e) { return r(e) || n(22, e), function n2(r2) { if (!t(r2)) return r2; @@ -39745,15 +38556,15 @@ function D(e) { if (u2) { if (!u2.P && (u2.i < 4 || !b("ES5").K(u2))) return u2.t; - u2.I = true, e2 = F(r2, c2), u2.I = false; + u2.I = true, e2 = D(r2, c2), u2.I = false; } else - e2 = F(r2, c2); + e2 = D(r2, c2); return i(e2, function(r3, t2) { u2 && a(u2.t, r3) === t2 || f(e2, r3, n2(t2)); }), 3 === c2 ? new Set(e2) : e2; }(e); } -function F(n2, r2) { +function D(n2, r2) { switch (r2) { case 2: return new Map(n2); @@ -39762,7 +38573,7 @@ function F(n2, r2) { } return l(n2); } -function N() { +function F() { function t2(n2, r2) { var t3 = s2[n2]; return t3 ? t3.enumerable = r2 : s2[n2] = t3 = { configurable: true, enumerable: r2, get: function() { @@ -39814,7 +38625,7 @@ function N() { return false; } function f3(r2) { - r2.O && n(3, JSON.stringify(p(r2))); + r2.g && n(3, JSON.stringify(p(r2))); } var s2 = {}; m("ES5", { J: function(n2, r2) { @@ -39831,14 +38642,14 @@ function N() { o4[f4] = t2(f4, n3 || !!o4[f4].enumerable); } return Object.create(Object.getPrototypeOf(r3), o4); - }(e2, n2), o3 = { i: e2 ? 5 : 4, A: r2 ? r2.A : _(), P: false, I: false, D: {}, l: r2, t: n2, k: i2, o: null, O: false, C: false }; + }(e2, n2), o3 = { i: e2 ? 5 : 4, A: r2 ? r2.A : _(), P: false, I: false, R: {}, l: r2, t: n2, k: i2, o: null, g: false, C: false }; return Object.defineProperty(i2, Q, { value: o3, writable: true }), i2; }, S: function(n2, t3, o3) { o3 ? r(t3) && t3[Q].A === n2 && e(n2.p) : (n2.u && function n3(r2) { if (r2 && "object" == typeof r2) { var t4 = r2[Q]; if (t4) { - var e2 = t4.t, o4 = t4.k, f4 = t4.D, c2 = t4.i; + var e2 = t4.t, o4 = t4.k, f4 = t4.R, c2 = t4.i; if (4 === c2) i(o4, function(r3) { r3 !== Q && (void 0 !== e2[r3] || u(e2, r3) ? f4[r3] || n3(o4[r3]) : (f4[r3] = true, k(t4))); @@ -39907,7 +38718,7 @@ var en = { get: function(n2, r2) { return i3 ? "value" in i3 ? i3.value : null === (e2 = i3.get) || void 0 === e2 ? void 0 : e2.call(n3.k) : void 0; }(n2, e, r2); var i2 = e[r2]; - return n2.I || !t(i2) ? i2 : i2 === z(n2.t, r2) ? (E(n2), n2.o[r2] = R(n2.A.h, i2, n2)) : i2; + return n2.I || !t(i2) ? i2 : i2 === z(n2.t, r2) ? (E(n2), n2.o[r2] = N(n2.A.h, i2, n2)) : i2; }, has: function(n2, r2) { return r2 in p(n2); }, ownKeys: function(n2) { @@ -39919,14 +38730,14 @@ var en = { get: function(n2, r2) { if (!n2.P) { var i2 = z(p(n2), r2), o2 = null == i2 ? void 0 : i2[Q]; if (o2 && o2.t === t2) - return n2.o[r2] = t2, n2.D[r2] = false, true; + return n2.o[r2] = t2, n2.R[r2] = false, true; if (c(t2, i2) && (void 0 !== t2 || u(n2.t, r2))) return true; E(n2), k(n2); } - return n2.o[r2] === t2 && "number" != typeof t2 && (void 0 !== t2 || r2 in n2.o) || (n2.o[r2] = t2, n2.D[r2] = true, true); + return n2.o[r2] === t2 && (void 0 !== t2 || r2 in n2.o) || Number.isNaN(t2) && Number.isNaN(n2.o[r2]) || (n2.o[r2] = t2, n2.R[r2] = true), true; }, deleteProperty: function(n2, r2) { - return void 0 !== z(n2.t, r2) || r2 in n2.t ? (n2.D[r2] = false, E(n2), k(n2)) : delete n2.D[r2], n2.o && delete n2.o[r2], true; + return void 0 !== z(n2.t, r2) || r2 in n2.t ? (n2.R[r2] = false, E(n2), k(n2)) : delete n2.R[r2], n2.o && delete n2.o[r2], true; }, getOwnPropertyDescriptor: function(n2, r2) { var t2 = p(n2), e = Reflect.getOwnPropertyDescriptor(t2, r2); return e ? { writable: true, configurable: 1 !== n2.i || "length" !== r2, enumerable: e.enumerable, value: t2[r2] } : e; @@ -39950,7 +38761,7 @@ i(en, function(n2, r2) { var un = function() { function e(r2) { var e2 = this; - this.g = B, this.F = true, this.produce = function(r3, i3, o2) { + this.O = B, this.D = true, this.produce = function(r3, i3, o2) { if ("function" == typeof r3 && "function" != typeof i3) { var u2 = i3; i3 = r3; @@ -39968,20 +38779,20 @@ var un = function() { } var f3; if ("function" != typeof i3 && n(6), void 0 !== o2 && "function" != typeof o2 && n(7), t(r3)) { - var c2 = w(e2), s2 = R(e2, r3, void 0), v2 = true; + var c2 = w(e2), s2 = N(e2, r3, void 0), v2 = true; try { f3 = i3(s2), v2 = false; } finally { - v2 ? O(c2) : g(c2); + v2 ? g(c2) : O(c2); } return "undefined" != typeof Promise && f3 instanceof Promise ? f3.then(function(n2) { return j(c2, o2), P(n2, c2); }, function(n2) { - throw O(c2), n2; + throw g(c2), n2; }) : (j(c2, o2), P(f3, c2)); } if (!r3 || "object" != typeof r3) { - if (void 0 === (f3 = i3(r3)) && (f3 = r3), f3 === H && (f3 = void 0), e2.F && d(f3, true), o2) { + if (void 0 === (f3 = i3(r3)) && (f3 = r3), f3 === H && (f3 = void 0), e2.D && d(f3, true), o2) { var p2 = [], l2 = []; b("Patches").M(r3, f3, p2, l2), o2(p2, l2); } @@ -40007,18 +38818,18 @@ var un = function() { } var i2 = e.prototype; return i2.createDraft = function(e2) { - t(e2) || n(8), r(e2) && (e2 = D(e2)); - var i3 = w(this), o2 = R(this, e2, void 0); - return o2[Q].C = true, g(i3), o2; + t(e2) || n(8), r(e2) && (e2 = R(e2)); + var i3 = w(this), o2 = N(this, e2, void 0); + return o2[Q].C = true, O(i3), o2; }, i2.finishDraft = function(r2, t2) { var e2 = r2 && r2[Q]; e2 && e2.C || n(9), e2.I && n(10); var i3 = e2.A; return j(i3, t2), P(void 0, i3); }, i2.setAutoFreeze = function(n2) { - this.F = n2; + this.D = n2; }, i2.setUseProxies = function(r2) { - r2 && !B && n(20), this.g = r2; + r2 && !B && n(20), this.O = r2; }, i2.applyPatches = function(n2, t2) { var e2; for (e2 = t2.length - 1; e2 >= 0; e2--) { @@ -40045,8 +38856,39 @@ var ln = an.createDraft.bind(an); var dn = an.finishDraft.bind(an); var immer_esm_default = fn; +// node_modules/@babel/runtime/helpers/esm/typeof.js +function _typeof(obj) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) { + return typeof obj2; + } : function(obj2) { + return obj2 && "function" == typeof Symbol && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }, _typeof(obj); +} + +// node_modules/@babel/runtime/helpers/esm/toPrimitive.js +function _toPrimitive(input, hint) { + if (_typeof(input) !== "object" || input === null) + return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== void 0) { + var res = prim.call(input, hint || "default"); + if (_typeof(res) !== "object") + return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); +} + +// node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +function _toPropertyKey(arg) { + var key = _toPrimitive(arg, "string"); + return _typeof(key) === "symbol" ? key : String(key); +} + // node_modules/@babel/runtime/helpers/esm/defineProperty.js function _defineProperty(obj, key, value) { + key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value, @@ -40426,11 +39268,6 @@ function applyMiddleware() { }; }; } -function isCrushed() { -} -if (typeof isCrushed.name === "string" && isCrushed.name !== "isCrushed") { - warning('You are currently using minified code outside of NODE_ENV === "production". This means that you are running a slower development build of Redux. You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) to ensure you have the correct code for your production build.'); -} // node_modules/redux-thunk/es/index.js function createThunkMiddleware(extraArgument) { @@ -40473,12 +39310,90 @@ var __extends = function() { d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __()); }; }(); +var __generator = function(thisArg, body) { + var _5 = { label: 0, sent: function() { + if (t2[0] & 1) + throw t2[1]; + return t2[1]; + }, trys: [], ops: [] }, f3, y2, t2, g2; + return g2 = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g2[Symbol.iterator] = function() { + return this; + }), g2; + function verb(n2) { + return function(v2) { + return step([n2, v2]); + }; + } + function step(op) { + if (f3) + throw new TypeError("Generator is already executing."); + while (_5) + try { + if (f3 = 1, y2 && (t2 = op[0] & 2 ? y2["return"] : op[0] ? y2["throw"] || ((t2 = y2["return"]) && t2.call(y2), 0) : y2.next) && !(t2 = t2.call(y2, op[1])).done) + return t2; + if (y2 = 0, t2) + op = [op[0] & 2, t2.value]; + switch (op[0]) { + case 0: + case 1: + t2 = op; + break; + case 4: + _5.label++; + return { value: op[1], done: false }; + case 5: + _5.label++; + y2 = op[1]; + op = [0]; + continue; + case 7: + op = _5.ops.pop(); + _5.trys.pop(); + continue; + default: + if (!(t2 = _5.trys, t2 = t2.length > 0 && t2[t2.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _5 = 0; + continue; + } + if (op[0] === 3 && (!t2 || op[1] > t2[0] && op[1] < t2[3])) { + _5.label = op[1]; + break; + } + if (op[0] === 6 && _5.label < t2[1]) { + _5.label = t2[1]; + t2 = op; + break; + } + if (t2 && _5.label < t2[2]) { + _5.label = t2[2]; + _5.ops.push(op); + break; + } + if (t2[2]) + _5.ops.pop(); + _5.trys.pop(); + continue; + } + op = body.call(thisArg, _5); + } catch (e) { + op = [6, e]; + y2 = 0; + } finally { + f3 = t2 = 0; + } + if (op[0] & 5) + throw op[1]; + return { value: op[0] ? op[1] : void 0, done: true }; + } +}; var __spreadArray = function(to, from) { for (var i2 = 0, il = from.length, j2 = to.length; i2 < il; i2++, j2++) to[j2] = from[i2]; return to; }; var __defProp2 = Object.defineProperty; +var __defProps2 = Object.defineProperties; +var __getOwnPropDescs2 = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols2 = Object.getOwnPropertySymbols; var __hasOwnProp2 = Object.prototype.hasOwnProperty; var __propIsEnum2 = Object.prototype.propertyIsEnumerable; @@ -40497,6 +39412,31 @@ var __spreadValues2 = function(a2, b2) { } return a2; }; +var __spreadProps2 = function(a2, b2) { + return __defProps2(a2, __getOwnPropDescs2(b2)); +}; +var __async2 = function(__this, __arguments, generator) { + return new Promise(function(resolve, reject) { + var fulfilled = function(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = function(value) { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = function(x2) { + return x2.done ? resolve(x2.value) : Promise.resolve(x2.value).then(fulfilled, rejected); + }; + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; var composeWithDevTools = typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function() { if (arguments.length === 0) return void 0; @@ -40577,6 +39517,43 @@ var MiddlewareArray = function(_super) { }; return MiddlewareArray2; }(Array); +var EnhancerArray = function(_super) { + __extends(EnhancerArray2, _super); + function EnhancerArray2() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var _this = _super.apply(this, args) || this; + Object.setPrototypeOf(_this, EnhancerArray2.prototype); + return _this; + } + Object.defineProperty(EnhancerArray2, Symbol.species, { + get: function() { + return EnhancerArray2; + }, + enumerable: false, + configurable: true + }); + EnhancerArray2.prototype.concat = function() { + var arr = []; + for (var _i = 0; _i < arguments.length; _i++) { + arr[_i] = arguments[_i]; + } + return _super.prototype.concat.apply(this, arr); + }; + EnhancerArray2.prototype.prepend = function() { + var arr = []; + for (var _i = 0; _i < arguments.length; _i++) { + arr[_i] = arguments[_i]; + } + if (arr.length === 1 && Array.isArray(arr[0])) { + return new (EnhancerArray2.bind.apply(EnhancerArray2, __spreadArray([void 0], arr[0].concat(this))))(); + } + return new (EnhancerArray2.bind.apply(EnhancerArray2, __spreadArray([void 0], arr.concat(this))))(); + }; + return EnhancerArray2; +}(Array); function freezeDraftable(val) { return t(val) ? immer_esm_default(val, function() { }) : val; @@ -40598,7 +39575,7 @@ function stringify(obj, serializer, indent, decycler) { function getSerialize(serializer, decycler) { var stack = [], keys = []; if (!decycler) - decycler = function(_3, value) { + decycler = function(_5, value) { if (stack[0] === value) return "[Circular ~]"; return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]"; @@ -40646,9 +39623,9 @@ function trackProperties(isImmutable, ignorePaths, obj, path) { } return tracked; } -function detectMutations(isImmutable, ignorePaths, trackedProperty, obj, sameParentRef, path) { - if (ignorePaths === void 0) { - ignorePaths = []; +function detectMutations(isImmutable, ignoredPaths, trackedProperty, obj, sameParentRef, path) { + if (ignoredPaths === void 0) { + ignoredPaths = []; } if (sameParentRef === void 0) { sameParentRef = false; @@ -40671,15 +39648,29 @@ function detectMutations(isImmutable, ignorePaths, trackedProperty, obj, samePar for (var key in obj) { keysToDetect[key] = true; } - for (var key in keysToDetect) { - var childPath = path ? path + "." + key : key; - if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) { - continue; + var hasIgnoredPaths = ignoredPaths.length > 0; + var _loop_1 = function(key2) { + var nestedPath = path ? path + "." + key2 : key2; + if (hasIgnoredPaths) { + var hasMatches = ignoredPaths.some(function(ignored) { + if (ignored instanceof RegExp) { + return ignored.test(nestedPath); + } + return nestedPath === ignored; + }); + if (hasMatches) { + return "continue"; + } } - var result = detectMutations(isImmutable, ignorePaths, trackedProperty.children[key], obj[key], sameRef, childPath); + var result = detectMutations(isImmutable, ignoredPaths, trackedProperty.children[key2], obj[key2], sameRef, nestedPath); if (result.wasMutated) { - return result; + return { value: result }; } + }; + for (var key in keysToDetect) { + var state_1 = _loop_1(key); + if (typeof state_1 === "object") + return state_1.value; } return { wasMutated: false }; } @@ -40730,7 +39721,7 @@ function isPlain(val) { var type = typeof val; return val == null || type === "string" || type === "boolean" || type === "number" || Array.isArray(val) || isPlainObject2(val); } -function findNonSerializableValue(value, path, isSerializable, getEntries, ignoredPaths) { +function findNonSerializableValue(value, path, isSerializable, getEntries, ignoredPaths, cache) { if (path === void 0) { path = ""; } @@ -40750,29 +39741,58 @@ function findNonSerializableValue(value, path, isSerializable, getEntries, ignor if (typeof value !== "object" || value === null) { return false; } + if (cache == null ? void 0 : cache.has(value)) + return false; var entries = getEntries != null ? getEntries(value) : Object.entries(value); var hasIgnoredPaths = ignoredPaths.length > 0; - for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) { - var _c = entries_1[_i], key = _c[0], nestedValue = _c[1]; - var nestedPath = path ? path + "." + key : key; - if (hasIgnoredPaths && ignoredPaths.indexOf(nestedPath) >= 0) { - continue; - } - if (!isSerializable(nestedValue)) { - return { - keyPath: nestedPath, - value: nestedValue - }; - } - if (typeof nestedValue === "object") { - foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths); - if (foundNestedSerializable) { - return foundNestedSerializable; + var _loop_2 = function(key2, nestedValue2) { + var nestedPath = path ? path + "." + key2 : key2; + if (hasIgnoredPaths) { + var hasMatches = ignoredPaths.some(function(ignored) { + if (ignored instanceof RegExp) { + return ignored.test(nestedPath); + } + return nestedPath === ignored; + }); + if (hasMatches) { + return "continue"; } } + if (!isSerializable(nestedValue2)) { + return { value: { + keyPath: nestedPath, + value: nestedValue2 + } }; + } + if (typeof nestedValue2 === "object") { + foundNestedSerializable = findNonSerializableValue(nestedValue2, nestedPath, isSerializable, getEntries, ignoredPaths, cache); + if (foundNestedSerializable) { + return { value: foundNestedSerializable }; + } + } + }; + for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) { + var _c = entries_1[_i], key = _c[0], nestedValue = _c[1]; + var state_2 = _loop_2(key, nestedValue); + if (typeof state_2 === "object") + return state_2.value; } + if (cache && isNestedFrozen(value)) + cache.add(value); return false; } +function isNestedFrozen(value) { + if (!Object.isFrozen(value)) + return false; + for (var _i = 0, _c = Object.values(value); _i < _c.length; _i++) { + var nestedValue = _c[_i]; + if (typeof nestedValue !== "object" || nestedValue === null) + continue; + if (!isNestedFrozen(nestedValue)) + return false; + } + return true; +} function createSerializableStateInvariantMiddleware(options) { if (options === void 0) { options = {}; @@ -40786,7 +39806,8 @@ function createSerializableStateInvariantMiddleware(options) { }; }; } - var _c = options.isSerializable, isSerializable = _c === void 0 ? isPlain : _c, getEntries = options.getEntries, _d = options.ignoredActions, ignoredActions = _d === void 0 ? [] : _d, _e = options.ignoredActionPaths, ignoredActionPaths = _e === void 0 ? ["meta.arg", "meta.baseQueryMeta"] : _e, _f = options.ignoredPaths, ignoredPaths = _f === void 0 ? [] : _f, _g = options.warnAfter, warnAfter = _g === void 0 ? 32 : _g, _h = options.ignoreState, ignoreState = _h === void 0 ? false : _h, _j = options.ignoreActions, ignoreActions = _j === void 0 ? false : _j; + var _c = options.isSerializable, isSerializable = _c === void 0 ? isPlain : _c, getEntries = options.getEntries, _d = options.ignoredActions, ignoredActions = _d === void 0 ? [] : _d, _e = options.ignoredActionPaths, ignoredActionPaths = _e === void 0 ? ["meta.arg", "meta.baseQueryMeta"] : _e, _f = options.ignoredPaths, ignoredPaths = _f === void 0 ? [] : _f, _g = options.warnAfter, warnAfter = _g === void 0 ? 32 : _g, _h = options.ignoreState, ignoreState = _h === void 0 ? false : _h, _j = options.ignoreActions, ignoreActions = _j === void 0 ? false : _j, _k = options.disableCache, disableCache = _k === void 0 ? false : _k; + var cache = !disableCache && WeakSet ? /* @__PURE__ */ new WeakSet() : void 0; return function(storeAPI) { return function(next) { return function(action) { @@ -40794,7 +39815,7 @@ function createSerializableStateInvariantMiddleware(options) { var measureUtils = getTimeMeasureUtils(warnAfter, "SerializableStateInvariantMiddleware"); if (!ignoreActions && !(ignoredActions.length && ignoredActions.indexOf(action.type) !== -1)) { measureUtils.measureTime(function() { - var foundActionNonSerializableValue = findNonSerializableValue(action, "", isSerializable, getEntries, ignoredActionPaths); + var foundActionNonSerializableValue = findNonSerializableValue(action, "", isSerializable, getEntries, ignoredActionPaths, cache); if (foundActionNonSerializableValue) { var keyPath = foundActionNonSerializableValue.keyPath, value = foundActionNonSerializableValue.value; console.error("A non-serializable value was detected in an action, in the path: `" + keyPath + "`. Value:", value, "\nTake a look at the logic that dispatched this action: ", action, "\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)", "\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)"); @@ -40804,7 +39825,7 @@ function createSerializableStateInvariantMiddleware(options) { if (!ignoreState) { measureUtils.measureTime(function() { var state = storeAPI.getState(); - var foundStateNonSerializableValue = findNonSerializableValue(state, "", isSerializable, getEntries, ignoredPaths); + var foundStateNonSerializableValue = findNonSerializableValue(state, "", isSerializable, getEntries, ignoredPaths, cache); if (foundStateNonSerializableValue) { var keyPath = foundStateNonSerializableValue.keyPath, value = foundStateNonSerializableValue.value; console.error("A non-serializable value was detected in the state, in the path: `" + keyPath + "`. Value:", value, "\nTake a look at the reducer(s) handling this action type: " + action.type + ".\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)"); @@ -40887,11 +39908,12 @@ function configureStore(options) { trace: !IS_PRODUCTION }, typeof devTools === "object" && devTools)); } - var storeEnhancers = [middlewareEnhancer]; + var defaultEnhancers = new EnhancerArray(middlewareEnhancer); + var storeEnhancers = defaultEnhancers; if (Array.isArray(enhancers)) { storeEnhancers = __spreadArray([middlewareEnhancer], enhancers); } else if (typeof enhancers === "function") { - storeEnhancers = enhancers(storeEnhancers); + storeEnhancers = enhancers(defaultEnhancers); } var composedEnhancer = finalCompose.apply(void 0, storeEnhancers); return createStore(rootReducer, preloadedState, composedEnhancer); @@ -40969,10 +39991,19 @@ function executeReducerBuilderCallback(builderCallback) { function isStateFunction(x2) { return typeof x2 === "function"; } +var hasWarnedAboutObjectNotation = false; function createReducer(initialState2, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) { if (actionMatchers === void 0) { actionMatchers = []; } + if (true) { + if (typeof mapOrBuilderCallback === "object") { + if (!hasWarnedAboutObjectNotation) { + hasWarnedAboutObjectNotation = true; + console.warn("The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer"); + } + } + } var _c = typeof mapOrBuilderCallback === "function" ? executeReducerBuilderCallback(mapOrBuilderCallback) : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer], actionsMap = _c[0], finalActionMatchers = _c[1], finalDefaultCaseReducer = _c[2]; var getInitialState; if (isStateFunction(initialState2)) { @@ -41033,6 +40064,7 @@ function createReducer(initialState2, mapOrBuilderCallback, actionMatchers, defa reducer.getInitialState = getInitialState; return reducer; } +var hasWarnedAboutObjectNotation2 = false; function getType2(slice, actionKey) { return slice + "/" + actionKey; } @@ -41068,9 +40100,28 @@ function createSlice(options) { actionCreators[reducerName] = prepareCallback ? createAction(type, prepareCallback) : createAction(type); }); function buildReducer() { + if (true) { + if (typeof options.extraReducers === "object") { + if (!hasWarnedAboutObjectNotation2) { + hasWarnedAboutObjectNotation2 = true; + console.warn("The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice"); + } + } + } var _c = typeof options.extraReducers === "function" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers], _d = _c[0], extraReducers = _d === void 0 ? {} : _d, _e = _c[1], actionMatchers = _e === void 0 ? [] : _e, _f = _c[2], defaultCaseReducer = _f === void 0 ? void 0 : _f; var finalCaseReducers = __spreadValues2(__spreadValues2({}, extraReducers), sliceCaseReducersByType); - return createReducer(initialState2, finalCaseReducers, actionMatchers, defaultCaseReducer); + return createReducer(initialState2, function(builder) { + for (var key in finalCaseReducers) { + builder.addCase(key, finalCaseReducers[key]); + } + for (var _i = 0, actionMatchers_1 = actionMatchers; _i < actionMatchers_1.length; _i++) { + var m2 = actionMatchers_1[_i]; + builder.addMatcher(m2.matcher, m2.reducer); + } + if (defaultCaseReducer) { + builder.addDefaultCase(defaultCaseReducer); + } + }); } var _reducer; return { @@ -41089,6 +40140,24 @@ function createSlice(options) { } }; } +var urlAlphabet = "ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"; +var nanoid = function(size) { + if (size === void 0) { + size = 21; + } + var id2 = ""; + var i2 = size; + while (i2--) { + id2 += urlAlphabet[Math.random() * 64 | 0]; + } + return id2; +}; +var commonProperties = [ + "name", + "message", + "stack", + "code" +]; var RejectWithValue = function() { function RejectWithValue2(payload, meta) { this.payload = payload; @@ -41103,6 +40172,201 @@ var FulfillWithMeta = function() { } return FulfillWithMeta2; }(); +var miniSerializeError = function(value) { + if (typeof value === "object" && value !== null) { + var simpleError = {}; + for (var _i = 0, commonProperties_1 = commonProperties; _i < commonProperties_1.length; _i++) { + var property = commonProperties_1[_i]; + if (typeof value[property] === "string") { + simpleError[property] = value[property]; + } + } + return simpleError; + } + return { message: String(value) }; +}; +var createAsyncThunk = function() { + function createAsyncThunk2(typePrefix, payloadCreator, options) { + var fulfilled = createAction(typePrefix + "/fulfilled", function(payload, requestId, arg, meta) { + return { + payload, + meta: __spreadProps2(__spreadValues2({}, meta || {}), { + arg, + requestId, + requestStatus: "fulfilled" + }) + }; + }); + var pending = createAction(typePrefix + "/pending", function(requestId, arg, meta) { + return { + payload: void 0, + meta: __spreadProps2(__spreadValues2({}, meta || {}), { + arg, + requestId, + requestStatus: "pending" + }) + }; + }); + var rejected = createAction(typePrefix + "/rejected", function(error, requestId, arg, payload, meta) { + return { + payload, + error: (options && options.serializeError || miniSerializeError)(error || "Rejected"), + meta: __spreadProps2(__spreadValues2({}, meta || {}), { + arg, + requestId, + rejectedWithValue: !!payload, + requestStatus: "rejected", + aborted: (error == null ? void 0 : error.name) === "AbortError", + condition: (error == null ? void 0 : error.name) === "ConditionError" + }) + }; + }); + var displayedWarning = false; + var AC = typeof AbortController !== "undefined" ? AbortController : function() { + function class_1() { + this.signal = { + aborted: false, + addEventListener: function() { + }, + dispatchEvent: function() { + return false; + }, + onabort: function() { + }, + removeEventListener: function() { + }, + reason: void 0, + throwIfAborted: function() { + } + }; + } + class_1.prototype.abort = function() { + if (true) { + if (!displayedWarning) { + displayedWarning = true; + console.info("This platform does not implement AbortController. \nIf you want to use the AbortController to react to `abort` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'."); + } + } + }; + return class_1; + }(); + function actionCreator(arg) { + return function(dispatch, getState, extra) { + var requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg) : nanoid(); + var abortController = new AC(); + var abortReason; + var started = false; + function abort(reason) { + abortReason = reason; + abortController.abort(); + } + var promise2 = function() { + return __async2(this, null, function() { + var _a2, _b, finalAction, conditionResult, abortedPromise, err_1, skipDispatch; + return __generator(this, function(_c) { + switch (_c.label) { + case 0: + _c.trys.push([0, 4, , 5]); + conditionResult = (_a2 = options == null ? void 0 : options.condition) == null ? void 0 : _a2.call(options, arg, { getState, extra }); + if (!isThenable(conditionResult)) + return [3, 2]; + return [4, conditionResult]; + case 1: + conditionResult = _c.sent(); + _c.label = 2; + case 2: + if (conditionResult === false || abortController.signal.aborted) { + throw { + name: "ConditionError", + message: "Aborted due to condition callback returning false." + }; + } + started = true; + abortedPromise = new Promise(function(_5, reject) { + return abortController.signal.addEventListener("abort", function() { + return reject({ + name: "AbortError", + message: abortReason || "Aborted" + }); + }); + }); + dispatch(pending(requestId, arg, (_b = options == null ? void 0 : options.getPendingMeta) == null ? void 0 : _b.call(options, { requestId, arg }, { getState, extra }))); + return [4, Promise.race([ + abortedPromise, + Promise.resolve(payloadCreator(arg, { + dispatch, + getState, + extra, + requestId, + signal: abortController.signal, + abort, + rejectWithValue: function(value, meta) { + return new RejectWithValue(value, meta); + }, + fulfillWithValue: function(value, meta) { + return new FulfillWithMeta(value, meta); + } + })).then(function(result) { + if (result instanceof RejectWithValue) { + throw result; + } + if (result instanceof FulfillWithMeta) { + return fulfilled(result.payload, requestId, arg, result.meta); + } + return fulfilled(result, requestId, arg); + }) + ])]; + case 3: + finalAction = _c.sent(); + return [3, 5]; + case 4: + err_1 = _c.sent(); + finalAction = err_1 instanceof RejectWithValue ? rejected(null, requestId, arg, err_1.payload, err_1.meta) : rejected(err_1, requestId, arg); + return [3, 5]; + case 5: + skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition; + if (!skipDispatch) { + dispatch(finalAction); + } + return [2, finalAction]; + } + }); + }); + }(); + return Object.assign(promise2, { + abort, + requestId, + arg, + unwrap: function() { + return promise2.then(unwrapResult); + } + }); + }; + } + return Object.assign(actionCreator, { + pending, + rejected, + fulfilled, + typePrefix + }); + } + createAsyncThunk2.withTypes = function() { + return createAsyncThunk2; + }; + return createAsyncThunk2; +}(); +function unwrapResult(action) { + if (action.meta && action.meta.rejectedWithValue) { + throw action.payload; + } + if (action.error) { + throw action.error; + } + return action.payload; +} +function isThenable(value) { + return value !== null && typeof value === "object" && typeof value.then === "function"; +} var task = "task"; var listener = "listener"; var completed = "completed"; @@ -41123,13 +40387,27 @@ var alm = "listenerMiddleware"; var addListener = createAction(alm + "/add"); var clearAllListeners = createAction(alm + "/removeAll"); var removeListener = createAction(alm + "/remove"); -N(); +var promise; +var queueMicrotaskShim = typeof queueMicrotask === "function" ? queueMicrotask.bind(typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : globalThis) : function(cb) { + return (promise || (promise = Promise.resolve())).then(cb).catch(function(err) { + return setTimeout(function() { + throw err; + }, 0); + }); +}; +var createQueueWithTimer = function(timeout) { + return function(notify) { + setTimeout(notify, timeout); + }; +}; +var rAF = typeof window !== "undefined" && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10); +F(); -// src/redux/global/global-slice.ts +// src/redux/global-slice.ts var initialState = { + settings: DEFAULT_SETTINGS, isDarkMode: false, - shouldDebug: false, - exportRenderMarkdown: true + pluginVersion: "" }; var globalSlice = createSlice({ name: "global", @@ -41138,64 +40416,2582 @@ var globalSlice = createSlice({ setDarkMode(state, action) { state.isDarkMode = action.payload; }, - setDebugMode(state, action) { - state.shouldDebug = action.payload; + setSettings(state, action) { + state.settings = action.payload; }, - setExportRenderMarkdown(state, action) { - state.exportRenderMarkdown = action.payload; + setPluginVersion(state, action) { + state.pluginVersion = action.payload; } } }); -var { setDarkMode, setDebugMode, setExportRenderMarkdown } = globalSlice.actions; +var { setDarkMode, setSettings, setPluginVersion } = globalSlice.actions; var global_slice_default = globalSlice.reducer; -// src/redux/global/store.ts +// src/redux/store.ts var store = configureStore({ reducer: { global: global_slice_default } }); -// src/obsidian/nlt-view.tsx -var import_obsidian10 = require("obsidian"); -var import_client2 = __toESM(require_client()); +// src/shared/versioning.ts +var legacyVersionToString = (version) => { + return version.toString().split("").join("."); +}; +var isVersionLessThan = (oldVersion, newVersion) => { + const oldVersionArray = oldVersion.split("."); + const newVersionArray = newVersion.split("."); + for (let i2 = 0; i2 < oldVersionArray.length; i2++) { + const oldVersionNumber = parseInt(oldVersionArray[i2]); + const newVersionNumber = parseInt(newVersionArray[i2]); + if (oldVersionNumber < newVersionNumber) { + return true; + } + if (oldVersionNumber > newVersionNumber) { + return false; + } + } + return false; +}; -// src/obsidian-shim/build/mount-context.tsx +// src/shared/loom-state/migrate/migrate-state-0.ts +var MigrateState0 = class { + migrate(prevState) { + const { columns } = prevState.model; + const nextColumns = columns.map((column) => { + return __spreadProps(__spreadValues({}, column), { + currencyType: "USD" /* UNITED_STATES */ + }); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: nextColumns + }) + }); + } +}; + +// src/shared/loom-state/migrate/migrate-state-1.ts +var MigrateState1 = class { + migrate(prevState) { + const { columns } = prevState.model; + const nextColumns = columns.map((column) => { + return __spreadProps(__spreadValues({}, column), { + dateFormat: "dd/mm/yyyy" /* DD_MM_YYYY */ + }); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: nextColumns + }) + }); + } +}; + +// src/shared/loom-state/migrate/migrate-state-2.ts +var import_lodash = __toESM(require_lodash()); +var MigrateState2 = class { + migrate(prevState) { + const { columns, rows, cells } = prevState.model; + const nextRows = rows.map((row, i2) => { + return __spreadProps(__spreadValues({}, row), { + index: i2 + }); + }); + const nextColumns = columns.map((column) => { + const columnCopy = (0, import_lodash.cloneDeep)(column); + const unknownColumn = columnCopy; + if (unknownColumn["hasAutoWidth"]) { + delete unknownColumn.hasAutoWidth; + } + return __spreadProps(__spreadValues({}, columnCopy), { + isVisible: true + }); + }); + const nextCells = cells.map((cell) => { + return __spreadProps(__spreadValues({}, cell), { + dateTime: null + }); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: nextColumns, + cells: nextCells, + rows: nextRows + }) + }); + } +}; + +// node_modules/uuid/dist/esm-browser/rng.js +var getRandomValues; +var rnds8 = new Uint8Array(16); +function rng() { + if (!getRandomValues) { + getRandomValues = typeof crypto !== "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto); + if (!getRandomValues) { + throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); + } + } + return getRandomValues(rnds8); +} + +// node_modules/uuid/dist/esm-browser/regex.js +var regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; + +// node_modules/uuid/dist/esm-browser/validate.js +function validate(uuid) { + return typeof uuid === "string" && regex_default.test(uuid); +} +var validate_default = validate; + +// node_modules/uuid/dist/esm-browser/stringify.js +var byteToHex = []; +for (let i2 = 0; i2 < 256; ++i2) { + byteToHex.push((i2 + 256).toString(16).slice(1)); +} +function unsafeStringify(arr, offset = 0) { + return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); +} + +// node_modules/uuid/dist/esm-browser/parse.js +function parse(uuid) { + if (!validate_default(uuid)) { + throw TypeError("Invalid UUID"); + } + let v2; + const arr = new Uint8Array(16); + arr[0] = (v2 = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v2 >>> 16 & 255; + arr[2] = v2 >>> 8 & 255; + arr[3] = v2 & 255; + arr[4] = (v2 = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v2 & 255; + arr[6] = (v2 = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v2 & 255; + arr[8] = (v2 = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v2 & 255; + arr[10] = (v2 = parseInt(uuid.slice(24, 36), 16)) / 1099511627776 & 255; + arr[11] = v2 / 4294967296 & 255; + arr[12] = v2 >>> 24 & 255; + arr[13] = v2 >>> 16 & 255; + arr[14] = v2 >>> 8 & 255; + arr[15] = v2 & 255; + return arr; +} +var parse_default = parse; + +// node_modules/uuid/dist/esm-browser/v35.js +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); + const bytes = []; + for (let i2 = 0; i2 < str.length; ++i2) { + bytes.push(str.charCodeAt(i2)); + } + return bytes; +} +var DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"; +var URL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"; +function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + var _namespace; + if (typeof value === "string") { + value = stringToBytes(value); + } + if (typeof namespace === "string") { + namespace = parse_default(namespace); + } + if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) { + throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)"); + } + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 15 | version; + bytes[8] = bytes[8] & 63 | 128; + if (buf) { + offset = offset || 0; + for (let i2 = 0; i2 < 16; ++i2) { + buf[offset + i2] = bytes[i2]; + } + return buf; + } + return unsafeStringify(bytes); + } + try { + generateUUID.name = name; + } catch (err) { + } + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; +} + +// node_modules/uuid/dist/esm-browser/native.js +var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); +var native_default = { + randomUUID +}; + +// node_modules/uuid/dist/esm-browser/v4.js +function v4(options, buf, offset) { + if (native_default.randomUUID && !buf && !options) { + return native_default.randomUUID(); + } + options = options || {}; + const rnds = options.random || (options.rng || rng)(); + rnds[6] = rnds[6] & 15 | 64; + rnds[8] = rnds[8] & 63 | 128; + if (buf) { + offset = offset || 0; + for (let i2 = 0; i2 < 16; ++i2) { + buf[offset + i2] = rnds[i2]; + } + return buf; + } + return unsafeStringify(rnds); +} +var v4_default = v4; + +// node_modules/uuid/dist/esm-browser/sha1.js +function f2(s2, x2, y2, z2) { + switch (s2) { + case 0: + return x2 & y2 ^ ~x2 & z2; + case 1: + return x2 ^ y2 ^ z2; + case 2: + return x2 & y2 ^ x2 & z2 ^ y2 & z2; + case 3: + return x2 ^ y2 ^ z2; + } +} +function ROTL(x2, n2) { + return x2 << n2 | x2 >>> 32 - n2; +} +function sha1(bytes) { + const K = [1518500249, 1859775393, 2400959708, 3395469782]; + const H2 = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]; + if (typeof bytes === "string") { + const msg = unescape(encodeURIComponent(bytes)); + bytes = []; + for (let i2 = 0; i2 < msg.length; ++i2) { + bytes.push(msg.charCodeAt(i2)); + } + } else if (!Array.isArray(bytes)) { + bytes = Array.prototype.slice.call(bytes); + } + bytes.push(128); + const l2 = bytes.length / 4 + 2; + const N2 = Math.ceil(l2 / 16); + const M2 = new Array(N2); + for (let i2 = 0; i2 < N2; ++i2) { + const arr = new Uint32Array(16); + for (let j2 = 0; j2 < 16; ++j2) { + arr[j2] = bytes[i2 * 64 + j2 * 4] << 24 | bytes[i2 * 64 + j2 * 4 + 1] << 16 | bytes[i2 * 64 + j2 * 4 + 2] << 8 | bytes[i2 * 64 + j2 * 4 + 3]; + } + M2[i2] = arr; + } + M2[N2 - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32); + M2[N2 - 1][14] = Math.floor(M2[N2 - 1][14]); + M2[N2 - 1][15] = (bytes.length - 1) * 8 & 4294967295; + for (let i2 = 0; i2 < N2; ++i2) { + const W2 = new Uint32Array(80); + for (let t2 = 0; t2 < 16; ++t2) { + W2[t2] = M2[i2][t2]; + } + for (let t2 = 16; t2 < 80; ++t2) { + W2[t2] = ROTL(W2[t2 - 3] ^ W2[t2 - 8] ^ W2[t2 - 14] ^ W2[t2 - 16], 1); + } + let a2 = H2[0]; + let b2 = H2[1]; + let c2 = H2[2]; + let d2 = H2[3]; + let e = H2[4]; + for (let t2 = 0; t2 < 80; ++t2) { + const s2 = Math.floor(t2 / 20); + const T = ROTL(a2, 5) + f2(s2, b2, c2, d2) + e + K[s2] + W2[t2] >>> 0; + e = d2; + d2 = c2; + c2 = ROTL(b2, 30) >>> 0; + b2 = a2; + a2 = T; + } + H2[0] = H2[0] + a2 >>> 0; + H2[1] = H2[1] + b2 >>> 0; + H2[2] = H2[2] + c2 >>> 0; + H2[3] = H2[3] + d2 >>> 0; + H2[4] = H2[4] + e >>> 0; + } + return [H2[0] >> 24 & 255, H2[0] >> 16 & 255, H2[0] >> 8 & 255, H2[0] & 255, H2[1] >> 24 & 255, H2[1] >> 16 & 255, H2[1] >> 8 & 255, H2[1] & 255, H2[2] >> 24 & 255, H2[2] >> 16 & 255, H2[2] >> 8 & 255, H2[2] & 255, H2[3] >> 24 & 255, H2[3] >> 16 & 255, H2[3] >> 8 & 255, H2[3] & 255, H2[4] >> 24 & 255, H2[4] >> 16 & 255, H2[4] >> 8 & 255, H2[4] & 255]; +} +var sha1_default = sha1; + +// node_modules/uuid/dist/esm-browser/v5.js +var v5 = v35("v5", 80, sha1_default); +var v5_default = v5; + +// src/shared/loom-state/migrate/migrate-state-3.ts +var createHeaderRow = () => { + return { + id: v4_default() + }; +}; +var createFooterRow = () => { + return { + id: v4_default() + }; +}; +var MigrateState3 = class { + migrate(prevState) { + const { columns, rows, cells, tags } = prevState.model; + const nextHeaderRows = [createHeaderRow()]; + const nextBodyRows = rows.filter((_row, i2) => i2 !== 0).map((row) => { + return { + id: row.id, + index: row.index - 1, + creationTime: row.creationTime, + lastEditedTime: row.lastEditedTime, + menuCellId: row.menuCellId + }; + }); + const nextFooterRows = [createFooterRow(), createFooterRow()]; + const nextColumns = columns.map((column) => { + return { + id: column.id, + sortDir: column.sortDir, + width: column.width, + type: column.type, + isVisible: column.isVisible, + dateFormat: column.dateFormat, + currencyType: column.currencyType, + shouldWrapOverflow: column.shouldWrapOverflow + }; + }); + const nextHeaderCells = cells.filter((cell) => cell.isHeader).map((cell) => { + return { + id: cell.id, + columnId: cell.columnId, + rowId: nextHeaderRows[0].id, + markdown: cell.markdown + }; + }); + const nextBodyCells = cells.filter((cell) => !cell.isHeader).map((cell) => { + return { + id: cell.id, + columnId: cell.columnId, + rowId: cell.rowId, + dateTime: cell.dateTime, + markdown: cell.markdown + }; + }); + const nextFooterCells = []; + for (let i2 = 0; i2 < 2; i2++) { + columns.forEach((column) => { + nextFooterCells.push({ + id: v4_default(), + columnId: column.id, + rowId: nextFooterRows[i2].id, + functionType: "none" /* NONE */ + }); + }); + } + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: nextColumns, + headerRows: nextHeaderRows, + bodyRows: nextBodyRows, + footerRows: nextFooterRows, + headerCells: nextHeaderCells, + bodyCells: nextBodyCells, + footerCells: [], + tags + }) + }); + } +}; + +// src/shared/error/column-not-found-error.ts +var ColumNotFoundError = class extends Error { + constructor(id2) { + super(`Column ${id2} was not found`); + this.name = "ColumNotFoundError"; + } +}; + +// src/shared/loom-state/migrate/migrate-state-4.ts +var CHECKBOX_MARKDOWN_UNCHECKED = "[ ]"; +var MigrateState4 = class { + migrate(prevState) { + const { columns, bodyCells } = prevState.model; + const nextBodyCells = bodyCells.map((cell) => { + const column = columns.find( + (column2) => column2.id === cell.columnId + ); + if (!column) + throw new ColumNotFoundError(cell.columnId); + let markdown = cell.markdown; + if (column.type === "checkbox" /* CHECKBOX */) { + if (markdown === "") { + markdown = CHECKBOX_MARKDOWN_UNCHECKED; + } + } + return __spreadProps(__spreadValues({}, cell), { + markdown + }); + }); + return { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyCells: nextBodyCells, + filterRules: [] + }), + pluginVersion: prevState.pluginVersion + }; + } +}; + +// src/shared/loom-state/migrate/migrate-state-5.ts +var MigrateState5 = class { + migrate(prevState) { + const { footerCells } = prevState.model; + const nextFooterCells = footerCells.map((cell) => { + return __spreadProps(__spreadValues({}, cell), { + functionType: cell.functionType.replace( + /_/g, + "-" + ) + }); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + footerCells: nextFooterCells + }) + }); + } +}; + +// src/shared/loom-state/migrate/migrate-state-6.ts +var import_lodash2 = __toESM(require_lodash()); +var MigrateState6 = class { + migrate(prevState) { + const { + columns, + tags, + bodyCells, + bodyRows, + headerCells, + headerRows, + footerRows, + footerCells, + filterRules + } = prevState.model; + const nextColumns = columns.map((column) => { + const filteredTags = tags.filter( + (tag) => tag.columnId === column.id + ); + const nextTags = filteredTags.map((tag) => { + return { + id: tag.id, + markdown: tag.markdown, + color: tag.color + }; + }); + return __spreadProps(__spreadValues({}, column), { + tags: nextTags + }); + }); + const nextBodyCells = bodyCells.map((cell) => { + const filteredTags = tags.filter( + (tag) => tag.cellIds.includes(cell.id) + ); + const nextTagIds = filteredTags.map((tag) => tag.id); + return __spreadProps(__spreadValues({}, cell), { + tagIds: nextTagIds + }); + }); + const nextBodyRows = bodyRows.map((row) => { + const rowCopy = (0, import_lodash2.cloneDeep)(row); + const unknownRow = rowCopy; + if (unknownRow["menuCellId"]) { + delete unknownRow.menuCellId; + } + return rowCopy; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: { + columns: nextColumns, + headerRows, + bodyRows: nextBodyRows, + footerRows, + headerCells, + bodyCells: nextBodyCells, + footerCells, + filterRules + } + }); + } +}; + +// src/shared/loom-state/migrate/migrate-state-7.ts +var import_lodash3 = __toESM(require_lodash()); +var MigrateState7 = class { + migrate(prevState) { + const { columns, footerCells } = prevState.model; + const nextColumns = columns.map((column) => { + const footerCell = footerCells.find( + (cell) => cell.columnId === column.id + ); + if (!footerCell) + throw new Error("Footer cell not found"); + return __spreadProps(__spreadValues({}, column), { + functionType: footerCell.functionType + }); + }); + const nextFooterCells = footerCells.map((cell) => { + const cellCopy = (0, import_lodash3.cloneDeep)(cell); + const unknownCell = cellCopy; + if (unknownCell["functionType"]) { + delete unknownCell.functionType; + } + return cell; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: nextColumns, + footerCells: nextFooterCells + }) + }); + } +}; + +// src/shared/loom-state/migrate/migrate-state-8.ts +var MigrateState8 = class { + migrate(prevState) { + const { columns } = prevState.model; + const nextColumns = columns.map((column) => { + return __spreadProps(__spreadValues({}, column), { + isLocked: false, + aspectRatio: "16/9" /* SIXTEEN_BY_NINE */, + horizontalPadding: "unset" /* UNSET */, + verticalPadding: "unset" /* UNSET */ + }); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: nextColumns + }) + }); + } +}; + +// src/shared/loom-state/types/loom-state.ts +var Color = /* @__PURE__ */ ((Color2) => { + Color2["LIGHT_GRAY"] = "light gray"; + Color2["GRAY"] = "gray"; + Color2["BROWN"] = "brown"; + Color2["ORANGE"] = "orange"; + Color2["YELLOW"] = "yellow"; + Color2["GREEN"] = "green"; + Color2["BLUE"] = "blue"; + Color2["PURPLE"] = "purple"; + Color2["PINK"] = "pink"; + Color2["RED"] = "red"; + return Color2; +})(Color || {}); +var PaddingSize2 = /* @__PURE__ */ ((PaddingSize6) => { + PaddingSize6["UNSET"] = "unset"; + PaddingSize6["SM"] = "sm"; + PaddingSize6["MD"] = "md"; + PaddingSize6["LG"] = "lg"; + PaddingSize6["XL"] = "xl"; + PaddingSize6["XXL"] = "2xl"; + PaddingSize6["XXXL"] = "3xl"; + PaddingSize6["XXXXL"] = "4xl"; + return PaddingSize6; +})(PaddingSize2 || {}); +var CellType2 = /* @__PURE__ */ ((CellType6) => { + CellType6["TEXT"] = "text"; + CellType6["EMBED"] = "embed"; + CellType6["FILE"] = "file"; + CellType6["NUMBER"] = "number"; + CellType6["TAG"] = "tag"; + CellType6["MULTI_TAG"] = "multi-tag"; + CellType6["DATE"] = "date"; + CellType6["CHECKBOX"] = "checkbox"; + CellType6["CREATION_TIME"] = "creation-time"; + CellType6["LAST_EDITED_TIME"] = "last-edited-time"; + return CellType6; +})(CellType2 || {}); +var DateFormat2 = /* @__PURE__ */ ((DateFormat9) => { + DateFormat9["MM_DD_YYYY"] = "mm/dd/yyyy"; + DateFormat9["DD_MM_YYYY"] = "dd/mm/yyyy"; + DateFormat9["YYYY_MM_DD"] = "yyyy/mm/dd"; + DateFormat9["FULL"] = "full"; + DateFormat9["RELATIVE"] = "relative"; + return DateFormat9; +})(DateFormat2 || {}); +var CurrencyType2 = /* @__PURE__ */ ((CurrencyType11) => { + CurrencyType11["ARGENTINA"] = "ARS"; + CurrencyType11["AUSTRALIA"] = "AUD"; + CurrencyType11["CANADA"] = "CAD"; + CurrencyType11["COLOMBIA"] = "COP"; + CurrencyType11["DENMARK"] = "DKK"; + CurrencyType11["UAE"] = "AED"; + CurrencyType11["EUROPE"] = "EUR"; + CurrencyType11["ICELAND"] = "ISK"; + CurrencyType11["ISRAEL"] = "ILS"; + CurrencyType11["MEXICO"] = "MXN"; + CurrencyType11["NORWAY"] = "NOK"; + CurrencyType11["GREAT_BRITAIN"] = "GBP"; + CurrencyType11["BRAZIL"] = "BRL"; + CurrencyType11["SAUDI_ARABIA"] = "SAR"; + CurrencyType11["RUSSIA"] = "RUB"; + CurrencyType11["INDIA"] = "INR"; + CurrencyType11["SINGAPORE"] = "SGB"; + CurrencyType11["SWEDEN"] = "SEK"; + CurrencyType11["SWITZERLAND"] = "CHF"; + CurrencyType11["UNITED_STATES"] = "USD"; + CurrencyType11["SOUTH_KOREA"] = "KRW"; + CurrencyType11["JAPAN"] = "JPY"; + CurrencyType11["CHINA"] = "CNY"; + return CurrencyType11; +})(CurrencyType2 || {}); +var AspectRatio2 = /* @__PURE__ */ ((AspectRatio6) => { + AspectRatio6["UNSET"] = "unset"; + AspectRatio6["NINE_BY_SIXTEEN"] = "9/16"; + AspectRatio6["FOUR_BY_THREE"] = "4/3"; + AspectRatio6["SIXTEEN_BY_NINE"] = "16/9"; + return AspectRatio6; +})(AspectRatio2 || {}); +var GeneralCalculation = /* @__PURE__ */ ((GeneralCalculation3) => { + GeneralCalculation3["NONE"] = "none"; + GeneralCalculation3["COUNT_ALL"] = "count-all"; + GeneralCalculation3["COUNT_VALUES"] = "count-values"; + GeneralCalculation3["COUNT_UNIQUE"] = "count-unique"; + GeneralCalculation3["COUNT_EMPTY"] = "count-empty"; + GeneralCalculation3["COUNT_NOT_EMPTY"] = "count-not-empty"; + GeneralCalculation3["PERCENT_EMPTY"] = "percent-empty"; + GeneralCalculation3["PERCENT_NOT_EMPTY"] = "percent-not-empty"; + return GeneralCalculation3; +})(GeneralCalculation || {}); +var NumberCalculation = /* @__PURE__ */ ((NumberCalculation2) => { + NumberCalculation2["SUM"] = "sum"; + NumberCalculation2["AVG"] = "avg"; + NumberCalculation2["MIN"] = "min"; + NumberCalculation2["MAX"] = "max"; + NumberCalculation2["MEDIAN"] = "median"; + NumberCalculation2["RANGE"] = "range"; + return NumberCalculation2; +})(NumberCalculation || {}); +var DateFilterOption = /* @__PURE__ */ ((DateFilterOption4) => { + DateFilterOption4["UNSELECTED"] = "unselected"; + DateFilterOption4["TODAY"] = "today"; + DateFilterOption4["TOMORROW"] = "tomorrow"; + DateFilterOption4["YESTERDAY"] = "yesterday"; + DateFilterOption4["ONE_WEEK_AGO"] = "one-week-ago"; + DateFilterOption4["ONE_WEEK_FROM_NOW"] = "one-week-from-now"; + DateFilterOption4["ONE_MONTH_AGO"] = "one-month-ago"; + DateFilterOption4["ONE_MONTH_FROM_NOW"] = "one-month-from-now"; + return DateFilterOption4; +})(DateFilterOption || {}); + +// src/shared/loom-state/migrate/migrate-state-9.ts +var import_lodash4 = __toESM(require_lodash()); +var MigrateState9 = class { + migrate(prevState) { + const { columns, bodyRows } = prevState.model; + const nextColumns = columns.map((column) => { + return __spreadProps(__spreadValues({}, column), { + sortDir: "default" /* NONE */ + }); + }); + const bodyRowsCopy = (0, import_lodash4.cloneDeep)(bodyRows); + bodyRowsCopy.sort((a2, b2) => a2.index - b2.index); + const nextBodyRows = bodyRowsCopy.map((row, i2) => { + return __spreadProps(__spreadValues({}, row), { + index: i2 + }); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: nextColumns, + bodyRows: nextBodyRows + }) + }); + } +}; + +// src/shared/loom-state/migrate/migrate-state-10.ts +var import_lodash5 = __toESM(require_lodash()); +var MigrateState10 = class { + migrate(prevState) { + const { columns, bodyCells } = prevState.model; + const nextColumns = columns.map((column) => { + const columnCopy = (0, import_lodash5.cloneDeep)(column); + const unknownCopy = columnCopy; + unknownCopy.calculationType = unknownCopy.functionType; + delete unknownCopy.functionType; + return columnCopy; + }); + const nextBodyCells = bodyCells.map((cell) => { + return __spreadProps(__spreadValues({}, cell), { + isExternalLink: true + }); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: nextColumns, + bodyCells: nextBodyCells + }) + }); + } +}; + +// src/shared/loom-state/migrate/migrate-state-11.ts +var MigrateState11 = class { + migrate(prevState) { + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + settings: { + numFrozenColumns: 1 + } + }) + }); + } +}; + +// src/shared/color.ts +var findColorClassName = (isDarkMode, color) => { + switch (color) { + case "light gray" /* LIGHT_GRAY */: + return isDarkMode ? "dataloom-light-gray--dark" : "dataloom-light-gray--light"; + case "gray" /* GRAY */: + return isDarkMode ? "dataloom-gray--dark" : "dataloom-gray--light"; + case "brown" /* BROWN */: + return isDarkMode ? "dataloom-brown--dark" : "dataloom-brown--light"; + case "orange" /* ORANGE */: + return isDarkMode ? "dataloom-orange--dark" : "dataloom-orange--light"; + case "yellow" /* YELLOW */: + return isDarkMode ? "dataloom-yellow--dark" : "dataloom-yellow--light"; + case "green" /* GREEN */: + return isDarkMode ? "dataloom-green--dark" : "dataloom-green--light"; + case "blue" /* BLUE */: + return isDarkMode ? "dataloom-blue--dark" : "dataloom-blue--light"; + case "purple" /* PURPLE */: + return isDarkMode ? "dataloom-purple--dark" : "dataloom-purple--light"; + case "pink" /* PINK */: + return isDarkMode ? "dataloom-pink--dark" : "dataloom-pink--light"; + case "red" /* RED */: + return isDarkMode ? "dataloom-red--dark" : "dataloom-red--light"; + default: + return ""; + } +}; +var randomColor = () => { + const index = Math.floor(Math.random() * Object.values(Color).length); + return Object.values(Color)[index]; +}; + +// src/shared/constants.ts +var MIN_COLUMN_WIDTH = 40; +var CHECKBOX_MARKDOWN_CHECKED = "[x]"; +var CHECKBOX_MARKDOWN_UNCHECKED2 = "[ ]"; + +// src/shared/loom-state/loom-state-factory.ts +var createColumn = (options) => { + const { cellType = "text" /* TEXT */ } = options || {}; + return { + id: v4_default(), + sortDir: "default" /* NONE */, + isVisible: true, + width: "140px", + type: cellType, + numberPrefix: "", + numberSuffix: "", + numberSeparator: "", + content: "New Column", + numberFormat: "number" /* NUMBER */, + currencyType: "USD" /* UNITED_STATES */, + dateFormat: "mm/dd/yyyy" /* MM_DD_YYYY */, + shouldWrapOverflow: true, + tags: [], + calculationType: "none" /* NONE */, + aspectRatio: "unset" /* UNSET */, + horizontalPadding: "unset" /* UNSET */, + verticalPadding: "unset" /* UNSET */ + }; +}; +var createRow = (index, options) => { + const { cells = [] } = options || {}; + const currentTime = Date.now(); + return { + id: v4_default(), + index, + creationTime: currentTime, + lastEditedTime: currentTime, + cells + }; +}; +var createCell = (columnId, options = {}) => { + const { + cellType, + tagIds = [], + content = "", + dateTime = null + } = options != null ? options : {}; + return { + id: v4_default(), + isExternalLink: false, + columnId, + dateTime, + content: content === "" && cellType === "checkbox" /* CHECKBOX */ ? CHECKBOX_MARKDOWN_UNCHECKED2 : content, + tagIds + }; +}; +var createTextFilter = (columnId, options) => { + const { + condition = "is" /* IS */, + isEnabled = true, + text = "" + } = options || {}; + const baseFilter = createBaseFilter(columnId, { + isEnabled + }); + return __spreadProps(__spreadValues({}, baseFilter), { + type: "text" /* TEXT */, + condition, + text + }); +}; +var createFileFilter = (columnId, options) => { + const { + condition = "is" /* IS */, + isEnabled = true, + text = "" + } = options || {}; + const baseFilter = createBaseFilter(columnId, { + isEnabled + }); + return __spreadProps(__spreadValues({}, baseFilter), { + type: "file" /* FILE */, + condition, + text + }); +}; +var createCheckboxFilter = (columnId, options) => { + const { + condition = "is" /* IS */, + isEnabled = true, + text = "" + } = options || {}; + const baseFilter = createBaseFilter(columnId, { + isEnabled + }); + return __spreadProps(__spreadValues({}, baseFilter), { + type: "checkbox" /* CHECKBOX */, + condition, + text, + isEnabled + }); +}; +var createTagFilter = (columnId, options) => { + const { + condition = "is" /* IS */, + isEnabled = true, + tagId = "" + } = options || {}; + const baseFilter = createBaseFilter(columnId, { + isEnabled + }); + return __spreadProps(__spreadValues({}, baseFilter), { + type: "tag" /* TAG */, + condition, + tagId, + isEnabled + }); +}; +var createMultiTagFilter = (columnId, options) => { + const { + condition = "contains" /* CONTAINS */, + isEnabled = true, + tagIds = [] + } = options || {}; + const baseFilter = createBaseFilter(columnId, { + isEnabled + }); + return __spreadProps(__spreadValues({}, baseFilter), { + type: "multi-tag" /* MULTI_TAG */, + condition, + tagIds + }); +}; +var createEmbedFilter = (columnId, options) => { + const { + condition = "is-empty" /* IS_EMPTY */, + isEnabled = true, + text = "" + } = options || {}; + const baseFilter = createBaseFilter(columnId, { + isEnabled + }); + return __spreadProps(__spreadValues({}, baseFilter), { + type: "embed" /* EMBED */, + condition, + text + }); +}; +var createNumberFilter = (columnId, options) => { + const { + condition = "is-equal" /* IS_EQUAL */, + isEnabled = true, + text = "" + } = options || {}; + const baseFilter = createBaseFilter(columnId, { + isEnabled + }); + return __spreadProps(__spreadValues({}, baseFilter), { + type: "number" /* NUMBER */, + condition, + text + }); +}; +var createDateFilter = (columnId, options) => { + const { + condition = "is" /* IS */, + isEnabled = true, + dateTime = null, + option = "unselected" /* UNSELECTED */ + } = options || {}; + const baseFilter = createBaseFilter(columnId, { + isEnabled + }); + return __spreadProps(__spreadValues({}, baseFilter), { + type: "date" /* DATE */, + condition, + option, + dateTime + }); +}; +var createCreationTimeFilter = (columnId, options) => { + const { + condition = "is" /* IS */, + isEnabled = true, + option = "unselected" /* UNSELECTED */, + dateTime = null + } = options || {}; + const baseFilter = createBaseFilter(columnId, { + isEnabled + }); + return __spreadProps(__spreadValues({}, baseFilter), { + type: "creation-time" /* CREATION_TIME */, + option, + condition, + dateTime + }); +}; +var createLastEditedTimeFilter = (columnId, options) => { + const { + condition = "is" /* IS */, + isEnabled = true, + option = "unselected" /* UNSELECTED */, + dateTime = null + } = options || {}; + const baseFilter = createBaseFilter(columnId, { + isEnabled + }); + return __spreadProps(__spreadValues({}, baseFilter), { + type: "last-edited-time" /* LAST_EDITED_TIME */, + option, + condition, + dateTime + }); +}; +var createBaseFilter = (columnId, options) => { + const { isEnabled = true } = options || {}; + return { + id: v4_default(), + columnId, + operator: "or", + isEnabled + }; +}; +var createTag = (content, options) => { + const { color = randomColor() } = options || {}; + return { + id: v4_default(), + content, + color + }; +}; +var createLoomState = (pluginVersion, defaultFrozenColumnCount) => { + return createGenericLoomState(1, 1, { + pluginVersion, + defaultFrozenColumnCount + }); +}; +var createGenericLoomState = (numColumns, numRows, options) => { + const { + cellType, + pluginVersion = "1.0.0", + defaultFrozenColumnCount = 1 + } = options || {}; + const columns = []; + for (let i2 = 0; i2 < numColumns; i2++) + columns.push(createColumn({ cellType })); + const rows = []; + for (let i2 = 0; i2 < numRows; i2++) { + const cells = []; + for (let j2 = 0; j2 < numColumns; j2++) { + const newCell = createCell(columns[j2].id); + cells.push(newCell); + } + const row = createRow(i2, { + cells + }); + rows.push(row); + } + const filters = []; + return { + model: { + columns, + rows, + filters, + settings: { + numFrozenColumns: defaultFrozenColumnCount, + showCalculationRow: true + } + }, + pluginVersion + }; +}; + +// src/shared/loom-state/migrate/migrate-state-12.ts +var MigrateState12 = class { + migrate(prevState) { + const { + filterRules, + columns, + headerCells, + headerRows, + bodyCells, + bodyRows, + footerCells, + footerRows, + settings + } = prevState.model; + const nextColumns = columns.map((column) => { + const { type, currencyType } = column; + let newType; + if (type === "currency" /* CURRENCY */) { + newType = "number" /* NUMBER */; + } else { + newType = type; + } + let newCurrency; + if (currencyType == "GBP" /* POUND */) { + newCurrency = "GBP" /* GREAT_BRITAIN */; + } else { + newCurrency = currencyType; + } + return __spreadProps(__spreadValues({}, column), { + type: newType, + currencyType: newCurrency, + calculationType: column.calculationType, + numberPrefix: "", + numberSuffix: "", + numberSeparator: "", + numberFormat: "number" /* NUMBER */ + }); + }); + const nextFilters = filterRules.map((rule) => { + const column = columns.find( + (column2) => column2.id === rule.columnId + ); + if (!column) + throw new ColumNotFoundError(rule.columnId); + const { type } = column; + if (type === "multi-tag" /* MULTI_TAG */) { + let condition = filterTypeToFilterCondition(rule.type); + if (condition !== "contains" /* CONTAINS */ && condition !== "does-not-contain" /* DOES_NOT_CONTAIN */ && condition !== "is-empty" /* IS_EMPTY */ && condition !== "is-not-empty" /* IS_NOT_EMPTY */) { + condition = "contains" /* CONTAINS */; + } + const filter3 = createMultiTagFilter(rule.columnId, { + condition, + tagIds: rule.tagIds, + isEnabled: rule.isEnabled + }); + return filter3; + } else if (type === "tag" /* TAG */) { + let condition = filterTypeToFilterCondition(rule.type); + if (condition !== "is" /* IS */ && condition !== "is-not" /* IS_NOT */ && condition !== "is-empty" /* IS_EMPTY */ && condition !== "is-not-empty" /* IS_NOT_EMPTY */) { + condition = "is" /* IS */; + } + const filter3 = createTagFilter(rule.columnId, { + condition, + tagId: rule.tagIds[0], + isEnabled: rule.isEnabled + }); + return filter3; + } else if (type === "checkbox" /* CHECKBOX */) { + let condition = filterTypeToFilterCondition(rule.type); + if (condition !== "is" /* IS */ && condition !== "is-not" /* IS_NOT */) { + condition = "is" /* IS */; + } + const filter3 = createCheckboxFilter(rule.columnId, { + condition, + text: rule.text, + isEnabled: rule.isEnabled + }); + return filter3; + } else if (type === "file" /* FILE */) { + const condition = filterTypeToFilterCondition(rule.type); + const filter3 = createFileFilter(rule.columnId, { + condition, + text: rule.text, + isEnabled: rule.isEnabled + }); + return filter3; + } else { + const condition = filterTypeToFilterCondition(rule.type); + const filter3 = createTextFilter(rule.columnId, { + condition, + text: rule.text, + isEnabled: rule.isEnabled + }); + return filter3; + } + }); + return __spreadProps(__spreadValues({}, prevState), { + model: { + columns: nextColumns, + footerCells, + footerRows, + headerCells, + headerRows, + bodyCells, + bodyRows, + filters: nextFilters, + settings + } + }); + } +}; +var filterTypeToFilterCondition = (type) => { + switch (type) { + case "is" /* IS */: + return "is" /* IS */; + case "is-not" /* IS_NOT */: + return "is-not" /* IS_NOT */; + case "contains" /* CONTAINS */: + return "contains" /* CONTAINS */; + case "does-not-contain" /* DOES_NOT_CONTAIN */: + return "does-not-contain" /* DOES_NOT_CONTAIN */; + case "starts-with" /* STARTS_WITH */: + return "starts-with" /* STARTS_WITH */; + case "ends-with" /* ENDS_WITH */: + return "ends-with" /* ENDS_WITH */; + case "is-empty" /* IS_EMPTY */: + return "is-empty" /* IS_EMPTY */; + case "is-not-empty" /* IS_NOT_EMPTY */: + return "is-not-empty" /* IS_NOT_EMPTY */; + default: + throw new Error("Invalid filter type"); + } +}; + +// src/shared/loom-state/migrate/migrate-state-13.ts +var MigrateState13 = class { + migrate(prevState) { + const { settings, columns, headerCells, bodyCells, bodyRows, filters } = prevState.model; + const nextSettings = __spreadProps(__spreadValues({}, settings), { + showCalculationRow: true + }); + const nextColumns = columns.map((column) => { + const cell = headerCells.find( + (cell2) => cell2.columnId === column.id + ); + if (!cell) + throw new Error("Header cell not found"); + const { markdown } = cell; + const { tags } = column; + const nextTags = tags.map((tag) => { + const { id: id2, markdown: markdown2, color } = tag; + return { + id: id2, + content: markdown2, + color + }; + }); + return __spreadProps(__spreadValues({}, column), { + content: markdown, + tags: nextTags + }); + }); + const nextRows = bodyRows.map((row) => { + const cells = bodyCells.filter( + (cell) => cell.rowId === row.id + ); + const nextCells = cells.map((cell) => { + const { + columnId, + id: id2, + isExternalLink, + dateTime, + markdown, + tagIds + } = cell; + return { + id: id2, + columnId, + isExternalLink, + dateTime, + content: markdown, + tagIds + }; + }); + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: { + columns: nextColumns, + rows: nextRows, + filters, + settings: nextSettings + } + }); + } +}; + +// src/shared/loom-state/validate/validate-state.ts +var import_runtypes = __toESM(require_lib()); +var FilterOperatorUnion = (0, import_runtypes.Union)((0, import_runtypes.Literal)("and"), (0, import_runtypes.Literal)("or")); +var TextFilterConditionUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("is" /* IS */), + (0, import_runtypes.Literal)("is-not" /* IS_NOT */), + (0, import_runtypes.Literal)("contains" /* CONTAINS */), + (0, import_runtypes.Literal)("does-not-contain" /* DOES_NOT_CONTAIN */), + (0, import_runtypes.Literal)("starts-with" /* STARTS_WITH */), + (0, import_runtypes.Literal)("ends-with" /* ENDS_WITH */), + (0, import_runtypes.Literal)("is-empty" /* IS_EMPTY */), + (0, import_runtypes.Literal)("is-not-empty" /* IS_NOT_EMPTY */) +); +var NumberFilterConditionUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("is-equal" /* IS_EQUAL */), + (0, import_runtypes.Literal)("is-not-equal" /* IS_NOT_EQUAL */), + (0, import_runtypes.Literal)("is-greater" /* IS_GREATER */), + (0, import_runtypes.Literal)("is-less" /* IS_LESS */), + (0, import_runtypes.Literal)("is-greater-or-equal" /* IS_GREATER_OR_EQUAL */), + (0, import_runtypes.Literal)("is-less-or-equal" /* IS_LESS_OR_EQUAL */), + (0, import_runtypes.Literal)("is-empty" /* IS_EMPTY */), + (0, import_runtypes.Literal)("is-not-empty" /* IS_NOT_EMPTY */) +); +var DateFilterConditionUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("is" /* IS */), + (0, import_runtypes.Literal)("is-before" /* IS_BEFORE */), + (0, import_runtypes.Literal)("is-after" /* IS_AFTER */), + (0, import_runtypes.Literal)("is-empty" /* IS_EMPTY */), + (0, import_runtypes.Literal)("is-not-empty" /* IS_NOT_EMPTY */) +); +var DateFilterOptionUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("unselected" /* UNSELECTED */), + (0, import_runtypes.Literal)("today" /* TODAY */), + (0, import_runtypes.Literal)("tomorrow" /* TOMORROW */), + (0, import_runtypes.Literal)("yesterday" /* YESTERDAY */), + (0, import_runtypes.Literal)("one-week-ago" /* ONE_WEEK_AGO */), + (0, import_runtypes.Literal)("one-week-from-now" /* ONE_WEEK_FROM_NOW */), + (0, import_runtypes.Literal)("one-month-ago" /* ONE_MONTH_AGO */), + (0, import_runtypes.Literal)("one-month-from-now" /* ONE_MONTH_FROM_NOW */) +); +var GeneralCalculationUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("none" /* NONE */), + (0, import_runtypes.Literal)("count-all" /* COUNT_ALL */), + (0, import_runtypes.Literal)("count-values" /* COUNT_VALUES */), + (0, import_runtypes.Literal)("count-unique" /* COUNT_UNIQUE */), + (0, import_runtypes.Literal)("count-empty" /* COUNT_EMPTY */), + (0, import_runtypes.Literal)("count-not-empty" /* COUNT_NOT_EMPTY */), + (0, import_runtypes.Literal)("percent-empty" /* PERCENT_EMPTY */), + (0, import_runtypes.Literal)("percent-not-empty" /* PERCENT_NOT_EMPTY */) +); +var NumberCalculationUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("sum" /* SUM */), + (0, import_runtypes.Literal)("avg" /* AVG */), + (0, import_runtypes.Literal)("min" /* MIN */), + (0, import_runtypes.Literal)("max" /* MAX */), + (0, import_runtypes.Literal)("median" /* MEDIAN */), + (0, import_runtypes.Literal)("range" /* RANGE */) +); +var CalculationTypeUnion = (0, import_runtypes.Union)( + GeneralCalculationUnion, + NumberCalculationUnion +); +var PaddingSizeUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("unset" /* UNSET */), + (0, import_runtypes.Literal)("sm" /* SM */), + (0, import_runtypes.Literal)("md" /* MD */), + (0, import_runtypes.Literal)("lg" /* LG */), + (0, import_runtypes.Literal)("xl" /* XL */), + (0, import_runtypes.Literal)("2xl" /* XXL */), + (0, import_runtypes.Literal)("3xl" /* XXXL */), + (0, import_runtypes.Literal)("4xl" /* XXXXL */) +); +var AspectRatioUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("unset" /* UNSET */), + (0, import_runtypes.Literal)("9/16" /* NINE_BY_SIXTEEN */), + (0, import_runtypes.Literal)("4/3" /* FOUR_BY_THREE */), + (0, import_runtypes.Literal)("16/9" /* SIXTEEN_BY_NINE */) +); +var ColorUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("light gray" /* LIGHT_GRAY */), + (0, import_runtypes.Literal)("gray" /* GRAY */), + (0, import_runtypes.Literal)("brown" /* BROWN */), + (0, import_runtypes.Literal)("orange" /* ORANGE */), + (0, import_runtypes.Literal)("yellow" /* YELLOW */), + (0, import_runtypes.Literal)("green" /* GREEN */), + (0, import_runtypes.Literal)("blue" /* BLUE */), + (0, import_runtypes.Literal)("purple" /* PURPLE */), + (0, import_runtypes.Literal)("pink" /* PINK */), + (0, import_runtypes.Literal)("red" /* RED */) +); +var SortDirUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("asc" /* ASC */), + (0, import_runtypes.Literal)("desc" /* DESC */), + (0, import_runtypes.Literal)("default" /* NONE */) +); +var CellTypeUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("text" /* TEXT */), + (0, import_runtypes.Literal)("embed" /* EMBED */), + (0, import_runtypes.Literal)("file" /* FILE */), + (0, import_runtypes.Literal)("number" /* NUMBER */), + (0, import_runtypes.Literal)("tag" /* TAG */), + (0, import_runtypes.Literal)("multi-tag" /* MULTI_TAG */), + (0, import_runtypes.Literal)("date" /* DATE */), + (0, import_runtypes.Literal)("checkbox" /* CHECKBOX */), + (0, import_runtypes.Literal)("creation-time" /* CREATION_TIME */), + (0, import_runtypes.Literal)("last-edited-time" /* LAST_EDITED_TIME */) +); +var DateFormatUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("mm/dd/yyyy" /* MM_DD_YYYY */), + (0, import_runtypes.Literal)("dd/mm/yyyy" /* DD_MM_YYYY */), + (0, import_runtypes.Literal)("yyyy/mm/dd" /* YYYY_MM_DD */), + (0, import_runtypes.Literal)("full" /* FULL */), + (0, import_runtypes.Literal)("relative" /* RELATIVE */) +); +var NumberFormatUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("number" /* NUMBER */), + (0, import_runtypes.Literal)("currency" /* CURRENCY */) +); +var CurrencyUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("ARS" /* ARGENTINA */), + (0, import_runtypes.Literal)("AUD" /* AUSTRALIA */), + (0, import_runtypes.Literal)("BRL" /* BRAZIL */), + (0, import_runtypes.Literal)("CAD" /* CANADA */), + (0, import_runtypes.Literal)("CNY" /* CHINA */), + (0, import_runtypes.Literal)("COP" /* COLOMBIA */), + (0, import_runtypes.Literal)("DKK" /* DENMARK */), + (0, import_runtypes.Literal)("EUR" /* EUROPE */), + (0, import_runtypes.Literal)("GBP" /* GREAT_BRITAIN */), + (0, import_runtypes.Literal)("ISK" /* ICELAND */), + (0, import_runtypes.Literal)("ILS" /* ISRAEL */), + (0, import_runtypes.Literal)("INR" /* INDIA */), + (0, import_runtypes.Literal)("JPY" /* JAPAN */), + (0, import_runtypes.Literal)("MXN" /* MEXICO */), + (0, import_runtypes.Literal)("NOK" /* NORWAY */), + (0, import_runtypes.Literal)("RUB" /* RUSSIA */), + (0, import_runtypes.Literal)("SAR" /* SAUDI_ARABIA */), + (0, import_runtypes.Literal)("SGB" /* SINGAPORE */), + (0, import_runtypes.Literal)("KRW" /* SOUTH_KOREA */), + (0, import_runtypes.Literal)("SEK" /* SWEDEN */), + (0, import_runtypes.Literal)("CHF" /* SWITZERLAND */), + (0, import_runtypes.Literal)("AED" /* UAE */), + (0, import_runtypes.Literal)("USD" /* UNITED_STATES */) +); +var BaseFilter2 = (0, import_runtypes.Record)({ + id: import_runtypes.String, + columnId: import_runtypes.String, + operator: FilterOperatorUnion, + isEnabled: import_runtypes.Boolean +}); +var TextFilter2 = BaseFilter2.extend({ + type: (0, import_runtypes.Literal)("text" /* TEXT */), + condition: TextFilterConditionUnion, + text: import_runtypes.String +}); +var FileFilter2 = BaseFilter2.extend({ + type: (0, import_runtypes.Literal)("file" /* FILE */), + condition: TextFilterConditionUnion, + text: import_runtypes.String +}); +var CheckboxConditionUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("is" /* IS */), + (0, import_runtypes.Literal)("is-not" /* IS_NOT */) +); +var CheckboxFilter2 = BaseFilter2.extend({ + type: (0, import_runtypes.Literal)("checkbox" /* CHECKBOX */), + condition: CheckboxConditionUnion, + text: import_runtypes.String +}); +var TagFilterConditionUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("is" /* IS */), + (0, import_runtypes.Literal)("is-not" /* IS_NOT */), + (0, import_runtypes.Literal)("is-empty" /* IS_EMPTY */), + (0, import_runtypes.Literal)("is-not-empty" /* IS_NOT_EMPTY */) +); +var TagFilter2 = BaseFilter2.extend({ + type: (0, import_runtypes.Literal)("tag" /* TAG */), + condition: TagFilterConditionUnion, + tagId: import_runtypes.String +}); +var MultiTagConditionUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("contains" /* CONTAINS */), + (0, import_runtypes.Literal)("does-not-contain" /* DOES_NOT_CONTAIN */), + (0, import_runtypes.Literal)("is-empty" /* IS_EMPTY */), + (0, import_runtypes.Literal)("is-not-empty" /* IS_NOT_EMPTY */) +); +var MultiTagFilter2 = BaseFilter2.extend({ + type: (0, import_runtypes.Literal)("multi-tag" /* MULTI_TAG */), + condition: MultiTagConditionUnion, + tagIds: (0, import_runtypes.Array)(import_runtypes.String) +}); +var EmbedConditionUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("is-empty" /* IS_EMPTY */), + (0, import_runtypes.Literal)("is-not-empty" /* IS_NOT_EMPTY */) +); +var EmbedFilter2 = BaseFilter2.extend({ + type: (0, import_runtypes.Literal)("embed" /* EMBED */), + condition: EmbedConditionUnion, + text: import_runtypes.String +}); +var NumberFilter2 = BaseFilter2.extend({ + type: (0, import_runtypes.Literal)("number" /* NUMBER */), + condition: NumberFilterConditionUnion, + text: import_runtypes.String +}); +var DateFilter2 = BaseFilter2.extend({ + type: (0, import_runtypes.Literal)("date" /* DATE */), + condition: DateFilterConditionUnion, + option: DateFilterOptionUnion, + dateTime: (0, import_runtypes.Union)(import_runtypes.Number, (0, import_runtypes.Literal)(null)) +}); +var CreationTimeConditionUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("is" /* IS */), + (0, import_runtypes.Literal)("is-after" /* IS_AFTER */), + (0, import_runtypes.Literal)("is-before" /* IS_BEFORE */) +); +var CreationTimeFilter2 = BaseFilter2.extend({ + type: (0, import_runtypes.Literal)("creation-time" /* CREATION_TIME */), + condition: CreationTimeConditionUnion, + option: DateFilterOptionUnion, + dateTime: (0, import_runtypes.Union)(import_runtypes.Number, (0, import_runtypes.Literal)(null)) +}); +var LastEditedTimeConditionUnion = (0, import_runtypes.Union)( + (0, import_runtypes.Literal)("is" /* IS */), + (0, import_runtypes.Literal)("is-after" /* IS_AFTER */), + (0, import_runtypes.Literal)("is-before" /* IS_BEFORE */) +); +var LastEditedTimeFilter2 = BaseFilter2.extend({ + type: (0, import_runtypes.Literal)("last-edited-time" /* LAST_EDITED_TIME */), + condition: LastEditedTimeConditionUnion, + option: DateFilterOptionUnion, + dateTime: (0, import_runtypes.Union)(import_runtypes.Number, (0, import_runtypes.Literal)(null)) +}); +var Filter2 = (0, import_runtypes.Union)( + TextFilter2, + TagFilter2, + MultiTagFilter2, + CheckboxFilter2, + FileFilter2, + EmbedFilter2, + NumberFilter2, + DateFilter2, + CreationTimeFilter2, + LastEditedTimeFilter2 +); +var Tag2 = (0, import_runtypes.Record)({ + id: import_runtypes.String, + content: import_runtypes.String, + color: ColorUnion +}); +var Column2 = (0, import_runtypes.Record)({ + id: import_runtypes.String, + sortDir: SortDirUnion, + width: import_runtypes.String, + type: CellTypeUnion, + isVisible: import_runtypes.Boolean, + dateFormat: DateFormatUnion, + content: import_runtypes.String, + numberFormat: NumberFormatUnion, + currencyType: CurrencyUnion, + numberPrefix: import_runtypes.String, + numberSuffix: import_runtypes.String, + numberSeparator: import_runtypes.String, + shouldWrapOverflow: import_runtypes.Boolean, + tags: (0, import_runtypes.Array)(Tag2), + calculationType: CalculationTypeUnion, + aspectRatio: AspectRatioUnion, + horizontalPadding: PaddingSizeUnion, + verticalPadding: PaddingSizeUnion +}); +var Cell2 = (0, import_runtypes.Record)({ + id: import_runtypes.String, + columnId: import_runtypes.String, + isExternalLink: import_runtypes.Boolean, + dateTime: (0, import_runtypes.Union)(import_runtypes.Number, (0, import_runtypes.Literal)(null)), + content: import_runtypes.String, + tagIds: (0, import_runtypes.Array)(import_runtypes.String) +}); +var Row2 = (0, import_runtypes.Record)({ + id: import_runtypes.String, + index: import_runtypes.Number, + creationTime: import_runtypes.Number, + lastEditedTime: import_runtypes.Number, + cells: (0, import_runtypes.Array)(Cell2) +}); +var TableSettings = (0, import_runtypes.Record)({ + numFrozenColumns: import_runtypes.Number, + showCalculationRow: import_runtypes.Boolean +}); +var TableModel = (0, import_runtypes.Record)({ + columns: (0, import_runtypes.Array)(Column2), + rows: (0, import_runtypes.Array)(Row2), + filters: (0, import_runtypes.Array)(Filter2), + settings: TableSettings +}); +var LoomStateObject = (0, import_runtypes.Record)({ + pluginVersion: import_runtypes.String, + model: TableModel +}); + +// src/data/deserialization-error.ts +var import_runtypes2 = __toESM(require_lib()); +var DeserializationError = class extends Error { + constructor(error, pluginVersion, fileVersion, failedMigration) { + let message = ""; + if (error instanceof import_runtypes2.ValidationError) { + message = JSON.stringify(error.details, null, 2); + } else { + message = error.message; + } + super(message); + this.name = "DeserializationError"; + this.pluginVersion = pluginVersion; + this.fileVersion = fileVersion; + this.failedMigration = failedMigration; + } +}; + +// src/data/serialization.ts +var serializeState = (state) => { + return JSON.stringify(state, null, 2); +}; +var deserializeState = (data, pluginVersion) => { + let fileVersion = ""; + let failedMigration = null; + try { + const parsedState = JSON.parse(data); + const untypedVersion = parsedState["pluginVersion"]; + if (typeof untypedVersion === "number") { + fileVersion = legacyVersionToString(untypedVersion); + } else if (typeof untypedVersion === "string") { + fileVersion = untypedVersion; + } + if (isVersionLessThan(pluginVersion, fileVersion)) { + throw new Error( + "Loom was made with a newer plugin version. Please update the DataLoom plugin of this vault." + ); + } + let currentState = parsedState; + const VERSION_6_1_0 = "6.1.0"; + if (isVersionLessThan(fileVersion, VERSION_6_1_0)) { + failedMigration = VERSION_6_1_0; + const nextState = new MigrateState0().migrate( + currentState + ); + currentState = nextState; + failedMigration = null; + } + const VERSION_6_2_0 = "6.2.0"; + if (isVersionLessThan(fileVersion, VERSION_6_2_0)) { + failedMigration = VERSION_6_2_0; + const nextState = new MigrateState1().migrate( + currentState + ); + currentState = nextState; + failedMigration = null; + } + const VERSION_6_3_0 = "6.3.0"; + if (isVersionLessThan(fileVersion, VERSION_6_3_0)) { + failedMigration = VERSION_6_3_0; + const nextState = new MigrateState2().migrate( + currentState + ); + currentState = nextState; + failedMigration = null; + } + const VERSION_6_4_0 = "6.4.0"; + if (isVersionLessThan(fileVersion, VERSION_6_4_0)) { + failedMigration = VERSION_6_4_0; + const nextState = new MigrateState3().migrate( + currentState + ); + currentState = nextState; + failedMigration = null; + } + const VERSION_6_8_0 = "6.8.0"; + if (isVersionLessThan(fileVersion, VERSION_6_8_0)) { + failedMigration = VERSION_6_8_0; + const nextState = new MigrateState4().migrate( + currentState + ); + currentState = nextState; + failedMigration = null; + } + const VERSION_6_9_1 = "6.9.1"; + if (isVersionLessThan(fileVersion, VERSION_6_9_1)) { + failedMigration = VERSION_6_9_1; + const nextState = new MigrateState5().migrate( + currentState + ); + currentState = nextState; + failedMigration = null; + } + const VERSION_6_10_0 = "6.10.0"; + if (isVersionLessThan(fileVersion, VERSION_6_10_0)) { + failedMigration = VERSION_6_10_0; + const nextState = new MigrateState6().migrate( + currentState + ); + currentState = nextState; + failedMigration = null; + } + const VERSION_6_12_3 = "6.12.3"; + if (isVersionLessThan(fileVersion, VERSION_6_12_3)) { + failedMigration = VERSION_6_12_3; + const nextState = new MigrateState7().migrate( + currentState + ); + currentState = nextState; + failedMigration = VERSION_6_12_3; + } + const VERSION_6_17_0 = "6.17.0"; + if (isVersionLessThan(fileVersion, VERSION_6_17_0)) { + failedMigration = VERSION_6_17_0; + const nextState = new MigrateState8().migrate( + currentState + ); + currentState = nextState; + failedMigration = null; + } + const VERSION_6_18_6 = "6.18.6"; + if (isVersionLessThan(fileVersion, VERSION_6_18_6)) { + failedMigration = VERSION_6_18_6; + const nextState = new MigrateState9().migrate( + currentState + ); + currentState = nextState; + failedMigration = null; + } + const VERSION_6_19_0 = "6.19.0"; + if (isVersionLessThan(fileVersion, VERSION_6_19_0)) { + failedMigration = VERSION_6_19_0; + const nextState = new MigrateState10().migrate( + currentState + ); + currentState = nextState; + failedMigration = null; + } + const VERSION_8_2_0 = "8.2.0"; + if (isVersionLessThan(fileVersion, VERSION_8_2_0)) { + failedMigration = VERSION_8_2_0; + const nextState = new MigrateState11().migrate( + currentState + ); + currentState = nextState; + failedMigration = null; + } + const VERSION_8_5_0 = "8.5.0"; + if (isVersionLessThan(fileVersion, VERSION_8_5_0)) { + failedMigration = VERSION_8_5_0; + const nextState = new MigrateState12().migrate( + currentState + ); + currentState = nextState; + failedMigration = null; + } + const VERSION_8_6_0 = "8.6.0"; + if (isVersionLessThan(fileVersion, VERSION_8_6_0)) { + failedMigration = VERSION_8_6_0; + const nextState = new MigrateState13().migrate( + currentState + ); + currentState = nextState; + failedMigration = null; + } + LoomStateObject.check(currentState); + const state = currentState; + state.pluginVersion = pluginVersion; + return state; + } catch (err) { + throw new DeserializationError( + err, + pluginVersion, + fileVersion, + failedMigration + ); + } +}; + +// src/obsidian/embedded/embedded-app-manager.tsx +var import_lodash18 = __toESM(require_lodash()); + +// src/shared/events.ts +var obsidianEvent = (name) => { + return "dataloom-" + name; +}; +var EVENT_COLUMN_ADD = obsidianEvent("add-column"); +var EVENT_COLUMN_DELETE = obsidianEvent("delete-column"); +var EVENT_ROW_ADD = obsidianEvent("add-row"); +var EVENT_ROW_DELETE = obsidianEvent("delete-row"); +var EVENT_APP_REFRESH = obsidianEvent("app-refresh"); +var EVENT_GLOBAL_CLICK = obsidianEvent("global-click"); +var EVENT_GLOBAL_KEYDOWN = obsidianEvent("global-keydown"); +var EVENT_DOWNLOAD_CSV = obsidianEvent("download-csv"); +var EVENT_DOWNLOAD_MARKDOWN = obsidianEvent("download-markdown"); + +// node_modules/react-redux/es/index.js +var import_shim = __toESM(require_shim()); +var import_with_selector = __toESM(require_with_selector()); + +// node_modules/react-redux/es/utils/reactBatchedUpdates.js +var import_react_dom = __toESM(require_react_dom()); + +// node_modules/react-redux/es/utils/batch.js +function defaultNoopBatch(callback) { + callback(); +} +var batch = defaultNoopBatch; +var setBatch = (newBatch) => batch = newBatch; +var getBatch = () => batch; + +// node_modules/react-redux/es/hooks/useSelector.js +var import_react2 = __toESM(require_react()); + +// node_modules/react-redux/es/hooks/useReduxContext.js var import_react = __toESM(require_react()); -// node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs -var import_emotion_react_jsx_runtime_cjs = __toESM(require_emotion_react_jsx_runtime_cjs(), 1); +// node_modules/react-redux/es/components/Context.js +var React = __toESM(require_react()); +var ContextKey = Symbol.for(`react-redux-context`); +var gT = typeof globalThis !== "undefined" ? globalThis : {}; +function getContext() { + var _gT$ContextKey; + if (!React.createContext) + return {}; + const contextMap = (_gT$ContextKey = gT[ContextKey]) != null ? _gT$ContextKey : gT[ContextKey] = /* @__PURE__ */ new Map(); + let realContext = contextMap.get(React.createContext); + if (!realContext) { + realContext = React.createContext(null); + if (true) { + realContext.displayName = "ReactRedux"; + } + contextMap.set(React.createContext, realContext); + } + return realContext; +} +var ReactReduxContext = /* @__PURE__ */ getContext(); -// src/obsidian-shim/build/mount-context.tsx -var MountContext = import_react.default.createContext(null); -var useMountState = () => { - const value = import_react.default.useContext(MountContext); +// node_modules/react-redux/es/hooks/useReduxContext.js +function createReduxContextHook(context = ReactReduxContext) { + return function useReduxContext2() { + const contextValue = (0, import_react.useContext)(context); + if (!contextValue) { + throw new Error("could not find react-redux context value; please ensure the component is wrapped in a "); + } + return contextValue; + }; +} +var useReduxContext = /* @__PURE__ */ createReduxContextHook(); + +// node_modules/react-redux/es/utils/useSyncExternalStore.js +var notInitialized = () => { + throw new Error("uSES not initialized!"); +}; + +// node_modules/react-redux/es/hooks/useSelector.js +var useSyncExternalStoreWithSelector = notInitialized; +var initializeUseSelector = (fn2) => { + useSyncExternalStoreWithSelector = fn2; +}; +var refEquality = (a2, b2) => a2 === b2; +function createSelectorHook(context = ReactReduxContext) { + const useReduxContext2 = context === ReactReduxContext ? useReduxContext : createReduxContextHook(context); + return function useSelector2(selector, equalityFnOrOptions = {}) { + const { + equalityFn = refEquality, + stabilityCheck = void 0, + noopCheck = void 0 + } = typeof equalityFnOrOptions === "function" ? { + equalityFn: equalityFnOrOptions + } : equalityFnOrOptions; + if (true) { + if (!selector) { + throw new Error(`You must pass a selector to useSelector`); + } + if (typeof selector !== "function") { + throw new Error(`You must pass a function as a selector to useSelector`); + } + if (typeof equalityFn !== "function") { + throw new Error(`You must pass a function as an equality function to useSelector`); + } + } + const { + store: store2, + subscription, + getServerState, + stabilityCheck: globalStabilityCheck, + noopCheck: globalNoopCheck + } = useReduxContext2(); + const firstRun = (0, import_react2.useRef)(true); + const wrappedSelector = (0, import_react2.useCallback)({ + [selector.name](state) { + const selected = selector(state); + if (true) { + const finalStabilityCheck = typeof stabilityCheck === "undefined" ? globalStabilityCheck : stabilityCheck; + if (finalStabilityCheck === "always" || finalStabilityCheck === "once" && firstRun.current) { + const toCompare = selector(state); + if (!equalityFn(selected, toCompare)) { + console.warn("Selector " + (selector.name || "unknown") + " returned a different result when called with the same parameters. This can lead to unnecessary rerenders.\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization", { + state, + selected, + selected2: toCompare + }); + } + } + const finalNoopCheck = typeof noopCheck === "undefined" ? globalNoopCheck : noopCheck; + if (finalNoopCheck === "always" || finalNoopCheck === "once" && firstRun.current) { + if (selected === state) { + console.warn("Selector " + (selector.name || "unknown") + " returned the root state when called. This can lead to unnecessary rerenders.\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes."); + } + } + if (firstRun.current) + firstRun.current = false; + } + return selected; + } + }[selector.name], [selector, globalStabilityCheck, stabilityCheck]); + const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store2.getState, getServerState || store2.getState, wrappedSelector, equalityFn); + (0, import_react2.useDebugValue)(selectedState); + return selectedState; + }; +} +var useSelector = /* @__PURE__ */ createSelectorHook(); + +// node_modules/react-redux/es/components/connect.js +var import_hoist_non_react_statics = __toESM(require_hoist_non_react_statics_cjs()); +var React3 = __toESM(require_react()); +var import_react_is = __toESM(require_react_is2()); + +// node_modules/react-redux/es/utils/Subscription.js +function createListenerCollection() { + const batch2 = getBatch(); + let first = null; + let last2 = null; + return { + clear() { + first = null; + last2 = null; + }, + notify() { + batch2(() => { + let listener2 = first; + while (listener2) { + listener2.callback(); + listener2 = listener2.next; + } + }); + }, + get() { + let listeners = []; + let listener2 = first; + while (listener2) { + listeners.push(listener2); + listener2 = listener2.next; + } + return listeners; + }, + subscribe(callback) { + let isSubscribed = true; + let listener2 = last2 = { + callback, + next: null, + prev: last2 + }; + if (listener2.prev) { + listener2.prev.next = listener2; + } else { + first = listener2; + } + return function unsubscribe() { + if (!isSubscribed || first === null) + return; + isSubscribed = false; + if (listener2.next) { + listener2.next.prev = listener2.prev; + } else { + last2 = listener2.prev; + } + if (listener2.prev) { + listener2.prev.next = listener2.next; + } else { + first = listener2.next; + } + }; + } + }; +} +var nullListeners = { + notify() { + }, + get: () => [] +}; +function createSubscription(store2, parentSub) { + let unsubscribe; + let listeners = nullListeners; + function addNestedSub(listener2) { + trySubscribe(); + return listeners.subscribe(listener2); + } + function notifyNestedSubs() { + listeners.notify(); + } + function handleChangeWrapper() { + if (subscription.onStateChange) { + subscription.onStateChange(); + } + } + function isSubscribed() { + return Boolean(unsubscribe); + } + function trySubscribe() { + if (!unsubscribe) { + unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store2.subscribe(handleChangeWrapper); + listeners = createListenerCollection(); + } + } + function tryUnsubscribe() { + if (unsubscribe) { + unsubscribe(); + unsubscribe = void 0; + listeners.clear(); + listeners = nullListeners; + } + } + const subscription = { + addNestedSub, + notifyNestedSubs, + handleChangeWrapper, + isSubscribed, + trySubscribe, + tryUnsubscribe, + getListeners: () => listeners + }; + return subscription; +} + +// node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js +var React2 = __toESM(require_react()); +var canUseDOM = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"); +var useIsomorphicLayoutEffect = canUseDOM ? React2.useLayoutEffect : React2.useEffect; + +// node_modules/react-redux/es/components/connect.js +var useSyncExternalStore = notInitialized; +var initializeConnect = (fn2) => { + useSyncExternalStore = fn2; +}; + +// node_modules/react-redux/es/components/Provider.js +var React4 = __toESM(require_react()); +function Provider({ + store: store2, + context, + children, + serverState, + stabilityCheck = "once", + noopCheck = "once" +}) { + const contextValue = React4.useMemo(() => { + const subscription = createSubscription(store2); + return { + store: store2, + subscription, + getServerState: serverState ? () => serverState : void 0, + stabilityCheck, + noopCheck + }; + }, [store2, serverState, stabilityCheck, noopCheck]); + const previousState = React4.useMemo(() => store2.getState(), [store2]); + useIsomorphicLayoutEffect(() => { + const { + subscription + } = contextValue; + subscription.onStateChange = subscription.notifyNestedSubs; + subscription.trySubscribe(); + if (previousState !== store2.getState()) { + subscription.notifyNestedSubs(); + } + return () => { + subscription.tryUnsubscribe(); + subscription.onStateChange = void 0; + }; + }, [contextValue, previousState]); + const Context = context || ReactReduxContext; + return /* @__PURE__ */ React4.createElement(Context.Provider, { + value: contextValue + }, children); +} +var Provider_default = Provider; + +// node_modules/react-redux/es/index.js +initializeUseSelector(import_with_selector.useSyncExternalStoreWithSelector); +initializeConnect(import_shim.useSyncExternalStore); +setBatch(import_react_dom.unstable_batchedUpdates); + +// src/react/loom-app/loom-state-provider/index.tsx +var import_react5 = __toESM(require_react()); + +// src/shared/logger.ts +var import_react3 = __toESM(require_react()); + +// src/redux/hooks.ts +var useAppSelector = useSelector; + +// src/shared/logger.ts +var log = (shouldDebug) => (message, args = {}) => { + if (shouldDebug) { + console.log(message); + if (Object.keys(args).length !== 0) + console.log(args); + } +}; +var useLogger = () => { + const { shouldDebug } = useAppSelector((state) => state.global.settings); + const logger = import_react3.default.useCallback( + (message, args) => log(shouldDebug)(message, args), + [shouldDebug] + ); + return logger; +}; + +// src/shared/error/cell-not-found-error.ts +var CellNotFoundError = class extends Error { + constructor(options) { + const { id: id2, rowId, columnId } = options || {}; + if (rowId || columnId) + super(`Cell ${rowId}:${columnId} was not found`); + super(`Cell ${id2} was not found`); + this.name = "CellNotFoundError"; + } +}; + +// src/shared/error/row-not-found-error.ts +var RowNotFoundError = class extends Error { + constructor(id2) { + super(`Row ${id2} was not found`); + this.name = "RowNotFoundError"; + } +}; + +// src/shared/error/tag-not-found-error.ts +var TagNotFoundError = class extends Error { + constructor(id2) { + super(`Tag ${id2} was not found`); + this.name = "TagNotFoundError"; + } +}; + +// src/shared/loom-state/commands/command-redo-error.ts +var CommandRedoError = class extends Error { + constructor() { + super(`undo() must be called before redo() is available`); + this.name = "CommandRedoError"; + } +}; + +// src/shared/loom-state/commands/command-undo-error.ts +var CommandUndoError = class extends Error { + constructor() { + super(`execute() must be called before undo() is available`); + this.name = "CommandUndoError"; + } +}; + +// src/shared/loom-state/commands/loom-state-command.ts +var LoomStateCommand = class { + constructor(shouldSortRows = false) { + this.hasExecuteBeenCalled = false; + this.hasUndoBeenCalled = false; + this.shouldSortRows = shouldSortRows; + } + onExecute() { + this.hasExecuteBeenCalled = true; + } + onUndo() { + if (!this.hasExecuteBeenCalled) + throw new CommandUndoError(); + this.hasUndoBeenCalled = true; + } + onRedo() { + if (!this.hasUndoBeenCalled) + throw new CommandRedoError(); + this.hasUndoBeenCalled = false; + } +}; +var loom_state_command_default = LoomStateCommand; + +// src/shared/match/regex.ts +var NUMBER_REGEX = new RegExp(/^-?\d+\.?\d*$/); +var NUMBER_INPUT_REGEX = new RegExp(/(^$)|(^-$)|(^-?\d+\.?\d*$)/); +var DATE_REGEX = new RegExp(/^\d{4}\/\d{2}\/\d{2}$/); +var CHECKBOX_REGEX = new RegExp(/^\[[x ]{0,1}\]$/); +var CHECKBOX_CHECKED_REGEX = new RegExp(/^\[[x]\]$/); +var IMAGE_EXTENSION_REGEX = new RegExp( + /\.(jpe?g|png|gif|bmp|tiff?|ico|webp)$/i +); +var YOUTUBE_LINK_REGEX = new RegExp( + /^https?:\/\/(?:www\.)?(?:youtube\.com\/\S+|youtu\.be\/\S+)$/ +); +var TWITTER_LINK_REGEX = new RegExp( + /^https?:\/\/(?:www\.)?twitter\.com\/\S+|\bt\.co\/\S+$/ +); + +// src/shared/match/index.ts +var isNumber = (value) => { + return value.match(NUMBER_REGEX) !== null; +}; +var isNumberInput = (value) => { + return value.match(NUMBER_INPUT_REGEX) !== null; +}; +var isCheckbox = (value) => { + return value.match(CHECKBOX_REGEX) !== null; +}; +var isCheckboxChecked = (value) => { + return value.match(CHECKBOX_CHECKED_REGEX) !== null; +}; +var isImage = (value) => { + return value.match(IMAGE_EXTENSION_REGEX) !== null; +}; +var isYouTubeLink = (value) => { + return value.match(YOUTUBE_LINK_REGEX) !== null; +}; +var isTwitterLink = (value) => { + return value.match(TWITTER_LINK_REGEX) !== null; +}; +var isNumberCalcuation = (value) => { + return Object.values(NumberCalculation).includes( + value + ); +}; + +// src/shared/loom-state/commands/row-sort-command.ts +var RowSortCommand = class extends loom_state_command_default { + constructor() { + super(...arguments); + this.previousRowSort = []; + this.multiSort = (sortedColumns, rows) => { + const rowsCopy = [...rows]; + rowsCopy.sort((a2, b2) => { + for (const column of sortedColumns) { + const cellA = a2.cells.find( + (cell) => cell.columnId === column.id + ); + if (!cellA) + throw new CellNotFoundError({ + columnId: column.id, + rowId: a2.id + }); + const cellB = b2.cells.find( + (cell) => cell.columnId === column.id + ); + if (!cellB) + throw new CellNotFoundError({ + columnId: column.id, + rowId: b2.id + }); + const comparison = this.sortByColumn( + a2, + b2, + cellA, + cellB, + column + ); + if (comparison !== 0) { + return comparison; + } + } + return 0; + }); + return rowsCopy; + }; + } + execute(prevState) { + super.onExecute(); + const { columns, rows } = prevState.model; + const sortedColumns = columns.filter( + (columns2) => columns2.sortDir !== "default" /* NONE */ + ); + this.previousRowSort = rows.map((row) => ({ + id: row.id, + index: row.index + })); + let newRows = [...rows]; + if (sortedColumns.length !== 0) { + newRows = this.multiSort(sortedColumns, rows); + } else { + newRows = this.sortByIndex(rows); + } + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + rows: newRows + }) + }); + } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } + undo(prevState) { + super.onUndo(); + const { rows } = prevState.model; + const newRows = this.previousRowSort.map((prev) => { + const row = rows.find((row2) => row2.id === prev.id); + if (!row) + throw new RowNotFoundError(prev.id); + return __spreadProps(__spreadValues({}, row), { + index: prev.index + }); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + rows: newRows + }) + }); + } + sortByIndex(rows) { + const rowsCopy = [...rows]; + rowsCopy.sort((a2, b2) => { + return a2.index - b2.index; + }); + return rowsCopy; + } + sortByColumn(rowA, rowB, cellA, cellB, column) { + const { type, sortDir, tags } = column; + if (type === "number" /* NUMBER */) { + return this.sortByNumber(cellA, cellB, sortDir); + } else if (type === "tag" /* TAG */ || type === "multi-tag" /* MULTI_TAG */) { + return this.sortByTag(cellA, cellB, tags, sortDir); + } else if (type === "date" /* DATE */) { + return this.sortByDate(cellA, cellB, sortDir); + } else if (type === "last-edited-time" /* LAST_EDITED_TIME */) { + return this.sortByLastEditedTime(rowA, rowA, sortDir); + } else if (type === "creation-time" /* CREATION_TIME */) { + return this.sortByCreationTime(rowB, rowB, sortDir); + } else if (type === "checkbox" /* CHECKBOX */) { + return this.sortByCheckbox(cellA, cellB, sortDir); + } else { + return this.sortByText(cellA, cellB, sortDir); + } + } + sortByText(a2, b2, sortDir) { + const { content: contentA } = a2; + const { content: contentB } = b2; + if (contentA === "" && contentB !== "") + return 1; + if (contentA !== "" && contentB === "") + return -1; + if (contentA === "" && contentB === "") + return 0; + if (sortDir === "asc" /* ASC */) { + return contentA.localeCompare(contentB); + } else if (sortDir === "desc" /* DESC */) { + return contentB.localeCompare(contentA); + } else { + return 0; + } + } + sortByNumber(a2, b2, sortDir) { + const { content: contentA } = a2; + const { content: contentB } = b2; + if (contentA === "" && contentB !== "") + return 1; + if (contentA !== "" && contentB === "") + return -1; + if (contentA === "" && contentB === "") + return 0; + if (sortDir === "asc" /* ASC */) { + return parseFloat(contentA) - parseFloat(contentB); + } else if (sortDir === "desc" /* DESC */) { + return parseFloat(contentB) - parseFloat(contentA); + } else { + return 0; + } + } + sortByTag(cellA, cellB, columnTags, sortDir) { + if (cellA.tagIds.length === 0 && cellB.tagIds.length > 0) + return 1; + if (cellA.tagIds.length > 0 && cellB.tagIds.length === 0) + return -1; + if (cellA.tagIds.length === 0 && cellB.tagIds.length === 0) + return 0; + let tagLength = cellA.tagIds.length; + if (cellB.tagIds.length > cellA.tagIds.length) { + tagLength = cellB.tagIds.length; + } + for (let i2 = 0; i2 < tagLength; i2++) { + const tagIdA = cellA.tagIds[i2]; + if (tagIdA === void 0) + return -1; + const tagA = columnTags.find((t2) => t2.id === tagIdA); + if (!tagA) + throw new TagNotFoundError(tagIdA); + const tagIdB = cellB.tagIds[i2]; + if (tagIdB === void 0) + return 1; + const tagB = columnTags.find((t2) => t2.id === tagIdB); + if (!tagB) + throw new TagNotFoundError(tagIdA); + if (sortDir === "asc" /* ASC */) { + const result = tagA.content.localeCompare(tagB.content); + if (result !== 0) + return result; + } else if (sortDir === "desc" /* DESC */) { + const result = tagB.content.localeCompare(tagA.content); + if (result !== 0) + return result; + } + } + return 0; + } + sortByCheckbox(a2, b2, sortDir) { + const { content: contentA } = a2; + const { content: contentB } = b2; + const isCheckedA = isCheckboxChecked(contentA); + const isCheckedB = isCheckboxChecked(contentB); + if (sortDir === "asc" /* ASC */) { + if (isCheckedA && !isCheckedB) + return 1; + if (!isCheckedA && isCheckedB) + return -1; + return 0; + } else if (sortDir === "desc" /* DESC */) { + if (!isCheckedA && isCheckedB) + return 1; + if (isCheckedA && !isCheckedB) + return -1; + return 0; + } else { + return 0; + } + } + sortByDate(a2, b2, sortDir) { + const dateTimeA = a2.dateTime || 0; + const dateTimeB = b2.dateTime || 0; + if (sortDir === "asc" /* ASC */) { + return dateTimeA - dateTimeB; + } else if (sortDir === "desc" /* DESC */) { + return dateTimeB - dateTimeA; + } else { + return 0; + } + } + sortByCreationTime(a2, b2, sortDir) { + if (sortDir === "asc" /* ASC */) { + return a2.creationTime - b2.creationTime; + } else if (sortDir === "desc" /* DESC */) { + return b2.creationTime - a2.creationTime; + } else { + return 0; + } + } + sortByLastEditedTime(a2, b2, sortDir) { + if (sortDir === "asc" /* ASC */) { + return a2.lastEditedTime - b2.lastEditedTime; + } else if (sortDir === "desc" /* DESC */) { + return b2.lastEditedTime - a2.lastEditedTime; + } else { + return 0; + } + } +}; + +// src/react/loom-app/app-mount-provider/index.tsx +var import_react4 = __toESM(require_react()); +var import_jsx_runtime = __toESM(require_jsx_runtime()); +var MountContext = import_react4.default.createContext(null); +var useAppMount = () => { + const value = import_react4.default.useContext(MountContext); if (value === null) { throw new Error( - "useMountState() called without a in the tree." + "useAppMount() called without a in the tree." ); } return value; }; -function MountProvider({ - appId, - leaf, - filePath, +function AppMountProvider({ + app, + reactAppId, + mountLeaf, + loomFile, isMarkdownView, children }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MountContext.Provider, { - value: { appId, leaf, filePath, isMarkdownView }, - children - }); + return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( + MountContext.Provider, + { + value: { app, reactAppId, mountLeaf, loomFile, isMarkdownView }, + children + } + ); } -// src/react/table-app/table/index.tsx -var import_react15 = __toESM(require_react()); +// src/react/loom-app/loom-state-provider/index.tsx +var import_jsx_runtime2 = __toESM(require_jsx_runtime()); +var LoomStateContext = import_react5.default.createContext(null); +var useLoomState = () => { + const value = import_react5.default.useContext(LoomStateContext); + if (value === null) { + throw new Error( + "useLoomState() called without a in the tree." + ); + } + return value; +}; +function LoomStateProvider({ + initialState: initialState2, + onSaveState, + children +}) { + const [loomState, setLoomState] = import_react5.default.useState(initialState2); + const [searchText, setSearchText] = import_react5.default.useState(""); + const [isSearchBarVisible, setSearchBarVisible] = import_react5.default.useState(false); + const [resizingColumnId, setResizingColumnId] = import_react5.default.useState(null); + const [history, setHistory] = import_react5.default.useState([ + null + ]); + const [position, setPosition] = import_react5.default.useState(0); + const refreshTime = import_react5.default.useRef(0); + const logger = useLogger(); + const { reactAppId, loomFile, app } = useAppMount(); + const isMountedRef = import_react5.default.useRef(false); + import_react5.default.useEffect(() => { + if (!isMountedRef.current) { + isMountedRef.current = true; + return; + } + if (refreshTime.current !== 0) { + refreshTime.current = 0; + return; + } + onSaveState(reactAppId, loomState); + }, [reactAppId, loomState, onSaveState]); + import_react5.default.useEffect(() => { + function handleRefreshEvent(filePath, sourceAppId, state) { + if (reactAppId !== sourceAppId && filePath === loomFile.path) { + refreshTime.current = Date.now(); + setLoomState(state); + } + } + app.workspace.on( + EVENT_APP_REFRESH, + handleRefreshEvent + ); + return () => app.workspace.off(EVENT_APP_REFRESH, handleRefreshEvent); + }, [reactAppId, loomFile, app]); + function handleToggleSearchBar() { + setSearchBarVisible((prevState) => !prevState); + } + const undo = import_react5.default.useCallback(() => { + if (position > 0) { + logger("handleUndoEvent"); + const currentPosition = position - 1; + setPosition(currentPosition); + const command = history[position]; + if (command !== null) { + logger(command.constructor.name + ".undo"); + let newState = command.undo(loomState); + if (command.shouldSortRows) { + newState = new RowSortCommand().execute(newState); + } + setLoomState(newState); + } + } + }, [position, history, loomState, logger]); + const redo = import_react5.default.useCallback(() => { + if (position < history.length - 1) { + logger("handleRedoEvent"); + const currentPosition = position + 1; + setPosition(currentPosition); + const command = history[currentPosition]; + if (command !== null) { + logger(command.constructor.name + ".redo"); + let newState = command.redo(loomState); + if (command.shouldSortRows) { + newState = new RowSortCommand().execute(newState); + } + setLoomState(newState); + } + } + }, [position, history, loomState, logger]); + const doCommand = import_react5.default.useCallback( + (command) => { + setHistory((prevState) => { + if (position < history.length - 1) { + const newState2 = prevState.slice(0, position + 1); + return [...newState2, command]; + } else { + return [...prevState, command]; + } + }); + setPosition((prevState) => prevState + 1); + let newState = command.execute(loomState); + if (command.shouldSortRows) { + newState = new RowSortCommand().execute(newState); + } + setLoomState(newState); + }, + [position, history, loomState] + ); + return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( + LoomStateContext.Provider, + { + value: { + loomState, + setLoomState, + doCommand, + onRedo: redo, + onUndo: undo, + isSearchBarVisible, + searchText, + resizingColumnId, + setResizingColumnId, + toggleSearchBar: handleToggleSearchBar, + setSearchText + }, + children + } + ); +} + +// src/react/loom-app/app/index.tsx +var import_react55 = __toESM(require_react()); + +// src/react/loom-app/table/index.tsx +var import_react13 = __toESM(require_react()); // node_modules/react-virtuoso/dist/index.mjs -var import_react2 = __toESM(require_react(), 1); -var import_react_dom = __toESM(require_react_dom(), 1); +var import_react6 = __toESM(require_react(), 1); +var import_react_dom2 = __toESM(require_react_dom(), 1); var PUBLISH = 0; var SUBSCRIBE = 1; var RESET = 2; @@ -41383,7 +43179,7 @@ function skip(times) { }; } function throttleTime(interval) { - let currentValue; + let currentValue = null; let timeout; return (done) => (value) => { currentValue = value; @@ -41518,13 +43314,13 @@ function omit(keys, obj) { } return result; } -var useIsomorphicLayoutEffect$2 = typeof document !== "undefined" ? import_react2.default.useLayoutEffect : import_react2.default.useEffect; -function systemToComponent(systemSpec, map2, Root4) { +var useIsomorphicLayoutEffect$2 = typeof document !== "undefined" ? import_react6.default.useLayoutEffect : import_react6.default.useEffect; +function systemToComponent(systemSpec, map2, Root6) { const requiredPropNames = Object.keys(map2.required || {}); const optionalPropNames = Object.keys(map2.optional || {}); const methodNames = Object.keys(map2.methods || {}); const eventNames = Object.keys(map2.events || {}); - const Context = import_react2.default.createContext({}); + const Context = import_react6.default.createContext({}); function applyPropsToSystem(system2, props) { if (system2["propsReady"]) { publish(system2["propsReady"], false); @@ -41558,12 +43354,12 @@ function systemToComponent(systemSpec, map2, Root4) { return handlers; }, {}); } - const Component = import_react2.default.forwardRef((propsWithChildren, ref) => { - const _a = propsWithChildren, { children } = _a, props = __objRest(_a, ["children"]); - const [system2] = import_react2.default.useState(() => { + const Component2 = import_react6.default.forwardRef((propsWithChildren, ref) => { + const _a2 = propsWithChildren, { children } = _a2, props = __objRest(_a2, ["children"]); + const [system2] = import_react6.default.useState(() => { return tap(init(systemSpec), (system22) => applyPropsToSystem(system22, props)); }); - const [handlers] = import_react2.default.useState(curry1to0(buildEventHandlers, system2)); + const [handlers] = import_react6.default.useState(curry1to0(buildEventHandlers, system2)); useIsomorphicLayoutEffect$2(() => { for (const eventName of eventNames) { if (eventName in props) { @@ -41577,24 +43373,24 @@ function systemToComponent(systemSpec, map2, Root4) { useIsomorphicLayoutEffect$2(() => { applyPropsToSystem(system2, props); }); - import_react2.default.useImperativeHandle(ref, always(buildMethods(system2))); - return import_react2.default.createElement( + import_react6.default.useImperativeHandle(ref, always(buildMethods(system2))); + return import_react6.default.createElement( Context.Provider, { value: system2 }, - Root4 ? import_react2.default.createElement( - Root4, + Root6 ? import_react6.default.createElement( + Root6, omit([...requiredPropNames, ...optionalPropNames, ...eventNames], props), children ) : children ); }); const usePublisher2 = (key) => { - return import_react2.default.useCallback(curry2to1(publish, import_react2.default.useContext(Context)[key]), [key]); + return import_react6.default.useCallback(curry2to1(publish, import_react6.default.useContext(Context)[key]), [key]); }; const useEmitterValue2 = (key) => { - const system2 = import_react2.default.useContext(Context); + const system2 = import_react6.default.useContext(Context); const source = system2[key]; - const [value, setValue] = import_react2.default.useState(curry1to0(getValue, source)); + const [value, setValue] = import_react6.default.useState(curry1to0(getValue, source)); useIsomorphicLayoutEffect$2( () => subscribe(source, (next) => { if (next !== value) { @@ -41606,19 +43402,19 @@ function systemToComponent(systemSpec, map2, Root4) { return value; }; const useEmitter2 = (key, callback) => { - const context = import_react2.default.useContext(Context); + const context = import_react6.default.useContext(Context); const source = context[key]; useIsomorphicLayoutEffect$2(() => subscribe(source, callback), [callback, source]); }; return { - Component, + Component: Component2, usePublisher: usePublisher2, useEmitterValue: useEmitterValue2, useEmitter: useEmitter2 }; } -var useIsomorphicLayoutEffect = typeof document !== "undefined" ? import_react2.default.useLayoutEffect : import_react2.default.useEffect; -var useIsomorphicLayoutEffect$1 = useIsomorphicLayoutEffect; +var useIsomorphicLayoutEffect2 = typeof document !== "undefined" ? import_react6.default.useLayoutEffect : import_react6.default.useEffect; +var useIsomorphicLayoutEffect$1 = useIsomorphicLayoutEffect2; var LogLevel = /* @__PURE__ */ ((LogLevel2) => { LogLevel2[LogLevel2["DEBUG"] = 0] = "DEBUG"; LogLevel2[LogLevel2["INFO"] = 1] = "INFO"; @@ -41635,10 +43431,12 @@ var CONSOLE_METHOD_MAP = { var getGlobalThis = () => typeof globalThis === "undefined" ? window : globalThis; var loggerSystem = system( () => { - const logLevel = statefulStream(3); + const logLevel = statefulStream( + 3 + ); const log2 = statefulStream((label, message, level = 1) => { - var _a; - const currentLevel = (_a = getGlobalThis()["VIRTUOSO_LOG_LEVEL"]) != null ? _a : getValue(logLevel); + var _a2; + const currentLevel = (_a2 = getGlobalThis()["VIRTUOSO_LOG_LEVEL"]) != null ? _a2 : getValue(logLevel); if (level >= currentLevel) { console[CONSOLE_METHOD_MAP[level]]( "%creact-virtuoso: %c%s %o", @@ -41658,11 +43456,11 @@ var loggerSystem = system( { singleton: true } ); function useSizeWithElRef(callback, enabled = true) { - const ref = import_react2.default.useRef(null); + const ref = import_react6.default.useRef(null); let callbackRef = (_el) => { }; if (typeof ResizeObserver !== "undefined") { - const observer = import_react2.default.useMemo(() => { + const observer = import_react6.default.useMemo(() => { return new ResizeObserver((entries) => { const element = entries[0].target; if (element.offsetParent !== null) { @@ -41688,7 +43486,7 @@ function useSize(callback, enabled = true) { return useSizeWithElRef(callback, enabled).callbackRef; } function useChangedListContentsSizes(callback, itemSize, enabled, scrollContainerStateCallback, log2, gap, customScrollParent) { - const memoedCallback = import_react2.default.useCallback( + const memoedCallback = import_react6.default.useCallback( (el) => { const ranges = getChangedChildSizes(el.children, itemSize, "offsetHeight", log2); let scrollableElement = el.parentElement; @@ -41758,10 +43556,10 @@ function approximatelyEqual(num1, num2) { return Math.abs(num1 - num2) < 1.01; } function useScrollTop(scrollContainerStateCallback, smoothScrollTargetReached, scrollerElement, scrollerRefCallback = noop, customScrollParent) { - const scrollerRef = import_react2.default.useRef(null); - const scrollTopTarget = import_react2.default.useRef(null); - const timeoutRef = import_react2.default.useRef(null); - const handler = import_react2.default.useCallback( + const scrollerRef = import_react6.default.useRef(null); + const scrollTopTarget = import_react6.default.useRef(null); + const timeoutRef = import_react6.default.useRef(null); + const handler = import_react6.default.useCallback( (ev) => { const el = ev.target; const windowScroll = el === window || el === document; @@ -41778,7 +43576,7 @@ function useScrollTop(scrollContainerStateCallback, smoothScrollTargetReached, s if (ev.suppressFlushSync) { call2(); } else { - import_react_dom.default.flushSync(call2); + import_react_dom2.default.flushSync(call2); } if (scrollTopTarget.current !== null) { if (scrollTop === scrollTopTarget.current || scrollTop <= 0 || scrollTop === scrollHeight - viewportHeight) { @@ -41793,7 +43591,7 @@ function useScrollTop(scrollContainerStateCallback, smoothScrollTargetReached, s }, [scrollContainerStateCallback, smoothScrollTargetReached] ); - import_react2.default.useEffect(() => { + import_react6.default.useEffect(() => { const localRef = customScrollParent ? customScrollParent : scrollerRef.current; scrollerRefCallback(customScrollParent ? customScrollParent : scrollerRef.current); handler({ target: localRef, suppressFlushSync: true }); @@ -41946,10 +43744,10 @@ function findMaxKeyValue(node, value, field = "k") { if (empty(node)) { return [-Infinity, void 0]; } - if (node[field] === value) { + if (Number(node[field]) === value) { return [node.k, node.v]; } - if (node[field] < value) { + if (Number(node[field]) < value) { const r2 = findMaxKeyValue(node.r, value, field); if (r2[0] === -Infinity) { return [node.k, node.v]; @@ -42377,8 +44175,8 @@ var sizeSystem = system( pipe( totalCount, withLatestFrom(sizes), - filter(([totalCount2, { lastIndex, groupIndices: groupIndices2 }]) => { - return totalCount2 < lastIndex && groupIndices2.length === 0; + filter(([totalCount2, { lastIndex }]) => { + return totalCount2 < lastIndex; }), map(([totalCount2, { lastIndex, lastSize }]) => { return [ @@ -42415,7 +44213,7 @@ var sizeSystem = system( sizeRanges, withLatestFrom(sizes), scan( - ({ sizes: oldSizes }, [_3, newSizes]) => { + ({ sizes: oldSizes }, [_5, newSizes]) => { return { changed: newSizes !== oldSizes, sizes: newSizes @@ -42445,8 +44243,9 @@ var sizeSystem = system( } else if (offset < 0) { const prevGroupIndicesValue = getValue(prevGroupIndices); if (prevGroupIndicesValue.length > 0) { - publish(shiftWith, offset - affectedGroupCount(-offset, prevGroupIndicesValue)); + offset -= affectedGroupCount(-offset, prevGroupIndicesValue); } + publish(shiftWith, offset); } } ); @@ -42554,6 +44353,9 @@ var sizeSystem = system( map(([shiftWith2, sizes2, gap2]) => { const groupedMode = sizes2.groupIndices.length > 0; if (groupedMode) { + if (empty(sizes2.sizeTree)) { + return sizes2; + } let newSizeTree = newTree(); const prevGroupIndicesValue = getValue(prevGroupIndices); let removedItemsCount = 0; @@ -42914,8 +44716,8 @@ var stateFlagsSystem = system(([{ scrollContainerState, scrollTop, viewportHeigh scrollTop, throttleTime(100), withLatestFrom(isScrolling), - filter(([_3, isScrolling2]) => !!isScrolling2), - scan(([_3, prev], [next]) => [prev, next], [0, 0]), + filter(([_5, isScrolling2]) => !!isScrolling2), + scan(([_5, prev], [next]) => [prev, next], [0, 0]), map(([prev, next]) => next - prev) ), scrollVelocity @@ -42952,11 +44754,6 @@ var propsReadySystem = system( tup(loggerSystem), { singleton: true } ); -function getInitialTopMostItemIndexNumber(location, totalCount) { - const lastIndex = totalCount - 1; - const index = typeof location === "number" ? location : location.index === "LAST" ? lastIndex : location.index; - return index; -} function skipFrames(frameCount, callback) { if (frameCount == 0) { callback(); @@ -42964,6 +44761,11 @@ function skipFrames(frameCount, callback) { requestAnimationFrame(() => skipFrames(frameCount - 1, callback)); } } +function getInitialTopMostItemIndexNumber(location, totalCount) { + const lastIndex = totalCount - 1; + const index = typeof location === "number" ? location : location.index === "LAST" ? lastIndex : location.index; + return index; +} var initialTopMostItemIndexSystem = system( ([{ sizes, listRefresh, defaultItemSize }, { scrollTop }, { scrollToIndex }, { didMount }]) => { const scrolledToInitialItem = statefulStream(true); @@ -42973,7 +44775,7 @@ var initialTopMostItemIndexSystem = system( pipe( didMount, withLatestFrom(initialTopMostItemIndex), - filter(([_3, location]) => !!location), + filter(([_5, location]) => !!location), mapTo(false) ), scrolledToInitialItem @@ -42989,7 +44791,7 @@ var initialTopMostItemIndexSystem = system( ), ([, initialTopMostItemIndex2]) => { publish(scrollScheduled, true); - skipFrames(2, () => { + skipFrames(3, () => { handleNext(scrollTop, () => publish(scrolledToInitialItem, true)); publish(scrollToIndex, initialTopMostItemIndex2); }); @@ -43134,7 +44936,7 @@ var groupedListSystem = system(([{ totalCount, groupIndices, sizes }, { scrollTo connect( pipe( combineLatest(scrollTop, sizes, headerHeight), - filter(([_3, sizes2]) => hasGroups(sizes2)), + filter(([_5, sizes2]) => hasGroups(sizes2)), map(([scrollTop2, state, headerHeight2]) => findMaxKeyValue(state.groupOffsetTree, Math.max(scrollTop2 - headerHeight2, 0), "v")[0]), distinctUntilChanged(), map((index) => [index]) @@ -43531,15 +45333,15 @@ var listStateSystem = system( { singleton: true } ); var initialItemCountSystem = system( - ([{ sizes, firstItemIndex, data, gap }, { listState }, { didMount }]) => { + ([{ sizes, firstItemIndex, data, gap }, { initialTopMostItemIndex }, { listState }, { didMount }]) => { const initialItemCount = statefulStream(0); connect( pipe( didMount, withLatestFrom(initialItemCount), filter(([, count]) => count !== 0), - withLatestFrom(sizes, firstItemIndex, gap, data), - map(([[, count], sizes2, firstItemIndex2, gap2, data2 = []]) => { + withLatestFrom(initialTopMostItemIndex, sizes, firstItemIndex, gap, data), + map(([[, count], initialTopMostItemIndexValue, sizes2, firstItemIndex2, gap2, data2 = []]) => { let includedGroupsCount = 0; if (sizes2.groupIndices.length > 0) { for (const index of sizes2.groupIndices) { @@ -43550,7 +45352,13 @@ var initialItemCountSystem = system( } } const adjustedCount = count + includedGroupsCount; - const items = Array.from({ length: adjustedCount }).map((_3, index) => ({ index, size: 0, offset: 0, data: data2[index] })); + const initialTopMostItemIndexNumber = getInitialTopMostItemIndexNumber(initialTopMostItemIndexValue, adjustedCount); + const items = Array.from({ length: adjustedCount }).map((_5, index) => ({ + index: index + initialTopMostItemIndexNumber, + size: 0, + offset: 0, + data: data2[index + initialTopMostItemIndexNumber] + })); return buildListState(items, [], adjustedCount, gap2, sizes2, firstItemIndex2); }) ), @@ -43558,7 +45366,7 @@ var initialItemCountSystem = system( ); return { initialItemCount }; }, - tup(sizeSystem, listStateSystem, propsReadySystem), + tup(sizeSystem, initialTopMostItemIndexSystem, listStateSystem, propsReadySystem), { singleton: true } ); var scrollSeekSystem = system( @@ -43570,7 +45378,7 @@ var scrollSeekSystem = system( pipe( scrollVelocity, withLatestFrom(scrollSeekConfiguration, isSeeking, rangeChanged), - filter(([_3, config]) => !!config), + filter(([_5, config]) => !!config), map(([speed, config, isSeeking2, range]) => { const { exit, enter } = config; if (isSeeking2) { @@ -43603,7 +45411,7 @@ var topItemCountSystem = system(([{ topItemsIndexes }]) => { pipe( topItemCount, filter((length) => length > 0), - map((length) => Array.from({ length }).map((_3, index) => index)) + map((length) => Array.from({ length }).map((_5, index) => index)) ), topItemsIndexes ); @@ -43704,7 +45512,7 @@ var upwardScrollFixSystem = system( pipe( combineLatest(statefulStreamFromEmitter(isScrolling, false), deviation, recalcInProgress), filter(([is, deviation2, recalc]) => !is && !recalc && deviation2 !== 0), - map(([_3, deviation2]) => deviation2), + map(([_5, deviation2]) => deviation2), throttleTime(1) ), scrollByWith @@ -43855,14 +45663,14 @@ var windowScrollerSystem = system(([{ scrollTo, scrollContainerState }]) => { windowScrollTo }; }, tup(domIOSystem)); -var defaultCalculateViewLocation = (_a) => { +var defaultCalculateViewLocation = (_a2) => { var { itemTop: itemTop2, itemBottom, viewportTop, viewportBottom, locationParams: _b - } = _a, _c = _b, { behavior, align } = _c, rest = __objRest(_c, ["behavior", "align"]); + } = _a2, _c = _b, { behavior, align } = _c, rest = __objRest(_c, ["behavior", "align"]); if (itemTop2 < viewportTop) { return __spreadProps(__spreadValues({}, rest), { behavior, align: align != null ? align : "start" }); } @@ -43884,7 +45692,7 @@ var scrollIntoViewSystem = system( withLatestFrom(sizes, viewportHeight, totalCount, headerHeight, fixedHeaderHeight, fixedFooterHeight, scrollTop), withLatestFrom(gap), map(([[viewLocation, sizes2, viewportHeight2, totalCount2, headerHeight2, fixedHeaderHeight2, fixedFooterHeight2, scrollTop2], gap2]) => { - const _a = viewLocation, { done, behavior, align, calculateViewLocation = defaultCalculateViewLocation } = _a, rest = __objRest(_a, ["done", "behavior", "align", "calculateViewLocation"]); + const _a2 = viewLocation, { done, behavior, align, calculateViewLocation = defaultCalculateViewLocation } = _a2, rest = __objRest(_a2, ["done", "behavior", "align", "calculateViewLocation"]); const actualIndex = originalIndexFromLocation(viewLocation, sizes2, totalCount2 - 1); const itemTop2 = offsetOf(actualIndex, sizes2.offsetTree, gap2) + headerHeight2 + fixedHeaderHeight2; const itemBottom = itemTop2 + findMaxKeyValue(sizes2.sizeTree, actualIndex)[1]; @@ -43922,31 +45730,50 @@ var scrollIntoViewSystem = system( tup(sizeSystem, domIOSystem, scrollToIndexSystem, listStateSystem, loggerSystem), { singleton: true } ); -var stateLoadSystem = system(([{ sizes, sizeRanges }, { scrollTop }, { initialTopMostItemIndex }, { didMount }]) => { - const getState = stream(); - const restoreStateFrom = statefulStream(void 0); - subscribe(pipe(getState, withLatestFrom(sizes, scrollTop)), ([callback, sizes2, scrollTop2]) => { - const ranges = sizeTreeToRanges(sizes2.sizeTree); - callback({ ranges, scrollTop: scrollTop2 }); - }); - connect(pipe(restoreStateFrom, filter(isDefined), map(locationFromSnapshot)), initialTopMostItemIndex); - connect( - pipe( - didMount, - withLatestFrom(restoreStateFrom), - filter(([, state]) => state !== void 0), - distinctUntilChanged(), - map(([, snapshot]) => { - return snapshot.ranges; - }) - ), - sizeRanges - ); - return { - getState, - restoreStateFrom - }; -}, tup(sizeSystem, domIOSystem, initialTopMostItemIndexSystem, propsReadySystem)); +var stateLoadSystem = system( + ([ + { sizes, sizeRanges }, + { scrollTop }, + { initialTopMostItemIndex }, + { didMount }, + { useWindowScroll, windowScrollContainerState, windowViewportRect } + ]) => { + const getState = stream(); + const restoreStateFrom = statefulStream(void 0); + const statefulWindowScrollContainerState = statefulStream(null); + const statefulWindowViewportRect = statefulStream(null); + connect(windowScrollContainerState, statefulWindowScrollContainerState); + connect(windowViewportRect, statefulWindowViewportRect); + subscribe( + pipe(getState, withLatestFrom(sizes, scrollTop, useWindowScroll, statefulWindowScrollContainerState, statefulWindowViewportRect)), + ([callback, sizes2, scrollTop2, useWindowScroll2, windowScrollContainerState2, windowViewportRect2]) => { + const ranges = sizeTreeToRanges(sizes2.sizeTree); + if (useWindowScroll2 && windowScrollContainerState2 !== null && windowViewportRect2 !== null) { + scrollTop2 = windowScrollContainerState2.scrollTop - windowViewportRect2.offsetTop; + } + callback({ ranges, scrollTop: scrollTop2 }); + } + ); + connect(pipe(restoreStateFrom, filter(isDefined), map(locationFromSnapshot)), initialTopMostItemIndex); + connect( + pipe( + didMount, + withLatestFrom(restoreStateFrom), + filter(([, state]) => state !== void 0), + distinctUntilChanged(), + map(([, snapshot]) => { + return snapshot.ranges; + }) + ), + sizeRanges + ); + return { + getState, + restoreStateFrom + }; + }, + tup(sizeSystem, domIOSystem, initialTopMostItemIndexSystem, propsReadySystem, windowScrollerSystem) +); function locationFromSnapshot(snapshot) { return { offset: snapshot.scrollTop, index: 0, align: "start" }; } @@ -43979,7 +45806,7 @@ var featureGroup1System = system( ) ); var listSystem = system( - (_a) => { + (_a2) => { var [ { totalCount, @@ -44001,9 +45828,9 @@ var listSystem = system( followOutput, _b, ..._c - ] = _a, _d = _b, { listState, topItemsIndexes } = _d, flags = __objRest(_d, ["listState", "topItemsIndexes"]), [ + ] = _a2, _d = _b, { listState, topItemsIndexes } = _d, flags = __objRest(_d, ["listState", "topItemsIndexes"]), [ { scrollToIndex }, - _3, + _5, { topItemCount }, { groupCounts }, featureGroup1 @@ -44065,8 +45892,8 @@ var positionStickyCssValue = simpleMemoize(() => { return node.style.position === WEBKIT_STICKY ? WEBKIT_STICKY : STICKY; }); function useWindowViewportRectRef(callback, customScrollParent) { - const viewportInfo = import_react2.default.useRef(null); - const calculateInfo = import_react2.default.useCallback( + const viewportInfo = import_react6.default.useRef(null); + const calculateInfo = import_react6.default.useCallback( (element) => { if (element === null || !element.offsetParent) { return; @@ -44093,10 +45920,10 @@ function useWindowViewportRectRef(callback, customScrollParent) { [callback, customScrollParent] ); const { callbackRef, ref } = useSizeWithElRef(calculateInfo); - const scrollAndResizeEventHandler = import_react2.default.useCallback(() => { + const scrollAndResizeEventHandler = import_react6.default.useCallback(() => { calculateInfo(ref.current); }, [calculateInfo, ref]); - import_react2.default.useEffect(() => { + import_react6.default.useEffect(() => { if (customScrollParent) { customScrollParent.addEventListener("scroll", scrollAndResizeEventHandler); const observer = new ResizeObserver(scrollAndResizeEventHandler); @@ -44116,8 +45943,8 @@ function useWindowViewportRectRef(callback, customScrollParent) { }, [scrollAndResizeEventHandler, customScrollParent]); return callbackRef; } -var VirtuosoMockContext = import_react2.default.createContext(void 0); -var VirtuosoGridMockContext = import_react2.default.createContext(void 0); +var VirtuosoMockContext = import_react6.default.createContext(void 0); +var VirtuosoGridMockContext = import_react6.default.createContext(void 0); function identity(value) { return value; } @@ -44161,10 +45988,10 @@ var listComponentPropsSystem = /* @__PURE__ */ system(() => { var combinedSystem$2 = /* @__PURE__ */ system(([listSystem2, propsSystem]) => { return __spreadValues(__spreadValues({}, listSystem2), propsSystem); }, tup(listSystem, listComponentPropsSystem)); -var DefaultScrollSeekPlaceholder$1 = ({ height }) => /* @__PURE__ */ import_react2.default.createElement("div", { style: { height } }); +var DefaultScrollSeekPlaceholder$1 = ({ height }) => /* @__PURE__ */ import_react6.default.createElement("div", { style: { height } }); var GROUP_STYLE = { position: positionStickyCssValue(), zIndex: 1, overflowAnchor: "none" }; -var ITEM_STYLE = { overflowAnchor: "none" }; -var Items$1 = /* @__PURE__ */ import_react2.default.memo(function VirtuosoItems({ showTopList = false }) { +var ITEM_STYLE$1 = { overflowAnchor: "none" }; +var Items$1 = /* @__PURE__ */ import_react6.default.memo(function VirtuosoItems({ showTopList = false }) { const listState = useEmitterValue$2("listState"); const sizeRanges = usePublisher$2("sizeRanges"); const useWindowScroll = useEmitterValue$2("useWindowScroll"); @@ -44188,7 +46015,7 @@ var Items$1 = /* @__PURE__ */ import_react2.default.memo(function VirtuosoItems( listGap, customScrollParent ); - const [deviation, setDeviation] = import_react2.default.useState(0); + const [deviation, setDeviation] = import_react6.default.useState(0); useEmitter$2("deviation", (value) => { if (deviation !== value) { setDeviation(value); @@ -44204,27 +46031,27 @@ var Items$1 = /* @__PURE__ */ import_react2.default.memo(function VirtuosoItems( const hasGroups2 = useEmitterValue$2("groupIndices").length > 0; const paddingTopAddition = useEmitterValue$2("paddingTopAddition"); const scrolledToInitialItem = useEmitterValue$2("scrolledToInitialItem"); - const containerStyle2 = showTopList ? {} : __spreadValues({ + const containerStyle = showTopList ? {} : __spreadValues({ boxSizing: "border-box", paddingTop: listState.offsetTop + paddingTopAddition, paddingBottom: listState.offsetBottom, marginTop: deviation }, scrolledToInitialItem ? {} : { visibility: "hidden" }); if (!showTopList && listState.totalCount === 0 && EmptyPlaceholder) { - return import_react2.default.createElement(EmptyPlaceholder, contextPropIfNotDomElement(EmptyPlaceholder, context)); + return import_react6.default.createElement(EmptyPlaceholder, contextPropIfNotDomElement(EmptyPlaceholder, context)); } - return import_react2.default.createElement( + return import_react6.default.createElement( ListComponent, __spreadProps(__spreadValues({}, contextPropIfNotDomElement(ListComponent, context)), { ref: callbackRef, - style: containerStyle2, + style: containerStyle, "data-test-id": showTopList ? "virtuoso-top-item-list" : "virtuoso-item-list" }), (showTopList ? listState.topItems : listState.items).map((item) => { const index = item.originalIndex; const key = computeItemKey(index + listState.firstItemIndex, item.data, context); if (isSeeking) { - return import_react2.default.createElement(ScrollSeekPlaceholder, __spreadValues(__spreadProps(__spreadValues({}, contextPropIfNotDomElement(ScrollSeekPlaceholder, context)), { + return import_react6.default.createElement(ScrollSeekPlaceholder, __spreadValues(__spreadProps(__spreadValues({}, contextPropIfNotDomElement(ScrollSeekPlaceholder, context)), { key, index: item.index, height: item.size, @@ -44232,7 +46059,7 @@ var Items$1 = /* @__PURE__ */ import_react2.default.memo(function VirtuosoItems( }), item.type === "group" ? {} : { groupIndex: item.groupIndex })); } if (item.type === "group") { - return import_react2.default.createElement( + return import_react6.default.createElement( GroupComponent, __spreadProps(__spreadValues({}, contextPropIfNotDomElement(GroupComponent, context)), { key, @@ -44244,7 +46071,7 @@ var Items$1 = /* @__PURE__ */ import_react2.default.memo(function VirtuosoItems( groupContent(item.index, context) ); } else { - return import_react2.default.createElement( + return import_react6.default.createElement( ItemComponent, __spreadProps(__spreadValues({}, contextPropIfNotDomElement(ItemComponent, context)), { key, @@ -44253,7 +46080,7 @@ var Items$1 = /* @__PURE__ */ import_react2.default.memo(function VirtuosoItems( "data-item-index": item.index, "data-item-group-index": item.groupIndex, item: item.data, - style: ITEM_STYLE + style: ITEM_STYLE$1 }), hasGroups2 ? itemContent(item.index, item.groupIndex, item.data, context) : itemContent(item.index, item.data, context) ); @@ -44286,25 +46113,25 @@ function contextPropIfNotDomElement(element, context) { } return { context }; } -var Header$1 = /* @__PURE__ */ import_react2.default.memo(function VirtuosoHeader() { +var Header$1 = /* @__PURE__ */ import_react6.default.memo(function VirtuosoHeader() { const Header2 = useEmitterValue$2("HeaderComponent"); const headerHeight = usePublisher$2("headerHeight"); const headerFooterTag = useEmitterValue$2("headerFooterTag"); const ref = useSize((el) => headerHeight(correctItemSize(el, "height"))); const context = useEmitterValue$2("context"); - return Header2 ? import_react2.default.createElement(headerFooterTag, { ref }, import_react2.default.createElement(Header2, contextPropIfNotDomElement(Header2, context))) : null; + return Header2 ? import_react6.default.createElement(headerFooterTag, { ref }, import_react6.default.createElement(Header2, contextPropIfNotDomElement(Header2, context))) : null; }); -var Footer$1 = /* @__PURE__ */ import_react2.default.memo(function VirtuosoFooter() { +var Footer$1 = /* @__PURE__ */ import_react6.default.memo(function VirtuosoFooter() { const Footer2 = useEmitterValue$2("FooterComponent"); const footerHeight = usePublisher$2("footerHeight"); const headerFooterTag = useEmitterValue$2("headerFooterTag"); const ref = useSize((el) => footerHeight(correctItemSize(el, "height"))); const context = useEmitterValue$2("context"); - return Footer2 ? import_react2.default.createElement(headerFooterTag, { ref }, import_react2.default.createElement(Footer2, contextPropIfNotDomElement(Footer2, context))) : null; + return Footer2 ? import_react6.default.createElement(headerFooterTag, { ref }, import_react6.default.createElement(Footer2, contextPropIfNotDomElement(Footer2, context))) : null; }); function buildScroller({ usePublisher: usePublisher2, useEmitter: useEmitter2, useEmitterValue: useEmitterValue2 }) { - const Scroller2 = import_react2.default.memo(function VirtuosoScroller(_a) { - var _b = _a, { style, children } = _b, props = __objRest(_b, ["style", "children"]); + const Scroller2 = import_react6.default.memo(function VirtuosoScroller(_a2) { + var _b = _a2, { style, children } = _b, props = __objRest(_b, ["style", "children"]); const scrollContainerStateCallback = usePublisher2("scrollContainerState"); const ScrollerComponent = useEmitterValue2("ScrollerComponent"); const smoothScrollTargetReached = usePublisher2("smoothScrollTargetReached"); @@ -44318,7 +46145,7 @@ function buildScroller({ usePublisher: usePublisher2, useEmitter: useEmitter2, u ); useEmitter2("scrollTo", scrollToCallback); useEmitter2("scrollBy", scrollByCallback); - return import_react2.default.createElement( + return import_react6.default.createElement( ScrollerComponent, __spreadValues(__spreadValues({ ref: scrollerRef, @@ -44333,8 +46160,8 @@ function buildScroller({ usePublisher: usePublisher2, useEmitter: useEmitter2, u return Scroller2; } function buildWindowScroller({ usePublisher: usePublisher2, useEmitter: useEmitter2, useEmitterValue: useEmitterValue2 }) { - const Scroller2 = import_react2.default.memo(function VirtuosoWindowScroller(_a) { - var _b = _a, { style, children } = _b, props = __objRest(_b, ["style", "children"]); + const Scroller2 = import_react6.default.memo(function VirtuosoWindowScroller(_a2) { + var _b = _a2, { style, children } = _b, props = __objRest(_b, ["style", "children"]); const scrollContainerStateCallback = usePublisher2("windowScrollContainerState"); const ScrollerComponent = useEmitterValue2("ScrollerComponent"); const smoothScrollTargetReached = usePublisher2("smoothScrollTargetReached"); @@ -44357,7 +46184,7 @@ function buildWindowScroller({ usePublisher: usePublisher2, useEmitter: useEmitt }, [scrollerRef, customScrollParent]); useEmitter2("windowScrollTo", scrollToCallback); useEmitter2("scrollBy", scrollByCallback); - return import_react2.default.createElement( + return import_react6.default.createElement( ScrollerComponent, __spreadValues(__spreadValues({ style: __spreadValues(__spreadValues({ position: "relative" }, style), totalListHeight !== 0 ? { height: totalListHeight + deviation } : {}), @@ -44369,46 +46196,46 @@ function buildWindowScroller({ usePublisher: usePublisher2, useEmitter: useEmitt return Scroller2; } var Viewport$2 = ({ children }) => { - const ctx = import_react2.default.useContext(VirtuosoMockContext); + const ctx = import_react6.default.useContext(VirtuosoMockContext); const viewportHeight = usePublisher$2("viewportHeight"); const fixedItemHeight = usePublisher$2("fixedItemHeight"); const viewportRef = useSize(compose2(viewportHeight, (el) => correctItemSize(el, "height"))); - import_react2.default.useEffect(() => { + import_react6.default.useEffect(() => { if (ctx) { viewportHeight(ctx.viewportHeight); fixedItemHeight(ctx.itemHeight); } }, [ctx, viewportHeight, fixedItemHeight]); - return /* @__PURE__ */ import_react2.default.createElement("div", { style: viewportStyle, ref: viewportRef, "data-viewport-type": "element" }, children); + return /* @__PURE__ */ import_react6.default.createElement("div", { style: viewportStyle, ref: viewportRef, "data-viewport-type": "element" }, children); }; var WindowViewport$2 = ({ children }) => { - const ctx = import_react2.default.useContext(VirtuosoMockContext); + const ctx = import_react6.default.useContext(VirtuosoMockContext); const windowViewportRect = usePublisher$2("windowViewportRect"); const fixedItemHeight = usePublisher$2("fixedItemHeight"); const customScrollParent = useEmitterValue$2("customScrollParent"); const viewportRef = useWindowViewportRectRef(windowViewportRect, customScrollParent); - import_react2.default.useEffect(() => { + import_react6.default.useEffect(() => { if (ctx) { fixedItemHeight(ctx.itemHeight); windowViewportRect({ offsetTop: 0, visibleHeight: ctx.viewportHeight, visibleWidth: 100 }); } }, [ctx, windowViewportRect, fixedItemHeight]); - return /* @__PURE__ */ import_react2.default.createElement("div", { ref: viewportRef, style: viewportStyle, "data-viewport-type": "window" }, children); + return /* @__PURE__ */ import_react6.default.createElement("div", { ref: viewportRef, style: viewportStyle, "data-viewport-type": "window" }, children); }; var TopItemListContainer = ({ children }) => { const TopItemList = useEmitterValue$2("TopItemListComponent"); const headerHeight = useEmitterValue$2("headerHeight"); const style = __spreadProps(__spreadValues({}, topItemListStyle), { marginTop: `${headerHeight}px` }); const context = useEmitterValue$2("context"); - return import_react2.default.createElement(TopItemList || "div", { style, context }, children); + return import_react6.default.createElement(TopItemList || "div", { style, context }, children); }; -var ListRoot = /* @__PURE__ */ import_react2.default.memo(function VirtuosoRoot(props) { +var ListRoot = /* @__PURE__ */ import_react6.default.memo(function VirtuosoRoot(props) { const useWindowScroll = useEmitterValue$2("useWindowScroll"); const showTopList = useEmitterValue$2("topItemsIndexes").length > 0; const customScrollParent = useEmitterValue$2("customScrollParent"); const TheScroller = customScrollParent || useWindowScroll ? WindowScroller$2 : Scroller$2; const TheViewport = customScrollParent || useWindowScroll ? WindowViewport$2 : Viewport$2; - return /* @__PURE__ */ import_react2.default.createElement(TheScroller, __spreadValues({}, props), showTopList && /* @__PURE__ */ import_react2.default.createElement(TopItemListContainer, null, /* @__PURE__ */ import_react2.default.createElement(Items$1, { showTopList: true })), /* @__PURE__ */ import_react2.default.createElement(TheViewport, null, /* @__PURE__ */ import_react2.default.createElement(Header$1, null), /* @__PURE__ */ import_react2.default.createElement(Items$1, null), /* @__PURE__ */ import_react2.default.createElement(Footer$1, null))); + return /* @__PURE__ */ import_react6.default.createElement(TheScroller, __spreadValues({}, props), showTopList && /* @__PURE__ */ import_react6.default.createElement(TopItemListContainer, null, /* @__PURE__ */ import_react6.default.createElement(Items$1, { showTopList: true })), /* @__PURE__ */ import_react6.default.createElement(TheViewport, null, /* @__PURE__ */ import_react6.default.createElement(Header$1, null), /* @__PURE__ */ import_react6.default.createElement(Items$1, null), /* @__PURE__ */ import_react6.default.createElement(Footer$1, null))); }); var { Component: List, @@ -44499,9 +46326,10 @@ function buildProbeGridState(items) { }); } function buildItems(startIndex, endIndex, data) { - return Array.from({ length: endIndex - startIndex + 1 }).map( - (_3, i2) => ({ index: i2 + startIndex, data: data == null ? void 0 : data[i2 + startIndex] }) - ); + return Array.from({ length: endIndex - startIndex + 1 }).map((_5, i2) => { + const dataItem = data === null ? null : data[i2 + startIndex]; + return { index: i2 + startIndex, data: dataItem }; + }); } function gapComparator(prev, next) { return prev && prev.column === next.column && prev.row === next.row; @@ -44516,7 +46344,7 @@ var gridSystem = /* @__PURE__ */ system( stateFlags, scrollSeek, { propsReady, didMount }, - { windowViewportRect, windowScrollTo, useWindowScroll, customScrollParent, windowScrollContainerState }, + { windowViewportRect, useWindowScroll, customScrollParent, windowScrollContainerState, windowScrollTo }, log2 ]) => { const totalCount = statefulStream(0); @@ -44527,69 +46355,71 @@ var gridSystem = /* @__PURE__ */ system( const scrollToIndex = stream(); const scrollHeight = stream(); const deviation = statefulStream(0); - const data = statefulStream(void 0); + const data = statefulStream(null); const gap = statefulStream({ row: 0, column: 0 }); - connect( + const stateChanged = stream(); + const restoreStateFrom = stream(); + const stateRestoreInProgress = statefulStream(false); + const initialTopMostItemIndex = statefulStream(0); + const scrolledToInitialItem = statefulStream(true); + const scrollScheduled = statefulStream(false); + subscribe( pipe( didMount, - withLatestFrom(initialItemCount, data), - filter(([didMount2, count]) => didMount2 && count !== 0), - map(([, count, data2]) => { - return { - items: buildItems(0, count - 1, data2), - top: 0, - bottom: 0, - offsetBottom: 0, - offsetTop: 0, - itemHeight: 0, - itemWidth: 0 - }; + withLatestFrom(initialTopMostItemIndex), + filter(([_5, location]) => !!location) + ), + () => { + publish(scrolledToInitialItem, false); + publish(initialItemCount, 0); + } + ); + subscribe( + pipe( + combineLatest(didMount, scrolledToInitialItem, itemDimensions, viewportDimensions, initialTopMostItemIndex, scrollScheduled), + filter(([didMount2, scrolledToInitialItem2, itemDimensions2, viewportDimensions2, , scrollScheduled2]) => { + return didMount2 && !scrolledToInitialItem2 && itemDimensions2.height !== 0 && viewportDimensions2.height !== 0 && !scrollScheduled2; }) ), - gridState + ([, , , , initialTopMostItemIndex2]) => { + publish(scrollScheduled, true); + skipFrames(1, () => { + publish(scrollToIndex, initialTopMostItemIndex2); + }); + handleNext(pipe(scrollTop), () => { + publish(listBoundary, [0, 0]); + publish(scrolledToInitialItem, true); + }); + } ); connect( pipe( - combineLatest( - duc(totalCount), - visibleRange, - duc(gap, gapComparator), - duc(itemDimensions, dimensionComparator), - duc(viewportDimensions, dimensionComparator), - data - ), - map(([totalCount2, [startOffset, endOffset], gap2, item, viewport, data2]) => { - const { row: rowGap, column: columnGap } = gap2; - const { height: itemHeight, width: itemWidth } = item; - const { width: viewportWidth } = viewport; - if (totalCount2 === 0 || viewportWidth === 0) { - return INITIAL_GRID_STATE; - } - if (itemWidth === 0) { - return buildProbeGridState(buildItems(0, 0, data2)); - } - const perRow = itemsPerRow(viewportWidth, itemWidth, columnGap); - let startIndex = perRow * floor((startOffset + rowGap) / (itemHeight + rowGap)); - let endIndex = perRow * ceil((endOffset + rowGap) / (itemHeight + rowGap)) - 1; - endIndex = min(totalCount2 - 1, max(endIndex, perRow - 1)); - startIndex = min(endIndex, max(0, startIndex)); - const items = buildItems(startIndex, endIndex, data2); - const { top, bottom } = gridLayout(viewport, gap2, item, items); - const rowCount = ceil(totalCount2 / perRow); - const totalHeight = rowCount * itemHeight + (rowCount - 1) * rowGap; - const offsetBottom = totalHeight - bottom; - return { items, offsetTop: top, offsetBottom, top, bottom, itemHeight, itemWidth }; - }) + restoreStateFrom, + filter((value) => value !== void 0 && value !== null && value.scrollTop > 0), + mapTo(0) ), - gridState + initialItemCount ); - connect( + subscribe( pipe( - data, - filter(isDefined), - map((data2) => data2.length) + didMount, + withLatestFrom(restoreStateFrom), + filter(([, snapshot]) => snapshot !== void 0 && snapshot !== null) ), - totalCount + ([, snapshot]) => { + if (!snapshot) { + return; + } + publish(viewportDimensions, snapshot.viewport), publish(itemDimensions, snapshot == null ? void 0 : snapshot.item); + publish(gap, snapshot.gap); + if (snapshot.scrollTop > 0) { + publish(stateRestoreInProgress, true); + handleNext(pipe(scrollTop, skip(1)), (_value) => { + publish(stateRestoreInProgress, false); + }); + publish(scrollTo, { top: snapshot.scrollTop }); + } + } ); connect( pipe( @@ -44598,11 +46428,106 @@ var gridSystem = /* @__PURE__ */ system( ), viewportHeight ); + connect( + pipe( + combineLatest( + duc(viewportDimensions, dimensionComparator), + duc(itemDimensions, dimensionComparator), + duc(gap, (prev, next) => prev && prev.column === next.column && prev.row === next.row), + duc(scrollTop) + ), + map(([viewport, item, gap2, scrollTop2]) => ({ + viewport, + item, + gap: gap2, + scrollTop: scrollTop2 + })) + ), + stateChanged + ); + connect( + pipe( + combineLatest( + duc(totalCount), + visibleRange, + duc(gap, gapComparator), + duc(itemDimensions, dimensionComparator), + duc(viewportDimensions, dimensionComparator), + duc(data), + duc(initialItemCount), + duc(stateRestoreInProgress), + duc(scrolledToInitialItem), + duc(initialTopMostItemIndex) + ), + filter(([, , , , , , , stateRestoreInProgress2]) => { + return !stateRestoreInProgress2; + }), + map( + ([ + totalCount2, + [startOffset, endOffset], + gap2, + item, + viewport, + data2, + initialItemCount2, + , + scrolledToInitialItem2, + initialTopMostItemIndex2 + ]) => { + const { row: rowGap, column: columnGap } = gap2; + const { height: itemHeight, width: itemWidth } = item; + const { width: viewportWidth } = viewport; + if (initialItemCount2 === 0 && (totalCount2 === 0 || viewportWidth === 0)) { + return INITIAL_GRID_STATE; + } + if (itemWidth === 0) { + const startIndex2 = getInitialTopMostItemIndexNumber(initialTopMostItemIndex2, totalCount2); + const endIndex2 = startIndex2 === 0 ? Math.max(initialItemCount2 - 1, 0) : startIndex2; + return buildProbeGridState(buildItems(startIndex2, endIndex2, data2)); + } + const perRow = itemsPerRow(viewportWidth, itemWidth, columnGap); + let startIndex; + let endIndex; + if (!scrolledToInitialItem2) { + startIndex = 0; + endIndex = -1; + } else if (startOffset === 0 && endOffset === 0 && initialItemCount2 > 0) { + startIndex = 0; + endIndex = initialItemCount2 - 1; + } else { + startIndex = perRow * floor((startOffset + rowGap) / (itemHeight + rowGap)); + endIndex = perRow * ceil((endOffset + rowGap) / (itemHeight + rowGap)) - 1; + endIndex = min(totalCount2 - 1, max(endIndex, perRow - 1)); + startIndex = min(endIndex, max(0, startIndex)); + } + const items = buildItems(startIndex, endIndex, data2); + const { top, bottom } = gridLayout(viewport, gap2, item, items); + const rowCount = ceil(totalCount2 / perRow); + const totalHeight = rowCount * itemHeight + (rowCount - 1) * rowGap; + const offsetBottom = totalHeight - bottom; + return { items, offsetTop: top, offsetBottom, top, bottom, itemHeight, itemWidth }; + } + ) + ), + gridState + ); + connect( + pipe( + data, + filter((data2) => data2 !== null), + map((data2) => data2.length) + ), + totalCount + ); connect( pipe( combineLatest(viewportDimensions, itemDimensions, gridState, gap), - map(([viewportDimensions2, item, { items }, gap2]) => { - const { top, bottom } = gridLayout(viewportDimensions2, gap2, item, items); + filter(([viewportDimensions2, itemDimensions2, { items }]) => { + return items.length > 0 && itemDimensions2.height !== 0 && viewportDimensions2.height !== 0; + }), + map(([viewportDimensions2, itemDimensions2, { items }, gap2]) => { + const { top, bottom } = gridLayout(viewportDimensions2, gap2, itemDimensions2, items); return [top, bottom]; }), distinctUntilChanged(tupleComparator) @@ -44643,14 +46568,16 @@ var gridSystem = /* @__PURE__ */ system( const rangeChanged = streamFromEmitter( pipe( duc(gridState), - filter(({ items }) => items.length > 0), - map(({ items }) => { + withLatestFrom(stateRestoreInProgress), + filter(([{ items }, stateRestoreInProgress2]) => items.length > 0 && !stateRestoreInProgress2), + map(([{ items }]) => { return { startIndex: items[0].index, endIndex: items[items.length - 1].index }; }), - distinctUntilChanged(rangeComparator) + distinctUntilChanged(rangeComparator), + throttleTime(0) ) ); connect(rangeChanged, scrollSeek.scrollSeekRangeChanged); @@ -44658,7 +46585,7 @@ var gridSystem = /* @__PURE__ */ system( pipe( scrollToIndex, withLatestFrom(viewportDimensions, itemDimensions, totalCount, gap), - map(([location, viewport, item, totalCount2, gap2]) => { + map(([location, viewportDimensions2, itemDimensions2, totalCount2, gap2]) => { const normalLocation = normalizeIndexLocation(location); const { align, behavior, offset } = normalLocation; let index = normalLocation.index; @@ -44666,11 +46593,11 @@ var gridSystem = /* @__PURE__ */ system( index = totalCount2 - 1; } index = max(0, index, min(totalCount2 - 1, index)); - let top = itemTop(viewport, gap2, item, index); + let top = itemTop(viewportDimensions2, gap2, itemDimensions2, index); if (align === "end") { - top = round(top - viewport.height + item.height); + top = round(top - viewportDimensions2.height + itemDimensions2.height); } else if (align === "center") { - top = round(top - viewport.height / 2 + item.height / 2); + top = round(top - viewportDimensions2.height / 2 + itemDimensions2.height / 2); } if (offset) { top += offset; @@ -44718,15 +46645,19 @@ var gridSystem = /* @__PURE__ */ system( footerHeight, headerHeight, initialItemCount, - gap + gap, + restoreStateFrom }, scrollSeek), { + initialTopMostItemIndex, gridState, totalListHeight }), stateFlags), { startReached, endReached, rangeChanged, - propsReady + stateChanged, + propsReady, + stateRestoreInProgress }), log2); }, tup(sizeRangeSystem, domIOSystem, stateFlagsSystem, scrollSeekSystem, propsReadySystem, windowScrollerSystem, loggerSystem) @@ -44788,7 +46719,7 @@ var gridComponentPropsSystem = /* @__PURE__ */ system(() => { var combinedSystem$1 = /* @__PURE__ */ system(([gridSystem2, gridComponentPropsSystem2]) => { return __spreadValues(__spreadValues({}, gridSystem2), gridComponentPropsSystem2); }, tup(gridSystem, gridComponentPropsSystem)); -var GridItems = /* @__PURE__ */ import_react2.default.memo(function GridItems2() { +var GridItems = /* @__PURE__ */ import_react6.default.memo(function GridItems2() { const gridState = useEmitterValue$1("gridState"); const listClassName = useEmitterValue$1("listClassName"); const itemClassName = useEmitterValue$1("itemClassName"); @@ -44803,19 +46734,24 @@ var GridItems = /* @__PURE__ */ import_react2.default.memo(function GridItems2() const itemDimensions = usePublisher$1("itemDimensions"); const gridGap = usePublisher$1("gap"); const log2 = useEmitterValue$1("log"); + const stateRestoreInProgress = useEmitterValue$1("stateRestoreInProgress"); const listRef = useSize((el) => { const scrollHeight = el.parentElement.parentElement.scrollHeight; scrollHeightCallback(scrollHeight); const firstItem = el.firstChild; if (firstItem) { - itemDimensions(firstItem.getBoundingClientRect()); + const { width, height } = firstItem.getBoundingClientRect(); + itemDimensions({ width, height }); } gridGap({ row: resolveGapValue("row-gap", getComputedStyle(el).rowGap, log2), column: resolveGapValue("column-gap", getComputedStyle(el).columnGap, log2) }); }); - return import_react2.default.createElement( + if (stateRestoreInProgress) { + return null; + } + return import_react6.default.createElement( ListComponent, __spreadProps(__spreadValues({ ref: listRef, @@ -44826,13 +46762,13 @@ var GridItems = /* @__PURE__ */ import_react2.default.memo(function GridItems2() }), gridState.items.map((item) => { const key = computeItemKey(item.index, item.data, context); - return isSeeking ? import_react2.default.createElement(ScrollSeekPlaceholder, __spreadProps(__spreadValues({ + return isSeeking ? import_react6.default.createElement(ScrollSeekPlaceholder, __spreadProps(__spreadValues({ key }, contextPropIfNotDomElement(ScrollSeekPlaceholder, context)), { index: item.index, height: gridState.itemHeight, width: gridState.itemWidth - })) : import_react2.default.createElement( + })) : import_react6.default.createElement( ItemComponent, __spreadProps(__spreadValues({}, contextPropIfNotDomElement(ItemComponent, context)), { className: itemClassName, "data-index": item.index, key }), itemContent(item.index, item.data, context) @@ -44840,58 +46776,58 @@ var GridItems = /* @__PURE__ */ import_react2.default.memo(function GridItems2() }) ); }); -var Header = import_react2.default.memo(function VirtuosoHeader2() { +var Header = import_react6.default.memo(function VirtuosoHeader2() { const Header2 = useEmitterValue$1("HeaderComponent"); const headerHeight = usePublisher$1("headerHeight"); const headerFooterTag = useEmitterValue$1("headerFooterTag"); const ref = useSize((el) => headerHeight(correctItemSize(el, "height"))); const context = useEmitterValue$1("context"); - return Header2 ? import_react2.default.createElement(headerFooterTag, { ref }, import_react2.default.createElement(Header2, contextPropIfNotDomElement(Header2, context))) : null; + return Header2 ? import_react6.default.createElement(headerFooterTag, { ref }, import_react6.default.createElement(Header2, contextPropIfNotDomElement(Header2, context))) : null; }); -var Footer = import_react2.default.memo(function VirtuosoGridFooter() { +var Footer = import_react6.default.memo(function VirtuosoGridFooter() { const Footer2 = useEmitterValue$1("FooterComponent"); const footerHeight = usePublisher$1("footerHeight"); const headerFooterTag = useEmitterValue$1("headerFooterTag"); const ref = useSize((el) => footerHeight(correctItemSize(el, "height"))); const context = useEmitterValue$1("context"); - return Footer2 ? import_react2.default.createElement(headerFooterTag, { ref }, import_react2.default.createElement(Footer2, contextPropIfNotDomElement(Footer2, context))) : null; + return Footer2 ? import_react6.default.createElement(headerFooterTag, { ref }, import_react6.default.createElement(Footer2, contextPropIfNotDomElement(Footer2, context))) : null; }); var Viewport$1 = ({ children }) => { - const ctx = import_react2.default.useContext(VirtuosoGridMockContext); + const ctx = import_react6.default.useContext(VirtuosoGridMockContext); const itemDimensions = usePublisher$1("itemDimensions"); const viewportDimensions = usePublisher$1("viewportDimensions"); const viewportRef = useSize((el) => { viewportDimensions(el.getBoundingClientRect()); }); - import_react2.default.useEffect(() => { + import_react6.default.useEffect(() => { if (ctx) { viewportDimensions({ height: ctx.viewportHeight, width: ctx.viewportWidth }); itemDimensions({ height: ctx.itemHeight, width: ctx.itemWidth }); } }, [ctx, viewportDimensions, itemDimensions]); - return /* @__PURE__ */ import_react2.default.createElement("div", { style: viewportStyle, ref: viewportRef }, children); + return /* @__PURE__ */ import_react6.default.createElement("div", { style: viewportStyle, ref: viewportRef }, children); }; var WindowViewport$1 = ({ children }) => { - const ctx = import_react2.default.useContext(VirtuosoGridMockContext); + const ctx = import_react6.default.useContext(VirtuosoGridMockContext); const windowViewportRect = usePublisher$1("windowViewportRect"); const itemDimensions = usePublisher$1("itemDimensions"); const customScrollParent = useEmitterValue$1("customScrollParent"); const viewportRef = useWindowViewportRectRef(windowViewportRect, customScrollParent); - import_react2.default.useEffect(() => { + import_react6.default.useEffect(() => { if (ctx) { itemDimensions({ height: ctx.itemHeight, width: ctx.itemWidth }); windowViewportRect({ offsetTop: 0, visibleHeight: ctx.viewportHeight, visibleWidth: ctx.viewportWidth }); } }, [ctx, windowViewportRect, itemDimensions]); - return /* @__PURE__ */ import_react2.default.createElement("div", { ref: viewportRef, style: viewportStyle }, children); + return /* @__PURE__ */ import_react6.default.createElement("div", { ref: viewportRef, style: viewportStyle }, children); }; -var GridRoot = /* @__PURE__ */ import_react2.default.memo(function GridRoot2(_a) { - var props = __objRest(_a, []); +var GridRoot = /* @__PURE__ */ import_react6.default.memo(function GridRoot2(_a2) { + var props = __objRest(_a2, []); const useWindowScroll = useEmitterValue$1("useWindowScroll"); const customScrollParent = useEmitterValue$1("customScrollParent"); const TheScroller = customScrollParent || useWindowScroll ? WindowScroller$1 : Scroller$1; const TheViewport = customScrollParent || useWindowScroll ? WindowViewport$1 : Viewport$1; - return /* @__PURE__ */ import_react2.default.createElement(TheScroller, __spreadValues({}, props), /* @__PURE__ */ import_react2.default.createElement(TheViewport, null, /* @__PURE__ */ import_react2.default.createElement(Header, null), /* @__PURE__ */ import_react2.default.createElement(GridItems, null), /* @__PURE__ */ import_react2.default.createElement(Footer, null))); + return /* @__PURE__ */ import_react6.default.createElement(TheScroller, __spreadValues({}, props), /* @__PURE__ */ import_react6.default.createElement(TheViewport, null, /* @__PURE__ */ import_react6.default.createElement(Header, null), /* @__PURE__ */ import_react6.default.createElement(GridItems, null), /* @__PURE__ */ import_react6.default.createElement(Footer, null))); }); var { Component: Grid, @@ -44916,7 +46852,10 @@ var { itemClassName: "itemClassName", useWindowScroll: "useWindowScroll", customScrollParent: "customScrollParent", - scrollerRef: "scrollerRef" + scrollerRef: "scrollerRef", + logLevel: "logLevel", + restoreStateFrom: "restoreStateFrom", + initialTopMostItemIndex: "initialTopMostItemIndex" }, methods: { scrollTo: "scrollTo", @@ -44929,7 +46868,8 @@ var { startReached: "startReached", rangeChanged: "rangeChanged", atBottomStateChange: "atBottomStateChange", - atTopStateChange: "atTopStateChange" + atTopStateChange: "atTopStateChange", + stateChanged: "stateChanged" } }, GridRoot @@ -44946,7 +46886,7 @@ function resolveGapValue(property, value, log2) { return parseInt(value != null ? value : "0", 10); } var tableComponentPropsSystem = /* @__PURE__ */ system(() => { - const itemContent = statefulStream((index) => /* @__PURE__ */ import_react2.default.createElement("td", null, "Item $", index)); + const itemContent = statefulStream((index) => /* @__PURE__ */ import_react6.default.createElement("td", null, "Item $", index)); const context = statefulStream(null); const fixedHeaderContent = statefulStream(null); const fixedFooterContent = statefulStream(null); @@ -44985,9 +46925,10 @@ var tableComponentPropsSystem = /* @__PURE__ */ system(() => { var combinedSystem = /* @__PURE__ */ system(([listSystem2, propsSystem]) => { return __spreadValues(__spreadValues({}, listSystem2), propsSystem); }, tup(listSystem, tableComponentPropsSystem)); -var DefaultScrollSeekPlaceholder = ({ height }) => /* @__PURE__ */ import_react2.default.createElement("tr", null, /* @__PURE__ */ import_react2.default.createElement("td", { style: { height } })); -var DefaultFillerRow = ({ height }) => /* @__PURE__ */ import_react2.default.createElement("tr", null, /* @__PURE__ */ import_react2.default.createElement("td", { style: { height, padding: 0, border: 0 } })); -var Items = /* @__PURE__ */ import_react2.default.memo(function VirtuosoItems2() { +var DefaultScrollSeekPlaceholder = ({ height }) => /* @__PURE__ */ import_react6.default.createElement("tr", null, /* @__PURE__ */ import_react6.default.createElement("td", { style: { height } })); +var DefaultFillerRow = ({ height }) => /* @__PURE__ */ import_react6.default.createElement("tr", null, /* @__PURE__ */ import_react6.default.createElement("td", { style: { height, padding: 0, border: 0 } })); +var ITEM_STYLE = { overflowAnchor: "none" }; +var Items = /* @__PURE__ */ import_react6.default.memo(function VirtuosoItems2() { const listState = useEmitterValue("listState"); const sizeRanges = usePublisher("sizeRanges"); const useWindowScroll = useEmitterValue("useWindowScroll"); @@ -45008,7 +46949,7 @@ var Items = /* @__PURE__ */ import_react2.default.memo(function VirtuosoItems2() void 0, customScrollParent ); - const [deviation, setDeviation] = import_react2.default.useState(0); + const [deviation, setDeviation] = import_react6.default.useState(0); useEmitter("deviation", (value) => { if (deviation !== value) { ref.current.style.marginTop = `${value}px`; @@ -45027,24 +46968,24 @@ var Items = /* @__PURE__ */ import_react2.default.memo(function VirtuosoItems2() const statefulTotalCount = useEmitterValue("statefulTotalCount"); const context = useEmitterValue("context"); if (statefulTotalCount === 0 && EmptyPlaceholder) { - return import_react2.default.createElement(EmptyPlaceholder, contextPropIfNotDomElement(EmptyPlaceholder, context)); + return import_react6.default.createElement(EmptyPlaceholder, contextPropIfNotDomElement(EmptyPlaceholder, context)); } const paddingTop = listState.offsetTop + paddingTopAddition + deviation; const paddingBottom = listState.offsetBottom; - const paddingTopEl = paddingTop > 0 ? /* @__PURE__ */ import_react2.default.createElement(FillerRow, { height: paddingTop, key: "padding-top", context }) : null; - const paddingBottomEl = paddingBottom > 0 ? /* @__PURE__ */ import_react2.default.createElement(FillerRow, { height: paddingBottom, key: "padding-bottom", context }) : null; + const paddingTopEl = paddingTop > 0 ? /* @__PURE__ */ import_react6.default.createElement(FillerRow, { height: paddingTop, key: "padding-top", context }) : null; + const paddingBottomEl = paddingBottom > 0 ? /* @__PURE__ */ import_react6.default.createElement(FillerRow, { height: paddingBottom, key: "padding-bottom", context }) : null; const items = listState.items.map((item) => { const index = item.originalIndex; const key = computeItemKey(index + firstItemIndex, item.data, context); if (isSeeking) { - return import_react2.default.createElement(ScrollSeekPlaceholder, __spreadProps(__spreadValues({}, contextPropIfNotDomElement(ScrollSeekPlaceholder, context)), { + return import_react6.default.createElement(ScrollSeekPlaceholder, __spreadProps(__spreadValues({}, contextPropIfNotDomElement(ScrollSeekPlaceholder, context)), { key, index: item.index, height: item.size, type: item.type || "item" })); } - return import_react2.default.createElement( + return import_react6.default.createElement( TableRowComponent, __spreadProps(__spreadValues({}, contextPropIfNotDomElement(TableRowComponent, context)), { key, @@ -45052,45 +46993,45 @@ var Items = /* @__PURE__ */ import_react2.default.memo(function VirtuosoItems2() "data-known-size": item.size, "data-item-index": item.index, item: item.data, - style: { overflowAnchor: "none" } + style: ITEM_STYLE }), itemContent(item.index, item.data, context) ); }); - return import_react2.default.createElement( + return import_react6.default.createElement( TableBodyComponent, __spreadValues({ ref: callbackRef, "data-test-id": "virtuoso-item-list" }, contextPropIfNotDomElement(TableBodyComponent, context)), [paddingTopEl, ...items, paddingBottomEl] ); }); var Viewport = ({ children }) => { - const ctx = import_react2.default.useContext(VirtuosoMockContext); + const ctx = import_react6.default.useContext(VirtuosoMockContext); const viewportHeight = usePublisher("viewportHeight"); const fixedItemHeight = usePublisher("fixedItemHeight"); const viewportRef = useSize(compose2(viewportHeight, (el) => correctItemSize(el, "height"))); - import_react2.default.useEffect(() => { + import_react6.default.useEffect(() => { if (ctx) { viewportHeight(ctx.viewportHeight); fixedItemHeight(ctx.itemHeight); } }, [ctx, viewportHeight, fixedItemHeight]); - return /* @__PURE__ */ import_react2.default.createElement("div", { style: viewportStyle, ref: viewportRef, "data-viewport-type": "element" }, children); + return /* @__PURE__ */ import_react6.default.createElement("div", { style: viewportStyle, ref: viewportRef, "data-viewport-type": "element" }, children); }; var WindowViewport = ({ children }) => { - const ctx = import_react2.default.useContext(VirtuosoMockContext); + const ctx = import_react6.default.useContext(VirtuosoMockContext); const windowViewportRect = usePublisher("windowViewportRect"); const fixedItemHeight = usePublisher("fixedItemHeight"); const customScrollParent = useEmitterValue("customScrollParent"); const viewportRef = useWindowViewportRectRef(windowViewportRect, customScrollParent); - import_react2.default.useEffect(() => { + import_react6.default.useEffect(() => { if (ctx) { fixedItemHeight(ctx.itemHeight); windowViewportRect({ offsetTop: 0, visibleHeight: ctx.viewportHeight, visibleWidth: 100 }); } }, [ctx, windowViewportRect, fixedItemHeight]); - return /* @__PURE__ */ import_react2.default.createElement("div", { ref: viewportRef, style: viewportStyle, "data-viewport-type": "window" }, children); + return /* @__PURE__ */ import_react6.default.createElement("div", { ref: viewportRef, style: viewportStyle, "data-viewport-type": "window" }, children); }; -var TableRoot = /* @__PURE__ */ import_react2.default.memo(function TableVirtuosoRoot(props) { +var TableRoot = /* @__PURE__ */ import_react6.default.memo(function TableVirtuosoRoot(props) { const useWindowScroll = useEmitterValue("useWindowScroll"); const customScrollParent = useEmitterValue("customScrollParent"); const fixedHeaderHeight = usePublisher("fixedHeaderHeight"); @@ -45105,16 +47046,16 @@ var TableRoot = /* @__PURE__ */ import_react2.default.memo(function TableVirtuos const TheTable = useEmitterValue("TableComponent"); const TheTHead = useEmitterValue("TableHeadComponent"); const TheTFoot = useEmitterValue("TableFooterComponent"); - const theHead = fixedHeaderContent ? import_react2.default.createElement( + const theHead = fixedHeaderContent ? import_react6.default.createElement( TheTHead, __spreadValues({ key: "TableHead", - style: { zIndex: 1, position: "sticky", top: 0 }, + style: { zIndex: 2, position: "sticky", top: 0 }, ref: theadRef }, contextPropIfNotDomElement(TheTHead, context)), fixedHeaderContent() ) : null; - const theFoot = fixedFooterContent ? import_react2.default.createElement( + const theFoot = fixedFooterContent ? import_react6.default.createElement( TheTFoot, __spreadValues({ key: "TableFoot", @@ -45123,11 +47064,11 @@ var TableRoot = /* @__PURE__ */ import_react2.default.memo(function TableVirtuos }, contextPropIfNotDomElement(TheTFoot, context)), fixedFooterContent() ) : null; - return /* @__PURE__ */ import_react2.default.createElement(TheScroller, __spreadValues({}, props), /* @__PURE__ */ import_react2.default.createElement(TheViewport, null, import_react2.default.createElement(TheTable, __spreadValues({ style: { borderSpacing: 0 } }, contextPropIfNotDomElement(TheTable, context)), [ - theHead, - /* @__PURE__ */ import_react2.default.createElement(Items, { key: "TableBody" }), - theFoot - ]))); + return /* @__PURE__ */ import_react6.default.createElement(TheScroller, __spreadValues({}, props), /* @__PURE__ */ import_react6.default.createElement(TheViewport, null, import_react6.default.createElement( + TheTable, + __spreadValues({ style: { borderSpacing: 0, overflowAnchor: "none" } }, contextPropIfNotDomElement(TheTable, context)), + [theHead, /* @__PURE__ */ import_react6.default.createElement(Items, { key: "TableBody" }), theFoot] + ))); }); var { Component: Table, @@ -45192,895 +47133,12 @@ var Scroller = /* @__PURE__ */ buildScroller({ usePublisher, useEmitterValue, us var WindowScroller = /* @__PURE__ */ buildWindowScroller({ usePublisher, useEmitterValue, useEmitter }); var TableVirtuoso = Table; -// src/shared/table-state/table-state-context.tsx -var import_react11 = __toESM(require_react()); - -// src/shared/logger.ts -var import_react10 = __toESM(require_react()); - -// node_modules/react-redux/es/index.js -var import_shim = __toESM(require_shim()); -var import_with_selector = __toESM(require_with_selector()); - -// node_modules/react-redux/es/utils/reactBatchedUpdates.js -var import_react_dom2 = __toESM(require_react_dom()); - -// node_modules/react-redux/es/utils/batch.js -function defaultNoopBatch(callback) { - callback(); -} -var batch = defaultNoopBatch; -var setBatch = (newBatch) => batch = newBatch; -var getBatch = () => batch; - -// node_modules/react-redux/es/hooks/useSelector.js -var import_react5 = __toESM(require_react()); - -// node_modules/react-redux/es/hooks/useReduxContext.js -var import_react4 = __toESM(require_react()); - -// node_modules/react-redux/es/components/Context.js -var import_react3 = __toESM(require_react()); -var ReactReduxContext = /* @__PURE__ */ (0, import_react3.createContext)(null); -if (true) { - ReactReduxContext.displayName = "ReactRedux"; -} - -// node_modules/react-redux/es/hooks/useReduxContext.js -function useReduxContext() { - const contextValue = (0, import_react4.useContext)(ReactReduxContext); - if (!contextValue) { - throw new Error("could not find react-redux context value; please ensure the component is wrapped in a "); - } - return contextValue; -} - -// node_modules/react-redux/es/utils/useSyncExternalStore.js -var notInitialized = () => { - throw new Error("uSES not initialized!"); -}; - -// node_modules/react-redux/es/hooks/useSelector.js -var useSyncExternalStoreWithSelector = notInitialized; -var initializeUseSelector = (fn2) => { - useSyncExternalStoreWithSelector = fn2; -}; -var refEquality = (a2, b2) => a2 === b2; -function createSelectorHook(context = ReactReduxContext) { - const useReduxContext2 = context === ReactReduxContext ? useReduxContext : () => (0, import_react5.useContext)(context); - return function useSelector2(selector, equalityFn = refEquality) { - if (true) { - if (!selector) { - throw new Error(`You must pass a selector to useSelector`); - } - if (typeof selector !== "function") { - throw new Error(`You must pass a function as a selector to useSelector`); - } - if (typeof equalityFn !== "function") { - throw new Error(`You must pass a function as an equality function to useSelector`); - } - } - const { - store: store2, - subscription, - getServerState - } = useReduxContext2(); - const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store2.getState, getServerState || store2.getState, selector, equalityFn); - (0, import_react5.useDebugValue)(selectedState); - return selectedState; - }; -} -var useSelector = /* @__PURE__ */ createSelectorHook(); - -// node_modules/react-redux/es/components/connect.js -var import_hoist_non_react_statics = __toESM(require_hoist_non_react_statics_cjs()); -var import_react7 = __toESM(require_react()); -var import_react_is = __toESM(require_react_is2()); - -// node_modules/react-redux/es/utils/Subscription.js -function createListenerCollection() { - const batch2 = getBatch(); - let first = null; - let last2 = null; - return { - clear() { - first = null; - last2 = null; - }, - notify() { - batch2(() => { - let listener2 = first; - while (listener2) { - listener2.callback(); - listener2 = listener2.next; - } - }); - }, - get() { - let listeners = []; - let listener2 = first; - while (listener2) { - listeners.push(listener2); - listener2 = listener2.next; - } - return listeners; - }, - subscribe(callback) { - let isSubscribed = true; - let listener2 = last2 = { - callback, - next: null, - prev: last2 - }; - if (listener2.prev) { - listener2.prev.next = listener2; - } else { - first = listener2; - } - return function unsubscribe() { - if (!isSubscribed || first === null) - return; - isSubscribed = false; - if (listener2.next) { - listener2.next.prev = listener2.prev; - } else { - last2 = listener2.prev; - } - if (listener2.prev) { - listener2.prev.next = listener2.next; - } else { - first = listener2.next; - } - }; - } - }; -} -var nullListeners = { - notify() { - }, - get: () => [] -}; -function createSubscription(store2, parentSub) { - let unsubscribe; - let listeners = nullListeners; - function addNestedSub(listener2) { - trySubscribe(); - return listeners.subscribe(listener2); - } - function notifyNestedSubs() { - listeners.notify(); - } - function handleChangeWrapper() { - if (subscription.onStateChange) { - subscription.onStateChange(); - } - } - function isSubscribed() { - return Boolean(unsubscribe); - } - function trySubscribe() { - if (!unsubscribe) { - unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store2.subscribe(handleChangeWrapper); - listeners = createListenerCollection(); - } - } - function tryUnsubscribe() { - if (unsubscribe) { - unsubscribe(); - unsubscribe = void 0; - listeners.clear(); - listeners = nullListeners; - } - } - const subscription = { - addNestedSub, - notifyNestedSubs, - handleChangeWrapper, - isSubscribed, - trySubscribe, - tryUnsubscribe, - getListeners: () => listeners - }; - return subscription; -} - -// node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js -var import_react6 = __toESM(require_react()); -var canUseDOM = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"); -var useIsomorphicLayoutEffect2 = canUseDOM ? import_react6.useLayoutEffect : import_react6.useEffect; - -// node_modules/react-redux/es/components/connect.js -var useSyncExternalStore = notInitialized; -var initializeConnect = (fn2) => { - useSyncExternalStore = fn2; -}; - -// node_modules/react-redux/es/components/Provider.js -var import_react8 = __toESM(require_react()); -function Provider({ - store: store2, - context, - children, - serverState -}) { - const contextValue = (0, import_react8.useMemo)(() => { - const subscription = createSubscription(store2); - return { - store: store2, - subscription, - getServerState: serverState ? () => serverState : void 0 - }; - }, [store2, serverState]); - const previousState = (0, import_react8.useMemo)(() => store2.getState(), [store2]); - useIsomorphicLayoutEffect2(() => { - const { - subscription - } = contextValue; - subscription.onStateChange = subscription.notifyNestedSubs; - subscription.trySubscribe(); - if (previousState !== store2.getState()) { - subscription.notifyNestedSubs(); - } - return () => { - subscription.tryUnsubscribe(); - subscription.onStateChange = void 0; - }; - }, [contextValue, previousState]); - const Context = context || ReactReduxContext; - return /* @__PURE__ */ import_react8.default.createElement(Context.Provider, { - value: contextValue - }, children); -} -var Provider_default = Provider; - -// node_modules/react-redux/es/hooks/useStore.js -var import_react9 = __toESM(require_react()); - -// node_modules/react-redux/es/index.js -initializeUseSelector(import_with_selector.useSyncExternalStoreWithSelector); -initializeConnect(import_shim.useSyncExternalStore); -setBatch(import_react_dom2.unstable_batchedUpdates); - -// src/redux/global/hooks.ts -var useAppSelector = useSelector; - -// src/shared/logger.ts -var log = (shouldDebug) => (message, args = {}) => { - if (shouldDebug) { - console.log(message); - if (Object.keys(args).length !== 0) - console.log(args); - } -}; -var useLogger = () => { - const { shouldDebug } = useAppSelector((state) => state.global); - const logger = import_react10.default.useCallback( - (message, args) => log(shouldDebug)(message, args), - [shouldDebug] - ); - return logger; -}; - -// src/shared/table-state/table-error.ts -var ColumNotFoundError = class extends Error { - constructor(id2) { - super(`Column ${id2} was not found`); - this.name = "ColumNotFoundError"; - } -}; -var TagNotFoundError = class extends Error { - constructor(id2) { - super(`Tag ${id2} was not found`); - this.name = "TagNotFoundError"; - } -}; -var RowNotFoundError = class extends Error { - constructor(id2) { - super(`Row ${id2} was not found`); - this.name = "RowNotFoundError"; - } -}; -var CellNotFoundError = class extends Error { - constructor(options) { - const { id: id2, rowId, columnId } = options || {}; - if (rowId || columnId) - super(`Cell ${rowId}:${columnId} was not found`); - super(`Cell ${id2} was not found`); - this.name = "CellNotFoundError"; - } -}; - -// src/shared/commands/command-errors.ts -var CommandUndoError = class extends Error { - constructor() { - super(`execute() must be called before undo() is available`); - this.name = "CommandUndoError"; - } -}; -var CommandRedoError = class extends Error { - constructor() { - super(`undo() must be called before redo() is available`); - this.name = "CommandRedoError"; - } -}; -var DeleteCommandArgumentsError = class extends Error { - constructor() { - super(`Either 'id' or 'last' must be defined`); - this.name = "DeleteCommandArgumentsError"; - } -}; - -// src/shared/table-state/table-state-command.ts -var TableStateCommand = class { - constructor(shouldSortRows = false) { - __publicField(this, "shouldSortRows"); - __publicField(this, "hasExecuteBeenCalled"); - __publicField(this, "hasUndoBeenCalled"); - this.hasExecuteBeenCalled = false; - this.hasUndoBeenCalled = false; - this.shouldSortRows = shouldSortRows; - } - onExecute() { - this.hasExecuteBeenCalled = true; - } - onRedo() { - if (!this.hasUndoBeenCalled) - throw new CommandRedoError(); - this.hasUndoBeenCalled = false; - } - onUndo() { - if (!this.hasExecuteBeenCalled) - throw new CommandUndoError(); - this.hasUndoBeenCalled = true; - } -}; - -// src/shared/types/index.ts -var Color = /* @__PURE__ */ ((Color2) => { - Color2["LIGHT_GRAY"] = "light gray"; - Color2["GRAY"] = "gray"; - Color2["BROWN"] = "brown"; - Color2["ORANGE"] = "orange"; - Color2["YELLOW"] = "yellow"; - Color2["GREEN"] = "green"; - Color2["BLUE"] = "blue"; - Color2["PURPLE"] = "purple"; - Color2["PINK"] = "pink"; - Color2["RED"] = "red"; - return Color2; -})(Color || {}); -var PaddingSize = /* @__PURE__ */ ((PaddingSize5) => { - PaddingSize5["SM"] = "sm"; - PaddingSize5["MD"] = "md"; - PaddingSize5["LG"] = "lg"; - PaddingSize5["XL"] = "xl"; - PaddingSize5["XXL"] = "2xl"; - PaddingSize5["XXXL"] = "3xl"; - PaddingSize5["XXXXL"] = "4xl"; - PaddingSize5["UNSET"] = "unset"; - return PaddingSize5; -})(PaddingSize || {}); -var CellType = /* @__PURE__ */ ((CellType5) => { - CellType5["TEXT"] = "text"; - CellType5["EMBED"] = "embed"; - CellType5["FILE"] = "file"; - CellType5["NUMBER"] = "number"; - CellType5["CURRENCY"] = "currency"; - CellType5["TAG"] = "tag"; - CellType5["MULTI_TAG"] = "multi-tag"; - CellType5["DATE"] = "date"; - CellType5["CHECKBOX"] = "checkbox"; - CellType5["CREATION_TIME"] = "creation-time"; - CellType5["LAST_EDITED_TIME"] = "last-edited-time"; - return CellType5; -})(CellType || {}); -var DateFormat = /* @__PURE__ */ ((DateFormat9) => { - DateFormat9["MM_DD_YYYY"] = "mm/dd/yyyy"; - DateFormat9["DD_MM_YYYY"] = "dd/mm/yyyy"; - DateFormat9["YYYY_MM_DD"] = "yyyy/mm/dd"; - DateFormat9["FULL"] = "full"; - DateFormat9["RELATIVE"] = "relative"; - return DateFormat9; -})(DateFormat || {}); -var CurrencyType = /* @__PURE__ */ ((CurrencyType9) => { - CurrencyType9["UNITED_STATES"] = "USD"; - CurrencyType9["CANADA"] = "CAD"; - CurrencyType9["SINGAPORE"] = "SGB"; - CurrencyType9["EUROPE"] = "EUR"; - CurrencyType9["SWEDEN"] = "SEK"; - CurrencyType9["DENMARK"] = "DKK"; - CurrencyType9["NORWAY"] = "NOK"; - CurrencyType9["ICELAND"] = "ISK"; - CurrencyType9["POUND"] = "GBP"; - CurrencyType9["RUSSIA"] = "RUB"; - CurrencyType9["AUSTRALIA"] = "AUD"; - CurrencyType9["JAPAN"] = "JPY"; - CurrencyType9["INDIA"] = "INR"; - CurrencyType9["CHINA"] = "CNY"; - CurrencyType9["BRAZIL"] = "BRL"; - CurrencyType9["COLOMBIA"] = "COP"; - CurrencyType9["MEXICO"] = "MXN"; - CurrencyType9["ARGENTINA"] = "ARS"; - return CurrencyType9; -})(CurrencyType || {}); -var GeneralFunction = /* @__PURE__ */ ((GeneralFunction3) => { - GeneralFunction3["NONE"] = "none"; - GeneralFunction3["COUNT_ALL"] = "count-all"; - GeneralFunction3["COUNT_VALUES"] = "count-values"; - GeneralFunction3["COUNT_UNIQUE"] = "count-unique"; - GeneralFunction3["COUNT_EMPTY"] = "count-empty"; - GeneralFunction3["COUNT_NOT_EMPTY"] = "count-not-empty"; - GeneralFunction3["PERCENT_EMPTY"] = "percent-empty"; - GeneralFunction3["PERCENT_NOT_EMPTY"] = "percent-not-empty"; - return GeneralFunction3; -})(GeneralFunction || {}); -var NumberFunction = /* @__PURE__ */ ((NumberFunction2) => { - NumberFunction2["SUM"] = "sum"; - NumberFunction2["AVG"] = "avg"; - NumberFunction2["MIN"] = "min"; - NumberFunction2["MAX"] = "max"; - NumberFunction2["MEDIAN"] = "median"; - NumberFunction2["RANGE"] = "range"; - return NumberFunction2; -})(NumberFunction || {}); -var AspectRatio = /* @__PURE__ */ ((AspectRatio5) => { - AspectRatio5["ONE_BY_ONE"] = "1/1"; - AspectRatio5["NINE_BY_SIXTEEN"] = "9/16"; - AspectRatio5["FOUR_BY_THREE"] = "4/3"; - AspectRatio5["SIXTEEN_BY_NINE"] = "16/9"; - return AspectRatio5; -})(AspectRatio || {}); - -// src/shared/regex.ts -var NUMBER_REGEX = new RegExp(/^-?\d+\.?\d*$/); -var NUMBER_INPUT_REGEX = new RegExp(/(^$)|(^-$)|(^-?\d+\.?\d*$)/); -var CSS_MEASUREMENT_PIXEL_REGEX = new RegExp(/^([1-9])([0-9]*)px$/); -var DATE_REGEX = new RegExp(/^\d{4}\/\d{2}\/\d{2}$/); -var CHECKBOX_REGEX = new RegExp(/^\[[x ]{0,1}\]$/); -var CHECKBOX_CHECKED_REGEX = new RegExp(/^\[[x]\]$/); -var URL_REGEX = new RegExp( - /^https?:\/\/(www\.)?[\w.-]+\.[\w.-]+(\/[\w.-]+)*(\/?(\?[\w.-]+=[\w.-]+(&[\w.-]+=[\w.-]+)*)?)?$/i -); - -// src/shared/validators.ts -var isNumber = (input) => { - return input.match(NUMBER_REGEX) !== null; -}; -var isValidNumberInput = (input) => { - return input.match(NUMBER_INPUT_REGEX) !== null; -}; -var isCheckbox = (input) => { - return input.match(CHECKBOX_REGEX) !== null; -}; -var isCheckboxChecked = (input) => { - return input.match(CHECKBOX_CHECKED_REGEX) !== null; -}; -var isURL = (input) => { - return input.match(URL_REGEX) !== null; -}; -var isGeneralFunction = (value) => { - return Object.values(GeneralFunction).includes(value); -}; -var isNumberFunction = (value) => { - return Object.values(NumberFunction).includes(value); -}; - -// src/shared/commands/row-sort-command.ts -var RowSortCommand = class extends TableStateCommand { - constructor() { - super(...arguments); - __publicField(this, "previousRowSort", []); - } - sortByTag(columnId, columns, rows, cells, sortDir) { - const newRows = [...rows]; - newRows.sort((a2, b2) => { - const cellA = cells.find( - (c2) => c2.columnId === columnId && c2.rowId === a2.id - ); - if (!cellA) - throw new CellNotFoundError({ rowId: a2.id, columnId }); - const cellB = cells.find( - (c2) => c2.columnId === columnId && c2.rowId === b2.id - ); - if (!cellB) - throw new CellNotFoundError({ rowId: b2.id, columnId }); - const column = columns.find((c2) => c2.id === columnId); - if (!column) - throw new ColumNotFoundError(columnId); - if (cellA.tagIds.length === 0 && cellB.tagIds.length > 0) - return 1; - if (cellA.tagIds.length > 0 && cellB.tagIds.length === 0) - return -1; - if (cellA.tagIds.length === 0 && cellB.tagIds.length === 0) - return 0; - let tagLength = cellA.tagIds.length; - if (cellB.tagIds.length > cellA.tagIds.length) { - tagLength = cellB.tagIds.length; - } - for (let i2 = 0; i2 < tagLength; i2++) { - const tagIdA = cellA.tagIds[i2]; - if (tagIdA === void 0) - return -1; - const tagA = column.tags.find((t2) => t2.id === tagIdA); - if (!tagA) - throw new TagNotFoundError(tagIdA); - const tagIdB = cellB.tagIds[i2]; - if (tagIdB === void 0) - return 1; - const tagB = column.tags.find((t2) => t2.id === tagIdB); - if (!tagB) - throw new TagNotFoundError(tagIdA); - if (sortDir === "asc" /* ASC */) { - const result = tagA.markdown.localeCompare(tagB.markdown); - if (result !== 0) - return result; - } else if (sortDir === "desc" /* DESC */) { - const result = tagB.markdown.localeCompare(tagA.markdown); - if (result !== 0) - return result; - } - } - return 0; - }); - return newRows; - } - sortByMarkdown(columnId, rows, cells, sortDir) { - const newRows = [...rows]; - newRows.sort((a2, b2) => { - const cellA = cells.find( - (c2) => c2.columnId === columnId && c2.rowId === a2.id - ); - if (!cellA) - throw new CellNotFoundError({ - rowId: a2.id, - columnId - }); - const cellB = cells.find( - (c2) => c2.columnId === columnId && c2.rowId === b2.id - ); - if (!cellB) - throw new CellNotFoundError({ - rowId: b2.id, - columnId - }); - const markdownA = cellA.markdown; - const markdownB = cellB.markdown; - if (markdownA === "" && markdownB !== "") - return 1; - if (markdownA !== "" && markdownB === "") - return -1; - if (markdownA === "" && markdownB === "") - return 0; - if (sortDir === "asc" /* ASC */) { - return markdownA.localeCompare(markdownB); - } else if (sortDir === "desc" /* DESC */) { - return markdownB.localeCompare(markdownA); - } else { - return 0; - } - }); - return newRows; - } - sortByNumber(columnId, rows, cells, sortDir) { - const newRows = [...rows]; - newRows.sort((a2, b2) => { - const cellA = cells.find( - (c2) => c2.columnId === columnId && c2.rowId === a2.id - ); - if (!cellA) - throw new CellNotFoundError({ - rowId: a2.id, - columnId - }); - const cellB = cells.find( - (c2) => c2.columnId === columnId && c2.rowId === b2.id - ); - if (!cellB) - throw new CellNotFoundError({ - rowId: b2.id, - columnId - }); - const markdownA = cellA.markdown; - const markdownB = cellB.markdown; - if (markdownA === "" && markdownB !== "") - return 1; - if (markdownA !== "" && markdownB === "") - return -1; - if (markdownA === "" && markdownB === "") - return 0; - if (sortDir === "asc" /* ASC */) { - return parseFloat(markdownA) - parseFloat(markdownB); - } else if (sortDir === "desc" /* DESC */) { - return parseFloat(markdownB) - parseFloat(markdownA); - } else { - return 0; - } - }); - return newRows; - } - sortByCheckbox(columnId, rows, cells, sortDir) { - const newRows = [...rows]; - newRows.sort((a2, b2) => { - const cellA = cells.find( - (c2) => c2.columnId === columnId && c2.rowId === a2.id - ); - if (!cellA) - throw new CellNotFoundError({ - rowId: a2.id, - columnId - }); - const cellB = cells.find( - (c2) => c2.columnId === columnId && c2.rowId === b2.id - ); - if (!cellB) - throw new CellNotFoundError({ - rowId: b2.id, - columnId - }); - const isCheckedA = isCheckboxChecked(cellA.markdown); - const isCheckedB = isCheckboxChecked(cellB.markdown); - if (sortDir === "asc" /* ASC */) { - if (isCheckedA && !isCheckedB) - return 1; - if (!isCheckedA && isCheckedB) - return -1; - return 0; - } else if (sortDir === "desc" /* DESC */) { - if (!isCheckedA && isCheckedB) - return 1; - if (isCheckedA && !isCheckedB) - return -1; - return 0; - } else { - return 0; - } - }); - return newRows; - } - sortByDate(columnId, rows, cells, sortDir) { - const newRows = [...rows]; - newRows.sort((a2, b2) => { - const cellA = cells.find( - (c2) => c2.columnId === columnId && c2.rowId === a2.id - ); - if (!cellA) - throw new CellNotFoundError({ - rowId: a2.id, - columnId - }); - const cellB = cells.find( - (c2) => c2.columnId === columnId && c2.rowId === b2.id - ); - if (!cellB) - throw new CellNotFoundError({ - rowId: b2.id, - columnId - }); - const dateTimeA = cellA.dateTime || 0; - const dateTimeB = cellB.dateTime || 0; - if (sortDir === "asc" /* ASC */) { - return dateTimeA - dateTimeB; - } else if (sortDir === "desc" /* DESC */) { - return dateTimeB - dateTimeA; - } else { - return 0; - } - }); - return newRows; - } - sortByCreationTime(rows, sortDir) { - const newRows = [...rows]; - newRows.sort((a2, b2) => { - if (sortDir === "asc" /* ASC */) { - return a2.creationTime - b2.creationTime; - } else if (sortDir === "desc" /* DESC */) { - return b2.creationTime - a2.creationTime; - } else { - return 0; - } - }); - return newRows; - } - sortByLastEditedTime(rows, sortDir) { - const newRows = [...rows]; - newRows.sort((a2, b2) => { - if (sortDir === "asc" /* ASC */) { - return a2.lastEditedTime - b2.lastEditedTime; - } else if (sortDir === "desc" /* DESC */) { - return b2.lastEditedTime - a2.lastEditedTime; - } else { - return 0; - } - }); - return newRows; - } - sortByDir(columnId, columnType, sortDir, columns, rows, cells) { - if (columnType === "number" /* NUMBER */ || columnType === "currency" /* CURRENCY */) { - return this.sortByNumber(columnId, rows, cells, sortDir); - } else if (columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */) { - return this.sortByTag(columnId, columns, rows, cells, sortDir); - } else if (columnType === "date" /* DATE */) { - return this.sortByDate(columnId, rows, cells, sortDir); - } else if (columnType === "last-edited-time" /* LAST_EDITED_TIME */) { - return this.sortByLastEditedTime(rows, sortDir); - } else if (columnType === "creation-time" /* CREATION_TIME */) { - return this.sortByCreationTime(rows, sortDir); - } else if (columnType === "checkbox" /* CHECKBOX */) { - return this.sortByCheckbox(columnId, rows, cells, sortDir); - } else { - return this.sortByMarkdown(columnId, rows, cells, sortDir); - } - } - sortByIndex(rows) { - const newRows = [...rows]; - newRows.sort((a2, b2) => { - return a2.index - b2.index; - }); - return newRows; - } - execute(prevState) { - super.onExecute(); - const { columns, bodyRows, bodyCells } = prevState.model; - const sortedColumn = columns.find( - (columns2) => columns2.sortDir !== "default" /* NONE */ - ); - this.previousRowSort = bodyRows.map((row) => ({ - id: row.id, - index: row.index - })); - let newBodyRows = [...bodyRows]; - if (sortedColumn) { - newBodyRows = this.sortByDir( - sortedColumn.id, - sortedColumn.type, - sortedColumn.sortDir, - columns, - bodyRows, - bodyCells - ); - } else { - newBodyRows = this.sortByIndex(bodyRows); - } - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - bodyRows: newBodyRows - }) - }); - } - redo(prevState) { - super.onRedo(); - return this.execute(prevState); - } - undo(prevState) { - super.onUndo(); - const { bodyRows } = prevState.model; - const newBodyRows = this.previousRowSort.map((prev) => { - const row = bodyRows.find((row2) => row2.id === prev.id); - if (!row) - throw new RowNotFoundError(prev.id); - return __spreadProps(__spreadValues({}, row), { - index: prev.index - }); - }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - bodyRows: newBodyRows - }) - }); - } -}; - -// src/shared/table-state/table-state-context.tsx -var TableStateContext = import_react11.default.createContext(null); -var useTableState = () => { - const value = import_react11.default.useContext(TableStateContext); - if (value === null) { - throw new Error( - "useTableState() called without a in the tree." - ); - } - return value; -}; -function TableStateProvider({ - initialState: initialState2, - onSaveState, - children -}) { - const [tableState, setTableState] = import_react11.default.useState(initialState2); - const [searchText, setSearchText] = import_react11.default.useState(""); - const [isSearchBarVisible, setSearchBarVisible] = import_react11.default.useState(false); - const [resizingColumnId, setResizingColumnId] = import_react11.default.useState(null); - const [history, setHistory] = import_react11.default.useState([ - null - ]); - const [position, setPosition] = import_react11.default.useState(0); - const logger = useLogger(); - const { appId } = useMountState(); - const isMountedRef = import_react11.default.useRef(false); - import_react11.default.useEffect(() => { - if (!isMountedRef.current) { - isMountedRef.current = true; - return; - } - onSaveState(appId, tableState); - }, [appId, tableState, onSaveState]); - function handleToggleSearchBar() { - setSearchBarVisible((prevState) => !prevState); - } - const undo = import_react11.default.useCallback(() => { - if (position > 0) { - logger("handleUndoEvent"); - const currentPosition = position - 1; - setPosition(currentPosition); - const command = history[position]; - if (command !== null) { - logger(command.constructor.name + ".undo"); - let newState = command.undo(tableState); - if (command.shouldSortRows) { - newState = new RowSortCommand().execute(newState); - } - setTableState(newState); - } - } - }, [position, history, tableState, logger]); - const redo = import_react11.default.useCallback(() => { - if (position < history.length - 1) { - logger("handleRedoEvent"); - const currentPosition = position + 1; - setPosition(currentPosition); - const command = history[currentPosition]; - if (command !== null) { - logger(command.constructor.name + ".redo"); - let newState = command.redo(tableState); - if (command.shouldSortRows) { - newState = new RowSortCommand().execute(newState); - } - setTableState(newState); - } - } - }, [position, history, tableState, logger]); - const doCommand = import_react11.default.useCallback( - (command) => { - setHistory((prevState) => { - if (position < history.length - 1) { - const newState2 = prevState.slice(0, position + 1); - return [...newState2, command]; - } else { - return [...prevState, command]; - } - }); - setPosition((prevState) => prevState + 1); - let newState = command.execute(tableState); - if (command.shouldSortRows) { - newState = new RowSortCommand().execute(newState); - } - setTableState(newState); - }, - [position, history, tableState] - ); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TableStateContext.Provider, { - value: { - tableState, - setTableState, - doCommand, - commandRedo: redo, - commandUndo: undo, - isSearchBarVisible, - searchText, - resizingColumnId, - setResizingColumnId, - toggleSearchBar: handleToggleSearchBar, - setSearchText - }, - children - }); -} - // src/shared/dragging/drag-context.tsx -var import_react12 = __toESM(require_react()); -var DragContext = import_react12.default.createContext(null); +var import_react7 = __toESM(require_react()); +var import_jsx_runtime3 = __toESM(require_jsx_runtime()); +var DragContext = import_react7.default.createContext(null); var useDragContext = () => { - const value = import_react12.default.useContext(DragContext); + const value = import_react7.default.useContext(DragContext); if (value === null) { throw new Error( "useDragContext() called without a in the tree." @@ -46089,16 +47147,34 @@ var useDragContext = () => { return value; }; function DragProvider({ children }) { - const [dragData, setDragData] = import_react12.default.useState(null); - const [touchDropZone, setTouchDropZone] = import_react12.default.useState( + const [dragData, setDragData] = import_react7.default.useState(null); + const [touchDropZone, setTouchDropZone] = import_react7.default.useState( null ); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(DragContext.Provider, { - value: { dragData, touchDropZone, setDragData, setTouchDropZone }, - children - }); + return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( + DragContext.Provider, + { + value: { dragData, touchDropZone, setDragData, setTouchDropZone }, + children + } + ); } +// src/shared/dragging/utils.ts +var import_lodash6 = __toESM(require_lodash()); + +// src/shared/sort-utils.ts +var confirmSortOrderChange = (state) => { + const { columns } = state.model; + const isSorted = columns.find((column) => column.sortDir !== "default" /* NONE */); + if (isSorted) { + return window.confirm( + "This will set the default row sorting as the current sort order. Do you wish to continue?\n\nIf not, please remove the sort filter before preforming this operation." + ); + } + return true; +}; + // src/shared/dragging/utils.ts var getRowId = (rowEl) => { const td = rowEl.firstChild; @@ -46107,28 +47183,18 @@ var getRowId = (rowEl) => { const id2 = td.getAttribute("data-row-id"); return id2 != null ? id2 : null; }; -var dropDrag = (targetRowId, dragData, tableState, onTableStateChange) => { +var dropDrag = (targetRowId, dragData, state, onLoomStateChange) => { if (dragData === null) throw Error("No drag data found"); if (dragData.type !== "row") return; - const { columns } = tableState.model; - const isSorted = columns.find((column) => column.sortDir !== "default" /* NONE */); - if (isSorted) { - if (!window.confirm( - "This will set your default sorting to the current sort filter. Do you wish to continue?\n\nIf not, please remove your sort filter before dragging a row." - )) - return; - } - onTableStateChange((prevState) => { - const { bodyRows, columns: columns2 } = prevState.model; - const draggedElIndex = bodyRows.findIndex( - (row) => row.id === dragData.id - ); - const targetElIndex = bodyRows.findIndex( - (row) => row.id === targetRowId - ); - const newRows = structuredClone(bodyRows); + if (!confirmSortOrderChange(state)) + return; + onLoomStateChange((prevState) => { + const { rows, columns } = prevState.model; + const draggedElIndex = rows.findIndex((row) => row.id === dragData.id); + const targetElIndex = rows.findIndex((row) => row.id === targetRowId); + const newRows = (0, import_lodash6.cloneDeep)(rows); const draggedEl = newRows[draggedElIndex]; newRows.splice(draggedElIndex, 1); newRows.splice(targetElIndex, 0, draggedEl); @@ -46138,7 +47204,7 @@ var dropDrag = (targetRowId, dragData, tableState, onTableStateChange) => { return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { bodyRows: newRows, - columns: columns2.map((column) => { + columns: columns.map((column) => { return __spreadProps(__spreadValues({}, column), { sortDir: "default" /* NONE */ }); @@ -46148,16 +47214,11 @@ var dropDrag = (targetRowId, dragData, tableState, onTableStateChange) => { }); }; -// src/react/table-app/table/table-body-row.tsx -function TableBodyRow(_a) { - var _b = _a, { - style, - children - } = _b, props = __objRest(_b, [ - "style", - "children" - ]); - const { tableState, setTableState } = useTableState(); +// src/react/loom-app/table/body-row.tsx +var import_jsx_runtime4 = __toESM(require_jsx_runtime()); +function BodyRow(_a2) { + var _b = _a2, { style, children } = _b, props = __objRest(_b, ["style", "children"]); + const { loomState, setLoomState } = useLoomState(); const { dragData, setDragData } = useDragContext(); function handleDragStart(e) { const el = e.target; @@ -46180,60 +47241,80 @@ function TableBodyRow(_a) { const targetId = getRowId(target); if (!targetId) return; - dropDrag(targetId, dragData, tableState, setTableState); + dropDrag(targetId, dragData, loomState, setLoomState); } function handleDragOver(e) { e.preventDefault(); } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("tr", __spreadProps(__spreadValues({ - onDrop: handleDrop, - onDragStart: handleDragStart, - onDragEnd: handleDragEnd, - onDragOver: handleDragOver - }, props), { - style, - children - })); + return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( + "div", + __spreadProps(__spreadValues({ + className: "dataloom-row", + onDrop: handleDrop, + onDragStart: handleDragStart, + onDragEnd: handleDragEnd, + onDragOver: handleDragOver + }, props), { + style, + children + }) + ); } -// node_modules/@emotion/react/dist/emotion-react.cjs.mjs -var import_emotion_react_cjs = __toESM(require_emotion_react_cjs(), 1); +// src/react/loom-app/table/hooks.tsx +var import_react8 = __toESM(require_react()); +var useStickyOffset = (ref, numFrozenColumns, columnIndex) => { + const [columnWidths, setColumnWidths] = import_react8.default.useState([]); + import_react8.default.useEffect(() => { + if (!ref.current) + return; + if (columnIndex + 1 > numFrozenColumns) + return; + const tableEl = ref.current.closest(".dataloom-table"); + if (!tableEl) + return; + const columns = tableEl.querySelectorAll(".dataloom-cell--header"); + if (!columns) + return; + const observers = []; + columns.forEach((column, i2) => { + if (i2 < columnIndex) { + const observer = new ResizeObserver(() => { + const rect = column.getBoundingClientRect(); + setColumnWidths((prevState) => { + const newState = [...prevState]; + newState[i2] = rect.width; + return newState; + }); + }); + observer.observe(column); + observers.push(observer); + } + }); + return () => { + observers.forEach((observer) => observer.disconnect()); + }; + }, [numFrozenColumns, columnIndex, ref]); + const offset = columnWidths.reduce((a2, b2) => a2 + b2, 0); + return offset; +}; -// src/react/table-app/table/table-header-cell.tsx -var cellStyle = import_emotion_react_cjs.css` - position: sticky; - top: 0; - z-index: 1; - background-color: var(--table-header-background); - border-bottom: 1px solid var(--table-border-color); - border-left: 1px solid var(--table-border-color); - border-right: 0; - padding: 0; - font-weight: 400; - overflow: visible; - text-align: start; - color: var(--text-normal); //Prevents dimming on hover in embedded table - - &:first-of-type { - border-top: 0; - border-left: 0; - border-bottom: 0; - background-color: var(--background-primary); - } - - &:last-of-type { - border-top: 0; - border-bottom: 0; - background-color: var(--background-primary); - } -`; -function TableHeaderCell({ +// src/react/loom-app/table/header-cell.tsx +var import_react9 = __toESM(require_react()); +var import_lodash7 = __toESM(require_lodash()); +var import_jsx_runtime5 = __toESM(require_jsx_runtime()); +function HeaderCell({ + index, columnId, - content, - isDraggable + isDraggable, + numFrozenColumns, + content }) { - const { setTableState } = useTableState(); + const { setLoomState } = useLoomState(); const { dragData, touchDropZone, setDragData, setTouchDropZone } = useDragContext(); + const ref = import_react9.default.useRef(null); + const leftOffset = useStickyOffset(ref, numFrozenColumns, index); + const shouldFreeze = index + 1 <= numFrozenColumns; function startDrag(el) { const columnId2 = getColumnId(el); if (!columnId2) @@ -46248,7 +47329,7 @@ function TableHeaderCell({ throw new Error("No drag data found"); if (dragData.type !== "column") return; - setTableState((prevState) => { + setLoomState((prevState) => { const { columns } = prevState.model; const draggedElIndex = columns.findIndex( (column) => column.id === dragData.id @@ -46256,13 +47337,29 @@ function TableHeaderCell({ const targetElIndex = columns.findIndex( (column) => column.id === targetRowId ); - const newColumns = structuredClone(columns); + const newColumns = (0, import_lodash7.cloneDeep)(columns); const draggedEl = newColumns[draggedElIndex]; newColumns.splice(draggedElIndex, 1); newColumns.splice(targetElIndex, 0, draggedEl); + const nextRows = prevState.model.rows.map((row) => { + const { cells } = row; + const nextCells = cells.sort((a2, b2) => { + const aIndex = newColumns.findIndex( + (column) => column.id === a2.columnId + ); + const bIndex = newColumns.findIndex( + (column) => column.id === b2.columnId + ); + return aIndex - bIndex; + }); + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); + }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - columns: newColumns + columns: newColumns, + rows: nextRows }) }); }); @@ -46271,13 +47368,13 @@ function TableHeaderCell({ const child = thEl.firstChild; if (!child) return; - if (child.classList.contains("NLT__focusable")) - thEl.classList.add("NLT__th--drag-over"); + if (child.classList.contains("dataloom-focusable")) + thEl.classList.add("dataloom-th--drag-over"); } function removeDragHover() { - const el = document.querySelector(".NLT__th--drag-over"); + const el = document.querySelector(".dataloom-th--drag-over"); if (el) - el.classList.remove("NLT__th--drag-over"); + el.classList.remove("dataloom-th--drag-over"); } function getColumnId(columnEl) { const id2 = columnEl.getAttribute("data-column-id"); @@ -46316,7 +47413,9 @@ function TableHeaderCell({ const elementUnderneath = document.elementFromPoint(clientX, clientY); if (!elementUnderneath) return; - const thEl = elementUnderneath.closest("th"); + const thEl = elementUnderneath.closest( + ".dataloom-cell--header" + ); if (!thEl) return; const targetId = getColumnId(thEl); @@ -46354,240 +47453,93 @@ function TableHeaderCell({ setTouchDropZone(null); removeDragHover(); } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("th", __spreadProps(__spreadValues({ - "data-column-id": columnId, - css: cellStyle - }, isDraggable && { - draggable: true, - onDrop: handleDrop, - onDragStart: handleDragStart, - onDragOver: handleDragOver, - onDragEnd: handleDragEnd, - onTouchStart: handleTouchStart, - onTouchMove: handleTouchMove, - onTouchEnd: handleTouchEnd, - onTouchCancel: handleTouchCancel - }), { - children: content - })); -} - -// src/shared/hooks.ts -var import_react14 = __toESM(require_react()); - -// node_modules/uuid/dist/esm-browser/rng.js -var getRandomValues; -var rnds8 = new Uint8Array(16); -function rng() { - if (!getRandomValues) { - getRandomValues = typeof crypto !== "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto); - if (!getRandomValues) { - throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); - } - } - return getRandomValues(rnds8); -} - -// node_modules/uuid/dist/esm-browser/regex.js -var regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; - -// node_modules/uuid/dist/esm-browser/validate.js -function validate(uuid) { - return typeof uuid === "string" && regex_default.test(uuid); -} -var validate_default = validate; - -// node_modules/uuid/dist/esm-browser/stringify.js -var byteToHex = []; -for (let i2 = 0; i2 < 256; ++i2) { - byteToHex.push((i2 + 256).toString(16).slice(1)); -} -function unsafeStringify(arr, offset = 0) { - return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); -} - -// node_modules/uuid/dist/esm-browser/parse.js -function parse(uuid) { - if (!validate_default(uuid)) { - throw TypeError("Invalid UUID"); - } - let v2; - const arr = new Uint8Array(16); - arr[0] = (v2 = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v2 >>> 16 & 255; - arr[2] = v2 >>> 8 & 255; - arr[3] = v2 & 255; - arr[4] = (v2 = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v2 & 255; - arr[6] = (v2 = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v2 & 255; - arr[8] = (v2 = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v2 & 255; - arr[10] = (v2 = parseInt(uuid.slice(24, 36), 16)) / 1099511627776 & 255; - arr[11] = v2 / 4294967296 & 255; - arr[12] = v2 >>> 24 & 255; - arr[13] = v2 >>> 16 & 255; - arr[14] = v2 >>> 8 & 255; - arr[15] = v2 & 255; - return arr; -} -var parse_default = parse; - -// node_modules/uuid/dist/esm-browser/v35.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); - const bytes = []; - for (let i2 = 0; i2 < str.length; ++i2) { - bytes.push(str.charCodeAt(i2)); - } - return bytes; -} -var DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"; -var URL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"; -function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - var _namespace; - if (typeof value === "string") { - value = stringToBytes(value); - } - if (typeof namespace === "string") { - namespace = parse_default(namespace); - } - if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) { - throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)"); - } - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 15 | version; - bytes[8] = bytes[8] & 63 | 128; - if (buf) { - offset = offset || 0; - for (let i2 = 0; i2 < 16; ++i2) { - buf[offset + i2] = bytes[i2]; + let className = "dataloom-cell dataloom-cell--header"; + if (shouldFreeze) + className += " dataloom-cell--freeze dataloom-cell--freeze-header"; + return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)( + "div", + __spreadProps(__spreadValues({ + className, + ref, + "data-column-id": columnId, + style: { + left: shouldFreeze ? numToPx(leftOffset) : void 0 } - return buf; - } - return unsafeStringify(bytes); - } - try { - generateUUID.name = name; - } catch (err) { - } - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; + }, isDraggable && { + draggable: true, + onDrop: handleDrop, + onDragStart: handleDragStart, + onDragOver: handleDragOver, + onDragEnd: handleDragEnd, + onTouchStart: handleTouchStart, + onTouchMove: handleTouchMove, + onTouchEnd: handleTouchEnd, + onTouchCancel: handleTouchCancel + }), { + children: content + }) + ); } -// node_modules/uuid/dist/esm-browser/native.js -var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); -var native_default = { - randomUUID -}; +// src/react/loom-app/table/body-cell.tsx +var import_react10 = __toESM(require_react()); +var import_jsx_runtime6 = __toESM(require_jsx_runtime()); +function BodyCell({ + rowId, + index, + numFrozenColumns, + content +}) { + const ref = import_react10.default.useRef(null); + const leftOffset = useStickyOffset(ref, numFrozenColumns, index); + const shouldFreeze = index + 1 <= numFrozenColumns; + let className = "dataloom-cell dataloom-cell--body"; + if (shouldFreeze) + className += " dataloom-cell--freeze"; + return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( + "div", + { + className, + ref, + "data-row-id": index === 0 ? rowId : void 0, + style: { left: shouldFreeze ? numToPx(leftOffset) : void 0 }, + children: content + } + ); +} -// node_modules/uuid/dist/esm-browser/v4.js -function v4(options, buf, offset) { - if (native_default.randomUUID && !buf && !options) { - return native_default.randomUUID(); - } - options = options || {}; - const rnds = options.random || (options.rng || rng)(); - rnds[6] = rnds[6] & 15 | 64; - rnds[8] = rnds[8] & 63 | 128; - if (buf) { - offset = offset || 0; - for (let i2 = 0; i2 < 16; ++i2) { - buf[offset + i2] = rnds[i2]; +// src/react/loom-app/table/footer-cell.tsx +var import_react11 = __toESM(require_react()); +var import_jsx_runtime7 = __toESM(require_jsx_runtime()); +function FooterCell({ + index, + content, + numFrozenColumns +}) { + const ref = import_react11.default.useRef(null); + const leftOffset = useStickyOffset(ref, numFrozenColumns, index); + const shouldFreeze = index + 1 <= numFrozenColumns; + let className = "dataloom-cell dataloom-cell--footer"; + if (shouldFreeze) + className += " dataloom-cell--freeze dataloom-cell--freeze-footer"; + return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + "div", + { + ref, + className, + style: { + left: shouldFreeze ? numToPx(leftOffset) : void 0 + }, + children: content } - return buf; - } - return unsafeStringify(rnds); + ); } -var v4_default = v4; - -// node_modules/uuid/dist/esm-browser/sha1.js -function f2(s2, x2, y2, z2) { - switch (s2) { - case 0: - return x2 & y2 ^ ~x2 & z2; - case 1: - return x2 ^ y2 ^ z2; - case 2: - return x2 & y2 ^ x2 & z2 ^ y2 & z2; - case 3: - return x2 ^ y2 ^ z2; - } -} -function ROTL(x2, n2) { - return x2 << n2 | x2 >>> 32 - n2; -} -function sha1(bytes) { - const K = [1518500249, 1859775393, 2400959708, 3395469782]; - const H2 = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]; - if (typeof bytes === "string") { - const msg = unescape(encodeURIComponent(bytes)); - bytes = []; - for (let i2 = 0; i2 < msg.length; ++i2) { - bytes.push(msg.charCodeAt(i2)); - } - } else if (!Array.isArray(bytes)) { - bytes = Array.prototype.slice.call(bytes); - } - bytes.push(128); - const l2 = bytes.length / 4 + 2; - const N2 = Math.ceil(l2 / 16); - const M2 = new Array(N2); - for (let i2 = 0; i2 < N2; ++i2) { - const arr = new Uint32Array(16); - for (let j2 = 0; j2 < 16; ++j2) { - arr[j2] = bytes[i2 * 64 + j2 * 4] << 24 | bytes[i2 * 64 + j2 * 4 + 1] << 16 | bytes[i2 * 64 + j2 * 4 + 2] << 8 | bytes[i2 * 64 + j2 * 4 + 3]; - } - M2[i2] = arr; - } - M2[N2 - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32); - M2[N2 - 1][14] = Math.floor(M2[N2 - 1][14]); - M2[N2 - 1][15] = (bytes.length - 1) * 8 & 4294967295; - for (let i2 = 0; i2 < N2; ++i2) { - const W2 = new Uint32Array(80); - for (let t2 = 0; t2 < 16; ++t2) { - W2[t2] = M2[i2][t2]; - } - for (let t2 = 16; t2 < 80; ++t2) { - W2[t2] = ROTL(W2[t2 - 3] ^ W2[t2 - 8] ^ W2[t2 - 14] ^ W2[t2 - 16], 1); - } - let a2 = H2[0]; - let b2 = H2[1]; - let c2 = H2[2]; - let d2 = H2[3]; - let e = H2[4]; - for (let t2 = 0; t2 < 80; ++t2) { - const s2 = Math.floor(t2 / 20); - const T = ROTL(a2, 5) + f2(s2, b2, c2, d2) + e + K[s2] + W2[t2] >>> 0; - e = d2; - d2 = c2; - c2 = ROTL(b2, 30) >>> 0; - b2 = a2; - a2 = T; - } - H2[0] = H2[0] + a2 >>> 0; - H2[1] = H2[1] + b2 >>> 0; - H2[2] = H2[2] + c2 >>> 0; - H2[3] = H2[3] + d2 >>> 0; - H2[4] = H2[4] + e >>> 0; - } - return [H2[0] >> 24 & 255, H2[0] >> 16 & 255, H2[0] >> 8 & 255, H2[0] & 255, H2[1] >> 24 & 255, H2[1] >> 16 & 255, H2[1] >> 8 & 255, H2[1] & 255, H2[2] >> 24 & 255, H2[2] >> 16 & 255, H2[2] >> 8 & 255, H2[2] & 255, H2[3] >> 24 & 255, H2[3] >> 16 & 255, H2[3] >> 8 & 255, H2[3] & 255, H2[4] >> 24 & 255, H2[4] >> 16 & 255, H2[4] >> 8 & 255, H2[4] & 255]; -} -var sha1_default = sha1; - -// node_modules/uuid/dist/esm-browser/v5.js -var v5 = v35("v5", 80, sha1_default); -var v5_default = v5; // src/shared/hooks.ts +var import_react12 = __toESM(require_react()); var useForceUpdate = () => { - const [time, setTime] = import_react14.default.useState(0); - return [time, import_react14.default.useCallback(() => setTime(Date.now()), [])]; + const [time, setTime] = import_react12.default.useState(0); + return [time, import_react12.default.useCallback(() => setTime(Date.now()), [])]; }; var useCompare = (value, runOnMount = true) => { const prevValue = usePrevious(value); @@ -46596,14 +47548,14 @@ var useCompare = (value, runOnMount = true) => { return prevValue !== value; }; var usePrevious = (value) => { - const ref = import_react14.default.useRef(); - import_react14.default.useEffect(() => { + const ref = import_react12.default.useRef(); + import_react12.default.useEffect(() => { ref.current = value; }); return ref.current; }; -var useInputSelection = (inputRef, value) => { - import_react14.default.useEffect(() => { +var usePlaceCursorAtEnd = (inputRef, value) => { + import_react12.default.useEffect(() => { function setSelection() { if (inputRef.current) { inputRef.current.selectionStart = value.length; @@ -46614,173 +47566,143 @@ var useInputSelection = (inputRef, value) => { }, [inputRef]); }; var useUUID = () => { - const [uuid] = import_react14.default.useState(v4_default()); + const [uuid] = import_react12.default.useState(v4_default()); return uuid; }; -// src/react/table-app/table/index.tsx -function Table2({ headerRows, bodyRows, footerRows }) { - const tableRef = import_react15.default.useRef(null); +// src/react/loom-app/table/index.tsx +var import_jsx_runtime8 = __toESM(require_jsx_runtime()); +var Table2 = import_react13.default.forwardRef(function Table3({ headerRow, bodyRows, footer, numFrozenColumns }, ref) { const previousRowLength = usePrevious(bodyRows.length); - import_react15.default.useEffect(() => { - var _a; + import_react13.default.useEffect(() => { + var _a2; if (previousRowLength === void 0) return; if (previousRowLength < bodyRows.length) - (_a = tableRef.current) == null ? void 0 : _a.scrollToIndex(bodyRows.length - 1); - }, [previousRowLength, bodyRows.length]); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TableVirtuoso, { - tabIndex: -1, - ref: tableRef, - overscan: 10, - style: { - width: "100%", - height: "100%" - }, - totalCount: bodyRows.length, - components: Components, - fixedHeaderContent: () => headerRows.map((row) => { - const { id: rowId, cells } = row; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("tr", { - css: import_emotion_react_cjs.css` - background-color: var(--background-secondary); - `, - children: cells.map((cell, i2) => { - const { id: cellId, columnId, content } = cell; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TableHeaderCell, { - columnId, - content, - isDraggable: i2 < cells.length - 1 - }, cellId); - }) - }, rowId); - }), - fixedFooterContent: () => footerRows.map((row) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("tr", { - children: row.cells.map((cell) => { - const { id: id2, content } = cell; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("td", { - className: "NLT__footer-td", - css: import_emotion_react_cjs.css` - padding: 0px; - `, - children: content - }, id2); - }) - }, row.id)), - itemContent: (index) => { - const row = bodyRows[index]; - const { id: rowId, cells } = row; - return cells.map((cell, i2) => { - const { id: cellId, content } = cell; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("td", { - "data-row-id": i2 === 0 ? rowId : void 0, - css: import_emotion_react_cjs.css` - border-top: 0; - border-bottom: 1px solid - var(--table-border-color); - border-left: 1px solid var(--table-border-color); - border-right: 0; - padding: 0; - overflow: visible; - vertical-align: top; - color: var( - --text-normal - ); //Prevents hover style in embedded table - color: var(--text-normal); - /** - * This is a hack to make the children have something to calculate their height percentage from. - * i.e. if you have a child with height: 100%, it will be 100% of the height of the td, only - * if the td has a set height value. - * This doesn't represent the actual height of the td, as that is set by HTML - */ - height: 1px; - - &:first-of-type { - border-left: 0; - border-bottom: 0; - } - - &:last-child { - border-bottom: 0; - } - `, - className: "NLT__body-td", - children: content - }, cellId); - }); + (_a2 = ref.current) == null ? void 0 : _a2.scrollToIndex(bodyRows.length - 1); + }, [ref, previousRowLength, bodyRows.length]); + return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( + TableVirtuoso, + { + ref, + overscan: 10, + style: { + width: "100%", + height: "100%" + }, + totalCount: bodyRows.length, + components: Components, + fixedHeaderContent: () => { + const { cells } = headerRow; + return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "dataloom-row", children: cells.map((cell, i2) => { + const { columnId, content } = cell; + return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( + HeaderCell, + { + index: i2, + numFrozenColumns, + columnId, + content, + isDraggable: i2 < cells.length - 1 + }, + columnId + ); + }) }); + }, + fixedFooterContent: () => { + if (!footer) + return null; + return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "dataloom-row", children: footer.cells.map((cell, i2) => { + const { id: id2, content } = cell; + return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( + FooterCell, + { + index: i2, + numFrozenColumns, + content + }, + id2 + ); + }) }); + }, + itemContent: (index) => { + const row = bodyRows[index]; + const { id: rowId, cells } = row; + return cells.map((cell, i2) => { + const { id: id2, content } = cell; + return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( + BodyCell, + { + rowId, + content, + index: i2, + numFrozenColumns + }, + id2 + ); + }); + } } - }); -} + ); +}); var Components = { - Table: (_a) => { - var _b = _a, { style } = _b, props = __objRest(_b, ["style"]); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("table", __spreadProps(__spreadValues({ - css: import_emotion_react_cjs.css` - table-layout: fixed; - border-collapse: separate; - ` - }, props), { - style, - className: "NLT__table" - })); + Table: (_a2) => { + var props = __objRest(_a2, []); + return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", __spreadValues({ className: "dataloom-table" }, props)); }, + TableHead: import_react13.default.forwardRef((_b, ref) => { + var props = __objRest(_b, []); + return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( + "div", + __spreadProps(__spreadValues({ + className: "dataloom-header" + }, props), { + style: { + position: void 0, + top: void 0, + zIndex: void 0 + }, + ref + }) + ); + }), TableRow: (_c) => { var _d = _c, { style } = _d, props = __objRest(_d, ["style"]); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TableBodyRow, __spreadProps(__spreadValues({}, props), { - style - })); + return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(BodyRow, __spreadProps(__spreadValues({}, props), { style })); }, - TableBody: import_react15.default.forwardRef((_e, ref) => { + TableBody: import_react13.default.forwardRef((_e, ref) => { var _f = _e, { style } = _f, props = __objRest(_f, ["style"]); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("tbody", __spreadProps(__spreadValues({}, props), { - style, - ref - })); + return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", __spreadProps(__spreadValues({ className: "dataloom-body" }, props), { style, ref })); }), - TableFoot: import_react15.default.forwardRef((_g, ref) => { - var _h = _g, { style } = _h, props = __objRest(_h, ["style"]); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("tfoot", __spreadProps(__spreadValues({ - css: import_emotion_react_cjs.css` - position: sticky; - bottom: 0; - background-color: var(--background-primary); - - & > tr:first-of-type > td { - border-bottom: 1px solid var(--table-border-color); - } - - & > tr:first-of-type > td:nth-of-type(1) { - border-bottom: 0; - } - - & > tr:first-of-type > td:nth-of-type(2) { - border-left: 1px solid var(--table-border-color); - } - - & > tr:first-of-type > td:last-child { - border-left: 1px solid var(--table-border-color); - border-bottom: 0; - } - ` - }, props), { - style, - ref - })); - }) + TableFoot: import_react13.default.forwardRef((_g, ref) => { + var props = __objRest(_g, []); + return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( + "div", + __spreadProps(__spreadValues({ + className: "dataloom-footer" + }, props), { + style: { + position: void 0, + bottom: void 0, + zIndex: void 0 + }, + ref + }) + ); + }), + FillerRow: ({ height }) => { + return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "dataloom-row", style: { height } }); + } }; +var table_default = Table2; // src/react/shared/icon/index.tsx -var import_react17 = __toESM(require_react()); - -// src/obsidian-shim/build/set-icon.ts -var import_obsidian3 = require("obsidian"); -var setIcon = (div, name) => { - (0, import_obsidian3.setIcon)(div, name); -}; +var import_obsidian7 = require("obsidian"); +var import_react14 = __toESM(require_react()); // src/shared/render/utils.ts -var replaceNewLinesWithBr = (markdown) => { - const lines = markdown.split("\n"); +var replaceNewLinesWithBr = (content) => { + const lines = content.split("\n"); let updated = ""; lines.forEach((line) => { if (line === "") { @@ -46806,88 +47728,146 @@ var getDynamicSize = (defaultValue, value) => { if (typeof value === "string") return value; const { base, mobile } = value; - if (isMobileSize()) { + if (isSmallScreenSize()) { return mobile != null ? mobile : base; } else { return base; } }; -var isMobileSize = () => { +var isSmallScreenSize = () => { return window.innerWidth <= 480; }; var hasDarkTheme = () => { - var _a; + var _a2; const el = document.querySelector("body"); - return (_a = el == null ? void 0 : el.className.includes("theme-dark")) != null ? _a : false; + return (_a2 = el == null ? void 0 : el.className.includes("theme-dark")) != null ? _a2 : false; }; // src/react/shared/icon/index.tsx +var import_jsx_runtime9 = __toESM(require_jsx_runtime()); function Icon({ + ariaLabel, lucideId, - size = "md", - color = "unset" + size = "sm", + color }) { - const ref = import_react17.default.useRef(null); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - ref: (node) => { - ref.current = node; - const div = document.createElement("div"); - div.style.display = "flex"; - div.style.color = color; - div.style.pointerEvents = "none"; - if (size === "sm") { - div.style.width = "0.9rem"; - div.style.height = "0.9rem"; - } else if (size === "md") { - div.style.width = "1rem"; - div.style.height = "1rem"; - } else if (size === "lg") { - div.style.width = "1.1rem"; - div.style.height = "1.1rem"; + const ref = import_react14.default.useRef(null); + let className = ""; + if (size === "sm") { + className += "dataloom-svg--sm"; + } else if (size === "md") { + className += "dataloom-svg--md"; + } else if (size === "lg") { + className += "dataloom-svg--lg"; + } else if (size === "xl") { + className += "dataloom-svg--xl"; + } + return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( + "div", + { + "aria-label": ariaLabel, + ref: (node) => { + ref.current = node; + const div = document.createElement("div"); + if (color) { + div.style.color = color; + } + (0, import_obsidian7.setIcon)(div, lucideId); + const svg = div.querySelector("svg"); + if (svg) { + svg.addClass("dataloom-svg"); + svg.addClass(className); + } + appendOrReplaceFirstChild(node, div); } - setIcon(div, lucideId); - appendOrReplaceFirstChild(node, div); } - }); + ); } -// src/react/shared/menu-trigger/index.tsx -var import_react20 = __toESM(require_react()); - -// src/shared/menu/menu-context.tsx +// src/react/shared/menu-button/index.tsx var import_react18 = __toESM(require_react()); -// src/shared/menu/focus-visible.ts -var focusMenuElement = (menuId) => { - const el = document.querySelector( - `[data-menu-id="${menuId}"]` +// src/react/shared/menu-trigger/index.tsx +var import_react17 = __toESM(require_react()); + +// src/shared/keyboard-event.ts +var import_obsidian8 = require("obsidian"); +var isWindowsUndoDown = (e) => e.ctrlKey && e.key === "z"; +var isWindowsRedoDown = (e) => e.ctrlKey && e.key === "y"; +var isMacUndoDown = (e) => e.metaKey && e.key === "z"; +var isMacRedoDown = (e) => e.metaKey && e.shiftKey && e.key === "z"; +var isInsertLineDown = (e) => { + return e.shiftKey && e.key === "Enter"; +}; +var isInsertLineAltDown = (e) => { + if (import_obsidian8.Platform.isMacOS) { + return e.metaKey && e.key === "Enter"; + } else if (import_obsidian8.Platform.isWin || import_obsidian8.Platform.isLinux) { + return e.altKey && e.key === "Enter"; + } +}; + +// src/react/shared/menu/hooks.ts +var import_react16 = __toESM(require_react()); +var import_lodash8 = __toESM(require_lodash()); + +// src/react/shared/menu/factory.ts +var createMenu = (level, shouldRequestOnClose, shouldFocusTriggerOnClose) => { + return { + id: "m" + v4_default(), + level, + shouldRequestOnClose, + shouldFocusTriggerOnClose + }; +}; +var createCloseRequest = (menuId, type) => { + return { + menuId, + type + }; +}; + +// src/react/shared/menu-provider/index.tsx +var import_react15 = __toESM(require_react()); +var import_jsx_runtime10 = __toESM(require_jsx_runtime()); +var MenuContext = import_react15.default.createContext(null); +var useMenuContext = () => { + const value = import_react15.default.useContext(MenuContext); + if (value === null) { + throw new Error( + "useMenuContext() called without a in the tree." + ); + } + return value; +}; +function MenuProvider({ children }) { + const [openMenus, setOpenMenus] = import_react15.default.useState([]); + const [closeRequests, setCloseRequests] = import_react15.default.useState([]); + return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( + MenuContext.Provider, + { + value: { openMenus, closeRequests, setOpenMenus, setCloseRequests }, + children + } ); - if (el) { - el.focus(); - addFocusVisibleClass(el); - } +} + +// src/react/loom-app/app/hooks/use-focus/utils.ts +var addFocusClass = (el) => { + if (!el) + return; + el.classList.add("dataloom-focus-visible"); }; -var addFocusVisibleClass = (el) => { - if (el) - el.classList.add("NLT__focus-visible"); +var removeCurrentFocusClass = () => { + const el = document.querySelector(".dataloom-focus-visible"); + if (!el) + return; + el.classList.remove("dataloom-focus-visible"); }; -var removeFocusVisibleClass = () => { - const el = document.querySelector(".NLT__focus-visible"); - if (el) - el.classList.remove("NLT__focus-visible"); -}; -var getFocusableLayerEl = (appId, topMenu) => { - const appEl = document.querySelector(`.NLT__app[data-id="${appId}"]`); - if (!appEl) - return null; - let layerEl = appEl; - if (topMenu) { - const { id: id2 } = topMenu; - const menuEl = document.querySelector(`.NLT__menu[data-id="${id2}"]`); - if (menuEl) - layerEl = menuEl; - } - return layerEl; +var getTopMenuEl = (topMenu, appId) => { + if (topMenu) + return document.getElementById(topMenu.id); + return document.getElementById(appId); }; var focusNextElement = (layerEl, focusableEls) => { const focusedEl = document.activeElement; @@ -46901,258 +47881,445 @@ var focusNextElement = (layerEl, focusableEls) => { return; } } - const selectedEl = layerEl.querySelector(".NLT__selected"); + const selectedEl = layerEl.querySelector(".dataloom-selected"); if (selectedEl) { selectedEl.focus(); } else { focusableEls[0].focus(); } }; - -// src/shared/menu/menu-context.tsx -var MenuContext = import_react18.default.createContext(null); -var useMenuState = () => { - const value = import_react18.default.useContext(MenuContext); - if (value === null) { - throw new Error( - "useMenu() called without a in the tree." - ); - } - return value; +var getFocusableElements = (el) => { + return el.querySelectorAll(".dataloom-focusable"); }; -function MenuProvider({ children }) { - const [currentMenus, setCurrentMenus] = import_react18.default.useState([]); - const logger = useLogger(); - const [menuCloseRequest, setMenuCloseRequest] = import_react18.default.useState(null); - const isMenuOpen = import_react18.default.useCallback( - (menu) => { - return currentMenus.find((m2) => m2.id === menu.id) !== void 0; - }, - [currentMenus] +var getNumOptionBarFocusableEls = (appEl) => { + const el = appEl.querySelector( + ".dataloom-option-bar" ); - const hasOpenMenu = import_react18.default.useCallback(() => { - return currentMenus.length !== 0; - }, [currentMenus]); - const getTopMenu = import_react18.default.useCallback(() => { - if (currentMenus.length === 0) - return null; - return currentMenus[currentMenus.length - 1]; - }, [currentMenus]); - const canOpenMenu = import_react18.default.useCallback( - (menu) => { - return currentMenus.find((m2) => m2.level === menu.level) === void 0 || currentMenus.length === 0; - }, - [currentMenus] + if (!el) + throw Error("No option bar found"); + return getFocusableElements(el).length; +}; +var getNumBottomBarFocusableEl = (appEl) => { + const el = appEl.querySelector( + ".dataloom-bottom-bar" ); - const openMenu = import_react18.default.useCallback( - (menu) => { - if (!canOpenMenu(menu)) - return; - setCurrentMenus((prev) => [...prev, menu]); - removeFocusVisibleClass(); - }, - [canOpenMenu] - ); - function closeAllMenus(shouldFocusTrigger = true) { - logger("MenuProvider closeAllMenus"); - if (currentMenus.length === 0) - return; - const menu = currentMenus[0]; - if (shouldFocusTrigger) { - const { id: id2 } = menu; - focusMenuElement(id2); - } - setCurrentMenus([]); - setMenuCloseRequest(null); + if (!el) + throw Error("No bottom bar found"); + return getFocusableElements(el).length; +}; +var isArrowKeyPressed = (e, isMenuOpen) => { + if (isMenuOpen) { + return e.key === "ArrowDown" || e.key === "ArrowUp"; } - const closeTopMenu = import_react18.default.useCallback( - (options) => { - logger("MenuProvider closeTopMenu"); - const { shouldFocusTrigger = true } = options || {}; - const menu = getTopMenu(); - if (!menu) - return; - if (shouldFocusTrigger) { - const { id: id2 } = menu; - focusMenuElement(id2); - } - setCurrentMenus((prev) => prev.slice(0, prev.length - 1)); - setMenuCloseRequest(null); - }, - [getTopMenu, logger] - ); - const requestCloseTopMenu = import_react18.default.useCallback( - (type) => { - const menu = getTopMenu(); - if (!menu) - return; - if (menu.shouldRequestOnClose) { - setMenuCloseRequest({ - id: menu.id, - requestTime: Date.now(), - type - }); - return; - } - closeTopMenu(); - }, - [closeTopMenu, getTopMenu] - ); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuContext.Provider, { - value: { - topMenu: getTopMenu(), - hasOpenMenu, - isMenuOpen, - openMenu, - canOpenMenu, - menuCloseRequest, - requestCloseTopMenu, - closeTopMenu, - closeAllMenus - }, - children - }); -} + return e.key === "ArrowDown" || e.key === "ArrowUp" || e.key === "ArrowLeft" || e.key === "ArrowRight"; +}; -// src/shared/keyboard-event.ts -var isWindowsUndoDown = (e) => e.ctrlKey && e.key === "z"; -var isWindowsRedoDown = (e) => e.ctrlKey && e.key === "y"; -var isMacUndoDown = (e) => e.metaKey && e.key === "z"; -var isMacRedoDown = (e) => e.metaKey && e.shiftKey && e.key === "z"; +// src/react/shared/menu/hooks.ts +var useModalMenu = (options) => { + const { ref, position } = useModalPosition(); + return useAbstractMenu(ref, position, options); +}; +var useMenu = (options) => { + const { ref, position } = usePosition(); + return useAbstractMenu(ref, position, options); +}; +var useAbstractMenu = (ref, position, options) => { + var _a2; + const { + level = 1 /* ONE */, + shouldRequestOnClose = false, + shouldFocusTriggerOnClose = true + } = options != null ? options : {}; + const { openMenus, closeRequests, setOpenMenus, setCloseRequests } = useMenuContext(); + const [menu] = import_react16.default.useState( + createMenu(level, shouldRequestOnClose, shouldFocusTriggerOnClose) + ); + const isOpen = openMenus.find((m2) => m2.id === menu.id) !== void 0; + const closeRequest = (_a2 = closeRequests.find((r2) => r2.menuId === menu.id)) != null ? _a2 : null; + const logger = useLogger(); + const onOpen = import_react16.default.useCallback(() => { + logger("Menu onOpen"); + removeCurrentFocusClass(); + setOpenMenus((prevMenus) => { + const found = prevMenus.find((m2) => m2.id === menu.id); + if (found) + return prevMenus; + return [...prevMenus, menu]; + }); + }, [menu, setOpenMenus, logger]); + const onClose = import_react16.default.useCallback( + (shouldFocusTriggerOnClose2 = true) => { + logger("Menu onClose"); + setOpenMenus( + (prevMenus) => prevMenus.filter((m2) => m2.id !== menu.id) + ); + setCloseRequests( + (prevRequests) => prevRequests.filter((request) => request.menuId !== menu.id) + ); + if (shouldFocusTriggerOnClose2 && menu.shouldFocusTriggerOnClose && ref.current) { + ref.current.focus(); + addFocusClass(ref.current); + } + }, + [ref, menu, setOpenMenus, setCloseRequests, logger] + ); + const onRequestClose = import_react16.default.useCallback( + (type = "save-and-close") => { + logger("Menu onRequestClose", { type }); + if (shouldRequestOnClose) { + const request = createCloseRequest(menu.id, type); + setCloseRequests((prevRequests) => [...prevRequests, request]); + } else { + onClose(); + } + }, + [menu, setCloseRequests, logger, shouldRequestOnClose, onClose] + ); + import_react16.default.useEffect( + function closeMenuAfterUnmounting() { + return () => { + if (isOpen) { + logger("Menu closeMenuAfterUnmounting"); + onClose(); + } + }; + }, + [isOpen, logger, onClose] + ); + return { + menu, + triggerRef: ref, + triggerPosition: position, + isOpen, + closeRequest, + onOpen, + onRequestClose, + onClose + }; +}; +var useMenuOperations = () => { + var _a2; + const { openMenus, setOpenMenus, setCloseRequests } = useMenuContext(); + const topMenu = (_a2 = openMenus[openMenus.length - 1]) != null ? _a2 : null; + const canOpen = import_react16.default.useCallback( + (menu) => { + if (topMenu === null) + return true; + if (menu.level > topMenu.level) + return true; + return false; + }, + [topMenu] + ); + const onCloseAll = import_react16.default.useCallback(() => { + setOpenMenus( + (prevState) => prevState.filter((menu) => menu.shouldRequestOnClose) + ); + setCloseRequests(() => { + return openMenus.map( + (menu) => createCloseRequest(menu.id, "save-and-close") + ); + }); + }, [openMenus, setOpenMenus, setCloseRequests]); + const onRequestCloseTop = import_react16.default.useCallback(() => { + if (!topMenu) + return; + if (topMenu.shouldRequestOnClose) { + const request = createCloseRequest(topMenu.id, "save-and-close"); + setCloseRequests((prevRequests) => [...prevRequests, request]); + } else { + setOpenMenus( + (prevMenus) => prevMenus.filter((menu) => menu.id !== topMenu.id) + ); + } + }, [topMenu, setOpenMenus, setCloseRequests]); + return { + canOpen, + topMenu, + onCloseAll, + onRequestCloseTop + }; +}; +var useModalPosition = () => { + const [position, setPosition] = import_react16.default.useState({ + top: 0, + left: 0, + width: 0, + height: 0 + }); + const ref = import_react16.default.useRef(null); + import_react16.default.useEffect(() => { + if (!ref.current) + return; + const el = ref.current; + function updatePosition() { + const { top, left, width, height } = el.getBoundingClientRect(); + setPosition({ + top, + left, + width, + height + }); + } + const ancestors = findAncestorsUntilModal(el); + const THROTTLE_TIME_MILLIS = 10; + const throttleUpdatePosition = import_lodash8.default.throttle( + updatePosition, + THROTTLE_TIME_MILLIS + ); + ancestors.forEach((ancestor) => { + ancestor.addEventListener("scroll", throttleUpdatePosition); + }); + window.addEventListener("resize", throttleUpdatePosition); + updatePosition(); + return () => { + ancestors.forEach((ancestor) => { + ancestor.removeEventListener("scroll", throttleUpdatePosition); + }); + window.removeEventListener("resize", throttleUpdatePosition); + }; + }, []); + return { + ref, + position + }; +}; +var findAncestorsUntilModal = (currentEl) => { + const ancestors = []; + let el = currentEl; + while (el && !el.classList.contains("modal")) { + ancestors.push(el); + el = el.parentElement; + } + return ancestors; +}; +var usePosition = () => { + const { mountLeaf, isMarkdownView } = useAppMount(); + const [position, setPosition] = import_react16.default.useState({ + top: 0, + left: 0, + width: 0, + height: 0 + }); + const ref = import_react16.default.useRef(null); + import_react16.default.useEffect(() => { + var _a2; + if (!ref.current) + return; + const el = ref.current; + const THROTTLE_TIME_MILLIS = 10; + const throttleUpdatePosition = import_lodash8.default.throttle( + updatePosition, + THROTTLE_TIME_MILLIS + ); + function updatePosition() { + const { top, left, width, height } = el.getBoundingClientRect(); + setPosition({ + top, + left, + width, + height + }); + } + const observer = new ResizeObserver(() => throttleUpdatePosition()); + observer.observe(mountLeaf.view.containerEl); + let pageScrollerEl = null; + let focusContainerEl = null; + if (isMarkdownView) { + pageScrollerEl = (_a2 = el.closest(".markdown-preview-view")) != null ? _a2 : el.closest(".cm-scroller"); + pageScrollerEl == null ? void 0 : pageScrollerEl.addEventListener("scroll", throttleUpdatePosition); + focusContainerEl = el.closest(".cm-contentContainer"); + focusContainerEl == null ? void 0 : focusContainerEl.addEventListener( + "focusin", + throttleUpdatePosition + ); + } + const table = el.closest(".dataloom-table"); + if (table) + observer.observe(table); + const tableContainer = el.closest('[data-virtuoso-scroller="true"]'); + tableContainer == null ? void 0 : tableContainer.addEventListener("scroll", throttleUpdatePosition); + return () => { + observer.disconnect(); + tableContainer == null ? void 0 : tableContainer.removeEventListener("scroll", updatePosition); + pageScrollerEl == null ? void 0 : pageScrollerEl.removeEventListener( + "scroll", + throttleUpdatePosition + ); + focusContainerEl == null ? void 0 : focusContainerEl.removeEventListener( + "focusin", + throttleUpdatePosition + ); + }; + }, [mountLeaf.view.containerEl, isMarkdownView]); + return { + ref, + position + }; +}; // src/react/shared/menu-trigger/index.tsx -var MenuTrigger = ({ - isButton = false, - isCell = false, - shouldRun = true, - menu, - children, - onEnterDown, - onBackspaceDown, - onClick, - onMouseDown -}) => { - const { - openMenu, - closeTopMenu, - requestCloseTopMenu, - canOpenMenu, - hasOpenMenu - } = useMenuState(); - const ref = import_react20.default.useRef(null); - const logger = useLogger(); - function handleKeyDown(e) { - logger("MenuTrigger handleKeyDown"); - if (e.key === "Enter") { - e.stopPropagation(); - onEnterDown == null ? void 0 : onEnterDown(); - e.preventDefault(); - if (!shouldRun) - return; - const tag = e.target.tagName; - if (tag === "A") - return; - if (canOpenMenu(menu)) { - openMenu(menu); - return; - } - closeTopMenu(); - } else if (e.key === "Backspace") { - onBackspaceDown == null ? void 0 : onBackspaceDown(); - } - if (e.key.length === 1) { - if (isWindowsRedoDown(e) || isWindowsUndoDown(e) || isMacRedoDown(e) || isMacUndoDown(e)) - return; - if (!isCell) - return; - openMenu(menu); - } - } - function handleClick(e) { - logger("MenuTrigger handleClick"); - e.stopPropagation(); - onClick == null ? void 0 : onClick(e); - if (!shouldRun) { - if (hasOpenMenu()) { - requestCloseTopMenu("click"); - } else { - if (!ref.current) - return; - removeFocusVisibleClass(); - addFocusVisibleClass(ref.current); - } - return; - } - if (canOpenMenu(menu)) { - const tag = e.target.tagName; - if (tag === "A") - return; - openMenu(menu); - return; - } - requestCloseTopMenu("click"); - } - const { id: id2 } = menu; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__menu-trigger NLT__focusable", - ref, - css: import_emotion_react_cjs.css` - width: ${isCell ? "100%" : "unset"}; - height: ${isCell ? "100%" : "unset"}; - border-radius: ${isButton ? "var(--button-radius)" : "unset"}; - `, - tabIndex: 0, - "data-menu-id": shouldRun ? id2 : void 0, - onKeyDown: handleKeyDown, - onClick: handleClick, +var import_jsx_runtime11 = __toESM(require_jsx_runtime()); +var MenuTrigger = import_react17.default.forwardRef( + ({ + menu, + isButton = false, + isCell = false, + shouldOpenOnTrigger = true, + children, + onEnterDown, + onBackspaceDown, + onClick, onMouseDown, - children - }); -}; + onOpen + }, ref) => { + const logger = useLogger(); + const { onRequestCloseTop, canOpen } = useMenuOperations(); + function handleKeyDown(e) { + logger("MenuTrigger handleKeyDown"); + if (e.key === "Enter") { + e.stopPropagation(); + onEnterDown == null ? void 0 : onEnterDown(); + e.preventDefault(); + if (shouldOpenOnTrigger) { + if (canOpen(menu)) { + const tag = e.target.tagName; + if (tag === "A") + return; + onOpen(); + return; + } + } + onRequestCloseTop(); + } else if (e.key === "Backspace") { + onBackspaceDown == null ? void 0 : onBackspaceDown(); + } + if (e.key.length === 1) { + if (isWindowsRedoDown(e) || isWindowsUndoDown(e) || isMacRedoDown(e) || isMacUndoDown(e)) + return; + if (!isCell) + return; + onOpen(); + } + } + function handleClick(e) { + logger("MenuTrigger handleClick"); + e.stopPropagation(); + onClick == null ? void 0 : onClick(e); + if (shouldOpenOnTrigger) { + if (canOpen(menu)) { + const tag = e.target.tagName; + if (tag === "A") + return; + onOpen(); + return; + } + } + onRequestCloseTop(); + } + return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( + "div", + { + tabIndex: 0, + className: "dataloom-menu-trigger dataloom-focusable", + ref, + style: { + width: isCell ? "100%" : void 0, + height: isCell ? "100%" : void 0, + borderRadius: isButton ? "var(--button-radius)" : void 0 + }, + onClick: handleClick, + onKeyDown: handleKeyDown, + onMouseDown, + children + } + ); + } +); var menu_trigger_default = MenuTrigger; +// src/shared/spacing/index.ts +var getSpacing = (size) => { + let spacing = ""; + if (size === "sm") { + spacing = "var(--dataloom-spacing--sm)"; + } else if (size === "md") { + spacing = "var(--dataloom-spacing--md)"; + } else if (size === "lg") { + spacing = "var(--dataloom-spacing--lg)"; + } else if (size === "xl") { + spacing = "var(--dataloom-spacing--xl)"; + } else if (size === "2xl") { + spacing = "var(--dataloom-spacing--2xl)"; + } else if (size === "3xl") { + spacing = "var(--dataloom-spacing--3xl)"; + } else if (size === "4xl") { + spacing = "var(--dataloom-spacing--4xl)"; + } + return spacing; +}; + +// src/react/shared/stack/index.tsx +var import_jsx_runtime12 = __toESM(require_jsx_runtime()); +function Stack({ + className: customClassName, + spacing = "md", + justify, + align, + grow, + overflow, + children, + width, + height, + minHeight, + isHorizontal = false, + onClick +}) { + let justifyContent = justify; + if (justifyContent === void 0) { + if (!isHorizontal) + justifyContent = "center"; + else + justifyContent = "flex-start"; + } + let alignItems = align; + if (alignItems === void 0) { + if (isHorizontal) + alignItems = "center"; + else + alignItems = "flex-start"; + } + let className = "dataloom-stack"; + if (customClassName) + className += " " + customClassName; + return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)( + "div", + { + className, + style: { + flexDirection: isHorizontal ? "row" : "column", + flexGrow: grow ? 1 : 0, + justifyContent, + alignItems, + [isHorizontal ? "columnGap" : "rowGap"]: getSpacing(spacing), + width, + height, + minHeight, + overflow + }, + onClick: (e) => onClick == null ? void 0 : onClick(e), + children + } + ); +} + // src/react/shared/button/index.tsx -var buttonStyle = import_emotion_react_cjs.css` - display: flex; - align-items: center; - width: max-content !important; - height: max-content; - padding: 10px !important; /* Prevent tablet styles */ - white-space: nowrap; - color: var(--text-normal); - margin-right: 0; - cursor: pointer; - - &:focus-visible { - box-shadow: none !important; - } -`; -var linkStyle = import_emotion_react_cjs.css` - color: var(--link-color); - text-decoration-line: var(--link-decoration); - cursor: var(--cursor-link); - background-color: transparent !important; - box-shadow: none !important; - border: none !important; - &:hover { - box-shadow: var(--input-shadow) !important; - } -`; -var iconStyle = import_emotion_react_cjs.css` - background-color: transparent !important; - box-shadow: none !important; - padding: 6px !important; - - &: hover { - box-shadow: var(--input-shadow) !important; - } -`; -var smallStyle = import_emotion_react_cjs.css` - padding: 2px !important; -`; +var import_jsx_runtime13 = __toESM(require_jsx_runtime()); function Button({ + isDisabled = false, + variant = "text", + isFullWidth, isFocusable = true, - isLink, isSmall, invertFocusColor, children, @@ -47173,562 +48340,261 @@ function Button({ onClick == null ? void 0 : onClick(); } } - let className = "NLT__button"; + let className = "dataloom-button"; if (isFocusable) { - className += " NLT__focusable"; + className += " dataloom-focusable"; if (invertFocusColor) - className += " NLT__focusable--inverted"; + className += " dataloom-focusable--inverted"; } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("button", { - tabIndex: isFocusable ? 0 : -1, - className, - css: import_emotion_react_cjs.css` - ${buttonStyle} - ${isLink ? linkStyle : void 0} - ${icon !== void 0 ? iconStyle : void 0} - ${isSmall ? smallStyle : void 0} - `, - "aria-label": ariaLabel, - onKeyDown: handleKeyDown, - onMouseDown, - onClick: handleClick, - children: icon !== void 0 ? icon : children - }); + if (variant == "link") + className += " dataloom-button--link"; + else if (variant == "text") + className += " dataloom-button--text"; + if (isSmall) + className += " dataloom-button--small"; + if (isFullWidth) + className += " dataloom-button--full-width"; + return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)( + "button", + { + disabled: isDisabled, + tabIndex: isFocusable ? 0 : -1, + className, + "aria-label": ariaLabel, + onKeyDown: handleKeyDown, + onMouseDown, + onClick: handleClick, + children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Stack, { isHorizontal: true, children: [ + icon && icon, + children + ] }) + } + ); } // src/react/shared/menu-button/index.tsx -function MenuButton({ - menu, - isLink = false, - ariaLabel, - icon, - children, - onClick, - onMouseDown -}) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_trigger_default, { - isButton: true, +var import_jsx_runtime14 = __toESM(require_jsx_runtime()); +var MenuButton = import_react18.default.forwardRef( + ({ + isDisabled, menu, + variant, + ariaLabel, + icon, + children, onClick, onMouseDown, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { - isFocusable: false, - isLink, - icon, - ariaLabel, - children - }) - }); -} - -// src/react/table-app/row-options/components/RowMenu/index.tsx -var import_react34 = __toESM(require_react()); + onOpen + }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( + menu_trigger_default, + { + shouldOpenOnTrigger: true, + isButton: true, + ref, + menu, + onClick, + onMouseDown, + onOpen, + children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( + Button, + { + isDisabled, + isFocusable: false, + variant, + icon, + ariaLabel, + children + } + ) + } + ); + } +); +var menu_button_default = MenuButton; // src/react/shared/menu/index.tsx -var import_react25 = __toESM(require_react()); -var import_react_dom3 = __toESM(require_react_dom()); - -// src/shared/conversion.ts -var pxToNum = (value) => { - return parseFloat(value.split("px")[0]); -}; -var numToPx = (value) => { - return `${value}px`; -}; -var stringToCurrencyString = (value, type) => { - return new Intl.NumberFormat("en-US", { - style: "currency", - currency: type - }).format(parseFloat(value)); -}; - -// src/shared/menu/utils.ts -var import_react23 = __toESM(require_react()); - -// src/shared/menu/constants.ts -var MENU_SHIFT_PADDING = 5; - -// src/obsidian-shim/build/render-utils.ts var import_react22 = __toESM(require_react()); -// src/shared/render/embed.ts -var import_obsidian4 = require("obsidian"); -var handleLinkClick = (event) => { - const targetEl = event.target; - const closestAnchor = targetEl.tagName === "A" ? targetEl : targetEl.closest("a"); - if (!closestAnchor) { - return; - } - if (closestAnchor.hasClass("internal-link")) { - event.preventDefault(); - const href = closestAnchor.getAttr("href"); - const newLeaf = event.ctrlKey || event.metaKey; - if (href) - app.workspace.openLinkText(href, "", newLeaf); - } -}; -var renderEmbedMarkdown = (leaf, markdown) => __async(void 0, null, function* () { - try { - const view = leaf.view; - if (view instanceof import_obsidian4.MarkdownView || view instanceof NLTView) { - const div = document.body.createDiv(); - div.style.height = "100%"; - div.style.width = "100%"; - yield import_obsidian4.MarkdownRenderer.renderMarkdown( - markdown, - div, - view.file.path, - view - ); - return div; - } - } catch (e) { - console.error(e); - } - return null; -}); -var renderMarkdown = (leaf, markdown) => __async(void 0, null, function* () { - const div = document.createElement("div"); - div.style.height = "100%"; - div.style.width = "100%"; - const view = leaf == null ? void 0 : leaf.view; - if (view instanceof NLTView) - div.classList.add("markdown-rendered"); - try { - const updated = replaceNewLinesWithBr(markdown); - const view2 = leaf == null ? void 0 : leaf.view; - if (view2 instanceof import_obsidian4.MarkdownView || view2 instanceof NLTView) { - yield import_obsidian4.MarkdownRenderer.renderMarkdown( - updated, - div, - view2.file.path, - view2 - ); - const embeds = div.querySelectorAll(".internal-link"); - embeds.forEach((embed) => { - const el = embed; - const href = el.getAttribute("data-href"); - if (!href) - return; - const destination = app.metadataCache.getFirstLinkpathDest( - href, - view2.file.path - ); - if (!destination) - embed.classList.add("is-unresolved"); - el.addEventListener("mouseover", (e) => { - e.stopPropagation(); - app.workspace.trigger("hover-link", { - event: e, - source: NOTION_LIKE_TABLES_VIEW, - hoverParent: view2.containerEl, - targetEl: el, - linktext: href, - sourcePath: el.href - }); - }); - el.addEventListener("click", handleLinkClick); - }); - } - } catch (e) { - console.error(e); - } - return div; -}); - -// src/obsidian-shim/build/render-utils.ts -var import_obsidian5 = require("obsidian"); -var useLeafContainer = () => { - const { leaf } = useMountState(); - return leaf.view.containerEl; -}; -var isOnMobile = () => { - return import_obsidian5.Platform.isMobile; -}; -var useRenderMarkdown = (markdown, isEmbed) => { - const containerRef = import_react22.default.useRef(null); - const renderRef = import_react22.default.useRef(null); - const { leaf } = useMountState(); - import_react22.default.useEffect(() => { - function updateContainerRef() { - return __async(this, null, function* () { - let el = null; - if (isEmbed) { - el = yield renderEmbedMarkdown(leaf, markdown); - } else { - el = yield renderMarkdown(leaf, markdown); - } - if (el) { - renderRef.current = el; - if (containerRef.current) - appendOrReplaceFirstChild(containerRef.current, el); - } - }); - } - updateContainerRef(); - }, [markdown, leaf, isEmbed]); - return { - containerRef, - renderRef - }; -}; - -// src/shared/menu/utils.ts -var isTextSelected = () => { - const selection = window.getSelection(); - return (selection == null ? void 0 : selection.type) === "Range"; -}; -var getElementPosition = (el) => { - if (el) - return el.getBoundingClientRect(); - return { - top: 0, - left: 0, - width: 0, - height: 0 - }; -}; -var useShiftMenu = (triggerRef, menuRef, isOpen, options) => { - const viewContentEl = useLeafContainer(); - import_react23.default.useEffect(() => { - function shiftMenuIntoView() { - if (menuRef.current === null) +// src/react/shared/menu/base-menu.tsx +var import_react19 = __toESM(require_react()); +var import_react_dom3 = __toESM(require_react_dom()); +var import_jsx_runtime15 = __toESM(require_jsx_runtime()); +var BaseMenu = import_react19.default.forwardRef( + ({ + id: id2, + isOpen, + hideBorder = false, + triggerPosition, + width = 0, + height = 0, + maxHeight = 0, + maxWidth = 0, + children, + onRequestClose, + onClose + }, ref) => { + const logger = useLogger(); + const { topMenu, onRequestCloseTop } = useMenuOperations(); + function handleClick(e) { + logger("Menu handleClick"); + e.stopPropagation(); + if (topMenu.id === id2) return; - if (triggerRef.current === null) - return; - const { - openDirection = "normal", - topOffset = 0, - leftOffset = 0 - } = options || {}; - const viewContentRect = viewContentEl.getBoundingClientRect(); - const triggerRefRect = triggerRef.current.getBoundingClientRect(); - const menuRect = menuRef.current.getBoundingClientRect(); - const top = triggerRefRect.top + topOffset; - let left = triggerRefRect.left + leftOffset; - if (openDirection === "left") { - left = left - menuRect.width; - } else if (openDirection === "right") { - left = left + triggerRefRect.width; - } - const isMobile = isOnMobile(); - let viewContentHeight = viewContentRect.height; - if (isMobile) - viewContentHeight -= 48; - const position = shiftElementIntoContainer( - { - top: viewContentRect.top, - left: viewContentRect.left, - width: viewContentRect.width, - height: viewContentHeight - }, - { - top, - left, - width: menuRect.width, - height: menuRect.height - } - ); - menuRef.current.style.top = numToPx(position.top); - menuRef.current.style.left = numToPx(position.left); + onRequestCloseTop(); } - if (isOpen) - shiftMenuIntoView(); - }); -}; -var useMenuTriggerPosition = () => { - const ref = import_react23.default.useRef(null); - const position = getElementPosition(ref.current); - return { triggerRef: ref, triggerPosition: position }; -}; -var shiftElementIntoContainer = (container, element) => { - let newTop = element.top; - let newLeft = element.left; - if (element.top + element.height > container.top + container.height) { - newTop = container.top + container.height - element.height - MENU_SHIFT_PADDING; - } - if (element.left + element.width > container.left + container.width) { - newLeft = container.left + container.width - element.width - MENU_SHIFT_PADDING; - } - if (element.top < container.top) { - newTop = container.top + MENU_SHIFT_PADDING; - } - if (element.left < container.left) { - newLeft = container.left + MENU_SHIFT_PADDING; - } - return { - top: newTop, - left: newLeft - }; -}; - -// src/obsidian-shim/build/menu-events.ts -var import_react24 = __toESM(require_react()); - -// src/shared/events.ts -var obsidianEvent = (name) => { - return "notion-like-tables-" + name; -}; -var EVENT_COLUMN_ADD = obsidianEvent("add-column"); -var EVENT_COLUMN_DELETE = obsidianEvent("delete-column"); -var EVENT_ROW_ADD = obsidianEvent("add-row"); -var EVENT_ROW_DELETE = obsidianEvent("delete-row"); -var EVENT_REFRESH_TABLES = obsidianEvent("refresh-tables"); -var EVENT_OUTSIDE_CLICK = obsidianEvent("outside-click"); -var EVENT_OUTSIDE_KEYDOWN = obsidianEvent("outside-keydown"); -var EVENT_DOWNLOAD_CSV = obsidianEvent("download-csv"); -var EVENT_DOWNLOAD_MARKDOWN = obsidianEvent("download-markdown"); - -// src/obsidian-shim/build/menu-events.ts -var useMenuEvents = (id2, isOpen, isTextHighlighted) => { - const logger = useLogger(); - const { requestCloseTopMenu, closeTopMenu, topMenu } = useMenuState(); - import_react24.default.useEffect(() => { - function handleOutsideKeyDown(e) { - logger("Menu handleOutsideKeyDown"); - if ((topMenu == null ? void 0 : topMenu.id) !== id2) - return; + function handleKeyDown(e) { + logger("Menu handleKeyDown"); if (e.key === "Enter") { - requestCloseTopMenu("enter"); + e.stopPropagation(); + onRequestClose("close-on-save"); } else if (e.key === "Escape") { - closeTopMenu(); + e.stopPropagation(); + onClose(); } } - if (isOpen) { - app.workspace.on(EVENT_OUTSIDE_KEYDOWN, handleOutsideKeyDown); - } - return () => app.workspace.off(EVENT_OUTSIDE_CLICK, handleOutsideKeyDown); - }, [isOpen, logger, closeTopMenu, requestCloseTopMenu, id2, topMenu]); - import_react24.default.useEffect(() => { - function handleOutsideClick() { - logger("Menu handleOutsideClick"); - if ((topMenu == null ? void 0 : topMenu.id) !== id2) - return; - if (isTextHighlighted) { - return; - } - requestCloseTopMenu("click"); - } - if (isOpen) { - app.workspace.on(EVENT_OUTSIDE_CLICK, handleOutsideClick); - } - return () => app.workspace.off(EVENT_OUTSIDE_CLICK, handleOutsideClick); - }, [isOpen, logger, requestCloseTopMenu, id2, topMenu, isTextHighlighted]); -}; - -// src/react/shared/menu/index.tsx -var Menu = import_react25.default.forwardRef(function Menu2({ - id: id2, - isOpen, - hideBorder = false, - top = 0, - left = 0, - width = 0, - height = 0, - maxHeight = 0, - maxWidth = 0, - children -}, ref) { - const { topMenu, closeTopMenu, requestCloseTopMenu } = useMenuState(); - const isTextHighlighted = import_react25.default.useRef(false); - const logger = useLogger(); - useMenuEvents(id2, isOpen, isTextHighlighted.current); - function handleMouseDown() { - isTextHighlighted.current = false; - } - function handleSelect() { - isTextHighlighted.current = isTextSelected(); - } - function handleKeyDown(e) { - logger("Menu handleKeyDown"); - if (e.key === "Enter") { - requestCloseTopMenu("enter"); - } else if (e.key === "Escape") { - closeTopMenu(); - } - } - function handleClick(e) { - logger("Menu handleClick"); - e.stopPropagation(); - if ((topMenu == null ? void 0 : topMenu.id) === id2) { - if (topMenu.level === 0) - removeFocusVisibleClass(); - return; - } - requestCloseTopMenu("click"); - } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: isOpen && import_react_dom3.default.createPortal( - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__menu", - "data-id": id2, - css: import_emotion_react_cjs.css` - width: 0; - height: 0; - `, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - ref, - css: import_emotion_react_cjs.css` - position: absolute; - z-index: var(--layer-menu); - top: ${numToPx(top)}; - left: ${numToPx(left)}; - width: ${width !== 0 ? numToPx(width) : "max-content"}; - height: ${height !== 0 ? numToPx(height) : "max-content"}; - max-width: ${maxWidth !== 0 ? numToPx(maxWidth) : "unset"}; - max-height: ${maxHeight !== 0 ? numToPx(maxHeight) : "unset"}; - overflow-y: ${maxHeight !== 0 ? "scroll" : "unset"}; - background-color: var(--background-primary); - box-shadow: ${hideBorder ? "unset" : "0px 0px 0px 2px var(--background-modifier-border);"} - font-weight: 400; - `, - onClick: handleClick, + if (!isOpen) + return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_jsx_runtime15.Fragment, {}); + return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_jsx_runtime15.Fragment, { children: import_react_dom3.default.createPortal( + /* @__PURE__ */ (0, import_jsx_runtime15.jsx)( + "div", + { + id: id2, + className: "dataloom-menu", onKeyDown: handleKeyDown, - onMouseDown: handleMouseDown, - onSelect: handleSelect, - children - }) - }), + onClick: handleClick, + children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)( + "div", + { + ref, + className: "dataloom-menu__container", + style: { + top: numToPx(triggerPosition.top), + left: numToPx(triggerPosition.left), + width: width !== 0 ? numToPx(width) : "max-content", + height: height !== 0 ? numToPx(height) : "max-content", + maxWidth: maxWidth !== 0 ? numToPx(maxWidth) : void 0, + maxHeight: maxHeight !== 0 ? numToPx(maxHeight) : void 0, + overflowY: maxHeight !== 0 ? "scroll" : void 0, + boxShadow: hideBorder ? void 0 : "0px 0px 0px 2px var(--background-modifier-border)" + }, + children + } + ) + } + ), document.body - ) - }); -}); -var menu_default = Menu; - -// src/shared/spacing/index.ts -var getSpacing = (size) => { - let spacing = ""; - if (size === "sm") { - spacing = "var(--nlt-spacing--sm)"; - } else if (size === "md") { - spacing = "var(--nlt-spacing--md)"; - } else if (size === "lg") { - spacing = "var(--nlt-spacing--lg)"; - } else if (size === "xl") { - spacing = "var(--nlt-spacing--xl)"; - } else if (size === "2xl") { - spacing = "var(--nlt-spacing--2xl)"; - } else if (size === "3xl") { - spacing = "var(--nlt-spacing--3xl)"; - } else if (size === "4xl") { - spacing = "var(--nlt-spacing--4xl)"; + ) }); } - return spacing; +); +var base_menu_default = BaseMenu; + +// src/react/shared/menu/utils.ts +var import_react21 = __toESM(require_react()); + +// src/shared/render-utils.ts +var import_react20 = __toESM(require_react()); +var import_obsidian12 = require("obsidian"); + +// src/obsidian/dataloom-view.tsx +var import_obsidian10 = require("obsidian"); +var import_client = __toESM(require_client()); + +// src/obsidian/utils.ts +var createAppId = () => { + return "a" + v4_default(); }; -// src/react/shared/stack/index.tsx -function Stack({ - spacing = "md", - justify, - align, - grow, - children, - width = "unset", - height = "unset", - minHeight = "unset", - isVertical -}) { - let justifyContent = justify; - if (justifyContent === void 0) { - if (isVertical) - justifyContent = "center"; - else - justifyContent = "flex-start"; - } - let alignItems = align; - if (alignItems === void 0) { - if (!isVertical) - alignItems = "center"; - else - alignItems = "flex-start"; - } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - css: import_emotion_react_cjs.css` - display: flex; - flex-direction: ${isVertical ? "column" : "row"}; - flex-grow: ${grow ? 1 : 0}; - justify-content: ${justifyContent}; - align-items: ${alignItems}; - ${isVertical ? "row-gap" : "column-gap"}: ${getSpacing( - spacing - )}; - width: ${width}; - height: ${height}; - min-height: ${minHeight}; - `, - children - }); -} - -// src/react/shared/flex/index.tsx -function Flex({ - flexDir = "row", - justify = "flex-start", - align = "flex-start", - children -}) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - css: import_emotion_react_cjs.css` - width: 100%; - display: flex; - flex-direction: ${flexDir}; - justify-content: ${justify}; - align-items: ${align}; - flex-wrap: wrap; - `, - children - }); -} - // src/shared/spacing/hooks.ts -var wrapOverflow = import_emotion_react_cjs.css` - overflow-wrap: break-word; - overflow: hidden; - white-space: normal; -`; -var hideOverflow = import_emotion_react_cjs.css` - overflow: hidden; - overflow-wrap: normal; - white-space: nowrap; -`; -var useOverflow = (shouldWrapOverflow) => { - if (shouldWrapOverflow) - return wrapOverflow; - return hideOverflow; +var useOverflow = (shouldWrap, options) => { + const { ellipsis = false } = options != null ? options : {}; + if (shouldWrap) + return "dataloom-overflow--wrap"; + if (ellipsis) + return "dataloom-overflow--ellipsis"; + return "dataloom-overflow--hide"; }; // src/react/shared/text/index.tsx -function Text({ value, variant, size = "sm", maxWidth }) { - let className = "NLT__p"; +var import_jsx_runtime16 = __toESM(require_jsx_runtime()); +function Text({ + value, + variant, + size = "sm", + maxWidth, + whiteSpace, + shouldWrap = false +}) { + const overflowClassName = useOverflow( + shouldWrap || maxWidth !== void 0, + { + ellipsis: true + } + ); + let className = "dataloom-text"; if (variant === "faint") - className += " NLT__text-faint"; - if (variant === "muted") - className += " NLT__text-muted"; - if (variant === "semibold") - className += " NLT__text-semibold"; + className += " dataloom-text--faint"; + else if (variant === "muted") + className += " dataloom-text--muted"; + else if (variant === "semibold") + className += " dataloom-text--semibold"; + else if (variant === "on-accent") + className += " dataloom-text--on-accent"; + else if (variant === "error") + className += " dataloom-text--error"; + className += " " + overflowClassName; let fontSize = ""; if (size === "xs") { - fontSize = "var(--nlt-font-size--xs)"; + fontSize = "var(--dataloom-font-size--xs)"; } else if (size === "sm") { - fontSize = "var(--nlt-font-size--sm)"; + fontSize = "var(--dataloom-font-size--sm)"; } else if (size === "md") { - fontSize = "var(--nlt-font-size--md)"; + fontSize = "var(--dataloom-font-size--md)"; } else if (size === "lg") { - fontSize = "var(--nlt-font-size--lg)"; + fontSize = "var(--dataloom-font-size--lg)"; + } else if (size === "xl") { + fontSize = "var(--dataloom-font-size--xl)"; } - const overflowStyle = useOverflow(maxWidth !== void 0); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("p", { - className, - css: import_emotion_react_cjs.css` - font-size: ${fontSize}; - max-width: ${maxWidth === void 0 ? "unset" : maxWidth}; - ${overflowStyle} - `, - children: value - }); + return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( + "p", + { + className, + style: { + fontSize, + whiteSpace, + maxWidth + }, + children: value + } + ); } +// src/react/shared/divider/index.tsx +var import_jsx_runtime17 = __toESM(require_jsx_runtime()); +function Divider({ + isVertical = false, + width = "100%", + height = "100%" +}) { + return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)( + "hr", + { + className: "dataloom-hr", + style: { + width: !isVertical ? width : void 0, + height: isVertical === true ? height : void 0, + borderTop: isVertical === false ? "1px solid var(--hr-color)" : void 0, + borderLeft: isVertical === true ? "1px var(--hr-color) solid" : void 0 + } + } + ); +} + +// src/react/shared/error-display/index.tsx +var import_obsidian9 = require("obsidian"); + // src/react/shared/padding/index.tsx +var import_jsx_runtime18 = __toESM(require_jsx_runtime()); function Padding({ width = "100%", px, @@ -47749,26 +48615,12 @@ function Padding({ renderPb = getSpacing(p2); renderPl = getSpacing(p2); renderPr = getSpacing(p2); - } else if (px || py) { - if (px) { - const spacing = getSpacing(px); - renderPl = spacing; - renderPr = spacing; - } - if (py) { - const spacing = getSpacing(py); - renderPt = spacing; - renderPb = spacing; - } - } else if (pb || pt || pl || pr) { - if (pb) { - const spacing = getSpacing(pb); - renderPb = spacing; - } - if (pt) { - const spacing = getSpacing(pt); - renderPt = spacing; - } + } + if (px) { + const spacing = getSpacing(px); + renderPl = spacing; + renderPr = spacing; + } else if (pl || pr) { if (pl) { const spacing = getSpacing(pl); renderPl = spacing; @@ -47778,20 +48630,549 @@ function Padding({ renderPr = spacing; } } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - css: import_emotion_react_cjs.css` - width: ${width}; - padding-top: ${renderPt}; - padding-bottom: ${renderPb}; - padding-left: ${renderPl}; - padding-right: ${renderPr}; - `, - children + if (py) { + const spacing = getSpacing(py); + renderPt = spacing; + renderPb = spacing; + } else if (pt || pb) { + if (pt) { + const spacing = getSpacing(pt); + renderPt = spacing; + } + if (pb) { + const spacing = getSpacing(pb); + renderPb = spacing; + } + } + return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)( + "div", + { + className: "dataloom-padding", + style: { + width, + paddingTop: renderPt, + paddingBottom: renderPb, + paddingLeft: renderPl, + paddingRight: renderPr + }, + children + } + ); +} + +// src/react/shared/error-display/index.tsx +var import_jsx_runtime19 = __toESM(require_jsx_runtime()); +function ErrorDisplay({ + title, + copyErrorMessage, + errorMessage, + isEmbeddedApp, + infoSection, + helpMessage, + helpURL +}) { + function handleCopyClick() { + navigator.clipboard.writeText(copyErrorMessage); + new import_obsidian9.Notice("Copied error to clipboard"); + } + let className = "dataloom-error"; + if (isEmbeddedApp) + className += " dataloom-error--embedded-app"; + return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Padding, { p: "2xl", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Stack, { spacing: "xl", children: [ + /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Stack, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Text, { variant: "semibold", size: "xl", value: "Opps" }), + /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Text, { variant: "semibold", size: "md", value: title }) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Divider, {}), + /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Stack, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime19.jsx)( + Text, + { + variant: "semibold", + size: "md", + value: "Error message" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "dataloom-error__message", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Text, { value: errorMessage, whiteSpace: "pre-wrap" }) }) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Divider, {}), + infoSection, + /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Text, { value: helpMessage }), + /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("a", { href: helpURL, children: helpURL }) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Stack, { isHorizontal: true, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)( + "button", + { + className: "dataloom-copy-button", + onClick: () => handleCopyClick(), + children: "Copy to clipboard" + } + ) }) + ] }) }) }); +} + +// src/react/error-app/index.tsx +var import_jsx_runtime20 = __toESM(require_jsx_runtime()); +function ErrorApp({ error, isEmbeddedApp = false }) { + const { fileVersion, pluginVersion, failedMigration, message } = error; + let className = "dataloom-error-app"; + if (isEmbeddedApp) + className += " dataloom-error-app--embedded"; + const copyErrorMessage = `Plugin version: ${pluginVersion} +File version: ${fileVersion} +Failed migration: ${failedMigration} +Error message: ${message}`; + return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( + ErrorDisplay, + { + title: "DataLoom cannot render file", + errorMessage: message, + copyErrorMessage, + isEmbeddedApp, + helpMessage: "For help fixing this error please visit:", + helpURL: "https://dataloom.xyz/other/loom-file", + infoSection: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Stack, { isHorizontal: true, spacing: "xl", children: [ + /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Stack, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Text, { variant: "semibold", value: "Plugin version" }), + /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Text, { value: pluginVersion }) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Divider, { isVertical: true, height: "60px" }), + /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Stack, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Text, { variant: "semibold", value: "File version" }), + /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Text, { value: fileVersion }) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Divider, { isVertical: true, height: "60px" }), + /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Stack, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Text, { variant: "semibold", value: "Failed migration" }), + /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Text, { value: failedMigration != null ? failedMigration : "None" }) + ] }) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Divider, {}) + ] }) + } + ); +} + +// src/obsidian/dataloom-view.tsx +var import_jsx_runtime21 = __toESM(require_jsx_runtime()); +var DATA_LOOM_VIEW = "dataloom"; +var DataLoomView = class extends import_obsidian10.TextFileView { + constructor(leaf, pluginId, pluginVersion) { + super(leaf); + this.handleSaveLoomState = (appId, state) => { + if (!this.file) + return; + const serialized = serializeState(state); + this.setViewData(serialized, false); + this.requestSave(); + this.app.workspace.trigger( + EVENT_APP_REFRESH, + this.file.path, + appId, + state + ); + }; + this.pluginId = pluginId; + this.pluginVersion = pluginVersion; + this.root = null; + this.data = ""; + this.appId = createAppId(); + } + onOpen() { + return __async(this, null, function* () { + this.containerEl.style.paddingBottom = "48px"; + this.addAction("settings", "Settings", () => { + this.app.setting.open(); + this.app.setting.openTabById(this.pluginId); + }); + }); + } + onClose() { + return __async(this, null, function* () { + if (this.root) { + this.root.unmount(); + this.root = null; + } + }); + } + setViewData(data, clear) { + this.data = data; + if (clear) { + if (this.root) { + this.root.unmount(); + } + const container = this.containerEl.children[1]; + const root = (0, import_client.createRoot)(container); + this.root = root; + try { + const state = deserializeState(data, this.pluginVersion); + this.renderApp(this.appId, state); + } catch (err) { + this.renderErrorApp(err); + } + } + } + clear() { + this.data = "{}"; + } + getViewData() { + return this.data; + } + getViewType() { + return DATA_LOOM_VIEW; + } + getDisplayText() { + if (!this.file) + return ""; + const fileName = this.file.name; + const extensionIndex = fileName.lastIndexOf("."); + return fileName.substring(0, extensionIndex); + } + renderApp(appId, state) { + if (!this.file) + return; + if (this.root) { + this.root.render( + /* @__PURE__ */ (0, import_jsx_runtime21.jsx)( + LoomApp, + { + app: this.app, + mountLeaf: this.leaf, + reactAppId: appId, + loomFile: this.file, + isMarkdownView: false, + store, + loomState: state, + onSaveState: this.handleSaveLoomState + } + ) + ); + } + } + renderErrorApp(error) { + if (this.root) { + this.root.render(/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ErrorApp, { error })); + } + } +}; + +// src/shared/render/embed.ts +var handleLinkClick = (app, event) => { + const targetEl = event.target; + const closestAnchor = targetEl.tagName === "A" ? targetEl : targetEl.closest("a"); + if (!closestAnchor) { + return; + } + if (closestAnchor.hasClass("internal-link")) { + event.preventDefault(); + const href = closestAnchor.getAttr("href"); + const newLeaf = event.ctrlKey || event.metaKey; + if (href) + app.workspace.openLinkText(href, "", newLeaf); + } +}; + +// src/shared/render-embed.ts +var import_obsidian11 = require("obsidian"); +var renderText = (app, leaf, value) => __async(void 0, null, function* () { + var _a2, _b; + const div = document.createElement("div"); + div.style.width = "100%"; + div.style.height = "100%"; + try { + const view = leaf.view; + if (view instanceof import_obsidian11.MarkdownView || view instanceof DataLoomView) { + yield import_obsidian11.MarkdownRenderer.render( + app, + value, + div, + (_b = (_a2 = view.file) == null ? void 0 : _a2.path) != null ? _b : "", + view + ); + } + } catch (e) { + console.error(e); + } + return div; +}); +var renderEmbed = (app, leaf, value) => __async(void 0, null, function* () { + return renderText(app, leaf, value); +}); + +// src/shared/render-utils.ts +var renderMarkdown = (app, leaf, markdown) => __async(void 0, null, function* () { + const div = document.createElement("div"); + div.style.height = "100%"; + div.style.width = "100%"; + const view = leaf.view; + if (view instanceof DataLoomView) + div.classList.add("markdown-rendered"); + try { + const formattedMarkdown = replaceNewLinesWithBr(markdown); + const view2 = leaf == null ? void 0 : leaf.view; + if (view2 instanceof import_obsidian12.MarkdownView || view2 instanceof DataLoomView) { + const file = view2.file; + if (file === null) + return div; + yield import_obsidian12.MarkdownRenderer.render( + app, + formattedMarkdown, + div, + file.path, + view2 + ); + const embeds = div.querySelectorAll(".internal-link"); + embeds.forEach((embed) => { + const el = embed; + const href = el.getAttribute("data-href"); + if (!href) + return; + const destination = app.metadataCache.getFirstLinkpathDest( + href, + file.path + ); + if (!destination) + embed.classList.add("is-unresolved"); + el.addEventListener("mouseover", (e) => { + e.stopPropagation(); + app.workspace.trigger("hover-link", { + event: e, + source: DATA_LOOM_VIEW, + hoverParent: view2.containerEl, + targetEl: el, + linktext: href, + sourcePath: el.href + }); + }); + el.addEventListener("click", (e) => handleLinkClick(app, e)); + }); + } + } catch (e) { + console.error(e); + } + return div; +}); +var useRenderMarkdown = (markdown, options) => { + const { app } = useAppMount(); + const { isEmbed = false, isExternalLink = false } = options != null ? options : {}; + const containerRef = import_react20.default.useRef(null); + const renderRef = import_react20.default.useRef(null); + const { mountLeaf } = useAppMount(); + import_react20.default.useEffect(() => { + function updateContainerRef() { + return __async(this, null, function* () { + let el = null; + if (isEmbed) { + el = yield renderEmbed(app, mountLeaf, markdown); + } else { + el = yield renderMarkdown(app, mountLeaf, markdown); + } + if (el) { + renderRef.current = el; + if (containerRef.current) + appendOrReplaceFirstChild(containerRef.current, el); + } + }); + } + updateContainerRef(); + }, [app, markdown, mountLeaf, isExternalLink, isEmbed]); + return { + containerRef, + renderRef + }; +}; +var isOnMobile = () => { + return import_obsidian12.Platform.isMobile; +}; +var getResourcePath = (app, filePath) => { + return app.vault.adapter.getResourcePath(filePath); +}; + +// src/react/shared/menu/utils.ts +var useShiftMenu = (isModalMenu, viewportEl, menuRef, triggerPosition, isOpen, options) => { + const { + openDirection = "normal", + topOffset = 0, + leftOffset = 0 + } = options || {}; + import_react21.default.useEffect(() => { + if (!menuRef.current) + return; + if (!isOpen) + return; + const menuPosition = getMenuPosition( + menuRef.current, + triggerPosition, + topOffset, + leftOffset, + openDirection + ); + const viewportPosition = getViewportPosition(viewportEl, isModalMenu); + const newPosition = shiftElementIntoContainer( + viewportPosition, + menuPosition + ); + menuRef.current.style.top = numToPx(newPosition.top); + menuRef.current.style.left = numToPx(newPosition.left); }); +}; +var getMenuPosition = (menuEl, triggerPosition, topOffset, leftOffset, openDirection) => { + const rect = menuEl.getBoundingClientRect(); + let top = triggerPosition.top + topOffset; + let left = triggerPosition.left + leftOffset; + if (openDirection === "left") { + left = left - rect.width; + } else if (openDirection === "right") { + left = left + triggerPosition.width; + } else if (openDirection === "bottom-left") { + top = top + triggerPosition.height; + left = left - rect.width; + } else if (openDirection === "bottom-right") { + top = top + triggerPosition.height; + left = left + triggerPosition.width; + } else if (openDirection === "bottom") { + top = top + triggerPosition.height; + left = left + rect.width; + } + return { + top, + left, + width: rect.width, + height: rect.height + }; +}; +var getViewportPosition = (viewportEl, isModalMenu) => { + const rect = viewportEl.getBoundingClientRect(); + const rectRelativeToDocument = getPositionRelativeToDocument(rect); + let height = rectRelativeToDocument.height; + if (!isModalMenu) { + const MOBILE_BAR_HEIGHT = 48; + if (isOnMobile()) + height -= MOBILE_BAR_HEIGHT; + } + return { + top: rectRelativeToDocument.top, + left: rectRelativeToDocument.left, + width: rectRelativeToDocument.width, + height + }; +}; +var getPositionRelativeToDocument = (rect) => { + const left = rect.left + window.scrollX - document.body.clientLeft; + const top = rect.top + window.scrollY - document.body.clientTop; + return { + top, + left, + width: rect.width, + height: rect.height + }; +}; +var shiftElementIntoContainer = (container, element) => { + const MENU_SHIFT_PADDING = 16; + let newTop = element.top; + let newLeft = element.left; + if (element.top + element.height > container.top + container.height) { + newTop = container.top + container.height - element.height - MENU_SHIFT_PADDING; + } + if (element.left + element.width > container.left + container.width) { + newLeft = container.left + container.width - element.width - MENU_SHIFT_PADDING; + } + if (element.top < container.top) { + newTop = container.top + MENU_SHIFT_PADDING; + } + if (element.left < container.left) { + newLeft = container.left + MENU_SHIFT_PADDING; + } + return { + top: newTop, + left: newLeft + }; +}; + +// src/react/shared/menu/index.tsx +var import_jsx_runtime22 = __toESM(require_jsx_runtime()); +function Menu({ + id: id2, + isOpen, + hideBorder = false, + openDirection, + triggerPosition, + width = 0, + height = 0, + maxHeight = 0, + maxWidth = 0, + children, + onRequestClose, + onClose +}) { + const ref = import_react22.default.useRef(null); + const { mountLeaf } = useAppMount(); + useShiftMenu( + false, + mountLeaf.view.containerEl, + ref, + triggerPosition, + isOpen, + { + openDirection + } + ); + if (!isOpen) + return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_jsx_runtime22.Fragment, {}); + return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)( + base_menu_default, + { + ref, + id: id2, + isOpen, + hideBorder, + triggerPosition, + width, + height, + maxHeight, + maxWidth, + onRequestClose, + onClose, + children + } + ); } // src/react/shared/menu-item/index.tsx -var import_react33 = __toESM(require_react()); +var import_react23 = __toESM(require_react()); + +// src/react/shared/flex/index.tsx +var import_jsx_runtime23 = __toESM(require_jsx_runtime()); +function Flex({ + flexDir = "row", + justify = "flex-start", + align = "flex-start", + wrap = "wrap", + width, + height, + children +}) { + return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)( + "div", + { + className: "dataloom-flex", + style: { + flexDirection: flexDir, + justifyContent: justify, + alignItems: align, + flexWrap: wrap, + width, + height + }, + children + } + ); +} + +// src/react/shared/menu-item/index.tsx +var import_jsx_runtime24 = __toESM(require_jsx_runtime()); function MenuItem({ isFocusable = true, lucideId, @@ -47801,8 +49182,8 @@ function MenuItem({ onClick, isSelected = false }) { - const ref = import_react33.default.useRef(null); - import_react33.default.useEffect(() => { + const ref = import_react23.default.useRef(null); + import_react23.default.useEffect(() => { if (!ref.current) return; if (isSelected) { @@ -47818,119 +49199,119 @@ function MenuItem({ function handleKeyDown(e) { if (e.key === "Enter") { e.stopPropagation(); - if (!onClick) - return; - onClick(); + onClick == null ? void 0 : onClick(); } } - let className = "NLT__menu-item NLT__selectable"; + let className = "dataloom-menu-item dataloom-selectable"; if (isSelected) - className += " NLT__selected"; + className += " dataloom-selected"; if (isFocusable) - className += " NLT__focusable"; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - ref, - tabIndex: 0, - className, - css: import_emotion_react_cjs.css` - display: flex; - align-items: center; - padding: var(--nlt-spacing--sm) var(--nlt-spacing--lg); - width: 100%; - `, - "aria-label": ariaLabel, - onClick: handleClick, - onKeyDown: handleKeyDown, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Flex, { - justify: "space-between", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - children: [ - lucideId !== void 0 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { - width: "unset", - pb: "sm", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { - lucideId - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { - value: name - }) - ] - }), - value !== void 0 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { - variant: "faint", - value - }) - ] - }) - }); + className += " dataloom-focusable"; + return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)( + "div", + { + ref, + tabIndex: 0, + className, + "aria-label": ariaLabel, + onClick: handleClick, + onKeyDown: handleKeyDown, + children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(Flex, { justify: "space-between", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(Stack, { isHorizontal: true, children: [ + lucideId !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Padding, { width: "unset", pb: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Icon, { lucideId }) }), + /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text, { value: name }) + ] }), + value !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text, { variant: "faint", value }) + ] }) + } + ); } -// src/react/table-app/row-options/components/RowMenu/index.tsx -var RowMenu = import_react34.default.forwardRef(function RowMenu2({ id: id2, rowId, isOpen, top, left, onDeleteClick }, ref) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { - id: id2, - isOpen, - top, - left, - ref, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__row-menu", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - lucideId: "trash-2", - name: "Delete", - onClick: () => onDeleteClick(rowId) - }) - }) - }); -}); -var RowMenu_default = RowMenu; +// src/react/loom-app/row-options/row-menu/index.tsx +var import_jsx_runtime25 = __toESM(require_jsx_runtime()); +function RowOptions({ + id: id2, + isOpen, + triggerPosition, + onDeleteClick, + onInsertAboveClick, + onInsertBelowClick, + onRequestClose, + onClose +}) { + return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + Menu, + { + id: id2, + isOpen, + openDirection: "bottom-right", + triggerPosition, + onRequestClose, + onClose, + children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "dataloom-row-menu", children: [ + /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + MenuItem, + { + lucideId: "trash-2", + name: "Delete", + onClick: () => onDeleteClick() + } + ), + /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + MenuItem, + { + lucideId: "chevrons-up", + name: "Insert above", + onClick: () => onInsertAboveClick() + } + ), + /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + MenuItem, + { + lucideId: "chevrons-down", + name: "Insert below", + onClick: () => onInsertBelowClick() + } + ) + ] }) + } + ); +} -// src/shared/menu/hooks.ts -var import_react35 = __toESM(require_react()); -var useMenu = (level, options) => { - const { shouldRequestOnClose = false } = options || {}; - const [menu] = import_react35.default.useState({ - id: "m" + v4_default(), - level, - shouldRequestOnClose - }); - const menuRef = import_react35.default.useRef(null); +// src/react/loom-app/row-options/index.tsx +var import_jsx_runtime26 = __toESM(require_jsx_runtime()); +function RowOptions2({ + rowId, + onDeleteClick, + onInsertAboveClick, + onInsertBelowClick +}) { const { - isMenuOpen, - openMenu, - closeTopMenu, - menuCloseRequest, - closeAllMenus - } = useMenuState(); - return { menu, - menuRef, - isMenuOpen: isMenuOpen(menu), - menuCloseRequest: (menuCloseRequest == null ? void 0 : menuCloseRequest.id) === menu.id ? menuCloseRequest : null, - openMenu, - closeTopMenu, - closeAllMenus - }; -}; - -// src/react/table-app/row-options/index.tsx -function RowOptions({ rowId, onDeleteClick }) { - const { menu, isMenuOpen, menuRef, closeTopMenu } = useMenu(0 /* ONE */); - const { triggerRef, triggerPosition } = useMenuTriggerPosition(); - useShiftMenu(triggerRef, menuRef, isMenuOpen, { - openDirection: "right" - }); + triggerRef, + triggerPosition, + isOpen, + onOpen, + onClose, + onRequestClose + } = useMenu(); const { dragData, touchDropZone, setDragData, setTouchDropZone } = useDragContext(); - const { tableState, setTableState } = useTableState(); - function handleDeleteClick(rowId2) { - onDeleteClick(rowId2); - closeTopMenu(); + const { loomState, setLoomState } = useLoomState(); + function handleDeleteClick() { + onDeleteClick(rowId); + onClose(); + } + function handleInsertAboveClick() { + onInsertAboveClick(rowId); + onClose(); + } + function handleInsertBelowClick() { + onInsertBelowClick(rowId); + onClose(); } function handleMouseDown(e) { const el = e.target; - const row = el.closest("tr"); + const row = el.closest(".dataloom-row"); if (row) { row.setAttr("draggable", true); const dragStartEvent = new DragEvent("dragstart"); @@ -47943,7 +49324,7 @@ function RowOptions({ rowId, onDeleteClick }) { function handleTouchStart(e) { e.stopPropagation(); const targetEl = e.currentTarget; - const rowEl = targetEl.closest("tr"); + const rowEl = targetEl.closest(".dataloom-row"); if (!rowEl) throw new Error("Row not found"); const rowId2 = getRowId(rowEl); @@ -47962,7 +49343,9 @@ function RowOptions({ rowId, onDeleteClick }) { const elementUnderneath = document.elementFromPoint(clientX, clientY); if (!elementUnderneath) return; - const rowEl = elementUnderneath.closest("tr"); + const rowEl = elementUnderneath.closest( + ".dataloom-row" + ); if (!rowEl) return; const targetId = getRowId(rowEl); @@ -47990,7 +49373,7 @@ function RowOptions({ rowId, onDeleteClick }) { const touchY = e.changedTouches[0].clientY; const isInsideDropZone = touchX >= touchDropZone.left && touchX <= touchDropZone.right && touchY >= touchDropZone.top && touchY <= touchDropZone.bottom; if (isInsideDropZone) { - dropDrag(touchDropZone.id, dragData, tableState, setTableState); + dropDrag(touchDropZone.id, dragData, loomState, setLoomState); } } endDrag(); @@ -48001,1410 +49384,425 @@ function RowOptions({ rowId, onDeleteClick }) { removeDragHover(); } function addDragHover(rowEl) { - const children = rowEl.querySelectorAll("td:not(:last-child)"); + const children = rowEl.querySelectorAll(".dataloom-cell"); for (let i2 = 0; i2 < children.length; i2++) { - children[i2].classList.add("NLT__tr--drag-over"); + children[i2].classList.add("dataloom-tr--drag-over"); } } function removeDragHover() { - const children = document.querySelectorAll(".NLT__tr--drag-over"); + const children = document.querySelectorAll(".dataloom-tr--drag-over"); for (let i2 = 0; i2 < children.length; i2++) { - children[i2].classList.remove("NLT__tr--drag-over"); + children[i2].classList.remove("dataloom-tr--drag-over"); } } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__row-options", - css: import_emotion_react_cjs.css` - width: 100%; - height: 100%; - `, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - ref: triggerRef, - css: import_emotion_react_cjs.css` - width: 100%; - height: 100%; - padding-left: 5px; - `, - onTouchStart: handleTouchStart, - onTouchMove: handleTouchMove, - onTouchEnd: handleTouchEnd, - onTouchCancel: handleTouchCancel, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuButton, { + return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "dataloom-row-options", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Padding, { p: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + "div", + { + className: "dataloom-row-options__container", + onTouchStart: handleTouchStart, + onTouchMove: handleTouchMove, + onTouchEnd: handleTouchEnd, + onTouchCancel: handleTouchCancel, + children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + menu_button_default, + { + ref: triggerRef, menu, - icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { - lucideId: "grip-vertical" - }), + icon: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Icon, { lucideId: "grip-vertical" }), ariaLabel: "Drag to move or click to open", - onMouseDown: handleMouseDown - }) - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(RowMenu_default, { + onMouseDown: handleMouseDown, + onOpen + } + ) + } + ) }) }), + /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + RowOptions, + { id: menu.id, - rowId, - ref: menuRef, - isOpen: isMenuOpen, - top: triggerPosition.top, - left: triggerPosition.left, - onDeleteClick: handleDeleteClick - }) - ] - }); + isOpen, + triggerPosition, + onDeleteClick: handleDeleteClick, + onInsertAboveClick: handleInsertAboveClick, + onInsertBelowClick: handleInsertBelowClick, + onRequestClose, + onClose + } + ) + ] }); } -// src/react/table-app/option-bar/sort-button.tsx -function SortBubble({ - sortDir, - markdown, - onRemoveClick -}) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - css: import_emotion_react_cjs.css` - border-radius: 8px; - padding: 2px 6px; - user-select: none; - color: var(--text-on-accent); - border: 1px solid var(--background-modifier-border); - background-color: var(--color-accent); - `, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "lg", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "sm", - children: [ - sortDir === "asc" /* ASC */ ? /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { - lucideId: "arrow-up" - }) : /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { - lucideId: "arrow-down" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("span", { - css: import_emotion_react_cjs.css` - max-width: 150px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - `, - children: markdown - }) - ] - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { - isSmall: true, - invertFocusColor: true, - icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { - lucideId: "x", - color: "var(--text-on-accent)" - }), - ariaLabel: "Remove sort", - onClick: onRemoveClick - }) - ] - }) - }); -} - -// src/react/shared/switch/index.tsx -function Switch({ isChecked, ariaLabel, onToggle }) { - const { isDarkMode } = useAppSelector((state) => state.global); - function handleKeyDown(e) { - if (e.key === "Enter") { - e.stopPropagation(); - onToggle(!isChecked); +// src/react/shared/input/index.tsx +var import_react24 = __toESM(require_react()); +var import_jsx_runtime27 = __toESM(require_jsx_runtime()); +var Input = import_react24.default.forwardRef( + ({ + isTransparent, + showBorder, + hasError, + value, + focusOutline = "accent", + placeholder, + inputMode, + onChange, + onKeyDown, + onBlur + }, ref) => { + let className = "dataloom-input dataloom-focusable"; + if (isTransparent) { + className += " dataloom-input--transparent"; + } else if (showBorder) { + className += " dataloom-input--border"; } - } - let className = "checkbox-container NLT__switch NLT__focusable"; - if (isChecked) - className += " is-enabled"; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - tabIndex: 0, - className, - css: import_emotion_react_cjs.css` - transition: none !important; - &:focus-visible { - outline: 2px solid ${isDarkMode ? "var(--text-on-accent);" : "var(--text-on-accent-inverted);"} - outline-offset: 0px; - } - `, - "aria-label": ariaLabel, - onClick: () => onToggle(!isChecked), - onKeyDown: handleKeyDown, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { - type: "checkbox" - }) - }); -} - -// src/react/shared/wrap/index.tsx -function Wrap({ - justify, - align = "center", - spacingX = "md", - spacingY = "md", - width, - children -}) { - const justifyContent = getDynamicSize("flex-start", justify); - const renderWidth = getDynamicSize("100%", width); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - css: import_emotion_react_cjs.css` - width: ${renderWidth}; - display: flex; - flex-wrap: wrap; - row-gap: ${getSpacing(spacingX)}; - column-gap: ${getSpacing(spacingY)}; - justify-content: ${justifyContent}; - align-items: ${align}; - `, - children - }); -} - -// src/react/table-app/option-bar/toggle-column-menu.tsx -var import_react40 = __toESM(require_react()); -var ToggleColumnMenu = import_react40.default.forwardRef( - function ToggleColumnMenu2({ id: id2, top, left, isOpen, columns, onToggle }, ref) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { - isOpen, - id: id2, - top, - left, - ref, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__toggle-column-menu", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { - p: "md", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Stack, { - spacing: "md", - isVertical: true, - children: columns.map((column) => { - const { id: id3, markdown, isVisible } = column; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Wrap, { - justify: "space-between", - spacingX: "4xl", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { - value: markdown, - maxWidth: "250px" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Switch, { - isChecked: isVisible, - onToggle: () => onToggle(id3) - }) - ] - }, id3); - }) - }) - }) - }) - }); + if (inputMode === "numeric") + className += " dataloom-input--numeric"; + if (focusOutline === "default") { + className += " dataloom-input__focus-outline--default"; + } else if (focusOutline === "none") { + className += " dataloom-input__focus-outline--none"; + } + if (hasError) + className += " dataloom-input--error"; + return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + "input", + { + ref, + className, + placeholder, + type: "text", + inputMode, + autoFocus: true, + value, + onChange: (e) => onChange(e.target.value), + onKeyDown, + onBlur + } + ); } ); -var toggle_column_menu_default = ToggleColumnMenu; +var input_default = Input; -// src/react/table-app/option-bar/toggle-column.tsx -var import_react41 = __toESM(require_react()); -var areEqual = (prevProps, nextProps) => { - const toggleMatches = prevProps.onToggle == nextProps.onToggle; - const columnsMatch = JSON.stringify(prevProps.columns) === JSON.stringify(nextProps.columns); - return toggleMatches && columnsMatch; -}; -var ToggleColumn = ({ columns, onToggle }) => { - const { menu, isMenuOpen, menuRef } = useMenu(0 /* ONE */); - const { triggerPosition, triggerRef } = useMenuTriggerPosition(); - useShiftMenu(triggerRef, menuRef, isMenuOpen, { - openDirection: "left" - }); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - ref: triggerRef, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuButton, { - isLink: true, - menu, - children: "Toggle" - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(toggle_column_menu_default, { - id: menu.id, - ref: menuRef, - top: triggerPosition.top, - left: triggerPosition.left, - isOpen: isMenuOpen, - columns, - onToggle - }) - ] - }); -}; -var toggle_column_default = import_react41.default.memo(ToggleColumn, areEqual); - -// src/react/table-app/option-bar/filter/filter.tsx -var import_react48 = __toESM(require_react()); - -// src/react/table-app/shared-styles.ts -var selectStyle = import_emotion_react_cjs.css` - &:focus { - box-shadow: none !important; - transition: none !important; - } -`; -var baseInputStyle = import_emotion_react_cjs.css` - width: 100%; - height: 100%; - transition: none !important; - font-size: var(--font-ui-medium) !important; - box-shadow: none !important; -`; -var borderlessStyle = import_emotion_react_cjs.css` - ${baseInputStyle} - border: 0 !important; - border-radius: 0 !important; -`; -var textAreaStyle = import_emotion_react_cjs.css` - ${borderlessStyle} - overflow: hidden; - padding: var(--nlt-cell-spacing-x) var(--nlt-cell-spacing-y); - resize: none; - - &:focus { - outline: 2px solid var(--background-modifier-border-focus); - outline-offset: -2px; - } -`; -var numberInputStyle = import_emotion_react_cjs.css` - ${borderlessStyle} - text-align: right; - - &:focus { - outline: 2px solid var(--background-modifier-border-focus); - outline-offset: -2px; - } -`; -var transparentInputStyle = import_emotion_react_cjs.css` - ${baseInputStyle} - background-color: transparent !important; - border: 0px !important; - padding: 5px 0px; -`; -var borderInputStyle = import_emotion_react_cjs.css` - ${baseInputStyle} - border: 1px solid var(--table-border-color) !important; - padding: 5px 10px; - background-color: var(--background-secondary); -`; - -// src/react/table-app/option-bar/filter/filter-type-select.tsx -function FilterRowDropdown({ - id: id2, - cellType, - value, - onChange -}) { - function handleKeyDown(e) { - if (e.key === "Enter") { - e.stopPropagation(); - } - } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("select", { - tabIndex: 0, - className: "NLT__focusable", - css: import_emotion_react_cjs.css` - ${selectStyle} - `, - value, - onChange: (e) => onChange(id2, e.target.value), - onKeyDown: handleKeyDown, - children: [ - cellType === "checkbox" /* CHECKBOX */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "is" /* IS */, - children: "Is" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "is-not" /* IS_NOT */, - children: "Is not" - }) - ] - }), - cellType === "tag" /* TAG */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "is" /* IS */, - children: "Is" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "is-not" /* IS_NOT */, - children: "Is not" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "is-empty" /* IS_EMPTY */, - children: "Is empty" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "is-not-empty" /* IS_NOT_EMPTY */, - children: "Is not empty" - }) - ] - }), - cellType === "multi-tag" /* MULTI_TAG */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "contains" /* CONTAINS */, - children: "Contains" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "does-not-contain" /* DOES_NOT_CONTAIN */, - children: "Does not contain" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "is-empty" /* IS_EMPTY */, - children: "Is empty" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "is-not-empty" /* IS_NOT_EMPTY */, - children: "Is not empty" - }) - ] - }), - (cellType === "text" /* TEXT */ || cellType === "file" /* FILE */) && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "is" /* IS */, - children: "Is" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "is-not" /* IS_NOT */, - children: "Is not" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "contains" /* CONTAINS */, - children: "Contains" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "does-not-contain" /* DOES_NOT_CONTAIN */, - children: "Does not contain" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "starts-with" /* STARTS_WITH */, - children: "Starts with" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "ends-with" /* ENDS_WITH */, - children: "Ends with" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "is-empty" /* IS_EMPTY */, - children: "Is empty" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "is-not-empty" /* IS_NOT_EMPTY */, - children: "Is not empty" - }) - ] - }) - ] - }); -} - -// src/react/table-app/option-bar/filter/filter-column-select.tsx -function FilterColumnDropdown({ - id: id2, - columns, - value, - onChange -}) { - function handleKeyDown(e) { - if (e.key === "ArrowDown" || e.key === "ArrowUp" || e.key === "Enter") { - e.stopPropagation(); - } - } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("select", { - tabIndex: 0, - className: "NLT__focusable", - css: import_emotion_react_cjs.css` - ${selectStyle} - max-width: 175px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - `, - value, - onChange: (e) => onChange(id2, e.target.value), - onKeyDown: handleKeyDown, - children: columns.map((column) => { - const { id: id3, markdown } = column; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: id3, - children: markdown - }, id3); - }) - }); -} - -// node_modules/react-select/dist/react-select.cjs.mjs -var import_react_select_cjs_default = __toESM(require_react_select_cjs_default(), 1); - -// src/shared/table-state/constants.ts -var MIN_COLUMN_WIDTH = 40; -var CHECKBOX_MARKDOWN_CHECKED = "[x]"; -var CHECKBOX_MARKDOWN_UNCHECKED = "[ ]"; - -// src/react/table-app/option-bar/filter/filter-text-input.tsx -function FilterTextInput({ - id: id2, - text, - tagIds, - columnTags, - cellType, - onTextChange, - onTagsChange -}) { - function handleKeyDown(e) { - if (e.key === "Enter") { - e.stopPropagation(); - } - } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - cellType !== "checkbox" /* CHECKBOX */ && cellType !== "tag" /* TAG */ && cellType !== "multi-tag" /* MULTI_TAG */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { - className: "NLT__focusable", - css: import_emotion_react_cjs.css` - ${baseInputStyle} - width: 150px !important; - `, - value: text, - type: "text", - onChange: (e) => onTextChange(id2, e.target.value) - }), - cellType === "checkbox" /* CHECKBOX */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("select", { - tabIndex: 0, - className: "NLT__focusable", - css: import_emotion_react_cjs.css` - ${selectStyle} - `, - value: text, - onChange: (e) => onTextChange(id2, e.target.value), - onKeyDown: handleKeyDown, - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: "", - children: "Select an option" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: CHECKBOX_MARKDOWN_CHECKED, - children: "Checked" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: CHECKBOX_MARKDOWN_UNCHECKED, - children: "Unchecked" - }) - ] - }), - (cellType === "tag" /* TAG */ || cellType === "multi-tag" /* MULTI_TAG */) && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_react_select_cjs_default._default, { - className: "react-select NLT__focusable", - styles: { - placeholder: (baseStyles) => __spreadProps(__spreadValues({}, baseStyles), { - fontSize: "var(--font-ui-small)" - }), - control: (base) => __spreadProps(__spreadValues({}, base), { - border: 0, - backgroundColor: "var(--interactive-normal)", - boxShadow: "var(--input-shadow)", - borderRadius: "var(--input-radius)", - "&:focus-within": { - boxShadow: "0 0 0px 3px var(--background-modifier-border-focus)" - }, - "&:hover": { - boxShadow: "var(--input-shadow-hover)", - backgroundColor: "var(--interactive-hover)" - } - }), - option: (base, state) => __spreadProps(__spreadValues({}, base), { - fontSize: "var(--font-ui-small)", - backgroundColor: state.isSelected ? "var(--background-secondary)" : "var(--background-primary)", - "&:hover": { - backgroundColor: "var(--interactive-hover)" - } - }), - input: (base) => __spreadProps(__spreadValues({}, base), { - color: "var(--text-on-accent)", - fontSize: "var(--font-ui-small)" - }), - menu: (base) => __spreadProps(__spreadValues({}, base), { - backgroundColor: "var(--background-primary)" - }), - menuList: (base) => __spreadProps(__spreadValues({}, base), { - backgroundColor: "var(--background-primary)", - height: "50px", - overflowY: "scroll" - }), - singleValue: (base) => __spreadProps(__spreadValues({}, base), { - borderRadius: "8px", - color: "var(--text-on-accent)", - backgroundColor: "var(--color-accent)", - fontSize: "var(--font-ui-smaller)", - padding: "3px", - paddingLeft: "6px" - }), - multiValue: (base) => __spreadProps(__spreadValues({}, base), { - backgroundColor: "var(--color-accent)", - borderRadius: "8px" - }), - multiValueLabel: (base) => __spreadProps(__spreadValues({}, base), { - fontSize: "var(--font-ui-smaller)", - color: "var(--text-on-accent)" - }), - multiValueRemove: (base) => __spreadProps(__spreadValues({}, base), { - "&:hover": { - backgroundColor: "var(--background-modifier-hover)", - color: "var(--text-on-accent)" - } - }) - }, - getOptionLabel: (tag) => tag.markdown, - getOptionValue: (tag) => tag.id, - options: columnTags, - isClearable: false, - isMulti: cellType === "multi-tag" /* MULTI_TAG */, - backspaceRemovesValue: true, - value: columnTags.filter((tag) => tagIds.includes(tag.id)), - onChange: (value) => { - if (cellType === "multi-tag" /* MULTI_TAG */) { - onTagsChange( - id2, - value == null ? void 0 : value.map((tag) => tag.id) - ); - } else { - onTagsChange( - id2, - [value == null ? void 0 : value.id] - ); - } - } - }) - ] - }); -} - -// src/react/table-app/option-bar/filter/filter-row.tsx -function FilterRow({ - id: id2, - columns, - isEnabled, - columnId, - filterType, - columnTags, - tagIds, - cellType, - text, - onToggle, - onColumnChange, - onFilterTypeChange, - onTextChange, - onDeleteClick, - onTagsChange -}) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Wrap, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(FilterColumnDropdown, { - id: id2, - columns, - value: columnId, - onChange: onColumnChange - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(FilterRowDropdown, { - id: id2, - cellType, - value: filterType, - onChange: onFilterTypeChange - }), - filterType !== "is-empty" /* IS_EMPTY */ && filterType !== "is-not-empty" /* IS_NOT_EMPTY */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(FilterTextInput, { - id: id2, - tagIds, - columnTags, - cellType, - text, - onTextChange, - onTagsChange - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - grow: true, - justify: "flex-end", - align: "center", - spacing: "lg", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { - icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { - lucideId: "trash-2" - }), - ariaLabel: "Delete filter rule", - onClick: () => onDeleteClick(id2) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Switch, { - isChecked: isEnabled, - ariaLabel: isEnabled ? "Disable filter rule" : "Enable filter rule", - onToggle: () => onToggle(id2) - }) - ] - }) - ] - }); -} - -// src/react/table-app/option-bar/filter/filter-menu.tsx -var import_react46 = __toESM(require_react()); -var FilterMenu = import_react46.default.forwardRef(function FilterMenu2({ - id: id2, - top, - left, - isOpen, - columns, - filterRules, - onAddClick, - onToggle, - onColumnChange, - onFilterTypeChange, - onTextChange, - onDeleteClick, - onTagsChange -}, ref) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { - isOpen, - id: id2, - top, - left, - maxHeight: 255, - ref, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__filter-menu", - css: import_emotion_react_cjs.css` - width: ${isMobileSize() ? "calc(100vw - 30px)" : "unset"}; - `, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { - p: "md", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "lg", - isVertical: true, - children: [ - filterRules.map((rule) => { - const { - id: id3, - text, - columnId, - isEnabled, - type: filterType, - tagIds - } = rule; - const column = columns.find( - (column2) => column2.id === columnId - ); - if (!column) - throw new ColumNotFoundError(columnId); - const { tags, type: cellType } = column; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(FilterRow, { - id: id3, - columns, - text, - columnTags: tags, - cellType, - tagIds, - filterType, - columnId, - isEnabled, - onTextChange, - onColumnChange, - onFilterTypeChange, - onToggle, - onDeleteClick, - onTagsChange - }, id3); - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { - icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { - lucideId: "plus" - }), - ariaLabel: "Add filter rule", - onClick: () => onAddClick(columns[0].id) - }), - filterRules.length === 0 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { - value: "No rules to display" - }) - ] - }) - ] - }) - }) - }) - }); -}); -var filter_menu_default = FilterMenu; - -// src/react/table-app/option-bar/filter/filter.tsx -var areEqual2 = (prevProps, nextProps) => { - const columnsMatch = JSON.stringify(prevProps.columns) === JSON.stringify(nextProps.columns); - const filterRulesMatch = JSON.stringify(prevProps.filterRules) === JSON.stringify(nextProps.filterRules); - return columnsMatch && filterRulesMatch; -}; -var Filter = ({ - columns, - filterRules, - onAddClick, - onColumnChange, - onDeleteClick, - onFilterTypeChange, - onToggle, - onTextChange, - onTagsChange -}) => { - const { menu, menuRef, isMenuOpen } = useMenu(0 /* ONE */); - const { triggerRef, triggerPosition } = useMenuTriggerPosition(); - useShiftMenu(triggerRef, menuRef, isMenuOpen, { - openDirection: "left" - }); - const previousLength = usePrevious(filterRules.length); - import_react48.default.useEffect(() => { - if (previousLength !== void 0) { - if (previousLength < filterRules.length) { - if (menuRef.current) { - menuRef.current.scrollTop = menuRef.current.scrollHeight; - } - } - } - }, [previousLength, filterRules.length, menuRef]); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - ref: triggerRef, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuButton, { - isLink: true, - menu, - children: "Filter" - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(filter_menu_default, { - id: menu.id, - ref: menuRef, - top: triggerPosition.top, - left: triggerPosition.left, - isOpen: isMenuOpen, - columns, - filterRules, - onTextChange, - onColumnChange, - onFilterTypeChange, - onDeleteClick, - onAddClick, - onToggle, - onTagsChange - }) - ] - }); -}; -var filter_default = import_react48.default.memo(Filter, areEqual2); - -// src/react/table-app/option-bar/search-bar.tsx +// src/react/loom-app/option-bar/search-bar/index.tsx +var import_jsx_runtime28 = __toESM(require_jsx_runtime()); function SearchBar() { - const { searchText, setSearchText, isSearchBarVisible, toggleSearchBar } = useTableState(); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "lg", - children: [ - isSearchBarVisible && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { - className: "NLT__focusable", - css: import_emotion_react_cjs.css` - ${baseInputStyle} - max-width: 200px; - `, - autoFocus: true, - type: "text", + const { searchText, setSearchText, isSearchBarVisible, toggleSearchBar } = useLoomState(); + return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "dataloom-search-bar", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Stack, { spacing: "lg", isHorizontal: true, children: [ + isSearchBarVisible && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)( + input_default, + { placeholder: "Type to search...", value: searchText, - onChange: (e) => setSearchText(e.target.value) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { - icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { - lucideId: "search" - }), + onChange: (value) => setSearchText(value) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime28.jsx)( + Button, + { + icon: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Icon, { lucideId: "search" }), ariaLabel: "Search", onClick: () => toggleSearchBar() - }) - ] - }); + } + ) + ] }) }); } -// src/react/shared/divider/index.tsx -function Divider({ - isVertical = false, - width = "100%", - height = "100%" +// src/react/shared/bubble/index.tsx +var import_jsx_runtime29 = __toESM(require_jsx_runtime()); +function Bubble({ + canRemove, + icon, + value, + onRemoveClick }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("hr", { - css: import_emotion_react_cjs.css` - margin: 0; - width: ${!isVertical ? width : "unset"}; - height: ${isVertical === true ? height : "unset"}; - border-top: ${isVertical === false ? "1px solid var(--hr-color)" : "unset"}; - border-left: ${isVertical === true ? "1px var(--hr-color) solid" : "unset"}; - ` - }); + return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "dataloom-bubble", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Stack, { spacing: "lg", isHorizontal: true, children: [ + /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Stack, { spacing: "sm", isHorizontal: true, children: [ + icon, + /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { children: value }) + ] }), + canRemove && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + Button, + { + isSmall: true, + invertFocusColor: true, + icon: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Icon, { lucideId: "x", color: "var(--text-on-accent)" }), + ariaLabel: "Remove sort", + onClick: onRemoveClick + } + ) + ] }) }); } -// src/react/table-app/option-bar/active-filter-bubble.tsx +// src/react/loom-app/option-bar/active-filter-bubble/index.tsx +var import_jsx_runtime30 = __toESM(require_jsx_runtime()); function ActiveFilterBubble({ numActive }) { if (numActive === 0) - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, {}); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - css: import_emotion_react_cjs.css` - border-radius: 8px; - padding: 2px 6px; - color: var(--text-on-accent); - border: 1px solid var(--background-modifier-border); - background-color: var(--color-accent); - `, - children: [ - numActive, - " active filter", - numActive > 1 ? "s" : "" - ] - }); + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_jsx_runtime30.Fragment, {}); + const value = `${numActive} active filter${numActive > 1 ? "s" : ""}`; + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "dataloom-active-filter-bubble", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Bubble, { value }) }); } -// src/shared/table-state/filter-by-rules.ts -var isCellTypeFilterable = (cellType) => { - switch (cellType) { - case "text" /* TEXT */: - case "file" /* FILE */: - case "tag" /* TAG */: - case "multi-tag" /* MULTI_TAG */: - case "checkbox" /* CHECKBOX */: - return true; - default: - return false; - } -}; -var filterBodyRowsByRules = (prevState) => { - const { columns, bodyCells, bodyRows, filterRules } = prevState.model; - const columnMap = /* @__PURE__ */ new Map(); - columns.forEach((column) => columnMap.set(column.id, column)); - const cellMatches = /* @__PURE__ */ new Map(); - bodyCells.forEach((cell) => { - const column = columnMap.get(cell.columnId); - if (!column) - throw new ColumNotFoundError(cell.columnId); - const { tags } = column; - const doesMatch = doesCellMatchRules( - cell, - column.type, - tags, - filterRules - ); - cellMatches.set(cell.id, doesMatch); - }); - return bodyRows.filter((row) => { - const filteredCells = bodyCells.filter((cell) => cell.rowId === row.id); - return filteredCells.every((cell) => cellMatches.get(cell.id) === true); - }); -}; -var doesCellMatchRules = (cell, cellType, tags, rules) => { - return rules.every((rule) => doesCellMatchRule(cell, cellType, tags, rule)); -}; -var doesCellMatchRule = (cell, cellType, tags, rule) => { - if (rule.columnId !== cell.columnId) - return true; - if (!isCellTypeFilterable(cellType)) - return true; - if (rule.isEnabled) { - if (cellType === "text" /* TEXT */ || cellType === "file" /* FILE */) { - return doesTextMatch(cell.markdown, rule.text, rule.type); - } else if (cellType === "tag" /* TAG */ || cellType === "multi-tag" /* MULTI_TAG */) { - const cellTags = tags.filter((tag) => cell.tagIds.includes(tag.id)).map((tag) => tag.markdown); - const ruleTags = tags.filter((tag) => rule.tagIds.includes(tag.id)); - if (cellTags.length === 0) { - return doesTextMatch("", "", rule.type); - } - return ruleTags.every( - (ruleTag) => doesTagMatch(cellTags, ruleTag.markdown, rule.type) - ); - } else if (cellType === "checkbox" /* CHECKBOX */) { - return doesTextMatch(cell.markdown, rule.text, rule.type); - } - } - return true; -}; -var doesTagMatch = (markdown, ruleText, filterType) => { - switch (filterType) { - case "is" /* IS */: - return markdown[0] === ruleText; - case "is-not" /* IS_NOT */: - return markdown[0] !== ruleText; - case "contains" /* CONTAINS */: - return markdown.some((tag) => ruleText.includes(tag)); - case "does-not-contain" /* DOES_NOT_CONTAIN */: - return markdown.every((tag) => !ruleText.includes(tag)); - case "is-empty" /* IS_EMPTY */: - return markdown.length === 0; - case "is-not-empty" /* IS_NOT_EMPTY */: - return markdown.length !== 0; - } -}; -var doesTextMatch = (markdown, ruleText, filterType) => { - const compareMarkdown = markdown.toLowerCase().trim(); - const compareRuleText = ruleText.toLowerCase().trim(); - if (filterType !== "is-not-empty" /* IS_NOT_EMPTY */ && filterType !== "is-empty" /* IS_EMPTY */) { - if (compareRuleText === "") - return true; - if (markdown === "") - return true; - } - switch (filterType) { - case "is" /* IS */: - return compareMarkdown === compareRuleText; - case "is-not" /* IS_NOT */: - return compareMarkdown !== compareRuleText; - case "contains" /* CONTAINS */: - return compareMarkdown.includes(compareRuleText); - case "does-not-contain" /* DOES_NOT_CONTAIN */: - return !compareMarkdown.includes(compareRuleText); - case "starts-with" /* STARTS_WITH */: - return compareMarkdown.startsWith(compareRuleText); - case "ends-with" /* ENDS_WITH */: - return compareMarkdown.endsWith(compareRuleText); - case "is-empty" /* IS_EMPTY */: - return compareMarkdown === ""; - case "is-not-empty" /* IS_NOT_EMPTY */: - return compareMarkdown !== ""; - default: - throw new Error("Filter type not yet supported"); - } -}; +// src/react/loom-app/option-bar/more-menu/index.tsx +var import_react31 = __toESM(require_react()); -// src/react/table-app/option-bar/index.tsx -var SortBubbleList = ({ - headerCells, - columns, - onRemoveClick -}) => { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Stack, { - spacing: "sm", - children: headerCells.map((cell, i2) => { - const column = columns.find((c2) => c2.id === cell.columnId); - if (!column) - throw new ColumNotFoundError(cell.columnId); - const { markdown, columnId } = cell; - const { sortDir } = column; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(SortBubble, { - sortDir, - markdown, - onRemoveClick: () => onRemoveClick(columnId) - }, i2); - }) - }); -}; -function OptionBar({ - headerCells, - columns, - filterRules, - onSortRemoveClick, - onColumnToggle, - onRuleToggle, - onRuleColumnChange, - onRuleFilterTypeChange, - onRuleTextChange, - onRuleDeleteClick, - onRuleAddClick, - onRuleTagsChange +// src/react/shared/submenu/index.tsx +var import_jsx_runtime31 = __toESM(require_jsx_runtime()); +function Submenu({ title, children, onBackClick }) { + return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(Padding, { p: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(Stack, { spacing: "md", children: [ + /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(Stack, { isHorizontal: true, children: [ + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + Button, + { + icon: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Icon, { lucideId: "arrow-left" }), + onClick: () => { + onBackClick(); + } + } + ), + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Padding, { pr: "md", children: title }) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Divider, {}) + ] }), + children + ] }); +} + +// src/react/loom-app/option-bar/more-menu/frozen-columns-submenu.tsx +var import_jsx_runtime32 = __toESM(require_jsx_runtime()); +function FrozenColumnsSubmenu({ + numFrozenColumns, + onFrozenColumnsChange, + onBackClick }) { - const sortedCells = headerCells.filter((cell) => { - const columnId = cell.columnId; - const column = columns.find((c2) => c2.id === columnId); - if (!column) - throw new ColumNotFoundError(columnId); - return column.sortDir !== "default" /* NONE */; - }); - const activeRules = filterRules.filter((rule) => rule.isEnabled); - const columnsWithMarkdown = columns.map((column) => { - const headerCell = headerCells.find( - (cell) => cell.columnId === column.id - ); - if (!headerCell) - throw new CellNotFoundError({ - columnId: column.id - }); - return __spreadProps(__spreadValues({}, column), { - markdown: headerCell.markdown - }); - }); - const filterableColumns = columnsWithMarkdown.filter( - (column) => { - const { type } = column; - return isCellTypeFilterable(type); - } + const { defaultFrozenColumnCount } = useAppSelector( + (state) => state.global.settings ); - const sortedColumn = columns.find((c2) => c2.sortDir !== "default" /* NONE */); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__option-bar", - css: import_emotion_react_cjs.css` - width: 100%; - padding-left: var(--nlt-spacing--lg); - padding-bottom: var(--nlt-spacing--md); - padding-top: var(--nlt-spacing--md); - border-bottom: 1px solid var(--background-modifier-border); - `, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { - px: "xl", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Stack, { - spacing: "lg", - isVertical: true, - align: "center", - minHeight: "40px", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Wrap, { - justify: { base: "space-between", mobile: "flex-end" }, - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "md", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(SortBubbleList, { - headerCells: sortedCells, - columns, - onRemoveClick: onSortRemoveClick - }), - activeRules.length !== 0 && sortedColumn !== void 0 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Divider, { - isVertical: true, - height: "1.5rem" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(ActiveFilterBubble, { - numActive: activeRules.length - }) - ] - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "sm", - justify: "flex-end", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(SearchBar, {}), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(filter_default, { - columns: filterableColumns, - filterRules, - onAddClick: onRuleAddClick, - onToggle: onRuleToggle, - onColumnChange: onRuleColumnChange, - onFilterTypeChange: onRuleFilterTypeChange, - onTextChange: onRuleTextChange, - onDeleteClick: onRuleDeleteClick, - onTagsChange: onRuleTagsChange - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(toggle_column_default, { - columns: columnsWithMarkdown, - onToggle: onColumnToggle - }) - ] - }) - ] - }) - }) - }) - }); + function handlePlusClick() { + const newValue = numFrozenColumns + 1; + if (newValue > 3) + return; + onFrozenColumnsChange(newValue); + } + function handleMinusClick() { + const newValue = numFrozenColumns - 1; + if (newValue < 0) + return; + onFrozenColumnsChange(newValue); + } + return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Submenu, { title: "Freeze", onBackClick, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Padding, { py: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(Stack, { isHorizontal: true, spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( + Button, + { + icon: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Icon, { lucideId: "rotate-ccw" }), + ariaLabel: "Restore default", + onClick: () => onFrozenColumnsChange(defaultFrozenColumnCount) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( + Button, + { + icon: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Icon, { lucideId: "minus" }), + ariaLabel: "Subtract column", + onClick: () => handleMinusClick() + } + ), + /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Padding, { px: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Text, { value: numFrozenColumns }) }), + /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( + Button, + { + icon: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Icon, { lucideId: "plus" }), + ariaLabel: "Add column", + onClick: () => handlePlusClick() + } + ) + ] }) }) }); } -// src/react/table-app/function-cell/function-menu.tsx -var import_react53 = __toESM(require_react()); +// src/obsidian/modal/export-modal.tsx +var import_obsidian15 = require("obsidian"); +var import_client2 = __toESM(require_client()); -// src/shared/table-state/display-name.ts -var getShortDisplayNameForGeneralFunction = (value) => { - switch (value) { - case "count-all" /* COUNT_ALL */: - return "Count"; - case "count-not-empty" /* COUNT_NOT_EMPTY */: - return "Not empty"; - case "count-values" /* COUNT_VALUES */: - return "Values"; - case "count-empty" /* COUNT_EMPTY */: - return "Empty"; - case "count-unique" /* COUNT_UNIQUE */: - return "Unique"; - case "none" /* NONE */: - return "None"; - case "percent-empty" /* PERCENT_EMPTY */: - return "Empty"; - case "percent-not-empty" /* PERCENT_NOT_EMPTY */: - return "Not empty"; - default: - return ""; - } -}; -var getShortDisplayNameForFunctionType = (value) => { - if (isGeneralFunction(value)) - return getShortDisplayNameForGeneralFunction(value); - return getDisplayNameForNumberFunction(value); -}; -var getAriaLabelForGeneralFunction = (value) => { - switch (value) { - case "count-all" /* COUNT_ALL */: - return "Counts the total number of rows"; - case "count-empty" /* COUNT_EMPTY */: - return "Counts the number of rows with an empty cell value"; - case "count-not-empty" /* COUNT_NOT_EMPTY */: - return "Counts the number of rows with a non-empty cell value"; - case "count-unique" /* COUNT_UNIQUE */: - return "Counts the number of unique values in the column"; - case "count-values" /* COUNT_VALUES */: - return "Counts the number of values in the column"; - case "percent-empty" /* PERCENT_EMPTY */: - return "Displays the percentage of rows with an empty cell value"; - case "percent-not-empty" /* PERCENT_NOT_EMPTY */: - return "Displays the percentage of rows with a non-empty cell value"; - default: - return ""; - } -}; -var getAriaLabelForNumberFunction = (value) => { - switch (value) { - case "sum" /* SUM */: - return "Computes the sum of the cells in the column"; - case "avg" /* AVG */: - return "Computes the average of the cells in the column"; - case "min" /* MIN */: - return "Computes the minimum of the cells in the column"; - case "max" /* MAX */: - return "Computes the maximum of the cells in the column"; - case "median" /* MEDIAN */: - return "Computes the median of the cells in the column"; - case "range" /* RANGE */: - return "Computes the range (max - min) of the cells in the column"; - default: - return ""; - } -}; -var getDisplayNameForGeneralFunction = (value) => { - switch (value) { - case "count-all" /* COUNT_ALL */: - return "Count all"; - case "count-not-empty" /* COUNT_NOT_EMPTY */: - return "Count not empty"; - case "count-values" /* COUNT_VALUES */: - return "Count values"; - case "count-empty" /* COUNT_EMPTY */: - return "Count empty"; - case "count-unique" /* COUNT_UNIQUE */: - return "Count unique"; - case "none" /* NONE */: - return "None"; - case "percent-empty" /* PERCENT_EMPTY */: - return "Percent empty"; - case "percent-not-empty" /* PERCENT_NOT_EMPTY */: - return "Percent not empty"; - default: - return ""; - } -}; -var getDisplayNameForNumberFunction = (value) => { - switch (value) { - case "sum" /* SUM */: - return "Sum"; - case "avg" /* AVG */: - return "Average"; - case "min" /* MIN */: - return "Min"; - case "max" /* MAX */: - return "Max"; - case "median" /* MEDIAN */: - return "Median"; - case "range" /* RANGE */: - return "Range"; - default: - return ""; - } -}; -var getDisplayNameForDateFormat = (format) => { - switch (format) { - case "dd/mm/yyyy" /* DD_MM_YYYY */: - return "Day/Month/Year"; - case "mm/dd/yyyy" /* MM_DD_YYYY */: - return "Month/Day/Year"; - case "yyyy/mm/dd" /* YYYY_MM_DD */: - return "Year/Month/Day"; - case "full" /* FULL */: - return "Full"; - case "relative" /* RELATIVE */: - return "Relative"; - default: - return ""; - } -}; -var getDisplayNameForCurrencyType = (type) => { - switch (type) { - case "USD" /* UNITED_STATES */: - return "United States Dollar"; - case "CAD" /* CANADA */: - return "Canadian Dollar"; - case "AUD" /* AUSTRALIA */: - return "Australian Dollar"; - case "SGB" /* SINGAPORE */: - return "Singapore Dollar"; - case "CNY" /* CHINA */: - return "Yuan"; - case "JPY" /* JAPAN */: - return "Yen"; - case "COP" /* COLOMBIA */: - return "Colombian Peso"; - case "EUR" /* EUROPE */: - return "Euro"; - case "SEK" /* SWEDEN */: - return "Swedish Krona"; - case "DKK" /* DENMARK */: - return "Danish Krone"; - case "NOK" /* NORWAY */: - return "Norwegian Krone"; - case "ISK" /* ICELAND */: - return "Icelandic Kr\xF3na"; - case "BRL" /* BRAZIL */: - return "Real"; - case "GBP" /* POUND */: - return "Pound"; - case "INR" /* INDIA */: - return "Rupee"; - case "ARS" /* ARGENTINA */: - return "Argentine Peso"; - case "MXN" /* MEXICO */: - return "Mexican Peso"; - case "RUB" /* RUSSIA */: - return "Ruble"; - default: - return ""; - } -}; -var getDisplayNameForCellType = (type) => { - switch (type) { - case "text" /* TEXT */: - return "Text"; - case "embed" /* EMBED */: - return "Embed"; - case "file" /* FILE */: - return "File"; - case "number" /* NUMBER */: - return "Number"; - case "checkbox" /* CHECKBOX */: - return "Checkbox"; - case "date" /* DATE */: - return "Date"; - case "last-edited-time" /* LAST_EDITED_TIME */: - return "Last edited"; - case "creation-time" /* CREATION_TIME */: - return "Creation"; - case "tag" /* TAG */: - return "Tag"; - case "multi-tag" /* MULTI_TAG */: - return "Multi-tag"; - case "currency" /* CURRENCY */: - return "Currency"; - default: - return ""; - } -}; +// src/react/export-app/index.tsx +var import_react25 = __toESM(require_react()); -// src/react/table-app/function-cell/function-menu.tsx -var FunctionMenu = import_react53.default.forwardRef( - function FunctionMenu2({ id: id2, value, cellType, isOpen, top, left, onClick }, ref) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { - ref, - id: id2, - isOpen, - top, - left, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - className: "NLT__function-menu", - children: [ - Object.values(GeneralFunction).map((type) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - name: getDisplayNameForGeneralFunction(type), - ariaLabel: getAriaLabelForGeneralFunction(type), - onClick: () => onClick(type), - isSelected: type === value - }, type)), - (cellType === "number" /* NUMBER */ || cellType === "currency" /* CURRENCY */) && Object.values(NumberFunction).map((type) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - ariaLabel: getAriaLabelForNumberFunction(type), - name: getDisplayNameForNumberFunction(type), - onClick: () => onClick(type), - isSelected: type === value - }, type)) - ] - }) - }); - } -); -var function_menu_default = FunctionMenu; +// src/shared/export/types.ts +var ExportType = /* @__PURE__ */ ((ExportType2) => { + ExportType2["UNSELECTED"] = "Select an option"; + ExportType2["CSV"] = "CSV"; + ExportType2["MARKDOWN"] = "Markdown"; + return ExportType2; +})(ExportType || {}); -// src/react/table-app/function-cell/arithmetic.ts -var getAverage = (values) => { - return getSum(values) / values.length; -}; -var getSum = (values) => { - return values.reduce((sum, a2) => sum + a2, 0); -}; -var getMaximum = (values) => { - return Math.max(...values); -}; -var getMinimum = (values) => { - return Math.min(...values); -}; -var getMedian = (values) => { - const sortedValues = values.sort((a2, b2) => a2 - b2); - const middle = Math.floor(values.length / 2); - if (values.length % 2 === 0) { - return (sortedValues[middle - 1] + sortedValues[middle]) / 2; +// src/react/export-app/export-type-select.tsx +var import_jsx_runtime33 = __toESM(require_jsx_runtime()); +function ExportTypeSelect({ value, onChange }) { + return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(Stack, { spacing: "xl", children: [ + /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("label", { htmlFor: "type-select", children: "File Type" }), + /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + "select", + { + id: "type-select", + value, + onChange: (e) => onChange(e.target.value), + children: Object.values(ExportType).map((type) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("option", { value: type, children: type }, type)) + } + ) + ] }); +} + +// src/react/export-app/content-textarea.tsx +var import_jsx_runtime34 = __toESM(require_jsx_runtime()); +function ContentTextArea({ value }) { + return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("textarea", { readOnly: true, value }); +} + +// node_modules/markdown-table/index.js +function markdownTable(table, options = {}) { + const align = (options.align || []).concat(); + const stringLength = options.stringLength || defaultStringLength; + const alignments = []; + const cellMatrix = []; + const sizeMatrix = []; + const longestCellByColumn = []; + let mostCellsPerRow = 0; + let rowIndex = -1; + while (++rowIndex < table.length) { + const row2 = []; + const sizes2 = []; + let columnIndex2 = -1; + if (table[rowIndex].length > mostCellsPerRow) { + mostCellsPerRow = table[rowIndex].length; + } + while (++columnIndex2 < table[rowIndex].length) { + const cell = serialize(table[rowIndex][columnIndex2]); + if (options.alignDelimiters !== false) { + const size = stringLength(cell); + sizes2[columnIndex2] = size; + if (longestCellByColumn[columnIndex2] === void 0 || size > longestCellByColumn[columnIndex2]) { + longestCellByColumn[columnIndex2] = size; + } + } + row2.push(cell); + } + cellMatrix[rowIndex] = row2; + sizeMatrix[rowIndex] = sizes2; + } + let columnIndex = -1; + if (typeof align === "object" && "length" in align) { + while (++columnIndex < mostCellsPerRow) { + alignments[columnIndex] = toAlignment(align[columnIndex]); + } } else { - return sortedValues[middle]; + const code = toAlignment(align); + while (++columnIndex < mostCellsPerRow) { + alignments[columnIndex] = code; + } } -}; -var getRange = (values) => { - return getMaximum(values) - getMinimum(values); -}; - -// src/react/table-app/function-cell/utils.ts -var NAMESPACE = "fa23ee5e-43ae-45e0-83ed-97c577913416"; -var hashString = (value) => { - return v5_default(value, NAMESPACE); -}; -var round2Digits = (value) => { - if (value.toString().includes(".")) - return parseFloat(value.toFixed(2)); - return value; -}; - -// src/shared/cell-content/currency-cell-content.ts -var getCurrencyCellContent = (value, currencyType) => { - if (isNumber(value)) - return stringToCurrencyString(value, currencyType); - return ""; -}; - -// src/react/table-app/function-cell/number-function.ts -var getNumberFunctionContent = (values, cellType, currencyType, functionType) => { - const value = getNumberFunctionValue(values, functionType).toString(); - if (cellType === "currency" /* CURRENCY */) - return getCurrencyCellContent(value, currencyType); - return value; -}; -var getNumberFunctionValue = (values, type) => { - if (type === "avg" /* AVG */) { - return round2Digits(getAverage(values)); - } else if (type === "max" /* MAX */) { - return getMaximum(values); - } else if (type === "min" /* MIN */) { - return getMinimum(values); - } else if (type === "range" /* RANGE */) { - return round2Digits(getRange(values)); - } else if (type === "sum" /* SUM */) { - return round2Digits(getSum(values)); - } else if (type === "median" /* MEDIAN */) { - return round2Digits(getMedian(values)); - } else { - throw new Error("Unhandled number function"); + columnIndex = -1; + const row = []; + const sizes = []; + while (++columnIndex < mostCellsPerRow) { + const code = alignments[columnIndex]; + let before = ""; + let after = ""; + if (code === 99) { + before = ":"; + after = ":"; + } else if (code === 108) { + before = ":"; + } else if (code === 114) { + after = ":"; + } + let size = options.alignDelimiters === false ? 1 : Math.max( + 1, + longestCellByColumn[columnIndex] - before.length - after.length + ); + const cell = before + "-".repeat(size) + after; + if (options.alignDelimiters !== false) { + size = before.length + size + after.length; + if (size > longestCellByColumn[columnIndex]) { + longestCellByColumn[columnIndex] = size; + } + sizes[columnIndex] = size; + } + row[columnIndex] = cell; } + cellMatrix.splice(1, 0, row); + sizeMatrix.splice(1, 0, sizes); + rowIndex = -1; + const lines = []; + while (++rowIndex < cellMatrix.length) { + const row2 = cellMatrix[rowIndex]; + const sizes2 = sizeMatrix[rowIndex]; + columnIndex = -1; + const line = []; + while (++columnIndex < mostCellsPerRow) { + const cell = row2[columnIndex] || ""; + let before = ""; + let after = ""; + if (options.alignDelimiters !== false) { + const size = longestCellByColumn[columnIndex] - (sizes2[columnIndex] || 0); + const code = alignments[columnIndex]; + if (code === 114) { + before = " ".repeat(size); + } else if (code === 99) { + if (size % 2) { + before = " ".repeat(size / 2 + 0.5); + after = " ".repeat(size / 2 - 0.5); + } else { + before = " ".repeat(size / 2); + after = before; + } + } else { + after = " ".repeat(size); + } + } + if (options.delimiterStart !== false && !columnIndex) { + line.push("|"); + } + if (options.padding !== false && !(options.alignDelimiters === false && cell === "") && (options.delimiterStart !== false || columnIndex)) { + line.push(" "); + } + if (options.alignDelimiters !== false) { + line.push(before); + } + line.push(cell); + if (options.alignDelimiters !== false) { + line.push(after); + } + if (options.padding !== false) { + line.push(" "); + } + if (options.delimiterEnd !== false || columnIndex !== mostCellsPerRow - 1) { + line.push("|"); + } + } + lines.push( + options.delimiterEnd === false ? line.join("").replace(/ +$/, "") : line.join("") + ); + } + return lines.join("\n"); +} +function serialize(value) { + return value === null || value === void 0 ? "" : String(value); +} +function defaultStringLength(value) { + return value.length; +} +function toAlignment(value) { + const code = typeof value === "string" ? value.codePointAt(0) : 0; + return code === 67 || code === 99 ? 99 : code === 76 || code === 108 ? 108 : code === 82 || code === 114 ? 114 : 0; +} + +// src/shared/cell-content/checkbox-cell-content.ts +var getCheckboxCellContent = (content, shouldRemoveMarkdown) => { + if (shouldRemoveMarkdown) { + if (isCheckboxChecked(content)) + return "true"; + return "false"; + } + return content; }; // src/shared/date/constants.ts @@ -49555,380 +49953,6 @@ var isValidDateFormat = (value, dateFormat) => { } }; -// src/react/table-app/function-cell/general-function.ts -var getGeneralFunctionContent = (bodyRows, columnCells, columnTags, cellType, functionType, dateFormat) => { - return getGeneralFunctionValue( - bodyRows, - columnCells, - columnTags, - cellType, - functionType, - dateFormat - ).toString(); -}; -var getGeneralFunctionValue = (bodyRows, columnCells, columnTags, cellType, functionType, dateFormat) => { - if (functionType === "count-all" /* COUNT_ALL */) { - return countAll(bodyRows); - } else if (functionType === "count-empty" /* COUNT_EMPTY */) { - return countEmpty(columnCells, cellType); - } else if (functionType === "count-not-empty" /* COUNT_NOT_EMPTY */) { - return countNotEmpty(columnCells, cellType); - } else if (functionType === "count-unique" /* COUNT_UNIQUE */) { - return countUnique( - bodyRows, - columnCells, - columnTags, - cellType, - dateFormat - ); - } else if (functionType === "count-values" /* COUNT_VALUES */) { - return countValues(columnCells, cellType); - } else if (functionType === "percent-empty" /* PERCENT_EMPTY */) { - return percentEmpty(columnCells, cellType); - } else if (functionType === "percent-not-empty" /* PERCENT_NOT_EMPTY */) { - return percentNotEmpty(columnCells, cellType); - } else if (functionType === "none" /* NONE */) { - return ""; - } else { - throw new Error("Unhandled general function"); - } -}; -var countAll = (bodyRows) => { - return bodyRows.length; -}; -var countEmpty = (columnCells, cellType) => { - return columnCells.map((cell) => isCellContentEmpty(cell, cellType)).reduce((accum, value) => { - if (value === true) - return accum + 1; - return accum; - }, 0); -}; -var countNotEmpty = (columnCells, cellType) => { - return columnCells.map((cell) => isCellContentEmpty(cell, cellType)).reduce((accum, value) => { - if (value === false) - return accum + 1; - return accum; - }, 0); -}; -var countUnique = (bodyRows, columnCells, columnTags, cellType, dateFormat) => { - const hashes = columnCells.map((cell) => { - const row = bodyRows.find((row2) => row2.id === cell.rowId); - if (!row) - throw new RowNotFoundError(cell.rowId); - const cellValues = getCellValues( - row, - cell, - columnTags, - cellType, - dateFormat - ); - return cellValues.filter((value) => value !== "").map((value) => hashString(value)); - }).flat(1); - const uniqueHashes = new Set(hashes); - return uniqueHashes.size; -}; -var countValues = (columnCells, cellType) => { - return columnCells.map((cell) => countCellValues(cell, cellType)).reduce((accum, value) => accum + value, 0); -}; -var percentEmpty = (columnCells, cellType) => { - const percent = countEmpty(columnCells, cellType) / columnCells.length * 100; - const normalized = round2Digits(percent); - return normalized + "%"; -}; -var percentNotEmpty = (columnCells, cellType) => { - const percent = countNotEmpty(columnCells, cellType) / columnCells.length * 100; - const normalized = round2Digits(percent); - return normalized + "%"; -}; -var getCellValues = (bodyRow, cell, columnTags, cellType, dateFormat) => { - if (cellType === "text" /* TEXT */ || cellType === "embed" /* EMBED */ || cellType === "number" /* NUMBER */ || cellType === "currency" /* CURRENCY */ || cellType === "checkbox" /* CHECKBOX */ || cellType === "file" /* FILE */) { - return [cell.markdown]; - } else if (cellType === "date" /* DATE */) { - if (cell.dateTime) - return [cell.dateTime.toString()]; - return []; - } else if (cellType === "tag" /* TAG */ || cellType === "multi-tag" /* MULTI_TAG */) { - return cell.tagIds.map((tagId) => { - const tag = columnTags.find((tag2) => tag2.id === tagId); - if (!tag) - throw new TagNotFoundError(tagId); - return tag.markdown; - }); - } else if (cellType === "last-edited-time" /* LAST_EDITED_TIME */) { - return [unixTimeToDateTimeString(bodyRow.lastEditedTime, dateFormat)]; - } else if (cellType === "creation-time" /* CREATION_TIME */) { - return [unixTimeToDateTimeString(bodyRow.creationTime, dateFormat)]; - } else { - throw new Error("Unhandled cell type"); - } -}; -var countCellValues = (cell, cellType) => { - if (cellType === "text" /* TEXT */ || cellType === "embed" /* EMBED */ || cellType === "number" /* NUMBER */ || cellType === "currency" /* CURRENCY */ || cellType === "file" /* FILE */) { - return cell.markdown === "" ? 0 : 1; - } else if (cellType === "date" /* DATE */) { - return cell.dateTime == null ? 0 : 1; - } else if (cellType === "tag" /* TAG */ || cellType === "multi-tag" /* MULTI_TAG */) { - return cell.tagIds.length; - } else if (cellType === "checkbox" /* CHECKBOX */) { - return isCheckboxChecked(cell.markdown) ? 1 : 0; - } else if (cellType === "last-edited-time" /* LAST_EDITED_TIME */ || cellType === "creation-time" /* CREATION_TIME */) { - return 1; - } else { - throw new Error("Unhandled cell type"); - } -}; -var isCellContentEmpty = (cell, cellType) => { - if (cellType === "text" /* TEXT */ || cellType === "embed" /* EMBED */ || cellType === "number" /* NUMBER */ || cellType === "currency" /* CURRENCY */ || cellType === "file" /* FILE */) { - return cell.markdown === ""; - } else if (cellType === "date" /* DATE */) { - return cell.dateTime == null; - } else if (cellType === "tag" /* TAG */ || cellType === "multi-tag" /* MULTI_TAG */) { - return cell.tagIds.length === 0; - } else if (cellType === "checkbox" /* CHECKBOX */) { - return !isCheckboxChecked(cell.markdown); - } else if (cellType === "last-edited-time" /* LAST_EDITED_TIME */ || cellType === "creation-time" /* CREATION_TIME */) { - return true; - } else { - throw new Error("Unhandled cell type"); - } -}; - -// src/react/table-app/function-cell/index.tsx -function FunctionCell({ - columnId, - columnTags, - bodyCells, - dateFormat, - bodyRows, - functionType, - currencyType, - cellType, - onFunctionTypeChange -}) { - const { menu, isMenuOpen, menuRef, closeTopMenu } = useMenu(0 /* ONE */); - const { triggerPosition, triggerRef } = useMenuTriggerPosition(); - useShiftMenu(triggerRef, menuRef, isMenuOpen); - function handleFunctionTypeClick(value) { - onFunctionTypeChange(columnId, value); - closeTopMenu(); - } - const columnCells = bodyCells.filter((cell) => cell.columnId === columnId); - let content = ""; - if (isGeneralFunction(functionType)) { - content = getGeneralFunctionContent( - bodyRows, - columnCells, - columnTags, - cellType, - functionType, - dateFormat - ); - } else { - const cellValues = columnCells.filter((cell) => isNumber(cell.markdown)).map((cell) => parseFloat(cell.markdown)); - if (cellValues.length !== 0) - content = getNumberFunctionContent( - cellValues, - cellType, - currencyType, - functionType - ); - } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_trigger_default, { - isCell: true, - menu, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - className: "NLT__function-cell NLT__selectable", - ref: triggerRef, - children: [ - functionType === "none" /* NONE */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { - value: "Calculate", - variant: "faint" - }), - functionType !== "none" /* NONE */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "sm", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { - value: getShortDisplayNameForFunctionType( - functionType - ), - variant: "muted" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { - value: content, - variant: "semibold" - }) - ] - }) - ] - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(function_menu_default, { - id: menu.id, - top: triggerPosition.top, - ref: menuRef, - cellType, - left: triggerPosition.left, - isOpen: isMenuOpen, - value: functionType, - onClick: handleFunctionTypeClick - }) - ] - }); -} - -// src/react/table-app/body-cell/index.tsx -var import_react81 = __toESM(require_react()); - -// src/react/table-app/text-cell/index.tsx -function TextCell({ markdown, shouldWrapOverflow }) { - const { containerRef, renderRef } = useRenderMarkdown(markdown, false); - const overflowStyle = useOverflow(shouldWrapOverflow); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__text-cell", - css: overflowStyle, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - css: import_emotion_react_cjs.css` - p { - margin: 0; - text-align: left; - } - - ul { - padding-left: var(--nlt-spacing--xl); - padding-right: 0; - margin: 0; - } - `, - ref: (node) => { - containerRef.current = node; - appendOrReplaceFirstChild(node, renderRef.current); - } - }) - }); -} - -// src/shared/color.ts -var findColorClassName = (isDarkMode, color) => { - switch (color) { - case "light gray" /* LIGHT_GRAY */: - return isDarkMode ? "NLT__light-gray--dark" : "NLT__light-gray--light"; - case "gray" /* GRAY */: - return isDarkMode ? "NLT__gray--dark" : "NLT__gray--light"; - case "brown" /* BROWN */: - return isDarkMode ? "NLT__brown--dark" : "NLT__brown--light"; - case "orange" /* ORANGE */: - return isDarkMode ? "NLT__orange--dark" : "NLT__orange--light"; - case "yellow" /* YELLOW */: - return isDarkMode ? "NLT__yellow--dark" : "NLT__yellow--light"; - case "green" /* GREEN */: - return isDarkMode ? "NLT__green--dark" : "NLT__green--light"; - case "blue" /* BLUE */: - return isDarkMode ? "NLT__blue--dark" : "NLT__blue--light"; - case "purple" /* PURPLE */: - return isDarkMode ? "NLT__purple--dark" : "NLT__purple--light"; - case "pink" /* PINK */: - return isDarkMode ? "NLT__pink--dark" : "NLT__pink--light"; - case "red" /* RED */: - return isDarkMode ? "NLT__red--dark" : "NLT__red--light"; - default: - return ""; - } -}; -var randomColor = () => { - const index = Math.floor(Math.random() * Object.values(Color).length); - return Object.values(Color)[index]; -}; - -// src/react/shared/tag/index.tsx -function Tag6({ - id: id2, - color, - maxWidth, - markdown, - showRemove, - onRemoveClick -}) { - const { isDarkMode } = useAppSelector((state) => state.global); - let tagClass = "NLT__tag"; - tagClass += " " + findColorClassName(isDarkMode, color); - if (onRemoveClick !== void 0 && id2 === void 0) { - throw new Error( - "An id must defined when the onRemoveClick handler is present." - ); - } - let contentClassName = "NLT__tag-content"; - if (maxWidth !== void 0) { - contentClassName += " NLT__hide-overflow-ellipsis"; - } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: tagClass, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "sm", - justify: "center", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", __spreadProps(__spreadValues({ - className: contentClassName - }, maxWidth !== void 0 && { style: { maxWidth } }), { - children: markdown - })), - showRemove && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { - width: "max-content", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { - isSmall: true, - icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { - lucideId: "x" - }), - onClick: () => { - onRemoveClick !== void 0 && onRemoveClick(id2); - } - }) - }) - ] - }) - }); -} - -// src/react/table-app/tag-cell/index.tsx -function TagCell({ - markdown, - color, - shouldWrapOverflow -}) { - const overflowStyle = useOverflow(shouldWrapOverflow); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__tag-cell", - css: overflowStyle, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Tag6, { - markdown, - color - }) - }); -} - -// src/react/table-app/checkbox-cell/index.tsx -function CheckboxCell({ value }) { - const isChecked = isCheckboxChecked(value); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__checkbox-cell", - css: import_emotion_react_cjs.css` - width: 100%; - padding: var(--nlt-cell-spacing); - `, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { - className: "task-list-item-checkbox", - css: import_emotion_react_cjs.css` - cursor: pointer; - `, - type: "checkbox", - checked: isChecked, - onChange: () => { - } - }) - }); -} - // src/shared/cell-content/date-cell-content.ts var getDateCellContent = (dateTime, format) => { if (dateTime !== null) @@ -49936,1750 +49960,3067 @@ var getDateCellContent = (dateTime, format) => { return ""; }; -// src/react/table-app/date-cell/index.tsx -function DateCell({ value, format }) { - const content = getDateCellContent(value, format); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__date-cell", - css: import_emotion_react_cjs.css` - width: 100%; - text-align: left; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - padding: var(--nlt-cell-spacing); - `, - children: content - }); -} - -// src/react/table-app/number-cell/index.tsx -function NumberCell({ value, shouldWrapOverflow }) { - const overflowStyle = useOverflow(shouldWrapOverflow); - let valueString = ""; - if (isNumber(value)) - valueString = value; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__number-cell", - css: overflowStyle, - children: valueString - }); -} - -// src/react/table-app/number-cell-edit/index.tsx -var import_react57 = __toESM(require_react()); -function NumberCellEdit({ - menuCloseRequest, - value, - onChange, - onMenuClose -}) { - const initialValue = isNumber(value) ? value : ""; - const [localValue, setLocalValue] = import_react57.default.useState(initialValue); - const inputRef = import_react57.default.useRef(null); - useInputSelection(inputRef, localValue); - const hasCloseRequestTimeChanged = useCompare( - menuCloseRequest == null ? void 0 : menuCloseRequest.requestTime - ); - import_react57.default.useEffect(() => { - if (hasCloseRequestTimeChanged && menuCloseRequest !== null) { - if (localValue !== value) - onChange(localValue); - onMenuClose(); +// src/shared/cell-content/embed-cell-content.ts +var getEmbedCellContent = (app, value, options) => { + const { + shouldRemoveMarkdown = false, + isExternalLink = false, + isExport = false + } = options != null ? options : {}; + if (shouldRemoveMarkdown || value === "") { + return value; + } + if (isExternalLink) { + if (isImage(value) || isYouTubeLink(value) || isTwitterLink(value)) { + return `![](${value})`; } - }, [ - value, - localValue, - hasCloseRequestTimeChanged, - menuCloseRequest, - onMenuClose, - onChange - ]); - function handleChange(inputValue) { - if (!isValidNumberInput(inputValue)) - return; - setLocalValue(inputValue); - } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__number-cell-edit", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { - autoFocus: true, - css: numberInputStyle, - type: "text", - ref: inputRef, - inputMode: "numeric", - value: localValue, - onChange: (e) => handleChange(e.target.value), - onBlur: (e) => { - e.target.classList.add("NLT__blur--cell"); - } - }) - }); -} - -// src/react/table-app/text-cell-edit/index.tsx -var import_react63 = __toESM(require_react()); - -// src/react/shared/suggest-menu/suggest-menu.tsx -var import_react62 = __toESM(require_react()); - -// src/react/shared/suggest-menu/suggest-menu-content.tsx -var import_react60 = __toESM(require_react()); -var import_fuzzysort = __toESM(require_fuzzysort()); - -// src/react/shared/suggest-menu/suggest-item.tsx -var import_react58 = __toESM(require_react()); - -// src/shared/event-system/event-system.ts -var EventSystem = class { - constructor() { - __publicField(this, "eventListeners"); - this.eventListeners = []; - } - addEventListener(name, callback, priority = 0) { - this.eventListeners.push({ - name, - callback, - priority - }); - this.eventListeners.sort((a2, b2) => b2.priority - a2.priority); - } - removeEventListener(name, callback) { - this.eventListeners = this.eventListeners.filter( - (l2) => l2.name !== name || l2.callback !== callback - ); - } - dispatchEvent(name, event, ...data) { - const listeners = this.eventListeners.filter((l2) => l2.name === name); - listeners.forEach((listener2) => { - listener2.callback(event, data); - }); + return "Unsupported link"; + } else { + if (isExport) + return `![[${value}]]`; + return `![](${getResourcePath(app, value)})`; } }; -var nltEventSystem = new EventSystem(); -// src/react/shared/suggest-menu/suggest-item.tsx -var SuggestItem = import_react58.default.forwardRef( - function SuggestItem2({ file, isHighlighted, isFileNameUnique, onItemClick }, ref) { - const handleClick = import_react58.default.useCallback( - (e) => { - e.stopPropagation(); - onItemClick(file, isFileNameUnique); - }, - [file, isFileNameUnique, onItemClick] - ); - import_react58.default.useEffect(() => { - function handleKeyDown(e) { - if (e.key === "Enter") - onItemClick(file, isFileNameUnique); - } - if (isHighlighted) - nltEventSystem.addEventListener("keydown", handleKeyDown, 1); - return () => nltEventSystem.removeEventListener("keydown", handleKeyDown); - }, [isHighlighted, onItemClick, file, isFileNameUnique]); - let name = "No match found"; - if (file) { - if (file.extension === "md") { - name = file.basename; - } else { - name = file.name; - } - } - let path = null; - if (file) { - if (file.parent && file.parent.path !== "/") { - path = file.parent.path + "/"; - } - } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - tabIndex: 0, - className: "NLT__suggest-item NLT__focusable", - ref, - css: import_emotion_react_cjs.css` - padding: 4px 6px; - margin: 2px 0; - background-color: ${isHighlighted ? "var(--background-modifier-hover)" : "var(--background-primary)"}; - &:hover { - background-color: var(--background-modifier-hover); - } - `, - onClick: handleClick, - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { - variant: "semibold", - size: "xs", - value: name, - maxWidth: "275px" - }), - path && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { - value: path, - size: "xs" - }) - ] - }); - } -); -var suggest_item_default = SuggestItem; +// src/react/loom-app/number-cell/utils.ts +var addThousandsSeparator = (num, separator) => { + const regex = /\B(?=(\d{3})+(?!\d))/g; + return num.replace(regex, separator); +}; -// src/react/shared/suggest-menu/constants.ts -var DOUBLE_BRACKET_REGEX = new RegExp(/\[\[(.*?)]]/g); - -// src/react/shared/suggest-menu/utils.ts -var isSurroundedByDoubleBrackets = (inputValue, selectionStart) => { - let match; - const regex = structuredClone(DOUBLE_BRACKET_REGEX); - while ((match = regex.exec(inputValue)) !== null) { - const innerText = match[1]; - const startIndex = match.index + 2; - const endIndex = startIndex + innerText.length - 1; - const index = selectionStart - 1; - if (innerText === "" && index === startIndex - 1) - return true; - if (index >= startIndex && index <= endIndex) - return true; +// src/shared/cell-content/number-cell-content.ts +var getNumberCellContent = (format, value, options) => { + const { currency, separator, suffix, prefix: prefix2 } = options != null ? options : {}; + if (!isNumber(value)) { + return ""; } - return false; -}; -var doubleBracketsInnerReplace = (inputValue, selectionStart, replacement) => { - let match; - const regex = structuredClone(DOUBLE_BRACKET_REGEX); - while ((match = regex.exec(inputValue)) !== null) { - const innerText = match[1]; - const startIndex = match.index + 2; - const endIndex = startIndex + innerText.length - 1; - const index = selectionStart - 1; - if (innerText === "" && index === startIndex - 1) { - return inputValue.slice(0, startIndex) + replacement + inputValue.slice(endIndex + 1); - } - if (index >= startIndex && index <= endIndex) { - return inputValue.slice(0, startIndex) + replacement + inputValue.slice(endIndex + 1); + if (format === "currency" /* CURRENCY */) { + if (currency === void 0) { + throw new Error("currency is required when format is currency"); } + return stringToCurrencyString(value, currency); } - return inputValue; -}; -var getFilterValue = (inputValue, selectionStart) => { - let match; - const regex = structuredClone(DOUBLE_BRACKET_REGEX); - while ((match = regex.exec(inputValue)) !== null) { - const innerText = match[1]; - const startIndex = match.index + 2; - const endIndex = startIndex + innerText.length - 1; - const index = selectionStart - 1; - if (innerText === "" && index === startIndex - 1) { - return innerText; - } - if (index >= startIndex && index <= endIndex) { - return innerText; - } - } - return null; -}; -var addClosingBracket = (value, selectionStart) => { - const char = value[selectionStart - 1]; - if (char === "[") - value = value + "]"; + if (separator && value.length > 0) + value = addThousandsSeparator(value, separator); + if (prefix2 && value.length > 0) + value = `${prefix2} ${value}`; + if (suffix && value.length > 0) + value = `${value} ${suffix}`; return value; }; -var removeClosingBracket = (previousValue, value, selectionStart) => { - const previousChar = previousValue[selectionStart]; - const nextChar = value[selectionStart]; - if (previousChar === "[" && nextChar === "]") { - const updatedValue = value.slice(0, selectionStart) + value.slice(selectionStart + 1); - value = updatedValue; - } - return value; -}; -var filterUniqueStrings = (arr) => { - const frequencyMap = /* @__PURE__ */ new Map(); - arr.forEach((string) => { - frequencyMap.set(string, (frequencyMap.get(string) || 0) + 1); - }); - const uniqueStrings = []; - for (const string of frequencyMap.keys()) { - if (frequencyMap.get(string) === 1) { - uniqueStrings.push(string); - } - } - return uniqueStrings; -}; -// src/obsidian-shim/build/vault-file.ts -var getVaultFiles = () => { - return app.vault.getFiles(); -}; +// src/shared/cell-content/text-cell-content.ts +var import_markdown_it = __toESM(require_markdown_it()); -// src/react/shared/suggest-menu/suggest-menu-content.tsx -function SuggestMenuContent({ - showInput, - filterValue, - onItemClick -}) { - const logger = useLogger(); - const [localFilterValue, setLocalFilterValue] = import_react60.default.useState( - filterValue != null ? filterValue : "" - ); - const highlightItemRef = import_react60.default.useRef(null); - const [highlightIndex, setHighlightIndex] = import_react60.default.useState(-1); - const files = getVaultFiles(); - let filteredFiles = []; - if (localFilterValue !== "") { - const results = import_fuzzysort.default.go(localFilterValue, files, { - key: "path", - limit: 20 - }); - filteredFiles = results.map((result) => result.obj); - } else { - filteredFiles = files; - filteredFiles.sort((a2, b2) => b2.modifiedTime - a2.modifiedTime); - filteredFiles = filteredFiles.slice(0, 20); +// node_modules/entities/lib/esm/generated/decode-data-html.js +var decode_data_html_default = new Uint16Array( + '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map((c2) => c2.charCodeAt(0)) +); + +// node_modules/entities/lib/esm/generated/decode-data-xml.js +var decode_data_xml_default = new Uint16Array( + "\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map((c2) => c2.charCodeAt(0)) +); + +// node_modules/entities/lib/esm/decode_codepoint.js +var _a; +var decodeMap = /* @__PURE__ */ new Map([ + [0, 65533], + [128, 8364], + [130, 8218], + [131, 402], + [132, 8222], + [133, 8230], + [134, 8224], + [135, 8225], + [136, 710], + [137, 8240], + [138, 352], + [139, 8249], + [140, 338], + [142, 381], + [145, 8216], + [146, 8217], + [147, 8220], + [148, 8221], + [149, 8226], + [150, 8211], + [151, 8212], + [152, 732], + [153, 8482], + [154, 353], + [155, 8250], + [156, 339], + [158, 382], + [159, 376] +]); +var fromCodePoint = (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function(codePoint) { + let output = ""; + if (codePoint > 65535) { + codePoint -= 65536; + output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); + codePoint = 56320 | codePoint & 1023; } - import_react60.default.useEffect(() => { - setLocalFilterValue(filterValue != null ? filterValue : ""); - }, [filterValue]); - import_react60.default.useEffect(() => { - if (highlightItemRef.current) { - highlightItemRef.current.scrollIntoView({ - behavior: "auto", - block: "nearest" - }); - } - }, [highlightIndex]); - import_react60.default.useEffect(() => { - function handleKeyDown(e) { - logger("SuggestMenuContent handleKeyDown"); - if (e.key === "ArrowUp") { - e.preventDefault(); - setHighlightIndex((prevIndex) => { - let index = prevIndex - 1; - if (index < 0) - index = filteredFiles.length - 1; - return index; - }); - } else if (e.key === "ArrowDown") { - e.preventDefault(); - setHighlightIndex((prevIndex) => { - let index = prevIndex + 1; - if (index > filteredFiles.length - 1) - index = 0; - return index; - }); - } else if (e.key === "Tab") { - setHighlightIndex((prevIndex) => { - let index = prevIndex + 1; - if (index > filteredFiles.length - 1) - index = 0; - return index; - }); - } - } - nltEventSystem.addEventListener("keydown", handleKeyDown); - return () => nltEventSystem.removeEventListener("keydown", handleKeyDown); - }, [filteredFiles.length, logger, highlightIndex]); - const fileNames = filteredFiles.map((file) => file.name); - const uniqueFileNames = filterUniqueStrings(fileNames); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - className: "NLT__suggest-menu", - children: [ - showInput && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - css: import_emotion_react_cjs.css` - background-color: var(--background-secondary); - border-bottom: 1px solid var(--table-border-color); - padding: 4px 10px; - `, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { - css: transparentInputStyle, - autoFocus: true, - value: localFilterValue, - onChange: (e) => setLocalFilterValue(e.target.value) - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - css: import_emotion_react_cjs.css` - max-height: 175px; - overflow-y: auto; - `, - children: [ - filteredFiles.length === 0 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(suggest_item_default, { - file: null, - ref: null, - isHighlighted: true, - isFileNameUnique: false, - onItemClick - }), - filteredFiles.length > 0 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: filteredFiles.map((file, index) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(suggest_item_default, { - ref: highlightIndex === index ? highlightItemRef : null, - file, - isHighlighted: index === highlightIndex, - isFileNameUnique: uniqueFileNames.includes( - file.name - ), - onItemClick - }, file.path)) - }) - ] - }) - ] - }); + output += String.fromCharCode(codePoint); + return output; +}; +function replaceCodePoint(codePoint) { + var _a2; + if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) { + return 65533; + } + return (_a2 = decodeMap.get(codePoint)) !== null && _a2 !== void 0 ? _a2 : codePoint; } -// src/react/shared/suggest-menu/suggest-menu.tsx -var SuggestMenu = import_react62.default.forwardRef( - function SuggestMenu2({ id: id2, isOpen, top, left, filterValue, onItemClick }, ref) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { - id: id2, - isOpen, - top, - left, - ref, - width: 275, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(SuggestMenuContent, { - filterValue, - onItemClick - }) - }); +// node_modules/entities/lib/esm/decode.js +var CharCodes; +(function(CharCodes3) { + CharCodes3[CharCodes3["NUM"] = 35] = "NUM"; + CharCodes3[CharCodes3["SEMI"] = 59] = "SEMI"; + CharCodes3[CharCodes3["EQUALS"] = 61] = "EQUALS"; + CharCodes3[CharCodes3["ZERO"] = 48] = "ZERO"; + CharCodes3[CharCodes3["NINE"] = 57] = "NINE"; + CharCodes3[CharCodes3["LOWER_A"] = 97] = "LOWER_A"; + CharCodes3[CharCodes3["LOWER_F"] = 102] = "LOWER_F"; + CharCodes3[CharCodes3["LOWER_X"] = 120] = "LOWER_X"; + CharCodes3[CharCodes3["LOWER_Z"] = 122] = "LOWER_Z"; + CharCodes3[CharCodes3["UPPER_A"] = 65] = "UPPER_A"; + CharCodes3[CharCodes3["UPPER_F"] = 70] = "UPPER_F"; + CharCodes3[CharCodes3["UPPER_Z"] = 90] = "UPPER_Z"; +})(CharCodes || (CharCodes = {})); +var TO_LOWER_BIT = 32; +var BinTrieFlags; +(function(BinTrieFlags2) { + BinTrieFlags2[BinTrieFlags2["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; + BinTrieFlags2[BinTrieFlags2["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; + BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE"; +})(BinTrieFlags || (BinTrieFlags = {})); +function isNumber2(code) { + return code >= CharCodes.ZERO && code <= CharCodes.NINE; +} +function isHexadecimalCharacter(code) { + return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F; +} +function isAsciiAlphaNumeric(code) { + return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z || isNumber2(code); +} +function isEntityInAttributeInvalidEnd(code) { + return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); +} +var EntityDecoderState; +(function(EntityDecoderState2) { + EntityDecoderState2[EntityDecoderState2["EntityStart"] = 0] = "EntityStart"; + EntityDecoderState2[EntityDecoderState2["NumericStart"] = 1] = "NumericStart"; + EntityDecoderState2[EntityDecoderState2["NumericDecimal"] = 2] = "NumericDecimal"; + EntityDecoderState2[EntityDecoderState2["NumericHex"] = 3] = "NumericHex"; + EntityDecoderState2[EntityDecoderState2["NamedEntity"] = 4] = "NamedEntity"; +})(EntityDecoderState || (EntityDecoderState = {})); +var DecodingMode; +(function(DecodingMode2) { + DecodingMode2[DecodingMode2["Legacy"] = 0] = "Legacy"; + DecodingMode2[DecodingMode2["Strict"] = 1] = "Strict"; + DecodingMode2[DecodingMode2["Attribute"] = 2] = "Attribute"; +})(DecodingMode || (DecodingMode = {})); +var EntityDecoder = class { + constructor(decodeTree, emitCodePoint, errors) { + this.decodeTree = decodeTree; + this.emitCodePoint = emitCodePoint; + this.errors = errors; + this.state = EntityDecoderState.EntityStart; + this.consumed = 1; + this.result = 0; + this.treeIndex = 0; + this.excess = 1; + this.decodeMode = DecodingMode.Strict; } -); -var suggest_menu_default = SuggestMenu; - -// src/shared/link/link-utils.ts -var getBasename = (filePath) => { - const fileName = stripDirectory(filePath); - return stripFileExtension(fileName); -}; -var stripFileExtension = (filePath) => { - return filePath.substring(0, filePath.lastIndexOf(".")); -}; -var stripDirectory = (filePath) => { - return filePath.substring(filePath.lastIndexOf("/") + 1); -}; -var isMarkdownFile = (extension) => { - return extension === "md"; -}; -var getWikiLinkText = (fileInfo, isFileNameUnique) => { - const { basename, name, path, extension } = fileInfo; - let text = basename; - if (!isMarkdownFile(extension)) { - text = name; - if (!isFileNameUnique) - text = `${path}|${basename}`; - } else { - const pathWithoutExtension = stripFileExtension(path); - if (!isFileNameUnique) - text = `${pathWithoutExtension}|${basename}`; + startEntity(decodeMode) { + this.decodeMode = decodeMode; + this.state = EntityDecoderState.EntityStart; + this.result = 0; + this.treeIndex = 0; + this.excess = 1; + this.consumed = 1; } - return text; -}; - -// src/react/table-app/text-cell-edit/index.tsx -function TextCellEdit({ - shouldWrapOverflow, - menuCloseRequest, - value, - onChange, - onMenuClose -}) { - var _a, _b, _c; - const { menu, isMenuOpen, menuRef, openMenu, closeAllMenus, closeTopMenu } = useMenu(1 /* TWO */); - const { triggerRef, triggerPosition } = useMenuTriggerPosition(); - useShiftMenu(triggerRef, menuRef, isMenuOpen, { - topOffset: 35 - }); - const [localValue, setLocalValue] = import_react63.default.useState(value); - const inputRef = import_react63.default.useRef(null); - import_react63.default.useEffect(() => { - if (inputRef.current) { - const selectionIndex = inputRef.current.selectionStart; - if (localValue[selectionIndex - 1] === "]" && localValue[selectionIndex - 2] === "[") { - inputRef.current.selectionStart = selectionIndex - 1; - inputRef.current.selectionEnd = selectionIndex - 1; - } else if (localValue[selectionIndex - 1] === "]" && localValue[selectionIndex - 2] === "]" && localValue[selectionIndex - 3] === "[") { - inputRef.current.selectionStart = selectionIndex - 2; - inputRef.current.selectionEnd = selectionIndex - 2; + write(str, offset) { + switch (this.state) { + case EntityDecoderState.EntityStart: { + if (str.charCodeAt(offset) === CharCodes.NUM) { + this.state = EntityDecoderState.NumericStart; + this.consumed += 1; + return this.stateNumericStart(str, offset + 1); + } + this.state = EntityDecoderState.NamedEntity; + return this.stateNamedEntity(str, offset); + } + case EntityDecoderState.NumericStart: { + return this.stateNumericStart(str, offset); + } + case EntityDecoderState.NumericDecimal: { + return this.stateNumericDecimal(str, offset); + } + case EntityDecoderState.NumericHex: { + return this.stateNumericHex(str, offset); + } + case EntityDecoderState.NamedEntity: { + return this.stateNamedEntity(str, offset); } } - }, [inputRef, localValue]); - useInputSelection(inputRef, localValue); - const logger = useLogger(); - const hasCloseRequestTimeChanged = useCompare( - menuCloseRequest == null ? void 0 : menuCloseRequest.requestTime - ); - import_react63.default.useEffect(() => { - if (hasCloseRequestTimeChanged && menuCloseRequest !== null) { - if (localValue !== value) - onChange(localValue); - onMenuClose(); + } + stateNumericStart(str, offset) { + if (offset >= str.length) { + return -1; } - }, [ - value, - localValue, - hasCloseRequestTimeChanged, - menuCloseRequest, - onMenuClose, - onChange - ]); - function handleKeyDown(e) { - const el = e.target; - logger("TextCellEdit handleKeyDown"); - if (e.key === "ArrowLeft" || e.key === "ArrowRight") { - const cursorPosition = el.selectionStart; - if (isMenuOpen) { - if (!isSurroundedByDoubleBrackets(value, cursorPosition)) - closeTopMenu(); - } - if (inputRef.current) { - const inputEl = inputRef.current; - inputEl.selectionStart = cursorPosition; - inputEl.selectionEnd = cursorPosition; - } - } else if (e.key === "Enter") { - if (e.shiftKey && !isMenuOpen) { - e.stopPropagation(); - return; - } - e.preventDefault(); + if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { + this.state = EntityDecoderState.NumericHex; + this.consumed += 1; + return this.stateNumericHex(str, offset + 1); + } + this.state = EntityDecoderState.NumericDecimal; + return this.stateNumericDecimal(str, offset); + } + addToNumericResult(str, start, end, base) { + if (start !== end) { + const digitCount = end - start; + this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base); + this.consumed += digitCount; } } - function handleTextareaChange(e) { - const inputValue = e.target.value; - let newValue = inputValue; - if (inputRef.current) { - const inputEl = inputRef.current; - if (inputValue.length > localValue.length) { - newValue = addClosingBracket(newValue, inputEl.selectionStart); + stateNumericHex(str, offset) { + const startIdx = offset; + while (offset < str.length) { + const char = str.charCodeAt(offset); + if (isNumber2(char) || isHexadecimalCharacter(char)) { + offset += 1; } else { - newValue = removeClosingBracket( - localValue, - inputValue, - inputEl.selectionStart - ); - } - if (isSurroundedByDoubleBrackets(newValue, inputEl.selectionStart)) { - if (!isMenuOpen) - openMenu(menu); + this.addToNumericResult(str, startIdx, offset, 16); + return this.emitNumericEntity(char, 3); } } - setLocalValue(newValue); + this.addToNumericResult(str, startIdx, offset, 16); + return -1; } - function handleSuggestItemClick(file, isFileNameUnique) { - var _a2, _b2; - if (file) { - const fileName = getWikiLinkText(file, isFileNameUnique); - const newValue = doubleBracketsInnerReplace( - localValue, - (_b2 = (_a2 = inputRef.current) == null ? void 0 : _a2.selectionStart) != null ? _b2 : 0, - fileName - ); - onChange(newValue); - } - closeAllMenus(); - } - const overflowStyle = useOverflow(shouldWrapOverflow); - const filterValue = (_c = getFilterValue(localValue, (_b = (_a = inputRef.current) == null ? void 0 : _a.selectionStart) != null ? _b : 0)) != null ? _c : ""; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__text-cell-edit", - ref: triggerRef, - css: import_emotion_react_cjs.css` - width: 100%; - height: 100%; - `, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("textarea", { - autoFocus: true, - css: import_emotion_react_cjs.css` - ${textAreaStyle} - ${overflowStyle} - `, - ref: inputRef, - value: localValue, - onKeyDown: handleKeyDown, - onChange: handleTextareaChange, - onBlur: (e) => { - e.target.classList.add("NLT__blur--cell"); - } - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(suggest_menu_default, { - id: menu.id, - ref: menuRef, - isOpen: isMenuOpen, - top: triggerPosition.top, - left: triggerPosition.left, - filterValue, - onItemClick: handleSuggestItemClick - }) - ] - }); -} - -// src/react/table-app/tag-cell-edit/index.tsx -var import_react72 = __toESM(require_react()); - -// src/react/table-app/tag-cell-edit/menu-header.tsx -var import_react66 = __toESM(require_react()); -function MenuHeader({ - cellTags, - inputValue, - onInputValueChange, - onRemoveTag -}) { - const inputRef = import_react66.default.useRef(null); - function handleInputChange(value) { - if (value.match(/^\s/)) - return; - onInputValueChange(value); - } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - css: import_emotion_react_cjs.css` - background-color: var(--background-secondary); - border-bottom: 1px solid var(--table-border-color); - padding: 4px 10px; - `, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Wrap, { - spacingX: "sm", - children: [ - cellTags.map((tag) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Tag6, { - id: tag.id, - color: tag.color, - markdown: tag.markdown, - maxWidth: "150px", - showRemove: true, - onRemoveClick: onRemoveTag - }, tag.id)), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { - className: "NLT__focusable", - css: transparentInputStyle, - autoFocus: true, - ref: inputRef, - type: "text", - value: inputValue, - onChange: (e) => handleInputChange(e.target.value) - }) - ] - }) - }); -} - -// src/react/table-app/tag-cell-edit/create-tag.tsx -function CreateTag({ markdown, color, onTagAdd }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - tabIndex: 0, - css: import_emotion_react_cjs.css` - display: flex; - align-items: center; - padding: 4px 6px; - width: 100%; - overflow: hidden; - `, - className: "NLT__focusable NLT__selectable", - onClick: () => { - onTagAdd(markdown, color); - }, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "sm", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - children: "Create" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Tag6, { - markdown, - color, - maxWidth: "120px" - }) - ] - }) - }); -} - -// src/react/table-app/tag-color-menu/index.tsx -var import_react69 = __toESM(require_react()); - -// src/shared/stringUtils.ts -var uppercaseFirst = (input) => { - return input.charAt(0).toUpperCase() + input.slice(1); -}; - -// src/react/table-app/tag-color-menu/components/color-item/index.tsx -var import_react68 = __toESM(require_react()); -function ColorItem({ - isDarkMode, - color, - isSelected, - onColorClick -}) { - const ref = import_react68.default.useRef(null); - import_react68.default.useEffect(() => { - if (!ref.current) - return; - if (isSelected) { - ref.current.focus(); - } - }, [isSelected]); - function handleKeyDown(e) { - if (e.key === "Enter") { - e.stopPropagation(); - onColorClick(color); - } - } - let containerClass = "NLT__color-item NLT__focusable NLT__selectable"; - if (isSelected) - containerClass += " NLT__selected"; - const colorClass = findColorClassName(isDarkMode, color); - let squareClass = "NLT__color-item-square"; - squareClass += " " + colorClass; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - ref, - tabIndex: 0, - className: containerClass, - onKeyDown: handleKeyDown, - onClick: () => { - onColorClick(color); - }, - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: squareClass - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - children: uppercaseFirst(color) - }) - ] - }); -} - -// src/react/table-app/tag-color-menu/index.tsx -var TagColorMenu = import_react69.default.forwardRef( - function TagColorMenu2({ - menuId, - isOpen, - top, - left, - selectedColor, - onColorClick, - onDeleteClick - }, ref) { - const { isDarkMode } = useAppSelector((state) => state.global); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { - ref, - id: menuId, - isOpen, - top, - left, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__tag-color-menu", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "sm", - isVertical: true, - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { - px: "lg", - py: "sm", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { - value: "Color" - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - children: Object.values(Color).map((color) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(ColorItem, { - isDarkMode, - color, - onColorClick, - isSelected: selectedColor === color - }, color)) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Divider, {}), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - lucideId: "trash-2", - name: "Delete", - onClick: onDeleteClick - }) - ] - }) - }) - }); - } -); -var tag_color_menu_default = TagColorMenu; - -// src/react/table-app/tag-cell-edit/selectable-tag.tsx -function SelectableTag({ - id: id2, - markdown, - color, - onClick, - onColorChange, - onDeleteClick -}) { - const { menu, isMenuOpen, menuRef, closeTopMenu } = useMenu(1 /* TWO */); - const { triggerRef, triggerPosition } = useMenuTriggerPosition(); - useShiftMenu(triggerRef, menuRef, isMenuOpen, { - openDirection: "right", - leftOffset: -55, - topOffset: -100 - }); - function handleColorChange(color2) { - onColorChange(id2, color2); - closeTopMenu(); - } - function handleDeleteClick() { - onDeleteClick(id2); - closeTopMenu(); - } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - tabIndex: 0, - ref: triggerRef, - css: import_emotion_react_cjs.css` - display: flex; - justify-content: space-between; - align-items: center; - padding: var(--nlt-spacing--sm) var(--nlt-spacing--md); - overflow: hidden; - `, - className: "NLT__focusable NLT__selectable", - onClick: (e) => { - const target = e.target; - if (target.classList.contains("NLT__menu-trigger")) - return; - e.stopPropagation(); - onClick(id2); - }, - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Tag6, { - markdown, - color, - maxWidth: "150px" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuButton, { - icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { - lucideId: "more-horizontal" - }), - menu - }) - ] - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(tag_color_menu_default, { - isOpen: isMenuOpen, - ref: menuRef, - menuId: menu.id, - top: triggerPosition.top, - left: triggerPosition.left, - selectedColor: color, - onColorClick: (color2) => handleColorChange(color2), - onDeleteClick: handleDeleteClick - }) - ] - }); -} - -// src/react/table-app/tag-cell-edit/menu-body.tsx -function MenuBody({ - columnTags, - inputValue, - newTagColor, - onTagAdd, - onTagClick, - onTagColorChange, - onTagDelete -}) { - const tagWithSameCase = columnTags.find( - (tag) => tag.markdown === inputValue - ); - const filteredTags = columnTags.filter( - (tag) => tag.markdown.toLowerCase().includes(inputValue.toLowerCase()) - ); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - css: import_emotion_react_cjs.css` - max-height: 140px; - overflow-y: scroll; - `, - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { - px: "lg", - py: "md", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { - value: "Select an option or create one" - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - css: import_emotion_react_cjs.css` - width: 100%; - `, - children: [ - tagWithSameCase === void 0 && inputValue !== "" && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(CreateTag, { - markdown: inputValue, - color: newTagColor, - onTagAdd - }), - filteredTags.map((tag) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(SelectableTag, { - id: tag.id, - color: tag.color, - markdown: tag.markdown, - onColorChange: onTagColorChange, - onClick: onTagClick, - onDeleteClick: onTagDelete - }, tag.id)) - ] - }) - ] - }); -} - -// src/react/table-app/tag-cell-edit/index.tsx -function TagCellEdit({ - columnTags, - cellTags, - menuCloseRequest, - onTagClick, - onTagAdd, - onTagColorChange, - onTagDelete, - onRemoveTag, - onMenuClose -}) { - const [inputValue, setInputValue] = import_react72.default.useState(""); - const [newTagColor, setNewTagColor] = import_react72.default.useState(randomColor()); - const handleTagAdd = import_react72.default.useCallback( - (markdown, color) => { - onTagAdd(markdown, color); - setInputValue(""); - setNewTagColor(randomColor()); - onMenuClose(); - }, - [onTagAdd, onMenuClose] - ); - const hasCloseRequestTimeChanged = useCompare( - menuCloseRequest == null ? void 0 : menuCloseRequest.requestTime - ); - import_react72.default.useEffect(() => { - if (hasCloseRequestTimeChanged && menuCloseRequest !== null) { - if (menuCloseRequest.type === "enter") { - const shouldAddTag = columnTags.find((tag) => tag.markdown === inputValue) === void 0; - if (shouldAddTag) - handleTagAdd(inputValue, newTagColor); + stateNumericDecimal(str, offset) { + const startIdx = offset; + while (offset < str.length) { + const char = str.charCodeAt(offset); + if (isNumber2(char)) { + offset += 1; + } else { + this.addToNumericResult(str, startIdx, offset, 10); + return this.emitNumericEntity(char, 2); } - onMenuClose(); } - }, [ - handleTagAdd, - columnTags, - inputValue, - newTagColor, - hasCloseRequestTimeChanged, - menuCloseRequest, - onMenuClose - ]); - function handleTagClick(id2) { - onTagClick(id2); - onMenuClose(); + this.addToNumericResult(str, startIdx, offset, 10); + return -1; } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - className: "NLT__tag-cell-edit", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuHeader, { - inputValue, - cellTags, - onInputValueChange: setInputValue, - onRemoveTag - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuBody, { - inputValue, - columnTags, - newTagColor, - onTagAdd: handleTagAdd, - onTagClick: handleTagClick, - onTagDelete, - onTagColorChange - }) - ] - }); -} - -// src/react/table-app/date-cell-edit/index.tsx -var import_react74 = __toESM(require_react()); - -// src/react/table-app/date-cell-edit/date-format-menu.tsx -var import_react73 = __toESM(require_react()); -var DateFormatMenu = import_react73.default.forwardRef( - function DateFormatMenu2({ id: id2, top, left, isOpen, value, onChange }, ref) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { - ref, - isOpen, - id: id2, - top, - left, - width: 175, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__date-format-menu", - children: Object.values([ - "dd/mm/yyyy" /* DD_MM_YYYY */, - "mm/dd/yyyy" /* MM_DD_YYYY */, - "yyyy/mm/dd" /* YYYY_MM_DD */ - ]).map((format) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - name: getDisplayNameForDateFormat(format), - isSelected: value === format, - onClick: () => { - onChange(format); - } - }, format)) - }) - }); + emitNumericEntity(lastCp, expectedLength) { + var _a2; + if (this.consumed <= expectedLength) { + (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + if (lastCp === CharCodes.SEMI) { + this.consumed += 1; + } else if (this.decodeMode === DecodingMode.Strict) { + return 0; + } + this.emitCodePoint(replaceCodePoint(this.result), this.consumed); + if (this.errors) { + if (lastCp !== CharCodes.SEMI) { + this.errors.missingSemicolonAfterCharacterReference(); + } + this.errors.validateNumericCharacterReference(this.result); + } + return this.consumed; } -); -var date_format_menu_default = DateFormatMenu; - -// src/react/table-app/date-cell-edit/index.tsx -function DateCellEdit({ - value, - menuCloseRequest, - dateFormat, - onDateTimeChange, - onMenuClose, - onDateFormatChange -}) { - const { menu, isMenuOpen, menuRef, closeTopMenu } = useMenu(1 /* TWO */); - const { triggerRef, triggerPosition } = useMenuTriggerPosition(); - useShiftMenu(triggerRef, menuRef, isMenuOpen, { - openDirection: "right", - topOffset: 35, - leftOffset: -50 - }); - const [localValue, setLocalValue] = import_react74.default.useState( - value === null ? "" : unixTimeToDateString(value, dateFormat) - ); - const [isInputInvalid, setInputInvalid] = import_react74.default.useState(false); - const [closeTime, setCloseTime] = import_react74.default.useState(0); - const inputRef = import_react74.default.useRef(null); - import_react74.default.useEffect(() => { - setLocalValue( - value === null ? "" : unixTimeToDateString(value, dateFormat) - ); - }, [value, dateFormat]); - const hasCloseRequestTimeChanged = useCompare( - menuCloseRequest == null ? void 0 : menuCloseRequest.requestTime - ); - import_react74.default.useEffect(() => { - function validateInput() { - let newValue = null; - if (localValue !== "") { - if (isValidDateFormat(localValue, dateFormat)) { - newValue = dateStringToUnixTime(localValue, dateFormat); - } else { - if ((menuCloseRequest == null ? void 0 : menuCloseRequest.type) === "enter") { - setInputInvalid(true); - return; - } - newValue = value; + stateNamedEntity(str, offset) { + const { decodeTree } = this; + let current = decodeTree[this.treeIndex]; + let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + for (; offset < str.length; offset++, this.excess++) { + const char = str.charCodeAt(offset); + this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); + if (this.treeIndex < 0) { + return this.result === 0 || this.decodeMode === DecodingMode.Attribute && (valueLength === 0 || isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity(); + } + current = decodeTree[this.treeIndex]; + valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + if (valueLength !== 0) { + if (char === CharCodes.SEMI) { + return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); + } + if (this.decodeMode !== DecodingMode.Strict) { + this.result = this.treeIndex; + this.consumed += this.excess; + this.excess = 0; } } - if (newValue !== value) { - setInputInvalid(false); - onDateTimeChange(newValue); + } + return -1; + } + emitNotTerminatedNamedEntity() { + var _a2; + const { result, decodeTree } = this; + const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; + this.emitNamedEntityData(result, valueLength, this.consumed); + (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.missingSemicolonAfterCharacterReference(); + return this.consumed; + } + emitNamedEntityData(result, valueLength, consumed) { + const { decodeTree } = this; + this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed); + if (valueLength === 3) { + this.emitCodePoint(decodeTree[result + 2], consumed); + } + return consumed; + } + end() { + var _a2; + switch (this.state) { + case EntityDecoderState.NamedEntity: { + return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0; + } + case EntityDecoderState.NumericDecimal: { + return this.emitNumericEntity(0, 2); + } + case EntityDecoderState.NumericHex: { + return this.emitNumericEntity(0, 3); + } + case EntityDecoderState.NumericStart: { + (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + case EntityDecoderState.EntityStart: { + return 0; } - setCloseTime(Date.now()); } - if (hasCloseRequestTimeChanged && menuCloseRequest !== null) - validateInput(); - }, [ - value, - hasCloseRequestTimeChanged, - localValue, - menuCloseRequest, - dateFormat, - onDateTimeChange, - onMenuClose - ]); - import_react74.default.useEffect(() => { - if (closeTime !== 0) { - onMenuClose(); - } - }, [closeTime, onMenuClose]); - function handleDateFormatChange(value2) { - onDateFormatChange(value2); - closeTopMenu(); } - function handleClearClick() { - onDateTimeChange(null); - onMenuClose(); - } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - ref: triggerRef, - className: "NLT__date-cell-edit", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "md", - isVertical: true, - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { - px: "md", - py: "md", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { - tabIndex: 0, - className: "NLT__focusable", - css: import_emotion_react_cjs.css` - ${borderInputStyle} - ${isInputInvalid ? "&:focus-visible { outline: 2px solid var(--background-modifier-error) !important; }" : ""} - `, - ref: inputRef, - autoFocus: true, - value: localValue, - onChange: (e) => setLocalValue(e.target.value) - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_trigger_default, { - menu, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - isFocusable: false, - name: "Date format", - value: getDisplayNameForDateFormat(dateFormat) - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - name: "Clear", - onClick: handleClearClick - }) - ] - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(date_format_menu_default, { - id: menu.id, - isOpen: isMenuOpen, - ref: menuRef, - top: triggerPosition.top, - left: triggerPosition.left, - value: dateFormat, - onChange: handleDateFormatChange - }) - ] - }); -} - -// src/react/table-app/multi-tag-cell/index.tsx -function MultiTagCell({ cellTags, shouldWrapOverflow }) { - const overflowStyle = useOverflow(shouldWrapOverflow); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__multi-tag-cell", - css: overflowStyle, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Wrap, { - children: cellTags.map((tag) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Tag6, { - markdown: tag.markdown, - color: tag.color - }, tag.id)) - }) - }); -} - -// src/react/table-app/last-edited-time-cell/index.tsx -function LastEditedTimeCell({ - value, - format, - shouldWrapOverflow -}) { - const overflowStyle = useOverflow(shouldWrapOverflow); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__last-edited-time-cell", - css: overflowStyle, - children: unixTimeToDateTimeString(value, format) - }); -} - -// src/react/table-app/creation-time-cell/index.tsx -function CreationTimeCell({ - value, - format, - shouldWrapOverflow -}) { - const overflowStyle = useOverflow(shouldWrapOverflow); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__creation-time-cell", - css: overflowStyle, - children: unixTimeToDateTimeString(value, format) - }); -} - -// src/react/table-app/currency-cell/index.tsx -function CurrencyCell({ - value, - currencyType, - shouldWrapOverflow -}) { - const content = getCurrencyCellContent(value, currencyType); - const overflowStyle = useOverflow(shouldWrapOverflow); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__currency-cell", - css: overflowStyle, - children: content - }); -} - -// src/react/table-app/currency-cell-edit/index.tsx -var import_react76 = __toESM(require_react()); -function CurrencyCellEdit({ - value, - menuCloseRequest, - onChange, - onMenuClose -}) { - const initialValue = isNumber(value) ? value : ""; - const [localValue, setLocalValue] = import_react76.default.useState(initialValue); - const inputRef = import_react76.default.useRef(null); - useInputSelection(inputRef, localValue); - const hasCloseRequestTimeChanged = useCompare( - menuCloseRequest == null ? void 0 : menuCloseRequest.requestTime - ); - import_react76.default.useEffect(() => { - if (hasCloseRequestTimeChanged && menuCloseRequest !== null) { - if (localValue !== value) - onChange(localValue); - onMenuClose(); +}; +function getDecoder(decodeTree) { + let ret = ""; + const decoder = new EntityDecoder(decodeTree, (str) => ret += fromCodePoint(str)); + return function decodeWithTrie(str, decodeMode) { + let lastIndex = 0; + let offset = 0; + while ((offset = str.indexOf("&", offset)) >= 0) { + ret += str.slice(lastIndex, offset); + decoder.startEntity(decodeMode); + const len = decoder.write( + str, + offset + 1 + ); + if (len < 0) { + lastIndex = offset + decoder.end(); + break; + } + lastIndex = offset + len; + offset = len === 0 ? lastIndex + 1 : lastIndex; } - }, [ - value, - localValue, - hasCloseRequestTimeChanged, - menuCloseRequest, - onMenuClose, - onChange - ]); - function handleChange(inputValue) { - if (!isValidNumberInput(inputValue)) + const result = ret + str.slice(lastIndex); + ret = ""; + return result; + }; +} +function determineBranch(decodeTree, current, nodeIdx, char) { + const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; + const jumpOffset = current & BinTrieFlags.JUMP_TABLE; + if (branchCount === 0) { + return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; + } + if (jumpOffset) { + const value = char - jumpOffset; + return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1; + } + let lo = nodeIdx; + let hi = lo + branchCount - 1; + while (lo <= hi) { + const mid = lo + hi >>> 1; + const midVal = decodeTree[mid]; + if (midVal < char) { + lo = mid + 1; + } else if (midVal > char) { + hi = mid - 1; + } else { + return decodeTree[mid + branchCount]; + } + } + return -1; +} +var htmlDecoder = getDecoder(decode_data_html_default); +var xmlDecoder = getDecoder(decode_data_xml_default); + +// node_modules/htmlparser2/lib/esm/Tokenizer.js +var CharCodes2; +(function(CharCodes3) { + CharCodes3[CharCodes3["Tab"] = 9] = "Tab"; + CharCodes3[CharCodes3["NewLine"] = 10] = "NewLine"; + CharCodes3[CharCodes3["FormFeed"] = 12] = "FormFeed"; + CharCodes3[CharCodes3["CarriageReturn"] = 13] = "CarriageReturn"; + CharCodes3[CharCodes3["Space"] = 32] = "Space"; + CharCodes3[CharCodes3["ExclamationMark"] = 33] = "ExclamationMark"; + CharCodes3[CharCodes3["Number"] = 35] = "Number"; + CharCodes3[CharCodes3["Amp"] = 38] = "Amp"; + CharCodes3[CharCodes3["SingleQuote"] = 39] = "SingleQuote"; + CharCodes3[CharCodes3["DoubleQuote"] = 34] = "DoubleQuote"; + CharCodes3[CharCodes3["Dash"] = 45] = "Dash"; + CharCodes3[CharCodes3["Slash"] = 47] = "Slash"; + CharCodes3[CharCodes3["Zero"] = 48] = "Zero"; + CharCodes3[CharCodes3["Nine"] = 57] = "Nine"; + CharCodes3[CharCodes3["Semi"] = 59] = "Semi"; + CharCodes3[CharCodes3["Lt"] = 60] = "Lt"; + CharCodes3[CharCodes3["Eq"] = 61] = "Eq"; + CharCodes3[CharCodes3["Gt"] = 62] = "Gt"; + CharCodes3[CharCodes3["Questionmark"] = 63] = "Questionmark"; + CharCodes3[CharCodes3["UpperA"] = 65] = "UpperA"; + CharCodes3[CharCodes3["LowerA"] = 97] = "LowerA"; + CharCodes3[CharCodes3["UpperF"] = 70] = "UpperF"; + CharCodes3[CharCodes3["LowerF"] = 102] = "LowerF"; + CharCodes3[CharCodes3["UpperZ"] = 90] = "UpperZ"; + CharCodes3[CharCodes3["LowerZ"] = 122] = "LowerZ"; + CharCodes3[CharCodes3["LowerX"] = 120] = "LowerX"; + CharCodes3[CharCodes3["OpeningSquareBracket"] = 91] = "OpeningSquareBracket"; +})(CharCodes2 || (CharCodes2 = {})); +var State; +(function(State2) { + State2[State2["Text"] = 1] = "Text"; + State2[State2["BeforeTagName"] = 2] = "BeforeTagName"; + State2[State2["InTagName"] = 3] = "InTagName"; + State2[State2["InSelfClosingTag"] = 4] = "InSelfClosingTag"; + State2[State2["BeforeClosingTagName"] = 5] = "BeforeClosingTagName"; + State2[State2["InClosingTagName"] = 6] = "InClosingTagName"; + State2[State2["AfterClosingTagName"] = 7] = "AfterClosingTagName"; + State2[State2["BeforeAttributeName"] = 8] = "BeforeAttributeName"; + State2[State2["InAttributeName"] = 9] = "InAttributeName"; + State2[State2["AfterAttributeName"] = 10] = "AfterAttributeName"; + State2[State2["BeforeAttributeValue"] = 11] = "BeforeAttributeValue"; + State2[State2["InAttributeValueDq"] = 12] = "InAttributeValueDq"; + State2[State2["InAttributeValueSq"] = 13] = "InAttributeValueSq"; + State2[State2["InAttributeValueNq"] = 14] = "InAttributeValueNq"; + State2[State2["BeforeDeclaration"] = 15] = "BeforeDeclaration"; + State2[State2["InDeclaration"] = 16] = "InDeclaration"; + State2[State2["InProcessingInstruction"] = 17] = "InProcessingInstruction"; + State2[State2["BeforeComment"] = 18] = "BeforeComment"; + State2[State2["CDATASequence"] = 19] = "CDATASequence"; + State2[State2["InSpecialComment"] = 20] = "InSpecialComment"; + State2[State2["InCommentLike"] = 21] = "InCommentLike"; + State2[State2["BeforeSpecialS"] = 22] = "BeforeSpecialS"; + State2[State2["SpecialStartSequence"] = 23] = "SpecialStartSequence"; + State2[State2["InSpecialTag"] = 24] = "InSpecialTag"; + State2[State2["InEntity"] = 25] = "InEntity"; +})(State || (State = {})); +function isWhitespace(c2) { + return c2 === CharCodes2.Space || c2 === CharCodes2.NewLine || c2 === CharCodes2.Tab || c2 === CharCodes2.FormFeed || c2 === CharCodes2.CarriageReturn; +} +function isEndOfTagSection(c2) { + return c2 === CharCodes2.Slash || c2 === CharCodes2.Gt || isWhitespace(c2); +} +function isASCIIAlpha(c2) { + return c2 >= CharCodes2.LowerA && c2 <= CharCodes2.LowerZ || c2 >= CharCodes2.UpperA && c2 <= CharCodes2.UpperZ; +} +var QuoteType; +(function(QuoteType2) { + QuoteType2[QuoteType2["NoValue"] = 0] = "NoValue"; + QuoteType2[QuoteType2["Unquoted"] = 1] = "Unquoted"; + QuoteType2[QuoteType2["Single"] = 2] = "Single"; + QuoteType2[QuoteType2["Double"] = 3] = "Double"; +})(QuoteType || (QuoteType = {})); +var Sequences = { + Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]), + CdataEnd: new Uint8Array([93, 93, 62]), + CommentEnd: new Uint8Array([45, 45, 62]), + ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), + StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]), + TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]) +}; +var Tokenizer = class { + constructor({ xmlMode = false, decodeEntities = true }, cbs) { + this.cbs = cbs; + this.state = State.Text; + this.buffer = ""; + this.sectionStart = 0; + this.index = 0; + this.entityStart = 0; + this.baseState = State.Text; + this.isSpecial = false; + this.running = true; + this.offset = 0; + this.currentSequence = void 0; + this.sequenceIndex = 0; + this.xmlMode = xmlMode; + this.decodeEntities = decodeEntities; + this.entityDecoder = new EntityDecoder(xmlMode ? decode_data_xml_default : decode_data_html_default, (cp, consumed) => this.emitCodePoint(cp, consumed)); + } + reset() { + this.state = State.Text; + this.buffer = ""; + this.sectionStart = 0; + this.index = 0; + this.baseState = State.Text; + this.currentSequence = void 0; + this.running = true; + this.offset = 0; + } + write(chunk) { + this.offset += this.buffer.length; + this.buffer = chunk; + this.parse(); + } + end() { + if (this.running) + this.finish(); + } + pause() { + this.running = false; + } + resume() { + this.running = true; + if (this.index < this.buffer.length + this.offset) { + this.parse(); + } + } + stateText(c2) { + if (c2 === CharCodes2.Lt || !this.decodeEntities && this.fastForwardTo(CharCodes2.Lt)) { + if (this.index > this.sectionStart) { + this.cbs.ontext(this.sectionStart, this.index); + } + this.state = State.BeforeTagName; + this.sectionStart = this.index; + } else if (this.decodeEntities && c2 === CharCodes2.Amp) { + this.startEntity(); + } + } + stateSpecialStartSequence(c2) { + const isEnd = this.sequenceIndex === this.currentSequence.length; + const isMatch = isEnd ? isEndOfTagSection(c2) : (c2 | 32) === this.currentSequence[this.sequenceIndex]; + if (!isMatch) { + this.isSpecial = false; + } else if (!isEnd) { + this.sequenceIndex++; return; - setLocalValue(inputValue); + } + this.sequenceIndex = 0; + this.state = State.InTagName; + this.stateInTagName(c2); } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__currency-cell-edit", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { - autoFocus: true, - css: numberInputStyle, - ref: inputRef, - type: "text", - inputMode: "numeric", - value: localValue, - onChange: (e) => handleChange(e.target.value), - onBlur: (e) => { - e.target.classList.add("NLT__blur--cell"); + stateInSpecialTag(c2) { + if (this.sequenceIndex === this.currentSequence.length) { + if (c2 === CharCodes2.Gt || isWhitespace(c2)) { + const endOfText = this.index - this.currentSequence.length; + if (this.sectionStart < endOfText) { + const actualIndex = this.index; + this.index = endOfText; + this.cbs.ontext(this.sectionStart, endOfText); + this.index = actualIndex; + } + this.isSpecial = false; + this.sectionStart = endOfText + 2; + this.stateInClosingTagName(c2); + return; } - }) - }); -} - -// src/shared/cell-content/file-cell-content.ts -var getFileCellContent = (markdown) => { - if (markdown === "") - return markdown; - const linkRegex = new RegExp(/\[\[([^[\]]+)\]\]/); - const matches = markdown.match(linkRegex); - let matchStartIndex = -1; - let matchEndIndex = -1; - if (matches) { - matchStartIndex = markdown.indexOf(matches[0]); - matchEndIndex = matchStartIndex + matches[0].length; + this.sequenceIndex = 0; + } + if ((c2 | 32) === this.currentSequence[this.sequenceIndex]) { + this.sequenceIndex += 1; + } else if (this.sequenceIndex === 0) { + if (this.currentSequence === Sequences.TitleEnd) { + if (this.decodeEntities && c2 === CharCodes2.Amp) { + this.startEntity(); + } + } else if (this.fastForwardTo(CharCodes2.Lt)) { + this.sequenceIndex = 1; + } + } else { + this.sequenceIndex = Number(c2 === CharCodes2.Lt); + } } - if (matches === null) { - return `[[${markdown}]]`; - } else if (matchStartIndex === 0) { - return `${markdown.slice(0, matchEndIndex + 1).trim()}`; - } else { - return `[[${markdown.slice(0, matchStartIndex).trim()}]]`; + stateCDATASequence(c2) { + if (c2 === Sequences.Cdata[this.sequenceIndex]) { + if (++this.sequenceIndex === Sequences.Cdata.length) { + this.state = State.InCommentLike; + this.currentSequence = Sequences.CdataEnd; + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + } + } else { + this.sequenceIndex = 0; + this.state = State.InDeclaration; + this.stateInDeclaration(c2); + } + } + fastForwardTo(c2) { + while (++this.index < this.buffer.length + this.offset) { + if (this.buffer.charCodeAt(this.index - this.offset) === c2) { + return true; + } + } + this.index = this.buffer.length + this.offset - 1; + return false; + } + stateInCommentLike(c2) { + if (c2 === this.currentSequence[this.sequenceIndex]) { + if (++this.sequenceIndex === this.currentSequence.length) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, this.index, 2); + } else { + this.cbs.oncomment(this.sectionStart, this.index, 2); + } + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + this.state = State.Text; + } + } else if (this.sequenceIndex === 0) { + if (this.fastForwardTo(this.currentSequence[0])) { + this.sequenceIndex = 1; + } + } else if (c2 !== this.currentSequence[this.sequenceIndex - 1]) { + this.sequenceIndex = 0; + } + } + isTagStartChar(c2) { + return this.xmlMode ? !isEndOfTagSection(c2) : isASCIIAlpha(c2); + } + startSpecial(sequence, offset) { + this.isSpecial = true; + this.currentSequence = sequence; + this.sequenceIndex = offset; + this.state = State.SpecialStartSequence; + } + stateBeforeTagName(c2) { + if (c2 === CharCodes2.ExclamationMark) { + this.state = State.BeforeDeclaration; + this.sectionStart = this.index + 1; + } else if (c2 === CharCodes2.Questionmark) { + this.state = State.InProcessingInstruction; + this.sectionStart = this.index + 1; + } else if (this.isTagStartChar(c2)) { + const lower = c2 | 32; + this.sectionStart = this.index; + if (!this.xmlMode && lower === Sequences.TitleEnd[2]) { + this.startSpecial(Sequences.TitleEnd, 3); + } else { + this.state = !this.xmlMode && lower === Sequences.ScriptEnd[2] ? State.BeforeSpecialS : State.InTagName; + } + } else if (c2 === CharCodes2.Slash) { + this.state = State.BeforeClosingTagName; + } else { + this.state = State.Text; + this.stateText(c2); + } + } + stateInTagName(c2) { + if (isEndOfTagSection(c2)) { + this.cbs.onopentagname(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = State.BeforeAttributeName; + this.stateBeforeAttributeName(c2); + } + } + stateBeforeClosingTagName(c2) { + if (isWhitespace(c2)) { + } else if (c2 === CharCodes2.Gt) { + this.state = State.Text; + } else { + this.state = this.isTagStartChar(c2) ? State.InClosingTagName : State.InSpecialComment; + this.sectionStart = this.index; + } + } + stateInClosingTagName(c2) { + if (c2 === CharCodes2.Gt || isWhitespace(c2)) { + this.cbs.onclosetag(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = State.AfterClosingTagName; + this.stateAfterClosingTagName(c2); + } + } + stateAfterClosingTagName(c2) { + if (c2 === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) { + this.state = State.Text; + this.sectionStart = this.index + 1; + } + } + stateBeforeAttributeName(c2) { + if (c2 === CharCodes2.Gt) { + this.cbs.onopentagend(this.index); + if (this.isSpecial) { + this.state = State.InSpecialTag; + this.sequenceIndex = 0; + } else { + this.state = State.Text; + } + this.sectionStart = this.index + 1; + } else if (c2 === CharCodes2.Slash) { + this.state = State.InSelfClosingTag; + } else if (!isWhitespace(c2)) { + this.state = State.InAttributeName; + this.sectionStart = this.index; + } + } + stateInSelfClosingTag(c2) { + if (c2 === CharCodes2.Gt) { + this.cbs.onselfclosingtag(this.index); + this.state = State.Text; + this.sectionStart = this.index + 1; + this.isSpecial = false; + } else if (!isWhitespace(c2)) { + this.state = State.BeforeAttributeName; + this.stateBeforeAttributeName(c2); + } + } + stateInAttributeName(c2) { + if (c2 === CharCodes2.Eq || isEndOfTagSection(c2)) { + this.cbs.onattribname(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = State.AfterAttributeName; + this.stateAfterAttributeName(c2); + } + } + stateAfterAttributeName(c2) { + if (c2 === CharCodes2.Eq) { + this.state = State.BeforeAttributeValue; + } else if (c2 === CharCodes2.Slash || c2 === CharCodes2.Gt) { + this.cbs.onattribend(QuoteType.NoValue, this.index); + this.state = State.BeforeAttributeName; + this.stateBeforeAttributeName(c2); + } else if (!isWhitespace(c2)) { + this.cbs.onattribend(QuoteType.NoValue, this.index); + this.state = State.InAttributeName; + this.sectionStart = this.index; + } + } + stateBeforeAttributeValue(c2) { + if (c2 === CharCodes2.DoubleQuote) { + this.state = State.InAttributeValueDq; + this.sectionStart = this.index + 1; + } else if (c2 === CharCodes2.SingleQuote) { + this.state = State.InAttributeValueSq; + this.sectionStart = this.index + 1; + } else if (!isWhitespace(c2)) { + this.sectionStart = this.index; + this.state = State.InAttributeValueNq; + this.stateInAttributeValueNoQuotes(c2); + } + } + handleInAttributeValue(c2, quote) { + if (c2 === quote || !this.decodeEntities && this.fastForwardTo(quote)) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend(quote === CharCodes2.DoubleQuote ? QuoteType.Double : QuoteType.Single, this.index); + this.state = State.BeforeAttributeName; + } else if (this.decodeEntities && c2 === CharCodes2.Amp) { + this.startEntity(); + } + } + stateInAttributeValueDoubleQuotes(c2) { + this.handleInAttributeValue(c2, CharCodes2.DoubleQuote); + } + stateInAttributeValueSingleQuotes(c2) { + this.handleInAttributeValue(c2, CharCodes2.SingleQuote); + } + stateInAttributeValueNoQuotes(c2) { + if (isWhitespace(c2) || c2 === CharCodes2.Gt) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend(QuoteType.Unquoted, this.index); + this.state = State.BeforeAttributeName; + this.stateBeforeAttributeName(c2); + } else if (this.decodeEntities && c2 === CharCodes2.Amp) { + this.startEntity(); + } + } + stateBeforeDeclaration(c2) { + if (c2 === CharCodes2.OpeningSquareBracket) { + this.state = State.CDATASequence; + this.sequenceIndex = 0; + } else { + this.state = c2 === CharCodes2.Dash ? State.BeforeComment : State.InDeclaration; + } + } + stateInDeclaration(c2) { + if (c2 === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) { + this.cbs.ondeclaration(this.sectionStart, this.index); + this.state = State.Text; + this.sectionStart = this.index + 1; + } + } + stateInProcessingInstruction(c2) { + if (c2 === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) { + this.cbs.onprocessinginstruction(this.sectionStart, this.index); + this.state = State.Text; + this.sectionStart = this.index + 1; + } + } + stateBeforeComment(c2) { + if (c2 === CharCodes2.Dash) { + this.state = State.InCommentLike; + this.currentSequence = Sequences.CommentEnd; + this.sequenceIndex = 2; + this.sectionStart = this.index + 1; + } else { + this.state = State.InDeclaration; + } + } + stateInSpecialComment(c2) { + if (c2 === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) { + this.cbs.oncomment(this.sectionStart, this.index, 0); + this.state = State.Text; + this.sectionStart = this.index + 1; + } + } + stateBeforeSpecialS(c2) { + const lower = c2 | 32; + if (lower === Sequences.ScriptEnd[3]) { + this.startSpecial(Sequences.ScriptEnd, 4); + } else if (lower === Sequences.StyleEnd[3]) { + this.startSpecial(Sequences.StyleEnd, 4); + } else { + this.state = State.InTagName; + this.stateInTagName(c2); + } + } + startEntity() { + this.baseState = this.state; + this.state = State.InEntity; + this.entityStart = this.index; + this.entityDecoder.startEntity(this.xmlMode ? DecodingMode.Strict : this.baseState === State.Text || this.baseState === State.InSpecialTag ? DecodingMode.Legacy : DecodingMode.Attribute); + } + stateInEntity() { + const length = this.entityDecoder.write(this.buffer, this.index - this.offset); + if (length >= 0) { + this.state = this.baseState; + if (length === 0) { + this.index = this.entityStart; + } + } else { + this.index = this.offset + this.buffer.length - 1; + } + } + cleanup() { + if (this.running && this.sectionStart !== this.index) { + if (this.state === State.Text || this.state === State.InSpecialTag && this.sequenceIndex === 0) { + this.cbs.ontext(this.sectionStart, this.index); + this.sectionStart = this.index; + } else if (this.state === State.InAttributeValueDq || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueNq) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = this.index; + } + } + } + shouldContinue() { + return this.index < this.buffer.length + this.offset && this.running; + } + parse() { + while (this.shouldContinue()) { + const c2 = this.buffer.charCodeAt(this.index - this.offset); + switch (this.state) { + case State.Text: { + this.stateText(c2); + break; + } + case State.SpecialStartSequence: { + this.stateSpecialStartSequence(c2); + break; + } + case State.InSpecialTag: { + this.stateInSpecialTag(c2); + break; + } + case State.CDATASequence: { + this.stateCDATASequence(c2); + break; + } + case State.InAttributeValueDq: { + this.stateInAttributeValueDoubleQuotes(c2); + break; + } + case State.InAttributeName: { + this.stateInAttributeName(c2); + break; + } + case State.InCommentLike: { + this.stateInCommentLike(c2); + break; + } + case State.InSpecialComment: { + this.stateInSpecialComment(c2); + break; + } + case State.BeforeAttributeName: { + this.stateBeforeAttributeName(c2); + break; + } + case State.InTagName: { + this.stateInTagName(c2); + break; + } + case State.InClosingTagName: { + this.stateInClosingTagName(c2); + break; + } + case State.BeforeTagName: { + this.stateBeforeTagName(c2); + break; + } + case State.AfterAttributeName: { + this.stateAfterAttributeName(c2); + break; + } + case State.InAttributeValueSq: { + this.stateInAttributeValueSingleQuotes(c2); + break; + } + case State.BeforeAttributeValue: { + this.stateBeforeAttributeValue(c2); + break; + } + case State.BeforeClosingTagName: { + this.stateBeforeClosingTagName(c2); + break; + } + case State.AfterClosingTagName: { + this.stateAfterClosingTagName(c2); + break; + } + case State.BeforeSpecialS: { + this.stateBeforeSpecialS(c2); + break; + } + case State.InAttributeValueNq: { + this.stateInAttributeValueNoQuotes(c2); + break; + } + case State.InSelfClosingTag: { + this.stateInSelfClosingTag(c2); + break; + } + case State.InDeclaration: { + this.stateInDeclaration(c2); + break; + } + case State.BeforeDeclaration: { + this.stateBeforeDeclaration(c2); + break; + } + case State.BeforeComment: { + this.stateBeforeComment(c2); + break; + } + case State.InProcessingInstruction: { + this.stateInProcessingInstruction(c2); + break; + } + case State.InEntity: { + this.stateInEntity(); + break; + } + } + this.index++; + } + this.cleanup(); + } + finish() { + if (this.state === State.InEntity) { + this.entityDecoder.end(); + this.state = this.baseState; + } + this.handleTrailingData(); + this.cbs.onend(); + } + handleTrailingData() { + const endIndex = this.buffer.length + this.offset; + if (this.sectionStart >= endIndex) { + return; + } + if (this.state === State.InCommentLike) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, endIndex, 0); + } else { + this.cbs.oncomment(this.sectionStart, endIndex, 0); + } + } else if (this.state === State.InTagName || this.state === State.BeforeAttributeName || this.state === State.BeforeAttributeValue || this.state === State.AfterAttributeName || this.state === State.InAttributeName || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueDq || this.state === State.InAttributeValueNq || this.state === State.InClosingTagName) { + } else { + this.cbs.ontext(this.sectionStart, endIndex); + } + } + emitCodePoint(cp, consumed) { + if (this.baseState !== State.Text && this.baseState !== State.InSpecialTag) { + if (this.sectionStart < this.entityStart) { + this.cbs.onattribdata(this.sectionStart, this.entityStart); + } + this.sectionStart = this.entityStart + consumed; + this.index = this.sectionStart - 1; + this.cbs.onattribentity(cp); + } else { + if (this.sectionStart < this.entityStart) { + this.cbs.ontext(this.sectionStart, this.entityStart); + } + this.sectionStart = this.entityStart + consumed; + this.index = this.sectionStart - 1; + this.cbs.ontextentity(cp, this.sectionStart); + } } }; -// src/react/table-app/file-cell/index.tsx -function FileCell({ markdown, shouldWrapOverflow }) { - const content = getFileCellContent(markdown); - const { containerRef, renderRef } = useRenderMarkdown(content, false); - const overflowStyle = useOverflow(shouldWrapOverflow); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__file-cell", - css: overflowStyle, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - css: import_emotion_react_cjs.css` - p { - margin: 0; - text-align: left; - } - `, - ref: (node) => { - containerRef.current = node; - appendOrReplaceFirstChild(node, renderRef.current); - } - }) - }); -} - -// src/react/table-app/file-cell-edit/index.tsx -function FileCellEdit({ onChange, onMenuClose }) { - function handleSuggestItemClick(file, isFileNameUnique) { - if (file) { - let fileName = file.basename; - if (file.extension !== "md") - fileName = file.name; - if (!isFileNameUnique) - fileName = `${file.path}|${fileName}`; - onChange(`[[${fileName}]]`); +// node_modules/htmlparser2/lib/esm/Parser.js +var formTags = /* @__PURE__ */ new Set([ + "input", + "option", + "optgroup", + "select", + "button", + "datalist", + "textarea" +]); +var pTag = /* @__PURE__ */ new Set(["p"]); +var tableSectionTags = /* @__PURE__ */ new Set(["thead", "tbody"]); +var ddtTags = /* @__PURE__ */ new Set(["dd", "dt"]); +var rtpTags = /* @__PURE__ */ new Set(["rt", "rp"]); +var openImpliesClose = /* @__PURE__ */ new Map([ + ["tr", /* @__PURE__ */ new Set(["tr", "th", "td"])], + ["th", /* @__PURE__ */ new Set(["th"])], + ["td", /* @__PURE__ */ new Set(["thead", "th", "td"])], + ["body", /* @__PURE__ */ new Set(["head", "link", "script"])], + ["li", /* @__PURE__ */ new Set(["li"])], + ["p", pTag], + ["h1", pTag], + ["h2", pTag], + ["h3", pTag], + ["h4", pTag], + ["h5", pTag], + ["h6", pTag], + ["select", formTags], + ["input", formTags], + ["output", formTags], + ["button", formTags], + ["datalist", formTags], + ["textarea", formTags], + ["option", /* @__PURE__ */ new Set(["option"])], + ["optgroup", /* @__PURE__ */ new Set(["optgroup", "option"])], + ["dd", ddtTags], + ["dt", ddtTags], + ["address", pTag], + ["article", pTag], + ["aside", pTag], + ["blockquote", pTag], + ["details", pTag], + ["div", pTag], + ["dl", pTag], + ["fieldset", pTag], + ["figcaption", pTag], + ["figure", pTag], + ["footer", pTag], + ["form", pTag], + ["header", pTag], + ["hr", pTag], + ["main", pTag], + ["nav", pTag], + ["ol", pTag], + ["pre", pTag], + ["section", pTag], + ["table", pTag], + ["ul", pTag], + ["rt", rtpTags], + ["rp", rtpTags], + ["tbody", tableSectionTags], + ["tfoot", tableSectionTags] +]); +var voidElements = /* @__PURE__ */ new Set([ + "area", + "base", + "basefont", + "br", + "col", + "command", + "embed", + "frame", + "hr", + "img", + "input", + "isindex", + "keygen", + "link", + "meta", + "param", + "source", + "track", + "wbr" +]); +var foreignContextElements = /* @__PURE__ */ new Set(["math", "svg"]); +var htmlIntegrationElements = /* @__PURE__ */ new Set([ + "mi", + "mo", + "mn", + "ms", + "mtext", + "annotation-xml", + "foreignobject", + "desc", + "title" +]); +var reNameEnd = /\s|\//; +var Parser = class { + constructor(cbs, options = {}) { + var _a2, _b, _c, _d, _e; + this.options = options; + this.startIndex = 0; + this.endIndex = 0; + this.openTagStart = 0; + this.tagname = ""; + this.attribname = ""; + this.attribvalue = ""; + this.attribs = null; + this.stack = []; + this.buffers = []; + this.bufferOffset = 0; + this.writeIndex = 0; + this.ended = false; + this.cbs = cbs !== null && cbs !== void 0 ? cbs : {}; + this.htmlMode = !this.options.xmlMode; + this.lowerCaseTagNames = (_a2 = options.lowerCaseTags) !== null && _a2 !== void 0 ? _a2 : this.htmlMode; + this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode; + this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer)(this.options, this); + this.foreignContext = [!this.htmlMode]; + (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this); + } + ontext(start, endIndex) { + var _a2, _b; + const data = this.getSlice(start, endIndex); + this.endIndex = endIndex - 1; + (_b = (_a2 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a2, data); + this.startIndex = endIndex; + } + ontextentity(cp, endIndex) { + var _a2, _b; + this.endIndex = endIndex - 1; + (_b = (_a2 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a2, fromCodePoint(cp)); + this.startIndex = endIndex; + } + isVoidElement(name) { + return this.htmlMode && voidElements.has(name); + } + onopentagname(start, endIndex) { + this.endIndex = endIndex; + let name = this.getSlice(start, endIndex); + if (this.lowerCaseTagNames) { + name = name.toLowerCase(); } - onMenuClose(); + this.emitOpenTag(name); } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__file-cell-edit", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(SuggestMenuContent, { - showInput: true, - onItemClick: handleSuggestItemClick - }) - }); + emitOpenTag(name) { + var _a2, _b, _c, _d; + this.openTagStart = this.startIndex; + this.tagname = name; + const impliesClose = this.htmlMode && openImpliesClose.get(name); + if (impliesClose) { + while (this.stack.length > 0 && impliesClose.has(this.stack[0])) { + const element = this.stack.shift(); + (_b = (_a2 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a2, element, true); + } + } + if (!this.isVoidElement(name)) { + this.stack.unshift(name); + if (this.htmlMode) { + if (foreignContextElements.has(name)) { + this.foreignContext.unshift(true); + } else if (htmlIntegrationElements.has(name)) { + this.foreignContext.unshift(false); + } + } + } + (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name); + if (this.cbs.onopentag) + this.attribs = {}; + } + endOpenTag(isImplied) { + var _a2, _b; + this.startIndex = this.openTagStart; + if (this.attribs) { + (_b = (_a2 = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a2, this.tagname, this.attribs, isImplied); + this.attribs = null; + } + if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) { + this.cbs.onclosetag(this.tagname, true); + } + this.tagname = ""; + } + onopentagend(endIndex) { + this.endIndex = endIndex; + this.endOpenTag(false); + this.startIndex = endIndex + 1; + } + onclosetag(start, endIndex) { + var _a2, _b, _c, _d, _e, _f, _g, _h; + this.endIndex = endIndex; + let name = this.getSlice(start, endIndex); + if (this.lowerCaseTagNames) { + name = name.toLowerCase(); + } + if (this.htmlMode && (foreignContextElements.has(name) || htmlIntegrationElements.has(name))) { + this.foreignContext.shift(); + } + if (!this.isVoidElement(name)) { + const pos = this.stack.indexOf(name); + if (pos !== -1) { + for (let index = 0; index <= pos; index++) { + const element = this.stack.shift(); + (_b = (_a2 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a2, element, index !== pos); + } + } else if (this.htmlMode && name === "p") { + this.emitOpenTag("p"); + this.closeCurrentTag(true); + } + } else if (this.htmlMode && name === "br") { + (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, "br"); + (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", {}, true); + (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, "br", false); + } + this.startIndex = endIndex + 1; + } + onselfclosingtag(endIndex) { + this.endIndex = endIndex; + if (this.options.recognizeSelfClosing || this.foreignContext[0]) { + this.closeCurrentTag(false); + this.startIndex = endIndex + 1; + } else { + this.onopentagend(endIndex); + } + } + closeCurrentTag(isOpenImplied) { + var _a2, _b; + const name = this.tagname; + this.endOpenTag(isOpenImplied); + if (this.stack[0] === name) { + (_b = (_a2 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a2, name, !isOpenImplied); + this.stack.shift(); + } + } + onattribname(start, endIndex) { + this.startIndex = start; + const name = this.getSlice(start, endIndex); + this.attribname = this.lowerCaseAttributeNames ? name.toLowerCase() : name; + } + onattribdata(start, endIndex) { + this.attribvalue += this.getSlice(start, endIndex); + } + onattribentity(cp) { + this.attribvalue += fromCodePoint(cp); + } + onattribend(quote, endIndex) { + var _a2, _b; + this.endIndex = endIndex; + (_b = (_a2 = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a2, this.attribname, this.attribvalue, quote === QuoteType.Double ? '"' : quote === QuoteType.Single ? "'" : quote === QuoteType.NoValue ? void 0 : null); + if (this.attribs && !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) { + this.attribs[this.attribname] = this.attribvalue; + } + this.attribvalue = ""; + } + getInstructionName(value) { + const index = value.search(reNameEnd); + let name = index < 0 ? value : value.substr(0, index); + if (this.lowerCaseTagNames) { + name = name.toLowerCase(); + } + return name; + } + ondeclaration(start, endIndex) { + this.endIndex = endIndex; + const value = this.getSlice(start, endIndex); + if (this.cbs.onprocessinginstruction) { + const name = this.getInstructionName(value); + this.cbs.onprocessinginstruction(`!${name}`, `!${value}`); + } + this.startIndex = endIndex + 1; + } + onprocessinginstruction(start, endIndex) { + this.endIndex = endIndex; + const value = this.getSlice(start, endIndex); + if (this.cbs.onprocessinginstruction) { + const name = this.getInstructionName(value); + this.cbs.onprocessinginstruction(`?${name}`, `?${value}`); + } + this.startIndex = endIndex + 1; + } + oncomment(start, endIndex, offset) { + var _a2, _b, _c, _d; + this.endIndex = endIndex; + (_b = (_a2 = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a2, this.getSlice(start, endIndex - offset)); + (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c); + this.startIndex = endIndex + 1; + } + oncdata(start, endIndex, offset) { + var _a2, _b, _c, _d, _e, _f, _g, _h, _j, _k; + this.endIndex = endIndex; + const value = this.getSlice(start, endIndex - offset); + if (!this.htmlMode || this.options.recognizeCDATA) { + (_b = (_a2 = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a2); + (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value); + (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e); + } else { + (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`); + (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j); + } + this.startIndex = endIndex + 1; + } + onend() { + var _a2, _b; + if (this.cbs.onclosetag) { + this.endIndex = this.startIndex; + for (let index = 0; index < this.stack.length; index++) { + this.cbs.onclosetag(this.stack[index], true); + } + } + (_b = (_a2 = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a2); + } + reset() { + var _a2, _b, _c, _d; + (_b = (_a2 = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a2); + this.tokenizer.reset(); + this.tagname = ""; + this.attribname = ""; + this.attribs = null; + this.stack.length = 0; + this.startIndex = 0; + this.endIndex = 0; + (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this); + this.buffers.length = 0; + this.foreignContext.length = 0; + this.foreignContext.unshift(!this.htmlMode); + this.bufferOffset = 0; + this.writeIndex = 0; + this.ended = false; + } + parseComplete(data) { + this.reset(); + this.end(data); + } + getSlice(start, end) { + while (start - this.bufferOffset >= this.buffers[0].length) { + this.shiftBuffer(); + } + let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset); + while (end - this.bufferOffset > this.buffers[0].length) { + this.shiftBuffer(); + slice += this.buffers[0].slice(0, end - this.bufferOffset); + } + return slice; + } + shiftBuffer() { + this.bufferOffset += this.buffers[0].length; + this.writeIndex--; + this.buffers.shift(); + } + write(chunk) { + var _a2, _b; + if (this.ended) { + (_b = (_a2 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a2, new Error(".write() after done!")); + return; + } + this.buffers.push(chunk); + if (this.tokenizer.running) { + this.tokenizer.write(chunk); + this.writeIndex++; + } + } + end(chunk) { + var _a2, _b; + if (this.ended) { + (_b = (_a2 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a2, new Error(".end() after done!")); + return; + } + if (chunk) + this.write(chunk); + this.ended = true; + this.tokenizer.end(); + } + pause() { + this.tokenizer.pause(); + } + resume() { + this.tokenizer.resume(); + while (this.tokenizer.running && this.writeIndex < this.buffers.length) { + this.tokenizer.write(this.buffers[this.writeIndex++]); + } + if (this.ended) + this.tokenizer.end(); + } + parseChunk(chunk) { + this.write(chunk); + } + done(chunk) { + this.end(chunk); + } +}; + +// node_modules/domelementtype/lib/esm/index.js +var esm_exports = {}; +__export(esm_exports, { + CDATA: () => CDATA, + Comment: () => Comment, + Directive: () => Directive, + Doctype: () => Doctype, + ElementType: () => ElementType, + Root: () => Root2, + Script: () => Script, + Style: () => Style, + Tag: () => Tag4, + Text: () => Text2, + isTag: () => isTag +}); +var ElementType; +(function(ElementType2) { + ElementType2["Root"] = "root"; + ElementType2["Text"] = "text"; + ElementType2["Directive"] = "directive"; + ElementType2["Comment"] = "comment"; + ElementType2["Script"] = "script"; + ElementType2["Style"] = "style"; + ElementType2["Tag"] = "tag"; + ElementType2["CDATA"] = "cdata"; + ElementType2["Doctype"] = "doctype"; +})(ElementType || (ElementType = {})); +function isTag(elem) { + return elem.type === ElementType.Tag || elem.type === ElementType.Script || elem.type === ElementType.Style; +} +var Root2 = ElementType.Root; +var Text2 = ElementType.Text; +var Directive = ElementType.Directive; +var Comment = ElementType.Comment; +var Script = ElementType.Script; +var Style = ElementType.Style; +var Tag4 = ElementType.Tag; +var CDATA = ElementType.CDATA; +var Doctype = ElementType.Doctype; + +// node_modules/domhandler/lib/esm/node.js +function isTag2(node) { + return isTag(node); +} +function isCDATA(node) { + return node.type === ElementType.CDATA; +} +function isText(node) { + return node.type === ElementType.Text; +} +function isComment(node) { + return node.type === ElementType.Comment; +} +function isDocument(node) { + return node.type === ElementType.Root; +} +function hasChildren(node) { + return Object.prototype.hasOwnProperty.call(node, "children"); } -// src/shared/cell-content/embed-cell-content.ts -var getEmbedCellContent = (markdown, renderMarkdown2) => { - if (isURL(markdown)) { - if (renderMarkdown2) - return `![](${markdown})`; - return markdown; +// node_modules/domutils/lib/esm/index.js +var esm_exports2 = {}; +__export(esm_exports2, { + DocumentPosition: () => DocumentPosition, + append: () => append, + appendChild: () => appendChild, + compareDocumentPosition: () => compareDocumentPosition, + existsOne: () => existsOne, + filter: () => filter2, + find: () => find2, + findAll: () => findAll, + findOne: () => findOne, + findOneChild: () => findOneChild, + getAttributeValue: () => getAttributeValue, + getChildren: () => getChildren, + getElementById: () => getElementById, + getElements: () => getElements, + getElementsByTagName: () => getElementsByTagName, + getElementsByTagType: () => getElementsByTagType, + getFeed: () => getFeed, + getInnerHTML: () => getInnerHTML, + getName: () => getName, + getOuterHTML: () => getOuterHTML, + getParent: () => getParent, + getSiblings: () => getSiblings, + getText: () => getText, + hasAttrib: () => hasAttrib, + hasChildren: () => hasChildren, + innerText: () => innerText, + isCDATA: () => isCDATA, + isComment: () => isComment, + isDocument: () => isDocument, + isTag: () => isTag2, + isText: () => isText, + nextElementSibling: () => nextElementSibling, + prepend: () => prepend, + prependChild: () => prependChild, + prevElementSibling: () => prevElementSibling, + removeElement: () => removeElement, + removeSubsets: () => removeSubsets, + replaceElement: () => replaceElement, + testElement: () => testElement, + textContent: () => textContent, + uniqueSort: () => uniqueSort +}); + +// node_modules/entities/lib/esm/generated/encode-html.js +function restoreDiff(arr) { + for (let i2 = 1; i2 < arr.length; i2++) { + arr[i2][0] += arr[i2 - 1][0] + 1; } + return arr; +} +var encode_html_default = new Map(/* @__PURE__ */ restoreDiff([[9, " "], [0, " "], [22, "!"], [0, """], [0, "#"], [0, "$"], [0, "%"], [0, "&"], [0, "'"], [0, "("], [0, ")"], [0, "*"], [0, "+"], [0, ","], [1, "."], [0, "/"], [10, ":"], [0, ";"], [0, { v: "<", n: 8402, o: "<⃒" }], [0, { v: "=", n: 8421, o: "=⃥" }], [0, { v: ">", n: 8402, o: ">⃒" }], [0, "?"], [0, "@"], [26, "["], [0, "\"], [0, "]"], [0, "^"], [0, "_"], [0, "`"], [5, { n: 106, o: "fj" }], [20, "{"], [0, "|"], [0, "}"], [34, " "], [0, "¡"], [0, "¢"], [0, "£"], [0, "¤"], [0, "¥"], [0, "¦"], [0, "§"], [0, "¨"], [0, "©"], [0, "ª"], [0, "«"], [0, "¬"], [0, "­"], [0, "®"], [0, "¯"], [0, "°"], [0, "±"], [0, "²"], [0, "³"], [0, "´"], [0, "µ"], [0, "¶"], [0, "·"], [0, "¸"], [0, "¹"], [0, "º"], [0, "»"], [0, "¼"], [0, "½"], [0, "¾"], [0, "¿"], [0, "À"], [0, "Á"], [0, "Â"], [0, "Ã"], [0, "Ä"], [0, "Å"], [0, "Æ"], [0, "Ç"], [0, "È"], [0, "É"], [0, "Ê"], [0, "Ë"], [0, "Ì"], [0, "Í"], [0, "Î"], [0, "Ï"], [0, "Ð"], [0, "Ñ"], [0, "Ò"], [0, "Ó"], [0, "Ô"], [0, "Õ"], [0, "Ö"], [0, "×"], [0, "Ø"], [0, "Ù"], [0, "Ú"], [0, "Û"], [0, "Ü"], [0, "Ý"], [0, "Þ"], [0, "ß"], [0, "à"], [0, "á"], [0, "â"], [0, "ã"], [0, "ä"], [0, "å"], [0, "æ"], [0, "ç"], [0, "è"], [0, "é"], [0, "ê"], [0, "ë"], [0, "ì"], [0, "í"], [0, "î"], [0, "ï"], [0, "ð"], [0, "ñ"], [0, "ò"], [0, "ó"], [0, "ô"], [0, "õ"], [0, "ö"], [0, "÷"], [0, "ø"], [0, "ù"], [0, "ú"], [0, "û"], [0, "ü"], [0, "ý"], [0, "þ"], [0, "ÿ"], [0, "Ā"], [0, "ā"], [0, "Ă"], [0, "ă"], [0, "Ą"], [0, "ą"], [0, "Ć"], [0, "ć"], [0, "Ĉ"], [0, "ĉ"], [0, "Ċ"], [0, "ċ"], [0, "Č"], [0, "č"], [0, "Ď"], [0, "ď"], [0, "Đ"], [0, "đ"], [0, "Ē"], [0, "ē"], [2, "Ė"], [0, "ė"], [0, "Ę"], [0, "ę"], [0, "Ě"], [0, "ě"], [0, "Ĝ"], [0, "ĝ"], [0, "Ğ"], [0, "ğ"], [0, "Ġ"], [0, "ġ"], [0, "Ģ"], [1, "Ĥ"], [0, "ĥ"], [0, "Ħ"], [0, "ħ"], [0, "Ĩ"], [0, "ĩ"], [0, "Ī"], [0, "ī"], [2, "Į"], [0, "į"], [0, "İ"], [0, "ı"], [0, "IJ"], [0, "ij"], [0, "Ĵ"], [0, "ĵ"], [0, "Ķ"], [0, "ķ"], [0, "ĸ"], [0, "Ĺ"], [0, "ĺ"], [0, "Ļ"], [0, "ļ"], [0, "Ľ"], [0, "ľ"], [0, "Ŀ"], [0, "ŀ"], [0, "Ł"], [0, "ł"], [0, "Ń"], [0, "ń"], [0, "Ņ"], [0, "ņ"], [0, "Ň"], [0, "ň"], [0, "ʼn"], [0, "Ŋ"], [0, "ŋ"], [0, "Ō"], [0, "ō"], [2, "Ő"], [0, "ő"], [0, "Œ"], [0, "œ"], [0, "Ŕ"], [0, "ŕ"], [0, "Ŗ"], [0, "ŗ"], [0, "Ř"], [0, "ř"], [0, "Ś"], [0, "ś"], [0, "Ŝ"], [0, "ŝ"], [0, "Ş"], [0, "ş"], [0, "Š"], [0, "š"], [0, "Ţ"], [0, "ţ"], [0, "Ť"], [0, "ť"], [0, "Ŧ"], [0, "ŧ"], [0, "Ũ"], [0, "ũ"], [0, "Ū"], [0, "ū"], [0, "Ŭ"], [0, "ŭ"], [0, "Ů"], [0, "ů"], [0, "Ű"], [0, "ű"], [0, "Ų"], [0, "ų"], [0, "Ŵ"], [0, "ŵ"], [0, "Ŷ"], [0, "ŷ"], [0, "Ÿ"], [0, "Ź"], [0, "ź"], [0, "Ż"], [0, "ż"], [0, "Ž"], [0, "ž"], [19, "ƒ"], [34, "Ƶ"], [63, "ǵ"], [65, "ȷ"], [142, "ˆ"], [0, "ˇ"], [16, "˘"], [0, "˙"], [0, "˚"], [0, "˛"], [0, "˜"], [0, "˝"], [51, "̑"], [127, "Α"], [0, "Β"], [0, "Γ"], [0, "Δ"], [0, "Ε"], [0, "Ζ"], [0, "Η"], [0, "Θ"], [0, "Ι"], [0, "Κ"], [0, "Λ"], [0, "Μ"], [0, "Ν"], [0, "Ξ"], [0, "Ο"], [0, "Π"], [0, "Ρ"], [1, "Σ"], [0, "Τ"], [0, "Υ"], [0, "Φ"], [0, "Χ"], [0, "Ψ"], [0, "Ω"], [7, "α"], [0, "β"], [0, "γ"], [0, "δ"], [0, "ε"], [0, "ζ"], [0, "η"], [0, "θ"], [0, "ι"], [0, "κ"], [0, "λ"], [0, "μ"], [0, "ν"], [0, "ξ"], [0, "ο"], [0, "π"], [0, "ρ"], [0, "ς"], [0, "σ"], [0, "τ"], [0, "υ"], [0, "φ"], [0, "χ"], [0, "ψ"], [0, "ω"], [7, "ϑ"], [0, "ϒ"], [2, "ϕ"], [0, "ϖ"], [5, "Ϝ"], [0, "ϝ"], [18, "ϰ"], [0, "ϱ"], [3, "ϵ"], [0, "϶"], [10, "Ё"], [0, "Ђ"], [0, "Ѓ"], [0, "Є"], [0, "Ѕ"], [0, "І"], [0, "Ї"], [0, "Ј"], [0, "Љ"], [0, "Њ"], [0, "Ћ"], [0, "Ќ"], [1, "Ў"], [0, "Џ"], [0, "А"], [0, "Б"], [0, "В"], [0, "Г"], [0, "Д"], [0, "Е"], [0, "Ж"], [0, "З"], [0, "И"], [0, "Й"], [0, "К"], [0, "Л"], [0, "М"], [0, "Н"], [0, "О"], [0, "П"], [0, "Р"], [0, "С"], [0, "Т"], [0, "У"], [0, "Ф"], [0, "Х"], [0, "Ц"], [0, "Ч"], [0, "Ш"], [0, "Щ"], [0, "Ъ"], [0, "Ы"], [0, "Ь"], [0, "Э"], [0, "Ю"], [0, "Я"], [0, "а"], [0, "б"], [0, "в"], [0, "г"], [0, "д"], [0, "е"], [0, "ж"], [0, "з"], [0, "и"], [0, "й"], [0, "к"], [0, "л"], [0, "м"], [0, "н"], [0, "о"], [0, "п"], [0, "р"], [0, "с"], [0, "т"], [0, "у"], [0, "ф"], [0, "х"], [0, "ц"], [0, "ч"], [0, "ш"], [0, "щ"], [0, "ъ"], [0, "ы"], [0, "ь"], [0, "э"], [0, "ю"], [0, "я"], [1, "ё"], [0, "ђ"], [0, "ѓ"], [0, "є"], [0, "ѕ"], [0, "і"], [0, "ї"], [0, "ј"], [0, "љ"], [0, "њ"], [0, "ћ"], [0, "ќ"], [1, "ў"], [0, "џ"], [7074, " "], [0, " "], [0, " "], [0, " "], [1, " "], [0, " "], [0, " "], [0, " "], [0, "​"], [0, "‌"], [0, "‍"], [0, "‎"], [0, "‏"], [0, "‐"], [2, "–"], [0, "—"], [0, "―"], [0, "‖"], [1, "‘"], [0, "’"], [0, "‚"], [1, "“"], [0, "”"], [0, "„"], [1, "†"], [0, "‡"], [0, "•"], [2, "‥"], [0, "…"], [9, "‰"], [0, "‱"], [0, "′"], [0, "″"], [0, "‴"], [0, "‵"], [3, "‹"], [0, "›"], [3, "‾"], [2, "⁁"], [1, "⁃"], [0, "⁄"], [10, "⁏"], [7, "⁗"], [7, { v: " ", n: 8202, o: "  " }], [0, "⁠"], [0, "⁡"], [0, "⁢"], [0, "⁣"], [72, "€"], [46, "⃛"], [0, "⃜"], [37, "ℂ"], [2, "℅"], [4, "ℊ"], [0, "ℋ"], [0, "ℌ"], [0, "ℍ"], [0, "ℎ"], [0, "ℏ"], [0, "ℐ"], [0, "ℑ"], [0, "ℒ"], [0, "ℓ"], [1, "ℕ"], [0, "№"], [0, "℗"], [0, "℘"], [0, "ℙ"], [0, "ℚ"], [0, "ℛ"], [0, "ℜ"], [0, "ℝ"], [0, "℞"], [3, "™"], [1, "ℤ"], [2, "℧"], [0, "ℨ"], [0, "℩"], [2, "ℬ"], [0, "ℭ"], [1, "ℯ"], [0, "ℰ"], [0, "ℱ"], [1, "ℳ"], [0, "ℴ"], [0, "ℵ"], [0, "ℶ"], [0, "ℷ"], [0, "ℸ"], [12, "ⅅ"], [0, "ⅆ"], [0, "ⅇ"], [0, "ⅈ"], [10, "⅓"], [0, "⅔"], [0, "⅕"], [0, "⅖"], [0, "⅗"], [0, "⅘"], [0, "⅙"], [0, "⅚"], [0, "⅛"], [0, "⅜"], [0, "⅝"], [0, "⅞"], [49, "←"], [0, "↑"], [0, "→"], [0, "↓"], [0, "↔"], [0, "↕"], [0, "↖"], [0, "↗"], [0, "↘"], [0, "↙"], [0, "↚"], [0, "↛"], [1, { v: "↝", n: 824, o: "↝̸" }], [0, "↞"], [0, "↟"], [0, "↠"], [0, "↡"], [0, "↢"], [0, "↣"], [0, "↤"], [0, "↥"], [0, "↦"], [0, "↧"], [1, "↩"], [0, "↪"], [0, "↫"], [0, "↬"], [0, "↭"], [0, "↮"], [1, "↰"], [0, "↱"], [0, "↲"], [0, "↳"], [1, "↵"], [0, "↶"], [0, "↷"], [2, "↺"], [0, "↻"], [0, "↼"], [0, "↽"], [0, "↾"], [0, "↿"], [0, "⇀"], [0, "⇁"], [0, "⇂"], [0, "⇃"], [0, "⇄"], [0, "⇅"], [0, "⇆"], [0, "⇇"], [0, "⇈"], [0, "⇉"], [0, "⇊"], [0, "⇋"], [0, "⇌"], [0, "⇍"], [0, "⇎"], [0, "⇏"], [0, "⇐"], [0, "⇑"], [0, "⇒"], [0, "⇓"], [0, "⇔"], [0, "⇕"], [0, "⇖"], [0, "⇗"], [0, "⇘"], [0, "⇙"], [0, "⇚"], [0, "⇛"], [1, "⇝"], [6, "⇤"], [0, "⇥"], [15, "⇵"], [7, "⇽"], [0, "⇾"], [0, "⇿"], [0, "∀"], [0, "∁"], [0, { v: "∂", n: 824, o: "∂̸" }], [0, "∃"], [0, "∄"], [0, "∅"], [1, "∇"], [0, "∈"], [0, "∉"], [1, "∋"], [0, "∌"], [2, "∏"], [0, "∐"], [0, "∑"], [0, "−"], [0, "∓"], [0, "∔"], [1, "∖"], [0, "∗"], [0, "∘"], [1, "√"], [2, "∝"], [0, "∞"], [0, "∟"], [0, { v: "∠", n: 8402, o: "∠⃒" }], [0, "∡"], [0, "∢"], [0, "∣"], [0, "∤"], [0, "∥"], [0, "∦"], [0, "∧"], [0, "∨"], [0, { v: "∩", n: 65024, o: "∩︀" }], [0, { v: "∪", n: 65024, o: "∪︀" }], [0, "∫"], [0, "∬"], [0, "∭"], [0, "∮"], [0, "∯"], [0, "∰"], [0, "∱"], [0, "∲"], [0, "∳"], [0, "∴"], [0, "∵"], [0, "∶"], [0, "∷"], [0, "∸"], [1, "∺"], [0, "∻"], [0, { v: "∼", n: 8402, o: "∼⃒" }], [0, { v: "∽", n: 817, o: "∽̱" }], [0, { v: "∾", n: 819, o: "∾̳" }], [0, "∿"], [0, "≀"], [0, "≁"], [0, { v: "≂", n: 824, o: "≂̸" }], [0, "≃"], [0, "≄"], [0, "≅"], [0, "≆"], [0, "≇"], [0, "≈"], [0, "≉"], [0, "≊"], [0, { v: "≋", n: 824, o: "≋̸" }], [0, "≌"], [0, { v: "≍", n: 8402, o: "≍⃒" }], [0, { v: "≎", n: 824, o: "≎̸" }], [0, { v: "≏", n: 824, o: "≏̸" }], [0, { v: "≐", n: 824, o: "≐̸" }], [0, "≑"], [0, "≒"], [0, "≓"], [0, "≔"], [0, "≕"], [0, "≖"], [0, "≗"], [1, "≙"], [0, "≚"], [1, "≜"], [2, "≟"], [0, "≠"], [0, { v: "≡", n: 8421, o: "≡⃥" }], [0, "≢"], [1, { v: "≤", n: 8402, o: "≤⃒" }], [0, { v: "≥", n: 8402, o: "≥⃒" }], [0, { v: "≦", n: 824, o: "≦̸" }], [0, { v: "≧", n: 824, o: "≧̸" }], [0, { v: "≨", n: 65024, o: "≨︀" }], [0, { v: "≩", n: 65024, o: "≩︀" }], [0, { v: "≪", n: new Map(/* @__PURE__ */ restoreDiff([[824, "≪̸"], [7577, "≪⃒"]])) }], [0, { v: "≫", n: new Map(/* @__PURE__ */ restoreDiff([[824, "≫̸"], [7577, "≫⃒"]])) }], [0, "≬"], [0, "≭"], [0, "≮"], [0, "≯"], [0, "≰"], [0, "≱"], [0, "≲"], [0, "≳"], [0, "≴"], [0, "≵"], [0, "≶"], [0, "≷"], [0, "≸"], [0, "≹"], [0, "≺"], [0, "≻"], [0, "≼"], [0, "≽"], [0, "≾"], [0, { v: "≿", n: 824, o: "≿̸" }], [0, "⊀"], [0, "⊁"], [0, { v: "⊂", n: 8402, o: "⊂⃒" }], [0, { v: "⊃", n: 8402, o: "⊃⃒" }], [0, "⊄"], [0, "⊅"], [0, "⊆"], [0, "⊇"], [0, "⊈"], [0, "⊉"], [0, { v: "⊊", n: 65024, o: "⊊︀" }], [0, { v: "⊋", n: 65024, o: "⊋︀" }], [1, "⊍"], [0, "⊎"], [0, { v: "⊏", n: 824, o: "⊏̸" }], [0, { v: "⊐", n: 824, o: "⊐̸" }], [0, "⊑"], [0, "⊒"], [0, { v: "⊓", n: 65024, o: "⊓︀" }], [0, { v: "⊔", n: 65024, o: "⊔︀" }], [0, "⊕"], [0, "⊖"], [0, "⊗"], [0, "⊘"], [0, "⊙"], [0, "⊚"], [0, "⊛"], [1, "⊝"], [0, "⊞"], [0, "⊟"], [0, "⊠"], [0, "⊡"], [0, "⊢"], [0, "⊣"], [0, "⊤"], [0, "⊥"], [1, "⊧"], [0, "⊨"], [0, "⊩"], [0, "⊪"], [0, "⊫"], [0, "⊬"], [0, "⊭"], [0, "⊮"], [0, "⊯"], [0, "⊰"], [1, "⊲"], [0, "⊳"], [0, { v: "⊴", n: 8402, o: "⊴⃒" }], [0, { v: "⊵", n: 8402, o: "⊵⃒" }], [0, "⊶"], [0, "⊷"], [0, "⊸"], [0, "⊹"], [0, "⊺"], [0, "⊻"], [1, "⊽"], [0, "⊾"], [0, "⊿"], [0, "⋀"], [0, "⋁"], [0, "⋂"], [0, "⋃"], [0, "⋄"], [0, "⋅"], [0, "⋆"], [0, "⋇"], [0, "⋈"], [0, "⋉"], [0, "⋊"], [0, "⋋"], [0, "⋌"], [0, "⋍"], [0, "⋎"], [0, "⋏"], [0, "⋐"], [0, "⋑"], [0, "⋒"], [0, "⋓"], [0, "⋔"], [0, "⋕"], [0, "⋖"], [0, "⋗"], [0, { v: "⋘", n: 824, o: "⋘̸" }], [0, { v: "⋙", n: 824, o: "⋙̸" }], [0, { v: "⋚", n: 65024, o: "⋚︀" }], [0, { v: "⋛", n: 65024, o: "⋛︀" }], [2, "⋞"], [0, "⋟"], [0, "⋠"], [0, "⋡"], [0, "⋢"], [0, "⋣"], [2, "⋦"], [0, "⋧"], [0, "⋨"], [0, "⋩"], [0, "⋪"], [0, "⋫"], [0, "⋬"], [0, "⋭"], [0, "⋮"], [0, "⋯"], [0, "⋰"], [0, "⋱"], [0, "⋲"], [0, "⋳"], [0, "⋴"], [0, { v: "⋵", n: 824, o: "⋵̸" }], [0, "⋶"], [0, "⋷"], [1, { v: "⋹", n: 824, o: "⋹̸" }], [0, "⋺"], [0, "⋻"], [0, "⋼"], [0, "⋽"], [0, "⋾"], [6, "⌅"], [0, "⌆"], [1, "⌈"], [0, "⌉"], [0, "⌊"], [0, "⌋"], [0, "⌌"], [0, "⌍"], [0, "⌎"], [0, "⌏"], [0, "⌐"], [1, "⌒"], [0, "⌓"], [1, "⌕"], [0, "⌖"], [5, "⌜"], [0, "⌝"], [0, "⌞"], [0, "⌟"], [2, "⌢"], [0, "⌣"], [9, "⌭"], [0, "⌮"], [7, "⌶"], [6, "⌽"], [1, "⌿"], [60, "⍼"], [51, "⎰"], [0, "⎱"], [2, "⎴"], [0, "⎵"], [0, "⎶"], [37, "⏜"], [0, "⏝"], [0, "⏞"], [0, "⏟"], [2, "⏢"], [4, "⏧"], [59, "␣"], [164, "Ⓢ"], [55, "─"], [1, "│"], [9, "┌"], [3, "┐"], [3, "└"], [3, "┘"], [3, "├"], [7, "┤"], [7, "┬"], [7, "┴"], [7, "┼"], [19, "═"], [0, "║"], [0, "╒"], [0, "╓"], [0, "╔"], [0, "╕"], [0, "╖"], [0, "╗"], [0, "╘"], [0, "╙"], [0, "╚"], [0, "╛"], [0, "╜"], [0, "╝"], [0, "╞"], [0, "╟"], [0, "╠"], [0, "╡"], [0, "╢"], [0, "╣"], [0, "╤"], [0, "╥"], [0, "╦"], [0, "╧"], [0, "╨"], [0, "╩"], [0, "╪"], [0, "╫"], [0, "╬"], [19, "▀"], [3, "▄"], [3, "█"], [8, "░"], [0, "▒"], [0, "▓"], [13, "□"], [8, "▪"], [0, "▫"], [1, "▭"], [0, "▮"], [2, "▱"], [1, "△"], [0, "▴"], [0, "▵"], [2, "▸"], [0, "▹"], [3, "▽"], [0, "▾"], [0, "▿"], [2, "◂"], [0, "◃"], [6, "◊"], [0, "○"], [32, "◬"], [2, "◯"], [8, "◸"], [0, "◹"], [0, "◺"], [0, "◻"], [0, "◼"], [8, "★"], [0, "☆"], [7, "☎"], [49, "♀"], [1, "♂"], [29, "♠"], [2, "♣"], [1, "♥"], [0, "♦"], [3, "♪"], [2, "♭"], [0, "♮"], [0, "♯"], [163, "✓"], [3, "✗"], [8, "✠"], [21, "✶"], [33, "❘"], [25, "❲"], [0, "❳"], [84, "⟈"], [0, "⟉"], [28, "⟦"], [0, "⟧"], [0, "⟨"], [0, "⟩"], [0, "⟪"], [0, "⟫"], [0, "⟬"], [0, "⟭"], [7, "⟵"], [0, "⟶"], [0, "⟷"], [0, "⟸"], [0, "⟹"], [0, "⟺"], [1, "⟼"], [2, "⟿"], [258, "⤂"], [0, "⤃"], [0, "⤄"], [0, "⤅"], [6, "⤌"], [0, "⤍"], [0, "⤎"], [0, "⤏"], [0, "⤐"], [0, "⤑"], [0, "⤒"], [0, "⤓"], [2, "⤖"], [2, "⤙"], [0, "⤚"], [0, "⤛"], [0, "⤜"], [0, "⤝"], [0, "⤞"], [0, "⤟"], [0, "⤠"], [2, "⤣"], [0, "⤤"], [0, "⤥"], [0, "⤦"], [0, "⤧"], [0, "⤨"], [0, "⤩"], [0, "⤪"], [8, { v: "⤳", n: 824, o: "⤳̸" }], [1, "⤵"], [0, "⤶"], [0, "⤷"], [0, "⤸"], [0, "⤹"], [2, "⤼"], [0, "⤽"], [7, "⥅"], [2, "⥈"], [0, "⥉"], [0, "⥊"], [0, "⥋"], [2, "⥎"], [0, "⥏"], [0, "⥐"], [0, "⥑"], [0, "⥒"], [0, "⥓"], [0, "⥔"], [0, "⥕"], [0, "⥖"], [0, "⥗"], [0, "⥘"], [0, "⥙"], [0, "⥚"], [0, "⥛"], [0, "⥜"], [0, "⥝"], [0, "⥞"], [0, "⥟"], [0, "⥠"], [0, "⥡"], [0, "⥢"], [0, "⥣"], [0, "⥤"], [0, "⥥"], [0, "⥦"], [0, "⥧"], [0, "⥨"], [0, "⥩"], [0, "⥪"], [0, "⥫"], [0, "⥬"], [0, "⥭"], [0, "⥮"], [0, "⥯"], [0, "⥰"], [0, "⥱"], [0, "⥲"], [0, "⥳"], [0, "⥴"], [0, "⥵"], [0, "⥶"], [1, "⥸"], [0, "⥹"], [1, "⥻"], [0, "⥼"], [0, "⥽"], [0, "⥾"], [0, "⥿"], [5, "⦅"], [0, "⦆"], [4, "⦋"], [0, "⦌"], [0, "⦍"], [0, "⦎"], [0, "⦏"], [0, "⦐"], [0, "⦑"], [0, "⦒"], [0, "⦓"], [0, "⦔"], [0, "⦕"], [0, "⦖"], [3, "⦚"], [1, "⦜"], [0, "⦝"], [6, "⦤"], [0, "⦥"], [0, "⦦"], [0, "⦧"], [0, "⦨"], [0, "⦩"], [0, "⦪"], [0, "⦫"], [0, "⦬"], [0, "⦭"], [0, "⦮"], [0, "⦯"], [0, "⦰"], [0, "⦱"], [0, "⦲"], [0, "⦳"], [0, "⦴"], [0, "⦵"], [0, "⦶"], [0, "⦷"], [1, "⦹"], [1, "⦻"], [0, "⦼"], [1, "⦾"], [0, "⦿"], [0, "⧀"], [0, "⧁"], [0, "⧂"], [0, "⧃"], [0, "⧄"], [0, "⧅"], [3, "⧉"], [3, "⧍"], [0, "⧎"], [0, { v: "⧏", n: 824, o: "⧏̸" }], [0, { v: "⧐", n: 824, o: "⧐̸" }], [11, "⧜"], [0, "⧝"], [0, "⧞"], [4, "⧣"], [0, "⧤"], [0, "⧥"], [5, "⧫"], [8, "⧴"], [1, "⧶"], [9, "⨀"], [0, "⨁"], [0, "⨂"], [1, "⨄"], [1, "⨆"], [5, "⨌"], [0, "⨍"], [2, "⨐"], [0, "⨑"], [0, "⨒"], [0, "⨓"], [0, "⨔"], [0, "⨕"], [0, "⨖"], [0, "⨗"], [10, "⨢"], [0, "⨣"], [0, "⨤"], [0, "⨥"], [0, "⨦"], [0, "⨧"], [1, "⨩"], [0, "⨪"], [2, "⨭"], [0, "⨮"], [0, "⨯"], [0, "⨰"], [0, "⨱"], [1, "⨳"], [0, "⨴"], [0, "⨵"], [0, "⨶"], [0, "⨷"], [0, "⨸"], [0, "⨹"], [0, "⨺"], [0, "⨻"], [0, "⨼"], [2, "⨿"], [0, "⩀"], [1, "⩂"], [0, "⩃"], [0, "⩄"], [0, "⩅"], [0, "⩆"], [0, "⩇"], [0, "⩈"], [0, "⩉"], [0, "⩊"], [0, "⩋"], [0, "⩌"], [0, "⩍"], [2, "⩐"], [2, "⩓"], [0, "⩔"], [0, "⩕"], [0, "⩖"], [0, "⩗"], [0, "⩘"], [1, "⩚"], [0, "⩛"], [0, "⩜"], [0, "⩝"], [1, "⩟"], [6, "⩦"], [3, "⩪"], [2, { v: "⩭", n: 824, o: "⩭̸" }], [0, "⩮"], [0, "⩯"], [0, { v: "⩰", n: 824, o: "⩰̸" }], [0, "⩱"], [0, "⩲"], [0, "⩳"], [0, "⩴"], [0, "⩵"], [1, "⩷"], [0, "⩸"], [0, "⩹"], [0, "⩺"], [0, "⩻"], [0, "⩼"], [0, { v: "⩽", n: 824, o: "⩽̸" }], [0, { v: "⩾", n: 824, o: "⩾̸" }], [0, "⩿"], [0, "⪀"], [0, "⪁"], [0, "⪂"], [0, "⪃"], [0, "⪄"], [0, "⪅"], [0, "⪆"], [0, "⪇"], [0, "⪈"], [0, "⪉"], [0, "⪊"], [0, "⪋"], [0, "⪌"], [0, "⪍"], [0, "⪎"], [0, "⪏"], [0, "⪐"], [0, "⪑"], [0, "⪒"], [0, "⪓"], [0, "⪔"], [0, "⪕"], [0, "⪖"], [0, "⪗"], [0, "⪘"], [0, "⪙"], [0, "⪚"], [2, "⪝"], [0, "⪞"], [0, "⪟"], [0, "⪠"], [0, { v: "⪡", n: 824, o: "⪡̸" }], [0, { v: "⪢", n: 824, o: "⪢̸" }], [1, "⪤"], [0, "⪥"], [0, "⪦"], [0, "⪧"], [0, "⪨"], [0, "⪩"], [0, "⪪"], [0, "⪫"], [0, { v: "⪬", n: 65024, o: "⪬︀" }], [0, { v: "⪭", n: 65024, o: "⪭︀" }], [0, "⪮"], [0, { v: "⪯", n: 824, o: "⪯̸" }], [0, { v: "⪰", n: 824, o: "⪰̸" }], [2, "⪳"], [0, "⪴"], [0, "⪵"], [0, "⪶"], [0, "⪷"], [0, "⪸"], [0, "⪹"], [0, "⪺"], [0, "⪻"], [0, "⪼"], [0, "⪽"], [0, "⪾"], [0, "⪿"], [0, "⫀"], [0, "⫁"], [0, "⫂"], [0, "⫃"], [0, "⫄"], [0, { v: "⫅", n: 824, o: "⫅̸" }], [0, { v: "⫆", n: 824, o: "⫆̸" }], [0, "⫇"], [0, "⫈"], [2, { v: "⫋", n: 65024, o: "⫋︀" }], [0, { v: "⫌", n: 65024, o: "⫌︀" }], [2, "⫏"], [0, "⫐"], [0, "⫑"], [0, "⫒"], [0, "⫓"], [0, "⫔"], [0, "⫕"], [0, "⫖"], [0, "⫗"], [0, "⫘"], [0, "⫙"], [0, "⫚"], [0, "⫛"], [8, "⫤"], [1, "⫦"], [0, "⫧"], [0, "⫨"], [0, "⫩"], [1, "⫫"], [0, "⫬"], [0, "⫭"], [0, "⫮"], [0, "⫯"], [0, "⫰"], [0, "⫱"], [0, "⫲"], [0, "⫳"], [9, { v: "⫽", n: 8421, o: "⫽⃥" }], [44343, { n: new Map(/* @__PURE__ */ restoreDiff([[56476, "𝒜"], [1, "𝒞"], [0, "𝒟"], [2, "𝒢"], [2, "𝒥"], [0, "𝒦"], [2, "𝒩"], [0, "𝒪"], [0, "𝒫"], [0, "𝒬"], [1, "𝒮"], [0, "𝒯"], [0, "𝒰"], [0, "𝒱"], [0, "𝒲"], [0, "𝒳"], [0, "𝒴"], [0, "𝒵"], [0, "𝒶"], [0, "𝒷"], [0, "𝒸"], [0, "𝒹"], [1, "𝒻"], [1, "𝒽"], [0, "𝒾"], [0, "𝒿"], [0, "𝓀"], [0, "𝓁"], [0, "𝓂"], [0, "𝓃"], [1, "𝓅"], [0, "𝓆"], [0, "𝓇"], [0, "𝓈"], [0, "𝓉"], [0, "𝓊"], [0, "𝓋"], [0, "𝓌"], [0, "𝓍"], [0, "𝓎"], [0, "𝓏"], [52, "𝔄"], [0, "𝔅"], [1, "𝔇"], [0, "𝔈"], [0, "𝔉"], [0, "𝔊"], [2, "𝔍"], [0, "𝔎"], [0, "𝔏"], [0, "𝔐"], [0, "𝔑"], [0, "𝔒"], [0, "𝔓"], [0, "𝔔"], [1, "𝔖"], [0, "𝔗"], [0, "𝔘"], [0, "𝔙"], [0, "𝔚"], [0, "𝔛"], [0, "𝔜"], [1, "𝔞"], [0, "𝔟"], [0, "𝔠"], [0, "𝔡"], [0, "𝔢"], [0, "𝔣"], [0, "𝔤"], [0, "𝔥"], [0, "𝔦"], [0, "𝔧"], [0, "𝔨"], [0, "𝔩"], [0, "𝔪"], [0, "𝔫"], [0, "𝔬"], [0, "𝔭"], [0, "𝔮"], [0, "𝔯"], [0, "𝔰"], [0, "𝔱"], [0, "𝔲"], [0, "𝔳"], [0, "𝔴"], [0, "𝔵"], [0, "𝔶"], [0, "𝔷"], [0, "𝔸"], [0, "𝔹"], [1, "𝔻"], [0, "𝔼"], [0, "𝔽"], [0, "𝔾"], [1, "𝕀"], [0, "𝕁"], [0, "𝕂"], [0, "𝕃"], [0, "𝕄"], [1, "𝕆"], [3, "𝕊"], [0, "𝕋"], [0, "𝕌"], [0, "𝕍"], [0, "𝕎"], [0, "𝕏"], [0, "𝕐"], [1, "𝕒"], [0, "𝕓"], [0, "𝕔"], [0, "𝕕"], [0, "𝕖"], [0, "𝕗"], [0, "𝕘"], [0, "𝕙"], [0, "𝕚"], [0, "𝕛"], [0, "𝕜"], [0, "𝕝"], [0, "𝕞"], [0, "𝕟"], [0, "𝕠"], [0, "𝕡"], [0, "𝕢"], [0, "𝕣"], [0, "𝕤"], [0, "𝕥"], [0, "𝕦"], [0, "𝕧"], [0, "𝕨"], [0, "𝕩"], [0, "𝕪"], [0, "𝕫"]])) }], [8906, "ff"], [0, "fi"], [0, "fl"], [0, "ffi"], [0, "ffl"]])); + +// node_modules/entities/lib/esm/escape.js +var xmlReplacer = /["&'<>$\x80-\uFFFF]/g; +var xmlCodeMap = /* @__PURE__ */ new Map([ + [34, """], + [38, "&"], + [39, "'"], + [60, "<"], + [62, ">"] +]); +var getCodePoint = String.prototype.codePointAt != null ? (str, index) => str.codePointAt(index) : (c2, index) => (c2.charCodeAt(index) & 64512) === 55296 ? (c2.charCodeAt(index) - 55296) * 1024 + c2.charCodeAt(index + 1) - 56320 + 65536 : c2.charCodeAt(index); +function encodeXML(str) { + let ret = ""; + let lastIdx = 0; + let match; + while ((match = xmlReplacer.exec(str)) !== null) { + const i2 = match.index; + const char = str.charCodeAt(i2); + const next = xmlCodeMap.get(char); + if (next !== void 0) { + ret += str.substring(lastIdx, i2) + next; + lastIdx = i2 + 1; + } else { + ret += `${str.substring(lastIdx, i2)}&#x${getCodePoint(str, i2).toString(16)};`; + lastIdx = xmlReplacer.lastIndex += Number((char & 64512) === 55296); + } + } + return ret + str.substr(lastIdx); +} +function getEscaper(regex, map2) { + return function escape2(data) { + let match; + let lastIdx = 0; + let result = ""; + while (match = regex.exec(data)) { + if (lastIdx !== match.index) { + result += data.substring(lastIdx, match.index); + } + result += map2.get(match[0].charCodeAt(0)); + lastIdx = match.index + 1; + } + return result + data.substring(lastIdx); + }; +} +var escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap); +var escapeAttribute = getEscaper(/["&\u00A0]/g, /* @__PURE__ */ new Map([ + [34, """], + [38, "&"], + [160, " "] +])); +var escapeText = getEscaper(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([ + [38, "&"], + [60, "<"], + [62, ">"], + [160, " "] +])); + +// node_modules/entities/lib/esm/index.js +var EntityLevel; +(function(EntityLevel2) { + EntityLevel2[EntityLevel2["XML"] = 0] = "XML"; + EntityLevel2[EntityLevel2["HTML"] = 1] = "HTML"; +})(EntityLevel || (EntityLevel = {})); +var EncodingMode; +(function(EncodingMode2) { + EncodingMode2[EncodingMode2["UTF8"] = 0] = "UTF8"; + EncodingMode2[EncodingMode2["ASCII"] = 1] = "ASCII"; + EncodingMode2[EncodingMode2["Extensive"] = 2] = "Extensive"; + EncodingMode2[EncodingMode2["Attribute"] = 3] = "Attribute"; + EncodingMode2[EncodingMode2["Text"] = 4] = "Text"; +})(EncodingMode || (EncodingMode = {})); + +// node_modules/dom-serializer/lib/esm/foreignNames.js +var elementNames = new Map([ + "altGlyph", + "altGlyphDef", + "altGlyphItem", + "animateColor", + "animateMotion", + "animateTransform", + "clipPath", + "feBlend", + "feColorMatrix", + "feComponentTransfer", + "feComposite", + "feConvolveMatrix", + "feDiffuseLighting", + "feDisplacementMap", + "feDistantLight", + "feDropShadow", + "feFlood", + "feFuncA", + "feFuncB", + "feFuncG", + "feFuncR", + "feGaussianBlur", + "feImage", + "feMerge", + "feMergeNode", + "feMorphology", + "feOffset", + "fePointLight", + "feSpecularLighting", + "feSpotLight", + "feTile", + "feTurbulence", + "foreignObject", + "glyphRef", + "linearGradient", + "radialGradient", + "textPath" +].map((val) => [val.toLowerCase(), val])); +var attributeNames = new Map([ + "definitionURL", + "attributeName", + "attributeType", + "baseFrequency", + "baseProfile", + "calcMode", + "clipPathUnits", + "diffuseConstant", + "edgeMode", + "filterUnits", + "glyphRef", + "gradientTransform", + "gradientUnits", + "kernelMatrix", + "kernelUnitLength", + "keyPoints", + "keySplines", + "keyTimes", + "lengthAdjust", + "limitingConeAngle", + "markerHeight", + "markerUnits", + "markerWidth", + "maskContentUnits", + "maskUnits", + "numOctaves", + "pathLength", + "patternContentUnits", + "patternTransform", + "patternUnits", + "pointsAtX", + "pointsAtY", + "pointsAtZ", + "preserveAlpha", + "preserveAspectRatio", + "primitiveUnits", + "refX", + "refY", + "repeatCount", + "repeatDur", + "requiredExtensions", + "requiredFeatures", + "specularConstant", + "specularExponent", + "spreadMethod", + "startOffset", + "stdDeviation", + "stitchTiles", + "surfaceScale", + "systemLanguage", + "tableValues", + "targetX", + "targetY", + "textLength", + "viewBox", + "viewTarget", + "xChannelSelector", + "yChannelSelector", + "zoomAndPan" +].map((val) => [val.toLowerCase(), val])); + +// node_modules/dom-serializer/lib/esm/index.js +var unencodedElements = /* @__PURE__ */ new Set([ + "style", + "script", + "xmp", + "iframe", + "noembed", + "noframes", + "plaintext", + "noscript" +]); +function replaceQuotes(value) { + return value.replace(/"/g, """); +} +function formatAttributes(attributes, opts) { + var _a2; + if (!attributes) + return; + const encode = ((_a2 = opts.encodeEntities) !== null && _a2 !== void 0 ? _a2 : opts.decodeEntities) === false ? replaceQuotes : opts.xmlMode || opts.encodeEntities !== "utf8" ? encodeXML : escapeAttribute; + return Object.keys(attributes).map((key) => { + var _a3, _b; + const value = (_a3 = attributes[key]) !== null && _a3 !== void 0 ? _a3 : ""; + if (opts.xmlMode === "foreign") { + key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key; + } + if (!opts.emptyAttrs && !opts.xmlMode && value === "") { + return key; + } + return `${key}="${encode(value)}"`; + }).join(" "); +} +var singleTag = /* @__PURE__ */ new Set([ + "area", + "base", + "basefont", + "br", + "col", + "command", + "embed", + "frame", + "hr", + "img", + "input", + "isindex", + "keygen", + "link", + "meta", + "param", + "source", + "track", + "wbr" +]); +function render(node, options = {}) { + const nodes = "length" in node ? node : [node]; + let output = ""; + for (let i2 = 0; i2 < nodes.length; i2++) { + output += renderNode(nodes[i2], options); + } + return output; +} +var esm_default = render; +function renderNode(node, options) { + switch (node.type) { + case Root2: + return render(node.children, options); + case Doctype: + case Directive: + return renderDirective(node); + case Comment: + return renderComment(node); + case CDATA: + return renderCdata(node); + case Script: + case Style: + case Tag4: + return renderTag(node, options); + case Text2: + return renderText2(node, options); + } +} +var foreignModeIntegrationPoints = /* @__PURE__ */ new Set([ + "mi", + "mo", + "mn", + "ms", + "mtext", + "annotation-xml", + "foreignObject", + "desc", + "title" +]); +var foreignElements = /* @__PURE__ */ new Set(["svg", "math"]); +function renderTag(elem, opts) { + var _a2; + if (opts.xmlMode === "foreign") { + elem.name = (_a2 = elementNames.get(elem.name)) !== null && _a2 !== void 0 ? _a2 : elem.name; + if (elem.parent && foreignModeIntegrationPoints.has(elem.parent.name)) { + opts = __spreadProps(__spreadValues({}, opts), { xmlMode: false }); + } + } + if (!opts.xmlMode && foreignElements.has(elem.name)) { + opts = __spreadProps(__spreadValues({}, opts), { xmlMode: "foreign" }); + } + let tag = `<${elem.name}`; + const attribs = formatAttributes(elem.attribs, opts); + if (attribs) { + tag += ` ${attribs}`; + } + if (elem.children.length === 0 && (opts.xmlMode ? opts.selfClosingTags !== false : opts.selfClosingTags && singleTag.has(elem.name))) { + if (!opts.xmlMode) + tag += " "; + tag += "/>"; + } else { + tag += ">"; + if (elem.children.length > 0) { + tag += render(elem.children, opts); + } + if (opts.xmlMode || !singleTag.has(elem.name)) { + tag += ``; + } + } + return tag; +} +function renderDirective(elem) { + return `<${elem.data}>`; +} +function renderText2(elem, opts) { + var _a2; + let data = elem.data || ""; + if (((_a2 = opts.encodeEntities) !== null && _a2 !== void 0 ? _a2 : opts.decodeEntities) !== false && !(!opts.xmlMode && elem.parent && unencodedElements.has(elem.parent.name))) { + data = opts.xmlMode || opts.encodeEntities !== "utf8" ? encodeXML(data) : escapeText(data); + } + return data; +} +function renderCdata(elem) { + return ``; +} +function renderComment(elem) { + return ``; +} + +// node_modules/domutils/lib/esm/stringify.js +function getOuterHTML(node, options) { + return esm_default(node, options); +} +function getInnerHTML(node, options) { + return hasChildren(node) ? node.children.map((node2) => getOuterHTML(node2, options)).join("") : ""; +} +function getText(node) { + if (Array.isArray(node)) + return node.map(getText).join(""); + if (isTag2(node)) + return node.name === "br" ? "\n" : getText(node.children); + if (isCDATA(node)) + return getText(node.children); + if (isText(node)) + return node.data; + return ""; +} +function textContent(node) { + if (Array.isArray(node)) + return node.map(textContent).join(""); + if (hasChildren(node) && !isComment(node)) { + return textContent(node.children); + } + if (isText(node)) + return node.data; + return ""; +} +function innerText(node) { + if (Array.isArray(node)) + return node.map(innerText).join(""); + if (hasChildren(node) && (node.type === ElementType.Tag || isCDATA(node))) { + return innerText(node.children); + } + if (isText(node)) + return node.data; + return ""; +} + +// node_modules/domutils/lib/esm/traversal.js +function getChildren(elem) { + return hasChildren(elem) ? elem.children : []; +} +function getParent(elem) { + return elem.parent || null; +} +function getSiblings(elem) { + const parent = getParent(elem); + if (parent != null) + return getChildren(parent); + const siblings = [elem]; + let { prev, next } = elem; + while (prev != null) { + siblings.unshift(prev); + ({ prev } = prev); + } + while (next != null) { + siblings.push(next); + ({ next } = next); + } + return siblings; +} +function getAttributeValue(elem, name) { + var _a2; + return (_a2 = elem.attribs) === null || _a2 === void 0 ? void 0 : _a2[name]; +} +function hasAttrib(elem, name) { + return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name) && elem.attribs[name] != null; +} +function getName(elem) { + return elem.name; +} +function nextElementSibling(elem) { + let { next } = elem; + while (next !== null && !isTag2(next)) + ({ next } = next); + return next; +} +function prevElementSibling(elem) { + let { prev } = elem; + while (prev !== null && !isTag2(prev)) + ({ prev } = prev); + return prev; +} + +// node_modules/domutils/lib/esm/manipulation.js +function removeElement(elem) { + if (elem.prev) + elem.prev.next = elem.next; + if (elem.next) + elem.next.prev = elem.prev; + if (elem.parent) { + const childs = elem.parent.children; + const childsIndex = childs.lastIndexOf(elem); + if (childsIndex >= 0) { + childs.splice(childsIndex, 1); + } + } + elem.next = null; + elem.prev = null; + elem.parent = null; +} +function replaceElement(elem, replacement) { + const prev = replacement.prev = elem.prev; + if (prev) { + prev.next = replacement; + } + const next = replacement.next = elem.next; + if (next) { + next.prev = replacement; + } + const parent = replacement.parent = elem.parent; + if (parent) { + const childs = parent.children; + childs[childs.lastIndexOf(elem)] = replacement; + elem.parent = null; + } +} +function appendChild(parent, child) { + removeElement(child); + child.next = null; + child.parent = parent; + if (parent.children.push(child) > 1) { + const sibling = parent.children[parent.children.length - 2]; + sibling.next = child; + child.prev = sibling; + } else { + child.prev = null; + } +} +function append(elem, next) { + removeElement(next); + const { parent } = elem; + const currNext = elem.next; + next.next = currNext; + next.prev = elem; + elem.next = next; + next.parent = parent; + if (currNext) { + currNext.prev = next; + if (parent) { + const childs = parent.children; + childs.splice(childs.lastIndexOf(currNext), 0, next); + } + } else if (parent) { + parent.children.push(next); + } +} +function prependChild(parent, child) { + removeElement(child); + child.parent = parent; + child.prev = null; + if (parent.children.unshift(child) !== 1) { + const sibling = parent.children[1]; + sibling.prev = child; + child.next = sibling; + } else { + child.next = null; + } +} +function prepend(elem, prev) { + removeElement(prev); + const { parent } = elem; + if (parent) { + const childs = parent.children; + childs.splice(childs.indexOf(elem), 0, prev); + } + if (elem.prev) { + elem.prev.next = prev; + } + prev.parent = parent; + prev.prev = elem.prev; + prev.next = elem; + elem.prev = prev; +} + +// node_modules/domutils/lib/esm/querying.js +function filter2(test, node, recurse = true, limit = Infinity) { + return find2(test, Array.isArray(node) ? node : [node], recurse, limit); +} +function find2(test, nodes, recurse, limit) { + const result = []; + const nodeStack = [nodes]; + const indexStack = [0]; + for (; ; ) { + if (indexStack[0] >= nodeStack[0].length) { + if (indexStack.length === 1) { + return result; + } + nodeStack.shift(); + indexStack.shift(); + continue; + } + const elem = nodeStack[0][indexStack[0]++]; + if (test(elem)) { + result.push(elem); + if (--limit <= 0) + return result; + } + if (recurse && hasChildren(elem) && elem.children.length > 0) { + indexStack.unshift(0); + nodeStack.unshift(elem.children); + } + } +} +function findOneChild(test, nodes) { + return nodes.find(test); +} +function findOne(test, nodes, recurse = true) { + let elem = null; + for (let i2 = 0; i2 < nodes.length && !elem; i2++) { + const node = nodes[i2]; + if (!isTag2(node)) { + continue; + } else if (test(node)) { + elem = node; + } else if (recurse && node.children.length > 0) { + elem = findOne(test, node.children, true); + } + } + return elem; +} +function existsOne(test, nodes) { + return nodes.some((checked) => isTag2(checked) && (test(checked) || existsOne(test, checked.children))); +} +function findAll(test, nodes) { + const result = []; + const nodeStack = [nodes]; + const indexStack = [0]; + for (; ; ) { + if (indexStack[0] >= nodeStack[0].length) { + if (nodeStack.length === 1) { + return result; + } + nodeStack.shift(); + indexStack.shift(); + continue; + } + const elem = nodeStack[0][indexStack[0]++]; + if (!isTag2(elem)) + continue; + if (test(elem)) + result.push(elem); + if (elem.children.length > 0) { + indexStack.unshift(0); + nodeStack.unshift(elem.children); + } + } +} + +// node_modules/domutils/lib/esm/legacy.js +var Checks = { + tag_name(name) { + if (typeof name === "function") { + return (elem) => isTag2(elem) && name(elem.name); + } else if (name === "*") { + return isTag2; + } + return (elem) => isTag2(elem) && elem.name === name; + }, + tag_type(type) { + if (typeof type === "function") { + return (elem) => type(elem.type); + } + return (elem) => elem.type === type; + }, + tag_contains(data) { + if (typeof data === "function") { + return (elem) => isText(elem) && data(elem.data); + } + return (elem) => isText(elem) && elem.data === data; + } +}; +function getAttribCheck(attrib, value) { + if (typeof value === "function") { + return (elem) => isTag2(elem) && value(elem.attribs[attrib]); + } + return (elem) => isTag2(elem) && elem.attribs[attrib] === value; +} +function combineFuncs(a2, b2) { + return (elem) => a2(elem) || b2(elem); +} +function compileTest(options) { + const funcs = Object.keys(options).map((key) => { + const value = options[key]; + return Object.prototype.hasOwnProperty.call(Checks, key) ? Checks[key](value) : getAttribCheck(key, value); + }); + return funcs.length === 0 ? null : funcs.reduce(combineFuncs); +} +function testElement(options, node) { + const test = compileTest(options); + return test ? test(node) : true; +} +function getElements(options, nodes, recurse, limit = Infinity) { + const test = compileTest(options); + return test ? filter2(test, nodes, recurse, limit) : []; +} +function getElementById(id2, nodes, recurse = true) { + if (!Array.isArray(nodes)) + nodes = [nodes]; + return findOne(getAttribCheck("id", id2), nodes, recurse); +} +function getElementsByTagName(tagName, nodes, recurse = true, limit = Infinity) { + return filter2(Checks["tag_name"](tagName), nodes, recurse, limit); +} +function getElementsByTagType(type, nodes, recurse = true, limit = Infinity) { + return filter2(Checks["tag_type"](type), nodes, recurse, limit); +} + +// node_modules/domutils/lib/esm/helpers.js +function removeSubsets(nodes) { + let idx = nodes.length; + while (--idx >= 0) { + const node = nodes[idx]; + if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) { + nodes.splice(idx, 1); + continue; + } + for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) { + if (nodes.includes(ancestor)) { + nodes.splice(idx, 1); + break; + } + } + } + return nodes; +} +var DocumentPosition; +(function(DocumentPosition2) { + DocumentPosition2[DocumentPosition2["DISCONNECTED"] = 1] = "DISCONNECTED"; + DocumentPosition2[DocumentPosition2["PRECEDING"] = 2] = "PRECEDING"; + DocumentPosition2[DocumentPosition2["FOLLOWING"] = 4] = "FOLLOWING"; + DocumentPosition2[DocumentPosition2["CONTAINS"] = 8] = "CONTAINS"; + DocumentPosition2[DocumentPosition2["CONTAINED_BY"] = 16] = "CONTAINED_BY"; +})(DocumentPosition || (DocumentPosition = {})); +function compareDocumentPosition(nodeA, nodeB) { + const aParents = []; + const bParents = []; + if (nodeA === nodeB) { + return 0; + } + let current = hasChildren(nodeA) ? nodeA : nodeA.parent; + while (current) { + aParents.unshift(current); + current = current.parent; + } + current = hasChildren(nodeB) ? nodeB : nodeB.parent; + while (current) { + bParents.unshift(current); + current = current.parent; + } + const maxIdx = Math.min(aParents.length, bParents.length); + let idx = 0; + while (idx < maxIdx && aParents[idx] === bParents[idx]) { + idx++; + } + if (idx === 0) { + return DocumentPosition.DISCONNECTED; + } + const sharedParent = aParents[idx - 1]; + const siblings = sharedParent.children; + const aSibling = aParents[idx]; + const bSibling = bParents[idx]; + if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) { + if (sharedParent === nodeB) { + return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY; + } + return DocumentPosition.FOLLOWING; + } + if (sharedParent === nodeA) { + return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS; + } + return DocumentPosition.PRECEDING; +} +function uniqueSort(nodes) { + nodes = nodes.filter((node, i2, arr) => !arr.includes(node, i2 + 1)); + nodes.sort((a2, b2) => { + const relative = compareDocumentPosition(a2, b2); + if (relative & DocumentPosition.PRECEDING) { + return -1; + } else if (relative & DocumentPosition.FOLLOWING) { + return 1; + } + return 0; + }); + return nodes; +} + +// node_modules/domutils/lib/esm/feeds.js +function getFeed(doc) { + const feedRoot = getOneElement(isValidFeed, doc); + return !feedRoot ? null : feedRoot.name === "feed" ? getAtomFeed(feedRoot) : getRssFeed(feedRoot); +} +function getAtomFeed(feedRoot) { + var _a2; + const childs = feedRoot.children; + const feed = { + type: "atom", + items: getElementsByTagName("entry", childs).map((item) => { + var _a3; + const { children } = item; + const entry = { media: getMediaElements(children) }; + addConditionally(entry, "id", "id", children); + addConditionally(entry, "title", "title", children); + const href2 = (_a3 = getOneElement("link", children)) === null || _a3 === void 0 ? void 0 : _a3.attribs["href"]; + if (href2) { + entry.link = href2; + } + const description = fetch("summary", children) || fetch("content", children); + if (description) { + entry.description = description; + } + const pubDate = fetch("updated", children); + if (pubDate) { + entry.pubDate = new Date(pubDate); + } + return entry; + }) + }; + addConditionally(feed, "id", "id", childs); + addConditionally(feed, "title", "title", childs); + const href = (_a2 = getOneElement("link", childs)) === null || _a2 === void 0 ? void 0 : _a2.attribs["href"]; + if (href) { + feed.link = href; + } + addConditionally(feed, "description", "subtitle", childs); + const updated = fetch("updated", childs); + if (updated) { + feed.updated = new Date(updated); + } + addConditionally(feed, "author", "email", childs, true); + return feed; +} +function getRssFeed(feedRoot) { + var _a2, _b; + const childs = (_b = (_a2 = getOneElement("channel", feedRoot.children)) === null || _a2 === void 0 ? void 0 : _a2.children) !== null && _b !== void 0 ? _b : []; + const feed = { + type: feedRoot.name.substr(0, 3), + id: "", + items: getElementsByTagName("item", feedRoot.children).map((item) => { + const { children } = item; + const entry = { media: getMediaElements(children) }; + addConditionally(entry, "id", "guid", children); + addConditionally(entry, "title", "title", children); + addConditionally(entry, "link", "link", children); + addConditionally(entry, "description", "description", children); + const pubDate = fetch("pubDate", children) || fetch("dc:date", children); + if (pubDate) + entry.pubDate = new Date(pubDate); + return entry; + }) + }; + addConditionally(feed, "title", "title", childs); + addConditionally(feed, "link", "link", childs); + addConditionally(feed, "description", "description", childs); + const updated = fetch("lastBuildDate", childs); + if (updated) { + feed.updated = new Date(updated); + } + addConditionally(feed, "author", "managingEditor", childs, true); + return feed; +} +var MEDIA_KEYS_STRING = ["url", "type", "lang"]; +var MEDIA_KEYS_INT = [ + "fileSize", + "bitrate", + "framerate", + "samplingrate", + "channels", + "duration", + "height", + "width" +]; +function getMediaElements(where) { + return getElementsByTagName("media:content", where).map((elem) => { + const { attribs } = elem; + const media = { + medium: attribs["medium"], + isDefault: !!attribs["isDefault"] + }; + for (const attrib of MEDIA_KEYS_STRING) { + if (attribs[attrib]) { + media[attrib] = attribs[attrib]; + } + } + for (const attrib of MEDIA_KEYS_INT) { + if (attribs[attrib]) { + media[attrib] = parseInt(attribs[attrib], 10); + } + } + if (attribs["expression"]) { + media.expression = attribs["expression"]; + } + return media; + }); +} +function getOneElement(tagName, node) { + return getElementsByTagName(tagName, node, true, 1)[0]; +} +function fetch(tagName, where, recurse = false) { + return textContent(getElementsByTagName(tagName, where, recurse, 1)).trim(); +} +function addConditionally(obj, prop, tagName, where, recurse = false) { + const val = fetch(tagName, where, recurse); + if (val) + obj[prop] = val; +} +function isValidFeed(value) { + return value === "rss" || value === "feed" || value === "rdf:RDF"; +} + +// src/shared/cell-content/text-cell-content.ts +var getInnerHTML2 = (htmlText) => { + let allInnerText = ""; + const parser = new Parser({ + ontext: (text) => { + allInnerText += text; + } + }); + parser.write(htmlText); + parser.end(); + return allInnerText.trim(); +}; +var markdownToHTML = (markdown) => { + const md = (0, import_markdown_it.default)(); + return md.render(markdown); +}; +var getTextCellContent = (content, shouldRemoveMarkdown) => { + if (shouldRemoveMarkdown) { + const replaced = content.replace( + WIKI_LINK_REGEX, + (_match, path) => path + ); + const html = markdownToHTML(replaced); + const innerHTML = getInnerHTML2(html); + return innerHTML; + } + return content; +}; + +// src/shared/cell-content/time-content.ts +var getTimeCellContent = (dateTime, format) => { + if (dateTime !== null) + return unixTimeToDateTimeString(dateTime, format); return ""; }; -// src/react/table-app/embed-cell/index.tsx -var EmbeddedLink = ({ - markdown, - aspectRatio, - horizontalPadding, - verticalPadding -}) => { - const { containerRef, renderRef } = useRenderMarkdown(markdown, true); - const paddingX = getSpacing(horizontalPadding); - const paddingY = getSpacing(verticalPadding); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - css: import_emotion_react_cjs.css` - width: 100%; - aspect-ratio: ${aspectRatio}; - padding-left: ${paddingX}; - padding-right: ${paddingX}; - padding-top: ${paddingY}; - padding-bottom: ${paddingY}; +// src/shared/cell-content/index.ts +var getTagCellContent = (column, cell) => { + return column.tags.filter((tag) => cell.tagIds.includes(tag.id)).map((tag) => tag.content).join(","); +}; +var getCellContent = (app, column, row, cell, shouldRemoveMarkdown) => { + const { content: cellContent } = cell; + switch (column.type) { + case "text" /* TEXT */: + case "file" /* FILE */: + return getTextCellContent(cellContent, shouldRemoveMarkdown); + case "number" /* NUMBER */: + return getNumberCellContent(column.numberFormat, cellContent, { + currency: column.currencyType, + prefix: column.numberPrefix, + suffix: column.numberSuffix, + separator: column.numberSeparator + }); + case "embed" /* EMBED */: + return getEmbedCellContent(app, cellContent, { + isExport: true, + isExternalLink: cell.isExternalLink, + shouldRemoveMarkdown + }); + case "checkbox" /* CHECKBOX */: + return getCheckboxCellContent(cellContent, shouldRemoveMarkdown); + case "tag" /* TAG */: + case "multi-tag" /* MULTI_TAG */: + return getTagCellContent(column, cell); + case "date" /* DATE */: + return getDateCellContent(cell.dateTime, column.dateFormat); + case "creation-time" /* CREATION_TIME */: + return getTimeCellContent(row.creationTime, column.dateFormat); + case "last-edited-time" /* LAST_EDITED_TIME */: + return getTimeCellContent(row.lastEditedTime, column.dateFormat); + default: + throw new Error("Unsupported cell type"); + } +}; - iframe { - width: 100%; - height: 100%; - } - - p { - width: 100%; - height: 100%; - margin: 0px; - } - `, - ref: (node) => { - containerRef.current = node; - appendOrReplaceFirstChild(node, renderRef.current); - } +// src/shared/export/loom-state-to-array.tsx +var serializeColumns = (columns) => { + return columns.map((column) => column.content); +}; +var serializeCells = (app, columns, rows, shouldRemoveMarkdown) => { + return rows.map((row) => { + const { cells } = row; + return cells.map((cell) => { + const column = columns.find( + (column2) => column2.id === cell.columnId + ); + if (!column) + throw new ColumNotFoundError(cell.columnId); + const content = getCellContent( + app, + column, + row, + cell, + shouldRemoveMarkdown + ); + return content; + }); }); }; -function EmbedCell({ - markdown, - aspectRatio, - horizontalPadding, - verticalPadding -}) { - let isValidURL = true; - const content = getEmbedCellContent(markdown, true); - if (content === "") - isValidURL = false; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - className: "NLT__embed-cell", - css: import_emotion_react_cjs.css` - width: 100%; - height: 100%; - `, - children: [ - isValidURL && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(EmbeddedLink, { - markdown: content, - aspectRatio, - horizontalPadding, - verticalPadding - }), - !isValidURL && markdown !== "" && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { - value: "Invalid URL" - }) - ] - }); -} - -// src/react/table-app/embed-cell-edit/index.tsx -var import_react79 = __toESM(require_react()); -function EmbedCellEdit({ - shouldWrapOverflow, - menuCloseRequest, - value, - onChange, - onMenuClose -}) { - const [localValue, setLocalValue] = import_react79.default.useState(value); - const inputRef = import_react79.default.useRef(null); - useInputSelection(inputRef, localValue); - const hasCloseRequestTimeChanged = useCompare( - menuCloseRequest == null ? void 0 : menuCloseRequest.requestTime +var loomStateToArray = (app, loomState, shouldRemoveMarkdown) => { + const { rows, columns } = loomState.model; + const serializedColumns = serializeColumns(columns); + const serializedCells = serializeCells( + app, + columns, + rows, + shouldRemoveMarkdown ); - import_react79.default.useEffect(() => { - if (hasCloseRequestTimeChanged && menuCloseRequest !== null) { - if (localValue !== value) - onChange(localValue); - onMenuClose(); - } - }, [ - value, - localValue, - hasCloseRequestTimeChanged, - menuCloseRequest, - onMenuClose, - onChange - ]); - function handleTextareaChange(e) { - const inputValue = e.target.value; - setLocalValue(inputValue); - } - const overflowStyle = useOverflow(shouldWrapOverflow); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__embed-cell-edit", - css: import_emotion_react_cjs.css` - width: 100%; - height: 100%; - `, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("textarea", { - autoFocus: true, - css: import_emotion_react_cjs.css` - ${textAreaStyle} - ${overflowStyle} - `, - ref: inputRef, - value: localValue, - onChange: handleTextareaChange, - onBlur: (e) => { - e.target.classList.add("NLT__blur--cell"); - } - }) - }); -} - -// src/obsidian-shim/build/notification.ts -var import_obsidian6 = require("obsidian"); -var Notification = class { - constructor(message) { - new import_obsidian6.Notice(message); - } + return [serializedColumns, ...serializedCells]; }; -// src/react/table-app/body-cell/index.tsx -function BodyCell5({ - cellId, - columnId, - rowId, - markdown, - aspectRatio, - verticalPadding, - horizontalPadding, - dateFormat, - dateTime, - columnCurrencyType, - columnType, - rowCreationTime, - rowLastEditedTime: rowLastEditedTime2, - columnTags, - cellTagIds, - width, - shouldWrapOverflow, - onTagRemoveClick, - onTagMultipleRemove, - onTagColorChange, - onTagDelete, - onTagClick, - onContentChange, - onDateFormatChange, - onDateTimeChange, - onTagAdd -}) { - const shouldRequestOnClose = columnType === "text" /* TEXT */ || columnType === "embed" /* EMBED */ || columnType === "number" /* NUMBER */ || columnType === "currency" /* CURRENCY */ || columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */ || columnType === "date" /* DATE */; - const { menu, isMenuOpen, menuCloseRequest, menuRef, closeTopMenu } = useMenu(0 /* ONE */, { - shouldRequestOnClose - }); - const { triggerPosition, triggerRef } = useMenuTriggerPosition(); - useShiftMenu(triggerRef, menuRef, isMenuOpen); - function handleCellContextClick() { +// src/shared/export/export-utils.ts +var escapePipeCharacters = (value) => value.replace(/\|/g, "\\|"); + +// src/shared/export/export-to-markdown.tsx +var exportToMarkdown = (app, loomState, shouldRemoveMarkdown) => { + const arr = loomStateToArray(app, loomState, shouldRemoveMarkdown); + const escapedArr = arr.map( + (row) => row.map((cell) => escapePipeCharacters(cell)) + ); + return markdownTable(escapedArr); +}; + +// src/react/export-app/index.tsx +var import_obsidian14 = require("obsidian"); + +// src/shared/export/download-utils.ts +var import_obsidian13 = require("obsidian"); +var getBlobTypeForExportType = (type) => { + switch (type) { + case "CSV" /* CSV */: + return "text/csv"; + case "Markdown" /* MARKDOWN */: + return "text/markdown"; + default: + throw new Error(`Unknown export type: ${type}`); + } +}; +var getExportFileName = (filePath) => { + const replaceExtension = filePath.replace(`.${LOOM_EXTENSION}`, ""); + const replaceSlash = replaceExtension.replace(/\//g, "-"); + const replaceSpaces = replaceSlash.replace(/ /g, "_"); + const timestamp = (0, import_obsidian13.moment)().format("YYYY_MM_DD-HH_mm_ss"); + return replaceSpaces + "-" + timestamp; +}; +var downloadFile = (fileName, blobType, data) => { + if (blobType === "text/csv") { + data = "\uFEFF" + data; + } + const blob = new Blob([data], { type: blobType }); + const url = window.URL.createObjectURL(blob); + const el = document.createElement("a"); + el.setAttribute("href", url); + el.setAttribute("download", fileName); + el.style.display = "none"; + document.body.appendChild(el); + el.click(); + document.body.removeChild(el); +}; + +// src/shared/export/export-to-csv.tsx +var import_papaparse = __toESM(require_papaparse_min()); +var exportToCSV = (app, loomState, shouldRemoveMarkdown) => { + const arr = loomStateToArray(app, loomState, shouldRemoveMarkdown); + return import_papaparse.default.unparse(arr); +}; + +// src/react/shared/switch/index.tsx +var import_jsx_runtime35 = __toESM(require_jsx_runtime()); +function Switch({ id: id2, value, ariaLabel, onToggle }) { + const { isDarkMode } = useAppSelector((state) => state.global); + function handleKeyDown(e) { + if (e.key === "Enter") { + e.stopPropagation(); + onToggle(!value); + } + } + function handleClick(e) { + e.stopPropagation(); + onToggle(!value); + } + let className = "checkbox-container dataloom-switch dataloom-focusable"; + if (value) + className += " is-enabled"; + if (isDarkMode) + className += " dataloom-switch--dark"; + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "div", + { + tabIndex: 0, + className, + "aria-label": ariaLabel, + onClick: handleClick, + onKeyDown: handleKeyDown, + children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("input", { id: id2, type: "checkbox" }) + } + ); +} + +// src/react/export-app/index.tsx +var import_jsx_runtime36 = __toESM(require_jsx_runtime()); +function ExportApp({ app, loomState, loomFilePath }) { + const [exportType, setExportType] = import_react25.default.useState( + "Select an option" /* UNSELECTED */ + ); + const { removeMarkdownOnExport } = useAppSelector( + (state) => state.global.settings + ); + const [shouldRemoveMarkdown, setRemoveMarkdown] = import_react25.default.useState( + removeMarkdownOnExport + ); + function handleCopyClick(value) { return __async(this, null, function* () { - try { - yield navigator.clipboard.writeText(markdown); - new Notification("Copied text to clipboard"); - } catch (err) { - console.log(err); - } + yield navigator.clipboard.writeText(value); + new import_obsidian14.Notice("Copied to clipboard"); }); } - function toggleCheckbox() { - const isChecked = isCheckboxChecked(markdown); - if (isChecked) { - handleCheckboxChange(CHECKBOX_MARKDOWN_UNCHECKED); - } else { - handleCheckboxChange(CHECKBOX_MARKDOWN_CHECKED); + function handleDownloadClick() { + const fileName = getExportFileName(loomFilePath); + const blobType = getBlobTypeForExportType(exportType); + downloadFile(fileName, blobType, content); + } + let content = ""; + if (exportType === "Markdown" /* MARKDOWN */) { + content = exportToMarkdown(app, loomState, shouldRemoveMarkdown); + } else if (exportType === "CSV" /* CSV */) { + content = exportToCSV(app, loomState, shouldRemoveMarkdown); + } + return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "dataloom-export-app", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Stack, { spacing: "xl", width: "100%", children: [ + /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ExportTypeSelect, { value: exportType, onChange: setExportType }), + exportType !== "Select an option" /* UNSELECTED */ && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("label", { htmlFor: "remove-markdown", children: "Remove markdown" }), + /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + Switch, + { + id: "remove-markdown", + value: shouldRemoveMarkdown, + onToggle: () => setRemoveMarkdown((prevState) => !prevState) + } + ) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ContentTextArea, { value: content }), + /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Stack, { isHorizontal: true, children: [ + /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + "button", + { + className: "mod-cta", + onClick: handleDownloadClick, + children: "Download" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + "button", + { + className: "dataloom-copy-button", + onClick: () => handleCopyClick(content), + children: "Copy to clipboard" + } + ) + ] }) + ] }) + ] }) }); +} + +// src/obsidian/modal/export-modal.tsx +var import_jsx_runtime37 = __toESM(require_jsx_runtime()); +var ExportModal = class extends import_obsidian15.Modal { + constructor(app, loomFile, loomState) { + super(app); + this.app = app; + this.loomFile = loomFile; + this.loomState = loomState; + } + onOpen() { + const { containerEl } = this; + setModalTitle(containerEl, "DataLoom Export"); + const { contentEl } = this; + renderDivider(contentEl); + const appContainerEl = contentEl.createDiv(); + this.renderApp(appContainerEl); + } + renderApp(contentEl) { + return __async(this, null, function* () { + this.root = (0, import_client2.createRoot)(contentEl); + this.root.render( + /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Provider_default, { store, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + ExportApp, + { + app: this.app, + loomState: this.loomState, + loomFilePath: this.loomFile.path + } + ) }) + ); + }); + } + onClose() { + if (this.root) + this.root.unmount(); + } +}; + +// src/obsidian/modal/import-modal.tsx +var import_obsidian16 = require("obsidian"); +var import_client3 = __toESM(require_client()); + +// src/react/import-app/index.tsx +var import_react30 = __toESM(require_react()); +var import_papaparse2 = __toESM(require_papaparse_min()); + +// src/react/import-app/types.ts +var DataType = /* @__PURE__ */ ((DataType3) => { + DataType3["UNSELECTED"] = "Select an option"; + DataType3["CSV"] = "CSV"; + DataType3["MARKDOWN"] = "Markdown"; + return DataType3; +})(DataType || {}); +var DataSource = /* @__PURE__ */ ((DataSource2) => { + DataSource2["UNSELECTED"] = "Select an option"; + DataSource2["FILE"] = "File"; + DataSource2["PASTE"] = "Paste from clipboard"; + return DataSource2; +})(DataSource || {}); + +// src/react/import-app/data-type-select.tsx +var import_jsx_runtime38 = __toESM(require_jsx_runtime()); +function DataTypeSelect({ value, onChange }) { + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "dataloom-data-type-select", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Stack, { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + "select", + { + value, + onChange: (e) => onChange(e.target.value), + children: Object.values(DataType).map((type) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("option", { value: type, children: type }, type)) } + ) }) }); +} + +// src/react/shared/stepper/index.tsx +var import_react26 = __toESM(require_react()); + +// src/react/shared/stepper/step-spacer.tsx +var import_jsx_runtime39 = __toESM(require_jsx_runtime()); +function StepSpacer() { + return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "dataloom-step__spacer" }); +} + +// src/react/shared/stepper/step-content.tsx +var import_jsx_runtime40 = __toESM(require_jsx_runtime()); +function StepContent({ content, addTopMargin }) { + let className = "dataloom-step__content"; + if (addTopMargin) { + className += " dataloom-step__content--margin-top"; } - function handleMenuTriggerBackspaceDown() { - if (columnType === "text" /* TEXT */ || columnType === "embed" /* EMBED */ || columnType === "number" /* NUMBER */ || columnType === "currency" /* CURRENCY */ || columnType === "file" /* FILE */) { - onContentChange(cellId, rowId, ""); - } else if (columnType === "date" /* DATE */) { - onDateTimeChange(cellId, rowId, null); - } else if (columnType === "checkbox" /* CHECKBOX */) { - onContentChange(cellId, rowId, CHECKBOX_MARKDOWN_UNCHECKED); - } else if (columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */) { - onTagMultipleRemove(cellId, rowId, cellTagIds); - } - } - function handleMenuTriggerEnterDown() { - if (columnType === "checkbox" /* CHECKBOX */) - toggleCheckbox(); - } - function handleMenuTriggerClick() { - if (columnType === "checkbox" /* CHECKBOX */) { - toggleCheckbox(); - } - } - function handleTagAdd(markdown2, color) { - if (markdown2 === "") + return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className, children: content }); +} + +// src/react/shared/stepper/step-buttons.tsx +var import_jsx_runtime41 = __toESM(require_jsx_runtime()); +function StepButtons({ + isFirstStep, + isLastStep, + isNextDisabled, + finishButtonLabel, + onNextClick, + onBackClick +}) { + return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "dataloom-step__buttons", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Stack, { isHorizontal: true, spacing: "md", children: [ + /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + Button, + { + isDisabled: isNextDisabled, + variant: "default", + onClick: onNextClick, + children: isLastStep ? finishButtonLabel : "Next" + } + ), + !isFirstStep && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Button, { onClick: onBackClick, children: "Back" }) + ] }) }); +} + +// src/react/shared/stepper/step-indicator.tsx +var import_jsx_runtime42 = __toESM(require_jsx_runtime()); +function StepIndicator({ index, isComplete, onClick }) { + function handleClick() { + if (!isComplete) return; - onTagAdd( - cellId, - columnId, - rowId, - markdown2.trim(), - color, - columnType === "multi-tag" /* MULTI_TAG */ + onClick(); + } + let className = "dataloom-step__indicator"; + if (isComplete) { + className += " dataloom-step__indicator--complete"; + } + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className, onClick: handleClick, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Flex, { justify: "center", align: "center", height: "100%", children: isComplete ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Icon, { lucideId: "checkmark", size: "lg" }) : /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Text, { value: index + 1, variant: "semibold", size: "lg" }) }) }); +} + +// src/react/shared/stepper/step-text.tsx +var import_jsx_runtime43 = __toESM(require_jsx_runtime()); +function StepText({ + title, + description, + isComplete, + onClick +}) { + function handleClick() { + if (!isComplete) + return; + onClick(); + } + let className = "dataloom-step__text"; + if (isComplete) { + className += " dataloom-step__text--complete"; + } + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(Stack, { spacing: "sm", onClick: handleClick, children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Text, { variant: "semibold", size: "lg", value: title }), + description && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Text, { size: "md", value: description }) + ] }) }); +} + +// src/react/shared/stepper/step-header.tsx +var import_jsx_runtime44 = __toESM(require_jsx_runtime()); +function StepHeader({ + title, + description, + index, + activeIndex, + onClick +}) { + let className = "dataloom-step__header"; + if (description === void 0) { + className += " dataloom-step__header--margin-bottom"; + } + const isComplete = activeIndex > index; + return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(Stack, { isHorizontal: true, children: [ + /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( + StepIndicator, + { + index, + isComplete, + onClick: () => onClick(index) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( + StepText, + { + title, + description, + isComplete, + onClick: () => onClick(index) + } + ) + ] }) }); +} + +// src/react/shared/stepper/step-separator.tsx +var import_jsx_runtime45 = __toESM(require_jsx_runtime()); +function StepSeparator({ hideBorder }) { + let className = "dataloom-step__separator"; + if (hideBorder) { + className += " dataloom-step__separator--no-border"; + } + return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className }); +} + +// src/react/shared/stepper/index.tsx +var import_jsx_runtime46 = __toESM(require_jsx_runtime()); +function Stepper({ + steps, + finishButtonLabel = "Finish", + onFinishClick +}) { + const [activeIndex, setActiveIndex] = import_react26.default.useState(0); + const activeStep = steps[activeIndex]; + function handleStepHeaderClick(index) { + var _a2, _b; + for (let i2 = index; i2 < activeIndex; i2++) { + (_b = (_a2 = steps[i2]).onBack) == null ? void 0 : _b.call(_a2); + } + setActiveIndex(index); + } + function handleNextClick() { + if (activeIndex === steps.length - 1) { + onFinishClick(); + return; + } + if (activeStep.onContinue) { + if (activeStep.onContinue() === false) + return; + } + setActiveIndex((prevState) => prevState + 1); + } + function handleBackClick() { + if (activeIndex === 0) + return; + if (activeStep.onBack) + activeStep.onBack(); + setActiveIndex((prevState) => prevState - 1); + } + const isFirstStep = activeIndex === 0; + const isLastStep = activeIndex === steps.length - 1; + return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "dataloom-stepper", children: steps.map((step, i2) => { + const { + title, + description, + content, + canContinue = true + } = step; + return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dataloom-step", children: [ + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + StepHeader, + { + title, + description, + index: i2, + activeIndex, + onClick: handleStepHeaderClick + } + ), + i2 === activeIndex && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Stack, { isHorizontal: true, children: [ + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(StepSeparator, { hideBorder: isLastStep }), + /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Stack, { spacing: "lg", width: "100%", children: [ + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + StepContent, + { + content, + addTopMargin: description !== void 0 + } + ), + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + StepButtons, + { + isNextDisabled: canContinue instanceof Function ? !canContinue() : !canContinue, + isFirstStep, + isLastStep, + finishButtonLabel, + onNextClick: handleNextClick, + onBackClick: handleBackClick + } + ) + ] }) + ] }), + i2 < steps.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(StepSpacer, {}) + ] }, i2); + }) }); +} + +// src/react/import-app/data-source-select.tsx +var import_jsx_runtime47 = __toESM(require_jsx_runtime()); +function DataSourceSelect({ value, onChange }) { + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dataloom-data-source-select", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Stack, { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "select", + { + value, + onChange: (e) => onChange(e.target.value), + children: Object.values(DataSource).map((type) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("option", { value: type, children: type }, type)) + } + ) }) }); +} + +// src/react/import-app/utils.ts +var getAcceptForDataType = (value) => { + switch (value) { + case "Markdown" /* MARKDOWN */: + return ".md"; + case "CSV" /* CSV */: + return ".csv"; + default: + return ""; + } +}; + +// src/react/import-app/upload-data/file-input/index.tsx +var import_jsx_runtime48 = __toESM(require_jsx_runtime()); +function FileInput({ + hasHeadersRow, + fileName, + dataType, + onDataChange, + onHeadersRowToggle +}) { + function handleUpload(e) { + var _a2, _b; + const file = (_b = (_a2 = e.target.files) == null ? void 0 : _a2[0]) != null ? _b : null; + if (!file) + return; + const reader = new FileReader(); + reader.onload = (e2) => { + var _a3, _b2; + onDataChange((_b2 = (_a3 = e2.target) == null ? void 0 : _a3.result) != null ? _b2 : "", file.name); + }; + reader.readAsText(file); + } + const accept = getAcceptForDataType(dataType); + return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "dataloom-file-input", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(Stack, { spacing: "2xl", children: [ + /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(Stack, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Text, { value: fileName != null ? fileName : "No file chosen" }), + /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + "input", + { + type: "file", + accept, + onChange: handleUpload + } + ) + ] }), + accept === ".csv" && /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("label", { htmlFor: "has-headers", children: "First row contains headers" }), + /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + Switch, + { + id: "has-headers", + value: hasHeadersRow, + onToggle: onHeadersRowToggle + } + ) + ] }) + ] }) }); +} + +// src/react/import-app/upload-data/upload-textarea.tsx +var import_jsx_runtime49 = __toESM(require_jsx_runtime()); +function UploadTextarea({ value, onChange }) { + return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("textarea", { value, onChange: (e) => onChange(e.target.value) }); +} + +// src/react/import-app/upload-data/index.tsx +var import_jsx_runtime50 = __toESM(require_jsx_runtime()); +function UploadData({ + source, + fileName, + dataType, + hasHeadersRow, + rawData, + errorText, + onRawDataChange, + onHeadersRowToggle +}) { + return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "dataloom-upload-data", children: [ + source === "Paste from clipboard" /* PASTE */ && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(UploadTextarea, { value: rawData, onChange: onRawDataChange }), + source === "File" /* FILE */ && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( + FileInput, + { + fileName, + dataType, + hasHeadersRow, + onHeadersRowToggle, + onDataChange: onRawDataChange + } + ), + errorText !== null && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Text, { variant: "error", value: errorText, size: "sm" }) + ] }); +} + +// src/react/import-app/match-columns/body-cell.tsx +var import_jsx_runtime51 = __toESM(require_jsx_runtime()); +function BodyCell2({ value, isDisabled }) { + const overflowClassName = useOverflow(false, { + ellipsis: true + }); + let className = overflowClassName; + if (isDisabled) + className += " dataloom-disabled"; + return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("td", { className, children: value }); +} + +// src/react/shared/menu/modal-menu.tsx +var import_react28 = __toESM(require_react()); + +// src/react/shared/modal-mount-provider/index.tsx +var import_react27 = __toESM(require_react()); +var import_jsx_runtime52 = __toESM(require_jsx_runtime()); +var MountContext2 = import_react27.default.createContext(null); +var useModalMount = () => { + const value = import_react27.default.useContext(MountContext2); + if (value === null) { + throw new Error( + "useModalMount() called without a in the tree." ); } - function handleRemoveTagClick(tagId) { - onTagRemoveClick(cellId, rowId, tagId); - } - function handleTagColorChange(tagId, color) { - onTagColorChange(columnId, tagId, color); - } - function handleTagDeleteClick(tagId) { - onTagDelete(columnId, tagId); - } - function handleTagClick(tagId) { - onTagClick(cellId, rowId, tagId, columnType === "multi-tag" /* MULTI_TAG */); - } - const handleInputChange = import_react81.default.useCallback( - (value) => { - onContentChange(cellId, rowId, value); - }, - [cellId, rowId, onContentChange] + return value; +}; +function ModalMountProvider({ + obsidianApp, + modalEl, + children +}) { + return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(MountContext2.Provider, { value: { obsidianApp, modalEl }, children }); +} + +// src/react/shared/menu/modal-menu.tsx +var import_jsx_runtime53 = __toESM(require_jsx_runtime()); +function ModalMenu({ + id: id2, + isOpen, + hideBorder = false, + openDirection, + triggerPosition, + width = 0, + height = 0, + maxHeight = 0, + maxWidth = 0, + children, + onRequestClose, + onClose +}) { + const ref = import_react28.default.useRef(null); + const { modalEl } = useModalMount(); + useShiftMenu(true, modalEl, ref, triggerPosition, isOpen, { + openDirection + }); + if (!isOpen) + return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_jsx_runtime53.Fragment, {}); + return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( + base_menu_default, + { + ref, + id: id2, + isOpen, + hideBorder, + triggerPosition, + width, + height, + maxHeight, + maxWidth, + onRequestClose, + onClose, + children + } ); - function handleCheckboxChange(value) { - onContentChange(cellId, rowId, value); - } - function handleDateFormatChange(value) { - onDateFormatChange(columnId, value); - } - const handleDateTimeChange = import_react81.default.useCallback( - (value) => { - onDateTimeChange(cellId, rowId, value); - }, - [cellId, rowId, onDateTimeChange] - ); - const handleMenuClose = import_react81.default.useCallback(() => { - closeTopMenu(); - }, [closeTopMenu]); - const { width: measuredWidth, height: measuredHeight } = triggerPosition; - let menuHeight = measuredHeight; - if (columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */ || columnType === "date" /* DATE */ || columnType === "number" /* NUMBER */ || columnType === "currency" /* CURRENCY */ || columnType === "file" /* FILE */) { - menuHeight = 0; - } - let menuWidth = measuredWidth; - if (columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */) { - menuWidth = 250; - } else if (columnType === "file" /* FILE */) { - menuWidth = 275; - } else if (columnType === "date" /* DATE */) { - menuWidth = 175; - } - let className = "NLT__body-td-container"; - if (columnType === "last-edited-time" /* LAST_EDITED_TIME */ || columnType === "creation-time" /* CREATION_TIME */) { - className += " NLT__default-cursor"; - } - const cellTags = columnTags.filter((tag) => cellTagIds.includes(tag.id)); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_trigger_default, { - isCell: true, - menu, - onClick: handleMenuTriggerClick, - onEnterDown: handleMenuTriggerEnterDown, - onBackspaceDown: handleMenuTriggerBackspaceDown, - shouldRun: columnType !== "checkbox" /* CHECKBOX */ && columnType !== "creation-time" /* CREATION_TIME */ && columnType !== "last-edited-time" /* LAST_EDITED_TIME */, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - ref: triggerRef, - onContextMenu: handleCellContextClick, - css: import_emotion_react_cjs.css` - display: flex; - width: 100%; - height: 100%; - min-height: var(--nlt-cell-min-height); - padding: var(--nlt-cell-spacing-x) - var(--nlt-cell-spacing-y); - cursor: pointer; - `, - className, - style: { - width - }, - children: [ - columnType === "text" /* TEXT */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TextCell, { - markdown, - shouldWrapOverflow - }), - columnType === "embed" /* EMBED */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(EmbedCell, { - markdown, - verticalPadding, - horizontalPadding, - aspectRatio - }), - columnType === "file" /* FILE */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(FileCell, { - markdown, - shouldWrapOverflow - }), - columnType === "number" /* NUMBER */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(NumberCell, { - value: markdown, - shouldWrapOverflow - }), - columnType === "currency" /* CURRENCY */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(CurrencyCell, { - value: markdown, - currencyType: columnCurrencyType, - shouldWrapOverflow - }), - columnType === "tag" /* TAG */ && cellTags.length === 1 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TagCell, { - markdown: cellTags[0].markdown, - color: cellTags[0].color, - shouldWrapOverflow - }), - columnType === "multi-tag" /* MULTI_TAG */ && cellTags.length !== 0 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MultiTagCell, { - cellTags, - shouldWrapOverflow - }), - columnType === "date" /* DATE */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(DateCell, { - value: dateTime, - format: dateFormat - }), - columnType === "checkbox" /* CHECKBOX */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(CheckboxCell, { - value: markdown - }), - columnType === "creation-time" /* CREATION_TIME */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(CreationTimeCell, { - value: rowCreationTime, - format: dateFormat, - shouldWrapOverflow - }), - columnType === "last-edited-time" /* LAST_EDITED_TIME */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(LastEditedTimeCell, { - value: rowLastEditedTime2, - format: dateFormat, - shouldWrapOverflow - }) - ] - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(menu_default, { - ref: menuRef, - id: menu.id, - hideBorder: columnType === "text" /* TEXT */ || columnType === "embed" /* EMBED */ || columnType === "currency" /* CURRENCY */ || columnType === "number" /* NUMBER */, - isOpen: isMenuOpen, - top: triggerPosition.top, - left: triggerPosition.left, - width: menuWidth, - height: menuHeight, - children: [ - columnType === "text" /* TEXT */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TextCellEdit, { - menuCloseRequest, - shouldWrapOverflow, - value: markdown, - onChange: handleInputChange, - onMenuClose: handleMenuClose - }), - columnType === "embed" /* EMBED */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(EmbedCellEdit, { - menuCloseRequest, - shouldWrapOverflow, - value: markdown, - onChange: handleInputChange, - onMenuClose: handleMenuClose - }), - columnType === "file" /* FILE */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(FileCellEdit, { - onChange: handleInputChange, - onMenuClose: handleMenuClose - }), - columnType === "number" /* NUMBER */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(NumberCellEdit, { - menuCloseRequest, - value: markdown, - onChange: handleInputChange, - onMenuClose: handleMenuClose - }), - (columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */) && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TagCellEdit, { - menuCloseRequest, - columnTags, - cellTags, - onTagColorChange: handleTagColorChange, - onTagAdd: handleTagAdd, - onRemoveTag: handleRemoveTagClick, - onTagClick: handleTagClick, - onTagDelete: handleTagDeleteClick, - onMenuClose: handleMenuClose - }), - columnType === "date" /* DATE */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(DateCellEdit, { - value: dateTime, - menuCloseRequest, - dateFormat, - onDateTimeChange: handleDateTimeChange, - onDateFormatChange: handleDateFormatChange, - onMenuClose: handleMenuClose - }), - columnType === "currency" /* CURRENCY */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(CurrencyCellEdit, { - menuCloseRequest, - value: markdown, - onChange: handleInputChange, - onMenuClose: handleMenuClose - }) - ] - }) - ] - }); } -// src/react/table-app/new-row-button/index.tsx -function NewRowButton({ onClick }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__new-row", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { - onClick: () => onClick(), - children: "New row" - }) - }); -} - -// src/react/table-app/new-column-button/index.tsx -function NewColumnButton({ onClick }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__new-column", - css: import_emotion_react_cjs.css` - width: 50px; - `, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { - icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { - lucideId: "plus" - }), - ariaLabel: "New column", - onClick: () => onClick() - }) - }); -} - -// src/react/table-app/header-cell/index.tsx -var import_react89 = __toESM(require_react()); - // src/react/shared/icon/utils.tsx var getIconIdForCellType = (type) => { switch (type) { @@ -51702,18 +53043,2110 @@ var getIconIdForCellType = (type) => { return "tags"; case "date" /* DATE */: return "calendar"; - case "currency" /* CURRENCY */: - return "banknote"; default: return "text"; } }; -// src/react/table-app/header-cell/use-column-resize.ts -var import_react84 = __toESM(require_react()); +// src/react/import-app/constants.ts +var NEW_COLUMN_ID = "-1"; + +// src/react/import-app/match-columns/select-column-menu.tsx +var import_jsx_runtime54 = __toESM(require_jsx_runtime()); +function SelectColumnMenu({ + id: id2, + triggerPosition, + isOpen, + columns, + columnMatches, + selectedColumnId, + onColumnClick, + onRequestClose, + onClose +}) { + const columnsToDisplay = columns.filter((column) => { + const { id: id3 } = column; + if (id3 === selectedColumnId) + return true; + return !columnMatches.some((match) => match.columnId === id3); + }); + return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)( + ModalMenu, + { + id: id2, + isOpen, + triggerPosition, + onRequestClose, + openDirection: "bottom-left", + onClose, + children: [ + columnsToDisplay.map((column) => { + const { id: id3, name, type } = column; + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + MenuItem, + { + name, + lucideId: getIconIdForCellType(type), + onClick: () => onColumnClick(id3), + isSelected: id3 === selectedColumnId + }, + id3 + ); + }), + /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Divider, {}), + /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + MenuItem, + { + name: "New column", + onClick: () => onColumnClick(NEW_COLUMN_ID), + isSelected: selectedColumnId === NEW_COLUMN_ID + } + ), + selectedColumnId !== null && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Divider, {}), + /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + MenuItem, + { + name: "Unmatch", + onClick: () => onColumnClick(null) + } + ) + ] }) + ] + } + ); +} + +// src/react/import-app/match-columns/header-cell.tsx +var import_jsx_runtime55 = __toESM(require_jsx_runtime()); +function HeaderCell2({ + isDisabled, + columns, + columnMatches, + index, + importValue, + matchId, + onColumnMatch, + onColumnToggle +}) { + const overflowClassName = useOverflow(false, { + ellipsis: true + }); + const { + menu, + triggerPosition, + triggerRef, + isOpen, + onOpen, + onClose, + onRequestClose + } = useModalMenu({ + shouldFocusTriggerOnClose: false + }); + function handleColumnClick(columnId) { + onColumnMatch(index, columnId); + onClose(); + } + return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("th", { className: overflowClassName, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)( + Stack, + { + className: isDisabled ? "dataloom-disabled" : void 0, + isHorizontal: true, + justify: "space-between", + spacing: "xl", + width: "100%", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Stack, { isHorizontal: true, spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Text, { value: importValue }), + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)( + Icon, + { + color: matchId ? "green" : "red", + ariaLabel: matchId !== null ? "Matched" : "Unmatched", + lucideId: matchId !== null ? "shield-check" : "shield-question", + size: "xl" + } + ) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Stack, { isHorizontal: true, spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)( + "input", + { + "aria-label": "Toggle column", + type: "checkbox", + checked: !isDisabled, + onChange: () => onColumnToggle(index) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)( + menu_button_default, + { + menu, + ref: triggerRef, + ariaLabel: "Match column", + icon: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icon, { lucideId: "columns", size: "lg" }), + onOpen + } + ) + ] }) + ] + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)( + SelectColumnMenu, + { + id: menu.id, + isOpen, + triggerPosition, + selectedColumnId: matchId, + columnMatches, + columns, + onRequestClose, + onClose, + onColumnClick: handleColumnClick + } + ) + ] }); +} + +// src/react/import-app/match-columns/index.tsx +var import_react29 = __toESM(require_react()); +var import_jsx_runtime56 = __toESM(require_jsx_runtime()); +function MatchColumns({ + columns, + columnMatches, + data, + enabledColumnIndices, + onColumnToggle, + onAllColumnsToggle, + onColumnMatch +}) { + const containerRef = import_react29.default.useRef(null); + const { onCloseAll } = useMenuOperations(); + import_react29.default.useEffect(() => { + function handleScroll() { + onCloseAll(); + } + if (!containerRef.current) + return; + const containerEl = containerRef.current; + const appEl = containerEl.closest(".dataloom-import-app"); + if (!appEl) + return; + appEl.addEventListener("scroll", handleScroll); + containerEl.addEventListener("scroll", handleScroll); + window.addEventListener("resize", handleScroll); + return () => { + appEl.removeEventListener("scroll", handleScroll); + containerEl.removeEventListener("scroll", handleScroll); + window.removeEventListener("resize", handleScroll); + }; + }, [onCloseAll]); + let numUnmatched = enabledColumnIndices.length - columnMatches.length; + if (numUnmatched < 0) + numUnmatched = 0; + return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "dataloom-match-columns", children: [ + /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Padding, { pb: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Button, { variant: "default", onClick: onAllColumnsToggle, children: "Toggle all" }) }), + /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( + "div", + { + ref: containerRef, + className: "dataloom-match-columns__container", + children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("table", { children: [ + /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("tr", { children: data[0].map((header, i2) => { + var _a2, _b; + const matchId = (_b = (_a2 = columnMatches.find( + (match) => match.importColumnIndex === i2 + )) == null ? void 0 : _a2.columnId) != null ? _b : null; + return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( + HeaderCell2, + { + isDisabled: !enabledColumnIndices.includes(i2), + columnMatches, + columns, + index: i2, + matchId, + importValue: header, + onColumnToggle, + onColumnMatch + }, + i2 + ); + }) }) }), + /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("tbody", { children: data.slice(1).map((row, i2) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("tr", { children: row.map((cell, j2) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( + BodyCell2, + { + value: cell, + isDisabled: !enabledColumnIndices.includes(j2) + }, + j2 + )) }, i2)) }) + ] }) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Padding, { pt: "3xl", pb: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Stack, { spacing: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( + Text, + { + size: "sm", + variant: "semibold", + value: `Importing ${enabledColumnIndices.length} of ${data[0].length} columns` + } + ), + numUnmatched > 0 && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( + Text, + { + size: "sm", + variant: "muted", + value: "There are " + numUnmatched + " unmatched columns. Please match them to continue." + } + ) + ] }) }) + ] }); +} + +// src/react/import-app/table-utils.ts +var import_markdown_it2 = __toESM(require_markdown_it()); +var parseMarkdownTableIntoTokens = (markdown) => { + const md = (0, import_markdown_it2.default)(); + const lines = markdown.split("\n"); + const trimmedLines = lines.map((line) => line.trim()); + const updatedMarkdown = trimmedLines.join("\n"); + return md.parse(updatedMarkdown, {}); +}; +var tableTokensToArr = (tokens) => { + const tableData = []; + for (const token of tokens) { + if (token.type === "tr_open") { + tableData.push([]); + } else if (token.type === "inline") { + const cellContent = token.content.trim(); + tableData[tableData.length - 1].push(cellContent); + } + } + return tableData; +}; +var validateMarkdownTable = (tokens) => { + let numTables = 0; + let hasHeaderRow = false; + let hasDataRows = false; + for (const token of tokens) { + if (token.type === "table_open") { + hasHeaderRow = false; + hasDataRows = false; + } else if (token.type === "table_close") { + if (!hasHeaderRow) { + throw new Error("Markdown table must have a header row."); + } else if (!hasDataRows) { + throw new Error( + "Markdown table must have at least one data row." + ); + } + numTables++; + } else if (token.type === "thead_open") { + hasHeaderRow = true; + } else if (token.type === "tbody_open") { + hasDataRows = true; + } + } + if (numTables === 0) { + throw new Error("Markdown must have a table."); + } else if (numTables > 1) { + throw new Error("Markdown must have only one table."); + } +}; + +// src/react/import-app/state-utils.ts +var addImportData = (prevState, data, columnMatches) => { + const { rows, columns } = prevState.model; + const importRows = data.slice(1); + const newColumns = []; + columnMatches.forEach((match) => { + if (match.columnId === NEW_COLUMN_ID) { + const column = createColumn(); + newColumns.push(column); + match.columnId = column.id; + } + }); + const nextColumns = [...columns, ...newColumns]; + const updatedRows = rows.map((row) => { + const { cells } = row; + const newCells = [...cells]; + newColumns.forEach((column) => { + const cell = createCell(column.id); + newCells.push(cell); + }); + return __spreadProps(__spreadValues({}, row), { + cells: newCells + }); + }); + const newRows = Array(importRows.length).fill(null).map((_val, i2) => { + const newRow = createRow(rows.length + i2); + const importRow = importRows[i2]; + const nextCells = []; + nextColumns.forEach((column) => { + const { id: columnId, type, tags: columnTags } = column; + const match = columnMatches.find( + (match2) => match2.columnId === columnId + ); + let content = ""; + let newCell = null; + if (match) { + const { importColumnIndex } = match; + content = importRow[importColumnIndex].trim(); + if (type === "tag" /* TAG */) { + const { cell, newTags } = createTagCell( + columnTags, + columnId, + content + ); + newCell = cell; + columnTags.push(...newTags); + } else if (type === "multi-tag" /* MULTI_TAG */) { + const { cell, newTags } = createMultiTagCell( + columnTags, + columnId, + content + ); + newCell = cell; + columnTags.push(...newTags); + } else if (type === "date" /* DATE */) { + const cell = createDateCell(columnId, content); + newCell = cell; + } + } + if (!newCell) { + newCell = createCell(columnId, { + content + }); + } + nextCells.push(newCell); + }); + return __spreadProps(__spreadValues({}, newRow), { + cells: nextCells + }); + }); + const nextRows = [...updatedRows, ...newRows]; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: nextColumns, + rows: nextRows + }) + }); +}; +var createMultiTagCell = (columnTags, columnId, content) => { + const newTags = []; + const tagIds = []; + const parsedTags = content.split(",").map((tag) => tag.trim()); + if (parsedTags.length !== 0) { + parsedTags.forEach((tag) => { + const existingTag = columnTags.find((t2) => { + if (columnTags.length === 6) { + console.log({ + content: t2.content, + tag, + eq: t2.content === tag + }); + } + return t2.content === tag; + }); + if (existingTag) { + tagIds.push(existingTag.id); + } else { + const newTag = createTag(tag); + newTags.push(newTag); + tagIds.push(newTag.id); + } + }); + } + const cell = createCell(columnId, { + tagIds + }); + console.log({ + cell, + newTags + }); + return { + cell, + newTags + }; +}; +var createTagCell = (columnTags, columnId, content) => { + const newTags = []; + let tagId = null; + const parsedTags = content.split(",").map((tag) => tag.trim()); + if (parsedTags.length !== 0) { + parsedTags.forEach((tag) => { + const existingTag = columnTags.find((t2) => t2.content === tag); + if (existingTag) { + if (tagId === null) { + tagId = existingTag.id; + } + } else { + const newTag = createTag(tag); + newTags.push(newTag); + if (tagId === null) { + tagId = newTag.id; + } + } + }); + } + const cell = createCell(columnId, { + tagIds: tagId ? [tagId] : void 0 + }); + return { + cell, + newTags + }; +}; +var createDateCell = (columnId, content) => { + const dateTime = getDateTimeFromContent(content); + const cell = createCell(columnId, { + dateTime + }); + return cell; +}; +var getDateTimeFromContent = (content) => { + const shouldParseAsNumber = isNumber3(content); + if (shouldParseAsNumber) + return Number(content); + if (!isDateParsable(content)) + return null; + const date = new Date(content); + return date.getTime(); +}; +var isNumber3 = (value) => { + return !isNaN(Number(value)); +}; +var isDateParsable = (value) => { + try { + const date = new Date(value); + return !isNaN(date.getTime()); + } catch (e) { + return false; + } +}; + +// src/react/import-app/index.tsx +var import_jsx_runtime57 = __toESM(require_jsx_runtime()); +function ImportApp({ state, onStateChange }) { + const { onCloseAll } = useMenuOperations(); + const [dataSource, setDataSource] = import_react30.default.useState("Select an option" /* UNSELECTED */); + const [dataType, setDataType] = import_react30.default.useState("Select an option" /* UNSELECTED */); + const [fileName, setFileName] = import_react30.default.useState(null); + const [rawData, setRawData] = import_react30.default.useState(""); + const [data, setData] = import_react30.default.useState([]); + const [errorText, setErrorText] = import_react30.default.useState(null); + const [hasHeadersRow, setHeadersRow] = import_react30.default.useState(true); + const [enabledColumnIndices, setEnabledColumnIndices] = import_react30.default.useState([]); + const [toggleColumns, setToggleColumns] = import_react30.default.useState(false); + const [columnMatches, setColumnMatches] = import_react30.default.useState([]); + function handleColumnToggle(index) { + setEnabledColumnIndices((prevState) => { + if (prevState.includes(index)) { + return prevState.filter((i2) => i2 !== index); + } else { + return [...prevState, index]; + } + }); + } + function handleDataTypeChange(value) { + setDataType(value); + resetSubsequentSteps(0 /* DATA_TYPE */); + } + function handleDataSourceChange(value) { + setDataSource(value); + resetSubsequentSteps(1 /* DATA_SOURCE */); + } + function handleRawDataChange(rawData2, fileName2) { + setRawData(rawData2); + if (fileName2 !== void 0) { + setFileName(fileName2); + } + } + function handleHeadersRowToggle() { + setHeadersRow((prevState) => !prevState); + } + function handleAllColumnsToggle() { + if (toggleColumns) { + setEnabledColumnIndices(data[0].map((_5, i2) => i2)); + } else { + setEnabledColumnIndices([]); + } + setToggleColumns((prevState) => !prevState); + } + function handleColumnMatch(index, columnId) { + setColumnMatches((prevState) => { + const filtered = prevState.filter( + (match2) => match2.importColumnIndex !== index + ); + if (columnId === null) + return filtered; + const match = { importColumnIndex: index, columnId }; + return [...filtered, match]; + }); + } + function resetSubsequentSteps(currentType) { + if (currentType !== 1 /* DATA_SOURCE */) { + setDataSource("Select an option" /* UNSELECTED */); + } + if (currentType !== 2 /* UPLOAD_DATA */) { + setRawData(""); + setErrorText(null); + setFileName(null); + setData([]); + } + if (currentType !== 3 /* MATCH_COLUMNS */) { + setEnabledColumnIndices([]); + setToggleColumns(false); + setColumnMatches([]); + } + } + const columns = [ + ...state.model.columns.map((column) => { + const { id: id2, type, content } = column; + return { + id: id2, + name: content, + type + }; + }) + ]; + const steps = [ + { + title: "Select data type", + content: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + DataTypeSelect, + { + value: dataType, + onChange: handleDataTypeChange + } + ), + canContinue: dataType !== "Select an option" /* UNSELECTED */ + }, + { + title: "Select data source", + content: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + DataSourceSelect, + { + value: dataSource, + onChange: handleDataSourceChange + } + ), + canContinue: dataSource !== "Select an option" /* UNSELECTED */ + }, + { + title: "Upload data", + content: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + UploadData, + { + hasHeadersRow, + source: dataSource, + fileName, + dataType, + errorText, + rawData, + onRawDataChange: handleRawDataChange, + onHeadersRowToggle: handleHeadersRowToggle + } + ), + canContinue: rawData !== "", + onContinue: () => { + let parsedArr = []; + if (dataType === "CSV" /* CSV */) { + const { data: data2, errors } = import_papaparse2.default.parse(rawData); + parsedArr = data2; + if (errors.length > 0) { + setErrorText(errors[0].message); + return false; + } + } else if (dataType === "Markdown" /* MARKDOWN */) { + try { + const tokens = parseMarkdownTableIntoTokens(rawData); + validateMarkdownTable(tokens); + parsedArr = tableTokensToArr(tokens); + } catch (err) { + setErrorText(err.message); + return false; + } + } + if (!hasHeadersRow) { + parsedArr.unshift( + parsedArr[0].map((_5, i2) => `Unnamed ${i2}`) + ); + } + setData(parsedArr); + setEnabledColumnIndices(parsedArr[0].map((_5, i2) => i2)); + return true; + } + }, + { + title: "Match columns", + content: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + MatchColumns, + { + data, + columnMatches, + columns, + enabledColumnIndices, + onColumnToggle: handleColumnToggle, + onAllColumnsToggle: handleAllColumnsToggle, + onColumnMatch: handleColumnMatch + } + ), + canContinue: () => enabledColumnIndices.every( + (index) => columnMatches.some( + (match) => match.importColumnIndex === index + ) + ) + } + ]; + function handleModalClick(e) { + e.stopPropagation(); + onCloseAll(); + } + function handleFinishClick() { + const newState = addImportData(state, data, columnMatches); + onStateChange(newState); + } + return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "dataloom-import-app", onClick: handleModalClick, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Stepper, { steps, onFinishClick: handleFinishClick }) }); +} + +// src/obsidian/modal/import-modal.tsx +var import_jsx_runtime58 = __toESM(require_jsx_runtime()); +var ImportModal = class extends import_obsidian16.Modal { + constructor(app, loomFile, loomState) { + super(app); + this.handleStateChange = (state) => __async(this, null, function* () { + const serialized = serializeState(state); + yield this.app.vault.modify(this.loomFile, serialized); + this.app.workspace.trigger( + EVENT_APP_REFRESH, + this.loomFile.path, + "", + state + ); + this.close(); + }); + this.loomFile = loomFile; + this.loomState = loomState; + } + onOpen() { + const { containerEl } = this; + setModalTitle(containerEl, "DataLoom Import"); + const { contentEl } = this; + renderDivider(contentEl); + const appContainerEl = contentEl.createDiv(); + this.renderApp(appContainerEl); + } + renderApp(contentEl) { + return __async(this, null, function* () { + const modalEl = contentEl.closest(".modal"); + if (!modalEl) + throw new Error("Modal element not found."); + this.root = (0, import_client3.createRoot)(contentEl); + this.root.render( + /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Provider_default, { store, children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(ModalMountProvider, { obsidianApp: this.app, modalEl, children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(MenuProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + ImportApp, + { + state: this.loomState, + onStateChange: this.handleStateChange + } + ) }) }) }) + ); + }); + } + onClose() { + if (this.root) + this.root.unmount(); + } +}; + +// src/react/loom-app/option-bar/more-menu/base-content.tsx +var import_jsx_runtime59 = __toESM(require_jsx_runtime()); +function BaseContent({ + onFreezeColumnsClick, + onToggleColumnClick, + onFilterClick, + onSettingsClick, + onClose +}) { + const { app, loomFile } = useAppMount(); + const { loomState } = useLoomState(); + const isSmallScreen = isSmallScreenSize(); + return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(Padding, { p: "sm", children: [ + isSmallScreen && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + MenuItem, + { + lucideId: "filter", + name: "Filter", + onClick: onFilterClick + } + ), + isSmallScreen && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + MenuItem, + { + lucideId: "eye-off", + name: "Toggle", + onClick: onToggleColumnClick + } + ), + /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + MenuItem, + { + lucideId: "snowflake", + name: "Freeze", + onClick: onFreezeColumnsClick + } + ), + /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + MenuItem, + { + lucideId: "import", + name: "Import", + onClick: () => { + onClose(); + new ImportModal(app, loomFile, loomState).open(); + } + } + ), + /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + MenuItem, + { + lucideId: "download", + name: "Export", + onClick: () => { + onClose(); + new ExportModal(app, loomFile, loomState).open(); + } + } + ), + /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + MenuItem, + { + lucideId: "gear", + name: "Settings", + onClick: onSettingsClick + } + ) + ] }); +} + +// src/react/loom-app/option-bar/more-menu/settings-submenu.tsx +var import_jsx_runtime60 = __toESM(require_jsx_runtime()); +function SettingsSubmenu({ + showCalculationRow, + onCalculationRowToggle, + onBackClick +}) { + return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Submenu, { title: "Settings", onBackClick, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Padding, { px: "lg", py: "md", children: /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Stack, { isHorizontal: true, spacing: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Text, { value: "Calculation row" }), + /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( + Switch, + { + value: showCalculationRow, + onToggle: onCalculationRowToggle + } + ) + ] }) }) }); +} + +// src/react/loom-app/option-bar/more-menu/index.tsx +var import_jsx_runtime61 = __toESM(require_jsx_runtime()); +function MoreMenu({ + id: id2, + isOpen, + triggerPosition, + numFrozenColumns, + onFrozenColumnsChange, + onToggleColumnClick, + onFilterClick, + onRequestClose, + onClose, + showCalculationRow, + onCalculationRowToggle +}) { + const [submenu, setSubmenu] = import_react31.default.useState(null); + import_react31.default.useEffect(() => { + if (!isOpen) + setSubmenu(null); + }, [isOpen]); + return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)( + Menu, + { + id: id2, + openDirection: "bottom-left", + isOpen, + triggerPosition, + onRequestClose, + onClose, + children: [ + submenu === null && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + BaseContent, + { + onToggleColumnClick, + onFilterClick, + onFreezeColumnsClick: () => setSubmenu(0 /* FROZEN_COLUMNS */), + onClose, + onSettingsClick: () => setSubmenu(1 /* SETTINGS */) + } + ), + submenu == 0 /* FROZEN_COLUMNS */ && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + FrozenColumnsSubmenu, + { + numFrozenColumns, + onBackClick: () => setSubmenu(null), + onFrozenColumnsChange + } + ), + submenu === 1 /* SETTINGS */ && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + SettingsSubmenu, + { + showCalculationRow, + onBackClick: () => setSubmenu(null), + onCalculationRowToggle + } + ) + ] + } + ); +} + +// src/react/shared/wrap/index.tsx +var import_jsx_runtime62 = __toESM(require_jsx_runtime()); +function Wrap({ + justify, + align = "center", + spacingX = "md", + spacingY = "md", + width, + children +}) { + const justifyContent = getDynamicSize("flex-start", justify); + const renderWidth = getDynamicSize("100%", width); + return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( + "div", + { + className: "dataloom-wrap", + style: { + width: renderWidth, + rowGap: getSpacing(spacingX), + columnGap: getSpacing(spacingY), + justifyContent, + alignItems: align + }, + children + } + ); +} + +// src/react/loom-app/option-bar/toggle-column-menu.tsx +var import_jsx_runtime63 = __toESM(require_jsx_runtime()); +function ToggleColumnMenu({ + id: id2, + triggerPosition, + isOpen, + columns, + onToggle, + onRequestClose, + onClose +}) { + return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( + Menu, + { + isOpen, + id: id2, + triggerPosition, + openDirection: "bottom-left", + maxHeight: 220, + onRequestClose, + onClose, + children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "dataloom-toggle-column-menu", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Padding, { p: "md", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Stack, { spacing: "md", children: columns.map((column) => { + const { id: id3, content, isVisible } = column; + return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)( + Wrap, + { + justify: "space-between", + spacingX: "4xl", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Text, { value: content, maxWidth: "250px" }), + /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( + Switch, + { + value: isVisible, + onToggle: () => onToggle(id3, !isVisible) + } + ) + ] + }, + id3 + ); + }) }) }) }) + } + ); +} + +// src/react/shared/select/index.tsx +var import_jsx_runtime64 = __toESM(require_jsx_runtime()); +function Select({ + className, + value, + onChange, + onKeyDown, + children +}) { + let newClassName = "dataloom-select dataloom-focusable"; + if (className) { + newClassName += " " + className; + } + return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)( + "select", + { + tabIndex: 0, + className: newClassName, + value, + onChange: (e) => onChange(e.target.value), + onKeyDown, + children + } + ); +} + +// src/react/loom-app/option-bar/filter-menu/filter-column-select/index.tsx +var import_jsx_runtime65 = __toESM(require_jsx_runtime()); +function FilterColumnSelect({ + id: id2, + columns, + value, + onChange +}) { + function handleKeyDown(e) { + if (e.key === "ArrowDown" || e.key === "ArrowUp" || e.key === "Enter") { + e.stopPropagation(); + } + } + return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( + Select, + { + className: "dataloom-filter-column-select", + value, + onKeyDown: handleKeyDown, + onChange: (newValue) => onChange(id2, newValue), + children: columns.map((column) => { + const { id: id3, content } = column; + return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("option", { value: id3, children: content }, id3); + }) + } + ); +} + +// src/shared/loom-state/type-display-names.ts +var getShortDisplayNameForCalculation = (value) => { + switch (value) { + case "count-all" /* COUNT_ALL */: + return "Count"; + case "count-not-empty" /* COUNT_NOT_EMPTY */: + return "Not empty"; + case "count-values" /* COUNT_VALUES */: + return "Values"; + case "count-empty" /* COUNT_EMPTY */: + return "Empty"; + case "count-unique" /* COUNT_UNIQUE */: + return "Unique"; + case "none" /* NONE */: + return "None"; + case "percent-empty" /* PERCENT_EMPTY */: + return "Empty"; + case "percent-not-empty" /* PERCENT_NOT_EMPTY */: + return "Not empty"; + default: + return ""; + } +}; +var getShortDisplayNameForCalculationType = (value) => { + if (isNumberCalcuation(value)) + return getDisplayNameForNumberCalculation(value); + return getShortDisplayNameForCalculation(value); +}; +var getAriaLabelForCalculation = (value) => { + switch (value) { + case "count-all" /* COUNT_ALL */: + return "Counts the total number of rows"; + case "count-empty" /* COUNT_EMPTY */: + return "Counts the number of rows with an empty cell value"; + case "count-not-empty" /* COUNT_NOT_EMPTY */: + return "Counts the number of rows with a non-empty cell value"; + case "count-unique" /* COUNT_UNIQUE */: + return "Counts the number of unique values in the column"; + case "count-values" /* COUNT_VALUES */: + return "Counts the number of values in the column"; + case "percent-empty" /* PERCENT_EMPTY */: + return "Displays the percentage of rows with an empty cell value"; + case "percent-not-empty" /* PERCENT_NOT_EMPTY */: + return "Displays the percentage of rows with a non-empty cell value"; + default: + return ""; + } +}; +var getAriaLabelForNumberCalculation = (value) => { + switch (value) { + case "sum" /* SUM */: + return "Computes the sum of the cells in the column"; + case "avg" /* AVG */: + return "Computes the average of the cells in the column"; + case "min" /* MIN */: + return "Computes the minimum of the cells in the column"; + case "max" /* MAX */: + return "Computes the maximum of the cells in the column"; + case "median" /* MEDIAN */: + return "Computes the median of the cells in the column"; + case "range" /* RANGE */: + return "Computes the range (max - min) of the cells in the column"; + default: + return ""; + } +}; +var getDisplayNameForCalculation = (value) => { + switch (value) { + case "count-all" /* COUNT_ALL */: + return "Count all"; + case "count-not-empty" /* COUNT_NOT_EMPTY */: + return "Count not empty"; + case "count-values" /* COUNT_VALUES */: + return "Count values"; + case "count-empty" /* COUNT_EMPTY */: + return "Count empty"; + case "count-unique" /* COUNT_UNIQUE */: + return "Count unique"; + case "none" /* NONE */: + return "None"; + case "percent-empty" /* PERCENT_EMPTY */: + return "Percent empty"; + case "percent-not-empty" /* PERCENT_NOT_EMPTY */: + return "Percent not empty"; + default: + return ""; + } +}; +var getDisplayNameForNumberCalculation = (value) => { + switch (value) { + case "sum" /* SUM */: + return "Sum"; + case "avg" /* AVG */: + return "Average"; + case "min" /* MIN */: + return "Min"; + case "max" /* MAX */: + return "Max"; + case "median" /* MEDIAN */: + return "Median"; + case "range" /* RANGE */: + return "Range"; + default: + return ""; + } +}; +var getDisplayNameForDateFormat = (format) => { + switch (format) { + case "dd/mm/yyyy" /* DD_MM_YYYY */: + return "Day/Month/Year"; + case "mm/dd/yyyy" /* MM_DD_YYYY */: + return "Month/Day/Year"; + case "yyyy/mm/dd" /* YYYY_MM_DD */: + return "Year/Month/Day"; + case "full" /* FULL */: + return "Full"; + case "relative" /* RELATIVE */: + return "Relative"; + default: + return ""; + } +}; +var getDisplayNameForCurrencyType = (type) => { + switch (type) { + case "USD" /* UNITED_STATES */: + return "United States Dollar"; + case "CAD" /* CANADA */: + return "Canadian Dollar"; + case "AUD" /* AUSTRALIA */: + return "Australian Dollar"; + case "SGB" /* SINGAPORE */: + return "Singapore Dollar"; + case "KRW" /* SOUTH_KOREA */: + return "Won"; + case "CNY" /* CHINA */: + return "Yuan"; + case "JPY" /* JAPAN */: + return "Yen"; + case "AED" /* UAE */: + return "Dirham"; + case "SAR" /* SAUDI_ARABIA */: + return "Riyal"; + case "COP" /* COLOMBIA */: + return "Colombian Peso"; + case "EUR" /* EUROPE */: + return "Euro"; + case "SEK" /* SWEDEN */: + return "Swedish Krona"; + case "DKK" /* DENMARK */: + return "Danish Krone"; + case "NOK" /* NORWAY */: + return "Norwegian Krone"; + case "ISK" /* ICELAND */: + return "Icelandic Kr\xF3na"; + case "BRL" /* BRAZIL */: + return "Real"; + case "GBP" /* GREAT_BRITAIN */: + return "Pound"; + case "INR" /* INDIA */: + return "Rupee"; + case "ARS" /* ARGENTINA */: + return "Argentine Peso"; + case "MXN" /* MEXICO */: + return "Mexican Peso"; + case "RUB" /* RUSSIA */: + return "Ruble"; + case "ILS" /* ISRAEL */: + return "Israeli Shekel"; + case "CHF" /* SWITZERLAND */: + return "Swiss Franc"; + default: + return ""; + } +}; +var getDisplayNameForCellType = (type) => { + switch (type) { + case "text" /* TEXT */: + return "Text"; + case "embed" /* EMBED */: + return "Embed"; + case "file" /* FILE */: + return "File"; + case "number" /* NUMBER */: + return "Number"; + case "checkbox" /* CHECKBOX */: + return "Checkbox"; + case "date" /* DATE */: + return "Date"; + case "last-edited-time" /* LAST_EDITED_TIME */: + return "Last edited"; + case "creation-time" /* CREATION_TIME */: + return "Creation"; + case "tag" /* TAG */: + return "Tag"; + case "multi-tag" /* MULTI_TAG */: + return "Multi-tag"; + default: + return ""; + } +}; +var getDisplayNameForFilterCondition = (type) => { + switch (type) { + case "is" /* IS */: + case "is" /* IS */: + return "Is"; + case "is-not" /* IS_NOT */: + return "Is not"; + case "contains" /* CONTAINS */: + return "Contains"; + case "does-not-contain" /* DOES_NOT_CONTAIN */: + return "Does not contain"; + case "starts-with" /* STARTS_WITH */: + return "Starts with"; + case "ends-with" /* ENDS_WITH */: + return "Ends with"; + case "is-equal" /* IS_EQUAL */: + return "="; + case "is-not-equal" /* IS_NOT_EQUAL */: + return "!="; + case "is-greater" /* IS_GREATER */: + return ">"; + case "is-greater-or-equal" /* IS_GREATER_OR_EQUAL */: + return ">="; + case "is-less" /* IS_LESS */: + return "<"; + case "is-less-or-equal" /* IS_LESS_OR_EQUAL */: + return "<="; + case "is-after" /* IS_AFTER */: + return "Is after"; + case "is-before" /* IS_BEFORE */: + return "Is before"; + case "is-empty" /* IS_EMPTY */: + case "is-empty" /* IS_EMPTY */: + case "is-empty" /* IS_EMPTY */: + return "Is empty"; + case "is-not-empty" /* IS_NOT_EMPTY */: + case "is-not-empty" /* IS_NOT_EMPTY */: + case "is-not-empty" /* IS_NOT_EMPTY */: + return "Is not empty"; + default: + return ""; + } +}; +var getDisplayNameForDateFilterOption = (value) => { + switch (value) { + case "unselected" /* UNSELECTED */: + return "Select an option"; + case "today" /* TODAY */: + return "Today"; + case "tomorrow" /* TOMORROW */: + return "Tomorrow"; + case "yesterday" /* YESTERDAY */: + return "Yesterday"; + case "one-week-ago" /* ONE_WEEK_AGO */: + return "One week ago"; + case "one-week-from-now" /* ONE_WEEK_FROM_NOW */: + return "One week from now"; + case "one-month-ago" /* ONE_MONTH_AGO */: + return "One month ago"; + case "one-month-from-now" /* ONE_MONTH_FROM_NOW */: + return "One month from now"; + default: + return ""; + } +}; + +// src/react/loom-app/option-bar/filter-menu/filter-condition-select.tsx +var import_jsx_runtime66 = __toESM(require_jsx_runtime()); +function FilterConditionSelect({ + id: id2, + value, + options, + onChange +}) { + function handleKeyDown(e) { + if (e.key === "Enter") { + e.stopPropagation(); + } + } + return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)( + Select, + { + value, + onKeyDown: handleKeyDown, + onChange: (newValue) => onChange(id2, newValue), + children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("option", { value: option, children: getDisplayNameForFilterCondition(option) }, option)) + } + ); +} + +// src/react/loom-app/option-bar/filter-menu/filter-operator/index.tsx +var import_jsx_runtime67 = __toESM(require_jsx_runtime()); +function FilterOperator({ id: id2, value, onChange }) { + return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)( + Select, + { + className: "dataloom-filter-operator", + value, + onChange: (newValue) => onChange(id2, newValue), + children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("option", { value: "or", children: "Or" }), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("option", { value: "and", children: "And" }) + ] + } + ); +} + +// src/react/loom-app/option-bar/filter-menu/filter-row/index.tsx +var import_jsx_runtime68 = __toESM(require_jsx_runtime()); +function FilterRow({ + index, + id: id2, + columns, + isEnabled, + selectedColumnId, + selectedOperator, + selectedCondition, + conditionOptions, + inputNode, + onToggle, + onColumnChange, + onOperatorChange, + onConditionChange, + onDeleteClick +}) { + return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "dataloom-filter-row", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(Wrap, { children: [ + index !== 0 ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)( + FilterOperator, + { + id: id2, + value: selectedOperator, + onChange: onOperatorChange + } + ) : /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "dataloom-filter-row__spacer" }), + /* @__PURE__ */ (0, import_jsx_runtime68.jsx)( + FilterColumnSelect, + { + id: id2, + columns, + value: selectedColumnId, + onChange: onColumnChange + } + ), + /* @__PURE__ */ (0, import_jsx_runtime68.jsx)( + FilterConditionSelect, + { + id: id2, + options: conditionOptions, + value: selectedCondition, + onChange: onConditionChange + } + ), + selectedCondition !== "is-empty" /* IS_EMPTY */ && selectedCondition !== "is-not-empty" /* IS_NOT_EMPTY */ && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "dataloom-filter-row__input", children: inputNode }), + /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)( + Stack, + { + grow: true, + justify: "flex-end", + align: "center", + spacing: "lg", + isHorizontal: true, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime68.jsx)( + Button, + { + icon: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Icon, { lucideId: "trash-2" }), + ariaLabel: "Delete filter", + onClick: () => onDeleteClick(id2) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime68.jsx)( + Switch, + { + value: isEnabled, + ariaLabel: isEnabled ? "Disable filter" : "Enable filter", + onToggle: () => onToggle(id2) + } + ) + ] + } + ) + ] }) }); +} + +// src/react/shared/multi-select/index.tsx +var import_jsx_runtime69 = __toESM(require_jsx_runtime()); +function MultiSelect({ + className: customClassName, + value, + onChange, + onKeyDown, + children +}) { + function handleChange(e) { + const selectedValues = Array.from( + e.target.selectedOptions, + (option) => option.value + ); + onChange(selectedValues); + } + let className = "dataloom-multi-select dataloom-focusable"; + if (customClassName) { + className += " " + customClassName; + } + return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)( + "select", + { + tabIndex: 0, + multiple: true, + className, + value, + onChange: handleChange, + onKeyDown, + children + } + ); +} + +// src/react/loom-app/option-bar/filter-menu/date-filter-select.tsx +var import_jsx_runtime70 = __toESM(require_jsx_runtime()); +function DateFilterSelect({ value, onChange }) { + return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + Select, + { + value, + onChange: (value2) => onChange(value2), + children: Object.values(DateFilterOption).map((option) => /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("option", { value: option, children: getDisplayNameForDateFilterOption(option) }, option)) + } + ); +} + +// src/react/loom-app/option-bar/filter-menu/index.tsx +var import_jsx_runtime71 = __toESM(require_jsx_runtime()); +function FilterMenu({ + id: id2, + triggerPosition, + isOpen, + columns, + filters, + onAddClick, + onUpdate, + onDeleteClick, + onRequestClose, + onClose +}) { + function onColumnChange(id3, columnId) { + const filter3 = filters.find((filter4) => filter4.id === id3); + if (!filter3) + throw new Error("Filter not found"); + const { condition, isEnabled } = filter3; + const column = columns.find((column2) => column2.id === columnId); + if (!column) + throw new ColumNotFoundError(columnId); + const { type } = column; + let newFilter = null; + if (type === "text" /* TEXT */) { + let newCondition; + if (condition !== "is" /* IS */ && condition !== "is-not" /* IS_NOT */ && condition !== "contains" /* CONTAINS */ && condition !== "does-not-contain" /* DOES_NOT_CONTAIN */ && condition !== "starts-with" /* STARTS_WITH */ && condition !== "ends-with" /* ENDS_WITH */ && condition !== "is-empty" /* IS_EMPTY */ && condition !== "is-not-empty" /* IS_NOT_EMPTY */) { + newCondition = "is" /* IS */; + } else { + newCondition = condition; + } + newFilter = createTextFilter(columnId, { + condition: newCondition, + isEnabled + }); + } else if (type === "file" /* FILE */) { + let newCondition; + if (condition !== "is" /* IS */ && condition !== "is-not" /* IS_NOT */ && condition !== "contains" /* CONTAINS */ && condition !== "does-not-contain" /* DOES_NOT_CONTAIN */ && condition !== "starts-with" /* STARTS_WITH */ && condition !== "ends-with" /* ENDS_WITH */ && condition !== "is-empty" /* IS_EMPTY */ && condition !== "is-not-empty" /* IS_NOT_EMPTY */) { + newCondition = "is" /* IS */; + } else { + newCondition = condition; + } + newFilter = createFileFilter(columnId, { + condition: newCondition, + isEnabled + }); + } else if (type === "checkbox" /* CHECKBOX */) { + let newCondition; + if (condition !== "is" /* IS */ && condition !== "is-not" /* IS_NOT */) { + newCondition = "is" /* IS */; + } else { + newCondition = condition; + } + newFilter = createCheckboxFilter(columnId, { + condition: newCondition, + isEnabled + }); + } else if (type === "tag" /* TAG */) { + let newCondition; + if (condition !== "is" /* IS */ && condition !== "is-not" /* IS_NOT */ && condition !== "is-empty" /* IS_EMPTY */ && condition !== "is-not-empty" /* IS_NOT_EMPTY */) { + newCondition = "is" /* IS */; + } else { + newCondition = condition; + } + newFilter = createTagFilter(columnId, { + condition: newCondition, + isEnabled + }); + } else if (type === "multi-tag" /* MULTI_TAG */) { + let newCondition; + if (condition !== "contains" /* CONTAINS */ && condition !== "does-not-contain" /* DOES_NOT_CONTAIN */ && condition !== "is-empty" /* IS_EMPTY */ && condition !== "is-not-empty" /* IS_NOT_EMPTY */) { + newCondition = "contains" /* CONTAINS */; + } else { + newCondition = condition; + } + newFilter = createMultiTagFilter(columnId, { + condition: newCondition, + isEnabled + }); + } else if (type === "embed" /* EMBED */) { + let newCondition; + if (condition !== "is-empty" /* IS_EMPTY */ && condition !== "is-not-empty" /* IS_NOT_EMPTY */) { + newCondition = "is-empty" /* IS_EMPTY */; + } else { + newCondition = condition; + } + newFilter = createEmbedFilter(columnId, { + condition: newCondition, + isEnabled + }); + } else if (type === "number" /* NUMBER */) { + let newCondition; + if (condition !== "is-empty" /* IS_EMPTY */ && condition !== "is-not-equal" /* IS_NOT_EQUAL */ && condition !== "is-less-or-equal" /* IS_LESS_OR_EQUAL */ && condition !== "is-less" /* IS_LESS */ && condition !== "is-greater-or-equal" /* IS_GREATER_OR_EQUAL */ && condition !== "is-greater" /* IS_GREATER */ && condition !== "is-equal" /* IS_EQUAL */ && condition !== "is-not-empty" /* IS_NOT_EMPTY */) { + newCondition = "is-equal" /* IS_EQUAL */; + } else { + newCondition = condition; + } + newFilter = createNumberFilter(columnId, { + condition: newCondition, + isEnabled + }); + } else if (type === "date" /* DATE */) { + let newCondition; + if (condition !== "is" /* IS */ && condition !== "is-before" /* IS_BEFORE */ && condition !== "is-after" /* IS_AFTER */ && condition !== "is-empty" /* IS_EMPTY */ && condition !== "is-not-empty" /* IS_NOT_EMPTY */) { + newCondition = "is" /* IS */; + } else { + newCondition = condition; + } + newFilter = createDateFilter(columnId, { + condition: newCondition, + isEnabled + }); + } else if (type === "last-edited-time" /* LAST_EDITED_TIME */) { + let newCondition; + if (condition !== "is" /* IS */ && condition !== "is-before" /* IS_BEFORE */ && condition !== "is-after" /* IS_AFTER */) { + newCondition = "is" /* IS */; + } else { + newCondition = condition; + } + newFilter = createLastEditedTimeFilter(columnId, { + condition: newCondition, + isEnabled + }); + } else if (type === "creation-time" /* CREATION_TIME */) { + let newCondition; + if (condition !== "is" /* IS */ && condition !== "is-before" /* IS_BEFORE */ && condition !== "is-after" /* IS_AFTER */) { + newCondition = "is" /* IS */; + } else { + newCondition = condition; + } + newFilter = createCreationTimeFilter(columnId, { + condition: newCondition, + isEnabled + }); + } else { + throw new Error("Column type not handled"); + } + onUpdate(id3, newFilter, false); + } + function onOperatorChange(id3, operator) { + onUpdate(id3, { operator }); + } + function onConditionChange(id3, condition) { + onUpdate(id3, { condition }); + } + function onTextChange(id3, text) { + onUpdate(id3, { text }); + } + function onDateFilterOptionChange(id3, option) { + onUpdate(id3, { option }); + } + function onTagChange(id3, tagId) { + onUpdate(id3, { tagId }); + } + function onTagsChange(id3, tagIds) { + onUpdate(id3, { tagIds }); + } + function onToggle(id3) { + const filter3 = filters.find((filter4) => filter4.id === id3); + if (!filter3) + throw new Error("Filter not found"); + onUpdate(id3, { isEnabled: !filter3.isEnabled }); + } + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + Menu, + { + id: id2, + isOpen, + triggerPosition, + openDirection: "bottom-left", + maxHeight: 255, + onRequestClose, + onClose, + children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + "div", + { + className: "dataloom-filter-menu", + style: { + width: isSmallScreenSize() ? "calc(100vw - 30px)" : void 0 + }, + children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(Padding, { p: "md", children: /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(Stack, { spacing: "lg", children: [ + filters.map((filter3, i2) => { + const { + id: id3, + type, + isEnabled, + condition, + columnId, + operator + } = filter3; + const column = columns.find( + (column2) => column2.id === columnId + ); + if (!column) + throw new ColumNotFoundError(columnId); + const { tags } = column; + let inputNode; + let conditionOptions = []; + switch (type) { + case "text" /* TEXT */: { + const { text } = filter3; + inputNode = /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + input_default, + { + value: text, + onChange: (newValue) => onTextChange(id3, newValue) + } + ); + conditionOptions = [ + "is" /* IS */, + "is-not" /* IS_NOT */, + "contains" /* CONTAINS */, + "does-not-contain" /* DOES_NOT_CONTAIN */, + "starts-with" /* STARTS_WITH */, + "ends-with" /* ENDS_WITH */, + "is-empty" /* IS_EMPTY */, + "is-not-empty" /* IS_NOT_EMPTY */ + ]; + break; + } + case "file" /* FILE */: { + const { text } = filter3; + inputNode = /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + input_default, + { + value: text, + onChange: (newValue) => onTextChange(id3, newValue) + } + ); + conditionOptions = [ + "is" /* IS */, + "is-not" /* IS_NOT */, + "contains" /* CONTAINS */, + "does-not-contain" /* DOES_NOT_CONTAIN */, + "starts-with" /* STARTS_WITH */, + "ends-with" /* ENDS_WITH */, + "is-empty" /* IS_EMPTY */, + "is-not-empty" /* IS_NOT_EMPTY */ + ]; + break; + } + case "checkbox" /* CHECKBOX */: { + const { text } = filter3; + inputNode = /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)( + Select, + { + value: text, + onChange: (newValue) => onTextChange(id3, newValue), + children: [ + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("option", { value: "", children: "Select an option" }), + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + "option", + { + value: CHECKBOX_MARKDOWN_CHECKED, + children: "Checked" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + "option", + { + value: CHECKBOX_MARKDOWN_UNCHECKED2, + children: "Unchecked" + } + ) + ] + } + ); + conditionOptions = [ + "is" /* IS */, + "is-not" /* IS_NOT */ + ]; + break; + } + case "tag" /* TAG */: { + const { tagId } = filter3; + inputNode = /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)( + Select, + { + value: tagId, + onChange: (newValue) => onTagChange(id3, newValue), + children: [ + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("option", { value: "", children: "Select an option" }), + tags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + "option", + { + value: tag.id, + children: tag.content + }, + tag.id + )) + ] + } + ); + conditionOptions = [ + "is" /* IS */, + "is-not" /* IS_NOT */, + "is-empty" /* IS_EMPTY */, + "is-not-empty" /* IS_NOT_EMPTY */ + ]; + break; + } + case "multi-tag" /* MULTI_TAG */: { + const { tagIds } = filter3; + inputNode = /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + MultiSelect, + { + value: tagIds, + onChange: (value) => onTagsChange(id3, value), + children: tags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + "option", + { + value: tag.id, + children: tag.content + }, + tag.id + )) + } + ); + conditionOptions = [ + "contains" /* CONTAINS */, + "does-not-contain" /* DOES_NOT_CONTAIN */, + "is-empty" /* IS_EMPTY */, + "is-not-empty" /* IS_NOT_EMPTY */ + ]; + break; + } + case "embed" /* EMBED */: { + conditionOptions = [ + "is-empty" /* IS_EMPTY */, + "is-not-empty" /* IS_NOT_EMPTY */ + ]; + break; + } + case "number" /* NUMBER */: { + const { text } = filter3; + inputNode = /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + input_default, + { + inputMode: "numeric", + value: text, + onChange: (newValue) => onTextChange(id3, newValue) + } + ); + conditionOptions = [ + "is-equal" /* IS_EQUAL */, + "is-not-equal" /* IS_NOT_EQUAL */, + "is-greater" /* IS_GREATER */, + "is-less" /* IS_LESS */, + "is-greater-or-equal" /* IS_GREATER_OR_EQUAL */, + "is-less-or-equal" /* IS_LESS_OR_EQUAL */, + "is-empty" /* IS_EMPTY */, + "is-not-empty" /* IS_NOT_EMPTY */ + ]; + break; + } + case "date" /* DATE */: { + const { option } = filter3; + inputNode = /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + DateFilterSelect, + { + value: option, + onChange: (newValue) => onDateFilterOptionChange( + id3, + newValue + ) + } + ); + conditionOptions = [ + "is" /* IS */, + "is-after" /* IS_AFTER */, + "is-before" /* IS_BEFORE */, + "is-empty" /* IS_EMPTY */, + "is-not-empty" /* IS_NOT_EMPTY */ + ]; + break; + } + case "creation-time" /* CREATION_TIME */: { + const { option } = filter3; + inputNode = /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + DateFilterSelect, + { + value: option, + onChange: (newValue) => onDateFilterOptionChange( + id3, + newValue + ) + } + ); + conditionOptions = [ + "is" /* IS */, + "is-after" /* IS_AFTER */, + "is-before" /* IS_BEFORE */ + ]; + break; + } + case "last-edited-time" /* LAST_EDITED_TIME */: { + const { option } = filter3; + inputNode = /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + DateFilterSelect, + { + value: option, + onChange: (newValue) => onDateFilterOptionChange( + id3, + newValue + ) + } + ); + conditionOptions = [ + "is" /* IS */, + "is-after" /* IS_AFTER */, + "is-before" /* IS_BEFORE */ + ]; + break; + } + default: + throw new Error("Column type not handled"); + } + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + FilterRow, + { + index: i2, + id: id3, + columns, + selectedColumnId: columnId, + selectedCondition: condition, + selectedOperator: operator, + conditionOptions, + inputNode, + isEnabled, + onColumnChange, + onOperatorChange, + onToggle, + onDeleteClick, + onConditionChange + }, + id3 + ); + }), + /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(Stack, { isHorizontal: true, children: [ + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + Button, + { + icon: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(Icon, { lucideId: "plus" }), + ariaLabel: "Add filter", + onClick: () => onAddClick() + } + ), + filters.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(Text, { value: "No filters to display" }) + ] }) + ] }) }) + } + ) + } + ); +} + +// src/react/loom-app/option-bar/sort-bubble/index.tsx +var import_jsx_runtime72 = __toESM(require_jsx_runtime()); +function SortBubble({ + sortDir, + content, + onRemoveClick +}) { + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "dataloom-sort-bubble", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + Bubble, + { + canRemove: true, + value: content, + icon: sortDir === "asc" /* ASC */ ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Icon, { lucideId: "arrow-up" }) : /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Icon, { lucideId: "arrow-down" }), + onRemoveClick + } + ) }); +} + +// src/react/loom-app/option-bar/sort-bubble-list.tsx +var import_jsx_runtime73 = __toESM(require_jsx_runtime()); +function SortBubbleList({ + sortedColumns, + onRemoveClick +}) { + return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Stack, { spacing: "sm", isHorizontal: true, children: sortedColumns.map((column, i2) => { + const { id: id2, sortDir, content } = column; + return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( + SortBubble, + { + sortDir, + content, + onRemoveClick: () => onRemoveClick(id2) + }, + i2 + ); + }) }); +} + +// src/react/loom-app/option-bar/index.tsx +var import_jsx_runtime74 = __toESM(require_jsx_runtime()); +function OptionBar({ + numFrozenColumns, + columns, + filters, + showCalculationRow, + onSortRemoveClick, + onColumnToggle, + onFilterUpdate, + onFilterDeleteClick, + onFilterAddClick, + onFrozenColumnsChange, + onCalculationRowToggle +}) { + const { + menu: moreMenu, + triggerRef: moreMenuTriggerRef, + triggerPosition: moreMenuTriggerPosition, + isOpen: isMoreMenuOpen, + onOpen: onMoreMenuOpen, + onRequestClose: onMoreMenuRequestClose, + onClose: onMoreMenuClose + } = useMenu(); + const { + menu: toggleMenu, + triggerRef: toggleMenuTriggerRef, + triggerPosition: toggleMenuTriggerPosition, + isOpen: isToggleMenuOpen, + onOpen: onToggleMenuOpen, + onRequestClose: onToggleMenuRequestClose, + onClose: onToggleMenuClose + } = useMenu(); + const { + menu: filterMenu, + triggerRef: filterMenuTriggerRef, + triggerPosition: filterMenuTriggerPosition, + isOpen: isFilterMenuOpen, + onOpen: onFilterMenuOpen, + onRequestClose: onFilterMenuRequestClose, + onClose: onFilterMenuClose + } = useMenu(); + const activeFilters = filters.filter((filter3) => filter3.isEnabled); + const sortedColumns = columns.filter( + (column) => column.sortDir !== "default" /* NONE */ + ); + const isSmallScreen = isSmallScreenSize(); + return /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(import_jsx_runtime74.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("div", { className: "dataloom-option-bar", children: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Padding, { py: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)( + Stack, + __spreadProps(__spreadValues({ + isHorizontal: !isSmallScreen, + spacing: "sm" + }, !isSmallScreen && { justify: "space-between" }), { + children: [ + /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)( + Stack, + __spreadProps(__spreadValues({ + isHorizontal: true, + spacing: "md", + overflow: "auto" + }, isSmallScreen && { + width: "100%", + justify: "flex-end" + }), { + children: [ + /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + SortBubbleList, + { + sortedColumns, + onRemoveClick: onSortRemoveClick + } + ), + /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + ActiveFilterBubble, + { + numActive: activeFilters.length + } + ) + ] + }) + ), + /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)( + Stack, + __spreadProps(__spreadValues({ + isHorizontal: true, + spacing: "sm", + justify: "flex-end" + }, isSmallScreen && { + height: "40px", + width: "100%" + }), { + children: [ + /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(SearchBar, {}), + isSmallScreen === false && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + menu_button_default, + { + ref: filterMenuTriggerRef, + menu: filterMenu, + onOpen: onFilterMenuOpen, + children: "Filter" + } + ), + isSmallScreen === false && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + menu_button_default, + { + ref: toggleMenuTriggerRef, + menu: toggleMenu, + onOpen: onToggleMenuOpen, + children: "Toggle" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + menu_button_default, + { + ref: moreMenuTriggerRef, + menu: moreMenu, + icon: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Icon, { lucideId: "more-vertical" }), + onOpen: onMoreMenuOpen + } + ) + ] + }) + ) + ] + }) + ) }) }), + /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + MoreMenu, + { + id: moreMenu.id, + isOpen: isMoreMenuOpen, + showCalculationRow, + triggerPosition: moreMenuTriggerPosition, + numFrozenColumns, + onFrozenColumnsChange, + onFilterClick: () => onFilterMenuOpen(), + onToggleColumnClick: () => onToggleMenuOpen(), + onRequestClose: onMoreMenuRequestClose, + onCalculationRowToggle, + onClose: onMoreMenuClose + } + ), + /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + ToggleColumnMenu, + { + id: toggleMenu.id, + isOpen: isToggleMenuOpen, + triggerPosition: isSmallScreen ? moreMenuTriggerPosition : toggleMenuTriggerPosition, + columns, + onToggle: onColumnToggle, + onRequestClose: onToggleMenuRequestClose, + onClose: onToggleMenuClose + } + ), + /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + FilterMenu, + { + id: filterMenu.id, + isOpen: isFilterMenuOpen, + triggerPosition: isSmallScreen ? moreMenuTriggerPosition : filterMenuTriggerPosition, + columns, + filters, + onUpdate: onFilterUpdate, + onDeleteClick: onFilterDeleteClick, + onAddClick: onFilterAddClick, + onRequestClose: onFilterMenuRequestClose, + onClose: onFilterMenuClose + } + ) + ] }); +} + +// src/react/loom-app/header-cell-container/index.tsx +var import_react36 = __toESM(require_react()); + +// src/react/loom-app/header-cell-container/use-column-resize.ts +var import_react32 = __toESM(require_react()); var useColumnResize = (columnId, onMove) => { - const { setResizingColumnId } = useTableState(); - const mouseDownX = (0, import_react84.useRef)(0); + const { setResizingColumnId } = useLoomState(); + const mouseDownX = (0, import_react32.useRef)(0); function handleMouseMove(e) { const dist = e.pageX - mouseDownX.current; onMove(dist); @@ -51757,27 +55190,9 @@ var useColumnResize = (columnId, onMove) => { return { handleMouseDown, handleTouchStart }; }; -// src/react/table-app/header-cell/resize-container.tsx -var containerStyle = import_emotion_react_cjs.css` - position: relative; -`; -var innerStyle = import_emotion_react_cjs.css` - position: absolute; - left: -5px; - cursor: col-resize; - width: 8px; - height: 100%; - &:hover { - background-color: var(--interactive-accent); - } - &:active { - background-color: var(--interactive-accent); - } -`; -var dragStyle = import_emotion_react_cjs.css` - background-color: var(--interactive-accent); -`; -function ResizeContainer({ +// src/react/loom-app/header-cell-container/column-resize/index.tsx +var import_jsx_runtime75 = __toESM(require_jsx_runtime()); +function ColumnResize({ currentResizingId, columnId, width, @@ -51795,11 +55210,13 @@ function ResizeContainer({ } ); const isDragging = columnId === currentResizingId; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - css: containerStyle, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__resize-handle", - css: [innerStyle, isDragging && dragStyle], + let innerClassName = "dataloom-column-resize__handle"; + if (isDragging) + innerClassName += " dataloom-column-resize__handle--dragging"; + return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("div", { className: "dataloom-column-resize", children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( + "div", + { + className: innerClassName, onMouseDown: (e) => { onMenuClose(); handleMouseDown(e); @@ -51810,51 +55227,22 @@ function ResizeContainer({ if (e.detail === 2) onWidthChange(columnId, "unset"); } - }) - }); + } + ) }); } -// src/react/table-app/header-cell-edit/index.tsx -var import_react87 = __toESM(require_react()); +// src/react/loom-app/header-cell-edit/index.tsx +var import_react35 = __toESM(require_react()); -// src/react/table-app/header-cell-edit/submenu.tsx -function Submenu({ title, children, onBackClick }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { - p: "md", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "md", - isVertical: true, - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { - icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { - lucideId: "arrow-left" - }), - onClick: () => { - onBackClick(); - } - }), - title - ] - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Divider, {}) - ] - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - children - }) - ] - }); -} - -// src/react/table-app/header-cell-edit/option-submenu.tsx +// src/react/loom-app/header-cell-edit/option-submenu.tsx +var import_jsx_runtime76 = __toESM(require_jsx_runtime()); function OptionSubmenu({ type, currencyType, + numberFormat, + numberPrefix, + numberSuffix, + numberSeparator, aspectRatio, verticalPadding, horizontalPadding, @@ -51863,69 +55251,105 @@ function OptionSubmenu({ onBackClick, onSubmenuChange }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Submenu, { - title, - onBackClick, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { - pt: "sm", - pb: "lg", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "lg", - isVertical: true, - children: [ - type === "embed" /* EMBED */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - name: "Aspect Ratio", - value: aspectRatio, - onClick: () => onSubmenuChange(6 /* ASPECT_RATIO */) - }), - type === "embed" /* EMBED */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - name: "Horizontal Padding", - value: horizontalPadding, - onClick: () => onSubmenuChange(4 /* HORIZONTAL_PADDING */) - }), - type === "embed" /* EMBED */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - name: "Vertical Padding", - value: verticalPadding, - onClick: () => onSubmenuChange(5 /* VERTICAL_PADDING */) - }), - type === "currency" /* CURRENCY */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - name: "Currency", - value: getDisplayNameForCurrencyType(currencyType), - onClick: () => onSubmenuChange(2 /* CURRENCY */) - }), - (type === "creation-time" /* CREATION_TIME */ || type === "last-edited-time" /* LAST_EDITED_TIME */ || type === "date" /* DATE */) && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - name: "Date format", - value: getDisplayNameForDateFormat(dateFormat), - onClick: () => onSubmenuChange(3 /* DATE_FORMAT */) - }) - ] - }) - }) - }); + const numberFormatDisplayName = numberFormat === "number" /* NUMBER */ ? "Number" : getDisplayNameForCurrencyType(currencyType); + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(Submenu, { title, onBackClick, children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(Padding, { pt: "sm", pb: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(Stack, { spacing: "sm", children: [ + type === "embed" /* EMBED */ && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + MenuItem, + { + name: "Aspect ratio", + value: aspectRatio, + onClick: () => onSubmenuChange(6 /* ASPECT_RATIO */) + } + ), + type === "embed" /* EMBED */ && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + MenuItem, + { + name: "Horizontal padding", + value: horizontalPadding, + onClick: () => onSubmenuChange(4 /* HORIZONTAL_PADDING */) + } + ), + type === "embed" /* EMBED */ && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + MenuItem, + { + name: "Vertical padding", + value: verticalPadding, + onClick: () => onSubmenuChange(5 /* VERTICAL_PADDING */) + } + ), + type === "number" /* NUMBER */ && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + MenuItem, + { + name: "Number format", + value: numberFormatDisplayName, + onClick: () => onSubmenuChange(2 /* CURRENCY */) + } + ), + type === "number" /* NUMBER */ && numberFormat == "number" /* NUMBER */ && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + MenuItem, + { + name: "Prefix", + value: numberPrefix, + onClick: () => onSubmenuChange( + 7 /* TEXT_INPUT_NUMBER_PREFIX */ + ) + } + ), + type === "number" /* NUMBER */ && numberFormat == "number" /* NUMBER */ && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + MenuItem, + { + name: "Suffix", + value: numberSuffix, + onClick: () => onSubmenuChange( + 8 /* TEXT_INPUT_NUMBER_SUFFIX */ + ) + } + ), + type === "number" /* NUMBER */ && numberFormat == "number" /* NUMBER */ && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + MenuItem, + { + name: "Separator", + value: numberSeparator, + onClick: () => onSubmenuChange( + 9 /* TEXT_INPUT_NUMBER_SEPARATOR */ + ) + } + ), + (type === "creation-time" /* CREATION_TIME */ || type === "last-edited-time" /* LAST_EDITED_TIME */ || type === "date" /* DATE */) && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + MenuItem, + { + name: "Date format", + value: getDisplayNameForDateFormat(dateFormat), + onClick: () => onSubmenuChange(3 /* DATE_FORMAT */) + } + ) + ] }) }) }); } -// src/react/table-app/header-cell-edit/type-submenu.tsx +// src/react/loom-app/header-cell-edit/type-submenu.tsx +var import_jsx_runtime77 = __toESM(require_jsx_runtime()); function TypeSubmenu({ title, value, onValueClick, onBackClick }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Submenu, { - title, - onBackClick, - children: Object.values(CellType).map((type) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(Submenu, { title, onBackClick, children: Object.values(CellType2).map((type) => /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + MenuItem, + { name: getDisplayNameForCellType(type), lucideId: getIconIdForCellType(type), onClick: () => onValueClick(type), isSelected: type === value - }, type)) - }); + }, + type + )) }); } -// src/react/table-app/header-cell-edit/base-menu.tsx -var import_react86 = __toESM(require_react()); -function BaseMenu({ +// src/react/loom-app/header-cell-edit/base-menu.tsx +var import_react33 = __toESM(require_react()); +var import_jsx_runtime78 = __toESM(require_jsx_runtime()); +function BaseMenu2({ shouldWrapOverflow, columnName, columnId, @@ -51936,185 +55360,233 @@ function BaseMenu({ onSubmenuChange, onWrapOverflowToggle, onDeleteClick, - onColumnNameChange + onColumnNameChange, + onHideClick }) { - const lastKeyPressed = import_react86.default.useRef(null); - const inputRef = import_react86.default.useRef(null); - useInputSelection(inputRef, columnName); + const inputRef = import_react33.default.useRef(null); + usePlaceCursorAtEnd(inputRef, columnName); + import_react33.default.useEffect(() => { + if (inputRef.current) { + inputRef.current.focus(); + } + }, [inputRef]); function handleInputChange(inputValue) { onColumnNameChange(inputValue); } - function handleKeyDown(e) { - lastKeyPressed.current = e.key; - } - const hasOptions = columnType === "embed" /* EMBED */ || columnType === "date" /* DATE */ || columnType === "currency" /* CURRENCY */ || columnType === "last-edited-time" /* LAST_EDITED_TIME */ || columnType === "creation-time" /* CREATION_TIME */; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "sm", - isVertical: true, - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "sm", - isVertical: true, - width: "100%", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { - px: "md", - py: "sm", - width: "100%", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { - className: "NLT__focusable", - autoFocus: true, - css: borderInputStyle, - ref: inputRef, - value: columnName, - onChange: (e) => handleInputChange(e.target.value), - onKeyDown: handleKeyDown - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - lucideId: "list", - name: "Type", - value: getDisplayNameForCellType(columnType), - onClick: () => { - onSubmenuChange(0 /* TYPE */); - } - }), - hasOptions && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - lucideId: "settings", - name: "Options", - onClick: () => { - onSubmenuChange(1 /* OPTIONS */); - } - }) - ] - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Divider, {}), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + const hasOptions = columnType === "embed" /* EMBED */ || columnType === "date" /* DATE */ || columnType === "number" /* NUMBER */ || columnType === "last-edited-time" /* LAST_EDITED_TIME */ || columnType === "creation-time" /* CREATION_TIME */; + return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(Stack, { spacing: "sm", width: "100%", children: [ + /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Padding, { px: "md", py: "sm", width: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( + input_default, + { + ref: inputRef, + showBorder: true, + value: columnName, + onChange: handleInputChange + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( + MenuItem, + { + lucideId: "list", + name: "Type", + value: getDisplayNameForCellType(columnType), + onClick: () => { + onSubmenuChange(0 /* TYPE */); + } + } + ), + hasOptions && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( + MenuItem, + { + lucideId: "settings", + name: "Options", + onClick: () => { + onSubmenuChange(1 /* OPTIONS */); + } + } + ) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Divider, {}), + /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( + MenuItem, + { lucideId: "arrow-up", name: "Ascending", onClick: () => onSortClick("asc" /* ASC */), isSelected: columnSortDir === "asc" /* ASC */ - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + } + ), + /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( + MenuItem, + { lucideId: "arrow-down", name: "Descending", onClick: () => onSortClick("desc" /* DESC */), isSelected: columnSortDir === "desc" /* DESC */ - }), - canDeleteColumn && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Divider, {}), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - lucideId: "trash", - name: "Delete", - onClick: () => onDeleteClick() - }) - ] - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Divider, {}), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { - px: "lg", - py: "md", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Flex, { - justify: "space-between", - align: "center", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { - value: "Wrap overflow" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Switch, { - isChecked: shouldWrapOverflow, - onToggle: (value) => onWrapOverflowToggle(columnId, value) - }) - ] - }) - }) - ] - }); + } + ), + /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Divider, {}), + /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( + MenuItem, + { + lucideId: "eye-off", + name: "Hide", + onClick: () => onHideClick() + } + ), + canDeleteColumn && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( + MenuItem, + { + lucideId: "trash", + name: "Delete", + onClick: () => onDeleteClick() + } + ), + columnType !== "embed" /* EMBED */ && columnType !== "number" /* NUMBER */ && /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(import_jsx_runtime78.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Divider, {}), + /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Padding, { px: "lg", py: "md", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(Flex, { justify: "space-between", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Text, { value: "Wrap content" }), + /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( + Switch, + { + value: shouldWrapOverflow, + onToggle: (value) => onWrapOverflowToggle(columnId, value) + } + ) + ] }) }) + ] }) + ] }); } -// src/react/table-app/header-cell-edit/currency-submenu.tsx -function CurrencySubmenu({ +// src/react/loom-app/header-cell-edit/number-format-submenu/index.tsx +var import_jsx_runtime79 = __toESM(require_jsx_runtime()); +function NumberFormatSubmenu({ title, - value, - onValueClick, + format, + currency, + onNumberFormatChange, onBackClick }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Submenu, { - title, - onBackClick, - children: Object.values(CurrencyType).map((type) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { - name: getDisplayNameForCurrencyType(type), - onClick: () => onValueClick(type), - isSelected: type === value - }, type)) - }); + return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(Submenu, { title, onBackClick, children: /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: "dataloom-number-format-submenu", children: [ + /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( + MenuItem, + { + name: "Number", + onClick: () => onNumberFormatChange("number" /* NUMBER */), + isSelected: format === "number" /* NUMBER */ + } + ), + Object.values(CurrencyType2).map((type) => /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( + MenuItem, + { + name: getDisplayNameForCurrencyType(type), + onClick: () => onNumberFormatChange("currency" /* CURRENCY */, { + currency: type + }), + isSelected: type === currency && format === "currency" /* CURRENCY */ + }, + type + )) + ] }) }); } -// src/react/table-app/header-cell-edit/date-format-submenu.tsx +// src/react/loom-app/header-cell-edit/text-input-submenu.tsx +var import_react34 = __toESM(require_react()); +var import_jsx_runtime80 = __toESM(require_jsx_runtime()); +function TextInputSubmenu({ + title, + value, + onValueChange, + onBackClick, + closeRequest, + onClose +}) { + const [textValue, setTextValue] = import_react34.default.useState(value); + import_react34.default.useEffect(() => { + if (closeRequest !== null) { + onValueChange(textValue); + onClose(); + } + }, [onValueChange, textValue, closeRequest, onClose]); + return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Submenu, { title, onBackClick, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(input_default, { value: textValue, onChange: setTextValue }) }); +} + +// src/react/loom-app/header-cell-edit/date-format-submenu.tsx +var import_jsx_runtime81 = __toESM(require_jsx_runtime()); function DateFormatSubmenu({ title, value, onValueClick, onBackClick }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Submenu, { - title, - onBackClick, - children: Object.values(DateFormat).map((format) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(Submenu, { title, onBackClick, children: Object.values(DateFormat2).map((format) => /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( + MenuItem, + { name: getDisplayNameForDateFormat(format), onClick: () => onValueClick(format), isSelected: format === value - }, format)) - }); + }, + format + )) }); } -// src/react/table-app/header-cell-edit/aspect-ratio-submenu.tsx +// src/react/loom-app/header-cell-edit/aspect-ratio-submenu.tsx +var import_jsx_runtime82 = __toESM(require_jsx_runtime()); function AspectRatioSubmenu({ title, value, onValueClick, onBackClick }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Submenu, { - title, - onBackClick, - children: Object.values(AspectRatio).map((ratio) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Submenu, { title, onBackClick, children: Object.values(AspectRatio2).map((ratio) => /* @__PURE__ */ (0, import_jsx_runtime82.jsx)( + MenuItem, + { name: ratio, onClick: () => onValueClick(ratio), isSelected: ratio === value - }, ratio)) - }); + }, + ratio + )) }); } -// src/react/table-app/header-cell-edit/padding-submenu.tsx +// src/react/loom-app/header-cell-edit/padding-submenu.tsx +var import_jsx_runtime83 = __toESM(require_jsx_runtime()); function PaddingSubmenu({ title, value, onValueClick, onBackClick }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Submenu, { - title, - onBackClick, - children: Object.values(PaddingSize).map((size) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(Submenu, { title, onBackClick, children: Object.values(PaddingSize2).map((size) => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + MenuItem, + { name: size, onClick: () => onValueClick(size), isSelected: size === value - }, size)) - }); + }, + size + )) }); } -// src/react/table-app/header-cell-edit/index.tsx -var HeaderMenu = import_react87.default.forwardRef(function HeaderMenu2({ +// src/react/loom-app/header-cell-edit/index.tsx +var import_jsx_runtime84 = __toESM(require_jsx_runtime()); +var SELFHANDLE_CLOSE = [ + 8 /* TEXT_INPUT_NUMBER_SUFFIX */, + 7 /* TEXT_INPUT_NUMBER_PREFIX */, + 9 /* TEXT_INPUT_NUMBER_SEPARATOR */ +]; +function HeaderMenu({ isOpen, id: id2, - top, - left, - cellId, - markdown, + triggerPosition, + content, dateFormat, currencyType, + numberFormat, + numberPrefix, + numberSuffix, + numberSeparator, horizontalPadding, verticalPadding, aspectRatio, @@ -52122,7 +55594,7 @@ var HeaderMenu = import_react87.default.forwardRef(function HeaderMenu2({ columnType, columnSortDir, columnId, - menuCloseRequest, + closeRequest, shouldWrapOverflow, onTypeSelect, onVerticalPaddingClick, @@ -52130,165 +55602,239 @@ var HeaderMenu = import_react87.default.forwardRef(function HeaderMenu2({ onAspectRatioClick, onSortClick, onDeleteClick, - onMenuClose, + onClose, onWrapOverflowToggle, - onNameChange, - onCurrencyChange, - onDateFormatChange -}, ref) { - const [submenu, setSubmenu] = (0, import_react87.useState)(null); - const [localValue, setLocalValue] = (0, import_react87.useState)(markdown); - const hasCloseRequestTimeChanged = useCompare( - menuCloseRequest == null ? void 0 : menuCloseRequest.requestTime - ); - import_react87.default.useEffect(() => { - if (hasCloseRequestTimeChanged && menuCloseRequest !== null) { + onContentChange, + onNumberFormatChange, + onNumberPrefixChange, + onNumberSuffixChange, + onNumberSeparatorChange, + onDateFormatChange, + onHideClick, + onRequestClose +}) { + const [submenu, setSubmenu] = (0, import_react35.useState)(null); + const [localValue, setLocalValue] = (0, import_react35.useState)(content); + import_react35.default.useEffect(() => { + if (closeRequest !== null) { if (submenu === null) { - if (localValue !== markdown) - onNameChange(cellId, localValue); + if (localValue !== content) + onContentChange(columnId, localValue); + } + if (!submenu || !SELFHANDLE_CLOSE.includes(submenu)) { + onClose(); } - onMenuClose(); } }, [ - markdown, - cellId, - hasCloseRequestTimeChanged, - menuCloseRequest, + content, + columnId, + closeRequest, submenu, localValue, - onNameChange, - onMenuClose + onContentChange, + onClose ]); function handleSortClick(sortDir) { onSortClick(columnId, sortDir); - onMenuClose(); + onClose(); } function handleAspectRatioClick(value) { onAspectRatioClick(columnId, value); - onMenuClose(); + onClose(); setSubmenu(1 /* OPTIONS */); } function handleHorizontalPaddingClick(value) { onHorizontalPaddingClick(columnId, value); - onMenuClose(); + onClose(); setSubmenu(1 /* OPTIONS */); } function handleVerticalPaddingClick(value) { onVerticalPaddingClick(columnId, value); - onMenuClose(); + onClose(); setSubmenu(1 /* OPTIONS */); } function handleTypeClick(type) { onTypeSelect(columnId, type); - onMenuClose(); + onClose(); + setSubmenu(null); + } + function handleHideClick() { + onHideClick(columnId); + onClose(); setSubmenu(null); } function handleDeleteClick() { onDeleteClick(columnId); - onMenuClose(); + onClose(); setSubmenu(null); } - function handleCurrencyClick(value) { - onCurrencyChange(columnId, value); + function handleNumberFormatChange(value, options) { + onNumberFormatChange(columnId, value, options); setSubmenu(1 /* OPTIONS */); } + function handleNumberOptionChange(value) { + submenu === 7 /* TEXT_INPUT_NUMBER_PREFIX */ && onNumberPrefixChange(columnId, value); + submenu === 8 /* TEXT_INPUT_NUMBER_SUFFIX */ && onNumberSuffixChange(columnId, value); + submenu === 9 /* TEXT_INPUT_NUMBER_SEPARATOR */ && onNumberSeparatorChange(columnId, value); + setSubmenu(null); + } function handleDateFormatClick(value) { onDateFormatChange(columnId, value); setSubmenu(1 /* OPTIONS */); } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { - isOpen, - id: id2, - top, - left, - ref, - width: 175, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - className: "NLT__header-menu", - css: import_emotion_react_cjs.css` - color: var(--text-normal); - `, - children: [ - submenu === null && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(BaseMenu, { - canDeleteColumn, - cellId, - shouldWrapOverflow, - columnId, - columnName: localValue, - columnType, - menuCloseRequest, - columnSortDir, - onColumnNameChange: setLocalValue, - onSortClick: handleSortClick, - onSubmenuChange: setSubmenu, - onWrapOverflowToggle, - onDeleteClick: handleDeleteClick - }), - submenu === 1 /* OPTIONS */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(OptionSubmenu, { - title: "Options", - type: columnType, - horizontalPadding, - verticalPadding, - aspectRatio, - dateFormat, - currencyType, - onBackClick: () => setSubmenu(null), - onSubmenuChange: setSubmenu - }), - submenu === 6 /* ASPECT_RATIO */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(AspectRatioSubmenu, { - title: "Aspect Ratio", - value: aspectRatio, - onValueClick: handleAspectRatioClick, - onBackClick: () => setSubmenu(null) - }), - submenu === 4 /* HORIZONTAL_PADDING */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(PaddingSubmenu, { - title: "Horizontal Padding", - value: horizontalPadding, - onValueClick: handleHorizontalPaddingClick, - onBackClick: () => setSubmenu(null) - }), - submenu === 5 /* VERTICAL_PADDING */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(PaddingSubmenu, { - title: "Vertical Padding", - value: verticalPadding, - onValueClick: handleVerticalPaddingClick, - onBackClick: () => setSubmenu(null) - }), - submenu === 0 /* TYPE */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TypeSubmenu, { - title: "Type", - value: columnType, - onValueClick: handleTypeClick, - onBackClick: () => setSubmenu(null) - }), - submenu === 3 /* DATE_FORMAT */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(DateFormatSubmenu, { - title: "Date Format", - value: dateFormat, - onValueClick: handleDateFormatClick, - onBackClick: () => setSubmenu(1 /* OPTIONS */) - }), - submenu === 2 /* CURRENCY */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(CurrencySubmenu, { - title: "Currency", - value: currencyType, - onValueClick: handleCurrencyClick, - onBackClick: () => setSubmenu(1 /* OPTIONS */) - }) - ] - }) - }); -}); -var header_cell_edit_default = HeaderMenu; + return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + Menu, + { + isOpen, + id: id2, + triggerPosition, + width: 175, + onRequestClose, + onClose, + children: /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "dataloom-header-menu", children: [ + submenu === null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + BaseMenu2, + { + canDeleteColumn, + shouldWrapOverflow, + columnId, + columnName: localValue, + columnType, + columnSortDir, + onColumnNameChange: setLocalValue, + onSortClick: handleSortClick, + onSubmenuChange: setSubmenu, + onWrapOverflowToggle, + onDeleteClick: handleDeleteClick, + onHideClick: handleHideClick + } + ), + submenu === 1 /* OPTIONS */ && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + OptionSubmenu, + { + title: "Options", + type: columnType, + horizontalPadding, + verticalPadding, + aspectRatio, + dateFormat, + numberFormat, + currencyType, + numberPrefix, + numberSuffix, + numberSeparator, + onBackClick: () => setSubmenu(null), + onSubmenuChange: setSubmenu + } + ), + submenu === 6 /* ASPECT_RATIO */ && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + AspectRatioSubmenu, + { + title: "Aspect ratio", + value: aspectRatio, + onValueClick: handleAspectRatioClick, + onBackClick: () => setSubmenu(null) + } + ), + submenu === 4 /* HORIZONTAL_PADDING */ && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + PaddingSubmenu, + { + title: "Horizontal padding", + value: horizontalPadding, + onValueClick: handleHorizontalPaddingClick, + onBackClick: () => setSubmenu(null) + } + ), + submenu === 5 /* VERTICAL_PADDING */ && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + PaddingSubmenu, + { + title: "Vertical padding", + value: verticalPadding, + onValueClick: handleVerticalPaddingClick, + onBackClick: () => setSubmenu(null) + } + ), + submenu === 0 /* TYPE */ && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + TypeSubmenu, + { + title: "Type", + value: columnType, + onValueClick: handleTypeClick, + onBackClick: () => setSubmenu(null) + } + ), + submenu === 3 /* DATE_FORMAT */ && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + DateFormatSubmenu, + { + title: "Date Format", + value: dateFormat, + onValueClick: handleDateFormatClick, + onBackClick: () => setSubmenu(1 /* OPTIONS */) + } + ), + submenu === 2 /* CURRENCY */ && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + NumberFormatSubmenu, + { + title: "Currency", + format: numberFormat, + currency: currencyType, + onNumberFormatChange: handleNumberFormatChange, + onBackClick: () => setSubmenu(1 /* OPTIONS */) + } + ), + submenu === 7 /* TEXT_INPUT_NUMBER_PREFIX */ && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + TextInputSubmenu, + { + title: "Prefix", + value: numberPrefix, + closeRequest, + onClose, + onValueChange: handleNumberOptionChange, + onBackClick: () => setSubmenu(1 /* OPTIONS */) + } + ), + submenu === 8 /* TEXT_INPUT_NUMBER_SUFFIX */ && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + TextInputSubmenu, + { + title: "Suffix", + closeRequest, + onClose, + value: numberSuffix, + onValueChange: handleNumberOptionChange, + onBackClick: () => setSubmenu(1 /* OPTIONS */) + } + ), + submenu === 9 /* TEXT_INPUT_NUMBER_SEPARATOR */ && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + TextInputSubmenu, + { + title: "Separator", + closeRequest, + onClose, + value: numberSeparator, + onValueChange: handleNumberOptionChange, + onBackClick: () => setSubmenu(1 /* OPTIONS */) + } + ) + ] }) + } + ); +} -// src/react/table-app/header-cell/index.tsx -function HeaderCell2({ - cellId, - rowId, +// src/react/loom-app/header-cell-container/index.tsx +var import_jsx_runtime85 = __toESM(require_jsx_runtime()); +function HeaderCellContainer({ columnId, currencyType, + numberFormat, + numberPrefix, + numberSeparator, + numberSuffix, width, dateFormat, horizontalPadding, verticalPadding, aspectRatio, - markdown, + content, shouldWrapOverflow, resizingColumnId, type, @@ -52302,405 +55848,2642 @@ function HeaderCell2({ onAspectRatioClick, onDeleteClick, onWrapOverflowToggle, - onNameChange, - onCurrencyChange, - onDateFormatChange + onContentChange, + onNumberFormatChange, + onNumberPrefixChange, + onNumberSeparatorChange, + onNumberSuffixChange, + onDateFormatChange, + onHideClick }) { - const { menu, isMenuOpen, closeTopMenu, menuRef, menuCloseRequest } = useMenu(0 /* ONE */, { shouldRequestOnClose: true }); - const { triggerPosition, triggerRef } = useMenuTriggerPosition(); - useShiftMenu(triggerRef, menuRef, isMenuOpen); + const { + menu, + triggerRef, + triggerPosition, + isOpen, + closeRequest, + onOpen, + onClose, + onRequestClose + } = useMenu({ + shouldRequestOnClose: true + }); const [forceUpdateTime, forceUpdate] = useForceUpdate(); - import_react89.default.useEffect(() => { + import_react36.default.useEffect(() => { if (width === "unset") forceUpdate(); }, [width, forceUpdate]); const shouldUpdateWidth = useCompare(forceUpdateTime, false); - import_react89.default.useEffect(() => { + import_react36.default.useEffect(() => { if (shouldUpdateWidth) { const newWidth = numToPx(triggerPosition.width); onWidthChange(columnId, newWidth); } }, [columnId, shouldUpdateWidth, triggerPosition]); - function handleMenuClose() { - closeTopMenu(); - } const lucideId = getIconIdForCellType(type); - let contentClassName = "NLT__th-content"; + let contentClassName = "dataloom-cell--header__inner-container"; if (resizingColumnId == null) - contentClassName += " NLT__selectable"; - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_trigger_default, { - isCell: true, + contentClassName += " dataloom-selectable"; + return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(import_jsx_runtime85.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + menu_trigger_default, + { + ref: triggerRef, menu, - shouldRun: resizingColumnId === null, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - className: "NLT__th-container", - ref: triggerRef, - css: import_emotion_react_cjs.css` - display: flex; - justify-content: space-between; - min-height: var(--nlt-cell-min-height); - width: ${width}; - `, - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: contentClassName, - css: import_emotion_react_cjs.css` - display: flex; - align-items: center; - /* Use 100% so that the resize indicator appears at the end */ - width: 100%; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - user-select: none; - padding: var(--nlt-cell-spacing-x) - var(--nlt-cell-spacing-y); - `, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "md", - align: "flex-start", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { - lucideId, - size: "md" - }), - markdown - ] - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(ResizeContainer, { - currentResizingId: resizingColumnId, - columnId, - width, - onWidthChange, - onMenuClose: () => closeTopMenu({ shouldFocusTrigger: false }) - }) - ] - }) - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(header_cell_edit_default, { - isOpen: isMenuOpen, - menuCloseRequest, - top: triggerPosition.top, - left: triggerPosition.left, + isCell: true, + shouldOpenOnTrigger: resizingColumnId === null, + onOpen, + children: /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)( + "div", + { + className: "dataloom-cell--header__container", + style: { + width + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: contentClassName, children: /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(Stack, { isHorizontal: true, spacing: "md", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(Icon, { lucideId, size: "md" }), + content + ] }) }), + /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + ColumnResize, + { + currentResizingId: resizingColumnId, + columnId, + width, + onWidthChange, + onMenuClose: () => onClose(false) + } + ) + ] + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + HeaderMenu, + { + isOpen, + closeRequest, + triggerPosition, id: menu.id, - ref: menuRef, aspectRatio, horizontalPadding, verticalPadding, - rowId, + numberFormat, currencyType, + numberPrefix, + numberSuffix, + numberSeparator, dateFormat, canDeleteColumn: numColumns > 1, columnId, - cellId, shouldWrapOverflow, - markdown, + content, columnSortDir: sortDir, columnType: type, numColumns, onSortClick, onTypeSelect, onDeleteClick, - onMenuClose: handleMenuClose, + onClose, + onRequestClose, onWrapOverflowToggle, - onNameChange, - onCurrencyChange, + onContentChange, + onNumberFormatChange, + onNumberPrefixChange, + onNumberSeparatorChange, + onNumberSuffixChange, onDateFormatChange, onVerticalPaddingClick, onHorizontalPaddingClick, - onAspectRatioClick - }) - ] - }); + onAspectRatioClick, + onHideClick + } + ) + ] }); } -// src/data/constants.ts -var CURRENT_PLUGIN_VERSION = "6.18.6"; -var DEFAULT_TABLE_NAME = "Untitled"; -var TABLE_EXTENSION = "table"; -var EXTENSION_REGEX = new RegExp(/\.[a-z]*$/); -var WIKI_LINK_REGEX = new RegExp(/\[\[([^|\]]+)(?:\|([\w-]+))?\]\]/g); +// src/react/loom-app/body-cell-container/index.tsx +var import_react47 = __toESM(require_react()); +var import_obsidian17 = require("obsidian"); -// src/data/table-state-factory.ts -var createColumn = (options) => { - const { cellType = "text" /* TEXT */ } = options || {}; - return { - id: v4_default(), - sortDir: "default" /* NONE */, - isVisible: true, - width: "140px", - type: cellType, - currencyType: "USD" /* UNITED_STATES */, - dateFormat: "mm/dd/yyyy" /* MM_DD_YYYY */, - shouldWrapOverflow: false, - tags: [], - functionType: "none" /* NONE */, - aspectRatio: "16/9" /* SIXTEEN_BY_NINE */, - horizontalPadding: "unset" /* UNSET */, - verticalPadding: "unset" /* UNSET */ - }; -}; -var createHeaderRow = () => { - return { - id: v4_default() - }; -}; -var createFooterRow = () => { - return { - id: v4_default() - }; -}; -var createBodyRow = (index) => { - const currentTime = Date.now(); - return { - id: v4_default(), - index, - creationTime: currentTime, - lastEditedTime: currentTime - }; -}; -var createHeaderCell = (columnId, rowId) => { - return { - id: v4_default(), - columnId, - rowId, - markdown: "New Column" - }; -}; -var createBodyCell = (columnId, rowId, options = {}) => { - const { cellType, tagIds = [] } = options || {}; - return { - id: v4_default(), - columnId, - rowId, - dateTime: null, - markdown: cellType === "checkbox" /* CHECKBOX */ ? CHECKBOX_MARKDOWN_UNCHECKED : "", - tagIds - }; -}; -var createFilterRule = (columnId) => { - return { - id: v4_default(), - columnId, - type: "is" /* IS */, - text: "", - tagIds: [], - isEnabled: true - }; -}; -var createFooterCell = (columnId, rowId) => { - return { - id: v4_default(), - columnId, - rowId - }; -}; -var createTag = (markdown, options) => { - const { color = randomColor() } = options || {}; - return { - id: v4_default(), - markdown, - color - }; -}; -var createTableState = (numColumns, numRows, options) => { - const { cellType } = options || {}; - const columns = []; - for (let i2 = 0; i2 < numColumns; i2++) - columns.push(createColumn({ cellType })); - const headerRows = []; - headerRows.push(createHeaderRow()); - const headerCells = []; - for (let x2 = 0; x2 < numColumns; x2++) { - headerCells.push(createHeaderCell(columns[x2].id, headerRows[0].id)); - } - const bodyRows = []; - for (let i2 = 0; i2 < numRows; i2++) - bodyRows.push(createBodyRow(i2)); - const bodyCells = []; - for (let y2 = 0; y2 < numRows; y2++) { - for (let x2 = 0; x2 < numColumns; x2++) { - bodyCells.push(createBodyCell(columns[x2].id, bodyRows[y2].id)); +// src/react/loom-app/text-cell/index.tsx +var import_jsx_runtime86 = __toESM(require_jsx_runtime()); +function TextCell({ value, shouldWrapOverflow }) { + const { containerRef, renderRef } = useRenderMarkdown(value); + const overflowClassName = useOverflow(shouldWrapOverflow); + let className = "dataloom-text-cell"; + className += " " + overflowClassName; + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + "div", + { + className: "dataloom-text-cell__container", + ref: (node) => { + containerRef.current = node; + appendOrReplaceFirstChild(node, renderRef.current); + } } - } - const footerRows = []; - footerRows.push(createFooterRow()); - footerRows.push(createFooterRow()); - const footerCells = []; - for (let y2 = 0; y2 < 2; y2++) { - for (let x2 = 0; x2 < numColumns; x2++) { - footerCells.push(createFooterCell(columns[x2].id, footerRows[y2].id)); - } - } - const filterRules = []; - return { - model: { - columns, - headerRows, - bodyRows, - footerRows, - headerCells, - bodyCells, - footerCells, - filterRules - }, - pluginVersion: CURRENT_PLUGIN_VERSION - }; -}; + ) }); +} -// src/shared/table-state/filter-state-operations.ts -var addRule = (prevState, columnId) => { - const { model } = prevState; - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, model), { - filterRules: [...model.filterRules, createFilterRule(columnId)] - }) - }); -}; -var deleteRule = (prevState, id2) => { - const { model } = prevState; - const { filterRules } = model; - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, model), { - filterRules: filterRules.filter((rule) => rule.id !== id2) - }) - }); -}; -var updateRule = (prevState, id2, key, value) => { - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - filterRules: prevState.model.filterRules.map((rule) => { - const isBoolean2 = typeof rule[key] === "boolean"; - if (!isBoolean2 && value === void 0) - throw new Error( - "If the key type is not a boolean, a value must be provided" - ); - if (rule.id === id2) { - return __spreadProps(__spreadValues({}, rule), { - [key]: isBoolean2 ? !rule[key] : value - }); +// src/react/shared/tag/index.tsx +var import_jsx_runtime87 = __toESM(require_jsx_runtime()); +function Tag6({ + id: id2, + color, + maxWidth, + content, + showRemoveButton, + onRemoveClick +}) { + const { isDarkMode } = useAppSelector((state) => state.global); + let tagClassName = "dataloom-tag"; + tagClassName += " " + findColorClassName(isDarkMode, color); + if (onRemoveClick !== void 0 && id2 === void 0) { + throw new Error( + "An id must defined when the onRemoveClick handler is present." + ); + } + let contentClassName = "dataloom-tag-content"; + if (maxWidth !== void 0) { + contentClassName += " dataloom-overflow--ellipsis"; + } + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: tagClassName, children: /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(Stack, { spacing: "sm", justify: "center", isHorizontal: true, children: [ + /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + "div", + { + className: contentClassName, + style: { + maxWidth + }, + children: content + } + ), + showRemoveButton && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Padding, { width: "max-content", children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + Button, + { + isSmall: true, + icon: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Icon, { lucideId: "x" }), + onClick: () => { + if (id2 && onRemoveClick) + onRemoveClick(id2); } - return rule; - }) - }) - }); -}; + } + ) }) + ] }) }); +} -// src/shared/table-state/use-filter-rules.ts -var useFilterRules = (onChange) => { - const logger = useLogger(); - function handleRuleColumnChange(id2, columnId) { - logger("handleRuleColumnChange", { id: id2, columnId }); - onChange( - (prevState) => updateRule(prevState, id2, "columnId", columnId) +// src/react/loom-app/tag-cell/index.tsx +var import_jsx_runtime88 = __toESM(require_jsx_runtime()); +function TagCell({ content, color, shouldWrapOverflow }) { + const overflowClassName = useOverflow(shouldWrapOverflow); + let className = "dataloom-tag-cell"; + className += " " + overflowClassName; + return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Tag6, { content, color }) }); +} + +// src/react/loom-app/checkbox-cell/index.tsx +var import_jsx_runtime89 = __toESM(require_jsx_runtime()); +function CheckboxCell({ value }) { + const isChecked = isCheckboxChecked(value); + return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "dataloom-checkbox-cell", children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)( + "input", + { + className: "task-list-item-checkbox", + type: "checkbox", + checked: isChecked, + onChange: () => { + } + } + ) }); +} + +// src/react/loom-app/date-cell/index.tsx +var import_jsx_runtime90 = __toESM(require_jsx_runtime()); +function DateCell({ value, format }) { + const overflowClassName = useOverflow(false, { + ellipsis: true + }); + let className = "dataloom-date-cell"; + className += " " + overflowClassName; + const content = getDateCellContent(value, format); + return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className, children: content }); +} + +// src/react/loom-app/number-cell/index.tsx +var import_jsx_runtime91 = __toESM(require_jsx_runtime()); +function NumberCell({ + value, + currency, + format, + prefix: prefix2, + suffix, + separator +}) { + const overflowClassName = useOverflow(false); + if (isNumber(value)) { + value = getNumberCellContent(format, value, { + currency, + prefix: prefix2, + suffix, + separator + }); + } + let className = "dataloom-number-cell"; + className += " " + overflowClassName; + return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("div", { className, children: value }); +} + +// src/react/loom-app/number-cell-edit/index.tsx +var import_react37 = __toESM(require_react()); +var import_jsx_runtime92 = __toESM(require_jsx_runtime()); +function NumberCellEdit({ + closeRequest, + value, + onChange, + onClose +}) { + const initialValue = isNumber(value) ? value : ""; + const [localValue, setLocalValue] = import_react37.default.useState(initialValue); + const inputRef = import_react37.default.useRef(null); + usePlaceCursorAtEnd(inputRef, localValue); + import_react37.default.useEffect(() => { + if (closeRequest !== null) { + if (localValue !== value) + onChange(localValue); + onClose(); + } + }, [value, localValue, closeRequest, onClose, onChange]); + function handleChange(inputValue) { + if (!isNumberInput(inputValue)) + return; + setLocalValue(inputValue); + } + return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: "dataloom-number-cell-edit", children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + input_default, + { + ref: inputRef, + focusOutline: "default", + inputMode: "numeric", + value: localValue, + onChange: handleChange, + onBlur: (e) => { + e.target.classList.add("dataloom-blur--cell"); + } + } + ) }); +} + +// src/react/loom-app/text-cell-edit/index.tsx +var import_react40 = __toESM(require_react()); + +// src/react/shared/suggest-list/index.tsx +var import_react39 = __toESM(require_react()); +var import_fuzzysort = __toESM(require_fuzzysort()); + +// src/react/shared/suggest-list/suggest-item/index.tsx +var import_react38 = __toESM(require_react()); + +// src/shared/event-system/event-system.ts +var EventSystem = class { + constructor() { + this.eventListeners = []; + } + addEventListener(name, callback, priority = 0) { + this.eventListeners.push({ + name, + callback, + priority + }); + this.eventListeners.sort((a2, b2) => b2.priority - a2.priority); + } + removeEventListener(name, callback) { + this.eventListeners = this.eventListeners.filter( + (l2) => l2.name !== name || l2.callback !== callback ); } - function handleRuleFilterTypeChange(id2, type) { - logger("handleRuleFilterTypeChange", { + dispatchEvent(name, event, ...data) { + const listeners = this.eventListeners.filter((l2) => l2.name === name); + listeners.forEach((listener2) => { + listener2.callback(event, data); + }); + } +}; +var nltEventSystem = new EventSystem(); + +// src/react/shared/suggest-list/suggest-item/index.tsx +var import_jsx_runtime93 = __toESM(require_jsx_runtime()); +var SuggestItem = import_react38.default.forwardRef( + function SuggestItem2({ index, file, isHighlighted, onItemClick }, ref) { + const handleClick = import_react38.default.useCallback( + (e) => { + e.stopPropagation(); + onItemClick(file); + }, + [file, onItemClick] + ); + import_react38.default.useEffect(() => { + function handleKeyDown(e) { + if (e.key === "Enter") + onItemClick(file); + } + if (isHighlighted) + nltEventSystem.addEventListener("keydown", handleKeyDown, 1); + return () => nltEventSystem.removeEventListener("keydown", handleKeyDown); + }, [isHighlighted, onItemClick, file]); + let name = "No match found"; + if (file) { + if (file.extension === "md") { + name = file.basename; + } else { + name = file.name; + } + } + let path = null; + if (file) { + if (file.parent && file.parent.path !== "/") { + path = file.parent.path + "/"; + } + } + return /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)( + "div", + { + tabIndex: 0, + "data-index": index, + className: "dataloom-suggest-item dataloom-focusable", + ref, + style: { + backgroundColor: isHighlighted ? "var(--background-modifier-hover)" : "var(--background-primary)" + }, + onClick: handleClick, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + Text, + { + variant: "semibold", + size: "xs", + value: name, + maxWidth: "275px" + } + ), + path && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Text, { value: path, size: "xs" }) + ] + } + ); + } +); +var suggest_item_default = SuggestItem; + +// src/react/shared/suggest-list/suggest-input/index.tsx +var import_jsx_runtime94 = __toESM(require_jsx_runtime()); +function SuggestInput({ value, onChange }) { + return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "dataloom-suggest-input", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( + input_default, + { + isTransparent: true, + focusOutline: "none", + placeholder: "Search for a file...", + value, + onChange + } + ) }); +} + +// src/react/shared/suggest-list/clear-button.tsx +var import_jsx_runtime95 = __toESM(require_jsx_runtime()); +function ClearButton({ onClick }) { + return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_jsx_runtime95.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Divider, {}), + /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(MenuItem, { name: "Clear", onClick }) + ] }); +} + +// src/react/shared/suggest-list/create-button.tsx +var import_jsx_runtime96 = __toESM(require_jsx_runtime()); +function CreateButton({ value, onClick }) { + return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_jsx_runtime96.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime96.jsx)( + MenuItem, + { + name: `Create ${value}`, + onClick: () => onClick == null ? void 0 : onClick(value) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Divider, {}) + ] }); +} + +// src/react/shared/suggest-list/index.tsx +var import_jsx_runtime97 = __toESM(require_jsx_runtime()); +function SuggestList({ + hiddenExtensions = [], + showInput, + showCreate, + showClear, + filterValue, + onItemClick, + onClearClick, + onCreateClick +}) { + const [localFilterValue, setLocalFilterValue] = import_react39.default.useState( + filterValue != null ? filterValue : "" + ); + const highlightItemRef = import_react39.default.useRef(null); + const [highlightIndex, setHighlightIndex] = import_react39.default.useState(-1); + const { app } = useAppMount(); + const logger = useLogger(); + import_react39.default.useEffect(() => { + setLocalFilterValue(filterValue != null ? filterValue : ""); + }, [filterValue]); + import_react39.default.useEffect(() => { + if (highlightItemRef.current) { + highlightItemRef.current.scrollIntoView({ + behavior: "auto", + block: "nearest" + }); + } + }, [highlightIndex]); + const files = app.vault.getFiles().filter((file) => !hiddenExtensions.includes(file.extension)); + let filteredFiles = []; + if (localFilterValue !== "") { + const results = import_fuzzysort.default.go(localFilterValue, files, { + key: "path", + limit: 20 + }); + filteredFiles = results.map((result) => result.obj); + } else { + filteredFiles = files; + filteredFiles.sort((a2, b2) => b2.stat.mtime - a2.stat.mtime); + filteredFiles = filteredFiles.slice(0, 20); + } + import_react39.default.useEffect(() => { + function handleKeyDown() { + logger("SuggestMenuContent handleKeyDown"); + const focusedEl = document.activeElement; + if (!focusedEl) + return; + if (focusedEl.classList.contains("dataloom-suggest-item")) { + const index = focusedEl.getAttribute("data-index"); + if (!index) + return; + setHighlightIndex(parseInt(index)); + return; + } + setHighlightIndex(-1); + } + nltEventSystem.addEventListener("keydown", handleKeyDown); + return () => nltEventSystem.removeEventListener("keydown", handleKeyDown); + }, [filteredFiles.length, logger, highlightIndex]); + const doesFilterFileExist = filteredFiles.map((file) => file.path).includes(localFilterValue); + return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "dataloom-suggest-menu", children: [ + showInput && files.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_jsx_runtime97.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime97.jsx)( + SuggestInput, + { + value: localFilterValue, + onChange: setLocalFilterValue + } + ), + /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Divider, {}) + ] }), + showCreate && !doesFilterFileExist && localFilterValue !== "" && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)( + CreateButton, + { + value: localFilterValue, + onClick: onCreateClick + } + ), + files.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "dataloom-suggest-menu__container", children: [ + filteredFiles.length === 0 && !showCreate && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)( + suggest_item_default, + { + index: 0, + file: null, + ref: null, + isHighlighted: true, + onItemClick + } + ), + filteredFiles.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_jsx_runtime97.Fragment, { children: filteredFiles.map((file, index) => /* @__PURE__ */ (0, import_jsx_runtime97.jsx)( + suggest_item_default, + { + index, + ref: highlightIndex === index ? highlightItemRef : null, + file, + isHighlighted: index === highlightIndex, + onItemClick + }, + file.path + )) }) + ] }), + files.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Padding, { px: "md", pb: "md", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Text, { value: "No image files found" }) }), + showClear && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(ClearButton, { onClick: onClearClick }) + ] }); +} + +// src/react/loom-app/text-cell-edit/suggest-menu.tsx +var import_jsx_runtime98 = __toESM(require_jsx_runtime()); +function SuggestMenu({ + id: id2, + isOpen, + triggerPosition, + filterValue, + onItemClick, + onRequestClose, + onClose +}) { + return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)( + Menu, + { id: id2, - type - }); - onChange((prevState) => updateRule(prevState, id2, "type", type)); + isOpen, + triggerPosition, + width: 275, + onRequestClose, + onClose, + children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SuggestList, { filterValue, onItemClick }) + } + ); +} + +// src/react/loom-app/text-cell-edit/utils.ts +var import_lodash9 = __toESM(require_lodash()); + +// src/react/loom-app/text-cell-edit/constants.ts +var DOUBLE_BRACKET_REGEX = new RegExp(/\[\[(.*?)]]/g); + +// src/react/loom-app/text-cell-edit/utils.ts +var isSurroundedByDoubleBrackets = (inputValue, selectionStart) => { + let match; + const regex = (0, import_lodash9.cloneDeep)(DOUBLE_BRACKET_REGEX); + while ((match = regex.exec(inputValue)) !== null) { + const innerText2 = match[1]; + const startIndex = match.index + 2; + const endIndex = startIndex + innerText2.length - 1; + const index = selectionStart - 1; + if (innerText2 === "" && index === startIndex - 1) + return true; + if (index >= startIndex && index <= endIndex) + return true; } - function handleRuleTextChange(id2, text) { - logger("handleRuleTextChange", { id: id2, text }); - onChange((prevState) => updateRule(prevState, id2, "text", text)); + return false; +}; +var doubleBracketsInnerReplace = (inputValue, selectionStart, replacement) => { + let match; + const regex = (0, import_lodash9.cloneDeep)(DOUBLE_BRACKET_REGEX); + while ((match = regex.exec(inputValue)) !== null) { + const innerText2 = match[1]; + const startIndex = match.index + 2; + const endIndex = startIndex + innerText2.length - 1; + const index = selectionStart - 1; + if (innerText2 === "" && index === startIndex - 1) { + return inputValue.slice(0, startIndex) + replacement + inputValue.slice(endIndex + 1); + } + if (index >= startIndex && index <= endIndex) { + return inputValue.slice(0, startIndex) + replacement + inputValue.slice(endIndex + 1); + } } - function handleRuleToggle(id2) { - logger("handleRuleToggle", { id: id2 }); - onChange((prevState) => updateRule(prevState, id2, "isEnabled")); + return inputValue; +}; +var getFilterValue = (inputValue, selectionStart) => { + let match; + const regex = (0, import_lodash9.cloneDeep)(DOUBLE_BRACKET_REGEX); + while ((match = regex.exec(inputValue)) !== null) { + const innerText2 = match[1]; + const startIndex = match.index + 2; + const endIndex = startIndex + innerText2.length - 1; + const index = selectionStart - 1; + if (innerText2 === "" && index === startIndex - 1) { + return innerText2; + } + if (index >= startIndex && index <= endIndex) { + return innerText2; + } } - function handleRuleAddClick(columnId) { - logger("handleRuleAddClick", { columnId }); - onChange((prevState) => addRule(prevState, columnId)); + return null; +}; +var addClosingBracket = (value, selectionStart) => { + const char = value[selectionStart - 1]; + if (char === "[") + value = value + "]"; + return value; +}; +var removeClosingBracket = (previousValue, value, selectionStart) => { + const previousChar = previousValue[selectionStart]; + const nextChar = value[selectionStart]; + if (previousChar === "[" && nextChar === "]") { + const updatedValue = value.slice(0, selectionStart) + value.slice(selectionStart + 1); + value = updatedValue; } - function handleRuleDeleteClick(id2) { - logger("handleRuleDeleteClick", { - id: id2 - }); - onChange((prevState) => deleteRule(prevState, id2)); + return value; +}; + +// src/shared/link/link-utils.ts +var getBasename = (filePath) => { + const fileName = stripDirectory(filePath); + return stripFileExtension(fileName); +}; +var getExtension = (filePath) => { + return filePath.substring(filePath.lastIndexOf(".") + 1); +}; +var stripFileExtension = (filePath) => { + return filePath.substring(0, filePath.lastIndexOf(".")); +}; +var stripDirectory = (filePath) => { + return filePath.substring(filePath.lastIndexOf("/") + 1); +}; +var isMarkdownFile = (extension) => { + return extension === "md"; +}; +var getWikiLinkText = (path) => { + const basename = getBasename(path); + const extension = getExtension(path); + let text = basename; + if (!isMarkdownFile(extension)) { + text = stripDirectory(path); + if (path.includes("/")) + text = `${path}|${basename}`; + } else { + const pathWithoutExtension = stripFileExtension(path); + if (path.includes("/")) + text = `${pathWithoutExtension}|${basename}`; } - function handleRuleTagsChange(id2, tagIds) { - logger("handleRuleTagsChange", { + return text; +}; + +// src/react/loom-app/text-cell-edit/index.tsx +var import_jsx_runtime99 = __toESM(require_jsx_runtime()); +function TextCellEdit({ + shouldWrapOverflow, + closeRequest, + value, + onChange, + onClose +}) { + var _a2, _b, _c; + const { onCloseAll } = useMenuOperations(); + const { + menu: suggestMenu, + triggerRef: suggestMenuTriggerRef, + triggerPosition: suggestMenuTriggerPosition, + isOpen: isSuggestMenuOpen, + onOpen: onSuggestMenuOpen, + onRequestClose: onSuggestMenuRequestClose, + onClose: onSuggestMenuClose + } = useMenu({ level: 2 /* TWO */ }); + const [localValue, setLocalValue] = import_react40.default.useState(value); + const [cursorPosition, setCursorPosition] = import_react40.default.useState( + null + ); + const inputRef = import_react40.default.useRef(null); + const logger = useLogger(); + usePlaceCursorAtEnd(inputRef, localValue); + import_react40.default.useEffect(() => { + if (inputRef.current) { + const selectionIndex = inputRef.current.selectionStart; + if (localValue[selectionIndex - 1] === "]" && localValue[selectionIndex - 2] === "[") { + inputRef.current.selectionStart = selectionIndex - 1; + inputRef.current.selectionEnd = selectionIndex - 1; + } else if (localValue[selectionIndex - 1] === "]" && localValue[selectionIndex - 2] === "]" && localValue[selectionIndex - 3] === "[") { + inputRef.current.selectionStart = selectionIndex - 2; + inputRef.current.selectionEnd = selectionIndex - 2; + } + } + }, [inputRef, localValue]); + import_react40.default.useEffect(() => { + if (closeRequest !== null) { + if (localValue !== value) + onChange(localValue); + onClose(); + } + }, [value, localValue, closeRequest, onClose, onChange]); + function handleKeyDown(e) { + var _a3, _b2; + const el = e.target; + logger("TextCellEdit handleKeyDown"); + if (e.key === "ArrowLeft" || e.key === "ArrowRight") { + const cursorPosition2 = el.selectionStart; + if (isSuggestMenuOpen) { + if (!isSurroundedByDoubleBrackets(value, cursorPosition2)) + onClose(); + } + if (inputRef.current) { + const inputEl = inputRef.current; + inputEl.selectionStart = cursorPosition2; + inputEl.selectionEnd = cursorPosition2; + } + } else if (isInsertLineDown(e)) { + if (isSuggestMenuOpen) + return; + e.stopPropagation(); + } else if (isInsertLineAltDown(e)) { + if (isSuggestMenuOpen) + return; + e.stopPropagation(); + const cursorPosition2 = (_b2 = (_a3 = inputRef.current) == null ? void 0 : _a3.selectionStart) != null ? _b2 : 0; + setLocalValue( + (prevState) => prevState.slice(0, cursorPosition2) + "\n" + prevState.slice(cursorPosition2) + ); + setCursorPosition(cursorPosition2 + 1); + } + } + import_react40.default.useEffect(() => { + if (cursorPosition !== null && inputRef.current) { + inputRef.current.selectionStart = cursorPosition; + inputRef.current.selectionEnd = cursorPosition; + setCursorPosition(null); + } + }, [cursorPosition, inputRef]); + import_react40.default.useEffect( + function scrollToBottom() { + if (inputRef.current) { + inputRef.current.scrollTop = inputRef.current.scrollHeight; + } + }, + [inputRef, localValue] + ); + function handleTextareaChange(e) { + const inputValue = e.target.value; + let newValue = inputValue; + if (inputRef.current) { + const inputEl = inputRef.current; + if (inputValue.length > localValue.length) { + newValue = addClosingBracket(newValue, inputEl.selectionStart); + } else { + newValue = removeClosingBracket( + localValue, + inputValue, + inputEl.selectionStart + ); + } + if (isSurroundedByDoubleBrackets(newValue, inputEl.selectionStart)) { + onSuggestMenuOpen(); + } + } + setLocalValue(newValue); + } + function handleSuggestItemClick(file) { + var _a3, _b2; + if (file) { + const fileName = getWikiLinkText(file.path); + const newValue = doubleBracketsInnerReplace( + localValue, + (_b2 = (_a3 = inputRef.current) == null ? void 0 : _a3.selectionStart) != null ? _b2 : 0, + fileName + ); + onChange(newValue); + } + onCloseAll(); + } + const overflowClassName = useOverflow(shouldWrapOverflow); + const filterValue = (_c = getFilterValue(localValue, (_b = (_a2 = inputRef.current) == null ? void 0 : _a2.selectionStart) != null ? _b : 0)) != null ? _c : ""; + return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_jsx_runtime99.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( + "div", + { + className: "dataloom-text-cell-edit", + ref: suggestMenuTriggerRef, + children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( + "textarea", + { + className: overflowClassName, + autoFocus: true, + ref: inputRef, + value: localValue, + onKeyDown: handleKeyDown, + onChange: handleTextareaChange, + onBlur: (e) => { + e.target.classList.add("dataloom-blur--cell"); + } + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( + SuggestMenu, + { + id: suggestMenu.id, + isOpen: isSuggestMenuOpen, + triggerPosition: suggestMenuTriggerPosition, + filterValue, + onItemClick: handleSuggestItemClick, + onRequestClose: onSuggestMenuRequestClose, + onClose: onSuggestMenuClose + } + ) + ] }); +} + +// src/react/loom-app/tag-cell-edit/index.tsx +var import_react43 = __toESM(require_react()); + +// src/react/loom-app/tag-cell-edit/menu-header/index.tsx +var import_react41 = __toESM(require_react()); +var import_jsx_runtime100 = __toESM(require_jsx_runtime()); +function MenuHeader({ + cellTags, + inputValue, + onInputValueChange, + onRemoveTag +}) { + const inputRef = import_react41.default.useRef(null); + function handleInputChange(value) { + if (value.match(/^\s/)) + return; + onInputValueChange(value); + } + return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "dataloom-tag-cell-edit__menu-header", children: [ + cellTags.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Padding, { px: "md", pt: "md", pb: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Wrap, { spacingX: "sm", children: cellTags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( + Tag6, + { + id: tag.id, + color: tag.color, + content: tag.content, + maxWidth: "150px", + showRemoveButton: true, + onRemoveClick: onRemoveTag + }, + tag.id + )) }) }), + /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( + input_default, + { + ref: inputRef, + isTransparent: true, + focusOutline: "none", + placeholder: "Search for a tag...", + value: inputValue, + onChange: handleInputChange + } + ) + ] }); +} + +// src/react/loom-app/tag-cell-edit/create-tag/index.tsx +var import_jsx_runtime101 = __toESM(require_jsx_runtime()); +function CreateTag({ content, color, onTagAdd }) { + return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "dataloom-create-tag", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + Button, + { + variant: "text", + isFullWidth: true, + onClick: () => onTagAdd(content, color), + children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Padding, { px: "md", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(Stack, { spacing: "sm", isHorizontal: true, children: [ + /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { children: "Create" }), + /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Tag6, { content, color, maxWidth: "120px" }) + ] }) }) + } + ) }); +} + +// src/shared/stringUtils.ts +var uppercaseFirst = (input) => { + return input.charAt(0).toUpperCase() + input.slice(1); +}; + +// src/react/loom-app/tag-color-menu/components/color-item/index.tsx +var import_jsx_runtime102 = __toESM(require_jsx_runtime()); +function ColorItem({ + isDarkMode, + color, + isSelected, + onColorClick +}) { + function handleKeyDown(e) { + if (e.key === "Enter") { + e.stopPropagation(); + onColorClick(color); + } + } + let containerClass = "dataloom-color-item dataloom-focusable dataloom-selectable"; + if (isSelected) + containerClass += " dataloom-selected"; + const colorClass = findColorClassName(isDarkMode, color); + let squareClass = "dataloom-color-item__square"; + squareClass += " " + colorClass; + return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)( + "div", + { + tabIndex: 0, + className: containerClass, + onKeyDown: handleKeyDown, + onClick: () => { + onColorClick(color); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Padding, { px: "lg", py: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(Stack, { isHorizontal: true, spacing: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: squareClass }), + /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Text, { value: uppercaseFirst(color), size: "sm" }) + ] }) }) + } + ); +} + +// src/react/loom-app/tag-color-menu/index.tsx +var import_react42 = __toESM(require_react()); +var import_jsx_runtime103 = __toESM(require_jsx_runtime()); +function TagColorMenu({ + id: id2, + isOpen, + triggerPosition, + selectedColor, + content, + closeRequest, + onColorClick, + onDeleteClick, + onRequestClose, + onTagContentChange, + onClose +}) { + const { isDarkMode } = useAppSelector((state) => state.global); + const [localValue, setLocalValue] = import_react42.default.useState(content); + import_react42.default.useEffect( + function saveOnCloseRequest() { + if (closeRequest === null) + return; + if (content !== localValue) + onTagContentChange(localValue); + onClose(); + }, + [closeRequest, content, localValue, onTagContentChange, onClose] + ); + return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)( + Menu, + { id: id2, - tagIds + isOpen, + triggerPosition, + onRequestClose, + onClose, + children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "dataloom-tag-color-menu", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Padding, { px: "md", py: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(input_default, { value: localValue, onChange: setLocalValue }) }), + /* @__PURE__ */ (0, import_jsx_runtime103.jsx)( + MenuItem, + { + lucideId: "trash-2", + name: "Delete", + onClick: onDeleteClick + } + ), + /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Divider, {}), + /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Padding, { px: "lg", py: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Text, { value: "Colors" }) }), + /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "dataloom-tag-color-menu__color-container", children: Object.values(Color).map((color) => /* @__PURE__ */ (0, import_jsx_runtime103.jsx)( + ColorItem, + { + isDarkMode, + color, + onColorClick, + isSelected: selectedColor === color + }, + color + )) }) + ] }) }) + } + ); +} + +// src/react/loom-app/tag-cell-edit/selectable-tag/index.tsx +var import_jsx_runtime104 = __toESM(require_jsx_runtime()); +function SelectableTag({ + id: id2, + content, + color, + onClick, + onColorChange, + onDeleteClick, + onTagContentChange +}) { + const { + menu, + triggerRef, + triggerPosition, + isOpen, + closeRequest, + onOpen, + onClose, + onRequestClose + } = useMenu({ level: 2 /* TWO */, shouldRequestOnClose: true }); + function handleColorChange(color2) { + onColorChange(id2, color2); + onClose(); + } + function handleDeleteClick() { + onDeleteClick(id2); + onClose(); + } + function handleTagContentChange(value) { + onTagContentChange(id2, value); + onClose(); + } + function handleKeyDown(e) { + if (e.key === "Enter") { + e.stopPropagation(); + onClick(id2); + } + } + function handleClick(e) { + const target = e.target; + if (target.classList.contains("dataloom-menu-trigger")) + return; + e.stopPropagation(); + onClick(id2); + } + return /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_jsx_runtime104.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)( + "div", + { + tabIndex: 0, + className: "dataloom-selectable-tag dataloom-focusable dataloom-selectable", + onClick: handleClick, + onKeyDown: handleKeyDown, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Tag6, { content, color, maxWidth: "150px" }), + /* @__PURE__ */ (0, import_jsx_runtime104.jsx)( + menu_button_default, + { + ref: triggerRef, + menu, + icon: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Icon, { lucideId: "more-horizontal" }), + onOpen + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime104.jsx)( + TagColorMenu, + { + isOpen, + id: menu.id, + triggerPosition, + closeRequest, + content, + selectedColor: color, + onColorClick: (color2) => handleColorChange(color2), + onDeleteClick: handleDeleteClick, + onRequestClose, + onTagContentChange: handleTagContentChange, + onClose + } + ) + ] }); +} + +// src/react/loom-app/tag-cell-edit/menu-body/index.tsx +var import_jsx_runtime105 = __toESM(require_jsx_runtime()); +function MenuBody({ + columnTags, + inputValue, + newTagColor, + onTagAdd, + onTagClick, + onTagColorChange, + onTagDelete, + onTagContentChange +}) { + const hasTagWithSameCase = columnTags.find((tag) => tag.content === inputValue) !== void 0; + const filteredTags = columnTags.filter( + (tag) => tag.content.toLowerCase().includes(inputValue.toLowerCase()) + ); + return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "dataloom-tag-cell-edit__menu-body", children: [ + /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Padding, { px: "lg", py: "md", children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Text, { value: "Select a tag or create one" }) }), + /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "dataloom-tag-cell-edit__menu-body-container", children: [ + !hasTagWithSameCase && inputValue !== "" && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)( + CreateTag, + { + content: inputValue, + color: newTagColor, + onTagAdd + } + ), + filteredTags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)( + SelectableTag, + { + id: tag.id, + color: tag.color, + content: tag.content, + onColorChange: onTagColorChange, + onClick: onTagClick, + onDeleteClick: onTagDelete, + onTagContentChange + }, + tag.id + )) + ] }) + ] }); +} + +// src/react/loom-app/tag-cell-edit/index.tsx +var import_jsx_runtime106 = __toESM(require_jsx_runtime()); +function TagCellEdit({ + isMulti, + columnTags, + cellTags, + closeRequest, + onTagClick, + onTagAdd, + onTagColorChange, + onTagDelete, + onRemoveTag, + onTagContentChange, + onClose +}) { + const [inputValue, setInputValue] = import_react43.default.useState(""); + const [newTagColor, setNewTagColor] = import_react43.default.useState(randomColor()); + const handleTagAdd = import_react43.default.useCallback( + (markdown, color) => { + onTagAdd(markdown, color); + setInputValue(""); + setNewTagColor(randomColor()); + if (!isMulti) + onClose(); + }, + [isMulti, onTagAdd, onClose] + ); + import_react43.default.useEffect(() => { + if (closeRequest !== null) { + if (closeRequest.type === "close-on-save") { + if (inputValue !== "") { + const doesTagExist = columnTags.find( + (tag) => tag.content === inputValue + ); + if (!doesTagExist) { + handleTagAdd(inputValue, newTagColor); + return; + } + } + } + onClose(); + } + }, [ + handleTagAdd, + columnTags, + inputValue, + newTagColor, + closeRequest, + onClose + ]); + function handleTagClick(id2) { + onTagClick(id2); + if (!isMulti) + onClose(); + } + return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "dataloom-tag-cell-edit", children: [ + /* @__PURE__ */ (0, import_jsx_runtime106.jsx)( + MenuHeader, + { + inputValue, + cellTags, + onInputValueChange: setInputValue, + onRemoveTag + } + ), + /* @__PURE__ */ (0, import_jsx_runtime106.jsx)( + MenuBody, + { + inputValue, + columnTags, + newTagColor, + onTagAdd: handleTagAdd, + onTagClick: handleTagClick, + onTagDelete, + onTagColorChange, + onTagContentChange + } + ) + ] }); +} + +// src/react/loom-app/date-cell-edit/index.tsx +var import_react44 = __toESM(require_react()); + +// src/react/loom-app/date-cell-edit/date-format-menu.tsx +var import_jsx_runtime107 = __toESM(require_jsx_runtime()); +function DateFormatMenu({ + id: id2, + triggerPosition, + isOpen, + value, + onChange, + onRequestClose, + onClose +}) { + return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)( + Menu, + { + isOpen, + id: id2, + triggerPosition, + width: 175, + onRequestClose, + onClose, + children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "dataloom-date-format-menu", children: Object.values([ + "dd/mm/yyyy" /* DD_MM_YYYY */, + "mm/dd/yyyy" /* MM_DD_YYYY */, + "yyyy/mm/dd" /* YYYY_MM_DD */ + ]).map((format) => /* @__PURE__ */ (0, import_jsx_runtime107.jsx)( + MenuItem, + { + name: getDisplayNameForDateFormat(format), + isSelected: value === format, + onClick: () => { + onChange(format); + } + }, + format + )) }) + } + ); +} + +// src/react/loom-app/date-cell-edit/index.tsx +var import_jsx_runtime108 = __toESM(require_jsx_runtime()); +function DateCellEdit({ + value, + closeRequest, + dateFormat, + onDateTimeChange, + onClose, + onDateFormatChange +}) { + const { + menu: dateFormatMenu, + triggerRef: dateFormatMenuTriggerRef, + triggerPosition: dateFormatMenuTriggerPosition, + isOpen: isDateFormatMenuOpen, + onOpen: onDateFormatMenuOpen, + onClose: onDateFormatMenuClose, + onRequestClose: onDateFormatMenuRequestClose + } = useMenu({ level: 2 /* TWO */ }); + const [localValue, setLocalValue] = import_react44.default.useState( + value === null ? "" : unixTimeToDateString(value, dateFormat) + ); + const [isInputInvalid, setInputInvalid] = import_react44.default.useState(false); + const [closeTime, setCloseTime] = import_react44.default.useState(0); + const inputRef = import_react44.default.useRef(null); + import_react44.default.useEffect(() => { + setLocalValue( + value === null ? "" : unixTimeToDateString(value, dateFormat) + ); + }, [value, dateFormat]); + import_react44.default.useEffect(() => { + if (closeRequest !== null) { + let newValue = null; + if (localValue !== "") { + if (isValidDateFormat(localValue, dateFormat)) { + newValue = dateStringToUnixTime(localValue, dateFormat); + } else { + if (closeRequest.type === "close-on-save") { + setInputInvalid(true); + return; + } + newValue = value; + } + } + if (newValue !== value) { + setInputInvalid(false); + onDateTimeChange(newValue); + } + setCloseTime(Date.now()); + } + }, [ + value, + localValue, + closeRequest, + dateFormat, + onDateTimeChange, + onClose + ]); + import_react44.default.useEffect(() => { + if (closeTime !== 0) { + onClose(); + } + }, [closeTime, onClose]); + function handleDateFormatChange(value2) { + onDateFormatChange(value2); + onDateFormatMenuClose(); + } + function handleClearClick() { + onDateTimeChange(null); + onClose(); + } + return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_jsx_runtime108.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "dataloom-date-cell-edit", children: /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(Stack, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Padding, { p: "md", children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)( + input_default, + { + ref: inputRef, + showBorder: true, + hasError: isInputInvalid, + value: localValue, + onChange: setLocalValue + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime108.jsx)( + menu_trigger_default, + { + ref: dateFormatMenuTriggerRef, + menu: dateFormatMenu, + onOpen: onDateFormatMenuOpen, + children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)( + MenuItem, + { + isFocusable: false, + name: "Date format", + value: getDisplayNameForDateFormat(dateFormat) + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(MenuItem, { name: "Clear", onClick: handleClearClick }) + ] }) }), + /* @__PURE__ */ (0, import_jsx_runtime108.jsx)( + DateFormatMenu, + { + id: dateFormatMenu.id, + isOpen: isDateFormatMenuOpen, + triggerPosition: dateFormatMenuTriggerPosition, + value: dateFormat, + onChange: handleDateFormatChange, + onRequestClose: onDateFormatMenuRequestClose, + onClose: onDateFormatMenuClose + } + ) + ] }); +} + +// src/react/loom-app/multi-tag-cell/index.tsx +var import_jsx_runtime109 = __toESM(require_jsx_runtime()); +function MultiTagCell({ cellTags, shouldWrapOverflow }) { + const overflowClassName = useOverflow(shouldWrapOverflow); + let className = "dataloom-multi-tag-cell"; + className += " " + overflowClassName; + return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Wrap, { children: cellTags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Tag6, { content: tag.content, color: tag.color }, tag.id)) }) }); +} + +// src/shared/cell-content/file-cell-content.ts +var getFileCellContent = (markdown) => { + if (markdown === "") + return markdown; + const linkRegex = new RegExp(/\[\[([^[\]]+)\]\]/); + const matches = markdown.match(linkRegex); + let matchStartIndex = -1; + let matchEndIndex = -1; + if (matches) { + matchStartIndex = markdown.indexOf(matches[0]); + matchEndIndex = matchStartIndex + matches[0].length; + } + if (matches === null) { + return `[[${markdown}]]`; + } else if (matchStartIndex === 0) { + return `${markdown.slice(0, matchEndIndex + 1).trim()}`; + } else { + return `[[${markdown.slice(0, matchStartIndex).trim()}]]`; + } +}; + +// src/react/loom-app/file-cell/index.tsx +var import_jsx_runtime110 = __toESM(require_jsx_runtime()); +function FileCell({ value, shouldWrapOverflow }) { + const content = getFileCellContent(value); + const { containerRef, renderRef } = useRenderMarkdown(content); + const overflowClassName = useOverflow(shouldWrapOverflow); + let className = "dataloom-file-cell"; + className += " " + overflowClassName; + return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)( + "div", + { + ref: (node) => { + containerRef.current = node; + appendOrReplaceFirstChild(node, renderRef.current); + } + } + ) }); +} + +// src/react/loom-app/file-cell-edit/index.tsx +var import_jsx_runtime111 = __toESM(require_jsx_runtime()); +function FileCellEdit({ onChange, onClose }) { + function handleSuggestItemClick(file) { + if (file) { + let fileName = file.basename; + if (file.path.includes("/")) + fileName = `${file.path}|${file.basename}`; + onChange(`[[${fileName}]]`); + } + onClose(); + } + function handleClearClick() { + onChange(""); + onClose(); + } + function handleCreateClick(value) { + let link = `[[${value}]]`; + if (value.includes("/")) { + const fileName = getBasename(value); + link = `${value}|${fileName}`; + } + onChange(link); + onClose(); + } + return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("div", { className: "dataloom-file-cell-edit", children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)( + SuggestList, + { + showInput: true, + showClear: true, + showCreate: true, + onItemClick: handleSuggestItemClick, + onClearClick: handleClearClick, + onCreateClick: handleCreateClick + } + ) }); +} + +// src/react/loom-app/embed-cell/embed/index.tsx +var import_jsx_runtime112 = __toESM(require_jsx_runtime()); +function Embed({ + isExternalLink, + content, + aspectRatio, + horizontalPadding, + verticalPadding +}) { + const { containerRef, renderRef } = useRenderMarkdown(content, { + isEmbed: true, + isExternalLink + }); + const paddingX = getSpacing(horizontalPadding); + const paddingY = getSpacing(verticalPadding); + return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)( + "div", + { + style: { + aspectRatio, + paddingLeft: paddingX, + paddingRight: paddingX, + paddingTop: paddingY, + paddingBottom: paddingY + }, + ref: (node) => { + containerRef.current = node; + appendOrReplaceFirstChild(node, renderRef.current); + } + } + ); +} + +// src/react/loom-app/embed-cell/index.tsx +var import_jsx_runtime113 = __toESM(require_jsx_runtime()); +function EmbedCell({ + isExternalLink, + value, + aspectRatio, + horizontalPadding, + verticalPadding +}) { + const { app } = useAppMount(); + const content = getEmbedCellContent(app, value, { + isExternalLink + }); + return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("div", { className: "dataloom-embed-cell", children: /* @__PURE__ */ (0, import_jsx_runtime113.jsx)( + Embed, + { + isExternalLink, + content, + aspectRatio, + horizontalPadding, + verticalPadding + } + ) }); +} + +// src/react/loom-app/embed-cell-edit/index.tsx +var import_react46 = __toESM(require_react()); + +// src/react/loom-app/embed-cell-edit/external-embed-input.tsx +var import_react45 = __toESM(require_react()); +var import_jsx_runtime114 = __toESM(require_jsx_runtime()); +function ExternalEmbedInput({ value, onChange }) { + const ref = import_react45.default.useRef(null); + usePlaceCursorAtEnd(ref, value); + return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)( + input_default, + { + ref, + showBorder: true, + placeholder: "Enter a url", + value, + onChange + } + ); +} + +// src/react/loom-app/embed-cell-edit/internal-embed-suggest.tsx +var import_jsx_runtime115 = __toESM(require_jsx_runtime()); +function InternalEmbedSuggest({ onChange }) { + return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)( + SuggestList, + { + showInput: true, + hiddenExtensions: ["md", LOOM_EXTENSION], + onItemClick: (item) => { + var _a2; + return onChange((_a2 = item == null ? void 0 : item.path) != null ? _a2 : ""); + } + } + ); +} + +// src/react/loom-app/embed-cell-edit/index.tsx +var import_jsx_runtime116 = __toESM(require_jsx_runtime()); +function EmbedCellEdit({ + closeRequest, + isExternalLink, + value, + onChange, + onClose, + onExternalLinkToggle +}) { + const [externalLink, setExternalLink] = import_react46.default.useState( + isExternalLink ? value : "" + ); + import_react46.default.useEffect(() => { + if (closeRequest !== null) { + if (isExternalLink) { + if (externalLink !== value) + onChange(externalLink); + } + onClose(); + } + }, [isExternalLink, value, externalLink, closeRequest, onClose, onChange]); + function handleSuggestChange(value2) { + onChange(value2); + onClose(); + } + return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "dataloom-embed-cell-edit", children: [ + /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Padding, { width: "100%", p: "md", children: /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(Stack, { spacing: "sm", width: "100%", children: [ + /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("label", { htmlFor: "external-switch", children: "External Link" }), + /* @__PURE__ */ (0, import_jsx_runtime116.jsx)( + Switch, + { + id: "external-switch", + value: isExternalLink, + onToggle: onExternalLinkToggle + } + ) + ] }) }), + /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Divider, {}), + isExternalLink && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Padding, { width: "100%", p: "md", children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)( + ExternalEmbedInput, + { + value: externalLink, + onChange: setExternalLink + } + ) }), + !isExternalLink && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(InternalEmbedSuggest, { onChange: handleSuggestChange }) + ] }); +} + +// src/react/loom-app/last-edited-time-cell/index.tsx +var import_jsx_runtime117 = __toESM(require_jsx_runtime()); +function LastEditedTimeCell({ + value, + format, + shouldWrapOverflow +}) { + const overflowClassName = useOverflow(shouldWrapOverflow); + let className = "dataloom-last-edited-time-cell"; + className += " " + overflowClassName; + return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("div", { className, children: unixTimeToDateTimeString(value, format) }); +} + +// src/react/loom-app/creation-time-cell/index.tsx +var import_jsx_runtime118 = __toESM(require_jsx_runtime()); +function CreationTimeCell({ + value, + format, + shouldWrapOverflow +}) { + const overflowClassName = useOverflow(shouldWrapOverflow); + let className = "dataloom-creation-time-cell"; + className += " " + overflowClassName; + return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className, children: unixTimeToDateTimeString(value, format) }); +} + +// src/react/loom-app/body-cell-container/index.tsx +var import_jsx_runtime119 = __toESM(require_jsx_runtime()); +function BodyCellContainer({ + cellId, + columnId, + isExternalLink, + content, + aspectRatio, + numberFormat, + verticalPadding, + currencyType, + horizontalPadding, + dateFormat, + dateTime, + numberPrefix, + numberSuffix, + numberSeparator, + columnType, + rowCreationTime, + rowLastEditedTime, + columnTags, + cellTagIds, + width, + shouldWrapOverflow, + onTagRemoveClick, + onTagMultipleRemove, + onTagColorChange, + onTagDelete, + onTagClick, + onContentChange, + onDateFormatChange, + onDateTimeChange, + onTagContentChange, + onTagAdd, + onExternalLinkToggle +}) { + const shouldRequestOnClose = columnType === "text" /* TEXT */ || columnType === "embed" /* EMBED */ || columnType === "number" /* NUMBER */ || columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */ || columnType === "date" /* DATE */; + const { + menu, + triggerRef, + triggerPosition, + closeRequest, + isOpen, + onOpen, + onClose, + onRequestClose + } = useMenu({ + shouldRequestOnClose + }); + function handleCellContextClick() { + return __async(this, null, function* () { + try { + yield navigator.clipboard.writeText(content); + new import_obsidian17.Notice("Copied text to clipboard"); + } catch (err) { + console.error(err); + } }); - onChange((prevState) => updateRule(prevState, id2, "tagIds", tagIds)); + } + function toggleCheckbox() { + const isChecked = isCheckboxChecked(content); + if (isChecked) { + handleCheckboxChange(CHECKBOX_MARKDOWN_UNCHECKED2); + } else { + handleCheckboxChange(CHECKBOX_MARKDOWN_CHECKED); + } + } + function handleMenuTriggerBackspaceDown() { + if (columnType === "text" /* TEXT */ || columnType === "embed" /* EMBED */ || columnType === "number" /* NUMBER */ || columnType === "file" /* FILE */) { + onContentChange(cellId, ""); + } else if (columnType === "date" /* DATE */) { + onDateTimeChange(cellId, null); + } else if (columnType === "checkbox" /* CHECKBOX */) { + onContentChange(cellId, CHECKBOX_MARKDOWN_UNCHECKED2); + } else if (columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */) { + onTagMultipleRemove(cellId, cellTagIds); + } + } + function handleMenuTriggerEnterDown() { + if (columnType === "checkbox" /* CHECKBOX */) + toggleCheckbox(); + } + function handleMenuTriggerClick() { + if (columnType === "checkbox" /* CHECKBOX */) { + toggleCheckbox(); + } + } + function handleExternalLinkToggle(value) { + onExternalLinkToggle(cellId, value); + } + function handleTagAdd(markdown, color) { + if (markdown === "") + return; + onTagAdd( + cellId, + columnId, + markdown.trim(), + color, + columnType === "multi-tag" /* MULTI_TAG */ + ); + } + function handleRemoveTagClick(tagId) { + onTagRemoveClick(cellId, tagId); + } + function handleTagColorChange(tagId, color) { + onTagColorChange(columnId, tagId, color); + } + function handleTagDeleteClick(tagId) { + onTagDelete(columnId, tagId); + } + function handleTagContentChange(tagId, value) { + onTagContentChange(columnId, tagId, value); + } + function handleTagClick(tagId) { + onTagClick(cellId, tagId, columnType === "multi-tag" /* MULTI_TAG */); + } + const handleInputChange = import_react47.default.useCallback( + (value) => { + onContentChange(cellId, value); + }, + [cellId, onContentChange] + ); + function handleCheckboxChange(value) { + onContentChange(cellId, value); + } + function handleDateFormatChange(value) { + onDateFormatChange(columnId, value); + } + const handleDateTimeChange = import_react47.default.useCallback( + (value) => { + onDateTimeChange(cellId, value); + }, + [cellId, onDateTimeChange] + ); + let menuWidth = triggerPosition.width; + if (columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */ || columnType === "embed" /* EMBED */) { + menuWidth = 250; + } else if (columnType === "file" /* FILE */) { + menuWidth = 275; + } else if (columnType === "date" /* DATE */) { + menuWidth = 175; + } + let menuHeight = triggerPosition.height; + if (columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */ || columnType === "date" /* DATE */ || columnType === "number" /* NUMBER */ || columnType === "file" /* FILE */ || columnType === "embed" /* EMBED */) { + menuHeight = 0; + } + let className = "dataloom-cell--body__container"; + if (columnType === "last-edited-time" /* LAST_EDITED_TIME */ || columnType === "creation-time" /* CREATION_TIME */) { + className += " dataloom-default-cursor"; + } + const cellTags = columnTags.filter((tag) => cellTagIds.includes(tag.id)); + return /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(import_jsx_runtime119.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + menu_trigger_default, + { + ref: triggerRef, + menu, + isCell: true, + onClick: handleMenuTriggerClick, + onEnterDown: handleMenuTriggerEnterDown, + onBackspaceDown: handleMenuTriggerBackspaceDown, + shouldOpenOnTrigger: columnType !== "checkbox" /* CHECKBOX */ && columnType !== "creation-time" /* CREATION_TIME */ && columnType !== "last-edited-time" /* LAST_EDITED_TIME */, + onOpen, + children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)( + "div", + { + onContextMenu: handleCellContextClick, + className, + style: { + width + }, + children: [ + columnType === "text" /* TEXT */ && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + TextCell, + { + value: content, + shouldWrapOverflow + } + ), + columnType === "embed" /* EMBED */ && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + EmbedCell, + { + isExternalLink, + value: content, + verticalPadding, + horizontalPadding, + aspectRatio + } + ), + columnType === "file" /* FILE */ && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + FileCell, + { + value: content, + shouldWrapOverflow + } + ), + columnType === "number" /* NUMBER */ && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + NumberCell, + { + value: content, + currency: currencyType, + format: numberFormat, + prefix: numberPrefix, + suffix: numberSuffix, + separator: numberSeparator + } + ), + columnType === "tag" /* TAG */ && cellTags.length === 1 && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + TagCell, + { + content: cellTags[0].content, + color: cellTags[0].color, + shouldWrapOverflow + } + ), + columnType === "multi-tag" /* MULTI_TAG */ && cellTags.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + MultiTagCell, + { + cellTags, + shouldWrapOverflow + } + ), + columnType === "date" /* DATE */ && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(DateCell, { value: dateTime, format: dateFormat }), + columnType === "checkbox" /* CHECKBOX */ && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(CheckboxCell, { value: content }), + columnType === "creation-time" /* CREATION_TIME */ && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + CreationTimeCell, + { + value: rowCreationTime, + format: dateFormat, + shouldWrapOverflow + } + ), + columnType === "last-edited-time" /* LAST_EDITED_TIME */ && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + LastEditedTimeCell, + { + value: rowLastEditedTime, + format: dateFormat, + shouldWrapOverflow + } + ) + ] + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)( + Menu, + { + id: menu.id, + hideBorder: columnType === "text" /* TEXT */ || columnType === "number" /* NUMBER */, + isOpen, + triggerPosition, + width: menuWidth, + height: menuHeight, + onRequestClose, + onClose, + children: [ + columnType === "text" /* TEXT */ && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + TextCellEdit, + { + closeRequest, + shouldWrapOverflow, + value: content, + onChange: handleInputChange, + onClose + } + ), + columnType === "embed" /* EMBED */ && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + EmbedCellEdit, + { + isExternalLink, + closeRequest, + value: content, + onChange: handleInputChange, + onClose, + onExternalLinkToggle: handleExternalLinkToggle + } + ), + columnType === "file" /* FILE */ && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + FileCellEdit, + { + onChange: handleInputChange, + onClose + } + ), + columnType === "number" /* NUMBER */ && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + NumberCellEdit, + { + closeRequest, + value: content, + onChange: handleInputChange, + onClose + } + ), + (columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */) && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + TagCellEdit, + { + isMulti: columnType === "multi-tag" /* MULTI_TAG */, + closeRequest, + columnTags, + cellTags, + onTagColorChange: handleTagColorChange, + onTagAdd: handleTagAdd, + onRemoveTag: handleRemoveTagClick, + onTagClick: handleTagClick, + onTagDelete: handleTagDeleteClick, + onTagContentChange: handleTagContentChange, + onClose + } + ), + columnType === "date" /* DATE */ && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + DateCellEdit, + { + value: dateTime, + closeRequest, + dateFormat, + onDateTimeChange: handleDateTimeChange, + onDateFormatChange: handleDateFormatChange, + onClose + } + ) + ] + } + ) + ] }); +} + +// src/react/loom-app/new-column-button/index.tsx +var import_jsx_runtime120 = __toESM(require_jsx_runtime()); +function NewColumnButton({ onClick }) { + return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("div", { className: "dataloom-new-column", children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)( + Button, + { + icon: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Icon, { lucideId: "plus" }), + ariaLabel: "New column", + onClick: () => onClick() + } + ) }); +} + +// src/react/loom-app/bottom-bar/index.tsx +var import_react48 = __toESM(require_react()); + +// src/react/loom-app/new-row-button/index.tsx +var import_jsx_runtime121 = __toESM(require_jsx_runtime()); +function NewRowButton({ onClick }) { + return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)( + Button, + { + icon: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(Icon, { lucideId: "plus" }), + ariaLabel: "New row", + onClick: () => onClick(), + children: "New" + } + ); +} + +// src/react/loom-app/bottom-bar/index.tsx +var import_jsx_runtime122 = __toESM(require_jsx_runtime()); +function BottomBar({ + onRowAddClick, + onScrollToTopClick, + onScrollToBottomClick, + onUndoClick, + onRedoClick +}) { + const ref = import_react48.default.useRef(null); + const [spaceBetweenTableAndContainer, setSpaceBetweenTableAndContainer] = import_react48.default.useState(0); + import_react48.default.useEffect(() => { + let observer = null; + if (!ref.current) + return; + const appEl = ref.current.closest(".dataloom-app"); + const tableEl = appEl == null ? void 0 : appEl.querySelector(".dataloom-table"); + if (!tableEl) + return; + const tableContainerEl = tableEl.parentElement; + if (!tableContainerEl) + return; + observer = new ResizeObserver(() => { + const containerRect = tableContainerEl.getBoundingClientRect(); + const tableRect = tableEl.getBoundingClientRect(); + let diff = containerRect.height - tableRect.height; + if (diff < 0) + diff = 0; + setSpaceBetweenTableAndContainer(diff); + }); + observer.observe(tableEl); + observer.observe(tableContainerEl); + return () => { + if (tableEl) + observer == null ? void 0 : observer.unobserve(tableEl); + }; + }, [ref]); + const isMobile = isOnMobile(); + return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("div", { className: "dataloom-bottom-bar", children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)( + "div", + { + ref, + style: { + top: numToPx(-spaceBetweenTableAndContainer) + }, + children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Padding, { pt: "md", width: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(Flex, { justify: "space-between", children: [ + /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(Stack, { spacing: "md", isHorizontal: true, children: [ + isMobile && /* @__PURE__ */ (0, import_jsx_runtime122.jsx)( + Button, + { + ariaLabel: "Undo", + icon: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Icon, { lucideId: "undo" }), + onClick: onUndoClick + } + ), + /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(NewRowButton, { onClick: onRowAddClick }) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(Stack, { isHorizontal: true, spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime122.jsx)( + Button, + { + ariaLabel: "Scroll to top", + icon: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Icon, { lucideId: "chevron-up" }), + onClick: onScrollToTopClick + } + ), + /* @__PURE__ */ (0, import_jsx_runtime122.jsx)( + Button, + { + ariaLabel: "Scroll to bottom", + onClick: onScrollToBottomClick, + icon: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Icon, { lucideId: "chevron-down" }) + } + ), + isMobile && /* @__PURE__ */ (0, import_jsx_runtime122.jsx)( + Button, + { + ariaLabel: "Redo", + icon: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Icon, { lucideId: "redo" }), + onClick: onRedoClick + } + ) + ] }) + ] }) }) + } + ) }); +} + +// src/react/loom-app/app/filter-by-filters/evaluate-with-precedence.ts +var evaluateWithPrecedence = (expressions) => { + if (expressions.length === 0) { + return true; + } + let result = expressions[0].value; + for (let i2 = 1; i2 < expressions.length; i2++) { + const { operator, value } = expressions[i2]; + if (operator === "or") { + result = result || value; + } else { + result = result && value; + } + } + return result; +}; + +// src/react/loom-app/app/filter-by-filters/utils.ts +var getDateFromDateFilterOption = (option) => { + switch (option) { + case "today" /* TODAY */: { + const date = new Date(); + return date; + } + case "tomorrow" /* TOMORROW */: { + const date = new Date(); + date.setDate(date.getDate() + 1); + return date; + } + case "yesterday" /* YESTERDAY */: { + const date = new Date(); + date.setDate(date.getDate() - 1); + return date; + } + case "one-week-ago" /* ONE_WEEK_AGO */: { + const date = new Date(); + date.setDate(date.getDate() - 7); + return date; + } + case "one-week-from-now" /* ONE_WEEK_FROM_NOW */: { + const date = new Date(); + date.setDate(date.getDate() + 7); + return date; + } + case "one-month-ago" /* ONE_MONTH_AGO */: { + const date = new Date(); + date.setMonth(date.getMonth() - 1); + return date; + } + case "one-month-from-now" /* ONE_MONTH_FROM_NOW */: { + const date = new Date(); + date.setMonth(date.getMonth() + 1); + return date; + } + default: + return null; + } +}; +var getDateAtMidnight = (date) => { + const newDate = new Date(date); + newDate.setHours(0, 0, 0, 0); + return newDate; +}; +var getDateJustBeforeMidnight = (date) => { + const newDate = new Date(date); + newDate.setHours(23, 59, 59, 999); + return newDate; +}; + +// src/react/loom-app/app/filter-by-filters/index.ts +var filterByFilters = (prevState) => { + const { columns, rows, filters } = prevState.model; + const columnIdToColumn = /* @__PURE__ */ new Map(); + columns.forEach((column) => { + columnIdToColumn.set(column.id, column); + }); + const cellIdToColumn = /* @__PURE__ */ new Map(); + rows.forEach((row) => { + const { cells } = row; + cells.forEach((cell) => { + const column = columnIdToColumn.get(cell.columnId); + if (!column) + throw new ColumNotFoundError(); + cellIdToColumn.set(cell.id, column); + }); + }); + return rows.filter((row) => { + const { cells } = row; + return cells.every((cell) => { + const column = cellIdToColumn.get(cell.id); + if (!column) + throw new ColumNotFoundError(); + const { type, tags } = column; + return doesCellMatchFilters(cell, row, type, tags, filters); + }); + }); +}; +var doesCellMatchFilters = (cell, row, cellType, columnTags, filters) => { + const expressions = filters.map((filter3) => ({ + operator: filter3.operator, + value: doesCellMatchFilter(cell, row, cellType, columnTags, filter3) + })).filter((expression) => expression.value !== null); + if (expressions.length === 0) + return true; + return evaluateWithPrecedence(expressions); +}; +var doesCellMatchFilter = (cell, row, cellType, columnTags, filter3) => { + var _a2, _b; + const { columnId, isEnabled, condition } = filter3; + const { content: cellContent } = cell; + if (columnId !== cell.columnId) + return null; + if (!isEnabled) + return null; + switch (cellType) { + case "text" /* TEXT */: { + const { text } = filter3; + return doesTextMatch(cellContent, text, condition); + } + case "file" /* FILE */: { + const { text } = filter3; + return doesTextMatch(cellContent, text, condition); + } + case "checkbox" /* CHECKBOX */: { + const { text } = filter3; + return doesTextMatch(cellContent, text, condition); + } + case "tag" /* TAG */: { + const { tagId } = filter3; + const filterTag = (_a2 = columnTags.find((tag) => tagId === tag.id)) != null ? _a2 : null; + const cellTag = (_b = columnTags.find((tag) => cell.tagIds.includes(tag.id))) != null ? _b : null; + return doesTagMatch(cellTag, filterTag, condition); + } + case "multi-tag" /* MULTI_TAG */: { + const { tagIds } = filter3; + const filterTags = columnTags.filter( + (tag) => tagIds.includes(tag.id) + ); + const cellTags = columnTags.filter( + (tag) => cell.tagIds.includes(tag.id) + ); + return doTagsMatch(cellTags, filterTags, condition); + } + case "number" /* NUMBER */: { + const { text } = filter3; + return doesNumberMatch(cellContent, text, condition); + } + case "embed" /* EMBED */: { + const { text } = filter3; + return doesTextMatch(cellContent, text, condition); + } + case "date" /* DATE */: { + const { dateTime, option } = filter3; + return doesDateMatch(cell.dateTime, dateTime, option, condition); + } + case "creation-time" /* CREATION_TIME */: { + const { creationTime } = row; + const { dateTime, option } = filter3; + return doesDateMatch(creationTime, dateTime, option, condition); + } + case "last-edited-time" /* LAST_EDITED_TIME */: { + const { lastEditedTime } = row; + const { dateTime, option } = filter3; + return doesDateMatch(lastEditedTime, dateTime, option, condition); + } + default: + throw new Error("Cell type not yet supported"); + } +}; +var doesNumberMatch = (cellContent, filterText, condition) => { + const cellNumber = Number(cellContent); + const filterNumber = Number(filterText); + switch (condition) { + case "is-equal" /* IS_EQUAL */: + if (cellContent === "") + return true; + return cellNumber === filterNumber; + case "is-greater" /* IS_GREATER */: + if (cellContent === "") + return true; + return cellNumber > filterNumber; + case "is-greater-or-equal" /* IS_GREATER_OR_EQUAL */: + if (cellContent === "") + return true; + return cellNumber >= filterNumber; + case "is-less" /* IS_LESS */: + if (cellContent === "") + return true; + return cellNumber < filterNumber; + case "is-less-or-equal" /* IS_LESS_OR_EQUAL */: + if (cellContent === "") + return true; + return cellNumber <= filterNumber; + case "is-not-equal" /* IS_NOT_EQUAL */: + if (cellContent === "") + return true; + return cellNumber !== filterNumber; + case "is-empty" /* IS_EMPTY */: + return cellContent === ""; + case "is-not-empty" /* IS_NOT_EMPTY */: + return cellContent !== ""; + default: + throw new Error("Filter condition not yet supported"); + } +}; +var doesDateMatch = (cellDateTime, filterDateTime, option, condition) => { + let cellDate = null; + if (cellDateTime !== null) { + cellDate = new Date(cellDateTime); + } + let compareDate = getDateFromDateFilterOption(option); + if (compareDate === null) { + if (filterDateTime !== null) { + compareDate = new Date(filterDateTime); + } + } + switch (condition) { + case "is" /* IS */: { + if (compareDate === null) + return true; + if (cellDate === null) + return false; + const compareDateMidnight = getDateAtMidnight(compareDate); + const compareDateJustBeforeMidnight = getDateJustBeforeMidnight(compareDate); + return cellDate.getTime() >= compareDateMidnight.getTime() && cellDate.getTime() <= compareDateJustBeforeMidnight.getTime(); + } + case "is-after" /* IS_AFTER */: { + if (compareDate === null) + return true; + if (cellDate === null) + return false; + const compareDateBeforeMidnight = getDateJustBeforeMidnight(compareDate); + return cellDate.getTime() > compareDateBeforeMidnight.getTime(); + } + case "is-before" /* IS_BEFORE */: { + if (compareDate === null) + return true; + if (cellDate === null) + return false; + const compareDateMidnight = getDateAtMidnight(compareDate); + return cellDate.getTime() < compareDateMidnight.getTime(); + } + case "is-empty" /* IS_EMPTY */: + return cellDate === null; + case "is-not-empty" /* IS_NOT_EMPTY */: + return cellDate !== null; + default: + throw new Error("Filter condition not yet supported"); + } +}; +var doesTagMatch = (cellTag, filterTag, condition) => { + switch (condition) { + case "is" /* IS */: + if (filterTag === null) + return true; + return (cellTag == null ? void 0 : cellTag.id) == filterTag.id; + case "is-not" /* IS_NOT */: + if (filterTag === null) + return true; + return (cellTag == null ? void 0 : cellTag.id) !== filterTag.id; + case "is-empty" /* IS_EMPTY */: + return cellTag === null; + case "is-not-empty" /* IS_NOT_EMPTY */: + return cellTag !== null; + default: + throw new Error("Filter condition not yet supported"); + } +}; +var doTagsMatch = (cellTags, filterTags, condition) => { + switch (condition) { + case "contains" /* CONTAINS */: + return filterTags.every( + (filterTag) => cellTags.some((cellTag) => cellTag.id === filterTag.id) + ); + case "does-not-contain" /* DOES_NOT_CONTAIN */: + return filterTags.every( + (filterTag) => cellTags.every((cellTag) => cellTag.id !== filterTag.id) + ); + case "is-empty" /* IS_EMPTY */: + return cellTags.length === 0; + case "is-not-empty" /* IS_NOT_EMPTY */: + return cellTags.length !== 0; + default: + throw new Error("Filter condition not yet supported"); + } +}; +var doesTextMatch = (cellContent, filterText, condition) => { + cellContent = cellContent.toLowerCase().trim(); + filterText = filterText.toLowerCase().trim(); + switch (condition) { + case "is" /* IS */: + if (filterText === "") + return true; + return cellContent === filterText; + case "is-not" /* IS_NOT */: + if (filterText === "") + return true; + return cellContent !== filterText; + case "contains" /* CONTAINS */: + return cellContent.includes(filterText); + case "does-not-contain" /* DOES_NOT_CONTAIN */: + if (filterText === "") + return true; + return !cellContent.includes(filterText); + case "starts-with" /* STARTS_WITH */: + return cellContent.startsWith(filterText); + case "ends-with" /* ENDS_WITH */: + return cellContent.endsWith(filterText); + case "is-empty" /* IS_EMPTY */: + return cellContent === ""; + case "is-not-empty" /* IS_NOT_EMPTY */: + return cellContent !== ""; + default: + throw new Error("Filter condition not yet supported"); + } +}; + +// src/shared/loom-state/commands/filter-update-command.ts +var import_lodash10 = __toESM(require_lodash()); +var FilterUpdateCommand = class extends loom_state_command_default { + constructor(id2, data, isPartial = true) { + super(); + this.id = id2; + this.data = data; + this.isPartial = isPartial; + } + execute(prevState) { + super.onExecute(); + const { filters } = prevState.model; + const nextFilters = filters.map((filter3) => { + if (filter3.id === this.id) { + this.prevFilter = (0, import_lodash10.cloneDeep)(filter3); + let newFilter = this.data; + if (this.isPartial) + newFilter = __spreadValues(__spreadValues({}, filter3), this.data); + this.nextFilter = newFilter; + return newFilter; + } + return filter3; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + filters: nextFilters + }) + }); + } + undo(prevState) { + super.onUndo(); + const { filters } = prevState.model; + const nextFilters = filters.map((filter3) => { + if (filter3.id === this.nextFilter.id) { + return this.prevFilter; + } + return filter3; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + filters: nextFilters + }) + }); + } + redo(prevState) { + super.onRedo(); + const { filters } = prevState.model; + const nextFilters = filters.map((filter3) => { + if (filter3.id === this.id) { + return this.nextFilter; + } + return filter3; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + filters: nextFilters + }) + }); + } +}; + +// src/shared/loom-state/commands/filter-add-command.ts +var FilterAddCommand = class extends loom_state_command_default { + execute(prevState) { + super.onExecute(); + const { filters, columns } = prevState.model; + const { id: columnId, type } = columns[0]; + let newFilter = null; + if (type === "text" /* TEXT */) { + newFilter = createTextFilter(columnId); + } else if (type === "file" /* FILE */) { + newFilter = createFileFilter(columnId); + } else if (type === "checkbox" /* CHECKBOX */) { + newFilter = createCheckboxFilter(columnId); + } else if (type === "tag" /* TAG */) { + newFilter = createTagFilter(columnId); + } else if (type === "multi-tag" /* MULTI_TAG */) { + newFilter = createMultiTagFilter(columnId); + } else if (type === "date" /* DATE */) { + newFilter = createDateFilter(columnId); + } else if (type === "number" /* NUMBER */) { + newFilter = createNumberFilter(columnId); + } else if (type === "embed" /* EMBED */) { + newFilter = createEmbedFilter(columnId); + } else if (type === "creation-time" /* CREATION_TIME */) { + newFilter = createCreationTimeFilter(columnId); + } else if (type === "last-edited-time" /* LAST_EDITED_TIME */) { + newFilter = createLastEditedTimeFilter(columnId); + } else { + throw new Error("Unhandled cell type"); + } + this.addedFilter = newFilter; + const nextFilters = [...filters, newFilter]; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + filters: nextFilters + }) + }); + } + undo(prevState) { + super.onUndo(); + const nextFilters = prevState.model.filters.filter( + (f3) => f3.id !== this.addedFilter.id + ); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + filters: nextFilters + }) + }); + } + redo(prevState) { + super.onRedo(); + const { filters } = prevState.model; + const nextFilters = [...filters, this.addedFilter]; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + filters: nextFilters + }) + }); + } +}; + +// src/shared/loom-state/commands/filter-delete-command.ts +var import_lodash11 = __toESM(require_lodash()); +var FilterDeleteCommand = class extends loom_state_command_default { + constructor(id2) { + super(); + this.id = id2; + } + execute(prevState) { + super.onExecute(); + const { filters } = prevState.model; + const nextFilters = filters.filter((f3) => { + if (f3.id === this.id) { + this.deletedFilter = { + arrIndex: filters.indexOf(f3), + filter: (0, import_lodash11.cloneDeep)(f3) + }; + return false; + } + return true; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + filters: nextFilters + }) + }); + } + undo(prevState) { + super.onUndo(); + const { filters } = prevState.model; + const nextFilters = (0, import_lodash11.cloneDeep)(filters); + nextFilters.splice( + this.deletedFilter.arrIndex, + 0, + this.deletedFilter.filter + ); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + filters: nextFilters + }) + }); + } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } +}; + +// src/react/loom-app/app/hooks/use-filter.ts +var useFilter = () => { + const logger = useLogger(); + const { doCommand } = useLoomState(); + function handleFilterUpdate(id2, data, isPartial) { + logger("handleFilterUpdate", { id: id2, data }); + doCommand(new FilterUpdateCommand(id2, data, isPartial)); + } + function handleFilterAdd() { + logger("handleFilterAdd"); + doCommand(new FilterAddCommand()); + } + function handleFilterDelete(id2) { + logger("handleFilterDelete", { id: id2 }); + doCommand(new FilterDeleteCommand(id2)); } return { - handleRuleAddClick, - handleRuleColumnChange, - handleRuleDeleteClick, - handleRuleFilterTypeChange, - handleRuleTextChange, - handleRuleToggle, - handleRuleTagsChange, - filterBodyRowsByRules + onFilterAdd: handleFilterAdd, + onFilterUpdate: handleFilterUpdate, + onFilterDelete: handleFilterDelete, + filterByFilters }; }; -// src/shared/cell-content/time-content.ts -var getTimeCellContent = (dateTime, format) => { - if (dateTime !== null) - return unixTimeToDateTimeString(dateTime, format); - return ""; -}; - -// src/shared/table-state/filter-by-search.ts -var filterBodyRowsBySearch = (tableState, filteredBodyRows, searchText) => { - const { columns, bodyCells, bodyRows } = tableState.model; - const columnMap = /* @__PURE__ */ new Map(); - columns.forEach((column) => columnMap.set(column.id, column)); - const rowMap = /* @__PURE__ */ new Map(); - bodyRows.forEach((row) => rowMap.set(row.id, row)); - const cellToTagMap = /* @__PURE__ */ new Map(); - bodyCells.forEach((cell) => { - const column = columnMap.get(cell.columnId); - if (!column) - throw new ColumNotFoundError(cell.columnId); - const cellTags = column.tags.filter( - (tag) => cell.tagIds.includes(tag.id) - ); - cellToTagMap.set(cell.id, cellTags); +// src/react/loom-app/app/filter-by-search.ts +var filterRowsBySearch = (state, rows, searchText) => { + const { columns } = state.model; + if (searchText === "") + return rows; + const columnIdToColumn = /* @__PURE__ */ new Map(); + columns.forEach((column) => { + columnIdToColumn.set(column.id, column); }); - return filteredBodyRows.filter((row) => { - const rowCells = bodyCells.filter((cell) => cell.rowId === row.id); - return rowCells.some((cell) => { - const cellTags = cellToTagMap.get(cell.id); - if (!cellTags) - throw new Error(`Tags not found for cell ${cell.id}`); - return doesCellMatch( - cell, - columnMap, - rowMap, - cellTags, - searchText.toLowerCase() - ); + const cellIdToColumn = /* @__PURE__ */ new Map(); + rows.forEach((row) => { + const { cells } = row; + cells.forEach((cell) => { + const column = columnIdToColumn.get(cell.columnId); + if (!column) + throw new ColumNotFoundError(); + cellIdToColumn.set(cell.id, column); + }); + }); + return rows.filter((row) => { + const { cells } = row; + return cells.some((cell) => { + const column = cellIdToColumn.get(cell.id); + if (!column) + throw new ColumNotFoundError(); + return doesCellMatch(cell, column, row, searchText.toLowerCase()); }); }); }; -var doesCellMatch = (cell, columnMap, rowMap, cellTags, searchText) => { - const column = columnMap.get(cell.columnId); - if (!column) - throw new ColumNotFoundError(cell.columnId); - const row = rowMap.get(cell.rowId); - if (!row) - throw new RowNotFoundError(cell.rowId); - const { dateTime, markdown } = cell; - const { currencyType, type, dateFormat } = column; +var doesCellMatch = (cell, column, row, searchText) => { + const { dateTime, content } = cell; + const { + currencyType, + type, + dateFormat, + numberFormat, + numberPrefix, + numberSuffix, + numberSeparator, + tags + } = column; const { lastEditedTime, creationTime } = row; + const cellTags = tags.filter((tag) => cell.tagIds.includes(tag.id)); switch (type) { case "text" /* TEXT */: case "embed" /* EMBED */: case "file" /* FILE */: - case "number" /* NUMBER */: case "checkbox" /* CHECKBOX */: - return matchCell(markdown, searchText); - case "currency" /* CURRENCY */: - return matchCurrencyCell(markdown, currencyType, searchText); + return matchTextCell(content, searchText); + case "number" /* NUMBER */: + return matchNumberCell( + numberFormat, + numberPrefix, + numberSuffix, + numberSeparator, + currencyType, + content, + searchText + ); case "date" /* DATE */: return matchDateCell(dateFormat, dateTime, searchText); case "creation-time" /* CREATION_TIME */: @@ -52718,17 +58501,21 @@ var doesCellMatch = (cell, columnMap, rowMap, cellTags, searchText) => { throw new Error("Unsupported cell type"); } }; -var matchCell = (markdown, searchText) => { - return markdown.toLowerCase().includes(searchText); +var matchTextCell = (cellContent, searchText) => { + return cellContent.toLowerCase().includes(searchText); }; -var matchCurrencyCell = (markdown, currencyType, searchText) => { - const content = getCurrencyCellContent(markdown, currencyType); - if (content.toLowerCase().includes(searchText.toLowerCase())) - return true; +var matchNumberCell = (numberFormat, prefix2, suffix, separator, currencyType, cellContent, searchText) => { + const content = getNumberCellContent(numberFormat, cellContent, { + currency: currencyType, + prefix: prefix2, + suffix, + separator + }); + return content.toLowerCase().includes(searchText.toLowerCase()); }; var matchTags = (cellTags, searchText) => { return cellTags.some( - (tag) => tag.markdown.toLowerCase().includes(searchText) + (tag) => tag.content.toLowerCase().includes(searchText) ); }; var matchDateCell = (dateFormat, dateTime, searchText) => { @@ -52744,95 +58531,106 @@ var matchLastEditedTimeCell = (lastEditedTime, dateFormat, searchText) => { return content.toLowerCase().includes(searchText); }; -// src/shared/table-state/use-column.ts -var import_react91 = __toESM(require_react()); - -// src/shared/commands/column-add-command.ts -var ColumnAddCommand = class extends TableStateCommand { +// src/shared/loom-state/commands/column-add-command.ts +var ColumnAddCommand = class extends loom_state_command_default { constructor() { super(...arguments); - __publicField(this, "addedColumn"); - __publicField(this, "addedHeaderCells"); - __publicField(this, "addedBodyCells"); - __publicField(this, "addedFooterCells"); + this.addedCells = []; } execute(prevState) { super.onExecute(); - const { - headerCells, - bodyCells, - footerCells, - columns, - headerRows, - bodyRows, - footerRows - } = prevState.model; - this.addedColumn = createColumn(); - this.addedHeaderCells = headerRows.map( - (row) => createHeaderCell(this.addedColumn.id, row.id) - ); - this.addedBodyCells = bodyRows.map( - (row) => createBodyCell(this.addedColumn.id, row.id) - ); - this.addedFooterCells = footerRows.map( - (row) => createFooterCell(this.addedColumn.id, row.id) - ); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - columns: [...columns, this.addedColumn], - headerCells: [...headerCells, ...this.addedHeaderCells], - bodyCells: [...bodyCells, ...this.addedBodyCells], - footerCells: [...footerCells, ...this.addedFooterCells] - }) + const { columns, rows } = prevState.model; + const newColumn = createColumn(); + this.newColumn = newColumn; + const nextColumns = [...columns, newColumn]; + const nextRows = rows.map((row) => { + const { cells } = row; + const newCell = createCell(newColumn.id); + this.addedCells.push({ + rowId: row.id, + cell: newCell + }); + const nextCells = [...cells, newCell]; + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); }); - } - redo(prevState) { - super.onRedo(); - const { headerCells, bodyCells, footerCells, columns } = prevState.model; return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - columns: [...columns, this.addedColumn], - headerCells: [...headerCells, ...this.addedHeaderCells], - bodyCells: [...bodyCells, ...this.addedBodyCells], - footerCells: [...footerCells, ...this.addedFooterCells] + columns: nextColumns, + rows: nextRows }) }); } undo(prevState) { super.onUndo(); - const { columns, headerCells, bodyCells, footerCells } = prevState.model; - const { id: id2 } = this.addedColumn; + const { columns, rows } = prevState.model; + const { id: id2 } = this.newColumn; + const nextColumns = columns.filter((column) => column.id !== id2); + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = cells.filter((cell) => cell.columnId !== id2); + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); + }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - columns: columns.filter((column) => column.id !== id2), - headerCells: headerCells.filter((cell) => cell.columnId !== id2), - bodyCells: bodyCells.filter((cell) => cell.columnId !== id2), - footerCells: footerCells.filter((cell) => cell.columnId !== id2) + columns: nextColumns, + rows: nextRows + }) + }); + } + redo(prevState) { + super.onRedo(); + const { rows, columns } = prevState.model; + const nextColumns = [...columns, this.newColumn]; + const nextRows = rows.map((row) => { + const { cells } = row; + const cell = this.addedCells.find((c2) => c2.rowId === row.id); + if (!cell) + throw new CellNotFoundError({ rowId: row.id }); + const nextCells = [...cells, cell.cell]; + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: nextColumns, + rows: nextRows }) }); } }; -// src/shared/commands/column-delete-command.ts -var ColumnDeleteCommand = class extends TableStateCommand { +// src/shared/loom-state/commands/command-arguments-error.ts +var CommandArgumentsError = class extends Error { + constructor(type) { + let message = ""; + if (type === "delete") { + message = "Either 'id' or 'last' must be defined"; + } + super(message); + this.name = "CommandArgumentsError"; + } +}; + +// src/shared/loom-state/commands/column-delete-command.ts +var import_lodash12 = __toESM(require_lodash()); +var ColumnDeleteCommand = class extends loom_state_command_default { constructor(options) { super(); - __publicField(this, "columnId"); - __publicField(this, "last"); - __publicField(this, "deletedColumn"); - __publicField(this, "deletedHeaderCells"); - __publicField(this, "deletedBodyCells"); - __publicField(this, "deletedFooterCells"); - __publicField(this, "deletedFilterRules"); + this.deletedCells = []; const { id: id2, last: last2 } = options; if (id2 === void 0 && last2 === void 0) - throw new DeleteCommandArgumentsError(); + throw new CommandArgumentsError("delete"); this.columnId = id2; this.last = last2; } execute(prevState) { super.onExecute(); - const { columns, headerCells, bodyCells, footerCells, filterRules } = prevState.model; + const { columns, rows, filters } = prevState.model; if (columns.length === 1) return prevState; let id2 = this.columnId; @@ -52843,43 +58641,71 @@ var ColumnDeleteCommand = class extends TableStateCommand { throw new ColumNotFoundError(id2); this.deletedColumn = { arrIndex: columns.indexOf(columnToDelete), - column: structuredClone(columnToDelete) + column: (0, import_lodash12.cloneDeep)(columnToDelete) }; - const headerCellsToDelete = headerCells.filter( - (cell) => cell.columnId === id2 + const nextColumns = columns.filter((column) => column.id !== id2); + const nextRows = rows.map((row) => { + const { cells } = row; + const cell = row.cells.find((cell2) => cell2.columnId === id2); + if (!cell) + throw new CellNotFoundError({ columnId: id2, rowId: row.id }); + this.deletedCells.push({ + rowId: row.id, + cell: (0, import_lodash12.cloneDeep)(cell), + arrIndex: row.cells.indexOf(cell) + }); + const nextCells = cells.filter((cell2) => cell2.columnId !== id2); + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); + }); + const filtersToDelete = filters.filter( + (filter3) => filter3.columnId === id2 ); - this.deletedHeaderCells = headerCellsToDelete.map((cell) => ({ - arrIndex: headerCells.indexOf(cell), - cell: structuredClone(cell) - })); - const bodyCellsToDelete = bodyCells.filter( - (cell) => cell.columnId === id2 - ); - this.deletedBodyCells = bodyCellsToDelete.map((cell) => ({ - arrIndex: bodyCells.indexOf(cell), - cell: structuredClone(cell) - })); - const footerCellsToDelete = footerCells.filter( - (cell) => cell.columnId === id2 - ); - this.deletedFooterCells = footerCellsToDelete.map((cell) => ({ - arrIndex: footerCells.indexOf(cell), - cell: structuredClone(cell) - })); - const rulesToDelete = filterRules.filter( - (rule) => rule.columnId === id2 - ); - this.deletedFilterRules = rulesToDelete.map((rule) => ({ - arrIndex: filterRules.indexOf(rule), - rule: structuredClone(rule) + this.deletedFilters = filtersToDelete.map((filter3) => ({ + arrIndex: filters.indexOf(filter3), + filter: (0, import_lodash12.cloneDeep)(filter3) })); + const nextFilters = filters.filter((filter3) => filter3.columnId !== id2); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - columns: columns.filter((column) => column.id !== id2), - headerCells: headerCells.filter((cell) => cell.columnId !== id2), - bodyCells: bodyCells.filter((cell) => cell.columnId !== id2), - footerCells: footerCells.filter((cell) => cell.columnId !== id2), - filterRules: filterRules.filter((rule) => rule.columnId !== id2) + columns: nextColumns, + rows: nextRows, + filters: nextFilters + }) + }); + } + undo(prevState) { + super.onUndo(); + const { columns, rows, filters } = prevState.model; + const nextColumns = [...columns]; + nextColumns.splice( + this.deletedColumn.arrIndex, + 0, + this.deletedColumn.column + ); + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = (0, import_lodash12.cloneDeep)(cells); + const cellsToAdd = this.deletedCells.filter( + (cell) => cell.rowId === row.id + ); + cellsToAdd.forEach((cell) => { + nextCells.splice(cell.arrIndex, 0, cell.cell); + }); + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); + }); + const nextFilters = [...filters]; + this.deletedFilters.forEach((filter3) => { + nextFilters.splice(filter3.arrIndex, 0, filter3.filter); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: nextColumns, + rows: nextRows, + filters: nextFilters }) }); } @@ -52887,55 +58713,17 @@ var ColumnDeleteCommand = class extends TableStateCommand { super.onRedo(); return this.execute(prevState); } - undo(prevState) { - super.onUndo(); - const { columns, headerCells, bodyCells, footerCells, filterRules } = prevState.model; - const updatedColumns = [...columns]; - updatedColumns.splice( - this.deletedColumn.arrIndex, - 0, - this.deletedColumn.column - ); - const updatedHeaderCells = [...headerCells]; - this.deletedHeaderCells.forEach((cell) => { - updatedHeaderCells.splice(cell.arrIndex, 0, cell.cell); - }); - const updatedBodyCells = [...bodyCells]; - this.deletedBodyCells.forEach((cell) => { - updatedBodyCells.splice(cell.arrIndex, 0, cell.cell); - }); - const updatedFooterCells = [...footerCells]; - this.deletedFooterCells.forEach((cell) => { - updatedFooterCells.splice(cell.arrIndex, 0, cell.cell); - }); - const updatedFilterRules = [...filterRules]; - this.deletedFilterRules.forEach((rule) => { - updatedFilterRules.splice(rule.arrIndex, 0, rule.rule); - }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - columns: updatedColumns, - headerCells: updatedHeaderCells, - bodyCells: updatedBodyCells, - footerCells: updatedFooterCells, - filterRules: updatedFilterRules - }) - }); - } }; -// src/shared/commands/column-update-command.ts -var ColumnUpdateCommand = class extends TableStateCommand { - constructor(columnId, key, options) { - const { shouldSortRows = false, value } = options || {}; +// src/shared/loom-state/commands/column-update-command.ts +var import_lodash13 = __toESM(require_lodash()); +var ColumnUpdateCommand = class extends loom_state_command_default { + constructor(columnId, data, options) { + const { shouldSortRows = false, isPartial = true } = options || {}; super(shouldSortRows); - __publicField(this, "columnId"); - __publicField(this, "key"); - __publicField(this, "value"); - __publicField(this, "previousValue"); this.columnId = columnId; - this.key = key; - this.value = value; + this.data = data; + this.isPartial = isPartial; } execute(prevState) { super.onExecute(); @@ -52943,398 +58731,149 @@ var ColumnUpdateCommand = class extends TableStateCommand { const column = columns.find((column2) => column2.id === this.columnId); if (!column) throw new ColumNotFoundError(this.columnId); - this.previousValue = column[this.key]; + const nextColumns = columns.map((column2) => { + if (column2.id === this.columnId) { + this.prevColumn = (0, import_lodash13.cloneDeep)(column2); + let newColumn = this.data; + if (this.isPartial) + newColumn = __spreadValues(__spreadValues({}, column2), this.data); + this.nextColumn = newColumn; + return newColumn; + } + return column2; + }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - columns: prevState.model.columns.map((column2) => { - const isBoolean2 = typeof column2[this.key] === "boolean"; - if (!isBoolean2 && this.value === void 0) - throw new Error( - "a value must be provided when the column expects a non-boolean value" - ); - if (column2.id === this.columnId) { - return __spreadProps(__spreadValues({}, column2), { - [this.key]: isBoolean2 ? !column2[this.key] : this.value - }); - } - return column2; - }) + columns: nextColumns + }) + }); + } + undo(prevState) { + super.onUndo(); + const { columns } = prevState.model; + const nextColumns = columns.map((column) => { + if (column.id === this.prevColumn.id) { + return this.prevColumn; + } + return column; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: nextColumns }) }); } redo(prevState) { super.onRedo(); - return this.execute(prevState); - } - undo(prevState) { - super.onUndo(); + const { columns } = prevState.model; + const nextColumns = columns.map((column) => { + if (column.id === this.columnId) { + return this.nextColumn; + } + return column; + }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - columns: prevState.model.columns.map((column) => { - if (column.id === this.columnId) { - return __spreadProps(__spreadValues({}, column), { - [this.key]: this.previousValue - }); - } - return column; - }) + columns: nextColumns }) }); } }; -// src/shared/commands/column-type-update-command.ts -var ColumnTypeUpdateCommand = class extends TableStateCommand { +// src/shared/loom-state/commands/column-type-update-command.ts +var import_lodash14 = __toESM(require_lodash()); +var ColumnTypeUpdateCommand = class extends loom_state_command_default { constructor(id2, type) { super(); - __publicField(this, "columnId"); - __publicField(this, "type"); - __publicField(this, "previousType"); - __publicField(this, "deletedFilterRules", []); - __publicField(this, "previousFunctionType"); - __publicField(this, "newFunctionType"); - __publicField(this, "updatedBodyCellTagIds", { - current: [], - previous: [] - }); - __publicField(this, "updatedBodyCellMarkdown", { - current: [], - previous: [] - }); - __publicField(this, "addedTags", []); - this.columnId = id2; - this.type = type; - } - fromNumberOrCurrency(columns) { - return columns.map((column) => { - if (column.id === this.columnId) { - if (isNumberFunction(column.functionType)) { - this.previousFunctionType = column.functionType; - this.newFunctionType = "none" /* NONE */; - return __spreadProps(__spreadValues({}, column), { - functionType: "none" /* NONE */ - }); - } - } - return column; - }); - } - fromTagOrMultiTag(bodyCells) { - return bodyCells.map((cell) => { - if (cell.columnId === this.columnId) { - if (cell.tagIds.length > 0) { - this.updatedBodyCellTagIds.previous.push({ - cellId: cell.id, - tagIds: [...cell.tagIds] - }); - this.updatedBodyCellTagIds.current.push({ - cellId: cell.id, - tagIds: [] - }); - return __spreadProps(__spreadValues({}, cell), { - tagIds: [] - }); - } - } - return cell; - }); - } - fromDateToText(column, bodyCells) { - return bodyCells.map((cell) => { - const { dateTime } = cell; - if (cell.columnId === column.id) { - if (dateTime !== null) { - const dateString = unixTimeToDateString( - dateTime, - column.dateFormat - ); - this.updatedBodyCellMarkdown.previous.push({ - cellId: cell.id, - markdown: cell.markdown - }); - this.updatedBodyCellMarkdown.current.push({ - cellId: cell.id, - markdown: dateString - }); - return __spreadProps(__spreadValues({}, cell), { - markdown: dateString - }); - } - } - return cell; - }); - } - toTag(columns, bodyCells) { - const newColumns = structuredClone(columns); - let newBodyCells = structuredClone(bodyCells); - newBodyCells = newBodyCells.map((cell) => { - if (cell.columnId === this.columnId) { - if (cell.markdown !== "") { - const tagIds = []; - cell.markdown.split(",").forEach((markdown) => { - const column = newColumns.find( - (column2) => column2.id === this.columnId - ); - if (!column) - throw new ColumNotFoundError(this.columnId); - const existingTag = column.tags.find( - (tag) => tag.markdown === markdown - ); - if (tagIds.length === 0) { - if (existingTag) { - tagIds.push(existingTag.id); - } else { - const tag = createTag(markdown); - this.addedTags.push(structuredClone(tag)); - column.tags.push(tag); - tagIds.push(tag.id); - } - } else { - if (!existingTag) { - const tag = createTag(markdown); - this.addedTags.push(structuredClone(tag)); - column.tags.push(tag); - } - } - }); - this.updatedBodyCellTagIds.previous.push({ - cellId: cell.id, - tagIds: [] - }); - this.updatedBodyCellTagIds.current.push({ - cellId: cell.id, - tagIds - }); - return __spreadProps(__spreadValues({}, cell), { - tagIds - }); - } - } - return cell; - }); - return { - columnsResult: newColumns, - bodyCellsResult: newBodyCells + this.deletedFilters = []; + this.updatedCells = { + previous: [], + next: [] }; - } - toMultiTag(columns, bodyCells) { - const newColumns = structuredClone(columns); - let newBodyCells = structuredClone(bodyCells); - newBodyCells = newBodyCells.map((cell) => { - if (cell.columnId === this.columnId) { - if (cell.markdown !== "") { - const tagIds = []; - cell.markdown.split(",").forEach((markdown) => { - const column = newColumns.find( - (column2) => column2.id === this.columnId - ); - if (!column) - throw new ColumNotFoundError(this.columnId); - const existingTag = column.tags.find( - (tag) => tag.markdown === markdown - ); - if (existingTag) { - tagIds.push(existingTag.id); - } else { - const tag = createTag(markdown); - this.addedTags.push(structuredClone(tag)); - column.tags.push(tag); - tagIds.push(tag.id); - } - }); - this.updatedBodyCellTagIds.previous.push({ - cellId: cell.id, - tagIds: [] - }); - this.updatedBodyCellTagIds.current.push({ - cellId: cell.id, - tagIds - }); - return __spreadProps(__spreadValues({}, cell), { - tagIds - }); - } - } - return cell; - }); - return { columnsResult: newColumns, bodyCellsResult: newBodyCells }; - } - fromMultiTagToTag(bodyCells) { - return bodyCells.map((cell) => { - if (cell.columnId === this.columnId) { - if (cell.tagIds.length > 0) { - this.updatedBodyCellTagIds.previous.push({ - cellId: cell.id, - tagIds: [...cell.tagIds] - }); - this.updatedBodyCellTagIds.current.push({ - cellId: cell.id, - tagIds: [cell.tagIds[0]] - }); - return __spreadProps(__spreadValues({}, cell), { - tagIds: [cell.tagIds[0]] - }); - } - } - return cell; - }); - } - toCheckbox(bodyCells) { - return bodyCells.map((cell) => { - if (cell.columnId === this.columnId) { - if (!isCheckbox(cell.markdown)) { - this.updatedBodyCellMarkdown.previous.push({ - cellId: cell.id, - markdown: cell.markdown - }); - this.updatedBodyCellMarkdown.current.push({ - cellId: cell.id, - markdown: CHECKBOX_MARKDOWN_UNCHECKED - }); - return __spreadProps(__spreadValues({}, cell), { - markdown: CHECKBOX_MARKDOWN_UNCHECKED - }); - } - } - return cell; - }); + this.addedTags = []; + this.id = id2; + this.nextType = type; } execute(prevState) { super.onExecute(); - const { columns, bodyCells, filterRules } = prevState.model; - const column = columns.find((column2) => column2.id === this.columnId); + const { columns, rows, filters } = prevState.model; + const column = columns.find((column2) => column2.id === this.id); if (!column) - throw new ColumNotFoundError(this.columnId); - this.previousType = column.type; - if (this.previousType === this.type) + throw new ColumNotFoundError(this.id); + const { type } = column; + if (type === this.nextType) return prevState; - let newColumns = structuredClone(columns); - let newBodyCells = structuredClone(bodyCells); - if (this.previousType === "multi-tag" /* MULTI_TAG */ && this.type !== "tag" /* TAG */ || this.previousType === "tag" /* TAG */ && this.type !== "multi-tag" /* MULTI_TAG */) { - newBodyCells = this.fromTagOrMultiTag(newBodyCells); - } else if (this.previousType !== "multi-tag" /* MULTI_TAG */ && this.type === "tag" /* TAG */) { - const { columnsResult, bodyCellsResult } = this.toTag( - newColumns, - newBodyCells - ); - newColumns = columnsResult; - newBodyCells = bodyCellsResult; - } else if (this.previousType !== "tag" /* TAG */ && this.type === "multi-tag" /* MULTI_TAG */) { - const { columnsResult, bodyCellsResult } = this.toMultiTag( - newColumns, - newBodyCells - ); - newColumns = columnsResult; - newBodyCells = bodyCellsResult; - } else if (this.previousType === "multi-tag" /* MULTI_TAG */ && this.type === "tag" /* TAG */) { - newBodyCells = this.fromMultiTagToTag(newBodyCells); - } else if (this.type === "checkbox" /* CHECKBOX */) { - newBodyCells = this.toCheckbox(newBodyCells); - } else if (this.previousType === "date" /* DATE */ && this.type === "text" /* TEXT */) { - newBodyCells = this.fromDateToText(column, newBodyCells); + this.previousType = column.type; + let nextColumns = (0, import_lodash14.cloneDeep)(columns); + let nextRows = (0, import_lodash14.cloneDeep)(rows); + if (this.previousType === "multi-tag" /* MULTI_TAG */ && this.nextType !== "tag" /* TAG */ || this.previousType === "tag" /* TAG */ && this.nextType !== "multi-tag" /* MULTI_TAG */) { + nextRows = this.fromTagOrMultiTag(nextRows); + } else if (this.previousType !== "multi-tag" /* MULTI_TAG */ && this.nextType === "tag" /* TAG */) { + nextRows = this.toTag(nextColumns, nextRows); + } else if (this.previousType !== "tag" /* TAG */ && this.nextType === "multi-tag" /* MULTI_TAG */) { + nextRows = this.toMultiTag(nextColumns, nextRows); + } else if (this.previousType === "multi-tag" /* MULTI_TAG */ && this.nextType === "tag" /* TAG */) { + nextRows = this.fromMultiTagToTag(nextRows); + } else if (this.nextType === "checkbox" /* CHECKBOX */) { + nextRows = this.toCheckbox(nextRows); + } else if (this.previousType === "date" /* DATE */ && this.nextType === "text" /* TEXT */) { + nextRows = this.fromDateToText(column, nextRows); } - if (this.previousType === "number" /* NUMBER */ || this.previousType === "currency" /* CURRENCY */) { - newColumns = this.fromNumberOrCurrency(newColumns); + if (this.previousType === "number" /* NUMBER */) { + nextColumns = this.fromNumber(nextColumns); } - newColumns = newColumns.map((column2) => { - if (column2.id === this.columnId) { + nextColumns = nextColumns.map((column2) => { + if (column2.id === this.id) { return __spreadProps(__spreadValues({}, column2), { - type: this.type + type: this.nextType }); } return column2; }); - const shouldFilterRule = (rule) => rule.columnId !== this.columnId; - const filterRulesToDelete = filterRules.filter( - (rule) => !shouldFilterRule(rule) - ); - this.deletedFilterRules = filterRulesToDelete.map((rule) => ({ - arrIndex: filterRules.indexOf(rule), - rule: structuredClone(rule) - })); - const newFilterRules = filterRules.filter(shouldFilterRule); + const nextFilters = filters.filter((filter3) => { + if (filter3.columnId === this.id) { + this.deletedFilters.push({ + arrIndex: filters.indexOf(filter3), + filter: (0, import_lodash14.cloneDeep)(filter3) + }); + return false; + } + return true; + }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - columns: newColumns, - bodyCells: newBodyCells, - filterRules: newFilterRules - }) - }); - } - redo(prevState) { - super.onRedo(); - const { columns, bodyCells, filterRules } = prevState.model; - const newBodyCells = bodyCells.map((cell) => { - const updatedCellTagIds = this.updatedBodyCellTagIds.current.find( - (c2) => c2.cellId === cell.id - ); - if (updatedCellTagIds) { - return __spreadProps(__spreadValues({}, cell), { - tagIds: updatedCellTagIds.tagIds - }); - } - const updatedCellMarkdown = this.updatedBodyCellMarkdown.current.find( - (c2) => c2.cellId === cell.id - ); - if (updatedCellMarkdown) { - return __spreadProps(__spreadValues({}, cell), { - markdown: updatedCellMarkdown.markdown - }); - } - return cell; - }); - const newColumns = columns.map((column) => { - if (column.id === this.columnId) { - return __spreadProps(__spreadValues({}, column), { - type: this.type, - functionType: this.newFunctionType ? this.newFunctionType : column.functionType, - tags: [...column.tags, ...this.addedTags] - }); - } - return column; - }); - const newFilterRules = filterRules.filter( - (rule) => !this.deletedFilterRules.find((r2) => r2.rule.id === rule.id) - ); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - columns: newColumns, - bodyCells: newBodyCells, - filterRules: newFilterRules + columns: nextColumns, + rows: nextRows, + filters: nextFilters }) }); } undo(prevState) { super.onUndo(); - const { columns, bodyCells, filterRules } = prevState.model; - const newBodyCells = bodyCells.map((cell) => { - const updatedCellTagIds = this.updatedBodyCellTagIds.previous.find( - (c2) => c2.cellId === cell.id - ); - if (updatedCellTagIds) { - return __spreadProps(__spreadValues({}, cell), { - tagIds: updatedCellTagIds.tagIds - }); - } - const updatedCellMarkdown = this.updatedBodyCellMarkdown.previous.find( - (c2) => c2.cellId === cell.id - ); - if (updatedCellMarkdown) { - return __spreadProps(__spreadValues({}, cell), { - markdown: updatedCellMarkdown.markdown - }); - } - return cell; + const { columns, rows, filters } = prevState.model; + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + const nextCell = this.updatedCells.previous.find( + (c2) => c2.id === cell.id + ); + if (nextCell) + return nextCell; + return cell; + }); + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); }); - const newFilterRules = structuredClone(filterRules); - this.deletedFilterRules.forEach((r2) => { - const { arrIndex, rule } = r2; - newFilterRules.splice(arrIndex, 0, rule); + const nextFilters = (0, import_lodash14.cloneDeep)(filters); + this.deletedFilters.forEach((f3) => { + const { arrIndex, filter: filter3 } = f3; + nextFilters.splice(arrIndex, 0, filter3); }); - const newColumns = columns.map((column) => { - if (column.id === this.columnId) { + const nextColumns = columns.map((column) => { + if (column.id === this.id) { return __spreadProps(__spreadValues({}, column), { - functionType: this.previousFunctionType ? this.previousFunctionType : column.functionType, + calculationType: this.previousCalculationType ? this.previousCalculationType : column.calculationType, type: this.previousType, tags: column.tags.filter( (t2) => this.addedTags.find( @@ -53347,18 +58886,252 @@ var ColumnTypeUpdateCommand = class extends TableStateCommand { }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - columns: newColumns, - bodyCells: newBodyCells, - filterRules: newFilterRules + columns: nextColumns, + rows: nextRows, + filters: nextFilters }) }); } + redo(prevState) { + super.onRedo(); + const { columns, rows, filters } = prevState.model; + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + const nextCell = this.updatedCells.next.find( + (c2) => c2.id === cell.id + ); + if (nextCell) + return nextCell; + return cell; + }); + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); + }); + const nextColumns = columns.map((column) => { + if (column.id === this.id) { + return __spreadProps(__spreadValues({}, column), { + type: this.nextType, + calculationType: this.nextCalculationType ? this.nextCalculationType : column.calculationType, + tags: [...column.tags, ...this.addedTags] + }); + } + return column; + }); + const nextFilters = filters.filter( + (filter3) => !this.deletedFilters.find((f3) => f3.filter.id === filter3.id) + ); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: nextColumns, + rows: nextRows, + filters: nextFilters + }) + }); + } + fromNumber(prevColumns) { + return prevColumns.map((column) => { + const { id: id2, calculationType } = column; + if (id2 === this.id) { + if (isNumberCalcuation(calculationType)) { + this.previousCalculationType = calculationType; + this.nextCalculationType = "none" /* NONE */; + return __spreadProps(__spreadValues({}, column), { + calculationType: "none" /* NONE */ + }); + } + } + return column; + }); + } + fromTagOrMultiTag(prevRows) { + return prevRows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + if (cell.columnId === this.id) { + if (cell.tagIds.length > 0) { + const updatedCell = __spreadProps(__spreadValues({}, cell), { + tagIds: [] + }); + this.updatedCells.previous.push((0, import_lodash14.cloneDeep)(cell)); + this.updatedCells.next.push(updatedCell); + return updatedCell; + } + } + return cell; + }); + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); + }); + } + fromDateToText(column, prevRows) { + return prevRows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + const { dateTime } = cell; + if (cell.columnId === column.id) { + if (dateTime !== null) { + const dateString = unixTimeToDateString( + dateTime, + column.dateFormat + ); + const newCell = __spreadProps(__spreadValues({}, cell), { + content: dateString + }); + this.updatedCells.previous.push((0, import_lodash14.cloneDeep)(cell)); + this.updatedCells.next.push(newCell); + return newCell; + } + } + return cell; + }); + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); + }); + } + toTag(columns, prevRows) { + return prevRows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + const { columnId, content } = cell; + if (columnId === this.id) { + if (content !== "") { + const tagIds = []; + content.split(",").forEach((tagContent) => { + const column = columns.find( + (column2) => column2.id === this.id + ); + if (!column) + throw new ColumNotFoundError(this.id); + const existingTag = column.tags.find( + (tag) => tag.content === tagContent + ); + if (tagIds.length === 0) { + if (existingTag) { + tagIds.push(existingTag.id); + } else { + const tag = createTag(tagContent); + this.addedTags.push((0, import_lodash14.cloneDeep)(tag)); + column.tags.push(tag); + tagIds.push(tag.id); + } + } else { + if (!existingTag) { + const tag = createTag(tagContent); + this.addedTags.push((0, import_lodash14.cloneDeep)(tag)); + column.tags.push(tag); + } + } + }); + const newCell = __spreadProps(__spreadValues({}, cell), { + tagIds + }); + this.updatedCells.previous.push((0, import_lodash14.cloneDeep)(cell)); + this.updatedCells.next.push(newCell); + return newCell; + } + } + return cell; + }); + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); + }); + } + toMultiTag(columns, prevRows) { + return prevRows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + const { columnId, content } = cell; + if (columnId === this.id) { + if (content !== "") { + const tagIds = []; + content.split(",").forEach((tagContent) => { + const column = columns.find( + (column2) => column2.id === this.id + ); + if (!column) + throw new ColumNotFoundError(this.id); + const existingTag = column.tags.find( + (tag) => tag.content === tagContent + ); + if (existingTag) { + tagIds.push(existingTag.id); + } else { + const tag = createTag(tagContent); + this.addedTags.push((0, import_lodash14.cloneDeep)(tag)); + column.tags.push(tag); + tagIds.push(tag.id); + } + }); + const newCell = __spreadProps(__spreadValues({}, cell), { + tagIds + }); + this.updatedCells.previous.push((0, import_lodash14.cloneDeep)(cell)); + this.updatedCells.next.push(newCell); + return newCell; + } + } + return cell; + }); + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); + }); + } + fromMultiTagToTag(prevRows) { + return prevRows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + const { columnId, tagIds } = cell; + if (columnId === this.id) { + if (tagIds.length > 0) { + const newCell = __spreadProps(__spreadValues({}, cell), { + tagIds: [tagIds[0]] + }); + this.updatedCells.previous.push((0, import_lodash14.cloneDeep)(cell)); + this.updatedCells.next.push(newCell); + return newCell; + } + } + return cell; + }); + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); + }); + } + toCheckbox(prevRows) { + return prevRows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + const { columnId, content } = cell; + if (columnId === this.id) { + if (!isCheckbox(content)) { + const newCell = __spreadProps(__spreadValues({}, cell), { + content: CHECKBOX_MARKDOWN_UNCHECKED2 + }); + this.updatedCells.previous.push((0, import_lodash14.cloneDeep)(cell)); + this.updatedCells.next.push(newCell); + return newCell; + } + } + return cell; + }); + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); + }); + } }; -// src/shared/table-state/use-column.ts +// src/react/loom-app/app/hooks/use-column.ts var useColumn = () => { const logger = useLogger(); - const { doCommand } = useTableState(); + const { doCommand } = useLoomState(); function handleNewColumnClick() { logger("handleNewColumnClick"); doCommand(new ColumnAddCommand()); @@ -53370,16 +59143,32 @@ var useColumn = () => { }); doCommand(new ColumnTypeUpdateCommand(columnId, type)); } + function handleColumnContentChange(columnId, value) { + logger("handleColumnContentChange", { + columnId, + value + }); + doCommand( + new ColumnUpdateCommand(columnId, { + content: value + }) + ); + } function handleColumnSortClick(columnId, sortDir) { logger("handleColumnSortClick", { columnId, sortDir }); doCommand( - new ColumnUpdateCommand(columnId, "sortDir", { - value: sortDir, - shouldSortRows: true - }) + new ColumnUpdateCommand( + columnId, + { + sortDir + }, + { + shouldSortRows: true + } + ) ); } function handleHorizontalPaddingClick(columnId, padding) { @@ -53388,8 +59177,8 @@ var useColumn = () => { padding }); doCommand( - new ColumnUpdateCommand(columnId, "horizontalPadding", { - value: padding + new ColumnUpdateCommand(columnId, { + horizontalPadding: padding }) ); } @@ -53399,70 +59188,140 @@ var useColumn = () => { padding }); doCommand( - new ColumnUpdateCommand(columnId, "verticalPadding", { - value: padding + new ColumnUpdateCommand(columnId, { + verticalPadding: padding }) ); } - function handleAspectRatioClick(columnId, aspectRatio) { - logger("handleVerticalPaddingClick", { + function handleAspectRatioClick(columnId, ratio) { + logger("handleAspectRatioClick", { columnId, - aspectRatio + ratio }); doCommand( - new ColumnUpdateCommand(columnId, "aspectRatio", { - value: aspectRatio + new ColumnUpdateCommand(columnId, { + aspectRatio: ratio + }) + ); + } + function handleColumnToggle(columnId, isVisible) { + logger("handleColumnToggle", { + columnId + }); + doCommand( + new ColumnUpdateCommand(columnId, { + isVisible + }) + ); + } + function handleColumnHideClick(columnId) { + logger("handleColumnHideClick", { + columnId + }); + doCommand( + new ColumnUpdateCommand(columnId, { + isVisible: false }) ); } - const handleColumnToggle = import_react91.default.useCallback( - (columnId) => { - logger("handleColumnToggle", { - columnId - }); - doCommand(new ColumnUpdateCommand(columnId, "isVisible")); - }, - [doCommand, logger] - ); function handleColumnDeleteClick(columnId) { logger("handleColumnDeleteClick", { columnId }); doCommand(new ColumnDeleteCommand({ id: columnId })); } - function handleFunctionTypeChange(columnId, functionType) { - logger("handleFunctionTypeChange", { + function handleCalculationTypeChange(columnId, calculationType) { + logger("handleCalculationTypeChange", { columnId, - functionType + calculationType }); doCommand( - new ColumnUpdateCommand(columnId, "functionType", { - value: functionType - }) + new ColumnUpdateCommand( + columnId, + { + calculationType + }, + {} + ) ); } - function handleCurrencyChange(columnId, currencyType) { - logger("handleCurrencyChange", { + function handleNumberPrefixChange(columnId, prefix2) { + logger("handleNumberPrefixChange", { columnId, prefix: prefix2 }); + doCommand( + new ColumnUpdateCommand( + columnId, + { + numberPrefix: prefix2 + }, + { + shouldSortRows: true + } + ) + ); + } + function handleNumberSeparatorChange(columnId, separator) { + logger("handleNumberSeparatorChange", { columnId, separator }); + doCommand( + new ColumnUpdateCommand( + columnId, + { + numberSeparator: separator + }, + { + shouldSortRows: true + } + ) + ); + } + function handleNumberSuffixChange(columnId, suffix) { + logger("handleNumberSuffixChange", { columnId, suffix }); + doCommand( + new ColumnUpdateCommand( + columnId, + { + numberSuffix: suffix + }, + { + shouldSortRows: true + } + ) + ); + } + function handleNumberFormatChange(columnId, format, options) { + logger("handleNumberFormatChange", { columnId, - currencyType + format, + options }); doCommand( - new ColumnUpdateCommand(columnId, "currencyType", { - value: currencyType, - shouldSortRows: true - }) + new ColumnUpdateCommand( + columnId, + __spreadValues({ + numberFormat: format + }, (options == null ? void 0 : options.currency) && { + currencyType: options.currency + }), + { + shouldSortRows: true + } + ) ); } - function handleDateFormatChange(columnId, dateFormat) { + function handleDateFormatChange(columnId, format) { logger("handleDateFormatChange", { columnId, - dateFormat + format }); doCommand( - new ColumnUpdateCommand(columnId, "dateFormat", { - value: dateFormat, - shouldSortRows: true - }) + new ColumnUpdateCommand( + columnId, + { + dateFormat: format + }, + { + shouldSortRows: true + } + ) ); } function handleSortRemoveClick(columnId) { @@ -53470,10 +59329,15 @@ var useColumn = () => { columnId }); doCommand( - new ColumnUpdateCommand(columnId, "sortDir", { - value: "default" /* NONE */, - shouldSortRows: true - }) + new ColumnUpdateCommand( + columnId, + { + sortDir: "default" /* NONE */ + }, + { + shouldSortRows: true + } + ) ); } function handleColumnWidthChange(columnId, width) { @@ -53482,10 +59346,15 @@ var useColumn = () => { width }); doCommand( - new ColumnUpdateCommand(columnId, "width", { - value: width, - shouldSortRows: true - }) + new ColumnUpdateCommand( + columnId, + { + width + }, + { + shouldSortRows: true + } + ) ); } function handleWrapContentToggle(columnId, shouldWrap) { @@ -53494,116 +59363,115 @@ var useColumn = () => { shouldWrap }); doCommand( - new ColumnUpdateCommand(columnId, "shouldWrapOverflow", { - value: shouldWrap, - shouldSortRows: true - }) + new ColumnUpdateCommand( + columnId, + { + shouldWrapOverflow: shouldWrap + }, + { + shouldSortRows: true + } + ) ); } return { - handleNewColumnClick, - handleColumnTypeClick, - handleColumnSortClick, - handleColumnToggle, - handleColumnDeleteClick, - handleCurrencyChange, - handleDateFormatChange, - handleSortRemoveClick, - handleColumnWidthChange, - handleWrapContentToggle, - handleFunctionTypeChange, - handleHorizontalPaddingClick, - handleVerticalPaddingClick, - handleAspectRatioClick + onColumnAddClick: handleNewColumnClick, + onColumnTypeClick: handleColumnTypeClick, + onColumnSortClick: handleColumnSortClick, + onColumnToggle: handleColumnToggle, + onColumnDeleteClick: handleColumnDeleteClick, + onNumberFormatChange: handleNumberFormatChange, + onNumberPrefixChange: handleNumberPrefixChange, + onNumberSeparatorChange: handleNumberSeparatorChange, + onNumberSuffixChange: handleNumberSuffixChange, + onDateFormatChange: handleDateFormatChange, + onSortRemoveClick: handleSortRemoveClick, + onColumnWidthChange: handleColumnWidthChange, + onWrapContentToggle: handleWrapContentToggle, + onCalculationTypeChange: handleCalculationTypeChange, + onHorizontalPaddingClick: handleHorizontalPaddingClick, + onVerticalPaddingClick: handleVerticalPaddingClick, + onAspectRatioClick: handleAspectRatioClick, + onColumnHideClick: handleColumnHideClick, + onColumnContentChange: handleColumnContentChange }; }; -// src/shared/commands/row-add-command.ts -var RowAddCommand = class extends TableStateCommand { +// src/shared/loom-state/commands/row-add-command.ts +var RowAddCommand = class extends loom_state_command_default { constructor() { super(true); - __publicField(this, "addedRow"); - __publicField(this, "addedBodyCells"); } execute(prevState) { super.onExecute(); - const { bodyRows, bodyCells, columns } = prevState.model; - this.addedRow = createBodyRow(bodyRows.length); - this.addedBodyCells = columns.map((column) => { + const { rows, columns } = prevState.model; + const cells = columns.map((column) => { const { id: id2, type } = column; - return createBodyCell(id2, this.addedRow.id, { + return createCell(id2, { cellType: type }); }); + this.addedRow = createRow(rows.length, { cells }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - bodyCells: [...bodyCells, ...this.addedBodyCells], - bodyRows: [...bodyRows, this.addedRow] - }) - }); - } - redo(prevState) { - super.onRedo(); - const { bodyRows, bodyCells } = prevState.model; - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - bodyCells: [...bodyCells, ...this.addedBodyCells], - bodyRows: [...bodyRows, this.addedRow] + rows: [...rows, this.addedRow] }) }); } undo(prevState) { super.onUndo(); - const { bodyRows, bodyCells } = prevState.model; + const { rows } = prevState.model; return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - bodyRows: bodyRows.filter((row) => row.id !== this.addedRow.id), - bodyCells: bodyCells.filter( - (cell) => cell.rowId !== this.addedRow.id - ) + rows: rows.filter((row) => row.id !== this.addedRow.id) + }) + }); + } + redo(prevState) { + super.onRedo(); + const { rows } = prevState.model; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + rows: [...rows, this.addedRow] }) }); } }; -// src/shared/commands/row-delete-command.ts -var RowDeleteCommand = class extends TableStateCommand { +// src/shared/loom-state/commands/row-delete-command.ts +var import_lodash15 = __toESM(require_lodash()); +var RowDeleteCommand = class extends loom_state_command_default { constructor(options) { super(); - __publicField(this, "rowId"); - __publicField(this, "last"); - __publicField(this, "deletedRow"); - __publicField(this, "deletedCells"); - __publicField(this, "previousBodyRows"); const { id: id2, last: last2 } = options; if (id2 === void 0 && last2 === void 0) - throw new DeleteCommandArgumentsError(); + throw new CommandArgumentsError("delete"); this.rowId = id2; this.last = last2; } execute(prevState) { super.onExecute(); - const { bodyRows, bodyCells } = prevState.model; - if (bodyRows.length === 0) + const { rows } = prevState.model; + if (rows.length === 0) return prevState; let id2 = this.rowId; if (this.last) - id2 = bodyRows[bodyRows.length - 1].id; - const rowToDelete = bodyRows.find((row) => row.id === id2); + id2 = rows[rows.length - 1].id; + const rowToDelete = rows.find((row) => row.id === id2); if (!rowToDelete) throw new RowNotFoundError(id2); this.deletedRow = { - arrIndex: bodyRows.indexOf(rowToDelete), - row: structuredClone(rowToDelete) + arrIndex: rows.indexOf(rowToDelete), + row: (0, import_lodash15.cloneDeep)(rowToDelete) }; - let newBodyRows = bodyRows.filter((row) => row.id !== id2); - this.previousBodyRows = newBodyRows.filter((row) => row.index > this.deletedRow.row.index).map((row) => { + let newRows = rows.filter((row) => row.id !== id2); + this.previousRows = newRows.filter((row) => row.index > this.deletedRow.row.index).map((row) => { return { id: row.id, index: row.index }; }); - newBodyRows = newBodyRows.map((row) => { + newRows = newRows.map((row) => { if (row.index > this.deletedRow.row.index) { return __spreadProps(__spreadValues({}, row), { index: row.index - 1 @@ -53611,30 +59479,17 @@ var RowDeleteCommand = class extends TableStateCommand { } return row; }); - const cellsToDelete = bodyCells.filter((cell) => cell.rowId === id2); - this.deletedCells = cellsToDelete.map((cell) => ({ - arrIndex: bodyCells.indexOf(cell), - cell: structuredClone(cell) - })); - const newBodyCells = bodyCells.filter((cell) => cell.rowId !== id2); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - bodyRows: newBodyRows, - bodyCells: newBodyCells + rows: newRows }) }); } - redo(prevState) { - super.onRedo(); - return this.execute(prevState); - } undo(prevState) { super.onUndo(); - const { bodyRows, bodyCells } = prevState.model; - const updatedBodyRows = [...bodyRows].map((row) => { - const wasUpdated = this.previousBodyRows.find( - (r2) => r2.id === row.id - ); + const { rows } = prevState.model; + const nextRows = [...rows].map((row) => { + const wasUpdated = this.previousRows.find((r2) => r2.id === row.id); if (wasUpdated) { return __spreadProps(__spreadValues({}, row), { index: wasUpdated.index @@ -53642,30 +59497,132 @@ var RowDeleteCommand = class extends TableStateCommand { } return row; }); - updatedBodyRows.splice( - this.deletedRow.arrIndex, - 0, - this.deletedRow.row - ); - const updatedBodyCells = [...bodyCells]; - this.deletedCells.forEach((cell) => { - updatedBodyCells.splice(cell.arrIndex, 0, cell.cell); + nextRows.splice(this.deletedRow.arrIndex, 0, this.deletedRow.row); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + rows: nextRows + }) + }); + } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } +}; + +// src/react/loom-app/app/hooks/use-row.ts +var import_react49 = __toESM(require_react()); + +// src/shared/loom-state/commands/row-insert-command.ts +var RowInsertCommand = class extends loom_state_command_default { + constructor(rowId, insert2) { + super(); + this.rowId = rowId; + this.insert = insert2; + } + execute(prevState) { + super.onExecute(); + const { rows, columns } = prevState.model; + const index = rows.findIndex((row) => row.id === this.rowId); + if (index === -1) + throw new RowNotFoundError(this.rowId); + const insertIndex = this.insert === "above" ? index : index + 1; + const cells = columns.map((column) => { + const { id: id2, type } = column; + return createCell(id2, { + cellType: type + }); + }); + const createdRow = createRow(insertIndex, { cells }); + this.addedRow = createdRow; + this.originalRowOrder = rows.map((row) => ({ + id: row.id, + index: row.index + })); + const updatedRows = [ + ...rows.slice(0, insertIndex), + createdRow, + ...rows.slice(insertIndex) + ].map((row, i2) => __spreadProps(__spreadValues({}, row), { index: i2 })); + this.originalColumnSort = columns.map((column) => ({ + id: column.id, + sortDir: column.sortDir + })); + const updatedColumns = columns.map((column) => { + return __spreadProps(__spreadValues({}, column), { + sortDir: "default" /* NONE */ + }); }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - bodyRows: updatedBodyRows, - bodyCells: updatedBodyCells + columns: updatedColumns, + rows: updatedRows + }) + }); + } + undo(prevState) { + super.onUndo(); + const { rows, columns } = prevState.model; + const row = rows.find((row2) => row2.id === this.addedRow.id); + if (!row) + throw new RowNotFoundError(this.addedRow.id); + const updatedRows = rows.filter((row2) => row2.id !== this.addedRow.id).map((row2) => { + const original = this.originalRowOrder.find( + (r2) => r2.id === row2.id + ); + if (!original) + throw new RowNotFoundError(row2.id); + const { index } = original; + return __spreadProps(__spreadValues({}, row2), { + index + }); + }); + const updatedColumns = columns.map((column) => { + const oldColumn = this.originalColumnSort.find( + (c2) => c2.id === column.id + ); + if (!oldColumn) + throw new Error("Column not found"); + const { sortDir } = oldColumn; + return __spreadProps(__spreadValues({}, column), { + sortDir + }); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: updatedColumns, + rows: updatedRows + }) + }); + } + redo(prevState) { + super.onRedo(); + const { rows, columns } = prevState.model; + const insertIndex = this.addedRow.index; + const updatedRows = [ + ...rows.slice(0, insertIndex), + this.addedRow, + ...rows.slice(insertIndex) + ].map((row, i2) => __spreadProps(__spreadValues({}, row), { index: i2 })); + const updatedColumns = columns.map((column) => { + return __spreadProps(__spreadValues({}, column), { + sortDir: "default" /* NONE */ + }); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: updatedColumns, + rows: updatedRows }) }); } }; -// src/shared/table-state/use-row.ts -var import_react92 = __toESM(require_react()); +// src/react/loom-app/app/hooks/use-row.ts var useRow = () => { const logger = useLogger(); - const { doCommand } = useTableState(); - const handleRowDeleteClick = import_react92.default.useCallback( + const { doCommand, loomState } = useLoomState(); + const handleRowDeleteClick = import_react49.default.useCallback( (rowId) => { logger("handleRowDeleteClick", { rowId @@ -53678,212 +59635,192 @@ var useRow = () => { logger("handleNewRowClick"); doCommand(new RowAddCommand()); } + function handleRowInsertAboveClick(rowId) { + logger("handleRowInsertAboveClick", { + rowId + }); + if (confirmSortOrderChange(loomState)) { + doCommand(new RowInsertCommand(rowId, "above")); + } + } + function handleRowInsertBelowClick(rowId) { + logger("handleRowInsertBelowClick", { + rowId + }); + if (confirmSortOrderChange(loomState)) { + doCommand(new RowInsertCommand(rowId, "below")); + } + } return { - handleNewRowClick, - handleRowDeleteClick + onRowAddClick: handleNewRowClick, + onRowDeleteClick: handleRowDeleteClick, + onRowInsertAboveClick: handleRowInsertAboveClick, + onRowInsertBelowClick: handleRowInsertBelowClick }; }; -// src/shared/table-state/row-state-operations.ts -var rowLastEditedTime = (rows, rowId) => { - const row = rows.find((row2) => row2.id === rowId); - if (!row) - throw new RowNotFoundError(rowId); - return row.lastEditedTime; -}; -var rowLastEditedTimeUpdate = (rows, rowId, time = Date.now()) => { - return rows.map((row) => { - if (row.id === rowId) { - return __spreadProps(__spreadValues({}, row), { - lastEditedTime: time - }); - } - return row; - }); -}; +// src/react/loom-app/app/hooks/use-cell.ts +var import_react50 = __toESM(require_react()); -// src/shared/commands/cell-body-update-command.ts -var CellBodyUpdateCommand = class extends TableStateCommand { - constructor(cellId, rowId, key, value) { - super(true); - __publicField(this, "cellId"); - __publicField(this, "rowId"); - __publicField(this, "key"); - __publicField(this, "value"); - __publicField(this, "previousValue"); - __publicField(this, "previousEditedTime"); - this.cellId = cellId; - this.rowId = rowId; - this.key = key; - this.value = value; - } - execute(prevState) { - super.onExecute(); - const { bodyCells, bodyRows } = prevState.model; - const cell = bodyCells.find((cell2) => cell2.id === this.cellId); - if (!cell) - throw new CellNotFoundError({ - id: this.cellId - }); - this.previousValue = cell[this.key]; - this.previousEditedTime = rowLastEditedTime(bodyRows, this.rowId); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - bodyCells: bodyCells.map((cell2) => { - if (cell2.id === this.cellId) { - return __spreadProps(__spreadValues({}, cell2), { - [this.key]: this.value - }); - } - return cell2; - }), - bodyRows: rowLastEditedTimeUpdate(bodyRows, this.rowId) - }) - }); - } - redo(prevState) { - super.onRedo(); - return this.execute(prevState); - } - undo(prevState) { - super.onUndo(); - const { bodyCells, bodyRows } = prevState.model; - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - bodyCells: bodyCells.map((cell) => { - if (cell.id === this.cellId) { - return __spreadProps(__spreadValues({}, cell), { - [this.key]: this.previousValue - }); - } - return cell; - }), - bodyRows: rowLastEditedTimeUpdate( - bodyRows, - this.rowId, - this.previousEditedTime - ) - }) - }); - } -}; - -// src/shared/commands/cell-header-update-command.ts -var CellHeaderUpdateCommand = class extends TableStateCommand { - constructor(cellId, key, value) { +// src/shared/loom-state/commands/cell-body-update-command.ts +var import_lodash16 = __toESM(require_lodash()); +var CellBodyUpdateCommand = class extends loom_state_command_default { + constructor(id2, data, isPartial = true) { super(); - __publicField(this, "cellId"); - __publicField(this, "key"); - __publicField(this, "value"); - __publicField(this, "previousValue"); - this.cellId = cellId; - this.key = key; - this.value = value; + this.id = id2; + this.data = data; + this.isPartial = isPartial; } execute(prevState) { super.onExecute(); - const { headerCells } = prevState.model; - const cell = headerCells.find((cell2) => cell2.id === this.cellId); - if (!cell) - throw new CellNotFoundError({ - id: this.cellId + const { rows } = prevState.model; + const row = rows.find( + (row2) => row2.cells.find((cell) => cell.id === this.id) + ); + if (!row) + throw new RowNotFoundError(); + this.rowId = row.id; + this.previousEditedTime = row.lastEditedTime; + const nextRows = rows.map((row2) => { + const { cells } = row2; + const nextCells = cells.map((cell) => { + if (cell.id === this.id) { + this.prevCell = (0, import_lodash16.cloneDeep)(cell); + let newCell = this.data; + if (this.isPartial) + newCell = __spreadValues(__spreadValues({}, cell), this.data); + this.nextCell = newCell; + return newCell; + } + return cell; }); - this.previousValue = cell[this.key]; + if (row2.id === this.rowId) { + const newLastEditedTime = Date.now(); + this.nextLastEditedTime = newLastEditedTime; + return __spreadProps(__spreadValues({}, row2), { + lastEditedTime: newLastEditedTime, + cells: nextCells + }); + } + return row2; + }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - headerCells: headerCells.map((cell2) => { - if (cell2.id === this.cellId) { - return __spreadProps(__spreadValues({}, cell2), { - [this.key]: this.value - }); - } - return cell2; - }) + rows: nextRows + }) + }); + } + undo(prevState) { + super.onUndo(); + const { rows } = prevState.model; + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + if (cell.id === this.id) { + return this.prevCell; + } + return cell; + }); + if (row.id === this.rowId) { + return __spreadProps(__spreadValues({}, row), { + lastEditedTime: this.previousEditedTime, + cells: nextCells + }); + } + return row; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + rows: nextRows }) }); } redo(prevState) { super.onRedo(); - return this.execute(prevState); - } - undo(prevState) { - super.onUndo(); - const { headerCells } = prevState.model; + const { rows } = prevState.model; + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + if (cell.id === this.id) { + return this.nextCell; + } + return cell; + }); + if (row.id === this.rowId) { + return __spreadProps(__spreadValues({}, row), { + lastEditedTime: this.nextLastEditedTime, + cells: nextCells + }); + } + return row; + }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - headerCells: headerCells.map((cell) => { - if (cell.id === this.cellId) { - return __spreadProps(__spreadValues({}, cell), { - [this.key]: this.previousValue - }); - } - return cell; - }) + rows: nextRows }) }); } }; -// src/shared/table-state/use-cell.ts -var import_react93 = __toESM(require_react()); +// src/react/loom-app/app/hooks/use-cell.ts var useCell = () => { const logger = useLogger(); - const { doCommand } = useTableState(); - function handleHeaderCellContentChange(cellId, value) { - logger("handleCellContentChange", { - cellId, - markdown: value + const { doCommand } = useLoomState(); + function handleExternalLinkToggle(id2, value) { + logger("handleExternalLinkToggle", { + id: id2, + value }); - doCommand(new CellHeaderUpdateCommand(cellId, "markdown", value)); + doCommand( + new CellBodyUpdateCommand(id2, { + isExternalLink: value + }) + ); } - const handleBodyCellContentChange = import_react93.default.useCallback( - (cellId, rowId, value) => { + function handleCellContentChange(id2, value) { + logger("handleCellContentChange", { + id: id2, + value + }); + doCommand( + new CellBodyUpdateCommand(id2, { + content: value + }) + ); + } + const handleCellDateTimeChange = import_react50.default.useCallback( + (id2, value) => { logger("handleCellContentChange", { - cellId, - rowId, - markdown: value - }); - doCommand( - new CellBodyUpdateCommand(cellId, rowId, "markdown", value) - ); - }, - [logger, doCommand] - ); - const handleCellDateTimeChange = import_react93.default.useCallback( - (cellId, rowId, value) => { - logger("handleCellContentChange", { - cellId, - rowId, + id: id2, dateTime: value }); doCommand( - new CellBodyUpdateCommand(cellId, rowId, "dateTime", value) + new CellBodyUpdateCommand(id2, { + dateTime: value + }) ); }, [logger, doCommand] ); return { - handleHeaderCellContentChange, - handleBodyCellContentChange, - handleCellDateTimeChange + onCellDateTimeChange: handleCellDateTimeChange, + onCellContentChange: handleCellContentChange, + onExternalLinkToggle: handleExternalLinkToggle }; }; -// src/shared/commands/tag-delete-command.ts -var TagDeleteCommand = class extends TableStateCommand { +// src/shared/loom-state/commands/tag-delete-command.ts +var TagDeleteCommand = class extends loom_state_command_default { constructor(columnId, tagId) { - super(); - __publicField(this, "columnId"); - __publicField(this, "tagId"); - __publicField(this, "deletedTag"); - __publicField(this, "previousCellTagIds", []); + super(true); + this.previousCellTagIds = []; this.columnId = columnId; this.tagId = tagId; } execute(prevState) { super.onExecute(); - const { bodyCells, columns } = prevState.model; - const newColumns = columns.map((column) => { + const { rows, columns } = prevState.model; + const nextColumns = columns.map((column) => { if (column.id === this.columnId) { const tag = column.tags.find((tag2) => tag2.id === this.tagId); if (!tag) @@ -53898,33 +59835,37 @@ var TagDeleteCommand = class extends TableStateCommand { } return column; }); - const newBodyCells = bodyCells.map((cell) => { - if (cell.tagIds.includes(this.tagId)) { - this.previousCellTagIds.push({ - cellId: cell.id, - tagIds: [...cell.tagIds] - }); - return __spreadProps(__spreadValues({}, cell), { - tagIds: cell.tagIds.filter((tagId) => tagId !== this.tagId) - }); - } - return cell; + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + if (cell.tagIds.includes(this.tagId)) { + this.previousCellTagIds.push({ + cellId: cell.id, + tagIds: [...cell.tagIds] + }); + return __spreadProps(__spreadValues({}, cell), { + tagIds: cell.tagIds.filter( + (tagId) => tagId !== this.tagId + ) + }); + } + return cell; + }); + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - columns: newColumns, - bodyCells: newBodyCells + columns: nextColumns, + rows: nextRows }) }); } - redo(prevState) { - super.onRedo(); - return this.execute(prevState); - } undo(prevState) { super.onUndo(); - const { columns, bodyCells } = prevState.model; - const newColumns = columns.map((column) => { + const { columns, rows } = prevState.model; + const nextColumns = columns.map((column) => { if (column.id === this.columnId) { const updatedTags = [...column.tags]; updatedTags.splice( @@ -53938,35 +59879,40 @@ var TagDeleteCommand = class extends TableStateCommand { } return column; }); - const newBodyCells = bodyCells.map((cell) => { - const previousTagIds = this.previousCellTagIds.find( - (previousCellTagId) => previousCellTagId.cellId === cell.id - ); - if (previousTagIds) { - return __spreadProps(__spreadValues({}, cell), { - tagIds: previousTagIds.tagIds - }); - } - return cell; + const nextRows = rows.map((row) => { + const { cells } = row; + const newCells = cells.map((cell) => { + const previousTagIds = this.previousCellTagIds.find( + (previousCellTagId) => previousCellTagId.cellId === cell.id + ); + if (previousTagIds) { + return __spreadProps(__spreadValues({}, cell), { + tagIds: previousTagIds.tagIds + }); + } + return cell; + }); + return __spreadProps(__spreadValues({}, row), { + cells: newCells + }); }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - columns: newColumns, - bodyCells: newBodyCells + columns: nextColumns, + rows: nextRows }) }); } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } }; -// src/shared/commands/tag-update-command.ts -var TagUpdateCommand = class extends TableStateCommand { +// src/shared/loom-state/commands/tag-update-command.ts +var TagUpdateCommand = class extends loom_state_command_default { constructor(columnId, tagId, key, value) { - super(); - __publicField(this, "columnId"); - __publicField(this, "tagId"); - __publicField(this, "key"); - __publicField(this, "value"); - __publicField(this, "previousValue"); + super(true); this.columnId = columnId; this.tagId = tagId; this.key = key; @@ -54000,10 +59946,6 @@ var TagUpdateCommand = class extends TableStateCommand { }) }); } - redo(prevState) { - super.onRedo(); - return this.execute(prevState); - } undo(prevState) { super.onUndo(); const { columns } = prevState.model; @@ -54028,109 +59970,89 @@ var TagUpdateCommand = class extends TableStateCommand { }) }); } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } }; -// src/shared/commands/tag-add-command.ts -var TagAddCommand = class extends TableStateCommand { - constructor(cellId, columnId, rowId, markdown, color, isMultiTag) { - super(); - __publicField(this, "cellId"); - __publicField(this, "columnId"); - __publicField(this, "rowId"); - __publicField(this, "markdown"); - __publicField(this, "color"); - __publicField(this, "isMultiTag"); - __publicField(this, "previousEditedTime"); - __publicField(this, "newEditedTime"); - __publicField(this, "addedTag"); - __publicField(this, "previousCellTagIds"); - __publicField(this, "newCellTagIds"); +// src/shared/loom-state/commands/tag-add-command.ts +var TagAddCommand = class extends loom_state_command_default { + constructor(cellId, columnId, markdown, color, isMultiTag) { + super(true); this.cellId = cellId; this.columnId = columnId; - this.rowId = rowId; this.markdown = markdown; this.color = color; this.isMultiTag = isMultiTag; } execute(prevState) { super.onExecute(); - const { bodyRows, bodyCells, columns } = prevState.model; - this.addedTag = createTag(this.markdown, { + const { rows, columns } = prevState.model; + const row = rows.find( + (row2) => row2.cells.find((cell) => cell.id === this.cellId) + ); + if (!row) + throw new RowNotFoundError(); + this.previousEditedTime = row.lastEditedTime; + this.rowId = row.id; + const newTag = createTag(this.markdown, { color: this.color }); - const newColumns = columns.map((column) => { + this.addedTag = newTag; + const nextColumns = columns.map((column) => { if (column.id === this.columnId) { return __spreadProps(__spreadValues({}, column), { - tags: [...column.tags, this.addedTag] + tags: [...column.tags, newTag] }); } return column; }); - const newBodyCells = bodyCells.map((cell) => { - if (cell.id === this.cellId) { - this.previousCellTagIds = [...cell.tagIds]; - if (this.isMultiTag === false) { - if (cell.tagIds.length > 0) { - this.newCellTagIds = [this.addedTag.id]; - return __spreadProps(__spreadValues({}, cell), { - tagIds: this.newCellTagIds - }); + const nextRows = rows.map((row2) => { + const { cells } = row2; + const nextCells = cells.map((cell) => { + const { id: id2, tagIds } = cell; + if (id2 === this.cellId) { + this.previousCellTagIds = [...tagIds]; + let updatedTagIds = []; + if (this.isMultiTag === false) { + if (cell.tagIds.length > 0) { + updatedTagIds = [newTag.id]; + this.nextCellTagIds = updatedTagIds; + return __spreadProps(__spreadValues({}, cell), { + tagIds: updatedTagIds + }); + } } + updatedTagIds = [...tagIds, newTag.id]; + this.nextCellTagIds = updatedTagIds; + return __spreadProps(__spreadValues({}, cell), { + tagIds: updatedTagIds + }); } - this.newCellTagIds = [...cell.tagIds, this.addedTag.id]; - return __spreadProps(__spreadValues({}, cell), { - tagIds: [...cell.tagIds, this.addedTag.id] + return cell; + }); + if (row2.id === this.rowId) { + const newLastEditedTime = Date.now(); + this.nextEditedTime = newLastEditedTime; + return __spreadProps(__spreadValues({}, row2), { + lastEditedTime: newLastEditedTime, + cells: nextCells }); } - return cell; - }); - this.previousEditedTime = rowLastEditedTime(bodyRows, this.rowId); - this.newEditedTime = Date.now(); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - columns: newColumns, - bodyCells: newBodyCells, - bodyRows: rowLastEditedTimeUpdate( - bodyRows, - this.rowId, - this.newEditedTime - ) - }) - }); - } - redo(prevState) { - super.onRedo(); - const { bodyRows, columns, bodyCells } = prevState.model; - const newColumns = columns.map((column) => { - if (column.id === this.columnId) - return __spreadProps(__spreadValues({}, column), { - tags: [...column.tags, this.addedTag] - }); - return column; - }); - const newBodyCells = bodyCells.map((cell) => { - if (cell.id === this.cellId) - return __spreadProps(__spreadValues({}, cell), { - tagIds: this.newCellTagIds - }); - return cell; + return row2; }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - columns: newColumns, - bodyCells: newBodyCells, - bodyRows: rowLastEditedTimeUpdate( - bodyRows, - this.rowId, - this.newEditedTime - ) + columns: nextColumns, + rows: nextRows }) }); } undo(prevState) { super.onUndo(); - const { bodyRows, columns } = prevState.model; - const newColumns = columns.map((column) => { + const { rows, columns } = prevState.model; + const nextColumns = columns.map((column) => { if (column.id === this.columnId) { return __spreadProps(__spreadValues({}, column), { tags: column.tags.filter( @@ -54140,273 +60062,440 @@ var TagAddCommand = class extends TableStateCommand { } return column; }); - const newBodyCells = prevState.model.bodyCells.map((cell) => { - if (cell.id === this.cellId) { - return __spreadProps(__spreadValues({}, cell), { - tagIds: this.previousCellTagIds + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + if (cell.id === this.cellId) { + return __spreadProps(__spreadValues({}, cell), { + tagIds: this.previousCellTagIds + }); + } + return cell; + }); + if (row.id === this.rowId) { + return __spreadProps(__spreadValues({}, row), { + lastEditedTime: this.previousEditedTime, + cells: nextCells }); } - return cell; + return row; }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - columns: newColumns, - bodyCells: newBodyCells, - bodyRows: rowLastEditedTimeUpdate( - bodyRows, - this.rowId, - this.previousEditedTime - ) - }) - }); - } -}; - -// src/shared/commands/tag-cell-remove-command.ts -var TagCellRemoveCommand = class extends TableStateCommand { - constructor(cellId, rowId, tagId) { - super(); - __publicField(this, "cellId"); - __publicField(this, "rowId"); - __publicField(this, "tagId"); - __publicField(this, "previousEditedTime"); - __publicField(this, "previousTagIdIndex"); - this.cellId = cellId; - this.rowId = rowId; - this.tagId = tagId; - } - execute(prevState) { - super.onExecute(); - const { bodyCells, bodyRows } = prevState.model; - const newBodyCells = bodyCells.map((cell) => { - if (cell.id === this.cellId) { - this.previousTagIdIndex = cell.tagIds.indexOf(this.tagId); - const { tagIds } = cell; - return __spreadProps(__spreadValues({}, cell), { - tagIds: tagIds.filter((id2) => id2 !== this.tagId) - }); - } - return cell; - }); - this.previousEditedTime = rowLastEditedTime(bodyRows, this.rowId); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - bodyCells: newBodyCells, - bodyRows: rowLastEditedTimeUpdate(bodyRows, this.rowId) + columns: nextColumns, + rows: nextRows }) }); } redo(prevState) { super.onRedo(); - return this.execute(prevState); - } - undo(prevState) { - super.onUndo(); - const { bodyCells, bodyRows } = prevState.model; - const newBodyCells = bodyCells.map((cell) => { - if (cell.id === this.cellId) { - const newTagIds = [...cell.tagIds]; - newTagIds.splice(this.previousTagIdIndex, 0, this.tagId); - return __spreadProps(__spreadValues({}, cell), { - tagIds: newTagIds + const { rows, columns } = prevState.model; + const nextColumns = columns.map((column) => { + if (column.id === this.columnId) + return __spreadProps(__spreadValues({}, column), { + tags: [...column.tags, this.addedTag] + }); + return column; + }); + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + if (cell.id === this.cellId) + return __spreadProps(__spreadValues({}, cell), { + tagIds: this.nextCellTagIds + }); + return cell; + }); + if (row.id === this.rowId) { + return __spreadProps(__spreadValues({}, row), { + lastEditedTime: this.nextEditedTime, + cells: nextCells }); } - return cell; + return row; }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - bodyCells: newBodyCells, - bodyRows: rowLastEditedTimeUpdate( - bodyRows, - this.rowId, - this.previousEditedTime - ) + columns: nextColumns, + rows: nextRows }) }); } }; -// src/shared/commands/tag-cell-add-command.ts -var TagCellAddCommand = class extends TableStateCommand { - constructor(cellId, rowId, tagId, isMultiTag) { - super(); - __publicField(this, "cellId"); - __publicField(this, "rowId"); - __publicField(this, "tagId"); - __publicField(this, "isMultiTag"); - __publicField(this, "previousCellTagIds"); - __publicField(this, "previousEditedTime"); +// src/shared/loom-state/commands/tag-cell-remove-command.ts +var TagCellRemoveCommand = class extends loom_state_command_default { + constructor(cellId, tagId) { + super(true); + this.cellId = cellId; + this.tagId = tagId; + } + execute(prevState) { + super.onExecute(); + const { rows } = prevState.model; + const row = rows.find( + (row2) => row2.cells.find((cell) => cell.id === this.cellId) + ); + if (!row) + throw new RowNotFoundError(); + this.rowId = row.id; + this.previousEditedTime = row.lastEditedTime; + const nextRows = rows.map((row2) => { + const { cells } = row2; + const nextCells = cells.map((cell) => { + if (cell.id === this.cellId) { + const { tagIds } = cell; + this.previousTagIdIndex = tagIds.indexOf(this.tagId); + const nextTagIds = tagIds.filter((id2) => id2 !== this.tagId); + return __spreadProps(__spreadValues({}, cell), { + tagIds: nextTagIds + }); + } + return cell; + }); + if (row2.id === this.rowId) { + const newEditedTime = Date.now(); + this.nextEditedTime = newEditedTime; + return __spreadProps(__spreadValues({}, row2), { + lastEditedTime: newEditedTime, + cells: nextCells + }); + } + return row2; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + rows: nextRows + }) + }); + } + undo(prevState) { + super.onUndo(); + const { rows } = prevState.model; + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + if (cell.id === this.cellId) { + const { tagIds } = cell; + const nextTagIds = [...tagIds]; + nextTagIds.splice(this.previousTagIdIndex, 0, this.tagId); + return __spreadProps(__spreadValues({}, cell), { + tagIds: nextTagIds + }); + } + return cell; + }); + if (row.id === this.rowId) { + return __spreadProps(__spreadValues({}, row), { + lastEditedTime: this.previousEditedTime, + cells: nextCells + }); + } + return row; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + rows: nextRows + }) + }); + } + redo(prevState) { + super.onRedo(); + const { rows } = prevState.model; + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + if (cell.id === this.cellId) { + const { tagIds } = cell; + const nextTagIds = tagIds.filter((id2) => id2 !== this.tagId); + return __spreadProps(__spreadValues({}, cell), { + tagIds: nextTagIds + }); + } + return cell; + }); + if (row.id === this.rowId) { + return __spreadProps(__spreadValues({}, row), { + lastEditedTime: this.nextEditedTime, + cells: nextCells + }); + } + return row; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + rows: nextRows + }) + }); + } +}; + +// src/shared/loom-state/commands/tag-cell-add-command.ts +var TagCellAddCommand = class extends loom_state_command_default { + constructor(cellId, tagId, isMultiTag) { + super(true); this.cellId = cellId; - this.rowId = rowId; this.tagId = tagId; this.isMultiTag = isMultiTag; } execute(prevState) { super.onExecute(); - const { bodyCells, bodyRows } = prevState.model; - const newBodyCells = bodyCells.map((cell) => { - if (cell.id === this.cellId) { - this.previousCellTagIds = [...cell.tagIds]; - if (this.isMultiTag === false) { - if (cell.tagIds.length > 0) { - return __spreadProps(__spreadValues({}, cell), { - tagIds: [this.tagId] - }); + const { rows } = prevState.model; + const row = rows.find( + (row2) => row2.cells.find((cell) => cell.id === this.cellId) + ); + if (!row) + throw new RowNotFoundError(); + this.rowId = row.id; + this.previousEditedTime = row.lastEditedTime; + const nextRows = rows.map((row2) => { + const { cells } = row2; + const nextCells = cells.map((cell) => { + const { tagIds } = cell; + let updatedTagIds = []; + if (cell.id === this.cellId) { + this.previousCellTagIds = [...tagIds]; + if (this.isMultiTag === false) { + updatedTagIds = [this.tagId]; + this.nextCellTagIds = updatedTagIds; + if (tagIds.length > 0) { + return __spreadProps(__spreadValues({}, cell), { + tagIds: updatedTagIds + }); + } } + updatedTagIds = [...tagIds, this.tagId]; + this.nextCellTagIds = updatedTagIds; + return __spreadProps(__spreadValues({}, cell), { + tagIds: updatedTagIds + }); } - return __spreadProps(__spreadValues({}, cell), { - tagIds: [...cell.tagIds, this.tagId] + return cell; + }); + if (row2.id === this.rowId) { + const newLastEditedTime = Date.now(); + this.nextEditedTime = newLastEditedTime; + return __spreadProps(__spreadValues({}, row2), { + lastEditedTime: newLastEditedTime, + cells: nextCells }); } - return cell; + return row2; }); - this.previousEditedTime = rowLastEditedTime(bodyRows, this.rowId); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - bodyCells: newBodyCells, - bodyRows: rowLastEditedTimeUpdate(bodyRows, this.rowId) + rows: nextRows + }) + }); + } + undo(prevState) { + super.onUndo(); + const { rows } = prevState.model; + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + if (cell.id === this.cellId) { + return __spreadProps(__spreadValues({}, cell), { + tagIds: this.previousCellTagIds + }); + } + return cell; + }); + if (row.id === this.rowId) { + return __spreadProps(__spreadValues({}, row), { + lastEditedTime: this.previousEditedTime, + cells: nextCells + }); + } + return row; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + rows: nextRows }) }); } redo(prevState) { super.onRedo(); - return this.execute(prevState); - } - undo(prevState) { - super.onUndo(); - const { bodyCells, bodyRows } = prevState.model; - const newBodyCells = bodyCells.map((cell) => { - if (cell.id === this.cellId) { - return __spreadProps(__spreadValues({}, cell), { - tagIds: this.previousCellTagIds + const { rows } = prevState.model; + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + if (cell.id === this.cellId) { + return __spreadProps(__spreadValues({}, cell), { + tagIds: this.nextCellTagIds + }); + } + return cell; + }); + if (row.id === this.rowId) { + return __spreadProps(__spreadValues({}, row), { + lastEditedTime: this.nextEditedTime, + cells: nextCells }); } - return cell; + return row; }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - bodyCells: newBodyCells, - bodyRows: rowLastEditedTimeUpdate( - bodyRows, - this.rowId, - this.previousEditedTime - ) + rows: nextRows }) }); } }; -// src/shared/commands/tag-cell-multiple-remove-command.ts -var TagCellMultipleRemoveCommand = class extends TableStateCommand { - constructor(cellId, rowId, tagIds) { - super(); - __publicField(this, "cellId"); - __publicField(this, "rowId"); - __publicField(this, "tagIds"); - __publicField(this, "previousEditedTime"); - __publicField(this, "previousTagIds"); +// src/shared/loom-state/commands/tag-cell-multiple-remove-command.ts +var TagCellMultipleRemoveCommand = class extends loom_state_command_default { + constructor(cellId, tagIds) { + super(true); this.cellId = cellId; - this.rowId = rowId; this.tagIds = tagIds; } execute(prevState) { super.onExecute(); - const { bodyCells, bodyRows } = prevState.model; - const newBodyCells = bodyCells.map((cell) => { - if (cell.id === this.cellId) { - this.previousTagIds = [...cell.tagIds]; - return __spreadProps(__spreadValues({}, cell), { - tagIds: cell.tagIds.filter( + const { rows } = prevState.model; + const row = rows.find( + (row2) => row2.cells.find((cell) => cell.id === this.cellId) + ); + if (!row) + throw new RowNotFoundError(); + this.rowId = row.id; + this.previousEditedTime = row.lastEditedTime; + const nextRows = rows.map((row2) => { + const { cells } = row2; + const nextCells = cells.map((cell) => { + const { tagIds } = cell; + if (cell.id === this.cellId) { + this.previousTagIds = [...tagIds]; + const nextTagIds = tagIds.filter( (id2) => !this.tagIds.includes(id2) - ) + ); + return __spreadProps(__spreadValues({}, cell), { + tagIds: nextTagIds + }); + } + return cell; + }); + if (row2.id === this.rowId) { + const newEditedTime = Date.now(); + this.nextEditedTime = newEditedTime; + return __spreadProps(__spreadValues({}, row2), { + lastEditedTime: newEditedTime, + cells: nextCells }); } - return cell; + return row2; }); - this.previousEditedTime = rowLastEditedTime(bodyRows, this.rowId); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - bodyCells: newBodyCells, - bodyRows: rowLastEditedTimeUpdate(bodyRows, this.rowId) + rows: nextRows + }) + }); + } + undo(prevState) { + super.onUndo(); + const { rows } = prevState.model; + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + if (cell.id === this.cellId) { + return __spreadProps(__spreadValues({}, cell), { + tagIds: this.previousTagIds + }); + } + return cell; + }); + if (row.id === this.rowId) { + return __spreadProps(__spreadValues({}, row), { + lastEditedTime: this.previousEditedTime, + cells: nextCells + }); + } + return row; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + rows: nextRows }) }); } redo(prevState) { super.onRedo(); - return this.execute(prevState); - } - undo(prevState) { - super.onUndo(); - const { bodyCells, bodyRows } = prevState.model; - const newBodyCells = bodyCells.map((cell) => { - if (cell.id === this.cellId) { - return __spreadProps(__spreadValues({}, cell), { - tagIds: this.previousTagIds + const { rows } = prevState.model; + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + if (cell.id === this.cellId) { + const nextTagIds = cell.tagIds.filter( + (id2) => !this.tagIds.includes(id2) + ); + return __spreadProps(__spreadValues({}, cell), { + tagIds: nextTagIds + }); + } + return cell; + }); + if (row.id === this.rowId) { + return __spreadProps(__spreadValues({}, row), { + lastEditedTime: this.nextEditedTime, + cells: nextCells }); } - return cell; + return row; }); return __spreadProps(__spreadValues({}, prevState), { model: __spreadProps(__spreadValues({}, prevState.model), { - bodyCells: newBodyCells, - bodyRows: rowLastEditedTimeUpdate( - bodyRows, - this.rowId, - this.previousEditedTime - ) + rows: nextRows }) }); } }; -// src/shared/table-state/use-tag.ts +// src/react/loom-app/app/hooks/use-tag.ts var useTag = () => { - const { doCommand } = useTableState(); + const { doCommand } = useLoomState(); const logFunc = useLogger(); - function handleTagAdd(cellId, columnId, rowId, markdown, color, isMultiTag) { + function handleTagAdd(cellId, columnId, markdown, color, isMultiTag) { logFunc("handleTagAdd", { cellId, columnId, - rowId, markdown, color, isMultiTag }); doCommand( - new TagAddCommand( - cellId, - columnId, - rowId, - markdown, - color, - isMultiTag - ) + new TagAddCommand(cellId, columnId, markdown, color, isMultiTag) ); } - function handleTagCellAdd(cellId, rowId, tagId, isMultiTag) { + function handleTagCellAdd(cellId, tagId, isMultiTag) { logFunc("handleTagCellAdd", { cellId, - rowId, tagId, isMultiTag }); - doCommand(new TagCellAddCommand(cellId, rowId, tagId, isMultiTag)); + doCommand(new TagCellAddCommand(cellId, tagId, isMultiTag)); } - function handleTagCellRemove(cellId, rowId, tagId) { + function handleTagCellRemove(cellId, tagId) { logFunc("handleTagCellRemove", { cellId, - rowId, tagId }); - doCommand(new TagCellRemoveCommand(cellId, rowId, tagId)); + doCommand(new TagCellRemoveCommand(cellId, tagId)); } - function handleTagCellMultipleRemove(cellId, rowId, tagIds) { + function handleTagContentChange(columnId, tagId, content) { + logFunc("handleTagNameChange", { + columnId, + tagId, + content + }); + doCommand(new TagUpdateCommand(columnId, tagId, "content", content)); + } + function handleTagCellMultipleRemove(cellId, tagIds) { logFunc("handleTagCellMultipleRemove", { cellId, - rowId, tagIds }); - doCommand(new TagCellMultipleRemoveCommand(cellId, rowId, tagIds)); + doCommand(new TagCellMultipleRemoveCommand(cellId, tagIds)); } function handleTagDeleteClick(columnId, tagId) { logFunc("handleTagDeleteClick", { @@ -54424,16 +60513,199 @@ var useTag = () => { doCommand(new TagUpdateCommand(columnId, tagId, "color", color)); } return { - handleTagCellAdd, - handleTagAdd, - handleTagCellRemove, - handleTagColorChange, - handleTagCellMultipleRemove, - handleTagDeleteClick + onTagCellAdd: handleTagCellAdd, + onTagAdd: handleTagAdd, + onTagCellRemove: handleTagCellRemove, + onTagColorChange: handleTagColorChange, + onTagCellMultipleRemove: handleTagCellMultipleRemove, + onTagDeleteClick: handleTagDeleteClick, + onTagContentChange: handleTagContentChange }; }; -// src/shared/menu/arrow-move-focus.ts +// src/react/loom-app/app/hooks/use-export-events.ts +var import_react51 = __toESM(require_react()); + +// src/shared/event-system/utils.ts +var isEventForThisApp = (appId, allowOutsideEvents = false) => { + const activeEl = document.activeElement; + if (!activeEl) + return false; + const appEl = activeEl.closest(".dataloom-app"); + if (appEl) + return appEl.id === appId; + if (allowOutsideEvents) + return true; + const menuEl = activeEl.closest(".dataloom-menu"); + if (menuEl) { + const menuId = menuEl.id; + const menuTrigger = document.querySelector( + `[data-menu-id="${menuId}"]` + ); + if (!menuTrigger) + return false; + const appEl2 = menuTrigger.closest(".dataloom-app"); + if (appEl2) + return appEl2.getAttribute("data-id") === appId; + } + return false; +}; + +// src/react/loom-app/app/hooks/use-export-events.ts +var useExportEvents = (state) => { + const { reactAppId, loomFile, app } = useAppMount(); + const { removeMarkdownOnExport } = useAppSelector( + (state2) => state2.global.settings + ); + const filePath = loomFile.path; + import_react51.default.useEffect(() => { + function handleDownloadCSV() { + if (isEventForThisApp(reactAppId)) { + setTimeout(() => { + const data = exportToCSV( + app, + state, + removeMarkdownOnExport + ); + const exportFileName = getExportFileName(filePath); + const blobType = getBlobTypeForExportType("CSV" /* CSV */); + downloadFile(exportFileName, blobType, data); + }, 100); + } + } + function handleDownloadMarkdown() { + if (isEventForThisApp(reactAppId)) { + setTimeout(() => { + const data = exportToMarkdown( + app, + state, + removeMarkdownOnExport + ); + const exportFileName = getExportFileName(filePath); + const blobType = getBlobTypeForExportType( + "Markdown" /* MARKDOWN */ + ); + downloadFile(exportFileName, blobType, data); + }, 100); + } + } + app.workspace.on(EVENT_DOWNLOAD_CSV, handleDownloadCSV); + app.workspace.on(EVENT_DOWNLOAD_MARKDOWN, handleDownloadMarkdown); + return () => { + app.workspace.off(EVENT_DOWNLOAD_CSV, handleDownloadCSV); + app.workspace.off(EVENT_DOWNLOAD_MARKDOWN, handleDownloadMarkdown); + }; + }, [filePath, state, reactAppId, removeMarkdownOnExport, app]); +}; + +// src/react/loom-app/app/hooks/use-row-events.ts +var import_react52 = __toESM(require_react()); +var useRowEvents = () => { + const { reactAppId, app } = useAppMount(); + const { doCommand } = useLoomState(); + import_react52.default.useEffect(() => { + function handleRowAddEvent() { + if (isEventForThisApp(reactAppId)) + doCommand(new RowAddCommand()); + } + function handleRowDeleteEvent() { + if (isEventForThisApp(reactAppId)) + doCommand(new RowDeleteCommand({ last: true })); + } + app.workspace.on(EVENT_ROW_ADD, handleRowAddEvent); + app.workspace.on(EVENT_ROW_DELETE, handleRowDeleteEvent); + return () => { + app.workspace.off(EVENT_ROW_ADD, handleRowAddEvent); + app.workspace.off(EVENT_ROW_DELETE, handleRowDeleteEvent); + }; + }, [doCommand, app, reactAppId]); +}; + +// src/react/loom-app/app/hooks/use-column-events.ts +var import_react53 = __toESM(require_react()); +var useColumnEvents = () => { + const { reactAppId, app } = useAppMount(); + const { doCommand } = useLoomState(); + const logger = useLogger(); + import_react53.default.useEffect(() => { + function handleColumnAddEvent() { + if (isEventForThisApp(reactAppId)) { + logger("handleColumnAddEvent"); + doCommand(new ColumnAddCommand()); + } + } + function handleColumnDeleteEvent() { + if (isEventForThisApp(reactAppId)) { + logger("handleColumnDeleteEvent"); + doCommand(new ColumnDeleteCommand({ last: true })); + } + } + app.workspace.on(EVENT_COLUMN_ADD, handleColumnAddEvent); + app.workspace.on(EVENT_COLUMN_DELETE, handleColumnDeleteEvent); + return () => { + app.workspace.off(EVENT_COLUMN_ADD, handleColumnAddEvent); + app.workspace.off(EVENT_COLUMN_DELETE, handleColumnDeleteEvent); + }; + }, [doCommand, logger, reactAppId, app]); +}; + +// src/shared/loom-state/commands/table-settings-update-command.ts +var TableSettingsUpdateCommand = class extends loom_state_command_default { + constructor(key, value) { + super(); + this.key = key; + this.value = value; + } + execute(prevState) { + super.onExecute(); + const { settings } = prevState.model; + this.previousValue = settings[this.key]; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + settings: __spreadProps(__spreadValues({}, settings), { + [this.key]: this.value + }) + }) + }); + } + undo(prevState) { + super.onUndo(); + const { settings } = prevState.model; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + settings: __spreadProps(__spreadValues({}, settings), { + [this.key]: this.previousValue + }) + }) + }); + } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } +}; + +// src/react/loom-app/app/hooks/use-table-settings.ts +var useTableSettings = () => { + const logger = useLogger(); + const { doCommand } = useLoomState(); + function handleFrozenColumnsChange(numColumns) { + logger("handleFrozenColumnsChange", { numColumns }); + doCommand( + new TableSettingsUpdateCommand("numFrozenColumns", numColumns) + ); + } + function handleCalculationRowToggle(value) { + logger("handleCalculationRowToggle"); + doCommand(new TableSettingsUpdateCommand("showCalculationRow", value)); + } + return { + onFrozenColumnsChange: handleFrozenColumnsChange, + onCalculationRowToggle: handleCalculationRowToggle + }; +}; + +// src/react/loom-app/app/hooks/use-focus/move-focus.ts var moveMenuFocusUp = (focusableEls, currentIndex) => { let index = currentIndex - 1; if (index < 0) @@ -54458,540 +60730,70 @@ var moveFocusRight = (focusableEls, currentIndex) => { index = 0; return focusableEls[index]; }; -var moveFocusUp = (focusableEls, numColumns, numBodyRows, numSortedColumns, currentIndex) => { - const searchInputIndex = numSortedColumns; - const optionBarIndexEnd = numSortedColumns + 2; - const newRowButtonIndex = focusableEls.length - 1; - if (currentIndex <= optionBarIndexEnd) - return focusableEls[currentIndex]; - if (currentIndex > optionBarIndexEnd && currentIndex <= optionBarIndexEnd + numColumns) { - return focusableEls[searchInputIndex]; +var moveFocusUp = (focusableEls, numOptionBarFocusableEls, numBottomBarFocusableEls, numColumns, numBodyRows, currentIndex) => { + const optionBarIndexEnd = numOptionBarFocusableEls - 1; + const bottomBarIndexStart = focusableEls.length - numBottomBarFocusableEls; + if (currentIndex <= optionBarIndexEnd + numColumns) { + return focusableEls[0]; } - if (currentIndex >= newRowButtonIndex - numColumns && currentIndex < newRowButtonIndex) { + if (currentIndex >= bottomBarIndexStart - numColumns && currentIndex < bottomBarIndexStart) { if (numBodyRows === 0) return focusableEls[currentIndex - numColumns - 1]; return focusableEls[currentIndex - numColumns]; } - if (currentIndex === newRowButtonIndex) - return focusableEls[newRowButtonIndex - numColumns]; - if (currentIndex > optionBarIndexEnd && currentIndex <= optionBarIndexEnd + numColumns) - return focusableEls[0]; + if (currentIndex >= bottomBarIndexStart && currentIndex < focusableEls.length) + return focusableEls[bottomBarIndexStart - numColumns]; if (currentIndex === optionBarIndexEnd + numColumns + 2) return focusableEls[currentIndex - 1 - numColumns]; if (currentIndex > optionBarIndexEnd + numColumns + 2 && currentIndex <= optionBarIndexEnd + numColumns + 2 + numColumns) return focusableEls[currentIndex - 2 - numColumns]; return focusableEls[currentIndex - 1 - numColumns]; }; -var moveFocusDown = (focusableEls, numColumns, numBodyRows, numSortedColumns, currentIndex) => { - const firstColumnIndex = numSortedColumns + 3; - const optionBarIndexEnd = numSortedColumns + 2; - const newRowButtonIndex = focusableEls.length - 1; - if (currentIndex === newRowButtonIndex) - return focusableEls[currentIndex]; +var moveFocusDown = (focusableEls, numOptionBarFocusableEls, numBottomBarFocusableEls, numColumns, numBodyRows, currentIndex) => { + const optionBarIndexEnd = numOptionBarFocusableEls - 1; + const firstColumnIndex = optionBarIndexEnd + 1; + const bottomBarIndexStart = focusableEls.length - numBottomBarFocusableEls; + if (currentIndex >= bottomBarIndexStart) + return focusableEls[focusableEls.length - 1]; if (currentIndex >= 0 && currentIndex <= optionBarIndexEnd) return focusableEls[firstColumnIndex]; - if (currentIndex >= newRowButtonIndex - numColumns && currentIndex < newRowButtonIndex) - return focusableEls[newRowButtonIndex]; + if (currentIndex >= bottomBarIndexStart - numColumns && currentIndex < bottomBarIndexStart) + return focusableEls[bottomBarIndexStart]; if (currentIndex > optionBarIndexEnd && currentIndex <= optionBarIndexEnd + numColumns) { if (numBodyRows === 0) return focusableEls[currentIndex + numColumns + 1]; return focusableEls[currentIndex + numColumns + 2]; } - if (currentIndex >= newRowButtonIndex - numColumns - numColumns && currentIndex < newRowButtonIndex - numColumns) + if (currentIndex >= bottomBarIndexStart - numColumns - numColumns && currentIndex < bottomBarIndexStart - numColumns) return focusableEls[currentIndex + numColumns]; if (currentIndex === optionBarIndexEnd + numColumns + 1) return focusableEls[currentIndex + numColumns + 1]; return focusableEls[currentIndex + numColumns + 1]; }; -// src/obsidian-shim/build/export-events.ts -var import_react94 = __toESM(require_react()); - -// src/shared/event-system/utils.ts -var isEventForThisApp = (appId, allowOutsideEvents = false) => { - const activeEl = document.activeElement; - if (!activeEl) - return false; - const appEl = activeEl.closest(".NLT__app"); - if (appEl) - return appEl.getAttribute("data-id") === appId; - if (allowOutsideEvents) - return true; - const menuEl = activeEl.closest(".NLT__menu"); - if (menuEl) { - const menuId = menuEl.getAttribute("data-id"); - const menuTrigger = document.querySelector( - `[data-menu-id="${menuId}"]` - ); - if (!menuTrigger) - return false; - const appEl2 = menuTrigger.closest(".NLT__app"); - if (appEl2) - return appEl2.getAttribute("data-id") === appId; - } - return false; -}; - -// src/shared/export/download-utils.ts -var import_obsidian7 = require("obsidian"); - -// src/shared/export/types.ts -var ExportType = /* @__PURE__ */ ((ExportType2) => { - ExportType2["UNSELECTED"] = "Select an option"; - ExportType2["MARKDOWN"] = "Markdown"; - ExportType2["CSV"] = "CSV"; - return ExportType2; -})(ExportType || {}); - -// src/shared/export/download-utils.ts -var getBlobTypeForExportType = (type) => { - switch (type) { - case "CSV" /* CSV */: - return "text/csv"; - case "Markdown" /* MARKDOWN */: - return "text/markdown"; - default: - throw new Error(`Unknown export type: ${type}`); - } -}; -var getExportFileName = (filePath) => { - const replaceExtension = filePath.replace(`.${TABLE_EXTENSION}`, ""); - const replaceSlash = replaceExtension.replace(/\//g, "-"); - const replaceSpaces = replaceSlash.replace(/ /g, "_"); - const timestamp = (0, import_obsidian7.moment)().format("YYYY_MM_DD-HH_mm_ss"); - return replaceSpaces + "-" + timestamp; -}; -var downloadFile = (fileName, blobType, data) => { - const blob = new Blob([data], { type: blobType }); - const url = window.URL.createObjectURL(blob); - const el = document.createElement("a"); - el.setAttribute("href", url); - el.setAttribute("download", fileName); - el.style.display = "none"; - document.body.appendChild(el); - el.click(); - document.body.removeChild(el); -}; - -// src/shared/export/export-to-csv.tsx -var import_papaparse = __toESM(require_papaparse_min()); - -// src/shared/cell-content/checkbox-cell-content.ts -var getCheckboxCellContent = (markdown, renderMarkdown2) => { - if (renderMarkdown2) - return markdown; - if (isCheckboxChecked(markdown)) - return "true"; - return "false"; -}; - -// src/shared/cell-content/number-cell-content.ts -var getNumberCellContent = (value) => { - if (isNumber(value)) - return value; - return ""; -}; - -// src/shared/cell-content/text-cell-content.ts -var getTextCellContent = (markdown, renderMarkdown2) => { - if (!renderMarkdown2) - return markdown.replace(WIKI_LINK_REGEX, (_match, path) => { - return path; - }); - return markdown; -}; - -// src/shared/cell-content/index.ts -var getTagCellContent = (column, cell) => { - return column.tags.filter((tag) => cell.tagIds.includes(tag.id)).map((tag) => tag.markdown).join(","); -}; -var getCellContent = (column, row, cell, renderMarkdown2) => { - switch (column.type) { - case "text" /* TEXT */: - case "file" /* FILE */: - return getTextCellContent(cell.markdown, renderMarkdown2); - case "number" /* NUMBER */: - return getNumberCellContent(cell.markdown); - case "embed" /* EMBED */: - return getEmbedCellContent(cell.markdown, renderMarkdown2); - case "checkbox" /* CHECKBOX */: - return getCheckboxCellContent(cell.markdown, renderMarkdown2); - case "currency" /* CURRENCY */: - return getCurrencyCellContent(cell.markdown, column.currencyType); - case "tag" /* TAG */: - case "multi-tag" /* MULTI_TAG */: - return getTagCellContent(column, cell); - case "date" /* DATE */: - return getDateCellContent(cell.dateTime, column.dateFormat); - case "creation-time" /* CREATION_TIME */: - return getTimeCellContent(row.creationTime, column.dateFormat); - case "last-edited-time" /* LAST_EDITED_TIME */: - return getTimeCellContent(row.lastEditedTime, column.dateFormat); - default: - throw new Error("Unsupported cell type"); - } -}; - -// src/shared/export/table-state-to-array.tsx -var serializeHeaderCells = (cells) => { - return cells.map((cell) => cell.markdown); -}; -var serializeBodyCells = (columns, rows, cells, renderMarkdown2) => { - return rows.map((row) => { - const rowCells = cells.filter((cell) => cell.rowId === row.id); - return rowCells.map((cell) => { - const column = columns.find( - (column2) => column2.id === cell.columnId - ); - if (!column) - throw new ColumNotFoundError(cell.columnId); - return getCellContent(column, row, cell, renderMarkdown2); - }); - }); -}; -var tableStateToArray = (tableState, renderMarkdown2) => { - const { headerCells, bodyCells, bodyRows, columns } = tableState.model; - const serializedHeaderCells = serializeHeaderCells(headerCells); - const serializedBodyCells = serializeBodyCells( - columns, - bodyRows, - bodyCells, - renderMarkdown2 - ); - return [serializedHeaderCells, ...serializedBodyCells]; -}; - -// src/shared/export/export-to-csv.tsx -var exportToCSV = (tableState, renderMarkdown2) => { - const arr = tableStateToArray(tableState, renderMarkdown2); - return import_papaparse.default.unparse(arr); -}; - -// node_modules/markdown-table/index.js -function markdownTable(table, options = {}) { - const align = (options.align || []).concat(); - const stringLength = options.stringLength || defaultStringLength; - const alignments = []; - const cellMatrix = []; - const sizeMatrix = []; - const longestCellByColumn = []; - let mostCellsPerRow = 0; - let rowIndex = -1; - while (++rowIndex < table.length) { - const row2 = []; - const sizes2 = []; - let columnIndex2 = -1; - if (table[rowIndex].length > mostCellsPerRow) { - mostCellsPerRow = table[rowIndex].length; - } - while (++columnIndex2 < table[rowIndex].length) { - const cell = serialize(table[rowIndex][columnIndex2]); - if (options.alignDelimiters !== false) { - const size = stringLength(cell); - sizes2[columnIndex2] = size; - if (longestCellByColumn[columnIndex2] === void 0 || size > longestCellByColumn[columnIndex2]) { - longestCellByColumn[columnIndex2] = size; - } - } - row2.push(cell); - } - cellMatrix[rowIndex] = row2; - sizeMatrix[rowIndex] = sizes2; - } - let columnIndex = -1; - if (typeof align === "object" && "length" in align) { - while (++columnIndex < mostCellsPerRow) { - alignments[columnIndex] = toAlignment(align[columnIndex]); - } - } else { - const code = toAlignment(align); - while (++columnIndex < mostCellsPerRow) { - alignments[columnIndex] = code; - } - } - columnIndex = -1; - const row = []; - const sizes = []; - while (++columnIndex < mostCellsPerRow) { - const code = alignments[columnIndex]; - let before = ""; - let after = ""; - if (code === 99) { - before = ":"; - after = ":"; - } else if (code === 108) { - before = ":"; - } else if (code === 114) { - after = ":"; - } - let size = options.alignDelimiters === false ? 1 : Math.max( - 1, - longestCellByColumn[columnIndex] - before.length - after.length - ); - const cell = before + "-".repeat(size) + after; - if (options.alignDelimiters !== false) { - size = before.length + size + after.length; - if (size > longestCellByColumn[columnIndex]) { - longestCellByColumn[columnIndex] = size; - } - sizes[columnIndex] = size; - } - row[columnIndex] = cell; - } - cellMatrix.splice(1, 0, row); - sizeMatrix.splice(1, 0, sizes); - rowIndex = -1; - const lines = []; - while (++rowIndex < cellMatrix.length) { - const row2 = cellMatrix[rowIndex]; - const sizes2 = sizeMatrix[rowIndex]; - columnIndex = -1; - const line = []; - while (++columnIndex < mostCellsPerRow) { - const cell = row2[columnIndex] || ""; - let before = ""; - let after = ""; - if (options.alignDelimiters !== false) { - const size = longestCellByColumn[columnIndex] - (sizes2[columnIndex] || 0); - const code = alignments[columnIndex]; - if (code === 114) { - before = " ".repeat(size); - } else if (code === 99) { - if (size % 2) { - before = " ".repeat(size / 2 + 0.5); - after = " ".repeat(size / 2 - 0.5); - } else { - before = " ".repeat(size / 2); - after = before; - } - } else { - after = " ".repeat(size); - } - } - if (options.delimiterStart !== false && !columnIndex) { - line.push("|"); - } - if (options.padding !== false && !(options.alignDelimiters === false && cell === "") && (options.delimiterStart !== false || columnIndex)) { - line.push(" "); - } - if (options.alignDelimiters !== false) { - line.push(before); - } - line.push(cell); - if (options.alignDelimiters !== false) { - line.push(after); - } - if (options.padding !== false) { - line.push(" "); - } - if (options.delimiterEnd !== false || columnIndex !== mostCellsPerRow - 1) { - line.push("|"); - } - } - lines.push( - options.delimiterEnd === false ? line.join("").replace(/ +$/, "") : line.join("") - ); - } - return lines.join("\n"); -} -function serialize(value) { - return value === null || value === void 0 ? "" : String(value); -} -function defaultStringLength(value) { - return value.length; -} -function toAlignment(value) { - const code = typeof value === "string" ? value.codePointAt(0) : 0; - return code === 67 || code === 99 ? 99 : code === 76 || code === 108 ? 108 : code === 82 || code === 114 ? 114 : 0; -} - -// src/shared/export/export-to-markdown.tsx -var exportToMarkdown = (tableState, renderMarkdown2) => { - const arr = tableStateToArray(tableState, renderMarkdown2); - return markdownTable(arr); -}; - -// src/obsidian-shim/build/export-events.ts -var useExportEvents = (state) => { - const { filePath } = useMountState(); - const { appId } = useMountState(); - const { exportRenderMarkdown } = useAppSelector((state2) => state2.global); - import_react94.default.useEffect(() => { - function handleDownloadCSV() { - if (isEventForThisApp(appId)) { - setTimeout(() => { - const data = exportToCSV(state, exportRenderMarkdown); - const exportFileName = getExportFileName(filePath); - const blobType = getBlobTypeForExportType( - "Markdown" /* MARKDOWN */ - ); - downloadFile(exportFileName, blobType, data); - }, 100); - } - } - function handleDownloadMarkdown() { - if (isEventForThisApp(appId)) { - setTimeout(() => { - const data = exportToMarkdown(state, exportRenderMarkdown); - const exportFileName = getExportFileName(filePath); - const blobType = getBlobTypeForExportType( - "Markdown" /* MARKDOWN */ - ); - downloadFile(exportFileName, blobType, data); - }, 100); - } - } - app.workspace.on(EVENT_DOWNLOAD_CSV, handleDownloadCSV); - app.workspace.on(EVENT_DOWNLOAD_MARKDOWN, handleDownloadMarkdown); - return () => { - app.workspace.off(EVENT_DOWNLOAD_CSV, handleDownloadCSV); - app.workspace.off(EVENT_DOWNLOAD_MARKDOWN, handleDownloadMarkdown); - }; - }, [filePath, state, appId, exportRenderMarkdown]); -}; - -// src/obsidian-shim/build/row-events.ts -var import_react95 = __toESM(require_react()); -var useRowEvents = () => { - const { appId } = useMountState(); - const { doCommand } = useTableState(); - import_react95.default.useEffect(() => { - function handleRowAddEvent() { - if (isEventForThisApp(appId)) - doCommand(new RowAddCommand()); - } - function handleRowDeleteEvent() { - if (isEventForThisApp(appId)) - doCommand(new RowDeleteCommand({ last: true })); - } - app.workspace.on(EVENT_ROW_ADD, handleRowAddEvent); - app.workspace.on(EVENT_ROW_DELETE, handleRowDeleteEvent); - return () => { - app.workspace.off(EVENT_ROW_ADD, handleRowAddEvent); - app.workspace.off(EVENT_ROW_DELETE, handleRowDeleteEvent); - }; - }, [doCommand, appId]); -}; - -// src/obsidian-shim/build/column-events.ts -var import_react96 = __toESM(require_react()); -var useColumnEvents = () => { - const { appId } = useMountState(); - const { doCommand } = useTableState(); +// src/react/loom-app/app/hooks/use-focus/index.tsx +function useFocus() { const logger = useLogger(); - import_react96.default.useEffect(() => { - function handleColumnAddEvent() { - if (isEventForThisApp(appId)) { - logger("handleColumnAddEvent"); - doCommand(new ColumnAddCommand()); - } - } - function handleColumnDeleteEvent() { - if (isEventForThisApp(appId)) { - logger("handleColumnDeleteEvent"); - doCommand(new ColumnDeleteCommand({ last: true })); - } - } - app.workspace.on(EVENT_COLUMN_ADD, handleColumnAddEvent); - app.workspace.on(EVENT_COLUMN_DELETE, handleColumnDeleteEvent); - return () => { - app.workspace.off(EVENT_COLUMN_ADD, handleColumnAddEvent); - app.workspace.off(EVENT_COLUMN_DELETE, handleColumnDeleteEvent); - }; - }, [doCommand, logger, appId]); -}; - -// src/react/table-app/index.tsx -var TableApp = () => { - const { appId, isMarkdownView } = useMountState(); - const { topMenu, hasOpenMenu, requestCloseTopMenu } = useMenuState(); - const logger = useLogger(); - const { - tableState, - resizingColumnId, - searchText, - commandRedo, - commandUndo, - setTableState - } = useTableState(); - useExportEvents(tableState); - useRowEvents(); - useColumnEvents(); - const { - handleRuleAddClick, - handleRuleColumnChange, - handleRuleDeleteClick, - handleRuleFilterTypeChange, - handleRuleTextChange, - handleRuleToggle, - handleRuleTagsChange, - filterBodyRowsByRules: filterBodyRowsByRules2 - } = useFilterRules(setTableState); - const { - handleNewColumnClick, - handleColumnToggle, - handleCurrencyChange, - handleDateFormatChange, - handleColumnDeleteClick, - handleColumnSortClick, - handleColumnTypeClick, - handleColumnWidthChange, - handleSortRemoveClick, - handleFunctionTypeChange, - handleWrapContentToggle, - handleAspectRatioClick, - handleHorizontalPaddingClick, - handleVerticalPaddingClick - } = useColumn(); - const { handleNewRowClick, handleRowDeleteClick } = useRow(); - const { - handleBodyCellContentChange, - handleCellDateTimeChange, - handleHeaderCellContentChange - } = useCell(); - const { - handleTagCellAdd, - handleTagAdd, - handleTagCellRemove, - handleTagCellMultipleRemove, - handleTagColorChange, - handleTagDeleteClick - } = useTag(); - const firstColumnId = useUUID(); - const lastColumnId = useUUID(); - function handleClick(e) { - logger("TableApp handleClick"); - e.stopPropagation(); - if (hasOpenMenu()) { - requestCloseTopMenu("click"); - } else { - removeFocusVisibleClass(); - } - } + const { reactAppId } = useAppMount(); + const { loomState } = useLoomState(); + const { topMenu } = useMenuOperations(); function handleKeyDown(e) { - logger("TableApp handleKeyDown"); - e.stopPropagation(); + logger("useFocus handleKeyDown"); if (e.key === "Tab") { - removeFocusVisibleClass(); + removeCurrentFocusClass(); e.preventDefault(); - const layerEl = getFocusableLayerEl(appId, topMenu); - if (!layerEl) + const menuEl = getTopMenuEl(topMenu, reactAppId); + if (!menuEl) return; - const focusableEls = layerEl.querySelectorAll(".NLT__focusable"); + const focusableEls = menuEl.querySelectorAll(".dataloom-focusable"); if (focusableEls.length === 0) return; - focusNextElement(layerEl, focusableEls); - } else if (isWindowsRedoDown(e) || isMacRedoDown(e)) { - e.preventDefault(); - commandRedo(); - } else if (isWindowsUndoDown(e) || isMacUndoDown(e)) { - e.preventDefault(); - commandUndo(); - } else if (e.key === "ArrowDown" || e.key === "ArrowUp" || e.key === "ArrowLeft" || e.key === "ArrowRight") { - const layerEl = getFocusableLayerEl(appId, topMenu); + focusNextElement(menuEl, focusableEls); + } else if (isArrowKeyPressed(e, topMenu !== null)) { + const layerEl = getTopMenuEl(topMenu, reactAppId); if (!layerEl) return; - const focusableEls = layerEl.querySelectorAll(".NLT__focusable"); + const focusableEls = getFocusableElements(layerEl); if (focusableEls.length === 0) return; e.preventDefault(); @@ -54999,13 +60801,10 @@ var TableApp = () => { let index = -1; if (focusedEl) index = Array.from(focusableEls).indexOf(focusedEl); - const numVisibleColumns = tableState.model.columns.filter( + const numVisibleColumns = loomState.model.columns.filter( (column) => column.isVisible ).length; - const numBodyRows = tableState.model.bodyRows.length; - const numSortedColumns = tableState.model.columns.filter( - (column) => column.sortDir !== "default" /* NONE */ - ).length; + const numRows = loomState.model.rows.length; let elementToFocus = null; switch (e.key) { case "ArrowLeft": @@ -55015,248 +60814,780 @@ var TableApp = () => { elementToFocus = moveFocusRight(focusableEls, index); break; case "ArrowUp": - if (hasOpenMenu()) { + if (topMenu !== null) { elementToFocus = moveMenuFocusUp(focusableEls, index); } else { + const numOptionBarFocusableEls = getNumOptionBarFocusableEls(layerEl); + const numBottomBarFocusableEls = getNumBottomBarFocusableEl(layerEl); elementToFocus = moveFocusUp( focusableEls, + numOptionBarFocusableEls, + numBottomBarFocusableEls, numVisibleColumns, - numBodyRows, - numSortedColumns, + numRows, index ); } break; case "ArrowDown": - if (hasOpenMenu()) { + if (topMenu !== null) { elementToFocus = moveMenuFocusDown(focusableEls, index); } else { + const numOptionBarFocusableEls = getNumOptionBarFocusableEls(layerEl); + const numBottomBarFocusableEls = getNumBottomBarFocusableEl(layerEl); elementToFocus = moveFocusDown( focusableEls, + numOptionBarFocusableEls, + numBottomBarFocusableEls, numVisibleColumns, - numBodyRows, - numSortedColumns, + numRows, index ); break; } } if (elementToFocus !== null) { - removeFocusVisibleClass(); + removeCurrentFocusClass(); elementToFocus.focus(); } } + } + return { + onFocusKeyDown: handleKeyDown + }; +} + +// src/react/loom-app/app/hooks/use-menu-events.ts +var import_react54 = __toESM(require_react()); +var import_lodash17 = __toESM(require_lodash()); +var useMenuEvents = () => { + const hookName = "useMenuEvents"; + const logger = useLogger(); + const { reactAppId, isMarkdownView, app } = useAppMount(); + const { onCloseAll } = useMenuOperations(); + import_react54.default.useEffect(() => { + const THROTTLE_TIME_MILLIS = 100; + const throttleHandleScroll = import_lodash17.default.throttle( + handleScroll, + THROTTLE_TIME_MILLIS + ); + function handleScroll() { + const openMenus = document.querySelectorAll(".dataloom-menu"); + for (const menu of openMenus) { + menu.style.display = "none"; + } + onCloseAll(); + } + const appEl = document.getElementById(reactAppId); + if (!appEl) + return; + const tableContainer = appEl.querySelector( + '[data-virtuoso-scroller="true"]' + ); + if (!tableContainer) + return; + tableContainer.addEventListener("scroll", throttleHandleScroll); + return () => tableContainer == null ? void 0 : tableContainer.removeEventListener("scroll", throttleHandleScroll); + }, [onCloseAll, reactAppId]); + import_react54.default.useEffect(() => { + var _a2; + let pageScrollerEl; + const THROTTLE_TIME_MILLIS = 100; + const throttleHandleScroll = import_lodash17.default.throttle( + handleScroll, + THROTTLE_TIME_MILLIS + ); + function handleScroll() { + const openMenus = document.querySelectorAll(".dataloom-menu"); + for (const menu of openMenus) { + menu.style.display = "none"; + } + onCloseAll(); + } + if (isMarkdownView) { + const appEl = document.getElementById(reactAppId); + if (!appEl) + return; + pageScrollerEl = (_a2 = appEl.closest(".markdown-preview-view")) != null ? _a2 : appEl.closest(".cm-scroller"); + pageScrollerEl == null ? void 0 : pageScrollerEl.addEventListener("scroll", throttleHandleScroll); + } + return () => pageScrollerEl == null ? void 0 : pageScrollerEl.removeEventListener("scroll", throttleHandleScroll); + }, [onCloseAll, isMarkdownView, reactAppId]); + import_react54.default.useEffect(() => { + function isModalOpen() { + return document.body.querySelector(":scope > .modal-container") !== null; + } + const observer = new MutationObserver((entries) => { + for (const entry of entries) { + if (entry.target === document.body) { + if (isModalOpen()) { + logger(`${hookName} onCloseAll`); + onCloseAll(); + break; + } + } + } + }); + observer.observe(document.body, { childList: true }); + return () => observer.disconnect(); + }, [logger, onCloseAll]); + import_react54.default.useEffect(() => { + function handleGlobalClick() { + logger(`${hookName} handleGlobalClick`); + onCloseAll(); + } + app.workspace.on(EVENT_GLOBAL_CLICK, handleGlobalClick); + return () => app.workspace.off(EVENT_GLOBAL_CLICK, handleGlobalClick); + }, [app, logger, onCloseAll]); +}; + +// src/react/loom-app/footer-cell-container/calculation-menu.tsx +var import_jsx_runtime123 = __toESM(require_jsx_runtime()); +function CalculationMenu({ + id: id2, + value, + cellType, + isOpen, + triggerPosition, + onClick, + onRequestClose, + onClose +}) { + return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)( + Menu, + { + id: id2, + isOpen, + triggerPosition, + onRequestClose, + onClose, + children: /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("div", { className: "dataloom-function-menu", children: [ + Object.values(GeneralCalculation).map((type) => /* @__PURE__ */ (0, import_jsx_runtime123.jsx)( + MenuItem, + { + name: getDisplayNameForCalculation(type), + ariaLabel: getAriaLabelForCalculation(type), + onClick: () => onClick(type), + isSelected: type === value + }, + type + )), + cellType === "number" /* NUMBER */ && Object.values(NumberCalculation).map((type) => /* @__PURE__ */ (0, import_jsx_runtime123.jsx)( + MenuItem, + { + ariaLabel: getAriaLabelForNumberCalculation(type), + name: getDisplayNameForNumberCalculation(type), + onClick: () => onClick(type), + isSelected: type === value + }, + type + )) + ] }) + } + ); +} + +// src/react/loom-app/footer-cell-container/utils.ts +var NAMESPACE = "fa23ee5e-43ae-45e0-83ed-97c577913416"; +var hashString = (value) => { + return v5_default(value, NAMESPACE); +}; +var round2Digits = (value) => { + if (value.toString().includes(".")) + return parseFloat(value.toFixed(2)); + return value; +}; + +// src/react/loom-app/footer-cell-container/general-calculation.ts +var getGeneralCalculationContent = (columnId, rows, columnTags, cellType, calculationType, dateFormat) => { + const columnCells = rows.map((row) => { + const cell = row.cells.find((cell2) => cell2.columnId === columnId); + if (!cell) + throw new RowNotFoundError(row.id); + return cell; + }); + return getCalculation( + columnCells, + rows, + columnTags, + cellType, + calculationType, + dateFormat + ).toString(); +}; +var getCalculation = (columnCells, rows, columnTags, cellType, calculationType, dateFormat) => { + if (calculationType === "count-all" /* COUNT_ALL */) { + return countAll(rows); + } else if (calculationType === "count-empty" /* COUNT_EMPTY */) { + return countEmpty(columnCells, cellType); + } else if (calculationType === "count-not-empty" /* COUNT_NOT_EMPTY */) { + return countNotEmpty(columnCells, cellType); + } else if (calculationType === "count-unique" /* COUNT_UNIQUE */) { + return countUnique(rows, columnCells, columnTags, cellType, dateFormat); + } else if (calculationType === "count-values" /* COUNT_VALUES */) { + return countValues(columnCells, cellType); + } else if (calculationType === "percent-empty" /* PERCENT_EMPTY */) { + return percentEmpty(columnCells, cellType); + } else if (calculationType === "percent-not-empty" /* PERCENT_NOT_EMPTY */) { + return percentNotEmpty(columnCells, cellType); + } else if (calculationType === "none" /* NONE */) { + return ""; + } else { + throw new Error("Unhandled calculation type"); + } +}; +var countAll = (rows) => { + return rows.length; +}; +var countEmpty = (columnCells, cellType) => { + return columnCells.map((cell) => isCellContentEmpty(cell, cellType)).reduce((accum, value) => { + if (value === true) + return accum + 1; + return accum; + }, 0); +}; +var countNotEmpty = (columnCells, cellType) => { + return columnCells.map((cell) => isCellContentEmpty(cell, cellType)).reduce((accum, value) => { + if (value === false) + return accum + 1; + return accum; + }, 0); +}; +var countUnique = (rows, columnCells, columnTags, cellType, dateFormat) => { + const hashes = columnCells.map((cell) => { + const row = rows.find( + (row2) => row2.cells.find((cell2) => cell2.id === cell2.id) + ); + if (!row) + throw new RowNotFoundError(); + const cellValues = getCellValues( + row, + cell, + columnTags, + cellType, + dateFormat + ); + return cellValues.filter((value) => value !== "").map((value) => hashString(value)); + }).flat(1); + const uniqueHashes = new Set(hashes); + return uniqueHashes.size; +}; +var countValues = (columnCells, cellType) => { + return columnCells.map((cell) => countCellValues(cell, cellType)).reduce((accum, value) => accum + value, 0); +}; +var percentEmpty = (columnCells, cellType) => { + if (columnCells.length === 0) + return "0%"; + const percent = countEmpty(columnCells, cellType) / columnCells.length * 100; + return round2Digits(percent) + "%"; +}; +var percentNotEmpty = (columnCells, cellType) => { + if (columnCells.length === 0) + return "0%"; + const percent = countNotEmpty(columnCells, cellType) / columnCells.length * 100; + return round2Digits(percent) + "%"; +}; +var getCellValues = (row, cell, columnTags, cellType, dateFormat) => { + const { content, dateTime, tagIds } = cell; + const { creationTime, lastEditedTime } = row; + if (cellType === "text" /* TEXT */ || cellType === "embed" /* EMBED */ || cellType === "number" /* NUMBER */ || cellType === "checkbox" /* CHECKBOX */ || cellType === "file" /* FILE */) { + return [content]; + } else if (cellType === "date" /* DATE */) { + if (dateTime) + return [dateTime.toString()]; + return []; + } else if (cellType === "tag" /* TAG */ || cellType === "multi-tag" /* MULTI_TAG */) { + return tagIds.map((tagId) => { + const tag = columnTags.find((tag2) => tag2.id === tagId); + if (!tag) + throw new TagNotFoundError(tagId); + const { content: content2 } = tag; + return content2; + }); + } else if (cellType === "last-edited-time" /* LAST_EDITED_TIME */) { + return [unixTimeToDateTimeString(lastEditedTime, dateFormat)]; + } else if (cellType === "creation-time" /* CREATION_TIME */) { + return [unixTimeToDateTimeString(creationTime, dateFormat)]; + } else { + throw new Error("Unhandled cell type"); + } +}; +var countCellValues = (cell, cellType) => { + const { content, dateTime, tagIds } = cell; + if (cellType === "text" /* TEXT */ || cellType === "embed" /* EMBED */ || cellType === "number" /* NUMBER */ || cellType === "file" /* FILE */) { + return content === "" ? 0 : 1; + } else if (cellType === "date" /* DATE */) { + return dateTime == null ? 0 : 1; + } else if (cellType === "tag" /* TAG */ || cellType === "multi-tag" /* MULTI_TAG */) { + return tagIds.length; + } else if (cellType === "checkbox" /* CHECKBOX */) { + return isCheckboxChecked(content) ? 1 : 0; + } else if (cellType === "last-edited-time" /* LAST_EDITED_TIME */ || cellType === "creation-time" /* CREATION_TIME */) { + return 1; + } else { + throw new Error("Unhandled cell type"); + } +}; +var isCellContentEmpty = (cell, cellType) => { + const { content, dateTime, tagIds } = cell; + if (cellType === "text" /* TEXT */ || cellType === "embed" /* EMBED */ || cellType === "number" /* NUMBER */ || cellType === "file" /* FILE */) { + return content === ""; + } else if (cellType === "date" /* DATE */) { + return dateTime == null; + } else if (cellType === "tag" /* TAG */ || cellType === "multi-tag" /* MULTI_TAG */) { + return tagIds.length === 0; + } else if (cellType === "checkbox" /* CHECKBOX */) { + return !isCheckboxChecked(content); + } else if (cellType === "last-edited-time" /* LAST_EDITED_TIME */ || cellType === "creation-time" /* CREATION_TIME */) { + return true; + } else { + throw new Error("Unhandled cell type"); + } +}; + +// src/react/loom-app/footer-cell-container/arithmetic.ts +var getAverage = (values) => { + return getSum(values) / values.length; +}; +var getSum = (values) => { + return values.reduce((sum, a2) => sum + a2, 0); +}; +var getMaximum = (values) => { + return Math.max(...values); +}; +var getMinimum = (values) => { + return Math.min(...values); +}; +var getMedian = (values) => { + const sortedValues = values.sort((a2, b2) => a2 - b2); + const middle = Math.floor(values.length / 2); + if (values.length % 2 === 0) { + return (sortedValues[middle - 1] + sortedValues[middle]) / 2; + } else { + return sortedValues[middle]; + } +}; +var getRange = (values) => { + return getMaximum(values) - getMinimum(values); +}; + +// src/react/loom-app/footer-cell-container/number-calculation.ts +var getNumberCalculationContent = (values, format, currency, calculation) => { + const value = getNumberCalculation(values, calculation).toString(); + if (format === "currency" /* CURRENCY */) { + return getNumberCellContent(format, value, { + currency + }); + } + return value; +}; +var getNumberCalculation = (values, type) => { + if (type === "avg" /* AVG */) { + return round2Digits(getAverage(values)); + } else if (type === "max" /* MAX */) { + return getMaximum(values); + } else if (type === "min" /* MIN */) { + return getMinimum(values); + } else if (type === "range" /* RANGE */) { + return round2Digits(getRange(values)); + } else if (type === "sum" /* SUM */) { + return round2Digits(getSum(values)); + } else if (type === "median" /* MEDIAN */) { + return round2Digits(getMedian(values)); + } else { + throw new Error("Unhandled number calculation type"); + } +}; + +// src/react/loom-app/footer-cell-container/index.tsx +var import_jsx_runtime124 = __toESM(require_jsx_runtime()); +function FooterCellContainer({ + columnId, + columnCells, + columnTags, + dateFormat, + numberFormat, + rows, + width, + calculationType, + currencyType, + cellType, + onTypeChange +}) { + const { + menu, + triggerRef, + triggerPosition, + isOpen, + onOpen, + onClose, + onRequestClose + } = useMenu(); + function handleTypeClick(value) { + onTypeChange(columnId, value); + onClose(); + } + let content = ""; + if (isNumberCalcuation(calculationType)) { + const cellValues = columnCells.filter((cell) => isNumber(cell.content)).map((cell) => parseFloat(cell.content)); + if (cellValues.length !== 0) + content = getNumberCalculationContent( + cellValues, + numberFormat, + currencyType, + calculationType + ); + } else { + content = getGeneralCalculationContent( + columnId, + rows, + columnTags, + cellType, + calculationType, + dateFormat + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(import_jsx_runtime124.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(menu_trigger_default, { menu, isCell: true, ref: triggerRef, onOpen, children: /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)( + "div", + { + className: "dataloom-cell--footer__container dataloom-selectable", + style: { + width + }, + children: [ + calculationType === "none" /* NONE */ && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Text, { value: "Calculate", variant: "faint" }), + calculationType !== "none" /* NONE */ && /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(Stack, { spacing: "sm", isHorizontal: true, children: [ + /* @__PURE__ */ (0, import_jsx_runtime124.jsx)( + Text, + { + value: getShortDisplayNameForCalculationType( + calculationType + ), + variant: "muted" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Text, { value: content, variant: "semibold" }) + ] }) + ] + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime124.jsx)( + CalculationMenu, + { + id: menu.id, + isOpen, + triggerPosition, + cellType, + value: calculationType, + onClick: handleTypeClick, + onRequestClose, + onClose + } + ) + ] }); +} + +// src/react/loom-app/app/index.tsx +var import_jsx_runtime125 = __toESM(require_jsx_runtime()); +function App10() { + const logger = useLogger(); + const { reactAppId, isMarkdownView } = useAppMount(); + const { loomState, resizingColumnId, searchText, onRedo, onUndo } = useLoomState(); + const tableRef = import_react55.default.useRef(null); + const { onRequestCloseTop } = useMenuOperations(); + useExportEvents(loomState); + useRowEvents(); + useColumnEvents(); + useMenuEvents(); + const { onFocusKeyDown } = useFocus(); + const { onFrozenColumnsChange, onCalculationRowToggle } = useTableSettings(); + const { onFilterAdd, onFilterUpdate, onFilterDelete, filterByFilters: filterByFilters2 } = useFilter(); + const { + onColumnWidthChange, + onColumnTypeClick, + onColumnToggle, + onColumnSortClick, + onColumnHideClick, + onColumnDeleteClick, + onCalculationTypeChange, + onNumberFormatChange, + onNumberPrefixChange, + onNumberSeparatorChange, + onNumberSuffixChange, + onAspectRatioClick, + onWrapContentToggle, + onVerticalPaddingClick, + onSortRemoveClick, + onColumnAddClick, + onHorizontalPaddingClick, + onDateFormatChange, + onColumnContentChange + } = useColumn(); + const { + onRowAddClick, + onRowDeleteClick, + onRowInsertAboveClick, + onRowInsertBelowClick + } = useRow(); + const { onCellDateTimeChange, onCellContentChange, onExternalLinkToggle } = useCell(); + const { + onTagCellAdd, + onTagAdd, + onTagCellRemove, + onTagCellMultipleRemove, + onTagColorChange, + onTagDeleteClick, + onTagContentChange + } = useTag(); + const firstColumnId = useUUID(); + const lastColumnId = useUUID(); + function handleScrollToTopClick() { + var _a2; + (_a2 = tableRef.current) == null ? void 0 : _a2.scrollToIndex(0); + } + function handleScrollToBottomClick() { + var _a2; + (_a2 = tableRef.current) == null ? void 0 : _a2.scrollToIndex(filteredBodyRows.length - 1); + } + function handleClick(e) { + logger("App handleClick"); + e.stopPropagation(); + onRequestCloseTop(); + } + function handleKeyDown(e) { + logger("App handleKeyDown"); + e.stopPropagation(); + if (isWindowsRedoDown(e) || isMacRedoDown(e)) { + e.preventDefault(); + onRedo(); + } else if (isWindowsUndoDown(e) || isMacUndoDown(e)) { + e.preventDefault(); + onUndo(); + } else { + onFocusKeyDown(e); + } nltEventSystem.dispatchEvent("keydown", e); } - const { - headerRows, - footerRows, - columns, - headerCells, - bodyCells, - footerCells, - filterRules - } = tableState.model; - let filteredBodyRows = filterBodyRowsByRules2(tableState); - filteredBodyRows = filterBodyRowsBySearch( - tableState, + const { columns, filters, settings } = loomState.model; + const { numFrozenColumns, showCalculationRow } = settings; + let filteredBodyRows = filterByFilters2(loomState); + filteredBodyRows = filterRowsBySearch( + loomState, filteredBodyRows, searchText ); const visibleColumns = columns.filter((column) => column.isVisible); - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { - "data-id": appId, - className: "NLT__app", - css: import_emotion_react_cjs.css` - display: flex; - flex-direction: column; - width: 100%; - height: 100%; - padding: 10px 0px; - border-top: 1px solid var(--background-modifier-border); - border-bottom: ${isMarkdownView ? "1px solid var(--background-modifier-border)" : "unset"}; - `, - onKeyDown: handleKeyDown, - onClick: handleClick, - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(OptionBar, { - headerCells, - columns, - filterRules, - onColumnToggle: handleColumnToggle, - onSortRemoveClick: handleSortRemoveClick, - onRuleAddClick: handleRuleAddClick, - onRuleDeleteClick: handleRuleDeleteClick, - onRuleFilterTypeChange: handleRuleFilterTypeChange, - onRuleColumnChange: handleRuleColumnChange, - onRuleTextChange: handleRuleTextChange, - onRuleToggle: handleRuleToggle, - onRuleTagsChange: handleRuleTagsChange - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Table2, { - headerRows: headerRows.map((row) => { - return { - id: row.id, - cells: [ - { - id: firstColumnId, - columnId: firstColumnId, - content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - css: import_emotion_react_cjs.css` - width: 35px; - ` - }) - }, - ...visibleColumns.map((column) => { - const { - id: columnId, - width, - type, - sortDir, - shouldWrapOverflow, - currencyType, - dateFormat, - verticalPadding, - horizontalPadding, - aspectRatio - } = column; - const cell = headerCells.find( - (cell2) => cell2.columnId === columnId - ); - if (!cell) - throw new CellNotFoundError({ - columnId - }); - const { id: cellId, markdown, rowId } = cell; - return { - id: cellId, - columnId, - content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(HeaderCell2, { - cellId, - rowId, - dateFormat, - currencyType, - verticalPadding, - horizontalPadding, - aspectRatio, - numColumns: columns.length, - columnId: cell.columnId, - resizingColumnId, - width, - shouldWrapOverflow, - markdown, - type, - sortDir, - onSortClick: handleColumnSortClick, - onWidthChange: handleColumnWidthChange, - onDeleteClick: handleColumnDeleteClick, - onTypeSelect: handleColumnTypeClick, - onDateFormatChange: handleDateFormatChange, - onWrapOverflowToggle: handleWrapContentToggle, - onNameChange: handleHeaderCellContentChange, - onCurrencyChange: handleCurrencyChange, - onVerticalPaddingClick: handleVerticalPaddingClick, - onHorizontalPaddingClick: handleHorizontalPaddingClick, - onAspectRatioClick: handleAspectRatioClick - }, columnId) - }; - }), - { - id: lastColumnId, - columnId: lastColumnId, - content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(NewColumnButton, { - onClick: handleNewColumnClick - }) - } - ] - }; - }), - bodyRows: filteredBodyRows.map((row) => { - const { id: rowId, lastEditedTime, creationTime } = row; - return { - id: rowId, - cells: [ - { - id: firstColumnId, - content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(RowOptions, { - rowId, - onDeleteClick: handleRowDeleteClick - }) - }, - ...visibleColumns.map((column) => { - const { - id: columnId, - width, - type, - shouldWrapOverflow, - currencyType, - dateFormat, - tags, - verticalPadding, - horizontalPadding, - aspectRatio - } = column; - const cell = bodyCells.find( - (cell2) => cell2.columnId === columnId && cell2.rowId === row.id - ); - if (!cell) - throw new CellNotFoundError({ - columnId, - rowId - }); - const { - id: cellId, - markdown, - dateTime, - tagIds - } = cell; - return { - id: cellId, - content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(BodyCell5, { - cellId, - verticalPadding, - horizontalPadding, - aspectRatio, - rowId, - columnTags: tags, - cellTagIds: tagIds, - columnId, - rowCreationTime: creationTime, - dateFormat, - columnCurrencyType: currencyType, - rowLastEditedTime: lastEditedTime, - dateTime, - markdown, - columnType: type, - shouldWrapOverflow, - width, - onTagClick: handleTagCellAdd, - onTagRemoveClick: handleTagCellRemove, - onTagMultipleRemove: handleTagCellMultipleRemove, - onContentChange: handleBodyCellContentChange, - onTagColorChange: handleTagColorChange, - onTagDelete: handleTagDeleteClick, - onDateTimeChange: handleCellDateTimeChange, - onDateFormatChange: handleDateFormatChange, - onTagAdd: handleTagAdd - }, cellId) - }; - }), - { - id: lastColumnId, - content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, {}) - } - ] - }; - }), - footerRows: footerRows.map((row, i2) => { - if (i2 === 0) { - return { - id: row.id, + let className = "dataloom-app"; + if (isMarkdownView) + className += " dataloom-app--markdown-view"; + return /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)( + "div", + { + id: reactAppId, + className, + onKeyDown: handleKeyDown, + onClick: handleClick, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime125.jsx)( + OptionBar, + { + columns, + filters, + numFrozenColumns, + showCalculationRow, + onColumnToggle, + onSortRemoveClick, + onFilterAddClick: onFilterAdd, + onFilterDeleteClick: onFilterDelete, + onFilterUpdate, + onFrozenColumnsChange, + onCalculationRowToggle + } + ), + /* @__PURE__ */ (0, import_jsx_runtime125.jsx)( + table_default, + { + numFrozenColumns, + ref: tableRef, + headerRow: { cells: [ { id: firstColumnId, - content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, {}) + columnId: firstColumnId, + content: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("div", { className: "dataloom-cell--left-corner" }) + }, + ...visibleColumns.map((column) => { + const { + id: columnId, + width, + type, + sortDir, + shouldWrapOverflow, + content, + currencyType, + numberFormat, + numberPrefix, + numberSeparator, + numberSuffix, + dateFormat, + verticalPadding, + horizontalPadding, + aspectRatio + } = column; + return { + id: columnId, + columnId, + content: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)( + HeaderCellContainer, + { + dateFormat, + currencyType, + numberPrefix, + numberSeparator, + numberFormat, + numberSuffix, + verticalPadding, + horizontalPadding, + aspectRatio, + numColumns: columns.length, + columnId, + resizingColumnId, + width, + shouldWrapOverflow, + content, + type, + sortDir, + onSortClick: onColumnSortClick, + onWidthChange: onColumnWidthChange, + onDeleteClick: onColumnDeleteClick, + onTypeSelect: onColumnTypeClick, + onDateFormatChange, + onWrapOverflowToggle: onWrapContentToggle, + onContentChange: onColumnContentChange, + onNumberFormatChange, + onNumberPrefixChange, + onNumberSeparatorChange, + onNumberSuffixChange, + onVerticalPaddingClick, + onHorizontalPaddingClick, + onAspectRatioClick, + onHideClick: onColumnHideClick + }, + columnId + ) + }; + }), + { + id: lastColumnId, + columnId: lastColumnId, + content: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(NewColumnButton, { onClick: onColumnAddClick }) + } + ] + }, + bodyRows: filteredBodyRows.map((row) => { + const { id: rowId, lastEditedTime, creationTime } = row; + return { + id: rowId, + cells: [ + { + id: firstColumnId, + content: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)( + RowOptions2, + { + rowId, + onDeleteClick: onRowDeleteClick, + onInsertAboveClick: onRowInsertAboveClick, + onInsertBelowClick: onRowInsertBelowClick + } + ) + }, + ...visibleColumns.map((column) => { + const { + id: columnId, + width, + type, + shouldWrapOverflow, + currencyType, + numberPrefix, + numberSeparator, + numberFormat, + numberSuffix, + dateFormat, + tags, + verticalPadding, + horizontalPadding, + aspectRatio + } = column; + const cell = row.cells.find( + (cell2) => cell2.columnId === columnId + ); + if (!cell) + throw new CellNotFoundError({ + columnId, + rowId + }); + const { + id: cellId, + content, + dateTime, + tagIds, + isExternalLink + } = cell; + return { + id: cellId, + content: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)( + BodyCellContainer, + { + cellId, + isExternalLink, + verticalPadding, + horizontalPadding, + aspectRatio, + columnTags: tags, + cellTagIds: tagIds, + columnId, + numberFormat, + rowCreationTime: creationTime, + dateFormat, + currencyType, + numberPrefix, + numberSuffix, + numberSeparator, + rowLastEditedTime: lastEditedTime, + dateTime, + content, + columnType: type, + shouldWrapOverflow, + width, + onTagClick: onTagCellAdd, + onTagRemoveClick: onTagCellRemove, + onTagMultipleRemove: onTagCellMultipleRemove, + onContentChange: onCellContentChange, + onTagColorChange, + onTagDelete: onTagDeleteClick, + onDateTimeChange: onCellDateTimeChange, + onDateFormatChange, + onTagAdd, + onExternalLinkToggle, + onTagContentChange + }, + cellId + ) + }; + }), + { + id: lastColumnId, + content: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_jsx_runtime125.Fragment, {}) + } + ] + }; + }), + footer: showCalculationRow ? { + cells: [ + { + id: firstColumnId, + content: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_jsx_runtime125.Fragment, {}) }, ...visibleColumns.map((column) => { const { @@ -55264,737 +61595,269 @@ var TableApp = () => { type, currencyType, dateFormat, + numberFormat, width, tags, - functionType + calculationType } = column; - const cell = footerCells.find( - (cell2) => cell2.rowId === row.id && cell2.columnId === column.id - ); - if (!cell) - throw new CellNotFoundError({ - rowId: row.id, - columnId: column.id - }); - const { id: cellId } = cell; - const columnBodyCells = bodyCells.filter( - (cell2) => filteredBodyRows.find( - (row2) => row2.id === cell2.rowId - ) !== void 0 - ); + const columnCells = filteredBodyRows.map((row) => { + const cell = row.cells.find( + (cell2) => cell2.columnId === columnId + ); + if (!cell) + throw new CellNotFoundError( + { + columnId, + rowId: row.id + } + ); + return cell; + }); return { - id: cell.id, - content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__footer-td-container", - css: import_emotion_react_cjs.css` - width: ${width}; - `, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(FunctionCell, { + id: columnId, + content: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)( + FooterCellContainer, + { columnId, columnTags: tags, - cellId, + numberFormat, currencyType, dateFormat, - bodyCells: columnBodyCells, - bodyRows: filteredBodyRows, - functionType, + columnCells, + rows: filteredBodyRows, + calculationType, + width, cellType: type, - onFunctionTypeChange: handleFunctionTypeChange - }) - }) + onTypeChange: onCalculationTypeChange + } + ) }; }), { id: lastColumnId, - content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, {}) + content: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_jsx_runtime125.Fragment, {}) } ] - }; + } : void 0 } - return { - id: row.id, - cells: [ - { - id: firstColumnId, - content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, {}) - }, - ...visibleColumns.map((column, i3) => { - const cell = footerCells.find( - (cell2) => cell2.rowId === row.id && cell2.columnId === column.id - ); - if (!cell) - throw new CellNotFoundError({ - rowId: row.id, - columnId: column.id - }); - if (i3 === 0) { - return { - id: cell.id, - content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - style: { width: column.width }, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(NewRowButton, { - onClick: handleNewRowClick - }) - }) - }; - } - return { - id: cell.id, - content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, {}) - }; - }), - { - id: lastColumnId, - content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, {}) - } - ] - }; - }) - }) - ] - }); -}; -function AppWrapper({ store: store2, tableState, onSaveState }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Provider_default, { - store: store2, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TableStateProvider, { - initialState: tableState, - onSaveState, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuProvider, { - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(DragProvider, { - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TableApp, {}) - }) - }) - }) - }); + ), + /* @__PURE__ */ (0, import_jsx_runtime125.jsx)( + BottomBar, + { + onRowAddClick, + onScrollToTopClick: handleScrollToTopClick, + onScrollToBottomClick: handleScrollToBottomClick, + onUndoClick: onUndo, + onRedoClick: onRedo + } + ) + ] + } + ); } -// src/obsidian-shim/build/notion-like-table.tsx -function NotionLikeTable({ - appId, - leaf, +// src/react/shared/error-boundary/index.tsx +var import_react56 = __toESM(require_react()); +var import_jsx_runtime126 = __toESM(require_jsx_runtime()); +var ErrorBoundary = class extends import_react56.default.Component { + constructor(props) { + super(props); + this.state = { hasError: false }; + } + componentDidCatch(error, errorInfo) { + this.setState({ + hasError: true, + errorInfo, + errorMessage: error.message + }); + } + render() { + var _a2, _b; + let copyErrorMessage = ""; + if (this.state.hasError) { + copyErrorMessage = `Error message: ${this.state.errorMessage} +Error info: ${(_a2 = this.state.errorInfo) == null ? void 0 : _a2.componentStack}`; + return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)( + ErrorDisplay, + { + title: "DataLoom experienced an error", + errorMessage: (_b = this.state.errorMessage) != null ? _b : "", + copyErrorMessage, + helpMessage: "For help fixing this error please post in the bugs channel on the Discord:", + helpURL: "https://discord.gg/QaFbepMdN4" + } + ); + } + return this.props.children; + } +}; +var error_boundary_default = ErrorBoundary; + +// src/react/loom-app/index.tsx +var import_jsx_runtime127 = __toESM(require_jsx_runtime()); +function LoomApp({ + app, + reactAppId, + mountLeaf, isMarkdownView, store: store2, - filePath, - tableState, + loomFile, + loomState, onSaveState }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MountProvider, { - leaf, - appId, - isMarkdownView, - filePath, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(AppWrapper, { - store: store2, - tableState, - onSaveState - }) - }); -} - -// src/shared/types/types-6.7.0.ts -var GeneralFunction2 = /* @__PURE__ */ ((GeneralFunction3) => { - GeneralFunction3["NONE"] = "none"; - GeneralFunction3["COUNT_ALL"] = "count_all"; - GeneralFunction3["COUNT_VALUES"] = "count_values"; - GeneralFunction3["COUNT_UNIQUE"] = "count_unique"; - GeneralFunction3["COUNT_EMPTY"] = "count_empty"; - GeneralFunction3["COUNT_NOT_EMPTY"] = "count_not_empty"; - GeneralFunction3["PERCENT_EMPTY"] = "percent_empty"; - GeneralFunction3["PERCENT_NOT_EMPTY"] = "percent_not_empty"; - return GeneralFunction3; -})(GeneralFunction2 || {}); -var GeneralFunction670 = GeneralFunction2; - -// src/shared/types/types-6.1.0.ts -var CurrencyType8 = /* @__PURE__ */ ((CurrencyType9) => { - CurrencyType9["UNITED_STATES"] = "USD"; - CurrencyType9["CANADA"] = "CAD"; - CurrencyType9["SINGAPORE"] = "SGB"; - CurrencyType9["EUROPE"] = "EUR"; - CurrencyType9["POUND"] = "GBP"; - CurrencyType9["RUSSIA"] = "RUB"; - CurrencyType9["AUSTRALIA"] = "AUD"; - CurrencyType9["JAPAN"] = "JPY"; - CurrencyType9["INDIA"] = "INR"; - CurrencyType9["CHINA"] = "CNY"; - CurrencyType9["BRAZIL"] = "BRL"; - CurrencyType9["COLOMBIA"] = "COP"; - CurrencyType9["MEXICO"] = "MXN"; - CurrencyType9["ARGENTINA"] = "ARS"; - return CurrencyType9; -})(CurrencyType8 || {}); -var CurrencyType610 = CurrencyType8; - -// src/shared/types/types-6.2.0.ts -var DateFormat8 = /* @__PURE__ */ ((DateFormat9) => { - DateFormat9["MM_DD_YYYY"] = "mm/dd/yyyy"; - DateFormat9["DD_MM_YYYY"] = "dd/mm/yyyy"; - DateFormat9["YYYY_MM_DD"] = "yyyy/mm/dd"; - DateFormat9["FULL"] = "full"; - DateFormat9["RELATIVE"] = "relative"; - return DateFormat9; -})(DateFormat8 || {}); -var DateFormat620 = DateFormat8; - -// src/shared/versioning.ts -var legacyVersionToString = (version) => { - return version.toString().split("").join("."); -}; -var isVersionLessThan = (oldVersion, newVersion) => { - const oldVersionArray = oldVersion.split("."); - const newVersionArray = newVersion.split("."); - for (let i2 = 0; i2 < oldVersionArray.length; i2++) { - const oldVersionNumber = parseInt(oldVersionArray[i2]); - const newVersionNumber = parseInt(newVersionArray[i2]); - if (oldVersionNumber < newVersionNumber) { - return true; - } - if (oldVersionNumber > newVersionNumber) { - return false; - } - } - return false; -}; - -// src/data/serialize-table-state.ts -var serializeTableState = (tableState) => { - return JSON.stringify(tableState, null, 2); -}; -var deserializeTableState = (data) => { - const parsedState = JSON.parse(data); - const untypedVersion = parsedState["pluginVersion"]; - let pluginVersion = ""; - if (typeof untypedVersion === "number") { - pluginVersion = legacyVersionToString(untypedVersion); - } else if (typeof untypedVersion === "string") { - pluginVersion = untypedVersion; - } - let currentState = parsedState; - if (isVersionLessThan(pluginVersion, "6.1.0")) { - const tableState2 = currentState; - const { columns } = tableState2.model; - columns.forEach((column) => { - const typedColumn = column; - typedColumn.currencyType = CurrencyType610.UNITED_STATES; - }); - } - if (isVersionLessThan(pluginVersion, "6.2.0")) { - const tableState2 = currentState; - const { columns } = tableState2.model; - columns.forEach((column) => { - const typedColumn = column; - typedColumn.dateFormat = DateFormat620.YYYY_MM_DD; - }); - } - if (isVersionLessThan(pluginVersion, "6.3.0")) { - const tableState2 = currentState; - const { columns, rows, cells } = tableState2.model; - columns.forEach((column) => { - const typedColumn = column; - if (typedColumn["hasAutoWidth"]) { - delete typedColumn.hasAutoWidth; - } - }); - rows.forEach((row, i2) => { - const typedRow = row; - typedRow.index = i2; - }); - columns.forEach((column) => { - const typedColumn = column; - typedColumn.isVisible = true; - }); - cells.forEach((cell) => { - const typedCell = cell; - typedCell.dateTime = null; - }); - } - if (isVersionLessThan(pluginVersion, "6.4.0")) { - const tableState2 = parsedState; - const { columns, tags, rows, cells } = tableState2.model; - const newState = __spreadProps(__spreadValues({}, tableState2), { - model: { - columns: [], - headerRows: [], - bodyRows: [], - footerRows: [], - headerCells: [], - bodyCells: [], - footerCells: [], - tags: [] - } - }); - newState.model.headerRows = []; - newState.model.headerRows.push(createHeaderRow()); - newState.model.bodyRows = rows.filter((_row, i2) => i2 !== 0).map((row) => { - return { - id: row.id, - index: row.index - 1, - creationTime: row.creationTime, - lastEditedTime: row.lastEditedTime, - menuCellId: row.menuCellId - }; - }); - newState.model.footerRows = []; - newState.model.footerRows.push(createFooterRow()); - newState.model.footerRows.push(createFooterRow()); - newState.model.columns = columns.map((column) => { - return { - id: column.id, - sortDir: column.sortDir, - width: column.width, - type: column.type, - isVisible: column.isVisible, - dateFormat: column.dateFormat, - currencyType: column.currencyType, - shouldWrapOverflow: column.shouldWrapOverflow - }; - }); - newState.model.headerCells = cells.filter((cell) => cell.isHeader).map((cell) => { - return { - id: cell.id, - columnId: cell.columnId, - rowId: newState.model.headerRows[0].id, - markdown: cell.markdown - }; - }); - newState.model.bodyCells = cells.filter((cell) => !cell.isHeader).map((cell) => { - return { - id: cell.id, - columnId: cell.columnId, - rowId: cell.rowId, - dateTime: cell.dateTime, - markdown: cell.markdown - }; - }); - for (let i2 = 0; i2 < 2; i2++) { - columns.forEach((column) => { - newState.model.footerCells.push({ - id: v4_default(), - columnId: column.id, - rowId: newState.model.footerRows[i2].id, - functionType: GeneralFunction670.NONE - }); - }); - } - newState.model.tags = tags; - currentState = newState; - } - if (isVersionLessThan(pluginVersion, "6.8.0")) { - const tableState2 = currentState; - const { model } = tableState2; - const { bodyCells, columns } = model; - const invalidState = currentState; - if (invalidState["bodyRows"]) { - delete invalidState.bodyRows; - } - const unknownModel = model; - const typedModal = unknownModel; - typedModal.filterRules = []; - bodyCells.forEach((cell) => { - const column = columns.find( - (column2) => column2.id === cell.columnId - ); - if (!column) - throw new ColumNotFoundError(cell.columnId); - if (column.type === "checkbox" /* CHECKBOX */) { - if (cell.markdown === "") { - cell.markdown = CHECKBOX_MARKDOWN_UNCHECKED; + return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(error_boundary_default, { children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)( + AppMountProvider, + { + app, + mountLeaf, + reactAppId, + isMarkdownView, + loomFile, + children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Provider_default, { store: store2, children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)( + LoomStateProvider, + { + initialState: loomState, + onSaveState, + children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(DragProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(MenuProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(App10, {}) }) }) } - } - }); + ) }) + } + ) }); +} + +// src/obsidian/embedded/embedded-app-manager.tsx +var import_jsx_runtime128 = __toESM(require_jsx_runtime()); +var embeddedApps = []; +var loadPreviewModeApps = (app, markdownLeaves, pluginVersion) => { + for (let i2 = 0; i2 < markdownLeaves.length; i2++) { + const leaf = markdownLeaves[i2]; + const view = leaf.view; + const mode = view.getMode(); + if (mode === "preview") + loadEmbeddedLoomApps(app, pluginVersion, leaf, "preview"); } - if (isVersionLessThan(pluginVersion, "6.9.1")) { - const tableState2 = currentState; - const { footerCells } = tableState2.model; - footerCells.forEach((cell) => { - const typedCell = cell; - if (typedCell["functionType"]) { - typedCell.functionType = typedCell.functionType.replace(/_/g, "-"); - } - }); - } - if (isVersionLessThan(pluginVersion, "6.10.0")) { - const tableState2 = currentState; - const { columns, tags, bodyCells, bodyRows } = tableState2.model; - columns.forEach((column) => { - const typedColumn = column; - typedColumn.tags = []; - }); - bodyCells.forEach((cell) => { - const typedCell = cell; - typedCell.tagIds = []; - }); - tags.forEach((tag) => { - const { id: id2, columnId, markdown, color } = tag; - const column = columns.find( - (column2) => column2.id === columnId - ); - if (!column) - throw new ColumNotFoundError(columnId); - const typedColumn = column; - typedColumn.tags.push({ - id: id2, - markdown, - color - }); - tag.cellIds.forEach((cellId) => { - const cell = bodyCells.find( - (cell2) => cell2.id === cellId - ); - if (!cell) - return; - const typedCell = cell; - typedCell.tagIds.push(id2); - }); - }); - const unknownModel = tableState2.model; - const typedModel = unknownModel; - delete typedModel.tags; - bodyRows.forEach((row) => { - const typedRow = row; - if (typedRow["menuCellId"]) { - delete typedRow.menuCellId; - } - }); - } - if (isVersionLessThan(pluginVersion, "6.12.3")) { - const tableState2 = currentState; - const { columns, footerCells } = tableState2.model; - footerCells.forEach((cell) => { - const column = columns.find( - (column2) => column2.id === cell.columnId - ); - if (!column) - throw new ColumNotFoundError(cell.columnId); - const unknownColumn = column; - const typedColumn = unknownColumn; - typedColumn.functionType = cell.functionType; - const unknownCell = cell; - const typedCell = unknownCell; - if (typedCell["functionType"]) { - delete typedCell.functionType; - } - }); - } - if (isVersionLessThan(pluginVersion, "6.17.0")) { - const tableState2 = currentState; - const { columns } = tableState2.model; - columns.forEach((column) => { - const typedColumn = column; - typedColumn.isLocked = false; - typedColumn.aspectRatio = "16/9" /* SIXTEEN_BY_NINE */; - typedColumn.horizontalPadding = "unset"; - typedColumn.verticalPadding = "unset"; - }); - } - if (isVersionLessThan(pluginVersion, "6.18.6")) { - const tableState2 = currentState; - const { columns, bodyRows } = tableState2.model; - columns.forEach((column) => { - const typedColumn = column; - typedColumn.sortDir = "default" /* NONE */; - }); - bodyRows.sort((a2, b2) => a2.index - b2.index); - bodyRows.forEach((row, i2) => { - const typedRow = row; - typedRow.index = i2; - }); - } - const tableState = currentState; - tableState.pluginVersion = CURRENT_PLUGIN_VERSION; - return tableState; }; - -// src/obsidian/nlt-export-modal.tsx -var import_obsidian9 = require("obsidian"); -var import_client = __toESM(require_client()); - -// src/react/export-app/index.tsx -var import_react100 = __toESM(require_react()); - -// src/react/export-app/export-type-select.tsx -function ExportTypeSelect({ value, onChange }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - isVertical: true, - spacing: "xl", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("label", { - htmlFor: "type-select", - children: "File Type" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("select", { - id: "type-select", - css: import_emotion_react_cjs.css` - background-color: var( - --background-secondary-alt - ) !important; - `, - value, - onChange: (e) => onChange(e.target.value), - children: Object.values(ExportType).map((type) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { - value: type, - children: type - }, type)) - }) - ] - }); -} - -// src/react/export-app/content-textarea.tsx -function ContentTextArea({ value }) { - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("textarea", { - readOnly: true, - css: import_emotion_react_cjs.css` - width: 100%; - height: 200px; - resize: vertical; - `, - value - }); -} - -// src/react/export-app/index.tsx -var import_obsidian8 = require("obsidian"); -function ExportApp({ tableState, filePath }) { - const [exportType, setExportType] = import_react100.default.useState( - "Select an option" /* UNSELECTED */ +var loadEmbeddedLoomApps = (app, pluginVersion, markdownLeaf, mode) => { + const view = markdownLeaf.view; + const linkEls = getEmbeddedLoomLinkEls(view, mode); + linkEls.forEach( + (linkEl) => processLinkEl(app, pluginVersion, markdownLeaf, linkEl, mode) ); - const { exportRenderMarkdown } = useAppSelector((state) => state.global); - const [renderMarkdown2, setRenderMarkdown] = import_react100.default.useState(exportRenderMarkdown); - function handleCopyClick(value) { - return __async(this, null, function* () { - yield navigator.clipboard.writeText(value); - new import_obsidian8.Notice("Copied to clipboard"); - }); +}; +var purgeEmbeddedLoomApps = (leaves) => { + embeddedApps = embeddedApps.filter( + (app) => leaves.find( + (l2) => { + var _a2; + return ((_a2 = l2.view.file) == null ? void 0 : _a2.path) === app.leafFilePath; + } + ) + ); +}; +var processLinkEl = (app, pluginVersion, leaf, linkEl, mode) => __async(void 0, null, function* () { + var _a2, _b; + setLinkSize(linkEl); + if (hasLoadedEmbeddedLoom(linkEl)) + return; + const sourcePath = (_b = (_a2 = leaf.view.file) == null ? void 0 : _a2.path) != null ? _b : ""; + const file = findEmbeddedLoomFile(app, linkEl, sourcePath); + if (!file) + return; + resetLinkStyles(linkEl); + const containerEl = renderContainerEl(linkEl); + const data = yield app.vault.read(file); + const appId = createAppId(); + const embeddedApp = { + id: appId, + leaf, + leafFilePath: sourcePath, + containerEl, + file, + mode + }; + embeddedApps.push(embeddedApp); + const root = (0, import_client4.createRoot)(containerEl); + embeddedApp.root = root; + try { + const state = deserializeState(data, pluginVersion); + renderApp(app, appId, leaf, file, root, state); + } catch (err) { + renderErrorApp(root, err); } - function handleDownloadClick() { - const fileName = getExportFileName(filePath); - const blobType = getBlobTypeForExportType(exportType); - downloadFile(fileName, blobType, content); - } - let content = ""; - if (exportType === "Markdown" /* MARKDOWN */) { - content = exportToMarkdown(tableState, renderMarkdown2); - } else if (exportType === "CSV" /* CSV */) { - content = exportToCSV(tableState, renderMarkdown2); - } - return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { - className: "NLT__export-app", - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Padding, { - p: "xl", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("h5", { - css: import_emotion_react_cjs.css` - margin-top: 0px; - margin-bottom: 0px; - `, - children: "Notion-Like Tables Export" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("hr", { - css: import_emotion_react_cjs.css` - margin: 1rem 0; - ` - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - spacing: "xl", - isVertical: true, - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(ExportTypeSelect, { - value: exportType, - onChange: setExportType - }), - exportType !== "Select an option" /* UNSELECTED */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(ContentTextArea, { - value: content - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - isVertical: true, - spacing: "sm", - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("label", { - htmlFor: "render-markdown", - children: "Render markdown" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { - id: "render-markdown", - type: "checkbox", - checked: renderMarkdown2, - onChange: () => setRenderMarkdown(!renderMarkdown2) - }) - ] - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { - children: [ - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("button", { - className: "mod-cta", - onClick: handleDownloadClick, - children: "Download" - }), - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("button", { - css: import_emotion_react_cjs.css` - background-color: var( - --background-secondary-alt - ) !important; - `, - onClick: () => handleCopyClick(content), - children: "Copy to clipboard" - }) - ] - }) - ] - }) - ] - }) - ] - }) +}); +var renderApp = (app, reactAppId, leaf, file, root, state) => { + const THROTTLE_TIME_MILLIS = 2e3; + const throttleHandleSave = import_lodash18.default.throttle(handleSave, THROTTLE_TIME_MILLIS); + root.render( + /* @__PURE__ */ (0, import_jsx_runtime128.jsx)( + LoomApp, + { + app, + reactAppId, + isMarkdownView: true, + loomFile: file, + mountLeaf: leaf, + store, + loomState: state, + onSaveState: (appId, state2) => throttleHandleSave(app, file, appId, state2) + } + ) + ); +}; +var renderErrorApp = (root, error) => { + root.render(/* @__PURE__ */ (0, import_jsx_runtime128.jsx)(ErrorApp, { error, isEmbeddedApp: true })); +}; +var handleSave = (app, file, appId, state) => __async(void 0, null, function* () { + const serialized = serializeState(state); + yield app.vault.modify(file, serialized); + app.workspace.trigger(EVENT_APP_REFRESH, file.path, appId, state); +}); +var renderContainerEl = (linkEl) => { + const containerEl = linkEl.createDiv({ + cls: "dataloom-embedded-container" }); + containerEl.style.height = "100%"; + containerEl.style.width = "100%"; + containerEl.style.padding = "10px 0px"; + containerEl.addEventListener("click", (e) => { + e.stopPropagation(); + }); + return containerEl; +}; +var resetLinkStyles = (linkEl) => { + linkEl.empty(); + linkEl.style.backgroundColor = "var(--color-primary)"; + linkEl.style.cursor = "unset"; + linkEl.style.margin = "0px"; + linkEl.style.padding = "0px"; +}; +var setLinkSize = (linkEl) => { + const { defaultEmbedWidth, defaultEmbedHeight } = store.getState().global.settings; + const width = getLinkWidth(linkEl, defaultEmbedWidth); + const height = getLinkHeight(linkEl, defaultEmbedHeight); + linkEl.style.width = width; + linkEl.style.height = height; +}; + +// src/obsidian/editing-view-plugin.tsx +function EditingViewPlugin(app, pluginVersion) { + return import_view.ViewPlugin.fromClass( + class EditingViewPlugin { + update(update) { + const markdownLeaves = app.workspace.getLeavesOfType("markdown"); + const activeLeaf = markdownLeaves.find( + (leaf) => leaf.view.editor.cm === update.view + ); + if (!activeLeaf) + return; + loadEmbeddedLoomApps(app, pluginVersion, activeLeaf, "source"); + } + } + ); } -// src/obsidian/nlt-export-modal.tsx -var NLTExportModal = class extends import_obsidian9.Modal { - constructor(app2, filePath) { - super(app2); - __publicField(this, "root"); - __publicField(this, "filePath"); - this.app = app2; - this.filePath = filePath; - } - onOpen() { - const container = this.containerEl.children[1]; - const view = app.workspace.getActiveViewOfType(NLTView); - if (view) { - const data = view.getViewData(); - const state = deserializeTableState(data); - this.root = (0, import_client.createRoot)(container); - this.root.render( - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Provider_default, { - store, - children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(ExportApp, { - tableState: state, - filePath: this.filePath - }) - }) - ); - } - } - onClose() { - if (this.root) - this.root.unmount(); - } -}; - -// src/obsidian/nlt-view.tsx -var NOTION_LIKE_TABLES_VIEW = "notion-like-tables"; -var NLTView = class extends import_obsidian10.TextFileView { - constructor(leaf) { - super(leaf); - __publicField(this, "root"); - __publicField(this, "appId"); - __publicField(this, "data"); - __publicField(this, "handleRefreshEvent", (filePath, sourceAppId, state) => { - if (this.appId !== sourceAppId && filePath === this.file.path) { - const serialized = serializeTableState(state); - this.setViewData(serialized, true); - } - }); - __publicField(this, "handleSaveTableState", (appId, state) => { - const serialized = serializeTableState(state); - this.data = serialized; - this.requestSave(); - this.app.workspace.trigger( - EVENT_REFRESH_TABLES, - this.file.path, - appId, - state - ); - }); - this.root = null; - this.data = ""; - this.appId = v4_default(); - } - onOpen() { - return __async(this, null, function* () { - this.containerEl.style.paddingBottom = "48px"; - const container = this.containerEl.children[1]; - this.root = (0, import_client2.createRoot)(container); - this.addAction("settings", "Settings", () => { - this.app.setting.open(); - this.app.setting.openTabById("notion-like-tables"); - }); - this.addAction("download", "Export", () => { - new NLTExportModal(this.app, this.file.path).open(); - }); - this.app.workspace.on( - EVENT_REFRESH_TABLES, - this.handleRefreshEvent - ); - }); - } - onClose() { - return __async(this, null, function* () { - this.app.workspace.off(EVENT_REFRESH_TABLES, this.handleRefreshEvent); - if (this.root) { - this.root.unmount(); - this.root = null; - } - }); - } - setViewData(data, clear) { - this.data = data; - const state = deserializeTableState(data); - if (clear) { - setTimeout(() => { - if (this.root) { - this.root.unmount(); - const container = this.containerEl.children[1]; - this.root = (0, import_client2.createRoot)(container); - this.renderApp(this.appId, state); - } - }, 0); - } else { - this.renderApp(this.appId, state); - } - } - clear() { - this.data = "{}"; - } - getViewData() { - return this.data; - } - getViewType() { - return NOTION_LIKE_TABLES_VIEW; - } - getDisplayText() { - var _a; - const fileName = (_a = this.file) == null ? void 0 : _a.name; - if (fileName) { - const extensionIndex = fileName.lastIndexOf("."); - return fileName.substring(0, extensionIndex); - } - return ""; - } - renderApp(appId, state) { - if (this.root) { - this.root.render( - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(NotionLikeTable, { - leaf: this.leaf, - appId, - filePath: this.file.path, - isMarkdownView: false, - store, - tableState: state, - onSaveState: this.handleSaveTableState - }) - ); - } - } -}; - -// src/data/table-file.ts -var import_obsidian11 = require("obsidian"); -var import_obsidian12 = require("obsidian"); +// src/data/loom-file.ts +var import_obsidian18 = require("obsidian"); // src/data/utils.ts var splitFileExtension = (filePath) => { @@ -56007,15 +61870,15 @@ var splitFileExtension = (filePath) => { } return null; }; -var updateLinkReferences = (markdown, updatedFileInfo, oldPath, isFileNameUnique) => { - return markdown.replace(WIKI_LINK_REGEX, (match, path) => { +var updateLinkReferences = (content, newPath, oldPath) => { + return content.replace(WIKI_LINK_REGEX, (match, path) => { let comparePath = oldPath; if (!path.includes("/")) comparePath = stripDirectory(comparePath); if (!path.match(EXTENSION_REGEX)) comparePath = stripFileExtension(comparePath); if (comparePath === path) { - const linkText = getWikiLinkText(updatedFileInfo, isFileNameUnique); + const linkText = getWikiLinkText(newPath); return `[[${linkText}]]`; } return match; @@ -56023,10 +61886,10 @@ var updateLinkReferences = (markdown, updatedFileInfo, oldPath, isFileNameUnique }; // src/data/file-operations.ts -var createFolder = (folderPath) => __async(void 0, null, function* () { - return yield app.vault.createFolder(folderPath); +var createFolder = (app, folderPath) => __async(void 0, null, function* () { + return app.vault.createFolder(folderPath); }); -var createFile = (filePath, data, numExisting = 0) => __async(void 0, null, function* () { +var createFile = (app, filePath, data, numExisting = 0) => __async(void 0, null, function* () { try { const filePathExtension = splitFileExtension(filePath); if (filePathExtension == null) @@ -56038,268 +61901,161 @@ var createFile = (filePath, data, numExisting = 0) => __async(void 0, null, func } catch (err) { const error = err; if (error.message.includes("File already exists")) { - return createFile(filePath, data, numExisting + 1); + return createFile(app, filePath, data, numExisting + 1); } else { throw err; } } }); -// src/data/table-file.ts -var getActiveFileNameAndTimestamp = () => { - const activeView = app.workspace.getActiveViewOfType(import_obsidian11.MarkdownView); - if (!activeView) - return null; - const file = activeView.file; - if (!file) - return null; - return `${file.basename}-${(0, import_obsidian12.moment)().format().replaceAll(":", ".")}`; -}; -var getFileName = (useActiveFileNameAndTimestamp) => { - let fileName = DEFAULT_TABLE_NAME; - if (useActiveFileNameAndTimestamp) { - const name = getActiveFileNameAndTimestamp(); - if (name) - fileName = name; - } - return `${fileName}.${TABLE_EXTENSION}`; -}; -var getFilePath = (folderPath, fileName) => { - if (folderPath === "") - return fileName; - return folderPath + "/" + fileName; -}; -var createTableFile = (options) => __async(void 0, null, function* () { +// src/data/loom-file.ts +var createLoomFile = (app, folderPath, pluginVersion, defaultFrozenColumnCount) => __async(void 0, null, function* () { try { - if (options.folderPath !== "") { - if (app.vault.getAbstractFileByPath(options.folderPath) == null) - yield createFolder(options.folderPath); - } - const fileName = getFileName(options.useActiveFileNameAndTimestamp); - const tableState = createTableState(1, 1); - const serialized = serializeTableState(tableState); - const filePath = getFilePath(options.folderPath, fileName); - return yield createFile(filePath, serialized); + yield createFolderIfNotExists(app, folderPath); + const filePath = getFilePath(folderPath); + const loomState = createLoomState( + pluginVersion, + defaultFrozenColumnCount + ); + const serializedState = serializeState(loomState); + return yield createFile(app, filePath, serializedState); } catch (err) { - new import_obsidian11.Notice("Could not create Notion-Like table"); + new import_obsidian18.Notice("Could not create loom file"); throw err; } }); - -// src/obsidian/nlt-embedded-plugin.tsx -var import_view = require("@codemirror/view"); -var import_obsidian13 = require("obsidian"); -var import_client3 = __toESM(require_client()); -var import_lodash = __toESM(require_lodash()); - -// src/obsidian/utils.ts -var getEmbeddedTableLinkEls = (el) => { - const embeddedLinkEls = el.querySelectorAll(".internal-embed"); - const tableLinkEls = []; - for (let i2 = 0; i2 < embeddedLinkEls.length; i2++) { - const linkEl = embeddedLinkEls[i2]; - const src = linkEl.getAttribute("src"); - if (src == null ? void 0 : src.endsWith(TABLE_EXTENSION)) - tableLinkEls.push(linkEl); - } - return tableLinkEls; +var getFileName = () => { + const fileName = DEFAULT_LOOM_NAME; + return `${fileName}.${LOOM_EXTENSION}`; }; -var removeEmbeddedLinkChildren = (embeddedLinkEl) => { - if (embeddedLinkEl.children.length > 0) { - const firstChildEl = embeddedLinkEl.children[0]; - if (firstChildEl.classList.contains("NLT__embedded-container")) - return; - for (let i2 = 0; i2 < embeddedLinkEl.children.length; i2++) { - embeddedLinkEl.removeChild(embeddedLinkEl.children[i2]); - } - } +var getFilePath = (folderPath) => { + const fileName = getFileName(); + return (0, import_obsidian18.normalizePath)(folderPath + "/" + fileName); }; -var findEmbeddedTableFile = (embeddedLinkEl) => { - var _a; - const src = embeddedLinkEl.getAttribute("src"); - const tableFile = app.vault.getFiles().find((file) => file.path === src); - if (tableFile === void 0) - return (_a = app.vault.getFiles().find((file) => file.name === src)) != null ? _a : null; - return tableFile != null ? tableFile : null; -}; -var getEmbeddedTableWidth = (embeddedLinkEl) => { - const width = embeddedLinkEl.getAttribute("width"); - if (width === null || width === "1") - return "100%"; - return numToPx(width); -}; -var getEmbeddedTableHeight = (embeddedLinkEl) => { - const height = embeddedLinkEl.getAttribute("height"); - if (height === null || height === "1") - return "340px"; - return numToPx(height); -}; - -// src/obsidian/nlt-embedded-plugin.tsx -var NLTEmbeddedPlugin = class { - constructor() { - __publicField(this, "tableApps"); - __publicField(this, "handleRefreshEvent", (filePath, sourceAppId, state) => { - const app2 = this.tableApps.find( - (app3) => app3.id !== sourceAppId && app3.file.path === filePath - ); - if (!app2) - return; - const { id: id2, parentEl, leaf, file } = app2; - if (!app2.root) - return; - setTimeout(() => { - var _a; - (_a = app2.root) == null ? void 0 : _a.unmount(); - app2.root = (0, import_client3.createRoot)(parentEl); - this.renderApp(id2, leaf, file, app2.root, state); - }, 0); - }); - this.tableApps = []; - this.setupEventListeners(); - } - update() { - const activeView = app.workspace.getActiveViewOfType(import_obsidian13.MarkdownView); - if (!activeView) - return; - const embeddedTableLinkEls = getEmbeddedTableLinkEls( - activeView.containerEl - ); - for (let i2 = 0; i2 < embeddedTableLinkEls.length; i2++) { - const linkEl = embeddedTableLinkEls[i2]; - removeEmbeddedLinkChildren(linkEl); - const file = findEmbeddedTableFile(linkEl); - if (!file) - return; - const width = getEmbeddedTableWidth(linkEl); - const height = getEmbeddedTableHeight(linkEl); - linkEl.style.width = width; - linkEl.style.height = height; - if (this.tableApps.find((app2) => app2.file.path === file.path)) - return; - linkEl.style.backgroundColor = "var(--color-primary)"; - linkEl.style.cursor = "unset"; - linkEl.style.margin = "0px"; - linkEl.style.padding = "0px"; - const tableContainerEl = linkEl.createDiv(); - tableContainerEl.className = "NLT__embedded-container"; - tableContainerEl.style.height = "100%"; - tableContainerEl.style.width = "100%"; - const appId = v4_default(); - this.tableApps.push({ - id: appId, - leaf: activeView.leaf, - parentEl: tableContainerEl, - file - }); - this.setupTable(activeView, tableContainerEl, file, appId); - } - } - setupTable(activeView, tableContainerEl, file, appId) { - return __async(this, null, function* () { - tableContainerEl.addEventListener("click", (e) => { - e.stopPropagation(); - }); - const data = yield app.vault.read(file); - const tableState = deserializeTableState(data); - const table = this.tableApps.find((app2) => app2.id === appId); - if (!table) - return; - table.root = (0, import_client3.createRoot)(tableContainerEl); - this.renderApp(appId, activeView.leaf, file, table.root, tableState); - }); - } - handleSave(tableFile, appId, state) { - return __async(this, null, function* () { - const serialized = serializeTableState(state); - yield app.vault.modify(tableFile, serialized); - app.workspace.trigger( - EVENT_REFRESH_TABLES, - tableFile.path, - appId, - state - ); - }); - } - renderApp(id2, leaf, tableFile, root, tableState) { - const throttleHandleSave = import_lodash.default.throttle(this.handleSave, 2e3); - root.render( - /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(NotionLikeTable, { - appId: id2, - isMarkdownView: true, - filePath: tableFile.path, - leaf, - store, - tableState, - onSaveState: (appId, state) => throttleHandleSave(tableFile, appId, state) - }) - ); - } - setupEventListeners() { - app.workspace.on(EVENT_REFRESH_TABLES, this.handleRefreshEvent); - } - destroy() { - this.tableApps.forEach((app2) => { - var _a; - return (_a = app2.root) == null ? void 0 : _a.unmount(); - }); - this.tableApps = []; - app.workspace.off(EVENT_REFRESH_TABLES, this.handleRefreshEvent); - } -}; -var nltEmbeddedPlugin = import_view.ViewPlugin.fromClass(NLTEmbeddedPlugin); +var createFolderIfNotExists = (app, folderPath) => __async(void 0, null, function* () { + if (app.vault.getAbstractFileByPath(folderPath) == null) + yield createFolder(app, folderPath); +}); // src/main.ts +var import_lodash19 = __toESM(require_lodash()); var DEFAULT_SETTINGS = { shouldDebug: false, createAtObsidianAttachmentFolder: false, - customFolderForNewTables: "", - nameWithActiveFileNameAndTimestamp: false, - exportRenderMarkdown: true + customFolderForNewFiles: "", + removeMarkdownOnExport: true, + defaultEmbedWidth: "100%", + defaultEmbedHeight: "340px", + hasMigratedTo800: false, + showWelcomeModal: true, + showSupportModal: true, + showWhatsNewModal: true, + defaultFrozenColumnCount: 1, + pluginVersion: "" }; -var NLTPlugin = class extends import_obsidian14.Plugin { - constructor() { - super(...arguments); - __publicField(this, "settings"); - } +var DataLoomPlugin = class extends import_obsidian19.Plugin { onload() { return __async(this, null, function* () { yield this.loadSettings(); - this.registerView(NOTION_LIKE_TABLES_VIEW, (leaf) => new NLTView(leaf)); - this.registerExtensions([TABLE_EXTENSION], NOTION_LIKE_TABLES_VIEW); - this.addRibbonIcon("table", "Create Notion-Like table", () => __async(this, null, function* () { - yield this.newTableFile(null); + this.registerView( + DATA_LOOM_VIEW, + (leaf) => new DataLoomView(leaf, this.manifest.id, this.manifest.version) + ); + this.registerExtensions([LOOM_EXTENSION], DATA_LOOM_VIEW); + this.addRibbonIcon("table", "Create new loom", () => __async(this, null, function* () { + yield this.newLoomFile(null); })); - this.addSettingTab(new NLTSettingsTab(this.app, this)); - this.registerEmbeddedView(); + this.addSettingTab(new DataLoomSettingsTab(this.app, this)); + this.registerEditorExtension( + EditingViewPlugin(this.app, this.manifest.version) + ); + this.setModalDisplay(); this.registerCommands(); this.registerEvents(); this.registerDOMEvents(); + this.app.workspace.onLayoutReady(() => __async(this, null, function* () { + const isDark = hasDarkTheme(); + store.dispatch(setDarkMode(isDark)); + yield this.migrateLoomFiles(); + })); + if (this.settings.showWelcomeModal) { + new WelcomeModal(this.app).open(); + this.settings.showWelcomeModal = false; + yield this.saveSettings(); + } + this.settings.pluginVersion = this.manifest.version; + yield this.saveSettings(); + store.dispatch(setPluginVersion(this.manifest.version)); }); } - registerEmbeddedView() { - this.registerEditorExtension(nltEmbeddedPlugin); - } - newTableFile(contextMenuFolderPath, embedded) { - return __async(this, null, function* () { - let folderPath = ""; - if (contextMenuFolderPath) { - folderPath = contextMenuFolderPath; - } else if (this.settings.createAtObsidianAttachmentFolder) { - folderPath = this.app.vault.getConfig( - "attachmentFolderPath" - ); - } else { - folderPath = this.settings.customFolderForNewTables; + setModalDisplay() { + if (this.settings.pluginVersion !== this.manifest.version) { + if (this.settings.pluginVersion !== "") { + this.displayModalsOnLoomOpen = true; + return; } - const filePath = yield createTableFile({ + } + this.displayModalsOnLoomOpen = false; + } + migrateLoomFiles() { + return __async(this, null, function* () { + if (!this.settings.hasMigratedTo800) { + const loomFiles = this.app.vault.getFiles().filter( + (file) => file.extension === "dashboard" || file.extension === "table" + ); + for (let i2 = 0; i2 < loomFiles.length; i2++) { + const file = loomFiles[i2]; + const data = yield this.app.vault.read(file); + const parsedState = JSON.parse(data); + if (!parsedState.model) + return; + const newFilePath = file.path.replace( + `.${file.extension}`, + `.${LOOM_EXTENSION}` + ); + try { + yield this.app.vault.rename(file, newFilePath); + } catch (err) { + new import_obsidian19.Notice( + `Failed renaming ${file.path} to ${newFilePath}` + ); + new import_obsidian19.Notice("Please rename this file manually"); + } + } + this.settings.hasMigratedTo800 = true; + yield this.saveSettings(); + } + }); + } + getFolderForNewLoomFile(contextMenuFolderPath) { + let folderPath = ""; + if (contextMenuFolderPath) { + folderPath = contextMenuFolderPath; + } else if (this.settings.createAtObsidianAttachmentFolder) { + folderPath = this.app.vault.getConfig( + "attachmentFolderPath" + ); + } else { + folderPath = this.settings.customFolderForNewFiles; + } + const normalized = (0, import_obsidian19.normalizePath)(folderPath); + if (normalized === ".") + return "/"; + return normalized; + } + newLoomFile(contextMenuFolderPath, embedded) { + return __async(this, null, function* () { + const folderPath = this.getFolderForNewLoomFile(contextMenuFolderPath); + const filePath = yield createLoomFile( + this.app, folderPath, - useActiveFileNameAndTimestamp: this.settings.nameWithActiveFileNameAndTimestamp - }); + this.manifest.version, + this.settings.defaultFrozenColumnCount + ); if (embedded) return filePath; - yield app.workspace.getLeaf(true).setViewState({ - type: NOTION_LIKE_TABLES_VIEW, + yield this.app.workspace.getLeaf(true).setViewState({ + type: DATA_LOOM_VIEW, active: true, state: { file: filePath } }); @@ -56309,13 +62065,13 @@ var NLTPlugin = class extends import_obsidian14.Plugin { this.registerDomEvent(document, "click", () => { if (this.settings.shouldDebug) console.log("main handleClick"); - removeFocusVisibleClass(); - this.app.workspace.trigger(EVENT_OUTSIDE_CLICK); + removeCurrentFocusClass(); + this.app.workspace.trigger(EVENT_GLOBAL_CLICK); }); this.registerDomEvent(document, "keydown", (e) => { if (this.settings.shouldDebug) console.log("main handleKeyDown"); - this.app.workspace.trigger(EVENT_OUTSIDE_KEYDOWN, e); + this.app.workspace.trigger(EVENT_GLOBAL_KEYDOWN, e); }); } registerEvents() { @@ -56325,85 +62081,171 @@ var NLTPlugin = class extends import_obsidian14.Plugin { store.dispatch(setDarkMode(isDark)); }) ); + this.registerEvent( + this.app.workspace.on("layout-change", () => { + const leaves = this.app.workspace.getLeavesOfType("markdown"); + purgeEmbeddedLoomApps(leaves); + setTimeout(() => { + loadPreviewModeApps( + this.app, + leaves, + this.manifest.version + ); + }, 2); + }) + ); this.registerEvent( this.app.workspace.on("file-menu", (menu, file) => { - if (file instanceof import_obsidian14.TFolder) { + if (file instanceof import_obsidian19.TFolder) { menu.addItem((item) => { - item.setTitle("New Notion-Like table").setIcon("document").onClick(() => __async(this, null, function* () { - yield this.newTableFile(file.path); + item.setTitle("New loom").setIcon("document").onClick(() => __async(this, null, function* () { + yield this.newLoomFile(file.path); })); }); } }) ); - this.app.vault.on( - "rename", - (file, oldPath) => __async(this, null, function* () { - if (file instanceof import_obsidian14.TFile) { - const files = this.app.vault.getFiles(); - const uniqueFileNames = filterUniqueStrings( - files.map((file2) => file2.name) + this.registerEvent( + this.app.workspace.on("file-open", (file) => __async(this, null, function* () { + if (!file) + return; + if (!this.displayModalsOnLoomOpen) + return; + let shouldOpen = false; + if (file.extension === LOOM_EXTENSION) { + shouldOpen = true; + } else { + const data = yield this.app.vault.cachedRead(file); + const loomEmbedRegex = new RegExp( + /!\[\[[^\]]+\.loom(?:\|[0-9]+(?:x[0-9]+)?)?\]\]/ ); - const isUniqueFileName = uniqueFileNames.includes( - file.name - ); - const tableFiles = files.filter( - (file2) => file2.extension === TABLE_EXTENSION - ); - for (let i2 = 0; i2 < tableFiles.length; i2++) { - const tableFile = tableFiles[i2]; - const content = yield tableFile.vault.read( - tableFiles[i2] - ); - const deserializedState = deserializeTableState(content); - const newState = structuredClone(deserializedState); - newState.model.bodyCells.forEach((cell) => { - const updatedMarkdown = updateLinkReferences( - cell.markdown, - file, - oldPath, - isUniqueFileName - ); - cell.markdown = updatedMarkdown; - }); - if (JSON.stringify(deserializedState) !== JSON.stringify(newState)) { - const serializedState = serializeTableState(newState); - yield tableFile.vault.modify( - tableFile, - serializedState - ); - app.workspace.trigger( - EVENT_REFRESH_TABLES, - tableFile.path, - -1, - newState - ); - } + if (data.match(loomEmbedRegex)) { + shouldOpen = true; } } - }) + if (shouldOpen) { + this.displayModalsOnLoomOpen = false; + if (this.settings.showWhatsNewModal) { + new WhatsNewModal(this.app, () => { + if (this.settings.showSupportModal) { + new SupportModal(this.app).open(); + } + }).open(); + } + } + })) + ); + this.registerEvent( + this.app.vault.on( + "rename", + (file, oldPath) => __async(this, null, function* () { + if (file instanceof import_obsidian19.TFile) { + const loomFiles = this.app.vault.getFiles().filter( + (file2) => file2.extension === LOOM_EXTENSION + ); + const loomsToUpdate = []; + let numLinks = 0; + for (const loomFile of loomFiles) { + const data = yield file.vault.read(loomFile); + const state = deserializeState( + data, + this.manifest.version + ); + state.model.rows.forEach((row) => { + const { cells } = row; + cells.forEach((cell) => { + const { content } = cell; + const regex = (0, import_lodash19.cloneDeep)(WIKI_LINK_REGEX); + let matches; + while ((matches = regex.exec(content)) !== null) { + const path = matches[1]; + if (oldPath.includes(path)) { + const found = loomsToUpdate.find( + (loom) => loom.file.path === loomFile.path + ); + if (!found) { + loomsToUpdate.push({ + file: loomFile, + state + }); + } + numLinks++; + } + } + }); + }); + } + if (numLinks > 0) { + new import_obsidian19.Notice( + `Updating ${numLinks} link${numLinks > 1 ? "s" : ""} in ${loomsToUpdate.length} loom file${loomsToUpdate.length > 1 ? "s" : ""}.` + ); + } + for (let i2 = 0; i2 < loomsToUpdate.length; i2++) { + const { file: loomFile, state } = loomsToUpdate[i2]; + if (this.settings.shouldDebug) + console.log("Updating links in file", { + path: loomFile.path + }); + const newState = (0, import_lodash19.cloneDeep)(state); + newState.model.rows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + const { content } = cell; + const newContent = updateLinkReferences( + content, + file.path, + oldPath + ); + if (content !== newContent) { + if (this.settings.shouldDebug) { + console.log("Updated link", { + oldLink: content, + newLink: newContent + }); + } + } + return __spreadProps(__spreadValues({}, cell), { + content: newContent + }); + }); + return __spreadProps(__spreadValues({}, row), { + cells: nextCells + }); + }); + if (JSON.stringify(state) !== JSON.stringify(newState)) { + const serializedState = serializeState(newState); + yield file.vault.modify( + loomFile, + serializedState + ); + this.app.workspace.trigger( + EVENT_APP_REFRESH, + loomFile.path, + -1, + newState + ); + } + } + } + }) + ) ); - this.app.workspace.onLayoutReady(() => { - const isDark = hasDarkTheme(); - store.dispatch(setDarkMode(isDark)); - store.dispatch(setDebugMode(this.settings.shouldDebug)); - }); } registerCommands() { this.addCommand({ - id: "nlt-create-table", - name: "Create table", + id: "create", + name: "Create loom", hotkeys: [{ modifiers: ["Mod", "Shift"], key: "=" }], callback: () => __async(this, null, function* () { - yield this.newTableFile(null); + yield this.newLoomFile(null); }) }); this.addCommand({ - id: "nlt-create-table-and-embed", - name: "Create table and embed it into current file", + id: "create-and-embed", + name: "Create loom and embed it into current file", hotkeys: [{ modifiers: ["Mod", "Shift"], key: "+" }], editorCallback: (editor) => __async(this, null, function* () { - const filePath = yield this.newTableFile(null, true); + const filePath = yield this.newLoomFile(null, true); if (!filePath) return; const useMarkdownLinks = this.app.vault.getConfig( @@ -56418,13 +62260,13 @@ var NLTPlugin = class extends import_obsidian14.Plugin { }) }); this.addCommand({ - id: "nlt-add-column", + id: "add-column", name: "Add column", hotkeys: [{ modifiers: ["Mod", "Shift"], key: "\\" }], checkCallback: (checking) => { - const nltView = this.app.workspace.getActiveViewOfType(NLTView); - const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian14.MarkdownView); - if (nltView || markdownView) { + const loomView = this.app.workspace.getActiveViewOfType(DataLoomView); + const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian19.MarkdownView); + if (loomView || markdownView) { if (!checking) { this.app.workspace.trigger(EVENT_COLUMN_ADD); } @@ -56434,13 +62276,13 @@ var NLTPlugin = class extends import_obsidian14.Plugin { } }); this.addCommand({ - id: "nlt-delete-column", + id: "delete-column", name: "Delete column", hotkeys: [{ modifiers: ["Mod", "Shift"], key: "Backspace" }], checkCallback: (checking) => { - const nltView = this.app.workspace.getActiveViewOfType(NLTView); - const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian14.MarkdownView); - if (nltView || markdownView) { + const loomView = this.app.workspace.getActiveViewOfType(DataLoomView); + const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian19.MarkdownView); + if (loomView || markdownView) { if (!checking) { this.app.workspace.trigger(EVENT_COLUMN_DELETE); } @@ -56450,13 +62292,13 @@ var NLTPlugin = class extends import_obsidian14.Plugin { } }); this.addCommand({ - id: "nlt-add-row", + id: "add-row", name: "Add row", hotkeys: [{ modifiers: ["Mod", "Shift"], key: "Enter" }], checkCallback: (checking) => { - const nltView = this.app.workspace.getActiveViewOfType(NLTView); - const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian14.MarkdownView); - if (nltView || markdownView) { + const loomView = this.app.workspace.getActiveViewOfType(DataLoomView); + const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian19.MarkdownView); + if (loomView || markdownView) { if (!checking) this.app.workspace.trigger(EVENT_ROW_ADD); return true; @@ -56465,13 +62307,13 @@ var NLTPlugin = class extends import_obsidian14.Plugin { } }); this.addCommand({ - id: "nlt-row-column", + id: "delete-row", name: "Delete row", hotkeys: [{ modifiers: ["Alt", "Shift"], key: "Backspace" }], checkCallback: (checking) => { - const nltView = this.app.workspace.getActiveViewOfType(NLTView); - const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian14.MarkdownView); - if (nltView || markdownView) { + const loomView = this.app.workspace.getActiveViewOfType(DataLoomView); + const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian19.MarkdownView); + if (loomView || markdownView) { if (!checking) { this.app.workspace.trigger(EVENT_ROW_DELETE); } @@ -56481,12 +62323,12 @@ var NLTPlugin = class extends import_obsidian14.Plugin { } }); this.addCommand({ - id: "nlt-export-markdown", + id: "export-markdown", name: "Export as markdown", checkCallback: (checking) => { - const nltView = this.app.workspace.getActiveViewOfType(NLTView); - const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian14.MarkdownView); - if (nltView || markdownView) { + const loomView = this.app.workspace.getActiveViewOfType(DataLoomView); + const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian19.MarkdownView); + if (loomView || markdownView) { if (!checking) { this.app.workspace.trigger(EVENT_DOWNLOAD_MARKDOWN); } @@ -56496,12 +62338,12 @@ var NLTPlugin = class extends import_obsidian14.Plugin { } }); this.addCommand({ - id: "nlt-export-csv", + id: "export-csv", name: "Export as CSV", checkCallback: (checking) => { - const nltView = this.app.workspace.getActiveViewOfType(NLTView); - const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian14.MarkdownView); - if (nltView || markdownView) { + const loomView = this.app.workspace.getActiveViewOfType(DataLoomView); + const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian19.MarkdownView); + if (loomView || markdownView) { if (!checking) { this.app.workspace.trigger(EVENT_DOWNLOAD_CSV); } @@ -56518,19 +62360,18 @@ var NLTPlugin = class extends import_obsidian14.Plugin { DEFAULT_SETTINGS, yield this.loadData() ); - store.dispatch( - setExportRenderMarkdown(this.settings.exportRenderMarkdown) - ); + store.dispatch(setSettings(__spreadValues({}, this.settings))); }); } saveSettings() { return __async(this, null, function* () { yield this.saveData(this.settings); + store.dispatch(setSettings(__spreadValues({}, this.settings))); }); } onunload() { return __async(this, null, function* () { - this.app.workspace.detachLeavesOfType(NOTION_LIKE_TABLES_VIEW); + this.app.workspace.detachLeavesOfType(DATA_LOOM_VIEW); }); } }; diff --git a/.obsidian/plugins/notion-like-tables/manifest.json b/.obsidian/plugins/notion-like-tables/manifest.json index fe47708..99dfdbb 100644 --- a/.obsidian/plugins/notion-like-tables/manifest.json +++ b/.obsidian/plugins/notion-like-tables/manifest.json @@ -1,11 +1,14 @@ { "id": "notion-like-tables", - "name": "Notion-Like Tables", - "minAppVersion": "0.15.0", - "description": "Your premiere tool for creating and managing tabular data in Obsidian.md", + "name": "DataLoom", + "minAppVersion": "1.2.0", + "description": "Weave together data from diverse sources into a cohesive table view. Inspired by Excel Spreadsheets and Notion.so.", "author": "Trey Wallis", "authorUrl": "https://github.com/trey-wallis", "isDesktopOnly": false, - "fundingUrl": "https://www.buymeacoffee.com/treywallis", - "version": "6.18.6" + "fundingUrl": { + "GitHub": "https://github.com/sponsors/trey-wallis", + "Buymeacoffee": "https://www.buymeacoffee.com/treywallis" + }, + "version": "8.6.4" } diff --git a/.obsidian/plugins/notion-like-tables/styles.css b/.obsidian/plugins/notion-like-tables/styles.css index 34b6797..a5129e0 100644 --- a/.obsidian/plugins/notion-like-tables/styles.css +++ b/.obsidian/plugins/notion-like-tables/styles.css @@ -1,239 +1,932 @@ +/* src/obsidian/shared/styles.css */ +.dataloom-modal__divider { + margin: 1.5em 0; +} +.dataloom-modal__divider--first-child { + margin-top: 0; +} +.dataloom-modal-text--emphasize { + color: var(--text-accent); +} +.dataloom-modal__title { + margin-bottom: 0; +} + +/* src/obsidian/modal/support-modal/styles.css */ +.dataloom-support-modal__container { + margin-bottom: 1.5rem; +} +.dataloom-support-modal__badge-container { + border-top: 1px solid var(--background-modifier-border); + padding: 20px 0px; + display: flex; + flex-direction: column; + row-gap: 10px; +} + +/* src/obsidian/modal/welcome-modal/styles.css */ +.dataloom-welcome-modal__card-container { + display: flex; + flex-direction: column; + row-gap: 1rem; +} +.dataloom-welcome-modal__card { + display: flex; + padding: 1em 1.5em; + column-gap: 1.5em; + align-items: center; + border: 1px solid var(--background-modifier-border); +} +.dataloom-welcome-modal__card-icon { + width: 1.5em; + height: 1.5em; +} +.dataloom-welcome-modal__card-title { + margin: 0; +} +.dataloom-welcome-modal__card-description { + margin-top: 0.25em; + margin-bottom: 0.5em; +} + +/* src/obsidian/modal/whats-new-modal/styles.css */ +.dataloom-whats-new-modal__tag { + margin-top: 0.5em; + margin-bottom: 0; +} +.dataloom-whats-new-modal__date { + margin-left: 0.75em; + font-size: 0.75em; + color: var(--text-muted); +} + +/* src/react/loom-app/table/styles.css */ +.dataloom-table { + display: table; + table-layout: fixed; + border-collapse: separate; +} +.dataloom-header { + display: table-header-group; +} +.dataloom-body { + display: table-row-group; +} +.dataloom-footer { + display: table-footer-group; +} +.dataloom-row { + display: table-row; +} +.dataloom-cell { + display: table-cell; +} +.dataloom-cell--left-corner { + width: 35px; +} +.dataloom-cell.dataloom-cell--freeze { + position: sticky; + left: 0; + z-index: 2; + background-color: var(--background-primary); +} +.dataloom-cell.dataloom-cell--freeze-header { + background-color: var(--background-secondary); + z-index: 3; +} +.dataloom-cell.dataloom-cell--freeze-footer { + z-index: 3; +} +.dataloom-cell--header { + position: sticky; + top: 0; + z-index: 1; + background-color: var(--background-secondary); + border-bottom: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); + &:last-of-type { + border-right: 0; + background-color: var(--background-primary); + } +} +.dataloom-cell--body { + border-bottom: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); + vertical-align: top; + height: 1px; + &:last-of-type { + border-right: 0; + } +} +.dataloom-cell--footer { + position: sticky; + bottom: 0; + z-index: 1; + background-color: var(--background-primary); + border-top: 1px solid var(--table-border-color); +} +.dataloom-body > .dataloom-row:last-child > .dataloom-cell { + border-bottom: 0; +} + +/* src/react/shared/icon/styles.css */ +svg.dataloom-svg { + vertical-align: middle; +} +svg.dataloom-svg--sm { + width: var(--icon-s); + height: var(--icon-s); +} +svg.dataloom-svg--md { + width: var(--icon-m); + height: var(--icon-m); +} +svg.dataloom-svg--lg { + width: var(--icon-l); + height: var(--icon-l); +} +svg.dataloom-svg--xl { + width: 20px; + height: 20px; +} + +/* src/react/shared/stack/styles.css */ +.dataloom-stack { + display: flex; +} + +/* src/react/shared/button/styles.css */ +.dataloom-button { + display: flex; + align-items: center; + width: max-content !important; + height: max-content; + padding: 6px !important; + white-space: nowrap; + color: var(--text-normal); + font-size: var(--font-size-normal); + margin-right: 0; + cursor: pointer; +} +.dataloom-button:focus-visible { + box-shadow: none !important; +} +.dataloom-button--link { + color: var(--link-color); + text-decoration-line: var(--link-decoration); + cursor: var(--cursor-link); + background-color: transparent !important; + box-shadow: none !important; + border: none !important; +} +.dataloom-button--link:hover { + box-shadow: var(--input-shadow) !important; +} +.dataloom-button--small { + padding: 2px !important; +} +.dataloom-button--full-width { + display: flex; + justify-content: flex-start; + width: 100% !important; + border-radius: 0px; +} +.dataloom-button--text { + background-color: transparent !important; + box-shadow: none !important; +} +.dataloom-button--text:hover { + background-color: var(--background-modifier-hover) !important; +} +.dataloom-button:disabled { + cursor: not-allowed; + opacity: 0.5; +} + +/* src/react/shared/menu/styles.css */ +.dataloom-menu { + width: 0; + height: 0; +} +.dataloom-menu__container { + position: absolute; + z-index: var(--layer-menu); + background-color: var(--background-primary); + font-weight: 400; +} + +/* src/shared/spacing/styles.css */ +.dataloom-overflow--wrap { + overflow: hidden; + overflow-wrap: break-word; + white-space: normal; +} +.dataloom-overflow--hide { + overflow: hidden; + white-space: nowrap; +} +.dataloom-overflow--ellipsis { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + /* src/react/shared/text/styles.css */ -.NLT__p { +.dataloom-text { white-space: nowrap; margin: 0; color: var(--text-normal); } -.NLT__text-muted { +.dataloom-text--muted { color: var(--text-muted); } -.NLT__text-faint { +.dataloom-text--faint { color: var(--text-faint); } -.NLT__text-semibold { +.dataloom-text--semibold { font-weight: var(--font-semibold); } +.dataloom-text--on-accent { + color: var(--text-on-accent); +} +.dataloom-text--error { + color: var(--text-error); +} + +/* src/react/shared/divider/styles.css */ +.dataloom-hr { + margin: 0; +} + +/* src/react/shared/error-display/styles.css */ +.dataloom-error { + background-color: var(--background-secondary); + overflow: scroll; +} +.dataloom-error--embedded-app { + height: 100%; +} +.dataloom-error__message { + width: 100%; + max-height: 150px; + overflow: scroll; + text-align: left; +} + +/* src/react/global.css */ +:root { + --dataloom-spacing--xs: 2px; + --dataloom-spacing--sm: 4px; + --dataloom-spacing--md: 8px; + --dataloom-spacing--lg: 12px; + --dataloom-spacing--xl: 16px; + --dataloom-spacing--2xl: 24px; + --dataloom-spacing--3xl: 36px; + --dataloom-spacing--4xl: 48px; + --dataloom-cell-spacing-x: var(--dataloom-spacing--sm); + --dataloom-cell-spacing-y: var(--dataloom-spacing--lg); + --dataloom-cell-min-height: 1.9rem; + --dataloom-font-size--xs: 0.8rem; + --dataloom-font-size--sm: 0.9rem; + --dataloom-font-size--md: 1rem; + --dataloom-font-size--lg: 1.1rem; + --dataloom-font-size--xl: 1.3rem; +} + +/* src/react/shared/flex/styles.css */ +.dataloom-flex { + display: flex; + width: 100%; +} + +/* src/react/shared/menu-item/styles.css */ +.dataloom-menu-item { + display: flex; + align-items: center; + padding: var(--dataloom-spacing--sm) var(--dataloom-spacing--lg); + width: 100%; +} + +/* src/react/loom-app/row-options/styles.css */ +.dataloom-row-options { + height: 100%; + width: 100%; +} +.dataloom-row-options__container { + width: 100%; + height: 100%; +} + +/* src/react/shared/input/styles.css */ +.dataloom-input { + width: 100%; + height: 100% !important; + transition: none !important; + font-size: var(--text-normal) !important; + box-shadow: none !important; +} +.dataloom-input--transparent { + background-color: transparent !important; + border: 0 !important; + border-radius: 0 !important; + padding: var(--dataloom-spacing--sm) var(--dataloom-spacing--lg) !important; +} +.dataloom-input--border { + border: 1px solid var(--table-border-color) !important; + background-color: var(--background-secondary) !important; +} +.dataloom-input--numeric { + text-align: right; +} +.dataloom-input--error { + outline: 2px solid var(--background-modifier-error) !important; + outline-offset: -2px; +} +.dataloom-input--error:focus { + outline: 2px solid var(--background-modifier-error) !important; +} +.dataloom-input__focus-outline--default { + outline: 2px solid var(--background-modifier-border-focus) !important; + outline-offset: -2px; +} +.dataloom-input__focus-outline--none { + outline: none !important; +} + +/* src/react/shared/bubble/styles.css */ +.dataloom-bubble { + border-radius: 8px; + padding: 2px 6px; + user-select: none; + color: var(--text-on-accent); + border: 1px solid var(--background-modifier-border); + background-color: var(--color-accent); +} +.dataloom-bubble span { + max-width: 150px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +/* src/react/export-app/styles.css */ +.dataloom-export-app textarea { + width: 100%; + height: 200px; + resize: vertical; +} +.dataloom-export-app select { + background-color: var(--background-secondary-alt) !important; +} +.dataloom-copy-button { + background-color: var(--background-secondary-alt) !important; +} /* src/react/shared/switch/styles.css */ -.NLT__switch { +.dataloom-switch { width: calc(var(--toggle-width) * 0.75); height: calc((var(--toggle-thumb-height) * 0.75) + (var(--toggle-border-width) * 2 * 0.75)); + transition: none !important; } -.NLT__switch:after { +.dataloom-switch:after { width: calc(var(--toggle-thumb-width) * 0.75); height: calc(var(--toggle-thumb-height) * 0.75); } -.NLT__switch.is-enabled:after { +.dataloom-switch.is-enabled:after { transform: translate3d(calc((var(--toggle-width) - var(--toggle-thumb-width) - var(--toggle-border-width)) * 0.75), 0, 0); } -.NLT__switch input { +.dataloom-switch input { width: calc(var(--checkbox-size) * 0.75); height: calc(var(--checkbox-size) * 0.75); } -.NLT__switch:active:after { +.dataloom-switch:active:after { width: calc((var(--toggle-thumb-width) * 0.75) + (var(--toggle-border-width))); } - -/* src/react/table-app/option-bar/filter/styles.css */ -.react-select { - width: 150px !important; +.dataloom-switch:focus-visible { + outline: 2px solid var(--text-on-accent-inverted); + outline-offset: 0px; } -.react-select input:focus { - border: 0 !important; - box-shadow: none !important; -} -.react-select input:focus-visible { - border: 0 !important; - box-shadow: none !important; +.dataloom-switch--dark { + outline-color: var(--text-on-accent); } -/* src/react/table-app/function-cell/styles.css */ -.NLT__function-cell { - display: flex; - justify-content: flex-end; +/* src/react/shared/stepper/styles.css */ +.dataloom-step__header--margin-bottom { + margin-bottom: 5px; +} +.dataloom-step__content { + width: 100%; + margin-top: 10px; +} +.dataloom-step__content--margin-top { + margin-top: 25px; +} +.dataloom-step__indicator { + width: 30px; + height: 30px; + border-radius: 50%; + background-color: var(--background-secondary); +} +.dataloom-step__indicator--complete { cursor: pointer; +} +.dataloom-step__text--complete { + cursor: pointer; +} +.dataloom-step__spacer { + width: 100%; + height: 25px; + margin-left: 15px; + margin-bottom: 10px; + border-left: 1px solid var(--background-modifier-border); +} +.dataloom-step__separator { + min-width: 15px; + margin-left: 15px; + border-left: 1px solid var(--background-modifier-border); + align-self: stretch; +} +.dataloom-step__separator--no-border { + border-left: none; +} + +/* src/react/import-app/upload-data/file-input/styles.css */ +.dataloom-file-input input[type=file] { + color: transparent; +} + +/* src/react/import-app/match-columns/styles.css */ +.dataloom-match-columns { + margin-bottom: 10px; +} +.dataloom-match-columns__container { + width: 100%; + max-height: 250px; + overflow: scroll; + padding-right: 3em; +} +.dataloom-match-columns table { + border-collapse: separate; + border-spacing: 0; +} +.dataloom-match-columns th, +.dataloom-match-columns td { + border-bottom: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); + padding: 0.5em; + max-width: 20em; + height: 1em; +} +.dataloom-match-columns th { + position: sticky; + top: 0; + z-index: 1; + background-color: var(--background-secondary); + font-weight: 500; +} +.dataloom-match-columns th { + min-width: 14em; + border-top: 1px solid var(--table-border-color); +} +.dataloom-match-columns td:first-child, +.dataloom-match-columns th:first-child { + border-left: 1px solid var(--table-border-color); +} +.dataloom-match-columns--disabled { + opacity: 0.5; +} +.dataloom-match-columns input[type=checkbox] { + margin-top: 1px; + margin-right: 0px; +} + +/* src/react/import-app/styles.css */ +.dataloom-import-app { + overflow-x: hidden; + overflow-y: scroll; + max-height: calc(100vh - 20em); +} +.dataloom-import-app textarea { + width: 100%; + height: 10em; + resize: none; +} + +/* src/react/shared/wrap/styles.css */ +.dataloom-wrap { + display: flex; + flex-wrap: wrap; +} + +/* src/react/shared/select/styles.css */ +.dataloom-select:focus { + box-shadow: none; +} + +/* src/react/loom-app/option-bar/filter-menu/filter-row/styles.css */ +.dataloom-filter-row { + width: 100%; +} +.dataloom-filter-row__input input { + width: 150px; +} +.dataloom-filter-row select { + max-width: 175px; +} +.dataloom-filter-row__spacer { + width: 60px; +} + +/* src/react/shared/multi-select/styles.css */ +.dataloom-multi-select:focus { + box-shadow: none; +} + +/* src/react/loom-app/option-bar/styles.css */ +.dataloom-option-bar { + width: 100%; + border-bottom: 1px solid var(--background-modifier-border); +} + +/* src/react/loom-app/header-cell-container/column-resize/styles.css */ +.dataloom-column-resize { + position: relative; +} +.dataloom-column-resize__handle { + position: absolute; + height: 100%; + right: 0; + bottom: 0; + width: 5px; + cursor: col-resize; +} +.dataloom-column-resize__handle:hover { + background-color: var(--interactive-accent); +} +.dataloom-column-resize__handle:active { + background-color: var(--interactive-accent); +} +.dataloom-column-resize__handle--dragging { + background-color: var(--interactive-accent); +} + +/* src/react/loom-app/header-cell-edit/number-format-submenu/styles.css */ +.dataloom-number-format-submenu { + width: 100%; + height: 240px; + overflow-y: scroll; + overflow-x: auto; +} + +/* src/react/loom-app/header-cell-edit/styles.css */ +.dataloom-header-menu { + color: var(--text-normal); +} + +/* src/react/loom-app/header-cell-container/styles.css */ +.dataloom-cell--header__container { + display: flex; + justify-content: space-between; + min-height: var(--dataloom-cell-min-height); +} +.dataloom-cell--header__inner-container { + display: flex; + align-items: center; + width: 100%; overflow: hidden; - padding: var(--nlt-cell-spacing-x) var(--nlt-cell-spacing-y); + white-space: nowrap; + text-overflow: ellipsis; + user-select: none; + padding: var(--dataloom-cell-spacing-x) var(--dataloom-cell-spacing-y); + color: var(--text-normal); +} + +/* src/react/loom-app/text-cell/styles.css */ +.dataloom-text-cell { + width: 100%; + height: 100%; +} +.dataloom-text-cell__container { + text-align: left; +} +.dataloom-text-cell__container p { + margin: 0; +} +.dataloom-text-cell__container ul:not(.contains-task-list) { + padding-left: var(--dataloom-spacing--xl); + padding-right: 0; + margin-top: 0; + margin-bottom: 0; } /* src/react/shared/tag/styles.css */ -.NLT__tag { +.dataloom-tag { display: flex; align-items: center; border-radius: 8px; - padding: var(--nlt-spacing--xs) var(--nlt-spacing--md); + padding: var(--dataloom-spacing--xs) var(--dataloom-spacing--md); width: max-content; color: var(--text-normal); } -/* src/react/table-app/tag-cell/styles.css */ -.NLT__tag-cell { +/* src/react/loom-app/tag-cell/styles.css */ +._tag-cell { width: 100%; } -/* src/react/table-app/number-cell/styles.css */ -.NLT__number-cell { +/* src/react/loom-app/checkbox-cell/styles.css */ +.dataloom-checkbox-cell { + width: 100%; +} +.datlaoom-checkbox-cell input { + cursor: pointer; +} + +/* src/react/loom-app/date-cell/styles.css */ +.dataloom-date-cell { + width: 100%; + text-align: left; +} + +/* src/react/loom-app/number-cell/styles.css */ +.dataloom-number-cell { width: 100%; text-align: right; } -/* src/react/table-app/tag-color-menu/components/color-item/styles.css */ -.NLT__color-item { - display: flex; - align-items: center; - padding: var(--nlt-spacing--xs) var(--nlt-spacing--lg); +/* src/react/shared/suggest-list/suggest-item/styles.css */ +.dataloom-suggest-item { + padding: var(--dataloom-spacing--sm) var(--dataloom-spacing--lg); + margin: 2px 0; +} +.dataloom-suggest-item:hover { + background-color: var(--background-modifier-hover) !important; +} + +/* src/react/shared/suggest-list/suggest-input/styles.css */ +.dataloom-suggest-input { + background-color: var(--background-secondary); +} + +/* src/react/shared/suggest-list/styles.css */ +.dataloom-suggest-menu { width: 100%; } -.NLT__color-item-square { - width: 10px; - height: 10px; - padding: 0; - margin: 0 10px 0 0; +.dataloom-suggest-menu__container { + max-height: 175px; + overflow-y: auto; } -/* src/react/table-app/tag-color-menu/styles.css */ +/* src/react/loom-app/text-cell-edit/styles.css */ +.dataloom-text-cell-edit { + width: 100%; + height: 100%; +} +.dataloom-text-cell-edit textarea { + width: 100%; + height: 100%; + overflow: hidden; + padding: var(--dataloom-cell-spacing-x) var(--dataloom-cell-spacing-y); + resize: none; + border: 0; + border-radius: 0; + font-size: var(--font-size-normal); +} +.dataloom-text-cell-edit textarea:focus { + box-shadow: none; + outline: 2px solid var(--background-modifier-border-focus); + outline-offset: -2px; +} -/* src/react/table-app/multi-tag-cell/styles.css */ -.NLT__multi-tag-cell { +/* src/react/loom-app/tag-cell-edit/menu-header/styles.css */ +.dataloom-tag-cell-edit__menu-header { + background-color: var(--background-secondary); + border-bottom: 1px solid var(--table-border-color); +} + +/* src/react/loom-app/tag-color-menu/components/color-item/styles.css */ +.dataloom-color-item { + width: 100%; +} +.dataloom-color-item__square { + width: 15px; + height: 15px; + border-radius: 4px; +} + +/* src/react/loom-app/tag-color-menu/styles.css */ +.dataloom-tag-color-menu__color-container { + width: 100%; + height: 215px; + overflow-y: scroll; + overflow-x: auto; +} + +/* src/react/loom-app/tag-cell-edit/selectable-tag/styles.css */ +.dataloom-selectable-tag { + display: flex; + justify-content: space-between; + align-items: center; + padding: var(--dataloom-spacing--sm) var(--dataloom-spacing--md); + overflow: hidden; +} + +/* src/react/loom-app/tag-cell-edit/menu-body/styles.css */ +.dataloom-tag-cell-edit__menu-body { + max-height: 140px; + overflow-y: scroll; +} +.dataloom-tag-cell-edit__menu-body-container { + width: 100%; +} + +/* src/react/loom-app/multi-tag-cell/styles.css */ +.dataloom-multi-tag-cell { display: flex; flex-direction: column; } -/* src/react/table-app/currency-cell/styles.css */ -.NLT__currency-cell { +/* src/react/loom-app/file-cell/styles.css */ +.dataloom-file-cell p { + margin: 0; + text-align: left; +} + +/* src/react/loom-app/embed-cell/embed/styles.css */ +.dataloom-embed { width: 100%; - text-align: right; +} +.dataloom-embed iframe { + width: 100%; + height: 100%; +} +.dataloom-embed p { + width: 100%; + height: 100%; + margin: 0px; } -/* src/react/table-app/new-row-button/styles.css */ -.NLT__new-row { - padding: var(--nlt-spacing--md); +/* src/react/loom-app/embed-cell/styles.css */ +.dataloom-embed-cell { + width: 100%; + height: 100%; + overflow: hidden; } -/* src/react/table-app/new-column-button/styles.css */ -.NLT__new-column { - padding-left: var(--nlt-spacing--md); +/* src/react/loom-app/body-cell-container/styles.css */ +.dataloom-cell--body__container { + display: flex; + width: 100%; + height: 100%; + min-height: var(--dataloom-cell-min-height); + padding: var(--dataloom-cell-spacing-x) var(--dataloom-cell-spacing-y); + cursor: pointer; + color: var(--text-normal); } -/* src/react/table-app/styles.css */ -:root { - --nlt-spacing--xs: 2px; - --nlt-spacing--sm: 4px; - --nlt-spacing--md: 8px; - --nlt-spacing--lg: 12px; - --nlt-spacing--xl: 16px; - --nlt-spacing--2xl: 24px; - --nlt-spacing--3xl: 36px; - --nlt-spacing--4xl: 48px; - --nlt-cell-spacing-x: var(--nlt-spacing--sm); - --nlt-cell-spacing-y: var(--nlt-spacing--lg); - --nlt-cell-min-height: 1.9rem; - --nlt-font-size--xs: 0.8rem; - --nlt-font-size--sm: 0.9rem; - --nlt-font-size--md: 1rem; - --nlt-font-size--lg: 1.1rem; +/* src/react/loom-app/new-column-button/styles.css */ +.dataloom-new-column { + padding-left: var(--dataloom-spacing--md); + width: 50px; } -.NLT__light-gray--light { + +/* src/react/loom-app/bottom-bar/styles.css */ +.dataloom-bottom-bar { + position: relative; + height: 60px; +} +.dataloom-bottom-bar > div { + border-top: 1px solid var(--table-border-color); + position: absolute; + width: 100%; +} + +/* src/react/loom-app/app/styles.css */ +.dataloom-app { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; + border-top: 1px solid var(--background-modifier-border); +} +.dataloom-app--markdown-view { + border-bottom: 1px solid var(--background-modifier-border); +} +.dataloom-light-gray--light { background-color: hsl(0, 3%, 94%); } -.NLT__light-gray--dark { +.dataloom-light-gray--dark { background-color: hsl(0, 0%, 22%); } -.NLT__gray--light { +.dataloom-gray--light { background-color: hsl(40, 5%, 88%); } -.NLT__gray--dark { +.dataloom-gray--dark { background-color: hsl(0, 0%, 35%); } -.NLT__brown--light { +.dataloom-brown--light { background-color: hsl(18, 31%, 89%); } -.NLT__brown--dark { +.dataloom-brown--dark { background-color: hsl(19, 32%, 27%); } -.NLT__orange--light { +.dataloom-orange--light { background-color: hsl(28, 67%, 88%); } -.NLT__orange--dark { +.dataloom-orange--dark { background-color: hsl(28, 52%, 32%); } -.NLT__yellow--light { +.dataloom-yellow--light { background-color: hsl(43, 82%, 89%); } -.NLT__yellow--dark { +.dataloom-yellow--dark { background-color: hsl(37, 43%, 36%); } -.NLT__green--light { +.dataloom-green--light { background-color: hsl(113, 30%, 89%); } -.NLT__green--dark { +.dataloom-green--dark { background-color: hsl(138, 23%, 28%); } -.NLT__blue--light { +.dataloom-blue--light { background-color: hsl(205, 41%, 89%); } -.NLT__blue--dark { +.dataloom-blue--dark { background-color: hsl(218, 38%, 30%); } -.NLT__purple--light { +.dataloom-purple--light { background-color: hsl(272, 29%, 90%); } -.NLT__purple--dark { +.dataloom-purple--dark { background-color: hsl(266, 34%, 28%); } -.NLT__pink--light { +.dataloom-pink--light { background-color: hsl(330, 36%, 91%); } -.NLT__pink--dark { +.dataloom-pink--dark { background-color: hsl(330, 31%, 30%); } -.NLT__red--light { +.dataloom-red--light { background-color: hsl(11, 64%, 91%); } -.NLT__red--dark { +.dataloom-red--dark { background-color: hsl(8, 35%, 30%); } -.NLT__app ::-webkit-scrollbar { - display: none; +.dataloom-disabled { + opacity: 0.5; } -.NLT__menu ::-webkit-scrollbar { - display: none; -} -.NLT__selectable { +.dataloom-selectable { cursor: pointer; } -.NLT__selectable:hover { +.dataloom-selectable:hover { background-color: var(--color-base-30); } -.NLT__selected { +.dataloom-selected { background-color: var(--color-base-20); } -.workspace-leaf-content[data-type=notion-like-tables] .view-content { - padding: 0; -} -.NLT__default-cursor { +.dataloom-default-cursor { cursor: default !important; } -.NLT__focusable:focus-visible, -.NLT__focus-visible { - outline: 2px solid var(--color-accent) !important; - outline-offset: -2px !important; +.dataloom-focusable:focus-visible, +.dataloom-focus-visible { + outline: 2px solid var(--color-accent); + outline-offset: -2px; } -.NLT__focusable--inverted:focus-visible { - outline: 2px solid var(--text-on-accent-inverted); - outline-offset: 0px; +.dataloom-focusable--inverted:focus-visible { + outline: 2px solid var(--background-modifier-border-focus); } -.NLT__blur--cell { +.dataloom-blur--cell { outline: 2px solid var(--background-modifier-border-focus) !important; outline-offset: -2px; } -.NLT__blur { +.dataloom-blur { outline: 2px solid var(--color-accent) !important; outline-offset: -2px; } -.NLT__tr--drag-over { +.dataloom-tr--drag-over { border-bottom: 1px solid var(--color-accent) !important; } -.NLT__th--drag-over { +.dataloom-th--drag-over { border-bottom: 1px solid var(--color-accent) !important; } + +/* src/react/loom-app/footer-cell-container/styles.css */ +.dataloom-cell--footer__container { + display: flex; + justify-content: flex-end; + cursor: pointer; + overflow: hidden; + padding: var(--dataloom-cell-spacing-x) var(--dataloom-cell-spacing-y); +} + +/* src/react/shared/error-boundary/styles.css */ +.dataloom-error-boundary { + background-color: var(--background-secondary); + overflow: scroll; +} +.dataloom-error-boundary__message { + width: 100%; + max-height: 150px; + overflow: scroll; + text-align: left; +} diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json index e7ae952..213d11b 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json @@ -14,11 +14,14 @@ "drawingFilenameDateTime": "YYYY-MM-DD HH.mm.ss", "useExcalidrawExtension": true, "displaySVGInPreview": true, + "previewImageType": "SVGIMG", + "allowImageCache": true, "displayExportedImageIfAvailable": false, "previewMatchObsidianTheme": false, "width": "400", "dynamicStyling": "colorful", "isLeftHanded": false, + "iframeMatchExcalidrawTheme": true, "matchTheme": false, "matchThemeAlways": false, "matchThemeTrigger": false, @@ -81,7 +84,7 @@ "mdCSS": "", "scriptEngineSettings": {}, "defaultTrayMode": true, - "previousRelease": "1.9.3", + "previousRelease": "1.9.20", "showReleaseNotes": true, "showNewVersionNotification": true, "mathjaxSourceURL": "https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js", diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/main.js b/.obsidian/plugins/obsidian-excalidraw-plugin/main.js index 09dd6a2..5ec2cb0 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/main.js +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/main.js @@ -1,5 +1,9 @@ -"use strict";var obsidian_module=require("obsidian");var LZString=function(){function o(o,r){if(!t[o]){t[o]={};for(var n=0;ne;e++){var s=r.charCodeAt(e);n[2*e]=s>>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null===o||void 0===o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;t>e;e++)n[e]=256*o[2*e]+o[2*e+1];var s=[];return n.forEach(function(o){s.push(r(o))}),i.decompress(s.join(""))},compressToEncodedURIComponent:function(o){return null==o?"":i._compress(o,6,function(o){return e.charAt(o)})},decompressFromEncodedURIComponent:function(r){return null==r?"":""==r?null:(r=r.replace(/ /g,"+"),i._decompress(r.length,32,function(n){return o(e,r.charAt(n))}))},compress:function(o){return i._compress(o,16,function(o){return r(o)})},_compress:function(o,r,n){if(null==o)return"";var e,t,i,s={},p={},u="",c="",a="",l=2,f=3,h=2,d=[],m=0,v=0;for(i=0;ie;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++),s[c]=f++,a=String(u)}if(""!==a){if(Object.prototype.hasOwnProperty.call(p,a)){if(a.charCodeAt(0)<256){for(e=0;h>e;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;for(;;){if(m<<=1,v==r-1){d.push(n(m));break}v++}return d.join("")},decompress:function(o){return null==o?"":""==o?null:i._decompress(o.length,32768,function(r){return o.charCodeAt(r)})},_decompress:function(o,n,e){var t,i,s,p,u,c,a,l,f=[],h=4,d=4,m=3,v="",w=[],A={val:e(0),position:n,index:1};for(i=0;3>i;i+=1)f[i]=i;for(p=0,c=Math.pow(2,2),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(t=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 2:return""}for(f[3]=l,s=l,w.push(l);;){if(A.index>o)return"";for(p=0,c=Math.pow(2,m),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(l=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 2:return w.join("")}if(0==h&&(h=Math.pow(2,m),m++),f[l])v=f[l];else{if(l!==d)return null;v=s+s.charAt(0)}w.push(v),f[d++]=s+v.charAt(0),h--,s=v,0==h&&(h=Math.pow(2,m),m++)}}};return i}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module&&(module.exports=LZString); -const EXCALIDRAW_PACKAGES = "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IgSzjZZxmIVsCZyn9NAAAOCCzONlnGlnjbjxpAAD261zOMlnGgAAcRAFnGm3WhXzW0/CV82AAAUEE262AABGEH261LONIAAgAAVhAxnGCPWwAADwgCPWmzxvm40gAALOMRnGKPWyAAHM4yR60I9aFnGgAAMRAlnGgAAeRBjfNpWBZ2AOt1pmcao9aEetO3W+HrYAAH4QMZxlM43zcY2eNQetmcCWtzIAAAwQTNxjT1sAABsIId1u+qzOwBAAAWCCbdaGetSzjH7rcn5pc8yblaRetYvWyzxjZ4wR61/dasetYzjJZxgz1uh62bdaZnGgAAFhBnPGNHWlPzdL1tF63i9apnGbPWxXrQs42V62q9b1etWvWrHrSz1s263M5bC/N59Wz07EVYTr83vABqettPWnbrXt1sN60K9abPGUzjBnrTT1o160L+brbcbS5d4ANz1s961zONSet8vWyAAJ71uzca+9bDpIAP+IggHSACD61TOMQ+tYfWzbrfm42960I9ao+tYpARfzSxhjj62ZuNvetLPW+Hrcn1sj62DK0eHw2fW/NxjM4x48Y++aj/N7wAGXrQb1u48b5uMFet9PWsZxpt1r260I9bzutlfWrbrTt1rh6149b83GSzjRvrc31uoC3OwBAAAlCBl9bAAAoiCnP01Qt7wAQAACQgm3Wmzxsp1tP6aAABcEAT61LOM6+tbPWnbrdQFqufp0gBAAAFCDi9alnGnvW8PrVM40gACAABJEBH63a9bMAtsN6OkAIAAEIQbvrWM4z362QABletNnjMnrdQFqwC07fwNutYzjEZxsv1sf62aKQJeApAWjbrWx4xs8YLONu+tMzjD/reA4FoC2rVr1utv/W//rQb1rZ61vSQ3jsLAW94AHP1oR63Q9a+etK/W/Nxvc/W4C1O9aZnGm3WnnrVM40B63IDatitwgWp3rZt1o162WeM9utNnjUnrW71rD6279a6+tCzjDvrTvVpkC10gAhetP3Wg/rSf1pIxjOwBAAAeCA7daRnGgA2y45vlXDpACAAB0ECmcYWeMRnGEzjZHrVANrK3SPBZmfNl/WmnrWM4xe61iDbEhCaYGDOBu8ACGcYI9bM3GzgWuQbSKLXeACSDaketTnjVQbbuBm8C10gBAAASCAzOMRnGw/Wm/rTt1qkG1OeNdutOg26MDIEFveACAAAiEE263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nrXt1s4G119a6+tjU2yzxm6Nqx6049a8etIzjDXrZwNt562G9alnG6424sQD1GjAJLU9aKJtSzjN2bTxNoQS3giAjY0dIAVgbfm4y163I9bxZtgc2lcwAomhwS0aDbYRtWvW2kbej1sgAAdDamBt0PWuYLeltgGG3o9bAAAciChLgFBt/A2y2bTM4ybG32jb6EtLHjNPrQINoAG0+ja4wtXCWsObSj1tD60ATaNWcV3WvbrS2NrL615ZbU4tc/WrGbWuNpv60YTafxtVA2/8badNqTcC8wQ45t5/WkZxpm4y162/da2etbvWrvrVM42jG3lgBLRMSXWhfrZAACJ62k9br+thPWuXrSLY3p0AAja0et1o2vnrW2NosS3aecrEt5/W5vrdiNuv627zadhtvfORqXH4NuIm1tjbIAAyt2VELZkrkcS0aDaJxtaE22+bVqwDPm3BJacGSoc2/NxtvNoF63aLZs+tgPWpZxvT1tiS24DB0BtqPWqZxmBNqrm3WBlU4tYA278bQs429G28eNsWgtBpbPrbn1u762YZbMGSV3WyMba7Nq1608TapQMRSW8uLSUludgD2Dap5tB/WhXrX5NoAW309al5tK825Prdb1rxm1s9brAA5/WpZxhM42lG339bb+t8PWnbrQj1poQA3JbvHqAnEJZLQAgBWS09+bDBto82uCbeH1oV60o9aBRtCvWi3rdD1udm319bR5tWvWo4bZ71sJS23JbFkt7ZQGgPIQAH4W0KvVnYA8A2lObeItsgAAW9b8etTs2sebVM4yOG1/daZZtcs2hWbUrNqR62vja8UAczjZibZ71t262I9aC3Ghc24xbVsNoWG17jaiUtvj1B5LYBLjgG2BjbOhthw25ObSqNrVG0iLbtFtvPWiRbZuNoV63ZuMfetAvWy0RAClp2na55btRtKPWnqbdlNtpm0tjbRJtUE2wnrej1o161BLboetCPWpsbZAAA48YM9acltdC2mXLdX2MPRrAgBkUt3i24JbaEtqnG2I9bqBtiS2yubZAAFz62ZuMjettC2zbrYotu4W3EpbeOtVM2rsrTmzgZS1xLa6QAEPWw3rff1ptm1h9axFtbs24frfv1r0W0SLacltSQ2uybSz1t5S0m8cqtcAqWrVasL1uwG3XjaUlt4S2qZxgf1vZG1FDasetZfWhnrZXNu0m27LbJxt/I2o5bdx41MAAg9b1xtEE2ppbdgNolm2mABvhtTs2mZxoXNrf62DjafzE8PW0vrc2NrYW2l9b3ZtQS2sRbdM40x60W9bvhtu3WzHrXM42dm2uzb3Zt642t1Lae5g9S1YMRi0t3qW2tzPRNpIm3u9aUltu/Wy2bTZ42CG2NDbAFt4A2/frSQtoaW009bs3GYvW3JbcH1pbG2k9aD+t1C2v7rWwttBW0zOM3Zt9/WhHrdYAEAABoIEj1qmcbNjaFetMU2i3rd71sIG3jON+etdfWzhbboNVdy0sGAi0tqWROFbVT1pp60WeMWetxk25FbWEtoB627jbD+tCvW1Prfitq5m2yrbIlt6K2/8baYAEb631Tajet+K2rNxixNtMABeja/+tUzjehbYwtuYW3w9aYpt7C218eCGWgMUDKAAmRtIPWyAAIAtosG1VLb2VtLs2sZxlytvr6239bNut6q2/8bZ6NsxW16rbTAA7K2nbre6NpZ60vDaaetNs23brbD1u7m2WeM2PGmbjTgbfqtooa2QSBf0tgf2f9LfJ9FPq3QZbsDw3HpCBxsjNu5a2BXJsMtJ4WgfrfX1okW0w9aXxtmPW4jLczDxZVRtZanutTC2yzxsoACWcYaABLZt9M2t3rcENo9W09zasJtBq28tbSwtpNW3crb3steT4Ou6ixlr4ABsZbiltA91Sm6sHTlMy1aLbRltVS2qRbcYtstm2ZuMO+tk82libXj1tsW379bIJtLY2pMbZAAACW3qjapotghoZzLR9Ns5K2CJbtWtwC24Q0t66RNKCWukTwtuXDYQ6MNlrz/CjZatAm9wWtilMdls2BanZauCtmeuS7LQCcK/2Y3ZaVe69g2pdbSutqb63Lrb2htLPWoJbfotqVm0uzaqVt+q2jtbTTltYK3Kdb4ct6yW+irVTltwkDAba18twuW9FuqLlrNG1WowB7qnpMeXLQZFhg2225bxZk9uWy9bcpSjdy19LasNtBaWnPLdj4wkSgF5aagga+W+A3Fvrn71wz5aU6tCPm3kAAvlsOm1ogBl8tP+Wkz6HRtq20hTdaYGtsVOJHzbvlpiG3bjaSets82zTOu8AH0G0o9bgRt4E23frX5NrKm1TOMQltNK28/LWX6hV7rU9b9utm3Wjwbc5NqNm0I9MshtSzjKZxh0Nox617tbohmCY203rXM4x0G3RDb3lt0g2+CbUFnXeACIjad+tD/Wu74MUM3wm2Yrbo5tZQtOwbYT1tX60dNb4MtQzjP2bVhNrJi0B9atutGvW/9bW7Ntr62kLbM3GiA292baT1ptW12eNS+tbHjbebZj1orm1LONChtePW5HrZktq9G3RzbMCtdG2nvzX2VrJjxtdaLBAUbWkCHNV1pL5x2hasht4Y213rWT1oaW00LbXRtbPWlsbVrNurKISFbsttOo2uXrfD1qOG0RjaoxtihW4JHJaNsNW2tzai6tYB9fBbai7jqcBNdaf8tsPeYXrcr1oWcby9a6+tpgAD0bXott261JLaWetHvW0nrSD1ukG3W9aWxtwPWpZxj6ttf61NLbmVt8s2/frWn1t36139bzNtBXGPwHD2Nu762Qjaltt8PWvbrcz1sBW0I9afVtHHjfrbW+Nqt61d9aFetGw2lsbQd1q2K0yTaNetizjLNxk54zxQDvdbxFtNs2kFbaStt0W0TLb81tB3W4NbfZtsx628za9+tO22s7beH1om23SLbdFtU82hnrc8tuKG079azBtoW2rEbfv1oVm3TjaeNtWxW+YHPJ9ni61Y2RdgcpZWyfPPYDnoG29baQdthc24frWx4wK21zOMYttdi2/frTNtrlm099b4etdi2wBbSDtvTxI2raYpt7j4QbbRMtsR237dbOBt3M2uvrW5tr3xiivwBhtb22qpbeSNqq20ALabZtCm2qZxuctou22R9bXZt7I23EyE6Vq7niIKNS30fO2kJbV9togm33db3Ztwu2xVbYz1pp63q9aAhtlw24ybZb1pSW2S7aqVt0u2mUrcYACHtSR9ajBtvPWm2bfSVo9G2p9btdtmbjQIbdLtrlW1LzasRtUa21ErS4YUC62pyJSRt/O25XbYLtrV23S7ahBtyvWgbbfrtut61ebbjdtsu20wAPyNsB236LbC5t3fWrnbb1zipByEg4OKY2moZjbYWVthiBVlaF+twO2pbbWgxGW23K7a/Jtnk2pbbZTtqmcaVrbLlExzOMjADnto163jjbletJPW2mbaYAGp202rarxth22pbbUNtv362p9a0et9PWuPbUDFsxBycvFaWCPrW6srQ58G5K3Vlb6yt6a2xeAG2VrZByY7htttdO2pbbcztvL23fbacht1E2rfze8Dg7q2Mjb/Wt+gOcW9JtNtkmIr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4N53s8/2eYRGNqBa2LzYN5s28wOeZTUMvem6QANt5yAAINedkvNUF7ybzD55ty83mobgFPxnmBLzC55yy84WobjG23nmobzaAp8tQ2ASTtPNyuN0zzZV5wK83K4xDPPlnn0zzMrjPAU/ujmsj33nn4zz1N55d5SQKfeAARXnlzzFl5qVxn7eZEL2K3nqBTATWim84AAC3QeYE4r9ravMdXmRbz3V5iy84T6euZ2PXnVbzhwJo5nfGebYvPPnmNbzQZ54C81cCYMvNyuNEzzet5+4E9faU+vMxnmKzz6N579s9q1qLPNlnnvTzxZ5pu8zK42AvOAdmcMtdp54s81mebfPMT3nZXGwF56EE0xygbx3HnnQbzRF5yAAEveanvMq+nnYAgZ55m8+DeZ3vMe3mH1DtLBBu7RvebFcZb3m5XGoZ5mM83aebJBM2Xnbzzsl5nDs+8AAfvNZnmvTzb55sVxl6eeyvOkRaavdr957082+eePPPf3niWc6k2v+8wVecpvPU3mPfTL952y82/eaZvNi3m+xjooJ2m8zmefbPPJXmqzzft5rjs5t7owvN03mOzzFV5508zBeeaFPzjGfWdEd5tS80leZwfN4PmJOz+tmVoU0Q+edPNJXmUrzZD5l0E6X+ntPMg3mi7z2D5+M87g+b9vNqdnibddp5ph8x2edofN+3n6AdXV5ms89feZDPO33mIYD6N50s8436ftPNfXnwbzmt5p28zrefovPSuMh7zdnZtQLf3eekfOZnnZHzYN5q28xP6fE0OBXnCLzQl5sVxpWea7PPjnngzzYZ55sEwuzudgA73mnzzTd5sy837ecC7PvAA57zk95p887+eZC7Pb+mEuz9p5+a81vec7PPlXnSrz2Z5uq81VeY7725F67Tz215sq854+ZKvNlXnAnzFV5qq82uCbTPMyuMN7zZV53B8xrebBvN2nmHLzgt5lYk8AVvifOg3nszzyT5/+8zK4zzPOldnSRTQAZky81K4xDPPtnmsnzEN5nJ89TebDiP0Jb9HzOT5rs87g+bsvPaTGX7zIV5nO88+edsvMjnmDJjdT5tp8712blx1VPminzzD59S89nEbpABBnn/TzH95kc88w+btPPqXmqAzpcRgPrT2ecDPNf3nui90T52J85AABmfPcXmV7zeWhr08zM+aOvO5nnU7zG3ZkoHbeeczPN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d7he5RPeT7uOD3o977497/u/jfe/uMVj3jZ7xi9x3u6v3f97v5b34B7gw9wA++8vdUHvcn3mJ78V95fe+HPdcXv393SZ70Dxt8e5Bffivu+934B7wmfR3u/73e7nvWT30h7q494B4yoPfGnuUT3iJ7089/i+4gvdePvrL3B9739xlNe5BfdKvvAn3Hr7hTxzvw7jvcJ3uqD3DN7+890ue4PvfJXusX3vR7si9xRe5JPeVnupH3Mj76Y90u++UvdUHu/73q+7l/d5/u6CPcwvu4X3fe7qg92Re+Rfer7uQPGjT7+W97S+733d2nuF33hL7kft4p47SPeAeNcD3GB7g+90Pu973e0vvnD3Lh78l9+5e5EPdcPvl93th7/d93ee4fPf9HvIAAj77oI9y++8sfdt7vYX3yEO1F9+Qe++Pf/uNMX3A+77F94B+7xfcT7usD3g+7/Awx1e6/fdz3vzD3v7jG/d25e8H3fIfuD33D57g+9xFe4H3clXu633n173o91R++A/d5Pu3z3fb7tl91h+9A8YgeNAAA8FCnnvID3GB75j97S+673ef7ve33tj7qF9ype4aPcuw7x7XWwD7VrQ0+4MvfGvvPH3Jh75d98m+/gPd0vvVX3KXLvbi7p+6tvcf3uDP33j7oN91ge5jfcqvvFMXzsAYF94i+4vffk3uv73rN7vT90Ze8MOvmHve93CV7q498oAH2PcaAAD73Jn7ifd2++/hfefvukX3KL7tF96R+/I/f4XucX3QH7mj9yB+9wHdv2vW/tqj7uh9ww+42vfGvuBX3iV7k893Se8xPcMPvY33wHjGN97/u8ivfa3vk335h7jK9+Ae4ovcRfvEX3377ps98w+6ofc0fvPH3+17nL92se4Pvfv7u133tL7zx93W+8VPcfvuXj3EF78DxmWm9My3pfv6H3jD7yAAPK+91fd9HuEr3Qr7oe93Z+68vcDfvQ33gJ71i90Fi/UJsqXvID3Pl74w95ie4Cy1TWwP73bX7mW90Ae/1fcsPulX3br7lV98hDpc/dX3uHD31V7so9/Ue97fftvvfL3q+71R95w+5lffRXvtQH0b73o9wBe/f3eZHulX34r7yKHeQ3pc/fnvvKL37n77+98u+9lvdnPu1P3be78L9x++7q/fRfuSP3GL7099wl++o/cEvu6P3sjrnT9yze9cvdWfu+D3Nf5nfd+B40ivcxAxIr3NF7jQAAke6SPcNHvWP3Pp7zA97/u9PTd0gA0j3Zb7x+95W+773d4vup33kAAZ74898Yr7RGHubv31V7rD97k+9Y/cJfvwPGXP7z/d8hDtAvfgXvpL3sl7+d93Y+9+/fp7OeZd+X70j96/e9/3fNPu+93cv73vd/T+5+/ef7uh7UgP7kk9z6e44PegeN+j3b+7n090o+7Cvd2fuQPGN+7uS9/se9a0u7GHth7AvL+V91h+8BPeePuTz3PX7xU91W++TfcLfu0r3NF7qc91sjrxHusFad93UB7i495AAE+/fffvjP3vL7/c96YADjvcGHu7H3nD7sfd1fu5bvcg3vB93Kx73L95vu4KdfyvvhX3kAASK9/ue64veOnuW33Av7uW98ae7zffL7uYoAFp74091Pu90veHHvf93Xx7sW93hm8CveRQ66nX5JT2nLRq/oy/fjfu/f3837hE92d+55y0tnvxn3MUATN91ie5e/dBHuTD3VX7rK9xL+7d5dCAXxct0r79I99Fe/7/fPDvJnXiuWyTN5htss/cnvuTv3zb73y93S+9JPdIjvER3MmbhMp4eI60j3suv0R3oxzqqXcsBcPts4juLTneI76yPVje4FPeAWG6/3CJ7hv93U+8ZX3mHu0j3qp78kdzK+BxPf1HvnZbBh74k992e/33dRkGCT3jE5l/d15e5P/fLS7Dj3uT7taXZoe9m2O6fupV9nH7pc91N+5D/dh/uBj3t+75H9zJ+473e7HuDv3EF7/vd3Ue83vf8fu8n350j39xks+9+vdsHvdskXe7oy9+AB733dNHuuL34r747F1omf73egeM4D3p2Ljcoylm7NR3gvu9j3ch7/fd1+e5/PeBqmXR3Ql72/d1Qe98/f+fv733Pp7z892Me6YA9Zy5mfNHAH3k91ce5/PeZuu5cTZWb02Xcve+jvdTfuU/35h7ri9xSe7H3f/7ufT3O97vvd6Ie4zvfjPvJ93Kx72t94oB6efemAAfj32B76y91/+/G/fKAfeb3yL7169+1m59fclvuB93qF7yAACYB5fveD7vTAA/T7np99z+/9feQAAXD3lp7+G9w0e7Wl2/7ukX3FR7vFAIx+9X3fH/uIL38AH+o907+/APfSHvCv3zd7l/d7U+9UA8n7vrAPhX76W9yZ+83ffI/vmx3q1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sVvWkACmM28265O/qje0dvmo3ge70318ZO9BXHK1PH/NgHS5nd+N6+odegBb+9323ryNE9Ey8TV69X9M03vXr3NN+t68jA2RSHh93nQu+h166W329fL7vhU75fxPNN7HU9dbvVsLPznkobxU67brbooBNpvvQARSyGT5lHu+6HflhvrHL29gI50Y48vwLvtRjYSRtS74/N4tX3XA2srvAYbwl0Ood7/m8PbUtDvZnLo7d/UXd38warfv1P527xrV7W/rdIfvAApBvdHjeAAPX14eDNu1uCBv7aV4ZhBKQBzDeid6vpdL8VgsNyrt+LW+hDftnHZTkKXr6Nq4B3eWnaV7N/h3qbVxFO/TnP9LfaNd4y11tD/HWfGO8P6IKh3HgAJXr3Du7r68i4AbOvswusNbzWN71m+oWwDZvsMX1kGz1kBwd0q26o9r+O7yWncyd4t6/O9f5pvfGnqKb1Tu5xi9tZaX7vr43l3ryed5sBoLreIGdx4byTT8SM+k09AxPFQbsC34s6yrXsS6+CBGnErzJ3tTT3Ht6y6/qoADtvOXX1zrda2anW8jHWd6zll3zwQKYbrh6OIq7X2jYUAC/Y3s8bCe/+TegJw6pnrsI3DN/q693HmEI3i53tUFzeQ/SPDhzXpm9aTQUtzUF1qx0AcDfGdXlvu1T/f8gDttthXeEtPqchw2L5zq6L69mxfKmAvpANet6Z/so333rWousewroF2I7F7zBsVafdpj8KqlQCFw9vBYgL7hynv3sX9CBHvW626/Ml3+MPQCKWJMy4nusON4tJSldLj38qM7huB168u7fk6dww32OL4Q2cDO+RhDnWAeC37B0gnN5IZe7beAWdD3XjOLz3tY16P67fC7XqxTv60+918Li+fdfszdRz3p3b7et7z2/breK4vZLe0Y4zYd57kA1xentPQWHpQJsE+kJp1wben2Aui328gEbs0YW/XWf7FV281ys70pMY6YDM/FXpvMxuyydWpG8Fifl7vTRtxQexzXT1S7ou+Eug0ojmpu4eL4A8eT6M00B2nASOVm7/avtKd2+djPE8gi8X4nr7Yt9NSOkxmP5vV4+hto/ugol6/7LfItvkK3o3r2lEbuO+96vvOE5PXofV/Tp+Ed36DaO+tv22+zxqaXfZe83dal+t9njPU7Y1Nofjs4DaH47v3WqgbQ5trTw8xcmeXvcPW/Nxvy95uG2ljbLPGt8d6Yu41S/0G0Px3/NtMr3nM7YAAEUQY8Z1kNseO3qve7873Rdnq7X91ofjvRTb0etkOd37rW4XdLG1hbauy763Wy4bS71tj238vefJtYzjcV7/Eof420Px3hDtMr39n45/do3O0evftdP5/W247eL1u9e/8vf6Zt0PWtjxg91rWO0w9bt5trJ2gQba/q/Nu1+veaZtgb3xXrSG97De9BDaI3vM624U7UlG724a1uY43vsvWhN78G99De/hvfoetkb3gV72K99lG1SLWbXvNPWtvbfa97+60FLafetsBrxebZH1vv62/dbbRtpSd/KN4vNpre+rbaePGDS25nraUndKjdU9bbXvlb3vl73v1sL61f4eVe6pnjCObXy95+Lv+veMBtbvW9V7w31oF61iTP+NtHL3wd73O96pz2sDaIDthA2oS7XTnqtG3Nt7+Bt2R2oS7eX8fsG1jOMtltu/WtRO8f1p5z2/F3GptLw2jXrTINsoI91nbG+tyq22ebZNG6QH1gDa/+tAA2z3rY+98fVtMpb7Bt3w2q+7Y+94/VsXveYetV73m973u3vgG3srasBtOA267rVy99sS9gEkVXvck2yLbT8dpLe8n9bZTLDA2mebWLyfYG2l9aH47NY2tQLX697HG1ETabPGkOduxO74l80G2GbaGlr8A22UbTdG8m0CCXanBtH/X94AIAAHIQGEbdR9+/6+1uZv3vQl22JL64Npp61Hna5ht9njIUbSAN7Sm2BDbCi7YQ2ucbW8AZiG1o9battCQ2wT7031vZhfPjbOXvyDO/YbYYtqN630za6gtyzbkpL2wNsx61jjab3vDKhtd70K97Ne/EgHeht8uVwYbSK9+1bPn9afetjb34MW0M4y4+/BDbXht1y11gbd8Nps8b8ve1etDCdyz7wgttubesDbjxt1C2/D76h9+6S/OwAN+tnk2nybeQNvfe8xJPeBtjC2iw7dGe77e8iraaetXR2zz7582/sG16rbZ5tjX2ulbeL1oC+/wrXvLtPi2+uGx5NoMTsJNFFxtxA2pD7wXS92zu2ff+Xv/PWmZxkl974M/L7aWRtbI2qgbS3NvcBO8jb+Rtgo2pTbZTM9rcxC9aJRtFg26UbSodtHPeKjbAttK62txbXVrdde+6jal5tx82vcbR3S8D60fZ2GE7mbjNjxs2NpD6039bHXv7C2/ul1aNtim1Ove5xtOhnrbrY31vxm2XJOKmd3l2zbrQL1ta71hjbattG22ykY2CNszcYPx2QRtQF7iEj6HNps8bM9a3htf3W7Nxm2Nt6m07ffaVtUKXrMbRD1pzG29baWet8PppQbQd97rm34ffDPvNyduPrXXNr7FvO3bSFtv33qkjzateTIPn9bopthvW4B7Q/S/P60rjaGetOb3md70G9+Ne8E9bJNtH9do5nQRNuim2Dve9utCP3kQbR7NvARemeNOjtrPW57rf1NtQRcXjas3GLPW/l7/j1vzcZwLbaUvOr3ufbeq9+De8ubbETt8DLukAGO998W3qve/Jt5E2mCbVRNoDbfOwB+BtK42kA7ez98om2E9alnGJa16nrdt1rEW3vLb1Xvja2zn77Fe4bu08/exxtfP36c7Q/HbJBOwfem+tpA2n17+oi4MG1uveVfvRo2/l7z1NvfO3g53Uet8xdyzxlAndzbfK/ehJt6r33X7/f1sFG0G/ejltxv3hXWxr9+ne+q/edfv1vW5HrS8NpR62G/epnGtv3riLXiNtN++O/eCttuK2uTbW795t+92mvRQT6X3gN73D979+9ZTax7tvi25ttxg+dD+/TvfSfvfv38SbaJtoSm3K9aZGXgEt/wbYrNoym2DvfdfvSf3+KbYFNoF607XuM/vUU2vqbeb9+Ae11Tbo/viI36sj+W98DG3q9bIJtOf3oqbSn94F60nxvq/vga2uv72X9+ym31TaBet9AO6u7Z1NuxTsCTaS/v9njEPrehLa262XjaE/vGP33r7waNubG3zrb13v173wn7yCZ7UC0j/eSfvtP31V7/rNsn+/2LaSjtYxds9twE1ur+/tnb1XvR2dmhO3yN9M22/vf+fvvc2v8bcx/ec20c/e/xt55HwpF8NTtM8bbzb7PGnO2/l74kNvCG2kmed0cpnjZvrZfdsHe/P/fZRt9rDsObYaNuzcZ7/f/ttvG132bf/94T+8lvesetBZ2jHreGNvl60X53UO3eizg6bVVdrp61VvfwAfID2gKbdAD8uG0Ydur5tc+dsP7wn9848bmJ3Kfv3n9uT791drJ++XJ3pBtNCdi6bef1tIB/aDa10vt02vS7RFtvj+993azBtbq2gXrfyKZVe9xnb69ts+dg/O/CdqYB8vdb90vPfmoZxm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pRte/WpgHx/ndGh8Q9b5htjSPws7eH1pQR+UI+mTtNwPmlox9D/h631rbjztxy+4B21Aj47O1uI++7tH0PjxH0SttSh/9Xaw+tgC2qMH5j1uoW2LQ++7tJb3pvrVkj7Zh83bagi7hi2mg7coK6iavzOf9kfypzuY7Y2NoQzubV669tnvWglbeHdrU22K9axVvbF1mye0c584us0wOLZblp2lV7ya977u0w9bmetQC2nYC1K95k++tw+loffk96nrd/ts4+8MJ2ePvym2ljxgMdvTm3WZukwfYzjHTbVGQdEABUffkLDpm212H94K/o+/ZTa1fvtm29JH+K982l0X/eBfvQl256bdcD6lh/j/e5etyoP2HbSFtrC22QAAIttJA23CHyTtuR62xQ/j4f50jk0HzfNpre/79bdskMMPyMbZZ40wh9aw+nPGHt2lFHzdhek+98vfgAAMPWyebcu96bB+6LaOkfxKPwZbR4j/6h92F2KcTiI22U7UpttVR3seM5ZtygAdt72j1q5R8K9a6gfeUPvNb+7A+Z82UHbcofToPzMH3ONs4CckVOzUd+qPyzxoaj8lR/4ffpUfTW26Yux9i4n622o+/R3YgHnmXbR98aB8a9aDutfy2h178ED/zcamABOofRu2yA7TbNsm2109bretKOdzK7XXtvAO1I9a/utwD2it74Ftvbe+7dauPGBEPpBH4ztqdh+2I/RvvUB2slH2ONopR/FBblUfUzjf13VXA4X6289bBjt9QPxoH6RD4T+/y9bfwfDCd61bTNtsJ60+rbbXvu3WrZbZCdo6R+EDa2etv3W9bbU394sqc9jbC0f0u24yH0GtoT63LOMA0fx220SbS+D8d23+rasptxc2pZxgL1ts237Dbj5tYB2xU7Vaj7Z6249aM0f8O2qAH0a9/eR+iw+3etJE2p+Owf1o1e/SDbEDtivWgWH2r1tx62VvfB0fFCP/BH8VD5k+8lveHePMr4CHrRuj5AzskLbd0f0u20NH/Z4yMB8XI/xNtRaPhXrbHx9PR9Px3D4fT4P8P75ej+HHcFo/30f7vl5XrWr1rQON17ai7r+Vhw07YFtuzcZjo/PQfgW2n9HzgD75R8PZvoMd/MP57rXuj9xm1jHbVttPiPynbaQtpim2e9au0fNs2hnbXXtvD/Bfo/lttIPWmzxliD82A8q90cwf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=";const {react, reactDOM, excalidrawLib} = window.eval.call(window, `(function() {${LZString.decompressFromBase64(EXCALIDRAW_PACKAGES)};return {react:React, reactDOM:ReactDOM, excalidrawLib: ExcalidrawLib};})();`);const PLUGIN_VERSION="1.9.3";function _interopNamespace(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(A){if("default"!==A){var i=Object.getOwnPropertyDescriptor(e,A);Object.defineProperty(t,A,i.get?i:{enumerable:!0,get:function(){return e[A]}})}})),t.default=e,Object.freeze(t)}var obsidian_module__namespace=_interopNamespace(obsidian_module),React__namespace=_interopNamespace(React);let random$1=e=>crypto.getRandomValues(new Uint8Array(e)),customRandom=(e,t,A)=>{let i=(2<{let r="";for(;;){let t=A(n),s=n;for(;s--;)if(r+=e[t[s]&i]||"",r.length===a)return r}}},customAlphabet=(e,t=21)=>customRandom(e,t,random$1),nanoid$1=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce(((e,t)=>e+((t&=63)<36?t.toString(36):t<62?(t-26).toString(36).toUpperCase():t>62?"-":"_")),"");function JSON_parse(e){return JSON.parse(e.replaceAll("[","["))}/Mac|iPod|iPhone|iPad/.test(window.navigator.platform);const DEVICE={isDesktop:!document.body.hasClass("is-tablet")&&!document.body.hasClass("is-mobile"),isPhone:document.body.hasClass("is-phone"),isTablet:document.body.hasClass("is-tablet"),isMobile:document.body.hasClass("is-mobile"),isLinux:document.body.hasClass("mod-linux")&&!document.body.hasClass("is-android"),isMacOS:document.body.hasClass("mod-macos")&&!document.body.hasClass("is-ios"),isWindows:document.body.hasClass("mod-windows"),isIOS:document.body.hasClass("is-ios"),isAndroid:document.body.hasClass("is-android")},nanoid=customAlphabet("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",8),KEYCODE={ESC:27},ROUNDNESS={LEGACY:1,PROPORTIONAL_RADIUS:2,ADAPTIVE_RADIUS:3},GITHUB_RELEASES="https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/",URLFETCHTIMEOUT=1e3,PLUGIN_ID="obsidian-excalidraw-plugin",SCRIPT_INSTALL_CODEBLOCK="excalidraw-script-install",SCRIPT_INSTALL_FOLDER="Downloaded",fileid=customAlphabet("1234567890abcdef",40),REG_LINKINDEX_INVALIDCHARS=/[<>:"\\|?*#]/g,REG_BLOCK_REF_CLEAN=/[!"#$%&()*+,.:;<=>?@^`{|}~\/\[\]\\]/g,IMAGE_TYPES=["jpeg","jpg","png","gif","svg","webp","bmp","ico"],EXPORT_TYPES=["svg","dark.svg","light.svg","png","dark.png","light.png"],MAX_IMAGE_SIZE=500,FRONTMATTER_KEY="excalidraw-plugin",FRONTMATTER_KEY_EXPORT_TRANSPARENT="excalidraw-export-transparent",FRONTMATTER_KEY_EXPORT_DARK="excalidraw-export-dark",FRONTMATTER_KEY_EXPORT_SVGPADDING="excalidraw-export-svgpadding",FRONTMATTER_KEY_EXPORT_PADDING="excalidraw-export-padding",FRONTMATTER_KEY_EXPORT_PNGSCALE="excalidraw-export-pngscale",FRONTMATTER_KEY_CUSTOM_PREFIX="excalidraw-link-prefix",FRONTMATTER_KEY_CUSTOM_URL_PREFIX="excalidraw-url-prefix",FRONTMATTER_KEY_CUSTOM_LINK_BRACKETS="excalidraw-link-brackets",FRONTMATTER_KEY_ONLOAD_SCRIPT="excalidraw-onload-script",FRONTMATTER_KEY_LINKBUTTON_OPACITY="excalidraw-linkbutton-opacity",FRONTMATTER_KEY_DEFAULT_MODE="excalidraw-default-mode",FRONTMATTER_KEY_FONT="excalidraw-font",FRONTMATTER_KEY_FONTCOLOR="excalidraw-font-color",FRONTMATTER_KEY_BORDERCOLOR="excalidraw-border-color",FRONTMATTER_KEY_MD_STYLE="excalidraw-css",FRONTMATTER_KEY_AUTOEXPORT="excalidraw-autoexport",VIEW_TYPE_EXCALIDRAW="excalidraw",ICON_NAME="excalidraw-icon",RERENDER_EVENT="excalidraw-embed-rerender",BLANK_DRAWING=`{"type":"excalidraw","version":2,"source":"${GITHUB_RELEASES+PLUGIN_VERSION}","elements":[],"appState":{"gridSize":null,"viewBackgroundColor":"#ffffff"}}`,DARK_BLANK_DRAWING=`{"type":"excalidraw","version":2,"source":"${GITHUB_RELEASES+PLUGIN_VERSION}","elements":[],"appState":{"theme":"dark","gridSize":null,"viewBackgroundColor":"#ffffff"}}`,FRONTMATTER=["---","","excalidraw-plugin: parsed","tags: [excalidraw]","","---","==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==","",""].join("\n"),EMPTY_MESSAGE="Hit enter to create a new drawing",TEXT_DISPLAY_PARSED_ICON_NAME="quote-glyph",TEXT_DISPLAY_RAW_ICON_NAME="presentation",FULLSCREEN_ICON_NAME="fullscreen",SCRIPTENGINE_ICON_NAME="ScriptEngine",COLOR_NAMES=new Map;COLOR_NAMES.set("aliceblue","#f0f8ff"),COLOR_NAMES.set("antiquewhite","#faebd7"),COLOR_NAMES.set("aqua","#00ffff"),COLOR_NAMES.set("aquamarine","#7fffd4"),COLOR_NAMES.set("azure","#f0ffff"),COLOR_NAMES.set("beige","#f5f5dc"),COLOR_NAMES.set("bisque","#ffe4c4"),COLOR_NAMES.set("black","#000000"),COLOR_NAMES.set("blanchedalmond","#ffebcd"),COLOR_NAMES.set("blue","#0000ff"),COLOR_NAMES.set("blueviolet","#8a2be2"),COLOR_NAMES.set("brown","#a52a2a"),COLOR_NAMES.set("burlywood","#deb887"),COLOR_NAMES.set("cadetblue","#5f9ea0"),COLOR_NAMES.set("chartreuse","#7fff00"),COLOR_NAMES.set("chocolate","#d2691e"),COLOR_NAMES.set("coral","#ff7f50"),COLOR_NAMES.set("cornflowerblue","#6495ed"),COLOR_NAMES.set("cornsilk","#fff8dc"),COLOR_NAMES.set("crimson","#dc143c"),COLOR_NAMES.set("cyan","#00ffff"),COLOR_NAMES.set("darkblue","#00008b"),COLOR_NAMES.set("darkcyan","#008b8b"),COLOR_NAMES.set("darkgoldenrod","#b8860b"),COLOR_NAMES.set("darkgray","#a9a9a9"),COLOR_NAMES.set("darkgreen","#006400"),COLOR_NAMES.set("darkkhaki","#bdb76b"),COLOR_NAMES.set("darkmagenta","#8b008b"),COLOR_NAMES.set("darkolivegreen","#556b2f"),COLOR_NAMES.set("darkorange","#ff8c00"),COLOR_NAMES.set("darkorchid","#9932cc"),COLOR_NAMES.set("darkred","#8b0000"),COLOR_NAMES.set("darksalmon","#e9967a"),COLOR_NAMES.set("darkseagreen","#8fbc8f"),COLOR_NAMES.set("darkslateblue","#483d8b"),COLOR_NAMES.set("darkslategray","#2f4f4f"),COLOR_NAMES.set("darkturquoise","#00ced1"),COLOR_NAMES.set("darkviolet","#9400d3"),COLOR_NAMES.set("deeppink","#ff1493"),COLOR_NAMES.set("deepskyblue","#00bfff"),COLOR_NAMES.set("dimgray","#696969"),COLOR_NAMES.set("dodgerblue","#1e90ff"),COLOR_NAMES.set("firebrick","#b22222"),COLOR_NAMES.set("floralwhite","#fffaf0"),COLOR_NAMES.set("forestgreen","#228b22"),COLOR_NAMES.set("fuchsia","#ff00ff"),COLOR_NAMES.set("gainsboro","#dcdcdc"),COLOR_NAMES.set("ghostwhite","#f8f8ff"),COLOR_NAMES.set("gold","#ffd700"),COLOR_NAMES.set("goldenrod","#daa520"),COLOR_NAMES.set("gray","#808080"),COLOR_NAMES.set("green","#008000"),COLOR_NAMES.set("greenyellow","#adff2f"),COLOR_NAMES.set("honeydew","#f0fff0"),COLOR_NAMES.set("hotpink","#ff69b4"),COLOR_NAMES.set("indianred","#cd5c5c"),COLOR_NAMES.set("indigo","#4b0082"),COLOR_NAMES.set("ivory","#fffff0"),COLOR_NAMES.set("khaki","#f0e68c"),COLOR_NAMES.set("lavender","#e6e6fa"),COLOR_NAMES.set("lavenderblush","#fff0f5"),COLOR_NAMES.set("lawngreen","#7cfc00"),COLOR_NAMES.set("lemonchiffon","#fffacd"),COLOR_NAMES.set("lightblue","#add8e6"),COLOR_NAMES.set("lightcoral","#f08080"),COLOR_NAMES.set("lightcyan","#e0ffff"),COLOR_NAMES.set("lightgoldenrodyellow","#fafad2"),COLOR_NAMES.set("lightgrey","#d3d3d3"),COLOR_NAMES.set("lightgreen","#90ee90"),COLOR_NAMES.set("lightpink","#ffb6c1"),COLOR_NAMES.set("lightsalmon","#ffa07a"),COLOR_NAMES.set("lightseagreen","#20b2aa"),COLOR_NAMES.set("lightskyblue","#87cefa"),COLOR_NAMES.set("lightslategray","#778899"),COLOR_NAMES.set("lightsteelblue","#b0c4de"),COLOR_NAMES.set("lightyellow","#ffffe0"),COLOR_NAMES.set("lime","#00ff00"),COLOR_NAMES.set("limegreen","#32cd32"),COLOR_NAMES.set("linen","#faf0e6"),COLOR_NAMES.set("magenta","#ff00ff"),COLOR_NAMES.set("maroon","#800000"),COLOR_NAMES.set("mediumaquamarine","#66cdaa"),COLOR_NAMES.set("mediumblue","#0000cd"),COLOR_NAMES.set("mediumorchid","#ba55d3"),COLOR_NAMES.set("mediumpurple","#9370d8"),COLOR_NAMES.set("mediumseagreen","#3cb371"),COLOR_NAMES.set("mediumslateblue","#7b68ee"),COLOR_NAMES.set("mediumspringgreen","#00fa9a"),COLOR_NAMES.set("mediumturquoise","#48d1cc"),COLOR_NAMES.set("mediumvioletred","#c71585"),COLOR_NAMES.set("midnightblue","#191970"),COLOR_NAMES.set("mintcream","#f5fffa"),COLOR_NAMES.set("mistyrose","#ffe4e1"),COLOR_NAMES.set("moccasin","#ffe4b5"),COLOR_NAMES.set("navajowhite","#ffdead"),COLOR_NAMES.set("navy","#000080"),COLOR_NAMES.set("oldlace","#fdf5e6"),COLOR_NAMES.set("olive","#808000"),COLOR_NAMES.set("olivedrab","#6b8e23"),COLOR_NAMES.set("orange","#ffa500"),COLOR_NAMES.set("orangered","#ff4500"),COLOR_NAMES.set("orchid","#da70d6"),COLOR_NAMES.set("palegoldenrod","#eee8aa"),COLOR_NAMES.set("palegreen","#98fb98"),COLOR_NAMES.set("paleturquoise","#afeeee"),COLOR_NAMES.set("palevioletred","#d87093"),COLOR_NAMES.set("papayawhip","#ffefd5"),COLOR_NAMES.set("peachpuff","#ffdab9"),COLOR_NAMES.set("peru","#cd853f"),COLOR_NAMES.set("pink","#ffc0cb"),COLOR_NAMES.set("plum","#dda0dd"),COLOR_NAMES.set("powderblue","#b0e0e6"),COLOR_NAMES.set("purple","#800080"),COLOR_NAMES.set("rebeccapurple","#663399"),COLOR_NAMES.set("red","#ff0000"),COLOR_NAMES.set("rosybrown","#bc8f8f"),COLOR_NAMES.set("royalblue","#4169e1"),COLOR_NAMES.set("saddlebrown","#8b4513"),COLOR_NAMES.set("salmon","#fa8072"),COLOR_NAMES.set("sandybrown","#f4a460"),COLOR_NAMES.set("seagreen","#2e8b57"),COLOR_NAMES.set("seashell","#fff5ee"),COLOR_NAMES.set("sienna","#a0522d"),COLOR_NAMES.set("silver","#c0c0c0"),COLOR_NAMES.set("skyblue","#87ceeb"),COLOR_NAMES.set("slateblue","#6a5acd"),COLOR_NAMES.set("slategray","#708090"),COLOR_NAMES.set("snow","#fffafa"),COLOR_NAMES.set("springgreen","#00ff7f"),COLOR_NAMES.set("steelblue","#4682b4"),COLOR_NAMES.set("tan","#d2b48c"),COLOR_NAMES.set("teal","#008080"),COLOR_NAMES.set("thistle","#d8bfd8"),COLOR_NAMES.set("tomato","#ff6347"),COLOR_NAMES.set("turquoise","#40e0d0"),COLOR_NAMES.set("violet","#ee82ee"),COLOR_NAMES.set("wheat","#f5deb3"),COLOR_NAMES.set("white","#ffffff"),COLOR_NAMES.set("whitesmoke","#f5f5f5"),COLOR_NAMES.set("yellow","#ffff00"),COLOR_NAMES.set("yellowgreen","#9acd32");const DEFAULT_MD_EMBED_CSS='.snw-reference{display: none;}.excalidraw-md-host{padding:0px 10px}.excalidraw-md-footer{height:5px}foreignObject{background-color:transparent}p{display:block;margin-block-start:1em;margin-block-end:1em;margin-inline-start:0px;margin-inline-end:0px;color:inherit}table,tr,th,td{color:inherit;border:1px solid;border-collapse:collapse;padding:3px}th{font-weight:bold;border-bottom:double;background-color:silver}.copy-code-button{display:none}code[class*=language-],pre[class*=language-]{color:#393a34;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;font-size:.9em;line-height:1.2em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre>code[class*=language-]{font-size:1em}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{background:#C1DEF1}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{background:#C1DEF1}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;background-color:#0000001a}:not(pre)>code[class*=language-]{padding:.2em;padding-top:1px;padding-bottom:1px;background:#f8f8f8;border:1px solid #dddddd}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:green;font-style:italic}.token.namespace{opacity:.7}.token.string{color:#a31515}.token.punctuation,.token.operator{color:#393a34}.token.url,.token.symbol,.token.number,.token.boolean,.token.variable,.token.constant,.token.inserted{color:#36acaa}.token.atrule,.token.keyword,.token.attr-value,.language-autohotkey .token.selector,.language-json .token.boolean,.language-json .token.number,code[class*=language-css]{color:#00f}.token.function{color:#393a34}.token.deleted,.language-autohotkey .token.tag{color:#9a050f}.token.selector,.language-autohotkey .token.keyword{color:#00009f}.token.important{color:#e90}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.class-name,.language-json .token.property{color:#2b91af}.token.tag,.token.selector{color:maroon}.token.attr-name,.token.property,.token.regex,.token.entity{color:red}.token.directive.tag .tag{background:#ffff00;color:#393a34}.line-numbers.line-numbers .line-numbers-rows{border-right-color:#a5a5a5}.line-numbers .line-numbers-rows>span:before{color:#2b91af}.line-highlight.line-highlight{background:rgba(193,222,241,.2);background:-webkit-linear-gradient(left,rgba(193,222,241,.2) 70%,rgba(221,222,241,0));background:linear-gradient(to right,rgba(193,222,241,.2) 70%,rgba(221,222,241,0))}blockquote{ font-style:italic;background-color:rgb(46,43,42,0.1);margin:0;margin-left:1em;border-radius:0 4px 4px 0;border:1px solid hsl(0,80%,32%);border-left-width:8px;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;padding:10px 20px;margin-inline-start:30px;margin-inline-end:30px;}',SCRIPTENGINE_ICON='',DISK_ICON_NAME="save",EXPORT_IMG_ICON=' ',EXPORT_IMG_ICON_NAME="export-img",EXCALIDRAW_ICON='',VIRGIL_DATAURL="data:application/font-woff;charset=utf-8;base64,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",VIRGIL_FONT=` @font-face {font-family: "Virgil";src: url("${VIRGIL_DATAURL}") format("woff2");}`,CASCADIA_FONT=' @font-face {font-family: "Cascadia";src: url("data:application/font-woff;charset=utf-8;base64,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XVtdpV2uXdBeAV4OXmBecl6GXpteyl74X1Vfsl/PX+xgDWAtYDVgPWBQYGNga2B9YIZgj2CcYKlgtmDLYOFg7GElYVthfmGgYa1hwmHdYgNiN2JVYoli0GL6Yzpjc2PbZINkrGUYZUBlTWVeZaNl8GX9Zi9mPGZNZrdm/mdPZ59nq2e4Z8hoAWhDaE9oW2hoaMto12jnaPNo/2mBaipqmGqlarFrRWtSa79sG2wnbFRskGzBbM5s32z7bQ5tF20fbR9tH20fbX9tzm4ebp9u+W9jb75wGnBgcKRw1HEucZRx1nIxcoly1HMHc1Nzm3P+dEJ0rXTvdR11YXWIdcl2LHZrdnN2e3aidqp2zHbwdwd3LHc/d213qHfGd/14JHhLeHt4rnjWeON5EnkpeUd5nHnBefJ5+noCeiV6T3pyenp6hXqcewR7kXu5e+R8Dnw3fHF8qnztfPp9B30UfSF9Ln07fUh9VX1ifW99fH2JfZZ9o32wfb19yn3YfeZ9834Bfg5+Hn4yfkJ+U35hfnd+h37Vf2iAj4CrgNeBDYEzgVmBgIGmgbmBzYH4gh2CUoKHgr2C84M1g/iEM4SIhK6Ey4T9hR6FQIVbhXaFiYWcha+FwoXSheuGAoYZhjCGR4Zoho+GnYazhsGGzobjhviHBYcah0yHaIgsiE6IcIi1iNuJA4lciWqJgImViaqJvYnRie6KDIosikyKbIqBio+KpIqyir+KzIrZiueK+4sPiySLOYtdi3GLhIuRi5+Ls4vIi9aL44vxi/+MFIwojD2MUoxfjGyMeYyFjJiMq4y/jNKM840NjSeNO41bjXSNjo2ijc6N7o4PjieOPY5TjmaOd46Njp6OtI7NjuGO8o8JjxqPMY9Lj2WPe4+Rj6aPvI/Kj96P75AAkA6QHJAukE6QdJCCkJ6QvJDKkN6Q75ECkRORIZE7kU+RY5F+kZSRqZHCkdiR7pIIkiSSQJJckniSlJK3ksiS2JLrkwCTDpMhkzKTQ5NQk12TcJOMk6+TvJPVk/GT/5QSlCSUNJRElFKUa5R+lJGUrJTClNiU8ZUHlR2VN5VTlWqVf5WUla2VwJXWleaV/JYNlieWOpZQlmCWdpaHlqCWtJbJluyXBZcflziXTJdgl3qXjpeil8WX3Zf1mGqYsZkFmTmZg5mvmcaZ5Zpamr6bHZtFm7icHZyAnN6dG52E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") format("woff2");}';class Random{constructor(e){this.seed=e}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},lzStringExports={},lzString={get exports(){return lzStringExports},set exports(e){lzStringExports=e}};function splitFolderAndFilename(e){const t=e.lastIndexOf("/"),A=-1==t?e:e.substring(t+1);return{folderpath:obsidian_module.normalizePath(e.substring(0,t)),filename:A,basename:A.replace(/\.[^/.]+$/,"")}}!function(e){var t=function(){var e=String.fromCharCode,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",i={};function n(e,t){if(!i[e]){i[e]={};for(var A=0;A>>8,A[2*i+1]=r%256}return A},decompressFromUint8Array:function(t){if(null==t)return a.decompress(t);for(var A=new Array(t.length/2),i=0,n=A.length;i>=1}else{for(n=1,i=0;i>=1}0==--d&&(d=Math.pow(2,u),u++),delete s[c]}else for(n=r[c],i=0;i>=1;0==--d&&(d=Math.pow(2,u),u++),r[l]=h++,c=String(o)}if(""!==c){if(Object.prototype.hasOwnProperty.call(s,c)){if(c.charCodeAt(0)<256){for(i=0;i>=1}else{for(n=1,i=0;i>=1}0==--d&&(d=Math.pow(2,u),u++),delete s[c]}else for(n=r[c],i=0;i>=1;0==--d&&(d=Math.pow(2,u),u++)}for(n=2,i=0;i>=1;for(;;){if(p<<=1,m==t-1){g.push(A(p));break}m++}return g.join("")},decompress:function(e){return null==e?"":""==e?null:a._decompress(e.length,32768,(function(t){return e.charCodeAt(t)}))},_decompress:function(t,A,i){var n,a,r,s,o,l,c,d=[],h=4,u=4,g=3,p="",m=[],w={val:i(0),position:A,index:1};for(n=0;n<3;n+=1)d[n]=n;for(r=0,o=Math.pow(2,2),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=A,w.val=i(w.index++)),r|=(s>0?1:0)*l,l<<=1;switch(r){case 0:for(r=0,o=Math.pow(2,8),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=A,w.val=i(w.index++)),r|=(s>0?1:0)*l,l<<=1;c=e(r);break;case 1:for(r=0,o=Math.pow(2,16),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=A,w.val=i(w.index++)),r|=(s>0?1:0)*l,l<<=1;c=e(r);break;case 2:return""}for(d[3]=c,a=c,m.push(c);;){if(w.index>t)return"";for(r=0,o=Math.pow(2,g),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=A,w.val=i(w.index++)),r|=(s>0?1:0)*l,l<<=1;switch(c=r){case 0:for(r=0,o=Math.pow(2,8),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=A,w.val=i(w.index++)),r|=(s>0?1:0)*l,l<<=1;d[u++]=e(r),c=u-1,h--;break;case 1:for(r=0,o=Math.pow(2,16),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=A,w.val=i(w.index++)),r|=(s>0?1:0)*l,l<<=1;d[u++]=e(r),c=u-1,h--;break;case 2:return m.join("")}if(0==h&&(h=Math.pow(2,g),g++),d[c])p=d[c];else{if(c!==u)return null;p=a+a.charAt(0)}m.push(p),d[u++]=a+p.charAt(0),a=p,0==--h&&(h=Math.pow(2,g),g++)}}};return a}();null!=e&&(e.exports=t)}(lzString);const download=(e,t,A)=>{const i=document.createElement("a");i.setAttribute("href",(e?`${e},`:"")+t),i.setAttribute("download",A),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)};function getIMGFilename(e,t){return`${e.substring(0,e.lastIndexOf("."))}.${t}`}function getNewUniqueFilepath(e,t,A){let i=obsidian_module.normalizePath(`${A}/${t}`),n=e.getAbstractFileByPath(i),a=0;const r=t.endsWith(".excalidraw.md")?".excalidraw.md":t.slice(t.lastIndexOf("."));for(;n;)i=obsidian_module.normalizePath(`${A}/${t.slice(0,t.lastIndexOf(r))}_${a}${r}`),a++,n=e.getAbstractFileByPath(i);return i}function getDrawingFilename(e){return e.drawingFilenamePrefix+(""!==e.drawingFilenameDateTime?window.moment().format(e.drawingFilenameDateTime):"")+(e.compatibilityMode?".excalidraw":e.useExcalidrawExtension?".excalidraw.md":".md")}function getEmbedFilename(e,t){return(t.drawingEmbedPrefixWithFilename?e:"")+t.drawingFilnameEmbedPostfix+(""!==t.drawingFilenameDateTime?window.moment().format(t.drawingFilenameDateTime):"")+(t.compatibilityMode?".excalidraw":t.useExcalidrawExtension?".excalidraw.md":".md")}async function checkAndCreateFolder(e){const t=app.vault;e=obsidian_module.normalizePath(e);const A=t.getAbstractFileByPathInsensitive(e);A&&A instanceof obsidian_module.TFolder||(A&&A instanceof obsidian_module.TFile&&new obsidian_module.Notice(`The folder cannot be created because it already exists as a file: ${e}.`),await t.createFolder(e))}const getURLImageExtension=e=>{const t=e.split("?")[0];return t.substring(t.lastIndexOf(".")+1)},getMimeType=e=>{switch(e){case"png":return"image/png";case"jpeg":case"jpg":return"image/jpeg";case"gif":return"image/gif";case"webp":return"image/webp";case"bmp":return"image/bmp";case"ico":return"image/x-icon";case"svg":case"md":return"image/svg+xml";default:return"application/octet-stream"}},getFileFromURL=async(e,t,A=1e3)=>{try{return await Promise.race([(async()=>new Promise((e=>setTimeout((()=>e(null)),A))))(),obsidian_module.requestUrl({url:e,method:"get",contentType:t,throw:!1})])}catch(t){return void errorlog({where:getFileFromURL,message:`URL did not load within timeout period of ${A}ms`,url:e})}},getDataURLFromURL=async(e,t,A=1e3)=>{const i=await getFileFromURL(e,t,A);return i&&200===i.status?await getDataURL(i.arrayBuffer,t):e},blobToBase64=async e=>{const t=await e.arrayBuffer(),A=new Uint8Array(t);for(var i="",n=A.byteLength,a=0;a(void 0===window.pdfjsLib&&await obsidian_module.loadPdfJs(),await window.pdfjsLib.getDocument(app.vault.getResourcePath(e)).promise),{exportToSvg:exportToSvg,exportToBlob:exportToBlob}=excalidrawLib;let versionUpdateChecked=!1;const checkExcalidrawVersion=async e=>{if(!versionUpdateChecked){versionUpdateChecked=!0;try{const e=async()=>JSON.parse(await obsidian_module.request({url:"https://api.github.com/repos/zsviczian/obsidian-excalidraw-plugin/releases?per_page=5&page=1"})),t=(await e()).map((e=>({version:e.tag_name,published:new Date(e.published_at)}))).filter((e=>e.version.match(/^\d+\.\d+\.\d+$/))).sort(((e,t)=>t.published-e.published))[0].version;isVersionNewerThanOther(t,PLUGIN_VERSION)&&new obsidian_module.Notice(`A newer version of Excalidraw is available in Community Plugins.\n\nYou are using ${PLUGIN_VERSION}.\nThe latest is ${t}`)}catch(e){errorlog({where:"Utils/checkExcalidrawVersion",error:e})}setTimeout((()=>versionUpdateChecked=!1),288e5)}};function wrapTextAtCharLength(e,t,A=!1,i=0){if(!t)return e;let n="";if(A){for(const A of e.split("\n")){const e=A.match(new RegExp(`(.){1,${t}}`,"g"));n+=e?`${e.join("\n")}\n`:"\n"}return n.replace(/\n$/,"")}const a=new RegExp(`(.{1,${t}})(\\s+|$\\n?)|([^\\s]{1,${t+i}})(\\s+|$\\n?)?`,"gm"),r=e.matchAll(a);let s;for(;!(s=r.next()).done;){n+=s.value[1]?s.value[1].trimEnd():s.value[3].trimEnd();const e=(s.value[2]?s.value[2].split("\n").length-1:0)+(s.value[4]?s.value[4].split("\n").length-1:0);n+="\n".repeat(e),0===e&&(n+="\n")}return n.replace(/\n$/,"")}new Random(Date.now());const rotate$1=(e,t,A,i,n)=>[(e-A)*Math.cos(n)-(t-i)*Math.sin(n)+A,(e-A)*Math.sin(n)+(t-i)*Math.cos(n)+i],rotatedDimensions=e=>{if(0===e.angle)return[e.x,e.y,e.width,e.height];const t=e.x+e.width/2,A=e.y+e.height/2,[i,n]=rotate$1(e.x,e.y,t,A,e.angle),[a,r]=rotate$1(e.x+e.width,e.y+e.height,t,A,e.angle);return[i{const s=1/A.value;return{x:(e-i)*s-a,y:(t-n)*s-r}},getDataURL=async(e,t)=>new Promise(((A,i)=>{const n=new FileReader;n.onload=()=>{const e=n.result;A(e)},n.onerror=e=>i(e),n.readAsDataURL(new Blob([new Uint8Array(e)],{type:t}))})),getFontDataURL=async(e,t,A,i)=>{let n="",a="",r="";const s=e.metadataCache.getFirstLinkpathDest(t,A);if(s){const t=await e.vault.readBinary(s),A=s.extension.startsWith("woff")?"application/font-woff":"font/truetype";a=null!=i?i:s.basename,r=await getDataURL(t,A),n=` @font-face {font-family: "${a}";src: url("${r}") format("${"ttf"===s.extension?"truetype":s.extension}");}`;const o=n.split(";base64,",2);n=`${o[0]};charset=utf-8;base64,${o[1]}`}return{fontDef:n,fontName:a,dataURL:r}},svgToBase64=e=>`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(e.replaceAll(" "," "))))}`,getBinaryFileFromDataURL=e=>{if(!e)return null;const t=e.matchAll(/base64,(.*)/g).next(),A=window.atob(t.value[1]),i=A.length,n=new Uint8Array(i);for(let e=0;e{var i;try{return await exportToSvg({elements:e.elements,appState:Object.assign({exportBackground:t.withBackground,exportWithDarkMode:!!t.withTheme&&"light"!=(null===(i=e.appState)||void 0===i?void 0:i.theme)},e.appState),files:e.files,exportPadding:A})}catch(e){return null}},getPNG=async(e,t,A,i=1)=>{var n;try{return await exportToBlob({elements:e.elements,appState:Object.assign({exportBackground:t.withBackground,exportWithDarkMode:!!t.withTheme&&"light"!=(null===(n=e.appState)||void 0===n?void 0:n.theme)},e.appState),files:e.files,exportPadding:A,mimeType:"image/png",getDimensions:(e,t)=>({width:e*i,height:t*i,scale:i})})}catch(e){return errorlog({where:"Utils.getPNG",error:e}),null}},getQuickImagePreview=async(e,t,A)=>{if(!e.settings.displayExportedImageIfAvailable)return null;const i=getIMGFilename(t,A),n=e.app.vault.getAbstractFileByPath(i);return n&&n instanceof obsidian_module.TFile?"png"===A?await e.app.vault.readBinary(n):await e.app.vault.read(n):null},embedFontsInSVG=(e,t)=>{const A=null!=e.querySelector("text[font-family^='Virgil']"),i=null!=e.querySelector("text[font-family^='Cascadia']"),n=null!=e.querySelector("text[font-family^='LocalFont']"),a=e.querySelector("defs");return a&&(i||A||n)&&(a.innerHTML=``),e},getImageSize=async e=>new Promise(((t,A)=>{const i=new Image;i.onload=()=>{t({height:i.naturalHeight,width:i.naturalWidth})},i.onerror=A,i.src=e})),scaleLoadedImage=(e,t)=>{let A=!1;if(!t||!e)return{dirty:A,scene:e};for(const i of t){const[t,n]=[i.size.width,i.size.height],a=i.size.width/i.size.height;e.elements.filter((e=>"image"===e.type&&e.fileId===i.id)).forEach((e=>{const[r,s]=[e.width,e.height];if(i.shouldScale){if(a!=r/s){A=!0;const i=Math.sqrt(r*s*n/t),a=Math.sqrt(r*s*t/n);e.height=i,e.width=a,e.y+=(s-i)/2,e.x+=(r-a)/2}}else r===t&&s===n||(A=!0,e.height=n,e.width=t,e.y+=(s-n)/2,e.x+=(r-t)/2)}))}return{dirty:A,scene:e}},setDocLeftHandedMode=(e,t)=>{const A=t.createElement("style");A.id="excalidraw-left-handed",A.textContent=".excalidraw .App-bottom-bar{justify-content:flex-end;}";const i=t.getElementById(A.id);i&&t.head.removeChild(i),e&&t.head.appendChild(A)},setLeftHandedMode=e=>{const t=new Set;app.workspace.iterateAllLeaves((A=>{const i=app.isMobile?document:A.view.containerEl.ownerDocument;i&&(t.has(i)||(t.add(i),setDocLeftHandedMode(e,i)))}))},getLinkParts=(e,t)=>{var A,i,n;const a=e.match(/(^[^#\|]*)#?(\^)?([^\|]*)?\|?(\d*)x?(\d*)/);return{original:e,path:t&&""===a[1]?t.path:a[1],isBlockRef:"^"===a[2],ref:null===(A=a[3])||void 0===A?void 0:A.replaceAll(REG_BLOCK_REF_CLEAN,""),width:a[4]?parseInt(a[4]):void 0,height:a[5]?parseInt(a[5]):void 0,page:parseInt(null===(n=null===(i=a[3])||void 0===i?void 0:i.match(/page=(\d*)/))||void 0===n?void 0:n[1])}},compress=e=>lzStringExports.compressToBase64(e).replace(/(.{64})/g,"$1\n\n"),decompress=e=>lzStringExports.decompressFromBase64(e.replaceAll("\n","").replaceAll("\r","")),hasExportTheme=(e,t)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-export-dark"])return!0}return!1},getExportTheme=(e,t,A)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-export-dark"])return A.frontmatter["excalidraw-export-dark"]?"dark":"light"}return e.settings.exportWithTheme?A:"light"},hasExportBackground=(e,t)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-export-transparent"])return!0}return!1},getWithBackground=(e,t)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-export-transparent"])return!A.frontmatter["excalidraw-export-transparent"]}return e.settings.exportWithBackground},getExportPadding=(e,t)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if(!(null==A?void 0:A.frontmatter))return e.settings.exportPaddingSVG;if(null!=A.frontmatter["excalidraw-export-padding"]){const e=parseInt(A.frontmatter["excalidraw-export-padding"]);if(!isNaN(e))return e}if(null!=A.frontmatter["excalidraw-export-svgpadding"]){const e=parseInt(A.frontmatter["excalidraw-export-svgpadding"]);if(!isNaN(e))return e}}return e.settings.exportPaddingSVG},getPNGScale=(e,t)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-export-pngscale"]){const e=parseFloat(A.frontmatter["excalidraw-export-pngscale"]);if(!isNaN(e)&&e>0)return e}}return e.settings.pngExportScale},isVersionNewerThanOther=(e,t)=>{const A=e.match(/(\d*)\.(\d*)\.(\d*)/),i=t.match(/(\d*)\.(\d*)\.(\d*)/);return Boolean(A&&4===A.length&&i&&4===i.length&&!(isNaN(parseInt(A[1]))||isNaN(parseInt(A[2]))||isNaN(parseInt(A[3])))&&!(isNaN(parseInt(i[1]))||isNaN(parseInt(i[2]))||isNaN(parseInt(i[3])))&&(parseInt(A[1])>parseInt(i[1])||parseInt(A[1])>=parseInt(i[1])&&parseInt(A[2])>parseInt(i[2])||parseInt(A[1])>=parseInt(i[1])&&parseInt(A[2])>=parseInt(i[2])&&parseInt(A[3])>parseInt(i[3])))},getEmbeddedFilenameParts=e=>{const t=null==e?void 0:e.match(/([^#\^]*)((#\^)(group=|area=|taskbone)?([^\|]*)|(#)(group=|area=|taskbone)?([^\^\|]*))(.*)/);return t?{filepath:t[1],hasBlockref:Boolean(t[3]),hasGroupref:"group="===t[4]||"group="===t[7],hasTaskbone:"taskbone"===t[4]||"taskbone"===t[7],hasArearef:"area="===t[4]||"area="===t[7],blockref:t[5],hasSectionref:Boolean(t[6]),sectionref:t[8],linkpartReference:t[2],linkpartAlias:t[9]}:{filepath:e,hasBlockref:!1,hasGroupref:!1,hasTaskbone:!1,hasArearef:!1,blockref:"",hasSectionref:!1,sectionref:"",linkpartReference:"",linkpartAlias:""}},fragWithHTML=e=>createFragment((t=>t.createDiv().innerHTML=e)),errorlog=e=>{console.error(Object.assign({plugin:"Excalidraw"},e))},sleep$1=async e=>new Promise((t=>setTimeout(t,e))),log=console.log.bind(window.console),debug=console.log.bind(window.console),getContainerElement=(e,t)=>{var A;return e&&e.containerId&&null!==(A=t.elements.filter((t=>t.id===e.containerId))[0])&&void 0!==A?A:null},updateFrontmatterInString=(e,t)=>{if(!e)return e;for(const A of t){const t=new RegExp(`${A[0]}:\\s.*\\n`,"g");e=e.match(t)?e.replaceAll(t,`${A[0]}: ${A[1]}\n`):e.replace(/^---\n/,`---\n${A[0]}: ${A[1]}\n`)}return e},isHyperlink=e=>e&&!e.includes("\n")&&!e.includes("\r")&&e.match(/^https?:(\d*)?\/\/[^\s]*$/),isContainer=e=>{var t;return"arrow"!==e.type&&(null===(t=e.boundElements)||void 0===t?void 0:t.map((e=>e.type)).includes("text"))},hyperlinkIsImage=e=>{isHyperlink(e);const t=e.split("?")[0];return IMAGE_TYPES.contains(t.substring(t.lastIndexOf(".")+1))},hyperlinkIsYouTubeLink=e=>isHyperlink(e)&&(e.startsWith("https://youtu.be")||e.startsWith("https://www.youtube.com")||e.startsWith("https://youtube.com")||e.startsWith("https//www.youtu.be"))&&null!==e.match(/(youtu.be\/|v=)([^?\/\&]*)/),getYouTubeThumbnailLink=async e=>{const t=e.match(/(youtu.be\/|v=)([^?\/\&]*)/);if(!t||!t[2])return null;const A=t[2];let i=`https://i.ytimg.com/vi/${A}/maxresdefault.jpg`,n=await obsidian_module.requestUrl({url:i,method:"get",contentType:"image/jpeg",throw:!1});return n&&200===n.status?i:(i=`https://i.ytimg.com/vi/${A}/hq720.jpg`,n=await obsidian_module.requestUrl({url:i,method:"get",contentType:"image/jpeg",throw:!1}),n&&200===n.status?i:(i=`https://i.ytimg.com/vi/${A}/mqdefault.jpg`,n=await obsidian_module.requestUrl({url:i,method:"get",contentType:"image/jpeg",throw:!1}),n&&200===n.status?i:`https://i.ytimg.com/vi/${A}/default.jpg`))},labelCTRL=()=>DEVICE.isIOS||DEVICE.isMacOS?"CMD":"CTRL",labelALT=()=>DEVICE.isIOS||DEVICE.isMacOS?"OPT":"ALT",labelMETA=()=>DEVICE.isIOS||DEVICE.isMacOS?"CTRL":DEVICE.isWindows?"WIN":"META",labelSHIFT=()=>"SHIFT",isCTRL=e=>DEVICE.isIOS||DEVICE.isMacOS?e.metaKey:e.ctrlKey,isALT=e=>e.altKey,isMETA=e=>DEVICE.isIOS||DEVICE.isMacOS?e.ctrlKey:e.metaKey,isSHIFT=e=>e.shiftKey,mdPropModifier=e=>!isSHIFT(e)&&isCTRL(e)&&!isALT(e)&&isMETA(e),scaleToFullsizeModifier=e=>isSHIFT(e)&&!isCTRL(e)&&!isALT(e)&&isMETA(e)||!isSHIFT(e)&&isCTRL(e)&&isALT(e)&&!isMETA(e),linkClickModifierType=e=>isCTRL(e)&&!isALT(e)&&isSHIFT(e)&&!isMETA(e)?"active-pane":!isCTRL(e)||isALT(e)||isSHIFT(e)||isMETA(e)?isCTRL(e)&&isALT(e)&&!isSHIFT(e)&&!isMETA(e)?"new-pane":DEVICE.isDesktop&&isCTRL(e)&&isALT(e)&&isSHIFT(e)&&!isMETA(e)?"popout-window":isCTRL(e)&&isALT(e)&&isSHIFT(e)&&!isMETA(e)?"new-tab":mdPropModifier(e)?"md-properties":"active-pane":"new-tab",externalDragModifierType=e=>(isSHIFT(e)||!isCTRL(e)||isALT(e)||isMETA(e))&&(isSHIFT(e)||isCTRL(e)||isALT(e)||!isMETA(e))?(!isSHIFT(e)||isCTRL(e)||isALT(e)||isMETA(e))&&(isSHIFT(e)||isCTRL(e)||!isALT(e)||isMETA(e))?"image-url":"image-import":"insert-link",internalDragModifierType=e=>(!isSHIFT(e)||isCTRL(e)||isALT(e)||isMETA(e))&&(isSHIFT(e)||!isCTRL(e)||isALT(e)||isMETA(e))?scaleToFullsizeModifier(e)?"image-fullsize":"link":"image",emulateCTRLClickForLinks=e=>({shiftKey:e.shiftKey,ctrlKey:e.ctrlKey||!(DEVICE.isIOS||DEVICE.isMacOS),metaKey:e.metaKey||DEVICE.isIOS||DEVICE.isMacOS,altKey:e.altKey}),getParentOfClass=(e,t)=>{var A;let i=e.parentElement;for(;i&&!(i instanceof window.HTMLBodyElement)&&!i.classList.contains(t);)i=i.parentElement;return(null===(A=null==i?void 0:i.classList)||void 0===A?void 0:A.contains(t))?i:null},getLeaf=(e,t,A)=>{switch(linkClickModifierType(A)){case"active-pane":return t;case"new-tab":default:return(()=>{if(!e.settings.openInMainWorkspace)return app.workspace.getLeaf("tab");const[A,i]=getLeafLoc(t);return"main"===A?app.workspace.getLeaf("tab"):getNewOrAdjacentLeaf(e,t)})();case"new-pane":return getNewOrAdjacentLeaf(e,t);case"popout-window":return app.workspace.openPopoutLeaf()}},getLeafLoc=e=>{const t=e.id,A=app.workspace.getLayout(),i=e=>e.children.filter((e=>"leaf"!==e.type)).map((e=>i(e))).flat().concat(e.children.filter((e=>"leaf"===e.type)).map((e=>e.id))),n=i(A.main);return[A.main&&n.contains(t)?"main":A.floating&&i(A.floating).contains(t)?"popout":A.left&&i(A.left).contains(t)?"left":A.right&&i(A.right).contains(t)?"right":"hover",n]},getNewOrAdjacentLeaf=(e,t)=>{const[A,i]=getLeafLoc(t),n=()=>{var e;let A=app.workspace.getMostRecentLeaf();return A&&A!==t&&(null===(e=A.view)||void 0===e?void 0:e.containerEl.ownerDocument)===document||(A=null,i.forEach((e=>{var i;const n=app.workspace.getLeafById(e);!A&&(null===(i=n.view)||void 0===i?void 0:i.navigation)&&t!==n&&(A=n)}))),A};if(e.settings.openInMainWorkspace||["main","left","right"].contains(A)){if(!e.settings.openInAdjacentPane){if("main"===A)return app.workspace.createLeafBySplit(t);const e=n();return e?"empty"===e.view.getViewType()?e:app.workspace.createLeafBySplit(e):app.workspace.getLeaf(!0)}const i=n();return null!=i?i:app.workspace.getLeaf(!0)}if(!e.settings.openInAdjacentPane)return app.workspace.createLeafBySplit(t);if("hover"===A){const A=new Set;return app.workspace.iterateAllLeaves((e=>{e!==t&&t.containerEl.parentElement===e.containerEl.parentElement&&A.add(e)})),0===A.size?e.app.workspace.createLeafBySplit(t):Array.from(A)[0]}if("popout"===A){const e=new Set;return app.workspace.iterateAllLeaves((A=>{A!==t&&A.view.navigation&&A.view.containerEl.ownerDocument===t.view.containerEl.ownerDocument&&e.add(A)})),0===e.size?app.workspace.createLeafBySplit(t):Array.from(e)[0]}return e.app.workspace.createLeafBySplit(t)},getAttachmentsFolderAndFilePath=async(e,t,A)=>{let i=e.vault.getConfig("attachmentFolderPath");if(i&&i.startsWith("./")){const e=`${splitFolderAndFilename(t).folderpath}/`;i=obsidian_module.normalizePath(e+i.substring(2))}return i&&"/"!==i||(i=""),await checkAndCreateFolder(i),{folder:i,filepath:obsidian_module.normalizePath(""===i?A:`${i}/${A}`)}},isObsidianThemeDark=()=>document.body.classList.contains("theme-dark");var ar={},cz={},da={},de={},en={INSTALL_SCRIPT:"Install the script",UPDATE_SCRIPT:"Update available - Click to install",CHECKING_SCRIPT:"Checking for newer version - Click to reinstall",UNABLETOCHECK_SCRIPT:"Update check failed - Click to reinstall",UPTODATE_SCRIPT:"Script is up to date - Click to reinstall",OPEN_AS_EXCALIDRAW:"Open as Excalidraw Drawing",TOGGLE_MODE:"Toggle between Excalidraw and Markdown mode",CONVERT_NOTE_TO_EXCALIDRAW:"Convert empty note to Excalidraw Drawing",CONVERT_EXCALIDRAW:"Convert *.excalidraw to *.md files",CREATE_NEW:"Create new drawing",CONVERT_FILE_KEEP_EXT:"*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"*.excalidraw => *.md (Logseq compatibility)",DOWNLOAD_LIBRARY:"Export stencil library as an *.excalidrawlib file",OPEN_EXISTING_NEW_PANE:"Open existing drawing - IN A NEW PANE",OPEN_EXISTING_ACTIVE_PANE:"Open existing drawing - IN THE CURRENT ACTIVE PANE",TRANSCLUDE:"Embed a drawing",TRANSCLUDE_MOST_RECENT:"Embed the most recently edited drawing",TOGGLE_LEFTHANDED_MODE:"Toggle left-handed mode",NEW_IN_NEW_PANE:"Create new drawing - IN AN ADJACENT WINDOW",NEW_IN_NEW_TAB:"Create new drawing - IN A NEW TAB",NEW_IN_ACTIVE_PANE:"Create new drawing - IN THE CURRENT ACTIVE WINDOW",NEW_IN_POPOUT_WINDOW:"Create new drawing - IN A POPOUT WINDOW",NEW_IN_NEW_PANE_EMBED:"Create new drawing - IN AN ADJACENT WINDOW - and embed into active document",NEW_IN_NEW_TAB_EMBED:"Create new drawing - IN A NEW TAB - and embed into active document",NEW_IN_ACTIVE_PANE_EMBED:"Create new drawing - IN THE CURRENT ACTIVE WINDOW - and embed into active document",NEW_IN_POPOUT_WINDOW_EMBED:"Create new drawing - IN A POPOUT WINDOW - and embed into active document",TOGGLE_LOCK:"Toggle Text Element between edit RAW and PREVIEW",DELETE_FILE:"Delete selected image or Markdown file from Obsidian Vault",INSERT_LINK_TO_ELEMENT:`Copy markdown link for selected element to clipboard. ${labelCTRL()}+CLICK to copy 'group=' link. SHIFT+CLICK to copy an 'area=' link. ${labelALT()}+CLICK to watch a help video.`,INSERT_LINK_TO_ELEMENT_GROUP:"Copy 'group=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_AREA:"Copy 'area=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_NORMAL:"Copy markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_ERROR:"Select a single element in the scene",INSERT_LINK_TO_ELEMENT_READY:"Link is READY and available on the clipboard",INSERT_LINK:"Insert link to file",INSERT_IMAGE:"Insert image or Excalidraw drawing from your vault",IMPORT_SVG:"Import an SVG file as Excalidraw strokes (limited SVG support, TEXT currently not supported)",INSERT_MD:"Insert markdown file from vault",INSERT_PDF:"Insert PDF file from vault",INSERT_LATEX:`Insert LaTeX formula (e.g. \\binom{n}{k} = \\frac{n!}{k!(n-k)!}). ${labelALT()}+CLICK to watch a help video.`,ENTER_LATEX:"Enter a valid LaTeX expression",READ_RELEASE_NOTES:"Read latest release notes",RUN_OCR:"OCR: Grab text from freedraw scribble and pictures to clipboard",TRAY_MODE:"Toggle property-panel tray-mode",SEARCH:"Search for text in drawing",RESET_IMG_TO_100:"Set selected image element size to 100% of original",TEMPORARY_DISABLE_AUTOSAVE:"Disable autosave until next time Obsidian starts (only set this if you know what you are doing)",TEMPORARY_ENABLE_AUTOSAVE:"Enable autosave",INSTALL_SCRIPT_BUTTON:"Install or update Excalidraw Scripts",OPEN_AS_MD:"Open as Markdown",EXPORT_IMAGE:"Export Image",OPEN_LINK:"Open selected text as link\n(SHIFT+CLICK to open in a new pane)",EXPORT_EXCALIDRAW:"Export to an .Excalidraw file",LINK_BUTTON_CLICK_NO_TEXT:"Select a ImageElement, or select a TextElement that contains an internal or external link.\n",FILENAME_INVALID_CHARS:'File name cannot contain any of the following characters: * " \\ < > : | ? #',FORCE_SAVE:"Save (will also update transclusions)",RAW:"Change to PREVIEW mode (only effects text-elements with links or transclusions)",PARSED:"Change to RAW mode (only effects text-elements with links or transclusions)",NOFILE:"Excalidraw (no file)",COMPATIBILITY_MODE:"*.excalidraw file opened in compatibility mode. Convert to new format for full plugin functionality.",CONVERT_FILE:"Convert to new format",RELEASE_NOTES_NAME:"Display Release Notes after update",RELEASE_NOTES_DESC:"Toggle ON: Display release notes each time you update Excalidraw to a newer version.
Toggle OFF: Silent mode. You can still read release notes on GitHub.",NEWVERSION_NOTIFICATION_NAME:"Plugin update notification",NEWVERSION_NOTIFICATION_DESC:"Toggle ON: Show a notification when a new version of the plugin is available.
Toggle OFF: Silent mode. You need to check for plugin updates in Community Plugins.",FOLDER_NAME:"Excalidraw folder",FOLDER_DESC:"Default location for new drawings. If empty, drawings will be created in the Vault root.",FOLDER_EMBED_NAME:"Use Excalidraw folder when embedding a drawing into the active document",FOLDER_EMBED_DESC:"Define which folder to place the newly inserted drawing into when using the command palette action: 'Create a new drawing and embed into active document'.
Toggle ON: Use Excalidraw folder
Toggle OFF: Use the attachments folder defined in Obsidian settings.",TEMPLATE_NAME:"Excalidraw template file",TEMPLATE_DESC:"Full filepath to the Excalidraw template. E.g.: If your template is in the default Excalidraw folder and its name is Template.md, the setting would be: Excalidraw/Template.md (or just Excalidraw/Template - you may omit the .md file extension). If you are using Excalidraw in compatibility mode, then your template must be a legacy Excalidraw file as well such as Excalidraw/Template.excalidraw.",SCRIPT_FOLDER_NAME:"Excalidraw Automate script folder (CASE SeNSitiVE!)",SCRIPT_FOLDER_DESC:"The files you place in this folder will be treated as Excalidraw Automate scripts. You can access your scripts from Excalidraw via the Obsidian Command Palette. Assign hotkeys to your favorite scripts just like to any other Obsidian command. The folder may not be the root folder of your Vault. ",SAVING_HEAD:"Saving",COMPRESS_NAME:"Compress Excalidraw JSON in Markdown",COMPRESS_DESC:"By enabling this feature Excalidraw will store the drawing JSON in a Base64 compressed format using the LZ-String algorithm. This will reduce the chance of Excalidraw JSON cluttering your search results in Obsidian. As a side effect, this will also reduce the filesize of Excalidraw drawings. When you switch an Excalidraw drawing to Markdown view, using the options menu in Excalidraw, the file will be saved without compression, so that you can read and edit the JSON string. The drawing will be compressed again once you switch back to Excalidraw view. The setting only has effect 'point forward', meaning, existing drawings will not be effected by the setting until you open them and save them.
Toggle ON: Compress drawing JSON
Toggle OFF: Leave drawing JSON uncompressed",AUTOSAVE_INTERVAL_DESKTOP_NAME:"Interval for autosave on Desktop",AUTOSAVE_INTERVAL_DESKTOP_DESC:"The time interval between saves. Autosave will skip if there are no changes in the drawing. Excalidraw will also save the file when closing a workspace tab or navigating within Obsidian, but away from the active Excalidraw tab (i.e. clicking on the Obsidian ribbon or checking backlinks, etc.). Excalidraw will not be able to save your work when terminating Obsidian directly either by killing the Obsidian process, or clicking to close Obsidian altogether.",AUTOSAVE_INTERVAL_MOBILE_NAME:"Interval for autosave on Mobile",AUTOSAVE_INTERVAL_MOBILE_DESC:"I recommend a more frequent interval for Mobiles. Excalidraw will also save the file when closing a workspace tab or navigating within Obsidian, but away from the active Excalidraw tab (i.e. tapping on the Obsidian ribbon or checking backlinks, etc.). Excalidraw will not be able to save your work when terminating Obsidian directly (i.e. swiping it away). Also note, that when you switch apps on a Mobile device, sometimes Android and iOS closes Obsidian in the background to save system resources. In such a case Excalidraw will not be able to save the latest changes.",FILENAME_HEAD:"Filename",FILENAME_DESC:"

Click this link for the date and time format reference.

",FILENAME_SAMPLE:"Filename for a new drawing is: ",FILENAME_EMBED_SAMPLE:"Filename for a new embedded drawing is: ",FILENAME_PREFIX_NAME:"Filename prefix",FILENAME_PREFIX_DESC:"The first part of the filename",FILENAME_PREFIX_EMBED_NAME:"Filename prefix when embedding a new drawing into a markdown note",FILENAME_PREFIX_EMBED_DESC:"Should the filename of the newly inserted drawing start with the name of the active markdown note when using the command palette action: Create a new drawing and embed into active document?
Toggle ON: Yes, the filename of a new drawing should start with filename of the active document
Toggle OFF: No, filename of a new drawing should not include the filename of the active document",FILENAME_POSTFIX_NAME:"Custom text after markdown Note's name when embedding",FILENAME_POSTFIX_DESC:"Effects filename only when embedding into a markdown document. This text will be inserted after the note's name, but before the date.",FILENAME_DATE_NAME:"Filename Date",FILENAME_DATE_DESC:"The last part of the filename. Leave empty if you do not want a date.",FILENAME_EXCALIDRAW_EXTENSION_NAME:".excalidraw.md or .md",FILENAME_EXCALIDRAW_EXTENSION_DESC:"This setting does not apply if you use Excalidraw in compatibility mode, i.e. you are not using Excalidraw markdown files.
Toggle ON: filename ends with .excalidraw.md
Toggle OFF: filename ends with .md",DISPLAY_HEAD:"Display",DYNAMICSTYLE_NAME:"Dynamic styling",DYNAMICSTYLE_DESC:"Change Excalidraw UI colors to match the canvas color",LEFTHANDED_MODE_NAME:"Left-handed mode",LEFTHANDED_MODE_DESC:"Currently only has effect in tray-mode. If turned on, the tray will be on the right side.
Toggle ON: Left-handed mode.
Toggle OFF: Right-handed moded",MATCH_THEME_NAME:"New drawing to match Obsidian theme",MATCH_THEME_DESC:"If theme is dark, new drawing will be created in dark mode. This does not apply when you use a template for new drawings. Also this will not effect when you open an existing drawing. Those will follow the theme of the template/drawing respectively.
Toggle ON: Follow Obsidian Theme
Toggle OFF: Follow theme defined in your template",MATCH_THEME_ALWAYS_NAME:"Existing drawings to match Obsidian theme",MATCH_THEME_ALWAYS_DESC:"If theme is dark, drawings will be opened in dark mode. If your theme is light, they will be opened in light mode.
Toggle ON: Match Obsidian theme
Toggle OFF: Open with the same theme as last saved",MATCH_THEME_TRIGGER_NAME:"Excalidraw to follow when Obsidian Theme changes",MATCH_THEME_TRIGGER_DESC:"If this option is enabled open Excalidraw pane will switch to light/dark mode when Obsidian theme changes.
Toggle ON: Follow theme changes
Toggle OFF: Drawings are not effected by Obsidian theme changes",DEFAULT_OPEN_MODE_NAME:"Default mode when opening Excalidraw",DEFAULT_OPEN_MODE_DESC:"Specifies the mode how Excalidraw opens: Normal, Zen, or View mode. You may also set this behavior on a file level by adding the excalidraw-default-mode frontmatter key with a value of: normal, view, or zen to your document.",DEFAULT_PEN_MODE_NAME:"Pen mode",DEFAULT_PEN_MODE_DESC:"Should pen mode be automatically enabled when opening Excalidraw?",DEFAULT_PINCHZOOM_NAME:"Allow pinch zoom in pen mode",DEFAULT_PINCHZOOM_DESC:"Pinch zoom in pen mode when using the freedraw tool is disabled by default to prevent unwanted accidental zooming with your palm.
Toggle on: Enable pinch zoom in pen mode
Toggle off: Disable pinch zoom in pen mode",DEFAULT_WHEELZOOM_NAME:"Mouse wheel to zoom by default",DEFAULT_WHEELZOOM_DESC:`Toggle on: Mouse wheel to zoom; ${labelCTRL()} + mouse wheel to scroll
Toggle off: ${labelCTRL()} + mouse wheel to zoom; Mouse wheel to scroll`,ZOOM_TO_FIT_NAME:"Zoom to fit on view resize",ZOOM_TO_FIT_DESC:"Zoom to fit drawing when the pane is resized
Toggle ON: Zoom to fit
Toggle OFF: Auto zoom disabled",ZOOM_TO_FIT_ONOPEN_NAME:"Zoom to fit on file open",ZOOM_TO_FIT_ONOPEN_DESC:"Zoom to fit drawing when the drawing is first opened
Toggle ON: Zoom to fit
Toggle OFF: Auto zoom disabled",ZOOM_TO_FIT_MAX_LEVEL_NAME:"Zoom to fit max ZOOM level",ZOOM_TO_FIT_MAX_LEVEL_DESC:"Set the maximum level to which zoom to fit will enlarge the drawing. Minimum is 0.5 (50%) and maximum is 10 (1000%).",LINKS_HEAD:"Links and transclusion",LINKS_DESC:`${labelCTRL()}+CLICK on [[Text Elements]] to open them as links. If the selected text has more than one [[valid Obsidian links]], only the first will be opened. If the text starts as a valid web link (i.e. https:// or http://), then the plugin will open it in a browser. When Obsidian files change, the matching [[link]] in your drawings will also change. If you don't want text accidentally changing in your drawings use [[links|with aliases]].`,ADJACENT_PANE_NAME:"Open in adjacent pane",ADJACENT_PANE_DESC:`When ${labelCTRL()}+SHIFT clicking a link in Excalidraw, by default the plugin will open the link in a new pane. Turning this setting on, Excalidraw will first look for an existing adjacent pane, and try to open the link there. Excalidraw will look for the adjacent pane based on your focus/navigation history, i.e. the workpane that was active before you activated Excalidraw.`,MAINWORKSPACE_PANE_NAME:"Open in main workspace",MAINWORKSPACE_PANE_DESC:`When ${labelCTRL()}+SHIFT clicking a link in Excalidraw, by default the plugin will open the link in a new pane in the current active window. Turning this setting on, Excalidraw will open the link in an existing or new pane in the main workspace. `,LINK_BRACKETS_NAME:"Show [[brackets]] around links",LINK_BRACKETS_DESC:"In PREVIEW mode, when parsing Text Elements, place brackets around links. You can override this setting for a specific drawing by adding excalidraw-link-brackets: true/false to the file's frontmatter.",LINK_PREFIX_NAME:"Link prefix",LINK_PREFIX_DESC:'In PREVIEW mode, if the Text Element contains a link, precede the text with these characters. You can override this setting for a specific drawing by adding excalidraw-link-prefix: "📍 " to the file\'s frontmatter.',URL_PREFIX_NAME:"URL prefix",URL_PREFIX_DESC:'In PREVIEW mode, if the Text Element contains a URL link, precede the text with these characters. You can override this setting for a specific drawing by adding excalidraw-url-prefix: "🌐 " to the file\'s frontmatter.',PARSE_TODO_NAME:"Parse todo",PARSE_TODO_DESC:"Convert '- [ ] ' and '- [x] ' to checkpox and tick in the box.",TODO_NAME:"Open TODO icon",TODO_DESC:"Icon to use for open TODO items",DONE_NAME:"Completed TODO icon",DONE_DESC:"Icon to use for completed TODO items",HOVERPREVIEW_NAME:`Hover preview without pressing the ${labelCTRL()} key`,HOVERPREVIEW_DESC:`Toggle On: In Exalidraw view mode the hover preview for [[wiki links]] will be shown immediately, without the need to hold the ${labelCTRL()} key. In Excalidraw normal mode, the preview will be shown immediately only when hovering the blue link icon in the top right of the element.
Toggle Off: Hover preview is shown only when you hold the ${labelCTRL()} key while hovering the link.`,LINKOPACITY_NAME:"Opacity of link icon",LINKOPACITY_DESC:"Opacity of the link indicator icon in the top right corner of an element. 1 is opaque, 0 is transparent.",LINK_CTRL_CLICK_NAME:`${labelCTRL()}+CLICK on text with [[links]] or [](links) to open them`,LINK_CTRL_CLICK_DESC:"You can turn this feature off if it interferes with default Excalidraw features you want to use. If this is turned off, only the link button in the title bar of the drawing pane will open links.",TRANSCLUSION_WRAP_NAME:"Overflow wrap behavior of transcluded text",TRANSCLUSION_WRAP_DESC:"Number specifies the character count where the text should be wrapped. Set the text wrapping behavior of transcluded text. Turn this ON to force-wrap text (i.e. no overflow), or OFF to soft-wrap text (at the nearest whitespace).",TRANSCLUSION_DEFAULT_WRAP_NAME:"Transclusion word wrap default",TRANSCLUSION_DEFAULT_WRAP_DESC:"You can manually set/override word wrapping length using the `![[page#^block]]{NUMBER}` format. Normally you will not want to set a default, because if you transclude text inside a sticky note, then Excalidraw will automatically take care of word wrapping. Set this value to `0` if you do not want to set a default. ",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"Page transclusion max char count",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"The maximum number of characters to display from the page when transcluding an entire page with the ![[markdown page]] format.",QUOTE_TRANSCLUSION_REMOVE_NAME:"Quote translusion: remove leading '> ' from each line",QUOTE_TRANSCLUSION_REMOVE_DESC:"Remove the leading '> ' from each line of the transclusion. This will improve readability of quotes in text only transclusions
Toggle ON: Remove leading '> '
Toggle OFF: Do not remove leading '> ' (note it will still be removed from the first row due to Obsidian API functionality)",GET_URL_TITLE_NAME:"Use iframely to resolve page title",GET_URL_TITLE_DESC:"Use the http://iframely.server.crestify.com/iframely?url= to get title of page when dropping a link into Excalidraw",MD_HEAD:"Markdown-embed settings",MD_HEAD_DESC:"You can transclude formatted markdown documents into drawings as images SHIFT drop from the file explorer or using the command palette action.",MD_TRANSCLUDE_WIDTH_NAME:"Default width of a transcluded markdown document",MD_TRANSCLUDE_WIDTH_DESC:"The width of the markdown page. This effects the word wrapping when transcluding longer paragraphs, and the width of the image element. You can override the default width of an embedded file using the [[filename#heading|WIDTHxMAXHEIGHT]] syntax in markdown view mode under embedded files.",MD_TRANSCLUDE_HEIGHT_NAME:"Default maximum height of a transcluded markdown document",MD_TRANSCLUDE_HEIGHT_DESC:"The embedded image will be as high as the markdown text requires, but not higher than this value. You can override this value by editing the embedded image link in markdown view mode with the following syntax [[filename#^blockref|WIDTHxMAXHEIGHT]].",MD_DEFAULT_FONT_NAME:"The default font typeface to use for embedded markdown files.",MD_DEFAULT_FONT_DESC:'Set this value to "Virgil" or "Cascadia" or the filename of a valid .ttf, .woff, or .woff2 font e.g. MyFont.woff2 You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-font: font_or_filename',MD_DEFAULT_COLOR_NAME:"The default font color to use for embedded markdown files.",MD_DEFAULT_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (color names), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-font-color: steelblue',MD_DEFAULT_BORDER_COLOR_NAME:"The default border color to use for embedded markdown files.",MD_DEFAULT_BORDER_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (color names), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-border-color: gray. Leave empty if you don\'t want a border. ',MD_CSS_NAME:"CSS file",MD_CSS_DESC:`The filename of the CSS to apply to markdown embeds. Provide the filename with extension (e.g. 'md-embed.css'). The css file may also be a plain markdown file (e.g. 'md-embed-css.md'), just make sure the content is written using valid css syntax. If you need to look at the HTML code you are applying the CSS to, then open Obsidian Developer Console (${DEVICE.isIOS||DEVICE.isMacOS?"CMD+OPT+i":"CTRL+SHIFT+i"}) and type in the following command: "ExcalidrawAutomate.mostRecentMarkdownSVG". This will display the most recent SVG generated by Excalidraw. Setting the font-family in the css is has limitations. By default only your operating system's standard fonts are available (see README for details). You can add one custom font beyond that using the setting above. You can override this css setting by adding the following frontmatter-key to the embedded markdown file: "excalidraw-css: css_file_in_vault|css-snippet".`,EMBED_HEAD:"Embed & Export",EMBED_REUSE_EXPORTED_IMAGE_NAME:"If found, use the already exported image for preview",EMBED_REUSE_EXPORTED_IMAGE_DESC:"This setting works in conjunction with the Auto-export SVG/PNG setting. If an exported image that matches the file name of the drawing is available, use that image instead of generating a preview image on the fly. This will result in faster previews especially when you have many embedded objects in the drawing, however, it may happen that your latest changes are not displayed and that the image will not automatically match your Obsidian theme in case you have changed the Obsidian theme since the export was created. This setting only applies to embedding images into markdown documents. For a number of reasons, the same approach cannot be used to expedite the loading of drawings with many embedded objects. See demonstration here.",EMBED_PREVIEW_SVG_NAME:"Display SVG in markdown preview",EMBED_PREVIEW_SVG_DESC:"Toggle ON: Embed drawing as an SVG image into the markdown preview.
Toggle OFF: Embed drawing as a PNG image. Note, that some of the image block referencing features do not work with PNG embeds.",PREVIEW_MATCH_OBSIDIAN_NAME:"Excalidraw preview to match Obsidian theme",PREVIEW_MATCH_OBSIDIAN_DESC:"Image preview in documents should match the Obsidian theme. If enabled, when Obsidian is in dark mode, Excalidraw images will render in dark mode. When Obsidian is in light mode, Excalidraw will render light mode as well. You may want to switch 'Export image with background' off for a more Obsidian-integrated look and feel.",EMBED_WIDTH_NAME:"Default width of embedded (transcluded) image",EMBED_WIDTH_DESC:"The default width of an embedded drawing. This applies to live preview edit and reading mode, as well as to hover previews. You can specify a custom width when embedding an image using the ![[drawing.excalidraw|100]] or [[drawing.excalidraw|100x100]] format.",EMBED_TYPE_NAME:"Type of file to insert into the document",EMBED_TYPE_DESC:"When you embed an image into a document using the command palette this setting will specify if Excalidraw should embed the original Excalidraw file or a PNG or an SVG copy. You need to enable auto-export PNG / SVG (see below under Export Settings) for those image types to be available in the dropdown. For drawings that do not have a a corresponding PNG or SVG readily available the command palette action will insert a broken link. You need to open the original drawing and initiate export manually. This option will not autogenerate PNG/SVG files, but will simply reference the already existing files.",EMBED_WIKILINK_NAME:"Embed SVG or PNG as Wiki link",EMBED_WIKILINK_DESC:"Toggle ON: Excalidraw will embed a [[wiki link]]. Toggle OFF: Excalidraw will embed a [markdown](link).",EXPORT_PNG_SCALE_NAME:"PNG export image scale",EXPORT_PNG_SCALE_DESC:"The size-scale of the exported PNG image",EXPORT_BACKGROUND_NAME:"Export image with background",EXPORT_BACKGROUND_DESC:"If turned off, the exported image will be transparent.",EXPORT_PADDING_NAME:"Image Padding",EXPORT_PADDING_DESC:"The padding (in pixels) around the exported SVG or PNG image. If you have curved lines close to the edge of the image they might get cropped during image export. You can increase this value to avoid cropping. You can also override this setting at a file level by adding the excalidraw-export-padding: 5 frontmatter key.",EXPORT_THEME_NAME:"Export image with theme",EXPORT_THEME_DESC:"Export the image matching the dark/light theme of your drawing. If turned off, drawings created in dark mode will appear as they would in light mode.",EXPORT_HEAD:"Auto-export Settings",EXPORT_SYNC_NAME:"Keep the .SVG and/or .PNG filenames in sync with the drawing file",EXPORT_SYNC_DESC:"When turned on, the plugin will automatically update the filename of the .SVG and/or .PNG files when the drawing in the same folder (and same name) is renamed. The plugin will also automatically delete the .SVG and/or .PNG files when the drawing in the same folder (and same name) is deleted. ",EXPORT_SVG_NAME:"Auto-export SVG",EXPORT_SVG_DESC:"Automatically create an SVG export of your drawing matching the title of your file. The plugin will save the *.SVG file in the same folder as the drawing. Embed the .svg file into your documents instead of Excalidraw making you embeds platform independent. While the auto-export switch is on, this file will get updated every time you edit the Excalidraw drawing with the matching name. You can override this setting on a file level by adding the excalidraw-autoexport frontmatter key. Valid values for this key are none,both,svg, and png",EXPORT_PNG_NAME:"Auto-export PNG",EXPORT_PNG_DESC:"Same as the auto-export SVG, but for *.PNG",EXPORT_BOTH_DARK_AND_LIGHT_NAME:"Export both dark- and light-themed image",EXPORT_BOTH_DARK_AND_LIGHT_DESC:"When enabled, Excalidraw will export two files instead of one: filename.dark.png, filename.light.png and/or filename.dark.svg and filename.light.svg
Double files will be exported both if auto-export SVG or PNG (or both) are enabled, as well as when clicking export on a single image.",COMPATIBILITY_HEAD:"Compatibility features",EXPORT_EXCALIDRAW_NAME:"Auto-export Excalidraw",EXPORT_EXCALIDRAW_DESC:"Same as the auto-export SVG, but for *.Excalidraw",SYNC_EXCALIDRAW_NAME:"Sync *.excalidraw with *.md version of the same drawing",SYNC_EXCALIDRAW_DESC:"If the modified date of the *.excalidraw file is more recent than the modified date of the *.md file then update the drawing in the .md file based on the .excalidraw file",COMPATIBILITY_MODE_NAME:"New drawings as legacy files",COMPATIBILITY_MODE_DESC:"By enabling this feature drawings you create with the ribbon icon, the command palette actions, and the file explorer are going to be all legacy *.excalidraw files. This setting will also turn off the reminder message when you open a legacy file for editing.",MATHJAX_NAME:"MathJax (LaTeX) javascript library host",MATHJAX_DESC:"If you are using LaTeX equiations in Excalidraw then the plugin needs to load a javascript library for that. Some users are unable to access certain host servers. If you are experiencing issues try changing the host here. You may need to restart Obsidian after closing settings, for this change to take effect.",LATEX_DEFAULT_NAME:"Default LaTeX formual for new equations",LATEX_DEFAULT_DESC:"Leave empty if you don't want a default formula. You can add default formatting here such as \\color{white}.",NONSTANDARD_HEAD:"Non-Excalidraw.com supported features",NONSTANDARD_DESC:"These features are not available on excalidraw.com. When exporting the drawing to Excalidraw.com these features will appear different.",CUSTOM_PEN_NAME:"Number of custom pens",CUSTOM_PEN_DESC:"You will see these pens next to the Obsidian Menu on the canvas. You can customize the pens on the canvas by long-pressing the pen button.",EXPERIMENTAL_HEAD:"Experimental features",EXPERIMENTAL_DESC:"Some of these setting will not take effect immediately, only when the File Explorer is refreshed, or Obsidian restarted.",FIELD_SUGGESTER_NAME:"Enable Field Suggester",FIELD_SUGGESTER_DESC:"Field Suggester borrowed from Breadcrumbs and Templater plugins. The Field Suggester will show an autocomplete menu when you type excalidraw- or ea. with function description as hints on the individual items in the list.",FILETYPE_NAME:"Display type (✏️) for excalidraw.md files in File Explorer",FILETYPE_DESC:"Excalidraw files will receive an indicator using the emoji or text defined in the next setting.",FILETAG_NAME:"Set the type indicator for excalidraw.md files",FILETAG_DESC:"The text or emoji to display as type indicator.",INSERT_EMOJI:"Insert an emoji",LIVEPREVIEW_NAME:"Immersive image embedding in live preview editing mode",LIVEPREVIEW_DESC:"Turn this on to support image embedding styles such as ![[drawing|width|style]] in live preview editing mode. The setting will not effect the currently open documents. You need close the open documents and re-open them for the change to take effect.",ENABLE_FOURTH_FONT_NAME:"Enable fourth font option",ENABLE_FOURTH_FONT_DESC:"By turning this on, you will see a fourth font button on the properties panel for text elements. Files that use this fourth font will (partly) lose their platform independence. Depending on the custom font set in settings, they will look differently when loaded in another vault, or at a later time. Also the 4th font will display as system default font on excalidraw.com, or other Excalidraw versions.",FOURTH_FONT_NAME:"Forth font file",FOURTH_FONT_DESC:"Select a .ttf, .woff or .woff2 font file from your vault to use as the fourth font. If no file is selected, Excalidraw will use the Virgil font by default.",SCRIPT_SETTINGS_HEAD:"Settings for installed Scripts",TASKBONE_HEAD:"Taskbone Optical Character Recogntion",TASKBONE_DESC:"This is an experimental integration of optical character recognition into Excalidraw. Please note, that taskbone is an independent external service not provided by Excalidraw, nor the Excalidraw-Obsidian plugin project. The OCR service will grab legible text from freedraw lines and embedded pictures on your canvas and place the recognized text in the frontmatter of your drawing as well as onto clipboard. Having the text in the frontmatter will enable you to search in Obsidian for the text contents of these. Note, that the process of extracting the text from the image is not done locally, but via an online API. The taskbone service stores the image on its servers only as long as necessary for the text extraction. However, if this is a dealbreaker, then please don't use this feature.",TASKBONE_ENABLE_NAME:"Enable Taskbone",TASKBONE_ENABLE_DESC:"By enabling this service your agree to the Taskbone Terms and Conditions and the Privacy Policy.",TASKBONE_APIKEY_NAME:"Taskbone API Key",TASKBONE_APIKEY_DESC:"Taskbone offers a free service with a reasonable number of scans per month. If you want to use this feature more frequently, or you want to supoprt the developer of Taskbone (as you can imagine, there is no such thing as 'free', providing this awesome OCR service costs some money to the developer of Taskbone), you can purchase a paid API key from taskbone.com. In case you have purchased a key, simply overwrite this auto generated free-tier API-key with your paid key.",SELECT_FILE:"Select a file then press enter.",SELECT_FILE_WITH_OPTION_TO_SCALE:`Select a file then press ENTER, or SHIFT+${labelMETA()}+ENTER to insert at 100% scale.`,NO_MATCH:"No file matches your query.",SELECT_FILE_TO_LINK:"Select the file you want to insert the link for.",SELECT_DRAWING:"Select the image or drawing you want to insert",TYPE_FILENAME:"Type name of drawing to select.",SELECT_FILE_OR_TYPE_NEW:"Select existing drawing or type name of a new drawing then press Enter.",SELECT_TO_EMBED:"Select the drawing to insert into active document.",SELECT_MD:"Select the markdown document you want to insert",SELECT_PDF:"Select the PDF document you want to insert",PDF_PAGES_HEADER:"Pages to load?",PDF_PAGES_DESC:"Format: 1, 3-5, 7, 9-11",INFINITE_LOOP_WARNING:"EXCALIDRAW WARNING\nAborted loading embedded images due to infinite loop in file:\n",SCRIPT_EXECUTION_ERROR:"Script execution error. Please find error message on the developer console.",LOAD_FROM_BACKUP:"Excalidraw file was corrupted. Loading from backup file.",GOTO_FULLSCREEN:"Goto fullscreen mode",EXIT_FULLSCREEN:"Exit fullscreen mode",TOGGLE_FULLSCREEN:"Toggle fullscreen mode",TOGGLE_DISABLEBINDING:"Toggle to invert default binding behavior",OPEN_LINK_CLICK:"Navigate to selected element link",OPEN_LINK_PROPS:"Open markdown-embed properties or open link in new window"},enGB={},es={},fr={},hi={},id={},it={},ja={},ko={},nl={},no={},pl={},pt={},ptBR={},ro={},ru={},tr={},zhCN={INSTALL_SCRIPT:"安装此脚本",UPDATE_SCRIPT:"有可用更新 - 点击安装",CHECKING_SCRIPT:"检查更新中 - 点击重新安装",UNABLETOCHECK_SCRIPT:"检查更新失败 - 点击重新安装",UPTODATE_SCRIPT:"脚本已是最新 - 点击重新安装",OPEN_AS_EXCALIDRAW:"打开为 Excalidraw 绘图",TOGGLE_MODE:"在 Excalidraw 和 Markdown 模式之间切换",CONVERT_NOTE_TO_EXCALIDRAW:"转换空白笔记为 Excalidraw 绘图",CONVERT_EXCALIDRAW:"转换 *.excalidraw 为 *.md 文件",CREATE_NEW:"新建 Excalidraw 绘图",CONVERT_FILE_KEEP_EXT:"*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"*.excalidraw => *.md (兼容 Logseq)",DOWNLOAD_LIBRARY:"导出 stencil 库为 *.excalidrawlib 文件",OPEN_EXISTING_NEW_PANE:"打开已有的绘图 - 于新面板",OPEN_EXISTING_ACTIVE_PANE:"打开已有的绘图 - 于当前面板",TRANSCLUDE:"嵌入绘图(形如 ![[drawing]])到当前文档",TRANSCLUDE_MOST_RECENT:"嵌入最近编辑过的绘图(形如 ![[drawing]])到当前文档",TOGGLE_LEFTHANDED_MODE:"切换为左手模式",NEW_IN_NEW_PANE:"新建绘图 - 于新面板",NEW_IN_NEW_TAB:"新建绘图 - 于新页签",NEW_IN_ACTIVE_PANE:"新建绘图 - 于当前面板",NEW_IN_POPOUT_WINDOW:"新建绘图 - 于新窗口",NEW_IN_NEW_PANE_EMBED:"新建绘图 - 于新面板 - 并将其嵌入(形如 ![[drawing]])到当前文档",NEW_IN_NEW_TAB_EMBED:"新建绘图 - 于新页签 - 并将其嵌入(形如 ![[drawing]])到当前文档",NEW_IN_ACTIVE_PANE_EMBED:"新建绘图 - 于当前面板 - 并将其嵌入(形如 ![[drawing]])到当前文档",NEW_IN_POPOUT_WINDOW_EMBED:"新建绘图 - 于新窗口 - 并将其嵌入(形如 ![[drawing]])到当前文档",EXPORT_SVG:"导出 SVG 文件到当前目录",EXPORT_PNG:"导出 PNG 文件到当前目录",EXPORT_SVG_WITH_SCENE:"导出 SVG 文件(包含 Scene)到当前目录",EXPORT_PNG_WITH_SCENE:"导出 PNG 文件(包含 Scene)到当前目录",TOGGLE_LOCK:"文本元素:原文模式(RAW)⟺ 预览模式(PREVIEW)",DELETE_FILE:"从库中删除所选图像(或 MD-Embed)的源文件",INSERT_LINK_TO_ELEMENT:`复制所选元素的内部链接(形如 [[file#^elementID]])。\n按住 ${labelCTRL()} 可复制元素所在分组的内部链接(形如 [[file#^group=elementID]])。\n按住 SHIFT 可复制所选元素周围区域的内部链接(形如 [[file#^area=elementID]])。\n按住 ${labelALT()} 可观看视频演示。`,INSERT_LINK_TO_ELEMENT_GROUP:"复制所选元素所在分组的内部链接(形如 [[file#^group=elementID]])",INSERT_LINK_TO_ELEMENT_AREA:"复制所选元素周围区域的内部链接(形如 [[file#^area=elementID]])",INSERT_LINK_TO_ELEMENT_NORMAL:"复制所选元素的内部链接(形如 [[file#^elementID]])",INSERT_LINK_TO_ELEMENT_ERROR:"未选择画布里的单个元素",INSERT_LINK_TO_ELEMENT_READY:"链接已生成并复制到剪贴板",INSERT_LINK:"插入文件的内部链接(形如 [[drawing]])到当前绘图",INSERT_IMAGE:"插入图像(以图像形式嵌入)到当前绘图",IMPORT_SVG:"插入 SVG 矢量图形到当前绘图(支持有限,尚不支持文本)",INSERT_MD:"插入 Markdown 文档(以图像形式嵌入)到当前绘图",INSERT_LATEX:`插入 LaTeX 公式到当前绘图。按住 ${labelALT()} 可观看视频演示。`,ENTER_LATEX:"输入 LaTeX 表达式",READ_RELEASE_NOTES:"阅读本插件的更新说明",RUN_OCR:"OCR 识别涂鸦和图片里的文本并复制到剪贴板",TRAY_MODE:"绘图工具属性页:面板模式 ⟺ 托盘模式",SEARCH:"搜索文本",RESET_IMG_TO_100:"重设图像元素的尺寸为 100%",TEMPORARY_DISABLE_AUTOSAVE:"临时禁用自动保存功能,直到 Obsidian 退出(勿点,除非你清楚自己在干什么)",TEMPORARY_ENABLE_AUTOSAVE:"恢复启用自动保存功能",INSTALL_SCRIPT_BUTTON:"安装或更新 Excalidraw 脚本",OPEN_AS_MD:"打开为 Markdown 文件",SAVE_AS_PNG:`导出 PNG 到当前目录(按住 ${labelCTRL()} 设定导出路径;按住 SHIFT 在导出时包含 Scene)`,SAVE_AS_SVG:`导出 SVG 到当前目录(按住 ${labelCTRL()} 设定导出路径;按住 SHIFT 在导出时包含 Scene)`,OPEN_LINK:"打开所选元素里的链接 \n(按住 SHIFT 在新面板打开)",EXPORT_EXCALIDRAW:"导出为 .Excalidraw 文件",LINK_BUTTON_CLICK_NO_TEXT:"请选择一个含有链接的图形或文本元素。",FILENAME_INVALID_CHARS:'文件名不能含有以下符号: * " \\ < > : | ? #',FORCE_SAVE:"保存绘图(并更新嵌入了该绘图的面板)",RAW:"文本元素正以原文(RAW)模式显示链接。\n点击切换到预览(PREVIEW)模式",PARSED:"文本元素正以预览(PREVIEW)模式显示链接。\n点击切换到原文(RAW)模式",NOFILE:"Excalidraw(没有文件)",COMPATIBILITY_MODE:"*.excalidraw 文件正以兼容模式打开。需要转换为新格式才能使用插件的全部功能。",CONVERT_FILE:"转换为新格式",RELEASE_NOTES_NAME:"显示更新说明",RELEASE_NOTES_DESC:"开启:每次更新本插件后,显示最新发行版本的说明。
关闭:您仍可以在 GitHub 上阅读更新说明。",NEWVERSION_NOTIFICATION_NAME:"通知插件更新",NEWVERSION_NOTIFICATION_DESC:"开启:当本插件存在可用更新时,显示通知。
关闭:您需要手动检查本插件的更新(设置 - 第三方插件 - 检查更新)。",FOLDER_NAME:"Excalidraw 文件夹",FOLDER_DESC:"新绘图的默认存储路径。若为空,将在库的根目录中创建新绘图。",FOLDER_EMBED_NAME:"将 Excalidraw 文件夹用于“新建绘图”命令创建的绘图",FOLDER_EMBED_DESC:"在命令面板中执行“新建绘图”系列命令时,新绘图的存储路径。
开启:使用 Excalidraw 文件夹。
关闭:使用 Obsidian 设置的新附件默认位置。",TEMPLATE_NAME:"Excalidraw 模板文件",TEMPLATE_DESC:"Excalidraw 模板文件的完整路径。
如果您的模板在默认的 Excalidraw 文件夹中且文件名是 Template.md,则此项应设为 Excalidraw/Template.md(也可省略 .md 扩展名,即 Excalidraw/Template)。
如果您在兼容模式下使用 Excalidraw,那么您的模板文件也必须是旧的 *.excalidraw 格式,例如 Excalidraw/Template.excalidraw。",SCRIPT_FOLDER_NAME:"Excalidraw 自动化脚本的文件夹(大小写敏感!)",SCRIPT_FOLDER_DESC:"此文件夹用于存放 Excalidraw 自动化脚本。您可以在 Obsidian 命令面板中执行这些脚本,还可以为喜欢的脚本分配快捷键,就像为其他 Obsidian 命令分配快捷键一样。
该项不能设为库的根目录。",SAVING_HEAD:"保存",COMPRESS_NAME:"压缩 Excalidraw JSON",COMPRESS_DESC:"Excalidraw 绘图文件默认将元素记录为 JSON 格式。开启此项,可将元素的 JSON 数据以 BASE64 编码(使用 LZ-String 算法)。这样做的好处是:一方面可以避免原来的明文 JSON 数据干扰 Obsidian 的文本搜索结果,另一方面减小了绘图文件的体积。
当您通过功能区按钮或命令将绘图切换成 Markdown 模式时,数据将被解码回 JSON 格式以便阅读和编辑;而当您切换回 Excalidraw 模式时,数据就会被再次编码。
开启此项后,对于之前已存在的未压缩的绘图文件,需要重新打开并保存它们才能生效。",AUTOSAVE_INTERVAL_DESKTOP_NAME:"桌面端定期保存时间间隔",AUTOSAVE_INTERVAL_DESKTOP_DESC:"每隔多长时间触发一次自动保存。但如果当前绘图没有发生改变,将不会触发自动保存。当 Obsidian 应用内的焦点离开活动文档(如关闭工作空间、点击菜单栏、切换到其他页签或面板等)的时候,会触发自动保存。直接退出 Obsidian 应用(不管是终结进程还是点关闭按钮)不会触发自动保存。",AUTOSAVE_INTERVAL_MOBILE_NAME:"移动端定期保存时间间隔",AUTOSAVE_INTERVAL_MOBILE_DESC:"建议在移动端设置更短的自动保存时间间隔。当 Obsidian 应用内的焦点离开活动文档(如关闭工作空间、点击菜单栏、切换到其他页签或面板等)的时候,会触发自动保存。直接退出 Obsidian 应用(在应用切换器中划掉)不会触发自动保存。此外,当您切换到其他应用时,有时候系统会自动清理 Obsidian 后台以释放资源。这种情况下,Excalidraw 无法保存最新的变动。",FILENAME_HEAD:"文件名",FILENAME_DESC:"

点击阅读日期和时间格式参考

",FILENAME_SAMPLE:"“新建绘图”系列命令创建的文件名形如:",FILENAME_EMBED_SAMPLE:"“新建绘图并嵌入到当前文档”系列命令创建的文件名形如:",FILENAME_PREFIX_NAME:"“新建绘图”系列命令创建的文件名前缀",FILENAME_PREFIX_DESC:"执行“新建绘图”系列命令时,创建的绘图文件名的第一部分",FILENAME_PREFIX_EMBED_NAME:"“新建绘图并嵌入到当前文档”系列命令创建的文件名前缀",FILENAME_PREFIX_EMBED_DESC:"执行“新建绘图并嵌入到当前文档”系列命令时,创建的绘图文件名是否以当前文档名作为前缀?
开启:
关闭:否",FILENAME_POSTFIX_NAME:"“新建绘图并嵌入到当前文档”系列命令创建的文件名的中间部分",FILENAME_POSTFIX_DESC:"介于文件名前缀和日期时间之间的文本。仅对“新建绘图并嵌入到当前文档”系列命令创建的绘图生效。",FILENAME_DATE_NAME:"文件名里的日期时间",FILENAME_DATE_DESC:"文件名的最后一部分。允许留空。",FILENAME_EXCALIDRAW_EXTENSION_NAME:"文件扩展名(.excalidraw.md 或 .md)",FILENAME_EXCALIDRAW_EXTENSION_DESC:"该选项在兼容模式(即非 Excalidraw 专用 Markdown 文件)下不会生效。
开启:使用 .excalidraw.md 作为扩展名。
关闭:使用 .md 作为扩展名。",DISPLAY_HEAD:"显示",LEFTHANDED_MODE_NAME:"左手模式",LEFTHANDED_MODE_DESC:"目前只在托盘模式下生效。若开启此项,则托盘(绘图工具属性页)将位于右侧。
开启:左手模式。
关闭:右手模式。",MATCH_THEME_NAME:"使新建的绘图匹配 Obsidian 主题",MATCH_THEME_DESC:"如果 Obsidian 使用黑暗主题,新建的绘图文件也将使用黑暗主题。
但是若设置了模板,新建的绘图文件将跟随模板主题;另外,此功能不会作用于已有的绘图。
开启:跟随 Obsidian 主题风格。
关闭:跟随模板主题风格。",MATCH_THEME_ALWAYS_NAME:"使已有的绘图匹配 Obsidian 主题",MATCH_THEME_ALWAYS_DESC:"如果 Obsidian 使用黑暗主题,则绘图文件也将以黑暗主题打开;反之亦然。
开启:匹配 Obsidian 主题风格。
关闭:采用上次保存时的主题风格。",MATCH_THEME_TRIGGER_NAME:"Excalidraw 主题跟随 Obsidian 主题变化",MATCH_THEME_TRIGGER_DESC:"开启此项,则切换 Obsidian 的黑暗/明亮主题时,已打开的 Excalidraw 面板的主题会随之改变。
开启:跟随主题变化。
关闭:不跟随主题变化。",DEFAULT_OPEN_MODE_NAME:"Excalidraw 的默认运行模式",DEFAULT_OPEN_MODE_DESC:"设置 Excalidraw 的运行模式:普通模式(Normal)/禅模式(Zen)/阅读模式(View)。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-default-mode: normal/zen/view 的键值对。",DEFAULT_PEN_MODE_NAME:"触控笔模式(Pen mode)",DEFAULT_PEN_MODE_DESC:"打开绘图时,是否自动开启触控笔模式?",DEFAULT_PINCHZOOM_NAME:"允许在触控笔模式下进行双指缩放",DEFAULT_PINCHZOOM_DESC:"在触控笔模式下使用自由画笔工具时,双指缩放可能造成干扰。
开启: 允许在触控笔模式下进行双指缩放
关闭: 禁止在触控笔模式下进行双指缩放",DEFAULT_WHEELZOOM_NAME:"鼠标滚轮缩放页面",DEFAULT_WHEELZOOM_DESC:`开启:鼠标滚轮为缩放页面,${labelCTRL()}+鼠标滚轮为滚动页面
关闭:鼠标滚轮为滚动页面,${labelCTRL()}+鼠标滚轮为缩放页面`,ZOOM_TO_FIT_NAME:"调节面板尺寸后自动缩放页面",ZOOM_TO_FIT_DESC:"调节面板尺寸后,自适应地缩放页面
开启:自动缩放。
关闭:禁用自动缩放。",ZOOM_TO_FIT_ONOPEN_NAME:"打开绘图时自动缩放页面",ZOOM_TO_FIT_ONOPEN_DESC:"打开绘图文件时,自适应地缩放页面
开启:自动缩放。
关闭:禁用自动缩放。",ZOOM_TO_FIT_MAX_LEVEL_NAME:"自动缩放的最高级别",ZOOM_TO_FIT_MAX_LEVEL_DESC:"自动缩放画布时,允许放大的最高级别。该值不能低于 0.5(50%)且不能超过 10(1000%)。",LINKS_HEAD:"链接(Links) & 以文本形式嵌入到绘图中的文档(Transclusion)",LINKS_DESC:`按住 ${labelCTRL()} 并点击包含 [[链接]] 的文本元素可以打开其中的链接。如果所选文本元素包含多个 [[有效的内部链接]] ,只会打开第一个链接;如果所选文本元素包含有效的 URL 链接 (如 https://http://),插件会在浏览器中打开链接。
链接的源文件被重命名时,绘图中相应的 [[内部链接]] 也会同步更新。若您不愿绘图中的链接外观因此而变化,可使用 [[内部链接|别名]]。`,ADJACENT_PANE_NAME:"在相邻面板中打开",ADJACENT_PANE_DESC:`按住 ${labelCTRL()}+SHIFT 并点击绘图里的内部链接时,插件默认会在新面板中打开该链接。
若开启此项,Excalidraw 会先尝试寻找已有的相邻面板(按照右侧、左侧、上方、下方的顺序),并在其中打开该链接。如果找不到,再在新面板中打开。`,MAINWORKSPACE_PANE_NAME:"在主工作区中打开",MAINWORKSPACE_PANE_DESC:`按住 ${labelCTRL()}+SHIFT 并点击绘图里的内部链接时,插件默认会在当前窗口的新面板中打开该链接。
若开启此项,Excalidraw 会在主工作区的面板中打开该链接。`,LINK_BRACKETS_NAME:"在链接的两侧显示 [[中括号]]",LINK_BRACKETS_DESC:"文本元素处于预览(PREVIEW)模式时,在内部链接的两侧显示中括号。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-link-brackets: true/false 的键值对。",LINK_PREFIX_NAME:"内部链接的前缀",LINK_PREFIX_DESC:'文本元素处于预览(PREVIEW)模式时,如果其中包含链接,则添加此前缀。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-link-prefix: "📍 " 的键值对。',URL_PREFIX_NAME:"外部链接的前缀",URL_PREFIX_DESC:'文本元素处于预览(PREVIEW)模式时,如果其中包含外部链接,则添加此前缀。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-url-prefix: "🌐 " 的键值对。',PARSE_TODO_NAME:"待办任务(Todo)",PARSE_TODO_DESC:"将文本元素中的 - [ ]- [x] 前缀显示为方框。",TODO_NAME:"未完成项目",TODO_DESC:"未完成的待办项目的符号",DONE_NAME:"已完成项目",DONE_DESC:"已完成的待办项目的符号",HOVERPREVIEW_NAME:"鼠标悬停预览内部链接",HOVERPREVIEW_DESC:`开启:在 Excalidraw 阅读模式(View)下,鼠标悬停在 [[内部链接]] 上即可预览;而在普通模式(Normal)下, 鼠标悬停在内部链接右上角的蓝色标识上即可预览。
关闭:鼠标悬停在 [[内部链接]] 上,并且按住 ${labelCTRL()} 才能预览。`,LINKOPACITY_NAME:"链接标识的透明度",LINKOPACITY_DESC:"含有链接的元素,其右上角的链接标识的透明度。介于 0(全透明)到 1(不透明)之间。",LINK_CTRL_CLICK_NAME:`按住 ${labelCTRL()} 并点击含有 [[链接]] 或 [别名](链接) 的文本来打开链接`,LINK_CTRL_CLICK_DESC:"如果此功能影响到您使用某些原版 Excalidraw 功能,可将其关闭。关闭后,您只能通过绘图面板标题栏中的链接按钮来打开链接。",TRANSCLUSION_WRAP_NAME:"Transclusion 的折行方式",TRANSCLUSION_WRAP_DESC:"中的 number 表示嵌入的文本溢出时,在第几个字符处进行折行。
此开关控制具体的折行方式。若开启,则严格在 number 处折行,禁止溢出;若关闭,则允许在 number 位置后最近的空格处折行。",TRANSCLUSION_DEFAULT_WRAP_NAME:"Transclusion 的默认折行位置",TRANSCLUSION_DEFAULT_WRAP_DESC:"除了通过 ![[doc#^block]]{number} 中的 number 来控制折行位置,您也可以在此设置 number 的默认值。
一般设为 0 即可,表示不设置固定的默认值,这样当您需要嵌入文档到便签中时,Excalidraw 能更好地帮您自动处理。",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"Transclusion 的最大显示字符数",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"以 ![[内部链接]]![](内部链接) 的形式将文档以文本形式嵌入到绘图中时,该文档在绘图中可显示的最大字符数量。",QUOTE_TRANSCLUSION_REMOVE_NAME:"隐藏 Transclusion 行首的引用符号",QUOTE_TRANSCLUSION_REMOVE_DESC:"不显示 Transclusion 中每一行行首的 > 符号,以提高纯文本 Transclusion 的可读性。
开启:隐藏 > 符号
关闭:不隐藏 > 符号(注意,由于 Obsidian API 的原因,首行行首的 > 符号不会被隐藏)",GET_URL_TITLE_NAME:"使用 iframly 获取页面标题",GET_URL_TITLE_DESC:"拖放链接到 Excalidraw 时,使用 http://iframely.server.crestify.com/iframely?url= 来获取页面的标题。",MD_HEAD:"以图像形式嵌入到绘图中的 Markdown 文档(MD-Embed)",MD_HEAD_DESC:`您还可以将 Markdown 文档以图像形式(而非文本形式)嵌入到绘图中。方法是按住 ${labelCTRL()} 并从文件管理器中把文档拖入绘图,或者执行“以图像形式嵌入”系列命令。`,MD_TRANSCLUDE_WIDTH_NAME:"MD-Embed 的默认宽度",MD_TRANSCLUDE_WIDTH_DESC:"MD-Embed 的宽度。该选项会影响到折行,以及图像元素的宽度。
您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 [[Embed文件名#标题|宽度x最大高度]]。",MD_TRANSCLUDE_HEIGHT_NAME:"MD-Embed 的默认最大高度",MD_TRANSCLUDE_HEIGHT_DESC:"MD-Embed 的高度取决于 Markdown 文档内容的多少,但最大不会超过该值。
您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 [[Embed文件名#^块引ID|宽度x最大高度]]。",MD_DEFAULT_FONT_NAME:"MD-Embed 的默认字体",MD_DEFAULT_FONT_DESC:"可以设为 VirgilCasadia 或其他有效的 .ttf/.woff/.woff2 字体文件(如 我的字体.woff2)。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-font: 字体名或文件名 的键值对。",MD_DEFAULT_COLOR_NAME:"MD-Embed 的默认文本颜色",MD_DEFAULT_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 HTML Color Names),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-font-color: steelblue 的键值对。",MD_DEFAULT_BORDER_COLOR_NAME:"MD-Embed 的默认边框颜色",MD_DEFAULT_BORDER_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 HTML Color Names),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-border-color: gray 的键值对。
如果您不想要边框,请留空。",MD_CSS_NAME:"MD-Embed 的默认 CSS 样式表",MD_CSS_DESC:"MD-Embed 图像所采用的 CSS 样式表文件名。需包含扩展名,例如 md-embed.css。允许使用 Markdown 文件(如 md-embed-css.md),但其内容应符合 CSS 语法。
如果您要查询 CSS 所作用的 HTML 节点,请在 Obsidian 开发者控制台(CTRL+SHIFT+i)中键入命令:ExcalidrawAutomate.mostRecentMarkdownSVG —— 这将显示 Excalidraw 最近生成的 SVG。
此外,在 CSS 中不能任意地设置字体,您一般只能使用系统默认的标准字体(详见 README),但可以通过上面的设置来额外添加一个自定义字体。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-css: 库中的CSS文件或CSS片段 的键值对。",EMBED_HEAD:"嵌入到文档中的绘图(Embed) & 导出",EMBED_REUSE_EXPORTED_IMAGE_NAME:"将之前已导出的图像作为 Embed 的预览图(如果存在的话)",EMBED_REUSE_EXPORTED_IMAGE_DESC:"该选项与“自动导出 SVG/PNG 副本”选项配合使用。如果存在文件名相匹配的 SVG/PNG 副本,则将其作为 Embed 的预览图,而不再重新生成预览图。
该选项能够提高性能,尤其是当 Embed 中含有大量图像或 MD-Embed 时。但是,该选项也可能导致预览图无法立即响应你最新的修改,或者你对 Obsidian 主题风格的改变。
该选项仅作用于嵌入到文档中的绘图。由于种种原因,该技术无法用于加快绘图文件的打开速度。详见此说明。",EMBED_PREVIEW_SVG_NAME:"生成 SVG 格式的 Embed 预览图",EMBED_PREVIEW_SVG_DESC:"开启:在 Markdown 预览模式下,为 Embed 生成 SVG 格式的预览图。
关闭:为 Embed 生成 PNG 格式的预览图。注意:PNG 格式预览图不支持某些 绘图元素的块引用特性。",PREVIEW_MATCH_OBSIDIAN_NAME:"Embed 预览图匹配 Obsidian 主题",PREVIEW_MATCH_OBSIDIAN_DESC:"开启此项,则当 Obsidian 处于黑暗模式时,Embed 的预览图也会以黑暗模式渲染;当 Obsidian 处于明亮模式时,预览图也会以明亮模式渲染。
您可能还需要关闭“导出的图像包含背景”开关,来获得与 Obsidian 更加协调的观感。",EMBED_WIDTH_NAME:"Embed 预览图的默认宽度",EMBED_WIDTH_DESC:"该选项同时作用于 Obsidian 实时预览模式下的编辑视图和阅读视图,以及鼠标悬停时浮现的预览图。
您可为某个要嵌入到文档中的绘图(Embed)单独设置此项,方法是修改相应的链接格式为形如 ![[drawing.excalidraw|100]][[drawing.excalidraw|100x100]] 的格式。",EMBED_TYPE_NAME:"“嵌入绘图到当前文档”系列命令的源文件类型",EMBED_TYPE_DESC:"在命令面板中执行“嵌入绘图到当前文档”系列命令时,要嵌入绘图文件本身,还是嵌入其 PNG 或 SVG 副本。
如果您想选择 PNG 或 SVG 副本,需要先开启下方的“自动导出 PNG 副本”或“自动导出 SVG 副本”开关。
如果您选择了 PNG 或 SVG 副本,当副本不存在时,该命令将会插入一条损坏的链接,您需要打开绘图文件并手动导出副本才能修复 —— 也就是说,该选项不会自动帮您生成 PNG/SVG 副本,而只会引用已有的 PNG/SVG 副本。",EMBED_WIKILINK_NAME:"“嵌入绘图到当前文档”命令产生的内部链接类型",EMBED_WIKILINK_DESC:"开启:将产生 ![[Wiki 链接]]关闭:将产生 ![](Markdown 链接)。",EXPORT_PNG_SCALE_NAME:"导出的 PNG 图像的比例",EXPORT_PNG_SCALE_DESC:"导出的 PNG 图像的大小比例",EXPORT_BACKGROUND_NAME:"导出的图像包含背景",EXPORT_BACKGROUND_DESC:"如果关闭,将导出透明背景的图像。",EXPORT_PADDING_NAME:"导出的图像的空白边距",EXPORT_PADDING_DESC:"导出的 SVG/PNG 图像四周的空白边距(单位:像素)。
增加该值,可以避免在导出图像时,靠近图像边缘的图形被裁掉。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-export-padding: 5 的键值对。",EXPORT_THEME_NAME:"导出的图像包含主题",EXPORT_THEME_DESC:"导出与绘图的黑暗/明亮主题匹配的图像。如果关闭,在黑暗主题下导出的图像将和明亮主题一样。",EXPORT_HEAD:"导出设置",EXPORT_SYNC_NAME:"保持 SVG/PNG 文件名与绘图文件同步",EXPORT_SYNC_DESC:"打开后,当绘图文件被重命名时,插件将同步更新同文件夹下的同名 .SVG 和 .PNG 文件。当绘图文件被删除时,插件将自动删除同文件夹下的同名 .SVG 和 .PNG 文件。",EXPORT_SVG_NAME:"自动导出 SVG 副本",EXPORT_SVG_DESC:"自动导出和绘图文件同名的 SVG 副本。插件会将副本保存到绘图文件所在的文件夹中。在文档中嵌入这个 SVG 文件,相比直接嵌入绘图文件,具有更强的跨平台能力。
此开关开启时,每次您编辑 Excalidraw 绘图,其 SVG 文件副本都会同步更新。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-autoexport: none/both/svg/png的键值对",EXPORT_PNG_NAME:"自动导出 PNG 副本",EXPORT_PNG_DESC:"和“自动导出 SVG 副本”类似,但是导出格式为 *.PNG。",EXPORT_BOTH_DARK_AND_LIGHT_NAME:"同时导出黑暗和明亮风格的图像",EXPORT_BOTH_DARK_AND_LIGHT_DESC:"若开启,Excalidraw 将导出两个文件:filename.dark.png(或 filename.dark.svg)和 filename.light.png(或 filename.light.svg)。
该选项可作用于“自动导出 SVG 副本”、“自动导出 PNG 副本”,以及其他的手动的导出命令。",COMPATIBILITY_HEAD:"兼容性设置",EXPORT_EXCALIDRAW_NAME:"自动导出 Excalidraw 旧格式副本",EXPORT_EXCALIDRAW_DESC:"和“自动导出 SVG 副本”类似,但是导出格式为 *.excalidraw。",SYNC_EXCALIDRAW_NAME:"新旧格式绘图文件的内容保持同步",SYNC_EXCALIDRAW_DESC:"如果旧格式(*.excalidraw)绘图文件的修改日期比新格式(*.md)更新,则根据旧格式文件的内容来更新新格式文件。",COMPATIBILITY_MODE_NAME:"以旧格式创建新绘图",COMPATIBILITY_MODE_DESC:"开启此功能后,您通过功能区按钮、命令面板、文件浏览器等创建的绘图都将是旧格式(*.excalidraw)。此外,您打开旧格式绘图文件时将不再收到提醒消息。",MATHJAX_NAME:"MathJax (LaTeX) 的 javascript 库服务器",MATHJAX_DESC:"如果您在绘图中使用 LaTeX,插件需要从服务器获取并加载一个 javascript 库。如果您的网络无法访问某些库服务器,可以尝试通过此选项更换库服务器。更改此选项后,您可能需要重启 Obsidian 来使其生效。",NONSTANDARD_HEAD:"非 Excalidraw.com 官方支持的特性",NONSTANDARD_DESC:"这些特性不受 Excalidraw.com 官方支持。当导出绘图到 Excalidraw.com 时,这些特性将会发生变化。",CUSTOM_PEN_NAME:"自定义画笔的数量",CUSTOM_PEN_DESC:"在画布上的 Obsidian 菜单旁边切换自定义画笔。长按画笔按钮可以修改其样式。",EXPERIMENTAL_HEAD:"实验性功能",EXPERIMENTAL_DESC:"以下部分设置不会立即生效,需要刷新文件资源管理器或者重启 Obsidian 才会生效。",FIELD_SUGGESTER_NAME:"开启字段建议",FIELD_SUGGESTER_DESC:"开启后,当您在编辑器中输入 excalidraw- 或者 ea. 时,会弹出一个带有函数说明的自动补全提示菜单。
该功能借鉴了 Breadcrumbs 和 Templater 插件。",FILETYPE_NAME:"在文件浏览器中为 excalidraw.md 文件添加类型标识符(如 ✏️)",FILETYPE_DESC:"可通过下一项设置来自定义类型标识符。",FILETAG_NAME:"excalidraw.md 文件的类型标识符",FILETAG_DESC:"要显示为类型标识符的 emoji 或文本。",INSERT_EMOJI:"插入 emoji",LIVEPREVIEW_NAME:"嵌入绘图到文档时,模拟嵌入图像的语法",LIVEPREVIEW_DESC:"开启此项,则可在 Obsidian 实时预览模式的编辑视图下,用形如 ![[绘图|宽度|样式]] 的语法来嵌入绘图。
该选项不会在已打开的文档中立刻生效 —— 你需要重新打开此文档来使其生效。",ENABLE_FOURTH_FONT_NAME:"为文本元素启用本地字体",ENABLE_FOURTH_FONT_DESC:"开启此项后,文本元素的属性面板里会多出一个本地字体按钮。
使用了本地字体的绘图文件,将会失去一部分跨平台能力 —— 若将绘图文件移动到其他库中打开,显示效果可能会截然不同;若在 excalidraw.com 或者其他版本的 Excalidraw 中打开,使用本地字体的文本会变回系统默认字体。",FOURTH_FONT_NAME:"本地字体文件",FOURTH_FONT_DESC:"选择库文件夹中的一个 .ttf, .woff 或 .woff2 字体文件作为本地字体文件。若未选择文件,则使用默认的 Virgil 字体。",SCRIPT_SETTINGS_HEAD:"已安装脚本的设置",TASKBONE_HEAD:"Taskbone OCR(光学符号识别)",TASKBONE_DESC:"这是一个将 OCR 融入 Excalidraw 的实验性功能。请注意,Taskbone 是一项独立的外部服务,而不是由 Excalidraw 或 Obsidian-excalidraw-plugin 项目提供的。OCR 能够对画布上用自由画笔工具写下的涂鸦或者嵌入的图像进行文本识别,并将识别出来的文本写入绘图文件的 frontmatter,同时复制到剪贴板。之所以要写入 frontmatter 是为了便于您在 Obsidian 中能够搜索到这些文本。注意,识别的过程不是在本地进行的,而是通过在线 API,图像会被上传到 taskbone 的服务器(仅用于识别目的)。如果您对此敏感,请不要使用这个功能。",TASKBONE_ENABLE_NAME:"启用 Taskbone",TASKBONE_ENABLE_DESC:"启用这个功能意味着你同意 Taskbone 条款及细则 以及 隐私政策.",TASKBONE_APIKEY_NAME:"Taskbone API Key",TASKBONE_APIKEY_DESC:"Taskbone 的免费 API key 提供了一定数量的每月识别次数。如果您非常频繁地使用此功能,或者想要支持 Taskbone 的开发者(您懂的,没有人能用爱发电,Taskbone 开发者也需要投入资金才能持续运行这项 OCR 服务)您可以到 taskbone.com 购买一个商用 API key。购买后请将它填写到旁边这个文本框里,替换掉原本自动生成的免费 API key。",SELECT_FILE:"选择一个文件后按回车。",SELECT_FILE_WITH_OPTION_TO_SCALE:`选择一个文件后按回车,或者 SHIFT+${labelMETA()}+ENTER 以 100% 尺寸插入。`,NO_MATCH:"查询不到匹配的文件。",SELECT_FILE_TO_LINK:"选择要插入(链接)到当前绘图中的文件。",SELECT_DRAWING:"选择要插入(以图像形式嵌入)到当前绘图中的图像。",TYPE_FILENAME:"键入要选择的绘图名称。",SELECT_FILE_OR_TYPE_NEW:"选择已有绘图,或者新绘图的类型,然后按回车。",SELECT_TO_EMBED:"选择要插入(嵌入)到当前文档中的绘图。",SELECT_MD:"选择要插入(以图像形式嵌入)到当前绘图中的 Markdown 文档。",INFINITE_LOOP_WARNING:"EXCALIDRAW 警告\n停止加载嵌入的图像,因为此文件中存在死循环:\n",SCRIPT_EXECUTION_ERROR:"脚本运行错误。请在开发者控制台中查看错误信息。",LOAD_FROM_BACKUP:"Excalidraw 文件已损坏。尝试从备份文件中加载。",GOTO_FULLSCREEN:"进入全屏模式",EXIT_FULLSCREEN:"退出全屏模式",TOGGLE_FULLSCREEN:"切换全屏模式",OPEN_LINK_CLICK:"打开所选的图形或文本元素里的链接",OPEN_LINK_PROPS:"编辑所选 MD-Embed 的内部链接,或者打开所选的图形或文本元素里的链接"},zhTW={};const localeMap={ar:ar,cs:cz,da:da,de:de,en:en,"en-gb":enGB,es:es,fr:fr,hi:hi,id:id,it:it,ja:ja,ko:ko,nl:nl,nn:no,pl:pl,pt:pt,"pt-br":ptBR,ro:ro,ru:ru,tr:tr,"zh-cn":zhCN,"zh-tw":zhTW},locale=localeMap[obsidian_module.moment.locale()];function t$d(e){return locale||errorlog({where:"helpers.t",message:"Error: Excalidraw locale not found",locale:obsidian_module.moment.locale()}),locale&&locale[e]||en[e]}var html2canvasExports={},html2canvas$1={get exports(){return html2canvasExports},set exports(e){html2canvasExports=e}};html2canvas$1.exports=function(){ +"use strict";var obsidian_module=require("obsidian");var LZString=function(){var r=String.fromCharCode,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",e={};function t(r,o){if(!e[r]){e[r]={};for(var n=0;n>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null==o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;e>=1}else{for(t=1,e=0;e>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[c]}else for(t=s[c],e=0;e>=1;0==--l&&(l=Math.pow(2,h),h++),s[p]=f++,c=String(a)}if(""!==c){if(Object.prototype.hasOwnProperty.call(u,c)){if(c.charCodeAt(0)<256){for(e=0;e>=1}else{for(t=1,e=0;e>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[c]}else for(t=s[c],e=0;e>=1;0==--l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;e>=1;for(;;){if(m<<=1,v==o-1){d.push(n(m));break}v++}return d.join("")},decompress:function(r){return null==r?"":""==r?null:i._decompress(r.length,32768,function(o){return r.charCodeAt(o)})},_decompress:function(o,n,e){var t,i,s,u,a,p,c,l=[],f=4,h=4,d=3,m="",v=[],g={val:e(0),position:n,index:1};for(t=0;t<3;t+=1)l[t]=t;for(s=0,a=Math.pow(2,2),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;switch(s){case 0:for(s=0,a=Math.pow(2,8),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;c=r(s);break;case 1:for(s=0,a=Math.pow(2,16),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;c=r(s);break;case 2:return""}for(l[3]=c,i=c,v.push(c);;){if(g.index>o)return"";for(s=0,a=Math.pow(2,d),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;switch(c=s){case 0:for(s=0,a=Math.pow(2,8),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;l[h++]=r(s),c=h-1,f--;break;case 1:for(s=0,a=Math.pow(2,16),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;l[h++]=r(s),c=h-1,f--;break;case 2:return v.join("")}if(0==f&&(f=Math.pow(2,d),d++),l[c])m=l[c];else{if(c!==h)return null;m=i+i.charAt(0)}v.push(m),l[h++]=i+m.charAt(0),i=m,0==--f&&(f=Math.pow(2,d),d++)}}};return i}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString});const EXCALIDRAW_PACKAGES = "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Piis60ja019UFa0cfhg60Ms1ba1Da2pyL6zWHCRk60PTU8yQEzWPnXag3s/TLa3EiKUDUi62GkKbdX/9XMQDXCJBTXJkKQABma3DjX3a35U0861+a1LPD661vA2+BI462ompy61aKJOjTna1FdWeLUXa3863Pa28y3G62LkK262na31LqBBDTxqf0YYDXYrplg289XV/SzrU1E1YTW660xMj4g0MiK6jU3a2Na3HzrMw1UXUB60NUDZxhmKKyBDd3RR6079TPLVDPiJzqsSCh61WEhp62EIArDWfa2a62oLqMMCw0SJ63ra2JzVMrUxa38DUha0kLr2a0AMg/DUNa0OdVoyJUpUO0Cta1o628602639jVZa2G62f0a9a2kc3ua3kUBT9U8sA460SvRM63d61zCLO63a60va2ba02a2C602a2f0ZOa3EvLJDj962162SC1ma1463162L9Vqo2SC07a0la1/a27ThzY1L601a1d60dbXI62fS7ZiKuDahi1262f0ZEDVHa22C2n63TfUUDVHLrc62B60Z61V62Wa0N634BDDNXr604+pv60ZpIe61tAyl62cBApa39a3s/Rj62K7VXLqE62J0A963I61jtUJTWrjygG1L63dNUHzpVCb0MAda3Y62O61L61DNWi3Uva0oG2AG04+oj62JzpgG0m62P61hShjnWna2fS4D62FPVX60hLWwfWZKLx63Da2B62G62wXWPa2f0aA7Xy61NzpY4BamJiCKvk2C/SlnU4bWqLXIFVQMijMK3DVRo2O814BCnbQszXEiKSC02BD182SjXmLUNa1UnVf+Cxy0GkJm/S0TXIORaLpwdoNcw3XWLgzAjWByLPXVwQC/UBnQ0MzW/62U/TU9UROC0DVma1p61O61nxJ0DWJa2va1xXXva0d60dni9LoLbCgy0y63kUDVzq+kJUnU760f63W61f4jVbQpE3LDV3608XT7a3RvXT63sfj/61UXWHa1w0TbdVZa2cLoFa1joBR60ZpKMG1C6BZbC/HX6/WL1zYOTt61OG1cHUBG0WfSPa0ZpK1a2SBDp61xa3dNURG0AG0r60Oa3hbWWG3H02bdXwLVZ60+hBSY1OjS161EdUSvRuk30MA6MiH2iPQ3wBCXa1U63sJT4G1sc1d63z+w/62e60lG1yTUs62eG2l9U5a3wLUs62xG0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5HrUE9NO0e5t9TT4DqgvHhMHHQlsnjo40eDcOQVsmggtwNDVsljufcfiLohtww7gxo7R6Of5wtmkvvODdSEZsCWwhGZontHv4gJOZjbiYufA5qsl7VHAbue7aEvb5tkybucGYEfNAvCyuyAQGsTPOwzBa4ADHzShM5RBY5tqnYSO7zMPT4CsMEkYLRmibGW+ufyACeudcZzPhg3VNO4XLwZzMOkn6C8b3ktwrDNMEc3TSVoOrpG6eEn6bAm2uchqeXpurk4m8EBSSKsQPHjYgNdkB26efXN60CF2CmmRmAt5gNyNPgVp3b0C32bhwUtq5rj9D4tNZJJzdV34SBVVOPREu6fnYOoOee6fMNHuhjf4BEOdGHPiZukOfQqTJEAYvZuMDfKPZzx0YiQqClJD8QD8WUjVPbrhowalBGxlx26SigQ3VMTYJCefCNaiediefiGfRYI1UPwxCoXMsVkrc6yedH2LjATLrt5g582TZg4GSuaecmsqRH5KDZjJpaeejZoypCGeeqgS88s9AY64DYUBtqkzbTpgCaZS1jDEgAe8CCGekIAW4B65BAeeTsjTENwRNNQM1QA6fqMediZt4tISZteOm/w594evWTctSzmPPgttnpoefAgCJomEHBwkMuQB9lvaxXaYKCecPHimH4aNzB1oDluyecSedJefCecpefvihxefoLbGafuDWKee3fi5edq/aqedYWeJK0aeejkwmecOkiA8jRmW6eeCkB15YGef9g7Gef9g5meddCQOecs+uTsjoBg64B6dGhgXHqHjiXUsFuMDATowwCPMFocMGYEqsEEMnVDy1/nZNFbnZBeduMAhedcee6hQfMGyef5ectDWFee1mxLecjVOledjK0VefRmX9g41ecPPEgcv6ee7D2knzNed15atedhvCWGsybBbrT3dlh6gRyGoHhcHCOkCUUUWH6DvpdPGdVqBkv02TR7qMSS7kIG0PLwbZUWdMOlMNZqBx/CroClTloH6G6FICF8STtwItQwhIMuudvufCSd+ucNElJqc/udTFV/ucjCMddHQQJXNQ3VP9jDFiDnwUY+eyecEjAOYIJoVbMNzYe4+cSLZkMLs5xXCs9SEqPmMAZRueTsgIwjYHFmEVS7i4VzDumtlBuudw+cfudVARzzCbLhT2BaYA2PmrqWiz04D4bqX4L6ELbPqWiz3u8wD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mmo2pqMGaiHGovxqK6qCZXwPJqMAABmOC+ajAAANjhmmo75qOaainGotJqLyaijZ3LxqJhajfGopJqJ+ainGoypqICainGo0z71BaiIWoqFqNRaj2movJqJhajbLgxFqPsajkWovFqLaajKmo+ZqMH3dKmozJqMqQD7mo0JqMSajUmojJqP5qdXGohlqPSaiaWojTc3KajAAAKjhcWo2pqPZaiJuLQAADw4apqKhajyWoylqNww9ymo3pqJKai/GozlqOCaidanAlqJBai2movJqJiajQmorlqJ5aj2WovXgO1a9SMPFm/2u4sOcQ/5qPsai/GoqpqNqajAAABjhymohpqKNaiw7nXVqL8aiGmo8FqLSaiUmozlqOcaj7YIukAFiaiPGon5qL+aiAWoqhGy+ajeWon8cJm1c/xw7moLrndAJwkgawbuc453QzyMUw80WTL5qLyaj7GojxqP6ajbGo2pqKVajAAASjgImooZjzZaio2omNqNCaj42o8Lz3Kaj+WokpqKCajKmoklqLlaiFiLTlqIiaiYWoxxqI8ajmmo2xqK8aiy1w6uCLpAAc2orxqL8ai6movBpySajQmoiVqO+3M3GowZqOaaiumouCcOdgAqmonZqNCajfEbUJqJzaj7Wo0PEMAABhODaajAAAWDgAmoxHV2Haix2ovxqPsaie2o3tNzCw907/CLD28PcosPWWkzSajMWoo7yIVaj7GotdN0AABoOCRaimY7PtqLXai0SLL5qIcaisMAjdqMzajymowAAAo4WNqNLJdqp7aslxMnD3gAQAACg4apqICajamonxqMAAB8OEqaj1mo3zvyqai6mo0JqOlaiGmo4JqICajQmo+VqLyaitmoh5qKJ8jp6g2DcOaw9ws/cJqIiaj6Wow1qIaaiQWowtjwKaj7Go2NqM3ajD6gtfEMyz9usPHWMwQ6jOWokFqPKajw2ogPV38aigmo4JqMfajn2o6QR1I6jamo8PVwo6iPWohZqMAAAOOEAABkOEanDNM3J1qL7ajaOooJqKz1cvGo5VqKWajQmomDqJY6jKmotjqMBaiREI5xvwcwDnYAW1qI8ajHGolVqLyajemoyJqIPaiFNwjNqKzai/GomZqMHai8moxZqNFaj1NwtGR1Bajamo+pqKiaiZ2o1TqIHaiDNwukACA6iKWo9xqPJaiPGovTq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=";const {react, reactDOM, excalidrawLib} = window.eval.call(window, `(function() {${LZString.decompressFromBase64(EXCALIDRAW_PACKAGES)};return {react:React, reactDOM:ReactDOM, excalidrawLib: ExcalidrawLib};})();`);const PLUGIN_VERSION="1.9.20";function _interopNamespace(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(A){if("default"!==A){var i=Object.getOwnPropertyDescriptor(e,A);Object.defineProperty(t,A,i.get?i:{enumerable:!0,get:function(){return e[A]}})}})),t.default=e,Object.freeze(t)}var obsidian_module__namespace=_interopNamespace(obsidian_module),React__namespace=_interopNamespace(React);let random$1=e=>crypto.getRandomValues(new Uint8Array(e)),customRandom=(e,t,A)=>{let i=(2<{let r="";for(;;){let t=A(n),s=n;for(;s--;)if(r+=e[t[s]&i]||"",r.length===a)return r}}},customAlphabet=(e,t=21)=>customRandom(e,t,random$1),nanoid$1=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce(((e,t)=>e+((t&=63)<36?t.toString(36):t<62?(t-26).toString(36).toUpperCase():t>62?"-":"_")),"");const ERROR_IFRAME_CONVERSION_CANCELED="iframe conversion canceled",obsidianToExcalidrawMap={en:"en-US",af:"af-ZA",am:"am-ET",ar:"ar-SA",eu:"eu-ES",be:"be-BY",bg:"bg-BG",bn:"bn-BD",ca:"ca-ES",cs:"cs-CZ",da:"da-DK",de:"de-DE",el:"el-GR",eo:"eo-EO",es:"es-ES",fa:"fa-IR","fi-fi":"fi-FI",fr:"fr-FR",gl:"gl-ES",he:"he-IL",hi:"hi-IN",hu:"hu-HU",id:"id-ID",it:"it-IT",ja:"ja-JP",ko:"ko-KR",lv:"lv-LV",ml:"ml-IN",ms:"ms-MY",nl:"nl-NL",no:"nb-NO",oc:"oc-FR",pl:"pl-PL",pt:"pt-PT","pt-BR":"pt-BR",ro:"ro-RO",ru:"ru-RU",sr:"sr-RS",se:"sv-SE",sk:"sk-SK",sq:"sq-AL",ta:"ta-IN",te:"te-IN",th:"th-TH",tr:"tr-TR",uk:"uk-UA",ur:"ur-PK",vi:"vi-VN",zh:"zh-CN","zh-TW":"zh-TW"},{sceneCoordsToViewportCoords:sceneCoordsToViewportCoords,viewportCoordsToSceneCoords:viewportCoordsToSceneCoords,determineFocusDistance:determineFocusDistance,intersectElementWithLine:intersectElementWithLine,getCommonBoundingBox:getCommonBoundingBox,getMaximumGroups:getMaximumGroups,measureText:measureText,getDefaultLineHeight:getDefaultLineHeight,wrapText:wrapText,getFontString:getFontString,getBoundTextMaxWidth:getBoundTextMaxWidth,exportToSvg:exportToSvg,exportToBlob:exportToBlob,mutateElement:mutateElement,restore:restore,mermaidToExcalidraw:mermaidToExcalidraw}=excalidrawLib;function JSON_parse(e){return JSON.parse(e.replaceAll("[","["))}/Mac|iPod|iPhone|iPad/.test(window.navigator.platform);const DEVICE={isDesktop:!document.body.hasClass("is-tablet")&&!document.body.hasClass("is-mobile"),isPhone:document.body.hasClass("is-phone"),isTablet:document.body.hasClass("is-tablet"),isMobile:document.body.hasClass("is-mobile"),isLinux:document.body.hasClass("mod-linux")&&!document.body.hasClass("is-android"),isMacOS:document.body.hasClass("mod-macos")&&!document.body.hasClass("is-ios"),isWindows:document.body.hasClass("mod-windows"),isIOS:document.body.hasClass("is-ios"),isAndroid:document.body.hasClass("is-android")},ROOTELEMENTSIZE=(()=>{const e=document.createElement("div");e.style.fontSize="1rem",e.style.display="none",document.body.appendChild(e);const t=getComputedStyle(e),A=parseFloat(t.fontSize);return document.body.removeChild(e),A})(),nanoid=customAlphabet("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",8),KEYCODE={ESC:27},ROUNDNESS={LEGACY:1,PROPORTIONAL_RADIUS:2,ADAPTIVE_RADIUS:3},THEME_FILTER="invert(100%) hue-rotate(180deg) saturate(1.25)",GITHUB_RELEASES="https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/",URLFETCHTIMEOUT=3e3,PLUGIN_ID="obsidian-excalidraw-plugin",SCRIPT_INSTALL_CODEBLOCK="excalidraw-script-install",SCRIPT_INSTALL_FOLDER="Downloaded",fileid=customAlphabet("1234567890abcdef",40),REG_LINKINDEX_INVALIDCHARS=/[<>:"\\|?*#]/g,REG_SECTION_REF_CLEAN=/([:#|^\\\r\n]|%%|\[\[|]])/g,REG_BLOCK_REF_CLEAN=/[!"#$%&()*+,.:;<=>?@^`{|}~\/\[\]\\\r\n]/g,IMAGE_TYPES=["jpeg","jpg","png","gif","svg","webp","bmp","ico"],EXPORT_TYPES=["svg","dark.svg","light.svg","png","dark.png","light.png"],MAX_IMAGE_SIZE=500,FRONTMATTER_KEY="excalidraw-plugin",FRONTMATTER_KEY_EXPORT_TRANSPARENT="excalidraw-export-transparent",FRONTMATTER_KEY_EXPORT_DARK="excalidraw-export-dark",FRONTMATTER_KEY_EXPORT_SVGPADDING="excalidraw-export-svgpadding",FRONTMATTER_KEY_EXPORT_PADDING="excalidraw-export-padding",FRONTMATTER_KEY_EXPORT_PNGSCALE="excalidraw-export-pngscale",FRONTMATTER_KEY_CUSTOM_PREFIX="excalidraw-link-prefix",FRONTMATTER_KEY_CUSTOM_URL_PREFIX="excalidraw-url-prefix",FRONTMATTER_KEY_CUSTOM_LINK_BRACKETS="excalidraw-link-brackets",FRONTMATTER_KEY_ONLOAD_SCRIPT="excalidraw-onload-script",FRONTMATTER_KEY_LINKBUTTON_OPACITY="excalidraw-linkbutton-opacity",FRONTMATTER_KEY_DEFAULT_MODE="excalidraw-default-mode",FRONTMATTER_KEY_FONT="excalidraw-font",FRONTMATTER_KEY_FONTCOLOR="excalidraw-font-color",FRONTMATTER_KEY_BORDERCOLOR="excalidraw-border-color",FRONTMATTER_KEY_MD_STYLE="excalidraw-css",FRONTMATTER_KEY_AUTOEXPORT="excalidraw-autoexport",FRONTMATTER_KEY_EMBEDDABLE_THEME="excalidraw-iframe-theme",EMBEDDABLE_THEME_FRONTMATTER_VALUES=["light","dark","auto","dafault"],VIEW_TYPE_EXCALIDRAW="excalidraw",ICON_NAME="excalidraw-icon",RERENDER_EVENT="excalidraw-embed-rerender",BLANK_DRAWING=`{"type":"excalidraw","version":2,"source":"${GITHUB_RELEASES+PLUGIN_VERSION}","elements":[],"appState":{"gridSize":null,"viewBackgroundColor":"#ffffff"}}`,DARK_BLANK_DRAWING=`{"type":"excalidraw","version":2,"source":"${GITHUB_RELEASES+PLUGIN_VERSION}","elements":[],"appState":{"theme":"dark","gridSize":null,"viewBackgroundColor":"#ffffff"}}`,FRONTMATTER=["---","",`${FRONTMATTER_KEY}: parsed`,"tags: [excalidraw]","","---","==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==","",""].join("\n"),EMPTY_MESSAGE="Hit enter to create a new drawing",TEXT_DISPLAY_PARSED_ICON_NAME="quote-glyph",TEXT_DISPLAY_RAW_ICON_NAME="presentation",SCRIPTENGINE_ICON_NAME="ScriptEngine",KEYBOARD_EVENT_TYPES=["keydown","keyup","keypress"],EXTENDED_EVENT_TYPES=["copy","cut","paste"],COLOR_NAMES=new Map;COLOR_NAMES.set("aliceblue","#f0f8ff"),COLOR_NAMES.set("antiquewhite","#faebd7"),COLOR_NAMES.set("aqua","#00ffff"),COLOR_NAMES.set("aquamarine","#7fffd4"),COLOR_NAMES.set("azure","#f0ffff"),COLOR_NAMES.set("beige","#f5f5dc"),COLOR_NAMES.set("bisque","#ffe4c4"),COLOR_NAMES.set("black","#000000"),COLOR_NAMES.set("blanchedalmond","#ffebcd"),COLOR_NAMES.set("blue","#0000ff"),COLOR_NAMES.set("blueviolet","#8a2be2"),COLOR_NAMES.set("brown","#a52a2a"),COLOR_NAMES.set("burlywood","#deb887"),COLOR_NAMES.set("cadetblue","#5f9ea0"),COLOR_NAMES.set("chartreuse","#7fff00"),COLOR_NAMES.set("chocolate","#d2691e"),COLOR_NAMES.set("coral","#ff7f50"),COLOR_NAMES.set("cornflowerblue","#6495ed"),COLOR_NAMES.set("cornsilk","#fff8dc"),COLOR_NAMES.set("crimson","#dc143c"),COLOR_NAMES.set("cyan","#00ffff"),COLOR_NAMES.set("darkblue","#00008b"),COLOR_NAMES.set("darkcyan","#008b8b"),COLOR_NAMES.set("darkgoldenrod","#b8860b"),COLOR_NAMES.set("darkgray","#a9a9a9"),COLOR_NAMES.set("darkgreen","#006400"),COLOR_NAMES.set("darkkhaki","#bdb76b"),COLOR_NAMES.set("darkmagenta","#8b008b"),COLOR_NAMES.set("darkolivegreen","#556b2f"),COLOR_NAMES.set("darkorange","#ff8c00"),COLOR_NAMES.set("darkorchid","#9932cc"),COLOR_NAMES.set("darkred","#8b0000"),COLOR_NAMES.set("darksalmon","#e9967a"),COLOR_NAMES.set("darkseagreen","#8fbc8f"),COLOR_NAMES.set("darkslateblue","#483d8b"),COLOR_NAMES.set("darkslategray","#2f4f4f"),COLOR_NAMES.set("darkturquoise","#00ced1"),COLOR_NAMES.set("darkviolet","#9400d3"),COLOR_NAMES.set("deeppink","#ff1493"),COLOR_NAMES.set("deepskyblue","#00bfff"),COLOR_NAMES.set("dimgray","#696969"),COLOR_NAMES.set("dodgerblue","#1e90ff"),COLOR_NAMES.set("firebrick","#b22222"),COLOR_NAMES.set("floralwhite","#fffaf0"),COLOR_NAMES.set("forestgreen","#228b22"),COLOR_NAMES.set("fuchsia","#ff00ff"),COLOR_NAMES.set("gainsboro","#dcdcdc"),COLOR_NAMES.set("ghostwhite","#f8f8ff"),COLOR_NAMES.set("gold","#ffd700"),COLOR_NAMES.set("goldenrod","#daa520"),COLOR_NAMES.set("gray","#808080"),COLOR_NAMES.set("green","#008000"),COLOR_NAMES.set("greenyellow","#adff2f"),COLOR_NAMES.set("honeydew","#f0fff0"),COLOR_NAMES.set("hotpink","#ff69b4"),COLOR_NAMES.set("indianred","#cd5c5c"),COLOR_NAMES.set("indigo","#4b0082"),COLOR_NAMES.set("ivory","#fffff0"),COLOR_NAMES.set("khaki","#f0e68c"),COLOR_NAMES.set("lavender","#e6e6fa"),COLOR_NAMES.set("lavenderblush","#fff0f5"),COLOR_NAMES.set("lawngreen","#7cfc00"),COLOR_NAMES.set("lemonchiffon","#fffacd"),COLOR_NAMES.set("lightblue","#add8e6"),COLOR_NAMES.set("lightcoral","#f08080"),COLOR_NAMES.set("lightcyan","#e0ffff"),COLOR_NAMES.set("lightgoldenrodyellow","#fafad2"),COLOR_NAMES.set("lightgrey","#d3d3d3"),COLOR_NAMES.set("lightgreen","#90ee90"),COLOR_NAMES.set("lightpink","#ffb6c1"),COLOR_NAMES.set("lightsalmon","#ffa07a"),COLOR_NAMES.set("lightseagreen","#20b2aa"),COLOR_NAMES.set("lightskyblue","#87cefa"),COLOR_NAMES.set("lightslategray","#778899"),COLOR_NAMES.set("lightsteelblue","#b0c4de"),COLOR_NAMES.set("lightyellow","#ffffe0"),COLOR_NAMES.set("lime","#00ff00"),COLOR_NAMES.set("limegreen","#32cd32"),COLOR_NAMES.set("linen","#faf0e6"),COLOR_NAMES.set("magenta","#ff00ff"),COLOR_NAMES.set("maroon","#800000"),COLOR_NAMES.set("mediumaquamarine","#66cdaa"),COLOR_NAMES.set("mediumblue","#0000cd"),COLOR_NAMES.set("mediumorchid","#ba55d3"),COLOR_NAMES.set("mediumpurple","#9370d8"),COLOR_NAMES.set("mediumseagreen","#3cb371"),COLOR_NAMES.set("mediumslateblue","#7b68ee"),COLOR_NAMES.set("mediumspringgreen","#00fa9a"),COLOR_NAMES.set("mediumturquoise","#48d1cc"),COLOR_NAMES.set("mediumvioletred","#c71585"),COLOR_NAMES.set("midnightblue","#191970"),COLOR_NAMES.set("mintcream","#f5fffa"),COLOR_NAMES.set("mistyrose","#ffe4e1"),COLOR_NAMES.set("moccasin","#ffe4b5"),COLOR_NAMES.set("navajowhite","#ffdead"),COLOR_NAMES.set("navy","#000080"),COLOR_NAMES.set("oldlace","#fdf5e6"),COLOR_NAMES.set("olive","#808000"),COLOR_NAMES.set("olivedrab","#6b8e23"),COLOR_NAMES.set("orange","#ffa500"),COLOR_NAMES.set("orangered","#ff4500"),COLOR_NAMES.set("orchid","#da70d6"),COLOR_NAMES.set("palegoldenrod","#eee8aa"),COLOR_NAMES.set("palegreen","#98fb98"),COLOR_NAMES.set("paleturquoise","#afeeee"),COLOR_NAMES.set("palevioletred","#d87093"),COLOR_NAMES.set("papayawhip","#ffefd5"),COLOR_NAMES.set("peachpuff","#ffdab9"),COLOR_NAMES.set("peru","#cd853f"),COLOR_NAMES.set("pink","#ffc0cb"),COLOR_NAMES.set("plum","#dda0dd"),COLOR_NAMES.set("powderblue","#b0e0e6"),COLOR_NAMES.set("purple","#800080"),COLOR_NAMES.set("rebeccapurple","#663399"),COLOR_NAMES.set("red","#ff0000"),COLOR_NAMES.set("rosybrown","#bc8f8f"),COLOR_NAMES.set("royalblue","#4169e1"),COLOR_NAMES.set("saddlebrown","#8b4513"),COLOR_NAMES.set("salmon","#fa8072"),COLOR_NAMES.set("sandybrown","#f4a460"),COLOR_NAMES.set("seagreen","#2e8b57"),COLOR_NAMES.set("seashell","#fff5ee"),COLOR_NAMES.set("sienna","#a0522d"),COLOR_NAMES.set("silver","#c0c0c0"),COLOR_NAMES.set("skyblue","#87ceeb"),COLOR_NAMES.set("slateblue","#6a5acd"),COLOR_NAMES.set("slategray","#708090"),COLOR_NAMES.set("snow","#fffafa"),COLOR_NAMES.set("springgreen","#00ff7f"),COLOR_NAMES.set("steelblue","#4682b4"),COLOR_NAMES.set("tan","#d2b48c"),COLOR_NAMES.set("teal","#008080"),COLOR_NAMES.set("thistle","#d8bfd8"),COLOR_NAMES.set("tomato","#ff6347"),COLOR_NAMES.set("turquoise","#40e0d0"),COLOR_NAMES.set("violet","#ee82ee"),COLOR_NAMES.set("wheat","#f5deb3"),COLOR_NAMES.set("white","#ffffff"),COLOR_NAMES.set("whitesmoke","#f5f5f5"),COLOR_NAMES.set("yellow","#ffff00"),COLOR_NAMES.set("yellowgreen","#9acd32");const DEFAULT_MD_EMBED_CSS='.snw-reference{display: none;}.excalidraw-md-host{padding:0px 10px}.excalidraw-md-footer{height:5px}foreignObject{background-color:transparent}p{display:block;margin-block-start:1em;margin-block-end:1em;margin-inline-start:0px;margin-inline-end:0px;color:inherit}table,tr,th,td{color:inherit;border:1px solid;border-collapse:collapse;padding:3px}th{font-weight:bold;border-bottom:double;background-color:silver}.copy-code-button{display:none}code[class*=language-],pre[class*=language-]{color:#393a34;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;font-size:.9em;line-height:1.2em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre>code[class*=language-]{font-size:1em}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{background:#C1DEF1}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{background:#C1DEF1}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;background-color:#0000001a}:not(pre)>code[class*=language-]{padding:.2em;padding-top:1px;padding-bottom:1px;background:#f8f8f8;border:1px solid #dddddd}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:green;font-style:italic}.token.namespace{opacity:.7}.token.string{color:#a31515}.token.punctuation,.token.operator{color:#393a34}.token.url,.token.symbol,.token.number,.token.boolean,.token.variable,.token.constant,.token.inserted{color:#36acaa}.token.atrule,.token.keyword,.token.attr-value,.language-autohotkey .token.selector,.language-json .token.boolean,.language-json .token.number,code[class*=language-css]{color:#00f}.token.function{color:#393a34}.token.deleted,.language-autohotkey .token.tag{color:#9a050f}.token.selector,.language-autohotkey .token.keyword{color:#00009f}.token.important{color:#e90}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.class-name,.language-json .token.property{color:#2b91af}.token.tag,.token.selector{color:maroon}.token.attr-name,.token.property,.token.regex,.token.entity{color:red}.token.directive.tag .tag{background:#ffff00;color:#393a34}.line-numbers.line-numbers .line-numbers-rows{border-right-color:#a5a5a5}.line-numbers .line-numbers-rows>span:before{color:#2b91af}.line-highlight.line-highlight{background:rgba(193,222,241,.2);background:-webkit-linear-gradient(left,rgba(193,222,241,.2) 70%,rgba(221,222,241,0));background:linear-gradient(to right,rgba(193,222,241,.2) 70%,rgba(221,222,241,0))}blockquote{ font-style:italic;background-color:rgb(46,43,42,0.1);margin:0;margin-left:1em;border-radius:0 4px 4px 0;border:1px solid hsl(0,80%,32%);border-left-width:8px;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;padding:10px 20px;margin-inline-start:30px;margin-inline-end:30px;}',SCRIPTENGINE_ICON='',DISK_ICON_NAME="save",EXPORT_IMG_ICON=' ',EXPORT_IMG_ICON_NAME="export-img",EXCALIDRAW_ICON='',VIRGIL_DATAURL="data:application/font-woff;charset=utf-8;base64,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",VIRGIL_FONT=` @font-face {font-family: "Virgil";src: url("${VIRGIL_DATAURL}") format("woff2");}`,CASCADIA_FONT=' @font-face {font-family: "Cascadia";src: url("data:application/font-woff;charset=utf-8;base64,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XVtdpV2uXdBeAV4OXmBecl6GXpteyl74X1Vfsl/PX+xgDWAtYDVgPWBQYGNga2B9YIZgj2CcYKlgtmDLYOFg7GElYVthfmGgYa1hwmHdYgNiN2JVYoli0GL6Yzpjc2PbZINkrGUYZUBlTWVeZaNl8GX9Zi9mPGZNZrdm/mdPZ59nq2e4Z8hoAWhDaE9oW2hoaMto12jnaPNo/2mBaipqmGqlarFrRWtSa79sG2wnbFRskGzBbM5s32z7bQ5tF20fbR9tH20fbX9tzm4ebp9u+W9jb75wGnBgcKRw1HEucZRx1nIxcoly1HMHc1Nzm3P+dEJ0rXTvdR11YXWIdcl2LHZrdnN2e3aidqp2zHbwdwd3LHc/d213qHfGd/14JHhLeHt4rnjWeON5EnkpeUd5nHnBefJ5+noCeiV6T3pyenp6hXqcewR7kXu5e+R8Dnw3fHF8qnztfPp9B30UfSF9Ln07fUh9VX1ifW99fH2JfZZ9o32wfb19yn3YfeZ9834Bfg5+Hn4yfkJ+U35hfnd+h37Vf2iAj4CrgNeBDYEzgVmBgIGmgbmBzYH4gh2CUoKHgr2C84M1g/iEM4SIhK6Ey4T9hR6FQIVbhXaFiYWcha+FwoXSheuGAoYZhjCGR4Zoho+GnYazhsGGzobjhviHBYcah0yHaIgsiE6IcIi1iNuJA4lciWqJgImViaqJvYnRie6KDIosikyKbIqBio+KpIqyir+KzIrZiueK+4sPiySLOYtdi3GLhIuRi5+Ls4vIi9aL44vxi/+MFIwojD2MUoxfjGyMeYyFjJiMq4y/jNKM840NjSeNO41bjXSNjo2ijc6N7o4PjieOPY5TjmaOd46Njp6OtI7NjuGO8o8JjxqPMY9Lj2WPe4+Rj6aPvI/Kj96P75AAkA6QHJAukE6QdJCCkJ6QvJDKkN6Q75ECkRORIZE7kU+RY5F+kZSRqZHCkdiR7pIIkiSSQJJckniSlJK3ksiS2JLrkwCTDpMhkzKTQ5NQk12TcJOMk6+TvJPVk/GT/5QSlCSUNJRElFKUa5R+lJGUrJTClNiU8ZUHlR2VN5VTlWqVf5WUla2VwJXWleaV/JYNlieWOpZQlmCWdpaHlqCWtJbJluyXBZcflziXTJdgl3qXjpeil8WX3Zf1mGqYsZkFmTmZg5mvmcaZ5Zpamr6bHZtFm7icHZyAnN6dG52EnbWdyp3pnf2eHJ5DnpGey58gn2iffJ+Zn7mfxp/Wn+Sf8qACoBCgHqAwoD6gTqBqoHigjKChoLagyqDdoPKhBaEloVGhZaF9oZWhsqHJofWiCaKvosyjNKNdo2qjpaPVpAekLqRVpMmk1qUgpS2lPqVPpW6lmKXPpgamUaaXptCm+qc/p0ynfKfAp/2oPaiCqJOoxqj6qUmpjqmbqfuqB6oYqkCqdKqwqsGrOqu3q8Sr1awDrD2sjazbrSStMa1vrbmuCa4arn2ujq8ir1Kvma/SsF+wm7D/sUuxerI3smiyaLJ/sqay3bMjs3mz37RVtNu1UbW3ti22lLbqt1C3xrgsuIK46Lk/uYa53LpDurm7H7t2u9y8M7x5vNC9Nr2MvdO+Kb5wvqa+7L9Cv6jAHsCEwNrBQMGWwd3CNMKbwvLDOMOOw9XEDMRTxKvFEsVpxbDGBsZNxoTGzMcjx2rHocfnyB7IRch7yMLJGcmAyffKXsq1yxzLdMu6zBDMdszMzRLNaM2vzefOLs6Gzu3PRM+Mz+PQK9Bh0KjQ/tFE0XvRwdH40h7SVdKc0vPTWtOx0/jUT9SW1M3VFNVr1bLV6NYu1mXWjNbD1wvXYtep1+HYKNhf2IbYvtkF2TzZY9mZ2cDZ19n+2jXafNrT2zrbsdwY3G/c1t0u3XXdzN4z3ore0d8o33Dfpt/s4ELgqOD+4UThmuHh4hjiX+K14vzjM+N547Dj1+QO5FXkrOUT5WrlseYI5k/mh+bP5yfnb+em5+3oJehL6ILoyekg6Wfpnenj6hrqQep56sDq9+se61Tre+uS67nr8Ow37I7s9e1M7ZPt6u4y7mnusO8H707vhe/M8ATwK/Bi8KnxAPFH8X7xxfH98iPyWfKf8tby/fM081vzcvOZ89D0F/Ru9LX07PUz9Wr1kfXI9g/2RvZt9qT2y/bi9wn3QPeH97735fgc+EP4WviB+Lj43/j1+Rv5Mfk5+UH5Sfld+WX5kvmu+cL51vnz+g76KfpO+nj6qfq7+un6/fsY+zT7SPtp+5P7m/uj+6v7s/u7+8P7y/vT+9v74/vr+/P7+/wo/ET8WPxs/Ij8pPzA/OH9C/0//VH9ff2Y/in+Pf5R/ln+Yf6a/rv+3P7c/twAAAABAAAGDACUACUAUQAGAAIAEAAvAJoAAALND4MAAwACeJytWMtyG1UQvU7CI+GxoigqxUKVYuFQsh2HRxVkpcjyg8hSkOyELEcjWZ5ElsTMKIo3LFjzI2z4Cj6ABR/AR7CgWNF9uu9jNJJjDOWydOfevv04fbrvHRlj3je/mOtm7cZNY0yf/mW8Zm7Tk4yvkcwPOr5udsxPOr5hPjW/6fgNUzF/6/hNs752W8dvmR/XHur4bfPx2q86vmk+WPtDx++Ye2t/6vjdYPzeh79f+0TH75svP/rL/ExW7pt7Ztt8RaNDk5jYpGZiMvo/MTnN1WmUmik+I5pJaDQ2m7RSMyP6q5gOzQ3NKa1leBrQ94CkX9JnnyTrtC8jvRE9JfQpOvu0yrJDMyMtEcmzD9v0t0kebZNPD0yXbHxD/w9KOqyGjQUdq21VFiSfwMdM46mUrP8fFhMgwnM50OPZM+x6QXOMMK+cQnYZ9kM8zwh9Kx3T9xk9R+RzAqQ3CaXIPIeVI3NOawMzR7Ze0GoN1iTCh7TCGeNM5ST3tdmiv0x356W9m2ptmWcZvJqStgRZrtA8W8nBjGfwuoJYz+l7BkZIrIKJlea5CeJKSYK9GJgqPfchNwXG55jhiNnOlCQT3RurloE+R9A9RWbPSCrHGu/qwQ+L9QgR8S7rl+zIgHNamjlxMVQvlbcpnvu0J6bnKvCSihC7VWdnMYIEmZoDp5g+l2M210hZOqZoZmBWfyn2vGeE0TrJ36Vv5mBPcVmmXXy4KrZeex+ahjSXgqk5Mhe7HrIsAmu97NeDgAMcicSSw57tTqxfYu3TzByRT1B3F3EvKrBqgLxM9FOikvEMVTPDTvbWZtPqOUV9TS/kqPTNsWbGa7cVkijKzB/2twekJbe3aOUW1bjgzFGMEN/c4VzkdRW5iTDuKxN8nrrmwDTpu42c8squw2WxPtZdz8hc14gR4xRdfxN9dETfjNuQ1tukrUkZksr1nSJzaJXzIdgIbyxHIpwwF9Wr5XnPoTJTlhTj3YPWfVrtKSOnqNkE/qTQceKqv8yVMgZD7D2FRtsrt1AbxX6whdMhPCM2IM0c2qK9nMMedkaoEo5ti9A7oJOkYVqUqQYhafP/2FVgFpxe4q2waaAVOURNjJU/VUTDq4PgNDlF1QyVLbYehJ9TPSHFAvuY01qCk0f4Fim/p8rnsC96NnUVhzlshZZ8T+W4uQdIr7c6q8jvIPDQdxdZmwDRE5VNsZK4XtNDtQ4K50emp2C4255hVoYZVF4VryyL/020GTjynJ7ioO/kF1SydI2wEph1woBtdL4W7U2CDvJ6Tyo0L/yOXAc6AXdy14vZIvc1Pruk9uyNg7VKD8sQk/TpNnAe4knkxcJhCb3ifSvT/IW1mwEHf6KIX5ytE8f++4j96lYvn7dF73raV0aOfavY5pm0pX75yOaaM5+DbAlfpP9LHvw5HcFPviXJzcBXnj1jpDqzIL6IvJrgJu7lU3dfF0bk7hyz/Pf9r9h5uUPL+ZOpxggs6OnZtXiWFxkqN4gMfrKdDeROeCU9/RV8OsFZMlCOcH89w44NvSP2EdUIu051RrJseeDvEAN3/qSIPkX/zV1+Y0TKHizTzr0n17kc3U6YxbnMgmxaezYC8aKn/LRni43KIiGxD90za5ooskU7RZwHkLc3nZeQnC+9i8303mmr5zPtHJNL1MpVKiW859s3rvBdMNTSoj2M7zpJ3NWeK/hkiPGV3hliYMxYp+7WOTbhTbR8DhZPvkVUYuRH7qRT12clE/UlNbKv1StISgWIneX32vDOvfruMzD2nngWcMSiM1Z0/L07VSx9VEVdNteZy/bnwNXeF8cLeBez+7q4/a7wrKmh451idrnei1iToafJWSx9yDJ85u6sEqNU7xlk7D1gjDt+qoyz51ofTEuRi8z1tPNL8L2qrItxMwzfDmJ6Gx7jdJbePyxw3PZefwKIvv+Gc9iJVyOdFk4UkU0we7X6scz5osCci+825XvSRN9oyncof2+YQoPvlf69dwKURfMM1WVZseqslZpI4NFI+9BY8Vx9loV3Qm+pyMNVFkP9/i7lT7pVp6Z0jO9pv3h7ZuzbtX3zsB3A9wqRixShy0Qmb7/Sb2w8tg+dB7weuzflGGes9SX8Laav1Wj74+vr2r+n7tN7C0u2qdcfQZLfCo/MU2JzB2sHNFehN5oOrTyhpx2a3aGZOyTR1fU7yNRTGrPGtjmGLtHRoU/W/cxUoLuCZ356RPIt0sV7G+Y72GiQti4kO9B9SLP8ltVQOd5Rp5ljeubxnuHfzMRei3bxdxP72Bfx9IjmvdWiVwewaD07pKcO6d/X1RrpPoA+9r8KpHjccn7uqqc1YMSaj/BOeEy7alh5TOMOfbbxjih+7Ki3LcSwS+sSSwMeSCbEozp9PybbLLFHfh3BC7Z0pJJVRMjx7GA/W32EWfGsrVnmsdeyqViKH4z/E2e5i/ib+OXBMqTsRwWZbsJqB1loKPaMWtPxqhNgXwcqnB32b4fG7O+ey8Giv1ZbMQfLOGAt7CGKBvBoQrpLfjdI/sDNCOsOwLa6Iig6hd2S+WaAYR254vx9S1YbypwaECpGIXXA/vsoBOeaftaxt40nn+OW5rDuMtoGl8qoPEXFNSBVQz66DoVdVOmhen4c8Mjm8VhZ2HaeFfG11WLlLtMhRJe1Xcwg41mDdvaw69B4vd7Nq/2e9Q9nNlrDeJx9PAd4HMXVs3unKSq2LMmy3A2hE4y0e2VESNGdTrZB2Ma2cEyKc5LW0qHTnbhiW07vgfRCAgkk9Bo6IaR3CBAIpFc66YH0QpI//+7Mmy2z59ifbvaVeW3evHm7V5CJxL//XowsdzCQ9g93ui9HoXsNEy/H/XgFHsAr0T14FV6N1+C1eB2axOvRjXiDsdToRlPGMnQTep/Rg45Gx6D/oP+iaaPX6EPHol8by41+dBxyjBXGAPomPgIfiZ+Hj8JHo/uMdfgYdD8+1jjCOBIfh45HJ6B/GEcZR+PjjWPRicZxxvHo+cYJ6FvGiegB9CB6Dp+Avo1PNDYaJxuD6CRjCG3Ez0cnG7aRwicZGfQEGkRDRtbgeKNxCj4Z7XP9esg4FT2MB/EQtrCNU2gGp9F3ccYYxVnM8TA+Bb/AOM04HZ+K3m+cgW5GtyAb/R6lUNrYamzDL0QZ40z0FPqXsQO/CL8YvwRljbOM3XgE5xBH3zPORt9HsziPfoBHjVfgAh7Dm/BmvMWYMqYNx9hnzKBhdIoxa5SMc4w59AJ0KvqtUUafw6cZFXw6HsdnoBcaNfQLo240jKax3zhgHDQW0SgqGYfwVrwNb8dn4h1oDu/Eu/AEPgvvRmX8UnQO3mO83XgHqhjnoXl0qXE+KqAx9H/uAlaNdxrvQpvQb4x3GwbajBaM9xjvRTV8Nn4Zfjl+BX4lqhsX4L3oXPwq40LjIlzEk2gLOg3907jYuARPGZ9ApxuXGpehcfRD1DCuQPvRATyNmtgxrjauMa41rkNn4H3GDWgrnjFuRNuMm4yb8axxK3oSbUdnGrcZtxt34JJxJz4HHUQ70KJxF3o1nsNlPI8ruIpegxfQIXyu8WVcw3XcwE2837jbuAcfQJcZ96LXolvRTvQM2oUmjPuM+/FBdJbxAHoa/dt4EC+i84yH0G7jYeM7+BB+NXopep3xffQG9Eb8GvR6/FrjR/h1+PX4DfiN+E3GI8ajxmPG48YTaA8623jSeMp42vgFehl6Ofqd8Uv0Wfxm49f4Lfit+G3oFcbv0S+NZ4xnjT8YfzT+ZPzZ+IvxV+Nv+O34HcY/jefQJejj+Dx8Pn4nfhd+N34Pfi9+H34//gD+IP4QvgB/GH8EX4gvwh/FH8MX40vwx/En8KX4Mnw5vgJfia/CV+Nr8LX4Onw9vgF/Et+Ib8I341vwrfg2fDu+A38K34k/je/Cn8GfxZ/Dn8dfwF/EX8Jfxl/BX8Vfw1/H38B343vwN/G9+D58P/4WfgA/iL+NH8IP4+/g7+Lv4e/jH+Af4h/hH+Of4J/in+Gf40fwo/gx/Dh+Aj+Jn8JP41/gX+Jf4V/j3+Df4t/h3+Nn8LP4D/iP+E/4z/gv+K/4b/jv+B/4n/g5/C/8b/wf/H/4vwQRg5gkQZKkjWBCCCWMtJMO0km6yBKylHSTZaSH9JI+spz0kxVkgKwkq8hqsoasNd9nvt/8AFlnftD8kHmB+WHzI+aF5kXmR82PmRebl5gfNz9hXmpeZl5uXmFeaV5F1ptXm9eY15rXmdebN5ifNG80byIbzFvMW83bzNvNO8xPmXeanzbvMj9jfpYcYX7O/Lz5BfQx84vkSPPL5lfMr5pfM79ufsO827zH/KZ5r3mfeb/5LfMB80Hz2+ZD5sPkeagX9aHlqB+tQANoJVqFVqM15nfJUeRocgw5lhxHjicnkBPJ88lJ5iPmo+Zj5uPmE+aT5lPm0+YvzF+avzJ/bf7G/K35O/P35jPms+YfzD+SjeRkMkiGiEVskiJpkiFZ9Hn0F/RX9Dfzn+Zz5r/Mf6NlaClai9ahG1ASXYGORJejr6G3oy7CESbDqAe9GHWgTvRK9Cr0IvQScgp5Aeomp6Lb0O3khSiXSKCvo2+gO9Cn0J3o04kkug5dj76IvoTaUHuCJGiCJdoTHYnORFdiSWJpojuxLNGT6E30JZYn+hMrEgOJlYlVidWJNYm1iXWJ9YkNiSMSRyaelzgqcXTimMSxieMSxydOSJyYeH7ipMTGxMmJwcRQwkrYiVQincgksgmeGE6cknhB4tTECxMvSryYvAglyIvJS8gIyaG3kDz6AiKJMTJKCuhq9HcyRjaRzWRL4gxyGjmdjCfOJGeQrWQb2U7ORG8lO8hOsgt9mEyQsxIvJ7sTr0zsJS9FS9Cz6A/oLrQBvRcdgdajC9CH0AfRNaiIrkQj6AOJIrqY7CFno4+ii9BV5GXowoSDKLqbvJy8gryS7CWvIkUySabINHHIPjJDZkmJnEPmSJnMkwqpkgVyLqmROmmQJtlPDpCDZJEcIq8mryGvJa8jrydvIG8kbyJvJm8hbyVvI28n7yDnkfPJO8m7yLvJe8h7yfvI+8kHyAfJh8gF5MPkI+RCchH5KPkYuZhcQj5OPkEuJZeRy8kV5EpyFbmaXIM+Q64l15HryQ3kk+RGchO5mdxCbiW3kdvJHeRT5E7yaXIX+Qz5LPkc+Tz5Avki+RL5MvkK+Sr5Gvk6+Qa5m9xDvknuJfeR+8m3yAPkQfJt8hB5mHyHfJd8j3yf/ID8kPyI/Jj8hPyU/Iz8nDxCHiWPkcfJE+RJ8hR5mvyC/JL8ivya/Ib8lvyO/J48Q54lfyB/JH8ifyZ/IX8lfyN/J/8g/yTPkX+Rf5P/kP8j/6WIGtSkCZqkbRRTQilltJ120E7aRZfQpbSbLqM9tJf20eW0n66gA3QlXUVX0zV0LV1H19MN9Ah6JH0ePYoeTY+hx9Lj6PH0BHoifT49iW6kJ9NBOkQtatMUTdMMzVJOh+kp9AX0VPpC+iL6YvoSOkJzNE9HaYGO0U10M91CT6On03F6Bt1Kt9Ht9Ey6g+6ku+gEPYvupi+le+jZ9GX05fQV9JV0L30VLdJJOkWnqUP30Rk6S0v0HDpHy3SeVmgVPQ8x9A70NvROdD5dQO+i56I3J1+TfC3ai36F3kRr6Ku0nnwDbdAm3U8P0IN0kR6ir6avoa+lr6Ovp2+gb6Rvom+mb6FvpW+jb6fvoOfR8+k76bvou+l76Hvp++j76QeSlyYvS16evCJ5ZfKq5NXJa5LXJq9LXp+8IfnJ5I3Jm5I3J29J3pq8LXl78o7kp5J3Jj+dvCv5meRnk59Lfj75heQXk19Kfjn5leRXk19Lfj35jeTdyXuS30zem7wveX/yW8kHkg8mv518KPlw8jvJ7ya/l/x+8gfJHyZ/lPxx8ifJnyZ/lvx58pHko8nHko8nn0g+mXwq+TT9IP0QvYB+mH6EXkgvoh+lH6MX00vox+kn6KX0Mno5vYJeSa+iV9Nr6LX0Ono9vYF+kt5Ib6I301vorfQ2eju9g36K3kk/Te+in6GfpZ+jn6dfoF+kX6Jfpl+hX6Vfo1+n36B303voN+m99D56P/0WfYA+SL9NH6IP0+/Q79Lv0e/TH9Af0h/RH9Of0J/Sn9Gf00foo/Qx+jh9gj5Jn6JP01/QX9Jf0V/T39Df0t/R39Nn6LP0D/SP9E/0z/Qv9K/0b/Tv9B/0n/Q5+i/6b/of+n/0vwwxg5kswZKsjWFGGGWMtbMO1sm62BK2lHWzZayH9bI+tpz1sxVsgK1kq9hqtoatZevYeraBHcGOZM9jR7Gj2THsWHYcO56dwE5kz2cnsY3sZDbIhpjFbJZiaZZhWcbZMDuFvYCdyl7IXsRezF7CRliO5dkoK7AxtoltZlvYaex0Ns7OYFvZNradncl2sJ1sF5tgZ7Hd7KVsDzubvYy9nL2CvZLtZa9iRTbJptg0c9g+NsNmWYmdw+ZYmc2zCquyBXYuq7E6a7Am288OsINskR1ir2avYa9lr2OvZ29gb2RvYm9mb2FvZW9jb2fvYOex89k72bvYu9l72HvZ+9j72QfYB9mH2AXsw+wj7EJ2Efto2zNtz7KPsYvZJezj7BNtf2WXtv2dXcYub3uOXcGuZFeh96CfoTx6N3oU/Qg9jn6Kfo5+jH6CHkGPsavZNRhhg13LrmPXsxvYJzFhN2LGbsIduBN34SV4Ke5mN7NbcC/uwyOTNWe/0yGH4lSz4SyR19PVxqRTrh4A0kytuN9ZKq9nq9W54mTVn9Yolaed7pGpUm2qOb+v7BwUcnpDCCUszCQk9oUQvtgwl5DNRpSA9hGfi4zMF6dq1QoZqc5UK85c+0itVJkRqslIQYwd+UBQe96VUZyacioNPDpVdCe6Q61abOCCcAIXBLK7oLtRaOFGQXej0MqNguZGe8E3gRV8jwqBRwXwqCA9wgUxDW8SlnVsCsR1bpqqzs8Xpaz2Tb7Y5ObJYq1jc8BobjkNbxH+sS2+xi2Bxi2gcQto3CI0dpwWUnV6SBUeFzHB48KizvEQKTnuysdbJX2rpG8N0ROFygzb6mkuO/saeJswqnubHu1tLaK9TY/2tlbR3qYnzTbf4W0+V5t7Wau0i1ehsEtchjlrFaFkibj0J0qKEOxOabqJVmvOl4vNBtkGIdwmQ9ixrV4u1mdlHHbAIMOxIxzJnTJDd4YivTOyqE5tvliZnizX23ZOzR4oJne5S4t3CUl015QzXSqXi527wiIn5EJP+N5MBH5PCL8nAr8nIn5PBH5PRP2eCPyeiPg9AX5PSL/bJrzthydkyu6W3u0OvGO7p0tOzamX6ni3UNSxJ0TcoyzBewSxfU+Qo3ukIrxHij5biG4/20/67i0Cs/e0jeXqVHnr+OiSvEAIcPv46Uu2RsFtUXBnFDw7AuKirI/FUH0sRutjMVQfi1p9LIbqY1FP9WKLVC/qqV5slepFPdWL/kIWg7gVYYGKUB+LQX0sSlc6pkL1cSqoj9OyPjqyMDqyMDq6/U4L+x3dfqeV/Y5eGJ2gMPqBbQ/iSBxwxYEyJUPaVvc2Bp6R5XEmtJNmwjtpJiiPs155nA0YacmllZ16HZfk3in52ku+drN0DimBASUwoCQMoOfA9I5zQsrnQso752ZqjlMpuzu5NIXLshyUZTkoh6tn2auecmt2VIoL1XqjVl2YdXBF8lbCldRxK2nFr6RVWUmr+vJUWyxPVV+eaqvlqerpVfWjUg0qSlVUlGpQUaqRilINKko1WlGqQUWpRipKFYJchUpaDVXSGgwyHLVw2avLqNVDS1AP0dvK1cpMPdnwymdDls+GKp+NsJymTIGm70IzcLYpnG0GzjYjzjYDZ5tRZ5uBs82Is01wtgnlsynKZ1PWuAPSpQOhCnnAL58HZPlcDBEX/fK5KMvnYrB3FqF8LkrRh2T5PORvina52zcWy43ukqyk5/iVdCpaHCtRsBoF61HwUARsP7hxvllulBbKi92V5vxe+NtYLs0U+0IIHzngAc3KtFPbu1CsuXvITXZBaD+w1/0vLpOV+ep0cuSkqcW2nOO9niVeN3mveNM53tC5adZpLjSatYpHGRX0Ld5r+xZZtAWi6k04e1YAZ0tUSfCU6u4CNuSlz3560WM/XchvK5TF67x49ZQkt3mX2yWxJl7r3usuD5OccF/YhJLaVtjnvW4WAvNCP95VF8POWQ9Jd85OiQsyekiQO3ZW9zXqpRlPU8fmYm0arskep9b05o0Ls/BWOYweEloLXiQKXn7X6s60h9ni6d3jOdl2msdCdtWl+1ua4lVYNOqH0KtHcx6w1I3StFN3M8ddGRdecnoxAhYqYbBzwp1YLM3Mes72+IAvbcnmyOyl+ahwsnNWON+xveim0eycjIhX9cWKyMz2Lre5u7smHGuf8LFdYrVFAuY27egSCxVA+0JQ0pPXNin8l0s8I6I3I/2fCafQtKCXRAqVghQqiRSSa9R2SKJECpWCFCoFKSRcwXMyhRyRQo5IIUekkCesbUESRQo5IoUaYjG9BWJNP4UckUIiTnhKplBDplBdplBdpdA0pFA9lEKzoRRahBQqy9ypyGFappCIhBNOIZE8i+JVcJIGpFBJpFBJWDTthzBIoUNaCs1FU8iJplAznELNeArNRlNoSkuhOqTQQiiF6iqFSkEKVYMUagYptD+SQjMRaDoMLZGx9YmHIpBIBQX1BCkRQqnU8OcIU33IiWTvQoSzETFELr4PyiRQYLdKBoXoDSWDjwslReBCMwxN+jp27si1jZQXZovJnNMotm0quicqKSzUS+65mzzbRSUKLnrXrHuV3OIeOm71XFgouneS85PTRfOMprm1ab605N5GlbyYm9tLiR2z1badpZn5YmJXsUkmpKjE9tlSIu/+ba+X2oW+RrVSrXeCJgFQV5O4YJ4iSQe5EpgIMbdvm3dmgMljV+frUmBSMDu9WNq5OD9ZLbcVhZuTnpsznptuLSg3isQBZw95znrEhnC25Dk7J5wtS2crTfNgyW1zhEWJ2my1ve65ua9UKZbbxGWi4XrcBI8XXG+n3D8XbKt6xrKS71YpZPGyMCDJzZCjS5tRh/o0WM6ohuLUXvVD014MQu2EQ+2oUM+p8LBDTq260Xvp9F5KlX1OrVStdbjtjX/dOODjuxqzbmusoM59Va8DUkBpfzCnXjroz6m75afiQ45XCPxJLt6fJG2ZrlTnqateXri6xUW7UCwumacVrlyVks/VJ/mEMnkpNElGT428EjrcLqUmdIgLT4d3ATq8S6lDXnk6BJ+nQ/BJHeJS6hCMQod3JSJZby4EMQoAV5gCvBipaxkjHxJS/UmeYAUw12pBne0U1srreocnGK47hSwFOAen3ESerjYnyw51W8ta2ZV2zLzbS7s9rdudLbhr2/DuMSszZffesTg15zS8hnne7TKPlWw1T9T/4mv3ytHsonvrU+lya2TpkJtvxbJbmrtEK+g29m6Nnix3ndusNvzDqGum6bbzzrzT8MxY4kNCW4+UtlcOom1cGUGFKauiFPfmreiqEaSlgHNtEXBvC57VUVyE1g00735RIJaHEAG2H7BF935G3mUKdI8XJ8dzzzdglUAJH72medINhVuyZUMNUY3wrwFkyxk9Iiemw7FQKDnIwEVQYcpAlOKc2yyWBWFFlOD72QeIc5tuY1CqSpXLYtO7p6puydkrXmV8QojDoWPTA0SPREQWVqJ8ywbqjlsLBc6/knPlBtgrBxmQCCockGWKEkQijAnh+1QIwtN7fWTIRx8XCVrAGsjsL9Zd90r1ub3qQqDXx9BR+nIfHQ5Qr48VN+TS8SB/tNuzMMVPWrk7NAokqNQcooU8DmFDUR8IoSOhWBUiaAkeVhDEKTwhKDDSa+FsND7dEheKcwgRzjKJjmx/iQoi2B9ChNDrAjO8natbtSpE1kisWHFrYtkpFbtUULyHT3OkMllfcNehyyvXdcddLffkriUni7ONpPcghIl4eyFITrtTkk7TPcG9l6mm2xBX3BZ6punOqZTIbG1xf6VUTMyVFpLlYq2ULJdqxQ7vZVezNuc2tW3zxUqx0VYpuii84Cpz2yB3qLbVvDPDfV1wnA7xusVtP4oV9w7FOdcpu/c1lRkHN5oztdJc4kC1smSy6VbwRtXdEJ6tXdOl/aW6648IU4cb59L+Ytk1zVkRnBGed85BV5LH2O6eMN69WXmy4V82FnrK1ZnSVLHsxmkHHB2dHtW9mPLCldg2O89Klama4x1FbaIjancb9VnvGU2x7DZmI7Va9UC7qKDikk1XD1TklZfK4mqJd7XDZ+loLowqpqXyerJYdwTcW64ecGrbKk5BHLE5t5+e61O4M92ou7YJZL9A7vKOaclaF+glAr25WN4nwOUCHHPP7zDTimAuiKyHZO70TvgwO9vnxl5Kby4shKT3CjBqbI/naxTVC6iw+cs9XMx6ETLw2b3S7e73J0XMFrJiVss1kQaIy6hRMlDjSt9SAe7wp0hPffKxPjhSmR5XM9V1MG11jC+gRWRMeNcyJUICBd9x/5svELi06RNDyv+X0BgtLrS97t09lz24Q1zKNo2J6+liba5jsuwW6nypNlV2Og7MlhoOXLv7fwauB7wVkWni8u4OmFaKlWhJCSWuRgklXZTSG1EjcX1RDRK5PBypgNUPdEjmGh/p5ti0W+QiRD9pWhDXBinUihqY0ILa49aehleIxtxGVaI6p6uNhjMtAbLPraXOokO9Mlh3L2Tkc6IodpUqonRJqAegkPTVfgS3xGl+3OO0Tn/eSG2q02f0gCBHa1NdodxyoSAM/ixg7BSpM1oqzrv3mp3CAwD6IisJyOXRpQRsr3sI6Lj+STdW1fkYq9C3pbI7pKlH4La7x5cbLLf614rzPcKSCGqZ4DoLFmWHexi07/NuIaa9Syb4vatl4irMJnfHTvfcr8EayeuVck7VO6Gn8+69jRtqSZHat1RywURYegn0BQealxwwKZwvwOceTXV3lzamZgPkerE0XnAbVbESIqQ6XSCBQdZdRV/jnsnipGslvFv6Ol/0EdLhABHdoGBndFUlcoOfT6OgUGM4Isiqw3BsUCHJlcThXZkZd8//3cESrBHWTejbO0wc17e3JK4NiJENHKZOxLa3pC6T9TNkB2BCpveHeYLo9YcZA7Rb9gVqV60k7pd7an5dU6hlXhMSxciTNYRxxQiFUTERlBATxZRVtVSYfk3M7lJjdrTaWNFcGA+vvSIPNBd2RNbflxx4sb0qWrBu32RALAssDLOEEX0QGxEuJXpFIDqC7/ejFEX7eiPoPnC0heg4vt+PXFx0Cyna8eTjw01JCN8f6l3C6FDPEs6PQLqPCgQHK6tk+hhfnMKsmqweHBUPe0T/Wpne7JemPp3kzVuuI4XGXh8bTB/wcRMLEbk9UYIntTeKEjKX+ThVjNfFMBG5A63InvSVrQhCxwZBOVCR1Ii0naUgPCEGT54krdZJQqKkrQPaZqe4fzEidtxjGtDInlBBWNWCMLEgSCs1ktAmKKtbUWDWBo02saCZoiwdhzYyIIspAxpZFACPsKoFwRXukVZqJFkcPMrqVhSYtUGjhS2NMMgIR0yVS7BKZxBnjyCt1kny1BG0NS5NKIC0dm8+A8mr4kSVQ50B6UBlZRiI2NarUTyj+jScsKZHIYO5vgqVxT7gCfImiZnrFUUcU80F3Ym1LenKjy5FFbL8aLgFIiZoVZyopLQr0sTCiuAyEollEbznRX8UI9fkQKUnghZmdSuU0rdWR0RUrWhB9RQOtMD7IZTp0nofrQV6hOan6+pWVJh5RCuaUh+RHdkVviGrW1FhzxzRiqZkCw7lF0yIWe6twDj09aEEXRFHi3l9Iby/ist1pGD1saq3y3vt5tE61u/ddlWDZqw1lzzbqn5Dt8bnOszG1Yjhjevn2sowENu4YYrauGGcv3EFMrpxBUptXB/wVPibbb2i/I+NG6eHN25QBPxoHG7jasTwxh2XOdUfXCozPT9XRNGR/RzgPed6Ihh/446H03KtjohtXJ2qNq6O90MY3TDRY3OtoodpkY0bo4Y2bowW27jBMRyS7W/cGDW0cWO02MYNb3Xdcu/cnlg4bN8yECUHXcvKKCHUs2wQFKVMuBFtFdZEGDTiqggxYmp/jOTH/nBlaUWc5rczsDwxGwX3mgiDRlwVIUYWqz9G8tcwQEfzbEWcJvByZQ7bpQxEyUGPsjJKCHUoR7kUlRyHXfF1rZiCdV/fihxa/SND9MMs8ZoWLP5qrm1BDNYtLP0wi7OmBYu/DmtbEIOIh+Nz2Liva8UURH99K3JoDTaot6F3eJ/OcKbHytWasLzWkM/o2vY7lWY9OV+s1ZfUF4rTjrzdbJYaXVPl5qQPLZkVcxTYPS2fYfkINjXrTM25YuYGaodRxRZci7yHh9N4qlhzqvvwfKnifXC27ky5oljZvRmt7SzNVHClOe/Uqsx7n2jeEyWf1m12DnrHar8E/DgVyuXSQh0eAY0HT35DCHhSJRBniCcZ8AhuXRjl7hB1e5l3Ko2aEyGH7z6BHBY4Xj3kvU+0PoSK3NTClDUh+sSCRuySDwRdwPNzWfBMC6wNYUBdX+ThIETCRy7Wg0c1y7XnkjJG/cETvVwoxH3+A9bQw6IB/7ZcI/SEH4PCQ2RAhbhWuCj/eUsILx++qrWVQGxt5VOv0FIKRGQpwyiITpd8mqriGTwSVNGLPDNV0VPIcPQGivNuJ1cvVqb3+lfy/XnvbdDQ5xJ6PTj47IN8d1fh1OcbBLZTYOHjDwMAiL/wO7M9Chl6S74V35IoT7dO752ulsv6nIVys77Xe5EsPhjglgkwPKlfvp2sf3RhBbzLrH+uoFt/97k/hAihB8LoSADiqFURVITUJ0nap1YkUn97vFcJCC3f6iguaomihT50oVChN+0jqKhxrSxerSEjH/jRaYGaNTop8na+8D8kaEUIEcYPhPFhCcvDBD+QSwU2cH+dgGHN49J7BDnyGYVVEVREZZcgqQ2xTEE+ZnkY0wIbD4BM+ZCjrfaAIPj53u+D0U/hSEf96C8P4BB2rY6NyFgRokayIoT3Iy3djxsafD7LB8MR7wuwoTwPkMEHnGAdIh/jWqMhI/rX60RtsgxR8FGRFQEcrR8hEeFcCUtuqM/7+KhQoTmMfasOb5pUKb+REq6jbh33vmOyF0ZZlb2PqZw036zLO9VysTJ3klu6vTfcuqarjfqQgpYIyFLgUgnaCu4GOKUQyxQirTA9PiajUL0BKqtwfSEcb8HI4/KycbZsCzYesy0TY8rEZWVayMrEZWVjTNk4E9fjldZZ0jGb0nGb0i1sSsdtSsdsSsdtSsdsyugsmZicTFxOJiYnq7NkYyxcy6eUxpDS45OKxScVj0+qRXxS8fikYvFJxeOTisUnpccnFYtPKh6fVCw+KT0+qVh8Unp80hpDWrclHbMlHbclHbMlrduSjtmS1m3JaAwZXUYmJiOjy8hqDFmdwYdl/bGjZFvLF1vPFzuWL3Y8X+wW+WLH88WO5Ysdzxc7li+2ni92LF/seL7YsXyx9XyxY/li6/lia/li6/lix/LFjueLHcsXW88XO5Yvtp4vtpYvtp4vdixfbD1fbC1fbD1fbC1fUlFySotHSo9HKhaPVDweqVg8Uno8UrF4pPR4pLR4pPR4pGLxSOnxSGnxSOnxSGnxSEfJac2GtG5DOmZDWrchrdmQ1m1IazZkouSMNj+jz89o87NRclYj+6DoX6wI0YrWD0urH5ZeP6xY/bDi9cNqUT+seP2wYvXDitcPK1Y/LL1+WLH6YcXrhxWrH5ZeP6xY/bD0+mFp9cPS64cVqx9WvH5Ysfph6fXDitUPS68fllY/LL1+WLH6Yen1w9Lqh6XXD0urH1a0flha/bD0+mHF6ocVrx9WrH5Yev2wYvXD0uuHpdUPS68fVqx+WHr9sLT6Yen1w9LqhxWtH5ZWPyy9flix+mHp9cPS6oel1w9Lqx9WtH5YWv2w9PphafXDitYPS6sfVrR+2BGiHc0HW8sHW88HO5YPdjwf7Fg+2Ho+2LF8sPV8sLV8sPV8sGP5YOv5YGv5YOv5YGv5YEfzwdbywdbzwY7lg63ng63lg63ng63lgx3NB1vLB1vPB1vLBzuaD7aWD3Y0H1IRYirqf0rzP6X7n4r5n9L9T2n+p3T/U5r/qaj/Kc3/lO5/SvM/FfU/pfmfivqfjhDTUd1pTXda153WdKejutOa7nRUdyZCzETnZrS5mejcbISYjRIDSLwRUyyfJL6rIz+qF0F1Bb8GM1+dXiJ+scT7LQJn2gW795Vq9UajWnGmZsW3ezrVt3pdvklPk/yRDw9i4hvm4kr8Mod31R3+TRIPsST4VRHBKX4bRFyJX0fxrqj3SyUCJZ7/eFft8gvzQqf/yyMe1Bcy10dS7zdRvAvvk8/iZ0s8YGnot1g8uAN+pEXIlz+S4l0uCzu4capYF0UumCZQS3xXJej7K8DlutMC2xv1XE703ZegHwMBdqlASKIfDQEuDUIirYzERc5XcRDQgHywFn/stiywHn5LpT/qj0K3yW9si1epIPoVb9/6k6YWl4UBwZwY37KJNCulwcHBYW8cKowU5JjLwDgIowVjCvjUmIcR+Ec4jCMwwvwRNR/k54E/D/Q80PMgNwdyciAnJ/QMDlmKD/B5LvF2BsacHFNpOQ6PSr5R0DMKckdBzijoG1X2gD95sHMU9BQUP9BHgV4YlHoKI3JMSzusIdAzXJB4PibHjAV0JRf0F0B/AeaNgb0FxQd6C6B3DOaNgT4b7BtT8R+DuGVhHILRhjENfGqEOI0A/4jKhxyMMH9EzQf5eeDPAz0P9DzIzYGcHMjJjUp708Ownoof6Plh8CcL66lGWP8U+JtV6wF6R0HPKMgbBf2jyj7wLw92j4K+guJXeQL0whCsK+RTOgvrBnZnbICVHNBXAH0FsGcM7CsoPtBTAD1jMG8M5Ntgz9hwnzuOZLMp9SffcNGQPsGbZQ1mZZalhgZhHILRglFanRqEcVjxpWBMAx3wg2p+BsYsjBzGYeAbBXgE4DzAORgVrPgKMIK9FuizQJ8F9lrKXuC3wE4L7LTAHgvss8AuS9ml5IN+C+yzwK5BxafsVv4rPWDvIMgfBH2DoGcQ5FjKPtA3CPYPqxHmD4OeEcCPwLwc+J8DfA74c8CfB/oo6C0AX0HBhaWwjurHWgDORWHLp8t5Nsi1Ie42yLUh7mmVJ4oOcbEhTmmYn1Z0sBt2bcoG+2yIcxriaYNfaVgXqNopW8GKD+JjQ1xToC8F+lJgb0rZC/wpsBNOgVQK7IHqkUqBXSlll5IP+lNgXwrsSis+ZbfyX+kBe6H6p6BauD00jCAnpewDfWmVHyrOMG8Y+EcAPwL8OfA7B/gc8OeAPw98o2BvAfgKCh5bCusczQvb1mAtj+yMBmc1mGvwcBROj2r0EQ3W8tQei8Ipzd6UZk9K05/S9KfyGqzpTxU0/UPqZ45E3Oxhuc62PBUHbYizDV2JLbuXQVueNtYgH4RxCEYLRhvGFIxpGDMwqvkcxmE5ZmXeD8rT1B0tGEFeFuRlQV4W5GVBXhbkZYcZ/KDLZFli5A6zspk8jDKTB2U/YA3CiWBnC4AHz6DSFuTOtAZz6S7xAYZ5t2dvFGuLyUKzVpUkNSUHQciBsUqFbAndcQTGPNDBiRwEMQf8I+BMDoIzouYBfgTkycWy4Mh2Rxkce2Ssy+2Dg58FENgheYRYFpR61yFS9L6u31xoF6P4hBETl943v+SV92UveTVZbcwymDBd6fSvJuuOkJuGVEhDKqTdVHCp3vexAU7DmIEx2wbUhRCXTESXOgZjAcZRUt4XlpaDcQTGYVJrhOWAtmHQJguPO3IYh2GE+cMgbzgP4yiMoH94jJQb4gvkbeKVTM/JUVDzY3hKfslZgAUwXvbk7gihGYXQyB7OHcE42FXpUXB+FIwfA3hMwcA/Bvx5MDIPRufBqXyhvbrgVOTvTbBSZX9wFTZzFHwfBd8LYG5BmQtiR0HNKMRiFNzLgzmyRbZysolyRwVzGJVZEPsc6IG8T48U4JvJNWeqAShQOTLGJGmyehAwahLEUp4grhJwZgRiNgIxg02WHoGYweZKw+ZJj6h5KgjAVwC+AvAVgK8AfGPgxBjYMwb2jMHajik+COIYeDRWII1aqTjTXIAgZCQ8XYEgqeCAnBzYk1NrDfoKILcA+ALIrTXkWN4H88COPMQDilM6pxYDFjUP9ucUH/idU4sN9hSAXgD+gsKrXIV5YzBvDOI2BvoysB5p8CsN89Lgdwbmp8GvNMxPg99Qx9MZ0JtR88CutJIPdBvoQ2CvBXoHwe8hsDMF8i2AhxQM9gyCPRbgUyAno+xX+kFPCvhTIC8L62CDXUMwDgJ9EOTCSZbOgn2DSj/Mz0I8BkHfINiRBT4b+IYUv/JH+Q16U0C31KjwINcC+22AbQWDfzbYkVKjWg+wOwP8GeU/rEMW+LIgJ6viCeuagvlwsqctwA/B/EGAB5U8iH9W4SF+g2AXdArpQeAbBBg6iXRW+QV0KFrpIcWv/AX5luJT9oI8C+y2AbYVDP7ZsD4pNYKcDOhLg7y0ooN/NtDh+E6rOjek8hfwKeCzVdwUH8izwA9oEtIZtf9g/dNqfwKcAf602h9q/yh7lH1At0DukFp30J8B/+Wdi5UZGsb7nPli2Ul6L23iqwNJ7xsDbeKLAgS+HyCYs7BJsmDsECTxECT/ENCH1MkDTuYgaXKwWDnYDDkwMgcnV06dXFAUcnBC5aBY5qA45KAI5CCoOVjsHDibyyv56jACOyCJcnmYN6ToIB+KSQ42W25I2a38AXsg2DlL6QG7hgod8JFD7+OHAsdhY3AoKBw2PIdCwaHgcPCNwwJyKBQcCjeHws8hATic+nwYRrCBwwbn0PTwERih8PE8jFzpBTsgUTlsdA5NDYcDj8MBwaE54tDBcVgrDjnB4cDmcMBzKMwc1pZz5XcO9MMIhZJDYeZwYHM4MDlsDA7dEYcOkcMacNgoHBoCDg0Eh8LKISc4V3phHeAA4FAIOTQMHA58DgcXhyaRD8MIucXh4ONw8HJogDgUYA4HNedq3dMwjoIdMEJB51AAOTQoHBoNDgcwh+6PQ0fMIVc5FHgODQiHlo3DwcehOeVc6QU74EDhUIA5NLccGg8OBymHJphDJ89h73I46Dk0IhwaPQ4HF4e9y7nyexj0wwiFmMOByaFh4dDwcCjAfBRGuFPgUAM4NCgcGkMOjSSHws6hCedc6YV9CAcBhwOPQ+PIoQvm0OBwuFngwzBCjeBQSDl05xwaYQ6NC4fGkHO17y0YMzAWwB4Y4YDi0GjwMRihIeRQsDl0/RzuhDjUPg4HPS/ACHelHA5wnoeRK71gBxyQHA5mDjc1PAcjNHAcbo443MFxqIkcGkhegBEafA4HMYfazrnyewT0wwiNC4dGikODyuHunEPDyeHuiMMdIofaz+Fg43BDwOEGgkMjxKHWc670wjpA48Sh8eFww8DhqQGHxpHDTSIfhhHONA4HMofGm8MNEIeDmUMDz7la9xSMebADRmhkODRMHG5QODyV4NCIcLj743BHzOFM5dCAc7gB4SMwQgPH4WaUc6UX7IAGi0PDxuHmlsMNCYcbAQ43wRyeBHA4wzk02hxuNDjc6HFopHgeRq785qAfRmikODTYHG5IONwIcWiA+CiM8KSAwxnMoVHjcGPI4UaSQ+PFoXfgXOmFcxhuQDg0wBxuHDncBXO48eHwsIAPwwhnPocbHA535xyeNnFoEDncMHL5SG7QzsKjPFlfBy14hGfBI1QL3oCy4RG/DY/8bXjUb8OjfRve4rDheZENbyHY8NaBDW+52PAWiA1vUdjwloVt8U7QI96JBSAbBnJhwAoD+TCQCQMjYSAVAoaktA7/PeCpxe7QtSD+PzXnEgl4nG2KaVOSYRSG3xcEyczMCnlluUFBhCcU4QkEocilRSpEfJAHbLOF9oX2/a2ZZvyi4ww/wy/Qp/oRfOgXnWAGm2qcM3Of61znztDXU4Qv6Sr0NOFzivApWcfHJOHDLOF9MoF3CcLbmTrezBBexwiv4rt4GSe8OEl4HkmjFtHxLEJ4GiU84YTH4RoehQkPwy08mCbcnyLcm2rh7mQd1UnCnUkdt0M6boUIN9t7I1TEjRBw/QThGiviKiNcYTWsBwiVIKEc1CEDUyhNENb8LRT9BOEjrI4TCr40Vrw68l7CsreInJfjsteNS2OEi6N1ZEcJSx7CBU8O5z0hnPO4cNZNWHRzLLgI86DML8xBxxknIeMgnHboSKeqSCWXMJusYSZWRzzGwaM5RCOLmA7nwAIcwYCOgNOurU/Yh+DXRrT18ZZP+Ext8GqEMe0YRj06PFaC22YFdl3CNUxwVh3C0XZ2rmkVW8q6URnp0HCHjmsL1rXyUT4kjvBBMSQH5SHeL0y8R/TLHnk4MSAO8j7Ry81C5YoYkH3SLBV5gFuEkRuERRrkoGLMZEzqT3VHWWXZH720km1YlisNdbPhK3Qyky83zJsNRZQrpaaqbstvW1uKcy7b2CmUvhuVNsqmwTCfLzV7jNtyTmEKY0zpDuvyXqp/Tfet7rU7xP7xXWJ/7v/UPnLfFrP9BvOls3wAAA==") format("woff2");}';class Random{constructor(e){this.seed=e}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function getDefaultExportFromCjs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var lzString={exports:{}};lzString.exports,function(e){var t=function(){var e=String.fromCharCode,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",i={};function n(e,t){if(!i[e]){i[e]={};for(var A=0;A>>8,A[2*i+1]=r%256}return A},decompressFromUint8Array:function(t){if(null==t)return a.decompress(t);for(var A=new Array(t.length/2),i=0,n=A.length;i>=1}else{for(n=1,i=0;i>=1}0==--d&&(d=Math.pow(2,u),u++),delete s[c]}else for(n=r[c],i=0;i>=1;0==--d&&(d=Math.pow(2,u),u++),r[l]=h++,c=String(o)}if(""!==c){if(Object.prototype.hasOwnProperty.call(s,c)){if(c.charCodeAt(0)<256){for(i=0;i>=1}else{for(n=1,i=0;i>=1}0==--d&&(d=Math.pow(2,u),u++),delete s[c]}else for(n=r[c],i=0;i>=1;0==--d&&(d=Math.pow(2,u),u++)}for(n=2,i=0;i>=1;for(;;){if(p<<=1,m==t-1){g.push(A(p));break}m++}return g.join("")},decompress:function(e){return null==e?"":""==e?null:a._decompress(e.length,32768,(function(t){return e.charCodeAt(t)}))},_decompress:function(t,A,i){var n,a,r,s,o,l,c,d=[],h=4,u=4,g=3,p="",m=[],f={val:i(0),position:A,index:1};for(n=0;n<3;n+=1)d[n]=n;for(r=0,o=Math.pow(2,2),l=1;l!=o;)s=f.val&f.position,f.position>>=1,0==f.position&&(f.position=A,f.val=i(f.index++)),r|=(s>0?1:0)*l,l<<=1;switch(r){case 0:for(r=0,o=Math.pow(2,8),l=1;l!=o;)s=f.val&f.position,f.position>>=1,0==f.position&&(f.position=A,f.val=i(f.index++)),r|=(s>0?1:0)*l,l<<=1;c=e(r);break;case 1:for(r=0,o=Math.pow(2,16),l=1;l!=o;)s=f.val&f.position,f.position>>=1,0==f.position&&(f.position=A,f.val=i(f.index++)),r|=(s>0?1:0)*l,l<<=1;c=e(r);break;case 2:return""}for(d[3]=c,a=c,m.push(c);;){if(f.index>t)return"";for(r=0,o=Math.pow(2,g),l=1;l!=o;)s=f.val&f.position,f.position>>=1,0==f.position&&(f.position=A,f.val=i(f.index++)),r|=(s>0?1:0)*l,l<<=1;switch(c=r){case 0:for(r=0,o=Math.pow(2,8),l=1;l!=o;)s=f.val&f.position,f.position>>=1,0==f.position&&(f.position=A,f.val=i(f.index++)),r|=(s>0?1:0)*l,l<<=1;d[u++]=e(r),c=u-1,h--;break;case 1:for(r=0,o=Math.pow(2,16),l=1;l!=o;)s=f.val&f.position,f.position>>=1,0==f.position&&(f.position=A,f.val=i(f.index++)),r|=(s>0?1:0)*l,l<<=1;d[u++]=e(r),c=u-1,h--;break;case 2:return m.join("")}if(0==h&&(h=Math.pow(2,g),g++),d[c])p=d[c];else{if(c!==u)return null;p=a+a.charAt(0)}m.push(p),d[u++]=a+p.charAt(0),a=p,0==--h&&(h=Math.pow(2,g),g++)}}};return a}();null!=e?e.exports=t:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",(function(){return t}))}(lzString);var lzStringExports=lzString.exports;function splitFolderAndFilename(e){const t=e.lastIndexOf("/"),A=-1==t?e:e.substring(t+1);return{folderpath:obsidian_module.normalizePath(e.substring(0,t)),filename:A,basename:A.replace(/\.[^/.]+$/,"")}}const download=(e,t,A)=>{const i=document.createElement("a");i.setAttribute("href",(e?`${e},`:"")+t),i.setAttribute("download",A),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)};function getIMGFilename(e,t){return`${e.substring(0,e.lastIndexOf("."))}.${t}`}function getNewUniqueFilepath(e,t,A){let i=obsidian_module.normalizePath(`${A}/${t}`),n=e.getAbstractFileByPath(i),a=0;const r=t.endsWith(".excalidraw.md")?".excalidraw.md":t.slice(t.lastIndexOf("."));for(;n;)i=obsidian_module.normalizePath(`${A}/${t.slice(0,t.lastIndexOf(r))}_${a}${r}`),a++,n=e.getAbstractFileByPath(i);return i}function getDrawingFilename(e){return e.drawingFilenamePrefix+(""!==e.drawingFilenameDateTime?window.moment().format(e.drawingFilenameDateTime):"")+(e.compatibilityMode?".excalidraw":e.useExcalidrawExtension?".excalidraw.md":".md")}function getEmbedFilename(e,t){return((t.drawingEmbedPrefixWithFilename?e:"")+t.drawingFilnameEmbedPostfix+(""!==t.drawingFilenameDateTime?window.moment().format(t.drawingFilenameDateTime):"")+(t.compatibilityMode?".excalidraw":t.useExcalidrawExtension?".excalidraw.md":".md")).trim()}async function checkAndCreateFolder(e){const t=app.vault;e=obsidian_module.normalizePath(e);const A=t.getAbstractFileByPathInsensitive(e);A&&A instanceof obsidian_module.TFolder||(A&&A instanceof obsidian_module.TFile&&new obsidian_module.Notice(`The folder cannot be created because it already exists as a file: ${e}.`),await t.createFolder(e))}const getURLImageExtension=e=>{const t=e.split("?")[0];return t.substring(t.lastIndexOf(".")+1)},getMimeType=e=>{switch(e){case"png":return"image/png";case"jpeg":case"jpg":return"image/jpeg";case"gif":return"image/gif";case"webp":return"image/webp";case"bmp":return"image/bmp";case"ico":return"image/x-icon";case"svg":case"md":return"image/svg+xml";default:return"application/octet-stream"}},getFileFromURL=async(e,t,A=3e3)=>{try{const t=await Promise.race([fetch(e),new Promise((e=>setTimeout((()=>e(null)),A)))]);if(!t)throw new obsidian_module.Notice(`URL did not load within the timeout period of ${A}ms.\n\nTry force-saving again in a few seconds.\n\n${e}`,8e3),new Error(`URL did not load within the timeout period of ${A}ms`);const i=await t.arrayBuffer();return{status:t.status,headers:Object.fromEntries(t.headers.entries()),arrayBuffer:i,json:null,text:null}}catch(t){return void errorlog({where:getFileFromURL,message:t.message,url:e})}},getFileFromURLFallback=async(e,t,A=3e3)=>{try{return await Promise.race([(async()=>new Promise((e=>setTimeout((()=>e(null)),A))))(),obsidian_module.requestUrl({url:e,method:"get",contentType:t,throw:!1})])}catch(t){return void errorlog({where:getFileFromURL,message:`URL did not load within timeout period of ${A}ms`,url:e})}},getDataURLFromURL=async(e,t,A=3e3)=>{let i=await getFileFromURL(e,t,A);return i&&200!==i.status&&(i=await getFileFromURLFallback(e,t,A)),i&&200===i.status?await getDataURL(i.arrayBuffer,t):e},blobToBase64=async e=>{const t=await e.arrayBuffer(),A=new Uint8Array(t);for(var i="",n=A.byteLength,a=0;a(void 0===window.pdfjsLib&&await obsidian_module.loadPdfJs(),await window.pdfjsLib.getDocument(app.vault.getResourcePath(e)).promise),labelCTRL=()=>DEVICE.isIOS||DEVICE.isMacOS?"CMD":"CTRL",labelALT=()=>DEVICE.isIOS||DEVICE.isMacOS?"OPT":"ALT",labelMETA=()=>DEVICE.isIOS||DEVICE.isMacOS?"CTRL":DEVICE.isWindows?"WIN":"META",labelSHIFT=()=>"SHIFT",isCTRL=e=>DEVICE.isIOS||DEVICE.isMacOS?e.metaKey:e.ctrlKey,isALT=e=>e.altKey,isMETA=e=>DEVICE.isIOS||DEVICE.isMacOS?e.ctrlKey:e.metaKey,isSHIFT=e=>e.shiftKey,setCTRL=(e,t)=>(DEVICE.isIOS||DEVICE.isMacOS?e.metaKey=t:e.ctrlKey=t,e),setALT=(e,t)=>(e.altKey=t,e),setMETA=(e,t)=>(DEVICE.isIOS||DEVICE.isMacOS?e.ctrlKey=t:e.metaKey=t,e),setSHIFT=(e,t)=>(e.shiftKey=t,e),mdPropModifier=e=>!isSHIFT(e)&&isCTRL(e)&&!isALT(e)&&isMETA(e),scaleToFullsizeModifier=e=>isSHIFT(e)&&!isCTRL(e)&&!isALT(e)&&isMETA(e)||!isSHIFT(e)&&isCTRL(e)&&isALT(e)&&!isMETA(e),linkClickModifierType=e=>isCTRL(e)&&!isALT(e)&&isSHIFT(e)&&!isMETA(e)?"active-pane":!isCTRL(e)||isALT(e)||isSHIFT(e)||isMETA(e)?isCTRL(e)&&isALT(e)&&!isSHIFT(e)&&!isMETA(e)?"new-pane":DEVICE.isDesktop&&isCTRL(e)&&isALT(e)&&isSHIFT(e)&&!isMETA(e)?"popout-window":isCTRL(e)&&isALT(e)&&isSHIFT(e)&&!isMETA(e)?"new-tab":mdPropModifier(e)?"md-properties":"active-pane":"new-tab",externalDragModifierType=e=>DEVICE.isWindows&&isSHIFT(e)&&isCTRL(e)&&!isALT(e)&&!isMETA(e)?"embeddable":!DEVICE.isMacOS||isSHIFT(e)||isCTRL(e)||!isALT(e)||isMETA(e)?!DEVICE.isWindows||isSHIFT(e)||!isCTRL(e)||isALT(e)||isMETA(e)?DEVICE.isMacOS&&isSHIFT(e)&&!isCTRL(e)&&isALT(e)&&!isMETA(e)?"insert-link":isSHIFT(e)&&!isCTRL(e)&&!isALT(e)&&!isMETA(e)||DEVICE.isWindows&&!isSHIFT(e)&&!isCTRL(e)&&isALT(e)&&!isMETA(e)?"image-import":"image-url":"insert-link":"embeddable",internalDragModifierType=e=>(DEVICE.isIOS||DEVICE.isMacOS||!isSHIFT(e)||!isCTRL(e)||isALT(e)||isMETA(e))&&(!DEVICE.isIOS&&!DEVICE.isMacOS||isSHIFT(e)||isCTRL(e)||isALT(e)||!isMETA(e))?(!isSHIFT(e)||isCTRL(e)||isALT(e)||isMETA(e))&&(isSHIFT(e)||!isCTRL(e)||isALT(e)||isMETA(e))?scaleToFullsizeModifier(e)?"image-fullsize":"link":"image":"embeddable",emulateCTRLClickForLinks=e=>({shiftKey:e.shiftKey,ctrlKey:e.ctrlKey||!(DEVICE.isIOS||DEVICE.isMacOS),metaKey:e.metaKey||DEVICE.isIOS||DEVICE.isMacOS,altKey:e.altKey}),emulateKeysForLinkClick=e=>{const t={shiftKey:!1,ctrlKey:!1,metaKey:!1,altKey:!1};if(!e)return t;switch(e){case"active-pane":setCTRL(t,!0),setSHIFT(t,!0);break;case"new-pane":setCTRL(t,!0),setALT(t,!0);break;case"popout-window":setCTRL(t,!0),setALT(t,!0),setSHIFT(t,!0);break;case"new-tab":setCTRL(t,!0);break;case"md-properties":setCTRL(t,!0),setMETA(t,!0)}return t},anyModifierKeysPressed=e=>e.shiftKey||e.ctrlKey||e.metaKey||e.altKey,getParentOfClass=(e,t)=>{var A;let i=e.parentElement;for(;i&&!(i instanceof window.HTMLBodyElement)&&!i.classList.contains(t);)i=i.parentElement;return(null===(A=null==i?void 0:i.classList)||void 0===A?void 0:A.contains(t))?i:null},getLeaf=(e,t,A)=>{switch(linkClickModifierType(A)){case"active-pane":return t;case"new-tab":default:return(()=>{if(!e.settings.openInMainWorkspace)return app.workspace.getLeaf("tab");const[A,i]=getLeafLoc(t);return"main"===A?app.workspace.getLeaf("tab"):getNewOrAdjacentLeaf(e,t)})();case"new-pane":return getNewOrAdjacentLeaf(e,t);case"popout-window":return app.workspace.openPopoutLeaf()}},getLeafLoc=e=>{const t=e.id,A=app.workspace.getLayout(),i=e=>e.children.filter((e=>"leaf"!==e.type)).map((e=>i(e))).flat().concat(e.children.filter((e=>"leaf"===e.type)).map((e=>e.id))),n=i(A.main);return[A.main&&n.contains(t)?"main":A.floating&&i(A.floating).contains(t)?"popout":A.left&&i(A.left).contains(t)?"left":A.right&&i(A.right).contains(t)?"right":"hover",n]},getNewOrAdjacentLeaf=(e,t)=>{const[A,i]=getLeafLoc(t),n=e=>{var A;let n=app.workspace.getMostRecentLeaf();return n&&n!==t&&(null===(A=n.view)||void 0===A?void 0:A.containerEl.ownerDocument)===document||(n=null,i.forEach((A=>{var i;const a=app.workspace.getLeafById(A);n||!(null===(i=a.view)||void 0===i?void 0:i.navigation)||t===a||e&&(null==a?void 0:a.parent)===(null==t?void 0:t.parent)||(n=a)}))),n};if(e.settings.openInMainWorkspace||["main","left","right"].contains(A)){if(!e.settings.openInAdjacentPane){if("main"===A)return app.workspace.createLeafBySplit(t);const e=n();return e?"empty"===e.view.getViewType()?e:app.workspace.createLeafBySplit(e):app.workspace.getLeaf(!0)}const i=n(!0);return null!=i?i:app.workspace.createLeafBySplit(t)}if(!e.settings.openInAdjacentPane)return app.workspace.createLeafBySplit(t);if("hover"===A){const A=new Set;return app.workspace.iterateAllLeaves((e=>{e!==t&&t.containerEl.parentElement===e.containerEl.parentElement&&A.add(e)})),0===A.size?e.app.workspace.createLeafBySplit(t):Array.from(A)[0]}if("popout"===A){const e=new Set;return app.workspace.iterateAllLeaves((A=>{A!==t&&A.view.navigation&&A.view.containerEl.ownerDocument===t.view.containerEl.ownerDocument&&e.add(A)})),0===e.size?app.workspace.createLeafBySplit(t):Array.from(e)[0]}return e.app.workspace.createLeafBySplit(t)},getAttachmentsFolderAndFilePath=async(e,t,A)=>{let i=e.vault.getConfig("attachmentFolderPath");if(i&&i.startsWith("./")){const e=`${splitFolderAndFilename(t).folderpath}/`;i=obsidian_module.normalizePath(e+i.substring(2))}return i&&"/"!==i||(i=""),await checkAndCreateFolder(i),{folder:i,filepath:obsidian_module.normalizePath(""===i?A:`${i}/${A}`)}},isObsidianThemeDark=()=>document.body.classList.contains("theme-dark"),getContainerForDocument=e=>{if(e!==document&&app.workspace.floatingSplit)for(const t of app.workspace.floatingSplit.children)if(t.doc===e)return t;return app.workspace.rootSplit},cleanSectionHeading=e=>e?e.replace(REG_SECTION_REF_CLEAN,"").replace(/\s+/g," ").trim():e,cleanBlockRef=e=>e?e.replace(REG_BLOCK_REF_CLEAN,"").replace(/\s+/g," ").trim():e,getAllWindowDocuments=e=>{const t=new Set;return t.add(document),e.workspace.iterateAllLeaves((e=>{e.view.containerEl.ownerDocument!==document&&t.add(e.view.containerEl.ownerDocument)})),Array.from(t)},obsidianPDFQuoteWithRef=e=>{const t=/^> (.*)\n\n\[\[([^|\]]*)\|[^\]]*]]$/gm.exec(e);return t?{quote:t[1],link:t[2]}:null},useDefaultExcalidrawFrame=e=>!e.link.startsWith("["),patchMobileView=e=>{if(DEVICE.isDesktop)return;console.log("patching mobile view");const t=getParentOfClass(e.containerEl,"mod-top");t&&(t.hasClass("mod-visible")||t.addClass("mod-visible"))},processLinkText=(e,t)=>{let A=null;if(e.search("#")>-1){const i=getLinkParts(e,t.file);A=`#${i.isBlockRef?"^":""}${i.ref}`,e=i.path}return e.match(REG_LINKINDEX_INVALIDCHARS)?{subpath:A,file:null}:{subpath:A,file:app.metadataCache.getFirstLinkpathDest(e,t.file.path)}},generateEmbeddableLink=(e,t)=>e;let versionUpdateChecked=!1;const checkExcalidrawVersion=async e=>{if(!versionUpdateChecked){versionUpdateChecked=!0;try{const e=async()=>JSON.parse(await obsidian_module.request({url:"https://api.github.com/repos/zsviczian/obsidian-excalidraw-plugin/releases?per_page=5&page=1"})),t=(await e()).map((e=>({version:e.tag_name,published:new Date(e.published_at)}))).filter((e=>e.version.match(/^\d+\.\d+\.\d+$/))).sort(((e,t)=>t.published-e.published))[0].version;isVersionNewerThanOther(t,PLUGIN_VERSION)&&new obsidian_module.Notice(`A newer version of Excalidraw is available in Community Plugins.\n\nYou are using ${PLUGIN_VERSION}.\nThe latest is ${t}`)}catch(e){errorlog({where:"Utils/checkExcalidrawVersion",error:e})}setTimeout((()=>versionUpdateChecked=!1),288e5)}};function wrapTextAtCharLength(e,t,A=!1,i=0){if(!t)return e;let n="";if(A){for(const A of e.split("\n")){const e=A.match(new RegExp(`(.){1,${t}}`,"g"));n+=e?`${e.join("\n")}\n`:"\n"}return n.replace(/\n$/,"")}const a=new RegExp(`(.{1,${t}})(\\s+|$\\n?)|([^\\s]{1,${t+i}})(\\s+|$\\n?)?`,"gm"),r=e.matchAll(a);let s;for(;!(s=r.next()).done;){n+=s.value[1]?s.value[1].trimEnd():s.value[3].trimEnd();const e=(s.value[2]?s.value[2].split("\n").length-1:0)+(s.value[4]?s.value[4].split("\n").length-1:0);n+="\n".repeat(e),0===e&&(n+="\n")}return n.replace(/\n$/,"")}new Random(Date.now());const rotate$1=(e,t,A,i,n)=>[(e-A)*Math.cos(n)-(t-i)*Math.sin(n)+A,(e-A)*Math.sin(n)+(t-i)*Math.cos(n)+i],rotatedDimensions=e=>{if(0===e.angle)return[e.x,e.y,e.width,e.height];const t=e.x+e.width/2,A=e.y+e.height/2,[i,n]=rotate$1(e.x,e.y,t,A,e.angle),[a,r]=rotate$1(e.x+e.width,e.y+e.height,t,A,e.angle);return[inew Promise(((A,i)=>{const n=new FileReader;n.onload=()=>{const e=n.result;A(e)},n.onerror=e=>i(e),n.readAsDataURL(new Blob([new Uint8Array(e)],{type:t}))})),getFontDataURL=async(e,t,A,i)=>{let n="",a="",r="";const s=e.metadataCache.getFirstLinkpathDest(t,A);if(s){const t=await e.vault.readBinary(s),A=s.extension.startsWith("woff")?"application/font-woff":"font/truetype";a=null!=i?i:s.basename,r=await getDataURL(t,A),n=` @font-face {font-family: "${a}";src: url("${r}")}`;const o=n.split(";base64,",2);n=`${o[0]};charset=utf-8;base64,${o[1]}`}return{fontDef:n,fontName:a,dataURL:r}},svgToBase64=e=>`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(e.replaceAll(" "," "))))}`,getBinaryFileFromDataURL=async e=>{if(!e)return null;if(e.match(/^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i)){const t=e,A=getURLImageExtension(t),i=getMimeType(A);e=await getDataURLFromURL(t,i)}const t=e.matchAll(/base64,(.*)/g).next();if(!t.value)return null;const A=window.atob(t.value[1]),i=A.length,n=new Uint8Array(i);for(let e=0;e{var i;let n=e.elements;n.some((e=>"embeddable"===e.type))&&(n=JSON.parse(JSON.stringify(n)),n.filter((e=>"embeddable"===e.type)).forEach((t=>{var A,i;t.link=(i=t.link,null===(A=e.appState)||void 0===A||A.theme,i)})));try{return await exportToSvg({elements:n,appState:Object.assign({exportBackground:t.withBackground,exportWithDarkMode:!!t.withTheme&&"light"!=(null===(i=e.appState)||void 0===i?void 0:i.theme)},e.appState),files:e.files,exportPadding:A})}catch(e){return null}};function filterFiles(e){let t={};return Object.entries(e).forEach((([e,A])=>{A.dataURL.startsWith("http")||(t[e]=A)})),t}const getPNG=async(e,t,A,i=1)=>{var n;try{return await exportToBlob({elements:e.elements,appState:Object.assign({exportBackground:t.withBackground,exportWithDarkMode:!!t.withTheme&&"light"!=(null===(n=e.appState)||void 0===n?void 0:n.theme)},e.appState),files:filterFiles(e.files),exportPadding:A,mimeType:"image/png",getDimensions:(e,t)=>({width:e*i,height:t*i,scale:i})})}catch(e){return errorlog({where:"Utils.getPNG",error:e}),null}},getQuickImagePreview=async(e,t,A)=>{if(!e.settings.displayExportedImageIfAvailable)return null;const i=getIMGFilename(t,A),n=e.app.vault.getAbstractFileByPath(i);return n&&n instanceof obsidian_module.TFile?"png"===A?await e.app.vault.readBinary(n):await e.app.vault.read(n):null},embedFontsInSVG=(e,t,A=!1)=>{const i=!A&&null!=e.querySelector("text[font-family^='Virgil']"),n=!A&&null!=e.querySelector("text[font-family^='Cascadia']"),a=null!=e.querySelector("text[font-family^='LocalFont']"),r=e.querySelector("defs");return r&&(n||i||a)&&(r.innerHTML=``),e},getImageSize=async e=>new Promise(((t,A)=>{const i=new Image;i.onload=()=>{t({height:i.naturalHeight,width:i.naturalWidth})},i.onerror=A,i.src=e})),addAppendUpdateCustomData=(e,t)=>{if(!t)return e;e.customData||(e.customData={});for(const A in t)void 0!==t[A]&&(e.customData[A]=t[A]);return e},scaleLoadedImage=(e,t)=>{let A=!1;if(!t||!e)return{dirty:A,scene:e};for(const i of t){const[t,n]=[i.size.width,i.size.height],a=i.size.width/i.size.height;e.elements.filter((e=>"image"===e.type&&e.fileId===i.id)).forEach((e=>{var r,s;const[o,l]=[e.width,e.height];if(((null===(r=e.customData)||void 0===r?void 0:r.isAnchored)&&i.shouldScale||!(null===(s=e.customData)||void 0===s?void 0:s.isAnchored)&&!i.shouldScale)&&(addAppendUpdateCustomData(e,i.shouldScale?{isAnchored:!1}:{isAnchored:!0}),A=!0),i.shouldScale){if(a!=o/l){A=!0;const i=Math.sqrt(o*l*n/t),a=Math.sqrt(o*l*t/n);e.height=i,e.width=a,e.y+=(l-i)/2,e.x+=(o-a)/2}}else o===t&&l===n||(A=!0,e.height=n,e.width=t,e.y+=(l-n)/2,e.x+=(o-t)/2)}))}return{dirty:A,scene:e}},setDocLeftHandedMode=(e,t)=>{const A=t.createElement("style");A.id="excalidraw-left-handed",A.textContent=".excalidraw .App-bottom-bar{justify-content:flex-end;}";const i=t.getElementById(A.id);i&&t.head.removeChild(i),e&&t.head.appendChild(A)},setLeftHandedMode=e=>{const t=new Set;app.workspace.iterateAllLeaves((A=>{const i=app.isMobile?document:A.view.containerEl.ownerDocument;i&&(t.has(i)||(t.add(i),setDocLeftHandedMode(e,i)))}))},getLinkParts=(e,t)=>{var A,i,n;const a=e.match(/(^[^#\|]*)#?(\^)?([^\|]*)?\|?(\d*)x?(\d*)/),r="^"===a[2];return{original:e,path:t&&""===a[1]?t.path:a[1],isBlockRef:r,ref:(null===(A=a[3])||void 0===A?void 0:A.match(/^page=\d*$/i))?a[3]:r?cleanBlockRef(a[3]):cleanSectionHeading(a[3]),width:a[4]?parseInt(a[4]):void 0,height:a[5]?parseInt(a[5]):void 0,page:parseInt(null===(n=null===(i=a[3])||void 0===i?void 0:i.match(/page=(\d*)/))||void 0===n?void 0:n[1])}},compress=e=>lzStringExports.compressToBase64(e).replace(/(.{64})/g,"$1\n\n"),decompress=e=>lzStringExports.decompressFromBase64(e.replaceAll("\n","").replaceAll("\r","")),hasExportTheme=(e,t)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-export-dark"])return!0}return!1},getExportTheme=(e,t,A)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-export-dark"])return A.frontmatter["excalidraw-export-dark"]?"dark":"light"}return e.settings.exportWithTheme?A:"light"},hasExportBackground=(e,t)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-export-transparent"])return!0}return!1},getWithBackground=(e,t)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-export-transparent"])return!A.frontmatter["excalidraw-export-transparent"]}return e.settings.exportWithBackground},getExportPadding=(e,t)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if(!(null==A?void 0:A.frontmatter))return e.settings.exportPaddingSVG;if(null!=A.frontmatter["excalidraw-export-padding"]){const e=parseInt(A.frontmatter["excalidraw-export-padding"]);if(!isNaN(e))return e}if(null!=A.frontmatter["excalidraw-export-svgpadding"]){const e=parseInt(A.frontmatter["excalidraw-export-svgpadding"]);if(!isNaN(e))return e}}return e.settings.exportPaddingSVG},getPNGScale=(e,t)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-export-pngscale"]){const e=parseFloat(A.frontmatter["excalidraw-export-pngscale"]);if(!isNaN(e)&&e>0)return e}}return e.settings.pngExportScale},isVersionNewerThanOther=(e,t)=>{const A=e.match(/(\d*)\.(\d*)\.(\d*)/),i=t.match(/(\d*)\.(\d*)\.(\d*)/);return Boolean(A&&4===A.length&&i&&4===i.length&&!(isNaN(parseInt(A[1]))||isNaN(parseInt(A[2]))||isNaN(parseInt(A[3])))&&!(isNaN(parseInt(i[1]))||isNaN(parseInt(i[2]))||isNaN(parseInt(i[3])))&&(parseInt(A[1])>parseInt(i[1])||parseInt(A[1])>=parseInt(i[1])&&parseInt(A[2])>parseInt(i[2])||parseInt(A[1])>=parseInt(i[1])&&parseInt(A[2])>=parseInt(i[2])&&parseInt(A[3])>parseInt(i[3])))},getEmbeddedFilenameParts=e=>{const t=null==e?void 0:e.match(/([^#\^]*)((#\^)(group=|area=|frame=|taskbone)?([^\|]*)|(#)(group=|area=|frame=|taskbone)?([^\^\|]*))(.*)/);return t?{filepath:t[1],hasBlockref:Boolean(t[3]),hasGroupref:"group="===t[4]||"group="===t[7],hasTaskbone:"taskbone"===t[4]||"taskbone"===t[7],hasArearef:"area="===t[4]||"area="===t[7],hasFrameref:"frame="===t[4]||"frame="===t[7],blockref:t[5],hasSectionref:Boolean(t[6]),sectionref:t[8],linkpartReference:t[2],linkpartAlias:t[9]}:{filepath:e,hasBlockref:!1,hasGroupref:!1,hasTaskbone:!1,hasArearef:!1,hasFrameref:!1,blockref:"",hasSectionref:!1,sectionref:"",linkpartReference:"",linkpartAlias:""}},fragWithHTML=e=>createFragment((t=>t.createDiv().innerHTML=e)),errorlog=e=>{console.error(Object.assign({plugin:"Excalidraw"},e))},sleep$1=async e=>new Promise((t=>setTimeout(t,e))),log=console.log.bind(window.console),debug=console.log.bind(window.console),getContainerElement=(e,t)=>{var A;return e&&e.containerId&&null!==(A=t.elements.filter((t=>t.id===e.containerId))[0])&&void 0!==A?A:null},updateFrontmatterInString=(e,t)=>{if(!e)return e;for(const A of t){const t=new RegExp(`${A[0]}:\\s.*\\n`,"g");e=e.match(t)?e.replaceAll(t,`${A[0]}: ${A[1]}\n`):e.replace(/^---\n/,`---\n${A[0]}: ${A[1]}\n`)}return e},isHyperlink=e=>e&&!e.includes("\n")&&!e.includes("\r")&&e.match(/^https?:(\d*)?\/\/[^\s]*$/),isContainer=e=>{var t;return"arrow"!==e.type&&(null===(t=e.boundElements)||void 0===t?void 0:t.map((e=>e.type)).includes("text"))},hyperlinkIsImage=e=>{isHyperlink(e);const t=e.split("?")[0];return IMAGE_TYPES.contains(t.substring(t.lastIndexOf(".")+1))},hyperlinkIsYouTubeLink=e=>isHyperlink(e)&&(e.startsWith("https://youtu.be")||e.startsWith("https://www.youtube.com")||e.startsWith("https://youtube.com")||e.startsWith("https//www.youtu.be"))&&null!==e.match(/(youtu.be\/|v=)([^?\/\&]*)/),getYouTubeThumbnailLink=async e=>{const t=e.match(/(youtu.be\/|v=)([^?\/\&]*)/);if(!t||!t[2])return null;const A=t[2];let i=`https://i.ytimg.com/vi/${A}/maxresdefault.jpg`,n=await obsidian_module.requestUrl({url:i,method:"get",contentType:"image/jpeg",throw:!1});return n&&200===n.status?i:(i=`https://i.ytimg.com/vi/${A}/hq720.jpg`,n=await obsidian_module.requestUrl({url:i,method:"get",contentType:"image/jpeg",throw:!1}),n&&200===n.status?i:(i=`https://i.ytimg.com/vi/${A}/mqdefault.jpg`,n=await obsidian_module.requestUrl({url:i,method:"get",contentType:"image/jpeg",throw:!1}),n&&200===n.status?i:`https://i.ytimg.com/vi/${A}/default.jpg`))},isCallerFromTemplaterPlugin=e=>{const t=e.split("\n");for(const e of t)if(e.trim().startsWith("at Templater."))return!0;return!1},convertSVGStringToElement=e=>{const t=document.createElement("div");t.innerHTML=e;const A=t.firstChild;if(A instanceof SVGSVGElement)return A};var ar={},cz={},da={},de={},en={INSTALL_SCRIPT:"Install the script",UPDATE_SCRIPT:"Update available - Click to install",CHECKING_SCRIPT:"Checking for newer version - Click to reinstall",UNABLETOCHECK_SCRIPT:"Update check failed - Click to reinstall",UPTODATE_SCRIPT:"Script is up to date - Click to reinstall",OPEN_AS_EXCALIDRAW:"Open as Excalidraw Drawing",TOGGLE_MODE:"Toggle between Excalidraw and Markdown mode",CONVERT_NOTE_TO_EXCALIDRAW:"Convert empty note to Excalidraw Drawing",CONVERT_EXCALIDRAW:"Convert *.excalidraw to *.md files",CREATE_NEW:"Create new drawing",CONVERT_FILE_KEEP_EXT:"*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"*.excalidraw => *.md (Logseq compatibility)",DOWNLOAD_LIBRARY:"Export stencil library as an *.excalidrawlib file",OPEN_EXISTING_NEW_PANE:"Open existing drawing - IN A NEW PANE",OPEN_EXISTING_ACTIVE_PANE:"Open existing drawing - IN THE CURRENT ACTIVE PANE",TRANSCLUDE:"Embed a drawing",TRANSCLUDE_MOST_RECENT:"Embed the most recently edited drawing",TOGGLE_LEFTHANDED_MODE:"Toggle left-handed mode",NEW_IN_NEW_PANE:"Create new drawing - IN AN ADJACENT WINDOW",NEW_IN_NEW_TAB:"Create new drawing - IN A NEW TAB",NEW_IN_ACTIVE_PANE:"Create new drawing - IN THE CURRENT ACTIVE WINDOW",NEW_IN_POPOUT_WINDOW:"Create new drawing - IN A POPOUT WINDOW",NEW_IN_NEW_PANE_EMBED:"Create new drawing - IN AN ADJACENT WINDOW - and embed into active document",NEW_IN_NEW_TAB_EMBED:"Create new drawing - IN A NEW TAB - and embed into active document",NEW_IN_ACTIVE_PANE_EMBED:"Create new drawing - IN THE CURRENT ACTIVE WINDOW - and embed into active document",NEW_IN_POPOUT_WINDOW_EMBED:"Create new drawing - IN A POPOUT WINDOW - and embed into active document",TOGGLE_LOCK:"Toggle Text Element between edit RAW and PREVIEW",DELETE_FILE:"Delete selected image or Markdown file from Obsidian Vault",INSERT_LINK_TO_ELEMENT:`Copy markdown link for selected element to clipboard. ${labelCTRL()}+CLICK to copy 'group=' link. SHIFT+CLICK to copy an 'area=' link. ${labelALT()}+CLICK to watch a help video.`,INSERT_LINK_TO_ELEMENT_GROUP:"Copy 'group=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_AREA:"Copy 'area=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_FRAME:"Copy 'frame=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_NORMAL:"Copy markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_ERROR:"Select a single element in the scene",INSERT_LINK_TO_ELEMENT_READY:"Link is READY and available on the clipboard",INSERT_LINK:"Insert link to file",INSERT_IMAGE:"Insert image or Excalidraw drawing from your vault",IMPORT_SVG:"Import an SVG file as Excalidraw strokes (limited SVG support, TEXT currently not supported)",INSERT_MD:"Insert markdown file from vault",INSERT_PDF:"Insert PDF file from vault",UNIVERSAL_ADD_FILE:"Insert ANY file from your Vault to the active drawing",INSERT_LATEX:`Insert LaTeX formula (e.g. \\binom{n}{k} = \\frac{n!}{k!(n-k)!}). ${labelALT()}+CLICK to watch a help video.`,ENTER_LATEX:"Enter a valid LaTeX expression",READ_RELEASE_NOTES:"Read latest release notes",RUN_OCR:"OCR: Grab text from freedraw scribble and pictures to clipboard",TRAY_MODE:"Toggle property-panel tray-mode",SEARCH:"Search for text in drawing",RESET_IMG_TO_100:"Set selected image element size to 100% of original",TEMPORARY_DISABLE_AUTOSAVE:"Disable autosave until next time Obsidian starts (only set this if you know what you are doing)",TEMPORARY_ENABLE_AUTOSAVE:"Enable autosave",INSTALL_SCRIPT_BUTTON:"Install or update Excalidraw Scripts",OPEN_AS_MD:"Open as Markdown",EXPORT_IMAGE:"Export Image",OPEN_LINK:"Open selected text as link\n(SHIFT+CLICK to open in a new pane)",EXPORT_EXCALIDRAW:"Export to an .Excalidraw file",LINK_BUTTON_CLICK_NO_TEXT:"Select a ImageElement, or select a TextElement that contains an internal or external link.\n",FILENAME_INVALID_CHARS:'File name cannot contain any of the following characters: * " \\ < > : | ? #',FORCE_SAVE:"Save (will also update transclusions)",RAW:"Change to PREVIEW mode (only affects text-elements with links or transclusions)",PARSED:"Change to RAW mode (only affects text-elements with links or transclusions)",NOFILE:"Excalidraw (no file)",COMPATIBILITY_MODE:"*.excalidraw file opened in compatibility mode. Convert to new format for full plugin functionality.",CONVERT_FILE:"Convert to new format",BACKUP_AVAILABLE:"We encountered an error while loading your drawing. This might have occurred if Obsidian unexpectedly closed during a save operation. For example, if you accidentally closed Obsidian on your mobile device while saving.

GOOD NEWS: Fortunately, a local backup is available. However, please note that if you last modified this drawing on a different device (e.g., tablet) and you are now on your desktop, that other device likely has a more recent backup.

I recommend trying to open the drawing on your other device first and restore the backup from its local storage.

Would you like to load the backup?",BACKUP_RESTORED:"Backup restored",CACHE_NOT_READY:"I apologize for the inconvenience, but an error occurred while loading your file.

Having a little patience can save you a lot of time...

The plugin has a backup cache, but it appears that you have just started Obsidian. Initializing the Backup Cache may take some time, usually up to a minute or more depending on your device's performance. You will receive a notification in the top right corner when the cache initialization is complete.

Please press OK to attempt loading the file again and check if the cache has finished initializing. If you see a completely empty file behind this message, I recommend waiting until the backup cache is ready before proceeding. Alternatively, you can choose Cancel to manually correct your file.
",OBSIDIAN_TOOLS_PANEL:"Obsidian Tools Panel",ERROR_SAVING_IMAGE:"Unknown error occured while fetching the image. It could be that for some reason the image is not available or rejected the fetch request from Obsidian",WARNING_PASTING_ELEMENT_AS_TEXT:"PASTING EXCALIDRAW ELEMENTS AS A TEXT ELEMENT IS NOT ALLOWED",USE_INSERT_FILE_MODAL:"Use 'Insert Any File' to embed a markdown note",RELEASE_NOTES_NAME:"Display Release Notes after update",RELEASE_NOTES_DESC:"Toggle ON: Display release notes each time you update Excalidraw to a newer version.
Toggle OFF: Silent mode. You can still read release notes on GitHub.",NEWVERSION_NOTIFICATION_NAME:"Plugin update notification",NEWVERSION_NOTIFICATION_DESC:"Toggle ON: Show a notification when a new version of the plugin is available.
Toggle OFF: Silent mode. You need to check for plugin updates in Community Plugins.",FOLDER_NAME:"Excalidraw folder",FOLDER_DESC:"Default location for new drawings. If empty, drawings will be created in the Vault root.",FOLDER_EMBED_NAME:"Use Excalidraw folder when embedding a drawing into the active document",FOLDER_EMBED_DESC:"Define which folder to place the newly inserted drawing into when using the command palette action: 'Create a new drawing and embed into active document'.
Toggle ON: Use Excalidraw folder
Toggle OFF: Use the attachments folder defined in Obsidian settings.",TEMPLATE_NAME:"Excalidraw template file",TEMPLATE_DESC:"Full filepath to the Excalidraw template. E.g.: If your template is in the default Excalidraw folder and its name is Template.md, the setting would be: Excalidraw/Template.md (or just Excalidraw/Template - you may omit the .md file extension). If you are using Excalidraw in compatibility mode, then your template must be a legacy Excalidraw file as well such as Excalidraw/Template.excalidraw.",SCRIPT_FOLDER_NAME:"Excalidraw Automate script folder (CASE SeNSitiVE!)",SCRIPT_FOLDER_DESC:"The files you place in this folder will be treated as Excalidraw Automate scripts. You can access your scripts from Excalidraw via the Obsidian Command Palette. Assign hotkeys to your favorite scripts just like to any other Obsidian command. The folder may not be the root folder of your Vault. ",SAVING_HEAD:"Saving",COMPRESS_NAME:"Compress Excalidraw JSON in Markdown",COMPRESS_DESC:"By enabling this feature Excalidraw will store the drawing JSON in a Base64 compressed format using the LZ-String algorithm. This will reduce the chance of Excalidraw JSON cluttering your search results in Obsidian. As a side effect, this will also reduce the filesize of Excalidraw drawings. When you switch an Excalidraw drawing to Markdown view, using the options menu in Excalidraw, the file will be saved without compression, so that you can read and edit the JSON string. The drawing will be compressed again once you switch back to Excalidraw view. The setting only has effect 'point forward', meaning, existing drawings will not be affected by the setting until you open them and save them.
Toggle ON: Compress drawing JSON
Toggle OFF: Leave drawing JSON uncompressed",AUTOSAVE_INTERVAL_DESKTOP_NAME:"Interval for autosave on Desktop",AUTOSAVE_INTERVAL_DESKTOP_DESC:"The time interval between saves. Autosave will skip if there are no changes in the drawing. Excalidraw will also save the file when closing a workspace tab or navigating within Obsidian, but away from the active Excalidraw tab (i.e. clicking on the Obsidian ribbon or checking backlinks, etc.). Excalidraw will not be able to save your work when terminating Obsidian directly either by killing the Obsidian process, or clicking to close Obsidian altogether.",AUTOSAVE_INTERVAL_MOBILE_NAME:"Interval for autosave on Mobile",AUTOSAVE_INTERVAL_MOBILE_DESC:"I recommend a more frequent interval for Mobiles. Excalidraw will also save the file when closing a workspace tab or navigating within Obsidian, but away from the active Excalidraw tab (i.e. tapping on the Obsidian ribbon or checking backlinks, etc.). Excalidraw will not be able to save your work when terminating Obsidian directly (i.e. swiping it away). Also note, that when you switch apps on a Mobile device, sometimes Android and iOS closes Obsidian in the background to save system resources. In such a case Excalidraw will not be able to save the latest changes.",FILENAME_HEAD:"Filename",FILENAME_DESC:"

Click this link for the date and time format reference.

",FILENAME_SAMPLE:"Filename for a new drawing is: ",FILENAME_EMBED_SAMPLE:"Filename for a new embedded drawing is: ",FILENAME_PREFIX_NAME:"Filename prefix",FILENAME_PREFIX_DESC:"The first part of the filename",FILENAME_PREFIX_EMBED_NAME:"Filename prefix when embedding a new drawing into a markdown note",FILENAME_PREFIX_EMBED_DESC:"Should the filename of the newly inserted drawing start with the name of the active markdown note when using the command palette action: Create a new drawing and embed into active document?
Toggle ON: Yes, the filename of a new drawing should start with filename of the active document
Toggle OFF: No, filename of a new drawing should not include the filename of the active document",FILENAME_POSTFIX_NAME:"Custom text after markdown Note's name when embedding",FILENAME_POSTFIX_DESC:"Affects filename only when embedding into a markdown document. This text will be inserted after the note's name, but before the date.",FILENAME_DATE_NAME:"Filename Date",FILENAME_DATE_DESC:"The last part of the filename. Leave empty if you do not want a date.",FILENAME_EXCALIDRAW_EXTENSION_NAME:".excalidraw.md or .md",FILENAME_EXCALIDRAW_EXTENSION_DESC:"This setting does not apply if you use Excalidraw in compatibility mode, i.e. you are not using Excalidraw markdown files.
Toggle ON: filename ends with .excalidraw.md
Toggle OFF: filename ends with .md",DISPLAY_HEAD:"Display",DYNAMICSTYLE_NAME:"Dynamic styling",DYNAMICSTYLE_DESC:"Change Excalidraw UI colors to match the canvas color",LEFTHANDED_MODE_NAME:"Left-handed mode",LEFTHANDED_MODE_DESC:"Currently only has effect in tray-mode. If turned on, the tray will be on the right side.
Toggle ON: Left-handed mode.
Toggle OFF: Right-handed moded",IFRAME_MATCH_THEME_NAME:"Markdown embeds to match Excalidraw theme",IFRAME_MATCH_THEME_DESC:"Toggle ON: Set this to true if for example you are using Obsidian in dark-mode but use excalidraw with a light background. With this setting the embedded Obsidian markdown document will match the Excalidraw theme (i.e. light colors if Excalidraw is in light mode).
Toggle OFF: Set this to false if you want the embedded Obsidian markdown document to match the Obsidian theme (i.e. dark colors if Obsidian is in dark mode).",MATCH_THEME_NAME:"New drawing to match Obsidian theme",MATCH_THEME_DESC:"If theme is dark, new drawing will be created in dark mode. This does not apply when you use a template for new drawings. Also this will not affect when you open an existing drawing. Those will follow the theme of the template/drawing respectively.
Toggle ON: Follow Obsidian Theme
Toggle OFF: Follow theme defined in your template",MATCH_THEME_ALWAYS_NAME:"Existing drawings to match Obsidian theme",MATCH_THEME_ALWAYS_DESC:"If theme is dark, drawings will be opened in dark mode. If your theme is light, they will be opened in light mode.
Toggle ON: Match Obsidian theme
Toggle OFF: Open with the same theme as last saved",MATCH_THEME_TRIGGER_NAME:"Excalidraw to follow when Obsidian Theme changes",MATCH_THEME_TRIGGER_DESC:"If this option is enabled open Excalidraw pane will switch to light/dark mode when Obsidian theme changes.
Toggle ON: Follow theme changes
Toggle OFF: Drawings are not affected by Obsidian theme changes",DEFAULT_OPEN_MODE_NAME:"Default mode when opening Excalidraw",DEFAULT_OPEN_MODE_DESC:"Specifies the mode how Excalidraw opens: Normal, Zen, or View mode. You may also set this behavior on a file level by adding the excalidraw-default-mode frontmatter key with a value of: normal, view, or zen to your document.",DEFAULT_PEN_MODE_NAME:"Pen mode",DEFAULT_PEN_MODE_DESC:"Should pen mode be automatically enabled when opening Excalidraw?",DEFAULT_PINCHZOOM_NAME:"Allow pinch zoom in pen mode",DEFAULT_PINCHZOOM_DESC:"Pinch zoom in pen mode when using the freedraw tool is disabled by default to prevent unwanted accidental zooming with your palm.
Toggle ON: Enable pinch zoom in pen mode
Toggle OFF:Disable pinch zoom in pen mode",DEFAULT_WHEELZOOM_NAME:"Mouse wheel to zoom by default",DEFAULT_WHEELZOOM_DESC:`Toggle ON: Mouse wheel to zoom; ${labelCTRL()} + mouse wheel to scroll
Toggle OFF:${labelCTRL()} + mouse wheel to zoom; Mouse wheel to scroll`,ZOOM_TO_FIT_NAME:"Zoom to fit on view resize",ZOOM_TO_FIT_DESC:"Zoom to fit drawing when the pane is resized
Toggle ON: Zoom to fit
Toggle OFF: Auto zoom disabled",ZOOM_TO_FIT_ONOPEN_NAME:"Zoom to fit on file open",ZOOM_TO_FIT_ONOPEN_DESC:"Zoom to fit drawing when the drawing is first opened
Toggle ON: Zoom to fit
Toggle OFF: Auto zoom disabled",ZOOM_TO_FIT_MAX_LEVEL_NAME:"Zoom to fit max ZOOM level",ZOOM_TO_FIT_MAX_LEVEL_DESC:"Set the maximum level to which zoom to fit will enlarge the drawing. Minimum is 0.5 (50%) and maximum is 10 (1000%).",LINKS_HEAD:"Links and transclusion",LINKS_DESC:`${labelCTRL()}+CLICK on [[Text Elements]] to open them as links. If the selected text has more than one [[valid Obsidian links]], only the first will be opened. If the text starts as a valid web link (i.e. https:// or http://), then the plugin will open it in a browser. When Obsidian files change, the matching [[link]] in your drawings will also change. If you don't want text accidentally changing in your drawings use [[links|with aliases]].`,ADJACENT_PANE_NAME:"Reuse adjacent pane",ADJACENT_PANE_DESC:`When ${labelCTRL()}+SHIFT clicking a link in Excalidraw, by default the plugin will open the link in a new pane. Turning this setting on, Excalidraw will first look for an existing pane, and try to open the link there. Excalidraw will look for the other workspace pane based on your focus/navigation history, i.e. the workpane that was active before you activated Excalidraw.`,MAINWORKSPACE_PANE_NAME:"Open in main workspace",MAINWORKSPACE_PANE_DESC:`When ${labelCTRL()}+SHIFT clicking a link in Excalidraw, by default the plugin will open the link in a new pane in the current active window. Turning this setting on, Excalidraw will open the link in an existing or new pane in the main workspace. `,LINK_BRACKETS_NAME:"Show [[brackets]] around links",LINK_BRACKETS_DESC:"In PREVIEW mode, when parsing Text Elements, place brackets around links. You can override this setting for a specific drawing by adding excalidraw-link-brackets: true/false to the file's frontmatter.",LINK_PREFIX_NAME:"Link prefix",LINK_PREFIX_DESC:'In PREVIEW mode, if the Text Element contains a link, precede the text with these characters. You can override this setting for a specific drawing by adding excalidraw-link-prefix: "📍 " to the file\'s frontmatter.',URL_PREFIX_NAME:"URL prefix",URL_PREFIX_DESC:'In PREVIEW mode, if the Text Element contains a URL link, precede the text with these characters. You can override this setting for a specific drawing by adding excalidraw-url-prefix: "🌐 " to the file\'s frontmatter.',PARSE_TODO_NAME:"Parse todo",PARSE_TODO_DESC:"Convert '- [ ] ' and '- [x] ' to checkpox and tick in the box.",TODO_NAME:"Open TODO icon",TODO_DESC:"Icon to use for open TODO items",DONE_NAME:"Completed TODO icon",DONE_DESC:"Icon to use for completed TODO items",HOVERPREVIEW_NAME:`Hover preview without pressing the ${labelCTRL()} key`,HOVERPREVIEW_DESC:`Toggle ON: In Exalidraw view mode the hover preview for [[wiki links]] will be shown immediately, without the need to hold the ${labelCTRL()} key. In Excalidraw normal mode, the preview will be shown immediately only when hovering the blue link icon in the top right of the element.
Toggle OFF: Hover preview is shown only when you hold the ${labelCTRL()} key while hovering the link.`,LINKOPACITY_NAME:"Opacity of link icon",LINKOPACITY_DESC:"Opacity of the link indicator icon in the top right corner of an element. 1 is opaque, 0 is transparent.",LINK_CTRL_CLICK_NAME:`${labelCTRL()}+CLICK on text with [[links]] or [](links) to open them`,LINK_CTRL_CLICK_DESC:"You can turn this feature off if it interferes with default Excalidraw features you want to use. If this is turned off, only the link button in the title bar of the drawing pane will open links.",TRANSCLUSION_WRAP_NAME:"Overflow wrap behavior of transcluded text",TRANSCLUSION_WRAP_DESC:"Number specifies the character count where the text should be wrapped. Set the text wrapping behavior of transcluded text. Turn this ON to force-wrap text (i.e. no overflow), or OFF to soft-wrap text (at the nearest whitespace).",TRANSCLUSION_DEFAULT_WRAP_NAME:"Transclusion word wrap default",TRANSCLUSION_DEFAULT_WRAP_DESC:"You can manually set/override word wrapping length using the `![[page#^block]]{NUMBER}` format. Normally you will not want to set a default, because if you transclude text inside a sticky note, then Excalidraw will automatically take care of word wrapping. Set this value to `0` if you do not want to set a default. ",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"Page transclusion max char count",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"The maximum number of characters to display from the page when transcluding an entire page with the ![[markdown page]] format.",QUOTE_TRANSCLUSION_REMOVE_NAME:"Quote translusion: remove leading '> ' from each line",QUOTE_TRANSCLUSION_REMOVE_DESC:"Remove the leading '> ' from each line of the transclusion. This will improve readability of quotes in text only transclusions
Toggle ON: Remove leading '> '
Toggle OFF: Do not remove leading '> ' (note it will still be removed from the first row due to Obsidian API functionality)",GET_URL_TITLE_NAME:"Use iframely to resolve page title",GET_URL_TITLE_DESC:"Use the http://iframely.server.crestify.com/iframely?url= to get title of page when dropping a link into Excalidraw",MD_HEAD:"Markdown-embed settings",MD_HEAD_DESC:"You can transclude formatted markdown documents into drawings as images SHIFT drop from the file explorer or using the command palette action.",MD_TRANSCLUDE_WIDTH_NAME:"Default width of a transcluded markdown document",MD_TRANSCLUDE_WIDTH_DESC:"The width of the markdown page. This affects the word wrapping when transcluding longer paragraphs, and the width of the image element. You can override the default width of an embedded file using the [[filename#heading|WIDTHxMAXHEIGHT]] syntax in markdown view mode under embedded files.",MD_TRANSCLUDE_HEIGHT_NAME:"Default maximum height of a transcluded markdown document",MD_TRANSCLUDE_HEIGHT_DESC:"The embedded image will be as high as the markdown text requires, but not higher than this value. You can override this value by editing the embedded image link in markdown view mode with the following syntax [[filename#^blockref|WIDTHxMAXHEIGHT]].",MD_DEFAULT_FONT_NAME:"The default font typeface to use for embedded markdown files.",MD_DEFAULT_FONT_DESC:'Set this value to "Virgil" or "Cascadia" or the filename of a valid .ttf, .woff, or .woff2 font e.g. MyFont.woff2 You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-font: font_or_filename',MD_DEFAULT_COLOR_NAME:"The default font color to use for embedded markdown files.",MD_DEFAULT_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (color names), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-font-color: steelblue',MD_DEFAULT_BORDER_COLOR_NAME:"The default border color to use for embedded markdown files.",MD_DEFAULT_BORDER_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (color names), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-border-color: gray. Leave empty if you don\'t want a border. ',MD_CSS_NAME:"CSS file",MD_CSS_DESC:`The filename of the CSS to apply to markdown embeds. Provide the filename with extension (e.g. 'md-embed.css'). The css file may also be a plain markdown file (e.g. 'md-embed-css.md'), just make sure the content is written using valid css syntax. If you need to look at the HTML code you are applying the CSS to, then open Obsidian Developer Console (${DEVICE.isIOS||DEVICE.isMacOS?"CMD+OPT+i":"CTRL+SHIFT+i"}) and type in the following command: "ExcalidrawAutomate.mostRecentMarkdownSVG". This will display the most recent SVG generated by Excalidraw. Setting the font-family in the css is has limitations. By default only your operating system's standard fonts are available (see README for details). You can add one custom font beyond that using the setting above. You can override this css setting by adding the following frontmatter-key to the embedded markdown file: "excalidraw-css: css_file_in_vault|css-snippet".`,EMBED_HEAD:"Embed & Export",EMBED_CACHING:"Image caching",EMBED_SIZING:"Image sizing",EMBED_THEME_BACKGROUND:"Image theme and background color",EMBED_IMAGE_CACHE_NAME:"Cache images for embedding in markdown",EMBED_IMAGE_CACHE_DESC:"Cache images for embedding in markdown. This will speed up the embedding process, but in case you compose images of several sub-component drawings, the embedded image in Markdown won't update until you open the drawing and save it to trigger an update of the cache.",EMBED_IMAGE_CACHE_CLEAR:"Purge Cache",BACKUP_CACHE_CLEAR:"Purge Backups",BACKUP_CACHE_CLEAR_CONFIRMATION:"This action will delete all Excalidraw drawing backups. Backups are used as a safety measure in case your drawing file gets damaged. Each time you open Obsidian the plugin automatically deletes backups for files that no longer exist in your Vault. Are you sure you want to clear all backups?",EMBED_REUSE_EXPORTED_IMAGE_NAME:"If found, use the already exported image for preview",EMBED_REUSE_EXPORTED_IMAGE_DESC:"This setting works in conjunction with the Auto-export SVG/PNG setting. If an exported image that matches the file name of the drawing is available, use that image instead of generating a preview image on the fly. This will result in faster previews especially when you have many embedded objects in the drawing, however, it may happen that your latest changes are not displayed and that the image will not automatically match your Obsidian theme in case you have changed the Obsidian theme since the export was created. This setting only applies to embedding images into markdown documents. For a number of reasons, the same approach cannot be used to expedite the loading of drawings with many embedded objects. See demonstration here.",EMBED_PREVIEW_IMAGETYPE_NAME:"Image type in markdown preview",EMBED_PREVIEW_IMAGETYPE_DESC:"Native SVG: High Image Quality. Embedded Websites, YouTube videos, Obsidian Links, and external images embedded via a URL will all work. Embedded Obsidian pages will not
SVG Image: High Image Quality. Embedded elements and images embedded via URL only have placeholders, links don't work
PNG Image: Lower Image Quality, but in some cases better performance with large drawings. Embedded elements and images embedded via URL only have placeholders, links don't work. Also some of the image block referencing features do not work with PNG embeds.",PREVIEW_MATCH_OBSIDIAN_NAME:"Excalidraw preview to match Obsidian theme",PREVIEW_MATCH_OBSIDIAN_DESC:"Image preview in documents should match the Obsidian theme. If enabled, when Obsidian is in dark mode, Excalidraw images will render in dark mode. When Obsidian is in light mode, Excalidraw will render light mode as well. You may want to switch 'Export image with background' off for a more Obsidian-integrated look and feel.",EMBED_WIDTH_NAME:"Default width of embedded (transcluded) image",EMBED_WIDTH_DESC:"The default width of an embedded drawing. This applies to live preview edit and reading mode, as well as to hover previews. You can specify a custom width when embedding an image using the ![[drawing.excalidraw|100]] or [[drawing.excalidraw|100x100]] format.",EMBED_TYPE_NAME:"Type of file to insert into the document",EMBED_TYPE_DESC:"When you embed an image into a document using the command palette this setting will specify if Excalidraw should embed the original Excalidraw file or a PNG or an SVG copy. You need to enable auto-export PNG / SVG (see below under Export Settings) for those image types to be available in the dropdown. For drawings that do not have a a corresponding PNG or SVG readily available the command palette action will insert a broken link. You need to open the original drawing and initiate export manually. This option will not autogenerate PNG/SVG files, but will simply reference the already existing files.",EMBED_WIKILINK_NAME:"Embed Drawing using Wiki link",EMBED_WIKILINK_DESC:"Toggle ON: Excalidraw will embed a [[wiki link]].
Toggle OFF: Excalidraw will embed a [markdown](link).",EXPORT_PNG_SCALE_NAME:"PNG export image scale",EXPORT_PNG_SCALE_DESC:"The size-scale of the exported PNG image",EXPORT_BACKGROUND_NAME:"Export image with background",EXPORT_BACKGROUND_DESC:"If turned off, the exported image will be transparent.",EXPORT_PADDING_NAME:"Image Padding",EXPORT_PADDING_DESC:"The padding (in pixels) around the exported SVG or PNG image. If you have curved lines close to the edge of the image they might get cropped during image export. You can increase this value to avoid cropping. You can also override this setting at a file level by adding the excalidraw-export-padding: 5 frontmatter key.",EXPORT_THEME_NAME:"Export image with theme",EXPORT_THEME_DESC:"Export the image matching the dark/light theme of your drawing. If turned off, drawings created in dark mode will appear as they would in light mode.",EXPORT_HEAD:"Auto-export Settings",EXPORT_SYNC_NAME:"Keep the .SVG and/or .PNG filenames in sync with the drawing file",EXPORT_SYNC_DESC:"When turned on, the plugin will automatically update the filename of the .SVG and/or .PNG files when the drawing in the same folder (and same name) is renamed. The plugin will also automatically delete the .SVG and/or .PNG files when the drawing in the same folder (and same name) is deleted. ",EXPORT_SVG_NAME:"Auto-export SVG",EXPORT_SVG_DESC:"Automatically create an SVG export of your drawing matching the title of your file. The plugin will save the *.SVG file in the same folder as the drawing. Embed the .svg file into your documents instead of Excalidraw making you embeds platform independent. While the auto-export switch is on, this file will get updated every time you edit the Excalidraw drawing with the matching name. You can override this setting on a file level by adding the excalidraw-autoexport frontmatter key. Valid values for this key are none,both,svg, and png",EXPORT_PNG_NAME:"Auto-export PNG",EXPORT_PNG_DESC:"Same as the auto-export SVG, but for *.PNG",EXPORT_BOTH_DARK_AND_LIGHT_NAME:"Export both dark- and light-themed image",EXPORT_BOTH_DARK_AND_LIGHT_DESC:"When enabled, Excalidraw will export two files instead of one: filename.dark.png, filename.light.png and/or filename.dark.svg and filename.light.svg
Double files will be exported both if auto-export SVG or PNG (or both) are enabled, as well as when clicking export on a single image.",COMPATIBILITY_HEAD:"Compatibility features",EXPORT_EXCALIDRAW_NAME:"Auto-export Excalidraw",EXPORT_EXCALIDRAW_DESC:"Same as the auto-export SVG, but for *.Excalidraw",SYNC_EXCALIDRAW_NAME:"Sync *.excalidraw with *.md version of the same drawing",SYNC_EXCALIDRAW_DESC:"If the modified date of the *.excalidraw file is more recent than the modified date of the *.md file then update the drawing in the .md file based on the .excalidraw file",COMPATIBILITY_MODE_NAME:"New drawings as legacy files",COMPATIBILITY_MODE_DESC:"By enabling this feature drawings you create with the ribbon icon, the command palette actions, and the file explorer are going to be all legacy *.excalidraw files. This setting will also turn off the reminder message when you open a legacy file for editing.",MATHJAX_NAME:"MathJax (LaTeX) javascript library host",MATHJAX_DESC:"If you are using LaTeX equiations in Excalidraw then the plugin needs to load a javascript library for that. Some users are unable to access certain host servers. If you are experiencing issues try changing the host here. You may need to restart Obsidian after closing settings, for this change to take effect.",LATEX_DEFAULT_NAME:"Default LaTeX formual for new equations",LATEX_DEFAULT_DESC:"Leave empty if you don't want a default formula. You can add default formatting here such as \\color{white}.",NONSTANDARD_HEAD:"Non-Excalidraw.com supported features",NONSTANDARD_DESC:"These features are not available on excalidraw.com. When exporting the drawing to Excalidraw.com these features will appear different.",CUSTOM_PEN_NAME:"Number of custom pens",CUSTOM_PEN_DESC:"You will see these pens next to the Obsidian Menu on the canvas. You can customize the pens on the canvas by long-pressing the pen button.",EXPERIMENTAL_HEAD:"Experimental features",EXPERIMENTAL_DESC:"Some of these setting will not take effect immediately, only when the File Explorer is refreshed, or Obsidian restarted.",FIELD_SUGGESTER_NAME:"Enable Field Suggester",FIELD_SUGGESTER_DESC:"Field Suggester borrowed from Breadcrumbs and Templater plugins. The Field Suggester will show an autocomplete menu when you type excalidraw- or ea. with function description as hints on the individual items in the list.",FILETYPE_NAME:"Display type (✏️) for excalidraw.md files in File Explorer",FILETYPE_DESC:"Excalidraw files will receive an indicator using the emoji or text defined in the next setting.",FILETAG_NAME:"Set the type indicator for excalidraw.md files",FILETAG_DESC:"The text or emoji to display as type indicator.",INSERT_EMOJI:"Insert an emoji",LIVEPREVIEW_NAME:"Immersive image embedding in live preview editing mode",LIVEPREVIEW_DESC:"Turn this on to support image embedding styles such as ![[drawing|width|style]] in live preview editing mode. The setting will not affect the currently open documents. You need close the open documents and re-open them for the change to take effect.",ENABLE_FOURTH_FONT_NAME:"Enable fourth font option",ENABLE_FOURTH_FONT_DESC:"By turning this on, you will see a fourth font button on the properties panel for text elements. Files that use this fourth font will (partly) lose their platform independence. Depending on the custom font set in settings, they will look differently when loaded in another vault, or at a later time. Also the 4th font will display as system default font on excalidraw.com, or other Excalidraw versions.",FOURTH_FONT_NAME:"Fourth font file",FOURTH_FONT_DESC:"Select a .ttf, .woff or .woff2 font file from your vault to use as the fourth font. If no file is selected, Excalidraw will use the Virgil font by default.",SCRIPT_SETTINGS_HEAD:"Settings for installed Scripts",TASKBONE_HEAD:"Taskbone Optical Character Recogntion",TASKBONE_DESC:"This is an experimental integration of optical character recognition into Excalidraw. Please note, that taskbone is an independent external service not provided by Excalidraw, nor the Excalidraw-Obsidian plugin project. The OCR service will grab legible text from freedraw lines and embedded pictures on your canvas and place the recognized text in the frontmatter of your drawing as well as onto clipboard. Having the text in the frontmatter will enable you to search in Obsidian for the text contents of these. Note, that the process of extracting the text from the image is not done locally, but via an online API. The taskbone service stores the image on its servers only as long as necessary for the text extraction. However, if this is a dealbreaker, then please don't use this feature.",TASKBONE_ENABLE_NAME:"Enable Taskbone",TASKBONE_ENABLE_DESC:"By enabling this service your agree to the Taskbone Terms and Conditions and the Privacy Policy.",TASKBONE_APIKEY_NAME:"Taskbone API Key",TASKBONE_APIKEY_DESC:"Taskbone offers a free service with a reasonable number of scans per month. If you want to use this feature more frequently, or you want to supoprt the developer of Taskbone (as you can imagine, there is no such thing as 'free', providing this awesome OCR service costs some money to the developer of Taskbone), you can purchase a paid API key from taskbone.com. In case you have purchased a key, simply overwrite this auto generated free-tier API-key with your paid key.",SELECT_FILE:"Select a file then press enter.",SELECT_FILE_WITH_OPTION_TO_SCALE:`Select a file then press ENTER, or SHIFT+${labelMETA()}+ENTER to insert at 100% scale.`,NO_MATCH:"No file matches your query.",SELECT_FILE_TO_LINK:"Select the file you want to insert the link for.",SELECT_DRAWING:"Select the image or drawing you want to insert",TYPE_FILENAME:"Type name of drawing to select.",SELECT_FILE_OR_TYPE_NEW:"Select existing drawing or type name of a new drawing then press Enter.",SELECT_TO_EMBED:"Select the drawing to insert into active document.",SELECT_MD:"Select the markdown document you want to insert",SELECT_PDF:"Select the PDF document you want to insert",PDF_PAGES_HEADER:"Pages to load?",PDF_PAGES_DESC:"Format: 1, 3-5, 7, 9-11",INFINITE_LOOP_WARNING:"EXCALIDRAW WARNING\nAborted loading embedded images due to infinite loop in file:\n",SCRIPT_EXECUTION_ERROR:"Script execution error. Please find error message on the developer console.",LOAD_FROM_BACKUP:"Excalidraw file was corrupted. Loading from backup file.",GOTO_FULLSCREEN:"Goto fullscreen mode",EXIT_FULLSCREEN:"Exit fullscreen mode",TOGGLE_FULLSCREEN:"Toggle fullscreen mode",TOGGLE_DISABLEBINDING:"Toggle to invert default binding behavior",TOGGLE_FRAME_RENDERING:"Toggle frame rendering",TOGGLE_FRAME_CLIPPING:"Toggle frame clipping",OPEN_LINK_CLICK:"Navigate to selected element link",OPEN_LINK_PROPS:"Open markdown-embed properties or open link in new window",NARROW_TO_HEADING:"Narrow to heading...",NARROW_TO_BLOCK:"Narrow to block...",SHOW_ENTIRE_FILE:"Show entire file",ZOOM_TO_FIT:"Zoom to fit",RELOAD:"Reload original link",OPEN_IN_BROWSER:"Open current link in browser",PROMPT_FILE_DOES_NOT_EXIST:"File does not exist. Do you want to create it?",PROMPT_ERROR_NO_FILENAME:"Error: Filename for new file may not be empty",PROMPT_ERROR_DRAWING_CLOSED:"Unknown error. It seems as if your drawing was closed or the drawing file is missing",PROMPT_TITLE_NEW_FILE:"New File",PROMPT_TITLE_CONFIRMATION:"Confirmation",PROMPT_BUTTON_CREATE_EXCALIDRAW:"Create Excalidraw",PROMPT_BUTTON_CREATE_MARKDOWN:"Create Markdown",PROMPT_BUTTON_NEVERMIND:"Nevermind",PROMPT_BUTTON_OK:"OK",PROMPT_BUTTON_CANCEL:"Cancel",PROMPT_BUTTON_INSERT_LINE:"Insert new line",PROMPT_BUTTON_INSERT_SPACE:"Insert space",PROMPT_BUTTON_INSERT_LINK:"Insert markdown link to file",PROMPT_BUTTON_UPPERCASE:"Uppercase"},enGB={},es={},fr={},hi={},id={},it={},ja={},ko={},nl={},no={},pl={},pt={},ptBR={},ro={},ru={},tr={},zhCN={INSTALL_SCRIPT:"安装此脚本",UPDATE_SCRIPT:"有可用更新 - 点击安装",CHECKING_SCRIPT:"检查更新中 - 点击重新安装",UNABLETOCHECK_SCRIPT:"检查更新失败 - 点击重新安装",UPTODATE_SCRIPT:"脚本已是最新 - 点击重新安装",OPEN_AS_EXCALIDRAW:"打开为 Excalidraw 绘图",TOGGLE_MODE:"在 Excalidraw 和 Markdown 模式之间切换",CONVERT_NOTE_TO_EXCALIDRAW:"转换:空白 Markdown 文档 => Excalidraw 绘图文件",CONVERT_EXCALIDRAW:"转换: *.excalidraw => *.md",CREATE_NEW:"新建绘图文件",CONVERT_FILE_KEEP_EXT:"转换:*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"转换:*.excalidraw => *.md (兼容 Logseq)",DOWNLOAD_LIBRARY:"导出 stencil 库为 *.excalidrawlib 文件",OPEN_EXISTING_NEW_PANE:"打开已有的绘图 - 于新面板",OPEN_EXISTING_ACTIVE_PANE:"打开已有的绘图 - 于当前面板",TRANSCLUDE:"嵌入绘图(形如 ![[drawing]])到当前 Markdown 文档中",TRANSCLUDE_MOST_RECENT:"嵌入最近编辑过的绘图(形如 ![[drawing]])到当前 Markdown 文档中",TOGGLE_LEFTHANDED_MODE:"切换为左手模式",NEW_IN_NEW_PANE:"新建绘图 - 于新面板",NEW_IN_NEW_TAB:"新建绘图 - 于新页签",NEW_IN_ACTIVE_PANE:"新建绘图 - 于当前面板",NEW_IN_POPOUT_WINDOW:"新建绘图 - 于新窗口",NEW_IN_NEW_PANE_EMBED:"新建绘图 - 于新面板 - 并将其嵌入(形如 ![[drawing]])到当前 Markdown 文档中",NEW_IN_NEW_TAB_EMBED:"新建绘图 - 于新页签 - 并将其嵌入(形如 ![[drawing]])到当前 Markdown 文档中",NEW_IN_ACTIVE_PANE_EMBED:"新建绘图 - 于当前面板 - 并将其嵌入(形如 ![[drawing]])到当前 Markdown 文档中",NEW_IN_POPOUT_WINDOW_EMBED:"新建绘图 - 于新窗口 - 并将其嵌入(形如 ![[drawing]])到当前 Markdown 文档中",TOGGLE_LOCK:"文本元素:原文模式(RAW)⟺ 预览模式(PREVIEW)",DELETE_FILE:"从库中删除所选图像或 MD-Embed 的源文件",INSERT_LINK_TO_ELEMENT:`复制所选元素为内部链接(形如 [[file#^id]] )。\n按住 ${labelCTRL()} 可复制元素所在分组为内部链接(形如 [[file#^group=id]] )。\n按住 SHIFT 可复制所选元素所在区域为内部链接(形如 [[file#^area=id]] )。\n按住 ${labelALT()} 可观看视频演示。`,INSERT_LINK_TO_ELEMENT_GROUP:"复制所选元素所在分组为内部链接(形如 [[file#^group=id]] )",INSERT_LINK_TO_ELEMENT_AREA:"复制所选元素所在区域为内部链接(形如 [[file#^area=id]] )",INSERT_LINK_TO_ELEMENT_FRAME:"复制所选框架为内部链接(形如 [[file#^frame=id]] )",INSERT_LINK_TO_ELEMENT_NORMAL:"复制所选元素为内部链接(形如 [[file#^id]] )",INSERT_LINK_TO_ELEMENT_ERROR:"未选择画布里的单个元素",INSERT_LINK_TO_ELEMENT_READY:"链接已生成并复制到剪贴板",INSERT_LINK:"插入任意文件(以内部链接形式嵌入,形如 [[drawing]] )到当前绘图中",INSERT_IMAGE:"插入图像或 Excalidraw 绘图(以图像形式嵌入)到当前绘图中",IMPORT_SVG:"从 SVG 文件导入图形元素到当前绘图中(暂不支持文本元素)",INSERT_MD:"插入 Markdown 文档(以图像形式嵌入)到当前绘图中",INSERT_PDF:"插入 PDF 文档(以图像形式嵌入)到当前绘图中",UNIVERSAL_ADD_FILE:"插入任意文件(以 iFrame 形式嵌入)到当前绘图中",INSERT_LATEX:`插入 LaTeX 公式到当前绘图。按住 ${labelALT()} 可观看视频演示。`,ENTER_LATEX:"输入 LaTeX 表达式",READ_RELEASE_NOTES:"阅读本插件的更新说明",RUN_OCR:"OCR:识别涂鸦和图片里的文本并复制到剪贴板",TRAY_MODE:"绘图工具属性页:面板模式 ⟺ 托盘模式",SEARCH:"搜索文本",RESET_IMG_TO_100:"重设图像元素的尺寸为 100%",TEMPORARY_DISABLE_AUTOSAVE:"临时禁用自动保存功能,直到本次 Obsidian 退出(小白慎用!)",TEMPORARY_ENABLE_AUTOSAVE:"启用自动保存功能",INSTALL_SCRIPT_BUTTON:"安装或更新 Excalidraw 脚本",OPEN_AS_MD:"打开为 Markdown 文档",EXPORT_IMAGE:"导出为图像",OPEN_LINK:"打开所选元素里的链接 \n(按住 SHIFT 在新面板打开)",EXPORT_EXCALIDRAW:"导出为 .excalidraw 文件(旧版绘图文件格式)",LINK_BUTTON_CLICK_NO_TEXT:"请选择一个含有链接的图形或文本元素。",FILENAME_INVALID_CHARS:'文件名不能含有以下符号: * " \\ < > : | ? #',FORCE_SAVE:"保存(同时更新嵌入了该绘图的 Markdown 文档)",RAW:"文本元素正以原文(RAW)模式显示链接。\n点击切换到预览(PREVIEW)模式",PARSED:"文本元素正以预览(PREVIEW)模式显示链接。\n点击切换到原文(RAW)模式",NOFILE:"Excalidraw(没有文件)",COMPATIBILITY_MODE:"*.excalidraw 是兼容旧版的绘图文件格式。需要转换为新格式才能解锁本插件的全部功能。",CONVERT_FILE:"转换为新格式",BACKUP_AVAILABLE:"加载绘图文件时出错,可能是由于 Obsidian 在上次保存时意外退出了(手机上更容易发生这种意外)。

好消息:这台设备上存在备份。您是否想要恢复本设备上的备份?

(我建议您先尝试在最近使用过的其他设备上打开该绘图,以检查是否有更新的备份。)",BACKUP_RESTORED:"已恢复备份",CACHE_NOT_READY:"抱歉,加载绘图文件时出错。

现在有耐心,将来更省心。

该插件有备份机制,但您似乎刚刚打开 Obsidian,需要等待一分钟或更长的时间来读取缓存。缓存读取完毕时,您将会在右上角收到提示。

请点击 OK 并耐心等待缓存,或者选择点击取消后手动修复你的文件。
",OBSIDIAN_TOOLS_PANEL:"Obsidian 工具面板",ERROR_SAVING_IMAGE:"获取图像时发生未知错误",WARNING_PASTING_ELEMENT_AS_TEXT:"你不能将 Excalidraw 元素粘贴为文本元素!",USE_INSERT_FILE_MODAL:"使用“插入任意文件(以 iFrame 形式嵌入)”功能来嵌入 Markdown 文档",RELEASE_NOTES_NAME:"显示更新说明",RELEASE_NOTES_DESC:"开启:每次更新本插件后,显示最新发行版本的说明。
关闭:您仍可以在 GitHub 上阅读更新说明。",NEWVERSION_NOTIFICATION_NAME:"通知插件更新",NEWVERSION_NOTIFICATION_DESC:"开启:当本插件存在可用更新时,显示通知。
关闭:您需要手动检查本插件的更新(设置 - 第三方插件 - 检查更新)。",FOLDER_NAME:"Excalidraw 文件夹",FOLDER_DESC:"新绘图的默认存储路径。若为空,将在库的根目录中创建新绘图。",FOLDER_EMBED_NAME:"将 Excalidraw 文件夹用于“新建绘图”系列命令",FOLDER_EMBED_DESC:"在命令面板中执行“新建绘图”系列命令时,新建的绘图文件的存储路径。
开启:使用 Excalidraw 文件夹。
关闭:使用 Obsidian 设置的新附件默认位置。",TEMPLATE_NAME:"Excalidraw 模板文件",TEMPLATE_DESC:"Excalidraw 模板文件的完整路径。
如果您的模板在默认的 Excalidraw 文件夹中且文件名是 Template.md,则此项应设为 Excalidraw/Template.md(也可省略 .md 扩展名,即 Excalidraw/Template)。
如果您在兼容模式下使用 Excalidraw,那么您的模板文件也必须是旧的 *.excalidraw 格式,例如 Excalidraw/Template.excalidraw。",SCRIPT_FOLDER_NAME:"Excalidraw 自动化脚本的文件夹(大小写敏感!)",SCRIPT_FOLDER_DESC:"此文件夹用于存放 Excalidraw 自动化脚本。您可以在 Obsidian 命令面板中执行这些脚本,还可以为喜欢的脚本分配快捷键,就像为其他 Obsidian 命令分配快捷键一样。
该项不能设为库的根目录。",SAVING_HEAD:"保存",COMPRESS_NAME:"压缩 Excalidraw JSON",COMPRESS_DESC:"Excalidraw 绘图文件默认将元素记录为 JSON 格式。开启此项,可将元素的 JSON 数据以 BASE64 编码(使用 LZ-String 算法)。这样做的好处是:一方面可以避免原来的明文 JSON 数据干扰 Obsidian 的文本搜索结果,另一方面减小了绘图文件的体积。
当您通过功能区按钮或命令将绘图切换成 Markdown 模式时,数据将被解码回 JSON 格式以便阅读和编辑;而当您切换回 Excalidraw 模式时,数据就会被再次编码。
开启此项后,对于之前已存在但未压缩的绘图文件,需要重新打开并保存才能生效。",AUTOSAVE_INTERVAL_DESKTOP_NAME:"桌面端自动保存时间间隔",AUTOSAVE_INTERVAL_DESKTOP_DESC:"每隔多长时间自动保存一次(如果绘图文件没有发生改变,将不会保存)。当 Obsidian 应用内的焦点离开活动文档(如关闭工作空间、点击菜单栏、切换到其他页签或面板等)的时候,也会触发自动保存。直接退出 Obsidian 应用(不管是终结进程还是点关闭按钮)不会触发自动保存。",AUTOSAVE_INTERVAL_MOBILE_NAME:"移动端自动保存时间间隔",AUTOSAVE_INTERVAL_MOBILE_DESC:"建议在移动端设置更短的时间间隔。当 Obsidian 应用内的焦点离开活动文档(如关闭工作空间、点击菜单栏、切换到其他页签或面板等)的时候,也会触发自动保存。直接退出 Obsidian 应用(在应用切换器中划掉)不会触发自动保存。此外,当您切换到其他应用时,有时候系统会自动清理 Obsidian 后台以释放资源。这种情况下,自动保存会失效。",FILENAME_HEAD:"文件名",FILENAME_DESC:"

点击阅读日期和时间格式参考

",FILENAME_SAMPLE:"“新建绘图”系列命令创建的文件名形如:",FILENAME_EMBED_SAMPLE:"“新建绘图并嵌入到当前 Markdown 文档中”系列命令创建的文件名形如:",FILENAME_PREFIX_NAME:"“新建绘图”系列命令创建的文件名前缀",FILENAME_PREFIX_DESC:"执行“新建绘图”系列命令时,创建的绘图文件名的第一部分",FILENAME_PREFIX_EMBED_NAME:"“新建绘图并嵌入到当前 Markdown 文档中”系列命令创建的文件名前缀",FILENAME_PREFIX_EMBED_DESC:"执行“新建绘图并嵌入到当前 Markdown 文档中”系列命令时,创建的绘图文件名是否以当前文档名作为前缀?
开启:
关闭:否",FILENAME_POSTFIX_NAME:"“新建绘图并嵌入到当前 Markdown 文档中”系列命令创建的文件名的中间部分",FILENAME_POSTFIX_DESC:"介于文件名前缀和日期时间之间的文本。仅对“新建绘图并嵌入到当前 Markdown 文档中”系列命令创建的绘图生效。",FILENAME_DATE_NAME:"文件名里的日期时间",FILENAME_DATE_DESC:"文件名的最后一部分。允许留空。",FILENAME_EXCALIDRAW_EXTENSION_NAME:"文件扩展名(.excalidraw.md 或 .md)",FILENAME_EXCALIDRAW_EXTENSION_DESC:"该选项在兼容模式(即非 Excalidraw 专用 Markdown 文件)下不会生效。
开启:使用 .excalidraw.md 作为扩展名。
关闭:使用 .md 作为扩展名。",DISPLAY_HEAD:"显示",DYNAMICSTYLE_NAME:"动态样式",DYNAMICSTYLE_DESC:"根据画布颜色调节 Excalidraw 界面颜色",LEFTHANDED_MODE_NAME:"左手模式",LEFTHANDED_MODE_DESC:"目前只在托盘模式下生效。若开启此项,则托盘(绘图工具属性页)将位于右侧。
开启:左手模式。
关闭:右手模式。",IFRAME_MATCH_THEME_NAME:"使 MD-Embed 匹配 Excalidraw 主题",IFRAME_MATCH_THEME_DESC:"开启:当你的 Obsidian 和 Excalidraw 一个使用黑暗主题、一个使用明亮主题时,开启此项,MD-Embed 将会匹配 Excalidraw 主题。
关闭:如果你想要 MD-Embed 匹配 Obsidian 主题,请关闭此项。",MATCH_THEME_NAME:"使新建的绘图匹配 Obsidian 主题",MATCH_THEME_DESC:"如果 Obsidian 使用黑暗主题,新建的绘图文件也将使用黑暗主题。
但是若设置了模板,新建的绘图文件将跟随模板主题;另外,此功能不会作用于已有的绘图。
开启:跟随 Obsidian 主题风格。
关闭:跟随模板主题风格。",MATCH_THEME_ALWAYS_NAME:"使已有的绘图匹配 Obsidian 主题",MATCH_THEME_ALWAYS_DESC:"如果 Obsidian 使用黑暗主题,则绘图文件也将以黑暗主题打开;反之亦然。
开启:匹配 Obsidian 主题风格。
关闭:采用上次保存时的主题风格。",MATCH_THEME_TRIGGER_NAME:"Excalidraw 主题跟随 Obsidian 主题变化",MATCH_THEME_TRIGGER_DESC:"开启此项,则切换 Obsidian 的黑暗/明亮主题时,已打开的 Excalidraw 面板的主题会随之改变。
开启:跟随主题变化。
关闭:不跟随主题变化。",DEFAULT_OPEN_MODE_NAME:"Excalidraw 的默认运行模式",DEFAULT_OPEN_MODE_DESC:"设置 Excalidraw 的运行模式:普通模式(Normal)/禅模式(Zen)/阅读模式(View)。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-default-mode: normal/zen/view 的键值对。",DEFAULT_PEN_MODE_NAME:"触控笔模式(Pen mode)",DEFAULT_PEN_MODE_DESC:"打开绘图时,是否自动开启触控笔模式?",DEFAULT_PINCHZOOM_NAME:"允许在触控笔模式下进行双指缩放",DEFAULT_PINCHZOOM_DESC:"在触控笔模式下使用自由画笔工具时,双指缩放可能造成干扰。
开启: 允许在触控笔模式下进行双指缩放
关闭: 禁止在触控笔模式下进行双指缩放",DEFAULT_WHEELZOOM_NAME:"鼠标滚轮缩放页面",DEFAULT_WHEELZOOM_DESC:`开启:鼠标滚轮为缩放页面,${labelCTRL()}+鼠标滚轮为滚动页面
关闭:鼠标滚轮为滚动页面,${labelCTRL()}+鼠标滚轮为缩放页面`,ZOOM_TO_FIT_NAME:"调节面板尺寸后自动缩放页面",ZOOM_TO_FIT_DESC:"调节面板尺寸后,自适应地缩放页面
开启:自动缩放。
关闭:禁用自动缩放。",ZOOM_TO_FIT_ONOPEN_NAME:"打开绘图时自动缩放页面",ZOOM_TO_FIT_ONOPEN_DESC:"打开绘图文件时,自适应地缩放页面
开启:自动缩放。
关闭:禁用自动缩放。",ZOOM_TO_FIT_MAX_LEVEL_NAME:"自动缩放的最高级别",ZOOM_TO_FIT_MAX_LEVEL_DESC:"自动缩放画布时,允许放大的最高级别。该值不能低于 0.5(50%)且不能超过 10(1000%)。",LINKS_HEAD:"链接(Links) & 以内部链接形式嵌入到绘图中的 Markdown 文档(Transclusion)",LINKS_DESC:`按住 ${labelCTRL()} 并点击包含 [[链接]] 的文本元素可以打开其中的链接。如果所选文本元素包含多个 [[有效的内部链接]] ,只会打开第一个链接;如果所选文本元素包含有效的 URL 链接 (如 https://http://),插件会在浏览器中打开链接。
链接的源文件被重命名时,绘图中相应的 [[内部链接]] 也会同步更新。若您不愿绘图中的链接外观因此而变化,可使用 [[内部链接|别名]]。`,ADJACENT_PANE_NAME:"在相邻面板中打开",ADJACENT_PANE_DESC:`按住 ${labelCTRL()}+SHIFT 并点击绘图里的内部链接时,插件默认会在新面板中打开该链接。
若开启此项,Excalidraw 会先尝试寻找已有的相邻面板(按照右侧、左侧、上方、下方的顺序),并在其中打开该链接。如果找不到,再在新面板中打开。`,MAINWORKSPACE_PANE_NAME:"在主工作区中打开",MAINWORKSPACE_PANE_DESC:`按住 ${labelCTRL()}+SHIFT 并点击绘图里的内部链接时,插件默认会在当前窗口的新面板中打开该链接。
若开启此项,Excalidraw 会在主工作区的面板中打开该链接。`,LINK_BRACKETS_NAME:"在链接的两侧显示 [[中括号]]",LINK_BRACKETS_DESC:"文本元素处于预览(PREVIEW)模式时,在内部链接的两侧显示中括号。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-link-brackets: true/false 的键值对。",LINK_PREFIX_NAME:"内部链接的前缀",LINK_PREFIX_DESC:'文本元素处于预览(PREVIEW)模式时,如果其中包含链接,则添加此前缀。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-link-prefix: "📍 " 的键值对。',URL_PREFIX_NAME:"外部链接的前缀",URL_PREFIX_DESC:'文本元素处于预览(PREVIEW)模式时,如果其中包含外部链接,则添加此前缀。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-url-prefix: "🌐 " 的键值对。',PARSE_TODO_NAME:"待办任务(Todo)",PARSE_TODO_DESC:"将文本元素中的 - [ ]- [x] 前缀显示为方框。",TODO_NAME:"未完成项目",TODO_DESC:"未完成的待办项目的符号",DONE_NAME:"已完成项目",DONE_DESC:"已完成的待办项目的符号",HOVERPREVIEW_NAME:"鼠标悬停预览内部链接",HOVERPREVIEW_DESC:`开启:在 Excalidraw 阅读模式(View)下,鼠标悬停在 [[内部链接]] 上即可预览;而在普通模式(Normal)下, 鼠标悬停在内部链接右上角的蓝色标识上即可预览。
关闭:鼠标悬停在 [[内部链接]] 上,并且按住 ${labelCTRL()} 才能预览。`,LINKOPACITY_NAME:"链接标识的透明度",LINKOPACITY_DESC:"含有链接的元素,其右上角的链接标识的透明度。介于 0(全透明)到 1(不透明)之间。",LINK_CTRL_CLICK_NAME:`按住 ${labelCTRL()} 并点击含有 [[链接]] 或 [别名](链接) 的文本来打开链接`,LINK_CTRL_CLICK_DESC:"如果此功能影响到您使用某些原版 Excalidraw 功能,可将其关闭。关闭后,您只能通过绘图面板标题栏中的链接按钮来打开链接。",TRANSCLUSION_WRAP_NAME:"Transclusion 的折行方式",TRANSCLUSION_WRAP_DESC:"中的 number 表示嵌入的文本溢出时,在第几个字符处进行折行。
此开关控制具体的折行方式。若开启,则严格在 number 处折行,禁止溢出;若关闭,则允许在 number 位置后最近的空格处折行。",TRANSCLUSION_DEFAULT_WRAP_NAME:"Transclusion 的默认折行位置",TRANSCLUSION_DEFAULT_WRAP_DESC:"除了通过 ![[doc#^block]]{number} 中的 number 来控制折行位置,您也可以在此设置 number 的默认值。
一般设为 0 即可,表示不设置固定的默认值,这样当您需要嵌入文档到便签中时,Excalidraw 能更好地帮您自动处理。",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"Transclusion 的最大显示字符数",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"以 ![[内部链接]]![](内部链接) 的形式将文档以文本形式嵌入到绘图中时,该文档在绘图中可显示的最大字符数量。",QUOTE_TRANSCLUSION_REMOVE_NAME:"隐藏 Transclusion 行首的引用符号",QUOTE_TRANSCLUSION_REMOVE_DESC:"不显示 Transclusion 中每一行行首的 > 符号,以提高纯文本 Transclusion 的可读性。
开启:隐藏 > 符号
关闭:不隐藏 > 符号(注意,由于 Obsidian API 的原因,首行行首的 > 符号不会被隐藏)",GET_URL_TITLE_NAME:"使用 iframly 获取页面标题",GET_URL_TITLE_DESC:"拖放链接到 Excalidraw 时,使用 http://iframely.server.crestify.com/iframely?url= 来获取页面的标题。",MD_HEAD:"以图像形式嵌入到绘图中的 Markdown 文档(MD-Embed)",MD_HEAD_DESC:`除了 Transclusion,您还可以将 Markdown 文档以图像形式嵌入到绘图中。方法是按住 ${labelCTRL()} 并从文件管理器中把文档拖入绘图,或者执行“以图像形式嵌入”系列命令。`,MD_TRANSCLUDE_WIDTH_NAME:"MD-Embed 的默认宽度",MD_TRANSCLUDE_WIDTH_DESC:"MD-Embed 的宽度。该选项会影响到折行,以及图像元素的宽度。
您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 [[Embed文件名#标题|宽度x最大高度]]。",MD_TRANSCLUDE_HEIGHT_NAME:"MD-Embed 的默认最大高度",MD_TRANSCLUDE_HEIGHT_DESC:"MD-Embed 的高度取决于 Markdown 文档内容的多少,但最大不会超过该值。
您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 [[Embed文件名#^块引ID|宽度x最大高度]]。",MD_DEFAULT_FONT_NAME:"MD-Embed 的默认字体",MD_DEFAULT_FONT_DESC:"可以设为 VirgilCasadia 或其他有效的 .ttf/.woff/.woff2 字体文件(如 我的字体.woff2)。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-font: 字体名或文件名 的键值对。",MD_DEFAULT_COLOR_NAME:"MD-Embed 的默认文本颜色",MD_DEFAULT_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 HTML Color Names),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-font-color: steelblue 的键值对。",MD_DEFAULT_BORDER_COLOR_NAME:"MD-Embed 的默认边框颜色",MD_DEFAULT_BORDER_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 HTML Color Names),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-border-color: gray 的键值对。
如果您不想要边框,请留空。",MD_CSS_NAME:"MD-Embed 的默认 CSS 样式表",MD_CSS_DESC:"MD-Embed 图像所采用的 CSS 样式表文件名。需包含扩展名,例如 md-embed.css。允许使用 Markdown 文件(如 md-embed-css.md),但其内容应符合 CSS 语法。
如果您要查询 CSS 所作用的 HTML 节点,请在 Obsidian 开发者控制台(CTRL+SHIFT+i)中键入命令:ExcalidrawAutomate.mostRecentMarkdownSVG —— 这将显示 Excalidraw 最近生成的 SVG。
此外,在 CSS 中不能任意地设置字体,您一般只能使用系统默认的标准字体(详见 README),但可以通过上面的设置来额外添加一个自定义字体。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-css: 库中的CSS文件或CSS片段 的键值对。",EMBED_HEAD:"嵌入到 Markdown 文档中的绘图 & 导出",EMBED_CACHING:"启用预览图",EMBED_SIZING:"预览图的尺寸",EMBED_THEME_BACKGROUND:"预览图的主题和背景色",EMBED_IMAGE_CACHE_NAME:"为嵌入到 Markdown 文档中的绘图创建预览图",EMBED_IMAGE_CACHE_DESC:"为嵌入到文档中的绘图创建预览图。可提高下次嵌入的速度。但如果绘图中又嵌入了子绘图,当子绘图改变时,您需要打开子绘图并手动保存,才能够更新父绘图的预览图。",EMBED_IMAGE_CACHE_CLEAR:"清除预览图",BACKUP_CACHE_CLEAR:"清除备份",BACKUP_CACHE_CLEAR_CONFIRMATION:"该操作将删除所有绘图文件的备份。备份是绘图文件损坏时的一种补救手段。每次您打开 Obsidian 时,本插件会自动清理无用的备份。您确定要删除所有备份吗?",EMBED_REUSE_EXPORTED_IMAGE_NAME:"将之前已导出的图像作为预览图",EMBED_REUSE_EXPORTED_IMAGE_DESC:"该选项与“自动导出 SVG/PNG 副本”选项配合使用。如果嵌入到 Markdown 文档中的绘图文件存在同名的 SVG/PNG 副本,则将其作为预览图,而不再重新生成。
该选项能够提高 Markdown 文档的打开速度,尤其是当嵌入到 Markdown 文档中的绘图文件中含有大量图像或 MD-Embed 时。但是,该选项也可能导致预览图无法立即响应你对绘图文件或者 Obsidian 主题风格的修改。
该选项仅作用于嵌入到 Markdown 文档中的绘图。该选项无法提升绘图文件的打开速度。详见此说明。",EMBED_PREVIEW_IMAGETYPE_NAME:"预览图的格式",EMBED_PREVIEW_IMAGETYPE_DESC:"原始 SVG:高品质、可交互。
SVG:高品质、不可交互。
PNG:高性能、不可交互。",PREVIEW_MATCH_OBSIDIAN_NAME:"预览图匹配 Obsidian 主题",PREVIEW_MATCH_OBSIDIAN_DESC:"开启此项,则当 Obsidian 处于黑暗模式时,嵌入到 Markdown 文档中的绘图的预览图也会以黑暗模式渲染;当 Obsidian 处于明亮模式时,预览图也会以明亮模式渲染。
您可能还需要关闭“导出的图像包含背景”开关,来获得与 Obsidian 更加协调的观感。",EMBED_WIDTH_NAME:"预览图的默认宽度",EMBED_WIDTH_DESC:"嵌入到 Markdown 文档中的绘图的预览图的默认宽度。该选项也适用于鼠标悬停时浮现的预览图。
您可为某个要嵌入到 Markdown 文档中的绘图文件单独设置此项,方法是修改相应的内部链接格式为形如 ![[drawing.excalidraw|100]][[drawing.excalidraw|100x100]]。",EMBED_TYPE_NAME:"“嵌入绘图到当前 Markdown 文档中”系列命令的源文件类型",EMBED_TYPE_DESC:"在命令面板中执行“嵌入绘图到当前 Markdown 文档中”系列命令时,要嵌入绘图文件本身,还是嵌入其 PNG 或 SVG 副本。
如果您想选择 PNG 或 SVG 副本,需要先开启下方的“自动导出 PNG 副本”或“自动导出 SVG 副本”。
如果您选择了 PNG 或 SVG 副本,当副本不存在时,该命令将会插入一条损坏的链接,您需要打开绘图文件并手动导出副本才能修复 —— 也就是说,该选项不会自动帮您生成 PNG/SVG 副本,而只会引用已有的 PNG/SVG 副本。",EMBED_WIKILINK_NAME:"“嵌入绘图到当前 Markdown 文档中”系列命令产生的内部链接类型",EMBED_WIKILINK_DESC:"开启:将产生 ![[Wiki 链接]]关闭:将产生 ![](Markdown 链接)。",EXPORT_PNG_SCALE_NAME:"导出的 PNG 图像的比例",EXPORT_PNG_SCALE_DESC:"导出的 PNG 图像的大小比例",EXPORT_BACKGROUND_NAME:"导出的图像包含背景",EXPORT_BACKGROUND_DESC:"如果关闭,将导出透明背景的图像。",EXPORT_PADDING_NAME:"导出的图像的空白边距",EXPORT_PADDING_DESC:"导出的 SVG/PNG 图像四周的空白边距(单位:像素)。
增加该值,可以避免在导出图像时,靠近图像边缘的图形被裁掉。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-export-padding: 5 的键值对。",EXPORT_THEME_NAME:"导出的图像匹配主题",EXPORT_THEME_DESC:"导出与绘图的黑暗/明亮主题匹配的图像。如果关闭,在黑暗主题下导出的图像将和明亮主题一样。",EXPORT_HEAD:"导出设置",EXPORT_SYNC_NAME:"保持 SVG/PNG 文件名与绘图文件同步",EXPORT_SYNC_DESC:"打开后,当绘图文件被重命名时,插件将同步更新同文件夹下的同名 .SVG 和 .PNG 文件。当绘图文件被删除时,插件将自动删除同文件夹下的同名 .SVG 和 .PNG 文件。",EXPORT_SVG_NAME:"自动导出 SVG 副本",EXPORT_SVG_DESC:"自动导出和绘图文件同名的 SVG 副本。插件会将副本保存到绘图文件所在的文件夹中。在文档中嵌入这个 SVG 文件,相比直接嵌入绘图文件,具有更强的跨平台能力。
此开关开启时,每次您编辑 Excalidraw 绘图,其 SVG 文件副本都会同步更新。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-autoexport: none/both/svg/png的键值对",EXPORT_PNG_NAME:"自动导出 PNG 副本",EXPORT_PNG_DESC:"和“自动导出 SVG 副本”类似,但是导出格式为 *.PNG。",EXPORT_BOTH_DARK_AND_LIGHT_NAME:"同时导出黑暗和明亮主题风格的图像",EXPORT_BOTH_DARK_AND_LIGHT_DESC:"若开启,Excalidraw 将导出两个文件:filename.dark.png(或 filename.dark.svg)和 filename.light.png(或 filename.light.svg)。
该选项可作用于“自动导出 SVG 副本”、“自动导出 PNG 副本”,以及其他的手动的导出命令。",COMPATIBILITY_HEAD:"兼容性设置",EXPORT_EXCALIDRAW_NAME:"自动导出 Excalidraw 旧格式副本",EXPORT_EXCALIDRAW_DESC:"和“自动导出 SVG 副本”类似,但是导出格式为 *.excalidraw。",SYNC_EXCALIDRAW_NAME:"新旧格式绘图文件的内容保持同步",SYNC_EXCALIDRAW_DESC:"如果旧格式(*.excalidraw)绘图文件的修改日期比新格式(*.md)更新,则根据旧格式文件的内容来更新新格式文件。",COMPATIBILITY_MODE_NAME:"以旧格式创建新绘图",COMPATIBILITY_MODE_DESC:"开启此功能后,您通过功能区按钮、命令面板、文件浏览器等创建的绘图都将是旧格式(*.excalidraw)。此外,您打开旧格式绘图文件时将不再收到警告消息。",MATHJAX_NAME:"MathJax (LaTeX) 的 javascript 库服务器",MATHJAX_DESC:"如果您在绘图中使用 LaTeX,插件需要从服务器获取并加载一个 javascript 库。如果您的网络无法访问某些库服务器,可以尝试通过此选项更换库服务器。更改此选项后,您可能需要重启 Obsidian 来使其生效。",LATEX_DEFAULT_NAME:"插入 LaTeX 时的默认表达式",LATEX_DEFAULT_DESC:"允许留空。允许使用类似 \\color{white} 的格式化表达式。",NONSTANDARD_HEAD:"非 Excalidraw.com 官方支持的特性",NONSTANDARD_DESC:"这些特性不受 Excalidraw.com 官方支持。当导出绘图到 Excalidraw.com 时,这些特性将会发生变化。",CUSTOM_PEN_NAME:"自定义画笔的数量",CUSTOM_PEN_DESC:"在画布上的 Obsidian 菜单旁边切换自定义画笔。长按画笔按钮可以修改其样式。",EXPERIMENTAL_HEAD:"实验性功能",EXPERIMENTAL_DESC:"以下部分设置不会立即生效,需要刷新文件资源管理器或者重启 Obsidian 才会生效。",FIELD_SUGGESTER_NAME:"开启字段建议",FIELD_SUGGESTER_DESC:"开启后,当您在编辑器中输入 excalidraw- 或者 ea. 时,会弹出一个带有函数说明的自动补全提示菜单。
该功能借鉴了 Breadcrumbs 和 Templater 插件。",FILETYPE_NAME:"在文件浏览器中为 excalidraw.md 文件添加类型标识符(如 ✏️)",FILETYPE_DESC:"可通过下一项设置来自定义类型标识符。",FILETAG_NAME:"excalidraw.md 文件的类型标识符",FILETAG_DESC:"要显示为类型标识符的 emoji 或文本。",INSERT_EMOJI:"插入 emoji",LIVEPREVIEW_NAME:"嵌入绘图到文档时,模拟嵌入图像的语法",LIVEPREVIEW_DESC:"开启此项,则可在 Obsidian 实时预览模式的编辑视图下,用形如 ![[绘图|宽度|样式]] 的语法来嵌入绘图。
该选项不会在已打开的文档中立刻生效 —— 你需要重新打开此文档来使其生效。",ENABLE_FOURTH_FONT_NAME:"为文本元素启用本地字体",ENABLE_FOURTH_FONT_DESC:"开启此项后,文本元素的属性面板里会多出一个本地字体按钮。
使用了本地字体的绘图文件,将会失去一部分跨平台能力 —— 若将绘图文件移动到其他库中打开,显示效果可能会截然不同;若在 excalidraw.com 或者其他版本的 Excalidraw 中打开,使用本地字体的文本会变回系统默认字体。",FOURTH_FONT_NAME:"本地字体文件",FOURTH_FONT_DESC:"选择库文件夹中的一个 .ttf, .woff 或 .woff2 字体文件作为本地字体文件。若未选择文件,则使用默认的 Virgil 字体。",SCRIPT_SETTINGS_HEAD:"已安装脚本的设置",TASKBONE_HEAD:"Taskbone OCR(光学符号识别)",TASKBONE_DESC:"这是一个将 OCR 融入 Excalidraw 的实验性功能。请注意,Taskbone 是一项独立的外部服务,而不是由 Excalidraw 或 Obsidian-excalidraw-plugin 项目提供的。OCR 能够对画布上用自由画笔工具写下的涂鸦或者嵌入的图像进行文本识别,并将识别出来的文本写入绘图文件的 frontmatter,同时复制到剪贴板。之所以要写入 frontmatter 是为了便于您在 Obsidian 中能够搜索到这些文本。注意,识别的过程不是在本地进行的,而是通过在线 API,图像会被上传到 taskbone 的服务器(仅用于识别目的)。如果您介意,请不要使用这个功能。",TASKBONE_ENABLE_NAME:"启用 Taskbone",TASKBONE_ENABLE_DESC:"启用这个功能意味着你同意 Taskbone 条款及细则 以及 隐私政策.",TASKBONE_APIKEY_NAME:"Taskbone API Key",TASKBONE_APIKEY_DESC:"Taskbone 的免费 API key 提供了一定数量的每月识别次数。如果您非常频繁地使用此功能,或者想要支持 Taskbone 的开发者(您懂的,没有人能用爱发电,Taskbone 开发者也需要投入资金来维持这项 OCR 服务)您可以到 taskbone.com 购买一个商用 API key。购买后请将它填写到旁边这个文本框里,替换掉原本自动生成的免费 API key。",SELECT_FILE:"选择一个文件后按回车。",SELECT_FILE_WITH_OPTION_TO_SCALE:`选择一个文件后按回车,或者 SHIFT+${labelMETA()}+ENTER 以 100% 尺寸插入。`,NO_MATCH:"查询不到匹配的文件。",SELECT_FILE_TO_LINK:"选择要插入(以内部链接形式嵌入)到当前绘图中的文件。",SELECT_DRAWING:"选择要插入(以图像形式嵌入)到当前绘图中的图像或绘图文件。",TYPE_FILENAME:"键入要选择的绘图名称。",SELECT_FILE_OR_TYPE_NEW:"选择已有绘图,或者键入新绘图文件的名称,然后按回车。",SELECT_TO_EMBED:"选择要插入(嵌入)到当前 Markdown 文档中的绘图。",SELECT_MD:"选择要插入(以图像形式嵌入)到当前绘图中的 Markdown 文档。",SELECT_PDF:"选择要插入(以图像形式嵌入)到当前绘图中的 PDF 文档。",PDF_PAGES_HEADER:"页码范围",PDF_PAGES_DESC:"示例:1, 3-5, 7, 9-11",INFINITE_LOOP_WARNING:"EXCALIDRAW 警告\n停止加载嵌入的图像,因为此文件中存在死循环:\n",SCRIPT_EXECUTION_ERROR:"脚本运行错误。请在开发者控制台中查看错误信息。",LOAD_FROM_BACKUP:"Excalidraw 文件已损坏。尝试从备份文件中加载。",GOTO_FULLSCREEN:"进入全屏模式",EXIT_FULLSCREEN:"退出全屏模式",TOGGLE_FULLSCREEN:"切换全屏模式",TOGGLE_DISABLEBINDING:"开启或关闭绑定",TOGGLE_FRAME_RENDERING:"开启或关闭框架渲染",TOGGLE_FRAME_CLIPPING:"开启或关闭框架裁剪",OPEN_LINK_CLICK:"打开所选的图形或文本元素里的链接",OPEN_LINK_PROPS:"编辑所选 MD-Embed 的内部链接,或者打开所选的图形或文本元素里的链接",NARROW_TO_HEADING:"缩放至标题",NARROW_TO_BLOCK:"缩放至块",SHOW_ENTIRE_FILE:"显示全部",ZOOM_TO_FIT:"缩放至合适大小",RELOAD:"重载",OPEN_IN_BROWSER:"在浏览器中打开",PROMPT_FILE_DOES_NOT_EXIST:"文件不存在。要创建吗?",PROMPT_ERROR_NO_FILENAME:"错误:文件名不能为空",PROMPT_ERROR_DRAWING_CLOSED:"未知错误。绘图文件可能已关闭或丢失",PROMPT_TITLE_NEW_FILE:"新建文件",PROMPT_TITLE_CONFIRMATION:"确认",PROMPT_BUTTON_CREATE_EXCALIDRAW:"创建 Excalidraw 绘图",PROMPT_BUTTON_CREATE_MARKDOWN:"创建 Markdown 文档",PROMPT_BUTTON_NEVERMIND:"算了",PROMPT_BUTTON_OK:"OK",PROMPT_BUTTON_CANCEL:"取消",PROMPT_BUTTON_INSERT_LINE:"插入一行",PROMPT_BUTTON_INSERT_SPACE:"插入空格",PROMPT_BUTTON_INSERT_LINK:"插入内部链接",PROMPT_BUTTON_UPPERCASE:"大写"},zhTW={};const localeMap={ar:ar,cs:cz,da:da,de:de,en:en,"en-gb":enGB,es:es,fr:fr,hi:hi,id:id,it:it,ja:ja,ko:ko,nl:nl,nn:no,pl:pl,pt:pt,"pt-br":ptBR,ro:ro,ru:ru,tr:tr,"zh-cn":zhCN,"zh-tw":zhTW},locale=localeMap[obsidian_module.moment.locale()];function t$d(e){return locale||errorlog({where:"helpers.t",message:"Error: Excalidraw locale not found",locale:obsidian_module.moment.locale()}),locale&&locale[e]||en[e]}var html2canvas$1={exports:{}}; +/*! + * html2canvas 1.4.1 + * Copyright (c) 2022 Niklas von Hertzen + * Released under MIT License + */html2canvas$1.exports,function(e,t){e.exports=function(){ /*! ***************************************************************************** Copyright (c) Microsoft Corporation. @@ -14,8 +18,66 @@ const EXCALIDRAW_PACKAGES = "PQKhCgAIUgBAbAlgYwKYDsDOrICVUCGyALlDAE6EkB0ADuQPYAm OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ -var e=function(t,A){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var A in t)Object.prototype.hasOwnProperty.call(t,A)&&(e[A]=t[A])},e(t,A)};function t(t,A){if("function"!=typeof A&&null!==A)throw new TypeError("Class extends value "+String(A)+" is not a constructor or null");function i(){this.constructor=t}e(t,A),t.prototype=null===A?Object.create(A):(i.prototype=A.prototype,new i)}var A=function(){return A=Object.assign||function(e){for(var t,A=1,i=arguments.length;A0&&n[n.length-1])||6!==a[0]&&2!==a[0])){r=0;continue}if(3===a[0]&&(!n||a[1]>n[0]&&a[1]=55296&&n<=56319&&A>10),r%1024+56320)),(n+1===A||i.length>16384)&&(a+=String.fromCharCode.apply(String,i),i.length=0)}return a},c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d="undefined"==typeof Uint8Array?[]:new Uint8Array(256),h=0;h=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",B="undefined"==typeof Uint8Array?[]:new Uint8Array(256),E=0;E>4,c[o++]=(15&i)<<4|n>>2,c[o++]=(3&n)<<6|63&a;return l}(e),i=Array.isArray(A)?function(e){for(var t=e.length,A=[],i=0;i0;){var r=i[--a];if(Array.isArray(e)?-1!==e.indexOf(r):e===r)for(var s=A;s<=i.length;){var o;if((o=i[++s])===t)return!0;if(o!==b)break}if(r!==b)break}return!1},ie=function(e,t){for(var A=e;A>=0;){var i=t[A];if(i!==b)return i;A--}return 0},ne=function(e,t,A,i,n){if(0===A[i])return z;var a=i-1;if(Array.isArray(n)&&!0===n[a])return z;var r=a-1,s=a+1,o=t[a],l=r>=0?t[r]:0,c=t[s];if(2===o&&3===c)return z;if(-1!==Z.indexOf(o))return"!";if(-1!==Z.indexOf(c))return z;if(-1!==q.indexOf(c))return z;if(8===ie(a,t))return Y;if(11===j.get(e[a]))return z;if((o===D||o===N)&&11===j.get(e[s]))return z;if(7===o||7===c)return z;if(9===o)return z;if(-1===[b,v,C].indexOf(o)&&9===c)return z;if(-1!==[y,F,x,U,M].indexOf(c))return z;if(ie(a,t)===I)return z;if(Ae(23,I,a,t))return z;if(Ae([y,F],T,a,t))return z;if(Ae(12,12,a,t))return z;if(o===b)return Y;if(23===o||23===c)return z;if(16===c||16===o)return Y;if(-1!==[v,C,T].indexOf(c)||14===o)return z;if(36===l&&-1!==te.indexOf(o))return z;if(o===M&&36===c)return z;if(c===S)return z;if(-1!==J.indexOf(c)&&o===Q||-1!==J.indexOf(o)&&c===Q)return z;if(o===O&&-1!==[P,D,N].indexOf(c)||-1!==[P,D,N].indexOf(o)&&c===k)return z;if(-1!==J.indexOf(o)&&-1!==_.indexOf(c)||-1!==_.indexOf(o)&&-1!==J.indexOf(c))return z;if(-1!==[O,k].indexOf(o)&&(c===Q||-1!==[I,C].indexOf(c)&&t[s+1]===Q)||-1!==[I,C].indexOf(o)&&c===Q||o===Q&&-1!==[Q,M,U].indexOf(c))return z;if(-1!==[Q,M,U,y,F].indexOf(c))for(var d=a;d>=0;){if((h=t[d])===Q)return z;if(-1===[M,U].indexOf(h))break;d--}if(-1!==[O,k].indexOf(c))for(d=-1!==[y,F].indexOf(o)?r:a;d>=0;){var h;if((h=t[d])===Q)return z;if(-1===[M,U].indexOf(h))break;d--}if(V===o&&-1!==[V,K,H,R].indexOf(c)||-1!==[K,H].indexOf(o)&&-1!==[K,G].indexOf(c)||-1!==[G,R].indexOf(o)&&c===G)return z;if(-1!==ee.indexOf(o)&&-1!==[S,k].indexOf(c)||-1!==ee.indexOf(c)&&o===O)return z;if(-1!==J.indexOf(o)&&-1!==J.indexOf(c))return z;if(o===U&&-1!==J.indexOf(c))return z;if(-1!==J.concat(Q).indexOf(o)&&c===I&&-1===X.indexOf(e[s])||-1!==J.concat(Q).indexOf(c)&&o===F)return z;if(41===o&&41===c){for(var u=A[a],g=1;u>0&&41===t[--u];)g++;if(g%2!=0)return z}return o===D&&c===N?z:Y},ae=function(e,t){t||(t={lineBreak:"normal",wordBreak:"normal"});var A=function(e,t){void 0===t&&(t="strict");var A=[],i=[],n=[];return e.forEach((function(e,a){var r=j.get(e);if(r>50?(n.push(!0),r-=50):n.push(!1),-1!==["normal","auto","loose"].indexOf(t)&&-1!==[8208,8211,12316,12448].indexOf(e))return i.push(a),A.push(16);if(4===r||11===r){if(0===a)return i.push(a),A.push(L);var s=A[a-1];return-1===$.indexOf(s)?(i.push(i[a-1]),A.push(s)):(i.push(a),A.push(L))}return i.push(a),31===r?A.push("strict"===t?T:P):r===W||29===r?A.push(L):43===r?e>=131072&&e<=196605||e>=196608&&e<=262141?A.push(P):A.push(L):void A.push(r)})),[i,A,n]}(e,t.lineBreak),i=A[0],n=A[1],a=A[2];"break-all"!==t.wordBreak&&"break-word"!==t.wordBreak||(n=n.map((function(e){return-1!==[Q,L,W].indexOf(e)?P:e})));var r="keep-all"===t.wordBreak?a.map((function(t,A){return t&&e[A]>=19968&&e[A]<=40959})):void 0;return[i,n,r]},re=function(){function e(e,t,A,i){this.codePoints=e,this.required="!"===t,this.start=A,this.end=i}return e.prototype.slice=function(){return l.apply(void 0,this.codePoints.slice(this.start,this.end))},e}(),se=45,oe=43,le=-1,ce=function(e){return e>=48&&e<=57},de=function(e){return ce(e)||e>=65&&e<=70||e>=97&&e<=102},he=function(e){return 10===e||9===e||32===e},ue=function(e){return function(e){return function(e){return e>=97&&e<=122}(e)||function(e){return e>=65&&e<=90}(e)}(e)||function(e){return e>=128}(e)||95===e},ge=function(e){return ue(e)||ce(e)||e===se},pe=function(e){return e>=0&&e<=8||11===e||e>=14&&e<=31||127===e},me=function(e,t){return 92===e&&10!==t},we=function(e,t,A){return e===se?ue(t)||me(t,A):!!ue(e)||!(92!==e||!me(e,t))},fe=function(e,t,A){return e===oe||e===se?!!ce(t)||46===t&&ce(A):ce(46===e?t:e)},Be=function(e){var t=0,A=1;e[t]!==oe&&e[t]!==se||(e[t]===se&&(A=-1),t++);for(var i=[];ce(e[t]);)i.push(e[t++]);var n=i.length?parseInt(l.apply(void 0,i),10):0;46===e[t]&&t++;for(var a=[];ce(e[t]);)a.push(e[t++]);var r=a.length,s=r?parseInt(l.apply(void 0,a),10):0;69!==e[t]&&101!==e[t]||t++;var o=1;e[t]!==oe&&e[t]!==se||(e[t]===se&&(o=-1),t++);for(var c=[];ce(e[t]);)c.push(e[t++]);var d=c.length?parseInt(l.apply(void 0,c),10):0;return A*(n+s*Math.pow(10,-r))*Math.pow(10,o*d)},Ee={type:2},be={type:3},ve={type:4},Ce={type:13},ye={type:8},Fe={type:21},xe={type:9},Se={type:10},Te={type:11},Ie={type:12},Ue={type:14},Qe={type:23},ke={type:1},Oe={type:25},Me={type:24},Le={type:26},De={type:27},Ne={type:28},He={type:29},Re={type:31},Pe={type:32},Ve=function(){function e(){this._value=[]}return e.prototype.write=function(e){this._value=this._value.concat(o(e))},e.prototype.read=function(){for(var e=[],t=this.consumeToken();t!==Pe;)e.push(t),t=this.consumeToken();return e},e.prototype.consumeToken=function(){var e=this.consumeCodePoint();switch(e){case 34:return this.consumeStringToken(34);case 35:var t=this.peekCodePoint(0),A=this.peekCodePoint(1),i=this.peekCodePoint(2);if(ge(t)||me(A,i)){var n=we(t,A,i)?2:1;return{type:5,value:this.consumeName(),flags:n}}break;case 36:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Ce;break;case 39:return this.consumeStringToken(39);case 40:return Ee;case 41:return be;case 42:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Ue;break;case oe:if(fe(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 44:return ve;case se:var a=e,r=this.peekCodePoint(0),s=this.peekCodePoint(1);if(fe(a,r,s))return this.reconsumeCodePoint(e),this.consumeNumericToken();if(we(a,r,s))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();if(r===se&&62===s)return this.consumeCodePoint(),this.consumeCodePoint(),Me;break;case 46:if(fe(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 47:if(42===this.peekCodePoint(0))for(this.consumeCodePoint();;){var o=this.consumeCodePoint();if(42===o&&47===(o=this.consumeCodePoint()))return this.consumeToken();if(o===le)return this.consumeToken()}break;case 58:return Le;case 59:return De;case 60:if(33===this.peekCodePoint(0)&&this.peekCodePoint(1)===se&&this.peekCodePoint(2)===se)return this.consumeCodePoint(),this.consumeCodePoint(),Oe;break;case 64:var c=this.peekCodePoint(0),d=this.peekCodePoint(1),h=this.peekCodePoint(2);if(we(c,d,h))return{type:7,value:this.consumeName()};break;case 91:return Ne;case 92:if(me(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();break;case 93:return He;case 61:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),ye;break;case 123:return Te;case 125:return Ie;case 117:case 85:var u=this.peekCodePoint(0),g=this.peekCodePoint(1);return u!==oe||!de(g)&&63!==g||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(e),this.consumeIdentLikeToken();case 124:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),xe;if(124===this.peekCodePoint(0))return this.consumeCodePoint(),Fe;break;case 126:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Se;break;case le:return Pe}return he(e)?(this.consumeWhiteSpace(),Re):ce(e)?(this.reconsumeCodePoint(e),this.consumeNumericToken()):ue(e)?(this.reconsumeCodePoint(e),this.consumeIdentLikeToken()):{type:6,value:l(e)}},e.prototype.consumeCodePoint=function(){var e=this._value.shift();return void 0===e?-1:e},e.prototype.reconsumeCodePoint=function(e){this._value.unshift(e)},e.prototype.peekCodePoint=function(e){return e>=this._value.length?-1:this._value[e]},e.prototype.consumeUnicodeRangeToken=function(){for(var e=[],t=this.consumeCodePoint();de(t)&&e.length<6;)e.push(t),t=this.consumeCodePoint();for(var A=!1;63===t&&e.length<6;)e.push(t),t=this.consumeCodePoint(),A=!0;if(A)return{type:30,start:parseInt(l.apply(void 0,e.map((function(e){return 63===e?48:e}))),16),end:parseInt(l.apply(void 0,e.map((function(e){return 63===e?70:e}))),16)};var i=parseInt(l.apply(void 0,e),16);if(this.peekCodePoint(0)===se&&de(this.peekCodePoint(1))){this.consumeCodePoint(),t=this.consumeCodePoint();for(var n=[];de(t)&&n.length<6;)n.push(t),t=this.consumeCodePoint();return{type:30,start:i,end:parseInt(l.apply(void 0,n),16)}}return{type:30,start:i,end:i}},e.prototype.consumeIdentLikeToken=function(){var e=this.consumeName();return"url"===e.toLowerCase()&&40===this.peekCodePoint(0)?(this.consumeCodePoint(),this.consumeUrlToken()):40===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:19,value:e}):{type:20,value:e}},e.prototype.consumeUrlToken=function(){var e=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===le)return{type:22,value:""};var t=this.peekCodePoint(0);if(39===t||34===t){var A=this.consumeStringToken(this.consumeCodePoint());return 0===A.type&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===le||41===this.peekCodePoint(0))?(this.consumeCodePoint(),{type:22,value:A.value}):(this.consumeBadUrlRemnants(),Qe)}for(;;){var i=this.consumeCodePoint();if(i===le||41===i)return{type:22,value:l.apply(void 0,e)};if(he(i))return this.consumeWhiteSpace(),this.peekCodePoint(0)===le||41===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:22,value:l.apply(void 0,e)}):(this.consumeBadUrlRemnants(),Qe);if(34===i||39===i||40===i||pe(i))return this.consumeBadUrlRemnants(),Qe;if(92===i){if(!me(i,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),Qe;e.push(this.consumeEscapedCodePoint())}else e.push(i)}},e.prototype.consumeWhiteSpace=function(){for(;he(this.peekCodePoint(0));)this.consumeCodePoint()},e.prototype.consumeBadUrlRemnants=function(){for(;;){var e=this.consumeCodePoint();if(41===e||e===le)return;me(e,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},e.prototype.consumeStringSlice=function(e){for(var t="";e>0;){var A=Math.min(5e4,e);t+=l.apply(void 0,this._value.splice(0,A)),e-=A}return this._value.shift(),t},e.prototype.consumeStringToken=function(e){for(var t="",A=0;;){var i=this._value[A];if(i===le||void 0===i||i===e)return{type:0,value:t+=this.consumeStringSlice(A)};if(10===i)return this._value.splice(0,A),ke;if(92===i){var n=this._value[A+1];n!==le&&void 0!==n&&(10===n?(t+=this.consumeStringSlice(A),A=-1,this._value.shift()):me(i,n)&&(t+=this.consumeStringSlice(A),t+=l(this.consumeEscapedCodePoint()),A=-1))}A++}},e.prototype.consumeNumber=function(){var e=[],t=4,A=this.peekCodePoint(0);for(A!==oe&&A!==se||e.push(this.consumeCodePoint());ce(this.peekCodePoint(0));)e.push(this.consumeCodePoint());A=this.peekCodePoint(0);var i=this.peekCodePoint(1);if(46===A&&ce(i))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;ce(this.peekCodePoint(0));)e.push(this.consumeCodePoint());A=this.peekCodePoint(0),i=this.peekCodePoint(1);var n=this.peekCodePoint(2);if((69===A||101===A)&&((i===oe||i===se)&&ce(n)||ce(i)))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;ce(this.peekCodePoint(0));)e.push(this.consumeCodePoint());return[Be(e),t]},e.prototype.consumeNumericToken=function(){var e=this.consumeNumber(),t=e[0],A=e[1],i=this.peekCodePoint(0),n=this.peekCodePoint(1),a=this.peekCodePoint(2);return we(i,n,a)?{type:15,number:t,flags:A,unit:this.consumeName()}:37===i?(this.consumeCodePoint(),{type:16,number:t,flags:A}):{type:17,number:t,flags:A}},e.prototype.consumeEscapedCodePoint=function(){var e=this.consumeCodePoint();if(de(e)){for(var t=l(e);de(this.peekCodePoint(0))&&t.length<6;)t+=l(this.consumeCodePoint());he(this.peekCodePoint(0))&&this.consumeCodePoint();var A=parseInt(t,16);return 0===A||function(e){return e>=55296&&e<=57343}(A)||A>1114111?65533:A}return e===le?65533:e},e.prototype.consumeName=function(){for(var e="";;){var t=this.consumeCodePoint();if(ge(t))e+=l(t);else{if(!me(t,this.peekCodePoint(0)))return this.reconsumeCodePoint(t),e;e+=l(this.consumeEscapedCodePoint())}}},e}(),Ke=function(){function e(e){this._tokens=e}return e.create=function(t){var A=new Ve;return A.write(t),new e(A.read())},e.parseValue=function(t){return e.create(t).parseComponentValue()},e.parseValues=function(t){return e.create(t).parseComponentValues()},e.prototype.parseComponentValue=function(){for(var e=this.consumeToken();31===e.type;)e=this.consumeToken();if(32===e.type)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(e);var t=this.consumeComponentValue();do{e=this.consumeToken()}while(31===e.type);if(32===e.type)return t;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},e.prototype.parseComponentValues=function(){for(var e=[];;){var t=this.consumeComponentValue();if(32===t.type)return e;e.push(t),e.push()}},e.prototype.consumeComponentValue=function(){var e=this.consumeToken();switch(e.type){case 11:case 28:case 2:return this.consumeSimpleBlock(e.type);case 19:return this.consumeFunction(e)}return e},e.prototype.consumeSimpleBlock=function(e){for(var t={type:e,values:[]},A=this.consumeToken();;){if(32===A.type||qe(A,e))return t;this.reconsumeToken(A),t.values.push(this.consumeComponentValue()),A=this.consumeToken()}},e.prototype.consumeFunction=function(e){for(var t={name:e.value,values:[],type:18};;){var A=this.consumeToken();if(32===A.type||3===A.type)return t;this.reconsumeToken(A),t.values.push(this.consumeComponentValue())}},e.prototype.consumeToken=function(){var e=this._tokens.shift();return void 0===e?Pe:e},e.prototype.reconsumeToken=function(e){this._tokens.unshift(e)},e}(),Ge=function(e){return 15===e.type},We=function(e){return 17===e.type},Xe=function(e){return 20===e.type},ze=function(e){return 0===e.type},Ye=function(e,t){return Xe(e)&&e.value===t},je=function(e){return 31!==e.type},Je=function(e){return 31!==e.type&&4!==e.type},Ze=function(e){var t=[],A=[];return e.forEach((function(e){if(4===e.type){if(0===A.length)throw new Error("Error parsing function args, zero tokens for arg");return t.push(A),void(A=[])}31!==e.type&&A.push(e)})),A.length&&t.push(A),t},qe=function(e,t){return 11===t&&12===e.type||28===t&&29===e.type||2===t&&3===e.type},_e=function(e){return 17===e.type||15===e.type},$e=function(e){return 16===e.type||_e(e)},et=function(e){return e.length>1?[e[0],e[1]]:[e[0]]},tt={type:17,number:0,flags:4},At={type:16,number:50,flags:4},it={type:16,number:100,flags:4},nt=function(e,t,A){var i=e[0],n=e[1];return[at(i,t),at(void 0!==n?n:i,A)]},at=function(e,t){if(16===e.type)return e.number/100*t;if(Ge(e))switch(e.unit){case"rem":case"em":return 16*e.number;default:return e.number}return e.number},rt="grad",st="turn",ot=function(e,t){if(15===t.type)switch(t.unit){case"deg":return Math.PI*t.number/180;case rt:return Math.PI/200*t.number;case"rad":return t.number;case st:return 2*Math.PI*t.number}throw new Error("Unsupported angle type")},lt=function(e){return 15===e.type&&("deg"===e.unit||e.unit===rt||"rad"===e.unit||e.unit===st)},ct=function(e){switch(e.filter(Xe).map((function(e){return e.value})).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[tt,tt];case"to top":case"bottom":return dt(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[tt,it];case"to right":case"left":return dt(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[it,it];case"to bottom":case"top":return dt(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[it,tt];case"to left":case"right":return dt(270)}return 0},dt=function(e){return Math.PI*e/180},ht=function(e,t){if(18===t.type){var A=Et[t.name];if(void 0===A)throw new Error('Attempting to parse an unsupported color function "'+t.name+'"');return A(e,t.values)}if(5===t.type){if(3===t.value.length){var i=t.value.substring(0,1),n=t.value.substring(1,2),a=t.value.substring(2,3);return pt(parseInt(i+i,16),parseInt(n+n,16),parseInt(a+a,16),1)}if(4===t.value.length){i=t.value.substring(0,1),n=t.value.substring(1,2),a=t.value.substring(2,3);var r=t.value.substring(3,4);return pt(parseInt(i+i,16),parseInt(n+n,16),parseInt(a+a,16),parseInt(r+r,16)/255)}if(6===t.value.length)return i=t.value.substring(0,2),n=t.value.substring(2,4),a=t.value.substring(4,6),pt(parseInt(i,16),parseInt(n,16),parseInt(a,16),1);if(8===t.value.length)return i=t.value.substring(0,2),n=t.value.substring(2,4),a=t.value.substring(4,6),r=t.value.substring(6,8),pt(parseInt(i,16),parseInt(n,16),parseInt(a,16),parseInt(r,16)/255)}if(20===t.type){var s=vt[t.value.toUpperCase()];if(void 0!==s)return s}return vt.TRANSPARENT},ut=function(e){return 0==(255&e)},gt=function(e){var t=255&e,A=255&e>>8,i=255&e>>16,n=255&e>>24;return t<255?"rgba("+n+","+i+","+A+","+t/255+")":"rgb("+n+","+i+","+A+")"},pt=function(e,t,A,i){return(e<<24|t<<16|A<<8|Math.round(255*i)<<0)>>>0},mt=function(e,t){if(17===e.type)return e.number;if(16===e.type){var A=3===t?1:255;return 3===t?e.number/100*A:Math.round(e.number/100*A)}return 0},wt=function(e,t){var A=t.filter(Je);if(3===A.length){var i=A.map(mt),n=i[0],a=i[1],r=i[2];return pt(n,a,r,1)}if(4===A.length){var s=A.map(mt),o=(n=s[0],a=s[1],r=s[2],s[3]);return pt(n,a,r,o)}return 0};function ft(e,t,A){return A<0&&(A+=1),A>=1&&(A-=1),A<1/6?(t-e)*A*6+e:A<.5?t:A<2/3?6*(t-e)*(2/3-A)+e:e}var Bt=function(e,t){var A=t.filter(Je),i=A[0],n=A[1],a=A[2],r=A[3],s=(17===i.type?dt(i.number):ot(e,i))/(2*Math.PI),o=$e(n)?n.number/100:0,l=$e(a)?a.number/100:0,c=void 0!==r&&$e(r)?at(r,1):1;if(0===o)return pt(255*l,255*l,255*l,1);var d=l<=.5?l*(o+1):l+o-l*o,h=2*l-d,u=ft(h,d,s+1/3),g=ft(h,d,s),p=ft(h,d,s-1/3);return pt(255*u,255*g,255*p,c)},Et={hsl:Bt,hsla:Bt,rgb:wt,rgba:wt},bt=function(e,t){return ht(e,Ke.create(t).parseComponentValue())},vt={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},Ct={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(Xe(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},yt={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Ft=function(e,t){var A=ht(e,t[0]),i=t[1];return i&&$e(i)?{color:A,stop:i}:{color:A,stop:null}},xt=function(e,t){var A=e[0],i=e[e.length-1];null===A.stop&&(A.stop=tt),null===i.stop&&(i.stop=it);for(var n=[],a=0,r=0;ra?n.push(o):n.push(a),a=o}else n.push(null)}var l=null;for(r=0;re.optimumDistance)?{optimumCorner:t,optimumDistance:s}:e}),{optimumDistance:n?1/0:-1/0,optimumCorner:null}).optimumCorner},Ut=function(e,t){var A=dt(180),i=[];return Ze(t).forEach((function(t,n){if(0===n){var a=t[0];if(20===a.type&&-1!==["top","left","right","bottom"].indexOf(a.value))return void(A=ct(t));if(lt(a))return void(A=(ot(e,a)+dt(270))%dt(360))}var r=Ft(e,t);i.push(r)})),{angle:A,stops:i,type:1}},Qt="closest-side",kt="farthest-side",Ot="closest-corner",Mt="farthest-corner",Lt="circle",Dt="ellipse",Nt="cover",Ht="contain",Rt=function(e,t){var A=0,i=3,n=[],a=[];return Ze(t).forEach((function(t,r){var s=!0;if(0===r?s=t.reduce((function(e,t){if(Xe(t))switch(t.value){case"center":return a.push(At),!1;case"top":case"left":return a.push(tt),!1;case"right":case"bottom":return a.push(it),!1}else if($e(t)||_e(t))return a.push(t),!1;return e}),s):1===r&&(s=t.reduce((function(e,t){if(Xe(t))switch(t.value){case Lt:return A=0,!1;case Dt:return A=1,!1;case Ht:case Qt:return i=0,!1;case kt:return i=1,!1;case Ot:return i=2,!1;case Nt:case Mt:return i=3,!1}else if(_e(t)||$e(t))return Array.isArray(i)||(i=[]),i.push(t),!1;return e}),s)),s){var o=Ft(e,t);n.push(o)}})),{size:i,shape:A,stops:n,position:a,type:2}},Pt=function(e,t){if(22===t.type){var A={url:t.value,type:0};return e.cache.addImage(t.value),A}if(18===t.type){var i=Kt[t.name];if(void 0===i)throw new Error('Attempting to parse an unsupported image function "'+t.name+'"');return i(e,t.values)}throw new Error("Unsupported image type "+t.type)};var Vt,Kt={"linear-gradient":function(e,t){var A=dt(180),i=[];return Ze(t).forEach((function(t,n){if(0===n){var a=t[0];if(20===a.type&&"to"===a.value)return void(A=ct(t));if(lt(a))return void(A=ot(e,a))}var r=Ft(e,t);i.push(r)})),{angle:A,stops:i,type:1}},"-moz-linear-gradient":Ut,"-ms-linear-gradient":Ut,"-o-linear-gradient":Ut,"-webkit-linear-gradient":Ut,"radial-gradient":function(e,t){var A=0,i=3,n=[],a=[];return Ze(t).forEach((function(t,r){var s=!0;if(0===r){var o=!1;s=t.reduce((function(e,t){if(o)if(Xe(t))switch(t.value){case"center":return a.push(At),e;case"top":case"left":return a.push(tt),e;case"right":case"bottom":return a.push(it),e}else($e(t)||_e(t))&&a.push(t);else if(Xe(t))switch(t.value){case Lt:return A=0,!1;case Dt:return A=1,!1;case"at":return o=!0,!1;case Qt:return i=0,!1;case Nt:case kt:return i=1,!1;case Ht:case Ot:return i=2,!1;case Mt:return i=3,!1}else if(_e(t)||$e(t))return Array.isArray(i)||(i=[]),i.push(t),!1;return e}),s)}if(s){var l=Ft(e,t);n.push(l)}})),{size:i,shape:A,stops:n,position:a,type:2}},"-moz-radial-gradient":Rt,"-ms-radial-gradient":Rt,"-o-radial-gradient":Rt,"-webkit-radial-gradient":Rt,"-webkit-gradient":function(e,t){var A=dt(180),i=[],n=1;return Ze(t).forEach((function(t,A){var a=t[0];if(0===A){if(Xe(a)&&"linear"===a.value)return void(n=1);if(Xe(a)&&"radial"===a.value)return void(n=2)}if(18===a.type)if("from"===a.name){var r=ht(e,a.values[0]);i.push({stop:tt,color:r})}else if("to"===a.name)r=ht(e,a.values[0]),i.push({stop:it,color:r});else if("color-stop"===a.name){var s=a.values.filter(Je);if(2===s.length){r=ht(e,s[1]);var o=s[0];We(o)&&i.push({stop:{type:16,number:100*o.number,flags:o.flags},color:r})}}})),1===n?{angle:(A+dt(180))%dt(360),stops:i,type:n}:{size:3,shape:0,stops:i,position:[],type:n}}},Gt={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(e,t){if(0===t.length)return[];var A=t[0];return 20===A.type&&"none"===A.value?[]:t.filter((function(e){return Je(e)&&function(e){return!(20===e.type&&"none"===e.value||18===e.type&&!Kt[e.name])}(e)})).map((function(t){return Pt(e,t)}))}},Wt={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(Xe(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},Xt={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(e,t){return Ze(t).map((function(e){return e.filter($e)})).map(et)}},zt={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(e,t){return Ze(t).map((function(e){return e.filter(Xe).map((function(e){return e.value})).join(" ")})).map(Yt)}},Yt=function(e){switch(e){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;default:return 0}};!function(e){e.AUTO="auto",e.CONTAIN="contain",e.COVER="cover"}(Vt||(Vt={}));var jt,Jt={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(e,t){return Ze(t).map((function(e){return e.filter(Zt)}))}},Zt=function(e){return Xe(e)||$e(e)},qt=function(e){return{name:"border-"+e+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},_t=qt("top"),$t=qt("right"),eA=qt("bottom"),tA=qt("left"),AA=function(e){return{name:"border-radius-"+e,initialValue:"0 0",prefix:!1,type:1,parse:function(e,t){return et(t.filter($e))}}},iA=AA("top-left"),nA=AA("top-right"),aA=AA("bottom-right"),rA=AA("bottom-left"),sA=function(e){return{name:"border-"+e+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(e,t){switch(t){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},oA=sA("top"),lA=sA("right"),cA=sA("bottom"),dA=sA("left"),hA=function(e){return{name:"border-"+e+"-width",initialValue:"0",type:0,prefix:!1,parse:function(e,t){return Ge(t)?t.number:0}}},uA=hA("top"),gA=hA("right"),pA=hA("bottom"),mA=hA("left"),wA={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},fA={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(e,t){return"rtl"===t?1:0}},BA={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(e,t){return t.filter(Xe).reduce((function(e,t){return e|EA(t.value)}),0)}},EA=function(e){switch(e){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},bA={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},vA={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(e,t){return 20===t.type&&"normal"===t.value?0:17===t.type||15===t.type?t.number:0}};!function(e){e.NORMAL="normal",e.STRICT="strict"}(jt||(jt={}));var CA,yA={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"strict"===t?jt.STRICT:jt.NORMAL}},FA={name:"line-height",initialValue:"normal",prefix:!1,type:4},xA=function(e,t){return Xe(e)&&"normal"===e.value?1.2*t:17===e.type?t*e.number:$e(e)?at(e,t):t},SA={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(e,t){return 20===t.type&&"none"===t.value?null:Pt(e,t)}},TA={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(e,t){return"inside"===t?0:1}},IA={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;default:return-1}}},UA=function(e){return{name:"margin-"+e,initialValue:"0",prefix:!1,type:4}},QA=UA("top"),kA=UA("right"),OA=UA("bottom"),MA=UA("left"),LA={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(e,t){return t.filter(Xe).map((function(e){switch(e.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;default:return 0}}))}},DA={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"break-word"===t?"break-word":"normal"}},NA=function(e){return{name:"padding-"+e,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},HA=NA("top"),RA=NA("right"),PA=NA("bottom"),VA=NA("left"),KA={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(e,t){switch(t){case"right":return 2;case"center":case"justify":return 1;default:return 0}}},GA={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(e,t){switch(t){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},WA={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(e,t){return 1===t.length&&Ye(t[0],"none")?[]:Ze(t).map((function(t){for(var A={color:vt.TRANSPARENT,offsetX:tt,offsetY:tt,blur:tt},i=0,n=0;n1?1:0],this.overflowWrap=Ci(e,DA,t.overflowWrap),this.paddingTop=Ci(e,HA,t.paddingTop),this.paddingRight=Ci(e,RA,t.paddingRight),this.paddingBottom=Ci(e,PA,t.paddingBottom),this.paddingLeft=Ci(e,VA,t.paddingLeft),this.paintOrder=Ci(e,wi,t.paintOrder),this.position=Ci(e,GA,t.position),this.textAlign=Ci(e,KA,t.textAlign),this.textDecorationColor=Ci(e,Ai,null!==(A=t.textDecorationColor)&&void 0!==A?A:t.color),this.textDecorationLine=Ci(e,ii,null!==(i=t.textDecorationLine)&&void 0!==i?i:t.textDecoration),this.textShadow=Ci(e,WA,t.textShadow),this.textTransform=Ci(e,XA,t.textTransform),this.transform=Ci(e,zA,t.transform),this.transformOrigin=Ci(e,ZA,t.transformOrigin),this.visibility=Ci(e,qA,t.visibility),this.webkitTextStrokeColor=Ci(e,fi,t.webkitTextStrokeColor),this.webkitTextStrokeWidth=Ci(e,Bi,t.webkitTextStrokeWidth),this.wordBreak=Ci(e,_A,t.wordBreak),this.zIndex=Ci(e,$A,t.zIndex)}return e.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&0===this.visibility},e.prototype.isTransparent=function(){return ut(this.backgroundColor)},e.prototype.isTransformed=function(){return null!==this.transform},e.prototype.isPositioned=function(){return 0!==this.position},e.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},e.prototype.isFloating=function(){return 0!==this.float},e.prototype.isInlineLevel=function(){return li(this.display,4)||li(this.display,33554432)||li(this.display,268435456)||li(this.display,536870912)||li(this.display,67108864)||li(this.display,134217728)},e}(),bi=function(e,t){this.content=Ci(e,ci,t.content),this.quotes=Ci(e,gi,t.quotes)},vi=function(e,t){this.counterIncrement=Ci(e,di,t.counterIncrement),this.counterReset=Ci(e,hi,t.counterReset)},Ci=function(e,t,A){var i=new Ve,n=null!=A?A.toString():t.initialValue;i.write(n);var a=new Ke(i.read());switch(t.type){case 2:var r=a.parseComponentValue();return t.parse(e,Xe(r)?r.value:t.initialValue);case 0:return t.parse(e,a.parseComponentValue());case 1:return t.parse(e,a.parseComponentValues());case 4:return a.parseComponentValue();case 3:switch(t.format){case"angle":return ot(e,a.parseComponentValue());case"color":return ht(e,a.parseComponentValue());case"image":return Pt(e,a.parseComponentValue());case"length":var s=a.parseComponentValue();return _e(s)?s:tt;case"length-percentage":var o=a.parseComponentValue();return $e(o)?o:tt;case"time":return ei.parse(e,a.parseComponentValue())}}},yi=function(e,t){var A=function(e){switch(e.getAttribute("data-html2canvas-debug")){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}}(e);return 1===A||t===A},Fi=function(e,t){this.context=e,this.textNodes=[],this.elements=[],this.flags=0,yi(t,3),this.styles=new Ei(e,window.getComputedStyle(t,null)),Un(t)&&(this.styles.animationDuration.some((function(e){return e>0}))&&(t.style.animationDuration="0s"),null!==this.styles.transform&&(t.style.transform="none")),this.bounds=s(this.context,t),yi(t,4)&&(this.flags|=16)},xi="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Si="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Ti=0;Ti=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),Qi="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ki="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Oi=0;Oi>10),r%1024+56320)),(n+1===A||i.length>16384)&&(a+=String.fromCharCode.apply(String,i),i.length=0)}return a},Pi=function(e,t){var A=function(e){var t,A,i,n,a,r=.75*e.length,s=e.length,o=0;"="===e[e.length-1]&&(r--,"="===e[e.length-2]&&r--);var l="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(r):new Array(r),c=Array.isArray(l)?l:new Uint8Array(l);for(t=0;t>4,c[o++]=(15&i)<<4|n>>2,c[o++]=(3&n)<<6|63&a;return l}(e),i=Array.isArray(A)?function(e){for(var t=e.length,A=[],i=0;i=55296&&n<=56319&&A=A)return{done:!0,value:null};for(var e=Vi;ir.x||n.y>r.y;return r=n,0===t||s}));return e.body.removeChild(t),s}(document);return Object.defineProperty(ji,"SUPPORT_WORD_BREAKING",{value:e}),e},get SUPPORT_SVG_DRAWING(){var e=function(e){var t=new Image,A=e.createElement("canvas"),i=A.getContext("2d");if(!i)return!1;t.src="data:image/svg+xml,";try{i.drawImage(t,0,0),A.toDataURL()}catch(e){return!1}return!0}(document);return Object.defineProperty(ji,"SUPPORT_SVG_DRAWING",{value:e}),e},get SUPPORT_FOREIGNOBJECT_DRAWING(){var e="function"==typeof Array.from&&"function"==typeof window.fetch?function(e){var t=e.createElement("canvas"),A=100;t.width=A,t.height=A;var i=t.getContext("2d");if(!i)return Promise.reject(!1);i.fillStyle="rgb(0, 255, 0)",i.fillRect(0,0,A,A);var n=new Image,a=t.toDataURL();n.src=a;var r=zi(A,A,0,0,n);return i.fillStyle="red",i.fillRect(0,0,A,A),Yi(r).then((function(t){i.drawImage(t,0,0);var n=i.getImageData(0,0,A,A).data;i.fillStyle="red",i.fillRect(0,0,A,A);var r=e.createElement("div");return r.style.backgroundImage="url("+a+")",r.style.height="100px",Xi(n)?Yi(zi(A,A,0,0,r)):Promise.reject(!1)})).then((function(e){return i.drawImage(e,0,0),Xi(i.getImageData(0,0,A,A).data)})).catch((function(){return!1}))}(document):Promise.resolve(!1);return Object.defineProperty(ji,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:e}),e},get SUPPORT_CORS_IMAGES(){var e=void 0!==(new Image).crossOrigin;return Object.defineProperty(ji,"SUPPORT_CORS_IMAGES",{value:e}),e},get SUPPORT_RESPONSE_TYPE(){var e="string"==typeof(new XMLHttpRequest).responseType;return Object.defineProperty(ji,"SUPPORT_RESPONSE_TYPE",{value:e}),e},get SUPPORT_CORS_XHR(){var e="withCredentials"in new XMLHttpRequest;return Object.defineProperty(ji,"SUPPORT_CORS_XHR",{value:e}),e},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var e=!("undefined"==typeof Intl||!Intl.Segmenter);return Object.defineProperty(ji,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:e}),e}},Ji=function(e,t){this.text=e,this.bounds=t},Zi=function(e,t){var A=t.ownerDocument;if(A){var i=A.createElement("html2canvaswrapper");i.appendChild(t.cloneNode(!0));var n=t.parentNode;if(n){n.replaceChild(i,t);var a=s(e,i);return i.firstChild&&n.replaceChild(i.firstChild,i),a}}return r.EMPTY},qi=function(e,t,A){var i=e.ownerDocument;if(!i)throw new Error("Node has no owner document");var n=i.createRange();return n.setStart(e,t),n.setEnd(e,t+A),n},_i=function(e){if(ji.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(t.segment(e)).map((function(e){return e.segment}))}return function(e){for(var t,A=Wi(e),i=[];!(t=A.next()).done;)t.value&&i.push(t.value.slice());return i}(e)},$i=function(e,t){return 0!==t.letterSpacing?_i(e):function(e,t){if(ji.SUPPORT_NATIVE_TEXT_SEGMENTATION){var A=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(A.segment(e)).map((function(e){return e.segment}))}return tn(e,t)}(e,t)},en=[32,160,4961,65792,65793,4153,4241],tn=function(e,t){for(var A,i=function(e,t){var A=o(e),i=ae(A,t),n=i[0],a=i[1],r=i[2],s=A.length,l=0,c=0;return{next:function(){if(c>=s)return{done:!0,value:null};for(var e=z;c0)if(ji.SUPPORT_RANGE_BOUNDS){var n=qi(i,s,t.length).getClientRects();if(n.length>1){var o=_i(t),l=0;o.forEach((function(t){a.push(new Ji(t,r.fromDOMRectList(e,qi(i,l+s,t.length).getClientRects()))),l+=t.length}))}else a.push(new Ji(t,r.fromDOMRectList(e,n)))}else{var c=i.splitText(t.length);a.push(new Ji(t,Zi(e,i))),i=c}else ji.SUPPORT_RANGE_BOUNDS||(i=i.splitText(t.length));s+=t.length})),a}(e,this.text,A,t)},nn=function(e,t){switch(t){case 1:return e.toLowerCase();case 3:return e.replace(an,rn);case 2:return e.toUpperCase();default:return e}},an=/(^|\s|:|-|\(|\))([a-z])/g,rn=function(e,t,A){return e.length>0?t+A.toUpperCase():e},sn=function(e){function A(t,A){var i=e.call(this,t,A)||this;return i.src=A.currentSrc||A.src,i.intrinsicWidth=A.naturalWidth,i.intrinsicHeight=A.naturalHeight,i.context.cache.addImage(i.src),i}return t(A,e),A}(Fi),on=function(e){function A(t,A){var i=e.call(this,t,A)||this;return i.canvas=A,i.intrinsicWidth=A.width,i.intrinsicHeight=A.height,i}return t(A,e),A}(Fi),ln=function(e){function A(t,A){var i=e.call(this,t,A)||this,n=new XMLSerializer,a=s(t,A);return A.setAttribute("width",a.width+"px"),A.setAttribute("height",a.height+"px"),i.svg="data:image/svg+xml,"+encodeURIComponent(n.serializeToString(A)),i.intrinsicWidth=A.width.baseVal.value,i.intrinsicHeight=A.height.baseVal.value,i.context.cache.addImage(i.svg),i}return t(A,e),A}(Fi),cn=function(e){function A(t,A){var i=e.call(this,t,A)||this;return i.value=A.value,i}return t(A,e),A}(Fi),dn=function(e){function A(t,A){var i=e.call(this,t,A)||this;return i.start=A.start,i.reversed="boolean"==typeof A.reversed&&!0===A.reversed,i}return t(A,e),A}(Fi),hn=[{type:15,flags:0,unit:"px",number:3}],un=[{type:16,flags:0,number:50}],gn="checkbox",pn="radio",mn="password",wn=707406591,fn=function(e){function A(t,A){var i,n,a,s=e.call(this,t,A)||this;switch(s.type=A.type.toLowerCase(),s.checked=A.checked,s.value=0===(a=(n=A).type===mn?new Array(n.value.length+1).join("•"):n.value).length?n.placeholder||"":a,s.type!==gn&&s.type!==pn||(s.styles.backgroundColor=3739148031,s.styles.borderTopColor=s.styles.borderRightColor=s.styles.borderBottomColor=s.styles.borderLeftColor=2779096575,s.styles.borderTopWidth=s.styles.borderRightWidth=s.styles.borderBottomWidth=s.styles.borderLeftWidth=1,s.styles.borderTopStyle=s.styles.borderRightStyle=s.styles.borderBottomStyle=s.styles.borderLeftStyle=1,s.styles.backgroundClip=[0],s.styles.backgroundOrigin=[0],s.bounds=(i=s.bounds).width>i.height?new r(i.left+(i.width-i.height)/2,i.top,i.height,i.height):i.width0)A.textNodes.push(new An(e,n,A.styles));else if(In(n))if(Wn(n)&&n.assignedNodes)n.assignedNodes().forEach((function(t){return Cn(e,t,A,i)}));else{var r=yn(e,n);r.styles.isVisible()&&(xn(n,r,i)?r.flags|=4:Sn(r.styles)&&(r.flags|=2),-1!==vn.indexOf(n.tagName)&&(r.flags|=8),A.elements.push(r),n.slot,n.shadowRoot?Cn(e,n.shadowRoot,r,i):Kn(n)||Ln(n)||Gn(n)||Cn(e,n,r,i))}},yn=function(e,t){return Rn(t)?new sn(e,t):Nn(t)?new on(e,t):Ln(t)?new ln(e,t):kn(t)?new cn(e,t):On(t)?new dn(e,t):Mn(t)?new fn(e,t):Gn(t)?new Bn(e,t):Kn(t)?new En(e,t):Pn(t)?new bn(e,t):new Fi(e,t)},Fn=function(e,t){var A=yn(e,t);return A.flags|=4,Cn(e,t,A,A),A},xn=function(e,t,A){return t.styles.isPositionedWithZIndex()||t.styles.opacity<1||t.styles.isTransformed()||Dn(e)&&A.styles.isTransparent()},Sn=function(e){return e.isPositioned()||e.isFloating()},Tn=function(e){return e.nodeType===Node.TEXT_NODE},In=function(e){return e.nodeType===Node.ELEMENT_NODE},Un=function(e){return In(e)&&void 0!==e.style&&!Qn(e)},Qn=function(e){return"object"==typeof e.className},kn=function(e){return"LI"===e.tagName},On=function(e){return"OL"===e.tagName},Mn=function(e){return"INPUT"===e.tagName},Ln=function(e){return"svg"===e.tagName},Dn=function(e){return"BODY"===e.tagName},Nn=function(e){return"CANVAS"===e.tagName},Hn=function(e){return"VIDEO"===e.tagName},Rn=function(e){return"IMG"===e.tagName},Pn=function(e){return"IFRAME"===e.tagName},Vn=function(e){return"STYLE"===e.tagName},Kn=function(e){return"TEXTAREA"===e.tagName},Gn=function(e){return"SELECT"===e.tagName},Wn=function(e){return"SLOT"===e.tagName},Xn=function(e){return e.tagName.indexOf("-")>0},zn=function(){function e(){this.counters={}}return e.prototype.getCounterValue=function(e){var t=this.counters[e];return t&&t.length?t[t.length-1]:1},e.prototype.getCounterValues=function(e){return this.counters[e]||[]},e.prototype.pop=function(e){var t=this;e.forEach((function(e){return t.counters[e].pop()}))},e.prototype.parse=function(e){var t=this,A=e.counterIncrement,i=e.counterReset,n=!0;null!==A&&A.forEach((function(e){var A=t.counters[e.counter];A&&0!==e.increment&&(n=!1,A.length||A.push(1),A[Math.max(0,A.length-1)]+=e.increment)}));var a=[];return n&&i.forEach((function(e){var A=t.counters[e.counter];a.push(e.counter),A||(A=t.counters[e.counter]=[]),A.push(e.reset)})),a},e}(),Yn={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},jn={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},Jn={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},Zn={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},qn=function(e,t,A,i,n,a){return eA?ra(e,n,a.length>0):i.integers.reduce((function(t,A,n){for(;e>=A;)e-=A,t+=i.values[n];return t}),"")+a},_n=function(e,t,A,i){var n="";do{A||e--,n=i(e)+n,e/=t}while(e*t>=t);return n},$n=function(e,t,A,i,n){var a=A-t+1;return(e<0?"-":"")+(_n(Math.abs(e),a,i,(function(e){return l(Math.floor(e%a)+t)}))+n)},ea=function(e,t,A){void 0===A&&(A=". ");var i=t.length;return _n(Math.abs(e),i,!1,(function(e){return t[Math.floor(e%i)]}))+A},ta=function(e,t,A,i,n,a){if(e<-9999||e>9999)return ra(e,4,n.length>0);var r=Math.abs(e),s=n;if(0===r)return t[0]+s;for(var o=0;r>0&&o<=4;o++){var l=r%10;0===l&&li(a,1)&&""!==s?s=t[l]+s:l>1||1===l&&0===o||1===l&&1===o&&li(a,2)||1===l&&1===o&&li(a,4)&&e>100||1===l&&o>1&&li(a,8)?s=t[l]+(o>0?A[o-1]:"")+s:1===l&&o>0&&(s=A[o-1]+s),r=Math.floor(r/10)}return(e<0?i:"")+s},Aa="十百千萬",ia="拾佰仟萬",na="マイナス",aa="마이너스",ra=function(e,t,A){var i=A?". ":"",n=A?"、":"",a=A?", ":"",r=A?" ":"";switch(t){case 0:return"•"+r;case 1:return"◦"+r;case 2:return"◾"+r;case 5:var s=$n(e,48,57,!0,i);return s.length<4?"0"+s:s;case 4:return ea(e,"〇一二三四五六七八九",n);case 6:return qn(e,1,3999,Yn,3,i).toLowerCase();case 7:return qn(e,1,3999,Yn,3,i);case 8:return $n(e,945,969,!1,i);case 9:return $n(e,97,122,!1,i);case 10:return $n(e,65,90,!1,i);case 11:return $n(e,1632,1641,!0,i);case 12:case 49:return qn(e,1,9999,jn,3,i);case 35:return qn(e,1,9999,jn,3,i).toLowerCase();case 13:return $n(e,2534,2543,!0,i);case 14:case 30:return $n(e,6112,6121,!0,i);case 15:return ea(e,"子丑寅卯辰巳午未申酉戌亥",n);case 16:return ea(e,"甲乙丙丁戊己庚辛壬癸",n);case 17:case 48:return ta(e,"零一二三四五六七八九",Aa,"負",n,14);case 47:return ta(e,"零壹貳參肆伍陸柒捌玖",ia,"負",n,15);case 42:return ta(e,"零一二三四五六七八九",Aa,"负",n,14);case 41:return ta(e,"零壹贰叁肆伍陆柒捌玖",ia,"负",n,15);case 26:return ta(e,"〇一二三四五六七八九","十百千万",na,n,0);case 25:return ta(e,"零壱弐参四伍六七八九","拾百千万",na,n,7);case 31:return ta(e,"영일이삼사오육칠팔구","십백천만",aa,a,7);case 33:return ta(e,"零一二三四五六七八九","十百千萬",aa,a,0);case 32:return ta(e,"零壹貳參四五六七八九","拾百千",aa,a,7);case 18:return $n(e,2406,2415,!0,i);case 20:return qn(e,1,19999,Zn,3,i);case 21:return $n(e,2790,2799,!0,i);case 22:return $n(e,2662,2671,!0,i);case 22:return qn(e,1,10999,Jn,3,i);case 23:return ea(e,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return ea(e,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return $n(e,3302,3311,!0,i);case 28:return ea(e,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",n);case 29:return ea(e,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",n);case 34:return $n(e,3792,3801,!0,i);case 37:return $n(e,6160,6169,!0,i);case 38:return $n(e,4160,4169,!0,i);case 39:return $n(e,2918,2927,!0,i);case 40:return $n(e,1776,1785,!0,i);case 43:return $n(e,3046,3055,!0,i);case 44:return $n(e,3174,3183,!0,i);case 45:return $n(e,3664,3673,!0,i);case 46:return $n(e,3872,3881,!0,i);default:return $n(e,48,57,!0,i)}},sa="data-html2canvas-ignore",oa=function(){function e(e,t,A){if(this.context=e,this.options=A,this.scrolledElements=[],this.referenceElement=t,this.counters=new zn,this.quoteDepth=0,!t.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(t.ownerDocument.documentElement,!1)}return e.prototype.toIFrame=function(e,t){var A=this,a=ca(e,t);if(!a.contentWindow)return Promise.reject("Unable to find iframe window");var r=e.defaultView.pageXOffset,s=e.defaultView.pageYOffset,o=a.contentWindow,l=o.document,c=ua(a).then((function(){return i(A,void 0,void 0,(function(){var e,A;return n(this,(function(i){switch(i.label){case 0:return this.scrolledElements.forEach(fa),o&&(o.scrollTo(t.left,t.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||o.scrollY===t.top&&o.scrollX===t.left||(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(o.scrollX-t.left,o.scrollY-t.top,0,0))),e=this.options.onclone,void 0===(A=this.clonedReferenceElement)?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:l.fonts&&l.fonts.ready?[4,l.fonts.ready]:[3,2];case 1:i.sent(),i.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,ha(l)]:[3,4];case 3:i.sent(),i.label=4;case 4:return"function"==typeof e?[2,Promise.resolve().then((function(){return e(l,A)})).then((function(){return a}))]:[2,a]}}))}))}));return l.open(),l.write(ma(document.doctype)+""),wa(this.referenceElement.ownerDocument,r,s),l.replaceChild(l.adoptNode(this.documentElement),l.documentElement),l.close(),c},e.prototype.createElementClone=function(e){if(yi(e,2),Nn(e))return this.createCanvasClone(e);if(Hn(e))return this.createVideoClone(e);if(Vn(e))return this.createStyleClone(e);var t=e.cloneNode(!1);return Rn(t)&&(Rn(e)&&e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc,t.srcset=""),"lazy"===t.loading&&(t.loading="eager")),Xn(t)?this.createCustomElementClone(t):t},e.prototype.createCustomElementClone=function(e){var t=document.createElement("html2canvascustomelement");return pa(e.style,t),t},e.prototype.createStyleClone=function(e){try{var t=e.sheet;if(t&&t.cssRules){var A=[].slice.call(t.cssRules,0).reduce((function(e,t){return t&&"string"==typeof t.cssText?e+t.cssText:e}),""),i=e.cloneNode(!1);return i.textContent=A,i}}catch(e){if(this.context.logger.error("Unable to access cssRules property",e),"SecurityError"!==e.name)throw e}return e.cloneNode(!1)},e.prototype.createCanvasClone=function(e){var t;if(this.options.inlineImages&&e.ownerDocument){var A=e.ownerDocument.createElement("img");try{return A.src=e.toDataURL(),A}catch(t){this.context.logger.info("Unable to inline canvas contents, canvas is tainted",e)}}var i=e.cloneNode(!1);try{i.width=e.width,i.height=e.height;var n=e.getContext("2d"),a=i.getContext("2d");if(a)if(!this.options.allowTaint&&n)a.putImageData(n.getImageData(0,0,e.width,e.height),0,0);else{var r=null!==(t=e.getContext("webgl2"))&&void 0!==t?t:e.getContext("webgl");if(r){var s=r.getContextAttributes();!1===(null==s?void 0:s.preserveDrawingBuffer)&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",e)}a.drawImage(e,0,0)}return i}catch(t){this.context.logger.info("Unable to clone canvas as it is tainted",e)}return i},e.prototype.createVideoClone=function(e){var t=e.ownerDocument.createElement("canvas");t.width=e.offsetWidth,t.height=e.offsetHeight;var A=t.getContext("2d");try{return A&&(A.drawImage(e,0,0,t.width,t.height),this.options.allowTaint||A.getImageData(0,0,t.width,t.height)),t}catch(t){this.context.logger.info("Unable to clone video as it is tainted",e)}var i=e.ownerDocument.createElement("canvas");return i.width=e.offsetWidth,i.height=e.offsetHeight,i},e.prototype.appendChildNode=function(e,t,A){In(t)&&("SCRIPT"===t.tagName||t.hasAttribute(sa)||"function"==typeof this.options.ignoreElements&&this.options.ignoreElements(t))||this.options.copyStyles&&In(t)&&Vn(t)||e.appendChild(this.cloneNode(t,A))},e.prototype.cloneChildNodes=function(e,t,A){for(var i=this,n=e.shadowRoot?e.shadowRoot.firstChild:e.firstChild;n;n=n.nextSibling)if(In(n)&&Wn(n)&&"function"==typeof n.assignedNodes){var a=n.assignedNodes();a.length&&a.forEach((function(e){return i.appendChildNode(t,e,A)}))}else this.appendChildNode(t,n,A)},e.prototype.cloneNode=function(e,t){if(Tn(e))return document.createTextNode(e.data);if(!e.ownerDocument)return e.cloneNode(!1);var A=e.ownerDocument.defaultView;if(A&&In(e)&&(Un(e)||Qn(e))){var i=this.createElementClone(e);i.style.transitionProperty="none";var n=A.getComputedStyle(e),a=A.getComputedStyle(e,":before"),r=A.getComputedStyle(e,":after");this.referenceElement===e&&Un(i)&&(this.clonedReferenceElement=i),Dn(i)&&va(i);var s=this.counters.parse(new vi(this.context,n)),o=this.resolvePseudoContent(e,i,a,Mi.BEFORE);Xn(e)&&(t=!0),Hn(e)||this.cloneChildNodes(e,i,t),o&&i.insertBefore(o,i.firstChild);var l=this.resolvePseudoContent(e,i,r,Mi.AFTER);return l&&i.appendChild(l),this.counters.pop(s),(n&&(this.options.copyStyles||Qn(e))&&!Pn(e)||t)&&pa(n,i),0===e.scrollTop&&0===e.scrollLeft||this.scrolledElements.push([i,e.scrollLeft,e.scrollTop]),(Kn(e)||Gn(e))&&(Kn(i)||Gn(i))&&(i.value=e.value),i}return e.cloneNode(!1)},e.prototype.resolvePseudoContent=function(e,t,A,i){var n=this;if(A){var a=A.content,r=t.ownerDocument;if(r&&a&&"none"!==a&&"-moz-alt-content"!==a&&"none"!==A.display){this.counters.parse(new vi(this.context,A));var s=new bi(this.context,A),o=r.createElement("html2canvaspseudoelement");pa(A,o),s.content.forEach((function(t){if(0===t.type)o.appendChild(r.createTextNode(t.value));else if(22===t.type){var A=r.createElement("img");A.src=t.value,A.style.opacity="1",o.appendChild(A)}else if(18===t.type){if("attr"===t.name){var i=t.values.filter(Xe);i.length&&o.appendChild(r.createTextNode(e.getAttribute(i[0].value)||""))}else if("counter"===t.name){var a=t.values.filter(Je),l=a[0],c=a[1];if(l&&Xe(l)){var d=n.counters.getCounterValue(l.value),h=c&&Xe(c)?IA.parse(n.context,c.value):3;o.appendChild(r.createTextNode(ra(d,h,!1)))}}else if("counters"===t.name){var u=t.values.filter(Je),g=(l=u[0],u[1]);if(c=u[2],l&&Xe(l)){var p=n.counters.getCounterValues(l.value),m=c&&Xe(c)?IA.parse(n.context,c.value):3,w=g&&0===g.type?g.value:"",f=p.map((function(e){return ra(e,m,!1)})).join(w);o.appendChild(r.createTextNode(f))}}}else if(20===t.type)switch(t.value){case"open-quote":o.appendChild(r.createTextNode(pi(s.quotes,n.quoteDepth++,!0)));break;case"close-quote":o.appendChild(r.createTextNode(pi(s.quotes,--n.quoteDepth,!1)));break;default:o.appendChild(r.createTextNode(t.value))}})),o.className=Ba+" "+Ea;var l=i===Mi.BEFORE?" "+Ba:" "+Ea;return Qn(t)?t.className.baseValue+=l:t.className+=l,o}}},e.destroy=function(e){return!!e.parentNode&&(e.parentNode.removeChild(e),!0)},e}();!function(e){e[e.BEFORE=0]="BEFORE",e[e.AFTER=1]="AFTER"}(Mi||(Mi={}));var la,ca=function(e,t){var A=e.createElement("iframe");return A.className="html2canvas-container",A.style.visibility="hidden",A.style.position="fixed",A.style.left="-10000px",A.style.top="0px",A.style.border="0",A.width=t.width.toString(),A.height=t.height.toString(),A.scrolling="no",A.setAttribute(sa,"true"),e.body.appendChild(A),A},da=function(e){return new Promise((function(t){e.complete?t():e.src?(e.onload=t,e.onerror=t):t()}))},ha=function(e){return Promise.all([].slice.call(e.images,0).map(da))},ua=function(e){return new Promise((function(t,A){var i=e.contentWindow;if(!i)return A("No window assigned for iframe");var n=i.document;i.onload=e.onload=function(){i.onload=e.onload=null;var A=setInterval((function(){n.body.childNodes.length>0&&"complete"===n.readyState&&(clearInterval(A),t(e))}),50)}}))},ga=["all","d","content"],pa=function(e,t){for(var A=e.length-1;A>=0;A--){var i=e.item(A);-1===ga.indexOf(i)&&t.style.setProperty(i,e.getPropertyValue(i))}return t},ma=function(e){var t="";return e&&(t+=""),t},wa=function(e,t,A){e&&e.defaultView&&(t!==e.defaultView.pageXOffset||A!==e.defaultView.pageYOffset)&&e.defaultView.scrollTo(t,A)},fa=function(e){var t=e[0],A=e[1],i=e[2];t.scrollLeft=A,t.scrollTop=i},Ba="___html2canvas___pseudoelement_before",Ea="___html2canvas___pseudoelement_after",ba='{\n content: "" !important;\n display: none !important;\n}',va=function(e){Ca(e,"."+Ba+":before"+ba+"\n ."+Ea+":after"+ba)},Ca=function(e,t){var A=e.ownerDocument;if(A){var i=A.createElement("style");i.textContent=t,e.appendChild(i)}},ya=function(){function e(){}return e.getOrigin=function(t){var A=e._link;return A?(A.href=t,A.href=A.href,A.protocol+A.hostname+A.port):"about:blank"},e.isSameOrigin=function(t){return e.getOrigin(t)===e._origin},e.setContext=function(t){e._link=t.document.createElement("a"),e._origin=e.getOrigin(t.location.href)},e._origin="about:blank",e}(),Fa=function(){function e(e,t){this.context=e,this._options=t,this._cache={}}return e.prototype.addImage=function(e){var t=Promise.resolve();return this.has(e)?t:ka(e)||Ia(e)?((this._cache[e]=this.loadImage(e)).catch((function(){})),t):t},e.prototype.match=function(e){return this._cache[e]},e.prototype.loadImage=function(e){return i(this,void 0,void 0,(function(){var t,A,i,a,r=this;return n(this,(function(n){switch(n.label){case 0:return t=ya.isSameOrigin(e),A=!Ua(e)&&!0===this._options.useCORS&&ji.SUPPORT_CORS_IMAGES&&!t,i=!Ua(e)&&!t&&!ka(e)&&"string"==typeof this._options.proxy&&ji.SUPPORT_CORS_XHR&&!A,t||!1!==this._options.allowTaint||Ua(e)||ka(e)||i||A?(a=e,i?[4,this.proxy(a)]:[3,2]):[2];case 1:a=n.sent(),n.label=2;case 2:return this.context.logger.debug("Added image "+e.substring(0,256)),[4,new Promise((function(e,t){var i=new Image;i.onload=function(){return e(i)},i.onerror=t,(Qa(a)||A)&&(i.crossOrigin="anonymous"),i.src=a,!0===i.complete&&setTimeout((function(){return e(i)}),500),r._options.imageTimeout>0&&setTimeout((function(){return t("Timed out ("+r._options.imageTimeout+"ms) loading image")}),r._options.imageTimeout)}))];case 3:return[2,n.sent()]}}))}))},e.prototype.has=function(e){return void 0!==this._cache[e]},e.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},e.prototype.proxy=function(e){var t=this,A=this._options.proxy;if(!A)throw new Error("No proxy defined");var i=e.substring(0,256);return new Promise((function(n,a){var r=ji.SUPPORT_RESPONSE_TYPE?"blob":"text",s=new XMLHttpRequest;s.onload=function(){if(200===s.status)if("text"===r)n(s.response);else{var e=new FileReader;e.addEventListener("load",(function(){return n(e.result)}),!1),e.addEventListener("error",(function(e){return a(e)}),!1),e.readAsDataURL(s.response)}else a("Failed to proxy resource "+i+" with status code "+s.status)},s.onerror=a;var o=A.indexOf("?")>-1?"&":"?";if(s.open("GET",""+A+o+"url="+encodeURIComponent(e)+"&responseType="+r),"text"!==r&&s instanceof XMLHttpRequest&&(s.responseType=r),t._options.imageTimeout){var l=t._options.imageTimeout;s.timeout=l,s.ontimeout=function(){return a("Timed out ("+l+"ms) proxying "+i)}}s.send()}))},e}(),xa=/^data:image\/svg\+xml/i,Sa=/^data:image\/.*;base64,/i,Ta=/^data:image\/.*/i,Ia=function(e){return ji.SUPPORT_SVG_DRAWING||!Oa(e)},Ua=function(e){return Ta.test(e)},Qa=function(e){return Sa.test(e)},ka=function(e){return"blob"===e.substr(0,4)},Oa=function(e){return"svg"===e.substr(-3).toLowerCase()||xa.test(e)},Ma=function(){function e(e,t){this.type=0,this.x=e,this.y=t}return e.prototype.add=function(t,A){return new e(this.x+t,this.y+A)},e}(),La=function(e,t,A){return new Ma(e.x+(t.x-e.x)*A,e.y+(t.y-e.y)*A)},Da=function(){function e(e,t,A,i){this.type=1,this.start=e,this.startControl=t,this.endControl=A,this.end=i}return e.prototype.subdivide=function(t,A){var i=La(this.start,this.startControl,t),n=La(this.startControl,this.endControl,t),a=La(this.endControl,this.end,t),r=La(i,n,t),s=La(n,a,t),o=La(r,s,t);return A?new e(this.start,i,r,o):new e(o,s,a,this.end)},e.prototype.add=function(t,A){return new e(this.start.add(t,A),this.startControl.add(t,A),this.endControl.add(t,A),this.end.add(t,A))},e.prototype.reverse=function(){return new e(this.end,this.endControl,this.startControl,this.start)},e}(),Na=function(e){return 1===e.type},Ha=function(e){var t=e.styles,A=e.bounds,i=nt(t.borderTopLeftRadius,A.width,A.height),n=i[0],a=i[1],r=nt(t.borderTopRightRadius,A.width,A.height),s=r[0],o=r[1],l=nt(t.borderBottomRightRadius,A.width,A.height),c=l[0],d=l[1],h=nt(t.borderBottomLeftRadius,A.width,A.height),u=h[0],g=h[1],p=[];p.push((n+s)/A.width),p.push((u+c)/A.width),p.push((a+g)/A.height),p.push((o+d)/A.height);var m=Math.max.apply(Math,p);m>1&&(n/=m,a/=m,s/=m,o/=m,c/=m,d/=m,u/=m,g/=m);var w=A.width-s,f=A.height-d,B=A.width-c,E=A.height-g,b=t.borderTopWidth,v=t.borderRightWidth,C=t.borderBottomWidth,y=t.borderLeftWidth,F=at(t.paddingTop,e.bounds.width),x=at(t.paddingRight,e.bounds.width),S=at(t.paddingBottom,e.bounds.width),T=at(t.paddingLeft,e.bounds.width);this.topLeftBorderDoubleOuterBox=n>0||a>0?Ra(A.left+y/3,A.top+b/3,n-y/3,a-b/3,la.TOP_LEFT):new Ma(A.left+y/3,A.top+b/3),this.topRightBorderDoubleOuterBox=n>0||a>0?Ra(A.left+w,A.top+b/3,s-v/3,o-b/3,la.TOP_RIGHT):new Ma(A.left+A.width-v/3,A.top+b/3),this.bottomRightBorderDoubleOuterBox=c>0||d>0?Ra(A.left+B,A.top+f,c-v/3,d-C/3,la.BOTTOM_RIGHT):new Ma(A.left+A.width-v/3,A.top+A.height-C/3),this.bottomLeftBorderDoubleOuterBox=u>0||g>0?Ra(A.left+y/3,A.top+E,u-y/3,g-C/3,la.BOTTOM_LEFT):new Ma(A.left+y/3,A.top+A.height-C/3),this.topLeftBorderDoubleInnerBox=n>0||a>0?Ra(A.left+2*y/3,A.top+2*b/3,n-2*y/3,a-2*b/3,la.TOP_LEFT):new Ma(A.left+2*y/3,A.top+2*b/3),this.topRightBorderDoubleInnerBox=n>0||a>0?Ra(A.left+w,A.top+2*b/3,s-2*v/3,o-2*b/3,la.TOP_RIGHT):new Ma(A.left+A.width-2*v/3,A.top+2*b/3),this.bottomRightBorderDoubleInnerBox=c>0||d>0?Ra(A.left+B,A.top+f,c-2*v/3,d-2*C/3,la.BOTTOM_RIGHT):new Ma(A.left+A.width-2*v/3,A.top+A.height-2*C/3),this.bottomLeftBorderDoubleInnerBox=u>0||g>0?Ra(A.left+2*y/3,A.top+E,u-2*y/3,g-2*C/3,la.BOTTOM_LEFT):new Ma(A.left+2*y/3,A.top+A.height-2*C/3),this.topLeftBorderStroke=n>0||a>0?Ra(A.left+y/2,A.top+b/2,n-y/2,a-b/2,la.TOP_LEFT):new Ma(A.left+y/2,A.top+b/2),this.topRightBorderStroke=n>0||a>0?Ra(A.left+w,A.top+b/2,s-v/2,o-b/2,la.TOP_RIGHT):new Ma(A.left+A.width-v/2,A.top+b/2),this.bottomRightBorderStroke=c>0||d>0?Ra(A.left+B,A.top+f,c-v/2,d-C/2,la.BOTTOM_RIGHT):new Ma(A.left+A.width-v/2,A.top+A.height-C/2),this.bottomLeftBorderStroke=u>0||g>0?Ra(A.left+y/2,A.top+E,u-y/2,g-C/2,la.BOTTOM_LEFT):new Ma(A.left+y/2,A.top+A.height-C/2),this.topLeftBorderBox=n>0||a>0?Ra(A.left,A.top,n,a,la.TOP_LEFT):new Ma(A.left,A.top),this.topRightBorderBox=s>0||o>0?Ra(A.left+w,A.top,s,o,la.TOP_RIGHT):new Ma(A.left+A.width,A.top),this.bottomRightBorderBox=c>0||d>0?Ra(A.left+B,A.top+f,c,d,la.BOTTOM_RIGHT):new Ma(A.left+A.width,A.top+A.height),this.bottomLeftBorderBox=u>0||g>0?Ra(A.left,A.top+E,u,g,la.BOTTOM_LEFT):new Ma(A.left,A.top+A.height),this.topLeftPaddingBox=n>0||a>0?Ra(A.left+y,A.top+b,Math.max(0,n-y),Math.max(0,a-b),la.TOP_LEFT):new Ma(A.left+y,A.top+b),this.topRightPaddingBox=s>0||o>0?Ra(A.left+Math.min(w,A.width-v),A.top+b,w>A.width+v?0:Math.max(0,s-v),Math.max(0,o-b),la.TOP_RIGHT):new Ma(A.left+A.width-v,A.top+b),this.bottomRightPaddingBox=c>0||d>0?Ra(A.left+Math.min(B,A.width-y),A.top+Math.min(f,A.height-C),Math.max(0,c-v),Math.max(0,d-C),la.BOTTOM_RIGHT):new Ma(A.left+A.width-v,A.top+A.height-C),this.bottomLeftPaddingBox=u>0||g>0?Ra(A.left+y,A.top+Math.min(E,A.height-C),Math.max(0,u-y),Math.max(0,g-C),la.BOTTOM_LEFT):new Ma(A.left+y,A.top+A.height-C),this.topLeftContentBox=n>0||a>0?Ra(A.left+y+T,A.top+b+F,Math.max(0,n-(y+T)),Math.max(0,a-(b+F)),la.TOP_LEFT):new Ma(A.left+y+T,A.top+b+F),this.topRightContentBox=s>0||o>0?Ra(A.left+Math.min(w,A.width+y+T),A.top+b+F,w>A.width+y+T?0:s-y+T,o-(b+F),la.TOP_RIGHT):new Ma(A.left+A.width-(v+x),A.top+b+F),this.bottomRightContentBox=c>0||d>0?Ra(A.left+Math.min(B,A.width-(y+T)),A.top+Math.min(f,A.height+b+F),Math.max(0,c-(v+x)),d-(C+S),la.BOTTOM_RIGHT):new Ma(A.left+A.width-(v+x),A.top+A.height-(C+S)),this.bottomLeftContentBox=u>0||g>0?Ra(A.left+y+T,A.top+E,Math.max(0,u-(y+T)),g-(C+S),la.BOTTOM_LEFT):new Ma(A.left+y+T,A.top+A.height-(C+S))};!function(e){e[e.TOP_LEFT=0]="TOP_LEFT",e[e.TOP_RIGHT=1]="TOP_RIGHT",e[e.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",e[e.BOTTOM_LEFT=3]="BOTTOM_LEFT"}(la||(la={}));var Ra=function(e,t,A,i,n){var a=(Math.sqrt(2)-1)/3*4,r=A*a,s=i*a,o=e+A,l=t+i;switch(n){case la.TOP_LEFT:return new Da(new Ma(e,l),new Ma(e,l-s),new Ma(o-r,t),new Ma(o,t));case la.TOP_RIGHT:return new Da(new Ma(e,t),new Ma(e+r,t),new Ma(o,l-s),new Ma(o,l));case la.BOTTOM_RIGHT:return new Da(new Ma(o,t),new Ma(o,t+s),new Ma(e+r,l),new Ma(e,l));case la.BOTTOM_LEFT:default:return new Da(new Ma(o,l),new Ma(o-r,l),new Ma(e,t+s),new Ma(e,t))}},Pa=function(e){return[e.topLeftBorderBox,e.topRightBorderBox,e.bottomRightBorderBox,e.bottomLeftBorderBox]},Va=function(e){return[e.topLeftPaddingBox,e.topRightPaddingBox,e.bottomRightPaddingBox,e.bottomLeftPaddingBox]},Ka=function(e,t,A){this.offsetX=e,this.offsetY=t,this.matrix=A,this.type=0,this.target=6},Ga=function(e,t){this.path=e,this.target=t,this.type=1},Wa=function(e){this.opacity=e,this.type=2,this.target=6},Xa=function(e){return 1===e.type},za=function(e,t){return e.length===t.length&&e.some((function(e,A){return e===t[A]}))},Ya=function(e){this.element=e,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},ja=function(){function e(e,t){if(this.container=e,this.parent=t,this.effects=[],this.curves=new Ha(this.container),this.container.styles.opacity<1&&this.effects.push(new Wa(this.container.styles.opacity)),null!==this.container.styles.transform){var A=this.container.bounds.left+this.container.styles.transformOrigin[0].number,i=this.container.bounds.top+this.container.styles.transformOrigin[1].number,n=this.container.styles.transform;this.effects.push(new Ka(A,i,n))}if(0!==this.container.styles.overflowX){var a=Pa(this.curves),r=Va(this.curves);za(a,r)?this.effects.push(new Ga(a,6)):(this.effects.push(new Ga(a,2)),this.effects.push(new Ga(r,4)))}}return e.prototype.getEffects=function(e){for(var t=-1===[2,3].indexOf(this.container.styles.position),A=this.parent,i=this.effects.slice(0);A;){var n=A.effects.filter((function(e){return!Xa(e)}));if(t||0!==A.container.styles.position||!A.parent){if(i.unshift.apply(i,n),t=-1===[2,3].indexOf(A.container.styles.position),0!==A.container.styles.overflowX){var a=Pa(A.curves),r=Va(A.curves);za(a,r)||i.unshift(new Ga(r,6))}}else i.unshift.apply(i,n);A=A.parent}return i.filter((function(t){return li(t.target,e)}))},e}(),Ja=function(e,t,A,i){e.container.elements.forEach((function(n){var a=li(n.flags,4),r=li(n.flags,2),s=new ja(n,e);li(n.styles.display,2048)&&i.push(s);var o=li(n.flags,8)?[]:i;if(a||r){var l=a||n.styles.isPositioned()?A:t,c=new Ya(s);if(n.styles.isPositioned()||n.styles.opacity<1||n.styles.isTransformed()){var d=n.styles.zIndex.order;if(d<0){var h=0;l.negativeZIndex.some((function(e,t){return d>e.element.container.styles.zIndex.order?(h=t,!1):h>0})),l.negativeZIndex.splice(h,0,c)}else if(d>0){var u=0;l.positiveZIndex.some((function(e,t){return d>=e.element.container.styles.zIndex.order?(u=t+1,!1):u>0})),l.positiveZIndex.splice(u,0,c)}else l.zeroOrAutoZIndexOrTransformedOrOpacity.push(c)}else n.styles.isFloating()?l.nonPositionedFloats.push(c):l.nonPositionedInlineLevel.push(c);Ja(s,c,a?c:A,o)}else n.styles.isInlineLevel()?t.inlineLevel.push(s):t.nonInlineLevel.push(s),Ja(s,t,A,o);li(n.flags,8)&&Za(n,o)}))},Za=function(e,t){for(var A=e instanceof dn?e.start:1,i=e instanceof dn&&e.reversed,n=0;n0&&e.intrinsicHeight>0){var i=tr(e),n=Va(t);this.path(n),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(A,0,0,e.intrinsicWidth,e.intrinsicHeight,i.left,i.top,i.width,i.height),this.ctx.restore()}},A.prototype.renderNodeContent=function(e){return i(this,void 0,void 0,(function(){var t,i,a,s,o,l,c,d,h,u,g,p,m,w,f,B,E,b;return n(this,(function(n){switch(n.label){case 0:this.applyEffects(e.getEffects(4)),t=e.container,i=e.curves,a=t.styles,s=0,o=t.textNodes,n.label=1;case 1:return s0&&y>0&&(f=i.ctx.createPattern(p,"repeat"),i.renderRepeat(E,f,x,S))):function(e){return 2===e.type}(A)&&(B=Ar(e,t,[null,null,null]),E=B[0],b=B[1],v=B[2],C=B[3],y=B[4],F=0===A.position.length?[At]:A.position,x=at(F[0],C),S=at(F[F.length-1],y),T=function(e,t,A,i,n){var a=0,r=0;switch(e.size){case 0:0===e.shape?a=r=Math.min(Math.abs(t),Math.abs(t-i),Math.abs(A),Math.abs(A-n)):1===e.shape&&(a=Math.min(Math.abs(t),Math.abs(t-i)),r=Math.min(Math.abs(A),Math.abs(A-n)));break;case 2:if(0===e.shape)a=r=Math.min(Tt(t,A),Tt(t,A-n),Tt(t-i,A),Tt(t-i,A-n));else if(1===e.shape){var s=Math.min(Math.abs(A),Math.abs(A-n))/Math.min(Math.abs(t),Math.abs(t-i)),o=It(i,n,t,A,!0),l=o[0],c=o[1];r=s*(a=Tt(l-t,(c-A)/s))}break;case 1:0===e.shape?a=r=Math.max(Math.abs(t),Math.abs(t-i),Math.abs(A),Math.abs(A-n)):1===e.shape&&(a=Math.max(Math.abs(t),Math.abs(t-i)),r=Math.max(Math.abs(A),Math.abs(A-n)));break;case 3:if(0===e.shape)a=r=Math.max(Tt(t,A),Tt(t,A-n),Tt(t-i,A),Tt(t-i,A-n));else if(1===e.shape){s=Math.max(Math.abs(A),Math.abs(A-n))/Math.max(Math.abs(t),Math.abs(t-i));var d=It(i,n,t,A,!1);l=d[0],c=d[1],r=s*(a=Tt(l-t,(c-A)/s))}}return Array.isArray(e.size)&&(a=at(e.size[0],i),r=2===e.size.length?at(e.size[1],n):a),[a,r]}(A,x,S,C,y),I=T[0],U=T[1],I>0&&U>0&&(Q=i.ctx.createRadialGradient(b+x,v+S,0,b+x,v+S,I),xt(A.stops,2*I).forEach((function(e){return Q.addColorStop(e.stop,gt(e.color))})),i.path(E),i.ctx.fillStyle=Q,I!==U?(k=e.bounds.left+.5*e.bounds.width,O=e.bounds.top+.5*e.bounds.height,L=1/(M=U/I),i.ctx.save(),i.ctx.translate(k,O),i.ctx.transform(1,0,0,M,0,0),i.ctx.translate(-k,-O),i.ctx.fillRect(b,L*(v-O)+O,C,y*L),i.ctx.restore()):i.ctx.fill())),n.label=6;case 6:return t--,[2]}}))},i=this,a=0,r=e.styles.backgroundImage.slice(0).reverse(),o.label=1;case 1:return a0?2!==l.style?[3,5]:[4,this.renderDashedDottedBorder(l.color,l.width,r,e.curves,2)]:[3,11]:[3,13];case 4:return n.sent(),[3,11];case 5:return 3!==l.style?[3,7]:[4,this.renderDashedDottedBorder(l.color,l.width,r,e.curves,3)];case 6:return n.sent(),[3,11];case 7:return 4!==l.style?[3,9]:[4,this.renderDoubleBorder(l.color,l.width,r,e.curves)];case 8:return n.sent(),[3,11];case 9:return[4,this.renderSolidBorder(l.color,r,e.curves)];case 10:n.sent(),n.label=11;case 11:r++,n.label=12;case 12:return s++,[3,3];case 13:return[2]}}))}))},A.prototype.renderDashedDottedBorder=function(e,t,A,a,r){return i(this,void 0,void 0,(function(){var i,s,o,l,c,d,h,u,g,p,m,w,f,B,E,b;return n(this,(function(n){return this.ctx.save(),i=function(e,t){switch(t){case 0:return _a(e.topLeftBorderStroke,e.topRightBorderStroke);case 1:return _a(e.topRightBorderStroke,e.bottomRightBorderStroke);case 2:return _a(e.bottomRightBorderStroke,e.bottomLeftBorderStroke);default:return _a(e.bottomLeftBorderStroke,e.topLeftBorderStroke)}}(a,A),s=qa(a,A),2===r&&(this.path(s),this.ctx.clip()),Na(s[0])?(o=s[0].start.x,l=s[0].start.y):(o=s[0].x,l=s[0].y),Na(s[1])?(c=s[1].end.x,d=s[1].end.y):(c=s[1].x,d=s[1].y),h=0===A||2===A?Math.abs(o-c):Math.abs(l-d),this.ctx.beginPath(),3===r?this.formatPath(i):this.formatPath(s.slice(0,2)),u=t<3?3*t:2*t,g=t<3?2*t:t,3===r&&(u=t,g=t),p=!0,h<=2*u?p=!1:h<=2*u+g?(u*=m=h/(2*u+g),g*=m):(w=Math.floor((h+g)/(u+g)),f=(h-w*u)/(w-1),g=(B=(h-(w+1)*u)/w)<=0||Math.abs(g-f){const a=await tex2dataURL(e,n);if(a){const e=[];e.push({mimeType:a.mimeType,id:t,dataURL:a.dataURL,created:a.created,size:a.size,hasSVGwithBitmap:!1,shouldScale:!0}),i(e,A)}};async function tex2dataURL(e,t){let A=0;for(;!t.mathjax&&!t.mathjaxLoaderFinished&&A<10;)await sleep$1(100),A++;t.mathjaxLoaderFinished||errorlog({where:"text2dataURL",fn:tex2dataURL,message:"mathjaxLoader not ready, using fallback. Try reloading Obsidian or restarting the Excalidraw plugin"});try{return await mathjaxSVG(e,t)}catch(A){await sleep$1(100);try{return await mathjaxSVG(e,t)}catch(A){await sleep$1(100);try{return await mathjaxSVG(e,t)}catch(A){return t.mathjax?new obsidian_module.Notice("Unknown error loading LaTeX. Using fallback solution. Try closing and reopening this drawing."):new obsidian_module.Notice("LaTeX support did not load. Using fallback solution. Try checking your network connection."),await mathjaxImage2html(e)}}}}async function mathjaxSVG(e,t){const A=t.mathjax.tex2svg(e,{display:!0,scale:4}).querySelector("svg");if(A){A.width.baseVal.valueInSpecifiedUnits<2&&(A.width.baseVal.valueAsString=`${(A.width.baseVal.valueInSpecifiedUnits+1).toFixed(3)}ex`);const e=svgToBase64(A.outerHTML);return{mimeType:"image/svg+xml",fileId:fileid(),dataURL:e,created:Date.now(),size:await getImageSize(e)}}return null}async function mathjaxImage2html(e){const t=document.body.createDiv();t.style.display="table";const A=window.MathJax.tex2chtml(e,{display:!0,scale:4});A.style.margin="3px",A.style.color="black";const i=A.querySelector("mjx-assistive-mml");i&&i.parentElement.removeChild(i),t.appendChild(A),window.MathJax.typeset();const n=await html2canvas(t,{backgroundColor:null});return document.body.removeChild(t),{mimeType:"image/png",fileId:fileid(),dataURL:n.toDataURL(),created:Date.now(),size:{height:n.height,width:n.width}}}const THEME_FILTER="invert(100%) hue-rotate(180deg) saturate(1.25)",markdownRendererRecursionWatcthdog=new Set,replaceSVGColors=(e,t)=>{if(!t)return e;if("string"==typeof e){for(const[A,i]of Object.entries(t)){const t=new RegExp(`fill="${A}"`,"g");e=e.replaceAll(t,`fill="${i}"`);const n=new RegExp(`stroke="${A}"`,"g");e=e.replaceAll(n,`stroke="${i}"`)}return e}const A=e=>{if(e instanceof SVGElement){const A=e.getAttribute("fill"),i=e.getAttribute("stroke");A&&t[A]&&e.setAttribute("fill",t[A]),i&&t[i]&&e.setAttribute("stroke",t[i])}for(const t of e.childNodes)A(t)};for(const t of e.childNodes)A(t);return e};class EmbeddedFile{constructor(e,t,A,i){if(this.file=null,this.isSVGwithBitmap=!1,this.img="",this.imgInverted="",this.mtime=0,this.mimeType="application/octet-stream",this.size={height:0,width:0},this.attemptCounter=0,this.isHyperlink=!1,this.colorMap=null,this.plugin=e,this.resetImage(t,A),this.file&&(this.plugin.ea.isExcalidrawFile(this.file)||"svg"===this.file.extension.toLowerCase()))try{this.colorMap=i?JSON.parse(i):null}catch(e){this.colorMap=null}}resetImage(e,t){if(this.imgInverted=this.img="",this.mtime=0,t.startsWith("https://")||t.startsWith("http://"))return this.isHyperlink=!0,void(this.hyperlink=t);this.linkParts=getLinkParts(t),this.hostPath=e,this.linkParts.path?(this.linkParts.width||(this.linkParts.width=this.plugin.settings.mdSVGwidth),this.linkParts.height||(this.linkParts.height=this.plugin.settings.mdSVGmaxHeight),this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,e),this.file||0==this.attemptCounter++&&new obsidian_module.Notice(`Excalidraw Warning: could not find image file: ${t}`,5e3)):new obsidian_module.Notice(`Excalidraw Error\nIncorrect embedded filename: ${t}`)}fileChanged(){return!this.isHyperlink&&(this.file||(this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),this.file)?this.mtime!=this.file.stat.mtime:(this.attemptCounter++,!1))}setImage(e,t,A,i,n){if(this.file||this.isHyperlink){switch(this.fileChanged()&&(this.imgInverted=this.img=""),this.mtime=this.isHyperlink?0:this.file.stat.mtime,this.size=A,this.mimeType=t,i&&n){case!0:this.imgInverted=e;break;case!1:this.img=e}this.isSVGwithBitmap=n}}isLoaded(e){if(!this.isHyperlink){if(!this.file&&(this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),!this.file))return this.attemptCounter++,!0;if(this.fileChanged())return!1}return this.isSVGwithBitmap&&e?""!==this.imgInverted:""!==this.img}getImage(e){return this.file||this.isHyperlink?e&&this.isSVGwithBitmap?this.imgInverted:this.img:""}shouldScale(){return this.isHyperlink||!Boolean(this.linkParts&&this.linkParts.original&&this.linkParts.original.endsWith("|100%"))}}class EmbeddedFilesLoader{constructor(e,t){this.pdfDocsMap=new Map,this.terminate=!1,this.plugin=e,this.isDark=t,this.uid=nanoid()}emptyPDFDocsMap(){this.pdfDocsMap.forEach((e=>e.destroy())),this.pdfDocsMap.clear()}async getObsidianImage(e,t){const A=await this._getObsidianImage(e,t);return this.emptyPDFDocsMap(),A}async _getObsidianImage(e,t){var A;if(!this.plugin||!e)return null;const i=e instanceof EmbeddedFile&&e.isHyperlink,n=e instanceof EmbeddedFile?e.hyperlink:"",a=e instanceof EmbeddedFile?e.file:e;if(a&&markdownRendererRecursionWatcthdog.has(a))return new obsidian_module.Notice(`Loading of ${a.path}. Please check if there is an inifinite loop of one file embedded in the other.`),null;const r=i?null:e instanceof EmbeddedFile?e.linkParts:{original:a.path,path:a.path,isBlockRef:!1,ref:null,width:this.plugin.settings.mdSVGwidth,height:this.plugin.settings.mdSVGmaxHeight,page:null};let s=!1;const o=!i&&this.plugin.isExcalidrawFile(a),l=!i&&"pdf"===a.extension.toLowerCase();if(!(i||l||IMAGE_TYPES.contains(a.extension)||o||"md"===a.extension))return null;const c=i||l?null:await app.vault.readBinary(a),d=o?await(async A=>{const i=hasExportTheme(this.plugin,a)?getExportTheme(this.plugin,a,"light"):void 0,n={withBackground:!!hasExportBackground(this.plugin,a)&&getWithBackground(this.plugin,a),withTheme:!!i},r=replaceSVGColors(await createSVG(a.path,!0,n,this,i,null,null,[],this.plugin,t+1,getExportPadding(this.plugin,a)),e instanceof EmbeddedFile?e.colorMap:null),o=r.querySelectorAll("image:not([href^='data:image/svg'])");return o.length>0&&(s=!0),s&&A&&o.forEach((e=>{var t;const A=null===(t=e.parentElement)||void 0===t?void 0:t.id;r.querySelectorAll(`use[href='#${A}']`).forEach((e=>{e.setAttribute("filter",THEME_FILTER)}))})),!s&&r.getAttribute("hasbitmap")&&(s=!0),svgToBase64(r.outerHTML)})(this.isDark):null,[h,u]=l?await this.pdfToDataURL(a,r):[null,null];let g=l?"image/png":"image/svg+xml";const p=i?getURLImageExtension(n):a.extension;o||l||(g=getMimeType(p));let m=i?e instanceof EmbeddedFile?await getDataURLFromURL(e.hyperlink,g):null:null!==(A=null!=d?d:h)&&void 0!==A?A:"svg"===a.extension?await getSVGData(app,a,e instanceof EmbeddedFile?e.colorMap:null):"md"===a.extension?null:await getDataURL(c,g);if(!i&&!m){markdownRendererRecursionWatcthdog.add(a);const e=await this.convertMarkdownToSVG(this.plugin,a,r,t);markdownRendererRecursionWatcthdog.delete(a),m=e.dataURL,s=e.hasSVGwithBitmap}try{const e=l?u:await getImageSize(m);return{mimeType:g,fileId:await generateIdFromFile(i||l?(new TextEncoder).encode(m):c),dataURL:m,created:i?0:a.stat.mtime,hasSVGwithBitmap:s,size:e}}catch(e){return null}}async loadSceneFiles(e,t,A){var i,n;if(A>4)return void new obsidian_module.Notice(t$d("INFINITE_LOOP_WARNING")+A.toString(),6e3);const a=e.getFileEntries();let r;void 0===this.isDark&&(this.isDark="dark"===(null===(n=null===(i=null==e?void 0:e.scene)||void 0===i?void 0:i.appState)||void 0===n?void 0:n.theme));const s=[];for(;!this.terminate&&!(r=a.next()).done;){const e=r.value[1];if(e.isLoaded(this.isDark)){if(e.isSVGwithBitmap){const A={mimeType:e.mimeType,id:r.value[0],dataURL:e.getImage(this.isDark),created:e.mtime,size:e.size,hasSVGwithBitmap:e.isSVGwithBitmap,shouldScale:e.shouldScale()};try{t([A],this.isDark,!1)}catch(e){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:e})}}}else{const i=await this._getObsidianImage(e,A);if(i){const A={mimeType:i.mimeType,id:r.value[0],dataURL:i.dataURL,created:i.created,size:i.size,hasSVGwithBitmap:i.hasSVGwithBitmap,shouldScale:e.shouldScale()};try{t([A],this.isDark,!1)}catch(e){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:e})}}}}let o;const l=e.getEquationEntries();for(;!this.terminate&&!(o=l.next()).done;)if(!e.getEquation(o.value[0]).isLoaded){const e=o.value[1].latex,t=await tex2dataURL(e,this.plugin);if(t){const e={mimeType:t.mimeType,id:o.value[0],dataURL:t.dataURL,created:t.created,size:t.size,hasSVGwithBitmap:!1,shouldScale:!0};s.push(e)}}if(this.emptyPDFDocsMap(),!this.terminate)try{t(s,this.isDark,!0)}catch(e){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:e})}}async pdfToDataURL(e,t){var A,i;try{let n=0,a=0;const r=null!==(A=this.pdfDocsMap.get(e.path))&&void 0!==A?A:await getPDFDoc(e);this.pdfDocsMap.has(e.path)||this.pdfDocsMap.set(e.path,r);const s=isNaN(t.page)?1:null!==(i=t.page)&&void 0!==i?i:1,o=this.plugin.settings.pdfScale,l=async e=>{const t=createEl("canvas"),A=t.getContext("2d"),i=await r.getPage(e),s=i.getViewport({scale:o});a=t.height=s.height,n=t.width=s.width;const l={canvasContext:A,background:"rgba(0,0,0,0)",viewport:s};return await i.render(l).promise,t},c=await l(s);if(c){const e=[`data:image/png;base64,${await new Promise(((e,t)=>{c.toBlob((async t=>{const A=await blobToBase64(t);e(A)}))}))}`,{width:n,height:a}];return c.width=0,c.height=0,e}}catch(e){return console.log(e),[null,null]}}async convertMarkdownToSVG(e,t,A,i){var n,a,r,s;let o=!1;const l=await getTransclusion(A,e.app,t);let c=(null!==(n=l.leadingHashes)&&void 0!==n?n:"")+l.contents;""===c&&(c="# Empty markdown file\nCTRL+Click here to open the file for editing in the current active pane, or CTRL+SHIFT+Click to open it in an adjacent pane.");const d=e.app.metadataCache.getFileCache(t);let h,u=e.settings.mdFont;switch((null==d?void 0:d.frontmatter)&&Boolean(d.frontmatter["excalidraw-font"])&&(u=d.frontmatter["excalidraw-font"]),u){case"Virgil":h=VIRGIL_FONT;break;case"Cascadia":h=CASCADIA_FONT;break;case"":h="";break;default:const A=await getFontDataURL(e.app,u,t.path);h=A.fontDef,u=A.fontName}(null==d?void 0:d.frontmatter)&&null!==d.frontmatter.banner&&(c=c.replace(/banner:\s*.*/,""));const g=(null==d?void 0:d.frontmatter)&&null!==(a=d.frontmatter["excalidraw-font-color"])&&void 0!==a?a:e.settings.mdFontColor;let p=(null==d?void 0:d.frontmatter)&&null!==(r=d.frontmatter["excalidraw-css"])&&void 0!==r?r:"",m=!1;if(p&&""!=p){const A=e.app.metadataCache.getFirstLinkpathDest(p,t.path);A&&(p=await e.app.vault.read(A),m=!0)}if(!m)if(e.settings.mdCSS&&""!==e.settings.mdCSS){const A=e.app.metadataCache.getFirstLinkpathDest(e.settings.mdCSS,t.path);p+=A?`\n${await e.app.vault.read(A)}`:DEFAULT_MD_EMBED_CSS}else p+=DEFAULT_MD_EMBED_CSS;const w=(null==d?void 0:d.frontmatter)&&null!==(s=d.frontmatter["excalidraw-border-color"])&&void 0!==s?s:e.settings.mdBorderColor;w&&""!==w&&!p.match(/svg/i)&&(p+=`svg{border:2px solid;color:${w};transform:scale(.95)}`);let f=` width="${A.width}px" height="100000"`,B=` width="${A.width}px" height="100%"`;const E=(e,t,A)=>`${A?``:""}${e}${t}${""!==h?``:""}`,b=createDiv();b.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),b.setAttribute("class","excalidraw-md-host"),""!==u&&(b.style.fontFamily=u),b.style.overflow="auto",b.style.display="block",b.style.color=g&&""!==g?g:"initial",await obsidian_module.MarkdownRenderer.renderMarkdown(c,b,t.path,e),b.querySelectorAll(":scope > *[class^='frontmatter']").forEach((e=>b.removeChild(e)));const v=Array.from(b.querySelectorAll("span[class='internal-embed']"));for(let A=0;A{const t=e.style,A=window.getComputedStyle(e);let i="";for(const e in t)t.hasOwnProperty(e)&&(i+=`${e}: ${A[e]};`);e.setAttribute("style",i)}));const S=(new XMLSerializer).serializeToString(F),T=(new XMLSerializer).serializeToString(x);document.body.removeChild(C);const I=new DOMParser,U=I.parseFromString(E(S,T),"image/svg+xml").firstElementChild,Q=createDiv();Q.appendChild(U),document.body.appendChild(Q);const k=U.querySelector(".excalidraw-md-footer").scrollHeight,O=U.querySelector(".excalidraw-md-host").scrollHeight+k,M=O<=A.height?O:A.height;document.body.removeChild(Q),f=` width="${A.width}px" height="${M}px"`,B=` width="${A.width}px" height="${M}px"`,b.style.height=M-k+"px",b.style.overflow="hidden";const L=b.querySelectorAll("img:not([src^='data:image/svg+xml'])");L.length>0&&(o=!0),o&&this.isDark&&L.forEach((e=>{e instanceof HTMLImageElement&&(e.style.filter=THEME_FILTER)}));const D=E((new XMLSerializer).serializeToString(b),'',p);return e.ea.mostRecentMarkdownSVG=I.parseFromString(D,"image/svg+xml").firstElementChild,{dataURL:svgToBase64(D),hasSVGwithBitmap:o}}}const getSVGData=async(e,t,A)=>{const i=replaceSVGColors(await e.vault.read(t),A);return svgToBase64(i)},generateIdFromFile=async e=>{let t;try{const A=await window.crypto.subtle.digest("SHA-1",e);t=Array.from(new Uint8Array(A)).map((e=>e.toString(16).padStart(2,"0"))).join("")}catch(e){errorlog({where:"EmbeddedFileLoader.generateIdFromFile",error:e}),t=fileid()}return t},{wrapText:wrapText,getFontString:getFontString,getBoundTextMaxWidth:getBoundTextMaxWidth,getDefaultLineHeight:getDefaultLineHeight$1}=excalidrawLib;var AutoexportPreference;!function(e){e[e.none=0]="none",e[e.both=1]="both",e[e.png=2]="png",e[e.svg=3]="svg",e[e.inherit=4]="inherit"}(AutoexportPreference||(AutoexportPreference={}));const REGEX_LINK={ +var e=function(t,A){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var A in t)Object.prototype.hasOwnProperty.call(t,A)&&(e[A]=t[A])},e(t,A)};function t(t,A){if("function"!=typeof A&&null!==A)throw new TypeError("Class extends value "+String(A)+" is not a constructor or null");function i(){this.constructor=t}e(t,A),t.prototype=null===A?Object.create(A):(i.prototype=A.prototype,new i)}var A=function(){return A=Object.assign||function(e){for(var t,A=1,i=arguments.length;A0&&n[n.length-1])||6!==a[0]&&2!==a[0])){r=0;continue}if(3===a[0]&&(!n||a[1]>n[0]&&a[1]=55296&&n<=56319&&A>10),r%1024+56320)),(n+1===A||i.length>16384)&&(a+=String.fromCharCode.apply(String,i),i.length=0)}return a},c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d="undefined"==typeof Uint8Array?[]:new Uint8Array(256),h=0;h<64;h++)d[c.charCodeAt(h)]=h;for(var u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",g="undefined"==typeof Uint8Array?[]:new Uint8Array(256),p=0;p<64;p++)g[u.charCodeAt(p)]=p;for(var m=function(e,t,A){return e.slice?e.slice(t,A):new Uint16Array(Array.prototype.slice.call(e,t,A))},f=function(){function e(e,t,A,i,n,a){this.initialValue=e,this.errorValue=t,this.highStart=A,this.highValueIndex=i,this.index=n,this.data=a}return e.prototype.get=function(e){var t;if(e>=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),w="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",E="undefined"==typeof Uint8Array?[]:new Uint8Array(256),b=0;b<64;b++)E[w.charCodeAt(b)]=b;var B=10,v=13,C=15,y=17,x=18,F=19,S=20,T=21,I=22,M=24,k=25,U=26,O=27,L=28,Q=30,N=32,D=33,R=34,H=35,P=37,V=38,K=39,G=40,W=42,z=[9001,65288],X="×",_="÷",Y=function(e,t){var A=function(e){var t,A,i,n,a,r=.75*e.length,s=e.length,o=0;"="===e[e.length-1]&&(r--,"="===e[e.length-2]&&r--);var l="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(r):new Array(r),c=Array.isArray(l)?l:new Uint8Array(l);for(t=0;t>4,c[o++]=(15&i)<<4|n>>2,c[o++]=(3&n)<<6|63&a;return l}(e),i=Array.isArray(A)?function(e){for(var t=e.length,A=[],i=0;i0;){var r=i[--a];if(Array.isArray(e)?-1!==e.indexOf(r):e===r)for(var s=A;s<=i.length;){var o;if((o=i[++s])===t)return!0;if(o!==B)break}if(r!==B)break}return!1},ie=function(e,t){for(var A=e;A>=0;){var i=t[A];if(i!==B)return i;A--}return 0},ne=function(e,t,A,i,n){if(0===A[i])return X;var a=i-1;if(Array.isArray(n)&&!0===n[a])return X;var r=a-1,s=a+1,o=t[a],l=r>=0?t[r]:0,c=t[s];if(2===o&&3===c)return X;if(-1!==J.indexOf(o))return"!";if(-1!==J.indexOf(c))return X;if(-1!==Z.indexOf(c))return X;if(8===ie(a,t))return _;if(11===Y.get(e[a]))return X;if((o===N||o===D)&&11===Y.get(e[s]))return X;if(7===o||7===c)return X;if(9===o)return X;if(-1===[B,v,C].indexOf(o)&&9===c)return X;if(-1!==[y,x,F,M,L].indexOf(c))return X;if(ie(a,t)===I)return X;if(Ae(23,I,a,t))return X;if(Ae([y,x],T,a,t))return X;if(Ae(12,12,a,t))return X;if(o===B)return _;if(23===o||23===c)return X;if(16===c||16===o)return _;if(-1!==[v,C,T].indexOf(c)||14===o)return X;if(36===l&&-1!==te.indexOf(o))return X;if(o===L&&36===c)return X;if(c===S)return X;if(-1!==j.indexOf(c)&&o===k||-1!==j.indexOf(o)&&c===k)return X;if(o===O&&-1!==[P,N,D].indexOf(c)||-1!==[P,N,D].indexOf(o)&&c===U)return X;if(-1!==j.indexOf(o)&&-1!==q.indexOf(c)||-1!==q.indexOf(o)&&-1!==j.indexOf(c))return X;if(-1!==[O,U].indexOf(o)&&(c===k||-1!==[I,C].indexOf(c)&&t[s+1]===k)||-1!==[I,C].indexOf(o)&&c===k||o===k&&-1!==[k,L,M].indexOf(c))return X;if(-1!==[k,L,M,y,x].indexOf(c))for(var d=a;d>=0;){if((h=t[d])===k)return X;if(-1===[L,M].indexOf(h))break;d--}if(-1!==[O,U].indexOf(c))for(d=-1!==[y,x].indexOf(o)?r:a;d>=0;){var h;if((h=t[d])===k)return X;if(-1===[L,M].indexOf(h))break;d--}if(V===o&&-1!==[V,K,R,H].indexOf(c)||-1!==[K,R].indexOf(o)&&-1!==[K,G].indexOf(c)||-1!==[G,H].indexOf(o)&&c===G)return X;if(-1!==ee.indexOf(o)&&-1!==[S,U].indexOf(c)||-1!==ee.indexOf(c)&&o===O)return X;if(-1!==j.indexOf(o)&&-1!==j.indexOf(c))return X;if(o===M&&-1!==j.indexOf(c))return X;if(-1!==j.concat(k).indexOf(o)&&c===I&&-1===z.indexOf(e[s])||-1!==j.concat(k).indexOf(c)&&o===x)return X;if(41===o&&41===c){for(var u=A[a],g=1;u>0&&41===t[--u];)g++;if(g%2!=0)return X}return o===N&&c===D?X:_},ae=function(e,t){t||(t={lineBreak:"normal",wordBreak:"normal"});var A=function(e,t){void 0===t&&(t="strict");var A=[],i=[],n=[];return e.forEach((function(e,a){var r=Y.get(e);if(r>50?(n.push(!0),r-=50):n.push(!1),-1!==["normal","auto","loose"].indexOf(t)&&-1!==[8208,8211,12316,12448].indexOf(e))return i.push(a),A.push(16);if(4===r||11===r){if(0===a)return i.push(a),A.push(Q);var s=A[a-1];return-1===$.indexOf(s)?(i.push(i[a-1]),A.push(s)):(i.push(a),A.push(Q))}return i.push(a),31===r?A.push("strict"===t?T:P):r===W||29===r?A.push(Q):43===r?e>=131072&&e<=196605||e>=196608&&e<=262141?A.push(P):A.push(Q):void A.push(r)})),[i,A,n]}(e,t.lineBreak),i=A[0],n=A[1],a=A[2];"break-all"!==t.wordBreak&&"break-word"!==t.wordBreak||(n=n.map((function(e){return-1!==[k,Q,W].indexOf(e)?P:e})));var r="keep-all"===t.wordBreak?a.map((function(t,A){return t&&e[A]>=19968&&e[A]<=40959})):void 0;return[i,n,r]},re=function(){function e(e,t,A,i){this.codePoints=e,this.required="!"===t,this.start=A,this.end=i}return e.prototype.slice=function(){return l.apply(void 0,this.codePoints.slice(this.start,this.end))},e}(),se=45,oe=43,le=-1,ce=function(e){return e>=48&&e<=57},de=function(e){return ce(e)||e>=65&&e<=70||e>=97&&e<=102},he=function(e){return 10===e||9===e||32===e},ue=function(e){return function(e){return function(e){return e>=97&&e<=122}(e)||function(e){return e>=65&&e<=90}(e)}(e)||function(e){return e>=128}(e)||95===e},ge=function(e){return ue(e)||ce(e)||e===se},pe=function(e){return e>=0&&e<=8||11===e||e>=14&&e<=31||127===e},me=function(e,t){return 92===e&&10!==t},fe=function(e,t,A){return e===se?ue(t)||me(t,A):!!ue(e)||!(92!==e||!me(e,t))},we=function(e,t,A){return e===oe||e===se?!!ce(t)||46===t&&ce(A):ce(46===e?t:e)},Ee=function(e){var t=0,A=1;e[t]!==oe&&e[t]!==se||(e[t]===se&&(A=-1),t++);for(var i=[];ce(e[t]);)i.push(e[t++]);var n=i.length?parseInt(l.apply(void 0,i),10):0;46===e[t]&&t++;for(var a=[];ce(e[t]);)a.push(e[t++]);var r=a.length,s=r?parseInt(l.apply(void 0,a),10):0;69!==e[t]&&101!==e[t]||t++;var o=1;e[t]!==oe&&e[t]!==se||(e[t]===se&&(o=-1),t++);for(var c=[];ce(e[t]);)c.push(e[t++]);var d=c.length?parseInt(l.apply(void 0,c),10):0;return A*(n+s*Math.pow(10,-r))*Math.pow(10,o*d)},be={type:2},Be={type:3},ve={type:4},Ce={type:13},ye={type:8},xe={type:21},Fe={type:9},Se={type:10},Te={type:11},Ie={type:12},Me={type:14},ke={type:23},Ue={type:1},Oe={type:25},Le={type:24},Qe={type:26},Ne={type:27},De={type:28},Re={type:29},He={type:31},Pe={type:32},Ve=function(){function e(){this._value=[]}return e.prototype.write=function(e){this._value=this._value.concat(o(e))},e.prototype.read=function(){for(var e=[],t=this.consumeToken();t!==Pe;)e.push(t),t=this.consumeToken();return e},e.prototype.consumeToken=function(){var e=this.consumeCodePoint();switch(e){case 34:return this.consumeStringToken(34);case 35:var t=this.peekCodePoint(0),A=this.peekCodePoint(1),i=this.peekCodePoint(2);if(ge(t)||me(A,i)){var n=fe(t,A,i)?2:1;return{type:5,value:this.consumeName(),flags:n}}break;case 36:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Ce;break;case 39:return this.consumeStringToken(39);case 40:return be;case 41:return Be;case 42:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Me;break;case oe:if(we(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 44:return ve;case se:var a=e,r=this.peekCodePoint(0),s=this.peekCodePoint(1);if(we(a,r,s))return this.reconsumeCodePoint(e),this.consumeNumericToken();if(fe(a,r,s))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();if(r===se&&62===s)return this.consumeCodePoint(),this.consumeCodePoint(),Le;break;case 46:if(we(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 47:if(42===this.peekCodePoint(0))for(this.consumeCodePoint();;){var o=this.consumeCodePoint();if(42===o&&47===(o=this.consumeCodePoint()))return this.consumeToken();if(o===le)return this.consumeToken()}break;case 58:return Qe;case 59:return Ne;case 60:if(33===this.peekCodePoint(0)&&this.peekCodePoint(1)===se&&this.peekCodePoint(2)===se)return this.consumeCodePoint(),this.consumeCodePoint(),Oe;break;case 64:var c=this.peekCodePoint(0),d=this.peekCodePoint(1),h=this.peekCodePoint(2);if(fe(c,d,h))return{type:7,value:this.consumeName()};break;case 91:return De;case 92:if(me(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();break;case 93:return Re;case 61:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),ye;break;case 123:return Te;case 125:return Ie;case 117:case 85:var u=this.peekCodePoint(0),g=this.peekCodePoint(1);return u!==oe||!de(g)&&63!==g||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(e),this.consumeIdentLikeToken();case 124:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Fe;if(124===this.peekCodePoint(0))return this.consumeCodePoint(),xe;break;case 126:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Se;break;case le:return Pe}return he(e)?(this.consumeWhiteSpace(),He):ce(e)?(this.reconsumeCodePoint(e),this.consumeNumericToken()):ue(e)?(this.reconsumeCodePoint(e),this.consumeIdentLikeToken()):{type:6,value:l(e)}},e.prototype.consumeCodePoint=function(){var e=this._value.shift();return void 0===e?-1:e},e.prototype.reconsumeCodePoint=function(e){this._value.unshift(e)},e.prototype.peekCodePoint=function(e){return e>=this._value.length?-1:this._value[e]},e.prototype.consumeUnicodeRangeToken=function(){for(var e=[],t=this.consumeCodePoint();de(t)&&e.length<6;)e.push(t),t=this.consumeCodePoint();for(var A=!1;63===t&&e.length<6;)e.push(t),t=this.consumeCodePoint(),A=!0;if(A)return{type:30,start:parseInt(l.apply(void 0,e.map((function(e){return 63===e?48:e}))),16),end:parseInt(l.apply(void 0,e.map((function(e){return 63===e?70:e}))),16)};var i=parseInt(l.apply(void 0,e),16);if(this.peekCodePoint(0)===se&&de(this.peekCodePoint(1))){this.consumeCodePoint(),t=this.consumeCodePoint();for(var n=[];de(t)&&n.length<6;)n.push(t),t=this.consumeCodePoint();return{type:30,start:i,end:parseInt(l.apply(void 0,n),16)}}return{type:30,start:i,end:i}},e.prototype.consumeIdentLikeToken=function(){var e=this.consumeName();return"url"===e.toLowerCase()&&40===this.peekCodePoint(0)?(this.consumeCodePoint(),this.consumeUrlToken()):40===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:19,value:e}):{type:20,value:e}},e.prototype.consumeUrlToken=function(){var e=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===le)return{type:22,value:""};var t=this.peekCodePoint(0);if(39===t||34===t){var A=this.consumeStringToken(this.consumeCodePoint());return 0===A.type&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===le||41===this.peekCodePoint(0))?(this.consumeCodePoint(),{type:22,value:A.value}):(this.consumeBadUrlRemnants(),ke)}for(;;){var i=this.consumeCodePoint();if(i===le||41===i)return{type:22,value:l.apply(void 0,e)};if(he(i))return this.consumeWhiteSpace(),this.peekCodePoint(0)===le||41===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:22,value:l.apply(void 0,e)}):(this.consumeBadUrlRemnants(),ke);if(34===i||39===i||40===i||pe(i))return this.consumeBadUrlRemnants(),ke;if(92===i){if(!me(i,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),ke;e.push(this.consumeEscapedCodePoint())}else e.push(i)}},e.prototype.consumeWhiteSpace=function(){for(;he(this.peekCodePoint(0));)this.consumeCodePoint()},e.prototype.consumeBadUrlRemnants=function(){for(;;){var e=this.consumeCodePoint();if(41===e||e===le)return;me(e,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},e.prototype.consumeStringSlice=function(e){for(var t="";e>0;){var A=Math.min(5e4,e);t+=l.apply(void 0,this._value.splice(0,A)),e-=A}return this._value.shift(),t},e.prototype.consumeStringToken=function(e){for(var t="",A=0;;){var i=this._value[A];if(i===le||void 0===i||i===e)return{type:0,value:t+=this.consumeStringSlice(A)};if(10===i)return this._value.splice(0,A),Ue;if(92===i){var n=this._value[A+1];n!==le&&void 0!==n&&(10===n?(t+=this.consumeStringSlice(A),A=-1,this._value.shift()):me(i,n)&&(t+=this.consumeStringSlice(A),t+=l(this.consumeEscapedCodePoint()),A=-1))}A++}},e.prototype.consumeNumber=function(){var e=[],t=4,A=this.peekCodePoint(0);for(A!==oe&&A!==se||e.push(this.consumeCodePoint());ce(this.peekCodePoint(0));)e.push(this.consumeCodePoint());A=this.peekCodePoint(0);var i=this.peekCodePoint(1);if(46===A&&ce(i))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;ce(this.peekCodePoint(0));)e.push(this.consumeCodePoint());A=this.peekCodePoint(0),i=this.peekCodePoint(1);var n=this.peekCodePoint(2);if((69===A||101===A)&&((i===oe||i===se)&&ce(n)||ce(i)))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;ce(this.peekCodePoint(0));)e.push(this.consumeCodePoint());return[Ee(e),t]},e.prototype.consumeNumericToken=function(){var e=this.consumeNumber(),t=e[0],A=e[1],i=this.peekCodePoint(0),n=this.peekCodePoint(1),a=this.peekCodePoint(2);return fe(i,n,a)?{type:15,number:t,flags:A,unit:this.consumeName()}:37===i?(this.consumeCodePoint(),{type:16,number:t,flags:A}):{type:17,number:t,flags:A}},e.prototype.consumeEscapedCodePoint=function(){var e=this.consumeCodePoint();if(de(e)){for(var t=l(e);de(this.peekCodePoint(0))&&t.length<6;)t+=l(this.consumeCodePoint());he(this.peekCodePoint(0))&&this.consumeCodePoint();var A=parseInt(t,16);return 0===A||function(e){return e>=55296&&e<=57343}(A)||A>1114111?65533:A}return e===le?65533:e},e.prototype.consumeName=function(){for(var e="";;){var t=this.consumeCodePoint();if(ge(t))e+=l(t);else{if(!me(t,this.peekCodePoint(0)))return this.reconsumeCodePoint(t),e;e+=l(this.consumeEscapedCodePoint())}}},e}(),Ke=function(){function e(e){this._tokens=e}return e.create=function(t){var A=new Ve;return A.write(t),new e(A.read())},e.parseValue=function(t){return e.create(t).parseComponentValue()},e.parseValues=function(t){return e.create(t).parseComponentValues()},e.prototype.parseComponentValue=function(){for(var e=this.consumeToken();31===e.type;)e=this.consumeToken();if(32===e.type)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(e);var t=this.consumeComponentValue();do{e=this.consumeToken()}while(31===e.type);if(32===e.type)return t;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},e.prototype.parseComponentValues=function(){for(var e=[];;){var t=this.consumeComponentValue();if(32===t.type)return e;e.push(t),e.push()}},e.prototype.consumeComponentValue=function(){var e=this.consumeToken();switch(e.type){case 11:case 28:case 2:return this.consumeSimpleBlock(e.type);case 19:return this.consumeFunction(e)}return e},e.prototype.consumeSimpleBlock=function(e){for(var t={type:e,values:[]},A=this.consumeToken();;){if(32===A.type||Ze(A,e))return t;this.reconsumeToken(A),t.values.push(this.consumeComponentValue()),A=this.consumeToken()}},e.prototype.consumeFunction=function(e){for(var t={name:e.value,values:[],type:18};;){var A=this.consumeToken();if(32===A.type||3===A.type)return t;this.reconsumeToken(A),t.values.push(this.consumeComponentValue())}},e.prototype.consumeToken=function(){var e=this._tokens.shift();return void 0===e?Pe:e},e.prototype.reconsumeToken=function(e){this._tokens.unshift(e)},e}(),Ge=function(e){return 15===e.type},We=function(e){return 17===e.type},ze=function(e){return 20===e.type},Xe=function(e){return 0===e.type},_e=function(e,t){return ze(e)&&e.value===t},Ye=function(e){return 31!==e.type},je=function(e){return 31!==e.type&&4!==e.type},Je=function(e){var t=[],A=[];return e.forEach((function(e){if(4===e.type){if(0===A.length)throw new Error("Error parsing function args, zero tokens for arg");return t.push(A),void(A=[])}31!==e.type&&A.push(e)})),A.length&&t.push(A),t},Ze=function(e,t){return 11===t&&12===e.type||28===t&&29===e.type||2===t&&3===e.type},qe=function(e){return 17===e.type||15===e.type},$e=function(e){return 16===e.type||qe(e)},et=function(e){return e.length>1?[e[0],e[1]]:[e[0]]},tt={type:17,number:0,flags:4},At={type:16,number:50,flags:4},it={type:16,number:100,flags:4},nt=function(e,t,A){var i=e[0],n=e[1];return[at(i,t),at(void 0!==n?n:i,A)]},at=function(e,t){if(16===e.type)return e.number/100*t;if(Ge(e))switch(e.unit){case"rem":case"em":return 16*e.number;default:return e.number}return e.number},rt="grad",st="turn",ot=function(e,t){if(15===t.type)switch(t.unit){case"deg":return Math.PI*t.number/180;case rt:return Math.PI/200*t.number;case"rad":return t.number;case st:return 2*Math.PI*t.number}throw new Error("Unsupported angle type")},lt=function(e){return 15===e.type&&("deg"===e.unit||e.unit===rt||"rad"===e.unit||e.unit===st)},ct=function(e){switch(e.filter(ze).map((function(e){return e.value})).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[tt,tt];case"to top":case"bottom":return dt(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[tt,it];case"to right":case"left":return dt(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[it,it];case"to bottom":case"top":return dt(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[it,tt];case"to left":case"right":return dt(270)}return 0},dt=function(e){return Math.PI*e/180},ht=function(e,t){if(18===t.type){var A=bt[t.name];if(void 0===A)throw new Error('Attempting to parse an unsupported color function "'+t.name+'"');return A(e,t.values)}if(5===t.type){if(3===t.value.length){var i=t.value.substring(0,1),n=t.value.substring(1,2),a=t.value.substring(2,3);return pt(parseInt(i+i,16),parseInt(n+n,16),parseInt(a+a,16),1)}if(4===t.value.length){i=t.value.substring(0,1),n=t.value.substring(1,2),a=t.value.substring(2,3);var r=t.value.substring(3,4);return pt(parseInt(i+i,16),parseInt(n+n,16),parseInt(a+a,16),parseInt(r+r,16)/255)}if(6===t.value.length)return i=t.value.substring(0,2),n=t.value.substring(2,4),a=t.value.substring(4,6),pt(parseInt(i,16),parseInt(n,16),parseInt(a,16),1);if(8===t.value.length)return i=t.value.substring(0,2),n=t.value.substring(2,4),a=t.value.substring(4,6),r=t.value.substring(6,8),pt(parseInt(i,16),parseInt(n,16),parseInt(a,16),parseInt(r,16)/255)}if(20===t.type){var s=vt[t.value.toUpperCase()];if(void 0!==s)return s}return vt.TRANSPARENT},ut=function(e){return 0==(255&e)},gt=function(e){var t=255&e,A=255&e>>8,i=255&e>>16,n=255&e>>24;return t<255?"rgba("+n+","+i+","+A+","+t/255+")":"rgb("+n+","+i+","+A+")"},pt=function(e,t,A,i){return(e<<24|t<<16|A<<8|Math.round(255*i)<<0)>>>0},mt=function(e,t){if(17===e.type)return e.number;if(16===e.type){var A=3===t?1:255;return 3===t?e.number/100*A:Math.round(e.number/100*A)}return 0},ft=function(e,t){var A=t.filter(je);if(3===A.length){var i=A.map(mt),n=i[0],a=i[1],r=i[2];return pt(n,a,r,1)}if(4===A.length){var s=A.map(mt),o=(n=s[0],a=s[1],r=s[2],s[3]);return pt(n,a,r,o)}return 0};function wt(e,t,A){return A<0&&(A+=1),A>=1&&(A-=1),A<1/6?(t-e)*A*6+e:A<.5?t:A<2/3?6*(t-e)*(2/3-A)+e:e}var Et=function(e,t){var A=t.filter(je),i=A[0],n=A[1],a=A[2],r=A[3],s=(17===i.type?dt(i.number):ot(e,i))/(2*Math.PI),o=$e(n)?n.number/100:0,l=$e(a)?a.number/100:0,c=void 0!==r&&$e(r)?at(r,1):1;if(0===o)return pt(255*l,255*l,255*l,1);var d=l<=.5?l*(o+1):l+o-l*o,h=2*l-d,u=wt(h,d,s+1/3),g=wt(h,d,s),p=wt(h,d,s-1/3);return pt(255*u,255*g,255*p,c)},bt={hsl:Et,hsla:Et,rgb:ft,rgba:ft},Bt=function(e,t){return ht(e,Ke.create(t).parseComponentValue())},vt={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},Ct={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(ze(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},yt={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},xt=function(e,t){var A=ht(e,t[0]),i=t[1];return i&&$e(i)?{color:A,stop:i}:{color:A,stop:null}},Ft=function(e,t){var A=e[0],i=e[e.length-1];null===A.stop&&(A.stop=tt),null===i.stop&&(i.stop=it);for(var n=[],a=0,r=0;ra?n.push(o):n.push(a),a=o}else n.push(null)}var l=null;for(r=0;re.optimumDistance)?{optimumCorner:t,optimumDistance:s}:e}),{optimumDistance:n?1/0:-1/0,optimumCorner:null}).optimumCorner},Mt=function(e,t){var A=dt(180),i=[];return Je(t).forEach((function(t,n){if(0===n){var a=t[0];if(20===a.type&&-1!==["top","left","right","bottom"].indexOf(a.value))return void(A=ct(t));if(lt(a))return void(A=(ot(e,a)+dt(270))%dt(360))}var r=xt(e,t);i.push(r)})),{angle:A,stops:i,type:1}},kt="closest-side",Ut="farthest-side",Ot="closest-corner",Lt="farthest-corner",Qt="circle",Nt="ellipse",Dt="cover",Rt="contain",Ht=function(e,t){var A=0,i=3,n=[],a=[];return Je(t).forEach((function(t,r){var s=!0;if(0===r?s=t.reduce((function(e,t){if(ze(t))switch(t.value){case"center":return a.push(At),!1;case"top":case"left":return a.push(tt),!1;case"right":case"bottom":return a.push(it),!1}else if($e(t)||qe(t))return a.push(t),!1;return e}),s):1===r&&(s=t.reduce((function(e,t){if(ze(t))switch(t.value){case Qt:return A=0,!1;case Nt:return A=1,!1;case Rt:case kt:return i=0,!1;case Ut:return i=1,!1;case Ot:return i=2,!1;case Dt:case Lt:return i=3,!1}else if(qe(t)||$e(t))return Array.isArray(i)||(i=[]),i.push(t),!1;return e}),s)),s){var o=xt(e,t);n.push(o)}})),{size:i,shape:A,stops:n,position:a,type:2}},Pt=function(e,t){if(22===t.type){var A={url:t.value,type:0};return e.cache.addImage(t.value),A}if(18===t.type){var i=Kt[t.name];if(void 0===i)throw new Error('Attempting to parse an unsupported image function "'+t.name+'"');return i(e,t.values)}throw new Error("Unsupported image type "+t.type)};var Vt,Kt={"linear-gradient":function(e,t){var A=dt(180),i=[];return Je(t).forEach((function(t,n){if(0===n){var a=t[0];if(20===a.type&&"to"===a.value)return void(A=ct(t));if(lt(a))return void(A=ot(e,a))}var r=xt(e,t);i.push(r)})),{angle:A,stops:i,type:1}},"-moz-linear-gradient":Mt,"-ms-linear-gradient":Mt,"-o-linear-gradient":Mt,"-webkit-linear-gradient":Mt,"radial-gradient":function(e,t){var A=0,i=3,n=[],a=[];return Je(t).forEach((function(t,r){var s=!0;if(0===r){var o=!1;s=t.reduce((function(e,t){if(o)if(ze(t))switch(t.value){case"center":return a.push(At),e;case"top":case"left":return a.push(tt),e;case"right":case"bottom":return a.push(it),e}else($e(t)||qe(t))&&a.push(t);else if(ze(t))switch(t.value){case Qt:return A=0,!1;case Nt:return A=1,!1;case"at":return o=!0,!1;case kt:return i=0,!1;case Dt:case Ut:return i=1,!1;case Rt:case Ot:return i=2,!1;case Lt:return i=3,!1}else if(qe(t)||$e(t))return Array.isArray(i)||(i=[]),i.push(t),!1;return e}),s)}if(s){var l=xt(e,t);n.push(l)}})),{size:i,shape:A,stops:n,position:a,type:2}},"-moz-radial-gradient":Ht,"-ms-radial-gradient":Ht,"-o-radial-gradient":Ht,"-webkit-radial-gradient":Ht,"-webkit-gradient":function(e,t){var A=dt(180),i=[],n=1;return Je(t).forEach((function(t,A){var a=t[0];if(0===A){if(ze(a)&&"linear"===a.value)return void(n=1);if(ze(a)&&"radial"===a.value)return void(n=2)}if(18===a.type)if("from"===a.name){var r=ht(e,a.values[0]);i.push({stop:tt,color:r})}else if("to"===a.name)r=ht(e,a.values[0]),i.push({stop:it,color:r});else if("color-stop"===a.name){var s=a.values.filter(je);if(2===s.length){r=ht(e,s[1]);var o=s[0];We(o)&&i.push({stop:{type:16,number:100*o.number,flags:o.flags},color:r})}}})),1===n?{angle:(A+dt(180))%dt(360),stops:i,type:n}:{size:3,shape:0,stops:i,position:[],type:n}}},Gt={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(e,t){if(0===t.length)return[];var A=t[0];return 20===A.type&&"none"===A.value?[]:t.filter((function(e){return je(e)&&function(e){return!(20===e.type&&"none"===e.value||18===e.type&&!Kt[e.name])}(e)})).map((function(t){return Pt(e,t)}))}},Wt={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(ze(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},zt={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(e,t){return Je(t).map((function(e){return e.filter($e)})).map(et)}},Xt={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(e,t){return Je(t).map((function(e){return e.filter(ze).map((function(e){return e.value})).join(" ")})).map(_t)}},_t=function(e){switch(e){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;default:return 0}};!function(e){e.AUTO="auto",e.CONTAIN="contain",e.COVER="cover"}(Vt||(Vt={}));var Yt,jt={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(e,t){return Je(t).map((function(e){return e.filter(Jt)}))}},Jt=function(e){return ze(e)||$e(e)},Zt=function(e){return{name:"border-"+e+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},qt=Zt("top"),$t=Zt("right"),eA=Zt("bottom"),tA=Zt("left"),AA=function(e){return{name:"border-radius-"+e,initialValue:"0 0",prefix:!1,type:1,parse:function(e,t){return et(t.filter($e))}}},iA=AA("top-left"),nA=AA("top-right"),aA=AA("bottom-right"),rA=AA("bottom-left"),sA=function(e){return{name:"border-"+e+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(e,t){switch(t){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},oA=sA("top"),lA=sA("right"),cA=sA("bottom"),dA=sA("left"),hA=function(e){return{name:"border-"+e+"-width",initialValue:"0",type:0,prefix:!1,parse:function(e,t){return Ge(t)?t.number:0}}},uA=hA("top"),gA=hA("right"),pA=hA("bottom"),mA=hA("left"),fA={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},wA={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(e,t){return"rtl"===t?1:0}},EA={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(e,t){return t.filter(ze).reduce((function(e,t){return e|bA(t.value)}),0)}},bA=function(e){switch(e){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},BA={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},vA={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(e,t){return 20===t.type&&"normal"===t.value?0:17===t.type||15===t.type?t.number:0}};!function(e){e.NORMAL="normal",e.STRICT="strict"}(Yt||(Yt={}));var CA,yA={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"strict"===t?Yt.STRICT:Yt.NORMAL}},xA={name:"line-height",initialValue:"normal",prefix:!1,type:4},FA=function(e,t){return ze(e)&&"normal"===e.value?1.2*t:17===e.type?t*e.number:$e(e)?at(e,t):t},SA={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(e,t){return 20===t.type&&"none"===t.value?null:Pt(e,t)}},TA={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(e,t){return"inside"===t?0:1}},IA={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;default:return-1}}},MA=function(e){return{name:"margin-"+e,initialValue:"0",prefix:!1,type:4}},kA=MA("top"),UA=MA("right"),OA=MA("bottom"),LA=MA("left"),QA={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(e,t){return t.filter(ze).map((function(e){switch(e.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;default:return 0}}))}},NA={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"break-word"===t?"break-word":"normal"}},DA=function(e){return{name:"padding-"+e,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},RA=DA("top"),HA=DA("right"),PA=DA("bottom"),VA=DA("left"),KA={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(e,t){switch(t){case"right":return 2;case"center":case"justify":return 1;default:return 0}}},GA={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(e,t){switch(t){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},WA={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(e,t){return 1===t.length&&_e(t[0],"none")?[]:Je(t).map((function(t){for(var A={color:vt.TRANSPARENT,offsetX:tt,offsetY:tt,blur:tt},i=0,n=0;n1?1:0],this.overflowWrap=Ci(e,NA,t.overflowWrap),this.paddingTop=Ci(e,RA,t.paddingTop),this.paddingRight=Ci(e,HA,t.paddingRight),this.paddingBottom=Ci(e,PA,t.paddingBottom),this.paddingLeft=Ci(e,VA,t.paddingLeft),this.paintOrder=Ci(e,fi,t.paintOrder),this.position=Ci(e,GA,t.position),this.textAlign=Ci(e,KA,t.textAlign),this.textDecorationColor=Ci(e,Ai,null!==(A=t.textDecorationColor)&&void 0!==A?A:t.color),this.textDecorationLine=Ci(e,ii,null!==(i=t.textDecorationLine)&&void 0!==i?i:t.textDecoration),this.textShadow=Ci(e,WA,t.textShadow),this.textTransform=Ci(e,zA,t.textTransform),this.transform=Ci(e,XA,t.transform),this.transformOrigin=Ci(e,JA,t.transformOrigin),this.visibility=Ci(e,ZA,t.visibility),this.webkitTextStrokeColor=Ci(e,wi,t.webkitTextStrokeColor),this.webkitTextStrokeWidth=Ci(e,Ei,t.webkitTextStrokeWidth),this.wordBreak=Ci(e,qA,t.wordBreak),this.zIndex=Ci(e,$A,t.zIndex)}return e.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&0===this.visibility},e.prototype.isTransparent=function(){return ut(this.backgroundColor)},e.prototype.isTransformed=function(){return null!==this.transform},e.prototype.isPositioned=function(){return 0!==this.position},e.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},e.prototype.isFloating=function(){return 0!==this.float},e.prototype.isInlineLevel=function(){return li(this.display,4)||li(this.display,33554432)||li(this.display,268435456)||li(this.display,536870912)||li(this.display,67108864)||li(this.display,134217728)},e}(),Bi=function(e,t){this.content=Ci(e,ci,t.content),this.quotes=Ci(e,gi,t.quotes)},vi=function(e,t){this.counterIncrement=Ci(e,di,t.counterIncrement),this.counterReset=Ci(e,hi,t.counterReset)},Ci=function(e,t,A){var i=new Ve,n=null!=A?A.toString():t.initialValue;i.write(n);var a=new Ke(i.read());switch(t.type){case 2:var r=a.parseComponentValue();return t.parse(e,ze(r)?r.value:t.initialValue);case 0:return t.parse(e,a.parseComponentValue());case 1:return t.parse(e,a.parseComponentValues());case 4:return a.parseComponentValue();case 3:switch(t.format){case"angle":return ot(e,a.parseComponentValue());case"color":return ht(e,a.parseComponentValue());case"image":return Pt(e,a.parseComponentValue());case"length":var s=a.parseComponentValue();return qe(s)?s:tt;case"length-percentage":var o=a.parseComponentValue();return $e(o)?o:tt;case"time":return ei.parse(e,a.parseComponentValue())}}},yi=function(e,t){var A=function(e){switch(e.getAttribute("data-html2canvas-debug")){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}}(e);return 1===A||t===A},xi=function(e,t){this.context=e,this.textNodes=[],this.elements=[],this.flags=0,yi(t,3),this.styles=new bi(e,window.getComputedStyle(t,null)),Mn(t)&&(this.styles.animationDuration.some((function(e){return e>0}))&&(t.style.animationDuration="0s"),null!==this.styles.transform&&(t.style.transform="none")),this.bounds=s(this.context,t),yi(t,4)&&(this.flags|=16)},Fi="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Si="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Ti=0;Ti<64;Ti++)Si[Fi.charCodeAt(Ti)]=Ti;for(var Ii=function(e,t,A){return e.slice?e.slice(t,A):new Uint16Array(Array.prototype.slice.call(e,t,A))},Mi=function(){function e(e,t,A,i,n,a){this.initialValue=e,this.errorValue=t,this.highStart=A,this.highValueIndex=i,this.index=n,this.data=a}return e.prototype.get=function(e){var t;if(e>=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),ki="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ui="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Oi=0;Oi<64;Oi++)Ui[ki.charCodeAt(Oi)]=Oi;var Li,Qi=8,Ni=9,Di=11,Ri=12,Hi=function(){for(var e=[],t=0;t>10),r%1024+56320)),(n+1===A||i.length>16384)&&(a+=String.fromCharCode.apply(String,i),i.length=0)}return a},Pi=function(e,t){var A=function(e){var t,A,i,n,a,r=.75*e.length,s=e.length,o=0;"="===e[e.length-1]&&(r--,"="===e[e.length-2]&&r--);var l="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(r):new Array(r),c=Array.isArray(l)?l:new Uint8Array(l);for(t=0;t>4,c[o++]=(15&i)<<4|n>>2,c[o++]=(3&n)<<6|63&a;return l}(e),i=Array.isArray(A)?function(e){for(var t=e.length,A=[],i=0;i=55296&&n<=56319&&A=A)return{done:!0,value:null};for(var e=Vi;ir.x||n.y>r.y;return r=n,0===t||s}));return e.body.removeChild(t),s}(document);return Object.defineProperty(Yi,"SUPPORT_WORD_BREAKING",{value:e}),e},get SUPPORT_SVG_DRAWING(){var e=function(e){var t=new Image,A=e.createElement("canvas"),i=A.getContext("2d");if(!i)return!1;t.src="data:image/svg+xml,";try{i.drawImage(t,0,0),A.toDataURL()}catch(e){return!1}return!0}(document);return Object.defineProperty(Yi,"SUPPORT_SVG_DRAWING",{value:e}),e},get SUPPORT_FOREIGNOBJECT_DRAWING(){var e="function"==typeof Array.from&&"function"==typeof window.fetch?function(e){var t=e.createElement("canvas"),A=100;t.width=A,t.height=A;var i=t.getContext("2d");if(!i)return Promise.reject(!1);i.fillStyle="rgb(0, 255, 0)",i.fillRect(0,0,A,A);var n=new Image,a=t.toDataURL();n.src=a;var r=Xi(A,A,0,0,n);return i.fillStyle="red",i.fillRect(0,0,A,A),_i(r).then((function(t){i.drawImage(t,0,0);var n=i.getImageData(0,0,A,A).data;i.fillStyle="red",i.fillRect(0,0,A,A);var r=e.createElement("div");return r.style.backgroundImage="url("+a+")",r.style.height=A+"px",zi(n)?_i(Xi(A,A,0,0,r)):Promise.reject(!1)})).then((function(e){return i.drawImage(e,0,0),zi(i.getImageData(0,0,A,A).data)})).catch((function(){return!1}))}(document):Promise.resolve(!1);return Object.defineProperty(Yi,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:e}),e},get SUPPORT_CORS_IMAGES(){var e=void 0!==(new Image).crossOrigin;return Object.defineProperty(Yi,"SUPPORT_CORS_IMAGES",{value:e}),e},get SUPPORT_RESPONSE_TYPE(){var e="string"==typeof(new XMLHttpRequest).responseType;return Object.defineProperty(Yi,"SUPPORT_RESPONSE_TYPE",{value:e}),e},get SUPPORT_CORS_XHR(){var e="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Yi,"SUPPORT_CORS_XHR",{value:e}),e},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var e=!("undefined"==typeof Intl||!Intl.Segmenter);return Object.defineProperty(Yi,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:e}),e}},ji=function(e,t){this.text=e,this.bounds=t},Ji=function(e,t){var A=t.ownerDocument;if(A){var i=A.createElement("html2canvaswrapper");i.appendChild(t.cloneNode(!0));var n=t.parentNode;if(n){n.replaceChild(i,t);var a=s(e,i);return i.firstChild&&n.replaceChild(i.firstChild,i),a}}return r.EMPTY},Zi=function(e,t,A){var i=e.ownerDocument;if(!i)throw new Error("Node has no owner document");var n=i.createRange();return n.setStart(e,t),n.setEnd(e,t+A),n},qi=function(e){if(Yi.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(t.segment(e)).map((function(e){return e.segment}))}return function(e){for(var t,A=Wi(e),i=[];!(t=A.next()).done;)t.value&&i.push(t.value.slice());return i}(e)},$i=function(e,t){return 0!==t.letterSpacing?qi(e):function(e,t){if(Yi.SUPPORT_NATIVE_TEXT_SEGMENTATION){var A=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(A.segment(e)).map((function(e){return e.segment}))}return tn(e,t)}(e,t)},en=[32,160,4961,65792,65793,4153,4241],tn=function(e,t){for(var A,i=function(e,t){var A=o(e),i=ae(A,t),n=i[0],a=i[1],r=i[2],s=A.length,l=0,c=0;return{next:function(){if(c>=s)return{done:!0,value:null};for(var e=X;c0)if(Yi.SUPPORT_RANGE_BOUNDS){var n=Zi(i,s,t.length).getClientRects();if(n.length>1){var o=qi(t),l=0;o.forEach((function(t){a.push(new ji(t,r.fromDOMRectList(e,Zi(i,l+s,t.length).getClientRects()))),l+=t.length}))}else a.push(new ji(t,r.fromDOMRectList(e,n)))}else{var c=i.splitText(t.length);a.push(new ji(t,Ji(e,i))),i=c}else Yi.SUPPORT_RANGE_BOUNDS||(i=i.splitText(t.length));s+=t.length})),a}(e,this.text,A,t)},nn=function(e,t){switch(t){case 1:return e.toLowerCase();case 3:return e.replace(an,rn);case 2:return e.toUpperCase();default:return e}},an=/(^|\s|:|-|\(|\))([a-z])/g,rn=function(e,t,A){return e.length>0?t+A.toUpperCase():e},sn=function(e){function A(t,A){var i=e.call(this,t,A)||this;return i.src=A.currentSrc||A.src,i.intrinsicWidth=A.naturalWidth,i.intrinsicHeight=A.naturalHeight,i.context.cache.addImage(i.src),i}return t(A,e),A}(xi),on=function(e){function A(t,A){var i=e.call(this,t,A)||this;return i.canvas=A,i.intrinsicWidth=A.width,i.intrinsicHeight=A.height,i}return t(A,e),A}(xi),ln=function(e){function A(t,A){var i=e.call(this,t,A)||this,n=new XMLSerializer,a=s(t,A);return A.setAttribute("width",a.width+"px"),A.setAttribute("height",a.height+"px"),i.svg="data:image/svg+xml,"+encodeURIComponent(n.serializeToString(A)),i.intrinsicWidth=A.width.baseVal.value,i.intrinsicHeight=A.height.baseVal.value,i.context.cache.addImage(i.svg),i}return t(A,e),A}(xi),cn=function(e){function A(t,A){var i=e.call(this,t,A)||this;return i.value=A.value,i}return t(A,e),A}(xi),dn=function(e){function A(t,A){var i=e.call(this,t,A)||this;return i.start=A.start,i.reversed="boolean"==typeof A.reversed&&!0===A.reversed,i}return t(A,e),A}(xi),hn=[{type:15,flags:0,unit:"px",number:3}],un=[{type:16,flags:0,number:50}],gn="checkbox",pn="radio",mn="password",fn=707406591,wn=function(e){function A(t,A){var i,n,a,s=e.call(this,t,A)||this;switch(s.type=A.type.toLowerCase(),s.checked=A.checked,s.value=0===(a=(n=A).type===mn?new Array(n.value.length+1).join("•"):n.value).length?n.placeholder||"":a,s.type!==gn&&s.type!==pn||(s.styles.backgroundColor=3739148031,s.styles.borderTopColor=s.styles.borderRightColor=s.styles.borderBottomColor=s.styles.borderLeftColor=2779096575,s.styles.borderTopWidth=s.styles.borderRightWidth=s.styles.borderBottomWidth=s.styles.borderLeftWidth=1,s.styles.borderTopStyle=s.styles.borderRightStyle=s.styles.borderBottomStyle=s.styles.borderLeftStyle=1,s.styles.backgroundClip=[0],s.styles.backgroundOrigin=[0],s.bounds=(i=s.bounds).width>i.height?new r(i.left+(i.width-i.height)/2,i.top,i.height,i.height):i.width0)A.textNodes.push(new An(e,n,A.styles));else if(In(n))if(Wn(n)&&n.assignedNodes)n.assignedNodes().forEach((function(t){return Cn(e,t,A,i)}));else{var r=yn(e,n);r.styles.isVisible()&&(Fn(n,r,i)?r.flags|=4:Sn(r.styles)&&(r.flags|=2),-1!==vn.indexOf(n.tagName)&&(r.flags|=8),A.elements.push(r),n.slot,n.shadowRoot?Cn(e,n.shadowRoot,r,i):Kn(n)||Qn(n)||Gn(n)||Cn(e,n,r,i))}},yn=function(e,t){return Hn(t)?new sn(e,t):Dn(t)?new on(e,t):Qn(t)?new ln(e,t):Un(t)?new cn(e,t):On(t)?new dn(e,t):Ln(t)?new wn(e,t):Gn(t)?new En(e,t):Kn(t)?new bn(e,t):Pn(t)?new Bn(e,t):new xi(e,t)},xn=function(e,t){var A=yn(e,t);return A.flags|=4,Cn(e,t,A,A),A},Fn=function(e,t,A){return t.styles.isPositionedWithZIndex()||t.styles.opacity<1||t.styles.isTransformed()||Nn(e)&&A.styles.isTransparent()},Sn=function(e){return e.isPositioned()||e.isFloating()},Tn=function(e){return e.nodeType===Node.TEXT_NODE},In=function(e){return e.nodeType===Node.ELEMENT_NODE},Mn=function(e){return In(e)&&void 0!==e.style&&!kn(e)},kn=function(e){return"object"==typeof e.className},Un=function(e){return"LI"===e.tagName},On=function(e){return"OL"===e.tagName},Ln=function(e){return"INPUT"===e.tagName},Qn=function(e){return"svg"===e.tagName},Nn=function(e){return"BODY"===e.tagName},Dn=function(e){return"CANVAS"===e.tagName},Rn=function(e){return"VIDEO"===e.tagName},Hn=function(e){return"IMG"===e.tagName},Pn=function(e){return"IFRAME"===e.tagName},Vn=function(e){return"STYLE"===e.tagName},Kn=function(e){return"TEXTAREA"===e.tagName},Gn=function(e){return"SELECT"===e.tagName},Wn=function(e){return"SLOT"===e.tagName},zn=function(e){return e.tagName.indexOf("-")>0},Xn=function(){function e(){this.counters={}}return e.prototype.getCounterValue=function(e){var t=this.counters[e];return t&&t.length?t[t.length-1]:1},e.prototype.getCounterValues=function(e){return this.counters[e]||[]},e.prototype.pop=function(e){var t=this;e.forEach((function(e){return t.counters[e].pop()}))},e.prototype.parse=function(e){var t=this,A=e.counterIncrement,i=e.counterReset,n=!0;null!==A&&A.forEach((function(e){var A=t.counters[e.counter];A&&0!==e.increment&&(n=!1,A.length||A.push(1),A[Math.max(0,A.length-1)]+=e.increment)}));var a=[];return n&&i.forEach((function(e){var A=t.counters[e.counter];a.push(e.counter),A||(A=t.counters[e.counter]=[]),A.push(e.reset)})),a},e}(),_n={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},Yn={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},jn={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},Jn={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},Zn=function(e,t,A,i,n,a){return eA?ra(e,n,a.length>0):i.integers.reduce((function(t,A,n){for(;e>=A;)e-=A,t+=i.values[n];return t}),"")+a},qn=function(e,t,A,i){var n="";do{A||e--,n=i(e)+n,e/=t}while(e*t>=t);return n},$n=function(e,t,A,i,n){var a=A-t+1;return(e<0?"-":"")+(qn(Math.abs(e),a,i,(function(e){return l(Math.floor(e%a)+t)}))+n)},ea=function(e,t,A){void 0===A&&(A=". ");var i=t.length;return qn(Math.abs(e),i,!1,(function(e){return t[Math.floor(e%i)]}))+A},ta=function(e,t,A,i,n,a){if(e<-9999||e>9999)return ra(e,4,n.length>0);var r=Math.abs(e),s=n;if(0===r)return t[0]+s;for(var o=0;r>0&&o<=4;o++){var l=r%10;0===l&&li(a,1)&&""!==s?s=t[l]+s:l>1||1===l&&0===o||1===l&&1===o&&li(a,2)||1===l&&1===o&&li(a,4)&&e>100||1===l&&o>1&&li(a,8)?s=t[l]+(o>0?A[o-1]:"")+s:1===l&&o>0&&(s=A[o-1]+s),r=Math.floor(r/10)}return(e<0?i:"")+s},Aa="十百千萬",ia="拾佰仟萬",na="マイナス",aa="마이너스",ra=function(e,t,A){var i=A?". ":"",n=A?"、":"",a=A?", ":"",r=A?" ":"";switch(t){case 0:return"•"+r;case 1:return"◦"+r;case 2:return"◾"+r;case 5:var s=$n(e,48,57,!0,i);return s.length<4?"0"+s:s;case 4:return ea(e,"〇一二三四五六七八九",n);case 6:return Zn(e,1,3999,_n,3,i).toLowerCase();case 7:return Zn(e,1,3999,_n,3,i);case 8:return $n(e,945,969,!1,i);case 9:return $n(e,97,122,!1,i);case 10:return $n(e,65,90,!1,i);case 11:return $n(e,1632,1641,!0,i);case 12:case 49:return Zn(e,1,9999,Yn,3,i);case 35:return Zn(e,1,9999,Yn,3,i).toLowerCase();case 13:return $n(e,2534,2543,!0,i);case 14:case 30:return $n(e,6112,6121,!0,i);case 15:return ea(e,"子丑寅卯辰巳午未申酉戌亥",n);case 16:return ea(e,"甲乙丙丁戊己庚辛壬癸",n);case 17:case 48:return ta(e,"零一二三四五六七八九",Aa,"負",n,14);case 47:return ta(e,"零壹貳參肆伍陸柒捌玖",ia,"負",n,15);case 42:return ta(e,"零一二三四五六七八九",Aa,"负",n,14);case 41:return ta(e,"零壹贰叁肆伍陆柒捌玖",ia,"负",n,15);case 26:return ta(e,"〇一二三四五六七八九","十百千万",na,n,0);case 25:return ta(e,"零壱弐参四伍六七八九","拾百千万",na,n,7);case 31:return ta(e,"영일이삼사오육칠팔구","십백천만",aa,a,7);case 33:return ta(e,"零一二三四五六七八九","十百千萬",aa,a,0);case 32:return ta(e,"零壹貳參四五六七八九","拾百千",aa,a,7);case 18:return $n(e,2406,2415,!0,i);case 20:return Zn(e,1,19999,Jn,3,i);case 21:return $n(e,2790,2799,!0,i);case 22:return $n(e,2662,2671,!0,i);case 22:return Zn(e,1,10999,jn,3,i);case 23:return ea(e,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return ea(e,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return $n(e,3302,3311,!0,i);case 28:return ea(e,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",n);case 29:return ea(e,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",n);case 34:return $n(e,3792,3801,!0,i);case 37:return $n(e,6160,6169,!0,i);case 38:return $n(e,4160,4169,!0,i);case 39:return $n(e,2918,2927,!0,i);case 40:return $n(e,1776,1785,!0,i);case 43:return $n(e,3046,3055,!0,i);case 44:return $n(e,3174,3183,!0,i);case 45:return $n(e,3664,3673,!0,i);case 46:return $n(e,3872,3881,!0,i);default:return $n(e,48,57,!0,i)}},sa="data-html2canvas-ignore",oa=function(){function e(e,t,A){if(this.context=e,this.options=A,this.scrolledElements=[],this.referenceElement=t,this.counters=new Xn,this.quoteDepth=0,!t.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(t.ownerDocument.documentElement,!1)}return e.prototype.toIFrame=function(e,t){var A=this,a=ca(e,t);if(!a.contentWindow)return Promise.reject("Unable to find iframe window");var r=e.defaultView.pageXOffset,s=e.defaultView.pageYOffset,o=a.contentWindow,l=o.document,c=ua(a).then((function(){return i(A,void 0,void 0,(function(){var e,A;return n(this,(function(i){switch(i.label){case 0:return this.scrolledElements.forEach(wa),o&&(o.scrollTo(t.left,t.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||o.scrollY===t.top&&o.scrollX===t.left||(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(o.scrollX-t.left,o.scrollY-t.top,0,0))),e=this.options.onclone,void 0===(A=this.clonedReferenceElement)?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:l.fonts&&l.fonts.ready?[4,l.fonts.ready]:[3,2];case 1:i.sent(),i.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,ha(l)]:[3,4];case 3:i.sent(),i.label=4;case 4:return"function"==typeof e?[2,Promise.resolve().then((function(){return e(l,A)})).then((function(){return a}))]:[2,a]}}))}))}));return l.open(),l.write(ma(document.doctype)+""),fa(this.referenceElement.ownerDocument,r,s),l.replaceChild(l.adoptNode(this.documentElement),l.documentElement),l.close(),c},e.prototype.createElementClone=function(e){if(yi(e,2),Dn(e))return this.createCanvasClone(e);if(Rn(e))return this.createVideoClone(e);if(Vn(e))return this.createStyleClone(e);var t=e.cloneNode(!1);return Hn(t)&&(Hn(e)&&e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc,t.srcset=""),"lazy"===t.loading&&(t.loading="eager")),zn(t)?this.createCustomElementClone(t):t},e.prototype.createCustomElementClone=function(e){var t=document.createElement("html2canvascustomelement");return pa(e.style,t),t},e.prototype.createStyleClone=function(e){try{var t=e.sheet;if(t&&t.cssRules){var A=[].slice.call(t.cssRules,0).reduce((function(e,t){return t&&"string"==typeof t.cssText?e+t.cssText:e}),""),i=e.cloneNode(!1);return i.textContent=A,i}}catch(e){if(this.context.logger.error("Unable to access cssRules property",e),"SecurityError"!==e.name)throw e}return e.cloneNode(!1)},e.prototype.createCanvasClone=function(e){var t;if(this.options.inlineImages&&e.ownerDocument){var A=e.ownerDocument.createElement("img");try{return A.src=e.toDataURL(),A}catch(t){this.context.logger.info("Unable to inline canvas contents, canvas is tainted",e)}}var i=e.cloneNode(!1);try{i.width=e.width,i.height=e.height;var n=e.getContext("2d"),a=i.getContext("2d");if(a)if(!this.options.allowTaint&&n)a.putImageData(n.getImageData(0,0,e.width,e.height),0,0);else{var r=null!==(t=e.getContext("webgl2"))&&void 0!==t?t:e.getContext("webgl");if(r){var s=r.getContextAttributes();!1===(null==s?void 0:s.preserveDrawingBuffer)&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",e)}a.drawImage(e,0,0)}return i}catch(t){this.context.logger.info("Unable to clone canvas as it is tainted",e)}return i},e.prototype.createVideoClone=function(e){var t=e.ownerDocument.createElement("canvas");t.width=e.offsetWidth,t.height=e.offsetHeight;var A=t.getContext("2d");try{return A&&(A.drawImage(e,0,0,t.width,t.height),this.options.allowTaint||A.getImageData(0,0,t.width,t.height)),t}catch(t){this.context.logger.info("Unable to clone video as it is tainted",e)}var i=e.ownerDocument.createElement("canvas");return i.width=e.offsetWidth,i.height=e.offsetHeight,i},e.prototype.appendChildNode=function(e,t,A){In(t)&&("SCRIPT"===t.tagName||t.hasAttribute(sa)||"function"==typeof this.options.ignoreElements&&this.options.ignoreElements(t))||this.options.copyStyles&&In(t)&&Vn(t)||e.appendChild(this.cloneNode(t,A))},e.prototype.cloneChildNodes=function(e,t,A){for(var i=this,n=e.shadowRoot?e.shadowRoot.firstChild:e.firstChild;n;n=n.nextSibling)if(In(n)&&Wn(n)&&"function"==typeof n.assignedNodes){var a=n.assignedNodes();a.length&&a.forEach((function(e){return i.appendChildNode(t,e,A)}))}else this.appendChildNode(t,n,A)},e.prototype.cloneNode=function(e,t){if(Tn(e))return document.createTextNode(e.data);if(!e.ownerDocument)return e.cloneNode(!1);var A=e.ownerDocument.defaultView;if(A&&In(e)&&(Mn(e)||kn(e))){var i=this.createElementClone(e);i.style.transitionProperty="none";var n=A.getComputedStyle(e),a=A.getComputedStyle(e,":before"),r=A.getComputedStyle(e,":after");this.referenceElement===e&&Mn(i)&&(this.clonedReferenceElement=i),Nn(i)&&va(i);var s=this.counters.parse(new vi(this.context,n)),o=this.resolvePseudoContent(e,i,a,Li.BEFORE);zn(e)&&(t=!0),Rn(e)||this.cloneChildNodes(e,i,t),o&&i.insertBefore(o,i.firstChild);var l=this.resolvePseudoContent(e,i,r,Li.AFTER);return l&&i.appendChild(l),this.counters.pop(s),(n&&(this.options.copyStyles||kn(e))&&!Pn(e)||t)&&pa(n,i),0===e.scrollTop&&0===e.scrollLeft||this.scrolledElements.push([i,e.scrollLeft,e.scrollTop]),(Kn(e)||Gn(e))&&(Kn(i)||Gn(i))&&(i.value=e.value),i}return e.cloneNode(!1)},e.prototype.resolvePseudoContent=function(e,t,A,i){var n=this;if(A){var a=A.content,r=t.ownerDocument;if(r&&a&&"none"!==a&&"-moz-alt-content"!==a&&"none"!==A.display){this.counters.parse(new vi(this.context,A));var s=new Bi(this.context,A),o=r.createElement("html2canvaspseudoelement");pa(A,o),s.content.forEach((function(t){if(0===t.type)o.appendChild(r.createTextNode(t.value));else if(22===t.type){var A=r.createElement("img");A.src=t.value,A.style.opacity="1",o.appendChild(A)}else if(18===t.type){if("attr"===t.name){var i=t.values.filter(ze);i.length&&o.appendChild(r.createTextNode(e.getAttribute(i[0].value)||""))}else if("counter"===t.name){var a=t.values.filter(je),l=a[0],c=a[1];if(l&&ze(l)){var d=n.counters.getCounterValue(l.value),h=c&&ze(c)?IA.parse(n.context,c.value):3;o.appendChild(r.createTextNode(ra(d,h,!1)))}}else if("counters"===t.name){var u=t.values.filter(je),g=(l=u[0],u[1]);if(c=u[2],l&&ze(l)){var p=n.counters.getCounterValues(l.value),m=c&&ze(c)?IA.parse(n.context,c.value):3,f=g&&0===g.type?g.value:"",w=p.map((function(e){return ra(e,m,!1)})).join(f);o.appendChild(r.createTextNode(w))}}}else if(20===t.type)switch(t.value){case"open-quote":o.appendChild(r.createTextNode(pi(s.quotes,n.quoteDepth++,!0)));break;case"close-quote":o.appendChild(r.createTextNode(pi(s.quotes,--n.quoteDepth,!1)));break;default:o.appendChild(r.createTextNode(t.value))}})),o.className=Ea+" "+ba;var l=i===Li.BEFORE?" "+Ea:" "+ba;return kn(t)?t.className.baseValue+=l:t.className+=l,o}}},e.destroy=function(e){return!!e.parentNode&&(e.parentNode.removeChild(e),!0)},e}();!function(e){e[e.BEFORE=0]="BEFORE",e[e.AFTER=1]="AFTER"}(Li||(Li={}));var la,ca=function(e,t){var A=e.createElement("iframe");return A.className="html2canvas-container",A.style.visibility="hidden",A.style.position="fixed",A.style.left="-10000px",A.style.top="0px",A.style.border="0",A.width=t.width.toString(),A.height=t.height.toString(),A.scrolling="no",A.setAttribute(sa,"true"),e.body.appendChild(A),A},da=function(e){return new Promise((function(t){e.complete?t():e.src?(e.onload=t,e.onerror=t):t()}))},ha=function(e){return Promise.all([].slice.call(e.images,0).map(da))},ua=function(e){return new Promise((function(t,A){var i=e.contentWindow;if(!i)return A("No window assigned for iframe");var n=i.document;i.onload=e.onload=function(){i.onload=e.onload=null;var A=setInterval((function(){n.body.childNodes.length>0&&"complete"===n.readyState&&(clearInterval(A),t(e))}),50)}}))},ga=["all","d","content"],pa=function(e,t){for(var A=e.length-1;A>=0;A--){var i=e.item(A);-1===ga.indexOf(i)&&t.style.setProperty(i,e.getPropertyValue(i))}return t},ma=function(e){var t="";return e&&(t+=""),t},fa=function(e,t,A){e&&e.defaultView&&(t!==e.defaultView.pageXOffset||A!==e.defaultView.pageYOffset)&&e.defaultView.scrollTo(t,A)},wa=function(e){var t=e[0],A=e[1],i=e[2];t.scrollLeft=A,t.scrollTop=i},Ea="___html2canvas___pseudoelement_before",ba="___html2canvas___pseudoelement_after",Ba='{\n content: "" !important;\n display: none !important;\n}',va=function(e){Ca(e,"."+Ea+":before"+Ba+"\n ."+ba+":after"+Ba)},Ca=function(e,t){var A=e.ownerDocument;if(A){var i=A.createElement("style");i.textContent=t,e.appendChild(i)}},ya=function(){function e(){}return e.getOrigin=function(t){var A=e._link;return A?(A.href=t,A.href=A.href,A.protocol+A.hostname+A.port):"about:blank"},e.isSameOrigin=function(t){return e.getOrigin(t)===e._origin},e.setContext=function(t){e._link=t.document.createElement("a"),e._origin=e.getOrigin(t.location.href)},e._origin="about:blank",e}(),xa=function(){function e(e,t){this.context=e,this._options=t,this._cache={}}return e.prototype.addImage=function(e){var t=Promise.resolve();return this.has(e)?t:Ua(e)||Ia(e)?((this._cache[e]=this.loadImage(e)).catch((function(){})),t):t},e.prototype.match=function(e){return this._cache[e]},e.prototype.loadImage=function(e){return i(this,void 0,void 0,(function(){var t,A,i,a,r=this;return n(this,(function(n){switch(n.label){case 0:return t=ya.isSameOrigin(e),A=!Ma(e)&&!0===this._options.useCORS&&Yi.SUPPORT_CORS_IMAGES&&!t,i=!Ma(e)&&!t&&!Ua(e)&&"string"==typeof this._options.proxy&&Yi.SUPPORT_CORS_XHR&&!A,t||!1!==this._options.allowTaint||Ma(e)||Ua(e)||i||A?(a=e,i?[4,this.proxy(a)]:[3,2]):[2];case 1:a=n.sent(),n.label=2;case 2:return this.context.logger.debug("Added image "+e.substring(0,256)),[4,new Promise((function(e,t){var i=new Image;i.onload=function(){return e(i)},i.onerror=t,(ka(a)||A)&&(i.crossOrigin="anonymous"),i.src=a,!0===i.complete&&setTimeout((function(){return e(i)}),500),r._options.imageTimeout>0&&setTimeout((function(){return t("Timed out ("+r._options.imageTimeout+"ms) loading image")}),r._options.imageTimeout)}))];case 3:return[2,n.sent()]}}))}))},e.prototype.has=function(e){return void 0!==this._cache[e]},e.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},e.prototype.proxy=function(e){var t=this,A=this._options.proxy;if(!A)throw new Error("No proxy defined");var i=e.substring(0,256);return new Promise((function(n,a){var r=Yi.SUPPORT_RESPONSE_TYPE?"blob":"text",s=new XMLHttpRequest;s.onload=function(){if(200===s.status)if("text"===r)n(s.response);else{var e=new FileReader;e.addEventListener("load",(function(){return n(e.result)}),!1),e.addEventListener("error",(function(e){return a(e)}),!1),e.readAsDataURL(s.response)}else a("Failed to proxy resource "+i+" with status code "+s.status)},s.onerror=a;var o=A.indexOf("?")>-1?"&":"?";if(s.open("GET",""+A+o+"url="+encodeURIComponent(e)+"&responseType="+r),"text"!==r&&s instanceof XMLHttpRequest&&(s.responseType=r),t._options.imageTimeout){var l=t._options.imageTimeout;s.timeout=l,s.ontimeout=function(){return a("Timed out ("+l+"ms) proxying "+i)}}s.send()}))},e}(),Fa=/^data:image\/svg\+xml/i,Sa=/^data:image\/.*;base64,/i,Ta=/^data:image\/.*/i,Ia=function(e){return Yi.SUPPORT_SVG_DRAWING||!Oa(e)},Ma=function(e){return Ta.test(e)},ka=function(e){return Sa.test(e)},Ua=function(e){return"blob"===e.substr(0,4)},Oa=function(e){return"svg"===e.substr(-3).toLowerCase()||Fa.test(e)},La=function(){function e(e,t){this.type=0,this.x=e,this.y=t}return e.prototype.add=function(t,A){return new e(this.x+t,this.y+A)},e}(),Qa=function(e,t,A){return new La(e.x+(t.x-e.x)*A,e.y+(t.y-e.y)*A)},Na=function(){function e(e,t,A,i){this.type=1,this.start=e,this.startControl=t,this.endControl=A,this.end=i}return e.prototype.subdivide=function(t,A){var i=Qa(this.start,this.startControl,t),n=Qa(this.startControl,this.endControl,t),a=Qa(this.endControl,this.end,t),r=Qa(i,n,t),s=Qa(n,a,t),o=Qa(r,s,t);return A?new e(this.start,i,r,o):new e(o,s,a,this.end)},e.prototype.add=function(t,A){return new e(this.start.add(t,A),this.startControl.add(t,A),this.endControl.add(t,A),this.end.add(t,A))},e.prototype.reverse=function(){return new e(this.end,this.endControl,this.startControl,this.start)},e}(),Da=function(e){return 1===e.type},Ra=function(e){var t=e.styles,A=e.bounds,i=nt(t.borderTopLeftRadius,A.width,A.height),n=i[0],a=i[1],r=nt(t.borderTopRightRadius,A.width,A.height),s=r[0],o=r[1],l=nt(t.borderBottomRightRadius,A.width,A.height),c=l[0],d=l[1],h=nt(t.borderBottomLeftRadius,A.width,A.height),u=h[0],g=h[1],p=[];p.push((n+s)/A.width),p.push((u+c)/A.width),p.push((a+g)/A.height),p.push((o+d)/A.height);var m=Math.max.apply(Math,p);m>1&&(n/=m,a/=m,s/=m,o/=m,c/=m,d/=m,u/=m,g/=m);var f=A.width-s,w=A.height-d,E=A.width-c,b=A.height-g,B=t.borderTopWidth,v=t.borderRightWidth,C=t.borderBottomWidth,y=t.borderLeftWidth,x=at(t.paddingTop,e.bounds.width),F=at(t.paddingRight,e.bounds.width),S=at(t.paddingBottom,e.bounds.width),T=at(t.paddingLeft,e.bounds.width);this.topLeftBorderDoubleOuterBox=n>0||a>0?Ha(A.left+y/3,A.top+B/3,n-y/3,a-B/3,la.TOP_LEFT):new La(A.left+y/3,A.top+B/3),this.topRightBorderDoubleOuterBox=n>0||a>0?Ha(A.left+f,A.top+B/3,s-v/3,o-B/3,la.TOP_RIGHT):new La(A.left+A.width-v/3,A.top+B/3),this.bottomRightBorderDoubleOuterBox=c>0||d>0?Ha(A.left+E,A.top+w,c-v/3,d-C/3,la.BOTTOM_RIGHT):new La(A.left+A.width-v/3,A.top+A.height-C/3),this.bottomLeftBorderDoubleOuterBox=u>0||g>0?Ha(A.left+y/3,A.top+b,u-y/3,g-C/3,la.BOTTOM_LEFT):new La(A.left+y/3,A.top+A.height-C/3),this.topLeftBorderDoubleInnerBox=n>0||a>0?Ha(A.left+2*y/3,A.top+2*B/3,n-2*y/3,a-2*B/3,la.TOP_LEFT):new La(A.left+2*y/3,A.top+2*B/3),this.topRightBorderDoubleInnerBox=n>0||a>0?Ha(A.left+f,A.top+2*B/3,s-2*v/3,o-2*B/3,la.TOP_RIGHT):new La(A.left+A.width-2*v/3,A.top+2*B/3),this.bottomRightBorderDoubleInnerBox=c>0||d>0?Ha(A.left+E,A.top+w,c-2*v/3,d-2*C/3,la.BOTTOM_RIGHT):new La(A.left+A.width-2*v/3,A.top+A.height-2*C/3),this.bottomLeftBorderDoubleInnerBox=u>0||g>0?Ha(A.left+2*y/3,A.top+b,u-2*y/3,g-2*C/3,la.BOTTOM_LEFT):new La(A.left+2*y/3,A.top+A.height-2*C/3),this.topLeftBorderStroke=n>0||a>0?Ha(A.left+y/2,A.top+B/2,n-y/2,a-B/2,la.TOP_LEFT):new La(A.left+y/2,A.top+B/2),this.topRightBorderStroke=n>0||a>0?Ha(A.left+f,A.top+B/2,s-v/2,o-B/2,la.TOP_RIGHT):new La(A.left+A.width-v/2,A.top+B/2),this.bottomRightBorderStroke=c>0||d>0?Ha(A.left+E,A.top+w,c-v/2,d-C/2,la.BOTTOM_RIGHT):new La(A.left+A.width-v/2,A.top+A.height-C/2),this.bottomLeftBorderStroke=u>0||g>0?Ha(A.left+y/2,A.top+b,u-y/2,g-C/2,la.BOTTOM_LEFT):new La(A.left+y/2,A.top+A.height-C/2),this.topLeftBorderBox=n>0||a>0?Ha(A.left,A.top,n,a,la.TOP_LEFT):new La(A.left,A.top),this.topRightBorderBox=s>0||o>0?Ha(A.left+f,A.top,s,o,la.TOP_RIGHT):new La(A.left+A.width,A.top),this.bottomRightBorderBox=c>0||d>0?Ha(A.left+E,A.top+w,c,d,la.BOTTOM_RIGHT):new La(A.left+A.width,A.top+A.height),this.bottomLeftBorderBox=u>0||g>0?Ha(A.left,A.top+b,u,g,la.BOTTOM_LEFT):new La(A.left,A.top+A.height),this.topLeftPaddingBox=n>0||a>0?Ha(A.left+y,A.top+B,Math.max(0,n-y),Math.max(0,a-B),la.TOP_LEFT):new La(A.left+y,A.top+B),this.topRightPaddingBox=s>0||o>0?Ha(A.left+Math.min(f,A.width-v),A.top+B,f>A.width+v?0:Math.max(0,s-v),Math.max(0,o-B),la.TOP_RIGHT):new La(A.left+A.width-v,A.top+B),this.bottomRightPaddingBox=c>0||d>0?Ha(A.left+Math.min(E,A.width-y),A.top+Math.min(w,A.height-C),Math.max(0,c-v),Math.max(0,d-C),la.BOTTOM_RIGHT):new La(A.left+A.width-v,A.top+A.height-C),this.bottomLeftPaddingBox=u>0||g>0?Ha(A.left+y,A.top+Math.min(b,A.height-C),Math.max(0,u-y),Math.max(0,g-C),la.BOTTOM_LEFT):new La(A.left+y,A.top+A.height-C),this.topLeftContentBox=n>0||a>0?Ha(A.left+y+T,A.top+B+x,Math.max(0,n-(y+T)),Math.max(0,a-(B+x)),la.TOP_LEFT):new La(A.left+y+T,A.top+B+x),this.topRightContentBox=s>0||o>0?Ha(A.left+Math.min(f,A.width+y+T),A.top+B+x,f>A.width+y+T?0:s-y+T,o-(B+x),la.TOP_RIGHT):new La(A.left+A.width-(v+F),A.top+B+x),this.bottomRightContentBox=c>0||d>0?Ha(A.left+Math.min(E,A.width-(y+T)),A.top+Math.min(w,A.height+B+x),Math.max(0,c-(v+F)),d-(C+S),la.BOTTOM_RIGHT):new La(A.left+A.width-(v+F),A.top+A.height-(C+S)),this.bottomLeftContentBox=u>0||g>0?Ha(A.left+y+T,A.top+b,Math.max(0,u-(y+T)),g-(C+S),la.BOTTOM_LEFT):new La(A.left+y+T,A.top+A.height-(C+S))};!function(e){e[e.TOP_LEFT=0]="TOP_LEFT",e[e.TOP_RIGHT=1]="TOP_RIGHT",e[e.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",e[e.BOTTOM_LEFT=3]="BOTTOM_LEFT"}(la||(la={}));var Ha=function(e,t,A,i,n){var a=(Math.sqrt(2)-1)/3*4,r=A*a,s=i*a,o=e+A,l=t+i;switch(n){case la.TOP_LEFT:return new Na(new La(e,l),new La(e,l-s),new La(o-r,t),new La(o,t));case la.TOP_RIGHT:return new Na(new La(e,t),new La(e+r,t),new La(o,l-s),new La(o,l));case la.BOTTOM_RIGHT:return new Na(new La(o,t),new La(o,t+s),new La(e+r,l),new La(e,l));case la.BOTTOM_LEFT:default:return new Na(new La(o,l),new La(o-r,l),new La(e,t+s),new La(e,t))}},Pa=function(e){return[e.topLeftBorderBox,e.topRightBorderBox,e.bottomRightBorderBox,e.bottomLeftBorderBox]},Va=function(e){return[e.topLeftPaddingBox,e.topRightPaddingBox,e.bottomRightPaddingBox,e.bottomLeftPaddingBox]},Ka=function(e,t,A){this.offsetX=e,this.offsetY=t,this.matrix=A,this.type=0,this.target=6},Ga=function(e,t){this.path=e,this.target=t,this.type=1},Wa=function(e){this.opacity=e,this.type=2,this.target=6},za=function(e){return 1===e.type},Xa=function(e,t){return e.length===t.length&&e.some((function(e,A){return e===t[A]}))},_a=function(e){this.element=e,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},Ya=function(){function e(e,t){if(this.container=e,this.parent=t,this.effects=[],this.curves=new Ra(this.container),this.container.styles.opacity<1&&this.effects.push(new Wa(this.container.styles.opacity)),null!==this.container.styles.transform){var A=this.container.bounds.left+this.container.styles.transformOrigin[0].number,i=this.container.bounds.top+this.container.styles.transformOrigin[1].number,n=this.container.styles.transform;this.effects.push(new Ka(A,i,n))}if(0!==this.container.styles.overflowX){var a=Pa(this.curves),r=Va(this.curves);Xa(a,r)?this.effects.push(new Ga(a,6)):(this.effects.push(new Ga(a,2)),this.effects.push(new Ga(r,4)))}}return e.prototype.getEffects=function(e){for(var t=-1===[2,3].indexOf(this.container.styles.position),A=this.parent,i=this.effects.slice(0);A;){var n=A.effects.filter((function(e){return!za(e)}));if(t||0!==A.container.styles.position||!A.parent){if(i.unshift.apply(i,n),t=-1===[2,3].indexOf(A.container.styles.position),0!==A.container.styles.overflowX){var a=Pa(A.curves),r=Va(A.curves);Xa(a,r)||i.unshift(new Ga(r,6))}}else i.unshift.apply(i,n);A=A.parent}return i.filter((function(t){return li(t.target,e)}))},e}(),ja=function(e,t,A,i){e.container.elements.forEach((function(n){var a=li(n.flags,4),r=li(n.flags,2),s=new Ya(n,e);li(n.styles.display,2048)&&i.push(s);var o=li(n.flags,8)?[]:i;if(a||r){var l=a||n.styles.isPositioned()?A:t,c=new _a(s);if(n.styles.isPositioned()||n.styles.opacity<1||n.styles.isTransformed()){var d=n.styles.zIndex.order;if(d<0){var h=0;l.negativeZIndex.some((function(e,t){return d>e.element.container.styles.zIndex.order?(h=t,!1):h>0})),l.negativeZIndex.splice(h,0,c)}else if(d>0){var u=0;l.positiveZIndex.some((function(e,t){return d>=e.element.container.styles.zIndex.order?(u=t+1,!1):u>0})),l.positiveZIndex.splice(u,0,c)}else l.zeroOrAutoZIndexOrTransformedOrOpacity.push(c)}else n.styles.isFloating()?l.nonPositionedFloats.push(c):l.nonPositionedInlineLevel.push(c);ja(s,c,a?c:A,o)}else n.styles.isInlineLevel()?t.inlineLevel.push(s):t.nonInlineLevel.push(s),ja(s,t,A,o);li(n.flags,8)&&Ja(n,o)}))},Ja=function(e,t){for(var A=e instanceof dn?e.start:1,i=e instanceof dn&&e.reversed,n=0;n0&&e.intrinsicHeight>0){var i=tr(e),n=Va(t);this.path(n),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(A,0,0,e.intrinsicWidth,e.intrinsicHeight,i.left,i.top,i.width,i.height),this.ctx.restore()}},A.prototype.renderNodeContent=function(e){return i(this,void 0,void 0,(function(){var t,i,a,s,o,l,c,d,h,u,g,p,m,f,w,E,b,B;return n(this,(function(n){switch(n.label){case 0:this.applyEffects(e.getEffects(4)),t=e.container,i=e.curves,a=t.styles,s=0,o=t.textNodes,n.label=1;case 1:return s0&&y>0&&(w=i.ctx.createPattern(p,"repeat"),i.renderRepeat(b,w,F,S))):function(e){return 2===e.type}(A)&&(E=Ar(e,t,[null,null,null]),b=E[0],B=E[1],v=E[2],C=E[3],y=E[4],x=0===A.position.length?[At]:A.position,F=at(x[0],C),S=at(x[x.length-1],y),T=function(e,t,A,i,n){var a=0,r=0;switch(e.size){case 0:0===e.shape?a=r=Math.min(Math.abs(t),Math.abs(t-i),Math.abs(A),Math.abs(A-n)):1===e.shape&&(a=Math.min(Math.abs(t),Math.abs(t-i)),r=Math.min(Math.abs(A),Math.abs(A-n)));break;case 2:if(0===e.shape)a=r=Math.min(Tt(t,A),Tt(t,A-n),Tt(t-i,A),Tt(t-i,A-n));else if(1===e.shape){var s=Math.min(Math.abs(A),Math.abs(A-n))/Math.min(Math.abs(t),Math.abs(t-i)),o=It(i,n,t,A,!0),l=o[0],c=o[1];r=s*(a=Tt(l-t,(c-A)/s))}break;case 1:0===e.shape?a=r=Math.max(Math.abs(t),Math.abs(t-i),Math.abs(A),Math.abs(A-n)):1===e.shape&&(a=Math.max(Math.abs(t),Math.abs(t-i)),r=Math.max(Math.abs(A),Math.abs(A-n)));break;case 3:if(0===e.shape)a=r=Math.max(Tt(t,A),Tt(t,A-n),Tt(t-i,A),Tt(t-i,A-n));else if(1===e.shape){s=Math.max(Math.abs(A),Math.abs(A-n))/Math.max(Math.abs(t),Math.abs(t-i));var d=It(i,n,t,A,!1);l=d[0],c=d[1],r=s*(a=Tt(l-t,(c-A)/s))}}return Array.isArray(e.size)&&(a=at(e.size[0],i),r=2===e.size.length?at(e.size[1],n):a),[a,r]}(A,F,S,C,y),I=T[0],M=T[1],I>0&&M>0&&(k=i.ctx.createRadialGradient(B+F,v+S,0,B+F,v+S,I),Ft(A.stops,2*I).forEach((function(e){return k.addColorStop(e.stop,gt(e.color))})),i.path(b),i.ctx.fillStyle=k,I!==M?(U=e.bounds.left+.5*e.bounds.width,O=e.bounds.top+.5*e.bounds.height,Q=1/(L=M/I),i.ctx.save(),i.ctx.translate(U,O),i.ctx.transform(1,0,0,L,0,0),i.ctx.translate(-U,-O),i.ctx.fillRect(B,Q*(v-O)+O,C,y*Q),i.ctx.restore()):i.ctx.fill())),n.label=6;case 6:return t--,[2]}}))},i=this,a=0,r=e.styles.backgroundImage.slice(0).reverse(),o.label=1;case 1:return a0?2!==l.style?[3,5]:[4,this.renderDashedDottedBorder(l.color,l.width,r,e.curves,2)]:[3,11]:[3,13];case 4:return n.sent(),[3,11];case 5:return 3!==l.style?[3,7]:[4,this.renderDashedDottedBorder(l.color,l.width,r,e.curves,3)];case 6:return n.sent(),[3,11];case 7:return 4!==l.style?[3,9]:[4,this.renderDoubleBorder(l.color,l.width,r,e.curves)];case 8:return n.sent(),[3,11];case 9:return[4,this.renderSolidBorder(l.color,r,e.curves)];case 10:n.sent(),n.label=11;case 11:r++,n.label=12;case 12:return s++,[3,3];case 13:return[2]}}))}))},A.prototype.renderDashedDottedBorder=function(e,t,A,a,r){return i(this,void 0,void 0,(function(){var i,s,o,l,c,d,h,u,g,p,m,f,w,E,b,B;return n(this,(function(n){return this.ctx.save(),i=function(e,t){switch(t){case 0:return qa(e.topLeftBorderStroke,e.topRightBorderStroke);case 1:return qa(e.topRightBorderStroke,e.bottomRightBorderStroke);case 2:return qa(e.bottomRightBorderStroke,e.bottomLeftBorderStroke);default:return qa(e.bottomLeftBorderStroke,e.topLeftBorderStroke)}}(a,A),s=Za(a,A),2===r&&(this.path(s),this.ctx.clip()),Da(s[0])?(o=s[0].start.x,l=s[0].start.y):(o=s[0].x,l=s[0].y),Da(s[1])?(c=s[1].end.x,d=s[1].end.y):(c=s[1].x,d=s[1].y),h=0===A||2===A?Math.abs(o-c):Math.abs(l-d),this.ctx.beginPath(),3===r?this.formatPath(i):this.formatPath(s.slice(0,2)),u=t<3?3*t:2*t,g=t<3?2*t:t,3===r&&(u=t,g=t),p=!0,h<=2*u?p=!1:h<=2*u+g?(u*=m=h/(2*u+g),g*=m):(f=Math.floor((h+g)/(u+g)),w=(h-f*u)/(f-1),g=(E=(h-(f+1)*u)/f)<=0||Math.abs(g-w){const a=await tex2dataURL(e,n);if(a){const e=[];e.push({mimeType:a.mimeType,id:t,dataURL:a.dataURL,created:a.created,size:a.size,hasSVGwithBitmap:!1,shouldScale:!0}),i(e,A)}};async function tex2dataURL(e,t){let A=0;for(;!t.mathjax&&!t.mathjaxLoaderFinished&&A<10;)await sleep$1(100),A++;t.mathjaxLoaderFinished||errorlog({where:"text2dataURL",fn:tex2dataURL,message:"mathjaxLoader not ready, using fallback. Try reloading Obsidian or restarting the Excalidraw plugin"});try{return await mathjaxSVG(e,t)}catch(A){await sleep$1(100);try{return await mathjaxSVG(e,t)}catch(A){await sleep$1(100);try{return await mathjaxSVG(e,t)}catch(A){return t.mathjax?new obsidian_module.Notice("Unknown error loading LaTeX. Using fallback solution. Try closing and reopening this drawing."):new obsidian_module.Notice("LaTeX support did not load. Using fallback solution. Try checking your network connection."),await mathjaxImage2html(e)}}}}async function mathjaxSVG(e,t){const A=t.mathjax.tex2svg(e,{display:!0,scale:4}).querySelector("svg");if(A){A.width.baseVal.valueInSpecifiedUnits<2&&(A.width.baseVal.valueAsString=`${(A.width.baseVal.valueInSpecifiedUnits+1).toFixed(3)}ex`);const e=svgToBase64(A.outerHTML);return{mimeType:"image/svg+xml",fileId:fileid(),dataURL:e,created:Date.now(),size:await getImageSize(e)}}return null}async function mathjaxImage2html(e){const t=document.body.createDiv();t.style.display="table";const A=window.MathJax.tex2chtml(e,{display:!0,scale:4});A.style.margin="3px",A.style.color="black";const i=A.querySelector("mjx-assistive-mml");i&&i.parentElement.removeChild(i),t.appendChild(A),window.MathJax.typeset();const n=await html2canvas(t,{backgroundColor:null});return document.body.removeChild(t),{mimeType:"image/png",fileId:fileid(),dataURL:n.toDataURL(),created:Date.now(),size:{height:n.height,width:n.width}}}const getMermaidImageElements=e=>e?e.filter((e=>{var t;return"image"===e.type&&(null===(t=e.customData)||void 0===t?void 0:t.mermaidText)})):[],getMermaidText=e=>{var t;return null===(t=e.customData)||void 0===t?void 0:t.mermaidText},shouldRenderMermaid=()=>obsidian_module.requireApiVersion("1.4.14"),markdownRendererRecursionWatcthdog=new Set,replaceSVGColors=(e,t)=>{if(!t)return e;if("string"==typeof e){for(const[A,i]of Object.entries(t)){const t=new RegExp(`fill="${A}"`,"gi");e=e.replaceAll(t,`fill="${i}"`);const n=new RegExp(`stroke="${A}"`,"gi");e=e.replaceAll(n,`stroke="${i}"`)}return e}const A=e=>{var i,n;if(e instanceof SVGElement){const A=null===(i=e.getAttribute("fill"))||void 0===i?void 0:i.toLocaleLowerCase(),a=null===(n=e.getAttribute("stroke"))||void 0===n?void 0:n.toLocaleLowerCase();A&&t[A]&&e.setAttribute("fill",t[A]),a&&t[a]&&e.setAttribute("stroke",t[a])}for(const t of e.childNodes)A(t)};for(const t of e.childNodes)A(t);return e};class EmbeddedFile{constructor(e,t,A,i){if(this.file=null,this.isSVGwithBitmap=!1,this.img="",this.imgInverted="",this.mtime=0,this.mimeType="application/octet-stream",this.size={height:0,width:0},this.attemptCounter=0,this.isHyperlink=!1,this.colorMap=null,this.plugin=e,this.resetImage(t,A),this.file&&(this.plugin.ea.isExcalidrawFile(this.file)||"svg"===this.file.extension.toLowerCase()))try{this.colorMap=i?JSON.parse(i.toLocaleLowerCase()):null}catch(e){this.colorMap=null}}resetImage(e,t){if(this.imgInverted=this.img="",this.mtime=0,t.startsWith("https://")||t.startsWith("http://"))return this.isHyperlink=!0,void(this.hyperlink=t);this.linkParts=getLinkParts(t),this.hostPath=e,this.linkParts.path?(this.linkParts.width||(this.linkParts.width=this.plugin.settings.mdSVGwidth),this.linkParts.height||(this.linkParts.height=this.plugin.settings.mdSVGmaxHeight),this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,e),this.file||0==this.attemptCounter++&&new obsidian_module.Notice(`Excalidraw Warning: could not find image file: ${t}`,5e3)):new obsidian_module.Notice(`Excalidraw Error\nIncorrect embedded filename: ${t}`)}fileChanged(){return!this.isHyperlink&&(this.file||(this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),this.file)?this.mtime!=this.file.stat.mtime:(this.attemptCounter++,!1))}setImage(e,t,A,i,n){if(this.file||this.isHyperlink){switch(this.fileChanged()&&(this.imgInverted=this.img=""),this.mtime=this.isHyperlink?0:this.file.stat.mtime,this.size=A,this.mimeType=t,i&&n){case!0:this.imgInverted=e;break;case!1:this.img=e}this.isSVGwithBitmap=n}}isLoaded(e){if(!this.isHyperlink){if(!this.file&&(this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),!this.file))return this.attemptCounter++,!0;if(this.fileChanged())return!1}return this.isSVGwithBitmap&&e?""!==this.imgInverted:""!==this.img}getImage(e){return this.file||this.isHyperlink?e&&this.isSVGwithBitmap?this.imgInverted:this.img:""}shouldScale(){return this.isHyperlink||!Boolean(this.linkParts&&this.linkParts.original&&this.linkParts.original.endsWith("|100%"))}}class EmbeddedFilesLoader{constructor(e,t){this.pdfDocsMap=new Map,this.terminate=!1,this.plugin=e,this.isDark=t,this.uid=nanoid()}emptyPDFDocsMap(){this.pdfDocsMap.forEach((e=>e.destroy())),this.pdfDocsMap.clear()}async getObsidianImage(e,t){const A=await this._getObsidianImage(e,t);return this.emptyPDFDocsMap(),A}async getExcalidrawSVG({isDark:e,file:t,depth:A,inFile:i,hasSVGwithBitmap:n,elements:a=[]}){const r=hasExportTheme(this.plugin,t)?getExportTheme(this.plugin,t,"light"):void 0,s={withBackground:!!hasExportBackground(this.plugin,t)&&getWithBackground(this.plugin,t),withTheme:!!r},o=replaceSVGColors(await createSVG(null==t?void 0:t.path,!0,s,this,r,null,null,a,this.plugin,A+1,getExportPadding(this.plugin,t)),i instanceof EmbeddedFile?i.colorMap:null),l=o.querySelectorAll("image:not([href^='data:image/svg'])");return l.length>0&&(n=!0),n&&e&&l.forEach((e=>{var t;const A=null===(t=e.parentElement)||void 0===t?void 0:t.id;o.querySelectorAll(`use[href='#${A}']`).forEach((e=>{e.setAttribute("filter",THEME_FILTER)}))})),!n&&o.getAttribute("hasbitmap")&&(n=!0),{dataURL:svgToBase64(o.outerHTML),hasSVGwithBitmap:n}}async _getObsidianImage(e,t){var A;if(!this.plugin||!e)return null;const i=e instanceof EmbeddedFile&&e.isHyperlink,n=e instanceof EmbeddedFile?e.hyperlink:"",a=e instanceof EmbeddedFile?e.file:e;if(a&&markdownRendererRecursionWatcthdog.has(a))return new obsidian_module.Notice(`Loading of ${a.path}. Please check if there is an inifinite loop of one file embedded in the other.`),null;const r=i?null:e instanceof EmbeddedFile?e.linkParts:{original:a.path,path:a.path,isBlockRef:!1,ref:null,width:this.plugin.settings.mdSVGwidth,height:this.plugin.settings.mdSVGmaxHeight,page:null};let s=!1;const o=!i&&this.plugin.isExcalidrawFile(a),l=!i&&"pdf"===a.extension.toLowerCase();if(!(i||l||IMAGE_TYPES.contains(a.extension)||o||"md"===a.extension))return null;const c=i||l?null:await app.vault.readBinary(a);let d=null;if(o){const A=await this.getExcalidrawSVG({isDark:this.isDark,file:a,depth:t,inFile:e,hasSVGwithBitmap:s});d=A.dataURL,s=A.hasSVGwithBitmap}const h=o?d:null,[u,g]=l?await this.pdfToDataURL(a,r):[null,null];let p=l?"image/png":"image/svg+xml";const m=i?getURLImageExtension(n):a.extension;o||l||(p=getMimeType(m));let f=i?e instanceof EmbeddedFile?await getDataURLFromURL(e.hyperlink,p):null:null!==(A=null!=h?h:u)&&void 0!==A?A:"svg"===a.extension?await getSVGData(app,a,e instanceof EmbeddedFile?e.colorMap:null):"md"===a.extension?null:await getDataURL(c,p);if(!i&&!f){markdownRendererRecursionWatcthdog.add(a);const e=await this.convertMarkdownToSVG(this.plugin,a,r,t);markdownRendererRecursionWatcthdog.delete(a),f=e.dataURL,s=e.hasSVGwithBitmap}try{const e=l?g:await getImageSize(f);return{mimeType:p,fileId:await generateIdFromFile(i||l?(new TextEncoder).encode(f):c),dataURL:f,created:i?0:a.stat.mtime,hasSVGwithBitmap:s,size:e}}catch(e){return null}}async loadSceneFiles(e,t,A){var i,n;if(A>4)return void new obsidian_module.Notice(t$d("INFINITE_LOOP_WARNING")+A.toString(),6e3);const a=e.getFileEntries();let r;void 0===this.isDark&&(this.isDark="dark"===(null===(n=null===(i=null==e?void 0:e.scene)||void 0===i?void 0:i.appState)||void 0===n?void 0:n.theme));const s=[];for(;!this.terminate&&!(r=a.next()).done;){const e=r.value[1];if(e.isLoaded(this.isDark)){if(e.isSVGwithBitmap){const A={mimeType:e.mimeType,id:r.value[0],dataURL:e.getImage(this.isDark),created:e.mtime,size:e.size,hasSVGwithBitmap:e.isSVGwithBitmap,shouldScale:e.shouldScale()};try{t([A],this.isDark,!1)}catch(e){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:e})}}}else{const i=await this._getObsidianImage(e,A);if(i){const A={mimeType:i.mimeType,id:r.value[0],dataURL:i.dataURL,created:i.created,size:i.size,hasSVGwithBitmap:i.hasSVGwithBitmap,shouldScale:e.shouldScale()};try{t([A],this.isDark,!1)}catch(e){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:e})}}}}let o;const l=e.getEquationEntries();for(;!this.terminate&&!(o=l.next()).done;)if(!e.getEquation(o.value[0]).isLoaded){const e=o.value[1].latex,t=await tex2dataURL(e,this.plugin);if(t){const e={mimeType:t.mimeType,id:o.value[0],dataURL:t.dataURL,created:t.created,size:t.size,hasSVGwithBitmap:!1,shouldScale:!0};s.push(e)}}if(shouldRenderMermaid()){const t=getMermaidImageElements(e.scene.elements);for(const e of t){if(this.terminate)continue;const t=getMermaidText(e),i=await mermaidToExcalidraw(t,{fontSize:20});if(i)if(null==i?void 0:i.files)for(const t in i.files){const A=Object.assign(Object.assign({},i.files[t]),{id:e.fileId,created:Date.now(),hasSVGwithBitmap:!1,shouldScale:!0,size:await getImageSize(i.files[t].dataURL)});s.push(A)}else if(null==i?void 0:i.elements){const t=await this.getExcalidrawSVG({isDark:this.isDark,file:null,depth:A,inFile:null,hasSVGwithBitmap:!1,elements:i.elements});if(null==t?void 0:t.dataURL){const A=await getImageSize(t.dataURL),i={mimeType:"image/svg+xml",id:e.fileId,dataURL:t.dataURL,created:Date.now(),hasSVGwithBitmap:t.hasSVGwithBitmap,size:A,shouldScale:!0};s.push(i)}}}}if(this.emptyPDFDocsMap(),!this.terminate)try{t(s,this.isDark,!0)}catch(e){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:e})}}async pdfToDataURL(e,t){var A,i;try{let n=0,a=0;const r=null!==(A=this.pdfDocsMap.get(e.path))&&void 0!==A?A:await getPDFDoc(e);this.pdfDocsMap.has(e.path)||this.pdfDocsMap.set(e.path,r);const s=isNaN(t.page)?1:null!==(i=t.page)&&void 0!==i?i:1,o=this.plugin.settings.pdfScale,l=async e=>{const t=createEl("canvas"),A=t.getContext("2d"),i=await r.getPage(e),s=i.getViewport({scale:o});a=t.height=s.height,n=t.width=s.width;const l={canvasContext:A,background:"rgba(0,0,0,0)",viewport:s};return await i.render(l).promise,t},c=await l(s);if(c){const e=[`data:image/png;base64,${await new Promise(((e,t)=>{c.toBlob((async t=>{const A=await blobToBase64(t);e(A)}))}))}`,{width:n,height:a}];return c.width=0,c.height=0,e}}catch(e){return console.log(e),[null,null]}}async convertMarkdownToSVG(e,t,A,i){var n,a,r,s;let o=!1;const l=await getTransclusion(A,e.app,t);let c=(null!==(n=l.leadingHashes)&&void 0!==n?n:"")+l.contents;""===c&&(c="# Empty markdown file\nCTRL+Click here to open the file for editing in the current active pane, or CTRL+SHIFT+Click to open it in an adjacent pane.");const d=e.app.metadataCache.getFileCache(t);let h,u=e.settings.mdFont;switch((null==d?void 0:d.frontmatter)&&Boolean(d.frontmatter["excalidraw-font"])&&(u=d.frontmatter["excalidraw-font"]),u){case"Virgil":h=VIRGIL_FONT;break;case"Cascadia":h=CASCADIA_FONT;break;case"":h="";break;default:const A=await getFontDataURL(e.app,u,t.path);h=A.fontDef,u=A.fontName}(null==d?void 0:d.frontmatter)&&null!==d.frontmatter.banner&&(c=c.replace(/banner:\s*.*/,""));const g=(null==d?void 0:d.frontmatter)&&null!==(a=d.frontmatter["excalidraw-font-color"])&&void 0!==a?a:e.settings.mdFontColor;let p=(null==d?void 0:d.frontmatter)&&null!==(r=d.frontmatter["excalidraw-css"])&&void 0!==r?r:"",m=!1;if(p&&""!=p){const A=e.app.metadataCache.getFirstLinkpathDest(p,t.path);A&&(p=await e.app.vault.read(A),m=!0)}if(!m)if(e.settings.mdCSS&&""!==e.settings.mdCSS){const A=e.app.metadataCache.getFirstLinkpathDest(e.settings.mdCSS,t.path);p+=A?`\n${await e.app.vault.read(A)}`:DEFAULT_MD_EMBED_CSS}else p+=DEFAULT_MD_EMBED_CSS;const f=(null==d?void 0:d.frontmatter)&&null!==(s=d.frontmatter["excalidraw-border-color"])&&void 0!==s?s:e.settings.mdBorderColor;f&&""!==f&&!p.match(/svg/i)&&(p+=`svg{border:2px solid;color:${f};transform:scale(.95)}`);let w=` width="${A.width}px" height="100000"`,E=` width="${A.width}px" height="100%"`;const b=(e,t,A)=>`${A?``:""}${e}${t}${""!==h?``:""}`,B=createDiv();B.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),B.setAttribute("class","excalidraw-md-host"),""!==u&&(B.style.fontFamily=u),B.style.overflow="auto",B.style.display="block",B.style.color=g&&""!==g?g:"initial",await obsidian_module.MarkdownRenderer.renderMarkdown(c,B,t.path,e),B.querySelectorAll(":scope > *[class^='frontmatter']").forEach((e=>B.removeChild(e)));const v=Array.from(B.querySelectorAll("span[class='internal-embed']"));for(let A=0;A{const t=e.style,A=window.getComputedStyle(e);let i="";for(const e in t)t.hasOwnProperty(e)&&(i+=`${e}: ${A[e]};`);e.setAttribute("style",i)}));const S=(new XMLSerializer).serializeToString(x),T=(new XMLSerializer).serializeToString(F);document.body.removeChild(C);const I=new DOMParser,M=I.parseFromString(b(S,T),"image/svg+xml").firstElementChild,k=createDiv();k.appendChild(M),document.body.appendChild(k);const U=M.querySelector(".excalidraw-md-footer").scrollHeight,O=M.querySelector(".excalidraw-md-host").scrollHeight+U,L=O<=A.height?O:A.height;document.body.removeChild(k),w=` width="${A.width}px" height="${L}px"`,E=` width="${A.width}px" height="${L}px"`,B.style.height=L-U+"px",B.style.overflow="hidden";const Q=B.querySelectorAll("img:not([src^='data:image/svg+xml'])");Q.length>0&&(o=!0),o&&this.isDark&&Q.forEach((e=>{e instanceof HTMLImageElement&&(e.style.filter=THEME_FILTER)}));const N=b((new XMLSerializer).serializeToString(B),'',p);return e.ea.mostRecentMarkdownSVG=I.parseFromString(N,"image/svg+xml").firstElementChild,{dataURL:svgToBase64(N),hasSVGwithBitmap:o}}}const getSVGData=async(e,t,A)=>{const i=replaceSVGColors(await e.vault.read(t),A);return svgToBase64(i)},generateIdFromFile=async e=>{let t;try{const A=await window.crypto.subtle.digest("SHA-1",e);t=Array.from(new Uint8Array(A)).map((e=>e.toString(16).padStart(2,"0"))).join("")}catch(e){errorlog({where:"EmbeddedFileLoader.generateIdFromFile",error:e}),t=fileid()}return t};class Prompt extends obsidian_module.Modal{constructor(e,t,A,i,n){super(e),this.prompt_text=t,this.default_value=A,this.placeholder=i,this.prompt_desc=n}onOpen(){this.titleEl.setText(this.prompt_text),this.createForm()}onClose(){this.contentEl.empty()}createForm(){var e;let t=this.contentEl.createDiv();t.addClass("excalidraw-prompt-div"),this.prompt_desc&&(t=t.createDiv(),t.style.width="100%",t.createEl("p").innerHTML=this.prompt_desc);const A=t.createEl("form");A.addClass("excalidraw-prompt-form"),A.type="submit",A.onsubmit=e=>{e.preventDefault(),this.resolve(this.promptEl.value),this.close()},this.promptEl=A.createEl("input"),this.promptEl.type="text",this.promptEl.placeholder=this.placeholder,this.promptEl.value=null!==(e=this.default_value)&&void 0!==e?e:"",this.promptEl.addClass("excalidraw-prompt-input"),this.promptEl.select()}async openAndGetValue(e){this.resolve=e,this.open()}}class GenericInputPrompt extends obsidian_module.Modal{static Prompt(e,t,A,i,n,a,r,s,o,l,c){return new GenericInputPrompt(e,t,A,i,n,a,r,s,o,l,c).waitForClose}constructor(e,t,A,i,n,a,r,s,o,l,c){super(A),this.header=i,this.didSubmit=!1,this.lines=1,this.displayEditorButtons=!1,this.selectionStart=0,this.selectionEnd=0,this.selectionUpdateTimer=0,this.blockPointerInputOutsideModal=!1,this.linkBtnClickCallback=()=>{this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer),this.plugin.insertLinkDialog.start(this.view.file.path,(e=>{const t=this.inputComponent.inputEl.value;this.selectionStart>0&&" "!==t.slice(this.selectionStart-1,this.selectionStart)&&(e=" "+e),this.selectionStart{this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer);const t=this.inputComponent.inputEl.value.slice(0,this.selectionStart)+e+this.inputComponent.inputEl.value.slice(this.selectionStart);this.inputComponent.inputEl.value=t,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.selectionStart=this.selectionStart+1,this.selectionEnd=this.selectionStart,this.inputComponent.inputEl.setSelectionRange(this.selectionStart,this.selectionEnd)},this.delBtnClickCallback=()=>{if(this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer),0===this.input.length)return;const e=this.selectionEnd>this.selectionStart?this.selectionStart:this.selectionStart>0?this.selectionStart-1:0,t=this.selectionEnd,A=this.inputComponent.inputEl.value.slice(0,e)+this.inputComponent.inputEl.value.slice(t);this.inputComponent.inputEl.value=A,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.selectionStart=e,this.selectionEnd=e,this.inputComponent.inputEl.setSelectionRange(e,e)},this.uppercaseBtnClickCallback=()=>{if(this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer),this.selectionEnd===this.selectionStart)return;const e=this.inputComponent.inputEl.value.slice(0,this.selectionStart)+this.inputComponent.inputEl.value.slice(this.selectionStart,this.selectionEnd).toUpperCase()+this.inputComponent.inputEl.value.slice(this.selectionEnd);this.inputComponent.inputEl.value=e,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.inputComponent.inputEl.setSelectionRange(this.selectionStart,this.selectionEnd)},this.submitClickCallback=()=>this.submit(),this.cancelClickCallback=()=>this.cancel(),this.keyDownCallback=e=>{("Enter"===e.key&&1===this.lines||isCTRL(e)&&"Enter"===e.key)&&(e.preventDefault(),this.submit()),this.displayEditorButtons&&"k"===e.key&&isCTRL(e)&&(e.preventDefault(),this.linkBtnClickCallback())},this.view=e,this.plugin=t,this.placeholder=n,this.input=a,this.buttons=r,this.lines=null!=s?s:1,this.displayEditorButtons=this.lines>1&&null!=o&&o,this.customComponents=l,this.blockPointerInputOutsideModal=null!=c&&c,this.waitForClose=new Promise(((e,t)=>{this.resolvePromise=e,this.rejectPromise=t})),this.display(),this.inputComponent.inputEl.focus(),this.open()}display(){var e;this.contentEl.empty(),this.blockPointerInputOutsideModal&&(this.bgEl.style.pointerEvents=this.blockPointerInputOutsideModal?"none":"auto"),this.titleEl.textContent=this.header;const t=this.contentEl.createDiv();this.inputComponent=this.createInputField(t,this.placeholder,this.input),null===(e=this.customComponents)||void 0===e||e.call(this,t),this.createButtonBar(t)}createInputField(e,t,A){const i=new obsidian_module.TextAreaComponent(e);i.inputEl.style.width="100%",i.inputEl.style.height=2*this.lines+"em",1===this.lines&&(i.inputEl.style.resize="none",i.inputEl.style.overflow="hidden"),i.setPlaceholder(null!=t?t:"").setValue(null!=A?A:"").onChange((e=>this.input=e));const n=()=>{this.selectionUpdateTimer=this.view.ownerWindow.setTimeout((()=>{this.selectionStart=this.inputComponent.inputEl.selectionStart,this.selectionEnd=this.inputComponent.inputEl.selectionEnd}),30)};return i.inputEl.addEventListener("keydown",this.keyDownCallback),i.inputEl.addEventListener("keyup",n),i.inputEl.addEventListener("pointerup",n),i.inputEl.addEventListener("touchend",n),i.inputEl.addEventListener("input",n),i.inputEl.addEventListener("paste",n),i.inputEl.addEventListener("cut",n),i.inputEl.addEventListener("select",n),i.inputEl.addEventListener("selectionchange",n),i}createButton(e,t,A,i="",n="5px"){const a=new obsidian_module.ButtonComponent(e);return a.buttonEl.style.padding="0.5em",a.buttonEl.style.marginLeft=n,a.setTooltip(i),a.setButtonText(t).onClick(A),a}createButtonBar(e){const t=e.createDiv();t.style.display="flex",t.style.justifyContent="space-between",t.style.marginTop="1rem";const A=t.createDiv(),i=t.createDiv();if(this.buttons&&this.buttons.length>0){let e=null;for(const t of this.buttons){const A=new obsidian_module.ButtonComponent(i);A.buttonEl.style.marginLeft="5px",t.tooltip&&A.setTooltip(t.tooltip),A.setButtonText(t.caption).onClick((e=>{const A=t.action(this.input);A&&(this.input=A),this.submit()})),e=null!=e?e:A}e&&(e.setCta(),e.buttonEl.style.marginRight="0")}else this.createButton(i,"✅",this.submitClickCallback).setCta().buttonEl.style.marginRight="0";this.createButton(i,"❌",this.cancelClickCallback,t$d("PROMPT_BUTTON_CANCEL")),this.displayEditorButtons&&(this.createButton(A,"⏎",(()=>this.insertStringBtnClickCallback("\n")),t$d("PROMPT_BUTTON_INSERT_LINE"),"0"),this.createButton(A,"⌫",this.delBtnClickCallback,"Delete"),this.createButton(A,"⎵",(()=>this.insertStringBtnClickCallback(" ")),t$d("PROMPT_BUTTON_INSERT_SPACE")),this.view&&this.createButton(A,"🔗",this.linkBtnClickCallback,t$d("PROMPT_BUTTON_INSERT_LINK")),this.createButton(A,"🔠",this.uppercaseBtnClickCallback,t$d("PROMPT_BUTTON_UPPERCASE")))}submit(){this.didSubmit=!0,this.close()}cancel(){this.close()}resolveInput(){this.didSubmit?this.resolvePromise(this.input):this.rejectPromise("No input given.")}removeInputListener(){var e,t;null===(t=null===(e=this.inputComponent)||void 0===e?void 0:e.inputEl)||void 0===t||t.removeEventListener("keydown",this.keyDownCallback)}onOpen(){super.onOpen(),this.inputComponent.inputEl.focus(),this.inputComponent.inputEl.select()}onClose(){super.onClose(),this.resolveInput(),this.removeInputListener()}}class GenericSuggester extends obsidian_module.FuzzySuggestModal{static Suggest(e,t,A,i,n){return new GenericSuggester(e,t,A,i,n).promise}constructor(e,t,A,i,n){var a;super(e),this.displayItems=t,this.items=A,this.hint=i,this.instructions=n,this.limit=20,this.setPlaceholder(null!==(a=this.hint)&&void 0!==a?a:""),n&&this.setInstructions(this.instructions),this.promise=new Promise(((e,t)=>{this.resolvePromise=e,this.rejectPromise=t})),this.open()}getItemText(e){return this.displayItems[this.items.indexOf(e)]}getItems(){return this.items}selectSuggestion(e,t){this.resolved=!0,super.selectSuggestion(e,t)}onChooseItem(e){this.resolved=!0,this.resolvePromise(e)}onClose(){super.onClose(),this.resolved||this.rejectPromise(this.inputEl.value)}}class NewFileActions extends obsidian_module.Modal{constructor(e,t,A,i,n=!0,a){super(e.app),this.plugin=e,this.path=t,this.keys=A,this.view=i,this.openNewFile=n,this.parentFile=a,this.newFile=null,a||(this.parentFile=i.file),this.waitForClose=new Promise(((e,t)=>{this.resolvePromise=e,this.rejectPromise=t}))}onOpen(){this.createForm()}openFile(e){this.newFile=e,e&&this.openNewFile&&getLeaf(this.plugin,this.view.leaf,this.keys).openFile(e,{active:!0})}onClose(){super.onClose(),this.resolvePromise(this.newFile)}createForm(){this.titleEl.setText(t$d("PROMPT_TITLE_NEW_FILE")),this.contentEl.createDiv({cls:"excalidraw-prompt-center",text:t$d("PROMPT_FILE_DOES_NOT_EXIST")}),this.contentEl.createDiv({cls:"excalidraw-prompt-center filepath",text:this.path}),this.contentEl.createDiv({cls:"excalidraw-prompt-center"},(e=>{e.style.textAlign="right";const t=()=>this.path&&""!==this.path?!!this.parentFile||(new obsidian_module.Notice(t$d("PROMPT_ERROR_DRAWING_CLOSED")),!1):(new obsidian_module.Notice(t$d("PROMPT_ERROR_NO_FILENAME")),!1),A=async e=>{if(!this.path.includes("/")){const e=new RegExp(`${this.parentFile.name}$`,"g");this.path=this.parentFile.path.replace(e,this.path)}return this.path.match(/\.md$/)||(this.path=`${this.path}.md`),checkAndCreateFolder(splitFolderAndFilename(this.path).folderpath),await this.app.vault.create(this.path,e)};e.createEl("button",{text:t$d("PROMPT_BUTTON_CREATE_MARKDOWN")}).onclick=async()=>{if(!t)return;const e=await A("");this.openFile(e),this.close()},e.createEl("button",{text:t$d("PROMPT_BUTTON_CREATE_EXCALIDRAW")}).onclick=async()=>{if(!t)return;const e=await A(await this.plugin.getBlankDrawing());await sleep$1(200),this.openFile(e),this.close()},e.createEl("button",{text:t$d("PROMPT_BUTTON_NEVERMIND")}).onclick=()=>{this.close()}}))}}class ConfirmationPrompt extends obsidian_module.Modal{constructor(e,t){super(e.app),this.plugin=e,this.didConfirm=!1,this.cancelClickCallback=()=>{this.didConfirm=!1,this.close()},this.confirmClickCallback=()=>{this.didConfirm=!0,this.close()},this.message=t,this.waitForClose=new Promise(((e,t)=>{this.resolvePromise=e,this.rejectPromise=t})),this.display(),this.open()}display(){this.contentEl.empty(),this.titleEl.textContent=t$d("PROMPT_TITLE_CONFIRMATION");const e=this.contentEl.createDiv();e.style.marginBottom="1rem",e.innerHTML=this.message;const t=this.contentEl.createDiv();t.style.display="flex",t.style.justifyContent="flex-end";const A=this.createButton(t,t$d("PROMPT_BUTTON_CANCEL"),this.cancelClickCallback);A.buttonEl.style.marginRight="0.5rem",this.createButton(t,t$d("PROMPT_BUTTON_OK"),this.confirmClickCallback).buttonEl.style.marginRight="0",A.buttonEl.focus()}createButton(e,t,A){const i=new obsidian_module.ButtonComponent(e);return i.setButtonText(t).onClick(A),i}onOpen(){var e;super.onOpen(),null===(e=this.contentEl.querySelector("button"))||void 0===e||e.focus()}onClose(){super.onClose(),this.didConfirm?this.resolvePromise(!0):this.resolvePromise(!1)}}var AutoexportPreference;!function(e){e[e.none=0]="none",e[e.both=1]="both",e[e.png=2]="png",e[e.svg=3]="svg",e[e.inherit=4]="inherit"}(AutoexportPreference||(AutoexportPreference={}));const REGEX_LINK={ //![[link|alias]] [alias](link){num} -EXPR:/(!)?(\[\[([^|\]]+)\|?([^\]]+)?]]|\[([^\]]*)]\(([^)]*)\))(\{(\d+)\})?/g,getResList:e=>{const t=e.matchAll(REGEX_LINK.EXPR);let A;const i=[];for(;!(A=t.next()).done;)i.push(A);return i},getRes:e=>e.matchAll(REGEX_LINK.EXPR),isTransclusion:e=>!!e.value[1],getLink:e=>e.value[3]?e.value[3]:e.value[6],isWikiLink:e=>!!e.value[3],getAliasOrLink:e=>REGEX_LINK.isWikiLink(e)?e.value[4]?e.value[4]:e.value[3]:e.value[5]?e.value[5]:e.value[6],getWrapLength:(e,t)=>{const A=parseInt(e.value[8]);return isNaN(A)?t>0?t:null:A}},DRAWING_REG=/\n# Drawing\n[^`]*(```json\n)([\s\S]*?)```\n/gm,DRAWING_REG_FALLBACK=/\n# Drawing\n(```json\n)?(.*)(```)?(%%)?/gm,DRAWING_COMPRESSED_REG=/(\n# Drawing\n[^`]*(?:```compressed\-json\n))([\s\S]*?)(```\n)/gm,DRAWING_COMPRESSED_REG_FALLBACK=/(\n# Drawing\n(?:```compressed\-json\n)?)(.*)((```)?(%%)?)/gm,REG_LINKINDEX_HYPERLINK=/^\w+:\/\//,isCompressedMD=e=>null!==e.match(/```compressed\-json\n/gm),getDecompressedScene=e=>{let t,A=e.matchAll(DRAWING_COMPRESSED_REG);return t=A.next(),t.done&&(A=e.matchAll(DRAWING_COMPRESSED_REG_FALLBACK),t=A.next()),t.value&&t.value.length>1?[decompress(t.value[2]),t]:[null,t]},changeThemeOfExcalidrawMD=e=>{const t=isCompressedMD(e);let A=t?getDecompressedScene(e)[0]:e;return A?(isObsidianThemeDark?1===(A.match(/"theme"\s*:\s*"light"\s*,/g)||[]).length&&(A=A.replace(/"theme"\s*:\s*"light"\s*,/,'"theme": "dark",')):1===(A.match(/"theme"\s*:\s*"dark"\s*,/g)||[]).length&&(A=A.replace(/"theme"\s*:\s*"dark"\s*,/,'"theme": "light",')),t?e.replace(DRAWING_COMPRESSED_REG,`$1${compress(A)}$3`):A):e};function getJSON(e){let t,A;if(isCompressedMD(e)){const[t,A]=getDecompressedScene(e);return t?{scene:t.substring(0,t.lastIndexOf("}")+1),pos:A.value.index}:{scene:e,pos:A.value?A.value.index:0}}if(t=e.matchAll(DRAWING_REG),A=t.next(),A.done&&(t=e.matchAll(DRAWING_REG_FALLBACK),A=t.next()),A.value&&A.value.length>1){const e=A.value[2];return{scene:e.substr(0,e.lastIndexOf("}")+1),pos:A.value.index}}return{scene:e,pos:A.value?A.value.index:0}}function getMarkdownDrawingSection(e,t){return t?`%%\n# Drawing\n\`\`\`compressed-json\n${compress(e)}\n\`\`\`\n%%`:`%%\n# Drawing\n\`\`\`json\n${e}\n\`\`\`\n%%`}const estimateMaxLineLen=(e,t)=>{if(!t||!e)return null;if(e===t)return null;let A=0;const i=e.split("\n");if(1===i.length)return null;for(const e of i){const t=e.trim();t.length>A&&(A=t.length)}return A},wrap=(e,t)=>t?wrapTextAtCharLength(e,t,!1,0):e;class ExcalidrawData{constructor(e){this.plugin=e,this.textElements=null,this.elementLinks=null,this.scene=null,this.deletedElements=[],this.file=null,this.autoexportPreference=AutoexportPreference.inherit,this.textMode=TextMode.raw,this.loaded=!1,this.files=null,this.equations=null,this.compatibilityMode=!1,this.selectedElementIds={},this.disableCompression=!1,this.app=e.app,this.files=new Map,this.equations=new Map}initializeNonInitializedFields(){var e,t,A;if(!this.scene||!this.scene.elements)return;const i=null!==(e=this.scene.source.split("https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/")[1])&&void 0!==e?e:"1.8.16",n=this.scene.elements;for(const e of n){if(e.boundElements){const t=new Map;e.boundElements.forEach((e=>{t.set(e.id,e.type)}));const A=Array.from(t,(([e,t])=>({id:e,type:t})));A.length!==e.boundElements.length&&(e.boundElements=A)}e.boundElementIds&&(e.boundElements||(e.boundElements=[]),e.boundElements=e.boundElements.concat(e.boundElementIds.map((e=>({type:"arrow",id:e})))),delete e.boundElementIds),"text"!==e.type||e.containerId||(e.containerId=null),null===e.x&&(e.x=0),null===e.y&&(e.y=0),null===(null===(t=e.startBinding)||void 0===t?void 0:t.focus)&&(e.startBinding.focus=0),null===(null===(A=e.endBinding)||void 0===A?void 0:A.focus)&&(e.endBinding.focus=0),null===e.fontSize&&(e.fontSize=20)}try{n.filter((e=>"text"===e.type&&e.containerId&&n.some((t=>t.id===e.containerId&&t.boundElements.length>0&&t.boundElements.some((t=>"text"===t.type&&t.id!==e.id&&t.id.length>8)))))).forEach((e=>{try{const t=n.filter((t=>t.id===e.containerId))[0],A=t.boundElements.filter((e=>!("text"===e.type&&!n.some((t=>t.id===e.id)))));t.boundElements=[{id:e.id,type:"text"}].concat(A)}catch(e){}}));const e=!isVersionNewerThanOther(i,"1.8.16");n.filter((e=>e.boundElements&&e.boundElements.length>0)).forEach((t=>{var A;e&&!(null===(A=t.customData)||void 0===A?void 0:A.legacyTextWrap)&&(t.customData=Object.assign(Object.assign({},t.customData),{legacyTextWrap:!0}));const i=t.boundElements.filter((e=>n.some((t=>t.id===e.id))));i.length!==t.boundElements.length&&(t.boundElements=i)})),n.filter((e=>"text"===e.type&&e.containerId&&!n.some((t=>t.id===e.containerId)))).forEach((e=>{e.containerId=null}))}catch(e){}}async loadData(e,t,A){if(!t)return!1;if(this.loaded=!1,this.selectedElementIds={},this.textElements=new Map,this.elementLinks=new Map,this.file!=t&&(this.files.clear(),this.equations.clear()),this.file=t,this.compatibilityMode=!1,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.setAutoexportPreferences(),this.scene=null,this.plugin.settings.syncExcalidraw){const e=`${t.path.substring(0,t.path.lastIndexOf(".md"))}.excalidraw`,A=this.app.vault.getAbstractFileByPath(e);if(A&&A instanceof obsidian_module.TFile&&A.stat.mtime>t.stat.mtime){const e=await this.app.vault.read(A);this.scene=JSON.parse(e)}}let i=null;i=(()=>{const t=getJSON(e);if(-1===t.pos)throw new Error("Excalidraw JSON not found in the file");return this.scene||(this.scene=JSON_parse(t.scene)),t})(),this.deletedElements=this.scene.elements.filter((e=>e.isDeleted)),this.scene.elements=this.scene.elements.filter((e=>!e.isDeleted)),this.scene.files||(this.scene.files={}),hasExportTheme(this.plugin,this.file)?this.scene.appState.theme=getExportTheme(this.plugin,this.file,"light"):this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),this.initializeNonInitializedFields();let n=(e=e.substring(0,i.pos)).search(/(^%%\n)?# Text Elements\n/m);if(-1===n)return await this.setTextMode(A,!1),this.loaded=!0,!0;n+=e.match(/((^%%\n)?# Text Elements\n)/m)[0].length,e=e.substring(n),n=0;const a=" ^12345678\n\n".length;let r,s=e.matchAll(/\s\^(.{8})[\n]+/g);for(;!(r=s.next()).done;){let t=e.substring(n,r.value.index);const A=r.value[1],i=this.scene.elements.filter((e=>e.id===A))[0];if(i)if("text"!==i.type)i.link!==t&&(i.link=t,i.version++,i.versionNonce++),this.elementLinks.set(A,t);else{const e=estimateMaxLineLen(i.text,i.originalText),n=t.matchAll(/^%%\*\*\*>>>text element-link:(\[\[[^<*\]]*]])<<<\*\*\*%%/gm).next();n.done||(t=t.replace(/^%%\*\*\*>>>text element-link:\[\[[^<*\]]*]]<<<\*\*\*%%/gm,""),i.link=n.value[1]);const a=await this.parse(t);i.rawText=t,this.textElements.set(A,{raw:t,parsed:a.parsed,wrapAt:e}),a.link&&(i.link=a.link),!i||i.rawText&&""!==i.rawText||(i.rawText=t)}n=r.value.index+a}for(s=(e=e.substring(e.indexOf("# Embedded files\n")+"# Embedded files\n".length)).matchAll(/([\w\d]*):\s*\[\[([^\]]*)]]\s?(\{[^}]*})?\n/gm);!(r=s.next()).done;){const e=new EmbeddedFile(this.plugin,this.file.path,r.value[2],r.value[3]);this.setFile(r.value[1],e)}for(s=e.matchAll(/([\w\d]*):\s*(https?:\/\/[^\s]*)\n/gm);!(r=s.next()).done;){const e=new EmbeddedFile(this.plugin,null,r.value[2]);this.setFile(r.value[1],e)}for(s=e.matchAll(/([\w\d]*):\s*\$\$(.*)(\$\$\s*\n)/gm);!(r=s.next()).done;)this.setEquation(r.value[1],{latex:r.value[2],isLoaded:!1});return this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(A,!0),this.loaded=!0,!0}async loadLegacyData(e,t){return!!t&&(this.loaded=!1,this.selectedElementIds={},this.compatibilityMode=!0,this.file=t,this.textElements=new Map,this.elementLinks=new Map,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.scene=JSON.parse(e),this.scene.files||(this.scene.files={}),this.initializeNonInitializedFields(),this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),this.files.clear(),this.equations.clear(),this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(TextMode.raw,!0),this.loaded=!0,!0)}async setTextMode(e,t=!1){this.scene&&(this.textMode=e,await this.updateSceneTextElements(t))}updateTextElement(e,t,A,i=!1,n){var a;if(i||t!=e.text){const i=_measureText(t,e.fontSize,e.fontFamily,null!==(a=e.lineHeight)&&void 0!==a?a:getDefaultLineHeight$1(e.fontFamily));e.text=t,e.originalText=A,e.containerId&&"arrow"!==n||(e.width=i.w),e.height=i.h,e.baseline=i.baseline}}async updateSceneTextElements(e=!1){var t,A,i,n;const a=null===(t=this.scene.elements)||void 0===t?void 0:t.filter((e=>"text"===e.type));for(const t of a){const a=getContainerElement(t,this.scene),r=null!==(i=null!==(A=await this.getText(t.id))&&void 0!==A?A:t.originalText)&&void 0!==i?i:t.text,s=null===(n=this.textElements.get(t.id))||void 0===n?void 0:n.wrapAt;try{this.updateTextElement(t,s?wrapText(r,getFontString({fontSize:t.fontSize,fontFamily:t.fontFamily}),getBoundTextMaxWidth(a)):r,r,e,null==a?void 0:a.type)}catch(e){debug({where:"ExcalidrawData.updateSceneTextElements",fn:this.updateSceneTextElements,textElement:t})}}}async getText(e){const t=this.textElements.get(e);return t?this.textMode===TextMode.parsed?(t.parsed||this.textElements.set(e,{raw:t.raw,parsed:(await this.parse(t.raw)).parsed,wrapAt:t.wrapAt}),t.parsed):t.raw:null}findNewElementLinksInScene(){var e;let t=!1;const A=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"!==e.type&&e.link&&e.link.startsWith("[[")&&!this.elementLinks.has(e.id)));if(0===A.length)return t;let i,n=JSON.stringify(this.scene);for(const e of A)i=e.id,e.id.length>8&&(t=!0,i=nanoid(),n=n.replaceAll(e.id,i)),this.elementLinks.set(i,e.link);return this.scene=JSON.parse(n),t}findNewTextElementsInScene(e={}){var t;this.selectedElementIds=e;const A=null===(t=this.scene.elements)||void 0===t?void 0:t.filter((e=>"text"===e.type));let i,n=JSON.stringify(this.scene),a=!1;for(const e of A)if(i=e.id,e.id.length>8){if(a=!0,i=nanoid(),this.selectedElementIds[e.id]&&(delete this.selectedElementIds[e.id],this.selectedElementIds[i]=!0),n=n.replaceAll(e.id,i),this.textElements.has(e.id)){const t=this.textElements.get(e.id);this.textElements.set(i,{raw:t.raw,parsed:t.parsed,wrapAt:t.wrapAt}),this.textElements.delete(e.id)}if(!this.textElements.has(i)){const t=e.rawText&&""!==e.rawText?e.rawText:e.text,A=estimateMaxLineLen(e.text,e.originalText);this.textElements.set(i,{raw:t,parsed:null,wrapAt:A}),this.parseasync(i,t,A)}}else if(!this.textElements.has(e.id)){const t=e.rawText&&""!==e.rawText?e.rawText:e.text,A=estimateMaxLineLen(e.text,e.originalText);this.textElements.set(i,{raw:t,parsed:null,wrapAt:A}),this.parseasync(i,t,A)}return a&&(this.scene=JSON.parse(n)),a}updateElementLinksFromScene(){var e;for(const t of this.elementLinks.keys()){const A=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"!==e.type&&e.id===t&&e.link&&e.link.startsWith("[[")));0===A.length?this.elementLinks.delete(t):this.elementLinks.set(t,A[0].link)}}async updateTextElementsFromScene(){var e,t,A;for(const i of this.textElements.keys()){const n=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"===e.type&&e.id===i));if(0===n.length)this.textElements.delete(i);else{const e=await this.getText(i),a=this.scene.prevTextMode===TextMode.parsed?n[0].rawText:null!==(t=n[0].originalText)&&void 0!==t?t:n[0].text;if(e!==(null!==(A=n[0].originalText)&&void 0!==A?A:n[0].text)){const e=estimateMaxLineLen(n[0].text,n[0].originalText);this.textElements.set(i,{raw:a,parsed:(await this.parse(a)).parsed,wrapAt:e})}}}}async parseasync(e,t,A){this.textElements.set(e,{raw:t,parsed:(await this.parse(t)).parsed,wrapAt:A})}parseLinks(e,t,A){return e.substring(t,A.value.index)+(this.showLinkBrackets?"[[":"")+REGEX_LINK.getAliasOrLink(A)+(this.showLinkBrackets?"]]":"")}async getTransclusion(e){const t=getLinkParts(e,this.file),A=this.app.metadataCache.getFirstLinkpathDest(t.path,this.file.path);return await getTransclusion(t,this.app,A,this.plugin.settings.pageTransclusionCharLimit)}async parse(e){e=this.parseCheckbox(e);let t="",A=null,i=0;const n=REGEX_LINK.getRes(e);let a,r=!1,s=!1;for(e.match(REG_LINKINDEX_HYPERLINK)&&(A=e,s=!0);!(a=n.next()).done;){if(!A){const e=REGEX_LINK.getLink(a);A=e.match(REG_LINKINDEX_HYPERLINK)?e:`[[${e}]]`}if(REGEX_LINK.isTransclusion(a)){let A=this.parseCheckbox((await this.getTransclusion(REGEX_LINK.getLink(a))).contents).replaceAll(/%%[^%]*%%/gm,"");this.plugin.settings.removeTransclusionQuoteSigns&&(A=A.replaceAll(/\n\s*>\s?/gm,"\n")),t+=e.substring(i,a.value.index)+wrapTextAtCharLength(A,REGEX_LINK.getWrapLength(a,this.plugin.settings.wordWrappingDefault),this.plugin.settings.forceWrap)}else{const A=this.parseLinks(e,i,a);A&&(t+=A,s||r||(REGEX_LINK.getLink(a).match(REG_LINKINDEX_HYPERLINK)?s=!0:r=!0))}i=a.value.index+a.value[0].length}return t+=e.substring(i,e.length),r&&(t=this.linkPrefix+t),s&&(t=this.urlPrefix+t),{parsed:t,link:A}}parseCheckbox(e){return this.plugin.settings.parseTODO?e.replaceAll(/^- \[\s] /g,`${this.plugin.settings.todo} `).replaceAll(/\n- \[\s] /g,`\n${this.plugin.settings.todo} `).replaceAll(/^- \[[^\s]] /g,`${this.plugin.settings.done} `).replaceAll(/\n- \[[^\s]] /g,`\n${this.plugin.settings.done} `):e}quickParse(e){if((e=>{const t=REGEX_LINK.getRes(e);let A;for(;!(A=t.next()).done;)if(REGEX_LINK.isTransclusion(A))return!0;return!1})(e))return[null,null];e=this.parseCheckbox(e);let t="",A=null,i=0;const n=REGEX_LINK.getRes(e);let a,r=!1,s=!1;for(e.match(REG_LINKINDEX_HYPERLINK)&&(A=e,s=!0);!(a=n.next()).done;){if(!A){const e=REGEX_LINK.getLink(a);A=e.match(REG_LINKINDEX_HYPERLINK)?e:`[[${e}]]`}const n=this.parseLinks(e,i,a);n&&(t+=n,s||r||(REGEX_LINK.getLink(a).match(REG_LINKINDEX_HYPERLINK)?s=!0:r=!0)),i=a.value.index+a.value[0].length}return t+=e.substring(i,e.length),r&&(t=this.linkPrefix+t),s&&(t=this.urlPrefix+t),[t,A]}generateMD(e=[]){let t="# Text Elements\n";for(const e of this.textElements.keys()){const A=this.scene.elements.filter((t=>t.id===e));let i=this.textElements.get(e).raw;A&&1===A.length&&A[0].link&&A[0].rawText===A[0].originalText&&A[0].link.match(/^\[\[[^\]]*]]$/g)&&(i=`%%***>>>text element-link:${A[0].link}<<<***%%`+i),t+=`${i} ^${e}\n\n`}for(const e of this.elementLinks.keys())t+=`${this.elementLinks.get(e)} ^${e}\n\n`;if(t+=this.equations.size>0||this.files.size>0?"\n# Embedded files\n":"",this.equations.size>0)for(const e of this.equations.keys())t+=`${e}: $$${this.equations.get(e).latex}$$\n`;if(this.files.size>0)for(const e of this.files.keys()){const A=/(^[^#\|]*)/,i=this.files.get(e);i.isHyperlink?t+=`${e}: ${i.hyperlink}\n`:t+=`${e}: [[${i.file?i.linkParts.original.replace(A,app.metadataCache.fileToLinktext(i.file,this.file.path)):i.linkParts.original}]]${i.colorMap?" "+JSON.stringify(i.colorMap):""}\n`}return t+=this.equations.size>0||this.files.size>0?"\n":"",t+getMarkdownDrawingSection(JSON.stringify({type:this.scene.type,version:this.scene.version,source:this.scene.source,elements:this.scene.elements.concat(e),appState:this.scene.appState,files:this.scene.files},null,"\t"),!this.disableCompression&&this.plugin.settings.compress)}async saveDataURLtoVault(e,t,A){var i;const n=this.scene;let a=`Pasted Image ${window.moment().format("YYYYMMDDHHmmss_SSS")}`;switch(t){case"image/png":default:a+=".png";break;case"image/jpeg":a+=".jpg";break;case"image/svg+xml":a+=".svg";break;case"image/gif":a+=".gif"}const r=(await getAttachmentsFolderAndFilePath(this.app,this.file.path,a)).filepath,s=await this.app.vault.createBinary(r,getBinaryFileFromDataURL(e)),o=new EmbeddedFile(this.plugin,this.file.path,r);return o.setImage(e,t,{height:0,width:0},"dark"===(null===(i=n.appState)||void 0===i?void 0:i.theme),"image/svg+xml"===t),this.setFile(A,o),s}async syncFiles(){let e=!1;const t=this.scene,A=t.elements.filter((e=>"image"===e.type)).map((e=>e.fileId));if(this.files.forEach(((t,i)=>{A.contains(i)||(this.files.delete(i),e=!0)})),this.equations.forEach(((t,i)=>{A.contains(i)||(this.equations.delete(i),e=!0)})),!t.files||0===Object.keys(t.files).length)return!1;const i=new Set;A.forEach((A=>{if(i.has(A)){const n=this.getFile(A),a=this.getEquation(A);if(n&&(n.isHyperlink||n.file&&("md"!==n.file.extension||this.plugin.isExcalidrawFile(n.file))))return;const r=fileid();t.elements.filter((e=>e.fileId===A))[0].fileId=r,e=!0,i.add(r),n&&this.setFile(r,new EmbeddedFile(this.plugin,this.file.path,n.linkParts.original)),a&&this.setEquation(r,{latex:a.latex,isLoaded:!1})}i.add(A)}));for(const A of Object.keys(t.files))this.hasFile(A)||this.hasEquation(A)||(e=!0,await this.saveDataURLtoVault(t.files[A].dataURL,t.files[A].mimeType,A));return e}async syncElements(e,t){this.scene=e;let A=!1;return this.compatibilityMode||(A=await this.syncFiles(),this.scene.files={}),this.updateElementLinksFromScene(),A=A||this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.findNewElementLinksInScene(),await this.updateTextElementsFromScene(),A||this.findNewTextElementsInScene(t)}async updateScene(e){this.scene=JSON_parse(e),this.updateElementLinksFromScene();const t=this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.findNewElementLinksInScene();return await this.updateTextElementsFromScene(),!(!t&&!this.findNewTextElementsInScene()||(await this.updateSceneTextElements(),0))}getRawText(e){var t;return null===(t=this.textElements.get(e))||void 0===t?void 0:t.raw}getParsedText(e){const t=this.textElements.get(e);return t?[wrap(t.parsed,t.wrapAt),t.parsed,null]:[null,null,null]}setTextElement(e,t,A,i){const n=estimateMaxLineLen(t,A),[a,r]=this.quickParse(A);return a?(this.textElements.set(e,{raw:A,parsed:a,wrapAt:n}),[wrap(a,n),a,r]):(this.parse(A).then((t=>{const a=t.parsed;this.textElements.set(e,{raw:A,parsed:a,wrapAt:n}),a&&i(wrap(a,n),a)})),[null,null,null])}async addTextElement(e,t,A){let i=estimateMaxLineLen(t,A);this.textElements.has(e)&&(i=this.textElements.get(e).wrapAt);const n=await this.parse(A);return this.textElements.set(e,{raw:A,parsed:n.parsed,wrapAt:i}),[wrap(n.parsed,i),n.parsed,n.link]}deleteTextElement(e){this.textElements.delete(e)}getOpenMode(){const e=this.app.metadataCache.getFileCache(this.file);let t="view-mobile"===this.plugin.settings.defaultMode?DEVICE.isPhone?"view":"normal":this.plugin.settings.defaultMode;switch((null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-default-mode"]&&(t=e.frontmatter["excalidraw-default-mode"]),t){case"zen":return{viewModeEnabled:!1,zenModeEnabled:!0};case"view":return{viewModeEnabled:!0,zenModeEnabled:!1};default:return{viewModeEnabled:!1,zenModeEnabled:!1}}}getLinkOpacity(){const e=this.app.metadataCache.getFileCache(this.file);let t=this.plugin.settings.linkOpacity;return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-linkbutton-opacity"]&&(t=e.frontmatter["excalidraw-linkbutton-opacity"]),t}getOnLoadScript(){const e=this.app.metadataCache.getFileCache(this.file);return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-onload-script"]?e.frontmatter["excalidraw-onload-script"]:null}setLinkPrefix(){const e=this.linkPrefix,t=this.app.metadataCache.getFileCache(this.file);return(null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-link-prefix"]?this.linkPrefix=t.frontmatter["excalidraw-link-prefix"]:this.linkPrefix=this.plugin.settings.linkPrefix,e!=this.linkPrefix}setUrlPrefix(){const e=this.urlPrefix,t=this.app.metadataCache.getFileCache(this.file);return(null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-url-prefix"]?this.urlPrefix=t.frontmatter["excalidraw-url-prefix"]:this.urlPrefix=this.plugin.settings.urlPrefix,e!=this.urlPrefix}setAutoexportPreferences(){const e=this.app.metadataCache.getFileCache(this.file);if((null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-autoexport"])switch(e.frontmatter["excalidraw-autoexport"].toLowerCase()){case"none":this.autoexportPreference=AutoexportPreference.none;break;case"both":this.autoexportPreference=AutoexportPreference.both;break;case"png":this.autoexportPreference=AutoexportPreference.png;break;case"svg":this.autoexportPreference=AutoexportPreference.svg;break;default:this.autoexportPreference=AutoexportPreference.inherit}else this.autoexportPreference=AutoexportPreference.inherit}setShowLinkBrackets(){const e=this.showLinkBrackets,t=this.app.metadataCache.getFileCache(this.file);return(null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-link-brackets"]?this.showLinkBrackets=0!=t.frontmatter["excalidraw-link-brackets"]:this.showLinkBrackets=this.plugin.settings.showLinkBrackets,e!=this.showLinkBrackets}setFile(e,t){if(!t)return;if(this.files.set(e,t),t.isHyperlink)return void this.plugin.filesMaster.set(e,{isHyperlink:!0,path:t.hyperlink,blockrefData:null,hasSVGwithBitmap:t.isSVGwithBitmap});if(!t.file)return;const A=t.linkParts.original.split("#");this.plugin.filesMaster.set(e,{isHyperlink:!1,path:t.file.path+(t.shouldScale()?"":"|100%"),blockrefData:1===A.length?null:A[1],hasSVGwithBitmap:t.isSVGwithBitmap,colorMapJSON:t.colorMap?JSON.stringify(t.colorMap):null})}getFiles(){return Object.values(this.files)}getFile(e){let t=this.files.get(e);if(t)return t;const A=this.plugin.filesMaster.get(e);return A?(t=new EmbeddedFile(this.plugin,this.file.path,A.blockrefData?A.path+"#"+A.blockrefData:A.path),this.files.set(e,t),t):t}getFileEntries(){return this.files.entries()}deleteFile(e){this.files.delete(e)}hasFile(e){if(this.files.has(e))return!0;if(this.plugin.filesMaster.has(e)){const t=this.plugin.filesMaster.get(e);if(t.isHyperlink)return this.files.set(e,new EmbeddedFile(this.plugin,this.file.path,t.path)),!0;const A=t.path.split("|")[0].split("#")[0];if(!this.app.vault.getAbstractFileByPath(A))return this.plugin.filesMaster.delete(e),!0;const i=t.path.endsWith("100%"),n=new EmbeddedFile(this.plugin,this.file.path,(t.blockrefData?A+"#"+t.blockrefData:A)+(i?"|100%":""),t.colorMapJSON);return this.files.set(e,n),!0}return!1}setEquation(e,t){this.equations.set(e,{latex:t.latex,isLoaded:t.isLoaded}),this.plugin.equationsMaster.set(e,t.latex)}getEquation(e){let t=this.equations.get(e);if(t)return t;const A=this.plugin.equationsMaster.get(e);return A?(this.equations.set(e,{latex:A,isLoaded:!1}),{latex:A,isLoaded:!1}):t}getEquationEntries(){return this.equations.entries()}deleteEquation(e){this.equations.delete(e)}hasEquation(e){return!!this.equations.has(e)||!!this.plugin.equationsMaster.has(e)&&(this.equations.set(e,{latex:this.plugin.equationsMaster.get(e),isLoaded:!1}),!0)}}const getTransclusion=async(e,t,A,i)=>{var n,a,r,s,o,l,c,d,h;if(!e.path)return{contents:e.original.trim(),lineNum:0};if(!(A&&A instanceof obsidian_module.TFile))return{contents:e.original.trim(),lineNum:0};const u=await t.vault.read(A);if(!e.ref)return i?{contents:u.substring(0,i).trim(),lineNum:0}:{contents:u.trim(),lineNum:0};const g=(await t.metadataCache.blockCache.getForFile({isCancelled:()=>!1},A)).blocks.filter((e=>"comment"!=e.node.type));if(!g)return{contents:e.original.trim(),lineNum:0};if(e.isBlockRef){let t=null===(n=g.filter((t=>t.node.id==e.ref))[0])||void 0===n?void 0:n.node;if(!t)return{contents:e.original.trim(),lineNum:0};["blockquote"].includes(t.type)&&(t=t.children[0]);const A=t.position.start.offset,i=t.position.start.line,a=t.position.end.offset;return{contents:u.substring(A,a).replaceAll(/ \^\S*$|^\^\S*$/gm,"").trim(),lineNum:i}}const p=g.filter((e=>0===e.display.search(/^#+\s/)));let m=null,w=0,f=null,B=1;for(let t=0;tB;)e++;return e===p.length&&p[e-1].node.depth>B?{leadingHashes:"#".repeat(B)+" ",contents:u.substring(m).trim(),lineNum:w}:(f=p[e].node.position.start.offset-1,{leadingHashes:"#".repeat(B)+" ",contents:u.substring(m,f).trim(),lineNum:w})}const A=p[t].node.children[0],i=null===(r=null===(a=p[t].node.data)||void 0===a?void 0:a.hProperties)||void 0===r?void 0:r.dataHeading,n=null==A?void 0:A.children;!m&&((null===(s=null==A?void 0:A.value)||void 0===s?void 0:s.replaceAll(REG_BLOCK_REF_CLEAN,""))===e.ref||(null===(o=null==A?void 0:A.title)||void 0===o?void 0:o.replaceAll(REG_BLOCK_REF_CLEAN,""))===e.ref||(null==i?void 0:i.replaceAll(REG_BLOCK_REF_CLEAN,""))===e.ref||n&&(null===(c=null===(l=n[0])||void 0===l?void 0:l.value)||void 0===c?void 0:c.replaceAll(REG_BLOCK_REF_CLEAN,""))===e.ref)&&(m=null===(d=p[t].node.children[0])||void 0===d?void 0:d.position.start.offset,B=p[t].node.depth,w=null===(h=p[t].node.children[0])||void 0===h?void 0:h.position.start.line)}return m?{leadingHashes:"#".repeat(B)+" ",contents:u.substring(m).trim(),lineNum:w}:{contents:e.original.trim(),lineNum:0}};class Prompt extends obsidian_module.Modal{constructor(e,t,A,i,n){super(e),this.prompt_text=t,this.default_value=A,this.placeholder=i,this.prompt_desc=n}onOpen(){this.titleEl.setText(this.prompt_text),this.createForm()}onClose(){this.contentEl.empty()}createForm(){var e;let t=this.contentEl.createDiv();t.addClass("excalidraw-prompt-div"),this.prompt_desc&&(t=t.createDiv(),t.style.width="100%",t.createEl("p").innerHTML=this.prompt_desc);const A=t.createEl("form");A.addClass("excalidraw-prompt-form"),A.type="submit",A.onsubmit=e=>{e.preventDefault(),this.resolve(this.promptEl.value),this.close()},this.promptEl=A.createEl("input"),this.promptEl.type="text",this.promptEl.placeholder=this.placeholder,this.promptEl.value=null!==(e=this.default_value)&&void 0!==e?e:"",this.promptEl.addClass("excalidraw-prompt-input"),this.promptEl.select()}async openAndGetValue(e){this.resolve=e,this.open()}}class GenericInputPrompt extends obsidian_module.Modal{static Prompt(e,t,A,i,n,a,r,s,o,l,c){return new GenericInputPrompt(e,t,A,i,n,a,r,s,o,l,c).waitForClose}constructor(e,t,A,i,n,a,r,s,o,l,c){super(A),this.header=i,this.didSubmit=!1,this.lines=1,this.displayEditorButtons=!1,this.selectionStart=0,this.selectionEnd=0,this.selectionUpdateTimer=0,this.blockPointerInputOutsideModal=!1,this.linkBtnClickCallback=()=>{this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer),this.plugin.insertLinkDialog.start(this.view.file.path,(e=>{const t=this.inputComponent.inputEl.value;this.selectionStart>0&&" "!==t.slice(this.selectionStart-1,this.selectionStart)&&(e=" "+e),this.selectionStart{this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer);const t=this.inputComponent.inputEl.value.slice(0,this.selectionStart)+e+this.inputComponent.inputEl.value.slice(this.selectionStart);this.inputComponent.inputEl.value=t,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.selectionStart=this.selectionStart+1,this.selectionEnd=this.selectionStart,this.inputComponent.inputEl.setSelectionRange(this.selectionStart,this.selectionEnd)},this.delBtnClickCallback=()=>{if(this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer),0===this.input.length)return;const e=this.selectionEnd>this.selectionStart?this.selectionStart:this.selectionStart>0?this.selectionStart-1:0,t=this.selectionEnd,A=this.inputComponent.inputEl.value.slice(0,e)+this.inputComponent.inputEl.value.slice(t);this.inputComponent.inputEl.value=A,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.selectionStart=e,this.selectionEnd=e,this.inputComponent.inputEl.setSelectionRange(e,e)},this.uppercaseBtnClickCallback=()=>{if(this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer),this.selectionEnd===this.selectionStart)return;const e=this.inputComponent.inputEl.value.slice(0,this.selectionStart)+this.inputComponent.inputEl.value.slice(this.selectionStart,this.selectionEnd).toUpperCase()+this.inputComponent.inputEl.value.slice(this.selectionEnd);this.inputComponent.inputEl.value=e,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.inputComponent.inputEl.setSelectionRange(this.selectionStart,this.selectionEnd)},this.submitClickCallback=()=>this.submit(),this.cancelClickCallback=()=>this.cancel(),this.keyDownCallback=e=>{("Enter"===e.key&&1===this.lines||isCTRL(e)&&"Enter"===e.key)&&(e.preventDefault(),this.submit()),this.displayEditorButtons&&"k"===e.key&&isCTRL(e)&&(e.preventDefault(),this.linkBtnClickCallback())},this.view=e,this.plugin=t,this.placeholder=n,this.input=a,this.buttons=r,this.lines=null!=s?s:1,this.displayEditorButtons=this.lines>1&&null!=o&&o,this.customComponents=l,this.blockPointerInputOutsideModal=null!=c&&c,this.waitForClose=new Promise(((e,t)=>{this.resolvePromise=e,this.rejectPromise=t})),this.display(),this.inputComponent.inputEl.focus(),this.open()}display(){var e;this.contentEl.empty(),this.blockPointerInputOutsideModal&&(this.bgEl.style.pointerEvents=this.blockPointerInputOutsideModal?"none":"auto"),this.titleEl.textContent=this.header;const t=this.contentEl.createDiv();this.inputComponent=this.createInputField(t,this.placeholder,this.input),null===(e=this.customComponents)||void 0===e||e.call(this,t),this.createButtonBar(t)}createInputField(e,t,A){const i=new obsidian_module.TextAreaComponent(e);i.inputEl.style.width="100%",i.inputEl.style.height=2*this.lines+"em",1===this.lines&&(i.inputEl.style.resize="none",i.inputEl.style.overflow="hidden"),i.setPlaceholder(null!=t?t:"").setValue(null!=A?A:"").onChange((e=>this.input=e));const n=()=>{this.selectionUpdateTimer=this.view.ownerWindow.setTimeout((()=>{this.selectionStart=this.inputComponent.inputEl.selectionStart,this.selectionEnd=this.inputComponent.inputEl.selectionEnd}),30)};return i.inputEl.addEventListener("keydown",this.keyDownCallback),i.inputEl.addEventListener("keyup",n),i.inputEl.addEventListener("pointerup",n),i.inputEl.addEventListener("touchend",n),i.inputEl.addEventListener("input",n),i.inputEl.addEventListener("paste",n),i.inputEl.addEventListener("cut",n),i.inputEl.addEventListener("select",n),i.inputEl.addEventListener("selectionchange",n),i}createButton(e,t,A,i="",n="5px"){const a=new obsidian_module.ButtonComponent(e);return a.buttonEl.style.padding="0.5em",a.buttonEl.style.marginLeft=n,a.setTooltip(i),a.setButtonText(t).onClick(A),a}createButtonBar(e){const t=e.createDiv();t.style.display="flex",t.style.justifyContent="space-between",t.style.marginTop="1rem";const A=t.createDiv(),i=t.createDiv();if(this.buttons&&this.buttons.length>0){let e=null;for(const t of this.buttons){const A=new obsidian_module.ButtonComponent(i);A.buttonEl.style.marginLeft="5px",t.tooltip&&A.setTooltip(t.tooltip),A.setButtonText(t.caption).onClick((e=>{const A=t.action(this.input);A&&(this.input=A),this.submit()})),e=null!=e?e:A}e&&(e.setCta(),e.buttonEl.style.marginRight="0")}else this.createButton(i,"✅",this.submitClickCallback).setCta().buttonEl.style.marginRight="0";this.createButton(i,"❌",this.cancelClickCallback,"Cancel"),this.displayEditorButtons&&(this.createButton(A,"⏎",(()=>this.insertStringBtnClickCallback("\n")),"Insert new line","0"),this.createButton(A,"⌫",this.delBtnClickCallback,"Delete"),this.createButton(A,"⎵",(()=>this.insertStringBtnClickCallback(" ")),"Insert space"),this.view&&this.createButton(A,"🔗",this.linkBtnClickCallback,"Insert markdown link to file"),this.createButton(A,"🔠",this.uppercaseBtnClickCallback,"Uppercase"))}submit(){this.didSubmit=!0,this.close()}cancel(){this.close()}resolveInput(){this.didSubmit?this.resolvePromise(this.input):this.rejectPromise("No input given.")}removeInputListener(){var e,t;null===(t=null===(e=this.inputComponent)||void 0===e?void 0:e.inputEl)||void 0===t||t.removeEventListener("keydown",this.keyDownCallback)}onOpen(){super.onOpen(),this.inputComponent.inputEl.focus(),this.inputComponent.inputEl.select()}onClose(){super.onClose(),this.resolveInput(),this.removeInputListener()}}class GenericSuggester extends obsidian_module.FuzzySuggestModal{static Suggest(e,t,A,i,n){return new GenericSuggester(e,t,A,i,n).promise}constructor(e,t,A,i,n){var a;super(e),this.displayItems=t,this.items=A,this.hint=i,this.instructions=n,this.limit=20,this.setPlaceholder(null!==(a=this.hint)&&void 0!==a?a:""),n&&this.setInstructions(this.instructions),this.promise=new Promise(((e,t)=>{this.resolvePromise=e,this.rejectPromise=t})),this.open()}getItemText(e){return this.displayItems[this.items.indexOf(e)]}getItems(){return this.items}selectSuggestion(e,t){this.resolved=!0,super.selectSuggestion(e,t)}onChooseItem(e){this.resolved=!0,this.resolvePromise(e)}onClose(){super.onClose(),this.resolved||this.rejectPromise(this.inputEl.value)}}class NewFileActions extends obsidian_module.Modal{constructor(e,t,A,i){super(e.app),this.plugin=e,this.path=t,this.keys=A,this.view=i}onOpen(){this.createForm()}async onClose(){}openFile(e){e&&getLeaf(this.plugin,this.view.leaf,this.keys).openFile(e,{active:!0})}createForm(){this.titleEl.setText("New File"),this.contentEl.createDiv({cls:"excalidraw-prompt-center",text:"File does not exist. Do you want to create it?"}),this.contentEl.createDiv({cls:"excalidraw-prompt-center filepath",text:this.path}),this.contentEl.createDiv({cls:"excalidraw-prompt-center"},(e=>{e.style.textAlign="right";const t=()=>this.path&&""!==this.path?!!this.view.file||(new obsidian_module.Notice("Unknown error. It seems as if your drawing was closed or the drawing file is missing"),!1):(new obsidian_module.Notice("Error: Filename for new file may not be empty"),!1),A=async e=>{if(!this.path.includes("/")){const e=new RegExp(`${this.view.file.name}$`,"g");this.path=this.view.file.path.replace(e,this.path)}return this.path.match(/\.md$/)||(this.path=`${this.path}.md`),checkAndCreateFolder(splitFolderAndFilename(this.path).folderpath),await this.app.vault.create(this.path,e)};e.createEl("button",{text:"Create Markdown"}).onclick=async()=>{if(!t)return;const e=await A("");this.openFile(e),this.close()},e.createEl("button",{text:"Create Excalidraw"}).onclick=async()=>{if(!t)return;const e=await A(await this.plugin.getBlankDrawing());await sleep$1(200),this.openFile(e),this.close()},e.createEl("button",{text:"Never Mind"}).onclick=()=>{this.close()}}))}}class ScriptEngine{constructor(e){this.plugin=e,this.scriptIconMap={},this.loadScripts(),this.registerEventHandlers()}registerEventHandlers(){const e=e=>{if(!e.endsWith(".svg"))return;const t=app.vault.getAbstractFileByPath(getIMGFilename(e,"md"));t&&t instanceof obsidian_module.TFile&&(this.unloadScript(this.getScriptName(t),t.path),this.loadScript(t))};this.plugin.registerEvent(app.vault.on("delete",(async t=>{t instanceof obsidian_module.TFile&&t.path.startsWith(this.scriptPath)&&(this.unloadScript(this.getScriptName(t),t.path),e(t.path))}))),this.plugin.registerEvent(app.vault.on("create",(async t=>{t instanceof obsidian_module.TFile&&t.path.startsWith(this.scriptPath)&&(this.loadScript(t),e(t.path))}))),this.plugin.registerEvent(app.vault.on("rename",(async(t,A)=>{if(!(t instanceof obsidian_module.TFile))return;const i=A.startsWith(this.scriptPath),n=t.path.startsWith(this.scriptPath);i&&(this.unloadScript(this.getScriptName(A),A),e(A)),n&&(this.loadScript(t),e(t.path))})))}updateScriptPath(){this.scriptPath!==this.plugin.settings.scriptFolderPath&&(this.scriptPath&&this.unloadScripts(),this.loadScripts())}getListofScripts(){if(this.scriptPath=this.plugin.settings.scriptFolderPath,app.vault.getAbstractFileByPath(this.scriptPath))return app.vault.getFiles().filter((e=>e.path.startsWith(this.scriptPath)&&"md"===e.extension));this.scriptPath=null}loadScripts(){var e;null===(e=this.getListofScripts())||void 0===e||e.forEach((e=>this.loadScript(e)))}getScriptName(e){let t="",A="";e instanceof obsidian_module.TFile?(t=e.basename,A=e.path):(t=splitFolderAndFilename(e).basename,A=e);const i=A.split(`${this.scriptPath}/`)[1],n=i.lastIndexOf("/");return n>-1?i.substring(0,n+1)+t:t}async addScriptIconToMap(e,t){const A=getIMGFilename(e,"svg"),i=app.vault.getAbstractFileByPath(A),n=i&&i instanceof obsidian_module.TFile?await app.vault.read(i):null;this.scriptIconMap=Object.assign({},this.scriptIconMap);const a=splitFolderAndFilename(t);this.scriptIconMap[e]={name:a.filename,group:"/"===a.folderpath?"":a.folderpath,svgString:n},this.updateToolPannels()}loadScript(e){if("md"!==e.extension)return;const t=this.getScriptName(e);this.addScriptIconToMap(e.path,t),this.plugin.addCommand({id:t,name:`(Script) ${t}`,checkCallback:A=>{if(A)return Boolean(app.workspace.getActiveViewOfType(ExcalidrawView));const i=app.workspace.getActiveViewOfType(ExcalidrawView);return!!i&&((async()=>{const A=await app.vault.read(e);A&&this.executeScript(i,A,t,e)})(),!0)}})}unloadScripts(){const e=app.vault.getFiles().filter((e=>e.path.startsWith(this.scriptPath)));e.forEach((e=>{this.unloadScript(this.getScriptName(e),e.path)}))}unloadScript(e,t){if(!t.endsWith(".md"))return;delete this.scriptIconMap[t],this.scriptIconMap=Object.assign({},this.scriptIconMap),this.updateToolPannels();const A=`${PLUGIN_ID}:${e}`;app.commands.commands[A]&&delete app.commands.commands[A]}async executeScript(e,t,A,i){if(!e||!t||!A)return;this.plugin.ea.reset(),this.plugin.ea.setView(e),this.plugin.ea.activeScript=A;const n=Object.getPrototypeOf((async()=>{})).constructor;let a=null;return a=await new n("ea","utils",t)(this.plugin.ea,{inputPrompt:(t,A,i,n,a,r,s,o)=>ScriptEngine.inputPrompt(e,this.plugin,app,t,A,i,n,a,r,s,o),suggester:(e,t,A,i)=>ScriptEngine.suggester(app,e,t,A,i),scriptFile:i}),this.plugin.ea.activeScript=null,a}updateToolPannels(){app.workspace.getLeavesOfType("excalidraw").forEach((e=>{var t,A;null===(A=null===(t=e.view.toolsPanelRef)||void 0===t?void 0:t.current)||void 0===A||A.updateScriptIconMap(this.scriptIconMap)}))}static async inputPrompt(e,t,A,i,n,a,r,s,o,l,c){try{return await GenericInputPrompt.Prompt(e,t,A,i,n,a,r,s,o,l,c)}catch(e){return}}static async suggester(e,t,A,i,n){try{return await GenericSuggester.Suggest(e,t,A,i,n)}catch(e){return}}}var t$c={d:(e,t)=>{for(var A in t)t$c.o(t,A)&&!t$c.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},r$e={};t$c.d(r$e,{QA:()=>w$1,ZP:()=>j$1,qt:()=>x$1,MX:()=>$});const e$d={red:"hsl(0, 100%, 50%)",orange:"hsl(30, 100%, 50%)",yellow:"hsl(60, 100%, 50%)","lime green":"hsl(90, 100%, 50%)",green:"hsl(120, 100%, 50%)","blue green":"hsl(150, 100%, 50%)",cyan:"hsl(180, 100%, 50%)","sky blue":"hsl(210, 100%, 50%)",blue:"hsl(240, 100%, 50%)",purple:"hsl(270, 100%, 50%)",magenta:"hsl(300, 100%, 50%)",pink:"hsl(330, 100%, 50%)"};function s$a(e,t,A){return Math.max(e,Math.min(t,A))}function n$c(e,t){return+e.toFixed(t>=0?t:0)}function a$c(e){const t=e%360;return t<0?t+360:t}function i$a(e){return void 0!==e?s$a(0,e,1):1}function o$b(e){return Math.floor(Math.random()*e)}function h$4(e){var t;const{Cmin:A,Cmax:i,H:n,delta:a}=function(e){const[t,A,i]=Object.values(e).map((e=>e/255)),n=Math.max(t,A,i),a=Math.min(t,A,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===t?(A-i)/r%6:n===A?(i-t)/r+2:(t-A)/r+4,delta:r}}(e),r=(i+A)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:a$c(60*n),s:100*s,l:100*r,a:null!==(t=e.a)&&void 0!==t?t:1}}function u$8(e){const{h:t,s:A,l:i,a:n}=e,a=i/100,r=A/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(t/60%2-1)),l=a-s/2,c=t<60||300<=t&&t<360?s:120<=t&&t<240?0:o,d=240<=t&&t<360?0:60<=t&&t<180?s:o,h=t<120?0:180<=t&&t<300?s:o,[u,g,p]=[c,d,h].map((e=>255*(e+l)));return{r:u,g:g,b:p,a:null!=n?n:1}}function l$5(e){const[t,A,i,n]=Object.values(e).map((e=>parseInt(e,16)));return{r:t,g:A,b:i,a:n?n/255:1}}const c$a=/^#?([\da-f])([\da-f])([\da-f])([\da-f])?$|^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})?([\da-f]{2})?$/gi,f$3=/hsla?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function d$2({h:e,s:t,l:A,a:i}){return[u$8({h:a$c(e),s:s$a(0,t,100),l:s$a(0,A,100),a:i$a(i)}),"hsl"]}const g$2=/rgba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b$5({r:e,g:t,b:A,a:i}){return[{r:s$a(0,e,255),g:s$a(0,t,255),b:s$a(0,A,255),a:i$a(i)},"rgb"]}var p$3,v$2,m$1=function(e,t,A,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(e,A):n?n.value=A:t.set(e,A),A},y$1=function(e,t,A,i){if("a"===A&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===A?i:"a"===A?i.call(e):i?i.value:t.get(e)};class w$1{constructor(e){var t,A;p$3.set(this,{r:0,g:0,b:0,a:1}),v$2.set(this,"rgb");const i=w$1.Parsers.map((t=>t(e))).find((e=>"invalid"!==e[1]));i?(t=this,A=this,[{set value(e){m$1(t,p$3,e,"f")}}.value,{set value(e){m$1(A,v$2,e,"f")}}.value]=i):m$1(this,v$2,"invalid","f")}get red(){return y$1(this,p$3,"f").r}get blue(){return y$1(this,p$3,"f").b}get green(){return y$1(this,p$3,"f").g}get alpha(){return y$1(this,p$3,"f").a}get hue(){return h$4(y$1(this,p$3,"f")).h}get saturation(){return h$4(y$1(this,p$3,"f")).s}get lightness(){return h$4(y$1(this,p$3,"f")).l}get format(){return y$1(this,v$2,"f")}isValid(){return"invalid"!==y$1(this,v$2,"f")}rgba(){return y$1(this,p$3,"f")}hsla(){return h$4(y$1(this,p$3,"f"))}hexa({round:e=!1}={}){return function(e,t=!1){let{r:A,g:i,b:n,a:a}=e;a&&(a*=255),t&&([A,i,n,a]=[A,i,n,a].map((e=>e&&Math.round(e))));const[r,s,o,l]=[A,i,n,null!=a?a:255].map((e=>e.toString(16).padStart(2,"0").toUpperCase()));return{r:r,g:s,b:o,a:l}}(y$1(this,p$3,"f"),e)}stringRGB({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(y$1(this,p$3,"f")).map(((e,A)=>n$c(e,t[A])));return e?`rgba(${A}, ${i}, ${n}, ${a})`:`rgb(${A}, ${i}, ${n})`}stringHEX({alpha:e=!0}={}){const[t,A,i,n]=Object.values(this.hexa({round:!0}));return`#${t}${A}${i}${e?n:""}`}stringHSL({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.hsla()).map(((e,A)=>n$c(e,t[A])));return e?`hsla(${A}, ${i}%, ${n}%, ${a})`:`hsl(${A}, ${i}%, ${n}%)`}hueTo(e){var t;const{h:A,s:i,l:n,a:a}=this.hsla(),r="number"==typeof e?a$c(e):Number(null!==(t=e$d[e].match(/\d{1,3}/))&&void 0!==t?t:A);return m$1(this,p$3,u$8({h:r,s:i,l:n,a:a}),"f"),this}hueBy(e){const{h:t,s:A,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:a$c(t+e),s:A,l:i,a:n}),"f"),this}saturationTo(e){const{h:t,l:A,a:i}=this.hsla();return m$1(this,p$3,u$8({h:t,s:s$a(0,e,100),l:A,a:i}),"f"),this}saturateBy(e){const{h:t,s:A,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:t,s:s$a(0,A+e,100),l:i,a:n}),"f"),this}desaturateBy(e){return this.saturateBy(-1*e)}lightnessTo(e){const{h:t,s:A,a:i}=this.hsla();return m$1(this,p$3,u$8({h:t,s:A,l:s$a(0,e,100),a:i}),"f"),this}lighterBy(e){const{h:t,s:A,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:t,s:A,l:s$a(0,i+e,100),a:n}),"f"),this}darkerBy(e){return this.lighterBy(-1*e)}alphaTo(e){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,e,1)}),"f"),this}alphaBy(e){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,y$1(this,p$3,"f").a+e,1)}),"f"),this}invert({alpha:e=!1}={}){const{r:t,g:A,b:i,a:n}=y$1(this,p$3,"f");return m$1(this,p$3,{r:255-t,g:255-A,b:255-i,a:e?1-n:n},"f"),this}grayscale(){return this.desaturateBy(100)}rotate(e){return this.hueBy(e)}}function $(){return new w$1({r:o$b(255),g:o$b(255),b:o$b(255),a:Math.random()})}function x$1(e){(e=e.filter(((e,t,A)=>A.indexOf(e)===t))).forEach((e=>e(w$1)))}p$3=new WeakMap,v$2=new WeakMap,w$1.Parsers=[function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:t,g:A,b:i}=e;return void 0!==t&&void 0!==A&&void 0!==i&&"number"==typeof t}(e))return b$5(e);if("string"==typeof e){g$2.lastIndex=0;const t=g$2.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?2.55:.01):+e));return b$5({r:e,g:A,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:t,g:A,b:i}=e;return void 0!==t&&void 0!==A&&void 0!==i&&"string"==typeof t}(e))return[l$5(e),"hex"];if("string"==typeof e){c$a.lastIndex=0;const t=c$a.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map((e=>1===e.length?e.repeat(2):e));return[l$5({r:e,g:A,b:i,a:null!=n?n:"FF"}),"hex"]}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:t,s:A,l:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return d$2(e);if("string"==typeof e){f$3.lastIndex=0;const t=f$3.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?3.59:t<3?1:.01):+e));return d$2({h:e,s:A,l:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}];const j$1=e=>new w$1(e);r$e.QA;var O$1=r$e.ZP,B=r$e.qt;r$e.MX;var e$c={d:(e,t)=>{for(var A in t)e$c.o(t,A)&&!e$c.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},a$b={};function t$b(e){const t=e%360;return t<0?t+360:t}e$c.d(a$b,{Z:()=>n$b});const n$b=e=>{e.prototype.harmony=function({type:t="analogous",effect:A="tones",amount:i=5}={}){const{h:n,s:a,l:r,a:s}=this.hsla();switch("monochromatic"===t&&(o=i,i=Math.max(2,Math.min(o,10))),t){case"analogous":return[-30,0,30].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"complementary":return[0,180].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"split-complementary":return[0,150,210].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"double-split-complementary":return[-30,0,30,150,210].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"triad":return[0,120,240].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"rectangle":return[0,60,180,240].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"square":return[0,90,180,270].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"monochromatic":{const t="tones"===A?a:r;let o=("tints"===A?100-t:t)/i;o="tints"===A?o:-1*o;const l=[t];for(let e=0;enew e({h:n,s:t,l:r,a:s}))):l.map((t=>new e({h:n,s:a,l:t,a:s})))}}var o}};var r$d=a$b.Z,a$a={d:(e,t)=>{for(var A in t)a$a.o(t,A)&&!a$a.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t$a={};a$a.d(t$a,{Z:()=>k});const e$b=6/29,n$a=Math.pow(e$b,3),c$9=Math.pow(29/3,3),r$c={x:.96422,y:1,z:.82521};function u$7(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function s$9(e,t,A){return Math.max(e,Math.min(t,A))}function o$a(e){const t=e%360;return t<0?t+360:t}function l$4(e){const[t,A,i]=Object.values(e).map((e=>e/255)),n=Math.max(t,A,i),a=Math.min(t,A,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===t?(A-i)/r%6:n===A?(i-t)/r+2:(t-A)/r+4,delta:r}}function b$4(e){var t;const{Cmin:A,Cmax:i,H:n,delta:a}=l$4(e),r=(i+A)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:o$a(60*n),s:100*s,l:100*r,a:null!==(t=e.a)&&void 0!==t?t:1}}function h$3(e){var t;const{Cmax:A,H:i,delta:n}=l$4(e),a=0===n?0:n/A;return{h:o$a(60*i),s:100*a,v:100*A,a:null!==(t=e.a)&&void 0!==t?t:1}}function v$1(e){const{h:t,a:A}=b$4(e),{r:i,g:n,b:a}=e;return{h:t,w:Math.min(i,n,a)/2.55,b:100*(1-Math.max(i,n,a)/255),a:A}}function i$9(e){const[t,A,i]=u$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=u$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}function m(e){const t=Object.values(i$9(e)).map(((e,t)=>e/(100*Object.values(r$c)[t]))).map((e=>e>n$a?Math.cbrt(e):(c$9*e+16)/116));return{l:116*t[1]-16,a:500*(t[0]-t[1]),b:200*(t[1]-t[2]),alpha:e.a}}function p$2(e){const{l:t,a:A,b:i}=m(e),n=180*Math.atan2(i,A)/Math.PI;return{l:t,c:Math.sqrt(Math.pow(A,2)+Math.pow(i,2)),h:o$a(n),a:e.a}}function f$2(e){const[t,A,i]=Object.values(i$9(e)).map((e=>e/100)),n=A/r$c.y,a=t&&A&&i?t+15*A+3*i:19,r=4*t/a,s=9*A/a,o=r$c.x+15*r$c.y+3*r$c.z,l=4*r$c.x/o,c=9*r$c.y/o;let d=n>n$a?116*Math.cbrt(n)-16:c$9*n,h=13*d*(r-l),u=13*d*(s-c);return d===Number(-0)&&(d=0),h===Number(-0)&&(h=0),u===Number(-0)&&(u=0),{l:d,u:h,v:u,a:e.a}}function M(e){const{x:t,y:A,z:i}=i$9(e),[n,a,r]=u$7([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[t,A,i]);return{u:n,v:a,w:r,a:e.a}}function w(e){let{r:t,g:A,b:i}=e;const n=Math.min(t,A,i);[t,A,i]=[t,A,i].map((e=>e-n));const a=Math.max(t,A,i);let r=Math.min(t,A);t-=r,A-=r,i&&A&&(i/=2,A/=2),r+=A,i+=A;const s=Math.max(t,r,i);if(s){const e=a/s;[t,r,i]=[t,r,i].map((t=>t*e))}return[t,r,i]=[t,r,i].map((e=>e+n)),{r:t,y:r,b:i,a:e.a}}function O(e){const{r:t,g:A,b:i,a:n}=e,a=1-Math.max(t,A,i)/255,[r,s,o]=1===a?[0,0,0]:[t,A,i].map((e=>100*(1-e/255-a)/(1-a)));return{c:r,m:s,y:o,k:100*a,a:n}}function j(e){const{h:t,s:A,v:i,a:n}=e,a=i/100,r=a*(A/100),s=r*(1-Math.abs(t/60%2-1)),o=a-r,l=t<60||300<=t&&t<360?r:120<=t&&t<240?0:s,c=240<=t&&t<360?0:60<=t&&t<180?r:s,d=t<120?0:180<=t&&t<300?r:s,[h,u,g]=[l,c,d].map((e=>255*(e+o)));return{r:h,g:u,b:g,a:null!=n?n:1}}function x(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=u$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=u$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return s$9(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}function y(e){const{l:t,a:A,b:i}=e,n=(t+16)/116,a=n+A/500,r=n-i/200,s=Object.values(r$c),[o,l,c]=[a,n,r].map(((e,t)=>(e>e$b?Math.pow(e,3):3*Math.pow(e$b,2)*(e-4/29))*s[t]*100));return x({x:o,y:l,z:c,a:e.alpha})}const k=e=>{e.prototype.mix=function({color:t="#fff",ratio:A=.5,colorspace:i="luv"}={}){const n=this.rgba(),a=(t instanceof e?t:new e(t)).rgba();let r,s;switch(A=s$9(0,A,1),i){case"hsl":r=Object.values(b$4(n)),s=Object.values(b$4(a));break;case"hsv":r=Object.values(h$3(n)),s=Object.values(h$3(a));break;case"hwb":r=Object.values(v$1(n)),s=Object.values(v$1(a));break;case"lab":r=Object.values(m(n)),s=Object.values(m(a));break;case"lch":r=Object.values(p$2(n)),s=Object.values(p$2(a));break;case"luv":r=Object.values(f$2(n)),s=Object.values(f$2(a));break;case"ryb":r=Object.values(w(n)),s=Object.values(w(a));break;case"uvw":r=Object.values(M(n)),s=Object.values(M(a));break;case"xyz":r=Object.values(i$9(n)),s=Object.values(i$9(a));break;case"cmyk":r=Object.values(O(n)),s=Object.values(O(a));break;default:r=Object.values(n),s=Object.values(a)}const[o,l,c,d,h]=r.map(((e,t)=>r[t]*(1-A)+s[t]*A));switch(i){case"hsl":return new e(function(e){const{h:t,s:A,l:i,a:n}=e,a=i/100,r=A/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(t/60%2-1)),l=a-s/2,c=t<60||300<=t&&t<360?s:120<=t&&t<240?0:o,d=240<=t&&t<360?0:60<=t&&t<180?s:o,h=t<120?0:180<=t&&t<300?s:o,[u,g,p]=[c,d,h].map((e=>255*(e+l)));return{r:u,g:g,b:p,a:null!=n?n:1}}({h:o,s:l,l:c,a:d}));case"hsv":return new e(j({h:o,s:l,v:c,a:d}));case"hwb":return new e(function(e){const{h:t,b:A,w:i,a:n}=e;return j({h:t,s:100===A?0:100-i/(100-A)*100,v:100-A,a:n})}({h:o,w:l,b:c,a:d}));case"lab":return new e(y({l:o,a:l,b:c,alpha:d}));case"lch":return new e(function(e){const{l:t,c:A,h:i}=e;return y({l:t,a:A*Math.cos(i*Math.PI/180),b:A*Math.sin(i*Math.PI/180),alpha:e.a})}({l:o,c:l,h:c,a:d}));case"luv":return new e(function(e){const{l:t,u:A,v:i}=e,n=t>c$9*n$a?Math.pow((t+16)/116,3):t/c$9,a=r$c.x+15*r$c.y+3*r$c.z,r=(52*t/(A&&t?A+13*t*(4*r$c.x/a):1)-1)/3,s=-5*n,o=n*(39*t/(i&&t?i+13*t*(9*r$c.y/a):1)-5),l=r===-1/3?o-s:(o-s)/(r- -1/3);return x({x:100*l,y:100*n,z:100*(r*l+s),a:e.a})}({l:o,u:l,v:c,a:d}));case"ryb":return new e(function(e){let{r:t,y:A,b:i}=e;const n=Math.min(t,A,i);[t,A,i]=[t,A,i].map((e=>e-n));const a=Math.max(t,A,i);let r=Math.min(A,i);A-=r,i-=r,i&&r&&(i*=2,r*=2),t+=A,r+=A;const s=Math.max(t,r,i);if(s){const e=a/s;[t,r,i]=[t,r,i].map((t=>t*e))}return[t,r,i]=[t,r,i].map((e=>e+n)),{r:t,g:r,b:i,a:e.a}}({r:o,y:l,b:c,a:d}));case"uvw":return new e(function(e){const{u:t,v:A,w:i}=e,[n,a,r]=u$7([[1.5,0,0],[0,1,0],[1.5,-3,2]],[t,A,i]);return x({x:n,y:a,z:r,a:e.a})}({u:o,v:l,w:c,a:d}));case"xyz":return new e(x({x:o,y:l,z:c,a:d}));case"cmyk":return new e(function(e){const{c:t,m:A,y:i,k:n,a:a}=e,[r,s,o]=[t,A,i].map((e=>255*(1-e/100)*(1-n/100)));return{r:r,g:s,b:o,a:a}}({c:o,m:l,y:c,k:d,a:h}));default:return new e({r:o,g:l,b:c,a:d})}}};var z=t$a.Z,r$b={d:(e,t)=>{for(var A in t)r$b.o(t,A)&&!r$b.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},b$3={};r$b.d(b$3,{Z:()=>n$9});const g$1=["rgb(0,0,0)","rgb(0,0,51)","rgb(0,0,102)","rgb(0,0,153)","rgb(0,0,204)","rgb(0,0,255)","rgb(0,51,0)","rgb(0,51,51)","rgb(0,51,102)","rgb(0,51,153)","rgb(0,51,204)","rgb(0,51,255)","rgb(0,102,0)","rgb(0,102,51)","rgb(0,102,102)","rgb(0,102,153)","rgb(0,102,204)","rgb(0,102,255)","rgb(0,153,0)","rgb(0,153,51)","rgb(0,153,102)","rgb(0,153,153)","rgb(0,153,204)","rgb(0,153,255)","rgb(0,204,0)","rgb(0,204,51)","rgb(0,204,102)","rgb(0,204,153)","rgb(0,204,204)","rgb(0,204,255)","rgb(0,255,0)","rgb(0,255,51)","rgb(0,255,102)","rgb(0,255,153)","rgb(0,255,204)","rgb(0,255,255)","rgb(51,0,0)","rgb(51,0,51)","rgb(51,0,102)","rgb(51,0,153)","rgb(51,0,204)","rgb(51,0,255)","rgb(51,51,0)","rgb(51,51,51)","rgb(51,51,102)","rgb(51,51,153)","rgb(51,51,204)","rgb(51,51,255)","rgb(51,102,0)","rgb(51,102,51)","rgb(51,102,102)","rgb(51,102,153)","rgb(51,102,204)","rgb(51,102,255)","rgb(51,153,0)","rgb(51,153,51)","rgb(51,153,102)","rgb(51,153,153)","rgb(51,153,204)","rgb(51,153,255)","rgb(51,204,0)","rgb(51,204,51)","rgb(51,204,102)","rgb(51,204,153)","rgb(51,204,204)","rgb(51,204,255)","rgb(51,255,0)","rgb(51,255,51)","rgb(51,255,102)","rgb(51,255,153)","rgb(51,255,204)","rgb(51,255,255)","rgb(102,0,0)","rgb(102,0,51)","rgb(102,0,102)","rgb(102,0,153)","rgb(102,0,204)","rgb(102,0,255)","rgb(102,51,0)","rgb(102,51,51)","rgb(102,51,102)","rgb(102,51,153)","rgb(102,51,204)","rgb(102,51,255)","rgb(102,102,0)","rgb(102,102,51)","rgb(102,102,102)","rgb(102,102,153)","rgb(102,102,204)","rgb(102,102,255)","rgb(102,153,0)","rgb(102,153,51)","rgb(102,153,102)","rgb(102,153,153)","rgb(102,153,204)","rgb(102,153,255)","rgb(102,204,0)","rgb(102,204,51)","rgb(102,204,102)","rgb(102,204,153)","rgb(102,204,204)","rgb(102,204,255)","rgb(102,255,0)","rgb(102,255,51)","rgb(102,255,102)","rgb(102,255,153)","rgb(102,255,204)","rgb(102,255,255)","rgb(153,0,0)","rgb(153,0,51)","rgb(153,0,102)","rgb(153,0,153)","rgb(153,0,204)","rgb(153,0,255)","rgb(153,51,0)","rgb(153,51,51)","rgb(153,51,102)","rgb(153,51,153)","rgb(153,51,204)","rgb(153,51,255)","rgb(153,102,0)","rgb(153,102,51)","rgb(153,102,102)","rgb(153,102,153)","rgb(153,102,204)","rgb(153,102,255)","rgb(153,153,0)","rgb(153,153,51)","rgb(153,153,102)","rgb(153,153,153)","rgb(153,153,204)","rgb(153,153,255)","rgb(153,204,0)","rgb(153,204,51)","rgb(153,204,102)","rgb(153,204,153)","rgb(153,204,204)","rgb(153,204,255)","rgb(153,255,0)","rgb(153,255,51)","rgb(153,255,102)","rgb(153,255,153)","rgb(153,255,204)","rgb(153,255,255)","rgb(204,0,0)","rgb(204,0,51)","rgb(204,0,102)","rgb(204,0,153)","rgb(204,0,204)","rgb(204,0,255)","rgb(204,51,0)","rgb(204,51,51)","rgb(204,51,102)","rgb(204,51,153)","rgb(204,51,204)","rgb(204,51,255)","rgb(204,102,0)","rgb(204,102,51)","rgb(204,102,102)","rgb(204,102,153)","rgb(204,102,204)","rgb(204,102,255)","rgb(204,153,0)","rgb(204,153,51)","rgb(204,153,102)","rgb(204,153,153)","rgb(204,153,204)","rgb(204,153,255)","rgb(204,204,0)","rgb(204,204,51)","rgb(204,204,102)","rgb(204,204,153)","rgb(204,204,204)","rgb(204,204,255)","rgb(204,255,0)","rgb(204,255,51)","rgb(204,255,102)","rgb(204,255,153)","rgb(204,255,204)","rgb(204,255,255)","rgb(255,0,0)","rgb(255,0,51)","rgb(255,0,102)","rgb(255,0,153)","rgb(255,0,204)","rgb(255,0,255)","rgb(255,51,0)","rgb(255,51,51)","rgb(255,51,102)","rgb(255,51,153)","rgb(255,51,204)","rgb(255,51,255)","rgb(255,102,0)","rgb(255,102,51)","rgb(255,102,102)","rgb(255,102,153)","rgb(255,102,204)","rgb(255,102,255)","rgb(255,153,0)","rgb(255,153,51)","rgb(255,153,102)","rgb(255,153,153)","rgb(255,153,204)","rgb(255,153,255)","rgb(255,204,0)","rgb(255,204,51)","rgb(255,204,102)","rgb(255,204,153)","rgb(255,204,204)","rgb(255,204,255)","rgb(255,255,0)","rgb(255,255,51)","rgb(255,255,102)","rgb(255,255,153)","rgb(255,255,204)","rgb(255,255,255)"];function t$9(e){return(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function o$9(e,t=[0,0,0,1]){var A,i;return null!==(i=null===(A=e.match(/\d{1,3}/g))||void 0===A?void 0:A.map((e=>+e)))&&void 0!==i?i:t}const n$9=e=>{e.prototype.brightness=function({precision:e=4,percentage:t=!1}={}){const{r:A,g:i,b:n}=this.rgba(),a=+((.299*A+.587*i+.114*n)/255).toFixed(e);return t?100*a:a},e.prototype.luminance=function({precision:e=4,percentage:t=!1}={}){const{r:A,g:i,b:n}=this.rgba(),a=+(.2126*t$9(A)+.7152*t$9(i)+.0722*t$9(n)).toFixed(e);return t?100*a:a},e.prototype.contrast=function({bgColor:t="#fff",precision:A=4,ratio:i=!1}={}){const n=this.luminance(),a=(t instanceof e?t:new e(t)).luminance(),r=((Math.max(n,a)+.05)/(Math.min(n,a)+.05)).toFixed(A);return i?r+":1":+r},e.prototype.readableOn=function({bgColor:e="#fff",size:t="body",level:A="minimum"}={}){const i=this.contrast({bgColor:e});return"body"===t&&"enhanced"===A?i>=7:"large"===t&&"minimum"===A?i>=3:i>=4.5},e.prototype.equalTo=function(t="#fff"){const A=Object.values(this.rgba()),i=Object.values((t instanceof e?t:new e(t)).rgba());return A.toString()===i.toString()},e.prototype.isLight=function(){return this.brightness()>=.5},e.prototype.isDark=function(){return!this.isLight()},e.prototype.isCool=function(){const{h:e}=this.hsla();return 75<=e&&e<255},e.prototype.isWarm=function(){return!this.isCool()},e.prototype.isTinted=function(){return this.hsla().l>50},e.prototype.isShaded=function(){return this.hsla().l<50},e.prototype.isToned=function(){return this.hsla().s<100},e.prototype.isPureHue=function({reason:e=!0}={}){return this.isTinted()?!!e&&{pure:!1,reason:"tinted"}:this.isShaded()?!!e&&{pure:!1,reason:"shaded"}:this.isToned()?!!e&&{pure:!1,reason:"toned"}:!e||{pure:!0,reason:"N/A"}},e.prototype.closestCool=function(){const{h:e}=this.hsla();return this.isCool()?this:this.hueTo(e<75?75:254)},e.prototype.closestWarm=function(){const{h:e}=this.hsla();return this.isWarm()?this:this.hueTo(e<165?74:255)},e.prototype.closestPureHue=function(){const{h:t,a:A}=this.hsla(),{r:i,g:n,b:a,a:r}=function(e){const{h:t,s:A,l:i,a:n}=e,a=i/100,r=A/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(t/60%2-1)),l=a-s/2,c=t<60||300<=t&&t<360?s:120<=t&&t<240?0:o,d=240<=t&&t<360?0:60<=t&&t<180?s:o,h=t<120?0:180<=t&&t<300?s:o,[u,g,p]=[c,d,h].map((e=>255*(e+l)));return{r:u,g:g,b:p,a:null!=n?n:1}}({h:t,s:100,l:50,a:A});return new e({r:i,g:n,b:a,a:r})},e.prototype.closestWebSafe=function(){const{r:t,g:A,b:i,a:n}=this.rgba();let[a,r,s]=new Array(3).fill(0),o=Number.POSITIVE_INFINITY,l={r:t,g:A,b:i,a:n};for(let e=0;e{for(var A in t)r$a.o(t,A)&&!r$a.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},g={};r$a.d(g,{Z:()=>a$9});const e$9={maroon:"rgb(128,0,0)","dark red":"rgb(139,0,0)",brown:"rgb(165,42,42)",firebrick:"rgb(178,34,34)",crimson:"rgb(220,20,60)",red:"rgb(255,0,0)",tomato:"rgb(255,99,71)",coral:"rgb(255,127,80)","indian red":"rgb(205,92,92)","light coral":"rgb(240,128,128)","dark salmon":"rgb(233,150,122)",salmon:"rgb(250,128,114)","light salmon":"rgb(255,160,122)","orange red":"rgb(255,69,0)","dark orange":"rgb(255,140,0)",orange:"rgb(255,165,0)",gold:"rgb(255,215,0)","dark golden rod":"rgb(184,134,11)","golden rod":"rgb(218,165,32)","pale golden rod":"rgb(238,232,170)","dark khaki":"rgb(189,183,107)",khaki:"rgb(240,230,140)",olive:"rgb(128,128,0)",yellow:"rgb(255,255,0)","yellow green":"rgb(154,205,50)","dark olive green":"rgb(85,107,47)","olive drab":"rgb(107,142,35)","lawn green":"rgb(124,252,0)","chart reuse":"rgb(127,255,0)","green yellow":"rgb(173,255,47)","dark green":"rgb(0,100,0)",green:"rgb(0,128,0)","forest green":"rgb(34,139,34)",lime:"rgb(0,255,0)","lime green":"rgb(50,205,50)","light green":"rgb(144,238,144)","pale green":"rgb(152,251,152)","dark sea green":"rgb(143,188,143)","medium spring green":"rgb(0,250,154)","spring green":"rgb(0,255,127)","sea green":"rgb(46,139,87)","medium aqua marine":"rgb(102,205,170)","medium sea green":"rgb(60,179,113)","light sea green":"rgb(32,178,170)","dark slate gray":"rgb(47,79,79)",teal:"rgb(0,128,128)","dark cyan":"rgb(0,139,139)",cyan:"rgb(0,255,255)",aqua:"rgb(0,255,255)","light cyan":"rgb(224,255,255)","dark turquoise":"rgb(0,206,209)",turquoise:"rgb(64,224,208)","medium turquoise":"rgb(72,209,204)","pale turquoise":"rgb(175,238,238)","aqua marine":"rgb(127,255,212)","powder blue":"rgb(176,224,230)","cadet blue":"rgb(95,158,160)","steel blue":"rgb(70,130,180)","corn flower blue":"rgb(100,149,237)","deep sky blue":"rgb(0,191,255)","dodger blue":"rgb(30,144,255)","light blue":"rgb(173,216,230)","sky blue":"rgb(135,206,235)","light sky blue":"rgb(135,206,250)","midnight blue":"rgb(25,25,112)",navy:"rgb(0,0,128)","dark blue":"rgb(0,0,139)","medium blue":"rgb(0,0,205)",blue:"rgb(0,0,255)","royal blue":"rgb(65,105,225)","blue violet":"rgb(138,43,226)",indigo:"rgb(75,0,130)","dark slate blue":"rgb(72,61,139)","slate blue":"rgb(106,90,205)","medium slate blue":"rgb(123,104,238)","medium purple":"rgb(147,112,219)","dark magenta":"rgb(139,0,139)","dark violet":"rgb(148,0,211)","dark orchid":"rgb(153,50,204)","medium orchid":"rgb(186,85,211)",purple:"rgb(128,0,128)",thistle:"rgb(216,191,216)",plum:"rgb(221,160,221)",violet:"rgb(238,130,238)",magenta:"rgb(255,0,255)",fuchsia:"rgb(255,0,255)",orchid:"rgb(218,112,214)","medium violet red":"rgb(199,21,133)","pale violet red":"rgb(219,112,147)","deep pink":"rgb(255,20,147)","hot pink":"rgb(255,105,180)","light pink":"rgb(255,182,193)",pink:"rgb(255,192,203)","antique white":"rgb(250,235,215)",beige:"rgb(245,245,220)",bisque:"rgb(255,228,196)","blanched almond":"rgb(255,235,205)",wheat:"rgb(245,222,179)","corn silk":"rgb(255,248,220)","lemon chiffon":"rgb(255,250,205)","light golden rod yellow":"rgb(250,250,210)","light yellow":"rgb(255,255,224)","saddle brown":"rgb(139,69,19)",sienna:"rgb(160,82,45)",chocolate:"rgb(210,105,30)",peru:"rgb(205,133,63)","sandy brown":"rgb(244,164,96)","burly wood":"rgb(222,184,135)",tan:"rgb(210,180,140)","rosy brown":"rgb(188,143,143)",moccasin:"rgb(255,228,181)","navajo white":"rgb(255,222,173)","peach puff":"rgb(255,218,185)","misty rose":"rgb(255,228,225)","lavender blush":"rgb(255,240,245)",linen:"rgb(250,240,230)","old lace":"rgb(253,245,230)","papaya whip":"rgb(255,239,213)","sea shell":"rgb(255,245,238)","mint cream":"rgb(245,255,250)","slate gray":"rgb(112,128,144)","light slate gray":"rgb(119,136,153)","light steel blue":"rgb(176,196,222)",lavender:"rgb(230,230,250)","floral white":"rgb(255,250,240)","alice blue":"rgb(240,248,255)","ghost white":"rgb(248,248,255)",honeydew:"rgb(240,255,240)",ivory:"rgb(255,255,240)",azure:"rgb(240,255,255)",snow:"rgb(255,250,250)",black:"rgb(0,0,0)","dim gray":"rgb(105,105,105)","dim grey":"rgb(105,105,105)",gray:"rgb(128,128,128)",grey:"rgb(128,128,128)","dark gray":"rgb(169,169,169)","dark grey":"rgb(169,169,169)",silver:"rgb(192,192,192)","light gray":"rgb(211,211,211)","light grey":"rgb(211,211,211)",gainsboro:"rgb(220,220,220)",gainsborough:"rgb(220,220,220)","white smoke":"rgb(245,245,245)",white:"rgb(255,255,255)",transparent:"rgba(0,0,0,0)"};function b$2(e,t=[0,0,0,1]){var A,i;return null!==(i=null===(A=e.match(/\d{1,3}/g))||void 0===A?void 0:A.map((e=>+e)))&&void 0!==i?i:t}const a$9=e=>{e.prototype.name=function({exact:e=!0}={}){const{r:t,g:A,b:i,a:n}=this.rgba();if(0===n)return"transparent";const[a,r]=[Object.keys(e$9),Object.values(e$9)];let s;if(e){const e=this.stringRGB({alpha:!1}).replace(/\s/g,"");s=a.find((t=>e$9[t]===e))}else{let e=Number.POSITIVE_INFINITY;for(let n=0;n{for(var A in t)t$8.o(t,A)&&!t$8.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},a$8={};t$8.d(a$8,{Z:()=>d$1});const n$8=6/29,r$9=Math.pow(n$8,3),o$8=Math.pow(29/3,3),e$8={x:.96422,y:1,z:.82521};function c$8(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function s$8(e,t,A){return Math.max(e,Math.min(t,A))}function u$6(e){const t=e%360;return t<0?t+360:t}function i$8(e){const{l:t,a:A,b:i}=function(e){const t=Object.values(function(e){const[t,A,i]=c$8([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=c$8([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}(e)).map(((e,t)=>e/(100*Object.values(e$8)[t]))).map((e=>e>r$9?Math.cbrt(e):(o$8*e+16)/116));return{l:116*t[1]-16,a:500*(t[0]-t[1]),b:200*(t[1]-t[2]),alpha:e.a}}(e),n=180*Math.atan2(i,A)/Math.PI;return{l:t,c:Math.sqrt(Math.pow(A,2)+Math.pow(i,2)),h:u$6(n),a:e.a}}function h$2(e){const{l:t,c:A,h:i}=e;return function(e){const{l:t,a:A,b:i}=e,n=(t+16)/116,a=n+A/500,r=n-i/200,s=Object.values(e$8),[o,l,c]=[a,n,r].map(((e,t)=>(e>n$8?Math.pow(e,3):3*Math.pow(n$8,2)*(e-4/29))*s[t]*100));return function(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=c$8([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=c$8([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return s$8(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}({x:o,y:l,z:c,a:e.alpha})}({l:t,a:A*Math.cos(i*Math.PI/180),b:A*Math.sin(i*Math.PI/180),alpha:e.a})}const l$2=/lcha?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function p$1({l:e,c:t,h:A,a:i}){return[h$2({l:s$8(0,e,100),c:s$8(0,t,230),h:u$6(A),a:(n=i,void 0!==n?s$8(0,n,1):1)}),"lch"];var n}function f$1(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:t,c:A,h:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return p$1(e);if("string"==typeof e){l$2.lastIndex=0;const t=l$2.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?1:1===t?2.3:2===t?3.59:.01):+e));return p$1({l:e,c:A,h:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d$1=e=>{e.prototype.lcha=function(){return i$8(this.rgba())},e.prototype.stringLCH=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.lcha()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`lcha(${A}%, ${i}, ${n}, ${a})`:`lch(${A}%, ${i}, ${n})`},e.Parsers.push(f$1)};var b$1=a$8.Z,t$7={d:(e,t)=>{for(var A in t)t$7.o(t,A)&&!t$7.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$7={};t$7.d(n$7,{Z:()=>l$1});const r$8=Math.pow(6/29,3),e$7=Math.pow(29/3,3);function o$7(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function a$7(e,t,A){return Math.max(e,Math.min(t,A))}function u$5(e){const{l:t,u:A,v:i}=e,n=t>e$7*r$8?Math.pow((t+16)/116,3):t/e$7,a=(52*t/(A&&t?A+13*t*.20916005282038627:1)-1)/3,r=-5*n,s=n*(39*t/(i&&t?i+13*t*(9/18.43985):1)-5),o=a===-1/3?s-r:(s-r)/(a- -1/3);return function(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=o$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=o$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return a$7(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}({x:100*o,y:100*n,z:100*(a*o+r),a:e.a})}const c$7=/color\s*\(\s*luva?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$7({l:e,u:t,v:A,a:i}){return[u$5({l:a$7(0,e,100),u:a$7(-100,t,100),v:a$7(-100,A,100),a:(n=i,void 0!==n?a$7(0,n,1):1)}),"luv"];var n}function i$7(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:t,u:A,v:i}=e;return void 0!==t&&void 0!==A&&null!=i}(e))return s$7(e);if("string"==typeof e){c$7.lastIndex=0;const t=c$7.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?1:.01):+e));return s$7({l:e,u:A,v:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const l$1=e=>{e.prototype.luva=function(){return function(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=o$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=o$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}(e)).map((e=>e/100)),n=A/1,a=t&&A&&i?t+15*A+3*i:19,r=4*t/a,s=9*A/a;let o=n>r$8?116*Math.cbrt(n)-16:e$7*n,l=13*o*(r-.20916005282038627),c=13*o*(s-.48807338454488514);return o===Number(-0)&&(o=0),l===Number(-0)&&(l=0),c===Number(-0)&&(c=0),{l:o,u:l,v:c,a:e.a}}(this.rgba())},e.prototype.stringLUV=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.luva()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`color(luva ${A}%, ${i}%, ${n}%, ${a})`:`color(luv ${A}%, ${i}%, ${n}%)`},e.Parsers.push(i$7)};var v=n$7.Z,t$6={d:(e,t)=>{for(var A in t)t$6.o(t,A)&&!t$6.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},a$6={};t$6.d(a$6,{Z:()=>d});const n$6=6/29,r$7=Math.pow(n$6,3),e$6=Math.pow(29/3,3),o$6={x:.96422,y:1,z:.82521};function c$6(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function s$6(e,t,A){return Math.max(e,Math.min(t,A))}function u$4(e){return void 0!==e?s$6(0,e,1):1}function i$6(e){const t=Object.values(function(e){const[t,A,i]=c$6([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=c$6([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}(e)).map(((e,t)=>e/(100*Object.values(o$6)[t]))).map((e=>e>r$7?Math.cbrt(e):(e$6*e+16)/116));return{l:116*t[1]-16,a:500*(t[0]-t[1]),b:200*(t[1]-t[2]),alpha:e.a}}function l(e){const{l:t,a:A,b:i}=e,n=(t+16)/116,a=n+A/500,r=n-i/200,s=Object.values(o$6),[o,l,c]=[a,n,r].map(((e,t)=>(e>n$6?Math.pow(e,3):3*Math.pow(n$6,2)*(e-4/29))*s[t]*100));return function(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=c$6([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=c$6([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return s$6(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}({x:o,y:l,z:c,a:e.alpha})}const p=/laba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b({l:e,a:t,b:A,alpha:i}){return[l({l:s$6(0,e,100),a:s$6(-160,t,160),b:s$6(-160,A,160),alpha:u$4(i)}),"lab"]}function f(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:t,a:A,b:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return b(e);if("string"==typeof e){p.lastIndex=0;const t=p.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?1:.01):+e));return b({l:e,a:A,b:i,alpha:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d=e=>{e.prototype.laba=function(){return i$6(this.rgba())},e.prototype.stringLAB=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.laba()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`laba(${A}%, ${i}, ${n}, ${a})`:`lab(${A}%, ${i}, ${n})`},e.Parsers.push(f)};var h$1=a$6.Z,t$5={d:(e,t)=>{for(var A in t)t$5.o(t,A)&&!t$5.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$5={};function r$6(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function o$5(e,t,A){return Math.max(e,Math.min(t,A))}function e$5(e){const{u:t,v:A,w:i}=e,[n,a,r]=r$6([[1.5,0,0],[0,1,0],[1.5,-3,2]],[t,A,i]);return function(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=r$6([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=r$6([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return o$5(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}({x:n,y:a,z:r,a:e.a})}t$5.d(n$5,{Z:()=>s$5});const a$5=/color\s*\(\s*uvwa?\s*(\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function u$3({u:e,v:t,w:A,a:i}){return[e$5({u:o$5(0,e,200/3*.96422),v:o$5(0,t,100),w:o$5(-48.211,A,191.2605),a:(n=i,void 0!==n?o$5(0,n,1):1)}),"uvw"];var n}function c$5(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{u:t,v:A,w:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return u$3(e);if("string"==typeof e){a$5.lastIndex=0;const t=a$5.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map((e=>e.includes("%")?.01*+e.slice(0,-1):+e));return u$3({u:e,v:A,w:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const s$5=e=>{e.prototype.uvwa=function(){return function(e){const{x:t,y:A,z:i}=function(e){const[t,A,i]=r$6([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=r$6([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}(e),[n,a,r]=r$6([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[t,A,i]);return{u:n,v:a,w:r,a:e.a}}(this.rgba())},e.prototype.stringUVW=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.uvwa()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`color(uvwa ${A}, ${i}, ${n}, ${a})`:`color(uvw ${A}, ${i}, ${n})`},e.Parsers.push(c$5)};var i$5=n$5.Z,t$4={d:(e,t)=>{for(var A in t)t$4.o(t,A)&&!t$4.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$4={};function r$5(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function o$4(e,t,A){return Math.max(e,Math.min(t,A))}function e$4(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=r$5([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=r$5([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return o$4(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}t$4.d(n$4,{Z:()=>u$2});const a$4=/color\s*\(\s*xyza?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$4({x:e,y:t,z:A,a:i}){return[e$4({x:o$4(0,e,96.422),y:o$4(0,t,100),z:o$4(0,A,82.521),a:(n=i,void 0!==n?o$4(0,n,1):1)}),"xyz"];var n}function c$4(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{x:t,y:A,z:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return s$4(e);if("string"==typeof e){a$4.lastIndex=0;const t=a$4.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map((e=>e.includes("%")?.01*+e.slice(0,-1):+e));return s$4({x:e,y:A,z:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$2=e=>{e.prototype.xyza=function(){return function(e){const[t,A,i]=r$5([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=r$5([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}(this.rgba())},e.prototype.stringXYZ=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.xyza()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`color(xyza ${A}, ${i}, ${n}, ${a})`:`color(xyz ${A}, ${i}, ${n})`},e.Parsers.push(c$4)};var i$4=n$4.Z,t$3={d:(e,t)=>{for(var A in t)t$3.o(t,A)&&!t$3.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$3={};function r$4(e,t,A){return Math.max(e,Math.min(t,A))}function a$3(e){const t=e%360;return t<0?t+360:t}function o$3(e){const{h:t,a:A}=function(e){var t;const{Cmin:A,Cmax:i,H:n,delta:a}=function(e){const[t,A,i]=Object.values(e).map((e=>e/255)),n=Math.max(t,A,i),a=Math.min(t,A,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===t?(A-i)/r%6:n===A?(i-t)/r+2:(t-A)/r+4,delta:r}}(e),r=(i+A)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:a$3(60*n),s:100*s,l:100*r,a:null!==(t=e.a)&&void 0!==t?t:1}}(e),{r:i,g:n,b:a}=e;return{h:t,w:Math.min(i,n,a)/2.55,b:100*(1-Math.max(i,n,a)/255),a:A}}function e$3(e){const{h:t,b:A,w:i,a:n}=e;return function(e){const{h:t,s:A,v:i,a:n}=e,a=i/100,r=a*(A/100),s=r*(1-Math.abs(t/60%2-1)),o=a-r,l=t<60||300<=t&&t<360?r:120<=t&&t<240?0:s,c=240<=t&&t<360?0:60<=t&&t<180?r:s,d=t<120?0:180<=t&&t<300?r:s,[h,u,g]=[l,c,d].map((e=>255*(e+o)));return{r:h,g:u,b:g,a:null!=n?n:1}}({h:t,s:100===A?0:100-i/(100-A)*100,v:100-A,a:n})}t$3.d(n$3,{Z:()=>u$1});const s$3=/hwba?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function i$3({h:e,w:t,b:A,a:i}){return[e$3({h:a$3(e),w:r$4(0,t,100),b:r$4(0,A,100),a:(n=i,void 0!==n?r$4(0,n,1):1)}),"hwb"];var n}function c$3(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:t,w:A,b:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return i$3(e);if("string"==typeof e){s$3.lastIndex=0;const t=s$3.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?3.59:t<3?1:.01):+e));return i$3({h:e,w:A,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$1=e=>{e.prototype.hwba=function(){return o$3(this.rgba())},e.prototype.stringHWB=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.hwba()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`hwba(${a$3(A)}, ${i}%, ${n}%, ${a})`:`hwb(${a$3(A)}, ${i}%, ${n}%)`},e.Parsers.push(c$3)};var h=n$3.Z,t$2={d:(e,t)=>{for(var A in t)t$2.o(t,A)&&!t$2.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$2={};function r$3(e,t,A){return Math.max(e,Math.min(t,A))}function s$2(e){const t=e%360;return t<0?t+360:t}function e$2(e){const{h:t,s:A,v:i,a:n}=e,a=i/100,r=a*(A/100),s=r*(1-Math.abs(t/60%2-1)),o=a-r,l=t<60||300<=t&&t<360?r:120<=t&&t<240?0:s,c=240<=t&&t<360?0:60<=t&&t<180?r:s,d=t<120?0:180<=t&&t<300?r:s,[h,u,g]=[l,c,d].map((e=>255*(e+o)));return{r:h,g:u,b:g,a:null!=n?n:1}}t$2.d(n$2,{Z:()=>c$2});const a$2=/hsva?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o$2({h:e,s:t,v:A,a:i}){return[e$2({h:s$2(e),s:r$3(0,t,100),v:r$3(0,A,100),a:(n=i,void 0!==n?r$3(0,n,1):1)}),"hsv"];var n}function i$2(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:t,s:A,v:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return o$2(e);if("string"==typeof e){a$2.lastIndex=0;const t=a$2.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?3.59:t<3?1:.01):+e));return o$2({h:e,s:A,v:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const c$2=e=>{e.prototype.hsva=function(){return function(e){var t;const{Cmax:A,H:i,delta:n}=function(e){const[t,A,i]=Object.values(e).map((e=>e/255)),n=Math.max(t,A,i),a=Math.min(t,A,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===t?(A-i)/r%6:n===A?(i-t)/r+2:(t-A)/r+4,delta:r}}(e),a=0===n?0:n/A;return{h:s$2(60*i),s:100*a,v:100*A,a:null!==(t=e.a)&&void 0!==t?t:1}}(this.rgba())},e.prototype.stringHSV=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.hsva()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`hsva(${s$2(A)}, ${i}%, ${n}%, ${a})`:`hsv(${s$2(A)}, ${i}%, ${n}%)`},e.Parsers.push(i$2)};var u=n$2.Z,t$1={d:(e,t)=>{for(var A in t)t$1.o(t,A)&&!t$1.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},r$2={};function n$1(e,t,A){return Math.max(e,Math.min(t,A))}function o$1(e){let{r:t,y:A,b:i}=e;const n=Math.min(t,A,i);[t,A,i]=[t,A,i].map((e=>e-n));const a=Math.max(t,A,i);let r=Math.min(A,i);A-=r,i-=r,i&&r&&(i*=2,r*=2),t+=A,r+=A;const s=Math.max(t,r,i);if(s){const e=a/s;[t,r,i]=[t,r,i].map((t=>t*e))}return[t,r,i]=[t,r,i].map((e=>e+n)),{r:t,g:r,b:i,a:e.a}}t$1.d(r$2,{Z:()=>i$1});const a$1=/color\s*\(\s*ryba?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function e$1({r:e,y:t,b:A,a:i}){return[o$1({r:n$1(0,e,255),y:n$1(0,t,255),b:n$1(0,A,255),a:(n=i,void 0!==n?n$1(0,n,1):1)}),"ryb"];var n}function s$1(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:t,y:A,b:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return e$1(e);if("string"==typeof e){a$1.lastIndex=0;const t=a$1.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?2.55:.01):+e));return e$1({r:e,y:A,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i$1=e=>{e.prototype.ryba=function(){return function(e){let{r:t,g:A,b:i}=e;const n=Math.min(t,A,i);[t,A,i]=[t,A,i].map((e=>e-n));const a=Math.max(t,A,i);let r=Math.min(t,A);t-=r,A-=r,i&&A&&(i/=2,A/=2),r+=A,i+=A;const s=Math.max(t,r,i);if(s){const e=a/s;[t,r,i]=[t,r,i].map((t=>t*e))}return[t,r,i]=[t,r,i].map((e=>e+n)),{r:t,y:r,b:i,a:e.a}}(this.rgba())},e.prototype.stringRYB=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.ryba()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`color(ryba ${A}, ${i}, ${n}, ${a})`:`color(ryb ${A}, ${i}, ${n})`},e.Parsers.push(s$1)};var c$1=r$2.Z,t={d:(e,A)=>{for(var i in A)t.o(A,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:A[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n={};function e(e,t,A){return Math.max(e,Math.min(t,A))}function r$1(e){const{c:t,m:A,y:i,k:n,a:a}=e,[r,s,o]=[t,A,i].map((e=>255*(1-e/100)*(1-n/100)));return{r:r,g:s,b:o,a:a}}t.d(n,{Z:()=>i});const c=/device-cmyka?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?),?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o({c:t,m:A,y:i,k:n,a:a}){return[r$1({c:e(0,t,100),m:e(0,A,100),y:e(0,i,100),k:e(0,n,100),a:(r=a,void 0!==r?e(0,r,1):1)}),"cmyk"];var r}function a(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{c:t,m:A,y:i,k:n}=e;return void 0!==t&&void 0!==A&&void 0!==i&&void 0!==n}(e))return o(e);if("string"==typeof e){c.lastIndex=0;const t=c.exec(e);if(t){const[e,A,i,n,a]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<4?1:.01):+e));return o({c:e,m:A,y:i,k:n,a:a})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i=e=>{e.prototype.cmyka=function(){return function(e){const{r:t,g:A,b:i,a:n}=e,a=1-Math.max(t,A,i)/255,[r,s,o]=1===a?[0,0,0]:[t,A,i].map((e=>100*(1-e/255-a)/(1-a)));return{c:r,m:s,y:o,k:100*a,a:n}}(this.rgba())},e.prototype.stringCMYK=function({alpha:e=!0,precision:t=[0,0,0,0,1]}={}){const[A,i,n,a,r]=Object.values(this.cmyka()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`device-cmyk(${A}, ${i}, ${n}, ${a}, ${r})`:`device-cmyk(${A}, ${i}, ${n}, ${a})`},e.Parsers.push(a)};var s=n.Z;class ExcalidrawScene{constructor(e=[]){this.type="excalidraw",this.version=2,this.source=GITHUB_RELEASES+PLUGIN_VERSION,this.elements=[],this.elements=e}toExJSON(){return Object.assign(Object.assign({},this),{elements:this.elements.map((e=>Object.assign({},e)))})}}var ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array;function create$1(){var e=new ARRAY_TYPE(16);return ARRAY_TYPE!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function clone(e){var t=new ARRAY_TYPE(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function fromValues$1(e,t,A,i,n,a,r,s,o,l,c,d,h,u,g,p){var m=new ARRAY_TYPE(16);return m[0]=e,m[1]=t,m[2]=A,m[3]=i,m[4]=n,m[5]=a,m[6]=r,m[7]=s,m[8]=o,m[9]=l,m[10]=c,m[11]=d,m[12]=h,m[13]=u,m[14]=g,m[15]=p,m}function multiply(e,t,A){var i=t[0],n=t[1],a=t[2],r=t[3],s=t[4],o=t[5],l=t[6],c=t[7],d=t[8],h=t[9],u=t[10],g=t[11],p=t[12],m=t[13],w=t[14],f=t[15],B=A[0],E=A[1],b=A[2],v=A[3];return e[0]=B*i+E*s+b*d+v*p,e[1]=B*n+E*o+b*h+v*m,e[2]=B*a+E*l+b*u+v*w,e[3]=B*r+E*c+b*g+v*f,B=A[4],E=A[5],b=A[6],v=A[7],e[4]=B*i+E*s+b*d+v*p,e[5]=B*n+E*o+b*h+v*m,e[6]=B*a+E*l+b*u+v*w,e[7]=B*r+E*c+b*g+v*f,B=A[8],E=A[9],b=A[10],v=A[11],e[8]=B*i+E*s+b*d+v*p,e[9]=B*n+E*o+b*h+v*m,e[10]=B*a+E*l+b*u+v*w,e[11]=B*r+E*c+b*g+v*f,B=A[12],E=A[13],b=A[14],v=A[15],e[12]=B*i+E*s+b*d+v*p,e[13]=B*n+E*o+b*h+v*m,e[14]=B*a+E*l+b*u+v*w,e[15]=B*r+E*c+b*g+v*f,e}function create(){var e=new ARRAY_TYPE(3);return ARRAY_TYPE!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function fromValues(e,t,A){var i=new ARRAY_TYPE(3);return i[0]=e,i[1]=t,i[2]=A,i}function transformMat4(e,t,A){var i=t[0],n=t[1],a=t[2],r=A[3]*i+A[7]*n+A[11]*a+A[15];return r=r||1,e[0]=(A[0]*i+A[4]*n+A[8]*a+A[12])/r,e[1]=(A[1]*i+A[5]*n+A[9]*a+A[13])/r,e[2]=(A[2]*i+A[6]*n+A[10]*a+A[14])/r,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)}),create();const random=new Random(Date.now()),randomInteger=()=>Math.floor(random.next()*2**31),randomId=()=>nanoid$1();function dimensionsFromPoints(e){const t=e.map((([e])=>e)),A=e.map((([,e])=>e)),i=Math.min(...t),n=Math.min(...A);return[Math.max(...t)-i,Math.max(...A)-n]}function getWindingOrder(e){return e.reduce(((e,[t,A],i,n)=>{const a=n[i+1];return((a?a[0]:0)-t)*((a?a[1]:0)+A)+e}),0)>0?"clockwise":"counterclockwise"}var chromaExports={},chroma$1={get exports(){return chromaExports},set exports(e){chromaExports=e}};chroma$1.exports=function(){for(var e=function(e,t,A){return void 0===t&&(t=0),void 0===A&&(A=1),eA?A:e},t=e,A={},i=0,n=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];i255)&&(e._clipped=!0),e[A]=t(e[A],0,255)):3===A&&(e[A]=t(e[A],0,1));return e},limit:e,type:r,unpack:function(e,t){return void 0===t&&(t=null),e.length>=3?Array.prototype.slice.call(e):"object"==s(e[0])&&t?t.split("").filter((function(t){return void 0!==e[0][t]})).map((function(t){return e[0][t]})):e[0]},last:function(e){if(e.length<2)return null;var t=e.length-1;return"string"==o(e[t])?e[t].toLowerCase():null},PI:l,TWOPI:2*l,PITHIRD:l/3,DEG2RAD:l/180,RAD2DEG:180/l},d={format:{},autodetect:[]},h=c.last,u=c.clip_rgb,g=c.type,p=d,m=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=this;if("object"===g(e[0])&&e[0].constructor&&e[0].constructor===this.constructor)return e[0];var i=h(e),n=!1;if(!i){n=!0,p.sorted||(p.autodetect=p.autodetect.sort((function(e,t){return t.p-e.p})),p.sorted=!0);for(var a=0,r=p.autodetect;a4?e[4]:1;return 1===a?[0,0,0,r]:[A>=1?0:255*(1-A)*(1-a),i>=1?0:255*(1-i)*(1-a),n>=1?0:255*(1-n)*(1-a),r]},F=B,x=w,S=d,T=c.unpack,I=c.type,U=v;x.prototype.cmyk=function(){return U(this._rgb)},F.cmyk=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(x,[null].concat(e,["cmyk"])))},S.format.cmyk=y,S.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=T(e,"cmyk"),"array"===I(e)&&4===e.length)return"cmyk"}});var Q=c.unpack,k=c.last,O=function(e){return Math.round(100*e)/100},M=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=Q(e,"hsla"),i=k(e)||"lsa";return A[0]=O(A[0]||0),A[1]=O(100*A[1])+"%",A[2]=O(100*A[2])+"%","hsla"===i||A.length>3&&A[3]<1?(A[3]=A.length>3?A[3]:1,i="hsla"):A.length=3,i+"("+A.join(",")+")"},L=c.unpack,D=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=(e=L(e,"rgba"))[0],i=e[1],n=e[2];A/=255,i/=255,n/=255;var a,r,s=Math.min(A,i,n),o=Math.max(A,i,n),l=(o+s)/2;return o===s?(a=0,r=Number.NaN):a=l<.5?(o-s)/(o+s):(o-s)/(2-o-s),A==o?r=(i-n)/(o-s):i==o?r=2+(n-A)/(o-s):n==o&&(r=4+(A-i)/(o-s)),(r*=60)<0&&(r+=360),e.length>3&&void 0!==e[3]?[r,a,l,e[3]]:[r,a,l]},N=c.unpack,H=c.last,R=M,P=D,V=Math.round,K=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=N(e,"rgba"),i=H(e)||"rgb";return"hsl"==i.substr(0,3)?R(P(A),i):(A[0]=V(A[0]),A[1]=V(A[1]),A[2]=V(A[2]),("rgba"===i||A.length>3&&A[3]<1)&&(A[3]=A.length>3?A[3]:1,i="rgba"),i+"("+A.slice(0,"rgb"===i?3:4).join(",")+")")},G=c.unpack,W=Math.round,X=function(){for(var e,t=[],A=arguments.length;A--;)t[A]=arguments[A];var i,n,a,r=(t=G(t,"hsl"))[0],s=t[1],o=t[2];if(0===s)i=n=a=255*o;else{var l=[0,0,0],c=[0,0,0],d=o<.5?o*(1+s):o+s-o*s,h=2*o-d,u=r/360;l[0]=u+1/3,l[1]=u,l[2]=u-1/3;for(var g=0;g<3;g++)l[g]<0&&(l[g]+=1),l[g]>1&&(l[g]-=1),6*l[g]<1?c[g]=h+6*(d-h)*l[g]:2*l[g]<1?c[g]=d:3*l[g]<2?c[g]=h+(d-h)*(2/3-l[g])*6:c[g]=h;i=(e=[W(255*c[0]),W(255*c[1]),W(255*c[2])])[0],n=e[1],a=e[2]}return t.length>3?[i,n,a,t[3]]:[i,n,a,1]},z=X,Y=d,j=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,J=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,Z=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,q=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,_=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,$=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,ee=Math.round,te=function(e){var t;if(e=e.toLowerCase().trim(),Y.format.named)try{return Y.format.named(e)}catch(e){}if(t=e.match(j)){for(var A=t.slice(1,4),i=0;i<3;i++)A[i]=+A[i];return A[3]=1,A}if(t=e.match(J)){for(var n=t.slice(1,5),a=0;a<4;a++)n[a]=+n[a];return n}if(t=e.match(Z)){for(var r=t.slice(1,4),s=0;s<3;s++)r[s]=ee(2.55*r[s]);return r[3]=1,r}if(t=e.match(q)){for(var o=t.slice(1,5),l=0;l<3;l++)o[l]=ee(2.55*o[l]);return o[3]=+o[3],o}if(t=e.match(_)){var c=t.slice(1,4);c[1]*=.01,c[2]*=.01;var d=z(c);return d[3]=1,d}if(t=e.match($)){var h=t.slice(1,4);h[1]*=.01,h[2]*=.01;var u=z(h);return u[3]=+t[4],u}};te.test=function(e){return j.test(e)||J.test(e)||Z.test(e)||q.test(e)||_.test(e)||$.test(e)};var Ae=B,ie=w,ne=d,ae=c.type,re=K,se=te;ie.prototype.css=function(e){return re(this._rgb,e)},Ae.css=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(ie,[null].concat(e,["css"])))},ne.format.css=se,ne.autodetect.push({p:5,test:function(e){for(var t=[],A=arguments.length-1;A-- >0;)t[A]=arguments[A+1];if(!t.length&&"string"===ae(e)&&se.test(e))return"css"}});var oe=w,le=B,ce=c.unpack;d.format.gl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=ce(e,"rgba");return A[0]*=255,A[1]*=255,A[2]*=255,A},le.gl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(oe,[null].concat(e,["gl"])))},oe.prototype.gl=function(){var e=this._rgb;return[e[0]/255,e[1]/255,e[2]/255,e[3]]};var de=c.unpack,he=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A,i=de(e,"rgb"),n=i[0],a=i[1],r=i[2],s=Math.min(n,a,r),o=Math.max(n,a,r),l=o-s,c=100*l/255,d=s/(255-l)*100;return 0===l?A=Number.NaN:(n===o&&(A=(a-r)/l),a===o&&(A=2+(r-n)/l),r===o&&(A=4+(n-a)/l),(A*=60)<0&&(A+=360)),[A,c,d]},ue=c.unpack,ge=Math.floor,pe=function(){for(var e,t,A,i,n,a,r=[],s=arguments.length;s--;)r[s]=arguments[s];var o,l,c,d=(r=ue(r,"hcg"))[0],h=r[1],u=r[2];u*=255;var g=255*h;if(0===h)o=l=c=u;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=ge(d/=60),m=d-p,w=u*(1-h),f=w+g*(1-m),B=w+g*m,E=w+g;switch(p){case 0:o=(e=[E,B,w])[0],l=e[1],c=e[2];break;case 1:o=(t=[f,E,w])[0],l=t[1],c=t[2];break;case 2:o=(A=[w,E,B])[0],l=A[1],c=A[2];break;case 3:o=(i=[w,f,E])[0],l=i[1],c=i[2];break;case 4:o=(n=[B,w,E])[0],l=n[1],c=n[2];break;case 5:o=(a=[E,w,f])[0],l=a[1],c=a[2]}}return[o,l,c,r.length>3?r[3]:1]},me=c.unpack,we=c.type,fe=B,Be=w,Ee=d,be=he;Be.prototype.hcg=function(){return be(this._rgb)},fe.hcg=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(Be,[null].concat(e,["hcg"])))},Ee.format.hcg=pe,Ee.autodetect.push({p:1,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=me(e,"hcg"),"array"===we(e)&&3===e.length)return"hcg"}});var ve=c.unpack,Ce=c.last,ye=Math.round,Fe=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=ve(e,"rgba"),i=A[0],n=A[1],a=A[2],r=A[3],s=Ce(e)||"auto";void 0===r&&(r=1),"auto"===s&&(s=r<1?"rgba":"rgb");var o="000000"+((i=ye(i))<<16|(n=ye(n))<<8|(a=ye(a))).toString(16);o=o.substr(o.length-6);var l="0"+ye(255*r).toString(16);switch(l=l.substr(l.length-2),s.toLowerCase()){case"rgba":return"#"+o+l;case"argb":return"#"+l+o;default:return"#"+o}},xe=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Se=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,Te=function(e){if(e.match(xe)){4!==e.length&&7!==e.length||(e=e.substr(1)),3===e.length&&(e=(e=e.split(""))[0]+e[0]+e[1]+e[1]+e[2]+e[2]);var t=parseInt(e,16);return[t>>16,t>>8&255,255&t,1]}if(e.match(Se)){5!==e.length&&9!==e.length||(e=e.substr(1)),4===e.length&&(e=(e=e.split(""))[0]+e[0]+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]);var A=parseInt(e,16);return[A>>24&255,A>>16&255,A>>8&255,Math.round((255&A)/255*100)/100]}throw new Error("unknown hex color: "+e)},Ie=B,Ue=w,Qe=c.type,ke=d,Oe=Fe;Ue.prototype.hex=function(e){return Oe(this._rgb,e)},Ie.hex=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(Ue,[null].concat(e,["hex"])))},ke.format.hex=Te,ke.autodetect.push({p:4,test:function(e){for(var t=[],A=arguments.length-1;A-- >0;)t[A]=arguments[A+1];if(!t.length&&"string"===Qe(e)&&[3,4,5,6,7,8,9].indexOf(e.length)>=0)return"hex"}});var Me=c.unpack,Le=c.TWOPI,De=Math.min,Ne=Math.sqrt,He=Math.acos,Re=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A,i=Me(e,"rgb"),n=i[0],a=i[1],r=i[2],s=De(n/=255,a/=255,r/=255),o=(n+a+r)/3,l=o>0?1-s/o:0;return 0===l?A=NaN:(A=(n-a+(n-r))/2,A/=Ne((n-a)*(n-a)+(n-r)*(a-r)),A=He(A),r>a&&(A=Le-A),A/=Le),[360*A,l,o]},Pe=c.unpack,Ve=c.limit,Ke=c.TWOPI,Ge=c.PITHIRD,We=Math.cos,Xe=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A,i,n,a=(e=Pe(e,"hsi"))[0],r=e[1],s=e[2];return isNaN(a)&&(a=0),isNaN(r)&&(r=0),a>360&&(a-=360),a<0&&(a+=360),(a/=360)<1/3?i=1-((n=(1-r)/3)+(A=(1+r*We(Ke*a)/We(Ge-Ke*a))/3)):a<2/3?n=1-((A=(1-r)/3)+(i=(1+r*We(Ke*(a-=1/3))/We(Ge-Ke*a))/3)):A=1-((i=(1-r)/3)+(n=(1+r*We(Ke*(a-=2/3))/We(Ge-Ke*a))/3)),[255*(A=Ve(s*A*3)),255*(i=Ve(s*i*3)),255*(n=Ve(s*n*3)),e.length>3?e[3]:1]},ze=c.unpack,Ye=c.type,je=B,Je=w,Ze=d,qe=Re;Je.prototype.hsi=function(){return qe(this._rgb)},je.hsi=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(Je,[null].concat(e,["hsi"])))},Ze.format.hsi=Xe,Ze.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=ze(e,"hsi"),"array"===Ye(e)&&3===e.length)return"hsi"}});var _e=c.unpack,$e=c.type,et=B,tt=w,At=d,it=D;tt.prototype.hsl=function(){return it(this._rgb)},et.hsl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(tt,[null].concat(e,["hsl"])))},At.format.hsl=X,At.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=_e(e,"hsl"),"array"===$e(e)&&3===e.length)return"hsl"}});var nt=c.unpack,at=Math.min,rt=Math.max,st=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A,i,n,a=(e=nt(e,"rgb"))[0],r=e[1],s=e[2],o=at(a,r,s),l=rt(a,r,s),c=l-o;return n=l/255,0===l?(A=Number.NaN,i=0):(i=c/l,a===l&&(A=(r-s)/c),r===l&&(A=2+(s-a)/c),s===l&&(A=4+(a-r)/c),(A*=60)<0&&(A+=360)),[A,i,n]},ot=c.unpack,lt=Math.floor,ct=function(){for(var e,t,A,i,n,a,r=[],s=arguments.length;s--;)r[s]=arguments[s];var o,l,c,d=(r=ot(r,"hsv"))[0],h=r[1],u=r[2];if(u*=255,0===h)o=l=c=u;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var g=lt(d/=60),p=d-g,m=u*(1-h),w=u*(1-h*p),f=u*(1-h*(1-p));switch(g){case 0:o=(e=[u,f,m])[0],l=e[1],c=e[2];break;case 1:o=(t=[w,u,m])[0],l=t[1],c=t[2];break;case 2:o=(A=[m,u,f])[0],l=A[1],c=A[2];break;case 3:o=(i=[m,w,u])[0],l=i[1],c=i[2];break;case 4:o=(n=[f,m,u])[0],l=n[1],c=n[2];break;case 5:o=(a=[u,m,w])[0],l=a[1],c=a[2]}}return[o,l,c,r.length>3?r[3]:1]},dt=c.unpack,ht=c.type,ut=B,gt=w,pt=d,mt=st;gt.prototype.hsv=function(){return mt(this._rgb)},ut.hsv=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(gt,[null].concat(e,["hsv"])))},pt.format.hsv=ct,pt.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=dt(e,"hsv"),"array"===ht(e)&&3===e.length)return"hsv"}});var wt={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ft=wt,Bt=c.unpack,Et=Math.pow,bt=function(e){return(e/=255)<=.04045?e/12.92:Et((e+.055)/1.055,2.4)},vt=function(e){return e>ft.t3?Et(e,1/3):e/ft.t2+ft.t0},Ct=function(e,t,A){return e=bt(e),t=bt(t),A=bt(A),[vt((.4124564*e+.3575761*t+.1804375*A)/ft.Xn),vt((.2126729*e+.7151522*t+.072175*A)/ft.Yn),vt((.0193339*e+.119192*t+.9503041*A)/ft.Zn)]},yt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=Bt(e,"rgb"),i=A[0],n=A[1],a=A[2],r=Ct(i,n,a),s=r[0],o=r[1],l=116*o-16;return[l<0?0:l,500*(s-o),200*(o-r[2])]},Ft=wt,xt=c.unpack,St=Math.pow,Tt=function(e){return 255*(e<=.00304?12.92*e:1.055*St(e,1/2.4)-.055)},It=function(e){return e>Ft.t1?e*e*e:Ft.t2*(e-Ft.t0)},Ut=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A,i,n,a=(e=xt(e,"lab"))[0],r=e[1],s=e[2];return i=(a+16)/116,A=isNaN(r)?i:i+r/500,n=isNaN(s)?i:i-s/200,i=Ft.Yn*It(i),A=Ft.Xn*It(A),n=Ft.Zn*It(n),[Tt(3.2404542*A-1.5371385*i-.4985314*n),Tt(-.969266*A+1.8760108*i+.041556*n),Tt(.0556434*A-.2040259*i+1.0572252*n),e.length>3?e[3]:1]},Qt=c.unpack,kt=c.type,Ot=B,Mt=w,Lt=d,Dt=yt;Mt.prototype.lab=function(){return Dt(this._rgb)},Ot.lab=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(Mt,[null].concat(e,["lab"])))},Lt.format.lab=Ut,Lt.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=Qt(e,"lab"),"array"===kt(e)&&3===e.length)return"lab"}});var Nt=c.unpack,Ht=c.RAD2DEG,Rt=Math.sqrt,Pt=Math.atan2,Vt=Math.round,Kt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=Nt(e,"lab"),i=A[0],n=A[1],a=A[2],r=Rt(n*n+a*a),s=(Pt(a,n)*Ht+360)%360;return 0===Vt(1e4*r)&&(s=Number.NaN),[i,r,s]},Gt=c.unpack,Wt=yt,Xt=Kt,zt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=Gt(e,"rgb"),i=A[0],n=A[1],a=A[2],r=Wt(i,n,a),s=r[0],o=r[1],l=r[2];return Xt(s,o,l)},Yt=c.unpack,jt=c.DEG2RAD,Jt=Math.sin,Zt=Math.cos,qt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=Yt(e,"lch"),i=A[0],n=A[1],a=A[2];return isNaN(a)&&(a=0),[i,Zt(a*=jt)*n,Jt(a)*n]},_t=c.unpack,$t=qt,eA=Ut,tA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=(e=_t(e,"lch"))[0],i=e[1],n=e[2],a=$t(A,i,n),r=a[0],s=a[1],o=a[2],l=eA(r,s,o);return[l[0],l[1],l[2],e.length>3?e[3]:1]},AA=c.unpack,iA=tA,nA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=AA(e,"hcl").reverse();return iA.apply(void 0,A)},aA=c.unpack,rA=c.type,sA=B,oA=w,lA=d,cA=zt;oA.prototype.lch=function(){return cA(this._rgb)},oA.prototype.hcl=function(){return cA(this._rgb).reverse()},sA.lch=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(oA,[null].concat(e,["lch"])))},sA.hcl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(oA,[null].concat(e,["hcl"])))},lA.format.lch=tA,lA.format.hcl=nA,["lch","hcl"].forEach((function(e){return lA.autodetect.push({p:2,test:function(){for(var t=[],A=arguments.length;A--;)t[A]=arguments[A];if(t=aA(t,e),"array"===rA(t)&&3===t.length)return e}})}));var dA={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},hA=d,uA=c.type,gA=dA,pA=Te,mA=Fe;w.prototype.name=function(){for(var e=mA(this._rgb,"rgb"),t=0,A=Object.keys(gA);t0;)t[A]=arguments[A+1];if(!t.length&&"string"===uA(e)&&gA[e.toLowerCase()])return"named"}});var wA=c.unpack,fA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=wA(e,"rgb");return(A[0]<<16)+(A[1]<<8)+A[2]},BA=c.type,EA=function(e){if("number"==BA(e)&&e>=0&&e<=16777215)return[e>>16,e>>8&255,255&e,1];throw new Error("unknown num color: "+e)},bA=B,vA=w,CA=d,yA=c.type,FA=fA;vA.prototype.num=function(){return FA(this._rgb)},bA.num=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(vA,[null].concat(e,["num"])))},CA.format.num=EA,CA.autodetect.push({p:5,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(1===e.length&&"number"===yA(e[0])&&e[0]>=0&&e[0]<=16777215)return"num"}});var xA=B,SA=w,TA=d,IA=c.unpack,UA=c.type,QA=Math.round;SA.prototype.rgb=function(e){return void 0===e&&(e=!0),!1===e?this._rgb.slice(0,3):this._rgb.slice(0,3).map(QA)},SA.prototype.rgba=function(e){return void 0===e&&(e=!0),this._rgb.slice(0,4).map((function(t,A){return A<3?!1===e?t:QA(t):t}))},xA.rgb=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(SA,[null].concat(e,["rgb"])))},TA.format.rgb=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=IA(e,"rgba");return void 0===A[3]&&(A[3]=1),A},TA.autodetect.push({p:3,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=IA(e,"rgba"),"array"===UA(e)&&(3===e.length||4===e.length&&"number"==UA(e[3])&&e[3]>=0&&e[3]<=1))return"rgb"}});var kA=Math.log,OA=function(e){var t,A,i,n=e/100;return n<66?(t=255,A=n<6?0:-155.25485562709179-.44596950469579133*(A=n-2)+104.49216199393888*kA(A),i=n<20?0:.8274096064007395*(i=n-10)-254.76935184120902+115.67994401066147*kA(i)):(t=351.97690566805693+.114206453784165*(t=n-55)-40.25366309332127*kA(t),A=325.4494125711974+.07943456536662342*(A=n-50)-28.0852963507957*kA(A),i=255),[t,A,i,1]},MA=OA,LA=c.unpack,DA=Math.round,NA=B,HA=w,RA=d,PA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];for(var A,i=LA(e,"rgb"),n=i[0],a=i[2],r=1e3,s=4e4,o=.4;s-r>o;){var l=MA(A=.5*(s+r));l[2]/l[0]>=a/n?s=A:r=A}return DA(A)};HA.prototype.temp=HA.prototype.kelvin=HA.prototype.temperature=function(){return PA(this._rgb)},NA.temp=NA.kelvin=NA.temperature=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(HA,[null].concat(e,["temp"])))},RA.format.temp=RA.format.kelvin=RA.format.temperature=OA;var VA=c.unpack,KA=Math.cbrt,GA=Math.pow,WA=Math.sign,XA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=VA(e,"rgb"),i=A[0],n=A[1],a=A[2],r=[zA(i/255),zA(n/255),zA(a/255)],s=r[0],o=r[1],l=r[2],c=KA(.4122214708*s+.5363325363*o+.0514459929*l),d=KA(.2119034982*s+.6806995451*o+.1073969566*l),h=KA(.0883024619*s+.2817188376*o+.6299787005*l);return[.2104542553*c+.793617785*d-.0040720468*h,1.9779984951*c-2.428592205*d+.4505937099*h,.0259040371*c+.7827717662*d-.808675766*h]};function zA(e){var t=Math.abs(e);return t<.04045?e/12.92:(WA(e)||1)*GA((t+.055)/1.055,2.4)}var YA=c.unpack,jA=Math.pow,JA=Math.sign,ZA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=(e=YA(e,"lab"))[0],i=e[1],n=e[2],a=jA(A+.3963377774*i+.2158037573*n,3),r=jA(A-.1055613458*i-.0638541728*n,3),s=jA(A-.0894841775*i-1.291485548*n,3);return[255*qA(4.0767416621*a-3.3077115913*r+.2309699292*s),255*qA(-1.2684380046*a+2.6097574011*r-.3413193965*s),255*qA(-.0041960863*a-.7034186147*r+1.707614701*s),e.length>3?e[3]:1]};function qA(e){var t=Math.abs(e);return t>.0031308?(JA(e)||1)*(1.055*jA(t,1/2.4)-.055):12.92*e}var _A=c.unpack,$A=c.type,ei=B,ti=w,Ai=d,ii=XA;ti.prototype.oklab=function(){return ii(this._rgb)},ei.oklab=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(ti,[null].concat(e,["oklab"])))},Ai.format.oklab=ZA,Ai.autodetect.push({p:3,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=_A(e,"oklab"),"array"===$A(e)&&3===e.length)return"oklab"}});var ni=c.unpack,ai=XA,ri=Kt,si=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=ni(e,"rgb"),i=A[0],n=A[1],a=A[2],r=ai(i,n,a),s=r[0],o=r[1],l=r[2];return ri(s,o,l)},oi=c.unpack,li=qt,ci=ZA,di=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=(e=oi(e,"lch"))[0],i=e[1],n=e[2],a=li(A,i,n),r=a[0],s=a[1],o=a[2],l=ci(r,s,o);return[l[0],l[1],l[2],e.length>3?e[3]:1]},hi=c.unpack,ui=c.type,gi=B,pi=w,mi=d,wi=si;pi.prototype.oklch=function(){return wi(this._rgb)},gi.oklch=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(pi,[null].concat(e,["oklch"])))},mi.format.oklch=di,mi.autodetect.push({p:3,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=hi(e,"oklch"),"array"===ui(e)&&3===e.length)return"oklch"}});var fi=w,Bi=c.type;fi.prototype.alpha=function(e,t){return void 0===t&&(t=!1),void 0!==e&&"number"===Bi(e)?t?(this._rgb[3]=e,this):new fi([this._rgb[0],this._rgb[1],this._rgb[2],e],"rgb"):this._rgb[3]},w.prototype.clipped=function(){return this._rgb._clipped||!1};var Ei=w,bi=wt;Ei.prototype.darken=function(e){void 0===e&&(e=1);var t=this.lab();return t[0]-=bi.Kn*e,new Ei(t,"lab").alpha(this.alpha(),!0)},Ei.prototype.brighten=function(e){return void 0===e&&(e=1),this.darken(-e)},Ei.prototype.darker=Ei.prototype.darken,Ei.prototype.brighter=Ei.prototype.brighten,w.prototype.get=function(e){var t=e.split("."),A=t[0],i=t[1],n=this[A]();if(i){var a=A.indexOf(i)-("ok"===A.substr(0,2)?2:0);if(a>-1)return n[a];throw new Error("unknown channel "+i+" in mode "+A)}return n};var vi=w,Ci=c.type,yi=Math.pow;vi.prototype.luminance=function(e){if(void 0!==e&&"number"===Ci(e)){if(0===e)return new vi([0,0,0,this._rgb[3]],"rgb");if(1===e)return new vi([255,255,255,this._rgb[3]],"rgb");var t=this.luminance(),A=20,i=function(t,n){var a=t.interpolate(n,.5,"rgb"),r=a.luminance();return Math.abs(e-r)<1e-7||!A--?a:r>e?i(t,a):i(a,n)},n=(t>e?i(new vi([0,0,0]),this):i(this,new vi([255,255,255]))).rgb();return new vi(n.concat([this._rgb[3]]))}return Fi.apply(void 0,this._rgb.slice(0,3))};var Fi=function(e,t,A){return.2126*(e=xi(e))+.7152*(t=xi(t))+.0722*xi(A)},xi=function(e){return(e/=255)<=.03928?e/12.92:yi((e+.055)/1.055,2.4)},Si={},Ti=w,Ii=c.type,Ui=Si,Qi=function(e,t,A){void 0===A&&(A=.5);for(var i=[],n=arguments.length-3;n-- >0;)i[n]=arguments[n+3];var a=i[0]||"lrgb";if(Ui[a]||i.length||(a=Object.keys(Ui)[0]),!Ui[a])throw new Error("interpolation mode "+a+" is not defined");return"object"!==Ii(e)&&(e=new Ti(e)),"object"!==Ii(t)&&(t=new Ti(t)),Ui[a](e,t,A).alpha(e.alpha()+A*(t.alpha()-e.alpha()))},ki=w,Oi=Qi;ki.prototype.mix=ki.prototype.interpolate=function(e,t){void 0===t&&(t=.5);for(var A=[],i=arguments.length-2;i-- >0;)A[i]=arguments[i+2];return Oi.apply(void 0,[this,e,t].concat(A))};var Mi=w;Mi.prototype.premultiply=function(e){void 0===e&&(e=!1);var t=this._rgb,A=t[3];return e?(this._rgb=[t[0]*A,t[1]*A,t[2]*A,A],this):new Mi([t[0]*A,t[1]*A,t[2]*A,A],"rgb")};var Li=w,Di=wt;Li.prototype.saturate=function(e){void 0===e&&(e=1);var t=this.lch();return t[1]+=Di.Kn*e,t[1]<0&&(t[1]=0),new Li(t,"lch").alpha(this.alpha(),!0)},Li.prototype.desaturate=function(e){return void 0===e&&(e=1),this.saturate(-e)};var Ni=w,Hi=c.type;Ni.prototype.set=function(e,t,A){void 0===A&&(A=!1);var i=e.split("."),n=i[0],a=i[1],r=this[n]();if(a){var s=n.indexOf(a)-("ok"===n.substr(0,2)?2:0);if(s>-1){if("string"==Hi(t))switch(t.charAt(0)){case"+":case"-":r[s]+=+t;break;case"*":r[s]*=+t.substr(1);break;case"/":r[s]/=+t.substr(1);break;default:r[s]=+t}else{if("number"!==Hi(t))throw new Error("unsupported value for Color.set");r[s]=t}var o=new Ni(r,n);return A?(this._rgb=o._rgb,this):o}throw new Error("unknown channel "+a+" in mode "+n)}return r};var Ri=w;Si.rgb=function(e,t,A){var i=e._rgb,n=t._rgb;return new Ri(i[0]+A*(n[0]-i[0]),i[1]+A*(n[1]-i[1]),i[2]+A*(n[2]-i[2]),"rgb")};var Pi=w,Vi=Math.sqrt,Ki=Math.pow;Si.lrgb=function(e,t,A){var i=e._rgb,n=i[0],a=i[1],r=i[2],s=t._rgb,o=s[0],l=s[1],c=s[2];return new Pi(Vi(Ki(n,2)*(1-A)+Ki(o,2)*A),Vi(Ki(a,2)*(1-A)+Ki(l,2)*A),Vi(Ki(r,2)*(1-A)+Ki(c,2)*A),"rgb")};var Gi=w;Si.lab=function(e,t,A){var i=e.lab(),n=t.lab();return new Gi(i[0]+A*(n[0]-i[0]),i[1]+A*(n[1]-i[1]),i[2]+A*(n[2]-i[2]),"lab")};var Wi=w,Xi=function(e,t,A,i){var n,a,r,s,o,l,c,d,h,u,g,p,m;return"hsl"===i?(r=e.hsl(),s=t.hsl()):"hsv"===i?(r=e.hsv(),s=t.hsv()):"hcg"===i?(r=e.hcg(),s=t.hcg()):"hsi"===i?(r=e.hsi(),s=t.hsi()):"lch"===i||"hcl"===i?(i="hcl",r=e.hcl(),s=t.hcl()):"oklch"===i&&(r=e.oklch().reverse(),s=t.oklch().reverse()),"h"!==i.substr(0,1)&&"oklch"!==i||(o=(n=r)[0],c=n[1],h=n[2],l=(a=s)[0],d=a[1],u=a[2]),isNaN(o)||isNaN(l)?isNaN(o)?isNaN(l)?p=Number.NaN:(p=l,1!=h&&0!=h||"hsv"==i||(g=d)):(p=o,1!=u&&0!=u||"hsv"==i||(g=c)):p=o+A*(l>o&&l-o>180?l-(o+360):l180?l+360-o:l-o),void 0===g&&(g=c+A*(d-c)),m=h+A*(u-h),new Wi("oklch"===i?[m,g,p]:[p,g,m],i)},zi=Xi,Yi=function(e,t,A){return zi(e,t,A,"lch")};Si.lch=Yi,Si.hcl=Yi;var ji=w;Si.num=function(e,t,A){var i=e.num(),n=t.num();return new ji(i+A*(n-i),"num")};var Ji=Xi;Si.hcg=function(e,t,A){return Ji(e,t,A,"hcg")};var Zi=Xi;Si.hsi=function(e,t,A){return Zi(e,t,A,"hsi")};var qi=Xi;Si.hsl=function(e,t,A){return qi(e,t,A,"hsl")};var _i=Xi;Si.hsv=function(e,t,A){return _i(e,t,A,"hsv")};var $i=w;Si.oklab=function(e,t,A){var i=e.oklab(),n=t.oklab();return new $i(i[0]+A*(n[0]-i[0]),i[1]+A*(n[1]-i[1]),i[2]+A*(n[2]-i[2]),"oklab")};var en=Xi;Si.oklch=function(e,t,A){return en(e,t,A,"oklch")};var tn=w,An=c.clip_rgb,nn=Math.pow,an=Math.sqrt,rn=Math.PI,sn=Math.cos,on=Math.sin,ln=Math.atan2,cn=function(e,t){for(var A=e.length,i=[0,0,0,0],n=0;n.9999999&&(i[3]=1),new tn(An(i))},dn=B,hn=c.type,un=Math.pow,gn=function(e){var t="rgb",A=dn("#ccc"),i=0,n=[0,1],a=[],r=[0,0],s=!1,o=[],l=!1,c=0,d=1,h=!1,u={},g=!0,p=1,m=function(e){if((e=e||["#fff","#000"])&&"string"===hn(e)&&dn.brewer&&dn.brewer[e.toLowerCase()]&&(e=dn.brewer[e.toLowerCase()]),"array"===hn(e)){1===e.length&&(e=[e[0],e[0]]),e=e.slice(0);for(var t=0;t2?function(e){if(null!=s){for(var t=s.length-1,A=0;A=s[A];)A++;return A-1}return 0}(e)/(s.length-2):d!==c?(e-c)/(d-c):1,l=f(l),i||(l=w(l)),1!==p&&(l=un(l,p)),l=r[0]+l*(1-r[0]-r[1]),l=Math.min(1,Math.max(0,l));var h=Math.floor(1e4*l);if(g&&u[h])n=u[h];else{if("array"===hn(o))for(var m=0;m=B&&m===a.length-1){n=o[m];break}if(l>B&&l2){var l=e.map((function(t,A){return A/(e.length-1)})),h=e.map((function(e){return(e-c)/(d-c)}));h.every((function(e,t){return l[t]===e}))||(f=function(e){if(e<=0||e>=1)return e;for(var t=0;e>=h[t+1];)t++;var A=(e-h[t])/(h[t+1]-h[t]);return l[t]+A*(l[t+1]-l[t])})}}return n=[c,d],b},b.mode=function(e){return arguments.length?(t=e,E(),b):t},b.range=function(e,t){return m(e),b},b.out=function(e){return l=e,b},b.spread=function(e){return arguments.length?(i=e,b):i},b.correctLightness=function(e){return null==e&&(e=!0),h=e,E(),w=h?function(e){for(var t=B(0,!0).lab()[0],A=B(1,!0).lab()[0],i=t>A,n=B(e,!0).lab()[0],a=t+(A-t)*e,r=n-a,s=0,o=1,l=20;Math.abs(r)>.01&&l-- >0;)i&&(r*=-1),r<0?(s=e,e+=.5*(o-e)):(o=e,e+=.5*(s-e)),r=(n=B(e,!0).lab()[0])-a;return e}:function(e){return e},b},b.padding=function(e){return null!=e?("number"===hn(e)&&(e=[e,e]),r=e,b):r},b.colors=function(t,A){arguments.length<2&&(A="hex");var i=[];if(0===arguments.length)i=o.slice(0);else if(1===t)i=[b(.5)];else if(t>1){var a=n[0],r=n[1]-a;i=pn(0,t,!1).map((function(e){return b(a+e/(t-1)*r)}))}else{e=[];var l=[];if(s&&s.length>2)for(var c=1,d=s.length,h=1<=d;h?cd;h?c++:c--)l.push(.5*(s[c-1]+s[c]));else l=n;i=l.map((function(e){return b(e)}))}return dn[A]&&(i=i.map((function(e){return e[A]()}))),i},b.cache=function(e){return null!=e?(g=e,b):g},b.gamma=function(e){return null!=e?(p=e,b):p},b.nodata=function(e){return null!=e?(A=dn(e),b):A},b};function pn(e,t,A){for(var i=[],n=ea;n?r++:r--)i.push(r);return i}var mn=w,wn=gn,fn=B,Bn=function(e,t,A){if(!Bn[A])throw new Error("unknown blend mode "+A);return Bn[A](e,t)},En=function(e){return function(t,A){var i=fn(A).rgb(),n=fn(t).rgb();return fn.rgb(e(i,n))}},bn=function(e){return function(t,A){var i=[];return i[0]=e(t[0],A[0]),i[1]=e(t[1],A[1]),i[2]=e(t[2],A[2]),i}};Bn.normal=En(bn((function(e){return e}))),Bn.multiply=En(bn((function(e,t){return e*t/255}))),Bn.screen=En(bn((function(e,t){return 255*(1-(1-e/255)*(1-t/255))}))),Bn.overlay=En(bn((function(e,t){return t<128?2*e*t/255:255*(1-2*(1-e/255)*(1-t/255))}))),Bn.darken=En(bn((function(e,t){return e>t?t:e}))),Bn.lighten=En(bn((function(e,t){return e>t?e:t}))),Bn.dodge=En(bn((function(e,t){return 255===e||(e=t/255*255/(1-e/255))>255?255:e}))),Bn.burn=En(bn((function(e,t){return 255*(1-(1-t/255)/(e/255))})));for(var vn=Bn,Cn=c.type,yn=c.clip_rgb,Fn=c.TWOPI,xn=Math.pow,Sn=Math.sin,Tn=Math.cos,In=B,Un=w,Qn=Math.floor,kn=Math.random,On=r,Mn=Math.log,Ln=Math.pow,Dn=Math.floor,Nn=Math.abs,Hn=function(e,t){void 0===t&&(t=null);var A={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0};return"object"===On(e)&&(e=Object.values(e)),e.forEach((function(e){t&&"object"===On(e)&&(e=e[t]),null==e||isNaN(e)||(A.values.push(e),A.sum+=e,eA.max&&(A.max=e),A.count+=1)})),A.domain=[A.min,A.max],A.limits=function(e,t){return Rn(A,e,t)},A},Rn=function(e,t,A){void 0===t&&(t="equal"),void 0===A&&(A=7),"array"==On(e)&&(e=Hn(e));var i=e.min,n=e.max,a=e.values.sort((function(e,t){return e-t}));if(1===A)return[i,n];var r=[];if("c"===t.substr(0,1)&&(r.push(i),r.push(n)),"e"===t.substr(0,1)){r.push(i);for(var s=1;s 0");var o=Math.LOG10E*Mn(i),l=Math.LOG10E*Mn(n);r.push(i);for(var c=1;c200&&(B=!1)}for(var L={},D=0;D=360;)g-=360;r[u]=g}else r[u]=r[u]/s[u];return h/=i,new tn(r,t).alpha(h>.99999?1:h,!0)},la.bezier=function(e){var t=function(e){var t,A,i,n,a,r,s;if(e=e.map((function(e){return new mn(e)})),2===e.length)t=e.map((function(e){return e.lab()})),a=t[0],r=t[1],n=function(e){var t=[0,1,2].map((function(t){return a[t]+e*(r[t]-a[t])}));return new mn(t,"lab")};else if(3===e.length)A=e.map((function(e){return e.lab()})),a=A[0],r=A[1],s=A[2],n=function(e){var t=[0,1,2].map((function(t){return(1-e)*(1-e)*a[t]+2*(1-e)*e*r[t]+e*e*s[t]}));return new mn(t,"lab")};else if(4===e.length){var o;i=e.map((function(e){return e.lab()})),a=i[0],r=i[1],s=i[2],o=i[3],n=function(e){var t=[0,1,2].map((function(t){return(1-e)*(1-e)*(1-e)*a[t]+3*(1-e)*(1-e)*e*r[t]+3*(1-e)*e*e*s[t]+e*e*e*o[t]}));return new mn(t,"lab")}}else{if(!(e.length>=5))throw new RangeError("No point in running bezier with only one color.");var l,c,d;l=e.map((function(e){return e.lab()})),d=e.length-1,c=function(e){for(var t=[1,1],A=1;Ai?(A+.05)/(i+.05):(i+.05)/(A+.05)},la.deltaE=function(e,t,A,i,n){void 0===A&&(A=1),void 0===i&&(i=1),void 0===n&&(n=1);var a=function(e){return 360*e/(2*_n)},r=function(e){return 2*_n*e/360};e=new Kn(e),t=new Kn(t);var s=Array.from(e.lab()),o=s[0],l=s[1],c=s[2],d=Array.from(t.lab()),h=d[0],u=d[1],g=d[2],p=(o+h)/2,m=(Gn(Wn(l,2)+Wn(c,2))+Gn(Wn(u,2)+Wn(g,2)))/2,w=.5*(1-Gn(Wn(m,7)/(Wn(m,7)+Wn(25,7)))),f=l*(1+w),B=u*(1+w),E=Gn(Wn(f,2)+Wn(c,2)),b=Gn(Wn(B,2)+Wn(g,2)),v=(E+b)/2,C=a(Yn(c,f)),y=a(Yn(g,B)),F=C>=0?C:C+360,x=y>=0?y:y+360,S=jn(F-x)>180?(F+x+360)/2:(F+x)/2,T=1-.17*Jn(r(S-30))+.24*Jn(r(2*S))+.32*Jn(r(3*S+6))-.2*Jn(r(4*S-63)),I=x-F;I=jn(I)<=180?I:x<=F?I+360:I-360,I=2*Gn(E*b)*Zn(r(I)/2);var U=h-o,Q=b-E,k=1+.015*Wn(p-50,2)/Gn(20+Wn(p-50,2)),O=1+.045*v,M=1+.015*v*T,L=30*qn(-Wn((S-275)/25,2)),D=-2*Gn(Wn(v,7)/(Wn(v,7)+Wn(25,7)))*Zn(2*r(L)),N=Gn(Wn(U/(A*k),2)+Wn(Q/(i*O),2)+Wn(I/(n*M),2)+D*(Q/(i*O))*(I/(n*M)));return zn(0,Xn(100,N))},la.distance=function(e,t,A){void 0===A&&(A="lab"),e=new $n(e),t=new $n(t);var i=e.get(A),n=t.get(A),a=0;for(var r in i){var s=(i[r]||0)-(n[r]||0);a+=s*s}return Math.sqrt(a)},la.limits=Pn.limits,la.valid=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];try{return new(Function.prototype.bind.apply(ea,[null].concat(e))),!0}catch(e){return!1}},la.scales=ia,la.colors=dA,la.brewer=oa,la}();var chroma=chromaExports;function hexWithAlpha(e,t){return chroma(e).alpha(t).css()}function has(e,t){return e.hasAttribute(t)}function get(e,t,A){return e.getAttribute(t)||A||""}function getNum(e,t,A){const i=Number(get(e,t));return Number.isNaN(i)?A||0:i}const attrHandlers={stroke:({el:e,exVals:t})=>{const A=get(e,"stroke");t.strokeColor=has(e,"stroke-opacity")?hexWithAlpha(A,getNum(e,"stroke-opacity")):A},"stroke-opacity":({el:e,exVals:t})=>{t.strokeColor=hexWithAlpha(get(e,"stroke","#000000"),getNum(e,"stroke-opacity"))},"stroke-width":({el:e,exVals:t})=>{t.strokeWidth=getNum(e,"stroke-width")},fill:({el:e,exVals:t})=>{const A=get(e,"fill");t.backgroundColor="none"===A?"#00000000":A},"fill-opacity":({el:e,exVals:t})=>{t.backgroundColor=hexWithAlpha(get(e,"fill","#000000"),getNum(e,"fill-opacity"))},opacity:({el:e,exVals:t})=>{t.opacity=getNum(e,"opacity",100)}};function presAttrsToElementValues(e){return[...e.attributes].reduce(((t,A)=>{const i=A.name;return Object.keys(attrHandlers).includes(i)&&attrHandlers[i]({el:e,exVals:t}),t}),{})}function filterAttrsToElementValues(e){const t={};return has(e,"x")&&(t.x=getNum(e,"x")),has(e,"y")&&(t.y=getNum(e,"y")),has(e,"width")&&(t.width=getNum(e,"width")),has(e,"height")&&(t.height=getNum(e,"height")),t}function pointsAttrToPoints(e){let t=[];return has(e,"points")&&(t=get(e,"points").split(" ").map((e=>e.split(",").map(parseFloat)))),t}function getGroupAttrs(e){return e.reduce(((e,{element:t})=>{const A=presAttrsToElementValues(t);return Object.assign(Object.assign({},e),A)}),{})}class Group{constructor(e){this.id=randomId(),this.element=e}}function createExElement(){return{id:randomId(),x:0,y:0,strokeColor:"#000000",backgroundColor:"#000000",fillStyle:"solid",strokeWidth:1,strokeStyle:"solid",roundness:null,roughness:0,opacity:100,width:0,height:0,angle:0,seed:Math.floor(random.next()*2**31),version:0,versionNonce:0,isDeleted:!1,groupIds:[],boundElementIds:null}}function createExRect(){return Object.assign(Object.assign({},createExElement()),{type:"rectangle"})}function createExLine(){return Object.assign(Object.assign({},createExElement()),{type:"line",points:[]})}function createExEllipse(){return Object.assign(Object.assign({},createExElement()),{type:"ellipse"})}function createExDraw(){return Object.assign(Object.assign({},createExElement()),{type:"line",points:[]})}const transformFunctions={matrix:"matrix",matrix3d:"matrix3d",perspective:"perspective",rotate:"rotate",rotate3d:"rotate3d",rotateX:"rotateX",rotateY:"rotateY",rotateZ:"rotateZ",scale:"scale",scale3d:"scale3d",scaleX:"scaleX",scaleY:"scaleY",scaleZ:"scaleZ",skew:"skew",skewX:"skewX",skewY:"skewY",translate:"translate",translate3d:"translate3d",translateX:"translateX",translateY:"translateY",translateZ:"translateZ"},transformFunctionsArr=Object.keys(transformFunctions),defaultUnits={matrix:"",matrix3d:"",perspective:"perspective",rotate:"deg",rotate3d:"deg",rotateX:"deg",rotateY:"deg",rotateZ:"deg",scale:"",scale3d:"",scaleX:"",scaleY:"",scaleZ:"",skew:"skew",skewX:"deg",skewY:"deg",translate:"px",translate3d:"px",translateX:"px",translateY:"px",translateZ:"px"},svgTransformToCSSTransform=e=>{const t=e.match(/(\w+)\(([^)]*)\)/g);if(!t)return"";const A=t.map((e=>{const t=e.split("(")[0];if(!t)throw new Error("Unable to find transform name");if(!transformFunctionsArr.includes(t))throw new Error(`transform function name "${t}" is not valid`);const A=e.match(/([-+]?[0-9]*\.?[0-9]+)([a-z])*/g);if(!A)return{type:t,values:[]};let i=A.map((e=>{const[A,i]=e.matchAll(/([-+]?[0-9]*\.?[0-9]+)|([a-z])*/g);return{unit:i[0]||defaultUnits[t],value:A[0]}}));return i&&"rotate"===t&&(null==i?void 0:i.length)>1&&(i=[i[0]]),{type:t,values:i}}));return A.map((({type:e,values:t})=>`${e}(${t.map((({unit:e,value:t})=>`${t}${e}`)).join(", ")})`)).join(" ")};function getElementMatrix(e){if(e.hasAttribute("transform")){const t=new DOMMatrix(svgTransformToCSSTransform(e.getAttribute("transform")||""));return multiply(create$1(),create$1(),t.toFloat32Array())}return create$1()}function getTransformMatrix(e,t){return t.map((({element:e})=>getElementMatrix(e))).concat([getElementMatrix(e)]).reduce(((e,t)=>multiply(e,e,t)),create$1())}function transformPoints(e,t){return e.map((([e,A])=>{const[i,n]=transformMat4(create(),fromValues(e,A,1),t);return[i,n]}))}function distance(e,t){return Math.sqrt(distanceSq(e,t))}function distanceSq(e,t){return Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)}function distanceToSegmentSq(e,t,A){const i=distanceSq(t,A);if(0===i)return distanceSq(e,t);let n=((e[0]-t[0])*(A[0]-t[0])+(e[1]-t[1])*(A[1]-t[1]))/i;return n=Math.max(0,Math.min(1,n)),distanceSq(e,lerp(t,A,n))}function lerp(e,t,A){return[e[0]+(t[0]-e[0])*A,e[1]+(t[1]-e[1])*A]}function flatness(e,t){const A=e[t+0],i=e[t+1],n=e[t+2],a=e[t+3];let r=3*i[0]-2*A[0]-a[0];r*=r;let s=3*i[1]-2*A[1]-a[1];s*=s;let o=3*n[0]-2*a[0]-A[0];o*=o;let l=3*n[1]-2*a[1]-A[1];return l*=l,r1&&n.push(A):n.push(A),n.push(e[t+3])}else{const i=.5,a=e[t+0],r=e[t+1],s=e[t+2],o=e[t+3],l=lerp(a,r,i),c=lerp(r,s,i),d=lerp(s,o,i),h=lerp(l,c,i),u=lerp(c,d,i),g=lerp(h,u,i);getPointsOnBezierCurveWithSplitting([a,l,h,g],0,A,n),getPointsOnBezierCurveWithSplitting([g,u,d,o],0,A,n)}return n}function simplify(e,t){return simplifyPoints(e,0,e.length,t)}function simplifyPoints(e,t,A,i,n){const a=n||[],r=e[t],s=e[A-1];let o=0,l=1;for(let i=t+1;io&&(o=t,l=i)}return Math.sqrt(o)>i?(simplifyPoints(e,t,l+1,i,a),simplifyPoints(e,l,A,i,a)):(a.length||a.push(r),a.push(s)),a}function pointsOnBezierCurves(e,t=.15,A){const i=[],n=(e.length-1)/3;for(let A=0;A0?simplifyPoints(i,0,i.length,A):i}const COMMAND=0,NUMBER=1,EOD=2,PARAMS={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function tokenize(e){const t=new Array;for(;""!==e;)if(e.match(/^([ \t\r\n,]+)/))e=e.substr(RegExp.$1.length);else if(e.match(/^([aAcChHlLmMqQsStTvVzZ])/))t[t.length]={type:0,text:RegExp.$1},e=e.substr(RegExp.$1.length);else{if(!e.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];t[t.length]={type:1,text:`${parseFloat(RegExp.$1)}`},e=e.substr(RegExp.$1.length)}return t[t.length]={type:2,text:""},t}function isType(e,t){return e.type===t}function parsePath(e){const t=[],A=tokenize(e);let i="BOD",n=0,a=A[n];for(;!isType(a,2);){let r=0;const s=[];if("BOD"===i){if("M"!==a.text&&"m"!==a.text)return parsePath("M0,0"+e);n++,r=PARAMS[a.text],i=a.text}else isType(a,1)?r=PARAMS[i]:(n++,r=PARAMS[a.text],i=a.text);if(!(n+ri%2?e+A:e+t));a.push({key:"C",data:e}),t=e[4],A=e[5];break}case"Q":a.push({key:"Q",data:[...s]}),t=s[2],A=s[3];break;case"q":{const e=s.map(((e,i)=>i%2?e+A:e+t));a.push({key:"Q",data:e}),t=e[2],A=e[3];break}case"A":a.push({key:"A",data:[...s]}),t=s[5],A=s[6];break;case"a":t+=s[5],A+=s[6],a.push({key:"A",data:[s[0],s[1],s[2],s[3],s[4],t,A]});break;case"H":a.push({key:"H",data:[...s]}),t=s[0];break;case"h":t+=s[0],a.push({key:"H",data:[t]});break;case"V":a.push({key:"V",data:[...s]}),A=s[0];break;case"v":A+=s[0],a.push({key:"V",data:[A]});break;case"S":a.push({key:"S",data:[...s]}),t=s[2],A=s[3];break;case"s":{const e=s.map(((e,i)=>i%2?e+A:e+t));a.push({key:"S",data:e}),t=e[2],A=e[3];break}case"T":a.push({key:"T",data:[...s]}),t=s[0],A=s[1];break;case"t":t+=s[0],A+=s[1],a.push({key:"T",data:[t,A]});break;case"Z":case"z":a.push({key:"Z",data:[]}),t=i,A=n}return a}function normalize(e){const t=[];let A="",i=0,n=0,a=0,r=0,s=0,o=0;for(const{key:l,data:c}of e){switch(l){case"M":t.push({key:"M",data:[...c]}),[i,n]=c,[a,r]=c;break;case"C":t.push({key:"C",data:[...c]}),i=c[4],n=c[5],s=c[2],o=c[3];break;case"L":t.push({key:"L",data:[...c]}),[i,n]=c;break;case"H":i=c[0],t.push({key:"L",data:[i,n]});break;case"V":n=c[0],t.push({key:"L",data:[i,n]});break;case"S":{let e=0,a=0;"C"===A||"S"===A?(e=i+(i-s),a=n+(n-o)):(e=i,a=n),t.push({key:"C",data:[e,a,...c]}),s=c[0],o=c[1],i=c[2],n=c[3];break}case"T":{const[e,a]=c;let r=0,l=0;"Q"===A||"T"===A?(r=i+(i-s),l=n+(n-o)):(r=i,l=n);const d=i+2*(r-i)/3,h=n+2*(l-n)/3,u=e+2*(r-e)/3,g=a+2*(l-a)/3;t.push({key:"C",data:[d,h,u,g,e,a]}),s=r,o=l,i=e,n=a;break}case"Q":{const[e,A,a,r]=c,l=i+2*(e-i)/3,d=n+2*(A-n)/3,h=a+2*(e-a)/3,u=r+2*(A-r)/3;t.push({key:"C",data:[l,d,h,u,a,r]}),s=e,o=A,i=a,n=r;break}case"A":{const e=Math.abs(c[0]),A=Math.abs(c[1]),a=c[2],r=c[3],s=c[4],o=c[5],l=c[6];0===e||0===A?(t.push({key:"C",data:[i,n,o,l,o,l]}),i=o,n=l):i===o&&n===l||(arcToCubicCurves(i,n,o,l,e,A,a,r,s).forEach((function(e){t.push({key:"C",data:e})})),i=o,n=l);break}case"Z":t.push({key:"Z",data:[]}),i=a,n=r}A=l}return t}function degToRad(e){return Math.PI*e/180}function rotate(e,t,A){return[e*Math.cos(A)-t*Math.sin(A),e*Math.sin(A)+t*Math.cos(A)]}function arcToCubicCurves(e,t,A,i,n,a,r,s,o,l){const c=degToRad(r);let d=[],h=0,u=0,g=0,p=0;if(l)[h,u,g,p]=l;else{[e,t]=rotate(e,t,-c),[A,i]=rotate(A,i,-c);const r=(e-A)/2,l=(t-i)/2;let d=r*r/(n*n)+l*l/(a*a);d>1&&(d=Math.sqrt(d),n*=d,a*=d);const m=n*n,w=a*a,f=m*w-m*l*l-w*r*r,B=m*l*l+w*r*r,E=(s===o?-1:1)*Math.sqrt(Math.abs(f/B));g=E*n*l/a+(e+A)/2,p=E*-a*r/n+(t+i)/2,h=Math.asin(parseFloat(((t-p)/a).toFixed(9))),u=Math.asin(parseFloat(((i-p)/a).toFixed(9))),eu&&(h-=2*Math.PI),!o&&u>h&&(u-=2*Math.PI)}let m=u-h;if(Math.abs(m)>120*Math.PI/180){const e=u,t=A,s=i;u=o&&u>h?h+120*Math.PI/180*1:h+120*Math.PI/180*-1,d=arcToCubicCurves(A=g+n*Math.cos(u),i=p+a*Math.sin(u),t,s,n,a,r,0,o,[u,e,g,p])}m=u-h;const w=Math.cos(h),f=Math.sin(h),B=Math.cos(u),E=Math.sin(u),b=Math.tan(m/4),v=4/3*n*b,C=4/3*a*b,y=[e,t],F=[e+v*f,t-C*w],x=[A+v*E,i-C*B],S=[A,i];if(F[0]=2*y[0]-F[0],F[1]=2*y[1]-F[1],l)return[F,x,S].concat(d);{d=[F,x,S].concat(d);const e=[];for(let t=0;t{s.length>=4&&a.push(...pointsOnBezierCurves(s,t)),s=[]},l=()=>{o(),a.length&&(n.push(a),a=[])};for(const{key:e,data:t}of i)switch(e){case"M":l(),r=[t[0],t[1]],a.push(r);break;case"L":o(),a.push([t[0],t[1]]);break;case"C":if(!s.length){const e=a.length?a[a.length-1]:r;s.push([e[0],e[1]])}s.push([t[0],t[1]]),s.push([t[2],t[3]]),s.push([t[4],t[5]]);break;case"Z":o(),a.push([r[0],r[1]])}if(l(),!A)return n;const c=[];for(const e of n){const t=simplify(e,A);t.length&&c.push(t)}return c}const SUPPORTED_TAGS=["svg","path","g","use","circle","ellipse","rect","polyline","polygon"],nodeValidator=e=>SUPPORTED_TAGS.includes(e.tagName)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT;function createTreeWalker(e){return document.createTreeWalker(e,NodeFilter.SHOW_ALL,{acceptNode:nodeValidator})}const presAttrs=(e,t)=>Object.assign(Object.assign(Object.assign({},getGroupAttrs(t)),presAttrsToElementValues(e)),filterAttrsToElementValues(e)),skippedUseAttrs=["id"],allwaysPassedUseAttrs=["x","y","width","height","href","xlink:href"],getDefElWithCorrectAttrs=(e,t)=>[...t.attributes].reduce(((A,i)=>(skippedUseAttrs.includes(i.value)||e.hasAttribute(i.name)&&!allwaysPassedUseAttrs.includes(i.name)||A.setAttribute(i.name,t.getAttribute(i.name)||""),A)),e.cloneNode()),walkers={svg:e=>{walk(e,e.tw.nextNode())},g:e=>{const t=Object.assign(Object.assign({},e),{tw:createTreeWalker(e.tw.currentNode),groups:[...e.groups,new Group(e.tw.currentNode)]});walk(t,t.tw.nextNode()),walk(e,e.tw.nextSibling())},use:e=>{const{root:t,tw:A,scene:i}=e,n=A.currentNode,a=n.getAttribute("href")||n.getAttribute("xlink:href");if(!a)throw new Error("unable to get id of use element");const r=t.querySelector(a);if(!r)throw new Error(`unable to find def element with id: ${a}`);const s=new ExcalidrawScene,o=getDefElWithCorrectAttrs(r,n);walk(Object.assign(Object.assign({},e),{scene:s,tw:createTreeWalker(o)}),o);const l=s.elements.pop();l&&i.elements.push(l),walk(e,e.tw.nextNode())},circle:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=getNum(n,"r",0),r=2*a,s=getNum(n,"x",0)+getNum(n,"cx",0)-a,o=getNum(n,"y",0)+getNum(n,"cy",0)-a,l=getTransformMatrix(n,i),c=fromValues$1(r,0,0,0,0,r,0,0,0,0,1,0,s,o,0,1),d=multiply(create$1(),l,c),h=Object.assign(Object.assign(Object.assign({},createExEllipse()),presAttrs(n,i)),{x:d[12],y:d[13],width:d[0],height:d[5],groupIds:i.map((e=>e.id))});A.elements.push(h),walk(e,t.nextNode())},ellipse:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=getNum(n,"rx",0),r=getNum(n,"ry",0),s=getNum(n,"cx",0),o=getNum(n,"cy",0),l=getNum(n,"x",0)+s-a,c=getNum(n,"y",0)+o-r,d=2*a,h=2*r,u=getTransformMatrix(n,i),g=fromValues$1(d,0,0,0,0,h,0,0,0,0,1,0,l,c,0,1),p=multiply(create$1(),u,g),m=Object.assign(Object.assign(Object.assign({},createExEllipse()),presAttrs(n,i)),{x:p[12],y:p[13],width:p[0],height:p[5],groupIds:i.map((e=>e.id))});A.elements.push(m),walk(e,t.nextNode())},line:e=>{walk(e,e.tw.nextNode())},polygon:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=transformPoints(pointsAttrToPoints(n),getTransformMatrix(n,i)),r=a[0][0],s=a[0][1],o=a.map((([e,t])=>[e-r,t-s])),[l,c]=dimensionsFromPoints(o),d=Object.assign(Object.assign(Object.assign(Object.assign({},createExLine()),getGroupAttrs(i)),presAttrsToElementValues(n)),{points:o.concat([[0,0]]),x:r,y:s,width:l,height:c});A.elements.push(d),walk(e,e.tw.nextNode())},polyline:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=getTransformMatrix(n,i),r=transformPoints(pointsAttrToPoints(n),a),s=r[0][0],o=r[0][1],l=r.map((([e,t])=>[e-s,t-o])),[c,d]=dimensionsFromPoints(l),h=has(n,"fill"),u=get(n,"fill"),g=!h||h&&"none"!==u,p=Object.assign(Object.assign(Object.assign(Object.assign({},createExLine()),getGroupAttrs(i)),presAttrsToElementValues(n)),{points:l.concat(g?[[0,0]]:[]),x:s,y:o,width:c,height:d});A.elements.push(p),walk(e,e.tw.nextNode())},rect:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=getNum(n,"x",0),r=getNum(n,"y",0),s=getNum(n,"width",0),o=getNum(n,"height",0),l=getTransformMatrix(n,i),c=fromValues$1(s,0,0,0,0,o,0,0,0,0,1,0,a,r,0,1),d=multiply(create$1(),l,c),h=n.hasAttribute("rx")||n.hasAttribute("ry"),u=Object.assign(Object.assign(Object.assign({},createExRect()),presAttrs(n,i)),{x:d[12],y:d[13],width:d[0],height:d[5],roundness:h?{type:ROUNDNESS.LEGACY}:null});A.elements.push(u),walk(e,e.tw.nextNode())},path:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=getTransformMatrix(n,i),r=pointsOnPath(get(n,"d")),s=get(n,"fill","black"),o=get(n,"fill-rule","nonzero");let l=[],c=randomId();switch(o){case"nonzero":let e="clockwise";l=r.map(((t,A)=>{const r=transformPoints(t,clone(a)),o=r[0][0],l=r[0][1],[d,h]=dimensionsFromPoints(r),u=r.map((([e,t])=>[e-o,t-l])),g=getWindingOrder(u);0===A&&(e=g,c=randomId());let p=s;return e!==g&&(p="#FFFFFF"),Object.assign(Object.assign(Object.assign(Object.assign({},createExDraw()),{strokeWidth:0,strokeColor:"#00000000"}),presAttrs(n,i)),{points:u,backgroundColor:p,width:d,height:h,x:o+getNum(n,"x",0),y:l+getNum(n,"y",0),groupIds:[c]})}));break;case"evenodd":l=r.map(((e,t)=>{const A=transformPoints(e,clone(a)),r=A[0][0],s=A[0][1],[o,l]=dimensionsFromPoints(A),d=A.map((([e,t])=>[e-r,t-s]));return 0===t&&(c=randomId()),Object.assign(Object.assign(Object.assign({},createExDraw()),presAttrs(n,i)),{points:d,width:o,height:l,x:r+getNum(n,"x",0),y:s+getNum(n,"y",0)})}))}A.elements=A.elements.concat(l),walk(e,t.nextNode())}};function walk(e,t){if(!t)return;const A=t.nodeName;walkers[A]&&walkers[A](e)}const svgToExcalidraw=e=>{const t=(new DOMParser).parseFromString(e,"image/svg+xml"),A=t.querySelectorAll("parsererror"),i=A.length>0;let n=null;if(i)console.error("There were errors while parsing the given SVG: ",[...A].map((e=>e.innerHTML)));else{const e=createTreeWalker(t),A=new ExcalidrawScene;walk({tw:e,scene:A,groups:[],root:t},e.nextNode()),n=A.elements}return{hasErrors:i,errors:i?A:null,content:n}};B([r$d,z,e$a,l$3,b$1,v,h$1,i$5,i$4,h,u,c$1,s]);const{determineFocusDistance:determineFocusDistance,intersectElementWithLine:intersectElementWithLine,getCommonBoundingBox:getCommonBoundingBox,getMaximumGroups:getMaximumGroups,measureText:measureText,getDefaultLineHeight:getDefaultLineHeight}=excalidrawLib,GAP=4;class ExcalidrawAutomate{get obsidian(){return obsidian_module__namespace}constructor(e,t){this.targetView=null,this.mostRecentMarkdownSVG=null,this.onViewUnloadHook=null,this.onViewModeChangeHook=null,this.onLinkHoverHook=null,this.onLinkClickHook=null,this.onDropHook=null,this.onCanvasColorChangeHook=null,this.activeScript=null,this.plugin=e,this.reset(),this.targetView=t}getViewLastPointerPosition(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.currentPosition:(errorMessage("targetView not set","getExcalidrawAPI()"),null)}getAPI(e){return new ExcalidrawAutomate(this.plugin,e)}setFillStyle(e){switch(e){case 0:return this.style.fillStyle="hachure","hachure";case 1:return this.style.fillStyle="cross-hatch","cross-hatch";default:return this.style.fillStyle="solid","solid"}}setStrokeStyle(e){switch(e){case 0:return this.style.strokeStyle="solid","solid";case 1:return this.style.strokeStyle="dashed","dashed";default:return this.style.strokeStyle="dotted","dotted"}}setStrokeSharpness(e){return 0===e?(this.style.roundness={type:ROUNDNESS.LEGACY},"round"):(this.style.roundness=null,"sharp")}setFontFamily(e){switch(e){case 1:return this.style.fontFamily=4,getFontFamily(4);case 2:return this.style.fontFamily=2,getFontFamily(2);case 3:return this.style.fontFamily=3,getFontFamily(3);default:return this.style.fontFamily=1,getFontFamily(1)}}setTheme(e){return 0===e?(this.canvas.theme="light","light"):(this.canvas.theme="dark","dark")}addToGroup(e){const t=nanoid();return e.forEach((e=>{var A,i;null===(i=null===(A=this.elementsDict[e])||void 0===A?void 0:A.groupIds)||void 0===i||i.push(t)})),t}async toClipboard(e){const t=e?await getTemplate(this.plugin,e,!1,new EmbeddedFilesLoader(this.plugin),0):null;let A=t?t.elements:[];A=A.concat(this.getElements()),navigator.clipboard.writeText(JSON.stringify({type:"excalidraw/clipboard",elements:A}))}async getSceneFromFile(e){if(!e)return errorMessage("file not found","getScene()"),null;if(!this.isExcalidrawFile(e))return errorMessage("file is not an Excalidraw file","getScene()"),null;const t=await getTemplate(this.plugin,e.path,!1,new EmbeddedFilesLoader(this.plugin),0);return{elements:t.elements,appState:t.appState}}getElements(){const e=[],t=Object.keys(this.elementsDict);for(let A=0;A{let t=e.plaintext?e.plaintext+"\n\n":"";const A=this.getElements().filter((e=>"text"===e.type));return t+="# Text Elements\n",A.forEach((e=>{var A,i;t+=`${null!==(A=e.rawText)&&void 0!==A?A:null!==(i=e.originalText)&&void 0!==i?i:e.text} ^${e.id}\n\n`})),this.getElements().filter((e=>"text"!==e.type&&e.link)).forEach((e=>{t+=`${e.link} ^${e.id}\n\n`})),t+=Object.keys(this.imagesDict).length>0?"\n# Embedded files\n":"",Object.keys(this.imagesDict).forEach((e=>{const A=this.imagesDict[e];A.latex?t+=`${e}: $$${A.latex}$$\n`:t+=`${e}: [[${A.file}]]\n`})),t})()+getMarkdownDrawingSection(JSON.stringify(G,null,"\t"),this.plugin.settings.compress))}async createSVG(e,t=!1,A,i,n,a){return n||(n=this.plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":this.plugin.settings.exportWithTheme?void 0:"light"),n&&!A&&(A={withBackground:this.plugin.settings.exportWithBackground,withTheme:!0}),i||(i=new EmbeddedFilesLoader(this.plugin,n?"dark"===n:void 0)),await createSVG(e,t,A,i,n,this.canvas.theme,this.canvas.viewBackgroundColor,this.getElements(),this.plugin,0,a,this.imagesDict)}async createPNG(e,t=1,A,i,n,a){return n||(n=this.plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":this.plugin.settings.exportWithTheme?void 0:"light"),n&&!A&&(A={withBackground:this.plugin.settings.exportWithBackground,withTheme:!0}),i||(i=new EmbeddedFilesLoader(this.plugin,n?"dark"===n:void 0)),await createPNG(e,t,A,i,n,this.canvas.theme,this.canvas.viewBackgroundColor,this.getElements(),this.plugin,0,a,this.imagesDict)}wrapText(e,t){return wrapTextAtCharLength(e,t,this.plugin.settings.forceWrap)}boxedElement(e,t,A,i,n,a){return{id:e,type:t,x:A,y:i,width:n,height:a,angle:this.style.angle,strokeColor:this.style.strokeColor,backgroundColor:this.style.backgroundColor,fillStyle:this.style.fillStyle,strokeWidth:this.style.strokeWidth,strokeStyle:this.style.strokeStyle,roughness:this.style.roughness,opacity:this.style.opacity,roundness:this.style.strokeSharpness?"round"===this.style.strokeSharpness?{type:ROUNDNESS.ADAPTIVE_RADIUS}:null:this.style.roundness,seed:Math.floor(1e5*Math.random()),version:1,versionNonce:Math.floor(1e9*Math.random()),updated:Date.now(),isDeleted:!1,groupIds:[],boundElements:[],link:null,locked:!1}}addRect(e,t,A,i){const n=nanoid();return this.elementsDict[n]=this.boxedElement(n,"rectangle",e,t,A,i),n}addDiamond(e,t,A,i){const n=nanoid();return this.elementsDict[n]=this.boxedElement(n,"diamond",e,t,A,i),n}addEllipse(e,t,A,i){const n=nanoid();return this.elementsDict[n]=this.boxedElement(n,"ellipse",e,t,A,i),n}addBlob(e,t,A,i){const n=.5*i,a=.5*A,r=a/9,s=.8*n,o=[],l=(A,i)=>{const l=A+Math.random()*r-r/2;o.push([l+Math.random()*r-r/2+A%2*r/6+e,i*Math.sqrt(n*n*(1-l*l/(a*a)))+Math.random()*s-s/2+A%2*s/6+t])};let c;for(c=r/2-a;c<=a-r/2;c+=a/6)l(c,1);for(c=a-r/2;c>=r/2-a;c-=a/6)l(c,-1);o.push(o[0]);const d=this.addLine((e=>{const t=getLineBox(e),n=A/t.w,a=i/t.h;let r;for(r=0;r500){const e=500/Math.max(r.size.width,r.size.height);r.size.width=e*r.size.width,r.size.height=e*r.size.height}return this.elementsDict[n]=this.boxedElement(n,"image",e,t,r.size.width,r.size.height),this.elementsDict[n].fileId=s,this.elementsDict[n].scale=[1,1],n}async addLaTex(e,t,A){const i=nanoid(),n=await tex2dataURL(A,this.plugin);return n?(this.imagesDict[n.fileId]={mimeType:n.mimeType,id:n.fileId,dataURL:n.dataURL,created:n.created,file:null,hasSVGwithBitmap:!1,latex:A},this.elementsDict[i]=this.boxedElement(i,"image",e,t,n.size.width,n.size.height),this.elementsDict[i].fileId=n.fileId,this.elementsDict[i].scale=[1,1],i):null}connectObjects(e,t,A,i,n){if(!this.elementsDict[e]||!this.elementsDict[A])return;if(["line","arrow","freedraw"].includes(this.elementsDict[e].type)||["line","arrow","freedraw"].includes(this.elementsDict[A].type))return;const a=(null==n?void 0:n.padding)?n.padding:10,r=(null==n?void 0:n.numberOfPoints)?n.numberOfPoints:0,s=(e,t)=>{switch(e){case"bottom":return[(t.x+(t.x+t.width))/2,t.y+t.height+a];case"left":return[t.x-a,(t.y+(t.y+t.height))/2];case"right":return[t.x+t.width+a,(t.y+(t.y+t.height))/2];default:return[(t.x+(t.x+t.width))/2,t.y-a]}};let o,l,c,d;const h=this.elementsDict[e],u=this.elementsDict[A];if(!t||!i){const e=h.x+h.width/2,A=u.x+u.width/2,n=h.y+h.height/2,a=u.y+u.height/2;if(!t){const t=intersectElementWithLine(h,[A,a],[e,n],4);0===t.length?[o,l]=[e,n]:[o,l]=t[0]}if(!i){const t=intersectElementWithLine(u,[e,n],[A,a],4);0===t.length?[c,d]=[A,a]:[c,d]=t[0]}}t&&([o,l]=s(t,this.elementsDict[e])),i&&([c,d]=s(i,this.elementsDict[A]));const g=r+2,p=[];for(let e=0;eMath.PI/2&&(i-=Math.PI),this.style.angle=i;const a=this.addText(A.x+A.points[1][0]/2-n.width/2,A.y+A.points[1][1]/2-n.height,t);return this.style.angle=0,a}clear(){this.elementsDict={},this.imagesDict={}}reset(){this.clear(),this.activeScript=null,this.style={strokeColor:"#000000",backgroundColor:"transparent",angle:0,fillStyle:"hachure",strokeWidth:1,strokeStyle:"solid",roughness:1,opacity:100,roundness:null,fontFamily:1,fontSize:20,textAlign:"left",verticalAlign:"top",startArrowHead:null,endArrowHead:"arrow"},this.canvas={theme:"light",viewBackgroundColor:"#FFFFFF",gridSize:0}}isExcalidrawFile(e){return this.plugin.isExcalidrawFile(e)}setView(e){if(!e){const e=app.workspace.getActiveViewOfType(ExcalidrawView);if(e instanceof ExcalidrawView)this.targetView=e;else{const e=app.workspace.getLeavesOfType("excalidraw");if(!e||0==e.length)return;this.targetView=e[0].view}}if("active"==e){const e=app.workspace.getActiveViewOfType(ExcalidrawView);if(!(e instanceof ExcalidrawView))return;this.targetView=e}if("first"==e){const e=app.workspace.getLeavesOfType("excalidraw");if(!e||0==e.length)return;this.targetView=e[0].view}return e instanceof ExcalidrawView&&(this.targetView=e),this.targetView}getExcalidrawAPI(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.excalidrawAPI:(errorMessage("targetView not set","getExcalidrawAPI()"),null)}getViewElements(){var e;if(!this.targetView||!(null===(e=this.targetView)||void 0===e?void 0:e._loaded))return errorMessage("targetView not set","getViewElements()"),[];const t=this.targetView.excalidrawAPI;return t?t.getSceneElements():[]}deleteViewElements(e){var t,A,i;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return errorMessage("targetView not set","deleteViewElements()"),!1;const n=null===(i=null===(A=this.targetView)||void 0===A?void 0:A.excalidrawRef)||void 0===i?void 0:i.current;if(!n)return!1;const a=n.getSceneElements(),r=n.getAppState();return this.targetView.updateScene({elements:a.filter((t=>!e.includes(t))),appState:r,commitToHistory:!0}),!0}getViewSelectedElement(){const e=this.getViewSelectedElements();return e?e[0]:null}getViewSelectedElements(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.getViewSelectedElements():(errorMessage("targetView not set","getViewSelectedElements()"),[])}getViewFileForImageElement(e){var t,A,i,n;return this.targetView&&(null===(t=this.targetView)||void 0===t?void 0:t._loaded)?e&&"image"===e.type?null===(n=null===(i=null===(A=this.targetView)||void 0===A?void 0:A.excalidrawData)||void 0===i?void 0:i.getFile(e.fileId))||void 0===n?void 0:n.file:(errorMessage("Must provide an image element as input","getViewFileForImageElement()"),null):(errorMessage("targetView not set","getViewFileForImageElement()"),null)}copyViewElementsToEAforEditing(e){e.forEach((e=>{this.elementsDict[e.id]=cloneElement(e)}))}setViewModeEnabled(e){var t,A,i;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return void errorMessage("targetView not set","viewToggleFullScreen()");const n=this.targetView;n.updateScene({appState:{viewModeEnabled:e}}),null===(i=null===(A=n.toolsPanelRef)||void 0===A?void 0:A.current)||void 0===i||i.setExcalidrawViewMode(e)}viewUpdateScene(e,t=!1){var A;this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?this.targetView.updateScene(e,t):errorMessage("targetView not set","viewToggleFullScreen()")}viewZoomToElements(e,t){var A;this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?this.targetView.zoomToElements(e,t):errorMessage("targetView not set","viewToggleFullScreen()")}viewToggleFullScreen(e=!1){var t,A,i;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return void errorMessage("targetView not set","viewToggleFullScreen()");const n=this.targetView,a=n.isFullscreen();e&&(n.updateScene({appState:{viewModeEnabled:!a},commitToHistory:!1}),null===(i=null===(A=this.targetView.toolsPanelRef)||void 0===A?void 0:A.current)||void 0===i||i.setExcalidrawViewMode(!a)),a?n.exitFullscreen():n.gotoFullscreen()}connectObjectWithViewSelectedElement(e,t,A,i){const n=this.getViewSelectedElement();if(!n)return!1;const a=n.id;return this.elementsDict[a]=n,this.connectObjects(e,t,a,A,i),delete this.elementsDict[a],!0}async addElementsToView(e=!1,t=!0,A=!1){var i;if(!this.targetView||!(null===(i=this.targetView)||void 0===i?void 0:i._loaded))return errorMessage("targetView not set","addElementsToView()"),!1;const n=this.getElements();return await this.targetView.addElements(n,e,t,this.imagesDict,A)}registerThisAsViewEA(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}deregisterThisAsViewEA(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}getEmbeddedFilesLoader(e){return new EmbeddedFilesLoader(this.plugin,e)}getExportSettings(e,t){return{withBackground:e,withTheme:t}}getBoundingBox(e){const t=getCommonBoundingBox(e);return{topX:t.minX,topY:t.minY,width:t.maxX-t.minX,height:t.maxY-t.minY}}getMaximumGroups(e){return getMaximumGroups(e)}getLargestElement(e){if(!e||0===e.length)return null;let t=e[0];const A=e=>e.height*e.width;let i=A(e[0]);for(let n=1;ni&&(i=a,t=e[n])}return t}getCommonGroupForElements(e){const t=e.map((e=>e.groupIds)).reduce(((e,t)=>t.filter((t=>e.includes(t)))));return t.length>0?t[0]:null}getElementsInTheSameGroupWithElement(e,t){if(!e||!t)return[];const A="text"===e.type&&e.containerId?t.filter((t=>t.id===e.containerId)):[];return 0===e.groupIds.length?1===A.length?[e,A[0]]:[e]:1===A.length?t.filter((t=>t.groupIds.some((t=>e.groupIds.includes(t)))||t===A[0])):t.filter((t=>t.groupIds.some((t=>e.groupIds.includes(t)))))}intersectElementWithLine(e,t,A,i){return intersectElementWithLine(e,t,A,i)}getScriptSettings(){var e;return this.activeScript?null!==(e=this.plugin.settings.scriptEngineSettings[this.activeScript])&&void 0!==e?e:{}:null}async setScriptSettings(e){if(!this.activeScript)return null;this.plugin.settings.scriptEngineSettings[this.activeScript]=e,await this.plugin.saveSettings()}openFileInNewOrAdjacentLeaf(e){if(!(e&&e instanceof obsidian_module.TFile))return null;if(!this.targetView)return null;const t=getNewOrAdjacentLeaf(this.plugin,this.targetView.leaf);return t.openFile(e,{active:!0}),t}measureText(e){var t,A;const i=_measureText(e,this.style.fontSize,this.style.fontFamily,getDefaultLineHeight(this.style.fontFamily));return{width:null!==(t=i.w)&&void 0!==t?t:0,height:null!==(A=i.h)&&void 0!==A?A:0}}async getOriginalImageSize(e){var t;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return errorMessage("targetView not set","getOriginalImageSize()"),null;if(!e||"image"!==e.type)return errorMessage("Please provide a single image element as input","getOriginalImageSize()"),null;const A=this.targetView.excalidrawData.getFile(e.fileId);if(!A)return errorMessage("Please provide a single image element as input","getOriginalImageSize()"),null;const i="dark"===this.getExcalidrawAPI().getAppState().theme,n=A.getImage(i);return await getImageSize(n)}verifyMinimumPluginVersion(e){return verifyMinimumPluginVersion(e)}isExcalidrawView(e){return e instanceof ExcalidrawView}selectElementsInView(e){var t;this.targetView&&(null===(t=this.targetView)||void 0===t?void 0:t._loaded)?e&&0!==e.length&&this.getExcalidrawAPI().selectElements(e):errorMessage("targetView not set","selectElementsInView()")}generateElementId(){return nanoid()}cloneElement(e){const t=JSON.parse(JSON.stringify(e));return t.id=nanoid(),t}moveViewElementToZIndex(e,t){var A;if(!this.targetView||!(null===(A=this.targetView)||void 0===A?void 0:A._loaded))return void errorMessage("targetView not set","moveViewElementToZIndex()");const i=this.getExcalidrawAPI(),n=this.getViewElements(),a=n.filter((t=>t.id===e));if(0===a.length)return void errorMessage(`Element (id: ${e}) not found`,"moveViewElementToZIndex");if(t>=n.length)return void i.bringToFront(a);if(t<0)return void i.sendToBack(a);const r=n.indexOf(a[0]);n.splice(t,0,n.splice(r,1)[0]),this.targetView.updateScene({elements:n,commitToHistory:!0})}hexStringToRgb(e){const t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}rgbToHexString(e){return O$1({r:e[0],g:e[1],b:e[2]}).stringHEX({alpha:!1})}hslToRgb(e){const t=O$1({h:e[0],s:e[1],l:e[2]});return[t.red,t.green,t.blue]}rgbToHsl(e){const t=O$1({r:e[0],g:e[1],b:e[2]});return[t.hue,t.saturation,t.lightness]}colorNameToHex(e){return COLOR_NAMES.has(e.toLowerCase().trim())?COLOR_NAMES.get(e.toLowerCase().trim()):e.trim()}getCM(e){if(e)return"string"==typeof e&&(e=this.colorNameToHex(e)),O$1(e);log("Creates a CM object. Visit https://github.com/lbragile/ColorMaster for documentation.")}importSVG(e){const t=svgToExcalidraw(e);return t.hasErrors?(new obsidian_module.Notice(`There were errors while parsing the given SVG:\n${[...t.errors].map((e=>e.innerHTML))}`),!1):(this.copyViewElementsToEAforEditing(t.content),!0)}}async function initExcalidrawAutomate(e){await initFonts();const t=new ExcalidrawAutomate(e);return window.ExcalidrawAutomate=t,t}function destroyExcalidrawAutomate(){delete window.ExcalidrawAutomate}function normalizeLinePoints(e){const t=[],[A,i]=e[0];for(let n=0;n-1||t.search("excalidraw-plugin: locked\n")>-1;await a.loadData(t,l,o?TextMode.parsed:TextMode.raw);let d=t.search("# Text Elements\n");-1==d&&(d=t.search("# Drawing\n"));let h=a.scene;A&&await i.loadSceneFiles(a,(e=>{if(e&&0!==e.length){for(const t of e)t.hasSVGwithBitmap&&(c=!0),a.scene.files[t.id]={mimeType:t.mimeType,id:t.id,dataURL:t.dataURL,created:t.created};h=scaleLoadedImage(a.scene,e).scene}}),n);let u=h.elements;if(s.hasGroupref){const t=s.hasSectionref?getTextElementsMatchingQuery(h.elements,["# "+s.sectionref],!0):h.elements.filter((e=>e.id===s.blockref));t.length>0&&(u=e.ea.getElementsInTheSameGroupWithElement(t[0],h.elements))}return s.hasTaskbone&&(u=u.filter((t=>{var A;return"freedraw"===t.type||"image"===t.type&&!e.isExcalidrawFile(null===(A=a.getFile(t.fileId))||void 0===A?void 0:A.file)}))),{elements:u,appState:h.appState,frontmatter:t.substring(0,d),files:h.files,hasSVGwithBitmap:c}}return{elements:[],appState:{},frontmatter:null,files:[],hasSVGwithBitmap:c}}async function createPNG(e,t=1,A,i,n,a,r,s=[],o,l,c,d){var h,u,g,p,m,w,f;i||(i=new EmbeddedFilesLoader(o)),c=null!=c?c:o.settings.exportPaddingSVG;const B=e?await getTemplate(o,e,!0,i,l):null;let E=null!==(h=null==B?void 0:B.elements)&&void 0!==h?h:[];E=E.concat(s);const b=null!=d?d:{};return(null==B?void 0:B.files)&&Object.values(B.files).forEach((e=>{b[e.id]=e})),await getPNG({type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:E,appState:{theme:null!==(g=null!=n?n:null===(u=null==B?void 0:B.appState)||void 0===u?void 0:u.theme)&&void 0!==g?g:a,viewBackgroundColor:null!==(m=null===(p=null==B?void 0:B.appState)||void 0===p?void 0:p.viewBackgroundColor)&&void 0!==m?m:r},files:b},{withBackground:null!==(w=null==A?void 0:A.withBackground)&&void 0!==w?w:o.settings.exportWithBackground,withTheme:null!==(f=null==A?void 0:A.withTheme)&&void 0!==f?f:o.settings.exportWithTheme},c,t)}async function createSVG(e,t=!1,A,i,n,a,r,s=[],o,l,c,d){var h,u,g,p,m,w,f;i||(i=new EmbeddedFilesLoader(o));const B=e?await getTemplate(o,e,!0,i,l):null;let E=null!==(h=null==B?void 0:B.elements)&&void 0!==h?h:[];E=E.concat(s),c=null!=c?c:o.settings.exportPaddingSVG;const b=null!=d?d:{};(null==B?void 0:B.files)&&Object.values(B.files).forEach((e=>{b[e.id]=e}));const v=await getSVG({type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:E,appState:{theme:null!==(g=null!=n?n:null===(u=null==B?void 0:B.appState)||void 0===u?void 0:u.theme)&&void 0!==g?g:a,viewBackgroundColor:null!==(m=null===(p=null==B?void 0:B.appState)||void 0===p?void 0:p.viewBackgroundColor)&&void 0!==m?m:r},files:b},{withBackground:null!==(w=null==A?void 0:A.withBackground)&&void 0!==w?w:o.settings.exportWithBackground,withTheme:null!==(f=null==A?void 0:A.withTheme)&&void 0!==f?f:o.settings.exportWithTheme},c),C=getEmbeddedFilenameParts(e);if(!C.hasGroupref&&(C.hasBlockref||C.hasSectionref)){let e=C.hasSectionref?getTextElementsMatchingQuery(E,["# "+C.sectionref],!0):E.filter((e=>e.id===C.blockref));if(e.length>0){const t=e[0].containerId;t&&(e=e.concat(E.filter((e=>e.id===t))));const A=o.ea.getBoundingBox(e),i=o.ea.getBoundingBox(E);v.viewBox.baseVal.x=A.topX-i.topX,v.viewBox.baseVal.y=A.topY-i.topY,v.viewBox.baseVal.width=A.width+2*c,v.viewBox.baseVal.height=A.height+2*c}}return(null==B?void 0:B.hasSVGwithBitmap)&&v.setAttribute("hasbitmap","true"),t?embedFontsInSVG(v,o):v}function estimateLineBound(e){let t=1/0,A=1/0,i=-1/0,n=-1/0;for(const[a,r]of e)t=Math.min(t,a),A=Math.min(A,r),i=Math.max(i,a),n=Math.max(n,r);return[t,A,i,n]}function estimateBounds(e){const t=getCommonBoundingBox(e);return[t.minX,t.minY,t.maxX,t.maxY]}function repositionElementsToCursor(e,t,A=!1){const[i,n,a,r]=estimateBounds(e);let[s,o]=[0,0];return[s,o]=A?[t.x-(i+a)/2,t.y-(n+r)/2]:[t.x-i,t.y-n],e.forEach((e=>{e.x=e.x+s,e.y=e.y+o})),e}function errorMessage(e,t){switch(e){case"targetView not set":errorlog({where:"ExcalidrawAutomate",source:t,message:"targetView not set, or no longer active. Use setView before calling this function"});break;case"mobile not supported":errorlog({where:"ExcalidrawAutomate",source:t,message:"this function is not avalable on Obsidian Mobile"});break;default:errorlog({where:"ExcalidrawAutomate",source:t,message:null!=e?e:"unknown error"})}}const insertLaTeXToView=e=>{const t=e.plugin.app,A=e.plugin.ea;new Prompt(t,t$d("ENTER_LATEX"),e.plugin.settings.latexBoilerplate,"\\color{red}\\oint_S {E_n dA = \\frac{1}{{\\varepsilon _0 }}} Q_{inside}").openAndGetValue((async t=>{t&&(A.reset(),await A.addLaTex(0,0,t),A.setView(e),A.addElementsToView(!0,!1,!0))}))},search=async e=>{const t=e.plugin.ea;t.reset(),t.setView(e);const A=t.getViewElements().filter((e=>"text"===e.type));if(0===A.length)return;let i=await ScriptEngine.inputPrompt(e,e.plugin,e.plugin.app,"Search for","use quotation marks for exact match","");if(!i)return;const n=i.matchAll(/"(.*?)"/g);let a,r=[];for(;!(a=n.next()).done;)r.push(a.value[1]);i=i.replaceAll(/"(.*?)"/g,""),r=r.concat(i.split(" ").filter((e=>0!==e.length))),t.targetView.selectElementsMatchingQuery(A,r)},getTextElementsMatchingQuery=(e,t,A=!1)=>e&&0!==e.length&&t&&0!==t.length?e.filter((e=>"text"===e.type&&t.some((t=>{if(A){const A=e.rawText.toLowerCase().split("\n")[0].trim().match(/^#*(# .*)/);return!(!A||2!==A.length)&&A[1]===t.toLowerCase()}return e.rawText.toLowerCase().replaceAll("\n"," ").trim().match(t.toLowerCase())})))):[],cloneElement=e=>Object.assign(Object.assign({},e),{version:e.version+1,updated:Date.now(),versionNonce:Math.floor(1e9*Math.random())}),verifyMinimumPluginVersion=e=>PLUGIN_VERSION===e||isVersionNewerThanOther(PLUGIN_VERSION,e),URL$1="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/index-new.md";class ScriptInstallPrompt extends obsidian_module.Modal{constructor(e){super(e.app),this.plugin=e}async onOpen(){this.contentEl.classList.add("excalidraw-scriptengine-install"),this.containerEl.classList.add("excalidraw-scriptengine-install");try{const e=await obsidian_module.request({url:URL$1});if(!e)return new obsidian_module.Notice("Error opening the Excalidraw Script Store page. Please double check that you can access the website. I've logged the link in developer console (press CTRL+SHIFT+i)",5e3),log(URL$1),void this.close();await obsidian_module.MarkdownRenderer.renderMarkdown(e,this.contentEl,"",this.plugin),this.contentEl.querySelectorAll("h1[data-heading],h2[data-heading],h3[data-heading]").forEach((e=>{e.setAttribute("id",e.getAttribute("data-heading"))})),this.contentEl.querySelectorAll("a.internal-link").forEach((e=>{e.removeAttribute("target")}))}catch(e){errorlog({where:"ScriptInstallPrompt.onOpen",error:e}),new obsidian_module.Notice("Could not open ScriptEngine repository"),this.close()}}onClose(){this.contentEl.empty()}}function r(e){var t,A,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t{e.view instanceof ExcalidrawView&&e.view.updatePinnedCustomPens()})),this.plugin.saveSettings();const e=this.plugin.settings.customPens[this.pen],t=this.view.excalidrawAPI;setPen(e,t),t.setActiveTool({type:"freedraw"})}}async createForm(){const e=e=>{let t="";if(COLOR_NAMES.has(e))return[COLOR_NAMES.get(e),t];const A=(new Option).style;if(A.color=e,A.color){const e=A.color.match(/^[^\d]*(\d*)[^\d]*(\d*)[^\d]*(\d*)[^\d]*([\d\.]*)?/);return e?(t=e[4]?(Math.round(255*parseFloat(e[4]))<<0).toString(16).padStart(2,"0"):"",[`#${(parseInt(e[1])<<0).toString(16).padStart(2,"0")}${(parseInt(e[2])<<0).toString(16).padStart(2,"0")}${(parseInt(e[3])<<0).toString(16).padStart(2,"0")}`,t]):[null,t]}return[null,t]},t=this.plugin.settings.customPens[this.pen],A=this.contentEl;let i,n,a,r,s;A.createEl("h1",{text:"Pen settings"}),new obsidian_module.Setting(A).setName("Pen type").setDesc("Select type of pen").addDropdown((e=>{e.addOption("default","Excalidraw Default").addOption("highlighter","Highlighter").addOption("finetip","Fine tip pen").addOption("fountain","Fountain pen").addOption("marker","Marker with Outline").addOption("thick-thin","Mindmap Thick-Thin").addOption("thin-thick-thin","Mindmap Thin-Thick-Thin").setValue(t.type).onChange((e=>{this.dirty=!0,t.type=e}))})).addButton((e=>e.setButtonText("Apply").onClick((()=>{this.dirty=!0,t.strokeColor=PENS[t.type].strokeColor,t.backgroundColor=PENS[t.type].backgroundColor,t.fillStyle=PENS[t.type].fillStyle,t.strokeWidth=PENS[t.type].strokeWidth,t.roughness=PENS[t.type].roughness,t.penOptions=Object.assign({},PENS[t.type].penOptions),A.empty(),this.createForm()})))),i=new obsidian_module.Setting(A).setName(fragWithHTML(t.freedrawOnly?"Stroke & fill applies to: Freedraw only":"Stroke & fill applies to: All shapes")).setDesc(fragWithHTML('"All shapes" means that if for example, you select a blue pen with dashed fill and then switch to a different tool (e.g. to a line, a circle, an arrow - i.e. not the freedraw tool), those will all have the same blue line and dashed fill.
"Only applies to the freedraw line" means that if for example you are writing black text, and you select a custom pen (e.g. a yellow highlighter), then after using the highlighter you switch to another tool, the previous settings (e.g. black stroke color) will apply to the new shape.')).addToggle((e=>e.setValue(t.freedrawOnly).onChange((e=>{this.dirty=!0,i.setName(fragWithHTML(e?"Stroke & fill applies to: Freedraw only":"Stroke & fill applies to: All shapes")),t.freedrawOnly=e}))));let o,l,c,d,h,u,g,[p,m]=e(t.strokeColor),w=!1;s=new obsidian_module.Setting(A).setName(fragWithHTML(Boolean(t.strokeColor)?"Stroke color: Preset color":"Stroke color: Current")).setDesc(fragWithHTML("Use current stroke color of the canvas, or set a specific preset color for the pen")).addToggle((A=>A.setValue(!Boolean(t.strokeColor)).onChange((A=>{this.dirty=!0,n.settingEl.style.display=A?"none":"",s.setName(fragWithHTML(A?"Stroke color: Current":"Stroke color: Preset color")),A?delete t.strokeColor:(r.getValue()||([p,m]=e("black"),a.setValue(p),r.setValue("black")),t.strokeColor=r.getValue())})))),n=new obsidian_module.Setting(A).setName("Select stroke color").addButton((A=>A.setButtonText("Use Canvas Current").onClick((()=>{var A,i;const n=this.api.getAppState(),s=null!==(i=null===(A=n.resetCustomPen)||void 0===A?void 0:A.currentItemStrokeColor)&&void 0!==i?i:n.currentItemStrokeColor;[p,m]=e(s),t.strokeColor=s,this.dirty=!0,r.setValue(s),w=!0,a.setValue(p)})))).addText((A=>{r=A,A.setValue(t.strokeColor).onChange((A=>{w=!0,this.dirty=!0,t.strokeColor=A,[p,m]=e(A),p&&a.setValue(p)}))})).addColorPicker((e=>{a=e,e.setValue(null!=p?p:"#000000").onChange((e=>{w?w=!1:(this.dirty=!0,t.strokeColor=e+m,r.setValue(e+m))}))})),n.settingEl.style.display=Boolean(t.strokeColor)?"":"none";let[f,B]=e(t.backgroundColor);o=new obsidian_module.Setting(A).setName(fragWithHTML(Boolean(t.backgroundColor)?"Background color: Preset color":"Background color: Current")).setDesc(fragWithHTML("Toggle to use the current background color of the canvas; or a preset color")).addToggle((A=>A.setValue(!Boolean(t.backgroundColor)).onChange((A=>{this.dirty=!0,o.setName(fragWithHTML(A?"Background color: Current":"Background color: Preset color")),c.settingEl.style.display=A?"none":"",l.settingEl.style.display=A||"transparent"===t.backgroundColor?"none":"",A?delete t.backgroundColor:(h.getValue()||([f,B]=e("black"),d.setValue(f),h.setValue("black")),u.setValue(!1))})))),c=new obsidian_module.Setting(A).setName(fragWithHTML("transparent"===t.backgroundColor?"Background: Transparent":"Color: Preset color")).setDesc("Background has color or is transparent").addToggle((e=>{u=e,e.setValue("transparent"===t.backgroundColor).onChange((e=>{this.dirty=!0,l.settingEl.style.display=e?"none":"",g.settingEl.style.display=e?"none":"",c.setName(fragWithHTML(e?"Background: Transparent":"Color: Preset color")),t.backgroundColor=e?"transparent":d.getValue()}))})),c.settingEl.style.display=Boolean(t.backgroundColor)?"":"none";let E,b,v,C,y,F,x,S,T,I=!1;l=new obsidian_module.Setting(A).setName("Background color").addButton((A=>A.setButtonText("Use Canvas Current").onClick((()=>{var A,i;const n=this.api.getAppState(),a=null!==(i=null===(A=n.resetCustomPen)||void 0===A?void 0:A.currentItemBackgroundColor)&&void 0!==i?i:n.currentItemBackgroundColor;[f,B]=e(a),t.backgroundColor=a,this.dirty=!0,h.setValue(a),I=!0,d.setValue(f)})))).addText((A=>{h=A,A.setValue(t.backgroundColor).onChange((A=>{I=!0,this.dirty=!0,t.backgroundColor=A,[f,B]=e(A),f&&d.setValue(f)}))})).addColorPicker((e=>{d=e,e.setValue(null!=f?f:"#000000").onChange((e=>{I?I=!1:(this.dirty=!0,t.backgroundColor=e+B,h.setValue(e+B))}))})),l.settingEl.style.display=Boolean(t.backgroundColor)&&"transparent"!==t.backgroundColor?"":"none",g=new obsidian_module.Setting(A).setName("Fill Style").addDropdown((e=>e.addOption("","Unset").addOption("dots","Dots (⚠ VERY SLOW performance on large objects!)").addOption("zigzag","Zigzag").addOption("zigzag-line","Zigzag-line").addOption("dashed","Dashed").addOption("hachure","Hachure").addOption("cross-hatch","Cross-hatch").addOption("solid","Solid").setValue(t.fillStyle).onChange((e=>{this.dirty=!0,t.fillStyle=e})))),g.settingEl.style.display=Boolean(t.backgroundColor)&&"transparent"!==t.backgroundColor?"":"none",E=new obsidian_module.Setting(A).setName(fragWithHTML(`Sloppiness: ${null===t.roughness?"Not Set":t.roughness<=.5?"Architect (":t.roughness<=1.5?"Artist (":"Cartoonist ("}${null===t.roughness?"":`${t.roughness})`}`)).setDesc("Line sloppiness of the shape fill pattern").addSlider((e=>e.setLimits(-.5,3,.5).setValue(null===t.roughness?-.5:t.roughness).onChange((e=>{this.dirty=!0,t.roughness=-.5===e?null:e,E.setName(fragWithHTML(`Sloppiness: ${null===t.roughness?"Not Set":t.roughness<=.5?"Architect (":t.roughness<=1.5?"Artist (":"Cartoonist ("}${null===t.roughness?"":`${t.roughness})`}`))})))),b=new obsidian_module.Setting(A).setName(fragWithHTML(`Stroke Width ${0===t.strokeWidth?"Not Set":t.strokeWidth}`)).addSlider((e=>e.setLimits(0,5,.5).setValue(t.strokeWidth).onChange((e=>{this.dirty=!0,t.strokeWidth=e,b.setName(fragWithHTML(`Stroke Width ${0===t.strokeWidth?"Not Set":t.strokeWidth}`))})))),new obsidian_module.Setting(A).setName("Highlighter pen?").addToggle((e=>e.setValue(t.penOptions.highlighter).onChange((e=>{this.dirty=!0,t.penOptions.highlighter=e})))),new obsidian_module.Setting(A).setName("Pressure sensitve pen?").setDesc(fragWithHTML("toggle on: pressure sensitive
toggle off: constant pressure")).addToggle((e=>e.setValue(!t.penOptions.constantPressure).onChange((e=>{this.dirty=!0,t.penOptions.constantPressure=!e,v.settingEl.style.display=t.penOptions.constantPressure?"none":""})))),t.penOptions.hasOutline&&0===t.penOptions.outlineWidth&&(t.penOptions.outlineWidth=.5,this.dirty=!0),!t.penOptions.hasOutline&&t.penOptions.outlineWidth>0&&(t.penOptions.outlineWidth=0,this.dirty=!0),C=new obsidian_module.Setting(A).setName(fragWithHTML(0===t.penOptions.outlineWidth?"No outline":`Outline width ${t.penOptions.outlineWidth}`)).setDesc("If the stroke has an outline, this will mean the stroke color is the outline color, and the background color is the pen stroke's fill color. If the pen does not have an outline then the pen color is the stroke color. The Fill Style setting applies to the fill style of the enclosed shape, not of the line itself. The line can only have solid fill.").addSlider((e=>e.setLimits(0,8,.5).setValue(t.penOptions.outlineWidth).onChange((e=>{this.dirty=!0,t.penOptions.outlineWidth=e,t.penOptions.hasOutline=e>0,C.setName(fragWithHTML(0===t.penOptions.outlineWidth?"No outline":`Outline width ${t.penOptions.outlineWidth}`))})))),A.createEl("h2",{text:"Perfect Freehand settings"}),A.createEl("p").innerHTML='Read the Perfect Freehand documentation following this link.',y=new obsidian_module.Setting(A).setName(fragWithHTML(`Thinnning ${t.penOptions.options.thinning}`)).setDesc(fragWithHTML("The effect of pressure on the stroke's size.
To create a stroke with a steady line, set the thinning option to 0.
To create a stroke that gets thinner with pressure instead of thicker, use a negative number for the thinning option.")).addSlider((e=>e.setLimits(-1,1,.05).setValue(t.penOptions.options.thinning).onChange((e=>{this.dirty,y.setName(fragWithHTML(`Thinnning ${e}`)),t.penOptions.options.thinning=e})))),F=new obsidian_module.Setting(A).setName(fragWithHTML(`Smoothing ${t.penOptions.options.smoothing}`)).setDesc(fragWithHTML("How much to soften the stroke's edges.")).addSlider((e=>e.setLimits(0,1,.05).setValue(t.penOptions.options.smoothing).onChange((e=>{this.dirty,F.setName(fragWithHTML(`Smoothing ${e}`)),t.penOptions.options.smoothing=e})))),x=new obsidian_module.Setting(A).setName(fragWithHTML(`Streamline ${t.penOptions.options.streamline}`)).setDesc(fragWithHTML("\tHow much to streamline the stroke.")).addSlider((e=>e.setLimits(0,1,.05).setValue(t.penOptions.options.streamline).onChange((e=>{this.dirty,x.setName(fragWithHTML(`Streamline ${e}`)),t.penOptions.options.streamline=e})))),new obsidian_module.Setting(A).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info click here')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(t.penOptions.options.easing).onChange((e=>{this.dirty=!0,t.penOptions.options.easing=e})))),v=new obsidian_module.Setting(A).setName("Simulate Pressure").setDesc("Whether to simulate pressure based on velocity.").addDropdown((e=>e.addOption("true","Always").addOption("false","Never").addOption("","Yes for mouse, No for pen").setValue(!0===t.penOptions.options.simulatePressure?"true":!1===t.penOptions.options.simulatePressure?"false":"").onChange((e=>{switch(this.dirty=!0,e){case"true":t.penOptions.options.simulatePressure=!0;break;case"false":t.penOptions.options.simulatePressure=!1;break;default:delete t.penOptions.options.simulatePressure}})))),v.settingEl.style.display=t.penOptions.constantPressure?"none":"",A.createEl("h3",{text:"Start"}),A.createEl("p",{text:"Tapering options for the start of the line."}),new obsidian_module.Setting(A).setName("Cap Start").setDesc("Whether to draw a cap").addToggle((e=>e.setValue(t.penOptions.options.start.cap).onChange((e=>{this.dirty=!0,t.penOptions.options.start.cap=e})))),S=new obsidian_module.Setting(A).setName(fragWithHTML(`Taper: ${!0===t.penOptions.options.start.taper?"true":t.penOptions.options.start.taper}`)).setDesc("The distance to taper. If set to true, the taper will be the total length of the stroke.").addSlider((e=>e.setLimits(0,151,1).setValue("boolean"==typeof t.penOptions.options.start.taper?151:t.penOptions.options.start.taper).onChange((e=>{this.dirty,t.penOptions.options.start.taper=151===e||e,S.setName(fragWithHTML(`Taper: ${!0===t.penOptions.options.start.taper?"true":t.penOptions.options.start.taper}`))})))),new obsidian_module.Setting(A).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info click here')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(t.penOptions.options.start.easing).onChange((e=>{this.dirty=!0,t.penOptions.options.start.easing=e})))),A.createEl("h3",{text:"End"}),A.createEl("p",{text:"Tapering options for the end of the line."}),new obsidian_module.Setting(A).setName("Cap End").setDesc("Whether to draw a cap").addToggle((e=>e.setValue(t.penOptions.options.end.cap).onChange((e=>{this.dirty=!0,t.penOptions.options.end.cap=e})))),T=new obsidian_module.Setting(A).setName(fragWithHTML(`Taper: ${!0===t.penOptions.options.end.taper?"true":t.penOptions.options.end.taper}`)).setDesc("The distance to taper. If set to true, the taper will be the total length of the stroke.").addSlider((e=>e.setLimits(0,151,1).setValue("boolean"==typeof t.penOptions.options.end.taper?151:t.penOptions.options.end.taper).onChange((e=>{this.dirty,t.penOptions.options.end.taper=151===e||e,T.setName(fragWithHTML(`Taper: ${!0===t.penOptions.options.end.taper?"true":t.penOptions.options.end.taper}`))})))),new obsidian_module.Setting(A).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info click here')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(t.penOptions.options.end.easing).onChange((e=>{this.dirty=!0,t.penOptions.options.end.easing=e}))))}}const ICONS={ExportImage:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("g",{strokeWidth:"1.25"},React__namespace.createElement("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),React__namespace.createElement("path",{d:"M15 8h.01"}),React__namespace.createElement("path",{d:"M12 20h-5a3 3 0 0 1 -3 -3v-10a3 3 0 0 1 3 -3h10a3 3 0 0 1 3 3v5"}),React__namespace.createElement("path",{d:"M4 15l4 -4c.928 -.893 2.072 -.893 3 0l4 4"}),React__namespace.createElement("path",{d:"M14 14l1 -1c.617 -.593 1.328 -.793 2.009 -.598"}),React__namespace.createElement("path",{d:"M19 16v6"}),React__namespace.createElement("path",{d:"M22 19l-3 3l-3 -3"}))),Discord:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"var(--icon-fill-color)",stroke:"none",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 640 512"},React__namespace.createElement("path",{d:"M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"})),Github:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"}),React__namespace.createElement("path",{d:"M9 18c-4.51 2-5-2-7-2"})),YouTube:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M12 19c-2.3 0-6.4-.2-8.1-.6-.7-.2-1.2-.7-1.4-1.4-.3-1.1-.5-3.4-.5-5s.2-3.9.5-5c.2-.7.7-1.2 1.4-1.4C5.6 5.2 9.7 5 12 5s6.4.2 8.1.6c.7.2 1.2.7 1.4 1.4.3 1.1.5 3.4.5 5s-.2 3.9-.5 5c-.2.7-.7 1.2-1.4 1.4-1.7.4-5.8.6-8.1.6 0 0 0 0 0 0z"}),React__namespace.createElement("polygon",{points:"10 15 15 12 10 9"})),heart:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M20.42 4.58a5.4 5.4 0 0 0-7.65 0l-.77.78-.77-.78a5.4 5.4 0 0 0-7.65 0C1.46 6.7 1.33 10.28 4 13l8 8 8-8c2.67-2.72 2.54-6.3.42-8.42z"})),twitter:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"})),exportLibrary:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 200 190",fill:"var(--icon-fill-color)"},React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M50 10h20v20H50"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M50 10h20m-20 0h20m0 0v20m0-20v20m0 0H50m20 0H50m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M90 10h20v20H90"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M90 10h20m-20 0h20m0 0v20m0-20v20m0 0H90m20 0H90m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M130 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M130 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M170 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M170 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M70 50h60v80h20l-50 50-50-50h20V50"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M70 50h60m-60 0h60m0 0v80m0-80v80m0 0h20m-20 0h20m0 0-50 50m50-50-50 50m0 0-50-50m50 50-50-50m0 0h20m-20 0h20m0 0V50m0 80V50m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M10 10h20v20H10"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M10 10h20m-20 0h20m0 0v20m0-20v20m0 0H10m20 0H10m0 0V10m0 20V10"}))),insertPDF:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M64 464H96v48H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V288H336V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM176 352h32c30.9 0 56 25.1 56 56s-25.1 56-56 56H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H192v48h16zm96-80h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H304c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H320v96h16zm80-112c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V432 368z"})),insertImage:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z"})),insertMD:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 384 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z"})),insertLaTeX:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",stroke:"none",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z"})),insertLink:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"none",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"})),search:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M500.3 443.7l-119.7-119.7c27.22-40.41 40.65-90.9 33.46-144.7C401.8 87.79 326.8 13.32 235.2 1.723C99.01-15.51-15.51 99.01 1.724 235.2c11.6 91.64 86.08 166.7 177.6 178.9c53.8 7.189 104.3-6.236 144.7-33.46l119.7 119.7c15.62 15.62 40.95 15.62 56.57 0C515.9 484.7 515.9 459.3 500.3 443.7zM79.1 208c0-70.58 57.42-128 128-128s128 57.42 128 128c0 70.58-57.42 128-128 128S79.1 278.6 79.1 208z"})),ocr:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"m6 18 6-12 6 12"}),React__namespace.createElement("path",{d:"M8 14h8"}),React__namespace.createElement("path",{d:"M3 7V5a2 2 0 0 1 2-2h2"}),React__namespace.createElement("path",{d:"M17 3h2a2 2 0 0 1 2 2v2"}),React__namespace.createElement("path",{d:"M21 17v2a2 2 0 0 1-2 2h-2"}),React__namespace.createElement("path",{d:"M7 21H5a2 2 0 0 1-2-2v-2"})),scriptEngine:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeLinecap:"round",strokeWidth:"4"},React__namespace.createElement("g",{transform:"translate(-8,-8)"},React__namespace.createElement("path",{d:"M24.318 37.983c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749m.126-.104c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749",fill:"none",strokeWidth:"2"}),React__namespace.createElement("path",{d:"M81.235 56.502a23.3 23.3 0 0 1-1.46 8.068 20.785 20.785 0 0 1-1.762 3.72 24.068 24.068 0 0 1-5.337 6.26 22.575 22.575 0 0 1-3.449 2.358 23.726 23.726 0 0 1-7.803 2.803 24.719 24.719 0 0 1-8.333 0 24.102 24.102 0 0 1-4.028-1.074 23.71 23.71 0 0 1-3.776-1.729 23.259 23.259 0 0 1-6.369-5.265 23.775 23.775 0 0 1-2.416-3.353 24.935 24.935 0 0 1-1.762-3.72 23.765 23.765 0 0 1-1.083-3.981 23.454 23.454 0 0 1 0-8.173c.252-1.336.604-2.698 1.083-3.956a24.935 24.935 0 0 1 1.762-3.72 22.587 22.587 0 0 1 2.416-3.378c.881-1.048 1.888-2.017 2.946-2.908a24.38 24.38 0 0 1 3.423-2.357 23.71 23.71 0 0 1 3.776-1.73 21.74 21.74 0 0 1 4.028-1.047 23.437 23.437 0 0 1 8.333 0 24.282 24.282 0 0 1 7.803 2.777 26.198 26.198 0 0 1 3.45 2.357 24.62 24.62 0 0 1 5.336 6.287 20.785 20.785 0 0 1 1.762 3.72 21.32 21.32 0 0 1 1.083 3.955c.251 1.336.302 3.405.377 4.086.05.681.05-.68 0 0",fill:"none"}),React__namespace.createElement("path",{d:"M69.404 56.633c-6.596-3.3-13.216-6.6-19.51-9.744m19.51 9.744c-6.747-3.379-13.493-6.758-19.51-9.744m0 0v19.489m0-19.49v19.49m0 0c4.355-2.148 8.71-4.322 19.51-9.745m-19.51 9.745c3.978-1.965 7.93-3.956 19.51-9.745m0 0h0m0 0h0"}))),openLink:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v7"}),React__namespace.createElement("polyline",{points:"14 2 14 8 20 8"}),React__namespace.createElement("path",{d:"m10 18 3-3-3-3"}),React__namespace.createElement("path",{d:"M4 18v-1a2 2 0 0 1 2-2h6"})),openLinkProperties:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v7"}),React__namespace.createElement("polyline",{points:"14 2 14 8 20 8",fill:"var(--icon-fill-color)"}),React__namespace.createElement("path",{d:"m10 18 3-3-3-3"}),React__namespace.createElement("path",{d:"M4 18v-1a2 2 0 0 1 2-2h6"})),switchToMarkdown:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512",stroke:"var(--icon-fill-color)",strokeWidth:"10",fill:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"})),gotoFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M128 32H32C14.31 32 0 46.31 0 64v96c0 17.69 14.31 32 32 32s32-14.31 32-32V96h64c17.69 0 32-14.31 32-32S145.7 32 128 32zM416 32h-96c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32V64C448 46.31 433.7 32 416 32zM128 416H64v-64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96c0 17.69 14.31 32 32 32h96c17.69 0 32-14.31 32-32S145.7 416 128 416zM416 320c-17.69 0-32 14.31-32 32v64h-64c-17.69 0-32 14.31-32 32s14.31 32 32 32h96c17.69 0 32-14.31 32-32v-96C448 334.3 433.7 320 416 320z"})),exitFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M128 320H32c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32v-96C160 334.3 145.7 320 128 320zM416 320h-96c-17.69 0-32 14.31-32 32v96c0 17.69 14.31 32 32 32s32-14.31 32-32v-64h64c17.69 0 32-14.31 32-32S433.7 320 416 320zM320 192h96c17.69 0 32-14.31 32-32s-14.31-32-32-32h-64V64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96C288 177.7 302.3 192 320 192zM128 32C110.3 32 96 46.31 96 64v64H32C14.31 128 0 142.3 0 160s14.31 32 32 32h96c17.69 0 32-14.31 32-32V64C160 46.31 145.7 32 128 32z"})),releaseNotes:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M0 219.2v212.5c0 14.25 11.62 26.25 26.5 27C75.32 461.2 180.2 471.3 240 511.9V245.2C181.4 205.5 79.99 194.8 29.84 192C13.59 191.1 0 203.6 0 219.2zM482.2 192c-50.09 2.848-151.3 13.47-209.1 53.09C272.1 245.2 272 245.3 272 245.5v266.5c60.04-40.39 164.7-50.76 213.5-53.28C500.4 457.9 512 445.9 512 431.7V219.2C512 203.6 498.4 191.1 482.2 192zM352 96c0-53-43-96-96-96S160 43 160 96s43 96 96 96S352 149 352 96z"})),rawMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 60"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"4",d:"M20 10H10m10 0H10m0 0v40m0-40v40m0 0h10m-10 0h10M40 10H30m10 0H30m0 0v40m0-40v40m0 0h10m-10 0h10M60 10h10m-10 0h10m0 0v40m0-40v40m0 0H60m10 0H60M80 10h10m-10 0h10m0 0v40m0-40v40m0 0H80m10 0H80"})),parsedMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",stroke:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M574.1 280.4l-45.38-181.8c-5.875-23.63-21.62-44-43-55.75c-21.5-11.75-46.1-14.13-70.25-6.375l-15.25 5.125c-8.375 2.75-12.87 11.88-10 20.25l5 15.13c2.75 8.375 11.88 12.88 20.25 10.13l13.12-4.375c10.88-3.625 23-3.625 33.25 1.75c10.25 5.375 17.5 14.5 20.38 25.75l38.38 153.9c-22.12-6.875-49.75-12.5-81.13-12.5c-34.88 0-73.1 7-114.9 26.75H251.4C210.5 258.6 171.4 251.6 136.5 251.6c-31.38 0-59 5.625-81.12 12.5l38.38-153.9c2.875-11.25 10.12-20.38 20.5-25.75C124.4 79.12 136.5 79.12 147.4 82.74l13.12 4.375c8.375 2.75 17.5-1.75 20.25-10.13l5-15.13C188.6 53.49 184.1 44.37 175.6 41.62l-15.25-5.125c-23.13-7.75-48.75-5.375-70.13 6.375c-21.37 11.75-37.12 32.13-43 55.75L1.875 280.4C.6251 285.4 .0001 290.6 .0001 295.9v70.25C.0001 428.1 51.63 480 115.3 480h37.13c60.25 0 110.4-46 114.9-105.4l2.875-38.63h35.75l2.875 38.63C313.3 433.1 363.4 480 423.6 480h37.13c63.62 0 115.2-51 115.2-113.9V295.9C576 290.6 575.4 285.5 574.1 280.4zM203.4 369.7c-2 26-24.38 46.25-51 46.25H115.2C87 415.1 64 393.6 64 366.1v-37.5c18.12-6.5 43.38-13 72.62-13c23.88 0 47.25 4.375 69.88 13L203.4 369.7zM512 366.1c0 27.5-23 49.88-51.25 49.88h-37.13c-26.62 0-49-20.25-51-46.25l-3.125-41.13c22.62-8.625 46.13-13 70-13c29 0 54.38 6.5 72.5 13V366.1z"})),convertFile:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",viewBox:"0 110 700 340",xmlns:"http://www.w3.org/2000/svg",stroke:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"m593.95 239.4v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4688-1.457-3.1875-2.6445-5.0742-3.5h-1.5742c-1.4727-0.49219-3.0039-0.78516-4.5508-0.875h-124.25c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v87.5h-70v-105.88-1.0508c-0.089844-1.5469-0.38281-3.0781-0.875-4.5508v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4727-1.457-3.1914-2.6445-5.0742-3.5h-1.5742c-1.7031-0.875-3.5352-1.4688-5.4258-1.75h-123.55c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v245c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-52.5h70v122.5c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-192.5-1.0508c-0.14453-1.5547-0.5-3.0859-1.0508-4.5508zm-313.95 110.6h-140v-210h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v87.5h-52.5c-6.2539 0-12.031 3.3359-15.156 8.75s-3.125 12.086 0 17.5 8.9023 8.75 15.156 8.75h52.5zm140 70v-105h27.824l-5.0742 5.0742c-3.7031 3.1719-5.9141 7.7461-6.1055 12.617-0.1875 4.8711 1.668 9.6016 5.1133 13.051 3.4492 3.4453 8.1797 5.3008 13.051 5.1133 4.8711-0.19141 9.4453-2.4023 12.617-6.1055l35-35c3.2578-3.2773 5.0898-7.7148 5.0898-12.336 0-4.625-1.832-9.0586-5.0898-12.34l-35-35c-4.5078-3.8555-10.66-5.1719-16.348-3.4883-5.6875 1.6797-10.137 6.1289-11.816 11.816-1.6836 5.6914-0.37109 11.844 3.4883 16.348l5.0742 5.0742h-27.824v-69.824h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v157.5z"})),cog:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M495.9 166.6C499.2 175.2 496.4 184.9 489.6 191.2L446.3 230.6C447.4 238.9 448 247.4 448 256C448 264.6 447.4 273.1 446.3 281.4L489.6 320.8C496.4 327.1 499.2 336.8 495.9 345.4C491.5 357.3 486.2 368.8 480.2 379.7L475.5 387.8C468.9 398.8 461.5 409.2 453.4 419.1C447.4 426.2 437.7 428.7 428.9 425.9L373.2 408.1C359.8 418.4 344.1 427 329.2 433.6L316.7 490.7C314.7 499.7 307.7 506.1 298.5 508.5C284.7 510.8 270.5 512 255.1 512C241.5 512 227.3 510.8 213.5 508.5C204.3 506.1 197.3 499.7 195.3 490.7L182.8 433.6C167 427 152.2 418.4 138.8 408.1L83.14 425.9C74.3 428.7 64.55 426.2 58.63 419.1C50.52 409.2 43.12 398.8 36.52 387.8L31.84 379.7C25.77 368.8 20.49 357.3 16.06 345.4C12.82 336.8 15.55 327.1 22.41 320.8L65.67 281.4C64.57 273.1 64 264.6 64 256C64 247.4 64.57 238.9 65.67 230.6L22.41 191.2C15.55 184.9 12.82 175.3 16.06 166.6C20.49 154.7 25.78 143.2 31.84 132.3L36.51 124.2C43.12 113.2 50.52 102.8 58.63 92.95C64.55 85.8 74.3 83.32 83.14 86.14L138.8 103.9C152.2 93.56 167 84.96 182.8 78.43L195.3 21.33C197.3 12.25 204.3 5.04 213.5 3.51C227.3 1.201 241.5 0 256 0C270.5 0 284.7 1.201 298.5 3.51C307.7 5.04 314.7 12.25 316.7 21.33L329.2 78.43C344.1 84.96 359.8 93.56 373.2 103.9L428.9 86.14C437.7 83.32 447.4 85.8 453.4 92.95C461.5 102.8 468.9 113.2 475.5 124.2L480.2 132.3C486.2 143.2 491.5 154.7 495.9 166.6V166.6zM256 336C300.2 336 336 300.2 336 255.1C336 211.8 300.2 175.1 256 175.1C211.8 175.1 176 211.8 176 255.1C176 300.2 211.8 336 256 336z"})),trayMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M618.1 97.67c-13.02-4.375-27.45 .1562-35.72 11.16L464 266.7l-118.4-157.8c-8.266-11.03-22.64-15.56-35.72-11.16C296.8 102 288 114.2 288 128v256c0 17.69 14.33 32 32 32s32-14.31 32-32v-160l86.41 115.2c12.06 16.12 39.13 16.12 51.19 0L576 224v160c0 17.69 14.33 32 32 32s32-14.31 32-32v-256C640 114.2 631.2 102 618.1 97.67zM224 96.01H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h64v223.1c0 17.69 14.33 31.99 32 31.99s32-14.3 32-31.99V160h64c17.67 0 32-14.31 32-32S241.7 96.01 224 96.01z"})),copyElementLink:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 260 260","aria-hidden":"true",focusable:"false",role:"img"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"8",d:"M10 10h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0V10m0 40V10M210 10h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0V10m0 40V10M210 210h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0v-40m0 40v-40M10 210h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0v-40m0 40v-40M30 210V50m0 160V50M50 30h160M50 30h160M230 50v160m0-160v160M50 230h160m-160 0h160"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M110 90c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10m0-80c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10M150 90c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10m0-80c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M89.868 130.198c13.36-.03 66.78-.17 80.13-.2m-80.13.2c13.36-.03 66.78-.17 80.13-.2"})),importSVG:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 526 526"},React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"var(--input-bg-color)",strokeWidth:"0",d:"m133.462 71 .33-6.54.97-6.34 1.58-6.13 2.16-5.88 2.69-5.6 3.21-5.27 3.69-4.93 4.13-4.55 4.55-4.13 4.93-3.69 5.27-3.21 5.6-2.69 5.88-2.16 6.13-1.58 6.34-.97 6.54-.33h160v128l.16 3.28.49 3.18.79 3.07 1.07 2.94 1.35 2.8 1.6 2.63 1.84 2.47 2.06 2.27 2.27 2.06 2.47 1.84 2.63 1.6 2.8 1.35 2.94 1.07 3.07.79 3.18.49 3.28.16h128v288l-.33 6.54-.97 6.34-1.58 6.13-2.16 5.88-2.69 5.6-3.21 5.27-3.69 4.93-4.13 4.55-4.55 4.13-4.93 3.69-5.27 3.21-5.6 2.69-5.88 2.16-6.13 1.58-6.34.97-6.54.33h-256l-6.54-.33-6.34-.97-6.13-1.58-5.88-2.16-5.6-2.69-5.27-3.21-4.93-3.69-4.55-4.13-4.13-4.55-3.69-4.93-3.21-5.27-2.69-5.6-2.16-5.88-1.58-6.13-.97-6.34-.33-6.54V343h174.1l-39 39-1.65 1.83-1.43 1.94-1.22 2.05-.99 2.13-.77 2.2-.55 2.25-.33 2.29-.11 2.3.11 2.3.33 2.28.55 2.24.77 2.19.99 2.12 1.22 2.04 1.43 1.93 1.65 1.81 1.83 1.64 1.94 1.42 2.05 1.2 2.13.99 2.2.76 2.25.56 2.29.33 2.3.11 2.3-.1 2.28-.33 2.24-.54 2.19-.77 2.12-.98 2.04-1.21 1.93-1.43 1.81-1.65 80-80 1.65-1.83 1.43-1.94 1.22-2.05.99-2.13.77-2.2.55-2.25.33-2.29.11-2.3-.11-2.3-.33-2.28-.55-2.24-.77-2.19-.99-2.12-1.22-2.04-1.43-1.93-1.65-1.81-80-80-1.83-1.65-1.94-1.43-2.05-1.22-2.13-.99-2.2-.77-2.25-.55-2.29-.33-2.3-.11-2.3.11-2.28.33-2.24.55-2.19.77-2.12.99-2.04 1.22-1.93 1.43-1.81 1.65-1.64 1.83-1.42 1.94-1.2 2.05-.99 2.13-.76 2.2-.56 2.25-.33 2.29-.11 2.3.1 2.3.33 2.28.54 2.24.77 2.19.98 2.12 1.21 2.04 1.43 1.93 1.65 1.81 39 39h-174.1V71"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"18",d:"M133.462 71s0 0 0 0m0 0s0 0 0 0m0 0 .33-6.54m-.33 6.54c.13-2.57.26-5.13.33-6.54m0 0c.36-2.33.72-4.67.97-6.34m-.97 6.34c.35-2.26.69-4.53.97-6.34m0 0c.51-1.99 1.03-3.98 1.58-6.13m-1.58 6.13c.4-1.56.81-3.12 1.58-6.13m0 0c.81-2.22 1.62-4.43 2.16-5.88m-2.16 5.88c.45-1.22.9-2.44 2.16-5.88m0 0c.72-1.51 1.45-3.01 2.69-5.6m-2.69 5.6c.69-1.45 1.39-2.9 2.69-5.6m0 0c.93-1.52 1.86-3.05 3.21-5.27m-3.21 5.27c.97-1.59 1.94-3.18 3.21-5.27m0 0c.86-1.15 1.71-2.29 3.69-4.93m-3.69 4.93c.78-1.04 1.56-2.08 3.69-4.93m0 0c1.53-1.69 3.07-3.38 4.13-4.55m-4.13 4.55c1.54-1.69 3.07-3.38 4.13-4.55m0 0c1.03-.93 2.06-1.87 4.55-4.13m-4.55 4.13c.98-.89 1.97-1.78 4.55-4.13m0 0c1.64-1.23 3.28-2.46 4.93-3.69m-4.93 3.69c1.72-1.29 3.45-2.58 4.93-3.69m0 0c1.11-.68 2.23-1.35 5.27-3.21m-5.27 3.21c1.5-.91 3.01-1.83 5.27-3.21m0 0c1.87-.89 3.73-1.79 5.6-2.69m-5.6 2.69c2.09-1 4.17-2.01 5.6-2.69m0 0c1.72-.64 3.44-1.27 5.88-2.16m-5.88 2.16c1.94-.72 3.89-1.43 5.88-2.16m0 0c2.3-.59 4.6-1.19 6.13-1.58m-6.13 1.58c2.32-.6 4.65-1.2 6.13-1.58m0 0c2.06-.31 4.12-.63 6.34-.97m-6.34.97c2.34-.36 4.69-.72 6.34-.97m0 0c2.05-.1 4.09-.21 6.54-.33m-6.54.33c2.06-.1 4.12-.21 6.54-.33m0 0h160m-160 0h160m0 0v128m0-128v128m0 0s0 0 0 0m0 0s0 0 0 0m0 0 .16 3.28m-.16-3.28c.06 1.16.12 2.32.16 3.28m0 0c.13.82.26 1.64.49 3.18m-.49-3.18c.18 1.13.35 2.26.49 3.18m0 0c.24.95.49 1.91.79 3.07m-.79-3.07c.28 1.1.56 2.2.79 3.07m0 0c.39 1.06.78 2.13 1.07 2.94m-1.07-2.94c.42 1.15.84 2.3 1.07 2.94m0 0c.38.79.76 1.57 1.35 2.8m-1.35-2.8c.4.82.79 1.64 1.35 2.8m0 0c.45.75.91 1.5 1.6 2.63m-1.6-2.63c.4.65.8 1.31 1.6 2.63m0 0c.56.76 1.13 1.52 1.84 2.47m-1.84-2.47c.58.79 1.17 1.57 1.84 2.47m0 0c.75.82 1.5 1.65 2.06 2.27m-2.06-2.27c.75.82 1.5 1.65 2.06 2.27m0 0c.74.66 1.47 1.33 2.27 2.06m-2.27-2.06c.89.81 1.78 1.61 2.27 2.06m0 0c.69.51 1.37 1.02 2.47 1.84m-2.47-1.84c.68.5 1.35 1.01 2.47 1.84m0 0c.81.49 1.62.99 2.63 1.6m-2.63-1.6c.74.45 1.47.9 2.63 1.6m0 0c.72.35 1.43.69 2.8 1.35m-2.8-1.35c.61.3 1.22.59 2.8 1.35m0 0c.85.31 1.69.62 2.94 1.07m-2.94-1.07c1.03.38 2.07.75 2.94 1.07m0 0c.83.22 1.67.43 3.07.79m-3.07-.79 3.07.79m0 0c1.07.16 2.14.33 3.18.49m-3.18-.49c1.2.18 2.39.36 3.18.49m0 0 3.28.16m-3.28-.16c.97.04 1.93.09 3.28.16m0 0h128m-128 0h128m0 0v288m0-288v288m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.1 2.02-.2 4.04-.33 6.54m.33-6.54c-.13 2.52-.26 5.05-.33 6.54m0 0c-.33 2.14-.66 4.29-.97 6.34m.97-6.34c-.32 2.06-.63 4.12-.97 6.34m0 0c-.59 2.28-1.17 4.55-1.58 6.13m1.58-6.13c-.53 2.07-1.07 4.14-1.58 6.13m0 0c-.73 1.99-1.46 3.97-2.16 5.88m2.16-5.88c-.72 1.97-1.44 3.94-2.16 5.88m0 0c-.94 1.97-1.89 3.93-2.69 5.6m2.69-5.6c-.91 1.89-1.82 3.77-2.69 5.6m0 0c-.89 1.46-1.78 2.92-3.21 5.27m3.21-5.27c-.65 1.05-1.29 2.11-3.21 5.27m0 0c-1.13 1.51-2.25 3.01-3.69 4.93m3.69-4.93c-1.29 1.72-2.58 3.44-3.69 4.93m0 0c-1.29 1.42-2.58 2.84-4.13 4.55m4.13-4.55-4.13 4.55m0 0-4.55 4.13m4.55-4.13-4.55 4.13m0 0c-1.2.9-2.41 1.8-4.93 3.69m4.93-3.69-4.93 3.69m0 0c-1.56.95-3.13 1.9-5.27 3.21m5.27-3.21c-1.99 1.21-3.98 2.42-5.27 3.21m0 0c-1.8.86-3.6 1.73-5.6 2.69m5.6-2.69c-1.34.64-2.67 1.28-5.6 2.69m0 0c-2.24.82-4.48 1.65-5.88 2.16m5.88-2.16c-1.38.51-2.77 1.02-5.88 2.16m0 0c-1.46.38-2.93.76-6.13 1.58m6.13-1.58c-1.54.4-3.09.79-6.13 1.58m0 0c-2.12.32-4.24.65-6.34.97m6.34-.97c-2.47.38-4.94.75-6.34.97m0 0c-2.23.11-4.46.22-6.54.33m6.54-.33c-1.97.1-3.93.2-6.54.33m0 0h-256m256 0h-256m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-2.33-.12-4.66-.24-6.54-.33m6.54.33c-1.33-.07-2.65-.13-6.54-.33m0 0c-1.88-.29-3.77-.58-6.34-.97m6.34.97c-2.07-.32-4.14-.63-6.34-.97m0 0c-1.52-.39-3.04-.79-6.13-1.58m6.13 1.58c-2.02-.52-4.04-1.04-6.13-1.58m0 0c-1.6-.59-3.19-1.17-5.88-2.16m5.88 2.16c-1.9-.7-3.8-1.39-5.88-2.16m0 0c-1.41-.68-2.82-1.36-5.6-2.69m5.6 2.69c-1.6-.77-3.2-1.54-5.6-2.69m0 0c-1.4-.86-2.81-1.71-5.27-3.21m5.27 3.21c-2.08-1.27-4.17-2.54-5.27-3.21m0 0c-1.72-1.29-3.43-2.57-4.93-3.69m4.93 3.69c-1.79-1.34-3.57-2.67-4.93-3.69m0 0c-1.18-1.07-2.36-2.15-4.55-4.13m4.55 4.13c-1.64-1.49-3.27-2.97-4.55-4.13m0 0c-1.07-1.19-2.15-2.37-4.13-4.55m4.13 4.55c-1.46-1.61-2.93-3.23-4.13-4.55m0 0-3.69-4.93m3.69 4.93c-.88-1.17-1.76-2.35-3.69-4.93m0 0c-.83-1.37-1.67-2.75-3.21-5.27m3.21 5.27c-1.15-1.89-2.3-3.79-3.21-5.27m0 0c-1.03-2.14-2.05-4.27-2.69-5.6m2.69 5.6c-.68-1.43-1.37-2.85-2.69-5.6m0 0c-.8-2.17-1.59-4.34-2.16-5.88m2.16 5.88c-.82-2.22-1.63-4.44-2.16-5.88m0 0c-.47-1.82-.94-3.64-1.58-6.13m1.58 6.13c-.37-1.44-.74-2.88-1.58-6.13m0 0-.97-6.34m.97 6.34c-.3-1.98-.61-3.97-.97-6.34m0 0c-.13-2.54-.26-5.07-.33-6.54m.33 6.54-.33-6.54m0 0V343m0 112V343m0 0h174.1m-174.1 0h174.1m0 0-39 39m39-39-39 39m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.65.72-1.3 1.44-1.65 1.83m1.65-1.83c-.34.38-.68.76-1.65 1.83m0 0c-.35.47-.7.95-1.43 1.94m1.43-1.94c-.38.5-.75 1.01-1.43 1.94m0 0c-.32.54-.64 1.08-1.22 2.05m1.22-2.05c-.38.64-.76 1.28-1.22 2.05m0 0c-.2.45-.41.89-.99 2.13m.99-2.13c-.38.82-.76 1.64-.99 2.13m0 0c-.18.53-.36 1.05-.77 2.2m.77-2.2c-.3.88-.61 1.75-.77 2.2m0 0c-.15.61-.3 1.22-.55 2.25m.55-2.25c-.16.68-.33 1.35-.55 2.25m0 0-.33 2.29m.33-2.29c-.13.9-.26 1.79-.33 2.29m0 0-.11 2.3m.11-2.3c-.03.59-.06 1.19-.11 2.3m0 0c.03.54.05 1.08.11 2.3m-.11-2.3c.03.72.07 1.44.11 2.3m0 0c.1.71.21 1.43.33 2.28m-.33-2.28c.1.71.21 1.42.33 2.28m0 0c.22.88.44 1.77.55 2.24m-.55-2.24c.16.66.33 1.32.55 2.24m0 0c.26.72.51 1.45.77 2.19m-.77-2.19c.25.69.49 1.39.77 2.19m0 0c.33.7.65 1.4.99 2.12m-.99-2.12c.37.79.74 1.57.99 2.12m0 0c.38.63.75 1.25 1.22 2.04m-1.22-2.04c.4.67.8 1.35 1.22 2.04m0 0c.38.52.77 1.05 1.43 1.93m-1.43-1.93c.38.52.77 1.05 1.43 1.93m0 0c.46.5.91 1 1.65 1.81m-1.65-1.81c.35.39.7.77 1.65 1.81m0 0c.37.33.75.67 1.83 1.64m-1.83-1.64c.43.39.87.78 1.83 1.64m0 0c.62.45 1.25.91 1.94 1.42m-1.94-1.42c.45.32.9.65 1.94 1.42m0 0c.53.3 1.05.61 2.05 1.2m-2.05-1.2c.43.25.86.5 2.05 1.2m0 0c.78.36 1.56.72 2.13.99m-2.13-.99c.54.25 1.08.5 2.13.99m0 0c.67.23 1.33.46 2.2.76m-2.2-.76c.51.17 1.03.35 2.2.76m0 0c.87.22 1.73.43 2.25.56m-2.25-.56c.79.2 1.57.39 2.25.56m0 0 2.29.33m-2.29-.33c.58.08 1.16.16 2.29.33m0 0c.91.04 1.82.09 2.3.11m-2.3-.11c.89.04 1.79.09 2.3.11m0 0c.48-.02.96-.04 2.3-.1m-2.3.1c.73-.03 1.47-.06 2.3-.1m0 0c.61-.09 1.22-.18 2.28-.33m-2.28.33c.58-.09 1.17-.17 2.28-.33m0 0c.79-.19 1.59-.38 2.24-.54m-2.24.54c.88-.21 1.75-.42 2.24-.54m0 0c.7-.25 1.4-.49 2.19-.77m-2.19.77c.5-.18 1.01-.35 2.19-.77m0 0c.56-.26 1.13-.52 2.12-.98m-2.12.98c.69-.31 1.37-.63 2.12-.98m0 0c.63-.37 1.25-.74 2.04-1.21m-2.04 1.21c.8-.48 1.6-.95 2.04-1.21m0 0c.67-.5 1.34-.99 1.93-1.43m-1.93 1.43c.52-.39 1.05-.78 1.93-1.43m0 0c.43-.39.87-.79 1.81-1.65m-1.81 1.65c.42-.38.83-.76 1.81-1.65m0 0 80-80m-80 80 80-80m0 0s0 0 0 0m0 0s0 0 0 0m0 0c.33-.37.67-.74 1.65-1.83m-1.65 1.83c.63-.7 1.27-1.4 1.65-1.83m0 0c.3-.4.59-.79 1.43-1.94m-1.43 1.94c.42-.57.84-1.13 1.43-1.94m0 0c.4-.68.8-1.35 1.22-2.05m-1.22 2.05c.47-.79.93-1.57 1.22-2.05m0 0c.28-.62.57-1.23.99-2.13m-.99 2.13c.3-.65.6-1.31.99-2.13m0 0c.26-.74.51-1.47.77-2.2m-.77 2.2.77-2.2m0 0 .55-2.25m-.55 2.25c.2-.84.41-1.68.55-2.25m0 0 .33-2.29m-.33 2.29c.11-.75.21-1.49.33-2.29m0 0c.03-.54.05-1.08.11-2.3m-.11 2.3c.04-.91.09-1.81.11-2.3m0 0c-.03-.7-.07-1.41-.11-2.3m.11 2.3c-.04-.75-.07-1.49-.11-2.3m0 0c-.08-.52-.15-1.04-.33-2.28m.33 2.28c-.09-.63-.18-1.26-.33-2.28m0 0-.55-2.24m.55 2.24c-.19-.79-.39-1.58-.55-2.24m0 0-.77-2.19m.77 2.19c-.25-.72-.51-1.44-.77-2.19m0 0c-.23-.5-.46-.99-.99-2.12m.99 2.12c-.39-.83-.78-1.66-.99-2.12m0 0c-.42-.7-.83-1.39-1.22-2.04m1.22 2.04c-.32-.53-.64-1.06-1.22-2.04m0 0c-.47-.64-.95-1.28-1.43-1.93m1.43 1.93c-.47-.63-.94-1.27-1.43-1.93m0 0c-.44-.49-.89-.98-1.65-1.81m1.65 1.81c-.64-.7-1.28-1.4-1.65-1.81m0 0-80-80m80 80-80-80m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.72-.65-1.44-1.3-1.83-1.65m1.83 1.65c-.68-.62-1.37-1.23-1.83-1.65m0 0c-.51-.38-1.02-.75-1.94-1.43m1.94 1.43c-.58-.43-1.17-.87-1.94-1.43m0 0c-.73-.43-1.45-.86-2.05-1.22m2.05 1.22c-.77-.45-1.53-.9-2.05-1.22m0 0c-.46-.21-.93-.43-2.13-.99m2.13.99-2.13-.99m0 0c-.83-.29-1.65-.57-2.2-.77m2.2.77c-.56-.19-1.12-.39-2.2-.77m0 0c-.65-.16-1.29-.31-2.25-.55m2.25.55c-.57-.14-1.13-.27-2.25-.55m0 0c-.74-.11-1.48-.21-2.29-.33m2.29.33c-.51-.07-1.02-.15-2.29-.33m0 0c-.77-.04-1.54-.07-2.3-.11m2.3.11c-.88-.04-1.76-.08-2.3-.11m0 0c-.49.02-.98.05-2.3.11m2.3-.11c-.88.04-1.77.09-2.3.11m0 0c-.62.09-1.23.18-2.28.33m2.28-.33c-.6.09-1.2.17-2.28.33m0 0c-.45.11-.91.22-2.24.55m2.24-.55c-.79.2-1.58.39-2.24.55m0 0c-.56.2-1.12.4-2.19.77m2.19-.77c-.51.18-1.01.36-2.19.77m0 0c-.85.4-1.7.8-2.12.99m2.12-.99c-.51.24-1.02.48-2.12.99m0 0c-.6.36-1.2.71-2.04 1.22m2.04-1.22c-.46.27-.91.55-2.04 1.22m0 0c-.49.36-.99.73-1.93 1.43m1.93-1.43-1.93 1.43m0 0c-.42.38-.85.77-1.81 1.65m1.81-1.65c-.69.63-1.39 1.27-1.81 1.65m0 0-1.64 1.83m1.64-1.83c-.54.6-1.08 1.21-1.64 1.83m0 0c-.53.73-1.07 1.47-1.42 1.94m1.42-1.94c-.36.5-.73 1-1.42 1.94m0 0c-.35.61-.7 1.21-1.2 2.05m1.2-2.05c-.33.58-.67 1.15-1.2 2.05m0 0c-.26.57-.53 1.15-.99 2.13m.99-2.13c-.39.85-.78 1.69-.99 2.13m0 0c-.24.7-.48 1.4-.76 2.2m.76-2.2c-.17.51-.35 1.01-.76 2.2m0 0c-.17.68-.33 1.35-.56 2.25m.56-2.25c-.2.79-.39 1.57-.56 2.25m0 0c-.09.65-.18 1.29-.33 2.29m.33-2.29c-.06.48-.13.95-.33 2.29m0 0c-.03.71-.07 1.43-.11 2.3m.11-2.3-.11 2.3m0 0c.04.86.08 1.73.1 2.3m-.1-2.3c.03.8.07 1.6.1 2.3m0 0c.13.88.25 1.76.33 2.28m-.33-2.28c.11.73.21 1.47.33 2.28m0 0c.18.74.36 1.49.54 2.24m-.54-2.24c.15.64.31 1.28.54 2.24m0 0c.2.57.4 1.15.77 2.19m-.77-2.19c.21.58.41 1.17.77 2.19m0 0c.23.5.46 1.01.98 2.12m-.98-2.12c.35.76.71 1.53.98 2.12m0 0c.38.64.76 1.29 1.21 2.04m-1.21-2.04 1.21 2.04m0 0c.45.6.89 1.21 1.43 1.93m-1.43-1.93c.3.4.6.81 1.43 1.93m0 0 1.65 1.81m-1.65-1.81c.47.52.94 1.03 1.65 1.81m0 0 39 39m-39-39 39 39m0 0h-174.1m174.1 0h-174.1m0 0V71m0 223.9V71m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeLinecap:"round",strokeWidth:"18",d:"M135 343.068H31m104 0H31m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.74-.04-1.48-.07-2.46-.12m2.46.12c-.77-.04-1.54-.08-2.46-.12m0 0c-.87-.14-1.75-.27-2.39-.37m2.39.37c-.55-.09-1.1-.17-2.39-.37m0 0c-.87-.22-1.74-.44-2.3-.59m2.3.59c-.62-.15-1.24-.31-2.3-.59m0 0c-.82-.29-1.64-.59-2.21-.8m2.21.8c-.52-.18-1.03-.37-2.21-.8m0 0c-.55-.26-1.09-.52-2.1-1.01m2.1 1.01c-.64-.31-1.28-.61-2.1-1.01m0 0c-.74-.45-1.48-.89-1.98-1.2m1.98 1.2c-.42-.25-.84-.51-1.98-1.2m0 0c-.7-.52-1.41-1.05-1.84-1.38m1.84 1.38c-.37-.28-.75-.56-1.84-1.38m0 0c-.4-.36-.8-.71-1.71-1.54m1.71 1.54c-.35-.31-.7-.63-1.71-1.54m0 0c-.43-.47-.85-.95-1.54-1.71m1.54 1.71c-.61-.68-1.23-1.36-1.54-1.71m0 0c-.29-.38-.58-.76-1.38-1.84m1.38 1.84c-.54-.71-1.08-1.43-1.38-1.84m0 0c-.46-.76-.92-1.52-1.2-1.98m1.2 1.98c-.45-.74-.89-1.47-1.2-1.98m0 0c-.37-.77-.74-1.53-1.01-2.1m1.01 2.1c-.3-.62-.6-1.25-1.01-2.1m0 0c-.2-.54-.39-1.07-.8-2.21m.8 2.21c-.2-.54-.4-1.09-.8-2.21m0 0c-.22-.85-.44-1.71-.59-2.3m.59 2.3c-.12-.46-.24-.92-.59-2.3m0 0c-.11-.72-.22-1.43-.37-2.39m.37 2.39c-.08-.48-.15-.96-.37-2.39m0 0c-.03-.74-.07-1.48-.12-2.46m.12 2.46c-.04-.79-.08-1.59-.12-2.46m0 0c.04-.74.07-1.49.12-2.46m-.12 2.46.12-2.46m0 0c.08-.53.16-1.07.37-2.39m-.37 2.39c.09-.56.17-1.12.37-2.39m0 0c.17-.69.35-1.38.59-2.3m-.59 2.3c.15-.61.31-1.23.59-2.3m0 0c.17-.48.34-.96.8-2.21m-.8 2.21c.2-.55.4-1.1.8-2.21m0 0c.25-.52.49-1.03 1.01-2.1m-1.01 2.1c.36-.76.73-1.52 1.01-2.1m0 0c.43-.72.87-1.44 1.2-1.98m-1.2 1.98c.27-.45.55-.91 1.2-1.98m0 0c.54-.73 1.09-1.47 1.38-1.84m-1.38 1.84c.4-.54.81-1.09 1.38-1.84m0 0c.53-.59 1.07-1.18 1.54-1.71m-1.54 1.71c.59-.66 1.19-1.32 1.54-1.71m0 0c.54-.49 1.08-.97 1.71-1.54m-1.71 1.54c.48-.43.95-.86 1.71-1.54m0 0c.46-.35.92-.7 1.84-1.38m-1.84 1.38c.5-.38 1.01-.76 1.84-1.38m0 0c.52-.32 1.04-.63 1.98-1.2m-1.98 1.2c.72-.44 1.44-.88 1.98-1.2m0 0 2.1-1.01m-2.1 1.01c.84-.4 1.67-.81 2.1-1.01m0 0c.45-.17.91-.33 2.21-.8m-2.21.8c.56-.21 1.12-.41 2.21-.8m0 0c.89-.23 1.79-.46 2.3-.59m-2.3.59c.48-.13.95-.25 2.3-.59m0 0c.51-.08 1.02-.16 2.39-.37m-2.39.37 2.39-.37m0 0c.52-.02 1.03-.05 2.46-.12m-2.46.12c.74-.03 1.48-.07 2.46-.12m0 0 103.34-.27m-103.34.27c30.04-.08 60.08-.16 103.34-.27"}),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"var(--input-bg-color)",strokeWidth:"0",d:"M517.462 135h-128V7l128 128"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"18",d:"M517.462 135h-128m128 0h-128m0 0V7m0 128V7m0 0 128 128m-128-128 128 128m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"}))),obsidian:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},React__namespace.createElement("defs",null,React__namespace.createElement("radialGradient",{id:"b",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-48 -185 123 -32 179 429.7)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":".4"}),React__namespace.createElement("stop",{offset:"1","stop-opacity":".1"})),React__namespace.createElement("radialGradient",{id:"c",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(41 -310 229 30 341.6 351.3)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":".6"}),React__namespace.createElement("stop",{offset:"1","stop-color":"#fff","stop-opacity":".1"})),React__namespace.createElement("radialGradient",{id:"d",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(57 -261 178 39 190.5 296.3)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":".8"}),React__namespace.createElement("stop",{offset:"1","stop-color":"#fff","stop-opacity":".4"})),React__namespace.createElement("radialGradient",{id:"e",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-79 -133 153 -90 321.4 464.2)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":".3"}),React__namespace.createElement("stop",{offset:"1","stop-opacity":".3"})),React__namespace.createElement("radialGradient",{id:"f",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-29 136 -92 -20 300.7 149.9)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":"0"}),React__namespace.createElement("stop",{offset:"1","stop-color":"#fff","stop-opacity":".2"})),React__namespace.createElement("radialGradient",{id:"g",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(72 73 -155 153 137.8 225.2)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":".2"}),React__namespace.createElement("stop",{offset:"1","stop-color":"#fff","stop-opacity":".4"})),React__namespace.createElement("radialGradient",{id:"h",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(20 118 -251 43 215.1 273.7)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":".1"}),React__namespace.createElement("stop",{offset:"1","stop-color":"#fff","stop-opacity":".3"})),React__namespace.createElement("radialGradient",{id:"i",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-162 -85 268 -510 374.4 371.7)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":".2"}),React__namespace.createElement("stop",{offset:".5","stop-color":"#fff","stop-opacity":".2"}),React__namespace.createElement("stop",{offset:"1","stop-color":"#fff","stop-opacity":".3"})),React__namespace.createElement("filter",{id:"a",x:"80.1",y:"37",width:"351.1",height:"443.2",filterUnits:"userSpaceOnUse","color-interpolation-filters":"sRGB"},React__namespace.createElement("feFlood",{"flood-opacity":"0",result:"BackgroundImageFix"}),React__namespace.createElement("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),React__namespace.createElement("feGaussianBlur",{stdDeviation:"6.5",result:"effect1_foregroundBlur_744_9191"}))),React__namespace.createElement("g",{filter:"url(#a)"},React__namespace.createElement("path",{d:"M359.2 437.5c-2.6 19-21.3 33.9-40 28.7-26.5-7.2-57.2-18.6-84.8-20.7l-42.4-3.2a28 28 0 0 1-18-8.3l-73-74.8a27.7 27.7 0 0 1-5.4-30.7s45-98.6 46.8-103.7c1.6-5.1 7.8-49.9 11.4-73.9a28 28 0 0 1 9-16.5L249 57.2a28 28 0 0 1 40.6 3.4l72.6 91.6a29.5 29.5 0 0 1 6.2 18.3c0 17.3 1.5 53 11.2 76a301.3 301.3 0 0 0 35.6 58.2 14 14 0 0 1 1 15.6c-6.3 10.7-18.9 31.3-36.6 57.6a142.2 142.2 0 0 0-20.5 59.6Z",fill:"#000","fill-opacity":".3"})),React__namespace.createElement("path",{id:"arrow",d:"M359.9 434.3c-2.6 19.1-21.3 34-40 28.9-26.4-7.3-57-18.7-84.7-20.8l-42.3-3.2a27.9 27.9 0 0 1-18-8.4l-73-75a27.9 27.9 0 0 1-5.4-31s45.1-99 46.8-104.2c1.7-5.1 7.8-50 11.4-74.2a28 28 0 0 1 9-16.6l86.2-77.5a28 28 0 0 1 40.6 3.5l72.5 92a29.7 29.7 0 0 1 6.2 18.3c0 17.4 1.5 53.2 11.1 76.3a303 303 0 0 0 35.6 58.5 14 14 0 0 1 1.1 15.7c-6.4 10.8-18.9 31.4-36.7 57.9a143.3 143.3 0 0 0-20.4 59.8Z",fill:"#6c31e3"}),React__namespace.createElement("path",{d:"M182.7 436.4c33.9-68.7 33-118 18.5-153-13.2-32.4-37.9-52.8-57.3-65.5-.4 1.9-1 3.7-1.8 5.4L96.5 324.8a27.9 27.9 0 0 0 5.5 31l72.9 75c2.3 2.3 5 4.2 7.8 5.6Z",fill:"url(#b)"}),React__namespace.createElement("path",{d:"M274.9 297c9.1.9 18 2.9 26.8 6.1 27.8 10.4 53.1 33.8 74 78.9 1.5-2.6 3-5.1 4.6-7.5a1222 1222 0 0 0 36.7-57.9 14 14 0 0 0-1-15.7 303 303 0 0 1-35.7-58.5c-9.6-23-11-58.9-11.1-76.3 0-6.6-2.1-13.1-6.2-18.3l-72.5-92-1.2-1.5c5.3 17.5 5 31.5 1.7 44.2-3 11.8-8.6 22.5-14.5 33.8-2 3.8-4 7.7-5.9 11.7a140 140 0 0 0-15.8 58c-1 24.2 3.9 54.5 20 95Z",fill:"url(#c)"}),React__namespace.createElement("path",{d:"M274.8 297c-16.1-40.5-21-70.8-20-95 1-24 8-42 15.8-58l6-11.7c5.8-11.3 11.3-22 14.4-33.8a78.5 78.5 0 0 0-1.7-44.2 28 28 0 0 0-39.4-2l-86.2 77.5a28 28 0 0 0-9 16.6L144.2 216c0 .7-.2 1.3-.3 2 19.4 12.6 44 33 57.3 65.3 2.6 6.4 4.8 13.1 6.4 20.4a200 200 0 0 1 67.2-6.8Z",fill:"url(#d)"}),React__namespace.createElement("path",{d:"M320 463.2c18.6 5.1 37.3-9.8 39.9-29a153 153 0 0 1 15.9-52.2c-21-45.1-46.3-68.5-74-78.9-29.5-11-61.6-7.3-94.2.6 7.3 33.1 3 76.4-24.8 132.7 3.1 1.6 6.6 2.5 10.1 2.8l43.9 3.3c23.8 1.7 59.3 14 83.2 20.7Z",fill:"url(#e)"}),React__namespace.createElement("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M255 200.5c-1.1 24 1.9 51.4 18 91.8l-5-.5c-14.5-42.1-17.7-63.7-16.6-88 1-24.3 8.9-43 16.7-59 2-4 6.6-11.5 8.6-15.3 5.8-11.3 9.7-17.2 13-27.5 4.8-14.4 3.8-21.2 3.2-28 3.7 24.5-10.4 45.8-21 67.5a145 145 0 0 0-17 59Z",fill:"url(#f)"}),React__namespace.createElement("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M206 285.1c2 4.4 3.7 8 4.9 13.5l-4.3 1c-1.7-6.4-3-11-5.5-16.5-14.6-34.3-38-52-57-65 23 12.4 46.7 31.9 61.9 67Z",fill:"url(#g)"}),React__namespace.createElement("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M211.1 303c8 37.5-1 85.2-27.5 131.6 22.2-46 33-90.1 24-131l3.5-.7Z",fill:"url(#h)"}),React__namespace.createElement("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M302.7 299.5c43.5 16.3 60.3 52 72.8 81.9-15.5-31.2-37-65.7-74.4-78.5-28.4-9.8-52.4-8.6-93.5.7l-.9-4c43.6-10 66.4-11.2 96 0Z",fill:"url(#i)"}))},saveIcon=e=>React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:e?"var(--color-accent)":"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"}),React__namespace.createElement("polyline",{points:"17 21 17 13 7 13 7 21"}),React__namespace.createElement("polyline",{points:"7 3 7 8 15 8"})),penIcon=e=>{var t,A,i,n,a,r,s,o,l,c,d,h;switch(e.type){case"highlighter":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{fill:null!==(t=e.strokeColor)&&void 0!==t?t:"var(--icon-fill-color)",strokeWidth:"2",d:"m9 11-6 6v3h9l3-3"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4"}));case"finetip":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:null!==(A=e.strokeColor)&&void 0!==A?A:"var(--icon-fill-color)",stroke:null!==(i=e.strokeColor)&&void 0!==i?i:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{strokeWidth:"2",d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}));case"fountain":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{fill:null!==(n=e.strokeColor)&&void 0!==n?n:"var(--icon-fill-color)",d:"m12 19 7-7 3 3-7 7-3-3z"}),React__namespace.createElement("path",{fill:"none",d:"m18 13-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"}),React__namespace.createElement("path",{fill:"none",d:"m2 2 7.586 7.586"}),React__namespace.createElement("circle",{fill:"none",cx:"11",cy:"11",r:"2"}));case"marker":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",fill:null!==(a=e.strokeColor)&&void 0!==a?a:"var(--icon-fill-color)",stroke:null!==(r=e.strokeColor)&&void 0!==r?r:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M331 315l158.4-215L460.1 70.6 245 229 331 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L436.6 8.4C444 2.9 453 0 462.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L350.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H240l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L144 320zM23 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H40c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z"}));case"thick-thin":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 108 106",strokeWidth:"2",fill:null!==(s=e.strokeColor)&&void 0!==s?s:"var(--icon-fill-color)",stroke:null!==(o=e.strokeColor)&&void 0!==o?o:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"m-.58 95.628.22-.89q.22-.89.49-2.44.26-1.54.77-3.35t1.31-3.43q.79-1.61.2-.26-.6 1.34-.03-.14.58-1.49 1.54-2.97.96-1.49 2.54-3.18 1.59-1.68 3.46-2.96 1.86-1.27.81-.54-1.04.73.6-.46 1.64-1.19 2.8-1.81 1.16-.63.16-.08-.99.54 1.21-.5 2.2-1.03 1.11-.58-1.1.45-.03-.07 1.06-.53 2.32-.82 1.26-.3 2.91-.52 1.64-.23 3.05-.18 1.4.05 2.5.12 1.09.07 2.25.24 1.16.17 2.3.49 1.15.32 2.11.78.96.47 2.21 1.01 1.25.55 2.37 1.04t2.34.89q1.22.4 2.5.65 1.29.25 2.44.33 1.16.08 2.35.17 1.18.08 2.26-.1 1.08-.19 2-1.1.92-.91 1.25-1.93.32-1.02.38-2.15t.57.21q.51 1.34-.03-.02-.55-1.37-.96-2.83-.41-1.45.5-.67.92.79-.03-.06-.95-.85-1.52-1.8-.57-.94-1.5-1.52-.93-.57-1.94-1.22-1.01-.65-1.97-1.88-.96-1.22-1.44-2.54-.49-1.32-.65-2.57-.17-1.24-.11-2.35.06-1.11.31-2.91.24-1.79.76-2.77.51-.97 1.29-1.8.77-.84 1.64-1.55.88-.72 1.9-1.33 1.03-.61 2.43-1.15 1.41-.55 2.69-.92 1.29-.37 2.81-.68 1.53-.31 2.83-.58 1.31-.27 2.78-.47 1.47-.2 2.58-.49 1.12-.28 2.19-.58 1.08-.31 2.13-.73 1.05-.42 2.44-1.32 1.39-.9 2.68-1.85 1.3-.95 2.25-1.87.95-.91 2.06-2 1.11-1.09 1.92-1.93.82-.84 1.54-1.82.71-.98 1.4-1.88.69-.9 1.38-1.96.69-1.07 1.25-2.04.55-.97 1.21-1.94.65-.96 1.35-1.79.69-.83 1.46-1.74.77-.9 1.66-1.73.89-.84 2.72-2.31 1.84-1.48 1.84-1.47v.01l-1.1 1.03q-1.1 1.02-1.77 1.92-.68.9-1.39 1.85-.71.96-1.41 1.91-.7.96-1.19 1.92-.48.95-.95 1.92-.46.96-.9 1.95-.43.99-1.02 2.16-.59 1.17-1.17 2.15-.58.97-1.23 2.13t-1.29 2.02q-.64.86-1.3 1.73-.66.88-1.42 1.78-.75.9-1.72 2.03-.97 1.14-1.81 1.89-.85.75-1.98 1.71-1.14.96-2.05 1.61-.91.64-2.42 1.38-1.51.73-2.71 1.21t-2.49.92q-1.3.44-2.35.69-1.06.24-2.1.59-1.03.34-2.06.74-1.03.4-2.29.94-1.26.54-2.27 1.11-1.01.58-1.57 1.57-.56.99-.81 2.06-.25 1.08.56 2.02.8.94-.21-.02-1.02-.96-.01-.48 1 .49 1.87 1.25.87.77 0 0-.88-.77.46-.01 1.34.75 2.6 1.68 1.26.94 2.08 2.03.81 1.09.01.27-.8-.82.3.26 1.11 1.08 1.71 2.1.61 1.02 1.21 2.25.6 1.24.92 2.36.32 1.12-.16.13-.49-.98.02.36.51 1.35.71 2.69.2 1.34.24 2.46.03 1.12-.09 2.42-.13 1.29-.72 3.21-.6 1.92-1.4 3.49-.81 1.58-1.77 2.83-.96 1.24-2.88 2.72-1.92 1.48-2.95 1.85-1.04.36-2.47.76-1.44.41-3.33.72-1.89.32-3.37.41-1.48.09-2.63.15-1.15.05-2.74-.06-1.59-.1-2.8-.29-1.2-.19-3.2-.63-1.99-.45-3.63-.92-1.63-.48-3.28-.79-1.65-.31-2.76-.2-1.11.1-2.21.42-1.11.32.39-.29 1.49-.6-.12.21-1.61.8-.39.19 1.21-.61.29.13-.92.74-1.83 1.34-.92.61.15-.19t.3-.05q-.77.75-1.58 1.57-.81.82.01-.18.82-1 .24.23t-.72 2.72q-.15 1.48-.08 2.4.07.91-.19 2.16-.26 1.26-.81 2.41-.55 1.16-1.36 2.15t-1.84 1.75q-1.03.77-2.21 1.27t-2.44.7q-1.27.2-2.53.1-1.28-.11-2.49-.52-1.22-.41-2.3-1.1-1.08-.68-1.96-1.61-.89-.92-1.52-2.04-.64-1.11-.99-2.34-.36-1.23-.41-2.51l-.04-1.27Z"}));case"thin-thick-thin":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 114 113",strokeWidth:"2",fill:null!==(l=e.strokeColor)&&void 0!==l?l:"var(--icon-fill-color)",stroke:null!==(c=e.strokeColor)&&void 0!==c?c:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"m10 103.405.13-1.22q.14-1.22 1.3-3.16 1.15-1.94 2.74-3.46 1.59-1.53 3.35-2.72 1.77-1.2 4-1.95 2.23-.76 4.45-1t4.86-.4q2.64-.15 5.14-.34 2.51-.19 4.85-.94 2.35-.75 4.55-1.71 2.21-.97 4.16-2.26 1.95-1.3 4.03-2.97 2.07-1.67 3.85-3.05 1.78-1.37 3.72-2.48 1.94-1.11 3.3-2.99 1.36-1.89 2.58-3.74 1.22-1.85-.63-3.42-1.85-1.57-3.82-2.86-1.97-1.3-4.11-2.08-2.15-.78-4.21-1.6-2.06-.81-4.02-1.96-1.96-1.14-3.71-2.48-1.74-1.33-3.37-2.77-1.63-1.43-3.23-3.62-1.6-2.18-2.23-4.64-.62-2.46-.36-4.96.27-2.49 1.19-4.46.91-1.97 2.42-3.7 1.5-1.73 3.5-3.15t4.11-2.28q2.1-.86 4.33-1.44 2.24-.58 4.92-.84 2.68-.26 4.83-.19t4.69.35q2.53.28 4.75.66 2.23.38 4.48.2 2.26-.19 4.43-1.3 2.17-1.12 4.2-2.36 2.04-1.24 3.93-2.43 1.9-1.19 3.84-2.14 1.95-.95 4.04-1.78 2.09-.83 4.56-2.28 2.46-1.46 2.46-1.45h.01q.01 0-1.38 1.3-1.38 1.29-3.08 2.59-1.7 1.3-3.5 2.5t-3.42 2.65q-1.62 1.45-3.18 3-1.57 1.56-3.37 3.13-1.8 1.57-3.6 2.91-1.81 1.33-3.92 2.12t-4.24.92q-2.13.14-4.31.26-2.18.12-4.5.39t-4.56.88q-2.25.61-4.24 1.6-1.99 1-3.83 2.29-1.83 1.29.18 2.44 2.01 1.15 4.2 1.92 2.2.78 4.34 1 2.15.22 4.4.69 2.25.46 4.34 1.16 2.08.71 4.33 1.91 2.25 1.21 4.11 2.73 1.87 1.52 3.68 4.03 1.82 2.5 2.74 5 .93 2.5 1.18 5.03.26 2.53-.04 4.81t-1.4 4.85q-1.09 2.58-2.4 4.26-1.3 1.68-3.1 3.44t-4.02 3.62q-2.23 1.85-4.32 3.07-2.08 1.23-4.34 1.99-2.25.76-4.46 1.96t-4.37 2.14q-2.15.93-4.22 1.81t-4.36 1.35q-2.3.46-4.52.82-2.22.35-4.76.38-2.54.04-4.87-.28t-4.67-.67q-2.34-.35-4.72-.54-2.39-.19-4.64.37-2.25.56-4.16 1.66-1.91 1.11-3.52 2.71-1.61 1.6-2.55 2.39l-.94.78Z"}));default:return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:null!==(d=e.strokeColor)&&void 0!==d?d:"var(--icon-fill-color)",stroke:null!==(h=e.strokeColor)&&void 0!==h?h:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z"}))}},stringToSVG=e=>(e=e.replace(/stroke\s*=\s*['"][^"']*['"]/g,"").replace(/[^-]width\s*=\s*['"][^"']*['"]/g,"").replace(/[^-]height\s*=\s*['"][^"']*['"]/g,"").replace("{const A=t.getAppState();t.updateScene({appState:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({currentStrokeOptions:e.penOptions},e.strokeWidth&&0!==e.strokeWidth?{currentItemStrokeWidth:e.strokeWidth}:null),e.backgroundColor?{currentItemBackgroundColor:e.backgroundColor}:null),e.strokeColor?{currentItemStrokeColor:e.strokeColor}:null),""===e.fillStyle?null:{currentItemFillStyle:e.fillStyle}),e.roughness?null:{currentItemRoughness:e.roughness}),e.freedrawOnly&&!A.resetCustomPen?{resetCustomPen:{currentItemStrokeWidth:A.currentItemStrokeWidth,currentItemBackgroundColor:A.currentItemBackgroundColor,currentItemStrokeColor:A.currentItemStrokeColor,currentItemFillStyle:A.currentItemFillStyle,currentItemRoughness:A.currentItemRoughness}}:null)})},resetStrokeOptions=(e,t,A)=>{t.updateScene({appState:Object.assign(Object.assign(Object.assign({},e?{currentItemStrokeWidth:e.currentItemStrokeWidth,currentItemBackgroundColor:e.currentItemBackgroundColor,currentItemStrokeColor:e.currentItemStrokeColor,currentItemFillStyle:e.currentItemFillStyle,currentItemRoughness:e.currentItemRoughness}:null),{resetCustomPen:null}),A?{currentStrokeOptions:null}:null)})};class ObsidianMenu{constructor(e,t,A){this.plugin=e,this.toolsRef=t,this.view=A,this.renderCustomPens=(e,t)=>{var A;return null===(A=t.customPens)||void 0===A?void 0:A.map(((A,i)=>{const n=this.plugin.settings.customPens[i];return t.resetCustomPen&&"freedraw"!==t.activeTool.type&&t.currentStrokeOptions===n.penOptions&&setTimeout((()=>resetStrokeOptions(t.resetCustomPen,this.view.excalidrawAPI,!1))),!t.resetCustomPen&&"freedraw"===t.activeTool.type&&t.currentStrokeOptions===n.penOptions&&n.freedrawOnly&&setTimeout((()=>setPen(this.activePen,this.view.excalidrawAPI))),this.activePen&&t.resetCustomPen&&"freedraw"===t.activeTool.type&&t.currentStrokeOptions===n.penOptions&&n.freedrawOnly&&(this.activePen.strokeWidth=t.currentItemStrokeWidth,this.activePen.backgroundColor=t.currentItemBackgroundColor,this.activePen.strokeColor=t.currentItemStrokeColor,this.activePen.fillStyle=t.currentItemFillStyle,this.activePen.roughness=t.currentItemRoughness),React__namespace.createElement("label",{key:i,className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{const e=Date.now();if(e-this.clickTimestamp[i]<500){const e=new PenSettingsModal(this.plugin,this.view,i);return void(async()=>{await this.plugin.loadSettings(),e.open()})()}this.clickTimestamp[i]=e;const t=this.view.excalidrawAPI,A=t.getAppState();A.currentStrokeOptions!==n.penOptions||"freedraw"!==A.activeTool.type?(this.activePen=Object.assign({},n),setPen(n,t),t.setActiveTool({type:"freedraw"})):resetStrokeOptions(A.resetCustomPen,t,!0)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":n.type,style:Object.assign({},"freedraw"===t.activeTool.type&&t.currentStrokeOptions===n.penOptions?{background:"var(--color-primary)"}:{})},penIcon(n)))}))},this.longpressTimeout={},this.renderPinnedScriptButtons=(e,t)=>{var A;let i=0;return null===(A=null==t?void 0:t.pinnedScripts)||void 0===A?void 0:A.map(((t,A)=>{var n;const a=this.plugin.scriptEngine.scriptIconMap[t],r=null!==(n=null==a?void 0:a.name)&&void 0!==n?n:"",s=(null==a?void 0:a.svgString)?stringToSVG(a.svgString):ICONS.cog;return this.longpressTimeout[A]||(this.longpressTimeout[A]=0),React__namespace.createElement("label",{key:A,className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onPointerUp:()=>{this.longpressTimeout[A]&&(window.clearTimeout(this.longpressTimeout[A]),this.longpressTimeout[A]=0,(async()=>{const e=app.vault.getAbstractFileByPath(t);e&&e instanceof obsidian_module.TFile&&this.plugin.scriptEngine.executeScript(this.view,await app.vault.read(e),this.plugin.scriptEngine.getScriptName(e),e)})())},onPointerDown:()=>{const e=Date.now();this.longpressTimeout[A]>0&&(window.clearTimeout(this.longpressTimeout[A]),this.longpressTimeout[A]=0),e-i>=500&&(this.longpressTimeout[A]=window.setTimeout((()=>{this.longpressTimeout[A]=0,(async()=>{var e;await this.plugin.loadSettings();const A=this.plugin.settings.pinnedScripts.indexOf(t);A>-1&&(this.plugin.settings.pinnedScripts.splice(A,1),null===(e=this.view.excalidrawAPI)||void 0===e||e.setToast({message:`Pin removed: ${r}`,duration:3e3,closable:!0})),await this.plugin.saveSettings(),app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedScripts()}))})()}),1500)),i=e}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":r},s))}))},this.renderButton=(e,t)=>React__namespace.createElement(React__namespace.Fragment,null,React__namespace.createElement("label",{className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{this.toolsRef.current.setTheme(t.theme),this.toolsRef.current.toggleVisibility(t.zenModeEnabled||e)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-hidden":"true"},ICONS.obsidian)),this.renderCustomPens(e,t),this.renderPinnedScriptButtons(e,t)),this.clickTimestamp=Array.from({length:Object.keys(PENS).length},(()=>0))}}class ActionButton extends React__namespace.Component{constructor(e){super(e),this.toastMessageTimeout=0,this.longpressTimeout=0,this.state={visible:!0}}render(){return React__namespace.createElement("button",{style:{},className:"ToolIcon_type_button ToolIcon_size_small ToolIcon_type_button--show ToolIcon",title:this.props.title,onClick:e=>{this.toastMessageTimeout&&(window.clearTimeout(this.toastMessageTimeout),this.toastMessageTimeout=0,this.props.action(e)),this.longpressTimeout&&(window.clearTimeout(this.longpressTimeout),this.longpressTimeout=0)},onPointerDown:e=>{this.toastMessageTimeout=window.setTimeout((()=>{var e;null===(e=this.props.view.excalidrawAPI)||void 0===e||e.setToast({message:this.props.title,duration:3e3,closable:!0}),this.toastMessageTimeout=0}),400),this.longpressTimeout=window.setTimeout((()=>{var t;this.props.longpress?this.props.longpress(e):null===(t=this.props.view.excalidrawAPI)||void 0===t||t.setToast({message:"Cannot pin this action",duration:3e3,closable:!0}),this.longpressTimeout=0}),1500)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-hidden":"true"},this.props.icon))}}const FIRST_RUN='\nThe Excalidraw Obsidian plugin is much more than "just" a drawing tool. To help you get started here\'s a showcase of the key Excalidraw plugin features.\n\nIf you\'d like to learn more, please subscribe to my YouTube channel: [Visual PKM](https://www.youtube.com/channel/UCC0gns4a9fhVkGkngvSumAQ) where I regularly share videos about Obsidian-Excalidraw and about tools and techniques for Visual Personal Knowledge Management.\n\nThank you & Enjoy!\n\n
\n\n
\n',RELEASE_NOTES={Intro:'After each update you\'ll be prompted with the release notes. You can disable this in plugin settings.\n\nI develop this plugin as a hobby, spending my free time doing this. If you find it valuable, then please say THANK YOU or...\n\n
\n',"1.9.3":'\n## New from Excalidraw.com\n- Eyedropper tool. The eyedropper is triggered with "i". If you hold the ALT key while clicking the color it will set the stroke color of the selected element, else the background color.\n- Flipping multiple elements\n- Improved stencil library rendering performance + the stencil library will remember the scroll position from the previous time it was open\n\n## Fixed\n- Replaced command palette and tab export SVG/PNG/Excalidraw actions with "export image" which will take the user to the export image dialog.\n',"1.9.2":`\n
\n\n
\n\n## New\n- Excalidraw.com Color Picker redesign [#6216](https://github.com/excalidraw/excalidraw/pull/6216)\n- Updated palette loader script in the script library\n- New ExcalidrawAutomate API to load Elements and AppState from another Excalidraw file.\n${String.fromCharCode(96,96,96)}typescript\nasync getSceneFromFile(file: TFile): Promise<{elements: ExcalidrawElement[]; appState: AppState;}>\n${String.fromCharCode(96,96,96)}\n`,"1.9.1":'\n## Updates from Excalidraw.com\n- "Unlock all elements" - new action available via the context menu [#5894](https://github.com/excalidraw/excalidraw/pull/5894)\n- Minor improvements to improve the speed [#6560](https://github.com/excalidraw/excalidraw/pull/6560)\n- Retain Seed on Shift Paste [#6509](https://github.com/excalidraw/excalidraw/pull/6509)\n\n## New/Fixed\n- Clicking on the link handle (top right corner) will open the link in the same window\n- CTRL/CMD click on a link will open the link in a new tab and will focus on the new tab\n- Linking to parts of images. In some cases clicking search results, links, or backlinks did not focus on the right element according to the link. Fixed.\n',"1.9.0":`\n
\n\n
\n\n## Fixed\n- Embedded images, markdowns, PDFs will load one by one, not in one go after a long wait\n\n## New\n- Embed PDF\n\n## New in ExcalidrawAutomate\n- onFileCreateHook: if set this hook is called whenever a new drawing is created using Excalidraw command palette menu actions. If the excalidraw file is created using Templater or other means, the trigger will not fire. [#1124](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1124)\n${String.fromCharCode(96,96,96)}typescript\n onFileCreateHook: (data: {\n ea: ExcalidrawAutomate;\n excalidrawFile: TFile; //the file being created\n view: ExcalidrawView;\n }) => Promise;\n ${String.fromCharCode(96,96,96)}\n`,"1.8.26":"\n## Fixed\n- Dynamic styling did not pick up correctly\n - the accent color with the default Obsidian theme\n - the drawing theme color with the out of the box, default new drawing (not using a template)\n- The Obsidian tools panel did not pick up user scripts when installing your very first script. A reload of Obsidian was required.\n","1.8.25":'\n
\n\n
\n\n## New & improved\n- Multi-link support\n- Updated [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) script for better handwritten text support. \n - Add links to text elements\n - Creating wrapped text in transparent sticky notes\n - Add text to arrows and lines\n - Handwriting support on iOS via Scribble\n\n## Fixed\n - The long-standing issue of jumping text\n \n',"1.8.24":`\n## Updates from Excalidraw.com\n- fix: color picker keyboard handling not working\n- fix: center align text when bind to the container via context menu\n- fix: split "Edit selected shape" shortcut\n\n## Fixed\n- BUG: Area embed link of svg inside excalidraw embed entire svg instead of area [#1098](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1098)\n\n## New\n- I updated the [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) script with tons of new features. I am still beta testing the script. I will release a demo video in the next few days.\n\n## New in Excalidraw Automate\n- I added many more configuration options for the scriptEngine utils.inputPrompt function. See [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) for a demonstration of this new feature.\n${String.fromCharCode(96,96,96)}typescript\n public static async inputPrompt(\n view: ExcalidrawView,\n plugin: ExcalidrawPlugin,\n app: App,\n header: string,\n placeholder?: string,\n value?: string,\n buttons?: { caption: string; tooltip?:string; action: Function }[],\n lines?: number,\n displayEditorButtons?: boolean,\n customComponents?: (container: HTMLElement) => void\n )\n${String.fromCharCode(96,96,96)}`,"1.8.23":'\n## Fixes\n- Fixed palm rejection to prevent unwanted spikes when using the freedraw tool. ([#1065](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1065))\n- Fixed issue where images disappeared when zoomed in. ([#6417](https://github.com/excalidraw/excalidraw/pull/6417))\n- Autosave will now save the drawing when you change the theme from dark to light or vice versa. ([#1080](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1080))\n- Added padding to short LaTeX formulas to prevent cropping. ([#1053](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1053))\n\n## New Features\n- Added a new command palette action: Toggle to invert default binding behavior. This new feature allows you to switch between normal and inverted mode. In normal mode, arrows will bind to objects unless you hold the CTRL/CMD key while drawing the arrow or moving objects. In inverted mode, arrows will not bind to objects unless you hold the CTRL/CMD key while drawing the arrow or moving objects.\n- You can now set a template LaTeX formula in the plugin settings (under experimental features) to be used when creating a new LaTeX formula. ([#1090](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1090))\n- Redesigned the Image Export dialog. I hope dropdowns are now more intuitive than the toggles were.\n- Added the ability to export only the selected part of a drawing. See the Export dialog for more information.\n- Added a zigzag fill easter egg. See a demo of this feature [here](https://twitter.com/excalidraw/status/1645428942344445952?s=61&t=nivKLx2vgl6hdv2EbW4mZg).\n- Added a new expert function: recolor embedded Excalidraw and SVG images (not JPG, PNG, BMP, WEBP, GIF). See a demo of this feature here:\n\n
\n\n
\n',"1.8.22":`\n## Fixed\n- Styling of custom pen and script buttons in the side panel was inverted.\n- Minor tweaks to dynamic styling. [see this video to understand dynamic styling](https://youtu.be/fypDth_-8q0)\n\n## New\n- New scripts by @threethan:\n - [Auto Draw for Pen](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Auto%20Draw%20for%20Pen.md): Automatically switches between the select and draw tools, based on whether a pen is being used. Supports most pens including Apple Pencil.\n - [Hardware Eraser Support](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Hardware%20Eraser%20Support.md): Adds support for pen inversion, a.k.a. the hardware eraser on the back of your pen. Supports Windows based styluses. Does not suppoprt Apple Pencil or S-Pen.\n- Added separate buttons to support copying link, area or group references to objects on the drawing. [#1063](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1063). See [this video](https://youtu.be/yZQoJg2RCKI) for more details on how this works.\n- Hover preview will no longer trigger for image files (.png, .svg, .jpg, .gif, .webp, .bmp, .ico, .excalidraw)\n- Minor updates to the [Slideshow](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Slideshow.md) script. You can download the updated script from the Excalidraw script library. The slideshow will now correctly run also when initiated in a popout window. When the drawing is in a popout window, the slideshow will not be full screen, but will only occupy the popout window. If you run the slideshow from the main Obsidian workspace, it will be displayed in full-screen mode.\n- Updated the Icon Library script to now include image keywords under each of the images to allow searching for keywords (CTRL/CMD+F). I've uploaded the new script to [here](https://gist.github.com/zsviczian/33ff695d5b990de1ebe8b82e541c26ad). If you need further information watch this [video](https://youtu.be/_OEljzZ33H8)\n\n## New in ExcalidrawAutomate\n- ${String.fromCharCode(96)}addText${String.fromCharCode(96)} ${String.fromCharCode(96)}formatting${String.fromCharCode(96)} parameter now accepts ${String.fromCharCode(96)}boxStrokeColor${String.fromCharCode(96)} and ${String.fromCharCode(96)}textVerticalAlign${String.fromCharCode(96)} values.\n${String.fromCharCode(96,96,96)}typescript\naddText(\n topX: number,\n topY: number,\n text: string,\n formatting?: {\n wrapAt?: number;\n width?: number;\n height?: number;\n textAlign?: "left" | "center" | "right";\n box?: boolean | "box" | "blob" | "ellipse" | "diamond";\n boxPadding?: number;\n boxStrokeColor?: string;\n textVerticalAlign?: "top" | "middle" | "bottom";\n },\n id?: string,\n ): string;\n${String.fromCharCode(96,96,96)}\n- new ${String.fromCharCode(96)}onFileOpenHook${String.fromCharCode(96)}. If set, this callback is triggered, when an Excalidraw file is opened. You can use this callback in case you want to do something additional when the file is opened. This will run before the file level script defined in the ${String.fromCharCode(96)}excalidraw-onload-script${String.fromCharCode(96)} frontmatter is executed. Excalidraw will await the result of operations here. Handle with care. If you change data such as the frontmatter of the underlying file, I haven't tested how it will behave.\n${String.fromCharCode(96,96,96)}typescript\nonFileOpenHook: (data: {\n ea: ExcalidrawAutomate;\n excalidrawFile: TFile; //the file being loaded\n view: ExcalidrawView;\n}) => Promise;\n${String.fromCharCode(96,96,96)}`,"1.8.21":'\n## Quality of Life improvements\n- Dynamic Styling (see plugin settings / Display). When Dynamic Styling is enabled it fixes Excalidraw issues with the Minimal Theme\n- New "Invert Colors" script\n\n
\n\n
\n\n### Note\nThe few of you, that are using the Dynamic Styling Templater script, please remove it and restart Obsidian.\n',"1.8.20":"\n## Fixed\n- Excalidraw froze Obsidian in certain rare situations [#1054](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1054)\n- File loading error [#1062](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1062)\n- Embedded images in markdown documents no longer have the line on the side. Image sizing works better. [#1059](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1059)\n- Locked elements will not show a hover preview [#1060](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1060)\n- CTRL/CMD + K correctly triggers add link [#1056](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1056)\n\n## New\n- Grid color adjusts to the view background color\n\nI'm sorry, but the sticky note editing issue on Android with the on-screen keyboard has still not been resolved. If you also experience this error, please help raise the priority with the core Excalidraw team by commenting on this issue: [#6330](https://github.com/excalidraw/excalidraw/issues/6330)\n","1.8.19":"\n## Fixed: Text wrapping issue in sticky notes\n\nI fixed an issue where text would wrap differently and words would disappear during text editing in sticky notes. You can check out the details on [GitHub #6318](https://github.com/excalidraw/excalidraw/issues/6331).\n\nI am aware of three additional issues related to container text editing that are still open. I apologize for any inconvenience caused by the recent change in how text size is calculated on Excalidraw.com, which has had a knock-on effect on Obsidian. I am actively working to address the following issues:\n\n- Pinch zooming while editing text in a text container [GitHub #6331](https://github.com/excalidraw/excalidraw/issues/6331)\n- Container text jumps on edit on Android with on-screen keyboard [GitHub #6330](https://github.com/excalidraw/excalidraw/issues/6330)\n- Shadow text when editing text containers without a keyboard on iOS [GitHub #6329](https://github.com/excalidraw/excalidraw/issues/6329)\n\nThank you for your patience while I work on resolving these issues.\n","1.8.18":`\n## Fixed\n- Text scaling issue introduced in 1.8.17\n- [#1043](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1043): Error handling when ${String.fromCharCode(96)}onCanvasColorChangeHook${String.fromCharCode(96)} is executed. This is used in the [Dynamic Styling Script](https://youtu.be/LtR04fNTKTM). \n`,"1.8.17":'\n## New from Excalidraw.com\n- Improved text wrapping in the ellipse and diamond shapes [6172](https://github.com/excalidraw/excalidraw/pull/6172)\n\n## New\n- Updated slideshow script\n\n
\n\n
\n\n## Fixed: \n- "Save to..." in the Stencil Library menu now works as expected [#1032](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1032)\n',"1.8.16":'\n**!!! Modifier keys have changed, please review the table below !!!**\n[Click this to see the new shortcuts overview image](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png)\n\n## Fixed \n- This version was extensively tested and developed on MacOS to remove usability issues.\n- New command palette action to create a new drawing in a new tab\n- Modifier keys to open links in the active window, splitting the current view to the right, in a new tab, or in a popout window now behave consistently both in Excalidraw and when clicking a drawing that is embedded in a markdown note.\n- Drag & Drop properly works from within Obsidian, from a web browser, and from the OS file explorer\n\n
\n\n
\n',"1.8.14":"\n## Fixed\n- text element link gets deleted when the drawing is reloaded\n","1.8.13":'\n## Fixed\n- When changing a text element in markdown mode, the change seem to have showed up when switching back to Excalidraw mode, but then lost these changes when loading the file the next time.\n- Scrolling through a page that has embedded drawings on Obsidian Mobile accidently opens the drawing in Excalidraw when touching the image. Now you need to press and hold to open the image in Excalidraw. [#1003](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1003)\n- The scrollbar is no longer visible when presenting using the SlideShow script\n- Stroke properties could not be changed when custom pen settings had "Stroke & fill applies to: All shapes". It works now.\n\n## QoL\n- Custom pens will remember the stroke changes until you press the pen preset button again.\n - This is a bit hard to explain, let me try... Essentially, when you use a custom pen, it will keep the changes you made to the pen (like changing the stroke width) until you press the pen-prereset button again. So, for example, if you\'re using a mind mapping custom pen and change its color, and then switch to a different tool like text, when you switch back to the freedraw tool using the Excalidraw tools panel, the pen will still have the same color you set earlier, but if you press the mind mapping pen-preset button, it will default back to your custom pen settings including your preset color.\n- Added new buttons to load current stroke color and background color in the pen settings dialog. Also added an edit box so you can configure any valid color string (including with transparency) for pen stroke and background colors. [#991](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/991)\n',"1.8.11":'\n
\n\n
\n\n# New\n- Support for referencing images from the internet in Excalidraw drawings, including YouTube thumbnail support. [#913](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/913)\n - Link to images on the internet without creating a copy in your Vault by holding down the CTRL key while dropping the link or image.\n - Automatic conversion of image URLs and YouTube links into image elements with original links added as a link on the element when pasting. Note, that if you only want to paste the plain text link (not the image), first double-click the canvas to start a new text element, then paste the link.\n- Two new options added to plugin settings:\n - Make mouse wheel zoom by default [#474](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/474)\n - Allow pinch zoom in pen mode [#828](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/828)\n- Update to the [Set Grid](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Set%20Grid.svg) script now saves the grid setting for the current file.\n',"1.8.10":'\n
\n\n
\n\n# QoL improvements\n- You can structure icons in the Obsidian tools panel by moving scripts to folders\n![image|300](https://user-images.githubusercontent.com/14358394/212389592-306130d0-209a-49df-99bb-c538f2155b23.png)\n- I added useful actions to the hamburger menu in both tray-mode and normal-mode. \n![image|150](https://user-images.githubusercontent.com/14358394/212534508-9107fd19-27ab-4415-8abc-bc97c73afc0b.png)\n- I added a new Export Image dialog. You can access the new export screen from the hamburger-menu\n![image|200](https://user-images.githubusercontent.com/14358394/212534654-7a479e23-8d5d-452e-9a18-a9896278aa27.png)\n- Links in help now point to Obsidian-Excalidraw relevant content.\n- I added a welcome screen\n![image|150](https://user-images.githubusercontent.com/14358394/212534568-3cd1e8a1-5b20-4a30-96e4-40d7dac57e33.png)\n- I updated the alternative dark mode / dynamic styling [script](https://gist.github.com/zsviczian/c7223c5b4af30d5c88a0cae05300305c)\n',"1.8.9":"\n# Minor QoL improvements\n- When you open a second drawing in the same Excalidraw view (i.e. by navigating a link) and make a change to this drawing, and then press UNDO, the entire drawing disappeared. Redo brought the image back, however, this behavior was frustrating. Not anymore...\n- On iPad\n - when you open the command palette, autozoom resized the drawing. If the Obsidian command palette or some other modal window is shown Excalidraw will not resize the view.\n - when you add a link to the drawing using the Command Palette, sometimes the link was added in a far corner of the drawing outside the current view area. This should be fixed now.","1.8.8":`\n
\n\n
\n\n# New\n- The plugin now includes support for [Perfect Freehand](https://perfect-freehand-example.vercel.app/) pen-options. I've also added a new [Alternative Pens](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Alternative%20Pens.md) script.\n- Embed scene in exported PNG and SVG images [#860](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/860). This means that the export will be a normal PNG or SVG image with the added functionality that if someone loads the image into excalidraw.com it will open as a normal excalidraw file.\n - I've added 2 new Command Palette actions (export PNG, export SVG with embedded scene).\n - If you SHIFT click ${String.fromCharCode(96)} Save as PNG (or SVG)${String.fromCharCode(96)} in the workspace-tab menu, Excalidraw will embed the scene in the export.\n- I updated the [Organic Line](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Organic%20Line.md) script. It has an improved thick-to-thin look and a new thin-to-thick-to-thin line type.\n\n# Fixed\n- Intelligent image width setting [#955](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/955). Before this change, when the embedded image was small, the image would be extended to meet the image width setting in plugin settings. From now on, if the image is smaller than max-width, it will only extend to max-width. You can still set 100% width using custom CSS. See more on that [here](https://github.com/zsviczian/obsidian-excalidraw-plugin#embedded-images).\n\n# New in ExcalidrawAutomate\n- I added the ${String.fromCharCode(96)} plaintext${String.fromCharCode(96)} parameter to ${String.fromCharCode(96)}ExcalidrawAutomate.create${String.fromCharCode(96)} . Using this, you can add some text below the frontmatter but above the ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)} section. Use this for example to add metadata to your file. (e.g. I use this in my Daily Quote template to add a Dataview field for the ${String.fromCharCode(96)}Author::${String.fromCharCode(96)} and add the quote with a standard block reference, so I can easily reference it in other files. I also add the ${String.fromCharCode(96)}#quote${String.fromCharCode(96)} tag to the file using this.)\n- The script running in the ScriptEngine now also receives the ${String.fromCharCode(96)}TFile${String.fromCharCode(96)} object for the script itself. You can access this object during execution via the ${String.fromCharCode(96)}utils.scriptFile${String.fromCharCode(96)} variable. \n`,"1.8.7":'\n## New from Excalidraw.com\n- Support shrinking text containers to their original height when text is removed [#6025](https://github.com/excalidraw/excalidraw/pull/6025)\n
\n\n
\n\n## Fixed\n- removed the white background when editing arrow-label [#6033](https://github.com/excalidraw/excalidraw/pull/6033)\n- Minor style tweaks\n - for embedding Excalidraw into Obsidian Canvas. e.g. dragging no longer accidentally creates an image copy of the drawing, and\n - style tweaks on the Excalidraw canvas\n\n## New\n- If you set a different text color and sticky note border color, now if you change the border color, the text color will not be changed.\n',"1.8.6":`\n## New from Excalidraw.com:\n- Better default radius for rectangles [#5553](https://github.com/excalidraw/excalidraw/pull/5553). Existing drawings will look unchanged, this applies only to new rectangles.\n![image|200](https://user-images.githubusercontent.com/5153846/206264345-59fd7436-e87b-4bc9-ade8-9e6f6a6fd8c1.png)\n> [!attention]- ExcalidrawAutomate technical details\n> - ${String.fromCharCode(96)}strokeSharpness${String.fromCharCode(96)} is now deprecated\n> - use roundness instead\n> - ${String.fromCharCode(96)}roundness === null${String.fromCharCode(96)} is legacy ${String.fromCharCode(96)}strokeSharpness = "sharp"${String.fromCharCode(96)}\n> - ${String.fromCharCode(96)}roundness = { type: RoundnessType; value?: number }${String.fromCharCode(96)}\n> - type: 1, LEGACY, type:2 PROPORTIONAL_RADIUS, type:3 ADAPTIVE_RADIUS: 3\n> - value:\n> - Radius represented as % of element's largest side (width/height).\n> DEFAULT_PROPORTIONAL_RADIUS = 0.25;\n> - Fixed radius for the ADAPTIVE_RADIUS algorithm. In pixels.\n> DEFAULT_ADAPTIVE_RADIUS = 32;\n\n## New\n- For Obsidian 1.1.6 and above\n - Improved embedding into Obsidian Canvas\n - Improved embedding into Markdown documents\n- Added setting under ${String.fromCharCode(96)}Display/Default mode when opening Excalidraw${String.fromCharCode(96)} to always open the drawing in view mode on Mobile, but in normal mode on desktop. [#939](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/939)\n\n## Fixed\n- Zoom reset tooltip appears twice [#942](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/942)\n- Hid export library from library menu as it does not work due to Obsidian limitations. Use the command palette export library instead.\n- Arrow with label did not get exported and embedded correctly [#941](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/941)\n![image|200](https://user-images.githubusercontent.com/22638687/207845868-b352ddb1-7994-4f13-a0b2-f2e19bd72935.png)\n`,"1.8.4":'\n## New from Excalidraw.com\n- Labels on Arrows!!! [#5723](https://github.com/excalidraw/excalidraw/pull/5723)\n - To add a label press "Enter" or "Double click" on the arrow\n - Use "Cmd/Ctrl+double click" to enter the line editor\n\n
\n\n
\n\n## New\n- **Changed behavior**: In the Obsidian markdown editor clicking an Excalidraw image will not open the image (to avoid accidentally opening the image on a tablet). To open a drawing for editing in Excalidraw double click or long-tap on it. [#920](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/920)\n\n## Fixed \n- Text stroke color is not honored when pasting a HEX color string to an Excalidraw canvas open in an Obsidian popout window [#921](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/921)\n- The new [multi-line >> multi-element paste behavior](https://github.com/excalidraw/excalidraw/pull/5786) introduced in the previous release did not work as expected in Obsidian. Now it does.\n',"1.8.2":`\nIntroducing the [Excalidraw Slideshow Script](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Slideshow.md) - available in the script store\n
\n\n
\n\n## Fixed\n- Obsidian tools panel gets misplaced after switching Obsidian workspace tabs\n\n## New in ExcalidrawAutomate\n- changed ${String.fromCharCode(96)}viewToggleFullScreen(forceViewMode: boolean = false): void${String.fromCharCode(96)}: the function will toggle view mode on when going to full screen and view mode off when terminating full screen.\n- new functions\n${String.fromCharCode(96,96,96)}typescript\nsetViewModeEnabled(enabled: boolean):void;\nviewUpdateScene(\n scene: {\n elements?: ExcalidrawElement[];\n appState?: AppState;\n files?: BinaryFileData;\n commitToHistory?: boolean;\n },\n restore: boolean = false,\n ):void;\nviewZoomToElements(\n selectElements: boolean,\n elements: ExcalidrawElement[]\n ):void;\n${String.fromCharCode(96,96,96)}\n\n`,"1.8.1":`\n## New and fixes from Excalidraw.com\n- New text paste behavior. Pasting multiline text will generate separate text elements unless you hold down the shift button while pasting [#5786](https://github.com/excalidraw/excalidraw/pull/5786)\n- line editor fixes [#5927](https://github.com/excalidraw/excalidraw/pull/5927)\n\n## Fixed\n- The Command Palette "Insert link" action now inserts the new link at the top drawing layer, not at the bottom.\n- Updated, hopefully, better organized, Plugin Readme.\n\n## New\n- Second attempt at moving to React 18. This upgrade is required to maintain alignment with the core Excalidraw product and to continue to benefit from Excalidraw.com enhancements.\n- Added options to Plugin Settings\n - to disable autozoom when loading a drawing for the first time [#907](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/907)\n - to modify autosave interval. You can now set an autosave interval for desktop and for mobile [#888](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/888)\n\n## New in ExcalidrawAutomate\n- Published the obsidian_module on the ExcalidrawAutomate object. ${String.fromCharCode(96)}ExcalidrawAutomate.obsidian${String.fromCharCode(96)}. Publishing this object will give script developers increased flexibility and control over script automation.\n`,"1.8.0":'\n
\n\n
\n\n## New\n- Optical Character Recognition (OCR). Introducing the MVP (minimum viable product) release of the integration of [Taskbone](https://taskbone.com) OCR into Excalidraw. See the new scan button on the Obsidian tools panel.\n- New and improved full-screen mode\n - Activate using the Obsidian tools panel, the Obsidian Command Palette, or the Alt+F11 shortcut\n - The ESC key no longer closes full-screen\n - Full-screen mode works properly on iOS as well\n- Improved Icon visibility on the Obsidian tools panel\n- Added 3 additional buttons to the tools panel\n - Force save\n - Open link (useful on Mobile devices). In the case of LaTeX equations, the button opens the equation properties.\n - Open the link in a new pane. In the case of embedded markdown documents, the button opens the embed properties.\n\n## Fixed\n- The [deconstruct selected elements into a new drawing](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Deconstruct%20selected%20elements%20into%20new%20drawing.md) script now also correctly decomposes transcluded text elements.\n',"1.7.30":"\nFix:\n- Forcing the embedded image to always scale to 100% (a feature introduced in [1.7.26](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.7.26)) scaled the embedded excalidraw drawings incorrectly on devices with a pixel ratio of 2 or 3 (e.g. iPads). This is now fixed, however, this fix might retrospectively impact drawings that use this feature. Sorry for that.\n","1.7.29":"\n- This is a big update that accommodates the **UI redesign** on Excalidraw.com [#5780](https://github.com/excalidraw/excalidraw/pull/5780). The change on the surface may seem superficial, however, I had to tweak a number of things to make it work in Obsidian. I hope I found everything that broke and fixed it, if not, I'll try to fix it quickly...\n- This update also comes with changes under the hood that **fix issues with Excalidraw Automate** - paving the way for further scripts, plus some smaller bug fixes.\n- I **reworked text wrapping**. In some cases, text wrapping in SVG exports looked different compared to how the text looked in Excalidraw. This should now be fixed.\n- If you are using the **Experimental Dynamic Styling** of the Excalidraw Toolbar, then I recommend updating your styling script following base on [this](https://gist.github.com/zsviczian/c7223c5b4af30d5c88a0cae05300305c)\n","1.7.27":'## New\n- Import SVG drawing as an Excalidraw object. [#679](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/679)\n\n
\n\n
\n\n## Fixed\n- Large drawings freeze on the iPad when opening the file. I implemented a workaround whereby Excalidraw will avoid zoom-to-fit drawings with over 1000 elements. [#863](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/863)\n- Reintroduced copy/paste to the context menu\n',"1.7.26":'## Fixed\n- Transcluded block with a parent bullet does not embed sub-bullet [#853](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/853)\n- Transcluded text will now exclude ^block-references at end of lines\n- Phantom duplicates of the drawing appear when "zoom to fit" results in a zoom value below 10% and there are many objects on the canvas [#850](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/850)\n- CTRL+Wheel will increase/decrease zoom in steps of 5% matching the behavior of the "+" & "-" zoom buttons.\n- Latest updates from Excalidarw.com\n - Freedraw flip not scaling correctly [#5752](https://github.com/excalidraw/excalidraw/pull/5752)\n - Multiple elements resizing regressions [#5586](https://github.com/excalidraw/excalidraw/pull/5586)\n\n## New - power user features\n- Force the embedded image to always scale to 100%. Note: this is a very niche feature with a very particular behavior that I built primarily for myself (even more so than other features in Excalidraw Obsidian - also built primarily for myself 😉)... This will reset your embedded image to 100% size every time you open the Excalidraw drawing, or in case you have embedded an Excalidraw drawing on your canvas inserted using this function, every time you update the embedded drawing, it will be scaled back to 100% size. This means that even if you resize the image on the drawing, it will reset to 100% the next time you open the file or you modify the original embedded object. This feature is useful when you decompose a drawing into separate Excalidraw files, but when combined onto a single canvas you want the individual pieces to maintain their actual sizes. I use this feature to construct Book-on-a-Page summaries from atomic drawings.\n- I added an action to the command palette to temporarily disable/enable Excalidraw autosave. When autosave is disabled, Excalidraw will still save your drawing when changing to another Obsidian window, but it will not save every 10 seconds. On a mobile device (but also on a desktop) this can lead to data loss if you terminate Obsidian abruptly (i.e. swipe the application away, or close Obsidian without first closing the drawing). Use this feature if you find Excalidraw laggy.'};class ReleaseNotes extends obsidian_module.Modal{constructor(e,t,A){super(e),this.plugin=t,this.version=A}onOpen(){var e;this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText(`Welcome to Excalidraw ${null!==(e=this.version)&&void 0!==e?e:""}`),this.createForm()}async onClose(){this.contentEl.empty(),await this.plugin.loadSettings(),this.plugin.settings.previousRelease=PLUGIN_VERSION,await this.plugin.saveSettings()}async createForm(){let e=this.plugin.settings.previousRelease;e=this.version===e?"0.0.0":e;const t=this.version?Object.keys(RELEASE_NOTES).filter((t=>"Intro"===t||isVersionNewerThanOther(t,e))).map((e=>`${"Intro"===e?"":`# ${e}\n`}${RELEASE_NOTES[e]}`)).slice(0,10).join("\n\n---\n"):FIRST_RUN;await obsidian_module.MarkdownRenderer.renderMarkdown(t,this.contentEl,"",this.plugin),this.contentEl.createEl("p",{text:""},(e=>{e.style.textAlign="right",e.createEl("button",{text:"Close"}).onclick=()=>this.close()}))}}var top="top",bottom="bottom",right="right",left="left",auto="auto",basePlacements=[top,bottom,right,left],start="start",end="end",clippingParents="clippingParents",viewport="viewport",popper="popper",reference="reference",variationPlacements=basePlacements.reduce((function(e,t){return e.concat([t+"-"+start,t+"-"+end])}),[]),placements=[].concat(basePlacements,[auto]).reduce((function(e,t){return e.concat([t,t+"-"+start,t+"-"+end])}),[]),beforeRead="beforeRead",read="read",afterRead="afterRead",beforeMain="beforeMain",main="main",afterMain="afterMain",beforeWrite="beforeWrite",write="write",afterWrite="afterWrite",modifierPhases=[beforeRead,read,afterRead,beforeMain,main,afterMain,beforeWrite,write,afterWrite];function getNodeName(e){return e?(e.nodeName||"").toLowerCase():null}function getWindow(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function isElement(e){return e instanceof getWindow(e).Element||e instanceof Element}function isHTMLElement(e){return e instanceof getWindow(e).HTMLElement||e instanceof HTMLElement}function isShadowRoot(e){return"undefined"!=typeof ShadowRoot&&(e instanceof getWindow(e).ShadowRoot||e instanceof ShadowRoot)}function applyStyles(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var A=t.styles[e]||{},i=t.attributes[e]||{},n=t.elements[e];isHTMLElement(n)&&getNodeName(n)&&(Object.assign(n.style,A),Object.keys(i).forEach((function(e){var t=i[e];!1===t?n.removeAttribute(e):n.setAttribute(e,!0===t?"":t)})))}))}function effect$2(e){var t=e.state,A={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,A.popper),t.styles=A,t.elements.arrow&&Object.assign(t.elements.arrow.style,A.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],n=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:A[e]).reduce((function(e,t){return e[t]="",e}),{});isHTMLElement(i)&&getNodeName(i)&&(Object.assign(i.style,a),Object.keys(n).forEach((function(e){i.removeAttribute(e)})))}))}}var applyStyles$1={name:"applyStyles",enabled:!0,phase:"write",fn:applyStyles,effect:effect$2,requires:["computeStyles"]};function getBasePlacement(e){return e.split("-")[0]}var max=Math.max,min=Math.min,round=Math.round;function getUAString(){var e=navigator.userAgentData;return null!=e&&e.brands?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function isLayoutViewport(){return!/^((?!chrome|android).)*safari/i.test(getUAString())}function getBoundingClientRect(e,t,A){void 0===t&&(t=!1),void 0===A&&(A=!1);var i=e.getBoundingClientRect(),n=1,a=1;t&&isHTMLElement(e)&&(n=e.offsetWidth>0&&round(i.width)/e.offsetWidth||1,a=e.offsetHeight>0&&round(i.height)/e.offsetHeight||1);var r=(isElement(e)?getWindow(e):window).visualViewport,s=!isLayoutViewport()&&A,o=(i.left+(s&&r?r.offsetLeft:0))/n,l=(i.top+(s&&r?r.offsetTop:0))/a,c=i.width/n,d=i.height/a;return{width:c,height:d,top:l,right:o+c,bottom:l+d,left:o,x:o,y:l}}function getLayoutRect(e){var t=getBoundingClientRect(e),A=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-A)<=1&&(A=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:A,height:i}}function contains(e,t){var A=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(A&&isShadowRoot(A)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function getComputedStyle$1(e){return getWindow(e).getComputedStyle(e)}function isTableElement(e){return["table","td","th"].indexOf(getNodeName(e))>=0}function getDocumentElement(e){return((isElement(e)?e.ownerDocument:e.document)||window.document).documentElement}function getParentNode(e){return"html"===getNodeName(e)?e:e.assignedSlot||e.parentNode||(isShadowRoot(e)?e.host:null)||getDocumentElement(e)}function getTrueOffsetParent(e){return isHTMLElement(e)&&"fixed"!==getComputedStyle$1(e).position?e.offsetParent:null}function getContainingBlock(e){var t=/firefox/i.test(getUAString());if(/Trident/i.test(getUAString())&&isHTMLElement(e)&&"fixed"===getComputedStyle$1(e).position)return null;var A=getParentNode(e);for(isShadowRoot(A)&&(A=A.host);isHTMLElement(A)&&["html","body"].indexOf(getNodeName(A))<0;){var i=getComputedStyle$1(A);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return A;A=A.parentNode}return null}function getOffsetParent(e){for(var t=getWindow(e),A=getTrueOffsetParent(e);A&&isTableElement(A)&&"static"===getComputedStyle$1(A).position;)A=getTrueOffsetParent(A);return A&&("html"===getNodeName(A)||"body"===getNodeName(A)&&"static"===getComputedStyle$1(A).position)?t:A||getContainingBlock(e)||t}function getMainAxisFromPlacement(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function within(e,t,A){return max(e,min(t,A))}function withinMaxClamp(e,t,A){var i=within(e,t,A);return i>A?A:i}function getFreshSideObject(){return{top:0,right:0,bottom:0,left:0}}function mergePaddingObject(e){return Object.assign({},getFreshSideObject(),e)}function expandToHashMap(e,t){return t.reduce((function(t,A){return t[A]=e,t}),{})}var toPaddingObject=function(e,t){return mergePaddingObject("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:expandToHashMap(e,basePlacements))};function arrow(e){var t,A=e.state,i=e.name,n=e.options,a=A.elements.arrow,r=A.modifiersData.popperOffsets,s=getBasePlacement(A.placement),o=getMainAxisFromPlacement(s),l=[left,right].indexOf(s)>=0?"height":"width";if(a&&r){var c=toPaddingObject(n.padding,A),d=getLayoutRect(a),h="y"===o?top:left,u="y"===o?bottom:right,g=A.rects.reference[l]+A.rects.reference[o]-r[o]-A.rects.popper[l],p=r[o]-A.rects.reference[o],m=getOffsetParent(a),w=m?"y"===o?m.clientHeight||0:m.clientWidth||0:0,f=g/2-p/2,B=c[h],E=w-d[l]-c[u],b=w/2-d[l]/2+f,v=within(B,b,E),C=o;A.modifiersData[i]=((t={})[C]=v,t.centerOffset=v-b,t)}}function effect$1(e){var t=e.state,A=e.options.element,i=void 0===A?"[data-popper-arrow]":A;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&contains(t.elements.popper,i)&&(t.elements.arrow=i)}var arrow$1={name:"arrow",enabled:!0,phase:"main",fn:arrow,effect:effect$1,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function getVariation(e){return e.split("-")[1]}var unsetSides={top:"auto",right:"auto",bottom:"auto",left:"auto"};function roundOffsetsByDPR(e){var t=e.x,A=e.y,i=window.devicePixelRatio||1;return{x:round(t*i)/i||0,y:round(A*i)/i||0}}function mapToStyles(e){var t,A=e.popper,i=e.popperRect,n=e.placement,a=e.variation,r=e.offsets,s=e.position,o=e.gpuAcceleration,l=e.adaptive,c=e.roundOffsets,d=e.isFixed,h=r.x,u=void 0===h?0:h,g=r.y,p=void 0===g?0:g,m="function"==typeof c?c({x:u,y:p}):{x:u,y:p};u=m.x,p=m.y;var w=r.hasOwnProperty("x"),f=r.hasOwnProperty("y"),B=left,E=top,b=window;if(l){var v=getOffsetParent(A),C="clientHeight",y="clientWidth";v===getWindow(A)&&"static"!==getComputedStyle$1(v=getDocumentElement(A)).position&&"absolute"===s&&(C="scrollHeight",y="scrollWidth"),v=v,(n===top||(n===left||n===right)&&a===end)&&(E=bottom,p-=(d&&v===b&&b.visualViewport?b.visualViewport.height:v[C])-i.height,p*=o?1:-1),n!==left&&(n!==top&&n!==bottom||a!==end)||(B=right,u-=(d&&v===b&&b.visualViewport?b.visualViewport.width:v[y])-i.width,u*=o?1:-1)}var F,x=Object.assign({position:s},l&&unsetSides),S=!0===c?roundOffsetsByDPR({x:u,y:p}):{x:u,y:p};return u=S.x,p=S.y,o?Object.assign({},x,((F={})[E]=f?"0":"",F[B]=w?"0":"",F.transform=(b.devicePixelRatio||1)<=1?"translate("+u+"px, "+p+"px)":"translate3d("+u+"px, "+p+"px, 0)",F)):Object.assign({},x,((t={})[E]=f?p+"px":"",t[B]=w?u+"px":"",t.transform="",t))}function computeStyles(e){var t=e.state,A=e.options,i=A.gpuAcceleration,n=void 0===i||i,a=A.adaptive,r=void 0===a||a,s=A.roundOffsets,o=void 0===s||s,l={placement:getBasePlacement(t.placement),variation:getVariation(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:n,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,mapToStyles(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:r,roundOffsets:o})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,mapToStyles(Object.assign({},l,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:o})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var computeStyles$1={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:computeStyles,data:{}},passive={passive:!0};function effect(e){var t=e.state,A=e.instance,i=e.options,n=i.scroll,a=void 0===n||n,r=i.resize,s=void 0===r||r,o=getWindow(t.elements.popper),l=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&l.forEach((function(e){e.addEventListener("scroll",A.update,passive)})),s&&o.addEventListener("resize",A.update,passive),function(){a&&l.forEach((function(e){e.removeEventListener("scroll",A.update,passive)})),s&&o.removeEventListener("resize",A.update,passive)}}var eventListeners={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:effect,data:{}},hash$1={left:"right",right:"left",bottom:"top",top:"bottom"};function getOppositePlacement(e){return e.replace(/left|right|bottom|top/g,(function(e){return hash$1[e]}))}var hash={start:"end",end:"start"};function getOppositeVariationPlacement(e){return e.replace(/start|end/g,(function(e){return hash[e]}))}function getWindowScroll(e){var t=getWindow(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function getWindowScrollBarX(e){return getBoundingClientRect(getDocumentElement(e)).left+getWindowScroll(e).scrollLeft}function getViewportRect(e,t){var A=getWindow(e),i=getDocumentElement(e),n=A.visualViewport,a=i.clientWidth,r=i.clientHeight,s=0,o=0;if(n){a=n.width,r=n.height;var l=isLayoutViewport();(l||!l&&"fixed"===t)&&(s=n.offsetLeft,o=n.offsetTop)}return{width:a,height:r,x:s+getWindowScrollBarX(e),y:o}}function getDocumentRect(e){var t,A=getDocumentElement(e),i=getWindowScroll(e),n=null==(t=e.ownerDocument)?void 0:t.body,a=max(A.scrollWidth,A.clientWidth,n?n.scrollWidth:0,n?n.clientWidth:0),r=max(A.scrollHeight,A.clientHeight,n?n.scrollHeight:0,n?n.clientHeight:0),s=-i.scrollLeft+getWindowScrollBarX(e),o=-i.scrollTop;return"rtl"===getComputedStyle$1(n||A).direction&&(s+=max(A.clientWidth,n?n.clientWidth:0)-a),{width:a,height:r,x:s,y:o}}function isScrollParent(e){var t=getComputedStyle$1(e),A=t.overflow,i=t.overflowX,n=t.overflowY;return/auto|scroll|overlay|hidden/.test(A+n+i)}function getScrollParent(e){return["html","body","#document"].indexOf(getNodeName(e))>=0?e.ownerDocument.body:isHTMLElement(e)&&isScrollParent(e)?e:getScrollParent(getParentNode(e))}function listScrollParents(e,t){var A;void 0===t&&(t=[]);var i=getScrollParent(e),n=i===(null==(A=e.ownerDocument)?void 0:A.body),a=getWindow(i),r=n?[a].concat(a.visualViewport||[],isScrollParent(i)?i:[]):i,s=t.concat(r);return n?s:s.concat(listScrollParents(getParentNode(r)))}function rectToClientRect(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function getInnerBoundingClientRect(e,t){var A=getBoundingClientRect(e,!1,"fixed"===t);return A.top=A.top+e.clientTop,A.left=A.left+e.clientLeft,A.bottom=A.top+e.clientHeight,A.right=A.left+e.clientWidth,A.width=e.clientWidth,A.height=e.clientHeight,A.x=A.left,A.y=A.top,A}function getClientRectFromMixedType(e,t,A){return t===viewport?rectToClientRect(getViewportRect(e,A)):isElement(t)?getInnerBoundingClientRect(t,A):rectToClientRect(getDocumentRect(getDocumentElement(e)))}function getClippingParents(e){var t=listScrollParents(getParentNode(e)),A=["absolute","fixed"].indexOf(getComputedStyle$1(e).position)>=0&&isHTMLElement(e)?getOffsetParent(e):e;return isElement(A)?t.filter((function(e){return isElement(e)&&contains(e,A)&&"body"!==getNodeName(e)})):[]}function getClippingRect(e,t,A,i){var n="clippingParents"===t?getClippingParents(e):[].concat(t),a=[].concat(n,[A]),r=a[0],s=a.reduce((function(t,A){var n=getClientRectFromMixedType(e,A,i);return t.top=max(n.top,t.top),t.right=min(n.right,t.right),t.bottom=min(n.bottom,t.bottom),t.left=max(n.left,t.left),t}),getClientRectFromMixedType(e,r,i));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function computeOffsets(e){var t,A=e.reference,i=e.element,n=e.placement,a=n?getBasePlacement(n):null,r=n?getVariation(n):null,s=A.x+A.width/2-i.width/2,o=A.y+A.height/2-i.height/2;switch(a){case top:t={x:s,y:A.y-i.height};break;case bottom:t={x:s,y:A.y+A.height};break;case right:t={x:A.x+A.width,y:o};break;case left:t={x:A.x-i.width,y:o};break;default:t={x:A.x,y:A.y}}var l=a?getMainAxisFromPlacement(a):null;if(null!=l){var c="y"===l?"height":"width";switch(r){case start:t[l]=t[l]-(A[c]/2-i[c]/2);break;case end:t[l]=t[l]+(A[c]/2-i[c]/2)}}return t}function detectOverflow(e,t){void 0===t&&(t={});var A=t,i=A.placement,n=void 0===i?e.placement:i,a=A.strategy,r=void 0===a?e.strategy:a,s=A.boundary,o=void 0===s?clippingParents:s,l=A.rootBoundary,c=void 0===l?viewport:l,d=A.elementContext,h=void 0===d?popper:d,u=A.altBoundary,g=void 0!==u&&u,p=A.padding,m=void 0===p?0:p,w=mergePaddingObject("number"!=typeof m?m:expandToHashMap(m,basePlacements)),f=h===popper?reference:popper,B=e.rects.popper,E=e.elements[g?f:h],b=getClippingRect(isElement(E)?E:E.contextElement||getDocumentElement(e.elements.popper),o,c,r),v=getBoundingClientRect(e.elements.reference),C=computeOffsets({reference:v,element:B,strategy:"absolute",placement:n}),y=rectToClientRect(Object.assign({},B,C)),F=h===popper?y:v,x={top:b.top-F.top+w.top,bottom:F.bottom-b.bottom+w.bottom,left:b.left-F.left+w.left,right:F.right-b.right+w.right},S=e.modifiersData.offset;if(h===popper&&S){var T=S[n];Object.keys(x).forEach((function(e){var t=[right,bottom].indexOf(e)>=0?1:-1,A=[top,bottom].indexOf(e)>=0?"y":"x";x[e]+=T[A]*t}))}return x}function computeAutoPlacement(e,t){void 0===t&&(t={});var A=t,i=A.placement,n=A.boundary,a=A.rootBoundary,r=A.padding,s=A.flipVariations,o=A.allowedAutoPlacements,l=void 0===o?placements:o,c=getVariation(i),d=c?s?variationPlacements:variationPlacements.filter((function(e){return getVariation(e)===c})):basePlacements,h=d.filter((function(e){return l.indexOf(e)>=0}));0===h.length&&(h=d);var u=h.reduce((function(t,A){return t[A]=detectOverflow(e,{placement:A,boundary:n,rootBoundary:a,padding:r})[getBasePlacement(A)],t}),{});return Object.keys(u).sort((function(e,t){return u[e]-u[t]}))}function getExpandedFallbackPlacements(e){if(getBasePlacement(e)===auto)return[];var t=getOppositePlacement(e);return[getOppositeVariationPlacement(e),t,getOppositeVariationPlacement(t)]}function flip(e){var t=e.state,A=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var n=A.mainAxis,a=void 0===n||n,r=A.altAxis,s=void 0===r||r,o=A.fallbackPlacements,l=A.padding,c=A.boundary,d=A.rootBoundary,h=A.altBoundary,u=A.flipVariations,g=void 0===u||u,p=A.allowedAutoPlacements,m=t.options.placement,w=getBasePlacement(m),f=o||(w!==m&&g?getExpandedFallbackPlacements(m):[getOppositePlacement(m)]),B=[m].concat(f).reduce((function(e,A){return e.concat(getBasePlacement(A)===auto?computeAutoPlacement(t,{placement:A,boundary:c,rootBoundary:d,padding:l,flipVariations:g,allowedAutoPlacements:p}):A)}),[]),E=t.rects.reference,b=t.rects.popper,v=new Map,C=!0,y=B[0],F=0;F=0,U=I?"width":"height",Q=detectOverflow(t,{placement:x,boundary:c,rootBoundary:d,altBoundary:h,padding:l}),k=I?T?right:left:T?bottom:top;E[U]>b[U]&&(k=getOppositePlacement(k));var O=getOppositePlacement(k),M=[];if(a&&M.push(Q[S]<=0),s&&M.push(Q[k]<=0,Q[O]<=0),M.every((function(e){return e}))){y=x,C=!1;break}v.set(x,M)}if(C)for(var L=function(e){var t=B.find((function(t){var A=v.get(t);if(A)return A.slice(0,e).every((function(e){return e}))}));if(t)return y=t,"break"},D=g?3:1;D>0&&"break"!==L(D);D--);t.placement!==y&&(t.modifiersData[i]._skip=!0,t.placement=y,t.reset=!0)}}var flip$1={name:"flip",enabled:!0,phase:"main",fn:flip,requiresIfExists:["offset"],data:{_skip:!1}};function getSideOffsets(e,t,A){return void 0===A&&(A={x:0,y:0}),{top:e.top-t.height-A.y,right:e.right-t.width+A.x,bottom:e.bottom-t.height+A.y,left:e.left-t.width-A.x}}function isAnySideFullyClipped(e){return[top,right,bottom,left].some((function(t){return e[t]>=0}))}function hide(e){var t=e.state,A=e.name,i=t.rects.reference,n=t.rects.popper,a=t.modifiersData.preventOverflow,r=detectOverflow(t,{elementContext:"reference"}),s=detectOverflow(t,{altBoundary:!0}),o=getSideOffsets(r,i),l=getSideOffsets(s,n,a),c=isAnySideFullyClipped(o),d=isAnySideFullyClipped(l);t.modifiersData[A]={referenceClippingOffsets:o,popperEscapeOffsets:l,isReferenceHidden:c,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":d})}var hide$1={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:hide};function distanceAndSkiddingToXY(e,t,A){var i=getBasePlacement(e),n=[left,top].indexOf(i)>=0?-1:1,a="function"==typeof A?A(Object.assign({},t,{placement:e})):A,r=a[0],s=a[1];return r=r||0,s=(s||0)*n,[left,right].indexOf(i)>=0?{x:s,y:r}:{x:r,y:s}}function offset(e){var t=e.state,A=e.options,i=e.name,n=A.offset,a=void 0===n?[0,0]:n,r=placements.reduce((function(e,A){return e[A]=distanceAndSkiddingToXY(A,t.rects,a),e}),{}),s=r[t.placement],o=s.x,l=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=o,t.modifiersData.popperOffsets.y+=l),t.modifiersData[i]=r}var offset$1={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:offset};function popperOffsets(e){var t=e.state,A=e.name;t.modifiersData[A]=computeOffsets({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var popperOffsets$1={name:"popperOffsets",enabled:!0,phase:"read",fn:popperOffsets,data:{}};function getAltAxis(e){return"x"===e?"y":"x"}function preventOverflow(e){var t=e.state,A=e.options,i=e.name,n=A.mainAxis,a=void 0===n||n,r=A.altAxis,s=void 0!==r&&r,o=A.boundary,l=A.rootBoundary,c=A.altBoundary,d=A.padding,h=A.tether,u=void 0===h||h,g=A.tetherOffset,p=void 0===g?0:g,m=detectOverflow(t,{boundary:o,rootBoundary:l,padding:d,altBoundary:c}),w=getBasePlacement(t.placement),f=getVariation(t.placement),B=!f,E=getMainAxisFromPlacement(w),b=getAltAxis(E),v=t.modifiersData.popperOffsets,C=t.rects.reference,y=t.rects.popper,F="function"==typeof p?p(Object.assign({},t.rects,{placement:t.placement})):p,x="number"==typeof F?{mainAxis:F,altAxis:F}:Object.assign({mainAxis:0,altAxis:0},F),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,T={x:0,y:0};if(v){if(a){var I,U="y"===E?top:left,Q="y"===E?bottom:right,k="y"===E?"height":"width",O=v[E],M=O+m[U],L=O-m[Q],D=u?-y[k]/2:0,N=f===start?C[k]:y[k],H=f===start?-y[k]:-C[k],R=t.elements.arrow,P=u&&R?getLayoutRect(R):{width:0,height:0},V=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:getFreshSideObject(),K=V[U],G=V[Q],W=within(0,C[k],P[k]),X=B?C[k]/2-D-W-K-x.mainAxis:N-W-K-x.mainAxis,z=B?-C[k]/2+D+W+G+x.mainAxis:H+W+G+x.mainAxis,Y=t.elements.arrow&&getOffsetParent(t.elements.arrow),j=Y?"y"===E?Y.clientTop||0:Y.clientLeft||0:0,J=null!=(I=null==S?void 0:S[E])?I:0,Z=O+z-J,q=within(u?min(M,O+X-J-j):M,O,u?max(L,Z):L);v[E]=q,T[E]=q-O}if(s){var _,$="x"===E?top:left,ee="x"===E?bottom:right,te=v[b],Ae="y"===b?"height":"width",ie=te+m[$],ne=te-m[ee],ae=-1!==[top,left].indexOf(w),re=null!=(_=null==S?void 0:S[b])?_:0,se=ae?ie:te-C[Ae]-y[Ae]-re+x.altAxis,oe=ae?te+C[Ae]+y[Ae]-re-x.altAxis:ne,le=u&&ae?withinMaxClamp(se,te,oe):within(u?se:ie,te,u?oe:ne);v[b]=le,T[b]=le-te}t.modifiersData[i]=T}}var preventOverflow$1={name:"preventOverflow",enabled:!0,phase:"main",fn:preventOverflow,requiresIfExists:["offset"]};function getHTMLElementScroll(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function getNodeScroll(e){return e!==getWindow(e)&&isHTMLElement(e)?getHTMLElementScroll(e):getWindowScroll(e)}function isElementScaled(e){var t=e.getBoundingClientRect(),A=round(t.width)/e.offsetWidth||1,i=round(t.height)/e.offsetHeight||1;return 1!==A||1!==i}function getCompositeRect(e,t,A){void 0===A&&(A=!1);var i=isHTMLElement(t),n=isHTMLElement(t)&&isElementScaled(t),a=getDocumentElement(t),r=getBoundingClientRect(e,n,A),s={scrollLeft:0,scrollTop:0},o={x:0,y:0};return(i||!i&&!A)&&(("body"!==getNodeName(t)||isScrollParent(a))&&(s=getNodeScroll(t)),isHTMLElement(t)?((o=getBoundingClientRect(t,!0)).x+=t.clientLeft,o.y+=t.clientTop):a&&(o.x=getWindowScrollBarX(a))),{x:r.left+s.scrollLeft-o.x,y:r.top+s.scrollTop-o.y,width:r.width,height:r.height}}function order(e){var t=new Map,A=new Set,i=[];function n(e){A.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!A.has(e)){var i=t.get(e);i&&n(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){A.has(e.name)||n(e)})),i}function orderModifiers(e){var t=order(e);return modifierPhases.reduce((function(e,A){return e.concat(t.filter((function(e){return e.phase===A})))}),[])}function debounce(e){var t;return function(){return t||(t=new Promise((function(A){Promise.resolve().then((function(){t=void 0,A(e())}))}))),t}}function mergeByName(e){var t=e.reduce((function(e,t){var A=e[t.name];return e[t.name]=A?Object.assign({},A,t,{options:Object.assign({},A.options,t.options),data:Object.assign({},A.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}var DEFAULT_OPTIONS={placement:"bottom",modifiers:[],strategy:"absolute"};function areValidElements(){for(var e=arguments.length,t=new Array(e),A=0;A(this.setSelectedItem(this.selectedItem-1,!0),!1))),A.register([],"ArrowDown",(()=>(this.setSelectedItem(this.selectedItem+1,!0),!1))),A.register([],"Enter",(e=>(this.useSelectedItem(e),!1))),A.register([],"Tab",(e=>(this.chooseSuggestion(e),!1)))}chooseSuggestion(e){if(!this.items||!this.items.length)return;const t=this.items[this.selectedItem];t&&this.owner.onChooseSuggestion(t,e)}onSuggestionClick(e,t){if(e.preventDefault(),!this.suggestions||!this.suggestions.length)return;const A=this.suggestions.indexOf(t);this.setSelectedItem(A,!1),this.useSelectedItem(e)}onSuggestionMouseover(e,t){if(!this.suggestions||!this.suggestions.length)return;const A=this.suggestions.indexOf(t);this.setSelectedItem(A,!1)}empty(){this.containerEl.empty()}setSuggestions(e){this.containerEl.empty();const t=[];e.forEach((e=>{const A=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(e,A),t.push(A)})),this.items=e,this.suggestions=t,this.setSelectedItem(0,!1)}useSelectedItem(e){if(!this.items||!this.items.length)return;const t=this.items[this.selectedItem];t&&this.owner.selectSuggestion(t,e)}wrap(e,t){return(e%t+t)%t}setSelectedItem(e,t){const A=this.wrap(e,this.suggestions.length),i=this.suggestions[this.selectedItem],n=this.suggestions[A];i&&i.removeClass("is-selected"),n&&n.addClass("is-selected"),this.selectedItem=A,t&&n.scrollIntoView(!1)}}class SuggestionModal extends obsidian_module.FuzzySuggestModal{constructor(e,t,A){super(e),this.items=[],this.scope=new obsidian_module.Scope(this.app.scope),this.emptyStateText="No match found",this.limit=100,this.inputEl=t,this.items=A,this.suggestEl=createDiv("suggestion-container"),this.contentEl=this.suggestEl.createDiv("suggestion"),this.suggester=new Suggester(this,this.contentEl,this.scope),this.scope.register([],"Escape",this.onEscape.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onFocus.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",(e=>{e.preventDefault()}))}empty(){this.suggester.empty()}onInputChanged(){if(this.shouldNotOpen)return;const e=this.modifyInput(this.inputEl.value),t=this.getSuggestions(e);t.length>0?this.suggester.setSuggestions(t.slice(0,this.limit)):this.onNoSuggestion(),this.open()}onFocus(){this.shouldNotOpen=!1,this.onInputChanged()}modifyInput(e){return e}onNoSuggestion(){this.empty(),this.renderSuggestion(null,this.contentEl.createDiv("suggestion-item"))}open(){this.app.keymap.pushScope(this.scope),document.body.appendChild(this.suggestEl),this.popper=createPopper(this.inputEl,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,10]}},{name:"flip",options:{fallbackPlacements:["top"]}}]})}onEscape(){this.close(),this.shouldNotOpen=!0}close(){this.app.keymap.popScope(this.scope),this.suggester.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}createPrompt(e){this.promptEl||(this.promptEl=this.suggestEl.createDiv("prompt-instructions"));const t=this.promptEl.createDiv("prompt-instruction");for(const A of e)t.appendChild(A)}}class FileSuggestionModal extends SuggestionModal{constructor(e,t,A){super(e,t.inputEl,A),this.limit=20,this.files=[...A],this.text=t,this.inputEl.addEventListener("input",(()=>this.getFile()))}getFile(){const e=this.inputEl.value,t=this.app.vault.getAbstractFileByPath(e);t!==this.file&&t instanceof obsidian_module.TFile&&(this.file=t,this.onInputChanged())}getSelectedItem(){return this.file}getItemText(e){return e.path}onChooseItem(e){this.file=e,this.text.setValue(e.path),this.text.onChanged()}selectSuggestion({item:e}){this.file=e,this.text.setValue(e.path),this.onClose(),this.text.onChanged(),this.close()}renderSuggestion(e,t){const{item:A,match:i}=e||{},n=t.createDiv({cls:"suggestion-content"});if(!A)return n.setText(this.emptyStateText),void n.parentElement.addClass("is-selected");const a=A.path.length-A.name.length,r=i.matches.map((e=>createSpan("suggestion-highlight")));for(let e=a;et[0]===e));if(t){const a=r[i.matches.indexOf(t)];n.appendChild(a),a.appendText(A.path.substring(t[0],t[1])),e+=t[1]-t[0]-1}else n.appendText(A.path[e])}t.createDiv({cls:"suggestion-note",text:A.path})}getItems(){return this.files}}const getEA=e=>{try{return window.ExcalidrawAutomate.getAPI(e)}catch(e){return console.log({message:"Excalidraw not available",fn:getEA}),null}};class InsertPDFModal extends obsidian_module.Modal{constructor(e,t){super(app),this.plugin=e,this.view=t,this.borderBox=!0,this.gapSize=20,this.numColumns=1,this.lockAfterImport=!0,this.pagesToImport=[],this.pageDimensions={width:0,height:0},this.importScale=.3,this.dirty=!1,this.setImageSizeMessage=()=>this.imageSizeMessage.innerText=`${Math.round(this.pageDimensions.width*this.importScale)} x ${Math.round(this.pageDimensions.height*this.importScale)}`}open(e){e&&"pdf"===e.extension.toLowerCase()&&(this.pdfFile=e),super.open()}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Import PDF"),this.createForm()}async onClose(){this.dirty&&(this.plugin.settings.pdfImportScale=this.importScale,this.plugin.settings.pdfBorderBox=this.borderBox,this.plugin.settings.pdfGapSize=this.gapSize,this.plugin.settings.pdfNumColumns=this.numColumns,this.plugin.settings.pdfLockAfterImport=this.lockAfterImport,this.plugin.saveSettings()),this.pdfDoc&&(this.pdfDoc.destroy(),this.pdfDoc=null)}async getPageDimensions(e){try{const t=this.plugin.settings.pdfScale,A=createEl("canvas"),i=(await e.getPage(1)).getViewport({scale:t});this.pageDimensions.height=i.height,this.pageDimensions.width=i.width,A.width=0,A.height=0,this.setImageSizeMessage()}catch(e){console.log(e)}}createPageListFromString(e){const t=e=>e.replace(/\D/g,"");return this.pagesToImport=[],e.split(",").forEach((e=>{const A=e.split("-");if(1===A.length){const e=parseInt(t(A[0]));!isNaN(e)&&this.pagesToImport.push(e)}else if(2===A.length){const e=parseInt(t(A[0])),i=parseInt(t(A[1]));if(isNaN(e)||isNaN(i))return;for(let t=e;t<=i;t++)this.pagesToImport.push(t)}})),this.pagesToImport}async createForm(){await this.plugin.loadSettings(),this.borderBox=this.plugin.settings.pdfBorderBox,this.gapSize=this.plugin.settings.pdfGapSize,this.numColumns=this.plugin.settings.pdfNumColumns,this.lockAfterImport=this.plugin.settings.pdfLockAfterImport,this.importScale=this.plugin.settings.pdfImportScale;const e=this.contentEl;let t,A,i,n;const a=()=>this.pdfDoc?0===this.pagesToImport.length?(i.buttonEl.style.display="none",void(n.innerText="Please select pages to import")):Math.max(...this.pagesToImport)<=this.pdfDoc.numPages?(i.buttonEl.style.display="block",void(n.innerText="")):(i.buttonEl.style.display="none",void(n.innerText=`The selected document has ${this.pdfDoc.numPages} pages. Please select pages between 1 and ${this.pdfDoc.numPages}`)):(n.innerText="Please select a PDF file",void(i.buttonEl.style.display="none")),r=()=>{0!==A?t.innerHTML=`There are ${A} pages in the selected document.`:t.innerText="Please select a PDF file"},s=async e=>{this.pdfDoc&&await this.pdfDoc.destroy(),this.pdfDoc=null,e&&(this.pdfDoc=await getPDFDoc(e),this.pdfFile=e,this.pdfDoc?(A=this.pdfDoc.numPages,a(),r(),this.getPageDimensions(this.pdfDoc)):i.setDisabled(!0))},o=new obsidian_module.TextComponent(e);o.inputEl.style.width="100%";const l=new FileSuggestionModal(this.app,o,app.vault.getFiles().filter((e=>"pdf"===e.extension.toLowerCase())));let c,d,h,u;o.onChange((async()=>{const e=l.getSelectedItem();await s(e)})),t=e.createEl("p",{text:""}),r(),new obsidian_module.Setting(e).setName("Pages to import").addText((e=>{d=e,e.setPlaceholder("e.g.: 1,3-5,7,9-10").onChange((e=>{const t=this.createPageListFromString(e);t.length>15?c.innerHTML=`You are importing ${t.length} pages. ⚠️ This may take a while. ⚠️`:c.innerHTML=`You are importing ${t.length} pages.`,a()})),e.inputEl.style.width="100%"})),c=e.createEl("p",{text:""}),new obsidian_module.Setting(e).setName("Add border box").addToggle((e=>e.setValue(this.borderBox).onChange((e=>{this.borderBox=e,this.dirty=!0})))),new obsidian_module.Setting(e).setName("Lock pages on canvas after import").addToggle((e=>e.setValue(this.lockAfterImport).onChange((e=>{this.lockAfterImport=e,this.dirty=!0})))),new obsidian_module.Setting(e).setName("Number of columns").addSlider((e=>e.setLimits(1,100,1).setValue(this.numColumns).onChange((e=>{this.numColumns=e,h.innerText=` ${e.toString()}`,this.dirty=!0})))).settingEl.createDiv("",(e=>{h=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.numColumns.toString()}`})),new obsidian_module.Setting(e).setName("Size of gap between pages").addSlider((e=>e.setLimits(10,200,10).setValue(this.gapSize).onChange((e=>{this.gapSize=e,u.innerText=` ${e.toString()}`,this.dirty=!0})))).settingEl.createDiv("",(e=>{u=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.gapSize.toString()}`}));const g=new obsidian_module.Setting(e).setName("Imported page size").setDesc(`${this.pageDimensions.width*this.importScale} x ${this.pageDimensions.height*this.importScale}`).addSlider((e=>e.setLimits(.1,1.5,.1).setValue(this.importScale).onChange((e=>{this.importScale=e,this.dirty=!0,this.setImageSizeMessage()}))));this.imageSizeMessage=g.descEl;const p=new obsidian_module.Setting(e).setDesc("Select a document first").addButton((e=>{e.setButtonText("Import PDF").setCta().onClick((async()=>{const e=getEA(this.view);let t=0,A=0;const i=Math.round(this.pageDimensions.width*this.importScale),a=Math.round(this.pageDimensions.height*this.importScale);for(let r=0;re.id)),o=e.getViewElements().filter((e=>s.includes(e.id)));r.selectElements(o),r.zoomToFit(o),this.close()})),i=e,i.buttonEl.style.display="none"}));n=p.descEl,n.addClass("mod-warning"),this.pdfFile?(o.setValue(this.pdfFile.path),await s(this.pdfFile),l.close(),d.inputEl.focus()):o.inputEl.focus(),a()}}class ExportDialog extends obsidian_module.Modal{constructor(e,t,A){super(app),this.plugin=e,this.view=t,this.file=A,this.dirty=!1,this.hasSelectedElements=!1,this.ea=getEA(this.view),this.api=this.ea.getExcalidrawAPI(),this.padding=getExportPadding(this.plugin,this.file),this.scale=getPNGScale(this.plugin,this.file),this.theme=getExportTheme(this.plugin,this.file,this.api.getAppState().theme),this.boundingBox=this.ea.getBoundingBox(this.ea.getViewElements()),this.embedScene=!1,this.exportSelectedOnly=!1,this.saveToVault=!0,this.transparent=!getWithBackground(this.plugin,this.file),this.saveSettings=!1}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Export Image"),this.hasSelectedElements=this.view.getViewSelectedElements().length>0,this.selectedOnlySetting.setVisibility(this.hasSelectedElements)}async onClose(){this.dirty=this.saveSettings}async createForm(){let e,t;this.contentEl.createEl("h1",{text:"Image settings"}),this.contentEl.createEl("p",{text:"Transparency only affects PNGs. Excalidraw files can only be exported outside the Vault. PNGs copied to clipboard may not include the scene."});const A=()=>{const e=Math.round(this.scale*this.boundingBox.width+2*this.padding),t=Math.round(this.scale*this.boundingBox.height+2*this.padding);return fragWithHTML(`The lager the scale, the larger the image.
Scale: ${this.scale}
Image size: ${e}x${t}`)},i=()=>fragWithHTML(`Current image padding is ${this.padding}`);t=new obsidian_module.Setting(this.contentEl).setName("Image padding").setDesc(i()).addSlider((n=>{n.setLimits(0,50,1).setValue(this.padding).onChange((n=>{this.padding=n,e.setDesc(A()),t.setDesc(i())}))})),e=new obsidian_module.Setting(this.contentEl).setName("PNG Scale").setDesc(A()).addSlider((t=>t.setLimits(.5,5,.5).setValue(this.scale).onChange((t=>{this.scale=t,e.setDesc(A())})))),new obsidian_module.Setting(this.contentEl).setName("Export theme").addDropdown((e=>e.addOption("light","Light").addOption("dark","Dark").setValue(this.theme).onChange((e=>{this.theme=e})))),new obsidian_module.Setting(this.contentEl).setName("Background color").addDropdown((e=>e.addOption("transparent","Transparent").addOption("with-color","Use scene background color").setValue(this.transparent?"transparent":"with-color").onChange((e=>{this.transparent="transparent"===e})))),new obsidian_module.Setting(this.contentEl).setName("Save or one-time settings?").addDropdown((e=>e.addOption("save","Save these settings as the preset for this image").addOption("one-time","These are one-time settings").setValue(this.saveSettings?"save":"one-time").onChange((e=>{this.saveSettings="save"===e})))),this.contentEl.createEl("h1",{text:"Export settings"}),new obsidian_module.Setting(this.contentEl).setName("Embed the Excalidraw scene in the exported file?").addDropdown((e=>e.addOption("embed","Embed scene").addOption("no-embed","Do not embed scene").setValue(this.embedScene?"embed":"no-embed").onChange((e=>{this.embedScene="embed"===e})))),DEVICE.isDesktop&&new obsidian_module.Setting(this.contentEl).setName("Where to save the image?").addDropdown((e=>e.addOption("vault","Save image to your Vault").addOption("outside","Export image outside your Vault").setValue(this.saveToVault?"vault":"outside").onChange((e=>{this.saveToVault="vault"===e})))),this.selectedOnlySetting=new obsidian_module.Setting(this.contentEl).setName("Export entire scene or just selected elements?").addDropdown((e=>e.addOption("all","Export entire scene").addOption("selected","Export selected elements").setValue(this.exportSelectedOnly?"selected":"all").onChange((e=>{this.exportSelectedOnly="selected"===e}))));const n=this.contentEl.createDiv({cls:"excalidraw-prompt-buttons-div"});n.createEl("button",{text:"PNG to File",cls:"excalidraw-prompt-button"}).onclick=()=>{this.saveToVault?this.view.savePNG(this.view.getScene(this.hasSelectedElements&&this.exportSelectedOnly)):this.view.exportPNG(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()},n.createEl("button",{text:"SVG to File",cls:"excalidraw-prompt-button"}).onclick=()=>{this.saveToVault?this.view.saveSVG(this.view.getScene(this.hasSelectedElements&&this.exportSelectedOnly)):this.view.exportSVG(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()},n.createEl("button",{text:"Excalidraw",cls:"excalidraw-prompt-button"}).onclick=()=>{this.view.exportExcalidraw(this.hasSelectedElements&&this.exportSelectedOnly),this.close()},DEVICE.isDesktop&&(n.createEl("button",{text:"PNG to Clipboard",cls:"excalidraw-prompt-button"}).onclick=()=>{this.view.exportPNGToClipboard(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()})}}const TOOLS_PANEL_WIDTH=228;class ToolsPanel extends React__namespace.Component{constructor(e){super(e),this.pos1=0,this.pos2=0,this.pos3=0,this.pos4=0,this.penDownX=0,this.penDownY=0,this.previousWidth=0,this.previousHeight=0,this.onRightEdge=!1,this.onBottomEdge=!1;const t=e.view.plugin.getPackage(e.view.ownerWindow).react;this.containerRef=t.createRef(),this.state={visible:e.visible,top:50,left:200,theme:"dark",excalidrawViewMode:!1,minimized:!1,isDirty:!1,isFullscreen:!1,isPreviewMode:!0,scriptIconMap:{}}}updateScriptIconMap(e){this.setState((()=>({scriptIconMap:e})))}setPreviewMode(e){this.setState((()=>({isPreviewMode:e})))}setFullscreen(e){this.setState((()=>({isFullscreen:e})))}setDirty(e){this.setState((()=>({isDirty:e})))}setExcalidrawViewMode(e){this.setState((()=>({excalidrawViewMode:e})))}toggleVisibility(e){this.setTopCenter(e),this.setState((e=>({visible:!e.visible})))}setTheme(e){this.setState((t=>({theme:e})))}setTopCenter(e){this.setState((()=>({left:(this.containerRef.current.clientWidth-228-(e?0:232))/2+this.containerRef.current.parentElement.offsetLeft+(e?0:232),top:64+this.containerRef.current.parentElement.offsetTop})))}updatePosition(e=0,t=0){this.setState((()=>{const{offsetTop:A,offsetLeft:i,clientWidth:n,clientHeight:a}=this.containerRef.current.firstElementChild,r=A-e,s=i-t,{clientWidth:o,clientHeight:l,offsetTop:c,offsetLeft:d}=this.containerRef.current.parentElement;return this.previousHeight=l,this.previousWidth=o,this.onBottomEdge=r>=l-a+c,this.onRightEdge=s>=o-n+d,{top:r{e.preventDefault(),Math.abs(this.penDownX-this.pos3)>5||Math.abs(this.penDownY-this.pos4)>5||this.setState((e=>({minimized:!e.minimized})))},onPointerDown:e=>{const t=e=>{e.preventDefault(),this.pos1=this.pos3-e.clientX,this.pos2=this.pos4-e.clientY,this.pos3=e.clientX,this.pos4=e.clientY,this.updatePosition(this.pos2,this.pos1)},A=()=>{var e,i;null===(e=this.props.view.ownerDocument)||void 0===e||e.removeEventListener("pointerup",A),null===(i=this.props.view.ownerDocument)||void 0===i||i.removeEventListener("pointermove",t)};e.preventDefault(),this.penDownX=this.pos3=e.clientX,this.penDownY=this.pos4=e.clientY,this.props.view.ownerDocument.addEventListener("pointerup",A),this.props.view.ownerDocument.addEventListener("pointermove",t)}},React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 228 26"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M40,7 h148 M40,13 h148 M40,19 h148"}))),React__namespace.createElement("div",{className:"Island App-menu__left scrollbar",style:{maxHeight:"350px",width:"initial","--padding":2,display:this.state.minimized?"none":"block"}},React__namespace.createElement("div",{className:"panelColumn"},React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Utility actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"scriptEngine",title:t$d("INSTALL_SCRIPT_BUTTON"),action:()=>{new ScriptInstallPrompt(this.props.view.plugin).open()},icon:ICONS.scriptEngine,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"release-notes",title:t$d("READ_RELEASE_NOTES"),action:()=>{new ReleaseNotes(this.props.view.app,this.props.view.plugin,PLUGIN_VERSION).open()},icon:ICONS.releaseNotes,view:this.props.view}),null===this.state.isPreviewMode?React__namespace.createElement(ActionButton,{key:"convert",title:t$d("CONVERT_FILE"),action:()=>{this.props.view.convertExcalidrawToMD()},icon:ICONS.convertFile,view:this.props.view}):React__namespace.createElement(ActionButton,{key:"viewmode",title:this.state.isPreviewMode?t$d("PARSED"):t$d("RAW"),action:()=>{this.state.isPreviewMode?this.props.view.changeTextMode(TextMode.raw):this.props.view.changeTextMode(TextMode.parsed)},icon:this.state.isPreviewMode?ICONS.rawMode:ICONS.parsedMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"tray-mode",title:t$d("TRAY_MODE"),action:()=>{this.props.view.toggleTrayMode()},icon:ICONS.trayMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"fullscreen",title:this.state.isFullscreen?t$d("EXIT_FULLSCREEN"):t$d("GOTO_FULLSCREEN"),action:()=>{this.state.isFullscreen?this.props.view.exitFullscreen():this.props.view.gotoFullscreen()},icon:this.state.isFullscreen?ICONS.exitFullScreen:ICONS.gotoFullScreen,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"search",title:t$d("SEARCH"),action:()=>{search(this.props.view)},icon:ICONS.search,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"ocr",title:t$d("RUN_OCR"),action:e=>{this.props.view.plugin.settings.taskboneEnabled?this.props.view.plugin.taskbone.getTextForView(this.props.view,isCTRL(e)):new obsidian_module.Notice("Taskbone OCR is not enabled. Please go to plugins settings to enable it.",4e3)},icon:ICONS.ocr,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"openLink",title:t$d("OPEN_LINK_CLICK"),action:e=>{const t=new MouseEvent("click",{ctrlKey:e.ctrlKey||!(DEVICE.isIOS||DEVICE.isMacOS),metaKey:e.metaKey||DEVICE.isIOS||DEVICE.isMacOS,shiftKey:e.shiftKey,altKey:e.altKey});this.props.view.handleLinkClick(t)},icon:ICONS.openLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"openLinkProperties",title:t$d("OPEN_LINK_PROPS"),action:()=>{const e=new MouseEvent("click",{ctrlKey:!0,metaKey:!0,shiftKey:!1,altKey:!1});this.props.view.handleLinkClick(e)},icon:ICONS.openLinkProperties,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"save",title:t$d("FORCE_SAVE"),action:()=>{this.props.view.forceSave()},icon:saveIcon(this.state.isDirty),view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Export actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"lib",title:t$d("DOWNLOAD_LIBRARY"),action:()=>{this.props.view.plugin.exportLibrary()},icon:ICONS.exportLibrary,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"exportIMG",title:t$d("EXPORT_IMAGE"),action:()=>{const e=this.props.view;e.exportDialog||(e.exportDialog=new ExportDialog(e.plugin,e,e.file),e.exportDialog.createForm()),e.exportDialog.open()},icon:ICONS.ExportImage,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"md",title:t$d("OPEN_AS_MD"),action:()=>{this.props.view.openAsMarkdown()},icon:ICONS.switchToMarkdown,view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Insert actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"image",title:t$d("INSERT_IMAGE"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertImageDialog.start(this.props.view)},icon:ICONS.insertImage,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"pdf",title:t$d("INSERT_PDF"),action:()=>{this.props.centerPointer(),new InsertPDFModal(this.props.view.plugin,this.props.view).open()},icon:ICONS.insertPDF,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"insertMD",title:t$d("INSERT_MD"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertMDDialog.start(this.props.view)},icon:ICONS.insertMD,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"latex",title:t$d("INSERT_LATEX"),action:e=>{isALT(e)?this.props.view.openExternalLink("https://youtu.be/r08wk-58DPk"):(this.props.centerPointer(),insertLaTeXToView(this.props.view))},icon:ICONS.insertLaTeX,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link",title:t$d("INSERT_LINK"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertLinkDialog.start(this.props.view.file.path,this.props.view.addText)},icon:ICONS.insertLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link-to-element",title:t$d("INSERT_LINK_TO_ELEMENT"),action:e=>{isALT(e)?this.props.view.openExternalLink("https://youtu.be/yZQoJg2RCKI"):this.props.view.copyLinkToSelectedElementToClipboard(isCTRL(e)?"group=":isSHIFT(e)?"area=":"")},icon:ICONS.copyElementLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"import-svg",title:t$d("IMPORT_SVG"),action:e=>{this.props.view.plugin.importSVGDialog.start(this.props.view)},icon:ICONS.importSVG,view:this.props.view}))),this.renderScriptButtons(!1),this.renderScriptButtons(!0)))))}renderScriptButtons(e){if(0===Object.keys(this.state.scriptIconMap).length)return"";const t=`${this.props.view.plugin.settings.scriptFolderPath}/Downloaded/`,A=A=>e?A.startsWith(t):!A.startsWith(t);if(0===Object.keys(this.state.scriptIconMap).filter((e=>A(e))).length)return"";const i=new Set;Object.keys(this.state.scriptIconMap).filter((e=>A(e))).forEach((e=>i.add(this.state.scriptIconMap[e].group)));const n=Array.from(i).sort(((e,t)=>e>t?1:-1));return n.push(n.shift()),React__namespace.createElement(React__namespace.Fragment,null,n.map((t=>React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,e?t:""===t?"User":"User/"+t),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},Object.entries(this.state.scriptIconMap).filter((([e,A])=>A.group===t)).sort().map((([e,t])=>React__namespace.createElement(ActionButton,{key:e,title:t.name,action:async()=>{const t=this.props.view,A=t.plugin,i=app.vault.getAbstractFileByPath(e);i&&i instanceof obsidian_module.TFile&&A.scriptEngine.executeScript(t,await app.vault.read(i),A.scriptEngine.getScriptName(i),i)},longpress:async()=>{const A=this.props.view,i=A.excalidrawAPI,n=A.plugin;await n.loadSettings();const a=n.settings.pinnedScripts.indexOf(e);a>-1?(n.settings.pinnedScripts.splice(a,1),null==i||i.setToast({message:`Pin removed: ${t.name}`,duration:3e3,closable:!0})):(n.settings.pinnedScripts.push(e),null==i||i.setToast({message:`Pinned: ${t.name}`,duration:3e3,closable:!0})),await n.saveSettings(),app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedScripts()}))},icon:t.svgString?stringToSVG(t.svgString):ICONS.cog,view:this.props.view}))))))))}}const getElementsAtPointer=(e,t,A)=>t.filter((t=>{if(A&&t.type!==A)return!1;if(t.locked)return!1;const[i,n,a,r]=rotatedDimensions(t);return i<=e.x&&i+a>=e.x&&n<=e.y&&n+r>=e.y})),getTextElementAtPointer=(e,t)=>{const A=t.excalidrawAPI;if(!A)return{id:null,text:null};const i=getElementsAtPointer(e,A.getSceneElements(),"text");if(0==i.length)return{id:null,text:null};if(1===i.length)return{id:i[0].id,text:i[0].text};const n=i.filter((e=>{const A=t.textMode===TextMode.parsed?t.excalidrawData.getRawText(e.id):e.text;return!!A&&(!!A.match(REG_LINKINDEX_HYPERLINK)||!!REGEX_LINK.getRes(A).next().value)}));return 0==n.length?{id:i[0].id,text:i[0].text}:{id:n[0].id,text:n[0].text}},getImageElementAtPointer=(e,t)=>{const A=t.excalidrawAPI;if(!A)return;const i=getElementsAtPointer(e,A.getSceneElements(),"image");return 0===i.length?{id:null,fileId:null}:i.length>=1?{id:i[0].id,fileId:i[0].fileId}:void 0},getElementWithLinkAtPointer=(e,t)=>{const A=t.excalidrawAPI;if(!A)return;const i=getElementsAtPointer(e,A.getSceneElements()).filter((e=>e.link));return 0===i.length?{id:null,text:null}:i.length>=1?{id:i[0].id,text:i[0].link}:void 0},setDynamicStyle=(e,t,A,i)=>{var n,a,r,s,o,l,c,d,h,u,g,p,m,w;if("none"===i){null===(n=t.excalidrawContainer)||void 0===n||n.removeAttribute("style"),setTimeout((()=>t.updateScene({appState:{dynamicStyle:""}})));const e=null===(s=null===(r=null===(a=t.toolsPanelRef)||void 0===a?void 0:a.current)||void 0===r?void 0:r.containerRef)||void 0===s?void 0:s.current;if(e){let t=e.getAttribute("style");t=t.replace(/\-\-color\-primary.*/,""),e.setAttribute("style",t)}return}t.ownerDocument;const f="light"===(null===(c=null===(l=null===(o=null==t?void 0:t.excalidrawAPI)||void 0===o?void 0:o.getAppState)||void 0===l?void 0:l.call(o))||void 0===c?void 0:c.theme)||"light"===(null===(u=null===(h=null===(d=null==t?void 0:t.excalidrawData)||void 0===d?void 0:d.scene)||void 0===h?void 0:h.appState)||void 0===u?void 0:u.theme),B=()=>f?e.getCM(A):(t=>{const A=e.getCM(t),i=A.lightness;return A.lightnessTo(Math.abs(i-100))})(A),E=B().lightness,b=B().isDark(),v=app.getAccentColor(),C=()=>e.getCM(v),y=()=>e.getCM("#000000").lightnessTo(E),F="gray"===i,x=F?b?y().lighterBy(15):y().darkerBy(15):b?B().lighterBy(15).mix({color:y(),ratio:.6}):B().darkerBy(15).mix({color:y(),ratio:.6}),S=F?b?y().lighterBy(5):y().darkerBy(5):b?B().lighterBy(5).mix({color:y(),ratio:.6}):B().darkerBy(5).mix({color:y(),ratio:.6}),T=B().mix({color:b?"#fbfbfb":"#202020",ratio:.8}),I=e=>e.stringHEX({alpha:!1}),U=`--color-primary: ${I(C())};--color-primary-darker: ${I(C().darkerBy(10))};--color-primary-darkest: ${I(C().darkerBy(10))};--button-gray-1: ${I(x)};--button-gray-2: ${I(S)};--input-border-color: ${I(x)};--input-bg-color: ${I(S)};--input-label-color: ${I(T)};--island-bg-color: ${S.alphaTo(.93).stringHEX()};--popup-secondary-bg-color: ${S.alphaTo(.93).stringHEX()};--icon-fill-color: ${I(T)};--text-primary-color: ${I(T)};--overlay-bg-color: ${S.alphaTo(.6).stringHEX()};--popup-bg-color: ${I(x)};--color-gray-100: ${I(T)};--color-gray-40: ${I(T)};--color-gray-30: ${I(x)};--color-gray-80: ${I(x)};--sidebar-border-color: ${I(x)};--color-primary-light: ${I(C().lighterBy(10))};--button-hover-bg: ${I(x)};--sidebar-bg-color: ${S.alphaTo(.93).stringHEX()};--sidebar-shadow: ${I(x)};--popup-text-color: ${I(T)};--code-normal: ${I(T)};--code-background: ${I(S)};--h1-color: ${I(T)};--h2-color: ${I(T)};--h3-color: ${I(T)};--h4-color: ${I(T)};color: ${I(T)};--select-highlight-color: ${I(x)};`;null===(g=t.excalidrawContainer)||void 0===g||g.setAttribute("style",U),setTimeout((()=>t.updateScene({appState:{dynamicStyle:U}})));const Q=null===(w=null===(m=null===(p=t.toolsPanelRef)||void 0===p?void 0:p.current)||void 0===m?void 0:m.containerRef)||void 0===w?void 0:w.current;if(Q){let e=Q.getAttribute("style");e=e.replace(/\-\-color\-primary.*/,""),Q.setAttribute("style",e+U)}};class MenuLinks{constructor(e,t){this.render=(e,t)=>React__namespace.createElement("div",null,"Hello"),this.plugin=e,this.ref=t}}var TextMode;!function(e){e.parsed="parsed",e.raw="raw"}(TextMode||(TextMode={}));const HIDE="excalidraw-hidden",SHOW="excalidraw-visible",addFiles=async(e,t,A)=>{if(!e||0===e.length||!t)return;const i=t.excalidrawAPI;if(!i)return;if(e=e.filter((e=>e&&e.size&&e.size.height>0&&e.size.width>0)),0===e.length)return;const n=scaleLoadedImage(t.getScene(),e);void 0===A&&(A=n.scene.appState.theme),n.dirty&&t.updateScene({elements:n.scene.elements,appState:n.scene.appState,commitToHistory:!1});for(const i of e)if(t.excalidrawData.hasFile(i.id)&&t.excalidrawData.getFile(i.id).setImage(i.dataURL,i.mimeType,i.size,A,i.hasSVGwithBitmap),t.excalidrawData.hasEquation(i.id)){const e=t.excalidrawData.getEquation(i.id).latex;t.excalidrawData.setEquation(i.id,{latex:e,isLoaded:!0})}i.addFiles(e)},warningUnknowSeriousError=()=>{new obsidian_module.Notice("WARNING: Excalidraw ran into an unknown problem!\n\nThere is a risk that your most recent changes cannot be saved.\n\nTo be on the safe side...\n1) Please select your drawing using CTRL/CMD+A and make a copy with CTRL/CMD+C.\n2) Then create an empty drawing in a new pane by CTRL/CMD+clicking the Excalidraw ribbon button,\n3) and paste your work to the new document with CTRL/CMD+V.",6e4)};class ExcalidrawView extends obsidian_module.TextFileView{constructor(e,t){super(e),this.getScene=null,this.addElements=null,this.getSelectedTextElement=null,this.getSelectedImageElement=null,this.getSelectedElementWithLink=null,this.addText=null,this.refresh=null,this.excalidrawRef=null,this.excalidrawAPI=null,this.excalidrawWrapperRef=null,this.toolsPanelRef=null,this.linksAlwaysOpenInANewPane=!1,this.lastSaveTimestamp=0,this.modifierKeyDown={shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this.currentPosition={x:0,y:0},this.semaphores={popoutUnload:!1,viewunload:!1,scriptsReady:!1,justLoaded:!1,preventAutozoom:!1,autosaving:!1,dirty:null,preventReload:!1,isEditingText:!1,saving:!1,forceSaving:!1,hoverSleep:!1,wheelTimeout:null},this.autosaveTimer=null,this.textMode=TextMode.raw,this.compatibilityMode=!1,this.isEditingTextResetTimer=null,this.id=this.leaf.id,this.getHookServer=()=>{var e;return null!==(e=this.hookServer)&&void 0!==e?e:this.plugin.ea},this.preventReloadResetTimer=null,this.hiddenMobileLeaves=[],this.offsetLeft=0,this.offsetTop=0,this.blockTextModeChange=!1,this.isLoaded=!1,this.activeLoader=null,this.nextLoader=null,this.initialContainerSizeUpdate=!1,this.previousSceneVersion=0,this.previousBackgroundColor="",this.previousTheme="",this.colorChangeTimer=null,this.plugin=t,this.excalidrawData=new ExcalidrawData(t),this.hookServer=t.ea}setHookServer(e){this.hookServer=e||this.plugin.ea}preventAutozoom(){this.semaphores.preventAutozoom=!0,setTimeout((()=>this.semaphores.preventAutozoom=!1),1500)}saveExcalidraw(e){if(!e){if(!this.getScene)return!1;e=this.getScene()}const t=`${this.file.path.substring(0,this.file.path.lastIndexOf(".md"))}.excalidraw`,A=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(t));A&&A instanceof obsidian_module.TFile?app.vault.modify(A,JSON.stringify(e,null,"\t")):app.vault.create(t,JSON.stringify(e,null,"\t"))}async exportExcalidraw(e){this.getScene&&this.file&&(app.isMobile?new Prompt(app,"Please provide filename",this.file.basename,"filename, leave blank to cancel action").openAndGetValue((async e=>{if(!e)return;e=`${e}.excalidraw`;const t=splitFolderAndFilename(this.file.path).folderpath;await checkAndCreateFolder(t);const A=getNewUniqueFilepath(app.vault,e,t);app.vault.create(A,JSON.stringify(this.getScene(),null,"\t")),new obsidian_module.Notice(`Exported to ${A}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.getScene(e),null,"\t")),`${this.file.basename}.excalidraw`))}async svg(e,t,A){const i=this.exportDialog,n={withBackground:i?!i.transparent:getWithBackground(this.plugin,this.file),withTheme:!0};return await getSVG(Object.assign(Object.assign({},e),{appState:Object.assign(Object.assign({},e.appState),{theme:null!=t?t:i?i.theme:getExportTheme(this.plugin,this.file,e.appState.theme),exportEmbedScene:void 0===A?!!i&&i.embedScene:A})}),n,i?i.padding:getExportPadding(this.plugin,this.file))}async saveSVG(e,t){if(!e){if(!this.getScene)return!1;e=this.getScene()}const A=async(A,i)=>{const n=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(A)),a=await this.svg(e,i,t);if(!a)return;const r=(new XMLSerializer).serializeToString(embedFontsInSVG(a,this.plugin));n&&n instanceof obsidian_module.TFile?await app.vault.modify(n,r):await app.vault.create(A,r)};this.plugin.settings.autoExportLightAndDark?(await A(getIMGFilename(this.file.path,"dark.svg"),"dark"),await A(getIMGFilename(this.file.path,"light.svg"),"light")):await A(getIMGFilename(this.file.path,"svg"))}async exportSVG(e,t){if(!this.getScene||!this.file)return;let A=await this.svg(this.getScene(t),void 0,e);A&&(A=embedFontsInSVG(A,this.plugin),download(null,svgToBase64(A.outerHTML),`${this.file.basename}.svg`))}async png(e,t,A){const i=this.exportDialog,n={withBackground:i?!i.transparent:getWithBackground(this.plugin,this.file),withTheme:!0};return await getPNG(Object.assign(Object.assign({},e),{appState:Object.assign(Object.assign({},e.appState),{theme:null!=t?t:i?i.theme:getExportTheme(this.plugin,this.file,e.appState.theme),exportEmbedScene:void 0===A?!!i&&i.embedScene:A})}),n,i?i.padding:getExportPadding(this.plugin,this.file),i?i.scale:getPNGScale(this.plugin,this.file))}async savePNG(e,t){if(!e){if(!this.getScene)return!1;e=this.getScene()}const A=async(A,i)=>{const n=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(A)),a=await this.png(e,i,t);a&&(n&&n instanceof obsidian_module.TFile?await app.vault.modifyBinary(n,await a.arrayBuffer()):await app.vault.createBinary(A,await a.arrayBuffer()))};this.plugin.settings.autoExportLightAndDark?(await A(getIMGFilename(this.file.path,"dark.png"),"dark"),await A(getIMGFilename(this.file.path,"light.png"),"light")):await A(getIMGFilename(this.file.path,"png"))}async exportPNGToClipboard(e,t){if(!this.getScene||!this.file)return;const A=await this.png(this.getScene(t),void 0,e);A&&await navigator.clipboard.write([new window.ClipboardItem({"image/png":A})])}async exportPNG(e,t){if(!this.getScene||!this.file)return;const A=await this.png(this.getScene(t),void 0,e);if(!A)return;const i=new FileReader;i.readAsDataURL(A);const n=this;i.onloadend=function(){const e=i.result;download(null,e,`${n.file.basename}.png`)}}async save(e=!0,t=!1){if(!this.isLoaded)return;if(this.semaphores.saving)return;this.semaphores.saving=!0;let A=!1;if(this.getScene&&this.excalidrawAPI&&this.isLoaded&&this.file&&app.vault.getAbstractFileByPath(this.file.path)){try{const i=Boolean(null!==this.semaphores.dirty&&this.semaphores.dirty||this.semaphores.autosaving||t),n=this.getScene();if(this.compatibilityMode?await this.excalidrawData.syncElements(n):await this.excalidrawData.syncElements(n,this.excalidrawAPI.getAppState().selectedElementIds)&&!this.semaphores.popoutUnload&&await this.loadDrawing(!1,this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((e=>e.isDeleted))),i&&(this.preventReloadResetTimer&&(clearTimeout(this.preventReloadResetTimer),this.preventReloadResetTimer=null),this.semaphores.preventReload=e,await super.save(),A=this.lastSaveTimestamp===this.file.stat.mtime&&!e&&t,this.lastSaveTimestamp=this.file.stat.mtime,this.clearDirty(),e)){const e=this;this.preventReloadResetTimer=setTimeout((()=>e.semaphores.preventReload=!1),2e3)}if(!A&&!this.semaphores.autosaving&&!this.semaphores.viewunload){const e=this.excalidrawData.autoexportPreference;(e===AutoexportPreference.inherit&&this.plugin.settings.autoexportSVG||e===AutoexportPreference.both||e===AutoexportPreference.svg)&&this.saveSVG(),(e===AutoexportPreference.inherit&&this.plugin.settings.autoexportPNG||e===AutoexportPreference.both||e===AutoexportPreference.png)&&this.savePNG(),!this.compatibilityMode&&this.plugin.settings.autoexportExcalidraw&&this.saveExcalidraw()}}catch(e){errorlog({where:"ExcalidrawView.save",fn:this.save,error:e}),warningUnknowSeriousError()}this.semaphores.saving=!1,A&&this.reload(!0,this.file)}else this.semaphores.saving=!1}getViewData(){var e,t,A;if(!this.getScene)return this.data;if(!this.excalidrawData.loaded)return this.data;const i=this.getScene();if(!this.compatibilityMode){let i=this.data.search(/(^%%\n)?# Text Elements\n/m);if(-1==i&&(i=this.data.search(/(%%\n)?# Drawing\n/)),-1==i)return this.data;const n=(null===(e=this.exportDialog)||void 0===e?void 0:e.dirty)&&(null===(t=this.exportDialog)||void 0===t?void 0:t.saveSettings)?[["excalidraw-export-padding",this.exportDialog.padding.toString()],["excalidraw-export-pngscale",this.exportDialog.scale.toString()],["excalidraw-export-dark","dark"===this.exportDialog.theme?"true":"false"],["excalidraw-export-transparent",this.exportDialog.transparent?"true":"false"],[FRONTMATTER_KEY,this.textMode===TextMode.raw?"raw":"parsed"]]:[[FRONTMATTER_KEY,this.textMode===TextMode.raw?"raw":"parsed"]];(null===(A=this.exportDialog)||void 0===A?void 0:A.dirty)&&(this.exportDialog.dirty=!1);let a=updateFrontmatterInString(this.data.substring(0,i),n);const r=/(^---[\w\W]*?---\n)(!\[\[.*?]]\n(%%\n)?)/m;a.match(r)&&(a=a.replace(r,"$1")),this.excalidrawData.disableCompression||(this.excalidrawData.disableCompression=this.isEditedAsMarkdownInOtherView());const s=a+this.excalidrawData.generateMD(this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((e=>e.isDeleted)));return this.excalidrawData.disableCompression=!1,s}return this.compatibilityMode?JSON.stringify(i,null,"\t"):this.data}restoreMobileLeaves(){this.hiddenMobileLeaves.length>0&&(this.hiddenMobileLeaves.forEach((e=>{e[0].containerEl.style.display=e[1]})),this.hiddenMobileLeaves=[])}toggleDisableBinding(){const e=!this.excalidrawAPI.getAppState().invertBindingBehaviour;this.updateScene({appState:{invertBindingBehaviour:e}}),new obsidian_module.Notice(e?"Inverted Mode: Default arrow binding is now disabled. Use CTRL/CMD to temporarily enable binding when needed.":"Normal Mode: Arrow binding is now enabled. Use CTRL/CMD to temporarily disable binding when needed.")}gotoFullscreen(){this.plugin.leafChangeTimeout&&(clearTimeout(this.plugin.leafChangeTimeout),this.plugin.leafChangeTimeout=null),this.excalidrawWrapperRef&&(this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!0),(e=>{for(;e&&!e.hasClass("workspace-split");)e.addClass(SHOW),e=e.parentElement;e&&e.addClass(SHOW);const t=this.ownerDocument;t.body.querySelectorAll(`div.workspace-split:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),t.body.querySelector(`div.workspace-leaf-content.${SHOW} > .view-header`).addClass(HIDE),t.body.querySelectorAll(`div.workspace-tab-container.${SHOW} > div.workspace-leaf:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),t.body.querySelectorAll(`div.workspace-tabs.${SHOW} > div.workspace-tab-header-container`).forEach((e=>e.addClass(HIDE))),t.body.querySelectorAll(`div.workspace-split.${SHOW} > div.workspace-tabs:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),t.body.querySelectorAll("div.workspace-ribbon").forEach((e=>e.addClass(HIDE))),t.body.querySelectorAll("div.mobile-navbar").forEach((e=>e.addClass(HIDE))),t.body.querySelectorAll("div.status-bar").forEach((e=>e.addClass(HIDE)))})(this.contentEl))}isFullscreen(){return Boolean(document.body.querySelector(".excalidraw-hidden"))}exitFullscreen(){this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!1);const e=this.ownerDocument;e.querySelectorAll(".excalidraw-hidden").forEach((e=>e.removeClass(HIDE))),e.querySelectorAll(".excalidraw-visible").forEach((e=>e.removeClass(SHOW)))}removeLinkTooltip(){const e=this.ownerDocument.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");e&&e.classList.remove("excalidraw-tooltip--visible")}handleLinkHookCall(e,t,A){if(this.getHookServer().onLinkClickHook)try{if(!this.getHookServer().onLinkClickHook(e,t,A,this,this.getHookServer()))return!0}catch(e){errorlog({where:"ExcalidrawView.onLinkOpen",fn:this.getHookServer().onLinkClickHook,error:e})}return!1}openExternalLink(e,t){return!!e.match(REG_LINKINDEX_HYPERLINK)&&(window.open(e,"_blank"),!0)}openTagSearch(e){const t=e.matchAll(/#([\p{Letter}\p{Emoji_Presentation}\p{Number}\/_-]+)/gu).next();if(!t.value||t.value.length<2)return;const A=app.workspace.getLeavesOfType("search");0!=A.length&&(A[0].view.setQuery(`tag:${t.value[1]}`),app.workspace.revealLeaf(A[0]),this.isFullscreen()&&this.exitFullscreen())}async linkClick(e,t,A,i,n){var a,r,s,o,l;t||(t={id:null,text:null}),A||(A={id:null,fileId:null}),i||(i={id:null,text:null}),n||(n={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,altKey:e.altKey});const c=linkClickModifierType(n);let d=null,h=null,u=null;if((null==t?void 0:t.id)||(null==i?void 0:i.id)){if(u=null!==(a=null==i?void 0:i.text)&&void 0!==a?a:this.textMode===TextMode.parsed?this.excalidrawData.getRawText(t.id):t.text,!u)return;u=u.replaceAll("\n","");const A=null!==(r=t.id)&&void 0!==r?r:i.id,n=this.excalidrawAPI.getSceneElements().filter((e=>e.id===A))[0];if(this.handleLinkHookCall(n,u,e))return;if(this.openExternalLink(u))return;const s=REGEX_LINK.getResList(u);let o=s[0];if(s.length>1&&(o=await ScriptEngine.suggester(app,s.filter((e=>Boolean(e.value))).map((e=>REGEX_LINK.getLink(e))),s.filter((e=>Boolean(e.value))),"Select link to open"),!o))return;if(!o.value)return void this.openTagSearch(u);if(u=REGEX_LINK.getLink(o),this.openExternalLink(u))return;if(u.search("#")>-1){const e=getLinkParts(u,this.file);h=`#${e.isBlockRef?"^":""}${e.ref}`,u=e.path}if(u.match(REG_LINKINDEX_INVALIDCHARS))return void new obsidian_module.Notice(t$d("FILENAME_INVALID_CHARS"),4e3);d=this.app.metadataCache.getFirstLinkpathDest(u,this.file.path)}if(null==A?void 0:A.id){if(this.excalidrawData.hasEquation(A.fileId)){const e=this.excalidrawData.getEquation(A.fileId).latex;return void new Prompt(app,t$d("ENTER_LATEX"),e,"").openAndGetValue((async t=>{t&&t!==e&&(this.excalidrawData.setEquation(A.fileId,{latex:t,isLoaded:!1}),await this.save(!1),await updateEquation(t,A.fileId,this,addFiles,this.plugin),this.setDirty(1))}))}if(await this.save(!1),this.excalidrawData.hasFile(A.fileId)){const e=this.excalidrawData.getFile(A.fileId);if(e.isHyperlink)return void window.open(e.hyperlink,"_blank");if("md-properties"===c&&"md"===e.file.extension&&!this.plugin.isExcalidrawFile(e.file))return void new Prompt(app,"Customize the link",e.linkParts.original,"","Do not add [[square brackets]] around the filename!
Follow this format when editing your link:
filename#^blockref|WIDTHxMAXHEIGHT").openAndGetValue((async t=>{t&&e.linkParts.original!==t&&(e.resetImage(this.file.path,t),await this.save(!1),await this.loadSceneFiles(),this.setDirty(2))}));u=e.file.path,d=e.file,"pdf"===d.extension.toLowerCase()&&(h=null===(s=e.linkParts.original.match(/(#.*)$/))||void 0===s?void 0:s[1])}}if(!u)return void new obsidian_module.Notice(t$d("LINK_BUTTON_CLICK_NO_TEXT"),2e4);const g=null!==(l=null!==(o=A.id)&&void 0!==o?o:t.id)&&void 0!==l?l:i.id,p=this.excalidrawAPI.getSceneElements().filter((e=>e.id===g))[0];if(!this.handleLinkHookCall(p,u,e))try{if("active-pane"!==c&&this.isFullscreen()&&this.exitFullscreen(),!d)return void new NewFileActions(this.plugin,u,n,this).open();this.linksAlwaysOpenInANewPane&&(n.ctrlKey=!0,n.altKey=!0);const e=getLeaf(this.plugin,this.leaf,n);await e.openFile(d,h?{active:!this.linksAlwaysOpenInANewPane,eState:{subpath:h}}:void 0)}catch(e){new obsidian_module.Notice(e,4e3)}}async handleLinkClick(e){this.removeLinkTooltip();const t=this.getSelectedTextElement(),A=(null==t?void 0:t.id)?null:this.getSelectedImageElement(),i=(null==A?void 0:A.id)||(null==t?void 0:t.id)?null:this.getSelectedElementWithLink();this.linkClick(e,t,A,i)}onResize(){var e,t;if(this.plugin.leafChangeTimeout)return;const A=this.excalidrawAPI;this.plugin.settings.zoomToFitOnResize&&this.excalidrawRef&&!this.semaphores.isEditingText&&A&&"text"!==(null===(t=null===(e=A.getAppState())||void 0===e?void 0:e.editingElement)||void 0===t?void 0:t.type)&&this.zoomToFit(!1)}getSceneVersion(e){return this.excalidrawGetSceneVersion||(this.excalidrawGetSceneVersion=this.plugin.getPackage(this.ownerWindow).excalidrawLib.getSceneVersion),this.excalidrawGetSceneVersion(e.filter((e=>!e.isDeleted)))}async forceSave(e=!1){this.semaphores.autosaving||this.semaphores.saving?e||new obsidian_module.Notice("Force Save aborted because saving is in progress)"):(this.preventReloadResetTimer&&(clearTimeout(this.preventReloadResetTimer),this.preventReloadResetTimer=null),this.semaphores.preventReload=!1,this.semaphores.forceSaving=!0,await this.save(!1,!0),this.plugin.triggerEmbedUpdates(),this.loadSceneFiles(),this.semaphores.forceSaving=!1,e||new obsidian_module.Notice("Save successful",1e3))}onload(){const e=Boolean(void 0===this.containerEl.onWindowMigrated);app.isMobile||e||this.containerEl.onWindowMigrated((()=>this.leaf.rebuildView()));const t=app.isMobile?document:this.containerEl.ownerDocument;this.ownerDocument=t,this.ownerWindow=this.ownerDocument.defaultView,this.plugin.getPackage(this.ownerWindow),this.semaphores.scriptsReady=!0,this.wheelEvent=e=>{this.semaphores.wheelTimeout&&clearTimeout(this.semaphores.wheelTimeout),this.semaphores.hoverSleep&&this.clearHoverPreview&&this.clearHoverPreview(),this.semaphores.wheelTimeout=setTimeout((()=>{clearTimeout(this.semaphores.wheelTimeout),this.semaphores.wheelTimeout=null}),1e3)},this.containerEl.addEventListener("wheel",this.wheelEvent,{passive:!1}),this.addAction("ScriptEngine",t$d("INSTALL_SCRIPT_BUTTON"),(()=>{new ScriptInstallPrompt(this.plugin).open()})),this.diskIcon=this.addAction("save",t$d("FORCE_SAVE"),(async()=>this.forceSave())),this.textIsRaw_Element=this.addAction("presentation",t$d("RAW"),(()=>this.changeTextMode(TextMode.parsed))),this.textIsParsed_Element=this.addAction("quote-glyph",t$d("PARSED"),(()=>this.changeTextMode(TextMode.raw))),this.linkAction_Element=this.addAction("link",t$d("OPEN_LINK"),(e=>this.handleLinkClick(e))),app.isMobile||this.addAction("fullscreen","Use the action on the Excalidraw Obsidian Panel or the Command Palette to exit fullscreen mode. You can set up a hotkey for toggling fullscreen mode in Obsidian settings under Hotkeys.",(()=>this.gotoFullscreen()));const A=this;app.workspace.onLayoutReady((async()=>{A.contentEl.addClass("excalidraw-view"),await A.addSlidingPanesListner(),A.addParentMoveObserver(),A.onKeyUp=e=>{A.modifierKeyDown={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}},A.onKeyDown=e=>{this.modifierKeyDown={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}},A.ownerWindow.addEventListener("keydown",A.onKeyDown,!1),A.ownerWindow.addEventListener("keyup",A.onKeyUp,!1)})),this.setupAutosaveTimer(),super.onload()}async addSlidingPanesListner(){const e=this;this.slidingPanesListner=()=>{e.refresh&&e.refresh()};let t=app.workspace.rootSplit;for(;!t;)await sleep(50),t=app.workspace.rootSplit;t.containerEl.addEventListener("scroll",this.slidingPanesListner)}removeSlidingPanesListner(){var e;this.slidingPanesListner&&(null===(e=app.workspace.rootSplit.containerEl)||void 0===e||e.removeEventListener("scroll",this.slidingPanesListner))}addParentMoveObserver(){var e;const t=null!==(e=getParentOfClass(this.containerEl,"popover"))&&void 0!==e?e:getParentOfClass(this.containerEl,"workspace-leaf");if(!t)return;const A=t.classList.contains("popover");this.offsetLeft=t.offsetLeft,this.offsetTop=t.offsetTop;const i=this;this.parentMoveObserver=new MutationObserver((async e=>{const t=e[0].target;if(!(t instanceof HTMLElement))return;const{offsetLeft:A,offsetTop:n}=t;A===i.offsetLeft&&n==i.offsetTop||(i.refresh&&i.refresh(),i.offsetLeft=A,i.offsetTop=n)})),this.parentMoveObserver.observe(t,{attributeOldValue:!0,attributeFilter:A?["data-x","data-y"]:["class","style"]})}removeParentMoveObserver(){this.parentMoveObserver&&this.parentMoveObserver.disconnect()}setTheme(e){const t=this.excalidrawAPI;if(!this.excalidrawRef||!t)return;if(this.file&&hasExportTheme(this.plugin,this.file))return;const A=t.getAppState();this.excalidrawData.scene.theme=e,this.updateScene({appState:Object.assign(Object.assign({},A),{theme:e}),commitToHistory:!1})}async changeTextMode(e,t=!0){if(this.compatibilityMode)return;if(this.blockTextModeChange)return;this.blockTextModeChange=!0,this.textMode=e,e===TextMode.parsed?(this.textIsRaw_Element.hide(),this.textIsParsed_Element.show()):(this.textIsRaw_Element.show(),this.textIsParsed_Element.hide()),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setPreviewMode(e===TextMode.parsed);const A=this.excalidrawAPI;A&&t&&(await this.save(),this.preventAutozoom(),await this.excalidrawData.loadData(this.data,this.file,this.textMode),this.excalidrawData.scene.appState.theme=A.getAppState().theme,await this.loadDrawing(!1),A.history.clear()),this.prevTextMode=this.textMode,this.blockTextModeChange=!1}setupAutosaveTimer(){const e=async()=>{var t;if(!this.isLoaded)return void(this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval));const A=this.excalidrawAPI;if(!A)return void warningUnknowSeriousError();const i=A.getAppState(),n=null!==i.editingElement;if(this.refresh(),!this.semaphores.dirty||this.semaphores.dirty!=(null===(t=this.file)||void 0===t?void 0:t.path)||!this.plugin.settings.autosave||this.semaphores.forceSaving||this.semaphores.autosaving||n||null!==i.draggingElement)this.autosaveTimer=setTimeout(e,this.plugin.activeExcalidrawView===this&&this.semaphores.dirty&&this.plugin.settings.autosave?1e3:this.plugin.settings.autosaveInterval);else{if(this.autosaveTimer=null,this.excalidrawRef){this.semaphores.autosaving=!0;const e=this;this.save().then((()=>e.semaphores.autosaving=!1))}this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval)}};this.autosaveTimer&&(clearTimeout(this.autosaveTimer),this.autosaveTimer=null),this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval)}onunload(){var e,t,A,i,n,a;if(this.restoreMobileLeaves(),this.semaphores.viewunload=!0,this.semaphores.popoutUnload=this.ownerDocument!==document&&0===this.ownerDocument.body.querySelectorAll(".workspace-tab-header").length,null===(e=this.ownerWindow)||void 0===e||e.removeEventListener("keydown",this.onKeyDown,!1),null===(t=this.ownerWindow)||void 0===t||t.removeEventListener("keyup",this.onKeyUp,!1),this.containerEl.removeEventListener("wheel",this.wheelEvent,!1),this.getHookServer().onViewUnloadHook)try{this.getHookServer().onViewUnloadHook(this)}catch(e){errorlog({where:"ExcalidrawView.onunload",fn:this.getHookServer().onViewUnloadHook,error:e})}const r=null===(i=null===(A=this.containerEl)||void 0===A?void 0:A.ownerDocument)||void 0===i?void 0:i.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");r&&(null===(a=null===(n=this.containerEl)||void 0===n?void 0:n.ownerDocument)||void 0===a||a.body.removeChild(r)),this.removeParentMoveObserver(),this.removeSlidingPanesListner(),this.autosaveTimer&&(clearInterval(this.autosaveTimer),this.autosaveTimer=null)}async reload(e=!1,t){if(this.semaphores.preventReload)return void(this.semaphores.preventReload=!1);if(this.semaphores.saving)return;if(this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),this.compatibilityMode)return void this.clearDirty();const A=this.excalidrawAPI;if(!this.excalidrawRef||!this.file||!A)return;const i=t&&t===this.file;i&&(this.data=await app.vault.read(t),this.preventAutozoom()),e?await this.excalidrawData.loadData(this.data,this.file,this.textMode):await this.excalidrawData.setTextMode(this.textMode),this.excalidrawData.scene.appState.theme=A.getAppState().theme,await this.loadDrawing(i),this.clearDirty()}async zoomToElementId(e,t){let A=0;for(;!this.excalidrawAPI&&A++<100;)await sleep(50);const i=this.excalidrawAPI;if(!i)return;const n=i.getSceneElements();let a=n.filter((t=>t.id===e));if(0!==a.length){if(t){const e=this.plugin.ea.getElementsInTheSameGroupWithElement(a[0],n);e.length>0&&(a=e)}this.preventAutozoom(),this.zoomToElements(!i.getAppState().viewModeEnabled,a)}}setEphemeralState(e){if(!e)return;const t=this;let A=null;e.match&&e.match.content&&e.match.matches&&1===e.match.matches.length&&2===e.match.matches[0].length&&(A=[e.match.content.substring(e.match.matches[0][0],e.match.matches[0][1])]);const i=async()=>{var e,A;let i=0;for(;(t.semaphores.justLoaded||!t.isLoaded||!t.excalidrawAPI||(null===(A=null===(e=t.excalidrawAPI)||void 0===e?void 0:e.getAppState())||void 0===A?void 0:A.isLoading))&&i++<100;)await sleep(50)},n=getEmbeddedFilenameParts(e.subpath);n.hasBlockref&&setTimeout((async()=>{await i(),setTimeout((()=>t.zoomToElementId(n.blockref,n.hasGroupref)))})),n.hasSectionref?A=[`# ${n.sectionref}`]:e.line&&e.line>0&&(A=[this.data.split("\n")[e.line-1]]),A&&setTimeout((async()=>{await i();const e=t.excalidrawAPI;if(!e)return;if(e.getAppState().isLoading)return;const a=e.getSceneElements();if(1===A.length&&A[0].startsWith("[")){let i=REGEX_LINK.getResList(A[0])[0];if(i){const A=REGEX_LINK.getLink(i);if(A){const i=t.plugin.app.metadataCache.getFirstLinkpathDest(A,t.file.path);if(i){let A=[];if(t.excalidrawData.files.forEach(((e,t)=>{var n;(null===(n=e.file)||void 0===n?void 0:n.path)===i.path&&A.push(t)})),A.length>0){const i=a.filter((e=>"image"===e.type&&A.includes(e.fileId)));i.length>0&&(this.preventAutozoom(),setTimeout((()=>t.zoomToElements(!e.getAppState().viewModeEnabled,i))))}}}}}t.selectElementsMatchingQuery(a,A,!e.getAppState().viewModeEnabled,n.hasSectionref,n.hasGroupref)})),super.setEphemeralState(e)}clear(){delete this.exportDialog;const e=this.excalidrawAPI;this.excalidrawRef&&e&&(this.activeLoader&&(this.activeLoader.terminate=!0,this.activeLoader=null),this.nextLoader=null,e.resetScene(),this.previousSceneVersion=0)}async setViewData(e,t=!1){this.isLoaded=!1,this.file&&(this.plugin.settings.showNewVersionNotification&&checkExcalidrawVersion(app),t&&this.clear(),this.lastSaveTimestamp=this.file.stat.mtime,e=this.data=e.replaceAll("\r\n","\n").replaceAll("\r","\n"),app.workspace.onLayoutReady((async()=>{if(this.compatibilityMode="excalidraw"===this.file.extension,await this.plugin.loadSettings(),this.compatibilityMode)this.textIsRaw_Element.hide(),this.textIsParsed_Element.hide(),this.linkAction_Element.hide(),this.textMode=TextMode.raw,await this.excalidrawData.loadLegacyData(e,this.file),this.plugin.settings.compatibilityMode||new obsidian_module.Notice(t$d("COMPATIBILITY_MODE"),4e3),this.excalidrawData.disableCompression=!0;else{this.linkAction_Element.show(),this.excalidrawData.disableCompression=!1;const t=getTextMode(e);this.changeTextMode(t,!1);try{if(!await this.excalidrawData.loadData(e,this.file,this.textMode))return}catch(e){return errorlog({where:"ExcalidrawView.setViewData",error:e}),new obsidian_module.Notice(`Error loading drawing:\n${e.message}${"Cannot read property 'index' of undefined"===e.message?"\n'# Drawing' section is likely missing":""}\n\nTry manually fixing the file or restoring an earlier version from sync history.`,1e4),void this.setMarkdownView()}}if(await this.loadDrawing(!0),this.plugin.ea.onFileOpenHook)try{await this.plugin.ea.onFileOpenHook({ea:getEA(this),excalidrawFile:this.file,view:this})}catch(e){errorlog({where:"ExcalidrawView.setViewData.onFileOpenHook",error:e})}const t=this.excalidrawData.getOnLoadScript();if(t){const e=this,A=this.file.basename+"-onlaod-script",i=()=>{e.excalidrawAPI?e.plugin.scriptEngine.executeScript(e,t,A,this.file):setTimeout(i,200)};i()}this.isLoaded=!0})))}getGridColor(e){const t=this.plugin.ea.getCM(e);return t.isDark()?t.lighterBy(5):t.darkerBy(5),t.stringHEX()}async loadSceneFiles(){if(!this.excalidrawAPI)return;const e=new EmbeddedFilesLoader(this.plugin),t=e=>{this.nextLoader=null,this.activeLoader=e,e.loadSceneFiles(this.excalidrawData,((e,A,i=!0)=>{e&&(addFiles(e,this,A),i&&(this.activeLoader=null,this.nextLoader?t(this.nextLoader):this.excalidrawData.getFiles().some((e=>{if(e&&!e.file&&e.attemptCounter<30){const e=this,t=this.file.path;return setTimeout((async()=>{e&&e.excalidrawAPI&&t===e.file.path&&e.loadSceneFiles()}),2e3),!0}return!1}))))}),0)};this.activeLoader?this.nextLoader=e:t(e)}async synchronizeWithData(e){let t=0;for(;this.semaphores.saving&&t++<30;)await sleep(100);if(t>=30)return void errorlog({where:"ExcalidrawView.synchronizeWithData",message:`Aborting sync with received file (${this.file.path}) because semaphores.saving remained true for ower 3 seconds`,fn:this.synchronizeWithData});this.semaphores.saving=!0;let A=!1;try{const t=e.deletedElements.map((e=>e.id)),i=this.excalidrawAPI.getSceneElements().filter((e=>!t.contains(e.id))),n=i.map((e=>e.id)),a=t=>{switch(t.type){case"text":this.excalidrawData.textElements.set(t.id,e.textElements.get(t.id));break;case"image":e.getFile(t.fileId)?(this.excalidrawData.setFile(t.fileId,e.getFile(t.fileId)),A=!0):e.getEquation(t.fileId)&&(this.excalidrawData.setEquation(t.fileId,e.getEquation(t.fileId)),A=!0)}e.elementLinks.has(t.id)&&this.excalidrawData.elementLinks.set(t.id,e.elementLinks.get(t.id))};e.scene.elements.forEach(((t,r,s)=>{const o=i.filter((e=>e.id===t.id))[0];if(o&&(o.version0&&a.viewModeEnabled,l=this.isLoaded?s.getAppState().zenModeEnabled:a.zenModeEnabled;s.setLocalFont(this.plugin.settings.experimentalEnableFourthFont),this.updateScene({elements:n.elements.concat(null!=t?t:[]),files:n.files,commitToHistory:!0},e),this.updateScene({appState:Object.assign(Object.assign(Object.assign({},n.appState),this.excalidrawData.selectedElementIds?this.excalidrawData.selectedElementIds:{}),{zenModeEnabled:l,viewModeEnabled:o,linkOpacity:this.excalidrawData.getLinkOpacity(),trayModeEnabled:this.plugin.settings.defaultTrayMode,penMode:r,penDetected:r,allowPinchZoom:this.plugin.settings.allowPinchZoom,allowWheelZoom:this.plugin.settings.allowWheelZoom,pinnedScripts:this.plugin.settings.pinnedScripts,customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)})}),app.workspace.getActiveViewOfType(ExcalidrawView)===this.leaf.view&&this.excalidrawWrapperRef&&(null===(i=null===(A=this.excalidrawWrapperRef.current)||void 0===A?void 0:A.firstElementChild)||void 0===i||i.focus()),this.onAfterLoadScene()}else this.instantiateExcalidraw({elements:n.elements,appState:Object.assign(Object.assign({},n.appState),{zenModeEnabled:a.zenModeEnabled,viewModeEnabled:n.elements.length>0&&a.viewModeEnabled,linkOpacity:this.excalidrawData.getLinkOpacity(),trayModeEnabled:this.plugin.settings.defaultTrayMode,penMode:r,penDetected:r,allowPinchZoom:this.plugin.settings.allowPinchZoom,allowWheelZoom:this.plugin.settings.allowWheelZoom,pinnedScripts:this.plugin.settings.pinnedScripts,customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)}),files:n.files,libraryItems:await this.getLibrary()});const o=null!==this.data.match(/```compressed\-json\n/gm);this.compatibilityMode||this.plugin.settings.compress===o||this.isEditedAsMarkdownInOtherView()||this.setDirty(4)}isEditedAsMarkdownInOtherView(){return app.workspace.getLeavesOfType("markdown").filter((e=>e.view.file===this.file)).length>0}onAfterLoadScene(){this.loadSceneFiles(),this.updateContainerSize(null,!0),this.initializeToolsIconPanelAfterLoading()}setDirty(e){var t,A;this.semaphores.dirty=null===(t=this.file)||void 0===t?void 0:t.path,this.diskIcon.querySelector("svg").addClass("excalidraw-dirty"),!this.semaphores.viewunload&&(null===(A=this.toolsPanelRef)||void 0===A?void 0:A.current)&&this.toolsPanelRef.current.setDirty(!0),app.isMobile||obsidian_module.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="var(--color-accent)")}clearDirty(){var e;if(this.semaphores.viewunload)return;const t=this.excalidrawAPI;if(!t)return;this.semaphores.dirty=null,(null===(e=this.toolsPanelRef)||void 0===e?void 0:e.current)&&this.toolsPanelRef.current.setDirty(!1);const A=t.getSceneElements();A&&(this.previousSceneVersion=this.getSceneVersion(A)),this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),app.isMobile||obsidian_module.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="")}initializeToolsIconPanelAfterLoading(){var e;if(this.semaphores.viewunload)return;const t=this.excalidrawAPI;if(!t)return;const A=t.getAppState(),i=null===(e=this.toolsPanelRef)||void 0===e?void 0:e.current;i&&(i.setTheme(A.theme),i.setExcalidrawViewMode(A.viewModeEnabled),i.setPreviewMode(this.compatibilityMode?null:this.textMode===TextMode.parsed),i.updateScriptIconMap(this.plugin.scriptEngine.scriptIconMap))}canAcceptExtension(e){return"excalidraw"===e}getDisplayText(){return this.file?this.file.basename:t$d("NOFILE")}getViewType(){return"excalidraw"}getIcon(){return ICON_NAME}setMarkdownView(){this.plugin.excalidrawFileModes[this.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)}async openAsMarkdown(){!0===this.plugin.settings.compress&&(this.excalidrawData.disableCompression=!0,await this.save(!0,!0)),this.setMarkdownView()}async convertExcalidrawToMD(){await this.save(),this.plugin.openDrawing(await this.plugin.convertSingleExcalidrawToMD(this.file),"active-pane",!0)}async addYouTubeThumbnail(e){const t=await getYouTubeThumbnailLink(e),A=getEA(this),i=await A.addImage(0,0,t);A.getElement(i).link=e,A.addElementsToView(!0,!0,!0)}async addImageWithURL(e){const t=getEA(this);await t.addImage(0,0,e),t.addElementsToView(!0,!0,!0)}async addImageSaveToVault(e){const t=getEA(this),A=getMimeType(getURLImageExtension(e)),i=await getDataURLFromURL(e,A,3e3),n=await generateIdFromFile((new TextEncoder).encode(i)),a=await this.excalidrawData.saveDataURLtoVault(i,A,n);await t.addImage(0,0,a),t.addElementsToView(!0,!0,!0)}async addTextWithIframely(e){var t;const A=await this.addText(e),i=`http://iframely.server.crestify.com/iframely?url=${e}`;try{const n=JSON.parse(await obsidian_module.request({url:i}));if(!n||n.error||!(null===(t=n.meta)||void 0===t?void 0:t.title))return;const a=getEA(this),r=a.getViewElements().filter((e=>e.id===A));1===r.length&&(r[0].text=r[0].originalText=r[0].rawText=`[${n.meta.title}](${e})`,a.copyViewElementsToEAforEditing(r),a.addElementsToView(!1,!1,!1))}catch(e){}}onPaneMenu(e,t){this.excalidrawAPI&&this.getViewSelectedElements().some((e=>"text"===e.type))&&e.addItem((e=>{e.setTitle(t$d("OPEN_LINK")).setIcon("external-link").setSection("pane").onClick((e=>{this.handleLinkClick(e)}))})),this.compatibilityMode?e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE")).onClick((()=>this.convertExcalidrawToMD())).setSection("pane")})):e.addItem((e=>{e.setTitle(t$d("OPEN_AS_MD")).setIcon("document").onClick((()=>{this.openAsMarkdown()})).setSection("pane")})),e.addItem((e=>{e.setTitle(t$d("EXPORT_IMAGE")).setIcon("export-img").setSection("pane").onClick((async e=>{this.getScene&&this.file&&(this.exportDialog||(this.exportDialog=new ExportDialog(this.plugin,this,this.file),this.exportDialog.createForm()),this.exportDialog.open())})).setSection("pane")})).addItem((e=>{e.setTitle(t$d("INSTALL_SCRIPT_BUTTON")).setIcon("ScriptEngine").setSection("pane").onClick((()=>{new ScriptInstallPrompt(this.plugin).open()}))})),super.onPaneMenu(e,t)}async getLibrary(){var e;const t=this.plugin.getStencilLibrary();return(null==t?void 0:t.library)?t.library:null!==(e=null==t?void 0:t.libraryItems)&&void 0!==e?e:[]}async instantiateExcalidraw(e){for(;!this.semaphores.scriptsReady;)await sleep(50);const t=this.plugin.getPackage(this.ownerWindow).react,A=this.plugin.getPackage(this.ownerWindow).reactDOM;this.clearDirty();const i=t.createElement((()=>{const A=t.useRef(null),i=t.useRef(null),n=t.useRef(null),[a,r]=t.useState({width:void 0,height:void 0});let s=null,o=null,l=null,c=Date.now(),d=!1;this.toolsPanelRef=i,this.obsidianMenu=new ObsidianMenu(this.plugin,i,this),this.menuLinks=new MenuLinks(this.plugin,n);const h=()=>{let e,t;const A=new Promise(((A,i)=>{e=A,t=i}));return A.resolve=e,A.reject=t,A},u=t.useMemo((()=>({current:{readyPromise:h()}})),[]);t.useEffect((()=>{u.current.readyPromise.then((e=>{this.excalidrawAPI=e,e.setLocalFont(this.plugin.settings.experimentalEnableFourthFont),setTimeout((()=>{var e,t,A;this.onAfterLoadScene(),this.excalidrawContainer=null===(t=null===(e=this.excalidrawWrapperRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.firstElementChild,null===(A=this.excalidrawContainer)||void 0===A||A.focus()}))}))}),[u]),this.excalidrawRef=u,this.excalidrawWrapperRef=A,t.useEffect((()=>{r({width:this.contentEl.clientWidth,height:this.contentEl.clientHeight});const e=()=>{try{const e=this.contentEl.clientWidth,t=this.contentEl.clientHeight;if(0===e||0===t)return;r({width:e,height:t}),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.updatePosition(),this.ownerDocument!==document&&this.refresh()}catch(e){errorlog({where:"Excalidraw React-Wrapper, onResize",error:e})}};return this.ownerWindow.addEventListener("resize",e),()=>{var t;return null===(t=this.ownerWindow)||void 0===t?void 0:t.removeEventListener("resize",e)}}),[A]),this.getSelectedTextElement=()=>{var e;const t=this.excalidrawAPI;if(!(null==u?void 0:u.current)||!t)return{id:null,text:null};if(t.getAppState().viewModeEnabled){if(s){const e=s;return s=null,e}return{id:null,text:null}}const A=t.getSceneElements().filter((e=>e.id===Object.keys(t.getAppState().selectedElementIds)[0]));if(0===A.length)return{id:null,text:null};if("text"===A[0].type)return{id:A[0].id,text:A[0].text};if(["image","arrow"].contains(A[0].type))return{id:null,text:null};const i=null===(e=A[0].boundElements)||void 0===e?void 0:e.filter((e=>"text"===e.type));if((null==i?void 0:i.length)>0){const e=t.getSceneElements().filter((e=>e.id===i[0].id));if(e.length>0)return{id:e[0].id,text:e[0].text}}if(0===A[0].groupIds.length)return{id:null,text:null};const n=A[0].groupIds[0],a=t.getSceneElements().filter((e=>{var t;return null===(t=e.groupIds)||void 0===t?void 0:t.includes(n)})).filter((e=>"text"===e.type));return 0===a.length?{id:null,text:null}:{id:A[0].id,text:A[0].text}},this.getSelectedImageElement=()=>{const e=this.excalidrawAPI;if(!e)return{id:null,fileId:null};if(e.getAppState().viewModeEnabled){if(o){const e=o;return o=null,e}return{id:null,fileId:null}}const t=e.getSceneElements().filter((t=>t.id==Object.keys(e.getAppState().selectedElementIds)[0]));if(0===t.length)return{id:null,fileId:null};if("image"==t[0].type)return{id:t[0].id,fileId:t[0].fileId};if("text"===t[0].type)return{id:null,fileId:null};if(0===t[0].groupIds.length)return{id:null,fileId:null};const A=t[0].groupIds[0],i=e.getSceneElements().filter((e=>{var t;return null===(t=e.groupIds)||void 0===t?void 0:t.includes(A)})).filter((e=>"image"==e.type));return 0===i.length?{id:null,fileId:null}:{id:i[0].id,fileId:i[0].fileId}},this.getSelectedElementWithLink=()=>{const e=this.excalidrawAPI;if(!e)return{id:null,text:null};if(e.getAppState().viewModeEnabled){if(l){const e=l;return l=null,e}return{id:null,text:null}}const t=e.getSceneElements().filter((t=>t.id==Object.keys(e.getAppState().selectedElementIds)[0]));if(0===t.length)return{id:null,text:null};if(t[0].link)return{id:t[0].id,text:t[0].link};if(0===t[0].groupIds.length)return{id:null,text:null};const A=t[0].groupIds[0],i=e.getSceneElements().filter((e=>{var t;return null===(t=e.groupIds)||void 0===t?void 0:t.includes(A)})).filter((e=>e.link));return 0===i.length?{id:null,text:null}:{id:i[0].id,text:i[0].link}},this.addText=async(e,t,A=!0)=>{var i,n,a,r,s;const o=this.excalidrawAPI;if(!(null==u?void 0:u.current)||!o)return;const l=o.getAppState(),c=this.plugin.ea.getAPI(this);c.style.strokeColor=null!==(i=l.currentItemStrokeColor)&&void 0!==i?i:"black",c.style.opacity=null!==(n=l.currentItemOpacity)&&void 0!==n?n:1,c.style.fontFamily=null!==(a=null!=t?t:l.currentItemFontFamily)&&void 0!==a?a:1,c.style.fontSize=null!==(r=l.currentItemFontSize)&&void 0!==r?r:20,c.style.textAlign=null!==(s=l.currentItemTextAlign)&&void 0!==s?s:"left";const{width:d,height:h}=l,g=viewportCoordsToSceneCoords({clientX:0,clientY:0},l),p=viewportCoordsToSceneCoords({clientX:d,clientY:h},l),m=g.x>this.currentPosition.x||p.xthis.currentPosition.y||p.y{const a=this.excalidrawAPI;if(!(null==u?void 0:u.current)||!a)return!1;const r=e.filter((e=>"text"==e.type));for(let e=0;ee.id)),o=a.getSceneElements(),l=[];for(let t=0;te.id===A))[0],l.push(A))}const c=n?o.concat(e.filter((e=>!l.includes(e.id)))):e.filter((e=>!l.includes(e.id))).concat(o);if(this.updateScene({elements:c,commitToHistory:!0},!0),i&&Object.keys(i).length>0){const e=[];Object.keys(i).forEach((t=>{if(e.push({mimeType:i[t].mimeType,id:i[t].id,dataURL:i[t].dataURL,created:i[t].created}),i[t].file||i[t].isHyperlink){const e=new EmbeddedFile(this.plugin,this.file.path,i[t].isHyperlink?i[t].hyperlink:i[t].file),A=a.getAppState();e.setImage(i[t].dataURL,i[t].mimeType,i[t].size,"dark"===A.theme,i[t].hasSVGwithBitmap),this.excalidrawData.setFile(i[t].id,e)}i[t].latex&&this.excalidrawData.setEquation(i[t].id,{latex:i[t].latex,isLoaded:!0})})),a.addFiles(e)}return a.updateContainerSize(a.getSceneElements().filter((e=>s.includes(e.id))).filter(isContainer)),A?await this.save(!1):this.setDirty(5),!0},this.getScene=e=>{const t=this.excalidrawAPI;if(!(null==u?void 0:u.current)||!t)return null;const A=e?this.getViewSelectedElements():t.getSceneElements(),i=t.getAppState(),n=Object.assign({},t.getFiles());if(n){const e=A.filter((e=>"image"===e.type)).map((e=>e.fileId)),t=Object.keys(n).filter((t=>!e.contains(t)));t.forEach((e=>delete n[e]))}return{type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:A,appState:{theme:i.theme,viewBackgroundColor:i.viewBackgroundColor,currentItemStrokeColor:i.currentItemStrokeColor,currentItemBackgroundColor:i.currentItemBackgroundColor,currentItemFillStyle:i.currentItemFillStyle,currentItemStrokeWidth:i.currentItemStrokeWidth,currentItemStrokeStyle:i.currentItemStrokeStyle,currentItemRoughness:i.currentItemRoughness,currentItemOpacity:i.currentItemOpacity,currentItemFontFamily:i.currentItemFontFamily,currentItemFontSize:i.currentItemFontSize,currentItemTextAlign:i.currentItemTextAlign,currentItemStartArrowhead:i.currentItemStartArrowhead,currentItemEndArrowhead:i.currentItemEndArrowhead,scrollX:i.scrollX,scrollY:i.scrollY,zoom:i.zoom,currentItemRoundness:i.currentItemRoundness,gridSize:i.gridSize,colorPalette:i.colorPalette,currentStrokeOptions:i.currentStrokeOptions,previousGridSize:i.previousGridSize},prevTextMode:this.prevTextMode,files:n}},this.refresh=()=>{if(0===this.contentEl.clientWidth||0===this.contentEl.clientHeight)return;const e=this.excalidrawAPI;(null==u?void 0:u.current)&&e&&e.refresh()};let g={x:0,y:0},p=null;this.clearHoverPreview=()=>{if(p){const e=new MouseEvent("click",{view:this.ownerWindow,bubbles:!0,cancelable:!0});p.dispatchEvent(e),p=null}};const m=e=>{var t,A,i,n,a;const r=null===(t=app.dragManager.draggable)||void 0===t?void 0:t.files;return r&&r[0]==this.file&&(r.shift(),app.dragManager.draggable.title=`${r.length} files`),["file","files"].includes(null===(A=app.dragManager.draggable)||void 0===A?void 0:A.type)?"link":(null===(i=e.types)||void 0===i?void 0:i.includes("text/html"))||(null===(n=e.types)||void 0===n?void 0:n.includes("text/plain"))||(null===(a=e.types)||void 0===a?void 0:a.includes("Files"))?"copy":void 0};let w=!1;const f=()=>{if(s=getTextElementAtPointer(this.currentPosition,this),s&&s.id){const e=new MouseEvent("click",{ctrlKey:!(DEVICE.isIOS||DEVICE.isMacOS)||this.modifierKeyDown.ctrlKey,metaKey:DEVICE.isIOS||DEVICE.isMacOS||this.modifierKeyDown.metaKey,shiftKey:this.modifierKeyDown.shiftKey,altKey:this.modifierKeyDown.altKey});return this.handleLinkClick(e),void(s=null)}if(o=getImageElementAtPointer(this.currentPosition,this),o&&o.id){const e=new MouseEvent("click",{ctrlKey:!(DEVICE.isIOS||DEVICE.isMacOS)||this.modifierKeyDown.ctrlKey,metaKey:DEVICE.isIOS||DEVICE.isMacOS||this.modifierKeyDown.metaKey,shiftKey:this.modifierKeyDown.shiftKey,altKey:this.modifierKeyDown.altKey});return this.handleLinkClick(e),void(o=null)}if(l=getElementWithLinkAtPointer(this.currentPosition,this),l&&l.id){const e=new MouseEvent("click",{ctrlKey:!(DEVICE.isIOS||DEVICE.isMacOS)||this.modifierKeyDown.ctrlKey,metaKey:DEVICE.isIOS||DEVICE.isMacOS||this.modifierKeyDown.metaKey,shiftKey:this.modifierKeyDown.shiftKey,altKey:this.modifierKeyDown.altKey});return this.handleLinkClick(e),void(l=null)}};let B=null;const E=(e,t)=>{var A,i;if(!B)return;if(null===(i=null===(A=this.excalidrawAPI)||void 0===A?void 0:A.getAppState())||void 0===i?void 0:i.editingElement)return;if(this.semaphores.wheelTimeout)return;if(!e){if(!this.currentPosition)return;e="";const A=getTextElementAtPointer(this.currentPosition,this);if(A&&A.text){t=this.excalidrawAPI.getSceneElements().filter((e=>e.id===A.id))[0];const i=this.textMode===TextMode.parsed?this.excalidrawData.getRawText(A.id):A.text;if(!i)return;if(i.match(REG_LINKINDEX_HYPERLINK))return;const n=REGEX_LINK.getRes(i).next();if(!n.value)return;if((e=REGEX_LINK.getLink(n)).match(REG_LINKINDEX_HYPERLINK))return}else{const A=getImageElementAtPointer(this.currentPosition,this);if(t=this.excalidrawAPI.getSceneElements().filter((e=>e.id===A.id))[0],!A||!A.fileId)return;if(!this.excalidrawData.hasFile(A.fileId))return;const i=this.excalidrawData.getFile(A.fileId);if(i.isHyperlink)return;if(IMAGE_TYPES.contains(i.file.extension))return;if("pdf"===i.file.extension.toLowerCase())return;if(this.plugin.ea.isExcalidrawFile(i.file))return;const n=i.linkParts.ref?`#${i.linkParts.isBlockRef?"^":""}${i.linkParts.ref}`:"";e=i.file.path+n}}if(this.getHookServer().onLinkHoverHook)try{if(!this.getHookServer().onLinkHoverHook(t,e,this,this.getHookServer()))return}catch(e){errorlog({where:"ExcalidrawView.showHoverPreview",fn:this.getHookServer().onLinkHoverHook,error:e})}if(this.semaphores.hoverSleep)return;const n=app.metadataCache.getFirstLinkpathDest(e.split("#")[0],this.file.path);if(!n)return;if(this.ownerDocument.querySelector(`div.popover-title[data-path="${n.path}"]`))return;this.semaphores.hoverSleep=!0;const a=this;if(setTimeout((()=>a.semaphores.hoverSleep=!1),500),this.plugin.hover.linkText=e,this.plugin.hover.sourcePath=this.file.path,p=this.contentEl,app.workspace.trigger("hover-link",{event:B,source:"excalidraw",hoverParent:p,targetEl:p,linktext:this.plugin.hover.linkText,sourcePath:this.plugin.hover.sourcePath}),g=this.currentPosition,this.isFullscreen()){const e=this;setTimeout((()=>{var t,A,i,a;const r=null!==(a=null===(i=null===(A=null===(t=this.ownerDocument.querySelector(`div.popover-title[data-path="${n.path}"]`))||void 0===t?void 0:t.parentElement)||void 0===A?void 0:A.parentElement)||void 0===i?void 0:i.parentElement)&&void 0!==a?a:this.ownerDocument.body.querySelector("div.popover");r&&e.contentEl.append(r)}),400)}},{Excalidraw:b,MainMenu:v,WelcomeScreen:C}=this.plugin.getPackage(this.ownerWindow).excalidrawLib,y=t.createElement("div",{className:"excalidraw-wrapper",ref:A,key:"abc",tabIndex:0,onKeyDown:e=>{e.target!==y.ref.current&&(this.isFullscreen()&&e.keyCode===KEYCODE.ESC&&this.exitFullscreen(),!isCTRL(e)||isSHIFT(e)||isALT(e)||E())},onPointerDown:e=>{(isCTRL(e)||isMETA(e))&&(!this.plugin.settings.allowCtrlClick&&isMETA(e)||setTimeout((()=>{(this.getSelectedTextElement().id||this.getSelectedImageElement().id||this.getSelectedElementWithLink().id)&&this.handleLinkClick(e)})))},onMouseMove:e=>{B=e.nativeEvent},onMouseOver:()=>{this.clearHoverPreview()},onDragOver:e=>{const t=m(e.dataTransfer);if(t){this.draginfoDiv||(this.draginfoDiv=createDiv({cls:"excalidraw-draginfo"}),this.ownerDocument.body.appendChild(this.draginfoDiv));let A="";if(app.dragManager.draggable)switch(internalDragModifierType(e)){case"image":A="Embed image";break;case"image-fullsize":A="Embed image @100%";break;case"link":A="Insert link"}else if(1===e.dataTransfer.types.length&&e.dataTransfer.types.includes("Files"))A="External file";else switch(externalDragModifierType(e)){case"image-import":A="Import image to Vault";break;case"image-url":A="Insert image/thumbnail with URL";break;case"insert-link":A="Insert link"}this.draginfoDiv.innerText!==A&&(this.draginfoDiv.innerText=A);const i=e.clientY-8*parseFloat(getComputedStyle(this.draginfoDiv).fontSize)+"px",n=e.clientX-this.draginfoDiv.clientWidth/2+"px";return this.draginfoDiv.style.top!==i&&(this.draginfoDiv.style.top=i),this.draginfoDiv.style.left!==n&&(this.draginfoDiv.style.left=n),e.dataTransfer.dropEffect=t,e.preventDefault(),!1}},onDragLeave:()=>{this.draginfoDiv&&(this.ownerDocument.body.removeChild(this.draginfoDiv),delete this.draginfoDiv)}},t.createElement(b,{ref:u,width:a.width,height:a.height,UIOptions:{canvasActions:{loadScene:!1,saveScene:!1,saveAsScene:!1,export:!1,saveAsImage:!1,saveToActiveFile:!1}},initState:null==e?void 0:e.appState,initialData:e,detectScroll:!0,onPointerUpdate:e=>{if(this.currentPosition=e.pointer,p&&(Math.abs(g.x-e.pointer.x)>50||Math.abs(g.y-e.pointer.y)>50)&&this.clearHoverPreview(),w){if(!d&&"down"===e.button){if(d=!0,isCTRL(this.modifierKeyDown)||isMETA(this.modifierKeyDown))return void f();const e=Date.now();return e-c<600&&e-c>40&&f(),void(c=e)}"up"===e.button&&(d=!1),(isCTRL(this.modifierKeyDown)||this.excalidrawAPI.getAppState().isViewModeEnabled&&this.plugin.settings.hoverPreviewWithoutCTRL)&&E()}},libraryReturnUrl:"app://obsidian.md",autoFocus:!0,onChange:(e,t)=>{var A,i,n,a;const r=()=>{if(setTimeout((()=>this.updateScene({appState:{gridColor:this.getGridColor(t.viewBackgroundColor)}}))),setDynamicStyle(this.plugin.ea,this,t.viewBackgroundColor,this.plugin.settings.dynamicStyling),this.plugin.ea.onCanvasColorChangeHook)try{this.plugin.ea.onCanvasColorChangeHook(this.plugin.ea,this,t.viewBackgroundColor)}catch(e){errorlog({where:r,source:this.plugin.ea.onCanvasColorChangeHook,error:e,message:"ea.onCanvasColorChangeHook exception"})}};if(w=t.viewModeEnabled,this.semaphores.justLoaded){if((null!==(a=null===(n=null===(i=null===(A=this.excalidrawData)||void 0===A?void 0:A.scene)||void 0===i?void 0:i.elements)||void 0===n?void 0:n.length)&&void 0!==a?a:0)>0&&0===e.length)return;return this.semaphores.justLoaded=!1,!this.semaphores.preventAutozoom&&this.plugin.settings.zoomToFitOnOpen&&this.zoomToFit(!1,!0),this.previousSceneVersion=this.getSceneVersion(e),this.previousBackgroundColor=t.viewBackgroundColor,this.previousTheme=t.theme,void r()}if(t.theme!==this.previousTheme&&this.file===this.excalidrawData.file&&(this.previousTheme=t.theme,this.setDirty(5)),t.viewBackgroundColor!==this.previousBackgroundColor&&this.file===this.excalidrawData.file&&(this.previousBackgroundColor=t.viewBackgroundColor,this.setDirty(6),this.colorChangeTimer&&clearTimeout(this.colorChangeTimer),this.colorChangeTimer=setTimeout((()=>{r(),this.colorChangeTimer=null}),50)),!this.semaphores.dirty&&null===t.editingElement&&null===t.editingLinearElement){const t=this.getSceneVersion(e);(t>0||0===t&&e.length>0)&&t!==this.previousSceneVersion&&(this.previousSceneVersion=t,this.setDirty(6))}},onLibraryChange:e=>{(async()=>{const t={type:"excalidrawlib",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,libraryItems:e};this.plugin.setStencilLibrary(t),await this.plugin.saveSettings()})()},renderTopRightUI:this.obsidianMenu.renderButton,onPaste:e=>{if(e&&e.text&&hyperlinkIsYouTubeLink(e.text))return this.addYouTubeThumbnail(e.text),!1;if(e&&e.text&&hyperlinkIsImage(e.text))return this.addImageWithURL(e.text),!1;if(e.elements){const e=this;setTimeout((()=>e.save(!1)),300)}return!0},onThemeChange:async e=>{var t;this.excalidrawData.scene.appState.theme=e,this.loadSceneFiles(),null===(t=null==i?void 0:i.current)||void 0===t||t.setTheme(e),setDynamicStyle(this.plugin.ea,this,this.previousBackgroundColor,this.plugin.settings.dynamicStyling)},ownerDocument:this.ownerDocument,ownerWindow:this.ownerWindow,onDrop:e=>{this.draginfoDiv&&(this.ownerDocument.body.removeChild(this.draginfoDiv),delete this.draginfoDiv);const t=this.excalidrawAPI;if(!t)return!1;const A=t.getAppState();this.currentPosition=viewportCoordsToSceneCoords({clientX:e.clientX,clientY:e.clientY},A);const i=app.dragManager.draggable,n=internalDragModifierType(e),a=externalDragModifierType(e),r=(t,A,n)=>{if(!this.getHookServer().onDropHook)return!1;try{return this.getHookServer().onDropHook({ea:this.getHookServer(),event:e,draggable:i,type:t,payload:{files:A,text:n},excalidrawFile:this.file,view:this,pointerPosition:this.currentPosition})}catch(e){return new obsidian_module.Notice("on drop hook error. See console log for details"),errorlog({where:"ExcalidrawView.onDrop",error:e}),!1}};switch(null==i?void 0:i.type){case"file":if(!r("file",[i.file],null)){if(i.file.path.match(REG_LINKINDEX_INVALIDCHARS))return new obsidian_module.Notice(t$d("FILENAME_INVALID_CHARS"),4e3),!1;if(["image","image-fullsize"].contains(n)&&(IMAGE_TYPES.contains(i.file.extension)||"md"===i.file.extension||"pdf"===i.file.extension.toLowerCase())){const e=getEA(this);return"pdf"===i.file.extension.toLowerCase()?new InsertPDFModal(this.plugin,this).open(i.file):(async()=>{e.canvas.theme=t.getAppState().theme,await e.addImage(this.currentPosition.x,this.currentPosition.y,i.file,!("image-fullsize"===n)),e.addElementsToView(!1,!1,!0)})(),!1}this.addText(`[[${app.metadataCache.fileToLinktext(i.file,this.file.path,!0)}]]`)}return!1;case"files":return r("file",i.files,null)||(async()=>{if(["image","image-fullsize"].contains(n)){const e=getEA(this);e.canvas.theme=t.getAppState().theme;let A=0;for(const t of i.files)(IMAGE_TYPES.contains(t.extension)||"md"===t.extension)&&(await e.addImage(this.currentPosition.x+50*A,this.currentPosition.y+50*A,t,!("image-fullsize"===n)),A++,await e.addElementsToView(!1,!1,!0)),"pdf"===t.extension.toLowerCase()&&new InsertPDFModal(this.plugin,this).open(t)}else{for(const e of i.files)await this.addText(`[[${app.metadataCache.fileToLinktext(e,this.file.path,!0)}]]`,void 0,!1),this.currentPosition.y+=2*A.currentItemFontSize;this.save(!1)}})(),!1}if(e.dataTransfer.types.includes("Files")){if(e.dataTransfer.types.includes("text/plain")){const t=e.dataTransfer.getData("text");if(t&&r("text",null,t))return!1;if(t&&"image-url"===a&&hyperlinkIsImage(t))return this.addImageWithURL(t),!1;if(t&&"insert-link"===a)return this.plugin.settings.iframelyAllowed&&t.match(/^https?:\/\/\S*$/)?(this.addTextWithIframely(t),!1):(this.addText(t),!1)}if(e.dataTransfer.types.includes("text/html")){const t=e.dataTransfer.getData("text/html").match(/src=["']([^"']*)["']/);if(t&&"image-url"===a&&hyperlinkIsImage(t[1]))return this.addImageWithURL(t[1]),!1;if(t&&"insert-link"===a)return this.plugin.settings.iframelyAllowed&&t[1].match(/^https?:\/\/\S*$/)?(this.addTextWithIframely(t[1]),!1):(this.addText(t[1]),!1)}return!0}if(e.dataTransfer.types.includes("text/plain")||e.dataTransfer.types.includes("text/uri-list")||e.dataTransfer.types.includes("text/html")){const t=e.dataTransfer.getData("text/html").match(/src=["']([^"']*)["']/),A=t?t[1]:"",i=e.dataTransfer.getData("text"),n=e.dataTransfer.getData("text/uri-list");let s=t?A:i;if(s&&""!==s||(s=n),!s||""===s)return!0;if(!r("text",null,s)){if(s&&"image-url"===a&&hyperlinkIsYouTubeLink(s))return this.addYouTubeThumbnail(s),!1;if(n&&"image-url"===a&&hyperlinkIsYouTubeLink(n))return this.addYouTubeThumbnail(n),!1;if(s&&"image-url"===a&&hyperlinkIsImage(s))return this.addImageWithURL(s),!1;if(n&&"image-url"===a&&hyperlinkIsImage(n))return this.addImageWithURL(n),!1;if(s&&"image-import"===a&&hyperlinkIsImage(s))return this.addImageSaveToVault(s),!1;if(n&&"image-import"===a&&hyperlinkIsImage(n))return this.addImageSaveToVault(n),!1;if(this.plugin.settings.iframelyAllowed&&s.match(/^https?:\/\/\S*$/))return this.addTextWithIframely(s),!1;if(s.startsWith("obsidian://open?vault=")){const t=e.dataTransfer.getData("text/html");if(t){const e=t.match(/href="app:\/\/obsidian\.md\/(.*?)"/);if(2===e.length){const t=decodeURIComponent(e[1]).split("#"),A=app.vault.getAbstractFileByPath(t[0]);if(A&&A instanceof obsidian_module.TFile){const e=app.metadataCache.fileToLinktext(A,this.file.path);return void this.addText(`[[${e+(t.length>1?"#"+t[1]+"|"+e:"")}]]`)}return this.addText(`[[${decodeURIComponent(e[1])}]]`),!1}}const A=s.split("file=");if(2===A.length)return this.addText(`[[${decodeURIComponent(A[1])}]]`),!1}this.addText(s.replace(/(!\[\[.*#[^\]]*\]\])/g,"$1{40}"))}return!1}return!r("unknown",null,null)},onBeforeTextEdit:e=>{var t;if(clearTimeout(this.isEditingTextResetTimer),this.isEditingTextResetTimer=null,this.semaphores.isEditingText=!0,this.compatibilityMode)return null!==(t=e.originalText)&&void 0!==t?t:e.text;return this.excalidrawData.getRawText(e.id)||e.rawText},onBeforeTextSubmit:(e,t,A,i)=>{const n=this.excalidrawAPI;if(!n)return[null,null,null];const a="PASTING EXCALIDRAW ELEMENTS AS A TEXT ELEMENT IS NOT ALLOWED";if(t.startsWith('{"type":"excalidraw/clipboard","elements":[{"'))return setTimeout((()=>{const t=this.excalidrawAPI.getSceneElements(),A=t.filter((t=>t.id===e.id));if(1===A.length){const e=cloneElement(A[0]);e.rawText=a,t[t.indexOf(A[0])]=e,this.excalidrawData.setTextElement(e.id,a,a,(()=>{})),this.updateScene({elements:t}),n.history.clear()}})),[a,a,null];if(this.semaphores.isEditingText=!0,this.isEditingTextResetTimer=setTimeout((()=>{this.semaphores.isEditingText=!1,this.isEditingTextResetTimer=null}),1500),i)return this.excalidrawData.deleteTextElement(e.id),this.setDirty(7),[null,null,null];const r=e.containerId;if(t!==e.text||A!==e.originalText||!this.excalidrawData.getRawText(e.id)){this.setDirty(8);const[i,a,s]=this.excalidrawData.setTextElement(e.id,t,A,(async(t,A)=>{var i,a;if(this.textMode===TextMode.raw)return;const r=this.excalidrawAPI.getSceneElements(),s=r.filter((t=>t.id===e.id));if(1===s.length){const e=cloneElement(s[0]),o=s[0].containerId?null===(a=null===(i=n.getSceneElements().filter((e=>e.id===s[0].containerId)))||void 0===i?void 0:i[0])||void 0===a?void 0:a.type:void 0;this.excalidrawData.updateTextElement(e,t,A,!0,o),r[r.indexOf(s[0])]=e,this.updateScene({elements:r}),e.containerId&&this.updateContainerSize(e.containerId)}n.history.clear()}));return i?(r&&this.updateContainerSize(r,!0),this.textMode===TextMode.raw?[t,A,s]:t===i?s?[i,a,s]:[null,null,null]:(n.history.clear(),[i,a,s])):[null,null,null]}return r&&this.updateContainerSize(r,!0),this.textMode===TextMode.parsed?this.excalidrawData.getParsedText(e.id):[null,null,null]},onLinkOpen:async(e,t)=>{var A;if(t.preventDefault(),!e)return;let i=e.link;if(!i||""===i)return;setTimeout((()=>this.removeLinkTooltip()),500);let n=null===(A=null==t?void 0:t.detail)||void 0===A?void 0:A.nativeEvent;if(!this.handleLinkHookCall(e,e.link,n)&&!this.openExternalLink(e.link,isSHIFT(n)||isCTRL(n)||isMETA(n)||isALT(n)?void 0:e)){if("text"===e.type){const t=e.rawText.replaceAll("\n","");REGEX_LINK.getResList(t).filter((e=>Boolean(e.value))).length>1&&(i=t)}n.shiftKey||n.ctrlKey||n.metaKey||n.altKey||(n={shiftKey:!0,ctrlKey:!1,metaKey:!1,altKey:!1}),this.linkClick(n,null,null,{id:e.id,text:i},emulateCTRLClickForLinks(n))}},onLinkHover:(e,t)=>{if(e&&(this.plugin.settings.hoverPreviewWithoutCTRL||isCTRL(t))){B=t,B.ctrlKey=!(DEVICE.isIOS||DEVICE.isMacOS)||B.ctrlKey,B.metaKey=DEVICE.isIOS||DEVICE.isMacOS||B.metaKey;const A=e.link;if(!A||""===A)return;if(A.startsWith("[[")){const t=A.match(/\[\[(?.*?)\]\]/);if(!t)return;let i=t.groups.link;E(i,e)}}},onViewModeChange:e=>{var t,A;if(this.semaphores.viewunload||null===(A=null===(t=this.toolsPanelRef)||void 0===t?void 0:t.current)||void 0===A||A.setExcalidrawViewMode(e),this.getHookServer().onViewModeChangeHook)try{this.getHookServer().onViewModeChangeHook(e,this,this.getHookServer())}catch(e){errorlog({where:"ExcalidrawView.onViewModeChange",fn:this.getHookServer().onViewModeChangeHook,error:e})}}},t.createElement(v,{},t.createElement(v.DefaultItems.ChangeCanvasBackground),t.createElement(v.DefaultItems.ToggleTheme),t.createElement(v.Separator),DEVICE.isPhone?null:t.createElement(v.Item,{icon:ICONS.trayMode,"aria-label":"Tray-mode offers an alternative, more spacious canvas",onSelect:()=>{this.toggleTrayMode()}},"Toggle tray-mode"),t.createElement(v.Item,{icon:saveIcon(!1),"aria-label":t$d("FORCE_SAVE"),onSelect:()=>{this.forceSave()}},"Save"),t.createElement(v.Item,{icon:ICONS.scriptEngine,"aria-label":"Explore the Excalidraw Script Library",onSelect:()=>{new ScriptInstallPrompt(this.plugin).open()}},"Script Library"),t.createElement(v.Item,{icon:ICONS.ExportImage,"aria-label":"Export image as PNG, SVG, or Excalidraw file",onSelect:()=>{this.exportDialog||(this.exportDialog=new ExportDialog(this.plugin,this,this.file),this.exportDialog.createForm()),this.exportDialog.open()}},"Export Image..."),t.createElement(v.Item,{icon:ICONS.switchToMarkdown,"aria-label":"Switch to markdown view",onSelect:()=>{this.openAsMarkdown()}},"Open as Markdown"),t.createElement(v.Separator),t.createElement(v.DefaultItems.Help),t.createElement(v.DefaultItems.ClearCanvas)),t.createElement(C,{},t.createElement(C.Center,{},t.createElement(C.Center.Logo),t.createElement(C.Center.Heading,{},'Type "Excalidraw" in the Command Palette',t.createElement("br"),"Explore the Obsidian Menu in the top right",t.createElement("br"),"Visit the Script Library",t.createElement("br"),"Find help in the hamburger-menu"),t.createElement(C.Center.Menu,{},t.createElement(C.Center.MenuItemLink,{icon:ICONS.YouTube,href:"https://www.youtube.com/@VisualPKM",shortcut:null,"aria-label":"Visual PKM YouTube Channel"}," Check out the Visual PKM YouTube channel."),t.createElement(C.Center.MenuItemLink,{icon:ICONS.Discord,href:"https://discord.gg/DyfAXFwUHc",shortcut:null,"aria-label":"Join the Visual Thinking Discord Server"}," Join the Visual Thinking Discord Server"),t.createElement(C.Center.MenuItemLink,{icon:ICONS.twitter,href:"https://twitter.com/zsviczian",shortcut:null,"aria-label":"Follow me on Twitter"}," Follow me on Twitter"),t.createElement(C.Center.MenuItemLink,{icon:ICONS.heart,href:"https://ko-fi.com/zsolt",shortcut:null,"aria-label":"Donate to support Excalidraw-Obsidian"},' Say "Thank You" & support the plugin.'))))),t.createElement(ToolsPanel,{ref:i,visible:!1,view:this,centerPointer:()=>{const e=this.excalidrawAPI;if(!u||!u.current||!e)return;const t=e.getAppState(),{width:A,height:i}=t;this.currentPosition=viewportCoordsToSceneCoords({clientX:A/2,clientY:i/2},t)}})),F=t.useRef(new ResizeObserver((e=>{if(!i||!i.current)return;const{width:t,height:A}=e[0].contentRect;if(0===t||0===A)return;const n=i.current.onRightEdge?i.current.previousWidth-t:0,a=i.current.onBottomEdge?i.current.previousHeight-A:0;i.current.updatePosition(a,n)})));return t.useEffect((()=>((null==i?void 0:i.current)&&F.current.observe(i.current.containerRef.current),()=>{F.current.unobserve(i.current.containerRef.current)})),[i,F]),t.createElement(t.Fragment,null,y)}));A.createRoot(this.contentEl).render(i)}updateContainerSize(e,t=!1){const A=this.excalidrawAPI;if(!A)return;const i=()=>{const t=e?A.getSceneElements().filter((t=>t.id===e&&"arrow"!==t.type)):A.getSceneElements().filter(isContainer);t.length>0&&(this.initialContainerSizeUpdate&&(this.semaphores.justLoaded=!0),A.updateContainerSize(t)),this.initialContainerSizeUpdate=!1};t?setTimeout((()=>i()),50):i()}zoomToFit(e=!0,t=!1){if(document.body.querySelector("div.modal-container"))return;const A=this.excalidrawAPI;if(!A||!this.excalidrawRef||this.semaphores.isEditingText||this.semaphores.preventAutozoom)return;const i=this.plugin.settings.zoomToFitMaxLevel,n=A.getSceneElements().filter((e=>e.width<1e4&&e.height<1e4));app.isMobile&&n.length>1e3||n.length>2500?t&&A.scrollToContent():e?setTimeout((()=>A.zoomToFit(n,i,this.isFullscreen()?0:.05)),100):A.zoomToFit(n,i,this.isFullscreen()?0:.05)}updatePinnedScripts(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{pinnedScripts:this.plugin.settings.pinnedScripts}})}updatePinnedCustomPens(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)}})}updatePinchZoom(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{allowPinchZoom:this.plugin.settings.allowPinchZoom}})}updateWheelZoom(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{allowWheelZoom:this.plugin.settings.allowWheelZoom}})}async toggleTrayMode(){const e=this.excalidrawAPI;if(!e)return!1;const t=e.getAppState();e.updateScene({appState:{trayModeEnabled:!t.trayModeEnabled}}),await this.plugin.loadSettings(),this.plugin.settings.defaultTrayMode=!t.trayModeEnabled,this.plugin.saveSettings()}selectElementsMatchingQuery(e,t,A=!0,i=!1,n=!1){let a=getTextElementsMatchingQuery(e.filter((e=>"text"===e.type)),t,i);if(0!==a.length){if(n){const t=this.plugin.ea.getElementsInTheSameGroupWithElement(a[0],e);t.length>0&&(a=t)}this.zoomToElements(A,a)}else new obsidian_module.Notice("I could not find a matching text element")}zoomToElements(e,t){const A=this.excalidrawAPI;if(!A)return;const i=this.plugin.settings.zoomToFitMaxLevel;e&&A.selectElements(t),A.zoomToFit(t,i,.05)}getViewSelectedElements(){var e;const t=this.excalidrawAPI;if(!t)return[];const A=null===(e=t.getAppState())||void 0===e?void 0:e.selectedElementIds;if(!A)return[];const i=Object.keys(A);if(!i)return[];const n=t.getSceneElements().filter((e=>i.includes(e.id))),a=n.filter((e=>e.boundElements&&e.boundElements.filter((e=>"text"===e.type)).length>0)).map((e=>e.boundElements.filter((e=>"text"===e.type)).map((e=>e.id))[0])),r=n.map((e=>e.id)).concat(a);return t.getSceneElements().filter((e=>r.contains(e.id)))}async copyLinkToSelectedElementToClipboard(e){const t=this.getViewSelectedElements();if(t.length<1)return void new obsidian_module.Notice(t$d("INSERT_LINK_TO_ELEMENT_ERROR"));let A;if(2===t.length){const e=t.filter((e=>"text"===e.type));1===e.length&&e[0].containerId&&1===t.filter((e=>e.boundElements.some((e=>"text"===e.type)))).length&&(A=e[0].id)}A||(A=1===t.length?t[0].id:this.plugin.ea.getLargestElement(t).id);const i=await ScriptEngine.inputPrompt(this,this.plugin,app,"Set link alias","Leave empty if you do not want to set an alias","",[{caption:"Link",action:()=>{e=""}},{caption:"Area",action:()=>{e="area="}},{caption:"Group",action:()=>{e="group="}}]);navigator.clipboard.writeText(`${e.length>0?"!":""}[[${this.file.path}#^${e}${A}${i?`|${i}`:""}]]`),new obsidian_module.Notice(t$d("INSERT_LINK_TO_ELEMENT_READY"))}updateScene(e,t=!1){const A=this.excalidrawAPI;if(!A)return;const i=e.elements&&t;i&&(e.elements=A.restore(e).elements);try{A.updateScene(e)}catch(t){if(errorlog({where:"ExcalidrawView.updateScene 1st attempt",fn:this.updateScene,error:t,scene:e,willDoSecondAttempt:!i}),i)warningUnknowSeriousError();else try{e.elements=A.restore(e).elements,A.updateScene(e)}catch(t){errorlog({where:"ExcalidrawView.updateScene 2nd attempt",fn:this.updateScene,error:t,scene:e}),warningUnknowSeriousError()}}}}function getTextMode(e){return e.search("excalidraw-plugin: parsed\n")>-1||e.search("excalidraw-plugin: locked\n")>-1?TextMode.parsed:TextMode.raw}const DEFAULT_SETTINGS={folder:"Excalidraw",embedUseExcalidrawFolder:!1,templateFilePath:"Excalidraw/Template.excalidraw",scriptFolderPath:"Excalidraw/Scripts",compress:!1,autosave:!0,autosaveInterval:15e3,autosaveIntervalDesktop:15e3,autosaveIntervalMobile:1e4,drawingFilenamePrefix:"Drawing ",drawingEmbedPrefixWithFilename:!0,drawingFilnameEmbedPostfix:" ",drawingFilenameDateTime:"YYYY-MM-DD HH.mm.ss",useExcalidrawExtension:!0,displaySVGInPreview:!0,displayExportedImageIfAvailable:!1,previewMatchObsidianTheme:!1,width:"400",dynamicStyling:"colorful",isLeftHanded:!1,matchTheme:!1,matchThemeAlways:!1,matchThemeTrigger:!1,defaultMode:"normal",defaultPenMode:"never",allowPinchZoom:!1,allowWheelZoom:!1,zoomToFitOnOpen:!0,zoomToFitOnResize:!0,zoomToFitMaxLevel:2,linkPrefix:"📍",urlPrefix:"🌐",parseTODO:!1,todo:"☐",done:"🗹",hoverPreviewWithoutCTRL:!1,linkOpacity:1,openInAdjacentPane:!1,openInMainWorkspace:!0,showLinkBrackets:!0,allowCtrlClick:!0,forceWrap:!1,pageTransclusionCharLimit:200,wordWrappingDefault:0,removeTransclusionQuoteSigns:!0,iframelyAllowed:!0,pngExportScale:1,exportWithTheme:!0,exportWithBackground:!0,exportPaddingSVG:10,keepInSync:!1,autoexportSVG:!1,autoexportPNG:!1,autoExportLightAndDark:!1,autoexportExcalidraw:!1,embedType:"excalidraw",embedWikiLink:!0,syncExcalidraw:!1,experimentalFileType:!1,experimentalFileTag:"✏️",experimentalLivePreview:!0,experimentalEnableFourthFont:!1,experimantalFourthFont:"Virgil",fieldSuggester:!0,compatibilityMode:!1,drawingOpenCount:0,library:"deprecated",library2:{type:"excalidrawlib",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,libraryItems:[]},imageElementNotice:!0,mdSVGwidth:500,mdSVGmaxHeight:800,mdFont:"Virgil",mdFontColor:"Black",mdBorderColor:"Black",mdCSS:"",scriptEngineSettings:{},defaultTrayMode:!0,previousRelease:"0.0.0",showReleaseNotes:!0,showNewVersionNotification:!0,mathjaxSourceURL:"https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js",latexBoilerplate:"\\color{blue}",taskboneEnabled:!1,taskboneAPIkey:"",pinnedScripts:[],customPens:[Object.assign({},PENS.default),Object.assign({},PENS.highlighter),Object.assign({},PENS.finetip),Object.assign({},PENS.fountain),Object.assign({},PENS.marker),Object.assign({},PENS["thick-thin"]),Object.assign({},PENS["thin-thick-thin"]),Object.assign({},PENS.default),Object.assign({},PENS.default),Object.assign({},PENS.default)],numberOfCustomPens:0,pdfScale:4,pdfBorderBox:!0,pdfGapSize:20,pdfLockAfterImport:!0,pdfNumColumns:1,pdfImportScale:.3};class ExcalidrawSettingTab extends obsidian_module.PluginSettingTab{constructor(e,t){super(e,t),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1,this.requestUpdatePinnedPens=!1,this.requestUpdateDynamicStyling=!1,this.reloadMathJax=!1,this.plugin=t}applySettingsUpdate(e=!1){e&&(this.requestReloadDrawings=!0)}async hide(){if(this.plugin.settings.scriptFolderPath=obsidian_module.normalizePath(this.plugin.settings.scriptFolderPath),"/"!==this.plugin.settings.scriptFolderPath&&""!==this.plugin.settings.scriptFolderPath||(this.plugin.settings.scriptFolderPath="Excalidraw/Scripts"),this.plugin.saveSettings(),this.requestUpdatePinnedPens&&app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedCustomPens()})),this.requestUpdateDynamicStyling&&app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&setDynamicStyle(this.plugin.ea,e.view,e.view.previousBackgroundColor,this.plugin.settings.dynamicStyling)})),this.requestReloadDrawings){const e=app.workspace.getLeavesOfType("excalidraw");for(const t of e)t.view instanceof ExcalidrawView&&(await t.view.save(!1),await t.view.reload(!0));this.requestEmbedUpdate=!0}this.requestEmbedUpdate&&this.plugin.triggerEmbedUpdates(),this.plugin.scriptEngine.updateScriptPath(),this.reloadMathJax&&this.plugin.loadMathJax()}async display(){var e;await this.plugin.loadSettings(),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1;const{containerEl:t}=this;t.addClass("excalidraw-settings"),this.containerEl.empty();const A=t.createDiv("coffee");A.addClass("ex-coffee-div"),A.createEl("a",{href:"https://ko-fi.com/zsolt"}).createEl("img",{attr:{src:"https://cdn.ko-fi.com/cdn/kofi3.png?v=3"}}).height=45,new obsidian_module.Setting(t).setName(t$d("RELEASE_NOTES_NAME")).setDesc(fragWithHTML(t$d("RELEASE_NOTES_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showReleaseNotes).onChange((async e=>{this.plugin.settings.showReleaseNotes=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("NEWVERSION_NOTIFICATION_NAME")).setDesc(fragWithHTML(t$d("NEWVERSION_NOTIFICATION_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showNewVersionNotification).onChange((async e=>{this.plugin.settings.showNewVersionNotification=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FOLDER_NAME")).setDesc(fragWithHTML(t$d("FOLDER_DESC"))).addText((e=>e.setPlaceholder("Excalidraw").setValue(this.plugin.settings.folder).onChange((async e=>{this.plugin.settings.folder=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FOLDER_EMBED_NAME")).setDesc(fragWithHTML(t$d("FOLDER_EMBED_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.embedUseExcalidrawFolder).onChange((async e=>{this.plugin.settings.embedUseExcalidrawFolder=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("TEMPLATE_NAME")).setDesc(fragWithHTML(t$d("TEMPLATE_DESC"))).addText((e=>e.setPlaceholder("Excalidraw/Template").setValue(this.plugin.settings.templateFilePath).onChange((async e=>{this.plugin.settings.templateFilePath=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("SCRIPT_FOLDER_NAME")).setDesc(fragWithHTML(t$d("SCRIPT_FOLDER_DESC"))).addText((e=>e.setPlaceholder("Excalidraw/Scripts").setValue(this.plugin.settings.scriptFolderPath).onChange((async e=>{this.plugin.settings.scriptFolderPath=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("SAVING_HEAD")}),new obsidian_module.Setting(t).setName(t$d("COMPRESS_NAME")).setDesc(fragWithHTML(t$d("COMPRESS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.compress).onChange((async e=>{this.plugin.settings.compress=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("AUTOSAVE_INTERVAL_DESKTOP_NAME")).setDesc(fragWithHTML(t$d("AUTOSAVE_INTERVAL_DESKTOP_DESC"))).addDropdown((e=>e.addOption("15000","Frequent (every 15 seconds)").addOption("60000","Moderate (every 60 seconds)").addOption("300000","Rare (every 5 minutes)").addOption("900000","Practically never (every 15 minutes)").setValue(this.plugin.settings.autosaveIntervalDesktop.toString()).onChange((async e=>{this.plugin.settings.autosaveIntervalDesktop=parseInt(e),this.plugin.settings.autosaveInterval=app.isMobile?this.plugin.settings.autosaveIntervalMobile:this.plugin.settings.autosaveIntervalDesktop,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("AUTOSAVE_INTERVAL_MOBILE_NAME")).setDesc(fragWithHTML(t$d("AUTOSAVE_INTERVAL_MOBILE_DESC"))).addDropdown((e=>e.addOption("10000","Frequent (every 10 seconds)").addOption("30000","Moderate (every 30 seconds)").addOption("60000","Rare (every 1 minute)").addOption("300000","Practically never (every 5 minutes)").setValue(this.plugin.settings.autosaveIntervalMobile.toString()).onChange((async e=>{this.plugin.settings.autosaveIntervalMobile=parseInt(e),this.plugin.settings.autosaveInterval=app.isMobile?this.plugin.settings.autosaveIntervalMobile:this.plugin.settings.autosaveIntervalDesktop,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("FILENAME_HEAD")}),t.createDiv("",(e=>{e.innerHTML=t$d("FILENAME_DESC")}));const i=()=>`${t$d("FILENAME_SAMPLE")}${getDrawingFilename(this.plugin.settings)}
${t$d("FILENAME_EMBED_SAMPLE")}${getEmbedFilename("{NOTE_NAME}",this.plugin.settings)}`,n=t.createEl("p",{text:""});let a,r,s,o,l,c,d;n.innerHTML=i(),new obsidian_module.Setting(t).setName(t$d("FILENAME_PREFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_DESC"))).addText((e=>e.setPlaceholder("Drawing ").setValue(this.plugin.settings.drawingFilenamePrefix).onChange((async t=>{this.plugin.settings.drawingFilenamePrefix=t.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilenamePrefix),n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_PREFIX_EMBED_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_EMBED_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.drawingEmbedPrefixWithFilename).onChange((async e=>{this.plugin.settings.drawingEmbedPrefixWithFilename=e,n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_POSTFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_POSTFIX_DESC"))).addText((e=>e.setPlaceholder("").setValue(this.plugin.settings.drawingFilnameEmbedPostfix).onChange((async t=>{this.plugin.settings.drawingFilnameEmbedPostfix=t.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilnameEmbedPostfix),n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_DATE_NAME")).setDesc(fragWithHTML(t$d("FILENAME_DATE_DESC"))).addText((e=>e.setPlaceholder("YYYY-MM-DD HH.mm.ss").setValue(this.plugin.settings.drawingFilenameDateTime).onChange((async t=>{this.plugin.settings.drawingFilenameDateTime=t.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilenameDateTime),n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_EXCALIDRAW_EXTENSION_NAME")).setDesc(fragWithHTML(t$d("FILENAME_EXCALIDRAW_EXTENSION_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.useExcalidrawExtension).onChange((async e=>{this.plugin.settings.useExcalidrawExtension=e,n.innerHTML=i(),this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("DISPLAY_HEAD")}),new obsidian_module.Setting(t).setName(t$d("DYNAMICSTYLE_NAME")).setDesc(fragWithHTML(t$d("DYNAMICSTYLE_DESC"))).addDropdown((e=>e.addOption("none","Dynamic Styling OFF").addOption("colorful","Match color").addOption("gray","Gray, match tone").setValue(this.plugin.settings.dynamicStyling).onChange((async e=>{this.requestUpdateDynamicStyling=!0,this.plugin.settings.dynamicStyling=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("LEFTHANDED_MODE_NAME")).setDesc(fragWithHTML(t$d("LEFTHANDED_MODE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.isLeftHanded).onChange((async e=>{this.plugin.settings.isLeftHanded=e,setLeftHandedMode(e),setTimeout((()=>setLeftHandedMode(e))),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("MATCH_THEME_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchTheme).onChange((async e=>{this.plugin.settings.matchTheme=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("MATCH_THEME_ALWAYS_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_ALWAYS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchThemeAlways).onChange((async e=>{this.plugin.settings.matchThemeAlways=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("MATCH_THEME_TRIGGER_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_TRIGGER_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchThemeTrigger).onChange((async e=>{this.plugin.settings.matchThemeTrigger=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("DEFAULT_OPEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_OPEN_MODE_DESC"))).addDropdown((e=>e.addOption("normal","Always in normal-mode").addOption("zen","Always in zen-mode").addOption("view","Always in view-mode").addOption("view-mobile","Usually normal, but view-mode on Phone").setValue(this.plugin.settings.defaultMode).onChange((async e=>{this.plugin.settings.defaultMode=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("DEFAULT_PEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_PEN_MODE_DESC"))).addDropdown((e=>e.addOption("never","Never").addOption("mobile","On Obsidian Mobile").addOption("always","Always").setValue(this.plugin.settings.defaultPenMode).onChange((async e=>{this.plugin.settings.defaultPenMode=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("DEFAULT_PINCHZOOM_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_PINCHZOOM_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowPinchZoom).onChange((async e=>{this.plugin.settings.allowPinchZoom=e,app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinchZoom()})),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("DEFAULT_WHEELZOOM_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_WHEELZOOM_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowWheelZoom).onChange((async e=>{this.plugin.settings.allowWheelZoom=e,app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updateWheelZoom()})),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("ZOOM_TO_FIT_ONOPEN_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_ONOPEN_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.zoomToFitOnOpen).onChange((async e=>{this.plugin.settings.zoomToFitOnOpen=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("ZOOM_TO_FIT_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.zoomToFitOnResize).onChange((async e=>{this.plugin.settings.zoomToFitOnResize=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("ZOOM_TO_FIT_MAX_LEVEL_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_MAX_LEVEL_DESC"))).addSlider((e=>e.setLimits(.5,10,.5).setValue(this.plugin.settings.zoomToFitMaxLevel).onChange((async e=>{a.innerText=` ${e.toString()}`,this.plugin.settings.zoomToFitMaxLevel=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{a=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.zoomToFitMaxLevel.toString()}`})),this.containerEl.createEl("h1",{text:t$d("LINKS_HEAD")}),this.containerEl.createEl("span",void 0,(e=>e.innerHTML=t$d("LINKS_DESC"))),new obsidian_module.Setting(t).setName(t$d("ADJACENT_PANE_NAME")).setDesc(fragWithHTML(t$d("ADJACENT_PANE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.openInAdjacentPane).onChange((async e=>{this.plugin.settings.openInAdjacentPane=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("MAINWORKSPACE_PANE_NAME")).setDesc(fragWithHTML(t$d("MAINWORKSPACE_PANE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.openInMainWorkspace).onChange((async e=>{this.plugin.settings.openInMainWorkspace=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(fragWithHTML(t$d("LINK_BRACKETS_NAME"))).setDesc(fragWithHTML(t$d("LINK_BRACKETS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showLinkBrackets).onChange((e=>{this.plugin.settings.showLinkBrackets=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("LINK_PREFIX_NAME")).setDesc(fragWithHTML(t$d("LINK_PREFIX_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.linkPrefix).onChange((e=>{this.plugin.settings.linkPrefix=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("URL_PREFIX_NAME")).setDesc(fragWithHTML(t$d("URL_PREFIX_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.urlPrefix).onChange((e=>{this.plugin.settings.urlPrefix=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("PARSE_TODO_NAME")).setDesc(fragWithHTML(t$d("PARSE_TODO_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.parseTODO).onChange((e=>{this.plugin.settings.parseTODO=e,r.setDisabled(!e),s.setDisabled(!e),this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("TODO_NAME")).setDesc(fragWithHTML(t$d("TODO_DESC"))).addText((e=>{r=e,e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.todo).onChange((e=>{this.plugin.settings.todo=e,this.applySettingsUpdate(!0)}))})),r.setDisabled(!this.plugin.settings.parseTODO),new obsidian_module.Setting(t).setName(t$d("DONE_NAME")).setDesc(fragWithHTML(t$d("DONE_DESC"))).setDisabled(!this.plugin.settings.parseTODO).addText((e=>{s=e,e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.done).onChange((e=>{this.plugin.settings.done=e,this.applySettingsUpdate(!0)}))})),s.setDisabled(!this.plugin.settings.parseTODO),new obsidian_module.Setting(t).setName(t$d("LINKOPACITY_NAME")).setDesc(fragWithHTML(t$d("LINKOPACITY_DESC"))).addSlider((e=>e.setLimits(0,1,.05).setValue(this.plugin.settings.linkOpacity).onChange((async e=>{o.innerText=` ${e.toString()}`,this.plugin.settings.linkOpacity=e,this.applySettingsUpdate(!0)})))).settingEl.createDiv("",(e=>{o=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.linkOpacity.toString()}`})),new obsidian_module.Setting(t).setName(t$d("HOVERPREVIEW_NAME")).setDesc(fragWithHTML(t$d("HOVERPREVIEW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.hoverPreviewWithoutCTRL).onChange((async e=>{this.plugin.settings.hoverPreviewWithoutCTRL=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("LINK_CTRL_CLICK_NAME")).setDesc(fragWithHTML(t$d("LINK_CTRL_CLICK_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowCtrlClick).onChange((async e=>{this.plugin.settings.allowCtrlClick=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("TRANSCLUSION_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_WRAP_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.forceWrap).onChange((async e=>{this.plugin.settings.forceWrap=e,this.applySettingsUpdate(!0)})))).descEl.innerHTML=`![[doc#^ref]]{number} ${t$d("TRANSCLUSION_WRAP_DESC")}`,new obsidian_module.Setting(t).setName(t$d("PAGE_TRANSCLUSION_CHARCOUNT_NAME")).setDesc(fragWithHTML(t$d("PAGE_TRANSCLUSION_CHARCOUNT_DESC"))).addText((e=>e.setPlaceholder("Enter a number").setValue(this.plugin.settings.pageTransclusionCharLimit.toString()).onChange((async t=>{const A=parseInt(t);if(isNaN(A)&&""!==t)e.setValue(this.plugin.settings.pageTransclusionCharLimit.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.pageTransclusionCharLimit=10,void this.applySettingsUpdate(!0);this.plugin.settings.pageTransclusionCharLimit=A,e.setValue(this.plugin.settings.pageTransclusionCharLimit.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("TRANSCLUSION_DEFAULT_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_DEFAULT_WRAP_DESC"))).addText((e=>e.setPlaceholder("Enter a number").setValue(this.plugin.settings.wordWrappingDefault.toString()).onChange((async t=>{const A=parseInt(t);if(isNaN(A)&&""!==t)e.setValue(this.plugin.settings.wordWrappingDefault.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.wordWrappingDefault=0,void this.applySettingsUpdate(!0);this.plugin.settings.wordWrappingDefault=A,e.setValue(this.plugin.settings.wordWrappingDefault.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("QUOTE_TRANSCLUSION_REMOVE_NAME")).setDesc(fragWithHTML(t$d("QUOTE_TRANSCLUSION_REMOVE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.removeTransclusionQuoteSigns).onChange((e=>{this.plugin.settings.removeTransclusionQuoteSigns=e,this.requestEmbedUpdate=!0,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("GET_URL_TITLE_NAME")).setDesc(fragWithHTML(t$d("GET_URL_TITLE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.iframelyAllowed).onChange((async e=>{this.plugin.settings.iframelyAllowed=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("MD_HEAD")}),this.containerEl.createEl("p",{text:t$d("MD_HEAD_DESC")}),new obsidian_module.Setting(t).setName(t$d("MD_TRANSCLUDE_WIDTH_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_WIDTH_DESC"))).addText((e=>e.setPlaceholder("Enter a number e.g. 500").setValue(this.plugin.settings.mdSVGwidth.toString()).onChange((async t=>{const A=parseInt(t);if(isNaN(A)&&""!==t)e.setValue(this.plugin.settings.mdSVGwidth.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.mdSVGwidth=500,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGwidth=A,this.requestReloadDrawings=!0,e.setValue(this.plugin.settings.mdSVGwidth.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("MD_TRANSCLUDE_HEIGHT_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_HEIGHT_DESC"))).addText((e=>e.setPlaceholder("Enter a number e.g. 800").setValue(this.plugin.settings.mdSVGmaxHeight.toString()).onChange((async t=>{const A=parseInt(t);if(isNaN(A)&&""!==t)e.setValue(this.plugin.settings.mdSVGmaxHeight.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.mdSVGmaxHeight=800,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGmaxHeight=A,this.requestReloadDrawings=!0,e.setValue(this.plugin.settings.mdSVGmaxHeight.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("MD_DEFAULT_FONT_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_FONT_DESC"))).addDropdown((async e=>{e.addOption("Virgil","Virgil"),e.addOption("Cascadia","Cascadia"),this.app.vault.getFiles().filter((e=>["ttf","woff","woff2"].contains(e.extension))).forEach((t=>{e.addOption(t.path,t.name)})),e.setValue(this.plugin.settings.mdFont).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFont=e,this.applySettingsUpdate(!0)}))})),new obsidian_module.Setting(t).setName(t$d("MD_DEFAULT_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_COLOR_DESC"))).addText((e=>e.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdFontColor).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFontColor=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("MD_DEFAULT_BORDER_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_BORDER_COLOR_DESC"))).addText((e=>e.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdBorderColor).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdBorderColor=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("MD_CSS_NAME")).setDesc(fragWithHTML(t$d("MD_CSS_DESC"))).addText((e=>e.setPlaceholder("filename of css file in vault").setValue(this.plugin.settings.mdCSS).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdCSS=e,this.applySettingsUpdate(!0)})))),this.containerEl.createEl("h1",{text:t$d("EMBED_HEAD")}),new obsidian_module.Setting(t).setName(t$d("EMBED_PREVIEW_SVG_NAME")).setDesc(fragWithHTML(t$d("EMBED_PREVIEW_SVG_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.displaySVGInPreview).onChange((async e=>{this.plugin.settings.displaySVGInPreview=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EMBED_REUSE_EXPORTED_IMAGE_NAME")).setDesc(fragWithHTML(t$d("EMBED_REUSE_EXPORTED_IMAGE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.displayExportedImageIfAvailable).onChange((async e=>{this.plugin.settings.displayExportedImageIfAvailable=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("PREVIEW_MATCH_OBSIDIAN_NAME")).setDesc(fragWithHTML(t$d("PREVIEW_MATCH_OBSIDIAN_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.previewMatchObsidianTheme).onChange((async e=>{this.plugin.settings.previewMatchObsidianTheme=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EMBED_WIDTH_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIDTH_DESC"))).addText((e=>e.setPlaceholder("400").setValue(this.plugin.settings.width).onChange((async e=>{this.plugin.settings.width=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(t).setName(t$d("EMBED_TYPE_NAME")).setDesc(fragWithHTML(t$d("EMBED_TYPE_DESC"))).addDropdown((async e=>{l=e,l.addOption("excalidraw","excalidraw"),this.plugin.settings.autoexportPNG?l.addOption("PNG","PNG"):"PNG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),this.plugin.settings.autoexportSVG?l.addOption("SVG","SVG"):"SVG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),l.setValue(this.plugin.settings.embedType).onChange((async e=>{this.plugin.settings.embedType=e,this.applySettingsUpdate()}))})),new obsidian_module.Setting(t).setName(t$d("EMBED_WIKILINK_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIKILINK_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.embedWikiLink).onChange((async e=>{this.plugin.settings.embedWikiLink=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_PNG_SCALE_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_SCALE_DESC"))).addSlider((e=>e.setLimits(1,5,.5).setValue(this.plugin.settings.pngExportScale).onChange((async e=>{c.innerText=` ${e.toString()}`,this.plugin.settings.pngExportScale=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{c=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.pngExportScale.toString()}`})),new obsidian_module.Setting(t).setName(t$d("EXPORT_BACKGROUND_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BACKGROUND_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.exportWithBackground).onChange((async e=>{this.plugin.settings.exportWithBackground=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_PADDING_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PADDING_DESC"))).addSlider((e=>e.setLimits(0,50,5).setValue(this.plugin.settings.exportPaddingSVG).onChange((async e=>{d.innerText=` ${e.toString()}`,this.plugin.settings.exportPaddingSVG=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{d=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.exportPaddingSVG.toString()}`})),new obsidian_module.Setting(t).setName(t$d("EXPORT_THEME_NAME")).setDesc(fragWithHTML(t$d("EXPORT_THEME_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.exportWithTheme).onChange((async e=>{this.plugin.settings.exportWithTheme=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),this.containerEl.createEl("h1",{text:t$d("EXPORT_HEAD")}),new obsidian_module.Setting(t).setName(t$d("EXPORT_SYNC_NAME")).setDesc(fragWithHTML(t$d("EXPORT_SYNC_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.keepInSync).onChange((async e=>{this.plugin.settings.keepInSync=e,this.applySettingsUpdate()}))));const h=e=>{let t=0;for(t=0;te.setValue(this.plugin.settings.autoexportSVG).onChange((async e=>{e?l.addOption("SVG","SVG"):("SVG"===this.plugin.settings.embedType&&(l.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),h("SVG")),this.plugin.settings.autoexportSVG=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_PNG_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoexportPNG).onChange((async e=>{e?l.addOption("PNG","PNG"):("PNG"===this.plugin.settings.embedType&&(l.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),h("PNG")),this.plugin.settings.autoexportPNG=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_BOTH_DARK_AND_LIGHT_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BOTH_DARK_AND_LIGHT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoExportLightAndDark).onChange((async e=>{this.plugin.settings.autoExportLightAndDark=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("COMPATIBILITY_HEAD")}),new obsidian_module.Setting(t).setName(t$d("COMPATIBILITY_MODE_NAME")).setDesc(fragWithHTML(t$d("COMPATIBILITY_MODE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.compatibilityMode).onChange((async e=>{this.plugin.settings.compatibilityMode=e,n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("EXPORT_EXCALIDRAW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoexportExcalidraw).onChange((async e=>{this.plugin.settings.autoexportExcalidraw=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("SYNC_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("SYNC_EXCALIDRAW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.syncExcalidraw).onChange((async e=>{this.plugin.settings.syncExcalidraw=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("NONSTANDARD_HEAD")}),this.containerEl.createEl("p",{text:t$d("NONSTANDARD_DESC")}),new obsidian_module.Setting(t).setName(t$d("CUSTOM_PEN_NAME")).setDesc(t$d("CUSTOM_PEN_DESC")).addDropdown((e=>e.addOption("0","0").addOption("1","1").addOption("2","2").addOption("3","3").addOption("4","4").addOption("5","5").addOption("6","6").addOption("7","7").addOption("8","8").addOption("9","9").addOption("10","10").setValue(this.plugin.settings.numberOfCustomPens.toString()).onChange((e=>{this.plugin.settings.numberOfCustomPens=parseInt(e),this.requestUpdatePinnedPens=!0,this.applySettingsUpdate(!1)})))),new obsidian_module.Setting(t).setName(t$d("ENABLE_FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("ENABLE_FOURTH_FONT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalEnableFourthFont).onChange((async e=>{this.requestReloadDrawings=!0,this.plugin.settings.experimentalEnableFourthFont=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("FOURTH_FONT_DESC"))).addDropdown((async e=>{e.addOption("Virgil","Virgil"),this.app.vault.getFiles().filter((e=>["ttf","woff","woff2"].contains(e.extension))).forEach((t=>{e.addOption(t.path,t.name)})),e.setValue(this.plugin.settings.experimantalFourthFont).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.experimantalFourthFont=e,this.applySettingsUpdate(!0),this.plugin.initializeFourthFont()}))})),this.containerEl.createEl("h1",{text:t$d("EXPERIMENTAL_HEAD")}),this.containerEl.createEl("p",{text:t$d("EXPERIMENTAL_DESC")}),new obsidian_module.Setting(t).setName(t$d("MATHJAX_NAME")).setDesc(t$d("MATHJAX_DESC")).addDropdown((e=>{e.addOption("https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js","jsdelivr").addOption("https://unpkg.com/mathjax@3.2.1/es5/tex-svg.js","unpkg").addOption("https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.1/es5/tex-svg-full.min.js","cdnjs").setValue(this.plugin.settings.mathjaxSourceURL).onChange((e=>{this.plugin.settings.mathjaxSourceURL=e,this.reloadMathJax=!0,this.applySettingsUpdate()}))})),new obsidian_module.Setting(t).setName(t$d("LATEX_DEFAULT_NAME")).setDesc(fragWithHTML(t$d("LATEX_DEFAULT_DESC"))).addText((e=>e.setValue(this.plugin.settings.latexBoilerplate).onChange((e=>{this.plugin.settings.latexBoilerplate=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FIELD_SUGGESTER_NAME")).setDesc(fragWithHTML(t$d("FIELD_SUGGESTER_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.fieldSuggester).onChange((async e=>{this.plugin.settings.fieldSuggester=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILETYPE_NAME")).setDesc(fragWithHTML(t$d("FILETYPE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalFileType).onChange((async e=>{this.plugin.settings.experimentalFileType=e,this.plugin.experimentalFileTypeDisplayToggle(e),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILETAG_NAME")).setDesc(fragWithHTML(t$d("FILETAG_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.experimentalFileTag).onChange((async e=>{this.plugin.settings.experimentalFileTag=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("LIVEPREVIEW_NAME")).setDesc(fragWithHTML(t$d("LIVEPREVIEW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalLivePreview).onChange((async e=>{this.plugin.settings.experimentalLivePreview=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h2",{text:t$d("TASKBONE_HEAD")}),this.containerEl.createEl("p",{text:t$d("TASKBONE_DESC")}),new obsidian_module.Setting(t).setName(t$d("TASKBONE_ENABLE_NAME")).setDesc(fragWithHTML(t$d("TASKBONE_ENABLE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.taskboneEnabled).onChange((async e=>{if(u.setDisabled(!e),this.plugin.settings.taskboneEnabled=e,""===this.plugin.settings.taskboneAPIkey){const e=await this.plugin.taskbone.initialize(!1);e&&u.setValue(e)}this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("TASKBONE_APIKEY_NAME")).setDesc(fragWithHTML(t$d("TASKBONE_APIKEY_DESC"))).addText((e=>{u=e,u.setValue(this.plugin.settings.taskboneAPIkey).onChange((async e=>{this.plugin.settings.taskboneAPIkey=e,this.applySettingsUpdate()})).setDisabled(!this.plugin.settings.taskboneEnabled)}));const g=null===(e=this.plugin.scriptEngine.getListofScripts())||void 0===e?void 0:e.map((e=>this.plugin.scriptEngine.getScriptName(e)));if(Object.keys(this.plugin.settings.scriptEngineSettings).length>0&&g){const e=(e,t)=>{const A=this.plugin.settings.scriptEngineSettings[e][t];return"object"==typeof A?A.height:null},A=(e,t)=>{const A=this.plugin.settings.scriptEngineSettings[e][t];return"object"==typeof A?A.value:A},i=(e,t,A)=>{"object"==typeof this.plugin.settings.scriptEngineSettings[e][t]?this.plugin.settings.scriptEngineSettings[e][t].value=A:this.plugin.settings.scriptEngineSettings[e][t]=A},n=(e,n,a)=>{new obsidian_module.Setting(t).setName(n).setDesc(fragWithHTML(null!=a?a:"")).addToggle((t=>t.setValue(A(e,n)).onChange((async t=>{i(e,n,t),this.applySettingsUpdate()}))))},a=(n,a,r,s)=>{s&&"[object Array]"===Object.prototype.toString.call(s)&&s.length>0?new obsidian_module.Setting(t).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addDropdown((e=>{s.forEach((t=>e.addOption(t.toString(),t.toString()))),e.setValue(A(n,a)).onChange((async e=>{i(n,a,e),this.applySettingsUpdate()}))})):e(n,a)?new obsidian_module.Setting(t).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addTextArea((t=>{t.inputEl.style.minHeight=e(n,a),t.inputEl.style.minWidth="400px",t.setValue(A(n,a)).onChange((async e=>{i(n,a,e),this.applySettingsUpdate()}))})):new obsidian_module.Setting(t).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addText((e=>e.setValue(A(n,a)).onChange((async e=>{i(n,a,e),this.applySettingsUpdate()}))))},r=(e,n,a)=>{new obsidian_module.Setting(t).setName(n).setDesc(fragWithHTML(null!=a?a:"")).addText((t=>t.setPlaceholder("Enter a number").setValue(A(e,n).toString()).onChange((async a=>{const r=parseFloat(a);isNaN(r)&&""!==a?t.setValue(A(e,n).toString()):(i(e,n,isNaN(r)?0:r),this.applySettingsUpdate())}))))};this.containerEl.createEl("h1",{text:t$d("SCRIPT_SETTINGS_HEAD")}),Object.keys(this.plugin.settings.scriptEngineSettings).filter((e=>g.contains(e))).forEach((e=>{const t=this.plugin.settings.scriptEngineSettings[e],A=Object.values(t);0===A.length||A.length>0&&0===A.map((e=>e.hidden?0:1)).reduce(((e,t)=>e+t))||(this.containerEl.createEl("h3",{text:e}),Object.keys(t).forEach((A=>{var i;const s=t[A];switch(typeof(null!==(i=s.value)&&void 0!==i?i:s)){case"boolean":s.hidden||n(e,A,s.description);break;case"string":s.hidden||a(e,A,s.description,s.valueset);break;case"number":s.hidden||r(e,A,s.description)}})))}))}}}var openDialogAction;!function(e){e[e.openFile=0]="openFile",e[e.insertLinkToDrawing=1]="insertLinkToDrawing"}(openDialogAction||(openDialogAction={}));class OpenFileDialog extends obsidian_module.FuzzySuggestModal{constructor(e,t){super(e),this.app=e,this.action=openDialogAction.openFile,this.plugin=t,this.onNewPane=!1,this.limit=20,this.setInstructions([{command:t$d("TYPE_FILENAME"),purpose:""}]),this.inputEl.onkeyup=e=>{"Enter"==e.key&&this.action==openDialogAction.openFile&&this.containerEl.innerText.includes(EMPTY_MESSAGE)&&(this.plugin.createAndOpenDrawing(`${this.plugin.settings.folder}/${this.inputEl.value}.excalidraw.md`,this.onNewPane?"new-pane":"active-pane"),this.close())}}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>this.plugin.isExcalidrawFile(e)))}getItemText(e){return e.path}onChooseItem(e){switch(this.action){case openDialogAction.openFile:this.plugin.openDrawing(e,this.onNewPane?"new-pane":"active-pane",!0);break;case openDialogAction.insertLinkToDrawing:this.plugin.embedDrawing(e)}}start(e,t){switch(this.action=e,this.onNewPane=t,e){case openDialogAction.openFile:this.emptyStateText=EMPTY_MESSAGE,this.setPlaceholder(t$d("SELECT_FILE_OR_TYPE_NEW"));break;case openDialogAction.insertLinkToDrawing:this.emptyStateText=t$d("NO_MATCH"),this.setPlaceholder(t$d("SELECT_TO_EMBED"))}this.open()}}class InsertLinkDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e),this.app=e,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_FILE_TO_LINK")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return this.app.metadataCache.getLinkSuggestions().filter((e=>!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path+(e.alias?`|${e.alias}`:"")}onChooseItem(e){let t=e.path;e.file&&(t=this.app.metadataCache.fileToLinktext(e.file,this.drawingPath,!0)),this.addText(`[[${t+(e.alias?`|${e.alias}`:"")}]]`)}start(e,t){this.addText=t,this.drawingPath=e,this.open()}}class InsertImageDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE_WITH_OPTION_TO_SCALE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_DRAWING")),this.emptyStateText=t$d("NO_MATCH"),this.inputEl.onkeyup=e=>{"Enter"===e.key&&scaleToFullsizeModifier(e)&&this.chooser.values&&(this.onChooseItem(this.chooser.values[this.chooser.selectedItem].item,new KeyboardEvent("keypress",{shiftKey:!0,metaKey:!(DEVICE.isIOS||DEVICE.isMacOS),ctrlKey:DEVICE.isIOS||DEVICE.isMacOS})),this.close())}}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>(IMAGE_TYPES.contains(e.extension)||this.plugin.isExcalidrawFile(e))&&!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path}onChooseItem(e,t){const A=this.plugin.ea.getAPI(this.view);A.canvas.theme=this.view.excalidrawAPI.getAppState().theme;const i=scaleToFullsizeModifier(t);(async()=>{await A.addImage(0,0,e,!i),A.addElementsToView(!0,!1,!0)})()}start(e){this.view=e,this.open()}}class ImportSVGDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_DRAWING")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>"svg"===e.extension&&!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path}async onChooseItem(e,t){if(!e)return;const A=this.plugin.ea;A.reset(),A.setView(this.view);const i=await app.vault.read(e);i&&""!==i&&(A.importSVG(i),A.addElementsToView(!0,!0,!0))}start(e){this.view=e,this.open()}}class InsertMDDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_MD")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>"md"===e.extension&&!this.plugin.isExcalidrawFile(e)))}getItemText(e){return e.path}onChooseItem(e){const t=this.plugin.ea;t.reset(),t.setView(this.view),(async()=>{await t.addImage(0,0,e),t.addElementsToView(!0,!1,!0)})()}start(e){this.view=e,this.open()}}function around(e,t){const A=Object.keys(t).map((A=>around1(e,A,t[A])));return 1===A.length?A[0]:function(){A.forEach((e=>e()))}}function around1(e,t,A){const i=e[t],n=e.hasOwnProperty(t);let a=A(i);return i&&Object.setPrototypeOf(a,i),Object.setPrototypeOf(r,a),e[t]=r,s;function r(...A){return a===i&&e[t]===r&&s(),a.apply(this,A)}function s(){e[t]===r&&(n?e[t]=i:delete e[t]),a!==i&&(a=i,Object.setPrototypeOf(r,i||Function))}}let plugin,vault,metadataCache;const getDefaultWidth=e=>{const t=parseInt(e.settings.width);return isNaN(t)||0===t||null===t?"400":e.settings.width},initializeMarkdownPostProcessor=e=>{plugin=e,vault=e.app.vault,metadataCache=e.app.metadataCache},getIMG=async(e,t=!1)=>{var A;let i=e.file;if(!e.file){const t=vault.getAbstractFileByPath(null===(A=e.fname)||void 0===A?void 0:A.split("#")[0]);if(!(t&&t instanceof obsidian_module.TFile))return null;i=t}const n=getEmbeddedFilenameParts(e.fname);e.style=e.style.replaceAll(" ","-");const a=hasExportTheme(plugin,i)?getExportTheme(plugin,i,"light"):void 0,r={withBackground:getWithBackground(plugin,i),withTheme:!!a||plugin.settings.exportWithTheme},s=createEl("img");let o=`max-width:${e.fwidth}${e.fwidth.match(/\d$/)?"px":""}; `;e.fheight&&(o+=`height:${e.fheight}px;`),t||s.setAttribute("style",o),s.addClass(e.style),s.addClass("excalidraw-embedded-img");const l=null!=a?a:plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":plugin.settings.exportWithTheme?void 0:"light";l&&(r.withTheme=!0);const c=new EmbeddedFilesLoader(plugin,l?"dark"===l:void 0);if(!plugin.settings.displaySVGInPreview){const t=parseInt(e.fwidth),A=t>=2400?5:t>=1800?4:t>=1200?3:t>=600?2:1,a=n.hasGroupref?void 0:await getQuickImagePreview(plugin,i.path,"png"),o=null!=a?a:await createPNG(n.hasGroupref?n.filepath+n.linkpartReference:i.path,A,r,c,l,null,null,[],plugin,0);return o?(s.src=URL.createObjectURL(o),s):null}if(!n.hasBlockref&&!n.hasSectionref){const e=await getQuickImagePreview(plugin,i.path,"svg");if(e)return s.setAttribute("src",svgToBase64(e)),s}const d=(await createSVG(n.hasGroupref||n.hasBlockref||n.hasSectionref?n.filepath+n.linkpartReference:i.path,!0,r,c,l,null,null,[],plugin,0,getExportPadding(plugin,i))).outerHTML;let h=null;const u=document.createElement("div");u.innerHTML=d;const g=u.firstChild;return g instanceof SVGSVGElement&&(h=g),h?(h=embedFontsInSVG(h,plugin),h.removeAttribute("width"),h.removeAttribute("height"),s.setAttribute("src",svgToBase64(h.outerHTML)),s):null},createImgElement=async(e,t=!1)=>{const A=await getIMG(e,t);let i;A.setAttribute("fileSource",e.fname),e.fwidth&&A.setAttribute("w",e.fwidth),e.fheight&&A.setAttribute("h",e.fheight),A.setAttribute("draggable","false"),A.setAttribute("onCanvas",t?"true":"false");const n=e=>{if(e.target instanceof Element&&"img"!=e.target.tagName.toLowerCase())return;const t=A.getAttribute("fileSource");if(t){const A=t.match(/([^#]*)(.*)/);if(!A)return;plugin.openDrawing(vault.getAbstractFileByPath(A[1]),linkClickModifierType(e),!0,A[2])}};let a;return A.addEventListener("pointermove",(e=>{i&&(Math.abs(e.screenX-a.screenX)>10||Math.abs(e.screenY-a.screenY)>10)&&(clearTimeout(i),i=null)})),A.addEventListener("pointerdown",(e=>{var t;(null===(t=null==A?void 0:A.parentElement)||void 0===t?void 0:t.hasClass("canvas-node-content"))||(i=setTimeout((()=>n(e)),500),a=e)})),A.addEventListener("pointerup",(()=>{i&&clearTimeout(i),i=null})),A.addEventListener("dblclick",n),A.addEventListener(RERENDER_EVENT,(async e=>{e.stopPropagation();const t=A.parentElement,i=A.style.maxWidth,n=A.style.maxHeight,a=A.getAttribute("fileSource"),r="true"===A.getAttribute("onCanvas"),s=await createImgElement({fname:a,fwidth:A.getAttribute("w"),fheight:A.getAttribute("h"),style:A.getAttribute("class")},r);t.empty(),r||(s.style.maxHeight=n,s.style.maxWidth=i),s.setAttribute("fileSource",a),t.append(s)})),A},createImageDiv=async(e,t=!1)=>{const A=await createImgElement(e,t);return createDiv(e.style,(e=>e.append(A)))},processReadingMode=async(e,t)=>{var A;for(const i of e){const e=null===(A=i.getAttribute("src"))||void 0===A?void 0:A.split("#")[0];if(!e)continue;const n=metadataCache.getFirstLinkpathDest(e,t.sourcePath);if(n&&n instanceof obsidian_module.TFile&&plugin.isExcalidrawFile(n)){if(isTextOnlyEmbed(i))continue;i.parentElement.replaceChild(await processInternalEmbed(i,n),i)}}},processInternalEmbed=async(e,t)=>{const A={fname:"",fheight:"",fwidth:"",style:""},i=e.getAttribute("src");if(!i)return;e.removeClass("markdown-embed"),e.removeClass("inline-embed"),e.addClass("media-embed"),e.addClass("image-embed"),A.fwidth=e.getAttribute("width")?e.getAttribute("width"):getDefaultWidth(plugin),A.fheight=e.getAttribute("height");let n=e.getAttribute("alt");A.style="excalidraw-svg",processAltText(i.split("#")[0],n,A);const a=getEmbeddedFilenameParts(i);return A.fname=(null==t?void 0:t.path)+(a.hasBlockref||a.hasSectionref?a.linkpartReference:""),A.file=t,await createImageDiv(A)},processAltText=(e,t,A)=>{var i,n;if(t&&!t.startsWith(e)){const a=t.match(/[^\|\d]*\|?((\d*%?)x?(\d*%?))?\|?(.*)/);A.fwidth=null!==(i=a[2])&&void 0!==i?i:A.fwidth,A.fheight=null!==(n=a[3])&&void 0!==n?n:A.fheight,a[4]&&!a[4].startsWith(e)&&(A.style=`excalidraw-svg-${a[4]}`),a[4]&&""!==a[4]||a[2]&&""!==a[2]||!a[0]||""===a[0]||(A.style=`excalidraw-svg-${a[0]}`)}},isTextOnlyEmbed=e=>{const t=e.getAttribute("src");if(!t)return!0;const A=getEmbeddedFilenameParts(t);return!(A.hasArearef||A.hasGroupref)&&(A.hasBlockref||A.hasSectionref)},tmpObsidianWYSIWYG=async(e,t)=>{const A=app.vault.getAbstractFileByPath(t.sourcePath);if(!(A instanceof obsidian_module.TFile))return;if(!plugin.isExcalidrawFile(A))return;if(t.remainingNestLevel<4)return;const i=t.containerEl;let n=i;for(;!n.hasClass("dataview")&&!n.hasClass("cm-preview-code-block")&&!n.hasClass("cm-embed-block")&&!n.hasClass("internal-embed")&&!n.hasClass("markdown-reading-view")&&!n.hasClass("markdown-embed")&&n.parentElement;)n=n.parentElement;if(n.hasClass("dataview")||n.hasClass("cm-preview-code-block")||n.hasClass("cm-embed-block"))return;const a={fname:t.sourcePath,fheight:"",fwidth:getDefaultWidth(plugin),style:"excalidraw-svg"};a.file=A;const r=n.hasClass("markdown-embed"),s=n.hasClass("markdown-reading-view");if(!n.hasClass("internal-embed")&&(r||s)){const t=Boolean(e.querySelector(".frontmatter"));if(e.empty(),!t)return void(e.parentElement===i&&i.removeChild(e));n.empty();const A=n.hasClass("canvas-node-content"),s=await createImageDiv(a,A);return r?(n.removeClass("markdown-embed"),n.removeClass("inline-embed"),n.addClass("media-embed"),n.addClass("image-embed"),!A&&s.firstChild instanceof HTMLElement&&(s.firstChild.style.maxHeight="100%",s.firstChild.style.maxWidth=null),void n.appendChild(s.firstChild)):void n.appendChild(s)}if(isTextOnlyEmbed(n))return;if(e.empty(),n.hasAttribute("ready"))return;n.setAttribute("ready",""),n.empty();const o=await processInternalEmbed(n,A);n.appendChild(o);let l=null;const c=new MutationObserver((e=>{var t;["alt","width","height"].contains(null===(t=e[0])||void 0===t?void 0:t.attributeName)&&(l&&clearTimeout(l),l=setTimeout((async()=>{l=null,n.empty();const e=await processInternalEmbed(n,A);n.appendChild(e)}),500))}));c.observe(n,{attributes:!0})},markdownPostProcessor=async(e,t)=>{var A;const i=e.querySelectorAll(".internal-embed");0!==i.length?Boolean(null===(A=t.frontmatter)||void 0===A?void 0:A.hasOwnProperty("excalidraw-plugin"))?e.style.display="none":await processReadingMode(i,t):tmpObsidianWYSIWYG(e,t)},hoverEvent=e=>{e.linktext?(plugin.hover.linkText=e.linktext,plugin.hover.sourcePath=e.sourcePath):plugin.hover.linkText=null},observer=new MutationObserver((async e=>{if(0==e.length)return;if(!plugin.hover.linkText)return;const t=metadataCache.getFirstLinkpathDest(plugin.hover.linkText,plugin.hover.sourcePath?plugin.hover.sourcePath:"");if(!t)return;if(!(t instanceof obsidian_module.TFile))return;if("excalidraw"!==t.extension)return;const A=getIMGFilename(t.path,"svg"),i=vault.getAbstractFileByPath(A);if(i&&i instanceof obsidian_module.TFile)return;const n=getIMGFilename(t.path,"png"),a=vault.getAbstractFileByPath(n);if(a&&a instanceof obsidian_module.TFile)return;if(!plugin.hover.linkText)return;if(1!=e.length)return;if(1!=e[0].addedNodes.length)return;if("popover hover-popover file-embed is-loaded"!=!e[0].addedNodes[0].classNames)return;const r=e[0].addedNodes[0];r.empty();const s=await getIMG({file:t,fname:t.path,fwidth:"300",fheight:null,style:"excalidraw-svg"}),o=createDiv("",(async e=>{e.appendChild(s),e.setAttribute("src",t.path),e.onClickEvent((t=>{t.stopImmediatePropagation();const A=e.getAttribute("src");A&&plugin.openDrawing(vault.getAbstractFileByPath(A),linkClickModifierType(t))}))}));r.appendChild(o)})),EXCALIDRAW_AUTOMATE_INFO=[{field:"plugin",code:null,desc:"The ExcalidrawPlugin object",after:""},{field:"elementsDict",code:null,desc:"The {} dictionary object, contains the ExcalidrawElements currently edited in Automate indexed by el.id",after:'[""]'},{field:"imagesDict",code:null,desc:"the images files including DataURL, indexed by fileId",after:'[""]'},{field:"style.strokeColor",code:"[string]",desc:"A valid css color. See W3 School Colors for more.",after:""},{field:"style.backgroundColor",code:"[string]",desc:"A valid css color. See W3 School Colors for more.",after:""},{field:"style.angle",code:"[number]",desc:"Rotation of the object in radian",after:""},{field:"style.fillStyle",code:"[string]",desc:"'hachure' | 'cross-hatch' | 'solid'",after:""},{field:"style.strokeWidth",code:"[number]",desc:null,after:""},{field:"style.strokeStyle",code:"[string]",desc:"'solid' | 'dashed' | 'dotted'",after:""},{field:"style.roughness",code:"[number]",desc:"0:Architect\n1:Artist\n2:Cartoonist",after:""},{field:"style.opacity",code:"[number]",desc:"100: Fully opaque\n0: Fully transparent",after:""},{field:"style.roundness",code:"[null | { type: RoundnessType; value?: number };]",desc:"set to null for 'sharp', else the stroke will be 'round'
type: 1==LEGACY,
2==PROPORTIONAL RADIUS,
3==ADAPTIVE RADIUS, value: adaptive factor defaults to 32",after:""},{field:"style.fontFamily",code:"[number]",desc:"1: Virgil, 2:Helvetica, 3:Cascadia, 4:LocalFont",after:""},{field:"style.fontSize",code:"[number]",desc:null,after:""},{field:"style.textAlign",code:"[string]",desc:"'left' | 'right' | 'center'",after:""},{field:"style.verticalAlign",code:"[string]",desc:"For future use, has no effect currently; 'top' | 'bottom' | 'middle'",after:""},{field:"style.startArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"style.endArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"canvas.theme",code:"[string]",desc:"'dark' | 'light'",after:""},{field:"canvas.viewBackgroundColor",code:"[string]",desc:"A valid css color.\nSee W3 School Colors for more.",after:""},{field:"canvas.gridSize",code:"[number]",desc:null,after:""},{field:"setStrokeSharpness",code:"setStrokeSharpness(sharpness: number): void;",desc:"Set ea.style.roundness. 0: is the legacy value, 3: is the current default value, null is sharp",after:""},{field:"addToGroup",code:"addToGroup(objectIds: []): string;",desc:null,after:""},{field:"toClipboard",code:"toClipboard(templatePath?: string): void;",desc:"Copies current elements using template to clipboard, ready to be pasted into an excalidraw canvas",after:""},{field:"getSceneFromFile",code:"async getSceneFromFile(file: TFile): Promise<{elements: ExcalidrawElement[]; appState: AppState;}>;",desc:"returns the elements and appState from a file, if the file is not an excalidraw file, it will return null",after:""},{field:"getElements",code:"getElements(): ExcalidrawElement[];",desc:"Get all elements from ExcalidrawAutomate elementsDict",after:""},{field:"getElement",code:"getElement(id: string): ExcalidrawElement;",desc:"Get single element from ExcalidrawAutomate elementsDict",after:""},{field:"create",code:'create(params?: {filename?: string, foldername?: string, templatePath?: string, onNewPane?: boolean, frontmatterKeys?: { "excalidraw-plugin"?: "raw" | "parsed", "excalidraw-link-prefix"?: string, "excalidraw-link-brackets"?: boolean, "excalidraw-url-prefix"?: string,},}): Promise;',desc:"Create a drawing and save it to filename.\nIf filename is null: default filename as defined in Excalidraw settings.\nIf folder is null: default folder as defined in Excalidraw settings\n",after:""},{field:"createSVG",code:"createSVG(templatePath?: string, embedFont?: boolean, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,): Promise;",desc:"Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"createPNG",code:"createPNG(templatePath?: string, scale?: number, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,): Promise;",desc:"Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"wrapText",code:"wrapText(text: string, lineLen: number): string;",desc:null,after:""},{field:"addRect",code:"addRect(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addDiamond",code:"addDiamond(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addEllipse",code:"addEllipse(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addBlob",code:"addBlob(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"refreshTextElementSize",code:"refreshTextElementSize(id: string);",desc:"Refreshes the size of the text element. Intended to be used when you copyViewElementsToEAforEditing() and then change the text in a text element and want to update the size of the text element to fit the modifid contents.",after:""},{field:"addText",code:'addText(topX: number, topY: number, text: string, formatting?: {wrapAt?: number; width?: number; height?: number; textAlign?: "left" | "center" | "right"; textVerticalAlign: "top" | "middle" | "bottom"; box?: boolean | "box" | "blob" | "ellipse" | "diamond"; boxPadding?: number; boxStrokeColor?: string;}, id?: string,): string;',desc:"If box is !null, then text will be boxed\nThe function returns the id of the TextElement. If the text element is boxed i.e. it is a sticky note, then the id of the container object",after:""},{field:"addLine",code:"addLine(points: [[x: number, y: number]]): string;",desc:null,after:""},{field:"addArrow",code:"addArrow(points: [[x: number, y: number]], formatting?: { startArrowHead?: string; endArrowHead?: string; startObjectId?: string; endObjectId?: string;},): string;",desc:null,after:""},{field:"addImage",code:"addImage(topX: number, topY: number, imageFile: TFile, scale: boolean): Promise;",desc:"set scale to false if you want to embed the image at 100% of its original size. Default is true which will insert a scaled image",after:""},{field:"addLaTex",code:"addLaTex(topX: number, topY: number, tex: string): Promise;",desc:null,after:""},{field:"connectObjects",code:"connectObjects(objectA: string, connectionA: ConnectionPoint, objectB: string, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): string;",desc:'type ConnectionPoint = "top" | "bottom" | "left" | "right" | null\nWhen null is passed as ConnectionPoint then Excalidraw will automatically decide\nnumberOfPoints is the number of points on the line. Default is 0 i.e. line will only have a start and end point.\nArrowHead: "triangle"|"dot"|"arrow"|"bar"|null',after:""},{field:"addLabelToLine",code:"addLabelToLine(lineId: string, label: string): string;",desc:"Adds a text label to a line or arrow. Currently only works with a simple straight 2-point (start & end) line",after:""},{field:"clear",code:"clear(): void;",desc:"Clears elementsDict and imagesDict only",after:""},{field:"reset",code:"reset(): void;",desc:"clear() + reset all style values to default",after:""},{field:"isExcalidrawFile",code:"isExcalidrawFile(f: TFile): boolean;",desc:"Returns true if MD file is an Excalidraw file",after:""},{field:"targetView",code:"targetView: ExcalidrawView;",desc:"The Obsidian view currently edited",after:""},{field:"setView",code:'setView(view: ExcalidrawView | "first" | "active"): ExcalidrawView;',desc:null,after:""},{field:"getExcalidrawAPI",code:"getExcalidrawAPI(): any;",desc:"Excalidraw API",after:""},{field:"getViewElements",code:"getViewElements(): ExcalidrawElement[];",desc:"Get elements in View",after:""},{field:"deleteViewElements",code:"deleteViewElements(el: ExcalidrawElement[]): boolean;",desc:null,after:""},{field:"getViewSelectedElement",code:"getViewSelectedElement(): ExcalidrawElement;",desc:"Get the selected element in the view, if more are selected, get the first",after:""},{field:"getViewSelectedElements",code:"getViewSelectedElements(): ExcalidrawElement[];",desc:null,after:""},{field:"getViewFileForImageElement",code:"getViewFileForImageElement(el: ExcalidrawElement): TFile | null;",desc:"Returns the TFile file handle for the image element",after:""},{field:"copyViewElementsToEAforEditing",code:"copyViewElementsToEAforEditing(elements: ExcalidrawElement[]): void;",desc:"Copies elements from view to elementsDict for editing",after:""},{field:"viewToggleFullScreen",code:"viewToggleFullScreen(forceViewMode?: boolean): void;",desc:null,after:""},{field:"connectObjectWithViewSelectedElement",code:"connectObjectWithViewSelectedElement(objectA: string, connectionA: ConnectionPoint, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): boolean;",desc:"Connect an object to the selected element in the view\nSee tooltip for connectObjects for details",after:""},{field:"addElementsToView",code:"addElementsToView(repositionToCursor?: boolean, save?: boolean, newElementsOnTop?: boolean,): Promise;",desc:"Adds elements from elementsDict to the current view\nrepositionToCursor: default is false\nsave: default is true\nnewElementsOnTop: default is false, i.e. the new elements get to the bottom of the stack\nnewElementsOnTop controls whether elements created with ExcalidrawAutomate are added at the bottom of the stack or the top of the stack of elements already in the view\nNote that elements copied to the view with copyViewElementsToEAforEditing retain their position in the stack of elements in the view even if modified using EA",after:""},{field:"onDropHook",code:'onDropHook(data: {ea: ExcalidrawAutomate, event: React.DragEvent, draggable: any, type: "file" | "text" | "unknown", payload: {files: TFile[], text: string,}, excalidrawFile: TFile, view: ExcalidrawView, pointerPosition: { x: number, y: number},}): boolean;',desc:"If set Excalidraw will call this function onDrop events.\nA return of true will stop the default onDrop processing in Excalidraw.\n\ndraggable is the Obsidian draggable object\nfiles is the array of dropped files\nexcalidrawFile is the file receiving the drop event\nview is the excalidraw view receiving the drop.\npointerPosition is the pointer position on canvas at the time of drop.",after:""},{field:"mostRecentMarkdownSVG",code:"mostRecentMarkdownSVG: SVGSVGElement;",desc:"Markdown renderer will drop a copy of the most recent SVG here for debugging purposes",after:""},{field:"getEmbeddedFilesLoader",code:"getEmbeddedFilesLoader(isDark?: boolean): EmbeddedFilesLoader;",desc:"Utility function to generate EmbeddedFilesLoader object",after:""},{field:"getExportSettings",code:"getExportSettings(withBackground: boolean, withTheme: boolean,): ExportSettings;",desc:"Utility function to generate ExportSettings object",after:""},{field:"getBoundingBox",code:"getBoundingBox(elements: ExcalidrawElement[]): {topX: number, topY: number, width: number, height: number,};",desc:"Gets the bounding box of elements. The bounding box is the box encapsulating all of the elements completely.",after:""},{field:"getMaximumGroups",code:"getMaximumGroups(elements: ExcalidrawElement[]): ExcalidrawElement[][];",desc:"Elements grouped by the highest level groups",after:""},{field:"getLargestElement",code:"getLargestElement(elements: ExcalidrawElement[]): ExcalidrawElement;",desc:"Gets the largest element from a group. useful when a text element is grouped with a box, and you want to connect an arrow to the box",after:""},{field:"intersectElementWithLine",code:"intersectElementWithLine(element: ExcalidrawBindableElement, a: readonly [number, number], b: readonly [number, number], gap?: number,): Point[];",desc:"If gap is given, the element is inflated by this value.\nReturns 2 or 0 intersection points between line going through `a` and `b` and the `element`, in ascending order of distance from `a`.",after:""},{field:"getCommonGroupForElements",code:"getCommonGroupForElements(elements: ExcalidrawElement[]): string;",desc:"Gets the groupId for the group that contains all the elements, or null if such a group does not exist",after:""},{field:"getElementsInTheSameGroupWithElement",code:"getElementsInTheSameGroupWithElement(element: ExcalidrawElement, elements: ExcalidrawElement[]): ExcalidrawElement[];",desc:"Gets all the elements from elements[] that share one or more groupIds with element.",after:""},{field:"activeScript",code:"activeScript: string;",desc:"Mandatory to set before calling the get and set ScriptSettings functions. Set automatically by the ScriptEngine\nSee for more details: Script Engine Help",after:""},{field:"getScriptSettings",code:"getScriptSettings(): {};",desc:"Returns script settings. Saves settings in plugin settings, under the activeScript key. See for more details: Script Engine Help",after:""},{field:"setScriptSettings",code:"setScriptSettings(settings: any): Promise;",desc:"Sets script settings.\nSee for more details: Script Engine Help",after:""},{field:"openFileInNewOrAdjacentLeaf",code:"openFileInNewOrAdjacentLeaf(file: TFile): WorkspaceLeaf;",desc:"Open a file in a new workspaceleaf or reuse an existing adjacent leaf depending on Excalidraw Plugin Settings",after:""},{field:"measureText",code:"measureText(text: string): { width: number; height: number };",desc:"Measures text size based on current style settings",after:""},{field:"verifyMinimumPluginVersion",code:"verifyMinimumPluginVersion(requiredVersion: string): boolean;",desc:'Returns true if plugin version is >= than required\nrecommended use:\nif(!ea.verifyMinimumPluginVersion || !ea.verifyMinimumPluginVersion("1.5.20")) {new Notice("message");return;}',after:""},{field:"selectElementsInView",code:"selectElementsInView(elements: ExcalidrawElement[]):void;",desc:"Elements provided will be set as selected in the targetView.",after:""},{field:"generateElementId",code:"generateElementId(): string;",desc:"Returns an 8 character long random id",after:""},{field:"cloneElement",code:"cloneElement(element: ExcalidrawElement): ExcalidrawElement;",desc:"Returns a clone of the element with a new element id",after:""},{field:"moveViewElementToZIndex",code:"moveViewElementToZIndex(elementId:number, newZIndex:number): void;",desc:"Moves the element to a specific position in the z-index",after:""},{field:"hexStringToRgb",code:"hexStringToRgb(color: string):number[];",desc:"Converts a HEX color to an RGB number array. #FF0000 to [255,0,0]",after:""},{field:"rgbToHexString",code:"rgbToHexString(color: number[]):string;",desc:"Converts an RGB number array to a HEX string. [255,0,0] to #FF0000",after:""},{field:"hslToRgb",code:"hslToRgb(color: number[]):number[];",desc:"Converts an HSL number array to an RGB number array. [0,100,50] to [255,0,0]",after:""},{field:"rgbToHsl",code:"rgbToHsl(color:number[]):number[];",desc:"Converts an RGB number array to an HSL number array. [255,0,0] to [0,100,50]",after:""},{field:"colorNameToHex",code:"colorNameToHex(color:string):string;",desc:"Converts a CSS color name to its HEX color equivalent. 'White' to #FFFFFF",after:""},{field:"obsidian",code:"obsidian",desc:"Access functions and objects available on the Obsidian Module",after:""},{field:"setViewModeEnabled",code:"setViewModeEnabled(enabled: boolean): void;",desc:"Sets Excalidraw in the targetView to view-mode",after:""},{field:"viewUpdateScene",code:"viewUpdateScene(scene:{elements?:ExcalidrawElement[],appState?: AppState,files?: BinaryFileData,commitToHistory?: boolean,},restore:boolean=false):void",desc:"Calls the ExcalidrawAPI updateScene function for the targetView. When restore=true, excalidraw will try to correct errors in the scene such as setting default values to missing element properties.",after:""},{field:"viewZoomToElements",code:"viewZoomToElements(selectElements: boolean,elements: ExcalidrawElement[]):void",desc:"Zoom tarteView to fit elements provided as input. elements === [] will zoom to fit the entire scene. SelectElements toggles whether the elements should be in a selected state at the end of the operation.",after:""}],EXCALIDRAW_SCRIPTENGINE_INFO=[{field:"inputPrompt",code:"inputPrompt: (header: string, placeholder?: string, value?: string, buttons?: {caption:string, tooltip?:string, action:Function}[], lines?: number, displayEditorButtons?: boolean, customComponents?: (container: HTMLElement) => void, blockPointerInputOutsideModal?: boolean);",desc:"Opens a prompt that asks for an input.\nReturns a string with the input.\nYou need to await the result of inputPrompt.\nEditor buttons are text editing buttons like delete, enter, allcaps - these are only displayed if lines is greater than 1 \nCustom components are components that you can add to the prompt. These will be displayed between the text input area and the buttons.\nblockPointerInputOutsideModal will block pointer input outside the modal. This is useful if you want to prevent the user accidently closing the modal or interacting with the excalidraw canvas while the prompt is open.\nbuttons.action(input: string) => string\nThe button action function will receive the actual input string. If action returns null, input will be unchanged. If action returns a string, input will receive that value when the promise is resolved. example:\nlet fileType = '';\nconst filename = await utils.inputPrompt (\n 'Filename',\n '',\n '',\n, [\n {\n caption: 'Markdown',\n action: ()=>{fileType='md';return;}\n },\n {\n caption: 'Excalidraw',\n action: ()=>{fileType='ex';return;}\n }\n ]\n);",after:""},{field:"suggester",code:"suggester: (displayItems: string[], items: any[], hint?: string, instructions?:Instruction[]);",desc:"Opens a suggester. Displays the displayItems and returns the corresponding item from items[]\nYou need to await the result of suggester.\nIf the user cancels (ESC), suggester will return undefined\nHint and instructions are optional\n\ninterface Instruction {command: string;purpose: string;}",after:""},{field:"scriptFile",code:"scriptFile: TFile",desc:"The TFile of the currently running script",after:""}],FRONTMATTER_KEYS_INFO=[{field:"plugin",code:null,desc:"Denotes an excalidraw file. If key is not present, the file will not be recognized as an Excalidarw file. Valid values are 'parsed' and 'raw'",after:": parsed"},{field:"link-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid internal link. Set to empty string if you do not want to show a prefix",after:': "📍"'},{field:"url-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid external link. Set to empty string if you do not want to show a prefix",after:': "🌐"'},{field:"link-brackets",code:null,desc:"Set to true, if you want to display [[square brackets]] around the links in Text Elements",after:": true"},{field:"default-mode",code:null,desc:"Specifies how Excalidraw should open by default. Valid values are: view|zen",after:": view"},{field:"linkbutton-opacity",code:null,desc:"The opacity of the blue link button in the top right of the element overriding the respective setting in plugin settings. Valid values are between 0 and 1, where 0 means the button is transparent.",after:": 0.5"},{field:"onload-script",code:null,desc:"The value of this field will be executed as javascript code using the Script Engine environment. Use this to initiate custom actions or logic when loading your drawing.",after:': "new Notice(`Hello World!\\n\\nFile: ${ea.targetView.file.basename}`);"'},{field:"font",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: Virgil|Cascadia|font_file_name.extension",after:": Virgil"},{field:"font-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"border-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"css",code:null,desc:'This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this front matter keys to your markdown document. Valid values are: "css-filename|css snippet"',after:': ""'},{field:"export-transparent",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Transparent / false == with background",after:": true"},{field:"export-dark",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Dark mode / false == light mode",after:": true"},{field:"export-padding",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects both SVG and PNG export. Specify the export padding for the image.",after:": 5"},{field:"export-pngscale",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects export to PNG. Specify the export scale for the image. The typical range is between 0.5 and 5, but you can experiment with other values as well.",after:": 1"},{field:"autoexport",code:null,desc:"Override autoexport settings for this file. Valid values are\nnone\nboth\npng\nsvg",after:": png"}];class FieldSuggester extends obsidian_module.EditorSuggest{constructor(e){super(e.app),this.getSuggestions=e=>{const t=e.query.toLowerCase();return("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).map((e=>e.field)).filter((e=>e.toLowerCase().includes(t)))},this.plugin=e}onTrigger(e,t,A){var i,n,a,r,s;if(this.plugin.settings.fieldSuggester){const A=t.getLine(e.line).substring(0,e.ch),o=null!==(r=null!==(n=null===(i=A.match(/^excalidraw-(.*)$/))||void 0===i?void 0:i[1])&&void 0!==n?n:null===(a=A.match(/(^ea|\Wea)\.([\w\.]*)$/))||void 0===a?void 0:a[2])&&void 0!==r?r:null===(s=A.match(/(^utils|\Wutils)\.([\w\.]*)$/))||void 0===s?void 0:s[2];if(void 0!==o)return this.suggestType=A.match(/^excalidraw-(.*)$/)?"excalidraw":A.match(/(^ea|\Wea)\.([\w\.]*)$/)?"ea":"utils",this.latestTriggerInfo={end:e,start:{ch:e.ch-o.length,line:e.line},query:o},this.latestTriggerInfo}return null}renderSuggestion(e,t){const A=e.replace("ea"===this.suggestType?"ea.":"utils"===this.suggestType?"utils.":"excalidraw-",""),i=("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).find((t=>t.field===e));t.createEl("b",{text:A}),t.createEl("br"),i.code&&t.createEl("code",{text:i.code}),i.desc&&t.createDiv("div",(e=>e.innerHTML=i.desc))}selectSuggestion(e){var t;const{context:A}=this;if(A){const i="ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO,n=`${e}${null===(t=i.find((t=>t.field===e)))||void 0===t?void 0:t.after}`;if(A.editor.replaceRange(n,this.latestTriggerInfo.start,this.latestTriggerInfo.end),this.latestTriggerInfo.start.ch===this.latestTriggerInfo.end.ch){const e=this.latestTriggerInfo.end;e.ch+=n.length,A.editor.setCursor(e)}}}}class FrontmatterEditor{constructor(e){this.initialized=!1,this.dataWOfrontmatter=e;const t=(e=e.replaceAll("\r\n","\n").replaceAll("\r","\n")).split(/^---(?:.|\n)*(?:^---\n)/gm);2===t.length&&(this.dataWOfrontmatter=t[1],this.frontmatterStr=e.match(/^---((?:.|\n)*)(?:^---\n)/gm)[0].replaceAll(/(^---\n|^\n)/gm,"").trim()+"\n",this.initialized=!0)}hasKey(e){if(!this.initialized)return!1;const t=new RegExp(`^${e}:`,"gm");return Boolean(this.frontmatterStr.match(t))}setKey(e,t){if(this.initialized)if(t=t.replaceAll("\r\n","\n").replaceAll("\r","\n").replaceAll(":",";").trim().split("\n").join(" "),this.hasKey(e)){const A=new RegExp(`^${e}:.*\\n(?:\\s\\s.*\\n)*`,"gm");this.frontmatterStr=this.frontmatterStr.split(A).join("\n").trim()+`\n${e}: ${t}`}else this.frontmatterStr=this.frontmatterStr.trim()+`\n${e}: ${t}`}get data(){return this.initialized?["---",this.frontmatterStr,"---",this.dataWOfrontmatter].join("\n"):this.dataWOfrontmatter}}const TASKBONE_URL="https://api.taskbone.com/",TASKBONE_OCR_FN="execute?id=60f394af-85f6-40bc-9613-5d26dc283cbb";class Taskbone{get apiKey(){return this.plugin.settings.taskboneAPIkey}constructor(e){this.plugin=e}async initialize(e=!0){var t;if(""!==this.plugin.settings.taskboneAPIkey)return;const A=await obsidian_module.requestUrl({url:`${TASKBONE_URL}users/excalidraw-obsidian/identities`,method:"post",contentType:"application/json",throw:!1});if(!A)return;const i=null===(t=A.json)||void 0===t?void 0:t.apiKey;return i&&"string"==typeof i&&(e&&await this.plugin.loadSettings(),this.plugin.settings.taskboneAPIkey=i,e&&await this.plugin.saveSettings()),i}async getTextForView(e,t){await e.forceSave(!0);const A=e.excalidrawAPI.getSceneElements().filter((t=>{var A;return"freedraw"===t.type||"image"===t.type&&!this.plugin.isExcalidrawFile(null===(A=e.excalidrawData.getFile(t.fileId))||void 0===A?void 0:A.file)}));if(0===A.length)return void new obsidian_module.Notice("Aborting OCR because there are no image or freedraw elements on the canvas.",4e3);const i=new FrontmatterEditor(e.data);if(i.hasKey("taskbone-ocr")&&!t)return void new obsidian_module.Notice("The drawing has already been processed, you will find the result in the frontmatter in markdown view mode. If you ran the command from the Obsidian Panel in Excalidraw then you can CTRL(CMD)+click the command to force the rescaning.",4e3);const n=this.plugin.ea.getBoundingBox(A),a=n.width*n.height,r=Math.sqrt(36e4/a),s=Math.sqrt(a/16e6),o=r>1?r:s>1?1/s:1,l=new EmbeddedFilesLoader(this.plugin,!1),c=await createPNG(e.file.path+"#^taskbone",o,{withBackground:!0,withTheme:!0},l,"light",null,null,[],this.plugin,0),d=await this.getTextForImage(c);d&&(i.setKey("taskbone-ocr",d),e.data=i.data,e.save(!1),window.navigator.clipboard.writeText(d),new obsidian_module.Notice("I placed the recognized in the drawing's frontmatter and onto the system clipboard."))}async getTextForImage(e){""===this.apiKey&&await this.initialize();const t={records:[{image:await blobToBase64(e)}]},A=await obsidian_module.requestUrl({url:"https://api.taskbone.com/execute?id=60f394af-85f6-40bc-9613-5d26dc283cbb",method:"post",contentType:"application/json",body:JSON.stringify(t),headers:{authorization:`Bearer ${this.apiKey}`},throw:!1}),i=null==A?void 0:A.json;return i&&200===A.status?i.records[0].text:(new obsidian_module.Notice("Something went wrong while processing your request. Please check developer console for more information"),void log(A))}}class ExcalidrawPlugin extends obsidian_module.Plugin{constructor(e,t){super(e,t),this.excalidrawFiles=new Set,this.excalidrawFileModes={},this._loaded=!1,this.activeExcalidrawView=null,this.lastActiveExcalidrawFilePath=null,this.hover={linkText:null,sourcePath:null},this.opencount=0,this.filesMaster=null,this.equationsMaster=null,this.mathjax=null,this.mathjaxDiv=null,this.mathjaxLoaderFinished=!1,this.fourthFontDef=VIRGIL_FONT,this.packageMap=new WeakMap,this.leafChangeTimeout=null,this.popScope=null,this.filesMaster=new Map,this.equationsMaster=new Map}getPackage(e){if(e===window)return{react:react,reactDOM:reactDOM,excalidrawLib:excalidrawLib};if(this.packageMap.has(e))return this.packageMap.get(e);const{react:t,reactDOM:A,excalidrawLib:i}=e.eval.call(e,`(function() {\n ${lzStringExports.decompressFromBase64(EXCALIDRAW_PACKAGES)};\n return {react:React,reactDOM:ReactDOM,excalidrawLib:ExcalidrawLib};\n })()`);return this.packageMap.set(e,{react:t,reactDOM:A,excalidrawLib:i}),{react:t,reactDOM:A,excalidrawLib:i}}async onload(){if(obsidian_module.addIcon(ICON_NAME,EXCALIDRAW_ICON),obsidian_module.addIcon("ScriptEngine",SCRIPTENGINE_ICON),obsidian_module.addIcon("export-img",EXPORT_IMG_ICON),await this.loadSettings({reEnableAutosave:!0}),this.addSettingTab(new ExcalidrawSettingTab(this.app,this)),this.ea=await initExcalidrawAutomate(this),this.registerView("excalidraw",(e=>new ExcalidrawView(e,this))),this.registerExtensions(["excalidraw"],"excalidraw"),this.addMarkdownPostProcessor(),this.registerInstallCodeblockProcessor(),this.addThemeObserver(),this.experimentalFileTypeDisplayToggle(this.settings.experimentalFileType),this.registerCommands(),this.registerEventListeners(),this.initializeFourthFont(),this.registerEditorSuggest(new FieldSuggester(this)),this.registerMonkeyPatches(),this.settings.showReleaseNotes){const e="0.0.0"===this.settings.previousRelease;isVersionNewerThanOther(PLUGIN_VERSION,this.settings.previousRelease)&&new ReleaseNotes(this.app,this,e?null:PLUGIN_VERSION).open()}this.switchToExcalidarwAfterLoad(),this.loadMathJax();const e=this;this.app.workspace.onLayoutReady((()=>{this.scriptEngine=new ScriptEngine(e)})),this.taskbone=new Taskbone(this)}initializeFourthFont(){this.app.workspace.onLayoutReady((async()=>{const e=await getFontDataURL(this.app,this.settings.experimantalFourthFont,"","LocalFont"),t=""===e.dataURL?VIRGIL_DATAURL:e.dataURL;this.fourthFontDef=e.fontDef;const A=new Set;app.workspace.iterateAllLeaves((e=>{const i=app.isMobile?document:e.view.containerEl.ownerDocument;if(!i)return;if(A.has(i))return;A.add(i);const n=i.createElement("style");n.id="local-font-stylesheet",n.textContent=`\n @font-face {\n font-family: 'LocalFont';\n src: url("${t}");\n font-display: swap;\n }\n `;const a=i.getElementById(n.id);i.head.appendChild(n),a&&i.head.removeChild(a),i.fonts.load("20px LocalFont")}))}))}loadMathJax(){const e=this;this.app.workspace.onLayoutReady((async()=>{await obsidian_module.loadMathJax();try{e.mathjaxDiv&&(document.body.removeChild(e.mathjaxDiv),e.mathjax=null,e.mathjaxLoaderFinished=!1),e.mathjaxDiv=document.body.createDiv(),e.mathjaxDiv.title="Excalidraw MathJax Support",e.mathjaxDiv.style.display="none";const t=e.mathjaxDiv.createEl("iframe");t.title="Excalidraw MathJax Support";const A=t.contentWindow.document,i=A.createElement("script");i.type="text/javascript",i.onload=()=>{const A=t.contentWindow;A.MathJax.startup.pagePromise.then((async()=>{const t=app.vault.getAbstractFileByPath("preamble.sty"),i=t&&t instanceof obsidian_module.TFile?await app.vault.read(t):null;try{i&&await A.MathJax.tex2svg(i)}catch(t){errorlog({where:e.loadMathJax,description:"Unexpected error while loading preamble.sty",error:t})}e.mathjax=A.MathJax,e.mathjaxLoaderFinished=!0}))},i.src=e.settings.mathjaxSourceURL,A.head.appendChild(i)}catch(t){new obsidian_module.Notice("Excalidraw: Error initializing LaTeX support"),e.mathjaxLoaderFinished=!0}}))}switchToExcalidarwAfterLoad(){const e=this;this.app.workspace.onLayoutReady((()=>{let t;for(t of app.workspace.getLeavesOfType("markdown"))t.view instanceof obsidian_module.MarkdownView&&e.isExcalidrawFile(t.view.file)&&(e.excalidrawFileModes[t.id||t.view.file.path]="excalidraw",e.setExcalidrawView(t))}))}forceSaveActiveView(e){if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.forceSave(),!0)}registerInstallCodeblockProcessor(){const e=async(e,t)=>{let A=null;try{const e=t.parentElement.querySelector(`a[href="#${t.previousElementSibling.getAttribute("data-heading")}"]`);e.style.paddingRight="10px",A=e.parentElement.createEl("button",null,(e=>{e.setText(t$d("UPDATE_SCRIPT")),e.addClass("mod-muted"),e.style.backgroundColor="var(--interactive-success)",e.style.display="none"}))}catch(t){errorlog({where:"this.registerInstallCodeblockProcessor",source:e,error:t})}e=e.trim(),t.createEl("button",null,(async t=>{var i;const n=e=>{switch(A&&(A.style.display="none"),e){case"CHECKING":t.setText(t$d("CHECKING_SCRIPT")),t.style.backgroundColor="var(--interactive-normal)";break;case"INSTALL":t.setText(t$d("INSTALL_SCRIPT")),t.style.backgroundColor="var(--interactive-accent)";break;case"UPTODATE":t.setText(t$d("UPTODATE_SCRIPT")),t.style.backgroundColor="var(--interactive-normal)";break;case"UPDATE":t.setText(t$d("UPDATE_SCRIPT")),t.style.backgroundColor="var(--interactive-success)",A&&(A.style.display=null);break;case"ERROR":t.setText(t$d("UNABLETOCHECK_SCRIPT")),t.style.backgroundColor="var(--interactive-normal)"}};t.addClass("mod-muted");let a=e;try{a=decodeURI(e)}catch(t){errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",source:e,error:t})}const r=a.substring(a.lastIndexOf("/")+1),s=`${this.settings.scriptFolderPath}/Downloaded`,o=app.vault.getFiles().filter((e=>e.path.startsWith(s)&&e.name===r)).sort(((e,t)=>e.path>t.path?1:-1));let l=o[0];const c=null!==(i=null==l?void 0:l.path)&&void 0!==i?i:`${s}/${r}`,d=getIMGFilename(c,"svg");let h=this.app.vault.getAbstractFileByPath(d);if(n(l?"CHECKING":"INSTALL"),t.onclick=async()=>{const t=async(e,t,A)=>{const i=await obsidian_module.request({url:e});return!i||i.startsWith("404: Not Found")?null:(t?await this.app.vault.modify(t,i):(await checkAndCreateFolder(s),t=await this.app.vault.create(A,i)),t)};try{if(l=await t(e,l,c),!l)throw n("ERROR"),"File not found";h=await t(getIMGFilename(e,"svg"),h,d),n("UPTODATE"),0===Object.keys(this.scriptEngine.scriptIconMap).length&&this.scriptEngine.loadScripts(),new obsidian_module.Notice(`Installed: ${l.basename}`)}catch(e){new obsidian_module.Notice(`Error installing script: ${r}`),errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",error:e})}},A&&(A.onclick=t.onclick),!(l&&l instanceof obsidian_module.TFile))return;const u=new Map;JSON.parse(await obsidian_module.request({url:"https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/directory-info.json"})).forEach((e=>u.set(e.fname,e.mtime)));const g=(e,t)=>{if(0===u.size||!u.has(e))return"ERROR";const A=u.get(e);return!t||A>t.stat.mtime?"UPDATE":"UPTODATE"},p=g(r,l),m=g(getIMGFilename(r,"svg"),h&&h instanceof obsidian_module.TFile?h:null);n("UPTODATE"===p&&"UPTODATE"===m||"UPTODATE"===p&&"ERROR"===m?"UPTODATE":"ERROR"===p?"ERROR":"UPDATE"===p||"UPDATE"===m?"UPDATE":"UPTODATE")}))};this.registerMarkdownCodeBlockProcessor(SCRIPT_INSTALL_CODEBLOCK,(async(t,A)=>{A.addEventListener(RERENDER_EVENT,(async i=>{i.stopPropagation(),A.empty(),e(t,A)})),e(t,A)}))}addMarkdownPostProcessor(){initializeMarkdownPostProcessor(this),this.registerMarkdownPostProcessor(markdownPostProcessor),this.registerEvent(this.app.workspace.on("hover-link",hoverEvent)),this.observer=observer,this.observer.observe(document,{childList:!0,subtree:!0})}addThemeObserver(){this.themeObserver=new MutationObserver((async e=>{var t,A,i,n,a,r,s,o;if(!this.settings.matchThemeTrigger)return;if((null===(t=e[0])||void 0===t?void 0:t.oldValue)===(null===(i=null===(A=e[0])||void 0===A?void 0:A.target)||void 0===i?void 0:i.getAttribute("class")))return;if((null===(a=null===(n=e[0])||void 0===n?void 0:n.oldValue)||void 0===a?void 0:a.includes("theme-dark"))===(null===(o=null===(s=null===(r=e[0])||void 0===r?void 0:r.target)||void 0===s?void 0:s.classList)||void 0===o?void 0:o.contains("theme-dark")))return;const l=isObsidianThemeDark()?"dark":"light";this.app.workspace.getLeavesOfType("excalidraw").forEach((e=>{const t=e.view;t.file&&t.excalidrawRef&&t.setTheme(l)}))})),this.themeObserver.observe(document.body,{attributeOldValue:!0,attributeFilter:["class"]})}experimentalFileTypeDisplayToggle(e){e?this.experimentalFileTypeDisplay():(this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),this.fileExplorerObserver=null)}experimentalFileTypeDisplay(){const e=e=>{if(1!=e.childElementCount)return;const t=e.getAttribute("data-path");if(!t)return;const A=this.app.vault.getAbstractFileByPath(t);A&&A instanceof obsidian_module.TFile&&this.isExcalidrawFile(A)&&e.insertBefore(createDiv({cls:"nav-file-tag",text:this.settings.experimentalFileTag}),e.firstChild)};this.fileExplorerObserver=new MutationObserver((t=>{const A=t.filter((e=>e.addedNodes.length>0));A.forEach((t=>{t.addedNodes.forEach((t=>{t instanceof Element&&t.querySelectorAll(".nav-file-title").forEach(e)}))}))}));const t=this;this.app.workspace.onLayoutReady((()=>{document.querySelectorAll(".nav-file-title").forEach(e),t.fileExplorerObserver.observe(document.querySelector(".workspace"),{childList:!0,subtree:!0})}))}registerCommands(){this.openDialog=new OpenFileDialog(this.app,this),this.insertLinkDialog=new InsertLinkDialog(this.app),this.insertImageDialog=new InsertImageDialog(this),this.importSVGDialog=new ImportSVGDialog(this),this.insertMDDialog=new InsertMDDialog(this),this.addRibbonIcon(ICON_NAME,t$d("CREATE_NEW"),(async e=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),linkClickModifierType(emulateCTRLClickForLinks(e)))})),this.registerEvent(this.app.workspace.on("file-menu",((e,t)=>{e.addItem((e=>{e.setTitle(t$d("CREATE_NEW")).setIcon(ICON_NAME).onClick((e=>{let A=t.path;t instanceof obsidian_module.TFile&&(A=obsidian_module.normalizePath(t.path.substr(0,t.path.lastIndexOf(t.name)))),this.createAndOpenDrawing(getDrawingFilename(this.settings),linkClickModifierType(emulateCTRLClickForLinks(e)),A)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((e,t)=>{t instanceof obsidian_module.TFile&&"excalidraw"==t.extension&&e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE_KEEP_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(t,!1,!1)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((e,t)=>{t instanceof obsidian_module.TFile&&"excalidraw"==t.extension&&e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE_REPLACE_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(t,!0,!0)}))}))}))),this.addCommand({id:"excalidraw-disable-autosave",name:t$d("TEMPORARY_DISABLE_AUTOSAVE"),checkCallback:e=>!!this.settings.autosave&&(e||(this.settings.autosave=!1),!0)}),this.addCommand({id:"excalidraw-enable-autosave",name:t$d("TEMPORARY_ENABLE_AUTOSAVE"),checkCallback:e=>!this.settings.autosave&&(e||(this.settings.autosave=!0),!0)}),this.addCommand({id:"excalidraw-download-lib",name:t$d("DOWNLOAD_LIBRARY"),callback:this.exportLibrary}),this.addCommand({id:"excalidraw-open",name:t$d("OPEN_EXISTING_NEW_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!0)}}),this.addCommand({id:"excalidraw-open-on-current",name:t$d("OPEN_EXISTING_ACTIVE_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!1)}}),this.addCommand({id:"excalidraw-insert-transclusion",name:t$d("TRANSCLUDE"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(this.openDialog.start(openDialogAction.insertLinkToDrawing,!1),!0)}),this.addCommand({id:"excalidraw-insert-last-active-transclusion",name:t$d("TRANSCLUDE_MOST_RECENT"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView))&&null!=this.lastActiveExcalidrawFilePath;const t=this.app.vault.getAbstractFileByPath(this.lastActiveExcalidrawFilePath);return t instanceof obsidian_module.TFile&&(this.embedDrawing(t),!0)}}),this.addCommand({id:"excalidraw-autocreate",name:t$d("NEW_IN_NEW_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"new-pane")}}),this.addCommand({id:"excalidraw-autocreate-newtab",name:t$d("NEW_IN_NEW_TAB"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"new-tab")}}),this.addCommand({id:"excalidraw-autocreate-on-current",name:t$d("NEW_IN_ACTIVE_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"active-pane")}}),this.addCommand({id:"excalidraw-autocreate-popout",name:t$d("NEW_IN_POPOUT_WINDOW"),checkCallback:e=>{if(e)return!app.isMobile;this.createAndOpenDrawing(getDrawingFilename(this.settings),"popout-window")}});const e=async e=>{const t=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(!t)return;const A=getEmbedFilename(t.file.basename,this.settings),i=this.settings.embedUseExcalidrawFolder?null:(await getAttachmentsFolderAndFilePath(this.app,t.file.path,A)).folder,n=await this.createDrawing(A,i);await this.embedDrawing(n),this.openDrawing(n,e,!0,void 0,!0)};this.addCommand({id:"excalidraw-autocreate-and-embed",name:t$d("NEW_IN_NEW_PANE_EMBED"),checkCallback:t=>t?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("new-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-new-tab",name:t$d("NEW_IN_NEW_TAB_EMBED"),checkCallback:t=>t?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("new-tab"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-on-current",name:t$d("NEW_IN_ACTIVE_PANE_EMBED"),checkCallback:t=>t?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("active-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-popout",name:t$d("NEW_IN_POPOUT_WINDOW_EMBED"),checkCallback:t=>t?!app.isMobile&&Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("popout-window"),!0)}),this.addCommand({id:"run-ocr",name:t$d("RUN_OCR"),checkCallback:e=>{const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return e?Boolean(t):!!t&&(this.settings.taskboneEnabled?(this.taskbone.getTextForView(t,!1),!0):(new obsidian_module.Notice("Taskbone OCR is not enabled. Please go to plugins settings to enable it.",4e3),!0))}}),this.addCommand({id:"search-text",name:t$d("SEARCH"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(search(t),!0)}}),this.addCommand({id:"fullscreen",name:t$d("TOGGLE_FULLSCREEN"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.isFullscreen()?t.exitFullscreen():t.gotoFullscreen(),!0)}}),this.addCommand({id:"disable-binding",name:t$d("TOGGLE_DISABLEBINDING"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.toggleDisableBinding(),!0)}}),this.addCommand({id:"export-image",name:t$d("EXPORT_IMAGE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.exportDialog||(t.exportDialog=new ExportDialog(this,t,t.file),t.exportDialog.createForm()),t.exportDialog.open(),!0)}}),this.forceSaveCommand=this.addCommand({id:"save",hotkeys:[{modifiers:["Ctrl"],key:"s"}],name:t$d("FORCE_SAVE"),checkCallback:e=>this.forceSaveActiveView(e)}),this.addCommand({id:"toggle-lock",hotkeys:[{modifiers:["Ctrl","Shift"],key:"e"}],name:t$d("TOGGLE_LOCK"),checkCallback:e=>{if(e)return!!Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))&&!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode;const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!t||t.compatibilityMode||(t.changeTextMode(t.textMode===TextMode.parsed?TextMode.raw:TextMode.parsed),0))}}),this.addCommand({id:"scriptengine-store",name:t$d("INSTALL_SCRIPT_BUTTON"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ScriptInstallPrompt(this).open(),!0)}),this.addCommand({id:"delete-file",name:t$d("DELETE_FILE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(t){this.ea.reset(),this.ea.setView(t);const e=this.ea.getViewSelectedElement();if("image"!==e.type)return new obsidian_module.Notice("Please select an image or embedded markdown document",4e3),!0;const A=this.ea.getViewFileForImageElement(e);return A?(this.app.vault.delete(A),this.ea.deleteViewElements([e]),!0):(new obsidian_module.Notice("Please select an image or embedded markdown document",4e3),!0)}return!1}}),this.addCommand({id:"insert-link",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.insertLinkDialog.start(t.file.path,t.addText),!0)}}),this.addCommand({id:"insert-link-to-element",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK_TO_ELEMENT_NORMAL"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.copyLinkToSelectedElementToClipboard(""),!0)}}),this.addCommand({id:"insert-link-to-element-group",name:t$d("INSERT_LINK_TO_ELEMENT_GROUP"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.copyLinkToSelectedElementToClipboard("group="),!0)}}),this.addCommand({id:"insert-link-to-element-area",name:t$d("INSERT_LINK_TO_ELEMENT_AREA"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.copyLinkToSelectedElementToClipboard("area="),!0)}}),this.addCommand({id:"toggle-lefthanded-mode",name:t$d("TOGGLE_LEFTHANDED_MODE"),checkCallback:e=>{if(e){if(this.app.workspace.getActiveViewOfType(ExcalidrawView)){const e=this.app.workspace.getActiveViewOfType(ExcalidrawView),t=null==e?void 0:e.excalidrawAPI;return!!t&&!!t.getAppState().trayModeEnabled}return!1}return this.app.workspace.getActiveViewOfType(ExcalidrawView),(async()=>{const e=this.settings.isLeftHanded;await this.loadSettings({applyLefthandedMode:!1}),this.settings.isLeftHanded=!e,this.saveSettings(),setLeftHandedMode(!e),setTimeout((()=>setLeftHandedMode(!e)))})(),!0}}),this.addCommand({id:"reset-image-to-100",name:t$d("RESET_IMG_TO_100"),checkCallback:e=>{const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!t)return!1;if(!t.excalidrawAPI)return!1;const A=t.getViewSelectedElements().filter((e=>"image"===e.type));if(1!==A.length)return e||new obsidian_module.Notice("Select a single image element and try again"),!1;const i=A[0];return t.excalidrawData.getFile(i.fileId)?!!e||void(async()=>{const e=new ExcalidrawAutomate(this,t),n=await e.getOriginalImageSize(i);if(n){e.copyViewElementsToEAforEditing(A);const t=e.getElement(i.id);t.width=n.width,t.height=n.height,e.addElementsToView(!1,!1,!1)}})():(e||new obsidian_module.Notice("Select a single image element and try again"),!1)}}),this.addCommand({id:"insert-image",name:t$d("INSERT_IMAGE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.insertImageDialog.start(t),!0)}}),this.addCommand({id:"import-svg",name:t$d("IMPORT_SVG"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.importSVGDialog.start(t),!0)}}),this.addCommand({id:"release-notes",name:t$d("READ_RELEASE_NOTES"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ReleaseNotes(this.app,this,PLUGIN_VERSION).open(),!0)}),this.addCommand({id:"tray-mode",name:t$d("TRAY_MODE"),checkCallback:e=>{if(e){const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!e||!e.excalidrawRef)return!1;const t=e.excalidrawAPI.getAppState();return!t.zenModeEnabled&&!t.viewModeEnabled}const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!t||!t.excalidrawAPI||(t.toggleTrayMode(),0))}}),this.addCommand({id:"insert-md",name:t$d("INSERT_MD"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.insertMDDialog.start(t),!0)}}),this.addCommand({id:"insert-pdf",name:t$d("INSERT_PDF"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(new InsertPDFModal(this,t).open(),!0)}}),this.addCommand({id:"insert-LaTeX-symbol",name:t$d("INSERT_LATEX"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(insertLaTeXToView(t),!0)}}),this.addCommand({id:"toggle-excalidraw-view",name:t$d("TOGGLE_MODE"),checkCallback:e=>{const t=this.app.workspace.getActiveFile();if(!t)return!1;const A=this.isExcalidrawFile(t);if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))?!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode:A;const i=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(i){const e=i.leaf;return this.excalidrawFileModes[e.id||t.path]="markdown",void this.setMarkdownView(e)}const n=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(n&&A){const e=n.leaf;return this.excalidrawFileModes[e.id||t.path]="excalidraw",void this.setExcalidrawView(e)}}}),this.addCommand({id:"convert-to-excalidraw",name:t$d("CONVERT_NOTE_TO_EXCALIDRAW"),checkCallback:e=>{const t=this.app.workspace.getActiveFile(),A=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(!t||!A)return!1;const i=0===t.stat.size;if(e)return i;i&&(async()=>{await this.app.vault.modify(t,await this.getBlankDrawing()),this.setExcalidrawView(A.leaf)})()}}),this.addCommand({id:"convert-excalidraw",name:t$d("CONVERT_EXCALIDRAW"),checkCallback:e=>{if(e){const e=this.app.vault.getFiles().filter((e=>"excalidraw"==e.extension));return e.length>0}return this.convertExcalidrawToMD(),!0}})}async convertSingleExcalidrawToMD(e,t=!1,A=!1){const i=await this.app.vault.read(e),n=e.name.substring(0,e.name.lastIndexOf(".excalidraw"))+(t?".md":".excalidraw.md"),a=getNewUniqueFilepath(this.app.vault,n,obsidian_module.normalizePath(e.path.substring(0,e.path.lastIndexOf(e.name))));log(a);const r=await this.app.vault.create(a,FRONTMATTER+await this.exportSceneToMD(i));return this.settings.keepInSync&&EXPORT_TYPES.forEach((t=>{const A=e.path.substring(0,e.path.lastIndexOf(".excalidraw"))+t,i=this.app.vault.getAbstractFileByPath(obsidian_module.normalizePath(A));if(i&&i instanceof obsidian_module.TFile){const e=a.substring(0,a.lastIndexOf(".md"))+t;this.app.fileManager.renameFile(i,e)}})),A||this.app.vault.delete(e),r}async convertExcalidrawToMD(e=!1,t=!1){const A=this.app.vault.getFiles().filter((e=>"excalidraw"==e.extension));for(const i of A)this.convertSingleExcalidrawToMD(i,e,t);new obsidian_module.Notice(`Converted ${A.length} files.`)}registerMonkeyPatches(){this.registerEvent(app.workspace.on("editor-menu",((e,t,A)=>{if(!(A&&A instanceof obsidian_module.MarkdownView))return;const i=A.file,n=A.leaf;if(!A.file)return;const a=this.app.metadataCache.getFileCache(i);(null==a?void 0:a.frontmatter)&&a.frontmatter[FRONTMATTER_KEY]&&e.addItem((e=>e.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("excalidraw").onClick((()=>{this.excalidrawFileModes[n.id||i.path]="excalidraw",this.setExcalidrawView(n)}))))}))),this.registerEvent(app.workspace.on("file-menu",((e,t,A,i)=>{if(!(i&&i.view instanceof obsidian_module.MarkdownView))return;if(!(t instanceof obsidian_module.TFile))return;const n=this.app.metadataCache.getFileCache(t);(null==n?void 0:n.frontmatter)&&n.frontmatter[FRONTMATTER_KEY]&&(e.addItem((e=>{e.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("pane").onClick((()=>{this.excalidrawFileModes[i.id||t.path]="excalidraw",this.setExcalidrawView(i)}))})),e.items.unshift(e.items.pop()))})));const e=this;this.register(around(obsidian_module.WorkspaceLeaf.prototype,{detach:t=>function(){var A;const i=null===(A=this.view)||void 0===A?void 0:A.getState();return(null==i?void 0:i.file)&&e.excalidrawFileModes[this.id||i.file]&&delete e.excalidrawFileModes[this.id||i.file],t.apply(this)},setViewState:t=>function(A,...i){var n;if(e._loaded&&"markdown"===A.type&&(null===(n=A.state)||void 0===n?void 0:n.file)&&"markdown"!==e.excalidrawFileModes[this.id||A.state.file]){const n=app.metadataCache.getCache(A.state.file);if((null==n?void 0:n.frontmatter)&&n.frontmatter[FRONTMATTER_KEY]){const n=Object.assign(Object.assign({},A),{type:"excalidraw"});return e.excalidrawFileModes[A.state.file]="excalidraw",t.apply(this,[n,...i])}}return t.apply(this,[A,...i])}}))}registerEventListeners(){const e=this;this.app.workspace.onLayoutReady((async()=>{e.registerEvent(app.vault.on("rename",(async(t,A)=>{t instanceof obsidian_module.TFile&&e.isExcalidrawFile(t)&&e.settings.keepInSync&&[EXPORT_TYPES,"excalidraw"].flat().forEach((async e=>{const i=getIMGFilename(A,e),n=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(i));if(n&&n instanceof obsidian_module.TFile){const A=getIMGFilename(t.path,e);await app.fileManager.renameFile(n,A)}}))}))),e.registerEvent(app.vault.on("modify",(async t=>{app.workspace.getLeavesOfType("excalidraw").forEach((async A=>{const i=A.view;if(i.file&&(i.file.path===t.path||"excalidraw"===t.extension&&`${t.path.substring(0,t.path.lastIndexOf(".excalidraw"))}.md`===i.file.path)){if(i.semaphores.preventReload)return void(i.semaphores.preventReload=!1);if(i.lastSaveTimestamp+3e5{if(!(t instanceof obsidian_module.TFile))return;const A=this.excalidrawFiles.has(t);if(this.updateFileCache(t,void 0,!0),!A)return;const i=app.workspace.getLeavesOfType("excalidraw");for(let e=0;e{[EXPORT_TYPES,"excalidraw"].flat().forEach((async e=>{const A=getIMGFilename(t.path,e),i=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(A));i&&i instanceof obsidian_module.TFile&&await app.vault.delete(i)}))}),500)}))),e.registerEvent(app.workspace.on("active-leaf-change",(async t=>{var A;e.leafChangeTimeout&&clearTimeout(e.leafChangeTimeout),e.leafChangeTimeout=setTimeout((()=>{e.leafChangeTimeout=null}),1e3);const i=e.activeExcalidrawView,n=t.view instanceof ExcalidrawView?t.view:null; +EXPR:/(!)?(\[\[([^|\]]+)\|?([^\]]+)?]]|\[([^\]]*)]\(([^)]*)\))(\{(\d+)\})?/g,getResList:e=>{const t=e.matchAll(REGEX_LINK.EXPR);let A;const i=[];for(;!(A=t.next()).done;)i.push(A);return i},getRes:e=>e.matchAll(REGEX_LINK.EXPR),isTransclusion:e=>!!e.value[1],getLink:e=>e.value[3]?e.value[3]:e.value[6],isWikiLink:e=>!!e.value[3],getAliasOrLink:e=>REGEX_LINK.isWikiLink(e)?e.value[4]?e.value[4]:e.value[3]:e.value[5]?e.value[5]:e.value[6],getWrapLength:(e,t)=>{const A=parseInt(e.value[8]);return isNaN(A)?t>0?t:null:A}},DRAWING_REG=/\n# Drawing\n[^`]*(```json\n)([\s\S]*?)```\n/gm,DRAWING_REG_FALLBACK=/\n# Drawing\n(```json\n)?(.*)(```)?(%%)?/gm,DRAWING_COMPRESSED_REG=/(\n# Drawing\n[^`]*(?:```compressed\-json\n))([\s\S]*?)(```\n)/gm,DRAWING_COMPRESSED_REG_FALLBACK=/(\n# Drawing\n(?:```compressed\-json\n)?)(.*)((```)?(%%)?)/gm,REG_LINKINDEX_HYPERLINK=/^\w+:\/\//,isCompressedMD=e=>null!==e.match(/```compressed\-json\n/gm),getDecompressedScene=e=>{let t,A=e.matchAll(DRAWING_COMPRESSED_REG);return t=A.next(),t.done&&(A=e.matchAll(DRAWING_COMPRESSED_REG_FALLBACK),t=A.next()),t.value&&t.value.length>1?[decompress(t.value[2]),t]:[null,t]},changeThemeOfExcalidrawMD=e=>{const t=isCompressedMD(e);let A=t?getDecompressedScene(e)[0]:e;return A?(isObsidianThemeDark?1===(A.match(/"theme"\s*:\s*"light"\s*,/g)||[]).length&&(A=A.replace(/"theme"\s*:\s*"light"\s*,/,'"theme": "dark",')):1===(A.match(/"theme"\s*:\s*"dark"\s*,/g)||[]).length&&(A=A.replace(/"theme"\s*:\s*"dark"\s*,/,'"theme": "light",')),t?e.replace(DRAWING_COMPRESSED_REG,`$1${compress(A)}$3`):A):e};function getJSON(e){let t,A;if(isCompressedMD(e)){const[t,A]=getDecompressedScene(e);return t?{scene:t.substring(0,t.lastIndexOf("}")+1),pos:A.value.index}:{scene:e,pos:A.value?A.value.index:0}}if(t=e.matchAll(DRAWING_REG),A=t.next(),A.done&&(t=e.matchAll(DRAWING_REG_FALLBACK),A=t.next()),A.value&&A.value.length>1){const e=A.value[2];return{scene:e.substr(0,e.lastIndexOf("}")+1),pos:A.value.index}}return{scene:e,pos:A.value?A.value.index:0}}function getMarkdownDrawingSection(e,t){return t?`%%\n# Drawing\n\`\`\`compressed-json\n${compress(e)}\n\`\`\`\n%%`:`%%\n# Drawing\n\`\`\`json\n${e}\n\`\`\`\n%%`}const estimateMaxLineLen=(e,t)=>{if(!t||!e)return null;if(e===t)return null;let A=0;const i=e.split("\n");if(1===i.length)return null;for(const e of i){const t=e.trim();t.length>A&&(A=t.length)}return A},wrap=(e,t)=>t?wrapTextAtCharLength(e,t,!1,0):e;class ExcalidrawData{constructor(e){this.plugin=e,this.textElements=null,this.elementLinks=null,this.scene=null,this.deletedElements=[],this.file=null,this.embeddableTheme="auto",this.autoexportPreference=AutoexportPreference.inherit,this.textMode=TextMode.raw,this.loaded=!1,this.files=null,this.equations=null,this.mermaids=null,this.compatibilityMode=!1,this.selectedElementIds={},this.disableCompression=!1,this.app=e.app,this.files=new Map,this.equations=new Map,this.mermaids=new Map}initializeNonInitializedFields(){var e,t,A;if(!this.scene||!this.scene.elements)return;const i=null!==(e=this.scene.source.split("https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/")[1])&&void 0!==e?e:"1.8.16",n=this.scene.elements;for(const e of n){if("iframe"===e.type&&(e.type="embeddable"),e.boundElements){const t=new Map;e.boundElements.forEach((e=>{t.set(e.id,e.type)}));const A=Array.from(t,(([e,t])=>({id:e,type:t})));A.length!==e.boundElements.length&&(e.boundElements=A)}e.boundElementIds&&(e.boundElements||(e.boundElements=[]),e.boundElements=e.boundElements.concat(e.boundElementIds.map((e=>({type:"arrow",id:e})))),delete e.boundElementIds),"text"!==e.type||e.containerId||(e.containerId=null),null===e.x&&(e.x=0),null===e.y&&(e.y=0),null===(null===(t=e.startBinding)||void 0===t?void 0:t.focus)&&(e.startBinding.focus=0),null===(null===(A=e.endBinding)||void 0===A?void 0:A.focus)&&(e.endBinding.focus=0),null===e.fontSize&&(e.fontSize=20)}try{n.filter((e=>"text"===e.type&&e.containerId&&n.some((t=>t.id===e.containerId&&t.boundElements.length>0&&t.boundElements.some((t=>"text"===t.type&&t.id!==e.id&&t.id.length>8)))))).forEach((e=>{try{const t=n.filter((t=>t.id===e.containerId))[0],A=t.boundElements.filter((e=>!("text"===e.type&&!n.some((t=>t.id===e.id)))));t.boundElements=[{id:e.id,type:"text"}].concat(A)}catch(e){}}));const e=!isVersionNewerThanOther(i,"1.8.16");n.filter((e=>e.boundElements&&e.boundElements.length>0)).forEach((t=>{var A;e&&!(null===(A=t.customData)||void 0===A?void 0:A.legacyTextWrap)&&addAppendUpdateCustomData(t,{legacyTextWrap:!0});const i=t.boundElements.filter((e=>n.some((t=>t.id===e.id))));i.length!==t.boundElements.length&&(t.boundElements=i)})),n.filter((e=>"text"===e.type&&e.containerId&&!n.some((t=>t.id===e.containerId)))).forEach((e=>{e.containerId=null}))}catch(e){}}async loadData(e,t,A){var i,n;if(!t)return!1;if(this.loaded=!1,this.selectedElementIds={},this.textElements=new Map,this.elementLinks=new Map,this.file!=t&&(this.files.clear(),this.equations.clear(),this.mermaids.clear()),this.file=t,this.compatibilityMode=!1,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.setAutoexportPreferences(),this.setembeddableThemePreference(),this.scene=null,this.plugin.settings.syncExcalidraw){const e=`${t.path.substring(0,t.path.lastIndexOf(".md"))}.excalidraw`,A=this.app.vault.getAbstractFileByPath(e);if(A&&A instanceof obsidian_module.TFile&&A.stat.mtime>t.stat.mtime){const e=await this.app.vault.read(A);this.scene=JSON.parse(e)}}let a=null;if(a=(()=>{const t=getJSON(e);if(-1===t.pos)throw new Error("Excalidraw JSON not found in the file");return this.scene||(this.scene=JSON_parse(t.scene)),t})(),this.deletedElements=this.scene.elements.filter((e=>e.isDeleted)),this.scene.elements=this.scene.elements.filter((e=>!e.isDeleted)),this.scene.files||(this.scene.files={}),hasExportTheme(this.plugin,this.file)?this.scene.appState.theme=getExportTheme(this.plugin,this.file,"light"):this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),null===(n=null===(i=this.scene)||void 0===i?void 0:i.elements)||void 0===n?void 0:n.some((e=>"iframe"===e.type))){const e=new ConfirmationPrompt(this.plugin,"This file contains embedded frames which will be migrated to a newer version for compatibility with excalidraw.com.
🔄 If you're using Obsidian on multiple devices, you may proceed now, but please, before opening this file on your other devices, update Excalidraw on those as well.
🔍 More info is available here.
🌐 Translate.");if(e.contentEl.focus(),!await e.waitForClose)throw new Error("iframe conversion canceled")}this.initializeNonInitializedFields();let r=(e=e.substring(0,a.pos)).search(/(^%%\n)?# Text Elements\n/m);if(-1===r)return await this.setTextMode(A,!1),this.loaded=!0,!0;r+=e.match(/((^%%\n)?# Text Elements\n)/m)[0].length,e=e.substring(r),r=0;let s,o=e.matchAll(/\s\^(.{8})[\n]+/g);for(;!(s=o.next()).done;){let t=e.substring(r,s.value.index);const A=s.value[1],i=this.scene.elements.filter((e=>e.id===A))[0];if(i)if("text"!==i.type)i.link!==t&&(i.link=t,i.version++,i.versionNonce++),this.elementLinks.set(A,t);else{const e=estimateMaxLineLen(i.text,i.originalText),n=t.matchAll(/^%%\*\*\*>>>text element-link:(\[\[[^<*\]]*]])<<<\*\*\*%%/gm).next();n.done||(t=t.replace(/^%%\*\*\*>>>text element-link:\[\[[^<*\]]*]]<<<\*\*\*%%/gm,""),i.link=n.value[1]);const a=await this.parse(t);i.rawText=t,this.textElements.set(A,{raw:t,parsed:a.parsed,wrapAt:e}),a.link&&(i.link=a.link),!i||i.rawText&&""!==i.rawText||(i.rawText=t)}r=s.value.index+12}for(o=(e=e.substring(e.indexOf("# Embedded files\n")+17)).matchAll(/([\w\d]*):\s*\[\[([^\]]*)]]\s?(\{[^}]*})?\n/gm);!(s=o.next()).done;){const e=new EmbeddedFile(this.plugin,this.file.path,s.value[2],s.value[3]);this.setFile(s.value[1],e)}for(o=e.matchAll(/([\w\d]*):\s*(https?:\/\/[^\s]*)\n/gm);!(s=o.next()).done;){const e=new EmbeddedFile(this.plugin,null,s.value[2]);this.setFile(s.value[1],e)}for(o=e.matchAll(/([\w\d]*):\s*\$\$(.*)(\$\$\s*\n)/gm);!(s=o.next()).done;)this.setEquation(s.value[1],{latex:s.value[2],isLoaded:!1});const l=getMermaidImageElements(this.scene.elements);return l.length>0&&!shouldRenderMermaid()?new obsidian_module.Notice("Mermaid images are only supported in Obsidian 1.4.14 and above. Please update Obsidian to see the mermaid images in this drawing. Obsidian mobile 1.4.14 currently only avaiable to Obsidian insiders",5e3):l.forEach((e=>this.setMermaid(e.fileId,{mermaid:getMermaidText(e),isLoaded:!1}))),this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(A,!0),this.loaded=!0,!0}async loadLegacyData(e,t){return!!t&&(this.loaded=!1,this.selectedElementIds={},this.compatibilityMode=!0,this.file=t,this.textElements=new Map,this.elementLinks=new Map,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.setembeddableThemePreference(),this.scene=JSON.parse(e),this.scene.files||(this.scene.files={}),this.initializeNonInitializedFields(),this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),this.files.clear(),this.equations.clear(),this.mermaids.clear(),this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(TextMode.raw,!0),this.loaded=!0,!0)}async setTextMode(e,t=!1){this.scene&&(this.textMode=e,await this.updateSceneTextElements(t))}updateTextElement(e,t,A,i=!1,n){var a;if(i||t!=e.text){const i=_measureText(t,e.fontSize,e.fontFamily,null!==(a=e.lineHeight)&&void 0!==a?a:getDefaultLineHeight(e.fontFamily));e.text=t,e.originalText=A,e.containerId&&"arrow"!==n||(e.width=i.w),e.height=i.h,e.baseline=i.baseline}}async updateSceneTextElements(e=!1){var t,A,i,n;const a=null===(t=this.scene.elements)||void 0===t?void 0:t.filter((e=>"text"===e.type));for(const t of a){const a=getContainerElement(t,this.scene),r=null!==(i=null!==(A=await this.getText(t.id))&&void 0!==A?A:t.originalText)&&void 0!==i?i:t.text,s=null===(n=this.textElements.get(t.id))||void 0===n?void 0:n.wrapAt;try{this.updateTextElement(t,s?wrapText(r,getFontString({fontSize:t.fontSize,fontFamily:t.fontFamily}),getBoundTextMaxWidth(a)):r,r,e,null==a?void 0:a.type)}catch(e){debug({where:"ExcalidrawData.updateSceneTextElements",fn:this.updateSceneTextElements,textElement:t})}}}async getText(e){const t=this.textElements.get(e);return t?this.textMode===TextMode.parsed?(t.parsed||this.textElements.set(e,{raw:t.raw,parsed:(await this.parse(t.raw)).parsed,wrapAt:t.wrapAt}),t.parsed):t.raw:null}findNewElementLinksInScene(){var e;let t=!1;const A=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"!==e.type&&e.link&&e.link.startsWith("[[")&&!this.elementLinks.has(e.id)));if(0===A.length)return t;let i,n=JSON.stringify(this.scene);for(const e of A)i=e.id,e.id.length>8&&(t=!0,i=nanoid(),n=n.replaceAll(e.id,i)),this.elementLinks.set(i,e.link);return this.scene=JSON.parse(n),t}findNewTextElementsInScene(e={}){var t;this.selectedElementIds=e;const A=null===(t=this.scene.elements)||void 0===t?void 0:t.filter((e=>"text"===e.type));let i,n=JSON.stringify(this.scene),a=!1;for(const e of A)if(i=e.id,e.id.length>8){if(a=!0,i=nanoid(),this.selectedElementIds[e.id]&&(delete this.selectedElementIds[e.id],this.selectedElementIds[i]=!0),n=n.replaceAll(e.id,i),this.textElements.has(e.id)){const t=this.textElements.get(e.id);this.textElements.set(i,{raw:t.raw,parsed:t.parsed,wrapAt:t.wrapAt}),this.textElements.delete(e.id)}if(!this.textElements.has(i)){const t=e.rawText&&""!==e.rawText?e.rawText:e.text,A=estimateMaxLineLen(e.text,e.originalText);this.textElements.set(i,{raw:t,parsed:null,wrapAt:A}),this.parseasync(i,t,A)}}else if(!this.textElements.has(e.id)){const t=e.rawText&&""!==e.rawText?e.rawText:e.text,A=estimateMaxLineLen(e.text,e.originalText);this.textElements.set(i,{raw:t,parsed:null,wrapAt:A}),this.parseasync(i,t,A)}return a&&(this.scene=JSON.parse(n)),a}updateElementLinksFromScene(){var e;for(const t of this.elementLinks.keys()){const A=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"!==e.type&&e.id===t&&e.link&&e.link.startsWith("[[")));0===A.length?this.elementLinks.delete(t):this.elementLinks.set(t,A[0].link)}}async updateTextElementsFromScene(){var e,t,A;for(const i of this.textElements.keys()){const n=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"===e.type&&e.id===i));if(0===n.length)this.textElements.delete(i);else{const e=await this.getText(i),a=this.scene.prevTextMode===TextMode.parsed?n[0].rawText:null!==(t=n[0].originalText)&&void 0!==t?t:n[0].text;if(e!==(null!==(A=n[0].originalText)&&void 0!==A?A:n[0].text)){const e=estimateMaxLineLen(n[0].text,n[0].originalText);this.textElements.set(i,{raw:a,parsed:(await this.parse(a)).parsed,wrapAt:e})}}}}async parseasync(e,t,A){this.textElements.set(e,{raw:t,parsed:(await this.parse(t)).parsed,wrapAt:A})}parseLinks(e,t,A){return e.substring(t,A.value.index)+(this.showLinkBrackets?"[[":"")+REGEX_LINK.getAliasOrLink(A)+(this.showLinkBrackets?"]]":"")}async getTransclusion(e){const t=getLinkParts(e,this.file),A=this.app.metadataCache.getFirstLinkpathDest(t.path,this.file.path);return await getTransclusion(t,this.app,A,this.plugin.settings.pageTransclusionCharLimit)}async parse(e){e=this.parseCheckbox(e);let t="",A=null,i=0;const n=REGEX_LINK.getRes(e);let a,r=!1,s=!1;for(e.match(REG_LINKINDEX_HYPERLINK)&&(A=e,s=!0);!(a=n.next()).done;){if(!A){const e=REGEX_LINK.getLink(a);A=e.match(REG_LINKINDEX_HYPERLINK)?e:`[[${e}]]`}if(REGEX_LINK.isTransclusion(a)){let A=this.parseCheckbox((await this.getTransclusion(REGEX_LINK.getLink(a))).contents).replaceAll(/%%[^%]*%%/gm,"");this.plugin.settings.removeTransclusionQuoteSigns&&(A=A.replaceAll(/\n\s*>\s?/gm,"\n")),t+=e.substring(i,a.value.index)+wrapTextAtCharLength(A,REGEX_LINK.getWrapLength(a,this.plugin.settings.wordWrappingDefault),this.plugin.settings.forceWrap)}else{const A=this.parseLinks(e,i,a);A&&(t+=A,s||r||(REGEX_LINK.getLink(a).match(REG_LINKINDEX_HYPERLINK)?s=!0:r=!0))}i=a.value.index+a.value[0].length}return t+=e.substring(i,e.length),r&&(t=this.linkPrefix+t),s&&(t=this.urlPrefix+t),{parsed:t,link:A}}parseCheckbox(e){return this.plugin.settings.parseTODO?e.replaceAll(/^- \[\s] /g,`${this.plugin.settings.todo} `).replaceAll(/\n- \[\s] /g,`\n${this.plugin.settings.todo} `).replaceAll(/^- \[[^\s]] /g,`${this.plugin.settings.done} `).replaceAll(/\n- \[[^\s]] /g,`\n${this.plugin.settings.done} `):e}quickParse(e){if((e=>{const t=REGEX_LINK.getRes(e);let A;for(;!(A=t.next()).done;)if(REGEX_LINK.isTransclusion(A))return!0;return!1})(e))return[null,null];e=this.parseCheckbox(e);let t="",A=null,i=0;const n=REGEX_LINK.getRes(e);let a,r=!1,s=!1;for(e.match(REG_LINKINDEX_HYPERLINK)&&(A=e,s=!0);!(a=n.next()).done;){if(!A){const e=REGEX_LINK.getLink(a);A=e.match(REG_LINKINDEX_HYPERLINK)?e:`[[${e}]]`}const n=this.parseLinks(e,i,a);n&&(t+=n,s||r||(REGEX_LINK.getLink(a).match(REG_LINKINDEX_HYPERLINK)?s=!0:r=!0)),i=a.value.index+a.value[0].length}return t+=e.substring(i,e.length),r&&(t=this.linkPrefix+t),s&&(t=this.urlPrefix+t),[t,A]}generateMD(e=[]){let t="# Text Elements\n";for(const e of this.textElements.keys()){const A=this.scene.elements.filter((t=>t.id===e));let i=this.textElements.get(e).raw;A&&1===A.length&&A[0].link&&A[0].rawText===A[0].originalText&&A[0].link.match(/^\[\[[^\]]*]]$/g)&&(i=`%%***>>>text element-link:${A[0].link}<<<***%%`+i),t+=`${i} ^${e}\n\n`}for(const e of this.elementLinks.keys())t+=`${this.elementLinks.get(e)} ^${e}\n\n`;if(t+=this.equations.size>0||this.files.size>0?"\n# Embedded files\n":"",this.equations.size>0)for(const e of this.equations.keys())t+=`${e}: $$${this.equations.get(e).latex}$$\n`;if(this.files.size>0)for(const e of this.files.keys()){const A=/(^[^#\|]*)/,i=this.files.get(e);i.isHyperlink?t+=`${e}: ${i.hyperlink}\n`:t+=`${e}: [[${i.file?i.linkParts.original.replace(A,app.metadataCache.fileToLinktext(i.file,this.file.path)):i.linkParts.original}]]${i.colorMap?" "+JSON.stringify(i.colorMap):""}\n`}return t+=this.equations.size>0||this.files.size>0?"\n":"",t+getMarkdownDrawingSection(JSON.stringify({type:this.scene.type,version:this.scene.version,source:this.scene.source,elements:this.scene.elements.concat(e),appState:this.scene.appState,files:this.scene.files},null,"\t"),!this.disableCompression&&this.plugin.settings.compress)}async saveDataURLtoVault(e,t,A){var i;const n=this.scene;let a=`Pasted Image ${window.moment().format("YYYYMMDDHHmmss_SSS")}`;switch(t){case"image/png":default:a+=".png";break;case"image/jpeg":a+=".jpg";break;case"image/svg+xml":a+=".svg";break;case"image/gif":a+=".gif"}const r=(await getAttachmentsFolderAndFilePath(this.app,this.file.path,a)).filepath,s=await getBinaryFileFromDataURL(e);if(!s)return null;const o=await this.app.vault.createBinary(r,s),l=new EmbeddedFile(this.plugin,this.file.path,r);return l.setImage(e,t,{height:0,width:0},"dark"===(null===(i=n.appState)||void 0===i?void 0:i.theme),"image/svg+xml"===t),this.setFile(A,l),o}async syncFiles(){let e=!1;const t=this.scene,A=t.elements.filter((e=>"image"===e.type)).map((e=>e.fileId));if(this.files.forEach(((t,i)=>{A.contains(i)||(this.files.delete(i),e=!0)})),this.equations.forEach(((t,i)=>{A.contains(i)||(this.equations.delete(i),e=!0)})),this.mermaids.forEach(((t,i)=>{A.contains(i)||(this.mermaids.delete(i),e=!0)})),!t.files||0===Object.keys(t.files).length)return!1;const i=new Set;A.forEach((A=>{if(i.has(A)){const n=this.getFile(A),a=this.getEquation(A),r=this.getMermaid(A);if(n&&(n.isHyperlink||n.file&&("md"!==n.file.extension||this.plugin.isExcalidrawFile(n.file))))return;if(r)return;const s=fileid();t.elements.filter((e=>e.fileId===A))[0].fileId=s,e=!0,i.add(s),n&&this.setFile(s,new EmbeddedFile(this.plugin,this.file.path,n.linkParts.original)),a&&this.setEquation(s,{latex:a.latex,isLoaded:!1})}i.add(A)}));for(const A of Object.keys(t.files)){const i=getMermaidImageElements(t.elements.filter((e=>e.fileId===A)));this.hasFile(A)||this.hasEquation(A)||this.hasMermaid(A)||i.length>0||(e=!0,await this.saveDataURLtoVault(t.files[A].dataURL,t.files[A].mimeType,A))}return e}async syncElements(e,t){this.scene=e;let A=!1;return this.compatibilityMode||(A=await this.syncFiles(),this.scene.files={}),this.updateElementLinksFromScene(),A=A||this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.findNewElementLinksInScene(),await this.updateTextElementsFromScene(),A||this.findNewTextElementsInScene(t)}async updateScene(e){this.scene=JSON_parse(e),this.updateElementLinksFromScene();const t=this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.setembeddableThemePreference()||this.findNewElementLinksInScene();return await this.updateTextElementsFromScene(),!(!t&&!this.findNewTextElementsInScene()||(await this.updateSceneTextElements(),0))}getRawText(e){var t;return null===(t=this.textElements.get(e))||void 0===t?void 0:t.raw}getParsedText(e){const t=this.textElements.get(e);return t?[wrap(t.parsed,t.wrapAt),t.parsed,null]:[null,null,null]}setTextElement(e,t,A,i){const n=estimateMaxLineLen(t,A),[a,r]=this.quickParse(A);return a?(this.textElements.set(e,{raw:A,parsed:a,wrapAt:n}),[wrap(a,n),a,r]):(this.parse(A).then((t=>{const a=t.parsed;this.textElements.set(e,{raw:A,parsed:a,wrapAt:n}),a&&i(wrap(a,n),a)})),[null,null,null])}async addTextElement(e,t,A){let i=estimateMaxLineLen(t,A);this.textElements.has(e)&&(i=this.textElements.get(e).wrapAt);const n=await this.parse(A);return this.textElements.set(e,{raw:A,parsed:n.parsed,wrapAt:i}),[wrap(n.parsed,i),n.parsed,n.link]}deleteTextElement(e){this.textElements.delete(e)}getOpenMode(){const e=this.app.metadataCache.getFileCache(this.file);let t="view-mobile"===this.plugin.settings.defaultMode?DEVICE.isPhone?"view":"normal":this.plugin.settings.defaultMode;switch((null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-default-mode"]&&(t=e.frontmatter["excalidraw-default-mode"]),t){case"zen":return{viewModeEnabled:!1,zenModeEnabled:!0};case"view":return{viewModeEnabled:!0,zenModeEnabled:!1};default:return{viewModeEnabled:!1,zenModeEnabled:!1}}}getLinkOpacity(){const e=this.app.metadataCache.getFileCache(this.file);let t=this.plugin.settings.linkOpacity;return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-linkbutton-opacity"]&&(t=e.frontmatter["excalidraw-linkbutton-opacity"]),t}getOnLoadScript(){const e=this.app.metadataCache.getFileCache(this.file);return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-onload-script"]?e.frontmatter["excalidraw-onload-script"]:null}setLinkPrefix(){const e=this.linkPrefix,t=this.app.metadataCache.getFileCache(this.file);return(null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-link-prefix"]?this.linkPrefix=t.frontmatter["excalidraw-link-prefix"]:this.linkPrefix=this.plugin.settings.linkPrefix,e!=this.linkPrefix}setUrlPrefix(){const e=this.urlPrefix,t=this.app.metadataCache.getFileCache(this.file);return(null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-url-prefix"]?this.urlPrefix=t.frontmatter["excalidraw-url-prefix"]:this.urlPrefix=this.plugin.settings.urlPrefix,e!=this.urlPrefix}setAutoexportPreferences(){const e=this.app.metadataCache.getFileCache(this.file);if((null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-autoexport"])switch(e.frontmatter["excalidraw-autoexport"].toLowerCase()){case"none":this.autoexportPreference=AutoexportPreference.none;break;case"both":this.autoexportPreference=AutoexportPreference.both;break;case"png":this.autoexportPreference=AutoexportPreference.png;break;case"svg":this.autoexportPreference=AutoexportPreference.svg;break;default:this.autoexportPreference=AutoexportPreference.inherit}else this.autoexportPreference=AutoexportPreference.inherit}setembeddableThemePreference(){const e=this.embeddableTheme,t=this.app.metadataCache.getFileCache(this.file);return(null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-iframe-theme"]?(this.embeddableTheme=t.frontmatter["excalidraw-iframe-theme"].toLowerCase(),EMBEDDABLE_THEME_FRONTMATTER_VALUES.includes(this.embeddableTheme)||(this.embeddableTheme="default")):this.embeddableTheme=this.plugin.settings.iframeMatchExcalidrawTheme?"auto":"default",e!=this.embeddableTheme}setShowLinkBrackets(){const e=this.showLinkBrackets,t=this.app.metadataCache.getFileCache(this.file);return(null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-link-brackets"]?this.showLinkBrackets=0!=t.frontmatter["excalidraw-link-brackets"]:this.showLinkBrackets=this.plugin.settings.showLinkBrackets,e!=this.showLinkBrackets}setFile(e,t){if(!t)return;if(this.files.set(e,t),t.isHyperlink)return void this.plugin.filesMaster.set(e,{isHyperlink:!0,path:t.hyperlink,blockrefData:null,hasSVGwithBitmap:t.isSVGwithBitmap});if(!t.file)return;const A=t.linkParts.original.split("#");this.plugin.filesMaster.set(e,{isHyperlink:!1,path:t.file.path+(t.shouldScale()?"":"|100%"),blockrefData:1===A.length?null:A[1],hasSVGwithBitmap:t.isSVGwithBitmap,colorMapJSON:t.colorMap?JSON.stringify(t.colorMap):null})}getFiles(){return Object.values(this.files)}getFile(e){let t=this.files.get(e);if(t)return t;const A=this.plugin.filesMaster.get(e);return A?(t=new EmbeddedFile(this.plugin,this.file.path,A.blockrefData?A.path+"#"+A.blockrefData:A.path),this.files.set(e,t),t):t}getFileEntries(){return this.files.entries()}deleteFile(e){this.files.delete(e)}hasFile(e){if(this.files.has(e))return!0;if(this.plugin.filesMaster.has(e)){const t=this.plugin.filesMaster.get(e);if(t.isHyperlink)return this.files.set(e,new EmbeddedFile(this.plugin,this.file.path,t.path)),!0;const A=t.path.split("|")[0].split("#")[0];if(!this.app.vault.getAbstractFileByPath(A))return this.plugin.filesMaster.delete(e),!0;const i=t.path.endsWith("100%"),n=new EmbeddedFile(this.plugin,this.file.path,(t.blockrefData?A+"#"+t.blockrefData:A)+(i?"|100%":""),t.colorMapJSON);return this.files.set(e,n),!0}return!1}setEquation(e,t){this.equations.set(e,{latex:t.latex,isLoaded:t.isLoaded}),this.plugin.equationsMaster.set(e,t.latex)}getEquation(e){let t=this.equations.get(e);if(t)return t;const A=this.plugin.equationsMaster.get(e);return A?(this.equations.set(e,{latex:A,isLoaded:!1}),{latex:A,isLoaded:!1}):t}getEquationEntries(){return this.equations.entries()}deleteEquation(e){this.equations.delete(e)}hasEquation(e){return!!this.equations.has(e)||!!this.plugin.equationsMaster.has(e)&&(this.equations.set(e,{latex:this.plugin.equationsMaster.get(e),isLoaded:!1}),!0)}setMermaid(e,t){this.mermaids.set(e,{mermaid:t.mermaid,isLoaded:t.isLoaded}),this.plugin.mermaidsMaster.set(e,t.mermaid)}getMermaid(e){let t=this.mermaids.get(e);if(t)return t;const A=this.plugin.mermaidsMaster.get(e);return A?(this.mermaids.set(e,{mermaid:A,isLoaded:!1}),{mermaid:A,isLoaded:!1}):t}getMermaidEntries(){return this.mermaids.entries()}deleteMermaid(e){this.mermaids.delete(e)}hasMermaid(e){return!!this.mermaids.has(e)||!!this.plugin.mermaidsMaster.has(e)&&(this.mermaids.set(e,{mermaid:this.plugin.mermaidsMaster.get(e),isLoaded:!1}),!0)}}const getTransclusion=async(e,t,A,i)=>{var n,a,r,s,o,l,c;if(!e.path)return{contents:e.original.trim(),lineNum:0};if(!(A&&A instanceof obsidian_module.TFile))return{contents:e.original.trim(),lineNum:0};const d=await t.vault.read(A);if(!e.ref)return i?{contents:d.substring(0,i).trim(),lineNum:0}:{contents:d.trim(),lineNum:0};const h=(await t.metadataCache.blockCache.getForFile({isCancelled:()=>!1},A)).blocks.filter((e=>"comment"!=e.node.type));if(!h)return{contents:e.original.trim(),lineNum:0};if(e.isBlockRef){let t=null===(n=h.filter((t=>t.node.id==e.ref))[0])||void 0===n?void 0:n.node;if(!t)return{contents:e.original.trim(),lineNum:0};["blockquote"].includes(t.type)&&(t=t.children[0]);const A=t.position.start.offset,i=t.position.start.line,a=t.position.end.offset;return{contents:d.substring(A,a).replaceAll(/ \^\S*$|^\^\S*$/gm,"").trim(),lineNum:i}}const u=h.filter((e=>0===e.display.search(/^#+\s/)));let g=null,p=0,m=null,f=1;for(let t=0;tf;)e++;return e===u.length&&u[e-1].node.depth>f?{leadingHashes:"#".repeat(f)+" ",contents:d.substring(g).trim(),lineNum:p}:(m=u[e].node.position.start.offset-1,{leadingHashes:"#".repeat(f)+" ",contents:d.substring(g,m).trim(),lineNum:p})}const A=u[t].node.children[0],i=null===(r=null===(a=u[t].node.data)||void 0===a?void 0:a.hProperties)||void 0===r?void 0:r.dataHeading,n=null==A?void 0:A.children;!g&&(cleanBlockRef(null==A?void 0:A.value)===e.ref||cleanBlockRef(null==A?void 0:A.title)===e.ref||cleanBlockRef(i)===e.ref||n&&cleanBlockRef(null===(s=n[0])||void 0===s?void 0:s.value)===e.ref||cleanSectionHeading(null==A?void 0:A.value)===e.ref||cleanSectionHeading(null==A?void 0:A.title)===e.ref||cleanSectionHeading(i)===e.ref||n&&cleanSectionHeading(null===(o=n[0])||void 0===o?void 0:o.value)===e.ref)&&(g=null===(l=u[t].node.children[0])||void 0===l?void 0:l.position.start.offset,f=u[t].node.depth,p=null===(c=u[t].node.children[0])||void 0===c?void 0:c.position.start.line)}return g?{leadingHashes:"#".repeat(f)+" ",contents:d.substring(g).trim(),lineNum:p}:{contents:e.original.trim(),lineNum:0}};class ScriptEngine{constructor(e){this.plugin=e,this.scriptIconMap={},this.loadScripts(),this.registerEventHandlers()}registerEventHandlers(){const e=e=>{if(!e.endsWith(".svg"))return;const t=app.vault.getAbstractFileByPath(getIMGFilename(e,"md"));t&&t instanceof obsidian_module.TFile&&(this.unloadScript(this.getScriptName(t),t.path),this.loadScript(t))};this.plugin.registerEvent(app.vault.on("delete",(async t=>{t instanceof obsidian_module.TFile&&t.path.startsWith(this.scriptPath)&&(this.unloadScript(this.getScriptName(t),t.path),e(t.path))}))),this.plugin.registerEvent(app.vault.on("create",(async t=>{t instanceof obsidian_module.TFile&&t.path.startsWith(this.scriptPath)&&(this.loadScript(t),e(t.path))}))),this.plugin.registerEvent(app.vault.on("rename",(async(t,A)=>{if(!(t instanceof obsidian_module.TFile))return;const i=A.startsWith(this.scriptPath),n=t.path.startsWith(this.scriptPath);i&&(this.unloadScript(this.getScriptName(A),A),e(A)),n&&(this.loadScript(t),e(t.path))})))}updateScriptPath(){this.scriptPath!==this.plugin.settings.scriptFolderPath&&(this.scriptPath&&this.unloadScripts(),this.loadScripts())}getListofScripts(){if(this.scriptPath=this.plugin.settings.scriptFolderPath,app.vault.getAbstractFileByPath(this.scriptPath))return app.vault.getFiles().filter((e=>e.path.startsWith(this.scriptPath)&&"md"===e.extension));this.scriptPath=null}loadScripts(){var e;null===(e=this.getListofScripts())||void 0===e||e.forEach((e=>this.loadScript(e)))}getScriptName(e){let t="",A="";e instanceof obsidian_module.TFile?(t=e.basename,A=e.path):(t=splitFolderAndFilename(e).basename,A=e);const i=A.split(`${this.scriptPath}/`)[1],n=i.lastIndexOf("/");return n>-1?i.substring(0,n+1)+t:t}async addScriptIconToMap(e,t){const A=getIMGFilename(e,"svg"),i=app.vault.getAbstractFileByPath(A),n=i&&i instanceof obsidian_module.TFile?await app.vault.read(i):null;this.scriptIconMap=Object.assign({},this.scriptIconMap);const a=splitFolderAndFilename(t);this.scriptIconMap[e]={name:a.filename,group:"/"===a.folderpath?"":a.folderpath,svgString:n},this.updateToolPannels()}loadScript(e){if("md"!==e.extension)return;const t=this.getScriptName(e);this.addScriptIconToMap(e.path,t),this.plugin.addCommand({id:t,name:`(Script) ${t}`,checkCallback:A=>{if(A)return Boolean(app.workspace.getActiveViewOfType(ExcalidrawView));const i=app.workspace.getActiveViewOfType(ExcalidrawView);return!!i&&((async()=>{const A=await app.vault.read(e);A&&this.executeScript(i,A,t,e)})(),!0)}})}unloadScripts(){const e=app.vault.getFiles().filter((e=>e.path.startsWith(this.scriptPath)));e.forEach((e=>{this.unloadScript(this.getScriptName(e),e.path)}))}unloadScript(e,t){if(!t.endsWith(".md"))return;delete this.scriptIconMap[t],this.scriptIconMap=Object.assign({},this.scriptIconMap),this.updateToolPannels();const A=`${PLUGIN_ID}:${e}`;app.commands.commands[A]&&delete app.commands.commands[A]}async executeScript(e,t,A,i){if(!e||!t||!A)return;this.plugin.ea.reset(),this.plugin.ea.setView(e),this.plugin.ea.activeScript=A;const n=Object.getPrototypeOf((async()=>{})).constructor;let a=null;return a=await new n("ea","utils",t)(this.plugin.ea,{inputPrompt:(t,A,i,n,a,r,s,o)=>ScriptEngine.inputPrompt(e,this.plugin,app,t,A,i,n,a,r,s,o),suggester:(e,t,A,i)=>ScriptEngine.suggester(app,e,t,A,i),scriptFile:i}),this.plugin.ea.activeScript=null,a}updateToolPannels(){app.workspace.getLeavesOfType("excalidraw").forEach((e=>{var t,A;null===(A=null===(t=e.view.toolsPanelRef)||void 0===t?void 0:t.current)||void 0===A||A.updateScriptIconMap(this.scriptIconMap)}))}static async inputPrompt(e,t,A,i,n,a,r,s,o,l,c){try{return await GenericInputPrompt.Prompt(e,t,A,i,n,a,r,s,o,l,c)}catch(e){return}}static async suggester(e,t,A,i,n){try{return await GenericSuggester.Suggest(e,t,A,i,n)}catch(e){return}}}var t$c={d:(e,t)=>{for(var A in t)t$c.o(t,A)&&!t$c.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},r$e={};t$c.d(r$e,{QA:()=>w$1,ZP:()=>j$1,qt:()=>x$1,MX:()=>$});const e$d={red:"hsl(0, 100%, 50%)",orange:"hsl(30, 100%, 50%)",yellow:"hsl(60, 100%, 50%)","lime green":"hsl(90, 100%, 50%)",green:"hsl(120, 100%, 50%)","blue green":"hsl(150, 100%, 50%)",cyan:"hsl(180, 100%, 50%)","sky blue":"hsl(210, 100%, 50%)",blue:"hsl(240, 100%, 50%)",purple:"hsl(270, 100%, 50%)",magenta:"hsl(300, 100%, 50%)",pink:"hsl(330, 100%, 50%)"};function s$a(e,t,A){return Math.max(e,Math.min(t,A))}function n$c(e,t){return+e.toFixed(t>=0?t:0)}function a$c(e){const t=e%360;return t<0?t+360:t}function i$a(e){return void 0!==e?s$a(0,e,1):1}function o$b(e){return Math.floor(Math.random()*e)}function h$4(e){var t;const{Cmin:A,Cmax:i,H:n,delta:a}=function(e){const[t,A,i]=Object.values(e).map((e=>e/255)),n=Math.max(t,A,i),a=Math.min(t,A,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===t?(A-i)/r%6:n===A?(i-t)/r+2:(t-A)/r+4,delta:r}}(e),r=(i+A)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:a$c(60*n),s:100*s,l:100*r,a:null!==(t=e.a)&&void 0!==t?t:1}}function u$8(e){const{h:t,s:A,l:i,a:n}=e,a=i/100,r=A/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(t/60%2-1)),l=a-s/2,c=t<60||300<=t&&t<360?s:120<=t&&t<240?0:o,d=240<=t&&t<360?0:60<=t&&t<180?s:o,h=t<120?0:180<=t&&t<300?s:o,[u,g,p]=[c,d,h].map((e=>255*(e+l)));return{r:u,g:g,b:p,a:null!=n?n:1}}function l$5(e){const[t,A,i,n]=Object.values(e).map((e=>parseInt(e,16)));return{r:t,g:A,b:i,a:n?n/255:1}}const c$a=/^#?([\da-f])([\da-f])([\da-f])([\da-f])?$|^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})?([\da-f]{2})?$/gi,f$3=/hsla?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function d$2({h:e,s:t,l:A,a:i}){return[u$8({h:a$c(e),s:s$a(0,t,100),l:s$a(0,A,100),a:i$a(i)}),"hsl"]}const g$2=/rgba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b$5({r:e,g:t,b:A,a:i}){return[{r:s$a(0,e,255),g:s$a(0,t,255),b:s$a(0,A,255),a:i$a(i)},"rgb"]}var p$3,v$2,m$1=function(e,t,A,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(e,A):n?n.value=A:t.set(e,A),A},y$1=function(e,t,A,i){if("a"===A&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===A?i:"a"===A?i.call(e):i?i.value:t.get(e)};class w$1{constructor(e){var t,A;p$3.set(this,{r:0,g:0,b:0,a:1}),v$2.set(this,"rgb");const i=w$1.Parsers.map((t=>t(e))).find((e=>"invalid"!==e[1]));i?(t=this,A=this,[{set value(e){m$1(t,p$3,e,"f")}}.value,{set value(e){m$1(A,v$2,e,"f")}}.value]=i):m$1(this,v$2,"invalid","f")}get red(){return y$1(this,p$3,"f").r}get blue(){return y$1(this,p$3,"f").b}get green(){return y$1(this,p$3,"f").g}get alpha(){return y$1(this,p$3,"f").a}get hue(){return h$4(y$1(this,p$3,"f")).h}get saturation(){return h$4(y$1(this,p$3,"f")).s}get lightness(){return h$4(y$1(this,p$3,"f")).l}get format(){return y$1(this,v$2,"f")}isValid(){return"invalid"!==y$1(this,v$2,"f")}rgba(){return y$1(this,p$3,"f")}hsla(){return h$4(y$1(this,p$3,"f"))}hexa({round:e=!1}={}){return function(e,t=!1){let{r:A,g:i,b:n,a:a}=e;a&&(a*=255),t&&([A,i,n,a]=[A,i,n,a].map((e=>e&&Math.round(e))));const[r,s,o,l]=[A,i,n,null!=a?a:255].map((e=>e.toString(16).padStart(2,"0").toUpperCase()));return{r:r,g:s,b:o,a:l}}(y$1(this,p$3,"f"),e)}stringRGB({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(y$1(this,p$3,"f")).map(((e,A)=>n$c(e,t[A])));return e?`rgba(${A}, ${i}, ${n}, ${a})`:`rgb(${A}, ${i}, ${n})`}stringHEX({alpha:e=!0}={}){const[t,A,i,n]=Object.values(this.hexa({round:!0}));return`#${t}${A}${i}${e?n:""}`}stringHSL({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.hsla()).map(((e,A)=>n$c(e,t[A])));return e?`hsla(${A}, ${i}%, ${n}%, ${a})`:`hsl(${A}, ${i}%, ${n}%)`}hueTo(e){var t;const{h:A,s:i,l:n,a:a}=this.hsla(),r="number"==typeof e?a$c(e):Number(null!==(t=e$d[e].match(/\d{1,3}/))&&void 0!==t?t:A);return m$1(this,p$3,u$8({h:r,s:i,l:n,a:a}),"f"),this}hueBy(e){const{h:t,s:A,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:a$c(t+e),s:A,l:i,a:n}),"f"),this}saturationTo(e){const{h:t,l:A,a:i}=this.hsla();return m$1(this,p$3,u$8({h:t,s:s$a(0,e,100),l:A,a:i}),"f"),this}saturateBy(e){const{h:t,s:A,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:t,s:s$a(0,A+e,100),l:i,a:n}),"f"),this}desaturateBy(e){return this.saturateBy(-1*e)}lightnessTo(e){const{h:t,s:A,a:i}=this.hsla();return m$1(this,p$3,u$8({h:t,s:A,l:s$a(0,e,100),a:i}),"f"),this}lighterBy(e){const{h:t,s:A,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:t,s:A,l:s$a(0,i+e,100),a:n}),"f"),this}darkerBy(e){return this.lighterBy(-1*e)}alphaTo(e){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,e,1)}),"f"),this}alphaBy(e){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,y$1(this,p$3,"f").a+e,1)}),"f"),this}invert({alpha:e=!1}={}){const{r:t,g:A,b:i,a:n}=y$1(this,p$3,"f");return m$1(this,p$3,{r:255-t,g:255-A,b:255-i,a:e?1-n:n},"f"),this}grayscale(){return this.desaturateBy(100)}rotate(e){return this.hueBy(e)}}function $(){return new w$1({r:o$b(255),g:o$b(255),b:o$b(255),a:Math.random()})}function x$1(e){(e=e.filter(((e,t,A)=>A.indexOf(e)===t))).forEach((e=>e(w$1)))}p$3=new WeakMap,v$2=new WeakMap,w$1.Parsers=[function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:t,g:A,b:i}=e;return void 0!==t&&void 0!==A&&void 0!==i&&"number"==typeof t}(e))return b$5(e);if("string"==typeof e){g$2.lastIndex=0;const t=g$2.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?2.55:.01):+e));return b$5({r:e,g:A,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:t,g:A,b:i}=e;return void 0!==t&&void 0!==A&&void 0!==i&&"string"==typeof t}(e))return[l$5(e),"hex"];if("string"==typeof e){c$a.lastIndex=0;const t=c$a.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map((e=>1===e.length?e.repeat(2):e));return[l$5({r:e,g:A,b:i,a:null!=n?n:"FF"}),"hex"]}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:t,s:A,l:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return d$2(e);if("string"==typeof e){f$3.lastIndex=0;const t=f$3.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?3.59:t<3?1:.01):+e));return d$2({h:e,s:A,l:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}];const j$1=e=>new w$1(e);r$e.QA;var O$1=r$e.ZP,B=r$e.qt;r$e.MX;var e$c={d:(e,t)=>{for(var A in t)e$c.o(t,A)&&!e$c.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},a$b={};function t$b(e){const t=e%360;return t<0?t+360:t}e$c.d(a$b,{Z:()=>n$b});const n$b=e=>{e.prototype.harmony=function({type:t="analogous",effect:A="tones",amount:i=5}={}){const{h:n,s:a,l:r,a:s}=this.hsla();switch("monochromatic"===t&&(o=i,i=Math.max(2,Math.min(o,10))),t){case"analogous":return[-30,0,30].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"complementary":return[0,180].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"split-complementary":return[0,150,210].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"double-split-complementary":return[-30,0,30,150,210].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"triad":return[0,120,240].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"rectangle":return[0,60,180,240].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"square":return[0,90,180,270].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"monochromatic":{const t="tones"===A?a:r;let o=("tints"===A?100-t:t)/i;o="tints"===A?o:-1*o;const l=[t];for(let e=0;enew e({h:n,s:t,l:r,a:s}))):l.map((t=>new e({h:n,s:a,l:t,a:s})))}}var o}};var r$d=a$b.Z,a$a={d:(e,t)=>{for(var A in t)a$a.o(t,A)&&!a$a.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t$a={};a$a.d(t$a,{Z:()=>k});const e$b=6/29,n$a=Math.pow(e$b,3),c$9=Math.pow(29/3,3),r$c={x:.96422,y:1,z:.82521};function u$7(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function s$9(e,t,A){return Math.max(e,Math.min(t,A))}function o$a(e){const t=e%360;return t<0?t+360:t}function l$4(e){const[t,A,i]=Object.values(e).map((e=>e/255)),n=Math.max(t,A,i),a=Math.min(t,A,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===t?(A-i)/r%6:n===A?(i-t)/r+2:(t-A)/r+4,delta:r}}function b$4(e){var t;const{Cmin:A,Cmax:i,H:n,delta:a}=l$4(e),r=(i+A)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:o$a(60*n),s:100*s,l:100*r,a:null!==(t=e.a)&&void 0!==t?t:1}}function h$3(e){var t;const{Cmax:A,H:i,delta:n}=l$4(e),a=0===n?0:n/A;return{h:o$a(60*i),s:100*a,v:100*A,a:null!==(t=e.a)&&void 0!==t?t:1}}function v$1(e){const{h:t,a:A}=b$4(e),{r:i,g:n,b:a}=e;return{h:t,w:Math.min(i,n,a)/2.55,b:100*(1-Math.max(i,n,a)/255),a:A}}function i$9(e){const[t,A,i]=u$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=u$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}function m(e){const t=Object.values(i$9(e)).map(((e,t)=>e/(100*Object.values(r$c)[t]))).map((e=>e>n$a?Math.cbrt(e):(c$9*e+16)/116));return{l:116*t[1]-16,a:500*(t[0]-t[1]),b:200*(t[1]-t[2]),alpha:e.a}}function p$2(e){const{l:t,a:A,b:i}=m(e),n=180*Math.atan2(i,A)/Math.PI;return{l:t,c:Math.sqrt(Math.pow(A,2)+Math.pow(i,2)),h:o$a(n),a:e.a}}function f$2(e){const[t,A,i]=Object.values(i$9(e)).map((e=>e/100)),n=A/r$c.y,a=t&&A&&i?t+15*A+3*i:19,r=4*t/a,s=9*A/a,o=r$c.x+15*r$c.y+3*r$c.z,l=4*r$c.x/o,c=9*r$c.y/o;let d=n>n$a?116*Math.cbrt(n)-16:c$9*n,h=13*d*(r-l),u=13*d*(s-c);return d===Number(-0)&&(d=0),h===Number(-0)&&(h=0),u===Number(-0)&&(u=0),{l:d,u:h,v:u,a:e.a}}function M(e){const{x:t,y:A,z:i}=i$9(e),[n,a,r]=u$7([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[t,A,i]);return{u:n,v:a,w:r,a:e.a}}function w(e){let{r:t,g:A,b:i}=e;const n=Math.min(t,A,i);[t,A,i]=[t,A,i].map((e=>e-n));const a=Math.max(t,A,i);let r=Math.min(t,A);t-=r,A-=r,i&&A&&(i/=2,A/=2),r+=A,i+=A;const s=Math.max(t,r,i);if(s){const e=a/s;[t,r,i]=[t,r,i].map((t=>t*e))}return[t,r,i]=[t,r,i].map((e=>e+n)),{r:t,y:r,b:i,a:e.a}}function O(e){const{r:t,g:A,b:i,a:n}=e,a=1-Math.max(t,A,i)/255,[r,s,o]=1===a?[0,0,0]:[t,A,i].map((e=>100*(1-e/255-a)/(1-a)));return{c:r,m:s,y:o,k:100*a,a:n}}function j(e){const{h:t,s:A,v:i,a:n}=e,a=i/100,r=a*(A/100),s=r*(1-Math.abs(t/60%2-1)),o=a-r,l=t<60||300<=t&&t<360?r:120<=t&&t<240?0:s,c=240<=t&&t<360?0:60<=t&&t<180?r:s,d=t<120?0:180<=t&&t<300?r:s,[h,u,g]=[l,c,d].map((e=>255*(e+o)));return{r:h,g:u,b:g,a:null!=n?n:1}}function x(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=u$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=u$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return s$9(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}function y(e){const{l:t,a:A,b:i}=e,n=(t+16)/116,a=n+A/500,r=n-i/200,s=Object.values(r$c),[o,l,c]=[a,n,r].map(((e,t)=>(e>e$b?Math.pow(e,3):3*Math.pow(e$b,2)*(e-4/29))*s[t]*100));return x({x:o,y:l,z:c,a:e.alpha})}const k=e=>{e.prototype.mix=function({color:t="#fff",ratio:A=.5,colorspace:i="luv"}={}){const n=this.rgba(),a=(t instanceof e?t:new e(t)).rgba();let r,s;switch(A=s$9(0,A,1),i){case"hsl":r=Object.values(b$4(n)),s=Object.values(b$4(a));break;case"hsv":r=Object.values(h$3(n)),s=Object.values(h$3(a));break;case"hwb":r=Object.values(v$1(n)),s=Object.values(v$1(a));break;case"lab":r=Object.values(m(n)),s=Object.values(m(a));break;case"lch":r=Object.values(p$2(n)),s=Object.values(p$2(a));break;case"luv":r=Object.values(f$2(n)),s=Object.values(f$2(a));break;case"ryb":r=Object.values(w(n)),s=Object.values(w(a));break;case"uvw":r=Object.values(M(n)),s=Object.values(M(a));break;case"xyz":r=Object.values(i$9(n)),s=Object.values(i$9(a));break;case"cmyk":r=Object.values(O(n)),s=Object.values(O(a));break;default:r=Object.values(n),s=Object.values(a)}const[o,l,c,d,h]=r.map(((e,t)=>r[t]*(1-A)+s[t]*A));switch(i){case"hsl":return new e(function(e){const{h:t,s:A,l:i,a:n}=e,a=i/100,r=A/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(t/60%2-1)),l=a-s/2,c=t<60||300<=t&&t<360?s:120<=t&&t<240?0:o,d=240<=t&&t<360?0:60<=t&&t<180?s:o,h=t<120?0:180<=t&&t<300?s:o,[u,g,p]=[c,d,h].map((e=>255*(e+l)));return{r:u,g:g,b:p,a:null!=n?n:1}}({h:o,s:l,l:c,a:d}));case"hsv":return new e(j({h:o,s:l,v:c,a:d}));case"hwb":return new e(function(e){const{h:t,b:A,w:i,a:n}=e;return j({h:t,s:100===A?0:100-i/(100-A)*100,v:100-A,a:n})}({h:o,w:l,b:c,a:d}));case"lab":return new e(y({l:o,a:l,b:c,alpha:d}));case"lch":return new e(function(e){const{l:t,c:A,h:i}=e;return y({l:t,a:A*Math.cos(i*Math.PI/180),b:A*Math.sin(i*Math.PI/180),alpha:e.a})}({l:o,c:l,h:c,a:d}));case"luv":return new e(function(e){const{l:t,u:A,v:i}=e,n=t>c$9*n$a?Math.pow((t+16)/116,3):t/c$9,a=r$c.x+15*r$c.y+3*r$c.z,r=(52*t/(A&&t?A+13*t*(4*r$c.x/a):1)-1)/3,s=-5*n,o=n*(39*t/(i&&t?i+13*t*(9*r$c.y/a):1)-5),l=r===-1/3?o-s:(o-s)/(r- -1/3);return x({x:100*l,y:100*n,z:100*(r*l+s),a:e.a})}({l:o,u:l,v:c,a:d}));case"ryb":return new e(function(e){let{r:t,y:A,b:i}=e;const n=Math.min(t,A,i);[t,A,i]=[t,A,i].map((e=>e-n));const a=Math.max(t,A,i);let r=Math.min(A,i);A-=r,i-=r,i&&r&&(i*=2,r*=2),t+=A,r+=A;const s=Math.max(t,r,i);if(s){const e=a/s;[t,r,i]=[t,r,i].map((t=>t*e))}return[t,r,i]=[t,r,i].map((e=>e+n)),{r:t,g:r,b:i,a:e.a}}({r:o,y:l,b:c,a:d}));case"uvw":return new e(function(e){const{u:t,v:A,w:i}=e,[n,a,r]=u$7([[1.5,0,0],[0,1,0],[1.5,-3,2]],[t,A,i]);return x({x:n,y:a,z:r,a:e.a})}({u:o,v:l,w:c,a:d}));case"xyz":return new e(x({x:o,y:l,z:c,a:d}));case"cmyk":return new e(function(e){const{c:t,m:A,y:i,k:n,a:a}=e,[r,s,o]=[t,A,i].map((e=>255*(1-e/100)*(1-n/100)));return{r:r,g:s,b:o,a:a}}({c:o,m:l,y:c,k:d,a:h}));default:return new e({r:o,g:l,b:c,a:d})}}};var z=t$a.Z,r$b={d:(e,t)=>{for(var A in t)r$b.o(t,A)&&!r$b.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},b$3={};r$b.d(b$3,{Z:()=>n$9});const g$1=["rgb(0,0,0)","rgb(0,0,51)","rgb(0,0,102)","rgb(0,0,153)","rgb(0,0,204)","rgb(0,0,255)","rgb(0,51,0)","rgb(0,51,51)","rgb(0,51,102)","rgb(0,51,153)","rgb(0,51,204)","rgb(0,51,255)","rgb(0,102,0)","rgb(0,102,51)","rgb(0,102,102)","rgb(0,102,153)","rgb(0,102,204)","rgb(0,102,255)","rgb(0,153,0)","rgb(0,153,51)","rgb(0,153,102)","rgb(0,153,153)","rgb(0,153,204)","rgb(0,153,255)","rgb(0,204,0)","rgb(0,204,51)","rgb(0,204,102)","rgb(0,204,153)","rgb(0,204,204)","rgb(0,204,255)","rgb(0,255,0)","rgb(0,255,51)","rgb(0,255,102)","rgb(0,255,153)","rgb(0,255,204)","rgb(0,255,255)","rgb(51,0,0)","rgb(51,0,51)","rgb(51,0,102)","rgb(51,0,153)","rgb(51,0,204)","rgb(51,0,255)","rgb(51,51,0)","rgb(51,51,51)","rgb(51,51,102)","rgb(51,51,153)","rgb(51,51,204)","rgb(51,51,255)","rgb(51,102,0)","rgb(51,102,51)","rgb(51,102,102)","rgb(51,102,153)","rgb(51,102,204)","rgb(51,102,255)","rgb(51,153,0)","rgb(51,153,51)","rgb(51,153,102)","rgb(51,153,153)","rgb(51,153,204)","rgb(51,153,255)","rgb(51,204,0)","rgb(51,204,51)","rgb(51,204,102)","rgb(51,204,153)","rgb(51,204,204)","rgb(51,204,255)","rgb(51,255,0)","rgb(51,255,51)","rgb(51,255,102)","rgb(51,255,153)","rgb(51,255,204)","rgb(51,255,255)","rgb(102,0,0)","rgb(102,0,51)","rgb(102,0,102)","rgb(102,0,153)","rgb(102,0,204)","rgb(102,0,255)","rgb(102,51,0)","rgb(102,51,51)","rgb(102,51,102)","rgb(102,51,153)","rgb(102,51,204)","rgb(102,51,255)","rgb(102,102,0)","rgb(102,102,51)","rgb(102,102,102)","rgb(102,102,153)","rgb(102,102,204)","rgb(102,102,255)","rgb(102,153,0)","rgb(102,153,51)","rgb(102,153,102)","rgb(102,153,153)","rgb(102,153,204)","rgb(102,153,255)","rgb(102,204,0)","rgb(102,204,51)","rgb(102,204,102)","rgb(102,204,153)","rgb(102,204,204)","rgb(102,204,255)","rgb(102,255,0)","rgb(102,255,51)","rgb(102,255,102)","rgb(102,255,153)","rgb(102,255,204)","rgb(102,255,255)","rgb(153,0,0)","rgb(153,0,51)","rgb(153,0,102)","rgb(153,0,153)","rgb(153,0,204)","rgb(153,0,255)","rgb(153,51,0)","rgb(153,51,51)","rgb(153,51,102)","rgb(153,51,153)","rgb(153,51,204)","rgb(153,51,255)","rgb(153,102,0)","rgb(153,102,51)","rgb(153,102,102)","rgb(153,102,153)","rgb(153,102,204)","rgb(153,102,255)","rgb(153,153,0)","rgb(153,153,51)","rgb(153,153,102)","rgb(153,153,153)","rgb(153,153,204)","rgb(153,153,255)","rgb(153,204,0)","rgb(153,204,51)","rgb(153,204,102)","rgb(153,204,153)","rgb(153,204,204)","rgb(153,204,255)","rgb(153,255,0)","rgb(153,255,51)","rgb(153,255,102)","rgb(153,255,153)","rgb(153,255,204)","rgb(153,255,255)","rgb(204,0,0)","rgb(204,0,51)","rgb(204,0,102)","rgb(204,0,153)","rgb(204,0,204)","rgb(204,0,255)","rgb(204,51,0)","rgb(204,51,51)","rgb(204,51,102)","rgb(204,51,153)","rgb(204,51,204)","rgb(204,51,255)","rgb(204,102,0)","rgb(204,102,51)","rgb(204,102,102)","rgb(204,102,153)","rgb(204,102,204)","rgb(204,102,255)","rgb(204,153,0)","rgb(204,153,51)","rgb(204,153,102)","rgb(204,153,153)","rgb(204,153,204)","rgb(204,153,255)","rgb(204,204,0)","rgb(204,204,51)","rgb(204,204,102)","rgb(204,204,153)","rgb(204,204,204)","rgb(204,204,255)","rgb(204,255,0)","rgb(204,255,51)","rgb(204,255,102)","rgb(204,255,153)","rgb(204,255,204)","rgb(204,255,255)","rgb(255,0,0)","rgb(255,0,51)","rgb(255,0,102)","rgb(255,0,153)","rgb(255,0,204)","rgb(255,0,255)","rgb(255,51,0)","rgb(255,51,51)","rgb(255,51,102)","rgb(255,51,153)","rgb(255,51,204)","rgb(255,51,255)","rgb(255,102,0)","rgb(255,102,51)","rgb(255,102,102)","rgb(255,102,153)","rgb(255,102,204)","rgb(255,102,255)","rgb(255,153,0)","rgb(255,153,51)","rgb(255,153,102)","rgb(255,153,153)","rgb(255,153,204)","rgb(255,153,255)","rgb(255,204,0)","rgb(255,204,51)","rgb(255,204,102)","rgb(255,204,153)","rgb(255,204,204)","rgb(255,204,255)","rgb(255,255,0)","rgb(255,255,51)","rgb(255,255,102)","rgb(255,255,153)","rgb(255,255,204)","rgb(255,255,255)"];function t$9(e){return(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function o$9(e,t=[0,0,0,1]){var A,i;return null!==(i=null===(A=e.match(/\d{1,3}/g))||void 0===A?void 0:A.map((e=>+e)))&&void 0!==i?i:t}const n$9=e=>{e.prototype.brightness=function({precision:e=4,percentage:t=!1}={}){const{r:A,g:i,b:n}=this.rgba(),a=+((.299*A+.587*i+.114*n)/255).toFixed(e);return t?100*a:a},e.prototype.luminance=function({precision:e=4,percentage:t=!1}={}){const{r:A,g:i,b:n}=this.rgba(),a=+(.2126*t$9(A)+.7152*t$9(i)+.0722*t$9(n)).toFixed(e);return t?100*a:a},e.prototype.contrast=function({bgColor:t="#fff",precision:A=4,ratio:i=!1}={}){const n=this.luminance(),a=(t instanceof e?t:new e(t)).luminance(),r=((Math.max(n,a)+.05)/(Math.min(n,a)+.05)).toFixed(A);return i?r+":1":+r},e.prototype.readableOn=function({bgColor:e="#fff",size:t="body",level:A="minimum"}={}){const i=this.contrast({bgColor:e});return"body"===t&&"enhanced"===A?i>=7:"large"===t&&"minimum"===A?i>=3:i>=4.5},e.prototype.equalTo=function(t="#fff"){const A=Object.values(this.rgba()),i=Object.values((t instanceof e?t:new e(t)).rgba());return A.toString()===i.toString()},e.prototype.isLight=function(){return this.brightness()>=.5},e.prototype.isDark=function(){return!this.isLight()},e.prototype.isCool=function(){const{h:e}=this.hsla();return 75<=e&&e<255},e.prototype.isWarm=function(){return!this.isCool()},e.prototype.isTinted=function(){return this.hsla().l>50},e.prototype.isShaded=function(){return this.hsla().l<50},e.prototype.isToned=function(){return this.hsla().s<100},e.prototype.isPureHue=function({reason:e=!0}={}){return this.isTinted()?!!e&&{pure:!1,reason:"tinted"}:this.isShaded()?!!e&&{pure:!1,reason:"shaded"}:this.isToned()?!!e&&{pure:!1,reason:"toned"}:!e||{pure:!0,reason:"N/A"}},e.prototype.closestCool=function(){const{h:e}=this.hsla();return this.isCool()?this:this.hueTo(e<75?75:254)},e.prototype.closestWarm=function(){const{h:e}=this.hsla();return this.isWarm()?this:this.hueTo(e<165?74:255)},e.prototype.closestPureHue=function(){const{h:t,a:A}=this.hsla(),{r:i,g:n,b:a,a:r}=function(e){const{h:t,s:A,l:i,a:n}=e,a=i/100,r=A/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(t/60%2-1)),l=a-s/2,c=t<60||300<=t&&t<360?s:120<=t&&t<240?0:o,d=240<=t&&t<360?0:60<=t&&t<180?s:o,h=t<120?0:180<=t&&t<300?s:o,[u,g,p]=[c,d,h].map((e=>255*(e+l)));return{r:u,g:g,b:p,a:null!=n?n:1}}({h:t,s:100,l:50,a:A});return new e({r:i,g:n,b:a,a:r})},e.prototype.closestWebSafe=function(){const{r:t,g:A,b:i,a:n}=this.rgba();let[a,r,s]=new Array(3).fill(0),o=Number.POSITIVE_INFINITY,l={r:t,g:A,b:i,a:n};for(let e=0;e{for(var A in t)r$a.o(t,A)&&!r$a.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},g={};r$a.d(g,{Z:()=>a$9});const e$9={maroon:"rgb(128,0,0)","dark red":"rgb(139,0,0)",brown:"rgb(165,42,42)",firebrick:"rgb(178,34,34)",crimson:"rgb(220,20,60)",red:"rgb(255,0,0)",tomato:"rgb(255,99,71)",coral:"rgb(255,127,80)","indian red":"rgb(205,92,92)","light coral":"rgb(240,128,128)","dark salmon":"rgb(233,150,122)",salmon:"rgb(250,128,114)","light salmon":"rgb(255,160,122)","orange red":"rgb(255,69,0)","dark orange":"rgb(255,140,0)",orange:"rgb(255,165,0)",gold:"rgb(255,215,0)","dark golden rod":"rgb(184,134,11)","golden rod":"rgb(218,165,32)","pale golden rod":"rgb(238,232,170)","dark khaki":"rgb(189,183,107)",khaki:"rgb(240,230,140)",olive:"rgb(128,128,0)",yellow:"rgb(255,255,0)","yellow green":"rgb(154,205,50)","dark olive green":"rgb(85,107,47)","olive drab":"rgb(107,142,35)","lawn green":"rgb(124,252,0)","chart reuse":"rgb(127,255,0)","green yellow":"rgb(173,255,47)","dark green":"rgb(0,100,0)",green:"rgb(0,128,0)","forest green":"rgb(34,139,34)",lime:"rgb(0,255,0)","lime green":"rgb(50,205,50)","light green":"rgb(144,238,144)","pale green":"rgb(152,251,152)","dark sea green":"rgb(143,188,143)","medium spring green":"rgb(0,250,154)","spring green":"rgb(0,255,127)","sea green":"rgb(46,139,87)","medium aqua marine":"rgb(102,205,170)","medium sea green":"rgb(60,179,113)","light sea green":"rgb(32,178,170)","dark slate gray":"rgb(47,79,79)",teal:"rgb(0,128,128)","dark cyan":"rgb(0,139,139)",cyan:"rgb(0,255,255)",aqua:"rgb(0,255,255)","light cyan":"rgb(224,255,255)","dark turquoise":"rgb(0,206,209)",turquoise:"rgb(64,224,208)","medium turquoise":"rgb(72,209,204)","pale turquoise":"rgb(175,238,238)","aqua marine":"rgb(127,255,212)","powder blue":"rgb(176,224,230)","cadet blue":"rgb(95,158,160)","steel blue":"rgb(70,130,180)","corn flower blue":"rgb(100,149,237)","deep sky blue":"rgb(0,191,255)","dodger blue":"rgb(30,144,255)","light blue":"rgb(173,216,230)","sky blue":"rgb(135,206,235)","light sky blue":"rgb(135,206,250)","midnight blue":"rgb(25,25,112)",navy:"rgb(0,0,128)","dark blue":"rgb(0,0,139)","medium blue":"rgb(0,0,205)",blue:"rgb(0,0,255)","royal blue":"rgb(65,105,225)","blue violet":"rgb(138,43,226)",indigo:"rgb(75,0,130)","dark slate blue":"rgb(72,61,139)","slate blue":"rgb(106,90,205)","medium slate blue":"rgb(123,104,238)","medium purple":"rgb(147,112,219)","dark magenta":"rgb(139,0,139)","dark violet":"rgb(148,0,211)","dark orchid":"rgb(153,50,204)","medium orchid":"rgb(186,85,211)",purple:"rgb(128,0,128)",thistle:"rgb(216,191,216)",plum:"rgb(221,160,221)",violet:"rgb(238,130,238)",magenta:"rgb(255,0,255)",fuchsia:"rgb(255,0,255)",orchid:"rgb(218,112,214)","medium violet red":"rgb(199,21,133)","pale violet red":"rgb(219,112,147)","deep pink":"rgb(255,20,147)","hot pink":"rgb(255,105,180)","light pink":"rgb(255,182,193)",pink:"rgb(255,192,203)","antique white":"rgb(250,235,215)",beige:"rgb(245,245,220)",bisque:"rgb(255,228,196)","blanched almond":"rgb(255,235,205)",wheat:"rgb(245,222,179)","corn silk":"rgb(255,248,220)","lemon chiffon":"rgb(255,250,205)","light golden rod yellow":"rgb(250,250,210)","light yellow":"rgb(255,255,224)","saddle brown":"rgb(139,69,19)",sienna:"rgb(160,82,45)",chocolate:"rgb(210,105,30)",peru:"rgb(205,133,63)","sandy brown":"rgb(244,164,96)","burly wood":"rgb(222,184,135)",tan:"rgb(210,180,140)","rosy brown":"rgb(188,143,143)",moccasin:"rgb(255,228,181)","navajo white":"rgb(255,222,173)","peach puff":"rgb(255,218,185)","misty rose":"rgb(255,228,225)","lavender blush":"rgb(255,240,245)",linen:"rgb(250,240,230)","old lace":"rgb(253,245,230)","papaya whip":"rgb(255,239,213)","sea shell":"rgb(255,245,238)","mint cream":"rgb(245,255,250)","slate gray":"rgb(112,128,144)","light slate gray":"rgb(119,136,153)","light steel blue":"rgb(176,196,222)",lavender:"rgb(230,230,250)","floral white":"rgb(255,250,240)","alice blue":"rgb(240,248,255)","ghost white":"rgb(248,248,255)",honeydew:"rgb(240,255,240)",ivory:"rgb(255,255,240)",azure:"rgb(240,255,255)",snow:"rgb(255,250,250)",black:"rgb(0,0,0)","dim gray":"rgb(105,105,105)","dim grey":"rgb(105,105,105)",gray:"rgb(128,128,128)",grey:"rgb(128,128,128)","dark gray":"rgb(169,169,169)","dark grey":"rgb(169,169,169)",silver:"rgb(192,192,192)","light gray":"rgb(211,211,211)","light grey":"rgb(211,211,211)",gainsboro:"rgb(220,220,220)",gainsborough:"rgb(220,220,220)","white smoke":"rgb(245,245,245)",white:"rgb(255,255,255)",transparent:"rgba(0,0,0,0)"};function b$2(e,t=[0,0,0,1]){var A,i;return null!==(i=null===(A=e.match(/\d{1,3}/g))||void 0===A?void 0:A.map((e=>+e)))&&void 0!==i?i:t}const a$9=e=>{e.prototype.name=function({exact:e=!0}={}){const{r:t,g:A,b:i,a:n}=this.rgba();if(0===n)return"transparent";const[a,r]=[Object.keys(e$9),Object.values(e$9)];let s;if(e){const e=this.stringRGB({alpha:!1}).replace(/\s/g,"");s=a.find((t=>e$9[t]===e))}else{let e=Number.POSITIVE_INFINITY;for(let n=0;n{for(var A in t)t$8.o(t,A)&&!t$8.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},a$8={};t$8.d(a$8,{Z:()=>d$1});const n$8=6/29,r$9=Math.pow(n$8,3),o$8=Math.pow(29/3,3),e$8={x:.96422,y:1,z:.82521};function c$8(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function s$8(e,t,A){return Math.max(e,Math.min(t,A))}function u$6(e){const t=e%360;return t<0?t+360:t}function i$8(e){const{l:t,a:A,b:i}=function(e){const t=Object.values(function(e){const[t,A,i]=c$8([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=c$8([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}(e)).map(((e,t)=>e/(100*Object.values(e$8)[t]))).map((e=>e>r$9?Math.cbrt(e):(o$8*e+16)/116));return{l:116*t[1]-16,a:500*(t[0]-t[1]),b:200*(t[1]-t[2]),alpha:e.a}}(e),n=180*Math.atan2(i,A)/Math.PI;return{l:t,c:Math.sqrt(Math.pow(A,2)+Math.pow(i,2)),h:u$6(n),a:e.a}}function h$2(e){const{l:t,c:A,h:i}=e;return function(e){const{l:t,a:A,b:i}=e,n=(t+16)/116,a=n+A/500,r=n-i/200,s=Object.values(e$8),[o,l,c]=[a,n,r].map(((e,t)=>(e>n$8?Math.pow(e,3):3*Math.pow(n$8,2)*(e-4/29))*s[t]*100));return function(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=c$8([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=c$8([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return s$8(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}({x:o,y:l,z:c,a:e.alpha})}({l:t,a:A*Math.cos(i*Math.PI/180),b:A*Math.sin(i*Math.PI/180),alpha:e.a})}const l$2=/lcha?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function p$1({l:e,c:t,h:A,a:i}){return[h$2({l:s$8(0,e,100),c:s$8(0,t,230),h:u$6(A),a:(n=i,void 0!==n?s$8(0,n,1):1)}),"lch"];var n}function f$1(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:t,c:A,h:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return p$1(e);if("string"==typeof e){l$2.lastIndex=0;const t=l$2.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?1:1===t?2.3:2===t?3.59:.01):+e));return p$1({l:e,c:A,h:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d$1=e=>{e.prototype.lcha=function(){return i$8(this.rgba())},e.prototype.stringLCH=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.lcha()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`lcha(${A}%, ${i}, ${n}, ${a})`:`lch(${A}%, ${i}, ${n})`},e.Parsers.push(f$1)};var b$1=a$8.Z,t$7={d:(e,t)=>{for(var A in t)t$7.o(t,A)&&!t$7.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$7={};t$7.d(n$7,{Z:()=>l$1});const r$8=Math.pow(6/29,3),e$7=Math.pow(29/3,3);function o$7(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function a$7(e,t,A){return Math.max(e,Math.min(t,A))}function u$5(e){const{l:t,u:A,v:i}=e,n=t>e$7*r$8?Math.pow((t+16)/116,3):t/e$7,a=(52*t/(A&&t?A+13*t*.20916005282038627:1)-1)/3,r=-5*n,s=n*(39*t/(i&&t?i+13*t*(9/18.43985):1)-5),o=a===-1/3?s-r:(s-r)/(a- -1/3);return function(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=o$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=o$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return a$7(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}({x:100*o,y:100*n,z:100*(a*o+r),a:e.a})}const c$7=/color\s*\(\s*luva?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$7({l:e,u:t,v:A,a:i}){return[u$5({l:a$7(0,e,100),u:a$7(-100,t,100),v:a$7(-100,A,100),a:(n=i,void 0!==n?a$7(0,n,1):1)}),"luv"];var n}function i$7(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:t,u:A,v:i}=e;return void 0!==t&&void 0!==A&&null!=i}(e))return s$7(e);if("string"==typeof e){c$7.lastIndex=0;const t=c$7.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?1:.01):+e));return s$7({l:e,u:A,v:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const l$1=e=>{e.prototype.luva=function(){return function(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=o$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=o$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}(e)).map((e=>e/100)),n=A/1,a=t&&A&&i?t+15*A+3*i:19,r=4*t/a,s=9*A/a;let o=n>r$8?116*Math.cbrt(n)-16:e$7*n,l=13*o*(r-.20916005282038627),c=13*o*(s-.48807338454488514);return o===Number(-0)&&(o=0),l===Number(-0)&&(l=0),c===Number(-0)&&(c=0),{l:o,u:l,v:c,a:e.a}}(this.rgba())},e.prototype.stringLUV=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.luva()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`color(luva ${A}%, ${i}%, ${n}%, ${a})`:`color(luv ${A}%, ${i}%, ${n}%)`},e.Parsers.push(i$7)};var v=n$7.Z,t$6={d:(e,t)=>{for(var A in t)t$6.o(t,A)&&!t$6.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},a$6={};t$6.d(a$6,{Z:()=>d});const n$6=6/29,r$7=Math.pow(n$6,3),e$6=Math.pow(29/3,3),o$6={x:.96422,y:1,z:.82521};function c$6(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function s$6(e,t,A){return Math.max(e,Math.min(t,A))}function u$4(e){return void 0!==e?s$6(0,e,1):1}function i$6(e){const t=Object.values(function(e){const[t,A,i]=c$6([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=c$6([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}(e)).map(((e,t)=>e/(100*Object.values(o$6)[t]))).map((e=>e>r$7?Math.cbrt(e):(e$6*e+16)/116));return{l:116*t[1]-16,a:500*(t[0]-t[1]),b:200*(t[1]-t[2]),alpha:e.a}}function l(e){const{l:t,a:A,b:i}=e,n=(t+16)/116,a=n+A/500,r=n-i/200,s=Object.values(o$6),[o,l,c]=[a,n,r].map(((e,t)=>(e>n$6?Math.pow(e,3):3*Math.pow(n$6,2)*(e-4/29))*s[t]*100));return function(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=c$6([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=c$6([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return s$6(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}({x:o,y:l,z:c,a:e.alpha})}const p=/laba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b({l:e,a:t,b:A,alpha:i}){return[l({l:s$6(0,e,100),a:s$6(-160,t,160),b:s$6(-160,A,160),alpha:u$4(i)}),"lab"]}function f(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:t,a:A,b:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return b(e);if("string"==typeof e){p.lastIndex=0;const t=p.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?1:.01):+e));return b({l:e,a:A,b:i,alpha:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d=e=>{e.prototype.laba=function(){return i$6(this.rgba())},e.prototype.stringLAB=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.laba()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`laba(${A}%, ${i}, ${n}, ${a})`:`lab(${A}%, ${i}, ${n})`},e.Parsers.push(f)};var h$1=a$6.Z,t$5={d:(e,t)=>{for(var A in t)t$5.o(t,A)&&!t$5.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$5={};function r$6(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function o$5(e,t,A){return Math.max(e,Math.min(t,A))}function e$5(e){const{u:t,v:A,w:i}=e,[n,a,r]=r$6([[1.5,0,0],[0,1,0],[1.5,-3,2]],[t,A,i]);return function(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=r$6([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=r$6([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return o$5(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}({x:n,y:a,z:r,a:e.a})}t$5.d(n$5,{Z:()=>s$5});const a$5=/color\s*\(\s*uvwa?\s*(\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function u$3({u:e,v:t,w:A,a:i}){return[e$5({u:o$5(0,e,200/3*.96422),v:o$5(0,t,100),w:o$5(-48.211,A,191.2605),a:(n=i,void 0!==n?o$5(0,n,1):1)}),"uvw"];var n}function c$5(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{u:t,v:A,w:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return u$3(e);if("string"==typeof e){a$5.lastIndex=0;const t=a$5.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map((e=>e.includes("%")?.01*+e.slice(0,-1):+e));return u$3({u:e,v:A,w:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const s$5=e=>{e.prototype.uvwa=function(){return function(e){const{x:t,y:A,z:i}=function(e){const[t,A,i]=r$6([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=r$6([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}(e),[n,a,r]=r$6([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[t,A,i]);return{u:n,v:a,w:r,a:e.a}}(this.rgba())},e.prototype.stringUVW=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.uvwa()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`color(uvwa ${A}, ${i}, ${n}, ${a})`:`color(uvw ${A}, ${i}, ${n})`},e.Parsers.push(c$5)};var i$5=n$5.Z,t$4={d:(e,t)=>{for(var A in t)t$4.o(t,A)&&!t$4.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$4={};function r$5(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function o$4(e,t,A){return Math.max(e,Math.min(t,A))}function e$4(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=r$5([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=r$5([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return o$4(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}t$4.d(n$4,{Z:()=>u$2});const a$4=/color\s*\(\s*xyza?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$4({x:e,y:t,z:A,a:i}){return[e$4({x:o$4(0,e,96.422),y:o$4(0,t,100),z:o$4(0,A,82.521),a:(n=i,void 0!==n?o$4(0,n,1):1)}),"xyz"];var n}function c$4(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{x:t,y:A,z:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return s$4(e);if("string"==typeof e){a$4.lastIndex=0;const t=a$4.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map((e=>e.includes("%")?.01*+e.slice(0,-1):+e));return s$4({x:e,y:A,z:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$2=e=>{e.prototype.xyza=function(){return function(e){const[t,A,i]=r$5([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=r$5([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}(this.rgba())},e.prototype.stringXYZ=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.xyza()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`color(xyza ${A}, ${i}, ${n}, ${a})`:`color(xyz ${A}, ${i}, ${n})`},e.Parsers.push(c$4)};var i$4=n$4.Z,t$3={d:(e,t)=>{for(var A in t)t$3.o(t,A)&&!t$3.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$3={};function r$4(e,t,A){return Math.max(e,Math.min(t,A))}function a$3(e){const t=e%360;return t<0?t+360:t}function o$3(e){const{h:t,a:A}=function(e){var t;const{Cmin:A,Cmax:i,H:n,delta:a}=function(e){const[t,A,i]=Object.values(e).map((e=>e/255)),n=Math.max(t,A,i),a=Math.min(t,A,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===t?(A-i)/r%6:n===A?(i-t)/r+2:(t-A)/r+4,delta:r}}(e),r=(i+A)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:a$3(60*n),s:100*s,l:100*r,a:null!==(t=e.a)&&void 0!==t?t:1}}(e),{r:i,g:n,b:a}=e;return{h:t,w:Math.min(i,n,a)/2.55,b:100*(1-Math.max(i,n,a)/255),a:A}}function e$3(e){const{h:t,b:A,w:i,a:n}=e;return function(e){const{h:t,s:A,v:i,a:n}=e,a=i/100,r=a*(A/100),s=r*(1-Math.abs(t/60%2-1)),o=a-r,l=t<60||300<=t&&t<360?r:120<=t&&t<240?0:s,c=240<=t&&t<360?0:60<=t&&t<180?r:s,d=t<120?0:180<=t&&t<300?r:s,[h,u,g]=[l,c,d].map((e=>255*(e+o)));return{r:h,g:u,b:g,a:null!=n?n:1}}({h:t,s:100===A?0:100-i/(100-A)*100,v:100-A,a:n})}t$3.d(n$3,{Z:()=>u$1});const s$3=/hwba?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function i$3({h:e,w:t,b:A,a:i}){return[e$3({h:a$3(e),w:r$4(0,t,100),b:r$4(0,A,100),a:(n=i,void 0!==n?r$4(0,n,1):1)}),"hwb"];var n}function c$3(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:t,w:A,b:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return i$3(e);if("string"==typeof e){s$3.lastIndex=0;const t=s$3.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?3.59:t<3?1:.01):+e));return i$3({h:e,w:A,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$1=e=>{e.prototype.hwba=function(){return o$3(this.rgba())},e.prototype.stringHWB=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.hwba()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`hwba(${a$3(A)}, ${i}%, ${n}%, ${a})`:`hwb(${a$3(A)}, ${i}%, ${n}%)`},e.Parsers.push(c$3)};var h=n$3.Z,t$2={d:(e,t)=>{for(var A in t)t$2.o(t,A)&&!t$2.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$2={};function r$3(e,t,A){return Math.max(e,Math.min(t,A))}function s$2(e){const t=e%360;return t<0?t+360:t}function e$2(e){const{h:t,s:A,v:i,a:n}=e,a=i/100,r=a*(A/100),s=r*(1-Math.abs(t/60%2-1)),o=a-r,l=t<60||300<=t&&t<360?r:120<=t&&t<240?0:s,c=240<=t&&t<360?0:60<=t&&t<180?r:s,d=t<120?0:180<=t&&t<300?r:s,[h,u,g]=[l,c,d].map((e=>255*(e+o)));return{r:h,g:u,b:g,a:null!=n?n:1}}t$2.d(n$2,{Z:()=>c$2});const a$2=/hsva?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o$2({h:e,s:t,v:A,a:i}){return[e$2({h:s$2(e),s:r$3(0,t,100),v:r$3(0,A,100),a:(n=i,void 0!==n?r$3(0,n,1):1)}),"hsv"];var n}function i$2(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:t,s:A,v:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return o$2(e);if("string"==typeof e){a$2.lastIndex=0;const t=a$2.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?3.59:t<3?1:.01):+e));return o$2({h:e,s:A,v:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const c$2=e=>{e.prototype.hsva=function(){return function(e){var t;const{Cmax:A,H:i,delta:n}=function(e){const[t,A,i]=Object.values(e).map((e=>e/255)),n=Math.max(t,A,i),a=Math.min(t,A,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===t?(A-i)/r%6:n===A?(i-t)/r+2:(t-A)/r+4,delta:r}}(e),a=0===n?0:n/A;return{h:s$2(60*i),s:100*a,v:100*A,a:null!==(t=e.a)&&void 0!==t?t:1}}(this.rgba())},e.prototype.stringHSV=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.hsva()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`hsva(${s$2(A)}, ${i}%, ${n}%, ${a})`:`hsv(${s$2(A)}, ${i}%, ${n}%)`},e.Parsers.push(i$2)};var u=n$2.Z,t$1={d:(e,t)=>{for(var A in t)t$1.o(t,A)&&!t$1.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},r$2={};function n$1(e,t,A){return Math.max(e,Math.min(t,A))}function o$1(e){let{r:t,y:A,b:i}=e;const n=Math.min(t,A,i);[t,A,i]=[t,A,i].map((e=>e-n));const a=Math.max(t,A,i);let r=Math.min(A,i);A-=r,i-=r,i&&r&&(i*=2,r*=2),t+=A,r+=A;const s=Math.max(t,r,i);if(s){const e=a/s;[t,r,i]=[t,r,i].map((t=>t*e))}return[t,r,i]=[t,r,i].map((e=>e+n)),{r:t,g:r,b:i,a:e.a}}t$1.d(r$2,{Z:()=>i$1});const a$1=/color\s*\(\s*ryba?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function e$1({r:e,y:t,b:A,a:i}){return[o$1({r:n$1(0,e,255),y:n$1(0,t,255),b:n$1(0,A,255),a:(n=i,void 0!==n?n$1(0,n,1):1)}),"ryb"];var n}function s$1(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:t,y:A,b:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return e$1(e);if("string"==typeof e){a$1.lastIndex=0;const t=a$1.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?2.55:.01):+e));return e$1({r:e,y:A,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i$1=e=>{e.prototype.ryba=function(){return function(e){let{r:t,g:A,b:i}=e;const n=Math.min(t,A,i);[t,A,i]=[t,A,i].map((e=>e-n));const a=Math.max(t,A,i);let r=Math.min(t,A);t-=r,A-=r,i&&A&&(i/=2,A/=2),r+=A,i+=A;const s=Math.max(t,r,i);if(s){const e=a/s;[t,r,i]=[t,r,i].map((t=>t*e))}return[t,r,i]=[t,r,i].map((e=>e+n)),{r:t,y:r,b:i,a:e.a}}(this.rgba())},e.prototype.stringRYB=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.ryba()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`color(ryba ${A}, ${i}, ${n}, ${a})`:`color(ryb ${A}, ${i}, ${n})`},e.Parsers.push(s$1)};var c$1=r$2.Z,t={d:(e,A)=>{for(var i in A)t.o(A,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:A[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n={};function e(e,t,A){return Math.max(e,Math.min(t,A))}function r$1(e){const{c:t,m:A,y:i,k:n,a:a}=e,[r,s,o]=[t,A,i].map((e=>255*(1-e/100)*(1-n/100)));return{r:r,g:s,b:o,a:a}}t.d(n,{Z:()=>i});const c=/device-cmyka?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?),?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o({c:t,m:A,y:i,k:n,a:a}){return[r$1({c:e(0,t,100),m:e(0,A,100),y:e(0,i,100),k:e(0,n,100),a:(r=a,void 0!==r?e(0,r,1):1)}),"cmyk"];var r}function a(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{c:t,m:A,y:i,k:n}=e;return void 0!==t&&void 0!==A&&void 0!==i&&void 0!==n}(e))return o(e);if("string"==typeof e){c.lastIndex=0;const t=c.exec(e);if(t){const[e,A,i,n,a]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<4?1:.01):+e));return o({c:e,m:A,y:i,k:n,a:a})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i=e=>{e.prototype.cmyka=function(){return function(e){const{r:t,g:A,b:i,a:n}=e,a=1-Math.max(t,A,i)/255,[r,s,o]=1===a?[0,0,0]:[t,A,i].map((e=>100*(1-e/255-a)/(1-a)));return{c:r,m:s,y:o,k:100*a,a:n}}(this.rgba())},e.prototype.stringCMYK=function({alpha:e=!0,precision:t=[0,0,0,0,1]}={}){const[A,i,n,a,r]=Object.values(this.cmyka()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`device-cmyk(${A}, ${i}, ${n}, ${a}, ${r})`:`device-cmyk(${A}, ${i}, ${n}, ${a})`},e.Parsers.push(a)};var s=n.Z;class ExcalidrawScene{constructor(e=[]){this.type="excalidraw",this.version=2,this.source=GITHUB_RELEASES+PLUGIN_VERSION,this.elements=[],this.elements=e}toExJSON(){return Object.assign(Object.assign({},this),{elements:this.elements.map((e=>Object.assign({},e)))})}}var ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array;function create$1(){var e=new ARRAY_TYPE(16);return ARRAY_TYPE!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function clone(e){var t=new ARRAY_TYPE(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function fromValues$1(e,t,A,i,n,a,r,s,o,l,c,d,h,u,g,p){var m=new ARRAY_TYPE(16);return m[0]=e,m[1]=t,m[2]=A,m[3]=i,m[4]=n,m[5]=a,m[6]=r,m[7]=s,m[8]=o,m[9]=l,m[10]=c,m[11]=d,m[12]=h,m[13]=u,m[14]=g,m[15]=p,m}function multiply(e,t,A){var i=t[0],n=t[1],a=t[2],r=t[3],s=t[4],o=t[5],l=t[6],c=t[7],d=t[8],h=t[9],u=t[10],g=t[11],p=t[12],m=t[13],f=t[14],w=t[15],E=A[0],b=A[1],B=A[2],v=A[3];return e[0]=E*i+b*s+B*d+v*p,e[1]=E*n+b*o+B*h+v*m,e[2]=E*a+b*l+B*u+v*f,e[3]=E*r+b*c+B*g+v*w,E=A[4],b=A[5],B=A[6],v=A[7],e[4]=E*i+b*s+B*d+v*p,e[5]=E*n+b*o+B*h+v*m,e[6]=E*a+b*l+B*u+v*f,e[7]=E*r+b*c+B*g+v*w,E=A[8],b=A[9],B=A[10],v=A[11],e[8]=E*i+b*s+B*d+v*p,e[9]=E*n+b*o+B*h+v*m,e[10]=E*a+b*l+B*u+v*f,e[11]=E*r+b*c+B*g+v*w,E=A[12],b=A[13],B=A[14],v=A[15],e[12]=E*i+b*s+B*d+v*p,e[13]=E*n+b*o+B*h+v*m,e[14]=E*a+b*l+B*u+v*f,e[15]=E*r+b*c+B*g+v*w,e}function create(){var e=new ARRAY_TYPE(3);return ARRAY_TYPE!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function fromValues(e,t,A){var i=new ARRAY_TYPE(3);return i[0]=e,i[1]=t,i[2]=A,i}function transformMat4(e,t,A){var i=t[0],n=t[1],a=t[2],r=A[3]*i+A[7]*n+A[11]*a+A[15];return r=r||1,e[0]=(A[0]*i+A[4]*n+A[8]*a+A[12])/r,e[1]=(A[1]*i+A[5]*n+A[9]*a+A[13])/r,e[2]=(A[2]*i+A[6]*n+A[10]*a+A[14])/r,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)}),create();const random=new Random(Date.now()),randomInteger=()=>Math.floor(random.next()*2**31),randomId=()=>nanoid$1();function dimensionsFromPoints(e){const t=e.map((([e])=>e)),A=e.map((([,e])=>e)),i=Math.min(...t),n=Math.min(...A);return[Math.max(...t)-i,Math.max(...A)-n]}function getWindingOrder(e){return e.reduce(((e,[t,A],i,n)=>{const a=n[i+1];return((a?a[0]:0)-t)*((a?a[1]:0)+A)+e}),0)>0?"clockwise":"counterclockwise"}var chroma$1={exports:{}}; +/** + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2019, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------- + * + * chroma.js includes colors from colorbrewer2.org, which are released under + * the following license: + * + * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + * and The Pennsylvania State University. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * ------------------------------------------------------ + * + * Named colors are taken from X11 Color Names. + * http://www.w3.org/TR/css3-color/#svg-color + * + * @preserve + */chroma$1.exports,function(e,t){e.exports=function(){for(var e=function(e,t,A){return void 0===t&&(t=0),void 0===A&&(A=1),eA?A:e},t=e,A={},i=0,n=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];i255)&&(e._clipped=!0),e[A]=t(e[A],0,255)):3===A&&(e[A]=t(e[A],0,1));return e},limit:e,type:r,unpack:function(e,t){return void 0===t&&(t=null),e.length>=3?Array.prototype.slice.call(e):"object"==s(e[0])&&t?t.split("").filter((function(t){return void 0!==e[0][t]})).map((function(t){return e[0][t]})):e[0]},last:function(e){if(e.length<2)return null;var t=e.length-1;return"string"==o(e[t])?e[t].toLowerCase():null},PI:l,TWOPI:2*l,PITHIRD:l/3,DEG2RAD:l/180,RAD2DEG:180/l},d={format:{},autodetect:[]},h=c.last,u=c.clip_rgb,g=c.type,p=d,m=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=this;if("object"===g(e[0])&&e[0].constructor&&e[0].constructor===this.constructor)return e[0];var i=h(e),n=!1;if(!i){n=!0,p.sorted||(p.autodetect=p.autodetect.sort((function(e,t){return t.p-e.p})),p.sorted=!0);for(var a=0,r=p.autodetect;a4?e[4]:1;return 1===a?[0,0,0,r]:[A>=1?0:255*(1-A)*(1-a),i>=1?0:255*(1-i)*(1-a),n>=1?0:255*(1-n)*(1-a),r]},x=E,F=f,S=d,T=c.unpack,I=c.type,M=v;F.prototype.cmyk=function(){return M(this._rgb)},x.cmyk=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(F,[null].concat(e,["cmyk"])))},S.format.cmyk=y,S.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=T(e,"cmyk"),"array"===I(e)&&4===e.length)return"cmyk"}});var k=c.unpack,U=c.last,O=function(e){return Math.round(100*e)/100},L=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=k(e,"hsla"),i=U(e)||"lsa";return A[0]=O(A[0]||0),A[1]=O(100*A[1])+"%",A[2]=O(100*A[2])+"%","hsla"===i||A.length>3&&A[3]<1?(A[3]=A.length>3?A[3]:1,i="hsla"):A.length=3,i+"("+A.join(",")+")"},Q=c.unpack,N=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=(e=Q(e,"rgba"))[0],i=e[1],n=e[2];A/=255,i/=255,n/=255;var a,r,s=Math.min(A,i,n),o=Math.max(A,i,n),l=(o+s)/2;return o===s?(a=0,r=Number.NaN):a=l<.5?(o-s)/(o+s):(o-s)/(2-o-s),A==o?r=(i-n)/(o-s):i==o?r=2+(n-A)/(o-s):n==o&&(r=4+(A-i)/(o-s)),(r*=60)<0&&(r+=360),e.length>3&&void 0!==e[3]?[r,a,l,e[3]]:[r,a,l]},D=c.unpack,R=c.last,H=L,P=N,V=Math.round,K=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=D(e,"rgba"),i=R(e)||"rgb";return"hsl"==i.substr(0,3)?H(P(A),i):(A[0]=V(A[0]),A[1]=V(A[1]),A[2]=V(A[2]),("rgba"===i||A.length>3&&A[3]<1)&&(A[3]=A.length>3?A[3]:1,i="rgba"),i+"("+A.slice(0,"rgb"===i?3:4).join(",")+")")},G=c.unpack,W=Math.round,z=function(){for(var e,t=[],A=arguments.length;A--;)t[A]=arguments[A];var i,n,a,r=(t=G(t,"hsl"))[0],s=t[1],o=t[2];if(0===s)i=n=a=255*o;else{var l=[0,0,0],c=[0,0,0],d=o<.5?o*(1+s):o+s-o*s,h=2*o-d,u=r/360;l[0]=u+1/3,l[1]=u,l[2]=u-1/3;for(var g=0;g<3;g++)l[g]<0&&(l[g]+=1),l[g]>1&&(l[g]-=1),6*l[g]<1?c[g]=h+6*(d-h)*l[g]:2*l[g]<1?c[g]=d:3*l[g]<2?c[g]=h+(d-h)*(2/3-l[g])*6:c[g]=h;i=(e=[W(255*c[0]),W(255*c[1]),W(255*c[2])])[0],n=e[1],a=e[2]}return t.length>3?[i,n,a,t[3]]:[i,n,a,1]},X=z,_=d,Y=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,j=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,J=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,q=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,$=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,ee=Math.round,te=function(e){var t;if(e=e.toLowerCase().trim(),_.format.named)try{return _.format.named(e)}catch(e){}if(t=e.match(Y)){for(var A=t.slice(1,4),i=0;i<3;i++)A[i]=+A[i];return A[3]=1,A}if(t=e.match(j)){for(var n=t.slice(1,5),a=0;a<4;a++)n[a]=+n[a];return n}if(t=e.match(J)){for(var r=t.slice(1,4),s=0;s<3;s++)r[s]=ee(2.55*r[s]);return r[3]=1,r}if(t=e.match(Z)){for(var o=t.slice(1,5),l=0;l<3;l++)o[l]=ee(2.55*o[l]);return o[3]=+o[3],o}if(t=e.match(q)){var c=t.slice(1,4);c[1]*=.01,c[2]*=.01;var d=X(c);return d[3]=1,d}if(t=e.match($)){var h=t.slice(1,4);h[1]*=.01,h[2]*=.01;var u=X(h);return u[3]=+t[4],u}};te.test=function(e){return Y.test(e)||j.test(e)||J.test(e)||Z.test(e)||q.test(e)||$.test(e)};var Ae=E,ie=f,ne=d,ae=c.type,re=K,se=te;ie.prototype.css=function(e){return re(this._rgb,e)},Ae.css=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(ie,[null].concat(e,["css"])))},ne.format.css=se,ne.autodetect.push({p:5,test:function(e){for(var t=[],A=arguments.length-1;A-- >0;)t[A]=arguments[A+1];if(!t.length&&"string"===ae(e)&&se.test(e))return"css"}});var oe=f,le=E,ce=c.unpack;d.format.gl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=ce(e,"rgba");return A[0]*=255,A[1]*=255,A[2]*=255,A},le.gl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(oe,[null].concat(e,["gl"])))},oe.prototype.gl=function(){var e=this._rgb;return[e[0]/255,e[1]/255,e[2]/255,e[3]]};var de=c.unpack,he=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A,i=de(e,"rgb"),n=i[0],a=i[1],r=i[2],s=Math.min(n,a,r),o=Math.max(n,a,r),l=o-s,c=100*l/255,d=s/(255-l)*100;return 0===l?A=Number.NaN:(n===o&&(A=(a-r)/l),a===o&&(A=2+(r-n)/l),r===o&&(A=4+(n-a)/l),(A*=60)<0&&(A+=360)),[A,c,d]},ue=c.unpack,ge=Math.floor,pe=function(){for(var e,t,A,i,n,a,r=[],s=arguments.length;s--;)r[s]=arguments[s];var o,l,c,d=(r=ue(r,"hcg"))[0],h=r[1],u=r[2];u*=255;var g=255*h;if(0===h)o=l=c=u;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=ge(d/=60),m=d-p,f=u*(1-h),w=f+g*(1-m),E=f+g*m,b=f+g;switch(p){case 0:o=(e=[b,E,f])[0],l=e[1],c=e[2];break;case 1:o=(t=[w,b,f])[0],l=t[1],c=t[2];break;case 2:o=(A=[f,b,E])[0],l=A[1],c=A[2];break;case 3:o=(i=[f,w,b])[0],l=i[1],c=i[2];break;case 4:o=(n=[E,f,b])[0],l=n[1],c=n[2];break;case 5:o=(a=[b,f,w])[0],l=a[1],c=a[2]}}return[o,l,c,r.length>3?r[3]:1]},me=c.unpack,fe=c.type,we=E,Ee=f,be=d,Be=he;Ee.prototype.hcg=function(){return Be(this._rgb)},we.hcg=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(Ee,[null].concat(e,["hcg"])))},be.format.hcg=pe,be.autodetect.push({p:1,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=me(e,"hcg"),"array"===fe(e)&&3===e.length)return"hcg"}});var ve=c.unpack,Ce=c.last,ye=Math.round,xe=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=ve(e,"rgba"),i=A[0],n=A[1],a=A[2],r=A[3],s=Ce(e)||"auto";void 0===r&&(r=1),"auto"===s&&(s=r<1?"rgba":"rgb");var o="000000"+((i=ye(i))<<16|(n=ye(n))<<8|(a=ye(a))).toString(16);o=o.substr(o.length-6);var l="0"+ye(255*r).toString(16);switch(l=l.substr(l.length-2),s.toLowerCase()){case"rgba":return"#"+o+l;case"argb":return"#"+l+o;default:return"#"+o}},Fe=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Se=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,Te=function(e){if(e.match(Fe)){4!==e.length&&7!==e.length||(e=e.substr(1)),3===e.length&&(e=(e=e.split(""))[0]+e[0]+e[1]+e[1]+e[2]+e[2]);var t=parseInt(e,16);return[t>>16,t>>8&255,255&t,1]}if(e.match(Se)){5!==e.length&&9!==e.length||(e=e.substr(1)),4===e.length&&(e=(e=e.split(""))[0]+e[0]+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]);var A=parseInt(e,16);return[A>>24&255,A>>16&255,A>>8&255,Math.round((255&A)/255*100)/100]}throw new Error("unknown hex color: "+e)},Ie=E,Me=f,ke=c.type,Ue=d,Oe=xe;Me.prototype.hex=function(e){return Oe(this._rgb,e)},Ie.hex=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(Me,[null].concat(e,["hex"])))},Ue.format.hex=Te,Ue.autodetect.push({p:4,test:function(e){for(var t=[],A=arguments.length-1;A-- >0;)t[A]=arguments[A+1];if(!t.length&&"string"===ke(e)&&[3,4,5,6,7,8,9].indexOf(e.length)>=0)return"hex"}});var Le=c.unpack,Qe=c.TWOPI,Ne=Math.min,De=Math.sqrt,Re=Math.acos,He=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A,i=Le(e,"rgb"),n=i[0],a=i[1],r=i[2],s=Ne(n/=255,a/=255,r/=255),o=(n+a+r)/3,l=o>0?1-s/o:0;return 0===l?A=NaN:(A=(n-a+(n-r))/2,A/=De((n-a)*(n-a)+(n-r)*(a-r)),A=Re(A),r>a&&(A=Qe-A),A/=Qe),[360*A,l,o]},Pe=c.unpack,Ve=c.limit,Ke=c.TWOPI,Ge=c.PITHIRD,We=Math.cos,ze=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A,i,n,a=(e=Pe(e,"hsi"))[0],r=e[1],s=e[2];return isNaN(a)&&(a=0),isNaN(r)&&(r=0),a>360&&(a-=360),a<0&&(a+=360),(a/=360)<1/3?i=1-((n=(1-r)/3)+(A=(1+r*We(Ke*a)/We(Ge-Ke*a))/3)):a<2/3?n=1-((A=(1-r)/3)+(i=(1+r*We(Ke*(a-=1/3))/We(Ge-Ke*a))/3)):A=1-((i=(1-r)/3)+(n=(1+r*We(Ke*(a-=2/3))/We(Ge-Ke*a))/3)),[255*(A=Ve(s*A*3)),255*(i=Ve(s*i*3)),255*(n=Ve(s*n*3)),e.length>3?e[3]:1]},Xe=c.unpack,_e=c.type,Ye=E,je=f,Je=d,Ze=He;je.prototype.hsi=function(){return Ze(this._rgb)},Ye.hsi=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(je,[null].concat(e,["hsi"])))},Je.format.hsi=ze,Je.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=Xe(e,"hsi"),"array"===_e(e)&&3===e.length)return"hsi"}});var qe=c.unpack,$e=c.type,et=E,tt=f,At=d,it=N;tt.prototype.hsl=function(){return it(this._rgb)},et.hsl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(tt,[null].concat(e,["hsl"])))},At.format.hsl=z,At.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=qe(e,"hsl"),"array"===$e(e)&&3===e.length)return"hsl"}});var nt=c.unpack,at=Math.min,rt=Math.max,st=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A,i,n,a=(e=nt(e,"rgb"))[0],r=e[1],s=e[2],o=at(a,r,s),l=rt(a,r,s),c=l-o;return n=l/255,0===l?(A=Number.NaN,i=0):(i=c/l,a===l&&(A=(r-s)/c),r===l&&(A=2+(s-a)/c),s===l&&(A=4+(a-r)/c),(A*=60)<0&&(A+=360)),[A,i,n]},ot=c.unpack,lt=Math.floor,ct=function(){for(var e,t,A,i,n,a,r=[],s=arguments.length;s--;)r[s]=arguments[s];var o,l,c,d=(r=ot(r,"hsv"))[0],h=r[1],u=r[2];if(u*=255,0===h)o=l=c=u;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var g=lt(d/=60),p=d-g,m=u*(1-h),f=u*(1-h*p),w=u*(1-h*(1-p));switch(g){case 0:o=(e=[u,w,m])[0],l=e[1],c=e[2];break;case 1:o=(t=[f,u,m])[0],l=t[1],c=t[2];break;case 2:o=(A=[m,u,w])[0],l=A[1],c=A[2];break;case 3:o=(i=[m,f,u])[0],l=i[1],c=i[2];break;case 4:o=(n=[w,m,u])[0],l=n[1],c=n[2];break;case 5:o=(a=[u,m,f])[0],l=a[1],c=a[2]}}return[o,l,c,r.length>3?r[3]:1]},dt=c.unpack,ht=c.type,ut=E,gt=f,pt=d,mt=st;gt.prototype.hsv=function(){return mt(this._rgb)},ut.hsv=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(gt,[null].concat(e,["hsv"])))},pt.format.hsv=ct,pt.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=dt(e,"hsv"),"array"===ht(e)&&3===e.length)return"hsv"}});var ft={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},wt=ft,Et=c.unpack,bt=Math.pow,Bt=function(e){return(e/=255)<=.04045?e/12.92:bt((e+.055)/1.055,2.4)},vt=function(e){return e>wt.t3?bt(e,1/3):e/wt.t2+wt.t0},Ct=function(e,t,A){return e=Bt(e),t=Bt(t),A=Bt(A),[vt((.4124564*e+.3575761*t+.1804375*A)/wt.Xn),vt((.2126729*e+.7151522*t+.072175*A)/wt.Yn),vt((.0193339*e+.119192*t+.9503041*A)/wt.Zn)]},yt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=Et(e,"rgb"),i=A[0],n=A[1],a=A[2],r=Ct(i,n,a),s=r[0],o=r[1],l=116*o-16;return[l<0?0:l,500*(s-o),200*(o-r[2])]},xt=ft,Ft=c.unpack,St=Math.pow,Tt=function(e){return 255*(e<=.00304?12.92*e:1.055*St(e,1/2.4)-.055)},It=function(e){return e>xt.t1?e*e*e:xt.t2*(e-xt.t0)},Mt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A,i,n,a=(e=Ft(e,"lab"))[0],r=e[1],s=e[2];return i=(a+16)/116,A=isNaN(r)?i:i+r/500,n=isNaN(s)?i:i-s/200,i=xt.Yn*It(i),A=xt.Xn*It(A),n=xt.Zn*It(n),[Tt(3.2404542*A-1.5371385*i-.4985314*n),Tt(-.969266*A+1.8760108*i+.041556*n),Tt(.0556434*A-.2040259*i+1.0572252*n),e.length>3?e[3]:1]},kt=c.unpack,Ut=c.type,Ot=E,Lt=f,Qt=d,Nt=yt;Lt.prototype.lab=function(){return Nt(this._rgb)},Ot.lab=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(Lt,[null].concat(e,["lab"])))},Qt.format.lab=Mt,Qt.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=kt(e,"lab"),"array"===Ut(e)&&3===e.length)return"lab"}});var Dt=c.unpack,Rt=c.RAD2DEG,Ht=Math.sqrt,Pt=Math.atan2,Vt=Math.round,Kt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=Dt(e,"lab"),i=A[0],n=A[1],a=A[2],r=Ht(n*n+a*a),s=(Pt(a,n)*Rt+360)%360;return 0===Vt(1e4*r)&&(s=Number.NaN),[i,r,s]},Gt=c.unpack,Wt=yt,zt=Kt,Xt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=Gt(e,"rgb"),i=A[0],n=A[1],a=A[2],r=Wt(i,n,a),s=r[0],o=r[1],l=r[2];return zt(s,o,l)},_t=c.unpack,Yt=c.DEG2RAD,jt=Math.sin,Jt=Math.cos,Zt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=_t(e,"lch"),i=A[0],n=A[1],a=A[2];return isNaN(a)&&(a=0),[i,Jt(a*=Yt)*n,jt(a)*n]},qt=c.unpack,$t=Zt,eA=Mt,tA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=(e=qt(e,"lch"))[0],i=e[1],n=e[2],a=$t(A,i,n),r=a[0],s=a[1],o=a[2],l=eA(r,s,o);return[l[0],l[1],l[2],e.length>3?e[3]:1]},AA=c.unpack,iA=tA,nA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=AA(e,"hcl").reverse();return iA.apply(void 0,A)},aA=c.unpack,rA=c.type,sA=E,oA=f,lA=d,cA=Xt;oA.prototype.lch=function(){return cA(this._rgb)},oA.prototype.hcl=function(){return cA(this._rgb).reverse()},sA.lch=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(oA,[null].concat(e,["lch"])))},sA.hcl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(oA,[null].concat(e,["hcl"])))},lA.format.lch=tA,lA.format.hcl=nA,["lch","hcl"].forEach((function(e){return lA.autodetect.push({p:2,test:function(){for(var t=[],A=arguments.length;A--;)t[A]=arguments[A];if(t=aA(t,e),"array"===rA(t)&&3===t.length)return e}})}));var dA={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},hA=d,uA=c.type,gA=dA,pA=Te,mA=xe;f.prototype.name=function(){for(var e=mA(this._rgb,"rgb"),t=0,A=Object.keys(gA);t0;)t[A]=arguments[A+1];if(!t.length&&"string"===uA(e)&&gA[e.toLowerCase()])return"named"}});var fA=c.unpack,wA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=fA(e,"rgb");return(A[0]<<16)+(A[1]<<8)+A[2]},EA=c.type,bA=function(e){if("number"==EA(e)&&e>=0&&e<=16777215)return[e>>16,e>>8&255,255&e,1];throw new Error("unknown num color: "+e)},BA=E,vA=f,CA=d,yA=c.type,xA=wA;vA.prototype.num=function(){return xA(this._rgb)},BA.num=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(vA,[null].concat(e,["num"])))},CA.format.num=bA,CA.autodetect.push({p:5,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(1===e.length&&"number"===yA(e[0])&&e[0]>=0&&e[0]<=16777215)return"num"}});var FA=E,SA=f,TA=d,IA=c.unpack,MA=c.type,kA=Math.round;SA.prototype.rgb=function(e){return void 0===e&&(e=!0),!1===e?this._rgb.slice(0,3):this._rgb.slice(0,3).map(kA)},SA.prototype.rgba=function(e){return void 0===e&&(e=!0),this._rgb.slice(0,4).map((function(t,A){return A<3?!1===e?t:kA(t):t}))},FA.rgb=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(SA,[null].concat(e,["rgb"])))},TA.format.rgb=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=IA(e,"rgba");return void 0===A[3]&&(A[3]=1),A},TA.autodetect.push({p:3,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=IA(e,"rgba"),"array"===MA(e)&&(3===e.length||4===e.length&&"number"==MA(e[3])&&e[3]>=0&&e[3]<=1))return"rgb"}});var UA=Math.log,OA=function(e){var t,A,i,n=e/100;return n<66?(t=255,A=n<6?0:-155.25485562709179-.44596950469579133*(A=n-2)+104.49216199393888*UA(A),i=n<20?0:.8274096064007395*(i=n-10)-254.76935184120902+115.67994401066147*UA(i)):(t=351.97690566805693+.114206453784165*(t=n-55)-40.25366309332127*UA(t),A=325.4494125711974+.07943456536662342*(A=n-50)-28.0852963507957*UA(A),i=255),[t,A,i,1]},LA=OA,QA=c.unpack,NA=Math.round,DA=E,RA=f,HA=d,PA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];for(var A,i=QA(e,"rgb"),n=i[0],a=i[2],r=1e3,s=4e4;s-r>.4;){var o=LA(A=.5*(s+r));o[2]/o[0]>=a/n?s=A:r=A}return NA(A)};RA.prototype.temp=RA.prototype.kelvin=RA.prototype.temperature=function(){return PA(this._rgb)},DA.temp=DA.kelvin=DA.temperature=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(RA,[null].concat(e,["temp"])))},HA.format.temp=HA.format.kelvin=HA.format.temperature=OA;var VA=c.unpack,KA=Math.cbrt,GA=Math.pow,WA=Math.sign,zA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=VA(e,"rgb"),i=A[0],n=A[1],a=A[2],r=[XA(i/255),XA(n/255),XA(a/255)],s=r[0],o=r[1],l=r[2],c=KA(.4122214708*s+.5363325363*o+.0514459929*l),d=KA(.2119034982*s+.6806995451*o+.1073969566*l),h=KA(.0883024619*s+.2817188376*o+.6299787005*l);return[.2104542553*c+.793617785*d-.0040720468*h,1.9779984951*c-2.428592205*d+.4505937099*h,.0259040371*c+.7827717662*d-.808675766*h]};function XA(e){var t=Math.abs(e);return t<.04045?e/12.92:(WA(e)||1)*GA((t+.055)/1.055,2.4)}var _A=c.unpack,YA=Math.pow,jA=Math.sign,JA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=(e=_A(e,"lab"))[0],i=e[1],n=e[2],a=YA(A+.3963377774*i+.2158037573*n,3),r=YA(A-.1055613458*i-.0638541728*n,3),s=YA(A-.0894841775*i-1.291485548*n,3);return[255*ZA(4.0767416621*a-3.3077115913*r+.2309699292*s),255*ZA(-1.2684380046*a+2.6097574011*r-.3413193965*s),255*ZA(-.0041960863*a-.7034186147*r+1.707614701*s),e.length>3?e[3]:1]};function ZA(e){var t=Math.abs(e);return t>.0031308?(jA(e)||1)*(1.055*YA(t,1/2.4)-.055):12.92*e}var qA=c.unpack,$A=c.type,ei=E,ti=f,Ai=d,ii=zA;ti.prototype.oklab=function(){return ii(this._rgb)},ei.oklab=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(ti,[null].concat(e,["oklab"])))},Ai.format.oklab=JA,Ai.autodetect.push({p:3,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=qA(e,"oklab"),"array"===$A(e)&&3===e.length)return"oklab"}});var ni=c.unpack,ai=zA,ri=Kt,si=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=ni(e,"rgb"),i=A[0],n=A[1],a=A[2],r=ai(i,n,a),s=r[0],o=r[1],l=r[2];return ri(s,o,l)},oi=c.unpack,li=Zt,ci=JA,di=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=(e=oi(e,"lch"))[0],i=e[1],n=e[2],a=li(A,i,n),r=a[0],s=a[1],o=a[2],l=ci(r,s,o);return[l[0],l[1],l[2],e.length>3?e[3]:1]},hi=c.unpack,ui=c.type,gi=E,pi=f,mi=d,fi=si;pi.prototype.oklch=function(){return fi(this._rgb)},gi.oklch=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(pi,[null].concat(e,["oklch"])))},mi.format.oklch=di,mi.autodetect.push({p:3,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=hi(e,"oklch"),"array"===ui(e)&&3===e.length)return"oklch"}});var wi=f,Ei=c.type;wi.prototype.alpha=function(e,t){return void 0===t&&(t=!1),void 0!==e&&"number"===Ei(e)?t?(this._rgb[3]=e,this):new wi([this._rgb[0],this._rgb[1],this._rgb[2],e],"rgb"):this._rgb[3]},f.prototype.clipped=function(){return this._rgb._clipped||!1};var bi=f,Bi=ft;bi.prototype.darken=function(e){void 0===e&&(e=1);var t=this.lab();return t[0]-=Bi.Kn*e,new bi(t,"lab").alpha(this.alpha(),!0)},bi.prototype.brighten=function(e){return void 0===e&&(e=1),this.darken(-e)},bi.prototype.darker=bi.prototype.darken,bi.prototype.brighter=bi.prototype.brighten,f.prototype.get=function(e){var t=e.split("."),A=t[0],i=t[1],n=this[A]();if(i){var a=A.indexOf(i)-("ok"===A.substr(0,2)?2:0);if(a>-1)return n[a];throw new Error("unknown channel "+i+" in mode "+A)}return n};var vi=f,Ci=c.type,yi=Math.pow;vi.prototype.luminance=function(e){if(void 0!==e&&"number"===Ci(e)){if(0===e)return new vi([0,0,0,this._rgb[3]],"rgb");if(1===e)return new vi([255,255,255,this._rgb[3]],"rgb");var t=this.luminance(),A=20,i=function(t,n){var a=t.interpolate(n,.5,"rgb"),r=a.luminance();return Math.abs(e-r)<1e-7||!A--?a:r>e?i(t,a):i(a,n)},n=(t>e?i(new vi([0,0,0]),this):i(this,new vi([255,255,255]))).rgb();return new vi(n.concat([this._rgb[3]]))}return xi.apply(void 0,this._rgb.slice(0,3))};var xi=function(e,t,A){return.2126*(e=Fi(e))+.7152*(t=Fi(t))+.0722*Fi(A)},Fi=function(e){return(e/=255)<=.03928?e/12.92:yi((e+.055)/1.055,2.4)},Si={},Ti=f,Ii=c.type,Mi=Si,ki=function(e,t,A){void 0===A&&(A=.5);for(var i=[],n=arguments.length-3;n-- >0;)i[n]=arguments[n+3];var a=i[0]||"lrgb";if(Mi[a]||i.length||(a=Object.keys(Mi)[0]),!Mi[a])throw new Error("interpolation mode "+a+" is not defined");return"object"!==Ii(e)&&(e=new Ti(e)),"object"!==Ii(t)&&(t=new Ti(t)),Mi[a](e,t,A).alpha(e.alpha()+A*(t.alpha()-e.alpha()))},Ui=f,Oi=ki;Ui.prototype.mix=Ui.prototype.interpolate=function(e,t){void 0===t&&(t=.5);for(var A=[],i=arguments.length-2;i-- >0;)A[i]=arguments[i+2];return Oi.apply(void 0,[this,e,t].concat(A))};var Li=f;Li.prototype.premultiply=function(e){void 0===e&&(e=!1);var t=this._rgb,A=t[3];return e?(this._rgb=[t[0]*A,t[1]*A,t[2]*A,A],this):new Li([t[0]*A,t[1]*A,t[2]*A,A],"rgb")};var Qi=f,Ni=ft;Qi.prototype.saturate=function(e){void 0===e&&(e=1);var t=this.lch();return t[1]+=Ni.Kn*e,t[1]<0&&(t[1]=0),new Qi(t,"lch").alpha(this.alpha(),!0)},Qi.prototype.desaturate=function(e){return void 0===e&&(e=1),this.saturate(-e)};var Di=f,Ri=c.type;Di.prototype.set=function(e,t,A){void 0===A&&(A=!1);var i=e.split("."),n=i[0],a=i[1],r=this[n]();if(a){var s=n.indexOf(a)-("ok"===n.substr(0,2)?2:0);if(s>-1){if("string"==Ri(t))switch(t.charAt(0)){case"+":case"-":r[s]+=+t;break;case"*":r[s]*=+t.substr(1);break;case"/":r[s]/=+t.substr(1);break;default:r[s]=+t}else{if("number"!==Ri(t))throw new Error("unsupported value for Color.set");r[s]=t}var o=new Di(r,n);return A?(this._rgb=o._rgb,this):o}throw new Error("unknown channel "+a+" in mode "+n)}return r};var Hi=f;Si.rgb=function(e,t,A){var i=e._rgb,n=t._rgb;return new Hi(i[0]+A*(n[0]-i[0]),i[1]+A*(n[1]-i[1]),i[2]+A*(n[2]-i[2]),"rgb")};var Pi=f,Vi=Math.sqrt,Ki=Math.pow;Si.lrgb=function(e,t,A){var i=e._rgb,n=i[0],a=i[1],r=i[2],s=t._rgb,o=s[0],l=s[1],c=s[2];return new Pi(Vi(Ki(n,2)*(1-A)+Ki(o,2)*A),Vi(Ki(a,2)*(1-A)+Ki(l,2)*A),Vi(Ki(r,2)*(1-A)+Ki(c,2)*A),"rgb")};var Gi=f;Si.lab=function(e,t,A){var i=e.lab(),n=t.lab();return new Gi(i[0]+A*(n[0]-i[0]),i[1]+A*(n[1]-i[1]),i[2]+A*(n[2]-i[2]),"lab")};var Wi=f,zi=function(e,t,A,i){var n,a,r,s,o,l,c,d,h,u,g,p,m;return"hsl"===i?(r=e.hsl(),s=t.hsl()):"hsv"===i?(r=e.hsv(),s=t.hsv()):"hcg"===i?(r=e.hcg(),s=t.hcg()):"hsi"===i?(r=e.hsi(),s=t.hsi()):"lch"===i||"hcl"===i?(i="hcl",r=e.hcl(),s=t.hcl()):"oklch"===i&&(r=e.oklch().reverse(),s=t.oklch().reverse()),"h"!==i.substr(0,1)&&"oklch"!==i||(o=(n=r)[0],c=n[1],h=n[2],l=(a=s)[0],d=a[1],u=a[2]),isNaN(o)||isNaN(l)?isNaN(o)?isNaN(l)?p=Number.NaN:(p=l,1!=h&&0!=h||"hsv"==i||(g=d)):(p=o,1!=u&&0!=u||"hsv"==i||(g=c)):p=o+A*(l>o&&l-o>180?l-(o+360):l180?l+360-o:l-o),void 0===g&&(g=c+A*(d-c)),m=h+A*(u-h),new Wi("oklch"===i?[m,g,p]:[p,g,m],i)},Xi=zi,_i=function(e,t,A){return Xi(e,t,A,"lch")};Si.lch=_i,Si.hcl=_i;var Yi=f;Si.num=function(e,t,A){var i=e.num(),n=t.num();return new Yi(i+A*(n-i),"num")};var ji=zi;Si.hcg=function(e,t,A){return ji(e,t,A,"hcg")};var Ji=zi;Si.hsi=function(e,t,A){return Ji(e,t,A,"hsi")};var Zi=zi;Si.hsl=function(e,t,A){return Zi(e,t,A,"hsl")};var qi=zi;Si.hsv=function(e,t,A){return qi(e,t,A,"hsv")};var $i=f;Si.oklab=function(e,t,A){var i=e.oklab(),n=t.oklab();return new $i(i[0]+A*(n[0]-i[0]),i[1]+A*(n[1]-i[1]),i[2]+A*(n[2]-i[2]),"oklab")};var en=zi;Si.oklch=function(e,t,A){return en(e,t,A,"oklch")};var tn=f,An=c.clip_rgb,nn=Math.pow,an=Math.sqrt,rn=Math.PI,sn=Math.cos,on=Math.sin,ln=Math.atan2,cn=function(e,t){for(var A=e.length,i=[0,0,0,0],n=0;n.9999999&&(i[3]=1),new tn(An(i))},dn=E,hn=c.type,un=Math.pow,gn=function(e){var t="rgb",A=dn("#ccc"),i=0,n=[0,1],a=[],r=[0,0],s=!1,o=[],l=!1,c=0,d=1,h=!1,u={},g=!0,p=1,m=function(e){if((e=e||["#fff","#000"])&&"string"===hn(e)&&dn.brewer&&dn.brewer[e.toLowerCase()]&&(e=dn.brewer[e.toLowerCase()]),"array"===hn(e)){1===e.length&&(e=[e[0],e[0]]),e=e.slice(0);for(var t=0;t2?function(e){if(null!=s){for(var t=s.length-1,A=0;A=s[A];)A++;return A-1}return 0}(e)/(s.length-2):d!==c?(e-c)/(d-c):1,l=w(l),i||(l=f(l)),1!==p&&(l=un(l,p)),l=r[0]+l*(1-r[0]-r[1]),l=Math.min(1,Math.max(0,l));var h=Math.floor(1e4*l);if(g&&u[h])n=u[h];else{if("array"===hn(o))for(var m=0;m=E&&m===a.length-1){n=o[m];break}if(l>E&&l2){var l=e.map((function(t,A){return A/(e.length-1)})),h=e.map((function(e){return(e-c)/(d-c)}));h.every((function(e,t){return l[t]===e}))||(w=function(e){if(e<=0||e>=1)return e;for(var t=0;e>=h[t+1];)t++;var A=(e-h[t])/(h[t+1]-h[t]);return l[t]+A*(l[t+1]-l[t])})}}return n=[c,d],B},B.mode=function(e){return arguments.length?(t=e,b(),B):t},B.range=function(e,t){return m(e),B},B.out=function(e){return l=e,B},B.spread=function(e){return arguments.length?(i=e,B):i},B.correctLightness=function(e){return null==e&&(e=!0),h=e,b(),f=h?function(e){for(var t=E(0,!0).lab()[0],A=E(1,!0).lab()[0],i=t>A,n=E(e,!0).lab()[0],a=t+(A-t)*e,r=n-a,s=0,o=1,l=20;Math.abs(r)>.01&&l-- >0;)i&&(r*=-1),r<0?(s=e,e+=.5*(o-e)):(o=e,e+=.5*(s-e)),r=(n=E(e,!0).lab()[0])-a;return e}:function(e){return e},B},B.padding=function(e){return null!=e?("number"===hn(e)&&(e=[e,e]),r=e,B):r},B.colors=function(t,A){arguments.length<2&&(A="hex");var i=[];if(0===arguments.length)i=o.slice(0);else if(1===t)i=[B(.5)];else if(t>1){var a=n[0],r=n[1]-a;i=function(e,t,A){for(var i=[],n=ea;n?r++:r--)i.push(r);return i}(0,t,!1).map((function(e){return B(a+e/(t-1)*r)}))}else{e=[];var l=[];if(s&&s.length>2)for(var c=1,d=s.length,h=1<=d;h?cd;h?c++:c--)l.push(.5*(s[c-1]+s[c]));else l=n;i=l.map((function(e){return B(e)}))}return dn[A]&&(i=i.map((function(e){return e[A]()}))),i},B.cache=function(e){return null!=e?(g=e,B):g},B.gamma=function(e){return null!=e?(p=e,B):p},B.nodata=function(e){return null!=e?(A=dn(e),B):A},B};var pn=f,mn=gn,fn=E,wn=function(e,t,A){if(!wn[A])throw new Error("unknown blend mode "+A);return wn[A](e,t)},En=function(e){return function(t,A){var i=fn(A).rgb(),n=fn(t).rgb();return fn.rgb(e(i,n))}},bn=function(e){return function(t,A){var i=[];return i[0]=e(t[0],A[0]),i[1]=e(t[1],A[1]),i[2]=e(t[2],A[2]),i}};wn.normal=En(bn((function(e){return e}))),wn.multiply=En(bn((function(e,t){return e*t/255}))),wn.screen=En(bn((function(e,t){return 255*(1-(1-e/255)*(1-t/255))}))),wn.overlay=En(bn((function(e,t){return t<128?2*e*t/255:255*(1-2*(1-e/255)*(1-t/255))}))),wn.darken=En(bn((function(e,t){return e>t?t:e}))),wn.lighten=En(bn((function(e,t){return e>t?e:t}))),wn.dodge=En(bn((function(e,t){return 255===e||(e=t/255*255/(1-e/255))>255?255:e}))),wn.burn=En(bn((function(e,t){return 255*(1-(1-t/255)/(e/255))})));for(var Bn=wn,vn=c.type,Cn=c.clip_rgb,yn=c.TWOPI,xn=Math.pow,Fn=Math.sin,Sn=Math.cos,Tn=E,In=f,Mn=Math.floor,kn=Math.random,Un=r,On=Math.log,Ln=Math.pow,Qn=Math.floor,Nn=Math.abs,Dn=function(e,t){void 0===t&&(t=null);var A={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0};return"object"===Un(e)&&(e=Object.values(e)),e.forEach((function(e){t&&"object"===Un(e)&&(e=e[t]),null==e||isNaN(e)||(A.values.push(e),A.sum+=e,eA.max&&(A.max=e),A.count+=1)})),A.domain=[A.min,A.max],A.limits=function(e,t){return Rn(A,e,t)},A},Rn=function(e,t,A){void 0===t&&(t="equal"),void 0===A&&(A=7),"array"==Un(e)&&(e=Dn(e));var i=e.min,n=e.max,a=e.values.sort((function(e,t){return e-t}));if(1===A)return[i,n];var r=[];if("c"===t.substr(0,1)&&(r.push(i),r.push(n)),"e"===t.substr(0,1)){r.push(i);for(var s=1;s 0");var o=Math.LOG10E*On(i),l=Math.LOG10E*On(n);r.push(i);for(var c=1;c200&&(E=!1)}for(var Q={},N=0;N=360;)g-=360;r[u]=g}else r[u]=r[u]/s[u];return h/=i,new tn(r,t).alpha(h>.99999?1:h,!0)},oa.bezier=function(e){var t=function(e){var t,A,i,n,a,r,s;if(e=e.map((function(e){return new pn(e)})),2===e.length)t=e.map((function(e){return e.lab()})),a=t[0],r=t[1],n=function(e){var t=[0,1,2].map((function(t){return a[t]+e*(r[t]-a[t])}));return new pn(t,"lab")};else if(3===e.length)A=e.map((function(e){return e.lab()})),a=A[0],r=A[1],s=A[2],n=function(e){var t=[0,1,2].map((function(t){return(1-e)*(1-e)*a[t]+2*(1-e)*e*r[t]+e*e*s[t]}));return new pn(t,"lab")};else if(4===e.length){var o;i=e.map((function(e){return e.lab()})),a=i[0],r=i[1],s=i[2],o=i[3],n=function(e){var t=[0,1,2].map((function(t){return(1-e)*(1-e)*(1-e)*a[t]+3*(1-e)*(1-e)*e*r[t]+3*(1-e)*e*e*s[t]+e*e*e*o[t]}));return new pn(t,"lab")}}else{if(!(e.length>=5))throw new RangeError("No point in running bezier with only one color.");var l,c,d;l=e.map((function(e){return e.lab()})),d=e.length-1,c=function(e){for(var t=[1,1],A=1;Ai?(A+.05)/(i+.05):(i+.05)/(A+.05)},oa.deltaE=function(e,t,A,i,n){void 0===A&&(A=1),void 0===i&&(i=1),void 0===n&&(n=1);var a=function(e){return 360*e/(2*Zn)},r=function(e){return 2*Zn*e/360};e=new Vn(e),t=new Vn(t);var s=Array.from(e.lab()),o=s[0],l=s[1],c=s[2],d=Array.from(t.lab()),h=d[0],u=d[1],g=d[2],p=(o+h)/2,m=(Kn(Gn(l,2)+Gn(c,2))+Kn(Gn(u,2)+Gn(g,2)))/2,f=.5*(1-Kn(Gn(m,7)/(Gn(m,7)+Gn(25,7)))),w=l*(1+f),E=u*(1+f),b=Kn(Gn(w,2)+Gn(c,2)),B=Kn(Gn(E,2)+Gn(g,2)),v=(b+B)/2,C=a(Xn(c,w)),y=a(Xn(g,E)),x=C>=0?C:C+360,F=y>=0?y:y+360,S=_n(x-F)>180?(x+F+360)/2:(x+F)/2,T=1-.17*Yn(r(S-30))+.24*Yn(r(2*S))+.32*Yn(r(3*S+6))-.2*Yn(r(4*S-63)),I=F-x;I=_n(I)<=180?I:F<=x?I+360:I-360,I=2*Kn(b*B)*jn(r(I)/2);var M=h-o,k=B-b,U=1+.015*Gn(p-50,2)/Kn(20+Gn(p-50,2)),O=1+.045*v,L=1+.015*v*T,Q=30*Jn(-Gn((S-275)/25,2)),N=-2*Kn(Gn(v,7)/(Gn(v,7)+Gn(25,7)))*jn(2*r(Q)),D=Kn(Gn(M/(A*U),2)+Gn(k/(i*O),2)+Gn(I/(n*L),2)+N*(k/(i*O))*(I/(n*L)));return zn(0,Wn(100,D))},oa.distance=function(e,t,A){void 0===A&&(A="lab"),e=new qn(e),t=new qn(t);var i=e.get(A),n=t.get(A),a=0;for(var r in i){var s=(i[r]||0)-(n[r]||0);a+=s*s}return Math.sqrt(a)},oa.limits=Hn.limits,oa.valid=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];try{return new(Function.prototype.bind.apply($n,[null].concat(e))),!0}catch(e){return!1}},oa.scales=Aa,oa.colors=dA,oa.brewer=sa,oa}()}(chroma$1,chroma$1.exports);var chromaExports=chroma$1.exports,chroma=getDefaultExportFromCjs(chromaExports);function hexWithAlpha(e,t){return chroma(e).alpha(t).css()}function has(e,t){return e.hasAttribute(t)}function get(e,t,A){return e.getAttribute(t)||A||""}function getNum(e,t,A){const i=Number(get(e,t));return Number.isNaN(i)?A||0:i}const attrHandlers={stroke:({el:e,exVals:t})=>{const A=get(e,"stroke");t.strokeColor=has(e,"stroke-opacity")?hexWithAlpha(A,getNum(e,"stroke-opacity")):A},"stroke-opacity":({el:e,exVals:t})=>{t.strokeColor=hexWithAlpha(get(e,"stroke","#000000"),getNum(e,"stroke-opacity"))},"stroke-width":({el:e,exVals:t})=>{t.strokeWidth=getNum(e,"stroke-width")},fill:({el:e,exVals:t})=>{const A=get(e,"fill");t.backgroundColor="none"===A?"#00000000":A},"fill-opacity":({el:e,exVals:t})=>{t.backgroundColor=hexWithAlpha(get(e,"fill","#000000"),getNum(e,"fill-opacity"))},opacity:({el:e,exVals:t})=>{t.opacity=getNum(e,"opacity",100)}};function presAttrsToElementValues(e){return[...e.attributes].reduce(((t,A)=>{const i=A.name;return Object.keys(attrHandlers).includes(i)&&attrHandlers[i]({el:e,exVals:t}),t}),{})}function filterAttrsToElementValues(e){const t={};return has(e,"x")&&(t.x=getNum(e,"x")),has(e,"y")&&(t.y=getNum(e,"y")),has(e,"width")&&(t.width=getNum(e,"width")),has(e,"height")&&(t.height=getNum(e,"height")),t}function pointsAttrToPoints(e){let t=[];return has(e,"points")&&(t=get(e,"points").split(" ").map((e=>e.split(",").map(parseFloat)))),t}function getGroupAttrs(e){return e.reduce(((e,{element:t})=>{const A=presAttrsToElementValues(t);return Object.assign(Object.assign({},e),A)}),{})}class Group{constructor(e){this.id=randomId(),this.element=e}}function createExElement(){return{id:randomId(),x:0,y:0,strokeColor:"#000000",backgroundColor:"#000000",fillStyle:"solid",strokeWidth:1,strokeStyle:"solid",roundness:null,roughness:0,opacity:100,width:0,height:0,angle:0,seed:randomInteger(),version:0,versionNonce:0,isDeleted:!1,groupIds:[],boundElementIds:null}}function createExRect(){return Object.assign(Object.assign({},createExElement()),{type:"rectangle"})}function createExLine(){return Object.assign(Object.assign({},createExElement()),{type:"line",points:[]})}function createExEllipse(){return Object.assign(Object.assign({},createExElement()),{type:"ellipse"})}function createExDraw(){return Object.assign(Object.assign({},createExElement()),{type:"line",points:[]})}const transformFunctions={matrix:"matrix",matrix3d:"matrix3d",perspective:"perspective",rotate:"rotate",rotate3d:"rotate3d",rotateX:"rotateX",rotateY:"rotateY",rotateZ:"rotateZ",scale:"scale",scale3d:"scale3d",scaleX:"scaleX",scaleY:"scaleY",scaleZ:"scaleZ",skew:"skew",skewX:"skewX",skewY:"skewY",translate:"translate",translate3d:"translate3d",translateX:"translateX",translateY:"translateY",translateZ:"translateZ"},transformFunctionsArr=Object.keys(transformFunctions),defaultUnits={matrix:"",matrix3d:"",perspective:"perspective",rotate:"deg",rotate3d:"deg",rotateX:"deg",rotateY:"deg",rotateZ:"deg",scale:"",scale3d:"",scaleX:"",scaleY:"",scaleZ:"",skew:"skew",skewX:"deg",skewY:"deg",translate:"px",translate3d:"px",translateX:"px",translateY:"px",translateZ:"px"},svgTransformToCSSTransform=e=>{const t=e.match(/(\w+)\(([^)]*)\)/g);if(!t)return"";const A=t.map((e=>{const t=e.split("(")[0];if(!t)throw new Error("Unable to find transform name");if(!transformFunctionsArr.includes(t))throw new Error(`transform function name "${t}" is not valid`);const A=e.match(/([-+]?[0-9]*\.?[0-9]+)([a-z])*/g);if(!A)return{type:t,values:[]};let i=A.map((e=>{const[A,i]=e.matchAll(/([-+]?[0-9]*\.?[0-9]+)|([a-z])*/g);return{unit:i[0]||defaultUnits[t],value:A[0]}}));return i&&"rotate"===t&&(null==i?void 0:i.length)>1&&(i=[i[0]]),{type:t,values:i}}));return A.map((({type:e,values:t})=>`${e}(${t.map((({unit:e,value:t})=>`${t}${e}`)).join(", ")})`)).join(" ")};function getElementMatrix(e){if(e.hasAttribute("transform")){const t=new DOMMatrix(svgTransformToCSSTransform(e.getAttribute("transform")||""));return multiply(create$1(),create$1(),t.toFloat32Array())}return create$1()}function getTransformMatrix(e,t){return t.map((({element:e})=>getElementMatrix(e))).concat([getElementMatrix(e)]).reduce(((e,t)=>multiply(e,e,t)),create$1())}function transformPoints(e,t){return e.map((([e,A])=>{const[i,n]=transformMat4(create(),fromValues(e,A,1),t);return[i,n]}))}function distance(e,t){return Math.sqrt(distanceSq(e,t))}function distanceSq(e,t){return Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)}function distanceToSegmentSq(e,t,A){const i=distanceSq(t,A);if(0===i)return distanceSq(e,t);let n=((e[0]-t[0])*(A[0]-t[0])+(e[1]-t[1])*(A[1]-t[1]))/i;return n=Math.max(0,Math.min(1,n)),distanceSq(e,lerp(t,A,n))}function lerp(e,t,A){return[e[0]+(t[0]-e[0])*A,e[1]+(t[1]-e[1])*A]}function flatness(e,t){const A=e[t+0],i=e[t+1],n=e[t+2],a=e[t+3];let r=3*i[0]-2*A[0]-a[0];r*=r;let s=3*i[1]-2*A[1]-a[1];s*=s;let o=3*n[0]-2*a[0]-A[0];o*=o;let l=3*n[1]-2*a[1]-A[1];return l*=l,r1&&n.push(A):n.push(A),n.push(e[t+3])}else{const i=.5,a=e[t+0],r=e[t+1],s=e[t+2],o=e[t+3],l=lerp(a,r,i),c=lerp(r,s,i),d=lerp(s,o,i),h=lerp(l,c,i),u=lerp(c,d,i),g=lerp(h,u,i);getPointsOnBezierCurveWithSplitting([a,l,h,g],0,A,n),getPointsOnBezierCurveWithSplitting([g,u,d,o],0,A,n)}return n}function simplify(e,t){return simplifyPoints(e,0,e.length,t)}function simplifyPoints(e,t,A,i,n){const a=n||[],r=e[t],s=e[A-1];let o=0,l=1;for(let i=t+1;io&&(o=t,l=i)}return Math.sqrt(o)>i?(simplifyPoints(e,t,l+1,i,a),simplifyPoints(e,l,A,i,a)):(a.length||a.push(r),a.push(s)),a}function pointsOnBezierCurves(e,t=.15,A){const i=[],n=(e.length-1)/3;for(let A=0;A0?simplifyPoints(i,0,i.length,A):i}const COMMAND=0,NUMBER=1,EOD=2,PARAMS={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function tokenize(e){const t=new Array;for(;""!==e;)if(e.match(/^([ \t\r\n,]+)/))e=e.substr(RegExp.$1.length);else if(e.match(/^([aAcChHlLmMqQsStTvVzZ])/))t[t.length]={type:COMMAND,text:RegExp.$1},e=e.substr(RegExp.$1.length);else{if(!e.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];t[t.length]={type:NUMBER,text:`${parseFloat(RegExp.$1)}`},e=e.substr(RegExp.$1.length)}return t[t.length]={type:EOD,text:""},t}function isType(e,t){return e.type===t}function parsePath(e){const t=[],A=tokenize(e);let i="BOD",n=0,a=A[n];for(;!isType(a,EOD);){let r=0;const s=[];if("BOD"===i){if("M"!==a.text&&"m"!==a.text)return parsePath("M0,0"+e);n++,r=PARAMS[a.text],i=a.text}else isType(a,NUMBER)?r=PARAMS[i]:(n++,r=PARAMS[a.text],i=a.text);if(!(n+ri%2?e+A:e+t));a.push({key:"C",data:e}),t=e[4],A=e[5];break}case"Q":a.push({key:"Q",data:[...s]}),t=s[2],A=s[3];break;case"q":{const e=s.map(((e,i)=>i%2?e+A:e+t));a.push({key:"Q",data:e}),t=e[2],A=e[3];break}case"A":a.push({key:"A",data:[...s]}),t=s[5],A=s[6];break;case"a":t+=s[5],A+=s[6],a.push({key:"A",data:[s[0],s[1],s[2],s[3],s[4],t,A]});break;case"H":a.push({key:"H",data:[...s]}),t=s[0];break;case"h":t+=s[0],a.push({key:"H",data:[t]});break;case"V":a.push({key:"V",data:[...s]}),A=s[0];break;case"v":A+=s[0],a.push({key:"V",data:[A]});break;case"S":a.push({key:"S",data:[...s]}),t=s[2],A=s[3];break;case"s":{const e=s.map(((e,i)=>i%2?e+A:e+t));a.push({key:"S",data:e}),t=e[2],A=e[3];break}case"T":a.push({key:"T",data:[...s]}),t=s[0],A=s[1];break;case"t":t+=s[0],A+=s[1],a.push({key:"T",data:[t,A]});break;case"Z":case"z":a.push({key:"Z",data:[]}),t=i,A=n}return a}function normalize(e){const t=[];let A="",i=0,n=0,a=0,r=0,s=0,o=0;for(const{key:l,data:c}of e){switch(l){case"M":t.push({key:"M",data:[...c]}),[i,n]=c,[a,r]=c;break;case"C":t.push({key:"C",data:[...c]}),i=c[4],n=c[5],s=c[2],o=c[3];break;case"L":t.push({key:"L",data:[...c]}),[i,n]=c;break;case"H":i=c[0],t.push({key:"L",data:[i,n]});break;case"V":n=c[0],t.push({key:"L",data:[i,n]});break;case"S":{let e=0,a=0;"C"===A||"S"===A?(e=i+(i-s),a=n+(n-o)):(e=i,a=n),t.push({key:"C",data:[e,a,...c]}),s=c[0],o=c[1],i=c[2],n=c[3];break}case"T":{const[e,a]=c;let r=0,l=0;"Q"===A||"T"===A?(r=i+(i-s),l=n+(n-o)):(r=i,l=n);const d=i+2*(r-i)/3,h=n+2*(l-n)/3,u=e+2*(r-e)/3,g=a+2*(l-a)/3;t.push({key:"C",data:[d,h,u,g,e,a]}),s=r,o=l,i=e,n=a;break}case"Q":{const[e,A,a,r]=c,l=i+2*(e-i)/3,d=n+2*(A-n)/3,h=a+2*(e-a)/3,u=r+2*(A-r)/3;t.push({key:"C",data:[l,d,h,u,a,r]}),s=e,o=A,i=a,n=r;break}case"A":{const e=Math.abs(c[0]),A=Math.abs(c[1]),a=c[2],r=c[3],s=c[4],o=c[5],l=c[6];0===e||0===A?(t.push({key:"C",data:[i,n,o,l,o,l]}),i=o,n=l):i===o&&n===l||(arcToCubicCurves(i,n,o,l,e,A,a,r,s).forEach((function(e){t.push({key:"C",data:e})})),i=o,n=l);break}case"Z":t.push({key:"Z",data:[]}),i=a,n=r}A=l}return t}function degToRad(e){return Math.PI*e/180}function rotate(e,t,A){return[e*Math.cos(A)-t*Math.sin(A),e*Math.sin(A)+t*Math.cos(A)]}function arcToCubicCurves(e,t,A,i,n,a,r,s,o,l){const c=degToRad(r);let d=[],h=0,u=0,g=0,p=0;if(l)[h,u,g,p]=l;else{[e,t]=rotate(e,t,-c),[A,i]=rotate(A,i,-c);const r=(e-A)/2,l=(t-i)/2;let d=r*r/(n*n)+l*l/(a*a);d>1&&(d=Math.sqrt(d),n*=d,a*=d);const m=n*n,f=a*a,w=m*f-m*l*l-f*r*r,E=m*l*l+f*r*r,b=(s===o?-1:1)*Math.sqrt(Math.abs(w/E));g=b*n*l/a+(e+A)/2,p=b*-a*r/n+(t+i)/2,h=Math.asin(parseFloat(((t-p)/a).toFixed(9))),u=Math.asin(parseFloat(((i-p)/a).toFixed(9))),eu&&(h-=2*Math.PI),!o&&u>h&&(u-=2*Math.PI)}let m=u-h;if(Math.abs(m)>120*Math.PI/180){const e=u,t=A,s=i;u=o&&u>h?h+120*Math.PI/180*1:h+120*Math.PI/180*-1,d=arcToCubicCurves(A=g+n*Math.cos(u),i=p+a*Math.sin(u),t,s,n,a,r,0,o,[u,e,g,p])}m=u-h;const f=Math.cos(h),w=Math.sin(h),E=Math.cos(u),b=Math.sin(u),B=Math.tan(m/4),v=4/3*n*B,C=4/3*a*B,y=[e,t],x=[e+v*w,t-C*f],F=[A+v*b,i-C*E],S=[A,i];if(x[0]=2*y[0]-x[0],x[1]=2*y[1]-x[1],l)return[x,F,S].concat(d);{d=[x,F,S].concat(d);const e=[];for(let t=0;t{s.length>=4&&a.push(...pointsOnBezierCurves(s,t)),s=[]},l=()=>{o(),a.length&&(n.push(a),a=[])};for(const{key:e,data:t}of i)switch(e){case"M":l(),r=[t[0],t[1]],a.push(r);break;case"L":o(),a.push([t[0],t[1]]);break;case"C":if(!s.length){const e=a.length?a[a.length-1]:r;s.push([e[0],e[1]])}s.push([t[0],t[1]]),s.push([t[2],t[3]]),s.push([t[4],t[5]]);break;case"Z":o(),a.push([r[0],r[1]])}if(l(),!A)return n;const c=[];for(const e of n){const t=simplify(e,A);t.length&&c.push(t)}return c}const SUPPORTED_TAGS=["svg","path","g","use","circle","ellipse","rect","polyline","polygon"],nodeValidator=e=>SUPPORTED_TAGS.includes(e.tagName)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT;function createTreeWalker(e){return document.createTreeWalker(e,NodeFilter.SHOW_ALL,{acceptNode:nodeValidator})}const presAttrs=(e,t)=>Object.assign(Object.assign(Object.assign({},getGroupAttrs(t)),presAttrsToElementValues(e)),filterAttrsToElementValues(e)),skippedUseAttrs=["id"],allwaysPassedUseAttrs=["x","y","width","height","href","xlink:href"],getDefElWithCorrectAttrs=(e,t)=>[...t.attributes].reduce(((A,i)=>(skippedUseAttrs.includes(i.value)||e.hasAttribute(i.name)&&!allwaysPassedUseAttrs.includes(i.name)||A.setAttribute(i.name,t.getAttribute(i.name)||""),A)),e.cloneNode()),walkers={svg:e=>{walk(e,e.tw.nextNode())},g:e=>{const t=Object.assign(Object.assign({},e),{tw:createTreeWalker(e.tw.currentNode),groups:[...e.groups,new Group(e.tw.currentNode)]});walk(t,t.tw.nextNode()),walk(e,e.tw.nextSibling())},use:e=>{const{root:t,tw:A,scene:i}=e,n=A.currentNode,a=n.getAttribute("href")||n.getAttribute("xlink:href");if(!a)throw new Error("unable to get id of use element");const r=t.querySelector(a);if(!r)throw new Error(`unable to find def element with id: ${a}`);const s=new ExcalidrawScene,o=getDefElWithCorrectAttrs(r,n);walk(Object.assign(Object.assign({},e),{scene:s,tw:createTreeWalker(o)}),o);const l=s.elements.pop();l&&i.elements.push(l),walk(e,e.tw.nextNode())},circle:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=getNum(n,"r",0),r=2*a,s=getNum(n,"x",0)+getNum(n,"cx",0)-a,o=getNum(n,"y",0)+getNum(n,"cy",0)-a,l=getTransformMatrix(n,i),c=fromValues$1(r,0,0,0,0,r,0,0,0,0,1,0,s,o,0,1),d=multiply(create$1(),l,c),h=Object.assign(Object.assign(Object.assign({},createExEllipse()),presAttrs(n,i)),{x:d[12],y:d[13],width:d[0],height:d[5],groupIds:i.map((e=>e.id))});A.elements.push(h),walk(e,t.nextNode())},ellipse:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=getNum(n,"rx",0),r=getNum(n,"ry",0),s=getNum(n,"cx",0),o=getNum(n,"cy",0),l=getNum(n,"x",0)+s-a,c=getNum(n,"y",0)+o-r,d=2*a,h=2*r,u=getTransformMatrix(n,i),g=fromValues$1(d,0,0,0,0,h,0,0,0,0,1,0,l,c,0,1),p=multiply(create$1(),u,g),m=Object.assign(Object.assign(Object.assign({},createExEllipse()),presAttrs(n,i)),{x:p[12],y:p[13],width:p[0],height:p[5],groupIds:i.map((e=>e.id))});A.elements.push(m),walk(e,t.nextNode())},line:e=>{walk(e,e.tw.nextNode())},polygon:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=transformPoints(pointsAttrToPoints(n),getTransformMatrix(n,i)),r=a[0][0],s=a[0][1],o=a.map((([e,t])=>[e-r,t-s])),[l,c]=dimensionsFromPoints(o),d=Object.assign(Object.assign(Object.assign(Object.assign({},createExLine()),getGroupAttrs(i)),presAttrsToElementValues(n)),{points:o.concat([[0,0]]),x:r,y:s,width:l,height:c});A.elements.push(d),walk(e,e.tw.nextNode())},polyline:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=getTransformMatrix(n,i),r=transformPoints(pointsAttrToPoints(n),a),s=r[0][0],o=r[0][1],l=r.map((([e,t])=>[e-s,t-o])),[c,d]=dimensionsFromPoints(l),h=has(n,"fill"),u=get(n,"fill"),g=!h||h&&"none"!==u,p=Object.assign(Object.assign(Object.assign(Object.assign({},createExLine()),getGroupAttrs(i)),presAttrsToElementValues(n)),{points:l.concat(g?[[0,0]]:[]),x:s,y:o,width:c,height:d});A.elements.push(p),walk(e,e.tw.nextNode())},rect:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=getNum(n,"x",0),r=getNum(n,"y",0),s=getNum(n,"width",0),o=getNum(n,"height",0),l=getTransformMatrix(n,i),c=fromValues$1(s,0,0,0,0,o,0,0,0,0,1,0,a,r,0,1),d=multiply(create$1(),l,c),h=n.hasAttribute("rx")||n.hasAttribute("ry"),u=Object.assign(Object.assign(Object.assign({},createExRect()),presAttrs(n,i)),{x:d[12],y:d[13],width:d[0],height:d[5],roundness:h?{type:ROUNDNESS.LEGACY}:null});A.elements.push(u),walk(e,e.tw.nextNode())},path:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=getTransformMatrix(n,i),r=pointsOnPath(get(n,"d")),s=get(n,"fill","black"),o=get(n,"fill-rule","nonzero");let l=[],c=randomId();switch(o){case"nonzero":let e="clockwise";l=r.map(((t,A)=>{const r=transformPoints(t,clone(a)),o=r[0][0],l=r[0][1],[d,h]=dimensionsFromPoints(r),u=r.map((([e,t])=>[e-o,t-l])),g=getWindingOrder(u);0===A&&(e=g,c=randomId());let p=s;return e!==g&&(p="#FFFFFF"),Object.assign(Object.assign(Object.assign(Object.assign({},createExDraw()),{strokeWidth:0,strokeColor:"#00000000"}),presAttrs(n,i)),{points:u,backgroundColor:p,width:d,height:h,x:o+getNum(n,"x",0),y:l+getNum(n,"y",0),groupIds:[c]})}));break;case"evenodd":l=r.map(((e,t)=>{const A=transformPoints(e,clone(a)),r=A[0][0],s=A[0][1],[o,l]=dimensionsFromPoints(A),d=A.map((([e,t])=>[e-r,t-s]));return 0===t&&(c=randomId()),Object.assign(Object.assign(Object.assign({},createExDraw()),presAttrs(n,i)),{points:d,width:o,height:l,x:r+getNum(n,"x",0),y:s+getNum(n,"y",0)})}))}A.elements=A.elements.concat(l),walk(e,t.nextNode())}};function walk(e,t){if(!t)return;const A=t.nodeName;walkers[A]&&walkers[A](e)}const svgToExcalidraw=e=>{const t=(new DOMParser).parseFromString(e,"image/svg+xml"),A=t.querySelectorAll("parsererror"),i=A.length>0;let n=null;if(i)console.error("There were errors while parsing the given SVG: ",[...A].map((e=>e.innerHTML)));else{const e=createTreeWalker(t),A=new ExcalidrawScene;walk({tw:e,scene:A,groups:[],root:t},e.nextNode()),n=A.elements}return{hasErrors:i,errors:i?A:null,content:n}};function BuildLog$1(){var e,t=0,A=!1;function i(t,A){return e.list.push({type:t,data:A?JSON.parse(JSON.stringify(A)):void 0}),e}return e={list:[],segmentId:function(){return t++},checkIntersection:function(e,t){return i("check",{seg1:e,seg2:t})},segmentChop:function(e,t){return i("div_seg",{seg:e,pt:t}),i("chop",{seg:e,pt:t})},statusRemove:function(e){return i("pop_seg",{seg:e})},segmentUpdate:function(e){return i("seg_update",{seg:e})},segmentNew:function(e,t){return i("new_seg",{seg:e,primary:t})},segmentRemove:function(e){return i("rem_seg",{seg:e})},tempStatus:function(e,t,A){return i("temp_status",{seg:e,above:t,below:A})},rewind:function(e){return i("rewind",{seg:e})},status:function(e,t,A){return i("status",{seg:e,above:t,below:A})},vert:function(t){return t===A?e:(A=t,i("vert",{x:t}))},log:function(e){return"string"!=typeof e&&(e=JSON.stringify(e,!1," ")),i("log",{txt:e})},reset:function(){return i("reset")},selected:function(e){return i("selected",{segs:e})},chainStart:function(e){return i("chain_start",{seg:e})},chainRemoveHead:function(e,t){return i("chain_rem_head",{index:e,pt:t})},chainRemoveTail:function(e,t){return i("chain_rem_tail",{index:e,pt:t})},chainNew:function(e,t){return i("chain_new",{pt1:e,pt2:t})},chainMatch:function(e){return i("chain_match",{index:e})},chainClose:function(e){return i("chain_close",{index:e})},chainAddHead:function(e,t){return i("chain_add_head",{index:e,pt:t})},chainAddTail:function(e,t){return i("chain_add_tail",{index:e,pt:t})},chainConnect:function(e,t){return i("chain_con",{index1:e,index2:t})},chainReverse:function(e){return i("chain_rev",{index:e})},chainJoin:function(e,t){return i("chain_join",{index1:e,index2:t})},done:function(){return i("done")}},e}var buildLog$1=BuildLog$1;function Epsilon$1(e){"number"!=typeof e&&(e=1e-10);var t={epsilon:function(t){return"number"==typeof t&&(e=t),e},pointAboveOrOnLine:function(t,A,i){var n=A[0],a=A[1],r=i[0],s=i[1],o=t[0];return(r-n)*(t[1]-a)-(s-a)*(o-n)>=-e},pointBetween:function(t,A,i){var n=t[1]-A[1],a=i[0]-A[0],r=t[0]-A[0],s=i[1]-A[1],o=r*a+n*s;return!(o-e)},pointsSameX:function(t,A){return Math.abs(t[0]-A[0])e!=r-n>e&&(a-l)*(n-c)/(r-c)+l-i>e&&(s=!s),a=l,r=c}return s}};return t}var epsilon$1=Epsilon$1,LinkedList$1={create:function(){var e={root:{root:!0,next:null},exists:function(t){return null!==t&&t!==e.root},isEmpty:function(){return null===e.root.next},getHead:function(){return e.root.next},insertBefore:function(t,A){for(var i=e.root,n=e.root.next;null!==n;){if(A(n))return t.prev=n.prev,t.next=n,n.prev.next=t,void(n.prev=t);i=n,n=n.next}i.next=t,t.prev=i,t.next=null},findTransition:function(t){for(var A=e.root,i=e.root.next;null!==i&&!t(i);)A=i,i=i.next;return{before:A===e.root?null:A,after:i,insert:function(e){return e.prev=A,e.next=i,A.next=e,null!==i&&(i.prev=e),e}}}};return e},node:function(e){return e.prev=null,e.next=null,e.remove=function(){e.prev.next=e.next,e.next&&(e.next.prev=e.prev),e.prev=null,e.next=null},e}},linkedList=LinkedList$1,LinkedList=linkedList;function Intersecter$1(e,t,A){function i(e,t){return{id:A?A.segmentId():-1,start:e,end:t,myFill:{above:null,below:null},otherFill:null}}function n(e,t,i){return{id:A?A.segmentId():-1,start:e,end:t,myFill:{above:i.myFill.above,below:i.myFill.below},otherFill:null}}var a=LinkedList.create();function r(e,A){a.insertBefore(e,(function(i){return n=e.isStart,a=e.pt,r=A,s=i.isStart,o=i.pt,l=i.other.pt,(0!==(c=t.pointsCompare(a,o))?c:t.pointsSame(r,l)?0:n!==s?n?1:-1:t.pointAboveOrOnLine(r,s?o:l,s?l:o)?1:-1)<0;var n,a,r,s,o,l,c}))}function s(e,t){var A=function(e,t){var A=LinkedList.node({isStart:!0,pt:e.start,seg:e,primary:t,other:null,status:null});return r(A,e.end),A}(e,t);return function(e,t,A){var i=LinkedList.node({isStart:!1,pt:t.end,seg:t,primary:A,other:e,status:null});e.other=i,r(i,e.pt)}(A,e,t),A}function o(e,t){var i=n(t,e.seg.end,e.seg);return function(e,t){A&&A.segmentChop(e.seg,t),e.other.remove(),e.seg.end=t,e.other.pt=t,r(e.other,e.pt)}(e,t),s(i,e.primary)}function l(i,n){var r=LinkedList.create();function s(e){return r.findTransition((function(A){var i,n,a,r,s,o;return i=e,n=A.ev,a=i.seg.start,r=i.seg.end,s=n.seg.start,o=n.seg.end,(t.pointsCollinear(a,s,o)?t.pointsCollinear(r,s,o)||t.pointAboveOrOnLine(r,s,o)?1:-1:t.pointAboveOrOnLine(a,s,o)?1:-1)>0}))}function l(e,i){var n=e.seg,a=i.seg,r=n.start,s=n.end,l=a.start,c=a.end;A&&A.checkIntersection(n,a);var d=t.linesIntersect(r,s,l,c);if(!1===d){if(!t.pointsCollinear(r,s,l))return!1;if(t.pointsSame(r,c)||t.pointsSame(s,l))return!1;var h=t.pointsSame(r,l),u=t.pointsSame(s,c);if(h&&u)return i;var g=!h&&t.pointBetween(r,l,c),p=!u&&t.pointBetween(s,l,c);if(h)return p?o(i,s):o(e,c),i;g&&(u||(p?o(i,s):o(e,c)),o(i,r))}else 0===d.alongA&&(-1===d.alongB?o(e,l):0===d.alongB?o(e,d.pt):1===d.alongB&&o(e,c)),0===d.alongB&&(-1===d.alongA?o(i,r):0===d.alongA?o(i,d.pt):1===d.alongA&&o(i,s));return!1}for(var c=[];!a.isEmpty();){var d=a.getHead();if(A&&A.vert(d.pt[0]),d.isStart){A&&A.segmentNew(d.seg,d.primary);var h=s(d),u=h.before?h.before.ev:null,g=h.after?h.after.ev:null;function b(){if(u){var e=l(d,u);if(e)return e}return!!g&&l(d,g)}A&&A.tempStatus(d.seg,!!u&&u.seg,!!g&&g.seg);var p,m,f=b();if(f)e?(m=null===d.seg.myFill.below||d.seg.myFill.above!==d.seg.myFill.below)&&(f.seg.myFill.above=!f.seg.myFill.above):f.seg.otherFill=d.seg.myFill,A&&A.segmentUpdate(f.seg),d.other.remove(),d.remove();if(a.getHead()!==d){A&&A.rewind(d.seg);continue}e?(m=null===d.seg.myFill.below||d.seg.myFill.above!==d.seg.myFill.below,d.seg.myFill.below=g?g.seg.myFill.above:i,d.seg.myFill.above=m?!d.seg.myFill.below:d.seg.myFill.below):null===d.seg.otherFill&&(p=g?d.primary===g.primary?g.seg.otherFill.above:g.seg.myFill.above:d.primary?n:i,d.seg.otherFill={above:p,below:p}),A&&A.status(d.seg,!!u&&u.seg,!!g&&g.seg),d.other.status=h.insert(LinkedList.node({ev:d}))}else{var w=d.status;if(null===w)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(r.exists(w.prev)&&r.exists(w.next)&&l(w.prev.ev,w.next.ev),A&&A.statusRemove(w.ev.seg),w.remove(),!d.primary){var E=d.seg.myFill;d.seg.myFill=d.seg.otherFill,d.seg.otherFill=E}c.push(d.seg)}a.getHead().remove()}return A&&A.done(),c}return e?{addRegion:function(e){for(var A,n=e[e.length-1],a=0;a{var A,i;null===(i=null===(A=this.elementsDict[e])||void 0===A?void 0:A.groupIds)||void 0===i||i.push(t)})),t}async toClipboard(e){const t=e?await getTemplate(this.plugin,e,!1,new EmbeddedFilesLoader(this.plugin),0):null;let A=t?t.elements:[];A=A.concat(this.getElements()),navigator.clipboard.writeText(JSON.stringify({type:"excalidraw/clipboard",elements:A}))}async getSceneFromFile(e){if(!e)return errorMessage("file not found","getScene()"),null;if(!this.isExcalidrawFile(e))return errorMessage("file is not an Excalidraw file","getScene()"),null;const t=await getTemplate(this.plugin,e.path,!1,new EmbeddedFilesLoader(this.plugin),0);return{elements:t.elements,appState:t.appState}}getElements(){const e=[],t=Object.keys(this.elementsDict);for(let A=0;A{let t=e.plaintext?e.plaintext+"\n\n":"";const A=this.getElements().filter((e=>"text"===e.type));return t+="# Text Elements\n",A.forEach((e=>{var A,i;t+=`${null!==(A=e.rawText)&&void 0!==A?A:null!==(i=e.originalText)&&void 0!==i?i:e.text} ^${e.id}\n\n`})),this.getElements().filter((e=>"text"!==e.type&&e.link)).forEach((e=>{t+=`${e.link} ^${e.id}\n\n`})),t+=Object.keys(this.imagesDict).length>0?"\n# Embedded files\n":"",Object.keys(this.imagesDict).forEach((e=>{const A=this.imagesDict[e];A.latex?t+=`${e}: $$${A.latex}$$\n`:t+=`${e}: [[${A.file}]]\n`})),t})()+getMarkdownDrawingSection(JSON.stringify(G,null,"\t"),this.plugin.settings.compress);return e.silent?(await this.plugin.createDrawing(W,z,X)).path:this.plugin.createAndOpenDrawing(W,(null==e?void 0:e.onNewPane)&&e.onNewPane?"new-pane":"active-pane",z,X)}async createSVG(e,t=!1,A,i,n,a){return n||(n=this.plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":this.plugin.settings.exportWithTheme?void 0:"light"),n&&!A&&(A={withBackground:this.plugin.settings.exportWithBackground,withTheme:!0}),i||(i=new EmbeddedFilesLoader(this.plugin,n?"dark"===n:void 0)),await createSVG(e,t,A,i,n,this.canvas.theme,this.canvas.viewBackgroundColor,this.getElements(),this.plugin,0,a,this.imagesDict)}async createPNG(e,t=1,A,i,n,a){return n||(n=this.plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":this.plugin.settings.exportWithTheme?void 0:"light"),n&&!A&&(A={withBackground:this.plugin.settings.exportWithBackground,withTheme:!0}),i||(i=new EmbeddedFilesLoader(this.plugin,n?"dark"===n:void 0)),await createPNG(e,t,A,i,n,this.canvas.theme,this.canvas.viewBackgroundColor,this.getElements(),this.plugin,0,a,this.imagesDict)}wrapText(e,t){return wrapTextAtCharLength(e,t,this.plugin.settings.forceWrap)}boxedElement(e,t,A,i,n,a,r=null){return{id:e,type:t,x:A,y:i,width:n,height:a,angle:this.style.angle,strokeColor:this.style.strokeColor,backgroundColor:this.style.backgroundColor,fillStyle:this.style.fillStyle,strokeWidth:this.style.strokeWidth,strokeStyle:this.style.strokeStyle,roughness:this.style.roughness,opacity:this.style.opacity,roundness:this.style.strokeSharpness?"round"===this.style.strokeSharpness?{type:ROUNDNESS.ADAPTIVE_RADIUS}:null:this.style.roundness,seed:Math.floor(1e5*Math.random()),version:1,versionNonce:Math.floor(1e9*Math.random()),updated:Date.now(),isDeleted:!1,groupIds:[],boundElements:[],link:r,locked:!1}}addIFrame(e,t,A,i,n,a){return this.addEmbeddable(e,t,A,i,n,a)}addEmbeddable(e,t,A,i,n,a){var r;if(!this.targetView||!(null===(r=this.targetView)||void 0===r?void 0:r._loaded))return errorMessage("targetView not set","addEmbeddable()"),null;if(!n&&!a)return errorMessage("Either the url or the file must be set. If both are provided the URL takes precedence","addEmbeddable()"),null;const s=nanoid();return this.elementsDict[s]=this.boxedElement(s,"embeddable",e,t,A,i,n||(a?`[[${app.metadataCache.fileToLinktext(a,this.targetView.file.path,!1)}]]`:"")),s}addRect(e,t,A,i){const n=nanoid();return this.elementsDict[n]=this.boxedElement(n,"rectangle",e,t,A,i),n}addDiamond(e,t,A,i){const n=nanoid();return this.elementsDict[n]=this.boxedElement(n,"diamond",e,t,A,i),n}addEllipse(e,t,A,i){const n=nanoid();return this.elementsDict[n]=this.boxedElement(n,"ellipse",e,t,A,i),n}addBlob(e,t,A,i){const n=.5*i,a=.5*A,r=a/9,s=.8*n,o=[],l=(A,i)=>{const l=A+Math.random()*r-r/2;o.push([l+Math.random()*r-r/2+A%2*r/6+e,i*Math.sqrt(n*n*(1-l*l/(a*a)))+Math.random()*s-s/2+A%2*s/6+t])};let c;for(c=r/2-a;c<=a-r/2;c+=a/6)l(c,1);for(c=a-r/2;c>=r/2-a;c-=a/6)l(c,-1);o.push(o[0]);const d=this.addLine((e=>{const t=getLineBox(e),n=A/t.w,a=i/t.h;let r;for(r=0;r{A.push(e.id),this.elementsDict[e.id]=e})),null==t?void 0:t.files)for(const e in t.files)this.imagesDict[e]=Object.assign(Object.assign({},t.files[e]),{created:Date.now(),isHyperlink:!1,hyperlink:null,file:null,hasSVGwithBitmap:!1,latex:null});return A}async addImage(e,t,A,i=!0,n=!0){const a=nanoid(),r=new EmbeddedFilesLoader(this.plugin,"dark"===this.canvas.theme),s="string"==typeof A?await r.getObsidianImage(new EmbeddedFile(this.plugin,"",A),0):await r.getObsidianImage(A,0);if(!s)return null;const o="string"==typeof A?s.fileId:"md"===A.extension||"pdf"===A.extension.toLowerCase()?fileid():s.fileId;if(this.imagesDict[o]={mimeType:s.mimeType,id:o,dataURL:s.dataURL,created:s.created,isHyperlink:"string"==typeof A,hyperlink:"string"==typeof A?A:null,file:"string"==typeof A?null:A.path+(i||!n?"":"|100%"),hasSVGwithBitmap:s.hasSVGwithBitmap,latex:null},i&&Math.max(s.size.width,s.size.height)>500){const e=500/Math.max(s.size.width,s.size.height);s.size.width=e*s.size.width,s.size.height=e*s.size.height}return this.elementsDict[a]=this.boxedElement(a,"image",e,t,s.size.width,s.size.height),this.elementsDict[a].fileId=o,this.elementsDict[a].scale=[1,1],!i&&n&&(this.elementsDict[a].customData={isAnchored:!0}),a}async addLaTex(e,t,A){const i=nanoid(),n=await tex2dataURL(A,this.plugin);return n?(this.imagesDict[n.fileId]={mimeType:n.mimeType,id:n.fileId,dataURL:n.dataURL,created:n.created,file:null,hasSVGwithBitmap:!1,latex:A},this.elementsDict[i]=this.boxedElement(i,"image",e,t,n.size.width,n.size.height),this.elementsDict[i].fileId=n.fileId,this.elementsDict[i].scale=[1,1],i):null}connectObjects(e,t,A,i,n){if(!this.elementsDict[e]||!this.elementsDict[A])return;if(["line","arrow","freedraw"].includes(this.elementsDict[e].type)||["line","arrow","freedraw"].includes(this.elementsDict[A].type))return;const a=(null==n?void 0:n.padding)?n.padding:10,r=(null==n?void 0:n.numberOfPoints)?n.numberOfPoints:0,s=(e,t)=>{switch(e){case"bottom":return[(t.x+(t.x+t.width))/2,t.y+t.height+a];case"left":return[t.x-a,(t.y+(t.y+t.height))/2];case"right":return[t.x+t.width+a,(t.y+(t.y+t.height))/2];default:return[(t.x+(t.x+t.width))/2,t.y-a]}};let o,l,c,d;const h=this.elementsDict[e],u=this.elementsDict[A];if(!t||!i){const e=h.x+h.width/2,A=u.x+u.width/2,n=h.y+h.height/2,a=u.y+u.height/2;if(!t){const t=intersectElementWithLine(h,[A,a],[e,n],4);0===t.length?[o,l]=[e,n]:[o,l]=t[0]}if(!i){const t=intersectElementWithLine(u,[e,n],[A,a],4);0===t.length?[c,d]=[A,a]:[c,d]=t[0]}}t&&([o,l]=s(t,this.elementsDict[e])),i&&([c,d]=s(i,this.elementsDict[A]));const g=r+2,p=[];for(let e=0;eMath.PI/2&&(i-=Math.PI),this.style.angle=i;const a=this.addText(A.x+A.points[1][0]/2-n.width/2,A.y+A.points[1][1]/2-n.height,t);return this.style.angle=0,a}clear(){this.elementsDict={},this.imagesDict={}}reset(){this.clear(),this.activeScript=null,this.style={strokeColor:"#000000",backgroundColor:"transparent",angle:0,fillStyle:"hachure",strokeWidth:1,strokeStyle:"solid",roughness:1,opacity:100,roundness:null,fontFamily:1,fontSize:20,textAlign:"left",verticalAlign:"top",startArrowHead:null,endArrowHead:"arrow"},this.canvas={theme:"light",viewBackgroundColor:"#FFFFFF",gridSize:0}}isExcalidrawFile(e){return this.plugin.isExcalidrawFile(e)}setView(e){if(!e){const e=app.workspace.getActiveViewOfType(ExcalidrawView);if(e instanceof ExcalidrawView)this.targetView=e;else{const e=app.workspace.getLeavesOfType("excalidraw");if(!e||0==e.length)return;this.targetView=e[0].view}}if("active"==e){const e=app.workspace.getActiveViewOfType(ExcalidrawView);if(!(e instanceof ExcalidrawView))return;this.targetView=e}if("first"==e){const e=app.workspace.getLeavesOfType("excalidraw");if(!e||0==e.length)return;this.targetView=e[0].view}return e instanceof ExcalidrawView&&(this.targetView=e),this.targetView}getExcalidrawAPI(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.excalidrawAPI:(errorMessage("targetView not set","getExcalidrawAPI()"),null)}getViewElements(){var e;if(!this.targetView||!(null===(e=this.targetView)||void 0===e?void 0:e._loaded))return errorMessage("targetView not set","getViewElements()"),[];const t=this.targetView.excalidrawAPI;return t?t.getSceneElements():[]}deleteViewElements(e){var t,A,i;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return errorMessage("targetView not set","deleteViewElements()"),!1;const n=null===(i=null===(A=this.targetView)||void 0===A?void 0:A.excalidrawRef)||void 0===i?void 0:i.current;if(!n)return!1;const a=n.getSceneElements(),r=n.getAppState();return this.targetView.updateScene({elements:a.filter((t=>!e.includes(t))),appState:r,commitToHistory:!0}),!0}getViewSelectedElement(){const e=this.getViewSelectedElements();return e?e[0]:null}getViewSelectedElements(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.getViewSelectedElements():(errorMessage("targetView not set","getViewSelectedElements()"),[])}getViewFileForImageElement(e){var t,A,i,n;return this.targetView&&(null===(t=this.targetView)||void 0===t?void 0:t._loaded)?e&&"image"===e.type?null===(n=null===(i=null===(A=this.targetView)||void 0===A?void 0:A.excalidrawData)||void 0===i?void 0:i.getFile(e.fileId))||void 0===n?void 0:n.file:(errorMessage("Must provide an image element as input","getViewFileForImageElement()"),null):(errorMessage("targetView not set","getViewFileForImageElement()"),null)}copyViewElementsToEAforEditing(e){e.forEach((e=>{this.elementsDict[e.id]=cloneElement(e)}))}viewToggleFullScreen(e=!1){var t,A,i;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return void errorMessage("targetView not set","viewToggleFullScreen()");const n=this.targetView,a=n.isFullscreen();e&&(n.updateScene({appState:{viewModeEnabled:!a},commitToHistory:!1}),null===(i=null===(A=this.targetView.toolsPanelRef)||void 0===A?void 0:A.current)||void 0===i||i.setExcalidrawViewMode(!a)),a?n.exitFullscreen():n.gotoFullscreen()}setViewModeEnabled(e){var t,A,i;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return void errorMessage("targetView not set","viewToggleFullScreen()");const n=this.targetView;n.updateScene({appState:{viewModeEnabled:e}}),null===(i=null===(A=n.toolsPanelRef)||void 0===A?void 0:A.current)||void 0===i||i.setExcalidrawViewMode(e)}viewUpdateScene(e,t=!1){var A;this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?this.targetView.updateScene(e,t):errorMessage("targetView not set","viewToggleFullScreen()")}connectObjectWithViewSelectedElement(e,t,A,i){const n=this.getViewSelectedElement();if(!n)return!1;const a=n.id;return this.elementsDict[a]=n,this.connectObjects(e,t,a,A,i),delete this.elementsDict[a],!0}viewZoomToElements(e,t){var A;this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?this.targetView.zoomToElements(e,t):errorMessage("targetView not set","viewToggleFullScreen()")}async addElementsToView(e=!1,t=!0,A=!1,i=!1){var n;if(!this.targetView||!(null===(n=this.targetView)||void 0===n?void 0:n._loaded))return errorMessage("targetView not set","addElementsToView()"),!1;const a=this.getElements();return await this.targetView.addElements(a,e,t,this.imagesDict,A,i)}registerThisAsViewEA(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}deregisterThisAsViewEA(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}getEmbeddedFilesLoader(e){return new EmbeddedFilesLoader(this.plugin,e)}getExportSettings(e,t){return{withBackground:e,withTheme:t}}getBoundingBox(e){const t=getCommonBoundingBox(e);return{topX:t.minX,topY:t.minY,width:t.maxX-t.minX,height:t.maxY-t.minY}}getMaximumGroups(e){return getMaximumGroups(e)}getLargestElement(e){if(!e||0===e.length)return null;let t=e[0];const A=e=>e.height*e.width;let i=A(e[0]);for(let n=1;ni&&(i=a,t=e[n])}return t}intersectElementWithLine(e,t,A,i){return intersectElementWithLine(e,t,A,i)}getCommonGroupForElements(e){const t=e.map((e=>e.groupIds)).reduce(((e,t)=>t.filter((t=>e.includes(t)))));return t.length>0?t[0]:null}getElementsInTheSameGroupWithElement(e,t){if(!e||!t)return[];const A="text"===e.type&&e.containerId?t.filter((t=>t.id===e.containerId)):[];return 0===e.groupIds.length?1===A.length?[e,A[0]]:[e]:1===A.length?t.filter((t=>t.groupIds.some((t=>e.groupIds.includes(t)))||t===A[0])):t.filter((t=>t.groupIds.some((t=>e.groupIds.includes(t)))))}getElementsInFrame(e,t){return e&&t&&"frame"===e.type?t.filter((t=>t.frameId===e.id)):[]}getScriptSettings(){var e;return this.activeScript?null!==(e=this.plugin.settings.scriptEngineSettings[this.activeScript])&&void 0!==e?e:{}:null}async setScriptSettings(e){if(!this.activeScript)return null;this.plugin.settings.scriptEngineSettings[this.activeScript]=e,await this.plugin.saveSettings()}openFileInNewOrAdjacentLeaf(e,t){if(!(e&&e instanceof obsidian_module.TFile))return null;if(!this.targetView)return null;const A=getNewOrAdjacentLeaf(this.plugin,this.targetView.leaf);return A.openFile(e,null!=t?t:{active:!0}),A}measureText(e){var t,A;const i=_measureText(e,this.style.fontSize,this.style.fontFamily,getDefaultLineHeight(this.style.fontFamily));return{width:null!==(t=i.w)&&void 0!==t?t:0,height:null!==(A=i.h)&&void 0!==A?A:0}}async getOriginalImageSize(e){var t;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return errorMessage("targetView not set","getOriginalImageSize()"),null;if(!e||"image"!==e.type)return errorMessage("Please provide a single image element as input","getOriginalImageSize()"),null;const A=this.targetView.excalidrawData.getFile(e.fileId);if(!A)return errorMessage("Please provide a single image element as input","getOriginalImageSize()"),null;const i="dark"===this.getExcalidrawAPI().getAppState().theme,n=A.getImage(i);return await getImageSize(n)}verifyMinimumPluginVersion(e){return verifyMinimumPluginVersion(e)}isExcalidrawView(e){return e instanceof ExcalidrawView}selectElementsInView(e){var t;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return void errorMessage("targetView not set","selectElementsInView()");if(!e||0===e.length)return;const A=this.getExcalidrawAPI();if("string"==typeof e[0]){const t=this.getViewElements().filter((t=>e.includes(t.id)));A.selectElements(t)}else A.selectElements(e)}generateElementId(){return nanoid()}cloneElement(e){const t=JSON.parse(JSON.stringify(e));return t.id=nanoid(),t}moveViewElementToZIndex(e,t){var A;if(!this.targetView||!(null===(A=this.targetView)||void 0===A?void 0:A._loaded))return void errorMessage("targetView not set","moveViewElementToZIndex()");const i=this.getExcalidrawAPI(),n=this.getViewElements(),a=n.filter((t=>t.id===e));if(0===a.length)return void errorMessage(`Element (id: ${e}) not found`,"moveViewElementToZIndex");if(t>=n.length)return void i.bringToFront(a);if(t<0)return void i.sendToBack(a);const r=n.indexOf(a[0]);n.splice(t,0,n.splice(r,1)[0]),this.targetView.updateScene({elements:n,commitToHistory:!0})}hexStringToRgb(e){const t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}rgbToHexString(e){return O$1({r:e[0],g:e[1],b:e[2]}).stringHEX({alpha:!1})}hslToRgb(e){const t=O$1({h:e[0],s:e[1],l:e[2]});return[t.red,t.green,t.blue]}rgbToHsl(e){const t=O$1({r:e[0],g:e[1],b:e[2]});return[t.hue,t.saturation,t.lightness]}colorNameToHex(e){return COLOR_NAMES.has(e.toLowerCase().trim())?COLOR_NAMES.get(e.toLowerCase().trim()):e.trim()}getCM(e){if(e)return"string"==typeof e&&(e=this.colorNameToHex(e)),O$1(e);log("Creates a CM object. Visit https://github.com/lbragile/ColorMaster for documentation.")}getPolyBool(){return PolyBool$1.epsilon(1e-10),PolyBool$1}importSVG(e){const t=svgToExcalidraw(e);return t.hasErrors?(new obsidian_module.Notice(`There were errors while parsing the given SVG:\n${[...t.errors].map((e=>e.innerHTML))}`),!1):(this.copyViewElementsToEAforEditing(t.content),!0)}}async function initExcalidrawAutomate(e){await initFonts();const t=new ExcalidrawAutomate(e);return window.ExcalidrawAutomate=t,t}function destroyExcalidrawAutomate(){delete window.ExcalidrawAutomate}function normalizeLinePoints(e){const t=[],[A,i]=e[0];for(let n=0;n-1||t.search("excalidraw-plugin: locked\n")>-1;await r.loadData(t,c,l?TextMode.parsed:TextMode.raw);let h=t.search("# Text Elements\n");-1==h&&(h=t.search("# Drawing\n"));let u=r.scene;A&&await i.loadSceneFiles(r,(e=>{if(e&&0!==e.length){for(const t of e)t.hasSVGwithBitmap&&(d=!0),r.scene.files[t.id]={mimeType:t.mimeType,id:t.id,dataURL:t.dataURL,created:t.created};u=scaleLoadedImage(r.scene,e).scene}}),n);let g=u.elements;if(o.hasGroupref){const t=o.hasSectionref?getTextElementsMatchingQuery(u.elements,["# "+o.sectionref],!0):u.elements.filter((e=>e.id===o.blockref));t.length>0&&(g=e.ea.getElementsInTheSameGroupWithElement(t[0],u.elements))}if(o.hasFrameref){const t=u.elements.filter((e=>e.id===o.blockref));1===t.length&&(g=e.ea.getElementsInFrame(t[0],u.elements))}return o.hasTaskbone&&(g=g.filter((t=>{var A;return"freedraw"===t.type||"image"===t.type&&!e.isExcalidrawFile(null===(A=r.getFile(t.fileId))||void 0===A?void 0:A.file)}))),{elements:a?updateElementLinksToObsidianLinks({elements:g,hostFile:c}):g,appState:u.appState,frontmatter:t.substring(0,h),files:u.files,hasSVGwithBitmap:d}}return{elements:[],appState:{},frontmatter:null,files:[],hasSVGwithBitmap:d}}async function createPNG(e=void 0,t=1,A,i,n=void 0,a=void 0,r=void 0,s=[],o,l,c,d){var h,u,g,p,m,f,w;i||(i=new EmbeddedFilesLoader(o)),c=null!=c?c:o.settings.exportPaddingSVG;const E=e?await getTemplate(o,e,!0,i,l):null;let b=null!==(h=null==E?void 0:E.elements)&&void 0!==h?h:[];b=b.concat(s);const B=null!=d?d:{};return(null==E?void 0:E.files)&&Object.values(E.files).forEach((e=>{e.dataURL.startsWith("http")||(B[e.id]=e)})),await getPNG({type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:b,appState:{theme:null!==(g=null!=n?n:null===(u=null==E?void 0:E.appState)||void 0===u?void 0:u.theme)&&void 0!==g?g:a,viewBackgroundColor:null!==(m=null===(p=null==E?void 0:E.appState)||void 0===p?void 0:p.viewBackgroundColor)&&void 0!==m?m:r},files:B},{withBackground:null!==(f=null==A?void 0:A.withBackground)&&void 0!==f?f:o.settings.exportWithBackground,withTheme:null!==(w=null==A?void 0:A.withTheme)&&void 0!==w?w:o.settings.exportWithTheme},c,t)}const updateElementLinksToObsidianLinks=({elements:e,hostFile:t})=>e.map((e=>{if("embeddable"!==e.type&&e.link&&e.link.startsWith("[")){const A=REGEX_LINK.getResList(e.link)[0];if(!(null==A?void 0:A.value))return e;let i=REGEX_LINK.getLink(A);if(i.search("#")>-1&&(i=getLinkParts(i,t).path),i.match(REG_LINKINDEX_INVALIDCHARS))return e;const n=app.metadataCache.getFirstLinkpathDest(i,t.path);if(!n)return e;const a=app.getObsidianUrl(n),r=cloneElement(e);return r.link=a,r}return e}));function addFilterToForeignObjects(e){e.querySelectorAll("foreignObject").forEach((e=>{e.setAttribute("filter",THEME_FILTER)}))}async function createSVG(e=void 0,t=!1,A,i,n=void 0,a=void 0,r=void 0,s=[],o,l,c,d,h=!1){var u,g,p,m,f,w,E;i||(i=new EmbeddedFilesLoader(o));const b=e?await getTemplate(o,e,!0,i,l,h):null;let B=null!==(u=null==b?void 0:b.elements)&&void 0!==u?u:[];B=B.concat(s),c=null!=c?c:o.settings.exportPaddingSVG;const v=null!=d?d:{};(null==b?void 0:b.files)&&Object.values(b.files).forEach((e=>{v[e.id]=e}));const C=null!==(p=null!=n?n:null===(g=null==b?void 0:b.appState)||void 0===g?void 0:g.theme)&&void 0!==p?p:a,y=null!==(m=null==A?void 0:A.withTheme)&&void 0!==m?m:o.settings.exportWithTheme,x=await getSVG({type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:B,appState:{theme:C,viewBackgroundColor:null!==(w=null===(f=null==b?void 0:b.appState)||void 0===f?void 0:f.viewBackgroundColor)&&void 0!==w?w:r},files:v},{withBackground:null!==(E=null==A?void 0:A.withBackground)&&void 0!==E?E:o.settings.exportWithBackground,withTheme:y},c);y&&"dark"===C&&addFilterToForeignObjects(x);const F=getEmbeddedFilenameParts(e);if(!F.hasGroupref&&!F.hasFrameref&&(F.hasBlockref||F.hasSectionref)){let e=F.hasSectionref?getTextElementsMatchingQuery(B,["# "+F.sectionref],!0):B.filter((e=>e.id===F.blockref));if(e.length>0){const t=e[0].containerId;t&&(e=e.concat(B.filter((e=>e.id===t))));const A=o.ea.getBoundingBox(e),i=o.ea.getBoundingBox(B);x.viewBox.baseVal.x=A.topX-i.topX,x.viewBox.baseVal.y=A.topY-i.topY,x.viewBox.baseVal.width=A.width+2*c,x.viewBox.baseVal.height=A.height+2*c}}return(null==b?void 0:b.hasSVGwithBitmap)&&x.setAttribute("hasbitmap","true"),t?embedFontsInSVG(x,o):x}function estimateLineBound(e){let t=1/0,A=1/0,i=-1/0,n=-1/0;for(const[a,r]of e)t=Math.min(t,a),A=Math.min(A,r),i=Math.max(i,a),n=Math.max(n,r);return[t,A,i,n]}function estimateBounds(e){const t=getCommonBoundingBox(e);return[t.minX,t.minY,t.maxX,t.maxY]}function repositionElementsToCursor(e,t,A=!1){const[i,n,a,r]=estimateBounds(e);let[s,o]=[0,0];return[s,o]=A?[t.x-(i+a)/2,t.y-(n+r)/2]:[t.x-i,t.y-n],e.forEach((e=>{e.x=e.x+s,e.y=e.y+o})),restore({elements:e},null,null).elements}function errorMessage(e,t){switch(e){case"targetView not set":errorlog({where:"ExcalidrawAutomate",source:t,message:"targetView not set, or no longer active. Use setView before calling this function"});break;case"mobile not supported":errorlog({where:"ExcalidrawAutomate",source:t,message:"this function is not avalable on Obsidian Mobile"});break;default:errorlog({where:"ExcalidrawAutomate",source:t,message:null!=e?e:"unknown error"})}}const insertLaTeXToView=e=>{const t=e.plugin.app,A=e.plugin.ea;new Prompt(t,t$d("ENTER_LATEX"),e.plugin.settings.latexBoilerplate,"\\color{red}\\oint_S {E_n dA = \\frac{1}{{\\varepsilon _0 }}} Q_{inside}").openAndGetValue((async t=>{t&&(A.reset(),await A.addLaTex(0,0,t),A.setView(e),A.addElementsToView(!0,!1,!0))}))},search=async e=>{const t=e.plugin.ea;t.reset(),t.setView(e);const A=t.getViewElements().filter((e=>"text"===e.type||"frame"===e.type));if(0===A.length)return;let i=await ScriptEngine.inputPrompt(e,e.plugin,e.plugin.app,"Search for","use quotation marks for exact match","");if(!i)return;const n=i.matchAll(/"(.*?)"/g);let a,r=[];for(;!(a=n.next()).done;)r.push(a.value[1]);i=i.replaceAll(/"(.*?)"/g,""),r=r.concat(i.split(" ").filter((e=>0!==e.length))),t.targetView.selectElementsMatchingQuery(A,r)},getTextElementsMatchingQuery=(e,t,A=!1)=>e&&0!==e.length&&t&&0!==t.length?e.filter((e=>"text"===e.type&&t.some((t=>{if(A){const A=e.rawText.toLowerCase().split("\n")[0].trim().match(/^#*(# .*)/);return!(!A||2!==A.length)&&A[1]===t.toLowerCase()}return e.rawText.toLowerCase().replaceAll("\n"," ").trim().match(t.toLowerCase())})))):[],getFrameElementsMatchingQuery=(e,t,A=!1)=>e&&0!==e.length&&t&&0!==t.length?e.filter((e=>"frame"===e.type&&t.some((t=>{if(A){const A=e.name.toLowerCase().split("\n")[0].trim().match(/^#*(# .*)/);return!(!A||2!==A.length)&&A[1]===t.toLowerCase()}return(e.name?e.name.toLowerCase().replaceAll("\n"," ").trim():"").match(t.toLowerCase())})))):[],cloneElement=e=>{const t=JSON.parse(JSON.stringify(e));return t.version=e.version+1,t.updated=Date.now(),t.versionNonce=Math.floor(1e9*Math.random()),t},verifyMinimumPluginVersion=e=>PLUGIN_VERSION===e||isVersionNewerThanOther(PLUGIN_VERSION,e),URL$1="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/index-new.md";class ScriptInstallPrompt extends obsidian_module.Modal{constructor(e){super(e.app),this.plugin=e}async onOpen(){const e=document.createElement("div");e.classList.add("search-bar-wrapper");const t=document.createElement("input");t.type="text",t.id="search-bar",t.placeholder="Search...",t.style.width="calc(100% - 120px)";const A=document.createElement("button");A.textContent="→",A.onclick=()=>this.navigateSearchResults("next");const i=document.createElement("button");i.textContent="←",i.onclick=()=>this.navigateSearchResults("previous");const n=document.createElement("span");n.id="hit-count",n.classList.add("hit-count"),e.appendChild(i),e.appendChild(A),e.appendChild(t),e.appendChild(n),this.contentEl.prepend(e),t.addEventListener("input",(e=>{this.clearHighlights();const t=e.target.value;if(t&&t.length>0){this.highlightSearchTerm(t);const e=this.contentDiv.querySelectorAll("mark.search-highlight").length;n.textContent=e>0?`1/${e}`:"",setTimeout((()=>this.navigateSearchResults("next")))}else n.textContent=""})),t.addEventListener("keydown",(e=>{(e.ctrlKey||e.metaKey)&&"f"===e.key?(e.preventDefault(),t.focus()):"Enter"===e.key&&(e.preventDefault(),this.navigateSearchResults(e.shiftKey?"previous":"next"))})),this.contentEl.classList.add("excalidraw-scriptengine-install"),this.contentDiv=document.createElement("div"),this.contentEl.appendChild(this.contentDiv),this.containerEl.classList.add("excalidraw-scriptengine-install");try{const e=await obsidian_module.request({url:URL$1});if(!e)return new obsidian_module.Notice("Error opening the Excalidraw Script Store page. Please double check that you can access the website. I've logged the link in developer console (press CTRL+SHIFT+i)",5e3),log(URL$1),void this.close();await obsidian_module.MarkdownRenderer.renderMarkdown(e,this.contentDiv,"",this.plugin),this.contentDiv.querySelectorAll("h1[data-heading],h2[data-heading],h3[data-heading]").forEach((e=>{e.setAttribute("id",e.getAttribute("data-heading"))})),this.contentDiv.querySelectorAll("a.internal-link").forEach((e=>{e.removeAttribute("target")}))}catch(e){errorlog({where:"ScriptInstallPrompt.onOpen",error:e}),new obsidian_module.Notice("Could not open ScriptEngine repository"),this.close()}}highlightSearchTerm(e){const t=document.createTreeWalker(this.contentDiv,NodeFilter.SHOW_TEXT,{acceptNode:t=>t.nodeValue.toLowerCase().includes(e.toLowerCase())?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}),A=[];for(;t.nextNode();)A.push(t.currentNode);A.forEach((t=>{const A=t.nodeValue,i=document.createDocumentFragment();let n,a=0;const r=new RegExp(e,"gi");for(;null!==(n=r.exec(A));){const e=document.createTextNode(A.slice(a,n.index)),t=document.createElement("mark");t.className="search-highlight",t.textContent=n[0],t.classList.add("search-result"),i.appendChild(e),i.appendChild(t),a=r.lastIndex}i.appendChild(document.createTextNode(A.slice(a))),t.replaceWith(i)}))}clearHighlights(){this.contentDiv.querySelectorAll("mark.search-highlight").forEach((e=>{e.outerHTML=e.innerHTML}))}navigateSearchResults(e){const t=Array.from(this.contentDiv.querySelectorAll("mark.search-highlight"));if(0===t.length)return;const A=t.findIndex((e=>e.classList.contains("active-highlight")));-1!==A&&(t[A].classList.remove("active-highlight"),t[A].style.border="none");let i=0;"next"===e?i=A===t.length-1?0:A+1:"previous"===e&&(i=0===A?t.length-1:A-1);const n=t[i];n.classList.add("active-highlight"),n.scrollIntoView({behavior:"smooth",block:"nearest"}),document.getElementById("hit-count").textContent=`${i+1}/${t.length}`}onClose(){this.contentEl.empty()}}function r(e){var t,A,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t{e.view instanceof ExcalidrawView&&e.view.updatePinnedCustomPens()})),this.plugin.saveSettings();const e=this.plugin.settings.customPens[this.pen],t=this.view.excalidrawAPI;setPen(e,t),t.setActiveTool({type:"freedraw"})}}async createForm(){const e=e=>{let t="";if(COLOR_NAMES.has(e))return[COLOR_NAMES.get(e),t];const A=(new Option).style;if(A.color=e,A.color){const e=A.color.match(/^[^\d]*(\d*)[^\d]*(\d*)[^\d]*(\d*)[^\d]*([\d\.]*)?/);return e?(t=e[4]?(Math.round(255*parseFloat(e[4]))<<0).toString(16).padStart(2,"0"):"",[`#${(parseInt(e[1])<<0).toString(16).padStart(2,"0")}${(parseInt(e[2])<<0).toString(16).padStart(2,"0")}${(parseInt(e[3])<<0).toString(16).padStart(2,"0")}`,t]):[null,t]}return[null,t]},t=this.plugin.settings.customPens[this.pen],A=this.contentEl;let i,n,a,r,s;A.createEl("h1",{text:"Pen settings"}),new obsidian_module.Setting(A).setName("Pen type").setDesc("Select type of pen").addDropdown((e=>{e.addOption("default","Excalidraw Default").addOption("highlighter","Highlighter").addOption("finetip","Fine tip pen").addOption("fountain","Fountain pen").addOption("marker","Marker with Outline").addOption("thick-thin","Mindmap Thick-Thin").addOption("thin-thick-thin","Mindmap Thin-Thick-Thin").setValue(t.type).onChange((e=>{this.dirty=!0,t.type=e}))})).addButton((e=>e.setButtonText("Apply").onClick((()=>{this.dirty=!0,t.strokeColor=PENS[t.type].strokeColor,t.backgroundColor=PENS[t.type].backgroundColor,t.fillStyle=PENS[t.type].fillStyle,t.strokeWidth=PENS[t.type].strokeWidth,t.roughness=PENS[t.type].roughness,t.penOptions=Object.assign({},PENS[t.type].penOptions),A.empty(),this.createForm()})))),i=new obsidian_module.Setting(A).setName(fragWithHTML(t.freedrawOnly?"Stroke & fill applies to: Freedraw only":"Stroke & fill applies to: All shapes")).setDesc(fragWithHTML('"All shapes" means that if for example, you select a blue pen with dashed fill and then switch to a different tool (e.g. to a line, a circle, an arrow - i.e. not the freedraw tool), those will all have the same blue line and dashed fill.
"Only applies to the freedraw line" means that if for example you are writing black text, and you select a custom pen (e.g. a yellow highlighter), then after using the highlighter you switch to another tool, the previous settings (e.g. black stroke color) will apply to the new shape.')).addToggle((e=>e.setValue(t.freedrawOnly).onChange((e=>{this.dirty=!0,i.setName(fragWithHTML(e?"Stroke & fill applies to: Freedraw only":"Stroke & fill applies to: All shapes")),t.freedrawOnly=e}))));let o,l,c,d,h,u,g,[p,m]=e(t.strokeColor),f=!1;s=new obsidian_module.Setting(A).setName(fragWithHTML(Boolean(t.strokeColor)?"Stroke color: Preset color":"Stroke color: Current")).setDesc(fragWithHTML("Use current stroke color of the canvas, or set a specific preset color for the pen")).addToggle((A=>A.setValue(!Boolean(t.strokeColor)).onChange((A=>{this.dirty=!0,n.settingEl.style.display=A?"none":"",s.setName(fragWithHTML(A?"Stroke color: Current":"Stroke color: Preset color")),A?delete t.strokeColor:(r.getValue()||([p,m]=e("black"),a.setValue(p),r.setValue("black")),t.strokeColor=r.getValue())})))),n=new obsidian_module.Setting(A).setName("Select stroke color").addButton((A=>A.setButtonText("Use Canvas Current").onClick((()=>{var A,i;const n=this.api.getAppState(),s=null!==(i=null===(A=n.resetCustomPen)||void 0===A?void 0:A.currentItemStrokeColor)&&void 0!==i?i:n.currentItemStrokeColor;[p,m]=e(s),t.strokeColor=s,this.dirty=!0,r.setValue(s),f=!0,a.setValue(p)})))).addText((A=>{r=A,A.setValue(t.strokeColor).onChange((A=>{f=!0,this.dirty=!0,t.strokeColor=A,[p,m]=e(A),p&&a.setValue(p)}))})).addColorPicker((e=>{a=e,e.setValue(null!=p?p:"#000000").onChange((e=>{f?f=!1:(this.dirty=!0,t.strokeColor=e+m,r.setValue(e+m))}))})),n.settingEl.style.display=Boolean(t.strokeColor)?"":"none";let[w,E]=e(t.backgroundColor);o=new obsidian_module.Setting(A).setName(fragWithHTML(Boolean(t.backgroundColor)?"Background color: Preset color":"Background color: Current")).setDesc(fragWithHTML("Toggle to use the current background color of the canvas; or a preset color")).addToggle((A=>A.setValue(!Boolean(t.backgroundColor)).onChange((A=>{this.dirty=!0,o.setName(fragWithHTML(A?"Background color: Current":"Background color: Preset color")),c.settingEl.style.display=A?"none":"",l.settingEl.style.display=A||"transparent"===t.backgroundColor?"none":"",A?delete t.backgroundColor:(h.getValue()||([w,E]=e("black"),d.setValue(w),h.setValue("black")),u.setValue(!1))})))),c=new obsidian_module.Setting(A).setName(fragWithHTML("transparent"===t.backgroundColor?"Background: Transparent":"Color: Preset color")).setDesc("Background has color or is transparent").addToggle((e=>{u=e,e.setValue("transparent"===t.backgroundColor).onChange((e=>{this.dirty=!0,l.settingEl.style.display=e?"none":"",g.settingEl.style.display=e?"none":"",c.setName(fragWithHTML(e?"Background: Transparent":"Color: Preset color")),t.backgroundColor=e?"transparent":d.getValue()}))})),c.settingEl.style.display=Boolean(t.backgroundColor)?"":"none";let b,B,v,C,y,x,F,S,T,I=!1;l=new obsidian_module.Setting(A).setName("Background color").addButton((A=>A.setButtonText("Use Canvas Current").onClick((()=>{var A,i;const n=this.api.getAppState(),a=null!==(i=null===(A=n.resetCustomPen)||void 0===A?void 0:A.currentItemBackgroundColor)&&void 0!==i?i:n.currentItemBackgroundColor;[w,E]=e(a),t.backgroundColor=a,this.dirty=!0,h.setValue(a),I=!0,d.setValue(w)})))).addText((A=>{h=A,A.setValue(t.backgroundColor).onChange((A=>{I=!0,this.dirty=!0,t.backgroundColor=A,[w,E]=e(A),w&&d.setValue(w)}))})).addColorPicker((e=>{d=e,e.setValue(null!=w?w:"#000000").onChange((e=>{I?I=!1:(this.dirty=!0,t.backgroundColor=e+E,h.setValue(e+E))}))})),l.settingEl.style.display=Boolean(t.backgroundColor)&&"transparent"!==t.backgroundColor?"":"none",g=new obsidian_module.Setting(A).setName("Fill Style").addDropdown((e=>e.addOption("","Unset").addOption("dots","Dots (⚠ VERY SLOW performance on large objects!)").addOption("zigzag","Zigzag").addOption("zigzag-line","Zigzag-line").addOption("dashed","Dashed").addOption("hachure","Hachure").addOption("cross-hatch","Cross-hatch").addOption("solid","Solid").setValue(t.fillStyle).onChange((e=>{this.dirty=!0,t.fillStyle=e})))),g.settingEl.style.display=Boolean(t.backgroundColor)&&"transparent"!==t.backgroundColor?"":"none",b=new obsidian_module.Setting(A).setName(fragWithHTML(`Sloppiness: ${null===t.roughness?"Not Set":t.roughness<=.5?"Architect (":t.roughness<=1.5?"Artist (":"Cartoonist ("}${null===t.roughness?"":`${t.roughness})`}`)).setDesc("Line sloppiness of the shape fill pattern").addSlider((e=>e.setLimits(-.5,3,.5).setValue(null===t.roughness?-.5:t.roughness).onChange((e=>{this.dirty=!0,t.roughness=-.5===e?null:e,b.setName(fragWithHTML(`Sloppiness: ${null===t.roughness?"Not Set":t.roughness<=.5?"Architect (":t.roughness<=1.5?"Artist (":"Cartoonist ("}${null===t.roughness?"":`${t.roughness})`}`))})))),B=new obsidian_module.Setting(A).setName(fragWithHTML(`Stroke Width ${0===t.strokeWidth?"Not Set":t.strokeWidth}`)).addSlider((e=>e.setLimits(0,5,.5).setValue(t.strokeWidth).onChange((e=>{this.dirty=!0,t.strokeWidth=e,B.setName(fragWithHTML(`Stroke Width ${0===t.strokeWidth?"Not Set":t.strokeWidth}`))})))),new obsidian_module.Setting(A).setName("Highlighter pen?").addToggle((e=>e.setValue(t.penOptions.highlighter).onChange((e=>{this.dirty=!0,t.penOptions.highlighter=e})))),new obsidian_module.Setting(A).setName("Pressure sensitve pen?").setDesc(fragWithHTML("toggle on: pressure sensitive
toggle off: constant pressure")).addToggle((e=>e.setValue(!t.penOptions.constantPressure).onChange((e=>{this.dirty=!0,t.penOptions.constantPressure=!e,v.settingEl.style.display=t.penOptions.constantPressure?"none":""})))),t.penOptions.hasOutline&&0===t.penOptions.outlineWidth&&(t.penOptions.outlineWidth=.5,this.dirty=!0),!t.penOptions.hasOutline&&t.penOptions.outlineWidth>0&&(t.penOptions.outlineWidth=0,this.dirty=!0),C=new obsidian_module.Setting(A).setName(fragWithHTML(0===t.penOptions.outlineWidth?"No outline":`Outline width ${t.penOptions.outlineWidth}`)).setDesc("If the stroke has an outline, this will mean the stroke color is the outline color, and the background color is the pen stroke's fill color. If the pen does not have an outline then the pen color is the stroke color. The Fill Style setting applies to the fill style of the enclosed shape, not of the line itself. The line can only have solid fill.").addSlider((e=>e.setLimits(0,8,.5).setValue(t.penOptions.outlineWidth).onChange((e=>{this.dirty=!0,t.penOptions.outlineWidth=e,t.penOptions.hasOutline=e>0,C.setName(fragWithHTML(0===t.penOptions.outlineWidth?"No outline":`Outline width ${t.penOptions.outlineWidth}`))})))),A.createEl("h2",{text:"Perfect Freehand settings"}),A.createEl("p").innerHTML='Read the Perfect Freehand documentation following this link.',y=new obsidian_module.Setting(A).setName(fragWithHTML(`Thinnning ${t.penOptions.options.thinning}`)).setDesc(fragWithHTML("The effect of pressure on the stroke's size.
To create a stroke with a steady line, set the thinning option to 0.
To create a stroke that gets thinner with pressure instead of thicker, use a negative number for the thinning option.")).addSlider((e=>e.setLimits(-1,1,.05).setValue(t.penOptions.options.thinning).onChange((e=>{this.dirty,y.setName(fragWithHTML(`Thinnning ${e}`)),t.penOptions.options.thinning=e})))),x=new obsidian_module.Setting(A).setName(fragWithHTML(`Smoothing ${t.penOptions.options.smoothing}`)).setDesc(fragWithHTML("How much to soften the stroke's edges.")).addSlider((e=>e.setLimits(0,1,.05).setValue(t.penOptions.options.smoothing).onChange((e=>{this.dirty,x.setName(fragWithHTML(`Smoothing ${e}`)),t.penOptions.options.smoothing=e})))),F=new obsidian_module.Setting(A).setName(fragWithHTML(`Streamline ${t.penOptions.options.streamline}`)).setDesc(fragWithHTML("\tHow much to streamline the stroke.")).addSlider((e=>e.setLimits(0,1,.05).setValue(t.penOptions.options.streamline).onChange((e=>{this.dirty,F.setName(fragWithHTML(`Streamline ${e}`)),t.penOptions.options.streamline=e})))),new obsidian_module.Setting(A).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info click here')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(t.penOptions.options.easing).onChange((e=>{this.dirty=!0,t.penOptions.options.easing=e})))),v=new obsidian_module.Setting(A).setName("Simulate Pressure").setDesc("Whether to simulate pressure based on velocity.").addDropdown((e=>e.addOption("true","Always").addOption("false","Never").addOption("","Yes for mouse, No for pen").setValue(!0===t.penOptions.options.simulatePressure?"true":!1===t.penOptions.options.simulatePressure?"false":"").onChange((e=>{switch(this.dirty=!0,e){case"true":t.penOptions.options.simulatePressure=!0;break;case"false":t.penOptions.options.simulatePressure=!1;break;default:delete t.penOptions.options.simulatePressure}})))),v.settingEl.style.display=t.penOptions.constantPressure?"none":"",A.createEl("h3",{text:"Start"}),A.createEl("p",{text:"Tapering options for the start of the line."}),new obsidian_module.Setting(A).setName("Cap Start").setDesc("Whether to draw a cap").addToggle((e=>e.setValue(t.penOptions.options.start.cap).onChange((e=>{this.dirty=!0,t.penOptions.options.start.cap=e})))),S=new obsidian_module.Setting(A).setName(fragWithHTML(`Taper: ${!0===t.penOptions.options.start.taper?"true":t.penOptions.options.start.taper}`)).setDesc("The distance to taper. If set to true, the taper will be the total length of the stroke.").addSlider((e=>e.setLimits(0,151,1).setValue("boolean"==typeof t.penOptions.options.start.taper?151:t.penOptions.options.start.taper).onChange((e=>{this.dirty,t.penOptions.options.start.taper=151===e||e,S.setName(fragWithHTML(`Taper: ${!0===t.penOptions.options.start.taper?"true":t.penOptions.options.start.taper}`))})))),new obsidian_module.Setting(A).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info click here')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(t.penOptions.options.start.easing).onChange((e=>{this.dirty=!0,t.penOptions.options.start.easing=e})))),A.createEl("h3",{text:"End"}),A.createEl("p",{text:"Tapering options for the end of the line."}),new obsidian_module.Setting(A).setName("Cap End").setDesc("Whether to draw a cap").addToggle((e=>e.setValue(t.penOptions.options.end.cap).onChange((e=>{this.dirty=!0,t.penOptions.options.end.cap=e})))),T=new obsidian_module.Setting(A).setName(fragWithHTML(`Taper: ${!0===t.penOptions.options.end.taper?"true":t.penOptions.options.end.taper}`)).setDesc("The distance to taper. If set to true, the taper will be the total length of the stroke.").addSlider((e=>e.setLimits(0,151,1).setValue("boolean"==typeof t.penOptions.options.end.taper?151:t.penOptions.options.end.taper).onChange((e=>{this.dirty,t.penOptions.options.end.taper=151===e||e,T.setName(fragWithHTML(`Taper: ${!0===t.penOptions.options.end.taper?"true":t.penOptions.options.end.taper}`))})))),new obsidian_module.Setting(A).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info click here')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(t.penOptions.options.end.easing).onChange((e=>{this.dirty=!0,t.penOptions.options.end.easing=e}))))}}var defaultAttributes={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const toKebabCase=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),createLucideIcon=(e,t)=>{const A=React.forwardRef((({color:A="currentColor",size:i=24,strokeWidth:n=2,absoluteStrokeWidth:a,children:r,...s},o)=>{return React.createElement("svg",{ref:o,...defaultAttributes,width:i,height:i,stroke:A,strokeWidth:a?24*Number(n)/Number(i):n,className:`lucide lucide-${l=e,l.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,...s},[...t.map((([e,t])=>React.createElement(e,t))),...(Array.isArray(r)?r:[r])||[]]);var l}));return A.displayName=`${e}`,A};var createLucideIcon$1=createLucideIcon;const Globe=createLucideIcon$1("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"2",x2:"22",y1:"12",y2:"12",key:"1dnqot"}],["path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z",key:"nb9nel"}]]),RotateCcw=createLucideIcon$1("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]),Scan=createLucideIcon$1("Scan",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}]]),ICONS={ExportImage:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("g",{strokeWidth:"1.25"},React__namespace.createElement("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),React__namespace.createElement("path",{d:"M15 8h.01"}),React__namespace.createElement("path",{d:"M12 20h-5a3 3 0 0 1 -3 -3v-10a3 3 0 0 1 3 -3h10a3 3 0 0 1 3 3v5"}),React__namespace.createElement("path",{d:"M4 15l4 -4c.928 -.893 2.072 -.893 3 0l4 4"}),React__namespace.createElement("path",{d:"M14 14l1 -1c.617 -.593 1.328 -.793 2.009 -.598"}),React__namespace.createElement("path",{d:"M19 16v6"}),React__namespace.createElement("path",{d:"M22 19l-3 3l-3 -3"}))),Reload:React__namespace.createElement(RotateCcw,null),Globe:React__namespace.createElement(Globe,null),ZoomToSelectedElement:React__namespace.createElement(Scan,null),ZoomToSection:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"1",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("text",{x:"6",y:"18",fontSize:"22px"},"#")),ZoomToBlock:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"1",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("text",{x:"1",y:"18",fontSize:"22px"},"#^")),Discord:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"var(--icon-fill-color)",stroke:"none",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 640 512"},React__namespace.createElement("path",{d:"M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"})),Github:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"}),React__namespace.createElement("path",{d:"M9 18c-4.51 2-5-2-7-2"})),YouTube:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M12 19c-2.3 0-6.4-.2-8.1-.6-.7-.2-1.2-.7-1.4-1.4-.3-1.1-.5-3.4-.5-5s.2-3.9.5-5c.2-.7.7-1.2 1.4-1.4C5.6 5.2 9.7 5 12 5s6.4.2 8.1.6c.7.2 1.2.7 1.4 1.4.3 1.1.5 3.4.5 5s-.2 3.9-.5 5c-.2.7-.7 1.2-1.4 1.4-1.7.4-5.8.6-8.1.6 0 0 0 0 0 0z"}),React__namespace.createElement("polygon",{points:"10 15 15 12 10 9"})),heart:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M20.42 4.58a5.4 5.4 0 0 0-7.65 0l-.77.78-.77-.78a5.4 5.4 0 0 0-7.65 0C1.46 6.7 1.33 10.28 4 13l8 8 8-8c2.67-2.72 2.54-6.3.42-8.42z"})),twitter:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"})),exportLibrary:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 200 190",fill:"var(--icon-fill-color)"},React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M50 10h20v20H50"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M50 10h20m-20 0h20m0 0v20m0-20v20m0 0H50m20 0H50m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M90 10h20v20H90"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M90 10h20m-20 0h20m0 0v20m0-20v20m0 0H90m20 0H90m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M130 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M130 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M170 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M170 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M70 50h60v80h20l-50 50-50-50h20V50"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M70 50h60m-60 0h60m0 0v80m0-80v80m0 0h20m-20 0h20m0 0-50 50m50-50-50 50m0 0-50-50m50 50-50-50m0 0h20m-20 0h20m0 0V50m0 80V50m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M10 10h20v20H10"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M10 10h20m-20 0h20m0 0v20m0-20v20m0 0H10m20 0H10m0 0V10m0 20V10"}))),insertPDF:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M64 464H96v48H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V288H336V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM176 352h32c30.9 0 56 25.1 56 56s-25.1 56-56 56H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H192v48h16zm96-80h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H304c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H320v96h16zm80-112c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V432 368z"})),insertImage:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z"})),insertMD:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 384 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z"})),insertLaTeX:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",stroke:"none",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z"})),insertLink:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"none",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"})),search:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M500.3 443.7l-119.7-119.7c27.22-40.41 40.65-90.9 33.46-144.7C401.8 87.79 326.8 13.32 235.2 1.723C99.01-15.51-15.51 99.01 1.724 235.2c11.6 91.64 86.08 166.7 177.6 178.9c53.8 7.189 104.3-6.236 144.7-33.46l119.7 119.7c15.62 15.62 40.95 15.62 56.57 0C515.9 484.7 515.9 459.3 500.3 443.7zM79.1 208c0-70.58 57.42-128 128-128s128 57.42 128 128c0 70.58-57.42 128-128 128S79.1 278.6 79.1 208z"})),ocr:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"m6 18 6-12 6 12"}),React__namespace.createElement("path",{d:"M8 14h8"}),React__namespace.createElement("path",{d:"M3 7V5a2 2 0 0 1 2-2h2"}),React__namespace.createElement("path",{d:"M17 3h2a2 2 0 0 1 2 2v2"}),React__namespace.createElement("path",{d:"M21 17v2a2 2 0 0 1-2 2h-2"}),React__namespace.createElement("path",{d:"M7 21H5a2 2 0 0 1-2-2v-2"})),scriptEngine:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeLinecap:"round",strokeWidth:"4"},React__namespace.createElement("g",{transform:"translate(-8,-8)"},React__namespace.createElement("path",{d:"M24.318 37.983c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749m.126-.104c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749",fill:"none",strokeWidth:"2"}),React__namespace.createElement("path",{d:"M81.235 56.502a23.3 23.3 0 0 1-1.46 8.068 20.785 20.785 0 0 1-1.762 3.72 24.068 24.068 0 0 1-5.337 6.26 22.575 22.575 0 0 1-3.449 2.358 23.726 23.726 0 0 1-7.803 2.803 24.719 24.719 0 0 1-8.333 0 24.102 24.102 0 0 1-4.028-1.074 23.71 23.71 0 0 1-3.776-1.729 23.259 23.259 0 0 1-6.369-5.265 23.775 23.775 0 0 1-2.416-3.353 24.935 24.935 0 0 1-1.762-3.72 23.765 23.765 0 0 1-1.083-3.981 23.454 23.454 0 0 1 0-8.173c.252-1.336.604-2.698 1.083-3.956a24.935 24.935 0 0 1 1.762-3.72 22.587 22.587 0 0 1 2.416-3.378c.881-1.048 1.888-2.017 2.946-2.908a24.38 24.38 0 0 1 3.423-2.357 23.71 23.71 0 0 1 3.776-1.73 21.74 21.74 0 0 1 4.028-1.047 23.437 23.437 0 0 1 8.333 0 24.282 24.282 0 0 1 7.803 2.777 26.198 26.198 0 0 1 3.45 2.357 24.62 24.62 0 0 1 5.336 6.287 20.785 20.785 0 0 1 1.762 3.72 21.32 21.32 0 0 1 1.083 3.955c.251 1.336.302 3.405.377 4.086.05.681.05-.68 0 0",fill:"none"}),React__namespace.createElement("path",{d:"M69.404 56.633c-6.596-3.3-13.216-6.6-19.51-9.744m19.51 9.744c-6.747-3.379-13.493-6.758-19.51-9.744m0 0v19.489m0-19.49v19.49m0 0c4.355-2.148 8.71-4.322 19.51-9.745m-19.51 9.745c3.978-1.965 7.93-3.956 19.51-9.745m0 0h0m0 0h0"}))),openLink:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v7"}),React__namespace.createElement("polyline",{points:"14 2 14 8 20 8"}),React__namespace.createElement("path",{d:"m10 18 3-3-3-3"}),React__namespace.createElement("path",{d:"M4 18v-1a2 2 0 0 1 2-2h6"})),openLinkProperties:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v7"}),React__namespace.createElement("polyline",{points:"14 2 14 8 20 8",fill:"var(--icon-fill-color)"}),React__namespace.createElement("path",{d:"m10 18 3-3-3-3"}),React__namespace.createElement("path",{d:"M4 18v-1a2 2 0 0 1 2-2h6"})),switchToMarkdown:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512",stroke:"var(--icon-fill-color)",strokeWidth:"10",fill:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"})),gotoFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M128 32H32C14.31 32 0 46.31 0 64v96c0 17.69 14.31 32 32 32s32-14.31 32-32V96h64c17.69 0 32-14.31 32-32S145.7 32 128 32zM416 32h-96c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32V64C448 46.31 433.7 32 416 32zM128 416H64v-64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96c0 17.69 14.31 32 32 32h96c17.69 0 32-14.31 32-32S145.7 416 128 416zM416 320c-17.69 0-32 14.31-32 32v64h-64c-17.69 0-32 14.31-32 32s14.31 32 32 32h96c17.69 0 32-14.31 32-32v-96C448 334.3 433.7 320 416 320z"})),exitFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M128 320H32c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32v-96C160 334.3 145.7 320 128 320zM416 320h-96c-17.69 0-32 14.31-32 32v96c0 17.69 14.31 32 32 32s32-14.31 32-32v-64h64c17.69 0 32-14.31 32-32S433.7 320 416 320zM320 192h96c17.69 0 32-14.31 32-32s-14.31-32-32-32h-64V64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96C288 177.7 302.3 192 320 192zM128 32C110.3 32 96 46.31 96 64v64H32C14.31 128 0 142.3 0 160s14.31 32 32 32h96c17.69 0 32-14.31 32-32V64C160 46.31 145.7 32 128 32z"})),releaseNotes:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M0 219.2v212.5c0 14.25 11.62 26.25 26.5 27C75.32 461.2 180.2 471.3 240 511.9V245.2C181.4 205.5 79.99 194.8 29.84 192C13.59 191.1 0 203.6 0 219.2zM482.2 192c-50.09 2.848-151.3 13.47-209.1 53.09C272.1 245.2 272 245.3 272 245.5v266.5c60.04-40.39 164.7-50.76 213.5-53.28C500.4 457.9 512 445.9 512 431.7V219.2C512 203.6 498.4 191.1 482.2 192zM352 96c0-53-43-96-96-96S160 43 160 96s43 96 96 96S352 149 352 96z"})),rawMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 60"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"4",d:"M20 10H10m10 0H10m0 0v40m0-40v40m0 0h10m-10 0h10M40 10H30m10 0H30m0 0v40m0-40v40m0 0h10m-10 0h10M60 10h10m-10 0h10m0 0v40m0-40v40m0 0H60m10 0H60M80 10h10m-10 0h10m0 0v40m0-40v40m0 0H80m10 0H80"})),parsedMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",stroke:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M574.1 280.4l-45.38-181.8c-5.875-23.63-21.62-44-43-55.75c-21.5-11.75-46.1-14.13-70.25-6.375l-15.25 5.125c-8.375 2.75-12.87 11.88-10 20.25l5 15.13c2.75 8.375 11.88 12.88 20.25 10.13l13.12-4.375c10.88-3.625 23-3.625 33.25 1.75c10.25 5.375 17.5 14.5 20.38 25.75l38.38 153.9c-22.12-6.875-49.75-12.5-81.13-12.5c-34.88 0-73.1 7-114.9 26.75H251.4C210.5 258.6 171.4 251.6 136.5 251.6c-31.38 0-59 5.625-81.12 12.5l38.38-153.9c2.875-11.25 10.12-20.38 20.5-25.75C124.4 79.12 136.5 79.12 147.4 82.74l13.12 4.375c8.375 2.75 17.5-1.75 20.25-10.13l5-15.13C188.6 53.49 184.1 44.37 175.6 41.62l-15.25-5.125c-23.13-7.75-48.75-5.375-70.13 6.375c-21.37 11.75-37.12 32.13-43 55.75L1.875 280.4C.6251 285.4 .0001 290.6 .0001 295.9v70.25C.0001 428.1 51.63 480 115.3 480h37.13c60.25 0 110.4-46 114.9-105.4l2.875-38.63h35.75l2.875 38.63C313.3 433.1 363.4 480 423.6 480h37.13c63.62 0 115.2-51 115.2-113.9V295.9C576 290.6 575.4 285.5 574.1 280.4zM203.4 369.7c-2 26-24.38 46.25-51 46.25H115.2C87 415.1 64 393.6 64 366.1v-37.5c18.12-6.5 43.38-13 72.62-13c23.88 0 47.25 4.375 69.88 13L203.4 369.7zM512 366.1c0 27.5-23 49.88-51.25 49.88h-37.13c-26.62 0-49-20.25-51-46.25l-3.125-41.13c22.62-8.625 46.13-13 70-13c29 0 54.38 6.5 72.5 13V366.1z"})),convertFile:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",viewBox:"0 110 700 340",xmlns:"http://www.w3.org/2000/svg",stroke:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"m593.95 239.4v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4688-1.457-3.1875-2.6445-5.0742-3.5h-1.5742c-1.4727-0.49219-3.0039-0.78516-4.5508-0.875h-124.25c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v87.5h-70v-105.88-1.0508c-0.089844-1.5469-0.38281-3.0781-0.875-4.5508v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4727-1.457-3.1914-2.6445-5.0742-3.5h-1.5742c-1.7031-0.875-3.5352-1.4688-5.4258-1.75h-123.55c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v245c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-52.5h70v122.5c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-192.5-1.0508c-0.14453-1.5547-0.5-3.0859-1.0508-4.5508zm-313.95 110.6h-140v-210h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v87.5h-52.5c-6.2539 0-12.031 3.3359-15.156 8.75s-3.125 12.086 0 17.5 8.9023 8.75 15.156 8.75h52.5zm140 70v-105h27.824l-5.0742 5.0742c-3.7031 3.1719-5.9141 7.7461-6.1055 12.617-0.1875 4.8711 1.668 9.6016 5.1133 13.051 3.4492 3.4453 8.1797 5.3008 13.051 5.1133 4.8711-0.19141 9.4453-2.4023 12.617-6.1055l35-35c3.2578-3.2773 5.0898-7.7148 5.0898-12.336 0-4.625-1.832-9.0586-5.0898-12.34l-35-35c-4.5078-3.8555-10.66-5.1719-16.348-3.4883-5.6875 1.6797-10.137 6.1289-11.816 11.816-1.6836 5.6914-0.37109 11.844 3.4883 16.348l5.0742 5.0742h-27.824v-69.824h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v157.5z"})),cog:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M495.9 166.6C499.2 175.2 496.4 184.9 489.6 191.2L446.3 230.6C447.4 238.9 448 247.4 448 256C448 264.6 447.4 273.1 446.3 281.4L489.6 320.8C496.4 327.1 499.2 336.8 495.9 345.4C491.5 357.3 486.2 368.8 480.2 379.7L475.5 387.8C468.9 398.8 461.5 409.2 453.4 419.1C447.4 426.2 437.7 428.7 428.9 425.9L373.2 408.1C359.8 418.4 344.1 427 329.2 433.6L316.7 490.7C314.7 499.7 307.7 506.1 298.5 508.5C284.7 510.8 270.5 512 255.1 512C241.5 512 227.3 510.8 213.5 508.5C204.3 506.1 197.3 499.7 195.3 490.7L182.8 433.6C167 427 152.2 418.4 138.8 408.1L83.14 425.9C74.3 428.7 64.55 426.2 58.63 419.1C50.52 409.2 43.12 398.8 36.52 387.8L31.84 379.7C25.77 368.8 20.49 357.3 16.06 345.4C12.82 336.8 15.55 327.1 22.41 320.8L65.67 281.4C64.57 273.1 64 264.6 64 256C64 247.4 64.57 238.9 65.67 230.6L22.41 191.2C15.55 184.9 12.82 175.3 16.06 166.6C20.49 154.7 25.78 143.2 31.84 132.3L36.51 124.2C43.12 113.2 50.52 102.8 58.63 92.95C64.55 85.8 74.3 83.32 83.14 86.14L138.8 103.9C152.2 93.56 167 84.96 182.8 78.43L195.3 21.33C197.3 12.25 204.3 5.04 213.5 3.51C227.3 1.201 241.5 0 256 0C270.5 0 284.7 1.201 298.5 3.51C307.7 5.04 314.7 12.25 316.7 21.33L329.2 78.43C344.1 84.96 359.8 93.56 373.2 103.9L428.9 86.14C437.7 83.32 447.4 85.8 453.4 92.95C461.5 102.8 468.9 113.2 475.5 124.2L480.2 132.3C486.2 143.2 491.5 154.7 495.9 166.6V166.6zM256 336C300.2 336 336 300.2 336 255.1C336 211.8 300.2 175.1 256 175.1C211.8 175.1 176 211.8 176 255.1C176 300.2 211.8 336 256 336z"})),trayMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M618.1 97.67c-13.02-4.375-27.45 .1562-35.72 11.16L464 266.7l-118.4-157.8c-8.266-11.03-22.64-15.56-35.72-11.16C296.8 102 288 114.2 288 128v256c0 17.69 14.33 32 32 32s32-14.31 32-32v-160l86.41 115.2c12.06 16.12 39.13 16.12 51.19 0L576 224v160c0 17.69 14.33 32 32 32s32-14.31 32-32v-256C640 114.2 631.2 102 618.1 97.67zM224 96.01H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h64v223.1c0 17.69 14.33 31.99 32 31.99s32-14.3 32-31.99V160h64c17.67 0 32-14.31 32-32S241.7 96.01 224 96.01z"})),copyElementLink:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 260 260","aria-hidden":"true",focusable:"false",role:"img"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"8",d:"M10 10h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0V10m0 40V10M210 10h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0V10m0 40V10M210 210h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0v-40m0 40v-40M10 210h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0v-40m0 40v-40M30 210V50m0 160V50M50 30h160M50 30h160M230 50v160m0-160v160M50 230h160m-160 0h160"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M110 90c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10m0-80c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10M150 90c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10m0-80c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M89.868 130.198c13.36-.03 66.78-.17 80.13-.2m-80.13.2c13.36-.03 66.78-.17 80.13-.2"})),importSVG:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 526 526"},React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"var(--input-bg-color)",strokeWidth:"0",d:"m133.462 71 .33-6.54.97-6.34 1.58-6.13 2.16-5.88 2.69-5.6 3.21-5.27 3.69-4.93 4.13-4.55 4.55-4.13 4.93-3.69 5.27-3.21 5.6-2.69 5.88-2.16 6.13-1.58 6.34-.97 6.54-.33h160v128l.16 3.28.49 3.18.79 3.07 1.07 2.94 1.35 2.8 1.6 2.63 1.84 2.47 2.06 2.27 2.27 2.06 2.47 1.84 2.63 1.6 2.8 1.35 2.94 1.07 3.07.79 3.18.49 3.28.16h128v288l-.33 6.54-.97 6.34-1.58 6.13-2.16 5.88-2.69 5.6-3.21 5.27-3.69 4.93-4.13 4.55-4.55 4.13-4.93 3.69-5.27 3.21-5.6 2.69-5.88 2.16-6.13 1.58-6.34.97-6.54.33h-256l-6.54-.33-6.34-.97-6.13-1.58-5.88-2.16-5.6-2.69-5.27-3.21-4.93-3.69-4.55-4.13-4.13-4.55-3.69-4.93-3.21-5.27-2.69-5.6-2.16-5.88-1.58-6.13-.97-6.34-.33-6.54V343h174.1l-39 39-1.65 1.83-1.43 1.94-1.22 2.05-.99 2.13-.77 2.2-.55 2.25-.33 2.29-.11 2.3.11 2.3.33 2.28.55 2.24.77 2.19.99 2.12 1.22 2.04 1.43 1.93 1.65 1.81 1.83 1.64 1.94 1.42 2.05 1.2 2.13.99 2.2.76 2.25.56 2.29.33 2.3.11 2.3-.1 2.28-.33 2.24-.54 2.19-.77 2.12-.98 2.04-1.21 1.93-1.43 1.81-1.65 80-80 1.65-1.83 1.43-1.94 1.22-2.05.99-2.13.77-2.2.55-2.25.33-2.29.11-2.3-.11-2.3-.33-2.28-.55-2.24-.77-2.19-.99-2.12-1.22-2.04-1.43-1.93-1.65-1.81-80-80-1.83-1.65-1.94-1.43-2.05-1.22-2.13-.99-2.2-.77-2.25-.55-2.29-.33-2.3-.11-2.3.11-2.28.33-2.24.55-2.19.77-2.12.99-2.04 1.22-1.93 1.43-1.81 1.65-1.64 1.83-1.42 1.94-1.2 2.05-.99 2.13-.76 2.2-.56 2.25-.33 2.29-.11 2.3.1 2.3.33 2.28.54 2.24.77 2.19.98 2.12 1.21 2.04 1.43 1.93 1.65 1.81 39 39h-174.1V71"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"18",d:"M133.462 71s0 0 0 0m0 0s0 0 0 0m0 0 .33-6.54m-.33 6.54c.13-2.57.26-5.13.33-6.54m0 0c.36-2.33.72-4.67.97-6.34m-.97 6.34c.35-2.26.69-4.53.97-6.34m0 0c.51-1.99 1.03-3.98 1.58-6.13m-1.58 6.13c.4-1.56.81-3.12 1.58-6.13m0 0c.81-2.22 1.62-4.43 2.16-5.88m-2.16 5.88c.45-1.22.9-2.44 2.16-5.88m0 0c.72-1.51 1.45-3.01 2.69-5.6m-2.69 5.6c.69-1.45 1.39-2.9 2.69-5.6m0 0c.93-1.52 1.86-3.05 3.21-5.27m-3.21 5.27c.97-1.59 1.94-3.18 3.21-5.27m0 0c.86-1.15 1.71-2.29 3.69-4.93m-3.69 4.93c.78-1.04 1.56-2.08 3.69-4.93m0 0c1.53-1.69 3.07-3.38 4.13-4.55m-4.13 4.55c1.54-1.69 3.07-3.38 4.13-4.55m0 0c1.03-.93 2.06-1.87 4.55-4.13m-4.55 4.13c.98-.89 1.97-1.78 4.55-4.13m0 0c1.64-1.23 3.28-2.46 4.93-3.69m-4.93 3.69c1.72-1.29 3.45-2.58 4.93-3.69m0 0c1.11-.68 2.23-1.35 5.27-3.21m-5.27 3.21c1.5-.91 3.01-1.83 5.27-3.21m0 0c1.87-.89 3.73-1.79 5.6-2.69m-5.6 2.69c2.09-1 4.17-2.01 5.6-2.69m0 0c1.72-.64 3.44-1.27 5.88-2.16m-5.88 2.16c1.94-.72 3.89-1.43 5.88-2.16m0 0c2.3-.59 4.6-1.19 6.13-1.58m-6.13 1.58c2.32-.6 4.65-1.2 6.13-1.58m0 0c2.06-.31 4.12-.63 6.34-.97m-6.34.97c2.34-.36 4.69-.72 6.34-.97m0 0c2.05-.1 4.09-.21 6.54-.33m-6.54.33c2.06-.1 4.12-.21 6.54-.33m0 0h160m-160 0h160m0 0v128m0-128v128m0 0s0 0 0 0m0 0s0 0 0 0m0 0 .16 3.28m-.16-3.28c.06 1.16.12 2.32.16 3.28m0 0c.13.82.26 1.64.49 3.18m-.49-3.18c.18 1.13.35 2.26.49 3.18m0 0c.24.95.49 1.91.79 3.07m-.79-3.07c.28 1.1.56 2.2.79 3.07m0 0c.39 1.06.78 2.13 1.07 2.94m-1.07-2.94c.42 1.15.84 2.3 1.07 2.94m0 0c.38.79.76 1.57 1.35 2.8m-1.35-2.8c.4.82.79 1.64 1.35 2.8m0 0c.45.75.91 1.5 1.6 2.63m-1.6-2.63c.4.65.8 1.31 1.6 2.63m0 0c.56.76 1.13 1.52 1.84 2.47m-1.84-2.47c.58.79 1.17 1.57 1.84 2.47m0 0c.75.82 1.5 1.65 2.06 2.27m-2.06-2.27c.75.82 1.5 1.65 2.06 2.27m0 0c.74.66 1.47 1.33 2.27 2.06m-2.27-2.06c.89.81 1.78 1.61 2.27 2.06m0 0c.69.51 1.37 1.02 2.47 1.84m-2.47-1.84c.68.5 1.35 1.01 2.47 1.84m0 0c.81.49 1.62.99 2.63 1.6m-2.63-1.6c.74.45 1.47.9 2.63 1.6m0 0c.72.35 1.43.69 2.8 1.35m-2.8-1.35c.61.3 1.22.59 2.8 1.35m0 0c.85.31 1.69.62 2.94 1.07m-2.94-1.07c1.03.38 2.07.75 2.94 1.07m0 0c.83.22 1.67.43 3.07.79m-3.07-.79 3.07.79m0 0c1.07.16 2.14.33 3.18.49m-3.18-.49c1.2.18 2.39.36 3.18.49m0 0 3.28.16m-3.28-.16c.97.04 1.93.09 3.28.16m0 0h128m-128 0h128m0 0v288m0-288v288m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.1 2.02-.2 4.04-.33 6.54m.33-6.54c-.13 2.52-.26 5.05-.33 6.54m0 0c-.33 2.14-.66 4.29-.97 6.34m.97-6.34c-.32 2.06-.63 4.12-.97 6.34m0 0c-.59 2.28-1.17 4.55-1.58 6.13m1.58-6.13c-.53 2.07-1.07 4.14-1.58 6.13m0 0c-.73 1.99-1.46 3.97-2.16 5.88m2.16-5.88c-.72 1.97-1.44 3.94-2.16 5.88m0 0c-.94 1.97-1.89 3.93-2.69 5.6m2.69-5.6c-.91 1.89-1.82 3.77-2.69 5.6m0 0c-.89 1.46-1.78 2.92-3.21 5.27m3.21-5.27c-.65 1.05-1.29 2.11-3.21 5.27m0 0c-1.13 1.51-2.25 3.01-3.69 4.93m3.69-4.93c-1.29 1.72-2.58 3.44-3.69 4.93m0 0c-1.29 1.42-2.58 2.84-4.13 4.55m4.13-4.55-4.13 4.55m0 0-4.55 4.13m4.55-4.13-4.55 4.13m0 0c-1.2.9-2.41 1.8-4.93 3.69m4.93-3.69-4.93 3.69m0 0c-1.56.95-3.13 1.9-5.27 3.21m5.27-3.21c-1.99 1.21-3.98 2.42-5.27 3.21m0 0c-1.8.86-3.6 1.73-5.6 2.69m5.6-2.69c-1.34.64-2.67 1.28-5.6 2.69m0 0c-2.24.82-4.48 1.65-5.88 2.16m5.88-2.16c-1.38.51-2.77 1.02-5.88 2.16m0 0c-1.46.38-2.93.76-6.13 1.58m6.13-1.58c-1.54.4-3.09.79-6.13 1.58m0 0c-2.12.32-4.24.65-6.34.97m6.34-.97c-2.47.38-4.94.75-6.34.97m0 0c-2.23.11-4.46.22-6.54.33m6.54-.33c-1.97.1-3.93.2-6.54.33m0 0h-256m256 0h-256m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-2.33-.12-4.66-.24-6.54-.33m6.54.33c-1.33-.07-2.65-.13-6.54-.33m0 0c-1.88-.29-3.77-.58-6.34-.97m6.34.97c-2.07-.32-4.14-.63-6.34-.97m0 0c-1.52-.39-3.04-.79-6.13-1.58m6.13 1.58c-2.02-.52-4.04-1.04-6.13-1.58m0 0c-1.6-.59-3.19-1.17-5.88-2.16m5.88 2.16c-1.9-.7-3.8-1.39-5.88-2.16m0 0c-1.41-.68-2.82-1.36-5.6-2.69m5.6 2.69c-1.6-.77-3.2-1.54-5.6-2.69m0 0c-1.4-.86-2.81-1.71-5.27-3.21m5.27 3.21c-2.08-1.27-4.17-2.54-5.27-3.21m0 0c-1.72-1.29-3.43-2.57-4.93-3.69m4.93 3.69c-1.79-1.34-3.57-2.67-4.93-3.69m0 0c-1.18-1.07-2.36-2.15-4.55-4.13m4.55 4.13c-1.64-1.49-3.27-2.97-4.55-4.13m0 0c-1.07-1.19-2.15-2.37-4.13-4.55m4.13 4.55c-1.46-1.61-2.93-3.23-4.13-4.55m0 0-3.69-4.93m3.69 4.93c-.88-1.17-1.76-2.35-3.69-4.93m0 0c-.83-1.37-1.67-2.75-3.21-5.27m3.21 5.27c-1.15-1.89-2.3-3.79-3.21-5.27m0 0c-1.03-2.14-2.05-4.27-2.69-5.6m2.69 5.6c-.68-1.43-1.37-2.85-2.69-5.6m0 0c-.8-2.17-1.59-4.34-2.16-5.88m2.16 5.88c-.82-2.22-1.63-4.44-2.16-5.88m0 0c-.47-1.82-.94-3.64-1.58-6.13m1.58 6.13c-.37-1.44-.74-2.88-1.58-6.13m0 0-.97-6.34m.97 6.34c-.3-1.98-.61-3.97-.97-6.34m0 0c-.13-2.54-.26-5.07-.33-6.54m.33 6.54-.33-6.54m0 0V343m0 112V343m0 0h174.1m-174.1 0h174.1m0 0-39 39m39-39-39 39m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.65.72-1.3 1.44-1.65 1.83m1.65-1.83c-.34.38-.68.76-1.65 1.83m0 0c-.35.47-.7.95-1.43 1.94m1.43-1.94c-.38.5-.75 1.01-1.43 1.94m0 0c-.32.54-.64 1.08-1.22 2.05m1.22-2.05c-.38.64-.76 1.28-1.22 2.05m0 0c-.2.45-.41.89-.99 2.13m.99-2.13c-.38.82-.76 1.64-.99 2.13m0 0c-.18.53-.36 1.05-.77 2.2m.77-2.2c-.3.88-.61 1.75-.77 2.2m0 0c-.15.61-.3 1.22-.55 2.25m.55-2.25c-.16.68-.33 1.35-.55 2.25m0 0-.33 2.29m.33-2.29c-.13.9-.26 1.79-.33 2.29m0 0-.11 2.3m.11-2.3c-.03.59-.06 1.19-.11 2.3m0 0c.03.54.05 1.08.11 2.3m-.11-2.3c.03.72.07 1.44.11 2.3m0 0c.1.71.21 1.43.33 2.28m-.33-2.28c.1.71.21 1.42.33 2.28m0 0c.22.88.44 1.77.55 2.24m-.55-2.24c.16.66.33 1.32.55 2.24m0 0c.26.72.51 1.45.77 2.19m-.77-2.19c.25.69.49 1.39.77 2.19m0 0c.33.7.65 1.4.99 2.12m-.99-2.12c.37.79.74 1.57.99 2.12m0 0c.38.63.75 1.25 1.22 2.04m-1.22-2.04c.4.67.8 1.35 1.22 2.04m0 0c.38.52.77 1.05 1.43 1.93m-1.43-1.93c.38.52.77 1.05 1.43 1.93m0 0c.46.5.91 1 1.65 1.81m-1.65-1.81c.35.39.7.77 1.65 1.81m0 0c.37.33.75.67 1.83 1.64m-1.83-1.64c.43.39.87.78 1.83 1.64m0 0c.62.45 1.25.91 1.94 1.42m-1.94-1.42c.45.32.9.65 1.94 1.42m0 0c.53.3 1.05.61 2.05 1.2m-2.05-1.2c.43.25.86.5 2.05 1.2m0 0c.78.36 1.56.72 2.13.99m-2.13-.99c.54.25 1.08.5 2.13.99m0 0c.67.23 1.33.46 2.2.76m-2.2-.76c.51.17 1.03.35 2.2.76m0 0c.87.22 1.73.43 2.25.56m-2.25-.56c.79.2 1.57.39 2.25.56m0 0 2.29.33m-2.29-.33c.58.08 1.16.16 2.29.33m0 0c.91.04 1.82.09 2.3.11m-2.3-.11c.89.04 1.79.09 2.3.11m0 0c.48-.02.96-.04 2.3-.1m-2.3.1c.73-.03 1.47-.06 2.3-.1m0 0c.61-.09 1.22-.18 2.28-.33m-2.28.33c.58-.09 1.17-.17 2.28-.33m0 0c.79-.19 1.59-.38 2.24-.54m-2.24.54c.88-.21 1.75-.42 2.24-.54m0 0c.7-.25 1.4-.49 2.19-.77m-2.19.77c.5-.18 1.01-.35 2.19-.77m0 0c.56-.26 1.13-.52 2.12-.98m-2.12.98c.69-.31 1.37-.63 2.12-.98m0 0c.63-.37 1.25-.74 2.04-1.21m-2.04 1.21c.8-.48 1.6-.95 2.04-1.21m0 0c.67-.5 1.34-.99 1.93-1.43m-1.93 1.43c.52-.39 1.05-.78 1.93-1.43m0 0c.43-.39.87-.79 1.81-1.65m-1.81 1.65c.42-.38.83-.76 1.81-1.65m0 0 80-80m-80 80 80-80m0 0s0 0 0 0m0 0s0 0 0 0m0 0c.33-.37.67-.74 1.65-1.83m-1.65 1.83c.63-.7 1.27-1.4 1.65-1.83m0 0c.3-.4.59-.79 1.43-1.94m-1.43 1.94c.42-.57.84-1.13 1.43-1.94m0 0c.4-.68.8-1.35 1.22-2.05m-1.22 2.05c.47-.79.93-1.57 1.22-2.05m0 0c.28-.62.57-1.23.99-2.13m-.99 2.13c.3-.65.6-1.31.99-2.13m0 0c.26-.74.51-1.47.77-2.2m-.77 2.2.77-2.2m0 0 .55-2.25m-.55 2.25c.2-.84.41-1.68.55-2.25m0 0 .33-2.29m-.33 2.29c.11-.75.21-1.49.33-2.29m0 0c.03-.54.05-1.08.11-2.3m-.11 2.3c.04-.91.09-1.81.11-2.3m0 0c-.03-.7-.07-1.41-.11-2.3m.11 2.3c-.04-.75-.07-1.49-.11-2.3m0 0c-.08-.52-.15-1.04-.33-2.28m.33 2.28c-.09-.63-.18-1.26-.33-2.28m0 0-.55-2.24m.55 2.24c-.19-.79-.39-1.58-.55-2.24m0 0-.77-2.19m.77 2.19c-.25-.72-.51-1.44-.77-2.19m0 0c-.23-.5-.46-.99-.99-2.12m.99 2.12c-.39-.83-.78-1.66-.99-2.12m0 0c-.42-.7-.83-1.39-1.22-2.04m1.22 2.04c-.32-.53-.64-1.06-1.22-2.04m0 0c-.47-.64-.95-1.28-1.43-1.93m1.43 1.93c-.47-.63-.94-1.27-1.43-1.93m0 0c-.44-.49-.89-.98-1.65-1.81m1.65 1.81c-.64-.7-1.28-1.4-1.65-1.81m0 0-80-80m80 80-80-80m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.72-.65-1.44-1.3-1.83-1.65m1.83 1.65c-.68-.62-1.37-1.23-1.83-1.65m0 0c-.51-.38-1.02-.75-1.94-1.43m1.94 1.43c-.58-.43-1.17-.87-1.94-1.43m0 0c-.73-.43-1.45-.86-2.05-1.22m2.05 1.22c-.77-.45-1.53-.9-2.05-1.22m0 0c-.46-.21-.93-.43-2.13-.99m2.13.99-2.13-.99m0 0c-.83-.29-1.65-.57-2.2-.77m2.2.77c-.56-.19-1.12-.39-2.2-.77m0 0c-.65-.16-1.29-.31-2.25-.55m2.25.55c-.57-.14-1.13-.27-2.25-.55m0 0c-.74-.11-1.48-.21-2.29-.33m2.29.33c-.51-.07-1.02-.15-2.29-.33m0 0c-.77-.04-1.54-.07-2.3-.11m2.3.11c-.88-.04-1.76-.08-2.3-.11m0 0c-.49.02-.98.05-2.3.11m2.3-.11c-.88.04-1.77.09-2.3.11m0 0c-.62.09-1.23.18-2.28.33m2.28-.33c-.6.09-1.2.17-2.28.33m0 0c-.45.11-.91.22-2.24.55m2.24-.55c-.79.2-1.58.39-2.24.55m0 0c-.56.2-1.12.4-2.19.77m2.19-.77c-.51.18-1.01.36-2.19.77m0 0c-.85.4-1.7.8-2.12.99m2.12-.99c-.51.24-1.02.48-2.12.99m0 0c-.6.36-1.2.71-2.04 1.22m2.04-1.22c-.46.27-.91.55-2.04 1.22m0 0c-.49.36-.99.73-1.93 1.43m1.93-1.43-1.93 1.43m0 0c-.42.38-.85.77-1.81 1.65m1.81-1.65c-.69.63-1.39 1.27-1.81 1.65m0 0-1.64 1.83m1.64-1.83c-.54.6-1.08 1.21-1.64 1.83m0 0c-.53.73-1.07 1.47-1.42 1.94m1.42-1.94c-.36.5-.73 1-1.42 1.94m0 0c-.35.61-.7 1.21-1.2 2.05m1.2-2.05c-.33.58-.67 1.15-1.2 2.05m0 0c-.26.57-.53 1.15-.99 2.13m.99-2.13c-.39.85-.78 1.69-.99 2.13m0 0c-.24.7-.48 1.4-.76 2.2m.76-2.2c-.17.51-.35 1.01-.76 2.2m0 0c-.17.68-.33 1.35-.56 2.25m.56-2.25c-.2.79-.39 1.57-.56 2.25m0 0c-.09.65-.18 1.29-.33 2.29m.33-2.29c-.06.48-.13.95-.33 2.29m0 0c-.03.71-.07 1.43-.11 2.3m.11-2.3-.11 2.3m0 0c.04.86.08 1.73.1 2.3m-.1-2.3c.03.8.07 1.6.1 2.3m0 0c.13.88.25 1.76.33 2.28m-.33-2.28c.11.73.21 1.47.33 2.28m0 0c.18.74.36 1.49.54 2.24m-.54-2.24c.15.64.31 1.28.54 2.24m0 0c.2.57.4 1.15.77 2.19m-.77-2.19c.21.58.41 1.17.77 2.19m0 0c.23.5.46 1.01.98 2.12m-.98-2.12c.35.76.71 1.53.98 2.12m0 0c.38.64.76 1.29 1.21 2.04m-1.21-2.04 1.21 2.04m0 0c.45.6.89 1.21 1.43 1.93m-1.43-1.93c.3.4.6.81 1.43 1.93m0 0 1.65 1.81m-1.65-1.81c.47.52.94 1.03 1.65 1.81m0 0 39 39m-39-39 39 39m0 0h-174.1m174.1 0h-174.1m0 0V71m0 223.9V71m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeLinecap:"round",strokeWidth:"18",d:"M135 343.068H31m104 0H31m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.74-.04-1.48-.07-2.46-.12m2.46.12c-.77-.04-1.54-.08-2.46-.12m0 0c-.87-.14-1.75-.27-2.39-.37m2.39.37c-.55-.09-1.1-.17-2.39-.37m0 0c-.87-.22-1.74-.44-2.3-.59m2.3.59c-.62-.15-1.24-.31-2.3-.59m0 0c-.82-.29-1.64-.59-2.21-.8m2.21.8c-.52-.18-1.03-.37-2.21-.8m0 0c-.55-.26-1.09-.52-2.1-1.01m2.1 1.01c-.64-.31-1.28-.61-2.1-1.01m0 0c-.74-.45-1.48-.89-1.98-1.2m1.98 1.2c-.42-.25-.84-.51-1.98-1.2m0 0c-.7-.52-1.41-1.05-1.84-1.38m1.84 1.38c-.37-.28-.75-.56-1.84-1.38m0 0c-.4-.36-.8-.71-1.71-1.54m1.71 1.54c-.35-.31-.7-.63-1.71-1.54m0 0c-.43-.47-.85-.95-1.54-1.71m1.54 1.71c-.61-.68-1.23-1.36-1.54-1.71m0 0c-.29-.38-.58-.76-1.38-1.84m1.38 1.84c-.54-.71-1.08-1.43-1.38-1.84m0 0c-.46-.76-.92-1.52-1.2-1.98m1.2 1.98c-.45-.74-.89-1.47-1.2-1.98m0 0c-.37-.77-.74-1.53-1.01-2.1m1.01 2.1c-.3-.62-.6-1.25-1.01-2.1m0 0c-.2-.54-.39-1.07-.8-2.21m.8 2.21c-.2-.54-.4-1.09-.8-2.21m0 0c-.22-.85-.44-1.71-.59-2.3m.59 2.3c-.12-.46-.24-.92-.59-2.3m0 0c-.11-.72-.22-1.43-.37-2.39m.37 2.39c-.08-.48-.15-.96-.37-2.39m0 0c-.03-.74-.07-1.48-.12-2.46m.12 2.46c-.04-.79-.08-1.59-.12-2.46m0 0c.04-.74.07-1.49.12-2.46m-.12 2.46.12-2.46m0 0c.08-.53.16-1.07.37-2.39m-.37 2.39c.09-.56.17-1.12.37-2.39m0 0c.17-.69.35-1.38.59-2.3m-.59 2.3c.15-.61.31-1.23.59-2.3m0 0c.17-.48.34-.96.8-2.21m-.8 2.21c.2-.55.4-1.1.8-2.21m0 0c.25-.52.49-1.03 1.01-2.1m-1.01 2.1c.36-.76.73-1.52 1.01-2.1m0 0c.43-.72.87-1.44 1.2-1.98m-1.2 1.98c.27-.45.55-.91 1.2-1.98m0 0c.54-.73 1.09-1.47 1.38-1.84m-1.38 1.84c.4-.54.81-1.09 1.38-1.84m0 0c.53-.59 1.07-1.18 1.54-1.71m-1.54 1.71c.59-.66 1.19-1.32 1.54-1.71m0 0c.54-.49 1.08-.97 1.71-1.54m-1.71 1.54c.48-.43.95-.86 1.71-1.54m0 0c.46-.35.92-.7 1.84-1.38m-1.84 1.38c.5-.38 1.01-.76 1.84-1.38m0 0c.52-.32 1.04-.63 1.98-1.2m-1.98 1.2c.72-.44 1.44-.88 1.98-1.2m0 0 2.1-1.01m-2.1 1.01c.84-.4 1.67-.81 2.1-1.01m0 0c.45-.17.91-.33 2.21-.8m-2.21.8c.56-.21 1.12-.41 2.21-.8m0 0c.89-.23 1.79-.46 2.3-.59m-2.3.59c.48-.13.95-.25 2.3-.59m0 0c.51-.08 1.02-.16 2.39-.37m-2.39.37 2.39-.37m0 0c.52-.02 1.03-.05 2.46-.12m-2.46.12c.74-.03 1.48-.07 2.46-.12m0 0 103.34-.27m-103.34.27c30.04-.08 60.08-.16 103.34-.27"}),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"var(--input-bg-color)",strokeWidth:"0",d:"M517.462 135h-128V7l128 128"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"18",d:"M517.462 135h-128m128 0h-128m0 0V7m0 128V7m0 0 128 128m-128-128 128 128m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"}))),obsidian:React__namespace.createElement("svg",{focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},React__namespace.createElement("defs",null,React__namespace.createElement("radialGradient",{id:"b",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-48 -185 123 -32 179 429.7)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".4"}),React__namespace.createElement("stop",{offset:"1",stopOpacity:".1"})),React__namespace.createElement("radialGradient",{id:"c",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(41 -310 229 30 341.6 351.3)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".6"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".1"})),React__namespace.createElement("radialGradient",{id:"d",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(57 -261 178 39 190.5 296.3)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".8"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".4"})),React__namespace.createElement("radialGradient",{id:"e",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-79 -133 153 -90 321.4 464.2)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".3"}),React__namespace.createElement("stop",{offset:"1",stopOpacity:".3"})),React__namespace.createElement("radialGradient",{id:"f",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-29 136 -92 -20 300.7 149.9)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:"0"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".2"})),React__namespace.createElement("radialGradient",{id:"g",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(72 73 -155 153 137.8 225.2)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".2"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".4"})),React__namespace.createElement("radialGradient",{id:"h",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(20 118 -251 43 215.1 273.7)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".1"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".3"})),React__namespace.createElement("radialGradient",{id:"i",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-162 -85 268 -510 374.4 371.7)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".2"}),React__namespace.createElement("stop",{offset:".5",stopColor:"#fff",stopOpacity:".2"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".3"})),React__namespace.createElement("filter",{id:"a",x:"80.1",y:"37",width:"351.1",height:"443.2",filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},React__namespace.createElement("feFlood",{floodOpacity:"0",result:"BackgroundImageFix"}),React__namespace.createElement("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),React__namespace.createElement("feGaussianBlur",{stdDeviation:"6.5",result:"effect1_foregroundBlur_744_9191"}))),React__namespace.createElement("g",{filter:"url(#a)"},React__namespace.createElement("path",{d:"M359.2 437.5c-2.6 19-21.3 33.9-40 28.7-26.5-7.2-57.2-18.6-84.8-20.7l-42.4-3.2a28 28 0 0 1-18-8.3l-73-74.8a27.7 27.7 0 0 1-5.4-30.7s45-98.6 46.8-103.7c1.6-5.1 7.8-49.9 11.4-73.9a28 28 0 0 1 9-16.5L249 57.2a28 28 0 0 1 40.6 3.4l72.6 91.6a29.5 29.5 0 0 1 6.2 18.3c0 17.3 1.5 53 11.2 76a301.3 301.3 0 0 0 35.6 58.2 14 14 0 0 1 1 15.6c-6.3 10.7-18.9 31.3-36.6 57.6a142.2 142.2 0 0 0-20.5 59.6Z",fill:"#000",fillOpacity:".3"})),React__namespace.createElement("path",{id:"arrow",d:"M359.9 434.3c-2.6 19.1-21.3 34-40 28.9-26.4-7.3-57-18.7-84.7-20.8l-42.3-3.2a27.9 27.9 0 0 1-18-8.4l-73-75a27.9 27.9 0 0 1-5.4-31s45.1-99 46.8-104.2c1.7-5.1 7.8-50 11.4-74.2a28 28 0 0 1 9-16.6l86.2-77.5a28 28 0 0 1 40.6 3.5l72.5 92a29.7 29.7 0 0 1 6.2 18.3c0 17.4 1.5 53.2 11.1 76.3a303 303 0 0 0 35.6 58.5 14 14 0 0 1 1.1 15.7c-6.4 10.8-18.9 31.4-36.7 57.9a143.3 143.3 0 0 0-20.4 59.8Z",fill:"#6c31e3"}),React__namespace.createElement("path",{d:"M182.7 436.4c33.9-68.7 33-118 18.5-153-13.2-32.4-37.9-52.8-57.3-65.5-.4 1.9-1 3.7-1.8 5.4L96.5 324.8a27.9 27.9 0 0 0 5.5 31l72.9 75c2.3 2.3 5 4.2 7.8 5.6Z",fill:"url(#b)"}),React__namespace.createElement("path",{d:"M274.9 297c9.1.9 18 2.9 26.8 6.1 27.8 10.4 53.1 33.8 74 78.9 1.5-2.6 3-5.1 4.6-7.5a1222 1222 0 0 0 36.7-57.9 14 14 0 0 0-1-15.7 303 303 0 0 1-35.7-58.5c-9.6-23-11-58.9-11.1-76.3 0-6.6-2.1-13.1-6.2-18.3l-72.5-92-1.2-1.5c5.3 17.5 5 31.5 1.7 44.2-3 11.8-8.6 22.5-14.5 33.8-2 3.8-4 7.7-5.9 11.7a140 140 0 0 0-15.8 58c-1 24.2 3.9 54.5 20 95Z",fill:"url(#c)"}),React__namespace.createElement("path",{d:"M274.8 297c-16.1-40.5-21-70.8-20-95 1-24 8-42 15.8-58l6-11.7c5.8-11.3 11.3-22 14.4-33.8a78.5 78.5 0 0 0-1.7-44.2 28 28 0 0 0-39.4-2l-86.2 77.5a28 28 0 0 0-9 16.6L144.2 216c0 .7-.2 1.3-.3 2 19.4 12.6 44 33 57.3 65.3 2.6 6.4 4.8 13.1 6.4 20.4a200 200 0 0 1 67.2-6.8Z",fill:"url(#d)"}),React__namespace.createElement("path",{d:"M320 463.2c18.6 5.1 37.3-9.8 39.9-29a153 153 0 0 1 15.9-52.2c-21-45.1-46.3-68.5-74-78.9-29.5-11-61.6-7.3-94.2.6 7.3 33.1 3 76.4-24.8 132.7 3.1 1.6 6.6 2.5 10.1 2.8l43.9 3.3c23.8 1.7 59.3 14 83.2 20.7Z",fill:"url(#e)"}),React__namespace.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M255 200.5c-1.1 24 1.9 51.4 18 91.8l-5-.5c-14.5-42.1-17.7-63.7-16.6-88 1-24.3 8.9-43 16.7-59 2-4 6.6-11.5 8.6-15.3 5.8-11.3 9.7-17.2 13-27.5 4.8-14.4 3.8-21.2 3.2-28 3.7 24.5-10.4 45.8-21 67.5a145 145 0 0 0-17 59Z",fill:"url(#f)"}),React__namespace.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M206 285.1c2 4.4 3.7 8 4.9 13.5l-4.3 1c-1.7-6.4-3-11-5.5-16.5-14.6-34.3-38-52-57-65 23 12.4 46.7 31.9 61.9 67Z",fill:"url(#g)"}),React__namespace.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M211.1 303c8 37.5-1 85.2-27.5 131.6 22.2-46 33-90.1 24-131l3.5-.7Z",fill:"url(#h)"}),React__namespace.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M302.7 299.5c43.5 16.3 60.3 52 72.8 81.9-15.5-31.2-37-65.7-74.4-78.5-28.4-9.8-52.4-8.6-93.5.7l-.9-4c43.6-10 66.4-11.2 96 0Z",fill:"url(#i)"})),"add-file":React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"}),React__namespace.createElement("polyline",{points:"14 2 14 8 20 8"}),React__namespace.createElement("line",{x1:"12",x2:"12",y1:"18",y2:"12"}),React__namespace.createElement("line",{x1:"9",x2:"15",y1:"15",y2:"15"})),ExcalidrawSword:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 537.9 1150.7"},React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#FFF6F0",d:"m281 988 113-124-77-569H213l-37 574 106 120-4 2"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M279 989c37-42 82-84 116-122M279 990c33-33 59-66 113-123m0-1c-22-191-51-385-78-570m78 570c-31-196-58-391-78-570m-4-1c-30-1-56 1-97-1m102 3c-41 1-81 0-106-3m1 3c-11 185-20 369-30 574m30-574c-7 165-16 330-32 575m2-3c38 47 73 81 97 121m-98-116c39 41 76 86 100 114m0 1s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("path",{fill:"none",stroke:"#af7e00",strokeLinecap:"round",strokeWidth:"4",d:"M279 614v264m-3-259c2 43 8 211 8 254"}),React__namespace.createElement("g",{fill:"none",fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{stroke:"#646261",strokeWidth:".5",d:"M209 300c2-1 6-5 9-3m-8 3 7-5m-4 7c-1-1 2-6 5-8m-6 9 5-9m-9 16c3-3 6-11 12-18m-11 14c5-2 10-7 12-10m-13 17c5-7 9-15 15-21m-13 18c4-7 8-10 13-15m-15 17c7-2 14-11 18-20m-19 20c7-3 7-8 21-15m-18 17c6-8 11-15 13-15m-12 17c6-7 11-16 14-23m-19 24 28-22m-25 25 25-25m-24 25c7-7 13-14 23-28m-21 30 18-27m-20 29c4-9 17-13 25-30m-28 30c10-4 17-12 31-30m-28 34c11-9 20-20 26-34m-26 34c10-11 15-20 30-32m-32 40c5-12 16-20 31-40m-31 36c9-10 20-20 34-38m-34 38c11-12 23-22 35-37m-33 39c10-12 24-25 33-40m-34 44c10-12 19-25 42-43m-43 46 41-44m-36 42c9-13 31-32 32-44m-35 46c12-11 22-23 38-45m-43 48c13-14 27-20 47-52m-44 52c16-14 33-35 47-50m-43 51c8-12 25-25 38-50m-40 54 43-56m-43 56c9-9 25-28 46-58m-51 61c13-15 30-30 56-57m-51 58c17-20 35-40 46-57m-47 61c14-16 25-32 48-61m-48 63c15-18 27-27 57-63m-62 64c18-20 33-37 59-63m-51 61c13-19 34-37 48-65m-53 70c16-19 31-34 58-68m-61 69c30-25 48-55 63-67m-63 66c20-17 38-40 66-65m-58 67c23-23 42-48 53-67m-55 71c18-27 42-50 59-74m-60 78c12-21 33-35 64-75m-66 74c20-26 46-53 67-77m-63 80c24-27 43-54 66-77m-70 75c30-31 55-63 68-76m-74 80c15-17 32-32 78-85m-75 86c23-25 48-49 74-83m-66 88c18-21 36-50 66-90m-69 88c21-29 43-55 70-87m-77 93c36-34 59-66 80-93m-79 89c27-25 49-54 81-88m-73 89c23-32 48-61 71-89m-76 94 79-96m-77 96c27-32 58-65 84-90m-89 92c34-38 69-78 86-94m-81 98 84-96m-86 97c32-42 66-82 83-100m-82 100c29-39 62-74 87-98m-92 98c27-24 50-52 93-100m-86 105c34-44 72-83 86-106m-87 105c34-36 63-73 88-104m-91 105c26-24 50-47 94-104m-94 106c27-31 57-67 95-107m-96 109c38-39 71-78 99-112m-97 113 96-110M200 414c35-34 57-67 102-115m-98 110c38-42 77-83 102-112m-96 116c17-27 44-59 96-117m-99 116c23-25 45-55 99-117M205 415c35-45 77-87 110-122M203 418c43-43 81-91 108-122M208 420c44-45 84-97 100-128M205 419l108-123M201 421c40-44 83-86 114-127M203 425c33-41 70-82 111-127M205 425c24-29 50-53 107-131M206 428c38-41 72-83 108-132M205 430l109-132M204 429c30-38 65-73 112-125M204 435c31-35 63-72 111-130M205 433c40-46 76-96 112-132M205 441c20-34 43-60 112-135M200 439c33-34 59-66 116-133M202 436c29-30 56-63 114-129M206 440c27-36 57-70 111-133M201 442c26-31 58-61 120-127M202 445c20-30 46-54 117-131M201 450c41-51 79-93 113-138M204 444c34-40 71-82 113-133M203 450c33-42 68-79 115-135M200 451l120-132M204 449c33-26 65-68 113-132M205 451l115-133M200 458l117-138M201 458l119-135M202 459c35-38 69-74 119-139M205 460c31-42 65-82 113-135M199 467c29-29 52-60 119-135M201 462c32-40 70-80 118-135M203 462c47-52 93-98 116-135M205 466c39-47 76-90 113-139M196 472c35-33 62-58 123-137M199 470c31-36 63-68 120-136M205 469c26-33 56-67 114-132M204 473c42-44 80-91 115-137M197 477c45-52 96-107 121-137M199 477c31-42 67-79 122-137M199 481c44-51 78-97 120-145M200 479c39-46 78-94 123-140M196 485c37-47 76-83 124-144M201 483c31-32 59-68 120-138M204 486c41-56 89-104 115-145M204 485l118-142M196 487c35-29 63-70 124-136M201 491c35-48 73-91 123-143M201 494c36-40 66-71 121-147M204 493c26-38 55-69 120-143M196 498c37-47 79-94 125-147M200 495c38-39 76-82 123-139M200 496c48-48 89-100 127-139M200 499c28-32 55-62 125-146M199 500c26-32 62-68 125-137M198 502c42-47 81-95 125-143M204 506c32-42 60-73 122-145M203 504c37-42 75-90 121-142M202 512c37-51 83-95 121-150M197 507c49-52 92-102 127-140M203 515c45-54 89-106 119-153M203 512c37-45 78-93 121-148M196 518c47-61 104-120 127-145M197 514c32-36 67-72 131-145M198 515c38-40 71-78 127-145M198 518c46-52 89-105 127-149M193 521c47-53 96-111 133-149M199 522c42-47 86-94 127-147M203 523c33-45 71-89 124-149M201 524c44-52 88-104 124-149M199 532c38-55 81-97 127-154M199 527c49-60 104-115 127-148M201 533c28-43 61-84 126-150M199 529c50-53 95-113 128-147M199 533c31-34 63-69 132-148M197 533c43-46 86-97 132-145M195 541l135-157M200 536c42-53 86-105 127-148M198 543c33-41 65-79 128-152M196 540c38-46 75-89 131-150M199 542c40-48 85-93 128-148M198 544c28-36 57-69 130-153M194 549c56-57 105-117 137-150M197 546c37-46 79-89 132-148M197 550c39-44 81-94 131-155M201 552c38-51 80-99 130-155M197 554c30-39 62-72 134-153M195 553c37-40 73-79 136-152M199 555c50-61 102-120 131-150M199 558c43-53 84-102 131-155M196 563c34-40 68-82 132-153M193 561c52-54 99-110 139-154M198 564c29-31 56-66 136-157M198 565c39-45 77-86 131-156M192 566c36-40 73-82 143-153M195 568c28-35 57-71 135-154M195 569c53-55 107-115 138-154M198 569l133-157M196 576c32-34 58-75 133-159M193 572c26-33 57-64 141-154M195 579c54-57 103-117 134-158M198 575c36-40 70-82 133-157M190 579c64-65 117-122 141-155M195 582c39-47 82-94 138-158M196 581c28-38 64-72 138-154M198 583l134-159M191 588c52-61 101-114 145-158M194 588c51-64 102-124 141-160M195 586c41-45 85-97 138-154M197 590c41-47 82-95 135-162M195 594c30-42 63-76 139-162M193 594c32-34 59-68 140-161M195 596c42-50 76-93 141-163M197 594c32-37 65-72 136-160M192 603l142-162M192 598c30-31 59-64 144-157M197 604c43-59 95-112 138-164M195 603c54-64 106-127 139-164M194 605l144-163M192 608c39-42 79-87 146-164M199 612c31-46 66-86 139-170M197 608c38-47 79-93 141-163M190 611c62-65 121-129 149-163M193 614c55-69 111-132 144-164M197 615c33-31 64-68 136-162M196 615c49-57 101-120 141-165M195 620c52-65 115-133 142-162M190 621c35-37 66-73 147-167M195 625c35-47 75-89 141-169M194 621c47-50 89-100 143-166M189 623c58-58 112-122 149-163M192 624l147-165M196 631c36-45 73-91 143-173M195 629c33-46 70-89 142-168M193 633c57-61 112-124 146-170M190 631c55-60 109-121 148-167M192 633c34-34 67-76 149-166M193 633c44-46 82-94 147-167M194 638c30-35 61-66 144-168M191 638c55-63 113-125 148-169M193 643c50-63 108-130 148-172M194 643c38-48 76-95 145-173M193 646c55-67 111-135 151-170M189 646c35-43 71-82 152-170M196 649c46-56 91-113 141-171M193 648c36-41 71-86 147-172M193 651c47-56 96-116 146-171M191 654c60-70 123-141 150-174M196 656c40-56 85-105 143-172M194 653c34-42 71-88 146-171M186 659c44-45 78-87 153-171M188 659c54-62 108-119 153-173M195 661c32-40 64-83 147-173M193 661c37-39 70-81 147-176M192 663c59-67 124-133 151-173M190 666c41-50 83-99 152-174M193 666c61-63 115-131 149-173M193 666c59-70 120-136 150-173M189 672c34-38 62-73 157-177M189 673l155-176M190 676c45-55 91-112 157-177M192 674l150-176M188 675c38-33 71-73 156-172M188 678c55-63 108-120 155-176M191 679c51-56 107-118 151-174M191 680c50-56 102-118 152-179M186 682c45-48 92-97 158-173M189 684c34-35 64-74 155-176M187 690c51-51 87-102 161-185M191 687c48-60 95-114 154-180M185 688c32-34 68-69 157-178M188 692l158-181M190 692c43-47 83-101 152-178M191 696l154-184M188 700c47-56 93-114 161-185M188 698c63-70 128-142 158-181M189 700c40-49 79-94 154-179M190 700c45-47 85-98 157-183M188 703c35-35 67-72 157-181M186 703c44-53 91-106 161-180M192 708c61-69 116-137 155-186M188 708c51-54 96-108 158-184M186 709l161-179M185 710c52-54 101-111 163-182M189 712c54-64 111-131 161-185M191 713l158-183M187 720c43-50 83-97 160-183M187 718l161-184M191 719c49-54 99-112 156-184M189 719c56-63 114-131 159-186M183 723c52-52 97-102 169-186M184 725c49-54 96-104 165-187M186 729c62-67 115-138 160-191M189 728c46-57 95-113 160-189M185 728c57-64 116-127 163-183M185 732c33-43 69-80 165-188M187 730c33-38 75-85 159-188M190 732c48-53 96-112 158-188M184 736c57-52 102-110 169-187M186 737c34-43 72-87 163-187M191 742l157-194M189 740c34-44 67-82 162-189M187 746c51-73 111-134 163-188M185 744c62-77 129-150 166-189M187 744c42-47 87-98 162-188M189 747c58-66 115-134 160-191M186 748c61-74 127-141 163-185M186 748c44-47 92-98 166-190M188 750c38-47 79-98 166-193M188 754c48-58 97-118 164-194M185 756c44-55 90-105 168-189M184 755l167-189M187 759c59-63 114-134 166-193M187 758l164-194M186 762c59-64 119-133 169-193M185 761c54-65 111-127 170-191M186 762c40-41 77-85 168-195M187 766c63-71 127-143 165-197M181 767c57-65 116-128 176-192M183 770l171-192M185 773c70-78 131-153 169-195M186 773c41-53 82-101 169-196M182 778l176-200M181 775l174-193M185 777c66-76 126-148 168-198M185 778c41-50 86-101 171-195M180 785c66-74 131-151 177-198M184 783c46-55 96-110 172-195M184 784c59-61 114-126 174-196M185 784c62-68 122-136 171-197M185 789c43-49 90-97 174-200M182 788l174-197M187 792c39-50 80-100 168-198M184 793l172-202M180 797c41-49 86-98 174-203M183 794c38-45 77-91 173-198M184 801c48-61 103-123 171-205M184 798c44-45 85-94 173-202M179 805c45-53 87-102 179-200M182 802c48-56 94-111 176-198M186 805c55-71 115-146 170-200M184 803l174-202M183 807c55-64 111-130 178-200M180 809c64-76 132-150 179-200M185 810c35-47 74-91 171-200M183 811l174-202M180 812c43-41 87-91 177-201M180 816c41-52 83-100 178-205M187 820c35-49 74-96 175-206M184 818c63-77 133-157 176-205M182 818c43-57 95-109 178-201M180 821c41-48 84-94 180-203M182 822c44-46 83-91 175-205M182 824c54-56 105-115 179-206M181 831c44-54 90-101 181-206M178 828c41-48 83-96 183-204M180 828c74-77 141-155 182-205M184 830c60-68 118-135 178-206M180 835c56-66 117-132 183-207M180 834c66-73 127-143 180-204M183 839c41-51 86-99 181-208M183 838c50-61 103-121 178-208M178 843c63-70 120-139 184-207M179 841l184-209M184 845c71-85 135-166 177-214M182 842c73-79 141-162 179-207M181 849c46-58 95-112 179-211M180 849l182-208M181 849c69-77 140-159 179-208M183 848c63-73 131-150 179-210M181 857c46-64 96-123 182-213M177 854c73-84 146-165 185-211M181 859c59-75 121-141 182-213M182 856c74-85 144-170 183-212M176 858c70-78 139-156 188-208M179 862c70-80 137-157 184-213M182 861c35-38 72-84 181-214M180 864c63-77 127-153 184-215M176 865c62-70 125-142 190-208M179 867l186-211M179 871c67-76 129-151 187-215M180 871c67-77 134-156 184-216M178 871c47-55 95-110 190-214M180 872c57-67 115-135 187-211M184 875c40-44 78-91 179-212M183 874l183-213M183 877c62-72 126-144 182-214M181 875l184-209M187 874c69-76 133-157 179-212M186 876c55-69 112-134 181-211M186 874c60-70 126-136 182-205M185 877c41-45 76-88 183-207M190 883l174-212M189 881c52-62 108-128 176-212M185 878c54-62 113-129 183-201M188 880c55-67 112-131 178-205M192 883c56-70 124-145 176-205M191 882c51-58 97-115 176-208M187 886c50-56 93-108 183-203M189 882l181-201M190 885c66-65 126-134 181-201M192 885c58-68 113-135 176-202M190 884c52-51 101-104 179-200M192 886c47-49 90-101 177-200M193 891c71-79 138-160 176-206M196 890l173-203M198 889c36-44 76-92 170-199M195 889c47-50 90-100 174-196M197 893c55-66 106-121 170-202M199 893c59-66 118-135 171-202M201 895c47-56 90-106 167-201M197 891c46-49 90-98 174-194M203 895c34-38 72-85 170-197M201 895l171-197M203 896c50-55 98-112 167-194M201 895c40-47 85-94 170-192M205 899c57-72 118-149 165-194M203 899c63-69 121-141 167-195M204 899c49-58 104-118 169-193M203 898c45-53 93-104 170-192M203 900c61-63 121-138 169-190M207 900c37-38 72-80 165-193M207 901c45-45 84-94 163-186M206 901c41-50 88-101 168-189M209 904c45-56 88-105 162-190M210 906c37-41 72-81 163-194M210 904c33-39 72-81 162-186M209 905c32-44 72-85 165-188M215 909c51-65 107-131 160-193M213 906c35-38 69-79 160-189M213 906c57-71 123-141 162-184M210 908c36-38 73-79 163-183M216 908c53-64 112-124 158-182M215 910c52-62 106-122 159-186M214 910c41-47 79-94 163-185M213 911l163-182M218 914c45-59 97-119 155-183M218 912l157-184M219 911c39-47 81-94 154-179M217 913l158-180M220 915c50-52 92-109 156-181M219 917c48-60 94-115 158-183M222 920c32-35 64-77 156-179M219 918l159-180M219 920c32-34 66-71 158-179M220 920c61-69 123-143 156-181M222 918l156-174M223 920l155-175M228 922c42-49 80-104 146-174M223 922c64-72 124-144 153-177M224 926c53-60 100-123 156-178M223 925l155-176M227 929c48-61 97-116 152-181M227 926c34-39 66-79 152-176M226 927c48-49 89-95 151-172M226 926c52-55 104-109 152-169M228 927l151-174M231 930c30-41 58-74 149-175M231 930c35-42 71-83 148-171M230 929c50-51 92-102 150-169M230 933c55-65 113-138 151-174M231 934c33-37 63-75 148-176M235 933c37-38 74-81 142-164M232 932l147-166M234 936c26-34 58-76 149-171M235 935c49-59 102-121 146-168M234 932c57-65 111-125 147-163M235 934c44-51 90-103 146-164M240 936c51-58 98-115 142-168M237 937c32-34 64-71 144-166M241 936c42-48 85-100 139-159M238 940c48-52 92-102 143-163M240 943c32-39 62-72 142-165M241 942c38-48 76-92 141-167M244 941c54-57 102-118 137-163M242 941c49-60 100-118 139-159M246 943l139-159M242 943c33-40 68-84 139-162M239 944c45-46 81-88 147-160M244 946l138-161M247 948c52-55 100-111 133-162M244 947c55-57 106-120 140-161M243 944c37-32 65-72 142-154M246 946l138-155M247 952c35-44 68-86 133-157M249 952c49-58 90-109 136-159M250 952l131-151M246 950l137-154M249 954c53-55 99-110 132-158M250 952c39-44 77-87 133-154M250 956c30-31 53-60 132-155M250 955c45-57 94-111 134-150M252 960c34-46 66-87 135-154M253 958l131-154M254 953c34-35 75-72 135-142M254 957c27-35 58-67 132-148M260 960c39-57 82-105 124-150M255 958c32-35 61-68 130-149M257 963l129-147M256 962c41-45 86-97 128-150M262 964c27-42 61-78 127-152M260 964l124-151M258 963c47-49 92-99 130-145M259 964l127-147M259 962c30-29 59-66 126-140M260 965c28-34 55-67 128-147M258 966c53-57 99-107 133-139M260 965c29-30 59-66 127-143M262 968c47-52 100-112 126-146M265 967c34-35 64-73 123-141M265 967c24-33 58-66 120-138M263 970c42-45 83-92 124-141M270 974c43-58 90-108 118-142M269 971c37-40 71-84 119-143M268 975c23-31 54-64 122-139M267 971l124-136M269 978c47-55 97-108 122-141M271 975c40-50 83-98 120-142M272 976c46-50 90-107 119-137M267 977c32-33 59-69 122-136M270 977c34-43 69-80 122-135M273 977c30-34 58-71 117-136M275 981c34-41 61-79 115-139M271 978c46-49 91-103 119-131M275 984c47-47 86-101 119-142M275 981l115-136M277 982c24-29 57-62 112-128M273 980c43-45 83-91 119-131M277 983c39-39 76-81 114-130M276 984c36-42 74-85 113-134M275 988c48-55 94-108 120-131M277 985c27-36 59-67 114-130M282 990c29-31 51-64 112-135M281 985l112-128M276 985c46-51 93-91 113-122M278 989c44-50 89-99 116-127M282 989c46-48 79-90 111-132M284 991c36-47 75-96 108-131"}),React__namespace.createElement("path",{stroke:"#000",d:"M283 989c39-52 86-95 106-127M282 989c38-44 73-85 112-126m-2 1c-27-190-56-380-78-570m79 570c-33-223-64-446-78-568m-1 2c-40 1-79 1-101-6m100 5H210m2-4c-15 208-26 416-31 578m31-576c-14 162-22 325-32 575m0 1c25 33 57 69 96 113m-96-114c29 41 62 76 98 117m2 1s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillOpacity:".8",fillRule:"evenodd",strokeLinecap:"round",strokeOpacity:".8"},React__namespace.createElement("path",{fill:"#dbc9f3",d:"m325 490-71-1-133 118-5 3-4 4-3 5-3 5-19 127 20 15 19 15 16 16 14 17 12 18 9 18 8 20 6 20 15-4 15-3 13-2 13-2 12-1 11-1 15 1 5 1-4-11-5-20-5-20-3-19-2-20-1-19v-19l2-19 2-18 3-19 4-18 6-18 6-19 6-18 8-18 4-9 9-18 4-8 2-8 3-10 1-10v-12l-5-39"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M325 490s0 0 0 0m0 0s0 0 0 0m0 0-71-1m71 1-71-1m0 0L121 607m133-118L121 607m0 0s0 0 0 0m0 0s0 0 0 0m0 0-5 3m5-3-5 3m0 0-4 4m4-4-4 4m0 0-3 5m3-5-3 5m0 0-3 5m3-5-3 5m0 0L87 751m19-127L87 751m0 0s0 0 0 0m0 0s0 0 0 0m0 0 20 15m-20-15 20 15m0 0 19 15m-19-15 19 15m0 0 16 16m-16-16 16 16m0 0 14 17m-14-17 14 17m0 0 12 18m-12-18 12 18m0 0 9 18m-9-18 9 18m0 0 8 20m-8-20 8 20m0 0 6 20m-6-20 6 20m0 0 15-4m-15 4 15-4m0 0 15-3m-15 3 15-3m0 0 13-2m-13 2 13-2m0 0 13-2m-13 2 13-2m0 0 12-1m-12 1 12-1m0 0 11-1m-11 1 11-1m0 0 15 1m-15-1 15 1m0 0 5 1m-5-1 5 1m0 0-4-11m4 11-4-11m0 0-5-20m5 20-5-20m0 0-5-20m5 20-5-20m0 0-3-19m3 19-3-19m0 0-2-20m2 20-2-20m0 0-1-19m1 19-1-19m0 0v-19m0 19v-19m0 0 2-19m-2 19 2-19m0 0 2-18m-2 18 2-18m0 0 3-19m-3 19 3-19m0 0 4-18m-4 18 4-18m0 0 6-18m-6 18 6-18m0 0 6-19m-6 19 6-19m0 0 6-18m-6 18 6-18m0 0 8-18m-8 18 8-18m0 0 4-9m-4 9 4-9m0 0 9-18m-9 18 9-18m0 0 4-8m-4 8 4-8m0 0 2-8m-2 8 2-8m0 0 3-10m-3 10 3-10m0 0 1-10m-1 10 1-10m0 0v-12m0 12v-12m0 0-5-39m5 39-5-39m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillOpacity:".8",fillRule:"evenodd",strokeLinecap:"round",strokeOpacity:".8"},React__namespace.createElement("path",{fill:"#a887e8",d:"m439 634 10 20 4 24 2 26 3 25 5 25 8 25 9 24 12 24 13 24 8 11 9 12 7 10 2 6 2 6v5l-2 5-2 5-5 8-61 99-8-17-8-16-9-14-9-14-9-12-10-11-10-10-11-10-11-8-11-7-12-6-12-5-13-4-13-3-14-2-6-1h-7l-7-20-5-20-4-20-3-19-1-19-1-19 1-28 2-19 3-18 4-18 5-19 6-18 7-18 8-18 9-19 7-14 7-20 2-21-5-41 114 144"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M439 634s0 0 0 0m0 0s0 0 0 0m0 0 10 20m-10-20 10 20m0 0 4 24m-4-24 4 24m0 0 2 26m-2-26 2 26m0 0 3 25m-3-25 3 25m0 0 5 25m-5-25 5 25m0 0 8 25m-8-25 8 25m0 0 9 24m-9-24 9 24m0 0 12 24m-12-24 12 24m0 0 13 24m-13-24 13 24m0 0 8 11m-8-11 8 11m0 0 9 12m-9-12 9 12m0 0 7 10m-7-10 7 10m0 0 2 6m-2-6 2 6m0 0 2 6m-2-6 2 6m0 0v5m0-5v5m0 0-2 5m2-5-2 5m0 0-2 5m2-5-2 5m0 0-5 8m5-8-5 8m0 0-61 99m61-99-61 99m0 0s0 0 0 0m0 0s0 0 0 0m0 0-8-17m8 17-8-17m0 0-8-16m8 16-8-16m0 0-9-14m9 14-9-14m0 0-9-14m9 14-9-14m0 0-9-12m9 12-9-12m0 0-10-11m10 11-10-11m0 0-10-10m10 10-10-10m0 0-11-10m11 10-11-10m0 0-11-8m11 8-11-8m0 0-11-7m11 7-11-7m0 0-12-6m12 6-12-6m0 0-12-5m12 5-12-5m0 0-13-4m13 4-13-4m0 0-13-3m13 3-13-3m0 0-14-2m14 2-14-2m0 0-6-1m6 1-6-1m0 0h-7m7 0h-7m0 0-7-20m7 20-7-20m0 0-5-20m5 20-5-20m0 0-4-20m4 20-4-20m0 0-3-19m3 19-3-19m0 0-1-19m1 19-1-19m0 0-1-19m1 19-1-19m0 0 1-28m-1 28 1-28m0 0 2-19m-2 19 2-19m0 0 3-18m-3 18 3-18m0 0 4-18m-4 18 4-18m0 0 5-19m-5 19 5-19m0 0 6-18m-6 18 6-18m0 0 7-18m-7 18 7-18m0 0 8-18m-8 18 8-18m0 0 9-19m-9 19 9-19m0 0 7-14m-7 14 7-14m0 0 7-20m-7 20 7-20m0 0 2-21m-2 21 2-21m0 0-5-41m5 41-5-41m0 0 114 144M325 490l114 144m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillOpacity:".8",fillRule:"evenodd",strokeLinecap:"round",strokeOpacity:".8"},React__namespace.createElement("path",{fill:"#6342a0",d:"m190 890 6 29 2 29-1 27-2 14-6 27-8 26-11 25-13 25-7 12 28 1 27 1 27 3 27 4 27 5 25 6 26 7 25 9 12 4 12 2 11-1 10-3 9-5 8-9 6-8 8-18 25-85-10-22-11-20-11-18-13-16-13-14-15-13-15-11-17-9-17-7-19-5-19-3-21-2h-21l-23 3-24 4-24 6"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M190 890s0 0 0 0m0 0s0 0 0 0m0 0 6 29m-6-29 6 29m0 0 2 29m-2-29 2 29m0 0-1 27m1-27-1 27m0 0-2 14m2-14-2 14m0 0-6 27m6-27-6 27m0 0-8 26m8-26-8 26m0 0-11 25m11-25-11 25m0 0-13 25m13-25-13 25m0 0-7 12m7-12-7 12m0 0 28 1m-28-1 28 1m0 0 27 1m-27-1 27 1m0 0 27 3m-27-3 27 3m0 0 27 4m-27-4 27 4m0 0 27 5m-27-5 27 5m0 0 25 6m-25-6 25 6m0 0 26 7m-26-7 26 7m0 0 25 9m-25-9 25 9m0 0 12 4m-12-4 12 4m0 0 12 2m-12-2 12 2m0 0 11-1m-11 1 11-1m0 0 10-3m-10 3 10-3m0 0 9-5m-9 5 9-5m0 0 8-9m-8 9 8-9m0 0 6-8m-6 8 6-8m0 0 8-18m-8 18 8-18m0 0 25-85m-25 85 25-85m0 0s0 0 0 0m0 0s0 0 0 0m0 0-10-22m10 22-10-22m0 0-11-20m11 20-11-20m0 0-11-18m11 18-11-18m0 0-13-16m13 16-13-16m0 0-13-14m13 14-13-14m0 0-15-13m15 13-15-13m0 0-15-11m15 11-15-11m0 0-17-9m17 9-17-9m0 0-17-7m17 7-17-7m0 0-19-5m19 5-19-5m0 0-19-3m19 3-19-3m0 0-21-2m21 2-21-2m0 0h-21m21 0h-21m0 0-23 3m23-3-23 3m0 0-24 4m24-4-24 4m0 0-24 6m24-6-24 6m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillOpacity:".8",fillRule:"evenodd",strokeLinecap:"round",strokeOpacity:".8"},React__namespace.createElement("path",{fill:"#390f8c",d:"m87 751 25 19 22 20 20 22 16 24 12 26 9 28 6 27 2 26v27l-4 26-6 26-10 27-13 27-17 26L21 976l-8-12-7-11-1-9v-11l3-9 10-22 69-151"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M87 751s0 0 0 0m0 0s0 0 0 0m0 0 25 19m-25-19 25 19m0 0 22 20m-22-20 22 20m0 0 20 22m-20-22 20 22m0 0 16 24m-16-24 16 24m0 0 12 26m-12-26 12 26m0 0 9 28m-9-28 9 28m0 0 6 27m-6-27 6 27m0 0 2 26m-2-26 2 26m0 0v27m0-27v27m0 0-4 26m4-26-4 26m0 0-6 26m6-26-6 26m0 0-10 27m10-27-10 27m0 0-13 27m13-27-13 27m0 0-17 26m17-26-17 26m0 0L21 976m128 126L21 976m0 0s0 0 0 0m0 0s0 0 0 0m0 0-8-12m8 12-8-12m0 0-7-11m7 11-7-11m0 0-1-9m1 9-1-9m0 0v-11m0 11v-11m0 0 3-9m-3 9 3-9m0 0 10-22M8 924l10-22m0 0 69-151M18 902l69-151m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("path",{fill:"none",stroke:"#CECDCC",strokeLinecap:"round",strokeWidth:"10",d:"M91 753s0 0 0 0m0 0s0 0 0 0m0 0 21 16m-21-16 21 16m0 0 18 17m-18-17 18 17m0 0 16 16m-16-16 16 16m0 0 13 17m-13-17 13 17m0 0 11 17m-11-17 11 17m0 0 8 17m-8-17 8 17m0 0 7 18m-7-18 7 18m0 0 6 18m-6-18 6 18m0 0 15-4m-15 4 15-4m0 0 14-2m-14 2 14-2m0 0 14-2m-14 2 14-2m0 0 13-2m-13 2 13-2m0 0 12-1m-12 1 12-1m0 0 11-1m-11 1 11-1m0 0h10m-10 0h10m0 0h8m-8 0h8m0 0-6-21m6 21-6-21m0 0-6-20m6 20-6-20m0 0-4-20m4 20-4-20m0 0-3-20m3 20-3-20m0 0-1-19m1 19-1-19m0 0-1-19m1 19-1-19m0 0 1-19m-1 19 1-19m0 0 2-18m-2 18 2-18m0 0 2-19m-2 19 2-19m0 0 4-18m-4 18 4-18m0 0 5-18m-5 18 5-18m0 0 6-18m-6 18 6-18m0 0 7-18m-7 18 7-18m0 0 7-18m-7 18 7-18m0 0 9-18m-9 18 9-18m0 0 9-19m-9 19 9-19m0 0 8-22m-8 22 8-22m0 0 2-10m-2 10 2-10"}),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#FFF6F0",d:"m154 297-20-26 25-24 207-6 19 26-27 25-205 1-1-3"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"m156 295-20-23m20 24c-7-11-16-19-22-27m6 1c1-11 10-13 21-21m-25 18c6-6 10-11 25-23m0 4c64-2 125-5 200-5m-198 3c64-1 133-4 201-2m-4 0c7 5 16 16 24 23m-20-25c5 6 7 12 20 23m-1 2c-2 8-12 14-18 25m18-24c-7 6-13 13-20 24m-4 1c-82-4-161-3-203 3m207-5c-56 1-110 0-206 4m-1-1s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#FFF6F0",d:"m275 618 12-35 6-12 11-14 23-18 21-16-29-185-5-43-3-5-5-1-45 4-1 14 17 311"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M277 617c2-5 4-24 9-34 4-10 10-19 17-26 7-8 18-13 23-17l10-8c3-3 9-4 11-9 1-5 3 10-2-20l-26-163c-5-31-2-20-3-27l-3-11c-1-4 0-10-2-12s-6 0-11 0l-15 2h-14c-4 0-8-2-10 0s0 7 0 14v30l10 205c3 38 3 13 3 26l1 50m1-1c2-5 7-22 12-31 5-10 11-20 17-27 7-7 17-13 22-17l7-9c4-3 12-5 14-10s3 10-2-20l-28-162c-5-31-2-19-3-25l-1-13c-1-4-1-9-3-11s-5-1-9-1l-17 1h-15c-5 0-10-2-12 0-1 2 3 5 3 13l2 32 10 202c2 39 0 16 0 29l2 49"})),React__namespace.createElement("g",{fill:"none",fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{stroke:"#bcb9b8",strokeWidth:".5",d:"m259 300 6-5m-6 5 7-4m-4 7 3-8m-3 8 4-8m-7 10c4-3 6-3 12-9m-12 10 13-11m-11 13c5-4 5-8 10-14m-8 14 8-14m-11 17c6-4 12-9 15-15m-16 16 17-17m-13 20c1-3 7-8 12-19m-13 17c6-5 8-10 15-17m-15 21c5-9 14-16 21-21m-23 22 22-24m-18 24 19-25m-19 26 18-24m-21 27c8-7 18-19 25-27m-27 28 29-28m-24 29c4-5 13-13 24-28m-25 30 25-32m-28 36c10-10 17-19 33-34m-34 34c8-9 15-17 35-35m-30 37 29-38m-30 38 29-37m-32 38c12-10 24-24 37-39m-36 40 38-40m-37 43c13-13 22-27 36-43m-35 43 36-42m-38 45c11-11 24-24 42-46m-42 46 44-46m-41 50c16-18 29-37 40-52m-40 51c14-19 28-35 41-49m-43 51 46-51m-46 51 45-50m-41 53 42-54m-44 55 45-54m-49 58c15-14 24-29 55-57m-54 56c13-14 26-27 51-57m-46 61c17-23 35-45 49-60m-49 58c11-16 24-32 46-59m-51 64 55-60m-54 60 52-59m-51 61c14-19 32-36 50-61m-48 60 49-60m-52 65c10-14 24-25 55-59m-55 59 54-60m-50 59c13-13 25-28 51-59m-52 62 50-62m-54 66c14-16 27-29 53-60m-53 59c18-21 35-40 54-58m-49 61 50-60m-51 59 50-61m-52 65c12-16 23-27 52-61m-53 60c15-15 29-32 54-60m-49 63 51-63m-52 64 51-63m-55 65 55-60m-54 59c15-15 29-31 53-59m-51 61 52-61m-52 62 53-61m-53 65c14-18 30-36 53-62m-55 62 56-60m-51 61 49-63m-50 64c11-15 23-29 51-62m-53 65c15-18 34-38 55-60m-56 61c15-20 34-39 55-60m-52 61c11-10 20-26 52-63m-53 64c12-15 24-31 52-62m-53 67c11-17 26-35 54-64m-55 63 54-61m-50 63c21-26 41-50 52-61m-54 61 52-63m-55 67c20-26 44-50 57-61m-56 61c21-25 44-50 56-62m-52 64 51-63m-52 64 52-65m-56 65c20-17 39-40 55-60m-54 62 56-63m-53 64 53-64m-54 65 54-64m-53 67c10-14 22-29 55-63m-58 64 57-63m-55 66c20-25 42-52 56-66m-54 65c20-24 39-50 54-64m-57 69c19-23 41-44 56-63m-56 61c18-18 33-37 56-61m-51 62 50-62m-51 63 53-64m-56 68c15-16 31-32 56-64m-57 65c19-23 39-43 58-65m-55 68 56-65m-57 64 55-67m-57 69c20-19 37-43 58-65m-59 66c21-20 38-41 60-64m-57 66c22-26 45-52 59-65m-57 65 54-66m-58 70c23-25 43-44 59-67m-58 66c15-15 27-32 57-64m-56 68c16-16 30-36 57-68m-56 67 56-66m-58 69c19-18 35-40 58-63m-59 63c16-16 28-32 60-65m-55 66 55-66m-56 68 57-68m-62 71c18-17 39-39 62-66m-60 66c16-18 32-37 61-67m-60 71 58-69m-56 68c18-19 33-41 57-69m-59 70c21-19 39-40 62-64m-63 65c25-27 48-53 62-66m-60 70c12-14 25-29 57-71m-56 70 58-70m-60 72c19-22 41-40 59-64m-59 66c19-24 40-45 60-67m-58 68 60-69m-59 71 58-71m-59 72c23-23 46-52 62-67m-65 69 63-68m-60 68c18-18 36-39 60-68m-58 71 57-71m-60 72c14-15 32-34 62-69m-63 71c22-26 45-52 63-70m-60 70c19-20 34-38 61-71m-61 72 61-71m-64 73c23-19 41-40 62-68m-62 70 62-70m-60 72 61-72m-59 72 59-71m-60 74c22-26 45-50 60-71m-63 72 64-70m-61 71c14-14 24-29 63-71m-61 72 59-73m-63 75c23-26 46-52 65-70m-65 71 64-71m-62 75c17-17 33-37 62-75m-60 73 61-73m-64 79 62-71m-63 69 64-71m-60 74c19-23 38-43 60-75m-61 74c19-21 37-43 61-73m-62 79c23-26 46-56 65-76m-67 74 66-72m-64 75c25-26 47-55 65-75m-64 75c17-18 31-36 64-76m-64 78c19-22 38-42 62-72m-64 73c15-17 30-35 66-73m-65 74 64-73m-62 75c14-16 26-34 63-75m-68 76c24-22 44-45 67-69m-65 71 67-73m-64 75 64-76m-64 77 62-77m-66 78c15-13 29-31 68-72m-66 72 67-72m-64 77c13-18 28-31 64-79m-64 78 64-76m-66 77c19-20 37-42 66-71m-67 73 67-74m-62 76c19-26 43-52 62-75m-65 74 66-75m-67 81 66-76m-68 75c27-28 55-58 68-75m-62 78c15-21 30-41 64-78m-67 78 65-78m-67 82c20-21 37-40 69-78m-68 76 67-75m-63 78 65-80m-66 81c12-16 26-32 65-78m-68 81c14-19 32-36 69-79m-70 77c26-26 50-55 69-75m-64 81c14-21 29-38 66-79m-68 77c18-20 33-38 66-80m-66 83c18-22 39-44 66-78m-68 78 69-77m-66 81c21-23 39-48 65-81m-66 81c27-31 50-60 67-81m-70 83c29-29 57-63 72-79m-70 79 70-77m-66 79c13-18 25-35 66-79m-68 78 67-79m-68 82c15-13 28-29 68-76m-68 77 69-78m-66 82 65-81m-67 79c18-18 33-39 69-79m-69 83c18-22 40-48 69-76m-72 77c19-19 36-39 71-79m-68 81c25-31 53-59 69-80m-69 81 69-83m-71 84c15-17 32-34 70-78m-69 79 70-79m-68 84 68-86m-69 84c17-19 30-37 70-82m-70 83 70-79m-72 81c16-17 32-34 72-81m-69 82 69-81m-68 82 69-81m-72 85 71-79m-70 78c21-23 43-46 71-81m-70 83c16-16 33-34 71-84m-71 85 71-82m-74 84 21-18m-19 19 20-21m-19 25c6-7 13-17 20-23m-19 22 18-24m11-13c10-13 23-28 42-45m-43 45c12-16 26-29 43-47m-42 48c11-8 18-20 41-48m-40 49 41-49m-72 87c4-6 9-9 10-13m-11 12 14-11m-10 13 8-15m-9 16 10-14m27-38c13-10 26-27 33-33m-30 34 29-32m-25 34 26-35m-29 35 30-34m-75 87c5-3 7-5 9-8m-8 9c2-4 5-6 10-9m-8 11 7-12m-6 11c1-4 4-7 7-10m42-52 24-21m-24 21 22-23m-20 24c5-3 9-13 18-24m-17 25 19-25m-75 90 8-6m-8 5 8-5m-4 7 4-7m-4 8 3-7m-6 9h3m-3 1 4-1m-1 3v-4m0 4 1-3"}),React__namespace.createElement("path",{stroke:"transparent",d:"M276 614c2-6 5-24 10-33 4-10 11-19 17-26 7-7 17-13 22-17l8-6c4-3 12-5 13-11 2-5 2 9-3-21s-22-128-26-159c-5-30-2-17-3-23l-2-15c0-4 1-8-1-9-3-1-7 1-11 1l-17-2c-4 0-9 3-13 4-3 0-8-4-9-2-2 2-1 6 0 13l2 32 10 198 1 28 1 46m0 1c2-5 5-21 10-31 4-10 11-22 18-29 6-7 17-11 22-14 6-4 7-3 10-6s8-7 10-12c1-5 2 10-2-20l-24-160-4-24-2-15c-1-4 0-6-2-7h-28l-14 2c-3 0-6-2-8 0v12l2 29c1 38 7 163 10 201 2 37 2 11 3 24l-1 50"})),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeLinecap:"round",strokeWidth:"4",d:"M276 613c1-5 6-23 11-33 5-9 11-17 18-24l19-15 10-9c4-3 11-7 12-12 2-5 4 11-1-19l-27-160c-5-31-1-17-2-24l-2-13c-1-4 0-9-2-10-3-2-7 0-11 0h-16l-14 1c-4 0-10-3-11-1-2 2 3 6 3 13 1 8-2-7-1 32l11 198 2 27 1 48m1 0c2-5 5-21 10-31 5-9 14-17 20-24l18-18 8-6c3-3 10-5 11-11 2-5 3 9-2-22l-25-160c-5-31-2-18-3-24l1-12c-1-4-1-8-3-10h-9l-17-1-15 2c-5 0-10 0-11 2-2 2 0 4 1 11s1-7 3 31l7 198c2 37 2 14 3 27l3 50"}),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#FFF6F0",d:"m275 626-20-52-11-9-23-19-13-7-11-3-1-9 15-233v-1h41l6 1v12l4 61 12 260"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"m276 625-12-22c-4-9-5-20-10-28s-12-14-20-20c-7-7-19-15-25-18s-9 1-11-2c-2-4 0-5 0-17l4-55 8-154c1-28-3-13 1-16s13 0 21 0c8 1 23-2 27 1 4 4-2-6-1 18l6 128 12 186m-1 1-9-26c-3-9-8-18-13-26l-19-20c-6-6-17-14-23-18-6-3-9 1-11-3-2-3-1-6-1-18l3-53 9-155c2-28-3-10 0-12 4-3 13-2 21-2s22-2 26 1-1-8 0 17l5 128 14 186"})),React__namespace.createElement("g",{fill:"none",fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{stroke:"#000",strokeWidth:".3",d:"M211 291s0 0 0 0m0 0s0 0 0 0m0 3h1m-1 0 1-1m-1 5 3-4m-3 4 2-3m-3 6c3-1 5-5 5-6m-5 7 5-7m-3 11 6-10m-6 9c0-4 4-6 6-9m-8 12c7-3 4-8 8-13m-7 13 12-15m-14 20c5-13 11-15 18-17m-19 13c8-6 15-12 15-17m-16 25c10-8 13-16 21-26m-19 24c3-4 9-11 18-19m-16 19c8-9 15-16 20-24m-23 26c8-6 9-9 23-23m-23 23c8-5 11-9 28-26m-25 31c5-8 10-15 22-27m-23 25c5-2 17-12 29-26m-28 28 24-30m-28 33c7-4 14-17 32-28m-31 32c8-12 20-23 30-36m-25 38c6-14 12-22 25-41m-29 41c10-14 19-25 32-36m-35 42 36-47m-34 44c16-15 31-33 34-42m-37 44c9-11 19-21 42-40m-39 40c15-14 26-29 40-41m-38 47c9-14 22-32 42-49m-45 48c10-11 21-24 40-50m-41 52c19-14 35-33 42-49m-41 49c17-15 29-30 46-51m-47 51c18-11 30-32 53-48m-50 52c10-14 20-23 47-55m-47 56c14-10 20-24 52-54m-53 55c17-15 28-33 50-56m-49 59c13-16 23-28 53-58m-52 57c10-14 25-27 49-59m-54 64c21-18 33-32 56-65m-53 64c16-19 34-38 54-59m-54 64c14-19 32-44 52-64m-53 63c14-16 31-31 54-60m-57 62c17-15 22-27 53-55m-50 55c15-16 28-32 53-57m-55 59c23-18 32-35 53-56m-51 58c12-11 22-26 54-58m-55 60c21-22 41-42 53-59m-53 61c15-14 29-30 55-60m-54 65c8-15 23-30 52-62m-50 59c6-14 20-23 51-62m-52 63c15-11 28-27 50-54m-53 56c21-25 46-46 56-59m-53 64c20-19 38-38 54-62m-54 62c14-16 30-34 51-63m-53 64c22-19 31-39 53-59m-52 60 52-59m-49 65c17-26 37-50 51-63m-56 62c16-17 29-30 57-63m-57 64c16-12 28-31 56-59m-54 62c10-15 21-30 55-65m-60 65c18-17 41-43 62-60m-56 63c18-24 38-48 53-64m-59 64c16-19 36-36 55-64m-49 67c12-17 28-34 54-63m-59 64c21-19 37-38 57-65m-53 65c11-16 25-29 54-62m-54 66c10-11 21-22 51-62m-52 61 56-62m-57 67c13-18 28-35 56-64m-56 63 56-63m-53 69c23-29 39-54 56-64m-60 60c22-24 48-48 59-64m-58 72c25-24 40-57 59-67m-59 64c25-27 46-52 58-67m-61 69c22-22 47-48 55-63m-52 65c22-24 41-50 58-65m-60 68 62-68m-59 66c18-19 35-42 56-65m-58 71 61-64m-61 63 59-65m-57 67 53-64m-55 64c23-21 40-48 59-65m-58 69c22-22 42-43 57-66m-56 68c10-15 20-30 58-66m-61 66c15-14 34-36 56-63m-54 65c14-21 32-40 56-67m-56 66c17-11 31-29 55-65m-56 69c18-21 38-42 57-66m-60 65c19-17 34-33 59-61m-57 63c21-21 39-43 60-66m-59 69c20-20 41-47 59-64m-59 66 58-69m-55 69c11-18 29-35 56-68m-58 72c19-24 39-49 57-68m-56 74c10-22 31-44 54-73m-58 69c24-25 44-49 61-69m-57 76c15-20 30-38 58-70m-63 68 61-70m-57 72c25-25 45-54 58-70m-58 69 60-69m-65 77c12-21 33-33 66-71m-63 68c18-24 38-46 60-72m-58 77c18-20 34-39 60-76m-60 72 58-71m-63 73c21-21 47-45 60-71m-59 74c18-18 36-37 64-71m-61 77c22-27 43-52 59-74m-59 71 59-70m-63 76c16-21 36-42 66-75m-63 71c13-13 25-29 63-71m-66 74c16-15 36-32 67-68m-66 71c23-23 44-46 64-74m-67 77c21-17 39-38 62-74m-60 72 64-72m-65 79c23-31 45-58 64-77m-60 73c16-21 38-41 63-72m-67 80c32-28 54-58 68-75m-64 69c15-20 32-41 61-71m-62 81c15-24 38-45 60-81m-62 79c18-22 35-42 66-74m-63 78c14-23 30-41 60-78m-62 76c15-19 28-35 64-73m-63 72c22-27 44-44 63-70m-65 72 65-75m-66 78c16-15 31-35 68-77m-66 76c23-26 46-54 66-72m-65 77c14-25 37-45 63-74m-64 73c15-17 29-32 64-74m-67 80c22-26 48-59 68-76m-67 75c23-25 46-50 67-76m-62 77c7-10 25-28 59-71m-62 73 65-76m-65 78c16-19 38-41 61-78m-61 79 66-76m-70 79c32-30 56-65 72-80m-67 82c22-29 43-55 66-78m-66 78c22-28 47-62 62-75m-64 76c17-18 32-36 66-77m-65 84c18-29 39-48 63-77m-65 72 68-75m-70 84c21-25 41-54 70-80m-69 76c17-16 33-35 69-76m-68 78c26-27 46-52 69-74m-70 73c24-24 46-49 69-75m-68 84c25-31 50-58 65-78m-66 76 69-81m-69 84c25-24 41-49 73-83m-73 82 70-80m-70 80c21-27 42-49 72-79m-71 83c19-24 41-48 70-80m-69 76c11-9 25-29 71-71m-71 73c23-22 47-49 66-74m-62 75c19-17 33-40 67-74m-67 74c22-23 45-50 63-72m-61 71 62-71m-64 76c14-20 31-39 66-77m-67 74c27-27 46-46 64-71m-61 71c15-17 28-33 62-67m-59 73c22-25 44-55 61-72m-61 71c16-18 30-39 60-71m-62 73c28-28 47-55 65-69m-63 66c23-26 47-50 61-65m-59 69c14-21 30-30 61-64m-59 60c21-23 38-46 54-62m-52 61c10-15 30-32 58-59m-60 61c20-22 39-39 56-61m-52 64c18-22 29-39 50-62m-53 63 56-64m-55 64c19-24 34-42 52-57m-49 55 50-57m-45 59c15-24 37-44 46-55m-49 54c18-19 32-38 51-55m-53 53c17-8 27-18 50-50m-48 54c9-12 22-22 50-55m-49 58c21-25 34-41 51-58m-47 57c7-15 19-25 46-54m-50 57c15-13 24-29 47-57m-43 54c12-11 21-23 46-52m-48 55c22-22 36-39 45-55m-42 55c16-20 29-34 46-53m-44 50c12-13 19-22 46-48m-45 53c10-18 21-28 40-53m-36 49c4-8 14-25 37-43m-42 45 44-46m-39 47c8-16 17-24 39-49m-42 52 39-48m-36 51c13-19 25-29 37-51m-37 48c10-10 16-22 39-47m-40 47c13-6 21-17 40-39m-40 41 40-46m-37 43c15-6 20-20 33-42m-31 47c8-13 15-19 33-43m-33 42c14-12 22-28 32-37m-31 36 35-40m-31 39c7-8 17-17 26-33m-32 35c8-7 17-15 34-36m-31 35c9-8 18-20 35-36m-34 42c8-13 19-23 32-37m-30 35c8-4 13-18 27-34m-27 34c10-13 18-22 30-34m-29 33c11-5 15-16 27-31m-28 33c12-10 24-24 32-32m-27 34c3-9 11-15 24-34m-27 36c13-13 25-27 28-32m-22 28 20-25m-23 30 24-32m-23 34 26-27m-26 25 24-28m-21 31c6-6 11-13 23-30m-25 28c5-8 13-14 22-28m-19 33c3-10 15-20 19-29m-21 28 21-29m-23 31c11-9 15-9 25-30m-21 28c4-6 8-13 23-26m-23 27 23-22m-21 22c5-10 16-16 19-22m-20 27c3-12 13-12 16-28m-14 24c4-3 9-9 17-21m-17 27c2-10 8-11 17-22m-15 19 16-22m-20 20c7 0 12-4 19-13m-14 19c2-8 10-16 14-21m-15 19c0 1 6-8 18-17m-17 18 15-19m-14 20c6-2 3-6 19-18m-20 20c4-6 11-12 17-19m-15 17c4-2 11-8 13-16m-14 20c4-6 6-10 14-17m-9 15 9-10m-12 14c4-7 10-10 15-15m-14 20c4-9 7-10 12-15m-11 11 12-16m-12 20c-1-2 7-10 9-14m-11 11c6-1 8-7 16-14m-11 22c-1-11 6-11 9-16m-11 11 12-14m-10 14 6-11m-9 13c6-5 10-9 10-13m-9 18c0-7 5-5 9-12m-9 10c4-3 9-8 12-14m-11 14 9-13m-8 14c3-3 6-5 8-9m-6 11c2-1 6-6 6-8m-8 9c4-3 7-5 9-11m-6 10c-1-2 7-4 6-8m-7 11c-1-1 3-6 9-10m-9 14c1-4 3-6 6-11m-8 9 10-9m-8 9c3-2 2-3 10-6m-10 7c2 0 3-3 8-9m-8 13c2-2 8-5 7-10m-5 9 6-8m-6 9 7-6m-6 8 5-8m-5 9 5-4m-6 5 7-7m-5 8c1-2 4-2 4-6m-3 7c0-3 2-4 3-6m-3 8 5-5m-5 5 4-5m-4 6c2 0 3 0 4-3m-3 4 3-5m-3 7 4-4m-3 4 2-3m-1 4 2-2m-3 3 2-3m-1 5 1-1m-1 1 2-2"}),React__namespace.createElement("path",{stroke:"transparent",strokeWidth:".5",d:"m277 624-11-21c-4-9-7-22-11-30-5-8-10-13-17-19-8-6-22-15-29-18-6-3-10 1-12-1-2-3 1-5 2-17l4-55 8-153c2-29-2-15 1-17 4-2 13 2 21 2s23-3 27-1c4 3-4-8-3 16 2 24 7 76 10 128 3 53 6 155 7 186m0 5-10-31-11-23c-4-7-7-13-13-19-7-6-19-16-26-20-7-3-12 0-15-3-2-4 1-5 2-17v-53c1-35 4-127 7-156 2-28 2-14 6-16 5-1 13 7 20 7 8 0 19-7 23-4s-1-3 0 21c2 24 7 71 10 122l6 186"})),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeLinecap:"round",strokeWidth:"4",d:"m275 627-10-24c-4-9-6-20-11-27-5-8-12-13-19-19l-25-19c-6-4-10-1-12-4-2-4 0-5 0-17l4-55 9-154c2-28-2-12 2-14 3-2 10 0 18 0s23-3 27 1c5 3-2-7-1 18l6 129 12 184m2 0-13-25c-4-9-5-17-10-25a124 124 0 0 0-45-38c-6-3-8 1-10-2s0-5 0-17l3-54 8-155c2-28 0-11 4-13 3-3 10-2 17-2 7-1 22-4 26-1 4 4-2-3 0 21l9 127 9 183"}),React__namespace.createElement("path",{fill:"none",stroke:"#E6E6E5",strokeLinecap:"round",strokeWidth:"10",d:"M460 1010s0 0 0 0m0 0s0 0 0 0m0 0-10-21m10 21-10-21m0 0-11-19m11 19-11-19m0 0-11-17m11 17-11-17m0 0-13-15m13 15-13-15m0 0-13-14m13 14-13-14m0 0-14-11m14 11-14-11m0 0-16-10m16 10-16-10m0 0-16-9m16 9-16-9m0 0-17-6m17 6-17-6m0 0-18-5m18 5-18-5m0 0-19-3m19 3-19-3m0 0-20-2m20 2-20-2m0 0-21 1m21-1-21 1m0 0-22 2m22-2-22 2m0 0-24 4m24-4-24 4m0 0-24 5m24-5-24 5m0 0 6 29m-6-29 6 29m0 0 2 27m-2-27 2 27m0 0v26m0-26v26m0 0-4 26m4-26-4 26m0 0-7 24m7-24-7 24m0 0-9 24m9-24-9 24m0 0-11 24m11-24-11 24m0 0-13 25m13-25-13 25"}),React__namespace.createElement("path",{fill:"none",stroke:"#6d6d6d",strokeLinecap:"round",strokeWidth:"10",d:"M190 890s0 0 0 0m0 0s0 0 0 0m0 0 6 27m-6-27 6 27m0 0 2 26m-2-26 2 26m0 0v26m0-26v26m0 0-3 25m3-25-3 25m0 0-6 25m6-25-6 25m0 0-9 26m9-26-9 26m0 0-12 25m12-25-12 25m0 0-15 26m15-26-15 26"}),React__namespace.createElement("g",{fill:"none",fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{stroke:"#ea0",strokeWidth:".3",d:"M137 269s0 0 0 0m0 0s0 0 0 0m0 0c3-5 5-6 12-12m-11 15c2-4 7-9 11-13m-11 10c2 2 6-7 25-17m-25 19c7-5 16-15 20-21m-17 23c9-4 11-13 24-25m-23 25 20-23m-19 23c4-7 18-21 22-26m-25 31c5-9 13-17 27-32m-28 29c13-12 19-16 28-29m-24 30c6-7 11-14 25-26m-23 33c10-12 20-28 28-36m-29 34c8-9 13-20 28-34m-30 37c16-16 23-29 35-35m-34 32 32-31m-29 35c7-14 18-16 34-33m-32 29c11-11 19-24 27-32m-27 32c5-8 19-18 35-32m-37 34c13-12 24-21 34-34m-30 37c12-14 17-24 30-39m-32 40 35-40m-35 42c14-18 23-30 35-38m-33 36 34-38m-29 40c10-17 26-32 32-38m-35 37c13-13 23-27 37-38m-40 37c15-5 22-12 39-37m-37 41c7-9 18-17 39-43m-38 47c18-22 28-35 43-50m-39 49c5-14 15-21 38-46m-43 49c14-12 22-26 43-52m-39 49c11-10 19-20 41-47m-42 50c20-21 33-36 42-52m-40 52 44-50m-41 47c11-12 18-22 45-48m-45 53c10-17 21-27 40-53m-34 48c4-9 14-26 37-45m-43 47 46-47m-39 46c8-16 18-25 42-52m-46 55c13-14 25-28 43-51m-39 54c15-21 28-32 42-57m-41 54c10-12 18-26 43-52m-43 50c14-7 23-20 44-45m-44 47c15-19 32-37 45-52m-41 48c17-9 24-25 40-50m-38 55c10-15 18-23 40-51m-38 48c16-15 27-34 39-46m-39 45c14-14 26-29 43-49m-38 47c10-12 23-24 36-44m-41 46c10-10 21-20 43-47m-40 45c13-13 26-29 46-48m-45 54c11-17 25-30 42-50m-39 47c10-8 18-24 40-49m-40 49c14-18 27-31 43-48m-40 46c14-11 24-26 40-47m-42 48c18-16 34-36 46-47m-40 48c8-13 19-25 39-52m-42 54c20-20 37-40 43-49m-35 44c12-17 26-32 36-45m-40 49 41-51m-38 52 44-47m-44 45 42-49m-38 50c10-10 19-22 42-51m-44 49c11-13 23-25 42-49m-37 53c9-18 29-37 39-53m-41 52 42-53m-42 53c16-14 24-19 46-55m-42 53c9-12 18-25 43-51m-42 50 45-47m-43 47c13-19 32-34 40-47m-40 52c8-19 25-26 40-56m-38 51c9-9 20-21 40-48m-39 52c10-18 23-27 42-50m-39 47 40-50m-42 46c13-8 24-19 44-42m-40 48c11-16 27-34 40-50m-38 46c6-7 18-23 43-47m-42 47 40-48m-38 47c13-9 17-21 45-47m-46 50 43-49m-39 45c13-13 30-30 40-48m-41 51c12-13 21-26 41-47m-35 45 37-44m-40 47c13-17 29-32 43-47m-40 50c13-19 26-31 41-49m-40 45c9-10 20-22 41-49m-39 50c5-8 21-24 38-46m-40 44c14-11 26-27 45-48m-38 53c8-20 25-31 39-49m-41 44 41-47m-37 45c6-7 15-17 36-46m-39 49c17-19 33-36 41-49m-39 52c8-17 22-22 40-48m-40 46c15-16 30-33 44-51m-41 48c6-9 15-17 41-50m-40 52 41-47m-35 46c9-11 22-26 35-44m-39 46c14-15 26-27 41-48m-34 43c8-16 32-32 37-45m-39 48c5-8 16-22 42-47m-41 51c6-13 16-22 38-51m-41 48c17-18 34-34 45-48m-41 45c12-11 16-21 46-45m-45 47c9-8 17-20 42-49m-41 52c13-17 34-32 41-52m-39 49c13-11 23-27 41-47m-39 45c9-13 17-17 44-47m-42 51c12-18 26-30 41-50m-40 48c15-15 25-23 41-45m-43 47c12-13 26-27 45-51m-41 49c12-15 27-25 43-51m-40 53c12-20 29-37 40-51m-39 52c9-12 22-24 45-52m-45 51c15-19 28-35 43-51m-43 49c14-10 23-17 46-47m-44 50c14-16 24-32 44-52m-44 53c11-10 17-20 49-55m-45 52c13-18 31-35 41-48m-38 45c5-8 19-19 45-48m-48 49c19-16 32-34 45-48m-41 54 41-49m-41 47c16-19 32-40 45-50m-40 51c8-14 22-30 36-55m-37 53c17-18 31-37 41-49m-36 47c11-18 27-33 37-50m-38 50 41-48m-41 49c8-13 22-25 46-48m-46 48c12-11 23-23 42-50m-37 47c13-16 22-31 42-46m-46 48c12-8 19-20 46-49m-38 54c9-23 30-38 39-54m-43 50c15-20 35-37 45-49m-42 47 40-47m-38 48 40-48m-37 50c13-17 26-36 44-49m-47 47c10-10 17-20 42-49m-34 50c9-15 24-28 34-47m-36 45c10-13 23-25 41-45m-44 47c18-23 35-42 46-46m-43 45c19-18 34-34 44-49m-40 47 38-43m-38 44c14-14 26-28 41-49m-38 52c9-17 23-26 42-53m-44 51c13-16 29-29 44-46m-39 44c17-19 31-33 42-49m-42 52c16-16 29-36 40-47m-40 48c8-15 17-23 46-50m-46 47c15-15 28-31 44-45m-38 47c9-18 23-32 43-48m-45 47c11-13 27-28 43-49m-40 51c13-17 20-32 43-49m-43 49c17-17 28-35 43-48m-40 46c14-17 31-32 42-48m-44 47c14-14 28-34 42-47m-37 50c12-14 22-26 37-49m-37 47c13-17 25-33 40-47m-35 45c10-12 23-31 42-44m-45 47c13-17 22-27 44-50m-43 51c10-15 22-30 45-47m-45 44c17-16 32-37 43-46m-41 43c11-11 24-18 45-44m-43 48c15-19 33-36 39-46m-38 47c11-17 26-27 43-41m-40 38 36-41m-36 46c14-15 27-30 36-45m-34 40c7-11 19-23 37-41m-36 46c10-16 26-30 37-47m-37 46c10-10 20-20 37-41m-33 39c11-11 17-22 37-42m-37 40c8-7 17-15 35-38m-34 39c11-15 22-23 37-41m-36 41c10-10 19-19 34-38m-29 41c7-12 15-24 33-36m-33 35 30-38m-28 36c10-8 22-25 29-35m-29 37c8-11 19-22 27-36m-22 33c5-9 15-18 27-31m-31 33c10-11 23-26 29-35m-30 34c10-13 26-24 33-31m-29 31c10-7 15-18 26-30m-20 34c0-10 7-13 20-30m-22 27c6-7 12-13 23-30m-24 28c11-6 15-13 27-31m-24 33c8-7 12-15 25-28m-18 27c-1-6 13-18 17-26m-20 28c6-12 14-19 22-27m-21 24c9-7 17-16 19-20m-20 19 23-23m-228 28s0 0 0 0m0 0s0 0 0 0m3 0-7-7m7 7-8-8m11 5c-9-2-15-11-14-15m16 17c-6-4-11-9-19-13m22 17c-14-12-22-18-27-29m27 27-27-24m31 23c-14-6-19-18-30-26m29 26c-15-9-26-20-32-29m32 30c-3-5-15-17-31-33m30 30-30-28m31 27c-9-7-19-21-28-27m30 27-34-26m36 31c-9-13-22-25-30-34m32 33c-5-7-15-16-32-32m39 30c-11-10-23-12-37-31m34 32c-11-12-20-19-35-32m35 30c-8-14-27-28-31-29m35 28c-16-10-29-26-41-30m41 30c-9-11-21-19-35-31m36 31-40-32m44 31c-17-8-30-24-41-32m41 33c-13-7-25-21-42-33m43 37c-7-12-20-24-38-38m42 38c-16-15-32-27-45-40m49 42c-15-11-29-25-43-43m39 39c-10-11-24-22-45-38m52 41c-14-10-26-19-49-39m46 35c-18-12-32-29-44-37m45 35c-15-11-28-29-48-40m52 44-51-40m51 37c-9-10-18-14-51-37m52 40-48-44m52 42c-20-11-30-27-55-43m53 45-49-45m52 45c-19-15-35-33-49-48m48 46c-10-10-20-21-50-43m54 47c-15-22-34-37-52-46m54 41-55-45m54 46c-16-16-26-29-50-45m55 45c-22-18-44-36-58-45m61 50c-19-22-40-38-55-52m52 49-54-48m58 44c-14-15-35-28-56-44m58 45c-20-13-36-28-57-47m55 48c-12-13-20-15-55-50m59 49c-14-9-25-20-55-46m53 50c-12-16-26-28-49-55m53 52c-12-11-27-21-55-49m56 51c-17-21-41-33-57-50m60 51c-22-16-39-35-56-50m61 51c-17-16-36-33-61-52m58 49c-20-18-35-35-55-50m59 46c-14-9-36-27-53-42m52 47c-16-15-28-27-57-51m62 47c-22-15-49-36-56-43m53 47c-17-17-35-32-53-51m55 51c-6-9-22-23-54-48m57 46c-13-9-28-21-56-49m55 52c-14-19-37-37-57-49m60 45-58-48m57 51c-10-14-32-31-54-52m57 51c-12-14-29-26-56-48m64 45c-17-16-34-30-60-46m56 47-57-47m63 44c-20-12-35-20-60-41m56 46c-14-11-28-25-53-49m61 46c-19-12-33-24-64-46m62 47c-15-13-33-24-57-47m57 48c-19-20-44-36-52-50m52 51-53-48m55 45c-6-5-21-14-56-43m58 46c-15-17-34-32-56-49m58 50c-11-12-26-24-53-50m53 50-57-52m64 54c-20-24-40-38-61-49m58 43c-15-10-28-22-57-48m63 51c-24-24-49-41-61-50m58 51c-15-13-28-28-55-51m56 46c-13-12-31-30-58-47m61 51c-20-18-35-32-59-50m64 47c-17-10-37-25-55-47m52 49c-19-17-38-34-56-48m59 46c-15-16-31-28-53-50m54 52c-17-15-33-26-58-49m61 46c-18-14-44-31-59-48m60 51-57-48m59 47c-16-10-35-24-60-46m61 46c-17-11-31-26-57-46m58 46c-13-12-26-17-53-51m53 50c-17-11-35-29-57-47m62 46c-15-11-27-21-61-50m57 53c-15-16-30-29-54-49m61 47c-15-12-33-26-58-48m55 51c-18-19-42-41-54-49m55 48c-12-16-26-32-52-50m57 49c-18-13-35-30-56-48m55 47-50-50m52 51c-15-12-32-27-55-49m55 47c-16-13-35-29-56-50m60 52c-21-22-46-41-58-49m60 53c-14-14-20-26-57-53m58 50c-21-20-42-39-55-47m54 45c-5-5-25-20-52-50m56 51c-19-19-42-36-58-49m60 47c-18-13-39-26-52-49m53 52c-20-16-39-31-57-51m56 52c-11-15-27-29-57-54m60 50c-17-13-37-30-57-48m63 48c-23-11-46-28-56-42m52 43-54-46m58 46-57-48m58 47c-22-15-41-31-56-46m56 45c-19-10-31-32-54-44m55 45c-12-8-26-21-57-47m61 49c-18-14-36-37-53-50m53 52-57-52m58 50-55-47m56 45c-11-9-22-17-53-47m60 46c-25-12-42-35-56-48m54 49c-12-11-25-19-57-48m60 48c-17-11-34-25-59-47m60 50c-18-14-33-27-58-50m62 46c-22-11-36-28-56-43m51 46c-11-11-19-20-53-49m58 50c-18-21-38-39-55-52m55 52c-15-14-30-28-55-48m59 45c-15-12-27-24-58-47m55 47-55-48m62 50c-22-17-40-29-56-52m54 54c-13-17-29-28-55-51m62 47c-20-14-42-28-63-45m58 48c-20-21-43-40-56-52m63 54c-15-17-33-32-60-55m57 49c-21-15-38-30-57-47m62 49c-20-15-36-29-55-48m53 49c-16-16-32-32-55-50m61 47c-26-15-46-34-58-49m53 52c-12-14-24-24-52-49m53 47c-9-16-18-22-50-50m50 48-51-46m54 44c-13-10-26-23-48-40m50 42c-15-10-28-22-54-43m56 40c-19-16-37-33-51-43m50 45c-18-17-36-33-51-42m48 39c-10-9-26-23-44-44m48 44c-11-8-20-17-51-40m52 39c-11-7-22-19-44-43m43 43c-18-13-31-27-48-42m51 37c-19-12-37-30-49-37m47 41-44-38m45 37c-15-8-25-23-40-41m42 40c-7-5-17-15-46-36m47 32c-11-4-25-16-43-30m41 34c-12-14-29-32-39-37m41 36c-15-17-27-24-36-33m35 31c-14-10-27-23-37-33m38 29c-12-5-15-15-34-27m36 29c-12-8-24-17-37-33m42 32c-16-13-29-22-40-28m35 29c-11-13-26-22-36-32m38 31c-3-11-15-15-34-29m35 30c-8-10-16-18-34-32m35 31c-9-6-12-16-32-31m32 31c-10-9-21-17-35-31m37 28-33-30m33 30c-7-9-17-15-33-30m33 31c-8-11-18-19-26-26m26 21c-9-7-19-18-28-23m32 25c-9-8-14-15-29-26m28 24c-12-8-22-19-30-24m30 22c-7-2-10-13-27-26m26 27c-5-7-13-13-26-24m17 13c-5-3-7-7-13-15m12 12c-4 0-6-4-14-8"}),React__namespace.createElement("path",{stroke:"transparent",strokeWidth:".5",d:"M160 294c-10-1-8-9-26-22m23 24c-6-8-12-13-21-27m1 0c5-5 16-11 21-25m-21 25 25-22m-3-1c86-2 164-7 206-5m-202 7c70-1 138-1 202-4m0 0c3 10 11 15 17 24m-19-24 20 23m2 5c-6-1-10 10-25 24m23-29-20 25m-3 4c-61 0-123-4-204 1m205-5-205 5m0-1s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeLinecap:"round",strokeWidth:"4",d:"M153 298c0-10-9-23-15-29m19 23c-8-6-14-14-21-25m1 4c4-9 16-15 21-29m-23 27c8-8 14-14 27-22m1 1c50-4 103-3 198-6m-200 5c46-2 90-3 201-3m2-4c9 6 16 22 20 27m-23-25 22 23m-1 1c-7 10-12 15-19 21m21-22c-9 10-17 19-20 25m-1 0c-64 2-119 5-208 4m207-5c-48-1-97 2-207 4m1 1s0 0 0 0m0 0s0 0 0 0"}),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#FFF6F0",d:"m305 241-9-42-4-18v-21l6-46 9-35 11-32 8-17-10 1-27-4-20-12-11-8-14 11-16 8-25 7-8-4-4 9 21 70 9 43 1 36-5 57 6 2 78-4"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M303 241c-1-10-11-36-11-61 0-24 7-62 11-85 5-22 12-39 16-50 3-11 7-11 7-14-1-3-2-1-8-2s-21-1-29-4c-9-2-16-7-21-10s-6-7-9-8c-2 0-2 2-6 5-5 3-14 12-22 15-9 3-24 3-30 4-7 0-7-3-8 0-1 2 1 8 2 13l5 15a771 771 0 0 1 22 106c2 16-1 27-1 37l-1 25c-1 6-3 12-1 15s6 2 14 2l34-2 36-1m-1 0c-1-11-8-38-8-63 0-24 5-60 9-82s12-39 16-50c4-12 9-15 8-18 0-2-5 4-11 3a170 170 0 0 1-49-16c-5-3-4-8-6-9-2 0-3 2-8 5s-13 10-21 14c-9 3-22 4-29 5s-11-3-13 0c-1 2 2 9 4 14 2 4 4 4 7 14s9 29 12 47a465 465 0 0 1 10 97l-1 22c-1 7-4 17-3 20 2 3 4 0 13 0h36l35-4"})),React__namespace.createElement("g",{fill:"none",fillOpacity:".8",fillRule:"evenodd",strokeLinecap:"round",strokeOpacity:".8"},React__namespace.createElement("path",{stroke:"#c24c0e",strokeWidth:".5",d:"M191 30s0 0 0 0m0 0s0 0 0 0m-1 5c2 0 3 0 5-6m-4 7 6-5m-4 8 8-9m-7 9c2-3 5-7 7-7m-4 13c2-9 5-10 7-13m-10 11c6-5 7-8 14-13m-8 20c1-5 8-13 13-23m-16 20c7-8 11-14 17-18m-18 25c3-11 8-14 22-22m-20 23c7-11 17-24 23-27m-25 30 27-29m-24 28c8-8 12-16 25-29m-23 34c2-6 9-17 27-39m-29 39c7-7 16-15 33-35m-34 40c14-13 20-18 45-46m-41 47c16-18 30-38 41-47m-40 46c13-16 33-34 56-60m-58 65c18-18 34-37 56-65m-57 71c15-19 33-35 65-72m-59 69c14-16 26-33 54-64m-56 70c17-23 40-41 56-70m-53 69c20-25 45-53 58-65m-62 73c15-17 31-29 61-72m-58 70c21-27 46-51 60-70m-55 76c19-24 40-49 63-73m-66 71c16-19 31-38 63-71m-59 76c18-27 36-47 62-75m-64 74c14-18 33-33 63-73m-61 78c24-31 50-58 70-78m-71 79c23-33 48-59 66-80m-63 87c21-34 43-56 67-82m-71 77c24-24 45-46 71-80m-65 85c21-22 42-43 70-80m-71 83 71-86m-69 91c24-37 54-65 71-86m-73 85c16-24 36-46 75-88m-77 96c31-35 66-75 84-91m-81 85 79-90m-79 100c15-20 34-46 80-94m-79 89c32-35 65-72 82-93m-85 101c28-27 51-53 91-98m-88 97c18-23 38-45 87-99m-90 105c28-27 46-50 93-105m-88 104c28-32 56-62 88-104m-87 110c17-25 37-42 90-108m-93 108c25-27 51-55 95-107m-93 113c19-23 44-47 95-114m-93 114c30-33 59-70 97-114m-98 121c37-43 75-94 102-118M220 150c27-34 52-65 103-119m-99 121c30-36 67-77 99-122M220 155c27-31 49-58 106-122M223 162c40-45 79-92 103-117M221 161c23-27 44-55 103-117M222 166c17-25 44-48 98-113m-97 112c20-27 45-56 94-112m-96 122c35-39 73-81 96-112m-93 108c27-35 51-65 92-107m-96 114c21-27 41-46 89-95m-85 94c17-22 39-47 82-94m-79 98c14-22 39-50 74-93m-77 96c22-31 52-60 80-94m-77 99c13-20 27-34 78-90m-82 87c24-23 42-46 81-90m-81 98c25-31 59-66 76-94m-76 95c23-24 42-47 78-92m-81 94c20-13 31-32 85-87m-84 91c17-22 35-38 81-91m-76 100c22-36 50-65 77-90m-80 85c17-22 36-43 77-87m-82 100 83-90m-80 88c29-34 56-66 79-90m-78 98c16-22 35-45 74-94m-73 90c23-28 44-50 73-87m-71 95c16-25 38-44 71-83m-74 81 74-85m-76 96c30-36 54-64 76-87m-74 82c25-30 49-60 71-84m-73 96c18-23 37-46 74-88m-77 85c30-34 56-63 75-87m-72 93c34-40 60-66 77-84m-72 80c22-26 43-53 69-81m-63 79c17-17 30-33 62-77m-66 78 67-75m-56 73c18-22 47-49 56-67m-60 70 60-68m-56 71c20-32 48-56 57-64m-56 62c19-24 39-47 57-63m-48 59c8-15 27-25 47-51m-49 54c13-17 23-30 49-58m-42 55c15-13 23-31 38-51m-38 53c10-17 25-31 43-50m-42 47c10-6 13-13 38-44m-36 46 36-41m-28 43c10-17 27-27 31-41m-33 42 32-40m-28 36c6-7 14-12 32-28m-31 30c6-9 16-16 27-32m-25 33c15-10 16-18 26-32m-25 30c7-7 14-15 27-25m-16 25c-1-5 8-17 15-19m-18 20c5-4 11-10 20-25m-16 21c6 1 14-11 14-14m-12 18c3-6 7-9 15-18m-12 19c1-2 7-11 13-13m-13 13c3-6 5-8 14-14m-6 12c2-4 3-7 7-8m-7 8 5-7m0 7 2-2m-3 1 2-2m-84 4s0 0 0 0m0 0s0 0 0 0m6 0s-4-4-7-4m8 4-7-5m10 2c0 1-4-6-12-6m13 9-10-9m20 10c-8-5-11-7-16-19m11 16c-3-1-6-5-14-12m22 16c-12-8-14-12-19-20m18 18c-6-4-10-11-21-18m25 17c-1-2-12-8-25-24m26 27c-7-12-18-20-28-27m33 23c-5-6-16-21-29-30m31 31-34-29m42 31c-5-11-13-17-39-35m39 34-42-36m44 39c-8-13-23-26-44-39m48 35c-12-8-19-17-46-40m50 43c-20-18-37-32-47-46m48 42-50-43m59 43c-24-20-48-40-60-52m58 55c-24-19-46-38-59-51m61 49c-13-18-37-35-62-53m65 53-61-55m68 54c-17-21-40-32-66-58m65 60c-17-18-35-30-68-58m74 53c-24-17-53-43-74-56m73 62c-25-25-48-46-72-65m80 62c-23-18-45-39-84-67m83 69c-30-26-57-53-78-69m79 68c-20-22-41-41-80-76m83 72c-30-24-56-48-83-73m83 64-81-67m77 70c-21-14-42-33-80-69m79 66-83-72m86 69c-28-21-51-40-81-71m78 64c-23-21-44-36-76-68m74 69c-27-22-54-48-79-68m81 59c-25-17-45-36-83-65m81 67c-31-27-63-57-79-69m82 59c-31-13-54-33-81-68m75 72c-15-16-31-30-77-69m74 61c-25-20-48-43-76-63m75 60-73-64m77 62c-25-21-54-42-76-68m73 66-77-66m74 58c-11-15-33-28-77-61m81 63c-26-19-48-39-79-66m77 63c-27-31-56-51-78-68m81 68c-32-27-63-55-82-69m81 60c-20-18-47-43-85-66m83 69c-25-25-55-47-82-72m83 64c-28-23-57-48-83-74m83 76-83-74m86 68c-23-17-46-38-89-77m85 79c-18-13-32-29-85-77m88 71c-31-27-66-50-93-80m90 79c-32-27-67-54-87-74m86 73c-20-26-48-52-86-82m90 79c-27-25-54-50-91-80m90 72c-22-17-48-41-92-75m94 76c-23-13-40-30-93-79m94 76c-24-21-50-47-100-84m98 86-94-84m95 77c-22-16-42-38-94-83m95 83c-25-17-47-36-99-85m103 82c-39-30-74-60-102-85m99 85c-42-38-82-71-103-87m101 82c-35-34-79-65-104-92m106 91c-35-27-66-56-102-88m101 87c-39-33-76-68-104-95m106 90c-26-20-54-47-104-91m107 84c-30-19-52-41-107-85m102 88c-40-32-80-70-106-92m110 91c-29-20-50-43-104-91m104 88L197 31m106 82c-34-23-55-44-100-87m96 85c-34-26-67-57-97-84m98 81c-28-27-62-53-92-85m93 83c-28-21-52-47-96-79m99 76c-38-26-72-58-93-74m91 75c-23-20-43-35-90-80m93 72c-24-17-45-36-88-69m86 72c-27-19-48-39-85-73m85 66c-30-25-64-51-83-71m82 73c-27-24-57-53-81-70m84 67c-19-14-35-30-74-63m73 62c-14-13-33-25-75-67m76 66c-24-26-47-41-75-64m73 59c-14-12-33-27-71-64m70 58c-19-25-51-42-69-59m71 62c-20-19-42-37-66-62m66 60-62-59m65 56c-25-21-53-43-66-56m67 50c-28-19-51-40-69-55m71 55c-23-18-46-38-69-53m67 52c-10-9-29-22-65-56m67 55c-26-23-47-42-64-53m63 51-61-56m62 55c-21-22-48-44-62-55m63 49c-18-12-40-29-55-49m56 51c-13-13-29-25-57-53m61 50c-23-14-41-35-49-44m46 42-48-42m0 2-8-10m9 10-10-8m62 41c-12-5-18-11-35-27m34 32-36-31m37 28c-7-4-14-9-26-29m25 26c-9-7-22-16-28-22m33 20c-13-6-16-12-27-17m22 17c-2-5-7-12-22-22m22 18c0-7-10-12-10-19m13 16c-4-2-14-10-15-14m16 15c-4-3-5-12-13-14m15 12c-6-5-12-10-12-12m12 6c-2-1-6-4-5-5m5 6c-3-3-4-5-7-5"}),React__namespace.createElement("path",{stroke:"transparent",d:"M300 239c-2-10-8-38-8-62 1-24 6-60 11-82s13-41 17-52c3-11 7-12 6-15-1-2-5 0-12-1s-21 0-29-2-13-7-18-10c-4-2-5-7-8-7-2-1-2 2-7 5s-14 10-23 12c-8 3-21 3-28 3-6 1-8-2-9 1-1 2 1 12 2 17l3 12c3 10 10 28 14 46l7 62c2 16 2 27 2 37l-2 25c-1 6-1 11 1 14s4 3 12 3l37-4 32 1m5-6c-3-10-14-34-14-57s8-59 11-81l11-54c4-11 10-13 10-15 1-2 0 4-6 3-7-1-23-8-32-11-8-2-15-4-20-7-5-2-7-9-9-9s2 3-2 7c-5 4-14 12-23 16-10 4-26 6-32 7s-5-3-6-1v12l4 10c4 11 12 32 16 51 5 18 9 45 10 61s-5 27-6 37c-2 10-4 18-3 24 1 7 4 14 7 17 2 2 1-3 7-3 7 0 21 3 33 3s31-4 38-5"})),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeLinecap:"round",strokeOpacity:".8",strokeWidth:"4",d:"M301 240c-2-10-9-37-9-62 0-24 4-60 9-83 4-22 13-40 18-50 4-11 8-13 7-15 0-3-3 0-9-1l-28-5-22-7c-5-3-7-8-9-9-3-1 0 1-5 4s-15 10-24 13-23 5-29 6-8-3-8 0c-1 2 2 8 3 13l3 14 13 47c4 18 7 44 9 60s1 25 1 35l-1 26c0 7-4 13-2 16s6 1 14 1h33l37-2m1-1c-2-10-12-37-12-61 0-23 7-60 12-83 5-22 13-40 16-51 4-11 7-12 6-15s-5-1-11-1l-25-3c-8-2-18-6-23-9s-4-9-7-10c-2-1-3 2-8 5s-13 11-21 14-22 5-28 5c-6 1-9-3-10-1s1 8 2 13l4 15c3 10 10 31 14 49s9 43 10 59c1 15-2 24-3 34v27c0 7-2 14 0 17 2 2 4-1 12-2l34-1 37-1"}),React__namespace.createElement("g",{strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#ff0800",d:"M257 42c2 0 7 1 9 3 3 2 5 6 5 10v15c-1 4-3 6-5 8l-9 3c-3-1-6-3-8-7-2-3-3-8-3-13 0-4 1-9 4-12 2-3 8-5 10-5h2m-6-1c3-2 5-2 7 0 3 2 7 6 9 10 1 4-1 9-1 13-1 4-1 8-3 10-2 3-6 6-9 6s-8-2-10-5c-3-3-4-9-4-13s1-8 3-11l6-9c2-1 2 2 2 2"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M257 42c2-1 6 1 8 2 2 2 5 6 6 10s2 9 1 13c0 4-3 9-6 11-2 3-6 4-9 4l-7-8-4-12c0-4 0-9 2-12 1-3 7-6 9-7 1-1 1 1 1 1m5 0c3 1 6 5 8 8s3 8 2 12c0 4-4 9-6 12s-4 5-6 5c-3 0-6-3-9-5-3-3-6-6-7-10s1-11 3-14c2-4 4-7 7-8h10"})))},saveIcon=e=>React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:e?"var(--color-accent)":"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"}),React__namespace.createElement("polyline",{points:"17 21 17 13 7 13 7 21"}),React__namespace.createElement("polyline",{points:"7 3 7 8 15 8"})),penIcon=e=>{var t,A,i,n,a,r,s,o,l,c,d,h;switch(e.type){case"highlighter":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{fill:null!==(t=e.strokeColor)&&void 0!==t?t:"var(--icon-fill-color)",strokeWidth:"2",d:"m9 11-6 6v3h9l3-3"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4"}));case"finetip":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:null!==(A=e.strokeColor)&&void 0!==A?A:"var(--icon-fill-color)",stroke:null!==(i=e.strokeColor)&&void 0!==i?i:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{strokeWidth:"2",d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}));case"fountain":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{fill:null!==(n=e.strokeColor)&&void 0!==n?n:"var(--icon-fill-color)",d:"m12 19 7-7 3 3-7 7-3-3z"}),React__namespace.createElement("path",{fill:"none",d:"m18 13-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"}),React__namespace.createElement("path",{fill:"none",d:"m2 2 7.586 7.586"}),React__namespace.createElement("circle",{fill:"none",cx:"11",cy:"11",r:"2"}));case"marker":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",fill:null!==(a=e.strokeColor)&&void 0!==a?a:"var(--icon-fill-color)",stroke:null!==(r=e.strokeColor)&&void 0!==r?r:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M331 315l158.4-215L460.1 70.6 245 229 331 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L436.6 8.4C444 2.9 453 0 462.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L350.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H240l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L144 320zM23 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H40c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z"}));case"thick-thin":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 108 106",strokeWidth:"2",fill:null!==(s=e.strokeColor)&&void 0!==s?s:"var(--icon-fill-color)",stroke:null!==(o=e.strokeColor)&&void 0!==o?o:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"m-.58 95.628.22-.89q.22-.89.49-2.44.26-1.54.77-3.35t1.31-3.43q.79-1.61.2-.26-.6 1.34-.03-.14.58-1.49 1.54-2.97.96-1.49 2.54-3.18 1.59-1.68 3.46-2.96 1.86-1.27.81-.54-1.04.73.6-.46 1.64-1.19 2.8-1.81 1.16-.63.16-.08-.99.54 1.21-.5 2.2-1.03 1.11-.58-1.1.45-.03-.07 1.06-.53 2.32-.82 1.26-.3 2.91-.52 1.64-.23 3.05-.18 1.4.05 2.5.12 1.09.07 2.25.24 1.16.17 2.3.49 1.15.32 2.11.78.96.47 2.21 1.01 1.25.55 2.37 1.04t2.34.89q1.22.4 2.5.65 1.29.25 2.44.33 1.16.08 2.35.17 1.18.08 2.26-.1 1.08-.19 2-1.1.92-.91 1.25-1.93.32-1.02.38-2.15t.57.21q.51 1.34-.03-.02-.55-1.37-.96-2.83-.41-1.45.5-.67.92.79-.03-.06-.95-.85-1.52-1.8-.57-.94-1.5-1.52-.93-.57-1.94-1.22-1.01-.65-1.97-1.88-.96-1.22-1.44-2.54-.49-1.32-.65-2.57-.17-1.24-.11-2.35.06-1.11.31-2.91.24-1.79.76-2.77.51-.97 1.29-1.8.77-.84 1.64-1.55.88-.72 1.9-1.33 1.03-.61 2.43-1.15 1.41-.55 2.69-.92 1.29-.37 2.81-.68 1.53-.31 2.83-.58 1.31-.27 2.78-.47 1.47-.2 2.58-.49 1.12-.28 2.19-.58 1.08-.31 2.13-.73 1.05-.42 2.44-1.32 1.39-.9 2.68-1.85 1.3-.95 2.25-1.87.95-.91 2.06-2 1.11-1.09 1.92-1.93.82-.84 1.54-1.82.71-.98 1.4-1.88.69-.9 1.38-1.96.69-1.07 1.25-2.04.55-.97 1.21-1.94.65-.96 1.35-1.79.69-.83 1.46-1.74.77-.9 1.66-1.73.89-.84 2.72-2.31 1.84-1.48 1.84-1.47v.01l-1.1 1.03q-1.1 1.02-1.77 1.92-.68.9-1.39 1.85-.71.96-1.41 1.91-.7.96-1.19 1.92-.48.95-.95 1.92-.46.96-.9 1.95-.43.99-1.02 2.16-.59 1.17-1.17 2.15-.58.97-1.23 2.13t-1.29 2.02q-.64.86-1.3 1.73-.66.88-1.42 1.78-.75.9-1.72 2.03-.97 1.14-1.81 1.89-.85.75-1.98 1.71-1.14.96-2.05 1.61-.91.64-2.42 1.38-1.51.73-2.71 1.21t-2.49.92q-1.3.44-2.35.69-1.06.24-2.1.59-1.03.34-2.06.74-1.03.4-2.29.94-1.26.54-2.27 1.11-1.01.58-1.57 1.57-.56.99-.81 2.06-.25 1.08.56 2.02.8.94-.21-.02-1.02-.96-.01-.48 1 .49 1.87 1.25.87.77 0 0-.88-.77.46-.01 1.34.75 2.6 1.68 1.26.94 2.08 2.03.81 1.09.01.27-.8-.82.3.26 1.11 1.08 1.71 2.1.61 1.02 1.21 2.25.6 1.24.92 2.36.32 1.12-.16.13-.49-.98.02.36.51 1.35.71 2.69.2 1.34.24 2.46.03 1.12-.09 2.42-.13 1.29-.72 3.21-.6 1.92-1.4 3.49-.81 1.58-1.77 2.83-.96 1.24-2.88 2.72-1.92 1.48-2.95 1.85-1.04.36-2.47.76-1.44.41-3.33.72-1.89.32-3.37.41-1.48.09-2.63.15-1.15.05-2.74-.06-1.59-.1-2.8-.29-1.2-.19-3.2-.63-1.99-.45-3.63-.92-1.63-.48-3.28-.79-1.65-.31-2.76-.2-1.11.1-2.21.42-1.11.32.39-.29 1.49-.6-.12.21-1.61.8-.39.19 1.21-.61.29.13-.92.74-1.83 1.34-.92.61.15-.19t.3-.05q-.77.75-1.58 1.57-.81.82.01-.18.82-1 .24.23t-.72 2.72q-.15 1.48-.08 2.4.07.91-.19 2.16-.26 1.26-.81 2.41-.55 1.16-1.36 2.15t-1.84 1.75q-1.03.77-2.21 1.27t-2.44.7q-1.27.2-2.53.1-1.28-.11-2.49-.52-1.22-.41-2.3-1.1-1.08-.68-1.96-1.61-.89-.92-1.52-2.04-.64-1.11-.99-2.34-.36-1.23-.41-2.51l-.04-1.27Z"}));case"thin-thick-thin":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 114 113",strokeWidth:"2",fill:null!==(l=e.strokeColor)&&void 0!==l?l:"var(--icon-fill-color)",stroke:null!==(c=e.strokeColor)&&void 0!==c?c:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"m10 103.405.13-1.22q.14-1.22 1.3-3.16 1.15-1.94 2.74-3.46 1.59-1.53 3.35-2.72 1.77-1.2 4-1.95 2.23-.76 4.45-1t4.86-.4q2.64-.15 5.14-.34 2.51-.19 4.85-.94 2.35-.75 4.55-1.71 2.21-.97 4.16-2.26 1.95-1.3 4.03-2.97 2.07-1.67 3.85-3.05 1.78-1.37 3.72-2.48 1.94-1.11 3.3-2.99 1.36-1.89 2.58-3.74 1.22-1.85-.63-3.42-1.85-1.57-3.82-2.86-1.97-1.3-4.11-2.08-2.15-.78-4.21-1.6-2.06-.81-4.02-1.96-1.96-1.14-3.71-2.48-1.74-1.33-3.37-2.77-1.63-1.43-3.23-3.62-1.6-2.18-2.23-4.64-.62-2.46-.36-4.96.27-2.49 1.19-4.46.91-1.97 2.42-3.7 1.5-1.73 3.5-3.15t4.11-2.28q2.1-.86 4.33-1.44 2.24-.58 4.92-.84 2.68-.26 4.83-.19t4.69.35q2.53.28 4.75.66 2.23.38 4.48.2 2.26-.19 4.43-1.3 2.17-1.12 4.2-2.36 2.04-1.24 3.93-2.43 1.9-1.19 3.84-2.14 1.95-.95 4.04-1.78 2.09-.83 4.56-2.28 2.46-1.46 2.46-1.45h.01q.01 0-1.38 1.3-1.38 1.29-3.08 2.59-1.7 1.3-3.5 2.5t-3.42 2.65q-1.62 1.45-3.18 3-1.57 1.56-3.37 3.13-1.8 1.57-3.6 2.91-1.81 1.33-3.92 2.12t-4.24.92q-2.13.14-4.31.26-2.18.12-4.5.39t-4.56.88q-2.25.61-4.24 1.6-1.99 1-3.83 2.29-1.83 1.29.18 2.44 2.01 1.15 4.2 1.92 2.2.78 4.34 1 2.15.22 4.4.69 2.25.46 4.34 1.16 2.08.71 4.33 1.91 2.25 1.21 4.11 2.73 1.87 1.52 3.68 4.03 1.82 2.5 2.74 5 .93 2.5 1.18 5.03.26 2.53-.04 4.81t-1.4 4.85q-1.09 2.58-2.4 4.26-1.3 1.68-3.1 3.44t-4.02 3.62q-2.23 1.85-4.32 3.07-2.08 1.23-4.34 1.99-2.25.76-4.46 1.96t-4.37 2.14q-2.15.93-4.22 1.81t-4.36 1.35q-2.3.46-4.52.82-2.22.35-4.76.38-2.54.04-4.87-.28t-4.67-.67q-2.34-.35-4.72-.54-2.39-.19-4.64.37-2.25.56-4.16 1.66-1.91 1.11-3.52 2.71-1.61 1.6-2.55 2.39l-.94.78Z"}));default:return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:null!==(d=e.strokeColor)&&void 0!==d?d:"var(--icon-fill-color)",stroke:null!==(h=e.strokeColor)&&void 0!==h?h:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z"}))}},stringToSVG=e=>(e=e.replace(/stroke\s*=\s*['"][^"']*['"]/g,"").replace(/[^-]width\s*=\s*['"][^"']*['"]/g,"").replace(/[^-]height\s*=\s*['"][^"']*['"]/g,"").replace("React__namespace.createElement("div",{className:"welcome-screen-center__logo virgil welcome-screen-decor"},e," ");var top="top",bottom="bottom",right="right",left="left",auto="auto",basePlacements=[top,bottom,right,left],start="start",end="end",clippingParents="clippingParents",viewport="viewport",popper="popper",reference="reference",variationPlacements=basePlacements.reduce((function(e,t){return e.concat([t+"-"+start,t+"-"+end])}),[]),placements=[].concat(basePlacements,[auto]).reduce((function(e,t){return e.concat([t,t+"-"+start,t+"-"+end])}),[]),beforeRead="beforeRead",read="read",afterRead="afterRead",beforeMain="beforeMain",main="main",afterMain="afterMain",beforeWrite="beforeWrite",write="write",afterWrite="afterWrite",modifierPhases=[beforeRead,read,afterRead,beforeMain,main,afterMain,beforeWrite,write,afterWrite];function getNodeName(e){return e?(e.nodeName||"").toLowerCase():null}function getWindow(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function isElement(e){return e instanceof getWindow(e).Element||e instanceof Element}function isHTMLElement(e){return e instanceof getWindow(e).HTMLElement||e instanceof HTMLElement}function isShadowRoot(e){return"undefined"!=typeof ShadowRoot&&(e instanceof getWindow(e).ShadowRoot||e instanceof ShadowRoot)}function applyStyles(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var A=t.styles[e]||{},i=t.attributes[e]||{},n=t.elements[e];isHTMLElement(n)&&getNodeName(n)&&(Object.assign(n.style,A),Object.keys(i).forEach((function(e){var t=i[e];!1===t?n.removeAttribute(e):n.setAttribute(e,!0===t?"":t)})))}))}function effect$2(e){var t=e.state,A={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,A.popper),t.styles=A,t.elements.arrow&&Object.assign(t.elements.arrow.style,A.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],n=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:A[e]).reduce((function(e,t){return e[t]="",e}),{});isHTMLElement(i)&&getNodeName(i)&&(Object.assign(i.style,a),Object.keys(n).forEach((function(e){i.removeAttribute(e)})))}))}}var applyStyles$1={name:"applyStyles",enabled:!0,phase:"write",fn:applyStyles,effect:effect$2,requires:["computeStyles"]};function getBasePlacement(e){return e.split("-")[0]}var max=Math.max,min=Math.min,round=Math.round;function getUAString(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function isLayoutViewport(){return!/^((?!chrome|android).)*safari/i.test(getUAString())}function getBoundingClientRect(e,t,A){void 0===t&&(t=!1),void 0===A&&(A=!1);var i=e.getBoundingClientRect(),n=1,a=1;t&&isHTMLElement(e)&&(n=e.offsetWidth>0&&round(i.width)/e.offsetWidth||1,a=e.offsetHeight>0&&round(i.height)/e.offsetHeight||1);var r=(isElement(e)?getWindow(e):window).visualViewport,s=!isLayoutViewport()&&A,o=(i.left+(s&&r?r.offsetLeft:0))/n,l=(i.top+(s&&r?r.offsetTop:0))/a,c=i.width/n,d=i.height/a;return{width:c,height:d,top:l,right:o+c,bottom:l+d,left:o,x:o,y:l}}function getLayoutRect(e){var t=getBoundingClientRect(e),A=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-A)<=1&&(A=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:A,height:i}}function contains(e,t){var A=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(A&&isShadowRoot(A)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function getComputedStyle$1(e){return getWindow(e).getComputedStyle(e)}function isTableElement(e){return["table","td","th"].indexOf(getNodeName(e))>=0}function getDocumentElement(e){return((isElement(e)?e.ownerDocument:e.document)||window.document).documentElement}function getParentNode(e){return"html"===getNodeName(e)?e:e.assignedSlot||e.parentNode||(isShadowRoot(e)?e.host:null)||getDocumentElement(e)}function getTrueOffsetParent(e){return isHTMLElement(e)&&"fixed"!==getComputedStyle$1(e).position?e.offsetParent:null}function getContainingBlock(e){var t=/firefox/i.test(getUAString());if(/Trident/i.test(getUAString())&&isHTMLElement(e)&&"fixed"===getComputedStyle$1(e).position)return null;var A=getParentNode(e);for(isShadowRoot(A)&&(A=A.host);isHTMLElement(A)&&["html","body"].indexOf(getNodeName(A))<0;){var i=getComputedStyle$1(A);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return A;A=A.parentNode}return null}function getOffsetParent(e){for(var t=getWindow(e),A=getTrueOffsetParent(e);A&&isTableElement(A)&&"static"===getComputedStyle$1(A).position;)A=getTrueOffsetParent(A);return A&&("html"===getNodeName(A)||"body"===getNodeName(A)&&"static"===getComputedStyle$1(A).position)?t:A||getContainingBlock(e)||t}function getMainAxisFromPlacement(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function within(e,t,A){return max(e,min(t,A))}function withinMaxClamp(e,t,A){var i=within(e,t,A);return i>A?A:i}function getFreshSideObject(){return{top:0,right:0,bottom:0,left:0}}function mergePaddingObject(e){return Object.assign({},getFreshSideObject(),e)}function expandToHashMap(e,t){return t.reduce((function(t,A){return t[A]=e,t}),{})}var toPaddingObject=function(e,t){return mergePaddingObject("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:expandToHashMap(e,basePlacements))};function arrow(e){var t,A=e.state,i=e.name,n=e.options,a=A.elements.arrow,r=A.modifiersData.popperOffsets,s=getBasePlacement(A.placement),o=getMainAxisFromPlacement(s),l=[left,right].indexOf(s)>=0?"height":"width";if(a&&r){var c=toPaddingObject(n.padding,A),d=getLayoutRect(a),h="y"===o?top:left,u="y"===o?bottom:right,g=A.rects.reference[l]+A.rects.reference[o]-r[o]-A.rects.popper[l],p=r[o]-A.rects.reference[o],m=getOffsetParent(a),f=m?"y"===o?m.clientHeight||0:m.clientWidth||0:0,w=g/2-p/2,E=c[h],b=f-d[l]-c[u],B=f/2-d[l]/2+w,v=within(E,B,b),C=o;A.modifiersData[i]=((t={})[C]=v,t.centerOffset=v-B,t)}}function effect$1(e){var t=e.state,A=e.options.element,i=void 0===A?"[data-popper-arrow]":A;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&contains(t.elements.popper,i)&&(t.elements.arrow=i)}var arrow$1={name:"arrow",enabled:!0,phase:"main",fn:arrow,effect:effect$1,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function getVariation(e){return e.split("-")[1]}var unsetSides={top:"auto",right:"auto",bottom:"auto",left:"auto"};function roundOffsetsByDPR(e,t){var A=e.x,i=e.y,n=t.devicePixelRatio||1;return{x:round(A*n)/n||0,y:round(i*n)/n||0}}function mapToStyles(e){var t,A=e.popper,i=e.popperRect,n=e.placement,a=e.variation,r=e.offsets,s=e.position,o=e.gpuAcceleration,l=e.adaptive,c=e.roundOffsets,d=e.isFixed,h=r.x,u=void 0===h?0:h,g=r.y,p=void 0===g?0:g,m="function"==typeof c?c({x:u,y:p}):{x:u,y:p};u=m.x,p=m.y;var f=r.hasOwnProperty("x"),w=r.hasOwnProperty("y"),E=left,b=top,B=window;if(l){var v=getOffsetParent(A),C="clientHeight",y="clientWidth";v===getWindow(A)&&"static"!==getComputedStyle$1(v=getDocumentElement(A)).position&&"absolute"===s&&(C="scrollHeight",y="scrollWidth"),(n===top||(n===left||n===right)&&a===end)&&(b=bottom,p-=(d&&v===B&&B.visualViewport?B.visualViewport.height:v[C])-i.height,p*=o?1:-1),n!==left&&(n!==top&&n!==bottom||a!==end)||(E=right,u-=(d&&v===B&&B.visualViewport?B.visualViewport.width:v[y])-i.width,u*=o?1:-1)}var x,F=Object.assign({position:s},l&&unsetSides),S=!0===c?roundOffsetsByDPR({x:u,y:p},getWindow(A)):{x:u,y:p};return u=S.x,p=S.y,o?Object.assign({},F,((x={})[b]=w?"0":"",x[E]=f?"0":"",x.transform=(B.devicePixelRatio||1)<=1?"translate("+u+"px, "+p+"px)":"translate3d("+u+"px, "+p+"px, 0)",x)):Object.assign({},F,((t={})[b]=w?p+"px":"",t[E]=f?u+"px":"",t.transform="",t))}function computeStyles(e){var t=e.state,A=e.options,i=A.gpuAcceleration,n=void 0===i||i,a=A.adaptive,r=void 0===a||a,s=A.roundOffsets,o=void 0===s||s,l={placement:getBasePlacement(t.placement),variation:getVariation(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:n,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,mapToStyles(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:r,roundOffsets:o})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,mapToStyles(Object.assign({},l,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:o})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var computeStyles$1={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:computeStyles,data:{}},passive={passive:!0};function effect(e){var t=e.state,A=e.instance,i=e.options,n=i.scroll,a=void 0===n||n,r=i.resize,s=void 0===r||r,o=getWindow(t.elements.popper),l=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&l.forEach((function(e){e.addEventListener("scroll",A.update,passive)})),s&&o.addEventListener("resize",A.update,passive),function(){a&&l.forEach((function(e){e.removeEventListener("scroll",A.update,passive)})),s&&o.removeEventListener("resize",A.update,passive)}}var eventListeners={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:effect,data:{}},hash$1={left:"right",right:"left",bottom:"top",top:"bottom"};function getOppositePlacement(e){return e.replace(/left|right|bottom|top/g,(function(e){return hash$1[e]}))}var hash={start:"end",end:"start"};function getOppositeVariationPlacement(e){return e.replace(/start|end/g,(function(e){return hash[e]}))}function getWindowScroll(e){var t=getWindow(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function getWindowScrollBarX(e){return getBoundingClientRect(getDocumentElement(e)).left+getWindowScroll(e).scrollLeft}function getViewportRect(e,t){var A=getWindow(e),i=getDocumentElement(e),n=A.visualViewport,a=i.clientWidth,r=i.clientHeight,s=0,o=0;if(n){a=n.width,r=n.height;var l=isLayoutViewport();(l||!l&&"fixed"===t)&&(s=n.offsetLeft,o=n.offsetTop)}return{width:a,height:r,x:s+getWindowScrollBarX(e),y:o}}function getDocumentRect(e){var t,A=getDocumentElement(e),i=getWindowScroll(e),n=null==(t=e.ownerDocument)?void 0:t.body,a=max(A.scrollWidth,A.clientWidth,n?n.scrollWidth:0,n?n.clientWidth:0),r=max(A.scrollHeight,A.clientHeight,n?n.scrollHeight:0,n?n.clientHeight:0),s=-i.scrollLeft+getWindowScrollBarX(e),o=-i.scrollTop;return"rtl"===getComputedStyle$1(n||A).direction&&(s+=max(A.clientWidth,n?n.clientWidth:0)-a),{width:a,height:r,x:s,y:o}}function isScrollParent(e){var t=getComputedStyle$1(e),A=t.overflow,i=t.overflowX,n=t.overflowY;return/auto|scroll|overlay|hidden/.test(A+n+i)}function getScrollParent(e){return["html","body","#document"].indexOf(getNodeName(e))>=0?e.ownerDocument.body:isHTMLElement(e)&&isScrollParent(e)?e:getScrollParent(getParentNode(e))}function listScrollParents(e,t){var A;void 0===t&&(t=[]);var i=getScrollParent(e),n=i===(null==(A=e.ownerDocument)?void 0:A.body),a=getWindow(i),r=n?[a].concat(a.visualViewport||[],isScrollParent(i)?i:[]):i,s=t.concat(r);return n?s:s.concat(listScrollParents(getParentNode(r)))}function rectToClientRect(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function getInnerBoundingClientRect(e,t){var A=getBoundingClientRect(e,!1,"fixed"===t);return A.top=A.top+e.clientTop,A.left=A.left+e.clientLeft,A.bottom=A.top+e.clientHeight,A.right=A.left+e.clientWidth,A.width=e.clientWidth,A.height=e.clientHeight,A.x=A.left,A.y=A.top,A}function getClientRectFromMixedType(e,t,A){return t===viewport?rectToClientRect(getViewportRect(e,A)):isElement(t)?getInnerBoundingClientRect(t,A):rectToClientRect(getDocumentRect(getDocumentElement(e)))}function getClippingParents(e){var t=listScrollParents(getParentNode(e)),A=["absolute","fixed"].indexOf(getComputedStyle$1(e).position)>=0&&isHTMLElement(e)?getOffsetParent(e):e;return isElement(A)?t.filter((function(e){return isElement(e)&&contains(e,A)&&"body"!==getNodeName(e)})):[]}function getClippingRect(e,t,A,i){var n="clippingParents"===t?getClippingParents(e):[].concat(t),a=[].concat(n,[A]),r=a[0],s=a.reduce((function(t,A){var n=getClientRectFromMixedType(e,A,i);return t.top=max(n.top,t.top),t.right=min(n.right,t.right),t.bottom=min(n.bottom,t.bottom),t.left=max(n.left,t.left),t}),getClientRectFromMixedType(e,r,i));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function computeOffsets(e){var t,A=e.reference,i=e.element,n=e.placement,a=n?getBasePlacement(n):null,r=n?getVariation(n):null,s=A.x+A.width/2-i.width/2,o=A.y+A.height/2-i.height/2;switch(a){case top:t={x:s,y:A.y-i.height};break;case bottom:t={x:s,y:A.y+A.height};break;case right:t={x:A.x+A.width,y:o};break;case left:t={x:A.x-i.width,y:o};break;default:t={x:A.x,y:A.y}}var l=a?getMainAxisFromPlacement(a):null;if(null!=l){var c="y"===l?"height":"width";switch(r){case start:t[l]=t[l]-(A[c]/2-i[c]/2);break;case end:t[l]=t[l]+(A[c]/2-i[c]/2)}}return t}function detectOverflow(e,t){void 0===t&&(t={});var A=t,i=A.placement,n=void 0===i?e.placement:i,a=A.strategy,r=void 0===a?e.strategy:a,s=A.boundary,o=void 0===s?clippingParents:s,l=A.rootBoundary,c=void 0===l?viewport:l,d=A.elementContext,h=void 0===d?popper:d,u=A.altBoundary,g=void 0!==u&&u,p=A.padding,m=void 0===p?0:p,f=mergePaddingObject("number"!=typeof m?m:expandToHashMap(m,basePlacements)),w=h===popper?reference:popper,E=e.rects.popper,b=e.elements[g?w:h],B=getClippingRect(isElement(b)?b:b.contextElement||getDocumentElement(e.elements.popper),o,c,r),v=getBoundingClientRect(e.elements.reference),C=computeOffsets({reference:v,element:E,strategy:"absolute",placement:n}),y=rectToClientRect(Object.assign({},E,C)),x=h===popper?y:v,F={top:B.top-x.top+f.top,bottom:x.bottom-B.bottom+f.bottom,left:B.left-x.left+f.left,right:x.right-B.right+f.right},S=e.modifiersData.offset;if(h===popper&&S){var T=S[n];Object.keys(F).forEach((function(e){var t=[right,bottom].indexOf(e)>=0?1:-1,A=[top,bottom].indexOf(e)>=0?"y":"x";F[e]+=T[A]*t}))}return F}function computeAutoPlacement(e,t){void 0===t&&(t={});var A=t,i=A.placement,n=A.boundary,a=A.rootBoundary,r=A.padding,s=A.flipVariations,o=A.allowedAutoPlacements,l=void 0===o?placements:o,c=getVariation(i),d=c?s?variationPlacements:variationPlacements.filter((function(e){return getVariation(e)===c})):basePlacements,h=d.filter((function(e){return l.indexOf(e)>=0}));0===h.length&&(h=d);var u=h.reduce((function(t,A){return t[A]=detectOverflow(e,{placement:A,boundary:n,rootBoundary:a,padding:r})[getBasePlacement(A)],t}),{});return Object.keys(u).sort((function(e,t){return u[e]-u[t]}))}function getExpandedFallbackPlacements(e){if(getBasePlacement(e)===auto)return[];var t=getOppositePlacement(e);return[getOppositeVariationPlacement(e),t,getOppositeVariationPlacement(t)]}function flip(e){var t=e.state,A=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var n=A.mainAxis,a=void 0===n||n,r=A.altAxis,s=void 0===r||r,o=A.fallbackPlacements,l=A.padding,c=A.boundary,d=A.rootBoundary,h=A.altBoundary,u=A.flipVariations,g=void 0===u||u,p=A.allowedAutoPlacements,m=t.options.placement,f=getBasePlacement(m),w=o||(f!==m&&g?getExpandedFallbackPlacements(m):[getOppositePlacement(m)]),E=[m].concat(w).reduce((function(e,A){return e.concat(getBasePlacement(A)===auto?computeAutoPlacement(t,{placement:A,boundary:c,rootBoundary:d,padding:l,flipVariations:g,allowedAutoPlacements:p}):A)}),[]),b=t.rects.reference,B=t.rects.popper,v=new Map,C=!0,y=E[0],x=0;x=0,M=I?"width":"height",k=detectOverflow(t,{placement:F,boundary:c,rootBoundary:d,altBoundary:h,padding:l}),U=I?T?right:left:T?bottom:top;b[M]>B[M]&&(U=getOppositePlacement(U));var O=getOppositePlacement(U),L=[];if(a&&L.push(k[S]<=0),s&&L.push(k[U]<=0,k[O]<=0),L.every((function(e){return e}))){y=F,C=!1;break}v.set(F,L)}if(C)for(var Q=function(e){var t=E.find((function(t){var A=v.get(t);if(A)return A.slice(0,e).every((function(e){return e}))}));if(t)return y=t,"break"},N=g?3:1;N>0&&"break"!==Q(N);N--);t.placement!==y&&(t.modifiersData[i]._skip=!0,t.placement=y,t.reset=!0)}}var flip$1={name:"flip",enabled:!0,phase:"main",fn:flip,requiresIfExists:["offset"],data:{_skip:!1}};function getSideOffsets(e,t,A){return void 0===A&&(A={x:0,y:0}),{top:e.top-t.height-A.y,right:e.right-t.width+A.x,bottom:e.bottom-t.height+A.y,left:e.left-t.width-A.x}}function isAnySideFullyClipped(e){return[top,right,bottom,left].some((function(t){return e[t]>=0}))}function hide(e){var t=e.state,A=e.name,i=t.rects.reference,n=t.rects.popper,a=t.modifiersData.preventOverflow,r=detectOverflow(t,{elementContext:"reference"}),s=detectOverflow(t,{altBoundary:!0}),o=getSideOffsets(r,i),l=getSideOffsets(s,n,a),c=isAnySideFullyClipped(o),d=isAnySideFullyClipped(l);t.modifiersData[A]={referenceClippingOffsets:o,popperEscapeOffsets:l,isReferenceHidden:c,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":d})}var hide$1={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:hide};function distanceAndSkiddingToXY(e,t,A){var i=getBasePlacement(e),n=[left,top].indexOf(i)>=0?-1:1,a="function"==typeof A?A(Object.assign({},t,{placement:e})):A,r=a[0],s=a[1];return r=r||0,s=(s||0)*n,[left,right].indexOf(i)>=0?{x:s,y:r}:{x:r,y:s}}function offset(e){var t=e.state,A=e.options,i=e.name,n=A.offset,a=void 0===n?[0,0]:n,r=placements.reduce((function(e,A){return e[A]=distanceAndSkiddingToXY(A,t.rects,a),e}),{}),s=r[t.placement],o=s.x,l=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=o,t.modifiersData.popperOffsets.y+=l),t.modifiersData[i]=r}var offset$1={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:offset};function popperOffsets(e){var t=e.state,A=e.name;t.modifiersData[A]=computeOffsets({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var popperOffsets$1={name:"popperOffsets",enabled:!0,phase:"read",fn:popperOffsets,data:{}};function getAltAxis(e){return"x"===e?"y":"x"}function preventOverflow(e){var t=e.state,A=e.options,i=e.name,n=A.mainAxis,a=void 0===n||n,r=A.altAxis,s=void 0!==r&&r,o=A.boundary,l=A.rootBoundary,c=A.altBoundary,d=A.padding,h=A.tether,u=void 0===h||h,g=A.tetherOffset,p=void 0===g?0:g,m=detectOverflow(t,{boundary:o,rootBoundary:l,padding:d,altBoundary:c}),f=getBasePlacement(t.placement),w=getVariation(t.placement),E=!w,b=getMainAxisFromPlacement(f),B=getAltAxis(b),v=t.modifiersData.popperOffsets,C=t.rects.reference,y=t.rects.popper,x="function"==typeof p?p(Object.assign({},t.rects,{placement:t.placement})):p,F="number"==typeof x?{mainAxis:x,altAxis:x}:Object.assign({mainAxis:0,altAxis:0},x),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,T={x:0,y:0};if(v){if(a){var I,M="y"===b?top:left,k="y"===b?bottom:right,U="y"===b?"height":"width",O=v[b],L=O+m[M],Q=O-m[k],N=u?-y[U]/2:0,D=w===start?C[U]:y[U],R=w===start?-y[U]:-C[U],H=t.elements.arrow,P=u&&H?getLayoutRect(H):{width:0,height:0},V=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:getFreshSideObject(),K=V[M],G=V[k],W=within(0,C[U],P[U]),z=E?C[U]/2-N-W-K-F.mainAxis:D-W-K-F.mainAxis,X=E?-C[U]/2+N+W+G+F.mainAxis:R+W+G+F.mainAxis,_=t.elements.arrow&&getOffsetParent(t.elements.arrow),Y=_?"y"===b?_.clientTop||0:_.clientLeft||0:0,j=null!=(I=null==S?void 0:S[b])?I:0,J=O+X-j,Z=within(u?min(L,O+z-j-Y):L,O,u?max(Q,J):Q);v[b]=Z,T[b]=Z-O}if(s){var q,$="x"===b?top:left,ee="x"===b?bottom:right,te=v[B],Ae="y"===B?"height":"width",ie=te+m[$],ne=te-m[ee],ae=-1!==[top,left].indexOf(f),re=null!=(q=null==S?void 0:S[B])?q:0,se=ae?ie:te-C[Ae]-y[Ae]-re+F.altAxis,oe=ae?te+C[Ae]+y[Ae]-re-F.altAxis:ne,le=u&&ae?withinMaxClamp(se,te,oe):within(u?se:ie,te,u?oe:ne);v[B]=le,T[B]=le-te}t.modifiersData[i]=T}}var preventOverflow$1={name:"preventOverflow",enabled:!0,phase:"main",fn:preventOverflow,requiresIfExists:["offset"]};function getHTMLElementScroll(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function getNodeScroll(e){return e!==getWindow(e)&&isHTMLElement(e)?getHTMLElementScroll(e):getWindowScroll(e)}function isElementScaled(e){var t=e.getBoundingClientRect(),A=round(t.width)/e.offsetWidth||1,i=round(t.height)/e.offsetHeight||1;return 1!==A||1!==i}function getCompositeRect(e,t,A){void 0===A&&(A=!1);var i=isHTMLElement(t),n=isHTMLElement(t)&&isElementScaled(t),a=getDocumentElement(t),r=getBoundingClientRect(e,n,A),s={scrollLeft:0,scrollTop:0},o={x:0,y:0};return(i||!i&&!A)&&(("body"!==getNodeName(t)||isScrollParent(a))&&(s=getNodeScroll(t)),isHTMLElement(t)?((o=getBoundingClientRect(t,!0)).x+=t.clientLeft,o.y+=t.clientTop):a&&(o.x=getWindowScrollBarX(a))),{x:r.left+s.scrollLeft-o.x,y:r.top+s.scrollTop-o.y,width:r.width,height:r.height}}function order(e){var t=new Map,A=new Set,i=[];function n(e){A.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!A.has(e)){var i=t.get(e);i&&n(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){A.has(e.name)||n(e)})),i}function orderModifiers(e){var t=order(e);return modifierPhases.reduce((function(e,A){return e.concat(t.filter((function(e){return e.phase===A})))}),[])}function debounce(e){var t;return function(){return t||(t=new Promise((function(A){Promise.resolve().then((function(){t=void 0,A(e())}))}))),t}}function mergeByName(e){var t=e.reduce((function(e,t){var A=e[t.name];return e[t.name]=A?Object.assign({},A,t,{options:Object.assign({},A.options,t.options),data:Object.assign({},A.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}var DEFAULT_OPTIONS={placement:"bottom",modifiers:[],strategy:"absolute"};function areValidElements(){for(var e=arguments.length,t=new Array(e),A=0;A(this.setSelectedItem(this.selectedItem-1,!0),!1))),A.register([],"ArrowDown",(()=>(this.setSelectedItem(this.selectedItem+1,!0),!1))),A.register([],"Enter",(e=>(this.useSelectedItem(e),!1))),A.register([],"Tab",(e=>(this.chooseSuggestion(e),!1)))}chooseSuggestion(e){if(!this.items||!this.items.length)return;const t=this.items[this.selectedItem];t&&this.owner.onChooseSuggestion(t,e)}onSuggestionClick(e,t){if(e.preventDefault(),!this.suggestions||!this.suggestions.length)return;const A=this.suggestions.indexOf(t);this.setSelectedItem(A,!1),this.useSelectedItem(e)}onSuggestionMouseover(e,t){if(!this.suggestions||!this.suggestions.length)return;const A=this.suggestions.indexOf(t);this.setSelectedItem(A,!1)}empty(){this.containerEl.empty()}setSuggestions(e){this.containerEl.empty();const t=[];e.forEach((e=>{const A=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(e,A),t.push(A)})),this.items=e,this.suggestions=t,this.setSelectedItem(0,!1)}useSelectedItem(e){if(!this.items||!this.items.length)return;const t=this.items[this.selectedItem];t&&this.owner.selectSuggestion(t,e)}wrap(e,t){return(e%t+t)%t}setSelectedItem(e,t){const A=this.wrap(e,this.suggestions.length),i=this.suggestions[this.selectedItem],n=this.suggestions[A];i&&i.removeClass("is-selected"),n&&n.addClass("is-selected"),this.selectedItem=A,t&&n.scrollIntoView(!1)}}class SuggestionModal extends obsidian_module.FuzzySuggestModal{constructor(e,t,A){super(e),this.items=[],this.scope=new obsidian_module.Scope(this.app.scope),this.emptyStateText="No match found",this.limit=100,this.inputEl=t,this.items=A,this.suggestEl=createDiv("suggestion-container"),this.contentEl=this.suggestEl.createDiv("suggestion"),this.suggester=new Suggester(this,this.contentEl,this.scope),this.scope.register([],"Escape",this.onEscape.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onFocus.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",(e=>{e.preventDefault()}))}empty(){this.suggester.empty()}onInputChanged(){if(this.shouldNotOpen)return;const e=this.modifyInput(this.inputEl.value),t=this.getSuggestions(e);t.length>0?this.suggester.setSuggestions(t.slice(0,this.limit)):this.onNoSuggestion(),this.open()}onFocus(){this.shouldNotOpen=!1,this.onInputChanged()}modifyInput(e){return e}onNoSuggestion(){this.empty(),this.renderSuggestion(null,this.contentEl.createDiv("suggestion-item"))}open(){this.app.keymap.pushScope(this.scope),this.inputEl.ownerDocument.body.appendChild(this.suggestEl),this.popper=createPopper(this.inputEl,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,10]}},{name:"flip",options:{fallbackPlacements:["top"]}}]})}onEscape(){this.close(),this.shouldNotOpen=!0}close(){this.app.keymap.popScope(this.scope),this.suggester.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}createPrompt(e){this.promptEl||(this.promptEl=this.suggestEl.createDiv("prompt-instructions"));const t=this.promptEl.createDiv("prompt-instruction");for(const A of e)t.appendChild(A)}}class FileSuggestionModal extends SuggestionModal{constructor(e,t,A){super(e,t.inputEl,A),this.limit=20,this.files=[...A],this.text=t,this.inputEl.addEventListener("input",(()=>this.getFile()))}getFile(){const e=this.inputEl.value,t=this.app.vault.getAbstractFileByPath(e);t!==this.file&&t instanceof obsidian_module.TFile&&(this.file=t,this.onInputChanged())}getSelectedItem(){return this.file}getItemText(e){return e.path}onChooseItem(e){this.file=e,this.text.setValue(e.path),this.text.onChanged()}selectSuggestion({item:e}){this.file=e,this.text.setValue(e.path),this.onClose(),this.text.onChanged(),this.close()}renderSuggestion(e,t){const{item:A,match:i}=e||{},n=t.createDiv({cls:"suggestion-content"});if(!A)return n.setText(this.emptyStateText),void n.parentElement.addClass("is-selected");const a=A.path.length-A.name.length,r=i.matches.map((e=>createSpan("suggestion-highlight")));for(let e=a;et[0]===e));if(t){const a=r[i.matches.indexOf(t)];n.appendChild(a),a.appendText(A.path.substring(t[0],t[1])),e+=t[1]-t[0]-1}else n.appendText(A.path[e])}t.createDiv({cls:"suggestion-note",text:A.path})}getItems(){return this.files}}const insertImageToView=async(e,t,A,i)=>{e.clear(),e.style.strokeColor="transparent",e.style.backgroundColor="transparent";const n=e.getExcalidrawAPI();e.canvas.theme=n.getAppState().theme;const a=await e.addImage(t.x,t.y,A,i);return await e.addElementsToView(!1,!0,!0),a},insertEmbeddableToView=async(e,t,A,i)=>{if(e.clear(),e.style.strokeColor="transparent",e.style.backgroundColor="transparent",A&&IMAGE_TYPES.contains(A.extension)||e.isExcalidrawFile(A))return await insertImageToView(e,t,A);{const n=e.addEmbeddable(t.x,t.y,500,500,i,A);return await e.addElementsToView(!1,!0,!0),n}},getEA=e=>{try{return window.ExcalidrawAutomate.getAPI(e)}catch(e){return console.log({message:"Excalidraw not available",fn:getEA}),null}};class InsertPDFModal extends obsidian_module.Modal{constructor(e,t){super(app),this.plugin=e,this.view=t,this.borderBox=!0,this.gapSize=20,this.numColumns=1,this.lockAfterImport=!0,this.pagesToImport=[],this.pageDimensions={width:0,height:0},this.importScale=.3,this.dirty=!1,this.setImageSizeMessage=()=>this.imageSizeMessage.innerText=`${Math.round(this.pageDimensions.width*this.importScale)} x ${Math.round(this.pageDimensions.height*this.importScale)}`}open(e){e&&"pdf"===e.extension.toLowerCase()&&(this.pdfFile=e),super.open()}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Import PDF"),this.createForm()}async onClose(){this.dirty&&(this.plugin.settings.pdfImportScale=this.importScale,this.plugin.settings.pdfBorderBox=this.borderBox,this.plugin.settings.pdfGapSize=this.gapSize,this.plugin.settings.pdfNumColumns=this.numColumns,this.plugin.settings.pdfLockAfterImport=this.lockAfterImport,this.plugin.saveSettings()),this.pdfDoc&&(this.pdfDoc.destroy(),this.pdfDoc=null)}async getPageDimensions(e){try{const t=this.plugin.settings.pdfScale,A=createEl("canvas"),i=(await e.getPage(1)).getViewport({scale:t});this.pageDimensions.height=i.height,this.pageDimensions.width=i.width,A.width=0,A.height=0,this.setImageSizeMessage()}catch(e){console.log(e)}}createPageListFromString(e){const t=e=>e.replace(/\D/g,"");return this.pagesToImport=[],e.split(",").forEach((e=>{const A=e.split("-");if(1===A.length){const e=parseInt(t(A[0]));!isNaN(e)&&this.pagesToImport.push(e)}else if(2===A.length){const e=parseInt(t(A[0])),i=parseInt(t(A[1]));if(isNaN(e)||isNaN(i))return;for(let t=e;t<=i;t++)this.pagesToImport.push(t)}})),this.pagesToImport}async createForm(){await this.plugin.loadSettings(),this.borderBox=this.plugin.settings.pdfBorderBox,this.gapSize=this.plugin.settings.pdfGapSize,this.numColumns=this.plugin.settings.pdfNumColumns,this.lockAfterImport=this.plugin.settings.pdfLockAfterImport,this.importScale=this.plugin.settings.pdfImportScale;const e=this.contentEl;let t,A,i,n;const a=()=>this.pdfDoc?0===this.pagesToImport.length?(i.buttonEl.style.display="none",void(n.innerText="Please select pages to import")):Math.max(...this.pagesToImport)<=this.pdfDoc.numPages?(i.buttonEl.style.display="block",void(n.innerText="")):(i.buttonEl.style.display="none",void(n.innerText=`The selected document has ${this.pdfDoc.numPages} pages. Please select pages between 1 and ${this.pdfDoc.numPages}`)):(n.innerText="Please select a PDF file",void(i.buttonEl.style.display="none")),r=()=>{0!==A?t.innerHTML=`There are ${A} pages in the selected document.`:t.innerText="Please select a PDF file"},s=async e=>{this.pdfDoc&&await this.pdfDoc.destroy(),this.pdfDoc=null,e&&(this.pdfDoc=await getPDFDoc(e),this.pdfFile=e,this.pdfDoc?(A=this.pdfDoc.numPages,a(),r(),this.getPageDimensions(this.pdfDoc)):i.setDisabled(!0))},o=new obsidian_module.TextComponent(e);o.inputEl.style.width="100%";const l=new FileSuggestionModal(this.app,o,app.vault.getFiles().filter((e=>"pdf"===e.extension.toLowerCase())));let c,d,h,u;o.onChange((async()=>{const e=l.getSelectedItem();await s(e)})),t=e.createEl("p",{text:""}),r(),new obsidian_module.Setting(e).setName("Pages to import").addText((e=>{d=e,e.setPlaceholder("e.g.: 1,3-5,7,9-10").onChange((e=>{const t=this.createPageListFromString(e);t.length>15?c.innerHTML=`You are importing ${t.length} pages. ⚠️ This may take a while. ⚠️`:c.innerHTML=`You are importing ${t.length} pages.`,a()})),e.inputEl.style.width="100%"})),c=e.createEl("p",{text:""}),new obsidian_module.Setting(e).setName("Add border box").addToggle((e=>e.setValue(this.borderBox).onChange((e=>{this.borderBox=e,this.dirty=!0})))),new obsidian_module.Setting(e).setName("Lock pages on canvas after import").addToggle((e=>e.setValue(this.lockAfterImport).onChange((e=>{this.lockAfterImport=e,this.dirty=!0})))),new obsidian_module.Setting(e).setName("Number of columns").addSlider((e=>e.setLimits(1,100,1).setValue(this.numColumns).onChange((e=>{this.numColumns=e,h.innerText=` ${e.toString()}`,this.dirty=!0})))).settingEl.createDiv("",(e=>{h=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.numColumns.toString()}`})),new obsidian_module.Setting(e).setName("Size of gap between pages").addSlider((e=>e.setLimits(10,200,10).setValue(this.gapSize).onChange((e=>{this.gapSize=e,u.innerText=` ${e.toString()}`,this.dirty=!0})))).settingEl.createDiv("",(e=>{u=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.gapSize.toString()}`}));const g=new obsidian_module.Setting(e).setName("Imported page size").setDesc(`${this.pageDimensions.width*this.importScale} x ${this.pageDimensions.height*this.importScale}`).addSlider((e=>e.setLimits(.1,1.5,.1).setValue(this.importScale).onChange((e=>{this.importScale=e,this.dirty=!0,this.setImageSizeMessage()}))));this.imageSizeMessage=g.descEl;const p=new obsidian_module.Setting(e).setDesc("Select a document first").addButton((e=>{e.setButtonText("Import PDF").setCta().onClick((async()=>{const e=getEA(this.view);let t=0,A=0;const i=Math.round(this.pageDimensions.width*this.importScale),a=Math.round(this.pageDimensions.height*this.importScale);for(let r=0;re.id)),o=e.getViewElements().filter((e=>s.includes(e.id)));r.selectElements(o),r.zoomToFit(o),this.close()})),i=e,i.buttonEl.style.display="none"}));n=p.descEl,n.addClass("mod-warning"),this.pdfFile?(o.setValue(this.pdfFile.path),await s(this.pdfFile),l.close(),d.inputEl.focus()):o.inputEl.focus(),a()}}class UniversalInsertFileModal extends obsidian_module.Modal{constructor(e,t){super(app),this.plugin=e,this.view=t,this.center={x:0,y:0};const A=t.excalidrawAPI.getAppState(),i=t.containerEl.getBoundingClientRect(),n=window.innerWidth||document.documentElement.clientWidth,a=window.innerHeight||document.documentElement.clientHeight,r=sceneCoordsToViewportCoords({sceneX:t.currentPosition.x,sceneY:t.currentPosition.y},A);if(r.x>=i.left+150&&r.y<=i.right-150&&r.y>=i.top+150&&r.y<=i.bottom-150){const e=t.currentPosition.x-250,A=t.currentPosition.y-250;this.center={x:e,y:A}}else{const e=i.left+i.width/2,t=i.top+i.height/2,r=Math.max(0,Math.min(n,e)),s=Math.max(0,Math.min(a,t));this.center=viewportCoordsToSceneCoords({clientX:r,clientY:s},A),this.center={x:this.center.x-250,y:this.center.y-250}}}open(e,t){this.file=e,this.center=null!=t?t:this.center,super.open()}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Insert File From Vault"),this.createForm()}async createForm(){const e=this.contentEl;let t,A,i,n,a,r,s=!1,o=this.file;const l=async()=>{const e=this.plugin.ea,s=o&&"md"===o.extension&&!e.isExcalidrawFile(o),l=o&&(IMAGE_TYPES.contains(o.extension)||e.isExcalidrawFile(o)),c=o&&!l,d=o&&"pdf"===o.extension,h=o&&e.isExcalidrawFile(o);if(s){for(A.settingEl.style.display="",t.selectEl.style.display="block";t.selectEl.options.length>0;)t.selectEl.remove(0);t.addOption("",""),(await app.metadataCache.blockCache.getForFile({isCancelled:()=>!1},o)).blocks.filter((e=>{var t;return e.display&&"heading"===(null===(t=e.node)||void 0===t?void 0:t.type)})).forEach((e=>{t.addOption(`#${cleanSectionHeading(e.display)}`,e.display)}))}else A.settingEl.style.display="none",t.selectEl.style.display="none";r.settingEl.style.display=h?"":"none",l||"md"===(null==o?void 0:o.extension)?n.buttonEl.style.display="block":n.buttonEl.style.display="none",i.buttonEl.style.display=c?"block":"none",a.buttonEl.style.display=d?"block":"none"},c=new obsidian_module.TextComponent(e);c.inputEl.style.width="100%";const d=new FileSuggestionModal(this.app,c,app.vault.getFiles().filter((e=>e!==this.view.file)));c.onChange((()=>{o=d.getSelectedItem(),l()})),A=new obsidian_module.Setting(e).setName("Select section heading").addDropdown((e=>{t=e,t.selectEl.style.width="100%"})),r=new obsidian_module.Setting(e).setName("Anchor to 100% of original size").setDesc("This is a pro feature, use it only if you understand how it works. If enabled even if you change the size of the imported image in Excalidraw, the next time you open the drawing this image will pop back to 100% size. This is useful when embedding an atomic Excalidraw idea into another note and preserving relative sizing of text and icons.").addToggle((e=>{e.setValue(s).onChange((e=>{s=e}))})),new obsidian_module.Setting(e).addButton((e=>{e.setButtonText("as iFrame").onClick((async()=>{const e=app.metadataCache.fileToLinktext(o,this.view.file.path,"md"===o.extension),A=getEA(this.view);A.selectElementsInView([await insertEmbeddableToView(A,this.center,void 0,`[[${e}${t.selectEl.value}]]`)]),this.close()})),i=e})).addButton((e=>{e.setButtonText("as Pdf").onClick((()=>{new InsertPDFModal(this.plugin,this.view).open(o),this.close()})),a=e})).addButton((e=>{e.setButtonText("as Image").onClick((async()=>{const e=getEA(this.view),A=o&&"md"===o.extension&&!e.isExcalidrawFile(o);e.selectElementsInView([await insertImageToView(e,this.center,A&&t.selectEl.value&&""!==t.selectEl.value?`${o.path}${t.selectEl.value}`:o,e.isExcalidrawFile(o)?!s:void 0)]),this.close()})),n=e})),this.view.ownerWindow.addEventListener("keydown",this.onKeyDown=e=>{const t=e=>"none"!==e.buttonEl.style.display;switch(e.key){case"Escape":return void this.close();case"Enter":return!t(i)||t(n)||t(a)?!t(n)||t(i)||t(a)?!t(a)||t(i)||t(n)?void 0:void a.buttonEl.click():void n.buttonEl.click():void i.buttonEl.click();case"i":return void(t(n)&&n.buttonEl.click());case"p":return void(t(a)&&a.buttonEl.click());case"f":return void(t(i)&&i.buttonEl.click())}}),c.inputEl.focus(),o&&(c.setValue(o.path),d.close()),l()}onClose(){this.view.ownerWindow.removeEventListener("keydown",this.onKeyDown)}}const setPen=(e,t)=>{const A=t.getAppState();t.updateScene({appState:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({currentStrokeOptions:e.penOptions},e.strokeWidth&&0!==e.strokeWidth?{currentItemStrokeWidth:e.strokeWidth}:null),e.backgroundColor?{currentItemBackgroundColor:e.backgroundColor}:null),e.strokeColor?{currentItemStrokeColor:e.strokeColor}:null),""===e.fillStyle?null:{currentItemFillStyle:e.fillStyle}),e.roughness?null:{currentItemRoughness:e.roughness}),e.freedrawOnly&&!A.resetCustomPen?{resetCustomPen:{currentItemStrokeWidth:A.currentItemStrokeWidth,currentItemBackgroundColor:A.currentItemBackgroundColor,currentItemStrokeColor:A.currentItemStrokeColor,currentItemFillStyle:A.currentItemFillStyle,currentItemRoughness:A.currentItemRoughness}}:null)})},resetStrokeOptions=(e,t,A)=>{t.updateScene({appState:Object.assign(Object.assign(Object.assign({},e?{currentItemStrokeWidth:e.currentItemStrokeWidth,currentItemBackgroundColor:e.currentItemBackgroundColor,currentItemStrokeColor:e.currentItemStrokeColor,currentItemFillStyle:e.currentItemFillStyle,currentItemRoughness:e.currentItemRoughness}:null),{resetCustomPen:null}),A?{currentStrokeOptions:null}:null)})};class ObsidianMenu{constructor(e,t,A){this.plugin=e,this.toolsRef=t,this.view=A,this.renderCustomPens=(e,t)=>{var A;return null===(A=t.customPens)||void 0===A?void 0:A.map(((A,i)=>{const n=this.plugin.settings.customPens[i];return t.resetCustomPen&&"freedraw"!==t.activeTool.type&&t.currentStrokeOptions===n.penOptions&&setTimeout((()=>resetStrokeOptions(t.resetCustomPen,this.view.excalidrawAPI,!1))),!t.resetCustomPen&&"freedraw"===t.activeTool.type&&t.currentStrokeOptions===n.penOptions&&n.freedrawOnly&&setTimeout((()=>setPen(this.activePen,this.view.excalidrawAPI))),this.activePen&&t.resetCustomPen&&"freedraw"===t.activeTool.type&&t.currentStrokeOptions===n.penOptions&&n.freedrawOnly&&(this.activePen.strokeWidth=t.currentItemStrokeWidth,this.activePen.backgroundColor=t.currentItemBackgroundColor,this.activePen.strokeColor=t.currentItemStrokeColor,this.activePen.fillStyle=t.currentItemFillStyle,this.activePen.roughness=t.currentItemRoughness),React__namespace.createElement("label",{key:i,className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{const e=Date.now();if(e-this.clickTimestamp[i]<500){const e=new PenSettingsModal(this.plugin,this.view,i);return void(async()=>{await this.plugin.loadSettings(),e.open()})()}this.clickTimestamp[i]=e;const t=this.view.excalidrawAPI,A=t.getAppState();A.currentStrokeOptions!==n.penOptions||"freedraw"!==A.activeTool.type?(this.activePen=Object.assign({},n),setPen(n,t),t.setActiveTool({type:"freedraw"})):resetStrokeOptions(A.resetCustomPen,t,!0)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":n.type,style:Object.assign({},"freedraw"===t.activeTool.type&&t.currentStrokeOptions===n.penOptions?{background:"var(--color-primary)"}:{})},penIcon(n)))}))},this.longpressTimeout={},this.renderPinnedScriptButtons=(e,t)=>{var A;let i=0;return null===(A=null==t?void 0:t.pinnedScripts)||void 0===A?void 0:A.map(((t,A)=>{var n;const a=this.plugin.scriptEngine.scriptIconMap[t],r=null!==(n=null==a?void 0:a.name)&&void 0!==n?n:"",s=(null==a?void 0:a.svgString)?stringToSVG(a.svgString):ICONS.cog;return this.longpressTimeout[A]||(this.longpressTimeout[A]=0),React__namespace.createElement("label",{key:A,className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onPointerUp:()=>{this.longpressTimeout[A]&&(window.clearTimeout(this.longpressTimeout[A]),this.longpressTimeout[A]=0,(async()=>{const e=app.vault.getAbstractFileByPath(t);e&&e instanceof obsidian_module.TFile&&this.plugin.scriptEngine.executeScript(this.view,await app.vault.read(e),this.plugin.scriptEngine.getScriptName(e),e)})())},onPointerDown:()=>{const e=Date.now();this.longpressTimeout[A]>0&&(window.clearTimeout(this.longpressTimeout[A]),this.longpressTimeout[A]=0),e-i>=500&&(this.longpressTimeout[A]=window.setTimeout((()=>{this.longpressTimeout[A]=0,(async()=>{var e;await this.plugin.loadSettings();const A=this.plugin.settings.pinnedScripts.indexOf(t);A>-1&&(this.plugin.settings.pinnedScripts.splice(A,1),null===(e=this.view.excalidrawAPI)||void 0===e||e.setToast({message:`Pin removed: ${r}`,duration:3e3,closable:!0})),await this.plugin.saveSettings(),app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedScripts()}))})()}),1500)),i=e}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":r},s))}))},this.renderButton=(e,t)=>React__namespace.createElement(React__namespace.Fragment,null,React__namespace.createElement("label",{className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{this.toolsRef.current.setTheme(t.theme),this.toolsRef.current.toggleVisibility(t.zenModeEnabled||e)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":t$d("OBSIDIAN_TOOLS_PANEL")},ICONS.obsidian)),React__namespace.createElement("label",{className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{new UniversalInsertFileModal(this.plugin,this.view).open()}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":t$d("UNIVERSAL_ADD_FILE")},ICONS["add-file"])),this.renderCustomPens(e,t),this.renderPinnedScriptButtons(e,t)),this.clickTimestamp=Array.from({length:Object.keys(PENS).length},(()=>0))}}class ActionButton extends React__namespace.Component{constructor(e){super(e),this.toastMessageTimeout=0,this.longpressTimeout=0,this.state={visible:!0}}render(){return React__namespace.createElement("button",{style:{},className:"ToolIcon_type_button ToolIcon_size_small ToolIcon_type_button--show ToolIcon",title:this.props.title,onClick:e=>{this.toastMessageTimeout&&(window.clearTimeout(this.toastMessageTimeout),this.toastMessageTimeout=0,this.props.action(e)),this.longpressTimeout&&(window.clearTimeout(this.longpressTimeout),this.longpressTimeout=0)},onPointerDown:e=>{this.toastMessageTimeout=window.setTimeout((()=>{var e;null===(e=this.props.view.excalidrawAPI)||void 0===e||e.setToast({message:this.props.title,duration:3e3,closable:!0}),this.toastMessageTimeout=0}),400),this.longpressTimeout=window.setTimeout((()=>{var t;this.props.longpress?this.props.longpress(e):null===(t=this.props.view.excalidrawAPI)||void 0===t||t.setToast({message:"Cannot pin this action",duration:3e3,closable:!0}),this.longpressTimeout=0}),1500)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-hidden":"true"},this.props.icon))}}const FIRST_RUN='\nThe Excalidraw Obsidian plugin is much more than "just" a drawing tool. To help you get started here\'s a showcase of the key Excalidraw plugin features.\n\nIf you\'d like to learn more, please subscribe to my YouTube channel: [Visual PKM](https://www.youtube.com/channel/UCC0gns4a9fhVkGkngvSumAQ) where I regularly share videos about Obsidian-Excalidraw and about tools and techniques for Visual Personal Knowledge Management.\n\nThank you & Enjoy!\n\n
\n\n
\n',RELEASE_NOTES={Intro:'After each update you\'ll be prompted with the release notes. You can disable this in plugin settings.\n\nI develop this plugin as a hobby, spending my free time doing this. If you find it valuable, then please say THANK YOU or...\n\n
\n',"1.9.20":`\n
\n\n
\n\n## Fixed\n- Fourth Font displays correctly in SVG embeds mode\n- The re-colorMap map (see [1.9.19](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.9.19) for more info) did not work when either of the fill or stroke color properties of the image was missing.\n- Excalidraw Pasting with middle mouse button on Linux [#1338](https://github.com/zsviczian/obsidian-excalidraw-plugin/pull/1338) 🙏@Aeases \n\n### Fixed by excalidraw.com\n- Excalidraw's native eyedropper fixes [#7019](https://github.com/excalidraw/excalidraw/pull/7019)\n\n## New\n- Now you can insert [Mermaid](https://mermaid.live/) diagrams as Excalidraw elements into your drawings (currently only the [Flowchart](https://mermaid.js.org/syntax/flowchart.html) type is supported, [other diagram types](https://mermaid.js.org/intro/#diagram-types) are inserted as Mermaid native images. \n - ⚠️**This feature requires Obsidian API v1.4.14 (the latest desktop version). On Obsidian mobile API v1.4.14 is only available to Obsidian insiders currently**\n - If you want to contribute to the project please head over to [mermaid-to-excalidraw](https://github.com/excalidraw/mermaid-to-excalidraw) and help create the converters for the other diagram types.\n- The Fourth Font now also supports the OTF format\n- Disable snap-to-grid in grid mode by holding down the CTRL/CMD while drawing or moving an element [#6983](https://github.com/excalidraw/excalidraw/pull/6983)\n- I updated the Excalidraw logo in Obsidian. This affects the logo on the tab and the ribbon.\n\n### New from excalidraw.com\n- Elements alignment snapping. Hold down the CTRL/CMD button while moving an element to snap it to other objects. [#6256](https://github.com/excalidraw/excalidraw/pull/6256)\n\n### New in the script library\n- The amazing shape [Boolean Operations](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Boolean%20Operations.md) script created by 🙏@GColoy is available in the script library.\n\n### New in Excalidraw Automate\n- ${String.fromCharCode(96)}getPolyBool()${String.fromCharCode(96)} returns a [PolyBool](https://github.com/velipso/polybooljs) object\n- sample mermaid code:\n${String.fromCharCode(96,96,96)}js\nea = ExcalidrawAutomate();\nea.setView();\nawait ea.addMermaid(\n ${String.fromCharCode(96)}flowchart TD\n A[Christmas] --\x3e|Get money| B(Go shopping)\n B --\x3e C{Let me think}\n C --\x3e|One| D[Laptop]\n C --\x3e|Two| E[iPhone]\n C --\x3e|Three| F[fa:fa-car Car]${String.fromCharCode(96)}\n);\nea.addElementsToView();\n${String.fromCharCode(96,96,96)}`,"1.9.19":`\n## New\n- I added new features to the [Deconstruct Selected Elements](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Deconstruct%20selected%20elements%20into%20new%20drawing.md) script\n- I added a new script: [Text Aura](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Text%20Aura.md)\n- I updated the [Set Grid](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Set%20Grid.md) script. You can now set the Major/Minor tick frequency. [#1305](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1305)\n- The re-colorMap is now case-insensitive. The color map is a hidden feature. In Markdown View mode you can add a JSON map after the embedded SVG or Excalidraw image filename with a mapping of current colors to new colors.\n\n\n## New in ExcalidrawAutomate\n- I added the ${String.fromCharCode(96)}silent${String.fromCharCode(96)} switch. If this is true, the created file will not be opened.\n${String.fromCharCode(96,96,96)}typescript\n async create(params?: {\n filename?: string;\n foldername?: string;\n templatePath?: string;\n onNewPane?: boolean;\n silent?: boolean;\n frontmatterKeys?: {\n "excalidraw-plugin"?: "raw" | "parsed";\n "excalidraw-link-prefix"?: string;\n "excalidraw-link-brackets"?: boolean;\n "excalidraw-url-prefix"?: string;\n "excalidraw-export-transparent"?: boolean;\n "excalidraw-export-dark"?: boolean;\n "excalidraw-export-padding"?: number;\n "excalidraw-export-pngscale"?: number;\n "excalidraw-default-mode"?: "view" | "zen";\n "excalidraw-onload-script"?: string;\n "excalidraw-linkbutton-opacity"?: number;\n "excalidraw-autoexport"?: boolean;\n };\n plaintext?: string; //text to insert above the ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)} section\n }): Promise\n${String.fromCharCode(96,96,96)}\n`,"1.9.18":`\n## New\n- Excalidraw now syncs with Obsidian's language settings, provided translations are available. [#1297](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1297)\n\n## Fixed\n- [#1285](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1285): Solved Obsidian crashes caused by copying images from Excalidraw into markdown notes. Going forward:\n - Copying an image will paste its embed link,\n - Copying a text element will paste the text,\n - For all other elements with links, the link will be pasted.\n - In all other cases nothing will be pasted.\n \n- Resolved grid instability ([#1298](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1298)).\n- Fixed missing ${String.fromCharCode(96)}[[square brackets]]${String.fromCharCode(96)} in PDF section references, making the links functional.\n- Corrected the behavior of "Open current link in browser" for embedded YouTube and Vimeo frames. Clicking the globe button will now correctly open the links.\n`,"1.9.17":'\n## New \n- Significant performance improvements from Excalidraw.com\n- When selecting a highlight in the Obsidian PDF editor and selecting "Copy as Quote" in the context menu, then paste this to Excalidraw, the text will arrive as a text element wrapped in a transparent sticky note with the link to the original highlight attached to the sticky note. You can override this behavior by SHIFT+CTRL/CMD pasting\n\n## Fixed\n- BUG: Image caching issue. Changes to the drawing do not reflect immediately in the note when re-opening the drawing [#1297](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1279)\n- Removed underline from links in NativeSVG embed.\n',"1.9.16":"\nI apologize for this extra release. I accidentally built 1.9.15 with an older excalidraw.com package version. Fixes and new features (like the improved grid) are now available again. Otherwise, this is the same as 1.9.15. Sorry for the inconvenience.\n","1.9.15":"\n## New\n- There is now a search box in the Excliadraw Script Store. I categorized the scripts and added keywords to help easier navigation.\n\n## Fixed\n- The theme of the embedded Markdown document did not always honor plugin settings. With some themes, it worked, with others (including the default Obsidian theme, it didn't). \n","1.9.14":`\n# Fixed\n- **Dynamic Styling**: Excalidraw ${String.fromCharCode(96)}Plugin Settings/Display/Dynamic Styling${String.fromCharCode(96)} did not handle theme changes correctly.\n- **Section References**: Section Headings that contained a dot (e.g. #2022.01.01) (or other special characters) did not work when focusing markdown embeds to a section. [#1262](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1262)\n- **PNG Export**: When using images from the web (i.e. based on URL and not a file from your Vault), embedding the Excalidraw file into a markdown document as PNG, or exporting as PNG failed. This is because due to browser cross-origin restrictions, Excalidraw is unable to access the image. In such cases, a placeholder will be included in the export, but the export will not fail, as until now.\n\n# New in ExcalidrawAutomate\n- ${String.fromCharCode(96)}getActiveEmbeddableViewOrEditor${String.fromCharCode(96)} will return the active editor and file in case of a markdown document or the active leaf.view for other files (e.g. PDF, MP4 player, Kanban, Canvas, etc) of the currently active embedded object. This function can be used by plugins to check if an editor is available and obtain the view or editor to perform their actions. Example: [package.json](https://github.com/zsviczian/excalibrain/blob/2056a021af7c3a53ed08203a77f6eae304ca6e39/package.json#L23), [Checking for EA](https://github.com/zsviczian/excalibrain/blob/2056a021af7c3a53ed08203a77f6eae304ca6e39/src/excalibrain-main.ts#L114-L127), and [Running the function](https://github.com/zsviczian/excalibrain/blob/2056a021af7c3a53ed08203a77f6eae304ca6e39/src/excalibrain-main.ts#L362-L399)\n\n${String.fromCharCode(96,96,96)}typescript\npublic getActiveEmbeddableViewOrEditor (view?:ExcalidrawView): {view:any}|{file:TFile, editor:Editor}|null;\n${String.fromCharCode(96,96,96)}\n`,"1.9.13":`\n
\n\n
\n\n# New\n- **Templater support**: You can now execute Templater scripts on an embedded Markdown document when the document is active for editing\n- **Interactive image-embeds**: I added a new image embed option "SVG Native". In "SVG Native" mode embedded items such as videos, webpages, and links (including links within the Vault) work.\n- **Anchored image resizing**: When you embed an Excalidraw drawing using the Anchor to 100% option, resizing the image will be disabled.\n\n# Fixed\n- when opening a new document in the Excalidraw view while a markdown document was open for editing in an embeddable, Excalidraw terminated with errors\n- shift-click to select multiple elements\n- dynamic styling when canvas background with transparent\n \n# New in ExcalidrawAutomate\n- added openState to the ${String.fromCharCode(96)}openFileInNewOrAdjacentLeaf${String.fromCharCode(96)}. For details see: [OpenViewState](https://github.com/obsidianmd/obsidian-api/blob/f86f95386d439c19d9a77831d5cac5748d80e7ec/obsidian.d.ts#L2686-L2695)\n${String.fromCharCode(96,96,96)}typescript\nopenFileInNewOrAdjacentLeaf(file: TFile, openState?: OpenViewState): WorkspaceLeaf\n${String.fromCharCode(96,96,96)}\n`,"1.9.12":`\n## New\n- If you create a Text Element that includes only a transclusion e.g.: ${String.fromCharCode(96)}![[My Image.png]]${String.fromCharCode(96)} then excalidraw will automatically replace the transclusion with the embedded image.\n- New Excalidraw splash screen icon contributed by Felix Häberle. 😍\n\n
\n\n
\n\n## Fixed\n- Popout windows behaved inconsistently losing focus at the time when a markdown file was embedded. Hopefully, this is now working as intended.\n- A number of small fixes that will also improve the ExcaliBrain experience\n`,"1.9.11":"\n# New\n- I added 2 new command palette actions: 1) to toggle frame clipping and 2) to toggle frame rendering.\n\n# Updated\n- I released a minor update to the slideshow script. Frame sequence (Frame 1, 2, 3, ...) will now be displayed in proper order. Frames will be hidden during the presentation (this was there before, but there was a change to excalidraw.com that broke this feature of the slideshow script).\n\n# Fixed: \n- Excalidraw Automate error introduced with 1.9.10 - when elements are repositioned to cursor and no ExcalidrawView is active\n","1.9.10":'\n## New\n- @mazurov added a new script: [Ellipse Selected Elements](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Ellipse%20Selected%20Elements.md)\n\n## Fixed\n- **Image Saving Error**: Previously, inserting an image from Firebase Storage or other URLs could result in an error that prevented the entire drawing from being saved. I have now improved the error handling and image fetching from the web, ensuring smooth image insertion and saving. \n- **Text Search Bug**: There was an issue where text search failed when frames had default names like "Frame 1," "Frame 2," etc. This has been resolved, and now the text search works correctly in such cases. ([#1239](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1239)) \n- **Image Positioning Fix**: An annoying bug caused the image to jump after inserting it using the "Insert Image" command palette action. I\'ve fixed this issue, and now the image behaves as expected when positioning it for the first time.\n',"1.9.9":`\n## ⚠️⚠️ IMPORTANT: PLEASE READ ⚠️⚠️\n\nI updated embedded frames for compatibility with excalidraw.com. To ensure everything works smoothly:\n\n🔄 Update Excalidraw on all your devices.\n\nThis will avoid any issues with converted files and let you enjoy the new features seamlessly.\n\nThank you for your understanding. If you have any questions, feel free to reach out.\n\n---\n\n## Fixed:\n- PNG image caching resulting in broken images after Obsidian restarts\n- SVG export now displays embedded iframes with the correct embed link (note this feature only works when you open the SVGs in a browser outside Obsidian).\n\n## Updated / fixed in Excalidraw Automate\n- I updated ${String.fromCharCode(96)}lib/ExcalidrawAutomate.d.ts${String.fromCharCode(96)} and published a new version of obsidian-excalidraw-plugin type library to npmjs.\n- Added new ExcalidrawAutomate functions: ${String.fromCharCode(96)} addEmbeddable()${String.fromCharCode(96)}, ${String.fromCharCode(96)}DEVICE${String.fromCharCode(96)}, ${String.fromCharCode(96)}newFilePrompt()${String.fromCharCode(96)}, and ${String.fromCharCode(96)}getLeaf()${String.fromCharCode(96)}\n- ${String.fromCharCode(96)}addImage${String.fromCharCode(96)} and ${String.fromCharCode(96)}addElementsToView${String.fromCharCode(96)} were extended with 1-1 additional optional parameter. As a result of ${String.fromCharCode(96)}shouldRestoreElements${String.fromCharCode(96)} defaulting to false, all elements in the scene will no longer be updated (iframes will not blink) when you add elements via script.\n- There is a new event hook: ${String.fromCharCode(96)}onPasteHook${String.fromCharCode(96)}. This will be called whenever the user pastes something to the canvas. You can use this callback if you want to do something additional during the onPaste event. In case you want to prevent the Excalidraw default onPaste action you must return false\n\n${String.fromCharCode(96,96,96)}typescript\nasync addImage(\n topX: number,\n topY: number,\n imageFile: TFile | string,\n scale: boolean = true,\n anchor: boolean = true,\n): Promise;\n\nasync addElementsToView(\n repositionToCursor: boolean = false,\n save: boolean = true,\n newElementsOnTop: boolean = false,\n shouldRestoreElements: boolean = false,\n): Promise;\n\n onPasteHook: (data: {\n ea: ExcalidrawAutomate;\n payload: ClipboardData;\n event: ClipboardEvent;\n excalidrawFile: TFile;\n view: ExcalidrawView;\n pointerPosition: { x: number; y: number };\n }) => boolean = null;\n\naddEmbeddable(\n topX: number,\n topY: number,\n width: number,\n height: number,\n url?: string,\n file?: TFile\n): string;\n\nget DEVICE(): DeviceType;\n\nnewFilePrompt(\n newFileNameOrPath: string,\n shouldOpenNewFile: boolean,\n targetPane?: PaneTarget,\n parentFile?: TFile\n): Promise;\n\ngetLeaf(\n origo: WorkspaceLeaf,\n targetPane?: PaneTarget\n): WorkspaceLeaf;\n${String.fromCharCode(96,96,96)}\n`,"1.9.8":'\n## New Features\n- Zoom to heading and block in markdown frames.\n- Added an iframe menu that allows users to change heading/block zoom, center the element, and open it in the browser.\n- Replaced twitframe with platform.twitter for tweets. The "Read more" and "Reply" buttons now work. Embedded tweets will honor theme settings.\n\n## Bug Fixes\n- Fixed an issue where embedded markdown frames disappeared in fullscreen mode. [#1197](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1197)\n- Resolved a problem with the "Embed Markdown as Image" feature where changes to embed properties were not always honored. [#1201](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1201)\n- When inserting any file from the Vault and embedding a Markdown document as an image, the embed now correctly honors the section heading if specified. [#1200](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1200)\n- SVG and PNG autoexport now function properly when closing a popout window. [#1209](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1209)\n- Many other minor fixes\n',"1.9.7":`\n## Fixed:\n\n- Fixed an issue where using the color picker shortcut would cause the UI to disappear in mobile view mode.\n- You can now add YouTube playlists to iframes.\n- Fixed a bug where the "Add any file" dropdown suggester opened in the main Obsidian workspace instead of the popout window when Excalidraw was running. ([#1179](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1191))\n- Made some improvements to the logic of opening in the adjacent pane, although it is still not perfect.\n- Fixed an issue where Obsidian sync would result in the loss of the last approximately 20 seconds of work. Excalidraw's handling of sync is now fixed. ([#1189](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1189))\n\n## New:\n\n- Introducing Image Cache: Excalidraw will now cache rendered images embedded in Markdown documents, which will enhance the markdown rendering experience.\n- Backup Cache: Excalidraw now stores a backup on your device when saving, in case the application is terminated during a save operation. If you are using sync, you can find the latest backup on the device you last used to edit your drawing.\n- Added ${String.fromCharCode(96)}frame=${String.fromCharCode(96)} parameter to image references. ([#1194](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1194)) For more details about this feature, check out this [YouTube video](https://youtu.be/yZQoJg2RCKI).\n- When an SVG image from Draw.io is embedded in Excalidraw, clicking the image will open the file in the [Diagram plugin](https://github.com/zapthedingbat/drawio-obsidian) (if available).\n- Added the [Create DrawIO file](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Create%20DrawIO%20file.md) Excalidraw Automate Script to the library, which allows you to create a new draw.io drawing and add it to the current Excalidraw canvas.\n\n## New in ExcalidrawAutomate\n\n${String.fromCharCode(96,96,96)}typescript\nasync getAttachmentFilepath(filename: string): Promise\n${String.fromCharCode(96,96,96)}\n\nThis asynchronous function retrieves the filepath to a new file, taking into account the attachments preference settings in Obsidian. It creates the attachment folder if it doesn't already exist. The function returns the complete path to the file. If the provided filename already exists, the function will append '_[number]' before the extension to generate a unique filename.\n\n${String.fromCharCode(96,96,96)}typescript\ngetElementsInFrame(frameElement: ExcalidrawElement, elements: ExcalidrawElement[]): ExcalidrawElement[];\n${String.fromCharCode(96,96,96)}\n\nThis function returns the elements contained within a frame.\n`,"1.9.6":`\n## Fixed\n- help shortcuts are really hard to see [#1176](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1179)\n- link icons not visible on elements after 1.9.5 release (reported on Discord)\n- PDFs in iFrames will now respect the ${String.fromCharCode(96)}[[document.pdf#page=155]]${String.fromCharCode(96)} format\n- Keyboard shortcuts were not working properly on external drop. Check [updated keyboard map](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png)\n\nKeyboard map\n`,"1.9.5":`\n
\n\n
\n\n## New\n- IFrame support: insert documents from your Obsidian Vault and insert youtube, Vimeo, and generally any website from the internet\n- Frame support: use frames to group items on your board\n\n## New in ExcalidrawAutomate\n- selectElementsInView now also accepts a list of element IDs\n- new addIFrame function that accepts an Obsidian file or a URL string\n${String.fromCharCode(96,96,96)}typescript\nselectElementsInView(elements: ExcalidrawElement[] | string[]): void;\naddIFrame(topX: number, topY: number, width: number, height: number, url?: string, file?: TFile): string;\n${String.fromCharCode(96,96,96)}\n`,"1.9.3":'\n## New from Excalidraw.com\n- Eyedropper tool. The eyedropper is triggered with "i". If you hold the ALT key while clicking the color it will set the stroke color of the selected element, else the background color.\n- Flipping multiple elements\n- Improved stencil library rendering performance + the stencil library will remember the scroll position from the previous time it was open\n\n## Fixed\n- Replaced command palette and tab export SVG/PNG/Excalidraw actions with "export image" which will take the user to the export image dialog.\n',"1.9.2":`\n
\n\n
\n\n## New\n- Excalidraw.com Color Picker redesign [#6216](https://github.com/excalidraw/excalidraw/pull/6216)\n- Updated palette loader script in the script library\n- New ExcalidrawAutomate API to load Elements and AppState from another Excalidraw file.\n${String.fromCharCode(96,96,96)}typescript\nasync getSceneFromFile(file: TFile): Promise<{elements: ExcalidrawElement[]; appState: AppState;}>\n${String.fromCharCode(96,96,96)}\n`,"1.9.1":'\n## Updates from Excalidraw.com\n- "Unlock all elements" - new action available via the context menu [#5894](https://github.com/excalidraw/excalidraw/pull/5894)\n- Minor improvements to improve the speed [#6560](https://github.com/excalidraw/excalidraw/pull/6560)\n- Retain Seed on Shift Paste [#6509](https://github.com/excalidraw/excalidraw/pull/6509)\n\n## New/Fixed\n- Clicking on the link handle (top right corner) will open the link in the same window\n- CTRL/CMD click on a link will open the link in a new tab and will focus on the new tab\n- Linking to parts of images. In some cases clicking search results, links, or backlinks did not focus on the right element according to the link. Fixed.\n',"1.9.0":`\n
\n\n
\n\n## Fixed\n- Embedded images, markdowns, PDFs will load one by one, not in one go after a long wait\n\n## New\n- Embed PDF\n\n## New in ExcalidrawAutomate\n- onFileCreateHook: if set this hook is called whenever a new drawing is created using Excalidraw command palette menu actions. If the excalidraw file is created using Templater or other means, the trigger will not fire. [#1124](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1124)\n${String.fromCharCode(96,96,96)}typescript\n onFileCreateHook: (data: {\n ea: ExcalidrawAutomate;\n excalidrawFile: TFile; //the file being created\n view: ExcalidrawView;\n }) => Promise;\n ${String.fromCharCode(96,96,96)}\n`,"1.8.26":"\n## Fixed\n- Dynamic styling did not pick up correctly\n - the accent color with the default Obsidian theme\n - the drawing theme color with the out of the box, default new drawing (not using a template)\n- The Obsidian tools panel did not pick up user scripts when installing your very first script. A reload of Obsidian was required.\n","1.8.25":'\n
\n\n
\n\n## New & improved\n- Multi-link support\n- Updated [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) script for better handwritten text support. \n - Add links to text elements\n - Creating wrapped text in transparent sticky notes\n - Add text to arrows and lines\n - Handwriting support on iOS via Scribble\n\n## Fixed\n - The long-standing issue of jumping text\n \n',"1.8.24":`\n## Updates from Excalidraw.com\n- fix: color picker keyboard handling not working\n- fix: center align text when bind to the container via context menu\n- fix: split "Edit selected shape" shortcut\n\n## Fixed\n- BUG: Area embed link of svg inside excalidraw embed entire svg instead of area [#1098](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1098)\n\n## New\n- I updated the [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) script with tons of new features. I am still beta testing the script. I will release a demo video in the next few days.\n\n## New in Excalidraw Automate\n- I added many more configuration options for the scriptEngine utils.inputPrompt function. See [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) for a demonstration of this new feature.\n${String.fromCharCode(96,96,96)}typescript\n public static async inputPrompt(\n view: ExcalidrawView,\n plugin: ExcalidrawPlugin,\n app: App,\n header: string,\n placeholder?: string,\n value?: string,\n buttons?: { caption: string; tooltip?:string; action: Function }[],\n lines?: number,\n displayEditorButtons?: boolean,\n customComponents?: (container: HTMLElement) => void\n )\n${String.fromCharCode(96,96,96)}`,"1.8.23":'\n## Fixes\n- Fixed palm rejection to prevent unwanted spikes when using the freedraw tool. ([#1065](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1065))\n- Fixed issue where images disappeared when zoomed in. ([#6417](https://github.com/excalidraw/excalidraw/pull/6417))\n- Autosave will now save the drawing when you change the theme from dark to light or vice versa. ([#1080](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1080))\n- Added padding to short LaTeX formulas to prevent cropping. ([#1053](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1053))\n\n## New Features\n- Added a new command palette action: Toggle to invert default binding behavior. This new feature allows you to switch between normal and inverted mode. In normal mode, arrows will bind to objects unless you hold the CTRL/CMD key while drawing the arrow or moving objects. In inverted mode, arrows will not bind to objects unless you hold the CTRL/CMD key while drawing the arrow or moving objects.\n- You can now set a template LaTeX formula in the plugin settings (under experimental features) to be used when creating a new LaTeX formula. ([#1090](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1090))\n- Redesigned the Image Export dialog. I hope dropdowns are now more intuitive than the toggles were.\n- Added the ability to export only the selected part of a drawing. See the Export dialog for more information.\n- Added a zigzag fill easter egg. See a demo of this feature [here](https://twitter.com/excalidraw/status/1645428942344445952?s=61&t=nivKLx2vgl6hdv2EbW4mZg).\n- Added a new expert function: recolor embedded Excalidraw and SVG images (not JPG, PNG, BMP, WEBP, GIF). See a demo of this feature here:\n\n
\n\n
\n',"1.8.22":`\n## Fixed\n- Styling of custom pen and script buttons in the side panel was inverted.\n- Minor tweaks to dynamic styling. [see this video to understand dynamic styling](https://youtu.be/fypDth_-8q0)\n\n## New\n- New scripts by @threethan:\n - [Auto Draw for Pen](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Auto%20Draw%20for%20Pen.md): Automatically switches between the select and draw tools, based on whether a pen is being used. Supports most pens including Apple Pencil.\n - [Hardware Eraser Support](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Hardware%20Eraser%20Support.md): Adds support for pen inversion, a.k.a. the hardware eraser on the back of your pen. Supports Windows based styluses. Does not suppoprt Apple Pencil or S-Pen.\n- Added separate buttons to support copying link, area or group references to objects on the drawing. [#1063](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1063). See [this video](https://youtu.be/yZQoJg2RCKI) for more details on how this works.\n- Hover preview will no longer trigger for image files (.png, .svg, .jpg, .gif, .webp, .bmp, .ico, .excalidraw)\n- Minor updates to the [Slideshow](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Slideshow.md) script. You can download the updated script from the Excalidraw script library. The slideshow will now correctly run also when initiated in a popout window. When the drawing is in a popout window, the slideshow will not be full screen, but will only occupy the popout window. If you run the slideshow from the main Obsidian workspace, it will be displayed in full-screen mode.\n- Updated the Icon Library script to now include image keywords under each of the images to allow searching for keywords (CTRL/CMD+F). I've uploaded the new script to [here](https://gist.github.com/zsviczian/33ff695d5b990de1ebe8b82e541c26ad). If you need further information watch this [video](https://youtu.be/_OEljzZ33H8)\n\n## New in ExcalidrawAutomate\n- ${String.fromCharCode(96)}addText${String.fromCharCode(96)} ${String.fromCharCode(96)}formatting${String.fromCharCode(96)} parameter now accepts ${String.fromCharCode(96)}boxStrokeColor${String.fromCharCode(96)} and ${String.fromCharCode(96)}textVerticalAlign${String.fromCharCode(96)} values.\n${String.fromCharCode(96,96,96)}typescript\naddText(\n topX: number,\n topY: number,\n text: string,\n formatting?: {\n wrapAt?: number;\n width?: number;\n height?: number;\n textAlign?: "left" | "center" | "right";\n box?: boolean | "box" | "blob" | "ellipse" | "diamond";\n boxPadding?: number;\n boxStrokeColor?: string;\n textVerticalAlign?: "top" | "middle" | "bottom";\n },\n id?: string,\n ): string;\n${String.fromCharCode(96,96,96)}\n- new ${String.fromCharCode(96)}onFileOpenHook${String.fromCharCode(96)}. If set, this callback is triggered, when an Excalidraw file is opened. You can use this callback in case you want to do something additional when the file is opened. This will run before the file level script defined in the ${String.fromCharCode(96)}excalidraw-onload-script${String.fromCharCode(96)} frontmatter is executed. Excalidraw will await the result of operations here. Handle with care. If you change data such as the frontmatter of the underlying file, I haven't tested how it will behave.\n${String.fromCharCode(96,96,96)}typescript\nonFileOpenHook: (data: {\n ea: ExcalidrawAutomate;\n excalidrawFile: TFile; //the file being loaded\n view: ExcalidrawView;\n}) => Promise;\n${String.fromCharCode(96,96,96)}`,"1.8.21":'\n## Quality of Life improvements\n- Dynamic Styling (see plugin settings / Display). When Dynamic Styling is enabled it fixes Excalidraw issues with the Minimal Theme\n- New "Invert Colors" script\n\n
\n\n
\n\n### Note\nThe few of you, that are using the Dynamic Styling Templater script, please remove it and restart Obsidian.\n',"1.8.20":"\n## Fixed\n- Excalidraw froze Obsidian in certain rare situations [#1054](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1054)\n- File loading error [#1062](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1062)\n- Embedded images in markdown documents no longer have the line on the side. Image sizing works better. [#1059](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1059)\n- Locked elements will not show a hover preview [#1060](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1060)\n- CTRL/CMD + K correctly triggers add link [#1056](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1056)\n\n## New\n- Grid color adjusts to the view background color\n\nI'm sorry, but the sticky note editing issue on Android with the on-screen keyboard has still not been resolved. If you also experience this error, please help raise the priority with the core Excalidraw team by commenting on this issue: [#6330](https://github.com/excalidraw/excalidraw/issues/6330)\n","1.8.19":"\n## Fixed: Text wrapping issue in sticky notes\n\nI fixed an issue where text would wrap differently and words would disappear during text editing in sticky notes. You can check out the details on [GitHub #6318](https://github.com/excalidraw/excalidraw/issues/6331).\n\nI am aware of three additional issues related to container text editing that are still open. I apologize for any inconvenience caused by the recent change in how text size is calculated on Excalidraw.com, which has had a knock-on effect on Obsidian. I am actively working to address the following issues:\n\n- Pinch zooming while editing text in a text container [GitHub #6331](https://github.com/excalidraw/excalidraw/issues/6331)\n- Container text jumps on edit on Android with on-screen keyboard [GitHub #6330](https://github.com/excalidraw/excalidraw/issues/6330)\n- Shadow text when editing text containers without a keyboard on iOS [GitHub #6329](https://github.com/excalidraw/excalidraw/issues/6329)\n\nThank you for your patience while I work on resolving these issues.\n","1.8.18":`\n## Fixed\n- Text scaling issue introduced in 1.8.17\n- [#1043](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1043): Error handling when ${String.fromCharCode(96)}onCanvasColorChangeHook${String.fromCharCode(96)} is executed. This is used in the [Dynamic Styling Script](https://youtu.be/LtR04fNTKTM). \n`,"1.8.17":'\n## New from Excalidraw.com\n- Improved text wrapping in the ellipse and diamond shapes [6172](https://github.com/excalidraw/excalidraw/pull/6172)\n\n## New\n- Updated slideshow script\n\n
\n\n
\n\n## Fixed: \n- "Save to..." in the Stencil Library menu now works as expected [#1032](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1032)\n',"1.8.16":'\n**!!! Modifier keys have changed, please review the table below !!!**\n[Click this to see the new shortcuts overview image](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png)\n\n## Fixed \n- This version was extensively tested and developed on MacOS to remove usability issues.\n- New command palette action to create a new drawing in a new tab\n- Modifier keys to open links in the active window, splitting the current view to the right, in a new tab, or in a popout window now behave consistently both in Excalidraw and when clicking a drawing that is embedded in a markdown note.\n- Drag & Drop properly works from within Obsidian, from a web browser, and from the OS file explorer\n\n
\n\n
\n',"1.8.14":"\n## Fixed\n- text element link gets deleted when the drawing is reloaded\n","1.8.13":'\n## Fixed\n- When changing a text element in markdown mode, the change seem to have showed up when switching back to Excalidraw mode, but then lost these changes when loading the file the next time.\n- Scrolling through a page that has embedded drawings on Obsidian Mobile accidently opens the drawing in Excalidraw when touching the image. Now you need to press and hold to open the image in Excalidraw. [#1003](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1003)\n- The scrollbar is no longer visible when presenting using the SlideShow script\n- Stroke properties could not be changed when custom pen settings had "Stroke & fill applies to: All shapes". It works now.\n\n## QoL\n- Custom pens will remember the stroke changes until you press the pen preset button again.\n - This is a bit hard to explain, let me try... Essentially, when you use a custom pen, it will keep the changes you made to the pen (like changing the stroke width) until you press the pen-prereset button again. So, for example, if you\'re using a mind mapping custom pen and change its color, and then switch to a different tool like text, when you switch back to the freedraw tool using the Excalidraw tools panel, the pen will still have the same color you set earlier, but if you press the mind mapping pen-preset button, it will default back to your custom pen settings including your preset color.\n- Added new buttons to load current stroke color and background color in the pen settings dialog. Also added an edit box so you can configure any valid color string (including with transparency) for pen stroke and background colors. [#991](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/991)\n',"1.8.11":'\n
\n\n
\n\n# New\n- Support for referencing images from the internet in Excalidraw drawings, including YouTube thumbnail support. [#913](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/913)\n - Link to images on the internet without creating a copy in your Vault by holding down the CTRL key while dropping the link or image.\n - Automatic conversion of image URLs and YouTube links into image elements with original links added as a link on the element when pasting. Note, that if you only want to paste the plain text link (not the image), first double-click the canvas to start a new text element, then paste the link.\n- Two new options added to plugin settings:\n - Make mouse wheel zoom by default [#474](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/474)\n - Allow pinch zoom in pen mode [#828](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/828)\n- Update to the [Set Grid](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Set%20Grid.svg) script now saves the grid setting for the current file.\n',"1.8.10":'\n
\n\n
\n\n# QoL improvements\n- You can structure icons in the Obsidian tools panel by moving scripts to folders\n![image|300](https://user-images.githubusercontent.com/14358394/212389592-306130d0-209a-49df-99bb-c538f2155b23.png)\n- I added useful actions to the hamburger menu in both tray-mode and normal-mode. \n![image|150](https://user-images.githubusercontent.com/14358394/212534508-9107fd19-27ab-4415-8abc-bc97c73afc0b.png)\n- I added a new Export Image dialog. You can access the new export screen from the hamburger-menu\n![image|200](https://user-images.githubusercontent.com/14358394/212534654-7a479e23-8d5d-452e-9a18-a9896278aa27.png)\n- Links in help now point to Obsidian-Excalidraw relevant content.\n- I added a welcome screen\n![image|150](https://user-images.githubusercontent.com/14358394/212534568-3cd1e8a1-5b20-4a30-96e4-40d7dac57e33.png)\n- I updated the alternative dark mode / dynamic styling [script](https://gist.github.com/zsviczian/c7223c5b4af30d5c88a0cae05300305c)\n',"1.8.9":"\n# Minor QoL improvements\n- When you open a second drawing in the same Excalidraw view (i.e. by navigating a link) and make a change to this drawing, and then press UNDO, the entire drawing disappeared. Redo brought the image back, however, this behavior was frustrating. Not anymore...\n- On iPad\n - when you open the command palette, autozoom resized the drawing. If the Obsidian command palette or some other modal window is shown Excalidraw will not resize the view.\n - when you add a link to the drawing using the Command Palette, sometimes the link was added in a far corner of the drawing outside the current view area. This should be fixed now.","1.8.8":`\n
\n\n
\n\n# New\n- The plugin now includes support for [Perfect Freehand](https://perfect-freehand-example.vercel.app/) pen-options. I've also added a new [Alternative Pens](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Alternative%20Pens.md) script.\n- Embed scene in exported PNG and SVG images [#860](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/860). This means that the export will be a normal PNG or SVG image with the added functionality that if someone loads the image into excalidraw.com it will open as a normal excalidraw file.\n - I've added 2 new Command Palette actions (export PNG, export SVG with embedded scene).\n - If you SHIFT click ${String.fromCharCode(96)} Save as PNG (or SVG)${String.fromCharCode(96)} in the workspace-tab menu, Excalidraw will embed the scene in the export.\n- I updated the [Organic Line](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Organic%20Line.md) script. It has an improved thick-to-thin look and a new thin-to-thick-to-thin line type.\n\n# Fixed\n- Intelligent image width setting [#955](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/955). Before this change, when the embedded image was small, the image would be extended to meet the image width setting in plugin settings. From now on, if the image is smaller than max-width, it will only extend to max-width. You can still set 100% width using custom CSS. See more on that [here](https://github.com/zsviczian/obsidian-excalidraw-plugin#embedded-images).\n\n# New in ExcalidrawAutomate\n- I added the ${String.fromCharCode(96)} plaintext${String.fromCharCode(96)} parameter to ${String.fromCharCode(96)}ExcalidrawAutomate.create${String.fromCharCode(96)} . Using this, you can add some text below the frontmatter but above the ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)} section. Use this for example to add metadata to your file. (e.g. I use this in my Daily Quote template to add a Dataview field for the ${String.fromCharCode(96)}Author::${String.fromCharCode(96)} and add the quote with a standard block reference, so I can easily reference it in other files. I also add the ${String.fromCharCode(96)}#quote${String.fromCharCode(96)} tag to the file using this.)\n- The script running in the ScriptEngine now also receives the ${String.fromCharCode(96)}TFile${String.fromCharCode(96)} object for the script itself. You can access this object during execution via the ${String.fromCharCode(96)}utils.scriptFile${String.fromCharCode(96)} variable. \n`,"1.8.7":'\n## New from Excalidraw.com\n- Support shrinking text containers to their original height when text is removed [#6025](https://github.com/excalidraw/excalidraw/pull/6025)\n
\n\n
\n\n## Fixed\n- removed the white background when editing arrow-label [#6033](https://github.com/excalidraw/excalidraw/pull/6033)\n- Minor style tweaks\n - for embedding Excalidraw into Obsidian Canvas. e.g. dragging no longer accidentally creates an image copy of the drawing, and\n - style tweaks on the Excalidraw canvas\n\n## New\n- If you set a different text color and sticky note border color, now if you change the border color, the text color will not be changed.\n',"1.8.6":`\n## New from Excalidraw.com:\n- Better default radius for rectangles [#5553](https://github.com/excalidraw/excalidraw/pull/5553). Existing drawings will look unchanged, this applies only to new rectangles.\n![image|200](https://user-images.githubusercontent.com/5153846/206264345-59fd7436-e87b-4bc9-ade8-9e6f6a6fd8c1.png)\n> [!attention]- ExcalidrawAutomate technical details\n> - ${String.fromCharCode(96)}strokeSharpness${String.fromCharCode(96)} is now deprecated\n> - use roundness instead\n> - ${String.fromCharCode(96)}roundness === null${String.fromCharCode(96)} is legacy ${String.fromCharCode(96)}strokeSharpness = "sharp"${String.fromCharCode(96)}\n> - ${String.fromCharCode(96)}roundness = { type: RoundnessType; value?: number }${String.fromCharCode(96)}\n> - type: 1, LEGACY, type:2 PROPORTIONAL_RADIUS, type:3 ADAPTIVE_RADIUS: 3\n> - value:\n> - Radius represented as % of element's largest side (width/height).\n> DEFAULT_PROPORTIONAL_RADIUS = 0.25;\n> - Fixed radius for the ADAPTIVE_RADIUS algorithm. In pixels.\n> DEFAULT_ADAPTIVE_RADIUS = 32;\n\n## New\n- For Obsidian 1.1.6 and above\n - Improved embedding into Obsidian Canvas\n - Improved embedding into Markdown documents\n- Added setting under ${String.fromCharCode(96)}Display/Default mode when opening Excalidraw${String.fromCharCode(96)} to always open the drawing in view mode on Mobile, but in normal mode on desktop. [#939](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/939)\n\n## Fixed\n- Zoom reset tooltip appears twice [#942](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/942)\n- Hid export library from library menu as it does not work due to Obsidian limitations. Use the command palette export library instead.\n- Arrow with label did not get exported and embedded correctly [#941](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/941)\n![image|200](https://user-images.githubusercontent.com/22638687/207845868-b352ddb1-7994-4f13-a0b2-f2e19bd72935.png)\n`,"1.8.4":'\n## New from Excalidraw.com\n- Labels on Arrows!!! [#5723](https://github.com/excalidraw/excalidraw/pull/5723)\n - To add a label press "Enter" or "Double click" on the arrow\n - Use "Cmd/Ctrl+double click" to enter the line editor\n\n
\n\n
\n\n## New\n- **Changed behavior**: In the Obsidian markdown editor clicking an Excalidraw image will not open the image (to avoid accidentally opening the image on a tablet). To open a drawing for editing in Excalidraw double click or long-tap on it. [#920](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/920)\n\n## Fixed \n- Text stroke color is not honored when pasting a HEX color string to an Excalidraw canvas open in an Obsidian popout window [#921](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/921)\n- The new [multi-line >> multi-element paste behavior](https://github.com/excalidraw/excalidraw/pull/5786) introduced in the previous release did not work as expected in Obsidian. Now it does.\n',"1.8.2":`\nIntroducing the [Excalidraw Slideshow Script](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Slideshow.md) - available in the script store\n
\n\n
\n\n## Fixed\n- Obsidian tools panel gets misplaced after switching Obsidian workspace tabs\n\n## New in ExcalidrawAutomate\n- changed ${String.fromCharCode(96)}viewToggleFullScreen(forceViewMode: boolean = false): void${String.fromCharCode(96)}: the function will toggle view mode on when going to full screen and view mode off when terminating full screen.\n- new functions\n${String.fromCharCode(96,96,96)}typescript\nsetViewModeEnabled(enabled: boolean):void;\nviewUpdateScene(\n scene: {\n elements?: ExcalidrawElement[];\n appState?: AppState;\n files?: BinaryFileData;\n commitToHistory?: boolean;\n },\n restore: boolean = false,\n ):void;\nviewZoomToElements(\n selectElements: boolean,\n elements: ExcalidrawElement[]\n ):void;\n${String.fromCharCode(96,96,96)}\n\n`,"1.8.1":`\n## New and fixes from Excalidraw.com\n- New text paste behavior. Pasting multiline text will generate separate text elements unless you hold down the shift button while pasting [#5786](https://github.com/excalidraw/excalidraw/pull/5786)\n- line editor fixes [#5927](https://github.com/excalidraw/excalidraw/pull/5927)\n\n## Fixed\n- The Command Palette "Insert link" action now inserts the new link at the top drawing layer, not at the bottom.\n- Updated, hopefully, better organized, Plugin Readme.\n\n## New\n- Second attempt at moving to React 18. This upgrade is required to maintain alignment with the core Excalidraw product and to continue to benefit from Excalidraw.com enhancements.\n- Added options to Plugin Settings\n - to disable autozoom when loading a drawing for the first time [#907](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/907)\n - to modify autosave interval. You can now set an autosave interval for desktop and for mobile [#888](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/888)\n\n## New in ExcalidrawAutomate\n- Published the obsidian_module on the ExcalidrawAutomate object. ${String.fromCharCode(96)}ExcalidrawAutomate.obsidian${String.fromCharCode(96)}. Publishing this object will give script developers increased flexibility and control over script automation.\n`,"1.8.0":'\n
\n\n
\n\n## New\n- Optical Character Recognition (OCR). Introducing the MVP (minimum viable product) release of the integration of [Taskbone](https://taskbone.com) OCR into Excalidraw. See the new scan button on the Obsidian tools panel.\n- New and improved full-screen mode\n - Activate using the Obsidian tools panel, the Obsidian Command Palette, or the Alt+F11 shortcut\n - The ESC key no longer closes full-screen\n - Full-screen mode works properly on iOS as well\n- Improved Icon visibility on the Obsidian tools panel\n- Added 3 additional buttons to the tools panel\n - Force save\n - Open link (useful on Mobile devices). In the case of LaTeX equations, the button opens the equation properties.\n - Open the link in a new pane. In the case of embedded markdown documents, the button opens the embed properties.\n\n## Fixed\n- The [deconstruct selected elements into a new drawing](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Deconstruct%20selected%20elements%20into%20new%20drawing.md) script now also correctly decomposes transcluded text elements.\n',"1.7.30":"\nFix:\n- Forcing the embedded image to always scale to 100% (a feature introduced in [1.7.26](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.7.26)) scaled the embedded excalidraw drawings incorrectly on devices with a pixel ratio of 2 or 3 (e.g. iPads). This is now fixed, however, this fix might retrospectively impact drawings that use this feature. Sorry for that.\n","1.7.29":"\n- This is a big update that accommodates the **UI redesign** on Excalidraw.com [#5780](https://github.com/excalidraw/excalidraw/pull/5780). The change on the surface may seem superficial, however, I had to tweak a number of things to make it work in Obsidian. I hope I found everything that broke and fixed it, if not, I'll try to fix it quickly...\n- This update also comes with changes under the hood that **fix issues with Excalidraw Automate** - paving the way for further scripts, plus some smaller bug fixes.\n- I **reworked text wrapping**. In some cases, text wrapping in SVG exports looked different compared to how the text looked in Excalidraw. This should now be fixed.\n- If you are using the **Experimental Dynamic Styling** of the Excalidraw Toolbar, then I recommend updating your styling script following base on [this](https://gist.github.com/zsviczian/c7223c5b4af30d5c88a0cae05300305c)\n","1.7.27":'## New\n- Import SVG drawing as an Excalidraw object. [#679](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/679)\n\n
\n\n
\n\n## Fixed\n- Large drawings freeze on the iPad when opening the file. I implemented a workaround whereby Excalidraw will avoid zoom-to-fit drawings with over 1000 elements. [#863](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/863)\n- Reintroduced copy/paste to the context menu\n',"1.7.26":'## Fixed\n- Transcluded block with a parent bullet does not embed sub-bullet [#853](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/853)\n- Transcluded text will now exclude ^block-references at end of lines\n- Phantom duplicates of the drawing appear when "zoom to fit" results in a zoom value below 10% and there are many objects on the canvas [#850](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/850)\n- CTRL+Wheel will increase/decrease zoom in steps of 5% matching the behavior of the "+" & "-" zoom buttons.\n- Latest updates from Excalidarw.com\n - Freedraw flip not scaling correctly [#5752](https://github.com/excalidraw/excalidraw/pull/5752)\n - Multiple elements resizing regressions [#5586](https://github.com/excalidraw/excalidraw/pull/5586)\n\n## New - power user features\n- Force the embedded image to always scale to 100%. Note: this is a very niche feature with a very particular behavior that I built primarily for myself (even more so than other features in Excalidraw Obsidian - also built primarily for myself 😉)... This will reset your embedded image to 100% size every time you open the Excalidraw drawing, or in case you have embedded an Excalidraw drawing on your canvas inserted using this function, every time you update the embedded drawing, it will be scaled back to 100% size. This means that even if you resize the image on the drawing, it will reset to 100% the next time you open the file or you modify the original embedded object. This feature is useful when you decompose a drawing into separate Excalidraw files, but when combined onto a single canvas you want the individual pieces to maintain their actual sizes. I use this feature to construct Book-on-a-Page summaries from atomic drawings.\n- I added an action to the command palette to temporarily disable/enable Excalidraw autosave. When autosave is disabled, Excalidraw will still save your drawing when changing to another Obsidian window, but it will not save every 10 seconds. On a mobile device (but also on a desktop) this can lead to data loss if you terminate Obsidian abruptly (i.e. swipe the application away, or close Obsidian without first closing the drawing). Use this feature if you find Excalidraw laggy.'};class ReleaseNotes extends obsidian_module.Modal{constructor(e,t,A){super(e),this.plugin=t,this.version=A}onOpen(){var e;this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText(`Welcome to Excalidraw ${null!==(e=this.version)&&void 0!==e?e:""}`),this.createForm()}async onClose(){this.contentEl.empty(),await this.plugin.loadSettings(),this.plugin.settings.previousRelease=PLUGIN_VERSION,await this.plugin.saveSettings()}async createForm(){let e=this.plugin.settings.previousRelease;e=this.version===e?"0.0.0":e;const t=this.version?Object.keys(RELEASE_NOTES).filter((t=>"Intro"===t||isVersionNewerThanOther(t,e))).map((e=>`${"Intro"===e?"":`# ${e}\n`}${RELEASE_NOTES[e]}`)).slice(0,10).join("\n\n---\n"):FIRST_RUN;await obsidian_module.MarkdownRenderer.renderMarkdown(t,this.contentEl,"",this.plugin),this.contentEl.createEl("p",{text:""},(e=>{e.style.textAlign="right",e.createEl("button",{text:"Close"}).onclick=()=>this.close()}))}}class ExportDialog extends obsidian_module.Modal{constructor(e,t,A){super(app),this.plugin=e,this.view=t,this.file=A,this.dirty=!1,this.hasSelectedElements=!1,this.ea=getEA(this.view),this.api=this.ea.getExcalidrawAPI(),this.padding=getExportPadding(this.plugin,this.file),this.scale=getPNGScale(this.plugin,this.file),this.theme=getExportTheme(this.plugin,this.file,this.api.getAppState().theme),this.boundingBox=this.ea.getBoundingBox(this.ea.getViewElements()),this.embedScene=!1,this.exportSelectedOnly=!1,this.saveToVault=!0,this.transparent=!getWithBackground(this.plugin,this.file),this.saveSettings=!1}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Export Image"),this.hasSelectedElements=this.view.getViewSelectedElements().length>0,this.selectedOnlySetting.setVisibility(this.hasSelectedElements)}async onClose(){this.dirty=this.saveSettings}async createForm(){let e,t;this.contentEl.createEl("h1",{text:"Image settings"}),this.contentEl.createEl("p",{text:"Transparency only affects PNGs. Excalidraw files can only be exported outside the Vault. PNGs copied to clipboard may not include the scene."});const A=()=>{const e=Math.round(this.scale*this.boundingBox.width+2*this.padding),t=Math.round(this.scale*this.boundingBox.height+2*this.padding);return fragWithHTML(`The lager the scale, the larger the image.
Scale: ${this.scale}
Image size: ${e}x${t}`)},i=()=>fragWithHTML(`Current image padding is ${this.padding}`);t=new obsidian_module.Setting(this.contentEl).setName("Image padding").setDesc(i()).addSlider((n=>{n.setLimits(0,50,1).setValue(this.padding).onChange((n=>{this.padding=n,e.setDesc(A()),t.setDesc(i())}))})),e=new obsidian_module.Setting(this.contentEl).setName("PNG Scale").setDesc(A()).addSlider((t=>t.setLimits(.5,5,.5).setValue(this.scale).onChange((t=>{this.scale=t,e.setDesc(A())})))),new obsidian_module.Setting(this.contentEl).setName("Export theme").addDropdown((e=>e.addOption("light","Light").addOption("dark","Dark").setValue(this.theme).onChange((e=>{this.theme=e})))),new obsidian_module.Setting(this.contentEl).setName("Background color").addDropdown((e=>e.addOption("transparent","Transparent").addOption("with-color","Use scene background color").setValue(this.transparent?"transparent":"with-color").onChange((e=>{this.transparent="transparent"===e})))),new obsidian_module.Setting(this.contentEl).setName("Save or one-time settings?").addDropdown((e=>e.addOption("save","Save these settings as the preset for this image").addOption("one-time","These are one-time settings").setValue(this.saveSettings?"save":"one-time").onChange((e=>{this.saveSettings="save"===e})))),this.contentEl.createEl("h1",{text:"Export settings"}),new obsidian_module.Setting(this.contentEl).setName("Embed the Excalidraw scene in the exported file?").addDropdown((e=>e.addOption("embed","Embed scene").addOption("no-embed","Do not embed scene").setValue(this.embedScene?"embed":"no-embed").onChange((e=>{this.embedScene="embed"===e})))),DEVICE.isDesktop&&new obsidian_module.Setting(this.contentEl).setName("Where to save the image?").addDropdown((e=>e.addOption("vault","Save image to your Vault").addOption("outside","Export image outside your Vault").setValue(this.saveToVault?"vault":"outside").onChange((e=>{this.saveToVault="vault"===e})))),this.selectedOnlySetting=new obsidian_module.Setting(this.contentEl).setName("Export entire scene or just selected elements?").addDropdown((e=>e.addOption("all","Export entire scene").addOption("selected","Export selected elements").setValue(this.exportSelectedOnly?"selected":"all").onChange((e=>{this.exportSelectedOnly="selected"===e}))));const n=this.contentEl.createDiv({cls:"excalidraw-prompt-buttons-div"});n.createEl("button",{text:"PNG to File",cls:"excalidraw-prompt-button"}).onclick=()=>{this.saveToVault?this.view.savePNG(this.view.getScene(this.hasSelectedElements&&this.exportSelectedOnly)):this.view.exportPNG(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()},n.createEl("button",{text:"SVG to File",cls:"excalidraw-prompt-button"}).onclick=()=>{this.saveToVault?this.view.saveSVG(this.view.getScene(this.hasSelectedElements&&this.exportSelectedOnly)):this.view.exportSVG(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()},n.createEl("button",{text:"Excalidraw",cls:"excalidraw-prompt-button"}).onclick=()=>{this.view.exportExcalidraw(this.hasSelectedElements&&this.exportSelectedOnly),this.close()},DEVICE.isDesktop&&(n.createEl("button",{text:"PNG to Clipboard",cls:"excalidraw-prompt-button"}).onclick=()=>{this.view.exportPNGToClipboard(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()})}}const TOOLS_PANEL_WIDTH=228;class ToolsPanel extends React__namespace.Component{constructor(e){super(e),this.pos1=0,this.pos2=0,this.pos3=0,this.pos4=0,this.penDownX=0,this.penDownY=0,this.previousWidth=0,this.previousHeight=0,this.onRightEdge=!1,this.onBottomEdge=!1;const t=e.view.plugin.getPackage(e.view.ownerWindow).react;this.containerRef=t.createRef(),this.state={visible:e.visible,top:50,left:200,theme:"dark",excalidrawViewMode:!1,minimized:!1,isDirty:!1,isFullscreen:!1,isPreviewMode:!0,scriptIconMap:{}}}updateScriptIconMap(e){this.setState((()=>({scriptIconMap:e})))}setPreviewMode(e){this.setState((()=>({isPreviewMode:e})))}setFullscreen(e){this.setState((()=>({isFullscreen:e})))}setDirty(e){this.setState((()=>({isDirty:e})))}setExcalidrawViewMode(e){this.setState((()=>({excalidrawViewMode:e})))}toggleVisibility(e){this.setTopCenter(e),this.setState((e=>({visible:!e.visible})))}setTheme(e){this.setState((t=>({theme:e})))}setTopCenter(e){this.setState((()=>({left:(this.containerRef.current.clientWidth-228-(e?0:232))/2+this.containerRef.current.parentElement.offsetLeft+(e?0:232),top:64+this.containerRef.current.parentElement.offsetTop})))}updatePosition(e=0,t=0){this.setState((()=>{const{offsetTop:A,offsetLeft:i,clientWidth:n,clientHeight:a}=this.containerRef.current.firstElementChild,r=A-e,s=i-t,{clientWidth:o,clientHeight:l,offsetTop:c,offsetLeft:d}=this.containerRef.current.parentElement;return this.previousHeight=l,this.previousWidth=o,this.onBottomEdge=r>=l-a+c,this.onRightEdge=s>=o-n+d,{top:r{e.preventDefault(),Math.abs(this.penDownX-this.pos3)>5||Math.abs(this.penDownY-this.pos4)>5||this.setState((e=>({minimized:!e.minimized})))},onPointerDown:e=>{const t=e=>{e.preventDefault(),this.pos1=this.pos3-e.clientX,this.pos2=this.pos4-e.clientY,this.pos3=e.clientX,this.pos4=e.clientY,this.updatePosition(this.pos2,this.pos1)},A=()=>{var e,i;null===(e=this.props.view.ownerDocument)||void 0===e||e.removeEventListener("pointerup",A),null===(i=this.props.view.ownerDocument)||void 0===i||i.removeEventListener("pointermove",t)};e.preventDefault(),this.penDownX=this.pos3=e.clientX,this.penDownY=this.pos4=e.clientY,this.props.view.ownerDocument.addEventListener("pointerup",A),this.props.view.ownerDocument.addEventListener("pointermove",t)}},React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 228 26"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M40,7 h148 M40,13 h148 M40,19 h148"}))),React__namespace.createElement("div",{className:"Island App-menu__left scrollbar",style:{maxHeight:"350px",width:"initial","--padding":2,display:this.state.minimized?"none":"block"}},React__namespace.createElement("div",{className:"panelColumn"},React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Utility actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"scriptEngine",title:t$d("INSTALL_SCRIPT_BUTTON"),action:()=>{new ScriptInstallPrompt(this.props.view.plugin).open()},icon:ICONS.scriptEngine,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"release-notes",title:t$d("READ_RELEASE_NOTES"),action:()=>{new ReleaseNotes(this.props.view.app,this.props.view.plugin,PLUGIN_VERSION).open()},icon:ICONS.releaseNotes,view:this.props.view}),null===this.state.isPreviewMode?React__namespace.createElement(ActionButton,{key:"convert",title:t$d("CONVERT_FILE"),action:()=>{this.props.view.convertExcalidrawToMD()},icon:ICONS.convertFile,view:this.props.view}):React__namespace.createElement(ActionButton,{key:"viewmode",title:this.state.isPreviewMode?t$d("PARSED"):t$d("RAW"),action:()=>{this.state.isPreviewMode?this.props.view.changeTextMode(TextMode.raw):this.props.view.changeTextMode(TextMode.parsed)},icon:this.state.isPreviewMode?ICONS.rawMode:ICONS.parsedMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"tray-mode",title:t$d("TRAY_MODE"),action:()=>{this.props.view.toggleTrayMode()},icon:ICONS.trayMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"fullscreen",title:this.state.isFullscreen?t$d("EXIT_FULLSCREEN"):t$d("GOTO_FULLSCREEN"),action:()=>{this.state.isFullscreen?this.props.view.exitFullscreen():this.props.view.gotoFullscreen()},icon:this.state.isFullscreen?ICONS.exitFullScreen:ICONS.gotoFullScreen,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"search",title:t$d("SEARCH"),action:()=>{search(this.props.view)},icon:ICONS.search,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"ocr",title:t$d("RUN_OCR"),action:e=>{this.props.view.plugin.settings.taskboneEnabled?this.props.view.plugin.taskbone.getTextForView(this.props.view,isCTRL(e)):new obsidian_module.Notice("Taskbone OCR is not enabled. Please go to plugins settings to enable it.",4e3)},icon:ICONS.ocr,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"openLink",title:t$d("OPEN_LINK_CLICK"),action:e=>{const t=new MouseEvent("click",{ctrlKey:e.ctrlKey||!(DEVICE.isIOS||DEVICE.isMacOS),metaKey:e.metaKey||DEVICE.isIOS||DEVICE.isMacOS,shiftKey:e.shiftKey,altKey:e.altKey});this.props.view.handleLinkClick(t)},icon:ICONS.openLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"openLinkProperties",title:t$d("OPEN_LINK_PROPS"),action:()=>{const e=new MouseEvent("click",{ctrlKey:!0,metaKey:!0,shiftKey:!1,altKey:!1});this.props.view.handleLinkClick(e)},icon:ICONS.openLinkProperties,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"save",title:t$d("FORCE_SAVE"),action:()=>{this.props.view.forceSave()},icon:saveIcon(this.state.isDirty),view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Export actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"lib",title:t$d("DOWNLOAD_LIBRARY"),action:()=>{this.props.view.plugin.exportLibrary()},icon:ICONS.exportLibrary,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"exportIMG",title:t$d("EXPORT_IMAGE"),action:()=>{const e=this.props.view;e.exportDialog||(e.exportDialog=new ExportDialog(e.plugin,e,e.file),e.exportDialog.createForm()),e.exportDialog.open()},icon:ICONS.ExportImage,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"md",title:t$d("OPEN_AS_MD"),action:()=>{this.props.view.openAsMarkdown()},icon:ICONS.switchToMarkdown,view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Insert actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"image",title:t$d("INSERT_IMAGE"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertImageDialog.start(this.props.view)},icon:ICONS.insertImage,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"pdf",title:t$d("INSERT_PDF"),action:()=>{this.props.centerPointer(),new InsertPDFModal(this.props.view.plugin,this.props.view).open()},icon:ICONS.insertPDF,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"insertMD",title:t$d("INSERT_MD"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertMDDialog.start(this.props.view)},icon:ICONS.insertMD,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"latex",title:t$d("INSERT_LATEX"),action:e=>{isALT(e)?this.props.view.openExternalLink("https://youtu.be/r08wk-58DPk"):(this.props.centerPointer(),insertLaTeXToView(this.props.view))},icon:ICONS.insertLaTeX,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link",title:t$d("INSERT_LINK"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertLinkDialog.start(this.props.view.file.path,this.props.view.addText)},icon:ICONS.insertLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link-to-element",title:t$d("INSERT_LINK_TO_ELEMENT"),action:e=>{isALT(e)?this.props.view.openExternalLink("https://youtu.be/yZQoJg2RCKI"):this.props.view.copyLinkToSelectedElementToClipboard(isCTRL(e)?"group=":isSHIFT(e)?"area=":"")},icon:ICONS.copyElementLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"import-svg",title:t$d("IMPORT_SVG"),action:e=>{this.props.view.plugin.importSVGDialog.start(this.props.view)},icon:ICONS.importSVG,view:this.props.view}))),this.renderScriptButtons(!1),this.renderScriptButtons(!0)))))}renderScriptButtons(e){if(0===Object.keys(this.state.scriptIconMap).length)return"";const t=`${this.props.view.plugin.settings.scriptFolderPath}/Downloaded/`,A=A=>e?A.startsWith(t):!A.startsWith(t);if(0===Object.keys(this.state.scriptIconMap).filter((e=>A(e))).length)return"";const i=new Set;Object.keys(this.state.scriptIconMap).filter((e=>A(e))).forEach((e=>i.add(this.state.scriptIconMap[e].group)));const n=Array.from(i).sort(((e,t)=>e>t?1:-1));return n.push(n.shift()),React__namespace.createElement(React__namespace.Fragment,null,n.map(((t,A)=>React__namespace.createElement("fieldset",{key:`${t}-${A}`},React__namespace.createElement("legend",null,e?t:""===t?"User":"User/"+t),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},Object.entries(this.state.scriptIconMap).filter((([e,A])=>A.group===t)).sort().map((([e,t])=>React__namespace.createElement(ActionButton,{key:e,title:t.name,action:async()=>{const t=this.props.view,A=t.plugin,i=app.vault.getAbstractFileByPath(e);i&&i instanceof obsidian_module.TFile&&A.scriptEngine.executeScript(t,await app.vault.read(i),A.scriptEngine.getScriptName(i),i)},longpress:async()=>{const A=this.props.view,i=A.excalidrawAPI,n=A.plugin;await n.loadSettings();const a=n.settings.pinnedScripts.indexOf(e);a>-1?(n.settings.pinnedScripts.splice(a,1),null==i||i.setToast({message:`Pin removed: ${t.name}`,duration:3e3,closable:!0})):(n.settings.pinnedScripts.push(e),null==i||i.setToast({message:`Pinned: ${t.name}`,duration:3e3,closable:!0})),await n.saveSettings(),app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedScripts()}))},icon:t.svgString?stringToSVG(t.svgString):ICONS.cog,view:this.props.view}))))))))}}const getElementsAtPointer=(e,t,A)=>t.filter((t=>{if(A&&t.type!==A)return!1;if(t.locked)return!1;const[i,n,a,r]=rotatedDimensions(t);return i<=e.x&&i+a>=e.x&&n<=e.y&&n+r>=e.y})),getTextElementAtPointer=(e,t)=>{const A=t.excalidrawAPI;if(!A)return{id:null,text:null};const i=getElementsAtPointer(e,A.getSceneElements(),"text");if(0==i.length)return{id:null,text:null};if(1===i.length)return{id:i[0].id,text:i[0].text};const n=i.filter((e=>{const A=t.textMode===TextMode.parsed?t.excalidrawData.getRawText(e.id):e.text;return!!A&&(!!A.match(REG_LINKINDEX_HYPERLINK)||!!REGEX_LINK.getRes(A).next().value)}));return 0==n.length?{id:i[0].id,text:i[0].text}:{id:n[0].id,text:n[0].text}},getImageElementAtPointer=(e,t)=>{const A=t.excalidrawAPI;if(!A)return;const i=getElementsAtPointer(e,A.getSceneElements(),"image");return 0===i.length?{id:null,fileId:null}:i.length>=1?{id:i[0].id,fileId:i[0].fileId}:void 0},getElementWithLinkAtPointer=(e,t)=>{const A=t.excalidrawAPI;if(!A)return;const i=getElementsAtPointer(e,A.getSceneElements()).filter((e=>e.link));return 0===i.length?{id:null,text:null}:i.length>=1?{id:i[0].id,text:i[0].link}:void 0},setDynamicStyle=(e,t,A,i)=>{var n,a,r,s,o,l,c,d,h,u,g,p,m,f;if("none"===i){null===(n=t.excalidrawContainer)||void 0===n||n.removeAttribute("style"),setTimeout((()=>t.updateScene({appState:{dynamicStyle:""}})));const e=null===(s=null===(r=null===(a=t.toolsPanelRef)||void 0===a?void 0:a.current)||void 0===r?void 0:r.containerRef)||void 0===s?void 0:s.current;if(e){let t=e.getAttribute("style");t=t.replace(/\-\-color\-primary.*/,""),e.setAttribute("style",t)}return}t.ownerDocument;const w="light"===(null===(c=null===(l=null===(o=null==t?void 0:t.excalidrawAPI)||void 0===o?void 0:o.getAppState)||void 0===l?void 0:l.call(o))||void 0===c?void 0:c.theme)||"light"===(null===(u=null===(h=null===(d=null==t?void 0:t.excalidrawData)||void 0===d?void 0:d.scene)||void 0===h?void 0:h.appState)||void 0===u?void 0:u.theme),E=()=>w?e.getCM(A):(t=>{const A=e.getCM(t),i=A.lightness;return A.lightnessTo(Math.abs(i-100))})(A),b=E().lightness,B=E().isDark(),v=app.getAccentColor(),C=()=>e.getCM(v),y=()=>e.getCM("#000000").lightnessTo(b),x="gray"===i,F=x?B?y().lighterBy(15):y().darkerBy(15):B?E().lighterBy(15).mix({color:y(),ratio:.6}):E().darkerBy(15).mix({color:y(),ratio:.6}),S=x?B?y().lighterBy(5):y().darkerBy(5):B?E().lighterBy(5).mix({color:y(),ratio:.6}):E().darkerBy(5).mix({color:y(),ratio:.6}),T=E().mix({color:B?"#f0f0f0":"#101010",ratio:.8}),I=e=>e.stringHEX({alpha:!1}),M=`--color-primary: ${I(C())};--color-primary-darker: ${I(C().darkerBy(10))};--color-primary-darkest: ${I(C().darkerBy(10))};--button-gray-1: ${I(F)};--button-gray-2: ${I(S)};--input-border-color: ${I(F)};--input-bg-color: ${I(S)};--input-label-color: ${I(T)};--island-bg-color: ${S.alphaTo(.93).stringHEX()};--popup-secondary-bg-color: ${S.alphaTo(.93).stringHEX()};--icon-fill-color: ${I(T)};--text-primary-color: ${I(T)};--overlay-bg-color: ${S.alphaTo(.6).stringHEX()};--popup-bg-color: ${I(F)};--color-gray-100: ${I(T)};--color-gray-40: ${I(T)};--color-gray-30: ${I(F)};--color-gray-80: ${I(F)};--sidebar-border-color: ${I(F)};--color-primary-light: ${I(C().lighterBy(10))};--button-hover-bg: ${I(F)};--sidebar-bg-color: ${S.alphaTo(.93).stringHEX()};--sidebar-shadow: ${I(F)};--popup-text-color: ${I(T)};--code-normal: ${I(T)};--code-background: ${I(S)};--h1-color: ${I(T)};--h2-color: ${I(T)};--h3-color: ${I(T)};--h4-color: ${I(T)};color: ${I(T)};--select-highlight-color: ${I(F)};`;null===(g=t.excalidrawContainer)||void 0===g||g.setAttribute("style",M),setTimeout((()=>t.updateScene({appState:{dynamicStyle:M}})));const k=null===(f=null===(m=null===(p=t.toolsPanelRef)||void 0===p?void 0:p.current)||void 0===m?void 0:m.containerRef)||void 0===f?void 0:f.current;if(k){let e=k.getAttribute("style");e=e.replace(/\-\-color\-primary.*/,""),k.setAttribute("style",e+M)}},renderWebView=(e,t,A,i)=>DEVICE.isDesktop?React__namespace.createElement("webview",{ref:e=>t.updateEmbeddableRef(A,e),className:"excalidraw__embeddable",title:"Excalidraw Embedded Content",allowFullScreen:!0,src:e,style:{overflow:"hidden",borderRadius:"var(--embeddable-radius)"}}):React__namespace.createElement("iframe",{ref:e=>t.updateEmbeddableRef(A,e),className:"excalidraw__embeddable",title:"Excalidraw Embedded Content",allowFullScreen:!0,allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",src:e,style:{overflow:"hidden",borderRadius:"var(--embeddable-radius)"}});function RenderObsidianView({element:e,linkText:t,view:A,containerRef:i,appState:n,theme:a}){var r,s,o;const{subpath:l,file:c}=processLinkText(t,A);if(!c)return null;const d=A.plugin.getPackage(A.ownerWindow).react,h=d.useRef(null),u=d.useRef(!1),g=d.useRef(!1),p=d.useCallback((e=>{g.current&&e.stopPropagation()}),[g.current]);d.useEffect((()=>{if(null==i?void 0:i.current)return KEYBOARD_EVENT_TYPES.forEach((e=>i.current.addEventListener(e,p))),i.current.addEventListener("click",m),()=>{(null==i?void 0:i.current)&&(KEYBOARD_EVENT_TYPES.forEach((e=>i.current.removeEventListener(e,p))),EXTENDED_EVENT_TYPES.forEach((e=>i.current.removeEventListener(e,p))),i.current.removeEventListener("click",m))}}),[]),d.useEffect((()=>{if(EXTENDED_EVENT_TYPES.forEach((e=>i.current.removeEventListener(e,p))),null==i?void 0:i.current)return g.current&&EXTENDED_EVENT_TYPES.forEach((e=>i.current.addEventListener(e,p))),()=>{(null==i?void 0:i.current)&&EXTENDED_EVENT_TYPES.forEach((e=>i.current.removeEventListener(e,p)))}}),[g.current,i.current]),d.useEffect((()=>{if(!(null==i?void 0:i.current))return;for(;i.current.hasChildNodes();)i.current.removeChild(i.current.lastChild);i.current.parentElement.style.padding="";const t=A.ownerDocument,n=new obsidian_module.WorkspaceSplit(app.workspace,"vertical");n.getRoot=()=>app.workspace[t===document?"rootSplit":"floatingSplit"],n.getContainer=()=>getContainerForDocument(t),n.containerEl.style.width="100%",n.containerEl.style.height="100%",n.containerEl.style.borderRadius="var(--embeddable-radius)",h.current={leaf:app.workspace.createLeafInParent(n,0),node:null};const a=()=>{app.workspace.activeLeaf===A.leaf&&DEVICE.isDesktop&&(A.ownerWindow.electronWindow.isAlwaysOnTop()||(A.ownerWindow.electronWindow.setAlwaysOnTop(!0),setTimeout((()=>{A.ownerWindow.electronWindow.setAlwaysOnTop(!1)}),500)))};return l&&A.canvasNodeFactory.isInitialized()?(a(),h.current.node=A.canvasNodeFactory.createFileNote(c,l,i.current,e.id),A.updateEmbeddableLeafRef(e.id,h.current)):(async()=>{var t,r;await h.current.leaf.openFile(c,Object.assign({active:!1,state:{mode:"preview"}},l?{eState:{subpath:l}}:{}));const s=null===(t=h.current.leaf.view)||void 0===t?void 0:t.getViewType();if("canvas"===s&&(null===(r=h.current.leaf.view.canvas)||void 0===r||r.setReadonly(!0)),"markdown"===s&&A.canvasNodeFactory.isInitialized())a(),await h.current.leaf.setViewState({state:{file:null}}),h.current.node=A.canvasNodeFactory.createFileNote(c,l,i.current,e.id);else{const e=n.containerEl.querySelector("div.workspace-leaf");e&&(e.style.borderRadius="var(--embeddable-radius)"),i.current.appendChild(n.containerEl)}patchMobileView(A),A.updateEmbeddableLeafRef(e.id,h.current)})(),()=>{}}),[t,l,i]),d.useEffect((()=>{var e;u.current&&((null===(e=h.current)||void 0===e?void 0:e.node)&&A.canvasNodeFactory.stopEditing(h.current.node),u.current=!1)}),[u.current,h]);const m=d.useCallback((t=>{var i,n,r;if(g.current&&t.stopPropagation(),g.current&&!u.current&&(null===(i=h.current)||void 0===i?void 0:i.leaf))if("markdown"===(null===(n=h.current.leaf.view)||void 0===n?void 0:n.getViewType())){const t=A.excalidrawAPI.getSceneElements().filter((t=>t.id===e.id))[0];if(!t||0!==t.angle)return void new obsidian_module.Notice("Sorry, cannot edit rotated markdown documents");const i=h.current.leaf.view.modes;if(!i)return;h.current.leaf.view.setMode(i.source),u.current=!0,patchMobileView(A)}else(null===(r=h.current)||void 0===r?void 0:r.node)&&A.canvasNodeFactory.startEditing(h.current.node,a)}),[null===(r=h.current)||void 0===r?void 0:r.leaf,e.id]);return d.useEffect((()=>{var t,a,r,s,o;if(!(null==i?void 0:i.current)||!(null==h?void 0:h.current))return;const l=g.current;if(g.current=(null===(t=n.activeEmbeddable)||void 0===t?void 0:t.element.id)===e.id&&"active"===(null===(a=n.activeEmbeddable)||void 0===a?void 0:a.state),l!==g.current)if("markdown"===(null===(s=null===(r=h.current.leaf)||void 0===r?void 0:r.view)||void 0===s?void 0:s.getViewType())){const e=h.current.leaf.view.modes;if(!e)return;if(!g.current)return h.current.leaf.view.setMode(e.preview),void(u.current=!1)}else(null===(o=h.current)||void 0===o?void 0:o.node)&&A.canvasNodeFactory.stopEditing(h.current.node)}),[i,h,g,null===(s=n.activeEmbeddable)||void 0===s?void 0:s.element,null===(o=n.activeEmbeddable)||void 0===o?void 0:o.state,e,A,t,l,c,a,u,A.canvasNodeFactory]),null}const CustomEmbeddable=({element:e,view:t,appState:A,linkText:i})=>{const n=t.plugin.getPackage(t.ownerWindow).react.useRef(null),a="dark"===t.excalidrawData.embeddableTheme?"theme-dark":"light"===t.excalidrawData.embeddableTheme?"theme-light":"auto"===t.excalidrawData.embeddableTheme?"dark"===A.theme?"theme-dark":"theme-light":isObsidianThemeDark()?"theme-dark":"theme-light";return React__namespace.createElement("div",{ref:n,style:{width:"100%",height:"100%",borderRadius:"var(--embeddable-radius)",color:"var(--text-normal)"},className:a},React__namespace.createElement(RenderObsidianView,{element:e,linkText:i,view:t,containerRef:n,appState:A,theme:a}))};var PreviewImageType;!function(e){e.PNG="PNG",e.SVGIMG="SVGIMG",e.SVG="SVG"}(PreviewImageType||(PreviewImageType={}));const DB_NAME="Excalidraw "+app.appId,CACHE_STORE="imageCache",BACKUP_STORE="drawingBAK",getKey=e=>`${e.filepath}#${e.blockref}#${e.sectionref}#${e.isDark?1:0}#${e.previewImageType===PreviewImageType.SVGIMG?1:e.previewImageType===PreviewImageType.PNG?0:2}#${e.scale}`;class ImageCache{constructor(e,t,A){this.initializationNotice=!1,this.obsidanURLCache=new Map,this.dbName=e,this.cacheStoreName=t,this.backupStoreName=A,this.db=null,this.isInitializing=!1,this.plugin=null,app.workspace.onLayoutReady((()=>this.initializeDB()))}async initializeDB(){if(!this.isInitializing&&null===this.db){this.isInitializing=!0;try{const e=indexedDB.open(this.dbName);if(e.onupgradeneeded=e=>{const t=e.target.result;t.objectStoreNames.contains(this.cacheStoreName)||t.createObjectStore(this.cacheStoreName),t.objectStoreNames.contains(this.backupStoreName)||t.createObjectStore(this.backupStoreName)},this.db=await new Promise(((t,A)=>{e.onsuccess=e=>{const A=e.target.result;t(A)},e.onerror=()=>{A(new Error(`Failed to open or create IndexedDB database: ${this.dbName}`))}})),!this.db.objectStoreNames.contains(this.cacheStoreName)||!this.db.objectStoreNames.contains(this.backupStoreName)){const e=this.db.version+1;this.db.close();const t=indexedDB.open(this.dbName,e);t.onupgradeneeded=e=>{const t=e.target.result;t.objectStoreNames.contains(this.cacheStoreName)||t.createObjectStore(this.cacheStoreName),t.objectStoreNames.contains(this.backupStoreName)||t.createObjectStore(this.backupStoreName)},await new Promise(((e,A)=>{t.onsuccess=()=>{t.result.close(),e()},t.onerror=()=>{A(new Error(`Failed to upgrade IndexedDB database: ${this.dbName}`))}})),this.db=await new Promise(((e,t)=>{const A=indexedDB.open(this.dbName);A.onsuccess=()=>{const t=A.result;e(t)},A.onerror=()=>{t(new Error(`Failed to open IndexedDB database: ${this.dbName}`))}}))}await this.purgeInvalidCacheFiles(),await this.purgeInvalidBackupFiles()}finally{this.isInitializing=!1,this.initializationNotice&&(new obsidian_module.Notice("Excalidraw Image Cache is Initialized - You may now retry opening your damaged drawing."),this.initializationNotice=!1),console.log("Initialized Excalidraw Image Cache")}}}async purgeInvalidCacheFiles(){const e=this.db.transaction(this.cacheStoreName,"readwrite").objectStore(this.cacheStoreName),t=app.vault.getFiles(),A=[],i=e.openCursor();return new Promise(((n,a)=>{i.onsuccess=i=>{const r=i.target.result;if(r){const i=r.key,n=i.split("#")[0],a=t.some((e=>e.path===n)),s=a?t.find((e=>e.path===n)):null;(!s||s&&s.stat.mtime>r.value.mtime||!r.value.blob)&&A.push(new Promise(((t,A)=>{const n=e.delete(r.primaryKey);n.onsuccess=()=>t(),n.onerror=()=>A(new Error(`Failed to delete file with key: ${i}`))}))),r.continue()}else Promise.all(A).then((()=>n())).catch((e=>a(e)))},i.onerror=()=>{a(new Error("Failed to purge invalid files from IndexedDB."))}}))}async purgeInvalidBackupFiles(){const e=this.db.transaction(this.backupStoreName,"readwrite").objectStore(this.backupStoreName),t=app.vault.getFiles(),A=[],i=e.openCursor();return new Promise(((n,a)=>{i.onsuccess=i=>{const r=i.target.result;if(r){const i=r.key,n=t.some((e=>e.path===i));n||A.push(new Promise(((t,A)=>{const n=e.delete(r.primaryKey);n.onsuccess=()=>t(),n.onerror=()=>A(new Error(`Failed to delete backup file with key: ${i}`))}))),r.continue()}else Promise.all(A).then((()=>n())).catch((e=>a(e)))},i.onerror=()=>{a(new Error("Failed to purge invalid backup files from IndexedDB."))}}))}async getObjectStore(e,t){return this.db.transaction(t,e).objectStore(t)}async getCacheData(e){const t=(await this.getObjectStore("readonly",this.cacheStoreName)).get(e);return new Promise(((e,A)=>{t.onsuccess=()=>{const A=t.result;e(A||null)},t.onerror=()=>{A(new Error("Failed to retrieve data from IndexedDB."))}}))}async getBackupData(e){const t=(await this.getObjectStore("readonly",this.backupStoreName)).get(e);return new Promise(((e,A)=>{t.onsuccess=()=>{const A=t.result;e(A||null)},t.onerror=()=>{A(new Error("Failed to retrieve backup data from IndexedDB."))}}))}isReady(){return!!this.db&&!this.isInitializing&&!!this.plugin&&this.plugin.settings.allowImageCache}async getImageFromCache(e){if(!this.isReady())return null;const t=getKey(e),A=await this.getCacheData(t),i=app.vault.getAbstractFileByPath(e.filepath.split("#")[0]);if(i&&i instanceof obsidian_module.TFile&&A&&A.mtime===i.stat.mtime){if(A.svg)return convertSVGStringToElement(A.svg);if(this.obsidanURLCache.has(t))return this.obsidanURLCache.get(t);const e=URL.createObjectURL(A.blob);return this.obsidanURLCache.set(t,e),e}}async getBAKFromCache(e){return this.isReady()?this.getBackupData(e):null}addImageToCache(e,t,A){if(!this.isReady())return;const i=app.vault.getAbstractFileByPath(e.filepath.split("#")[0]);if(!(i&&i instanceof obsidian_module.TFile))return;let n=null,a=null;A instanceof SVGSVGElement?n=A.outerHTML:a=A;const r={mtime:i.stat.mtime,blob:a,svg:n},s=this.db.transaction(this.cacheStoreName,"readwrite").objectStore(this.cacheStoreName),o=getKey(e);s.put(r,o),Boolean(n)||this.obsidanURLCache.set(o,t)}async addBAKToCache(e,t){this.isReady()&&this.db.transaction(this.backupStoreName,"readwrite").objectStore(this.backupStoreName).put(t,e)}async clearImageCache(){if(this.isReady())return this.clear(this.cacheStoreName,"Image cache was cleared")}async clearBackupCache(){if(this.isReady())return this.clear(this.backupStoreName,"All backups were cleared")}async clear(e,t){if(!this.isReady())return;const A=this.db.transaction([e],"readwrite").objectStore(e);return new Promise(((i,n)=>{const a=A.clear();a.onsuccess=()=>{new obsidian_module.Notice(t),i()},a.onerror=()=>n(new Error(`Failed to clear ${e}.`))}))}}const imageCache=new ImageCache(DB_NAME,CACHE_STORE,"drawingBAK");class CanvasNodeFactory{constructor(e){this.view=e,this.nodes=new Map,this.initialized=!1,this.isInitialized=()=>this.initialized}async initialize(){const e=app.internalPlugins.plugins.canvas;e._loaded||await e.load();const t=this.view.ownerDocument,A=new obsidian_module.WorkspaceSplit(app.workspace,"vertical");A.getRoot=()=>app.workspace[t===document?"rootSplit":"floatingSplit"],A.getContainer=()=>getContainerForDocument(t),this.leaf=app.workspace.createLeafInParent(A,0),this.canvas=e.views.canvas(this.leaf).canvas,this.initialized=!0}createFileNote(e,t,A,i){if(!this.initialized)return;t=null!=t?t:"",this.nodes.has(i)&&(this.canvas.removeNode(this.nodes.get(i)),this.nodes.delete(i));const n=this.canvas.createFileNode({pos:{x:0,y:0},file:e,subpath:t,save:!1});return n.setFilePath(e.path,t),n.render(),A.style.background="var(--background-primary)",A.appendChild(n.contentEl),this.nodes.set(i,n),n}startEditing(e,t){if(!this.initialized||!e)return;e.startEditing();const A=isObsidianThemeDark()?"theme-dark":"theme-light";A!==t&&(async()=>{var i,n,a,r,s,o;let l=0;for(;!(null===(a=null===(n=null===(i=e.child.editor)||void 0===i?void 0:i.containerEl)||void 0===n?void 0:n.parentElement)||void 0===a?void 0:a.parentElement)&&l++<100;)await sleep(25);(null===(o=null===(s=null===(r=e.child.editor)||void 0===r?void 0:r.containerEl)||void 0===s?void 0:s.parentElement)||void 0===o?void 0:o.parentElement)&&(e.child.editor.containerEl.parentElement.parentElement.classList.remove(A),e.child.editor.containerEl.parentElement.parentElement.classList.add(t),new MutationObserver((e=>{for(const i of e)if("attributes"===i.type&&"class"===i.attributeName){const e=i.target;e.classList.contains(A)&&(e.classList.remove(A),e.classList.add(t))}})).observe(e.child.editor.containerEl.parentElement.parentElement,{attributes:!0}))})()}stopEditing(e){this.initialized&&e&&e.child.editMode&&e.child.showPreview()}purgeNodes(){this.initialized&&(this.nodes.forEach((e=>{this.canvas.removeNode(e)})),this.nodes.clear())}}class EmbeddableMenu{constructor(e,t){this.view=e,this.containerRef=t,this.updateElement=(e,t,A)=>{if(!t)return;const i=this.view,n=`[[${app.metadataCache.fileToLinktext(A,i.file.path,"md"===A.extension)}${e}]]`;mutateElement(t,{link:n}),i.excalidrawData.elementLinks.set(t.id,n),i.setDirty(99),i.updateScene({appState:{activeEmbeddable:null}})},this.menuFadeTimeout=0,this.menuElementId=null}handleMouseEnter(){var e;clearTimeout(this.menuFadeTimeout),null===(e=this.containerRef.current)||void 0===e||e.style.setProperty("opacity","1")}handleMouseLeave(){const e=this;this.menuFadeTimeout=window.setTimeout((()=>{var t;null===(t=e.containerRef.current)||void 0===t||t.style.setProperty("opacity","0.2")}),5e3)}renderButtons(e){var t,A;const i=this.view,n=null==i?void 0:i.excalidrawAPI;if(!n)return null;if(!i.file)return null;const a=e.viewModeEnabled&&!i.allowFrameButtonsInViewMode;if(!e.activeEmbeddable||"active"!==e.activeEmbeddable.state||a)return this.menuElementId=null,this.menuFadeTimeout&&(clearTimeout(this.menuFadeTimeout),this.menuFadeTimeout=0),null;const r=null===(t=e.activeEmbeddable)||void 0===t?void 0:t.element;this.menuElementId!==r.id&&(this.menuElementId=r.id,this.handleMouseLeave());let s=r.link;if(!s)return null;const o=useDefaultExcalidrawFrame(r);let l=null===(A=r.link)||void 0===A?void 0:A.match(REG_LINKINDEX_HYPERLINK);if(!o&&!l){const t=REGEX_LINK.getRes(r.link).next();if(!t||!t.value&&t.done)return null;if(s=REGEX_LINK.getLink(t),l=s.match(REG_LINKINDEX_HYPERLINK),!l){const{subpath:t,file:A}=processLinkText(s,i);if(!A||"md"!==A.extension)return null;const{x:a,y:o}=sceneCoordsToViewportCoords({sceneX:r.x,sceneY:r.y},e),l=o-2.5*ROOTELEMENTSIZE-e.offsetTop+"px",c=a-e.offsetLeft+"px";return React__namespace.createElement("div",{ref:this.containerRef,className:"embeddable-menu",style:{top:l,left:c,opacity:1},onMouseEnter:()=>this.handleMouseEnter(),onPointerDown:()=>this.handleMouseEnter(),onMouseLeave:()=>this.handleMouseLeave()},React__namespace.createElement("div",{className:"Island",style:{position:"relative",display:"block"}},React__namespace.createElement(ActionButton,{key:"MarkdownSection",title:t$d("NARROW_TO_HEADING"),action:async()=>{const e=(await app.metadataCache.blockCache.getForFile({isCancelled:()=>!1},A)).blocks.filter((e=>{var t;return e.display&&"heading"===(null===(t=e.node)||void 0===t?void 0:t.type)})),i=[""].concat(e.map((e=>`#${cleanSectionHeading(e.display)}`))),n=[t$d("SHOW_ENTIRE_FILE")].concat(e.map((e=>e.display))),a=await ScriptEngine.suggester(app,n,i,"Select section from document");(a||""===a)&&a!==t&&this.updateElement(a,r,A)},icon:ICONS.ZoomToSection,view:i}),React__namespace.createElement(ActionButton,{key:"MarkdownBlock",title:t$d("NARROW_TO_BLOCK"),action:async()=>{var e,i,n;if(!A)return;const a=(await app.metadataCache.blockCache.getForFile({isCancelled:()=>!1},A)).blocks.filter((e=>{var t;return e.display&&"paragraph"===(null===(t=e.node)||void 0===t?void 0:t.type)})),s=["entire-file"].concat(a),o=[t$d("SHOW_ENTIRE_FILE")].concat(a.map((e=>{var t;return`${(null===(t=e.node)||void 0===t?void 0:t.id)?`#^${e.node.id}: `:""}${e.display.trim()}`}))),l=await ScriptEngine.suggester(app,o,s,"Select section from document");if(!l)return;if("entire-file"===l){if(""===t)return;return void this.updateElement("",r,A)}let c=l.node.id;if(!c||`#^${c}`!==t){if(!c){const t=null===(n=null===(i=null===(e=l.node)||void 0===e?void 0:e.position)||void 0===i?void 0:i.end)||void 0===n?void 0:n.offset;if(!t)return;c=nanoid();const a=await app.vault.cachedRead(A);if(!a)return;await app.vault.modify(A,a.slice(0,t)+` ^${c}`+a.slice(t)),await sleep(200)}this.updateElement(`#^${c}`,r,A)}},icon:ICONS.ZoomToBlock,view:i}),React__namespace.createElement(ActionButton,{key:"ZoomToElement",title:t$d("ZOOM_TO_FIT"),action:()=>{r&&n.zoomToFit([r],i.plugin.settings.zoomToFitMaxLevel,.1)},icon:ICONS.ZoomToSelectedElement,view:i})))}}if(l||o){const t=o?n.getHTMLIFrameElement(r.id):i.getEmbeddableElementById(r.id);if(!t||!t.contentWindow)return null;const{x:A,y:a}=sceneCoordsToViewportCoords({sceneX:r.x,sceneY:r.y},e),l=a-2.5*ROOTELEMENTSIZE-e.offsetTop+"px",c=A-e.offsetLeft+"px";return React__namespace.createElement("div",{ref:this.containerRef,className:"embeddable-menu",style:{top:l,left:c,opacity:1},onMouseEnter:()=>this.handleMouseEnter(),onPointerDown:()=>this.handleMouseEnter(),onMouseLeave:()=>this.handleMouseLeave()},React__namespace.createElement("div",{className:"Island",style:{position:"relative",display:"block"}},t.src!==s&&!t.src.startsWith("https://www.youtube.com")&&!t.src.startsWith("https://player.vimeo.com")&&React__namespace.createElement(ActionButton,{key:"Reload",title:t$d("RELOAD"),action:()=>{t.src=s},icon:ICONS.Reload,view:i}),React__namespace.createElement(ActionButton,{key:"Open",title:t$d("OPEN_IN_BROWSER"),action:()=>{i.openExternalLink(t.src.startsWith("https://www.youtube.com")||t.src.startsWith("https://player.vimeo.com")?r.link:t.src)},icon:ICONS.Globe,view:i}),React__namespace.createElement(ActionButton,{key:"ZoomToElement",title:t$d("ZOOM_TO_FIT"),action:()=>{r&&n.zoomToFit([r],i.plugin.settings.zoomToFitMaxLevel,.1)},icon:ICONS.ZoomToSelectedElement,view:i})))}}}var TextMode;!function(e){e.parsed="parsed",e.raw="raw"}(TextMode||(TextMode={}));const HIDE="excalidraw-hidden",SHOW="excalidraw-visible",addFiles=async(e,t,A)=>{if(!e||0===e.length||!t)return;const i=t.excalidrawAPI;if(!i)return;if(e=e.filter((e=>e&&e.size&&e.size.height>0&&e.size.width>0)),0===e.length)return;const n=scaleLoadedImage(t.getScene(),e);void 0===A&&(A=n.scene.appState.theme),n.dirty&&t.updateScene({elements:n.scene.elements,appState:n.scene.appState,commitToHistory:!1});for(const i of e)if(t.excalidrawData.hasFile(i.id)&&t.excalidrawData.getFile(i.id).setImage(i.dataURL,i.mimeType,i.size,A,i.hasSVGwithBitmap),t.excalidrawData.hasEquation(i.id)){const e=t.excalidrawData.getEquation(i.id).latex;t.excalidrawData.setEquation(i.id,{latex:e,isLoaded:!0})}i.addFiles(e)},warningUnknowSeriousError=()=>{new obsidian_module.Notice("WARNING: Excalidraw ran into an unknown problem!\n\nThere is a risk that your most recent changes cannot be saved.\n\nTo be on the safe side...\n1) Please select your drawing using CTRL/CMD+A and make a copy with CTRL/CMD+C.\n2) Then create an empty drawing in a new pane by CTRL/CMD+clicking the Excalidraw ribbon button,\n3) and paste your work to the new document with CTRL/CMD+V.",6e4)};class ExcalidrawView extends obsidian_module.TextFileView{constructor(e,t){super(e),this.getScene=null,this.addElements=null,this.getSelectedTextElement=null,this.getSelectedImageElement=null,this.getSelectedElementWithLink=null,this.addText=null,this.refresh=null,this.excalidrawRef=null,this.excalidrawAPI=null,this.excalidrawWrapperRef=null,this.toolsPanelRef=null,this.embeddableMenuRef=null,this.linksAlwaysOpenInANewPane=!1,this.allowFrameButtonsInViewMode=!1,this.lastSaveTimestamp=0,this.lastLoadedFile=null,this.modifierKeyDown={shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this.currentPosition={x:0,y:0},this.embeddableRefs=new Map,this.embeddableLeafRefs=new Map,this.semaphores={popoutUnload:!1,viewunload:!1,scriptsReady:!1,justLoaded:!1,preventAutozoom:!1,autosaving:!1,dirty:null,preventReload:!1,isEditingText:!1,saving:!1,forceSaving:!1,hoverSleep:!1,wheelTimeout:null},this.autosaveTimer=null,this.textMode=TextMode.raw,this.compatibilityMode=!1,this.isEditingTextResetTimer=null,this.id=this.leaf.id,this.getHookServer=()=>{var e;return null!==(e=this.hookServer)&&void 0!==e?e:this.plugin.ea},this.preventReloadResetTimer=null,this.hiddenMobileLeaves=[],this.offsetLeft=0,this.offsetTop=0,this.blockTextModeChange=!1,this.isLoaded=!1,this.activeLoader=null,this.nextLoader=null,this.initialContainerSizeUpdate=!1,this.previousSceneVersion=0,this.previousBackgroundColor="",this.previousTheme="",this.colorChangeTimer=null,this.getActiveEmbeddable=()=>{var e,t;if(!this.excalidrawAPI)return null;const A=this.excalidrawAPI.getAppState();return A.activeEmbeddable&&"active"===A.activeEmbeddable.state?this.getEmbeddableLeafElementById(null===(t=null===(e=A.activeEmbeddable)||void 0===e?void 0:e.element)||void 0===t?void 0:t.id):null},this.plugin=t,this.excalidrawData=new ExcalidrawData(t),this.hookServer=t.ea,this.canvasNodeFactory=new CanvasNodeFactory(this)}setHookServer(e){this.hookServer=e||this.plugin.ea}preventAutozoom(){this.semaphores.preventAutozoom=!0,setTimeout((()=>this.semaphores.preventAutozoom=!1),1500)}saveExcalidraw(e){if(!e){if(!this.getScene)return!1;e=this.getScene()}const t=`${this.file.path.substring(0,this.file.path.lastIndexOf(".md"))}.excalidraw`,A=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(t));A&&A instanceof obsidian_module.TFile?app.vault.modify(A,JSON.stringify(e,null,"\t")):app.vault.create(t,JSON.stringify(e,null,"\t"))}async exportExcalidraw(e){this.getScene&&this.file&&(app.isMobile?new Prompt(app,"Please provide filename",this.file.basename,"filename, leave blank to cancel action").openAndGetValue((async e=>{if(!e)return;e=`${e}.excalidraw`;const t=splitFolderAndFilename(this.file.path).folderpath;await checkAndCreateFolder(t);const A=getNewUniqueFilepath(app.vault,e,t);app.vault.create(A,JSON.stringify(this.getScene(),null,"\t")),new obsidian_module.Notice(`Exported to ${A}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.getScene(e),null,"\t")),`${this.file.basename}.excalidraw`))}async svg(e,t,A){const i=this.exportDialog,n={withBackground:i?!i.transparent:getWithBackground(this.plugin,this.file),withTheme:!0};return await getSVG(Object.assign(Object.assign({},e),{appState:Object.assign(Object.assign({},e.appState),{theme:null!=t?t:i?i.theme:getExportTheme(this.plugin,this.file,e.appState.theme),exportEmbedScene:void 0===A?!!i&&i.embedScene:A})}),n,i?i.padding:getExportPadding(this.plugin,this.file))}async saveSVG(e,t){if(!e){if(!this.getScene)return!1;e=this.getScene()}const A=async(A,i)=>{const n=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(A)),a=await this.svg(e,i,t);if(!a)return;const r=(new XMLSerializer).serializeToString(embedFontsInSVG(a,this.plugin));n&&n instanceof obsidian_module.TFile?await app.vault.modify(n,r):await app.vault.create(A,r)};this.plugin.settings.autoExportLightAndDark?(await A(getIMGFilename(this.file.path,"dark.svg"),"dark"),await A(getIMGFilename(this.file.path,"light.svg"),"light")):await A(getIMGFilename(this.file.path,"svg"))}async exportSVG(e,t){if(!this.getScene||!this.file)return;let A=await this.svg(this.getScene(t),void 0,e);A&&(A=embedFontsInSVG(A,this.plugin),download(null,svgToBase64(A.outerHTML),`${this.file.basename}.svg`))}async png(e,t,A){const i=this.exportDialog,n={withBackground:i?!i.transparent:getWithBackground(this.plugin,this.file),withTheme:!0};return await getPNG(Object.assign(Object.assign({},e),{appState:Object.assign(Object.assign({},e.appState),{theme:null!=t?t:i?i.theme:getExportTheme(this.plugin,this.file,e.appState.theme),exportEmbedScene:void 0===A?!!i&&i.embedScene:A})}),n,i?i.padding:getExportPadding(this.plugin,this.file),i?i.scale:getPNGScale(this.plugin,this.file))}async savePNG(e,t){if(!e){if(!this.getScene)return!1;e=this.getScene()}const A=async(A,i)=>{const n=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(A)),a=await this.png(e,i,t);a&&(n&&n instanceof obsidian_module.TFile?await app.vault.modifyBinary(n,await a.arrayBuffer()):await app.vault.createBinary(A,await a.arrayBuffer()))};this.plugin.settings.autoExportLightAndDark?(await A(getIMGFilename(this.file.path,"dark.png"),"dark"),await A(getIMGFilename(this.file.path,"light.png"),"light")):await A(getIMGFilename(this.file.path,"png"))}async exportPNGToClipboard(e,t){if(!this.getScene||!this.file)return;const A=await this.png(this.getScene(t),void 0,e);A&&await navigator.clipboard.write([new window.ClipboardItem({"image/png":A})])}async exportPNG(e,t){if(!this.getScene||!this.file)return;const A=await this.png(this.getScene(t),void 0,e);if(!A)return;const i=new FileReader;i.readAsDataURL(A);const n=this;i.onloadend=function(){const e=i.result;download(null,e,`${n.file.basename}.png`)}}async save(e=!0,t=!1){if(!this.isLoaded)return;if(this.semaphores.saving)return;this.semaphores.saving=!0;let A=!1;if(this.getScene&&this.excalidrawAPI&&this.isLoaded&&this.file&&app.vault.getAbstractFileByPath(this.file.path)){try{const i=Boolean(null!==this.semaphores.dirty&&this.semaphores.dirty||this.semaphores.autosaving||t),n=this.getScene();if(this.compatibilityMode?await this.excalidrawData.syncElements(n):await this.excalidrawData.syncElements(n,this.excalidrawAPI.getAppState().selectedElementIds)&&!this.semaphores.popoutUnload&&await this.loadDrawing(!1,this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((e=>e.isDeleted))),i){this.preventReloadResetTimer&&(clearTimeout(this.preventReloadResetTimer),this.preventReloadResetTimer=null),this.semaphores.preventReload=e,await super.save();const i=this.file.path,n=this.lastSavedData;if(setTimeout((()=>imageCache.addBAKToCache(i,n)),50),A=this.lastSaveTimestamp===this.file.stat.mtime&&!e&&t,this.lastSaveTimestamp=this.file.stat.mtime,this.clearDirty(),e){const e=this;this.preventReloadResetTimer=setTimeout((()=>e.semaphores.preventReload=!1),2e3)}}if(!A&&!this.semaphores.autosaving&&(!this.semaphores.viewunload||this.semaphores.popoutUnload)){const e=this.excalidrawData.autoexportPreference;(e===AutoexportPreference.inherit&&this.plugin.settings.autoexportSVG||e===AutoexportPreference.both||e===AutoexportPreference.svg)&&this.saveSVG(),(e===AutoexportPreference.inherit&&this.plugin.settings.autoexportPNG||e===AutoexportPreference.both||e===AutoexportPreference.png)&&this.savePNG(),!this.compatibilityMode&&this.plugin.settings.autoexportExcalidraw&&this.saveExcalidraw()}}catch(e){errorlog({where:"ExcalidrawView.save",fn:this.save,error:e}),warningUnknowSeriousError()}this.semaphores.saving=!1,A&&this.reload(!0,this.file)}else this.semaphores.saving=!1}getViewData(){var e,t,A;if(!this.getScene||!this.excalidrawData.loaded)return this.data;const i=this.getScene();if(!i)return this.data;if(!this.compatibilityMode){let i=this.data.search(/(^%%\n)?# Text Elements\n/m);if(-1==i&&(i=this.data.search(/(%%\n)?# Drawing\n/)),-1==i)return this.data;const n=(null===(e=this.exportDialog)||void 0===e?void 0:e.dirty)&&(null===(t=this.exportDialog)||void 0===t?void 0:t.saveSettings)?[["excalidraw-export-padding",this.exportDialog.padding.toString()],["excalidraw-export-pngscale",this.exportDialog.scale.toString()],["excalidraw-export-dark","dark"===this.exportDialog.theme?"true":"false"],["excalidraw-export-transparent",this.exportDialog.transparent?"true":"false"],[FRONTMATTER_KEY,this.textMode===TextMode.raw?"raw":"parsed"]]:[[FRONTMATTER_KEY,this.textMode===TextMode.raw?"raw":"parsed"]];(null===(A=this.exportDialog)||void 0===A?void 0:A.dirty)&&(this.exportDialog.dirty=!1);let a=updateFrontmatterInString(this.data.substring(0,i),n);const r=/(^---[\w\W]*?---\n)(!\[\[.*?]]\n(%%\n)?)/m;a.match(r)&&(a=a.replace(r,"$1")),this.excalidrawData.disableCompression||(this.excalidrawData.disableCompression=this.isEditedAsMarkdownInOtherView());const s=a+this.excalidrawData.generateMD(this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((e=>e.isDeleted)));return this.excalidrawData.disableCompression=!1,s}return this.compatibilityMode?JSON.stringify(i,null,"\t"):this.data}restoreMobileLeaves(){this.hiddenMobileLeaves.length>0&&(this.hiddenMobileLeaves.forEach((e=>{e[0].containerEl.style.display=e[1]})),this.hiddenMobileLeaves=[])}toggleDisableBinding(){const e=!this.excalidrawAPI.getAppState().invertBindingBehaviour;this.updateScene({appState:{invertBindingBehaviour:e}}),new obsidian_module.Notice(e?"Inverted Mode: Default arrow binding is now disabled. Use CTRL/CMD to temporarily enable binding when needed.":"Normal Mode: Arrow binding is now enabled. Use CTRL/CMD to temporarily disable binding when needed.")}toggleFrameRendering(){const e=this.excalidrawAPI.getAppState().frameRendering;this.updateScene({appState:{frameRendering:Object.assign(Object.assign({},e),{enabled:!e.enabled})}}),new obsidian_module.Notice(e.enabled?"Frame Rendering: Enabled":"Frame Rendering: Disabled")}toggleFrameClipping(){const e=this.excalidrawAPI.getAppState().frameRendering;this.updateScene({appState:{frameRendering:Object.assign(Object.assign({},e),{clip:!e.clip})}}),new obsidian_module.Notice(e.clip?"Frame Clipping: Enabled":"Frame Clipping: Disabled")}gotoFullscreen(){this.plugin.leafChangeTimeout&&(clearTimeout(this.plugin.leafChangeTimeout),this.plugin.leafChangeTimeout=null),this.excalidrawWrapperRef&&(this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!0),(e=>{for(;e&&!e.hasClass("workspace-split");)e.addClass(SHOW),e=e.parentElement;e&&(e.addClass(SHOW),e.querySelectorAll(`div.workspace-split:not(.${SHOW})`).forEach((e=>e.addClass(SHOW))),e.querySelector(`div.workspace-leaf-content.${SHOW} > .view-header`).addClass(SHOW),e.querySelectorAll(`div.workspace-tab-container.${SHOW} > div.workspace-leaf:not(.${SHOW})`).forEach((e=>e.addClass(SHOW))),e.querySelectorAll(`div.workspace-tabs.${SHOW} > div.workspace-tab-header-container`).forEach((e=>e.addClass(SHOW))),e.querySelectorAll(`div.workspace-split.${SHOW} > div.workspace-tabs:not(.${SHOW})`).forEach((e=>e.addClass(SHOW))));const t=this.ownerDocument;t.body.querySelectorAll(`div.workspace-split:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),t.body.querySelector(`div.workspace-leaf-content.${SHOW} > .view-header`).addClass(HIDE),t.body.querySelectorAll(`div.workspace-tab-container.${SHOW} > div.workspace-leaf:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),t.body.querySelectorAll(`div.workspace-tabs.${SHOW} > div.workspace-tab-header-container`).forEach((e=>e.addClass(HIDE))),t.body.querySelectorAll(`div.workspace-split.${SHOW} > div.workspace-tabs:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),t.body.querySelectorAll("div.workspace-ribbon").forEach((e=>e.addClass(HIDE))),t.body.querySelectorAll("div.mobile-navbar").forEach((e=>e.addClass(HIDE))),t.body.querySelectorAll("div.status-bar").forEach((e=>e.addClass(HIDE)))})(this.contentEl))}isFullscreen(){return Boolean(document.body.querySelector(".excalidraw-hidden"))}exitFullscreen(){this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!1);const e=this.ownerDocument;e.querySelectorAll(".excalidraw-hidden").forEach((e=>e.removeClass(HIDE))),e.querySelectorAll(".excalidraw-visible").forEach((e=>e.removeClass(SHOW)))}removeLinkTooltip(){const e=this.ownerDocument.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");e&&e.classList.remove("excalidraw-tooltip--visible")}handleLinkHookCall(e,t,A){if(this.getHookServer().onLinkClickHook)try{if(!this.getHookServer().onLinkClickHook(e,t,A,this,this.getHookServer()))return!0}catch(e){errorlog({where:"ExcalidrawView.onLinkOpen",fn:this.getHookServer().onLinkClickHook,error:e})}return!1}openExternalLink(e,t){return!!e.match(REG_LINKINDEX_HYPERLINK)&&(window.open(e,"_blank"),!0)}openTagSearch(e){const t=e.matchAll(/#([\p{Letter}\p{Emoji_Presentation}\p{Number}\/_-]+)/gu).next();if(!t.value||t.value.length<2)return;const A=app.workspace.getLeavesOfType("search");0!=A.length&&(A[0].view.setQuery(`tag:${t.value[1]}`),app.workspace.revealLeaf(A[0]),this.isFullscreen()&&this.exitFullscreen())}async linkClick(e,t,A,i,n){var a,r,s,o,l;t||(t={id:null,text:null}),A||(A={id:null,fileId:null}),i||(i={id:null,text:null}),n||(n={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,altKey:e.altKey});const c=linkClickModifierType(n);let d=null,h=null,u=null;if((null==t?void 0:t.id)||(null==i?void 0:i.id)){if(u=null!==(a=null==i?void 0:i.text)&&void 0!==a?a:this.textMode===TextMode.parsed?this.excalidrawData.getRawText(t.id):t.text,!u)return;u=u.replaceAll("\n","");const A=null!==(r=t.id)&&void 0!==r?r:i.id,n=this.excalidrawAPI.getSceneElements().filter((e=>e.id===A))[0];if(this.handleLinkHookCall(n,u,e))return;if(this.openExternalLink(u))return;const s=REGEX_LINK.getResList(u);let o=s[0];if(s.length>1&&(o=await ScriptEngine.suggester(app,s.filter((e=>Boolean(e.value))).map((e=>REGEX_LINK.getLink(e))),s.filter((e=>Boolean(e.value))),"Select link to open"),!o))return;if(!(null==o?void 0:o.value))return void this.openTagSearch(u);if(u=REGEX_LINK.getLink(o),this.openExternalLink(u))return;if(u.search("#")>-1){const e=getLinkParts(u,this.file);h=`#${e.isBlockRef?"^":""}${e.ref}`,u=e.path}if(u.match(REG_LINKINDEX_INVALIDCHARS))return void new obsidian_module.Notice(t$d("FILENAME_INVALID_CHARS"),4e3);d=this.app.metadataCache.getFirstLinkpathDest(u,this.file.path)}if(null==A?void 0:A.id){if(this.excalidrawData.hasEquation(A.fileId)){const e=this.excalidrawData.getEquation(A.fileId).latex;return void new Prompt(app,t$d("ENTER_LATEX"),e,"").openAndGetValue((async t=>{t&&t!==e&&(this.excalidrawData.setEquation(A.fileId,{latex:t,isLoaded:!1}),await this.save(!1),await updateEquation(t,A.fileId,this,addFiles,this.plugin),this.setDirty(1))}))}if(this.excalidrawData.hasMermaid(A.fileId))return void(shouldRenderMermaid&&this.excalidrawAPI.setActiveTool({type:"mermaid"}));if(await this.save(!1),this.excalidrawData.hasFile(A.fileId)){const e=this.excalidrawData.getFile(A.fileId);if(e.isHyperlink)return void window.open(e.hyperlink,"_blank");if("md-properties"===c&&"md"===e.file.extension&&!this.plugin.isExcalidrawFile(e.file)){const t=async t=>{t&&e.linkParts.original!==t&&(e.resetImage(this.file.path,t),this.setDirty(2),await this.save(!1),await this.loadSceneFiles())};return void GenericInputPrompt.Prompt(this,this.plugin,this.app,"Customize the link",void 0,e.linkParts.original,[{caption:"✅",action:t}],1,!1,(e=>e.createEl("p",{text:fragWithHTML("Do not add [[square brackets]] around the filename!
Follow this format when editing your link:
filename#^blockref|WIDTHxMAXHEIGHT")})),!1).then(t,(()=>{}))}u=e.file.path,d=e.file,"pdf"===d.extension.toLowerCase()&&(h=null===(s=e.linkParts.original.match(/(#.*)$/))||void 0===s?void 0:s[1])}}if(!u)return void new obsidian_module.Notice(t$d("LINK_BUTTON_CLICK_NO_TEXT"),2e4);const g=null!==(l=null!==(o=A.id)&&void 0!==o?o:t.id)&&void 0!==l?l:i.id,p=this.excalidrawAPI.getSceneElements().filter((e=>e.id===g))[0];if(!this.handleLinkHookCall(p,u,e))try{if("active-pane"!==c&&this.isFullscreen()&&this.exitFullscreen(),!d)return void new NewFileActions(this.plugin,u,n,this).open();this.linksAlwaysOpenInANewPane&&!anyModifierKeysPressed(n)&&(n=emulateKeysForLinkClick("new-pane"));const e=getLeaf(this.plugin,this.leaf,n);try{const t=app.plugins.plugins["drawio-obsidian"];if(t&&t._loaded&&"svg"===d.extension){const t=await this.app.vault.cachedRead(d);if(/(<|\<)(mxfile|mxgraph)/i.test(t))return void e.setViewState({type:"diagram-edit",state:{file:d.path}})}}catch(e){console.error(e)}await e.openFile(d,Object.assign({active:!this.linksAlwaysOpenInANewPane},h?{eState:{subpath:h}}:{}))}catch(e){new obsidian_module.Notice(e,4e3)}}async handleLinkClick(e){this.removeLinkTooltip();const t=this.getSelectedTextElement(),A=(null==t?void 0:t.id)?null:this.getSelectedImageElement(),i=(null==A?void 0:A.id)||(null==t?void 0:t.id)?null:this.getSelectedElementWithLink();this.linkClick(e,t,A,i)}onResize(){var e,t;if(this.plugin.leafChangeTimeout)return;const A=this.excalidrawAPI;this.plugin.settings.zoomToFitOnResize&&this.excalidrawRef&&!this.semaphores.isEditingText&&A&&"text"!==(null===(t=null===(e=A.getAppState())||void 0===e?void 0:e.editingElement)||void 0===t?void 0:t.type)&&this.zoomToFit(!1)}getSceneVersion(e){return this.excalidrawGetSceneVersion||(this.excalidrawGetSceneVersion=this.plugin.getPackage(this.ownerWindow).excalidrawLib.getSceneVersion),this.excalidrawGetSceneVersion(e.filter((e=>!e.isDeleted)))}async forceSave(e=!1){this.semaphores.autosaving||this.semaphores.saving?e||new obsidian_module.Notice("Force Save aborted because saving is in progress)"):(this.preventReloadResetTimer&&(clearTimeout(this.preventReloadResetTimer),this.preventReloadResetTimer=null),this.semaphores.preventReload=!1,this.semaphores.forceSaving=!0,await this.save(!1,!0),this.plugin.triggerEmbedUpdates(),this.loadSceneFiles(),this.semaphores.forceSaving=!1,e||new obsidian_module.Notice("Save successful",1e3))}onload(){const e=Boolean(void 0===this.containerEl.onWindowMigrated);app.isMobile||e||this.containerEl.onWindowMigrated((()=>this.leaf.rebuildView()));const t=app.isMobile?document:this.containerEl.ownerDocument;this.ownerDocument=t,this.ownerWindow=this.ownerDocument.defaultView,this.plugin.getPackage(this.ownerWindow),this.semaphores.scriptsReady=!0,this.wheelEvent=e=>{this.semaphores.wheelTimeout&&clearTimeout(this.semaphores.wheelTimeout),this.semaphores.hoverSleep&&this.clearHoverPreview&&this.clearHoverPreview(),this.semaphores.wheelTimeout=setTimeout((()=>{clearTimeout(this.semaphores.wheelTimeout),this.semaphores.wheelTimeout=null}),1e3)},this.containerEl.addEventListener("wheel",this.wheelEvent,{passive:!1}),this.addAction("ScriptEngine",t$d("INSTALL_SCRIPT_BUTTON"),(()=>{new ScriptInstallPrompt(this.plugin).open()})),this.diskIcon=this.addAction("save",t$d("FORCE_SAVE"),(async()=>this.forceSave())),this.textIsRaw_Element=this.addAction("presentation",t$d("RAW"),(()=>this.changeTextMode(TextMode.parsed))),this.textIsParsed_Element=this.addAction("quote-glyph",t$d("PARSED"),(()=>this.changeTextMode(TextMode.raw))),this.linkAction_Element=this.addAction("link",t$d("OPEN_LINK"),(e=>this.handleLinkClick(e)));const A=this;app.workspace.onLayoutReady((async()=>{this.canvasNodeFactory.initialize(),A.contentEl.addClass("excalidraw-view"),await A.addSlidingPanesListner(),A.addParentMoveObserver(),A.onKeyUp=e=>{A.modifierKeyDown={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}},A.onKeyDown=e=>{this.modifierKeyDown={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}},A.ownerWindow.addEventListener("keydown",A.onKeyDown,!1),A.ownerWindow.addEventListener("keyup",A.onKeyUp,!1)})),this.setupAutosaveTimer(),super.onload()}async addSlidingPanesListner(){const e=this;this.slidingPanesListner=()=>{e.refresh&&e.refresh()};let t=app.workspace.rootSplit;for(;!t;)await sleep(50),t=app.workspace.rootSplit;t.containerEl.addEventListener("scroll",this.slidingPanesListner)}removeSlidingPanesListner(){var e;this.slidingPanesListner&&(null===(e=app.workspace.rootSplit.containerEl)||void 0===e||e.removeEventListener("scroll",this.slidingPanesListner))}addParentMoveObserver(){var e;const t=null!==(e=getParentOfClass(this.containerEl,"popover"))&&void 0!==e?e:getParentOfClass(this.containerEl,"workspace-leaf");if(!t)return;const A=t.classList.contains("popover");this.offsetLeft=t.offsetLeft,this.offsetTop=t.offsetTop;const i=this;this.parentMoveObserver=new MutationObserver((async e=>{const t=e[0].target;if(!(t instanceof HTMLElement))return;const{offsetLeft:A,offsetTop:n}=t;A===i.offsetLeft&&n==i.offsetTop||(i.refresh&&i.refresh(),i.offsetLeft=A,i.offsetTop=n)})),this.parentMoveObserver.observe(t,{attributeOldValue:!0,attributeFilter:A?["data-x","data-y"]:["class","style"]})}removeParentMoveObserver(){this.parentMoveObserver&&this.parentMoveObserver.disconnect()}setTheme(e){const t=this.excalidrawAPI;if(!this.excalidrawRef||!t)return;if(this.file&&hasExportTheme(this.plugin,this.file))return;const A=t.getAppState();this.excalidrawData.scene.theme=e,this.updateScene({appState:Object.assign(Object.assign({},A),{theme:e}),commitToHistory:!1})}async changeTextMode(e,t=!0){if(this.compatibilityMode)return;if(this.blockTextModeChange)return;this.blockTextModeChange=!0,this.textMode=e,e===TextMode.parsed?(this.textIsRaw_Element.hide(),this.textIsParsed_Element.show()):(this.textIsRaw_Element.show(),this.textIsParsed_Element.hide()),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setPreviewMode(e===TextMode.parsed);const A=this.excalidrawAPI;A&&t&&(await this.save(),this.preventAutozoom(),await this.excalidrawData.loadData(this.data,this.file,this.textMode),this.excalidrawData.scene.appState.theme=A.getAppState().theme,await this.loadDrawing(!1),A.history.clear()),this.prevTextMode=this.textMode,this.blockTextModeChange=!1}setupAutosaveTimer(){const e=async()=>{var t;if(!this.isLoaded)return void(this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval));const A=this.excalidrawAPI;if(!A)return void warningUnknowSeriousError();const i=A.getAppState(),n=null!==i.editingElement;if(this.refresh(),!this.semaphores.dirty||this.semaphores.dirty!=(null===(t=this.file)||void 0===t?void 0:t.path)||!this.plugin.settings.autosave||this.semaphores.forceSaving||this.semaphores.autosaving||n||null!==i.draggingElement)this.autosaveTimer=setTimeout(e,this.plugin.activeExcalidrawView===this&&this.semaphores.dirty&&this.plugin.settings.autosave?1e3:this.plugin.settings.autosaveInterval);else{if(this.autosaveTimer=null,this.excalidrawRef){this.semaphores.autosaving=!0;const e=this;this.save().then((()=>e.semaphores.autosaving=!1))}this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval)}};this.autosaveFunction=e,this.autosaveTimer&&(clearTimeout(this.autosaveTimer),this.autosaveTimer=null),this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval)}onunload(){var e,t,A,i,n,a,r;if(this.restoreMobileLeaves(),this.semaphores.viewunload=!0,this.semaphores.popoutUnload=this.ownerDocument!==document&&0===this.ownerDocument.body.querySelectorAll(".workspace-tab-header").length,null===(e=this.ownerWindow)||void 0===e||e.removeEventListener("keydown",this.onKeyDown,!1),null===(t=this.ownerWindow)||void 0===t||t.removeEventListener("keyup",this.onKeyUp,!1),this.containerEl.removeEventListener("wheel",this.wheelEvent,!1),this.getHookServer().onViewUnloadHook)try{this.getHookServer().onViewUnloadHook(this)}catch(e){errorlog({where:"ExcalidrawView.onunload",fn:this.getHookServer().onViewUnloadHook,error:e})}const s=null===(i=null===(A=this.containerEl)||void 0===A?void 0:A.ownerDocument)||void 0===i?void 0:i.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");s&&(null===(a=null===(n=this.containerEl)||void 0===n?void 0:n.ownerDocument)||void 0===a||a.body.removeChild(s)),this.removeParentMoveObserver(),this.removeSlidingPanesListner(),this.autosaveTimer&&(clearInterval(this.autosaveTimer),this.autosaveTimer=null);const o=null===(r=this.file)||void 0===r?void 0:r.path,l=this.plugin;o&&setTimeout((()=>{l.triggerEmbedUpdates(o)}),300)}async reload(e=!1,t){if(this.semaphores.preventReload)return void(this.semaphores.preventReload=!1);if(this.semaphores.saving)return;if(this.lastLoadedFile=null,this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),this.compatibilityMode)return void this.clearDirty();const A=this.excalidrawAPI;if(!this.excalidrawRef||!this.file||!A)return;const i=t&&t===this.file;i&&(this.data=await app.vault.read(t),this.preventAutozoom()),e?await this.excalidrawData.loadData(this.data,this.file,this.textMode):await this.excalidrawData.setTextMode(this.textMode),this.excalidrawData.scene.appState.theme=A.getAppState().theme,await this.loadDrawing(i),this.clearDirty()}async zoomToElementId(e,t){let A=0;for(;!this.excalidrawAPI&&A++<100;)await sleep(50);const i=this.excalidrawAPI;if(!i)return;const n=i.getSceneElements();let a=n.filter((t=>t.id===e));if(0!==a.length){if(t){const e=this.plugin.ea.getElementsInTheSameGroupWithElement(a[0],n);e.length>0&&(a=e)}this.preventAutozoom(),this.zoomToElements(!i.getAppState().viewModeEnabled,a)}}setEphemeralState(e){if(!e)return;const t=this;let A=null;e.match&&e.match.content&&e.match.matches&&1===e.match.matches.length&&2===e.match.matches[0].length&&(A=[e.match.content.substring(e.match.matches[0][0],e.match.matches[0][1])]);const i=async()=>{var e,A;let i=0;for(;(t.semaphores.justLoaded||!t.isLoaded||!t.excalidrawAPI||(null===(A=null===(e=t.excalidrawAPI)||void 0===e?void 0:e.getAppState())||void 0===A?void 0:A.isLoading))&&i++<100;)await sleep(50)},n=getEmbeddedFilenameParts(e.subpath);n.hasBlockref&&setTimeout((async()=>{await i(),setTimeout((()=>t.zoomToElementId(n.blockref,n.hasGroupref)))})),n.hasSectionref?A=[`# ${n.sectionref}`]:e.line&&e.line>0&&(A=[this.data.split("\n")[e.line-1]]),A&&setTimeout((async()=>{await i();const e=t.excalidrawAPI;if(!e)return;if(e.getAppState().isLoading)return;const a=e.getSceneElements();if(1===A.length&&A[0].startsWith("[")){let i=REGEX_LINK.getResList(A[0])[0];if(i){const A=REGEX_LINK.getLink(i);if(A){const i=t.plugin.app.metadataCache.getFirstLinkpathDest(A,t.file.path);if(i){let A=[];if(t.excalidrawData.files.forEach(((e,t)=>{var n;(null===(n=e.file)||void 0===n?void 0:n.path)===i.path&&A.push(t)})),A.length>0){const i=a.filter((e=>"image"===e.type&&A.includes(e.fileId)));i.length>0&&(this.preventAutozoom(),setTimeout((()=>t.zoomToElements(!e.getAppState().viewModeEnabled,i))))}}}}}t.selectElementsMatchingQuery(a,A,!e.getAppState().viewModeEnabled,n.hasSectionref,n.hasGroupref)})),super.setEphemeralState(e)}clear(){this.canvasNodeFactory.purgeNodes(),this.embeddableRefs.clear(),this.embeddableLeafRefs.clear(),delete this.exportDialog;const e=this.excalidrawAPI;this.excalidrawRef&&e&&(this.activeLoader&&(this.activeLoader.terminate=!0,this.activeLoader=null),this.nextLoader=null,e.resetScene(),this.previousSceneVersion=0)}async setViewData(e,t=!1){this.lastLoadedFile!==this.file&&(this.isLoaded=!1,this.file&&(this.plugin.settings.showNewVersionNotification&&checkExcalidrawVersion(app),t&&this.clear(),this.lastSaveTimestamp=this.file.stat.mtime,this.lastLoadedFile=this.file,e=this.data=e.replaceAll("\r\n","\n").replaceAll("\r","\n"),app.workspace.onLayoutReady((async()=>{if(this.compatibilityMode="excalidraw"===this.file.extension,await this.plugin.loadSettings(),this.compatibilityMode)this.textIsRaw_Element.hide(),this.textIsParsed_Element.hide(),this.linkAction_Element.hide(),this.textMode=TextMode.raw,await this.excalidrawData.loadLegacyData(e,this.file),this.plugin.settings.compatibilityMode||new obsidian_module.Notice(t$d("COMPATIBILITY_MODE"),4e3),this.excalidrawData.disableCompression=!0;else{this.linkAction_Element.show(),this.excalidrawData.disableCompression=!1;const t=getTextMode(e);this.changeTextMode(t,!1);try{if(!await this.excalidrawData.loadData(e,this.file,this.textMode))return}catch(e){if(errorlog({where:"ExcalidrawView.setViewData",error:e}),"iframe conversion canceled"===e.message)return void this.setMarkdownView();const t=this.file,A=this.plugin,i=this.leaf;return(async()=>{let n=!0,a=0;const r=Date.now();for(;!imageCache.isReady()&&n;){const e=`You've been now wating for ${Math.round((Date.now()-r)/1e3)} seconds. `;imageCache.initializationNotice=!0;const t=new ConfirmationPrompt(A,`${a>0?a%4==0?e+"The CACHE is still loading.

":a%4==1?e+"Watch the top rigth corner for the notification.

":a%4==2?e+"I really, really hope the backup will work for you!

":e+"I am sorry, it is taking a while, there is not much I can do...

":""}${t$d("CACHE_NOT_READY")}`);n=await t.waitForClose,a++}const s=await imageCache.getBAKFromCache(t.path);s?new ConfirmationPrompt(A,t$d("BACKUP_AVAILABLE")).waitForClose.then((async e=>{e&&(await app.vault.modify(t,s),A.excalidrawFileModes[i.id||t.path]="excalidraw",A.setExcalidrawView(i))})):new obsidian_module.Notice(`Error loading drawing:\n${e.message}${"Cannot read property 'index' of undefined"===e.message?"\n'# Drawing' section is likely missing":""}\n\nTry manually fixing the file or restoring an earlier version from sync history.`,1e4)})(),void this.setMarkdownView()}}if(await this.loadDrawing(!0),this.plugin.ea.onFileOpenHook)try{await this.plugin.ea.onFileOpenHook({ea:getEA(this),excalidrawFile:this.file,view:this})}catch(e){errorlog({where:"ExcalidrawView.setViewData.onFileOpenHook",error:e})}const t=this.excalidrawData.getOnLoadScript();if(t){const e=this,A=this.file.basename+"-onlaod-script",i=()=>{e.excalidrawAPI?e.plugin.scriptEngine.executeScript(e,t,A,this.file):setTimeout(i,200)};i()}this.isLoaded=!0}))))}getGridColor(e,t){const A=this.plugin.ea.getCM(e),i=A.isDark(),n=(i?A.lighterBy(7):A.darkerBy(7)).stringHEX();return{Bold:(i?A.lighterBy(14):A.darkerBy(14)).stringHEX(),Regular:n,MajorGridFrequency:t.gridColor.MajorGridFrequency}}async loadSceneFiles(){if(!this.excalidrawAPI)return;const e=new EmbeddedFilesLoader(this.plugin),t=e=>{this.nextLoader=null,this.activeLoader=e,e.loadSceneFiles(this.excalidrawData,((e,A,i=!0)=>{e&&(addFiles(e,this,A),i&&(this.activeLoader=null,this.nextLoader?t(this.nextLoader):this.excalidrawData.getFiles().some((e=>{if(e&&!e.file&&e.attemptCounter<30){const e=this,t=this.file.path;return setTimeout((async()=>{e&&e.excalidrawAPI&&t===e.file.path&&e.loadSceneFiles()}),2e3),!0}return!1}))))}),0)};this.activeLoader?this.nextLoader=e:t(e)}async synchronizeWithData(e){let t=0;for(;this.semaphores.saving&&t++<30;)await sleep(100);if(t>=30)return void errorlog({where:"ExcalidrawView.synchronizeWithData",message:`Aborting sync with received file (${this.file.path}) because semaphores.saving remained true for ower 3 seconds`,fn:this.synchronizeWithData});this.semaphores.saving=!0;let A=!1;try{const t=e.deletedElements.map((e=>e.id)),i=this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((e=>!t.contains(e.id))),n=i.map((e=>e.id)),a=t=>{switch(t.type){case"text":this.excalidrawData.textElements.set(t.id,e.textElements.get(t.id));break;case"image":e.getFile(t.fileId)?(this.excalidrawData.setFile(t.fileId,e.getFile(t.fileId)),A=!0):e.getEquation(t.fileId)&&(this.excalidrawData.setEquation(t.fileId,e.getEquation(t.fileId)),A=!0)}e.elementLinks.has(t.id)&&this.excalidrawData.elementLinks.set(t.id,e.elementLinks.get(t.id))};e.scene.elements.forEach(((t,r,s)=>{const o=i.filter((e=>e.id===t.id))[0];if(o&&(o.version0&&a.viewModeEnabled,l=this.isLoaded?s.getAppState().zenModeEnabled:a.zenModeEnabled;s.setLocalFont(this.plugin.settings.experimentalEnableFourthFont),this.updateScene({elements:n.elements.concat(null!=t?t:[]),files:n.files,commitToHistory:!0},e),this.updateScene({appState:Object.assign(Object.assign(Object.assign({},n.appState),this.excalidrawData.selectedElementIds?this.excalidrawData.selectedElementIds:{}),{zenModeEnabled:l,viewModeEnabled:o,linkOpacity:this.excalidrawData.getLinkOpacity(),trayModeEnabled:this.plugin.settings.defaultTrayMode,penMode:r,penDetected:r,allowPinchZoom:this.plugin.settings.allowPinchZoom,allowWheelZoom:this.plugin.settings.allowWheelZoom,pinnedScripts:this.plugin.settings.pinnedScripts,customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)})}),this.app.workspace.getActiveViewOfType(ExcalidrawView)===this.leaf.view&&this.excalidrawWrapperRef&&(null===(i=null===(A=this.excalidrawWrapperRef.current)||void 0===A?void 0:A.firstElementChild)||void 0===i||i.focus()),this.onAfterLoadScene()}else this.instantiateExcalidraw({elements:n.elements,appState:Object.assign(Object.assign({},n.appState),{zenModeEnabled:a.zenModeEnabled,viewModeEnabled:n.elements.length>0&&a.viewModeEnabled,linkOpacity:this.excalidrawData.getLinkOpacity(),trayModeEnabled:this.plugin.settings.defaultTrayMode,penMode:r,penDetected:r,allowPinchZoom:this.plugin.settings.allowPinchZoom,allowWheelZoom:this.plugin.settings.allowWheelZoom,pinnedScripts:this.plugin.settings.pinnedScripts,customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)}),files:n.files,libraryItems:await this.getLibrary()});const o=null!==this.data.match(/```compressed\-json\n/gm);this.compatibilityMode||this.plugin.settings.compress===o||this.isEditedAsMarkdownInOtherView()||this.setDirty(4)}isEditedAsMarkdownInOtherView(){return app.workspace.getLeavesOfType("markdown").filter((e=>e.view.file===this.file)).length>0}onAfterLoadScene(){this.loadSceneFiles(),this.updateContainerSize(null,!0),this.initializeToolsIconPanelAfterLoading()}setDirty(e){var t,A;this.semaphores.dirty=null===(t=this.file)||void 0===t?void 0:t.path,this.diskIcon.querySelector("svg").addClass("excalidraw-dirty"),!this.semaphores.viewunload&&(null===(A=this.toolsPanelRef)||void 0===A?void 0:A.current)&&this.toolsPanelRef.current.setDirty(!0),app.isMobile||obsidian_module.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="var(--color-accent)")}clearDirty(){var e;if(this.semaphores.viewunload)return;const t=this.excalidrawAPI;if(!t)return;this.semaphores.dirty=null,(null===(e=this.toolsPanelRef)||void 0===e?void 0:e.current)&&this.toolsPanelRef.current.setDirty(!1);const A=t.getSceneElements();A&&(this.previousSceneVersion=this.getSceneVersion(A)),this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),app.isMobile||obsidian_module.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="")}initializeToolsIconPanelAfterLoading(){var e;if(this.semaphores.viewunload)return;const t=this.excalidrawAPI;if(!t)return;const A=t.getAppState(),i=null===(e=this.toolsPanelRef)||void 0===e?void 0:e.current;i&&(i.setTheme(A.theme),i.setExcalidrawViewMode(A.viewModeEnabled),i.setPreviewMode(this.compatibilityMode?null:this.textMode===TextMode.parsed),i.updateScriptIconMap(this.plugin.scriptEngine.scriptIconMap))}canAcceptExtension(e){return"excalidraw"===e}getDisplayText(){return this.file?this.file.basename:t$d("NOFILE")}getViewType(){return"excalidraw"}getIcon(){return ICON_NAME}setMarkdownView(){this.plugin.excalidrawFileModes[this.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)}async openAsMarkdown(){!0===this.plugin.settings.compress&&(this.excalidrawData.disableCompression=!0,await this.save(!0,!0)),this.setMarkdownView()}async convertExcalidrawToMD(){await this.save(),this.plugin.openDrawing(await this.plugin.convertSingleExcalidrawToMD(this.file),"active-pane",!0)}async addYouTubeThumbnail(e){const t=await getYouTubeThumbnailLink(e),A=getEA(this),i=await A.addImage(0,0,t);A.getElement(i).link=e,A.addElementsToView(!0,!0,!0)}async addImageWithURL(e){const t=getEA(this);await t.addImage(0,0,e),t.addElementsToView(!0,!0,!0)}async addImageSaveToVault(e){const t=getEA(this),A=getMimeType(getURLImageExtension(e)),i=await getDataURLFromURL(e,A,3e3),n=await generateIdFromFile((new TextEncoder).encode(i)),a=await this.excalidrawData.saveDataURLtoVault(i,A,n);a?(await t.addImage(0,0,a),t.addElementsToView(!0,!0,!0)):new obsidian_module.Notice(t$d("ERROR_SAVING_IMAGE"))}async addTextWithIframely(e){var t;const A=await this.addText(e),i=`http://iframely.server.crestify.com/iframely?url=${e}`;try{const n=JSON.parse(await obsidian_module.request({url:i}));if(!n||n.error||!(null===(t=n.meta)||void 0===t?void 0:t.title))return;const a=getEA(this),r=a.getViewElements().filter((e=>e.id===A));1===r.length&&(r[0].text=r[0].originalText=r[0].rawText=`[${n.meta.title}](${e})`,a.copyViewElementsToEAforEditing(r),a.addElementsToView(!1,!1,!1))}catch(e){}}onPaneMenu(e,t){this.excalidrawAPI&&this.getViewSelectedElements().some((e=>"text"===e.type))&&e.addItem((e=>{e.setTitle(t$d("OPEN_LINK")).setIcon("external-link").setSection("pane").onClick((e=>{this.handleLinkClick(e)}))})),this.compatibilityMode?e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE")).onClick((()=>this.convertExcalidrawToMD())).setSection("pane")})):e.addItem((e=>{e.setTitle(t$d("OPEN_AS_MD")).setIcon("document").onClick((()=>{this.openAsMarkdown()})).setSection("pane")})),e.addItem((e=>{e.setTitle(t$d("EXPORT_IMAGE")).setIcon("export-img").setSection("pane").onClick((async e=>{this.getScene&&this.file&&(this.exportDialog||(this.exportDialog=new ExportDialog(this.plugin,this,this.file),this.exportDialog.createForm()),this.exportDialog.open())})).setSection("pane")})).addItem((e=>{e.setTitle(t$d("INSTALL_SCRIPT_BUTTON")).setIcon("ScriptEngine").setSection("pane").onClick((()=>{new ScriptInstallPrompt(this.plugin).open()}))})),super.onPaneMenu(e,t)}async getLibrary(){var e;const t=this.plugin.getStencilLibrary();return(null==t?void 0:t.library)?t.library:null!==(e=null==t?void 0:t.libraryItems)&&void 0!==e?e:[]}async instantiateExcalidraw(e){for(;!this.semaphores.scriptsReady;)await sleep(50);const t=this.plugin.getPackage(this.ownerWindow).react,A=this.plugin.getPackage(this.ownerWindow).reactDOM;this.clearDirty();const i=t.createElement((()=>{var A;const i=t.useRef(null),n=t.useRef(null),a=t.useRef(null),[r,s]=t.useState({width:void 0,height:void 0});let o=null,l=null,c=null,d=Date.now(),h=!1;this.toolsPanelRef=n,this.embeddableMenuRef=a,this.obsidianMenu=new ObsidianMenu(this.plugin,n,this),this.embeddableMenu=new EmbeddableMenu(this,a);const u=()=>{let e,t;const A=new Promise(((A,i)=>{e=A,t=i}));return A.resolve=e,A.reject=t,A},g=t.useMemo((()=>({current:{readyPromise:u()}})),[]);t.useEffect((()=>{g.current.readyPromise.then((e=>{this.excalidrawAPI=e,e.setLocalFont(this.plugin.settings.experimentalEnableFourthFont),setTimeout((()=>{var e,t,A;this.onAfterLoadScene(),this.excalidrawContainer=null===(t=null===(e=this.excalidrawWrapperRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.firstElementChild,null===(A=this.excalidrawContainer)||void 0===A||A.focus()}))}))}),[g]),this.excalidrawRef=g,this.excalidrawWrapperRef=i,t.useEffect((()=>{s({width:this.contentEl.clientWidth,height:this.contentEl.clientHeight});const e=()=>{try{const e=this.contentEl.clientWidth,t=this.contentEl.clientHeight;if(0===e||0===t)return;s({width:e,height:t}),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.updatePosition(),this.ownerDocument!==document&&this.refresh()}catch(e){errorlog({where:"Excalidraw React-Wrapper, onResize",error:e})}};return this.ownerWindow.addEventListener("resize",e),()=>{var t;return null===(t=this.ownerWindow)||void 0===t?void 0:t.removeEventListener("resize",e)}}),[i]),this.getSelectedTextElement=()=>{var e;const t=this.excalidrawAPI;if(!(null==g?void 0:g.current)||!t)return{id:null,text:null};if(t.getAppState().viewModeEnabled){if(o){const e=o;return o=null,e}return{id:null,text:null}}const A=t.getSceneElements().filter((e=>e.id===Object.keys(t.getAppState().selectedElementIds)[0]));if(0===A.length)return{id:null,text:null};if("text"===A[0].type)return{id:A[0].id,text:A[0].text};if(["image","arrow"].contains(A[0].type))return{id:null,text:null};const i=null===(e=A[0].boundElements)||void 0===e?void 0:e.filter((e=>"text"===e.type));if((null==i?void 0:i.length)>0){const e=t.getSceneElements().filter((e=>e.id===i[0].id));if(e.length>0)return{id:e[0].id,text:e[0].text}}if(0===A[0].groupIds.length)return{id:null,text:null};const n=A[0].groupIds[0],a=t.getSceneElements().filter((e=>{var t;return null===(t=e.groupIds)||void 0===t?void 0:t.includes(n)})).filter((e=>"text"===e.type));return 0===a.length?{id:null,text:null}:{id:A[0].id,text:A[0].text}},this.getSelectedImageElement=()=>{const e=this.excalidrawAPI;if(!e)return{id:null,fileId:null};if(e.getAppState().viewModeEnabled){if(l){const e=l;return l=null,e}return{id:null,fileId:null}}const t=e.getSceneElements().filter((t=>t.id==Object.keys(e.getAppState().selectedElementIds)[0]));if(0===t.length)return{id:null,fileId:null};if("image"==t[0].type)return{id:t[0].id,fileId:t[0].fileId};if("text"===t[0].type)return{id:null,fileId:null};if(0===t[0].groupIds.length)return{id:null,fileId:null};const A=t[0].groupIds[0],i=e.getSceneElements().filter((e=>{var t;return null===(t=e.groupIds)||void 0===t?void 0:t.includes(A)})).filter((e=>"image"==e.type));return 0===i.length?{id:null,fileId:null}:{id:i[0].id,fileId:i[0].fileId}},this.getSelectedElementWithLink=()=>{const e=this.excalidrawAPI;if(!e)return{id:null,text:null};if(e.getAppState().viewModeEnabled){if(c){const e=c;return c=null,e}return{id:null,text:null}}const t=e.getSceneElements().filter((t=>t.id==Object.keys(e.getAppState().selectedElementIds)[0]));if(0===t.length)return{id:null,text:null};if(t[0].link)return{id:t[0].id,text:t[0].link};if(0===t[0].groupIds.length)return{id:null,text:null};const A=t[0].groupIds[0],i=e.getSceneElements().filter((e=>{var t;return null===(t=e.groupIds)||void 0===t?void 0:t.includes(A)})).filter((e=>e.link));return 0===i.length?{id:null,text:null}:{id:i[0].id,text:i[0].link}},this.addText=async(e,t,A=!0)=>{var i,n,a,r,s;const o=this.excalidrawAPI;if(!(null==g?void 0:g.current)||!o)return;const l=o.getAppState(),c=this.plugin.ea.getAPI(this);c.style.strokeColor=null!==(i=l.currentItemStrokeColor)&&void 0!==i?i:"black",c.style.opacity=null!==(n=l.currentItemOpacity)&&void 0!==n?n:1,c.style.fontFamily=null!==(a=null!=t?t:l.currentItemFontFamily)&&void 0!==a?a:1,c.style.fontSize=null!==(r=l.currentItemFontSize)&&void 0!==r?r:20,c.style.textAlign=null!==(s=l.currentItemTextAlign)&&void 0!==s?s:"left";const{width:d,height:h}=l,u=viewportCoordsToSceneCoords({clientX:0,clientY:0},l),p=viewportCoordsToSceneCoords({clientX:d,clientY:h},l),m=u.x>this.currentPosition.x||p.xthis.currentPosition.y||p.y{const r=this.excalidrawAPI;if(!(null==g?void 0:g.current)||!r)return!1;const s=e.filter((e=>"text"==e.type));for(let e=0;ee.id)),l=r.getSceneElements(),c=[];for(let t=0;te.id===A))[0],c.push(A))}const d=n?l.concat(e.filter((e=>!c.includes(e.id)))):e.filter((e=>!c.includes(e.id))).concat(l);if(this.updateScene({elements:d,commitToHistory:!0},a),i&&Object.keys(i).length>0){const e=[];Object.keys(i).forEach((t=>{if(e.push({mimeType:i[t].mimeType,id:i[t].id,dataURL:i[t].dataURL,created:i[t].created}),i[t].file||i[t].isHyperlink){const e=new EmbeddedFile(this.plugin,this.file.path,i[t].isHyperlink?i[t].hyperlink:i[t].file),A=r.getAppState();e.setImage(i[t].dataURL,i[t].mimeType,i[t].size,"dark"===A.theme,i[t].hasSVGwithBitmap),this.excalidrawData.setFile(i[t].id,e)}i[t].latex&&this.excalidrawData.setEquation(i[t].id,{latex:i[t].latex,isLoaded:!0})})),r.addFiles(e)}return r.updateContainerSize(r.getSceneElements().filter((e=>o.includes(e.id))).filter(isContainer)),A?await this.save(!1):this.setDirty(5),!0},this.getScene=e=>{const t=this.excalidrawAPI;if(!(null==g?void 0:g.current)||!t)return null;const A=e?this.getViewSelectedElements():t.getSceneElements(),i=t.getAppState(),n=Object.assign({},t.getFiles());if(n){const e=A.filter((e=>"image"===e.type)).map((e=>e.fileId)),t=Object.keys(n).filter((t=>!e.contains(t)));t.forEach((e=>delete n[e]))}return{type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:A,appState:{theme:i.theme,viewBackgroundColor:i.viewBackgroundColor,currentItemStrokeColor:i.currentItemStrokeColor,currentItemBackgroundColor:i.currentItemBackgroundColor,currentItemFillStyle:i.currentItemFillStyle,currentItemStrokeWidth:i.currentItemStrokeWidth,currentItemStrokeStyle:i.currentItemStrokeStyle,currentItemRoughness:i.currentItemRoughness,currentItemOpacity:i.currentItemOpacity,currentItemFontFamily:i.currentItemFontFamily,currentItemFontSize:i.currentItemFontSize,currentItemTextAlign:i.currentItemTextAlign,currentItemStartArrowhead:i.currentItemStartArrowhead,currentItemEndArrowhead:i.currentItemEndArrowhead,scrollX:i.scrollX,scrollY:i.scrollY,zoom:i.zoom,currentItemRoundness:i.currentItemRoundness,gridSize:i.gridSize,gridColor:i.gridColor,colorPalette:i.colorPalette,currentStrokeOptions:i.currentStrokeOptions,previousGridSize:i.previousGridSize,frameRendering:i.frameRendering},prevTextMode:this.prevTextMode,files:n}},this.refresh=()=>{if(0===this.contentEl.clientWidth||0===this.contentEl.clientHeight)return;const e=this.excalidrawAPI;(null==g?void 0:g.current)&&e&&e.refresh()};let p={x:0,y:0},m=null;this.clearHoverPreview=()=>{if(m){const e=new MouseEvent("click",{view:this.ownerWindow,bubbles:!0,cancelable:!0});m.dispatchEvent(e),m=null}};const f=e=>{var t,A,i,n,a;const r=null===(t=app.dragManager.draggable)||void 0===t?void 0:t.files;return r&&r[0]==this.file&&(r.shift(),app.dragManager.draggable.title=`${r.length} files`),["file","files"].includes(null===(A=app.dragManager.draggable)||void 0===A?void 0:A.type)?"link":(null===(i=e.types)||void 0===i?void 0:i.includes("text/html"))||(null===(n=e.types)||void 0===n?void 0:n.includes("text/plain"))||(null===(a=e.types)||void 0===a?void 0:a.includes("Files"))?"copy":void 0};let w=!1;const E=()=>{if(o=getTextElementAtPointer(this.currentPosition,this),o&&o.id){const e=new MouseEvent("click",{ctrlKey:!(DEVICE.isIOS||DEVICE.isMacOS)||this.modifierKeyDown.ctrlKey,metaKey:DEVICE.isIOS||DEVICE.isMacOS||this.modifierKeyDown.metaKey,shiftKey:this.modifierKeyDown.shiftKey,altKey:this.modifierKeyDown.altKey});return this.handleLinkClick(e),void(o=null)}if(l=getImageElementAtPointer(this.currentPosition,this),l&&l.id){const e=new MouseEvent("click",{ctrlKey:!(DEVICE.isIOS||DEVICE.isMacOS)||this.modifierKeyDown.ctrlKey,metaKey:DEVICE.isIOS||DEVICE.isMacOS||this.modifierKeyDown.metaKey,shiftKey:this.modifierKeyDown.shiftKey,altKey:this.modifierKeyDown.altKey});return this.handleLinkClick(e),void(l=null)}if(c=getElementWithLinkAtPointer(this.currentPosition,this),c&&c.id){const e=new MouseEvent("click",{ctrlKey:!(DEVICE.isIOS||DEVICE.isMacOS)||this.modifierKeyDown.ctrlKey,metaKey:DEVICE.isIOS||DEVICE.isMacOS||this.modifierKeyDown.metaKey,shiftKey:this.modifierKeyDown.shiftKey,altKey:this.modifierKeyDown.altKey});return this.handleLinkClick(e),void(c=null)}};let b=null;const B=(e,t)=>{var A;if(!b)return;const i=null===(A=this.excalidrawAPI)||void 0===A?void 0:A.getAppState();if((null==i?void 0:i.editingElement)||(null==i?void 0:i.draggingElement))return;if(this.semaphores.wheelTimeout)return;if(!e){if(!this.currentPosition)return;e="";const A=getTextElementAtPointer(this.currentPosition,this);if(A&&A.text){t=this.excalidrawAPI.getSceneElements().filter((e=>e.id===A.id))[0];const i=this.textMode===TextMode.parsed?this.excalidrawData.getRawText(A.id):A.text;if(!i)return;if(i.match(REG_LINKINDEX_HYPERLINK))return;const n=REGEX_LINK.getRes(i).next();if(!n.value)return;if((e=REGEX_LINK.getLink(n)).match(REG_LINKINDEX_HYPERLINK))return}else{const A=getImageElementAtPointer(this.currentPosition,this);if(t=this.excalidrawAPI.getSceneElements().filter((e=>e.id===A.id))[0],!A||!A.fileId)return;if(!this.excalidrawData.hasFile(A.fileId))return;const i=this.excalidrawData.getFile(A.fileId);if(i.isHyperlink)return;if(IMAGE_TYPES.contains(i.file.extension))return;if("pdf"===i.file.extension.toLowerCase())return;if(this.plugin.ea.isExcalidrawFile(i.file))return;const n=i.linkParts.ref?`#${i.linkParts.isBlockRef?"^":""}${i.linkParts.ref}`:"";e=i.file.path+n}}if(this.getHookServer().onLinkHoverHook)try{if(!this.getHookServer().onLinkHoverHook(t,e,this,this.getHookServer()))return}catch(e){errorlog({where:"ExcalidrawView.showHoverPreview",fn:this.getHookServer().onLinkHoverHook,error:e})}if(this.semaphores.hoverSleep)return;const n=app.metadataCache.getFirstLinkpathDest(e.split("#")[0],this.file.path);if(!n)return;if(this.ownerDocument.querySelector(`div.popover-title[data-path="${n.path}"]`))return;this.semaphores.hoverSleep=!0;const a=this;if(setTimeout((()=>a.semaphores.hoverSleep=!1),500),this.plugin.hover.linkText=e,this.plugin.hover.sourcePath=this.file.path,m=this.contentEl,app.workspace.trigger("hover-link",{event:b,source:"excalidraw",hoverParent:m,targetEl:m,linktext:this.plugin.hover.linkText,sourcePath:this.plugin.hover.sourcePath}),p=this.currentPosition,this.isFullscreen()){const e=this;setTimeout((()=>{var t,A,i,a;const r=null!==(a=null===(i=null===(A=null===(t=this.ownerDocument.querySelector(`div.popover-title[data-path="${n.path}"]`))||void 0===t?void 0:t.parentElement)||void 0===A?void 0:A.parentElement)||void 0===i?void 0:i.parentElement)&&void 0!==a?a:this.ownerDocument.body.querySelector("div.popover");r&&e.contentEl.append(r)}),400)}},{Excalidraw:v,MainMenu:C,WelcomeScreen:y}=this.plugin.getPackage(this.ownerWindow).excalidrawLib,x=t.createElement("div",{className:"excalidraw-wrapper",ref:i,key:"abc",tabIndex:0,onKeyDown:e=>{e.target!==x.ref.current&&(this.isFullscreen()&&e.keyCode===KEYCODE.ESC&&this.exitFullscreen(),!isCTRL(e)||isSHIFT(e)||isALT(e)||B())},onPointerDown:e=>{(isCTRL(e)||isMETA(e))&&(!this.plugin.settings.allowCtrlClick&&isMETA(e)||setTimeout((()=>{(this.getSelectedTextElement().id||this.getSelectedImageElement().id||this.getSelectedElementWithLink().id)&&this.handleLinkClick(e)})))},onMouseMove:e=>{b=e.nativeEvent},onMouseOver:()=>{this.clearHoverPreview()},onDragOver:e=>{const t=f(e.dataTransfer);if(t){this.draginfoDiv||(this.draginfoDiv=createDiv({cls:"excalidraw-draginfo"}),this.ownerDocument.body.appendChild(this.draginfoDiv));let A="";if(app.dragManager.draggable)switch(internalDragModifierType(e)){case"image":A="Embed image";break;case"image-fullsize":A="Embed image @100%";break;case"link":A="Insert link\n"+(DEVICE.isMacOS||DEVICE.isIOS?"try SHIFT and CTRL combinations for other drop actions":"try SHIFT, CTRL, ALT combinations for other drop actions");break;case"embeddable":A="Insert in interactive frame"}else if(1===e.dataTransfer.types.length&&e.dataTransfer.types.includes("Files"))A="External file";else switch(externalDragModifierType(e)){case"image-import":A="Import image to Vault";break;case"image-url":A="Insert image/thumbnail with URL\n"+(DEVICE.isMacOS||DEVICE.isIOS?"try SHIFT, OPT, CTRL combinations for other drop actions":"try SHIFT, CTRL, ALT combinations for other drop actions");break;case"insert-link":A="Insert link";break;case"embeddable":A="Insert in interactive frame"}this.draginfoDiv.innerText!==A&&(this.draginfoDiv.innerText=A);const i=e.clientY-8*parseFloat(getComputedStyle(this.draginfoDiv).fontSize)+"px",n=e.clientX-this.draginfoDiv.clientWidth/2+"px";return this.draginfoDiv.style.top!==i&&(this.draginfoDiv.style.top=i),this.draginfoDiv.style.left!==n&&(this.draginfoDiv.style.left=n),e.dataTransfer.dropEffect=t,e.preventDefault(),!1}},onDragLeave:()=>{this.draginfoDiv&&(this.ownerDocument.body.removeChild(this.draginfoDiv),delete this.draginfoDiv)}},t.createElement(v,{ref:g,width:r.width,height:r.height,UIOptions:{canvasActions:{loadScene:!1,saveScene:!1,saveAsScene:!1,export:!1,saveAsImage:!1,saveToActiveFile:!1}},initState:null==e?void 0:e.appState,initialData:e,detectScroll:!0,onPointerUpdate:e=>{if(this.currentPosition=e.pointer,m&&(Math.abs(p.x-e.pointer.x)>50||Math.abs(p.y-e.pointer.y)>50)&&this.clearHoverPreview(),w){if(!h&&"down"===e.button){if(h=!0,isCTRL(this.modifierKeyDown)||isMETA(this.modifierKeyDown))return void E();const e=Date.now();return e-d<600&&e-d>40&&E(),void(d=e)}"up"===e.button&&(h=!1),(isCTRL(this.modifierKeyDown)||this.excalidrawAPI.getAppState().isViewModeEnabled&&this.plugin.settings.hoverPreviewWithoutCTRL)&&B()}},libraryReturnUrl:"app://obsidian.md",autoFocus:!0,langCode:null!==(A=obsidianToExcalidrawMap[obsidian_module.moment.locale()])&&void 0!==A?A:"en-EN",onChange:(e,t)=>{var A,i,n,a;const r=()=>{const e="transparent"===t.viewBackgroundColor?"white":t.viewBackgroundColor;if(setTimeout((()=>this.updateScene({appState:{gridColor:this.getGridColor(e,t)}}))),setDynamicStyle(this.plugin.ea,this,e,this.plugin.settings.dynamicStyling),this.plugin.ea.onCanvasColorChangeHook)try{this.plugin.ea.onCanvasColorChangeHook(this.plugin.ea,this,t.viewBackgroundColor)}catch(e){errorlog({where:r,source:this.plugin.ea.onCanvasColorChangeHook,error:e,message:"ea.onCanvasColorChangeHook exception"})}};if(w=t.viewModeEnabled,this.semaphores.justLoaded){if((null!==(a=null===(n=null===(i=null===(A=this.excalidrawData)||void 0===A?void 0:A.scene)||void 0===i?void 0:i.elements)||void 0===n?void 0:n.length)&&void 0!==a?a:0)>0&&0===e.length)return;return this.semaphores.justLoaded=!1,!this.semaphores.preventAutozoom&&this.plugin.settings.zoomToFitOnOpen&&this.zoomToFit(!1,!0),this.previousSceneVersion=this.getSceneVersion(e),this.previousBackgroundColor=t.viewBackgroundColor,this.previousTheme=t.theme,void r()}if(t.theme!==this.previousTheme&&this.file===this.excalidrawData.file&&(this.previousTheme=t.theme,this.setDirty(5)),t.viewBackgroundColor!==this.previousBackgroundColor&&this.file===this.excalidrawData.file&&(this.previousBackgroundColor=t.viewBackgroundColor,this.setDirty(6),this.colorChangeTimer&&clearTimeout(this.colorChangeTimer),this.colorChangeTimer=setTimeout((()=>{r(),this.colorChangeTimer=null}),50)),!this.semaphores.dirty&&null===t.editingElement&&null===t.editingLinearElement){const t=this.getSceneVersion(e);(t>0||0===t&&e.length>0)&&t!==this.previousSceneVersion&&(this.previousSceneVersion=t,this.setDirty(6))}},onLibraryChange:e=>{(async()=>{const t={type:"excalidrawlib",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,libraryItems:e};this.plugin.setStencilLibrary(t),await this.plugin.saveSettings()})()}, +//! onauxclick: (e: any) => {e.preventDefault()}, +renderTopRightUI:(e,t)=>this.obsidianMenu.renderButton(e,t),renderEmbeddableMenu:e=>this.embeddableMenu.renderButtons(e),onPaste:(e,t)=>{const A=this.getHookServer();if(e&&A.onPasteHook){const i=A.onPasteHook({ea:A,payload:e,event:t,excalidrawFile:this.file,view:this,pointerPosition:this.currentPosition});if("boolean"==typeof i&&!1===i)return!1}if(!this.modifierKeyDown.ctrlKey&&null!=t&&DEVICE.isLinux)return console.debug("Prevented what is likely middle mouse button paste."),!1;if(e&&e.text&&hyperlinkIsImage(e.text))return this.addImageWithURL(e.text),!1;if(e&&e.text&&!this.modifierKeyDown.shiftKey){const t=obsidianPDFQuoteWithRef(e.text);if(t){const e=getEA(this),A=this.excalidrawAPI.getAppState(),i=A.currentItemStrokeColor,n=A.viewBackgroundColor;e.style.strokeColor="transparent"===i?e.getCM("transparent"===n?"white":n).invert().stringHEX({alpha:!1}):i,e.style.fontFamily=A.currentItemFontFamily,e.style.fontSize=A.currentItemFontSize;const a=e.measureText(t.quote),r=a.width+60,s=e.addText(this.currentPosition.x,this.currentPosition.y,t.quote,{box:!0,boxStrokeColor:"transparent",width:Math.min(500,r),height:a.height+60});return e.elementsDict[s].link=`[[${t.link}]]`,e.addElementsToView(!1,!1),!1}}if(e.elements){const e=this;setTimeout((()=>e.save(!1)),300)}return!0},onThemeChange:async e=>{var t;this.excalidrawData.scene.appState.theme=e,this.loadSceneFiles(),null===(t=null==n?void 0:n.current)||void 0===t||t.setTheme(e),setTimeout((()=>setDynamicStyle(this.plugin.ea,this,this.previousBackgroundColor,this.plugin.settings.dynamicStyling)))},ownerDocument:this.ownerDocument,ownerWindow:this.ownerWindow,onDrop:e=>{this.draginfoDiv&&(this.ownerDocument.body.removeChild(this.draginfoDiv),delete this.draginfoDiv);const t=this.excalidrawAPI;if(!t)return!1;const A=t.getAppState();this.currentPosition=viewportCoordsToSceneCoords({clientX:e.clientX,clientY:e.clientY},A);const i=app.dragManager.draggable,n=internalDragModifierType(e),a=externalDragModifierType(e),r=(t,A,n)=>{if(!this.getHookServer().onDropHook)return!1;try{return this.getHookServer().onDropHook({ea:this.getHookServer(),event:e,draggable:i,type:t,payload:{files:A,text:n},excalidrawFile:this.file,view:this,pointerPosition:this.currentPosition})}catch(e){return new obsidian_module.Notice("on drop hook error. See console log for details"),errorlog({where:"ExcalidrawView.onDrop",error:e}),!1}};switch(null==i?void 0:i.type){case"file":if(!r("file",[i.file],null)){const e=i.file;if(e.path.match(REG_LINKINDEX_INVALIDCHARS))return new obsidian_module.Notice(t$d("FILENAME_INVALID_CHARS"),4e3),!1;if(["image","image-fullsize"].contains(n)&&(IMAGE_TYPES.contains(e.extension)||"md"===e.extension||"pdf"===e.extension.toLowerCase()))return"pdf"===e.extension.toLowerCase()?new InsertPDFModal(this.plugin,this).open(e):(async()=>{const t=getEA(this);t.selectElementsInView([await insertImageToView(t,this.currentPosition,e,!("image-fullsize"===n))])})(),!1;if("embeddable"===n)return(async()=>{const t=getEA(this);t.selectElementsInView([await insertEmbeddableToView(t,this.currentPosition,e)])})(),!1;this.addText(`[[${app.metadataCache.fileToLinktext(i.file,this.file.path,!0)}]]`)}return!1;case"files":return r("file",i.files,null)||(async()=>{if(["image","image-fullsize"].contains(n)){const e=getEA(this);e.canvas.theme=t.getAppState().theme;let A=0;const a=[];for(const t of i.files)(IMAGE_TYPES.contains(t.extension)||"md"===t.extension)&&(a.push(await e.addImage(this.currentPosition.x+50*A,this.currentPosition.y+50*A,t,!("image-fullsize"===n))),A++,await e.addElementsToView(!1,!1,!0),e.selectElementsInView(a)),"pdf"===t.extension.toLowerCase()&&new InsertPDFModal(this.plugin,this).open(t)}else{if("embeddable"===n){const e=getEA(this);let t=0,A=0;const n=[];for(const a of i.files)n.push(await insertEmbeddableToView(e,{x:this.currentPosition.x+500*t,y:this.currentPosition.y+550*A},a)),t=(t+1)%3,0===t&&A++;return!1}for(const e of i.files)await this.addText(`[[${app.metadataCache.fileToLinktext(e,this.file.path,!0)}]]`,void 0,!1),this.currentPosition.y+=2*A.currentItemFontSize;this.save(!1)}})(),!1}if(e.dataTransfer.types.includes("Files")){if(e.dataTransfer.types.includes("text/plain")){const t=e.dataTransfer.getData("text");if(t&&r("text",null,t))return!1;if(t&&"image-url"===a&&hyperlinkIsImage(t))return this.addImageWithURL(t),!1;if(t&&"insert-link"===a)return this.plugin.settings.iframelyAllowed&&t.match(/^https?:\/\/\S*$/)?(this.addTextWithIframely(t),!1):(this.addText(t),!1);if(t&&"embeddable"===a)return insertEmbeddableToView(getEA(this),this.currentPosition,void 0,t),!1}if(e.dataTransfer.types.includes("text/html")){const t=e.dataTransfer.getData("text/html").match(/src=["']([^"']*)["']/);if(t&&"image-url"===a&&hyperlinkIsImage(t[1]))return this.addImageWithURL(t[1]),!1;if(t&&"insert-link"===a)return this.plugin.settings.iframelyAllowed&&t[1].match(/^https?:\/\/\S*$/)?(this.addTextWithIframely(t[1]),!1):(this.addText(t[1]),!1);if(t&&"embeddable"===a)return insertEmbeddableToView(getEA(this),this.currentPosition,void 0,t[1]),!1}return!0}if(e.dataTransfer.types.includes("text/plain")||e.dataTransfer.types.includes("text/uri-list")||e.dataTransfer.types.includes("text/html")){const t=e.dataTransfer.getData("text/html").match(/src=["']([^"']*)["']/),A=t?t[1]:"",i=e.dataTransfer.getData("text"),n=e.dataTransfer.getData("text/uri-list");let s=t?A:i;if(s&&""!==s||(s=n),!s||""===s)return!0;if(!r("text",null,s)){if(s&&"embeddable"===a&&/^(blob:)?(http|https):\/\/[^\s/$.?#].[^\s]*$/.test(s))return!0;if(s&&"image-url"===a&&hyperlinkIsYouTubeLink(s))return this.addYouTubeThumbnail(s),!1;if(n&&"image-url"===a&&hyperlinkIsYouTubeLink(n))return this.addYouTubeThumbnail(n),!1;if(s&&"image-url"===a&&hyperlinkIsImage(s))return this.addImageWithURL(s),!1;if(n&&"image-url"===a&&hyperlinkIsImage(n))return this.addImageWithURL(n),!1;if(s&&"image-import"===a&&hyperlinkIsImage(s))return this.addImageSaveToVault(s),!1;if(n&&"image-import"===a&&hyperlinkIsImage(n))return this.addImageSaveToVault(n),!1;if(this.plugin.settings.iframelyAllowed&&s.match(/^https?:\/\/\S*$/))return this.addTextWithIframely(s),!1;if(s.startsWith("obsidian://open?vault=")){const t=e.dataTransfer.getData("text/html");if(t){const e=t.match(/href="app:\/\/obsidian\.md\/(.*?)"/);if(2===e.length){const t=decodeURIComponent(e[1]).split("#"),A=app.vault.getAbstractFileByPath(t[0]);if(A&&A instanceof obsidian_module.TFile){const e=app.metadataCache.fileToLinktext(A,this.file.path);return void this.addText(`[[${e+(t.length>1?"#"+t[1]+"|"+e:"")}]]`)}return this.addText(`[[${decodeURIComponent(e[1])}]]`),!1}}const A=s.split("file=");if(2===A.length)return this.addText(`[[${decodeURIComponent(A[1])}]]`),!1}this.addText(s.replace(/(!\[\[.*#[^\]]*\]\])/g,"$1{40}"))}return!1}return!r("unknown",null,null)},onBeforeTextEdit:e=>{var t;if(clearTimeout(this.isEditingTextResetTimer),this.isEditingTextResetTimer=null,this.semaphores.isEditingText=!0,this.compatibilityMode)return null!==(t=e.originalText)&&void 0!==t?t:e.text;return this.excalidrawData.getRawText(e.id)||e.rawText},onBeforeTextSubmit:(e,t,A,i)=>{var n,a;const r=this.excalidrawAPI;if(!r)return[null,null,null];if(this.semaphores.isEditingText=!0,this.isEditingTextResetTimer&&clearTimeout(this.isEditingTextResetTimer),this.isEditingTextResetTimer=setTimeout((()=>{this.semaphores.isEditingText=!1,this.isEditingTextResetTimer=null}),1500),i)return this.excalidrawData.deleteTextElement(e.id),this.setDirty(7),[null,null,null];const s=t$d("WARNING_PASTING_ELEMENT_AS_TEXT");if(t.startsWith('{"type":"excalidraw/clipboard","elements":[{"'))return setTimeout((()=>{const t=this.excalidrawAPI.getSceneElements(),A=t.filter((t=>t.id===e.id));if(1===A.length){const e=cloneElement(A[0]);e.rawText=s,t[t.indexOf(A[0])]=e,this.excalidrawData.setTextElement(e.id,s,s,(()=>{})),this.updateScene({elements:t}),r.history.clear()}})),[s,s,null];const o=e.containerId,l=A.trim().matchAll(/^!\[\[([^|\]]*)?.*?]]$|^!\[[^\]]*?]\((.*?)\)$/g).next();if(null===(n=null==l?void 0:l.value)||void 0===n?void 0:n[0]){const t=null!==(a=l.value[1])&&void 0!==a?a:l.value[2],A=app.metadataCache.getFirstLinkpathDest(t,this.file.path);if(A&&A instanceof obsidian_module.TFile){if("md"!==A.extension||this.plugin.isExcalidrawFile(A))return setTimeout((async()=>{const t=this.excalidrawAPI.getSceneElements(),i=t.filter((t=>t.id===e.id));if(1===i.length){const e={x:i[0].x,y:i[0].y},n=cloneElement(i[0]);n.isDeleted=!0,this.excalidrawData.deleteTextElement(n.id),t[t.indexOf(i[0])]=n,this.updateScene({elements:t});const a=getEA(this);IMAGE_TYPES.contains(A.extension)?a.selectElementsInView([await insertImageToView(a,e,A)]):"pdf"!==A.extension?a.selectElementsInView([await insertEmbeddableToView(a,e,A)]):new UniversalInsertFileModal(this.plugin,this).open(A,e),this.setDirty()}})),[null,null,null];new obsidian_module.Notice(t$d("USE_INSERT_FILE_MODAL"),5e3)}}if(t!==e.text||A!==e.originalText||!this.excalidrawData.getRawText(e.id)){this.setDirty(8);const i=async(t,A)=>{var i,n;if(this.textMode===TextMode.raw)return;const a=this.excalidrawAPI.getSceneElements(),s=a.filter((t=>t.id===e.id));if(1===s.length){const e=cloneElement(s[0]),o=s[0].containerId?null===(n=null===(i=r.getSceneElements().filter((e=>e.id===s[0].containerId)))||void 0===i?void 0:i[0])||void 0===n?void 0:n.type:void 0;this.excalidrawData.updateTextElement(e,t,A,!0,o),a[a.indexOf(s[0])]=e,this.updateScene({elements:a}),e.containerId&&this.updateContainerSize(e.containerId),this.setDirty()}r.history.clear()},[n,a,s]=this.excalidrawData.setTextElement(e.id,t,A,i);return n?(o&&this.updateContainerSize(o,!0),this.textMode===TextMode.raw?[t,A,s]:t===n?s?[n,a,s]:[null,null,null]:(r.history.clear(),[n,a,s])):[null,null,null]}return o&&this.updateContainerSize(o,!0),this.textMode===TextMode.parsed?this.excalidrawData.getParsedText(e.id):[null,null,null]},onLinkOpen:async(e,t)=>{var A;if(t.preventDefault(),!e)return;let i=e.link;if(!i||""===i)return;setTimeout((()=>this.removeLinkTooltip()),500);let n=null===(A=null==t?void 0:t.detail)||void 0===A?void 0:A.nativeEvent;if(!this.handleLinkHookCall(e,e.link,n)&&!this.openExternalLink(e.link,isSHIFT(n)||isCTRL(n)||isMETA(n)||isALT(n)?void 0:e)){if("text"===e.type){const t=e.rawText.replaceAll("\n","");REGEX_LINK.getResList(t).filter((e=>Boolean(e.value))).length>1&&(i=t)}n.shiftKey||n.ctrlKey||n.metaKey||n.altKey||(n=emulateKeysForLinkClick("new-tab")),this.linkClick(n,null,null,{id:e.id,text:i},n)}},onLinkHover:(e,t)=>{if(e&&(this.plugin.settings.hoverPreviewWithoutCTRL||isCTRL(t))){b=t,b.ctrlKey=!(DEVICE.isIOS||DEVICE.isMacOS)||b.ctrlKey,b.metaKey=DEVICE.isIOS||DEVICE.isMacOS||b.metaKey;const A=e.link;if(!A||""===A)return;if(A.startsWith("[[")){const t=A.match(/\[\[(?.*?)\]\]/);if(!t)return;let i=t.groups.link;B(i,e)}}},onViewModeChange:e=>{var t,A;if(this.semaphores.viewunload||null===(A=null===(t=this.toolsPanelRef)||void 0===t?void 0:t.current)||void 0===A||A.setExcalidrawViewMode(e),this.getHookServer().onViewModeChangeHook)try{this.getHookServer().onViewModeChangeHook(e,this,this.getHookServer())}catch(e){errorlog({where:"ExcalidrawView.onViewModeChange",fn:this.getHookServer().onViewModeChangeHook,error:e})}},validateEmbeddable:!0,renderWebview:DEVICE.isDesktop,renderEmbeddable:(e,A)=>{try{const i=useDefaultExcalidrawFrame(e);if(!this.file||!e||!e.link||0===e.link.length||i)return null;if(e.link.match(REG_LINKINDEX_HYPERLINK))return i?null:renderWebView(e.link,this,e.id);const n=REGEX_LINK.getRes(e.link).next();if(!n||!n.value&&n.done)return null;let a=REGEX_LINK.getLink(n);return a.match(REG_LINKINDEX_HYPERLINK)?i?null:renderWebView(a,this,e.id):t.createElement(CustomEmbeddable,{element:e,view:this,appState:A,linkText:a})}catch(e){return null}},renderMermaid:shouldRenderMermaid()},t.createElement(C,{},t.createElement(C.DefaultItems.ChangeCanvasBackground),t.createElement(C.DefaultItems.ToggleTheme),t.createElement(C.Separator),DEVICE.isPhone?null:t.createElement(C.Item,{icon:ICONS.trayMode,"aria-label":"Tray-mode offers an alternative, more spacious canvas",onSelect:()=>{this.toggleTrayMode()}},"Toggle tray-mode"),t.createElement(C.Item,{icon:saveIcon(!1),"aria-label":t$d("FORCE_SAVE"),onSelect:()=>{this.forceSave()}},"Save"),t.createElement(C.Item,{icon:ICONS.scriptEngine,"aria-label":"Explore the Excalidraw Script Library",onSelect:()=>{new ScriptInstallPrompt(this.plugin).open()}},"Script Library"),t.createElement(C.Item,{icon:ICONS.ExportImage,"aria-label":"Export image as PNG, SVG, or Excalidraw file",onSelect:()=>{this.exportDialog||(this.exportDialog=new ExportDialog(this.plugin,this,this.file),this.exportDialog.createForm()),this.exportDialog.open()}},"Export Image..."),t.createElement(C.Item,{icon:ICONS.switchToMarkdown,"aria-label":"Switch to markdown view",onSelect:()=>{this.openAsMarkdown()}},"Open as Markdown"),t.createElement(C.Separator),t.createElement(C.DefaultItems.Help),t.createElement(C.DefaultItems.ClearCanvas)),t.createElement(y,{},t.createElement(y.Center,{},t.createElement(y.Center.Logo,{},t.createElement(LogoWrapper,{},ICONS.ExcalidrawSword)),t.createElement(y.Center.Heading,{},'Type "Excalidraw" in the Command Palette',t.createElement("br"),"Explore the Obsidian Menu in the top right",t.createElement("br"),"Visit the Script Library",t.createElement("br"),"Find help in the hamburger-menu"),t.createElement(y.Center.Menu,{},t.createElement(y.Center.MenuItemLink,{icon:ICONS.YouTube,href:"https://www.youtube.com/@VisualPKM",shortcut:null,"aria-label":"Visual PKM YouTube Channel"}," Check out the Visual PKM YouTube channel."),t.createElement(y.Center.MenuItemLink,{icon:ICONS.Discord,href:"https://discord.gg/DyfAXFwUHc",shortcut:null,"aria-label":"Join the Visual Thinking Discord Server"}," Join the Visual Thinking Discord Server"),t.createElement(y.Center.MenuItemLink,{icon:ICONS.twitter,href:"https://twitter.com/zsviczian",shortcut:null,"aria-label":"Follow me on Twitter"}," Follow me on Twitter"),t.createElement(y.Center.MenuItemLink,{icon:ICONS.heart,href:"https://ko-fi.com/zsolt",shortcut:null,"aria-label":"Donate to support Excalidraw-Obsidian"},' Say "Thank You" & support the plugin.'))))),t.createElement(ToolsPanel,{ref:n,visible:!1,view:this,centerPointer:()=>{const e=this.excalidrawAPI;if(!g||!g.current||!e)return;const t=e.getAppState(),{width:A,height:i}=t;this.currentPosition=viewportCoordsToSceneCoords({clientX:A/2,clientY:i/2},t)}})),F=t.useRef(new ResizeObserver((e=>{if(!n||!n.current)return;const{width:t,height:A}=e[0].contentRect;if(0===t||0===A)return;const i=n.current.onRightEdge?n.current.previousWidth-t:0,a=n.current.onBottomEdge?n.current.previousHeight-A:0;n.current.updatePosition(a,i)})));return t.useEffect((()=>((null==n?void 0:n.current)&&F.current.observe(n.current.containerRef.current),()=>{F.current.unobserve(n.current.containerRef.current)})),[n,F]),t.createElement(t.Fragment,null,x)}));A.createRoot(this.contentEl).render(i)}updateContainerSize(e,t=!1){const A=this.excalidrawAPI;if(!A)return;const i=()=>{const t=e?A.getSceneElements().filter((t=>t.id===e&&"arrow"!==t.type)):A.getSceneElements().filter(isContainer);t.length>0&&(this.initialContainerSizeUpdate&&(this.semaphores.justLoaded=!0),A.updateContainerSize(t)),this.initialContainerSizeUpdate=!1};t?setTimeout((()=>i()),50):i()}zoomToFit(e=!0,t=!1){if(document.body.querySelector("div.modal-container"))return;const A=this.excalidrawAPI;if(!A||!this.excalidrawRef||this.semaphores.isEditingText||this.semaphores.preventAutozoom)return;const i=this.plugin.settings.zoomToFitMaxLevel,n=A.getSceneElements().filter((e=>e.width<1e4&&e.height<1e4));app.isMobile&&n.length>1e3||n.length>2500?t&&A.scrollToContent():e?setTimeout((()=>A.zoomToFit(n,i,this.isFullscreen()?0:.05)),100):A.zoomToFit(n,i,this.isFullscreen()?0:.05)}updatePinnedScripts(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{pinnedScripts:this.plugin.settings.pinnedScripts}})}updatePinnedCustomPens(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)}})}updatePinchZoom(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{allowPinchZoom:this.plugin.settings.allowPinchZoom}})}updateWheelZoom(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{allowWheelZoom:this.plugin.settings.allowWheelZoom}})}async toggleTrayMode(){const e=this.excalidrawAPI;if(!e)return!1;const t=e.getAppState();e.updateScene({appState:{trayModeEnabled:!t.trayModeEnabled}}),await this.plugin.loadSettings(),this.plugin.settings.defaultTrayMode=!t.trayModeEnabled,this.plugin.saveSettings()}selectElementsMatchingQuery(e,t,A=!0,i=!1,n=!1){let a=getTextElementsMatchingQuery(e.filter((e=>"text"===e.type)),t,i).concat(getFrameElementsMatchingQuery(e.filter((e=>"frame"===e.type)),t,i));if(0!==a.length){if(n){const t=this.plugin.ea.getElementsInTheSameGroupWithElement(a[0],e);t.length>0&&(a=t)}this.zoomToElements(A,a)}else new obsidian_module.Notice("I could not find a matching text element")}zoomToElements(e,t){const A=this.excalidrawAPI;if(!A)return;const i=this.plugin.settings.zoomToFitMaxLevel;e&&A.selectElements(t),A.zoomToFit(t,i,.05)}getViewSelectedElements(){var e;const t=this.excalidrawAPI;if(!t)return[];const A=null===(e=t.getAppState())||void 0===e?void 0:e.selectedElementIds;if(!A)return[];const i=Object.keys(A);if(!i)return[];const n=t.getSceneElements().filter((e=>i.includes(e.id))),a=n.filter((e=>e.boundElements&&e.boundElements.filter((e=>"text"===e.type)).length>0)).map((e=>e.boundElements.filter((e=>"text"===e.type)).map((e=>e.id))[0])),r=n.map((e=>e.id)).concat(a);return t.getSceneElements().filter((e=>r.contains(e.id)))}async copyLinkToSelectedElementToClipboard(e){const t=this.getViewSelectedElements();if(t.length<1)return void new obsidian_module.Notice(t$d("INSERT_LINK_TO_ELEMENT_ERROR"));let A;if(2===t.length){const e=t.filter((e=>"text"===e.type));1===e.length&&e[0].containerId&&1===t.filter((e=>e.boundElements.some((e=>"text"===e.type)))).length&&(A=e[0].id)}A||(A=1===t.length?t[0].id:this.plugin.ea.getLargestElement(t).id);let i=[];if(t.some((e=>e.id===A&&"frame"===e.type)))switch(e){case"area=":case"group=":case"frame=":i=[{caption:"Frame",action:()=>{e="frame="}},{caption:"Link",action:()=>{e=""}}];break;default:i=[{caption:"Link",action:()=>{e=""}},{caption:"Frame",action:()=>{e="frame="}}]}else switch(e){case"area=":i=[{caption:"Area",action:()=>{e="area="}},{caption:"Link",action:()=>{e=""}},{caption:"Group",action:()=>{e="group="}}];break;case"group=":i=[{caption:"Group",action:()=>{e="group="}},{caption:"Link",action:()=>{e=""}},{caption:"Area",action:()=>{e="area="}}];break;default:i=[{caption:"Link",action:()=>{e=""}},{caption:"Area",action:()=>{e="area="}},{caption:"Group",action:()=>{e="group="}}]}const n=await ScriptEngine.inputPrompt(this,this.plugin,app,"Set link alias","Leave empty if you do not want to set an alias","",i);navigator.clipboard.writeText(`${e.length>0?"!":""}[[${this.file.path}#^${e}${A}${n?`|${n}`:""}]]`),new obsidian_module.Notice(t$d("INSERT_LINK_TO_ELEMENT_READY"))}updateScene(e,t=!1){const A=this.excalidrawAPI;if(!A)return;const i=e.elements&&t;i&&(e.elements=restore(e,null,null).elements);try{A.updateScene(e)}catch(t){if(errorlog({where:"ExcalidrawView.updateScene 1st attempt",fn:this.updateScene,error:t,scene:e,willDoSecondAttempt:!i}),i)warningUnknowSeriousError();else try{e.elements=restore(e,null,null).elements,A.updateScene(e)}catch(t){errorlog({where:"ExcalidrawView.updateScene 2nd attempt",fn:this.updateScene,error:t,scene:e}),warningUnknowSeriousError()}}}updateEmbeddableRef(e,t){t&&this.embeddableRefs.set(e,t)}getEmbeddableElementById(e){return this.embeddableRefs.get(e)}updateEmbeddableLeafRef(e,t){t&&this.embeddableLeafRefs.set(e,t)}getEmbeddableLeafElementById(e){return this.embeddableLeafRefs.get(e)||null}get editor(){var e;const t=this.getActiveEmbeddable();if(t){if(t.node&&t.node.isEditing)return t.node.child.editor;if((null===(e=t.leaf)||void 0===e?void 0:e.view)instanceof obsidian_module.MarkdownView)return t.leaf.view.editor}return app.workspace.openLinkText,null}}function getTextMode(e){return e.search("excalidraw-plugin: parsed\n")>-1||e.search("excalidraw-plugin: locked\n")>-1?TextMode.parsed:TextMode.raw}const DEFAULT_SETTINGS={folder:"Excalidraw",embedUseExcalidrawFolder:!1,templateFilePath:"Excalidraw/Template.excalidraw",scriptFolderPath:"Excalidraw/Scripts",compress:!1,autosave:!0,autosaveInterval:15e3,autosaveIntervalDesktop:15e3,autosaveIntervalMobile:1e4,drawingFilenamePrefix:"Drawing ",drawingEmbedPrefixWithFilename:!0,drawingFilnameEmbedPostfix:" ",drawingFilenameDateTime:"YYYY-MM-DD HH.mm.ss",useExcalidrawExtension:!0,displaySVGInPreview:void 0,previewImageType:void 0,allowImageCache:!0,displayExportedImageIfAvailable:!1,previewMatchObsidianTheme:!1,width:"400",dynamicStyling:"colorful",isLeftHanded:!1,iframeMatchExcalidrawTheme:!0,matchTheme:!1,matchThemeAlways:!1,matchThemeTrigger:!1,defaultMode:"normal",defaultPenMode:"never",allowPinchZoom:!1,allowWheelZoom:!1,zoomToFitOnOpen:!0,zoomToFitOnResize:!0,zoomToFitMaxLevel:2,linkPrefix:"📍",urlPrefix:"🌐",parseTODO:!1,todo:"☐",done:"🗹",hoverPreviewWithoutCTRL:!1,linkOpacity:1,openInAdjacentPane:!1,openInMainWorkspace:!0,showLinkBrackets:!0,allowCtrlClick:!0,forceWrap:!1,pageTransclusionCharLimit:200,wordWrappingDefault:0,removeTransclusionQuoteSigns:!0,iframelyAllowed:!0,pngExportScale:1,exportWithTheme:!0,exportWithBackground:!0,exportPaddingSVG:10,keepInSync:!1,autoexportSVG:!1,autoexportPNG:!1,autoExportLightAndDark:!1,autoexportExcalidraw:!1,embedType:"excalidraw",embedWikiLink:!0,syncExcalidraw:!1,experimentalFileType:!1,experimentalFileTag:"✏️",experimentalLivePreview:!0,experimentalEnableFourthFont:!1,experimantalFourthFont:"Virgil",fieldSuggester:!0,compatibilityMode:!1,drawingOpenCount:0,library:"deprecated",library2:{type:"excalidrawlib",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,libraryItems:[]},imageElementNotice:!0,mdSVGwidth:500,mdSVGmaxHeight:800,mdFont:"Virgil",mdFontColor:"Black",mdBorderColor:"Black",mdCSS:"",scriptEngineSettings:{},defaultTrayMode:!0,previousRelease:"0.0.0",showReleaseNotes:!0,showNewVersionNotification:!0,mathjaxSourceURL:"https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js",latexBoilerplate:"\\color{blue}",taskboneEnabled:!1,taskboneAPIkey:"",pinnedScripts:[],customPens:[Object.assign({},PENS.default),Object.assign({},PENS.highlighter),Object.assign({},PENS.finetip),Object.assign({},PENS.fountain),Object.assign({},PENS.marker),Object.assign({},PENS["thick-thin"]),Object.assign({},PENS["thin-thick-thin"]),Object.assign({},PENS.default),Object.assign({},PENS.default),Object.assign({},PENS.default)],numberOfCustomPens:0,pdfScale:4,pdfBorderBox:!0,pdfGapSize:20,pdfLockAfterImport:!0,pdfNumColumns:1,pdfImportScale:.3};class ExcalidrawSettingTab extends obsidian_module.PluginSettingTab{constructor(e,t){super(e,t),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1,this.requestUpdatePinnedPens=!1,this.requestUpdateDynamicStyling=!1,this.reloadMathJax=!1,this.plugin=t}applySettingsUpdate(e=!1){e&&(this.requestReloadDrawings=!0)}async hide(){if(this.plugin.settings.scriptFolderPath=obsidian_module.normalizePath(this.plugin.settings.scriptFolderPath),"/"!==this.plugin.settings.scriptFolderPath&&""!==this.plugin.settings.scriptFolderPath||(this.plugin.settings.scriptFolderPath="Excalidraw/Scripts"),this.plugin.saveSettings(),this.requestUpdatePinnedPens&&app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedCustomPens()})),this.requestUpdateDynamicStyling&&app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&setDynamicStyle(this.plugin.ea,e.view,e.view.previousBackgroundColor,this.plugin.settings.dynamicStyling)})),this.requestReloadDrawings){const e=app.workspace.getLeavesOfType("excalidraw");for(const t of e)t.view instanceof ExcalidrawView&&(await t.view.save(!1),await t.view.reload(!0));this.requestEmbedUpdate=!0}this.requestEmbedUpdate&&this.plugin.triggerEmbedUpdates(),this.plugin.scriptEngine.updateScriptPath(),this.reloadMathJax&&this.plugin.loadMathJax()}async display(){var e;await this.plugin.loadSettings(),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1;const{containerEl:t}=this;t.addClass("excalidraw-settings"),this.containerEl.empty();const A=t.createDiv("coffee");A.addClass("ex-coffee-div"),A.createEl("a",{href:"https://ko-fi.com/zsolt"}).createEl("img",{attr:{src:"https://cdn.ko-fi.com/cdn/kofi3.png?v=3"}}).height=45,new obsidian_module.Setting(t).setName(t$d("RELEASE_NOTES_NAME")).setDesc(fragWithHTML(t$d("RELEASE_NOTES_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showReleaseNotes).onChange((async e=>{this.plugin.settings.showReleaseNotes=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("NEWVERSION_NOTIFICATION_NAME")).setDesc(fragWithHTML(t$d("NEWVERSION_NOTIFICATION_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showNewVersionNotification).onChange((async e=>{this.plugin.settings.showNewVersionNotification=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FOLDER_NAME")).setDesc(fragWithHTML(t$d("FOLDER_DESC"))).addText((e=>e.setPlaceholder("Excalidraw").setValue(this.plugin.settings.folder).onChange((async e=>{this.plugin.settings.folder=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FOLDER_EMBED_NAME")).setDesc(fragWithHTML(t$d("FOLDER_EMBED_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.embedUseExcalidrawFolder).onChange((async e=>{this.plugin.settings.embedUseExcalidrawFolder=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("TEMPLATE_NAME")).setDesc(fragWithHTML(t$d("TEMPLATE_DESC"))).addText((e=>e.setPlaceholder("Excalidraw/Template").setValue(this.plugin.settings.templateFilePath).onChange((async e=>{this.plugin.settings.templateFilePath=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("SCRIPT_FOLDER_NAME")).setDesc(fragWithHTML(t$d("SCRIPT_FOLDER_DESC"))).addText((e=>e.setPlaceholder("Excalidraw/Scripts").setValue(this.plugin.settings.scriptFolderPath).onChange((async e=>{this.plugin.settings.scriptFolderPath=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("SAVING_HEAD")}),new obsidian_module.Setting(t).setName(t$d("COMPRESS_NAME")).setDesc(fragWithHTML(t$d("COMPRESS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.compress).onChange((async e=>{this.plugin.settings.compress=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("AUTOSAVE_INTERVAL_DESKTOP_NAME")).setDesc(fragWithHTML(t$d("AUTOSAVE_INTERVAL_DESKTOP_DESC"))).addDropdown((e=>e.addOption("15000","Frequent (every 15 seconds)").addOption("60000","Moderate (every 60 seconds)").addOption("300000","Rare (every 5 minutes)").addOption("900000","Practically never (every 15 minutes)").setValue(this.plugin.settings.autosaveIntervalDesktop.toString()).onChange((async e=>{this.plugin.settings.autosaveIntervalDesktop=parseInt(e),this.plugin.settings.autosaveInterval=app.isMobile?this.plugin.settings.autosaveIntervalMobile:this.plugin.settings.autosaveIntervalDesktop,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("AUTOSAVE_INTERVAL_MOBILE_NAME")).setDesc(fragWithHTML(t$d("AUTOSAVE_INTERVAL_MOBILE_DESC"))).addDropdown((e=>e.addOption("10000","Frequent (every 10 seconds)").addOption("30000","Moderate (every 30 seconds)").addOption("60000","Rare (every 1 minute)").addOption("300000","Practically never (every 5 minutes)").setValue(this.plugin.settings.autosaveIntervalMobile.toString()).onChange((async e=>{this.plugin.settings.autosaveIntervalMobile=parseInt(e),this.plugin.settings.autosaveInterval=app.isMobile?this.plugin.settings.autosaveIntervalMobile:this.plugin.settings.autosaveIntervalDesktop,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("FILENAME_HEAD")}),t.createDiv("",(e=>{e.innerHTML=t$d("FILENAME_DESC")}));const i=()=>`${t$d("FILENAME_SAMPLE")}${getDrawingFilename(this.plugin.settings)}
${t$d("FILENAME_EMBED_SAMPLE")}${getEmbedFilename("{NOTE_NAME}",this.plugin.settings)}`,n=t.createEl("p",{text:""});let a,r,s,o,l,c,d;n.innerHTML=i(),new obsidian_module.Setting(t).setName(t$d("FILENAME_PREFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_DESC"))).addText((e=>e.setPlaceholder("Drawing ").setValue(this.plugin.settings.drawingFilenamePrefix).onChange((async t=>{this.plugin.settings.drawingFilenamePrefix=t.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilenamePrefix),n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_PREFIX_EMBED_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_EMBED_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.drawingEmbedPrefixWithFilename).onChange((async e=>{this.plugin.settings.drawingEmbedPrefixWithFilename=e,n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_POSTFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_POSTFIX_DESC"))).addText((e=>e.setPlaceholder("").setValue(this.plugin.settings.drawingFilnameEmbedPostfix).onChange((async t=>{this.plugin.settings.drawingFilnameEmbedPostfix=t.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilnameEmbedPostfix),n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_DATE_NAME")).setDesc(fragWithHTML(t$d("FILENAME_DATE_DESC"))).addText((e=>e.setPlaceholder("YYYY-MM-DD HH.mm.ss").setValue(this.plugin.settings.drawingFilenameDateTime).onChange((async t=>{this.plugin.settings.drawingFilenameDateTime=t.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilenameDateTime),n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_EXCALIDRAW_EXTENSION_NAME")).setDesc(fragWithHTML(t$d("FILENAME_EXCALIDRAW_EXTENSION_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.useExcalidrawExtension).onChange((async e=>{this.plugin.settings.useExcalidrawExtension=e,n.innerHTML=i(),this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("DISPLAY_HEAD")}),new obsidian_module.Setting(t).setName(t$d("DYNAMICSTYLE_NAME")).setDesc(fragWithHTML(t$d("DYNAMICSTYLE_DESC"))).addDropdown((e=>e.addOption("none","Dynamic Styling OFF").addOption("colorful","Match color").addOption("gray","Gray, match tone").setValue(this.plugin.settings.dynamicStyling).onChange((async e=>{this.requestUpdateDynamicStyling=!0,this.plugin.settings.dynamicStyling=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("LEFTHANDED_MODE_NAME")).setDesc(fragWithHTML(t$d("LEFTHANDED_MODE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.isLeftHanded).onChange((async e=>{this.plugin.settings.isLeftHanded=e,setLeftHandedMode(e),setTimeout((()=>setLeftHandedMode(e))),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("IFRAME_MATCH_THEME_NAME")).setDesc(fragWithHTML(t$d("IFRAME_MATCH_THEME_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.iframeMatchExcalidrawTheme).onChange((async e=>{this.plugin.settings.iframeMatchExcalidrawTheme=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("MATCH_THEME_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchTheme).onChange((async e=>{this.plugin.settings.matchTheme=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("MATCH_THEME_ALWAYS_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_ALWAYS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchThemeAlways).onChange((async e=>{this.plugin.settings.matchThemeAlways=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("MATCH_THEME_TRIGGER_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_TRIGGER_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchThemeTrigger).onChange((async e=>{this.plugin.settings.matchThemeTrigger=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("DEFAULT_OPEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_OPEN_MODE_DESC"))).addDropdown((e=>e.addOption("normal","Always in normal-mode").addOption("zen","Always in zen-mode").addOption("view","Always in view-mode").addOption("view-mobile","Usually normal, but view-mode on Phone").setValue(this.plugin.settings.defaultMode).onChange((async e=>{this.plugin.settings.defaultMode=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("DEFAULT_PEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_PEN_MODE_DESC"))).addDropdown((e=>e.addOption("never","Never").addOption("mobile","On Obsidian Mobile").addOption("always","Always").setValue(this.plugin.settings.defaultPenMode).onChange((async e=>{this.plugin.settings.defaultPenMode=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("DEFAULT_PINCHZOOM_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_PINCHZOOM_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowPinchZoom).onChange((async e=>{this.plugin.settings.allowPinchZoom=e,app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinchZoom()})),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("DEFAULT_WHEELZOOM_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_WHEELZOOM_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowWheelZoom).onChange((async e=>{this.plugin.settings.allowWheelZoom=e,app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updateWheelZoom()})),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("ZOOM_TO_FIT_ONOPEN_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_ONOPEN_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.zoomToFitOnOpen).onChange((async e=>{this.plugin.settings.zoomToFitOnOpen=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("ZOOM_TO_FIT_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.zoomToFitOnResize).onChange((async e=>{this.plugin.settings.zoomToFitOnResize=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("ZOOM_TO_FIT_MAX_LEVEL_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_MAX_LEVEL_DESC"))).addSlider((e=>e.setLimits(.5,10,.5).setValue(this.plugin.settings.zoomToFitMaxLevel).onChange((async e=>{a.innerText=` ${e.toString()}`,this.plugin.settings.zoomToFitMaxLevel=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{a=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.zoomToFitMaxLevel.toString()}`})),this.containerEl.createEl("h1",{text:t$d("LINKS_HEAD")}),this.containerEl.createEl("span",void 0,(e=>e.innerHTML=t$d("LINKS_DESC"))),new obsidian_module.Setting(t).setName(t$d("ADJACENT_PANE_NAME")).setDesc(fragWithHTML(t$d("ADJACENT_PANE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.openInAdjacentPane).onChange((async e=>{this.plugin.settings.openInAdjacentPane=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("MAINWORKSPACE_PANE_NAME")).setDesc(fragWithHTML(t$d("MAINWORKSPACE_PANE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.openInMainWorkspace).onChange((async e=>{this.plugin.settings.openInMainWorkspace=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(fragWithHTML(t$d("LINK_BRACKETS_NAME"))).setDesc(fragWithHTML(t$d("LINK_BRACKETS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showLinkBrackets).onChange((e=>{this.plugin.settings.showLinkBrackets=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("LINK_PREFIX_NAME")).setDesc(fragWithHTML(t$d("LINK_PREFIX_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.linkPrefix).onChange((e=>{this.plugin.settings.linkPrefix=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("URL_PREFIX_NAME")).setDesc(fragWithHTML(t$d("URL_PREFIX_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.urlPrefix).onChange((e=>{this.plugin.settings.urlPrefix=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("PARSE_TODO_NAME")).setDesc(fragWithHTML(t$d("PARSE_TODO_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.parseTODO).onChange((e=>{this.plugin.settings.parseTODO=e,r.setDisabled(!e),s.setDisabled(!e),this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("TODO_NAME")).setDesc(fragWithHTML(t$d("TODO_DESC"))).addText((e=>{r=e,e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.todo).onChange((e=>{this.plugin.settings.todo=e,this.applySettingsUpdate(!0)}))})),r.setDisabled(!this.plugin.settings.parseTODO),new obsidian_module.Setting(t).setName(t$d("DONE_NAME")).setDesc(fragWithHTML(t$d("DONE_DESC"))).setDisabled(!this.plugin.settings.parseTODO).addText((e=>{s=e,e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.done).onChange((e=>{this.plugin.settings.done=e,this.applySettingsUpdate(!0)}))})),s.setDisabled(!this.plugin.settings.parseTODO),new obsidian_module.Setting(t).setName(t$d("LINKOPACITY_NAME")).setDesc(fragWithHTML(t$d("LINKOPACITY_DESC"))).addSlider((e=>e.setLimits(0,1,.05).setValue(this.plugin.settings.linkOpacity).onChange((async e=>{o.innerText=` ${e.toString()}`,this.plugin.settings.linkOpacity=e,this.applySettingsUpdate(!0)})))).settingEl.createDiv("",(e=>{o=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.linkOpacity.toString()}`})),new obsidian_module.Setting(t).setName(t$d("HOVERPREVIEW_NAME")).setDesc(fragWithHTML(t$d("HOVERPREVIEW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.hoverPreviewWithoutCTRL).onChange((async e=>{this.plugin.settings.hoverPreviewWithoutCTRL=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("LINK_CTRL_CLICK_NAME")).setDesc(fragWithHTML(t$d("LINK_CTRL_CLICK_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowCtrlClick).onChange((async e=>{this.plugin.settings.allowCtrlClick=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("TRANSCLUSION_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_WRAP_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.forceWrap).onChange((async e=>{this.plugin.settings.forceWrap=e,this.applySettingsUpdate(!0)})))).descEl.innerHTML=`![[doc#^ref]]{number} ${t$d("TRANSCLUSION_WRAP_DESC")}`,new obsidian_module.Setting(t).setName(t$d("PAGE_TRANSCLUSION_CHARCOUNT_NAME")).setDesc(fragWithHTML(t$d("PAGE_TRANSCLUSION_CHARCOUNT_DESC"))).addText((e=>e.setPlaceholder("Enter a number").setValue(this.plugin.settings.pageTransclusionCharLimit.toString()).onChange((async t=>{const A=parseInt(t);if(isNaN(A)&&""!==t)e.setValue(this.plugin.settings.pageTransclusionCharLimit.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.pageTransclusionCharLimit=10,void this.applySettingsUpdate(!0);this.plugin.settings.pageTransclusionCharLimit=A,e.setValue(this.plugin.settings.pageTransclusionCharLimit.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("TRANSCLUSION_DEFAULT_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_DEFAULT_WRAP_DESC"))).addText((e=>e.setPlaceholder("Enter a number").setValue(this.plugin.settings.wordWrappingDefault.toString()).onChange((async t=>{const A=parseInt(t);if(isNaN(A)&&""!==t)e.setValue(this.plugin.settings.wordWrappingDefault.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.wordWrappingDefault=0,void this.applySettingsUpdate(!0);this.plugin.settings.wordWrappingDefault=A,e.setValue(this.plugin.settings.wordWrappingDefault.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("QUOTE_TRANSCLUSION_REMOVE_NAME")).setDesc(fragWithHTML(t$d("QUOTE_TRANSCLUSION_REMOVE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.removeTransclusionQuoteSigns).onChange((e=>{this.plugin.settings.removeTransclusionQuoteSigns=e,this.requestEmbedUpdate=!0,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("GET_URL_TITLE_NAME")).setDesc(fragWithHTML(t$d("GET_URL_TITLE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.iframelyAllowed).onChange((async e=>{this.plugin.settings.iframelyAllowed=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("MD_HEAD")}),this.containerEl.createEl("p",{text:t$d("MD_HEAD_DESC")}),new obsidian_module.Setting(t).setName(t$d("MD_TRANSCLUDE_WIDTH_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_WIDTH_DESC"))).addText((e=>e.setPlaceholder("Enter a number e.g. 500").setValue(this.plugin.settings.mdSVGwidth.toString()).onChange((async t=>{const A=parseInt(t);if(isNaN(A)&&""!==t)e.setValue(this.plugin.settings.mdSVGwidth.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.mdSVGwidth=500,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGwidth=A,this.requestReloadDrawings=!0,e.setValue(this.plugin.settings.mdSVGwidth.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("MD_TRANSCLUDE_HEIGHT_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_HEIGHT_DESC"))).addText((e=>e.setPlaceholder("Enter a number e.g. 800").setValue(this.plugin.settings.mdSVGmaxHeight.toString()).onChange((async t=>{const A=parseInt(t);if(isNaN(A)&&""!==t)e.setValue(this.plugin.settings.mdSVGmaxHeight.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.mdSVGmaxHeight=800,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGmaxHeight=A,this.requestReloadDrawings=!0,e.setValue(this.plugin.settings.mdSVGmaxHeight.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("MD_DEFAULT_FONT_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_FONT_DESC"))).addDropdown((async e=>{e.addOption("Virgil","Virgil"),e.addOption("Cascadia","Cascadia"),this.app.vault.getFiles().filter((e=>["ttf","woff","woff2"].contains(e.extension))).forEach((t=>{e.addOption(t.path,t.name)})),e.setValue(this.plugin.settings.mdFont).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFont=e,this.applySettingsUpdate(!0)}))})),new obsidian_module.Setting(t).setName(t$d("MD_DEFAULT_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_COLOR_DESC"))).addText((e=>e.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdFontColor).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFontColor=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("MD_DEFAULT_BORDER_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_BORDER_COLOR_DESC"))).addText((e=>e.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdBorderColor).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdBorderColor=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("MD_CSS_NAME")).setDesc(fragWithHTML(t$d("MD_CSS_DESC"))).addText((e=>e.setPlaceholder("filename of css file in vault").setValue(this.plugin.settings.mdCSS).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdCSS=e,this.applySettingsUpdate(!0)})))),this.containerEl.createEl("h1",{text:t$d("EMBED_HEAD")}),new obsidian_module.Setting(t).setName(t$d("EMBED_PREVIEW_IMAGETYPE_NAME")).setDesc(fragWithHTML(t$d("EMBED_PREVIEW_IMAGETYPE_DESC"))).addDropdown((e=>e.addOption(PreviewImageType.PNG,"PNG Image").addOption(PreviewImageType.SVG,"Native SVG").addOption(PreviewImageType.SVGIMG,"SVG Image").setValue(this.plugin.settings.previewImageType).onChange((e=>{this.plugin.settings.previewImageType=e,this.requestEmbedUpdate=!0,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EMBED_TYPE_NAME")).setDesc(fragWithHTML(t$d("EMBED_TYPE_DESC"))).addDropdown((async e=>{l=e,l.addOption("excalidraw","excalidraw"),this.plugin.settings.autoexportPNG?l.addOption("PNG","PNG"):"PNG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),this.plugin.settings.autoexportSVG?l.addOption("SVG","SVG"):"SVG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),l.setValue(this.plugin.settings.embedType).onChange((async e=>{this.plugin.settings.embedType=e,this.applySettingsUpdate()}))})),this.containerEl.createEl("h4",{text:t$d("EMBED_CACHING")}),new obsidian_module.Setting(t).setName(t$d("EMBED_IMAGE_CACHE_NAME")).setDesc(fragWithHTML(t$d("EMBED_IMAGE_CACHE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowImageCache).onChange((e=>{this.plugin.settings.allowImageCache=e,this.applySettingsUpdate()})))).addButton((e=>e.setButtonText(t$d("EMBED_IMAGE_CACHE_CLEAR")).onClick((()=>{imageCache.clearImageCache()})))).addButton((e=>e.setButtonText(t$d("BACKUP_CACHE_CLEAR")).onClick((()=>{new ConfirmationPrompt(this.plugin,t$d("BACKUP_CACHE_CLEAR_CONFIRMATION")).waitForClose.then((e=>{e&&imageCache.clearBackupCache()}))})))),new obsidian_module.Setting(t).setName(t$d("EMBED_REUSE_EXPORTED_IMAGE_NAME")).setDesc(fragWithHTML(t$d("EMBED_REUSE_EXPORTED_IMAGE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.displayExportedImageIfAvailable).onChange((async e=>{this.plugin.settings.displayExportedImageIfAvailable=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h4",{text:t$d("EMBED_SIZING")}),new obsidian_module.Setting(t).setName(t$d("EMBED_WIDTH_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIDTH_DESC"))).addText((e=>e.setPlaceholder("400").setValue(this.plugin.settings.width).onChange((async e=>{this.plugin.settings.width=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(t).setName(t$d("EMBED_WIKILINK_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIKILINK_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.embedWikiLink).onChange((async e=>{this.plugin.settings.embedWikiLink=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_PNG_SCALE_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_SCALE_DESC"))).addSlider((e=>e.setLimits(1,5,.5).setValue(this.plugin.settings.pngExportScale).onChange((async e=>{c.innerText=` ${e.toString()}`,this.plugin.settings.pngExportScale=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{c=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.pngExportScale.toString()}`})),new obsidian_module.Setting(t).setName(t$d("EXPORT_PADDING_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PADDING_DESC"))).addSlider((e=>e.setLimits(0,50,5).setValue(this.plugin.settings.exportPaddingSVG).onChange((async e=>{d.innerText=` ${e.toString()}`,this.plugin.settings.exportPaddingSVG=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{d=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.exportPaddingSVG.toString()}`})),this.containerEl.createEl("h4",{text:t$d("EMBED_THEME_BACKGROUND")}),new obsidian_module.Setting(t).setName(t$d("EXPORT_BACKGROUND_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BACKGROUND_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.exportWithBackground).onChange((async e=>{this.plugin.settings.exportWithBackground=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_THEME_NAME")).setDesc(fragWithHTML(t$d("EXPORT_THEME_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.exportWithTheme).onChange((async e=>{this.plugin.settings.exportWithTheme=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(t).setName(t$d("PREVIEW_MATCH_OBSIDIAN_NAME")).setDesc(fragWithHTML(t$d("PREVIEW_MATCH_OBSIDIAN_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.previewMatchObsidianTheme).onChange((async e=>{this.plugin.settings.previewMatchObsidianTheme=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("EXPORT_HEAD")}),new obsidian_module.Setting(t).setName(t$d("EXPORT_SYNC_NAME")).setDesc(fragWithHTML(t$d("EXPORT_SYNC_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.keepInSync).onChange((async e=>{this.plugin.settings.keepInSync=e,this.applySettingsUpdate()}))));const h=e=>{let t=0;for(t=0;te.setValue(this.plugin.settings.autoexportSVG).onChange((async e=>{e?l.addOption("SVG","SVG"):("SVG"===this.plugin.settings.embedType&&(l.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),h("SVG")),this.plugin.settings.autoexportSVG=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_PNG_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoexportPNG).onChange((async e=>{e?l.addOption("PNG","PNG"):("PNG"===this.plugin.settings.embedType&&(l.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),h("PNG")),this.plugin.settings.autoexportPNG=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_BOTH_DARK_AND_LIGHT_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BOTH_DARK_AND_LIGHT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoExportLightAndDark).onChange((async e=>{this.plugin.settings.autoExportLightAndDark=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("COMPATIBILITY_HEAD")}),new obsidian_module.Setting(t).setName(t$d("COMPATIBILITY_MODE_NAME")).setDesc(fragWithHTML(t$d("COMPATIBILITY_MODE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.compatibilityMode).onChange((async e=>{this.plugin.settings.compatibilityMode=e,n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("EXPORT_EXCALIDRAW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoexportExcalidraw).onChange((async e=>{this.plugin.settings.autoexportExcalidraw=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("SYNC_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("SYNC_EXCALIDRAW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.syncExcalidraw).onChange((async e=>{this.plugin.settings.syncExcalidraw=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("NONSTANDARD_HEAD")}),this.containerEl.createEl("p",{text:t$d("NONSTANDARD_DESC")}),new obsidian_module.Setting(t).setName(t$d("CUSTOM_PEN_NAME")).setDesc(t$d("CUSTOM_PEN_DESC")).addDropdown((e=>e.addOption("0","0").addOption("1","1").addOption("2","2").addOption("3","3").addOption("4","4").addOption("5","5").addOption("6","6").addOption("7","7").addOption("8","8").addOption("9","9").addOption("10","10").setValue(this.plugin.settings.numberOfCustomPens.toString()).onChange((e=>{this.plugin.settings.numberOfCustomPens=parseInt(e),this.requestUpdatePinnedPens=!0,this.applySettingsUpdate(!1)})))),new obsidian_module.Setting(t).setName(t$d("ENABLE_FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("ENABLE_FOURTH_FONT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalEnableFourthFont).onChange((async e=>{this.requestReloadDrawings=!0,this.plugin.settings.experimentalEnableFourthFont=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("FOURTH_FONT_DESC"))).addDropdown((async e=>{e.addOption("Virgil","Virgil"),this.app.vault.getFiles().filter((e=>["ttf","woff","woff2","otf"].contains(e.extension))).forEach((t=>{e.addOption(t.path,t.name)})),e.setValue(this.plugin.settings.experimantalFourthFont).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.experimantalFourthFont=e,this.applySettingsUpdate(!0),this.plugin.initializeFourthFont()}))})),this.containerEl.createEl("h1",{text:t$d("EXPERIMENTAL_HEAD")}),this.containerEl.createEl("p",{text:t$d("EXPERIMENTAL_DESC")}),new obsidian_module.Setting(t).setName(t$d("MATHJAX_NAME")).setDesc(t$d("MATHJAX_DESC")).addDropdown((e=>{e.addOption("https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js","jsdelivr").addOption("https://unpkg.com/mathjax@3.2.1/es5/tex-svg.js","unpkg").addOption("https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.1/es5/tex-svg-full.min.js","cdnjs").setValue(this.plugin.settings.mathjaxSourceURL).onChange((e=>{this.plugin.settings.mathjaxSourceURL=e,this.reloadMathJax=!0,this.applySettingsUpdate()}))})),new obsidian_module.Setting(t).setName(t$d("LATEX_DEFAULT_NAME")).setDesc(fragWithHTML(t$d("LATEX_DEFAULT_DESC"))).addText((e=>e.setValue(this.plugin.settings.latexBoilerplate).onChange((e=>{this.plugin.settings.latexBoilerplate=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FIELD_SUGGESTER_NAME")).setDesc(fragWithHTML(t$d("FIELD_SUGGESTER_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.fieldSuggester).onChange((async e=>{this.plugin.settings.fieldSuggester=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILETYPE_NAME")).setDesc(fragWithHTML(t$d("FILETYPE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalFileType).onChange((async e=>{this.plugin.settings.experimentalFileType=e,this.plugin.experimentalFileTypeDisplayToggle(e),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILETAG_NAME")).setDesc(fragWithHTML(t$d("FILETAG_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.experimentalFileTag).onChange((async e=>{this.plugin.settings.experimentalFileTag=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("LIVEPREVIEW_NAME")).setDesc(fragWithHTML(t$d("LIVEPREVIEW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalLivePreview).onChange((async e=>{this.plugin.settings.experimentalLivePreview=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h2",{text:t$d("TASKBONE_HEAD")}),this.containerEl.createEl("p",{text:t$d("TASKBONE_DESC")}),new obsidian_module.Setting(t).setName(t$d("TASKBONE_ENABLE_NAME")).setDesc(fragWithHTML(t$d("TASKBONE_ENABLE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.taskboneEnabled).onChange((async e=>{if(u.setDisabled(!e),this.plugin.settings.taskboneEnabled=e,""===this.plugin.settings.taskboneAPIkey){const e=await this.plugin.taskbone.initialize(!1);e&&u.setValue(e)}this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("TASKBONE_APIKEY_NAME")).setDesc(fragWithHTML(t$d("TASKBONE_APIKEY_DESC"))).addText((e=>{u=e,u.setValue(this.plugin.settings.taskboneAPIkey).onChange((async e=>{this.plugin.settings.taskboneAPIkey=e,this.applySettingsUpdate()})).setDisabled(!this.plugin.settings.taskboneEnabled)}));const g=null===(e=this.plugin.scriptEngine.getListofScripts())||void 0===e?void 0:e.map((e=>this.plugin.scriptEngine.getScriptName(e)));if(Object.keys(this.plugin.settings.scriptEngineSettings).length>0&&g){const e=(e,t)=>{const A=this.plugin.settings.scriptEngineSettings[e][t];return"object"==typeof A?A.height:null},A=(e,t)=>{const A=this.plugin.settings.scriptEngineSettings[e][t];return"object"==typeof A?A.value:A},i=(e,t,A)=>{"object"==typeof this.plugin.settings.scriptEngineSettings[e][t]?this.plugin.settings.scriptEngineSettings[e][t].value=A:this.plugin.settings.scriptEngineSettings[e][t]=A},n=(e,n,a)=>{new obsidian_module.Setting(t).setName(n).setDesc(fragWithHTML(null!=a?a:"")).addToggle((t=>t.setValue(A(e,n)).onChange((async t=>{i(e,n,t),this.applySettingsUpdate()}))))},a=(n,a,r,s)=>{s&&"[object Array]"===Object.prototype.toString.call(s)&&s.length>0?new obsidian_module.Setting(t).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addDropdown((e=>{s.forEach((t=>e.addOption(t.toString(),t.toString()))),e.setValue(A(n,a)).onChange((async e=>{i(n,a,e),this.applySettingsUpdate()}))})):e(n,a)?new obsidian_module.Setting(t).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addTextArea((t=>{t.inputEl.style.minHeight=e(n,a),t.inputEl.style.minWidth="400px",t.setValue(A(n,a)).onChange((async e=>{i(n,a,e),this.applySettingsUpdate()}))})):new obsidian_module.Setting(t).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addText((e=>e.setValue(A(n,a)).onChange((async e=>{i(n,a,e),this.applySettingsUpdate()}))))},r=(e,n,a)=>{new obsidian_module.Setting(t).setName(n).setDesc(fragWithHTML(null!=a?a:"")).addText((t=>t.setPlaceholder("Enter a number").setValue(A(e,n).toString()).onChange((async a=>{const r=parseFloat(a);isNaN(r)&&""!==a?t.setValue(A(e,n).toString()):(i(e,n,isNaN(r)?0:r),this.applySettingsUpdate())}))))};this.containerEl.createEl("h1",{text:t$d("SCRIPT_SETTINGS_HEAD")}),Object.keys(this.plugin.settings.scriptEngineSettings).filter((e=>g.contains(e))).forEach((e=>{const t=this.plugin.settings.scriptEngineSettings[e],A=Object.values(t);0===A.length||A.length>0&&0===A.map((e=>e.hidden?0:1)).reduce(((e,t)=>e+t))||(this.containerEl.createEl("h3",{text:e}),Object.keys(t).forEach((A=>{var i;const s=t[A];switch(typeof(null!==(i=s.value)&&void 0!==i?i:s)){case"boolean":s.hidden||n(e,A,s.description);break;case"string":s.hidden||a(e,A,s.description,s.valueset);break;case"number":s.hidden||r(e,A,s.description)}})))}))}}}var openDialogAction;!function(e){e[e.openFile=0]="openFile",e[e.insertLinkToDrawing=1]="insertLinkToDrawing"}(openDialogAction||(openDialogAction={}));class OpenFileDialog extends obsidian_module.FuzzySuggestModal{constructor(e,t){super(e),this.app=e,this.action=openDialogAction.openFile,this.plugin=t,this.onNewPane=!1,this.limit=20,this.setInstructions([{command:t$d("TYPE_FILENAME"),purpose:""}]),this.inputEl.onkeyup=e=>{"Enter"==e.key&&this.action==openDialogAction.openFile&&this.containerEl.innerText.includes(EMPTY_MESSAGE)&&(this.plugin.createAndOpenDrawing(`${this.plugin.settings.folder}/${this.inputEl.value}.excalidraw.md`,this.onNewPane?"new-pane":"active-pane"),this.close())}}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>this.plugin.isExcalidrawFile(e)))}getItemText(e){return e.path}onChooseItem(e){switch(this.action){case openDialogAction.openFile:this.plugin.openDrawing(e,this.onNewPane?"new-pane":"active-pane",!0);break;case openDialogAction.insertLinkToDrawing:this.plugin.embedDrawing(e)}}start(e,t){switch(this.action=e,this.onNewPane=t,e){case openDialogAction.openFile:this.emptyStateText=EMPTY_MESSAGE,this.setPlaceholder(t$d("SELECT_FILE_OR_TYPE_NEW"));break;case openDialogAction.insertLinkToDrawing:this.emptyStateText=t$d("NO_MATCH"),this.setPlaceholder(t$d("SELECT_TO_EMBED"))}this.open()}}class InsertLinkDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e),this.app=e,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_FILE_TO_LINK")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return this.app.metadataCache.getLinkSuggestions().filter((e=>!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path+(e.alias?`|${e.alias}`:"")}onChooseItem(e){let t=e.path;e.file&&(t=this.app.metadataCache.fileToLinktext(e.file,this.drawingPath,!0)),this.addText(`[[${t+(e.alias?`|${e.alias}`:"")}]]`)}start(e,t){this.addText=t,this.drawingPath=e,this.open()}}class InsertImageDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE_WITH_OPTION_TO_SCALE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_DRAWING")),this.emptyStateText=t$d("NO_MATCH"),this.inputEl.onkeyup=e=>{"Enter"===e.key&&scaleToFullsizeModifier(e)&&this.chooser.values&&(this.onChooseItem(this.chooser.values[this.chooser.selectedItem].item,new KeyboardEvent("keypress",{shiftKey:!0,metaKey:!(DEVICE.isIOS||DEVICE.isMacOS),ctrlKey:DEVICE.isIOS||DEVICE.isMacOS})),this.close())}}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>(IMAGE_TYPES.contains(e.extension)||this.plugin.isExcalidrawFile(e))&&!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path}onChooseItem(e,t){const A=this.plugin.ea.getAPI(this.view);A.canvas.theme=this.view.excalidrawAPI.getAppState().theme;const i=scaleToFullsizeModifier(t);(async()=>{await A.addImage(0,0,e,!i),A.addElementsToView(!0,!0,!0)})()}start(e){this.view=e,this.open()}}class ImportSVGDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_DRAWING")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>"svg"===e.extension&&!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path}async onChooseItem(e,t){if(!e)return;const A=this.plugin.ea;A.reset(),A.setView(this.view);const i=await app.vault.read(e);i&&""!==i&&(A.importSVG(i),A.addElementsToView(!0,!0,!0,!0))}start(e){this.view=e,this.open()}}class InsertMDDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_MD")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>"md"===e.extension&&!this.plugin.isExcalidrawFile(e)))}getItemText(e){return e.path}onChooseItem(e){const t=this.plugin.ea;t.reset(),t.setView(this.view),(async()=>{await t.addImage(0,0,e),t.addElementsToView(!0,!1,!0)})()}start(e){this.view=e,this.open()}}function around(e,t){const A=Object.keys(t).map((A=>around1(e,A,t[A])));return 1===A.length?A[0]:function(){A.forEach((e=>e()))}}function around1(e,t,A){const i=e[t],n=e.hasOwnProperty(t);let a=A(i);return i&&Object.setPrototypeOf(a,i),Object.setPrototypeOf(r,a),e[t]=r,s;function r(...A){return a===i&&e[t]===r&&s(),a.apply(this,A)}function s(){e[t]===r&&(n?e[t]=i:delete e[t]),a!==i&&(a=i,Object.setPrototypeOf(r,i||Function))}}function dedupe(e,t,A){return i[e]=e,i;function i(...i){return(t[e]===e?t:A).apply(this,i)}}let plugin,vault,metadataCache;const getDefaultWidth=e=>{const t=parseInt(e.settings.width);return isNaN(t)||0===t||null===t?"400":e.settings.width},initializeMarkdownPostProcessor=e=>{plugin=e,vault=e.app.vault,metadataCache=e.app.metadataCache},_getPNG=async({imgAttributes:e,filenameParts:t,theme:A,cacheReady:i,img:n,file:a,exportSettings:r,loader:s})=>{const o=parseInt(e.fwidth),l=o>=2400?5:o>=1800?4:o>=1200?3:o>=600?2:1,c=Object.assign(Object.assign({},t),{isDark:"dark"===A,previewImageType:PreviewImageType.PNG,scale:l});if(i){const e=await imageCache.getImageFromCache(c);if(e&&"string"==typeof e)return n.src=e,n}const d=t.hasGroupref||t.hasFrameref?void 0:await getQuickImagePreview(plugin,a.path,"png"),h=null!=d?d:await createPNG(t.hasGroupref||t.hasFrameref?t.filepath+t.linkpartReference:a.path,l,r,s,A,null,null,[],plugin,0);return h?(n.src=URL.createObjectURL(h),i&&imageCache.addImageToCache(c,n.src,h),n):null},setStyle=({element:e,imgAttributes:t,onCanvas:A})=>{let i=`max-width:${t.fwidth}${t.fwidth.match(/\d$/)?"px":""}; `;t.fheight&&(i+=`height:${t.fheight}px;`),A||e.setAttribute("style",i),e.addClass(t.style),e.addClass("excalidraw-embedded-img")},_getSVGIMG=async({filenameParts:e,theme:t,cacheReady:A,img:i,file:n,exportSettings:a,loader:r})=>{const s=Object.assign(Object.assign({},e),{isDark:"dark"===t,previewImageType:PreviewImageType.SVGIMG,scale:1});if(A){const e=await imageCache.getImageFromCache(s);if(e&&"string"==typeof e)return i.setAttribute("src",e),i}if(!e.hasBlockref&&!e.hasSectionref){const e=await getQuickImagePreview(plugin,n.path,"svg");if(e){const t=convertSVGStringToElement(e);if(t)return addSVGToImgSrc(i,t,A,s)}}let o=convertSVGStringToElement((await createSVG(e.hasGroupref||e.hasBlockref||e.hasSectionref||e.hasFrameref?e.filepath+e.linkpartReference:n.path,!0,a,r,t,null,null,[],plugin,0,getExportPadding(plugin,n))).outerHTML);return o?(o=embedFontsInSVG(o,plugin,!1),o.removeAttribute("width"),o.removeAttribute("height"),addSVGToImgSrc(i,o,A,s)):null},_getSVGNative=async({filenameParts:e,theme:t,cacheReady:A,containerElement:i,file:n,exportSettings:a,loader:r})=>{const s=Object.assign(Object.assign({},e),{isDark:"dark"===t,previewImageType:PreviewImageType.SVG,scale:1});let o;A&&(o=await imageCache.getImageFromCache(s));let l=o&&o instanceof SVGSVGElement?o:convertSVGStringToElement((await createSVG(e.hasGroupref||e.hasBlockref||e.hasSectionref||e.hasFrameref?e.filepath+e.linkpartReference:n.path,!1,a,r,t,null,null,[],plugin,0,getExportPadding(plugin,n),void 0,!0)).outerHTML);return l?(l=embedFontsInSVG(l,plugin,!0),l.removeAttribute("width"),l.removeAttribute("height"),i.append(l),A&&imageCache.addImageToCache(s,"",l),i):null},getIMG=async(e,t=!1)=>{var A;let i=e.file;if(!e.file){const t=vault.getAbstractFileByPath(null===(A=e.fname)||void 0===A?void 0:A.split("#")[0]);if(!(t&&t instanceof obsidian_module.TFile))return null;i=t}const n=getEmbeddedFilenameParts(e.fname);e.style=e.style.replaceAll(" ","-");const a=hasExportTheme(plugin,i)?getExportTheme(plugin,i,"light"):void 0,r={withBackground:getWithBackground(plugin,i),withTheme:!!a||plugin.settings.exportWithTheme},s=null!=a?a:plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":plugin.settings.exportWithTheme?void 0:"light";s&&(r.withTheme=!0);const o=new EmbeddedFilesLoader(plugin,s?"dark"===s:void 0),l=imageCache.isReady();switch(plugin.settings.previewImageType){case PreviewImageType.PNG:{const A=createEl("img");return setStyle({element:A,imgAttributes:e,onCanvas:t}),_getPNG({imgAttributes:e,filenameParts:n,theme:s,cacheReady:l,img:A,file:i,exportSettings:r,loader:o})}case PreviewImageType.SVGIMG:{const A=createEl("img");return setStyle({element:A,imgAttributes:e,onCanvas:t}),_getSVGIMG({filenameParts:n,theme:s,cacheReady:l,img:A,file:i,exportSettings:r,loader:o})}case PreviewImageType.SVG:{const A=createEl("div");return setStyle({element:A,imgAttributes:e,onCanvas:t}),_getSVGNative({filenameParts:n,theme:s,cacheReady:l,containerElement:A,file:i,exportSettings:r,loader:o})}}},addSVGToImgSrc=(e,t,A,i)=>{const n=(new XMLSerializer).serializeToString(t),a=new Blob([n],{type:"image/svg+xml"}),r=URL.createObjectURL(a);return e.setAttribute("src",r),A&&imageCache.addImageToCache(i,r,a),e},createImgElement=async(e,t=!1)=>{const A=await getIMG(e,t);if(!A)return null;let i;A.setAttribute("fileSource",e.fname),e.fwidth&&A.setAttribute("w",e.fwidth),e.fheight&&A.setAttribute("h",e.fheight),A.setAttribute("draggable","false"),A.setAttribute("onCanvas",t?"true":"false");const n=e=>{if(!(e.target instanceof Element))return;if(!(e.target.hasClass("excalidraw-embedded-img")?e.target:getParentOfClass(e.target,"excalidraw-embedded-img")))return;const t=A.getAttribute("fileSource");if(t){const A=t.match(/([^#]*)(.*)/);if(!A)return;plugin.openDrawing(vault.getAbstractFileByPath(A[1]),linkClickModifierType(e),!0,A[2])}};let a;const r=A;return r.addEventListener("pointermove",(e=>{i&&(Math.abs(e.screenX-a.screenX)>10||Math.abs(e.screenY-a.screenY)>10)&&(clearTimeout(i),i=null)})),r.addEventListener("pointerdown",(e=>{var t;(null===(t=null==A?void 0:A.parentElement)||void 0===t?void 0:t.hasClass("canvas-node-content"))||(i=setTimeout((()=>n(e)),500),a=e)})),r.addEventListener("pointerup",(()=>{i&&clearTimeout(i),i=null})),r.addEventListener("dblclick",n),r.addEventListener(RERENDER_EVENT,(async e=>{e.stopPropagation();const t=A.parentElement,i=A.style.maxWidth,n=A.style.maxHeight,a=A.getAttribute("fileSource"),r="true"===A.getAttribute("onCanvas"),s=await createImgElement({fname:a,fwidth:A.getAttribute("w"),fheight:A.getAttribute("h"),style:A.getAttribute("class")},r);t.empty(),r||(s.style.maxHeight=n,s.style.maxWidth=i),s.setAttribute("fileSource",a),t.append(s)})),A},createImageDiv=async(e,t=!1)=>{const A=await createImgElement(e,t);return createDiv(e.style,(e=>e.append(A)))},processReadingMode=async(e,t)=>{var A;for(const i of e){const e=null===(A=i.getAttribute("src"))||void 0===A?void 0:A.split("#")[0];if(!e)continue;const n=metadataCache.getFirstLinkpathDest(e,t.sourcePath);if(n&&n instanceof obsidian_module.TFile&&plugin.isExcalidrawFile(n)){if(isTextOnlyEmbed(i))continue;i.parentElement.replaceChild(await processInternalEmbed(i,n),i)}}},processInternalEmbed=async(e,t)=>{const A={fname:"",fheight:"",fwidth:"",style:""},i=e.getAttribute("src");if(!i)return;e.removeClass("markdown-embed"),e.removeClass("inline-embed"),e.addClass("media-embed"),e.addClass("image-embed"),A.fwidth=e.getAttribute("width")?e.getAttribute("width"):getDefaultWidth(plugin),A.fheight=e.getAttribute("height");let n=e.getAttribute("alt");A.style="excalidraw-svg",processAltText(i.split("#")[0],n,A);const a=getEmbeddedFilenameParts(i);return A.fname=(null==t?void 0:t.path)+(a.hasBlockref||a.hasSectionref?a.linkpartReference:""),A.file=t,await createImageDiv(A)},processAltText=(e,t,A)=>{var i,n;if(t&&!t.startsWith(e)){const a=t.match(/[^\|\d]*\|?((\d*%?)x?(\d*%?))?\|?(.*)/);A.fwidth=null!==(i=a[2])&&void 0!==i?i:A.fwidth,A.fheight=null!==(n=a[3])&&void 0!==n?n:A.fheight,a[4]&&!a[4].startsWith(e)&&(A.style=`excalidraw-svg-${a[4]}`),a[4]&&""!==a[4]||a[2]&&""!==a[2]||!a[0]||""===a[0]||(A.style=`excalidraw-svg-${a[0]}`)}},isTextOnlyEmbed=e=>{const t=e.getAttribute("src");if(!t)return!0;const A=getEmbeddedFilenameParts(t);return!(A.hasArearef||A.hasGroupref||A.hasFrameref)&&(A.hasBlockref||A.hasSectionref)},tmpObsidianWYSIWYG=async(e,t)=>{const A=app.vault.getAbstractFileByPath(t.sourcePath);if(!(A instanceof obsidian_module.TFile))return;if(!plugin.isExcalidrawFile(A))return;if(t.remainingNestLevel<4)return;const i=t.containerEl;let n=i;for(;!n.hasClass("dataview")&&!n.hasClass("cm-preview-code-block")&&!n.hasClass("cm-embed-block")&&!n.hasClass("internal-embed")&&!n.hasClass("markdown-reading-view")&&!n.hasClass("markdown-embed")&&n.parentElement;)n=n.parentElement;if(n.hasClass("dataview")||n.hasClass("cm-preview-code-block")||n.hasClass("cm-embed-block"))return;const a={fname:t.sourcePath,fheight:"",fwidth:getDefaultWidth(plugin),style:"excalidraw-svg"};a.file=A;const r=n.hasClass("markdown-embed"),s=n.hasClass("markdown-reading-view");if(!n.hasClass("internal-embed")&&(r||s)){const t=Boolean(e.querySelector(".frontmatter"));if(e.empty(),!t)return void(e.parentElement===i&&i.removeChild(e));n.empty();const A=n.hasClass("canvas-node-content"),s=await createImageDiv(a,A);return r?(n.removeClass("markdown-embed"),n.removeClass("inline-embed"),n.addClass("media-embed"),n.addClass("image-embed"),!A&&s.firstChild instanceof HTMLElement&&(s.firstChild.style.maxHeight="100%",s.firstChild.style.maxWidth=null),void n.appendChild(s.firstChild)):void n.appendChild(s)}if(isTextOnlyEmbed(n))return;if(e.empty(),n.hasAttribute("ready"))return;n.setAttribute("ready",""),n.empty();const o=await processInternalEmbed(n,A);n.appendChild(o);let l=null;const c=new MutationObserver((e=>{var t;["alt","width","height"].contains(null===(t=e[0])||void 0===t?void 0:t.attributeName)&&(l&&clearTimeout(l),l=setTimeout((async()=>{l=null,n.empty();const e=await processInternalEmbed(n,A);n.appendChild(e)}),500))}));c.observe(n,{attributes:!0})},markdownPostProcessor=async(e,t)=>{var A;const i=e.querySelectorAll(".internal-embed");0!==i.length?Boolean(null===(A=t.frontmatter)||void 0===A?void 0:A.hasOwnProperty("excalidraw-plugin"))?e.style.display="none":await processReadingMode(i,t):tmpObsidianWYSIWYG(e,t)},hoverEvent=e=>{e.linktext?(plugin.hover.linkText=e.linktext,plugin.hover.sourcePath=e.sourcePath):plugin.hover.linkText=null},observer=new MutationObserver((async e=>{if(0==e.length)return;if(!plugin.hover.linkText)return;const t=metadataCache.getFirstLinkpathDest(plugin.hover.linkText,plugin.hover.sourcePath?plugin.hover.sourcePath:"");if(!t)return;if(!(t instanceof obsidian_module.TFile))return;if("excalidraw"!==t.extension)return;const A=getIMGFilename(t.path,"svg"),i=vault.getAbstractFileByPath(A);if(i&&i instanceof obsidian_module.TFile)return;const n=getIMGFilename(t.path,"png"),a=vault.getAbstractFileByPath(n);if(a&&a instanceof obsidian_module.TFile)return;if(!plugin.hover.linkText)return;if(1!=e.length)return;if(1!=e[0].addedNodes.length)return;if("popover hover-popover file-embed is-loaded"!=!e[0].addedNodes[0].classNames)return;const r=e[0].addedNodes[0];r.empty();const s=await getIMG({file:t,fname:t.path,fwidth:"300",fheight:null,style:"excalidraw-svg"}),o=createDiv("",(async e=>{e.appendChild(s),e.setAttribute("src",t.path),e.onClickEvent((t=>{t.stopImmediatePropagation();const A=e.getAttribute("src");A&&plugin.openDrawing(vault.getAbstractFileByPath(A),linkClickModifierType(t))}))}));r.appendChild(o)})),EXCALIDRAW_AUTOMATE_INFO=[{field:"plugin",code:null,desc:"The ExcalidrawPlugin object",after:""},{field:"elementsDict",code:null,desc:"The {} dictionary object, contains the ExcalidrawElements currently edited in Automate indexed by el.id",after:'[""]'},{field:"imagesDict",code:null,desc:"the images files including DataURL, indexed by fileId",after:'[""]'},{field:"style.strokeColor",code:"[string]",desc:"A valid css color. See W3 School Colors for more.",after:""},{field:"style.backgroundColor",code:"[string]",desc:"A valid css color. See W3 School Colors for more.",after:""},{field:"style.angle",code:"[number]",desc:"Rotation of the object in radian",after:""},{field:"style.fillStyle",code:"[string]",desc:"'hachure' | 'cross-hatch' | 'solid'",after:""},{field:"style.strokeWidth",code:"[number]",desc:null,after:""},{field:"style.strokeStyle",code:"[string]",desc:"'solid' | 'dashed' | 'dotted'",after:""},{field:"style.roughness",code:"[number]",desc:"0:Architect\n1:Artist\n2:Cartoonist",after:""},{field:"style.opacity",code:"[number]",desc:"100: Fully opaque\n0: Fully transparent",after:""},{field:"style.roundness",code:"[null | { type: RoundnessType; value?: number };]",desc:"set to null for 'sharp', else the stroke will be 'round'
type: 1==LEGACY,
2==PROPORTIONAL RADIUS,
3==ADAPTIVE RADIUS, value: adaptive factor defaults to 32",after:""},{field:"style.fontFamily",code:"[number]",desc:"1: Virgil, 2:Helvetica, 3:Cascadia, 4:LocalFont",after:""},{field:"style.fontSize",code:"[number]",desc:null,after:""},{field:"style.textAlign",code:"[string]",desc:"'left' | 'right' | 'center'",after:""},{field:"style.verticalAlign",code:"[string]",desc:"For future use, has no effect currently; 'top' | 'bottom' | 'middle'",after:""},{field:"style.startArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"style.endArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"canvas.theme",code:"[string]",desc:"'dark' | 'light'",after:""},{field:"canvas.viewBackgroundColor",code:"[string]",desc:"A valid css color.\nSee W3 School Colors for more.",after:""},{field:"canvas.gridSize",code:"[number]",desc:null,after:""},{field:"setStrokeSharpness",code:"setStrokeSharpness(sharpness: number): void;",desc:"Set ea.style.roundness. 0: is the legacy value, 3: is the current default value, null is sharp",after:""},{field:"addToGroup",code:"addToGroup(objectIds: []): string;",desc:null,after:""},{field:"toClipboard",code:"toClipboard(templatePath?: string): void;",desc:"Copies current elements using template to clipboard, ready to be pasted into an excalidraw canvas",after:""},{field:"getSceneFromFile",code:"async getSceneFromFile(file: TFile): Promise<{elements: ExcalidrawElement[]; appState: AppState;}>;",desc:"returns the elements and appState from a file, if the file is not an excalidraw file, it will return null",after:""},{field:"getElements",code:"getElements(): ExcalidrawElement[];",desc:"Get all elements from ExcalidrawAutomate elementsDict",after:""},{field:"getElement",code:"getElement(id: string): ExcalidrawElement;",desc:"Get single element from ExcalidrawAutomate elementsDict",after:""},{field:"create",code:'create(params?: {filename?: string, foldername?: string, templatePath?: string, onNewPane?: boolean, silent?: boolean, frontmatterKeys?: { "excalidraw-plugin"?: "raw" | "parsed", "excalidraw-link-prefix"?: string, "excalidraw-link-brackets"?: boolean, "excalidraw-url-prefix"?: string,},}): Promise;',desc:"Create a drawing and save it to filename.\nIf filename is null: default filename as defined in Excalidraw settings.\nIf folder is null: default folder as defined in Excalidraw settings\nReturns the path to the created file",after:""},{field:"createSVG",code:"createSVG(templatePath?: string, embedFont?: boolean, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,): Promise;",desc:"Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"createPNG",code:"createPNG(templatePath?: string, scale?: number, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,): Promise;",desc:"Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"wrapText",code:"wrapText(text: string, lineLen: number): string;",desc:null,after:""},{field:"addRect",code:"addRect(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addDiamond",code:"addDiamond(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addEllipse",code:"addEllipse(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addBlob",code:"addBlob(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"refreshTextElementSize",code:"refreshTextElementSize(id: string);",desc:"Refreshes the size of the text element. Intended to be used when you copyViewElementsToEAforEditing() and then change the text in a text element and want to update the size of the text element to fit the modifid contents.",after:""},{field:"addText",code:'addText(topX: number, topY: number, text: string, formatting?: {wrapAt?: number; width?: number; height?: number; textAlign?: "left" | "center" | "right"; textVerticalAlign: "top" | "middle" | "bottom"; box?: boolean | "box" | "blob" | "ellipse" | "diamond"; boxPadding?: number; boxStrokeColor?: string;}, id?: string,): string;',desc:"If box is !null, then text will be boxed\nThe function returns the id of the TextElement. If the text element is boxed i.e. it is a sticky note, then the id of the container object",after:""},{field:"addLine",code:"addLine(points: [[x: number, y: number]]): string;",desc:null,after:""},{field:"addArrow",code:"addArrow(points: [[x: number, y: number]], formatting?: { startArrowHead?: string; endArrowHead?: string; startObjectId?: string; endObjectId?: string;},): string;",desc:null,after:""},{field:"addImage",code:"addImage(topX: number, topY: number, imageFile: TFile, scale?: boolean, anchor?: boolean): Promise;",desc:"set scale to false if you want to embed the image at 100% of its original size. Default is true which will insert a scaled image. anchor will only be evaluated if scale is false. anchor true will add |100% to the end of the filename, resulting in an image that will always pop back to 100% when the source file is updated or when the Excalidraw file is reopened. ",after:""},{field:"addEmbeddable",code:"addEmbeddable(topX: number, topY: number, width: number, height: number, url?: string, file?: TFile): string;",desc:"Adds an iframe to the drawing. If url is not null then the iframe will be loaded from the url. The url maybe a markdown link to an note in the Vault or a weblink. If url is null then the iframe will be loaded from the file. Both the url and the file may not be null.",after:""},{field:"addLaTex",code:"addLaTex(topX: number, topY: number, tex: string): Promise;",desc:null,after:""},{field:"connectObjects",code:"connectObjects(objectA: string, connectionA: ConnectionPoint, objectB: string, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): string;",desc:'type ConnectionPoint = "top" | "bottom" | "left" | "right" | null\nWhen null is passed as ConnectionPoint then Excalidraw will automatically decide\nnumberOfPoints is the number of points on the line. Default is 0 i.e. line will only have a start and end point.\nArrowHead: "triangle"|"dot"|"arrow"|"bar"|null',after:""},{field:"addLabelToLine",code:"addLabelToLine(lineId: string, label: string): string;",desc:"Adds a text label to a line or arrow. Currently only works with a simple straight 2-point (start & end) line",after:""},{field:"clear",code:"clear(): void;",desc:"Clears elementsDict and imagesDict only",after:""},{field:"reset",code:"reset(): void;",desc:"clear() + reset all style values to default",after:""},{field:"isExcalidrawFile",code:"isExcalidrawFile(f: TFile): boolean;",desc:"Returns true if MD file is an Excalidraw file",after:""},{field:"targetView",code:"targetView: ExcalidrawView;",desc:"The Obsidian view currently edited",after:""},{field:"setView",code:'setView(view: ExcalidrawView | "first" | "active"): ExcalidrawView;',desc:null,after:""},{field:"getExcalidrawAPI",code:"getExcalidrawAPI(): any;",desc:"Excalidraw API",after:""},{field:"getViewElements",code:"getViewElements(): ExcalidrawElement[];",desc:"Get elements in View",after:""},{field:"deleteViewElements",code:"deleteViewElements(el: ExcalidrawElement[]): boolean;",desc:null,after:""},{field:"getViewSelectedElement",code:"getViewSelectedElement(): ExcalidrawElement;",desc:"Get the selected element in the view, if more are selected, get the first",after:""},{field:"getViewSelectedElements",code:"getViewSelectedElements(): ExcalidrawElement[];",desc:null,after:""},{field:"getViewFileForImageElement",code:"getViewFileForImageElement(el: ExcalidrawElement): TFile | null;",desc:"Returns the TFile file handle for the image element",after:""},{field:"copyViewElementsToEAforEditing",code:"copyViewElementsToEAforEditing(elements: ExcalidrawElement[]): void;",desc:"Copies elements from view to elementsDict for editing",after:""},{field:"viewToggleFullScreen",code:"viewToggleFullScreen(forceViewMode?: boolean): void;",desc:null,after:""},{field:"connectObjectWithViewSelectedElement",code:"connectObjectWithViewSelectedElement(objectA: string, connectionA: ConnectionPoint, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): boolean;",desc:"Connect an object to the selected element in the view\nSee tooltip for connectObjects for details",after:""},{field:"addElementsToView",code:"addElementsToView(repositionToCursor?: boolean, save?: boolean, newElementsOnTop?: boolean,shouldRestoreElements?: boolean,): Promise;",desc:"Adds elements from elementsDict to the current view\nrepositionToCursor: default is false\nsave: default is true\nnewElementsOnTop: default is false, i.e. the new elements get to the bottom of the stack\nnewElementsOnTop controls whether elements created with ExcalidrawAutomate are added at the bottom of the stack or the top of the stack of elements already in the view\nNote that elements copied to the view with copyViewElementsToEAforEditing retain their position in the stack of elements in the view even if modified using EA",after:""},{field:"onDropHook",code:'onDropHook(data: {ea: ExcalidrawAutomate, event: React.DragEvent, draggable: any, type: "file" | "text" | "unknown", payload: {files: TFile[], text: string,}, excalidrawFile: TFile, view: ExcalidrawView, pointerPosition: { x: number, y: number},}): boolean;',desc:"If set Excalidraw will call this function onDrop events.\nA return of true will stop the default onDrop processing in Excalidraw.\n\ndraggable is the Obsidian draggable object\nfiles is the array of dropped files\nexcalidrawFile is the file receiving the drop event\nview is the excalidraw view receiving the drop.\npointerPosition is the pointer position on canvas at the time of drop.",after:""},{field:"mostRecentMarkdownSVG",code:"mostRecentMarkdownSVG: SVGSVGElement;",desc:"Markdown renderer will drop a copy of the most recent SVG here for debugging purposes",after:""},{field:"getEmbeddedFilesLoader",code:"getEmbeddedFilesLoader(isDark?: boolean): EmbeddedFilesLoader;",desc:"Utility function to generate EmbeddedFilesLoader object",after:""},{field:"getExportSettings",code:"getExportSettings(withBackground: boolean, withTheme: boolean,): ExportSettings;",desc:"Utility function to generate ExportSettings object",after:""},{field:"getBoundingBox",code:"getBoundingBox(elements: ExcalidrawElement[]): {topX: number, topY: number, width: number, height: number,};",desc:"Gets the bounding box of elements. The bounding box is the box encapsulating all of the elements completely.",after:""},{field:"getMaximumGroups",code:"getMaximumGroups(elements: ExcalidrawElement[]): ExcalidrawElement[][];",desc:"Elements grouped by the highest level groups",after:""},{field:"getLargestElement",code:"getLargestElement(elements: ExcalidrawElement[]): ExcalidrawElement;",desc:"Gets the largest element from a group. useful when a text element is grouped with a box, and you want to connect an arrow to the box",after:""},{field:"intersectElementWithLine",code:"intersectElementWithLine(element: ExcalidrawBindableElement, a: readonly [number, number], b: readonly [number, number], gap?: number,): Point[];",desc:"If gap is given, the element is inflated by this value.\nReturns 2 or 0 intersection points between line going through `a` and `b` and the `element`, in ascending order of distance from `a`.",after:""},{field:"getCommonGroupForElements",code:"getCommonGroupForElements(elements: ExcalidrawElement[]): string;",desc:"Gets the groupId for the group that contains all the elements, or null if such a group does not exist",after:""},{field:"getElementsInTheSameGroupWithElement",code:"getElementsInTheSameGroupWithElement(element: ExcalidrawElement, elements: ExcalidrawElement[]): ExcalidrawElement[];",desc:"Gets all the elements from elements[] that share one or more groupIds with element.",after:""},{field:"activeScript",code:"activeScript: string;",desc:"Mandatory to set before calling the get and set ScriptSettings functions. Set automatically by the ScriptEngine\nSee for more details: Script Engine Help",after:""},{field:"getScriptSettings",code:"getScriptSettings(): {};",desc:"Returns script settings. Saves settings in plugin settings, under the activeScript key. See for more details: Script Engine Help",after:""},{field:"setScriptSettings",code:"setScriptSettings(settings: any): Promise;",desc:"Sets script settings.\nSee for more details: Script Engine Help",after:""},{field:"openFileInNewOrAdjacentLeaf",code:"openFileInNewOrAdjacentLeaf(file: TFile): WorkspaceLeaf;",desc:"Open a file in a new workspaceleaf or reuse an existing adjacent leaf depending on Excalidraw Plugin Settings",after:""},{field:"measureText",code:"measureText(text: string): { width: number; height: number };",desc:"Measures text size based on current style settings",after:""},{field:"verifyMinimumPluginVersion",code:"verifyMinimumPluginVersion(requiredVersion: string): boolean;",desc:'Returns true if plugin version is >= than required\nrecommended use:\nif(!ea.verifyMinimumPluginVersion || !ea.verifyMinimumPluginVersion("1.5.20")) {new Notice("message");return;}',after:""},{field:"selectElementsInView",code:"selectElementsInView(elements: ExcalidrawElement[] | string[]):void;",desc:"You can supply a list of Excalidraw Elements or the string IDs of those elements. The elements provided will be set as selected in the targetView.",after:""},{field:"generateElementId",code:"generateElementId(): string;",desc:"Returns an 8 character long random id",after:""},{field:"cloneElement",code:"cloneElement(element: ExcalidrawElement): ExcalidrawElement;",desc:"Returns a clone of the element with a new element id",after:""},{field:"moveViewElementToZIndex",code:"moveViewElementToZIndex(elementId:number, newZIndex:number): void;",desc:"Moves the element to a specific position in the z-index",after:""},{field:"hexStringToRgb",code:"hexStringToRgb(color: string):number[];",desc:"Converts a HEX color to an RGB number array. #FF0000 to [255,0,0]",after:""},{field:"rgbToHexString",code:"rgbToHexString(color: number[]):string;",desc:"Converts an RGB number array to a HEX string. [255,0,0] to #FF0000",after:""},{field:"hslToRgb",code:"hslToRgb(color: number[]):number[];",desc:"Converts an HSL number array to an RGB number array. [0,100,50] to [255,0,0]",after:""},{field:"rgbToHsl",code:"rgbToHsl(color:number[]):number[];",desc:"Converts an RGB number array to an HSL number array. [255,0,0] to [0,100,50]",after:""},{field:"colorNameToHex",code:"colorNameToHex(color:string):string;",desc:"Converts a CSS color name to its HEX color equivalent. 'White' to #FFFFFF",after:""},{field:"obsidian",code:"obsidian",desc:"Access functions and objects available on the Obsidian Module",after:""},{field:"getAttachmentFilepath",code:"async getAttachmentFilepath(filename: string): Promise",desc:"This asynchronous function should be awaited. It retrieves the filepath to a new file, taking into account the attachments preference settings in Obsidian. If the attachment folder doesn't exist, it creates it. The function returns the complete path to the file. If the provided filename already exists, the function will append '_[number]' before the extension to generate a unique filename.",after:""},{field:"setViewModeEnabled",code:"setViewModeEnabled(enabled: boolean): void;",desc:"Sets Excalidraw in the targetView to view-mode",after:""},{field:"viewUpdateScene",code:"viewUpdateScene(scene:{elements?:ExcalidrawElement[],appState?: AppState,files?: BinaryFileData,commitToHistory?: boolean,},restore:boolean=false):void",desc:"Calls the ExcalidrawAPI updateScene function for the targetView. When restore=true, excalidraw will try to correct errors in the scene such as setting default values to missing element properties.",after:""},{field:"viewZoomToElements",code:"viewZoomToElements(selectElements: boolean,elements: ExcalidrawElement[]):void",desc:"Zoom tarteView to fit elements provided as input. elements === [] will zoom to fit the entire scene. SelectElements toggles whether the elements should be in a selected state at the end of the operation.",after:""}],EXCALIDRAW_SCRIPTENGINE_INFO=[{field:"inputPrompt",code:"inputPrompt: (header: string, placeholder?: string, value?: string, buttons?: {caption:string, tooltip?:string, action:Function}[], lines?: number, displayEditorButtons?: boolean, customComponents?: (container: HTMLElement) => void, blockPointerInputOutsideModal?: boolean);",desc:"Opens a prompt that asks for an input.\nReturns a string with the input.\nYou need to await the result of inputPrompt.\nEditor buttons are text editing buttons like delete, enter, allcaps - these are only displayed if lines is greater than 1 \nCustom components are components that you can add to the prompt. These will be displayed between the text input area and the buttons.\nblockPointerInputOutsideModal will block pointer input outside the modal. This is useful if you want to prevent the user accidently closing the modal or interacting with the excalidraw canvas while the prompt is open.\nbuttons.action(input: string) => string\nThe button action function will receive the actual input string. If action returns null, input will be unchanged. If action returns a string, input will receive that value when the promise is resolved. example:\nlet fileType = '';\nconst filename = await utils.inputPrompt (\n 'Filename',\n '',\n '',\n, [\n {\n caption: 'Markdown',\n action: ()=>{fileType='md';return;}\n },\n {\n caption: 'Excalidraw',\n action: ()=>{fileType='ex';return;}\n }\n ]\n);",after:""},{field:"suggester",code:"suggester: (displayItems: string[], items: any[], hint?: string, instructions?:Instruction[]);",desc:"Opens a suggester. Displays the displayItems and returns the corresponding item from items[]\nYou need to await the result of suggester.\nIf the user cancels (ESC), suggester will return undefined\nHint and instructions are optional\n\ninterface Instruction {command: string;purpose: string;}",after:""},{field:"scriptFile",code:"scriptFile: TFile",desc:"The TFile of the currently running script",after:""}],FRONTMATTER_KEYS_INFO=[{field:"plugin",code:null,desc:"Denotes an excalidraw file. If key is not present, the file will not be recognized as an Excalidarw file. Valid values are 'parsed' and 'raw'",after:": parsed"},{field:"link-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid internal link. Set to empty string if you do not want to show a prefix",after:': "📍"'},{field:"url-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid external link. Set to empty string if you do not want to show a prefix",after:': "🌐"'},{field:"link-brackets",code:null,desc:"Set to true, if you want to display [[square brackets]] around the links in Text Elements",after:": true"},{field:"default-mode",code:null,desc:"Specifies how Excalidraw should open by default. Valid values are: view|zen",after:": view"},{field:"linkbutton-opacity",code:null,desc:"The opacity of the blue link button in the top right of the element overriding the respective setting in plugin settings. Valid values are between 0 and 1, where 0 means the button is transparent.",after:": 0.5"},{field:"onload-script",code:null,desc:"The value of this field will be executed as javascript code using the Script Engine environment. Use this to initiate custom actions or logic when loading your drawing.",after:': "new Notice(`Hello World!\\n\\nFile: ${ea.targetView.file.basename}`);"'},{field:"font",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: Virgil|Cascadia|font_file_name.extension",after:": Virgil"},{field:"font-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"border-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"css",code:null,desc:'This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this front matter keys to your markdown document. Valid values are: "css-filename|css snippet"',after:': ""'},{field:"export-transparent",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Transparent / false == with background",after:": true"},{field:"export-dark",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Dark mode / false == light mode",after:": true"},{field:"export-padding",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects both SVG and PNG export. Specify the export padding for the image.",after:": 5"},{field:"export-pngscale",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects export to PNG. Specify the export scale for the image. The typical range is between 0.5 and 5, but you can experiment with other values as well.",after:": 1"},{field:"autoexport",code:null,desc:"Override autoexport settings for this file. Valid values are\nnone\nboth\npng\nsvg",after:": png"},{field:"iframe-theme",code:null,desc:"Override iFrame theme plugin-settings for this file. 'match' will match the Excalidraw theme, 'default' will match the obsidian theme. Valid values are\ndark\nlight\nauto\ndefault",after:": auto"}];class FieldSuggester extends obsidian_module.EditorSuggest{constructor(e){super(e.app),this.getSuggestions=e=>{const t=e.query.toLowerCase();return("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).map((e=>e.field)).filter((e=>e.toLowerCase().includes(t)))},this.plugin=e}onTrigger(e,t,A){var i,n,a,r,s;if(this.plugin.settings.fieldSuggester){const A=t.getLine(e.line).substring(0,e.ch),o=null!==(r=null!==(n=null===(i=A.match(/^excalidraw-(.*)$/))||void 0===i?void 0:i[1])&&void 0!==n?n:null===(a=A.match(/(^ea|\Wea)\.([\w\.]*)$/))||void 0===a?void 0:a[2])&&void 0!==r?r:null===(s=A.match(/(^utils|\Wutils)\.([\w\.]*)$/))||void 0===s?void 0:s[2];if(void 0!==o)return this.suggestType=A.match(/^excalidraw-(.*)$/)?"excalidraw":A.match(/(^ea|\Wea)\.([\w\.]*)$/)?"ea":"utils",this.latestTriggerInfo={end:e,start:{ch:e.ch-o.length,line:e.line},query:o},this.latestTriggerInfo}return null}renderSuggestion(e,t){const A=e.replace("ea"===this.suggestType?"ea.":"utils"===this.suggestType?"utils.":"excalidraw-",""),i=("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).find((t=>t.field===e));t.createEl("b",{text:A}),t.createEl("br"),i.code&&t.createEl("code",{text:i.code}),i.desc&&t.createDiv("div",(e=>e.innerHTML=i.desc))}selectSuggestion(e){var t;const{context:A}=this;if(A){const i="ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO,n=`${e}${null===(t=i.find((t=>t.field===e)))||void 0===t?void 0:t.after}`;if(A.editor.replaceRange(n,this.latestTriggerInfo.start,this.latestTriggerInfo.end),this.latestTriggerInfo.start.ch===this.latestTriggerInfo.end.ch){const e=this.latestTriggerInfo.end;e.ch+=n.length,A.editor.setCursor(e)}}}}class FrontmatterEditor{constructor(e){this.initialized=!1,this.dataWOfrontmatter=e;const t=(e=e.replaceAll("\r\n","\n").replaceAll("\r","\n")).split(/^---(?:.|\n)*(?:^---\n)/gm);2===t.length&&(this.dataWOfrontmatter=t[1],this.frontmatterStr=e.match(/^---((?:.|\n)*)(?:^---\n)/gm)[0].replaceAll(/(^---\n|^\n)/gm,"").trim()+"\n",this.initialized=!0)}hasKey(e){if(!this.initialized)return!1;const t=new RegExp(`^${e}:`,"gm");return Boolean(this.frontmatterStr.match(t))}setKey(e,t){if(this.initialized)if(t=t.replaceAll("\r\n","\n").replaceAll("\r","\n").replaceAll(":",";").trim().split("\n").join(" "),this.hasKey(e)){const A=new RegExp(`^${e}:.*\\n(?:\\s\\s.*\\n)*`,"gm");this.frontmatterStr=this.frontmatterStr.split(A).join("\n").trim()+`\n${e}: ${t}`}else this.frontmatterStr=this.frontmatterStr.trim()+`\n${e}: ${t}`}get data(){return this.initialized?["---",this.frontmatterStr,"---",this.dataWOfrontmatter].join("\n"):this.dataWOfrontmatter}}const TASKBONE_URL="https://api.taskbone.com/",TASKBONE_OCR_FN="execute?id=60f394af-85f6-40bc-9613-5d26dc283cbb";class Taskbone{get apiKey(){return this.plugin.settings.taskboneAPIkey}constructor(e){this.plugin=e}async initialize(e=!0){var t;if(""!==this.plugin.settings.taskboneAPIkey)return;const A=await obsidian_module.requestUrl({url:`${TASKBONE_URL}users/excalidraw-obsidian/identities`,method:"post",contentType:"application/json",throw:!1});if(!A)return;const i=null===(t=A.json)||void 0===t?void 0:t.apiKey;return i&&"string"==typeof i&&(e&&await this.plugin.loadSettings(),this.plugin.settings.taskboneAPIkey=i,e&&await this.plugin.saveSettings()),i}async getTextForView(e,t){await e.forceSave(!0);const A=e.excalidrawAPI.getSceneElements().filter((t=>{var A;return"freedraw"===t.type||"image"===t.type&&!this.plugin.isExcalidrawFile(null===(A=e.excalidrawData.getFile(t.fileId))||void 0===A?void 0:A.file)}));if(0===A.length)return void new obsidian_module.Notice("Aborting OCR because there are no image or freedraw elements on the canvas.",4e3);const i=new FrontmatterEditor(e.data);if(i.hasKey("taskbone-ocr")&&!t)return void new obsidian_module.Notice("The drawing has already been processed, you will find the result in the frontmatter in markdown view mode. If you ran the command from the Obsidian Panel in Excalidraw then you can CTRL(CMD)+click the command to force the rescaning.",4e3);const n=this.plugin.ea.getBoundingBox(A),a=n.width*n.height,r=Math.sqrt(36e4/a),s=Math.sqrt(a/16e6),o=r>1?r:s>1?1/s:1,l=new EmbeddedFilesLoader(this.plugin,!1),c=await createPNG(e.file.path+"#^taskbone",o,{withBackground:!0,withTheme:!0},l,"light",null,null,[],this.plugin,0),d=await this.getTextForImage(c);d&&(i.setKey("taskbone-ocr",d),e.data=i.data,e.save(!1),window.navigator.clipboard.writeText(d),new obsidian_module.Notice("I placed the recognized in the drawing's frontmatter and onto the system clipboard."))}async getTextForImage(e){const t=TASKBONE_URL+TASKBONE_OCR_FN;""===this.apiKey&&await this.initialize();const A={records:[{image:await blobToBase64(e)}]},i=await obsidian_module.requestUrl({url:t,method:"post",contentType:"application/json",body:JSON.stringify(A),headers:{authorization:`Bearer ${this.apiKey}`},throw:!1}),n=null==i?void 0:i.json;return n&&200===i.status?n.records[0].text:(new obsidian_module.Notice("Something went wrong while processing your request. Please check developer console for more information"),void log(i))}}const STYLE_VARIABLES=["--background-modifier-cover","--background-primary-alt","--background-secondary","--background-secondary-alt","--background-modifier-border","--text-normal","--text-muted","--text-accent","--text-accent-hover","--text-faint","--text-highlight-bg","--text-highlight-bg-active","--text-selection","--interactive-normal","--interactive-hover","--interactive-accent","--interactive-accent-hover","--scrollbar-bg","--scrollbar-thumb-bg","--scrollbar-active-thumb-bg"],EXCALIDRAW_CONTAINER_CLASS="excalidraw__embeddable__outer";class StylesManager{constructor(e){this.stylesMap=new Map,this.plugin=e,e.app.workspace.onLayoutReady((async()=>{await this.harvestStyles(),getAllWindowDocuments(e.app).forEach((e=>{this.copyPropertiesToTheme(e)})),e.registerEvent(e.app.workspace.on("css-change",(async()=>{await this.harvestStyles(),getAllWindowDocuments(e.app).forEach((e=>{this.copyPropertiesToTheme(e)}))}))),e.registerEvent(e.app.workspace.on("window-open",((e,t)=>{this.stylesMap.set(e.doc,{light:document.head.querySelector('style[id="excalidraw-embedded-light"]'),dark:document.head.querySelector('style[id="excalidraw-embedded-dark"]')})}))),e.registerEvent(e.app.workspace.on("window-open",((e,t)=>{this.stylesMap.delete(e.doc)})))}))}unload(){for(const[e,t]of this.stylesMap)e.head.removeChild(t.light),e.head.removeChild(t.dark)}async harvestStyles(){const e=document.body,t=document.createElement("iframe");t.style.display="none",e.appendChild(t);const A=new Promise((e=>{t.addEventListener("load",(()=>e()))})),i=t.contentWindow.document,n=t.contentWindow;i.open(),i.write(`${document.head.innerHTML}`),i.close(),await A;const a=t.contentWindow.document.body;a.setAttribute("style",e.getAttribute("style")),a.setAttribute("class",e.getAttribute("class"));const r=e=>{a.classList.remove("theme-light"),a.classList.remove("theme-dark"),a.classList.add(e)},s=()=>{const e=n.getComputedStyle(a),t={};for(const A of STYLE_VARIABLES)t[A]=e.getPropertyValue(A);const A=this.plugin.ea.getCM(e.getPropertyValue("--background-primary"));return A.alphaTo(.9),t["--background-primary"]=A.stringHEX(),Object.entries(t).map((([e,t])=>`${e}: ${t} !important;`)).join(" ")};r("theme-light"),this.styleLight=s(),r("theme-dark"),this.styleDark=s(),e.removeChild(t)}copyPropertiesToTheme(e){const t=this.stylesMap.get(e);if(t)t.light.innerHTML=`.${EXCALIDRAW_CONTAINER_CLASS} .theme-light {\n${this.styleLight}\n}`,t.dark.innerHTML=`.${EXCALIDRAW_CONTAINER_CLASS} .theme-dark {\n${this.styleDark}\n}`;else{const t=e.createElement("style");t.type="text/css",t.setAttribute("id","excalidraw-embedded-light"),t.innerHTML=`.${EXCALIDRAW_CONTAINER_CLASS} .theme-light {\n${this.styleLight}\n}`,e.head.appendChild(t);const A=e.createElement("style");A.type="text/css",A.setAttribute("id","excalidraw-embedded-dark"),A.innerHTML=`.${EXCALIDRAW_CONTAINER_CLASS} .theme-dark {\n${this.styleDark}\n}`,e.head.appendChild(A),this.stylesMap.set(e,{light:t,dark:A})}}}class ExcalidrawPlugin extends obsidian_module.Plugin{constructor(e,t){super(e,t),this.excalidrawFiles=new Set,this.excalidrawFileModes={},this._loaded=!1,this.activeExcalidrawView=null,this.lastActiveExcalidrawFilePath=null,this.hover={linkText:null,sourcePath:null},this.opencount=0,this.filesMaster=null,this.equationsMaster=null,this.mermaidsMaster=null,this.mathjax=null,this.mathjaxDiv=null,this.mathjaxLoaderFinished=!1,this.fourthFontDef=VIRGIL_FONT,this.packageMap=new WeakMap,this.leafChangeTimeout=null,this.removeEventLisnters=[],this.popScope=null,this.filesMaster=new Map,this.equationsMaster=new Map,this.mermaidsMaster=new Map}getPackage(e){if(e===window)return{react:react,reactDOM:reactDOM,excalidrawLib:excalidrawLib};if(this.packageMap.has(e))return this.packageMap.get(e);const{react:t,reactDOM:A,excalidrawLib:i}=e.eval.call(e,`(function() {\n ${lzStringExports.decompressFromBase64(EXCALIDRAW_PACKAGES)};\n return {react:React,reactDOM:ReactDOM,excalidrawLib:ExcalidrawLib};\n })()`);return this.packageMap.set(e,{react:t,reactDOM:A,excalidrawLib:i}),{react:t,reactDOM:A,excalidrawLib:i}}async onload(){if(obsidian_module.addIcon(ICON_NAME,EXCALIDRAW_ICON),obsidian_module.addIcon("ScriptEngine",SCRIPTENGINE_ICON),obsidian_module.addIcon("export-img",EXPORT_IMG_ICON),await this.loadSettings({reEnableAutosave:!0}),await obsidian_module.loadMermaid(),imageCache.plugin=this,this.addSettingTab(new ExcalidrawSettingTab(this.app,this)),this.ea=await initExcalidrawAutomate(this),this.registerView("excalidraw",(e=>new ExcalidrawView(e,this))),this.registerExtensions(["excalidraw"],"excalidraw"),this.addMarkdownPostProcessor(),this.registerInstallCodeblockProcessor(),this.addThemeObserver(),this.experimentalFileTypeDisplayToggle(this.settings.experimentalFileType),this.registerCommands(),this.registerEventListeners(),this.initializeFourthFont(),this.registerEditorSuggest(new FieldSuggester(this)),this.registerMonkeyPatches(),this.stylesManager=new StylesManager(this),this.settings.showReleaseNotes){const e="0.0.0"===this.settings.previousRelease;isVersionNewerThanOther(PLUGIN_VERSION,this.settings.previousRelease)&&new ReleaseNotes(this.app,this,e?null:PLUGIN_VERSION).open()}this.switchToExcalidarwAfterLoad(),this.loadMathJax();const e=this;this.app.workspace.onLayoutReady((()=>{this.scriptEngine=new ScriptEngine(e)})),this.taskbone=new Taskbone(this)}initializeFourthFont(){this.app.workspace.onLayoutReady((async()=>{const e=await getFontDataURL(this.app,this.settings.experimantalFourthFont,"","LocalFont"),t=""===e.dataURL?VIRGIL_DATAURL:e.dataURL;this.fourthFontDef=e.fontDef;const A=new Set;app.workspace.iterateAllLeaves((e=>{const i=app.isMobile?document:e.view.containerEl.ownerDocument;if(!i)return;if(A.has(i))return;A.add(i);const n=i.createElement("style");n.id="local-font-stylesheet",n.textContent=`\n @font-face {\n font-family: 'LocalFont';\n src: url("${t}");\n font-display: swap;\n }\n `;const a=i.getElementById(n.id);i.head.appendChild(n),a&&i.head.removeChild(a),i.fonts.load("20px LocalFont")}))}))}loadMathJax(){const e=this;this.app.workspace.onLayoutReady((async()=>{await obsidian_module.loadMathJax();try{e.mathjaxDiv&&(document.body.removeChild(e.mathjaxDiv),e.mathjax=null,e.mathjaxLoaderFinished=!1),e.mathjaxDiv=document.body.createDiv(),e.mathjaxDiv.title="Excalidraw MathJax Support",e.mathjaxDiv.style.display="none";const t=e.mathjaxDiv.createEl("iframe");t.title="Excalidraw MathJax Support";const A=t.contentWindow.document,i=A.createElement("script");i.type="text/javascript",i.onload=()=>{const A=t.contentWindow;A.MathJax.startup.pagePromise.then((async()=>{const t=app.vault.getAbstractFileByPath("preamble.sty"),i=t&&t instanceof obsidian_module.TFile?await app.vault.read(t):null;try{i&&await A.MathJax.tex2svg(i)}catch(t){errorlog({where:e.loadMathJax,description:"Unexpected error while loading preamble.sty",error:t})}e.mathjax=A.MathJax,e.mathjaxLoaderFinished=!0}))},i.src=e.settings.mathjaxSourceURL,A.head.appendChild(i)}catch(t){new obsidian_module.Notice("Excalidraw: Error initializing LaTeX support"),e.mathjaxLoaderFinished=!0}}))}switchToExcalidarwAfterLoad(){const e=this;this.app.workspace.onLayoutReady((()=>{let t;for(t of app.workspace.getLeavesOfType("markdown"))t.view instanceof obsidian_module.MarkdownView&&e.isExcalidrawFile(t.view.file)&&(e.excalidrawFileModes[t.id||t.view.file.path]="excalidraw",e.setExcalidrawView(t))}))}forceSaveActiveView(e){if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.forceSave(),!0)}registerInstallCodeblockProcessor(){const e=async(e,t)=>{let A=null;try{const e=t.parentElement.querySelector(`a[href="#${t.previousElementSibling.getAttribute("data-heading")}"]`);e.style.paddingRight="10px",A=e.parentElement.createEl("button",null,(e=>{e.setText(t$d("UPDATE_SCRIPT")),e.addClass("mod-muted"),e.style.backgroundColor="var(--interactive-success)",e.style.display="none"}))}catch(t){errorlog({where:"this.registerInstallCodeblockProcessor",source:e,error:t})}e=e.trim(),t.createEl("button",null,(async t=>{var i;const n=e=>{switch(A&&(A.style.display="none"),e){case"CHECKING":t.setText(t$d("CHECKING_SCRIPT")),t.style.backgroundColor="var(--interactive-normal)";break;case"INSTALL":t.setText(t$d("INSTALL_SCRIPT")),t.style.backgroundColor="var(--interactive-accent)";break;case"UPTODATE":t.setText(t$d("UPTODATE_SCRIPT")),t.style.backgroundColor="var(--interactive-normal)";break;case"UPDATE":t.setText(t$d("UPDATE_SCRIPT")),t.style.backgroundColor="var(--interactive-success)",A&&(A.style.display=null);break;case"ERROR":t.setText(t$d("UNABLETOCHECK_SCRIPT")),t.style.backgroundColor="var(--interactive-normal)"}};t.addClass("mod-muted");let a=e;try{a=decodeURI(e)}catch(t){errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",source:e,error:t})}const r=a.substring(a.lastIndexOf("/")+1),s=`${this.settings.scriptFolderPath}/Downloaded`,o=app.vault.getFiles().filter((e=>e.path.startsWith(s)&&e.name===r)).sort(((e,t)=>e.path>t.path?1:-1));let l=o[0];const c=null!==(i=null==l?void 0:l.path)&&void 0!==i?i:`${s}/${r}`,d=getIMGFilename(c,"svg");let h=this.app.vault.getAbstractFileByPath(d);if(n(l?"CHECKING":"INSTALL"),t.onclick=async()=>{const t=async(e,t,A)=>{const i=await obsidian_module.request({url:e});return!i||i.startsWith("404: Not Found")?null:(t?await this.app.vault.modify(t,i):(await checkAndCreateFolder(s),t=await this.app.vault.create(A,i)),t)};try{if(l=await t(e,l,c),!l)throw n("ERROR"),"File not found";h=await t(getIMGFilename(e,"svg"),h,d),n("UPTODATE"),0===Object.keys(this.scriptEngine.scriptIconMap).length&&this.scriptEngine.loadScripts(),new obsidian_module.Notice(`Installed: ${l.basename}`)}catch(e){new obsidian_module.Notice(`Error installing script: ${r}`),errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",error:e})}},A&&(A.onclick=t.onclick),!(l&&l instanceof obsidian_module.TFile))return;const u=new Map;JSON.parse(await obsidian_module.request({url:"https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/directory-info.json"})).forEach((e=>u.set(e.fname,e.mtime)));const g=(e,t)=>{if(0===u.size||!u.has(e))return"ERROR";const A=u.get(e);return!t||A>t.stat.mtime?"UPDATE":"UPTODATE"},p=g(r,l),m=g(getIMGFilename(r,"svg"),h&&h instanceof obsidian_module.TFile?h:null);n("UPTODATE"===p&&"UPTODATE"===m||"UPTODATE"===p&&"ERROR"===m?"UPTODATE":"ERROR"===p?"ERROR":"UPDATE"===p||"UPDATE"===m?"UPDATE":"UPTODATE")}))};this.registerMarkdownCodeBlockProcessor(SCRIPT_INSTALL_CODEBLOCK,(async(t,A)=>{A.addEventListener(RERENDER_EVENT,(async i=>{i.stopPropagation(),A.empty(),e(t,A)})),e(t,A)}))}addMarkdownPostProcessor(){initializeMarkdownPostProcessor(this),this.registerMarkdownPostProcessor(markdownPostProcessor),this.registerEvent(this.app.workspace.on("hover-link",hoverEvent)),this.observer=observer,this.observer.observe(document,{childList:!0,subtree:!0})}addThemeObserver(){this.themeObserver=new MutationObserver((async e=>{var t,A,i,n,a,r,s,o;if(!this.settings.matchThemeTrigger)return;if((null===(t=e[0])||void 0===t?void 0:t.oldValue)===(null===(i=null===(A=e[0])||void 0===A?void 0:A.target)||void 0===i?void 0:i.getAttribute("class")))return;if((null===(a=null===(n=e[0])||void 0===n?void 0:n.oldValue)||void 0===a?void 0:a.includes("theme-dark"))===(null===(o=null===(s=null===(r=e[0])||void 0===r?void 0:r.target)||void 0===s?void 0:s.classList)||void 0===o?void 0:o.contains("theme-dark")))return;const l=isObsidianThemeDark()?"dark":"light";this.app.workspace.getLeavesOfType("excalidraw").forEach((e=>{const t=e.view;t.file&&t.excalidrawRef&&t.setTheme(l)}))})),this.themeObserver.observe(document.body,{attributeOldValue:!0,attributeFilter:["class"]})}experimentalFileTypeDisplayToggle(e){e?this.experimentalFileTypeDisplay():(this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),this.fileExplorerObserver=null)}experimentalFileTypeDisplay(){const e=e=>{if(1!=e.childElementCount)return;const t=e.getAttribute("data-path");if(!t)return;const A=this.app.vault.getAbstractFileByPath(t);A&&A instanceof obsidian_module.TFile&&this.isExcalidrawFile(A)&&e.insertBefore(createDiv({cls:"nav-file-tag",text:this.settings.experimentalFileTag}),e.firstChild)};this.fileExplorerObserver=new MutationObserver((t=>{const A=t.filter((e=>e.addedNodes.length>0));A.forEach((t=>{t.addedNodes.forEach((t=>{t instanceof Element&&t.querySelectorAll(".nav-file-title").forEach(e)}))}))}));const t=this;this.app.workspace.onLayoutReady((()=>{document.querySelectorAll(".nav-file-title").forEach(e),t.fileExplorerObserver.observe(document.querySelector(".workspace"),{childList:!0,subtree:!0})}))}registerCommands(){this.openDialog=new OpenFileDialog(this.app,this),this.insertLinkDialog=new InsertLinkDialog(this.app),this.insertImageDialog=new InsertImageDialog(this),this.importSVGDialog=new ImportSVGDialog(this),this.insertMDDialog=new InsertMDDialog(this),this.addRibbonIcon(ICON_NAME,t$d("CREATE_NEW"),(async e=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),linkClickModifierType(emulateCTRLClickForLinks(e)))})),this.registerEvent(this.app.workspace.on("file-menu",((e,t)=>{e.addItem((e=>{e.setTitle(t$d("CREATE_NEW")).setIcon(ICON_NAME).onClick((e=>{let A=t.path;t instanceof obsidian_module.TFile&&(A=obsidian_module.normalizePath(t.path.substr(0,t.path.lastIndexOf(t.name)))),this.createAndOpenDrawing(getDrawingFilename(this.settings),linkClickModifierType(emulateCTRLClickForLinks(e)),A)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((e,t)=>{t instanceof obsidian_module.TFile&&"excalidraw"==t.extension&&e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE_KEEP_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(t,!1,!1)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((e,t)=>{t instanceof obsidian_module.TFile&&"excalidraw"==t.extension&&e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE_REPLACE_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(t,!0,!0)}))}))}))),this.addCommand({id:"excalidraw-disable-autosave",name:t$d("TEMPORARY_DISABLE_AUTOSAVE"),checkCallback:e=>!!this.settings.autosave&&(e||(this.settings.autosave=!1),!0)}),this.addCommand({id:"excalidraw-enable-autosave",name:t$d("TEMPORARY_ENABLE_AUTOSAVE"),checkCallback:e=>!this.settings.autosave&&(e||(this.settings.autosave=!0),!0)}),this.addCommand({id:"excalidraw-download-lib",name:t$d("DOWNLOAD_LIBRARY"),callback:this.exportLibrary}),this.addCommand({id:"excalidraw-open",name:t$d("OPEN_EXISTING_NEW_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!0)}}),this.addCommand({id:"excalidraw-open-on-current",name:t$d("OPEN_EXISTING_ACTIVE_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!1)}}),this.addCommand({id:"excalidraw-insert-transclusion",name:t$d("TRANSCLUDE"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(this.openDialog.start(openDialogAction.insertLinkToDrawing,!1),!0)}),this.addCommand({id:"excalidraw-insert-last-active-transclusion",name:t$d("TRANSCLUDE_MOST_RECENT"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView))&&null!=this.lastActiveExcalidrawFilePath;const t=this.app.vault.getAbstractFileByPath(this.lastActiveExcalidrawFilePath);return t instanceof obsidian_module.TFile&&(this.embedDrawing(t),!0)}}),this.addCommand({id:"excalidraw-autocreate",name:t$d("NEW_IN_NEW_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"new-pane")}}),this.addCommand({id:"excalidraw-autocreate-newtab",name:t$d("NEW_IN_NEW_TAB"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"new-tab")}}),this.addCommand({id:"excalidraw-autocreate-on-current",name:t$d("NEW_IN_ACTIVE_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"active-pane")}}),this.addCommand({id:"excalidraw-autocreate-popout",name:t$d("NEW_IN_POPOUT_WINDOW"),checkCallback:e=>{if(e)return!app.isMobile;this.createAndOpenDrawing(getDrawingFilename(this.settings),"popout-window")}});const e=async e=>{const t=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(!t)return;const A=getEmbedFilename(t.file.basename,this.settings),i=this.settings.embedUseExcalidrawFolder?null:(await getAttachmentsFolderAndFilePath(this.app,t.file.path,A)).folder,n=await this.createDrawing(A,i);await this.embedDrawing(n),this.openDrawing(n,e,!0,void 0,!0)};this.addCommand({id:"excalidraw-autocreate-and-embed",name:t$d("NEW_IN_NEW_PANE_EMBED"),checkCallback:t=>t?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("new-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-new-tab",name:t$d("NEW_IN_NEW_TAB_EMBED"),checkCallback:t=>t?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("new-tab"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-on-current",name:t$d("NEW_IN_ACTIVE_PANE_EMBED"),checkCallback:t=>t?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("active-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-popout",name:t$d("NEW_IN_POPOUT_WINDOW_EMBED"),checkCallback:t=>t?!app.isMobile&&Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("popout-window"),!0)}),this.addCommand({id:"run-ocr",name:t$d("RUN_OCR"),checkCallback:e=>{const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return e?Boolean(t):!!t&&(this.settings.taskboneEnabled?(this.taskbone.getTextForView(t,!1),!0):(new obsidian_module.Notice("Taskbone OCR is not enabled. Please go to plugins settings to enable it.",4e3),!0))}}),this.addCommand({id:"search-text",name:t$d("SEARCH"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(search(t),!0)}}),this.addCommand({id:"fullscreen",name:t$d("TOGGLE_FULLSCREEN"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.isFullscreen()?t.exitFullscreen():t.gotoFullscreen(),!0)}}),this.addCommand({id:"disable-binding",name:t$d("TOGGLE_DISABLEBINDING"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.toggleDisableBinding(),!0)}}),this.addCommand({id:"disable-framerendering",name:t$d("TOGGLE_FRAME_RENDERING"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.toggleFrameRendering(),!0)}}),this.addCommand({id:"disable-frameclipping",name:t$d("TOGGLE_FRAME_CLIPPING"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.toggleFrameClipping(),!0)}}),this.addCommand({id:"export-image",name:t$d("EXPORT_IMAGE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.exportDialog||(t.exportDialog=new ExportDialog(this,t,t.file),t.exportDialog.createForm()),t.exportDialog.open(),!0)}}),this.forceSaveCommand=this.addCommand({id:"save",hotkeys:[{modifiers:["Ctrl"],key:"s"}],name:t$d("FORCE_SAVE"),checkCallback:e=>this.forceSaveActiveView(e)}),this.addCommand({id:"toggle-lock",hotkeys:[{modifiers:["Ctrl","Shift"],key:"e"}],name:t$d("TOGGLE_LOCK"),checkCallback:e=>{if(e)return!!Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))&&!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode;const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!t||t.compatibilityMode||(t.changeTextMode(t.textMode===TextMode.parsed?TextMode.raw:TextMode.parsed),0))}}),this.addCommand({id:"scriptengine-store",name:t$d("INSTALL_SCRIPT_BUTTON"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ScriptInstallPrompt(this).open(),!0)}),this.addCommand({id:"delete-file",name:t$d("DELETE_FILE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(t){this.ea.reset(),this.ea.setView(t);const e=this.ea.getViewSelectedElement();if("image"!==e.type)return new obsidian_module.Notice("Please select an image or embedded markdown document",4e3),!0;const A=this.ea.getViewFileForImageElement(e);return A?(this.app.vault.delete(A),this.ea.deleteViewElements([e]),!0):(new obsidian_module.Notice("Please select an image or embedded markdown document",4e3),!0)}return!1}}),this.addCommand({id:"insert-link",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.insertLinkDialog.start(t.file.path,t.addText),!0)}}),this.addCommand({id:"insert-link-to-element",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK_TO_ELEMENT_NORMAL"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.copyLinkToSelectedElementToClipboard(""),!0)}}),this.addCommand({id:"insert-link-to-element-group",name:t$d("INSERT_LINK_TO_ELEMENT_GROUP"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.copyLinkToSelectedElementToClipboard("group="),!0)}}),this.addCommand({id:"insert-link-to-element-frame",name:t$d("INSERT_LINK_TO_ELEMENT_FRAME"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.copyLinkToSelectedElementToClipboard("frame="),!0)}}),this.addCommand({id:"insert-link-to-element-area",name:t$d("INSERT_LINK_TO_ELEMENT_AREA"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.copyLinkToSelectedElementToClipboard("area="),!0)}}),this.addCommand({id:"toggle-lefthanded-mode",name:t$d("TOGGLE_LEFTHANDED_MODE"),checkCallback:e=>{if(e){if(this.app.workspace.getActiveViewOfType(ExcalidrawView)){const e=this.app.workspace.getActiveViewOfType(ExcalidrawView),t=null==e?void 0:e.excalidrawAPI;return!!t&&!!t.getAppState().trayModeEnabled}return!1}return this.app.workspace.getActiveViewOfType(ExcalidrawView),(async()=>{const e=this.settings.isLeftHanded;await this.loadSettings({applyLefthandedMode:!1}),this.settings.isLeftHanded=!e,this.saveSettings(),setLeftHandedMode(!e),setTimeout((()=>setLeftHandedMode(!e)))})(),!0}}),this.addCommand({id:"reset-image-to-100",name:t$d("RESET_IMG_TO_100"),checkCallback:e=>{const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!t)return!1;if(!t.excalidrawAPI)return!1;const A=t.getViewSelectedElements().filter((e=>"image"===e.type));if(1!==A.length)return e||new obsidian_module.Notice("Select a single image element and try again"),!1;const i=A[0];return t.excalidrawData.getFile(i.fileId)?!!e||void(async()=>{const e=new ExcalidrawAutomate(this,t),n=await e.getOriginalImageSize(i);if(n){e.copyViewElementsToEAforEditing(A);const t=e.getElement(i.id);t.width=n.width,t.height=n.height,e.addElementsToView(!1,!1,!1)}})():(e||new obsidian_module.Notice("Select a single image element and try again"),!1)}}),this.addCommand({id:"insert-image",name:t$d("INSERT_IMAGE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.insertImageDialog.start(t),!0)}}),this.addCommand({id:"import-svg",name:t$d("IMPORT_SVG"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.importSVGDialog.start(t),!0)}}),this.addCommand({id:"release-notes",name:t$d("READ_RELEASE_NOTES"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ReleaseNotes(this.app,this,PLUGIN_VERSION).open(),!0)}),this.addCommand({id:"tray-mode",name:t$d("TRAY_MODE"),checkCallback:e=>{if(e){const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!e||!e.excalidrawRef)return!1;const t=e.excalidrawAPI.getAppState();return!t.zenModeEnabled&&!t.viewModeEnabled}const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!t||!t.excalidrawAPI||(t.toggleTrayMode(),0))}}),this.addCommand({id:"insert-md",name:t$d("INSERT_MD"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.insertMDDialog.start(t),!0)}}),this.addCommand({id:"insert-pdf",name:t$d("INSERT_PDF"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(new InsertPDFModal(this,t).open(),!0)}}),this.addCommand({id:"universal-add-file",name:t$d("UNIVERSAL_ADD_FILE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(new UniversalInsertFileModal(this,t).open(),!0)}}),this.addCommand({id:"insert-LaTeX-symbol",name:t$d("INSERT_LATEX"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(insertLaTeXToView(t),!0)}}),this.addCommand({id:"toggle-excalidraw-view",name:t$d("TOGGLE_MODE"),checkCallback:e=>{const t=this.app.workspace.getActiveFile();if(!t)return!1;const A=this.isExcalidrawFile(t);if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))?!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode:A;const i=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(i){const e=i.leaf;return this.excalidrawFileModes[e.id||t.path]="markdown",void this.setMarkdownView(e)}const n=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(n&&A){const e=n.leaf;return this.excalidrawFileModes[e.id||t.path]="excalidraw",void this.setExcalidrawView(e)}}}),this.addCommand({id:"convert-to-excalidraw",name:t$d("CONVERT_NOTE_TO_EXCALIDRAW"),checkCallback:e=>{const t=this.app.workspace.getActiveFile(),A=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(!t||!A)return!1;const i=0===t.stat.size;if(e)return i;i&&(async()=>{await this.app.vault.modify(t,await this.getBlankDrawing()),this.setExcalidrawView(A.leaf)})()}}),this.addCommand({id:"convert-excalidraw",name:t$d("CONVERT_EXCALIDRAW"),checkCallback:e=>{if(e){const e=this.app.vault.getFiles().filter((e=>"excalidraw"==e.extension));return e.length>0}return this.convertExcalidrawToMD(),!0}})}async convertSingleExcalidrawToMD(e,t=!1,A=!1){const i=await this.app.vault.read(e),n=e.name.substring(0,e.name.lastIndexOf(".excalidraw"))+(t?".md":".excalidraw.md"),a=getNewUniqueFilepath(this.app.vault,n,obsidian_module.normalizePath(e.path.substring(0,e.path.lastIndexOf(e.name))));log(a);const r=await this.app.vault.create(a,FRONTMATTER+await this.exportSceneToMD(i));return this.settings.keepInSync&&EXPORT_TYPES.forEach((t=>{const A=e.path.substring(0,e.path.lastIndexOf(".excalidraw"))+t,i=this.app.vault.getAbstractFileByPath(obsidian_module.normalizePath(A));if(i&&i instanceof obsidian_module.TFile){const e=a.substring(0,a.lastIndexOf(".md"))+t;this.app.fileManager.renameFile(i,e)}})),A||this.app.vault.delete(e),r}async convertExcalidrawToMD(e=!1,t=!1){const A=this.app.vault.getFiles().filter((e=>"excalidraw"==e.extension));for(const i of A)this.convertSingleExcalidrawToMD(i,e,t);new obsidian_module.Notice(`Converted ${A.length} files.`)}registerMonkeyPatches(){var e,t;this.register(around(obsidian_module.Workspace.prototype,{getActiveViewOfType:e=>dedupe("https://github.com/zsviczian/obsidian-excalidraw-plugin/issues",e,(function(...t){var A,i;const n=e&&e.apply(this,t),a=null===(i=null===(A=null===app||void 0===app?void 0:app.workspace)||void 0===A?void 0:A.activeLeaf)||void 0===i?void 0:i.view;if(!(a&&a instanceof ExcalidrawView))return n;const r=(new Error).stack;if(!isCallerFromTemplaterPlugin(r))return n;const s=a.getActiveEmbeddable();return s&&s.node&&s.node.isEditing?{file:s.node.file,editor:s.node.child.editor}:n}))})),(null===(t=null===(e=app.plugins)||void 0===e?void 0:e.plugins)||void 0===t?void 0:t["obsidian-hover-editor"])||this.register(around(obsidian_module.WorkspaceLeaf.prototype,{getRoot:e=>function(){const t=e.call(this);return t.getRoot===this.getRoot?t:t.getRoot()}})),this.registerEvent(app.workspace.on("editor-menu",((e,t,A)=>{if(!(A&&A instanceof obsidian_module.MarkdownView))return;const i=A.file,n=A.leaf;if(!A.file)return;const a=this.app.metadataCache.getFileCache(i);(null==a?void 0:a.frontmatter)&&a.frontmatter[FRONTMATTER_KEY]&&e.addItem((e=>e.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("excalidraw").onClick((()=>{this.excalidrawFileModes[n.id||i.path]="excalidraw",this.setExcalidrawView(n)}))))}))),this.registerEvent(app.workspace.on("file-menu",((e,t,A,i)=>{if(!(i&&i.view instanceof obsidian_module.MarkdownView))return;if(!(t instanceof obsidian_module.TFile))return;const n=this.app.metadataCache.getFileCache(t);(null==n?void 0:n.frontmatter)&&n.frontmatter[FRONTMATTER_KEY]&&(e.addItem((e=>{e.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("pane").onClick((()=>{this.excalidrawFileModes[i.id||t.path]="excalidraw",this.setExcalidrawView(i)}))})),e.items.unshift(e.items.pop()))})));const A=this;this.register(around(obsidian_module.WorkspaceLeaf.prototype,{detach:e=>function(){var t;const i=null===(t=this.view)||void 0===t?void 0:t.getState();return(null==i?void 0:i.file)&&A.excalidrawFileModes[this.id||i.file]&&delete A.excalidrawFileModes[this.id||i.file],e.apply(this)},setViewState:e=>function(t,...i){var n;if(A._loaded&&"markdown"===t.type&&(null===(n=t.state)||void 0===n?void 0:n.file)&&"markdown"!==A.excalidrawFileModes[this.id||t.state.file]){const n=app.metadataCache.getCache(t.state.file);if((null==n?void 0:n.frontmatter)&&n.frontmatter[FRONTMATTER_KEY]){const n=Object.assign(Object.assign({},t),{type:"excalidraw"});return A.excalidrawFileModes[t.state.file]="excalidraw",e.apply(this,[n,...i])}}return e.apply(this,[t,...i])}}))}registerEventListeners(){const e=this;this.app.workspace.onLayoutReady((async()=>{e.registerEvent(e.app.workspace.on("editor-paste",((t,A,i)=>{var n;if(t.defaultPrevented)return;const a=t.clipboardData.getData("text/plain");if(a&&a.startsWith('{"type":"excalidraw/clipboard"')){t.preventDefault();try{const t=JSON.parse(a),r=1===t.elements.filter((e=>"text"===e.type)).length;if(!r&&1!==(null===(n=t.elements)||void 0===n?void 0:n.length))return;const s=r?t.elements.filter((e=>"text"===e.type))[0]:t.elements[0];if("image"===s.type){const t=e.filesMaster.get(s.fileId);if(t&&t.path){let n=t.path;const a=i.file,r=e.app.vault.getAbstractFileByPath(n);a&&r&&r instanceof obsidian_module.TFile&&(n=e.app.metadataCache.fileToLinktext(r,a.path)),A.insertText(e.getLink({path:n}))}return}if("text"===s.type)return void A.insertText(s.text);if(s.link)return void A.insertText(`${s.link}`)}catch(e){}}}))),e.registerEvent(app.vault.on("rename",(async(t,A)=>{t instanceof obsidian_module.TFile&&e.isExcalidrawFile(t)&&e.settings.keepInSync&&[EXPORT_TYPES,"excalidraw"].flat().forEach((async e=>{const i=getIMGFilename(A,e),n=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(i));if(n&&n instanceof obsidian_module.TFile){const A=getIMGFilename(t.path,e);await app.fileManager.renameFile(n,A)}}))}))),e.registerEvent(app.vault.on("modify",(async t=>{app.workspace.getLeavesOfType("excalidraw").forEach((async A=>{const i=A.view;if(i.file&&(i.file.path===t.path||"excalidraw"===t.extension&&`${t.path.substring(0,t.path.lastIndexOf(".excalidraw"))}.md`===i.file.path)){if(i.semaphores.preventReload)return void(i.semaphores.preventReload=!1);if(i.lastSaveTimestamp+3e5{if(!(t instanceof obsidian_module.TFile))return;const A=this.excalidrawFiles.has(t);if(this.updateFileCache(t,void 0,!0),!A)return;const i=app.workspace.getLeavesOfType("excalidraw");for(let e=0;e{[EXPORT_TYPES,"excalidraw"].flat().forEach((async e=>{const A=getIMGFilename(t.path,e),i=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(A));i&&i instanceof obsidian_module.TFile&&await app.vault.delete(i)}))}),500)}))),e.registerEvent(app.workspace.on("active-leaf-change",(async t=>{var A;e.leafChangeTimeout&&clearTimeout(e.leafChangeTimeout),e.leafChangeTimeout=setTimeout((()=>{e.leafChangeTimeout=null}),1e3);const i=e.activeExcalidrawView,n=t.view instanceof ExcalidrawView?t.view:null; //!Temporary hack -if(e.activeExcalidrawView=n,n&&(e.lastActiveExcalidrawFilePath=null===(A=n.file)||void 0===A?void 0:A.path),app.isMobile&&n&&!i){const e=document.querySelector("body>.app-container>.mobile-navbar");e&&e instanceof HTMLDivElement&&(e.style.position="relative")}if(app.isMobile&&!n&&i){const e=document.querySelector("body>.app-container>.mobile-navbar");e&&e instanceof HTMLDivElement&&(e.style.position="")}if(i&&i!==n&&(i.leaf!==t&&i.semaphores.dirty&&!i.semaphores.viewunload&&await i.save(!0),i.file&&e.triggerEmbedUpdates(i.file.path)),n&&(!i||i.leaf!==t)){const e=n.file;n.file&&setTimeout((()=>{var t;n&&n._loaded&&(null===(t=n.file)||void 0===t?void 0:t.path)===(null==e?void 0:e.path)&&(n.activeLoader||n.loadSceneFiles())}),2e3)}if(n&&n._loaded&&n.isLoaded&&n.excalidrawAPI&&e.ea.onCanvasColorChangeHook&&e.ea.onCanvasColorChangeHook(e.ea,n,n.excalidrawAPI.getAppState().viewBackgroundColor),e.popScope&&(e.popScope(),e.popScope=null),n){const t=e.app.keymap.getRootScope(),A=t.register(["Mod"],"Enter",(()=>!0));t.keys.unshift(t.keys.pop());const i=t.register(["Mod"],"k",(()=>!0));t.keys.unshift(t.keys.pop());const n=t.register(["Mod"],"f",(()=>{const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(search(e),!0)}));t.keys.unshift(t.keys.pop());const a=e.forceSaveCommand&&"s"===e.forceSaveCommand.hotkeys[0].key&&e.forceSaveCommand.hotkeys[0].modifiers.includes("Ctrl")?t.register(["Ctrl"],"s",(()=>e.forceSaveActiveView(!1))):void 0;a&&t.keys.unshift(t.keys.pop()),e.popScope=()=>{t.unregister(A),t.unregister(i),t.unregister(n),Boolean(a)&&t.unregister(a)}}}))),e.addFileSaveTriggerEventHandlers();const t=app.metadataCache;t.getCachedFiles().forEach((A=>{var i;const n=null===(i=t.getCache(A))||void 0===i?void 0:i.frontmatter;(n&&void 0!==n[FRONTMATTER_KEY]||A.match(/\.excalidraw$/))&&e.updateFileCache(app.vault.getAbstractFileByPath(A),n)})),this.registerEvent(t.on("changed",((e,t,A)=>this.updateFileCache(e,null==A?void 0:A.frontmatter))))}))}addFileSaveTriggerEventHandlers(){this.registerEvent(this.app.workspace.on("click",(e=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&(!e.target||"excalidraw__canvas"!==e.target.className&&!getParentOfClass(e.target,"excalidraw-wrapper"))&&this.activeExcalidrawView.save()}))),this.registerEvent(this.app.workspace.on("file-menu",(()=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()}))),this.modalContainerObserver=new MutationObserver((async e=>{1===e.length&&"childList"===e[0].type&&1===e[0].addedNodes.length&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()})),this.modalContainerObserver.observe(document.body,{childList:!0});const e=document.querySelector(".workspace-drawer.mod-left"),t=document.querySelector(".workspace-drawer.mod-right");if(e||t){const A=async e=>{"display: none;"===e[0].oldValue&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()},i={attributeOldValue:!0,attributeFilter:["style"]};e&&(this.workspaceDrawerLeftObserver=new MutationObserver(A),this.workspaceDrawerLeftObserver.observe(e,i)),t&&(this.workspaceDrawerRightObserver=new MutationObserver(A),this.workspaceDrawerRightObserver.observe(t,i))}}updateFileCache(e,t,A=!1){t&&void 0!==t[FRONTMATTER_KEY]?this.excalidrawFiles.add(e):A||"excalidraw"!==e.extension?this.excalidrawFiles.delete(e):this.excalidrawFiles.add(e)}onunload(){destroyExcalidrawAutomate(),this.popScope&&(this.popScope(),this.popScope=null),this.observer.disconnect(),this.themeObserver.disconnect(),this.modalContainerObserver.disconnect(),this.workspaceDrawerLeftObserver&&this.workspaceDrawerLeftObserver.disconnect(),this.workspaceDrawerRightObserver&&this.workspaceDrawerRightObserver.disconnect(),this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),this.app.workspace.getLeavesOfType("excalidraw").forEach((e=>{this.setMarkdownView(e)})),this.mathjaxDiv&&document.body.removeChild(this.mathjaxDiv),Object.values(this.packageMap).forEach((e=>{delete e.excalidrawLib,delete e.reactDOM,delete e.react}))}async embedDrawing(e){const t=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(t&&t.file){const A=this.app.metadataCache.fileToLinktext(e,t.file.path,"excalidraw"===this.settings.embedType),i=t.editor;if("excalidraw"===this.settings.embedType)return i.replaceSelection(this.settings.embedWikiLink?`![[${A}]]`:`![](${encodeURI(A)})`),void i.focus();let n=this.settings.autoExportLightAndDark?getExportTheme(this,e,this.settings.exportWithTheme&&isObsidianThemeDark()?"dark":"light"):"";n=""===n?"":n+".";const a=getIMGFilename(A,n+this.settings.embedType.toLowerCase()),r=getIMGFilename(e.path,n+this.settings.embedType.toLowerCase()),s="dark."===n?"light.":"dark.",o=getIMGFilename(A,s+this.settings.embedType.toLowerCase());this.app.vault.getAbstractFileByPath(r)||(await this.app.vault.create(r,""),await sleep$1(200)),i.replaceSelection(this.settings.embedWikiLink?`![[${a}]]\n%%[[${A}|🖋 Edit in Excalidraw]]${o?", and the [["+o+"|"+s.split(".")[0]+" exported image]]":""}%%`:`![](${encodeURI(a)})\n%%[🖋 Edit in Excalidraw](${encodeURI(A)})${o?", and the ["+s.split(".")[0]+" exported image]("+encodeURI(o)+")":""}%%`),i.focus()}}async loadSettings(e={applyLefthandedMode:!0,reEnableAutosave:!1}){void 0===e.applyLefthandedMode&&(e.applyLefthandedMode=!0),void 0===e.reEnableAutosave&&(e.reEnableAutosave=!1),this.settings=Object.assign({},DEFAULT_SETTINGS,await this.loadData()),e.applyLefthandedMode&&setLeftHandedMode(this.settings.isLeftHanded),e.reEnableAutosave&&(this.settings.autosave=!0),this.settings.autosaveInterval=app.isMobile?this.settings.autosaveIntervalMobile:this.settings.autosaveIntervalDesktop}async saveSettings(){await this.saveData(this.settings)}getStencilLibrary(){return""===this.settings.library||"deprecated"===this.settings.library?this.settings.library2:JSON_parse(this.settings.library)}setStencilLibrary(e){this.settings.library="deprecated",this.settings.library2=e}triggerEmbedUpdates(e){const t=new Set;app.workspace.iterateAllLeaves((A=>{const i=app.isMobile?document:A.view.containerEl.ownerDocument;if(!i)return;if(t.has(i))return;t.add(i);const n=i.createEvent("Event");n.initEvent(RERENDER_EVENT,!0,!1),i.querySelectorAll("img[class^='excalidraw-svg']"+(e?`[fileSource='${e.replaceAll("'","\\'")}']`:"")).forEach((e=>e.dispatchEvent(n)))}))}openDrawing(e,t,A=!1,i,n=!1){let a;"md-properties"===t&&(t="new-tab"),"popout-window"===t&&(a=app.workspace.openPopoutLeaf()),"new-tab"===t&&(a=app.workspace.getLeaf("tab")),a||(a=this.app.workspace.getLeaf(!1),"empty"!==a.view.getViewType()&&"new-pane"===t&&(a=getNewOrAdjacentLeaf(this,a))),a.openFile(e,i&&""!==i?{active:A,eState:{subpath:i}}:{active:A}).then((()=>{if(n&&this.ea.onFileCreateHook)try{this.ea.onFileCreateHook({ea:this.ea,excalidrawFile:e,view:a.view})}catch(e){console.error(e)}}))}async getBlankDrawing(){const e=this.app.metadataCache.getFirstLinkpathDest(obsidian_module.normalizePath(this.settings.templateFilePath),"");if(e&&e instanceof obsidian_module.TFile&&("md"==e.extension&&!this.settings.compatibilityMode||"excalidraw"==e.extension&&this.settings.compatibilityMode)){const t=await this.app.vault.read(e);if(t)return this.settings.matchTheme?changeThemeOfExcalidrawMD(t):t}if(this.settings.compatibilityMode)return this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;const t=this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;return`${FRONTMATTER}\n${getMarkdownDrawingSection(t,this.settings.compress)}`}async exportSceneToMD(e){var t,A;if(!e)return"";const i=null===(t=JSON_parse(e).elements)||void 0===t?void 0:t.filter((e=>"text"==e.type));let n,a="# Text Elements\n";for(const t of i)n=t.id,t.id.length>8&&(n=nanoid(),e=e.replaceAll(t.id,n)),a+=`${null!==(A=t.originalText)&&void 0!==A?A:t.text} ^${n}\n\n`;return a+getMarkdownDrawingSection(JSON.stringify(JSON_parse(e),null,"\t"),this.settings.compress)}async createDrawing(e,t,A){const i=obsidian_module.normalizePath(t||this.settings.folder);await checkAndCreateFolder(i);const n=getNewUniqueFilepath(this.app.vault,e,i),a=await this.app.vault.create(n,null!=A?A:await this.getBlankDrawing());let r=0;for(;a instanceof obsidian_module.TFile&&!this.isExcalidrawFile(a)&&r++<10;)await sleep$1(50);return r>10&&errorlog({file:a,error:"new drawing not recognized as an excalidraw file",fn:this.createDrawing}),a}async createAndOpenDrawing(e,t,A,i){const n=await this.createDrawing(e,A,i);return this.openDrawing(n,t,!0,void 0,!0),n.path}async setMarkdownView(e){const t=e.view.getState();await e.setViewState({type:"excalidraw",state:{file:null}}),await e.setViewState({type:"markdown",state:t,popstate:!0},{focus:!0})}async setExcalidrawView(e){await e.setViewState({type:"excalidraw",state:e.view.getState(),popstate:!0})}isExcalidrawFile(e){if(!e)return!1;if("excalidraw"===e.extension)return!0;const t=e?this.app.metadataCache.getFileCache(e):null;return!!(null==t?void 0:t.frontmatter)&&!!t.frontmatter[FRONTMATTER_KEY]}async exportLibrary(){this.app.isMobile?new Prompt(this.app,"Please provide a filename","my-library","filename, leave blank to cancel action").openAndGetValue((async e=>{if(!e)return;e=`${e}.excalidrawlib`;const t=obsidian_module.normalizePath(this.settings.folder);await checkAndCreateFolder(t);const A=getNewUniqueFilepath(this.app.vault,e,t);this.app.vault.create(A,this.settings.library),new obsidian_module.Notice(`Exported library to ${A}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.settings.library2,null,"\t")),"my-obsidian-library.excalidrawlib")}}module.exports=ExcalidrawPlugin; +if(e.activeExcalidrawView=n,n&&(e.lastActiveExcalidrawFilePath=null===(A=n.file)||void 0===A?void 0:A.path),app.isMobile&&n&&!i){const e=document.querySelector("body>.app-container>.mobile-navbar");e&&e instanceof HTMLDivElement&&(e.style.position="relative")}if(app.isMobile&&!n&&i){const e=document.querySelector("body>.app-container>.mobile-navbar");e&&e instanceof HTMLDivElement&&(e.style.position="")}if(i&&i!==n&&(i.leaf!==t&&i.semaphores.dirty&&!i.semaphores.viewunload&&await i.save(!0),i.file&&e.triggerEmbedUpdates(i.file.path)),n&&(!i||i.leaf!==t)){const e=n.file;n.file&&setTimeout((()=>{var t;n&&n._loaded&&(null===(t=n.file)||void 0===t?void 0:t.path)===(null==e?void 0:e.path)&&(n.activeLoader||n.loadSceneFiles())}),2e3)}if(n&&n._loaded&&n.isLoaded&&n.excalidrawAPI&&e.ea.onCanvasColorChangeHook&&e.ea.onCanvasColorChangeHook(e.ea,n,n.excalidrawAPI.getAppState().viewBackgroundColor),e.popScope&&(e.popScope(),e.popScope=null),n){const t=e.app.keymap.getRootScope(),A=t.register(["Mod"],"Enter",(()=>!0));t.keys.unshift(t.keys.pop());const i=t.register(["Mod"],"k",(()=>!0));t.keys.unshift(t.keys.pop());const n=t.register(["Mod"],"f",(()=>{const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(search(e),!0)}));t.keys.unshift(t.keys.pop());const a=e.forceSaveCommand&&"s"===e.forceSaveCommand.hotkeys[0].key&&e.forceSaveCommand.hotkeys[0].modifiers.includes("Ctrl")?t.register(["Ctrl"],"s",(()=>e.forceSaveActiveView(!1))):void 0;a&&t.keys.unshift(t.keys.pop()),e.popScope=()=>{t.unregister(A),t.unregister(i),t.unregister(n),Boolean(a)&&t.unregister(a)}}}))),e.addFileSaveTriggerEventHandlers();const t=app.metadataCache;t.getCachedFiles().forEach((A=>{var i;const n=null===(i=t.getCache(A))||void 0===i?void 0:i.frontmatter;(n&&void 0!==n[FRONTMATTER_KEY]||A.match(/\.excalidraw$/))&&e.updateFileCache(app.vault.getAbstractFileByPath(A),n)})),this.registerEvent(t.on("changed",((e,t,A)=>this.updateFileCache(e,null==A?void 0:A.frontmatter))))}))}addFileSaveTriggerEventHandlers(){const e=e=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&(!e.target||"excalidraw__canvas"!==e.target.className&&!getParentOfClass(e.target,"excalidraw-wrapper"))&&this.activeExcalidrawView.save()};this.app.workspace.containerEl.addEventListener("click",e),this.removeEventLisnters.push((()=>{this.app.workspace.containerEl.removeEventListener("click",e)})),this.registerEvent(this.app.workspace.on("file-menu",(()=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()}))),this.modalContainerObserver=new MutationObserver((async e=>{1===e.length&&"childList"===e[0].type&&1===e[0].addedNodes.length&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()})),this.modalContainerObserver.observe(document.body,{childList:!0});const t=document.querySelector(".workspace-drawer.mod-left"),A=document.querySelector(".workspace-drawer.mod-right");if(t||A){const e=async e=>{"display: none;"===e[0].oldValue&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()},i={attributeOldValue:!0,attributeFilter:["style"]};t&&(this.workspaceDrawerLeftObserver=new MutationObserver(e),this.workspaceDrawerLeftObserver.observe(t,i)),A&&(this.workspaceDrawerRightObserver=new MutationObserver(e),this.workspaceDrawerRightObserver.observe(A,i))}}updateFileCache(e,t,A=!1){t&&void 0!==t[FRONTMATTER_KEY]?this.excalidrawFiles.add(e):A||"excalidraw"!==e.extension?this.excalidrawFiles.delete(e):this.excalidrawFiles.add(e)}onunload(){this.stylesManager.unload(),this.removeEventLisnters.forEach((e=>e())),destroyExcalidrawAutomate(),this.popScope&&(this.popScope(),this.popScope=null),this.observer.disconnect(),this.themeObserver.disconnect(),this.modalContainerObserver.disconnect(),this.workspaceDrawerLeftObserver&&this.workspaceDrawerLeftObserver.disconnect(),this.workspaceDrawerRightObserver&&this.workspaceDrawerRightObserver.disconnect(),this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),this.app.workspace.getLeavesOfType("excalidraw").forEach((e=>{this.setMarkdownView(e)})),this.mathjaxDiv&&document.body.removeChild(this.mathjaxDiv),Object.values(this.packageMap).forEach((e=>{delete e.excalidrawLib,delete e.reactDOM,delete e.react}))}getLink({embed:e=!0,path:t,alias:A}){return this.settings.embedWikiLink?`${e?"!":""}[[${t}${A?`|${A}`:""}]]`:`${e?"!":""}[${null!=A?A:""}](${encodeURI(t)})`}async embedDrawing(e){const t=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(t&&t.file){const A=this.app.metadataCache.fileToLinktext(e,t.file.path,"excalidraw"===this.settings.embedType),i=t.editor;if("excalidraw"===this.settings.embedType)return i.replaceSelection(this.getLink({path:A})),void i.focus();let n=this.settings.autoExportLightAndDark?getExportTheme(this,e,this.settings.exportWithTheme&&isObsidianThemeDark()?"dark":"light"):"";n=""===n?"":n+".";const a=getIMGFilename(A,n+this.settings.embedType.toLowerCase()),r=getIMGFilename(e.path,n+this.settings.embedType.toLowerCase()),s="dark."===n?"light.":"dark.",o=getIMGFilename(A,s+this.settings.embedType.toLowerCase());this.app.vault.getAbstractFileByPath(r)||(await this.app.vault.create(r,""),await sleep$1(200)),i.replaceSelection(this.settings.embedWikiLink?`![[${a}]]\n%%[[${A}|🖋 Edit in Excalidraw]]${o?", and the [["+o+"|"+s.split(".")[0]+" exported image]]":""}%%`:`![](${encodeURI(a)})\n%%[🖋 Edit in Excalidraw](${encodeURI(A)})${o?", and the ["+s.split(".")[0]+" exported image]("+encodeURI(o)+")":""}%%`),i.focus()}}async loadSettings(e={applyLefthandedMode:!0,reEnableAutosave:!1}){void 0===e.applyLefthandedMode&&(e.applyLefthandedMode=!0),void 0===e.reEnableAutosave&&(e.reEnableAutosave=!1),this.settings=Object.assign({},DEFAULT_SETTINGS,await this.loadData()),this.settings.previewImageType||(void 0===this.settings.displaySVGInPreview?this.settings.previewImageType=PreviewImageType.SVGIMG:this.settings.previewImageType=this.settings.displaySVGInPreview?PreviewImageType.SVGIMG:PreviewImageType.PNG),e.applyLefthandedMode&&setLeftHandedMode(this.settings.isLeftHanded),e.reEnableAutosave&&(this.settings.autosave=!0),this.settings.autosaveInterval=app.isMobile?this.settings.autosaveIntervalMobile:this.settings.autosaveIntervalDesktop}async saveSettings(){await this.saveData(this.settings)}getStencilLibrary(){return""===this.settings.library||"deprecated"===this.settings.library?this.settings.library2:JSON_parse(this.settings.library)}setStencilLibrary(e){this.settings.library="deprecated",this.settings.library2=e}triggerEmbedUpdates(e){const t=new Set;app.workspace.iterateAllLeaves((A=>{const i=app.isMobile?document:A.view.containerEl.ownerDocument;if(!i)return;if(t.has(i))return;t.add(i);const n=i.createEvent("Event");n.initEvent(RERENDER_EVENT,!0,!1),i.querySelectorAll(".excalidraw-embedded-img"+(e?`[fileSource='${e.replaceAll("'","\\'")}']`:"")).forEach((e=>e.dispatchEvent(n)))}))}openDrawing(e,t,A=!1,i,n=!1){let a;"md-properties"===t&&(t="new-tab"),"popout-window"===t&&(a=app.workspace.openPopoutLeaf()),"new-tab"===t&&(a=app.workspace.getLeaf("tab")),a||(a=this.app.workspace.getLeaf(!1),"empty"!==a.view.getViewType()&&"new-pane"===t&&(a=getNewOrAdjacentLeaf(this,a))),a.openFile(e,i&&""!==i?{active:A,eState:{subpath:i}}:{active:A}).then((()=>{if(n&&this.ea.onFileCreateHook)try{this.ea.onFileCreateHook({ea:this.ea,excalidrawFile:e,view:a.view})}catch(e){console.error(e)}}))}async getBlankDrawing(){const e=this.app.metadataCache.getFirstLinkpathDest(obsidian_module.normalizePath(this.settings.templateFilePath),"");if(e&&e instanceof obsidian_module.TFile&&("md"==e.extension&&!this.settings.compatibilityMode||"excalidraw"==e.extension&&this.settings.compatibilityMode)){const t=await this.app.vault.read(e);if(t)return this.settings.matchTheme?changeThemeOfExcalidrawMD(t):t}if(this.settings.compatibilityMode)return this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;const t=this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;return`${FRONTMATTER}\n${getMarkdownDrawingSection(t,this.settings.compress)}`}async exportSceneToMD(e){var t,A;if(!e)return"";const i=null===(t=JSON_parse(e).elements)||void 0===t?void 0:t.filter((e=>"text"==e.type));let n,a="# Text Elements\n";for(const t of i)n=t.id,t.id.length>8&&(n=nanoid(),e=e.replaceAll(t.id,n)),a+=`${null!==(A=t.originalText)&&void 0!==A?A:t.text} ^${n}\n\n`;return a+getMarkdownDrawingSection(JSON.stringify(JSON_parse(e),null,"\t"),this.settings.compress)}async createDrawing(e,t,A){const i=obsidian_module.normalizePath(t||this.settings.folder);await checkAndCreateFolder(i);const n=getNewUniqueFilepath(this.app.vault,e,i),a=await this.app.vault.create(n,null!=A?A:await this.getBlankDrawing());let r=0;for(;a instanceof obsidian_module.TFile&&!this.isExcalidrawFile(a)&&r++<10;)await sleep$1(50);return r>10&&errorlog({file:a,error:"new drawing not recognized as an excalidraw file",fn:this.createDrawing}),a}async createAndOpenDrawing(e,t,A,i){const n=await this.createDrawing(e,A,i);return this.openDrawing(n,t,!0,void 0,!0),n.path}async setMarkdownView(e){const t=e.view.getState();await e.setViewState({type:"excalidraw",state:{file:null}}),await e.setViewState({type:"markdown",state:t,popstate:!0},{focus:!0})}async setExcalidrawView(e){await e.setViewState({type:"excalidraw",state:e.view.getState(),popstate:!0})}isExcalidrawFile(e){if(!e)return!1;if("excalidraw"===e.extension)return!0;const t=e?this.app.metadataCache.getFileCache(e):null;return!!(null==t?void 0:t.frontmatter)&&!!t.frontmatter[FRONTMATTER_KEY]}async exportLibrary(){this.app.isMobile?new Prompt(this.app,"Please provide a filename","my-library","filename, leave blank to cancel action").openAndGetValue((async e=>{if(!e)return;e=`${e}.excalidrawlib`;const t=obsidian_module.normalizePath(this.settings.folder);await checkAndCreateFolder(t);const A=getNewUniqueFilepath(this.app.vault,e,t);this.app.vault.create(A,this.settings.library),new obsidian_module.Notice(`Exported library to ${A}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.settings.library2,null,"\t")),"my-obsidian-library.excalidrawlib")}}module.exports=ExcalidrawPlugin; diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json b/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json index bc85776..ceecc52 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-excalidraw-plugin", "name": "Excalidraw", - "version": "1.9.3", + "version": "1.9.20", "minAppVersion": "1.1.6", "description": "An Obsidian plugin to edit and view Excalidraw drawings", "author": "Zsolt Viczian", diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css b/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css index 6c3870b..5695886 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css @@ -21,29 +21,33 @@ display: none; } -img.excalidraw-embedded-img { +.excalidraw-embedded-img { width: 100%; } -img.excalidraw-svg-right-wrap { +.excalidraw-svg-right-wrap { float: right; margin: 0px 0px 20px 20px; + width: 100%; } -img.excalidraw-svg-left-wrap { +.excalidraw-svg-left-wrap { float: left; margin: 0px 35px 20px 0px; + width: 100%; } -img.excalidraw-svg-right { +.excalidraw-svg-right { float: right; } .excalidraw-svg-center { text-align: center; + margin: auto; + width: 100%; } -img.excalidraw-svg-left { +.excalidraw-svg-left { float: left; } @@ -99,6 +103,10 @@ li[data-testid] { border: 0 !important; box-shadow: 0 !important; background-color: transparent !important; +} + +.excalidraw .popover { + position: fixed !important; } .disable-zen-mode--visible { @@ -344,4 +352,75 @@ div.excalidraw-draginfo { .excalidraw [data-radix-popper-content-wrapper] { position: absolute !important; +} + +.excalidraw__embeddable-container .view-header { + display: none !important; +} + +.excalidraw__embeddable-container input { + background: initial; +} + +.excalidraw .HelpDialog__key { + background-color: var(--color-gray-80) !important; +} + +.excalidraw .embeddable-menu { + width: fit-content; + height: fit-content; + position: absolute; + display: block; + z-index: var(--zIndex-layerUI); +} + +.excalidraw .welcome-screen-center__logo svg { + width: 5rem !important; +} + +.excalidraw-image-wrapper { + text-align: center; +} + +.excalidraw-image-wrapper img { + margin: auto; +} + +.modal-content.excalidraw-scriptengine-install .search-bar-wrapper { + position: sticky; + top: 1em; + margin-right: 1em; + display: flex; + align-items: center; + gap: 5px; + flex-wrap: nowrap; + z-index: 10; + background: var(--background-secondary); + padding: 0.5em; + border-bottom: 1px solid var(--background-modifier-border); + float: right; + max-width: 28em; +} + +.modal-content.excalidraw-scriptengine-install .hit-count { + margin-left: 0.5em; + white-space: nowrap; +} + +.modal-content.excalidraw-scriptengine-install .active-highlight { + border: 2px solid var(--color-accent-2); + background-color: var(--color-accent); +} + +.excalidraw-svg svg a { + text-decoration: none; +} + +.excalidraw .Modal { + background-color: initial; + border: initial; + max-width: initial; + max-height: initial; + width: initial; + height: initial; } \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-git/data.json b/.obsidian/plugins/obsidian-git/data.json index 6549bad..63a1dbd 100644 --- a/.obsidian/plugins/obsidian-git/data.json +++ b/.obsidian/plugins/obsidian-git/data.json @@ -1,6 +1,5 @@ { "commitMessage": "vault backup: {{date}}", - "autoCommitMessage": "vault backup: {{date}}", "commitDateFormat": "YYYY-MM-DD HH:mm:ss", "autoSaveInterval": 15, "autoPushInterval": 30, @@ -23,5 +22,34 @@ "showedMobileNotice": true, "refreshSourceControlTimer": 7000, "showBranchStatusBar": true, - "setLastSaveToLastCommit": false + "setLastSaveToLastCommit": false, + "submoduleRecurseCheckout": false, + "gitDir": "", + "showFileMenu": true, + "lineAuthor": { + "show": false, + "followMovement": "inactive", + "authorDisplay": "initials", + "showCommitHash": false, + "dateTimeFormatOptions": "date", + "dateTimeFormatCustomString": "YYYY-MM-DD HH:mm", + "dateTimeTimezone": "viewer-local", + "coloringMaxAge": "1y", + "colorNew": { + "r": 255, + "g": 150, + "b": 150 + }, + "colorOld": { + "r": 120, + "g": 160, + "b": 255 + }, + "textColorCss": "var(--text-muted)", + "ignoreWhitespace": false, + "gutterSpacingFallbackLength": 5, + "lastShownAuthorDisplay": "initials", + "lastShownDateTimeFormatOptions": "date" + }, + "autoCommitMessage": "vault backup: {{date}}" } \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-git/main.js b/.obsidian/plugins/obsidian-git/main.js index 7debbee..dc70752 100644 --- a/.obsidian/plugins/obsidian-git/main.js +++ b/.obsidian/plugins/obsidian-git/main.js @@ -9,6 +9,7 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; +var __defNormalProp = (obj, key2, value) => key2 in obj ? __defProp(obj, key2, { enumerable: true, configurable: true, writable: true, value }) : obj[key2] = value; var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }; @@ -36,6 +37,10 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var __publicField = (obj, key2, value) => { + __defNormalProp(obj, typeof key2 !== "symbol" ? key2 + "" : key2, value); + return value; +}; // node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js var require_base64_js = __commonJS({ @@ -7656,9 +7661,9 @@ var require_ms = __commonJS({ } }); -// node_modules/.pnpm/debug@4.3.4_supports-color@7.2.0/node_modules/debug/src/common.js +// node_modules/.pnpm/debug@4.3.4_supports-color@9.4.0/node_modules/debug/src/common.js var require_common2 = __commonJS({ - "node_modules/.pnpm/debug@4.3.4_supports-color@7.2.0/node_modules/debug/src/common.js"(exports2, module2) { + "node_modules/.pnpm/debug@4.3.4_supports-color@9.4.0/node_modules/debug/src/common.js"(exports2, module2) { init_polyfill_buffer(); function setup(env) { createDebug.debug = createDebug; @@ -7820,9 +7825,9 @@ var require_common2 = __commonJS({ } }); -// node_modules/.pnpm/debug@4.3.4_supports-color@7.2.0/node_modules/debug/src/browser.js +// node_modules/.pnpm/debug@4.3.4_supports-color@9.4.0/node_modules/debug/src/browser.js var require_browser = __commonJS({ - "node_modules/.pnpm/debug@4.3.4_supports-color@7.2.0/node_modules/debug/src/browser.js"(exports2, module2) { + "node_modules/.pnpm/debug@4.3.4_supports-color@9.4.0/node_modules/debug/src/browser.js"(exports2, module2) { init_polyfill_buffer(); exports2.formatArgs = formatArgs; exports2.save = save; @@ -7990,9 +7995,9 @@ var require_browser = __commonJS({ } }); -// node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@7.2.0/node_modules/@kwsites/file-exists/dist/src/index.js +// node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@9.4.0/node_modules/@kwsites/file-exists/dist/src/index.js var require_src = __commonJS({ - "node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@7.2.0/node_modules/@kwsites/file-exists/dist/src/index.js"(exports2) { + "node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@9.4.0/node_modules/@kwsites/file-exists/dist/src/index.js"(exports2) { "use strict"; init_polyfill_buffer(); var __importDefault = exports2 && exports2.__importDefault || function(mod) { @@ -8035,9 +8040,9 @@ var require_src = __commonJS({ } }); -// node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@7.2.0/node_modules/@kwsites/file-exists/dist/index.js +// node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@9.4.0/node_modules/@kwsites/file-exists/dist/index.js var require_dist = __commonJS({ - "node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@7.2.0/node_modules/@kwsites/file-exists/dist/index.js"(exports2) { + "node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@9.4.0/node_modules/@kwsites/file-exists/dist/index.js"(exports2) { "use strict"; init_polyfill_buffer(); function __export3(m) { @@ -8754,15 +8759,15 @@ var require_implementation = __commonJS({ } }; keysShim = function keys(object) { - var isObject = object !== null && typeof object === "object"; - var isFunction = toStr.call(object) === "[object Function]"; + var isObject2 = object !== null && typeof object === "object"; + var isFunction2 = toStr.call(object) === "[object Function]"; var isArguments = isArgs(object); - var isString = isObject && toStr.call(object) === "[object String]"; + var isString = isObject2 && toStr.call(object) === "[object String]"; var theKeys = []; - if (!isObject && !isFunction && !isArguments) { + if (!isObject2 && !isFunction2 && !isArguments) { throw new TypeError("Object.keys called on a non-object"); } - var skipProto = hasProtoEnumBug && isFunction; + var skipProto = hasProtoEnumBug && isFunction2; if (isString && object.length > 0 && !has.call(object, 0)) { for (var i = 0; i < object.length; ++i) { theKeys.push(String(i)); @@ -8918,6 +8923,21 @@ var require_has_symbols = __commonJS({ } }); +// node_modules/.pnpm/has-proto@1.0.1/node_modules/has-proto/index.js +var require_has_proto = __commonJS({ + "node_modules/.pnpm/has-proto@1.0.1/node_modules/has-proto/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var test = { + foo: {} + }; + var $Object = Object; + module2.exports = function hasProto() { + return { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object); + }; + } +}); + // node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/implementation.js var require_implementation2 = __commonJS({ "node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/implementation.js"(exports2, module2) { @@ -8989,9 +9009,9 @@ var require_src2 = __commonJS({ } }); -// node_modules/.pnpm/get-intrinsic@1.2.0/node_modules/get-intrinsic/index.js +// node_modules/.pnpm/get-intrinsic@1.2.1/node_modules/get-intrinsic/index.js var require_get_intrinsic = __commonJS({ - "node_modules/.pnpm/get-intrinsic@1.2.0/node_modules/get-intrinsic/index.js"(exports2, module2) { + "node_modules/.pnpm/get-intrinsic@1.2.1/node_modules/get-intrinsic/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var undefined2; @@ -9028,16 +9048,17 @@ var require_get_intrinsic = __commonJS({ } }() : throwTypeError; var hasSymbols = require_has_symbols()(); - var getProto = Object.getPrototypeOf || function(x) { + var hasProto = require_has_proto()(); + var getProto = Object.getPrototypeOf || (hasProto ? function(x) { return x.__proto__; - }; + } : null); var needsEval = {}; - var TypedArray = typeof Uint8Array === "undefined" ? undefined2 : getProto(Uint8Array); + var TypedArray = typeof Uint8Array === "undefined" || !getProto ? undefined2 : getProto(Uint8Array); var INTRINSICS = { "%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError, "%Array%": Array, "%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer, - "%ArrayIteratorPrototype%": hasSymbols ? getProto([][Symbol.iterator]()) : undefined2, + "%ArrayIteratorPrototype%": hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined2, "%AsyncFromSyncIteratorPrototype%": undefined2, "%AsyncFunction%": needsEval, "%AsyncGenerator%": needsEval, @@ -9068,10 +9089,10 @@ var require_get_intrinsic = __commonJS({ "%Int32Array%": typeof Int32Array === "undefined" ? undefined2 : Int32Array, "%isFinite%": isFinite, "%isNaN%": isNaN, - "%IteratorPrototype%": hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined2, + "%IteratorPrototype%": hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined2, "%JSON%": typeof JSON === "object" ? JSON : undefined2, "%Map%": typeof Map === "undefined" ? undefined2 : Map, - "%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols ? undefined2 : getProto((/* @__PURE__ */ new Map())[Symbol.iterator]()), + "%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Map())[Symbol.iterator]()), "%Math%": Math, "%Number%": Number, "%Object%": Object, @@ -9084,10 +9105,10 @@ var require_get_intrinsic = __commonJS({ "%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect, "%RegExp%": RegExp, "%Set%": typeof Set === "undefined" ? undefined2 : Set, - "%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols ? undefined2 : getProto((/* @__PURE__ */ new Set())[Symbol.iterator]()), + "%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Set())[Symbol.iterator]()), "%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined2 : SharedArrayBuffer, "%String%": String, - "%StringIteratorPrototype%": hasSymbols ? getProto(""[Symbol.iterator]()) : undefined2, + "%StringIteratorPrototype%": hasSymbols && getProto ? getProto(""[Symbol.iterator]()) : undefined2, "%Symbol%": hasSymbols ? Symbol : undefined2, "%SyntaxError%": $SyntaxError, "%ThrowTypeError%": ThrowTypeError, @@ -9102,11 +9123,13 @@ var require_get_intrinsic = __commonJS({ "%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef, "%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet }; - try { - null.error; - } catch (e) { - errorProto = getProto(getProto(e)); - INTRINSICS["%Error.prototype%"] = errorProto; + if (getProto) { + try { + null.error; + } catch (e) { + errorProto = getProto(getProto(e)); + INTRINSICS["%Error.prototype%"] = errorProto; + } } var errorProto; var doEval = function doEval2(name) { @@ -9124,7 +9147,7 @@ var require_get_intrinsic = __commonJS({ } } else if (name === "%AsyncIteratorPrototype%") { var gen = doEval2("%AsyncGenerator%"); - if (gen) { + if (gen && getProto) { value = getProto(gen.prototype); } } @@ -9336,7 +9359,7 @@ var require_define_properties = __commonJS({ var toStr = Object.prototype.toString; var concat = Array.prototype.concat; var origDefineProperty = Object.defineProperty; - var isFunction = function(fn) { + var isFunction2 = function(fn) { return typeof fn === "function" && toStr.call(fn) === "[object Function]"; }; var hasPropertyDescriptors = require_has_property_descriptors()(); @@ -9347,7 +9370,7 @@ var require_define_properties = __commonJS({ if (object[name] === value) { return; } - } else if (!isFunction(predicate) || !predicate()) { + } else if (!isFunction2(predicate) || !predicate()) { return; } } @@ -11100,19 +11123,22 @@ var require_gopd = __commonJS({ } }); -// node_modules/.pnpm/is-typed-array@1.1.10/node_modules/is-typed-array/index.js -var require_is_typed_array = __commonJS({ - "node_modules/.pnpm/is-typed-array@1.1.10/node_modules/is-typed-array/index.js"(exports2, module2) { +// node_modules/.pnpm/which-typed-array@1.1.11/node_modules/which-typed-array/index.js +var require_which_typed_array = __commonJS({ + "node_modules/.pnpm/which-typed-array@1.1.11/node_modules/which-typed-array/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var forEach2 = require_for_each(); var availableTypedArrays = require_available_typed_arrays(); + var callBind = require_call_bind(); var callBound = require_callBound(); + var gOPD = require_gopd(); var $toString = callBound("Object.prototype.toString"); var hasToStringTag = require_shams2()(); - var gOPD = require_gopd(); var g = typeof globalThis === "undefined" ? global : globalThis; var typedArrays = availableTypedArrays(); + var $slice = callBound("String.prototype.slice"); + var getPrototypeOf = Object.getPrototypeOf; var $indexOf = callBound("Array.prototype.indexOf", true) || function indexOf(array, value) { for (var i = 0; i < array.length; i += 1) { if (array[i] === value) { @@ -11121,9 +11147,7 @@ var require_is_typed_array = __commonJS({ } return -1; }; - var $slice = callBound("String.prototype.slice"); - var toStrTags = {}; - var getPrototypeOf = Object.getPrototypeOf; + var cache = { __proto__: null }; if (hasToStringTag && gOPD && getPrototypeOf) { forEach2(typedArrays, function(typedArray) { var arr = new g[typedArray](); @@ -11134,38 +11158,76 @@ var require_is_typed_array = __commonJS({ var superProto = getPrototypeOf(proto); descriptor = gOPD(superProto, Symbol.toStringTag); } - toStrTags[typedArray] = descriptor.get; + cache["$" + typedArray] = callBind(descriptor.get); } }); + } else { + forEach2(typedArrays, function(typedArray) { + var arr = new g[typedArray](); + cache["$" + typedArray] = callBind(arr.slice); + }); } var tryTypedArrays = function tryAllTypedArrays(value) { - var anyTrue = false; - forEach2(toStrTags, function(getter, typedArray) { - if (!anyTrue) { + var found = false; + forEach2(cache, function(getter, typedArray) { + if (!found) { try { - anyTrue = getter.call(value) === typedArray; + if ("$" + getter(value) === typedArray) { + found = $slice(typedArray, 1); + } } catch (e) { } } }); - return anyTrue; + return found; }; - module2.exports = function isTypedArray(value) { + var trySlices = function tryAllSlices(value) { + var found = false; + forEach2(cache, function(getter, name) { + if (!found) { + try { + getter(value); + found = $slice(name, 1); + } catch (e) { + } + } + }); + return found; + }; + module2.exports = function whichTypedArray(value) { if (!value || typeof value !== "object") { return false; } - if (!hasToStringTag || !(Symbol.toStringTag in value)) { + if (!hasToStringTag) { var tag2 = $slice($toString(value), 8, -1); - return $indexOf(typedArrays, tag2) > -1; + if ($indexOf(typedArrays, tag2) > -1) { + return tag2; + } + if (tag2 !== "Object") { + return false; + } + return trySlices(value); } if (!gOPD) { - return false; + return null; } return tryTypedArrays(value); }; } }); +// node_modules/.pnpm/is-typed-array@1.1.12/node_modules/is-typed-array/index.js +var require_is_typed_array = __commonJS({ + "node_modules/.pnpm/is-typed-array@1.1.12/node_modules/is-typed-array/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var whichTypedArray = require_which_typed_array(); + module2.exports = function isTypedArray(value) { + return !!whichTypedArray(value); + }; + } +}); + // node_modules/.pnpm/is-array-buffer@3.0.2/node_modules/is-array-buffer/index.js var require_is_array_buffer = __commonJS({ "node_modules/.pnpm/is-array-buffer@3.0.2/node_modules/is-array-buffer/index.js"(exports2, module2) { @@ -11595,66 +11657,6 @@ var require_which_collection = __commonJS({ } }); -// node_modules/.pnpm/which-typed-array@1.1.9/node_modules/which-typed-array/index.js -var require_which_typed_array = __commonJS({ - "node_modules/.pnpm/which-typed-array@1.1.9/node_modules/which-typed-array/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var forEach2 = require_for_each(); - var availableTypedArrays = require_available_typed_arrays(); - var callBound = require_callBound(); - var gOPD = require_gopd(); - var $toString = callBound("Object.prototype.toString"); - var hasToStringTag = require_shams2()(); - var g = typeof globalThis === "undefined" ? global : globalThis; - var typedArrays = availableTypedArrays(); - var $slice = callBound("String.prototype.slice"); - var toStrTags = {}; - var getPrototypeOf = Object.getPrototypeOf; - if (hasToStringTag && gOPD && getPrototypeOf) { - forEach2(typedArrays, function(typedArray) { - if (typeof g[typedArray] === "function") { - var arr = new g[typedArray](); - if (Symbol.toStringTag in arr) { - var proto = getPrototypeOf(arr); - var descriptor = gOPD(proto, Symbol.toStringTag); - if (!descriptor) { - var superProto = getPrototypeOf(proto); - descriptor = gOPD(superProto, Symbol.toStringTag); - } - toStrTags[typedArray] = descriptor.get; - } - } - }); - } - var tryTypedArrays = function tryAllTypedArrays(value) { - var foundName = false; - forEach2(toStrTags, function(getter, typedArray) { - if (!foundName) { - try { - var name = getter.call(value); - if (name === typedArray) { - foundName = name; - } - } catch (e) { - } - } - }); - return foundName; - }; - var isTypedArray = require_is_typed_array(); - module2.exports = function whichTypedArray(value) { - if (!isTypedArray(value)) { - return false; - } - if (!hasToStringTag || !(Symbol.toStringTag in value)) { - return $slice($toString(value), 8, -1); - } - return tryTypedArrays(value); - }; - } -}); - // node_modules/.pnpm/array-buffer-byte-length@1.0.0/node_modules/array-buffer-byte-length/index.js var require_array_buffer_byte_length = __commonJS({ "node_modules/.pnpm/array-buffer-byte-length@1.0.0/node_modules/array-buffer-byte-length/index.js"(exports2, module2) { @@ -11672,9 +11674,9 @@ var require_array_buffer_byte_length = __commonJS({ } }); -// node_modules/.pnpm/deep-equal@2.2.1/node_modules/deep-equal/index.js +// node_modules/.pnpm/deep-equal@2.2.2/node_modules/deep-equal/index.js var require_deep_equal = __commonJS({ - "node_modules/.pnpm/deep-equal@2.2.1/node_modules/deep-equal/index.js"(exports2, module2) { + "node_modules/.pnpm/deep-equal@2.2.2/node_modules/deep-equal/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var assign2 = require_object(); @@ -11957,9 +11959,20 @@ var require_deep_equal = __commonJS({ } var aWhich = whichTypedArray(a); var bWhich = whichTypedArray(b); - if ((aWhich || bWhich) && aWhich !== bWhich) { + if (aWhich !== bWhich) { return false; } + if (aWhich || bWhich) { + if (a.length !== b.length) { + return false; + } + for (i = 0; i < a.length; i++) { + if (a[i] !== b[i]) { + return false; + } + } + return true; + } var aIsBuffer = isBuffer(a); var bIsBuffer = isBuffer(b); if (aIsBuffer !== bIsBuffer) { @@ -13154,9 +13167,9 @@ var require_hogan = __commonJS({ } }); -// node_modules/.pnpm/feather-icons@4.29.0/node_modules/feather-icons/dist/feather.js +// node_modules/.pnpm/feather-icons@4.29.1/node_modules/feather-icons/dist/feather.js var require_feather = __commonJS({ - "node_modules/.pnpm/feather-icons@4.29.0/node_modules/feather-icons/dist/feather.js"(exports2, module2) { + "node_modules/.pnpm/feather-icons@4.29.1/node_modules/feather-icons/dist/feather.js"(exports2, module2) { init_polyfill_buffer(); (function webpackUniversalModuleDefinition(root2, factory) { if (typeof exports2 === "object" && typeof module2 === "object") @@ -13236,7 +13249,7 @@ var require_feather = __commonJS({ /*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, aperture, archive, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, award, bar-chart-2, bar-chart, battery-charging, battery, bell-off, bell, bluetooth, bold, book-open, book, bookmark, box, briefcase, calendar, camera-off, camera, cast, check-circle, check-square, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, chrome, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-off, cloud-rain, cloud-snow, cloud, code, codepen, codesandbox, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, divide-circle, divide-square, divide, dollar-sign, download-cloud, download, dribbble, droplet, edit-2, edit-3, edit, external-link, eye-off, eye, facebook, fast-forward, feather, figma, file-minus, file-plus, file-text, file, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, grid, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, info, instagram, italic, key, layers, layout, life-buoy, link-2, link, linkedin, list, loader, lock, log-in, log-out, mail, map-pin, map, maximize-2, maximize, meh, menu, message-circle, message-square, mic-off, mic, minimize-2, minimize, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation-2, navigation, octagon, package, paperclip, pause-circle, pause, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, pie-chart, play-circle, play, plus-circle, plus-square, plus, pocket, power, printer, radio, refresh-ccw, refresh-cw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, server, settings, share-2, share, shield-off, shield, shopping-bag, shopping-cart, shuffle, sidebar, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, square, star, stop-circle, sun, sunrise, sunset, table, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash-2, trash, trello, trending-down, trending-up, triangle, truck, tv, twitch, twitter, type, umbrella, underline, unlock, upload-cloud, upload, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume-1, volume-2, volume-x, volume, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */ /***/ function(module3) { - module3.exports = { "activity": '', "airplay": '', "alert-circle": '', "alert-octagon": '', "alert-triangle": '', "align-center": '', "align-justify": '', "align-left": '', "align-right": '', "anchor": '', "aperture": '', "archive": '', "arrow-down-circle": '', "arrow-down-left": '', "arrow-down-right": '', "arrow-down": '', "arrow-left-circle": '', "arrow-left": '', "arrow-right-circle": '', "arrow-right": '', "arrow-up-circle": '', "arrow-up-left": '', "arrow-up-right": '', "arrow-up": '', "at-sign": '', "award": '', "bar-chart-2": '', "bar-chart": '', "battery-charging": '', "battery": '', "bell-off": '', "bell": '', "bluetooth": '', "bold": '', "book-open": '', "book": '', "bookmark": '', "box": '', "briefcase": '', "calendar": '', "camera-off": '', "camera": '', "cast": '', "check-circle": '', "check-square": '', "check": '', "chevron-down": '', "chevron-left": '', "chevron-right": '', "chevron-up": '', "chevrons-down": '', "chevrons-left": '', "chevrons-right": '', "chevrons-up": '', "chrome": '', "circle": '', "clipboard": '', "clock": '', "cloud-drizzle": '', "cloud-lightning": '', "cloud-off": '', "cloud-rain": '', "cloud-snow": '', "cloud": '', "code": '', "codepen": '', "codesandbox": '', "coffee": '', "columns": '', "command": '', "compass": '', "copy": '', "corner-down-left": '', "corner-down-right": '', "corner-left-down": '', "corner-left-up": '', "corner-right-down": '', "corner-right-up": '', "corner-up-left": '', "corner-up-right": '', "cpu": '', "credit-card": '', "crop": '', "crosshair": '', "database": '', "delete": '', "disc": '', "divide-circle": '', "divide-square": '', "divide": '', "dollar-sign": '', "download-cloud": '', "download": '', "dribbble": '', "droplet": '', "edit-2": '', "edit-3": '', "edit": '', "external-link": '', "eye-off": '', "eye": '', "facebook": '', "fast-forward": '', "feather": '', "figma": '', "file-minus": '', "file-plus": '', "file-text": '', "file": '', "film": '', "filter": '', "flag": '', "folder-minus": '', "folder-plus": '', "folder": '', "framer": '', "frown": '', "gift": '', "git-branch": '', "git-commit": '', "git-merge": '', "git-pull-request": '', "github": '', "gitlab": '', "globe": '', "grid": '', "hard-drive": '', "hash": '', "headphones": '', "heart": '', "help-circle": '', "hexagon": '', "home": '', "image": '', "inbox": '', "info": '', "instagram": '', "italic": '', "key": '', "layers": '', "layout": '', "life-buoy": '', "link-2": '', "link": '', "linkedin": '', "list": '', "loader": '', "lock": '', "log-in": '', "log-out": '', "mail": '', "map-pin": '', "map": '', "maximize-2": '', "maximize": '', "meh": '', "menu": '', "message-circle": '', "message-square": '', "mic-off": '', "mic": '', "minimize-2": '', "minimize": '', "minus-circle": '', "minus-square": '', "minus": '', "monitor": '', "moon": '', "more-horizontal": '', "more-vertical": '', "mouse-pointer": '', "move": '', "music": '', "navigation-2": '', "navigation": '', "octagon": '', "package": '', "paperclip": '', "pause-circle": '', "pause": '', "pen-tool": '', "percent": '', "phone-call": '', "phone-forwarded": '', "phone-incoming": '', "phone-missed": '', "phone-off": '', "phone-outgoing": '', "phone": '', "pie-chart": '', "play-circle": '', "play": '', "plus-circle": '', "plus-square": '', "plus": '', "pocket": '', "power": '', "printer": '', "radio": '', "refresh-ccw": '', "refresh-cw": '', "repeat": '', "rewind": '', "rotate-ccw": '', "rotate-cw": '', "rss": '', "save": '', "scissors": '', "search": '', "send": '', "server": '', "settings": '', "share-2": '', "share": '', "shield-off": '', "shield": '', "shopping-bag": '', "shopping-cart": '', "shuffle": '', "sidebar": '', "skip-back": '', "skip-forward": '', "slack": '', "slash": '', "sliders": '', "smartphone": '', "smile": '', "speaker": '', "square": '', "star": '', "stop-circle": '', "sun": '', "sunrise": '', "sunset": '', "table": '', "tablet": '', "tag": '', "target": '', "terminal": '', "thermometer": '', "thumbs-down": '', "thumbs-up": '', "toggle-left": '', "toggle-right": '', "tool": '', "trash-2": '', "trash": '', "trello": '', "trending-down": '', "trending-up": '', "triangle": '', "truck": '', "tv": '', "twitch": '', "twitter": '', "type": '', "umbrella": '', "underline": '', "unlock": '', "upload-cloud": '', "upload": '', "user-check": '', "user-minus": '', "user-plus": '', "user-x": '', "user": '', "users": '', "video-off": '', "video": '', "voicemail": '', "volume-1": '', "volume-2": '', "volume-x": '', "volume": '', "watch": '', "wifi-off": '', "wifi": '', "wind": '', "x-circle": '', "x-octagon": '', "x-square": '', "x": '', "youtube": '', "zap-off": '', "zap": '', "zoom-in": '', "zoom-out": '' }; + module3.exports = { "activity": '', "airplay": '', "alert-circle": '', "alert-octagon": '', "alert-triangle": '', "align-center": '', "align-justify": '', "align-left": '', "align-right": '', "anchor": '', "aperture": '', "archive": '', "arrow-down-circle": '', "arrow-down-left": '', "arrow-down-right": '', "arrow-down": '', "arrow-left-circle": '', "arrow-left": '', "arrow-right-circle": '', "arrow-right": '', "arrow-up-circle": '', "arrow-up-left": '', "arrow-up-right": '', "arrow-up": '', "at-sign": '', "award": '', "bar-chart-2": '', "bar-chart": '', "battery-charging": '', "battery": '', "bell-off": '', "bell": '', "bluetooth": '', "bold": '', "book-open": '', "book": '', "bookmark": '', "box": '', "briefcase": '', "calendar": '', "camera-off": '', "camera": '', "cast": '', "check-circle": '', "check-square": '', "check": '', "chevron-down": '', "chevron-left": '', "chevron-right": '', "chevron-up": '', "chevrons-down": '', "chevrons-left": '', "chevrons-right": '', "chevrons-up": '', "chrome": '', "circle": '', "clipboard": '', "clock": '', "cloud-drizzle": '', "cloud-lightning": '', "cloud-off": '', "cloud-rain": '', "cloud-snow": '', "cloud": '', "code": '', "codepen": '', "codesandbox": '', "coffee": '', "columns": '', "command": '', "compass": '', "copy": '', "corner-down-left": '', "corner-down-right": '', "corner-left-down": '', "corner-left-up": '', "corner-right-down": '', "corner-right-up": '', "corner-up-left": '', "corner-up-right": '', "cpu": '', "credit-card": '', "crop": '', "crosshair": '', "database": '', "delete": '', "disc": '', "divide-circle": '', "divide-square": '', "divide": '', "dollar-sign": '', "download-cloud": '', "download": '', "dribbble": '', "droplet": '', "edit-2": '', "edit-3": '', "edit": '', "external-link": '', "eye-off": '', "eye": '', "facebook": '', "fast-forward": '', "feather": '', "figma": '', "file-minus": '', "file-plus": '', "file-text": '', "file": '', "film": '', "filter": '', "flag": '', "folder-minus": '', "folder-plus": '', "folder": '', "framer": '', "frown": '', "gift": '', "git-branch": '', "git-commit": '', "git-merge": '', "git-pull-request": '', "github": '', "gitlab": '', "globe": '', "grid": '', "hard-drive": '', "hash": '', "headphones": '', "heart": '', "help-circle": '', "hexagon": '', "home": '', "image": '', "inbox": '', "info": '', "instagram": '', "italic": '', "key": '', "layers": '', "layout": '', "life-buoy": '', "link-2": '', "link": '', "linkedin": '', "list": '', "loader": '', "lock": '', "log-in": '', "log-out": '', "mail": '', "map-pin": '', "map": '', "maximize-2": '', "maximize": '', "meh": '', "menu": '', "message-circle": '', "message-square": '', "mic-off": '', "mic": '', "minimize-2": '', "minimize": '', "minus-circle": '', "minus-square": '', "minus": '', "monitor": '', "moon": '', "more-horizontal": '', "more-vertical": '', "mouse-pointer": '', "move": '', "music": '', "navigation-2": '', "navigation": '', "octagon": '', "package": '', "paperclip": '', "pause-circle": '', "pause": '', "pen-tool": '', "percent": '', "phone-call": '', "phone-forwarded": '', "phone-incoming": '', "phone-missed": '', "phone-off": '', "phone-outgoing": '', "phone": '', "pie-chart": '', "play-circle": '', "play": '', "plus-circle": '', "plus-square": '', "plus": '', "pocket": '', "power": '', "printer": '', "radio": '', "refresh-ccw": '', "refresh-cw": '', "repeat": '', "rewind": '', "rotate-ccw": '', "rotate-cw": '', "rss": '', "save": '', "scissors": '', "search": '', "send": '', "server": '', "settings": '', "share-2": '', "share": '', "shield-off": '', "shield": '', "shopping-bag": '', "shopping-cart": '', "shuffle": '', "sidebar": '', "skip-back": '', "skip-forward": '', "slack": '', "slash": '', "sliders": '', "smartphone": '', "smile": '', "speaker": '', "square": '', "star": '', "stop-circle": '', "sun": '', "sunrise": '', "sunset": '', "table": '', "tablet": '', "tag": '', "target": '', "terminal": '', "thermometer": '', "thumbs-down": '', "thumbs-up": '', "toggle-left": '', "toggle-right": '', "tool": '', "trash-2": '', "trash": '', "trello": '', "trending-down": '', "trending-up": '', "triangle": '', "truck": '', "tv": '', "twitch": '', "twitter": '', "type": '', "umbrella": '', "underline": '', "unlock": '', "upload-cloud": '', "upload": '', "user-check": '', "user-minus": '', "user-plus": '', "user-x": '', "user": '', "users": '', "video-off": '', "video": '', "voicemail": '', "volume-1": '', "volume-2": '', "volume-x": '', "volume": '', "watch": '', "wifi-off": '', "wifi": '', "wind": '', "x-circle": '', "x-octagon": '', "x-square": '', "x": '', "youtube": '', "zap-off": '', "zap": '', "zoom-in": '', "zoom-out": '' }; } ), /***/ @@ -13369,12 +13382,12 @@ var require_feather = __commonJS({ /*! no static exports found */ /***/ function(module3, exports3, __webpack_require__) { - var isObject = __webpack_require__( + var isObject2 = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js" ); module3.exports = function(it) { - if (!isObject(it)) { + if (!isObject2(it)) { throw TypeError(String(it) + " is not an object"); } return it; @@ -13970,12 +13983,12 @@ var require_feather = __commonJS({ /*! ../internals/global */ "./node_modules/core-js/internals/global.js" ); - var isObject = __webpack_require__( + var isObject2 = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js" ); var document2 = global2.document; - var exist = isObject(document2) && isObject(document2.createElement); + var exist = isObject2(document2) && isObject2(document2.createElement); module3.exports = function(it) { return exist ? document2.createElement(it) : {}; }; @@ -14289,7 +14302,7 @@ var require_feather = __commonJS({ /*! ../internals/global */ "./node_modules/core-js/internals/global.js" ); - var isObject = __webpack_require__( + var isObject2 = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js" ); @@ -14317,7 +14330,7 @@ var require_feather = __commonJS({ var getterFor = function(TYPE) { return function(it) { var state; - if (!isObject(it) || (state = get(it)).type !== TYPE) { + if (!isObject2(it) || (state = get(it)).type !== TYPE) { throw TypeError("Incompatible receiver, " + TYPE + " required"); } return state; @@ -15287,19 +15300,19 @@ var require_feather = __commonJS({ /*! no static exports found */ /***/ function(module3, exports3, __webpack_require__) { - var isObject = __webpack_require__( + var isObject2 = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js" ); module3.exports = function(it, S) { - if (!isObject(it)) + if (!isObject2(it)) return it; var fn, val; - if (S && typeof (fn = it.toString) == "function" && !isObject(val = fn.call(it))) + if (S && typeof (fn = it.toString) == "function" && !isObject2(val = fn.call(it))) return val; - if (typeof (fn = it.valueOf) == "function" && !isObject(val = fn.call(it))) + if (typeof (fn = it.valueOf) == "function" && !isObject2(val = fn.call(it))) return val; - if (!S && typeof (fn = it.toString) == "function" && !isObject(val = fn.call(it))) + if (!S && typeof (fn = it.toString) == "function" && !isObject2(val = fn.call(it))) return val; throw TypeError("Can't convert object to primitive value"); }; @@ -15328,7 +15341,7 @@ var require_feather = __commonJS({ /*! no static exports found */ /***/ function(module3, exports3, __webpack_require__) { - var isObject = __webpack_require__( + var isObject2 = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js" ); @@ -15338,7 +15351,7 @@ var require_feather = __commonJS({ ); module3.exports = function(O, proto) { anObject(O); - if (!isObject(proto) && proto !== null) { + if (!isObject2(proto) && proto !== null) { throw TypeError("Can't set " + String(proto) + " as a prototype"); } }; @@ -15716,10 +15729,10 @@ var require_feather = __commonJS({ /*!***********************!*\ !*** ./src/tags.json ***! \***********************/ - /*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, archive, at-sign, award, aperture, bar-chart, bar-chart-2, battery, battery-charging, bell, bell-off, bluetooth, book-open, book, bookmark, box, briefcase, calendar, camera, cast, chevron-down, chevron-up, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, code, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, file-minus, file-plus, file-text, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, layers, layout, life-bouy, link, link-2, linkedin, list, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, play, pie-chart, play-circle, plus, plus-circle, plus-square, pocket, power, printer, radio, refresh-cw, refresh-ccw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, settings, share-2, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash, trash-2, triangle, truck, tv, twitch, twitter, type, umbrella, unlock, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */ + /*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, archive, at-sign, award, aperture, bar-chart, bar-chart-2, battery, battery-charging, bell, bell-off, bluetooth, book-open, book, bookmark, box, briefcase, calendar, camera, cast, chevron-down, chevron-up, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, code, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, file-minus, file-plus, file-text, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, layers, layout, life-buoy, link, link-2, linkedin, list, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, play, pie-chart, play-circle, plus, plus-circle, plus-square, pocket, power, printer, radio, refresh-cw, refresh-ccw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, settings, share-2, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash, trash-2, triangle, truck, tv, twitch, twitter, type, umbrella, unlock, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */ /***/ function(module3) { - module3.exports = { "activity": ["pulse", "health", "action", "motion"], "airplay": ["stream", "cast", "mirroring"], "alert-circle": ["warning", "alert", "danger"], "alert-octagon": ["warning", "alert", "danger"], "alert-triangle": ["warning", "alert", "danger"], "align-center": ["text alignment", "center"], "align-justify": ["text alignment", "justified"], "align-left": ["text alignment", "left"], "align-right": ["text alignment", "right"], "anchor": [], "archive": ["index", "box"], "at-sign": ["mention", "at", "email", "message"], "award": ["achievement", "badge"], "aperture": ["camera", "photo"], "bar-chart": ["statistics", "diagram", "graph"], "bar-chart-2": ["statistics", "diagram", "graph"], "battery": ["power", "electricity"], "battery-charging": ["power", "electricity"], "bell": ["alarm", "notification", "sound"], "bell-off": ["alarm", "notification", "silent"], "bluetooth": ["wireless"], "book-open": ["read", "library"], "book": ["read", "dictionary", "booklet", "magazine", "library"], "bookmark": ["read", "clip", "marker", "tag"], "box": ["cube"], "briefcase": ["work", "bag", "baggage", "folder"], "calendar": ["date"], "camera": ["photo"], "cast": ["chromecast", "airplay"], "chevron-down": ["expand"], "chevron-up": ["collapse"], "circle": ["off", "zero", "record"], "clipboard": ["copy"], "clock": ["time", "watch", "alarm"], "cloud-drizzle": ["weather", "shower"], "cloud-lightning": ["weather", "bolt"], "cloud-rain": ["weather"], "cloud-snow": ["weather", "blizzard"], "cloud": ["weather"], "codepen": ["logo"], "codesandbox": ["logo"], "code": ["source", "programming"], "coffee": ["drink", "cup", "mug", "tea", "cafe", "hot", "beverage"], "columns": ["layout"], "command": ["keyboard", "cmd", "terminal", "prompt"], "compass": ["navigation", "safari", "travel", "direction"], "copy": ["clone", "duplicate"], "corner-down-left": ["arrow", "return"], "corner-down-right": ["arrow"], "corner-left-down": ["arrow"], "corner-left-up": ["arrow"], "corner-right-down": ["arrow"], "corner-right-up": ["arrow"], "corner-up-left": ["arrow"], "corner-up-right": ["arrow"], "cpu": ["processor", "technology"], "credit-card": ["purchase", "payment", "cc"], "crop": ["photo", "image"], "crosshair": ["aim", "target"], "database": ["storage", "memory"], "delete": ["remove"], "disc": ["album", "cd", "dvd", "music"], "dollar-sign": ["currency", "money", "payment"], "droplet": ["water"], "edit": ["pencil", "change"], "edit-2": ["pencil", "change"], "edit-3": ["pencil", "change"], "eye": ["view", "watch"], "eye-off": ["view", "watch", "hide", "hidden"], "external-link": ["outbound"], "facebook": ["logo", "social"], "fast-forward": ["music"], "figma": ["logo", "design", "tool"], "file-minus": ["delete", "remove", "erase"], "file-plus": ["add", "create", "new"], "file-text": ["data", "txt", "pdf"], "film": ["movie", "video"], "filter": ["funnel", "hopper"], "flag": ["report"], "folder-minus": ["directory"], "folder-plus": ["directory"], "folder": ["directory"], "framer": ["logo", "design", "tool"], "frown": ["emoji", "face", "bad", "sad", "emotion"], "gift": ["present", "box", "birthday", "party"], "git-branch": ["code", "version control"], "git-commit": ["code", "version control"], "git-merge": ["code", "version control"], "git-pull-request": ["code", "version control"], "github": ["logo", "version control"], "gitlab": ["logo", "version control"], "globe": ["world", "browser", "language", "translate"], "hard-drive": ["computer", "server", "memory", "data"], "hash": ["hashtag", "number", "pound"], "headphones": ["music", "audio", "sound"], "heart": ["like", "love", "emotion"], "help-circle": ["question mark"], "hexagon": ["shape", "node.js", "logo"], "home": ["house", "living"], "image": ["picture"], "inbox": ["email"], "instagram": ["logo", "camera"], "key": ["password", "login", "authentication", "secure"], "layers": ["stack"], "layout": ["window", "webpage"], "life-bouy": ["help", "life ring", "support"], "link": ["chain", "url"], "link-2": ["chain", "url"], "linkedin": ["logo", "social media"], "list": ["options"], "lock": ["security", "password", "secure"], "log-in": ["sign in", "arrow", "enter"], "log-out": ["sign out", "arrow", "exit"], "mail": ["email", "message"], "map-pin": ["location", "navigation", "travel", "marker"], "map": ["location", "navigation", "travel"], "maximize": ["fullscreen"], "maximize-2": ["fullscreen", "arrows", "expand"], "meh": ["emoji", "face", "neutral", "emotion"], "menu": ["bars", "navigation", "hamburger"], "message-circle": ["comment", "chat"], "message-square": ["comment", "chat"], "mic-off": ["record", "sound", "mute"], "mic": ["record", "sound", "listen"], "minimize": ["exit fullscreen", "close"], "minimize-2": ["exit fullscreen", "arrows", "close"], "minus": ["subtract"], "monitor": ["tv", "screen", "display"], "moon": ["dark", "night"], "more-horizontal": ["ellipsis"], "more-vertical": ["ellipsis"], "mouse-pointer": ["arrow", "cursor"], "move": ["arrows"], "music": ["note"], "navigation": ["location", "travel"], "navigation-2": ["location", "travel"], "octagon": ["stop"], "package": ["box", "container"], "paperclip": ["attachment"], "pause": ["music", "stop"], "pause-circle": ["music", "audio", "stop"], "pen-tool": ["vector", "drawing"], "percent": ["discount"], "phone-call": ["ring"], "phone-forwarded": ["call"], "phone-incoming": ["call"], "phone-missed": ["call"], "phone-off": ["call", "mute"], "phone-outgoing": ["call"], "phone": ["call"], "play": ["music", "start"], "pie-chart": ["statistics", "diagram"], "play-circle": ["music", "start"], "plus": ["add", "new"], "plus-circle": ["add", "new"], "plus-square": ["add", "new"], "pocket": ["logo", "save"], "power": ["on", "off"], "printer": ["fax", "office", "device"], "radio": ["signal"], "refresh-cw": ["synchronise", "arrows"], "refresh-ccw": ["arrows"], "repeat": ["loop", "arrows"], "rewind": ["music"], "rotate-ccw": ["arrow"], "rotate-cw": ["arrow"], "rss": ["feed", "subscribe"], "save": ["floppy disk"], "scissors": ["cut"], "search": ["find", "magnifier", "magnifying glass"], "send": ["message", "mail", "email", "paper airplane", "paper aeroplane"], "settings": ["cog", "edit", "gear", "preferences"], "share-2": ["network", "connections"], "shield": ["security", "secure"], "shield-off": ["security", "insecure"], "shopping-bag": ["ecommerce", "cart", "purchase", "store"], "shopping-cart": ["ecommerce", "cart", "purchase", "store"], "shuffle": ["music"], "skip-back": ["music"], "skip-forward": ["music"], "slack": ["logo"], "slash": ["ban", "no"], "sliders": ["settings", "controls"], "smartphone": ["cellphone", "device"], "smile": ["emoji", "face", "happy", "good", "emotion"], "speaker": ["audio", "music"], "star": ["bookmark", "favorite", "like"], "stop-circle": ["media", "music"], "sun": ["brightness", "weather", "light"], "sunrise": ["weather", "time", "morning", "day"], "sunset": ["weather", "time", "evening", "night"], "tablet": ["device"], "tag": ["label"], "target": ["logo", "bullseye"], "terminal": ["code", "command line", "prompt"], "thermometer": ["temperature", "celsius", "fahrenheit", "weather"], "thumbs-down": ["dislike", "bad", "emotion"], "thumbs-up": ["like", "good", "emotion"], "toggle-left": ["on", "off", "switch"], "toggle-right": ["on", "off", "switch"], "tool": ["settings", "spanner"], "trash": ["garbage", "delete", "remove", "bin"], "trash-2": ["garbage", "delete", "remove", "bin"], "triangle": ["delta"], "truck": ["delivery", "van", "shipping", "transport", "lorry"], "tv": ["television", "stream"], "twitch": ["logo"], "twitter": ["logo", "social"], "type": ["text"], "umbrella": ["rain", "weather"], "unlock": ["security"], "user-check": ["followed", "subscribed"], "user-minus": ["delete", "remove", "unfollow", "unsubscribe"], "user-plus": ["new", "add", "create", "follow", "subscribe"], "user-x": ["delete", "remove", "unfollow", "unsubscribe", "unavailable"], "user": ["person", "account"], "users": ["group"], "video-off": ["camera", "movie", "film"], "video": ["camera", "movie", "film"], "voicemail": ["phone"], "volume": ["music", "sound", "mute"], "volume-1": ["music", "sound"], "volume-2": ["music", "sound"], "volume-x": ["music", "sound", "mute"], "watch": ["clock", "time"], "wifi-off": ["disabled"], "wifi": ["connection", "signal", "wireless"], "wind": ["weather", "air"], "x-circle": ["cancel", "close", "delete", "remove", "times", "clear"], "x-octagon": ["delete", "stop", "alert", "warning", "times", "clear"], "x-square": ["cancel", "close", "delete", "remove", "times", "clear"], "x": ["cancel", "close", "delete", "remove", "times", "clear"], "youtube": ["logo", "video", "play"], "zap-off": ["flash", "camera", "lightning"], "zap": ["flash", "camera", "lightning"], "zoom-in": ["magnifying glass"], "zoom-out": ["magnifying glass"] }; + module3.exports = { "activity": ["pulse", "health", "action", "motion"], "airplay": ["stream", "cast", "mirroring"], "alert-circle": ["warning", "alert", "danger"], "alert-octagon": ["warning", "alert", "danger"], "alert-triangle": ["warning", "alert", "danger"], "align-center": ["text alignment", "center"], "align-justify": ["text alignment", "justified"], "align-left": ["text alignment", "left"], "align-right": ["text alignment", "right"], "anchor": [], "archive": ["index", "box"], "at-sign": ["mention", "at", "email", "message"], "award": ["achievement", "badge"], "aperture": ["camera", "photo"], "bar-chart": ["statistics", "diagram", "graph"], "bar-chart-2": ["statistics", "diagram", "graph"], "battery": ["power", "electricity"], "battery-charging": ["power", "electricity"], "bell": ["alarm", "notification", "sound"], "bell-off": ["alarm", "notification", "silent"], "bluetooth": ["wireless"], "book-open": ["read", "library"], "book": ["read", "dictionary", "booklet", "magazine", "library"], "bookmark": ["read", "clip", "marker", "tag"], "box": ["cube"], "briefcase": ["work", "bag", "baggage", "folder"], "calendar": ["date"], "camera": ["photo"], "cast": ["chromecast", "airplay"], "chevron-down": ["expand"], "chevron-up": ["collapse"], "circle": ["off", "zero", "record"], "clipboard": ["copy"], "clock": ["time", "watch", "alarm"], "cloud-drizzle": ["weather", "shower"], "cloud-lightning": ["weather", "bolt"], "cloud-rain": ["weather"], "cloud-snow": ["weather", "blizzard"], "cloud": ["weather"], "codepen": ["logo"], "codesandbox": ["logo"], "code": ["source", "programming"], "coffee": ["drink", "cup", "mug", "tea", "cafe", "hot", "beverage"], "columns": ["layout"], "command": ["keyboard", "cmd", "terminal", "prompt"], "compass": ["navigation", "safari", "travel", "direction"], "copy": ["clone", "duplicate"], "corner-down-left": ["arrow", "return"], "corner-down-right": ["arrow"], "corner-left-down": ["arrow"], "corner-left-up": ["arrow"], "corner-right-down": ["arrow"], "corner-right-up": ["arrow"], "corner-up-left": ["arrow"], "corner-up-right": ["arrow"], "cpu": ["processor", "technology"], "credit-card": ["purchase", "payment", "cc"], "crop": ["photo", "image"], "crosshair": ["aim", "target"], "database": ["storage", "memory"], "delete": ["remove"], "disc": ["album", "cd", "dvd", "music"], "dollar-sign": ["currency", "money", "payment"], "droplet": ["water"], "edit": ["pencil", "change"], "edit-2": ["pencil", "change"], "edit-3": ["pencil", "change"], "eye": ["view", "watch"], "eye-off": ["view", "watch", "hide", "hidden"], "external-link": ["outbound"], "facebook": ["logo", "social"], "fast-forward": ["music"], "figma": ["logo", "design", "tool"], "file-minus": ["delete", "remove", "erase"], "file-plus": ["add", "create", "new"], "file-text": ["data", "txt", "pdf"], "film": ["movie", "video"], "filter": ["funnel", "hopper"], "flag": ["report"], "folder-minus": ["directory"], "folder-plus": ["directory"], "folder": ["directory"], "framer": ["logo", "design", "tool"], "frown": ["emoji", "face", "bad", "sad", "emotion"], "gift": ["present", "box", "birthday", "party"], "git-branch": ["code", "version control"], "git-commit": ["code", "version control"], "git-merge": ["code", "version control"], "git-pull-request": ["code", "version control"], "github": ["logo", "version control"], "gitlab": ["logo", "version control"], "globe": ["world", "browser", "language", "translate"], "hard-drive": ["computer", "server", "memory", "data"], "hash": ["hashtag", "number", "pound"], "headphones": ["music", "audio", "sound"], "heart": ["like", "love", "emotion"], "help-circle": ["question mark"], "hexagon": ["shape", "node.js", "logo"], "home": ["house", "living"], "image": ["picture"], "inbox": ["email"], "instagram": ["logo", "camera"], "key": ["password", "login", "authentication", "secure"], "layers": ["stack"], "layout": ["window", "webpage"], "life-buoy": ["help", "life ring", "support"], "link": ["chain", "url"], "link-2": ["chain", "url"], "linkedin": ["logo", "social media"], "list": ["options"], "lock": ["security", "password", "secure"], "log-in": ["sign in", "arrow", "enter"], "log-out": ["sign out", "arrow", "exit"], "mail": ["email", "message"], "map-pin": ["location", "navigation", "travel", "marker"], "map": ["location", "navigation", "travel"], "maximize": ["fullscreen"], "maximize-2": ["fullscreen", "arrows", "expand"], "meh": ["emoji", "face", "neutral", "emotion"], "menu": ["bars", "navigation", "hamburger"], "message-circle": ["comment", "chat"], "message-square": ["comment", "chat"], "mic-off": ["record", "sound", "mute"], "mic": ["record", "sound", "listen"], "minimize": ["exit fullscreen", "close"], "minimize-2": ["exit fullscreen", "arrows", "close"], "minus": ["subtract"], "monitor": ["tv", "screen", "display"], "moon": ["dark", "night"], "more-horizontal": ["ellipsis"], "more-vertical": ["ellipsis"], "mouse-pointer": ["arrow", "cursor"], "move": ["arrows"], "music": ["note"], "navigation": ["location", "travel"], "navigation-2": ["location", "travel"], "octagon": ["stop"], "package": ["box", "container"], "paperclip": ["attachment"], "pause": ["music", "stop"], "pause-circle": ["music", "audio", "stop"], "pen-tool": ["vector", "drawing"], "percent": ["discount"], "phone-call": ["ring"], "phone-forwarded": ["call"], "phone-incoming": ["call"], "phone-missed": ["call"], "phone-off": ["call", "mute"], "phone-outgoing": ["call"], "phone": ["call"], "play": ["music", "start"], "pie-chart": ["statistics", "diagram"], "play-circle": ["music", "start"], "plus": ["add", "new"], "plus-circle": ["add", "new"], "plus-square": ["add", "new"], "pocket": ["logo", "save"], "power": ["on", "off"], "printer": ["fax", "office", "device"], "radio": ["signal"], "refresh-cw": ["synchronise", "arrows"], "refresh-ccw": ["arrows"], "repeat": ["loop", "arrows"], "rewind": ["music"], "rotate-ccw": ["arrow"], "rotate-cw": ["arrow"], "rss": ["feed", "subscribe"], "save": ["floppy disk"], "scissors": ["cut"], "search": ["find", "magnifier", "magnifying glass"], "send": ["message", "mail", "email", "paper airplane", "paper aeroplane"], "settings": ["cog", "edit", "gear", "preferences"], "share-2": ["network", "connections"], "shield": ["security", "secure"], "shield-off": ["security", "insecure"], "shopping-bag": ["ecommerce", "cart", "purchase", "store"], "shopping-cart": ["ecommerce", "cart", "purchase", "store"], "shuffle": ["music"], "skip-back": ["music"], "skip-forward": ["music"], "slack": ["logo"], "slash": ["ban", "no"], "sliders": ["settings", "controls"], "smartphone": ["cellphone", "device"], "smile": ["emoji", "face", "happy", "good", "emotion"], "speaker": ["audio", "music"], "star": ["bookmark", "favorite", "like"], "stop-circle": ["media", "music"], "sun": ["brightness", "weather", "light"], "sunrise": ["weather", "time", "morning", "day"], "sunset": ["weather", "time", "evening", "night"], "tablet": ["device"], "tag": ["label"], "target": ["logo", "bullseye"], "terminal": ["code", "command line", "prompt"], "thermometer": ["temperature", "celsius", "fahrenheit", "weather"], "thumbs-down": ["dislike", "bad", "emotion"], "thumbs-up": ["like", "good", "emotion"], "toggle-left": ["on", "off", "switch"], "toggle-right": ["on", "off", "switch"], "tool": ["settings", "spanner"], "trash": ["garbage", "delete", "remove", "bin"], "trash-2": ["garbage", "delete", "remove", "bin"], "triangle": ["delta"], "truck": ["delivery", "van", "shipping", "transport", "lorry"], "tv": ["television", "stream"], "twitch": ["logo"], "twitter": ["logo", "social"], "type": ["text"], "umbrella": ["rain", "weather"], "unlock": ["security"], "user-check": ["followed", "subscribed"], "user-minus": ["delete", "remove", "unfollow", "unsubscribe"], "user-plus": ["new", "add", "create", "follow", "subscribe"], "user-x": ["delete", "remove", "unfollow", "unsubscribe", "unavailable"], "user": ["person", "account"], "users": ["group"], "video-off": ["camera", "movie", "film"], "video": ["camera", "movie", "film"], "voicemail": ["phone"], "volume": ["music", "sound", "mute"], "volume-1": ["music", "sound"], "volume-2": ["music", "sound"], "volume-x": ["music", "sound", "mute"], "watch": ["clock", "time"], "wifi-off": ["disabled"], "wifi": ["connection", "signal", "wireless"], "wind": ["weather", "air"], "x-circle": ["cancel", "close", "delete", "remove", "times", "clear"], "x-octagon": ["delete", "stop", "alert", "warning", "times", "clear"], "x-square": ["cancel", "close", "delete", "remove", "times", "clear"], "x": ["cancel", "close", "delete", "remove", "times", "clear"], "youtube": ["logo", "video", "play"], "zap-off": ["flash", "camera", "lightning"], "zap": ["flash", "camera", "lightning"], "zoom-in": ["magnifying glass"], "zoom-out": ["magnifying glass"] }; } ), /***/ @@ -15789,7 +15802,7 @@ __export(main_exports, { module.exports = __toCommonJS(main_exports); init_polyfill_buffer(); -// node_modules/.pnpm/isomorphic-git@1.23.0/node_modules/isomorphic-git/index.js +// node_modules/.pnpm/isomorphic-git@1.24.5/node_modules/isomorphic-git/index.js init_polyfill_buffer(); var import_async_lock = __toESM(require_async_lock(), 1); var import_sha1 = __toESM(require_sha1(), 1); @@ -15799,7 +15812,7 @@ var import_pify = __toESM(require_pify(), 1); var import_ignore = __toESM(require_ignore(), 1); var import_clean_git_ref = __toESM(require_lib2(), 1); var import_diff3 = __toESM(require_diff3(), 1); -var BaseError = class extends Error { +var BaseError = class _BaseError extends Error { constructor(message) { super(message); this.caller = ""; @@ -15814,7 +15827,7 @@ var BaseError = class extends Error { }; } fromJSON(json) { - const e = new BaseError(json.message); + const e = new _BaseError(json.message); e.code = json.code; e.data = json.data; e.caller = json.caller; @@ -15825,7 +15838,7 @@ var BaseError = class extends Error { return true; } }; -var UnmergedPathsError = class extends BaseError { +var UnmergedPathsError = class _UnmergedPathsError extends BaseError { /** * @param {Array} filepaths */ @@ -15833,12 +15846,12 @@ var UnmergedPathsError = class extends BaseError { super( `Modifying the index is not possible because you have unmerged files: ${filepaths.toString}. Fix them up in the work tree, and then use 'git add/rm as appropriate to mark resolution and make a commit.` ); - this.code = this.name = UnmergedPathsError.code; + this.code = this.name = _UnmergedPathsError.code; this.data = { filepaths }; } }; UnmergedPathsError.code = "UnmergedPathsError"; -var InternalError = class extends BaseError { +var InternalError = class _InternalError extends BaseError { /** * @param {string} message */ @@ -15846,18 +15859,18 @@ var InternalError = class extends BaseError { super( `An internal error caused this command to fail. Please file a bug report at https://github.com/isomorphic-git/isomorphic-git/issues with this error message: ${message}` ); - this.code = this.name = InternalError.code; + this.code = this.name = _InternalError.code; this.data = { message }; } }; InternalError.code = "InternalError"; -var UnsafeFilepathError = class extends BaseError { +var UnsafeFilepathError = class _UnsafeFilepathError extends BaseError { /** * @param {string} filepath */ constructor(filepath) { super(`The filepath "${filepath}" contains unsafe character sequences`); - this.code = this.name = UnsafeFilepathError.code; + this.code = this.name = _UnsafeFilepathError.code; this.data = { filepath }; } }; @@ -16034,7 +16047,7 @@ function renderCacheEntryFlags(entry) { flags.nameLength = Math.min(Buffer.from(entry.path).length, 4095); return (flags.assumeValid ? 32768 : 0) + (flags.extended ? 16384 : 0) + ((flags.stage & 3) << 12) + (flags.nameLength & 4095); } -var GitIndex = class { +var GitIndex = class _GitIndex { /*:: _entries: Map _dirty: boolean // Used to determine if index needs to be saved to filesystem @@ -16061,14 +16074,23 @@ var GitIndex = class { } static async from(buffer2) { if (Buffer.isBuffer(buffer2)) { - return GitIndex.fromBuffer(buffer2); + return _GitIndex.fromBuffer(buffer2); } else if (buffer2 === null) { - return new GitIndex(null); + return new _GitIndex(null); } else { throw new InternalError("invalid type passed to GitIndex.from"); } } static async fromBuffer(buffer2) { + if (buffer2.length === 0) { + throw new InternalError("Index file is empty (.git/index)"); + } + const index2 = new _GitIndex(); + const reader = new BufferCursor(buffer2); + const magic = reader.toString("utf8", 4); + if (magic !== "DIRC") { + throw new InternalError(`Invalid dircache magic file number: ${magic}`); + } const shaComputed = await shasum(buffer2.slice(0, -20)); const shaClaimed = buffer2.slice(-20).toString("hex"); if (shaClaimed !== shaComputed) { @@ -16076,12 +16098,6 @@ var GitIndex = class { `Invalid checksum in GitIndex buffer: expected ${shaClaimed} but saw ${shaComputed}` ); } - const index2 = new GitIndex(); - const reader = new BufferCursor(buffer2); - const magic = reader.toString("utf8", 4); - if (magic !== "DIRC") { - throw new InternalError(`Inavlid dircache magic file number: ${magic}`); - } const version2 = reader.readUInt32BE(); if (version2 !== 2) { throw new InternalError(`Unsupported dircache version: ${version2}`); @@ -16247,11 +16263,11 @@ var GitIndex = class { writer.writeUInt32BE(this.entriesFlat.length); let entryBuffers = []; for (const entry of this.entries) { - entryBuffers.push(GitIndex._entryToBuffer(entry)); + entryBuffers.push(_GitIndex._entryToBuffer(entry)); if (entry.stages.length > 1) { for (const stage of entry.stages) { if (stage && stage !== entry) { - entryBuffers.push(GitIndex._entryToBuffer(stage)); + entryBuffers.push(_GitIndex._entryToBuffer(stage)); } } } @@ -16506,18 +16522,18 @@ function STAGE() { Object.freeze(o); return o; } -var NotFoundError = class extends BaseError { +var NotFoundError = class _NotFoundError extends BaseError { /** * @param {string} what */ constructor(what) { super(`Could not find ${what}.`); - this.code = this.name = NotFoundError.code; + this.code = this.name = _NotFoundError.code; this.data = { what }; } }; NotFoundError.code = "NotFoundError"; -var ObjectTypeError = class extends BaseError { +var ObjectTypeError = class _ObjectTypeError extends BaseError { /** * @param {string} oid * @param {'blob'|'commit'|'tag'|'tree'} actual @@ -16528,23 +16544,23 @@ var ObjectTypeError = class extends BaseError { super( `Object ${oid} ${filepath ? `at ${filepath}` : ""}was anticipated to be a ${expected} but it is a ${actual}.` ); - this.code = this.name = ObjectTypeError.code; + this.code = this.name = _ObjectTypeError.code; this.data = { oid, actual, expected, filepath }; } }; ObjectTypeError.code = "ObjectTypeError"; -var InvalidOidError = class extends BaseError { +var InvalidOidError = class _InvalidOidError extends BaseError { /** * @param {string} value */ constructor(value) { super(`Expected a 40-char hex object id but saw "${value}".`); - this.code = this.name = InvalidOidError.code; + this.code = this.name = _InvalidOidError.code; this.data = { value }; } }; InvalidOidError.code = "InvalidOidError"; -var NoRefspecError = class extends BaseError { +var NoRefspecError = class _NoRefspecError extends BaseError { /** * @param {string} remote */ @@ -16553,12 +16569,12 @@ var NoRefspecError = class extends BaseError { [remote "${remote}"] fetch = +refs/heads/*:refs/remotes/origin/* `); - this.code = this.name = NoRefspecError.code; + this.code = this.name = _NoRefspecError.code; this.data = { remote }; } }; NoRefspecError.code = "NoRefspecError"; -var GitPackedRefs = class { +var GitPackedRefs = class _GitPackedRefs { constructor(text2) { this.refs = /* @__PURE__ */ new Map(); this.parsedConfig = []; @@ -16584,7 +16600,7 @@ var GitPackedRefs = class { return this; } static from(text2) { - return new GitPackedRefs(text2); + return new _GitPackedRefs(text2); } delete(ref) { this.parsedConfig = this.parsedConfig.filter((entry) => entry.ref !== ref); @@ -16594,7 +16610,7 @@ var GitPackedRefs = class { return this.parsedConfig.map(({ line }) => line).join("\n") + "\n"; } }; -var GitRefSpec = class { +var GitRefSpec = class _GitRefSpec { constructor({ remotePath, localPath, force, matchPrefix }) { Object.assign(this, { remotePath, @@ -16617,7 +16633,7 @@ var GitRefSpec = class { if (remoteIsGlob !== localIsGlob) { throw new InternalError("Invalid refspec"); } - return new GitRefSpec({ + return new _GitRefSpec({ remotePath, localPath, force, @@ -16647,7 +16663,7 @@ var GitRefSpec = class { return null; } }; -var GitRefSpecSet = class { +var GitRefSpecSet = class _GitRefSpecSet { constructor(rules = []) { this.rules = rules; } @@ -16656,7 +16672,7 @@ var GitRefSpecSet = class { for (const refspec of refspecs) { rules.push(GitRefSpec.from(refspec)); } - return new GitRefSpecSet(rules); + return new _GitRefSpecSet(rules); } add(refspec) { const rule = GitRefSpec.from(refspec); @@ -16806,7 +16822,7 @@ var findLastIndex = (array, callback) => { return callback(item) ? index2 : lastIndex; }, -1); }; -var GitConfig = class { +var GitConfig = class _GitConfig { constructor(text2) { let section = null; let subsection = null; @@ -16832,7 +16848,7 @@ var GitConfig = class { }); } static from(text2) { - return new GitConfig(text2); + return new _GitConfig(text2); } async get(path2, getall = false) { const normalizedPath = normalizePath$1(path2).path; @@ -16951,7 +16967,7 @@ var refpaths = (ref) => [ `refs/remotes/${ref}/HEAD` ]; var GIT_FILES = ["config", "description", "index", "shallow", "commondir"]; -var GitRefManager = class { +var GitRefManager = class _GitRefManager { static async updateRemoteRefs({ fs, gitdir, @@ -16979,12 +16995,12 @@ var GitRefManager = class { const refspec = GitRefSpecSet.from(refspecs); const actualRefsToWrite = /* @__PURE__ */ new Map(); if (pruneTags) { - const tags2 = await GitRefManager.listRefs({ + const tags2 = await _GitRefManager.listRefs({ fs, gitdir, filepath: "refs/tags" }); - await GitRefManager.deleteRefs({ + await _GitRefManager.deleteRefs({ fs, gitdir, refs: tags2.map((tag2) => `refs/tags/${tag2}`) @@ -16993,7 +17009,7 @@ var GitRefManager = class { if (tags) { for (const serverRef of refs.keys()) { if (serverRef.startsWith("refs/tags") && !serverRef.endsWith("^{}")) { - if (!await GitRefManager.exists({ fs, gitdir, ref: serverRef })) { + if (!await _GitRefManager.exists({ fs, gitdir, ref: serverRef })) { const oid = refs.get(serverRef); actualRefsToWrite.set(serverRef, oid); } @@ -17016,7 +17032,7 @@ var GitRefManager = class { const pruned = []; if (prune) { for (const filepath of refspec.localNamespaces()) { - const refs2 = (await GitRefManager.listRefs({ + const refs2 = (await _GitRefManager.listRefs({ fs, gitdir, filepath @@ -17028,7 +17044,7 @@ var GitRefManager = class { } } if (pruned.length > 0) { - await GitRefManager.deleteRefs({ fs, gitdir, refs: pruned }); + await _GitRefManager.deleteRefs({ fs, gitdir, refs: pruned }); } } for (const [key2, value] of actualRefsToWrite) { @@ -17050,7 +17066,7 @@ var GitRefManager = class { `, "utf8"); } static async deleteRef({ fs, gitdir, ref }) { - return GitRefManager.deleteRefs({ fs, gitdir, refs: [ref] }); + return _GitRefManager.deleteRefs({ fs, gitdir, refs: [ref] }); } static async deleteRefs({ fs, gitdir, refs }) { await Promise.all(refs.map((ref) => fs.rm(join(gitdir, ref)))); @@ -17085,24 +17101,24 @@ var GitRefManager = class { let sha; if (ref.startsWith("ref: ")) { ref = ref.slice("ref: ".length); - return GitRefManager.resolve({ fs, gitdir, ref, depth }); + return _GitRefManager.resolve({ fs, gitdir, ref, depth }); } if (ref.length === 40 && /[0-9a-f]{40}/.test(ref)) { return ref; } - const packedMap = await GitRefManager.packedRefs({ fs, gitdir }); + const packedMap = await _GitRefManager.packedRefs({ fs, gitdir }); const allpaths = refpaths(ref).filter((p) => !GIT_FILES.includes(p)); for (const ref2 of allpaths) { sha = await fs.read(`${gitdir}/${ref2}`, { encoding: "utf8" }) || packedMap.get(ref2); if (sha) { - return GitRefManager.resolve({ fs, gitdir, ref: sha.trim(), depth }); + return _GitRefManager.resolve({ fs, gitdir, ref: sha.trim(), depth }); } } throw new NotFoundError(ref); } static async exists({ fs, gitdir, ref }) { try { - await GitRefManager.expand({ fs, gitdir, ref }); + await _GitRefManager.expand({ fs, gitdir, ref }); return true; } catch (err) { return false; @@ -17112,7 +17128,7 @@ var GitRefManager = class { if (ref.length === 40 && /[0-9a-f]{40}/.test(ref)) { return ref; } - const packedMap = await GitRefManager.packedRefs({ fs, gitdir }); + const packedMap = await _GitRefManager.packedRefs({ fs, gitdir }); const allpaths = refpaths(ref); for (const ref2 of allpaths) { if (await fs.exists(`${gitdir}/${ref2}`)) @@ -17139,7 +17155,7 @@ var GitRefManager = class { } if (ref.startsWith("ref: ")) { ref = ref.slice("ref: ".length); - return GitRefManager.resolveAgainstMap({ ref, fullref, depth, map }); + return _GitRefManager.resolveAgainstMap({ ref, fullref, depth, map }); } if (ref.length === 40 && /[0-9a-f]{40}/.test(ref)) { return { fullref, oid: ref }; @@ -17148,7 +17164,7 @@ var GitRefManager = class { for (const ref2 of allpaths) { const sha = map.get(ref2); if (sha) { - return GitRefManager.resolveAgainstMap({ + return _GitRefManager.resolveAgainstMap({ ref: sha.trim(), fullref: ref2, depth, @@ -17165,7 +17181,7 @@ var GitRefManager = class { } // List all the refs that match the `filepath` prefix static async listRefs({ fs, gitdir, filepath }) { - const packedMap = GitRefManager.packedRefs({ fs, gitdir }); + const packedMap = _GitRefManager.packedRefs({ fs, gitdir }); let files = null; try { files = await fs.readdirDeep(`${gitdir}/${filepath}`); @@ -17186,17 +17202,17 @@ var GitRefManager = class { } static async listBranches({ fs, gitdir, remote }) { if (remote) { - return GitRefManager.listRefs({ + return _GitRefManager.listRefs({ fs, gitdir, filepath: `refs/remotes/${remote}` }); } else { - return GitRefManager.listRefs({ fs, gitdir, filepath: `refs/heads` }); + return _GitRefManager.listRefs({ fs, gitdir, filepath: `refs/heads` }); } } static async listTags({ fs, gitdir }) { - const tags = await GitRefManager.listRefs({ + const tags = await _GitRefManager.listRefs({ fs, gitdir, filepath: `refs/tags` @@ -17281,7 +17297,7 @@ function nudgeIntoShape(entry) { } return entry; } -var GitTree = class { +var GitTree = class _GitTree { constructor(entries) { if (Buffer.isBuffer(entries)) { this._entries = parseBuffer(entries); @@ -17293,7 +17309,7 @@ var GitTree = class { this._entries.sort(comparePath); } static from(tree) { - return new GitTree(tree); + return new _GitTree(tree); } render() { return this._entries.map((entry) => `${entry.mode} ${entry.type} ${entry.oid} ${entry.path}`).join("\n"); @@ -17693,7 +17709,7 @@ function otherVarIntDecode(reader, startWith) { } while (byte & 128); return result; } -var GitPackIndex = class { +var GitPackIndex = class _GitPackIndex { constructor(stuff) { Object.assign(this, stuff); this.offsetCache = {}; @@ -17728,7 +17744,7 @@ var GitPackIndex = class { offsets.set(hashes[i], reader.readUInt32BE()); } const packfileSha = reader.slice(20).toString("hex"); - return new GitPackIndex({ + return new _GitPackIndex({ hashes, crcs: {}, offsets, @@ -17794,7 +17810,7 @@ var GitPackIndex = class { o.end = end; o.crc = crc; } - const p = new GitPackIndex({ + const p = new _GitPackIndex({ pack: Promise.resolve(pack), packfileSha, crcs, @@ -18076,7 +18092,7 @@ async function _readObject({ } throw new InternalError(`invalid format "${result.format}"`); } -var AlreadyExistsError = class extends BaseError { +var AlreadyExistsError = class _AlreadyExistsError extends BaseError { /** * @param {'note'|'remote'|'tag'|'branch'} noun * @param {string} where @@ -18086,12 +18102,12 @@ var AlreadyExistsError = class extends BaseError { super( `Failed to create ${noun} at ${where} because it already exists.${canForce ? ` (Hint: use 'force: true' parameter to overwrite existing ${noun}.)` : ""}` ); - this.code = this.name = AlreadyExistsError.code; + this.code = this.name = _AlreadyExistsError.code; this.data = { noun, where, canForce }; } }; AlreadyExistsError.code = "AlreadyExistsError"; -var AmbiguousError = class extends BaseError { +var AmbiguousError = class _AmbiguousError extends BaseError { /** * @param {'oids'|'refs'} nouns * @param {string} short @@ -18103,12 +18119,12 @@ var AmbiguousError = class extends BaseError { ", " )}). Use a longer abbreviation length to disambiguate them.` ); - this.code = this.name = AmbiguousError.code; + this.code = this.name = _AmbiguousError.code; this.data = { nouns, short, matches }; } }; AmbiguousError.code = "AmbiguousError"; -var CheckoutConflictError = class extends BaseError { +var CheckoutConflictError = class _CheckoutConflictError extends BaseError { /** * @param {string[]} filepaths */ @@ -18118,12 +18134,12 @@ var CheckoutConflictError = class extends BaseError { ", " )}` ); - this.code = this.name = CheckoutConflictError.code; + this.code = this.name = _CheckoutConflictError.code; this.data = { filepaths }; } }; CheckoutConflictError.code = "CheckoutConflictError"; -var CommitNotFetchedError = class extends BaseError { +var CommitNotFetchedError = class _CommitNotFetchedError extends BaseError { /** * @param {string} ref * @param {string} oid @@ -18132,40 +18148,40 @@ var CommitNotFetchedError = class extends BaseError { super( `Failed to checkout "${ref}" because commit ${oid} is not available locally. Do a git fetch to make the branch available locally.` ); - this.code = this.name = CommitNotFetchedError.code; + this.code = this.name = _CommitNotFetchedError.code; this.data = { ref, oid }; } }; CommitNotFetchedError.code = "CommitNotFetchedError"; -var EmptyServerResponseError = class extends BaseError { +var EmptyServerResponseError = class _EmptyServerResponseError extends BaseError { constructor() { super(`Empty response from git server.`); - this.code = this.name = EmptyServerResponseError.code; + this.code = this.name = _EmptyServerResponseError.code; this.data = {}; } }; EmptyServerResponseError.code = "EmptyServerResponseError"; -var FastForwardError = class extends BaseError { +var FastForwardError = class _FastForwardError extends BaseError { constructor() { super(`A simple fast-forward merge was not possible.`); - this.code = this.name = FastForwardError.code; + this.code = this.name = _FastForwardError.code; this.data = {}; } }; FastForwardError.code = "FastForwardError"; -var GitPushError = class extends BaseError { +var GitPushError = class _GitPushError extends BaseError { /** * @param {string} prettyDetails * @param {PushResult} result */ constructor(prettyDetails, result) { super(`One or more branches were not updated: ${prettyDetails}`); - this.code = this.name = GitPushError.code; + this.code = this.name = _GitPushError.code; this.data = { prettyDetails, result }; } }; GitPushError.code = "GitPushError"; -var HttpError = class extends BaseError { +var HttpError = class _HttpError extends BaseError { /** * @param {number} statusCode * @param {string} statusMessage @@ -18173,12 +18189,12 @@ var HttpError = class extends BaseError { */ constructor(statusCode, statusMessage, response) { super(`HTTP Error: ${statusCode} ${statusMessage}`); - this.code = this.name = HttpError.code; + this.code = this.name = _HttpError.code; this.data = { statusCode, statusMessage, response }; } }; HttpError.code = "HttpError"; -var InvalidFilepathError = class extends BaseError { +var InvalidFilepathError = class _InvalidFilepathError extends BaseError { /** * @param {'leading-slash'|'trailing-slash'|'directory'} [reason] */ @@ -18190,12 +18206,12 @@ var InvalidFilepathError = class extends BaseError { message = `"filepath" should not be a directory.`; } super(message); - this.code = this.name = InvalidFilepathError.code; + this.code = this.name = _InvalidFilepathError.code; this.data = { reason }; } }; InvalidFilepathError.code = "InvalidFilepathError"; -var InvalidRefNameError = class extends BaseError { +var InvalidRefNameError = class _InvalidRefNameError extends BaseError { /** * @param {string} ref * @param {string} suggestion @@ -18205,31 +18221,31 @@ var InvalidRefNameError = class extends BaseError { super( `"${ref}" would be an invalid git reference. (Hint: a valid alternative would be "${suggestion}".)` ); - this.code = this.name = InvalidRefNameError.code; + this.code = this.name = _InvalidRefNameError.code; this.data = { ref, suggestion }; } }; InvalidRefNameError.code = "InvalidRefNameError"; -var MaxDepthError = class extends BaseError { +var MaxDepthError = class _MaxDepthError extends BaseError { /** * @param {number} depth */ constructor(depth) { super(`Maximum search depth of ${depth} exceeded.`); - this.code = this.name = MaxDepthError.code; + this.code = this.name = _MaxDepthError.code; this.data = { depth }; } }; MaxDepthError.code = "MaxDepthError"; -var MergeNotSupportedError = class extends BaseError { +var MergeNotSupportedError = class _MergeNotSupportedError extends BaseError { constructor() { super(`Merges with conflicts are not supported yet.`); - this.code = this.name = MergeNotSupportedError.code; + this.code = this.name = _MergeNotSupportedError.code; this.data = {}; } }; MergeNotSupportedError.code = "MergeNotSupportedError"; -var MergeConflictError = class extends BaseError { +var MergeConflictError = class _MergeConflictError extends BaseError { /** * @param {Array} filepaths */ @@ -18237,12 +18253,12 @@ var MergeConflictError = class extends BaseError { super( `Automatic merge failed with one or more merge conflicts in the following files: ${filepaths.toString()}. Fix conflicts then commit the result.` ); - this.code = this.name = MergeConflictError.code; + this.code = this.name = _MergeConflictError.code; this.data = { filepaths }; } }; MergeConflictError.code = "MergeConflictError"; -var MissingNameError = class extends BaseError { +var MissingNameError = class _MissingNameError extends BaseError { /** * @param {'author'|'committer'|'tagger'} role */ @@ -18250,12 +18266,12 @@ var MissingNameError = class extends BaseError { super( `No name was provided for ${role} in the argument or in the .git/config file.` ); - this.code = this.name = MissingNameError.code; + this.code = this.name = _MissingNameError.code; this.data = { role }; } }; MissingNameError.code = "MissingNameError"; -var MissingParameterError = class extends BaseError { +var MissingParameterError = class _MissingParameterError extends BaseError { /** * @param {string} parameter */ @@ -18263,12 +18279,12 @@ var MissingParameterError = class extends BaseError { super( `The function requires a "${parameter}" parameter but none was provided.` ); - this.code = this.name = MissingParameterError.code; + this.code = this.name = _MissingParameterError.code; this.data = { parameter }; } }; MissingParameterError.code = "MissingParameterError"; -var MultipleGitError = class extends BaseError { +var MultipleGitError = class _MultipleGitError extends BaseError { /** * @param {Error[]} errors * @param {string} message @@ -18277,25 +18293,25 @@ var MultipleGitError = class extends BaseError { super( `There are multiple errors that were thrown by the method. Please refer to the "errors" property to see more` ); - this.code = this.name = MultipleGitError.code; + this.code = this.name = _MultipleGitError.code; this.data = { errors }; this.errors = errors; } }; MultipleGitError.code = "MultipleGitError"; -var ParseError = class extends BaseError { +var ParseError = class _ParseError extends BaseError { /** * @param {string} expected * @param {string} actual */ constructor(expected, actual) { super(`Expected "${expected}" but received "${actual}".`); - this.code = this.name = ParseError.code; + this.code = this.name = _ParseError.code; this.data = { expected, actual }; } }; ParseError.code = "ParseError"; -var PushRejectedError = class extends BaseError { +var PushRejectedError = class _PushRejectedError extends BaseError { /** * @param {'not-fast-forward'|'tag-exists'} reason */ @@ -18307,12 +18323,12 @@ var PushRejectedError = class extends BaseError { message = " because tag already exists"; } super(`Push rejected${message}. Use "force: true" to override.`); - this.code = this.name = PushRejectedError.code; + this.code = this.name = _PushRejectedError.code; this.data = { reason }; } }; PushRejectedError.code = "PushRejectedError"; -var RemoteCapabilityError = class extends BaseError { +var RemoteCapabilityError = class _RemoteCapabilityError extends BaseError { /** * @param {'shallow'|'deepen-since'|'deepen-not'|'deepen-relative'} capability * @param {'depth'|'since'|'exclude'|'relative'} parameter @@ -18321,12 +18337,12 @@ var RemoteCapabilityError = class extends BaseError { super( `Remote does not support the "${capability}" so the "${parameter}" parameter cannot be used.` ); - this.code = this.name = RemoteCapabilityError.code; + this.code = this.name = _RemoteCapabilityError.code; this.data = { capability, parameter }; } }; RemoteCapabilityError.code = "RemoteCapabilityError"; -var SmartHttpError = class extends BaseError { +var SmartHttpError = class _SmartHttpError extends BaseError { /** * @param {string} preview * @param {string} response @@ -18335,12 +18351,12 @@ var SmartHttpError = class extends BaseError { super( `Remote did not reply using the "smart" HTTP protocol. Expected "001e# service=git-upload-pack" but received: ${preview}` ); - this.code = this.name = SmartHttpError.code; + this.code = this.name = _SmartHttpError.code; this.data = { preview, response }; } }; SmartHttpError.code = "SmartHttpError"; -var UnknownTransportError = class extends BaseError { +var UnknownTransportError = class _UnknownTransportError extends BaseError { /** * @param {string} url * @param {string} transport @@ -18350,31 +18366,31 @@ var UnknownTransportError = class extends BaseError { super( `Git remote "${url}" uses an unrecognized transport protocol: "${transport}"` ); - this.code = this.name = UnknownTransportError.code; + this.code = this.name = _UnknownTransportError.code; this.data = { url, transport, suggestion }; } }; UnknownTransportError.code = "UnknownTransportError"; -var UrlParseError = class extends BaseError { +var UrlParseError = class _UrlParseError extends BaseError { /** * @param {string} url */ constructor(url) { super(`Cannot parse remote URL: "${url}"`); - this.code = this.name = UrlParseError.code; + this.code = this.name = _UrlParseError.code; this.data = { url }; } }; UrlParseError.code = "UrlParseError"; -var UserCanceledError = class extends BaseError { +var UserCanceledError = class _UserCanceledError extends BaseError { constructor() { super(`The operation was canceled.`); - this.code = this.name = UserCanceledError.code; + this.code = this.name = _UserCanceledError.code; this.data = {}; } }; UserCanceledError.code = "UserCanceledError"; -var IndexResetError = class extends BaseError { +var IndexResetError = class _IndexResetError extends BaseError { /** * @param {Array} filepaths */ @@ -18382,7 +18398,7 @@ var IndexResetError = class extends BaseError { super( `Could not merge index: Entry for '${filepath}' is not up to date. Either reset the index entry to HEAD, or stage your unstaged chages.` ); - this.code = this.name = IndexResetError.code; + this.code = this.name = _IndexResetError.code; this.data = { filepath }; } }; @@ -18469,14 +18485,14 @@ function parseTimezoneOffset(offset) { function negateExceptForZero$1(n) { return n === 0 ? n : -n; } -var GitAnnotatedTag = class { +var GitAnnotatedTag = class _GitAnnotatedTag { constructor(tag2) { if (typeof tag2 === "string") { this._tag = tag2; } else if (Buffer.isBuffer(tag2)) { this._tag = tag2.toString("utf8"); } else if (typeof tag2 === "object") { - this._tag = GitAnnotatedTag.render(tag2); + this._tag = _GitAnnotatedTag.render(tag2); } else { throw new InternalError( "invalid type passed to GitAnnotatedTag constructor" @@ -18484,7 +18500,7 @@ var GitAnnotatedTag = class { } } static from(tag2) { - return new GitAnnotatedTag(tag2); + return new _GitAnnotatedTag(tag2); } static render(obj) { return `object ${obj.object} @@ -18565,7 +18581,7 @@ ${obj.gpgsig ? obj.gpgsig : ""}`; let { signature } = await sign({ payload, secretKey }); signature = normalizeNewlines(signature); const signedTag = payload + signature; - return GitAnnotatedTag.from(signedTag); + return _GitAnnotatedTag.from(signedTag); } }; function indent(str) { @@ -18574,28 +18590,28 @@ function indent(str) { function outdent(str) { return str.split("\n").map((x) => x.replace(/^ /, "")).join("\n"); } -var GitCommit = class { +var GitCommit = class _GitCommit { constructor(commit2) { if (typeof commit2 === "string") { this._commit = commit2; } else if (Buffer.isBuffer(commit2)) { this._commit = commit2.toString("utf8"); } else if (typeof commit2 === "object") { - this._commit = GitCommit.render(commit2); + this._commit = _GitCommit.render(commit2); } else { throw new InternalError("invalid type passed to GitCommit constructor"); } } static fromPayloadSignature({ payload, signature }) { - const headers = GitCommit.justHeaders(payload); - const message = GitCommit.justMessage(payload); + const headers = _GitCommit.justHeaders(payload); + const message = _GitCommit.justMessage(payload); const commit2 = normalizeNewlines( headers + "\ngpgsig" + indent(signature) + "\n" + message ); - return new GitCommit(commit2); + return new _GitCommit(commit2); } static from(commit2) { - return new GitCommit(commit2); + return new _GitCommit(commit2); } toObject() { return Buffer.from(this._commit, "utf8"); @@ -18606,7 +18622,7 @@ var GitCommit = class { } // Todo: allow setting the headers and message message() { - return GitCommit.justMessage(this._commit); + return _GitCommit.justMessage(this._commit); } parse() { return Object.assign({ message: this.message() }, this.headers()); @@ -18618,7 +18634,7 @@ var GitCommit = class { return commit2.slice(0, commit2.indexOf("\n\n")); } parseHeaders() { - const headers = GitCommit.justHeaders(this._commit).split("\n"); + const headers = _GitCommit.justHeaders(this._commit).split("\n"); const hs = []; for (const h of headers) { if (h[0] === " ") { @@ -18677,7 +18693,7 @@ var GitCommit = class { return headers; } static render(obj) { - return GitCommit.renderHeaders(obj) + "\n" + normalizeNewlines(obj.message); + return _GitCommit.renderHeaders(obj) + "\n" + normalizeNewlines(obj.message); } render() { return this._commit; @@ -18701,12 +18717,12 @@ var GitCommit = class { } static async sign(commit2, sign, secretKey) { const payload = commit2.withoutSignature(); - const message = GitCommit.justMessage(commit2._commit); + const message = _GitCommit.justMessage(commit2._commit); let { signature } = await sign({ payload, secretKey }); signature = normalizeNewlines(signature); - const headers = GitCommit.justHeaders(commit2._commit); + const headers = _GitCommit.justHeaders(commit2._commit); const signedCommit = headers + "\ngpgsig" + indent(signature) + "\n" + message; - return GitCommit.from(signedCommit); + return _GitCommit.from(signedCommit); } }; async function resolveTree({ fs, cache, gitdir, oid }) { @@ -19106,47 +19122,72 @@ async function rmRecursive(fs, filepath) { await fs.rmdir(filepath); } } +function isPromiseLike(obj) { + return isObject(obj) && isFunction(obj.then) && isFunction(obj.catch); +} +function isObject(obj) { + return obj && typeof obj === "object"; +} +function isFunction(obj) { + return typeof obj === "function"; +} +function isPromiseFs(fs) { + const test = (targetFs) => { + try { + return targetFs.readFile().catch((e) => e); + } catch (e) { + return e; + } + }; + return isPromiseLike(test(fs)); +} +var commands = [ + "readFile", + "writeFile", + "mkdir", + "rmdir", + "unlink", + "stat", + "lstat", + "readdir", + "readlink", + "symlink" +]; +function bindFs(target, fs) { + if (isPromiseFs(fs)) { + for (const command of commands) { + target[`_${command}`] = fs[command].bind(fs); + } + } else { + for (const command of commands) { + target[`_${command}`] = (0, import_pify.default)(fs[command].bind(fs)); + } + } + if (isPromiseFs(fs)) { + if (fs.rm) + target._rm = fs.rm.bind(fs); + else if (fs.rmdir.length > 1) + target._rm = fs.rmdir.bind(fs); + else + target._rm = rmRecursive.bind(null, target); + } else { + if (fs.rm) + target._rm = (0, import_pify.default)(fs.rm.bind(fs)); + else if (fs.rmdir.length > 2) + target._rm = (0, import_pify.default)(fs.rmdir.bind(fs)); + else + target._rm = rmRecursive.bind(null, target); + } +} var FileSystem = class { constructor(fs) { if (typeof fs._original_unwrapped_fs !== "undefined") return fs; const promises = Object.getOwnPropertyDescriptor(fs, "promises"); if (promises && promises.enumerable) { - this._readFile = fs.promises.readFile.bind(fs.promises); - this._writeFile = fs.promises.writeFile.bind(fs.promises); - this._mkdir = fs.promises.mkdir.bind(fs.promises); - if (fs.promises.rm) { - this._rm = fs.promises.rm.bind(fs.promises); - } else if (fs.promises.rmdir.length > 1) { - this._rm = fs.promises.rmdir.bind(fs.promises); - } else { - this._rm = rmRecursive.bind(null, this); - } - this._rmdir = fs.promises.rmdir.bind(fs.promises); - this._unlink = fs.promises.unlink.bind(fs.promises); - this._stat = fs.promises.stat.bind(fs.promises); - this._lstat = fs.promises.lstat.bind(fs.promises); - this._readdir = fs.promises.readdir.bind(fs.promises); - this._readlink = fs.promises.readlink.bind(fs.promises); - this._symlink = fs.promises.symlink.bind(fs.promises); + bindFs(this, fs.promises); } else { - this._readFile = (0, import_pify.default)(fs.readFile.bind(fs)); - this._writeFile = (0, import_pify.default)(fs.writeFile.bind(fs)); - this._mkdir = (0, import_pify.default)(fs.mkdir.bind(fs)); - if (fs.rm) { - this._rm = (0, import_pify.default)(fs.rm.bind(fs)); - } else if (fs.rmdir.length > 2) { - this._rm = (0, import_pify.default)(fs.rmdir.bind(fs)); - } else { - this._rm = rmRecursive.bind(null, this); - } - this._rmdir = (0, import_pify.default)(fs.rmdir.bind(fs)); - this._unlink = (0, import_pify.default)(fs.unlink.bind(fs)); - this._stat = (0, import_pify.default)(fs.stat.bind(fs)); - this._lstat = (0, import_pify.default)(fs.lstat.bind(fs)); - this._readdir = (0, import_pify.default)(fs.readdir.bind(fs)); - this._readlink = (0, import_pify.default)(fs.readlink.bind(fs)); - this._symlink = (0, import_pify.default)(fs.symlink.bind(fs)); + bindFs(this, fs); } this._original_unwrapped_fs = fs; } @@ -19520,7 +19561,8 @@ async function add({ gitdir = join(dir, ".git"), filepath, cache = {}, - force = false + force = false, + parallel = true }) { try { assertParameter("fs", _fs); @@ -19529,14 +19571,30 @@ async function add({ assertParameter("filepath", filepath); const fs = new FileSystem(_fs); await GitIndexManager.acquire({ fs, gitdir, cache }, async (index2) => { - return addToIndex({ dir, gitdir, fs, filepath, index: index2, force }); + return addToIndex({ + dir, + gitdir, + fs, + filepath, + index: index2, + force, + parallel + }); }); } catch (err) { err.caller = "git.add"; throw err; } } -async function addToIndex({ dir, gitdir, fs, filepath, index: index2, force }) { +async function addToIndex({ + dir, + gitdir, + fs, + filepath, + index: index2, + force, + parallel +}) { filepath = Array.isArray(filepath) ? filepath : [filepath]; const promises = filepath.map(async (currentFilepath) => { if (!force) { @@ -19554,17 +19612,32 @@ async function addToIndex({ dir, gitdir, fs, filepath, index: index2, force }) { throw new NotFoundError(currentFilepath); if (stats.isDirectory()) { const children2 = await fs.readdir(join(dir, currentFilepath)); - const promises2 = children2.map( - (child) => addToIndex({ - dir, - gitdir, - fs, - filepath: [join(currentFilepath, child)], - index: index2, - force - }) - ); - await Promise.all(promises2); + if (parallel) { + const promises2 = children2.map( + (child) => addToIndex({ + dir, + gitdir, + fs, + filepath: [join(currentFilepath, child)], + index: index2, + force, + parallel + }) + ); + await Promise.all(promises2); + } else { + for (const child of children2) { + await addToIndex({ + dir, + gitdir, + fs, + filepath: [join(currentFilepath, child)], + index: index2, + force, + parallel + }); + } + } } else { const object = stats.isSymbolicLink() ? await fs.readlink(join(dir, currentFilepath)).then(posixifyPathBuffer) : await fs.read(join(dir, currentFilepath)); if (object === null) @@ -21101,8 +21174,8 @@ function filterCapabilities(server, client) { } var pkg = { name: "isomorphic-git", - version: "1.23.0", - agent: "git/isomorphic-git@1.23.0" + version: "1.24.5", + agent: "git/isomorphic-git@1.24.5" }; var FIFO = class { constructor() { @@ -21884,6 +21957,7 @@ async function currentBranch({ } } async function _deleteBranch({ fs, gitdir, ref }) { + ref = ref.startsWith("refs/heads/") ? ref : `refs/heads/${ref}`; const exist = await GitRefManager.exists({ fs, gitdir, ref }); if (!exist) { throw new NotFoundError(ref); @@ -22001,15 +22075,19 @@ async function expandOidPacked({ } async function _expandOid({ fs, cache, gitdir, oid: short }) { const getExternalRefDelta = (oid) => _readObject({ fs, cache, gitdir, oid }); - const results1 = await expandOidLoose({ fs, gitdir, oid: short }); - const results2 = await expandOidPacked({ + const results = await expandOidLoose({ fs, gitdir, oid: short }); + const packedOids = await expandOidPacked({ fs, cache, gitdir, oid: short, getExternalRefDelta }); - const results = results1.concat(results2); + for (const packedOid of packedOids) { + if (results.indexOf(packedOid) === -1) { + results.push(packedOid); + } + } if (results.length === 1) { return results[0]; } @@ -24547,7 +24625,13 @@ async function _renameBranch({ }); await GitRefManager.writeRef({ fs, gitdir, ref: fullnewref, value }); await GitRefManager.deleteRef({ fs, gitdir, ref: fulloldref }); - if (checkout2) { + const fullCurrentBranchRef = await _currentBranch({ + fs, + gitdir, + fullname: true + }); + const isCurrentBranch = fullCurrentBranchRef === fulloldref; + if (checkout2 || isCurrentBranch) { await GitRefManager.writeSymbolicRef({ fs, gitdir, @@ -25333,7 +25417,7 @@ var import_obsidian4 = require("obsidian"); var path = __toESM(require("path")); var import_path = require("path"); -// node_modules/.pnpm/github.com+Vinzent03+git-js@6b9a2d899bc8256e38a1d6f0b8a88116ba2bf56a_supports-color@7.2.0/node_modules/simple-git/dist/esm/index.js +// node_modules/.pnpm/github.com+Vinzent03+git-js@6b9a2d899bc8256e38a1d6f0b8a88116ba2bf56a_supports-color@9.4.0_rdkutdaeyye3o67thmklazfzta/node_modules/simple-git/dist/esm/index.js init_polyfill_buffer(); var import_file_exists = __toESM(require_dist(), 1); var import_debug = __toESM(require_browser(), 1); @@ -25348,15 +25432,15 @@ var __getOwnPropNames2 = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp2 = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; -var __defNormalProp = (obj, key2, value) => key2 in obj ? __defProp2(obj, key2, { enumerable: true, configurable: true, writable: true, value }) : obj[key2] = value; +var __defNormalProp2 = (obj, key2, value) => key2 in obj ? __defProp2(obj, key2, { enumerable: true, configurable: true, writable: true, value }) : obj[key2] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp2.call(b, prop)) - __defNormalProp(a, prop, b[prop]); + __defNormalProp2(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) - __defNormalProp(a, prop, b[prop]); + __defNormalProp2(a, prop, b[prop]); } return a; }; @@ -25684,19 +25768,19 @@ var init_simple_git_options = __esm2({ }; } }); -function appendTaskOptions(options, commands = []) { +function appendTaskOptions(options, commands2 = []) { if (!filterPlainObject(options)) { - return commands; + return commands2; } - return Object.keys(options).reduce((commands2, key2) => { + return Object.keys(options).reduce((commands22, key2) => { const value = options[key2]; if (filterPrimitives(value, ["boolean"])) { - commands2.push(key2 + "=" + value); + commands22.push(key2 + "=" + value); } else { - commands2.push(key2); + commands22.push(key2); } - return commands2; - }, commands); + return commands22; + }, commands2); } function getTrailingOptions(args, initialPrimitive = 0, objectOnly = false) { const command = []; @@ -25821,18 +25905,18 @@ function checkIsRepoTask(action) { case "root": return checkIsRepoRootTask(); } - const commands = ["rev-parse", "--is-inside-work-tree"]; + const commands2 = ["rev-parse", "--is-inside-work-tree"]; return { - commands, + commands: commands2, format: "utf-8", onError, parser }; } function checkIsRepoRootTask() { - const commands = ["rev-parse", "--git-dir"]; + const commands2 = ["rev-parse", "--git-dir"]; return { - commands, + commands: commands2, format: "utf-8", onError, parser(path2) { @@ -25841,9 +25925,9 @@ function checkIsRepoRootTask() { }; } function checkIsBareRepoTask() { - const commands = ["rev-parse", "--is-bare-repository"]; + const commands2 = ["rev-parse", "--is-bare-repository"]; return { - commands, + commands: commands2, format: "utf-8", onError, parser @@ -25931,18 +26015,18 @@ function configurationErrorTask(error) { } }; } -function straightThroughStringTask(commands, trimmed2 = false) { +function straightThroughStringTask(commands2, trimmed2 = false) { return { - commands, + commands: commands2, format: "utf-8", parser(text2) { return trimmed2 ? String(text2).trim() : text2; } }; } -function straightThroughBufferTask(commands) { +function straightThroughBufferTask(commands2) { return { - commands, + commands: commands2, format: "buffer", parser(buffer2) { return buffer2; @@ -25987,9 +26071,9 @@ function cleanWithOptionsTask(mode, customArgs) { return cleanTask(cleanMode, options); } function cleanTask(mode, customArgs) { - const commands = ["clean", `-${mode}`, ...customArgs]; + const commands2 = ["clean", `-${mode}`, ...customArgs]; return { - commands, + commands: commands2, format: "utf-8", parser(text2) { return cleanSummaryParser(mode === "n", text2); @@ -26150,13 +26234,13 @@ function asConfigScope(scope, fallback) { return fallback; } function addConfigTask(key2, value, append22, scope) { - const commands = ["config", `--${scope}`]; + const commands2 = ["config", `--${scope}`]; if (append22) { - commands.push("--add"); + commands2.push("--add"); } - commands.push(key2, value); + commands2.push(key2, value); return { - commands, + commands: commands2, format: "utf-8", parser(text2) { return text2; @@ -26164,12 +26248,12 @@ function addConfigTask(key2, value, append22, scope) { }; } function getConfigTask(key2, scope) { - const commands = ["config", "--null", "--show-origin", "--get-all", key2]; + const commands2 = ["config", "--null", "--show-origin", "--get-all", key2]; if (scope) { - commands.splice(1, 0, `--${scope}`); + commands2.splice(1, 0, `--${scope}`); } return { - commands, + commands: commands2, format: "utf-8", parser(text2) { return configGetParser(text2, key2); @@ -26177,12 +26261,12 @@ function getConfigTask(key2, scope) { }; } function listConfigTask(scope) { - const commands = ["config", "--list", "--show-origin", "--null"]; + const commands2 = ["config", "--list", "--show-origin", "--null"]; if (scope) { - commands.push(`--${scope}`); + commands2.push(`--${scope}`); } return { - commands, + commands: commands2, format: "utf-8", parser(text2) { return configListParser(text2); @@ -26253,9 +26337,9 @@ function grep_default() { if (typeof searchTerm === "string") { searchTerm = grepQueryBuilder().param(searchTerm); } - const commands = ["grep", "--null", "-n", "--full-name", ...options, ...searchTerm]; + const commands2 = ["grep", "--null", "-n", "--full-name", ...options, ...searchTerm]; return this._runTask({ - commands, + commands: commands2, format: "utf-8", parser(stdOut) { return parseGrep(stdOut); @@ -26301,12 +26385,12 @@ __export2(reset_exports, { resetTask: () => resetTask }); function resetTask(mode, customArgs) { - const commands = ["reset"]; + const commands2 = ["reset"]; if (isValidResetMode(mode)) { - commands.push(`--${mode}`); + commands2.push(`--${mode}`); } - commands.push(...customArgs); - return straightThroughStringTask(commands); + commands2.push(...customArgs); + return straightThroughStringTask(commands2); } function getResetMode(mode) { if (isValidResetMode(mode)) { @@ -26463,10 +26547,10 @@ var init_tasks_pending_queue = __esm2({ TasksPendingQueue.counter = 0; } }); -function pluginContext(task, commands) { +function pluginContext(task, commands2) { return { method: first(task.commands) || "", - commands + commands: commands2 }; } function onErrorReceived(target, logger) { @@ -26725,11 +26809,11 @@ var init_change_working_directory = __esm2({ } }); function checkoutTask(args) { - const commands = ["checkout", ...args]; - if (commands[1] === "-b" && commands.includes("-B")) { - commands[1] = remove2(commands, "-B"); + const commands2 = ["checkout", ...args]; + if (commands2[1] === "-b" && commands2.includes("-B")) { + commands2[1] = remove2(commands2, "-B"); } - return straightThroughStringTask(commands); + return straightThroughStringTask(commands2); } function checkout_default() { return { @@ -26803,7 +26887,7 @@ var init_parse_commit = __esm2({ } }); function commitTask(message, files, customArgs) { - const commands = [ + const commands2 = [ "-c", "core.abbrev=40", "commit", @@ -26812,7 +26896,7 @@ function commitTask(message, files, customArgs) { ...customArgs ]; return { - commands, + commands: commands2, format: "utf-8", parser: parseCommitResult }; @@ -26837,11 +26921,11 @@ var init_commit = __esm2({ } }); function hashObjectTask(filePath, write) { - const commands = ["hash-object", filePath]; + const commands2 = ["hash-object", filePath]; if (write) { - commands.push("-w"); + commands2.push("-w"); } - return straightThroughStringTask(commands, true); + return straightThroughStringTask(commands2, true); } var init_hash_object = __esm2({ "src/lib/tasks/hash-object.ts"() { @@ -26889,15 +26973,15 @@ function hasBareCommand(command) { return command.includes(bareCommand); } function initTask(bare = false, path2, customArgs) { - const commands = ["init", ...customArgs]; - if (bare && !hasBareCommand(commands)) { - commands.splice(1, 0, bareCommand); + const commands2 = ["init", ...customArgs]; + if (bare && !hasBareCommand(commands2)) { + commands2.splice(1, 0, bareCommand); } return { - commands, + commands: commands2, format: "utf-8", parser(text2) { - return parseInit(commands.includes("--bare"), path2, text2); + return parseInit(commands2.includes("--bare"), path2, text2); } }; } @@ -27099,14 +27183,14 @@ __export2(diff_exports, { }); function diffSummaryTask(customArgs) { let logFormat = logFormatFromCommand(customArgs); - const commands = ["diff"]; + const commands2 = ["diff"]; if (logFormat === "") { logFormat = "--stat"; - commands.push("--stat=4096"); + commands2.push("--stat=4096"); } - commands.push(...customArgs); - return validateLogFormatConfig(commands) || { - commands, + commands2.push(...customArgs); + return validateLogFormatConfig(commands2) || { + commands: commands2, format: "utf-8", parser: getDiffParser(logFormat) }; @@ -27569,18 +27653,18 @@ function pushTagsTask(ref = {}, customArgs) { return pushTask(ref, customArgs); } function pushTask(ref = {}, customArgs) { - const commands = ["push", ...customArgs]; + const commands2 = ["push", ...customArgs]; if (ref.branch) { - commands.splice(1, 0, ref.branch); + commands2.splice(1, 0, ref.branch); } if (ref.remote) { - commands.splice(1, 0, ref.remote); + commands2.splice(1, 0, ref.remote); } - remove2(commands, "-v"); - append(commands, "--verbose"); - append(commands, "--porcelain"); + remove2(commands2, "-v"); + append(commands2, "--verbose"); + append(commands2, "--porcelain"); return { - commands, + commands: commands2, format: "utf-8", parser: parsePushResult }; @@ -27753,7 +27837,7 @@ var init_StatusSummary = __esm2({ } }); function statusTask(customArgs) { - const commands = [ + const commands2 = [ "status", "--porcelain", "-b", @@ -27763,7 +27847,7 @@ function statusTask(customArgs) { ]; return { format: "utf-8", - commands, + commands: commands2, parser(text2) { return parseStatusSummary(text2); } @@ -28100,22 +28184,22 @@ __export2(branch_exports, { deleteBranchTask: () => deleteBranchTask, deleteBranchesTask: () => deleteBranchesTask }); -function containsDeleteBranchCommand(commands) { +function containsDeleteBranchCommand(commands2) { const deleteCommands = ["-d", "-D", "--delete"]; - return commands.some((command) => deleteCommands.includes(command)); + return commands2.some((command) => deleteCommands.includes(command)); } function branchTask(customArgs) { const isDelete = containsDeleteBranchCommand(customArgs); - const commands = ["branch", ...customArgs]; - if (commands.length === 1) { - commands.push("-a"); + const commands2 = ["branch", ...customArgs]; + if (commands2.length === 1) { + commands2.push("-a"); } - if (!commands.includes("-v")) { - commands.splice(1, 0, "-v"); + if (!commands2.includes("-v")) { + commands2.splice(1, 0, "-v"); } return { format: "utf-8", - commands, + commands: commands2, parser(stdOut, stdErr) { if (isDelete) { return parseBranchDeletions(stdOut, stdErr).all[0]; @@ -28204,14 +28288,14 @@ function disallowedCommand(command) { return /^--upload-pack(=|$)/.test(command); } function cloneTask(repo, directory, customArgs) { - const commands = ["clone", ...customArgs]; - filterString(repo) && commands.push(repo); - filterString(directory) && commands.push(directory); - const banned = commands.find(disallowedCommand); + const commands2 = ["clone", ...customArgs]; + filterString(repo) && commands2.push(repo); + filterString(directory) && commands2.push(directory); + const banned = commands2.find(disallowedCommand); if (banned) { return configurationErrorTask(`git.fetch: potential exploit argument blocked.`); } - return straightThroughStringTask(commands); + return straightThroughStringTask(commands2); } function cloneMirrorTask(repo, directory, customArgs) { append(customArgs, "--mirror"); @@ -28278,16 +28362,16 @@ function disallowedCommand2(command) { return /^--upload-pack(=|$)/.test(command); } function fetchTask(remote, branch2, customArgs) { - const commands = ["fetch", ...customArgs]; + const commands2 = ["fetch", ...customArgs]; if (remote && branch2) { - commands.push(remote, branch2); + commands2.push(remote, branch2); } - const banned = commands.find(disallowedCommand2); + const banned = commands2.find(disallowedCommand2); if (banned) { return configurationErrorTask(`git.fetch: potential exploit argument blocked.`); } return { - commands, + commands: commands2, format: "utf-8", parser: parseFetchResult }; @@ -28334,12 +28418,12 @@ __export2(pull_exports, { pullTask: () => pullTask }); function pullTask(remote, branch2, customArgs) { - const commands = ["pull", ...customArgs]; + const commands2 = ["pull", ...customArgs]; if (remote && branch2) { - commands.splice(1, 0, remote, branch2); + commands2.splice(1, 0, remote, branch2); } return { - commands, + commands: commands2, format: "utf-8", parser(stdOut, stdErr) { return parsePullResult(stdOut, stdErr); @@ -28400,29 +28484,29 @@ function addRemoteTask(remoteName, remoteRepo, customArgs = []) { return straightThroughStringTask(["remote", "add", ...customArgs, remoteName, remoteRepo]); } function getRemotesTask(verbose) { - const commands = ["remote"]; + const commands2 = ["remote"]; if (verbose) { - commands.push("-v"); + commands2.push("-v"); } return { - commands, + commands: commands2, format: "utf-8", parser: verbose ? parseGetRemotesVerbose : parseGetRemotes }; } function listRemotesTask(customArgs = []) { - const commands = [...customArgs]; - if (commands[0] !== "ls-remote") { - commands.unshift("ls-remote"); + const commands2 = [...customArgs]; + if (commands2[0] !== "ls-remote") { + commands2.unshift("ls-remote"); } - return straightThroughStringTask(commands); + return straightThroughStringTask(commands2); } function remoteTask(customArgs = []) { - const commands = [...customArgs]; - if (commands[0] !== "remote") { - commands.unshift("remote"); + const commands2 = [...customArgs]; + if (commands2[0] !== "remote") { + commands2.unshift("remote"); } - return straightThroughStringTask(commands); + return straightThroughStringTask(commands2); } function removeRemoteTask(remoteName) { return straightThroughStringTask(["remote", "remove", remoteName]); @@ -28439,10 +28523,10 @@ __export2(stash_list_exports, { }); function stashListTask(opt = {}, customArgs) { const options = parseLogOptions(opt); - const commands = ["stash", "list", ...options.commands, ...customArgs]; - const parser3 = createListLogSummaryParser(options.splitter, options.fields, logFormatFromCommand(commands)); - return validateLogFormatConfig(commands) || { - commands, + const commands2 = ["stash", "list", ...options.commands, ...customArgs]; + const parser3 = createListLogSummaryParser(options.splitter, options.fields, logFormatFromCommand(commands2)); + return validateLogFormatConfig(commands2) || { + commands: commands2, format: "utf-8", parser: parser3 }; @@ -28469,11 +28553,11 @@ function initSubModuleTask(customArgs) { return subModuleTask(["init", ...customArgs]); } function subModuleTask(customArgs) { - const commands = [...customArgs]; - if (commands[0] !== "submodule") { - commands.unshift("submodule"); + const commands2 = [...customArgs]; + if (commands2[0] !== "submodule") { + commands2.unshift("submodule"); } - return straightThroughStringTask(commands); + return straightThroughStringTask(commands2); } function updateSubModuleTask(customArgs) { return subModuleTask(["update", ...customArgs]); @@ -28713,9 +28797,9 @@ var require_git = __commonJS2({ Git2.prototype.branchLocal = function(then) { return this._runTask(branchLocalTask2(), trailingFunctionArgument2(arguments)); }; - Git2.prototype.raw = function(commands) { - const createRestCommands = !Array.isArray(commands); - const command = [].slice.call(createRestCommands ? arguments : commands, 0); + Git2.prototype.raw = function(commands2) { + const createRestCommands = !Array.isArray(commands2); + const command = [].slice.call(createRestCommands ? arguments : commands2, 0); for (let i = 0; i < command.length && createRestCommands; i++) { if (!filterPrimitives2(command[i])) { command.splice(i, command.length - i); @@ -28807,8 +28891,8 @@ var require_git = __commonJS2({ return this._runTask(task, trailingFunctionArgument2(arguments)); }; Git2.prototype.revparse = function() { - const commands = ["rev-parse", ...getTrailingOptions2(arguments, true)]; - return this._runTask(straightThroughStringTask2(commands, true), trailingFunctionArgument2(arguments)); + const commands2 = ["rev-parse", ...getTrailingOptions2(arguments, true)]; + return this._runTask(straightThroughStringTask2(commands2, true), trailingFunctionArgument2(arguments)); }; Git2.prototype.show = function(options, then) { return this._runTask(straightThroughStringTask2(["show", ...getTrailingOptions2(arguments, 1)]), trailingFunctionArgument2(arguments)); @@ -29879,21 +29963,21 @@ var SimpleGit = class extends GitManager { (err) => this.onError(err) ); return res.all.map((e) => { - var _a2, _b; + var _a2, _b, _c, _d; return { ...e, refs: e.refs.split(", "), diff: { ...e.diff, - files: e.diff.files.map((f) => ({ + files: (_b = (_a2 = e.diff) == null ? void 0 : _a2.files.map((f) => ({ ...f, status: f.status, path: f.file, hash: e.hash, vault_path: this.getVaultPath(f.file) - })) + }))) != null ? _b : [] }, - fileName: (_b = (_a2 = e.diff) == null ? void 0 : _a2.files.first()) == null ? void 0 : _b.file + fileName: (_d = (_c = e.diff) == null ? void 0 : _c.files.first()) == null ? void 0 : _d.file }; }); } @@ -31065,6 +31149,7 @@ var IsomorphicGit = class extends GitManager { "110": "DA", // Technically, two files: first one is deleted "D " and second one is untracked "??" "111": " ", + "113": "MM", "120": "DA", // Same as "110" "121": " M", @@ -32095,8 +32180,8 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { }) ); if (!plugin.settings.setLastSaveToLastCommit) - new import_obsidian8.Setting(containerEl).setName(`Auto Backup after file change`).setDesc( - `If turned on, do auto ${commitOrBackup} every ${plugin.settings.autoSaveInterval} minutes after last change. This also prevents auto ${commitOrBackup} while editing a file. If turned off, it's independent from the last change.` + new import_obsidian8.Setting(containerEl).setName(`Auto Backup after stop editing any file`).setDesc( + `Requires the ${commitOrBackup} interval not to be 0. If turned on, do auto ${commitOrBackup} every ${plugin.settings.autoSaveInterval} minutes after stop editing any file. This also prevents auto ${commitOrBackup} while editing a file. If turned off, it's independent from the last change.` ).addToggle( (toggle) => toggle.setValue(plugin.settings.autoBackupAfterFileChange).onChange((value) => { plugin.settings.autoBackupAfterFileChange = value; @@ -32181,8 +32266,8 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { }) ); new import_obsidian8.Setting(containerEl).setName("Commit message on auto backup/commit").setDesc( - "Available placeholders: {{date}} (see below), {{hostname}} (see below) and {{numFiles}} (number of changed files in the commit)" - ).addText( + "Available placeholders: {{date}} (see below), {{hostname}} (see below), {{numFiles}} (number of changed files in the commit) and {{files}} (changed files in commit message)" + ).addTextArea( (text2) => text2.setPlaceholder("vault backup: {{date}}").setValue(plugin.settings.autoCommitMessage).onChange((value) => { plugin.settings.autoCommitMessage = value; plugin.saveSettings(); @@ -32191,8 +32276,8 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { containerEl.createEl("br"); containerEl.createEl("h3", { text: "Commit message" }); new import_obsidian8.Setting(containerEl).setName("Commit message on manual backup/commit").setDesc( - "Available placeholders: {{date}} (see below), {{hostname}} (see below) and {{numFiles}} (number of changed files in the commit)" - ).addText( + "Available placeholders: {{date}} (see below), {{hostname}} (see below), {{numFiles}} (number of changed files in the commit) and {{files}} (changed files in commit message)" + ).addTextArea( (text2) => text2.setPlaceholder("vault backup: {{date}}").setValue( plugin.settings.commitMessage ? plugin.settings.commitMessage : "" ).onChange((value) => { @@ -34256,13 +34341,13 @@ var LocalStorageSettings = class { // src/ui/diff/diffView.ts init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/diff2html.js +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/diff2html.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/diff-parser.js +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/diff-parser.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/types.js +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/types.js init_polyfill_buffer(); var LineType; (function(LineType2) { @@ -34284,7 +34369,7 @@ var DiffStyleType = { CHAR: "char" }; -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/utils.js +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/utils.js init_polyfill_buffer(); var specials = [ "-", @@ -34312,8 +34397,8 @@ function unifyPath(path2) { return path2 ? path2.replace(/\\/g, "/") : path2; } function hashCode(text2) { - var i, chr, len; - var hash2 = 0; + let i, chr, len; + let hash2 = 0; for (i = 0, len = text2.length; i < len; i++) { chr = text2.charCodeAt(i); hash2 = (hash2 << 5) - hash2 + chr; @@ -34322,36 +34407,21 @@ function hashCode(text2) { return hash2; } -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/diff-parser.js -var __spreadArray = function(to, from, pack) { - if (pack || arguments.length === 2) - for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) - ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); -}; +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/diff-parser.js function getExtension(filename, language) { - var filenameParts = filename.split("."); + const filenameParts = filename.split("."); return filenameParts.length > 1 ? filenameParts[filenameParts.length - 1] : language; } function startsWithAny(str, prefixes) { - return prefixes.reduce(function(startsWith, prefix) { - return startsWith || str.startsWith(prefix); - }, false); + return prefixes.reduce((startsWith, prefix) => startsWith || str.startsWith(prefix), false); } var baseDiffFilenamePrefixes = ["a/", "b/", "i/", "w/", "c/", "o/"]; function getFilename(line, linePrefix, extraPrefix) { - var prefixes = extraPrefix !== void 0 ? __spreadArray(__spreadArray([], baseDiffFilenamePrefixes, true), [extraPrefix], false) : baseDiffFilenamePrefixes; - var FilenameRegExp = linePrefix ? new RegExp("^".concat(escapeForRegExp(linePrefix), ' "?(.+?)"?$')) : new RegExp('^"?(.+?)"?$'); - var _a2 = FilenameRegExp.exec(line) || [], _b = _a2[1], filename = _b === void 0 ? "" : _b; - var matchingPrefix = prefixes.find(function(p) { - return filename.indexOf(p) === 0; - }); - var fnameWithoutPrefix = matchingPrefix ? filename.slice(matchingPrefix.length) : filename; + const prefixes = extraPrefix !== void 0 ? [...baseDiffFilenamePrefixes, extraPrefix] : baseDiffFilenamePrefixes; + const FilenameRegExp = linePrefix ? new RegExp(`^${escapeForRegExp(linePrefix)} "?(.+?)"?$`) : new RegExp('^"?(.+?)"?$'); + const [, filename = ""] = FilenameRegExp.exec(line) || []; + const matchingPrefix = prefixes.find((p) => filename.indexOf(p) === 0); + const fnameWithoutPrefix = matchingPrefix ? filename.slice(matchingPrefix.length) : filename; return fnameWithoutPrefix.replace(/\s+\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:\.\d+)? [+-]\d{4}.*$/, ""); } function getSrcFilename(line, srcPrefix) { @@ -34360,39 +34430,36 @@ function getSrcFilename(line, srcPrefix) { function getDstFilename(line, dstPrefix) { return getFilename(line, "+++", dstPrefix); } -function parse(diffInput, config) { - if (config === void 0) { - config = {}; - } - var files = []; - var currentFile = null; - var currentBlock = null; - var oldLine = null; - var oldLine2 = null; - var newLine = null; - var possibleOldName = null; - var possibleNewName = null; - var oldFileNameHeader = "--- "; - var newFileNameHeader = "+++ "; - var hunkHeaderPrefix = "@@"; - var oldMode = /^old mode (\d{6})/; - var newMode = /^new mode (\d{6})/; - var deletedFileMode = /^deleted file mode (\d{6})/; - var newFileMode = /^new file mode (\d{6})/; - var copyFrom = /^copy from "?(.+)"?/; - var copyTo = /^copy to "?(.+)"?/; - var renameFrom = /^rename from "?(.+)"?/; - var renameTo = /^rename to "?(.+)"?/; - var similarityIndex = /^similarity index (\d+)%/; - var dissimilarityIndex = /^dissimilarity index (\d+)%/; - var index2 = /^index ([\da-z]+)\.\.([\da-z]+)\s*(\d{6})?/; - var binaryFiles = /^Binary files (.*) and (.*) differ/; - var binaryDiff = /^GIT binary patch/; - var combinedIndex = /^index ([\da-z]+),([\da-z]+)\.\.([\da-z]+)/; - var combinedMode = /^mode (\d{6}),(\d{6})\.\.(\d{6})/; - var combinedNewFile = /^new file mode (\d{6})/; - var combinedDeletedFile = /^deleted file mode (\d{6}),(\d{6})/; - var diffLines2 = diffInput.replace(/\\ No newline at end of file/g, "").replace(/\r\n?/g, "\n").split("\n"); +function parse(diffInput, config = {}) { + const files = []; + let currentFile = null; + let currentBlock = null; + let oldLine = null; + let oldLine2 = null; + let newLine = null; + let possibleOldName = null; + let possibleNewName = null; + const oldFileNameHeader = "--- "; + const newFileNameHeader = "+++ "; + const hunkHeaderPrefix = "@@"; + const oldMode = /^old mode (\d{6})/; + const newMode = /^new mode (\d{6})/; + const deletedFileMode = /^deleted file mode (\d{6})/; + const newFileMode = /^new file mode (\d{6})/; + const copyFrom = /^copy from "?(.+)"?/; + const copyTo = /^copy to "?(.+)"?/; + const renameFrom = /^rename from "?(.+)"?/; + const renameTo = /^rename to "?(.+)"?/; + const similarityIndex = /^similarity index (\d+)%/; + const dissimilarityIndex = /^dissimilarity index (\d+)%/; + const index2 = /^index ([\da-z]+)\.\.([\da-z]+)\s*(\d{6})?/; + const binaryFiles = /^Binary files (.*) and (.*) differ/; + const binaryDiff = /^GIT binary patch/; + const combinedIndex = /^index ([\da-z]+),([\da-z]+)\.\.([\da-z]+)/; + const combinedMode = /^mode (\d{6}),(\d{6})\.\.(\d{6})/; + const combinedNewFile = /^new file mode (\d{6})/; + const combinedDeletedFile = /^deleted file mode (\d{6}),(\d{6})/; + const diffLines2 = diffInput.replace(/\\ No newline at end of file/g, "").replace(/\r\n?/g, "\n").split("\n"); function saveBlock() { if (currentBlock !== null && currentFile !== null) { currentFile.blocks.push(currentBlock); @@ -34426,7 +34493,7 @@ function parse(diffInput, config) { } function startBlock(line) { saveBlock(); - var values; + let values; if (currentFile !== null) { if (values = /^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@.*/.exec(line)) { currentFile.isCombined = false; @@ -34457,11 +34524,11 @@ function parse(diffInput, config) { function createLine(line) { if (currentFile === null || currentBlock === null || oldLine === null || newLine === null) return; - var currentLine = { + const currentLine = { content: line }; - var addedPrefixes = currentFile.isCombined ? ["+ ", " +", "++"] : ["+"]; - var deletedPrefixes = currentFile.isCombined ? ["- ", " -", "--"] : ["-"]; + const addedPrefixes = currentFile.isCombined ? ["+ ", " +", "++"] : ["+"]; + const deletedPrefixes = currentFile.isCombined ? ["- ", " -", "--"] : ["-"]; if (startsWithAny(line, addedPrefixes)) { currentFile.addedLines++; currentLine.type = LineType.INSERT; @@ -34480,7 +34547,7 @@ function parse(diffInput, config) { currentBlock.lines.push(currentLine); } function existHunkHeader(line, lineIdx) { - var idx = lineIdx; + let idx = lineIdx; while (idx < diffLines2.length - 3) { if (line.startsWith("diff")) { return false; @@ -34492,17 +34559,17 @@ function parse(diffInput, config) { } return false; } - diffLines2.forEach(function(line, lineIndex) { + diffLines2.forEach((line, lineIndex) => { if (!line || line.startsWith("*")) { return; } - var values; - var prevLine = diffLines2[lineIndex - 1]; - var nxtLine = diffLines2[lineIndex + 1]; - var afterNxtLine = diffLines2[lineIndex + 2]; + let values; + const prevLine = diffLines2[lineIndex - 1]; + const nxtLine = diffLines2[lineIndex + 1]; + const afterNxtLine = diffLines2[lineIndex + 2]; if (line.startsWith("diff --git") || line.startsWith("diff --combined")) { startFile(); - var gitDiffStart = /^diff --git "?([a-ciow]\/.+)"? "?([a-ciow]\/.+)"?/; + const gitDiffStart = /^diff --git "?([a-ciow]\/.+)"? "?([a-ciow]\/.+)"?/; if (values = gitDiffStart.exec(line)) { possibleOldName = getFilename(values[1], void 0, config.dstPrefix); possibleNewName = getFilename(values[2], void 0, config.srcPrefix); @@ -34515,7 +34582,7 @@ function parse(diffInput, config) { } if (line.startsWith("Binary files") && !(currentFile === null || currentFile === void 0 ? void 0 : currentFile.isGitDiff)) { startFile(); - var unixDiffBinaryStart = /^Binary files "?([a-ciow]\/.+)"? and "?([a-ciow]\/.+)"? differ/; + const unixDiffBinaryStart = /^Binary files "?([a-ciow]\/.+)"? and "?([a-ciow]\/.+)"? differ/; if (values = unixDiffBinaryStart.exec(line)) { possibleOldName = getFilename(values[1], void 0, config.dstPrefix); possibleNewName = getFilename(values[2], void 0, config.srcPrefix); @@ -34538,7 +34605,7 @@ function parse(diffInput, config) { currentFile.deletedLines = 0; currentFile.blocks = []; currentBlock = null; - var message = typeof config.diffTooBigMessage === "function" ? config.diffTooBigMessage(files.length) : "Diff too big to be displayed"; + const message = typeof config.diffTooBigMessage === "function" ? config.diffTooBigMessage(files.length) : "Diff too big to be displayed"; startBlock(message); return; } @@ -34562,7 +34629,7 @@ function parse(diffInput, config) { createLine(line); return; } - var doesNotExistHunkHeader = !existHunkHeader(line, lineIndex); + const doesNotExistHunkHeader = !existHunkHeader(line, lineIndex); if (currentFile === null) { throw new Error("Where is my file !!!"); } @@ -34631,13 +34698,13 @@ function parse(diffInput, config) { return files; } -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/file-list-renderer.js +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/file-list-renderer.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/render-utils.js +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/render-utils.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/rematch.js +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/rematch.js init_polyfill_buffer(); function levenshtein(a, b) { if (a.length === 0) { @@ -34646,12 +34713,12 @@ function levenshtein(a, b) { if (b.length === 0) { return a.length; } - var matrix = []; - var i; + const matrix = []; + let i; for (i = 0; i <= b.length; i++) { matrix[i] = [i]; } - var j; + let j; for (j = 0; j <= a.length; j++) { matrix[0][j] = j; } @@ -34667,24 +34734,21 @@ function levenshtein(a, b) { return matrix[b.length][a.length]; } function newDistanceFn(str) { - return function(x, y) { - var xValue = str(x).trim(); - var yValue = str(y).trim(); - var lev = levenshtein(xValue, yValue); + return (x, y) => { + const xValue = str(x).trim(); + const yValue = str(y).trim(); + const lev = levenshtein(xValue, yValue); return lev / (xValue.length + yValue.length); }; } function newMatcherFn(distance2) { - function findBestMatch(a, b, cache) { - if (cache === void 0) { - cache = /* @__PURE__ */ new Map(); - } - var bestMatchDist = Infinity; - var bestMatch; - for (var i = 0; i < a.length; ++i) { - for (var j = 0; j < b.length; ++j) { - var cacheKey = JSON.stringify([a[i], b[j]]); - var md = void 0; + function findBestMatch(a, b, cache = /* @__PURE__ */ new Map()) { + let bestMatchDist = Infinity; + let bestMatch; + for (let i = 0; i < a.length; ++i) { + for (let j = 0; j < b.length; ++j) { + const cacheKey = JSON.stringify([a[i], b[j]]); + let md; if (!(cache.has(cacheKey) && (md = cache.get(cacheKey)))) { md = distance2(a[i], b[j]); cache.set(cacheKey, md); @@ -34697,29 +34761,23 @@ function newMatcherFn(distance2) { } return bestMatch; } - function group(a, b, level, cache) { - if (level === void 0) { - level = 0; - } - if (cache === void 0) { - cache = /* @__PURE__ */ new Map(); - } - var bm = findBestMatch(a, b, cache); + function group(a, b, level = 0, cache = /* @__PURE__ */ new Map()) { + const bm = findBestMatch(a, b, cache); if (!bm || a.length + b.length < 3) { return [[a, b]]; } - var a1 = a.slice(0, bm.indexA); - var b1 = b.slice(0, bm.indexB); - var aMatch = [a[bm.indexA]]; - var bMatch = [b[bm.indexB]]; - var tailA = bm.indexA + 1; - var tailB = bm.indexB + 1; - var a2 = a.slice(tailA); - var b2 = b.slice(tailB); - var group1 = group(a1, b1, level + 1, cache); - var groupMatch = group(aMatch, bMatch, level + 1, cache); - var group2 = group(a2, b2, level + 1, cache); - var result = groupMatch; + const a1 = a.slice(0, bm.indexA); + const b1 = b.slice(0, bm.indexB); + const aMatch = [a[bm.indexA]]; + const bMatch = [b[bm.indexB]]; + const tailA = bm.indexA + 1; + const tailB = bm.indexB + 1; + const a2 = a.slice(tailA); + const b2 = b.slice(tailB); + const group1 = group(a1, b1, level + 1, cache); + const groupMatch = group(aMatch, bMatch, level + 1, cache); + const group2 = group(a2, b2, level + 1, cache); + let result = groupMatch; if (bm.indexA > 0 || bm.indexB > 0) { result = group1.concat(result); } @@ -34731,19 +34789,7 @@ function newMatcherFn(distance2) { return group; } -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/render-utils.js -var __assign = function() { - __assign = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/render-utils.js var CSSLineClass = { INSERTS: "d2h-ins", DELETES: "d2h-del", @@ -34759,9 +34805,7 @@ var defaultRenderConfig = { diffStyle: DiffStyleType.WORD }; var separator = "/"; -var distance = newDistanceFn(function(change) { - return change.value; -}); +var distance = newDistanceFn((change) => change.value); var matcher = newMatcherFn(distance); function isDevNullName(name) { return name.indexOf("dev/null") !== -1; @@ -34788,29 +34832,26 @@ function prefixLength(isCombined) { function escapeForHtml(str) { return str.slice(0).replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/\//g, "/"); } -function deconstructLine(line, isCombined, escape) { - if (escape === void 0) { - escape = true; - } - var indexToSplit = prefixLength(isCombined); +function deconstructLine(line, isCombined, escape = true) { + const indexToSplit = prefixLength(isCombined); return { prefix: line.substring(0, indexToSplit), content: escape ? escapeForHtml(line.substring(indexToSplit)) : line.substring(indexToSplit) }; } function filenameDiff(file) { - var oldFilename = unifyPath(file.oldName); - var newFilename = unifyPath(file.newName); + const oldFilename = unifyPath(file.oldName); + const newFilename = unifyPath(file.newName); if (oldFilename !== newFilename && !isDevNullName(oldFilename) && !isDevNullName(newFilename)) { - var prefixPaths = []; - var suffixPaths = []; - var oldFilenameParts = oldFilename.split(separator); - var newFilenameParts = newFilename.split(separator); - var oldFilenamePartsSize = oldFilenameParts.length; - var newFilenamePartsSize = newFilenameParts.length; - var i = 0; - var j = oldFilenamePartsSize - 1; - var k = newFilenamePartsSize - 1; + const prefixPaths = []; + const suffixPaths = []; + const oldFilenameParts = oldFilename.split(separator); + const newFilenameParts = newFilename.split(separator); + const oldFilenamePartsSize = oldFilenameParts.length; + const newFilenamePartsSize = newFilenameParts.length; + let i = 0; + let j = oldFilenamePartsSize - 1; + let k = newFilenamePartsSize - 1; while (i < j && i < k) { if (oldFilenameParts[i] === newFilenameParts[i]) { prefixPaths.push(newFilenameParts[i]); @@ -34828,10 +34869,10 @@ function filenameDiff(file) { break; } } - var finalPrefix = prefixPaths.join(separator); - var finalSuffix = suffixPaths.join(separator); - var oldRemainingPath = oldFilenameParts.slice(i, j + 1).join(separator); - var newRemainingPath = newFilenameParts.slice(i, k + 1).join(separator); + const finalPrefix = prefixPaths.join(separator); + const finalSuffix = suffixPaths.join(separator); + const oldRemainingPath = oldFilenameParts.slice(i, j + 1).join(separator); + const newRemainingPath = newFilenameParts.slice(i, k + 1).join(separator); if (finalPrefix.length && finalSuffix.length) { return finalPrefix + separator + "{" + oldRemainingPath + " \u2192 " + newRemainingPath + "}" + separator + finalSuffix; } else if (finalPrefix.length) { @@ -34847,10 +34888,10 @@ function filenameDiff(file) { } } function getHtmlId(file) { - return "d2h-".concat(hashCode(filenameDiff(file)).toString().slice(-6)); + return `d2h-${hashCode(filenameDiff(file)).toString().slice(-6)}`; } function getFileIcon(file) { - var templateName = "file-changed"; + let templateName = "file-changed"; if (file.isRename) { templateName = "file-renamed"; } else if (file.isCopy) { @@ -34864,13 +34905,10 @@ function getFileIcon(file) { } return templateName; } -function diffHighlight(diffLine1, diffLine2, isCombined, config) { - if (config === void 0) { - config = {}; - } - var _a2 = __assign(__assign({}, defaultRenderConfig), config), matching = _a2.matching, maxLineLengthHighlight = _a2.maxLineLengthHighlight, matchWordsThreshold = _a2.matchWordsThreshold, diffStyle = _a2.diffStyle; - var line1 = deconstructLine(diffLine1, isCombined, false); - var line2 = deconstructLine(diffLine2, isCombined, false); +function diffHighlight(diffLine1, diffLine2, isCombined, config = {}) { + const { matching, maxLineLengthHighlight, matchWordsThreshold, diffStyle } = Object.assign(Object.assign({}, defaultRenderConfig), config); + const line1 = deconstructLine(diffLine1, isCombined, false); + const line2 = deconstructLine(diffLine2, isCombined, false); if (line1.content.length > maxLineLengthHighlight || line2.content.length > maxLineLengthHighlight) { return { oldLine: { @@ -34883,19 +34921,15 @@ function diffHighlight(diffLine1, diffLine2, isCombined, config) { } }; } - var diff2 = diffStyle === "char" ? diffChars(line1.content, line2.content) : diffWordsWithSpace(line1.content, line2.content); - var changedWords = []; + const diff2 = diffStyle === "char" ? diffChars(line1.content, line2.content) : diffWordsWithSpace(line1.content, line2.content); + const changedWords = []; if (diffStyle === "word" && matching === "words") { - var removed = diff2.filter(function(element2) { - return element2.removed; - }); - var added = diff2.filter(function(element2) { - return element2.added; - }); - var chunks = matcher(added, removed); - chunks.forEach(function(chunk) { + const removed = diff2.filter((element2) => element2.removed); + const added = diff2.filter((element2) => element2.added); + const chunks = matcher(added, removed); + chunks.forEach((chunk) => { if (chunk[0].length === 1 && chunk[1].length === 1) { - var dist = distance(chunk[0][0], chunk[1][0]); + const dist = distance(chunk[0][0], chunk[1][0]); if (dist < matchWordsThreshold) { changedWords.push(chunk[0][0]); changedWords.push(chunk[1][0]); @@ -34903,11 +34937,11 @@ function diffHighlight(diffLine1, diffLine2, isCombined, config) { } }); } - var highlightedLine = diff2.reduce(function(highlightedLine2, part) { - var elemType = part.added ? "ins" : part.removed ? "del" : null; - var addClass = changedWords.indexOf(part) > -1 ? ' class="d2h-change"' : ""; - var escapedValue = escapeForHtml(part.value); - return elemType !== null ? "".concat(highlightedLine2, "<").concat(elemType).concat(addClass, ">").concat(escapedValue, "") : "".concat(highlightedLine2).concat(escapedValue); + const highlightedLine = diff2.reduce((highlightedLine2, part) => { + const elemType = part.added ? "ins" : part.removed ? "del" : null; + const addClass = changedWords.indexOf(part) > -1 ? ' class="d2h-change"' : ""; + const escapedValue = escapeForHtml(part.value); + return elemType !== null ? `${highlightedLine2}<${elemType}${addClass}>${escapedValue}` : `${highlightedLine2}${escapedValue}`; }, ""); return { oldLine: { @@ -34921,75 +34955,57 @@ function diffHighlight(diffLine1, diffLine2, isCombined, config) { }; } -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/file-list-renderer.js +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/file-list-renderer.js var baseTemplatesPath = "file-summary"; var iconsBaseTemplatesPath = "icon"; function render(diffFiles, hoganUtils) { - var files = diffFiles.map(function(file) { - return hoganUtils.render(baseTemplatesPath, "line", { - fileHtmlId: getHtmlId(file), - oldName: file.oldName, - newName: file.newName, - fileName: filenameDiff(file), - deletedLines: "-" + file.deletedLines, - addedLines: "+" + file.addedLines - }, { - fileIcon: hoganUtils.template(iconsBaseTemplatesPath, getFileIcon(file)) - }); - }).join("\n"); + const files = diffFiles.map((file) => hoganUtils.render(baseTemplatesPath, "line", { + fileHtmlId: getHtmlId(file), + oldName: file.oldName, + newName: file.newName, + fileName: filenameDiff(file), + deletedLines: "-" + file.deletedLines, + addedLines: "+" + file.addedLines + }, { + fileIcon: hoganUtils.template(iconsBaseTemplatesPath, getFileIcon(file)) + })).join("\n"); return hoganUtils.render(baseTemplatesPath, "wrapper", { filesNumber: diffFiles.length, files }); } -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/line-by-line-renderer.js +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/line-by-line-renderer.js init_polyfill_buffer(); -var __assign2 = function() { - __assign2 = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign2.apply(this, arguments); -}; -var defaultLineByLineRendererConfig = __assign2(__assign2({}, defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 }); +var defaultLineByLineRendererConfig = Object.assign(Object.assign({}, defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 }); var genericTemplatesPath = "generic"; var baseTemplatesPath2 = "line-by-line"; var iconsBaseTemplatesPath2 = "icon"; var tagsBaseTemplatesPath = "tag"; -var LineByLineRenderer = function() { - function LineByLineRenderer2(hoganUtils, config) { - if (config === void 0) { - config = {}; - } +var LineByLineRenderer = class { + constructor(hoganUtils, config = {}) { this.hoganUtils = hoganUtils; - this.config = __assign2(__assign2({}, defaultLineByLineRendererConfig), config); + this.config = Object.assign(Object.assign({}, defaultLineByLineRendererConfig), config); } - LineByLineRenderer2.prototype.render = function(diffFiles) { - var _this = this; - var diffsHtml = diffFiles.map(function(file) { - var diffs; + render(diffFiles) { + const diffsHtml = diffFiles.map((file) => { + let diffs; if (file.blocks.length) { - diffs = _this.generateFileHtml(file); + diffs = this.generateFileHtml(file); } else { - diffs = _this.generateEmptyDiff(); + diffs = this.generateEmptyDiff(); } - return _this.makeFileDiffHtml(file, diffs); + return this.makeFileDiffHtml(file, diffs); }).join("\n"); return this.hoganUtils.render(genericTemplatesPath, "wrapper", { content: diffsHtml }); - }; - LineByLineRenderer2.prototype.makeFileDiffHtml = function(file, diffs) { + } + makeFileDiffHtml(file, diffs) { if (this.config.renderNothingWhenEmpty && Array.isArray(file.blocks) && file.blocks.length === 0) return ""; - var fileDiffTemplate = this.hoganUtils.template(baseTemplatesPath2, "file-diff"); - var filePathTemplate = this.hoganUtils.template(genericTemplatesPath, "file-path"); - var fileIconTemplate = this.hoganUtils.template(iconsBaseTemplatesPath2, "file"); - var fileTagTemplate = this.hoganUtils.template(tagsBaseTemplatesPath, getFileIcon(file)); + const fileDiffTemplate = this.hoganUtils.template(baseTemplatesPath2, "file-diff"); + const filePathTemplate = this.hoganUtils.template(genericTemplatesPath, "file-path"); + const fileIconTemplate = this.hoganUtils.template(iconsBaseTemplatesPath2, "file"); + const fileTagTemplate = this.hoganUtils.template(tagsBaseTemplatesPath, getFileIcon(file)); return fileDiffTemplate.render({ file, fileHtmlId: getHtmlId(file), @@ -35001,38 +35017,33 @@ var LineByLineRenderer = function() { fileTag: fileTagTemplate }) }); - }; - LineByLineRenderer2.prototype.generateEmptyDiff = function() { + } + generateEmptyDiff() { return this.hoganUtils.render(genericTemplatesPath, "empty-diff", { contentClass: "d2h-code-line", CSSLineClass }); - }; - LineByLineRenderer2.prototype.generateFileHtml = function(file) { - var _this = this; - var matcher2 = newMatcherFn(newDistanceFn(function(e) { - return deconstructLine(e.content, file.isCombined).content; - })); - return file.blocks.map(function(block) { - var lines = _this.hoganUtils.render(genericTemplatesPath, "block-header", { + } + generateFileHtml(file) { + const matcher2 = newMatcherFn(newDistanceFn((e) => deconstructLine(e.content, file.isCombined).content)); + return file.blocks.map((block) => { + let lines = this.hoganUtils.render(genericTemplatesPath, "block-header", { CSSLineClass, blockHeader: file.isTooBig ? block.header : escapeForHtml(block.header), lineClass: "d2h-code-linenumber", contentClass: "d2h-code-line" }); - _this.applyLineGroupping(block).forEach(function(_a2) { - var contextLines = _a2[0], oldLines = _a2[1], newLines = _a2[2]; + this.applyLineGroupping(block).forEach(([contextLines, oldLines, newLines]) => { if (oldLines.length && newLines.length && !contextLines.length) { - _this.applyRematchMatching(oldLines, newLines, matcher2).map(function(_a3) { - var oldLines2 = _a3[0], newLines2 = _a3[1]; - var _b2 = _this.processChangedLines(file, file.isCombined, oldLines2, newLines2), left2 = _b2.left, right2 = _b2.right; - lines += left2; - lines += right2; + this.applyRematchMatching(oldLines, newLines, matcher2).map(([oldLines2, newLines2]) => { + const { left, right } = this.processChangedLines(file, file.isCombined, oldLines2, newLines2); + lines += left; + lines += right; }); } else if (contextLines.length) { - contextLines.forEach(function(line) { - var _a3 = deconstructLine(line.content, file.isCombined), prefix = _a3.prefix, content = _a3.content; - lines += _this.generateSingleLineHtml(file, { + contextLines.forEach((line) => { + const { prefix, content } = deconstructLine(line.content, file.isCombined); + lines += this.generateSingleLineHtml(file, { type: CSSLineClass.CONTEXT, prefix, content, @@ -35041,7 +35052,7 @@ var LineByLineRenderer = function() { }); }); } else if (oldLines.length || newLines.length) { - var _b = _this.processChangedLines(file, file.isCombined, oldLines, newLines), left = _b.left, right = _b.right; + const { left, right } = this.processChangedLines(file, file.isCombined, oldLines, newLines); lines += left; lines += right; } else { @@ -35050,13 +35061,13 @@ var LineByLineRenderer = function() { }); return lines; }).join("\n"); - }; - LineByLineRenderer2.prototype.applyLineGroupping = function(block) { - var blockLinesGroups = []; - var oldLines = []; - var newLines = []; - for (var i = 0; i < block.lines.length; i++) { - var diffLine = block.lines[i]; + } + applyLineGroupping(block) { + const blockLinesGroups = []; + let oldLines = []; + let newLines = []; + for (let i = 0; i < block.lines.length; i++) { + const diffLine = block.lines[i]; if (diffLine.type !== LineType.INSERT && newLines.length || diffLine.type === LineType.CONTEXT && oldLines.length > 0) { blockLinesGroups.push([[], oldLines, newLines]); oldLines = []; @@ -35078,51 +35089,49 @@ var LineByLineRenderer = function() { newLines = []; } return blockLinesGroups; - }; - LineByLineRenderer2.prototype.applyRematchMatching = function(oldLines, newLines, matcher2) { - var comparisons = oldLines.length * newLines.length; - var maxLineSizeInBlock = Math.max.apply(null, [0].concat(oldLines.concat(newLines).map(function(elem) { - return elem.content.length; - }))); - var doMatching = comparisons < this.config.matchingMaxComparisons && maxLineSizeInBlock < this.config.maxLineSizeInBlockForComparison && (this.config.matching === "lines" || this.config.matching === "words"); + } + applyRematchMatching(oldLines, newLines, matcher2) { + const comparisons = oldLines.length * newLines.length; + const maxLineSizeInBlock = Math.max.apply(null, [0].concat(oldLines.concat(newLines).map((elem) => elem.content.length))); + const doMatching = comparisons < this.config.matchingMaxComparisons && maxLineSizeInBlock < this.config.maxLineSizeInBlockForComparison && (this.config.matching === "lines" || this.config.matching === "words"); return doMatching ? matcher2(oldLines, newLines) : [[oldLines, newLines]]; - }; - LineByLineRenderer2.prototype.processChangedLines = function(file, isCombined, oldLines, newLines) { - var fileHtml = { + } + processChangedLines(file, isCombined, oldLines, newLines) { + const fileHtml = { right: "", left: "" }; - var maxLinesNumber = Math.max(oldLines.length, newLines.length); - for (var i = 0; i < maxLinesNumber; i++) { - var oldLine = oldLines[i]; - var newLine = newLines[i]; - var diff2 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0; - var preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? __assign2(__assign2({}, diff2 !== void 0 ? { + const maxLinesNumber = Math.max(oldLines.length, newLines.length); + for (let i = 0; i < maxLinesNumber; i++) { + const oldLine = oldLines[i]; + const newLine = newLines[i]; + const diff2 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0; + const preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? Object.assign(Object.assign({}, diff2 !== void 0 ? { prefix: diff2.oldLine.prefix, content: diff2.oldLine.content, type: CSSLineClass.DELETE_CHANGES - } : __assign2(__assign2({}, deconstructLine(oldLine.content, isCombined)), { type: toCSSClass(oldLine.type) })), { oldNumber: oldLine.oldNumber, newNumber: oldLine.newNumber }) : void 0; - var preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? __assign2(__assign2({}, diff2 !== void 0 ? { + } : Object.assign(Object.assign({}, deconstructLine(oldLine.content, isCombined)), { type: toCSSClass(oldLine.type) })), { oldNumber: oldLine.oldNumber, newNumber: oldLine.newNumber }) : void 0; + const preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? Object.assign(Object.assign({}, diff2 !== void 0 ? { prefix: diff2.newLine.prefix, content: diff2.newLine.content, type: CSSLineClass.INSERT_CHANGES - } : __assign2(__assign2({}, deconstructLine(newLine.content, isCombined)), { type: toCSSClass(newLine.type) })), { oldNumber: newLine.oldNumber, newNumber: newLine.newNumber }) : void 0; - var _a2 = this.generateLineHtml(file, preparedOldLine, preparedNewLine), left = _a2.left, right = _a2.right; + } : Object.assign(Object.assign({}, deconstructLine(newLine.content, isCombined)), { type: toCSSClass(newLine.type) })), { oldNumber: newLine.oldNumber, newNumber: newLine.newNumber }) : void 0; + const { left, right } = this.generateLineHtml(file, preparedOldLine, preparedNewLine); fileHtml.left += left; fileHtml.right += right; } return fileHtml; - }; - LineByLineRenderer2.prototype.generateLineHtml = function(file, oldLine, newLine) { + } + generateLineHtml(file, oldLine, newLine) { return { left: this.generateSingleLineHtml(file, oldLine), right: this.generateSingleLineHtml(file, newLine) }; - }; - LineByLineRenderer2.prototype.generateSingleLineHtml = function(file, line) { + } + generateSingleLineHtml(file, line) { if (line === void 0) return ""; - var lineNumberHtml = this.hoganUtils.render(baseTemplatesPath2, "numbers", { + const lineNumberHtml = this.hoganUtils.render(baseTemplatesPath2, "numbers", { oldNumber: line.oldNumber || "", newNumber: line.newNumber || "" }); @@ -35136,58 +35145,40 @@ var LineByLineRenderer = function() { line, file }); - }; - return LineByLineRenderer2; -}(); -var line_by_line_renderer_default = LineByLineRenderer; - -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/side-by-side-renderer.js -init_polyfill_buffer(); -var __assign3 = function() { - __assign3 = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign3.apply(this, arguments); + } }; -var defaultSideBySideRendererConfig = __assign3(__assign3({}, defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 }); + +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/side-by-side-renderer.js +init_polyfill_buffer(); +var defaultSideBySideRendererConfig = Object.assign(Object.assign({}, defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 }); var genericTemplatesPath2 = "generic"; var baseTemplatesPath3 = "side-by-side"; var iconsBaseTemplatesPath3 = "icon"; var tagsBaseTemplatesPath2 = "tag"; -var SideBySideRenderer = function() { - function SideBySideRenderer2(hoganUtils, config) { - if (config === void 0) { - config = {}; - } +var SideBySideRenderer = class { + constructor(hoganUtils, config = {}) { this.hoganUtils = hoganUtils; - this.config = __assign3(__assign3({}, defaultSideBySideRendererConfig), config); + this.config = Object.assign(Object.assign({}, defaultSideBySideRendererConfig), config); } - SideBySideRenderer2.prototype.render = function(diffFiles) { - var _this = this; - var diffsHtml = diffFiles.map(function(file) { - var diffs; + render(diffFiles) { + const diffsHtml = diffFiles.map((file) => { + let diffs; if (file.blocks.length) { - diffs = _this.generateFileHtml(file); + diffs = this.generateFileHtml(file); } else { - diffs = _this.generateEmptyDiff(); + diffs = this.generateEmptyDiff(); } - return _this.makeFileDiffHtml(file, diffs); + return this.makeFileDiffHtml(file, diffs); }).join("\n"); return this.hoganUtils.render(genericTemplatesPath2, "wrapper", { content: diffsHtml }); - }; - SideBySideRenderer2.prototype.makeFileDiffHtml = function(file, diffs) { + } + makeFileDiffHtml(file, diffs) { if (this.config.renderNothingWhenEmpty && Array.isArray(file.blocks) && file.blocks.length === 0) return ""; - var fileDiffTemplate = this.hoganUtils.template(baseTemplatesPath3, "file-diff"); - var filePathTemplate = this.hoganUtils.template(genericTemplatesPath2, "file-path"); - var fileIconTemplate = this.hoganUtils.template(iconsBaseTemplatesPath3, "file"); - var fileTagTemplate = this.hoganUtils.template(tagsBaseTemplatesPath2, getFileIcon(file)); + const fileDiffTemplate = this.hoganUtils.template(baseTemplatesPath3, "file-diff"); + const filePathTemplate = this.hoganUtils.template(genericTemplatesPath2, "file-path"); + const fileIconTemplate = this.hoganUtils.template(iconsBaseTemplatesPath3, "file"); + const fileTagTemplate = this.hoganUtils.template(tagsBaseTemplatesPath2, getFileIcon(file)); return fileDiffTemplate.render({ file, fileHtmlId: getHtmlId(file), @@ -35199,8 +35190,8 @@ var SideBySideRenderer = function() { fileTag: fileTagTemplate }) }); - }; - SideBySideRenderer2.prototype.generateEmptyDiff = function() { + } + generateEmptyDiff() { return { right: "", left: this.hoganUtils.render(genericTemplatesPath2, "empty-diff", { @@ -35208,30 +35199,25 @@ var SideBySideRenderer = function() { CSSLineClass }) }; - }; - SideBySideRenderer2.prototype.generateFileHtml = function(file) { - var _this = this; - var matcher2 = newMatcherFn(newDistanceFn(function(e) { - return deconstructLine(e.content, file.isCombined).content; - })); - return file.blocks.map(function(block) { - var fileHtml = { - left: _this.makeHeaderHtml(block.header, file), - right: _this.makeHeaderHtml("") + } + generateFileHtml(file) { + const matcher2 = newMatcherFn(newDistanceFn((e) => deconstructLine(e.content, file.isCombined).content)); + return file.blocks.map((block) => { + const fileHtml = { + left: this.makeHeaderHtml(block.header, file), + right: this.makeHeaderHtml("") }; - _this.applyLineGroupping(block).forEach(function(_a2) { - var contextLines = _a2[0], oldLines = _a2[1], newLines = _a2[2]; + this.applyLineGroupping(block).forEach(([contextLines, oldLines, newLines]) => { if (oldLines.length && newLines.length && !contextLines.length) { - _this.applyRematchMatching(oldLines, newLines, matcher2).map(function(_a3) { - var oldLines2 = _a3[0], newLines2 = _a3[1]; - var _b2 = _this.processChangedLines(file.isCombined, oldLines2, newLines2), left2 = _b2.left, right2 = _b2.right; - fileHtml.left += left2; - fileHtml.right += right2; + this.applyRematchMatching(oldLines, newLines, matcher2).map(([oldLines2, newLines2]) => { + const { left, right } = this.processChangedLines(file.isCombined, oldLines2, newLines2); + fileHtml.left += left; + fileHtml.right += right; }); } else if (contextLines.length) { - contextLines.forEach(function(line) { - var _a3 = deconstructLine(line.content, file.isCombined), prefix = _a3.prefix, content = _a3.content; - var _b2 = _this.generateLineHtml({ + contextLines.forEach((line) => { + const { prefix, content } = deconstructLine(line.content, file.isCombined); + const { left, right } = this.generateLineHtml({ type: CSSLineClass.CONTEXT, prefix, content, @@ -35241,12 +35227,12 @@ var SideBySideRenderer = function() { prefix, content, number: line.newNumber - }), left2 = _b2.left, right2 = _b2.right; - fileHtml.left += left2; - fileHtml.right += right2; + }); + fileHtml.left += left; + fileHtml.right += right; }); } else if (oldLines.length || newLines.length) { - var _b = _this.processChangedLines(file.isCombined, oldLines, newLines), left = _b.left, right = _b.right; + const { left, right } = this.processChangedLines(file.isCombined, oldLines, newLines); fileHtml.left += left; fileHtml.right += right; } else { @@ -35254,16 +35240,16 @@ var SideBySideRenderer = function() { } }); return fileHtml; - }).reduce(function(accomulated, html2) { + }).reduce((accomulated, html2) => { return { left: accomulated.left + html2.left, right: accomulated.right + html2.right }; }, { left: "", right: "" }); - }; - SideBySideRenderer2.prototype.applyLineGroupping = function(block) { - var blockLinesGroups = []; - var oldLines = []; - var newLines = []; - for (var i = 0; i < block.lines.length; i++) { - var diffLine = block.lines[i]; + } + applyLineGroupping(block) { + const blockLinesGroups = []; + let oldLines = []; + let newLines = []; + for (let i = 0; i < block.lines.length; i++) { + const diffLine = block.lines[i]; if (diffLine.type !== LineType.INSERT && newLines.length || diffLine.type === LineType.CONTEXT && oldLines.length > 0) { blockLinesGroups.push([[], oldLines, newLines]); oldLines = []; @@ -35285,76 +35271,72 @@ var SideBySideRenderer = function() { newLines = []; } return blockLinesGroups; - }; - SideBySideRenderer2.prototype.applyRematchMatching = function(oldLines, newLines, matcher2) { - var comparisons = oldLines.length * newLines.length; - var maxLineSizeInBlock = Math.max.apply(null, [0].concat(oldLines.concat(newLines).map(function(elem) { - return elem.content.length; - }))); - var doMatching = comparisons < this.config.matchingMaxComparisons && maxLineSizeInBlock < this.config.maxLineSizeInBlockForComparison && (this.config.matching === "lines" || this.config.matching === "words"); + } + applyRematchMatching(oldLines, newLines, matcher2) { + const comparisons = oldLines.length * newLines.length; + const maxLineSizeInBlock = Math.max.apply(null, [0].concat(oldLines.concat(newLines).map((elem) => elem.content.length))); + const doMatching = comparisons < this.config.matchingMaxComparisons && maxLineSizeInBlock < this.config.maxLineSizeInBlockForComparison && (this.config.matching === "lines" || this.config.matching === "words"); return doMatching ? matcher2(oldLines, newLines) : [[oldLines, newLines]]; - }; - SideBySideRenderer2.prototype.makeHeaderHtml = function(blockHeader, file) { + } + makeHeaderHtml(blockHeader, file) { return this.hoganUtils.render(genericTemplatesPath2, "block-header", { CSSLineClass, blockHeader: (file === null || file === void 0 ? void 0 : file.isTooBig) ? blockHeader : escapeForHtml(blockHeader), lineClass: "d2h-code-side-linenumber", contentClass: "d2h-code-side-line" }); - }; - SideBySideRenderer2.prototype.processChangedLines = function(isCombined, oldLines, newLines) { - var fileHtml = { + } + processChangedLines(isCombined, oldLines, newLines) { + const fileHtml = { right: "", left: "" }; - var maxLinesNumber = Math.max(oldLines.length, newLines.length); - for (var i = 0; i < maxLinesNumber; i++) { - var oldLine = oldLines[i]; - var newLine = newLines[i]; - var diff2 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0; - var preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? __assign3(__assign3({}, diff2 !== void 0 ? { + const maxLinesNumber = Math.max(oldLines.length, newLines.length); + for (let i = 0; i < maxLinesNumber; i++) { + const oldLine = oldLines[i]; + const newLine = newLines[i]; + const diff2 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0; + const preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? Object.assign(Object.assign({}, diff2 !== void 0 ? { prefix: diff2.oldLine.prefix, content: diff2.oldLine.content, type: CSSLineClass.DELETE_CHANGES - } : __assign3(__assign3({}, deconstructLine(oldLine.content, isCombined)), { type: toCSSClass(oldLine.type) })), { number: oldLine.oldNumber }) : void 0; - var preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? __assign3(__assign3({}, diff2 !== void 0 ? { + } : Object.assign(Object.assign({}, deconstructLine(oldLine.content, isCombined)), { type: toCSSClass(oldLine.type) })), { number: oldLine.oldNumber }) : void 0; + const preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? Object.assign(Object.assign({}, diff2 !== void 0 ? { prefix: diff2.newLine.prefix, content: diff2.newLine.content, type: CSSLineClass.INSERT_CHANGES - } : __assign3(__assign3({}, deconstructLine(newLine.content, isCombined)), { type: toCSSClass(newLine.type) })), { number: newLine.newNumber }) : void 0; - var _a2 = this.generateLineHtml(preparedOldLine, preparedNewLine), left = _a2.left, right = _a2.right; + } : Object.assign(Object.assign({}, deconstructLine(newLine.content, isCombined)), { type: toCSSClass(newLine.type) })), { number: newLine.newNumber }) : void 0; + const { left, right } = this.generateLineHtml(preparedOldLine, preparedNewLine); fileHtml.left += left; fileHtml.right += right; } return fileHtml; - }; - SideBySideRenderer2.prototype.generateLineHtml = function(oldLine, newLine) { + } + generateLineHtml(oldLine, newLine) { return { left: this.generateSingleHtml(oldLine), right: this.generateSingleHtml(newLine) }; - }; - SideBySideRenderer2.prototype.generateSingleHtml = function(line) { - var lineClass = "d2h-code-side-linenumber"; - var contentClass = "d2h-code-side-line"; + } + generateSingleHtml(line) { + const lineClass = "d2h-code-side-linenumber"; + const contentClass = "d2h-code-side-line"; return this.hoganUtils.render(genericTemplatesPath2, "line", { - type: (line === null || line === void 0 ? void 0 : line.type) || "".concat(CSSLineClass.CONTEXT, " d2h-emptyplaceholder"), - lineClass: line !== void 0 ? lineClass : "".concat(lineClass, " d2h-code-side-emptyplaceholder"), - contentClass: line !== void 0 ? contentClass : "".concat(contentClass, " d2h-code-side-emptyplaceholder"), + type: (line === null || line === void 0 ? void 0 : line.type) || `${CSSLineClass.CONTEXT} d2h-emptyplaceholder`, + lineClass: line !== void 0 ? lineClass : `${lineClass} d2h-code-side-emptyplaceholder`, + contentClass: line !== void 0 ? contentClass : `${contentClass} d2h-code-side-emptyplaceholder`, prefix: (line === null || line === void 0 ? void 0 : line.prefix) === " " ? " " : line === null || line === void 0 ? void 0 : line.prefix, content: line === null || line === void 0 ? void 0 : line.content, lineNumber: line === null || line === void 0 ? void 0 : line.number }); - }; - return SideBySideRenderer2; -}(); -var side_by_side_renderer_default = SideBySideRenderer; + } +}; -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/hoganjs-utils.js +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/hoganjs-utils.js init_polyfill_buffer(); var Hogan3 = __toESM(require_hogan()); -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/diff2html-templates.js +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/diff2html-templates.js init_polyfill_buffer(); var Hogan2 = __toESM(require_hogan()); var defaultTemplates = {}; @@ -35759,75 +35741,43 @@ defaultTemplates["tag-file-renamed"] = new Hogan2.Template({ code: function(c, p return t.fl(); }, partials: {}, subs: {} }); -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/hoganjs-utils.js -var __assign4 = function() { - __assign4 = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign4.apply(this, arguments); -}; -var HoganJsUtils = function() { - function HoganJsUtils2(_a2) { - var _b = _a2.compiledTemplates, compiledTemplates = _b === void 0 ? {} : _b, _c = _a2.rawTemplates, rawTemplates = _c === void 0 ? {} : _c; - var compiledRawTemplates = Object.entries(rawTemplates).reduce(function(previousTemplates, _a3) { - var _b2; - var name = _a3[0], templateString = _a3[1]; - var compiledTemplate = Hogan3.compile(templateString, { asString: false }); - return __assign4(__assign4({}, previousTemplates), (_b2 = {}, _b2[name] = compiledTemplate, _b2)); +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/hoganjs-utils.js +var HoganJsUtils = class { + constructor({ compiledTemplates = {}, rawTemplates = {} }) { + const compiledRawTemplates = Object.entries(rawTemplates).reduce((previousTemplates, [name, templateString]) => { + const compiledTemplate = Hogan3.compile(templateString, { asString: false }); + return Object.assign(Object.assign({}, previousTemplates), { [name]: compiledTemplate }); }, {}); - this.preCompiledTemplates = __assign4(__assign4(__assign4({}, defaultTemplates), compiledTemplates), compiledRawTemplates); + this.preCompiledTemplates = Object.assign(Object.assign(Object.assign({}, defaultTemplates), compiledTemplates), compiledRawTemplates); } - HoganJsUtils2.compile = function(templateString) { + static compile(templateString) { return Hogan3.compile(templateString, { asString: false }); - }; - HoganJsUtils2.prototype.render = function(namespace, view, params, partials, indent2) { - var templateKey = this.templateKey(namespace, view); + } + render(namespace, view, params, partials, indent2) { + const templateKey = this.templateKey(namespace, view); try { - var template = this.preCompiledTemplates[templateKey]; + const template = this.preCompiledTemplates[templateKey]; return template.render(params, partials, indent2); } catch (e) { - throw new Error("Could not find template to render '".concat(templateKey, "'")); + throw new Error(`Could not find template to render '${templateKey}'`); } - }; - HoganJsUtils2.prototype.template = function(namespace, view) { - return this.preCompiledTemplates[this.templateKey(namespace, view)]; - }; - HoganJsUtils2.prototype.templateKey = function(namespace, view) { - return "".concat(namespace, "-").concat(view); - }; - return HoganJsUtils2; -}(); -var hoganjs_utils_default = HoganJsUtils; - -// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/diff2html.js -var __assign5 = function() { - __assign5 = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign5.apply(this, arguments); -}; -var defaultDiff2HtmlConfig = __assign5(__assign5(__assign5({}, defaultLineByLineRendererConfig), defaultSideBySideRendererConfig), { outputFormat: OutputFormatType.LINE_BY_LINE, drawFileList: true }); -function html(diffInput, configuration) { - if (configuration === void 0) { - configuration = {}; } - var config = __assign5(__assign5({}, defaultDiff2HtmlConfig), configuration); - var diffJson = typeof diffInput === "string" ? parse(diffInput, config) : diffInput; - var hoganUtils = new hoganjs_utils_default(config); - var fileList = config.drawFileList ? render(diffJson, hoganUtils) : ""; - var diffOutput = config.outputFormat === "side-by-side" ? new side_by_side_renderer_default(hoganUtils, config).render(diffJson) : new line_by_line_renderer_default(hoganUtils, config).render(diffJson); + template(namespace, view) { + return this.preCompiledTemplates[this.templateKey(namespace, view)]; + } + templateKey(namespace, view) { + return `${namespace}-${view}`; + } +}; + +// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/diff2html.js +var defaultDiff2HtmlConfig = Object.assign(Object.assign(Object.assign({}, defaultLineByLineRendererConfig), defaultSideBySideRendererConfig), { outputFormat: OutputFormatType.LINE_BY_LINE, drawFileList: true }); +function html(diffInput, configuration = {}) { + const config = Object.assign(Object.assign({}, defaultDiff2HtmlConfig), configuration); + const diffJson = typeof diffInput === "string" ? parse(diffInput, config) : diffInput; + const hoganUtils = new HoganJsUtils(config); + const fileList = config.drawFileList ? render(diffJson, hoganUtils) : ""; + const diffOutput = config.outputFormat === "side-by-side" ? new SideBySideRenderer(hoganUtils, config).render(diffJson) : new LineByLineRenderer(hoganUtils, config).render(diffJson); return fileList + diffOutput; } @@ -35863,8 +35813,10 @@ var DiffView = class extends import_obsidian17.ItemView { } async setState(state, result) { this.state = state; + if (import_obsidian17.Platform.isMobile) { + this.leaf.view.titleEl.textContent = this.getDisplayText(); + } await this.refresh(); - return; } getState() { return this.state; @@ -35927,7 +35879,13 @@ var import_obsidian20 = require("obsidian"); // src/ui/history/historyView.svelte init_polyfill_buffer(); -// node_modules/.pnpm/svelte@3.59.0/node_modules/svelte/internal/index.mjs +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/index.js +init_polyfill_buffer(); + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/animations.js +init_polyfill_buffer(); + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/utils.js init_polyfill_buffer(); function noop() { } @@ -35945,14 +35903,20 @@ function is_function(thing) { return typeof thing === "function"; } function safe_not_equal(a, b) { - return a != a ? b == b : a !== b || (a && typeof a === "object" || typeof a === "function"); + return a != a ? b == b : a !== b || a && typeof a === "object" || typeof a === "function"; } function is_empty(obj) { return Object.keys(obj).length === 0; } + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/environment.js +init_polyfill_buffer(); var is_client = typeof window !== "undefined"; var now = is_client ? () => window.performance.now() : () => Date.now(); var raf = is_client ? (cb) => requestAnimationFrame(cb) : noop; + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/loop.js +init_polyfill_buffer(); var tasks = /* @__PURE__ */ new Set(); function run_tasks(now2) { tasks.forEach((task) => { @@ -35977,12 +35941,47 @@ function loop(callback) { } }; } -var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : global; -var ResizeObserverSingleton = class { + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/style_manager.js +init_polyfill_buffer(); + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/dom.js +init_polyfill_buffer(); + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/ResizeObserverSingleton.js +init_polyfill_buffer(); + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/globals.js +init_polyfill_buffer(); +var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : ( + // @ts-ignore Node typings have this + global +); + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/ResizeObserverSingleton.js +var ResizeObserverSingleton = class _ResizeObserverSingleton { + /** @param {ResizeObserverOptions} options */ constructor(options) { + /** + * @private + * @readonly + * @type {WeakMap} + */ + __publicField(this, "_listeners", "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0); + /** + * @private + * @type {ResizeObserver} + */ + __publicField(this, "_observer"); + /** @type {ResizeObserverOptions} */ + __publicField(this, "options"); this.options = options; - this._listeners = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0; } + /** + * @param {Element} element + * @param {import('./private.js').Listener} listener + * @returns {() => void} + */ observe(element2, listener) { this._listeners.set(element2, listener); this._getObserver().observe(element2, this.options); @@ -35991,18 +35990,23 @@ var ResizeObserverSingleton = class { this._observer.unobserve(element2); }; } + /** + * @private + */ _getObserver() { var _a2; - return (_a2 = this._observer) !== null && _a2 !== void 0 ? _a2 : this._observer = new ResizeObserver((entries) => { + return (_a2 = this._observer) != null ? _a2 : this._observer = new ResizeObserver((entries) => { var _a3; for (const entry of entries) { - ResizeObserverSingleton.entries.set(entry.target, entry); - (_a3 = this._listeners.get(entry.target)) === null || _a3 === void 0 ? void 0 : _a3(entry); + _ResizeObserverSingleton.entries.set(entry.target, entry); + (_a3 = this._listeners.get(entry.target)) == null ? void 0 : _a3(entry); } }); } }; ResizeObserverSingleton.entries = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0; + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/dom.js var is_hydrating = false; function start_hydrating() { is_hydrating = true; @@ -36026,18 +36030,27 @@ function get_root_for_style(node) { if (!node) return document; const root2 = node.getRootNode ? node.getRootNode() : node.ownerDocument; - if (root2 && root2.host) { - return root2; + if (root2 && /** @type {ShadowRoot} */ + root2.host) { + return ( + /** @type {ShadowRoot} */ + root2 + ); } return node.ownerDocument; } function append_empty_stylesheet(node) { const style_element = element("style"); + style_element.textContent = "/* empty */"; append_stylesheet(get_root_for_style(node), style_element); return style_element.sheet; } function append_stylesheet(node, style) { - append2(node.head || node, style); + append2( + /** @type {Document} */ + node.head || node, + style + ); return style.sheet; } function insert(target, node, anchor) { @@ -36089,7 +36102,8 @@ function set_data(text2, data) { data = "" + data; if (text2.data === data) return; - text2.data = data; + text2.data = /** @type {string} */ + data; } function set_input_value(input, value) { input.value = value == null ? "" : value; @@ -36102,13 +36116,23 @@ function set_style(node, key2, value, important) { } } function toggle_class(element2, name, toggle) { - element2.classList[toggle ? "add" : "remove"](name); + element2.classList.toggle(name, !!toggle); } function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { - const e = document.createEvent("CustomEvent"); - e.initCustomEvent(type, bubbles, cancelable, detail); - return e; + return new CustomEvent(type, { detail, bubbles, cancelable }); } +function get_custom_elements_slots(element2) { + const result = {}; + element2.childNodes.forEach( + /** @param {Element} node */ + (node) => { + result[node.slot || "default"] = true; + } + ); + return result; +} + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/style_manager.js var managed_styles = /* @__PURE__ */ new Map(); var active = 0; function hash(str) { @@ -36171,6 +36195,18 @@ function clear_rules() { managed_styles.clear(); }); } + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/await_block.js +init_polyfill_buffer(); + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/transitions.js +init_polyfill_buffer(); + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/scheduler.js +init_polyfill_buffer(); + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/lifecycle.js +init_polyfill_buffer(); var current_component; function set_current_component(component) { current_component = component; @@ -36189,6 +36225,8 @@ function bubble(component, event) { callbacks.slice().forEach((fn) => fn.call(this, event)); } } + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/scheduler.js var dirty_components = []; var binding_callbacks = []; var render_callbacks = []; @@ -36262,6 +36300,8 @@ function flush_render_callbacks(fns) { targets.forEach((c) => c()); render_callbacks = filtered; } + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/transitions.js var promise; function wait() { if (!promise) { @@ -36323,12 +36363,16 @@ function create_bidirectional_transition(node, fn, params, intro) { let running_program = null; let pending_program = null; let animation_name = null; + let original_inert_value; function clear_animation() { if (animation_name) delete_rule(node, animation_name); } function init3(program, duration) { - const d = program.b - t; + const d = ( + /** @type {Program['d']} */ + program.b - t + ); duration *= Math.abs(d); return { a: t, @@ -36341,7 +36385,13 @@ function create_bidirectional_transition(node, fn, params, intro) { }; } function go(b) { - const { delay: delay2 = 0, duration = 300, easing = identity, tick: tick2 = noop, css } = config || null_transition; + const { + delay: delay2 = 0, + duration = 300, + easing = identity, + tick: tick2 = noop, + css + } = config || null_transition; const program = { start: now() + delay2, b @@ -36350,6 +36400,17 @@ function create_bidirectional_transition(node, fn, params, intro) { program.group = outros; outros.r += 1; } + if ("inert" in node) { + if (b) { + if (original_inert_value !== void 0) { + node.inert = original_inert_value; + } + } else { + original_inert_value = /** @type {HTMLElement} */ + node.inert; + node.inert = true; + } + } if (running_program || pending_program) { pending_program = program; } else { @@ -36368,7 +36429,15 @@ function create_bidirectional_transition(node, fn, params, intro) { dispatch(node, running_program.b, "start"); if (css) { clear_animation(); - animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css); + animation_name = create_rule( + node, + t, + running_program.b, + running_program.duration, + 0, + easing, + config.css + ); } } if (running_program) { @@ -36398,7 +36467,8 @@ function create_bidirectional_transition(node, fn, params, intro) { run(b) { if (is_function(config)) { wait().then(() => { - config = config(options); + const opts = { direction: b ? "in" : "out" }; + config = config(opts); go(b); }); } else { @@ -36411,51 +36481,73 @@ function create_bidirectional_transition(node, fn, params, intro) { } }; } -var _boolean_attributes = [ - "allowfullscreen", - "allowpaymentrequest", - "async", - "autofocus", - "autoplay", - "checked", - "controls", - "default", - "defer", - "disabled", - "formnovalidate", - "hidden", - "inert", - "ismap", - "loop", - "multiple", - "muted", - "nomodule", - "novalidate", - "open", - "playsinline", - "readonly", - "required", - "reversed", - "selected" -]; + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/each.js +init_polyfill_buffer(); +function ensure_array_like(array_like_or_iterator) { + return (array_like_or_iterator == null ? void 0 : array_like_or_iterator.length) !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator); +} + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/spread.js +init_polyfill_buffer(); + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/ssr.js +init_polyfill_buffer(); + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/shared/boolean_attributes.js +init_polyfill_buffer(); +var _boolean_attributes = ( + /** @type {const} */ + [ + "allowfullscreen", + "allowpaymentrequest", + "async", + "autofocus", + "autoplay", + "checked", + "controls", + "default", + "defer", + "disabled", + "formnovalidate", + "hidden", + "inert", + "ismap", + "loop", + "multiple", + "muted", + "nomodule", + "novalidate", + "open", + "playsinline", + "readonly", + "required", + "reversed", + "selected" + ] +); var boolean_attributes = /* @__PURE__ */ new Set([..._boolean_attributes]); + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/shared/utils/names.js +init_polyfill_buffer(); + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/Component.js +init_polyfill_buffer(); function create_component(block) { block && block.c(); } -function mount_component(component, target, anchor, customElement) { +function mount_component(component, target, anchor) { const { fragment, after_update } = component.$$; fragment && fragment.m(target, anchor); - if (!customElement) { - add_render_callback(() => { - const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); - if (component.$$.on_destroy) { - component.$$.on_destroy.push(...new_on_destroy); - } else { - run_all(new_on_destroy); - } - component.$$.on_mount = []; - }); - } + add_render_callback(() => { + const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); + if (component.$$.on_destroy) { + component.$$.on_destroy.push(...new_on_destroy); + } else { + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); after_update.forEach(add_render_callback); } function destroy_component(component, detaching) { @@ -36527,7 +36619,7 @@ function init2(component, options, instance10, create_fragment10, not_equal, pro } if (options.intro) transition_in(component.$$.fragment); - mount_component(component, options.target, options.anchor, options.customElement); + mount_component(component, options.target, options.anchor); end_hydrating(); flush(); } @@ -36536,53 +36628,226 @@ function init2(component, options, instance10, create_fragment10, not_equal, pro var SvelteElement; if (typeof HTMLElement === "function") { SvelteElement = class extends HTMLElement { - constructor() { + constructor($$componentCtor, $$slots, use_shadow_dom) { super(); - this.attachShadow({ mode: "open" }); - } - connectedCallback() { - const { on_mount } = this.$$; - this.$$.on_disconnect = on_mount.map(run).filter(is_function); - for (const key2 in this.$$.slotted) { - this.appendChild(this.$$.slotted[key2]); + /** The Svelte component constructor */ + __publicField(this, "$$ctor"); + /** Slots */ + __publicField(this, "$$s"); + /** The Svelte component instance */ + __publicField(this, "$$c"); + /** Whether or not the custom element is connected */ + __publicField(this, "$$cn", false); + /** Component props data */ + __publicField(this, "$$d", {}); + /** `true` if currently in the process of reflecting component props back to attributes */ + __publicField(this, "$$r", false); + /** @type {Record} Props definition (name, reflected, type etc) */ + __publicField(this, "$$p_d", {}); + /** @type {Record} Event listeners */ + __publicField(this, "$$l", {}); + /** @type {Map} Event listener unsubscribe functions */ + __publicField(this, "$$l_u", /* @__PURE__ */ new Map()); + this.$$ctor = $$componentCtor; + this.$$s = $$slots; + if (use_shadow_dom) { + this.attachShadow({ mode: "open" }); } } + addEventListener(type, listener, options) { + this.$$l[type] = this.$$l[type] || []; + this.$$l[type].push(listener); + if (this.$$c) { + const unsub = this.$$c.$on(type, listener); + this.$$l_u.set(listener, unsub); + } + super.addEventListener(type, listener, options); + } + removeEventListener(type, listener, options) { + super.removeEventListener(type, listener, options); + if (this.$$c) { + const unsub = this.$$l_u.get(listener); + if (unsub) { + unsub(); + this.$$l_u.delete(listener); + } + } + } + async connectedCallback() { + this.$$cn = true; + if (!this.$$c) { + let create_slot = function(name) { + return () => { + let node; + const obj = { + c: function create() { + node = element("slot"); + if (name !== "default") { + attr(node, "name", name); + } + }, + /** + * @param {HTMLElement} target + * @param {HTMLElement} [anchor] + */ + m: function mount(target, anchor) { + insert(target, node, anchor); + }, + d: function destroy(detaching) { + if (detaching) { + detach(node); + } + } + }; + return obj; + }; + }; + await Promise.resolve(); + if (!this.$$cn) { + return; + } + const $$slots = {}; + const existing_slots = get_custom_elements_slots(this); + for (const name of this.$$s) { + if (name in existing_slots) { + $$slots[name] = [create_slot(name)]; + } + } + for (const attribute of this.attributes) { + const name = this.$$g_p(attribute.name); + if (!(name in this.$$d)) { + this.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, "toProp"); + } + } + this.$$c = new this.$$ctor({ + target: this.shadowRoot || this, + props: { + ...this.$$d, + $$slots, + $$scope: { + ctx: [] + } + } + }); + const reflect_attributes = () => { + this.$$r = true; + for (const key2 in this.$$p_d) { + this.$$d[key2] = this.$$c.$$.ctx[this.$$c.$$.props[key2]]; + if (this.$$p_d[key2].reflect) { + const attribute_value = get_custom_element_value( + key2, + this.$$d[key2], + this.$$p_d, + "toAttribute" + ); + if (attribute_value == null) { + this.removeAttribute(key2); + } else { + this.setAttribute(this.$$p_d[key2].attribute || key2, attribute_value); + } + } + } + this.$$r = false; + }; + this.$$c.$$.after_update.push(reflect_attributes); + reflect_attributes(); + for (const type in this.$$l) { + for (const listener of this.$$l[type]) { + const unsub = this.$$c.$on(type, listener); + this.$$l_u.set(listener, unsub); + } + } + this.$$l = {}; + } + } + // We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte + // and setting attributes through setAttribute etc, this is helpful attributeChangedCallback(attr2, _oldValue, newValue) { - this[attr2] = newValue; + var _a2; + if (this.$$r) + return; + attr2 = this.$$g_p(attr2); + this.$$d[attr2] = get_custom_element_value(attr2, newValue, this.$$p_d, "toProp"); + (_a2 = this.$$c) == null ? void 0 : _a2.$set({ [attr2]: this.$$d[attr2] }); } disconnectedCallback() { - run_all(this.$$.on_disconnect); + this.$$cn = false; + Promise.resolve().then(() => { + if (!this.$$cn) { + this.$$c.$destroy(); + this.$$c = void 0; + } + }); } - $destroy() { - destroy_component(this, 1); - this.$destroy = noop; - } - $on(type, callback) { - if (!is_function(callback)) { - return noop; - } - const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []); - callbacks.push(callback); - return () => { - const index2 = callbacks.indexOf(callback); - if (index2 !== -1) - callbacks.splice(index2, 1); - }; - } - $set($$props) { - if (this.$$set && !is_empty($$props)) { - this.$$.skip_bound = true; - this.$$set($$props); - this.$$.skip_bound = false; - } + $$g_p(attribute_name) { + return Object.keys(this.$$p_d).find( + (key2) => this.$$p_d[key2].attribute === attribute_name || !this.$$p_d[key2].attribute && key2.toLowerCase() === attribute_name + ) || attribute_name; } }; } +function get_custom_element_value(prop, value, props_definition, transform) { + var _a2; + const type = (_a2 = props_definition[prop]) == null ? void 0 : _a2.type; + value = type === "Boolean" && typeof value !== "boolean" ? value != null : value; + if (!transform || !props_definition[prop]) { + return value; + } else if (transform === "toAttribute") { + switch (type) { + case "Object": + case "Array": + return value == null ? null : JSON.stringify(value); + case "Boolean": + return value ? "" : null; + case "Number": + return value == null ? null : value; + default: + return value; + } + } else { + switch (type) { + case "Object": + case "Array": + return value && JSON.parse(value); + case "Boolean": + return value; + case "Number": + return value != null ? +value : value; + default: + return value; + } + } +} var SvelteComponent = class { + constructor() { + /** + * ### PRIVATE API + * + * Do not use, may change at any time + * + * @type {any} + */ + __publicField(this, "$$"); + /** + * ### PRIVATE API + * + * Do not use, may change at any time + * + * @type {any} + */ + __publicField(this, "$$set"); + } + /** @returns {void} */ $destroy() { destroy_component(this, 1); this.$destroy = noop; } + /** + * @template {Extract} K + * @param {K} type + * @param {((e: Events[K]) => void) | null | undefined} callback + * @returns {() => void} + */ $on(type, callback) { if (!is_function(callback)) { return noop; @@ -36595,16 +36860,32 @@ var SvelteComponent = class { callbacks.splice(index2, 1); }; } - $set($$props) { - if (this.$$set && !is_empty($$props)) { + /** + * @param {Partial} props + * @returns {void} + */ + $set(props) { + if (this.$$set && !is_empty(props)) { this.$$.skip_bound = true; - this.$$set($$props); + this.$$set(props); this.$$.skip_bound = false; } } }; -// node_modules/.pnpm/tslib@2.5.0/node_modules/tslib/tslib.es6.js +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/dev.js +init_polyfill_buffer(); + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/shared/version.js +init_polyfill_buffer(); +var PUBLIC_VERSION = "4"; + +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/disclose-version/index.js +init_polyfill_buffer(); +if (typeof window !== "undefined") + (window.__svelte || (window.__svelte = { v: /* @__PURE__ */ new Set() })).v.add(PUBLIC_VERSION); + +// node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs init_polyfill_buffer(); function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { @@ -36637,36 +36918,42 @@ function __awaiter(thisArg, _arguments, P, generator) { // src/ui/history/historyView.svelte var import_obsidian19 = require("obsidian"); -// node_modules/.pnpm/svelte@3.59.0/node_modules/svelte/index.mjs +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/index.js init_polyfill_buffer(); // src/ui/history/components/logComponent.svelte init_polyfill_buffer(); -// node_modules/.pnpm/svelte@3.59.0/node_modules/svelte/transition/index.mjs +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/transition/index.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@3.59.0/node_modules/svelte/easing/index.mjs +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/easing/index.js init_polyfill_buffer(); function cubicOut(t) { const f = t - 1; return f * f * f + 1; } -// node_modules/.pnpm/svelte@3.59.0/node_modules/svelte/transition/index.mjs +// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/transition/index.js function slide(node, { delay: delay2 = 0, duration = 400, easing = cubicOut, axis = "y" } = {}) { const style = getComputedStyle(node); const opacity = +style.opacity; const primary_property = axis === "y" ? "height" : "width"; const primary_property_value = parseFloat(style[primary_property]); const secondary_properties = axis === "y" ? ["top", "bottom"] : ["left", "right"]; - const capitalized_secondary_properties = secondary_properties.map((e) => `${e[0].toUpperCase()}${e.slice(1)}`); + const capitalized_secondary_properties = secondary_properties.map( + (e) => `${e[0].toUpperCase()}${e.slice(1)}` + ); const padding_start_value = parseFloat(style[`padding${capitalized_secondary_properties[0]}`]); const padding_end_value = parseFloat(style[`padding${capitalized_secondary_properties[1]}`]); const margin_start_value = parseFloat(style[`margin${capitalized_secondary_properties[0]}`]); const margin_end_value = parseFloat(style[`margin${capitalized_secondary_properties[1]}`]); - const border_width_start_value = parseFloat(style[`border${capitalized_secondary_properties[0]}Width`]); - const border_width_end_value = parseFloat(style[`border${capitalized_secondary_properties[1]}Width`]); + const border_width_start_value = parseFloat( + style[`border${capitalized_secondary_properties[0]}Width`] + ); + const border_width_end_value = parseFloat( + style[`border${capitalized_secondary_properties[1]}Width`] + ); return { delay: delay2, duration, @@ -36679,7 +36966,7 @@ function slide(node, { delay: delay2 = 0, duration = 400, easing = cubicOut, axi init_polyfill_buffer(); var import_obsidian18 = require("obsidian"); function add_css(target) { - append_styles(target, "svelte-pmbo0n", "main.svelte-pmbo0n .nav-file-title-content.svelte-pmbo0n{display:flex;align-items:center}"); + append_styles(target, "svelte-1wbh8tp", "main.svelte-1wbh8tp .nav-file-title.svelte-1wbh8tp{align-items:center}"); } function create_if_block(ctx) { let div; @@ -36711,8 +36998,9 @@ function create_if_block(ctx) { }, p: noop, d(detaching) { - if (detaching) + if (detaching) { detach(div); + } ctx[7](null); mounted = false; run_all(dispose); @@ -36746,12 +37034,14 @@ function create_fragment(ctx) { ); let t3; let span_data_type_value; + let div3_data_path_value; let div3_aria_label_value; let mounted; let dispose; let if_block = show_if && create_if_block(ctx); return { c() { + var _a2, _b; main = element("main"); div3 = element("div"); div0 = element("div"); @@ -36764,13 +37054,15 @@ function create_fragment(ctx) { t2 = space(); span = element("span"); t3 = text(t3_value); - attr(div0, "class", "tree-item-inner nav-file-title-content svelte-pmbo0n"); + attr(div0, "class", "tree-item-inner nav-file-title-content"); attr(div1, "class", "buttons"); attr(span, "class", "type"); attr(span, "data-type", span_data_type_value = /*diff*/ ctx[0].status); attr(div2, "class", "git-tools"); - attr(div3, "class", "tree-item-self is-clickable nav-file-title"); + attr(div3, "class", "tree-item-self is-clickable nav-file-title svelte-1wbh8tp"); + attr(div3, "data-path", div3_data_path_value = /*diff*/ + ctx[0].vault_path); attr( div3, "aria-label-position", @@ -36779,7 +37071,15 @@ function create_fragment(ctx) { ); attr(div3, "aria-label", div3_aria_label_value = /*diff*/ ctx[0].vault_path); - attr(main, "class", "tree-item nav-file svelte-pmbo0n"); + toggle_class( + div3, + "is-active", + /*view*/ + ((_a2 = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _a2.file) == /*diff*/ + ctx[0].vault_path && /*view*/ + ((_b = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _b.hash) + ); + attr(main, "class", "tree-item nav-file svelte-1wbh8tp"); }, m(target, anchor) { insert(target, main, anchor); @@ -36815,6 +37115,7 @@ function create_fragment(ctx) { } }, p(ctx2, [dirty]) { + var _a2, _b; if (dirty & /*diff*/ 1 && t0_value !== (t0_value = getDisplayPath( /*diff*/ @@ -36849,6 +37150,11 @@ function create_fragment(ctx) { ctx2[0].status)) { attr(span, "data-type", span_data_type_value); } + if (dirty & /*diff*/ + 1 && div3_data_path_value !== (div3_data_path_value = /*diff*/ + ctx2[0].vault_path)) { + attr(div3, "data-path", div3_data_path_value); + } if (dirty & /*side*/ 8) { attr( @@ -36863,12 +37169,24 @@ function create_fragment(ctx) { ctx2[0].vault_path)) { attr(div3, "aria-label", div3_aria_label_value); } + if (dirty & /*view, diff*/ + 3) { + toggle_class( + div3, + "is-active", + /*view*/ + ((_a2 = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _a2.file) == /*diff*/ + ctx2[0].vault_path && /*view*/ + ((_b = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _b.hash) + ); + } }, i: noop, o: noop, d(detaching) { - if (detaching) + if (detaching) { detach(main); + } if (if_block) if_block.d(); mounted = false; @@ -36995,6 +37313,15 @@ function create_else_block(ctx) { set_style(div0, "padding-right", "5px"); set_style(div0, "display", "flex"); attr(div1, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); + toggle_class( + div1, + "is-collapsed", + /*closed*/ + ctx[4][ + /*entity*/ + ctx[8].title + ] + ); attr(div2, "class", "tree-item-inner nav-folder-title-content svelte-1lnl15d"); attr(div3, "class", "tree-item-self is-clickable nav-folder-title"); attr( @@ -37037,6 +37364,18 @@ function create_else_block(ctx) { }, p(new_ctx, dirty) { ctx = new_ctx; + if (!current || dirty & /*closed, hierarchy*/ + 17) { + toggle_class( + div1, + "is-collapsed", + /*closed*/ + ctx[4][ + /*entity*/ + ctx[8].title + ] + ); + } if ((!current || dirty & /*hierarchy*/ 1) && t2_value !== (t2_value = /*entity*/ ctx[8].title + "")) @@ -37103,8 +37442,9 @@ function create_else_block(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(div4); + } if (if_block) if_block.d(); mounted = false; @@ -37164,8 +37504,9 @@ function create_if_block2(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(div); + } destroy_component(logfilecomponent); } }; @@ -37243,8 +37584,9 @@ function create_if_block_1(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(div); + } destroy_component(logtreecomponent); if (detaching && div_transition) div_transition.end(); @@ -37311,16 +37653,17 @@ function create_each_block(ctx) { current = false; }, d(detaching) { - if_blocks[current_block_type_index].d(detaching); - if (detaching) + if (detaching) { detach(if_block_anchor); + } + if_blocks[current_block_type_index].d(detaching); } }; } function create_fragment2(ctx) { let main; let current; - let each_value = ( + let each_value = ensure_array_like( /*hierarchy*/ ctx[0].children ); @@ -37357,8 +37700,10 @@ function create_fragment2(ctx) { p(ctx2, [dirty]) { if (dirty & /*hierarchy, view, closed, plugin, side, fold*/ 119) { - each_value = /*hierarchy*/ - ctx2[0].children; + each_value = ensure_array_like( + /*hierarchy*/ + ctx2[0].children + ); let i; for (i = 0; i < each_value.length; i += 1) { const child_ctx = get_each_context(ctx2, each_value, i); @@ -37404,8 +37749,9 @@ function create_fragment2(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(main); + } destroy_each(each_blocks, detaching); } }; @@ -37494,8 +37840,9 @@ function create_if_block_2(ctx) { set_data(t, t_value); }, d(detaching) { - if (detaching) + if (detaching) { detach(div); + } } }; } @@ -37575,8 +37922,9 @@ function create_if_block3(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(div); + } if_blocks[current_block_type_index].d(); if (detaching && div_transition) div_transition.end(); @@ -37586,7 +37934,7 @@ function create_if_block3(ctx) { function create_else_block2(ctx) { let each_1_anchor; let current; - let each_value = ( + let each_value = ensure_array_like( /*log*/ ctx[0].diff.files ); @@ -37616,8 +37964,10 @@ function create_else_block2(ctx) { p(ctx2, dirty) { if (dirty & /*view, log*/ 3) { - each_value = /*log*/ - ctx2[0].diff.files; + each_value = ensure_array_like( + /*log*/ + ctx2[0].diff.files + ); let i; for (i = 0; i < each_value.length; i += 1) { const child_ctx = get_each_context2(ctx2, each_value, i); @@ -37654,9 +38004,10 @@ function create_else_block2(ctx) { current = false; }, d(detaching) { - destroy_each(each_blocks, detaching); - if (detaching) + if (detaching) { detach(each_1_anchor); + } + destroy_each(each_blocks, detaching); } }; } @@ -37812,6 +38163,12 @@ function create_fragment3(ctx) { if (if_block1) if_block1.c(); attr(div0, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); + toggle_class( + div0, + "is-collapsed", + /*isCollapsed*/ + ctx[4] + ); attr(div1, "class", "tree-item-inner nav-folder-title-content"); attr(div1, "aria-label", div1_aria_label_value = /*log*/ ctx[0].message); @@ -37857,6 +38214,15 @@ function create_fragment3(ctx) { } }, p(ctx2, [dirty]) { + if (!current || dirty & /*isCollapsed*/ + 16) { + toggle_class( + div0, + "is-collapsed", + /*isCollapsed*/ + ctx2[4] + ); + } if ( /*log*/ ctx2[0].refs.length > 0 @@ -37932,8 +38298,9 @@ function create_fragment3(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(main); + } if (if_block0) if_block0.d(); if (if_block1) @@ -37999,7 +38366,7 @@ function create_if_block4(ctx) { let div1; let div0; let current; - let each_value = ( + let each_value = ensure_array_like( /*logs*/ ctx[6] ); @@ -38033,8 +38400,10 @@ function create_if_block4(ctx) { p(ctx2, dirty) { if (dirty & /*view, showTree, logs, plugin*/ 71) { - each_value = /*logs*/ - ctx2[6]; + each_value = ensure_array_like( + /*logs*/ + ctx2[6] + ); let i; for (i = 0; i < each_value.length; i += 1) { const child_ctx = get_each_context3(ctx2, each_value, i); @@ -38071,8 +38440,9 @@ function create_if_block4(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(div1); + } destroy_each(each_blocks, detaching); } }; @@ -38262,8 +38632,9 @@ function create_fragment4(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(main); + } ctx[7](null); ctx[9](null); if (if_block) @@ -38530,10 +38901,10 @@ var DiscardModal = class extends import_obsidian23.Modal { init_polyfill_buffer(); var import_obsidian25 = require("obsidian"); -// node_modules/.pnpm/obsidian-community-lib@2.0.2_fbkkrmn4giwwsr5htt45gr2jni/node_modules/obsidian-community-lib/dist/index.js +// node_modules/.pnpm/github.com+Vinzent03+obsidian-community-lib@e663de4f95c879b40613090da78ea599ff621d24_@codemir_kbfcpig3uak7df3ohthcqq53p4/node_modules/obsidian-community-lib/dist/index.js init_polyfill_buffer(); -// node_modules/.pnpm/obsidian-community-lib@2.0.2_fbkkrmn4giwwsr5htt45gr2jni/node_modules/obsidian-community-lib/dist/utils.js +// node_modules/.pnpm/github.com+Vinzent03+obsidian-community-lib@e663de4f95c879b40613090da78ea599ff621d24_@codemir_kbfcpig3uak7df3ohthcqq53p4/node_modules/obsidian-community-lib/dist/utils.js init_polyfill_buffer(); var feather = __toESM(require_feather()); var import_obsidian24 = require("obsidian"); @@ -38550,7 +38921,7 @@ function hoverPreview(event, view, to) { // src/ui/sourceControl/components/fileComponent.svelte function add_css4(target) { - append_styles(target, "svelte-pmbo0n", "main.svelte-pmbo0n .nav-file-title-content.svelte-pmbo0n{display:flex;align-items:center}"); + append_styles(target, "svelte-1wbh8tp", "main.svelte-1wbh8tp .nav-file-title.svelte-1wbh8tp{align-items:center}"); } function create_if_block5(ctx) { let div; @@ -38582,8 +38953,9 @@ function create_if_block5(ctx) { }, p: noop, d(detaching) { - if (detaching) + if (detaching) { detach(div); + } ctx[11](null); mounted = false; run_all(dispose); @@ -38621,12 +38993,14 @@ function create_fragment5(ctx) { ); let t5; let div4_data_type_value; + let div6_data_path_value; let div6_aria_label_value; let mounted; let dispose; let if_block = show_if && create_if_block5(ctx); return { c() { + var _a2, _b, _c; main = element("main"); div6 = element("div"); div0 = element("div"); @@ -38643,7 +39017,7 @@ function create_fragment5(ctx) { t4 = space(); div4 = element("div"); t5 = text(t5_value); - attr(div0, "class", "tree-item-inner nav-file-title-content svelte-pmbo0n"); + attr(div0, "class", "tree-item-inner nav-file-title-content"); attr(div1, "data-icon", "undo"); attr(div1, "aria-label", "Discard"); attr(div1, "class", "clickable-icon"); @@ -38655,7 +39029,9 @@ function create_fragment5(ctx) { attr(div4, "data-type", div4_data_type_value = /*change*/ ctx[0].working_dir); attr(div5, "class", "git-tools"); - attr(div6, "class", "tree-item-self is-clickable nav-file-title"); + attr(div6, "class", "tree-item-self is-clickable nav-file-title svelte-1wbh8tp"); + attr(div6, "data-path", div6_data_path_value = /*change*/ + ctx[0].vault_path); attr( div6, "aria-label-position", @@ -38664,7 +39040,16 @@ function create_fragment5(ctx) { ); attr(div6, "aria-label", div6_aria_label_value = /*change*/ ctx[0].vault_path); - attr(main, "class", "tree-item nav-file svelte-pmbo0n"); + toggle_class( + div6, + "is-active", + /*view*/ + ((_a2 = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _a2.file) == /*change*/ + ctx[0].vault_path && !/*view*/ + ((_b = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _b.hash) && !/*view*/ + ((_c = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _c.staged) + ); + attr(main, "class", "tree-item nav-file svelte-1wbh8tp"); }, m(target, anchor) { insert(target, main, anchor); @@ -38720,6 +39105,7 @@ function create_fragment5(ctx) { } }, p(ctx2, [dirty]) { + var _a2, _b, _c; if (dirty & /*change*/ 1 && t0_value !== (t0_value = getDisplayPath( /*change*/ @@ -38754,6 +39140,11 @@ function create_fragment5(ctx) { ctx2[0].working_dir)) { attr(div4, "data-type", div4_data_type_value); } + if (dirty & /*change*/ + 1 && div6_data_path_value !== (div6_data_path_value = /*change*/ + ctx2[0].vault_path)) { + attr(div6, "data-path", div6_data_path_value); + } if (dirty & /*side*/ 8) { attr( @@ -38768,12 +39159,25 @@ function create_fragment5(ctx) { ctx2[0].vault_path)) { attr(div6, "aria-label", div6_aria_label_value); } + if (dirty & /*view, change*/ + 3) { + toggle_class( + div6, + "is-active", + /*view*/ + ((_a2 = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _a2.file) == /*change*/ + ctx2[0].vault_path && !/*view*/ + ((_b = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _b.hash) && !/*view*/ + ((_c = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _c.staged) + ); + } }, i: noop, o: noop, d(detaching) { - if (detaching) + if (detaching) { detach(main); + } if (if_block) if_block.d(); ctx[12](null); @@ -38897,7 +39301,7 @@ var fileComponent_default = FileComponent; init_polyfill_buffer(); var import_obsidian26 = require("obsidian"); function add_css5(target) { - append_styles(target, "svelte-pmbo0n", "main.svelte-pmbo0n .nav-file-title-content.svelte-pmbo0n{display:flex;align-items:center}"); + append_styles(target, "svelte-1wbh8tp", "main.svelte-1wbh8tp .nav-file-title.svelte-1wbh8tp{align-items:center}"); } function create_fragment6(ctx) { let main; @@ -38917,6 +39321,7 @@ function create_fragment6(ctx) { ); let t2; let span_data_type_value; + let div2_data_path_value; let div2_aria_label_value; let mounted; let dispose; @@ -38930,12 +39335,14 @@ function create_fragment6(ctx) { div1 = element("div"); span = element("span"); t2 = text(t2_value); - attr(div0, "class", "tree-item-inner nav-file-title-content svelte-pmbo0n"); + attr(div0, "class", "tree-item-inner nav-file-title-content"); attr(span, "class", "type"); attr(span, "data-type", span_data_type_value = /*change*/ ctx[0].working_dir); attr(div1, "class", "git-tools"); - attr(div2, "class", "tree-item-self is-clickable nav-file-title"); + attr(div2, "class", "tree-item-self is-clickable nav-file-title svelte-1wbh8tp"); + attr(div2, "data-path", div2_data_path_value = /*change*/ + ctx[0].vault_path); attr( div2, "aria-label-position", @@ -38944,7 +39351,7 @@ function create_fragment6(ctx) { ); attr(div2, "aria-label", div2_aria_label_value = /*change*/ ctx[0].vault_path); - attr(main, "class", "tree-item nav-file svelte-pmbo0n"); + attr(main, "class", "tree-item nav-file svelte-1wbh8tp"); }, m(target, anchor) { insert(target, main, anchor); @@ -38997,6 +39404,11 @@ function create_fragment6(ctx) { ctx2[0].working_dir)) { attr(span, "data-type", span_data_type_value); } + if (dirty & /*change*/ + 1 && div2_data_path_value !== (div2_data_path_value = /*change*/ + ctx2[0].vault_path)) { + attr(div2, "data-path", div2_data_path_value); + } if (dirty & /*side*/ 2) { attr( @@ -39015,8 +39427,9 @@ function create_fragment6(ctx) { i: noop, o: noop, d(detaching) { - if (detaching) + if (detaching) { detach(main); + } mounted = false; run_all(dispose); } @@ -39068,7 +39481,7 @@ var pulledFileComponent_default = PulledFileComponent; init_polyfill_buffer(); var import_obsidian27 = require("obsidian"); function add_css6(target) { - append_styles(target, "svelte-pmbo0n", "main.svelte-pmbo0n .nav-file-title-content.svelte-pmbo0n{display:flex;align-items:center}"); + append_styles(target, "svelte-1wbh8tp", "main.svelte-1wbh8tp .nav-file-title.svelte-1wbh8tp{align-items:center}"); } function create_if_block6(ctx) { let div; @@ -39094,8 +39507,9 @@ function create_if_block6(ctx) { }, p: noop, d(detaching) { - if (detaching) + if (detaching) { detach(div); + } ctx[10](null); mounted = false; dispose(); @@ -39131,12 +39545,14 @@ function create_fragment7(ctx) { ); let t4; let div3_data_type_value; + let div5_data_path_value; let div5_aria_label_value; let mounted; let dispose; let if_block = show_if && create_if_block6(ctx); return { c() { + var _a2, _b, _c; main = element("main"); div5 = element("div"); div0 = element("div"); @@ -39151,7 +39567,7 @@ function create_fragment7(ctx) { t3 = space(); div3 = element("div"); t4 = text(t4_value); - attr(div0, "class", "tree-item-inner nav-file-title-content svelte-pmbo0n"); + attr(div0, "class", "tree-item-inner nav-file-title-content"); attr(div1, "data-icon", "minus"); attr(div1, "aria-label", "Unstage"); attr(div1, "class", "clickable-icon"); @@ -39160,7 +39576,9 @@ function create_fragment7(ctx) { attr(div3, "data-type", div3_data_type_value = /*change*/ ctx[0].index); attr(div4, "class", "git-tools"); - attr(div5, "class", "tree-item-self is-clickable nav-file-title"); + attr(div5, "class", "tree-item-self is-clickable nav-file-title svelte-1wbh8tp"); + attr(div5, "data-path", div5_data_path_value = /*change*/ + ctx[0].vault_path); attr( div5, "aria-label-position", @@ -39169,7 +39587,16 @@ function create_fragment7(ctx) { ); attr(div5, "aria-label", div5_aria_label_value = /*change*/ ctx[0].vault_path); - attr(main, "class", "tree-item nav-file svelte-pmbo0n"); + toggle_class( + div5, + "is-active", + /*view*/ + ((_a2 = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _a2.file) == /*change*/ + ctx[0].vault_path && !/*view*/ + ((_b = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _b.hash) && /*view*/ + ((_c = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _c.staged) + ); + attr(main, "class", "tree-item nav-file svelte-1wbh8tp"); }, m(target, anchor) { insert(target, main, anchor); @@ -39218,6 +39645,7 @@ function create_fragment7(ctx) { } }, p(ctx2, [dirty]) { + var _a2, _b, _c; if (dirty & /*change*/ 1 && t0_value !== (t0_value = getDisplayPath( /*change*/ @@ -39252,6 +39680,11 @@ function create_fragment7(ctx) { ctx2[0].index)) { attr(div3, "data-type", div3_data_type_value); } + if (dirty & /*change*/ + 1 && div5_data_path_value !== (div5_data_path_value = /*change*/ + ctx2[0].vault_path)) { + attr(div5, "data-path", div5_data_path_value); + } if (dirty & /*side*/ 8) { attr( @@ -39266,12 +39699,25 @@ function create_fragment7(ctx) { ctx2[0].vault_path)) { attr(div5, "aria-label", div5_aria_label_value); } + if (dirty & /*view, change*/ + 3) { + toggle_class( + div5, + "is-active", + /*view*/ + ((_a2 = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _a2.file) == /*change*/ + ctx2[0].vault_path && !/*view*/ + ((_b = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _b.hash) && /*view*/ + ((_c = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _c.staged) + ); + } }, i: noop, o: noop, d(detaching) { - if (detaching) + if (detaching) { detach(main); + } if (if_block) if_block.d(); ctx[11](null); @@ -39374,7 +39820,7 @@ var stagedFileComponent_default = StagedFileComponent; // src/ui/sourceControl/components/treeComponent.svelte init_polyfill_buffer(); function add_css7(target) { - append_styles(target, "svelte-1lnl15d", "main.svelte-1lnl15d .nav-folder-title-content.svelte-1lnl15d{display:flex;align-items:center}"); + append_styles(target, "svelte-hup5mn", "main.svelte-hup5mn .nav-folder-title.svelte-hup5mn{align-items:center}"); } function get_each_context4(ctx, list, i) { const child_ctx = ctx.slice(); @@ -39454,11 +39900,20 @@ function create_else_block3(ctx) { set_style(div0, "padding-right", "5px"); set_style(div0, "display", "flex"); attr(div1, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); - attr(div2, "class", "tree-item-inner nav-folder-title-content svelte-1lnl15d"); + toggle_class( + div1, + "is-collapsed", + /*closed*/ + ctx[5][ + /*entity*/ + ctx[15].title + ] + ); + attr(div2, "class", "tree-item-inner nav-folder-title-content"); set_style(div3, "width", "11px"); attr(div4, "class", "buttons"); attr(div5, "class", "git-tools"); - attr(div6, "class", "tree-item-self is-clickable nav-folder-title"); + attr(div6, "class", "tree-item-self is-clickable nav-folder-title svelte-hup5mn"); attr( div6, "aria-label-position", @@ -39505,6 +39960,18 @@ function create_else_block3(ctx) { }, p(new_ctx, dirty) { ctx = new_ctx; + if (!current || dirty & /*closed, hierarchy*/ + 33) { + toggle_class( + div1, + "is-collapsed", + /*closed*/ + ctx[5][ + /*entity*/ + ctx[15].title + ] + ); + } if ((!current || dirty & /*hierarchy*/ 1) && t2_value !== (t2_value = /*entity*/ ctx[15].title + "")) @@ -39581,8 +40048,9 @@ function create_else_block3(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(div7); + } if_block0.d(); if (if_block1) if_block1.d(); @@ -39676,8 +40144,9 @@ function create_if_block7(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(div); + } if (~current_block_type_index) { if_blocks[current_block_type_index].d(); } @@ -39738,12 +40207,11 @@ function create_else_block_1(ctx) { ctx = new_ctx; }, d(detaching) { - if (detaching) + if (detaching) { detach(div0); - if (detaching) detach(t); - if (detaching) detach(div1); + } mounted = false; run_all(dispose); } @@ -39781,8 +40249,9 @@ function create_if_block_5(ctx) { ctx = new_ctx; }, d(detaching) { - if (detaching) + if (detaching) { detach(div); + } mounted = false; dispose(); } @@ -39869,8 +40338,9 @@ function create_if_block_4(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(div); + } destroy_component(treecomponent); if (detaching && div_transition) div_transition.end(); @@ -40103,16 +40573,17 @@ function create_each_block4(ctx) { current = false; }, d(detaching) { - if_blocks[current_block_type_index].d(detaching); - if (detaching) + if (detaching) { detach(if_block_anchor); + } + if_blocks[current_block_type_index].d(detaching); } }; } function create_fragment8(ctx) { let main; let current; - let each_value = ( + let each_value = ensure_array_like( /*hierarchy*/ ctx[0].children ); @@ -40129,7 +40600,7 @@ function create_fragment8(ctx) { for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } - attr(main, "class", "svelte-1lnl15d"); + attr(main, "class", "svelte-hup5mn"); toggle_class( main, "topLevel", @@ -40147,10 +40618,12 @@ function create_fragment8(ctx) { current = true; }, p(ctx2, [dirty]) { - if (dirty & /*hierarchy, plugin, view, fileType, FileType, closed, fold, side, unstage, stage, discard*/ + if (dirty & /*hierarchy, plugin, view, fileType, closed, fold, side, unstage, stage, discard*/ 2031) { - each_value = /*hierarchy*/ - ctx2[0].children; + each_value = ensure_array_like( + /*hierarchy*/ + ctx2[0].children + ); let i; for (i = 0; i < each_value.length; i += 1) { const child_ctx = get_each_context4(ctx2, each_value, i); @@ -40196,8 +40669,9 @@ function create_fragment8(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(main); + } destroy_each(each_blocks, detaching); } }; @@ -40300,7 +40774,7 @@ var treeComponent_default = TreeComponent; // src/ui/sourceControl/sourceControl.svelte function add_css8(target) { - append_styles(target, "svelte-48bivb", `.commit-msg-input.svelte-48bivb.svelte-48bivb{width:100%;overflow:hidden;resize:none;padding:7px 5px;background-color:var(--background-modifier-form-field)}.git-commit-msg.svelte-48bivb.svelte-48bivb{position:relative;padding:0;width:calc(100% - var(--size-4-8));margin:4px auto}main.svelte-48bivb .git-tools .files-count.svelte-48bivb{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}.git-commit-msg-clear-button.svelte-48bivb.svelte-48bivb{position:absolute;background:transparent;border-radius:50%;color:var(--search-clear-button-color);cursor:var(--cursor);top:-4px;right:2px;bottom:0px;line-height:0;height:var(--input-height);width:28px;margin:auto;padding:0 0;text-align:center;display:flex;justify-content:center;align-items:center;transition:color 0.15s ease-in-out}.git-commit-msg-clear-button.svelte-48bivb.svelte-48bivb:after{content:"";height:var(--search-clear-button-size);width:var(--search-clear-button-size);display:block;background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,");-webkit-mask-repeat:no-repeat}`); + append_styles(target, "svelte-1bvmxec", `.commit-msg-input.svelte-1bvmxec.svelte-1bvmxec{width:100%;overflow:hidden;resize:none;padding:7px 5px;background-color:var(--background-modifier-form-field)}.git-commit-msg.svelte-1bvmxec.svelte-1bvmxec{position:relative;padding:0;width:calc(100% - var(--size-4-8));margin:4px auto}main.svelte-1bvmxec .git-tools .files-count.svelte-1bvmxec{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}.nav-folder-title.svelte-1bvmxec.svelte-1bvmxec{align-items:center}.git-commit-msg-clear-button.svelte-1bvmxec.svelte-1bvmxec{position:absolute;background:transparent;border-radius:50%;color:var(--search-clear-button-color);cursor:var(--cursor);top:-4px;right:2px;bottom:0px;line-height:0;height:var(--input-height);width:28px;margin:auto;padding:0 0;text-align:center;display:flex;justify-content:center;align-items:center;transition:color 0.15s ease-in-out}.git-commit-msg-clear-button.svelte-1bvmxec.svelte-1bvmxec:after{content:"";height:var(--search-clear-button-size);width:var(--search-clear-button-size);display:block;background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,");-webkit-mask-repeat:no-repeat}`); } function get_each_context5(ctx, list, i) { const child_ctx = ctx.slice(); @@ -40325,7 +40799,7 @@ function create_if_block_8(ctx) { return { c() { div = element("div"); - attr(div, "class", "git-commit-msg-clear-button svelte-48bivb"); + attr(div, "class", "git-commit-msg-clear-button svelte-1bvmxec"); attr(div, "aria-label", div_aria_label_value = "Clear"); }, m(target, anchor) { @@ -40342,8 +40816,9 @@ function create_if_block_8(ctx) { }, p: noop, d(detaching) { - if (detaching) + if (detaching) { detach(div); + } mounted = false; dispose(); } @@ -40453,18 +40928,22 @@ function create_if_block8(ctx) { if (if_block2) if_block2.c(); attr(div0, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); + toggle_class(div0, "is-collapsed", !/*stagedOpen*/ + ctx[13]); attr(div1, "class", "tree-item-inner nav-folder-title-content"); attr(div2, "data-icon", "minus"); attr(div2, "aria-label", "Unstage"); attr(div2, "class", "clickable-icon"); attr(div3, "class", "buttons"); - attr(div4, "class", "files-count svelte-48bivb"); + attr(div4, "class", "files-count svelte-1bvmxec"); attr(div5, "class", "git-tools"); - attr(div6, "class", "tree-item-self is-clickable nav-folder-title"); + attr(div6, "class", "tree-item-self is-clickable nav-folder-title svelte-1bvmxec"); attr(div7, "class", "staged tree-item nav-folder"); toggle_class(div7, "is-collapsed", !/*stagedOpen*/ ctx[13]); attr(div8, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); + toggle_class(div8, "is-collapsed", !/*changesOpen*/ + ctx[12]); attr(div9, "class", "tree-item-inner nav-folder-title-content"); attr(div10, "data-icon", "undo"); attr(div10, "aria-label", "Discard"); @@ -40473,10 +40952,10 @@ function create_if_block8(ctx) { attr(div11, "aria-label", "Stage"); attr(div11, "class", "clickable-icon"); attr(div12, "class", "buttons"); - attr(div13, "class", "files-count svelte-48bivb"); + attr(div13, "class", "files-count svelte-1bvmxec"); attr(div14, "class", "git-tools"); - attr(div15, "class", "tree-item-self is-clickable nav-folder-title"); - attr(div16, "class", "changes nav-folder"); + attr(div15, "class", "tree-item-self is-clickable nav-folder-title svelte-1bvmxec"); + attr(div16, "class", "changes tree-item nav-folder"); toggle_class(div16, "is-collapsed", !/*changesOpen*/ ctx[12]); attr(div17, "class", "tree-item-children nav-folder-children"); @@ -40555,6 +41034,11 @@ function create_if_block8(ctx) { } }, p(ctx2, dirty) { + if (!current || dirty[0] & /*stagedOpen*/ + 8192) { + toggle_class(div0, "is-collapsed", !/*stagedOpen*/ + ctx2[13]); + } if ((!current || dirty[0] & /*status*/ 64) && t4_value !== (t4_value = /*status*/ ctx2[6].staged.length + "")) @@ -40587,6 +41071,11 @@ function create_if_block8(ctx) { toggle_class(div7, "is-collapsed", !/*stagedOpen*/ ctx2[13]); } + if (!current || dirty[0] & /*changesOpen*/ + 4096) { + toggle_class(div8, "is-collapsed", !/*changesOpen*/ + ctx2[12]); + } if ((!current || dirty[0] & /*status*/ 64) && t12_value !== (t12_value = /*status*/ ctx2[6].changed.length + "")) @@ -40658,8 +41147,9 @@ function create_if_block8(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(div18); + } ctx[34](null); if (if_block0) if_block0.d(); @@ -40749,8 +41239,9 @@ function create_if_block_6(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(div); + } if_blocks[current_block_type_index].d(); if (detaching && div_transition) div_transition.end(); @@ -40760,7 +41251,7 @@ function create_if_block_6(ctx) { function create_else_block_2(ctx) { let each_1_anchor; let current; - let each_value_2 = ( + let each_value_2 = ensure_array_like( /*status*/ ctx[6].staged ); @@ -40790,8 +41281,10 @@ function create_else_block_2(ctx) { p(ctx2, dirty) { if (dirty[0] & /*status, view, plugin*/ 67) { - each_value_2 = /*status*/ - ctx2[6].staged; + each_value_2 = ensure_array_like( + /*status*/ + ctx2[6].staged + ); let i; for (i = 0; i < each_value_2.length; i += 1) { const child_ctx = get_each_context_2(ctx2, each_value_2, i); @@ -40828,9 +41321,10 @@ function create_else_block_2(ctx) { current = false; }, d(detaching) { - destroy_each(each_blocks, detaching); - if (detaching) + if (detaching) { detach(each_1_anchor); + } + destroy_each(each_blocks, detaching); } }; } @@ -41028,8 +41522,9 @@ function create_if_block_42(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(div); + } if_blocks[current_block_type_index].d(); if (detaching && div_transition) div_transition.end(); @@ -41039,7 +41534,7 @@ function create_if_block_42(ctx) { function create_else_block_12(ctx) { let each_1_anchor; let current; - let each_value_1 = ( + let each_value_1 = ensure_array_like( /*status*/ ctx[6].changed ); @@ -41069,8 +41564,10 @@ function create_else_block_12(ctx) { p(ctx2, dirty) { if (dirty[0] & /*status, view, plugin*/ 67) { - each_value_1 = /*status*/ - ctx2[6].changed; + each_value_1 = ensure_array_like( + /*status*/ + ctx2[6].changed + ); let i; for (i = 0; i < each_value_1.length; i += 1) { const child_ctx = get_each_context_1(ctx2, each_value_1, i); @@ -41107,9 +41604,10 @@ function create_else_block_12(ctx) { current = false; }, d(detaching) { - destroy_each(each_blocks, detaching); - if (detaching) + if (detaching) { detach(each_1_anchor); + } + destroy_each(each_blocks, detaching); } }; } @@ -41271,7 +41769,7 @@ function create_if_block_14(ctx) { attr(div0, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); attr(div1, "class", "tree-item-inner nav-folder-title-content"); attr(span, "class", "tree-item-flair"); - attr(div2, "class", "tree-item-self is-clickable nav-folder-title"); + attr(div2, "class", "tree-item-self is-clickable nav-folder-title svelte-1bvmxec"); attr(div3, "class", "pulled nav-folder"); toggle_class(div3, "is-collapsed", !/*lastPulledFilesOpen*/ ctx[14]); @@ -41344,8 +41842,9 @@ function create_if_block_14(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(div3); + } if (if_block) if_block.d(); mounted = false; @@ -41429,8 +41928,9 @@ function create_if_block_23(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(div); + } if_blocks[current_block_type_index].d(); if (detaching && div_transition) div_transition.end(); @@ -41440,7 +41940,7 @@ function create_if_block_23(ctx) { function create_else_block4(ctx) { let each_1_anchor; let current; - let each_value = ( + let each_value = ensure_array_like( /*lastPulledFiles*/ ctx[7] ); @@ -41470,8 +41970,10 @@ function create_else_block4(ctx) { p(ctx2, dirty) { if (dirty[0] & /*lastPulledFiles, view*/ 130) { - each_value = /*lastPulledFiles*/ - ctx2[7]; + each_value = ensure_array_like( + /*lastPulledFiles*/ + ctx2[7] + ); let i; for (i = 0; i < each_value.length; i += 1) { const child_ctx = get_each_context5(ctx2, each_value, i); @@ -41508,9 +42010,10 @@ function create_else_block4(ctx) { current = false; }, d(detaching) { - destroy_each(each_blocks, detaching); - if (detaching) + if (detaching) { detach(each_1_anchor); + } + destroy_each(each_blocks, detaching); } }; } @@ -41650,6 +42153,7 @@ function create_fragment9(ctx) { let t8; let t9; let div11; + let main_data_type_value; let current; let mounted; let dispose; @@ -41739,13 +42243,14 @@ function create_fragment9(ctx) { /*rows*/ ctx[15] ); - attr(textarea, "class", "commit-msg-input svelte-48bivb"); + attr(textarea, "class", "commit-msg-input svelte-1bvmxec"); attr(textarea, "spellcheck", "true"); attr(textarea, "placeholder", "Commit Message"); - attr(div10, "class", "git-commit-msg svelte-48bivb"); + attr(div10, "class", "git-commit-msg svelte-1bvmxec"); attr(div11, "class", "nav-files-container"); set_style(div11, "position", "relative"); - attr(main, "class", "svelte-48bivb"); + attr(main, "data-type", main_data_type_value = SOURCE_CONTROL_VIEW_CONFIG.type); + attr(main, "class", "svelte-1bvmxec"); }, m(target, anchor) { insert(target, main, anchor); @@ -41924,8 +42429,9 @@ function create_fragment9(ctx) { current = false; }, d(detaching) { - if (detaching) + if (detaching) { detach(main); + } ctx[23](null); ctx[24](null); ctx[25](null); @@ -41967,8 +42473,8 @@ function instance9($$self, $$props, $$invalidate) { plugin.app.workspace.onLayoutReady(() => { window.setTimeout( () => { - buttons.forEach((btn) => (0, import_obsidian28.setIcon)(btn, btn.getAttr("data-icon"), 16)); - (0, import_obsidian28.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); + buttons.forEach((btn) => (0, import_obsidian28.setIcon)(btn, btn.getAttr("data-icon"))); + (0, import_obsidian28.setIcon)(layoutBtn, showTree ? "list" : "folder"); }, 0 ); @@ -42011,6 +42517,21 @@ function instance9($$self, $$props, $$invalidate) { $$invalidate(6, status2 = void 0); return; } + const unPushedCommits = yield plugin.gitManager.getUnpushedCommits(); + buttons.forEach((btn) => { + var _a2, _b; + if (import_obsidian28.Platform.isMobile) { + btn.removeClass("button-border"); + if (btn.id == "push" && unPushedCommits > 0) { + btn.addClass("button-border"); + } + } else { + (_a2 = btn.firstElementChild) === null || _a2 === void 0 ? void 0 : _a2.removeAttribute("color"); + if (btn.id == "push" && unPushedCommits > 0) { + (_b = btn.firstElementChild) === null || _b === void 0 ? void 0 : _b.setAttr("color", "var(--text-accent)"); + } + } + }); $$invalidate(6, status2 = plugin.cachedStatus); if (plugin.lastPulledFiles && plugin.lastPulledFiles != lastPulledFiles) { $$invalidate(7, lastPulledFiles = plugin.lastPulledFiles); @@ -42163,7 +42684,7 @@ function instance9($$self, $$props, $$invalidate) { $: { if (layoutBtn) { layoutBtn.empty(); - (0, import_obsidian28.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); + (0, import_obsidian28.setIcon)(layoutBtn, showTree ? "list" : "folder"); } } } @@ -42434,18 +42955,29 @@ var ObsidianGit = class extends import_obsidian30.Plugin { this.addCommand({ id: "view-file-on-github", name: "Open file on GitHub", - editorCallback: (editor, { file }) => openLineInGitHub(editor, file, this.gitManager) + editorCallback: (editor, { file }) => { + if (file) + return openLineInGitHub(editor, file, this.gitManager); + } }); this.addCommand({ id: "view-history-on-github", name: "Open file history on GitHub", - editorCallback: (_, { file }) => openHistoryInGitHub(file, this.gitManager) + editorCallback: (_, { file }) => { + if (file) + return openHistoryInGitHub(file, this.gitManager); + } }); this.addCommand({ id: "pull", name: "Pull", callback: () => this.promiseQueue.addTask(() => this.pullChangesFromRemote()) }); + this.addCommand({ + id: "fetch", + name: "fetch", + callback: () => this.promiseQueue.addTask(() => this.fetch()) + }); this.addCommand({ id: "switch-to-remote-branch", name: "Switch to remote branch", @@ -42806,6 +43338,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { "git-head-update", this.refreshUpdatedHead.bind(this) ); + this.app.workspace.offref(this.openEvent); this.app.metadataCache.offref(this.modifyEvent); this.app.metadataCache.offref(this.deleteEvent); this.app.metadataCache.offref(this.createEvent); @@ -42875,6 +43408,10 @@ var ObsidianGit = class extends import_obsidian30.Plugin { case "valid": this.gitReady = true; this.setState(0 /* idle */); + this.openEvent = this.app.workspace.on( + "active-leaf-change", + (leaf) => this.handleViewActiveState(leaf) + ); this.modifyEvent = this.app.vault.on("modify", () => { this.debRefresh(); }); @@ -42922,7 +43459,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { if (url) { const confirmOption = "Vault Root"; let dir = await new GeneralModal({ - options: [confirmOption], + options: this.gitManager instanceof IsomorphicGit ? [confirmOption] : [], placeholder: "Enter directory for clone. It needs to be empty or not existent.", allowEmpty: this.gitManager instanceof IsomorphicGit }).open(); @@ -43127,10 +43664,6 @@ var ObsidianGit = class extends import_obsidian30.Plugin { committedFiles = await this.gitManager.commit(cmtMessage); } else { committedFiles = await this.gitManager.commitAll({ - // A type error occurs here because `this.settings.autoCommitMessage` is possibly undefined. - // However, since `this.settings.autoCommitMessage` is always set to string in `this.migrateSettings`, - // `undefined` is never passed here. Therefore, temporarily ignore this error. - // @ts-ignore message: cmtMessage, status: status2, unstagedFiles @@ -43218,6 +43751,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } this.offlineMode = false; this.setState(0 /* idle */); + dispatchEvent(new CustomEvent("git-refresh")); return true; } } @@ -43237,6 +43771,15 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } return pulledFiles.length != 0; } + async fetch() { + if (!await this.remotesAreSet()) { + return; + } + await this.gitManager.fetch(); + this.displayMessage(`Fetched from remote`); + this.offlineMode = false; + dispatchEvent(new CustomEvent("git-refresh")); + } async mayDeleteConflictFile() { const file = this.app.vault.getAbstractFileByPath( this.conflictOutputFile @@ -43610,6 +44153,36 @@ I strongly recommend to use "Source mode" for viewing the conflicted files. For this.app.workspace.openLinkText(this.conflictOutputFile, "/", true); } } + handleViewActiveState(leaf) { + var _a2, _b; + if (!(leaf == null ? void 0 : leaf.view.getState().file)) + return; + const sourceControlLeaf = this.app.workspace.getLeavesOfType(SOURCE_CONTROL_VIEW_CONFIG.type).first(); + const historyLeaf = this.app.workspace.getLeavesOfType(HISTORY_VIEW_CONFIG.type).first(); + (_a2 = sourceControlLeaf == null ? void 0 : sourceControlLeaf.view.containerEl.querySelector(`div.nav-file-title.is-active`)) == null ? void 0 : _a2.removeClass("is-active"); + (_b = historyLeaf == null ? void 0 : historyLeaf.view.containerEl.querySelector(`div.nav-file-title.is-active`)) == null ? void 0 : _b.removeClass("is-active"); + if ((leaf == null ? void 0 : leaf.view) instanceof DiffView) { + const path2 = leaf.view.state.file; + this.lastDiffViewState = leaf.view.getState(); + let el; + if (sourceControlLeaf && leaf.view.state.staged) { + el = sourceControlLeaf.view.containerEl.querySelector( + `div.staged div.nav-file-title[data-path='${path2}']` + ); + } else if (sourceControlLeaf && leaf.view.state.staged === false && !leaf.view.state.hash) { + el = sourceControlLeaf.view.containerEl.querySelector( + `div.changes div.nav-file-title[data-path='${path2}']` + ); + } else if (historyLeaf && leaf.view.state.hash) { + el = historyLeaf.view.containerEl.querySelector( + `div.nav-file-title[data-path='${path2}']` + ); + } + el == null ? void 0 : el.addClass("is-active"); + } else { + this.lastDiffViewState = void 0; + } + } // region: displaying / formatting messages displayMessage(message, timeout = 4 * 1e3) { var _a2; diff --git a/.obsidian/plugins/obsidian-git/manifest.json b/.obsidian/plugins/obsidian-git/manifest.json index a3162b5..a771a54 100644 --- a/.obsidian/plugins/obsidian-git/manifest.json +++ b/.obsidian/plugins/obsidian-git/manifest.json @@ -5,5 +5,5 @@ "isDesktopOnly": false, "fundingUrl": "https://ko-fi.com/vinzent", "js": "main.js", - "version": "2.20.3" + "version": "2.22.0" } diff --git a/.obsidian/plugins/obsidian-git/styles.css b/.obsidian/plugins/obsidian-git/styles.css index 39cdb13..c1d5065 100644 --- a/.obsidian/plugins/obsidian-git/styles.css +++ b/.obsidian/plugins/obsidian-git/styles.css @@ -8,6 +8,11 @@ } } +.workspace-leaf-content[data-type='git-view'] .button-border { + border: 2px solid var(--interactive-accent); + border-radius: var(--radius-s); +} + .workspace-leaf-content[data-type='git-view'] .view-content { padding: 0; } diff --git a/.obsidian/plugins/obsidian-linter/main.js b/.obsidian/plugins/obsidian-linter/main.js index 716e349..1a42d38 100644 --- a/.obsidian/plugins/obsidian-linter/main.js +++ b/.obsidian/plugins/obsidian-linter/main.js @@ -3,79 +3,79 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ -var bp=Object.create;var mn=Object.defineProperty;var Fl=Object.getOwnPropertyDescriptor;var vp=Object.getOwnPropertyNames;var xp=Object.getPrototypeOf,wp=Object.prototype.hasOwnProperty;var Jr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Rl=(e,t)=>{for(var i in t)mn(e,i,{get:t[i],enumerable:!0})},Dl=(e,t,i,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of vp(t))!wp.call(e,r)&&r!==i&&mn(e,r,{get:()=>t[r],enumerable:!(n=Fl(t,r))||n.enumerable});return e};var gn=(e,t,i)=>(i=e!=null?bp(xp(e)):{},Dl(t||!e||!e.__esModule?mn(i,"default",{value:e,enumerable:!0}):i,e)),kp=e=>Dl(mn({},"__esModule",{value:!0}),e),T=(e,t,i,n)=>{for(var r=n>1?void 0:n?Fl(t,i):t,a=e.length-1,s;a>=0;a--)(s=e[a])&&(r=(n?s(t,i,r):s(r))||r);return n&&r&&mn(t,i,r),r};var Nl=(e,t,i)=>{if(!t.has(e))throw TypeError("Cannot "+i)};var Ue=(e,t,i)=>(Nl(e,t,"read from private field"),i?i.call(e):t.get(e)),Bt=(e,t,i)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,i)},jl=(e,t,i,n)=>(Nl(e,t,"write to private field"),n?n.call(e,i):t.set(e,i),i);var sa=Jr((Lc,aa)=>{(function(e,t){"use strict";typeof define=="function"&&define.amd?define(t):typeof aa=="object"&&aa.exports?aa.exports=t():e.log=t()})(Lc,function(){"use strict";var e=function(){},t="undefined",i=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"];function r(h,v){var w=h[v];if(typeof w.bind=="function")return w.bind(h);try{return Function.prototype.bind.call(w,h)}catch{return function(){return Function.prototype.apply.apply(w,[h,arguments])}}}function a(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function s(h){return h==="debug"&&(h="log"),typeof console===t?!1:h==="trace"&&i?a:console[h]!==void 0?r(console,h):console.log!==void 0?r(console,"log"):e}function o(h,v){for(var w=0;w=0&&M<=z.levels.SILENT){if(S=M,D!==!1&&q(M),o.call(z,M,h),typeof console===t&&M{var C=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32},ee=-1,te=1,W=0;C.Diff=function(e,t){return[e,t]};C.prototype.diff_main=function(e,t,i,n){typeof n>"u"&&(this.Diff_Timeout<=0?n=Number.MAX_VALUE:n=new Date().getTime()+this.Diff_Timeout*1e3);var r=n;if(e==null||t==null)throw new Error("Null input. (diff_main)");if(e==t)return e?[new C.Diff(W,e)]:[];typeof i>"u"&&(i=!0);var a=i,s=this.diff_commonPrefix(e,t),o=e.substring(0,s);e=e.substring(s),t=t.substring(s),s=this.diff_commonSuffix(e,t);var l=e.substring(e.length-s);e=e.substring(0,e.length-s),t=t.substring(0,t.length-s);var d=this.diff_compute_(e,t,a,r);return o&&d.unshift(new C.Diff(W,o)),l&&d.push(new C.Diff(W,l)),this.diff_cleanupMerge(d),d};C.prototype.diff_compute_=function(e,t,i,n){var r;if(!e)return[new C.Diff(te,t)];if(!t)return[new C.Diff(ee,e)];var a=e.length>t.length?e:t,s=e.length>t.length?t:e,o=a.indexOf(s);if(o!=-1)return r=[new C.Diff(te,a.substring(0,o)),new C.Diff(W,s),new C.Diff(te,a.substring(o+s.length))],e.length>t.length&&(r[0][0]=r[2][0]=ee),r;if(s.length==1)return[new C.Diff(ee,e),new C.Diff(te,t)];var l=this.diff_halfMatch_(e,t);if(l){var d=l[0],c=l[1],u=l[2],m=l[3],g=l[4],h=this.diff_main(d,u,i,n),v=this.diff_main(c,m,i,n);return h.concat([new C.Diff(W,g)],v)}return i&&e.length>100&&t.length>100?this.diff_lineMode_(e,t,n):this.diff_bisect_(e,t,n)};C.prototype.diff_lineMode_=function(e,t,i){var n=this.diff_linesToChars_(e,t);e=n.chars1,t=n.chars2;var r=n.lineArray,a=this.diff_main(e,t,!1,i);this.diff_charsToLines_(a,r),this.diff_cleanupSemantic(a),a.push(new C.Diff(W,""));for(var s=0,o=0,l=0,d="",c="";s=1&&l>=1){a.splice(s-o-l,o+l),s=s-o-l;for(var u=this.diff_main(d,c,!1,i),m=u.length-1;m>=0;m--)a.splice(s,0,u[m]);s=s+u.length}l=0,o=0,d="",c="";break}s++}return a.pop(),a};C.prototype.diff_bisect_=function(e,t,i){for(var n=e.length,r=t.length,a=Math.ceil((n+r)/2),s=a,o=2*a,l=new Array(o),d=new Array(o),c=0;ci);z++){for(var S=-z+g;S<=z-h;S+=2){var L=s+S,q;S==-z||S!=z&&l[L-1]n)h+=2;else if(_>r)g+=2;else if(m){var A=s+u-S;if(A>=0&&A=F)return this.diff_bisectSplit_(e,t,q,_,i)}}}for(var M=-z+v;M<=z-w;M+=2){var A=s+M,F;M==-z||M!=z&&d[A-1]n)w+=2;else if(D>r)v+=2;else if(!m){var L=s+u-M;if(L>=0&&L=F)return this.diff_bisectSplit_(e,t,q,_,i)}}}}return[new C.Diff(ee,e),new C.Diff(te,t)]};C.prototype.diff_bisectSplit_=function(e,t,i,n,r){var a=e.substring(0,i),s=t.substring(0,n),o=e.substring(i),l=t.substring(n),d=this.diff_main(a,s,!1,r),c=this.diff_main(o,l,!1,r);return d.concat(c)};C.prototype.diff_linesToChars_=function(e,t){var i=[],n={};i[0]="";function r(l){for(var d="",c=0,u=-1,m=i.length;un?e=e.substring(i-n):it.length?e:t,n=e.length>t.length?t:e;if(i.length<4||n.length*2=h.length?[q,_,A,F,L]:null}var s=a(i,n,Math.ceil(i.length/4)),o=a(i,n,Math.ceil(i.length/2)),l;if(!s&&!o)return null;o?s?l=s[4].length>o[4].length?s:o:l=o:l=s;var d,c,u,m;e.length>t.length?(d=l[0],c=l[1],u=l[2],m=l[3]):(u=l[0],m=l[1],d=l[2],c=l[3]);var g=l[4];return[d,c,u,m,g]};C.prototype.diff_cleanupSemantic=function(e){for(var t=!1,i=[],n=0,r=null,a=0,s=0,o=0,l=0,d=0;a0?i[n-1]:-1,s=0,o=0,l=0,d=0,r=null,t=!0)),a++;for(t&&this.diff_cleanupMerge(e),this.diff_cleanupSemanticLossless(e),a=1;a=g?(m>=c.length/2||m>=u.length/2)&&(e.splice(a,0,new C.Diff(W,u.substring(0,m))),e[a-1][1]=c.substring(0,c.length-m),e[a+1][1]=u.substring(m),a++):(g>=c.length/2||g>=u.length/2)&&(e.splice(a,0,new C.Diff(W,c.substring(0,g))),e[a-1][0]=te,e[a-1][1]=u.substring(0,u.length-g),e[a+1][0]=ee,e[a+1][1]=c.substring(g),a++),a++}a++}};C.prototype.diff_cleanupSemanticLossless=function(e){function t(g,h){if(!g||!h)return 6;var v=g.charAt(g.length-1),w=h.charAt(0),z=v.match(C.nonAlphaNumericRegex_),S=w.match(C.nonAlphaNumericRegex_),L=z&&v.match(C.whitespaceRegex_),q=S&&w.match(C.whitespaceRegex_),_=L&&v.match(C.linebreakRegex_),A=q&&w.match(C.linebreakRegex_),F=_&&g.match(C.blanklineEndRegex_),M=A&&h.match(C.blanklineStartRegex_);return F||M?5:_||A?4:z&&!L&&q?3:L||q?2:z||S?1:0}for(var i=1;i=u&&(u=m,l=n,d=r,c=a)}e[i-1][1]!=l&&(l?e[i-1][1]=l:(e.splice(i-1,1),i--),e[i][1]=d,c?e[i+1][1]=c:(e.splice(i+1,1),i--))}i++}};C.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;C.whitespaceRegex_=/\s/;C.linebreakRegex_=/[\r\n]/;C.blanklineEndRegex_=/\n\r?\n$/;C.blanklineStartRegex_=/^\r?\n\r?\n/;C.prototype.diff_cleanupEfficiency=function(e){for(var t=!1,i=[],n=0,r=null,a=0,s=!1,o=!1,l=!1,d=!1;a0?i[n-1]:-1,l=d=!1),t=!0)),a++;t&&this.diff_cleanupMerge(e)};C.prototype.diff_cleanupMerge=function(e){e.push(new C.Diff(W,""));for(var t=0,i=0,n=0,r="",a="",s;t1?(i!==0&&n!==0&&(s=this.diff_commonPrefix(a,r),s!==0&&(t-i-n>0&&e[t-i-n-1][0]==W?e[t-i-n-1][1]+=a.substring(0,s):(e.splice(0,0,new C.Diff(W,a.substring(0,s))),t++),a=a.substring(s),r=r.substring(s)),s=this.diff_commonSuffix(a,r),s!==0&&(e[t][1]=a.substring(a.length-s)+e[t][1],a=a.substring(0,a.length-s),r=r.substring(0,r.length-s))),t-=i+n,e.splice(t,i+n),r.length&&(e.splice(t,0,new C.Diff(ee,r)),t++),a.length&&(e.splice(t,0,new C.Diff(te,a)),t++),t++):t!==0&&e[t-1][0]==W?(e[t-1][1]+=e[t][1],e.splice(t,1)):t++,n=0,i=0,r="",a="";break}e[e.length-1][1]===""&&e.pop();var o=!1;for(t=1;tt));s++)r=i,a=n;return e.length!=s&&e[s][0]===ee?a:a+(t-r)};C.prototype.diff_prettyHtml=function(e){for(var t=[],i=/&/g,n=//g,a=/\n/g,s=0;s");switch(o){case te:t[s]=''+d+"";break;case ee:t[s]=''+d+"";break;case W:t[s]=""+d+"";break}}return t.join("")};C.prototype.diff_text1=function(e){for(var t=[],i=0;ithis.Match_MaxBits)throw new Error("Pattern too long for this browser.");var n=this.match_alphabet_(t),r=this;function a(q,_){var A=q/t.length,F=Math.abs(i-_);return r.Match_Distance?A+F/r.Match_Distance:F?1:A}var s=this.Match_Threshold,o=e.indexOf(t,i);o!=-1&&(s=Math.min(a(0,o),s),o=e.lastIndexOf(t,i+t.length),o!=-1&&(s=Math.min(a(0,o),s)));var l=1<=h;z--){var S=n[e.charAt(z-1)];if(g===0?w[z]=(w[z+1]<<1|1)&S:w[z]=(w[z+1]<<1|1)&S|((m[z+1]|m[z])<<1|1)|m[z+1],w[z]&l){var L=a(g,z-1);if(L<=s)if(s=L,o=z-1,o>i)h=Math.max(1,2*i-o);else break}}if(a(g+1,i)>s)break;m=w}return o};C.prototype.match_alphabet_=function(e){for(var t={},i=0;i"u")n=e,r=this.diff_main(n,t,!0),r.length>2&&(this.diff_cleanupSemantic(r),this.diff_cleanupEfficiency(r));else if(e&&typeof e=="object"&&typeof t>"u"&&typeof i>"u")r=e,n=this.diff_text1(r);else if(typeof e=="string"&&t&&typeof t=="object"&&typeof i>"u")n=e,r=t;else if(typeof e=="string"&&typeof t=="string"&&i&&typeof i=="object")n=e,r=i;else throw new Error("Unknown call format to patch_make.");if(r.length===0)return[];for(var a=[],s=new C.patch_obj,o=0,l=0,d=0,c=n,u=n,m=0;m=2*this.Patch_Margin&&o&&(this.patch_addContext_(s,c),a.push(s),s=new C.patch_obj,o=0,c=u,l=d);break}g!==te&&(l+=h.length),g!==ee&&(d+=h.length)}return o&&(this.patch_addContext_(s,c),a.push(s)),a};C.prototype.patch_deepCopy=function(e){for(var t=[],i=0;ithis.Match_MaxBits?(l=this.match_main(t,o.substring(0,this.Match_MaxBits),s),l!=-1&&(d=this.match_main(t,o.substring(o.length-this.Match_MaxBits),s+o.length-this.Match_MaxBits),(d==-1||l>=d)&&(l=-1))):l=this.match_main(t,o,s),l==-1)r[a]=!1,n-=e[a].length2-e[a].length1;else{r[a]=!0,n=l-s;var c;if(d==-1?c=t.substring(l,l+o.length):c=t.substring(l,d+this.Match_MaxBits),o==c)t=t.substring(0,l)+this.diff_text2(e[a].diffs)+t.substring(l+o.length);else{var u=this.diff_main(o,c,!1);if(o.length>this.Match_MaxBits&&this.diff_levenshtein(u)/o.length>this.Patch_DeleteThreshold)r[a]=!1;else{this.diff_cleanupSemanticLossless(u);for(var m=0,g,h=0;ha[0][1].length){var s=t-a[0][1].length;a[0][1]=i.substring(a[0][1].length)+a[0][1],r.start1-=s,r.start2-=s,r.length1+=s,r.length2+=s}if(r=e[e.length-1],a=r.diffs,a.length==0||a[a.length-1][0]!=W)a.push(new C.Diff(W,i)),r.length1+=t,r.length2+=t;else if(t>a[a.length-1][1].length){var s=t-a[a.length-1][1].length;a[a.length-1][1]+=i.substring(0,s),r.length1+=s,r.length2+=s}return i};C.prototype.patch_splitMax=function(e){for(var t=this.Match_MaxBits,i=0;i2*t?(o.length1+=c.length,r+=c.length,l=!1,o.diffs.push(new C.Diff(d,c)),n.diffs.shift()):(c=c.substring(0,t-o.length1-this.Patch_Margin),o.length1+=c.length,r+=c.length,d===W?(o.length2+=c.length,a+=c.length):l=!1,o.diffs.push(new C.Diff(d,c)),c==n.diffs[0][1]?n.diffs.shift():n.diffs[0][1]=n.diffs[0][1].substring(c.length))}s=this.diff_text2(o.diffs),s=s.substring(s.length-this.Patch_Margin);var u=this.diff_text1(n.diffs).substring(0,this.Patch_Margin);u!==""&&(o.length1+=u.length,o.length2+=u.length,o.diffs.length!==0&&o.diffs[o.diffs.length-1][0]===W?o.diffs[o.diffs.length-1][1]+=u:o.diffs.push(new C.Diff(W,u))),l||e.splice(++i,0,o)}}};C.prototype.patch_toText=function(e){for(var t=[],i=0;i()=>(t||e((t={exports:{}}).exports,t),t.exports),ec=(e,t)=>{for(var i in t)zn(e,i,{get:t[i],enumerable:!0})},ic=(e,t,i,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Up(t))!Qp.call(e,r)&&r!==i&&zn(e,r,{get:()=>t[r],enumerable:!(n=Xl(t,r))||n.enumerable});return e};var da=(e,t,i)=>(i=e!=null?Vp(Gp(e)):{},ic(t||!e||!e.__esModule?zn(i,"default",{value:e,enumerable:!0}):i,e)),Zp=e=>ic(zn({},"__esModule",{value:!0}),e),A=(e,t,i,n)=>{for(var r=n>1?void 0:n?Xl(t,i):t,a=e.length-1,s;a>=0;a--)(s=e[a])&&(r=(n?s(t,i,r):s(r))||r);return n&&r&&zn(t,i,r),r};var tc=(e,t,i)=>{if(!t.has(e))throw TypeError("Cannot "+i)};var Ve=(e,t,i)=>(tc(e,t,"read from private field"),i?i.call(e):t.get(e)),Yt=(e,t,i)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,i)},nc=(e,t,i,n)=>(tc(e,t,"write to private field"),n?n.call(e,i):t.set(e,i),i);var wo=ca((Vc,ya)=>{(function(e,t){"use strict";typeof define=="function"&&define.amd?define(t):typeof ya=="object"&&ya.exports?ya.exports=t():e.log=t()})(Vc,function(){"use strict";var e=function(){},t="undefined",i=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"];function r(h,v){var x=h[v];if(typeof x.bind=="function")return x.bind(h);try{return Function.prototype.bind.call(x,h)}catch{return function(){return Function.prototype.apply.apply(x,[h,arguments])}}}function a(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function s(h){return h==="debug"&&(h="log"),typeof console===t?!1:h==="trace"&&i?a:console[h]!==void 0?r(console,h):console.log!==void 0?r(console,"log"):e}function o(h,v){for(var x=0;x=0&&q<=w.levels.SILENT){if(S=q,D!==!1&&M(q),o.call(w,q,h),typeof console===t&&q{var C=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32},ee=-1,te=1,W=0;C.Diff=function(e,t){return[e,t]};C.prototype.diff_main=function(e,t,i,n){typeof n>"u"&&(this.Diff_Timeout<=0?n=Number.MAX_VALUE:n=new Date().getTime()+this.Diff_Timeout*1e3);var r=n;if(e==null||t==null)throw new Error("Null input. (diff_main)");if(e==t)return e?[new C.Diff(W,e)]:[];typeof i>"u"&&(i=!0);var a=i,s=this.diff_commonPrefix(e,t),o=e.substring(0,s);e=e.substring(s),t=t.substring(s),s=this.diff_commonSuffix(e,t);var l=e.substring(e.length-s);e=e.substring(0,e.length-s),t=t.substring(0,t.length-s);var d=this.diff_compute_(e,t,a,r);return o&&d.unshift(new C.Diff(W,o)),l&&d.push(new C.Diff(W,l)),this.diff_cleanupMerge(d),d};C.prototype.diff_compute_=function(e,t,i,n){var r;if(!e)return[new C.Diff(te,t)];if(!t)return[new C.Diff(ee,e)];var a=e.length>t.length?e:t,s=e.length>t.length?t:e,o=a.indexOf(s);if(o!=-1)return r=[new C.Diff(te,a.substring(0,o)),new C.Diff(W,s),new C.Diff(te,a.substring(o+s.length))],e.length>t.length&&(r[0][0]=r[2][0]=ee),r;if(s.length==1)return[new C.Diff(ee,e),new C.Diff(te,t)];var l=this.diff_halfMatch_(e,t);if(l){var d=l[0],c=l[1],u=l[2],m=l[3],g=l[4],h=this.diff_main(d,u,i,n),v=this.diff_main(c,m,i,n);return h.concat([new C.Diff(W,g)],v)}return i&&e.length>100&&t.length>100?this.diff_lineMode_(e,t,n):this.diff_bisect_(e,t,n)};C.prototype.diff_lineMode_=function(e,t,i){var n=this.diff_linesToChars_(e,t);e=n.chars1,t=n.chars2;var r=n.lineArray,a=this.diff_main(e,t,!1,i);this.diff_charsToLines_(a,r),this.diff_cleanupSemantic(a),a.push(new C.Diff(W,""));for(var s=0,o=0,l=0,d="",c="";s=1&&l>=1){a.splice(s-o-l,o+l),s=s-o-l;for(var u=this.diff_main(d,c,!1,i),m=u.length-1;m>=0;m--)a.splice(s,0,u[m]);s=s+u.length}l=0,o=0,d="",c="";break}s++}return a.pop(),a};C.prototype.diff_bisect_=function(e,t,i){for(var n=e.length,r=t.length,a=Math.ceil((n+r)/2),s=a,o=2*a,l=new Array(o),d=new Array(o),c=0;ci);w++){for(var S=-w+g;S<=w-h;S+=2){var E=s+S,M;S==-w||S!=w&&l[E-1]n)h+=2;else if(B>r)g+=2;else if(m){var L=s+u-S;if(L>=0&&L=_)return this.diff_bisectSplit_(e,t,M,B,i)}}}for(var q=-w+v;q<=w-x;q+=2){var L=s+q,_;q==-w||q!=w&&d[L-1]n)x+=2;else if(D>r)v+=2;else if(!m){var E=s+u-q;if(E>=0&&E=_)return this.diff_bisectSplit_(e,t,M,B,i)}}}}return[new C.Diff(ee,e),new C.Diff(te,t)]};C.prototype.diff_bisectSplit_=function(e,t,i,n,r){var a=e.substring(0,i),s=t.substring(0,n),o=e.substring(i),l=t.substring(n),d=this.diff_main(a,s,!1,r),c=this.diff_main(o,l,!1,r);return d.concat(c)};C.prototype.diff_linesToChars_=function(e,t){var i=[],n={};i[0]="";function r(l){for(var d="",c=0,u=-1,m=i.length;un?e=e.substring(i-n):it.length?e:t,n=e.length>t.length?t:e;if(i.length<4||n.length*2=h.length?[M,B,L,_,E]:null}var s=a(i,n,Math.ceil(i.length/4)),o=a(i,n,Math.ceil(i.length/2)),l;if(!s&&!o)return null;o?s?l=s[4].length>o[4].length?s:o:l=o:l=s;var d,c,u,m;e.length>t.length?(d=l[0],c=l[1],u=l[2],m=l[3]):(u=l[0],m=l[1],d=l[2],c=l[3]);var g=l[4];return[d,c,u,m,g]};C.prototype.diff_cleanupSemantic=function(e){for(var t=!1,i=[],n=0,r=null,a=0,s=0,o=0,l=0,d=0;a0?i[n-1]:-1,s=0,o=0,l=0,d=0,r=null,t=!0)),a++;for(t&&this.diff_cleanupMerge(e),this.diff_cleanupSemanticLossless(e),a=1;a=g?(m>=c.length/2||m>=u.length/2)&&(e.splice(a,0,new C.Diff(W,u.substring(0,m))),e[a-1][1]=c.substring(0,c.length-m),e[a+1][1]=u.substring(m),a++):(g>=c.length/2||g>=u.length/2)&&(e.splice(a,0,new C.Diff(W,c.substring(0,g))),e[a-1][0]=te,e[a-1][1]=u.substring(0,u.length-g),e[a+1][0]=ee,e[a+1][1]=c.substring(g),a++),a++}a++}};C.prototype.diff_cleanupSemanticLossless=function(e){function t(g,h){if(!g||!h)return 6;var v=g.charAt(g.length-1),x=h.charAt(0),w=v.match(C.nonAlphaNumericRegex_),S=x.match(C.nonAlphaNumericRegex_),E=w&&v.match(C.whitespaceRegex_),M=S&&x.match(C.whitespaceRegex_),B=E&&v.match(C.linebreakRegex_),L=M&&x.match(C.linebreakRegex_),_=B&&g.match(C.blanklineEndRegex_),q=L&&h.match(C.blanklineStartRegex_);return _||q?5:B||L?4:w&&!E&&M?3:E||M?2:w||S?1:0}for(var i=1;i=u&&(u=m,l=n,d=r,c=a)}e[i-1][1]!=l&&(l?e[i-1][1]=l:(e.splice(i-1,1),i--),e[i][1]=d,c?e[i+1][1]=c:(e.splice(i+1,1),i--))}i++}};C.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;C.whitespaceRegex_=/\s/;C.linebreakRegex_=/[\r\n]/;C.blanklineEndRegex_=/\n\r?\n$/;C.blanklineStartRegex_=/^\r?\n\r?\n/;C.prototype.diff_cleanupEfficiency=function(e){for(var t=!1,i=[],n=0,r=null,a=0,s=!1,o=!1,l=!1,d=!1;a0?i[n-1]:-1,l=d=!1),t=!0)),a++;t&&this.diff_cleanupMerge(e)};C.prototype.diff_cleanupMerge=function(e){e.push(new C.Diff(W,""));for(var t=0,i=0,n=0,r="",a="",s;t1?(i!==0&&n!==0&&(s=this.diff_commonPrefix(a,r),s!==0&&(t-i-n>0&&e[t-i-n-1][0]==W?e[t-i-n-1][1]+=a.substring(0,s):(e.splice(0,0,new C.Diff(W,a.substring(0,s))),t++),a=a.substring(s),r=r.substring(s)),s=this.diff_commonSuffix(a,r),s!==0&&(e[t][1]=a.substring(a.length-s)+e[t][1],a=a.substring(0,a.length-s),r=r.substring(0,r.length-s))),t-=i+n,e.splice(t,i+n),r.length&&(e.splice(t,0,new C.Diff(ee,r)),t++),a.length&&(e.splice(t,0,new C.Diff(te,a)),t++),t++):t!==0&&e[t-1][0]==W?(e[t-1][1]+=e[t][1],e.splice(t,1)):t++,n=0,i=0,r="",a="";break}e[e.length-1][1]===""&&e.pop();var o=!1;for(t=1;tt));s++)r=i,a=n;return e.length!=s&&e[s][0]===ee?a:a+(t-r)};C.prototype.diff_prettyHtml=function(e){for(var t=[],i=/&/g,n=//g,a=/\n/g,s=0;s");switch(o){case te:t[s]=''+d+"";break;case ee:t[s]=''+d+"";break;case W:t[s]=""+d+"";break}}return t.join("")};C.prototype.diff_text1=function(e){for(var t=[],i=0;ithis.Match_MaxBits)throw new Error("Pattern too long for this browser.");var n=this.match_alphabet_(t),r=this;function a(M,B){var L=M/t.length,_=Math.abs(i-B);return r.Match_Distance?L+_/r.Match_Distance:_?1:L}var s=this.Match_Threshold,o=e.indexOf(t,i);o!=-1&&(s=Math.min(a(0,o),s),o=e.lastIndexOf(t,i+t.length),o!=-1&&(s=Math.min(a(0,o),s)));var l=1<=h;w--){var S=n[e.charAt(w-1)];if(g===0?x[w]=(x[w+1]<<1|1)&S:x[w]=(x[w+1]<<1|1)&S|((m[w+1]|m[w])<<1|1)|m[w+1],x[w]&l){var E=a(g,w-1);if(E<=s)if(s=E,o=w-1,o>i)h=Math.max(1,2*i-o);else break}}if(a(g+1,i)>s)break;m=x}return o};C.prototype.match_alphabet_=function(e){for(var t={},i=0;i"u")n=e,r=this.diff_main(n,t,!0),r.length>2&&(this.diff_cleanupSemantic(r),this.diff_cleanupEfficiency(r));else if(e&&typeof e=="object"&&typeof t>"u"&&typeof i>"u")r=e,n=this.diff_text1(r);else if(typeof e=="string"&&t&&typeof t=="object"&&typeof i>"u")n=e,r=t;else if(typeof e=="string"&&typeof t=="string"&&i&&typeof i=="object")n=e,r=i;else throw new Error("Unknown call format to patch_make.");if(r.length===0)return[];for(var a=[],s=new C.patch_obj,o=0,l=0,d=0,c=n,u=n,m=0;m=2*this.Patch_Margin&&o&&(this.patch_addContext_(s,c),a.push(s),s=new C.patch_obj,o=0,c=u,l=d);break}g!==te&&(l+=h.length),g!==ee&&(d+=h.length)}return o&&(this.patch_addContext_(s,c),a.push(s)),a};C.prototype.patch_deepCopy=function(e){for(var t=[],i=0;ithis.Match_MaxBits?(l=this.match_main(t,o.substring(0,this.Match_MaxBits),s),l!=-1&&(d=this.match_main(t,o.substring(o.length-this.Match_MaxBits),s+o.length-this.Match_MaxBits),(d==-1||l>=d)&&(l=-1))):l=this.match_main(t,o,s),l==-1)r[a]=!1,n-=e[a].length2-e[a].length1;else{r[a]=!0,n=l-s;var c;if(d==-1?c=t.substring(l,l+o.length):c=t.substring(l,d+this.Match_MaxBits),o==c)t=t.substring(0,l)+this.diff_text2(e[a].diffs)+t.substring(l+o.length);else{var u=this.diff_main(o,c,!1);if(o.length>this.Match_MaxBits&&this.diff_levenshtein(u)/o.length>this.Patch_DeleteThreshold)r[a]=!1;else{this.diff_cleanupSemanticLossless(u);for(var m=0,g,h=0;ha[0][1].length){var s=t-a[0][1].length;a[0][1]=i.substring(a[0][1].length)+a[0][1],r.start1-=s,r.start2-=s,r.length1+=s,r.length2+=s}if(r=e[e.length-1],a=r.diffs,a.length==0||a[a.length-1][0]!=W)a.push(new C.Diff(W,i)),r.length1+=t,r.length2+=t;else if(t>a[a.length-1][1].length){var s=t-a[a.length-1][1].length;a[a.length-1][1]+=i.substring(0,s),r.length1+=s,r.length2+=s}return i};C.prototype.patch_splitMax=function(e){for(var t=this.Match_MaxBits,i=0;i2*t?(o.length1+=c.length,r+=c.length,l=!1,o.diffs.push(new C.Diff(d,c)),n.diffs.shift()):(c=c.substring(0,t-o.length1-this.Patch_Margin),o.length1+=c.length,r+=c.length,d===W?(o.length2+=c.length,a+=c.length):l=!1,o.diffs.push(new C.Diff(d,c)),c==n.diffs[0][1]?n.diffs.shift():n.diffs[0][1]=n.diffs[0][1].substring(c.length))}s=this.diff_text2(o.diffs),s=s.substring(s.length-this.Patch_Margin);var u=this.diff_text1(n.diffs).substring(0,this.Patch_Margin);u!==""&&(o.length1+=u.length,o.length2+=u.length,o.diffs.length!==0&&o.diffs[o.diffs.length-1][0]===W?o.diffs[o.diffs.length-1][1]+=u:o.diffs.push(new C.Diff(W,u))),l||e.splice(++i,0,o)}}};C.prototype.patch_toText=function(e){for(var t=[],i=0;i{Ru.exports=zv;var vb=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],xb=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wb=["Su","Mo","Tu","We","Th","Fr","Sa"],fs=["January","February","March","April","May","June","July","August","September","October","November","December"],kb=["ACDT","ACST","ACWT","ADT","ACT","AEDT","AEST","AFT","AKDT","AKST","ALMT","AMT","AMST","ANAT","ANAST","AQTT","ART","AST","AWDT","AWST","AZOT","AZOST","AZT","AZST","BNT","BDT","BOT","BRT","BRST","BST","BTT","B","CAST","CAT","CCT","CDT","CEDT","CEST","CET","CHADT","CHAST","CHOT","CHOST","CHsT","CHUT","CIT","CKT","CLST","CLT","COT","CST","CVT","CWST","CXT","C","DAVT","DDUT","DST","EASST","EAST","EAT","ECT","EDT","EEDT","EEST","EET","EGT","EGST","EST","E","EIT","FET","FJT","FJST","FKST","FKT","FNT","F","GALT","GAMT","GET","GFT","GILT","GMT","GST","GYT","G","HADT","HAST","HKT","HOVT","HOVST","HST","ICT","IDT","IOT","IRDT","IRKT","IRKST","IRST","IST","JST","KGT","KOST","KRAT","KRAST","KST","KUYT","LHDT","LHST","LINT","L","MAGT","MAGST","MART","MAWT","MDT","MeST","MHT","MIST","MMT","MSD","MSK","MST","MUT","MVT","MYT","NCT","NDT","NFT","N","NOVT","NOVST","NPT","NRT","NST","NT","NUT","NZDT","NZST","OMST","OMSST","ORAT","O","PDT","PET","PETT","PETST","PGT","PHT","PHOT","PKT","PMDT","PMST","PONT","PST","PWT","PYT","PYST","P","QYZT","RET","ROTT","R","SAKT","SAMT","SAST","SBT","SCT","SGT","SRT","SLT","SLST","SRET","SST","SYOT","TAHT","TFT","TJT","TKT","TLT","TMT","TOT","TRUT","TVT","T","ULAT","ULAST","UTC","UYST","UYT","UZT","U","VET","VLAT","VLAST","VOLT","VUT","V","WAKT","WAT","WAST","WDT","WEDT","WEST","WET","WFT","WGT","WGST","WIB","WIT","WITA","WST","WT","YAKT","YAKST","YAP","YEK","YEKS"],ys=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],zb=new RegExp(vb.join("|"),"i"),Sb=new RegExp(xb.join("|"),"i"),Tb=new RegExp("\\b("+wb.join("|")+")\\b","i"),Ab=new RegExp(fs.join("|"),"i"),Eb=new RegExp(ys.join("|"),"i"),Lb=new RegExp("\\b("+kb.join("|")+")\\b","i"),Ob=/(\d+)(st|nd|rd|th)\b/i,Cb=/(\d{1,4})([/.-])(\d{1,2})[/.-](\d{1,4})/,qb=/((\+|-)(12:00|11:00|10:00|09:30|09:00|08:00|07:00|06:00|05:00|04:00|03:30|03:00|02:00|01:00|00:00|01:00|02:00|03:00|03:30|04:00|04:30|05:00|05:30|05:45|06:00|06:30|07:00|08:00|08:45|09:00|09:30|10:00|10:30|11:00|12:00|12:45|13:00|14:00))$/,Mb=/((\+|-)(1200|1100|1000|0930|0900|0800|0700|0600|0500|0400|0330|0300|0200|0100|0000|0100|0200|0300|0330|0400|0430|0500|0530|0545|0600|0630|0700|0800|0845|0900|0930|1000|1030|1100|1200|1245|1300|1400))$/,Jt="("+["AM?","PM?"].join("|")+")",Ib=new RegExp("0\\d\\:\\d{1,2}\\:\\d{1,2}(\\s*)"+Jt,"i"),_b=new RegExp("0\\d\\:\\d{1,2}(\\s*)"+Jt,"i"),Bb=new RegExp("0\\d(\\s*)"+Jt,"i"),Fb=new RegExp("\\d{1,2}\\:\\d{1,2}\\:\\d{1,2}(\\s*)"+Jt,"i"),Rb=new RegExp("\\d{1,2}\\:\\d{1,2}(\\s*)"+Jt,"i"),Db=new RegExp("\\d{1,2}(\\s*)"+Jt,"i"),Nb=new RegExp("\\d{1,2}"),jb=new RegExp(fs.join("|")+"-\\d{2}","i"),Pb=new RegExp(ys.join("|")+"-\\d{2}","i"),yl=new RegExp("(\\d{1,2})(\\D+)("+fs.join("|")+"|"+ys.join("|")+")(\\2)('?\\d{2,4})"),Kb=/\d{2}:\d{2}:\d{2}\.\d{3}/,$b=/\d{2}:\d{2}:\d{2}\.\d{2}/,Hb=/\d{2}:\d{2}:\d{2}\.\d{1}/,Yb=/T\d{2}:\d{2}:\d{2}/,Wb=/0\d:\d{2}:\d{2}/,Vb=/0\d:\d{2}/,Ub=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}/,Gb=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{3}/,Qb=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{2}/,Zb=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{1}/,Jb=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]/,Xb=/24:00:\d{2}/,ev=/24:00:\d{2}\.\d{3}/,iv=/24:00:\d{2}\.\d{2}/,tv=/24:00:\d{2}\.\d{1}/,nv=/24:00/,rv=/\d{4}/,av=/\d{2}/,sv=/'\d{2}/,Mu=/0\d/,Iu=/\d{1,2}/,ov=/0\d/,lv=/\d{1,2}/,cv=/^([1-9])\/([1-9]|0[1-9])$/,dv=/^([1-9])\/(1[012])$/,uv=/^(0[1-9]|[12][0-9]|3[01])\/([1-9])$/,pv=/^(0[1-9]|[12][0-9]|3[01])\/(1[012]|0[1-9])$/,mv=/^([1-9])(\D)([1-9][0-9])$/,gv=/^([1-9])(\D)([0][0-9])$/,hv=/^(0[1-9]|1[012])(\D)([1-9][0-9])$/,fv=/^(0[1-9]|1[012])(\D)([0][0-9])$/,bl=/([/][M]|[M][/]|[MM]|[MMMM])/,_u=/(D)/,vl=/(Y)/,Bu=/\d+\D.+$/,Fu=/\D+(\d+)($|Z)/,yv=/M\s*\d{1,2}\b.+$/,bv=/M\D+(0[1-9])\b.+$/,hs=/\d+\s+(H|h|k)/,vv=/\b(at)\b/i,xv=/\d{13}/,wv=/\d{10}/,kv={"/":"MDY",".":"DMY","-":"YMD"};function zv(e,t){var i=e.toString();if(t=t||{},t.preferredOrder=t.preferredOrder||kv,i=i.replace(xv,"x"),i=i.replace(wv,"X"),i=i.replace(vv,"[$1]"),i.match(yl)){let[,d,c,u,m,g]=i.match(yl),h=[];d.length===2&&d[0]==="0"||t.preferLongFormat?h.push("DD"):h.push("D"),h.push(c),u.match(fs)?h.push("MMMM"):u.match(ys)?h.push("MMM"):h.push(u),h.push(m),g[0]==="'"?h.push("'YY"):g.length===2?h.push("YY"):(g.length,h.push("YYYY"));var n=h.join("");i=i.replace(yl,n)}i=i.replace(zb,"dddd"),i=i.replace(Sb,"ddd"),i=i.replace(Tb,"dd"),i=i.replace(Ob,"Do"),i=i.replace(Ab,"MMMM"),i=i.replace(Eb,"MMM"),i=i.replace(Cb,Sv.bind(null,t)),i=i.replace(Lb,d=>"["+d+"]"),i=i.replace(qb,"Z"),i=i.replace(Mb,"ZZ"),i=i.replace(Kb,"HH:mm:ss.SSS"),i=i.replace($b,"HH:mm:ss.SS"),i=i.replace(Hb,"HH:mm:ss.S"),i=i.replace(Yb,"THH:mm:ss");function r(d){return function(c,u,m){return d+u+(m[0].toUpperCase()===m[0]?"A":"a")}}if(i=i.replace(Ib,r("hh:mm:ss")),i=i.replace(Fb,r("h:mm:ss")),i=i.replace(_b,r("hh:mm")),i=i.replace(Rb,r("h:mm")),i=i.replace(Bb,r("hh")),i=i.replace(Db,r("h")),i=i.replace(Wb,"HH:mm:ss"),i=i.replace(Gb,"H:mm:ss.SSS"),i=i.replace(ev,(t.preferLongFormat?"kk":"k")+":mm:ss.SSS"),i=i.replace(Qb,"H:mm:ss.SS"),i=i.replace(iv,(t.preferLongFormat?"kk":"k")+":mm:ss.SS"),i=i.replace(Zb,"H:mm:ss.S"),i=i.replace(tv,(t.preferLongFormat?"kk":"k")+":mm:ss.S"),i=i.replace(Ub,"H:mm:ss"),i=i.replace(Xb,(t.preferLongFormat?"kk":"k")+":mm:ss"),i=i.replace(Vb,"HH:mm"),i=i.replace(Jb,"H:mm"),i=i.replace(nv,(t.preferLongFormat?"kk":"k")+":mm"),i=i.replace(rv,"YYYY"),i=i.replace(sv,"'YY"),i=i.replace(jb,"MMMM-YY"),i=i.replace(Pb,"MMM-YY"),i=i.replace(cv,"D/M"),i=i.replace(dv,"D/MM"),i=i.replace(uv,"DD/M"),i=i.replace(pv,"DD/MM"),i=i.replace(mv,"M$2YY"),i=i.replace(hv,"MM$2YY"),i=i.replace(gv,"M$2DD"),i=i.replace(fv,"MM$2DD"),i.match(bl)){var a=/0\d\.\d{2}|\d{2}\.\d{2}/,s=/\d{1}\.\d{2}/;i=i.replace(a,"H.mm"),i=i.replace(s,"h.mm")}if(!i.match(bl)&&i.match(vl)&&(i=i.replace(ov,"MM")),!i.match(bl)&&i.match(vl)&&(i=i.replace(lv,t.preferLongFormat?"MM":"M")),i.match(bv)&&!i.match(hs)&&(i=i.replace(Mu,"DD")),i.match(yv)&&!i.match(hs)&&(i=i.replace(Iu,t.preferLongFormat?"DD":"D")),!i.match(_u)&&i.match(Bu)&&!i.match(hs)&&(i=i.replace(Mu,"DD")),!i.match(_u)&&i.match(Bu)&&!i.match(hs)&&(i=i.replace(Iu,t.preferLongFormat?"DD":"D")),i.match(vl)||(i=i.replace(av,"YY")),i.match(Fu)){var o=i.match(Fu)[1],l;o==="00"?l="HH":o==="24"?l=t.preferLongFormat?"kk":"k":o>12?l=t.preferLongFormat?"HH":"H":o[0]==="0"?l=t.preferLongFormat?"hh":"h":l=t.preferLongFormat?"hh":"k",i=i.replace(Nb,l)}return i.length<1&&(i=void 0),i}function Sv(e,t,i,n,r,a){var s,o=0,l=1,d=2,c=[i.length===1,r.length===1,a.length===1],u=[i[0]==="0",r[0]==="0",a[0]==="0"],m=i.length===4,g=r.length===4,h=a.length===4,v=typeof e.preferredOrder=="string"?e.preferredOrder:e.preferredOrder[n];i=parseInt(i,10),r=parseInt(r,10),a=parseInt(a,10),s=[i,r,a],v=v.toUpperCase();var w=function(S,L){c[S]!==c[L]&&!u[S]&&!u[L]&&(c[S]=!0,c[L]=!0)};if(i>31)return w(l,d),s[0]=m?"YYYY":"YY",s[1]=c[l]?"M":"MM",s[2]=c[d]?"D":"DD",s.join(n);if(i>12)return w(o,l),s[0]=c[o]?"D":"DD",s[1]=c[l]?"M":"MM",s[2]=h?"YYYY":"YY",s.join(n);if(r>12)return w(o,l),s[0]=c[o]?"M":"MM",s[1]=c[l]?"D":"DD",s[2]=h?"YYYY":"YY",s.join(n);if(a>31)return s[2]=h?"YYYY":"YY",v[0]==="M"&&i<13?(w(o,l),s[0]=c[o]?"M":"MM",s[1]=c[l]?"D":"DD",s.join(n)):(w(o,l),s[0]=c[o]?"D":"DD",s[1]=c[l]?"M":"MM",s.join(n));let z=[m,g,h];return w(v.indexOf("D"),v.indexOf("M")),s[v.indexOf("D")]=c[v.indexOf("D")]?"D":"DD",s[v.indexOf("M")]=c[v.indexOf("M")]?"M":"MM",s[v.indexOf("Y")]=z[v.indexOf("Y")]?"YYYY":"YY",s.join(n)}});var Pu=Jr((hM,ju)=>{var Nu=Du();ju.exports=Nu;typeof window<"u"&&window.moment&&(window.moment.parseFormat=Nu)});var Ox={};Rl(Ox,{default:()=>Rs});module.exports=kp(Ox);var oe=require("obsidian");function tc(e){return typeof e>"u"||e===null}function zp(e){return typeof e=="object"&&e!==null}function Sp(e){return Array.isArray(e)?e:tc(e)?[]:[e]}function Tp(e,t){var i,n,r,a;if(t)for(a=Object.keys(t),i=0,n=a.length;i{sp.exports=ix;var Zb=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Jb=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],Xb=["Su","Mo","Tu","We","Th","Fr","Sa"],Ms=["January","February","March","April","May","June","July","August","September","October","November","December"],ev=["ACDT","ACST","ACWT","ADT","ACT","AEDT","AEST","AFT","AKDT","AKST","ALMT","AMT","AMST","ANAT","ANAST","AQTT","ART","AST","AWDT","AWST","AZOT","AZOST","AZT","AZST","BNT","BDT","BOT","BRT","BRST","BST","BTT","B","CAST","CAT","CCT","CDT","CEDT","CEST","CET","CHADT","CHAST","CHOT","CHOST","CHsT","CHUT","CIT","CKT","CLST","CLT","COT","CST","CVT","CWST","CXT","C","DAVT","DDUT","DST","EASST","EAST","EAT","ECT","EDT","EEDT","EEST","EET","EGT","EGST","EST","E","EIT","FET","FJT","FJST","FKST","FKT","FNT","F","GALT","GAMT","GET","GFT","GILT","GMT","GST","GYT","G","HADT","HAST","HKT","HOVT","HOVST","HST","ICT","IDT","IOT","IRDT","IRKT","IRKST","IRST","IST","JST","KGT","KOST","KRAT","KRAST","KST","KUYT","LHDT","LHST","LINT","L","MAGT","MAGST","MART","MAWT","MDT","MeST","MHT","MIST","MMT","MSD","MSK","MST","MUT","MVT","MYT","NCT","NDT","NFT","N","NOVT","NOVST","NPT","NRT","NST","NT","NUT","NZDT","NZST","OMST","OMSST","ORAT","O","PDT","PET","PETT","PETST","PGT","PHT","PHOT","PKT","PMDT","PMST","PONT","PST","PWT","PYT","PYST","P","QYZT","RET","ROTT","R","SAKT","SAMT","SAST","SBT","SCT","SGT","SRT","SLT","SLST","SRET","SST","SYOT","TAHT","TFT","TJT","TKT","TLT","TMT","TOT","TRUT","TVT","T","ULAT","ULAST","UTC","UYST","UYT","UZT","U","VET","VLAT","VLAST","VOLT","VUT","V","WAKT","WAT","WAST","WDT","WEDT","WEST","WET","WFT","WGT","WGST","WIB","WIT","WITA","WST","WT","YAKT","YAKST","YAP","YEK","YEKS"],qs=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],iv=new RegExp(Zb.join("|"),"i"),tv=new RegExp(Jb.join("|"),"i"),nv=new RegExp("\\b("+Xb.join("|")+")\\b","i"),rv=new RegExp(Ms.join("|"),"i"),av=new RegExp(qs.join("|"),"i"),sv=new RegExp("\\b("+ev.join("|")+")\\b","i"),ov=/(\d+)(st|nd|rd|th)\b/i,lv=/(\d{1,4})([/.-])(\d{1,2})[/.-](\d{1,4})/,cv=/((\+|-)(12:00|11:00|10:00|09:30|09:00|08:00|07:00|06:00|05:00|04:00|03:30|03:00|02:00|01:00|00:00|01:00|02:00|03:00|03:30|04:00|04:30|05:00|05:30|05:45|06:00|06:30|07:00|08:00|08:45|09:00|09:30|10:00|10:30|11:00|12:00|12:45|13:00|14:00))$/,dv=/((\+|-)(1200|1100|1000|0930|0900|0800|0700|0600|0500|0400|0330|0300|0200|0100|0000|0100|0200|0300|0330|0400|0430|0500|0530|0545|0600|0630|0700|0800|0845|0900|0930|1000|1030|1100|1200|1245|1300|1400))$/,ln="("+["AM?","PM?"].join("|")+")",uv=new RegExp("0\\d\\:\\d{1,2}\\:\\d{1,2}(\\s*)"+ln,"i"),pv=new RegExp("0\\d\\:\\d{1,2}(\\s*)"+ln,"i"),mv=new RegExp("0\\d(\\s*)"+ln,"i"),gv=new RegExp("\\d{1,2}\\:\\d{1,2}\\:\\d{1,2}(\\s*)"+ln,"i"),hv=new RegExp("\\d{1,2}\\:\\d{1,2}(\\s*)"+ln,"i"),fv=new RegExp("\\d{1,2}(\\s*)"+ln,"i"),yv=new RegExp("\\d{1,2}"),bv=new RegExp(Ms.join("|")+"-\\d{2}","i"),vv=new RegExp(qs.join("|")+"-\\d{2}","i"),Bl=new RegExp("(\\d{1,2})(\\D+)("+Ms.join("|")+"|"+qs.join("|")+")(\\2)('?\\d{2,4})"),xv=/\d{2}:\d{2}:\d{2}\.\d{3}/,wv=/\d{2}:\d{2}:\d{2}\.\d{2}/,kv=/\d{2}:\d{2}:\d{2}\.\d{1}/,zv=/T\d{2}:\d{2}:\d{2}/,Sv=/0\d:\d{2}:\d{2}/,Av=/0\d:\d{2}/,Lv=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}/,Tv=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{3}/,Ev=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{2}/,Ov=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{1}/,Cv=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]/,Mv=/24:00:\d{2}/,qv=/24:00:\d{2}\.\d{3}/,Iv=/24:00:\d{2}\.\d{2}/,Bv=/24:00:\d{2}\.\d{1}/,Fv=/24:00/,_v=/\d{4}/,Rv=/\d{2}/,Dv=/'\d{2}/,ip=/0\d/,tp=/\d{1,2}/,Nv=/0\d/,jv=/\d{1,2}/,Kv=/^([1-9])\/([1-9]|0[1-9])$/,Yv=/^([1-9])\/(1[012])$/,Pv=/^(0[1-9]|[12][0-9]|3[01])\/([1-9])$/,Hv=/^(0[1-9]|[12][0-9]|3[01])\/(1[012]|0[1-9])$/,$v=/^([1-9])(\D)([1-9][0-9])$/,Wv=/^([1-9])(\D)([0][0-9])$/,Vv=/^(0[1-9]|1[012])(\D)([1-9][0-9])$/,Uv=/^(0[1-9]|1[012])(\D)([0][0-9])$/,Fl=/([/][M]|[M][/]|[MM]|[MMMM])/,np=/(D)/,_l=/(Y)/,rp=/\d+\D.+$/,ap=/\D+(\d+)($|Z)/,Gv=/M\s*\d{1,2}\b.+$/,Qv=/M\D+(0[1-9])\b.+$/,Cs=/\d+\s+(H|h|k)/,Zv=/\b(at)\b/i,Jv=/\d{13}/,Xv=/\d{10}/,ex={"/":"MDY",".":"DMY","-":"YMD"};function ix(e,t){var i=e.toString();if(t=t||{},t.preferredOrder=t.preferredOrder||ex,i=i.replace(Jv,"x"),i=i.replace(Xv,"X"),i=i.replace(Zv,"[$1]"),i.match(Bl)){let[,d,c,u,m,g]=i.match(Bl),h=[];d.length===2&&d[0]==="0"||t.preferLongFormat?h.push("DD"):h.push("D"),h.push(c),u.match(Ms)?h.push("MMMM"):u.match(qs)?h.push("MMM"):h.push(u),h.push(m),g[0]==="'"?h.push("'YY"):g.length===2?h.push("YY"):(g.length,h.push("YYYY"));var n=h.join("");i=i.replace(Bl,n)}i=i.replace(iv,"dddd"),i=i.replace(tv,"ddd"),i=i.replace(nv,"dd"),i=i.replace(ov,"Do"),i=i.replace(rv,"MMMM"),i=i.replace(av,"MMM"),i=i.replace(lv,tx.bind(null,t)),i=i.replace(sv,d=>"["+d+"]"),i=i.replace(cv,"Z"),i=i.replace(dv,"ZZ"),i=i.replace(xv,"HH:mm:ss.SSS"),i=i.replace(wv,"HH:mm:ss.SS"),i=i.replace(kv,"HH:mm:ss.S"),i=i.replace(zv,"THH:mm:ss");function r(d){return function(c,u,m){return d+u+(m[0].toUpperCase()===m[0]?"A":"a")}}if(i=i.replace(uv,r("hh:mm:ss")),i=i.replace(gv,r("h:mm:ss")),i=i.replace(pv,r("hh:mm")),i=i.replace(hv,r("h:mm")),i=i.replace(mv,r("hh")),i=i.replace(fv,r("h")),i=i.replace(Sv,"HH:mm:ss"),i=i.replace(Tv,"H:mm:ss.SSS"),i=i.replace(qv,(t.preferLongFormat?"kk":"k")+":mm:ss.SSS"),i=i.replace(Ev,"H:mm:ss.SS"),i=i.replace(Iv,(t.preferLongFormat?"kk":"k")+":mm:ss.SS"),i=i.replace(Ov,"H:mm:ss.S"),i=i.replace(Bv,(t.preferLongFormat?"kk":"k")+":mm:ss.S"),i=i.replace(Lv,"H:mm:ss"),i=i.replace(Mv,(t.preferLongFormat?"kk":"k")+":mm:ss"),i=i.replace(Av,"HH:mm"),i=i.replace(Cv,"H:mm"),i=i.replace(Fv,(t.preferLongFormat?"kk":"k")+":mm"),i=i.replace(_v,"YYYY"),i=i.replace(Dv,"'YY"),i=i.replace(bv,"MMMM-YY"),i=i.replace(vv,"MMM-YY"),i=i.replace(Kv,"D/M"),i=i.replace(Yv,"D/MM"),i=i.replace(Pv,"DD/M"),i=i.replace(Hv,"DD/MM"),i=i.replace($v,"M$2YY"),i=i.replace(Vv,"MM$2YY"),i=i.replace(Wv,"M$2DD"),i=i.replace(Uv,"MM$2DD"),i.match(Fl)){var a=/0\d\.\d{2}|\d{2}\.\d{2}/,s=/\d{1}\.\d{2}/;i=i.replace(a,"H.mm"),i=i.replace(s,"h.mm")}if(!i.match(Fl)&&i.match(_l)&&(i=i.replace(Nv,"MM")),!i.match(Fl)&&i.match(_l)&&(i=i.replace(jv,t.preferLongFormat?"MM":"M")),i.match(Qv)&&!i.match(Cs)&&(i=i.replace(ip,"DD")),i.match(Gv)&&!i.match(Cs)&&(i=i.replace(tp,t.preferLongFormat?"DD":"D")),!i.match(np)&&i.match(rp)&&!i.match(Cs)&&(i=i.replace(ip,"DD")),!i.match(np)&&i.match(rp)&&!i.match(Cs)&&(i=i.replace(tp,t.preferLongFormat?"DD":"D")),i.match(_l)||(i=i.replace(Rv,"YY")),i.match(ap)){var o=i.match(ap)[1],l;o==="00"?l="HH":o==="24"?l=t.preferLongFormat?"kk":"k":o>12?l=t.preferLongFormat?"HH":"H":o[0]==="0"?l=t.preferLongFormat?"hh":"h":l=t.preferLongFormat?"hh":"k",i=i.replace(yv,l)}return i.length<1&&(i=void 0),i}function tx(e,t,i,n,r,a){var s,o=0,l=1,d=2,c=[i.length===1,r.length===1,a.length===1],u=[i[0]==="0",r[0]==="0",a[0]==="0"],m=i.length===4,g=r.length===4,h=a.length===4,v=typeof e.preferredOrder=="string"?e.preferredOrder:e.preferredOrder[n];i=parseInt(i,10),r=parseInt(r,10),a=parseInt(a,10),s=[i,r,a],v=v.toUpperCase();var x=function(S,E){c[S]!==c[E]&&!u[S]&&!u[E]&&(c[S]=!0,c[E]=!0)};if(i>31)return x(l,d),s[0]=m?"YYYY":"YY",s[1]=c[l]?"M":"MM",s[2]=c[d]?"D":"DD",s.join(n);if(i>12)return x(o,l),s[0]=c[o]?"D":"DD",s[1]=c[l]?"M":"MM",s[2]=h?"YYYY":"YY",s.join(n);if(r>12)return x(o,l),s[0]=c[o]?"M":"MM",s[1]=c[l]?"D":"DD",s[2]=h?"YYYY":"YY",s.join(n);if(a>31)return s[2]=h?"YYYY":"YY",v[0]==="M"&&i<13?(x(o,l),s[0]=c[o]?"M":"MM",s[1]=c[l]?"D":"DD",s.join(n)):(x(o,l),s[0]=c[o]?"D":"DD",s[1]=c[l]?"M":"MM",s.join(n));let w=[m,g,h];return x(v.indexOf("D"),v.indexOf("M")),s[v.indexOf("D")]=c[v.indexOf("D")]?"D":"DD",s[v.indexOf("M")]=c[v.indexOf("M")]?"M":"MM",s[v.indexOf("Y")]=w[v.indexOf("Y")]?"YYYY":"YY",s.join(n)}});var dp=ca((Gq,cp)=>{var lp=op();cp.exports=lp;typeof window<"u"&&window.moment&&(window.moment.parseFormat=lp)});var lw={};ec(lw,{default:()=>Xs});module.exports=Zp(lw);var oe=require("obsidian");function vc(e){return typeof e>"u"||e===null}function Jp(e){return typeof e=="object"&&e!==null}function Xp(e){return Array.isArray(e)?e:vc(e)?[]:[e]}function em(e,t){var i,n,r,a;if(t)for(a=Object.keys(t),i=0,n=a.length;io&&(a=" ... ",t=n-o+a.length),i-n>o&&(s=" ...",i=n+o-s.length),{str:a+e.slice(t,i).replace(/\t/g,"\u2192")+s,pos:n-t+a.length}}function $s(e,t){return xe.repeat(" ",t-e.length)+e}function _p(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!="number"&&(t.indent=1),typeof t.linesBefore!="number"&&(t.linesBefore=3),typeof t.linesAfter!="number"&&(t.linesAfter=2);for(var i=/\r?\n|\r|\0/g,n=[0],r=[],a,s=-1;a=i.exec(e.buffer);)r.push(a.index),n.push(a.index+a[0].length),e.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var o="",l,d,c=Math.min(e.line+t.linesAfter,r.length).toString().length,u=t.maxLength-(t.indent+c+3);for(l=1;l<=t.linesBefore&&!(s-l<0);l++)d=Ks(e.buffer,n[s-l],r[s-l],e.position-(n[s]-n[s-l]),u),o=xe.repeat(" ",t.indent)+$s((e.line-l+1).toString(),c)+" | "+d.str+` -`+o;for(d=Ks(e.buffer,n[s],r[s],e.position,u),o+=xe.repeat(" ",t.indent)+$s((e.line+1).toString(),c)+" | "+d.str+` +`+e.mark.snippet),n+" "+i):n}function An(e,t){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=t,this.message=xc(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}An.prototype=Object.create(Error.prototype);An.prototype.constructor=An;An.prototype.toString=function(t){return this.name+": "+xc(this,t)};var De=An;function ro(e,t,i,n,r){var a="",s="",o=Math.floor(r/2)-1;return n-t>o&&(a=" ... ",t=n-o+a.length),i-n>o&&(s=" ...",i=n+o-s.length),{str:a+e.slice(t,i).replace(/\t/g,"\u2192")+s,pos:n-t+a.length}}function ao(e,t){return xe.repeat(" ",t-e.length)+e}function cm(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!="number"&&(t.indent=1),typeof t.linesBefore!="number"&&(t.linesBefore=3),typeof t.linesAfter!="number"&&(t.linesAfter=2);for(var i=/\r?\n|\r|\0/g,n=[0],r=[],a,s=-1;a=i.exec(e.buffer);)r.push(a.index),n.push(a.index+a[0].length),e.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var o="",l,d,c=Math.min(e.line+t.linesAfter,r.length).toString().length,u=t.maxLength-(t.indent+c+3);for(l=1;l<=t.linesBefore&&!(s-l<0);l++)d=ro(e.buffer,n[s-l],r[s-l],e.position-(n[s]-n[s-l]),u),o=xe.repeat(" ",t.indent)+ao((e.line-l+1).toString(),c)+" | "+d.str+` +`+o;for(d=ro(e.buffer,n[s],r[s],e.position,u),o+=xe.repeat(" ",t.indent)+ao((e.line+1).toString(),c)+" | "+d.str+` `,o+=xe.repeat("-",t.indent+c+3+d.pos)+`^ -`,l=1;l<=t.linesAfter&&!(s+l>=r.length);l++)d=Ks(e.buffer,n[s+l],r[s+l],e.position-(n[s]-n[s+l]),u),o+=xe.repeat(" ",t.indent)+$s((e.line+l+1).toString(),c)+" | "+d.str+` -`;return o.replace(/\n$/,"")}var Bp=_p,Fp=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Rp=["scalar","sequence","mapping"];function Dp(e){var t={};return e!==null&&Object.keys(e).forEach(function(i){e[i].forEach(function(n){t[String(n)]=i})}),t}function Np(e,t){if(t=t||{},Object.keys(t).forEach(function(i){if(Fp.indexOf(i)===-1)throw new Ne('Unknown option "'+i+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(i){return i},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=Dp(t.styleAliases||null),Rp.indexOf(this.kind)===-1)throw new Ne('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var Ie=Np;function Pl(e,t){var i=[];return e[t].forEach(function(n){var r=i.length;i.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(r=s)}),i[r]=n}),i}function jp(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,i;function n(r){r.multi?(e.multi[r.kind].push(r),e.multi.fallback.push(r)):e[r.kind][r.tag]=e.fallback[r.tag]=r}for(t=0,i=arguments.length;t=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),om=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function lm(e){return!(e===null||!om.test(e)||e[e.length-1]==="_")}function cm(e){var t,i;return t=e.replace(/_/g,"").toLowerCase(),i=t[0]==="-"?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?i===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:i*parseFloat(t,10)}var dm=/^[-+]?[0-9]+e/;function um(e,t){var i;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(xe.isNegativeZero(e))return"-0.0";return i=e.toString(10),dm.test(i)?i.replace("e",".e"):i}function pm(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||xe.isNegativeZero(e))}var mm=new Ie("tag:yaml.org,2002:float",{kind:"scalar",resolve:lm,construct:cm,predicate:pm,represent:um,defaultStyle:"lowercase"}),gm=Yp.extend({implicit:[Gp,Xp,sm,mm]}),hm=gm,rc=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),ac=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function fm(e){return e===null?!1:rc.exec(e)!==null||ac.exec(e)!==null}function ym(e){var t,i,n,r,a,s,o,l=0,d=null,c,u,m;if(t=rc.exec(e),t===null&&(t=ac.exec(e)),t===null)throw new Error("Date resolve error");if(i=+t[1],n=+t[2]-1,r=+t[3],!t[4])return new Date(Date.UTC(i,n,r));if(a=+t[4],s=+t[5],o=+t[6],t[7]){for(l=t[7].slice(0,3);l.length<3;)l+="0";l=+l}return t[9]&&(c=+t[10],u=+(t[11]||0),d=(c*60+u)*6e4,t[9]==="-"&&(d=-d)),m=new Date(Date.UTC(i,n,r,a,s,o,l)),d&&m.setTime(m.getTime()-d),m}function bm(e){return e.toISOString()}var vm=new Ie("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:fm,construct:ym,instanceOf:Date,represent:bm});function xm(e){return e==="<<"||e===null}var wm=new Ie("tag:yaml.org,2002:merge",{kind:"scalar",resolve:xm}),Qs=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function km(e){if(e===null)return!1;var t,i,n=0,r=e.length,a=Qs;for(i=0;i64)){if(t<0)return!1;n+=6}return n%8===0}function zm(e){var t,i,n=e.replace(/[\r\n=]/g,""),r=n.length,a=Qs,s=0,o=[];for(t=0;t>16&255),o.push(s>>8&255),o.push(s&255)),s=s<<6|a.indexOf(n.charAt(t));return i=r%4*6,i===0?(o.push(s>>16&255),o.push(s>>8&255),o.push(s&255)):i===18?(o.push(s>>10&255),o.push(s>>2&255)):i===12&&o.push(s>>4&255),new Uint8Array(o)}function Sm(e){var t="",i=0,n,r,a=e.length,s=Qs;for(n=0;n>18&63],t+=s[i>>12&63],t+=s[i>>6&63],t+=s[i&63]),i=(i<<8)+e[n];return r=a%3,r===0?(t+=s[i>>18&63],t+=s[i>>12&63],t+=s[i>>6&63],t+=s[i&63]):r===2?(t+=s[i>>10&63],t+=s[i>>4&63],t+=s[i<<2&63],t+=s[64]):r===1&&(t+=s[i>>2&63],t+=s[i<<4&63],t+=s[64],t+=s[64]),t}function Tm(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var Am=new Ie("tag:yaml.org,2002:binary",{kind:"scalar",resolve:km,construct:zm,predicate:Tm,represent:Sm}),Em=Object.prototype.hasOwnProperty,Lm=Object.prototype.toString;function Om(e){if(e===null)return!0;var t=[],i,n,r,a,s,o=e;for(i=0,n=o.length;i>10)+55296,(e-65536&1023)+56320)}var uc=new Array(256),pc=new Array(256);for(Ji=0;Ji<256;Ji++)uc[Ji]=Hl(Ji)?1:0,pc[Ji]=Hl(Ji);var Ji;function Um(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||sc,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function mc(e,t){var i={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return i.snippet=Bp(i),new Ne(t,i)}function P(e,t){throw mc(e,t)}function ia(e,t){e.onWarning&&e.onWarning.call(null,mc(e,t))}var Yl={YAML:function(t,i,n){var r,a,s;t.version!==null&&P(t,"duplication of %YAML directive"),n.length!==1&&P(t,"YAML directive accepts exactly one argument"),r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),r===null&&P(t,"ill-formed argument of the YAML directive"),a=parseInt(r[1],10),s=parseInt(r[2],10),a!==1&&P(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=s<2,s!==1&&s!==2&&ia(t,"unsupported YAML version of the document")},TAG:function(t,i,n){var r,a;n.length!==2&&P(t,"TAG directive accepts exactly two arguments"),r=n[0],a=n[1],cc.test(r)||P(t,"ill-formed tag handle (first argument) of the TAG directive"),Ri.call(t.tagMap,r)&&P(t,'there is a previously declared suffix for "'+r+'" tag handle'),dc.test(a)||P(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{P(t,"tag prefix is malformed: "+a)}t.tagMap[r]=a}};function Fi(e,t,i,n){var r,a,s,o;if(t1&&(e.result+=xe.repeat(` -`,t-1))}function Gm(e,t,i){var n,r,a,s,o,l,d,c,u=e.kind,m=e.result,g;if(g=e.input.charCodeAt(e.position),We(g)||Rt(g)||g===35||g===38||g===42||g===33||g===124||g===62||g===39||g===34||g===37||g===64||g===96||(g===63||g===45)&&(r=e.input.charCodeAt(e.position+1),We(r)||i&&Rt(r)))return!1;for(e.kind="scalar",e.result="",a=s=e.position,o=!1;g!==0;){if(g===58){if(r=e.input.charCodeAt(e.position+1),We(r)||i&&Rt(r))break}else if(g===35){if(n=e.input.charCodeAt(e.position-1),We(n))break}else{if(e.position===e.lineStart&&ra(e)||i&&Rt(g))break;if(hi(g))if(l=e.line,d=e.lineStart,c=e.lineIndent,he(e,!1,-1),e.lineIndent>=t){o=!0,g=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=l,e.lineStart=d,e.lineIndent=c;break}}o&&(Fi(e,a,s,!1),Js(e,e.line-l),a=s=e.position,o=!1),Xi(g)||(s=e.position+1),g=e.input.charCodeAt(++e.position)}return Fi(e,a,s,!1),e.result?!0:(e.kind=u,e.result=m,!1)}function Qm(e,t){var i,n,r;if(i=e.input.charCodeAt(e.position),i!==39)return!1;for(e.kind="scalar",e.result="",e.position++,n=r=e.position;(i=e.input.charCodeAt(e.position))!==0;)if(i===39)if(Fi(e,n,e.position,!0),i=e.input.charCodeAt(++e.position),i===39)n=e.position,e.position++,r=e.position;else return!0;else hi(i)?(Fi(e,n,r,!0),Js(e,he(e,!1,t)),n=r=e.position):e.position===e.lineStart&&ra(e)?P(e,"unexpected end of the document within a single quoted scalar"):(e.position++,r=e.position);P(e,"unexpected end of the stream within a single quoted scalar")}function Zm(e,t){var i,n,r,a,s,o;if(o=e.input.charCodeAt(e.position),o!==34)return!1;for(e.kind="scalar",e.result="",e.position++,i=n=e.position;(o=e.input.charCodeAt(e.position))!==0;){if(o===34)return Fi(e,i,e.position,!0),e.position++,!0;if(o===92){if(Fi(e,i,e.position,!0),o=e.input.charCodeAt(++e.position),hi(o))he(e,!1,t);else if(o<256&&uc[o])e.result+=pc[o],e.position++;else if((s=Ym(o))>0){for(r=s,a=0;r>0;r--)o=e.input.charCodeAt(++e.position),(s=Hm(o))>=0?a=(a<<4)+s:P(e,"expected hexadecimal character");e.result+=Vm(a),e.position++}else P(e,"unknown escape sequence");i=n=e.position}else hi(o)?(Fi(e,i,n,!0),Js(e,he(e,!1,t)),i=n=e.position):e.position===e.lineStart&&ra(e)?P(e,"unexpected end of the document within a double quoted scalar"):(e.position++,n=e.position)}P(e,"unexpected end of the stream within a double quoted scalar")}function Jm(e,t){var i=!0,n,r,a,s=e.tag,o,l=e.anchor,d,c,u,m,g,h=Object.create(null),v,w,z,S;if(S=e.input.charCodeAt(e.position),S===91)c=93,g=!1,o=[];else if(S===123)c=125,g=!0,o={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=o),S=e.input.charCodeAt(++e.position);S!==0;){if(he(e,!0,t),S=e.input.charCodeAt(e.position),S===c)return e.position++,e.tag=s,e.anchor=l,e.kind=g?"mapping":"sequence",e.result=o,!0;i?S===44&&P(e,"expected the node content, but found ','"):P(e,"missed comma between flow collection entries"),w=v=z=null,u=m=!1,S===63&&(d=e.input.charCodeAt(e.position+1),We(d)&&(u=m=!0,e.position++,he(e,!0,t))),n=e.line,r=e.lineStart,a=e.position,Nt(e,t,Xr,!1,!0),w=e.tag,v=e.result,he(e,!0,t),S=e.input.charCodeAt(e.position),(m||e.line===n)&&S===58&&(u=!0,S=e.input.charCodeAt(++e.position),he(e,!0,t),Nt(e,t,Xr,!1,!0),z=e.result),g?Dt(e,o,h,w,v,z,n,r,a):u?o.push(Dt(e,null,h,w,v,z,n,r,a)):o.push(v),he(e,!0,t),S=e.input.charCodeAt(e.position),S===44?(i=!0,S=e.input.charCodeAt(++e.position)):i=!1}P(e,"unexpected end of the stream within a flow collection")}function Xm(e,t){var i,n,r=Hs,a=!1,s=!1,o=t,l=0,d=!1,c,u;if(u=e.input.charCodeAt(e.position),u===124)n=!1;else if(u===62)n=!0;else return!1;for(e.kind="scalar",e.result="";u!==0;)if(u=e.input.charCodeAt(++e.position),u===43||u===45)Hs===r?r=u===43?Kl:jm:P(e,"repeat of a chomping mode identifier");else if((c=Wm(u))>=0)c===0?P(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?P(e,"repeat of an indentation width identifier"):(o=t+c-1,s=!0);else break;if(Xi(u)){do u=e.input.charCodeAt(++e.position);while(Xi(u));if(u===35)do u=e.input.charCodeAt(++e.position);while(!hi(u)&&u!==0)}for(;u!==0;){for(Zs(e),e.lineIndent=0,u=e.input.charCodeAt(e.position);(!s||e.lineIndento&&(o=e.lineIndent),hi(u)){l++;continue}if(e.lineIndent=r.length);l++)d=ro(e.buffer,n[s+l],r[s+l],e.position-(n[s]-n[s+l]),u),o+=xe.repeat(" ",t.indent)+ao((e.line+l+1).toString(),c)+" | "+d.str+` +`;return o.replace(/\n$/,"")}var dm=cm,um=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],pm=["scalar","sequence","mapping"];function mm(e){var t={};return e!==null&&Object.keys(e).forEach(function(i){e[i].forEach(function(n){t[String(n)]=i})}),t}function gm(e,t){if(t=t||{},Object.keys(t).forEach(function(i){if(um.indexOf(i)===-1)throw new De('Unknown option "'+i+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(i){return i},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=mm(t.styleAliases||null),pm.indexOf(this.kind)===-1)throw new De('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var qe=gm;function rc(e,t){var i=[];return e[t].forEach(function(n){var r=i.length;i.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(r=s)}),i[r]=n}),i}function hm(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,i;function n(r){r.multi?(e.multi[r.kind].push(r),e.multi.fallback.push(r)):e[r.kind][r.tag]=e.fallback[r.tag]=r}for(t=0,i=arguments.length;t=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),_m=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Rm(e){return!(e===null||!_m.test(e)||e[e.length-1]==="_")}function Dm(e){var t,i;return t=e.replace(/_/g,"").toLowerCase(),i=t[0]==="-"?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?i===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:i*parseFloat(t,10)}var Nm=/^[-+]?[0-9]+e/;function jm(e,t){var i;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(xe.isNegativeZero(e))return"-0.0";return i=e.toString(10),Nm.test(i)?i.replace("e",".e"):i}function Km(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||xe.isNegativeZero(e))}var Ym=new qe("tag:yaml.org,2002:float",{kind:"scalar",resolve:Rm,construct:Dm,predicate:Km,represent:jm,defaultStyle:"lowercase"}),Pm=xm.extend({implicit:[Sm,Em,Fm,Ym]}),Hm=Pm,wc=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),kc=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function $m(e){return e===null?!1:wc.exec(e)!==null||kc.exec(e)!==null}function Wm(e){var t,i,n,r,a,s,o,l=0,d=null,c,u,m;if(t=wc.exec(e),t===null&&(t=kc.exec(e)),t===null)throw new Error("Date resolve error");if(i=+t[1],n=+t[2]-1,r=+t[3],!t[4])return new Date(Date.UTC(i,n,r));if(a=+t[4],s=+t[5],o=+t[6],t[7]){for(l=t[7].slice(0,3);l.length<3;)l+="0";l=+l}return t[9]&&(c=+t[10],u=+(t[11]||0),d=(c*60+u)*6e4,t[9]==="-"&&(d=-d)),m=new Date(Date.UTC(i,n,r,a,s,o,l)),d&&m.setTime(m.getTime()-d),m}function Vm(e){return e.toISOString()}var Um=new qe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:$m,construct:Wm,instanceOf:Date,represent:Vm});function Gm(e){return e==="<<"||e===null}var Qm=new qe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Gm}),mo=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function Zm(e){if(e===null)return!1;var t,i,n=0,r=e.length,a=mo;for(i=0;i64)){if(t<0)return!1;n+=6}return n%8===0}function Jm(e){var t,i,n=e.replace(/[\r\n=]/g,""),r=n.length,a=mo,s=0,o=[];for(t=0;t>16&255),o.push(s>>8&255),o.push(s&255)),s=s<<6|a.indexOf(n.charAt(t));return i=r%4*6,i===0?(o.push(s>>16&255),o.push(s>>8&255),o.push(s&255)):i===18?(o.push(s>>10&255),o.push(s>>2&255)):i===12&&o.push(s>>4&255),new Uint8Array(o)}function Xm(e){var t="",i=0,n,r,a=e.length,s=mo;for(n=0;n>18&63],t+=s[i>>12&63],t+=s[i>>6&63],t+=s[i&63]),i=(i<<8)+e[n];return r=a%3,r===0?(t+=s[i>>18&63],t+=s[i>>12&63],t+=s[i>>6&63],t+=s[i&63]):r===2?(t+=s[i>>10&63],t+=s[i>>4&63],t+=s[i<<2&63],t+=s[64]):r===1&&(t+=s[i>>2&63],t+=s[i<<4&63],t+=s[64],t+=s[64]),t}function eg(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var ig=new qe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Zm,construct:Jm,predicate:eg,represent:Xm}),tg=Object.prototype.hasOwnProperty,ng=Object.prototype.toString;function rg(e){if(e===null)return!0;var t=[],i,n,r,a,s,o=e;for(i=0,n=o.length;i>10)+55296,(e-65536&1023)+56320)}var Ec=new Array(256),Oc=new Array(256);for(tt=0;tt<256;tt++)Ec[tt]=oc(tt)?1:0,Oc[tt]=oc(tt);var tt;function zg(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||zc,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Cc(e,t){var i={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return i.snippet=dm(i),new De(t,i)}function K(e,t){throw Cc(e,t)}function ma(e,t){e.onWarning&&e.onWarning.call(null,Cc(e,t))}var lc={YAML:function(t,i,n){var r,a,s;t.version!==null&&K(t,"duplication of %YAML directive"),n.length!==1&&K(t,"YAML directive accepts exactly one argument"),r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),r===null&&K(t,"ill-formed argument of the YAML directive"),a=parseInt(r[1],10),s=parseInt(r[2],10),a!==1&&K(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=s<2,s!==1&&s!==2&&ma(t,"unsupported YAML version of the document")},TAG:function(t,i,n){var r,a;n.length!==2&&K(t,"TAG directive accepts exactly two arguments"),r=n[0],a=n[1],Lc.test(r)||K(t,"ill-formed tag handle (first argument) of the TAG directive"),Ni.call(t.tagMap,r)&&K(t,'there is a previously declared suffix for "'+r+'" tag handle'),Tc.test(a)||K(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{K(t,"tag prefix is malformed: "+a)}t.tagMap[r]=a}};function Di(e,t,i,n){var r,a,s,o;if(t1&&(e.result+=xe.repeat(` +`,t-1))}function Sg(e,t,i){var n,r,a,s,o,l,d,c,u=e.kind,m=e.result,g;if(g=e.input.charCodeAt(e.position),$e(g)||Ht(g)||g===35||g===38||g===42||g===33||g===124||g===62||g===39||g===34||g===37||g===64||g===96||(g===63||g===45)&&(r=e.input.charCodeAt(e.position+1),$e(r)||i&&Ht(r)))return!1;for(e.kind="scalar",e.result="",a=s=e.position,o=!1;g!==0;){if(g===58){if(r=e.input.charCodeAt(e.position+1),$e(r)||i&&Ht(r))break}else if(g===35){if(n=e.input.charCodeAt(e.position-1),$e(n))break}else{if(e.position===e.lineStart&&fa(e)||i&&Ht(g))break;if(fi(g))if(l=e.line,d=e.lineStart,c=e.lineIndent,he(e,!1,-1),e.lineIndent>=t){o=!0,g=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=l,e.lineStart=d,e.lineIndent=c;break}}o&&(Di(e,a,s,!1),ho(e,e.line-l),a=s=e.position,o=!1),nt(g)||(s=e.position+1),g=e.input.charCodeAt(++e.position)}return Di(e,a,s,!1),e.result?!0:(e.kind=u,e.result=m,!1)}function Ag(e,t){var i,n,r;if(i=e.input.charCodeAt(e.position),i!==39)return!1;for(e.kind="scalar",e.result="",e.position++,n=r=e.position;(i=e.input.charCodeAt(e.position))!==0;)if(i===39)if(Di(e,n,e.position,!0),i=e.input.charCodeAt(++e.position),i===39)n=e.position,e.position++,r=e.position;else return!0;else fi(i)?(Di(e,n,r,!0),ho(e,he(e,!1,t)),n=r=e.position):e.position===e.lineStart&&fa(e)?K(e,"unexpected end of the document within a single quoted scalar"):(e.position++,r=e.position);K(e,"unexpected end of the stream within a single quoted scalar")}function Lg(e,t){var i,n,r,a,s,o;if(o=e.input.charCodeAt(e.position),o!==34)return!1;for(e.kind="scalar",e.result="",e.position++,i=n=e.position;(o=e.input.charCodeAt(e.position))!==0;){if(o===34)return Di(e,i,e.position,!0),e.position++,!0;if(o===92){if(Di(e,i,e.position,!0),o=e.input.charCodeAt(++e.position),fi(o))he(e,!1,t);else if(o<256&&Ec[o])e.result+=Oc[o],e.position++;else if((s=xg(o))>0){for(r=s,a=0;r>0;r--)o=e.input.charCodeAt(++e.position),(s=vg(o))>=0?a=(a<<4)+s:K(e,"expected hexadecimal character");e.result+=kg(a),e.position++}else K(e,"unknown escape sequence");i=n=e.position}else fi(o)?(Di(e,i,n,!0),ho(e,he(e,!1,t)),i=n=e.position):e.position===e.lineStart&&fa(e)?K(e,"unexpected end of the document within a double quoted scalar"):(e.position++,n=e.position)}K(e,"unexpected end of the stream within a double quoted scalar")}function Tg(e,t){var i=!0,n,r,a,s=e.tag,o,l=e.anchor,d,c,u,m,g,h=Object.create(null),v,x,w,S;if(S=e.input.charCodeAt(e.position),S===91)c=93,g=!1,o=[];else if(S===123)c=125,g=!0,o={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=o),S=e.input.charCodeAt(++e.position);S!==0;){if(he(e,!0,t),S=e.input.charCodeAt(e.position),S===c)return e.position++,e.tag=s,e.anchor=l,e.kind=g?"mapping":"sequence",e.result=o,!0;i?S===44&&K(e,"expected the node content, but found ','"):K(e,"missed comma between flow collection entries"),x=v=w=null,u=m=!1,S===63&&(d=e.input.charCodeAt(e.position+1),$e(d)&&(u=m=!0,e.position++,he(e,!0,t))),n=e.line,r=e.lineStart,a=e.position,Wt(e,t,ua,!1,!0),x=e.tag,v=e.result,he(e,!0,t),S=e.input.charCodeAt(e.position),(m||e.line===n)&&S===58&&(u=!0,S=e.input.charCodeAt(++e.position),he(e,!0,t),Wt(e,t,ua,!1,!0),w=e.result),g?$t(e,o,h,x,v,w,n,r,a):u?o.push($t(e,null,h,x,v,w,n,r,a)):o.push(v),he(e,!0,t),S=e.input.charCodeAt(e.position),S===44?(i=!0,S=e.input.charCodeAt(++e.position)):i=!1}K(e,"unexpected end of the stream within a flow collection")}function Eg(e,t){var i,n,r=so,a=!1,s=!1,o=t,l=0,d=!1,c,u;if(u=e.input.charCodeAt(e.position),u===124)n=!1;else if(u===62)n=!0;else return!1;for(e.kind="scalar",e.result="";u!==0;)if(u=e.input.charCodeAt(++e.position),u===43||u===45)so===r?r=u===43?ac:hg:K(e,"repeat of a chomping mode identifier");else if((c=wg(u))>=0)c===0?K(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?K(e,"repeat of an indentation width identifier"):(o=t+c-1,s=!0);else break;if(nt(u)){do u=e.input.charCodeAt(++e.position);while(nt(u));if(u===35)do u=e.input.charCodeAt(++e.position);while(!fi(u)&&u!==0)}for(;u!==0;){for(go(e),e.lineIndent=0,u=e.input.charCodeAt(e.position);(!s||e.lineIndento&&(o=e.lineIndent),fi(u)){l++;continue}if(e.lineIndentt)&&l!==0)P(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(w&&(s=e.line,o=e.lineStart,l=e.position),Nt(e,t,ea,!0,r)&&(w?h=e.result:v=e.result),w||(Dt(e,u,m,g,h,v,s,o,l),g=h=v=null),he(e,!0,-1),S=e.input.charCodeAt(e.position)),(e.line===a||e.lineIndent>t)&&S!==0)P(e,"bad indentation of a mapping entry");else if(e.lineIndentt?l=1:e.lineIndent===t?l=0:e.lineIndentt?l=1:e.lineIndent===t?l=0:e.lineIndent tag; it should be "scalar", not "'+e.kind+'"'),u=0,m=e.implicitTypes.length;u"),e.result!==null&&h.kind!==e.kind&&P(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+h.kind+'", not "'+e.kind+'"'),h.resolve(e.result,e.tag)?(e.result=h.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):P(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||c}function rg(e){var t=e.position,i,n,r,a=!1,s;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(s=e.input.charCodeAt(e.position))!==0&&(he(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||s!==37));){for(a=!0,s=e.input.charCodeAt(++e.position),i=e.position;s!==0&&!We(s);)s=e.input.charCodeAt(++e.position);for(n=e.input.slice(i,e.position),r=[],n.length<1&&P(e,"directive name must not be less than one character in length");s!==0;){for(;Xi(s);)s=e.input.charCodeAt(++e.position);if(s===35){do s=e.input.charCodeAt(++e.position);while(s!==0&&!hi(s));break}if(hi(s))break;for(i=e.position;s!==0&&!We(s);)s=e.input.charCodeAt(++e.position);r.push(e.input.slice(i,e.position))}s!==0&&Zs(e),Ri.call(Yl,n)?Yl[n](e,n,r):ia(e,'unknown document directive "'+n+'"')}if(he(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,he(e,!0,-1)):a&&P(e,"directives end mark is expected"),Nt(e,e.lineIndent-1,ea,!1,!0),he(e,!0,-1),e.checkLineBreaks&&Km.test(e.input.slice(t,e.position))&&ia(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&ra(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,he(e,!0,-1));return}if(e.position"u"&&(i=t,t=null);var n=gc(e,i);if(typeof t!="function")return n;for(var r=0,a=n.length;rt)&&l!==0)K(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(x&&(s=e.line,o=e.lineStart,l=e.position),Wt(e,t,pa,!0,r)&&(x?h=e.result:v=e.result),x||($t(e,u,m,g,h,v,s,o,l),g=h=v=null),he(e,!0,-1),S=e.input.charCodeAt(e.position)),(e.line===a||e.lineIndent>t)&&S!==0)K(e,"bad indentation of a mapping entry");else if(e.lineIndentt?l=1:e.lineIndent===t?l=0:e.lineIndentt?l=1:e.lineIndent===t?l=0:e.lineIndent tag; it should be "scalar", not "'+e.kind+'"'),u=0,m=e.implicitTypes.length;u"),e.result!==null&&h.kind!==e.kind&&K(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+h.kind+'", not "'+e.kind+'"'),h.resolve(e.result,e.tag)?(e.result=h.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):K(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||c}function Ig(e){var t=e.position,i,n,r,a=!1,s;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(s=e.input.charCodeAt(e.position))!==0&&(he(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||s!==37));){for(a=!0,s=e.input.charCodeAt(++e.position),i=e.position;s!==0&&!$e(s);)s=e.input.charCodeAt(++e.position);for(n=e.input.slice(i,e.position),r=[],n.length<1&&K(e,"directive name must not be less than one character in length");s!==0;){for(;nt(s);)s=e.input.charCodeAt(++e.position);if(s===35){do s=e.input.charCodeAt(++e.position);while(s!==0&&!fi(s));break}if(fi(s))break;for(i=e.position;s!==0&&!$e(s);)s=e.input.charCodeAt(++e.position);r.push(e.input.slice(i,e.position))}s!==0&&go(e),Ni.call(lc,n)?lc[n](e,n,r):ma(e,'unknown document directive "'+n+'"')}if(he(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,he(e,!0,-1)):a&&K(e,"directives end mark is expected"),Wt(e,e.lineIndent-1,pa,!1,!0),he(e,!0,-1),e.checkLineBreaks&&yg.test(e.input.slice(t,e.position))&&ma(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&fa(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,he(e,!0,-1));return}if(e.position"u"&&(i=t,t=null);var n=Mc(e,i);if(typeof t!="function")return n;for(var r=0,a=n.length;r=55296&&i<=56319&&t+1=56320&&n<=57343)?(i-55296)*1024+n-56320+65536:i}function zc(e){var t=/^\n* /;return t.test(e)}var Sc=1,Us=2,Tc=3,Ac=4,Ft=5;function _g(e,t,i,n,r,a,s,o){var l,d=0,c=null,u=!1,m=!1,g=n!==-1,h=-1,v=Mg(hn(e,0))&&Ig(hn(e,e.length-1));if(t||s)for(l=0;l=65536?l+=2:l++){if(d=hn(e,l),!vn(d))return Ft;v=v&&Ql(d,c,o),c=d}else{for(l=0;l=65536?l+=2:l++){if(d=hn(e,l),d===yn)u=!0,g&&(m=m||l-h-1>n&&e[h+1]!==" ",h=l);else if(!vn(d))return Ft;v=v&&Ql(d,c,o),c=d}m=m||g&&l-h-1>n&&e[h+1]!==" "}return!u&&!m?v&&!s&&!r(e)?Sc:a===bn?Ft:Us:i>9&&zc(e)?Ft:s?a===bn?Ft:Us:m?Ac:Tc}function Bg(e,t,i,n,r){e.dump=function(){if(t.length===0)return e.quotingType===bn?'""':"''";if(!e.noCompatMode&&(Tg.indexOf(t)!==-1||Ag.test(t)))return e.quotingType===bn?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,i),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),o=n||e.flowLevel>-1&&i>=e.flowLevel;function l(d){return qg(e,d)}switch(_g(t,o,e.indent,s,l,e.quotingType,e.forceQuotes&&!n,r)){case Sc:return t;case Us:return"'"+t.replace(/'/g,"''")+"'";case Tc:return"|"+Zl(t,e.indent)+Jl(Ul(t,a));case Ac:return">"+Zl(t,e.indent)+Jl(Ul(Fg(t,s),a));case Ft:return'"'+Rg(t)+'"';default:throw new Ne("impossible error: invalid scalar style")}}()}function Zl(e,t){var i=zc(e)?String(t):"",n=e[e.length-1]===` +`&&(a+=i),a+=s;return a}function co(e,t){return` +`+xe.repeat(" ",e.indent*t)}function sh(e,t){var i,n,r;for(i=0,n=e.implicitTypes.length;i=55296&&i<=56319&&t+1=56320&&n<=57343)?(i-55296)*1024+n-56320+65536:i}function jc(e){var t=/^\n* /;return t.test(e)}var Kc=1,uo=2,Yc=3,Pc=4,Pt=5;function ch(e,t,i,n,r,a,s,o){var l,d=0,c=null,u=!1,m=!1,g=n!==-1,h=-1,v=oh(Sn(e,0))&&lh(Sn(e,e.length-1));if(t||s)for(l=0;l=65536?l+=2:l++){if(d=Sn(e,l),!En(d))return Pt;v=v&&mc(d,c,o),c=d}else{for(l=0;l=65536?l+=2:l++){if(d=Sn(e,l),d===Ln)u=!0,g&&(m=m||l-h-1>n&&e[h+1]!==" ",h=l);else if(!En(d))return Pt;v=v&&mc(d,c,o),c=d}m=m||g&&l-h-1>n&&e[h+1]!==" "}return!u&&!m?v&&!s&&!r(e)?Kc:a===Tn?Pt:uo:i>9&&jc(e)?Pt:s?a===Tn?Pt:uo:m?Pc:Yc}function dh(e,t,i,n,r){e.dump=function(){if(t.length===0)return e.quotingType===Tn?'""':"''";if(!e.noCompatMode&&(eh.indexOf(t)!==-1||ih.test(t)))return e.quotingType===Tn?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,i),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),o=n||e.flowLevel>-1&&i>=e.flowLevel;function l(d){return sh(e,d)}switch(ch(t,o,e.indent,s,l,e.quotingType,e.forceQuotes&&!n,r)){case Kc:return t;case uo:return"'"+t.replace(/'/g,"''")+"'";case Yc:return"|"+gc(t,e.indent)+hc(uc(t,a));case Pc:return">"+gc(t,e.indent)+hc(uc(uh(t,s),a));case Pt:return'"'+ph(t)+'"';default:throw new De("impossible error: invalid scalar style")}}()}function gc(e,t){var i=jc(e)?String(t):"",n=e[e.length-1]===` `,r=n&&(e[e.length-2]===` `||e===` `),a=r?"+":n?"":"-";return i+a+` -`}function Jl(e){return e[e.length-1]===` -`?e.slice(0,-1):e}function Fg(e,t){for(var i=/(\n+)([^\n]*)/g,n=function(){var d=e.indexOf(` -`);return d=d!==-1?d:e.length,i.lastIndex=d,Xl(e.slice(0,d),t)}(),r=e[0]===` +`}function hc(e){return e[e.length-1]===` +`?e.slice(0,-1):e}function uh(e,t){for(var i=/(\n+)([^\n]*)/g,n=function(){var d=e.indexOf(` +`);return d=d!==-1?d:e.length,i.lastIndex=d,fc(e.slice(0,d),t)}(),r=e[0]===` `||e[0]===" ",a,s;s=i.exec(e);){var o=s[1],l=s[2];a=l[0]===" ",n+=o+(!r&&!a&&l!==""?` -`:"")+Xl(l,t),r=a}return n}function Xl(e,t){if(e===""||e[0]===" ")return e;for(var i=/ [^ ]/g,n,r=0,a,s=0,o=0,l="";n=i.exec(e);)o=n.index,o-r>t&&(a=s>r?s:o,l+=` +`:"")+fc(l,t),r=a}return n}function fc(e,t){if(e===""||e[0]===" ")return e;for(var i=/ [^ ]/g,n,r=0,a,s=0,o=0,l="";n=i.exec(e);)o=n.index,o-r>t&&(a=s>r?s:o,l+=` `+e.slice(r,a),r=a+1),s=o;return l+=` `,e.length-r>t&&s>r?l+=e.slice(r,s)+` -`+e.slice(s+1):l+=e.slice(r),l.slice(1)}function Rg(e){for(var t="",i=0,n,r=0;r=65536?r+=2:r++)i=hn(e,r),n=_e[i],!n&&vn(i)?(t+=e[r],i>=65536&&(t+=e[r+1])):t+=n||Lg(i);return t}function Dg(e,t,i){var n="",r=e.tag,a,s,o;for(a=0,s=i.length;a"u"&&Ci(e,t,null,!1,!1))&&(n!==""&&(n+=","+(e.condenseFlow?"":" ")),n+=e.dump);e.tag=r,e.dump="["+n+"]"}function ec(e,t,i,n){var r="",a=e.tag,s,o,l;for(s=0,o=i.length;s"u"&&Ci(e,t+1,null,!0,!0,!1,!0))&&((!n||r!=="")&&(r+=Vs(e,t)),e.dump&&yn===e.dump.charCodeAt(0)?r+="-":r+="- ",r+=e.dump);e.tag=a,e.dump=r||"[]"}function Ng(e,t,i){var n="",r=e.tag,a=Object.keys(i),s,o,l,d,c;for(s=0,o=a.length;s1024&&(c+="? "),c+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Ci(e,t,d,!1,!1)&&(c+=e.dump,n+=c));e.tag=r,e.dump="{"+n+"}"}function jg(e,t,i,n){var r="",a=e.tag,s=Object.keys(i),o,l,d,c,u,m;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new Ne("sortKeys must be a boolean or a function");for(o=0,l=s.length;o1024,u&&(e.dump&&yn===e.dump.charCodeAt(0)?m+="?":m+="? "),m+=e.dump,u&&(m+=Vs(e,t)),Ci(e,t+1,c,!0,u)&&(e.dump&&yn===e.dump.charCodeAt(0)?m+=":":m+=": ",m+=e.dump,r+=m));e.tag=a,e.dump=r||"{}"}function ic(e,t,i){var n,r,a,s,o,l;for(r=i?e.explicitTypes:e.implicitTypes,a=0,s=r.length;a tag resolver accepts not "'+l+'" style');e.dump=n}return!0}return!1}function Ci(e,t,i,n,r,a,s){e.tag=null,e.dump=i,ic(e,i,!1)||ic(e,i,!0);var o=fc.call(e.dump),l=n,d;n&&(n=e.flowLevel<0||e.flowLevel>t);var c=o==="[object Object]"||o==="[object Array]",u,m;if(c&&(u=e.duplicates.indexOf(i),m=u!==-1),(e.tag!==null&&e.tag!=="?"||m||e.indent!==2&&t>0)&&(r=!1),m&&e.usedDuplicates[u])e.dump="*ref_"+u;else{if(c&&m&&!e.usedDuplicates[u]&&(e.usedDuplicates[u]=!0),o==="[object Object]")n&&Object.keys(e.dump).length!==0?(jg(e,t,e.dump,r),m&&(e.dump="&ref_"+u+e.dump)):(Ng(e,t,e.dump),m&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object Array]")n&&e.dump.length!==0?(e.noArrayIndent&&!s&&t>0?ec(e,t-1,e.dump,r):ec(e,t,e.dump,r),m&&(e.dump="&ref_"+u+e.dump)):(Dg(e,t,e.dump),m&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object String]")e.tag!=="?"&&Bg(e,e.dump,t,a,l);else{if(o==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new Ne("unacceptable kind of an object to dump "+o)}e.tag!==null&&e.tag!=="?"&&(d=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?d="!"+d:d.slice(0,18)==="tag:yaml.org,2002:"?d="!!"+d.slice(18):d="!<"+d+">",e.dump=d+" "+e.dump)}return!0}function Pg(e,t){var i=[],n=[],r,a;for(Gs(e,i,n),r=0,a=n.length;r=65536?r+=2:r++)i=Sn(e,r),n=Ie[i],!n&&En(i)?(t+=e[r],i>=65536&&(t+=e[r+1])):t+=n||nh(i);return t}function mh(e,t,i){var n="",r=e.tag,a,s,o;for(a=0,s=i.length;a"u"&&Ci(e,t,null,!1,!1))&&(n!==""&&(n+=","+(e.condenseFlow?"":" ")),n+=e.dump);e.tag=r,e.dump="["+n+"]"}function yc(e,t,i,n){var r="",a=e.tag,s,o,l;for(s=0,o=i.length;s"u"&&Ci(e,t+1,null,!0,!0,!1,!0))&&((!n||r!=="")&&(r+=co(e,t)),e.dump&&Ln===e.dump.charCodeAt(0)?r+="-":r+="- ",r+=e.dump);e.tag=a,e.dump=r||"[]"}function gh(e,t,i){var n="",r=e.tag,a=Object.keys(i),s,o,l,d,c;for(s=0,o=a.length;s1024&&(c+="? "),c+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Ci(e,t,d,!1,!1)&&(c+=e.dump,n+=c));e.tag=r,e.dump="{"+n+"}"}function hh(e,t,i,n){var r="",a=e.tag,s=Object.keys(i),o,l,d,c,u,m;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new De("sortKeys must be a boolean or a function");for(o=0,l=s.length;o1024,u&&(e.dump&&Ln===e.dump.charCodeAt(0)?m+="?":m+="? "),m+=e.dump,u&&(m+=co(e,t)),Ci(e,t+1,c,!0,u)&&(e.dump&&Ln===e.dump.charCodeAt(0)?m+=":":m+=": ",m+=e.dump,r+=m));e.tag=a,e.dump=r||"{}"}function bc(e,t,i){var n,r,a,s,o,l;for(r=i?e.explicitTypes:e.implicitTypes,a=0,s=r.length;a tag resolver accepts not "'+l+'" style');e.dump=n}return!0}return!1}function Ci(e,t,i,n,r,a,s){e.tag=null,e.dump=i,bc(e,i,!1)||bc(e,i,!0);var o=Ic.call(e.dump),l=n,d;n&&(n=e.flowLevel<0||e.flowLevel>t);var c=o==="[object Object]"||o==="[object Array]",u,m;if(c&&(u=e.duplicates.indexOf(i),m=u!==-1),(e.tag!==null&&e.tag!=="?"||m||e.indent!==2&&t>0)&&(r=!1),m&&e.usedDuplicates[u])e.dump="*ref_"+u;else{if(c&&m&&!e.usedDuplicates[u]&&(e.usedDuplicates[u]=!0),o==="[object Object]")n&&Object.keys(e.dump).length!==0?(hh(e,t,e.dump,r),m&&(e.dump="&ref_"+u+e.dump)):(gh(e,t,e.dump),m&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object Array]")n&&e.dump.length!==0?(e.noArrayIndent&&!s&&t>0?yc(e,t-1,e.dump,r):yc(e,t,e.dump,r),m&&(e.dump="&ref_"+u+e.dump)):(mh(e,t,e.dump),m&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object String]")e.tag!=="?"&&dh(e,e.dump,t,a,l);else{if(o==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new De("unacceptable kind of an object to dump "+o)}e.tag!==null&&e.tag!=="?"&&(d=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?d="!"+d:d.slice(0,18)==="tag:yaml.org,2002:"?d="!!"+d.slice(18):d="!<"+d+">",e.dump=d+" "+e.dump)}return!0}function fh(e,t){var i=[],n=[],r,a;for(po(e,i,n),r=0,a=n.length;rUnicode-Block "Formulare" in voller Breite'},"include-cjk-symbols-and-punctuation":{name:"CJK-Symbole und Satzzeichen einschlie\xDFen",description:'Einschlie\xDFen CJK-Symbole und Satzzeichen Unicode-Block'},"include-dashes":{name:"Bindestriche einschlie\xDFen",description:"F\xFCgen Sie den Gedankenstrich (\u2013) und den Gedankenstrich (\u2014) ein"},"other-symbols":{name:"Andere Symbole",description:"Andere Symbole, die enthalten sind"}},"remove-space-before-or-after-characters":{name:"Entfernen Sie Leerzeichen vor oder nach Zeichen",description:"Entfernt Leerzeichen vor und nach den angegebenen Zeichen. Beachten Sie, dass dies in einigen F\xE4llen zu Problemen mit dem Markdown-Format f\xFChren kann.","characters-to-remove-space-before":{name:"Leerzeichen vor Zeichen entfernen",description:"Entfernt Leerzeichen vor den angegebenen Zeichen. **Hinweis: Die Verwendung von `{` oder `}` in der Zeichenliste wirkt sich unerwartet auf Dateien aus, da es in der Ignoriersyntax hinter den Kulissen verwendet wird.**"},"characters-to-remove-space-after":{name:"Leerzeichen nach Zeichen entfernen",description:"Entfernt Leerzeichen vor den angegebenen Zeichen. **Hinweis: Die Verwendung von `{` oder `}` in der Zeichenliste wirkt sich unerwartet auf Dateien aus, da es in der Ignoriersyntax hinter den Kulissen verwendet wird.**"}},"remove-trailing-punctuation-in-heading":{name:"Entfernen Sie nachgestellte Satzzeichen in der \xDCberschrift",description:"Entfernt die angegebene Interpunktion am Ende von \xDCberschriften, wobei darauf zu achten ist, dass das Semikolon am Ende von [HTML-Entit\xE4tsreferenzen](https://de.wikipedia.org/wiki/Typografische_Zeichen_in_XML_und_HTML) ignoriert wird.","punctuation-to-remove":{name:"Nachfolgende Interpunktion",description:"Das nachfolgende Satzzeichen, das aus den \xDCberschriften in der Datei entfernt werden soll."}},"remove-yaml-keys":{name:"Entfernen von YAML-Schl\xFCsseln",description:"Entfernt die angegebenen YAML-Schl\xFCssel","yaml-keys-to-remove":{name:"Zu entfernende YAML-Schl\xFCssel",description:"Die zu entfernenden yaml-Tasten aus der yaml-Frontmaterie mit oder ohne Doppelpunkt"}},"space-after-list-markers":{name:"Leerzeichen nach Listenmarkierungen",description:"Es sollte ein einzelnes Leerzeichen nach Listenmarkierungen und Kontrollk\xE4stchen geben."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Leerzeichen zwischen Chinesisch, Japanisch oder Koreanisch und Englisch oder Zahlen",description:"Stellt sicher, dass Chinesisch, Japanisch oder Koreanisch und Englisch oder Zahlen durch ein einziges Leerzeichen getrennt werden. Folgt diesen [Richtlinien](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Starker Stil",description:"Stellt sicher, dass der starke Stil konsistent ist.",style:{name:"Stil",description:"Der Stil, der verwendet wird, um starke/fettgedruckte Inhalte zu kennzeichnen"}},"trailing-spaces":{name:"Nachgestellte Leerzeichen",description:"Entfernt zus\xE4tzliche Leerzeichen nach jeder Zeile.","twp-space-line-break":{name:"Zwei Leerzeichen Zeilenumbruch",description:'Ignorieren Sie zwei Leerzeichen, gefolgt von einem Zeilenumbruch ("Zwei-Leerzeichen-Regel").'}},"two-spaces-between-lines-with-content":{name:"Zwei Leerzeichen zwischen Zeilen mit Inhalt",description:"Stellt sicher, dass zwei Leerzeichen an den Zeilenenden hinzugef\xFCgt werden, wobei der Inhalt in der n\xE4chsten Zeile f\xFCr Abs\xE4tze, Blockzitate und Listenelemente fortgesetzt wird"},"unordered-list-style":{name:"Ungeordneter Listenstil",description:"Stellt sicher, dass ungeordnete Listen dem angegebenen Stil folgen.","list-style":{name:"Stil des Listenelements",description:"Das Listenelementformat, das in ungeordneten Listen verwendet werden soll"}},"yaml-key-sort":{name:"Sortierung von YAML-Schl\xFCsseln",description:"Sortiert die YAML-Schl\xFCssel basierend auf der angegebenen Reihenfolge und Priorit\xE4t. Hinweis: Kann auch Leerzeilen entfernen.","yaml-key-priority-sort-order":{name:"Sortierreihenfolge der YAML-Schl\xFCsselpriorit\xE4t",description:"Die Reihenfolge, in der Schl\xFCssel sortiert werden sollen, wobei einer in jeder Zeile sortiert wird, in der er in der Reihenfolge sortiert wird, die in der Liste gefunden wird"},"priority-keys-at-start-of-yaml":{name:"Priorit\xE4tstasten beim Start von YAML",description:"Die Sortierreihenfolge der YAML-Schl\xFCsselpriorit\xE4t wird am Anfang der YAML-Frontmaterie platziert"},"yaml-sort-order-for-other-keys":{name:"YAML-Sortierreihenfolge f\xFCr andere Schl\xFCssel",description:"Die Art und Weise, wie die Schl\xFCssel sortiert werden, die nicht im Textbereich Sortierreihenfolge der YAML-Schl\xFCsselpriorit\xE4t gefunden werden"}},"yaml-timestamp":{name:"YAML-Zeitstempel",description:"Verfolgen Sie das Datum, an dem die Datei zuletzt bearbeitet wurde, in der YAML-Front. Ruft Datumsangaben aus Dateimetadaten ab.","date-created":{name:"Erstellungsdatum",description:"Der YAML-Schl\xFCssel, der f\xFCr das Erstellungsdatum verwendet werden soll"},"date-created-key":{name:"Erstellungsdatum des Schl\xFCssels",description:"Welcher YAML-Schl\xFCssel soll f\xFCr das Erstellungsdatum verwendet werden"},"force-retention-of-create-value":{name:"Erstellungsdatum erzwingen Schl\xFCsselwertaufbewahrung",description:"Verwendet den Wert in der YAML-Frontmaterie f\xFCr das Erstellungsdatum anstelle der Dateimetadaten, was n\xFCtzlich ist, um zu verhindern, dass \xC4nderungen an Dateimetadaten dazu f\xFChren, dass der Wert in einen anderen Wert ge\xE4ndert wird."},"date-modified":{name:"\xC4nderungsdatum",description:"Geben Sie das Datum ein, an dem die Datei zuletzt ge\xE4ndert wurde"},"date-modified-key":{name:"\xC4nderungsdatum des Schl\xFCssels",description:"Der YAML-Schl\xFCssel, der f\xFCr das \xC4nderungsdatum verwendet werden soll"},format:{name:"Format",description:"Zu verwendendes Momentdatumsformat (siehe [Momentformatoptionen](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML-Titel-Alias",description:"F\xFCgt den Titel der Datei in den Aliasabschnitt der YAML-Frontmaterie ein. Ruft den Titel aus dem ersten H1- oder Dateinamen ab.","preserve-existing-alias-section-style":{name:"Vorhandenes Alias-Abschnittsformat beibehalten",description:"Wenn diese Option festgelegt ist, gilt die Einstellung `YAML-Aliase-Abschnittsstil` nur f\xFCr die neu erstellten Abschnitte"},"keep-alias-that-matches-the-filename":{name:"Behalten Sie einen Alias bei, der mit dem Dateinamen \xFCbereinstimmt",description:"Solche Aliase sind in der Regel redundant"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Verwenden Sie den YAML-Schl\xFCssel `linter-yaml-title-alias`, um bei \xC4nderungen von Dateinamen und \xDCberschriften zu helfen",description:"Wenn sich die erste H1-\xDCberschrift \xE4ndert oder der Dateiname ge\xE4ndert wird, wenn der erste H1 nicht vorhanden ist, wird der alte Alias, der in diesem Schl\xFCssel gespeichert ist, durch den neuen Wert ersetzt, anstatt nur einen neuen Eintrag in das Alias-Array einzuf\xFCgen"}},"yaml-title":{name:"YAML-Titel",description:"F\xFCgt den Titel der Datei in das YAML-Frontmatter ein. Ruft den Titel basierend auf dem ausgew\xE4hlten Modus ab.","title-key":{name:"Titel-Schl\xFCssel",description:"Der YAML-Schl\xFCssel, der f\xFCr den Titel verwendet werden soll"},mode:{name:"Modus",description:"Die zum Abrufen des Titels zu verwendende Methode"}}},enums:{"Title Case":"Titel Gro\xDF- und Kleinschreibung","ALL CAPS":"GROSSBUCHSTABEN","First letter":"Anfangsbuchstabe",".":".",")":")",ERROR:"Fehler",TRACE:"Spur",DEBUG:"Debuggen",INFO:"Info",WARN:"Warnen",SILENT:"Leise",ascending:"aufsteigend",lazy:"lazy",Nothing:"Faul","Remove hashtag":"Hashtag entfernen","Remove whole tag":"Ganzes Tag entfernen",asterisk:"Sternchen",underscore:"unterstreichen",consistent:"folgerichtig","-":"-","*":"*","+":"+",space:"Raum","no space":"kein Platz",None:"Nichts","Ascending Alphabetical":"Aufsteigend Alphabetisch","Descending Alphabetical":"Absteigend Alphabetisch","multi-line":"mehrzeilig","single-line":"einzeilig","single string to single-line":"Single String zu Single-Line","single string to multi-line":"Single String zu Multi-Line","single string comma delimited":"Komma mit Trennzeichen f\xFCr eine Zeichenfolge","single string space delimited":"Einzelzeichenfolgenabstand durch Trennzeichen","single-line space delimited":"einzeiliger Abstand durch Trennzeichen","first-h1":"erste \xDCberschrift der Ebene 1","first-h1-or-filename-if-h1-missing":"Erste \xDCberschrift der Ebene 1 oder Dateiname, wenn die \xDCberschrift der Ebene 1 fehlt",filename:"Dateinamen","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var so={commands:{"lint-file":{name:"Lint the current file","error-message":"Lint File Error in File"},"lint-file-unless-ignored":{name:"Lint the current file unless ignored"},"lint-all-files":{name:"Lint all files in the vault","error-message":"Lint All Files Error in File","success-message":"Linted all files","errors-message-singular":"Linted all files and there was 1 error.","errors-message-plural":"Linted all files and there were {NUM} errors.","start-message":"This will edit all of your files and may introduce errors.","submit-button-text":"Lint All","submit-button-notice-text":"Linting all files..."},"lint-all-files-in-folder":{name:"Lint all files in the current folder","start-message":"This will edit all of your files in {FOLDER_NAME} including files in its subfolders which may introduce errors.","submit-button-text":"Lint All Files in {FOLDER_NAME}","submit-button-notice-text":"Linting all files in {FOLDER_NAME}...","error-message":"Lint All Files in Folder Error in File","success-message":"Linted all {NUM} files in {FOLDER_NAME}.","message-singular":"Linted all {NUM} files in {FOLDER_NAME} and there was 1 error.","message-plural":"Linted all {FILE_COUNT} files in {FOLDER_NAME} and there were {ERROR_COUNT} error."},"paste-as-plain-text":{name:"Paste as Plain Text & without Modifications"},"lint-file-pop-up-menu-text":{name:"Lint file"},"lint-folder-pop-up-menu-text":{name:"Lint folder"}},logs:{"plugin-load":"Loading plugin","plugin-unload":"Unloading plugin","folder-lint":"Linting folder ","linter-run":"Running linter","paste-link-warning":"aborted paste lint as the clipboard content is a link and doing so will avoid conflicts with other plugins that modify pasting.","see-console":"See console for more details.","unknown-error":"An unknown error occurred during linting.","moment-locale-not-found":"Trying to switch Moment.js locale to {MOMENT_LOCALE}, got {CURRENT_LOCALE}","pre-rules":"rules before regular rules","post-rules":"rules after regular rules","rule-running":"rules running","custom-regex":"custom regex rules","running-custom-regex":"Running Custom Regex","running-custom-lint-command":"Running Custom Lint Commands","custom-lint-duplicate-warning":'You cannot run the same command ("{COMMAND_NAME}") as a custom lint rule twice.',"custom-lint-error-message":"Custom Lint Command","disabled-text":"is disabled","run-rule-text":"Running","timing-key-not-found":"timing key '{TIMING_KEY}' does not exist in the timing info list, so it was ignored","milliseconds-abbreviation":"ms","invalid-date-format-error":"The format of the created date '{DATE}' could not be parsed or determined so the created date was left alone in '{FILE_NAME}'","invalid-delimiter-error-message":"delimiter is only allowed to be a single character","missing-footnote-error-message":"Footnote '{FOOTNOTE}' has no corresponding footnote reference before the footnote contents and cannot be processed. Please make sure that all footnotes have a corresponding reference before the content of the footnote.","too-many-footnotes-error-message":"Footnote key '{FOOTNOTE_KEY}' has more than 1 footnote referencing it. Please update the footnotes so that there is only one footnote per footnote key.","wrapper-yaml-error":"error in the yaml: {ERROR_MESSAGE}","wrapper-unknown-error":"unknown error: {ERROR_MESSAGE}","uneven-amount-of-quotes":"The instances of the `{QUOTE}` quote in the file is not even, so we cannot convert straight quotes to smart quotes"},"notice-text":{"empty-clipboard":"There is no clipboard content.","characters-added":"characters added","characters-removed":"characters removed"},"linter-title":"Linter","empty-search-results-text":"No settings match search","warning-text":"Warning","file-backup-text":"Make sure you have backed up your files.",tabs:{names:{general:"General Settings",custom:"Custom Settings",yaml:"YAML Settings",heading:"Heading Settings",content:"Content Settings",footnote:"Footnote Settings",spacing:"Spacing Settings",paste:"Paste Settings",debug:"Debug Settings"},"default-search-bar-text":"Search all settings",general:{"lint-on-save":{name:"Lint on save",description:"Lint the file on manual save (when `Ctrl + S` is pressed or when `:w` is executed while using vim keybindings)"},"display-message":{name:"Display message on lint",description:"Display the number of characters changed after linting"},"folders-to-ignore":{name:"Folders to ignore",description:"Folders to ignore when linting all files or linting on save. Enter folder paths separated by newlines"},"override-locale":{name:"Override locale",description:"Set this if you want to use a locale different from the default"},"same-as-system-locale":"Same as system ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML aliases section style",description:"The style of the YAML aliases section"},"yaml-tags-section-style":{name:"YAML tags section style",description:"The style of the YAML tags section"},"default-escape-character":{name:"Default Escape Character",description:"The default character to use to escape YAML values when a single quote and double quote are not present."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Remove Unnecessary Escape Characters when in Multi-Line Array Format",description:"Escape characters for multi-line YAML arrays don't need the same escaping as single-line arrays, so when in multi-line format remove extra escapes that are not necessary"},"number-of-dollar-signs-to-indicate-math-block":{name:"Number of Dollar Signs to Indicate Math Block",description:"The amount of dollar signs to consider the math content to be a math block instead of inline math"}},debug:{"log-level":{name:"Log Level",description:"The types of logs that will be allowed to be logged by the service. The default is ERROR."},"linter-config":{name:"Linter Config",description:"The contents of the data.json for the Linter as of the setting page loading"},"log-collection":{name:"Collect logs when linting on save and linting the current file",description:"Goes ahead and collects logs when you `Lint on save` and linting the current file. These logs can be helpful for debugging and create bug reports."},"linter-logs":{name:"Linter Logs",description:"The logs from the last `Lint on save` or the last lint current file run if enabled."}}},options:{"custom-command":{name:"Custom Commands",description:"Custom commands are Obsidian commands that get run after the linter is finished running its regular rules. This means that they do not run before the YAML timestamp logic runs, so they can cause YAML timestamp to be triggered on the next run of the linter. You may only select an Obsidian command once. **_Note that this currently only works on linting the current file._**",warning:"When selecting an option, make sure to select the option either by using the mouse or by hitting the enter key. Other selection methods may not work and only selections of an actual Obsidian command or an empty string will be saved.","add-input-button-text":"Add new command","command-search-placeholder-text":"Obsidian command","move-up-tooltip":"Move up","move-down-tooltip":"Move down","delete-tooltip":"Delete"},"custom-replace":{name:"Custom Regex Replacement",description:"Custom regex replacement can be used to replace anything that matches the find regex with the replacement value. The replace and find values will need to be valid regex values.",warning:"Use this with caution if you do not know regex. Also, please make sure that you do not use lookbehinds in your regex on iOS mobile as that will cause linting to fail since that is not supported on that platform.","add-input-button-text":"Add new regex replacement","regex-to-find-placeholder-text":"regex to find","flags-placeholder-text":"flags","regex-to-replace-placeholder-text":"regex to replace","move-up-tooltip":"Move up","move-down-tooltip":"Move down","delete-tooltip":"Delete"}},rules:{"auto-correct-common-misspellings":{name:"Auto-correct Common Misspellings",description:"Uses a dictionary of common misspellings to automatically convert them to their proper spellings. See [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) for the full list of auto-corrected words.","ignore-words":{name:"Ignore Words",description:"A comma separated list of lowercased words to ignore when auto-correcting"}},"add-blockquote-indentation-on-paste":{name:"Add Blockquote Indentation on Paste",description:"Adds blockquotes to all but the first line, when the cursor is in a blockquote/callout line during pasting"},"blockquote-style":{name:"Blockquote Style",description:"Makes sure the blockquote style is consistent.",style:{name:"Style",description:"The style used on blockquote indicators"}},"capitalize-headings":{name:"Capitalize Headings",description:"Headings should be formatted with capitalization",style:{name:"Style",description:"The style of capitalization to use"},"ignore-case-words":{name:"Ignore Cased Words",description:"Only apply title case style to words that are all lowercase"},"ignore-words":{name:"Ignore Words",description:"A comma separated list of words to ignore when capitalizing"},"lowercase-words":{name:"Lowercase Words",description:"A comma separated list of words to keep lowercase"}},"compact-yaml":{name:"Compact YAML",description:"Removes leading and trailing blank lines in the YAML front matter.","inner-new-lines":{name:"Inner New Lines",description:"Remove new lines that are not at the start or the end of the YAML"}},"consecutive-blank-lines":{name:"Consecutive blank lines",description:"There should be at most one consecutive blank line."},"convert-bullet-list-markers":{name:"Convert Bullet List Markers",description:"Converts common bullet list marker symbols to markdown list markers."},"convert-spaces-to-tabs":{name:"Convert Spaces to Tabs",description:"Converts leading spaces to tabs.",tabsize:{name:"Tabsize",description:"Number of spaces that will be converted to a tab"}},"emphasis-style":{name:"Emphasis Style",description:"Makes sure the emphasis style is consistent.",style:{name:"Style",description:"The style used to denote emphasized content"}},"empty-line-around-blockquotes":{name:"Empty Line Around Blockquotes",description:"Ensures that there is an empty line around blockquotes unless they start or end a document. **Note that an empty line is either one less level of nesting for blockquotes or a newline character.**"},"empty-line-around-code-fences":{name:"Empty Line Around Code Fences",description:"Ensures that there is an empty line around code fences unless they start or end a document."},"empty-line-around-math-blocks":{name:"Empty Line Around Math Blocks",description:"Ensures that there is an empty line around math blocks using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."},"empty-line-around-tables":{name:"Empty Line Around Tables",description:"Ensures that there is an empty line around github flavored tables unless they start or end a document."},"escape-yaml-special-characters":{name:"Escape YAML Special Characters",description:`Escapes colons with a space after them (: ), single quotes ('), and double quotes (") in YAML.`,"try-to-escape-single-line-arrays":{name:"Try to Escape Single Line Arrays",description:'Tries to escape array values assuming that an array starts with "[", ends with "]", and has items that are delimited by ",".'}},"file-name-heading":{name:"File Name Heading",description:"Inserts the file name as a H1 heading if no H1 heading exists."},"footnote-after-punctuation":{name:"Footnote after Punctuation",description:"Ensures that footnote references are placed after punctuation, not before."},"force-yaml-escape":{name:"Force YAML Escape",description:"Escapes the values for the specified YAML keys.","force-yaml-escape-keys":{name:"Force YAML Escape on Keys",description:"Uses the YAML escape character on the specified YAML keys separated by a new line character if it is not already escaped. Do not use on YAML arrays."}},"format-tags-in-yaml":{name:"Format Tags in YAML",description:"Remove Hashtags from tags in the YAML frontmatter, as they make the tags there invalid."},"format-yaml-array":{name:"Format Yaml Array",description:"Allows for the formatting of regular yaml arrays as either multi-line or single-line and `tags` and `aliases` are allowed to have some Obsidian specific yaml formats. Note that single string to single-line goes from a single string entry to a single-line array if more than 1 entry is present. The same is true for single string to multi-line except it becomes a multi-line array.","alias-key":{name:"Format yaml aliases section",description:"Turns on formatting for the yaml aliases section. You should not enable this option alongside the rule `YAML Title Alias` as they may not work well together or they may have different format styles selected causing unexpected results."},"tag-key":{name:"Format yaml tags section",description:"Turns on formatting for the yaml tags section."},"default-array-style":{name:"Default yaml array section style",description:"The style of other yaml arrays that are not `tags`, `aliases` or in `Force key values to be single-line arrays` and `Force key values to be multi-line arrays`"},"default-array-keys":{name:"Format yaml array sections",description:"Turns on formatting for regular yaml arrays"},"force-single-line-array-style":{name:"Force key values to be single-line arrays",description:"Forces the yaml array for the new line separated keys to be in single-line format (leave empty to disable this option)"},"force-multi-line-array-style":{name:"Force key values to be multi-line arrays",description:"Forces the yaml array for the new line separated keys to be in multi-line format (leave empty to disable this option)"}},"header-increment":{name:"Header Increment",description:"Heading levels should only increment by one level at a time","start-at-h2":{name:"Start Header Increment at Heading Level 2",description:"Makes heading level 2 the minimum heading level in a file for header increment and shifts all headings accordingly so they increment starting with a level 2 heading."}},"heading-blank-lines":{name:"Heading blank lines",description:"All headings have a blank line both before and after (except where the heading is at the beginning or end of the document).",bottom:{name:"Bottom",description:"Insert a blank line after headings"},"empty-line-after-yaml":{name:"Empty Line Between Yaml and Header",description:"Keep the empty line between the Yaml frontmatter and header"}},"headings-start-line":{name:"Headings Start Line",description:"Headings that do not start a line will have their preceding whitespace removed to make sure they get recognized as headers."},"insert-yaml-attributes":{name:"Insert YAML attributes",description:"Inserts the given YAML attributes into the YAML frontmatter. Put each attribute on a single line.","text-to-insert":{name:"Text to insert",description:"Text to insert into the YAML frontmatter"}},"line-break-at-document-end":{name:"Line Break at Document End",description:"Ensures that there is exactly one line break at the end of a document."},"move-footnotes-to-the-bottom":{name:"Move Footnotes to the bottom",description:"Move all footnotes to the bottom of the document."},"move-math-block-indicators-to-their-own-line":{name:"Move Math Block Indicators to Their Own Line",description:"Move all starting and ending math block indicators to their own lines using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."},"move-tags-to-yaml":{name:"Move Tags to Yaml",description:"Move all tags to Yaml frontmatter of the document.","how-to-handle-existing-tags":{name:"Body tag operation",description:"What to do with non-ignored tags in the body of the file once they have been moved to the frontmatter"},"tags-to-ignore":{name:"Tags to ignore",description:"The tags that will not be moved to the tags array or removed from the body content if `Remove the hashtag from tags in content body` is enabled. Each tag should be on a new line and without the `#`. **Make sure not to include the hashtag in the tag name.**"}},"no-bare-urls":{name:"No Bare URLs",description:"Encloses bare URLs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes."},"ordered-list-style":{name:"Ordered List Style",description:"Makes sure that ordered lists follow the style specified. Note that 2 spaces or 1 tab is considered to be an indentation level.","number-style":{name:"Number Style",description:"The number style used in ordered list indicators"},"list-end-style":{name:"Ordered List Indicator End Style",description:"The ending character of an ordered list indicator"}},"paragraph-blank-lines":{name:"Paragraph blank lines",description:"All paragraphs should have exactly one blank line both before and after."},"prevent-double-checklist-indicator-on-paste":{name:"Prevent Double Checklist Indicator on Paste",description:"Removes starting checklist indicator from the text to paste if the line the cursor is on in the file has a checklist indicator"},"prevent-double-list-item-indicator-on-paste":{name:"Prevent Double List Item Indicator on Paste",description:"Removes starting list indicator from the text to paste if the line the cursor is on in the file has a list indicator"},"proper-ellipsis-on-paste":{name:"Proper Ellipsis on Paste",description:"Replaces three consecutive dots with an ellipsis even if they have a space between them in the text to paste"},"proper-ellipsis":{name:"Proper Ellipsis",description:"Replaces three consecutive dots with an ellipsis."},"quote-style":{name:"Quote Style",description:"Updates the quotes in the body content to be updated to the specified single and double quote styles.","single-quote-enabled":{name:"Enable `Single Quote Style`",description:"Specifies that the selected single quote style should be used."},"single-quote-style":{name:"Single Quote Style",description:"The style of single quotes to use."},"double-quote-enabled":{name:"Enable `Double Quote Style`",description:"Specifies that the selected double quote style should be used."},"double-quote-style":{name:"Double Quote Style",description:"The style of double quotes to use."}},"re-index-footnotes":{name:"Re-Index Footnotes",description:"Re-indexes footnote keys and footnote, based on the order of occurrence (NOTE: This rule does *not* work if there is more than one footnote for a key.)"},"remove-consecutive-list-markers":{name:"Remove Consecutive List Markers",description:"Removes consecutive list markers. Useful when copy-pasting list items."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Remove Empty Lines Between List Markers and Checklists",description:"There should not be any empty lines between list markers and checklists."},"remove-empty-list-markers":{name:"Remove Empty List Markers",description:"Removes empty list markers, i.e. list items without content."},"remove-hyphenated-line-breaks":{name:"Remove Hyphenated Line Breaks",description:"Removes hyphenated line breaks. Useful when pasting text from textbooks."},"remove-hyphens-on-paste":{name:"Remove Hyphens on Paste",description:"Removes hyphens from the text to paste"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Remove Leading or Trailing Whitespace on Paste",description:"Removes any leading non-tab whitespace and all trailing whitespace for the text to paste"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Remove Leftover Footnotes from Quote on Paste",description:"Removes any leftover footnote references for the text to paste"},"remove-link-spacing":{name:"Remove link spacing",description:"Removes spacing around link text."},"remove-multiple-blank-lines-on-paste":{name:"Remove Multiple Blank Lines on Paste",description:"Condenses multiple blank lines down into one blank line for the text to paste"},"remove-multiple-spaces":{name:"Remove Multiple Spaces",description:"Removes two or more consecutive spaces. Ignores spaces at the beginning and ending of the line. "},"remove-space-around-characters":{name:"Remove Space around Characters",description:"Ensures that certain characters are not surrounded by whitespace (either single spaces or a tab). Note that this may causes issues with markdown format in some cases.","include-fullwidth-forms":{name:"Include Fullwidth Forms",description:'Include Fullwidth Forms Unicode block'},"include-cjk-symbols-and-punctuation":{name:"Include CJK Symbols and Punctuation",description:'Include CJK Symbols and Punctuation Unicode block'},"include-dashes":{name:"Include Dashes",description:"Include en dash (\u2013) and em dash (\u2014)"},"other-symbols":{name:"Other symbols",description:"Other symbols to include"}},"remove-space-before-or-after-characters":{name:"Remove Space Before or After Characters",description:"Removes space before the specified characters and after the specified characters. Note that this may causes issues with markdown format in some cases.","characters-to-remove-space-before":{name:"Remove Space Before Characters",description:"Removes space before the specified characters. **Note: using `{` or `}` in the list of characters will unexpectedly affect files as it is used in the ignore syntax behind the scenes.**"},"characters-to-remove-space-after":{name:"Remove Space After Characters",description:"Removes space after the specified characters. **Note: using `{` or `}` in the list of characters will unexpectedly affect files as it is used in the ignore syntax behind the scenes.**"}},"remove-trailing-punctuation-in-heading":{name:"Remove Trailing Punctuation in Heading",description:"Removes the specified punctuation from the end of headings making sure to ignore the semicolon at the end of [HTML entity references](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references).","punctuation-to-remove":{name:"Trailing Punctuation",description:"The trailing punctuation to remove from the headings in the file."}},"remove-yaml-keys":{name:"Remove YAML Keys",description:"Removes the YAML keys specified","yaml-keys-to-remove":{name:"YAML Keys to Remove",description:"The yaml keys to remove from the yaml frontmatter with or without colons"}},"space-after-list-markers":{name:"Space after list markers",description:"There should be a single space after list markers and checkboxes."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Space between Chinese Japanese or Korean and English or numbers",description:"Ensures that Chinese, Japanese, or Korean and English or numbers are separated by a single space. Follows these [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Strong Style",description:"Makes sure the strong style is consistent.",style:{name:"Style",description:"The style used to denote strong/bolded content"}},"trailing-spaces":{name:"Trailing spaces",description:"Removes extra spaces after every line.","twp-space-line-break":{name:"Two Space Linebreak",description:'Ignore two spaces followed by a line break ("Two Space Rule").'}},"two-spaces-between-lines-with-content":{name:"Two Spaces Between Lines with Content",description:"Makes sure that two spaces are added to the ends of lines with content continued on the next line for paragraphs, blockquotes, and list items"},"unordered-list-style":{name:"Unordered List Style",description:"Makes sure that unordered lists follow the style specified.","list-style":{name:"List item style",description:"The list item style to use in unordered lists"}},"yaml-key-sort":{name:"YAML Key Sort",description:"Sorts the YAML keys based on the order and priority specified. Note: may remove blank lines as well.","yaml-key-priority-sort-order":{name:"YAML Key Priority Sort Order",description:"The order in which to sort keys with one on each line where it sorts in the order found in the list"},"priority-keys-at-start-of-yaml":{name:"Priority Keys at Start of YAML",description:"YAML Key Priority Sort Order is placed at the start of the YAML frontmatter"},"yaml-sort-order-for-other-keys":{name:"YAML Sort Order for Other Keys",description:"The way in which to sort the keys that are not found in the YAML Key Priority Sort Order text area"}},"yaml-timestamp":{name:"YAML Timestamp",description:"Keep track of the date the file was last edited in the YAML front matter. Gets dates from file metadata.","date-created":{name:"Date Created",description:"Insert the file creation date"},"date-created-key":{name:"Date Created Key",description:"Which YAML key to use for creation date"},"force-retention-of-create-value":{name:"Force Date Created Key Value Retention",description:"Reuses the value in the YAML frontmatter for date created instead of the file metadata which is useful for preventing file metadata changes from causing the value to change to a different value."},"date-modified":{name:"Date Modified",description:"Insert the date the file was last modified"},"date-modified-key":{name:"Date Modified Key",description:"Which YAML key to use for modification date"},format:{name:"Format",description:"Moment date format to use (see [Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML Title Alias",description:"Inserts the title of the file into the YAML frontmatter's aliases section. Gets the title from the first H1 or filename.","preserve-existing-alias-section-style":{name:"Preserve existing aliases section style",description:"If set, the `YAML aliases section style` setting applies only to the newly created sections"},"keep-alias-that-matches-the-filename":{name:"Keep alias that matches the filename",description:"Such aliases are usually redundant"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Use the YAML key `linter-yaml-title-alias` to help with filename and heading changes",description:"If set, when the first H1 heading changes or filename if first H1 is not present changes, then the old alias stored in this key will be replaced with the new value instead of just inserting a new entry in the aliases array"}},"yaml-title":{name:"YAML Title",description:"Inserts the title of the file into the YAML frontmatter. Gets the title based on the selected mode.","title-key":{name:"Title Key",description:"Which YAML key to use for title"},mode:{name:"Mode",description:"The method to use to get the title"}}},enums:{"Title Case":"Title Case","ALL CAPS":"ALL CAPS","First letter":"First letter",".":".",")":")",ERROR:"error",TRACE:"trace",DEBUG:"debug",INFO:"info",WARN:"warn",SILENT:"silent",ascending:"ascending",lazy:"lazy",Nothing:"Nothing","Remove hashtag":"Remove hashtag","Remove whole tag":"Remove whole tag",asterisk:"asterisk",underscore:"underscore",consistent:"consistent","-":"-","*":"*","+":"+",space:"space","no space":"no space",None:"None","Ascending Alphabetical":"Ascending Alphabetical","Descending Alphabetical":"Descending Alphabetical","multi-line":"multi-line","single-line":"single-line","single string to single-line":"single string to single-line","single string to multi-line":"single string to multi-line","single string comma delimited":"single string comma delimited","single string space delimited":"single string space delimited","single-line space delimited":"single-line space delimited","first-h1":"First H1","first-h1-or-filename-if-h1-missing":"First H1 or Filename if H1 is Missing",filename:"Filename","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var _c={commands:{"lint-file":{name:"Analizar este archivo","error-message":"Error Analizando un Archivooccuri\xF3 en el Archivo"},"lint-file-unless-ignored":{name:"Analizar este archivo si no es ignorado"},"lint-all-files":{name:"Analizar todos los archivos en la b\xF3veda","error-message":"Error Analizando Todos los Archivos en Archivo","success-message":"Analiz\xF3 todos los archivos","errors-message-singular":"Analiz\xF3 todos los archivos y un error ocurri\xF3.","errors-message-plural":"Analiz\xF3 todos los archivos y {NUM} errores ocurrieron","start-message":"Esto editar\xE1 todos de sus archivos y es possible que introduzca errores","submit-button-text":"Analizar Todo","submit-button-notice-text":"Analizando todos los archivos..."},"lint-all-files-in-folder":{name:"Analizar todos los archivos en esta carpeta","start-message":"Esto editar\xE1 todos de sus archivos en {FOLDER_NAME} incluyendo los archivos que existen en las subcarpetas y es possible que introduzca errores.","submit-button-text":"Analizar Todos los Archivos en {FOLDER_NAME}","submit-button-notice-text":"Analizando todos los archivos en {FOLDER_NAME}...","error-message":"Error Analizando Todos los Archivos en Carpeta en Archivo","success-message":"Analiz\xF3 los {NUM} archivos en {FOLDER_NAME}.","message-singular":"Analiz\xF3 los {NUM} archivos en {FOLDER_NAME} y un error ocurri\xF3.","message-plural":"Analiz\xF3 los {FILE_COUNT} archivos en {FOLDER_NAME} y {ERROR_COUNT} errores ocurrieron."},"paste-as-plain-text":{name:"Pegar como texto sin formato y sin modificaciones"},"lint-file-pop-up-menu-text":{name:"Analizar el archivo"},"lint-folder-pop-up-menu-text":{name:"Analizar la carpeta"}},logs:{"plugin-load":"Cargando el programa adicional","plugin-unload":"Descargando el programa adicional","folder-lint":"Analizando la carpeta ","linter-run":"Usando linter","paste-link-warning":"abort\xF3 lint de pagar porque el contento del portapapeles es un enlace y no lo hizo para evitar conflictos con otros programas adicionales que modifican lo que hace el pegar.","see-console":"Consulte la consola para obtener m\xE1s detalles.","unknown-error":"Se ha producido un error desconocido durante el linting.","moment-locale-not-found":"Intentando cambiar la zona de Moment.js a {MOMENT_LOCALE}, el resulto fue {CURRENT_LOCALE}","pre-rules":"Las reglas antes de las reglas normales","post-rules":"las reglas despu\xE9s de las reglas normales","rule-running":"usando las reglas","custom-regex":"las reglas regex personalizadas","running-custom-regex":"Usando regex personalizada","running-custom-lint-command":"Usando comandos de lint personalizados","custom-lint-duplicate-warning":'No se puede usar el mismo comando ("{COMMAND_NAME}") dos veces como un comando de lint.',"custom-lint-error-message":"El commando de lint personalizado","disabled-text":"es inhabilitado","run-rule-text":"Usando","timing-key-not-found":"clave de ritmo '{TIMING_KEY}' no ya existe en la lista de claves de ritmo y fue ignorado por eso","milliseconds-abbreviation":"ms","invalid-date-format-error":"No se pudo analizar ni identificar el formato de la fech de creaci\xF3n `{DATE}` entonces la fecha de creaci\xF3n se dej\xF3 sola en `{FILE_NAME}`","invalid-delimiter-error-message":"El delimitador solo puede ser de un solo car\xE1cter","missing-footnote-error-message":"La nota al pie `{FOOTNOTE}` no tiene ninguna referencia de nota al pie correspondiente antes del contenido de la nota al pie y no se puede procesar. Aseg\xFArese de que todas las notas a pie de p\xE1gina tengan una referencia correspondiente antes del contenido de la nota al pie de p\xE1gina.","too-many-footnotes-error-message":"La clave de nota al pie '{FOOTNOTE_KEY}' tiene m\xE1s de 1 nota al pie que hace referencia a ella. Actualice las notas al pie para que solo haya una nota al pie por clave de nota al pie.","wrapper-yaml-error":"hubo un error en el yaml: {ERROR_MESSAGE}","wrapper-unknown-error":"huno un error desconocido: {ERROR_MESSAGE}","uneven-amount-of-quotes":"Las instancias de la cita `{QUOTE}` en el archivo no son pares, por lo que no podemos convertir las comillas rectas en comillas tipogr\xE1ficas."},"notice-text":{"empty-clipboard":"No hay contenido del portapapeles.","characters-added":"Caracteres a\xF1adidos","characters-removed":"Caracteres eliminados"},"linter-title":"Linter","empty-search-results-text":"No hay configuraci\xF3n que coincida con la b\xFAsqueda","warning-text":"Advertencia","file-backup-text":"Aseg\xFArese de haber realizado una copia de seguridad de sus archivos.",tabs:{names:{general:"Ajustes generales",custom:"Ajustes personalizados",yaml:"Ajustes de YAML",heading:"Ajustes del encabezado",content:"Ajustes del contenido",footnote:"Ajustes de notas al pie",spacing:"Ajustes del espacio en blanco",paste:"Ajustes de pegar",debug:"Ajustes de depurar"},"default-search-bar-text":"Buscar en todos los ajustes",general:{"lint-on-save":{name:"Analizar en guardar",description:"Analizar el archivo en el guardado manual (cuando se presiona `Ctrl + S` o cuando se ejecuta `:w` mientras se usan combinaciones de claves de vim)"},"display-message":{name:"Mostrar mensaje en analizar",description:"Mostrar el n\xFAmero de caracteres modificados despu\xE9s de analizar"},"folders-to-ignore":{name:"Carpetas para omitir",description:"Carpetas que se deben omitir al analizar todos los archivos o al guardar en l\xEDnea. Introducir rutas de carpeta separadas por nuevas l\xEDneas"},"override-locale":{name:"Anular configuraci\xF3n regional",description:"Establezca esta opci\xF3n si desea utilizar una configuraci\xF3n regional diferente de la predeterminada"},"same-as-system-locale":"Igual que el sistema ({SYS_LOCALE})","yaml-aliases-section-style":{name:"Estilo de secci\xF3n de alias de YAML",description:"El estilo de la secci\xF3n de alias de YAML"},"yaml-tags-section-style":{name:"Estilo de secci\xF3n de etiquetas de YAML",description:"El estilo de la secci\xF3n de etiquetas de YAML"},"default-escape-character":{name:"Car\xE1cter de escape predeterminado",description:"El car\xE1cter predeterminado que se va a usar para escapar de los valores YAML cuando no hay comillas simples y comillas dobles."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Eliminaci\xF3n de caracteres de escape innecesarios cuando est\xE1 en formato de matriz multil\xEDnea",description:"Los caracteres de escape para matrices de YAML multil\xEDnea no necesitan el mismo escape que las matrices de una sola l\xEDnea, por lo que cuando est\xE1n en formato multil\xEDnea, elimine los escapes adicionales que no son necesarios"},"number-of-dollar-signs-to-indicate-math-block":{name:"N\xFAmero de signos de d\xF3lar para indicar el bloque matem\xE1tico",description:"La cantidad de signos de d\xF3lar para considerar el contenido matem\xE1tico como un bloque matem\xE1tico en lugar de matem\xE1ticas en l\xEDnea"}},debug:{"log-level":{name:"Nivel de registro",description:"Los tipos de registros que el servicio permitir\xE1 registrar. El valor predeterminado es error."},"linter-config":{name:"Configuraci\xF3n de Linter",description:"El contenido del archivo data.json para Linter a partir de la carga de la p\xE1gina de configuraci\xF3n"},"log-collection":{name:"Recopilar registros al activar y desactivar el archivo actual",description:"Contin\xFAa y recopila registros cuando `Analizar en guardar` y analizar el archivo actual. Estos registros pueden ser \xFAtiles para depurar y crear informes de errores."},"linter-logs":{name:"Registros de Linter",description:"Los registros del \xFAltimo `Analizar en guardar` o del \xFAltimo archivo actual de analizar se ejecutan si est\xE1n habilitados."}}},options:{"custom-command":{name:"Comandos personalizados",description:"Los comandos personalizados son comandos de Obsidian que se ejecutan despu\xE9s de que Linter termina de ejecutar sus reglas regulares. Esto significa que no se ejecutan antes de que se ejecute la l\xF3gica de marca de tiempo YAML, por lo que pueden hacer que la marca de tiempo de YAML se active en la siguiente ejecuci\xF3n del Linter. Solo puede seleccionar un comando de Obsidian una vez. **_Note que esto actualmente solo funciona para analizar el archivo actual._**",warning:"Al seleccionar una opci\xF3n, aseg\xFArese de seleccionar la opci\xF3n usando el rat\xF3n o presionando la clave Intro. Es posible que otros m\xE9todos de selecci\xF3n no funcionen y solo se guardar\xE1n las selecciones de un comando de Obsidian real o una cadena vac\xEDa.","add-input-button-text":"Agregar nuevo comando","command-search-placeholder-text":"Comando de Obsidian","move-up-tooltip":"Desplazar hacia arriba","move-down-tooltip":"Desplazar hacia abajo","delete-tooltip":"Borrar"},"custom-replace":{name:"Reemplazo regex personalizado",description:"El reemplazo de regex personalizado se puede usar para reemplazar cualquier cosa que coincida con el valor de b\xFAsqueda de regex con el valor de reemplazo. Los valores de reemplazo y b\xFAsqueda deber\xE1n ser valores regex v\xE1lidos.",warning:"Use esto con precauci\xF3n si no conoce regex. Adem\xE1s, aseg\xFArese de no usar lookbehinds en su regex en dispositivos m\xF3viles iOS, ya que eso har\xE1 que falle analizar ya que no es compatible con esa plataforma.","add-input-button-text":"Agregar nuevo reemplazo de regex","regex-to-find-placeholder-text":"Regex para encontrar","flags-placeholder-text":"Marcas","regex-to-replace-placeholder-text":"Regex para reemplazar","move-up-tooltip":"Desplazar hacia arriba","move-down-tooltip":"Desplazar hacia abajo","delete-tooltip":"Borrar"}},rules:{"auto-correct-common-misspellings":{name:"Correcci\xF3n autom\xE1tica de errores ortogr\xE1ficos comunes",description:"Utiliza un diccionario de errores ortogr\xE1ficos comunes para convertirlos autom\xE1ticamente a su ortograf\xEDa correcta. Consulte [mapa de autocorrecci\xF3n](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) para obtener la lista completa de palabras corregidas autom\xE1ticamente.","ignore-words":{name:"Ignorar palabras",description:"Una lista separada por comas de palabras en min\xFAsculas para ignorar al corregir autom\xE1ticamente"}},"add-blockquote-indentation-on-paste":{name:"Agregar sangr\xEDa de blockquote en pegar",description:"Agrega blockquotes a todas menos a la primera l\xEDnea, cuando el cursor est\xE1 en una l\xEDnea blockquote/callout durante el pegado"},"blockquote-style":{name:"Estilo de cotizaci\xF3n en bloque",description:"Se asegura de que el estilo de la cita en bloque sea consistente.",style:{name:"Estilo",description:"El estilo utilizado en los indicadores de cotizaci\xF3n en bloque"}},"capitalize-headings":{name:"Poner may\xFAsculas en los encabezados",description:"Los encabezados deben estar formateados con may\xFAsculas",style:{name:"Estilo",description:"El estilo de may\xFAsculas que se va a utilizar"},"ignore-case-words":{name:"Ignorar palabras en may\xFAsculas y min\xFAsculas",description:"Solo aplique el estilo de may\xFAsculas y min\xFAsculas a las palabras que est\xE9n todas en min\xFAsculas"},"ignore-words":{name:"Ignorar palabras",description:"Una lista de palabras separadas por comas para ignorar al poner en may\xFAsculas"},"lowercase-words":{name:"Palabras en min\xFAsculas",description:"Una lista de palabras separadas por comas para mantener min\xFAsculas"}},"compact-yaml":{name:"YAML compacto",description:"Elimina las l\xEDneas en blanco iniciales y finales en la materia frontal de YAML.","inner-new-lines":{name:"Nuevas l\xEDneas internas",description:"Quitar nuevas l\xEDneas que no est\xE9n al principio o al final del YAML"}},"consecutive-blank-lines":{name:"L\xEDneas en blanco consecutivas",description:"Debe haber como m\xE1ximo una l\xEDnea en blanco consecutiva."},"convert-bullet-list-markers":{name:"Convertir marcadores de lista de vi\xF1etas",description:"Convierte s\xEDmbolos de marcador de lista de vi\xF1etas comunes en marcadores de lista de rebajas."},"convert-spaces-to-tabs":{name:"Convertir espacios en pesta\xF1as",description:"Convierte los espacios iniciales en pesta\xF1as.",tabsize:{name:"Tama\xF1o de la pesta\xF1a",description:"N\xFAmero de espacios que se convertir\xE1n en una pesta\xF1a"}},"emphasis-style":{name:"Estilo de \xE9nfasis",description:"Se asegura de que el estilo de \xE9nfasis sea consistente.",style:{name:"Estilo",description:"El estilo utilizado para denotar el contenido enfatizado"}},"empty-line-around-blockquotes":{name:"L\xEDnea vac\xEDa alrededor de blockquotes",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de blockquotes a menos que inicien o finalicen un documento. **Tenga en cuenta que una l\xEDnea vac\xEDa es un nivel menos de anidamiento para blockquotes o un car\xE1cter de nueva l\xEDnea.**"},"empty-line-around-code-fences":{name:"L\xEDnea vac\xEDa alrededor de las vallas de c\xF3digo",description:"Garantiza que haya una l\xEDnea vac\xEDa alrededor de las vallas de c\xF3digo a menos que inicien o finalicen un documento."},"empty-line-around-math-blocks":{name:"L\xEDnea vac\xEDa alrededor de los bloques matem\xE1ticos",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de los bloques matem\xE1ticos usando `N\xFAmero de signos de d\xF3lar para indicar un bloque matem\xE1tico` para determinar cu\xE1ntos signos de d\xF3lar indica un bloque matem\xE1tico para matem\xE1ticas de una sola l\xEDnea."},"empty-line-around-tables":{name:"L\xEDnea vac\xEDa alrededor de las tablas",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de las tablas con sabor a github a menos que inicien o finalicen un documento."},"escape-yaml-special-characters":{name:"Evitar los caracteres especiales de YAML",description:`Escapa dos puntos con un espacio despu\xE9s de ellos (:), comillas simples (') y comillas dobles (") en YAML.`,"try-to-escape-single-line-arrays":{name:"Intente escapar las matrices de una sola l\xEDnea",description:'Intenta escapar de los valores de matriz suponiendo que una matriz comienza con "[", termina con "]" y tiene elementos que est\xE1n delimitados por ",".'}},"file-name-heading":{name:"Encabezado de nombre de archivo",description:"Inserta el nombre de archivo como un encabezado H1 si no existe ning\xFAn encabezado H1."},"footnote-after-punctuation":{name:"Nota al pie despu\xE9s de la puntuaci\xF3n",description:"Asegura que las referencias de notas al pie se coloquen despu\xE9s de la puntuaci\xF3n, no antes."},"force-yaml-escape":{name:"Forzar escape de YAML",description:"Escapa los valores de las claves YAML especificadas.","force-yaml-escape-keys":{name:"Forzar escape de YAML en las claves",description:"Utiliza el car\xE1cter de escape de YAML en las claves de YAML especificadas separadas por un nuevo car\xE1cter de l\xEDnea si a\xFAn no est\xE1 escapado. No lo use en matrices de YAML."}},"format-tags-in-yaml":{name:"Dar formato a las etiquetas de formato en YAML",description:"Elimine los hashtags de las etiquetas en el frontmatter del YAML, ya que hacen que las etiquetas no sean v\xE1lidas."},"format-yaml-array":{name:"Dar formato a las matrices de YAML",description:"Permite el formato de matrices regulares de YAML como multil\xEDnea o de una sola l\xEDnea y las `etiquetas` y `alias` pueden tener algunos formatos espec\xEDficos de YAML de Obsidian. Tenga en cuenta que una sola cadena a una sola l\xEDnea pasa de una sola entrada de cadena a una matriz de una sola l\xEDnea si hay m\xE1s de 1 entrada presente. Lo mismo es cierto para una sola cadena a multil\xEDnea, excepto que se convierte en una matriz multil\xEDnea.","alias-key":{name:"Dar formato a la secci\xF3n de alias de YAML",description:"Activa el formato para la secci\xF3n de alias yaml. No debe habilitar esta opci\xF3n junto con la regla `Alias de t\xEDtulo YAML`, ya que es posible que no funcionen bien juntos o que tengan diferentes estilos de formato seleccionados que causen resultados inesperados."},"tag-key":{name:"Dar formato a la secci\xF3n de etiquetas de YAML",description:"Activa el formato para la secci\xF3n de etiquetas de YAML."},"default-array-style":{name:"Estilo de secci\xF3n de matriz predeterminado de YAML",description:"El estilo de otras matrices de YAML que no son `etiquetas`, `alias` o en `Forzar valores de clave para que sean matrices de una sola l\xEDnea` y `Forzar valores de clave para que sean matrices multil\xEDnea`"},"default-array-keys":{name:"Dar formato a las secciones de matrices de YAML",description:"Activa el formato para matrices normales de YAML"},"force-single-line-array-style":{name:"Forzar que los valores de clave sean matrices de una sola l\xEDnea",description:"Fuerza la matriz de YAML para que las nuevas claves separadas por l\xEDnea est\xE9n en formato de una sola l\xEDnea (deje vac\xEDo para deshabilitar esta opci\xF3n)"},"force-multi-line-array-style":{name:"Forzar que los valores de las claves sean matrices multil\xEDneas",description:"Fuerza la matriz de YAML para que las nuevas claves separadas por l\xEDnea est\xE9n en formato multil\xEDnea (deje vac\xEDa para deshabilitar esta opci\xF3n)"}},"header-increment":{name:"Incremento de encabezado",description:"Los niveles de encabezado solo deben aumentar en un nivel a la vez","start-at-h2":{name:"Iniciar el incremento de encabezado en el nivel de encabezado 2",description:"Hace que el nivel de encabezado 2 sea el nivel de t\xEDtulo m\xEDnimo en un archivo para el incremento de encabezado y desplaza todos los encabezados en consecuencia para que se incrementen a partir de un encabezado de nivel 2."}},"heading-blank-lines":{name:"L\xEDneas en blanco de encabezado",description:"Todos los encabezados tienen una l\xEDnea en blanco antes y despu\xE9s (excepto cuando el encabezado est\xE1 al principio o al final del documento).",bottom:{name:"Abajo",description:"Insertar una l\xEDnea en blanco despu\xE9s de los encabezados"},"empty-line-after-yaml":{name:"L\xEDnea vac\xEDa entre el YAML y el encabezado",description:"Mantenga la l\xEDnea vac\xEDa entre el frontmatter del YAML y el encabezado"}},"headings-start-line":{name:"Comenzar los encabezados al principio de la l\xEDnea",description:"Los encabezados que no inician una l\xEDnea tendr\xE1n su espacio en blanco anterior eliminado para asegurarse de que se reconozcan como encabezados."},"insert-yaml-attributes":{name:"Insertar atributos de YAML",description:"Inserta los atributos especificados de YAML en el frontmatter del YAML. Coloque cada atributo en una sola l\xEDnea.","text-to-insert":{name:"Texto a insertar",description:"Texto para insertar en el frontmatter del YAML"}},"line-break-at-document-end":{name:"Salto de l\xEDnea al final del documento",description:"Asegura que haya exactamente un salto de l\xEDnea al final de un documento."},"move-footnotes-to-the-bottom":{name:"Mover las notas al pie a la parte inferior",description:"Mueva todas las notas al pie de p\xE1gina a la parte inferior del documento."},"move-math-block-indicators-to-their-own-line":{name:"Mover los indicadores de bloques matem\xE1ticos a su propia l\xEDnea",description:"Mueva todos los indicadores de bloques matem\xE1ticos iniciales y finales a sus propias l\xEDneas usando `N\xFAmero de signos de d\xF3lar para indicar un bloque matem\xE1tico` para determinar cu\xE1ntos signos de d\xF3lar indica un bloque matem\xE1tico para matem\xE1ticas de una sola l\xEDnea."},"move-tags-to-yaml":{name:"Mover etiquetas a YAML",description:"Mueva todas las etiquetas al frontmatter del YAML del documento.","how-to-handle-existing-tags":{name:"Operaci\xF3n de etiqueta corporal",description:"Lo qur se debe hacer con las etiquetas no ignoradas en el cuerpo del archivo una vez que se han movido al frontmatter"},"tags-to-ignore":{name:"Etiquetas para omitir",description:"Las etiquetas que no se mover\xE1n a la matriz de etiquetas ni se eliminar\xE1n del contenido del cuerpo si est\xE1 habilitado `Eliminar el hashtag de las etiquetas en el cuerpo del contenido`. Cada etiqueta debe estar en una nueva l\xEDnea y sin el `#`. **Aseg\xFArese de no incluir el hashtag en el nombre de la etiqueta.**"}},"no-bare-urls":{name:"Sin URL desnuda",description:"Encierra las direcciones URL desnudas con corchetes angulares, excepto cuando est\xE1n encerradas en marcas traseras, llaves cuadradas o comillas simples o dobles."},"ordered-list-style":{name:"Estilo de lista ordenada",description:"Se asegura de que las listas ordenadas siguen el estilo especificado. Tenga en cuenta que 2 espacios o 1 tabulaci\xF3n se considera un nivel de sangr\xEDa.","number-style":{name:"Estilo num\xE9rico",description:"El estilo num\xE9rico utilizado en los indicadores de lista ordenada"},"list-end-style":{name:"Estilo final del indicador de lista ordenada",description:"El car\xE1cter final de un indicador de lista ordenada"}},"paragraph-blank-lines":{name:"L\xEDneas en blanco del p\xE1rrafo",description:"Todos los p\xE1rrafos deben tener exactamente una l\xEDnea en blanco antes y despu\xE9s."},"prevent-double-checklist-indicator-on-paste":{name:"Evitar el indicador de doble lista de verificaci\xF3n en pegar",description:"Elimina el indicador de lista de verificaci\xF3n inicial del texto para pegar si la l\xEDnea en la que se encuentra el cursor en el archivo tiene un indicador de lista de verificaci\xF3n"},"prevent-double-list-item-indicator-on-paste":{name:"Prevenir el indicador de elemento de lista doble al pegar",description:"Elimina el indicador de lista inicial del texto para pegar si la l\xEDnea en la que se encuentra el cursor en el archivo tiene un indicador de lista"},"proper-ellipsis-on-paste":{name:"Puntos suspensivos adecuados al pegar",description:"Reemplaza tres puntos consecutivos por puntos suspensivos aunque tengan un espacio entre ellos en el texto a pegar"},"proper-ellipsis":{name:"Puntos suspensivos propios",description:"Reemplaza tres puntos consecutivos con puntos suspensivos."},"quote-style":{name:"Estilo de cotizaci\xF3n",description:"Actualiza las comillas en el contenido del cuerpo para que se actualicen a los estilos de comillas simples y dobles especificados.","single-quote-enabled":{name:"Habilitar `Estilo de comillas simples`",description:"Especifica que se debe utilizar el estilo de comillas simples seleccionado."},"single-quote-style":{name:"Estilo de comillas simples",description:"El estilo de las comillas simples a utilizar."},"double-quote-enabled":{name:"Habilitar `Estilo de comillas dobles`",description:"Especifica que se debe utilizar el estilo de comillas dobles seleccionado."},"double-quote-style":{name:"Estilo de comillas dobles",description:"El estilo de comillas dobles a utilizar."}},"re-index-footnotes":{name:"Volver a indexar notas al pie",description:"Vuelve a indexar las notas al pie de p\xE1gina y las notas al pie, seg\xFAn el orden de aparici\xF3n (NOTA: esta regla *no* funciona si hay m\xE1s de una nota al pie para una clave)."},"remove-consecutive-list-markers":{name:"Eliminar marcadores de lista consecutiva",description:"Elimina marcadores de lista consecutivos. \xDAtil al copiar y pegar elementos de la lista."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Eliminar l\xEDneas vac\xEDas entre marcadores de lista y listas de verificaci\xF3n",description:"No debe haber l\xEDneas vac\xEDas entre los marcadores de lista y las listas de verificaci\xF3n."},"remove-empty-list-markers":{name:"Eliminar marcadores de lista vac\xEDa",description:"Elimina marcadores de listas vac\xEDas, es decir, lista de elementos sin contenido."},"remove-hyphenated-line-breaks":{name:"Eliminar saltos de l\xEDnea con gui\xF3n",description:"Elimina los saltos de l\xEDnea con gui\xF3n. \xDAtil al pegar texto de libros de texto."},"remove-hyphens-on-paste":{name:"Eliminar guiones al pegar",description:"Elimina guiones del texto al pegar"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Eliminar espacios en blanco iniciales o finales al pegar",description:"Elimina cualquier espacio en blanco inicial que no sea una pesta\xF1a y todos los espacios en blanco finales para que el texto se pegue"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Eliminar las notas al pie sobrantes de la cita al pegar",description:"Elimina las referencias de notas al pie sobrantes para que el texto se pegue"},"remove-link-spacing":{name:"Quitar el espacio entre enlaces",description:"Elimina el espacio alrededor del texto del enlace."},"remove-multiple-blank-lines-on-paste":{name:"Eliminar varias l\xEDneas en blanco al pegar",description:"Condensa varias l\xEDneas en blanco en una l\xEDnea en blanco para que el texto se pegue"},"remove-multiple-spaces":{name:"Quitar varios espacios",description:"Elimina dos o m\xE1s espacios consecutivos. Ignora los espacios al principio y al final de la l\xEDnea."},"remove-space-around-characters":{name:"Quitar el espacio alrededor de los caracteres",description:"Garantiza que determinados caracteres no est\xE9n rodeados de espacios en blanco (ya sean espacios individuales o tabulaciones). Tenga en cuenta que esto puede causar problemas con el formato de descuento en algunos casos.","include-fullwidth-forms":{name:"Incluir formularios de ancho completo",description:'Incluir bloque Unicode de formularios de ancho completo'},"include-cjk-symbols-and-punctuation":{name:"Incluir s\xEDmbolos de CJK y puntuaci\xF3n",description:'Incluir Bloque Unicode de s\xEDmbolos y puntuaci\xF3n de CJK'},"include-dashes":{name:"Incluir guiones",description:"Incluir gui\xF3n corto (\u2013) y gui\xF3n largo (\u2014)"},"other-symbols":{name:"Otros s\xEDmbolos",description:"Otros s\xEDmbolos para incluir"}},"remove-space-before-or-after-characters":{name:"Quitar el espacio antes o despu\xE9s de los caracteres",description:"Elimina el espacio antes de los caracteres especificados y despu\xE9s de los caracteres especificados. Tenga en cuenta que esto puede causar problemas con el formato de descuento en algunos casos.","characters-to-remove-space-before":{name:"Eliminar espacio antes de los caracteres",description:"Elimina el espacio antes de los caracteres especificados. **Nota: el uso de `{` o `}` en la lista de caracteres afectar\xE1 inesperadamente a los archivos, ya que se usa en la sintaxis de ignorar en segundo plano.**"},"characters-to-remove-space-after":{name:"Eliminar espacio despu\xE9s de los caracteres",description:"Elimina el espacio despu\xE9s de los caracteres especificados. **Nota: el uso de `{` o `}` en la lista de caracteres afectar\xE1 inesperadamente a los archivos, ya que se usa en la sintaxis de ignorar en segundo plano.**"}},"remove-trailing-punctuation-in-heading":{name:"Eliminar la puntuaci\xF3n final en el encabezado",description:"Elimina la puntuaci\xF3n especificada al final de los encabezados, asegur\xE1ndose de ignorar el punto y coma al final de [referencias de entidades de HTML](https://es.wikipedia.org/wiki/Anexo:Referencias_a_entidades_de_caracteres_XML_y_HTML).","punctuation-to-remove":{name:"Puntuaci\xF3n final",description:"La puntuaci\xF3n final que se eliminar\xE1 de los encabezados del archivo."}},"remove-yaml-keys":{name:"Eliminar claves de YAML",description:"Elimina las claves especificadas de YAML","yaml-keys-to-remove":{name:"Claves de YAML para eliminar",description:"Las claves de YAML para eliminar del frontmatter del YAML con o sin dos puntos"}},"space-after-list-markers":{name:"Espacio despu\xE9s de los marcadores de lista",description:"Debe haber un solo espacio despu\xE9s de los marcadores de lista y las casillas de verificaci\xF3n."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Espacio entre chino japon\xE9s o coreano e ingl\xE9s o n\xFAmeros",description:"Garantiza que el chino, el japon\xE9s o el coreano y el ingl\xE9s o los n\xFAmeros est\xE9n separados por un solo espacio. Sigue estas [directrices](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Estilo fuerte",description:"Se asegura de que el estilo fuerte sea consistente.",style:{name:"Estilo",description:"El estilo utilizado para denotar contenido fuerte/en negrita"}},"trailing-spaces":{name:"Espacios finales",description:"Elimina espacios adicionales despu\xE9s de cada l\xEDnea.","twp-space-line-break":{name:"Salto de l\xEDnea de dos espacios",description:'Ignore dos espacios seguidos de un salto de l\xEDnea ("Regla de dos espacios").'}},"two-spaces-between-lines-with-content":{name:"Dos espacios entre l\xEDneas con contenido",description:"Se asegura de que se agreguen dos espacios al final de las l\xEDneas con contenido que contin\xFAa en la siguiente l\xEDnea para p\xE1rrafos, comillas y elementos de lista"},"unordered-list-style":{name:"Estilo de lista desordenada",description:"Se asegura de que las listas desordenadas sigan el estilo especificado.","list-style":{name:"Estilo de elemento de lista",description:"El estilo de elemento de lista para usar en listas desordenadas"}},"yaml-key-sort":{name:"Clasificaci\xF3n de clave de YAML",description:"Ordena las claves de YAML seg\xFAn el orden y la prioridad especificados. Nota: tambi\xE9n puede eliminar las l\xEDneas en blanco.","yaml-key-priority-sort-order":{name:"Orden de clasificaci\xF3n de prioridad de clave de YAML",description:"El orden en el que se ordenan las claves con una en cada l\xEDnea donde se ordena en el orden que se encuentra en la lista"},"priority-keys-at-start-of-yaml":{name:"Claves de prioridad al inicio del YAML",description:"El orden de clasificaci\xF3n de prioridad clave de YAML se coloca al comienzo del frontmatter del YAML"},"yaml-sort-order-for-other-keys":{name:"Orden de clasificaci\xF3n de YAML para otras claves",description:"La forma en que ordenar las claves que no se encuentran en el \xE1rea de texto `Orden de clasificaci\xF3n de prioridad de clave de YAML`"}},"yaml-timestamp":{name:"Marca de tiempo de YAML",description:"Lleve un registro de la fecha en que se edit\xF3 el archivo por \xFAltima vez en el frente del YAML. Obtiene las fechas de los metadatos del archivo.","date-created":{name:"Fecha de creaci\xF3n",description:"Inserte la fecha de creaci\xF3n del archivo"},"date-created-key":{name:"Clave de fecha de creaci\xF3n",description:"La clave de YAML para usar para la fecha de creaci\xF3n"},"force-retention-of-create-value":{name:"Forzar la fecha de creaci\xF3n de la retenci\xF3n del valor clave",description:"Reutiliza el valor en el frontmatter del YAML para la fecha de creaci\xF3n en lugar de los metadatos del archivo, lo que es \xFAtil para evitar que los cambios en los metadatos del archivo provoquen que el valor cambie a un valor diferente."},"date-modified":{name:"Fecha modificada",description:"Inserte la fecha en que se modific\xF3 el archivo por \xFAltima vez"},"date-modified-key":{name:"Clave de fecha modificada",description:"La clave de YAML para usar para la fecha de modificaci\xF3n"},format:{name:"Formato",description:"Formato de fecha de Moment a usar (ver [Opciones de formato de Moment](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"Alias de t\xEDtulo de YAML",description:"Inserta el t\xEDtulo del archivo en la secci\xF3n de alias de YAML frontmatter. Obtiene el t\xEDtulo del primer H1 o nombre de archivo.","preserve-existing-alias-section-style":{name:"Conservar el estilo de secci\xF3n de alias existente",description:"Si se establece, la configuraci\xF3n `Estilo de secci\xF3n de alias de YAML` se aplica solo a las secciones reci\xE9n creadas"},"keep-alias-that-matches-the-filename":{name:"Mantenga el alias que coincida con el nombre del archivo",description:"Estos alias suelen ser redundantes."},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Use la clave de YAML `linter-yaml-title-alias` para ayudar con los cambios de nombre de archivo y encabezado",description:"Si se establece, cuando cambia el primer encabezado H1 o cambia el nombre de archivo si el primer H1 no est\xE1 presente, el alias anterior almacenado en esta clave se reemplazar\xE1 con el nuevo valor en lugar de simplemente insertar una nueva entrada en la matriz de alias."}},"yaml-title":{name:"T\xEDtulo de YAML",description:"Inserta el t\xEDtulo del archivo en el frontmatter de YAML. Obtiene el t\xEDtulo seg\xFAn el modo seleccionado.","title-key":{name:"Clave de t\xEDtulo",description:"La clave de YAML para usar para el t\xEDtulo"},mode:{name:"Modo",description:"El m\xE9todo a utilizar para obtener el t\xEDtulo"}}},enums:{"Title Case":"Titulo del Caso","ALL CAPS":"TODO MAY\xDASCULAS","First letter":"Primera letra",".":".",")":")",ERROR:"error",TRACE:"trazar",DEBUG:"depurar",INFO:"informaci\xF3n",WARN:"advertencia",SILENT:"silencio",ascending:"ascendente",lazy:"perezoso",Nothing:"nada","Remove hashtag":"Remove hashtag","Remove whole tag":"Remove whole tag",asterisk:"asterisco",underscore:"guion bajo",consistent:"congruente","-":"-","*":"*","+":"+",space:"espacio","no space":"sin espacio",None:"nada","Ascending Alphabetical":"Ascendente alfab\xE9tico","Descending Alphabetical":"Descendiente alfab\xE9tico","multi-line":"multil\xEDnea","single-line":"linea sola","single string to single-line":"una sola cadena a una sola l\xEDnea","single string to multi-line":"cadena \xFAnica a multil\xEDnea","single string comma delimited":"cadena \xFAnica delimitada por comas","single string space delimited":"espacio de una sola cadena delimitado","single-line space delimited":"espacio de una sola l\xEDnea delimitado","first-h1":"primer encabezado de nivel 1","first-h1-or-filename-if-h1-missing":"primer encabezado de nivel 1 o nombre de archivo si falta el encabezado de primer nivel 1",filename:"nombre del archivo","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var Bc={};var Fc={};var Rc={};var Dc={};var Nc={};var jc={};var Pc={};var Kc={};var $c={};var Hc={};var Yc={};var Wc={};var Vc={};var Uc={};var ua={};var Gc={commands:{"lint-file":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","error-message":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519"},"lint-file-unless-ignored":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF08\u9664\u4E86\u88AB\u5FFD\u7565\u7684\u6587\u4EF6\uFF09"},"lint-all-files":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","error-message":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519","success-message":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","errors-message-singular":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF0C\u4F46\u6709 1 \u4E2A\u9519\u8BEF","errors-message-plural":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF0C\u4F46\u6709 {NUM} \u4E2A\u9519\u8BEF","start-message":"\u8FD9\u5C06\u7F16\u8F91\u6240\u6709\u6587\u4EF6\uFF0C\u5305\u62EC\u5B50\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\uFF0C\u53EF\u80FD\u4F1A\u5F15\u5165\u9519\u8BEF","submit-button-text":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","submit-button-notice-text":"\u6B63\u5728\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6..."},"lint-all-files-in-folder":{name:"\u683C\u5F0F\u5316\u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6","start-message":"\u8FD9\u5C06\u7F16\u8F91 {FOLDER_NAME} \u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6\uFF0C\u5305\u62EC\u5B50\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\uFF0C\u53EF\u80FD\u4F1A\u5F15\u5165\u9519\u8BEF","submit-button-text":"\u683C\u5F0F\u5316 {FOLDER_NAME} \u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6","submit-button-notice-text":"\u6B63\u5728\u683C\u5F0F\u5316 {FOLDER_NAME} \u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6...","error-message":"\u683C\u5F0F\u5316\u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519","success-message":"\u5DF2\u683C\u5F0F\u5316 {FOLDER_NAME} \u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709 {NUM} \u4E2A\u6587\u4EF6","message-singular":"\u5DF2\u683C\u5F0F\u5316 {FOLDER_NAME} \u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709 {NUM} \u4E2A\u6587\u4EF6\uFF0C\u4F46\u6709 1 \u4E2A\u9519\u8BEF","message-plural":"\u5DF2\u683C\u5F0F\u5316 {FOLDER_NAME} \u4E2D\u7684 {FILE_COUNT} \u4E2A\u6587\u4EF6\uFF0C\u4F46\u6709 {ERROR_COUNT} \u4E2A\u9519\u8BEF."},"paste-as-plain-text":{name:"\u7C98\u8D34\u4E3A\u7EAF\u6587\u672C\u4E14\u4E0D\u63D0\u9192"},"lint-file-pop-up-menu-text":{name:"\u683C\u5F0F\u5316\u6587\u4EF6"},"lint-folder-pop-up-menu-text":{name:"\u683C\u5F0F\u5316\u6587\u4EF6\u5939"}},logs:{"plugin-load":"\u6B63\u5728\u52A0\u8F7D\u63D2\u4EF6","plugin-unload":"\u6B63\u5728\u5378\u8F7D\u63D2\u4EF6","folder-lint":"\u6B63\u5728\u683C\u5F0F\u5316\u6587\u4EF6\u5939","linter-run":"\u6B63\u5728\u8FD0\u884CLinter","paste-link-warning":"\u4E2D\u6B62\u7C98\u8D34 lint \u56E0\u4E3A\u526A\u8D34\u677F\u5185\u5BB9\u662F\u4E00\u4E2A\u94FE\u63A5\uFF0C\u8FD9\u6837\u505A\u5C06\u907F\u514D\u4E0E\u5176\u4ED6\u4FEE\u6539\u7C98\u8D34\u7684\u63D2\u4EF6\u53D1\u751F\u51B2\u7A81","see-console":"\u8BF7\u67E5\u770B\u63A7\u5236\u53F0\u4EE5\u83B7\u53D6\u66F4\u591A\u4FE1\u606F","unknown-error":"\u683C\u5F0F\u5316\u8FC7\u7A0B\u53D1\u751F\u672A\u77E5\u9519\u8BEF","moment-locale-not-found":"\u5C1D\u8BD5\u901A\u8FC7 Moment.js \u5207\u6362\u5230 {MOMENT_LOCALE}, \u5B9E\u9645\u5207\u6362\u5230 {CURRENT_LOCALE}","pre-rules":"\u6BD4\u6B63\u5E38\u89C4\u5219\u4F18\u5148\u7EA7\u66F4\u9AD8\u7684\u89C4\u5219","post-rules":"\u6BD4\u6B63\u5E38\u89C4\u5219\u4F18\u5148\u7EA7\u66F4\u4F4E\u7684\u89C4\u5219","rule-running":"\u6B63\u5728\u8FD0\u884C\u89C4\u5219","custom-regex":"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u89C4\u5219","running-custom-regex":"\u6B63\u5728\u8FD0\u884C\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u89C4\u5219","running-custom-lint-command":"\u6B63\u5728\u8FD0\u884C\u81EA\u5B9A\u4E49\u683C\u5F0F\u5316\u547D\u4EE4","custom-lint-duplicate-warning":'\u4F60\u4E0D\u80FD\u8FD0\u884C\u540C\u4E00\u4E2A\u81EA\u5B9A\u4E49\u89C4\u5219 ("{COMMAND_NAME}") \u4E24\u6B21',"custom-lint-error-message":"\u81EA\u5B9A\u4E49\u683C\u5F0F\u5316\u547D\u4EE4","disabled-text":"\u5DF2\u7981\u7528","run-rule-text":"\u8FD0\u884C\u4E2D","timing-key-not-found":"\u8BA1\u65F6\u952E '{TIMING_KEY}' \u5728\u8BA1\u65F6\u4FE1\u606F\u5217\u8868\u4E2D\u4E0D\u5B58\u5728\uFF0C\u5DF2\u5FFD\u7565","milliseconds-abbreviation":"\u6BEB\u79D2","invalid-date-format-error":"\u65E0\u6CD5\u89E3\u6790\u6216\u786E\u5B9A'{FILE_NAME}'\u4E2D\u7684\u521B\u5EFA\u65E5\u671F'{DATE}'\u7684\u683C\u5F0F\uFF0C\u521B\u5EFA\u65E5\u671F\u672A\u8FDB\u884C\u4FEE\u6539","invalid-delimiter-error-message":"\u5206\u9694\u7B26\u53EA\u80FD\u4E3A\u5355\u4E2A\u5B57\u7B26","missing-footnote-error-message":"\u811A\u6CE8 \u201C{FOOTNOTE}\u201D \u5728\u811A\u6CE8\u5185\u5BB9\u4E4B\u524D\u6CA1\u6709\u5BF9\u5E94\u7684\u811A\u6CE8\u5F15\u7528\uFF0C\u65E0\u6CD5\u5904\u7406\u3002\u8BF7\u786E\u4FDD\u6240\u6709\u811A\u6CE8\u5728\u811A\u6CE8\u5185\u5BB9\u4E4B\u524D\u90FD\u6709\u76F8\u5E94\u7684\u5F15\u7528\u3002","too-many-footnotes-error-message":"\u811A\u6CE8 '{FOOTNOTE_KEY}' \u6709\u8D85\u8FC71\u4E2A\u811A\u6CE8\u5F15\u7528\uFF0C\u8BF7\u66F4\u65B0\u811A\u6CE8\u4F7F\u5F97\u4E00\u4E2A\u811A\u6CE8\u7F16\u53F7\u5BF9\u5E94\u4E00\u4E2A\u811A\u6CE8","wrapper-yaml-error":"yaml\u51FA\u73B0\u9519\u8BEF: {ERROR_MESSAGE}","wrapper-unknown-error":"\u672A\u77E5\u9519\u8BEF: {ERROR_MESSAGE}","uneven-amount-of-quotes":"`{QUOTE}` \u5F15\u53F7\u5728\u6587\u4EF6\u4E2D\u7684\u5B9E\u4F8B\u4E0D\u662F\u5076\u6570\uFF0C\u6240\u4EE5\u6211\u4EEC\u65E0\u6CD5\u5C06\u76F4\u5F15\u53F7\u8F6C\u6362\u4E3A\u5F2F\u5F15\u53F7"},"notice-text":{"empty-clipboard":"\u526A\u8D34\u677F\u5185\u5BB9\u4E3A\u7A7A","characters-added":"\u5B57\u7B26\u5DF2\u6DFB\u52A0","characters-removed":"\u5B57\u7B26\u5DF2\u79FB\u9664"},"linter-title":"Linter","empty-search-results-text":"\u6CA1\u6709\u5339\u914D\u7684\u8BBE\u7F6E\u9879","warning-text":"\u8B66\u544A","file-backup-text":"\u8BF7\u786E\u4FDD\u4F60\u5DF2\u5907\u4EFD\u6587\u4EF6",tabs:{names:{general:"\u901A\u7528\u8BBE\u7F6E",custom:"\u81EA\u5B9A\u4E49\u8BBE\u7F6E",yaml:"YAML\u8BBE\u7F6E",heading:"\u6807\u9898\u8BBE\u7F6E",content:"\u811A\u6CE8\u8BBE\u7F6E",footnote:"\u5185\u5BB9\u8BBE\u7F6E",spacing:"\u95F4\u8DDD\u8BBE\u7F6E",paste:"\u7C98\u8D34\u8BBE\u7F6E",debug:"Debug\u8BBE\u7F6E"},"default-search-bar-text":"\u641C\u7D22\u6240\u6709\u8BBE\u7F6E\u9879",general:{"lint-on-save":{name:"\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u6587\u4EF6",description:"\u624B\u52A8\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316(\u5F53\u6309 `Ctrl + S` \u65F6\u6216\u8005\u4F7F\u7528vim\u6A21\u5F0F `:w` \u65F6)"},"display-message":{name:"\u683C\u5F0F\u5316\u540E\u663E\u793A\u6D88\u606F",description:"\u683C\u5F0F\u5316\u540E\u663E\u793A\u4FEE\u6539\u4E86\u591A\u5C11\u5B57\u7B26"},"folders-to-ignore":{name:"\u5FFD\u7565\u6587\u4EF6\u5939",description:"\u5F53\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u6216\u8005\u683C\u5F0F\u5316\u4FDD\u5B58\u65F6\u9700\u8981\u5FFD\u7565\u7684\u6587\u4EF6\uFF0C\u6BCF\u884C\u8F93\u5165\u4E00\u4E2A\u6587\u4EF6\u5939\u8DEF\u5F84"},"override-locale":{name:"\u8986\u76D6\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00",description:"\u5982\u679C\u4F60\u60F3\u4F7F\u7528\u4E0D\u540C\u4E8E\u9ED8\u8BA4\u7684\u5730\u533A\u8BED\u8A00\u9700\u8981\u8BBE\u7F6E\u6B64\u9879"},"same-as-system-locale":"\u548C\u7CFB\u7EDF\u5730\u533A\u8BED\u8A00 ({SYS_LOCALE}) \u4E00\u81F4","yaml-aliases-section-style":{name:"YAML \u522B\u540D\u90E8\u5206\u7684\u6837\u5F0F",description:"YAML aliases \u90E8\u5206\u7684\u6837\u5F0F"},"yaml-tags-section-style":{name:"YAML tags \u90E8\u5206\u7684\u6837\u5F0F",description:"YAML tags \u90E8\u5206\u7684\u6837\u5F0F"},"default-escape-character":{name:"\u9ED8\u8BA4\u8F6C\u4E49\u5B57\u7B26",description:"\u5F53\u5355\u5F15\u53F7\u548C\u53CC\u5F15\u53F7\u4E0D\u5B58\u5728\u65F6\u7528\u4E8E\u8F6C\u4E49 YAML \u503C\u7684\u9ED8\u8BA4\u5B57\u7B26"},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"\u5F53\u4F7F\u7528\u591A\u884C\u6570\u7EC4\u683C\u5F0F\u65F6\u5220\u9664\u4E0D\u5FC5\u8981\u7684\u8F6C\u4E49\u5B57\u7B26",description:"\u591A\u884C YAML \u6570\u7EC4\u7684\u8F6C\u4E49\u5B57\u7B26\u4E0D\u9700\u8981\u4E0E\u5355\u884C\u6570\u7EC4\u76F8\u540C\u7684\u8F6C\u4E49\uFF0C\u56E0\u6B64\u5728\u591A\u884C\u683C\u5F0F\u65F6\uFF0C\u5220\u9664\u4E0D\u5FC5\u8981\u7684\u989D\u5916\u8F6C\u4E49"},"number-of-dollar-signs-to-indicate-math-block":{name:"\u6307\u793A\u6570\u5B66\u5757\u7684 $ \u7B26\u53F7\u6570\u91CF",description:"\u5C06\u6570\u5B66\u5185\u5BB9\u89C6\u4E3A\u6570\u5B66\u5757\u800C\u4E0D\u662F\u5185\u8054\u6570\u5B66\u7684 $ \u7B26\u53F7\u7684\u6570\u91CF"}},debug:{"log-level":{name:"\u65E5\u5FD7\u7EA7\u522B",description:"\u5141\u8BB8\u6253\u5370\u7684\u65E5\u5FD7\u7C7B\u578B\uFF0C\u9ED8\u8BA4\u662F ERROR"},"linter-config":{name:"\u683C\u5F0F\u5316\u8BBE\u7F6E",description:"\u5728\u8BBE\u7F6E\u9875\u9762\u52A0\u8F7D\u65F6\uFF0CLinter \u7684 data.json \u7684\u5185\u5BB9"},"log-collection":{name:"\u5728\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u548C\u683C\u5F0F\u5316\u5F53\u524D\u6587\u6863\u65F6\u6536\u96C6\u65E5\u5FD7",description:"\u5728\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u548C\u683C\u5F0F\u5316\u5F53\u524D\u6587\u6863\u65F6\u6536\u96C6\u65E5\u5FD7\u3002\u8FD9\u4E9B\u65E5\u5FD7\u6709\u52A9\u4E8E\u8C03\u8BD5\u548C\u521B\u5EFA\u9519\u8BEF\u62A5\u544A\u3002"},"linter-logs":{name:"Linter \u65E5\u5FD7",description:"\u5982\u679C\u5F00\u542F\uFF0C\u5219\u6700\u540E\u4E00\u6B21\u683C\u5F0F\u5316\u65F6\u4FDD\u5B58\u6216\u8005\u683C\u5F0F\u5316\u5F53\u524D\u6587\u6863\u65F6\u751F\u6210\u65E5\u5FD7\u65E5\u5FD7"}}},options:{"custom-command":{name:"\u81EA\u5B9A\u4E49\u547D\u4EE4",description:"\u81EA\u5B9A\u4E49\u547D\u4EE4\u662F\u5728 linter \u5B8C\u6210\u8FD0\u884C\u5176\u5E38\u89C4\u89C4\u5219\u540E\u8FD0\u884C\u7684 Obsidian \u547D\u4EE4\u3002\u8FD9\u610F\u5473\u7740\u5B83\u4EEC\u4E0D\u4F1A\u5728 YAML \u65F6\u95F4\u6233\u903B\u8F91\u8FD0\u884C\u4E4B\u524D\u8FD0\u884C\uFF0C\u56E0\u6B64\u5B83\u4EEC\u53EF\u80FD\u4F1A\u5BFC\u81F4\u5728\u4E0B\u6B21\u8FD0\u884C linter \u65F6\u89E6\u53D1 YAML \u65F6\u95F4\u6233\u3002\u60A8\u53EA\u80FD\u9009\u62E9\u4E00\u6B21 Obsidian \u547D\u4EE4\u3002**_\u6CE8\u610F \u8FD9\u76EE\u524D\u4EC5\u9002\u7528\u4E8E\u68C0\u67E5\u5F53\u524D\u6587\u4EF6._**",warning:"\u9009\u62E9\u9009\u9879\u65F6\uFF0C\u8BF7\u786E\u4FDD\u4F7F\u7528\u9F20\u6807\u6216\u6309\u56DE\u8F66\u952E\u9009\u62E9\u8BE5\u9009\u9879\u3002\u5176\u4ED6\u9009\u62E9\u65B9\u6CD5\u53EF\u80FD\u4E0D\u8D77\u4F5C\u7528\uFF0C\u53EA\u4F1A\u4FDD\u5B58\u5B9E\u9645 Obsidian \u547D\u4EE4\u6216\u7A7A\u5B57\u7B26\u4E32\u7684\u9009\u62E9\u3002","add-input-button-text":"\u6DFB\u52A0\u65B0\u547D\u4EE4","command-search-placeholder-text":"Obsidian \u547D\u4EE4","move-up-tooltip":"\u4E0A\u79FB","move-down-tooltip":"\u4E0B\u79FB","delete-tooltip":"\u5220\u9664"},"custom-replace":{name:"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u66FF\u6362",description:"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u66FF\u6362\u53EF\u7528\u4E8E\u5C06\u67E5\u627E\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\u7684\u4EFB\u4F55\u5185\u5BB9\u66FF\u6362\u4E3A\u66FF\u6362\u503C\u3002\u66FF\u6362\u548C\u67E5\u627E\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684\u6B63\u5219\u8868\u8FBE\u5F0F\u503C",warning:"\u5982\u679C\u60A8\u4E0D\u77E5\u9053\u6B63\u5219\u8868\u8FBE\u5F0F\uFF0C\u8BF7\u8C28\u614E\u4F7F\u7528\u5B83\u3002\u53E6\u5916\uFF0C\u8BF7\u786E\u4FDD\u60A8\u4E0D\u8981\u5728iOS\u79FB\u52A8\u8BBE\u5907\u4E0A\u7684\u6B63\u5219\u8868\u8FBE\u5F0F\u4E2D\u4F7F\u7528\u56DE\u6EAF\uFF0C\u56E0\u4E3A\u8FD9\u4F1A\u5BFC\u81F4\u683C\u5F0F\u5316\u5931\u8D25\uFF0C\u56E0\u4E3A\u8BE5\u5E73\u53F0\u4E0D\u652F\u6301","add-input-button-text":"\u6DFB\u52A0\u65B0\u7684\u6B63\u5219\u66FF\u6362","regex-to-find-placeholder-text":"\u6B63\u5219\u67E5\u627E","flags-placeholder-text":"flags","regex-to-replace-placeholder-text":"\u6B63\u5219\u66FF\u6362","move-up-tooltip":"\u4E0A\u79FB","move-down-tooltip":"\u4E0B\u79FB","delete-tooltip":"\u5220\u9664"}},rules:{"auto-correct-common-misspellings":{name:"\u81EA\u52A8\u66F4\u6B63\u5E38\u89C1\u7684\u62FC\u5199\u9519\u8BEF",description:"\u4F7F\u7528\u5E38\u89C1\u62FC\u5199\u9519\u8BEF\u7684\u5B57\u5178\u81EA\u52A8\u5C06\u5B83\u4EEC\u8F6C\u6362\u4E3A\u6B63\u786E\u7684\u62FC\u5199\u3002\u6709\u5173\u81EA\u52A8\u66F4\u6B63\u5355\u8BCD\u7684\u5B8C\u6574\u5217\u8868\uFF0C\u8BF7\u53C2\u9605 [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts)","ignore-words":{name:"\u5FFD\u7565\u5355\u8BCD",description:"\u4EE5\u9017\u53F7\u5206\u9694\u7684\u5C0F\u5199\u5355\u8BCD\u5217\u8868\uFF0C\u5728\u81EA\u52A8\u66F4\u6B63\u65F6\u4F1A\u5FFD\u7565"}},"add-blockquote-indentation-on-paste":{name:"\u7C98\u8D34\u65F6\u6DFB\u52A0\u5757\u5F15\u7528(blockquote)\u7F29\u8FDB",description:"\u5728\u7C98\u8D34\u8FC7\u7A0B\u4E2D\u5149\u6807\u4F4D\u4E8E\u5757\u5F15\u7528/\u6807\u6CE8\u884C\u4E2D\u65F6\uFF0C\u5C06\u5757\u5F15\u7528\u6DFB\u52A0\u5230\u9664\u7B2C\u4E00\u884C\u4EE5\u5916\u7684\u6240\u6709\u884C"},"blockquote-style":{name:"\u5757\u5F15\u7528\u6837\u5F0F",description:"\u786E\u4FDD\u5757\u5F15\u7528\u6837\u5F0F\u4E00\u81F4\u3002",style:{name:"\u98CE\u683C",description:"\u5757\u5F15\u7528\u6307\u793A\u5668\u4E0A\u4F7F\u7528\u7684\u6837\u5F0F"}},"capitalize-headings":{name:"\u5927\u5199\u6807\u9898(Headdings)",description:"\u6807\u9898\u4F1A\u5728\u683C\u5F0F\u5316\u540E\u5927\u5199",style:{name:"\u6837\u5F0F",description:"\u5927\u5199\u7684\u65B9\u5F0F"},"ignore-case-words":{name:"\u5FFD\u7565\u5927\u5C0F\u5199\u7684\u5355\u8BCD",description:"\u4EC5\u5C06\u6807\u9898\u5927\u5C0F\u5199\u6837\u5F0F\u5E94\u7528\u4E8E\u5168\u90E8\u5C0F\u5199\u7684\u5355\u8BCD"},"ignore-words":{name:"\u5FFD\u7565\u5355\u8BCD",description:"\u5927\u5199\u65F6\u8981\u5FFD\u7565\u7684\u4EE5\u9017\u53F7\u5206\u9694\u7684\u5355\u8BCD\u5217\u8868"},"lowercase-words":{name:"\u5C0F\u5199\u7684\u5355\u8BCD",description:"\u4FDD\u6301\u5C0F\u5199\u4EE5\u9017\u53F7\u5206\u9694\u7684\u5355\u8BCD\u5217\u8868"}},"compact-yaml":{name:"\u7CBE\u7B80YAML",description:"\u79FB\u9664YAML\u524D\u540E\u7684\u7A7A\u884C","inner-new-lines":{name:"\u5185\u90E8\u65B0\u884C",description:"\u5220\u9664\u4E0D\u5728 YAML \u5F00\u5934\u6216\u7ED3\u5C3E\u7684\u65B0\u884C"}},"consecutive-blank-lines":{name:"\u8FDE\u7EED\u7A7A\u767D\u884C",description:"\u6700\u591A\u5E94\u8BE5\u6709\u4E00\u4E2A\u8FDE\u7EED\u7684\u7A7A\u884C"},"convert-bullet-list-markers":{name:"\u8F6C\u6362\u5B50\u5F39\u5217\u8868\u6807\u8BB0",description:"\u5C06\u5E38\u7528 bullet list \u5217\u8868\u6807\u8BB0\u8F6C\u6362\u4E3A Markdown \u5217\u8868\u6807\u8BB0"},"convert-spaces-to-tabs":{name:"\u8F6C\u6362\u7A7A\u683C\u4E3A\u5236\u8868\u7B26",description:"\u5C06\u884C\u9996\u7A7A\u683C\u8F6C\u6362\u4E3A\u5236\u8868\u7B26",tabsize:{name:"\u5236\u8868\u7B26\u5BBD\u5EA6",description:"\u5BF9\u5E94\u7684\u7A7A\u683C\u6570\u91CF\u8F6C\u53D8\u4E3A\u5236\u8868\u7B26"}},"emphasis-style":{name:"\u5F3A\u8C03\u98CE\u683C",description:"\u7528\u4E8E\u786E\u4FDD\u5F3A\u8C03\u7684\u98CE\u683C\u4E00\u81F4",style:{name:"\u98CE\u683C",description:"\u7528\u4E8E\u8868\u793A\u5F3A\u8C03\u5185\u5BB9\u7684\u98CE\u683C"}},"empty-line-around-blockquotes":{name:"\u5F15\u7528\u5757 Blockquotes \u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u5F15\u7528\u5757 Blockquote\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u548C\u7ED3\u5C3E\u3002**\u6CE8\u610F\uFF0C\u8FD9\u91CC\u5D4C\u5957\u5757\u5F15\u7528\u4E5F\u4F1A\u6709\u5BF9\u5E94\u7684\u7A7A\u884C**"},"empty-line-around-code-fences":{name:"\u4EE3\u7801\u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u4EE3\u7801\u5757\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E"},"empty-line-around-math-blocks":{name:"\u6570\u5B66\u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u6570\u5B66\u5757\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u4F7F\u7528\u201C\u8868\u793A\u6570\u5B66\u5757\u7684\u7F8E\u5143\u7B26\u53F7\u6570\u201D\u6765\u786E\u5B9A\u5355\u884C\u6570\u5B66\u7684\u6570\u5B66\u5757\u7684\u7F8E\u5143\u7B26\u53F7\u6570\u3002"},"empty-line-around-tables":{name:"\u8868\u683C\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD github \u98CE\u683C\u7684\u8868\u683C\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u59CB\u6216\u7ED3\u5C3E"},"escape-yaml-special-characters":{name:"\u8F6C\u4E49YAML\u7279\u6B8A\u5B57\u7B26",description:`\u8F6C\u4E49YAML\u4E2D\u7684\u5192\u53F7\uFF08: \uFF09\uFF0C\u5355\u5F15\u53F7\uFF08'\uFF09\u548C\u53CC\u5F15\u53F7\uFF08"\uFF09\u3002`,"try-to-escape-single-line-arrays":{name:"\u5C1D\u8BD5\u8F6C\u4E49\u5355\u884C\u6570\u7EC4",description:"\u5C1D\u8BD5\u8F6C\u4E49\u6570\u7EC4\u503C\uFF0C\u5047\u8BBE\u4E00\u4E2A\u6570\u7EC4\u4EE5\u201C[\u201D\u5F00\u5934\uFF0C\u201C]\u201D\u7ED3\u5C3E\uFF0C\u5E76\u4E14\u5177\u6709\u7531\u201C\uFF0C\u201D\u5206\u9694\u7684\u9879\u3002"}},"file-name-heading":{name:"\u6587\u4EF6\u540D\u4F5C\u4E3A\u6807\u9898",description:"\u5982\u679C\u6CA1\u6709H1\u6807\u9898\uFF0C\u5219\u63D2\u5165\u6587\u4EF6\u540D\u4F5C\u4E3AH1\u6807\u9898\u3002"},"footnote-after-punctuation":{name:"\u6807\u70B9\u7B26\u53F7\u540E\u811A\u6CE8",description:"\u786E\u4FDD\u811A\u6CE8\u5F15\u7528\u7F6E\u4E8E\u6807\u70B9\u7B26\u53F7\u4E4B\u540E\uFF0C\u800C\u4E0D\u662F\u4E4B\u524D\u3002"},"force-yaml-escape":{name:"\u5F3A\u5236YAML\u8F6C\u4E49",description:"\u8F6C\u4E49\u6307\u5B9AYAML\u952E\u7684\u503C\u3002","force-yaml-escape-keys":{name:"\u5F3A\u5236\u5BF9YAML\u952E\u8FDB\u884C\u8F6C\u4E49",description:"\u5982\u679C\u672A\u8F6C\u4E49\uFF0C\u5219\u4F7F\u7528YAML\u8F6C\u4E49\u5B57\u7B26\u5BF9\u7531\u6362\u884C\u7B26\u5206\u9694\u7684\u6307\u5B9AYAML\u952E\u8FDB\u884C\u8F6C\u4E49\u3002 \u4E0D\u8981\u5728YAML\u6570\u7EC4\u4E0A\u4F7F\u7528\u5B83\u3002"}},"format-tags-in-yaml":{name:"\u683C\u5F0F\u5316YAML\u4E2D\u7684\u6807\u7B7E",description:"\u4ECEYAML\u524D\u7F6E\u8BED\u8A00\u4E2D\u7684\u6807\u7B7E\u4E2D\u53BB\u9664\u4E95\u53F7\uFF0C\u56E0\u4E3A\u5B83\u4EEC\u4F1A\u4F7F\u6807\u7B7E\u65E0\u6548\u3002"},"format-yaml-array":{name:"\u683C\u5F0F\u5316YAML\u6570\u7EC4",description:"\u5141\u8BB8\u5C06\u5E38\u89C4YAML\u6570\u7EC4\u683C\u5F0F\u5316\u4E3A\u591A\u884C\u6216\u5355\u884C\uFF0C\u5E76\u5141\u8BB8\u6709\u4E9BObsidian\u7279\u5B9A\u7684YAML\u683C\u5F0F\u53EF\u4EE5\u7528\u4F5C\u201Ctags\u201D\u548C\u201Caliases\u201D\u3002\u8BF7\u6CE8\u610F\uFF0C\u5355\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u5355\u884C\uFF0C\u5982\u679C\u5B58\u5728\u591A\u4E2A\u6761\u76EE\uFF0C\u5219\u4F1A\u53D8\u4E3A\u5355\u884C\u6570\u7EC4\u3002\u5BF9\u4E8E\u5355\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u591A\u884C\uFF0C\u60C5\u51B5\u4E5F\u662F\u5982\u6B64\uFF0C\u53EA\u662F\u5B83\u53D8\u6210\u4E86\u591A\u884C\u6570\u7EC4\u3002","alias-key":{name:"\u683C\u5F0F\u5316yaml\u522B\u540D\u90E8\u5206",description:"\u6253\u5F00\u4E86YAML\u522B\u540D\u90E8\u5206\u7684\u683C\u5F0F\u8BBE\u7F6E\u3002\u4E0D\u5E94\u4E0E\u89C4\u5219`YAML Title Alias`\u540C\u65F6\u542F\u7528\uFF0C\u56E0\u4E3A\u5B83\u4EEC\u53EF\u80FD\u4E0D\u4F1A\u5F88\u597D\u5730\u534F\u540C\u5DE5\u4F5C\uFF0C\u6216\u8005\u5B83\u4EEC\u53EF\u80FD\u6709\u4E0D\u540C\u7684\u683C\u5F0F\u6837\u5F0F\u9009\u62E9\uFF0C\u4ECE\u800C\u5BFC\u81F4\u610F\u5916\u7ED3\u679C\u3002"},"tag-key":{name:"\u683C\u5F0F\u5316yaml\u6807\u7B7E\u90E8\u5206",description:"\u6253\u5F00YAML\u6807\u7B7E\u90E8\u5206\u7684\u683C\u5F0F\u8BBE\u7F6E\u3002"},"default-array-style":{name:"\u9ED8\u8BA4\u7684yaml\u6570\u7EC4\u90E8\u5206\u683C\u5F0F",description:"\u9664\u4E86\u6807\u7B7E\uFF0C\u522B\u540D\u6216\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u5355\u884C\u6570\u7EC4\u548C\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u591A\u884C\u6570\u7EC4\u4E4B\u5916\uFF0C\u5176\u4ED6\u4E3A\u5E38\u89C4 yaml \u6570\u7EC4\u7684\u6837\u5F0F\u3002"},"default-array-keys":{name:"\u683C\u5F0F\u5316\u5E38\u89C4yaml\u6570\u7EC4\u90E8\u5206",description:"\u5BF9\u5E38\u89C4YAML\u6570\u7EC4\u6253\u5F00\u683C\u5F0F\u8BBE\u7F6E"},"force-single-line-array-style":{name:"\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u5355\u884C\u6570\u7EC4",description:"\u5F3A\u5236\u5C06\u65B0\u884C\u5206\u9694\u7684\u952E\u7684YAML\u6570\u7EC4\u683C\u5F0F\u4E3A\u5355\u884C\u683C\u5F0F\uFF08\u7559\u7A7A\u4EE5\u7981\u7528\u6B64\u9009\u9879\uFF09"},"force-multi-line-array-style":{name:"\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u591A\u884C\u6570\u7EC4",description:"\u5F3A\u5236\u5C06\u65B0\u884C\u5206\u9694\u7684\u952E\u7684YAML\u6570\u7EC4\u683C\u5F0F\u4E3A\u591A\u884C\u683C\u5F0F\uFF08\u7559\u7A7A\u4EE5\u7981\u7528\u6B64\u9009\u9879\uFF09"}},"header-increment":{name:"\u6807\u9898\u7EA7\u522B\u9012\u589E",description:"\u6807\u9898\u7EA7\u522B\u5E94\u4EC5\u4E00\u6B21\u9012\u589E\u4E00\u4E2A\u7EA7\u522B","start-at-h2":{name:"\u4ECE\u7B2C\u4E8C\u7EA7\u6807\u9898\u5F00\u59CB\u9012\u589E",description:"\u4F7F\u7B2C\u4E8C\u7EA7\u6807\u9898\u6210\u4E3A\u6587\u4EF6\u4E2D\u7684\u6700\u5C0F\u6807\u9898\u7EA7\u522B\uFF0C\u4ECE\u800C\u53EF\u76F8\u5E94\u5730\u8C03\u6574\u6240\u6709\u6807\u9898\uFF0C\u4EE5\u4FBF\u5B83\u4EEC\u4ECE\u7B2C\u4E8C\u7EA7\u6807\u9898\u5F00\u59CB\u9012\u589E\u3002"}},"heading-blank-lines":{name:"\u6807\u9898\u7A7A\u884C",description:"\u6240\u6709\u6807\u9898\u524D\u540E\u5747\u6709\u4E00\u4E2A\u7A7A\u884C\uFF08\u9664\u975E\u6807\u9898\u4F4D\u4E8E\u6587\u6863\u5F00\u5934\u6216\u7ED3\u5C3E\u5904\uFF09\u3002",bottom:{name:"\u5E95\u90E8",description:"\u5728\u6807\u9898\u540E\u63D2\u5165\u4E00\u4E2A\u7A7A\u884C"},"empty-line-after-yaml":{name:"Yaml \u4E0E\u6807\u9898\u4E4B\u95F4\u7684\u7A7A\u884C",description:"\u4FDD\u7559 Yaml \u524D\u7F6E\u5185\u5BB9\u4E0E\u6807\u9898\u4E4B\u95F4\u7684\u7A7A\u884C"}},"headings-start-line":{name:"\u6807\u9898\u8D77\u59CB\u884C",description:"\u4E0D\u4EE5\u65B0\u884C\u5F00\u59CB\u7684\u6807\u9898\u4F1A\u5C06\u5176\u524D\u9762\u7684\u7A7A\u767D\u5220\u9664\uFF0C\u4EE5\u786E\u4FDD\u5B83\u4EEC\u80FD\u88AB\u8BC6\u522B\u4E3A\u6807\u9898\u3002"},"insert-yaml-attributes":{name:"\u63D2\u5165 YAML \u5C5E\u6027",description:"\u5C06\u7ED9\u5B9A\u7684 YAML \u5C5E\u6027\u63D2\u5165\u5230 YAML \u524D\u7F6E\u5185\u5BB9\u4E2D\u3002\u6BCF\u4E2A\u5C5E\u6027\u5360\u4E00\u884C\u3002","text-to-insert":{name:"\u8981\u63D2\u5165\u7684\u6587\u672C",description:"\u8981\u63D2\u5165\u5230 YAML \u524D\u7F6E\u5185\u5BB9\u4E2D\u7684\u6587\u672C"}},"line-break-at-document-end":{name:"\u6587\u4EF6\u7ED3\u5C3E\u6362\u884C",description:"\u786E\u4FDD\u6587\u6863\u7ED3\u5C3E\u6070\u597D\u6709\u4E00\u884C\u7A7A\u884C\u3002"},"move-footnotes-to-the-bottom":{name:"\u79FB\u52A8\u811A\u6CE8\u81F3\u5E95\u90E8",description:"\u79FB\u52A8\u6240\u6709\u811A\u6CE8\u81F3\u6587\u6863\u5E95\u90E8"},"move-math-block-indicators-to-their-own-line":{name:"\u5C06\u6570\u5B66\u5757\u6307\u793A\u7B26\u79FB\u5230\u81EA\u5DF1\u7684\u884C\u4E0A",description:"\u4F7F\u7528\u201C\u6307\u793A\u6570\u5B66\u5757\u6240\u9700\u7F8E\u5143\u7B26\u53F7\u6570\u201D\u6765\u786E\u5B9A\u7528\u591A\u5C11\u4E2A\u7F8E\u5143\u7B26\u53F7\u8868\u793A\u5355\u884C\u6570\u5B66\u5F0F\uFF0C\u5C06\u6240\u6709\u8D77\u59CB\u548C\u7ED3\u675F\u6570\u5B66\u5757\u6307\u793A\u7B26\u79FB\u5230\u5B83\u4EEC\u81EA\u5DF1\u7684\u884C\u4E0A\u3002"},"move-tags-to-yaml":{name:"\u5C06\u6807\u7B7E\u79FB\u81F3 Yaml",description:"\u79FB\u52A8\u6240\u6709\u6807\u7B7E\u81F3 Yaml frontmatter","how-to-handle-existing-tags":{name:"\u5982\u4F55\u5904\u7406\u73B0\u6709\u7684\u6807\u7B7E",description:"\u4E00\u65E6\u79FB\u52A8\u5230\u4E86\u524D\u7F6E\u5143\u6570\u636E\uFF0C\u5BF9\u4E8E\u6587\u4EF6\u6B63\u6587\u4E2D\u7684\u975E\u88AB\u5FFD\u7565\u6807\u7B7E\uFF0C\u5E94\u8BE5\u91C7\u53D6\u4F55\u79CD\u64CD\u4F5C\uFF1F"},"tags-to-ignore":{name:"\u5FFD\u7565\u7684\u6807\u7B7E",description:"\u8FD9\u4E9B\u6807\u7B7E\u4E0D\u4F1A\u88AB\u79FB\u52A8\u5230\u6807\u7B7E\u6570\u7EC4\u4E2D\uFF0C\u4E5F\u4E0D\u4F1A\u5728\u201C\u4ECE\u6B63\u6587\u5185\u5BB9\u4E2D\u79FB\u9664\u6807\u7B7E\u4E2D\u7684\u4E95\u53F7\u201D\u542F\u7528\u65F6\u4ECE\u6B63\u6587\u5185\u5BB9\u4E2D\u79FB\u9664\u3002\u6BCF\u4E2A\u6807\u7B7E\u5E94\u8BE5\u5355\u72EC\u653E\u5728\u4E00\u884C\u4E0A\uFF0C\u4E0D\u8981\u5305\u542B\u201C#\u201D\u3002\u8BF7\u786E\u4FDD\u6807\u7B7E\u540D\u79F0\u4E2D\u4E0D\u8981\u5305\u542B\u4E95\u53F7\u3002"}},"no-bare-urls":{name:"\u7981\u6B62\u88F8\u9732URL",description:"\u9664\u975E\u88AB\u53CD\u5F15\u53F7\u3001\u65B9\u62EC\u53F7\u6216\u5355\u5F15\u53F7/\u53CC\u5F15\u53F7\u5305\u62EC\uFF0C\u5426\u5219\u5E94\u5C06\u88F8\u9732\u7684URL\u7528\u5C16\u62EC\u53F7\u5305\u56F4\u3002"},"ordered-list-style":{name:"\u6709\u5E8F\u5217\u8868\u6837\u5F0F",description:"\u786E\u4FDD\u6709\u5E8F\u5217\u8868\u9075\u5FAA\u6307\u5B9A\u7684\u6837\u5F0F\u3002\u8BF7\u6CE8\u610F\uFF0C2\u4E2A\u7A7A\u683C\u62161\u4E2A\u5236\u8868\u7B26\u88AB\u89C6\u4E3A\u7F29\u8FDB\u7EA7\u522B\u3002","number-style":{name:"\u5E8F\u53F7\u6837\u5F0F",description:"\u6709\u5E8F\u5217\u8868\u6307\u793A\u5668\u4E2D\u4F7F\u7528\u7684\u5E8F\u53F7\u6837\u5F0F"},"list-end-style":{name:"\u6709\u5E8F\u5217\u8868\u6307\u793A\u5668\u7ED3\u675F\u6837\u5F0F",description:"\u6709\u5E8F\u5217\u8868\u6307\u793A\u5668\u7684\u7ED3\u675F\u5B57\u7B26"}},"paragraph-blank-lines":{name:"\u6BB5\u843D\u7A7A\u767D\u884C",description:"\u6BCF\u4E2A\u6BB5\u843D\u524D\u540E\u5E94\u8BE5\u6709\u4E14\u4EC5\u6709\u4E00\u884C\u7A7A\u767D\u884C\u3002"},"prevent-double-checklist-indicator-on-paste":{name:"\u9632\u6B62\u590D\u5236\u65F6\u51FA\u73B0\u91CD\u590D\u7684\u6838\u5BF9\u5217\u8868\u6307\u793A\u7B26",description:"\u5982\u679C\u6587\u4EF6\u4E2D\u5149\u6807\u6240\u5728\u884C\u6709\u6838\u5BF9\u5217\u8868\u6307\u793A\u7B26\uFF0C\u5219\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u8D77\u59CB\u7684\u6838\u5BF9\u5217\u8868\u6307\u793A\u7B26\u3002"},"prevent-double-list-item-indicator-on-paste":{name:"\u9632\u6B62\u590D\u5236\u65F6\u51FA\u73B0\u91CD\u590D\u7684\u5217\u8868\u9879\u6307\u793A\u7B26",description:"\u5982\u679C\u6587\u4EF6\u4E2D\u5149\u6807\u6240\u5728\u884C\u6709\u5217\u8868\u9879\u6307\u793A\u7B26\uFF0C\u5219\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u8D77\u59CB\u7684\u5217\u8868\u6307\u793A\u7B26\u3002"},"proper-ellipsis-on-paste":{name:"\u6B63\u786E\u7684\u7701\u7565\u53F7",description:"\u5373\u4F7F\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u5B83\u4EEC\u4E4B\u95F4\u6709\u7A7A\u683C\uFF0C\u4E5F\u7528\u7701\u7565\u53F7\u66FF\u6362\u4E09\u4E2A\u8FDE\u7EED\u7684\u70B9\u3002"},"proper-ellipsis":{name:"\u6B63\u786E\u7684\u7701\u7565\u53F7",description:"\u7528\u7701\u7565\u53F7\u66FF\u6362\u4E09\u4E2A\u8FDE\u7EED\u7684\u70B9\u3002"},"quote-style":{name:"\u62A5\u4EF7\u98CE\u683C",description:"\u66F4\u65B0\u6B63\u6587\u5185\u5BB9\u4E2D\u7684\u5F15\u53F7\u4EE5\u66F4\u65B0\u4E3A\u6307\u5B9A\u7684\u5355\u5F15\u53F7\u548C\u53CC\u5F15\u53F7\u6837\u5F0F\u3002","single-quote-enabled":{name:"\u542F\u7528`\u5355\u5F15\u53F7\u6837\u5F0F`",description:"\u6307\u5B9A\u5E94\u4F7F\u7528\u9009\u5B9A\u7684\u5355\u5F15\u53F7\u6837\u5F0F\u3002"},"single-quote-style":{name:"\u5355\u5F15\u53F7\u6837\u5F0F",description:"\u8981\u4F7F\u7528\u7684\u5355\u5F15\u53F7\u6837\u5F0F\u3002"},"double-quote-enabled":{name:"\u542F\u7528`\u53CC\u5F15\u53F7\u6837\u5F0F`",description:"\u6307\u5B9A\u5E94\u4F7F\u7528\u9009\u5B9A\u7684\u53CC\u5F15\u53F7\u6837\u5F0F\u3002"},"double-quote-style":{name:"\u53CC\u5F15\u53F7\u6837\u5F0F",description:"\u8981\u4F7F\u7528\u7684\u53CC\u5F15\u53F7\u6837\u5F0F\u3002"}},"re-index-footnotes":{name:"\u91CD\u65B0\u7D22\u5F15\u811A\u6CE8",description:"\u57FA\u4E8E\u51FA\u73B0\u7684\u987A\u5E8F\u91CD\u65B0\u7D22\u5F15\u811A\u6CE8\u952E\u548C\u811A\u6CE8\uFF08\u6CE8\u610F\uFF1A\u5982\u679C\u4E00\u4E2A\u952E\u6709\u591A\u4E2A\u811A\u6CE8\uFF0C\u5219\u6B64\u89C4\u5219\u4E0D\u9002\u7528\u3002\uFF09"},"remove-consecutive-list-markers":{name:"\u79FB\u9664\u8FDE\u7EED\u7684\u5217\u8868\u6807\u8BB0",description:"\u79FB\u9664\u8FDE\u7EED\u7684\u5217\u8868\u6807\u8BB0\u3002\u590D\u5236\u7C98\u8D34\u5217\u8868\u9879\u65F6\u5F88\u6709\u7528\u3002"},"remove-empty-lines-between-list-markers-and-checklists":{name:"\u79FB\u9664\u5217\u8868\u6807\u8BB0\u548C\u6838\u5BF9\u5217\u8868\u9879\u4E4B\u95F4\u7684\u7A7A\u884C",description:"\u5217\u8868\u6807\u8BB0\u548C\u6838\u5BF9\u5217\u8868\u9879\u4E4B\u95F4\u4E0D\u5E94\u6709\u7A7A\u884C\u3002"},"remove-empty-list-markers":{name:"\u79FB\u9664\u7A7A\u7684\u5217\u8868\u6807\u8BB0",description:"\u79FB\u9664\u7A7A\u7684\u5217\u8868\u6807\u8BB0\uFF0C\u6BD4\u5982\u5217\u8868\u540E\u6CA1\u5185\u5BB9\u3002"},"remove-hyphenated-line-breaks":{name:"\u79FB\u9664\u4E2D\u5212\u7EBF\u6362\u884C\u7B26",description:"\u79FB\u9664\u4E2D\u5212\u7EBF\u6362\u884C\u7B26\u3002\u4ECE\u6559\u79D1\u4E66\u4E2D\u7C98\u8D34\u6587\u672C\u65F6\u5F88\u6709\u7528\u3002"},"remove-hyphens-on-paste":{name:"\u79FB\u9664\u8FDE\u5B57\u7B26",description:"\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u8FDE\u5B57\u7B26\u3002"},"remove-leading-or-trailing-whitespace-on-paste":{name:"\u79FB\u9664\u7C98\u8D34\u65F6\u7684\u524D\u5BFC\u6216\u5C3E\u968F\u7A7A\u683C",description:"\u79FB\u9664\u8981\u7C98\u8D34\u7684\u6587\u672C\u7684\u4EFB\u4F55\u524D\u5BFC\u975E\u5236\u8868\u7B26\u7A7A\u683C\u548C\u6240\u6709\u5C3E\u968F\u7A7A\u683C\u3002"},"remove-leftover-footnotes-from-quote-on-paste":{name:"\u79FB\u9664\u5F15\u7528\u4E2D\u7684\u5269\u4F59\u811A\u6CE8",description:"\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u4EFB\u4F55\u5269\u4F59\u7684\u811A\u6CE8\u5F15\u7528\u3002"},"remove-link-spacing":{name:"\u79FB\u9664\u94FE\u63A5\u95F4\u8DDD",description:"\u79FB\u9664\u94FE\u63A5\u6587\u672C\u5468\u56F4\u7684\u95F4\u8DDD\u3002"},"remove-multiple-blank-lines-on-paste":{name:"\u79FB\u9664\u7C98\u8D34\u65F6\u7684\u591A\u4E2A\u7A7A\u767D\u884C",description:"\u5C06\u591A\u4E2A\u7A7A\u767D\u884C\u538B\u7F29\u4E3A\u4E00\u4E2A\u7A7A\u767D\u884C\u4EE5\u7C98\u8D34\u6587\u672C\u3002"},"remove-multiple-spaces":{name:"\u79FB\u9664\u591A\u4E2A\u7A7A\u683C",description:"\u79FB\u9664\u4E24\u4E2A\u6216\u66F4\u591A\u8FDE\u7EED\u7684\u7A7A\u683C\u3002\u5FFD\u7565\u884C\u9996\u548C\u884C\u5C3E\u7684\u7A7A\u683C\u3002"},"remove-space-around-characters":{name:"\u53BB\u9664\u5B57\u7B26\u5468\u56F4\u7684\u7A7A\u683C",description:"\u786E\u4FDD\u67D0\u4E9B\u5B57\u7B26\u5468\u56F4\u6CA1\u6709\u7A7A\u683C\uFF08\u5305\u62EC\u5355\u4E2A\u7A7A\u683C\u6216\u5236\u8868\u7B26\uFF09\u3002\u8BF7\u6CE8\u610F\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\u5F71\u54CDmarkdown\u683C\u5F0F\u3002","include-fullwidth-forms":{name:"\u5305\u62EC\u5168\u89D2\u5F62\u5F0F",description:'\u5305\u62EC\u5168\u89D2\u5F62\u5F0FUnicode\u5757'},"include-cjk-symbols-and-punctuation":{name:"\u5305\u62ECCJK\u7B26\u53F7\u548C\u6807\u70B9",description:'\u5305\u62ECCJK\u7B26\u53F7\u548C\u6807\u70B9Unicode\u5757'},"include-dashes":{name:"\u5305\u62EC\u7834\u6298\u53F7",description:"\u5305\u62ECen dash (\u2013)\u548Cem dash (\u2014)"},"other-symbols":{name:"\u5176\u4ED6\u7B26\u53F7",description:"\u8981\u5305\u62EC\u7684\u5176\u4ED6\u7B26\u53F7"}},"remove-space-before-or-after-characters":{name:"\u5220\u9664\u5B57\u7B26\u524D\u540E\u7684\u7A7A\u683C",description:"\u5220\u9664\u6307\u5B9A\u5B57\u7B26\u4E4B\u524D\u548C\u6307\u5B9A\u5B57\u7B26\u4E4B\u540E\u7684\u7A7A\u683C\u3002 \u8BF7\u6CE8\u610F\uFF0C\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5BFC\u81F4\u964D\u4EF7\u683C\u5F0F\u51FA\u73B0\u95EE\u9898\u3002","characters-to-remove-space-before":{name:"\u5220\u9664\u5B57\u7B26\u524D\u7684\u7A7A\u683C",description:"\u5220\u9664\u6307\u5B9A\u5B57\u7B26\u524D\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF1A\u5728\u5B57\u7B26\u5217\u8868\u4E2D\u4F7F\u7528`{`\u6216`}`\u4F1A\u610F\u5916\u5F71\u54CD\u6587\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5728\u5E55\u540E\u7684\u5FFD\u7565\u8BED\u6CD5\u4E2D\u4F7F\u7528\u3002**"},"characters-to-remove-space-after":{name:"\u5220\u9664\u5B57\u7B26\u540E\u7684\u7A7A\u683C",description:"\u5220\u9664\u6307\u5B9A\u5B57\u7B26\u540E\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF1A\u5728\u5B57\u7B26\u5217\u8868\u4E2D\u4F7F\u7528`{`\u6216`}`\u4F1A\u610F\u5916\u5F71\u54CD\u6587\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5728\u5E55\u540E\u7684\u5FFD\u7565\u8BED\u6CD5\u4E2D\u4F7F\u7528\u3002**"}},"remove-trailing-punctuation-in-heading":{name:"\u79FB\u9664\u6807\u9898\u4E2D\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7",description:"\u4ECE\u6807\u9898\u7684\u672B\u5C3E\u5220\u9664\u6307\u5B9A\u7684\u6807\u70B9\u7B26\u53F7\uFF0C\u786E\u4FDD\u5FFD\u7565HTML\u5B9E\u4F53\u5F15\u7528\u672B\u5C3E\u7684\u5206\u53F7\u3002","punctuation-to-remove":{name:"\u8981\u5220\u9664\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7",description:"\u8981\u4ECE\u6587\u4EF6\u6807\u9898\u4E2D\u5220\u9664\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7\u3002"}},"remove-yaml-keys":{name:"\u79FB\u9664 YAML \u952E",description:"\u79FB\u9664\u7279\u5B9A\u7684 YAML \u952E","yaml-keys-to-remove":{name:"\u9700\u8981\u79FB\u9664\u7684 YAML \u952E",description:"\u4ECE\u5E26\u6216\u4E0D\u5E26\u5192\u53F7\u7684 yaml frontmatter \u4E2D\u5220\u9664\u7684 YAML \u952E"}},"space-after-list-markers":{name:"\u5217\u8868\u6807\u8BB0\u540E\u7A7A\u683C",description:"\u5217\u8868\u6807\u8BB0\u548C\u590D\u9009\u6846\u540E\u5E94\u6709\u4E00\u4E2A\u7A7A\u683C"},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"\u4E2D\u6587\u65E5\u8BED\u6216\u97E9\u8BED\u4E0E\u82F1\u8BED\u6216\u6570\u5B57\u4E4B\u95F4\u7684\u7A7A\u683C",description:"\u786E\u4FDD\u4E2D\u6587\u3001\u65E5\u6587\u6216\u97E9\u6587\u548C\u82F1\u6587\u6216\u6570\u5B57\u7531\u5355\u4E2A\u7A7A\u683C\u5206\u9694. [\u53C2\u8003\u94FE\u63A5](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"\u52A0\u7C97\u98CE\u683C",description:"\u786E\u4FDD\u52A0\u7C97\u98CE\u683C\u4E00\u81F4",style:{name:"\u98CE\u683C",description:"\u7528\u4E8E\u8868\u793A\u52A0\u7C97\u7684\u98CE\u683C"}},"trailing-spaces":{name:"\u672B\u5C3E\u7A7A\u683C",description:"\u79FB\u9664\u6BCF\u884C\u672B\u5C3E\u591A\u4F59\u7684\u7A7A\u683C","twp-space-line-break":{name:"\u4E24\u4E2A\u7A7A\u683C\u7684\u6362\u884C",description:'\u5FFD\u7565\u4E24\u4E2A\u7A7A\u683C\u540E\u63A5\u6362\u884C\u7B26\u7684\u60C5\u51B5\uFF08"\u4E24\u4E2A\u7A7A\u683C\u89C4\u5219"\uFF09\u3002'}},"two-spaces-between-lines-with-content":{name:"\u5185\u5BB9\u95F4\u9694\u4E24\u4E2A\u7A7A\u683C",description:"\u786E\u4FDD\u5728\u6BB5\u843D\u3001\u5F15\u7528\u548C\u5217\u8868\u9879\u4E2D\uFF0C\u88AB\u5EF6\u7EED\u5230\u4E0B\u4E00\u884C\u7684\u5185\u5BB9\u7684\u884C\u672B\u6DFB\u52A0\u4E24\u4E2A\u7A7A\u683C\u3002"},"unordered-list-style":{name:"\u65E0\u5E8F\u5217\u8868\u98CE\u683C",description:"\u786E\u4FDD\u65E0\u5E8F\u5217\u8868\u7B26\u5408\u6307\u5B9A\u7684\u98CE\u683C","list-style":{name:"\u5217\u8868\u9879\u98CE\u683C",description:"\u5217\u8868\u9879\u9700\u8981\u6307\u5B9A\u7684\u98CE\u683C"}},"yaml-key-sort":{name:"YAML \u952E\u6392\u5E8F",description:"\u6839\u636E\u6307\u5B9A\u7684\u987A\u5E8F\u548C\u4F18\u5148\u7EA7\u5BF9 YAML \u952E\u8FDB\u884C\u6392\u5E8F\u3002\u6CE8\u610F\uFF1A\u4E5F\u8BB8\u4E5F\u4F1A\u5220\u9664\u7A7A\u767D\u884C\u3002","yaml-key-priority-sort-order":{name:"YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F",description:"\u5BF9\u952E\u8FDB\u884C\u6392\u5E8F\u7684\u987A\u5E8F\uFF0C\u6BCF\u884C\u4E00\u4E2A\u952E\uFF0C\u6309\u5217\u8868\u4E2D\u7684\u987A\u5E8F\u8FDB\u884C\u6392\u5E8F"},"priority-keys-at-start-of-yaml":{name:"YAML \u521D\u59CB\u65F6\u952E\u7684\u4F18\u5148\u7EA7",description:"\u521D\u59CB\u65F6 YAML \u952E\u6392\u5E8F\u987A\u5E8F"},"yaml-sort-order-for-other-keys":{name:"YAML \u5176\u5B83\u952E\u7684\u6392\u5E8F\u987A\u5E8F",description:"\u5BF9 YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F\u6587\u672C\u533A\u57DF\u4E2D\u672A\u627E\u5230\u7684\u952E\u8FDB\u884C\u6392\u5E8F"}},"yaml-timestamp":{name:"YAML \u65F6\u95F4\u6233",description:"\u5728 YAML frontmatter \u4E2D\u8DDF\u8E2A\u4E0A\u6B21\u7F16\u8F91\u6587\u6863\u7684\u65E5\u671F\u3002\u4ECE\u6587\u6863\u5143\u6570\u636E\u4E2D\u83B7\u53D6\u65E5\u671F\u3002","date-created":{name:"\u521B\u5EFA\u65E5\u671F",description:"\u63D2\u5165\u6587\u4EF6\u7684\u521B\u5EFA\u65E5\u671F"},"date-created-key":{name:"\u521B\u5EFA\u65E5\u671F\u7684\u952E",description:"\u4F7F\u7528\u54EA\u4E2A YAML \u952E\u6765\u8868\u793A\u521B\u5EFA\u65E5\u671F"},"force-retention-of-create-value":{name:"\u5F3A\u5236\u4FDD\u7559\u521B\u5EFA\u65E5\u671F\u7684\u952E\u503C",description:"\u91CD\u7528\u521B\u5EFA\u65E5\u671F\u7684 YAML frontmatter \u4E2D\u7684\u503C\uFF0C\u800C\u4E0D\u662F\u6587\u6863\u5143\u6570\u636E\uFF0C\u8FD9\u5BF9\u4E8E\u9632\u6B62\u6587\u6863\u5143\u6570\u636E\u66F4\u6539\u5BFC\u81F4\u503C\u66F4\u6539\u4E3A\u5176\u4ED6\u503C\u65F6\u975E\u5E38\u6709\u7528"},"date-modified":{name:"\u4FEE\u6539\u65E5\u671F",description:"\u63D2\u5165\u6587\u4EF6\u7684\u6700\u8FD1\u4E00\u6B21\u7684\u4FEE\u6539\u65E5\u671F"},"date-modified-key":{name:"\u4FEE\u6539\u65E5\u671F\u7684\u952E",description:"\u4F7F\u7528\u54EA\u4E2A YAML \u952E\u6765\u8868\u793A\u4FEE\u6539\u65E5\u671F"},format:{name:"\u683C\u5F0F",description:"Momentjs \u8BED\u6CD5\u98CE\u683C\u7684\u65E5\u671F\u683C\u5F0F \uFF08\u8BE6\u60C5\u8BBE\u7F6E\u89C1[Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/)"}},"yaml-title-alias":{name:"YAML \u6807\u9898\u522B\u540D",description:"\u5C06\u6587\u6863\u7684\u6807\u9898\u63D2\u5165 YAML frontmatter \u7684\u522B\u540D\u90E8\u5206\u3002\u4ECE\u7B2C\u4E00\u4E2A H1 \u6216\u6587\u6863\u540D\u4E2D\u83B7\u53D6\u6807\u9898","preserve-existing-alias-section-style":{name:"\u4FDD\u7559\u73B0\u6709\u522B\u540D\u90E8\u5206\u6837\u5F0F",description:"\u5982\u679C\u8BBE\u7F6E\uFF0C\u6B64\u9879\u4EC5\u5728\u65B0\u521B\u5EFA\u7684\u522B\u540D\u90E8\u5206\u751F\u6548"},"keep-alias-that-matches-the-filename":{name:"\u786E\u4FDD\u522B\u540D\u4E0E\u6587\u4EF6\u540D\u5339\u914D",description:"\u8FD9\u6837\u7684\u522B\u540D\u901A\u5E38\u662F\u591A\u4F59\u7684"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"\u4F7F\u7528 YAML \u952E `linter-yaml-title-alias` \u5E2E\u52A9\u66F4\u6539\u6587\u6863\u540D\u548C\u6807\u9898",description:"\u5982\u679C\u8BBE\u7F6E\uFF0C\u5F53\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u66F4\u6539\u6216\u6587\u6863\u540D\uFF08\u5982\u679C\u7B2C\u4E00\u4E2A H1 \u4E0D\u5B58\u5728\uFF09\u66F4\u6539\u65F6\uFF0C\u5219\u6B64\u952E\u4E2D\u5B58\u50A8\u7684\u65E7\u522B\u540D\u5C06\u66FF\u6362\u4E3A\u65B0\u503C\uFF0C\u800C\u4E0D\u4EC5\u4EC5\u662F\u5728\u522B\u540D\u6570\u7EC4\u4E2D\u63D2\u5165\u65B0\u6761\u76EE"}},"yaml-title":{name:"YAML \u6807\u9898",description:"\u5C06\u6587\u4EF6\u7684\u6807\u9898\u63D2\u5165\u5230 YAML frontmatter \u4E2D\u3002 \u6839\u636E\u6240\u9009\u6A21\u5F0F\u83B7\u53D6\u6807\u9898\u3002","title-key":{name:"\u6807\u9898\u952E",description:"\u6807\u9898\u4F7F\u7528\u54EA\u4E00\u4E2A YAML \u952E"},mode:{name:"\u6A21\u5F0F",description:"\u7528\u4E8E\u83B7\u53D6\u6807\u9898\u7684\u65B9\u6CD5"}}},enums:{"Title Case":"\u6807\u9898\u5927\u5C0F\u5199","ALL CAPS":"\u5168\u90E8\u5927\u5199","First letter":"\u9996\u5B57\u6BCD\u5927\u5199",".":".",")":")",ERROR:"\u9519\u8BEF",TRACE:"\u8DDF\u8E2A",DEBUG:"debug",INFO:"\u4FE1\u606F",WARN:"\u8B66\u544A",SILENT:"\u9759\u9ED8",ascending:"\u5347\u5E8F",lazy:"\u61D2\u52A0\u8F7D",Nothing:"\u65E0","Remove hashtag":"\u79FB\u9664hashtag","Remove whole tag":"\u79FB\u9664\u6574\u4E2A\u6807\u7B7E",asterisk:"\u661F\u53F7",underscore:"\u4E0B\u5212\u7EBF",consistent:"\u4E00\u81F4","-":"-","*":"*","+":"+",space:"\u7A7A\u95F4","no space":"\u6CA1\u6709\u7A7A\u95F4",None:"None","Ascending Alphabetical":"\u6309\u5B57\u6BCD\u987A\u5E8F\u5347\u5E8F","Descending Alphabetical":"\u6309\u5B57\u6BCD\u987A\u5E8F\u964D\u5E8F","multi-line":"\u591A\u884C","single-line":"\u5355\u884C","single string to single-line":"\u4E00\u884C\u4E00\u4E2A\u5B57\u7B26\u4E32","single string to multi-line":"\u591A\u884C\u4E00\u4E2A\u5B57\u7B26\u4E32","single string comma delimited":"\u5B57\u7B26\u4E32\u7528\u9017\u53F7\u5206\u9694","single string space delimited":"\u5B57\u7B26\u4E32\u7528\u7A7A\u683C\u5206\u9694","single-line space delimited":"\u5355\u884C\u7A7A\u683C\u5206\u9694","first-h1":"\u7B2C\u4E00\u7EA7\u6807\u9898","first-h1-or-filename-if-h1-missing":"\u7B2C\u4E00\u7EA7 1 \u6807\u9898\u6216\u6587\u4EF6\u540D\uFF08\u5982\u679C\u7F3A\u5C11 1 \u7EA7\u6807\u9898\uFF09",filename:"\u6587\u4EF6\u540D","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var Qc={};var Zc={ar:Cc,cz:qc,da:Mc,de:Ic,en:so,es:_c,fr:Bc,hi:Fc,id:Rc,it:Dc,ja:Nc,ko:jc,nl:Pc,no:Kc,pl:$c,"pt-BR":Yc,pt:Hc,ro:Wc,ru:Vc,sq:Uc,tr:ua,uk:ua,"zh-TW":Qc,zh:Gc},ma="en",pa=Zc[ma];function ga(e){ma=e,pa=Zc[ma||"en"]}function E(e){return pa||et(`locale not found for '${ma}'`),pa&&no(pa,e)||no(so,e)}var ha=function(e){if(e==null)return Ug;if(typeof e=="string")return Vg(e);if(typeof e=="object")return Array.isArray(e)?Yg(e):Wg(e);if(typeof e=="function")return fa(e);throw new Error("Expected function, string, or object as test")};function Yg(e){let t=[],i=-1;for(;++i":""))+")"})}return u;function u(){let m=[],g,h,v;if((!t||r(o,l,d[d.length-1]||null))&&(m=Gg(i(o,d)),m[0]===ya))return m;if(o.children&&m[0]!==lo)for(h=(n?o.children.length:-1)+a,v=d.concat(o);h>-1&&h=0;){let r=e.charAt(n);if(r===` -`)break;r.trim()===""||r===">"?i=r+i:i="",n--}return[i,n]}function ed(e=""){let[t]=Xc(e,e.length);return` -`+t.trim()}function Qg(e,t){if(t===0)return e;let i=t,n=t;for(;i>=0;){let r=e.charAt(i);if(r.trim()!=="")break;r===` +`+t.stack),ie.default.error(i),Cn&&xa(i.substring(i.indexOf("]")+2),ie.default.levels.TRACE)}function Vt(e){ie.default.info(`${ba} ${e}`),Cn&&xa(e,ie.default.levels.INFO)}function oi(e){ie.default.debug(`${ba} ${e}`),Cn&&xa(e,ie.default.levels.DEBUG)}function rt(e){ie.default.warn(`${ba} ${e}`),Cn&&xa(e,ie.default.levels.WARN)}function at(e){ie.default.getLevel()>ie.default.levels.DEBUG||ko.set(e,performance.now())}function ji(e){if(ie.default.getLevel()>ie.default.levels.DEBUG)return;ko.has(e)||rt(T("logs.timing-key-not-found").replace("{TIMING_KEY}",e));let t=performance.now()-ko.get(e);oi(`${e}: ${t} `+T("logs.milliseconds-abbreviation"))}function xa(e,t){ie.default.getLevel()<=t&&va.push(e)}function Gc(){va=[]}function zo(e){Cn=e}function wa(e){switch(e){case"INFO":{ie.default.setLevel("info");break}case"TRACE":{ie.default.setLevel("trace");break}case"DEBUG":{ie.default.setLevel("debug");break}case"SILENT":{ie.default.setLevel("silent");break}case"ERROR":{ie.default.setLevel("error");break}case"WARN":{ie.default.setLevel("warn");break}}}function Qc(e){switch(e){case ie.default.levels.INFO:return"INFO";case ie.default.levels.TRACE:return"TRACE";case ie.default.levels.DEBUG:return"DEBUG";case ie.default.levels.SILENT:return"SILENT";case ie.default.levels.ERROR:return"ERROR";case ie.default.levels.WARN:return"WARN"}}var Zc={};var Jc={};var Xc={};var ed={commands:{"lint-file":{name:"Linten Sie die aktuelle Datei","error-message":"Lint-Datei-Fehler in der Datei"},"lint-file-unless-ignored":{name:"Linten Sie die aktuelle Datei, es sei denn, sie wird ignoriert"},"lint-all-files":{name:"Linten Sie alle Dateien im Vault","error-message":"Beim Linten aller Dateien Fehler in der Datei","success-message":"Alle Dateien gelinted","errors-message-singular":"Beim Linten aller Dateien gab es einen Fehler.","errors-message-plural":"Beim Linten aller Dateien gab es {NUM} Fehler.","start-message":"Dadurch werden alle Ihre Dateien ver\xE4ndert und es k\xF6nnen Fehler entstehen.","submit-button-text":"Linte alle","submit-button-notice-text":"Linte alle Dateien..."},"lint-all-files-in-folder":{name:"Linte alle Dateien im aktuellen Ordner","start-message":"Dadurch werden alle Ihre Dateien in {FOLDER_NAME} bearbeitet, einschlie\xDFlich der Dateien in den Unterordnern, was zu Fehlern f\xFChren kann.","submit-button-text":"Linte alle Dateien in {FOLDER_NAME}","submit-button-notice-text":"Linten aller Dateien in {FOLDER_NAME}...","error-message":"Beim Linten aller Dateien im Ordner gab es Fehler in der Datei","success-message":"Alle {NUM}-Dateien in {FOLDER_NAME} wurden gelinted.","message-singular":"Alle {NUM}-Dateien in {FOLDER_NAME} wurden gelinted und es trat ein Fehler auf.","message-plural":"Alle {FILE_COUNT}-Dateien in {FOLDER_NAME} wurden gelinted und es gab {ERROR_COUNT} Fehler."},"paste-as-plain-text":{name:"Einf\xFCgen als reiner Text und ohne \xC4nderungen"},"lint-file-pop-up-menu-text":{name:"Linte Datei"},"lint-folder-pop-up-menu-text":{name:"Linte Ordner"}},logs:{"plugin-load":"Plugin wird geladen","plugin-unload":"Plugin entladen","folder-lint":"Linting-Ordner ","linter-run":"Laufender Linter","paste-link-warning":"Abgebrochenes Einf\xFCgen des Lints, da der Inhalt der Zwischenablage ein Link ist, wodurch Konflikte mit anderen Plugins vermieden werden, die das Einf\xFCgen \xE4ndern.","see-console":"Weitere Informationen finden Sie in der Konsole.","unknown-error":"Beim Linten ist ein unbekannter Fehler aufgetreten.","moment-locale-not-found":"Beim Versuch, Moment.js locale auf {MOMENT_LOCALE} umzustellen, wurde {CURRENT_LOCALE} angezeigt","file-change-lint-message-start":"Linted","pre-rules":"Regeln vor regul\xE4ren Regeln","post-rules":"Regeln nach regul\xE4ren Regeln","rule-running":"Laufende Regeln","custom-regex":"Benutzerdefinierte Regex-Regeln","running-custom-regex":"Ausf\xFChren von benutzerdefinierten Regex","running-custom-lint-command":"Ausf\xFChren von benutzerdefinierten Lint-Befehlen","custom-lint-duplicate-warning":'Sie k\xF6nnen denselben Befehl ("{COMMAND_NAME}") nicht zweimal als benutzerdefinierte Lint-Regel ausf\xFChren.',"custom-lint-error-message":"Benutzerdefinierter Lint-Befehl","disabled-text":"ist deaktiviert","run-rule-text":"L\xE4uft","timing-key-not-found":"Der Timing-Schl\xFCssel '{TIMING_KEY}' ist in der Timing-Info-Liste nicht vorhanden, daher wurde er ignoriert","milliseconds-abbreviation":"ms","invalid-date-format-error":"Das Format des Erstellungsdatums '{DATE}' konnte nicht analysiert oder bestimmt werden, sodass das Erstellungsdatum in '{FILE_NAME}","invalid-delimiter-error-message":"Trennzeichen darf nur ein einzelnes Zeichen sein","missing-footnote-error-message":"Die Fu\xDFnote '{FOOTNOTE}' hat keinen entsprechenden Fu\xDFnotenverweis vor dem Fu\xDFnoteninhalt und kann nicht verarbeitet werden. Bitte achten Sie darauf, dass alle Fu\xDFnoten vor dem Inhalt der Fu\xDFnote einen entsprechenden Verweis haben.","too-many-footnotes-error-message":"Der Fu\xDFnotenschl\xFCssel '{FOOTNOTE_KEY}' hat mehr als 1 Fu\xDFnote, die darauf verweist. Bitte aktualisieren Sie die Fu\xDFnoten so, dass es nur noch eine Fu\xDFnote pro Fu\xDFnotenschl\xFCssel gibt.","wrapper-yaml-error":"Fehler in der YAML: {ERROR_MESSAGE}","wrapper-unknown-error":"Unbekannter Fehler: {ERROR_MESSAGE}","uneven-amount-of-quotes":"Die Vorkommen des Anf\xFChrungszeichens `{QUOTE}` in der Datei sind nicht gerade, daher k\xF6nnen wir gerade Anf\xFChrungszeichen nicht in intelligente Anf\xFChrungszeichen umwandeln"},"notice-text":{"empty-clipboard":"Es gibt keinen Inhalt in der Zwischenablage.","characters-added":"Zeichen hinzugef\xFCgt","characters-removed":"Zeichen entfernt","copy-to-clipboard-failed":"Kopieren des Textes in die Zwischenablage fehlgeschlagen: "},"all-rules-option":"Alle","linter-title":"Linter","empty-search-results-text":"Keine Einstellungen stimmen mit der Suche \xFCberein","warning-text":"Warnung","file-backup-text":"Stellen Sie sicher, dass Sie Ihre Dateien gesichert haben.",tabs:{names:{general:"Allgemein",custom:"Individuell",yaml:"YAML",heading:"\xDCberschrift",content:"Inhalt",footnote:"Fu\xDFnote",spacing:"Abstand",paste:"Einf\xFCgen",debug:"Debuggen"},"default-search-bar-text":"Alle Einstellungen durchsuchen",general:{"lint-on-save":{name:"Linten beim Speichern",description:"Linten der Datei beim manuellen Speichern (wenn `Strg + S` gedr\xFCckt wird oder wenn `:w` ausgef\xFChrt wird, w\xE4hrend vim-Tastenkombinationen verwendet werden)"},"display-message":{name:"Meldung beim Linten anzeigen",description:"Zeigen Sie die Anzahl der Zeichen an, die sich nach dem Linten ge\xE4ndert haben"},"lint-on-file-change":{name:"Linten bei Datei\xE4nderungen",description:"Wenn eine Datei geschlossen oder zu einer neuen Datei gewechselt wird, wird die vorherige Datei gelinted."},"display-lint-on-file-change-message":{name:"Nachricht beim Linten nach einer Datei\xE4nderung anzeigen",description:"Zeigt eine Meldung an, wenn `Linten bei Datei\xE4nderungen` ausgel\xF6st wurde"},"folders-to-ignore":{name:"Ordner, die ignoriert werden sollen",description:"Ordner, die ignoriert werden sollen, wenn alle Dateien gelinted oder beim Speichern gelinted werden. Geben Sie Ordnerpfade ein, die durch Zeilenumbr\xFCche getrennt sind","folder-search-placeholder-text":"Ordner-Name","add-input-button-text":"Einen anderen zu ignorierenden Ordner hinzuf\xFCgen","delete-tooltip":"L\xF6schen"},"override-locale":{name:"Gebietsschema \xFCberschreiben",description:"Legen Sie diese Option fest, wenn Sie ein anderes Gebietsschema als das Standardgebietsschema verwenden m\xF6chten"},"same-as-system-locale":"Identisch mit System ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML-Aliase-Abschnittsstil",description:"Der Stil des YAML-Aliasabschnitts"},"yaml-tags-section-style":{name:"Abschnittsstil f\xFCr YAML-Tags",description:"Der Stil des YAML-Tags-Abschnitts"},"default-escape-character":{name:"Standard-Escape-Zeichen",description:"Das Standardzeichen, das zum Maskieren von YAML-Werten verwendet werden soll, wenn ein einfaches Anf\xFChrungszeichen und kein doppeltes Anf\xFChrungszeichen vorhanden sind."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Entfernen Sie unn\xF6tige Escape-Zeichen im mehrzeiligen Array-Format",description:"Escape-Zeichen f\xFCr mehrzeilige YAML-Arrays ben\xF6tigen nicht die gleiche Escape-Funktion wie einzeilige Arrays. Entfernen Sie also im mehrzeiligen Format zus\xE4tzliche Escapezeichen, die nicht erforderlich sind"},"number-of-dollar-signs-to-indicate-math-block":{name:"Anzahl der Dollarzeichen, die den Matheblock anzeigen",description:"Die Anzahl der Dollarzeichen, um den mathematischen Inhalt als mathematischen Block anstelle von Inline-Mathematik zu betrachten"}},debug:{"log-level":{name:"Log-Ebene",description:"Die Arten von Logmeldungen, die vom Dienst protokolliert werden d\xFCrfen. Der Standardwert ist Fehler."},"linter-config":{name:"Linter-Konfiguration",description:"Der Inhalt der data.json f\xFCr den Linter zum Zeitpunkt des Ladens der Einstellungsseite"},"log-collection":{name:"Sammeln Sie Protokolle bei aktiviertem `Linten beim Speichern` und dem Linten der aktuellen Datei",description:"Sammelt die Log-Meldungen, wenn Sie `Linten beim Speichern` aktiviert haben und die aktuelle Datei linten. Diese Protokolle k\xF6nnen beim Debuggen und Erstellen von Fehlerberichten hilfreich sein."},"linter-logs":{name:"Linter-Protokolle",description:"Die Protokolle des letzten `Linten beim Speichern`-Durchlaufes oder dem letzten Linten der aktuellen Datei werden gesammelt, wenn die Option aktiviert ist."}}},options:{"custom-command":{name:"Benutzerdefinierte Befehle",description:"Benutzerdefinierte Befehle sind Obsidian-Befehle, die ausgef\xFChrt werden, nachdem der Linter seine regul\xE4ren Regeln ausgef\xFChrt hat. Dies bedeutet, dass sie nicht ausgef\xFChrt werden, bevor die YAML-Zeitstempellogik ausgef\xFChrt wird, sodass sie dazu f\xFChren k\xF6nnen, dass der YAML-Zeitstempel bei der n\xE4chsten Ausf\xFChrung des Linters ausgel\xF6st wird. Sie k\xF6nnen einen Obsidian-Befehl nur einmal ausw\xE4hlen. **_Beachten Sie, dass dies derzeit nur beim Linten der aktuellen Datei funktioniert._**",warning:"Wenn Sie eine Option ausw\xE4hlen, stellen Sie sicher, dass Sie die Option entweder mit der Maus oder durch Dr\xFCcken der Eingabetaste ausw\xE4hlen. Andere Auswahlmethoden funktionieren m\xF6glicherweise nicht und es werden nur Auswahlen eines tats\xE4chlichen Obsidian-Befehls oder einer leeren Zeichenfolge gespeichert.","add-input-button-text":"Neuen Befehl hinzuf\xFCgen","command-search-placeholder-text":"Obsidian-Befehl","move-up-tooltip":"Aufr\xFCcken","move-down-tooltip":"Bewegen Sie sich nach unten","delete-tooltip":"L\xF6schen"},"custom-replace":{name:"Benutzerdefinierter Regex-Ersatz",description:"Der benutzerdefinierte Regex-Ersatz kann verwendet werden, um alles zu ersetzen, was mit dem Such-Regex mit dem Ersatzwert \xFCbereinstimmt. Bei den Werten replace und find muss es sich um g\xFCltige Regex-Werte handeln.",warning:"Verwenden Sie dies mit Vorsicht, wenn Sie Regex nicht kennen. Stellen Sie au\xDFerdem sicher, dass Sie keine Lookbehinds in Ihrem regul\xE4ren Ausdruck auf iOS-Mobilger\xE4ten verwenden, da dies dazu f\xFChrt, dass Lints fehlschlagen, da dies auf dieser Plattform nicht unterst\xFCtzt wird.","add-input-button-text":"Neuen Regex-Ersatz hinzuf\xFCgen","regex-to-find-placeholder-text":"Regex zu finden","flags-placeholder-text":"Flaggen","regex-to-replace-placeholder-text":"Regex zu ersetzen","label-placeholder-text":"Etikett","move-up-tooltip":"Aufr\xFCcken","move-down-tooltip":"Bewegen Sie sich nach unten","delete-tooltip":"L\xF6schen"}},rules:{"auto-correct-common-misspellings":{name:"H\xE4ufige Rechtschreibfehler automatisch korrigieren",description:"Verwendet ein W\xF6rterbuch mit h\xE4ufigen Rechtschreibfehlern, um sie automatisch in die richtige Schreibweise umzuwandeln. Siehe [Autokorrekturkarte](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) f\xFCr die vollst\xE4ndige Liste der automatisch korrigierten W\xF6rter.","ignore-words":{name:"Ignorieren Sie W\xF6rter",description:"Eine durch Kommas getrennte Liste von W\xF6rtern in Kleinbuchstaben, die bei der automatischen Korrektur ignoriert werden sollen"}},"add-blockquote-indentation-on-paste":{name:"Blockquote-Einr\xFCckung beim Einf\xFCgen hinzuf\xFCgen",description:"F\xFCgt Blockzitate zu allen au\xDFer der ersten Zeile hinzu, wenn sich der Cursor w\xE4hrend des Einf\xFCgens in einer Blockquote/Callout-Zeile befindet"},"blockquote-style":{name:"Blockquote-Stil",description:"Stellt sicher, dass der Blockquote-Stil konsistent ist.",style:{name:"Stil",description:"Der f\xFCr Blockquote-Indikatoren verwendete Stil"}},"capitalize-headings":{name:"\xDCberschriften gro\xDF schreiben",description:"\xDCberschriften sollten mit Gro\xDF- und Kleinschreibung formatiert werden",style:{name:"Stil",description:"Die Art der zu verwendenden Gro\xDFschreibung"},"ignore-case-words":{name:"Ignore Cased Words",description:"Only apply title case style to words that are all lowercase"},"ignore-words":{name:"Ignorieren Sie Gro\xDF-/Kleinschreibungsw\xF6rter",description:"Eine durch Kommas getrennte Liste von W\xF6rtern, die bei der Gro\xDFschreibung ignoriert werden sollen"},"lowercase-words":{name:"W\xF6rter in Kleinbuchstaben",description:"Eine durch Kommas getrennte Liste von W\xF6rtern, um Kleinbuchstaben zu behalten"}},"compact-yaml":{name:"YAML komprimieren",description:"Entfernt f\xFChrende und nachfolgende Leerzeilen im YAML-Frontmatter.","inner-new-lines":{name:"Innere neue Zeilen",description:"Entfernen Sie neue Zeilen, die sich nicht am Anfang oder am Ende der YAML befinden"}},"consecutive-blank-lines":{name:"aufeinanderfolgende Leerzeilen zusammenfassen",description:"Es sollte h\xF6chstens eine aufeinanderfolgende Leerzeile geben."},"convert-bullet-list-markers":{name:"Konvertiere Aufz\xE4hlungszeichen",description:"Konvertiert g\xE4ngige Symbole f\xFCr Aufz\xE4hlungslisten in Markdown-Listenmarkierungen."},"convert-spaces-to-tabs":{name:"Leerzeichen in Tabulatoren konvertieren",description:"Konvertiert f\xFChrende Leerzeichen in Tabulatoren.",tabsize:{name:"Tabgr\xF6\xDFe",description:"Anzahl der Leerzeichen, die in einen Tabulator umgewandelt werden"}},"emphasis-style":{name:"Hervorhebungsstil",description:"Stellt sicher, dass der Hervorhebungsstil konsistent ist.",style:{name:"Stil",description:"Der Stil, der verwendet wird, um hervorgehobene Inhalte zu kennzeichnen"}},"empty-line-around-blockquotes":{name:"Leere Zeile um Blockquotes",description:"Stellt sicher, dass Blockzitate in einer leeren Zeile stehen, es sei denn, sie beginnen oder beenden ein Dokument. **Beachten Sie, dass eine leere Zeile entweder eine Verschachtelungsebene weniger f\xFCr Blockzitate oder ein Zeilenumbruchzeichen ist.**"},"empty-line-around-code-fences":{name:"Leere Zeile um Code-Bereiche",description:"Stellt sicher, dass Codebereiche mit einer leeren Zeile versehen sind, es sei denn, sie beginnen oder beenden ein Dokument."},"empty-line-around-math-blocks":{name:"Leere Zeile um mathematische Bl\xF6cke",description:"Stellt sicher, dass es eine leere Zeile um mathematische Bl\xF6cke gibt, indem `Anzahl der Dollarzeichen, die einen mathematischen Block anzeigen` verwendet wird, um zu bestimmen, wie viele Dollarzeichen einen mathematischen Block f\xFCr einzeilige Mathematik anzeigen."},"empty-line-around-tables":{name:"Leere Zeile um Tabellen",description:"Stellt sicher, dass es eine leere Zeile um Github-formatierte Tabellen gibt, es sei denn, sie beginnen oder beenden ein Dokument."},"escape-yaml-special-characters":{name:"Escape-YAML-Sonderzeichen",description:`Maskiert Doppelpunkte mit einem Leerzeichen nach ihnen (: ), einfache Anf\xFChrungszeichen (') und doppelte Anf\xFChrungszeichen (") in YAML.`,"try-to-escape-single-line-arrays":{name:"Versucht, Single-Line-Arrays zu vermeiden",description:'Versucht, Arraywerte zu maskieren, wobei davon ausgegangen wird, dass ein Array mit "[" beginnt, mit "]" endet und Elemente enth\xE4lt, die durch "," getrennt sind.'}},"file-name-heading":{name:"\xDCberschrift des Dateinamens",description:"F\xFCgt den Dateinamen als H1-\xDCberschrift ein, wenn keine H1-\xDCberschrift vorhanden ist."},"footnote-after-punctuation":{name:"Fu\xDFnote nach Interpunktion",description:"Stellt sicher, dass Fu\xDFnotenverweise nach der Interpunktion und nicht davor platziert werden."},"force-yaml-escape":{name:"YAML-Escape erzwingen",description:"Maskiert die Werte f\xFCr die angegebenen YAML-Schl\xFCssel.","force-yaml-escape-keys":{name:"Erzwingen Sie die YAML-Escape-Klausel f\xFCr Schl\xFCssel",description:"Verwendet das YAML-Escapezeichen f\xFCr die angegebenen YAML-Schl\xFCssel, die durch ein Zeilenumbruchzeichen getrennt sind, wenn es nicht bereits mit Escapezeichen versehen ist. Nicht auf YAML-Arrays verwenden."}},"format-tags-in-yaml":{name:"Formatieren von Tags in YAML",description:"Entfernen Sie Hashtags aus Tags im YAML-Frontmatter, da sie die Tags dort ung\xFCltig machen."},"format-yaml-array":{name:"Formatieren des YAML-Arrays",description:"Erm\xF6glicht die Formatierung von regul\xE4ren YAML-Arrays als mehrzeilig oder einzeilig und `tags` und `aliases` d\xFCrfen einige Obsidian-spezifische YAML-Formate haben. Beachten Sie, dass eine einzelne Zeichenfolge zu einer einzelnen Zeile von einem einzelnen Zeichenfolgeneintrag zu einem einzeiligen Array wechselt, wenn mehr als 1 Eintrag vorhanden ist. Das Gleiche gilt f\xFCr eine einzelne Zeichenfolge bis zu einer mehrzeiligen Zeichenfolge, mit der Ausnahme, dass sie zu einem mehrzeiligen Array wird.","alias-key":{name:'Abschnitt "YAML-Aliase" formatieren',description:"Aktiviert die Formatierung f\xFCr den Abschnitt YAML-Aliase. Sie sollten diese Option nicht zusammen mit der Regel `YAML-Titel-Alias` aktivieren, da sie m\xF6glicherweise nicht gut zusammenarbeiten oder unterschiedliche Formatstile ausgew\xE4hlt haben, was zu unerwarteten Ergebnissen f\xFChrt."},"tag-key":{name:'Abschnitt "YAML-Tags formatieren"',description:"Aktiviert die Formatierung f\xFCr den Abschnitt YAML-Tags."},"default-array-style":{name:"Standardm\xE4\xDFiger YAML-Array-Abschnittsstil",description:"Der Stil anderer YAML-Arrays, die nicht `tags` oder `aliases` sind oder bei `Erzwingt f\xFCr Schl\xFCsselwerte einzeilige Arrays` und `Erzwingt f\xFCr Schl\xFCsselwerte mehrzeilige Arrays`"},"default-array-keys":{name:"Formatieren von YAML-Array-Abschnitten",description:"Aktiviert die Formatierung f\xFCr regul\xE4re YAML-Arrays"},"force-single-line-array-style":{name:"Erzwingt f\xFCr Schl\xFCsselwerte einzeilige Arrays",description:"Erzwingt, dass das YAML-Array f\xFCr die neuen zeilengetrennten Schl\xFCssel im einzeiligen Format vorliegt (leer lassen, um diese Option zu deaktivieren)"},"force-multi-line-array-style":{name:"Erzwingt f\xFCr Schl\xFCsselwerte mehrzeilige Arrays",description:"Erzwingt, dass das YAML-Array f\xFCr die neuen zeilengetrennten Schl\xFCssel im mehrzeiligen Format vorliegt (leer lassen, um diese Option zu deaktivieren)"}},"header-increment":{name:"Header-Inkrement",description:"\xDCberschriftenebenen sollten jeweils nur um eine Ebene erh\xF6ht werden","start-at-h2":{name:"Start-Header-Inkrement auf \xDCberschriftenebene 2",description:"Legt die \xDCberschriftenebene 2 als minimale \xDCberschriftenebene in einer Datei f\xFCr das Kopfzeileninkrement fest und verschiebt alle \xDCberschriften entsprechend, sodass sie beginnend mit einer \xDCberschrift der Ebene 2 inkrementiert werden."}},"heading-blank-lines":{name:"\xDCberschriften mit Leerzeilen",description:"Alle \xDCberschriften haben sowohl davor als auch danach eine Leerzeile (au\xDFer wenn sich die \xDCberschrift am Anfang oder Ende des Dokuments befindet).",bottom:{name:"Darunter",description:"Einf\xFCgen einer Leerzeile unter \xDCberschriften"},"empty-line-after-yaml":{name:"Leere Zeile zwischen YAML und Header",description:"Behalten Sie die leere Zeile zwischen dem YAML-Frontmatter und dem Header bei"}},"headings-start-line":{name:"\xDCberschriften am Zeilenbeginn",description:"Bei \xDCberschriften, die keine Zeile beginnen, wird der vorangehende Leerraum entfernt, um sicherzustellen, dass sie als \xDCberschriften erkannt werden."},"insert-yaml-attributes":{name:"Einf\xFCgen von YAML-Attributen",description:"F\xFCgt die angegebenen YAML-Attribute in den YAML-Frontmatter ein. Setzen Sie jedes Attribut in eine einzelne Zeile.","text-to-insert":{name:"Text zum Einf\xFCgen",description:"Text, der in den YAML-Frontmatter eingef\xFCgt werden soll"}},"line-break-at-document-end":{name:"Zeilenumbruch am Dokumentende",description:"Stellt sicher, dass am Ende eines Dokuments genau ein Zeilenumbruch steht."},"move-footnotes-to-the-bottom":{name:"Fu\xDFnoten nach unten verschieben",description:"Verschieben Sie alle Fu\xDFnoten an das Ende des Dokuments."},"move-math-block-indicators-to-their-own-line":{name:"Verschieben Sie mathematische Blockindikatoren in eine eigene Zeile",description:"Verschieben Sie alle Anfangs- und Endindikatoren f\xFCr mathematische Bl\xF6cke in ihre eigenen Zeilen, indem Sie `Anzahl der Dollarzeichen, die einen mathematischen Block anzeigen` verwenden, um zu bestimmen, wie viele Dollarzeichen einen mathematischen Block f\xFCr einzeilige Mathematik anzeigen."},"move-tags-to-yaml":{name:"Tags nach YAML verschieben",description:"Verschieben Sie alle Tags in den YAML-Frontmatter des Dokuments.","how-to-handle-existing-tags":{name:"Body-Tag-Operation",description:"Die Aktion, die mit nicht ignorierten Tags im Hauptteil der Datei ausgef\xFChrt werden soll, nachdem sie in den Frontmatter verschoben wurden"},"tags-to-ignore":{name:"ignorierte Tags",description:"Die Tags, die nicht in das Tags-Array verschoben oder aus dem Textinhalt entfernt werden, wenn `Entfernen Sie den Hashtag aus Tags im Inhaltstext` aktiviert ist. Jedes Tag sollte in einer neuen Zeile und ohne das `#`` stehen. **Stellen Sie sicher, dass Sie den Hashtag nicht in den Tag-Namen aufnehmen.**"}},"no-bare-urls":{name:"Keine blo\xDFen URLs",description:"Umschlie\xDFt blo\xDFe URLs mit spitzen Klammern, es sei denn, sie sind in Back-Ticks, eckige Klammern oder einfache oder doppelte Anf\xFChrungszeichen eingeschlossen."},"ordered-list-style":{name:"Geordneter Listenstil",description:"Stellt sicher, dass geordnete Listen dem angegebenen Stil entsprechen. Beachten Sie, dass 2 Leerzeichen oder 1 Tabulator als Einr\xFCckungsebene betrachtet werden.","number-style":{name:"Zahlen-Stil",description:"Der Zahlenstil, der in geordneten Listenindikatoren verwendet wird"},"list-end-style":{name:"Endestil des Indikators f\xFCr eine geordnete Liste",description:"Das Endezeichen eines geordneten Listenkennzeichens"}},"paragraph-blank-lines":{name:"Leere Absatzzeilen",description:"Alle Abs\xE4tze sollten sowohl davor als auch danach genau eine Leerzeile haben."},"prevent-double-checklist-indicator-on-paste":{name:"Verhindern Sie eine doppelte Checklistenanzeige beim Einf\xFCgen",description:"Entfernt die Start-Checklisten-Anzeige aus dem Text, um sie einzuf\xFCgen, wenn die Zeile, auf der sich der Cursor in der Datei befindet, \xFCber eine Checklistenanzeige verf\xFCgt"},"prevent-double-list-item-indicator-on-paste":{name:"Verhindern Sie die Anzeige f\xFCr doppelte Listenelemente beim Einf\xFCgen",description:"Entfernt den Startlistenindikator aus dem Text, der eingef\xFCgt werden soll, wenn die Zeile, auf der sich der Cursor in der Datei befindet, einen Listenindikator hat"},"proper-ellipsis-on-paste":{name:"Richtige Auslassungspunkte auf Paste",description:"Ersetzt drei aufeinanderfolgende Punkte durch Auslassungspunkte, auch wenn sie im Text ein Leerzeichen zum Einf\xFCgen haben"},"proper-ellipsis":{name:"Richtige Auslassungspunkte",description:"Ersetzt drei aufeinanderfolgende Punkte durch Auslassungspunkte."},"quote-style":{name:"Zitatstil",description:"Aktualisiert die Anf\xFChrungszeichen im Textk\xF6rperinhalt, sodass sie auf die angegebenen einfachen und doppelten Anf\xFChrungszeichenstile aktualisiert werden.","single-quote-enabled":{name:"Aktivieren Sie `Stil f\xFCr einfache Anf\xFChrungszeichen`",description:"Gibt an, dass der ausgew\xE4hlte einfache Anf\xFChrungszeichenstil verwendet werden soll."},"single-quote-style":{name:"Stil f\xFCr einfache Anf\xFChrungszeichen",description:"Der Stil der zu verwendenden einfachen Anf\xFChrungszeichen."},"double-quote-enabled":{name:"Aktivieren Sie `Stil f\xFCr doppelte Anf\xFChrungszeichen`",description:"Gibt an, dass der ausgew\xE4hlte doppelte Anf\xFChrungszeichenstil verwendet werden soll."},"double-quote-style":{name:"Stil f\xFCr doppelte Anf\xFChrungszeichen",description:"Der zu verwendende Stil der doppelten Anf\xFChrungszeichen."}},"re-index-footnotes":{name:"Fu\xDFnoten neu indizieren",description:"Indiziert Fu\xDFnotenschl\xFCssel und Fu\xDFnoten basierend auf der Reihenfolge des Auftretens neu (HINWEIS: Diese Regel funktioniert *nicht*, wenn es mehr als eine Fu\xDFnote f\xFCr einen Schl\xFCssel gibt.)"},"remove-consecutive-list-markers":{name:"Entfernen Sie aufeinanderfolgende Listenmarkierungen",description:"Entfernt aufeinanderfolgende Listenmarkierungen. N\xFCtzlich beim Kopieren und Einf\xFCgen von Listenelementen."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Entfernen Sie leere Zeilen zwischen Listenmarkierungen und Checklisten",description:"Es sollten keine leeren Zeilen zwischen Listenmarkierungen und Checklisten stehen."},"remove-empty-list-markers":{name:"Entfernen Sie leere Listenmarkierungen",description:"Entfernt leere Listenmarkierungen, d.h. Listenelemente ohne Inhalt."},"remove-hyphenated-line-breaks":{name:"Entfernen Sie Zeilenumbr\xFCche mit Bindestrich",description:"Entfernt Zeilenumbr\xFCche mit Bindestrich. N\xFCtzlich beim Einf\xFCgen von Text aus Lehrb\xFCchern."},"remove-hyphens-on-paste":{name:"Entfernen Sie Bindestriche auf Paste",description:"Entfernt Bindestriche aus dem Text zum Einf\xFCgen"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Entfernen Sie f\xFChrende oder nachgestellte Leerzeichen beim Einf\xFCgen",description:"Entfernt alle f\xFChrenden Leerzeichen ohne Tabulatoren und alle nachgestellten Leerzeichen, die der Text einf\xFCgen kann"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Entfernen Sie \xFCbrig gebliebene Fu\xDFnoten aus dem Zitat beim Einf\xFCgen",description:"Entfernt alle \xFCbrig gebliebenen Fu\xDFnotenverweise, die der Text einf\xFCgen kann"},"remove-link-spacing":{name:"Linkabstand entfernen",description:"Entfernt den Abstand um den Linktext."},"remove-multiple-blank-lines-on-paste":{name:"Entfernen Sie mehrfache Leerzeilen beim Einf\xFCgen",description:"Verdichtet mehrere Leerzeilen zu einer Leerzeile, damit der Text eingef\xFCgt werden kann"},"remove-multiple-spaces":{name:"Entfernen Sie mehrfache Leerzeichen",description:"Entfernt zwei oder mehr aufeinanderfolgende Leerzeichen. Ignoriert Leerzeichen am Anfang und am Ende der Zeile."},"remove-space-around-characters":{name:"Entfernen Sie den Abstand um die Zeichen",description:"Stellt sicher, dass bestimmte Zeichen nicht von Leerzeichen umgeben sind (entweder einzelne Leerzeichen oder ein Tabulator). Beachten Sie, dass dies in einigen F\xE4llen zu Problemen mit dem Markdown-Format f\xFChren kann.","include-fullwidth-forms":{name:"Einf\xFCgen von Formularen in voller Breite",description:'Einschlie\xDFen Unicode-Block "Formulare" in voller Breite'},"include-cjk-symbols-and-punctuation":{name:"CJK-Symbole und Satzzeichen einschlie\xDFen",description:'Einschlie\xDFen CJK-Symbole und Satzzeichen Unicode-Block'},"include-dashes":{name:"Bindestriche einschlie\xDFen",description:"F\xFCgen Sie den Gedankenstrich (\u2013) und den Gedankenstrich (\u2014) ein"},"other-symbols":{name:"Andere Symbole",description:"Andere Symbole, die enthalten sind"}},"remove-space-before-or-after-characters":{name:"Entfernen Sie Leerzeichen vor oder nach Zeichen",description:"Entfernt Leerzeichen vor und nach den angegebenen Zeichen. Beachten Sie, dass dies in einigen F\xE4llen zu Problemen mit dem Markdown-Format f\xFChren kann.","characters-to-remove-space-before":{name:"Leerzeichen vor Zeichen entfernen",description:"Entfernt Leerzeichen vor den angegebenen Zeichen. **Hinweis: Die Verwendung von `{` oder `}` in der Zeichenliste wirkt sich unerwartet auf Dateien aus, da es in der Ignoriersyntax hinter den Kulissen verwendet wird.**"},"characters-to-remove-space-after":{name:"Leerzeichen nach Zeichen entfernen",description:"Entfernt Leerzeichen vor den angegebenen Zeichen. **Hinweis: Die Verwendung von `{` oder `}` in der Zeichenliste wirkt sich unerwartet auf Dateien aus, da es in der Ignoriersyntax hinter den Kulissen verwendet wird.**"}},"remove-trailing-punctuation-in-heading":{name:"Entfernen Sie nachgestellte Satzzeichen in der \xDCberschrift",description:"Entfernt die angegebene Interpunktion am Ende von \xDCberschriften, wobei darauf zu achten ist, dass das Semikolon am Ende von [HTML-Entit\xE4tsreferenzen](https://de.wikipedia.org/wiki/Typografische_Zeichen_in_XML_und_HTML) ignoriert wird.","punctuation-to-remove":{name:"Nachfolgende Interpunktion",description:"Das nachfolgende Satzzeichen, das aus den \xDCberschriften in der Datei entfernt werden soll."}},"remove-yaml-keys":{name:"Entfernen von YAML-Schl\xFCsseln",description:"Entfernt die angegebenen YAML-Schl\xFCssel","yaml-keys-to-remove":{name:"Zu entfernende YAML-Schl\xFCssel",description:"Die zu entfernenden YAML-Schl\xFCssel aus dem YAML-Frontmatter mit oder ohne Doppelpunkt"}},"space-after-list-markers":{name:"Leerzeichen nach Listenmarkierungen",description:"Es sollte ein einzelnes Leerzeichen nach Listenmarkierungen und Kontrollk\xE4stchen geben."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Leerzeichen zwischen Chinesisch, Japanisch oder Koreanisch und Englisch oder Zahlen",description:"Stellt sicher, dass Chinesisch, Japanisch oder Koreanisch und Englisch oder Zahlen durch ein einziges Leerzeichen getrennt werden. Folgt diesen [Richtlinien](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Starker Stil",description:"Stellt sicher, dass der starke Stil konsistent ist.",style:{name:"Stil",description:"Der Stil, der verwendet wird, um starke/fettgedruckte Inhalte zu kennzeichnen"}},"trailing-spaces":{name:"Nachgestellte Leerzeichen",description:"Entfernt zus\xE4tzliche Leerzeichen nach jeder Zeile.","twp-space-line-break":{name:"Zwei Leerzeichen Zeilenumbruch",description:'Ignorieren Sie zwei Leerzeichen, gefolgt von einem Zeilenumbruch ("Zwei-Leerzeichen-Regel").'}},"two-spaces-between-lines-with-content":{name:"Zwei Leerzeichen zwischen Zeilen mit Inhalt",description:"Stellt sicher, dass zwei Leerzeichen an den Zeilenenden hinzugef\xFCgt werden, wobei der Inhalt in der n\xE4chsten Zeile f\xFCr Abs\xE4tze, Blockzitate und Listenelemente fortgesetzt wird"},"unordered-list-style":{name:"Ungeordneter Listenstil",description:"Stellt sicher, dass ungeordnete Listen dem angegebenen Stil folgen.","list-style":{name:"Stil des Listenelements",description:"Das Listenelementformat, das in ungeordneten Listen verwendet werden soll"}},"yaml-key-sort":{name:"Sortierung von YAML-Schl\xFCsseln",description:"Sortiert die YAML-Schl\xFCssel basierend auf der angegebenen Reihenfolge und Priorit\xE4t. Hinweis: Kann auch Leerzeilen entfernen.","yaml-key-priority-sort-order":{name:"Priorit\xE4tssortierreihenfolge der YAML-Schl\xFCssel",description:"Die Reihenfolge, in der die Schl\xFCssel sortiert werden sollen, wobei in jeder Zeile ein Schl\xFCssel in der Reihenfolge der Liste sortiert wird"},"priority-keys-at-start-of-yaml":{name:"Priorit\xE4tsschl\xFCssel am Anfang von YAML",description:"Die priorisierte Sortierreihenfolge der YAML-Schl\xFCssel wird am Anfang des YAML-Frontmatters platziert"},"yaml-sort-order-for-other-keys":{name:"YAML-Sortierreihenfolge f\xFCr andere Schl\xFCssel",description:"Die Art und Weise, wie die Schl\xFCssel sortiert werden, die nicht im Textbereich der priorisierten Sortierreihenfolge von YAML-Keys vorhanden sind"}},"yaml-timestamp":{name:"YAML-Zeitstempel",description:"Verfolgen Sie das Datum, an dem die Datei zuletzt bearbeitet wurde, im YAML-Frontmatter. Ruft Datumsangaben aus Dateimetadaten ab.","date-created":{name:"Erstellungsdatum",description:"Geben Sie das Datum ein, an dem die Datei erstellt wurde"},"date-created-key":{name:"Schl\xFCssel f\xFCr das Erstellungsdatum",description:"Der YAML-Schl\xFCssel, der f\xFCr das Erstellungsdatum verwendet werden soll"},"force-retention-of-create-value":{name:"Erzwinge die Beibehaltung des Schl\xFCsselwertes f\xFCr das Erstellungsdatum",description:"Verwendet den Wert im YAML-Frontmatter f\xFCr das Erstellungsdatum anstelle den Dateimetadaten, was n\xFCtzlich ist, um zu verhindern, dass \xC4nderungen an Dateimetadaten dazu f\xFChren, dass der Wert in einen anderen Wert ge\xE4ndert wird."},"date-modified":{name:"\xC4nderungsdatum",description:"Geben Sie das Datum ein, an dem die Datei zuletzt ge\xE4ndert wurde"},"date-modified-key":{name:"Schl\xFCssel f\xFCr das \xC4nderungsdatum",description:"Der YAML-Schl\xFCssel, der f\xFCr das \xC4nderungsdatum verwendet werden soll"},format:{name:"Format",description:"Zu verwendendes Datumsformat f\xFCr Moment.js (siehe [Momentformatoptionen](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML-Titel-Alias",description:"F\xFCgt den Titel der Datei in den Aliasabschnitt des YAML-Frontmatters ein. Ruft den Titel aus dem ersten H1- oder Dateinamen ab.","preserve-existing-alias-section-style":{name:"Vorhandenes Alias-Abschnittsformat beibehalten",description:"Wenn diese Option festgelegt ist, gilt die Einstellung `YAML-Aliase-Abschnittsstil` nur f\xFCr die neu erstellten Abschnitte"},"keep-alias-that-matches-the-filename":{name:"Behalten Sie einen Alias bei, der mit dem Dateinamen \xFCbereinstimmt",description:"Solche Aliase sind in der Regel redundant"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Verwenden Sie den YAML-Schl\xFCssel `linter-yaml-title-alias`, um bei \xC4nderungen von Dateinamen und \xDCberschriften zu helfen",description:"Wenn sich die erste H1-\xDCberschrift \xE4ndert oder der Dateiname ge\xE4ndert wird, wenn der erste H1 nicht vorhanden ist, wird der alte Alias, der in diesem Schl\xFCssel gespeichert ist, durch den neuen Wert ersetzt, anstatt nur einen neuen Eintrag in das Alias-Array einzuf\xFCgen"}},"yaml-title":{name:"YAML-Titel",description:"F\xFCgt den Titel der Datei in das YAML-Frontmatter ein. Ruft den Titel basierend auf dem ausgew\xE4hlten Modus ab.","title-key":{name:"Titel-Schl\xFCssel",description:"Der YAML-Schl\xFCssel, der f\xFCr den Titel verwendet werden soll"},mode:{name:"Modus",description:"Die zum Abrufen des Titels zu verwendende Methode"}}},enums:{"Title Case":"Titel Gro\xDF- und Kleinschreibung","ALL CAPS":"GROSSBUCHSTABEN","First letter":"Anfangsbuchstabe",".":".",")":")",ERROR:"Fehler",TRACE:"Spur",DEBUG:"Debuggen",INFO:"Info",WARN:"Warnen",SILENT:"Leise",ascending:"aufsteigend",lazy:"lazy",Nothing:"Faul","Remove hashtag":"Hashtag entfernen","Remove whole tag":"Ganzes Tag entfernen",asterisk:"Sternchen",underscore:"unterstreichen",consistent:"folgerichtig","-":"-","*":"*","+":"+",space:"Raum","no space":"kein Platz",None:"Nichts","Ascending Alphabetical":"Aufsteigend Alphabetisch","Descending Alphabetical":"Absteigend Alphabetisch","multi-line":"mehrzeilig","single-line":"einzeilig","single string to single-line":"Single String zu Single-Line","single string to multi-line":"Single String zu Multi-Line","single string comma delimited":"Komma mit Trennzeichen f\xFCr eine Zeichenfolge","single string space delimited":"Einzelzeichenfolgenabstand durch Trennzeichen","single-line space delimited":"einzeiliger Abstand durch Trennzeichen","first-h1":"erste \xDCberschrift der Ebene 1","first-h1-or-filename-if-h1-missing":"Erste \xDCberschrift der Ebene 1 oder Dateiname, wenn die \xDCberschrift der Ebene 1 fehlt",filename:"Dateinamen","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var So={commands:{"lint-file":{name:"Lint the current file","error-message":"Lint File Error in File"},"lint-file-unless-ignored":{name:"Lint the current file unless ignored"},"lint-all-files":{name:"Lint all files in the vault","error-message":"Lint All Files Error in File","success-message":"Linted all files","errors-message-singular":"Linted all files and there was 1 error.","errors-message-plural":"Linted all files and there were {NUM} errors.","start-message":"This will edit all of your files and may introduce errors.","submit-button-text":"Lint All","submit-button-notice-text":"Linting all files..."},"lint-all-files-in-folder":{name:"Lint all files in the current folder","start-message":"This will edit all of your files in {FOLDER_NAME} including files in its subfolders which may introduce errors.","submit-button-text":"Lint All Files in {FOLDER_NAME}","submit-button-notice-text":"Linting all files in {FOLDER_NAME}...","error-message":"Lint All Files in Folder Error in File","success-message":"Linted all {NUM} files in {FOLDER_NAME}.","message-singular":"Linted all {NUM} files in {FOLDER_NAME} and there was 1 error.","message-plural":"Linted all {FILE_COUNT} files in {FOLDER_NAME} and there were {ERROR_COUNT} error."},"paste-as-plain-text":{name:"Paste as Plain Text & without Modifications"},"lint-file-pop-up-menu-text":{name:"Lint file"},"lint-folder-pop-up-menu-text":{name:"Lint folder"}},logs:{"plugin-load":"Loading plugin","plugin-unload":"Unloading plugin","folder-lint":"Linting folder ","linter-run":"Running linter","paste-link-warning":"aborted paste lint as the clipboard content is a link and doing so will avoid conflicts with other plugins that modify pasting.","see-console":"See console for more details.","unknown-error":"An unknown error occurred during linting.","moment-locale-not-found":"Trying to switch Moment.js locale to {MOMENT_LOCALE}, got {CURRENT_LOCALE}","file-change-lint-message-start":"Linted","pre-rules":"rules before regular rules","post-rules":"rules after regular rules","rule-running":"rules running","custom-regex":"custom regex rules","running-custom-regex":"Running Custom Regex","running-custom-lint-command":"Running Custom Lint Commands","custom-lint-duplicate-warning":'You cannot run the same command ("{COMMAND_NAME}") as a custom lint rule twice.',"custom-lint-error-message":"Custom Lint Command","disabled-text":"is disabled","run-rule-text":"Running","timing-key-not-found":"timing key '{TIMING_KEY}' does not exist in the timing info list, so it was ignored","milliseconds-abbreviation":"ms","invalid-date-format-error":"The format of the created date '{DATE}' could not be parsed or determined so the created date was left alone in '{FILE_NAME}'","invalid-delimiter-error-message":"delimiter is only allowed to be a single character","missing-footnote-error-message":"Footnote '{FOOTNOTE}' has no corresponding footnote reference before the footnote contents and cannot be processed. Please make sure that all footnotes have a corresponding reference before the content of the footnote.","too-many-footnotes-error-message":"Footnote key '{FOOTNOTE_KEY}' has more than 1 footnote referencing it. Please update the footnotes so that there is only one footnote per footnote key.","wrapper-yaml-error":"error in the YAML: {ERROR_MESSAGE}","wrapper-unknown-error":"unknown error: {ERROR_MESSAGE}","uneven-amount-of-quotes":"The instances of the `{QUOTE}` quote in the file is not even, so we cannot convert straight quotes to smart quotes"},"notice-text":{"empty-clipboard":"There is no clipboard content.","characters-added":"characters added","characters-removed":"characters removed","copy-to-clipboard-failed":"Failed to copy text to clipboard: "},"all-rules-option":"All","linter-title":"Linter","empty-search-results-text":"No settings match search","warning-text":"Warning","file-backup-text":"Make sure you have backed up your files.","copy-aria-label":"Copy",tabs:{names:{general:"General",custom:"Custom",yaml:"YAML",heading:"Heading",content:"Content",footnote:"Footnote",spacing:"Spacing",paste:"Paste",debug:"Debug"},"default-search-bar-text":"Search all settings",general:{"lint-on-save":{name:"Lint on save",description:"Lint the file on manual save (when `Ctrl + S` is pressed or when `:w` is executed while using vim keybindings)"},"display-message":{name:"Display message on lint",description:"Display the number of characters changed after linting"},"lint-on-file-change":{name:"Lint on File Change",description:"When the a file is closed or a new file is swapped to, the previous file is linted."},"display-lint-on-file-change-message":{name:"Display Lint on File Change Message",description:"Displays a message when `Lint on File Change` occurs"},"folders-to-ignore":{name:"Folders to ignore",description:"Folders to ignore when linting all files or linting on save.","folder-search-placeholder-text":"Folder name","add-input-button-text":"Add another folder to ignore","delete-tooltip":"Delete"},"override-locale":{name:"Override locale",description:"Set this if you want to use a locale different from the default"},"same-as-system-locale":"Same as system ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML aliases section style",description:"The style of the YAML aliases section"},"yaml-tags-section-style":{name:"YAML tags section style",description:"The style of the YAML tags section"},"default-escape-character":{name:"Default Escape Character",description:"The default character to use to escape YAML values when a single quote and double quote are not present."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Remove Unnecessary Escape Characters when in Multi-Line Array Format",description:"Escape characters for multi-line YAML arrays don't need the same escaping as single-line arrays, so when in multi-line format remove extra escapes that are not necessary"},"number-of-dollar-signs-to-indicate-math-block":{name:"Number of Dollar Signs to Indicate Math Block",description:"The amount of dollar signs to consider the math content to be a math block instead of inline math"}},debug:{"log-level":{name:"Log Level",description:"The types of logs that will be allowed to be logged by the service. The default is ERROR."},"linter-config":{name:"Linter Config",description:"The contents of the data.json for the Linter as of the setting page loading"},"log-collection":{name:"Collect logs when linting on save and linting the current file",description:"Goes ahead and collects logs when you `Lint on save` and linting the current file. These logs can be helpful for debugging and create bug reports."},"linter-logs":{name:"Linter Logs",description:"The logs from the last `Lint on save` or the last lint current file run if enabled."}}},options:{"custom-command":{name:"Custom Commands",description:"Custom commands are Obsidian commands that get run after the linter is finished running its regular rules. This means that they do not run before the YAML timestamp logic runs, so they can cause YAML timestamp to be triggered on the next run of the linter. You may only select an Obsidian command once. **_Note that this currently only works on linting the current file._**",warning:"When selecting an option, make sure to select the option either by using the mouse or by hitting the enter key. Other selection methods may not work and only selections of an actual Obsidian command or an empty string will be saved.","add-input-button-text":"Add new command","command-search-placeholder-text":"Obsidian command","move-up-tooltip":"Move up","move-down-tooltip":"Move down","delete-tooltip":"Delete"},"custom-replace":{name:"Custom Regex Replacement",description:"Custom regex replacement can be used to replace anything that matches the find regex with the replacement value. The replace and find values will need to be valid regex values.",warning:"Use this with caution if you do not know regex. Also, please make sure that you do not use lookbehinds in your regex on iOS mobile as that will cause linting to fail since that is not supported on that platform.","add-input-button-text":"Add new regex replacement","regex-to-find-placeholder-text":"regex to find","flags-placeholder-text":"flags","regex-to-replace-placeholder-text":"regex to replace","label-placeholder-text":"label","move-up-tooltip":"Move up","move-down-tooltip":"Move down","delete-tooltip":"Delete"}},rules:{"auto-correct-common-misspellings":{name:"Auto-correct Common Misspellings",description:"Uses a dictionary of common misspellings to automatically convert them to their proper spellings. See [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) for the full list of auto-corrected words.","ignore-words":{name:"Ignore Words",description:"A comma separated list of lowercased words to ignore when auto-correcting"}},"add-blockquote-indentation-on-paste":{name:"Add Blockquote Indentation on Paste",description:"Adds blockquotes to all but the first line, when the cursor is in a blockquote/callout line during pasting"},"blockquote-style":{name:"Blockquote Style",description:"Makes sure the blockquote style is consistent.",style:{name:"Style",description:"The style used on blockquote indicators"}},"capitalize-headings":{name:"Capitalize Headings",description:"Headings should be formatted with capitalization",style:{name:"Style",description:"The style of capitalization to use"},"ignore-case-words":{name:"Ignore Cased Words",description:"Only apply title case style to words that are all lowercase"},"ignore-words":{name:"Ignore Words",description:"A comma separated list of words to ignore when capitalizing"},"lowercase-words":{name:"Lowercase Words",description:"A comma separated list of words to keep lowercase"}},"compact-yaml":{name:"Compact YAML",description:"Removes leading and trailing blank lines in the YAML front matter.","inner-new-lines":{name:"Inner New Lines",description:"Remove new lines that are not at the start or the end of the YAML"}},"consecutive-blank-lines":{name:"Consecutive blank lines",description:"There should be at most one consecutive blank line."},"convert-bullet-list-markers":{name:"Convert Bullet List Markers",description:"Converts common bullet list marker symbols to markdown list markers."},"convert-spaces-to-tabs":{name:"Convert Spaces to Tabs",description:"Converts leading spaces to tabs.",tabsize:{name:"Tabsize",description:"Number of spaces that will be converted to a tab"}},"emphasis-style":{name:"Emphasis Style",description:"Makes sure the emphasis style is consistent.",style:{name:"Style",description:"The style used to denote emphasized content"}},"empty-line-around-blockquotes":{name:"Empty Line Around Blockquotes",description:"Ensures that there is an empty line around blockquotes unless they start or end a document. **Note: an empty line is either one less level of nesting for blockquotes or a newline character.**"},"empty-line-around-code-fences":{name:"Empty Line Around Code Fences",description:"Ensures that there is an empty line around code fences unless they start or end a document."},"empty-line-around-math-blocks":{name:"Empty Line Around Math Blocks",description:"Ensures that there is an empty line around math blocks using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."},"empty-line-around-tables":{name:"Empty Line Around Tables",description:"Ensures that there is an empty line around github flavored tables unless they start or end a document."},"escape-yaml-special-characters":{name:"Escape YAML Special Characters",description:`Escapes colons with a space after them (: ), single quotes ('), and double quotes (") in YAML.`,"try-to-escape-single-line-arrays":{name:"Try to Escape Single Line Arrays",description:'Tries to escape array values assuming that an array starts with "[", ends with "]", and has items that are delimited by ",".'}},"file-name-heading":{name:"File Name Heading",description:"Inserts the file name as a H1 heading if no H1 heading exists."},"footnote-after-punctuation":{name:"Footnote after Punctuation",description:"Ensures that footnote references are placed after punctuation, not before."},"force-yaml-escape":{name:"Force YAML Escape",description:"Escapes the values for the specified YAML keys.","force-yaml-escape-keys":{name:"Force YAML Escape on Keys",description:"Uses the YAML escape character on the specified YAML keys separated by a new line character if it is not already escaped. Do not use on YAML arrays."}},"format-tags-in-yaml":{name:"Format Tags in YAML",description:"Remove Hashtags from tags in the YAML frontmatter, as they make the tags there invalid."},"format-yaml-array":{name:"Format YAML Array",description:"Allows for the formatting of regular YAML arrays as either multi-line or single-line and `tags` and `aliases` are allowed to have some Obsidian specific YAML formats. **Note: that single string to single-line goes from a single string entry to a single-line array if more than 1 entry is present. The same is true for single string to multi-line except it becomes a multi-line array.**","alias-key":{name:"Format YAML aliases section",description:"Turns on formatting for the YAML aliases section. You should not enable this option alongside the rule `YAML Title Alias` as they may not work well together or they may have different format styles selected causing unexpected results."},"tag-key":{name:"Format YAML tags section",description:"Turns on formatting for the YAML tags section."},"default-array-style":{name:"Default YAML array section style",description:"The style of other YAML arrays that are not `tags`, `aliases` or in `Force key values to be single-line arrays` and `Force key values to be multi-line arrays`"},"default-array-keys":{name:"Format YAML array sections",description:"Turns on formatting for regular YAML arrays"},"force-single-line-array-style":{name:"Force key values to be single-line arrays",description:"Forces the YAML array for the new line separated keys to be in single-line format (leave empty to disable this option)"},"force-multi-line-array-style":{name:"Force key values to be multi-line arrays",description:"Forces the YAML array for the new line separated keys to be in multi-line format (leave empty to disable this option)"}},"header-increment":{name:"Header Increment",description:"Heading levels should only increment by one level at a time","start-at-h2":{name:"Start Header Increment at Heading Level 2",description:"Makes heading level 2 the minimum heading level in a file for header increment and shifts all headings accordingly so they increment starting with a level 2 heading."}},"heading-blank-lines":{name:"Heading blank lines",description:"All headings have a blank line both before and after (except where the heading is at the beginning or end of the document).",bottom:{name:"Bottom",description:"Insert a blank line after headings"},"empty-line-after-yaml":{name:"Empty Line Between YAML and Header",description:"Keep the empty line between the YAML frontmatter and header"}},"headings-start-line":{name:"Headings Start Line",description:"Headings that do not start a line will have their preceding whitespace removed to make sure they get recognized as headers."},"insert-yaml-attributes":{name:"Insert YAML attributes",description:"Inserts the given YAML attributes into the YAML frontmatter. Put each attribute on a single line.","text-to-insert":{name:"Text to insert",description:"Text to insert into the YAML frontmatter"}},"line-break-at-document-end":{name:"Line Break at Document End",description:"Ensures that there is exactly one line break at the end of a document."},"move-footnotes-to-the-bottom":{name:"Move Footnotes to the bottom",description:"Move all footnotes to the bottom of the document."},"move-math-block-indicators-to-their-own-line":{name:"Move Math Block Indicators to Their Own Line",description:"Move all starting and ending math block indicators to their own lines using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."},"move-tags-to-yaml":{name:"Move Tags to YAML",description:"Move all tags to YAML frontmatter of the document.","how-to-handle-existing-tags":{name:"Body tag operation",description:"What to do with non-ignored tags in the body of the file once they have been moved to the frontmatter"},"tags-to-ignore":{name:"Tags to ignore",description:"The tags that will not be moved to the tags array or removed from the body content if `Remove the hashtag from tags in content body` is enabled. Each tag should be on a new line and without the `#`. **Make sure not to include the hashtag in the tag name.**"}},"no-bare-urls":{name:"No Bare URLs",description:"Encloses bare URLs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes.","no-bare-uris":{name:"No Bare URIs",description:"Attempts to enclose bare URIs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes."}},"ordered-list-style":{name:"Ordered List Style",description:"Makes sure that ordered lists follow the style specified. **Note: that 2 spaces or 1 tab is considered to be an indentation level.**","number-style":{name:"Number Style",description:"The number style used in ordered list indicators"},"list-end-style":{name:"Ordered List Indicator End Style",description:"The ending character of an ordered list indicator"}},"paragraph-blank-lines":{name:"Paragraph blank lines",description:"All paragraphs should have exactly one blank line both before and after."},"prevent-double-checklist-indicator-on-paste":{name:"Prevent Double Checklist Indicator on Paste",description:"Removes starting checklist indicator from the text to paste if the line the cursor is on in the file has a checklist indicator"},"prevent-double-list-item-indicator-on-paste":{name:"Prevent Double List Item Indicator on Paste",description:"Removes starting list indicator from the text to paste if the line the cursor is on in the file has a list indicator"},"proper-ellipsis-on-paste":{name:"Proper Ellipsis on Paste",description:"Replaces three consecutive dots with an ellipsis even if they have a space between them in the text to paste"},"proper-ellipsis":{name:"Proper Ellipsis",description:"Replaces three consecutive dots with an ellipsis."},"quote-style":{name:"Quote Style",description:"Updates the quotes in the body content to be updated to the specified single and double quote styles.","single-quote-enabled":{name:"Enable `Single Quote Style`",description:"Specifies that the selected single quote style should be used."},"single-quote-style":{name:"Single Quote Style",description:"The style of single quotes to use."},"double-quote-enabled":{name:"Enable `Double Quote Style`",description:"Specifies that the selected double quote style should be used."},"double-quote-style":{name:"Double Quote Style",description:"The style of double quotes to use."}},"re-index-footnotes":{name:"Re-Index Footnotes",description:"Re-indexes footnote keys and footnote, based on the order of occurrence. **Note: This rule does _not_ work if there is more than one footnote for a key.**"},"remove-consecutive-list-markers":{name:"Remove Consecutive List Markers",description:"Removes consecutive list markers. Useful when copy-pasting list items."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Remove Empty Lines Between List Markers and Checklists",description:"There should not be any empty lines between list markers and checklists."},"remove-empty-list-markers":{name:"Remove Empty List Markers",description:"Removes empty list markers, i.e. list items without content."},"remove-hyphenated-line-breaks":{name:"Remove Hyphenated Line Breaks",description:"Removes hyphenated line breaks. Useful when pasting text from textbooks."},"remove-hyphens-on-paste":{name:"Remove Hyphens on Paste",description:"Removes hyphens from the text to paste"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Remove Leading or Trailing Whitespace on Paste",description:"Removes any leading non-tab whitespace and all trailing whitespace for the text to paste"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Remove Leftover Footnotes from Quote on Paste",description:"Removes any leftover footnote references for the text to paste"},"remove-link-spacing":{name:"Remove link spacing",description:"Removes spacing around link text."},"remove-multiple-blank-lines-on-paste":{name:"Remove Multiple Blank Lines on Paste",description:"Condenses multiple blank lines down into one blank line for the text to paste"},"remove-multiple-spaces":{name:"Remove Multiple Spaces",description:"Removes two or more consecutive spaces. Ignores spaces at the beginning and ending of the line. "},"remove-space-around-characters":{name:"Remove Space around Characters",description:"Ensures that certain characters are not surrounded by whitespace (either single spaces or a tab). **Note: this may causes issues with markdown format in some cases.**","include-fullwidth-forms":{name:"Include Fullwidth Forms",description:'Include Fullwidth Forms Unicode block'},"include-cjk-symbols-and-punctuation":{name:"Include CJK Symbols and Punctuation",description:'Include CJK Symbols and Punctuation Unicode block'},"include-dashes":{name:"Include Dashes",description:"Include en dash (\u2013) and em dash (\u2014)"},"other-symbols":{name:"Other symbols",description:"Other symbols to include"}},"remove-space-before-or-after-characters":{name:"Remove Space Before or After Characters",description:"Removes space before the specified characters and after the specified characters. **Note: this may causes issues with markdown format in some cases.**","characters-to-remove-space-before":{name:"Remove Space Before Characters",description:"Removes space before the specified characters. **Note: using `{` or `}` in the list of characters will unexpectedly affect files as it is used in the ignore syntax behind the scenes.**"},"characters-to-remove-space-after":{name:"Remove Space After Characters",description:"Removes space after the specified characters. **Note: using `{` or `}` in the list of characters will unexpectedly affect files as it is used in the ignore syntax behind the scenes.**"}},"remove-trailing-punctuation-in-heading":{name:"Remove Trailing Punctuation in Heading",description:"Removes the specified punctuation from the end of headings making sure to ignore the semicolon at the end of [HTML entity references](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references).","punctuation-to-remove":{name:"Trailing Punctuation",description:"The trailing punctuation to remove from the headings in the file."}},"remove-yaml-keys":{name:"Remove YAML Keys",description:"Removes the YAML keys specified","yaml-keys-to-remove":{name:"YAML Keys to Remove",description:"The YAML keys to remove from the YAML frontmatter with or without colons"}},"space-after-list-markers":{name:"Space after list markers",description:"There should be a single space after list markers and checkboxes."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Space between Chinese Japanese or Korean and English or numbers",description:"Ensures that Chinese, Japanese, or Korean and English or numbers are separated by a single space. Follows these [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Strong Style",description:"Makes sure the strong style is consistent.",style:{name:"Style",description:"The style used to denote strong/bolded content"}},"trailing-spaces":{name:"Trailing spaces",description:"Removes extra spaces after every line.","twp-space-line-break":{name:"Two Space Linebreak",description:'Ignore two spaces followed by a line break ("Two Space Rule").'}},"two-spaces-between-lines-with-content":{name:"Two Spaces Between Lines with Content",description:"Makes sure that two spaces are added to the ends of lines with content continued on the next line for paragraphs, blockquotes, and list items"},"unordered-list-style":{name:"Unordered List Style",description:"Makes sure that unordered lists follow the style specified.","list-style":{name:"List item style",description:"The list item style to use in unordered lists"}},"yaml-key-sort":{name:"YAML Key Sort",description:"Sorts the YAML keys based on the order and priority specified. **Note: may remove blank lines as well.**","yaml-key-priority-sort-order":{name:"YAML Key Priority Sort Order",description:"The order in which to sort keys with one on each line where it sorts in the order found in the list"},"priority-keys-at-start-of-yaml":{name:"Priority Keys at Start of YAML",description:"YAML Key Priority Sort Order is placed at the start of the YAML frontmatter"},"yaml-sort-order-for-other-keys":{name:"YAML Sort Order for Other Keys",description:"The way in which to sort the keys that are not found in the YAML Key Priority Sort Order text area"}},"yaml-timestamp":{name:"YAML Timestamp",description:"Keep track of the date the file was last edited in the YAML front matter. Gets dates from file metadata.","date-created":{name:"Date Created",description:"Insert the file creation date"},"date-created-key":{name:"Date Created Key",description:"Which YAML key to use for creation date"},"force-retention-of-create-value":{name:"Force Date Created Key Value Retention",description:"Reuses the value in the YAML frontmatter for date created instead of the file metadata which is useful for preventing file metadata changes from causing the value to change to a different value."},"date-modified":{name:"Date Modified",description:"Insert the date the file was last modified"},"date-modified-key":{name:"Date Modified Key",description:"Which YAML key to use for modification date"},format:{name:"Format",description:"Moment date format to use (see [Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML Title Alias",description:"Inserts the title of the file into the YAML frontmatter's aliases section. Gets the title from the first H1 or filename.","preserve-existing-alias-section-style":{name:"Preserve existing aliases section style",description:"If set, the `YAML aliases section style` setting applies only to the newly created sections"},"keep-alias-that-matches-the-filename":{name:"Keep alias that matches the filename",description:"Such aliases are usually redundant"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Use the YAML key `linter-yaml-title-alias` to help with filename and heading changes",description:"If set, when the first H1 heading changes or filename if first H1 is not present changes, then the old alias stored in this key will be replaced with the new value instead of just inserting a new entry in the aliases array"}},"yaml-title":{name:"YAML Title",description:"Inserts the title of the file into the YAML frontmatter. Gets the title based on the selected mode.","title-key":{name:"Title Key",description:"Which YAML key to use for title"},mode:{name:"Mode",description:"The method to use to get the title"}}},enums:{"Title Case":"Title Case","ALL CAPS":"ALL CAPS","First letter":"First letter",".":".",")":")",ERROR:"error",TRACE:"trace",DEBUG:"debug",INFO:"info",WARN:"warn",SILENT:"silent",ascending:"ascending",lazy:"lazy",Nothing:"Nothing","Remove hashtag":"Remove hashtag","Remove whole tag":"Remove whole tag",asterisk:"asterisk",underscore:"underscore",consistent:"consistent","-":"-","*":"*","+":"+",space:"space","no space":"no space",None:"None","Ascending Alphabetical":"Ascending Alphabetical","Descending Alphabetical":"Descending Alphabetical","multi-line":"multi-line","single-line":"single-line","single string to single-line":"single string to single-line","single string to multi-line":"single string to multi-line","single string comma delimited":"single string comma delimited","single string space delimited":"single string space delimited","single-line space delimited":"single-line space delimited","first-h1":"First H1","first-h1-or-filename-if-h1-missing":"First H1 or Filename if H1 is Missing",filename:"Filename","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var id={commands:{"lint-file":{name:"Analizar este archivo","error-message":"Error Analizando un Archivooccuri\xF3 en el Archivo"},"lint-file-unless-ignored":{name:"Analizar este archivo si no es ignorado"},"lint-all-files":{name:"Analizar todos los archivos en la b\xF3veda","error-message":"Error Analizando Todos los Archivos en Archivo","success-message":"Analiz\xF3 todos los archivos","errors-message-singular":"Analiz\xF3 todos los archivos y un error ocurri\xF3.","errors-message-plural":"Analiz\xF3 todos los archivos y {NUM} errores ocurrieron","start-message":"Esto editar\xE1 todos de sus archivos y es possible que introduzca errores","submit-button-text":"Analizar Todo","submit-button-notice-text":"Analizando todos los archivos..."},"lint-all-files-in-folder":{name:"Analizar todos los archivos en esta carpeta","start-message":"Esto editar\xE1 todos de sus archivos en {FOLDER_NAME} incluyendo los archivos que existen en las subcarpetas y es possible que introduzca errores.","submit-button-text":"Analizar Todos los Archivos en {FOLDER_NAME}","submit-button-notice-text":"Analizando todos los archivos en {FOLDER_NAME}...","error-message":"Error Analizando Todos los Archivos en Carpeta en Archivo","success-message":"Analiz\xF3 los {NUM} archivos en {FOLDER_NAME}.","message-singular":"Analiz\xF3 los {NUM} archivos en {FOLDER_NAME} y un error ocurri\xF3.","message-plural":"Analiz\xF3 los {FILE_COUNT} archivos en {FOLDER_NAME} y {ERROR_COUNT} errores ocurrieron."},"paste-as-plain-text":{name:"Pegar como texto sin formato y sin modificaciones"},"lint-file-pop-up-menu-text":{name:"Analizar el archivo"},"lint-folder-pop-up-menu-text":{name:"Analizar la carpeta"}},logs:{"plugin-load":"Cargando el programa adicional","plugin-unload":"Descargando el programa adicional","folder-lint":"Analizando la carpeta ","linter-run":"Usando linter","paste-link-warning":"abort\xF3 lint de pagar porque el contento del portapapeles es un enlace y no lo hizo para evitar conflictos con otros programas adicionales que modifican lo que hace el pegar.","see-console":"Consulte la consola para obtener m\xE1s detalles.","unknown-error":"Se ha producido un error desconocido durante el linting.","moment-locale-not-found":"Intentando cambiar la zona de Moment.js a {MOMENT_LOCALE}, el resulto fue {CURRENT_LOCALE}","file-change-lint-message-start":"Analiz\xF3","pre-rules":"Las reglas antes de las reglas normales","post-rules":"las reglas despu\xE9s de las reglas normales","rule-running":"usando las reglas","custom-regex":"las reglas regex personalizadas","running-custom-regex":"Usando regex personalizada","running-custom-lint-command":"Usando comandos de lint personalizados","custom-lint-duplicate-warning":'No se puede usar el mismo comando ("{COMMAND_NAME}") dos veces como un comando de lint.',"custom-lint-error-message":"El commando de lint personalizado","disabled-text":"es inhabilitado","run-rule-text":"Usando","timing-key-not-found":"clave de ritmo '{TIMING_KEY}' no ya existe en la lista de claves de ritmo y fue ignorado por eso","milliseconds-abbreviation":"ms","invalid-date-format-error":"No se pudo analizar ni identificar el formato de la fech de creaci\xF3n `{DATE}` entonces la fecha de creaci\xF3n se dej\xF3 sola en `{FILE_NAME}`","invalid-delimiter-error-message":"El delimitador solo puede ser de un solo car\xE1cter","missing-footnote-error-message":"La nota al pie `{FOOTNOTE}` no tiene ninguna referencia de nota al pie correspondiente antes del contenido de la nota al pie y no se puede procesar. Aseg\xFArese de que todas las notas a pie de p\xE1gina tengan una referencia correspondiente antes del contenido de la nota al pie de p\xE1gina.","too-many-footnotes-error-message":"La clave de nota al pie '{FOOTNOTE_KEY}' tiene m\xE1s de 1 nota al pie que hace referencia a ella. Actualice las notas al pie para que solo haya una nota al pie por clave de nota al pie.","wrapper-yaml-error":"hubo un error en el YAML: {ERROR_MESSAGE}","wrapper-unknown-error":"huno un error desconocido: {ERROR_MESSAGE}","uneven-amount-of-quotes":"Las instancias de la cita `{QUOTE}` en el archivo no son pares, por lo que no podemos convertir las comillas rectas en comillas tipogr\xE1ficas."},"notice-text":{"empty-clipboard":"No hay contenido del portapapeles.","characters-added":"Caracteres a\xF1adidos","characters-removed":"Caracteres eliminados"},"all-rules-option":"Todo","linter-title":"Linter","empty-search-results-text":"No hay configuraci\xF3n que coincida con la b\xFAsqueda","warning-text":"Advertencia","file-backup-text":"Aseg\xFArese de haber realizado una copia de seguridad de sus archivos.","copy-aria-label":"Copiar",tabs:{names:{general:"General",custom:"Personalizado",yaml:"YAML",heading:"Encabezado",content:"Contenido",footnote:"Notas al pie",spacing:"Espacio en blanco",paste:"Pegar",debug:"Depurar"},"default-search-bar-text":"Buscar en todos los ajustes",general:{"lint-on-save":{name:"Analizar en guardar",description:"Analizar el archivo en el guardado manual (cuando se presiona `Ctrl + S` o cuando se ejecuta `:w` mientras se usan combinaciones de claves de vim)"},"display-message":{name:"Mostrar mensaje en analizar",description:"Mostrar el n\xFAmero de caracteres modificados despu\xE9s de analizar"},"folders-to-ignore":{name:"Carpetas para omitir",description:"Carpetas que se deben omitir al analizar todos los archivos o al guardar en l\xEDnea.","folder-search-placeholder-text":"El nombre de la carpeta","add-input-button-text":"Agregar otra carpeta para ignorar","delete-tooltip":"Borrar"},"lint-on-file-change":{name:"Analizar archivo en cambiar",description:"Cuando se cierra un archivo o se cambia a un nuevo archivo, el archivo anterior se analiza."},"display-lint-on-file-change-message":{name:"Mostrar mensaje en cambiar el archivo",description:"Muestra un mensaje cuando se produce `Analizar archivo en cambiar`"},"override-locale":{name:"Anular configuraci\xF3n regional",description:"Establezca esta opci\xF3n si desea utilizar una configuraci\xF3n regional diferente de la predeterminada"},"same-as-system-locale":"Igual que el sistema ({SYS_LOCALE})","yaml-aliases-section-style":{name:"Estilo de secci\xF3n de alias de YAML",description:"El estilo de la secci\xF3n de alias de YAML"},"yaml-tags-section-style":{name:"Estilo de secci\xF3n de etiquetas de YAML",description:"El estilo de la secci\xF3n de etiquetas de YAML"},"default-escape-character":{name:"Car\xE1cter de escape predeterminado",description:"El car\xE1cter predeterminado que se va a usar para escapar de los valores YAML cuando no hay comillas simples y comillas dobles."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Eliminaci\xF3n de caracteres de escape innecesarios cuando est\xE1 en formato de matriz multil\xEDnea",description:"Los caracteres de escape para matrices de YAML multil\xEDnea no necesitan el mismo escape que las matrices de una sola l\xEDnea, por lo que cuando est\xE1n en formato multil\xEDnea, elimine los escapes adicionales que no son necesarios"},"number-of-dollar-signs-to-indicate-math-block":{name:"N\xFAmero de signos de d\xF3lar para indicar el bloque matem\xE1tico",description:"La cantidad de signos de d\xF3lar para considerar el contenido matem\xE1tico como un bloque matem\xE1tico en lugar de matem\xE1ticas en l\xEDnea"}},debug:{"log-level":{name:"Nivel de registro",description:"Los tipos de registros que el servicio permitir\xE1 registrar. El valor predeterminado es error."},"linter-config":{name:"Configuraci\xF3n de Linter",description:"El contenido del archivo data.json para Linter a partir de la carga de la p\xE1gina de configuraci\xF3n"},"log-collection":{name:"Recopilar registros al activar y desactivar el archivo actual",description:"Contin\xFAa y recopila registros cuando `Analizar en guardar` y analizar el archivo actual. Estos registros pueden ser \xFAtiles para depurar y crear informes de errores."},"linter-logs":{name:"Registros de Linter",description:"Los registros del \xFAltimo `Analizar en guardar` o del \xFAltimo archivo actual de analizar se ejecutan si est\xE1n habilitados."}}},options:{"custom-command":{name:"Comandos personalizados",description:"Los comandos personalizados son comandos de Obsidian que se ejecutan despu\xE9s de que Linter termina de ejecutar sus reglas regulares. Esto significa que no se ejecutan antes de que se ejecute la l\xF3gica de marca de tiempo YAML, por lo que pueden hacer que la marca de tiempo de YAML se active en la siguiente ejecuci\xF3n del Linter. Solo puede seleccionar un comando de Obsidian una vez. **_Note que esto actualmente solo funciona para analizar el archivo actual._**",warning:"Al seleccionar una opci\xF3n, aseg\xFArese de seleccionar la opci\xF3n usando el rat\xF3n o presionando la clave Intro. Es posible que otros m\xE9todos de selecci\xF3n no funcionen y solo se guardar\xE1n las selecciones de un comando de Obsidian real o una cadena vac\xEDa.","add-input-button-text":"Agregar nuevo comando","command-search-placeholder-text":"Comando de Obsidian","move-up-tooltip":"Desplazar hacia arriba","move-down-tooltip":"Desplazar hacia abajo","delete-tooltip":"Borrar"},"custom-replace":{name:"Reemplazo regex personalizado",description:"El reemplazo de regex personalizado se puede usar para reemplazar cualquier cosa que coincida con el valor de b\xFAsqueda de regex con el valor de reemplazo. Los valores de reemplazo y b\xFAsqueda deber\xE1n ser valores regex v\xE1lidos.",warning:"Use esto con precauci\xF3n si no conoce regex. Adem\xE1s, aseg\xFArese de no usar lookbehinds en su regex en dispositivos m\xF3viles iOS, ya que eso har\xE1 que falle analizar ya que no es compatible con esa plataforma.","add-input-button-text":"Agregar nuevo reemplazo de regex","regex-to-find-placeholder-text":"Regex para encontrar","flags-placeholder-text":"Marcas","regex-to-replace-placeholder-text":"Regex para reemplazar","label-placeholder-text":"etiqueta","move-up-tooltip":"Desplazar hacia arriba","move-down-tooltip":"Desplazar hacia abajo","delete-tooltip":"Borrar"}},rules:{"auto-correct-common-misspellings":{name:"Correcci\xF3n autom\xE1tica de errores ortogr\xE1ficos comunes",description:"Utiliza un diccionario de errores ortogr\xE1ficos comunes para convertirlos autom\xE1ticamente a su ortograf\xEDa correcta. Consulte [mapa de autocorrecci\xF3n](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) para obtener la lista completa de palabras corregidas autom\xE1ticamente.","ignore-words":{name:"Ignorar palabras",description:"Una lista separada por comas de palabras en min\xFAsculas para ignorar al corregir autom\xE1ticamente"}},"add-blockquote-indentation-on-paste":{name:"Agregar sangr\xEDa de blockquote en pegar",description:"Agrega blockquotes a todas menos a la primera l\xEDnea, cuando el cursor est\xE1 en una l\xEDnea blockquote/callout durante el pegado"},"blockquote-style":{name:"Estilo de cotizaci\xF3n en bloque",description:"Se asegura de que el estilo de la cita en bloque sea consistente.",style:{name:"Estilo",description:"El estilo utilizado en los indicadores de cotizaci\xF3n en bloque"}},"capitalize-headings":{name:"Poner may\xFAsculas en los encabezados",description:"Los encabezados deben estar formateados con may\xFAsculas",style:{name:"Estilo",description:"El estilo de may\xFAsculas que se va a utilizar"},"ignore-case-words":{name:"Ignorar palabras en may\xFAsculas y min\xFAsculas",description:"Solo aplique el estilo de may\xFAsculas y min\xFAsculas a las palabras que est\xE9n todas en min\xFAsculas"},"ignore-words":{name:"Ignorar palabras",description:"Una lista de palabras separadas por comas para ignorar al poner en may\xFAsculas"},"lowercase-words":{name:"Palabras en min\xFAsculas",description:"Una lista de palabras separadas por comas para mantener min\xFAsculas"}},"compact-yaml":{name:"YAML compacto",description:"Elimina las l\xEDneas en blanco iniciales y finales en la materia frontal de YAML.","inner-new-lines":{name:"Nuevas l\xEDneas internas",description:"Quitar nuevas l\xEDneas que no est\xE9n al principio o al final del YAML"}},"consecutive-blank-lines":{name:"L\xEDneas en blanco consecutivas",description:"Debe haber como m\xE1ximo una l\xEDnea en blanco consecutiva."},"convert-bullet-list-markers":{name:"Convertir marcadores de lista de vi\xF1etas",description:"Convierte s\xEDmbolos de marcador de lista de vi\xF1etas comunes en marcadores de lista de rebajas."},"convert-spaces-to-tabs":{name:"Convertir espacios en pesta\xF1as",description:"Convierte los espacios iniciales en pesta\xF1as.",tabsize:{name:"Tama\xF1o de la pesta\xF1a",description:"N\xFAmero de espacios que se convertir\xE1n en una pesta\xF1a"}},"emphasis-style":{name:"Estilo de \xE9nfasis",description:"Se asegura de que el estilo de \xE9nfasis sea consistente.",style:{name:"Estilo",description:"El estilo utilizado para denotar el contenido enfatizado"}},"empty-line-around-blockquotes":{name:"L\xEDnea vac\xEDa alrededor de blockquotes",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de blockquotes a menos que inicien o finalicen un documento. **Tenga en cuenta que una l\xEDnea vac\xEDa es un nivel menos de anidamiento para blockquotes o un car\xE1cter de nueva l\xEDnea.**"},"empty-line-around-code-fences":{name:"L\xEDnea vac\xEDa alrededor de las vallas de c\xF3digo",description:"Garantiza que haya una l\xEDnea vac\xEDa alrededor de las vallas de c\xF3digo a menos que inicien o finalicen un documento."},"empty-line-around-math-blocks":{name:"L\xEDnea vac\xEDa alrededor de los bloques matem\xE1ticos",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de los bloques matem\xE1ticos usando `N\xFAmero de signos de d\xF3lar para indicar un bloque matem\xE1tico` para determinar cu\xE1ntos signos de d\xF3lar indica un bloque matem\xE1tico para matem\xE1ticas de una sola l\xEDnea."},"empty-line-around-tables":{name:"L\xEDnea vac\xEDa alrededor de las tablas",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de las tablas con sabor a github a menos que inicien o finalicen un documento."},"escape-yaml-special-characters":{name:"Evitar los caracteres especiales de YAML",description:`Escapa dos puntos con un espacio despu\xE9s de ellos (:), comillas simples (') y comillas dobles (") en YAML.`,"try-to-escape-single-line-arrays":{name:"Intente escapar las matrices de una sola l\xEDnea",description:'Intenta escapar de los valores de matriz suponiendo que una matriz comienza con "[", termina con "]" y tiene elementos que est\xE1n delimitados por ",".'}},"file-name-heading":{name:"Encabezado de nombre de archivo",description:"Inserta el nombre de archivo como un encabezado H1 si no existe ning\xFAn encabezado H1."},"footnote-after-punctuation":{name:"Nota al pie despu\xE9s de la puntuaci\xF3n",description:"Asegura que las referencias de notas al pie se coloquen despu\xE9s de la puntuaci\xF3n, no antes."},"force-yaml-escape":{name:"Forzar escape de YAML",description:"Escapa los valores de las claves YAML especificadas.","force-yaml-escape-keys":{name:"Forzar escape de YAML en las claves",description:"Utiliza el car\xE1cter de escape de YAML en las claves de YAML especificadas separadas por un nuevo car\xE1cter de l\xEDnea si a\xFAn no est\xE1 escapado. No lo use en matrices de YAML."}},"format-tags-in-yaml":{name:"Dar formato a las etiquetas de formato en YAML",description:"Elimine los hashtags de las etiquetas en el frontmatter del YAML, ya que hacen que las etiquetas no sean v\xE1lidas."},"format-yaml-array":{name:"Dar formato a las matrices de YAML",description:"Permite el formato de matrices regulares de YAML como multil\xEDnea o de una sola l\xEDnea y las `etiquetas` y `alias` pueden tener algunos formatos espec\xEDficos de YAML de Obsidian. Tenga en cuenta que una sola cadena a una sola l\xEDnea pasa de una sola entrada de cadena a una matriz de una sola l\xEDnea si hay m\xE1s de 1 entrada presente. Lo mismo es cierto para una sola cadena a multil\xEDnea, excepto que se convierte en una matriz multil\xEDnea.","alias-key":{name:"Dar formato a la secci\xF3n de alias de YAML",description:"Activa el formato para la secci\xF3n de alias YAML. No debe habilitar esta opci\xF3n junto con la regla `Alias de t\xEDtulo YAML`, ya que es posible que no funcionen bien juntos o que tengan diferentes estilos de formato seleccionados que causen resultados inesperados."},"tag-key":{name:"Dar formato a la secci\xF3n de etiquetas de YAML",description:"Activa el formato para la secci\xF3n de etiquetas de YAML."},"default-array-style":{name:"Estilo de secci\xF3n de matriz predeterminado de YAML",description:"El estilo de otras matrices de YAML que no son `etiquetas`, `alias` o en `Forzar valores de clave para que sean matrices de una sola l\xEDnea` y `Forzar valores de clave para que sean matrices multil\xEDnea`"},"default-array-keys":{name:"Dar formato a las secciones de matrices de YAML",description:"Activa el formato para matrices normales de YAML"},"force-single-line-array-style":{name:"Forzar que los valores de clave sean matrices de una sola l\xEDnea",description:"Fuerza la matriz de YAML para que las nuevas claves separadas por l\xEDnea est\xE9n en formato de una sola l\xEDnea (deje vac\xEDo para deshabilitar esta opci\xF3n)"},"force-multi-line-array-style":{name:"Forzar que los valores de las claves sean matrices multil\xEDneas",description:"Fuerza la matriz de YAML para que las nuevas claves separadas por l\xEDnea est\xE9n en formato multil\xEDnea (deje vac\xEDa para deshabilitar esta opci\xF3n)"}},"header-increment":{name:"Incremento de encabezado",description:"Los niveles de encabezado solo deben aumentar en un nivel a la vez","start-at-h2":{name:"Iniciar el incremento de encabezado en el nivel de encabezado 2",description:"Hace que el nivel de encabezado 2 sea el nivel de t\xEDtulo m\xEDnimo en un archivo para el incremento de encabezado y desplaza todos los encabezados en consecuencia para que se incrementen a partir de un encabezado de nivel 2."}},"heading-blank-lines":{name:"L\xEDneas en blanco de encabezado",description:"Todos los encabezados tienen una l\xEDnea en blanco antes y despu\xE9s (excepto cuando el encabezado est\xE1 al principio o al final del documento).",bottom:{name:"Abajo",description:"Insertar una l\xEDnea en blanco despu\xE9s de los encabezados"},"empty-line-after-yaml":{name:"L\xEDnea vac\xEDa entre el YAML y el encabezado",description:"Mantenga la l\xEDnea vac\xEDa entre el frontmatter del YAML y el encabezado"}},"headings-start-line":{name:"Comenzar los encabezados al principio de la l\xEDnea",description:"Los encabezados que no inician una l\xEDnea tendr\xE1n su espacio en blanco anterior eliminado para asegurarse de que se reconozcan como encabezados."},"insert-yaml-attributes":{name:"Insertar atributos de YAML",description:"Inserta los atributos especificados de YAML en el frontmatter del YAML. Coloque cada atributo en una sola l\xEDnea.","text-to-insert":{name:"Texto a insertar",description:"Texto para insertar en el frontmatter del YAML"}},"line-break-at-document-end":{name:"Salto de l\xEDnea al final del documento",description:"Asegura que haya exactamente un salto de l\xEDnea al final de un documento."},"move-footnotes-to-the-bottom":{name:"Mover las notas al pie a la parte inferior",description:"Mueva todas las notas al pie de p\xE1gina a la parte inferior del documento."},"move-math-block-indicators-to-their-own-line":{name:"Mover los indicadores de bloques matem\xE1ticos a su propia l\xEDnea",description:"Mueva todos los indicadores de bloques matem\xE1ticos iniciales y finales a sus propias l\xEDneas usando `N\xFAmero de signos de d\xF3lar para indicar un bloque matem\xE1tico` para determinar cu\xE1ntos signos de d\xF3lar indica un bloque matem\xE1tico para matem\xE1ticas de una sola l\xEDnea."},"move-tags-to-yaml":{name:"Mover etiquetas a YAML",description:"Mueva todas las etiquetas al frontmatter del YAML del documento.","how-to-handle-existing-tags":{name:"Operaci\xF3n de etiqueta corporal",description:"Lo qur se debe hacer con las etiquetas no ignoradas en el cuerpo del archivo una vez que se han movido al frontmatter"},"tags-to-ignore":{name:"Etiquetas para omitir",description:"Las etiquetas que no se mover\xE1n a la matriz de etiquetas ni se eliminar\xE1n del contenido del cuerpo si est\xE1 habilitado `Eliminar el hashtag de las etiquetas en el cuerpo del contenido`. Cada etiqueta debe estar en una nueva l\xEDnea y sin el `#`. **Aseg\xFArese de no incluir el hashtag en el nombre de la etiqueta.**"}},"no-bare-urls":{name:"Sin URL desnuda",description:"Encierra las direcciones URL desnudas con corchetes angulares, excepto cuando est\xE1n encerradas en marcas traseras, llaves cuadradas o comillas simples o dobles.","no-bare-uris":{name:"Sin URI desnuda",description:"Encierra las direcciones URI desnudas con corchetes angulares, excepto cuando est\xE1n encerradas en marcas traseras, llaves cuadradas o comillas simples o dobles."}},"ordered-list-style":{name:"Estilo de lista ordenada",description:"Se asegura de que las listas ordenadas siguen el estilo especificado. Tenga en cuenta que 2 espacios o 1 tabulaci\xF3n se considera un nivel de sangr\xEDa.","number-style":{name:"Estilo num\xE9rico",description:"El estilo num\xE9rico utilizado en los indicadores de lista ordenada"},"list-end-style":{name:"Estilo final del indicador de lista ordenada",description:"El car\xE1cter final de un indicador de lista ordenada"}},"paragraph-blank-lines":{name:"L\xEDneas en blanco del p\xE1rrafo",description:"Todos los p\xE1rrafos deben tener exactamente una l\xEDnea en blanco antes y despu\xE9s."},"prevent-double-checklist-indicator-on-paste":{name:"Evitar el indicador de doble lista de verificaci\xF3n en pegar",description:"Elimina el indicador de lista de verificaci\xF3n inicial del texto para pegar si la l\xEDnea en la que se encuentra el cursor en el archivo tiene un indicador de lista de verificaci\xF3n"},"prevent-double-list-item-indicator-on-paste":{name:"Prevenir el indicador de elemento de lista doble al pegar",description:"Elimina el indicador de lista inicial del texto para pegar si la l\xEDnea en la que se encuentra el cursor en el archivo tiene un indicador de lista"},"proper-ellipsis-on-paste":{name:"Puntos suspensivos adecuados al pegar",description:"Reemplaza tres puntos consecutivos por puntos suspensivos aunque tengan un espacio entre ellos en el texto a pegar"},"proper-ellipsis":{name:"Puntos suspensivos propios",description:"Reemplaza tres puntos consecutivos con puntos suspensivos."},"quote-style":{name:"Estilo de cotizaci\xF3n",description:"Actualiza las comillas en el contenido del cuerpo para que se actualicen a los estilos de comillas simples y dobles especificados.","single-quote-enabled":{name:"Habilitar `Estilo de comillas simples`",description:"Especifica que se debe utilizar el estilo de comillas simples seleccionado."},"single-quote-style":{name:"Estilo de comillas simples",description:"El estilo de las comillas simples a utilizar."},"double-quote-enabled":{name:"Habilitar `Estilo de comillas dobles`",description:"Especifica que se debe utilizar el estilo de comillas dobles seleccionado."},"double-quote-style":{name:"Estilo de comillas dobles",description:"El estilo de comillas dobles a utilizar."}},"re-index-footnotes":{name:"Volver a indexar notas al pie",description:"Vuelve a indexar las notas al pie de p\xE1gina y las notas al pie, seg\xFAn el orden de aparici\xF3n (NOTA: esta regla *no* funciona si hay m\xE1s de una nota al pie para una clave)."},"remove-consecutive-list-markers":{name:"Eliminar marcadores de lista consecutiva",description:"Elimina marcadores de lista consecutivos. \xDAtil al copiar y pegar elementos de la lista."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Eliminar l\xEDneas vac\xEDas entre marcadores de lista y listas de verificaci\xF3n",description:"No debe haber l\xEDneas vac\xEDas entre los marcadores de lista y las listas de verificaci\xF3n."},"remove-empty-list-markers":{name:"Eliminar marcadores de lista vac\xEDa",description:"Elimina marcadores de listas vac\xEDas, es decir, lista de elementos sin contenido."},"remove-hyphenated-line-breaks":{name:"Eliminar saltos de l\xEDnea con gui\xF3n",description:"Elimina los saltos de l\xEDnea con gui\xF3n. \xDAtil al pegar texto de libros de texto."},"remove-hyphens-on-paste":{name:"Eliminar guiones al pegar",description:"Elimina guiones del texto al pegar"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Eliminar espacios en blanco iniciales o finales al pegar",description:"Elimina cualquier espacio en blanco inicial que no sea una pesta\xF1a y todos los espacios en blanco finales para que el texto se pegue"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Eliminar las notas al pie sobrantes de la cita al pegar",description:"Elimina las referencias de notas al pie sobrantes para que el texto se pegue"},"remove-link-spacing":{name:"Quitar el espacio entre enlaces",description:"Elimina el espacio alrededor del texto del enlace."},"remove-multiple-blank-lines-on-paste":{name:"Eliminar varias l\xEDneas en blanco al pegar",description:"Condensa varias l\xEDneas en blanco en una l\xEDnea en blanco para que el texto se pegue"},"remove-multiple-spaces":{name:"Quitar varios espacios",description:"Elimina dos o m\xE1s espacios consecutivos. Ignora los espacios al principio y al final de la l\xEDnea."},"remove-space-around-characters":{name:"Quitar el espacio alrededor de los caracteres",description:"Garantiza que determinados caracteres no est\xE9n rodeados de espacios en blanco (ya sean espacios individuales o tabulaciones). Tenga en cuenta que esto puede causar problemas con el formato de descuento en algunos casos.","include-fullwidth-forms":{name:"Incluir formularios de ancho completo",description:'Incluir bloque Unicode de formularios de ancho completo'},"include-cjk-symbols-and-punctuation":{name:"Incluir s\xEDmbolos de CJK y puntuaci\xF3n",description:'Incluir Bloque Unicode de s\xEDmbolos y puntuaci\xF3n de CJK'},"include-dashes":{name:"Incluir guiones",description:"Incluir gui\xF3n corto (\u2013) y gui\xF3n largo (\u2014)"},"other-symbols":{name:"Otros s\xEDmbolos",description:"Otros s\xEDmbolos para incluir"}},"remove-space-before-or-after-characters":{name:"Quitar el espacio antes o despu\xE9s de los caracteres",description:"Elimina el espacio antes de los caracteres especificados y despu\xE9s de los caracteres especificados. Tenga en cuenta que esto puede causar problemas con el formato de descuento en algunos casos.","characters-to-remove-space-before":{name:"Eliminar espacio antes de los caracteres",description:"Elimina el espacio antes de los caracteres especificados. **Nota: el uso de `{` o `}` en la lista de caracteres afectar\xE1 inesperadamente a los archivos, ya que se usa en la sintaxis de ignorar en segundo plano.**"},"characters-to-remove-space-after":{name:"Eliminar espacio despu\xE9s de los caracteres",description:"Elimina el espacio despu\xE9s de los caracteres especificados. **Nota: el uso de `{` o `}` en la lista de caracteres afectar\xE1 inesperadamente a los archivos, ya que se usa en la sintaxis de ignorar en segundo plano.**"}},"remove-trailing-punctuation-in-heading":{name:"Eliminar la puntuaci\xF3n final en el encabezado",description:"Elimina la puntuaci\xF3n especificada al final de los encabezados, asegur\xE1ndose de ignorar el punto y coma al final de [referencias de entidades de HTML](https://es.wikipedia.org/wiki/Anexo:Referencias_a_entidades_de_caracteres_XML_y_HTML).","punctuation-to-remove":{name:"Puntuaci\xF3n final",description:"La puntuaci\xF3n final que se eliminar\xE1 de los encabezados del archivo."}},"remove-yaml-keys":{name:"Eliminar claves de YAML",description:"Elimina las claves especificadas de YAML","yaml-keys-to-remove":{name:"Claves de YAML para eliminar",description:"Las claves de YAML para eliminar del frontmatter del YAML con o sin dos puntos"}},"space-after-list-markers":{name:"Espacio despu\xE9s de los marcadores de lista",description:"Debe haber un solo espacio despu\xE9s de los marcadores de lista y las casillas de verificaci\xF3n."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Espacio entre chino japon\xE9s o coreano e ingl\xE9s o n\xFAmeros",description:"Garantiza que el chino, el japon\xE9s o el coreano y el ingl\xE9s o los n\xFAmeros est\xE9n separados por un solo espacio. Sigue estas [directrices](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Estilo fuerte",description:"Se asegura de que el estilo fuerte sea consistente.",style:{name:"Estilo",description:"El estilo utilizado para denotar contenido fuerte/en negrita"}},"trailing-spaces":{name:"Espacios finales",description:"Elimina espacios adicionales despu\xE9s de cada l\xEDnea.","twp-space-line-break":{name:"Salto de l\xEDnea de dos espacios",description:'Ignore dos espacios seguidos de un salto de l\xEDnea ("Regla de dos espacios").'}},"two-spaces-between-lines-with-content":{name:"Dos espacios entre l\xEDneas con contenido",description:"Se asegura de que se agreguen dos espacios al final de las l\xEDneas con contenido que contin\xFAa en la siguiente l\xEDnea para p\xE1rrafos, comillas y elementos de lista"},"unordered-list-style":{name:"Estilo de lista desordenada",description:"Se asegura de que las listas desordenadas sigan el estilo especificado.","list-style":{name:"Estilo de elemento de lista",description:"El estilo de elemento de lista para usar en listas desordenadas"}},"yaml-key-sort":{name:"Clasificaci\xF3n de clave de YAML",description:"Ordena las claves de YAML seg\xFAn el orden y la prioridad especificados. Nota: tambi\xE9n puede eliminar las l\xEDneas en blanco.","yaml-key-priority-sort-order":{name:"Orden de clasificaci\xF3n de prioridad de clave de YAML",description:"El orden en el que se ordenan las claves con una en cada l\xEDnea donde se ordena en el orden que se encuentra en la lista"},"priority-keys-at-start-of-yaml":{name:"Claves de prioridad al inicio del YAML",description:"El orden de clasificaci\xF3n de prioridad clave de YAML se coloca al comienzo del frontmatter del YAML"},"yaml-sort-order-for-other-keys":{name:"Orden de clasificaci\xF3n de YAML para otras claves",description:"La forma en que ordenar las claves que no se encuentran en el \xE1rea de texto `Orden de clasificaci\xF3n de prioridad de clave de YAML`"}},"yaml-timestamp":{name:"Marca de tiempo de YAML",description:"Lleve un registro de la fecha en que se edit\xF3 el archivo por \xFAltima vez en el frente del YAML. Obtiene las fechas de los metadatos del archivo.","date-created":{name:"Fecha de creaci\xF3n",description:"Inserte la fecha de creaci\xF3n del archivo"},"date-created-key":{name:"Clave de fecha de creaci\xF3n",description:"La clave de YAML para usar para la fecha de creaci\xF3n"},"force-retention-of-create-value":{name:"Forzar la fecha de creaci\xF3n de la retenci\xF3n del valor clave",description:"Reutiliza el valor en el frontmatter del YAML para la fecha de creaci\xF3n en lugar de los metadatos del archivo, lo que es \xFAtil para evitar que los cambios en los metadatos del archivo provoquen que el valor cambie a un valor diferente."},"date-modified":{name:"Fecha modificada",description:"Inserte la fecha en que se modific\xF3 el archivo por \xFAltima vez"},"date-modified-key":{name:"Clave de fecha modificada",description:"La clave de YAML para usar para la fecha de modificaci\xF3n"},format:{name:"Formato",description:"Formato de fecha de Moment a usar (ver [Opciones de formato de Moment](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"Alias de t\xEDtulo de YAML",description:"Inserta el t\xEDtulo del archivo en la secci\xF3n de alias de YAML frontmatter. Obtiene el t\xEDtulo del primer H1 o nombre de archivo.","preserve-existing-alias-section-style":{name:"Conservar el estilo de secci\xF3n de alias existente",description:"Si se establece, la configuraci\xF3n `Estilo de secci\xF3n de alias de YAML` se aplica solo a las secciones reci\xE9n creadas"},"keep-alias-that-matches-the-filename":{name:"Mantenga el alias que coincida con el nombre del archivo",description:"Estos alias suelen ser redundantes."},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Use la clave de YAML `linter-yaml-title-alias` para ayudar con los cambios de nombre de archivo y encabezado",description:"Si se establece, cuando cambia el primer encabezado H1 o cambia el nombre de archivo si el primer H1 no est\xE1 presente, el alias anterior almacenado en esta clave se reemplazar\xE1 con el nuevo valor en lugar de simplemente insertar una nueva entrada en la matriz de alias."}},"yaml-title":{name:"T\xEDtulo de YAML",description:"Inserta el t\xEDtulo del archivo en el frontmatter de YAML. Obtiene el t\xEDtulo seg\xFAn el modo seleccionado.","title-key":{name:"Clave de t\xEDtulo",description:"La clave de YAML para usar para el t\xEDtulo"},mode:{name:"Modo",description:"El m\xE9todo a utilizar para obtener el t\xEDtulo"}}},enums:{"Title Case":"Titulo del Caso","ALL CAPS":"TODO MAY\xDASCULAS","First letter":"Primera letra",".":".",")":")",ERROR:"error",TRACE:"trazar",DEBUG:"depurar",INFO:"informaci\xF3n",WARN:"advertencia",SILENT:"silencio",ascending:"ascendente",lazy:"perezoso",Nothing:"nada","Remove hashtag":"Remove hashtag","Remove whole tag":"Remove whole tag",asterisk:"asterisco",underscore:"guion bajo",consistent:"congruente","-":"-","*":"*","+":"+",space:"espacio","no space":"sin espacio",None:"nada","Ascending Alphabetical":"Ascendente alfab\xE9tico","Descending Alphabetical":"Descendiente alfab\xE9tico","multi-line":"multil\xEDnea","single-line":"linea sola","single string to single-line":"una sola cadena a una sola l\xEDnea","single string to multi-line":"cadena \xFAnica a multil\xEDnea","single string comma delimited":"cadena \xFAnica delimitada por comas","single string space delimited":"espacio de una sola cadena delimitado","single-line space delimited":"espacio de una sola l\xEDnea delimitado","first-h1":"primer encabezado de nivel 1","first-h1-or-filename-if-h1-missing":"primer encabezado de nivel 1 o nombre de archivo si falta el encabezado de primer nivel 1",filename:"nombre del archivo","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var td={};var nd={};var rd={};var ad={};var sd={};var od={};var ld={};var cd={};var dd={};var ud={};var pd={};var md={};var gd={};var hd={};var ka={commands:{"lint-file":{name:"Ge\xE7erli dosyay\u0131 lintle","error-message":"Dosyada Lintleme Hatas\u0131"},"lint-file-unless-ignored":{name:"Yoksay\u0131lmad\u0131k\xE7a ge\xE7erli dosyay\u0131 lintle"},"lint-all-files":{name:"Kasadaki t\xFCm dosyalar\u0131 lintle","error-message":"Dosyada T\xFCm Dosyalar\u0131 Lintleme Hatas\u0131","success-message":"T\xFCm dosyalar lintlendi","errors-message-singular":"T\xFCm dosyalar lintlendi ve 1 hata vard\u0131.","errors-message-plural":"T\xFCm dosyalar lintlendi ve {NUM} hata vard\u0131.","start-message":"Bu, t\xFCm dosyalar\u0131n\u0131z\u0131 d\xFCzenler ve hatalara yol a\xE7abilir.","submit-button-text":"T\xFCm\xFCn\xFC Lintle","submit-button-notice-text":"T\xFCm dosyalar lintleniyor..."},"lint-all-files-in-folder":{name:"Ge\xE7erli klas\xF6rdeki t\xFCm dosyalar\u0131 lintle","start-message":"Bu, {FOLDER_NAME} dahilindeki t\xFCm dosyalar\u0131n\u0131z\u0131 ve alt klas\xF6rlerini d\xFCzenler ve hatalara yol a\xE7abilir.","submit-button-text":"{FOLDER_NAME} i\xE7indeki T\xFCm Dosyalar\u0131 Lintle","submit-button-notice-text":"{FOLDER_NAME} i\xE7indeki t\xFCm dosyalar lintleniyor...","error-message":"Klas\xF6rdeki T\xFCm Dosyalar\u0131 Lintleme Hatas\u0131 Dosyada","success-message":"{FOLDER_NAME} i\xE7indeki t\xFCm {NUM} dosya lintlendi.","message-singular":"{FOLDER_NAME} i\xE7indeki t\xFCm {NUM} dosya lintlendi ve 1 hata vard\u0131.","message-plural":"{FOLDER_NAME} i\xE7indeki t\xFCm {FILE_COUNT} dosya lintlendi ve {ERROR_COUNT} hata vard\u0131."},"paste-as-plain-text":{name:"D\xFCz Metin Olarak & Modifikasyonsuz Yap\u0131\u015Ft\u0131r"},"lint-file-pop-up-menu-text":{name:"Dosyay\u0131 lintle"},"lint-folder-pop-up-menu-text":{name:"Klas\xF6r\xFC lintle"}},logs:{"plugin-load":"Eklenti y\xFCkleniyor","plugin-unload":"Eklenti kald\u0131r\u0131l\u0131yor","folder-lint":"Klas\xF6r lintleniyor ","linter-run":"Lintleme \xE7al\u0131\u015Ft\u0131r\u0131l\u0131yor","paste-link-warning":"pano i\xE7eri\u011Fi bir link oldu\u011Fu ve yap\u0131\u015Ft\u0131rmay\u0131 de\u011Fi\u015Ftiren di\u011Fer eklentilerle \xE7ak\u0131\u015Fmay\u0131 \xF6nlemek i\xE7in lintleme yap\u0131\u015Ft\u0131rmas\u0131 iptal edildi.","see-console":"Daha fazla detay i\xE7in konsolu kontrol edin.","unknown-error":"Lintleme s\u0131ras\u0131nda bilinmeyen bir hata olu\u015Ftu.","moment-locale-not-found":"Moment.js yerelini {MOMENT_LOCALE} olarak de\u011Fi\u015Ftirmeye \xE7al\u0131\u015F\u0131yor, elde edilen {CURRENT_LOCALE}","file-change-lint-message-start":"Lintlendi","pre-rules":"normal kurallardan \xF6nceki kurallar","post-rules":"normal kurallardan sonraki kurallar","rule-running":"kurallar \xE7al\u0131\u015Ft\u0131r\u0131l\u0131yor","custom-regex":"\xF6zel regex kurallar\u0131","running-custom-regex":"\xD6zel Regex \xC7al\u0131\u015Ft\u0131r\u0131l\u0131yor","running-custom-lint-command":"\xD6zel Lint Komutlar\u0131 \xC7al\u0131\u015Ft\u0131r\u0131l\u0131yor","custom-lint-duplicate-warning":'Ayn\u0131 komutu ("{COMMAND_NAME}") \xF6zel bir lint kural\u0131 olarak iki kez \xE7al\u0131\u015Ft\u0131ramazs\u0131n\u0131z.',"custom-lint-error-message":"\xD6zel Lint Komutu Hatas\u0131","disabled-text":"devre d\u0131\u015F\u0131","run-rule-text":"\xC7al\u0131\u015Ft\u0131r\u0131l\u0131yor","timing-key-not-found":"'{TIMING_KEY}' zamanlama anahtar\u0131 zamanlama bilgisi listesinde bulunamad\u0131, bu y\xFCzden yoksay\u0131ld\u0131","milliseconds-abbreviation":"ms","invalid-date-format-error":"Olu\u015Fturulan tarih format\u0131 '{DATE}' ayr\u0131\u015Ft\u0131r\u0131lamad\u0131 veya belirlenemedi, bu y\xFCzden '{FILE_NAME}' dosyas\u0131ndaki olu\u015Fturulan tarih ayn\u0131 b\u0131rak\u0131ld\u0131","invalid-delimiter-error-message":"ayra\xE7 sadece tek bir karakter olabilir","missing-footnote-error-message":"'{FOOTNOTE}' dipnotunun i\xE7eri\u011Finden \xF6nce kar\u015F\u0131l\u0131k gelen bir dipnot referans\u0131 yok ve i\u015Flenemez. L\xFCtfen t\xFCm dipnotlar\u0131n, dipnot i\xE7eri\u011Finden \xF6nce kar\u015F\u0131l\u0131k gelen bir referans\u0131 oldu\u011Fundan emin olun.","too-many-footnotes-error-message":"'{FOOTNOTE_KEY}' dipnot anahtar\u0131 birden fazla dipnota at\u0131fta bulunuyor. L\xFCtfen dipnotlar\u0131 g\xFCncelleyin, b\xF6ylece her dipnot anahtar\u0131 i\xE7in yaln\u0131zca bir dipnot olur.","wrapper-yaml-error":"YAML'da hata: {ERROR_MESSAGE}","wrapper-unknown-error":"bilinmeyen hata: {ERROR_MESSAGE}","uneven-amount-of-quotes":"Dosyadaki `{QUOTE}` al\u0131nt\u0131s\u0131n\u0131n say\u0131s\u0131 \xE7ift de\u011Fil, bu y\xFCzden d\xFCz al\u0131nt\u0131lar\u0131 ak\u0131ll\u0131 al\u0131nt\u0131lara d\xF6n\xFC\u015Ft\xFCremeyiz"},"notice-text":{"empty-clipboard":"Panoda i\xE7erik yok.","characters-added":"karakterler eklendi","characters-removed":"karakterler kald\u0131r\u0131ld\u0131"},"all-rules-option":"T\xFCm\xFC","linter-title":"Linter","empty-search-results-text":"Arama ile e\u015Fle\u015Fen ayar bulunamad\u0131","warning-text":"Uyar\u0131","file-backup-text":"Dosyalar\u0131n\u0131z\u0131n yede\u011Fini ald\u0131\u011F\u0131n\u0131zdan emin olun.",tabs:{names:{general:"Genel",custom:"\xD6zel",yaml:"YAML",heading:"Ba\u015Fl\u0131k",content:"\u0130\xE7erik",footnote:"Dipnot",spacing:"Bo\u015Fluk",paste:"Yap\u0131\u015Ft\u0131r",debug:"Hata ay\u0131kla"},"default-search-bar-text":"T\xFCm ayarlar\u0131 ara",general:{"lint-on-save":{name:"Kaydederken d\xFCzelt",description:"Manuel kaydetme (Ctrl + S tu\u015Funa bas\u0131ld\u0131\u011F\u0131nda veya vim tu\u015F ba\u011Flamalar\u0131n\u0131 kullan\u0131rken :w komutu \xE7al\u0131\u015Ft\u0131r\u0131ld\u0131\u011F\u0131nda) dosyay\u0131 d\xFCzeltir"},"display-message":{name:"D\xFCzeltme sonras\u0131 mesaj\u0131 g\xF6ster",description:"D\xFCzeltme sonras\u0131 de\u011Fi\u015Fen karakter say\u0131s\u0131n\u0131 g\xF6sterir"},"lint-on-file-change":{name:"Dosya De\u011Fi\u015Fikli\u011Finde D\xFCzeltme",description:"Bir dosya kapat\u0131ld\u0131\u011F\u0131nda veya yeni bir dosya a\xE7\u0131ld\u0131\u011F\u0131nda, \xF6nceki dosya d\xFCzeltilir."},"display-lint-on-file-change-message":{name:"Dosya De\u011Fi\u015Fikli\u011Finde D\xFCzeltme Mesaj\u0131n\u0131 G\xF6ster",description:"`Dosya De\u011Fi\u015Fikli\u011Finde D\xFCzeltme` oldu\u011Funda bir mesaj g\xF6sterir"},"folders-to-ignore":{name:"Yoksay\u0131lacak klas\xF6rler",description:"T\xFCm dosyalar\u0131 d\xFCzeltirken veya kaydederken d\xFCzeltme i\u015Fleminin yoksay\u0131laca\u011F\u0131 klas\xF6rler. Klas\xF6r yollar\u0131n\u0131 yeni sat\u0131rlarla ay\u0131rarak girin"},"override-locale":{name:"Yerel ayarlar\u0131n \xFCzerine yaz",description:"Varsay\u0131lan\u0131n d\u0131\u015F\u0131nda bir yerel ayar kullanmak istiyorsan\u0131z bunu ayarlay\u0131n"},"same-as-system-locale":"Sistemle ayn\u0131 ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML takma adlar\u0131 b\xF6l\xFCm\xFC stili",description:"YAML takma adlar\u0131 b\xF6l\xFCm\xFCn\xFCn stili"},"yaml-tags-section-style":{name:"YAML etiketleri b\xF6l\xFCm\xFC stili",description:"YAML etiketleri b\xF6l\xFCm\xFCn\xFCn stili"},"default-escape-character":{name:"Varsay\u0131lan Ka\xE7\u0131\u015F Karakteri",description:"Tek t\u0131rnak ve \xE7ift t\u0131rnak bulunmayan YAML de\u011Ferlerinden ka\xE7mak i\xE7in kullan\u0131lacak varsay\u0131lan karakter."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"\xC7ok Sat\u0131rl\u0131 Dizi Format\u0131ndayken Gereksiz Ka\xE7\u0131\u015F Karakterlerini Kald\u0131r",description:"\xC7ok sat\u0131rl\u0131 YAML dizileri i\xE7in ka\xE7\u0131\u015F karakterleri tek sat\u0131rl\u0131 dizilere g\xF6re ayn\u0131 ka\xE7\u0131\u015Fa ihtiya\xE7 duymaz, bu y\xFCzden \xE7ok sat\u0131rl\u0131 format i\xE7erisinde gerekli olmayan ekstra ka\xE7\u0131\u015Flar\u0131 kald\u0131r\u0131r"},"number-of-dollar-signs-to-indicate-math-block":{name:"Matematiksel Blo\u011Fu Belirtmek \u0130\xE7in Dolar \u0130\u015Fareti Say\u0131s\u0131",description:"Matematik i\xE7eri\u011Finin bir matematiksel blok yerine inline matematik olup olmad\u0131\u011F\u0131n\u0131 belirlemek i\xE7in kullan\u0131lacak dolar i\u015Fareti say\u0131s\u0131"}},debug:{"log-level":{name:"Log D\xFCzeyi",description:"Hizmetin loglamaya izin verdi\u011Fi log t\xFCrleri. Varsay\u0131lan ERROR'dur."},"linter-config":{name:"Linter Yap\u0131land\u0131rmas\u0131",description:"Ayar sayfas\u0131n\u0131n y\xFCklenmesi s\u0131ras\u0131nda Linter i\xE7in data.json i\xE7eri\u011Fi"},"log-collection":{name:"Kaydetme d\xFCzeltmesi ve mevcut dosyan\u0131n d\xFCzeltilmesi s\u0131ras\u0131nda loglar\u0131 topla",description:"`Kaydetme d\xFCzeltmesi` yapt\u0131\u011F\u0131n\u0131zda ve mevcut dosyay\u0131 d\xFCzeltirken loglar\u0131 toplar. Bu loglar hata ay\u0131klama ve hata raporlar\u0131 olu\u015Fturma i\xE7in yard\u0131mc\u0131 olabilir."},"linter-logs":{name:"Linter Loglar\u0131",description:"Son `Kaydetme d\xFCzeltmesi` veya son mevcut dosya \xE7al\u0131\u015Ft\u0131rmas\u0131ndan elde edilen loglar (e\u011Fer etkinle\u015Ftirilmi\u015Fse)."}}},options:{"custom-command":{name:"\xD6zel Komutlar",description:"\xD6zel komutlar, linter normal kurallar\u0131n\u0131 \xE7al\u0131\u015Ft\u0131rmay\u0131 bitirdikten sonra \xE7al\u0131\u015Ft\u0131r\u0131lan Obsidyen komutlard\u0131r. Bu, YAML zaman damgas\u0131 mant\u0131\u011F\u0131 \xE7al\u0131\u015Fmadan \xF6nce \xE7al\u0131\u015Fmad\u0131klar\u0131 anlam\u0131na gelir, dolay\u0131s\u0131yla linterin bir sonraki \xE7al\u0131\u015Fmas\u0131nda YAML zaman damgas\u0131n\u0131n tetiklenmesine neden olabilirler. Bir Obsidyen komutunu yaln\u0131zca bir kez se\xE7ebilirsiniz. **_Bunun \u015Fu anda yaln\u0131zca ge\xE7erli dosyaya sat\u0131r dizilirken \xE7al\u0131\u015Ft\u0131\u011F\u0131n\u0131 unutmay\u0131n._**",warning:"Bir se\xE7ene\u011Fi se\xE7erken, se\xE7ene\u011Fi fareyi kullanarak veya enter tu\u015Funa basarak se\xE7ti\u011Finizden emin olun. Di\u011Fer se\xE7im y\xF6ntemleri \xE7al\u0131\u015Fmayabilir ve yaln\u0131zca ger\xE7ek bir Obsidian komutunun veya bo\u015F bir dizinin se\xE7imleri kaydedilir.","add-input-button-text":"Yeni komut ekle","command-search-placeholder-text":"Obsidian komutu","move-up-tooltip":"Yukar\u0131","move-down-tooltip":"A\u015Fa\u011F\u0131","delete-tooltip":"Sil"},"custom-replace":{name:"\xD6zel Regex De\u011Fi\u015Ftirme",description:"\xD6zel regex de\u011Fi\u015Ftirme, bulunan regex ile e\u015Fle\u015Fen her \u015Feyi de\u011Fi\u015Ftirme de\u011Feri ile de\u011Fi\u015Ftirmek i\xE7in kullan\u0131labilir. De\u011Fi\u015Ftirme ve bulma de\u011Ferleri ge\xE7erli regex de\u011Ferleri olmal\u0131d\u0131r.",warning:"Regex hakk\u0131nda bilginiz yoksa dikkatli kullan\u0131n. Ayr\u0131ca, l\xFCtle iOS mobil platformunda regexinizde geriye d\xF6n\xFCk aramalar\u0131 kullanmay\u0131n \xE7\xFCnk\xFC bu, o platformda desteklenmedi\u011Fi i\xE7in lint i\u015Fleminin ba\u015Far\u0131s\u0131z olmas\u0131na neden olur.","add-input-button-text":"Yeni regex de\u011Fi\u015Ftirme ekle","regex-to-find-placeholder-text":"bulunacak regex","flags-placeholder-text":"bayraklar","regex-to-replace-placeholder-text":"de\u011Fi\u015Ftirilecek regex","label-placeholder-text":"etiket","move-up-tooltip":"Yukar\u0131 ta\u015F\u0131","move-down-tooltip":"A\u015Fa\u011F\u0131 ta\u015F\u0131","delete-tooltip":"Sil"}},rules:{"auto-correct-common-misspellings":{name:"Yayg\u0131n Yanl\u0131\u015F Yaz\u0131mlar\u0131 Otomatik D\xFCzelt",description:"Yayg\u0131n yanl\u0131\u015F yaz\u0131mlar\u0131n s\xF6zl\xFC\u011F\xFCn\xFC kullanarak bunlar\u0131 do\u011Fru yaz\u0131mlar\u0131na otomatik olarak d\xF6n\xFC\u015Ft\xFCr\xFCr. Otomatik d\xFCzeltilen kelimelerin tam listesi i\xE7in [otomatik-d\xFCzeltme haritas\u0131na](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) bak\u0131n.","ignore-words":{name:"Kelimeleri Yoksay",description:"Otomatik d\xFCzeltme s\u0131ras\u0131nda yoksay\u0131lacak k\xFC\xE7\xFCk harfli kelimelerin virg\xFClle ayr\u0131lm\u0131\u015F listesi"}},"add-blockquote-indentation-on-paste":{name:"Yap\u0131\u015Ft\u0131rma S\u0131ras\u0131nda Blok Al\u0131nt\u0131 Girintisini Ekle",description:"\u0130mle\xE7 bir blok al\u0131nt\u0131/callout sat\u0131r\u0131nda oldu\u011Funda, t\xFCm sat\u0131rlara, ilk sat\u0131r hari\xE7, blok al\u0131nt\u0131lar ekler"},"blockquote-style":{name:"Blok Al\u0131nt\u0131 Stili",description:"Blok al\u0131nt\u0131 stili tutarl\u0131 olmal\u0131d\u0131r.",style:{name:"Stil",description:"Blok al\u0131nt\u0131 g\xF6stergelerinde kullan\u0131lan stil"}},"capitalize-headings":{name:"B\xFCy\xFCk Harfli Ba\u015Fl\u0131klar",description:"Ba\u015Fl\u0131klar b\xFCy\xFCk harfle bi\xE7imlendirilmelidir",style:{name:"Stil",description:"Kullan\u0131lacak b\xFCy\xFCk harfle ba\u015Flatma stili"},"ignore-case-words":{name:"Durum S\xF6zc\xFCklerini Yoksay",description:"Ba\u015Fl\u0131k durum stilini sadece t\xFCm k\xFC\xE7\xFCk harfli s\xF6zc\xFCklere uygula"},"ignore-words":{name:"S\xF6zc\xFCkleri Yoksay",description:"B\xFCy\xFCk harfle ba\u015Flat\u0131rken yoksay\u0131lacak s\xF6zc\xFCklerin virg\xFClle ayr\u0131lm\u0131\u015F listesi"},"lowercase-words":{name:"K\xFC\xE7\xFCk Harfli S\xF6zc\xFCkler",description:"K\xFC\xE7\xFCk harfli tutulacak s\xF6zc\xFCklerin virg\xFClle ayr\u0131lm\u0131\u015F listesi"}},"compact-yaml":{name:"S\u0131k\u0131\u015Ft\u0131r\u0131lm\u0131\u015F YAML",description:"YAML \xF6n bilgisindeki ba\u015Ftaki ve sondaki bo\u015F sat\u0131rlar\u0131 kald\u0131r\u0131r.","inner-new-lines":{name:"\u0130\xE7 Yeni Sat\u0131rlar",description:"YAML'\u0131n ba\u015F\u0131nda veya sonunda olmayan yeni sat\u0131rlar\u0131 kald\u0131r\u0131r."}},"consecutive-blank-lines":{name:"Ard\u0131\u015F\u0131k bo\u015F sat\u0131rlar",description:"En fazla bir ard\u0131\u015F\u0131k bo\u015F sat\u0131r olmal\u0131d\u0131r."},"convert-bullet-list-markers":{name:"Bullet List Markerlar\u0131n\u0131 D\xF6n\xFC\u015Ft\xFCr",description:"Bullet list marker sembollerini markdown list markerlar\u0131na d\xF6n\xFC\u015Ft\xFCr\xFCr."},"convert-spaces-to-tabs":{name:"Bo\u015Fluklar\u0131 Sekmeye D\xF6n\xFC\u015Ft\xFCr",description:"Ba\u015Ftaki bo\u015Fluklar\u0131 sekmeye d\xF6n\xFC\u015Ft\xFCr\xFCr.",tabsize:{name:"Sekme Boyutu",description:"Bir sekme haline d\xF6n\xFC\u015Ft\xFCr\xFClecek bo\u015Fluk say\u0131s\u0131"}},"emphasis-style":{name:"Vurgu Stili",description:"Vurgu stilinin tutarl\u0131 olmas\u0131n\u0131 sa\u011Flar.",style:{name:"Stil",description:"Vurgulanan i\xE7eri\u011Fi belirtmek i\xE7in kullan\u0131lan stil"}},"empty-line-around-blockquotes":{name:"Al\u0131nt\u0131 Bloklar\u0131n\u0131n Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Bir belgenin ba\u015F\u0131n\u0131 veya sonunu ba\u015Flatmayan al\u0131nt\u0131 bloklar\u0131n etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r. **Not: bo\u015F bir sat\u0131r ya al\u0131nt\u0131 bloklar i\xE7in bir seviye daha az girinti veya yeni bir sat\u0131r karakteri demektir.**"},"empty-line-around-code-fences":{name:"Kod \xC7itlerinin Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Bir belgenin ba\u015F\u0131n\u0131 veya sonunu ba\u015Flatmayan kod \xE7itlerinin etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r."},"empty-line-around-math-blocks":{name:"Matematik Bloklar\u0131n\u0131n Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Tek sat\u0131rl\u0131k matematik i\xE7in bir matematik blo\u011Funu belirtmek i\xE7in ka\xE7 dolar i\u015Fareti oldu\u011Funu belirleyen `Dolar \u0130\u015Faretlerinin Say\u0131s\u0131yla Matematik Blo\u011Funu Belirt` kullan\u0131larak matematik bloklar\u0131n\u0131n etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r."},"empty-line-around-tables":{name:"Tablolar\u0131n Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Bir belgenin ba\u015F\u0131n\u0131 veya sonunu ba\u015Flatmayan github flavored tablolar\u0131n etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r."},"escape-yaml-special-characters":{name:"YAML \xD6zel Karakterlerine Ka\xE7\u0131\u015F \u0130\u015Flemi Yap",description:`YAML i\xE7indeki bo\u015Flukla beraber gelen iki nokta \xFCst \xFCste (:), tek t\u0131rnak (') ve \xE7ift t\u0131rnak (") karakterlerini ka\xE7\u0131\u015F i\u015Flemine tabi tutar.`,"try-to-escape-single-line-arrays":{name:"Tek Sat\u0131rl\u0131k Listeleri Ka\xE7\u0131\u015F Denemesi",description:'Bir dizinin "[" ile ba\u015Flad\u0131\u011F\u0131n\u0131, "]" ile bitti\u011Fini ve \xF6\u011Felerin "," ile ayr\u0131ld\u0131\u011F\u0131n\u0131 varsayarak dizi de\u011Ferlerini ka\xE7\u0131\u015F i\u015Flemine tabi tutmaya \xE7al\u0131\u015F\u0131r.'}},"file-name-heading":{name:"Dosya Ad\u0131 Ba\u015Fl\u0131\u011F\u0131",description:"E\u011Fer hi\xE7 H1 ba\u015Fl\u0131\u011F\u0131 yoksa dosya ad\u0131n\u0131 H1 ba\u015Fl\u0131\u011F\u0131 olarak ekler."},"footnote-after-punctuation":{name:"Noktalama \u0130\u015Faretinden Sonra Dipnot",description:"Dipnot referanslar\u0131n\u0131n noktalama i\u015Faretinden \xF6nce de\u011Fil, sonra yerle\u015Ftirildi\u011Finden emin olur."},"force-yaml-escape":{name:"YAML Ka\xE7\u0131\u015F\u0131n\u0131 Zorla",description:"Belirtilen YAML anahtarlar\u0131 i\xE7in ka\xE7\u0131\u015F de\u011Ferleri.","force-yaml-escape-keys":{name:"Anahtarlarda YAML Ka\xE7\u0131\u015F\u0131n\u0131 Zorla",description:"Yeni bir sat\u0131r karakteri ile ayr\u0131lm\u0131\u015F belirtilen YAML anahtarlar\u0131nda YAML ka\xE7\u0131\u015F karakterini kullan\u0131r, e\u011Fer zaten ka\xE7\u0131\u015F yap\u0131lmam\u0131\u015Fsa. YAML dizilerinde kullanmay\u0131n"}},"format-tags-in-yaml":{name:"YAML Etiketlerini Bi\xE7imlendir",description:"YAML \xF6n madde i\xE7indeki etiketlerden hashtagleri kald\u0131r\u0131r, \xE7\xFCnk\xFC bunlar etiketleri ge\xE7ersiz k\u0131lar."},"format-yaml-array":{name:"YAML Dizisini Bi\xE7imlendir",description:"Normal YAML dizilerinin \xE7ok sat\u0131rl\u0131 veya tek sat\u0131rl\u0131 olarak bi\xE7imlendirilmesine izin verir ve `tags` ve `aliases` baz\u0131 Obsidian \xF6zg\xFC \xF6zelliklerine sahip YAML formatlar\u0131nda bulunabilir. **Not: Tek giri\u015Fli bir diziden birden fazla giri\u015Fi olan tek sat\u0131rl\u0131 bir diziye ge\xE7mek ayn\u0131d\u0131r, tek fark \xE7ok sat\u0131rl\u0131 bir dizi olmas\u0131d\u0131r.**","alias-key":{name:"YAML takma adlar\u0131 b\xF6l\xFCm\xFCn\xFC bi\xE7imlendir",description:"YAML takma adlar\u0131 b\xF6l\xFCm\xFC i\xE7in bi\xE7imlendirmeyi a\xE7ar. Bu se\xE7ene\u011Fi `YAML Title Alias` kural\u0131yla birlikte kullanmaman\u0131z \xF6nerilir \xE7\xFCnk\xFC birlikte d\xFCzg\xFCn \xE7al\u0131\u015Fmayabilir veya farkl\u0131 bi\xE7imlendirme stilleri se\xE7ilmi\u015F olabilir, bu beklenmeyen sonu\xE7lara yol a\xE7abilir."},"tag-key":{name:"YAML etiketleri b\xF6l\xFCm\xFCn\xFC bi\xE7imlendir",description:"YAML etiketleri b\xF6l\xFCm\xFC i\xE7in bi\xE7imlendirmeyi a\xE7ar."},"default-array-style":{name:"Varsay\u0131lan YAML dizi b\xF6l\xFCm\xFC stili",description:"`tags`, `aliases` veya `Force key values to be single-line arrays` ve `Force key values to be multi-line arrays` olmayan di\u011Fer YAML dizilerinin stili"},"default-array-keys":{name:"YAML dizi b\xF6l\xFCmlerini bi\xE7imlendir",description:"Normal YAML dizileri i\xE7in bi\xE7imlendirmeyi a\xE7ar"},"force-single-line-array-style":{name:"Anahtar de\u011Ferlerini tek sat\u0131rl\u0131 dizilere zorla",description:"Yeni sat\u0131r ile ayr\u0131lan anahtarlar i\xE7in YAML dizisini tek sat\u0131rl\u0131 formatta olmaya zorlar (bu se\xE7ene\u011Fi devre d\u0131\u015F\u0131 b\u0131rakmak i\xE7in bo\u015F b\u0131rak\u0131n)"},"force-multi-line-array-style":{name:"Anahtar de\u011Ferlerini \xE7ok sat\u0131rl\u0131 dizilere zorla",description:"Yeni sat\u0131r ile ayr\u0131lan anahtarlar i\xE7in YAML dizisini \xE7ok sat\u0131rl\u0131 formatta olmaya zorlar (bu se\xE7ene\u011Fi devre d\u0131\u015F\u0131 b\u0131rakmak i\xE7in bo\u015F b\u0131rak\u0131n)"}},"header-increment":{name:"Ba\u015Fl\u0131k Art\u0131r\u0131m\u0131",description:"Ba\u015Fl\u0131k seviyeleri bir seferde sadece bir seviye artmal\u0131d\u0131r","start-at-h2":{name:"Ba\u015Fl\u0131k Art\u0131r\u0131m\u0131n\u0131 Ba\u015Fl\u0131k Seviyesi 2\u2019de Ba\u015Flat",description:"Bir dosyadaki minimum ba\u015Fl\u0131k seviyesini ba\u015Fl\u0131k seviyesi 2 yapar ve buna g\xF6re t\xFCm ba\u015Fl\u0131klar\u0131 kayd\u0131r\u0131r, b\xF6ylece ba\u015Fl\u0131k art\u0131\u015F\u0131 seviye 2 ba\u015Fl\u0131\u011F\u0131 ile ba\u015Flar."}},"heading-blank-lines":{name:"Ba\u015Fl\u0131k Bo\u015F Sat\u0131rlar\u0131",description:"T\xFCm ba\u015Fl\u0131klar\u0131n hem \xF6ncesinde hem de sonras\u0131nda birer bo\u015F sat\u0131r olmal\u0131d\u0131r (ba\u015Fl\u0131k belgenin ba\u015F\u0131nda veya sonunda oldu\u011Funda bu durum ge\xE7erli de\u011Fildir).",bottom:{name:"Alt",description:"Ba\u015Fl\u0131klar\u0131n sonras\u0131na bo\u015F sat\u0131r ekler"},"empty-line-after-yaml":{name:"YAML ve Ba\u015Fl\u0131k Aras\u0131nda Bo\u015F Sat\u0131r",description:"YAML \xF6n madde ve ba\u015Fl\u0131k aras\u0131ndaki bo\u015F sat\u0131r\u0131 korur"}},"headings-start-line":{name:"Ba\u015Fl\u0131klar Sat\u0131r\u0131 Ba\u015Flat\u0131r",description:"Bir sat\u0131r\u0131 ba\u015Flatmayan ba\u015Fl\u0131klar\u0131n \xF6ncesi bo\u015Fluklar\u0131 kald\u0131r\u0131l\u0131r ki ba\u015Fl\u0131klar ba\u015Fl\u0131k olarak tan\u0131nabilsin."},"insert-yaml-attributes":{name:"YAML \xD6zniteliklerini Ekle",description:"Verilen YAML \xF6zniteliklerini YAML \xF6n maddesine ekler. Her \xF6zniteli\u011Fi tek bir sat\u0131ra koyun.","text-to-insert":{name:"Eklenecek metin",description:"YAML \xF6n maddesine eklenen metin"}},"line-break-at-document-end":{name:"Belge Sonunda Sat\u0131r Sonu",description:"Bir belgenin sonunda tam olarak bir sat\u0131r sonu oldu\u011Funu garanti eder."},"move-footnotes-to-the-bottom":{name:"Dipnotlar\u0131 Altbilgiye Ta\u015F\u0131",description:"T\xFCm dipnotlar\u0131 belgenin alt\u0131na ta\u015F\u0131r."},"move-math-block-indicators-to-their-own-line":{name:"Matematik Blok G\xF6stergelerini Kendi Sat\u0131rlar\u0131na Ta\u015F\u0131",description:'Tek sat\u0131rl\u0131 matematik i\xE7in ka\xE7 dolar i\u015Faretinin bir matematik blo\u011Funu g\xF6sterdi\u011Fini belirlemek i\xE7in "Bir Matematik Blo\u011Fu G\xF6stermek \u0130\xE7in Dolar \u0130\u015Fareti Say\u0131s\u0131"n\u0131 kullanarak t\xFCm ba\u015Flang\u0131\xE7 ve biti\u015F matematik blo\u011Fu g\xF6stergelerini kendi sat\u0131rlar\u0131na ta\u015F\u0131y\u0131n.'},"move-tags-to-yaml":{name:"Etiketleri YAML'a Ta\u015F\u0131",description:"T\xFCm etiketleri belgenin YAML \xF6n maddesine ta\u015F\u0131r.","how-to-handle-existing-tags":{name:"Metin i\xE7indeki etiket i\u015Flemi",description:"\xD6n maddeye ta\u015F\u0131nd\u0131ktan sonra dosyan\u0131n i\xE7eri\u011Finde bulunan ve yoksay\u0131lmayan etiketlerle ne yap\u0131laca\u011F\u0131"},"tags-to-ignore":{name:"Yoksay\u0131lacak etiketler",description:"\u0130\xE7erik g\xF6vdesindeki hashtag'lerden kald\u0131rma etkinle\u015Ftirilmi\u015Fse, etiketler dizisine ta\u015F\u0131nmayacak veya i\xE7erik g\xF6vdesinden kald\u0131r\u0131lmayacak etiketler. Her etiket yeni bir sat\u0131rda ve `#` olmadan olmal\u0131d\u0131r. **Etiket ad\u0131nda hashtag i\xE7ermedi\u011Finizden emin olun.**"}},"no-bare-urls":{name:"Yal\u0131n URL'ler Olmas\u0131n",description:"Yal\u0131n URL'leri a\xE7\u0131l\u0131 ayra\xE7lar ile ku\u015Fat\u0131r, tek veya \xE7ift t\u0131rnak, k\xF6\u015Feli parantez veya e\u011Fik kesme i\u015Fareti i\xE7inde de\u011Filse."},"ordered-list-style":{name:"S\u0131ral\u0131 Liste Stili",description:"S\u0131ral\u0131 listelerin belirtilen stili izlemesini sa\u011Flar. **Not: 2 bo\u015Fluk veya 1 sekme bir girinti seviyesi olarak kabul edilir.**","number-style":{name:"Numara Stili",description:"S\u0131ral\u0131 liste g\xF6stergelerinde kullan\u0131lan numara stili"},"list-end-style":{name:"S\u0131ral\u0131 Liste G\xF6sterge Sonu Stili",description:"Bir s\u0131ral\u0131 liste g\xF6stergesinin biti\u015F karakteri"}},"paragraph-blank-lines":{name:"Paragraf Bo\u015F Sat\u0131rlar\u0131",description:"T\xFCm paragraflar\u0131n hem \xF6nce hem sonra tam olarak bir bo\u015F sat\u0131r\u0131 olmal\u0131d\u0131r."},"prevent-double-checklist-indicator-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada \xC7ift Kontrol Listesi G\xF6stergesini \xD6nle",description:"Kurs\xF6r\xFCn dosyadaki sat\u0131rda bir kontrol listesi g\xF6stergesi varsa, yap\u0131\u015Ft\u0131r\u0131lacak metinden ba\u015Flang\u0131\xE7 kontrol listesi g\xF6stergesini kald\u0131r\u0131r"},"prevent-double-list-item-indicator-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada \xC7ift Liste \xD6\u011Fesi G\xF6stergesini \xD6nle",description:"Kurs\xF6r\xFCn dosyadaki sat\u0131rda bir liste g\xF6stergesi varsa, yap\u0131\u015Ft\u0131r\u0131lacak metinden ba\u015Flang\u0131\xE7 listesi g\xF6stergesini kald\u0131r\u0131r"},"proper-ellipsis-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada Uygun \xDC\xE7 Nokta",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metinde aralar\u0131nda bo\u015Fluk olsa bile ard\u0131\u015F\u0131k \xFC\xE7 noktay\u0131, \xFC\xE7 nokta karakteriyle ile de\u011Fi\u015Ftirir"},"proper-ellipsis":{name:"Uygun \xDC\xE7 Nokta",description:"Ard\u0131\u015F\u0131k \xFC\xE7 tane noktay\u0131, \xFC\xE7 nokta karakteriyle de\u011Fi\u015Ftirir."},"quote-style":{name:"\xFC\xE7 nokta karakteriyle",description:"G\xF6vde i\xE7eri\u011Findeki al\u0131nt\u0131lar\u0131 belirtilen tek ve \xE7ift al\u0131nt\u0131 stillerine g\xFCnceller.","single-quote-enabled":{name:"`Tek Al\u0131nt\u0131 Stili` Kullan\u0131m\u0131",description:"Se\xE7ilen tek al\u0131nt\u0131 stilinin kullan\u0131laca\u011F\u0131n\u0131 belirtir."},"single-quote-style":{name:"Tek Al\u0131nt\u0131 Stili",description:"Kullan\u0131lacak tek al\u0131nt\u0131 stilidir."},"double-quote-enabled":{name:"`\xC7ift Al\u0131nt\u0131 Stili` Kullan\u0131m\u0131",description:"Se\xE7ilen \xE7ift al\u0131nt\u0131 stilinin kullan\u0131laca\u011F\u0131n\u0131 belirtir."},"double-quote-style":{name:"\xC7ift Al\u0131nt\u0131 Stili",description:"Kullan\u0131lacak \xE7ift al\u0131nt\u0131 stilidir."}},"re-index-footnotes":{name:"Dipnotlar\u0131 Yeniden \u0130ndeksle",description:"Dipnot anahtarlar\u0131n\u0131 ve dipnotlar\u0131, olu\u015Fum s\u0131ras\u0131na g\xF6re yeniden indeksler. **Not: Bir anahtar i\xE7in birden fazla dipnot varsa, bu kural \xE7al\u0131\u015Fmaz.**"},"remove-consecutive-list-markers":{name:"Ard\u0131\u015F\u0131k Liste \u0130\u015Faretlerini Kald\u0131r",description:"Ard\u0131\u015F\u0131k liste i\u015Faretlerini kald\u0131r\u0131r. Liste \xF6\u011Felerini kopyala-yap\u0131\u015Ft\u0131r yaparken kullan\u0131\u015Fl\u0131d\u0131r."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Liste \u0130\u015Faretleri ve Kontrol Listeleri Aras\u0131ndaki Bo\u015F Sat\u0131rlar\u0131 Kald\u0131r",description:"Liste i\u015Faretleri ve kontrol listeleri aras\u0131nda bo\u015F sat\u0131r olmamal\u0131d\u0131r."},"remove-empty-list-markers":{name:"Bo\u015F Liste \u0130\u015Faret\xE7ilerini Kald\u0131r",description:"Bo\u015F liste i\u015Faret\xE7ilerini, yani i\xE7eriksiz liste \xF6\u011Felerini kald\u0131r\u0131r."},"remove-hyphenated-line-breaks":{name:"Tireli Sat\u0131r Sonlar\u0131n\u0131 Kald\u0131r",description:"Removes hyphenated line breaks. Useful when pasting text from textbooks."},"remove-hyphens-on-paste":{name:"Yap\u0131\u015Ft\u0131r\u0131rken Tireleri Kald\u0131r",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metindeki tireleri kald\u0131r\u0131r"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Yap\u0131\u015Ft\u0131rda \xD6ndeki veya Sondaki Bo\u015Fluklar\u0131 Kald\u0131r",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metnin ba\u015F\u0131ndaki sekme olmayan bo\u015Fluklar\u0131 ve sonundaki t\xFCm bo\u015Fluklar\u0131 kald\u0131r\u0131r"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada Al\u0131nt\u0131dan Kalan Dipnotlar\u0131 Kald\u0131r",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metinden herhangi bir kal\u0131nt\u0131 dipnot referanslar\u0131n\u0131 kald\u0131r\u0131r"},"remove-link-spacing":{name:"Link Aral\u0131\u011F\u0131n\u0131 Kald\u0131r",description:"Link metninin etraf\u0131ndaki bo\u015Fluklar\u0131 kald\u0131r\u0131r."},"remove-multiple-blank-lines-on-paste":{name:"Yap\u0131\u015Ft\u0131r\u0131rken Birden Fazla Bo\u015F Sat\u0131r\u0131 Kald\u0131r",description:"Metnin yap\u0131\u015Ft\u0131r\u0131lmas\u0131 i\xE7in birden \xE7ok bo\u015F sat\u0131r\u0131 tek bir bo\u015F sat\u0131ra s\u0131k\u0131\u015Ft\u0131r\u0131r"},"remove-multiple-spaces":{name:"Birden Fazla Bo\u015Flu\u011Fu Kald\u0131r",description:"\u0130ki veya daha fazla ard\u0131\u015F\u0131k bo\u015Flu\u011Fu kald\u0131r\u0131r. Sat\u0131r\u0131n ba\u015F\u0131ndaki ve sonundaki bo\u015Fluklar\u0131 g\xF6rmezden gelir. "},"remove-space-around-characters":{name:"Karakterler Etraf\u0131ndaki Bo\u015Flu\u011Fu Kald\u0131r",description:"Belirli karakterlerin bo\u015Fluklarla (tek bo\u015Fluk veya sekme) \xE7evrelenmemesini sa\u011Flar. **Not: Bu, baz\u0131 durumlarda indirim bi\xE7imiyle ilgili sorunlara neden olabilir.**","include-fullwidth-forms":{name:"Tam Geni\u015Flikte Formlar\u0131 Dahil Et",description:'Tam Geni\u015Flikte Formlar Unicode blo\u011Funu dahil eder'},"include-cjk-symbols-and-punctuation":{name:"CJK Sembol ve Noktalama \u0130\u015Faretlerini Dahil Et",description:'CJK Sembol ve Noktalama Unicode blo\u011Funu dahil eder'},"include-dashes":{name:"Tireleri Dahil Et",description:"En tire (\u2013) ve em tireyi (\u2014) dahil eder"},"other-symbols":{name:"Di\u011Fer Semboller",description:"Dahil edilecek di\u011Fer semboller"}},"remove-space-before-or-after-characters":{name:"Karakterlerden \xD6nce veya Sonra Bo\u015Flu\u011Fu Kald\u0131r",description:"Belirtilen karakterlerden \xF6nceki ve sonraki bo\u015Flu\u011Fu kald\u0131r\u0131r. **Not: bu durum baz\u0131 durumlarda markdown format\u0131nda sorunlara neden olabilir.**","characters-to-remove-space-before":{name:"\xD6nceki Bo\u015Flu\u011Fu Kald\u0131r\u0131lacak Karakterler",description:"Belirtilen karakterlerden \xF6nceki bo\u015Flu\u011Fu kald\u0131r\u0131r. **Not: karakter listesinde `{` veya `}` kullanmak, sahne arkas\u0131nda yoksayma s\xF6zdizimi kullan\u0131ld\u0131\u011F\u0131 i\xE7in dosyalar\u0131 beklenmedik \u015Fekilde etkiler.**"},"characters-to-remove-space-after":{name:"Sonraki Bo\u015Flu\u011Fu Kald\u0131r\u0131lacak Karakterler",description:"Belirtilen karakterlerden sonraki bo\u015Flu\u011Fu kald\u0131r\u0131r. **Not: karakter listesinde `{` veya `}` kullanmak, sahne arkas\u0131nda yoksayma s\xF6zdizimi kullan\u0131ld\u0131\u011F\u0131 i\xE7in dosyalar\u0131 beklenmedik \u015Fekilde etkiler.**"}},"remove-trailing-punctuation-in-heading":{name:"Ba\u015Fl\u0131klardaki Son Noktalama \u0130\u015Faretlerini Kald\u0131r",description:"Belirtilen noktalama i\u015Faretlerini ba\u015Fl\u0131klar\u0131n sonundan kald\u0131r\u0131r ve [HTML varl\u0131k referanslar\u0131n\u0131n](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references) sonundaki noktal\u0131 virg\xFCl\xFC yoksayar.","punctuation-to-remove":{name:"Sondaki Noktalama",description:"Dosyadaki ba\u015Fl\u0131klardan kald\u0131r\u0131lacak noktalama i\u015Faretleri."}},"remove-yaml-keys":{name:"YAML Anahtarlar\u0131n\u0131 Kald\u0131r",description:"Belirtilen YAML anahtarlar\u0131n\u0131 kald\u0131r\u0131r","yaml-keys-to-remove":{name:"Kald\u0131r\u0131lacak YAML Anahtarlar\u0131",description:"YAML \xF6n maddesinden iki nokta \xFCst \xFCste ile veya olmadan kald\u0131r\u0131lacak YAML anahtarlar\u0131"}},"space-after-list-markers":{name:"Liste \u0130\u015Faretlerinden Sonra Bo\u015Fluk",description:"Liste i\u015Faretleri ve onay kutular\u0131ndan sonra tek bir bo\u015Fluk olmal\u0131d\u0131r"},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"\xC7ince, Japonca veya Korece ve \u0130ngilizce veya Say\u0131lar Aras\u0131nda Bo\u015Fluk",description:"\xC7ince, Japonca veya Korece ve \u0130ngilizce veya say\u0131lar aras\u0131nda tek bir bo\u015Fluk olmas\u0131 gerekti\u011Fini sa\u011Flar. Bu [kurallar\u0131](https://github.com/sparanoid/chinese-copywriting-guidelines) takip eder"},"strong-style":{name:"Kal\u0131n Stil",description:"Kal\u0131n stilin tutarl\u0131 oldu\u011Funu garanti eder.",style:{name:"Stil",description:"Kal\u0131n/yo\u011Fun i\xE7eri\u011Fi belirtmek i\xE7in kullan\u0131lan stil"}},"trailing-spaces":{name:"Sondaki bo\u015Fluklar",description:"Her sat\u0131r\u0131n sonundaki fazladan bo\u015Fluklar\u0131 kald\u0131r\u0131r.","twp-space-line-break":{name:"\u0130ki Bo\u015Fluklu Sat\u0131r Sonu",description:'Bir sat\u0131r sonunu takiben iki bo\u015Flu\u011Fu g\xF6z ard\u0131 et ("\u0130ki Bo\u015Fluk Kural\u0131").'}},"two-spaces-between-lines-with-content":{name:"\u0130\xE7eri\u011Fi Olan Sat\u0131rlar Aras\u0131nda \u0130ki Bo\u015Fluk",description:"\u0130\xE7eri\u011Fi devam eden sat\u0131rlar\u0131n sonuna paragraflar, blok al\u0131nt\u0131lar\u0131 ve liste \xF6\u011Feleri i\xE7in iki bo\u015Fluk eklenmesini sa\u011Flar"},"unordered-list-style":{name:"S\u0131ras\u0131z Liste Stili",description:"S\u0131ras\u0131z listelerin belirtilen stili takip etti\u011Finden emin olur.","list-style":{name:"Liste \xF6\u011Fesi stili",description:"S\u0131ras\u0131z listelerde kullan\u0131lacak liste \xF6\u011Fesi stili"}},"yaml-key-sort":{name:"YAML Anahtar S\u0131ralamas\u0131",description:"YAML anahtarlar\u0131n\u0131 belirtilen s\u0131ra ve \xF6nceli\u011Fe g\xF6re s\u0131ralar. **Not: bo\u015F sat\u0131rlar\u0131 da kald\u0131rabilir.**","yaml-key-priority-sort-order":{name:"YAML Anahtar \xD6ncelik S\u0131ralama D\xFCzeni",description:"Her sat\u0131rda bir tane olacak \u015Fekilde anahtarlar\u0131n hangi s\u0131rayla s\u0131ralanaca\u011F\u0131"},"priority-keys-at-start-of-yaml":{name:"\xD6ncelikli Anahtarlar YAML'\u0131n Ba\u015F\u0131nda",description:"YAML Anahtar \xD6ncelik S\u0131ralama D\xFCzeni, YAML \xF6n maddesinin ba\u015F\u0131nda yer al\u0131r"},"yaml-sort-order-for-other-keys":{name:"Di\u011Fer Anahtarlar \u0130\xE7in YAML S\u0131ralama D\xFCzeni",description:"YAML Anahtar \xD6ncelik S\u0131ralama D\xFCzeni metin alan\u0131nda bulunmayan anahtarlar\u0131 nas\u0131l s\u0131ralayaca\u011F\u0131"}},"yaml-timestamp":{name:"YAML Zaman Damgas\u0131",description:"Dosyan\u0131n son d\xFCzenlendi\u011Fi tarihi YAML \xF6n maddesinde takip eder. Tarihler dosya metadatas\u0131ndan al\u0131n\u0131r.","date-created":{name:"Olu\u015Fturma Tarihi",description:"Dosyan\u0131n olu\u015Fturma tarihini ekler"},"date-created-key":{name:"Olu\u015Fturma Tarihi Anahtar\u0131",description:"Olu\u015Fturma tarihi i\xE7in hangi YAML anahtar\u0131n\u0131 kullanaca\u011F\u0131"},"force-retention-of-create-value":{name:"Olu\u015Fturma Tarihi Anahtar De\u011Ferinin Korunmas\u0131n\u0131 Zorla",description:"Dosya metadatas\u0131 yerine YAML \xF6n maddesindeki tarihi yeniden kullan\u0131r, bu da dosya metadatas\u0131ndaki de\u011Fi\u015Fikliklerin de\u011Ferin farkl\u0131 bir de\u011Fere de\u011Fi\u015Fmesine neden olmas\u0131n\u0131 \xF6nler."},"date-modified":{name:"De\u011Fi\u015Ftirme Tarihi",description:"Dosyan\u0131n son de\u011Fi\u015Ftirildi\u011Fi tarihi ekler"},"date-modified-key":{name:"De\u011Fi\u015Ftirme Tarihi Anahtar\u0131",description:"De\u011Fi\u015Ftirme tarihi i\xE7in hangi YAML anahtar\u0131n\u0131 kullanaca\u011F\u0131"},format:{name:"Format",description:"Kullan\u0131lacak Zaman format\u0131 (bak\u0131n\u0131z [Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML Ba\u015Fl\u0131k Takma Ad\u0131",description:"Dosyan\u0131n ba\u015Fl\u0131\u011F\u0131n\u0131 YAML \xF6n maddesinin takma adlar\u0131 b\xF6l\xFCm\xFCne ekler. Ba\u015Fl\u0131\u011F\u0131 ilk H1 veya dosya ad\u0131ndan al\u0131r.","preserve-existing-alias-section-style":{name:"Mevcut takma adlar b\xF6l\xFCm stilini koru",description:"Ayarlan\u0131rsa, `YAML takma adlar b\xF6l\xFCm\xFC stili` ayar\u0131 yaln\u0131zca yeni olu\u015Fturulan b\xF6l\xFCmlere uygulan\u0131r"},"keep-alias-that-matches-the-filename":{name:"Dosya ad\u0131na uyan takma ad\u0131 koru",description:"Bu t\xFCr takma adlar genellikle gereksizdir"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"`linter-yaml-title-alias` YAML anahtar\u0131n\u0131 kullanarak eski dosya ad\u0131 ve ba\u015Fl\u0131k de\u011Fi\u015Fikliklerini takip et",description:"Ayarlan\u0131rsa, ilk H1 ba\u015Fl\u0131\u011F\u0131 de\u011Fi\u015Fti\u011Finde veya ilk H1 yoksa dosya ad\u0131 de\u011Fi\u015Fti\u011Finde, bu anahtarda saklanan eski takma ad, takma adlar dizisine yeni bir giri\u015F eklemek yerine yeni de\u011Ferle de\u011Fi\u015Ftirilir"}},"yaml-title":{name:"YAML Ba\u015Fl\u0131k",description:"Dosyan\u0131n ba\u015Fl\u0131\u011F\u0131n\u0131 YAML \xF6n maddesine ekler. Ba\u015Fl\u0131k se\xE7ilen moda g\xF6re al\u0131n\u0131r.","title-key":{name:"Ba\u015Fl\u0131k Anahtar\u0131",description:"Ba\u015Fl\u0131k i\xE7in hangi YAML anahtar\u0131n\u0131 kullanaca\u011F\u0131"},mode:{name:"Mod",description:"Ba\u015Fl\u0131\u011F\u0131 almak i\xE7in kullan\u0131lacak y\xF6ntem"}}},enums:{"Title Case":"Ba\u015F Harfleri B\xFCy\xFCk","ALL CAPS":"T\xDCM\xDC B\xDCY\xDCK HARF","First letter":"\u0130lk Harf",".":".",")":")",ERROR:"hata",TRACE:"i\u015Faret",DEBUG:"hata ay\u0131klama",INFO:"bilgi",WARN:"uyar\u0131",SILENT:"sessiz",ascending:"artan",lazy:"tembel",Nothing:"Hi\xE7biri","Remove hashtag":"Hashtagi Kald\u0131r","Remove whole tag":"T\xFCm Etiketi Kald\u0131r",asterisk:"y\u0131ld\u0131z",underscore:"alt \xE7izgi",consistent:"tutarl\u0131","-":"-","*":"*","+":"+",space:"bo\u015Fluk","no space":"bo\u015Fluk yok",None:"Yok","Ascending Alphabetical":"Artan Alfabetik","Descending Alphabetical":"Azalan Alfabetik","multi-line":"\xE7oklu-sat\u0131r","single-line":"tek-sat\u0131r","single string to single-line":"tek dizeden tek sat\u0131ra","single string to multi-line":"tek dizeden \xE7ok sat\u0131ra","single string comma delimited":"virg\xFClle ayr\u0131lm\u0131\u015F tek dize","single string space delimited":"bo\u015Flukla ayr\u0131lm\u0131\u015F tek dize","single-line space delimited":"bo\u015Flukla ayr\u0131lm\u0131\u015F tek sat\u0131r","first-h1":"\u0130lk H1","first-h1-or-filename-if-h1-missing":"\u0130lk H1 veya H1 Eksikse Dosya Ad\u0131",filename:"Dosya Ad\u0131","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var fd={commands:{"lint-file":{name:"\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6","error-message":"\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u51FA\u9519"},"lint-file-unless-ignored":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF08\u9664\u4E86\u88AB\u5FFD\u7565\u7684\u6587\u4EF6\uFF09"},"lint-all-files":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","error-message":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519","success-message":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","errors-message-singular":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 1 \u4E2A\u9519\u8BEF","errors-message-plural":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 {NUM} \u4E2A\u9519\u8BEF","start-message":"\u8FD9\u5C06\u6539\u52A8\u6240\u6709\u6587\u4EF6\uFF0C\u5305\u62EC\u5B50\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\uFF0C\u53EF\u80FD\u4F1A\u5F15\u5165\u9519\u8BEF","submit-button-text":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","submit-button-notice-text":"\u6B63\u5728\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6..."},"lint-all-files-in-folder":{name:"\u683C\u5F0F\u5316\u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6","start-message":"\u8FD9\u5C06\u6539\u52A8\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709\u6587\u4EF6\uFF0C\u5305\u62EC\u5B50\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\uFF0C\u53EF\u80FD\u4F1A\u5F15\u5165\u9519\u8BEF","submit-button-text":"\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709\u6587\u4EF6","submit-button-notice-text":"\u6B63\u5728\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709\u6587\u4EF6...","error-message":"\u683C\u5F0F\u5316\u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519","success-message":"\u5DF2\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709 {NUM} \u4E2A\u6587\u4EF6","message-singular":"\u5DF2\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709 {NUM} \u4E2A\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 1 \u4E2A\u9519\u8BEF","message-plural":"\u5DF2\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684 {FILE_COUNT} \u4E2A\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 {ERROR_COUNT} \u4E2A\u9519\u8BEF."},"paste-as-plain-text":{name:"\u7C98\u8D34\u4E3A\u7EAF\u6587\u672C\u4E14\u4E0D\u63D0\u9192"},"lint-file-pop-up-menu-text":{name:"\u683C\u5F0F\u5316\u6587\u4EF6"},"lint-folder-pop-up-menu-text":{name:"\u683C\u5F0F\u5316\u6587\u4EF6\u5939"}},logs:{"plugin-load":"\u6B63\u5728\u52A0\u8F7D\u63D2\u4EF6","plugin-unload":"\u6B63\u5728\u5378\u8F7D\u63D2\u4EF6","folder-lint":"\u6B63\u5728\u683C\u5F0F\u5316\u6587\u4EF6\u5939","linter-run":"\u6B63\u5728\u8FD0\u884C Linter","paste-link-warning":"\u4E2D\u6B62\u7C98\u8D34\u683C\u5F0F\u5316 \uFF0C\u56E0\u4E3A\u526A\u8D34\u677F\u5185\u5BB9\u662F\u4E00\u4E2A\u94FE\u63A5\uFF0C\u8FD9\u6837\u505A\u5C06\u907F\u514D\u4E0E\u5176\u4ED6\u4FEE\u6539\u7C98\u8D34\u884C\u4E3A\u7684\u63D2\u4EF6\u53D1\u751F\u51B2\u7A81","see-console":"\u8BF7\u67E5\u770B\u63A7\u5236\u53F0\u4EE5\u83B7\u53D6\u66F4\u591A\u4FE1\u606F","unknown-error":"\u683C\u5F0F\u5316\u8FC7\u7A0B\u53D1\u751F\u672A\u77E5\u9519\u8BEF","moment-locale-not-found":"\u5C1D\u8BD5\u5C06 Moment.js \u7684\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00\u5207\u6362\u5230 {MOMENT_LOCALE}, \u5B9E\u9645\u5207\u6362\u5230 {CURRENT_LOCALE}","file-change-lint-message-start":"\u683C\u5F0F\u5316\u5DF2\u5B8C\u6210","pre-rules":"\u6BD4\u6B63\u5E38\u89C4\u5219\u4F18\u5148\u7EA7\u66F4\u9AD8\u7684\u89C4\u5219","post-rules":"\u6BD4\u6B63\u5E38\u89C4\u5219\u4F18\u5148\u7EA7\u66F4\u4F4E\u7684\u89C4\u5219","rule-running":"\u6B63\u5728\u8FD0\u884C\u89C4\u5219","custom-regex":"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u89C4\u5219","running-custom-regex":"\u6B63\u5728\u8FD0\u884C\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u89C4\u5219","running-custom-lint-command":"\u6B63\u5728\u8FD0\u884C\u81EA\u5B9A\u4E49\u683C\u5F0F\u5316\u547D\u4EE4","custom-lint-duplicate-warning":'\u4F60\u4E0D\u80FD\u8FD0\u884C\u540C\u4E00\u4E2A\u81EA\u5B9A\u4E49\u89C4\u5219 ("{COMMAND_NAME}") \u4E24\u6B21',"custom-lint-error-message":"\u81EA\u5B9A\u4E49\u683C\u5F0F\u5316\u547D\u4EE4","disabled-text":"\u5DF2\u7981\u7528","run-rule-text":"\u8FD0\u884C\u4E2D","timing-key-not-found":"\u8BA1\u65F6\u952E '{TIMING_KEY}' \u5728\u8BA1\u65F6\u4FE1\u606F\u5217\u8868\u4E2D\u4E0D\u5B58\u5728\uFF0C\u5DF2\u5FFD\u7565","milliseconds-abbreviation":"\u6BEB\u79D2","invalid-date-format-error":"\u65E0\u6CD5\u89E3\u6790\u6216\u786E\u5B9A'{FILE_NAME}'\u4E2D\u7684\u521B\u5EFA\u65E5\u671F'{DATE}'\u7684\u683C\u5F0F\uFF0C\u521B\u5EFA\u65E5\u671F\u672A\u8FDB\u884C\u4FEE\u6539","invalid-delimiter-error-message":"\u5206\u9694\u7B26\u53EA\u80FD\u4E3A\u5355\u4E2A\u5B57\u7B26","missing-footnote-error-message":"\u811A\u6CE8 '{FOOTNOTE}' \u6CA1\u6709\u5BF9\u5E94\u7684\u5F15\u7528\uFF0C\u65E0\u6CD5\u5904\u7406\u3002\u8BF7\u786E\u4FDD\u6240\u6709\u811A\u6CE8\u90FD\u6709\u76F8\u5E94\u7684\u5F15\u7528\u3002","too-many-footnotes-error-message":"\u811A\u6CE8\u7F16\u53F7 '{FOOTNOTE_KEY}' \u6709\u8D85\u8FC71\u4E2A\u811A\u6CE8\u5728\u4F7F\u7528\uFF0C\u8BF7\u4FEE\u6539\u811A\u6CE8\u4F7F\u5F97\u4E00\u4E2A\u811A\u6CE8\u7F16\u53F7\u5BF9\u5E94\u4E00\u4E2A\u811A\u6CE8","wrapper-yaml-error":"yaml\u51FA\u73B0\u9519\u8BEF: {ERROR_MESSAGE}","wrapper-unknown-error":"\u672A\u77E5\u9519\u8BEF: {ERROR_MESSAGE}","uneven-amount-of-quotes":"`{QUOTE}` \u5F15\u53F7\u5728\u6587\u4EF6\u4E2D\u7684\u6570\u91CF\u4E0D\u662F\u5076\u6570\uFF0C\u6240\u4EE5\u6211\u4EEC\u65E0\u6CD5\u5C06\u76F4\u5F15\u53F7\u8F6C\u6362\u4E3A\u5F2F\u5F15\u53F7"},"notice-text":{"empty-clipboard":"\u526A\u8D34\u677F\u4E3A\u7A7A","characters-added":"\u4E2A\u5B57\u7B26\u88AB\u6DFB\u52A0","characters-removed":"\u4E2A\u5B57\u7B26\u88AB\u79FB\u9664"},"all-rules-option":"\u5168\u90E8","linter-title":"Linter","empty-search-results-text":"\u6CA1\u6709\u5339\u914D\u7684\u8BBE\u7F6E\u9879","warning-text":"\u8B66\u544A","file-backup-text":"\u8BF7\u786E\u4FDD\u4F60\u5DF2\u5907\u4EFD\u6587\u4EF6",tabs:{names:{general:"\u57FA\u7840",custom:"\u81EA\u5B9A\u4E49",yaml:"YAML",heading:"\u6807\u9898",content:"\u5185\u5BB9",footnote:"\u811A\u6CE8",spacing:"\u7A7A\u884C",paste:"\u7C98\u8D34",debug:"Debug"},"default-search-bar-text":"\u641C\u7D22\u8BBE\u7F6E\u9879",general:{"lint-on-save":{name:"\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u6587\u4EF6",description:"\u624B\u52A8\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u6587\u4EF6\uFF08\u5F53\u6309 `Ctrl + S` \u65F6\u6216\u5728 vim \u6A21\u5F0F\u4E2D\u4F7F\u7528 `:w` \u65F6\uFF09"},"display-message":{name:"\u683C\u5F0F\u5316\u540E\u663E\u793A\u6D88\u606F",description:"\u683C\u5F0F\u5316\u540E\u663E\u793A\u4FEE\u6539\u4E86\u591A\u5C11\u5B57\u7B26"},"lint-on-file-change":{name:"\u6587\u4EF6\u4FEE\u6539\u65F6\u683C\u5F0F\u5316",description:"\u5F53\u6587\u4EF6\u5173\u95ED\u6216\u662F\u5207\u6362\u5230\u65B0\u6587\u4EF6\u65F6\uFF0C\u683C\u5F0F\u5316\u4E4B\u524D\u7684\u6587\u4EF6"},"display-lint-on-file-change-message":{name:"\u63D0\u9192\u6587\u4EF6\u4FEE\u6539\u65F6\u683C\u5F0F\u5316",description:"\u5F53`\u6587\u4EF6\u4FEE\u6539\u65F6\u683C\u5F0F\u5316`\u89E6\u53D1\u65F6\uFF0C\u5F39\u51FA\u4E00\u6761\u63D0\u793A\u4FE1\u606F"},"folders-to-ignore":{name:"\u5FFD\u7565\u6587\u4EF6\u5939",description:"\u9700\u8981\u5FFD\u7565\u7684\u6587\u4EF6\u5939\uFF08\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u6216\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u65F6\u751F\u6548\uFF09\uFF0C\u6BCF\u884C\u8F93\u5165\u4E00\u4E2A\u6587\u4EF6\u5939\u8DEF\u5F84"},"override-locale":{name:"\u8986\u76D6\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00",description:"\u4F7F\u7528\u4E0D\u540C\u4E8E\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00\u65F6\u9700\u8981\u8BBE\u7F6E\u6B64\u9879"},"same-as-system-locale":"\u9ED8\u8BA4 ({SYS_LOCALE}) ","yaml-aliases-section-style":{name:"YAML aliases \u6837\u5F0F",description:"YAML aliases \u6837\u5F0F"},"yaml-tags-section-style":{name:"YAML tags \u6837\u5F0F",description:"YAML tags \u6837\u5F0F"},"default-escape-character":{name:"\u9ED8\u8BA4\u8F6C\u4E49\u5B57\u7B26",description:"\u5F53\u5355\u5F15\u53F7\u6216\u53CC\u5F15\u53F7\u4E0D\u5B58\u5728\u65F6\u7528\u4E8E\u8F6C\u4E49 YAML \u503C\u7684\u9ED8\u8BA4\u5B57\u7B26"},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"\u5F53\u4F7F\u7528 YAML \u591A\u884C\u6570\u7EC4\u65F6\u5220\u9664\u4E0D\u5FC5\u8981\u7684\u8F6C\u4E49\u5B57\u7B26",description:"YAML \u591A\u884C\u6570\u7EC4\u7684\u8F6C\u4E49\u5B57\u7B26\u548C YAML \u5355\u884C\u6570\u7EC4\u4E0D\u540C\uFF0C\u56E0\u6B64\u5728\u4F7F\u7528\u591A\u884C\u6570\u7EC4\u65F6\uFF0C\u5220\u9664\u4E0D\u5FC5\u8981\u7684\u8F6C\u4E49\u5B57\u7B26"},"number-of-dollar-signs-to-indicate-math-block":{name:"\u6307\u793A Latex \u5757\u7684 $ \u7B26\u53F7\u6570\u91CF",description:"\u5C06 Latex \u5185\u5BB9\u89C6\u4E3A Latex \u5757\u800C\u4E0D\u662F\u884C\u5185 Latex \u7684 $ \u7B26\u53F7\u7684\u6570\u91CF"}},debug:{"log-level":{name:"\u65E5\u5FD7\u7EA7\u522B",description:"\u5141\u8BB8\u6253\u5370\u7684\u65E5\u5FD7\u7C7B\u578B\uFF0C\u9ED8\u8BA4\u662F ERROR"},"linter-config":{name:"\u683C\u5F0F\u5316\u914D\u7F6E",description:"\u5728\u8BBE\u7F6E\u9875\u9762\u52A0\u8F7D\u65F6\uFF0CLinter \u4E2D data.json \u7684\u5185\u5BB9"},"log-collection":{name:"\u5728\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u548C\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u6536\u96C6\u65E5\u5FD7",description:"\u5728\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u548C\u683C\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u6536\u96C6\u65E5\u5FD7\u3002\u8FD9\u4E9B\u65E5\u5FD7\u6709\u52A9\u4E8E\u8C03\u8BD5\u548C\u521B\u5EFA\u9519\u8BEF\u62A5\u544A"},"linter-logs":{name:"Linter \u65E5\u5FD7",description:"\u5982\u679C\u5F00\u542F\uFF0C\u5219\u663E\u793A\u6700\u540E\u4E00\u6B21\u683C\u5F0F\u5316\u65F6\u4FDD\u5B58\u6216\u8005\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u751F\u6210\u7684\u65E5\u5FD7"}}},options:{"custom-command":{name:"\u81EA\u5B9A\u4E49\u547D\u4EE4",description:"\u81EA\u5B9A\u4E49\u547D\u4EE4\u662F\u5728 Linter \u5B8C\u6210\u683C\u5F0F\u5316\u540E\u8FD0\u884C\u7684 Obsidian \u547D\u4EE4\u3002\u8FD9\u610F\u5473\u7740 Obsidian \u547D\u4EE4\u4F1A\u5728 YAML \u65F6\u95F4\u6233\u4FEE\u6539\u4E4B\u540E\u8FD0\u884C\uFF0C\u56E0\u6B64\u5B83\u4EEC\u53EF\u80FD\u4F1A\u5BFC\u81F4\u5728\u4E0B\u6B21\u8FD0\u884C Linter \u65F6\u89E6\u53D1 YAML \u65F6\u95F4\u6233\u4FEE\u6539\u3002\u4E00\u4E2A Obsidian \u547D\u4EE4\u53EA\u80FD\u9009\u62E9\u4E00\u6B21\u3002**_\u6CE8\u610F\uFF0C\u8FD9\u76EE\u524D\u4EC5\u9002\u7528\u4E8E\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6_**",warning:"\u9009\u62E9\u547D\u4EE4\u65F6\uFF0C\u8BF7\u786E\u4FDD\u4F7F\u7528\u9F20\u6807\u6216\u6309\u56DE\u8F66\u952E\u9009\u62E9\u8BE5\u9009\u9879\uFF0C\u5176\u4ED6\u9009\u62E9\u65B9\u6CD5\u53EF\u80FD\u4E0D\u8D77\u4F5C\u7528\u3002\u53EA\u6709 Obsidian \u547D\u4EE4\u6216\u7A7A\u5B57\u7B26\u4E32\u4F1A\u88AB\u4FDD\u5B58","add-input-button-text":"\u6DFB\u52A0\u65B0\u547D\u4EE4","command-search-placeholder-text":"Obsidian \u547D\u4EE4","move-up-tooltip":"\u4E0A\u79FB","move-down-tooltip":"\u4E0B\u79FB","delete-tooltip":"\u5220\u9664"},"custom-replace":{name:"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u66FF\u6362",description:"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u66FF\u6362\u53EF\u5C06\u4EFB\u610F\u7684\u6B63\u5219\u5339\u914D\u5185\u5BB9\u66FF\u6362\u4E3A\u6307\u5B9A\u503C\u3002\u67E5\u627E\u503C\u548C\u66FF\u6362\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684\u6B63\u5219\u8868\u8FBE\u5F0F",warning:"\u5982\u679C\u60A8\u4E0D\u77E5\u9053\u6B63\u5219\u8868\u8FBE\u5F0F\u662F\u4EC0\u4E48\uFF0C\u8BF7\u8C28\u614E\u4F7F\u7528\u3002\u53E6\u5916\uFF0C\u8BF7\u786E\u4FDD\u60A8\u4E0D\u8981\u5728 iOS \u79FB\u52A8\u8BBE\u5907\u4E0A\u4F7F\u7528\u540E\u884C\u65AD\u8A00\uFF0C\u7531\u4E8E\u8BE5\u5E73\u53F0\u4E0D\u652F\u6301\uFF0C\u4F1A\u5BFC\u81F4\u683C\u5F0F\u5316\u5931\u8D25","add-input-button-text":"\u6DFB\u52A0\u65B0\u7684\u6B63\u5219\u66FF\u6362\u89C4\u5219","regex-to-find-placeholder-text":"\u67E5\u627E\u6B63\u5219\u5F0F","flags-placeholder-text":"\u53C2\u6570","regex-to-replace-placeholder-text":"\u66FF\u6362\u6B63\u5219\u5F0F","label-placeholder-text":"\u7B80\u79F0","move-up-tooltip":"\u4E0A\u79FB","move-down-tooltip":"\u4E0B\u79FB","delete-tooltip":"\u5220\u9664"}},rules:{"auto-correct-common-misspellings":{name:"\u81EA\u52A8\u66F4\u6B63\u5E38\u89C1\u7684\u62FC\u5199\u9519\u8BEF",description:"\u901A\u8FC7\u5E38\u89C1\u62FC\u5199\u9519\u8BEF\u5B57\u5178\u81EA\u52A8\u5C06\u9519\u8BEF\u62FC\u5199\u66F4\u6B63\u4E3A\u6B63\u786E\u62FC\u5199\u3002\u6709\u5173\u81EA\u52A8\u66F4\u6B63\u5355\u8BCD\u7684\u5B8C\u6574\u5217\u8868\uFF0C\u8BF7\u53C2\u9605 [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts)","ignore-words":{name:"\u5FFD\u7565\u5355\u8BCD",description:"\u4EE5\u9017\u53F7\u5206\u9694\u7684\u5C0F\u5199\u5355\u8BCD\u5217\u8868\uFF0C\u5728\u81EA\u52A8\u66F4\u6B63\u65F6\u4F1A\u5FFD\u7565"}},"add-blockquote-indentation-on-paste":{name:"\u6DFB\u52A0\u5F15\u7528\u5757\u7F29\u8FDB",description:"\u7C98\u8D34\u65F6\uFF0C\u5982\u679C\u5149\u6807\u4F4D\u4E8E\u5F15\u7528\u884C\u6216\u6807\u6CE8\u884C\uFF0C\u5219\u5C06\u5F15\u7528\u6DFB\u52A0\u5230\u9664\u7B2C\u4E00\u884C\u4EE5\u5916\u7684\u6240\u6709\u884C"},"blockquote-style":{name:"\u5F15\u7528\u5757\u6837\u5F0F",description:"\u786E\u4FDD\u5F15\u7528\u5757\u6837\u5F0F\u4E00\u81F4",style:{name:"\u6837\u5F0F",description:"\u5F15\u7528\u5757\u6807\u5FD7\u5B57\u7B26\u7684\u6837\u5F0F"}},"capitalize-headings":{name:"\u5927\u5199\u6807\u9898",description:"\u6807\u9898\u4F1A\u5728\u683C\u5F0F\u5316\u540E\u5927\u5199",style:{name:"\u6837\u5F0F",description:"\u5927\u5199\u7684\u65B9\u5F0F"},"ignore-case-words":{name:"\u5FFD\u7565\u5927\u5199\u5355\u8BCD",description:"\u5728\u6837\u5F0F\u8BBE\u4E3A\u6BCF\u8BCD\u9996\u5B57\u6BCD\u5927\u5199\u65F6\uFF0C\u4EC5\u683C\u5F0F\u5316\u5168\u5C0F\u5199\u7684\u5355\u8BCD"},"ignore-words":{name:"\u5FFD\u7565\u5355\u8BCD",description:"\u4E0D\u683C\u5F0F\u5316\u7684\u5355\u8BCD\uFF0C\u4EE5\u9017\u53F7\u5206\u9694"},"lowercase-words":{name:"\u5C0F\u5199\u5355\u8BCD",description:"\u4FDD\u6301\u5C0F\u5199\u7684\u5355\u8BCD\uFF0C\u4EE5\u9017\u53F7\u5206\u9694"}},"compact-yaml":{name:"\u7CBE\u7B80 YAML",description:"\u79FB\u9664 YAML Front-matter \u5F00\u5934\u7ED3\u5C3E\u7684\u7A7A\u884C","inner-new-lines":{name:"\u5185\u90E8\u7A7A\u884C",description:"\u79FB\u9664 YAML Front-matter \u5185\u90E8\u7684\u7A7A\u884C"}},"consecutive-blank-lines":{name:"\u8FDE\u7EED\u7A7A\u884C",description:"\u6700\u591A\u5141\u8BB8\u4E00\u4E2A\u8FDE\u7EED\u7A7A\u884C"},"convert-bullet-list-markers":{name:"\u8F6C\u6362\u65E0\u5E8F\u5217\u8868\u6807\u5FD7",description:"\u5C06\u5176\u4ED6\u683C\u5F0F\u65E0\u5E8F\u5217\u8868\u6807\u5FD7\u8F6C\u6362\u4E3A Markdown \u683C\u5F0F\u65E0\u5E8F\u5217\u8868\u6807\u5FD7"},"convert-spaces-to-tabs":{name:"\u8F6C\u6362\u7A7A\u683C\u4E3A\u5236\u8868\u7B26",description:"\u5C06\u524D\u5BFC\u7A7A\u683C\u8F6C\u6362\u4E3A\u5236\u8868\u7B26",tabsize:{name:"\u5236\u8868\u7B26\u5BBD\u5EA6",description:"\u5236\u8868\u7B26\u5BF9\u5E94\u7684\u7A7A\u683C\u5BBD\u5EA6"}},"emphasis-style":{name:"\u7A81\u51FA\u6837\u5F0F",description:"\u4FDD\u6301\u7A81\u51FA\u6837\u5F0F\u4E00\u81F4\u6027",style:{name:"\u6837\u5F0F",description:"\u7528\u4E8E\u8868\u793A\u7A81\u51FA\u5185\u5BB9\u7684\u6837\u5F0F"}},"empty-line-around-blockquotes":{name:"\u5F15\u7528\u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u5F15\u7528\u5757\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E\u3002**\u6CE8\u610F\uFF0C\u8FD9\u91CC\u5D4C\u5957\u5F15\u7528\u5757\u4E5F\u4F1A\u6709\u5BF9\u5E94\u7684\u7A7A\u884C**"},"empty-line-around-code-fences":{name:"\u4EE3\u7801\u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u4EE3\u7801\u5757\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E"},"empty-line-around-math-blocks":{name:"Latex \u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDDLatex \u5757\u524D\u540E\u6709\u7A7A\u884C\u3002\u4F7F\u7528**\u6307\u793A Latex \u5757\u7684 `$` \u7B26\u53F7\u6570\u91CF**\u6765\u786E\u5B9A\u5355\u884C Latex \u662F\u5426\u88AB\u8BA4\u5B9A\u4E3A Latex \u5757"},"empty-line-around-tables":{name:"\u8868\u683C\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u8868\u683C\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E"},"escape-yaml-special-characters":{name:"\u8F6C\u4E49 YAML \u7279\u6B8A\u5B57\u7B26",description:`\u8F6C\u4E49 YAML \u4E2D\u7684\u5192\u53F7(: )\uFF0C\u5355\u5F15\u53F7 (') \u548C\u53CC\u5F15\u53F7 (")`,"try-to-escape-single-line-arrays":{name:"\u5C1D\u8BD5\u8F6C\u4E49\u5355\u884C\u6570\u7EC4",description:"\u5C1D\u8BD5\u8F6C\u4E49\u6570\u7EC4\u503C\uFF0C\u5047\u8BBE\u6570\u7EC4\u4EE5`[`\u5F00\u5934\uFF0C`]`\u7ED3\u5C3E\uFF0C\u5E76\u4E14\u7531`,`\u5206\u9694"}},"file-name-heading":{name:"\u6587\u4EF6\u540D\u4F5C\u4E3A\u6807\u9898",description:"\u5982\u679C\u6CA1\u6709 H1 \u6807\u9898\uFF0C\u5219\u63D2\u5165\u6587\u4EF6\u540D\u4F5C\u4E3A H1 \u6807\u9898"},"footnote-after-punctuation":{name:"\u811A\u6CE8\u5728\u6807\u70B9\u7B26\u53F7\u540E",description:"\u786E\u4FDD\u811A\u6CE8\u5F15\u7528\u7F6E\u4E8E\u6807\u70B9\u7B26\u53F7\u4E4B\u540E\uFF0C\u800C\u4E0D\u662F\u4E4B\u524D"},"force-yaml-escape":{name:"\u5F3A\u5236 YAML \u8F6C\u4E49",description:"\u8F6C\u4E49\u6307\u5B9A YAML \u952E\u7684\u503C","force-yaml-escape-keys":{name:"\u8981\u5F3A\u5236\u8F6C\u79FB\u7684 YAML \u952E",description:"\u5982\u679C\u672A\u8F6C\u4E49\uFF0C\u5219\u4F7F\u7528 YAML \u8F6C\u4E49\u5B57\u7B26\u5BF9\u6307\u5B9A YAML \u952E\u8FDB\u884C\u8F6C\u4E49\uFF0C\u6BCF\u4E2A\u952E\u4E00\u884C\u3002 \u4E0D\u8981\u5BF9 YAML \u6570\u7EC4\u4F7F\u7528"}},"format-tags-in-yaml":{name:"\u683C\u5F0F\u5316 YAML \u4E2D\u7684 tags",description:"\u628A YAML Front-matter \u4E2D tag \u7684\u4E95\u53F7\u5220\u9664\uFF0C\u56E0\u4E3A\u4E95\u53F7\u4F1A\u4F7F tag \u65E0\u6548"},"format-yaml-array":{name:"\u683C\u5F0F\u5316 YAML \u6570\u7EC4",description:"\u5141\u8BB8\u5C06\u5E38\u89C4 YAML \u6570\u7EC4\u683C\u5F0F\u5316\u4E3A\u591A\u884C\u6216\u5355\u884C\uFF0C\u5E76\u5141\u8BB8\u90E8\u5206\u6570\u7EC4(`tags`, `aliases`) \u4FDD\u7559 Obsidian \u539F\u6709\u7684 YAML \u683C\u5F0F\u3002\u8BF7\u6CE8\u610F\uFF0C\u5355\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u5355\u884C\uFF0C\u5982\u679C\u5B58\u5728\u591A\u4E2A\u6761\u76EE\uFF0C\u5219\u4F1A\u53D8\u4E3A\u5355\u884C\u6570\u7EC4\u3002\u5BF9\u4E8E\u5355\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u591A\u884C\uFF0C\u60C5\u51B5\u4E5F\u662F\u5982\u6B64\uFF0C\u53EA\u662F\u5B83\u53D8\u6210\u4E86\u591A\u884C\u6570\u7EC4","alias-key":{name:"\u683C\u5F0F\u5316 YAML aliases",description:"\u6253\u5F00 YAML aliases \u90E8\u5206\u7684\u683C\u5F0F\u8BBE\u7F6E\u3002\u4E0D\u5E94\u4E0E\u89C4\u5219`YAML \u6807\u9898\u522B\u540D`\u540C\u65F6\u542F\u7528\uFF0C\u56E0\u4E3A\u5B83\u4EEC\u53EF\u80FD\u4E0D\u4F1A\u5F88\u597D\u5730\u534F\u540C\u5DE5\u4F5C\uFF0C\u6216\u8005\u5B83\u4EEC\u53EF\u80FD\u6709\u4E0D\u540C\u7684\u683C\u5F0F\u6837\u5F0F\u9009\u62E9\uFF0C\u4ECE\u800C\u5BFC\u81F4\u610F\u5916\u7ED3\u679C"},"tag-key":{name:"\u683C\u5F0F\u5316 YAML tags",description:"\u6253\u5F00 YAML tags \u90E8\u5206\u7684\u683C\u5F0F\u8BBE\u7F6E"},"default-array-style":{name:"\u9ED8\u8BA4\u7684 YAML \u6570\u7EC4\u683C\u5F0F",description:"\u9664\u4E86 tags, aliases \u6216\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u5355\u884C\u6570\u7EC4\u548C\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u591A\u884C\u6570\u7EC4\u4E4B\u5916\uFF0C\u5176\u4ED6\u4E3A\u5E38\u89C4 YAML \u6570\u7EC4\u7684\u6837\u5F0F"},"default-array-keys":{name:"\u683C\u5F0F\u5316 YAML \u6570\u7EC4",description:"\u5BF9 YAML \u6570\u7EC4\u8FDB\u884C\u683C\u5F0F\u5316"},"force-single-line-array-style":{name:"\u5F3A\u5236\u8F6C\u4E3A\u5355\u884C\u6570\u7EC4",description:"\u5F3A\u5236\u5C06\u6307\u5B9A\u952E\u7684 YAML \u6570\u7EC4\u8F6C\u4E3A\u5355\u884C\u6570\u7EC4\uFF0C\u6309\u884C\u5206\u9694\uFF08\u7559\u7A7A\u4EE5\u7981\u7528\u6B64\u9009\u9879\uFF09"},"force-multi-line-array-style":{name:"\u5F3A\u5236\u8F6C\u4E3A\u591A\u884C\u6570\u7EC4",description:"\u5F3A\u5236\u5C06\u6307\u5B9A\u952E\u7684 YAML \u6570\u7EC4\u8F6C\u4E3A\u591A\u884C\u6570\u7EC4\uFF0C\u6309\u884C\u5206\u9694\uFF08\u7559\u7A7A\u4EE5\u7981\u7528\u6B64\u9009\u9879\uFF09"}},"header-increment":{name:"\u6807\u9898\u7EA7\u522B\u9012\u589E",description:"\u6807\u9898\u4E00\u6B21\u4EC5\u9012\u589E\u4E00\u4E2A\u7EA7\u522B","start-at-h2":{name:"\u4ECE H2 \u6807\u9898\u5F00\u59CB\u9012\u589E",description:"\u4F7F H2 \u6807\u9898\u6210\u4E3A\u6587\u4EF6\u4E2D\u7684\u6700\u5C0F\u6807\u9898\u7EA7\u522B\uFF0C\u5176\u4ED6\u7EA7\u522B\u7684\u6807\u9898\u8FDB\u884C\u76F8\u5E94\u7684\u9012\u63A8"}},"heading-blank-lines":{name:"\u6807\u9898\u7A7A\u884C",description:"\u4FDD\u8BC1\u6240\u6709\u6807\u9898\u524D\u540E\u5747\u6709\u4E00\u4E2A\u7A7A\u884C\uFF08\u9664\u975E\u6807\u9898\u4F4D\u4E8E\u6587\u6863\u5F00\u5934\u6216\u7ED3\u5C3E\u5904\uFF09",bottom:{name:"\u5E95\u90E8",description:"\u5728\u6807\u9898\u540E\u63D2\u5165\u4E00\u4E2A\u7A7A\u884C"},"empty-line-after-yaml":{name:"YAML \u4E0E\u6807\u9898\u4E4B\u95F4\u7684\u7A7A\u884C",description:"\u4FDD\u7559 YAML Front-matter \u548C\u6807\u9898\u4E4B\u95F4\u7684\u7A7A\u884C"}},"headings-start-line":{name:"\u6807\u9898\u5BF9\u9F50\u884C\u9996",description:"\u5C06\u4E0D\u4EE5\u884C\u9996\u5F00\u59CB\u7684\u6807\u9898\u524D\u9762\u7684\u7A7A\u767D\u5220\u9664\uFF0C\u6807\u9898\u80FD\u88AB\u6B63\u786E\u8BC6\u522B"},"insert-yaml-attributes":{name:"\u63D2\u5165 YAML \u5C5E\u6027",description:"\u628A\u6307\u5B9A\u7684 YAML \u952E\u63D2\u5165\u5230 YAML Front-matter \u4E2D\u3002\u6BCF\u4E2A\u952E\u5360\u4E00\u884C","text-to-insert":{name:"\u8981\u63D2\u5165\u7684\u952E",description:"\u8981\u63D2\u5165\u5230 YAML Front-matter \u4E2D\u7684\u952E"}},"line-break-at-document-end":{name:"\u6587\u4EF6\u7ED3\u5C3E\u6362\u884C",description:"\u786E\u4FDD\u6587\u6863\u7ED3\u5C3E\u6709\u4E00\u884C\u7A7A\u884C"},"move-footnotes-to-the-bottom":{name:"\u79FB\u52A8\u811A\u6CE8\u81F3\u5E95\u90E8",description:"\u5C06\u6240\u6709\u811A\u6CE8\u79FB\u52A8\u5230\u6587\u6863\u5E95\u90E8"},"move-math-block-indicators-to-their-own-line":{name:"\u683C\u5F0F\u5316 Latex \u5757\u6807\u5FD7",description:"\u5C06 Latex \u5757\u6807\u5FD7\u79FB\u5230\u65B0\u884C\u3002\u4F7F\u7528**\u6307\u793A Latex \u5757\u7684 `$` \u7B26\u53F7\u6570\u91CF**\u6765\u786E\u5B9A\u5355\u884C Latex \u662F\u5426\u88AB\u8BA4\u5B9A\u4E3A Latex \u5757"},"move-tags-to-yaml":{name:"\u5C06 tags \u79FB\u81F3 YAML",description:"\u5C06\u6587\u6863\u5185\u6240\u6709\u7684 tags \u79FB\u52A8\u5230 YAML Front-matter \u5185","how-to-handle-existing-tags":{name:"\u5982\u4F55\u5904\u7406\u539F\u6709\u7684 tag",description:"\u5BF9\u4E8E\u6587\u6863\u4E2D\u975E\u88AB\u5FFD\u7565\u7684 tag\uFF0C\u79FB\u52A8\u5230 YAML Front-matter \u540E\u5E94\u8BE5\u91C7\u53D6\u4F55\u79CD\u64CD\u4F5C\uFF1F"},"tags-to-ignore":{name:"\u5FFD\u7565\u7684 tag",description:"\u8FD9\u4E9B tags \u4E0D\u4F1A\u88AB\u79FB\u52A8 YAML Front-matter \u4E2D\u3002\u6BCF\u4E2A tag \u6309\u884C\u5206\u9694\uFF0C\u4E0D\u8981\u5305\u542B`#`"}},"no-bare-urls":{name:"\u7981\u6B62\u539F\u59CB URL",description:"\u9664\u975E\u88AB\u53CD\u5F15\u53F7\u3001\u65B9\u62EC\u53F7\u6216\u5355\u5F15\u53F7/\u53CC\u5F15\u53F7\u5305\u56F4\uFF0C\u5426\u5219\u5C06\u539F\u59CB URL \u7528\u5C16\u62EC\u53F7\u5305\u56F4"},"ordered-list-style":{name:"\u6709\u5E8F\u5217\u8868\u6837\u5F0F",description:"\u786E\u4FDD\u6709\u5E8F\u5217\u8868\u9075\u5FAA\u6307\u5B9A\u7684\u6837\u5F0F\u3002\u8BF7\u6CE8\u610F\uFF0C2\u4E2A\u7A7A\u683C\u62161\u4E2A\u5236\u8868\u7B26\u88AB\u89C6\u4E3A\u4E00\u4E2A\u7F29\u8FDB\u7EA7\u522B","number-style":{name:"\u6392\u5E8F\u65B9\u5F0F",description:"\u6709\u5E8F\u5217\u8868\u5E8F\u53F7\u683C\u5F0F\u5316\u65B9\u5F0F"},"list-end-style":{name:"\u6709\u5E8F\u5217\u8868\u6807\u5FD7\u6837\u5F0F",description:"\u6709\u5E8F\u5217\u8868\u6807\u5FD7\u6837\u5F0F"}},"paragraph-blank-lines":{name:"\u6BB5\u843D\u7A7A\u884C",description:"\u6BCF\u4E2A\u6BB5\u843D\u524D\u540E\u4FDD\u8BC1\u6709\u4E14\u4EC5\u6709\u4E00\u884C\u7A7A\u884C"},"prevent-double-checklist-indicator-on-paste":{name:"\u9632\u6B62\u91CD\u590D\u7684 checklist \u6807\u5FD7",description:"\u7C98\u8D34\u65F6\uFF0C\u5982\u679C\u5149\u6807\u6240\u5728\u884C\u6709 checklist \u6807\u5FD7\uFF0C\u5219\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664 checklist \u6807\u5FD7"},"prevent-double-list-item-indicator-on-paste":{name:"\u9632\u6B62\u91CD\u590D\u7684\u5217\u8868\u6807\u5FD7",description:"\u7C98\u8D34\u65F6\uFF0C\u5982\u679C\u5149\u6807\u6240\u5728\u884C\u6709\u5217\u8868\u6807\u5FD7\uFF0C\u5219\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u5217\u8868\u6807\u5FD7"},"proper-ellipsis-on-paste":{name:"\u6B63\u786E\u7684\u7701\u7565\u53F7",description:"\u7C98\u8D34\u65F6\uFF0C\u5373\u4F7F\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u6709\u7A7A\u683C\uFF0C\u4E5F\u7528\u7701\u7565\u53F7\u66FF\u6362\u4E09\u4E2A\u8FDE\u7EED\u7684\u70B9"},"proper-ellipsis":{name:"\u6B63\u786E\u7684\u7701\u7565\u53F7",description:"\u7528\u7701\u7565\u53F7\u66FF\u6362\u4E09\u4E2A\u8FDE\u7EED\u7684\u70B9"},"quote-style":{name:"\u5F15\u53F7\u6837\u5F0F",description:"\u683C\u5F0F\u5316\u6B63\u6587\u5185\u5BB9\u4E2D\u7684\u5F15\u53F7\u6837\u5F0F\u4E3A\u5355\u5F15\u53F7\u6216\u53CC\u5F15\u53F7","single-quote-enabled":{name:"\u542F\u7528\u5355\u5F15\u53F7\u6837\u5F0F",description:"\u6307\u5B9A\u5E94\u4F7F\u7528\u9009\u5B9A\u7684\u5355\u5F15\u53F7\u6837\u5F0F"},"single-quote-style":{name:"\u5355\u5F15\u53F7\u6837\u5F0F",description:"\u8981\u4F7F\u7528\u7684\u5355\u5F15\u53F7\u6837\u5F0F"},"double-quote-enabled":{name:"\u542F\u7528\u53CC\u5F15\u53F7\u6837\u5F0F",description:"\u6307\u5B9A\u5E94\u4F7F\u7528\u9009\u5B9A\u7684\u53CC\u5F15\u53F7\u6837\u5F0F"},"double-quote-style":{name:"\u53CC\u5F15\u53F7\u6837\u5F0F",description:"\u8981\u4F7F\u7528\u7684\u53CC\u5F15\u53F7\u6837\u5F0F"}},"re-index-footnotes":{name:"\u91CD\u65B0\u7D22\u5F15\u811A\u6CE8",description:"\u57FA\u4E8E\u51FA\u73B0\u7684\u987A\u5E8F\u91CD\u65B0\u7D22\u5F15\u811A\u6CE8\u3002**\u6CE8\u610F\uFF0C\u5982\u679C\u4E00\u4E2A\u952E\u5BF9\u5E94\u591A\u4E2A\u811A\u6CE8\uFF0C\u5219\u6B64\u89C4\u5219\u4E0D\u9002\u7528**"},"remove-consecutive-list-markers":{name:"\u79FB\u9664\u91CD\u590D\u7684\u5217\u8868\u6807\u5FD7",description:"\u79FB\u9664\u91CD\u590D\u7684\u5217\u8868\u6807\u5FD7\u3002\u590D\u5236\u7C98\u8D34\u5217\u8868\u9879\u65F6\u5F88\u6709\u7528"},"remove-empty-lines-between-list-markers-and-checklists":{name:"\u79FB\u9664\u5217\u8868\u548C checklist \u9879\u76EE\u4E4B\u95F4\u7684\u7A7A\u884C",description:"\u5217\u8868\u548C checklist \u9879\u76EE\u4E4B\u95F4\u4E0D\u5E94\u6709\u7A7A\u884C"},"remove-empty-list-markers":{name:"\u79FB\u9664\u7A7A\u7684\u5217\u8868\u6807\u5FD7",description:"\u79FB\u9664\u7A7A\u7684\u5217\u8868\u6807\u5FD7\uFF0C\u6BD4\u5982\u5217\u8868\u540E\u6CA1\u5185\u5BB9"},"remove-hyphenated-line-breaks":{name:"\u79FB\u9664\u8FDE\u5B57\u7B26",description:"\u79FB\u9664\u4E2D\u5212\u7EBF\u8FDE\u5B57\u7B26\u3002\u4ECE\u6587\u7AE0\u4E2D\u7C98\u8D34\u65F6\u5F88\u6709\u7528"},"remove-hyphens-on-paste":{name:"\u79FB\u9664\u8FDE\u5B57\u7B26",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u8FDE\u5B57\u7B26"},"remove-leading-or-trailing-whitespace-on-paste":{name:"\u79FB\u9664\u524D\u5BFC\u6216\u5C3E\u968F\u7A7A\u683C",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u4EFB\u4F55\u524D\u5BFC\u975E\u5236\u8868\u7B26\u7A7A\u683C\u548C\u6240\u6709\u5C3E\u968F\u7A7A\u683C"},"remove-leftover-footnotes-from-quote-on-paste":{name:"\u79FB\u9664\u591A\u4F59\u811A\u6CE8",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u591A\u4F59\u811A\u6CE8"},"remove-link-spacing":{name:"\u79FB\u9664\u94FE\u63A5\u7A7A\u683C",description:"\u79FB\u9664\u94FE\u63A5\u6587\u672C\u9996\u5C3E\u7684\u7A7A\u683C"},"remove-multiple-blank-lines-on-paste":{name:"\u79FB\u9664\u91CD\u590D\u7A7A\u884C",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u5C06\u591A\u4E2A\u7A7A\u884C\u538B\u7F29\u4E3A\u4E00\u4E2A\u7A7A\u884C"},"remove-multiple-spaces":{name:"\u79FB\u9664\u91CD\u590D\u7A7A\u683C",description:"\u79FB\u9664\u4E24\u4E2A\u6216\u66F4\u591A\u8FDE\u7EED\u7684\u7A7A\u683C\uFF0C\u5FFD\u7565\u884C\u9996\u548C\u884C\u5C3E\u7684\u7A7A\u683C"},"remove-space-around-characters":{name:"\u79FB\u9664\u5B57\u7B26\u5468\u56F4\u7684\u7A7A\u683C",description:"\u786E\u4FDD\u67D0\u4E9B\u5B57\u7B26\u5468\u56F4\u6CA1\u6709\u7A7A\u683C\uFF08\u5305\u62EC\u5355\u4E2A\u7A7A\u683C\u6216\u5236\u8868\u7B26\uFF09\u3002**\u6CE8\u610F\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\u5F71\u54CD markdown \u683C\u5F0F**","include-fullwidth-forms":{name:"\u5305\u62EC\u5168\u89D2\u5F62\u5F0F",description:'\u5305\u62EC\u5168\u89D2\u5F62\u5F0FUnicode\u5757'},"include-cjk-symbols-and-punctuation":{name:"\u5305\u62ECCJK\u7B26\u53F7\u548C\u6807\u70B9",description:'\u5305\u62ECCJK\u7B26\u53F7\u548C\u6807\u70B9Unicode\u5757'},"include-dashes":{name:"\u5305\u62EC\u7834\u6298\u53F7",description:"\u5305\u62EC en dash (\u2013) \u548C em dash (\u2014)"},"other-symbols":{name:"\u5176\u4ED6\u7B26\u53F7",description:"\u8981\u5305\u62EC\u7684\u5176\u4ED6\u7B26\u53F7"}},"remove-space-before-or-after-characters":{name:"\u79FB\u9664\u5B57\u7B26\u524D\u540E\u7684\u7A7A\u683C",description:"\u79FB\u9664\u6307\u5B9A\u5B57\u7B26\u4E4B\u524D\u548C\u6307\u5B9A\u5B57\u7B26\u4E4B\u540E\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF0C\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5BFC\u81F4 markdown \u683C\u5F0F\u51FA\u73B0\u95EE\u9898**","characters-to-remove-space-before":{name:"\u79FB\u9664\u5B57\u7B26\u524D\u7684\u7A7A\u683C",description:"\u79FB\u9664\u6307\u5B9A\u5B57\u7B26\u524D\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF0C\u5728\u5B57\u7B26\u5217\u8868\u4E2D\u4F7F\u7528`{`\u6216`}`\u4F1A\u610F\u5916\u5F71\u54CD\u6587\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5728\u7A0B\u5E8F\u540E\u53F0\u7684\u5FFD\u7565\u8BED\u6CD5\u4E2D\u4F7F\u7528**"},"characters-to-remove-space-after":{name:"\u79FB\u9664\u5B57\u7B26\u540E\u7684\u7A7A\u683C",description:"\u79FB\u9664\u6307\u5B9A\u5B57\u7B26\u540E\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF0C\u5728\u5B57\u7B26\u5217\u8868\u4E2D\u4F7F\u7528`{`\u6216`}`\u4F1A\u610F\u5916\u5F71\u54CD\u6587\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5728\u7A0B\u5E8F\u540E\u53F0\u7684\u5FFD\u7565\u8BED\u6CD5\u4E2D\u4F7F\u7528**"}},"remove-trailing-punctuation-in-heading":{name:"\u79FB\u9664\u6807\u9898\u4E2D\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7",description:"\u4ECE\u6807\u9898\u7684\u672B\u5C3E\u5220\u9664\u6307\u5B9A\u7684\u6807\u70B9\u7B26\u53F7\uFF0C\u786E\u4FDD\u5FFD\u7565[HTML \u5B57\u7B26\u5B9E\u4F53](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references)\u672B\u5C3E\u7684\u5206\u53F7","punctuation-to-remove":{name:"\u8981\u5220\u9664\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7",description:"\u8981\u4ECE\u6587\u4EF6\u6807\u9898\u7ED3\u5C3E\u4E2D\u5220\u9664\u7684\u6807\u70B9\u7B26\u53F7"}},"remove-yaml-keys":{name:"\u79FB\u9664 YAML \u952E",description:"\u79FB\u9664\u6307\u5B9A\u7684 YAML \u952E","yaml-keys-to-remove":{name:"\u9700\u8981\u79FB\u9664\u7684 YAML \u952E",description:"\u8981\u4ECE YAML Front-matter \u4E2D\u5220\u9664\u7684 YAML \u952E \uFF08\u53EF\u5E26\u6216\u4E0D\u5E26\u5192\u53F7\uFF09"}},"space-after-list-markers":{name:"\u5217\u8868\u6807\u5FD7\u7A7A\u683C",description:"\u5217\u8868\u6807\u5FD7\u548C checkbox \u540E\u5E94\u6709\u4E00\u4E2A\u7A7A\u683C"},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"\u4E2D\u65E5\u97E9\u8BED\u4E0E\u82F1\u8BED\u6216\u6570\u5B57\u4E4B\u95F4\u7684\u7A7A\u683C",description:"\u786E\u4FDD\u4E2D\u6587\u3001\u65E5\u6587\u6216\u97E9\u6587\u548C\u82F1\u6587\u6216\u6570\u5B57\u7531\u5355\u4E2A\u7A7A\u683C\u5206\u9694. [\u53C2\u8003\u94FE\u63A5](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"\u7C97\u4F53\u6837\u5F0F",description:"\u786E\u4FDD\u7C97\u4F53\u6837\u5F0F\u4E00\u81F4",style:{name:"\u6837\u5F0F",description:"\u7528\u4E8E\u8868\u793A\u7C97\u4F53\u7684\u6837\u5F0F"}},"trailing-spaces":{name:"\u672B\u5C3E\u7A7A\u683C",description:"\u79FB\u9664\u6BCF\u884C\u672B\u5C3E\u591A\u4F59\u7684\u7A7A\u683C","twp-space-line-break":{name:"\u4E24\u7A7A\u683C\u6362\u884C",description:'\u5FFD\u7565\u4E24\u4E2A\u7A7A\u683C\u540E\u63A5\u6362\u884C\u7B26\u7684\u60C5\u51B5\uFF08"\u4E24\u7A7A\u683C\u89C4\u5219"\uFF09'}},"two-spaces-between-lines-with-content":{name:"\u5185\u5BB9\u95F4\u9694\u4E24\u4E2A\u7A7A\u683C",description:"\u786E\u4FDD\u5728\u6BB5\u843D\u3001\u5F15\u7528\u548C\u5217\u8868\u9879\u4E2D\uFF0C\u6700\u540E\u4E00\u884C\u5185\u5BB9\u7684\u884C\u672B\u6DFB\u52A0\u4E24\u4E2A\u7A7A\u683C"},"unordered-list-style":{name:"\u65E0\u5E8F\u5217\u8868\u6837\u5F0F",description:"\u786E\u4FDD\u65E0\u5E8F\u5217\u8868\u7B26\u5408\u6307\u5B9A\u7684\u6837\u5F0F","list-style":{name:"\u5217\u8868\u9879\u6837\u5F0F",description:"\u5217\u8868\u9879\u9700\u8981\u6307\u5B9A\u7684\u6837\u5F0F"}},"yaml-key-sort":{name:"YAML \u952E\u6392\u5E8F",description:"\u6839\u636E\u6307\u5B9A\u7684\u987A\u5E8F\u548C\u4F18\u5148\u7EA7\u5BF9 YAML \u952E\u8FDB\u884C\u6392\u5E8F\u3002**\u6CE8\u610F\uFF0C\u4E5F\u8BB8\u4E5F\u4F1A\u5220\u9664\u7A7A\u884C**","yaml-key-priority-sort-order":{name:"YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F",description:"\u5BF9\u952E\u8FDB\u884C\u6392\u5E8F\u7684\u987A\u5E8F\uFF0C\u6BCF\u884C\u4E00\u4E2A\u952E\uFF0C\u6309\u5217\u8868\u4E2D\u7684\u987A\u5E8F\u8FDB\u884C\u6392\u5E8F"},"priority-keys-at-start-of-yaml":{name:"\u6392\u5E8F\u952E\u653E\u5728 YAML \u5F00\u5934",description:"\u6309\u7167 `YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F`\u5C06\u952E\u653E\u4E8E YAML Front-matter \u5F00\u5934"},"yaml-sort-order-for-other-keys":{name:"YAML \u5176\u5B83\u952E\u7684\u6392\u5E8F\u987A\u5E8F",description:"\u5BF9 `YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F`\u4E2D\u672A\u627E\u5230\u7684\u952E\u8FDB\u884C\u6392\u5E8F"}},"yaml-timestamp":{name:"YAML \u65F6\u95F4\u6233",description:"\u5728 YAML Front-matter \u4E2D\u8BB0\u5F55\u4E0A\u6B21\u7F16\u8F91\u6587\u6863\u7684\u65E5\u671F\u3002\u4ECE\u6587\u6863\u5143\u6570\u636E\u4E2D\u83B7\u53D6\u65E5\u671F\u6570\u636E","date-created":{name:"\u521B\u5EFA\u65E5\u671F",description:"\u63D2\u5165\u6587\u4EF6\u7684\u521B\u5EFA\u65E5\u671F"},"date-created-key":{name:"\u521B\u5EFA\u65E5\u671F\u952E\u540D",description:"\u4F7F\u7528\u54EA\u4E2A YAML \u952E\u6765\u8868\u793A\u521B\u5EFA\u65E5\u671F"},"force-retention-of-create-value":{name:"\u5F3A\u5236\u4FDD\u7559\u521B\u5EFA\u65E5\u671F\u503C",description:"\u6CBF\u7528 YAML Front-matter \u4E2D\u5DF2\u6709\u7684\u521B\u5EFA\u65E5\u671F\uFF0C\u5FFD\u7565\u6587\u6863\u5143\u6570\u636E\u3002\u5BF9\u4E8E\u6587\u6863\u5143\u6570\u636E\u66F4\u6539\uFF08\u6BD4\u5982\u590D\u5236\u6587\u4EF6\uFF09\u5BFC\u81F4\u7684\u521B\u5EFA\u65F6\u95F4\u66F4\u6539\u975E\u5E38\u6709\u7528"},"date-modified":{name:"\u4FEE\u6539\u65E5\u671F",description:"\u63D2\u5165\u6587\u4EF6\u7684\u6700\u8FD1\u4E00\u6B21\u7684\u4FEE\u6539\u65E5\u671F"},"date-modified-key":{name:"\u4FEE\u6539\u65E5\u671F\u952E\u540D",description:"\u4F7F\u7528\u54EA\u4E2A YAML \u952E\u6765\u8868\u793A\u4FEE\u6539\u65E5\u671F"},format:{name:"\u683C\u5F0F",description:"Moment.js \u8BED\u6CD5\u683C\u5F0F\uFF08\u8BE6\u60C5\u8BBE\u7F6E\u89C1[Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/)"}},"yaml-title-alias":{name:"YAML \u6807\u9898\u522B\u540D",description:"\u5C06\u6587\u6863\u7684\u6807\u9898\u63D2\u5165 YAML Front-matter \u7684 aliases \u90E8\u5206\u3002\u4ECE\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u6216\u6587\u6863\u540D\u4E2D\u83B7\u53D6\u503C","preserve-existing-alias-section-style":{name:"\u4FDD\u7559\u73B0\u6709\u522B\u540D\u90E8\u5206\u6837\u5F0F",description:"\u5982\u679C\u8BBE\u7F6E\uFF0C\u6B64\u9879\u4EC5\u5728\u65B0\u521B\u5EFA\u7684\u522B\u540D\u90E8\u5206\u751F\u6548"},"keep-alias-that-matches-the-filename":{name:"\u786E\u4FDD\u522B\u540D\u4E0E\u6587\u4EF6\u540D\u5339\u914D",description:"\u8FD9\u6837\u7684\u522B\u540D\u901A\u5E38\u662F\u5197\u4F59\u7684"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"\u4F7F\u7528 YAML \u952E `linter-yaml-title-alias` \u6765\u4FDD\u7559\u6807\u9898\u4FEE\u6539\u8BB0\u5F55",description:"\u5982\u679C\u8BBE\u7F6E\uFF0C\u5F53\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u66F4\u6539\u6216\u6587\u6863\u540D\u66F4\u6539\u65F6\uFF0C\u6B64\u952E\u4E2D\u5B58\u50A8\u7684\u65E7 aliases \u5C06\u66FF\u6362\u4E3A\u65B0\u503C\uFF0C\u800C\u4E0D\u4EC5\u4EC5\u662F\u5728 aliases \u4E2D\u63D2\u5165\u65B0\u6761\u76EE"}},"yaml-title":{name:"YAML \u6807\u9898",description:"\u5C06\u6587\u4EF6\u7684\u6807\u9898\u63D2\u5165\u5230 YAML Front-matter \u4E2D\u3002 \u6839\u636E\u6240\u9009\u6A21\u5F0F\u83B7\u53D6\u6807\u9898","title-key":{name:"\u6807\u9898\u952E",description:"\u6807\u9898\u4F7F\u7528\u54EA\u4E00\u4E2A YAML \u952E"},mode:{name:"\u6A21\u5F0F",description:"\u7528\u4E8E\u83B7\u53D6\u6807\u9898\u7684\u65B9\u6CD5"}}},enums:{"Title Case":"\u6BCF\u8BCD\u9996\u5B57\u6BCD\u5927\u5199","ALL CAPS":"\u5168\u90E8\u5927\u5199","First letter":"\u4EC5\u9996\u5B57\u6BCD\u5927\u5199",".":".",")":")",ERROR:"ERROR",TRACE:"TRACE",DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",SILENT:"SILENT",ascending:"\u5347\u5E8F",lazy:"\u5168\u4E3A1",Nothing:"\u65E0","Remove hashtag":"\u79FB\u9664hashtag","Remove whole tag":"\u79FB\u9664\u6574\u4E2A tag",asterisk:"\u661F\u53F7(*)",underscore:"\u4E0B\u5212\u7EBF(_)",consistent:"\u4FDD\u6301\u4E00\u81F4","-":"-","*":"*","+":"+",space:"\u6709\u7A7A\u683C","no space":"\u65E0\u7A7A\u683C",None:"\u65E0","Ascending Alphabetical":"\u6309\u5B57\u6BCD\u987A\u5E8F\u5347\u5E8F","Descending Alphabetical":"\u6309\u5B57\u6BCD\u987A\u5E8F\u964D\u5E8F","multi-line":"\u591A\u884C\u6570\u7EC4","single-line":"\u5355\u884C\u6570\u7EC4","single string to single-line":"\u5B57\u7B26\u4E32\u8F6C\u5355\u884C\u6570\u7EC4","single string to multi-line":"\u5B57\u7B26\u4E32\u8F6C\u591A\u884C\u6570\u7EC4","single string comma delimited":"\u9017\u53F7\u5206\u9694\u5B57\u7B26\u4E32","single string space delimited":"\u7A7A\u683C\u5206\u9694\u5B57\u7B26\u4E32","single-line space delimited":"\u7A7A\u683C\u5206\u9694\u5355\u884C\u6570\u7EC4","first-h1":"\u7B2C\u4E00\u4E2A H1 \u6807\u9898","first-h1-or-filename-if-h1-missing":"\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u6216\u6587\u4EF6\u540D\uFF08\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u4E0D\u5B58\u5728\u65F6\uFF09",filename:"\u6587\u4EF6\u540D","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var yd={};var bd={ar:Zc,cz:Jc,da:Xc,de:ed,en:So,es:id,fr:td,hi:nd,id:rd,it:ad,ja:sd,ko:od,nl:ld,no:cd,pl:dd,"pt-BR":pd,pt:ud,ro:md,ru:gd,sq:hd,tr:ka,uk:ka,"zh-TW":yd,zh:fd},Sa="en",za=bd[Sa];function Aa(e){Sa=e,za=bd[Sa||"en"]}function T(e){return za||rt(`locale not found for '${Sa}'`),za&&On(za,e)||On(So,e)}var La=function(e){if(e==null)return zh;if(typeof e=="string")return kh(e);if(typeof e=="object")return Array.isArray(e)?xh(e):wh(e);if(typeof e=="function")return Ta(e);throw new Error("Expected function, string, or object as test")};function xh(e){let t=[],i=-1;for(;++i":""))+")"})}return u;function u(){let m=[],g,h,v;if((!t||r(o,l,d[d.length-1]||null))&&(m=Sh(i(o,d)),m[0]===Ea))return m;if(o.children&&m[0]!==Lo)for(h=(n?o.children.length:-1)+a,v=d.concat(o);h>-1&&h=0;){let r=e.charAt(n);if(r===` +`)break;r.trim()===""||r===">"?i=r+i:i="",n--}return[i,n]}function Eo(e=""){let[t]=xd(e,e.length);return` +`+t.trim()}function wd(e="",t=!1,i=1){let n=Eo(e),r=qn(n,">");return(t||Oo.test(e))&&i===r?n.substring(0,n.lastIndexOf(">")):n}function Ah(e,t){if(t===0)return e;let i=t,n=t;for(;i>=0;){let r=e.charAt(i);if(r.trim()!=="")break;r===` `&&(n=i),i--}return i<0||n===0?e.substring(t+1):e.substring(0,n)+` -`+e.substring(t)}function Zg(e,t,i){if(i===0)return e;let n=t.split(">").length-1,r=i,a=i,s=0,o=!1,l="";for(;r>=0;){let g=e.charAt(r);if(g.trim()!==""&&g!==">")break;if(g===">"){if(o)break;s++}else if(g===` -`)if(s===0||s===n||s+1===n)a=r,s=0,l===` -`&&(o=!0);else break;r--,l=g}if(r<0||a===0)return e.substring(i+1);let d=e.substring(a,i);if(d===` -`||d.startsWith(` +`+e.substring(t)}function Lh(e,t,i,n=!1,r=!1){if(i===0)return e;let a=t.split(">").length-1,s=i,o=i,l=0,d=!1,c="";for(;s>=0;){let x=e.charAt(s);if(x.trim()!==""&&x!==">")break;if(x===">"){if(d)break;l++}else if(x===` +`)if(l===0||l===a||l+1===a)o=s,l=0,c===` +`&&(d=!0);else break;s--,c=x}if(s<0||o===0)return e.substring(i+1);let u=e.substring(o,i);if(u===` +`||u.startsWith(` -`))return e.substring(0,a)+` -`+e.substring(i);let u=e.lastIndexOf(` -`,a-1),m="";return u===-1?m=e.substring(0,a):m=e.substring(u,a),e.substring(0,a)+ed(m)+e.substring(i)}function Jg(e,t){if(t===e.length-1)return e;let i=t,n=t,r=!0;for(;i").length-1,r=i,a=i,s=!0,o=0,l=!1,d="";for(;r")break;if(h===">"){if(l)break;o++}else if(h===` -`)if(o===0||o===n||o+1===n)o=0,s?s=!1:a=r,d===` -`&&(l=!0);else break;r++,d=h}if(r===e.length||a===e.length-1)return e.substring(0,i);let c=e.substring(i,a);if(c===` -`||c.endsWith(` +`+e.substring(n)}function Eh(e,t,i,n=!1,r=!1){if(i===e.length-1)return e;let a=t.split(">").length-1,s=i,o=i,l=!0,d=0,c=!1,u="";for(;s")break;if(w===">"){if(c)break;d++}else if(w===` +`)if(d===0||d===a||d+1===a)d=0,l?l=!1:o=s,u===` +`&&(c=!0);else break;s++,u=w}if(s===e.length||o===e.length-1)return e.substring(0,i);let m=e.substring(i,o);if(m===` +`||m.endsWith(` `))return e.substring(0,i)+` -`+e.substring(a);let m=e.indexOf(` -`,a+1),g="";return m===-1?g=e.substring(a):g=e.substring(a+1,m),e.substring(0,i)+ed(g)+e.substring(a)}function tt(e,t,i){let[n,r]=Xc(e,t);if(n.trim()!==""){let s=Xg(e,n,i);return Zg(s,n,r)}let a=Jg(e,i);return Qg(a,r)}function id(e,t=0){let i=3735928559^t,n=1103547991^t;for(let r=0,a;r>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(i^i>>>13,3266489909),4294967296*(2097151&n)+(i>>>0)}function td(e){return e=e.replaceAll("\\b","\b"),e=e.replaceAll("\\f","\f"),e=e.replaceAll("\\n",` -`),e=e.replaceAll("\\r","\r"),e=e.replaceAll("\\t"," "),e=e.replaceAll("\\v","\v"),e}function zn(e,t){if(t==0)return t;let i=t;for(;i>0&&e.charAt(i-1)!==` -`;)i--;return i}function nd(e,t,i,n){return n>e.length-1?e:e.slice(0,n)+e.slice(n,e.length).replace(t,i)}function rd(e,t){let i=0;for(let n=0,r=e.length;n-1&&(i++,n=a)}return i}function Ce(e,t,i,n){let r=e.length,a=0,s;if(t<0?t=-t>r?0:r+t:t=t>r?r:t,i=i>0?i:0,n.length<1e4)s=Array.from(n),s.unshift(t,i),[].splice.apply(e,s);else for(i&&[].splice.apply(e,[t,i]);a0?(Ce(e,e.length,0,t),e):t}var ad=/[!-/:-@[-`{-~\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/;var Ge=Di(/[A-Za-z]/),Sn=Di(/\d/),sd=Di(/[\dA-Fa-f]/),Pe=Di(/[\dA-Za-z]/),od=Di(/[!-/:-@[-`{-~]/),uo=Di(/[#-'*+\--9=?A-Z^-~]/);function Tn(e){return e!==null&&(e<32||e===127)}function X(e){return e!==null&&(e<0||e===32)}function B(e){return e!==null&&e<-2}function G(e){return e===-2||e===-1||e===32}var ld=Di(/\s/),cd=Di(ad);function Di(e){return t;function t(i){return i!==null&&e.test(String.fromCharCode(i))}}function po(e){if(e===null||X(e)||ld(e))return 1;if(cd(e))return 2}function Kt(e,t,i){let n=[],r=-1;for(;++r1&&e[i][1].end.offset-e[i][1].start.offset>1?2:1;let u=Object.assign({},e[n][1].end),m=Object.assign({},e[i][1].start);dd(u,-l),dd(m,l),s={type:l>1?"strongSequence":"emphasisSequence",start:u,end:Object.assign({},e[n][1].end)},o={type:l>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[i][1].start),end:m},a={type:l>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[i][1].start)},r={type:l>1?"strong":"emphasis",start:Object.assign({},s.start),end:Object.assign({},o.end)},e[n][1].end=Object.assign({},s.start),e[i][1].start=Object.assign({},o.end),d=[],e[n][1].end.offset-e[n][1].start.offset&&(d=je(d,[["enter",e[n][1],t],["exit",e[n][1],t]])),d=je(d,[["enter",r,t],["enter",s,t],["exit",s,t],["enter",a,t]]),d=je(d,Kt(t.parser.constructs.insideSpan.null,e.slice(n+1,i),t)),d=je(d,[["exit",a,t],["enter",o,t],["exit",o,t],["exit",r,t]]),e[i][1].end.offset-e[i][1].start.offset?(c=2,d=je(d,[["enter",e[i][1],t],["exit",e[i][1],t]])):c=0,Ce(e,n-1,i-n+3,d),i=n+d.length-c-2;break}}for(i=-1;++i=4?s(d):i(d)}function s(d){return d===null?l(d):B(d)?e.attempt(dh,s,l)(d):(e.enter("codeFlowValue"),o(d))}function o(d){return d===null||B(d)?(e.exit("codeFlowValue"),s(d)):(e.consume(d),o)}function l(d){return e.exit("codeIndented"),t(d)}}function ph(e,t,i){let n=this;return r;function r(s){return n.parser.lazy[n.now().line]?i(s):B(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),r):K(e,a,"linePrefix",4+1)(s)}function a(s){let o=n.events[n.events.length-1];return o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?t(s):B(s)?r(s):i(s)}}var go={name:"codeText",tokenize:hh,resolve:mh,previous:gh};function mh(e){let t=e.length-4,i=3,n,r;if((e[i][1].type==="lineEnding"||e[i][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=i;++n=4?t(s):e.interrupt(n.parser.constructs.flow,i,t)(s)}}function Sa(e,t,i,n,r,a,s,o,l){let d=l||Number.POSITIVE_INFINITY,c=0;return u;function u(z){return z===60?(e.enter(n),e.enter(r),e.enter(a),e.consume(z),e.exit(a),m):z===null||z===41||Tn(z)?i(z):(e.enter(n),e.enter(s),e.enter(o),e.enter("chunkString",{contentType:"string"}),v(z))}function m(z){return z===62?(e.enter(a),e.consume(z),e.exit(a),e.exit(r),e.exit(n),t):(e.enter(o),e.enter("chunkString",{contentType:"string"}),g(z))}function g(z){return z===62?(e.exit("chunkString"),e.exit(o),m(z)):z===null||z===60||B(z)?i(z):(e.consume(z),z===92?h:g)}function h(z){return z===60||z===62||z===92?(e.consume(z),g):g(z)}function v(z){return z===40?++c>d?i(z):(e.consume(z),v):z===41?c--?(e.consume(z),v):(e.exit("chunkString"),e.exit(o),e.exit(s),e.exit(n),t(z)):z===null||X(z)?c?i(z):(e.exit("chunkString"),e.exit(o),e.exit(s),e.exit(n),t(z)):Tn(z)?i(z):(e.consume(z),z===92?w:v)}function w(z){return z===40||z===41||z===92?(e.consume(z),v):v(z)}}function Ta(e,t,i,n,r,a){let s=this,o=0,l;return d;function d(g){return e.enter(n),e.enter(r),e.consume(g),e.exit(r),e.enter(a),c}function c(g){return g===null||g===91||g===93&&!l||g===94&&!o&&"_hiddenFootnoteSupport"in s.parser.constructs||o>999?i(g):g===93?(e.exit(a),e.enter(r),e.consume(g),e.exit(r),e.exit(n),t):B(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),c):(e.enter("chunkString",{contentType:"string"}),u(g))}function u(g){return g===null||g===91||g===93||B(g)||o++>999?(e.exit("chunkString"),c(g)):(e.consume(g),l=l||!G(g),g===92?m:u)}function m(g){return g===91||g===92||g===93?(e.consume(g),o++,u):u(g)}}function Aa(e,t,i,n,r,a){let s;return o;function o(m){return e.enter(n),e.enter(r),e.consume(m),e.exit(r),s=m===40?41:m,l}function l(m){return m===s?(e.enter(r),e.consume(m),e.exit(r),e.exit(n),t):(e.enter(a),d(m))}function d(m){return m===s?(e.exit(a),l(s)):m===null?i(m):B(m)?(e.enter("lineEnding"),e.consume(m),e.exit("lineEnding"),K(e,d,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),c(m))}function c(m){return m===s||m===null||B(m)?(e.exit("chunkString"),d(m)):(e.consume(m),m===92?u:c)}function u(m){return m===s||m===92?(e.consume(m),c):c(m)}}function nt(e,t){let i;return n;function n(r){return B(r)?(e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),i=!0,n):G(r)?K(e,n,i?"linePrefix":"lineSuffix")(r):t(r)}}function Be(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var fo={name:"definition",tokenize:kh},wh={tokenize:zh,partial:!0};function kh(e,t,i){let n=this,r;return a;function a(l){return e.enter("definition"),Ta.call(n,e,s,i,"definitionLabel","definitionLabelMarker","definitionLabelString")(l)}function s(l){return r=Be(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),l===58?(e.enter("definitionMarker"),e.consume(l),e.exit("definitionMarker"),nt(e,Sa(e,e.attempt(wh,K(e,o,"whitespace"),K(e,o,"whitespace")),i,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString"))):i(l)}function o(l){return l===null||B(l)?(e.exit("definition"),n.parser.defined.includes(r)||n.parser.defined.push(r),t(l)):i(l)}}function zh(e,t,i){return n;function n(s){return X(s)?nt(e,r)(s):i(s)}function r(s){return s===34||s===39||s===40?Aa(e,K(e,a,"whitespace"),i,"definitionTitle","definitionTitleMarker","definitionTitleString")(s):i(s)}function a(s){return s===null||B(s)?t(s):i(s)}}var yo={name:"hardBreakEscape",tokenize:Sh};function Sh(e,t,i){return n;function n(a){return e.enter("hardBreakEscape"),e.enter("escapeMarker"),e.consume(a),r}function r(a){return B(a)?(e.exit("escapeMarker"),e.exit("hardBreakEscape"),t(a)):i(a)}}var bo={name:"headingAtx",tokenize:Ah,resolve:Th};function Th(e,t){let i=e.length-2,n=3,r,a;return e[n][1].type==="whitespace"&&(n+=2),i-2>n&&e[i][1].type==="whitespace"&&(i-=2),e[i][1].type==="atxHeadingSequence"&&(n===i-1||i-4>n&&e[i-2][1].type==="whitespace")&&(i-=n+1===i?2:4),i>n&&(r={type:"atxHeadingText",start:e[n][1].start,end:e[i][1].end},a={type:"chunkText",start:e[n][1].start,end:e[i][1].end,contentType:"text"},Ce(e,n,i-n+1,[["enter",r,t],["enter",a,t],["exit",a,t],["exit",r,t]])),e}function Ah(e,t,i){let n=this,r=0;return a;function a(c){return e.enter("atxHeading"),e.enter("atxHeadingSequence"),s(c)}function s(c){return c===35&&r++<6?(e.consume(c),s):c===null||X(c)?(e.exit("atxHeadingSequence"),n.interrupt?t(c):o(c)):i(c)}function o(c){return c===35?(e.enter("atxHeadingSequence"),l(c)):c===null||B(c)?(e.exit("atxHeading"),t(c)):G(c)?K(e,o,"whitespace")(c):(e.enter("atxHeadingText"),d(c))}function l(c){return c===35?(e.consume(c),l):(e.exit("atxHeadingSequence"),o(c))}function d(c){return c===null||c===35||X(c)?(e.exit("atxHeadingText"),o(c)):(e.consume(c),d)}}var pd=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],vo=["pre","script","style","textarea"];var xo={name:"htmlFlow",tokenize:Oh,resolveTo:Lh,concrete:!0},Eh={tokenize:Ch,partial:!0};function Lh(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function Oh(e,t,i){let n=this,r,a,s,o,l;return d;function d(x){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(x),c}function c(x){return x===33?(e.consume(x),u):x===47?(e.consume(x),h):x===63?(e.consume(x),r=3,n.interrupt?t:ue):Ge(x)?(e.consume(x),s=String.fromCharCode(x),a=!0,v):i(x)}function u(x){return x===45?(e.consume(x),r=2,m):x===91?(e.consume(x),r=5,s="CDATA[",o=0,g):Ge(x)?(e.consume(x),r=4,n.interrupt?t:ue):i(x)}function m(x){return x===45?(e.consume(x),n.interrupt?t:ue):i(x)}function g(x){return x===s.charCodeAt(o++)?(e.consume(x),o===s.length?n.interrupt?t:j:g):i(x)}function h(x){return Ge(x)?(e.consume(x),s=String.fromCharCode(x),v):i(x)}function v(x){return x===null||x===47||x===62||X(x)?x!==47&&a&&vo.includes(s.toLowerCase())?(r=1,n.interrupt?t(x):j(x)):pd.includes(s.toLowerCase())?(r=6,x===47?(e.consume(x),w):n.interrupt?t(x):j(x)):(r=7,n.interrupt&&!n.parser.lazy[n.now().line]?i(x):a?S(x):z(x)):x===45||Pe(x)?(e.consume(x),s+=String.fromCharCode(x),v):i(x)}function w(x){return x===62?(e.consume(x),n.interrupt?t:j):i(x)}function z(x){return G(x)?(e.consume(x),z):D(x)}function S(x){return x===47?(e.consume(x),D):x===58||x===95||Ge(x)?(e.consume(x),L):G(x)?(e.consume(x),S):D(x)}function L(x){return x===45||x===46||x===58||x===95||Pe(x)?(e.consume(x),L):q(x)}function q(x){return x===61?(e.consume(x),_):G(x)?(e.consume(x),q):S(x)}function _(x){return x===null||x===60||x===61||x===62||x===96?i(x):x===34||x===39?(e.consume(x),l=x,A):G(x)?(e.consume(x),_):(l=null,F(x))}function A(x){return x===null||B(x)?i(x):x===l?(e.consume(x),M):(e.consume(x),A)}function F(x){return x===null||x===34||x===39||x===60||x===61||x===62||x===96||X(x)?q(x):(e.consume(x),F)}function M(x){return x===47||x===62||G(x)?S(x):i(x)}function D(x){return x===62?(e.consume(x),H):i(x)}function H(x){return G(x)?(e.consume(x),H):x===null||B(x)?j(x):i(x)}function j(x){return x===45&&r===2?(e.consume(x),re):x===60&&r===1?(e.consume(x),Q):x===62&&r===4?(e.consume(x),ae):x===63&&r===3?(e.consume(x),ue):x===93&&r===5?(e.consume(x),de):B(x)&&(r===6||r===7)?e.check(Eh,ae,V)(x):x===null||B(x)?V(x):(e.consume(x),j)}function V(x){return e.exit("htmlFlowData"),R(x)}function R(x){return x===null?k(x):B(x)?e.attempt({tokenize:Y,partial:!0},R,k)(x):(e.enter("htmlFlowData"),j(x))}function Y(x,pi,Ye){return Re;function Re(De){return x.enter("lineEnding"),x.consume(De),x.exit("lineEnding"),ai}function ai(De){return n.parser.lazy[n.now().line]?Ye(De):pi(De)}}function re(x){return x===45?(e.consume(x),ue):j(x)}function Q(x){return x===47?(e.consume(x),s="",ce):j(x)}function ce(x){return x===62&&vo.includes(s.toLowerCase())?(e.consume(x),ae):Ge(x)&&s.length<8?(e.consume(x),s+=String.fromCharCode(x),ce):j(x)}function de(x){return x===93?(e.consume(x),ue):j(x)}function ue(x){return x===62?(e.consume(x),ae):x===45&&r===2?(e.consume(x),ue):j(x)}function ae(x){return x===null||B(x)?(e.exit("htmlFlowData"),k(x)):(e.consume(x),ae)}function k(x){return e.exit("htmlFlow"),t(x)}}function Ch(e,t,i){return n;function n(r){return e.exit("htmlFlowData"),e.enter("lineEndingBlank"),e.consume(r),e.exit("lineEndingBlank"),e.attempt(yi,t,i)}}var wo={name:"htmlText",tokenize:qh};function qh(e,t,i){let n=this,r,a,s,o;return l;function l(k){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(k),d}function d(k){return k===33?(e.consume(k),c):k===47?(e.consume(k),F):k===63?(e.consume(k),_):Ge(k)?(e.consume(k),H):i(k)}function c(k){return k===45?(e.consume(k),u):k===91?(e.consume(k),a="CDATA[",s=0,w):Ge(k)?(e.consume(k),q):i(k)}function u(k){return k===45?(e.consume(k),m):i(k)}function m(k){return k===null||k===62?i(k):k===45?(e.consume(k),g):h(k)}function g(k){return k===null||k===62?i(k):h(k)}function h(k){return k===null?i(k):k===45?(e.consume(k),v):B(k)?(o=h,de(k)):(e.consume(k),h)}function v(k){return k===45?(e.consume(k),ae):h(k)}function w(k){return k===a.charCodeAt(s++)?(e.consume(k),s===a.length?z:w):i(k)}function z(k){return k===null?i(k):k===93?(e.consume(k),S):B(k)?(o=z,de(k)):(e.consume(k),z)}function S(k){return k===93?(e.consume(k),L):z(k)}function L(k){return k===62?ae(k):k===93?(e.consume(k),L):z(k)}function q(k){return k===null||k===62?ae(k):B(k)?(o=q,de(k)):(e.consume(k),q)}function _(k){return k===null?i(k):k===63?(e.consume(k),A):B(k)?(o=_,de(k)):(e.consume(k),_)}function A(k){return k===62?ae(k):_(k)}function F(k){return Ge(k)?(e.consume(k),M):i(k)}function M(k){return k===45||Pe(k)?(e.consume(k),M):D(k)}function D(k){return B(k)?(o=D,de(k)):G(k)?(e.consume(k),D):ae(k)}function H(k){return k===45||Pe(k)?(e.consume(k),H):k===47||k===62||X(k)?j(k):i(k)}function j(k){return k===47?(e.consume(k),ae):k===58||k===95||Ge(k)?(e.consume(k),V):B(k)?(o=j,de(k)):G(k)?(e.consume(k),j):ae(k)}function V(k){return k===45||k===46||k===58||k===95||Pe(k)?(e.consume(k),V):R(k)}function R(k){return k===61?(e.consume(k),Y):B(k)?(o=R,de(k)):G(k)?(e.consume(k),R):j(k)}function Y(k){return k===null||k===60||k===61||k===62||k===96?i(k):k===34||k===39?(e.consume(k),r=k,re):B(k)?(o=Y,de(k)):G(k)?(e.consume(k),Y):(e.consume(k),r=void 0,ce)}function re(k){return k===r?(e.consume(k),Q):k===null?i(k):B(k)?(o=re,de(k)):(e.consume(k),re)}function Q(k){return k===62||k===47||X(k)?j(k):i(k)}function ce(k){return k===null||k===34||k===39||k===60||k===61||k===96?i(k):k===62||X(k)?j(k):(e.consume(k),ce)}function de(k){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(k),e.exit("lineEnding"),K(e,ue,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function ue(k){return e.enter("htmlTextData"),o(k)}function ae(k){return k===62?(e.consume(k),e.exit("htmlTextData"),e.exit("htmlText"),t):i(k)}}var rt={name:"labelEnd",tokenize:Rh,resolveTo:Fh,resolveAll:Bh},Mh={tokenize:Dh},Ih={tokenize:Nh},_h={tokenize:jh};function Bh(e){let t=-1,i;for(;++t999||u===93&&!s||u===null||u===91||X(u))return i(u);if(u===93){e.exit("chunkString");let m=e.exit("gfmFootnoteCallString");return r.includes(Be(n.sliceSerialize(m)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(u),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):i(u)}return X(u)||(s=!0),a++,e.consume(u),u===92?c:d}function c(u){return u===91||u===92||u===93?(e.consume(u),a++,d):d(u)}}function af(e,t,i){let n=this,r=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]),a,s=0,o;return l;function l(h){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(h){return h===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",c):i(h)}function c(h){if(s>999||h===93&&!o||h===null||h===91||X(h))return i(h);if(h===93){e.exit("chunkString");let v=e.exit("gfmFootnoteDefinitionLabelString");return a=Be(n.sliceSerialize(v)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),m}return X(h)||(o=!0),s++,e.consume(h),h===92?u:c}function u(h){return h===91||h===92||h===93?(e.consume(h),s++,c):c(h)}function m(h){return h===58?(e.enter("definitionMarker"),e.consume(h),e.exit("definitionMarker"),r.includes(a)||r.push(a),K(e,g,"gfmFootnoteDefinitionWhitespace")):i(h)}function g(h){return t(h)}}function sf(e,t,i){return e.check(yi,t,e.attempt(ef,t,i))}function of(e){e.exit("gfmFootnoteDefinition")}function lf(e,t,i){let n=this;return K(e,r,"gfmFootnoteDefinitionIndent",4+1);function r(a){let s=n.events[n.events.length-1];return s&&s[1].type==="gfmFootnoteDefinitionIndent"&&s[2].sliceSerialize(s[1],!0).length===4?t(a):i(a)}}var cf={tokenize:df},To={text:{[91]:cf}};function df(e,t,i){let n=this;return r;function r(l){return n.previous!==null||!n._gfmTasklistFirstContentOfListItem?i(l):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),a)}function a(l){return X(l)?(e.enter("taskListCheckValueUnchecked"),e.consume(l),e.exit("taskListCheckValueUnchecked"),s):l===88||l===120?(e.enter("taskListCheckValueChecked"),e.consume(l),e.exit("taskListCheckValueChecked"),s):i(l)}function s(l){return l===93?(e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),o):i(l)}function o(l){return B(l)?t(l):G(l)?e.check({tokenize:uf},t,i)(l):i(l)}}function uf(e,t,i){return K(e,n,"whitespace");function n(r){return r===null?i(r):t(r)}}var md={}.hasOwnProperty;function La(e){let t={},i=-1;for(;++i=d||c+1s))return;let F=t.events.length,M=F,D,H;for(;M--;)if(t.events[M][0]==="exit"&&t.events[M][1].type==="chunkFlow"){if(D){H=t.events[M][1].end;break}D=!0}for(z(n),A=F;AL;){let _=i[q];t.containerState=_[1],_[0].exit.call(t,e)}i.length=L}function S(){r.write([null]),a=void 0,r=void 0,t.containerState._closeFlow=void 0}}function zf(e,t,i){return K(e,e.attempt(this.parser.constructs.document,t,i),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}var Ld={tokenize:Sf};function Sf(e){let t=this,i=e.attempt(yi,n,e.attempt(this.parser.constructs.flowInitial,r,K(e,e.attempt(this.parser.constructs.flow,r,e.attempt(ho,r)),"linePrefix")));return i;function n(a){if(a===null){e.consume(a);return}return e.enter("lineEndingBlank"),e.consume(a),e.exit("lineEndingBlank"),t.currentConstruct=void 0,i}function r(a){if(a===null){e.consume(a);return}return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),t.currentConstruct=void 0,i}}var Od={resolveAll:Id()},Cd=Md("string"),qd=Md("text");function Md(e){return{tokenize:t,resolveAll:Id(e==="text"?Tf:void 0)};function t(i){let n=this,r=this.parser.constructs[e],a=i.attempt(r,s,o);return s;function s(c){return d(c)?a(c):o(c)}function o(c){if(c===null){i.consume(c);return}return i.enter("data"),i.consume(c),l}function l(c){return d(c)?(i.exit("data"),a(c)):(i.consume(c),l)}function d(c){if(c===null)return!0;let u=r[c],m=-1;if(u)for(;++m-1&&(s[0]=s[0].slice(n)),a>0&&s.push(e[r].slice(0,a))),s}function Ef(e,t){let i=-1,n=[],r;for(;++i>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(i^i>>>13,3266489909),4294967296*(2097151&n)+(i>>>0)}function zd(e){return e=e.replaceAll("\\b","\b"),e=e.replaceAll("\\f","\f"),e=e.replaceAll("\\n",` +`),e=e.replaceAll("\\r","\r"),e=e.replaceAll("\\t"," "),e=e.replaceAll("\\v","\v"),e}function Mn(e,t){if(t==0)return t;let i=t;for(;i>0&&e.charAt(i-1)!==` +`;)i--;return i}function Sd(e,t,i,n){return n>e.length-1?e:e.slice(0,n)+e.slice(n,e.length).replace(t,i)}function qn(e,t){let i=0;for(let n=0,r=e.length;n-1&&(i++,n=a)}return i}function Ca(e){let t=typeof e;return t!="string"?t==="number":!isNaN(e)&&!isNaN(parseFloat(e))}function Oe(e,t,i,n){let r=e.length,a=0,s;if(t<0?t=-t>r?0:r+t:t=t>r?r:t,i=i>0?i:0,n.length<1e4)s=Array.from(n),s.unshift(t,i),[].splice.apply(e,s);else for(i&&[].splice.apply(e,[t,i]);a0?(Oe(e,e.length,0,t),e):t}var Ad=/[!-/:-@[-`{-~\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/;var Ue=Ki(/[A-Za-z]/),In=Ki(/\d/),Ld=Ki(/[\dA-Fa-f]/),je=Ki(/[\dA-Za-z]/),Td=Ki(/[!-/:-@[-`{-~]/),Co=Ki(/[#-'*+\--9=?A-Z^-~]/);function Bn(e){return e!==null&&(e<32||e===127)}function X(e){return e!==null&&(e<0||e===32)}function F(e){return e!==null&&e<-2}function G(e){return e===-2||e===-1||e===32}var Ed=Ki(/\s/),Od=Ki(Ad);function Ki(e){return t;function t(i){return i!==null&&e.test(String.fromCharCode(i))}}function Mo(e){if(e===null||X(e)||Ed(e))return 1;if(Od(e))return 2}function Ut(e,t,i){let n=[],r=-1;for(;++r1&&e[i][1].end.offset-e[i][1].start.offset>1?2:1;let u=Object.assign({},e[n][1].end),m=Object.assign({},e[i][1].start);Cd(u,-l),Cd(m,l),s={type:l>1?"strongSequence":"emphasisSequence",start:u,end:Object.assign({},e[n][1].end)},o={type:l>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[i][1].start),end:m},a={type:l>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[i][1].start)},r={type:l>1?"strong":"emphasis",start:Object.assign({},s.start),end:Object.assign({},o.end)},e[n][1].end=Object.assign({},s.start),e[i][1].start=Object.assign({},o.end),d=[],e[n][1].end.offset-e[n][1].start.offset&&(d=Ne(d,[["enter",e[n][1],t],["exit",e[n][1],t]])),d=Ne(d,[["enter",r,t],["enter",s,t],["exit",s,t],["enter",a,t]]),d=Ne(d,Ut(t.parser.constructs.insideSpan.null,e.slice(n+1,i),t)),d=Ne(d,[["exit",a,t],["enter",o,t],["exit",o,t],["exit",r,t]]),e[i][1].end.offset-e[i][1].start.offset?(c=2,d=Ne(d,[["enter",e[i][1],t],["exit",e[i][1],t]])):c=0,Oe(e,n-1,i-n+3,d),i=n+d.length-c-2;break}}for(i=-1;++i=4?s(d):i(d)}function s(d){return d===null?l(d):F(d)?e.attempt(Nh,s,l)(d):(e.enter("codeFlowValue"),o(d))}function o(d){return d===null||F(d)?(e.exit("codeFlowValue"),s(d)):(e.consume(d),o)}function l(d){return e.exit("codeIndented"),t(d)}}function Kh(e,t,i){let n=this;return r;function r(s){return n.parser.lazy[n.now().line]?i(s):F(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),r):Y(e,a,"linePrefix",4+1)(s)}function a(s){let o=n.events[n.events.length-1];return o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?t(s):F(s)?r(s):i(s)}}var Io={name:"codeText",tokenize:Hh,resolve:Yh,previous:Ph};function Yh(e){let t=e.length-4,i=3,n,r;if((e[i][1].type==="lineEnding"||e[i][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=i;++n=4?t(s):e.interrupt(n.parser.constructs.flow,i,t)(s)}}function _a(e,t,i,n,r,a,s,o,l){let d=l||Number.POSITIVE_INFINITY,c=0;return u;function u(w){return w===60?(e.enter(n),e.enter(r),e.enter(a),e.consume(w),e.exit(a),m):w===null||w===41||Bn(w)?i(w):(e.enter(n),e.enter(s),e.enter(o),e.enter("chunkString",{contentType:"string"}),v(w))}function m(w){return w===62?(e.enter(a),e.consume(w),e.exit(a),e.exit(r),e.exit(n),t):(e.enter(o),e.enter("chunkString",{contentType:"string"}),g(w))}function g(w){return w===62?(e.exit("chunkString"),e.exit(o),m(w)):w===null||w===60||F(w)?i(w):(e.consume(w),w===92?h:g)}function h(w){return w===60||w===62||w===92?(e.consume(w),g):g(w)}function v(w){return w===40?++c>d?i(w):(e.consume(w),v):w===41?c--?(e.consume(w),v):(e.exit("chunkString"),e.exit(o),e.exit(s),e.exit(n),t(w)):w===null||X(w)?c?i(w):(e.exit("chunkString"),e.exit(o),e.exit(s),e.exit(n),t(w)):Bn(w)?i(w):(e.consume(w),w===92?x:v)}function x(w){return w===40||w===41||w===92?(e.consume(w),v):v(w)}}function Ra(e,t,i,n,r,a){let s=this,o=0,l;return d;function d(g){return e.enter(n),e.enter(r),e.consume(g),e.exit(r),e.enter(a),c}function c(g){return g===null||g===91||g===93&&!l||g===94&&!o&&"_hiddenFootnoteSupport"in s.parser.constructs||o>999?i(g):g===93?(e.exit(a),e.enter(r),e.consume(g),e.exit(r),e.exit(n),t):F(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),c):(e.enter("chunkString",{contentType:"string"}),u(g))}function u(g){return g===null||g===91||g===93||F(g)||o++>999?(e.exit("chunkString"),c(g)):(e.consume(g),l=l||!G(g),g===92?m:u)}function m(g){return g===91||g===92||g===93?(e.consume(g),o++,u):u(g)}}function Da(e,t,i,n,r,a){let s;return o;function o(m){return e.enter(n),e.enter(r),e.consume(m),e.exit(r),s=m===40?41:m,l}function l(m){return m===s?(e.enter(r),e.consume(m),e.exit(r),e.exit(n),t):(e.enter(a),d(m))}function d(m){return m===s?(e.exit(a),l(s)):m===null?i(m):F(m)?(e.enter("lineEnding"),e.consume(m),e.exit("lineEnding"),Y(e,d,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),c(m))}function c(m){return m===s||m===null||F(m)?(e.exit("chunkString"),d(m)):(e.consume(m),m===92?u:c)}function u(m){return m===s||m===92?(e.consume(m),c):c(m)}}function lt(e,t){let i;return n;function n(r){return F(r)?(e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),i=!0,n):G(r)?Y(e,n,i?"linePrefix":"lineSuffix")(r):t(r)}}function Be(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var Fo={name:"definition",tokenize:Zh},Qh={tokenize:Jh,partial:!0};function Zh(e,t,i){let n=this,r;return a;function a(l){return e.enter("definition"),Ra.call(n,e,s,i,"definitionLabel","definitionLabelMarker","definitionLabelString")(l)}function s(l){return r=Be(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),l===58?(e.enter("definitionMarker"),e.consume(l),e.exit("definitionMarker"),lt(e,_a(e,e.attempt(Qh,Y(e,o,"whitespace"),Y(e,o,"whitespace")),i,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString"))):i(l)}function o(l){return l===null||F(l)?(e.exit("definition"),n.parser.defined.includes(r)||n.parser.defined.push(r),t(l)):i(l)}}function Jh(e,t,i){return n;function n(s){return X(s)?lt(e,r)(s):i(s)}function r(s){return s===34||s===39||s===40?Da(e,Y(e,a,"whitespace"),i,"definitionTitle","definitionTitleMarker","definitionTitleString")(s):i(s)}function a(s){return s===null||F(s)?t(s):i(s)}}var _o={name:"hardBreakEscape",tokenize:Xh};function Xh(e,t,i){return n;function n(a){return e.enter("hardBreakEscape"),e.enter("escapeMarker"),e.consume(a),r}function r(a){return F(a)?(e.exit("escapeMarker"),e.exit("hardBreakEscape"),t(a)):i(a)}}var Ro={name:"headingAtx",tokenize:tf,resolve:ef};function ef(e,t){let i=e.length-2,n=3,r,a;return e[n][1].type==="whitespace"&&(n+=2),i-2>n&&e[i][1].type==="whitespace"&&(i-=2),e[i][1].type==="atxHeadingSequence"&&(n===i-1||i-4>n&&e[i-2][1].type==="whitespace")&&(i-=n+1===i?2:4),i>n&&(r={type:"atxHeadingText",start:e[n][1].start,end:e[i][1].end},a={type:"chunkText",start:e[n][1].start,end:e[i][1].end,contentType:"text"},Oe(e,n,i-n+1,[["enter",r,t],["enter",a,t],["exit",a,t],["exit",r,t]])),e}function tf(e,t,i){let n=this,r=0;return a;function a(c){return e.enter("atxHeading"),e.enter("atxHeadingSequence"),s(c)}function s(c){return c===35&&r++<6?(e.consume(c),s):c===null||X(c)?(e.exit("atxHeadingSequence"),n.interrupt?t(c):o(c)):i(c)}function o(c){return c===35?(e.enter("atxHeadingSequence"),l(c)):c===null||F(c)?(e.exit("atxHeading"),t(c)):G(c)?Y(e,o,"whitespace")(c):(e.enter("atxHeadingText"),d(c))}function l(c){return c===35?(e.consume(c),l):(e.exit("atxHeadingSequence"),o(c))}function d(c){return c===null||c===35||X(c)?(e.exit("atxHeadingText"),o(c)):(e.consume(c),d)}}var qd=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],Do=["pre","script","style","textarea"];var No={name:"htmlFlow",tokenize:af,resolveTo:rf,concrete:!0},nf={tokenize:sf,partial:!0};function rf(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function af(e,t,i){let n=this,r,a,s,o,l;return d;function d(k){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(k),c}function c(k){return k===33?(e.consume(k),u):k===47?(e.consume(k),h):k===63?(e.consume(k),r=3,n.interrupt?t:ue):Ue(k)?(e.consume(k),s=String.fromCharCode(k),a=!0,v):i(k)}function u(k){return k===45?(e.consume(k),r=2,m):k===91?(e.consume(k),r=5,s="CDATA[",o=0,g):Ue(k)?(e.consume(k),r=4,n.interrupt?t:ue):i(k)}function m(k){return k===45?(e.consume(k),n.interrupt?t:ue):i(k)}function g(k){return k===s.charCodeAt(o++)?(e.consume(k),o===s.length?n.interrupt?t:j:g):i(k)}function h(k){return Ue(k)?(e.consume(k),s=String.fromCharCode(k),v):i(k)}function v(k){return k===null||k===47||k===62||X(k)?k!==47&&a&&Do.includes(s.toLowerCase())?(r=1,n.interrupt?t(k):j(k)):qd.includes(s.toLowerCase())?(r=6,k===47?(e.consume(k),x):n.interrupt?t(k):j(k)):(r=7,n.interrupt&&!n.parser.lazy[n.now().line]?i(k):a?S(k):w(k)):k===45||je(k)?(e.consume(k),s+=String.fromCharCode(k),v):i(k)}function x(k){return k===62?(e.consume(k),n.interrupt?t:j):i(k)}function w(k){return G(k)?(e.consume(k),w):D(k)}function S(k){return k===47?(e.consume(k),D):k===58||k===95||Ue(k)?(e.consume(k),E):G(k)?(e.consume(k),S):D(k)}function E(k){return k===45||k===46||k===58||k===95||je(k)?(e.consume(k),E):M(k)}function M(k){return k===61?(e.consume(k),B):G(k)?(e.consume(k),M):S(k)}function B(k){return k===null||k===60||k===61||k===62||k===96?i(k):k===34||k===39?(e.consume(k),l=k,L):G(k)?(e.consume(k),B):(l=null,_(k))}function L(k){return k===null||F(k)?i(k):k===l?(e.consume(k),q):(e.consume(k),L)}function _(k){return k===null||k===34||k===39||k===60||k===61||k===62||k===96||X(k)?M(k):(e.consume(k),_)}function q(k){return k===47||k===62||G(k)?S(k):i(k)}function D(k){return k===62?(e.consume(k),H):i(k)}function H(k){return G(k)?(e.consume(k),H):k===null||F(k)?j(k):i(k)}function j(k){return k===45&&r===2?(e.consume(k),re):k===60&&r===1?(e.consume(k),Q):k===62&&r===4?(e.consume(k),ae):k===63&&r===3?(e.consume(k),ue):k===93&&r===5?(e.consume(k),de):F(k)&&(r===6||r===7)?e.check(nf,ae,V)(k):k===null||F(k)?V(k):(e.consume(k),j)}function V(k){return e.exit("htmlFlowData"),R(k)}function R(k){return k===null?z(k):F(k)?e.attempt({tokenize:$,partial:!0},R,z)(k):(e.enter("htmlFlowData"),j(k))}function $(k,mi,He){return _e;function _e(Re){return k.enter("lineEnding"),k.consume(Re),k.exit("lineEnding"),ri}function ri(Re){return n.parser.lazy[n.now().line]?He(Re):mi(Re)}}function re(k){return k===45?(e.consume(k),ue):j(k)}function Q(k){return k===47?(e.consume(k),s="",ce):j(k)}function ce(k){return k===62&&Do.includes(s.toLowerCase())?(e.consume(k),ae):Ue(k)&&s.length<8?(e.consume(k),s+=String.fromCharCode(k),ce):j(k)}function de(k){return k===93?(e.consume(k),ue):j(k)}function ue(k){return k===62?(e.consume(k),ae):k===45&&r===2?(e.consume(k),ue):j(k)}function ae(k){return k===null||F(k)?(e.exit("htmlFlowData"),z(k)):(e.consume(k),ae)}function z(k){return e.exit("htmlFlow"),t(k)}}function sf(e,t,i){return n;function n(r){return e.exit("htmlFlowData"),e.enter("lineEndingBlank"),e.consume(r),e.exit("lineEndingBlank"),e.attempt(yi,t,i)}}var jo={name:"htmlText",tokenize:of};function of(e,t,i){let n=this,r,a,s,o;return l;function l(z){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(z),d}function d(z){return z===33?(e.consume(z),c):z===47?(e.consume(z),_):z===63?(e.consume(z),B):Ue(z)?(e.consume(z),H):i(z)}function c(z){return z===45?(e.consume(z),u):z===91?(e.consume(z),a="CDATA[",s=0,x):Ue(z)?(e.consume(z),M):i(z)}function u(z){return z===45?(e.consume(z),m):i(z)}function m(z){return z===null||z===62?i(z):z===45?(e.consume(z),g):h(z)}function g(z){return z===null||z===62?i(z):h(z)}function h(z){return z===null?i(z):z===45?(e.consume(z),v):F(z)?(o=h,de(z)):(e.consume(z),h)}function v(z){return z===45?(e.consume(z),ae):h(z)}function x(z){return z===a.charCodeAt(s++)?(e.consume(z),s===a.length?w:x):i(z)}function w(z){return z===null?i(z):z===93?(e.consume(z),S):F(z)?(o=w,de(z)):(e.consume(z),w)}function S(z){return z===93?(e.consume(z),E):w(z)}function E(z){return z===62?ae(z):z===93?(e.consume(z),E):w(z)}function M(z){return z===null||z===62?ae(z):F(z)?(o=M,de(z)):(e.consume(z),M)}function B(z){return z===null?i(z):z===63?(e.consume(z),L):F(z)?(o=B,de(z)):(e.consume(z),B)}function L(z){return z===62?ae(z):B(z)}function _(z){return Ue(z)?(e.consume(z),q):i(z)}function q(z){return z===45||je(z)?(e.consume(z),q):D(z)}function D(z){return F(z)?(o=D,de(z)):G(z)?(e.consume(z),D):ae(z)}function H(z){return z===45||je(z)?(e.consume(z),H):z===47||z===62||X(z)?j(z):i(z)}function j(z){return z===47?(e.consume(z),ae):z===58||z===95||Ue(z)?(e.consume(z),V):F(z)?(o=j,de(z)):G(z)?(e.consume(z),j):ae(z)}function V(z){return z===45||z===46||z===58||z===95||je(z)?(e.consume(z),V):R(z)}function R(z){return z===61?(e.consume(z),$):F(z)?(o=R,de(z)):G(z)?(e.consume(z),R):j(z)}function $(z){return z===null||z===60||z===61||z===62||z===96?i(z):z===34||z===39?(e.consume(z),r=z,re):F(z)?(o=$,de(z)):G(z)?(e.consume(z),$):(e.consume(z),r=void 0,ce)}function re(z){return z===r?(e.consume(z),Q):z===null?i(z):F(z)?(o=re,de(z)):(e.consume(z),re)}function Q(z){return z===62||z===47||X(z)?j(z):i(z)}function ce(z){return z===null||z===34||z===39||z===60||z===61||z===96?i(z):z===62||X(z)?j(z):(e.consume(z),ce)}function de(z){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(z),e.exit("lineEnding"),Y(e,ue,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function ue(z){return e.enter("htmlTextData"),o(z)}function ae(z){return z===62?(e.consume(z),e.exit("htmlTextData"),e.exit("htmlText"),t):i(z)}}var ct={name:"labelEnd",tokenize:mf,resolveTo:pf,resolveAll:uf},lf={tokenize:gf},cf={tokenize:hf},df={tokenize:ff};function uf(e){let t=-1,i;for(;++t999||u===93&&!s||u===null||u===91||X(u))return i(u);if(u===93){e.exit("chunkString");let m=e.exit("gfmFootnoteCallString");return r.includes(Be(n.sliceSerialize(m)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(u),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):i(u)}return X(u)||(s=!0),a++,e.consume(u),u===92?c:d}function c(u){return u===91||u===92||u===93?(e.consume(u),a++,d):d(u)}}function Bf(e,t,i){let n=this,r=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]),a,s=0,o;return l;function l(h){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(h){return h===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",c):i(h)}function c(h){if(s>999||h===93&&!o||h===null||h===91||X(h))return i(h);if(h===93){e.exit("chunkString");let v=e.exit("gfmFootnoteDefinitionLabelString");return a=Be(n.sliceSerialize(v)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),m}return X(h)||(o=!0),s++,e.consume(h),h===92?u:c}function u(h){return h===91||h===92||h===93?(e.consume(h),s++,c):c(h)}function m(h){return h===58?(e.enter("definitionMarker"),e.consume(h),e.exit("definitionMarker"),r.includes(a)||r.push(a),Y(e,g,"gfmFootnoteDefinitionWhitespace")):i(h)}function g(h){return t(h)}}function Ff(e,t,i){return e.check(yi,t,e.attempt(Cf,t,i))}function _f(e){e.exit("gfmFootnoteDefinition")}function Rf(e,t,i){let n=this;return Y(e,r,"gfmFootnoteDefinitionIndent",4+1);function r(a){let s=n.events[n.events.length-1];return s&&s[1].type==="gfmFootnoteDefinitionIndent"&&s[2].sliceSerialize(s[1],!0).length===4?t(a):i(a)}}var Df={tokenize:Nf},Ho={text:{[91]:Df}};function Nf(e,t,i){let n=this;return r;function r(l){return n.previous!==null||!n._gfmTasklistFirstContentOfListItem?i(l):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),a)}function a(l){return X(l)?(e.enter("taskListCheckValueUnchecked"),e.consume(l),e.exit("taskListCheckValueUnchecked"),s):l===88||l===120?(e.enter("taskListCheckValueChecked"),e.consume(l),e.exit("taskListCheckValueChecked"),s):i(l)}function s(l){return l===93?(e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),o):i(l)}function o(l){return F(l)?t(l):G(l)?e.check({tokenize:jf},t,i)(l):i(l)}}function jf(e,t,i){return Y(e,n,"whitespace");function n(r){return r===null?i(r):t(r)}}var Id={}.hasOwnProperty;function ja(e){let t={},i=-1;for(;++i=d||c+1s))return;let _=t.events.length,q=_,D,H;for(;q--;)if(t.events[q][0]==="exit"&&t.events[q][1].type==="chunkFlow"){if(D){H=t.events[q][1].end;break}D=!0}for(w(n),L=_;LE;){let B=i[M];t.containerState=B[1],B[0].exit.call(t,e)}i.length=E}function S(){r.write([null]),a=void 0,r=void 0,t.containerState._closeFlow=void 0}}function Jf(e,t,i){return Y(e,e.attempt(this.parser.constructs.document,t,i),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}var Ud={tokenize:Xf};function Xf(e){let t=this,i=e.attempt(yi,n,e.attempt(this.parser.constructs.flowInitial,r,Y(e,e.attempt(this.parser.constructs.flow,r,e.attempt(Bo,r)),"linePrefix")));return i;function n(a){if(a===null){e.consume(a);return}return e.enter("lineEndingBlank"),e.consume(a),e.exit("lineEndingBlank"),t.currentConstruct=void 0,i}function r(a){if(a===null){e.consume(a);return}return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),t.currentConstruct=void 0,i}}var Gd={resolveAll:Xd()},Qd=Jd("string"),Zd=Jd("text");function Jd(e){return{tokenize:t,resolveAll:Xd(e==="text"?ey:void 0)};function t(i){let n=this,r=this.parser.constructs[e],a=i.attempt(r,s,o);return s;function s(c){return d(c)?a(c):o(c)}function o(c){if(c===null){i.consume(c);return}return i.enter("data"),i.consume(c),l}function l(c){return d(c)?(i.exit("data"),a(c)):(i.consume(c),l)}function d(c){if(c===null)return!0;let u=r[c],m=-1;if(u)for(;++m-1&&(s[0]=s[0].slice(n)),a>0&&s.push(e[r].slice(0,a))),s}function ty(e,t){let i=-1,n=[],r;for(;++iBf,contentInitial:()=>Of,disable:()=>Ff,document:()=>Lf,flow:()=>qf,flowInitial:()=>Cf,insideSpan:()=>_f,string:()=>Mf,text:()=>If});var Lf={[42]:Fe,[43]:Fe,[45]:Fe,[48]:Fe,[49]:Fe,[50]:Fe,[51]:Fe,[52]:Fe,[53]:Fe,[54]:Fe,[55]:Fe,[56]:Fe,[57]:Fe,[62]:va},Of={[91]:fo},Cf={[-2]:En,[-1]:En,[32]:En},qf={[35]:bo,[42]:at,[45]:[Ea,at],[60]:xo,[61]:Ea,[95]:at,[96]:ka,[126]:ka},Mf={[38]:wa,[92]:xa},If={[-5]:Ln,[-4]:Ln,[-3]:Ln,[33]:ko,[38]:wa,[42]:An,[60]:[mo,wo],[91]:zo,[92]:[yo,xa],[93]:rt,[95]:An,[96]:go},_f={null:[An,Od]},Bf={null:[42,95]},Ff={null:[]};function Bd(e={}){let t=La([Oo].concat(e.extensions||[])),i={defined:[],lazy:{},constructs:t,content:n(Td),document:n(Ed),flow:n(Ld),string:n(Cd),text:n(qd)};return i;function n(r){return a;function a(s){return _d(i,r,s)}}}var Fd=/[\0\t\n\r]/g;function Rd(){let e=1,t="",i=!0,n;return r;function r(a,s,o){let l=[],d,c,u,m,g;for(a=t+a.toString(s),u=0,t="",i&&(a.charCodeAt(0)===65279&&u++,i=void 0);u13&&i<32||i>126&&i<160||i>55295&&i<57344||i>64975&&i<65008||(i&65535)===65535||(i&65535)===65534||i>1114111?"\uFFFD":String.fromCharCode(i)}var Rf=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function Ca(e){return e.replace(Rf,Df)}function Df(e,t,i){if(t)return t;if(i.charCodeAt(0)===35){let r=i.charCodeAt(1),a=r===120||r===88;return Oa(i.slice(a?2:1),a?16:10)}return $t(i)||e}function Ht(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?Nd(e.position):"start"in e||"end"in e?Nd(e):"line"in e||"column"in e?Co(e):""}function Co(e){return jd(e&&e.line)+":"+jd(e&&e.column)}function Nd(e){return Co(e&&e.start)+"-"+Co(e&&e.end)}function jd(e){return e&&typeof e=="number"?e:1}var Kd={}.hasOwnProperty,qo=function(e,t,i){return typeof t!="string"&&(i=t,t=void 0),Nf(i)(Dd(Bd(i).document().write(Rd()(e,t,!0))))};function Nf(e){let t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:o(gi),autolinkProtocol:j,autolinkEmail:j,atxHeading:o(ln),blockQuote:o(mi),characterEscape:j,characterReference:j,codeFenced:o(Ei),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:o(Ei,l),codeText:o(_t,l),codeTextData:j,data:j,codeFlowValue:j,definition:o(Ds),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:o(Ns),hardBreakEscape:o(cn),hardBreakTrailing:o(cn),htmlFlow:o(Vr,l),htmlFlowData:j,htmlText:o(Vr,l),htmlTextData:j,image:o(js),label:l,link:o(gi),listItem:o(Ur),listItemValue:h,listOrdered:o(Zi,g),listUnordered:o(Zi),paragraph:o(Gr),reference:Re,referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:o(ln),strong:o(dn),thematicBreak:o(Zr)},exit:{atxHeading:c(),atxHeadingSequence:F,autolink:c(),autolinkEmail:si,autolinkProtocol:Ai,blockQuote:c(),characterEscapeValue:V,characterReferenceMarkerHexadecimal:De,characterReferenceMarkerNumeric:De,characterReferenceValue:se,codeFenced:c(S),codeFencedFence:z,codeFencedFenceInfo:v,codeFencedFenceMeta:w,codeFlowValue:V,codeIndented:c(L),codeText:c(ce),codeTextData:V,data:V,definition:c(),definitionDestinationString:A,definitionLabelString:q,definitionTitleString:_,emphasis:c(),hardBreakEscape:c(Y),hardBreakTrailing:c(Y),htmlFlow:c(re),htmlFlowData:V,htmlText:c(Q),htmlTextData:V,image:c(ue),label:k,labelText:ae,lineEnding:R,link:c(de),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:ai,resourceDestinationString:x,resourceTitleString:pi,resource:Ye,setextHeading:c(H),setextHeadingLineSequence:D,setextHeadingText:M,strong:c(),thematicBreak:c()}};$d(t,(e||{}).mdastExtensions||[]);let i={};return n;function n(O){let I={type:"root",children:[]},$={stack:[I],tokenStack:[],config:t,enter:d,exit:u,buffer:l,resume:m,setData:a,getData:s},Z=[],J=-1;for(;++J0){let oi=$.tokenStack[$.tokenStack.length-1];(oi[1]||Pd).call($,void 0,oi[0])}for(I.position={start:Ni(O.length>0?O[0][1].start:{line:1,column:1,offset:0}),end:Ni(O.length>0?O[O.length-2][1].end:{line:1,column:1,offset:0})},J=-1;++J0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof t.maxAge=="number"&&t.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=t.maxSize,this.maxAge=t.maxAge||Number.POSITIVE_INFINITY,this.onEviction=t.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(t){if(typeof this.onEviction=="function")for(let[i,n]of t)this.onEviction(i,n.value)}_deleteIfExpired(t,i){return typeof i.expiry=="number"&&i.expiry<=Date.now()?(typeof this.onEviction=="function"&&this.onEviction(t,i.value),this.delete(t)):!1}_getOrDeleteIfExpired(t,i){if(this._deleteIfExpired(t,i)===!1)return i.value}_getItemValue(t,i){return i.expiry?this._getOrDeleteIfExpired(t,i):i.value}_peek(t,i){let n=i.get(t);return this._getItemValue(t,n)}_set(t,i){this.cache.set(t,i),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(t,i){this.oldCache.delete(t),this._set(t,i)}*_entriesAscending(){for(let t of this.oldCache){let[i,n]=t;this.cache.has(i)||this._deleteIfExpired(i,n)===!1&&(yield t)}for(let t of this.cache){let[i,n]=t;this._deleteIfExpired(i,n)===!1&&(yield t)}}get(t){if(this.cache.has(t)){let i=this.cache.get(t);return this._getItemValue(t,i)}if(this.oldCache.has(t)){let i=this.oldCache.get(t);if(this._deleteIfExpired(t,i)===!1)return this._moveToRecent(t,i),i.value}}set(t,i,{maxAge:n=this.maxAge}={}){let r=typeof n=="number"&&n!==Number.POSITIVE_INFINITY?Date.now()+n:void 0;this.cache.has(t)?this.cache.set(t,{value:i,expiry:r}):this._set(t,{value:i,expiry:r})}has(t){return this.cache.has(t)?!this._deleteIfExpired(t,this.cache.get(t)):this.oldCache.has(t)?!this._deleteIfExpired(t,this.oldCache.get(t)):!1}peek(t){if(this.cache.has(t))return this._peek(t,this.cache);if(this.oldCache.has(t))return this._peek(t,this.oldCache)}delete(t){let i=this.cache.delete(t);return i&&this._size--,this.oldCache.delete(t)||i}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(t){if(!(t&&t>0))throw new TypeError("`maxSize` must be a number greater than 0");let i=[...this._entriesAscending()],n=i.length-t;n<0?(this.cache=new Map(i),this.oldCache=new Map,this._size=i.length):(n>0&&this._emitEvictions(i.slice(0,n)),this.oldCache=new Map(i.slice(n)),this.cache=new Map,this._size=0),this.maxSize=t}*keys(){for(let[t]of this)yield t}*values(){for(let[,t]of this)yield t}*[Symbol.iterator](){for(let t of this.cache){let[i,n]=t;this._deleteIfExpired(i,n)===!1&&(yield[i,n.value])}for(let t of this.oldCache){let[i,n]=t;this.cache.has(i)||this._deleteIfExpired(i,n)===!1&&(yield[i,n.value])}}*entriesDescending(){let t=[...this.cache];for(let i=t.length-1;i>=0;--i){let n=t[i],[r,a]=n;this._deleteIfExpired(r,a)===!1&&(yield[r,a.value])}t=[...this.oldCache];for(let i=t.length-1;i>=0;--i){let n=t[i],[r,a]=n;this.cache.has(r)||this._deleteIfExpired(r,a)===!1&&(yield[r,a.value])}}*entriesAscending(){for(let[t,i]of this._entriesAscending())yield[t,i.value]}get size(){if(!this._size)return this.oldCache.size;let t=0;for(let i of this.oldCache.keys())this.cache.has(i)||t++;return Math.min(this._size+t,this.maxSize)}entries(){return this.entriesAscending()}forEach(t,i=this){for(let[n,r]of this.entriesAscending())t.call(i,r,n,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}};var _o=new On({maxSize:200});function Vd(e){let t=id(e);if(_o.has(t))return _o.get(t);let i=qo(e,{extensions:[La([So(),To]),Ao()],mdastExtensions:[[Mo(),Io],Eo()]});return _o.set(t,i),i}function ye(e,t){let i=Vd(t),n=[];return ba(i,e,r=>{n.push(r.position)}),n.sort((r,a)=>a.start.offset-r.start.offset),n}function Jf(e){let t=Vd(e),i=[];return ba(t,"listItem",n=>{if(n.children)for(let r of n.children)r.type==="paragraph"&&i.push(r.position)}),i.sort((n,r)=>r.start.offset-n.start.offset),i}function Ud(e){let t=ye("footnoteDefinition",e),i=[],n=new Map,r=new Map;e=Qd(t,e,i,function(s,o,l){let d=o.match(/\[\^.*?\]/)[0];if(n.has(d)){let g=n.get(d);g.footnotesReferencingKey.push(o),n.set(d,g);return}let c,u=[];do c=s.lastIndexOf(d,l),c!==-1&&(u.push(c),l=c-1);while(c>-1);let m={key:d,referencePositions:u,footnotesReferencingKey:[o]};n.set(d,m)});for(let s of n){let o=s[1],l=o.referencePositions.length-o.footnotesReferencingKey.length;l=l>=0?l:0;let d=0;for(let c of o.footnotesReferencingKey){if(d+l>=o.referencePositions.length)throw new Error(E("logs.missing-footnote-error-message").replace("{FOOTNOTE}",c));r.set(c,o.referencePositions[l+d++])}}i=i.sort((s,o)=>r.get(s)-r.get(o)),i.length>0&&(e=e.trimEnd()+` +`;break}case-2:{s=t?" ":" ";break}case-1:{if(!t&&r)continue;s=" ";break}default:s=String.fromCharCode(a)}r=a===-2,n.push(s)}return n.join("")}var Uo={};ec(Uo,{attentionMarkers:()=>dy,contentInitial:()=>ry,disable:()=>uy,document:()=>ny,flow:()=>sy,flowInitial:()=>ay,insideSpan:()=>cy,string:()=>oy,text:()=>ly});var ny={[42]:Fe,[43]:Fe,[45]:Fe,[48]:Fe,[49]:Fe,[50]:Fe,[51]:Fe,[52]:Fe,[53]:Fe,[54]:Fe,[55]:Fe,[56]:Fe,[57]:Fe,[62]:Ma},ry={[91]:Fo},ay={[-2]:_n,[-1]:_n,[32]:_n},sy={[35]:Ro,[42]:dt,[45]:[Na,dt],[60]:No,[61]:Na,[95]:dt,[96]:Ba,[126]:Ba},oy={[38]:Ia,[92]:qa},ly={[-5]:Rn,[-4]:Rn,[-3]:Rn,[33]:Ko,[38]:Ia,[42]:Fn,[60]:[qo,jo],[91]:Yo,[92]:[_o,qa],[93]:ct,[95]:Fn,[96]:Io},cy={null:[Fn,Gd]},dy={null:[42,95]},uy={null:[]};function iu(e={}){let t=ja([Uo].concat(e.extensions||[])),i={defined:[],lazy:{},constructs:t,content:n($d),document:n(Vd),flow:n(Ud),string:n(Qd),text:n(Zd)};return i;function n(r){return a;function a(s){return eu(i,r,s)}}}var tu=/[\0\t\n\r]/g;function nu(){let e=1,t="",i=!0,n;return r;function r(a,s,o){let l=[],d,c,u,m,g;for(a=t+a.toString(s),u=0,t="",i&&(a.charCodeAt(0)===65279&&u++,i=void 0);u13&&i<32||i>126&&i<160||i>55295&&i<57344||i>64975&&i<65008||(i&65535)===65535||(i&65535)===65534||i>1114111?"\uFFFD":String.fromCharCode(i)}var py=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function Ya(e){return e.replace(py,my)}function my(e,t,i){if(t)return t;if(i.charCodeAt(0)===35){let r=i.charCodeAt(1),a=r===120||r===88;return Ka(i.slice(a?2:1),a?16:10)}return Gt(i)||e}function Qt(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?au(e.position):"start"in e||"end"in e?au(e):"line"in e||"column"in e?Go(e):""}function Go(e){return su(e&&e.line)+":"+su(e&&e.column)}function au(e){return Go(e&&e.start)+"-"+Go(e&&e.end)}function su(e){return e&&typeof e=="number"?e:1}var lu={}.hasOwnProperty,Qo=function(e,t,i){return typeof t!="string"&&(i=t,t=void 0),gy(i)(ru(iu(i).document().write(nu()(e,t,!0))))};function gy(e){let t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:o(hi),autolinkProtocol:j,autolinkEmail:j,atxHeading:o(bn),blockQuote:o(gi),characterEscape:j,characterReference:j,codeFenced:o(Ti),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:o(Ti,l),codeText:o(Kt,l),codeTextData:j,data:j,codeFlowValue:j,definition:o(eo),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:o(io),hardBreakEscape:o(vn),hardBreakTrailing:o(vn),htmlFlow:o(ra,l),htmlFlowData:j,htmlText:o(ra,l),htmlTextData:j,image:o(to),label:l,link:o(hi),listItem:o(aa),listItemValue:h,listOrdered:o(it,g),listUnordered:o(it),paragraph:o(sa),reference:_e,referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:o(bn),strong:o(xn),thematicBreak:o(la)},exit:{atxHeading:c(),atxHeadingSequence:_,autolink:c(),autolinkEmail:ai,autolinkProtocol:Li,blockQuote:c(),characterEscapeValue:V,characterReferenceMarkerHexadecimal:Re,characterReferenceMarkerNumeric:Re,characterReferenceValue:se,codeFenced:c(S),codeFencedFence:w,codeFencedFenceInfo:v,codeFencedFenceMeta:x,codeFlowValue:V,codeIndented:c(E),codeText:c(ce),codeTextData:V,data:V,definition:c(),definitionDestinationString:L,definitionLabelString:M,definitionTitleString:B,emphasis:c(),hardBreakEscape:c($),hardBreakTrailing:c($),htmlFlow:c(re),htmlFlowData:V,htmlText:c(Q),htmlTextData:V,image:c(ue),label:z,labelText:ae,lineEnding:R,link:c(de),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:ri,resourceDestinationString:k,resourceTitleString:mi,resource:He,setextHeading:c(H),setextHeadingLineSequence:D,setextHeadingText:q,strong:c(),thematicBreak:c()}};cu(t,(e||{}).mdastExtensions||[]);let i={};return n;function n(O){let I={type:"root",children:[]},P={stack:[I],tokenStack:[],config:t,enter:d,exit:u,buffer:l,resume:m,setData:a,getData:s},Z=[],J=-1;for(;++J0){let si=P.tokenStack[P.tokenStack.length-1];(si[1]||ou).call(P,void 0,si[0])}for(I.position={start:Yi(O.length>0?O[0][1].start:{line:1,column:1,offset:0}),end:Yi(O.length>0?O[O.length-2][1].end:{line:1,column:1,offset:0})},J=-1;++J0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof t.maxAge=="number"&&t.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=t.maxSize,this.maxAge=t.maxAge||Number.POSITIVE_INFINITY,this.onEviction=t.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(t){if(typeof this.onEviction=="function")for(let[i,n]of t)this.onEviction(i,n.value)}_deleteIfExpired(t,i){return typeof i.expiry=="number"&&i.expiry<=Date.now()?(typeof this.onEviction=="function"&&this.onEviction(t,i.value),this.delete(t)):!1}_getOrDeleteIfExpired(t,i){if(this._deleteIfExpired(t,i)===!1)return i.value}_getItemValue(t,i){return i.expiry?this._getOrDeleteIfExpired(t,i):i.value}_peek(t,i){let n=i.get(t);return this._getItemValue(t,n)}_set(t,i){this.cache.set(t,i),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(t,i){this.oldCache.delete(t),this._set(t,i)}*_entriesAscending(){for(let t of this.oldCache){let[i,n]=t;this.cache.has(i)||this._deleteIfExpired(i,n)===!1&&(yield t)}for(let t of this.cache){let[i,n]=t;this._deleteIfExpired(i,n)===!1&&(yield t)}}get(t){if(this.cache.has(t)){let i=this.cache.get(t);return this._getItemValue(t,i)}if(this.oldCache.has(t)){let i=this.oldCache.get(t);if(this._deleteIfExpired(t,i)===!1)return this._moveToRecent(t,i),i.value}}set(t,i,{maxAge:n=this.maxAge}={}){let r=typeof n=="number"&&n!==Number.POSITIVE_INFINITY?Date.now()+n:void 0;this.cache.has(t)?this.cache.set(t,{value:i,expiry:r}):this._set(t,{value:i,expiry:r})}has(t){return this.cache.has(t)?!this._deleteIfExpired(t,this.cache.get(t)):this.oldCache.has(t)?!this._deleteIfExpired(t,this.oldCache.get(t)):!1}peek(t){if(this.cache.has(t))return this._peek(t,this.cache);if(this.oldCache.has(t))return this._peek(t,this.oldCache)}delete(t){let i=this.cache.delete(t);return i&&this._size--,this.oldCache.delete(t)||i}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(t){if(!(t&&t>0))throw new TypeError("`maxSize` must be a number greater than 0");let i=[...this._entriesAscending()],n=i.length-t;n<0?(this.cache=new Map(i),this.oldCache=new Map,this._size=i.length):(n>0&&this._emitEvictions(i.slice(0,n)),this.oldCache=new Map(i.slice(n)),this.cache=new Map,this._size=0),this.maxSize=t}*keys(){for(let[t]of this)yield t}*values(){for(let[,t]of this)yield t}*[Symbol.iterator](){for(let t of this.cache){let[i,n]=t;this._deleteIfExpired(i,n)===!1&&(yield[i,n.value])}for(let t of this.oldCache){let[i,n]=t;this.cache.has(i)||this._deleteIfExpired(i,n)===!1&&(yield[i,n.value])}}*entriesDescending(){let t=[...this.cache];for(let i=t.length-1;i>=0;--i){let n=t[i],[r,a]=n;this._deleteIfExpired(r,a)===!1&&(yield[r,a.value])}t=[...this.oldCache];for(let i=t.length-1;i>=0;--i){let n=t[i],[r,a]=n;this.cache.has(r)||this._deleteIfExpired(r,a)===!1&&(yield[r,a.value])}}*entriesAscending(){for(let[t,i]of this._entriesAscending())yield[t,i.value]}get size(){if(!this._size)return this.oldCache.size;let t=0;for(let i of this.oldCache.keys())this.cache.has(i)||t++;return Math.min(this._size+t,this.maxSize)}entries(){return this.entriesAscending()}forEach(t,i=this){for(let[n,r]of this.entriesAscending())t.call(i,r,n,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}};var Xo=new Dn({maxSize:200});function mu(e){let t=kd(e);if(Xo.has(t))return Xo.get(t);let i=Qo(e,{extensions:[ja([Po(),Ho]),$o()],mdastExtensions:[[Zo(),Jo],Wo()]});return Xo.set(t,i),i}function ye(e,t){let i=mu(t),n=[];return Oa(i,e,r=>{n.push(r.position)}),n.sort((r,a)=>a.start.offset-r.start.offset),n}function Ty(e){let t=mu(e),i=[];return Oa(t,"listItem",n=>{if(n.children)for(let r of n.children)r.type==="paragraph"&&i.push(r.position)}),i.sort((n,r)=>r.start.offset-n.start.offset),i}function gu(e){let t=ye("footnoteDefinition",e),i=[],n=new Map,r=new Map;e=fu(t,e,i,function(s,o,l){let d=o.match(/\[\^.*?\]/)[0];if(n.has(d)){let g=n.get(d);g.footnotesReferencingKey.push(o),n.set(d,g);return}let c,u=[];do c=s.lastIndexOf(d,l),c!==-1&&(u.push(c),l=c-1);while(c>0);let m={key:d,referencePositions:u,footnotesReferencingKey:[o]};n.set(d,m)});for(let s of n){let o=s[1],l=o.referencePositions.length-o.footnotesReferencingKey.length;l=l>=0?l:0;let d=0;for(let c of o.footnotesReferencingKey){if(d+l>=o.referencePositions.length)throw new Error(T("logs.missing-footnote-error-message").replace("{FOOTNOTE}",c));r.set(c,o.referencePositions[l+d++])}}i=i.sort((s,o)=>r.get(s)-r.get(o)),i.length>0&&(e=e.trimEnd()+` `);for(let s of i)e+=` -`+s;return e}function Gd(e){let t=ye("footnoteDefinition",e),i=[],n=new Map,r=new Map,a=new Map,s=[],o=new Set,l=function(u,m,g){let h=m.match(/\[\^.*?\]/)[0];r.set(m,h);let v=o.has(h);if(v&&n.has(m))return n.get(m);if(v)throw new Error(E("logs.too-many-footnotes-error-message").replace("{FOOTNOTE_KEY}",h));let w,z=-1;do w=u.lastIndexOf(h,g),w!==-1&&(s.push({key:h,position:w}),z=w,g=w-1);while(w>-1);return o.add(h),z};e=Qd(t,e,i,(u,m,g)=>{n.set(m,l(u,m,g))}),i=i.sort((u,m)=>n.get(u)-n.get(m)),s=s.sort((u,m)=>m.position-u.position),i.length>0&&(e=e.trimEnd()+` +`+s;return e}function hu(e){let t=ye("footnoteDefinition",e),i=[],n=new Map,r=new Map,a=new Map,s=[],o=new Set,l=function(u,m,g){let h=m.match(/\[\^.*?\]/)[0];r.set(m,h);let v=o.has(h);if(v&&n.has(m))return n.get(m);if(v)throw new Error(T("logs.too-many-footnotes-error-message").replace("{FOOTNOTE_KEY}",h));let x,w=-1;do x=u.lastIndexOf(h,g),x!==-1&&(s.push({key:h,position:x}),w=x,g=x-1);while(x>0);return o.add(h),w};e=fu(t,e,i,(u,m,g)=>{n.set(m,l(u,m,g))}),i=i.sort((u,m)=>n.get(u)-n.get(m)),s=s.sort((u,m)=>m.position-u.position),i.length>0&&(e=e.trimEnd()+` `);let d=1,c=new Set;for(let u of i){if(c.has(u))continue;c.add(u);let m=r.get(u),g=`[^${d++}]`;a.set(m,g),e+=` -`+u.replace(m,g)}for(let u of s){let m=a.get(u.key);e=nd(e,u.key,m,u.position)}return e}function Qd(e,t,i,n){for(let r of e){let a=t.substring(r.start.offset,r.end.offset);i.push(a),r.end.offset")||s.endsWith("
")||(n[a]=s+" ")}e=fe(e,i.start.offset,i.end.offset,n.join(` -`))}}return e}function Jd(e){let t=e.endsWith(` +`))}}return e}function bu(e){let t=e.endsWith(` `),i=ye("paragraph",e);if(i.length===0)return e;for(let n of i){let r=n.start.offset;for(r>0&&r--;r>=0&&e.charAt(r)!=` `;)r--;r++;let a=e.substring(r,n.end.offset).split(` -`),s=a[0].trimStart();if(s.startsWith(">")||s.startsWith("- ")||s.startsWith("- ")||s.match(/^[0-9]+\.( |\t)+/))continue;let o=a.length,l=[],d=!1;for(let h=0;h")||s.startsWith("- ")||s.startsWith("- ")||s.match(/^[0-9]+\.( |\t)+/)||s.match(Wa))continue;let o=a.length,l=[],d=!1;for(let h=0;h")||v.endsWith("
")||v.endsWith(" ")}for(;r>0&&e.charAt(r-1)==` `;)r--;let c=e.length,u=n.end.offset;for(u0&&e.charAt(a-1).trim()==="";)a--;(a===0||e.charAt(a-1).trim()!="")&&a++;let s=e.substring(a,r.end.offset);n.test(s)&&(a+=4,s=s.substring(4)),s=t(s),e=fe(e,a,r.end.offset,s)}return e}function tu(e){let t=ye("code",e);for(let i of t)e.substring(i.start.offset,i.end.offset).startsWith("```")&&(e=tt(e,i.start.offset,i.end.offset));return e}function nu(e,t){let i=ye("math",e);for(let n of i)e=tt(e,n.start.offset,n.end.offset);i=ye("inlineMath",e);for(let n of i)e.substring(n.start.offset,n.end.offset).startsWith("$".repeat(t))&&(e=tt(e,n.start.offset,n.end.offset));return e}function ru(e){let t=ye("blockquote",e);for(let i of t){let n=i.end.offset;for(;n0&&e.charAt(a-1)!==` -`;)a--;let s=e.substring(a,r.end.offset),o=function(u){let m=u.lastIndexOf("> ");return m!==-1&&(u=u.substring(m+2)),u=u.replaceAll(" "," "),Math.floor((u.split(" ").length-1)/2)+1},l=new Map,d=function(u,m){let g=m;for(;g>u;)l.delete(g--)},c=-1;s=s.replace(/^(( |\t|> )*)((\d+(\.|\)))|[-*+])([^\n]*)$/gm,(u,m="",g,h,v,w,z)=>{let S=1,L=o(m);if(!/^\d/.test(h)){let q=L>c?L:c;return d(L,q),u}return l.has(L)?t==="ascending"&&(S=l.get(L)+1,l.set(L,S)):l.set(L,1),c>L&&d(L,c),c=L,`${m}${S}${i}${z}`}),e=fe(e,a,r.end.offset,s)}return e}function su(e,t){let i=ye("listItem",e);if(!i)return e;let n=/^((\d+[.)])|(- \[[ x]\]))/m,r=t;if(t=="consistent"){let a=i.length-1;for(;a>=0;){let s=e.substring(i[a].start.offset,i[a].end.offset);if(a--,!s.match(n)){r=s.charAt(0);break}}if(a==-1)return e}for(let a of i){let s=e.substring(a.start.offset,a.end.offset);s.match(n)||(s=r+s.substring(1),e=fe(e,a.start.offset,a.end.offset,s))}return e}function Fo(e,t){let i=ye("blockquote",e);for(let n of i){let r=n.end.offset;for(;r( |\t)*)+\$+$/m,l=e.substring(t,i);return l=l.replace(n,(d,c,u="")=>u===""?c+` +`),e}function vu(e){let t=ye("link",e);for(let i of t){if(i==null)continue;let n=e.substring(i.start.offset,i.end.offset);if(!n.match(Nn))continue;let r=n.indexOf("]"),a=n.substring(0,1)+n.substring(1,r).trim()+n.substring(r);e=fe(e,i.start.offset,i.end.offset,a)}return e}function xu(e,t){let i=ye("emphasis",e);for(let n of i){let r=e.substring(n.start.offset+1,n.end.offset-1);r=t(r),e=fe(e,n.start.offset+1,n.end.offset-1,r)}return e}function wu(e,t){let i=ye("strong",e);for(let n of i){let r=e.substring(n.start.offset+2,n.end.offset-2);r=t(r),e=fe(e,n.start.offset+2,n.end.offset-2,r)}return e}function Ha(e,t){let i=Ty(e);for(let n of i){let r=n.start.offset;for(;r>0&&e.charAt(r-1).trim()==="";)r--;(r===0||e.charAt(r-1).trim()!="")&&r++;let a=e.substring(r,n.end.offset);Iu.test(a)&&(r+=4,a=a.substring(4)),a=t(a),e=fe(e,r,n.end.offset,a)}return e}function ku(e){let t=ye("code",e);for(let i of t)e.substring(i.start.offset,i.end.offset).startsWith("```")&&(e=ot(e,i.start.offset,i.end.offset));return e}function zu(e,t){let i=ye("math",e);for(let n of i)e=ot(e,n.start.offset,n.end.offset);i=ye("inlineMath",e);for(let n of i)e.substring(n.start.offset,n.end.offset).startsWith("$".repeat(t))&&(e=ot(e,n.start.offset,n.end.offset));return e}function Su(e){let t=ye("blockquote",e);for(let i of t){let n=i.end.offset;for(;n0&&e.charAt(a-1)!==` +`;)a--;let s=e.substring(a,r.end.offset),o=function(u){let m=u.lastIndexOf("> ");return m!==-1&&(u=u.substring(m+2)),u=u.replaceAll(" "," "),Math.floor((u.split(" ").length-1)/2)+1},l=new Map,d=function(u,m){let g=m;for(;g>u;)l.delete(g--)},c=-1;s=s.replace(/^(( |\t|> )*)((\d+(\.|\)))|[-*+])([^\n]*)$/gm,(u,m="",g,h,v,x,w)=>{let S=1,E=o(m);if(!/^\d/.test(h)){let M=E>c?E:c;return d(E,M),u}return l.has(E)?t==="ascending"&&(S=l.get(E)+1,l.set(E,S)):l.set(E,1),c>E&&d(E,c),c=E,`${m}${S}${i}${w}`}),e=fe(e,a,r.end.offset,s)}return e}function Lu(e,t){let i=ye("listItem",e);if(!i)return e;let n=/^((\d+[.)])|(- \[[ x]\]))/m,r=t;if(t=="consistent"){let a=i.length-1;for(;a>=0;){let s=e.substring(i[a].start.offset,i[a].end.offset);if(a--,!s.match(n)){r=s.charAt(0);break}}if(a==-1)return e}for(let a of i){let s=e.substring(a.start.offset,a.end.offset);s.match(n)||(s=r+s.substring(1),e=fe(e,a.start.offset,a.end.offset,s))}return e}function il(e,t){let i=ye("blockquote",e);for(let n of i){let r=n.end.offset;for(;r2;){let d=e.indexOf(n,l)+n.length;a.unshift({startIndex:o,endIndex:i+d}),o=i+d+1,l=d+1,s-=2}return a.unshift({startIndex:i+e.indexOf(n,l),endIndex:i+e.length}),a}function pu(e,t,i,n,r){let a=e.substring(Mn(e,t),t)??"",s=e.substring(Mn(e,i),i)??"",o=/^(>( |\t)*)+\$+$/m,l=e.substring(t,i);return l=l.replace(n,(d,c,u="")=>u===""?c+` `+a:c+` `),l=l.replace(r,(d,c="",u,m)=>{let g=c==="";return g&&o.test(s.trim())?d:g?` `+a+u+m:` -`+u+m}),fe(e,t,i,l)}function Ia(e){let t=[...e.matchAll(cu)],i=[];for(let n of t){let r=zn(e,n.index);if(r===0)continue;let a=zn(e,r-1),s=n[0],o=e.substring(r,n.index+s.length);if(Xf(o,s))continue;let l=a,d=e.substring(a,r-1);if(!s.includes("|")&&!d.includes("|"))continue;d=d.replace(Bo,h=>{let v=h.trim();return v===""||v==="|"||(l+=h.length-1),""});let c=s.replace(Bo,"");if(d.endsWith("|")&&(d=d.slice(0,-1)),c.endsWith("|")&&(c=c.slice(0,-1)),d.split("|").length!==c.split("|").length)continue;let u=n.index+n[0].length;if(u>=e.length-1){i.push({startIndex:l,endIndex:e.length});continue}let m=e.substring(u+1).split(` -`),g=0;for(;g]/.test(i)}function lu(e){let t=0,i=[],n=[...e.matchAll(uu)];if(!n||n.length===0)return i;let r=[...e.matchAll(pu)];return n.forEach(a=>{t=a.index;let s=!1,o=e.length-1;for(;r&&r.length!==0&&!s;)if(r[0].index<=t)r.shift();else{s=!0;let l=r[0];o=l.index+l[0].length}i.push({startIndex:t,endIndex:o}),!r||r.length}),i.reverse()}var ji=/^([ \t]*)(#+)([ \t]+)([^\n\r]*?)([ \t]+#+)?$/gm,mu=`^XXX\\.*? +`+u+m}),fe(e,t,i,l)}function $a(e){let t=[...e.matchAll(Ou)],i=[];for(let n of t){let r=Mn(e,n.index);if(r===0)continue;let a=Mn(e,r-1),s=n[0],o=e.substring(r,n.index+s.length);if(Oy(o,s))continue;let l=a,d=e.substring(a,r-1);if(!s.includes("|")&&!d.includes("|"))continue;d=d.replace(el,h=>{let v=h.trim();return v===""||v==="|"||(l+=h.length-1),""});let c=s.replace(el,"");if(d.endsWith("|")&&(d=d.slice(0,-1)),c.endsWith("|")&&(c=c.slice(0,-1)),d.split("|").length!==c.split("|").length)continue;let u=n.index+n[0].length;if(u>=e.length-1){i.push({startIndex:l,endIndex:e.length});continue}let m=e.substring(u+1).split(` +`),g=0;for(;g]/.test(i)}function Eu(e){let t=0,i=[],n=[...e.matchAll(Mu)];if(!n||n.length===0)return i;let r=[...e.matchAll(qu)];return n.forEach(a=>{t=a.index;let s=!1,o=e.length-1;for(;r&&r.length!==0&&!s;)if(r[0].index<=t)r.shift();else{s=!0;let l=r[0];o=l.index+l[0].length}i.push({startIndex:t,endIndex:o}),!r||r.length}),i.reverse()}var Pi=/^([ \t]*)(#+)([ \t]+)([^\n\r]*?)([ \t]+#+)?$/gm,Bu=`^XXX\\.*? (?:((?:.| )*?) -)?XXX(?=\\s|$)$`,Se=/^---\n((?:(((?!---)(?:.|\n)*?)\n)?))---(?=\n|$)/,ey=mu.replaceAll("X","`"),iy=mu.replaceAll("X","~"),ty=`^(( |( {4})).* -)+`,fS=new RegExp(`${ey}|${iy}|${ty}`,"gm"),_a=/(!?)\[{2}([^\][\n|]+)(\|([^\][\n|]+))?(\|([^\][\n|]+))?\]{2}/g,Cn=/(!?)\[([^[]*)\](\(.*\))/g,qn=/(\s|^)(#[^\s#;.,>\\s*)*",cu=/(\|? *:?-{1,}:? *\|?)(\| *:?-{1,}:? *\|?)*( |\t)*$/gm,Bo=/^(((>[ ]?)*)|([ ]{0,3}))\|/m,du=/[^\n]*?\|[^\n]*?(\n|$)/m,Wt=/(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s`\]'"‘’“”>]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s`\]'"‘’“”>]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s`\]'"‘’“”>]{2,}|www\.[a-zA-Z0-9]+\.[^\s`\]'"‘’“”>]{2,})/gi,hu=/]+)>((?:.(?!<\/a>))*.)<\/a>/g,fu=/[\p{L}\p{N}\p{Pc}\p{M}\-'’`]+/gu,yu=/&[^\s]+;$/mi,uu=Su(!0),pu=Su(!1),bu=/[“”„«»]/g,vu=/[‘’‚‹›]/g,xu=/<%[^]*?%>/g;function Ke(e){return e.replace(/\$/g,"$$$$")}function In(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function wu(e){let t=e.match(_a);if(t){for(let i of t)if(i.includes("|")){let n=i.indexOf("|"),r=i.substring(0,n+1)+i.substring(n+1,i.length-2).trim()+"]]";e=e.replace(i,r)}}return e}function ku(e){let t=Ia(e);if(t.length===0)return e;for(let i of t)e=tt(e,i.startIndex,i.endIndex);return e}function Fa(e){let t=e.match(/^#\s+(.*)/m);if(t&&t[1]){let i=t[1];return i=i.replaceAll(_a,(n,r,a,s)=>s!=null?s.replace("|",""):a),i.replaceAll(Cn,"$2")}return""}function zu(e){return[...e.matchAll(qn)].map(t=>t[2])}function Su(e){let t="",i="";return e?i+="disable":i+="enable",new RegExp(t.replace("{ENDING_TEXT}",i),"g")}var Do="tag",_n="tags",Bn=[Do,_n],ny="alias",No="aliases",Fn=[ny,No],Rn="linter-yaml-title-alias";function bi(e){return e.match(Se)===null&&(e=`--- +)?XXX(?=\\s|$)$`,Ge=/^---\n((?:(((?!---)(?:.|\n)*?)\n)?))---(?=\n|$)/,Cy=Bu.replaceAll("X","`"),My=Bu.replaceAll("X","~"),qy=`^(( |( {4})).* +)+`,ZS=new RegExp(`${Cy}|${My}|${qy}`,"gm"),Va=/(!?)\[{2}([^\][\n|]+)(\|([^\][\n|]+))?(\|([^\][\n|]+))?\]{2}/g,Nn=/(!?)\[([^[]*)\](\(.*\))/g,jn=/(\s|^)(#[^\s#;.,>\\s*)*",Ou=/(\|? *:?-{1,}:? *\|?)(\| *:?-{1,}:? *\|?)*( |\t)*$/gm,el=/^(((>[ ]?)*)|([ ]{0,3}))\|/m,Cu=/[^\n]*?\|[^\n]*?(\n|$)/m,_u=/(([a-z\-0-9]+:)\/{2})([^\s/?#]*[^\s")'.?!/]|[/])?(([/?#][^\s")']*[^\s")'.?!])|[/])?/gi,Zt=/(?:(?:(?:[a-z]+:)?\/\/)|www\.)(?:localhost|(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?|(?:(?:[a-z\u00a1-\uffff0-9][-_]*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:(?:[/?#][^\s")']*[^\s")'.?!])|[/])?/gi,Ru=/]+)>((?:.(?!<\/a>))*.)<\/a>/g,Du=/[\p{L}\p{N}\p{Pc}\p{M}\-'’`]+/gu,Nu=/&[^\s]+;$/mi,Mu=Vu(!0),qu=Vu(!1),ju=/[“”„«»]/g,Ku=/[‘’‚‹›]/g,Yu=/<%[^]*?%>/g,Jt="\\[.\\]",Iu=new RegExp(`^${Jt}`),Pu=new RegExp(`^${Yn}- ${Jt} `),Ga=new RegExp(`^\\s*- ${Jt} `),Wa=/^(\[\^\w+\]) ?([,.;!:?])/gm,Oo=/^(>\s*)+\[![^\s]*\]/m;function Ke(e){return e.replace(/\$/g,"$$$$")}function Pn(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Hu(e){let t=e.match(Va);if(t){for(let i of t)if(i.includes("|")){let n=i.indexOf("|"),r=i.substring(0,n+1)+i.substring(n+1,i.length-2).trim()+"]]";e=e.replace(i,r)}}return e}function $u(e){let t=$a(e);if(t.length===0)return e;for(let i of t)e=ot(e,i.startIndex,i.endIndex);return e}function Qa(e){let t=e.match(/^#\s+(.*)/m);if(t&&t[1]){let i=t[1];return i=i.replaceAll(Va,(n,r,a,s)=>s!=null?s.replace("|",""):a),i.replaceAll(Nn,"$2")}return""}function Wu(e){return[...e.matchAll(jn)].map(t=>t[2])}function Vu(e){let t="",i="";return e?i+="disable":i+="enable",new RegExp(t.replace("{ENDING_TEXT}",i),"g")}var tl="tag",Hn="tags",$n=[tl,Hn],Iy="alias",nl="aliases",Wn=[Iy,nl],Ja="linter-yaml-title-alias",Xt="disabled rules";function bi(e){return e.match(Ge)===null&&(e=`--- --- -`+e),e}function Te(e,t){if(!e.match(Se))return e;let i=e.match(Se)[0],n=t(i);return e=e.replace(i,Ke(n)),e}function jo(e){return new RegExp(`^([\\t ]*)${e}:[ \\t]*(\\S.*|(?:(?:\\n *- \\S.*)|((?:\\n *- *))*|(\\n([ \\t]+[^\\n]*))*)*)\\n`,"m")}function Ae(e,t,i){let n=`${t}:${i} -`,r=!1,a=e.replace(jo(t),(s,o)=>(r=!0,o+n));return r||(a=`${e}${n}`),a}function Ee(e,t){let i=e.match(jo(t));return i==null?null:i[2]}function st(e,t){return e.replace(jo(t),"")}function Xe(e){if(e==null)return null;let t=io(e.replace(/\n(\t)+/g,` - `));return t??{}}function Qe(e,t,i,n){switch(typeof e=="string"&&(e=[e]),t){case"single-line":return e==null||e.length===0?" []":" "+Ro(e);case"multi-line":if(e==null||e.length===0)return` - - `;if(n)for(let r=0;r(r=!0,o+n));return r||(a=`${e}${n}`),a}function Ce(e,t){let i=e.match(rl(t));return i==null?null:i[2]}function ut(e,t){return e.replace(rl(t),"")}function Mi(e){if(e==null)return null;let t=bo(e.replace(/\n(\t)+/g,` + `));return t??{}}function Qe(e,t,i,n,r=!1){if(typeof e=="string"&&(e=[e]),e==null||e.length===0)return By(t);let a=n&&(t=="multi-line"||t=="single string to multi-line"&&e.length>1);if(r||a)for(let s=0;si!="");if(e.includes(` -`)){let t=e.split(/[ \t]*\n[ \t]*-[ \t]*/);return t.splice(0,1),t=t.filter(i=>i!=""),t==null||t.length===0?null:t}return e}function Da(e){if(e==null)return[];let t=[],i=[];Array.isArray(e)?i=e:e.includes(",")?i=Ra(e,","):i=Ra(e," ");for(let n of i)t.push(n.trim());return t}function Na(e){return typeof e=="string"?Ra(e,","):e}function Ra(e,t=","){if(e==""||e==null)return null;if(t.length>1)throw new Error(E("logs.invalid-delimiter-error-message"));let i=[],n="",r=0;for(;r1&&(e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"'))}function xi(e,t,i=!1,n=!1){let r=ry(e,t,i);if(n)return r;try{if(io(r)===e)return r}catch{}let a=to(e,{lineWidth:-1,quotingType:t,forceQuotes:i}).slice(0,-1),s=to(e,{lineWidth:-1,quotingType:t=='"'?"'":'"',forceQuotes:i}).slice(0,-1);return s===e||s.length")&&(n=n.substring(3)),n.endsWith("

")&&(n=n.substring(0,n.length-4)),t.innerHTML=n}function ei(e){e.addClass("linter-visually-hidden")}function ki(e){e.removeClass("linter-visually-hidden")}var ot=class{constructor(t,i,n,r,a){this.configKey=t;this.nameKey=i;this.descriptionKey=n;this.defaultValue=r;a&&(this.ruleAlias=a)}getName(){return E(this.nameKey)??""}getDescription(){return E(this.descriptionKey)??""}getSearchInfo(){return{name:this.getName(),description:this.getDescription()}}setOption(t,i){i.ruleConfigs[this.ruleAlias][this.configKey]=t}parseNameAndDescriptionAndRemoveSettingBorder(t,i){wi(this.getName(),t.nameEl,i.settingsTab.component),wi(this.getDescription(),t.descEl,i.settingsTab.component),t.settingEl.style.border="none"}},Vt=class extends ot{display(i,n,r){let a=new Ut.Setting(i).addToggle(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveData(r.settings)})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},Dn=class extends ot{display(i,n,r){let a=new Ut.Setting(i).addText(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveData(r.settings)})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},Pa=class extends ot{display(i,n,r){let a=new Ut.Setting(i).addTextArea(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveData(r.settings)})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},Ka=class extends ot{display(i,n,r){let a=new Ut.Setting(i).addMomentFormat(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.setPlaceholder("dddd, MMMM Do YYYY, h:mm:ss a"),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveData(r.settings)})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},$a=class{constructor(t,i){this.value=t,this.description=i}getDisplayValue(){return E(this.value)??""}},Ha=class extends ot{constructor(i,n,r,a,s,o){super(i,n,r,a,o);this.options=s}getSearchInfo(){return{name:this.getName(),description:this.getDescription(),options:this.options}}display(i,n,r){let a=new Ut.Setting(i).addDropdown(s=>{for(let o of this.options)s.addOption(o.value.replace("enums.",""),o.getDisplayValue());s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveData(r.settings)})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}};var Pi=class extends Error{constructor(t,i){super(t),this.cause=i??null,this.stack=i.stack??null,Object.setPrototypeOf(this,Pi.prototype)}};var f={code:{replaceAction:"code",placeholder:"{CODE_BLOCK_PLACEHOLDER}"},inlineCode:{replaceAction:"inlineCode",placeholder:"{INLINE_CODE_BLOCK_PLACEHOLDER}"},image:{replaceAction:"image",placeholder:"{IMAGE_PLACEHOLDER}"},thematicBreak:{replaceAction:"thematicBreak",placeholder:"{HORIZONTAL_RULE_PLACEHOLDER}"},italics:{replaceAction:"emphasis",placeholder:"{ITALICS_PLACEHOLDER}"},bold:{replaceAction:"strong",placeholder:"{STRONG_PLACEHOLDER}"},list:{replaceAction:"list",placeholder:"{LIST_PLACEHOLDER}"},blockquote:{replaceAction:"blockquote",placeholder:"{BLOCKQUOTE_PLACEHOLDER}"},math:{replaceAction:"math",placeholder:"{MATH_PLACEHOLDER}"},inlineMath:{replaceAction:"inlineMath",placeholder:"{INLINE_MATH_PLACEHOLDER}"},html:{replaceAction:"html",placeholder:"{HTML_PLACEHOLDER}"},yaml:{replaceAction:Se,placeholder:Ke(`--- ----`)},wikiLink:{replaceAction:_a,placeholder:"{WIKI_LINK_PLACEHOLDER}"},obsidianMultiLineComments:{replaceAction:gu,placeholder:"{OBSIDIAN_COMMENT_PLACEHOLDER}"},footnoteAtStartOfLine:{replaceAction:/^(\[\^\w+\]) ?([,.;!:?])/gm,placeholder:"{FOOTNOTE_AT_START_OF_LINE_PLACEHOLDER}"},footnoteAfterATask:{replaceAction:/- \[.] (\[\^\w+\]) ?([,.;!:?])/gm,placeholder:"{FOOTNOTE_AFTER_A_TASK_PLACEHOLDER}"},url:{replaceAction:Wt,placeholder:"{URL_PLACEHOLDER}"},anchorTag:{replaceAction:hu,placeholder:"{ANCHOR_PLACEHOLDER}"},templaterCommand:{replaceAction:xu,placeholder:"{TEMPLATER_PLACEHOLDER}"},link:{replaceAction:oy,placeholder:"{REGULAR_LINK_PLACEHOLDER}"},tag:{replaceAction:ly,placeholder:"#tag-placeholder"},table:{replaceAction:cy,placeholder:"{TABLE_PLACEHOLDER}"},customIgnore:{replaceAction:dy,placeholder:"{CUSTOM_IGNORE_PLACEHOLDER}"}};function qe(e,t,i){let n=[];for(let r of e){let a;if(typeof r.replaceAction=="string")a=ay(t,r.placeholder,r.replaceAction);else if(r.replaceAction instanceof RegExp)a=sy(t,r.placeholder,r.replaceAction);else if(typeof r.replaceAction=="function"){let s=r.replaceAction;a=s(t,r.placeholder)}t=a.newText,n.push({replacedValues:a.replacedValues,placeholder:r.placeholder})}return t=i(t),n=n.reverse(),n!=null&&n.length>0&&n.forEach(r=>{r.replacedValues.forEach(a=>{t=t.replace(new RegExp(r.placeholder,"i"),Ke(a))})}),t}function ay(e,t,i){let n=ye(i,e),r=[];for(let a of n){let s=e.substring(a.start.offset,a.end.offset);r.push(s),e=fe(e,a.start.offset,a.end.offset,t)}return r.reverse(),{newText:e,replacedValues:r}}function sy(e,t,i){let n=e.match(i),r=[];if(i.flags.includes("g")){if(e=e.replaceAll(i,t),n)for(let a of n)r.push(a)}else e=e.replace(i,t),n&&r.push(n[0]);return{newText:e,replacedValues:r}}function oy(e,t){let i=ye("link",e),n=[];for(let r of i){if(r==null)continue;let a=e.substring(r.start.offset,r.end.offset);a.match(Cn)&&(n.push(a),e=fe(e,r.start.offset,r.end.offset,t))}return n.reverse(),{newText:e,replacedValues:n}}function ly(e,t){let i=[];return e=e.replace(qn,(n,r,a)=>(i.push(a),r+t)),{newText:e,replacedValues:i}}function cy(e,t){let i=Ia(e),n=new Array(i.length),r=0,a=n.length;for(let s of i)n[a-1-r++]=e.substring(s.startIndex,s.endIndex),e=fe(e,s.startIndex,s.endIndex,t);return{newText:e,replacedValues:n}}function dy(e,t){let i=lu(e),n=new Array(i.length),r=0,a=n.length;for(let s of i)n[a-1-r++]=e.substring(s.startIndex,s.endIndex),e=fe(e,s.startIndex,s.endIndex,t);return{newText:e,replacedValues:n}}var N=(s=>(s.YAML="YAML",s.HEADING="Heading",s.FOOTNOTE="Footnote",s.CONTENT="Content",s.SPACING="Spacing",s.PASTE="Paste",s))(N||{}),Ya=class{constructor(t,i,n,r,a,s,o,l=[],d=!1,c=[]){this.nameKey=t;this.descriptionKey=i;this.settingsKey=n;this.alias=r;this.type=a;this.applyAfterIgnore=s;this.examples=o;this.options=l;this.hasSpecialExecutionOrder=d;this.ignoreTypes=c;l.unshift(new Vt("enabled",this.descriptionKey,"",!1));for(let u of l)u.ruleAlias=r}getDefaultOptions(){let t={};for(let i of this.options)t[i.configKey]=i.defaultValue;return t}getOptions(t){return t.ruleConfigs[this.settingsKey]}getName(){return E(this.nameKey)}getDescription(){return E(this.descriptionKey)}getURL(){return"https://github.com/platers/obsidian-linter/blob/master/docs/rules.md"+"#"+this.alias}enabledOptionName(){return this.options[0].configKey}apply(t,i){return qe(this.ignoreTypes,t,n=>this.applyAfterIgnore(n,i))}},Wa=class{constructor(t,i,n,r={}){this.description=t,this.options=r,this.before=i,this.after=n}},Eu=Object.values(N);function Lu(e){let t=e.match(Se);if(!t)return[];let i=t[1],n=Ee(i,"disabled rules");if(n==null)return[];let r=n.includes(` -`)?`disabled rules: -`:"disabled rules: ";r+=n;let s=Xe(r)["disabled rules"];return s?(typeof s=="string"&&(s=[s]),s.includes("all")?Ki.map(o=>o.alias):s):[]}var Ki=[],uy={},Nn=new Map;function Ou(e){Ki.push(e),Ki.sort((t,i)=>Eu.indexOf(t.type)-Eu.indexOf(i.type)||t.settingsKey.localeCompare(i.settingsKey)),uy[e.alias]=e,Nn.has(e.type)?Nn.get(e.type).push(e):Nn.set(e.type,[e])}function Va(e,t){let i;throw e instanceof Ec?(i=e.toString(),i=E("logs.wrapper-yaml-error").replace("{ERROR_MESSAGE}",i.substring(i.indexOf(":")+1))):i=E("logs.wrapper-unknown-error").replace("{ERROR_MESSAGE}",e.message),new Pi(`"${t}" encountered an ${i}`,e)}var on=gn(Cu());function py(e){for(var t=[],i=1;ii!="");if(e.includes(` +`)){let t=e.split(/[ \t]*\n[ \t]*-[ \t]*/);return t.splice(0,1),t=t.filter(i=>i!=""),t==null||t.length===0?null:t}return e}function Xa(e){if(e==null)return[];let t=[],i=[];Array.isArray(e)?i=e:e.includes(",")?i=Za(e,","):i=Za(e," ");for(let n of i)t.push(n.trim());return t}function es(e){return typeof e=="string"?Za(e,","):e}function Za(e,t=","){if(e==""||e==null)return null;if(t.length>1)throw new Error(T("logs.invalid-delimiter-error-message"));let i=[],n="",r=0;for(;r1&&(e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"'))}function li(e,t,i=!1,n=!1){let r=Fy(e,t,i);if(n)return r;try{if(bo(r)===e)return r}catch{}let a=vo(e,{lineWidth:-1,quotingType:t,forceQuotes:i}).slice(0,-1),s=vo(e,{lineWidth:-1,quotingType:t=='"'?"'":'"',forceQuotes:i}).slice(0,-1);return s===e||s.length")&&(n=n.substring(3)),n.endsWith("

")&&(n=n.substring(0,n.length-4)),t.innerHTML=n}function Xe(e){e.addClass("linter-visually-hidden")}function wi(e){e.removeClass("linter-visually-hidden")}var pt=class{constructor(t,i,n,r,a){this.configKey=t;this.nameKey=i;this.descriptionKey=n;this.defaultValue=r;a&&(this.ruleAlias=a)}getName(){return T(this.nameKey)??""}getDescription(){return T(this.descriptionKey)??""}getSearchInfo(){return{name:this.getName(),description:this.getDescription()}}setOption(t,i){i.ruleConfigs[this.ruleAlias][this.configKey]=t}parseNameAndDescriptionAndRemoveSettingBorder(t,i){xi(this.getName(),t.nameEl,i.settingsTab.component),xi(this.getDescription(),t.descEl,i.settingsTab.component),t.settingEl.addClass("linter-no-border")}},nn=class extends pt{display(i,n,r){let a=new rn.Setting(i).addToggle(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},Vn=class extends pt{display(i,n,r){let a=new rn.Setting(i).addText(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},is=class extends pt{display(i,n,r){let a=new rn.Setting(i).addTextArea(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},ts=class extends pt{display(i,n,r){let a=new rn.Setting(i).addMomentFormat(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.setPlaceholder("dddd, MMMM Do YYYY, h:mm:ss a"),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},ns=class{constructor(t,i){this.value=t,this.description=i}getDisplayValue(){return T(this.value)??""}},rs=class extends pt{constructor(i,n,r,a,s,o){super(i,n,r,a,o);this.options=s}getSearchInfo(){return{name:this.getName(),description:this.getDescription(),options:this.options}}display(i,n,r){let a=new rn.Setting(i).addDropdown(s=>{for(let o of this.options)s.addOption(o.value.replace("enums.",""),o.getDisplayValue());s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}};var Hi=class extends Error{constructor(t,i){super(t),this.cause=i??null,this.stack=i.stack??null,Object.setPrototypeOf(this,Hi.prototype)}};var f={code:{replaceAction:"code",placeholder:"{CODE_BLOCK_PLACEHOLDER}"},inlineCode:{replaceAction:"inlineCode",placeholder:"{INLINE_CODE_BLOCK_PLACEHOLDER}"},image:{replaceAction:"image",placeholder:"{IMAGE_PLACEHOLDER}"},thematicBreak:{replaceAction:"thematicBreak",placeholder:"{HORIZONTAL_RULE_PLACEHOLDER}"},italics:{replaceAction:"emphasis",placeholder:"{ITALICS_PLACEHOLDER}"},bold:{replaceAction:"strong",placeholder:"{STRONG_PLACEHOLDER}"},list:{replaceAction:"list",placeholder:"{LIST_PLACEHOLDER}"},blockquote:{replaceAction:"blockquote",placeholder:"{BLOCKQUOTE_PLACEHOLDER}"},math:{replaceAction:"math",placeholder:"{MATH_PLACEHOLDER}"},inlineMath:{replaceAction:"inlineMath",placeholder:"{INLINE_MATH_PLACEHOLDER}"},html:{replaceAction:"html",placeholder:"{HTML_PLACEHOLDER}"},yaml:{replaceAction:Ge,placeholder:Ke(`--- +---`)},wikiLink:{replaceAction:Va,placeholder:"{WIKI_LINK_PLACEHOLDER}"},obsidianMultiLineComments:{replaceAction:Fu,placeholder:"{OBSIDIAN_COMMENT_PLACEHOLDER}"},footnoteAtStartOfLine:{replaceAction:Wa,placeholder:"{FOOTNOTE_AT_START_OF_LINE_PLACEHOLDER}"},footnoteAfterATask:{replaceAction:/- \[.] (\[\^\w+\]) ?([,.;!:?])/gm,placeholder:"{FOOTNOTE_AFTER_A_TASK_PLACEHOLDER}"},url:{replaceAction:Zt,placeholder:"{URL_PLACEHOLDER}"},anchorTag:{replaceAction:Ru,placeholder:"{ANCHOR_PLACEHOLDER}"},templaterCommand:{replaceAction:Yu,placeholder:"{TEMPLATER_PLACEHOLDER}"},link:{replaceAction:Dy,placeholder:"{REGULAR_LINK_PLACEHOLDER}"},tag:{replaceAction:Ny,placeholder:"#tag-placeholder"},table:{replaceAction:jy,placeholder:"{TABLE_PLACEHOLDER}"},customIgnore:{replaceAction:Ky,placeholder:"{CUSTOM_IGNORE_PLACEHOLDER}"}};function we(e,t,i){let n=[];for(let r of e){let a;if(typeof r.replaceAction=="string")a=_y(t,r.placeholder,r.replaceAction);else if(r.replaceAction instanceof RegExp)a=Ry(t,r.placeholder,r.replaceAction);else if(typeof r.replaceAction=="function"){let s=r.replaceAction;a=s(t,r.placeholder)}t=a.newText,n.push({replacedValues:a.replacedValues,placeholder:r.placeholder})}return t=i(t),n=n.reverse(),n!=null&&n.length>0&&n.forEach(r=>{r.replacedValues.forEach(a=>{t=t.replace(new RegExp(r.placeholder,"i"),Ke(a))})}),t}function _y(e,t,i){let n=ye(i,e),r=[];for(let a of n){let s=e.substring(a.start.offset,a.end.offset);r.push(s),e=fe(e,a.start.offset,a.end.offset,t)}return r.reverse(),{newText:e,replacedValues:r}}function Ry(e,t,i){let n=e.match(i),r=[];if(i.flags.includes("g")){if(e=e.replaceAll(i,t),n)for(let a of n)r.push(a)}else e=e.replace(i,t),n&&r.push(n[0]);return{newText:e,replacedValues:r}}function Dy(e,t){let i=ye("link",e),n=[];for(let r of i){if(r==null)continue;let a=e.substring(r.start.offset,r.end.offset);a.match(Nn)&&(n.push(a),e=fe(e,r.start.offset,r.end.offset,t))}return n.reverse(),{newText:e,replacedValues:n}}function Ny(e,t){let i=[];return e=e.replace(jn,(n,r,a)=>(i.push(a),r+t)),{newText:e,replacedValues:i}}function jy(e,t){let i=$a(e),n=new Array(i.length),r=0,a=n.length;for(let s of i)n[a-1-r++]=e.substring(s.startIndex,s.endIndex),e=fe(e,s.startIndex,s.endIndex,t);return{newText:e,replacedValues:n}}function Ky(e,t){let i=Eu(e),n=new Array(i.length),r=0,a=n.length;for(let s of i)n[a-1-r++]=e.substring(s.startIndex,s.endIndex),e=fe(e,s.startIndex,s.endIndex,t);return{newText:e,replacedValues:n}}var N=(s=>(s.YAML="YAML",s.HEADING="Heading",s.FOOTNOTE="Footnote",s.CONTENT="Content",s.SPACING="Spacing",s.PASTE="Paste",s))(N||{}),as=class{constructor(t,i,n,r,a,s,o,l=[],d=!1,c=[]){this.nameKey=t;this.descriptionKey=i;this.settingsKey=n;this.alias=r;this.type=a;this.applyAfterIgnore=s;this.examples=o;this.options=l;this.hasSpecialExecutionOrder=d;this.ignoreTypes=c;this.ruleHeading=this.getName().toLowerCase().replaceAll(" ","-"),l.unshift(new nn("enabled",this.descriptionKey,"",!1));for(let u of l)u.ruleAlias=r}getDefaultOptions(){let t={};for(let i of this.options)t[i.configKey]=i.defaultValue;return t}getOptions(t){return t.ruleConfigs[this.settingsKey]}getName(){return T(this.nameKey)}getDescription(){return T(this.descriptionKey)}getURL(){return"https://platers.github.io/obsidian-linter/settings/"+this.type.toLowerCase()+"-rules/#"+this.ruleHeading}enabledOptionName(){return this.options[0].configKey}apply(t,i){return we(this.ignoreTypes,t,n=>this.applyAfterIgnore(n,i))}},ss=class{constructor(t,i,n,r={}){this.description=t,this.options=r,this.before=i,this.after=n}},Ju=Object.values(N);function os(e){let t=en(e);if(t===null)return[[],!1];let i=Gu(t);return i.includes("all")?[ki.map(n=>n.alias),!0]:[i,!1]}var ki=[],Yy={},mt=new Map;function Xu(e){ki.push(e),ki.sort((t,i)=>Ju.indexOf(t.type)-Ju.indexOf(i.type)||t.settingsKey.localeCompare(i.settingsKey)),Yy[e.alias]=e,mt.has(e.type)?mt.get(e.type).push(e):mt.set(e.type,[e])}function ls(e,t){let i;throw e instanceof Hc?(i=e.toString(),i=T("logs.wrapper-yaml-error").replace("{ERROR_MESSAGE}",i.substring(i.indexOf(":")+1))):i=T("logs.wrapper-unknown-error").replace("{ERROR_MESSAGE}",e.message),new Hi(`"${t}" encountered an ${i}`,e)}var yn=da(ep());function Py(e){for(var t=[],i=1;in.example),t.optionBuilders.map(n=>n.option),t.hasSpecialExecutionOrder,t.ignoreTypes);Ue(ii,Qt).set(this.name,i),Ue(ii,jn).set(t.alias,t)}return Ue(ii,Qt).get(this.name)}static applyIfEnabledBase(t,i,n,r){let a=t.getOptions(n);if(a[t.enabledOptionName()]){let s=Object.assign({},a,r);fi(`${E("logs.run-rule-text")} ${t.getName()}`);try{return[t.apply(i,s),!0]}catch(o){Va(o,t.getName())}}else return[i,!1]}static getBuilderByName(t){return Ue(ii,jn).get(t)}static setNoSettingControl(t,i){Ue(ii,$i).has(t)||Ue(ii,$i).set(t,[]),Ue(ii,$i).get(t).push(i)}static hasSettingControl(t,i){return!Ue(ii,$i).has(t)||!Ue(ii,$i).get(t).includes(i)}},li=ii;Qt=new WeakMap,jn=new WeakMap,$i=new WeakMap,Bt(li,Qt,new Map),Bt(li,jn,new Map),Bt(li,$i,new Map);var b=class extends li{constructor(i){super();this.alias=i.nameKey.replace(/rules\.(.*)\.name/,"$1"),this.settingsKey=i.nameKey.replace(/rules\.(.*)\.name/,"$1"),this.nameKey=i.nameKey,this.descriptionKey=i.descriptionKey,this.type=i.type,this.hasSpecialExecutionOrder=i.hasSpecialExecutionOrder??!1,i.type==="Paste"?this.ignoreTypes=[]:i.ruleIgnoreTypes?this.ignoreTypes=[f.customIgnore,...i.ruleIgnoreTypes]:this.ignoreTypes=[f.customIgnore]}static register(i){let n=i.getRule();Ou(n)}safeApply(i,n){return this.apply(i,this.buildRuleOptions(n))}buildRuleOptions(i){i=i??{};let n=new this.OptionsClass,r=Object.assign(n,i);for(let a of this.optionBuilders)a.setRuleOption(r,i);return r}static applyIfEnabled(i,n,r,a){let s=this.getRule();return r.includes(s.alias)?(fi(s.alias+" "+E("logs.disabled-text")),[i,!1]):li.applyIfEnabledBase(s,i,n,a)}static getRuleOptions(i){let n=li.getRule.bind(this)(),r=new this,a=n.getOptions(i);return r.buildRuleOptions(a)}static noSettingControl(){return(i,n)=>{let r=i.constructor.name;li.setNoSettingControl(r,n)}}},Po,y=class{constructor(t){Bt(this,Po,void 0);this.example=new Wa(t.description,t.before,t.after,t.options)}};Po=new WeakMap;var Zt,Hi=class{constructor(t){Bt(this,Zt,void 0);this.OptionsClass=t.OptionsClass;let i=t.nameKey.split(".");i.length==1?this.configKey=i[0]:this.configKey=i[i.length-2],this.nameKey=t.nameKey,this.descriptionKey=t.descriptionKey,this.optionsKey=t.optionsKey}get defaultValue(){return new this.OptionsClass()[this.optionsKey]}get option(){return Ue(this,Zt)||jl(this,Zt,this.buildOption()),Ue(this,Zt)}setRuleOption(t,i){let n=i[this.configKey];n!==void 0&&(t[this.optionsKey]=n)}};Zt=new WeakMap;var U=class extends Hi{buildOption(){return new Vt(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},Ua=class extends Hi{buildOption(){return new Dn(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},ne=class extends Hi{constructor(i){super(i);this.records=i.records.map(n=>new $a("enums."+n.value,n.description))}buildOption(){return new Ha(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue,this.records)}},be=class extends Hi{constructor(i){super(i);this.separator=i.separator??` -`,this.splitter=i.splitter??/\n/}buildOption(){return new Pa(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue.join(this.separator))}setRuleOption(i,n){if(n[this.configKey]!==void 0){let r=n[this.configKey].split(this.splitter).filter(function(a){return a!=""});i[this.optionsKey]=r}}},Ve=class extends Hi{buildOption(){return new Dn(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},Ga=class extends Hi{buildOption(){return new Ka(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}};var Ko=new Map([["1nd","1st"],["2rd","2nd"],["2st","2nd"],["3nd","3rd"],["3st","3rd"],["4rd","4th"],["a-diaerers","a-diaereses"],["aaccess","access"],["aaccessibility","accessibility"],["aaccession","accession"],["aack","ack"],["aactual","actual"],["aactually","actually"],["aadd","add"],["aagain","again"],["aaggregation","aggregation"],["aanother","another"],["aapply","apply"],["aaproximate","approximate"],["aaproximated","approximated"],["aaproximately","approximately"],["aaproximates","approximates"],["aaproximating","approximating"],["aare","are"],["aassign","assign"],["aassignment","assignment"],["aassignments","assignments"],["aassociated","associated"],["aassumed","assumed"],["aautomatic","automatic"],["aautomatically","automatically"],["abailable","available"],["abanden","abandon"],["abandonded","abandoned"],["abandone","abandon"],["abandonned","abandoned"],["abandonning","abandoning"],["abbbreviated","abbreviated"],["abberation","aberration"],["abberations","aberrations"],["abberivates","abbreviates"],["abberration","aberration"],["abborted","aborted"],["abborting","aborting"],["abbrevate","abbreviate"],["abbrevation","abbreviation"],["abbrevations","abbreviations"],["abbreviaton","abbreviation"],["abbreviatons","abbreviations"],["abbriviate","abbreviate"],["abbriviation","abbreviation"],["abbriviations","abbreviations"],["aberation","aberration"],["abigious","ambiguous"],["abiguity","ambiguity"],["abilityes","abilities"],["abilties","abilities"],["abilty","ability"],["abiss","abyss"],["abitrarily","arbitrarily"],["abitrary","arbitrary"],["abitrate","arbitrate"],["abitration","arbitration"],["abizmal","abysmal"],["abnoramlly","abnormally"],["abnormalty","abnormally"],["abnormaly","abnormally"],["abnornally","abnormally"],["abnove","above"],["abnrormal","abnormal"],["aboluste","absolute"],["abolustely","absolutely"],["abolute","absolute"],["abondon","abandon"],["abondoned","abandoned"],["abondoning","abandoning"],["abondons","abandons"],["aboout","about"],["aborigene","aborigine"],["abortificant","abortifacient"],["aboslute","absolute"],["aboslutely","absolutely"],["abosulte","absolute"],["abosultely","absolutely"],["abosulute","absolute"],["abosulutely","absolutely"],["abotu","about"],["abount","about"],["aboutit","about it"],["aboutthe","about the"],["abouve","above"],["abov","above"],["aboved","above"],["abovemtioned","abovementioned"],["aboves","above"],["abovmentioned","abovementioned"],["abreviate","abbreviate"],["abreviated","abbreviated"],["abreviates","abbreviates"],["abreviating","abbreviating"],["abreviation","abbreviation"],["abreviations","abbreviations"],["abritrarily","arbitrarily"],["abritrary","arbitrary"],["abriviate","abbreviate"],["absail","abseil"],["absailing","abseiling"],["absance","absence"],["abscence","absence"],["abscound","abscond"],["abselutely","absolutely"],["abselutly","absolutely"],["absense","absence"],["absodefly","absolute"],["absodeflyly","absolutely"],["absolate","absolute"],["absolately","absolutely"],["absolaute","absolute"],["absolautely","absolutely"],["absoleted","obsoleted"],["absoletely","absolutely"],["absoliute","absolute"],["absoliutely","absolutely"],["absoloute","absolute"],["absoloutely","absolutely"],["absolte","absolute"],["absoltely","absolutely"],["absoltue","absolute"],["absoltuely","absolutely"],["absoluate","absolute"],["absoluately","absolutely"],["absolue","absolute"],["absoluely","absolutely"],["absoluet","absolute"],["absoluetly","absolutely"],["absolule","absolute"],["absolulte","absolute"],["absolultely","absolutely"],["absolune","absolute"],["absolunely","absolutely"],["absolure","absolute"],["absolurely","absolutely"],["absolut","absolute"],["absolutelly","absolutely"],["absoluth","absolute"],["absoluthe","absolute"],["absoluthely","absolutely"],["absoluthly","absolutely"],["absolutley","absolutely"],["absolutly","absolutely"],["absolutlye","absolutely"],["absoluute","absolute"],["absoluutely","absolutely"],["absoluve","absolute"],["absoluvely","absolutely"],["absoolute","absolute"],["absoolutely","absolutely"],["absorbant","absorbent"],["absorbsion","absorption"],["absorbtion","absorption"],["absorve","absorb"],["absould","absolute"],["absouldly","absolutely"],["absoule","absolute"],["absoulely","absolutely"],["absouletely","absolutely"],["absoult","absolute"],["absoulte","absolute"],["absoultely","absolutely"],["absoultly","absolutely"],["absoulute","absolute"],["absoulutely","absolutely"],["absout","absolute"],["absoute","absolute"],["absoutely","absolutely"],["absoutly","absolutely"],["abstact","abstract"],["abstacted","abstracted"],["abstacter","abstracter"],["abstacting","abstracting"],["abstaction","abstraction"],["abstactions","abstractions"],["abstactly","abstractly"],["abstactness","abstractness"],["abstactor","abstractor"],["abstacts","abstracts"],["abstanence","abstinence"],["abstrac","abstract"],["abstraced","abstracted"],["abstracer","abstracter"],["abstracing","abstracting"],["abstracion","abstraction"],["abstracions","abstractions"],["abstracly","abstractly"],["abstracness","abstractness"],["abstracor","abstractor"],["abstracs","abstracts"],["abstrat","abstract"],["abstrated","abstracted"],["abstrater","abstracter"],["abstrating","abstracting"],["abstration","abstraction"],["abstrations","abstractions"],["abstratly","abstractly"],["abstratness","abstractness"],["abstrator","abstractor"],["abstrats","abstracts"],["abstrct","abstract"],["abstrcted","abstracted"],["abstrcter","abstracter"],["abstrcting","abstracting"],["abstrction","abstraction"],["abstrctions","abstractions"],["abstrctly","abstractly"],["abstrctness","abstractness"],["abstrctor","abstractor"],["abstrcts","abstracts"],["absulute","absolute"],["absymal","abysmal"],["abtract","abstract"],["abtracted","abstracted"],["abtracter","abstracter"],["abtracting","abstracting"],["abtraction","abstraction"],["abtractions","abstractions"],["abtractly","abstractly"],["abtractness","abstractness"],["abtractor","abstractor"],["abtracts","abstracts"],["abudance","abundance"],["abudances","abundances"],["abundacies","abundances"],["abundancies","abundances"],["abundand","abundant"],["abundence","abundance"],["abundent","abundant"],["abundunt","abundant"],["abutts","abuts"],["abvailable","available"],["abvious","obvious"],["acadamy","academy"],["acadimy","academy"],["acadmic","academic"],["acale","scale"],["acatemy","academy"],["accademic","academic"],["accademy","academy"],["accapt","accept"],["accapted","accepted"],["accapts","accepts"],["acccept","accept"],["acccepted","accepted"],["acccepting","accepting"],["acccepts","accepts"],["accces","access"],["acccess","access"],["acccessd","accessed"],["acccessed","accessed"],["acccesses","accesses"],["acccessibility","accessibility"],["acccessible","accessible"],["acccessing","accessing"],["acccession","accession"],["acccessor","accessor"],["acccessors","accessors"],["acccord","accord"],["acccordance","accordance"],["acccordances","accordances"],["acccorded","accorded"],["acccording","according"],["acccordingly","accordingly"],["acccords","accords"],["acccount","account"],["acccumulate","accumulate"],["acccuracy","accuracy"],["acccurate","accurate"],["acccurately","accurately"],["acccused","accused"],["accecpt","accept"],["accecpted","accepted"],["accees","access"],["acceess","access"],["accelarate","accelerate"],["accelaration","acceleration"],["accelarete","accelerate"],["accelearion","acceleration"],["accelearte","accelerate"],["accelearted","accelerated"],["acceleartes","accelerates"],["acceleartion","acceleration"],["acceleartor","accelerator"],["acceleated","accelerated"],["acceleratoin","acceleration"],["acceleraton","acceleration"],["acceleratrion","acceleration"],["accelerte","accelerate"],["accelertion","acceleration"],["accellerate","accelerate"],["accellerated","accelerated"],["accellerating","accelerating"],["accelleration","acceleration"],["accellerator","accelerator"],["accending","ascending"],["acceot","accept"],["accepatble","acceptable"],["accepect","accept"],["accepected","accepted"],["accepeted","accepted"],["acceppt","accept"],["acceptence","acceptance"],["acceptible","acceptable"],["acceptted","accepted"],["acces","access"],["accesed","accessed"],["acceses","accesses"],["accesibility","accessibility"],["accesible","accessible"],["accesiblity","accessibility"],["accesiibility","accessibility"],["accesiiblity","accessibility"],["accesing","accessing"],["accesnt","accent"],["accesor","accessor"],["accesories","accessories"],["accesors","accessors"],["accesory","accessory"],["accessability","accessibility"],["accessable","accessible"],["accessbile","accessible"],["accessiable","accessible"],["accessibile","accessible"],["accessibiliity","accessibility"],["accessibilitiy","accessibility"],["accessibiltiy","accessibility"],["accessibilty","accessibility"],["accessiblilty","accessibility"],["accessiblity","accessibility"],["accessiibility","accessibility"],["accessiiblity","accessibility"],["accessile","accessible"],["accessintg","accessing"],["accessisble","accessible"],["accessoire","accessory"],["accessort","accessor"],["accesss","access"],["accesssibility","accessibility"],["accesssible","accessible"],["accesssiblity","accessibility"],["accesssiiblity","accessibility"],["accesssing","accessing"],["accesssor","accessor"],["accesssors","accessors"],["accet","accept"],["accetable","acceptable"],["accets","accepts"],["acchiev","achieve"],["acchievable","achievable"],["acchieve","achieve"],["acchieveable","achievable"],["acchieved","achieved"],["acchievement","achievement"],["acchievements","achievements"],["acchiever","achiever"],["acchieves","achieves"],["accidant","accident"],["acciddently","accidentally"],["accidentaly","accidentally"],["accidential","accidental"],["accidentially","accidentally"],["accidentically","accidentally"],["accidentilly","accidentally"],["accidentily","accidentally"],["accidently","accidentally"],["accidentually","accidentally"],["accidetly","accidentally"],["acciedential","accidental"],["acciednetally","accidentally"],["accient","accident"],["acciental","accidental"],["acclerated","accelerated"],["acclerates","accelerates"],["accleration","acceleration"],["acclerometers","accelerometers"],["acclimitization","acclimatization"],["accociate","associate"],["accociated","associated"],["accociates","associates"],["accociating","associating"],["accociation","association"],["accociations","associations"],["accoding","according"],["accodingly","accordingly"],["accodr","accord"],["accodrance","accordance"],["accodred","accorded"],["accodring","according"],["accodringly","accordingly"],["accodrs","accords"],["accointing","accounting"],["accoird","accord"],["accoirding","according"],["accomadate","accommodate"],["accomadated","accommodated"],["accomadates","accommodates"],["accomadating","accommodating"],["accomadation","accommodation"],["accomadations","accommodations"],["accomdate","accommodate"],["accomidate","accommodate"],["accommadate","accommodate"],["accommadates","accommodates"],["accommadating","accommodating"],["accommdated","accommodated"],["accomodata","accommodate"],["accomodate","accommodate"],["accomodated","accommodated"],["accomodates","accommodates"],["accomodating","accommodating"],["accomodation","accommodation"],["accomodations","accommodations"],["accompagned","accompanied"],["accompagnied","accompanied"],["accompagnies","accompanies"],["accompagniment","accompaniment"],["accompagning","accompanying"],["accompagny","accompany"],["accompagnying","accompanying"],["accompained","accompanied"],["accompanyed","accompanied"],["accompt","account"],["acconding","according"],["accont","account"],["accontant","accountant"],["acconted","accounted"],["acconting","accounting"],["accoording","according"],["accoordingly","accordingly"],["accoount","account"],["accopunt","account"],["accordding","according"],["accordeon","accordion"],["accordian","accordion"],["accordign","according"],["accordiingly","accordingly"],["accordinag","according"],["accordind","according"],["accordinly","accordingly"],["accordint","according"],["accordintly","accordingly"],["accordling","according"],["accordlingly","accordingly"],["accordng","according"],["accordngly","accordingly"],["accoriding","according"],["accoridng","according"],["accoridngly","accordingly"],["accoringly","accordingly"],["accorndingly","accordingly"],["accort","accord"],["accortance","accordance"],["accorted","accorded"],["accortind","according"],["accorting","according"],["accound","account"],["accouned","accounted"],["accoustic","acoustic"],["accoustically","acoustically"],["accoustics","acoustics"],["accout","account"],["accouting","accounting"],["accoutn","account"],["accpet","accept"],["accpets","accepts"],["accquainted","acquainted"],["accquire","acquire"],["accquired","acquired"],["accquires","acquires"],["accquiring","acquiring"],["accracy","accuracy"],["accrate","accurate"],["accrding","according"],["accrdingly","accordingly"],["accrediation","accreditation"],["accredidation","accreditation"],["accress","access"],["accroding","according"],["accrodingly","accordingly"],["accronym","acronym"],["accronyms","acronyms"],["accrording","according"],["accros","across"],["accrose","across"],["accross","across"],["accsess","access"],["accss","access"],["accssible","accessible"],["accssor","accessor"],["acctual","actual"],["accuarcy","accuracy"],["accuarte","accurate"],["accuartely","accurately"],["accumalate","accumulate"],["accumalates","accumulates"],["accumalator","accumulator"],["accumalte","accumulate"],["accumalted","accumulated"],["accumilated","accumulated"],["accumlate","accumulate"],["accumlated","accumulated"],["accumlates","accumulates"],["accumlating","accumulating"],["accumlator","accumulator"],["accummulating","accumulating"],["accummulators","accumulators"],["accumualte","accumulate"],["accumualtion","accumulation"],["accupied","occupied"],["accupts","accepts"],["accurable","accurate"],["accuraccies","accuracies"],["accuraccy","accuracy"],["accurancy","accuracy"],["accurarcy","accuracy"],["accuratelly","accurately"],["accuratley","accurately"],["accuratly","accurately"],["accurences","occurrences"],["accurracy","accuracy"],["accurring","occurring"],["accussed","accused"],["acditionally","additionally"],["acecess","access"],["acedemic","academic"],["acelerated","accelerated"],["acend","ascend"],["acendance","ascendance"],["acendancey","ascendancy"],["acended","ascended"],["acendence","ascendance"],["acendencey","ascendancy"],["acendency","ascendancy"],["acender","ascender"],["acending","ascending"],["acent","ascent"],["aceptable","acceptable"],["acerage","acreage"],["acess","access"],["acessable","accessible"],["acessed","accessed"],["acesses","accesses"],["acessible","accessible"],["acessing","accessing"],["acessor","accessor"],["acheive","achieve"],["acheived","achieved"],["acheivement","achievement"],["acheivements","achievements"],["acheives","achieves"],["acheiving","achieving"],["acheivment","achievement"],["acheivments","achievements"],["achievment","achievement"],["achievments","achievements"],["achitecture","architecture"],["achitectures","architectures"],["achivable","achievable"],["achivement","achievement"],["achivements","achievements"],["achor","anchor"],["achored","anchored"],["achoring","anchoring"],["achors","anchors"],["ACI","ACPI"],["acident","accident"],["acidental","accidental"],["acidentally","accidentally"],["acidents","accidents"],["acient","ancient"],["acients","ancients"],["ACII","ASCII"],["acition","action"],["acitions","actions"],["acitivate","activate"],["acitivation","activation"],["acitivity","activity"],["acitvate","activate"],["acitve","active"],["acivate","activate"],["acive","active"],["acknodledgment","acknowledgment"],["acknodledgments","acknowledgments"],["acknoledge","acknowledge"],["acknoledged","acknowledged"],["acknoledges","acknowledges"],["acknoledging","acknowledging"],["acknoledgment","acknowledgment"],["acknoledgments","acknowledgments"],["acknowldeged","acknowledged"],["acknowldegement","acknowledgement"],["acknowldegements","acknowledgements"],["acknowledgeing","acknowledging"],["acknowleding","acknowledging"],["acknowlege","acknowledge"],["acknowleged","acknowledged"],["acknowlegement","acknowledgement"],["acknowlegements","acknowledgements"],["acknowleges","acknowledges"],["acknowleging","acknowledging"],["acknowlegment","acknowledgment"],["ackowledge","acknowledge"],["ackowledged","acknowledged"],["ackowledgement","acknowledgement"],["ackowledgements","acknowledgements"],["ackowledges","acknowledges"],["ackowledging","acknowledging"],["acnowledge","acknowledge"],["acocunt","account"],["acommodate","accommodate"],["acommodated","accommodated"],["acommodates","accommodates"],["acommodating","accommodating"],["acommodation","accommodation"],["acommpany","accompany"],["acommpanying","accompanying"],["acomodate","accommodate"],["acomodated","accommodated"],["acompanies","accompanies"],["acomplish","accomplish"],["acomplished","accomplished"],["acomplishment","accomplishment"],["acomplishments","accomplishments"],["acontiguous","a contiguous"],["acoording","according"],["acoordingly","accordingly"],["acording","according"],["acordingly","accordingly"],["acordinng","according"],["acorss","across"],["acorting","according"],["acount","account"],["acounts","accounts"],["acquaintence","acquaintance"],["acquaintences","acquaintances"],["acquiantence","acquaintance"],["acquiantences","acquaintances"],["acquiesence","acquiescence"],["acquisiton","acquisition"],["acquisitons","acquisitions"],["acquited","acquitted"],["acquition","acquisition"],["acqure","acquire"],["acqured","acquired"],["acqures","acquires"],["acquring","acquiring"],["acqusition","acquisition"],["acqusitions","acquisitions"],["acrage","acreage"],["acroos","across"],["acrosss","across"],["acrue","accrue"],["acrued","accrued"],["acssume","assume"],["acssumed","assumed"],["actal","actual"],["actally","actually"],["actaly","actually"],["actaul","actual"],["actaully","actually"],["actial","actual"],["actially","actually"],["actialy","actually"],["actiavte","activate"],["actiavted","activated"],["actiavtes","activates"],["actiavting","activating"],["actiavtion","activation"],["actiavtions","activations"],["actiavtor","activator"],["actibity","activity"],["acticate","activate"],["actice","active"],["actine","active"],["actiual","actual"],["activ","active"],["activaed","activated"],["activationg","activating"],["actived","activated"],["activeta","activate"],["activete","activate"],["activeted","activated"],["activetes","activates"],["activiate","activate"],["activies","activities"],["activites","activities"],["activitis","activities"],["activitites","activities"],["activitiy","activity"],["activley","actively"],["activly","actively"],["activste","activate"],["activsted","activated"],["activstes","activates"],["activtes","activates"],["activties","activities"],["activtion","activation"],["activty","activity"],["activw","active"],["activy","activity"],["actove","active"],["actuaal","actual"],["actuaally","actually"],["actuak","actual"],["actuakly","actually"],["actuallin","actually"],["actualy","actually"],["actualyl","actually"],["actuell","actual"],["actuion","action"],["actuionable","actionable"],["actul","actual"],["actullay","actually"],["actully","actually"],["actural","actual"],["acturally","actually"],["actusally","actually"],["actve","active"],["actzal","actual"],["acual","actual"],["acually","actually"],["acuired","acquired"],["acuires","acquires"],["acumulate","accumulate"],["acumulated","accumulated"],["acumulates","accumulates"],["acumulating","accumulating"],["acumulation","accumulation"],["acumulative","accumulative"],["acumulator","accumulator"],["acuqire","acquire"],["acuracy","accuracy"],["acurate","accurate"],["acused","accused"],["acustom","accustom"],["acustommed","accustomed"],["acutal","actual"],["acutally","actually"],["acutual","actual"],["adapated","adapted"],["adapater","adapter"],["adapaters","adapters"],["adapative","adaptive"],["adapdive","adaptive"],["adapive","adaptive"],["adaptaion","adaptation"],["adaptare","adapter"],["adapte","adapter"],["adaptee","adapted"],["adaptes","adapters"],["adaptibe","adaptive"],["adaquate","adequate"],["adaquately","adequately"],["adatper","adapter"],["adatpers","adapters"],["adavance","advance"],["adavanced","advanced"],["adbandon","abandon"],["addapt","adapt"],["addaptation","adaptation"],["addaptations","adaptations"],["addapted","adapted"],["addapting","adapting"],["addapts","adapts"],["addd","add"],["addded","added"],["addding","adding"],["adddress","address"],["adddresses","addresses"],["addds","adds"],["addedd","added"],["addeed","added"],["addersses","addresses"],["addert","assert"],["adderted","asserted"],["addess","address"],["addessed","addressed"],["addesses","addresses"],["addessing","addressing"],["addied","added"],["addig","adding"],["addiional","additional"],["addiiton","addition"],["addiitonall","additional"],["addional","additional"],["addionally","additionally"],["addiotion","addition"],["addiotional","additional"],["addiotionally","additionally"],["addiotions","additions"],["additianal","additional"],["additianally","additionally"],["additinal","additional"],["additinally","additionally"],["additioanal","additional"],["additioanally","additionally"],["additioanlly","additionally"],["additiona","additional"],["additionallly","additionally"],["additionals","additional"],["additionaly","additionally"],["additionalyy","additionally"],["additionnal","additional"],["additionnally","additionally"],["additionnaly","additionally"],["additoin","addition"],["additoinal","additional"],["additoinally","additionally"],["additoinaly","additionally"],["additon","addition"],["additonal","additional"],["additonally","additionally"],["additonaly","additionally"],["addjust","adjust"],["addjusted","adjusted"],["addjusting","adjusting"],["addjusts","adjusts"],["addmission","admission"],["addmit","admit"],["addopt","adopt"],["addopted","adopted"],["addpress","address"],["addrass","address"],["addrees","address"],["addreess","address"],["addrerss","address"],["addrerssed","addressed"],["addrersser","addresser"],["addrersses","addresses"],["addrerssing","addressing"],["addrersss","address"],["addrersssed","addressed"],["addrerssser","addresser"],["addrerssses","addresses"],["addrersssing","addressing"],["addres","address"],["addresable","addressable"],["addresed","addressed"],["addreses","addresses"],["addresess","addresses"],["addresing","addressing"],["addressess","addresses"],["addressings","addressing"],["addresss","address"],["addresssed","addressed"],["addressses","addresses"],["addresssing","addressing"],["addrress","address"],["addrss","address"],["addrssed","addressed"],["addrsses","addresses"],["addrssing","addressing"],["addted","added"],["addtion","addition"],["addtional","additional"],["addtionally","additionally"],["addtitional","additional"],["adecuate","adequate"],["aded","added"],["adequit","adequate"],["adevnture","adventure"],["adevntured","adventured"],["adevnturer","adventurer"],["adevnturers","adventurers"],["adevntures","adventures"],["adevnturing","adventuring"],["adhearing","adhering"],["adherance","adherence"],["adiacent","adjacent"],["adiditon","addition"],["adin","admin"],["ading","adding"],["adition","addition"],["aditional","additional"],["aditionally","additionally"],["aditionaly","additionally"],["aditionnal","additional"],["adivsories","advisories"],["adivsoriyes","advisories"],["adivsory","advisory"],["adjacentsy","adjacency"],["adjactend","adjacent"],["adjancent","adjacent"],["adjascent","adjacent"],["adjasence","adjacence"],["adjasencies","adjacencies"],["adjasensy","adjacency"],["adjasent","adjacent"],["adjast","adjust"],["adjcence","adjacence"],["adjcencies","adjacencies"],["adjcent","adjacent"],["adjcentcy","adjacency"],["adjsence","adjacence"],["adjsencies","adjacencies"],["adjsuted","adjusted"],["adjuscent","adjacent"],["adjusment","adjustment"],["adjustement","adjustment"],["adjustements","adjustments"],["adjustificat","justification"],["adjustification","justification"],["adjustmant","adjustment"],["adjustmants","adjustments"],["adjustmenet","adjustment"],["admendment","amendment"],["admi","admin"],["admininistrative","administrative"],["admininistrator","administrator"],["admininistrators","administrators"],["admininstrator","administrator"],["administation","administration"],["administator","administrator"],["administor","administrator"],["administraively","administratively"],["adminitrator","administrator"],["adminssion","admission"],["adminstered","administered"],["adminstrate","administrate"],["adminstration","administration"],["adminstrative","administrative"],["adminstrator","administrator"],["adminstrators","administrators"],["admisible","admissible"],["admissability","admissibility"],["admissable","admissible"],["admited","admitted"],["admitedly","admittedly"],["admn","admin"],["admnistrator","administrator"],["admnistrators","administrators"],["adn","and"],["adobted","adopted"],["adolecent","adolescent"],["adpapted","adapted"],["adpat","adapt"],["adpated","adapted"],["adpater","adapter"],["adpaters","adapters"],["adpats","adapts"],["adpter","adapter"],["adquire","acquire"],["adquired","acquired"],["adquires","acquires"],["adquiring","acquiring"],["adrea","area"],["adrerss","address"],["adrerssed","addressed"],["adrersser","addresser"],["adrersses","addresses"],["adrerssing","addressing"],["adres","address"],["adresable","addressable"],["adresing","addressing"],["adress","address"],["adressable","addressable"],["adresse","address"],["adressed","addressed"],["adresses","addresses"],["adressing","addressing"],["adresss","address"],["adressses","addresses"],["adrress","address"],["adrresses","addresses"],["adtodetect","autodetect"],["adusted","adjusted"],["adustment","adjustment"],["advanatage","advantage"],["advanatages","advantages"],["advanatge","advantage"],["advandced","advanced"],["advane","advance"],["advaned","advanced"],["advantagous","advantageous"],["advanved","advanced"],["adventages","advantages"],["adventrous","adventurous"],["adverised","advertised"],["advertice","advertise"],["adverticed","advertised"],["advertisment","advertisement"],["advertisments","advertisements"],["advertistment","advertisement"],["advertistments","advertisements"],["advertize","advertise"],["advertized","advertised"],["advertizes","advertises"],["advesary","adversary"],["advetise","advertise"],["adviced","advised"],["adviseable","advisable"],["advisoriyes","advisories"],["advizable","advisable"],["adwances","advances"],["aequidistant","equidistant"],["aequivalent","equivalent"],["aeriel","aerial"],["aeriels","aerials"],["aesily","easily"],["aesy","easy"],["aexs","axes"],["afair","affair"],["afaraid","afraid"],["afe","safe"],["afecting","affecting"],["afer","after"],["aferwards","afterwards"],["afetr","after"],["affecfted","affected"],["afficianados","aficionados"],["afficionado","aficionado"],["afficionados","aficionados"],["affilate","affiliate"],["affilates","affiliates"],["affilation","affiliation"],["affilations","affiliations"],["affilliate","affiliate"],["affinitied","affinities"],["affinitiy","affinity"],["affinitze","affinitize"],["affinties","affinities"],["affintiy","affinity"],["affintize","affinitize"],["affinty","affinity"],["affitnity","affinity"],["afforementioned","aforementioned"],["affortable","affordable"],["afforts","affords"],["affraid","afraid"],["afinity","affinity"],["afor","for"],["aforememtioned","aforementioned"],["aforementiond","aforementioned"],["aforementionned","aforementioned"],["aformentioned","aforementioned"],["afterall","after all"],["afterw","after"],["aftrer","after"],["aftzer","after"],["againnst","against"],["againsg","against"],["againt","against"],["againts","against"],["agaisnt","against"],["agaist","against"],["agancies","agencies"],["agancy","agency"],["aganist","against"],["agant","agent"],["aggaravates","aggravates"],["aggegate","aggregate"],["aggessive","aggressive"],["aggessively","aggressively"],["agggregate","aggregate"],["aggragate","aggregate"],["aggragator","aggregator"],["aggrated","aggregated"],["aggreagate","aggregate"],["aggreataon","aggregation"],["aggreate","aggregate"],["aggreated","aggregated"],["aggreation","aggregation"],["aggreations","aggregations"],["aggreed","agreed"],["aggreement","agreement"],["aggregatet","aggregated"],["aggregetor","aggregator"],["aggreggate","aggregate"],["aggregious","egregious"],["aggregrate","aggregate"],["aggregrated","aggregated"],["aggresive","aggressive"],["aggresively","aggressively"],["aggrevate","aggravate"],["aggrgate","aggregate"],["agian","again"],["agianst","against"],["agin","again"],["aginst","against"],["aglorithm","algorithm"],["aglorithms","algorithms"],["agorithm","algorithm"],["agrain","again"],["agravate","aggravate"],["agre","agree"],["agred","agreed"],["agreeement","agreement"],["agreemnet","agreement"],["agreemnets","agreements"],["agreemnt","agreement"],["agregate","aggregate"],["agregated","aggregated"],["agregates","aggregates"],["agregation","aggregation"],["agregator","aggregator"],["agreing","agreeing"],["agrement","agreement"],["agression","aggression"],["agressive","aggressive"],["agressively","aggressively"],["agressiveness","aggressiveness"],["agressivity","aggressivity"],["agressor","aggressor"],["agresssive","aggressive"],["agrgument","argument"],["agrguments","arguments"],["agricultue","agriculture"],["agriculure","agriculture"],["agricuture","agriculture"],["agrieved","aggrieved"],["agrresive","aggressive"],["agrument","argument"],["agruments","arguments"],["agsinst","against"],["agument","argument"],["agumented","augmented"],["aguments","arguments"],["aheared","adhered"],["ahev","have"],["ahlpa","alpha"],["ahlpas","alphas"],["ahppen","happen"],["ahve","have"],["aicraft","aircraft"],["aiffer","differ"],["ailgn","align"],["aiport","airport"],["airator","aerator"],["airbourne","airborne"],["aircaft","aircraft"],["aircrafts'","aircraft's"],["aircrafts","aircraft"],["airfow","airflow"],["airlfow","airflow"],["airloom","heirloom"],["airporta","airports"],["airrcraft","aircraft"],["aisian","Asian"],["aixs","axis"],["aizmuth","azimuth"],["ajacence","adjacence"],["ajacencies","adjacencies"],["ajacency","adjacency"],["ajacent","adjacent"],["ajacentcy","adjacency"],["ajasence","adjacence"],["ajasencies","adjacencies"],["ajative","adjective"],["ajcencies","adjacencies"],["ajsencies","adjacencies"],["ajurnment","adjournment"],["ajust","adjust"],["ajusted","adjusted"],["ajustement","adjustment"],["ajusting","adjusting"],["ajustment","adjustment"],["ajustments","adjustments"],["ake","ache"],["akkumulate","accumulate"],["akkumulated","accumulated"],["akkumulates","accumulates"],["akkumulating","accumulating"],["akkumulation","accumulation"],["akkumulative","accumulative"],["akkumulator","accumulator"],["aknowledge","acknowledge"],["aks","ask"],["aksed","asked"],["aktivate","activate"],["aktivated","activated"],["aktivates","activates"],["aktivating","activating"],["aktivation","activation"],["akumulate","accumulate"],["akumulated","accumulated"],["akumulates","accumulates"],["akumulating","accumulating"],["akumulation","accumulation"],["akumulative","accumulative"],["akumulator","accumulator"],["alaready","already"],["albiet","albeit"],["albumns","albums"],["alcemy","alchemy"],["alchohol","alcohol"],["alchoholic","alcoholic"],["alchol","alcohol"],["alcholic","alcoholic"],["alcohal","alcohol"],["alcoholical","alcoholic"],["aleady","already"],["aleays","always"],["aledge","allege"],["aledged","alleged"],["aledges","alleges"],["alegance","allegiance"],["alege","allege"],["aleged","alleged"],["alegience","allegiance"],["alegorical","allegorical"],["alernate","alternate"],["alernated","alternated"],["alernately","alternately"],["alernates","alternates"],["alers","alerts"],["aleviate","alleviate"],["aleviates","alleviates"],["aleviating","alleviating"],["alevt","alert"],["algebraical","algebraic"],["algebric","algebraic"],["algebrra","algebra"],["algee","algae"],["alghorithm","algorithm"],["alghoritm","algorithm"],["alghoritmic","algorithmic"],["alghoritmically","algorithmically"],["alghoritms","algorithms"],["algined","aligned"],["alginment","alignment"],["alginments","alignments"],["algohm","algorithm"],["algohmic","algorithmic"],["algohmically","algorithmically"],["algohms","algorithms"],["algoirthm","algorithm"],["algoirthmic","algorithmic"],["algoirthmically","algorithmically"],["algoirthms","algorithms"],["algoithm","algorithm"],["algoithmic","algorithmic"],["algoithmically","algorithmically"],["algoithms","algorithms"],["algolithm","algorithm"],["algolithmic","algorithmic"],["algolithmically","algorithmically"],["algolithms","algorithms"],["algoorithm","algorithm"],["algoorithmic","algorithmic"],["algoorithmically","algorithmically"],["algoorithms","algorithms"],["algoprithm","algorithm"],["algoprithmic","algorithmic"],["algoprithmically","algorithmically"],["algoprithms","algorithms"],["algorgithm","algorithm"],["algorgithmic","algorithmic"],["algorgithmically","algorithmically"],["algorgithms","algorithms"],["algorhithm","algorithm"],["algorhithmic","algorithmic"],["algorhithmically","algorithmically"],["algorhithms","algorithms"],["algorhitm","algorithm"],["algorhitmic","algorithmic"],["algorhitmically","algorithmically"],["algorhitms","algorithms"],["algorhtm","algorithm"],["algorhtmic","algorithmic"],["algorhtmically","algorithmically"],["algorhtms","algorithms"],["algorhythm","algorithm"],["algorhythmic","algorithmic"],["algorhythmically","algorithmically"],["algorhythms","algorithms"],["algorhytm","algorithm"],["algorhytmic","algorithmic"],["algorhytmically","algorithmically"],["algorhytms","algorithms"],["algorightm","algorithm"],["algorightmic","algorithmic"],["algorightmically","algorithmically"],["algorightms","algorithms"],["algorihm","algorithm"],["algorihmic","algorithmic"],["algorihmically","algorithmically"],["algorihms","algorithms"],["algorihtm","algorithm"],["algorihtmic","algorithmic"],["algorihtmically","algorithmically"],["algorihtms","algorithms"],["algoristhms","algorithms"],["algorith","algorithm"],["algorithem","algorithm"],["algorithemic","algorithmic"],["algorithemically","algorithmically"],["algorithems","algorithms"],["algorithic","algorithmic"],["algorithically","algorithmically"],["algorithim","algorithm"],["algorithimes","algorithms"],["algorithimic","algorithmic"],["algorithimically","algorithmically"],["algorithims","algorithms"],["algorithmes","algorithms"],["algorithmi","algorithm"],["algorithmical","algorithmically"],["algorithmm","algorithm"],["algorithmmic","algorithmic"],["algorithmmically","algorithmically"],["algorithmms","algorithms"],["algorithmn","algorithm"],["algorithmnic","algorithmic"],["algorithmnically","algorithmically"],["algorithmns","algorithms"],["algoriths","algorithms"],["algorithsmic","algorithmic"],["algorithsmically","algorithmically"],["algorithsms","algorithms"],["algoritm","algorithm"],["algoritmic","algorithmic"],["algoritmically","algorithmically"],["algoritms","algorithms"],["algoroithm","algorithm"],["algoroithmic","algorithmic"],["algoroithmically","algorithmically"],["algoroithms","algorithms"],["algororithm","algorithm"],["algororithmic","algorithmic"],["algororithmically","algorithmically"],["algororithms","algorithms"],["algorothm","algorithm"],["algorothmic","algorithmic"],["algorothmically","algorithmically"],["algorothms","algorithms"],["algorrithm","algorithm"],["algorrithmic","algorithmic"],["algorrithmically","algorithmically"],["algorrithms","algorithms"],["algorritm","algorithm"],["algorritmic","algorithmic"],["algorritmically","algorithmically"],["algorritms","algorithms"],["algorthim","algorithm"],["algorthimic","algorithmic"],["algorthimically","algorithmically"],["algorthims","algorithms"],["algorthin","algorithm"],["algorthinic","algorithmic"],["algorthinically","algorithmically"],["algorthins","algorithms"],["algorthm","algorithm"],["algorthmic","algorithmic"],["algorthmically","algorithmically"],["algorthms","algorithms"],["algorthn","algorithm"],["algorthnic","algorithmic"],["algorthnically","algorithmically"],["algorthns","algorithms"],["algorthym","algorithm"],["algorthymic","algorithmic"],["algorthymically","algorithmically"],["algorthyms","algorithms"],["algorthyn","algorithm"],["algorthynic","algorithmic"],["algorthynically","algorithmically"],["algorthyns","algorithms"],["algortihm","algorithm"],["algortihmic","algorithmic"],["algortihmically","algorithmically"],["algortihms","algorithms"],["algortim","algorithm"],["algortimic","algorithmic"],["algortimically","algorithmically"],["algortims","algorithms"],["algortism","algorithm"],["algortismic","algorithmic"],["algortismically","algorithmically"],["algortisms","algorithms"],["algortithm","algorithm"],["algortithmic","algorithmic"],["algortithmically","algorithmically"],["algortithms","algorithms"],["algoruthm","algorithm"],["algoruthmic","algorithmic"],["algoruthmically","algorithmically"],["algoruthms","algorithms"],["algorwwithm","algorithm"],["algorwwithmic","algorithmic"],["algorwwithmically","algorithmically"],["algorwwithms","algorithms"],["algorythem","algorithm"],["algorythemic","algorithmic"],["algorythemically","algorithmically"],["algorythems","algorithms"],["algorythm","algorithm"],["algorythmic","algorithmic"],["algorythmically","algorithmically"],["algorythms","algorithms"],["algothitm","algorithm"],["algothitmic","algorithmic"],["algothitmically","algorithmically"],["algothitms","algorithms"],["algotighm","algorithm"],["algotighmic","algorithmic"],["algotighmically","algorithmically"],["algotighms","algorithms"],["algotihm","algorithm"],["algotihmic","algorithmic"],["algotihmically","algorithmically"],["algotihms","algorithms"],["algotirhm","algorithm"],["algotirhmic","algorithmic"],["algotirhmically","algorithmically"],["algotirhms","algorithms"],["algotithm","algorithm"],["algotithmic","algorithmic"],["algotithmically","algorithmically"],["algotithms","algorithms"],["algotrithm","algorithm"],["algotrithmic","algorithmic"],["algotrithmically","algorithmically"],["algotrithms","algorithms"],["alha","alpha"],["alhabet","alphabet"],["alhabetical","alphabetical"],["alhabetically","alphabetically"],["alhabeticaly","alphabetically"],["alhabets","alphabets"],["alhapet","alphabet"],["alhapetical","alphabetical"],["alhapetically","alphabetically"],["alhapeticaly","alphabetically"],["alhapets","alphabets"],["alhough","although"],["alhpa","alpha"],["alhpabet","alphabet"],["alhpabetical","alphabetical"],["alhpabetically","alphabetically"],["alhpabeticaly","alphabetically"],["alhpabets","alphabets"],["aliagn","align"],["aliasas","aliases"],["aliasses","aliases"],["alientating","alienating"],["aliged","aligned"],["alighned","aligned"],["alighnment","alignment"],["aligin","align"],["aligined","aligned"],["aligining","aligning"],["aliginment","alignment"],["aligins","aligns"],["aligment","alignment"],["aligments","alignments"],["alignation","alignment"],["alignd","aligned"],["aligne","align"],["alignement","alignment"],["alignemnt","alignment"],["alignemnts","alignments"],["alignemt","alignment"],["alignes","aligns"],["alignmant","alignment"],["alignmen","alignment"],["alignmenet","alignment"],["alignmenets","alignments"],["alignmenton","alignment on"],["alignmet","alignment"],["alignmets","alignments"],["alignmment","alignment"],["alignmments","alignments"],["alignmnet","alignment"],["alignmnt","alignment"],["alignrigh","alignright"],["alined","aligned"],["alinged","aligned"],["alinging","aligning"],["alingment","alignment"],["alinment","alignment"],["alinments","alignments"],["alising","aliasing"],["allcate","allocate"],["allcateing","allocating"],["allcater","allocator"],["allcaters","allocators"],["allcating","allocating"],["allcation","allocation"],["allcator","allocator"],["allcoate","allocate"],["allcoated","allocated"],["allcoateing","allocating"],["allcoateng","allocating"],["allcoater","allocator"],["allcoaters","allocators"],["allcoating","allocating"],["allcoation","allocation"],["allcoator","allocator"],["allcoators","allocators"],["alledge","allege"],["alledged","alleged"],["alledgedly","allegedly"],["alledges","alleges"],["allegedely","allegedly"],["allegedy","allegedly"],["allegely","allegedly"],["allegence","allegiance"],["allegience","allegiance"],["allif","all if"],["allign","align"],["alligned","aligned"],["allignement","alignment"],["allignemnt","alignment"],["alligning","aligning"],["allignment","alignment"],["allignmenterror","alignmenterror"],["allignments","alignments"],["alligns","aligns"],["alliviate","alleviate"],["allk","all"],["alllocate","allocate"],["alllocation","allocation"],["alllow","allow"],["alllowed","allowed"],["alllows","allows"],["allmost","almost"],["alloacate","allocate"],["allocae","allocate"],["allocaed","allocated"],["allocaes","allocates"],["allocagtor","allocator"],["allocaiing","allocating"],["allocaing","allocating"],["allocaion","allocation"],["allocaions","allocations"],["allocaite","allocate"],["allocaites","allocates"],["allocaiting","allocating"],["allocaition","allocation"],["allocaitions","allocations"],["allocaiton","allocation"],["allocaitons","allocations"],["allocal","allocate"],["allocarion","allocation"],["allocat","allocate"],["allocatbale","allocatable"],["allocatedi","allocated"],["allocatedp","allocated"],["allocateing","allocating"],["allocateng","allocating"],["allocaton","allocation"],["allocatoor","allocator"],["allocatote","allocate"],["allocatrd","allocated"],["allocattion","allocation"],["alloco","alloc"],["allocos","allocs"],["allocte","allocate"],["allocted","allocated"],["allocting","allocating"],["alloction","allocation"],["alloctions","allocations"],["alloctor","allocator"],["alloews","allows"],["allong","along"],["alloocates","allocates"],["allopone","allophone"],["allopones","allophones"],["allos","allows"],["alloted","allotted"],["allowence","allowance"],["allowences","allowances"],["allpication","application"],["allpications","applications"],["allso","also"],["allthough","although"],["alltough","although"],["allways","always"],["allwo","allow"],["allwos","allows"],["allws","allows"],["allwys","always"],["almoast","almost"],["almostly","almost"],["almsot","almost"],["alo","also"],["alocatable","allocatable"],["alocate","allocate"],["alocated","allocated"],["alocates","allocates"],["alocating","allocating"],["alocations","allocations"],["alochol","alcohol"],["alog","along"],["alogirhtm","algorithm"],["alogirhtmic","algorithmic"],["alogirhtmically","algorithmically"],["alogirhtms","algorithms"],["alogirthm","algorithm"],["alogirthmic","algorithmic"],["alogirthmically","algorithmically"],["alogirthms","algorithms"],["alogned","aligned"],["alogorithms","algorithms"],["alogrithm","algorithm"],["alogrithmic","algorithmic"],["alogrithmically","algorithmically"],["alogrithms","algorithms"],["alomst","almost"],["aloows","allows"],["alorithm","algorithm"],["alos","also"],["alotted","allotted"],["alow","allow"],["alowed","allowed"],["alowing","allowing"],["alows","allows"],["alpabet","alphabet"],["alpabetic","alphabetic"],["alpabetical","alphabetical"],["alpabets","alphabets"],["alpah","alpha"],["alpahabetical","alphabetical"],["alpahbetically","alphabetically"],["alph","alpha"],["alpha-numeric","alphanumeric"],["alphabeticaly","alphabetically"],["alphabeticly","alphabetical"],["alphapeicall","alphabetical"],["alphapeticaly","alphabetically"],["alrady","already"],["alraedy","already"],["alread","already"],["alreadly","already"],["alreadt","already"],["alreasy","already"],["alreay","already"],["alreayd","already"],["alreday","already"],["alredy","already"],["alrelady","already"],["alrms","alarms"],["alrogithm","algorithm"],["alrteady","already"],["als","also"],["alsmost","almost"],["alsot","also"],["alsready","already"],["altenative","alternative"],["alterated","altered"],["alterately","alternately"],["alterative","alternative"],["alteratives","alternatives"],["alterior","ulterior"],["alternaive","alternative"],["alternaives","alternatives"],["alternarive","alternative"],["alternarives","alternatives"],["alternatievly","alternatively"],["alternativey","alternatively"],["alternativley","alternatively"],["alternativly","alternatively"],["alternatve","alternative"],["alternavtely","alternatively"],["alternavtive","alternative"],["alternavtives","alternatives"],["alternetive","alternative"],["alternetives","alternatives"],["alternitive","alternative"],["alternitively","alternatively"],["alternitiveness","alternativeness"],["alternitives","alternatives"],["alternitivly","alternatively"],["altetnative","alternative"],["altho","although"],["althogh","although"],["althorithm","algorithm"],["althorithmic","algorithmic"],["althorithmically","algorithmically"],["althorithms","algorithms"],["althoug","although"],["althought","although"],["althougth","although"],["althouth","although"],["altitide","altitude"],["altitute","altitude"],["altogehter","altogether"],["altough","although"],["altought","although"],["altready","already"],["alue","value"],["alvorithm","algorithm"],["alvorithmic","algorithmic"],["alvorithmically","algorithmically"],["alvorithms","algorithms"],["alwais","always"],["alwas","always"],["alwast","always"],["alwasy","always"],["alwasys","always"],["alwauys","always"],["alway","always"],["alwyas","always"],["alwys","always"],["alyways","always"],["amacing","amazing"],["amacingly","amazingly"],["amalgomated","amalgamated"],["amatuer","amateur"],["amazaing","amazing"],["ambedded","embedded"],["ambibuity","ambiguity"],["ambien","ambient"],["ambigious","ambiguous"],["ambigous","ambiguous"],["ambiguious","ambiguous"],["ambiguitiy","ambiguity"],["ambiguos","ambiguous"],["ambitous","ambitious"],["ambuguity","ambiguity"],["ambulence","ambulance"],["ambulences","ambulances"],["amdgput","amdgpu"],["amendement","amendment"],["amendmant","amendment"],["Amercia","America"],["amerliorate","ameliorate"],["amgle","angle"],["amgles","angles"],["amiguous","ambiguous"],["amke","make"],["amking","making"],["ammend","amend"],["ammended","amended"],["ammending","amending"],["ammendment","amendment"],["ammendments","amendments"],["ammends","amends"],["ammong","among"],["ammongst","amongst"],["ammortizes","amortizes"],["ammoung","among"],["ammoungst","amongst"],["ammount","amount"],["ammused","amused"],["amny","many"],["amongs","among"],["amonst","amongst"],["amonut","amount"],["amound","amount"],["amounds","amounts"],["amoung","among"],["amoungst","amongst"],["amout","amount"],["amoutn","amount"],["amoutns","amounts"],["amouts","amounts"],["amperstands","ampersands"],["amphasis","emphasis"],["amplifer","amplifier"],["amplifyer","amplifier"],["amplitud","amplitude"],["ampty","empty"],["amuch","much"],["amung","among"],["amunition","ammunition"],["amunt","amount"],["analagous","analogous"],["analagus","analogous"],["analaog","analog"],["analgous","analogous"],["analig","analog"],["analise","analyse"],["analised","analysed"],["analiser","analyser"],["analising","analysing"],["analisis","analysis"],["analitic","analytic"],["analitical","analytical"],["analitically","analytically"],["analiticaly","analytically"],["analize","analyze"],["analized","analyzed"],["analizer","analyzer"],["analizes","analyzes"],["analizing","analyzing"],["analogeous","analogous"],["analogicaly","analogically"],["analoguous","analogous"],["analoguously","analogously"],["analogus","analogous"],["analouge","analogue"],["analouges","analogues"],["analsye","analyse"],["analsyed","analysed"],["analsyer","analyser"],["analsyers","analysers"],["analsyes","analyses"],["analsying","analysing"],["analsyis","analysis"],["analsyt","analyst"],["analsyts","analysts"],["analyis","analysis"],["analysator","analyser"],["analysus","analysis"],["analysy","analysis"],["analyticaly","analytically"],["analyticly","analytically"],["analyzator","analyzer"],["analzye","analyze"],["analzyed","analyzed"],["analzyer","analyzer"],["analzyers","analyzers"],["analzyes","analyzes"],["analzying","analyzing"],["ananlog","analog"],["anarchim","anarchism"],["anarchistm","anarchism"],["anarquism","anarchism"],["anarquist","anarchist"],["anaylse","analyse"],["anaylsed","analysed"],["anaylser","analyser"],["anaylses","analyses"],["anaylsis","analysis"],["anaylsises","analysises"],["anayltic","analytic"],["anayltical","analytical"],["anayltically","analytically"],["anayltics","analytics"],["anaylze","analyze"],["anaylzed","analyzed"],["anaylzer","analyzer"],["anaylzes","analyzes"],["anbd","and"],["ancapsulate","encapsulate"],["ancapsulated","encapsulated"],["ancapsulates","encapsulates"],["ancapsulating","encapsulating"],["ancapsulation","encapsulation"],["ancesetor","ancestor"],["ancesetors","ancestors"],["ancester","ancestor"],["ancesteres","ancestors"],["ancesters","ancestors"],["ancestore","ancestor"],["ancestores","ancestors"],["ancestory","ancestry"],["anchestor","ancestor"],["anchestors","ancestors"],["anchord","anchored"],["ancilliary","ancillary"],["andd","and"],["andoid","android"],["andoids","androids"],["andorid","android"],["andorids","androids"],["andriod","android"],["andriods","androids"],["androgenous","androgynous"],["androgeny","androgyny"],["androidextra","androidextras"],["androind","android"],["androinds","androids"],["andthe","and the"],["ane","and"],["anevironment","environment"],["anevironments","environments"],["angluar","angular"],["anhoter","another"],["anid","and"],["anihilation","annihilation"],["animaing","animating"],["animaite","animate"],["animaiter","animator"],["animaiters","animators"],["animaiton","animation"],["animaitons","animations"],["animaitor","animator"],["animaitors","animators"],["animaton","animation"],["animatonic","animatronic"],["animete","animate"],["animeted","animated"],["animetion","animation"],["animetions","animations"],["animets","animates"],["animore","anymore"],["aninate","animate"],["anination","animation"],["aniother","any other"],["anisotrophically","anisotropically"],["anitaliasing","antialiasing"],["anithing","anything"],["anitialising","antialiasing"],["anitime","anytime"],["anitrez","antirez"],["aniversary","anniversary"],["aniway","anyway"],["aniwhere","anywhere"],["anlge","angle"],["anlysis","analysis"],["anlyzing","analyzing"],["annayed","annoyed"],["annaying","annoying"],["annd","and"],["anniversery","anniversary"],["annnounce","announce"],["annoation","annotation"],["annoint","anoint"],["annointed","anointed"],["annointing","anointing"],["annoints","anoints"],["annonate","annotate"],["annonated","annotated"],["annonates","annotates"],["annonce","announce"],["annonced","announced"],["annoncement","announcement"],["annoncements","announcements"],["annonces","announces"],["annoncing","announcing"],["annonymous","anonymous"],["annotaion","annotation"],["annotaions","annotations"],["annoted","annotated"],["annother","another"],["annouce","announce"],["annouced","announced"],["annoucement","announcement"],["annoucements","announcements"],["annouces","announces"],["annoucing","announcing"],["annouing","annoying"],["announcment","announcement"],["announcments","announcements"],["announed","announced"],["announement","announcement"],["announements","announcements"],["annoymous","anonymous"],["annoyying","annoying"],["annualy","annually"],["annuled","annulled"],["annyoingly","annoyingly"],["anoher","another"],["anohter","another"],["anologon","analogon"],["anomally","anomaly"],["anomolies","anomalies"],["anomolous","anomalous"],["anomoly","anomaly"],["anonimity","anonymity"],["anononymous","anonymous"],["anonther","another"],["anonymouse","anonymous"],["anonyms","anonymous"],["anonymus","anonymous"],["anormalies","anomalies"],["anormaly","abnormally"],["anotate","annotate"],["anotated","annotated"],["anotates","annotates"],["anotating","annotating"],["anotation","annotation"],["anotations","annotations"],["anoter","another"],["anothe","another"],["anothers","another"],["anothr","another"],["anounce","announce"],["anounced","announced"],["anouncement","announcement"],["anount","amount"],["anoying","annoying"],["anoymous","anonymous"],["anroid","android"],["ansalisation","nasalisation"],["ansalization","nasalization"],["anser","answer"],["ansester","ancestor"],["ansesters","ancestors"],["ansestor","ancestor"],["ansestors","ancestors"],["answhare","answer"],["answhared","answered"],["answhareing","answering"],["answhares","answers"],["answharing","answering"],["answhars","answers"],["ansynchronous","asynchronous"],["antaliasing","antialiasing"],["antartic","antarctic"],["antecedant","antecedent"],["anteena","antenna"],["anteenas","antennas"],["anthing","anything"],["anthings","anythings"],["anthor","another"],["anthromorphization","anthropomorphization"],["anthropolgist","anthropologist"],["anthropolgy","anthropology"],["antialialised","antialiased"],["antialising","antialiasing"],["antiapartheid","anti-apartheid"],["anticpate","anticipate"],["antry","entry"],["antyhing","anything"],["anual","annual"],["anually","annually"],["anulled","annulled"],["anumber","a number"],["anuwhere","anywhere"],["anway","anyway"],["anways","anyway"],["anwhere","anywhere"],["anwser","answer"],["anwsered","answered"],["anwsering","answering"],["anwsers","answers"],["anyawy","anyway"],["anyhing","anything"],["anyhting","anything"],["anyhwere","anywhere"],["anylsing","analysing"],["anylzing","analyzing"],["anynmore","anymore"],["anyother","any other"],["anytghing","anything"],["anythig","anything"],["anythign","anything"],["anythimng","anything"],["anytiem","anytime"],["anytihng","anything"],["anyting","anything"],["anytning","anything"],["anytrhing","anything"],["anytthing","anything"],["anytying","anything"],["anywere","anywhere"],["anyy","any"],["aoache","apache"],["aond","and"],["aoto","auto"],["aotomate","automate"],["aotomated","automated"],["aotomatic","automatic"],["aotomatical","automatic"],["aotomaticall","automatically"],["aotomatically","automatically"],["aotomation","automation"],["aovid","avoid"],["apach","apache"],["apapted","adapted"],["aparant","apparent"],["aparantly","apparently"],["aparent","apparent"],["aparently","apparently"],["aparment","apartment"],["apdated","updated"],["apeal","appeal"],["apealed","appealed"],["apealing","appealing"],["apeals","appeals"],["apear","appear"],["apeared","appeared"],["apears","appears"],["apect","aspect"],["apects","aspects"],["apeends","appends"],["apend","append"],["apendage","appendage"],["apended","appended"],["apender","appender"],["apendices","appendices"],["apending","appending"],["apendix","appendix"],["apenines","Apennines"],["aperatures","apertures"],["aperure","aperture"],["aperures","apertures"],["apeture","aperture"],["apetures","apertures"],["apilogue","epilogue"],["aplha","alpha"],["aplication","application"],["aplications","applications"],["aplied","applied"],["aplies","applies"],["apllicatin","application"],["apllicatins","applications"],["apllication","application"],["apllications","applications"],["apllied","applied"],["apllies","applies"],["aplly","apply"],["apllying","applying"],["aply","apply"],["aplyed","applied"],["aplying","applying"],["apointed","appointed"],["apointing","appointing"],["apointment","appointment"],["apoints","appoints"],["apolegetic","apologetic"],["apolegetics","apologetics"],["aportionable","apportionable"],["apostrophie","apostrophe"],["apostrophies","apostrophes"],["appar","appear"],["apparant","apparent"],["apparantly","apparently"],["appared","appeared"],["apparence","appearance"],["apparenlty","apparently"],["apparenly","apparently"],["appares","appears"],["apparoches","approaches"],["appars","appears"],["appart","apart"],["appartment","apartment"],["appartments","apartments"],["appearaing","appearing"],["appearantly","apparently"],["appeareance","appearance"],["appearence","appearance"],["appearences","appearances"],["appearently","apparently"],["appeares","appears"],["appearning","appearing"],["appearrs","appears"],["appeciate","appreciate"],["appeded","appended"],["appeding","appending"],["appedn","append"],["appen","append"],["appendend","appended"],["appendent","appended"],["appendex","appendix"],["appendig","appending"],["appendign","appending"],["appendt","append"],["appeneded","appended"],["appenines","Apennines"],["appens","appends"],["appent","append"],["apperance","appearance"],["apperances","appearances"],["apperar","appear"],["apperarance","appearance"],["apperarances","appearances"],["apperared","appeared"],["apperaring","appearing"],["apperars","appears"],["appereance","appearance"],["appereances","appearances"],["appered","appeared"],["apperent","apparent"],["apperently","apparently"],["appers","appears"],["apperture","aperture"],["appicability","applicability"],["appicable","applicable"],["appicaliton","application"],["appicalitons","applications"],["appicant","applicant"],["appication","application"],["appication-specific","application-specific"],["appications","applications"],["appicative","applicative"],["appied","applied"],["appies","applies"],["applay","apply"],["applcation","application"],["applcations","applications"],["appliable","applicable"],["appliacable","applicable"],["appliaction","application"],["appliactions","applications"],["appliation","application"],["appliations","applications"],["applicabel","applicable"],["applicaion","application"],["applicaions","applications"],["applicaiton","application"],["applicaitons","applications"],["applicance","appliance"],["applicapility","applicability"],["applicaple","applicable"],["applicatable","applicable"],["applicaten","application"],["applicatin","application"],["applicatins","applications"],["applicatio","application"],["applicationb","application"],["applicatios","applications"],["applicatiosn","applications"],["applicaton","application"],["applicatons","applications"],["appliction","application"],["applictions","applications"],["applide","applied"],["applikation","application"],["applikations","applications"],["appllied","applied"],["applly","apply"],["applyable","applicable"],["applycable","applicable"],["applyed","applied"],["applyes","applies"],["applyied","applied"],["applyig","applying"],["applys","applies"],["applyting","applying"],["appned","append"],["appologies","apologies"],["appology","apology"],["appon","upon"],["appopriate","appropriate"],["apporach","approach"],["apporached","approached"],["apporaches","approaches"],["apporaching","approaching"],["apporiate","appropriate"],["apporoximate","approximate"],["apporoximated","approximated"],["apporpiate","appropriate"],["apporpriate","appropriate"],["apporpriated","appropriated"],["apporpriately","appropriately"],["apporpriates","appropriates"],["apporpriating","appropriating"],["apporpriation","appropriation"],["apporpriations","appropriations"],["apporval","approval"],["apporve","approve"],["apporved","approved"],["apporves","approves"],["apporving","approving"],["appoval","approval"],["appove","approve"],["appoved","approved"],["appoves","approves"],["appoving","approving"],["appoximate","approximate"],["appoximately","approximately"],["appoximates","approximates"],["appoximation","approximation"],["appoximations","approximations"],["apppear","appear"],["apppears","appears"],["apppend","append"],["apppends","appends"],["appplet","applet"],["appplication","application"],["appplications","applications"],["appplying","applying"],["apppriate","appropriate"],["appproach","approach"],["apppropriate","appropriate"],["appraoch","approach"],["appraochable","approachable"],["appraoched","approached"],["appraoches","approaches"],["appraoching","approaching"],["apprearance","appearance"],["apprently","apparently"],["appreteate","appreciate"],["appreteated","appreciated"],["appretiate","appreciate"],["appretiated","appreciated"],["appretiates","appreciates"],["appretiating","appreciating"],["appretiation","appreciation"],["appretiative","appreciative"],["apprieciate","appreciate"],["apprieciated","appreciated"],["apprieciates","appreciates"],["apprieciating","appreciating"],["apprieciation","appreciation"],["apprieciative","appreciative"],["appriopriate","appropriate"],["appripriate","appropriate"],["appriproate","appropriate"],["apprixamate","approximate"],["apprixamated","approximated"],["apprixamately","approximately"],["apprixamates","approximates"],["apprixamating","approximating"],["apprixamation","approximation"],["apprixamations","approximations"],["appriximate","approximate"],["appriximated","approximated"],["appriximately","approximately"],["appriximates","approximates"],["appriximating","approximating"],["appriximation","approximation"],["appriximations","approximations"],["approachs","approaches"],["approbiate","appropriate"],["approch","approach"],["approche","approach"],["approched","approached"],["approches","approaches"],["approching","approaching"],["approiate","appropriate"],["approopriate","appropriate"],["approoximate","approximate"],["approoximately","approximately"],["approoximates","approximates"],["approoximation","approximation"],["approoximations","approximations"],["approperiate","appropriate"],["appropiate","appropriate"],["appropiately","appropriately"],["approppriately","appropriately"],["appropraite","appropriate"],["appropraitely","appropriately"],["approprate","appropriate"],["approprated","appropriated"],["approprately","appropriately"],["appropration","appropriation"],["approprations","appropriations"],["appropriage","appropriate"],["appropriatedly","appropriately"],["appropriatee","appropriate"],["appropriatly","appropriately"],["appropriatness","appropriateness"],["appropriete","appropriate"],["appropritae","appropriate"],["appropritate","appropriate"],["appropritately","appropriately"],["approprite","appropriate"],["approproate","appropriate"],["appropropiate","appropriate"],["appropropiately","appropriately"],["appropropreate","appropriate"],["appropropriate","appropriate"],["approproximate","approximate"],["approproximately","approximately"],["approproximates","approximates"],["approproximation","approximation"],["approproximations","approximations"],["approprpiate","appropriate"],["approriate","appropriate"],["approriately","appropriately"],["approrpriate","appropriate"],["approrpriately","appropriately"],["approuval","approval"],["approuve","approve"],["approuved","approved"],["approuves","approves"],["approuving","approving"],["approvement","approval"],["approxamate","approximate"],["approxamately","approximately"],["approxamates","approximates"],["approxamation","approximation"],["approxamations","approximations"],["approxamatly","approximately"],["approxametely","approximately"],["approxiamte","approximate"],["approxiamtely","approximately"],["approxiamtes","approximates"],["approxiamtion","approximation"],["approxiamtions","approximations"],["approxiate","approximate"],["approxiately","approximately"],["approxiates","approximates"],["approxiation","approximation"],["approxiations","approximations"],["approximatively","approximately"],["approximatly","approximately"],["approximed","approximated"],["approximetely","approximately"],["approximitely","approximately"],["approxmate","approximate"],["approxmately","approximately"],["approxmates","approximates"],["approxmation","approximation"],["approxmations","approximations"],["approxmimation","approximation"],["apprpriate","appropriate"],["apprpriately","appropriately"],["appy","apply"],["appying","applying"],["apreciate","appreciate"],["apreciated","appreciated"],["apreciates","appreciates"],["apreciating","appreciating"],["apreciation","appreciation"],["apreciative","appreciative"],["aprehensive","apprehensive"],["apreteate","appreciate"],["apreteated","appreciated"],["apreteating","appreciating"],["apretiate","appreciate"],["apretiated","appreciated"],["apretiates","appreciates"],["apretiating","appreciating"],["apretiation","appreciation"],["apretiative","appreciative"],["aproach","approach"],["aproached","approached"],["aproaches","approaches"],["aproaching","approaching"],["aproch","approach"],["aproched","approached"],["aproches","approaches"],["aproching","approaching"],["aproove","approve"],["aprooved","approved"],["apropiate","appropriate"],["apropiately","appropriately"],["apropriate","appropriate"],["apropriately","appropriately"],["aproval","approval"],["aproximate","approximate"],["aproximately","approximately"],["aproximates","approximates"],["aproximation","approximation"],["aproximations","approximations"],["aprrovement","approval"],["aprroximate","approximate"],["aprroximately","approximately"],["aprroximates","approximates"],["aprroximation","approximation"],["aprroximations","approximations"],["aprtment","apartment"],["aqain","again"],["aqcuire","acquire"],["aqcuired","acquired"],["aqcuires","acquires"],["aqcuiring","acquiring"],["aquaduct","aqueduct"],["aquaint","acquaint"],["aquaintance","acquaintance"],["aquainted","acquainted"],["aquainting","acquainting"],["aquaints","acquaints"],["aquiantance","acquaintance"],["aquire","acquire"],["aquired","acquired"],["aquires","acquires"],["aquiring","acquiring"],["aquisition","acquisition"],["aquisitions","acquisitions"],["aquit","acquit"],["aquitted","acquitted"],["arameters","parameters"],["aranged","arranged"],["arangement","arrangement"],["araound","around"],["ararbic","arabic"],["aray","array"],["arays","arrays"],["arbiatraily","arbitrarily"],["arbiatray","arbitrary"],["arbibtarily","arbitrarily"],["arbibtary","arbitrary"],["arbibtrarily","arbitrarily"],["arbibtrary","arbitrary"],["arbiitrarily","arbitrarily"],["arbiitrary","arbitrary"],["arbirarily","arbitrarily"],["arbirary","arbitrary"],["arbiratily","arbitrarily"],["arbiraty","arbitrary"],["arbirtarily","arbitrarily"],["arbirtary","arbitrary"],["arbirtrarily","arbitrarily"],["arbirtrary","arbitrary"],["arbitarary","arbitrary"],["arbitarily","arbitrarily"],["arbitary","arbitrary"],["arbitiarily","arbitrarily"],["arbitiary","arbitrary"],["arbitiraly","arbitrarily"],["arbitiray","arbitrary"],["arbitrailly","arbitrarily"],["arbitraily","arbitrarily"],["arbitraion","arbitration"],["arbitrairly","arbitrarily"],["arbitrairy","arbitrary"],["arbitral","arbitrary"],["arbitralily","arbitrarily"],["arbitrally","arbitrarily"],["arbitralrily","arbitrarily"],["arbitralry","arbitrary"],["arbitraly","arbitrary"],["arbitrarion","arbitration"],["arbitraryily","arbitrarily"],["arbitraryly","arbitrary"],["arbitratily","arbitrarily"],["arbitratiojn","arbitration"],["arbitraton","arbitration"],["arbitratrily","arbitrarily"],["arbitratrion","arbitration"],["arbitratry","arbitrary"],["arbitraty","arbitrary"],["arbitray","arbitrary"],["arbitriarily","arbitrarily"],["arbitriary","arbitrary"],["arbitrily","arbitrarily"],["arbitrion","arbitration"],["arbitriraly","arbitrarily"],["arbitriray","arbitrary"],["arbitrition","arbitration"],["arbitrtily","arbitrarily"],["arbitrty","arbitrary"],["arbitry","arbitrary"],["arbitryarily","arbitrarily"],["arbitryary","arbitrary"],["arbitual","arbitrary"],["arbitually","arbitrarily"],["arbitualy","arbitrary"],["arbituarily","arbitrarily"],["arbituary","arbitrary"],["arbiturarily","arbitrarily"],["arbiturary","arbitrary"],["arbort","abort"],["arborted","aborted"],["arborting","aborting"],["arborts","aborts"],["arbritary","arbitrary"],["arbritrarily","arbitrarily"],["arbritrary","arbitrary"],["arbtirarily","arbitrarily"],["arbtirary","arbitrary"],["arbtrarily","arbitrarily"],["arbtrary","arbitrary"],["arbutrarily","arbitrarily"],["arbutrary","arbitrary"],["arch-dependet","arch-dependent"],["arch-independet","arch-independent"],["archaelogical","archaeological"],["archaelogists","archaeologists"],["archaelogy","archaeology"],["archetect","architect"],["archetects","architects"],["archetectural","architectural"],["archetecturally","architecturally"],["archetecture","architecture"],["archiac","archaic"],["archictect","architect"],["archictecture","architecture"],["archictectures","architectures"],["archicture","architecture"],["archiecture","architecture"],["archiectures","architectures"],["archimedian","archimedean"],["architct","architect"],["architcts","architects"],["architcture","architecture"],["architctures","architectures"],["architecht","architect"],["architechts","architects"],["architechturally","architecturally"],["architechture","architecture"],["architechtures","architectures"],["architectual","architectural"],["architectur","architecture"],["architecturs","architectures"],["architecturse","architectures"],["architecure","architecture"],["architecures","architectures"],["architecutre","architecture"],["architecutres","architectures"],["architecuture","architecture"],["architecutures","architectures"],["architetcure","architecture"],["architetcures","architectures"],["architeture","architecture"],["architetures","architectures"],["architure","architecture"],["architures","architectures"],["archiv","archive"],["archivel","archival"],["archor","anchor"],["archtecture","architecture"],["archtectures","architectures"],["archtiecture","architecture"],["archtiectures","architectures"],["archtitecture","architecture"],["archtitectures","architectures"],["archtype","archetype"],["archtypes","archetypes"],["archvie","archive"],["archvies","archives"],["archving","archiving"],["arcitecture","architecture"],["arcitectures","architectures"],["arcive","archive"],["arcived","archived"],["arciver","archiver"],["arcives","archives"],["arciving","archiving"],["arcticle","article"],["Ardiuno","Arduino"],["are'nt","aren't"],["aready","already"],["areea","area"],["aren's","aren't"],["aren;t","aren't"],["arent'","aren't"],["arent","aren't"],["arent;","aren't"],["areodynamics","aerodynamics"],["argement","argument"],["argements","arguments"],["argemnt","argument"],["argemnts","arguments"],["argment","argument"],["argments","arguments"],["argmument","argument"],["argmuments","arguments"],["argreement","agreement"],["argreements","agreements"],["argubly","arguably"],["arguement","argument"],["arguements","arguments"],["arguemnt","argument"],["arguemnts","arguments"],["arguemtn","argument"],["arguemtns","arguments"],["arguents","arguments"],["argumant","argument"],["argumants","arguments"],["argumeent","argument"],["argumeents","arguments"],["argumement","argument"],["argumements","arguments"],["argumemnt","argument"],["argumemnts","arguments"],["argumeng","argument"],["argumengs","arguments"],["argumens","arguments"],["argumenst","arguments"],["argumentents","arguments"],["argumeny","argument"],["argumet","argument"],["argumetn","argument"],["argumetns","arguments"],["argumets","arguments"],["argumnet","argument"],["argumnets","arguments"],["argumnt","argument"],["argumnts","arguments"],["arhive","archive"],["arhives","archives"],["aribitary","arbitrary"],["aribiter","arbiter"],["aribrary","arbitrary"],["aribtrarily","arbitrarily"],["aribtrary","arbitrary"],["ariflow","airflow"],["arised","arose"],["arithemetic","arithmetic"],["arithemtic","arithmetic"],["arithmatic","arithmetic"],["arithmentic","arithmetic"],["arithmetc","arithmetic"],["arithmethic","arithmetic"],["arithmitic","arithmetic"],["aritmetic","arithmetic"],["aritrary","arbitrary"],["aritst","artist"],["arival","arrival"],["arive","arrive"],["arlready","already"],["armamant","armament"],["armistace","armistice"],["armonic","harmonic"],["arn't","aren't"],["arne't","aren't"],["arogant","arrogant"],["arogent","arrogant"],["aronud","around"],["aroud","around"],["aroudn","around"],["arouind","around"],["arounf","around"],["aroung","around"],["arount","around"],["arquitecture","architecture"],["arquitectures","architectures"],["arraay","array"],["arragement","arrangement"],["arraival","arrival"],["arral","array"],["arranable","arrangeable"],["arrance","arrange"],["arrane","arrange"],["arraned","arranged"],["arranement","arrangement"],["arranements","arrangements"],["arranent","arrangement"],["arranents","arrangements"],["arranes","arranges"],["arrang","arrange"],["arrangable","arrangeable"],["arrangaeble","arrangeable"],["arrangaelbe","arrangeable"],["arrangd","arranged"],["arrangde","arranged"],["arrangemenet","arrangement"],["arrangemenets","arrangements"],["arrangent","arrangement"],["arrangents","arrangements"],["arrangmeent","arrangement"],["arrangmeents","arrangements"],["arrangmenet","arrangement"],["arrangmenets","arrangements"],["arrangment","arrangement"],["arrangments","arrangements"],["arrangnig","arranging"],["arrangs","arranges"],["arrangse","arranges"],["arrangt","arrangement"],["arrangte","arrange"],["arrangteable","arrangeable"],["arrangted","arranged"],["arrangtement","arrangement"],["arrangtements","arrangements"],["arrangtes","arranges"],["arrangting","arranging"],["arrangts","arrangements"],["arraning","arranging"],["arranment","arrangement"],["arranments","arrangements"],["arrants","arrangements"],["arraows","arrows"],["arrary","array"],["arrayes","arrays"],["arre","are"],["arreay","array"],["arrengement","arrangement"],["arrengements","arrangements"],["arriveis","arrives"],["arrivial","arrival"],["arround","around"],["arrray","array"],["arrrays","arrays"],["arrrive","arrive"],["arrrived","arrived"],["arrrives","arrives"],["arrtibute","attribute"],["arrya","array"],["arryas","arrays"],["arrys","arrays"],["artcile","article"],["articaft","artifact"],["articafts","artifacts"],["artical","article"],["articals","articles"],["articat","artifact"],["articats","artifacts"],["artice","article"],["articel","article"],["articels","articles"],["artifac","artifact"],["artifacs","artifacts"],["artifcat","artifact"],["artifcats","artifacts"],["artifical","artificial"],["artifically","artificially"],["artihmetic","arithmetic"],["artilce","article"],["artillary","artillery"],["artuments","arguments"],["arugment","argument"],["arugments","arguments"],["arument","argument"],["aruments","arguments"],["arund","around"],["arvg","argv"],["asai","Asia"],["asain","Asian"],["asbolute","absolute"],["asbolutelly","absolutely"],["asbolutely","absolutely"],["asbtract","abstract"],["asbtracted","abstracted"],["asbtracter","abstracter"],["asbtracting","abstracting"],["asbtraction","abstraction"],["asbtractions","abstractions"],["asbtractly","abstractly"],["asbtractness","abstractness"],["asbtractor","abstractor"],["asbtracts","abstracts"],["ascconciated","associated"],["asceding","ascending"],["ascpect","aspect"],["ascpects","aspects"],["asdignment","assignment"],["asdignments","assignments"],["asemble","assemble"],["asembled","assembled"],["asembler","assembler"],["asemblers","assemblers"],["asembles","assembles"],["asemblies","assemblies"],["asembling","assembling"],["asembly","assembly"],["asendance","ascendance"],["asendancey","ascendancy"],["asendancy","ascendancy"],["asendence","ascendance"],["asendencey","ascendancy"],["asendency","ascendancy"],["asending","ascending"],["asent","ascent"],["aserted","asserted"],["asertion","assertion"],["asess","assess"],["asessment","assessment"],["asessments","assessments"],["asetic","ascetic"],["asfar","as far"],["asign","assign"],["asigned","assigned"],["asignee","assignee"],["asignees","assignees"],["asigning","assigning"],["asignmend","assignment"],["asignmends","assignments"],["asignment","assignment"],["asignor","assignor"],["asigns","assigns"],["asii","ascii"],["asisstant","assistant"],["asisstants","assistants"],["asistance","assistance"],["aske","ask"],["askes","asks"],["aslo","also"],["asnwer","answer"],["asnwered","answered"],["asnwerer","answerer"],["asnwerers","answerers"],["asnwering","answering"],["asnwers","answers"],["asny","any"],["asnychronoue","asynchronous"],["asociated","associated"],["asolute","absolute"],["asorbed","absorbed"],["aspected","expected"],["asphyxation","asphyxiation"],["assasin","assassin"],["assasinate","assassinate"],["assasinated","assassinated"],["assasinates","assassinates"],["assasination","assassination"],["assasinations","assassinations"],["assasined","assassinated"],["assasins","assassins"],["assassintation","assassination"],["asscciated","associated"],["assciated","associated"],["asscii","ASCII"],["asscociated","associated"],["asscoitaed","associated"],["assebly","assembly"],["assebmly","assembly"],["assembe","assemble"],["assembed","assembled"],["assembeld","assembled"],["assember","assembler"],["assemblys","assemblies"],["assemby","assembly"],["assemly","assembly"],["assemnly","assembly"],["assemple","assemble"],["assending","ascending"],["asser","assert"],["assersion","assertion"],["assertation","assertion"],["assertio","assertion"],["assertting","asserting"],["assesmenet","assessment"],["assesment","assessment"],["assesments","assessments"],["assessmant","assessment"],["assessmants","assessments"],["assgin","assign"],["assgined","assigned"],["assgining","assigning"],["assginment","assignment"],["assginments","assignments"],["assgins","assigns"],["assicate","associate"],["assicated","associated"],["assicates","associates"],["assicating","associating"],["assication","association"],["assications","associations"],["assiciate","associate"],["assiciated","associated"],["assiciates","associates"],["assiciation","association"],["assiciations","associations"],["asside","aside"],["assiged","assigned"],["assigend","assigned"],["assigh","assign"],["assighed","assigned"],["assighee","assignee"],["assighees","assignees"],["assigher","assigner"],["assighers","assigners"],["assighing","assigning"],["assighor","assignor"],["assighors","assignors"],["assighs","assigns"],["assiging","assigning"],["assigment","assignment"],["assigments","assignments"],["assigmnent","assignment"],["assignalble","assignable"],["assignement","assignment"],["assignements","assignments"],["assignemnt","assignment"],["assignemnts","assignments"],["assignemtn","assignment"],["assignend","assigned"],["assignenment","assignment"],["assignenmentes","assignments"],["assignenments","assignments"],["assignenmet","assignment"],["assignes","assigns"],["assignmenet","assignment"],["assignmens","assignments"],["assignmet","assignment"],["assignmetns","assignments"],["assignmnet","assignment"],["assignt","assign"],["assigntment","assignment"],["assihnment","assignment"],["assihnments","assignments"],["assime","assume"],["assined","assigned"],["assing","assign"],["assinged","assigned"],["assinging","assigning"],["assingled","assigned"],["assingment","assignment"],["assingned","assigned"],["assingnment","assignment"],["assings","assigns"],["assinment","assignment"],["assiocate","associate"],["assiocated","associated"],["assiocates","associates"],["assiocating","associating"],["assiocation","association"],["assiociate","associate"],["assiociated","associated"],["assiociates","associates"],["assiociating","associating"],["assiociation","association"],["assisance","assistance"],["assisant","assistant"],["assisants","assistants"],["assising","assisting"],["assisnate","assassinate"],["assistence","assistance"],["assistent","assistant"],["assit","assist"],["assitant","assistant"],["assition","assertion"],["assmbler","assembler"],["assmeble","assemble"],["assmebler","assembler"],["assmebles","assembles"],["assmebling","assembling"],["assmebly","assembly"],["assmelber","assembler"],["assmption","assumption"],["assmptions","assumptions"],["assmume","assume"],["assmumed","assumed"],["assmumes","assumes"],["assmuming","assuming"],["assmumption","assumption"],["assmumptions","assumptions"],["assoaiate","associate"],["assoaiated","associated"],["assoaiates","associates"],["assoaiating","associating"],["assoaiation","association"],["assoaiations","associations"],["assoaiative","associative"],["assocaited","associated"],["assocate","associate"],["assocated","associated"],["assocates","associates"],["assocating","associating"],["assocation","association"],["assocations","associations"],["assocciated","associated"],["assocciation","association"],["assocciations","associations"],["assocciative","associative"],["associatated","associated"],["associatd","associated"],["associatied","associated"],["associcate","associate"],["associcated","associated"],["associcates","associates"],["associcating","associating"],["associdated","associated"],["associeate","associate"],["associeated","associated"],["associeates","associates"],["associeating","associating"],["associeation","association"],["associeations","associations"],["associeted","associated"],["associte","associate"],["associted","associated"],["assocites","associates"],["associting","associating"],["assocition","association"],["associtions","associations"],["associtive","associative"],["associuated","associated"],["assoction","association"],["assoiated","associated"],["assoicate","associate"],["assoicated","associated"],["assoicates","associates"],["assoication","association"],["assoiciative","associative"],["assomption","assumption"],["assosciate","associate"],["assosciated","associated"],["assosciates","associates"],["assosciating","associating"],["assosiacition","association"],["assosiacitions","associations"],["assosiacted","associated"],["assosiate","associate"],["assosiated","associated"],["assosiates","associates"],["assosiating","associating"],["assosiation","association"],["assosiations","associations"],["assosiative","associative"],["assosication","assassination"],["assotiated","associated"],["assoziated","associated"],["asssassans","assassins"],["asssembler","assembler"],["asssembly","assembly"],["asssert","assert"],["asssertion","assertion"],["asssociate","associated"],["asssociated","associated"],["asssociation","association"],["asssume","assume"],["asssumes","assumes"],["asssuming","assuming"],["assualt","assault"],["assualted","assaulted"],["assuembly","assembly"],["assum","assume"],["assuma","assume"],["assumad","assumed"],["assumang","assuming"],["assumas","assumes"],["assumbe","assume"],["assumbed","assumed"],["assumbes","assumes"],["assumbing","assuming"],["assumend","assumed"],["assumking","assuming"],["assumme","assume"],["assummed","assumed"],["assummes","assumes"],["assumming","assuming"],["assumne","assume"],["assumned","assumed"],["assumnes","assumes"],["assumning","assuming"],["assumong","assuming"],["assumotion","assumption"],["assumotions","assumptions"],["assumpation","assumption"],["assumpted","assumed"],["assums","assumes"],["assumse","assumes"],["assumtion","assumption"],["assumtions","assumptions"],["assumtpion","assumption"],["assumtpions","assumptions"],["assumu","assume"],["assumud","assumed"],["assumue","assume"],["assumued","assumed"],["assumues","assumes"],["assumuing","assuming"],["assumung","assuming"],["assumuption","assumption"],["assumuptions","assumptions"],["assumus","assumes"],["assupmption","assumption"],["assuption","assumption"],["assuptions","assumptions"],["assurred","assured"],["assymetric","asymmetric"],["assymetrical","asymmetrical"],["assymetries","asymmetries"],["assymetry","asymmetry"],["assymmetric","asymmetric"],["assymmetrical","asymmetrical"],["assymmetries","asymmetries"],["assymmetry","asymmetry"],["assymptote","asymptote"],["assymptotes","asymptotes"],["assymptotic","asymptotic"],["assymptotically","asymptotically"],["assymthotic","asymptotic"],["assymtote","asymptote"],["assymtotes","asymptotes"],["assymtotic","asymptotic"],["assymtotically","asymptotically"],["asterices","asterisks"],["asteriod","asteroid"],["astethic","aesthetic"],["astethically","aesthetically"],["astethicism","aestheticism"],["astethics","aesthetics"],["asthetic","aesthetic"],["asthetical","aesthetical"],["asthetically","aesthetically"],["asthetics","aesthetics"],["astiimate","estimate"],["astiimation","estimation"],["asume","assume"],["asumed","assumed"],["asumes","assumes"],["asuming","assuming"],["asumption","assumption"],["asure","assure"],["aswell","as well"],["asychronize","asynchronize"],["asychronized","asynchronized"],["asychronous","asynchronous"],["asychronously","asynchronously"],["asycn","async"],["asycnhronous","asynchronous"],["asycnhronously","asynchronously"],["asycronous","asynchronous"],["asymetic","asymmetric"],["asymetric","asymmetric"],["asymetrical","asymmetrical"],["asymetricaly","asymmetrically"],["asymmeric","asymmetric"],["asynchnous","asynchronous"],["asynchonous","asynchronous"],["asynchonously","asynchronously"],["asynchornous","asynchronous"],["asynchoronous","asynchronous"],["asynchrnous","asynchronous"],["asynchrnously","asynchronously"],["asynchromous","asynchronous"],["asynchron","asynchronous"],["asynchroneously","asynchronously"],["asynchronious","asynchronous"],["asynchronlous","asynchronous"],["asynchrons","asynchronous"],["asynchroous","asynchronous"],["asynchrounous","asynchronous"],["asynchrounsly","asynchronously"],["asyncronous","asynchronous"],["asyncronously","asynchronously"],["asynnc","async"],["asynschron","asynchronous"],["atach","attach"],["atached","attached"],["ataching","attaching"],["atachment","attachment"],["atachments","attachments"],["atack","attack"],["atain","attain"],["atatch","attach"],["atatchable","attachable"],["atatched","attached"],["atatches","attaches"],["atatching","attaching"],["atatchment","attachment"],["atatchments","attachments"],["atempt","attempt"],["atempting","attempting"],["atempts","attempts"],["atendance","attendance"],["atended","attended"],["atendee","attendee"],["atends","attends"],["atention","attention"],["atheistical","atheistic"],["athenean","Athenian"],["atheneans","Athenians"],["ather","other"],["athiesm","atheism"],["athiest","atheist"],["athough","although"],["athron","athlon"],["athros","atheros"],["atleast","at least"],["atll","all"],["atmoic","atomic"],["atmoically","atomically"],["atomatically","automatically"],["atomical","atomic"],["atomicly","atomically"],["atomiticity","atomicity"],["atomtical","automatic"],["atomtically","automatically"],["atomticaly","automatically"],["atomticlly","automatically"],["atomticly","automatically"],["atorecovery","autorecovery"],["atorney","attorney"],["atquired","acquired"],["atribs","attribs"],["atribut","attribute"],["atribute","attribute"],["atributed","attributed"],["atributes","attributes"],["atrribute","attribute"],["atrributes","attributes"],["atrtribute","attribute"],["atrtributes","attributes"],["attaced","attached"],["attachd","attached"],["attachement","attachment"],["attachements","attachments"],["attachemnt","attachment"],["attachemnts","attachments"],["attachen","attach"],["attachged","attached"],["attachmant","attachment"],["attachmants","attachments"],["attachs","attaches"],["attachted","attached"],["attacs","attacks"],["attacthed","attached"],["attampt","attempt"],["attatch","attach"],["attatched","attached"],["attatches","attaches"],["attatching","attaching"],["attatchment","attachment"],["attatchments","attachments"],["attch","attach"],["attched","attached"],["attches","attaches"],["attching","attaching"],["attchment","attachment"],["attement","attempt"],["attemented","attempted"],["attementing","attempting"],["attements","attempts"],["attemp","attempt"],["attemped","attempted"],["attemping","attempting"],["attemppt","attempt"],["attemps","attempts"],["attemptes","attempts"],["attemptting","attempting"],["attemt","attempt"],["attemted","attempted"],["attemting","attempting"],["attemtp","attempt"],["attemtped","attempted"],["attemtping","attempting"],["attemtps","attempts"],["attemtpted","attempted"],["attemtpts","attempts"],["attemts","attempts"],["attendence","attendance"],["attendent","attendant"],["attendents","attendants"],["attened","attended"],["attennuation","attenuation"],["attension","attention"],["attented","attended"],["attentuation","attenuation"],["attentuations","attenuations"],["attepmpt","attempt"],["attept","attempt"],["attetntion","attention"],["attibute","attribute"],["attibuted","attributed"],["attibutes","attributes"],["attirbute","attribute"],["attirbutes","attributes"],["attiribute","attribute"],["attitide","attitude"],["attmept","attempt"],["attmpt","attempt"],["attnetion","attention"],["attosencond","attosecond"],["attosenconds","attoseconds"],["attrbiute","attribute"],["attrbute","attribute"],["attrbuted","attributed"],["attrbutes","attributes"],["attrbution","attribution"],["attrbutions","attributions"],["attribbute","attribute"],["attribiute","attribute"],["attribiutes","attributes"],["attribte","attribute"],["attribted","attributed"],["attribting","attributing"],["attribtue","attribute"],["attribtutes","attributes"],["attribude","attribute"],["attribue","attribute"],["attribues","attributes"],["attribuets","attributes"],["attribuite","attribute"],["attribuites","attributes"],["attribuition","attribution"],["attribure","attribute"],["attribured","attributed"],["attribures","attributes"],["attriburte","attribute"],["attriburted","attributed"],["attriburtes","attributes"],["attriburtion","attribution"],["attribut","attribute"],["attributei","attribute"],["attributen","attribute"],["attributess","attributes"],["attributred","attributed"],["attributs","attributes"],["attribye","attribute"],["attribyes","attributes"],["attribyte","attribute"],["attribytes","attributes"],["attriebute","attribute"],["attriebuted","attributed"],["attriebutes","attributes"],["attriebuting","attributing"],["attrirbute","attribute"],["attrirbuted","attributed"],["attrirbutes","attributes"],["attrirbution","attribution"],["attritube","attribute"],["attritubed","attributed"],["attritubes","attributes"],["attriubtes","attributes"],["attriubute","attribute"],["attrocities","atrocities"],["attrribute","attribute"],["attrributed","attributed"],["attrributes","attributes"],["attrribution","attribution"],["attrubite","attribute"],["attrubites","attributes"],["attrubte","attribute"],["attrubtes","attributes"],["attrubure","attribute"],["attrubures","attributes"],["attrubute","attribute"],["attrubutes","attributes"],["attrubyte","attribute"],["attrubytes","attributes"],["attruibute","attribute"],["attruibutes","attributes"],["atttached","attached"],["atttribute","attribute"],["atttributes","attributes"],["atuhenticate","authenticate"],["atuhenticated","authenticated"],["atuhenticates","authenticates"],["atuhenticating","authenticating"],["atuhentication","authentication"],["atuhenticator","authenticator"],["atuhenticators","authenticators"],["auccess","success"],["auccessive","successive"],["audeince","audience"],["audiance","audience"],["augest","August"],["augmnet","augment"],["augmnetation","augmentation"],["augmneted","augmented"],["augmneter","augmenter"],["augmneters","augmenters"],["augmnetes","augments"],["augmneting","augmenting"],["augmnets","augments"],["auguest","august"],["auhtor","author"],["auhtors","authors"],["aunthenticate","authenticate"],["aunthenticated","authenticated"],["aunthenticates","authenticates"],["aunthenticating","authenticating"],["aunthentication","authentication"],["aunthenticator","authenticator"],["aunthenticators","authenticators"],["auospacing","autospacing"],["auot","auto"],["auotmatic","automatic"],["auromated","automated"],["austrailia","Australia"],["austrailian","Australian"],["Australien","Australian"],["Austrlaian","Australian"],["autasave","autosave"],["autasaves","autosaves"],["autenticate","authenticate"],["autenticated","authenticated"],["autenticates","authenticates"],["autenticating","authenticating"],["autentication","authentication"],["autenticator","authenticator"],["autenticators","authenticators"],["authecate","authenticate"],["authecated","authenticated"],["authecates","authenticates"],["authecating","authenticating"],["authecation","authentication"],["authecator","authenticator"],["authecators","authenticators"],["authenaticate","authenticate"],["authenaticated","authenticated"],["authenaticates","authenticates"],["authenaticating","authenticating"],["authenatication","authentication"],["authenaticator","authenticator"],["authenaticators","authenticators"],["authencate","authenticate"],["authencated","authenticated"],["authencates","authenticates"],["authencating","authenticating"],["authencation","authentication"],["authencator","authenticator"],["authencators","authenticators"],["authenciate","authenticate"],["authenciated","authenticated"],["authenciates","authenticates"],["authenciating","authenticating"],["authenciation","authentication"],["authenciator","authenticator"],["authenciators","authenticators"],["authencicate","authenticate"],["authencicated","authenticated"],["authencicates","authenticates"],["authencicating","authenticating"],["authencication","authentication"],["authencicator","authenticator"],["authencicators","authenticators"],["authencity","authenticity"],["authencticate","authenticate"],["authencticated","authenticated"],["authencticates","authenticates"],["authencticating","authenticating"],["authenctication","authentication"],["authencticator","authenticator"],["authencticators","authenticators"],["authendicate","authenticate"],["authendicated","authenticated"],["authendicates","authenticates"],["authendicating","authenticating"],["authendication","authentication"],["authendicator","authenticator"],["authendicators","authenticators"],["authenenticate","authenticate"],["authenenticated","authenticated"],["authenenticates","authenticates"],["authenenticating","authenticating"],["authenentication","authentication"],["authenenticator","authenticator"],["authenenticators","authenticators"],["authenfie","authenticate"],["authenfied","authenticated"],["authenfies","authenticates"],["authenfiing","authenticating"],["authenfiion","authentication"],["authenfior","authenticator"],["authenfiors","authenticators"],["authenicae","authenticate"],["authenicaed","authenticated"],["authenicaes","authenticates"],["authenicaing","authenticating"],["authenicaion","authentication"],["authenicaor","authenticator"],["authenicaors","authenticators"],["authenicate","authenticate"],["authenicated","authenticated"],["authenicates","authenticates"],["authenicating","authenticating"],["authenication","authentication"],["authenicator","authenticator"],["authenicators","authenticators"],["authenificate","authenticate"],["authenificated","authenticated"],["authenificates","authenticates"],["authenificating","authenticating"],["authenification","authentication"],["authenificator","authenticator"],["authenificators","authenticators"],["authenitcate","authenticate"],["authenitcated","authenticated"],["authenitcates","authenticates"],["authenitcating","authenticating"],["authenitcation","authentication"],["authenitcator","authenticator"],["authenitcators","authenticators"],["autheniticate","authenticate"],["autheniticated","authenticated"],["autheniticates","authenticates"],["autheniticating","authenticating"],["authenitication","authentication"],["autheniticator","authenticator"],["autheniticators","authenticators"],["authenricate","authenticate"],["authenricated","authenticated"],["authenricates","authenticates"],["authenricating","authenticating"],["authenrication","authentication"],["authenricator","authenticator"],["authenricators","authenticators"],["authentation","authentication"],["authentcated","authenticated"],["authentciate","authenticate"],["authentciated","authenticated"],["authentciates","authenticates"],["authentciating","authenticating"],["authentciation","authentication"],["authentciator","authenticator"],["authentciators","authenticators"],["authenticaiton","authentication"],["authenticateion","authentication"],["authentiction","authentication"],["authentification","authentication"],["auther","author"],["autherisation","authorisation"],["autherise","authorise"],["autherization","authorization"],["autherize","authorize"],["authers","authors"],["authethenticate","authenticate"],["authethenticated","authenticated"],["authethenticates","authenticates"],["authethenticating","authenticating"],["authethentication","authentication"],["authethenticator","authenticator"],["authethenticators","authenticators"],["authethicate","authenticate"],["authethicated","authenticated"],["authethicates","authenticates"],["authethicating","authenticating"],["authethication","authentication"],["authethicator","authenticator"],["authethicators","authenticators"],["autheticate","authenticate"],["autheticated","authenticated"],["autheticates","authenticates"],["autheticating","authenticating"],["authetication","authentication"],["autheticator","authenticator"],["autheticators","authenticators"],["authetnicate","authenticate"],["authetnicated","authenticated"],["authetnicates","authenticates"],["authetnicating","authenticating"],["authetnication","authentication"],["authetnicator","authenticator"],["authetnicators","authenticators"],["authetnticate","authenticate"],["authetnticated","authenticated"],["authetnticates","authenticates"],["authetnticating","authenticating"],["authetntication","authentication"],["authetnticator","authenticator"],["authetnticators","authenticators"],["authobiographic","autobiographic"],["authobiography","autobiography"],["authoer","author"],["authoratative","authoritative"],["authorative","authoritative"],["authorded","authored"],["authorites","authorities"],["authorithy","authority"],["authoritiers","authorities"],["authorititive","authoritative"],["authoritive","authoritative"],["authorizeed","authorized"],["authror","author"],["authrored","authored"],["authrorisation","authorisation"],["authrorities","authorities"],["authrorization","authorization"],["authrors","authors"],["autimatic","automatic"],["autimatically","automatically"],["autmatically","automatically"],["auto-dependancies","auto-dependencies"],["auto-destrcut","auto-destruct"],["auto-genrated","auto-generated"],["auto-genratet","auto-generated"],["auto-genration","auto-generation"],["auto-negatiotiation","auto-negotiation"],["auto-negatiotiations","auto-negotiations"],["auto-negoatiation","auto-negotiation"],["auto-negoatiations","auto-negotiations"],["auto-negoation","auto-negotiation"],["auto-negoations","auto-negotiations"],["auto-negociation","auto-negotiation"],["auto-negociations","auto-negotiations"],["auto-negogtiation","auto-negotiation"],["auto-negogtiations","auto-negotiations"],["auto-negoitation","auto-negotiation"],["auto-negoitations","auto-negotiations"],["auto-negoptionsotiation","auto-negotiation"],["auto-negoptionsotiations","auto-negotiations"],["auto-negosiation","auto-negotiation"],["auto-negosiations","auto-negotiations"],["auto-negotaiation","auto-negotiation"],["auto-negotaiations","auto-negotiations"],["auto-negotaition","auto-negotiation"],["auto-negotaitions","auto-negotiations"],["auto-negotatiation","auto-negotiation"],["auto-negotatiations","auto-negotiations"],["auto-negotation","auto-negotiation"],["auto-negotations","auto-negotiations"],["auto-negothiation","auto-negotiation"],["auto-negothiations","auto-negotiations"],["auto-negotication","auto-negotiation"],["auto-negotications","auto-negotiations"],["auto-negotioation","auto-negotiation"],["auto-negotioations","auto-negotiations"],["auto-negotion","auto-negotiation"],["auto-negotionation","auto-negotiation"],["auto-negotionations","auto-negotiations"],["auto-negotions","auto-negotiations"],["auto-negotiotation","auto-negotiation"],["auto-negotiotations","auto-negotiations"],["auto-negotitaion","auto-negotiation"],["auto-negotitaions","auto-negotiations"],["auto-negotitation","auto-negotiation"],["auto-negotitations","auto-negotiations"],["auto-negotition","auto-negotiation"],["auto-negotitions","auto-negotiations"],["auto-negoziation","auto-negotiation"],["auto-negoziations","auto-negotiations"],["auto-realease","auto-release"],["auto-realeased","auto-released"],["autochtonous","autochthonous"],["autocmplete","autocomplete"],["autocmpleted","autocompleted"],["autocmpletes","autocompletes"],["autocmpleting","autocompleting"],["autocommiting","autocommitting"],["autoconplete","autocomplete"],["autoconpleted","autocompleted"],["autoconpletes","autocompletes"],["autoconpleting","autocompleting"],["autoconpletion","autocompletion"],["autocoomit","autocommit"],["autoctonous","autochthonous"],["autoeselect","autoselect"],["autofilt","autofilter"],["autofomat","autoformat"],["autoformating","autoformatting"],["autogenrated","autogenerated"],["autogenratet","autogenerated"],["autogenration","autogeneration"],["autogroping","autogrouping"],["autohorized","authorized"],["autoincrememnt","autoincrement"],["autoincrementive","autoincrement"],["automaatically","automatically"],["automagicaly","automagically"],["automaitc","automatic"],["automaitcally","automatically"],["automanifactured","automanufactured"],["automatcally","automatically"],["automatially","automatically"],["automaticallly","automatically"],["automaticaly","automatically"],["automaticalyl","automatically"],["automaticalyy","automatically"],["automaticlly","automatically"],["automaticly","automatically"],["autometic","automatic"],["autometically","automatically"],["automibile","automobile"],["automical","automatic"],["automically","automatically"],["automicaly","automatically"],["automicatilly","automatically"],["automiclly","automatically"],["automicly","automatically"],["automonomous","autonomous"],["automtic","automatic"],["automtically","automatically"],["autonagotiation","autonegotiation"],["autonegatiotiation","autonegotiation"],["autonegatiotiations","autonegotiations"],["autonegoatiation","autonegotiation"],["autonegoatiations","autonegotiations"],["autonegoation","autonegotiation"],["autonegoations","autonegotiations"],["autonegociated","autonegotiated"],["autonegociation","autonegotiation"],["autonegociations","autonegotiations"],["autonegogtiation","autonegotiation"],["autonegogtiations","autonegotiations"],["autonegoitation","autonegotiation"],["autonegoitations","autonegotiations"],["autonegoptionsotiation","autonegotiation"],["autonegoptionsotiations","autonegotiations"],["autonegosiation","autonegotiation"],["autonegosiations","autonegotiations"],["autonegotaiation","autonegotiation"],["autonegotaiations","autonegotiations"],["autonegotaition","autonegotiation"],["autonegotaitions","autonegotiations"],["autonegotatiation","autonegotiation"],["autonegotatiations","autonegotiations"],["autonegotation","autonegotiation"],["autonegotations","autonegotiations"],["autonegothiation","autonegotiation"],["autonegothiations","autonegotiations"],["autonegotication","autonegotiation"],["autonegotications","autonegotiations"],["autonegotioation","autonegotiation"],["autonegotioations","autonegotiations"],["autonegotion","autonegotiation"],["autonegotionation","autonegotiation"],["autonegotionations","autonegotiations"],["autonegotions","autonegotiations"],["autonegotiotation","autonegotiation"],["autonegotiotations","autonegotiations"],["autonegotitaion","autonegotiation"],["autonegotitaions","autonegotiations"],["autonegotitation","autonegotiation"],["autonegotitations","autonegotiations"],["autonegotition","autonegotiation"],["autonegotitions","autonegotiations"],["autonegoziation","autonegotiation"],["autonegoziations","autonegotiations"],["autoneogotiation","autonegotiation"],["autoneotiation","autonegotiation"],["autonogotiation","autonegotiation"],["autonymous","autonomous"],["autoonf","autoconf"],["autopsec","autospec"],["autor","author"],["autorealease","autorelease"],["autorisation","authorisation"],["autoritative","authoritative"],["autority","authority"],["autorization","authorization"],["autoropeat","autorepeat"],["autors","authors"],["autosae","autosave"],["autosavegs","autosaves"],["autosaveperodical","autosaveperiodical"],["autosence","autosense"],["autum","autumn"],["auxialiary","auxiliary"],["auxilaries","auxiliaries"],["auxilary","auxiliary"],["auxileries","auxiliaries"],["auxilery","auxiliary"],["auxiliar","auxiliary"],["auxillaries","auxiliaries"],["auxillary","auxiliary"],["auxilleries","auxiliaries"],["auxillery","auxiliary"],["auxilliaries","auxiliaries"],["auxilliary","auxiliary"],["auxiluary","auxiliary"],["auxliliary","auxiliary"],["avaiable","available"],["avaialable","available"],["avaialbale","available"],["avaialbe","available"],["avaialbel","available"],["avaialbility","availability"],["avaialble","available"],["avaiblable","available"],["avaible","available"],["avaiiability","availability"],["avaiiable","available"],["avaiibility","availability"],["avaiible","available"],["avaiilable","available"],["availaable","available"],["availabable","available"],["availabal","available"],["availabale","available"],["availabality","availability"],["availabble","available"],["availabe","available"],["availabed","available"],["availabel","available"],["availabele","available"],["availabelity","availability"],["availabillity","availability"],["availabilty","availability"],["availabke","available"],["availabl","available"],["availabled","available"],["availablen","available"],["availablity","availability"],["availabyl","available"],["availaiable","available"],["availaibility","availability"],["availaible","available"],["availailability","availability"],["availaility","availability"],["availalable","available"],["availalbe","available"],["availalble","available"],["availale","available"],["availaliable","available"],["availality","availability"],["availanle","available"],["availavble","available"],["availavility","availability"],["availavle","available"],["availbable","available"],["availbale","available"],["availbe","available"],["availble","available"],["availeable","available"],["availebilities","availabilities"],["availebility","availability"],["availeble","available"],["availiable","available"],["availibility","availability"],["availibilty","availability"],["availible","available"],["availlable","available"],["avalable","available"],["avalaible","available"],["avalance","avalanche"],["avaliable","available"],["avalibale","available"],["avalible","available"],["avaloable","available"],["avaluate","evaluate"],["avaluated","evaluated"],["avaluates","evaluates"],["avaluating","evaluating"],["avance","advance"],["avanced","advanced"],["avances","advances"],["avancing","advancing"],["avaoid","avoid"],["avaoidable","avoidable"],["avaoided","avoided"],["avarage","average"],["avarageing","averaging"],["avarege","average"],["avation","aviation"],["avcoid","avoid"],["avcoids","avoids"],["avdisories","advisories"],["avdisoriyes","advisories"],["avdisory","advisory"],["avengence","a vengeance"],["averageed","averaged"],["averagine","averaging"],["averload","overload"],["averloaded","overloaded"],["averloads","overloads"],["avertising","advertising"],["avgerage","average"],["aviable","available"],["avialable","available"],["avilability","availability"],["avilable","available"],["aviod","avoid"],["avioded","avoided"],["avioding","avoiding"],["aviods","avoids"],["avisories","advisories"],["avisoriyes","advisories"],["avisory","advisory"],["avod","avoid"],["avoded","avoided"],["avoding","avoiding"],["avods","avoids"],["avoidence","avoidance"],["avoind","avoid"],["avoinded","avoided"],["avoinding","avoiding"],["avoinds","avoids"],["avriable","variable"],["avriables","variables"],["avriant","variant"],["avriants","variants"],["avtive","active"],["awared","awarded"],["aweful","awful"],["awefully","awfully"],["awkard","awkward"],["awming","awning"],["awmings","awnings"],["awnser","answer"],["awnsered","answered"],["awnsers","answers"],["awoid","avoid"],["awsome","awesome"],["awya","away"],["axises","axes"],["axissymmetric","axisymmetric"],["axix","axis"],["axixsymmetric","axisymmetric"],["axpressed","expressed"],["aysnc","async"],["ayways","always"],["bacause","because"],["baceause","because"],["bacground","background"],["bacic","basic"],["backards","backwards"],["backbround","background"],["backbrounds","backgrounds"],["backedn","backend"],["backedns","backends"],["backgorund","background"],["backgorunds","backgrounds"],["backgound","background"],["backgounds","backgrounds"],["backgournd","background"],["backgournds","backgrounds"],["backgrond","background"],["backgronds","backgrounds"],["backgroound","background"],["backgroounds","backgrounds"],["backgroud","background"],["backgroudn","background"],["backgroudns","backgrounds"],["backgrouds","backgrounds"],["backgroun","background"],["backgroung","background"],["backgroungs","backgrounds"],["backgrouns","backgrounds"],["backgrount","background"],["backgrounts","backgrounds"],["backgrouund","background"],["backgrund","background"],["backgrunds","backgrounds"],["backgruond","background"],["backgruonds","backgrounds"],["backlght","backlight"],["backlghting","backlighting"],["backlghts","backlights"],["backned","backend"],["backneds","backends"],["backound","background"],["backounds","backgrounds"],["backpsace","backspace"],["backrefence","backreference"],["backrgound","background"],["backrgounds","backgrounds"],["backround","background"],["backrounds","backgrounds"],["backsapce","backspace"],["backslase","backslash"],["backslases","backslashes"],["backslashs","backslashes"],["backwad","backwards"],["backwardss","backwards"],["backware","backward"],["backwark","backward"],["backwrad","backward"],["bactracking","backtracking"],["bacup","backup"],["baed","based"],["bage","bag"],["bahaving","behaving"],["bahavior","behavior"],["bahavioral","behavioral"],["bahaviors","behaviors"],["bahaviour","behaviour"],["baisc","basic"],["baised","raised"],["bakc","back"],["bakcrefs","backrefs"],["bakends","backends"],["bakground","background"],["bakgrounds","backgrounds"],["bakup","backup"],["bakups","backups"],["bakward","backward"],["bakwards","backwards"],["balacing","balancing"],["balence","balance"],["baloon","balloon"],["baloons","balloons"],["balse","false"],["banannas","bananas"],["bandwdith","bandwidth"],["bandwdiths","bandwidths"],["bandwidht","bandwidth"],["bandwidthm","bandwidth"],["bandwitdh","bandwidth"],["bandwith","bandwidth"],["bankrupcy","bankruptcy"],["banlance","balance"],["banruptcy","bankruptcy"],["barbedos","barbados"],["bariier","barrier"],["barnch","branch"],["barnched","branched"],["barncher","brancher"],["barnchers","branchers"],["barnches","branches"],["barnching","branching"],["barriors","barriers"],["barrriers","barriers"],["barycentic","barycentric"],["basci","basic"],["bascially","basically"],["bascktrack","backtrack"],["basf","base"],["basicallly","basically"],["basicaly","basically"],["basiclly","basically"],["basicly","basically"],["basline","baseline"],["baslines","baselines"],["bassic","basic"],["bassically","basically"],["bastract","abstract"],["bastracted","abstracted"],["bastracter","abstracter"],["bastracting","abstracting"],["bastraction","abstraction"],["bastractions","abstractions"],["bastractly","abstractly"],["bastractness","abstractness"],["bastractor","abstractor"],["bastracts","abstracts"],["bateries","batteries"],["batery","battery"],["battaries","batteries"],["battary","battery"],["bbefore","before"],["bboolean","boolean"],["bbooleans","booleans"],["bcak","back"],["bcause","because"],["beable","be able"],["beacaon","beacon"],["beacause","because"],["beachead","beachhead"],["beacuse","because"],["beaon","beacon"],["bearword","bareword"],["beastiality","bestiality"],["beatiful","beautiful"],["beauracracy","bureaucracy"],["beaurocracy","bureaucracy"],["beaurocratic","bureaucratic"],["beause","because"],["beauti","beauty"],["beautiy","beauty"],["beautyfied","beautified"],["beautyfull","beautiful"],["beaviour","behaviour"],["bebongs","belongs"],["becaause","because"],["becacdd","because"],["becahse","because"],["becamae","became"],["becaouse","because"],["becase","because"],["becasue","because"],["becasuse","because"],["becauae","because"],["becauce","because"],["becaue","because"],["becaues","because"],["becaus","because"],["becausee","because"],["becauseq","because"],["becauses","because"],["becausw","because"],["beccause","because"],["bechmark","benchmark"],["bechmarked","benchmarked"],["bechmarking","benchmarking"],["bechmarks","benchmarks"],["becoem","become"],["becomeing","becoming"],["becomme","become"],["becommes","becomes"],["becomming","becoming"],["becoms","becomes"],["becouse","because"],["becoz","because"],["bector","vector"],["bectors","vectors"],["becuase","because"],["becuse","because"],["becxause","because"],["bedore","before"],["beeings","beings"],["beetween","between"],["beetwen","between"],["beffer","buffer"],["befoer","before"],["befor","before"],["beforehands","beforehand"],["beforere","before"],["befores","before"],["beforing","before"],["befure","before"],["begginer","beginner"],["begginers","beginners"],["beggingin","beginning"],["begginging","beginning"],["begginig","beginning"],["beggining","beginning"],["begginings","beginnings"],["begginnig","beginning"],["begginning","beginning"],["beggins","begins"],["beghavior","behavior"],["beghaviors","behaviors"],["begiinning","beginning"],["beginer","beginner"],["begines","begins"],["begining","beginning"],["beginining","beginning"],["begininings","beginnings"],["begininng","beginning"],["begininngs","beginnings"],["beginn","begin"],["beginnig","beginning"],["beginnin","beginning"],["beginnning","beginning"],["beginnnings","beginnings"],["behabior","behavior"],["behabiors","behaviors"],["behabiour","behaviour"],["behabiours","behaviours"],["behabviour","behaviour"],["behaivior","behavior"],["behaiviour","behaviour"],["behaiviuor","behaviour"],["behaivor","behavior"],["behaivors","behaviors"],["behaivour","behaviour"],["behaivoural","behavioural"],["behaivours","behaviours"],["behavioutr","behaviour"],["behaviro","behavior"],["behaviuor","behaviour"],["behavoir","behavior"],["behavoirs","behaviors"],["behavour","behaviour"],["behavriour","behaviour"],["behavriours","behaviours"],["behinde","behind"],["behvaiour","behaviour"],["behviour","behaviour"],["beigin","begin"],["beiginning","beginning"],["beind","behind"],["beinning","beginning"],["bejond","beyond"],["beleagured","beleaguered"],["beleif","belief"],["beleifable","believable"],["beleifed","believed"],["beleifing","believing"],["beleivable","believable"],["beleive","believe"],["beleived","believed"],["beleives","believes"],["beleiving","believing"],["beliefable","believable"],["beliefed","believed"],["beliefing","believing"],["beligum","belgium"],["beling","belong"],["belivable","believable"],["belive","believe"],["beliveable","believable"],["beliveably","believably"],["beliveble","believable"],["belivebly","believably"],["beliving","believing"],["belligerant","belligerent"],["bellweather","bellwether"],["belog","belong"],["beloging","belonging"],["belogs","belongs"],["belond","belong"],["beloning","belonging"],["belown","belong"],["belwo","below"],["bemusemnt","bemusement"],["benchamarked","benchmarked"],["benchamarking","benchmarking"],["benchamrk","benchmark"],["benchamrked","benchmarked"],["benchamrking","benchmarking"],["benchamrks","benchmarks"],["benchmkar","benchmark"],["benchmkared","benchmarked"],["benchmkaring","benchmarking"],["benchmkars","benchmarks"],["benchs","benches"],["benckmark","benchmark"],["benckmarked","benchmarked"],["benckmarking","benchmarking"],["benckmarks","benchmarks"],["benechmark","benchmark"],["benechmarked","benchmarked"],["benechmarking","benchmarking"],["benechmarks","benchmarks"],["beneeth","beneath"],["benefical","beneficial"],["beneficary","beneficiary"],["benefied","benefited"],["benefitial","beneficial"],["beneits","benefits"],["benetifs","benefits"],["beng","being"],["benhind","behind"],["benificial","beneficial"],["benifit","benefit"],["benifite","benefit"],["benifited","benefited"],["benifitial","beneficial"],["benifits","benefits"],["benig","being"],["beond","beyond"],["berforming","performing"],["bergamont","bergamot"],["Berkley","Berkeley"],["Bernouilli","Bernoulli"],["berween","between"],["besed","based"],["beseige","besiege"],["beseiged","besieged"],["beseiging","besieging"],["besure","be sure"],["beteeen","between"],["beteen","between"],["beter","better"],["beteween","between"],["betrween","between"],["bettern","better"],["bettween","between"],["betwean","between"],["betwee","between"],["betweed","between"],["betweeen","between"],["betweem","between"],["betweend","between"],["betweeness","betweenness"],["betweent","between"],["betwen","between"],["betwene","between"],["betwenn","between"],["betwern","between"],["betwween","between"],["beucase","because"],["beuracracy","bureaucracy"],["beutification","beautification"],["beutiful","beautiful"],["beutifully","beautifully"],["bever","never"],["bevore","before"],["bevorehand","beforehand"],["bevorhand","beforehand"],["beweeen","between"],["beween","between"],["bewteen","between"],["bewteeness","betweenness"],["beyone","beyond"],["beyong","beyond"],["beyound","beyond"],["bffer","buffer"],["bginning","beginning"],["bi-langual","bi-lingual"],["bianries","binaries"],["bianry","binary"],["biappicative","biapplicative"],["biddings","bidding"],["bidimentionnal","bidimensional"],["bidning","binding"],["bidnings","bindings"],["bigallic","bigalloc"],["bigining","beginning"],["biginning","beginning"],["biinary","binary"],["bilangual","bilingual"],["bilateraly","bilaterally"],["billingualism","bilingualism"],["billon","billion"],["bimask","bitmask"],["bimillenia","bimillennia"],["bimillenial","bimillennial"],["bimillenium","bimillennium"],["bimontly","bimonthly"],["binairy","binary"],["binanary","binary"],["binar","binary"],["binay","binary"],["bindins","bindings"],["binidng","binding"],["binominal","binomial"],["binraries","binaries"],["binrary","binary"],["bion","bio"],["birght","bright"],["birghten","brighten"],["birghter","brighter"],["birghtest","brightest"],["birghtness","brightness"],["biridectionality","bidirectionality"],["bisct","bisect"],["bisines","business"],["bisiness","business"],["bisnes","business"],["bisness","business"],["bistream","bitstream"],["bisunes","business"],["bisuness","business"],["bitamps","bitmaps"],["bitap","bitmap"],["bitfileld","bitfield"],["bitfilelds","bitfields"],["bitis","bits"],["bitmast","bitmask"],["bitnaps","bitmaps"],["bitwise-orring","bitwise-oring"],["bizare","bizarre"],["bizarely","bizarrely"],["bizzare","bizarre"],["bject","object"],["bjects","objects"],["blackslashes","backslashes"],["blaclist","blacklist"],["blaim","blame"],["blaimed","blamed"],["blanace","balance"],["blancked","blanked"],["blatent","blatant"],["blatently","blatantly"],["blbos","blobs"],["blcok","block"],["blcoks","blocks"],["bleading","bleeding"],["blessd","blessed"],["blessure","blessing"],["bletooth","bluetooth"],["bleutooth","bluetooth"],["blindy","blindly"],["Blitzkreig","Blitzkrieg"],["bload","bloat"],["bloaded","bloated"],["blocack","blockack"],["bloccks","blocks"],["blocekd","blocked"],["blockhain","blockchain"],["blockhains","blockchains"],["blockin","blocking"],["blockse","blocks"],["bloddy","bloody"],["blodk","block"],["bloek","bloke"],["bloekes","blokes"],["bloeks","blokes"],["bloekss","blokes"],["blohted","bloated"],["blokcer","blocker"],["blokchain","blockchain"],["blokchains","blockchains"],["blokcing","blocking"],["bloked","blocked"],["bloker","blocker"],["bloking","blocking"],["blong","belong"],["blonged","belonged"],["blonging","belonging"],["blongs","belongs"],["bloock","block"],["bloocks","blocks"],["bloted","bloated"],["bluestooth","bluetooth"],["bluetooh","bluetooth"],["bluetoot","bluetooth"],["bluetootn","bluetooth"],["blured","blurred"],["blutooth","bluetooth"],["bnecause","because"],["boads","boards"],["boardcast","broadcast"],["bocome","become"],["boddy","body"],["bodiese","bodies"],["bodydbuilder","bodybuilder"],["boelean","boolean"],["boeleans","booleans"],["boffer","buffer"],["bofore","before"],["bofy","body"],["boggus","bogus"],["bogos","bogus"],["bointer","pointer"],["bolean","boolean"],["boleen","boolean"],["bolor","color"],["bombardement","bombardment"],["bombarment","bombardment"],["bondary","boundary"],["Bonnano","Bonanno"],["bood","boot"],["bookeeping","bookkeeping"],["bookkeeing","bookkeeping"],["bookkeeiping","bookkeeping"],["bookkepp","bookkeep"],["bookmakr","bookmark"],["bookmar","bookmark"],["booleam","boolean"],["booleamn","boolean"],["booleamns","booleans"],["booleams","booleans"],["booleanss","booleans"],["booleen","boolean"],["booleens","booleans"],["boolen","boolean"],["boolens","booleans"],["booltloader","bootloader"],["booltloaders","bootloaders"],["boomark","bookmark"],["boomarks","bookmarks"],["boook","book"],["booolean","boolean"],["boooleans","booleans"],["booshelf","bookshelf"],["booshelves","bookshelves"],["boostrap","bootstrap"],["boostrapped","bootstrapped"],["boostrapping","bootstrapping"],["boostraps","bootstraps"],["booteek","boutique"],["bootlaoder","bootloader"],["bootlaoders","bootloaders"],["bootoloader","bootloader"],["bootom","bottom"],["bootraping","bootstrapping"],["bootsram","bootram"],["bootsrap","bootstrap"],["bootstap","bootstrap"],["bootstapped","bootstrapped"],["bootstapping","bootstrapping"],["bootstaps","bootstraps"],["booundaries","boundaries"],["booundary","boundary"],["boquet","bouquet"],["borad","board"],["boradcast","broadcast"],["bording","boarding"],["bordreline","borderline"],["bordrelines","borderlines"],["borgwasy","bourgeoisie"],["borke","broke"],["borken","broken"],["borow","borrow"],["borwser","browsers"],["borwsers","browsers"],["bothe","both"],["boths","both"],["botifies","notifies"],["bottem","bottom"],["bottlenck","bottleneck"],["bottlencks","bottlenecks"],["bottlenect","bottleneck"],["bottlenects","bottlenecks"],["bottlneck","bottleneck"],["bottlnecks","bottlenecks"],["bottomborde","bottomborder"],["bottome","bottom"],["bottomn","bottom"],["bottonm","bottom"],["botttom","bottom"],["bouce","bounce"],["bouces","bounces"],["boudaries","boundaries"],["boudary","boundary"],["bouding","bounding"],["boudnaries","boundaries"],["boudnary","boundary"],["bouds","bounds"],["bouind","bound"],["bouinded","bounded"],["bouinding","bounding"],["bouinds","bounds"],["boun","bound"],["bounaaries","boundaries"],["bounaary","boundary"],["bounad","bound"],["bounadaries","boundaries"],["bounadary","boundary"],["bounaded","bounded"],["bounading","bounding"],["bounadries","boundaries"],["bounadry","boundary"],["bounads","bounds"],["bounardies","boundaries"],["bounardy","boundary"],["bounaries","boundaries"],["bounary","boundary"],["bounbdaries","boundaries"],["bounbdary","boundary"],["boundares","boundaries"],["boundaryi","boundary"],["boundarys","boundaries"],["bounday","boundary"],["boundays","boundaries"],["bounderies","boundaries"],["boundery","boundary"],["boundig","bounding"],["boundimg","bounding"],["boundin","bounding"],["boundrary","boundary"],["boundries","boundaries"],["boundry","boundary"],["bounduaries","boundaries"],["bouned","bounded"],["boungaries","boundaries"],["boungary","boundary"],["boungin","bounding"],["boungind","bounding"],["bounhdaries","boundaries"],["bounhdary","boundary"],["bounidng","bounding"],["bouning","bounding"],["bounnd","bound"],["bounndaries","boundaries"],["bounndary","boundary"],["bounnded","bounded"],["bounnding","bounding"],["bounnds","bounds"],["bounradies","boundaries"],["bounrady","boundary"],["bounraies","boundaries"],["bounraries","boundaries"],["bounrary","boundary"],["bounray","boundary"],["bouns","bounds"],["bounsaries","boundaries"],["bounsary","boundary"],["bounsd","bounds"],["bount","bound"],["bountries","boundaries"],["bountry","boundary"],["bounudaries","boundaries"],["bounudary","boundary"],["bounus","bonus"],["bouqet","bouquet"],["bouund","bound"],["bouunded","bounded"],["bouunding","bounding"],["bouunds","bounds"],["bouy","buoy"],["bouyancy","buoyancy"],["bouyant","buoyant"],["boyant","buoyant"],["boycot","boycott"],["bracese","braces"],["brach","branch"],["brackeds","brackets"],["bracketwith","bracket with"],["brackground","background"],["bradcast","broadcast"],["brakpoint","breakpoint"],["brakpoints","breakpoints"],["branchces","branches"],["brancheswith","branches with"],["branchs","branches"],["branchsi","branches"],["branck","branch"],["branckes","branches"],["brancket","bracket"],["branckets","brackets"],["brane","brain"],["braodcast","broadcast"],["braodcasted","broadcasted"],["braodcasts","broadcasts"],["Brasillian","Brazilian"],["brazeer","brassiere"],["brazillian","Brazilian"],["breakes","breaks"],["breakthough","breakthrough"],["breakthroughts","breakthroughs"],["breakthruogh","breakthrough"],["breakthruoghs","breakthroughs"],["breal","break"],["breefly","briefly"],["brefore","before"],["breif","brief"],["breifly","briefly"],["brekpoint","breakpoint"],["brekpoints","breakpoints"],["breshed","brushed"],["breshes","brushes"],["breshing","brushing"],["brethen","brethren"],["bretheren","brethren"],["brfore","before"],["bridg","bridge"],["brievely","briefly"],["brievety","brevity"],["brigde","bridge"],["brige","bridge"],["briges","bridges"],["brighness","brightness"],["brightnesss","brightness"],["brigth","bright"],["brigthnes","brightness"],["brigthness","brightness"],["briliant","brilliant"],["brilinear","bilinear"],["brillant","brilliant"],["brimestone","brimstone"],["bringin","bringing"],["bringtofont","bringtofront"],["brite","bright"],["briten","brighten"],["britened","brightened"],["britener","brightener"],["briteners","brighteners"],["britenes","brightenes"],["britening","brightening"],["briter","brighter"],["Britian","Britain"],["Brittish","British"],["brnach","branch"],["brnaches","branches"],["broacast","broadcast"],["broacasted","broadcast"],["broacasting","broadcasting"],["broacasts","broadcasts"],["broadacasting","broadcasting"],["broadcas","broadcast"],["broadcase","broadcast"],["broadcasti","broadcast"],["broadcat","broadcast"],["broady","broadly"],["broardcast","broadcast"],["broblematic","problematic"],["brocher","brochure"],["brocken","broken"],["brockend","broken"],["brockened","broken"],["brocolee","broccoli"],["brodcast","broadcast"],["broked","broken"],["brokem","broken"],["brokend","broken"],["brokened","broken"],["brokeness","brokenness"],["bronken","broken"],["brosable","browsable"],["broser","browser"],["brosers","browsers"],["brosing","browsing"],["broswable","browsable"],["broswe","browse"],["broswed","browsed"],["broswer","browser"],["broswers","browsers"],["broswing","browsing"],["brower","browser"],["browers","browsers"],["browing","browsing"],["browseable","browsable"],["browswable","browsable"],["browswe","browse"],["browswed","browsed"],["browswer","browser"],["browswers","browsers"],["browswing","browsing"],["brutaly","brutally"],["brwosable","browsable"],["brwose","browse"],["brwosed","browsed"],["brwoser","browser"],["brwosers","browsers"],["brwosing","browsing"],["btye","byte"],["btyes","bytes"],["buad","baud"],["bubbless","bubbles"],["Buddah","Buddha"],["Buddist","Buddhist"],["bufefr","buffer"],["bufer","buffer"],["bufers","buffers"],["buffereed","buffered"],["bufferent","buffered"],["bufferes","buffers"],["bufferred","buffered"],["buffeur","buffer"],["bufffer","buffer"],["bufffers","buffers"],["buffor","buffer"],["buffors","buffers"],["buffr","buffer"],["buffred","buffered"],["buffring","buffering"],["bufufer","buffer"],["buggest","biggest"],["bugous","bogus"],["buguous","bogus"],["bugus","bogus"],["buid","build"],["buider","builder"],["buiders","builders"],["buiding","building"],["buidl","build"],["buidling","building"],["buidlings","buildings"],["buidls","builds"],["buiild","build"],["buik","bulk"],["build-dependancies","build-dependencies"],["build-dependancy","build-dependency"],["build-in","built-in"],["builded","built"],["buildpackge","buildpackage"],["buildpackges","buildpackages"],["builing","building"],["builings","buildings"],["buillt","built"],["built-time","build-time"],["builter","builder"],["builters","builders"],["buinseses","businesses"],["buinsess","business"],["buinsesses","businesses"],["buipd","build"],["buisness","business"],["buisnessman","businessman"],["buissiness","business"],["buissinesses","businesses"],["buit","built"],["buitin","builtin"],["buitins","builtins"],["buitlin","builtin"],["buitlins","builtins"],["buitton","button"],["buittons","buttons"],["buld","build"],["bulding","building"],["bulds","builds"],["bulid","build"],["buliding","building"],["bulids","builds"],["bulit","built"],["bulitin","built-in"],["bulle","bullet"],["bulletted","bulleted"],["bulnerabilities","vulnerabilities"],["bulnerability","vulnerability"],["bulnerable","vulnerable"],["bult","built"],["bult-in","built-in"],["bultin","builtin"],["bumby","bumpy"],["bumpded","bumped"],["bumpt","bump"],["bumpted","bumped"],["bumpter","bumper"],["bumpting","bumping"],["bundel","bundle"],["bundeled","bundled"],["bundels","bundles"],["buoancy","buoyancy"],["bureauracy","bureaucracy"],["burocratic","bureaucratic"],["burried","buried"],["burtst","burst"],["busines","business"],["busness","business"],["bussiness","business"],["bussy","busy"],["buton","button"],["butons","buttons"],["butterly","butterfly"],["buttong","button"],["buttonn","button"],["buttonns","buttons"],["buttosn","buttons"],["buttton","button"],["butttons","buttons"],["buufers","buffers"],["buuild","build"],["buuilds","builds"],["bve","be"],["bwtween","between"],["bypas","bypass"],["bypased","bypassed"],["bypasing","bypassing"],["bytetream","bytestream"],["bytetreams","bytestreams"],["cabint","cabinet"],["cabints","cabinets"],["cacahe","cache"],["cacahes","caches"],["cace","cache"],["cachable","cacheable"],["cacheed","cached"],["cacheing","caching"],["cachline","cacheline"],["cacl","calc"],["caclate","calculate"],["cacluate","calculate"],["cacluated","calculated"],["cacluater","calculator"],["cacluates","calculates"],["cacluating","calculating"],["cacluation","calculation"],["cacluations","calculations"],["cacluator","calculator"],["caclucate","calculate"],["caclucation","calculation"],["caclucations","calculations"],["caclucator","calculator"],["caclulate","calculate"],["caclulated","calculated"],["caclulates","calculates"],["caclulating","calculating"],["caclulation","calculation"],["caclulations","calculations"],["caculate","calculate"],["caculated","calculated"],["caculater","calculator"],["caculates","calculates"],["caculating","calculating"],["caculation","calculation"],["caculations","calculations"],["caculator","calculator"],["cacuses","caucuses"],["cadidate","candidate"],["caefully","carefully"],["Caesarian","Caesarean"],["cahacter","character"],["cahacters","characters"],["cahange","change"],["cahanged","changed"],["cahanges","changes"],["cahanging","changing"],["cahannel","channel"],["caharacter","character"],["caharacters","characters"],["caharcter","character"],["caharcters","characters"],["cahc","cache"],["cahce","cache"],["cahced","cached"],["cahces","caches"],["cahche","cache"],["cahchedb","cachedb"],["cahches","caches"],["cahcing","caching"],["cahcs","caches"],["cahdidate","candidate"],["cahdidates","candidates"],["cahe","cache"],["cahes","caches"],["cahgne","change"],["cahgned","changed"],["cahgner","changer"],["cahgners","changers"],["cahgnes","changes"],["cahgning","changing"],["cahhel","channel"],["cahhels","channels"],["cahined","chained"],["cahing","caching"],["cahining","chaining"],["cahnge","change"],["cahnged","changed"],["cahnges","changes"],["cahnging","changing"],["cahnnel","channel"],["cahnnels","channels"],["cahr","char"],["cahracter","character"],["cahracters","characters"],["cahrging","charging"],["cahrs","chars"],["calaber","caliber"],["calalog","catalog"],["calback","callback"],["calbirate","calibrate"],["calbirated","calibrated"],["calbirates","calibrates"],["calbirating","calibrating"],["calbiration","calibration"],["calbirations","calibrations"],["calbirator","calibrator"],["calbirators","calibrators"],["calcable","calculable"],["calcalate","calculate"],["calciulate","calculate"],["calciulating","calculating"],["calclation","calculation"],["calcluate","calculate"],["calcluated","calculated"],["calcluates","calculates"],["calclulate","calculate"],["calclulated","calculated"],["calclulates","calculates"],["calclulating","calculating"],["calclulation","calculation"],["calclulations","calculations"],["calcualate","calculate"],["calcualated","calculated"],["calcualates","calculates"],["calcualating","calculating"],["calcualation","calculation"],["calcualations","calculations"],["calcualte","calculate"],["calcualted","calculated"],["calcualter","calculator"],["calcualtes","calculates"],["calcualting","calculating"],["calcualtion","calculation"],["calcualtions","calculations"],["calcualtor","calculator"],["calcuate","calculate"],["calcuated","calculated"],["calcuates","calculates"],["calcuation","calculation"],["calcuations","calculations"],["calculaion","calculation"],["calculataed","calculated"],["calculater","calculator"],["calculatted","calculated"],["calculatter","calculator"],["calculattion","calculation"],["calculattions","calculations"],["calculaution","calculation"],["calculautions","calculations"],["calculcate","calculate"],["calculcation","calculation"],["calculed","calculated"],["calculs","calculus"],["calcultate","calculate"],["calcultated","calculated"],["calcultater","calculator"],["calcultating","calculating"],["calcultator","calculator"],["calculting","calculating"],["calculuations","calculations"],["calcurate","calculate"],["calcurated","calculated"],["calcurates","calculates"],["calcurating","calculating"],["calcutate","calculate"],["calcutated","calculated"],["calcutates","calculates"],["calcutating","calculating"],["caleed","called"],["caleee","callee"],["calees","callees"],["caler","caller"],["calescing","coalescing"],["caliased","aliased"],["calibraiton","calibration"],["calibraitons","calibrations"],["calibrte","calibrate"],["calibrtion","calibration"],["caligraphy","calligraphy"],["calilng","calling"],["caliming","claiming"],["callabck","callback"],["callabcks","callbacks"],["callack","callback"],["callbacl","callback"],["callbacsk","callback"],["callbak","callback"],["callbakc","callback"],["callbakcs","callbacks"],["callbck","callback"],["callcack","callback"],["callcain","callchain"],["calld","called"],["calle","called"],["callef","called"],["callibrate","calibrate"],["callibrated","calibrated"],["callibrates","calibrates"],["callibrating","calibrating"],["callibration","calibration"],["callibrations","calibrations"],["callibri","calibri"],["callig","calling"],["callint","calling"],["callled","called"],["calllee","callee"],["calloed","called"],["callsr","calls"],["calsses","classes"],["calucalte","calculate"],["calucalted","calculated"],["calucaltes","calculates"],["calucalting","calculating"],["calucaltion","calculation"],["calucaltions","calculations"],["calucate","calculate"],["caluclate","calculate"],["caluclated","calculated"],["caluclater","calculator"],["caluclates","calculates"],["caluclating","calculating"],["caluclation","calculation"],["caluclations","calculations"],["caluclator","calculator"],["caluculate","calculate"],["caluculated","calculated"],["caluculates","calculates"],["caluculating","calculating"],["caluculation","calculation"],["caluculations","calculations"],["calue","value"],["calulate","calculate"],["calulated","calculated"],["calulater","calculator"],["calulates","calculates"],["calulating","calculating"],["calulation","calculation"],["calulations","calculations"],["Cambrige","Cambridge"],["camoflage","camouflage"],["camoflague","camouflage"],["campagin","campaign"],["campain","campaign"],["campaing","campaign"],["campains","campaigns"],["camparing","comparing"],["can;t","can't"],["canadan","canadian"],["canbe","can be"],["cancelaltion","cancellation"],["cancelation","cancellation"],["cancelations","cancellations"],["canceles","cancels"],["cancell","cancel"],["cancelles","cancels"],["cances","cancel"],["cancl","cancel"],["cancle","cancel"],["cancled","canceled"],["candadate","candidate"],["candadates","candidates"],["candiate","candidate"],["candiates","candidates"],["candidat","candidate"],["candidats","candidates"],["candidiate","candidate"],["candidiates","candidates"],["candinate","candidate"],["candinates","candidates"],["canditate","candidate"],["canditates","candidates"],["cange","change"],["canged","changed"],["canges","changes"],["canging","changing"],["canidate","candidate"],["canidates","candidates"],["cann't","can't"],["cann","can"],["cannister","canister"],["cannisters","canisters"],["cannnot","cannot"],["cannobt","cannot"],["cannonical","canonical"],["cannonicalize","canonicalize"],["cannont","cannot"],["cannotation","connotation"],["cannotations","connotations"],["cannott","cannot"],["canonalize","canonicalize"],["canonalized","canonicalized"],["canonalizes","canonicalizes"],["canonalizing","canonicalizing"],["canoncial","canonical"],["canonicalizations","canonicalization"],["canonival","canonical"],["canot","cannot"],["cant'","can't"],["cant't","can't"],["cant;","can't"],["cantact","contact"],["cantacted","contacted"],["cantacting","contacting"],["cantacts","contacts"],["canvase","canvas"],["caost","coast"],["capabable","capable"],["capabicity","capability"],["capabiities","capabilities"],["capabiity","capability"],["capabilies","capabilities"],["capabiliites","capabilities"],["capabilites","capabilities"],["capabilitieis","capabilities"],["capabilitiies","capabilities"],["capabilitires","capabilities"],["capabilitiy","capability"],["capabillity","capability"],["capabilties","capabilities"],["capabiltity","capability"],["capabilty","capability"],["capabitilies","capabilities"],["capablilities","capabilities"],["capablities","capabilities"],["capablity","capability"],["capaciy","capacity"],["capalize","capitalize"],["capalized","capitalized"],["capapbilities","capabilities"],["capatibilities","capabilities"],["capbability","capability"],["capbale","capable"],["capela","capella"],["caperbility","capability"],["Capetown","Cape Town"],["capibilities","capabilities"],["capible","capable"],["capitolize","capitalize"],["cappable","capable"],["captable","capable"],["captial","capital"],["captrure","capture"],["captued","captured"],["capturd","captured"],["caputre","capture"],["caputred","captured"],["caputres","captures"],["caputure","capture"],["carachter","character"],["caracter","character"],["caractere","character"],["caracteristic","characteristic"],["caracterized","characterized"],["caracters","characters"],["carbus","cardbus"],["carefuly","carefully"],["careing","caring"],["carfull","careful"],["cariage","carriage"],["caridge","carriage"],["cariier","carrier"],["carismatic","charismatic"],["Carmalite","Carmelite"],["Carnagie","Carnegie"],["Carnagie-Mellon","Carnegie-Mellon"],["Carnigie","Carnegie"],["Carnigie-Mellon","Carnegie-Mellon"],["carniverous","carnivorous"],["caronavirus","coronavirus"],["caronaviruses","coronaviruses"],["carreer","career"],["carreid","carried"],["carrers","careers"],["carret","caret"],["carriadge","carriage"],["Carribbean","Caribbean"],["Carribean","Caribbean"],["carrien","carrier"],["carrige","carriage"],["carrrier","carrier"],["carryintg","carrying"],["carryng","carrying"],["cartain","certain"],["cartdridge","cartridge"],["cartensian","Cartesian"],["Carthagian","Carthaginian"],["carthesian","cartesian"],["carthographer","cartographer"],["cartiesian","cartesian"],["cartilege","cartilage"],["cartilidge","cartilage"],["cartrige","cartridge"],["caryy","carry"],["cascace","cascade"],["case-insensative","case-insensitive"],["case-insensetive","case-insensitive"],["case-insensistive","case-insensitive"],["case-insensitiv","case-insensitive"],["case-insensitivy","case-insensitivity"],["case-insensitve","case-insensitive"],["case-insenstive","case-insensitive"],["case-insentive","case-insensitive"],["case-insentivite","case-insensitive"],["case-insesitive","case-insensitive"],["case-intensitive","case-insensitive"],["case-sensative","case-sensitive"],["case-sensetive","case-sensitive"],["case-sensistive","case-sensitive"],["case-sensitiv","case-sensitive"],["case-sensitve","case-sensitive"],["case-senstive","case-sensitive"],["case-sentive","case-sensitive"],["case-sentivite","case-sensitive"],["case-sesitive","case-sensitive"],["case-unsensitive","case-insensitive"],["caseinsensative","case-insensitive"],["caseinsensetive","case-insensitive"],["caseinsensistive","case-insensitive"],["caseinsensitiv","case-insensitive"],["caseinsensitve","case-insensitive"],["caseinsenstive","case-insensitive"],["caseinsentive","case-insensitive"],["caseinsentivite","case-insensitive"],["caseinsesitive","case-insensitive"],["caseintensitive","case-insensitive"],["caselessely","caselessly"],["casesensative","case-sensitive"],["casesensetive","casesensitive"],["casesensistive","case-sensitive"],["casesensitiv","case-sensitive"],["casesensitve","case-sensitive"],["casesenstive","case-sensitive"],["casesentive","case-sensitive"],["casesentivite","case-sensitive"],["casesesitive","case-sensitive"],["casette","cassette"],["cashe","cache"],["casion","caisson"],["caspule","capsule"],["caspules","capsules"],["cassawory","cassowary"],["cassowarry","cassowary"],["casue","cause"],["casued","caused"],["casues","causes"],["casuing","causing"],["casulaties","casualties"],["casulaty","casualty"],["cataalogue","catalogue"],["catagori","category"],["catagories","categories"],["catagorization","categorization"],["catagorizations","categorizations"],["catagorized","categorized"],["catagory","category"],["catapillar","caterpillar"],["catapillars","caterpillars"],["catapiller","caterpillar"],["catapillers","caterpillars"],["catastronphic","catastrophic"],["catastropic","catastrophic"],["catastropically","catastrophically"],["catastrphic","catastrophic"],["catche","catch"],["catched","caught"],["catchi","catch"],["catchs","catches"],["categogical","categorical"],["categogically","categorically"],["categogies","categories"],["categogy","category"],["cateogrical","categorical"],["cateogrically","categorically"],["cateogries","categories"],["cateogry","category"],["catepillar","caterpillar"],["catepillars","caterpillars"],["catergorize","categorize"],["catergorized","categorized"],["caterpilar","caterpillar"],["caterpilars","caterpillars"],["caterpiller","caterpillar"],["caterpillers","caterpillars"],["catgorical","categorical"],["catgorically","categorically"],["catgories","categories"],["catgory","category"],["cathlic","catholic"],["catholocism","catholicism"],["catloag","catalog"],["catloaged","cataloged"],["catloags","catalogs"],["catory","factory"],["catpture","capture"],["catpure","capture"],["catpured","captured"],["catpures","captures"],["catterpilar","caterpillar"],["catterpilars","caterpillars"],["catterpillar","caterpillar"],["catterpillars","caterpillars"],["cattleship","battleship"],["caucasion","caucasian"],["cauched","caught"],["caugt","caught"],["cauhgt","caught"],["cauing","causing"],["causees","causes"],["causion","caution"],["causioned","cautioned"],["causions","cautions"],["causious","cautious"],["cavaet","caveat"],["cavaets","caveats"],["ccahe","cache"],["ccale","scale"],["ccertificate","certificate"],["ccertificated","certificated"],["ccertificates","certificates"],["ccertification","certification"],["ccessible","accessible"],["cche","cache"],["cconfiguration","configuration"],["ccordinate","coordinate"],["ccordinates","coordinates"],["ccordinats","coordinates"],["ccoutant","accountant"],["ccpcheck","cppcheck"],["ccurred","occurred"],["ccustom","custom"],["ccustoms","customs"],["cdecompress","decompress"],["ceartype","cleartype"],["Ceasar","Caesar"],["ceate","create"],["ceated","created"],["ceates","creates"],["ceating","creating"],["ceation","creation"],["ceck","check"],["cecked","checked"],["cecker","checker"],["cecking","checking"],["cecks","checks"],["cedential","credential"],["cedentials","credentials"],["cehck","check"],["cehcked","checked"],["cehcker","checker"],["cehcking","checking"],["cehcks","checks"],["Celcius","Celsius"],["celles","cells"],["cellpading","cellpadding"],["cellst","cells"],["cellxs","cells"],["celsuis","celsius"],["cementary","cemetery"],["cemetarey","cemetery"],["cemetaries","cemeteries"],["cemetary","cemetery"],["cenario","scenario"],["cenarios","scenarios"],["cencter","center"],["cencus","census"],["cengter","center"],["censequence","consequence"],["centain","certain"],["cententenial","centennial"],["centerd","centered"],["centisencond","centisecond"],["centisenconds","centiseconds"],["centrifugeable","centrifugable"],["centrigrade","centigrade"],["centriod","centroid"],["centriods","centroids"],["centruies","centuries"],["centruy","century"],["centuties","centuries"],["centuty","century"],["cerain","certain"],["cerainly","certainly"],["cerainty","certainty"],["cerate","create"],["cereates","creates"],["cerimonial","ceremonial"],["cerimonies","ceremonies"],["cerimonious","ceremonious"],["cerimony","ceremony"],["ceromony","ceremony"],["certaily","certainly"],["certaincy","certainty"],["certainity","certainty"],["certaint","certain"],["certaion","certain"],["certan","certain"],["certficate","certificate"],["certficated","certificated"],["certficates","certificates"],["certfication","certification"],["certfications","certifications"],["certficiate","certificate"],["certficiated","certificated"],["certficiates","certificates"],["certficiation","certification"],["certficiations","certifications"],["certfied","certified"],["certfy","certify"],["certian","certain"],["certianly","certainly"],["certicate","certificate"],["certicated","certificated"],["certicates","certificates"],["certication","certification"],["certicicate","certificate"],["certifacte","certificate"],["certifacted","certificated"],["certifactes","certificates"],["certifaction","certification"],["certifcate","certificate"],["certifcated","certificated"],["certifcates","certificates"],["certifcation","certification"],["certifciate","certificate"],["certifciated","certificated"],["certifciates","certificates"],["certifciation","certification"],["certifiate","certificate"],["certifiated","certificated"],["certifiates","certificates"],["certifiating","certificating"],["certifiation","certification"],["certifiations","certifications"],["certificat","certificate"],["certificatd","certificated"],["certificaton","certification"],["certificats","certificates"],["certifice","certificate"],["certificed","certificated"],["certifices","certificates"],["certificion","certification"],["certificste","certificate"],["certificsted","certificated"],["certificstes","certificates"],["certificsting","certificating"],["certificstion","certification"],["certifificate","certificate"],["certifificated","certificated"],["certifificates","certificates"],["certifification","certification"],["certiticate","certificate"],["certiticated","certificated"],["certiticates","certificates"],["certitication","certification"],["cetain","certain"],["cetainly","certainly"],["cetainty","certainty"],["cetrainly","certainly"],["cetting","setting"],["Cgywin","Cygwin"],["chaarges","charges"],["chacacter","character"],["chacacters","characters"],["chache","cache"],["chached","cached"],["chacheline","cacheline"],["chaeck","check"],["chaecked","checked"],["chaecker","checker"],["chaecking","checking"],["chaecks","checks"],["chagne","change"],["chagned","changed"],["chagnes","changes"],["chahged","changed"],["chahging","changing"],["chaied","chained"],["chaing","chain"],["chalenging","challenging"],["challanage","challenge"],["challange","challenge"],["challanged","challenged"],["challanges","challenges"],["challege","challenge"],["chambre","chamber"],["chambres","chambers"],["Champange","Champagne"],["chanage","change"],["chanaged","changed"],["chanager","changer"],["chanages","changes"],["chanaging","changing"],["chanceled","canceled"],["chanceling","canceling"],["chanched","changed"],["chaneged","changed"],["chaneging","changing"],["chanel","channel"],["chanell","channel"],["chanels","channels"],["changable","changeable"],["changeble","changeable"],["changeing","changing"],["changge","change"],["changged","changed"],["changgeling","changeling"],["changges","changes"],["changlog","changelog"],["changuing","changing"],["chanined","chained"],["chaninging","changing"],["chanllenge","challenge"],["chanllenging","challenging"],["channael","channel"],["channe","channel"],["channeles","channels"],["channl","channel"],["channle","channel"],["channles","channels"],["channnel","channel"],["channnels","channels"],["chanses","chances"],["chaper","chapter"],["characaters","characters"],["characer","character"],["characers","characters"],["characeter","character"],["characeters","characters"],["characetrs","characters"],["characher","character"],["charachers","characters"],["charachter","character"],["charachters","characters"],["characstyle","charstyle"],["charactar","character"],["charactaristic","characteristic"],["charactaristics","characteristics"],["charactars","characters"],["characte","character"],["charactear","character"],["charactears","characters"],["characted","character"],["characteds","characters"],["characteer","character"],["characteers","characters"],["characteisation","characterisation"],["characteization","characterization"],["characteor","character"],["characteors","characters"],["characterclasses","character classes"],["characteres","characters"],["characterisic","characteristic"],["characterisically","characteristically"],["characterisicly","characteristically"],["characterisics","characteristics"],["characterisitic","characteristic"],["characterisitics","characteristics"],["characteristicly","characteristically"],["characteritic","characteristic"],["characteritics","characteristics"],["characteritisc","characteristic"],["characteritiscs","characteristics"],["charactersistic","characteristic"],["charactersistically","characteristically"],["charactersistics","characteristics"],["charactersitic","characteristic"],["charactersm","characters"],["characterss","characters"],["characterstic","characteristic"],["characterstically","characteristically"],["characterstics","characteristics"],["charactertistic","characteristic"],["charactertistically","characteristically"],["charactertistics","characteristics"],["charactes","characters"],["charactet","character"],["characteter","character"],["characteteristic","characteristic"],["characteteristics","characteristics"],["characteters","characters"],["charactetistic","characteristic"],["charactetistics","characteristics"],["charactetr","character"],["charactetrs","characters"],["charactets","characters"],["characther","character"],["charactiristic","characteristic"],["charactiristically","characteristically"],["charactiristics","characteristics"],["charactor","character"],["charactors","characters"],["charactristic","characteristic"],["charactristically","characteristically"],["charactristics","characteristics"],["charactrs","characters"],["characts","characters"],["characture","character"],["charakter","character"],["charakters","characters"],["chararacter","character"],["chararacters","characters"],["chararcter","character"],["chararcters","characters"],["charas","chars"],["charascter","character"],["charascters","characters"],["charasmatic","charismatic"],["charater","character"],["charaterize","characterize"],["charaterized","characterized"],["charaters","characters"],["charator","character"],["charators","characters"],["charcater","character"],["charcter","character"],["charcteristic","characteristic"],["charcteristics","characteristics"],["charcters","characters"],["charctor","character"],["charctors","characters"],["charecter","character"],["charecters","characters"],["charector","character"],["chargind","charging"],["charicter","character"],["charicters","characters"],["charictor","character"],["charictors","characters"],["chariman","chairman"],["charistics","characteristics"],["charizma","charisma"],["chartroose","chartreuse"],["chassy","chassis"],["chatacter","character"],["chatacters","characters"],["chatch","catch"],["chater","chapter"],["chawk","chalk"],["chcek","check"],["chceked","checked"],["chceking","checking"],["chceks","checks"],["chck","check"],["chckbox","checkbox"],["cheapeast","cheapest"],["cheatta","cheetah"],["chec","check"],["checbox","checkbox"],["checboxes","checkboxes"],["checg","check"],["checged","checked"],["checheckpoit","checkpoint"],["checheckpoits","checkpoints"],["cheched","checked"],["cheching","checking"],["chechk","check"],["chechs","checks"],["checkalaises","checkaliases"],["checkcsum","checksum"],["checkd","checked"],["checkes","checks"],["checket","checked"],["checkk","check"],["checkng","checking"],["checkoslovakia","czechoslovakia"],["checkox","checkbox"],["checkpoing","checkpoint"],["checkstum","checksum"],["checkstuming","checksumming"],["checkstumming","checksumming"],["checkstums","checksums"],["checksume","checksum"],["checksumed","checksummed"],["checksuming","checksumming"],["checkt","checked"],["checkum","checksum"],["checkums","checksums"],["checkuot","checkout"],["checl","check"],["checled","checked"],["checling","checking"],["checls","checks"],["cheduling","scheduling"],["cheeper","cheaper"],["cheeta","cheetah"],["cheif","chief"],["cheifs","chiefs"],["chek","check"],["chekc","check"],["chekcing","checking"],["chekd","checked"],["cheked","checked"],["chekers","checkers"],["cheking","checking"],["cheks","checks"],["cheksum","checksum"],["cheksums","checksums"],["chello","cello"],["chemcial","chemical"],["chemcially","chemically"],["chemestry","chemistry"],["chemicaly","chemically"],["chenged","changed"],["chennel","channel"],["cherch","church"],["cherchs","churches"],["cherck","check"],["chercking","checking"],["chercks","checks"],["chescksums","checksums"],["chgange","change"],["chganged","changed"],["chganges","changes"],["chganging","changing"],["chidren","children"],["childbird","childbirth"],["childen","children"],["childeren","children"],["childern","children"],["childlren","children"],["chiledren","children"],["chilren","children"],["chineese","Chinese"],["chinense","Chinese"],["chinesse","Chinese"],["chipersuite","ciphersuite"],["chipersuites","ciphersuites"],["chipertext","ciphertext"],["chipertexts","ciphertexts"],["chipet","chipset"],["chipslect","chipselect"],["chipstes","chipsets"],["chiuldren","children"],["chked","checked"],["chnage","change"],["chnaged","changed"],["chnages","changes"],["chnaging","changing"],["chnge","change"],["chnged","changed"],["chnges","changes"],["chnging","changing"],["chnnel","channel"],["choclate","chocolate"],["choicing","choosing"],["choise","choice"],["choises","choices"],["choising","choosing"],["chooose","choose"],["choos","choose"],["choosen","chosen"],["chopipng","chopping"],["choronological","chronological"],["chosed","chose"],["choseen","chosen"],["choser","chooser"],["chosing","choosing"],["chossen","chosen"],["chowsing","choosing"],["chracter","character"],["chracters","characters"],["chractor","character"],["chractors","characters"],["chrminance","chrominance"],["chromum","chromium"],["chuch","church"],["chuks","chunks"],["chunaks","chunks"],["chunc","chunk"],["chunck","chunk"],["chuncked","chunked"],["chuncking","chunking"],["chuncks","chunks"],["chuncksize","chunksize"],["chuncs","chunks"],["chuned","chunked"],["churchs","churches"],["cick","click"],["cicrle","circle"],["cicruit","circuit"],["cicruits","circuits"],["cicular","circular"],["ciculars","circulars"],["cihpher","cipher"],["cihphers","ciphers"],["cilinder","cylinder"],["cilinders","cylinders"],["cilindrical","cylindrical"],["cilyndre","cylinder"],["cilyndres","cylinders"],["cilyndrs","cylinders"],["Cincinatti","Cincinnati"],["Cincinnatti","Cincinnati"],["cinfiguration","configuration"],["cinfigurations","configurations"],["cintaner","container"],["ciontrol","control"],["ciper","cipher"],["cipers","ciphers"],["cipersuite","ciphersuite"],["cipersuites","ciphersuites"],["cipertext","ciphertext"],["cipertexts","ciphertexts"],["ciphe","cipher"],["cipherntext","ciphertext"],["ciphersuit","ciphersuite"],["ciphersuits","ciphersuites"],["ciphersute","ciphersuite"],["ciphersutes","ciphersuites"],["cipheruite","ciphersuite"],["cipheruites","ciphersuites"],["ciphes","ciphers"],["ciphr","cipher"],["ciphrs","ciphers"],["cips","chips"],["circluar","circular"],["circluarly","circularly"],["circluars","circulars"],["circomvent","circumvent"],["circomvented","circumvented"],["circomvents","circumvents"],["circual","circular"],["circuitery","circuitry"],["circulaton","circulation"],["circumferance","circumference"],["circumferencial","circumferential"],["circumsicion","circumcision"],["circumstancial","circumstantial"],["circumstansial","circumstantial"],["circumstnce","circumstance"],["circumstnces","circumstances"],["circumstncial","circumstantial"],["circumstntial","circumstantial"],["circumvernt","circumvent"],["circunference","circumference"],["circunferences","circumferences"],["circunstance","circumstance"],["circunstances","circumstances"],["circunstantial","circumstantial"],["circustances","circumstances"],["circut","circuit"],["circuts","circuits"],["ciricle","circle"],["ciricles","circles"],["ciricuit","circuit"],["ciricuits","circuits"],["ciricular","circular"],["ciricularise","circularise"],["ciricularize","circularize"],["ciriculum","curriculum"],["cirilic","Cyrillic"],["cirillic","Cyrillic"],["ciritc","critic"],["ciritcal","critical"],["ciritcality","criticality"],["ciritcals","criticals"],["ciritcs","critics"],["ciriteria","criteria"],["ciritic","critic"],["ciritical","critical"],["ciriticality","criticality"],["ciriticals","criticals"],["ciritics","critics"],["cirlce","circle"],["cirle","circle"],["cirles","circles"],["cirsumstances","circumstances"],["cirtcuit","circuit"],["cirucal","circular"],["cirucit","circuit"],["cirucits","circuits"],["ciruclar","circular"],["ciruclation","circulation"],["ciruclator","circulator"],["cirucmflex","circumflex"],["cirucular","circular"],["cirucumstance","circumstance"],["cirucumstances","circumstances"],["ciruit","circuit"],["ciruits","circuits"],["cirumflex","circumflex"],["cirumstance","circumstance"],["cirumstances","circumstances"],["civillian","civilian"],["civillians","civilians"],["cjange","change"],["cjanged","changed"],["cjanges","changes"],["cjoice","choice"],["cjoices","choices"],["ckecksum","checksum"],["claaes","classes"],["claculate","calculate"],["claculation","calculation"],["claer","clear"],["claerer","clearer"],["claerly","clearly"],["claibscale","calibscale"],["claime","claim"],["claimes","claims"],["clame","claim"],["claread","cleared"],["clared","cleared"],["clarety","clarity"],["claring","clearing"],["clasic","classic"],["clasical","classical"],["clasically","classically"],["clasification","classification"],["clasified","classified"],["clasifies","classifies"],["clasify","classify"],["clasifying","classifying"],["clasroom","classroom"],["clasrooms","classrooms"],["classess","classes"],["classesss","classes"],["classifcation","classification"],["classifed","classified"],["classifer","classifier"],["classifers","classifiers"],["classificaion","classification"],["classrom","classroom"],["classroms","classrooms"],["classs","class"],["classses","classes"],["clatified","clarified"],["claus","clause"],["clcoksource","clocksource"],["clcosed","closed"],["clea","clean"],["cleaered","cleared"],["cleaing","cleaning"],["cleancacne","cleancache"],["cleaness","cleanness"],["cleanning","cleaning"],["cleannup","cleanup"],["cleanpu","cleanup"],["cleanpus","cleanups"],["cleantup","cleanup"],["cleareance","clearance"],["cleares","clears"],["clearified","clarified"],["clearifies","clarifies"],["clearify","clarify"],["clearifying","clarifying"],["clearling","clearing"],["clearnance","clearance"],["clearnances","clearances"],["clearouput","clearoutput"],["clearted","cleared"],["cleary","clearly"],["cleaup","cleanup"],["cleaups","cleanups"],["cleck","check"],["cleean","clean"],["cleen","clean"],["cleened","cleaned"],["cleens","cleans"],["cleff","clef"],["cleint's","client's"],["cleint","client"],["cleints","clients"],["clened","cleaned"],["clener","cleaner"],["clening","cleaning"],["cler","clear"],["clese","close"],["cleses","closes"],["clevely","cleverly"],["cliboard","clipboard"],["cliboards","clipboards"],["clibpoard","clipboard"],["clibpoards","clipboards"],["cliens","clients"],["cliensite","client-side"],["clienta","client"],["clientelle","clientele"],["clik","click"],["cliks","clicks"],["climer","climber"],["climers","climbers"],["climing","climbing"],["clincial","clinical"],["clinets","clients"],["clinicaly","clinically"],["clipboad","clipboard"],["clipboads","clipboards"],["clipoard","clipboard"],["clipoards","clipboards"],["clipoing","clipping"],["cliuent","client"],["cliuents","clients"],["clloud","cloud"],["cllouded","clouded"],["clloudes","clouds"],["cllouding","clouding"],["cllouds","clouds"],["cloack","cloak"],["cloacks","cloaks"],["cloberring","clobbering"],["clocksourc","clocksource"],["clockw\xEDse","clockwise"],["clock_getttime","clock_gettime"],["cloding","closing"],["cloes","close"],["cloesd","closed"],["cloesed","closed"],["cloesing","closing"],["clonning","cloning"],["clory","glory"],["clos","close"],["closeing","closing"],["closesly","closely"],["closig","closing"],["clossed","closed"],["clossing","closing"],["clossion","collision"],["clossions","collisions"],["cloude","cloud"],["cloudes","clouds"],["cloumn","column"],["cloumns","columns"],["clousre","closure"],["clsoe","close"],["clssroom","classroom"],["clssrooms","classrooms"],["cluase","clause"],["clumn","column"],["clumsly","clumsily"],["cluser","cluster"],["clusetr","cluster"],["clustred","clustered"],["cmak","cmake"],["cmmand","command"],["cmmanded","commanded"],["cmmanding","commanding"],["cmmands","commands"],["cmobination","combination"],["cmoputer","computer"],["cmoputers","computers"],["cna","can"],["cnannel","channel"],["cnat'","can't"],["cnat","can't"],["cnfiguration","configuration"],["cnfigure","configure"],["cnfigured","configured"],["cnfigures","configures"],["cnfiguring","configuring"],["cnosole","console"],["cnosoles","consoles"],["cntain","contain"],["cntains","contains"],["cnter","center"],["co-incided","coincided"],["co-opearte","co-operate"],["co-opeartes","co-operates"],["co-ordinate","coordinate"],["co-ordinates","coordinates"],["coalace","coalesce"],["coalaced","coalesced"],["coalacence","coalescence"],["coalacing","coalescing"],["coalaesce","coalesce"],["coalaesced","coalesced"],["coalaescence","coalescence"],["coalaescing","coalescing"],["coalascece","coalescence"],["coalascence","coalescence"],["coalase","coalesce"],["coalasece","coalescence"],["coalased","coalesced"],["coalasence","coalescence"],["coalases","coalesces"],["coalasing","coalescing"],["coalcece","coalescence"],["coalcence","coalescence"],["coalesc","coalesce"],["coalescsing","coalescing"],["coalesed","coalesced"],["coalesence","coalescence"],["coalessing","coalescing"],["coallate","collate"],["coallates","collates"],["coallating","collating"],["coallece","coalesce"],["coalleced","coalesced"],["coallecence","coalescence"],["coalleces","coalesces"],["coallecing","coalescing"],["coallee","coalesce"],["coalleed","coalesced"],["coalleence","coalescence"],["coallees","coalesces"],["coalleing","coalescing"],["coallesce","coalesce"],["coallesced","coalesced"],["coallesceing","coalescing"],["coallescence","coalescence"],["coallesces","coalesces"],["coallescing","coalescing"],["coallese","coalesce"],["coallesed","coalesced"],["coallesence","coalescence"],["coalleses","coalesces"],["coallesing","coalescing"],["coallesse","coalesce"],["coallessed","coalesced"],["coallessence","coalescence"],["coallesses","coalesces"],["coallessing","coalescing"],["coallision","collision"],["coallisions","collisions"],["coalsce","coalesce"],["coalscece","coalescence"],["coalsced","coalesced"],["coalscence","coalescence"],["coalscing","coalescing"],["coalsece","coalescence"],["coalseced","coalesced"],["coalsecense","coalescence"],["coalsence","coalescence"],["coaslescing","coalescing"],["cobining","combining"],["cobvers","covers"],["coccinele","coccinelle"],["coctail","cocktail"],["cocument","document"],["cocumentation","documentation"],["cocuments","document"],["codeing","coding"],["codepoitn","codepoint"],["codesc","codecs"],["codespel","codespell"],["codesream","codestream"],["codition","condition"],["coditioned","conditioned"],["coditions","conditions"],["codo","code"],["codos","codes"],["coduct","conduct"],["coducted","conducted"],["coducter","conductor"],["coducting","conducting"],["coductor","conductor"],["coducts","conducts"],["coeffcient","coefficient"],["coeffcients","coefficients"],["coefficeint","coefficient"],["coefficeints","coefficients"],["coefficent","coefficient"],["coefficents","coefficients"],["coefficiens","coefficients"],["coefficientss","coefficients"],["coeffiecient","coefficient"],["coeffiecients","coefficients"],["coeffient","coefficient"],["coeffients","coefficients"],["coeficent","coefficient"],["coeficents","coefficients"],["coeficient","coefficient"],["coeficients","coefficients"],["coelesce","coalesce"],["coercable","coercible"],["coerceion","coercion"],["cofeee","coffee"],["cofficient","coefficient"],["cofficients","coefficients"],["cofidence","confidence"],["cofiguration","configuration"],["cofigure","configure"],["cofigured","configured"],["cofigures","configures"],["cofiguring","configuring"],["cofirm","confirm"],["cofirmation","confirmation"],["cofirmations","confirmations"],["cofirmed","confirmed"],["cofirming","confirming"],["cofirms","confirms"],["coform","conform"],["cofrim","confirm"],["cofrimation","confirmation"],["cofrimations","confirmations"],["cofrimed","confirmed"],["cofriming","confirming"],["cofrims","confirms"],["cognizent","cognizant"],["coherance","coherence"],["coherancy","coherency"],["coherant","coherent"],["coherantly","coherently"],["coice","choice"],["coincedentally","coincidentally"],["coinitailize","coinitialize"],["coinside","coincide"],["coinsided","coincided"],["coinsidence","coincidence"],["coinsident","coincident"],["coinsides","coincides"],["coinsiding","coinciding"],["cointain","contain"],["cointained","contained"],["cointaining","containing"],["cointains","contains"],["cokies","cookies"],["colaboration","collaboration"],["colaborations","collaborations"],["colateral","collateral"],["coldplg","coldplug"],["colected","collected"],["colection","collection"],["colections","collections"],["colelction","collection"],["colelctive","collective"],["colerscheme","colorscheme"],["colescing","coalescing"],["colision","collision"],["colission","collision"],["collaberative","collaborative"],["collaction","collection"],["collaobrative","collaborative"],["collaps","collapse"],["collapsable","collapsible"],["collasion","collision"],["collaspe","collapse"],["collasped","collapsed"],["collaspes","collapses"],["collaspible","collapsible"],["collasping","collapsing"],["collationg","collation"],["collborative","collaborative"],["collecing","collecting"],["collecion","collection"],["collecions","collections"],["colleciton","collection"],["collecitons","collections"],["collectin","collection"],["collecton","collection"],["collectons","collections"],["colleection","collection"],["collegue","colleague"],["collegues","colleagues"],["collektion","collection"],["colletion","collection"],["collidies","collides"],["collissions","collisions"],["collistion","collision"],["collistions","collisions"],["colllapses","collapses"],["collocalized","colocalized"],["collonade","colonnade"],["collonies","colonies"],["collony","colony"],["collorscheme","colorscheme"],["collosal","colossal"],["collpase","collapse"],["collpased","collapsed"],["collpases","collapses"],["collpasing","collapsing"],["collsion","collision"],["collsions","collisions"],["collumn","column"],["collumns","columns"],["colmn","column"],["colmns","columns"],["colmuned","columned"],["coloer","color"],["coloeration","coloration"],["coloered","colored"],["coloering","coloring"],["coloers","colors"],["coloful","colorful"],["colomn","column"],["colomns","columns"],["colon-seperated","colon-separated"],["colonizators","colonizers"],["coloringh","coloring"],["colorizoer","colorizer"],["colorpsace","colorspace"],["colorpsaces","colorspaces"],["colose","close"],["coloum","column"],["coloumn","column"],["coloumns","columns"],["coloums","columns"],["colourpsace","colourspace"],["colourpsaces","colourspaces"],["colsed","closed"],["colum","column"],["columm","column"],["colummn","column"],["colummns","columns"],["columms","columns"],["columnn","column"],["columnns","columns"],["columnss","columns"],["columnular","columnar"],["colums","columns"],["columsn","columns"],["colunns","columns"],["comammand","command"],["comamnd","command"],["comamnd-line","command-line"],["comamnded","commanded"],["comamnding","commanding"],["comamndline","commandline"],["comamnds","commands"],["comand","command"],["comand-line","command-line"],["comanded","commanded"],["comanding","commanding"],["comandline","commandline"],["comando","commando"],["comandos","commandos"],["comands","commands"],["comany","company"],["comapany","company"],["comapared","compared"],["comapatibility","compatibility"],["comapatible","compatible"],["comapletion","completion"],["comapnies","companies"],["comapny","company"],["comapre","compare"],["comapring","comparing"],["comaprison","comparison"],["comaptibele","compatible"],["comaptibelities","compatibilities"],["comaptibelity","compatibility"],["comaptible","compatible"],["comarators","comparators"],["comback","comeback"],["combained","combined"],["combanations","combinations"],["combatibility","compatibility"],["combatible","compatible"],["combiantion","combination"],["combiation","combination"],["combiations","combinations"],["combinate","combine"],["combinateion","combination"],["combinateions","combinations"],["combinatins","combinations"],["combinatio","combination"],["combinatios","combinations"],["combinaton","combination"],["combinatorical","combinatorial"],["combinbe","combined"],["combind","combined"],["combinded","combined"],["combiniation","combination"],["combiniations","combinations"],["combinine","combine"],["combintaion","combination"],["combintaions","combinations"],["combusion","combustion"],["comceptually","conceptually"],["comdemnation","condemnation"],["comect","connect"],["comected","connected"],["comecting","connecting"],["comectivity","connectivity"],["comedlib","comedilib"],["comemmorates","commemorates"],["comemoretion","commemoration"],["coment","comment"],["comented","commented"],["comenting","commenting"],["coments","comments"],["comfirm","confirm"],["comflicting","conflicting"],["comformance","conformance"],["comiled","compiled"],["comilers","compilers"],["comination","combination"],["comision","commission"],["comisioned","commissioned"],["comisioner","commissioner"],["comisioning","commissioning"],["comisions","commissions"],["comission","commission"],["comissioned","commissioned"],["comissioner","commissioner"],["comissioning","commissioning"],["comissions","commissions"],["comit","commit"],["comited","committed"],["comitee","committee"],["comiting","committing"],["comits","commits"],["comitted","committed"],["comittee","committee"],["comittees","committees"],["comitter","committer"],["comitting","committing"],["comittish","committish"],["comlain","complain"],["comlained","complained"],["comlainer","complainer"],["comlaining","complaining"],["comlains","complains"],["comlaint","complaint"],["comlaints","complaints"],["comlete","complete"],["comleted","completed"],["comletely","completely"],["comletion","completion"],["comletly","completely"],["comlex","complex"],["comlexity","complexity"],["comlpeter","completer"],["comma-separeted","comma-separated"],["commad","command"],["commadn","command"],["commadn-line","command-line"],["commadnline","commandline"],["commadns","commands"],["commads","commands"],["commandi","command"],["commandoes","commandos"],["commannd","command"],["commans","commands"],["commansd","commands"],["commect","connect"],["commected","connected"],["commecting","connecting"],["commectivity","connectivity"],["commedic","comedic"],["commemerative","commemorative"],["commemmorate","commemorate"],["commemmorating","commemorating"],["commenet","comment"],["commenetd","commented"],["commeneted","commented"],["commenstatus","commentstatus"],["commerical","commercial"],["commerically","commercially"],["commericial","commercial"],["commericially","commercially"],["commerorative","commemorative"],["comming","coming"],["comminication","communication"],["comminity","community"],["comminucating","communicating"],["comminucation","communication"],["commision","commission"],["commisioned","commissioned"],["commisioner","commissioner"],["commisioning","commissioning"],["commisions","commissions"],["commitable","committable"],["commited","committed"],["commitee","committee"],["commiter","committer"],["commiters","committers"],["commitin","committing"],["commiting","committing"],["commitish","committish"],["committ","commit"],["committe","committee"],["committi","committee"],["committis","committees"],["committment","commitment"],["committments","commitments"],["committy","committee"],["commma","comma"],["commma-separated","comma-separated"],["commmand","command"],["commmand-line","command-line"],["commmandline","commandline"],["commmands","commands"],["commmemorated","commemorated"],["commment","comment"],["commmented","commented"],["commmenting","commenting"],["commments","comments"],["commmet","comment"],["commmets","comments"],["commmit","commit"],["commmited","committed"],["commmiting","committing"],["commmits","commits"],["commmitted","committed"],["commmitter","committer"],["commmitters","committers"],["commmitting","committing"],["commmon","common"],["commmunicate","communicate"],["commmunicated","communicated"],["commmunicates","communicates"],["commmunicating","communicating"],["commmunication","communication"],["commmunity","community"],["commna","comma"],["commna-separated","comma-separated"],["commnad","command"],["commnad-line","command-line"],["commnadline","commandline"],["commnads","commands"],["commnand","command"],["commnand-line","command-line"],["commnandline","commandline"],["commnands","commands"],["commnd","command"],["commnd-line","command-line"],["commndline","commandline"],["commnds","commands"],["commnent","comment"],["commnents","comments"],["commnet","comment"],["commnetaries","commentaries"],["commnetary","commentary"],["commnetator","commentator"],["commnetators","commentators"],["commneted","commented"],["commneting","commenting"],["commnets","comments"],["commnication","communication"],["commnities","communities"],["commnity","community"],["commnt","comment"],["commnted","commented"],["commnuative","commutative"],["commnunicating","communicating"],["commnunication","communication"],["commnunity","community"],["commoditiy","commodity"],["commom","common"],["commond","command"],["commongly","commonly"],["commontly","commonly"],["commonweath","commonwealth"],["commpact","compact"],["commpaction","compaction"],["commpare","compare"],["commparisons","comparisons"],["commpatibility","compatibility"],["commpatible","compatible"],["commpessed","compressed"],["commpilation","compilation"],["commpile","compile"],["commpiled","compiled"],["commpiling","compiling"],["commplain","complain"],["commplete","complete"],["commpleted","completed"],["commpletely","completely"],["commpletes","completes"],["commpletion","completion"],["commplex","complex"],["commpliant","compliant"],["commplied","complied"],["commpn","common"],["commponent","component"],["commponents","components"],["commpound","compound"],["commpresd","compressed"],["commpresed","compressed"],["commpresion","compression"],["commpress","compress"],["commpressd","compressed"],["commpressed","compressed"],["commpression","compression"],["commpute","compute"],["commputed","computed"],["commputer","computer"],["commputes","computes"],["commputing","computing"],["commtited","committed"],["commtted","committed"],["commuication","communication"],["commuications","communications"],["commuinications","communications"],["communcated","communicated"],["communcation","communication"],["communcations","communications"],["communciation","communication"],["communiation","communication"],["communicaion","communication"],["communicatie","communication"],["communicaton","communication"],["communitcate","communicate"],["communitcated","communicated"],["communitcates","communicates"],["communitcation","communication"],["communitcations","communications"],["communites","communities"],["communiy","community"],["communiyt","community"],["communuication","communication"],["commutated","commuted"],["commutating","commuting"],["commutive","commutative"],["comnmand","command"],["comnnected","connected"],["comnparing","comparing"],["comnpletion","completion"],["comnpresion","compression"],["comnpress","compress"],["comobobox","combo-box"],["comon","common"],["comonent","component"],["comor","color"],["compability","compatibility"],["compabillity","compatibility"],["compabitiliby","compatibility"],["compabitility","compatibility"],["compagnion","companion"],["compagny","company"],["compaibility","compatibility"],["compain","complain"],["compair","compare"],["compaire","compare"],["compaired","compared"],["compairing","comparing"],["compairison","comparison"],["compairisons","comparisons"],["compairs","compares"],["compansate","compensate"],["compansated","compensated"],["compansates","compensates"],["compansating","compensating"],["compansation","compensation"],["compansations","compensations"],["comparaison","comparison"],["comparare","compare"],["comparasion","comparison"],["comparasions","comparisons"],["comparater","comparator"],["comparation","comparison"],["comparations","comparisons"],["compareable","comparable"],["compareing","comparing"],["compareison","comparison"],["compareisons","comparisons"],["comparements","compartments"],["compariable","comparable"],["comparied","compared"],["comparign","comparing"],["comparigon","comparison"],["comparigons","comparisons"],["compariing","comparing"],["comparion","comparison"],["comparions","comparisons"],["comparios","comparison"],["comparioss","comparisons"],["comparisaion","comparison"],["comparisaions","comparisons"],["comparisation","comparison"],["comparisations","comparisons"],["comparisement","comparison"],["comparisements","comparisons"],["comparisin","comparison"],["comparising","comparing"],["comparisins","comparisons"],["comparision","comparison"],["comparisions","comparisons"],["comparism","comparison"],["comparisment","comparison"],["comparisments","comparisons"],["comparisms","comparisons"],["comparisn","comparison"],["comparisns","comparisons"],["comparispon","comparison"],["comparispons","comparisons"],["comparission","comparison"],["comparissions","comparisons"],["comparisson","comparison"],["comparissons","comparisons"],["comparistion","comparison"],["comparistions","comparisons"],["compariston","comparison"],["comparistons","comparisons"],["comparition","comparison"],["comparitions","comparisons"],["comparititive","comparative"],["comparititively","comparatively"],["comparitive","comparative"],["comparitively","comparatively"],["comparitor","comparator"],["comparitors","comparators"],["comparizon","comparison"],["comparizons","comparisons"],["comparment","compartment"],["comparotor","comparator"],["comparotors","comparators"],["comparre","compare"],["comparsion","comparison"],["comparsions","comparisons"],["compatabable","compatible"],["compatabiity","compatibility"],["compatabile","compatible"],["compatabilities","compatibilities"],["compatability","compatibility"],["compatabillity","compatibility"],["compatabilty","compatibility"],["compatabily","compatibility"],["compatable","compatible"],["compatablility","compatibility"],["compatablities","compatibilities"],["compatablitiy","compatibility"],["compatablity","compatibility"],["compatably","compatibly"],["compataibility","compatibility"],["compataible","compatible"],["compataility","compatibility"],["compatatbility","compatibility"],["compatatble","compatible"],["compatatible","compatible"],["compatator","comparator"],["compatators","comparators"],["compatbile","compatible"],["compatbility","compatibility"],["compatiability","compatibility"],["compatiable","compatible"],["compatiablity","compatibility"],["compatibel","compatible"],["compatibile","compatible"],["compatibiliy","compatibility"],["compatibiltiy","compatibility"],["compatibilty","compatibility"],["compatibily","compatibility"],["compatibity","compatibility"],["compatiblilty","compatibility"],["compatiblities","compatibilities"],["compatiblity","compatibility"],["compation","compaction"],["compatitbility","compatibility"],["compativle","compatible"],["compaytibility","compatibility"],["compeitions","competitions"],["compeletely","completely"],["compelte","complete"],["compeltelyt","completely"],["compeltion","completion"],["compeltly","completely"],["compelx","complex"],["compelxes","complexes"],["compelxities","complexities"],["compelxity","complexity"],["compensantion","compensation"],["compenstate","compensate"],["compenstated","compensated"],["compenstates","compensates"],["competance","competence"],["competant","competent"],["competative","competitive"],["competetive","competitive"],["competions","completions"],["competitiion","competition"],["competive","competitive"],["competiveness","competitiveness"],["compex","complex"],["compfortable","comfortable"],["comphrehensive","comprehensive"],["compiant","compliant"],["compicated","complicated"],["compications","complications"],["compied","compiled"],["compilability","compatibility"],["compilant","compliant"],["compilaton","compilation"],["compilatons","compilations"],["compilcate","complicate"],["compilcated","complicated"],["compilcatedly","complicatedly"],["compilcates","complicates"],["compilcating","complicating"],["compilcation","complication"],["compilcations","complications"],["compileable","compilable"],["compiletime","compile time"],["compiliant","compliant"],["compiliation","compilation"],["compilier","compiler"],["compiliers","compilers"],["compitability","compatibility"],["compitable","compatible"],["compitent","competent"],["compitible","compatible"],["complaing","complaining"],["complanied","complained"],["complate","complete"],["complated","completed"],["complates","completes"],["complating","completing"],["complatly","completely"],["complatness","completeness"],["complats","completes"],["complcated","complicated"],["compleate","complete"],["compleated","completed"],["compleates","completes"],["compleating","completing"],["compleatly","completely"],["compleete","complete"],["compleeted","completed"],["compleetly","completely"],["compleetness","completeness"],["complelely","completely"],["complelte","complete"],["complementt","complement"],["compleness","completeness"],["complession","compression"],["complet","complete"],["completedthe","completed the"],["completeion","completion"],["completelly","completely"],["completelty","completely"],["completelyl","completely"],["completetion","completion"],["completetly","completely"],["completiom","completion"],["completition","completion"],["completley","completely"],["completly","completely"],["completness","completeness"],["complette","complete"],["complettly","completely"],["complety","completely"],["complext","complexity"],["compliace","compliance"],["complianse","compliance"],["compliation","compilation"],["compliations","compilations"],["complied-in","compiled-in"],["complience","compliance"],["complient","compliant"],["complile","compile"],["compliled","compiled"],["compliler","compiler"],["compliles","compiles"],["compliling","compiling"],["compling","compiling"],["complitely","completely"],["complmenet","complement"],["complted","completed"],["compluter","computer"],["compnent","component"],["compnents","components"],["compoennt","component"],["compoent","component"],["compoents","components"],["compoesd","composed"],["compoment","component"],["compoments","components"],["componant","component"],["componants","components"],["componbents","components"],["componding","compounding"],["componeent","component"],["componeents","components"],["componemt","component"],["componemts","components"],["componenet","component"],["componenets","components"],["componens","components"],["componentes","components"],["componet","component"],["componets","components"],["componnents","components"],["componoent","component"],["componoents","components"],["componsites","composites"],["compontent","component"],["compontents","components"],["composablity","composability"],["composibility","composability"],["composiblity","composability"],["composit","composite"],["compositong","compositing"],["composits","composites"],["compount","compound"],["comppatible","compatible"],["comppiler","compiler"],["comppilers","compilers"],["comppliance","compliance"],["comprable","comparable"],["compredded","compressed"],["compresed","compressed"],["compreser","compressor"],["compresers","compressors"],["compreses","compresses"],["compresible","compressible"],["compresing","compressing"],["compresion","compression"],["compresions","compressions"],["compresor","compressor"],["compresors","compressors"],["compressable","compressible"],["compresser","compressor"],["compressers","compressors"],["compresss","compress"],["compresssed","compressed"],["compresssion","compression"],["comprimise","compromise"],["compromize","compromise"],["compromized","compromised"],["compsable","composable"],["compsite","composite"],["comptabile","compatible"],["comptible","compatible"],["comptue","compute"],["compuatation","computation"],["compuation","computation"],["compulsary","compulsory"],["compulsery","compulsory"],["compund","compound"],["compunds","compounds"],["computaion","computation"],["computarized","computerized"],["computaton","computation"],["computtaion","computation"],["computtaions","computations"],["comress","compress"],["comressed","compressed"],["comresses","compresses"],["comressing","compressing"],["comression","compression"],["comrpess","compress"],["comrpessed","compressed"],["comrpesses","compresses"],["comrpessing","compressing"],["comrpession","compression"],["comstraint","constraint"],["comsume","consume"],["comsumed","consumed"],["comsumer","consumer"],["comsumers","consumers"],["comsumes","consumes"],["comsuming","consuming"],["comsumption","consumption"],["comtain","contain"],["comtained","contained"],["comtainer","container"],["comtains","contains"],["comunicate","communicate"],["comunication","communication"],["comunity","community"],["comventions","conventions"],["comverted","converted"],["conain","contain"],["conained","contained"],["conainer","container"],["conainers","containers"],["conaines","contains"],["conaining","containing"],["conains","contains"],["conaint","contain"],["conainted","contained"],["conainter","container"],["conatain","contain"],["conatainer","container"],["conatainers","containers"],["conatains","contains"],["conatin","contain"],["conatined","contained"],["conatiner","container"],["conatiners","containers"],["conatining","containing"],["conatins","contains"],["conbination","combination"],["conbinations","combinations"],["conbtrols","controls"],["concaneted","concatenated"],["concantenated","concatenated"],["concatenaded","concatenated"],["concatenaion","concatenation"],["concatened","concatenated"],["concatentaion","concatenation"],["concatentate","concatenate"],["concatentated","concatenated"],["concatentates","concatenates"],["concatentating","concatenating"],["concatentation","concatenation"],["concatentations","concatenations"],["concatented","concatenated"],["concatinate","concatenate"],["concatinated","concatenated"],["concatination","concatenation"],["concatinations","concatenations"],["concating","concatenating"],["concatonate","concatenate"],["concatonated","concatenated"],["concatonates","concatenates"],["concatonating","concatenating"],["conceed","concede"],["conceedd","conceded"],["concensors","consensus"],["concensus","consensus"],["concentate","concentrate"],["concentated","concentrated"],["concentates","concentrates"],["concentating","concentrating"],["concentation","concentration"],["concentic","concentric"],["concentraze","concentrate"],["concered","concerned"],["concerened","concerned"],["concering","concerning"],["concerntrating","concentrating"],["concicely","concisely"],["concider","consider"],["concidered","considered"],["concidering","considering"],["conciders","considers"],["concieted","conceited"],["concieve","conceive"],["concieved","conceived"],["concious","conscious"],["conciously","consciously"],["conciousness","consciousness"],["concurence","concurrence"],["concurency","concurrency"],["concurent","concurrent"],["concurently","concurrently"],["concurrect","concurrent"],["condamned","condemned"],["condem","condemn"],["condemmed","condemned"],["condfiguration","configuration"],["condfigurations","configurations"],["condfigure","configure"],["condfigured","configured"],["condfigures","configures"],["condfiguring","configuring"],["condict","conduct"],["condicted","conducted"],["condidate","candidate"],["condidates","candidates"],["condident","confident"],["condidential","confidential"],["condidional","conditional"],["condidtion","condition"],["condidtioning","conditioning"],["condidtions","conditions"],["condifurable","configurable"],["condifuration","configuration"],["condifure","configure"],["condifured","configured"],["condig","config"],["condigdialog","configdialog"],["condiiton","condition"],["condionally","conditionally"],["conditial","conditional"],["conditially","conditionally"],["conditialy","conditionally"],["conditianal","conditional"],["conditianally","conditionally"],["conditianaly","conditionally"],["conditionaly","conditionally"],["conditionn","condition"],["conditionnal","conditional"],["conditionnaly","conditionally"],["conditionned","conditioned"],["conditionsof","conditions of"],["conditoinal","conditional"],["conditon","condition"],["conditonal","conditional"],["conditons","conditions"],["condntional","conditional"],["condtiion","condition"],["condtiions","conditions"],["condtion","condition"],["condtional","conditional"],["condtionally","conditionally"],["condtionals","conditionals"],["condtioned","conditioned"],["condtions","conditions"],["condtition","condition"],["condtitional","conditional"],["condtitionals","conditionals"],["condtitions","conditions"],["conecct","connect"],["coneccted","connected"],["coneccting","connecting"],["conecction","connection"],["conecctions","connections"],["conecctivities","connectivities"],["conecctivity","connectivity"],["conecctor","connector"],["conecctors","connectors"],["coneccts","connects"],["conecept","concept"],["conecepts","concepts"],["conecjture","conjecture"],["conecjtures","conjectures"],["conecntrate","concentrate"],["conecntrated","concentrated"],["conecntrates","concentrates"],["conecpt","concept"],["conecpts","concepts"],["conect","connect"],["conected","connected"],["conecting","connecting"],["conection","connection"],["conections","connections"],["conectivities","connectivities"],["conectivity","connectivity"],["conectix","connectix"],["conector","connector"],["conectors","connectors"],["conects","connects"],["conecurrency","concurrency"],["conecutive","consecutive"],["coneect","connect"],["coneected","connected"],["coneecting","connecting"],["coneection","connection"],["coneections","connections"],["coneectivities","connectivities"],["coneectivity","connectivity"],["coneector","connector"],["coneectors","connectors"],["coneects","connects"],["conenct","connect"],["conencted","connected"],["conencting","connecting"],["conenction","connection"],["conenctions","connections"],["conenctivities","connectivities"],["conenctivity","connectivity"],["conenctor","connector"],["conenctors","connectors"],["conencts","connects"],["conenience","convenience"],["conenient","convenient"],["coneninece","convenience"],["coneninet","convenient"],["conent","content"],["conents","contents"],["conergence","convergence"],["conern","concern"],["conerning","concerning"],["conersion","conversion"],["conersions","conversions"],["conert","convert"],["conerted","converted"],["conerter","converter"],["conerters","converters"],["conerting","converting"],["conervative","conservative"],["conesencus","consensus"],["conet","connect"],["coneted","connected"],["coneting","connecting"],["conetion","connection"],["conetions","connections"],["conetivities","connectivities"],["conetivity","connectivity"],["conetnt","content"],["conetor","connector"],["conetors","connectors"],["conets","connects"],["conexant","connexant"],["conferene","conference"],["conferrencing","conferencing"],["confert","convert"],["confety","confetti"],["conffiguration","configuration"],["confgiuration","configuration"],["confgiure","configure"],["confgiured","configured"],["confguration","configuration"],["confgure","configure"],["confgured","configured"],["confict","conflict"],["conficted","conflicted"],["conficts","conflicts"],["confidance","confidence"],["confidantal","confidential"],["confidantally","confidentially"],["confidantals","confidentials"],["confidantial","confidential"],["confidantially","confidentially"],["confidental","confidential"],["confidentally","confidentially"],["confids","confides"],["confifurable","configurable"],["confifuration","configuration"],["confifure","configure"],["confifured","configured"],["configaration","configuration"],["configed","configured"],["configer","configure"],["configiration","configuration"],["configire","configure"],["configiuration","configuration"],["configration","configuration"],["configrations","configurations"],["configred","configured"],["configruation","configuration"],["configruations","configurations"],["configrued","configured"],["configuaration","configuration"],["configuarble","configurable"],["configuare","configure"],["configuared","configured"],["configuarion","configuration"],["configuarions","configurations"],["configuartion","configuration"],["configuartions","configurations"],["configuation","configuration"],["configuations","configurations"],["configue","configure"],["configued","configured"],["configuerd","configured"],["configuered","configured"],["configues","configures"],["configulate","configurate"],["configulation","configuration"],["configulations","configurations"],["configuraion","configuration"],["configuraiton","configuration"],["configuratiens","configurations"],["configuratiom","configuration"],["configurationn","configuration"],["configuratioon","configuration"],["configuratoin","configuration"],["configuratoins","configurations"],["configuraton","configuration"],["configuratons","configurations"],["configuratrions","configurations"],["configuratuion","configuration"],["configureable","configurable"],["configureing","configuring"],["configuretion","configuration"],["configurres","configures"],["configurring","configuring"],["configurses","configures"],["configurtation","configuration"],["configurting","configuring"],["configurtion","configuration"],["configurtoin","configuration"],["configury","configurable"],["configutation","configuration"],["configutations","configurations"],["configute","configure"],["configuted","configured"],["configutes","configures"],["configutration","configuration"],["confim","confirm"],["confimation","confirmation"],["confimations","confirmations"],["confimed","confirmed"],["confiming","confirming"],["confimred","confirmed"],["confims","confirms"],["confiramtion","confirmation"],["confirmacion","confirmation"],["confirmaed","confirmed"],["confirmas","confirms"],["confirmatino","confirmation"],["confirmatinon","confirmation"],["confirmd","confirmed"],["confirmedd","confirmed"],["confirmeed","confirmed"],["confirmming","confirming"],["confiug","config"],["confiugrable","configurable"],["confiugration","configuration"],["confiugrations","configurations"],["confiugre","configure"],["confiugred","configured"],["confiugres","configures"],["confiugring","configuring"],["confiugure","configure"],["conflictin","conflicting"],["conflift","conflict"],["conflit","conflict"],["confoguration","configuration"],["confort","comfort"],["confortable","comfortable"],["confrim","confirm"],["confrimation","confirmation"],["confrimations","confirmations"],["confrimed","confirmed"],["confriming","confirming"],["confrims","confirms"],["confucing","confusing"],["confucion","confusion"],["confuction","conjunction"],["confudion","confusion"],["confue","confuse"],["confued","confused"],["confues","confuses"],["confugiration","configuration"],["confugirble","configurable"],["confugire","configure"],["confugired","configured"],["confugires","configures"],["confugiring","configuring"],["confugrable","configurable"],["confugration","configuration"],["confugre","configure"],["confugred","configured"],["confugres","configures"],["confugring","configuring"],["confugurable","configurable"],["confuguration","configuration"],["confugure","configure"],["confugured","configured"],["confugures","configures"],["confuguring","configuring"],["confuigration","configuration"],["confuigrations","configurations"],["confuing","confusing"],["confunction","conjunction"],["confunder","confounder"],["confunse","confuse"],["confunsed","confused"],["confunses","confuses"],["confunsing","confusing"],["confurable","configurable"],["confuration","configuration"],["confure","configure"],["confured","configured"],["confures","configures"],["confuring","configuring"],["confurse","confuse"],["confursed","confused"],["confurses","confuses"],["confursing","confusing"],["confusting","confusing"],["confuze","confuse"],["confuzed","confused"],["confuzes","confuses"],["confuzing","confusing"],["confuzze","confuse"],["confuzzed","confused"],["confuzzes","confuses"],["confuzzing","confusing"],["congifurable","configurable"],["congifuration","configuration"],["congifure","configure"],["congifured","configured"],["congig","config"],["congigs","configs"],["congiguration","configuration"],["congigurations","configurations"],["congigure","configure"],["congnition","cognition"],["congnitive","cognitive"],["congradulations","congratulations"],["congresional","congressional"],["conider","consider"],["conifguration","configuration"],["conifiguration","configuration"],["conig","config"],["conigurable","configurable"],["conigured","configured"],["conincide","coincide"],["conincidence","coincidence"],["conincident","coincident"],["conincides","coincides"],["coninciding","coinciding"],["coninient","convenient"],["coninstallable","coinstallable"],["coninuation","continuation"],["coninue","continue"],["coninues","continues"],["coninuity","continuity"],["coninuous","continuous"],["conitinue","continue"],["conived","connived"],["conjecutre","conjecture"],["conjonction","conjunction"],["conjonctive","conjunctive"],["conjuction","conjunction"],["conjuctions","conjunctions"],["conjuncion","conjunction"],["conjuntion","conjunction"],["conjuntions","conjunctions"],["conlcude","conclude"],["conlcuded","concluded"],["conlcudes","concludes"],["conlcuding","concluding"],["conlcusion","conclusion"],["conlcusions","conclusions"],["conly","only"],["conmnection","connection"],["conmpress","compress"],["conmpression","compression"],["connaect","connect"],["conncection","connection"],["conncetion","connection"],["connction","connection"],["conncurrent","concurrent"],["connecetd","connected"],["connecion","connection"],["connecions","connections"],["conneciton","connection"],["connecitons","connections"],["connecor","connector"],["connecotr","connector"],["connecstatus","connectstatus"],["connectd","connected"],["connecte","connected"],["connectec","connected"],["connectes","connects"],["connectet","connected"],["connectibity","connectivity"],["connectino","connection"],["connectinos","connections"],["connectins","connections"],["connectiom","connection"],["connectioms","connections"],["connectiona","connection"],["connectionas","connections"],["connectiviy","connectivity"],["connectivty","connectivity"],["connecto","connect"],["connectted","connected"],["connecttion","connection"],["conneection","connection"],["conneiction","connection"],["connektors","connectors"],["connetced","connected"],["connetcion","connection"],["conneted","connected"],["Conneticut","Connecticut"],["connetion","connection"],["connetor","connector"],["connexion","connection"],["connnect","connect"],["connnected","connected"],["connnecting","connecting"],["connnection","connection"],["connnections","connections"],["connnects","connects"],["connot","cannot"],["connstrain","constrain"],["connstrained","constrained"],["connstraint","constraint"],["conntents","contents"],["conntroller","controller"],["conosuer","connoisseur"],["conotation","connotation"],["conotations","connotations"],["conotrol","control"],["conotroled","controlled"],["conotroling","controlling"],["conotrolled","controlled"],["conotrols","controls"],["conpares","compares"],["conplete","complete"],["conpleted","completed"],["conpletes","completes"],["conpleting","completing"],["conpletion","completion"],["conquerd","conquered"],["conquerer","conqueror"],["conquerers","conquerors"],["conqured","conquered"],["conrete","concrete"],["conrol","control"],["conroller","controller"],["conrrespond","correspond"],["conrrespondence","correspondence"],["conrrespondences","correspondences"],["conrrespondent","correspondent"],["conrrespondents","correspondents"],["conrresponding","corresponding"],["conrrespondingly","correspondingly"],["conrresponds","corresponds"],["conrrol","control"],["conrrupt","corrupt"],["conrruptable","corruptible"],["conrrupted","corrupted"],["conrruptible","corruptible"],["conrruption","corruption"],["conrruptions","corruptions"],["conrrupts","corrupts"],["conrtib","contrib"],["conrtibs","contribs"],["consants","constants"],["conscent","consent"],["consciencious","conscientious"],["consciouness","consciousness"],["consctruct","construct"],["consctructed","constructed"],["consctructing","constructing"],["consctruction","construction"],["consctructions","constructions"],["consctructive","constructive"],["consctructor","constructor"],["consctructors","constructors"],["consctructs","constructs"],["consdider","consider"],["consdidered","considered"],["consdiered","considered"],["consdired","considered"],["conseat","conceit"],["conseated","conceited"],["consective","consecutive"],["consectively","consecutively"],["consectutive","consecutive"],["consectuve","consecutive"],["consecuitively","consecutively"],["conseed","concede"],["conseedd","conceded"],["conseeded","conceded"],["conseeds","concedes"],["consenquently","consequently"],["consensis","consensus"],["consentrate","concentrate"],["consentrated","concentrated"],["consentrates","concentrates"],["consept","concept"],["consepts","concepts"],["consequentely","consequently"],["consequentually","consequently"],["consequeseces","consequences"],["consequetive","consecutive"],["consequtive","consecutive"],["consequtively","consecutively"],["consern","concern"],["conserned","concerned"],["conserning","concerning"],["conservativeky","conservatively"],["conservitive","conservative"],["consestently","consistently"],["consevible","conceivable"],["consiciousness","consciousness"],["consicousness","consciousness"],["considder","consider"],["considderation","consideration"],["considdered","considered"],["considdering","considering"],["considerd","considered"],["consideren","considered"],["considerion","consideration"],["considerions","considerations"],["considred","considered"],["consier","consider"],["consiers","considers"],["consifer","consider"],["consifered","considered"],["consious","conscious"],["consisant","consistent"],["consisent","consistent"],["consisently","consistently"],["consisntency","consistency"],["consistancy","consistency"],["consistant","consistent"],["consistantly","consistently"],["consisten","consistent"],["consistend","consistent"],["consistendly","consistently"],["consistendt","consistent"],["consistendtly","consistently"],["consistenly","consistently"],["consistuents","constituents"],["consit","consist"],["consitant","consistent"],["consited","consisted"],["consitency","consistency"],["consitent","consistent"],["consitently","consistently"],["consiting","consisting"],["consitional","conditional"],["consits","consists"],["consituencies","constituencies"],["consituency","constituency"],["consituent","constituent"],["consituents","constituents"],["consitute","constitute"],["consituted","constituted"],["consitutes","constitutes"],["consituting","constituting"],["consitution","constitution"],["consitutional","constitutional"],["consitutuent","constituent"],["consitutuents","constituents"],["consitutute","constitute"],["consitututed","constituted"],["consitututes","constitutes"],["consitututing","constituting"],["consntant","constant"],["consntantly","constantly"],["consntants","constants"],["consol","console"],["consolodate","consolidate"],["consolodated","consolidated"],["consonent","consonant"],["consonents","consonants"],["consorcium","consortium"],["conspiracys","conspiracies"],["conspiriator","conspirator"],["consquence","consequence"],["consquences","consequences"],["consquent","consequent"],["consquently","consequently"],["consrtuct","construct"],["consrtucted","constructed"],["consrtuctor","constructor"],["consrtuctors","constructors"],["consrtucts","constructs"],["consruction","construction"],["consructions","constructions"],["consructor","constructor"],["consructors","constructors"],["constaint","constraint"],["constainted","constrained"],["constaints","constraints"],["constallation","constellation"],["constallations","constellations"],["constan","constant"],["constanly","constantly"],["constantsm","constants"],["constarin","constrain"],["constarint","constraint"],["constarints","constraints"],["constarnation","consternation"],["constatn","constant"],["constatnt","constant"],["constatnts","constants"],["constcurts","constructs"],["constext","context"],["consting","consisting"],["constinually","continually"],["constistency","consistency"],["constists","consists"],["constitently","consistently"],["constituant","constituent"],["constituants","constituents"],["constitue","constitute"],["constitues","constitutes"],["constituion","constitution"],["constituional","constitutional"],["constitutent","constituent"],["constitutents","constituents"],["constly","costly"],["constract","construct"],["constracted","constructed"],["constractor","constructor"],["constractors","constructors"],["constrainsts","constraints"],["constrainted","constrained"],["constraintes","constraints"],["constrainting","constraining"],["constrait","constraint"],["constraits","constraints"],["constrans","constrains"],["constrant","constraint"],["constrants","constraints"],["constrast","contrast"],["constrasts","contrasts"],["constratints","constraints"],["constraucts","constructs"],["constrcuct","construct"],["constrcut","construct"],["constrcuted","constructed"],["constrcution","construction"],["constrcutor","constructor"],["constrcutors","constructors"],["constrcuts","constructs"],["constriants","constraints"],["constrint","constraint"],["constrints","constraints"],["constrollers","controllers"],["construc","construct"],["construces","constructs"],["construcing","constructing"],["construcion","construction"],["construciton","construction"],["construcor","constructor"],["construcs","constructs"],["constructcor","constructor"],["constructer","constructor"],["constructers","constructors"],["constructes","constructs"],["constructred","constructed"],["constructt","construct"],["constructted","constructed"],["constructting","constructing"],["constructtor","constructor"],["constructtors","constructors"],["constructts","constructs"],["constructued","constructed"],["constructur","constructor"],["constructure","constructor"],["constructurs","constructors"],["construktor","constructor"],["construnctor","constructor"],["construrtors","constructors"],["construst","construct"],["construsts","constructs"],["construt","construct"],["construtced","constructed"],["construter","constructor"],["construters","constructors"],["constrution","construction"],["construtor","constructor"],["construtors","constructors"],["consttruct","construct"],["consttructer","constructor"],["consttructers","constructors"],["consttruction","construction"],["consttructor","constructor"],["consttructors","constructors"],["constuct","construct"],["constucted","constructed"],["constucter","constructor"],["constucters","constructors"],["constucting","constructing"],["constuction","construction"],["constuctions","constructions"],["constuctor","constructor"],["constuctors","constructors"],["constucts","constructs"],["consturct","construct"],["consturctor","constructor"],["consuder","consider"],["consuemr","consumer"],["consulant","consultant"],["consultunt","consultant"],["consumate","consummate"],["consumated","consummated"],["consumating","consummating"],["consummed","consumed"],["consummer","consumer"],["consummers","consumers"],["consumtion","consumption"],["contacentaion","concatenation"],["contagen","contagion"],["contaienr","container"],["contaier","container"],["contails","contains"],["contaiminate","contaminate"],["contaiminated","contaminated"],["contaiminating","contaminating"],["containa","contain"],["containees","containers"],["containerr","container"],["containg","containing"],["containging","containing"],["containig","containing"],["containings","containing"],["containining","containing"],["containint","containing"],["containn","contain"],["containner","container"],["containners","containers"],["containns","contains"],["containr","container"],["containrs","containers"],["containted","contained"],["containter","container"],["containters","containers"],["containting","containing"],["containts","contains"],["containuations","continuations"],["contais","contains"],["contaisn","contains"],["contaiun","contain"],["contamporaries","contemporaries"],["contamporary","contemporary"],["contan","contain"],["contaned","contained"],["contanined","contained"],["contaning","containing"],["contanins","contains"],["contans","contains"],["contary","contrary"],["contatenated","concatenated"],["contatining","containing"],["contein","contain"],["conteined","contained"],["conteining","containing"],["conteins","contains"],["contempoary","contemporary"],["contemporaneus","contemporaneous"],["contempory","contemporary"],["conten","contain"],["contence","contents"],["contendor","contender"],["contener","container"],["conteners","containers"],["contenht","content"],["content-negatiotiation","content-negotiation"],["content-negoatiation","content-negotiation"],["content-negoation","content-negotiation"],["content-negociation","content-negotiation"],["content-negogtiation","content-negotiation"],["content-negoitation","content-negotiation"],["content-negoptionsotiation","content-negotiation"],["content-negosiation","content-negotiation"],["content-negotaiation","content-negotiation"],["content-negotaition","content-negotiation"],["content-negotatiation","content-negotiation"],["content-negotation","content-negotiation"],["content-negothiation","content-negotiation"],["content-negotication","content-negotiation"],["content-negotioation","content-negotiation"],["content-negotion","content-negotiation"],["content-negotionation","content-negotiation"],["content-negotiotation","content-negotiation"],["content-negotitaion","content-negotiation"],["content-negotitation","content-negotiation"],["content-negotition","content-negotiation"],["content-negoziation","content-negotiation"],["contentended","contended"],["contentn","content"],["contentss","contents"],["contermporaneous","contemporaneous"],["conterpart","counterpart"],["conterparts","counterparts"],["contersink","countersink"],["contex","context"],["contexta","context"],["contexual","contextual"],["contiains","contains"],["contian","contain"],["contianed","contained"],["contianer","container"],["contianers","containers"],["contianing","containing"],["contians","contains"],["contibute","contribute"],["contibuted","contributed"],["contibutes","contributes"],["contibutor","contributor"],["contigent","contingent"],["contigious","contiguous"],["contigiously","contiguously"],["contignuous","contiguous"],["contigous","contiguous"],["contiguious","contiguous"],["contiguities","continuities"],["contiguos","contiguous"],["contiguous-non","non-contiguous"],["continaing","containing"],["contination","continuation"],["contined","continued"],["continential","continental"],["continging","containing"],["contingous","contiguous"],["continguous","contiguous"],["continious","continuous"],["continiously","continuously"],["continoue","continue"],["continouos","continuous"],["continous","continuous"],["continously","continuously"],["continueing","continuing"],["continuely","continually"],["continuem","continuum"],["continuos","continuous"],["continuosly","continuously"],["continure","continue"],["continusly","continuously"],["continuting","continuing"],["contious","continuous"],["contiously","continuously"],["contiuation","continuation"],["contiue","continue"],["contiuguous","contiguous"],["contiuing","continuing"],["contniue","continue"],["contniued","continued"],["contniues","continues"],["contnt","content"],["contol","control"],["contoler","controller"],["contoller","controller"],["contollers","controllers"],["contolls","controls"],["contols","controls"],["contongency","contingency"],["contorl","control"],["contorled","controlled"],["contorls","controls"],["contoroller","controller"],["contraciction","contradiction"],["contracictions","contradictions"],["contracition","contradiction"],["contracitions","contradictions"],["contracter","contractor"],["contracters","contractors"],["contradically","contradictory"],["contradictary","contradictory"],["contrain","constrain"],["contrainers","containers"],["contraining","constraining"],["contraint","constraint"],["contrainted","constrained"],["contraints","constraints"],["contraitns","constraints"],["contraveining","contravening"],["contravercial","controversial"],["contraversy","controversy"],["contrbution","contribution"],["contribte","contribute"],["contribted","contributed"],["contribtes","contributes"],["contributer","contributor"],["contributers","contributors"],["contries","countries"],["contrinution","contribution"],["contrinutions","contributions"],["contritutions","contributions"],["contriubte","contribute"],["contriubted","contributed"],["contriubtes","contributes"],["contriubting","contributing"],["contriubtion","contribution"],["contriubtions","contributions"],["contrl","control"],["contrller","controller"],["contro","control"],["controlable","controllable"],["controled","controlled"],["controlelrs","controllers"],["controler","controller"],["controlers","controllers"],["controling","controlling"],["controll","control"],["controllerd","controlled"],["controllled","controlled"],["controlller","controller"],["controlllers","controllers"],["controllling","controlling"],["controllor","controller"],["controlls","controls"],["contronl","control"],["contronls","controls"],["controoler","controller"],["controvercial","controversial"],["controvercy","controversy"],["controveries","controversies"],["controversal","controversial"],["controversey","controversy"],["controversials","controversial"],["controvertial","controversial"],["controvery","controversy"],["contrrol","control"],["contrrols","controls"],["contrst","contrast"],["contrsted","contrasted"],["contrsting","contrasting"],["contrsts","contrasts"],["contrtoller","controller"],["contruct","construct"],["contructed","constructed"],["contructing","constructing"],["contruction","construction"],["contructions","constructions"],["contructor","constructor"],["contructors","constructors"],["contructs","constructs"],["contry","country"],["contryie","countryie"],["contsruction","construction"],["contsructor","constructor"],["contstant","constant"],["contstants","constants"],["contstraint","constraint"],["contstructing","constructing"],["contstruction","construction"],["contstructor","constructor"],["contstructors","constructors"],["contur","contour"],["contzains","contains"],["conuntry","country"],["conusmer","consumer"],["convaless","convalesce"],["convax","convex"],["convaxiity","convexity"],["convaxly","convexly"],["convaxness","convexness"],["conveinence","convenience"],["conveinences","conveniences"],["conveinent","convenient"],["conveinience","convenience"],["conveinient","convenient"],["convenant","covenant"],["conveneince","convenience"],["conveniance","convenience"],["conveniant","convenient"],["conveniantly","conveniently"],["convenince","convenience"],["conveninent","convenient"],["convense","convince"],["convential","conventional"],["conventient","convenient"],["convenvient","convenient"],["conver","convert"],["convereted","converted"],["convergance","convergence"],["converion","conversion"],["converions","conversions"],["converison","conversion"],["converitble","convertible"],["conversly","conversely"],["conversoin","conversion"],["converson","conversion"],["conversons","conversions"],["converssion","conversion"],["converst","convert"],["convertable","convertible"],["convertables","convertibles"],["convertet","converted"],["convertion","conversion"],["convertions","conversions"],["convery","convert"],["convesion","conversion"],["convesions","conversions"],["convet","convert"],["conveted","converted"],["conveter","converter"],["conveters","converters"],["conveting","converting"],["convetion","convention"],["convetions","conventions"],["convets","converts"],["conveyer","conveyor"],["conviced","convinced"],["conviencece","convenience"],["convienence","convenience"],["convienent","convenient"],["convienience","convenience"],["convienient","convenient"],["convieniently","conveniently"],["conviently","conveniently"],["conviguration","configuration"],["convigure","configure"],["convination","combination"],["convine","combine"],["convineance","convenience"],["convineances","conveniences"],["convineient","convenient"],["convinence","convenience"],["convinences","conveniences"],["convinent","convenient"],["convinently","conveniently"],["conviniance","convenience"],["conviniances","conveniences"],["convinience","convenience"],["conviniences","conveniences"],["conviniency","convenience"],["conviniencys","conveniences"],["convinient","convenient"],["conviniently","conveniently"],["convining","combining"],["convinve","convince"],["convinved","convinced"],["convinving","convincing"],["convirted","converted"],["convirting","converting"],["convised","convinced"],["convoultion","convolution"],["convoultions","convolutions"],["convovle","convolve"],["convovled","convolved"],["convovling","convolving"],["convrt","convert"],["convserion","conversion"],["conyak","cognac"],["coodinate","coordinate"],["coodinates","coordinates"],["coodrinate","coordinate"],["coodrinates","coordinates"],["cooefficient","coefficient"],["cooefficients","coefficients"],["cooger","cougar"],["cookoo","cuckoo"],["coolent","coolant"],["coolot","culotte"],["coolots","culottes"],["coomand","command"],["coommand","command"],["coomon","common"],["coonstantly","constantly"],["coonstructed","constructed"],["cooordinate","coordinate"],["cooordinates","coordinates"],["coopearte","cooperate"],["coopeartes","cooperates"],["cooporative","cooperative"],["coordanate","coordinate"],["coordanates","coordinates"],["coordenate","coordinate"],["coordenates","coordinates"],["coordiante","coordinate"],["coordiantes","coordinates"],["coordiantion","coordination"],["coordiate","coordinate"],["coordiates","coordinates"],["coordiinates","coordinates"],["coordinatess","coordinates"],["coordinats","coordinates"],["coordindate","coordinate"],["coordindates","coordinates"],["coordine","coordinate"],["coordines","coordinates"],["coording","according"],["coordingate","coordinate"],["coordingates","coordinates"],["coordingly","accordingly"],["coordiniate","coordinate"],["coordiniates","coordinates"],["coordinite","coordinate"],["coordinites","coordinates"],["coordinnate","coordinate"],["coordinnates","coordinates"],["coordintae","coordinate"],["coordintaes","coordinates"],["coordintate","coordinate"],["coordintates","coordinates"],["coordinte","coordinate"],["coordintes","coordinates"],["coorditate","coordinate"],["coordonate","coordinate"],["coordonated","coordinated"],["coordonates","coordinates"],["coorespond","correspond"],["cooresponded","corresponded"],["coorespondend","correspondent"],["coorespondent","correspondent"],["cooresponding","corresponding"],["cooresponds","corresponds"],["cooridate","coordinate"],["cooridated","coordinated"],["cooridates","coordinates"],["cooridnate","coordinate"],["cooridnated","coordinated"],["cooridnates","coordinates"],["coorinate","coordinate"],["coorinates","coordinates"],["coorination","coordination"],["cootdinate","coordinate"],["cootdinated","coordinated"],["cootdinates","coordinates"],["cootdinating","coordinating"],["cootdination","coordination"],["copeing","copying"],["copiese","copies"],["copiing","copying"],["copiler","compiler"],["coplete","complete"],["copleted","completed"],["copletely","completely"],["copletes","completes"],["copmetitors","competitors"],["copmilation","compilation"],["copmonent","component"],["copmutations","computations"],["copntroller","controller"],["coponent","component"],["copoying","copying"],["coppermines","coppermine"],["coppied","copied"],["copright","copyright"],["coprighted","copyrighted"],["coprights","copyrights"],["coproccessor","coprocessor"],["coproccessors","coprocessors"],["coprocesor","coprocessor"],["coprorate","corporate"],["coprorates","corporates"],["coproration","corporation"],["coprorations","corporations"],["coprright","copyright"],["coprrighted","copyrighted"],["coprrights","copyrights"],["copstruction","construction"],["copuright","copyright"],["copurighted","copyrighted"],["copurights","copyrights"],["copute","compute"],["coputed","computed"],["coputer","computer"],["coputes","computes"],["copver","cover"],["copyed","copied"],["copyeight","copyright"],["copyeighted","copyrighted"],["copyeights","copyrights"],["copyied","copied"],["copyrigth","copyright"],["copyrigthed","copyrighted"],["copyrigths","copyrights"],["copyritght","copyright"],["copyritghted","copyrighted"],["copyritghts","copyrights"],["copyrught","copyright"],["copyrughted","copyrighted"],["copyrughts","copyrights"],["copys","copies"],["copytight","copyright"],["copytighted","copyrighted"],["copytights","copyrights"],["copyting","copying"],["corale","chorale"],["cordinate","coordinate"],["cordinates","coordinates"],["cordoroy","corduroy"],["cordump","coredump"],["corecct","correct"],["corecctly","correctly"],["corect","correct"],["corected","corrected"],["corecting","correcting"],["corection","correction"],["corectly","correctly"],["corectness","correctness"],["corects","corrects"],["coreespond","correspond"],["coregated","corrugated"],["corelate","correlate"],["corelated","correlated"],["corelates","correlates"],["corellation","correlation"],["coreolis","Coriolis"],["corerct","correct"],["corerctly","correctly"],["corespond","correspond"],["coresponded","corresponded"],["corespondence","correspondence"],["coresponding","corresponding"],["coresponds","corresponds"],["corfirms","confirms"],["coridal","cordial"],["corispond","correspond"],["cornmitted","committed"],["corordinate","coordinate"],["corordinates","coordinates"],["corordination","coordination"],["corosbonding","corresponding"],["corosion","corrosion"],["corospond","correspond"],["corospondance","correspondence"],["corosponded","corresponded"],["corospondence","correspondence"],["corosponding","corresponding"],["corosponds","corresponds"],["corousel","carousel"],["corparate","corporate"],["corperations","corporations"],["corpration","corporation"],["corproration","corporation"],["corprorations","corporations"],["corrcect","correct"],["corrct","correct"],["corrdinate","coordinate"],["corrdinated","coordinated"],["corrdinates","coordinates"],["corrdinating","coordinating"],["corrdination","coordination"],["corrdinator","coordinator"],["corrdinators","coordinators"],["correclty","correctly"],["correcly","correctly"],["correcpond","correspond"],["correcponded","corresponded"],["correcponding","corresponding"],["correcponds","corresponds"],["correcs","corrects"],["correctably","correctable"],["correctely","correctly"],["correcters","correctors"],["correctlly","correctly"],["correctnes","correctness"],["correcton","correction"],["correctons","corrections"],["correcttness","correctness"],["correctures","correctors"],["correcty","correctly"],["correctyly","correctly"],["correcxt","correct"],["correcy","correct"],["correect","correct"],["correectly","correctly"],["correespond","correspond"],["correesponded","corresponded"],["correespondence","correspondence"],["correespondences","correspondences"],["correespondent","correspondent"],["correesponding","corresponding"],["correesponds","corresponds"],["correlasion","correlation"],["correlatd","correlated"],["correllate","correlate"],["correllation","correlation"],["correllations","correlations"],["correnspond","correspond"],["corrensponded","corresponded"],["correnspondence","correspondence"],["correnspondences","correspondences"],["correnspondent","correspondent"],["correnspondents","correspondents"],["corrensponding","corresponding"],["corrensponds","corresponds"],["correograph","choreograph"],["correponding","corresponding"],["correponds","corresponds"],["correponsing","corresponding"],["correposding","corresponding"],["correpsondence","correspondence"],["correpsonding","corresponding"],["corresond","correspond"],["corresonded","corresponded"],["corresonding","corresponding"],["corresonds","corresponds"],["correspdoning","corresponding"],["correspending","corresponding"],["correspinding","corresponding"],["correspnding","corresponding"],["correspodence","correspondence"],["correspoding","corresponding"],["correspoinding","corresponding"],["correspomd","correspond"],["correspomded","corresponded"],["correspomdence","correspondence"],["correspomdences","correspondences"],["correspomdent","correspondent"],["correspomdents","correspondents"],["correspomding","corresponding"],["correspomds","corresponds"],["correspon","correspond"],["correspondance","correspondence"],["correspondances","correspondences"],["correspondant","correspondent"],["correspondants","correspondents"],["correspondd","corresponded"],["correspondend","correspondent"],["correspondes","corresponds"],["correspondg","corresponding"],["correspondig","corresponding"],["corresponed","corresponded"],["corresponging","corresponding"],["corresponing","corresponding"],["correspons","corresponds"],["corresponsding","corresponding"],["corresponsing","corresponding"],["correspont","correspond"],["correspontence","correspondence"],["correspontences","correspondences"],["correspontend","correspondent"],["correspontent","correspondent"],["correspontents","correspondents"],["corresponting","corresponding"],["corresponts","corresponds"],["correspoond","correspond"],["corressponding","corresponding"],["corret","correct"],["correted","corrected"],["corretion","correction"],["corretly","correctly"],["corridoor","corridor"],["corridoors","corridors"],["corrispond","correspond"],["corrispondant","correspondent"],["corrispondants","correspondents"],["corrisponded","corresponded"],["corrispondence","correspondence"],["corrispondences","correspondences"],["corrisponding","corresponding"],["corrisponds","corresponds"],["corrleation","correlation"],["corrleations","correlations"],["corrolated","correlated"],["corrolates","correlates"],["corrolation","correlation"],["corrolations","correlations"],["corrrect","correct"],["corrrected","corrected"],["corrrecting","correcting"],["corrrection","correction"],["corrrections","corrections"],["corrrectly","correctly"],["corrrectness","correctness"],["corrrects","corrects"],["corrresponding","corresponding"],["corrresponds","corresponds"],["corrrupt","corrupt"],["corrrupted","corrupted"],["corrruption","corruption"],["corrseponding","corresponding"],["corrspond","correspond"],["corrsponded","corresponded"],["corrsponding","corresponding"],["corrsponds","corresponds"],["corrupeted","corrupted"],["corruptable","corruptible"],["corruptiuon","corruption"],["cors-site","cross-site"],["cors-sute","cross-site"],["corse","course"],["corsor","cursor"],["corss-compiling","cross-compiling"],["corss-site","cross-site"],["corss-sute","cross-site"],["corsshair","crosshair"],["corsshairs","crosshairs"],["corssite","cross-site"],["corsssite","cross-site"],["corsssute","cross-site"],["corssute","cross-site"],["corupt","corrupt"],["corupted","corrupted"],["coruption","corruption"],["coruptions","corruptions"],["corupts","corrupts"],["corus","chorus"],["corvering","covering"],["cosed","closed"],["cosnsrain","constrain"],["cosnsrained","constrained"],["cosntitutive","constitutive"],["cosntrain","constrain"],["cosntrained","constrained"],["cosntraining","constraining"],["cosntraint","constraint"],["cosntraints","constraints"],["cosntructed","constructed"],["cosntructor","constructor"],["cosnumer","consumer"],["cosolation","consolation"],["cosole","console"],["cosoled","consoled"],["cosoles","consoles"],["cosoling","consoling"],["costant","constant"],["costexpr","constexpr"],["costitution","constitution"],["costruct","construct"],["costructer","constructor"],["costructor","constructor"],["costumary","customary"],["costumize","customize"],["cotain","contain"],["cotained","contained"],["cotainer","container"],["cotains","contains"],["cotave","octave"],["cotaves","octaves"],["cotnain","contain"],["cotnained","contained"],["cotnainer","container"],["cotnainers","containers"],["cotnaining","containing"],["cotnains","contains"],["cotranser","cotransfer"],["cotrasferred","cotransferred"],["cotrasfers","cotransfers"],["cotrol","control"],["cotroll","control"],["cotrolled","controlled"],["cotroller","controller"],["cotrolles","controls"],["cotrolling","controlling"],["cotrolls","controls"],["cotrols","controls"],["cotten","cotton"],["coucil","council"],["coud","could"],["coudn't","couldn't"],["coudnt","couldn't"],["coul","could"],["could'nt","couldn't"],["could't","couldn't"],["couldent","couldn't"],["coulden`t","couldn't"],["couldn;t","couldn't"],["couldnt'","couldn't"],["couldnt","couldn't"],["couldnt;","couldn't"],["coulmns","columns"],["couln't","couldn't"],["couloumb","coulomb"],["coult","could"],["coummunities","communities"],["coummunity","community"],["coumpound","compound"],["coumpounds","compounds"],["counded","counted"],["counding","counting"],["coundition","condition"],["counds","counts"],["counld","could"],["counpound","compound"],["counpounds","compounds"],["countain","contain"],["countainer","container"],["countainers","containers"],["countains","contains"],["counterfit","counterfeit"],["counterfits","counterfeits"],["counterintuive","counter intuitive"],["countermeausure","countermeasure"],["countermeausures","countermeasures"],["counterpar","counterpart"],["counterpoart","counterpart"],["counterpoarts","counterparts"],["countinue","continue"],["courtesey","courtesy"],["cousing","cousin"],["couted","counted"],["couter","counter"],["coutermeasuere","countermeasure"],["coutermeasueres","countermeasures"],["coutermeasure","countermeasure"],["coutermeasures","countermeasures"],["couterpart","counterpart"],["couting","counting"],["coutner","counter"],["coutners","counters"],["couuld","could"],["couuldn't","couldn't"],["covarage","coverage"],["covarages","coverages"],["covarege","coverage"],["covection","convection"],["covention","convention"],["coventions","conventions"],["coverd","covered"],["covere","cover"],["coveres","covers"],["covergence","convergence"],["coverred","covered"],["coversion","conversion"],["coversions","conversions"],["coverting","converting"],["covnersion","conversion"],["covnert","convert"],["covnerted","converted"],["covnerter","converter"],["covnerters","converters"],["covnertible","convertible"],["covnerting","converting"],["covnertor","converter"],["covnertors","converters"],["covnerts","converts"],["covriance","covariance"],["covriate","covariate"],["covriates","covariates"],["coyp","copy"],["coypright","copyright"],["coyprighted","copyrighted"],["coyprights","copyrights"],["coyright","copyright"],["coyrighted","copyrighted"],["coyrights","copyrights"],["cpacities","capacities"],["cpacity","capacity"],["cpation","caption"],["cpcheck","cppcheck"],["cpontent","content"],["cppp","cpp"],["cpuld","could"],["craced","graced"],["craceful","graceful"],["cracefully","gracefully"],["cracefulness","gracefulness"],["craceless","graceless"],["cracing","gracing"],["crahed","crashed"],["crahes","crashes"],["crahses","crashes"],["crashaes","crashes"],["crasheed","crashed"],["crashees","crashes"],["crashess","crashes"],["crashign","crashing"],["crashs","crashes"],["crationist","creationist"],["crationists","creationists"],["creaate","create"],["creadential","credential"],["creadentialed","credentialed"],["creadentials","credentials"],["creaed","created"],["creaeted","created"],["creasoat","creosote"],["creastor","creator"],["creatation","creation"],["createa","create"],["createable","creatable"],["createdd","created"],["createing","creating"],["createive","creative"],["creatning","creating"],["creatre","create"],["creatred","created"],["creats","creates"],["credate","created"],["credetial","credential"],["credetials","credentials"],["credidential","credential"],["credidentials","credentials"],["credintial","credential"],["credintials","credentials"],["credis","credits"],["credists","credits"],["creditted","credited"],["creedence","credence"],["cresent","crescent"],["cresits","credits"],["cretae","create"],["cretaed","created"],["cretaes","creates"],["cretaing","creating"],["cretate","create"],["cretated","created"],["cretates","creates"],["cretating","creating"],["cretator","creator"],["cretators","creators"],["creted","created"],["creteria","criteria"],["crewsant","croissant"],["cricital","critical"],["cricitally","critically"],["cricitals","criticals"],["crirical","critical"],["crirically","critically"],["criricals","criticals"],["critcal","critical"],["critcally","critically"],["critcals","criticals"],["critcial","critical"],["critcially","critically"],["critcials","criticals"],["criteak","critique"],["critera","criteria"],["critereon","criterion"],["criterias","criteria"],["criteriom","criterion"],["criticial","critical"],["criticially","critically"],["criticials","criticals"],["criticists","critics"],["critiera","criteria"],["critiical","critical"],["critiically","critically"],["critiicals","criticals"],["critisising","criticising"],["critisism","criticism"],["critisisms","criticisms"],["critized","criticized"],["critizing","criticizing"],["croch","crotch"],["crockadile","crocodile"],["crockodiles","crocodiles"],["cronological","chronological"],["cronologically","chronologically"],["croppped","cropped"],["cros","cross"],["cros-site","cross-site"],["cros-sute","cross-site"],["croshet","crochet"],["crosreference","cross-reference"],["crosreferenced","cross-referenced"],["crosreferences","cross-references"],["cross-commpilation","cross-compilation"],["cross-orgin","cross-origin"],["crossgne","crossgen"],["crossin","crossing"],["crossite","cross-site"],["crossreference","cross-reference"],["crossreferenced","cross-referenced"],["crossreferences","cross-references"],["crosssite","cross-site"],["crosssute","cross-site"],["crossute","cross-site"],["crowdsigna","crowdsignal"],["crowkay","croquet"],["crowm","crown"],["crrespond","correspond"],["crsytal","crystal"],["crsytalline","crystalline"],["crsytallisation","crystallisation"],["crsytallise","crystallise"],["crsytallization","crystallization"],["crsytallize","crystallize"],["crsytallographic","crystallographic"],["crsytals","crystals"],["crtical","critical"],["crtically","critically"],["crticals","criticals"],["crticised","criticised"],["crucialy","crucially"],["crucifiction","crucifixion"],["cruncing","crunching"],["crurrent","current"],["crusies","cruises"],["crusor","cursor"],["crutial","crucial"],["crutially","crucially"],["crutialy","crucially"],["crypted","encrypted"],["cryptocraphic","cryptographic"],["cryptograpic","cryptographic"],["crystalisation","crystallisation"],["cryto","crypto"],["crytpo","crypto"],["csae","case"],["csaes","cases"],["cteate","create"],["cteateing","creating"],["cteater","creator"],["cteates","creates"],["cteating","creating"],["cteation","creation"],["cteations","creations"],["cteator","creator"],["ctificate","certificate"],["ctificated","certificated"],["ctificates","certificates"],["ctification","certification"],["cuasality","causality"],["cuasation","causation"],["cuase","cause"],["cuased","caused"],["cuases","causes"],["cuasing","causing"],["cuestion","question"],["cuestioned","questioned"],["cuestions","questions"],["cuileoga","cuileog"],["culiminating","culminating"],["cumlative","cumulative"],["cummand","command"],["cummulated","cumulated"],["cummulative","cumulative"],["cummunicate","communicate"],["cumulatative","cumulative"],["cumulattive","cumulative"],["cuncurency","concurrency"],["curch","church"],["curcuit","circuit"],["curcuits","circuits"],["curcumstance","circumstance"],["curcumstances","circumstances"],["cureful","careful"],["curefully","carefully"],["curefuly","carefully"],["curent","current"],["curentfilter","currentfilter"],["curently","currently"],["curernt","current"],["curerntly","currently"],["curev","curve"],["curevd","curved"],["curevs","curves"],["curiousities","curiosities"],["curiousity's","curiosity's"],["curiousity","curiosity"],["curnilinear","curvilinear"],["currecnies","currencies"],["currecny","currency"],["currected","corrected"],["currecting","correcting"],["curreent","current"],["curreents","currents"],["curremt","current"],["curremtly","currently"],["curremts","currents"],["curren","current"],["currenlty","currently"],["currenly","currently"],["currennt","current"],["currenntly","currently"],["currennts","currents"],["currentl","currently"],["currentlly","currently"],["currentry","currently"],["currenty","currently"],["curresponding","corresponding"],["curretly","currently"],["curretnly","currently"],["curriculem","curriculum"],["currious","curious"],["currnet","current"],["currnt","current"],["currntly","currently"],["curros","cursor"],["currrency","currency"],["currrent","current"],["currrently","currently"],["curruent","current"],["currupt","corrupt"],["curruptable","corruptible"],["currupted","corrupted"],["curruptible","corruptible"],["curruption","corruption"],["curruptions","corruptions"],["currupts","corrupts"],["currus","cirrus"],["curser","cursor"],["cursot","cursor"],["cursro","cursor"],["curvatrue","curvature"],["curvatrues","curvatures"],["curvelinear","curvilinear"],["cusstom","custom"],["cusstomer","customer"],["cusstomers","customers"],["cusstomizable","customizable"],["cusstomization","customization"],["cusstomize","customize"],["cusstomized","customized"],["cusstoms","customs"],["custoisable","customisable"],["custoisation","customisation"],["custoise","customise"],["custoised","customised"],["custoiser","customiser"],["custoisers","customisers"],["custoising","customising"],["custoizable","customizable"],["custoization","customization"],["custoize","customize"],["custoized","customized"],["custoizer","customizer"],["custoizers","customizers"],["custoizing","customizing"],["customable","customizable"],["customie","customize"],["customied","customized"],["customisaton","customisation"],["customisatons","customisations"],["customizaton","customization"],["customizatons","customizations"],["customizeble","customizable"],["customn","custom"],["customns","customs"],["customsied","customised"],["customzied","customized"],["custon","custom"],["custonary","customary"],["custoner","customer"],["custoners","customers"],["custonisable","customisable"],["custonisation","customisation"],["custonise","customise"],["custonised","customised"],["custoniser","customiser"],["custonisers","customisers"],["custonising","customising"],["custonizable","customizable"],["custonization","customization"],["custonize","customize"],["custonized","customized"],["custonizer","customizer"],["custonizers","customizers"],["custonizing","customizing"],["custons","customs"],["custormer","customer"],["custum","custom"],["custumer","customer"],["custumised","customised"],["custumized","customized"],["custums","customs"],["cutom","custom"],["cutted","cut"],["cuurently","currently"],["cuurrent","current"],["cuurrents","currents"],["cvignore","cvsignore"],["cxan","cyan"],["cycic","cyclic"],["cyclinder","cylinder"],["cyclinders","cylinders"],["cycular","circular"],["cygin","cygwin"],["cylcic","cyclic"],["cylcical","cyclical"],["cyle","cycle"],["cylic","cyclic"],["cylider","cylinder"],["cyliders","cylinders"],["cylindical","cylindrical"],["cylindre","cylinder"],["cyllinder","cylinder"],["cyllinders","cylinders"],["cylnder","cylinder"],["cylnders","cylinders"],["cylynders","cylinders"],["cymk","CMYK"],["cyphersuite","ciphersuite"],["cyphersuites","ciphersuites"],["cyphertext","ciphertext"],["cyphertexts","ciphertexts"],["cyprt","crypt"],["cyprtic","cryptic"],["cyprto","crypto"],["Cyrllic","Cyrillic"],["cyrpto","crypto"],["cyrrent","current"],["cyrrilic","Cyrillic"],["cyrstal","crystal"],["cyrstalline","crystalline"],["cyrstallisation","crystallisation"],["cyrstallise","crystallise"],["cyrstallization","crystallization"],["cyrstallize","crystallize"],["cyrstals","crystals"],["cyrto","crypto"],["cywgin","Cygwin"],["daa","data"],["dabase","database"],["daclaration","declaration"],["dacquiri","daiquiri"],["dadlock","deadlock"],["daed","dead"],["dafault","default"],["dafaults","defaults"],["dafaut","default"],["dafualt","default"],["dafualted","defaulted"],["dafualts","defaults"],["daita","data"],["dake","take"],["dalmation","Dalmatian"],["dalta","delta"],["damamge","damage"],["damamged","damaged"],["damamges","damages"],["damamging","damaging"],["damange","damage"],["damanged","damaged"],["damanges","damages"],["damanging","damaging"],["damenor","demeanor"],["damge","damage"],["dammage","damage"],["dammages","damages"],["danceing","dancing"],["dandidates","candidates"],["daplicating","duplicating"],["Dardenelles","Dardanelles"],["dasboard","dashboard"],["dasboards","dashboards"],["dasdot","dashdot"],["dashbaord","dashboard"],["dashbaords","dashboards"],["dashboad","dashboard"],["dashboads","dashboards"],["dashboar","dashboard"],["dashboars","dashboards"],["dashbord","dashboard"],["dashbords","dashboards"],["dashs","dashes"],["data-strcuture","data-structure"],["data-strcutures","data-structures"],["databaase","database"],["databaases","databases"],["databae","database"],["databaes","database"],["databaeses","databases"],["databas","database"],["databsae","database"],["databsaes","databases"],["databse","database"],["databses","databases"],["datadsir","datadir"],["dataet","dataset"],["dataets","datasets"],["datas","data"],["datastrcuture","datastructure"],["datastrcutures","datastructures"],["datastrem","datastream"],["datatbase","database"],["datatbases","databases"],["datatgram","datagram"],["datatgrams","datagrams"],["datatore","datastore"],["datatores","datastores"],["datatpe","datatype"],["datatpes","datatypes"],["datatpye","datatype"],["datatpyes","datatypes"],["datatset","dataset"],["datatsets","datasets"],["datatstructure","datastructure"],["datatstructures","datastructures"],["datattype","datatype"],["datattypes","datatypes"],["datatye","datatype"],["datatyep","datatype"],["datatyepe","datatype"],["datatyepes","datatypes"],["datatyeps","datatypes"],["datatyes","datatypes"],["datatyoe","datatype"],["datatyoes","datatypes"],["datatytpe","datatype"],["datatytpes","datatypes"],["dataum","datum"],["datbase","database"],["datbases","databases"],["datecreatedd","datecreated"],["datection","detection"],["datections","detections"],["datee","date"],["dateset","dataset"],["datesets","datasets"],["datset","dataset"],["datsets","datasets"],["daugher","daughter"],["daugther","daughter"],["daugthers","daughters"],["dbeian","Debian"],["DCHP","DHCP"],["dcok","dock"],["dcoked","docked"],["dcoker","docker"],["dcoking","docking"],["dcoks","docks"],["dcument","document"],["dcumented","documented"],["dcumenting","documenting"],["dcuments","documents"],["ddelete","delete"],["de-actived","deactivated"],["de-duplacate","de-duplicate"],["de-duplacated","de-duplicated"],["de-duplacates","de-duplicates"],["de-duplacation","de-duplication"],["de-duplacte","de-duplicate"],["de-duplacted","de-duplicated"],["de-duplactes","de-duplicates"],["de-duplaction","de-duplication"],["de-duplaicate","de-duplicate"],["de-duplaicated","de-duplicated"],["de-duplaicates","de-duplicates"],["de-duplaication","de-duplication"],["de-duplate","de-duplicate"],["de-duplated","de-duplicated"],["de-duplates","de-duplicates"],["de-duplation","de-duplication"],["de-fualt","default"],["de-fualts","defaults"],["de-registeres","de-registers"],["deacitivation","deactivation"],["deacitvated","deactivated"],["deactivatiion","deactivation"],["deactive","deactivate"],["deactiveate","deactivate"],["deactived","deactivated"],["deactivete","deactivate"],["deactiveted","deactivated"],["deactivetes","deactivates"],["deactiviate","deactivate"],["deactiviates","deactivates"],["deactiving","deactivating"],["deaemon","daemon"],["deafault","default"],["deafualt","default"],["deafualts","defaults"],["deafult","default"],["deafulted","defaulted"],["deafults","defaults"],["deail","deal"],["deailing","dealing"],["deaktivate","deactivate"],["deaktivated","deactivated"],["dealed","dealt"],["dealilng","dealing"],["dealloacte","deallocate"],["deallocaed","deallocated"],["dealocate","deallocate"],["dealte","delete"],["deamand","demand"],["deamanding","demanding"],["deamands","demands"],["deambigate","disambiguate"],["deambigates","disambiguates"],["deambigation","disambiguation"],["deambiguage","disambiguate"],["deambiguages","disambiguates"],["deambiguate","disambiguate"],["deambiguates","disambiguates"],["deambiguation","disambiguation"],["deamiguate","disambiguate"],["deamiguates","disambiguates"],["deamiguation","disambiguation"],["deamon","daemon"],["deamonisation","daemonisation"],["deamonise","daemonise"],["deamonised","daemonised"],["deamonises","daemonises"],["deamonising","daemonising"],["deamonization","daemonization"],["deamonize","daemonize"],["deamonized","daemonized"],["deamonizes","daemonizes"],["deamonizing","daemonizing"],["deamons","daemons"],["deassering","deasserting"],["deatch","detach"],["deatched","detached"],["deatches","detaches"],["deatching","detaching"],["deatil","detail"],["deatiled","detailed"],["deatiling","detailing"],["deatils","details"],["deativate","deactivate"],["deativated","deactivated"],["deativates","deactivates"],["deativation","deactivation"],["deattach","detach"],["deattached","detached"],["deattaches","detaches"],["deattaching","detaching"],["deattachment","detachment"],["deault","default"],["deaults","defaults"],["deauthenication","deauthentication"],["debain","Debian"],["debateable","debatable"],["debbuger","debugger"],["debehlper","debhelper"],["debgu","debug"],["debgug","debug"],["debguging","debugging"],["debhlper","debhelper"],["debia","Debian"],["debiab","Debian"],["debians","Debian's"],["debina","Debian"],["debloking","deblocking"],["debnia","Debian"],["debth","depth"],["debths","depths"],["debudg","debug"],["debudgged","debugged"],["debudgger","debugger"],["debudgging","debugging"],["debudgs","debugs"],["debufs","debugfs"],["debugee","debuggee"],["debuger","debugger"],["debugg","debug"],["debuggg","debug"],["debuggge","debuggee"],["debuggged","debugged"],["debugggee","debuggee"],["debuggger","debugger"],["debuggging","debugging"],["debugggs","debugs"],["debugginf","debugging"],["debuggs","debugs"],["debuging","debugging"],["decaffinated","decaffeinated"],["decalare","declare"],["decalared","declared"],["decalares","declares"],["decalaring","declaring"],["decalration","declaration"],["decalrations","declarations"],["decalratiosn","declarations"],["decapsulting","decapsulating"],["decathalon","decathlon"],["deccelerate","decelerate"],["deccelerated","decelerated"],["deccelerates","decelerates"],["deccelerating","decelerating"],["decceleration","deceleration"],["deccrement","decrement"],["deccremented","decremented"],["deccrements","decrements"],["Decemer","December"],["decend","descend"],["decendant","descendant"],["decendants","descendants"],["decendentant","descendant"],["decendentants","descendants"],["decending","descending"],["deciaml","decimal"],["deciamls","decimals"],["decices","decides"],["decidate","dedicate"],["decidated","dedicated"],["decidates","dedicates"],["decideable","decidable"],["decidely","decidedly"],["decie","decide"],["deciedd","decided"],["deciede","decide"],["decieded","decided"],["deciedes","decides"],["decieding","deciding"],["decieds","decides"],["deciemal","decimal"],["decies","decides"],["decieve","deceive"],["decieved","deceived"],["decieves","deceives"],["decieving","deceiving"],["decimials","decimals"],["decison","decision"],["decission","decision"],["declar","declare"],["declaraion","declaration"],["declaraions","declarations"],["declarated","declared"],["declaratinos","declarations"],["declaratiom","declaration"],["declaraton","declaration"],["declaratons","declarations"],["declarayion","declaration"],["declarayions","declarations"],["declard","declared"],["declarded","declared"],["declaritive","declarative"],["declaritively","declaratively"],["declarnig","declaring"],["declartated","declared"],["declartation","declaration"],["declartations","declarations"],["declartative","declarative"],["declartator","declarator"],["declartators","declarators"],["declarted","declared"],["declartion","declaration"],["declartions","declarations"],["declartiuon","declaration"],["declartiuons","declarations"],["declartiuve","declarative"],["declartive","declarative"],["declartor","declarator"],["declartors","declarators"],["declataions","declarations"],["declatation","declaration"],["declatations","declarations"],["declated","declared"],["declation","declaration"],["declations","declarations"],["declatory","declaratory"],["decleration","declaration"],["declerations","declarations"],["declration","declaration"],["decocde","decode"],["decocded","decoded"],["decocder","decoder"],["decocders","decoders"],["decocdes","decodes"],["decocding","decoding"],["decocdings","decodings"],["decodded","decoded"],["decodding","decoding"],["decodeing","decoding"],["decomissioned","decommissioned"],["decomissioning","decommissioning"],["decommissionn","decommission"],["decommissionned","decommissioned"],["decommpress","decompress"],["decomoposition","decomposition"],["decomposion","decomposition"],["decomposit","decompose"],["decomposited","decomposed"],["decompositing","decomposing"],["decompositon","decomposition"],["decompositons","decompositions"],["decomposits","decomposes"],["decompostion","decomposition"],["decompostition","decomposition"],["decompres","decompress"],["decompresed","decompressed"],["decompreser","decompressor"],["decompreses","decompresses"],["decompresing","decompressing"],["decompresion","decompression"],["decompresor","decompressor"],["decompressd","decompressed"],["decompresser","decompressor"],["decompresssion","decompression"],["decompse","decompose"],["decond","decode"],["deconde","decode"],["deconded","decoded"],["deconder","decoder"],["deconders","decoders"],["decondes","decodes"],["deconding","decoding"],["decondings","decodings"],["deconstract","deconstruct"],["deconstracted","deconstructed"],["deconstrcutor","deconstructor"],["decopose","decompose"],["decoposes","decomposes"],["decoraded","decorated"],["decoratrion","decoration"],["decorde","decode"],["decorded","decoded"],["decorder","decoder"],["decorders","decoders"],["decordes","decodes"],["decording","decoding"],["decordings","decodings"],["decorrellation","decorrelation"],["decortator","decorator"],["decortive","decorative"],["decose","decode"],["decosed","decoded"],["decoser","decoder"],["decosers","decoders"],["decoses","decodes"],["decosing","decoding"],["decosings","decodings"],["decration","decoration"],["decreace","decrease"],["decreas","decrease"],["decremenet","decrement"],["decremenetd","decremented"],["decremeneted","decremented"],["decrese","decrease"],["decress","decrees"],["decribe","describe"],["decribed","described"],["decribes","describes"],["decribing","describing"],["decriptive","descriptive"],["decriptor","descriptor"],["decriptors","descriptors"],["decrmenet","decrement"],["decrmenetd","decremented"],["decrmeneted","decremented"],["decrment","decrement"],["decrmented","decremented"],["decrmenting","decrementing"],["decrments","decrements"],["decroation","decoration"],["decrpt","decrypt"],["decrpted","decrypted"],["decrption","decryption"],["decrytion","decryption"],["decscription","description"],["decsion","decision"],["decsions","decisions"],["decsiptors","descriptors"],["decsribed","described"],["decsriptor","descriptor"],["decsriptors","descriptors"],["decstiption","description"],["decstiptions","descriptions"],["dectect","detect"],["dectected","detected"],["dectecting","detecting"],["dectection","detection"],["dectections","detections"],["dectector","detector"],["dectivate","deactivate"],["decutable","deductible"],["decutables","deductibles"],["decypher","decipher"],["decyphered","deciphered"],["ded","dead"],["dedault","default"],["dedections","detections"],["dedented","indented"],["dedfined","defined"],["dedidate","dedicate"],["dedidated","dedicated"],["dedidates","dedicates"],["dedly","deadly"],["deductable","deductible"],["deductables","deductibles"],["deduplacate","deduplicate"],["deduplacated","deduplicated"],["deduplacates","deduplicates"],["deduplacation","deduplication"],["deduplacte","deduplicate"],["deduplacted","deduplicated"],["deduplactes","deduplicates"],["deduplaction","deduplication"],["deduplaicate","deduplicate"],["deduplaicated","deduplicated"],["deduplaicates","deduplicates"],["deduplaication","deduplication"],["deduplate","deduplicate"],["deduplated","deduplicated"],["deduplates","deduplicates"],["deduplation","deduplication"],["dedupliate","deduplicate"],["dedupliated","deduplicated"],["deecorator","decorator"],["deeep","deep"],["deelte","delete"],["deendencies","dependencies"],["deendency","dependency"],["defail","detail"],["defailt","default"],["defalt","default"],["defalts","defaults"],["defalut","default"],["defargkey","defragkey"],["defatult","default"],["defaukt","default"],["defaul","default"],["defaulat","default"],["defaulats","defaults"],["defauld","default"],["defaulds","defaults"],["defaule","default"],["defaules","defaults"],["defaulf","default"],["defaulfs","defaults"],["defaulg","default"],["defaulgs","defaults"],["defaulh","default"],["defaulhs","defaults"],["defauling","defaulting"],["defaulit","default"],["defaulits","defaults"],["defaulkt","default"],["defaulkts","defaults"],["defaull","default"],["defaulls","defaults"],["defaullt","default"],["defaullts","defaults"],["defaulr","default"],["defaulrs","defaults"],["defaulrt","default"],["defaulrts","defaults"],["defaultet","defaulted"],["defaulty","default"],["defauly","default"],["defaulys","defaults"],["defaut","default"],["defautl","default"],["defautled","defaulted"],["defautling","defaulting"],["defautls","defaults"],["defautlt","default"],["defautly","default"],["defauts","defaults"],["defautt","default"],["defautted","defaulted"],["defautting","defaulting"],["defautts","defaults"],["defeault","default"],["defeaulted","defaulted"],["defeaulting","defaulting"],["defeaults","defaults"],["defecit","deficit"],["defeine","define"],["defeines","defines"],["defenate","definite"],["defenately","definitely"],["defendent","defendant"],["defendents","defendants"],["defenitely","definitely"],["defenition","definition"],["defenitions","definitions"],["defenitly","definitely"],["deferal","deferral"],["deferals","deferrals"],["deferance","deference"],["defered","deferred"],["deferencing","dereferencing"],["deferentiating","differentiating"],["defering","deferring"],["deferreal","deferral"],["deffensively","defensively"],["defferently","differently"],["deffering","differing"],["defferred","deferred"],["deffine","define"],["deffined","defined"],["deffinition","definition"],["deffinitively","definitively"],["deffirent","different"],["defiantely","defiantly"],["defice","device"],["defien","define"],["defiend","defined"],["defiened","defined"],["defin","define"],["definad","defined"],["definance","defiance"],["definate","definite"],["definately","definitely"],["defination","definition"],["definations","definitions"],["definatly","definitely"],["definding","defining"],["defineas","defines"],["defineed","defined"],["definend","defined"],["definete","definite"],["definetelly","definitely"],["definetely","definitely"],["definetly","definitely"],["definiation","definition"],["definied","defined"],["definietly","definitely"],["definifiton","definition"],["definining","defining"],["defininition","definition"],["defininitions","definitions"],["definintion","definition"],["definit","definite"],["definitian","definition"],["definitiion","definition"],["definitiions","definitions"],["definitio","definition"],["definitios","definitions"],["definitivly","definitively"],["definitly","definitely"],["definitoin","definition"],["definiton","definition"],["definitons","definitions"],["definned","defined"],["definnition","definition"],["defintian","definition"],["defintiion","definition"],["defintiions","definitions"],["defintion","definition"],["defintions","definitions"],["defintition","definition"],["defintivly","definitively"],["defition","definition"],["defitions","definitions"],["deflaut","default"],["defninition","definition"],["defninitions","definitions"],["defnitions","definitions"],["defore","before"],["defqault","default"],["defragmenation","defragmentation"],["defualt","default"],["defualtdict","defaultdict"],["defualts","defaults"],["defult","default"],["defulted","defaulted"],["defulting","defaulting"],["defults","defaults"],["degenarate","degenerate"],["degenarated","degenerated"],["degenarating","degenerating"],["degenaration","degeneration"],["degenracy","degeneracy"],["degenrate","degenerate"],["degenrated","degenerated"],["degenrates","degenerates"],["degenratet","degenerated"],["degenrating","degenerating"],["degenration","degeneration"],["degerate","degenerate"],["degeree","degree"],["degnerate","degenerate"],["degnerated","degenerated"],["degnerates","degenerates"],["degrads","degrades"],["degration","degradation"],["degredation","degradation"],["degreee","degree"],["degreeee","degree"],["degreeees","degrees"],["degreees","degrees"],["deifne","define"],["deifned","defined"],["deifnes","defines"],["deifning","defining"],["deimiter","delimiter"],["deine","define"],["deinitailse","deinitialise"],["deinitailze","deinitialize"],["deinitalized","deinitialized"],["deinstantating","deinstantiating"],["deintialize","deinitialize"],["deintialized","deinitialized"],["deintializing","deinitializing"],["deisgn","design"],["deisgned","designed"],["deisgner","designer"],["deisgners","designers"],["deisgning","designing"],["deisgns","designs"],["deivative","derivative"],["deivatives","derivatives"],["deivce","device"],["deivces","devices"],["deivices","devices"],["deklaration","declaration"],["dekstop","desktop"],["dekstops","desktops"],["dektop","desktop"],["dektops","desktops"],["delagate","delegate"],["delagates","delegates"],["delaloc","delalloc"],["delalyed","delayed"],["delapidated","dilapidated"],["delaraction","declaration"],["delaractions","declarations"],["delarations","declarations"],["delare","declare"],["delared","declared"],["delares","declares"],["delaring","declaring"],["delate","delete"],["delayis","delays"],["delcarations","declarations"],["delcare","declare"],["delcared","declared"],["delcares","declares"],["delclaration","declaration"],["delele","delete"],["delelete","delete"],["deleleted","deleted"],["deleletes","deletes"],["deleleting","deleting"],["delelte","delete"],["delemeter","delimiter"],["delemiter","delimiter"],["delerious","delirious"],["delet","delete"],["deletd","deleted"],["deleteable","deletable"],["deleteed","deleted"],["deleteing","deleting"],["deleteion","deletion"],["deleteting","deleting"],["deletiong","deletion"],["delets","deletes"],["delevopment","development"],["delevopp","develop"],["delgate","delegate"],["delgated","delegated"],["delgates","delegates"],["delgating","delegating"],["delgation","delegation"],["delgations","delegations"],["delgator","delegator"],["delgators","delegators"],["deliberatey","deliberately"],["deliberatly","deliberately"],["deliberite","deliberate"],["deliberitely","deliberately"],["delibery","delivery"],["delibrate","deliberate"],["delibrately","deliberately"],["delievering","delivering"],["delievery","delivery"],["delievred","delivered"],["delievries","deliveries"],["delievry","delivery"],["delimeted","delimited"],["delimeter","delimiter"],["delimeters","delimiters"],["delimiited","delimited"],["delimiiter","delimiter"],["delimiiters","delimiters"],["delimitiaion","delimitation"],["delimitiaions","delimitations"],["delimitiation","delimitation"],["delimitiations","delimitations"],["delimitied","delimited"],["delimitier","delimiter"],["delimitiers","delimiters"],["delimitiing","delimiting"],["delimitimg","delimiting"],["delimition","delimitation"],["delimitions","delimitations"],["delimitis","delimits"],["delimititation","delimitation"],["delimititations","delimitations"],["delimitited","delimited"],["delimititer","delimiter"],["delimititers","delimiters"],["delimititing","delimiting"],["delimitor","delimiter"],["delimitors","delimiters"],["delimitted","delimited"],["delimma","dilemma"],["delimted","delimited"],["delimters","delimiter"],["delink","unlink"],["delivared","delivered"],["delivative","derivative"],["delivatives","derivatives"],["deliverate","deliberate"],["delivermode","deliverymode"],["deliverying","delivering"],["delte","delete"],["delted","deleted"],["deltes","deletes"],["delting","deleting"],["deltion","deletion"],["delusionally","delusively"],["delvery","delivery"],["demaind","demand"],["demenor","demeanor"],["demension","dimension"],["demensional","dimensional"],["demensions","dimensions"],["demodualtor","demodulator"],["demog","demo"],["demographical","demographic"],["demolishon","demolition"],["demolision","demolition"],["demoninator","denominator"],["demoninators","denominators"],["demonstates","demonstrates"],["demonstrat","demonstrate"],["demonstrats","demonstrates"],["demorcracy","democracy"],["demostrate","demonstrate"],["demostrated","demonstrated"],["demostrates","demonstrates"],["demostrating","demonstrating"],["demostration","demonstration"],["demudulator","demodulator"],["denegrating","denigrating"],["denisty","density"],["denomitator","denominator"],["denomitators","denominators"],["densitity","density"],["densly","densely"],["denstiy","density"],["deocde","decode"],["deocded","decoded"],["deocder","decoder"],["deocders","decoders"],["deocdes","decodes"],["deocding","decoding"],["deocdings","decodings"],["deoes","does"],["deoesn't","doesn't"],["deompression","decompression"],["depandance","dependence"],["depandancies","dependencies"],["depandancy","dependency"],["depandent","dependent"],["deparment","department"],["deparmental","departmental"],["deparments","departments"],["depcrecated","deprecated"],["depden","depend"],["depdence","dependence"],["depdencente","dependence"],["depdencentes","dependences"],["depdences","dependences"],["depdencies","dependencies"],["depdency","dependency"],["depdend","depend"],["depdendancies","dependencies"],["depdendancy","dependency"],["depdendant","dependent"],["depdendants","dependents"],["depdended","depended"],["depdendence","dependence"],["depdendences","dependences"],["depdendencies","dependencies"],["depdendency","dependency"],["depdendent","dependent"],["depdendents","dependents"],["depdendet","dependent"],["depdendets","dependents"],["depdending","depending"],["depdends","depends"],["depdenence","dependence"],["depdenences","dependences"],["depdenencies","dependencies"],["depdenency","dependency"],["depdenent","dependent"],["depdenents","dependents"],["depdening","depending"],["depdenncies","dependencies"],["depdenncy","dependency"],["depdens","depends"],["depdent","dependent"],["depdents","dependents"],["depecated","deprecated"],["depedencies","dependencies"],["depedency","dependency"],["depedencys","dependencies"],["depedent","dependent"],["depeding","depending"],["depencencies","dependencies"],["depencency","dependency"],["depencendencies","dependencies"],["depencendency","dependency"],["depencendencys","dependencies"],["depencent","dependent"],["depencies","dependencies"],["depency","dependency"],["dependance","dependence"],["dependancies","dependencies"],["dependancy","dependency"],["dependancys","dependencies"],["dependand","dependent"],["dependcies","dependencies"],["dependcy","dependency"],["dependding","depending"],["dependecies","dependencies"],["dependecy","dependency"],["dependecys","dependencies"],["dependedn","dependent"],["dependees","dependencies"],["dependeing","depending"],["dependenceis","dependencies"],["dependencey","dependency"],["dependencie","dependency"],["dependencied","dependency"],["dependenciens","dependencies"],["dependencis","dependencies"],["dependencys","dependencies"],["dependendencies","dependencies"],["dependendency","dependency"],["dependendent","dependent"],["dependenies","dependencies"],["dependening","depending"],["dependeny","dependency"],["dependet","dependent"],["dependices","dependencies"],["dependicy","dependency"],["dependig","depending"],["dependncies","dependencies"],["dependncy","dependency"],["depened","depend"],["depenedecies","dependencies"],["depenedecy","dependency"],["depenedent","dependent"],["depenencies","dependencies"],["depenencis","dependencies"],["depenency","dependency"],["depenencys","dependencies"],["depenend","depend"],["depenendecies","dependencies"],["depenendecy","dependency"],["depenendence","dependence"],["depenendencies","dependencies"],["depenendency","dependency"],["depenendent","dependent"],["depenending","depending"],["depenent","dependent"],["depenently","dependently"],["depennding","depending"],["depent","depend"],["deperecate","deprecate"],["deperecated","deprecated"],["deperecates","deprecates"],["deperecating","deprecating"],["deploied","deployed"],["deploiment","deployment"],["deploiments","deployments"],["deployement","deployment"],["deploymenet","deployment"],["deploymenets","deployments"],["depndant","dependent"],["depnds","depends"],["deporarily","temporarily"],["deposint","deposing"],["depracated","deprecated"],["depreacte","deprecate"],["depreacted","deprecated"],["depreacts","deprecates"],["depreate","deprecate"],["depreated","deprecated"],["depreates","deprecates"],["depreating","deprecating"],["deprecatedf","deprecated"],["deprectaed","deprecated"],["deprectat","deprecate"],["deprectate","deprecate"],["deprectated","deprecated"],["deprectates","deprecates"],["deprectating","deprecating"],["deprectation","deprecation"],["deprectats","deprecates"],["deprected","deprecated"],["depricate","deprecate"],["depricated","deprecated"],["depricates","deprecates"],["depricating","deprecating"],["dequed","dequeued"],["dequeing","dequeuing"],["deques","dequeues"],["derageable","dirigible"],["derective","directive"],["derectory","directory"],["derefence","dereference"],["derefenced","dereferenced"],["derefencing","dereferencing"],["derefenrence","dereference"],["dereferance","dereference"],["dereferanced","dereferenced"],["dereferances","dereferences"],["dereferencable","dereferenceable"],["dereferencce","dereference"],["dereferencced","dereferenced"],["dereferencces","dereferences"],["dereferenccing","dereferencing"],["derefernce","dereference"],["derefernced","dereferenced"],["dereferncence","dereference"],["dereferncencer","dereferencer"],["dereferncencers","dereferencers"],["dereferncences","dereferences"],["dereferncer","dereferencer"],["dereferncers","dereferencers"],["derefernces","dereferences"],["dereferncing","dereferencing"],["derefernece","dereference"],["derefrencable","dereferenceable"],["derefrence","dereference"],["deregistartion","deregistration"],["deregisted","deregistered"],["deregisteres","deregisters"],["deregistrated","deregistered"],["deregistred","deregistered"],["deregiter","deregister"],["deregiters","deregisters"],["derevative","derivative"],["derevatives","derivatives"],["derferencing","dereferencing"],["derfien","define"],["derfiend","defined"],["derfine","define"],["derfined","defined"],["dergeistered","deregistered"],["dergistration","deregistration"],["deriair","derriere"],["dericed","derived"],["dericteries","directories"],["derictery","directory"],["dericteryes","directories"],["dericterys","directories"],["deriffed","derived"],["derivaties","derivatives"],["derivatio","derivation"],["derivativ","derivative"],["derivativs","derivatives"],["deriviated","derived"],["derivitive","derivative"],["derivitives","derivatives"],["derivitivs","derivatives"],["derivtive","derivative"],["derivtives","derivatives"],["dermine","determine"],["dermined","determined"],["dermines","determines"],["dermining","determining"],["derogitory","derogatory"],["derprecated","deprecated"],["derrivatives","derivatives"],["derrive","derive"],["derrived","derived"],["dertermine","determine"],["derterming","determining"],["derth","dearth"],["derviative","derivative"],["derviatives","derivatives"],["dervie","derive"],["dervied","derived"],["dervies","derives"],["dervived","derived"],["desactivate","deactivate"],["desactivated","deactivated"],["desallocate","deallocate"],["desallocated","deallocated"],["desallocates","deallocates"],["desaster","disaster"],["descallocate","deallocate"],["descallocated","deallocated"],["descchedules","deschedules"],["desccription","description"],["descencing","descending"],["descendands","descendants"],["descibe","describe"],["descibed","described"],["descibes","describes"],["descibing","describing"],["descide","decide"],["descided","decided"],["descides","decides"],["desciding","deciding"],["desciption","description"],["desciptions","descriptions"],["desciptor","descriptor"],["desciptors","descriptors"],["desciribe","describe"],["desciribed","described"],["desciribes","describes"],["desciribing","describing"],["desciription","description"],["desciriptions","descriptions"],["descirption","description"],["descirptor","descriptor"],["descision","decision"],["descisions","decisions"],["descize","disguise"],["descized","disguised"],["descktop","desktop"],["descktops","desktops"],["desconstructed","deconstructed"],["descover","discover"],["descovered","discovered"],["descovering","discovering"],["descovery","discovery"],["descrease","decrease"],["descreased","decreased"],["descreases","decreases"],["descreasing","decreasing"],["descrementing","decrementing"],["descrete","discrete"],["describ","describe"],["describbed","described"],["describibg","describing"],["describng","describing"],["describtion","description"],["describtions","descriptions"],["descrice","describe"],["descriced","described"],["descrices","describes"],["descricing","describing"],["descrie","describe"],["descriibes","describes"],["descriminant","discriminant"],["descriminate","discriminate"],["descriminated","discriminated"],["descriminates","discriminates"],["descriminating","discriminating"],["descriont","description"],["descriotor","descriptor"],["descripe","describe"],["descriped","described"],["descripes","describes"],["descriping","describing"],["descripition","description"],["descripor","descriptor"],["descripors","descriptors"],["descripter","descriptor"],["descripters","descriptors"],["descriptio","description"],["descriptiom","description"],["descriptionm","description"],["descriptior","descriptor"],["descriptiors","descriptors"],["descripto","descriptor"],["descriptoin","description"],["descriptoins","descriptions"],["descripton","description"],["descriptons","descriptions"],["descriptot","descriptor"],["descriptoy","descriptor"],["descriptuve","descriptive"],["descrition","description"],["descritpion","description"],["descritpions","descriptions"],["descritpiton","description"],["descritpitons","descriptions"],["descritpor","descriptor"],["descritpors","descriptors"],["descritpr","descriptor"],["descritpro","descriptor"],["descritpros","descriptors"],["descritprs","descriptors"],["descritption","description"],["descritptions","descriptions"],["descritptive","descriptive"],["descritptor","descriptor"],["descritptors","descriptors"],["descrption","description"],["descrptions","descriptions"],["descrptor","descriptor"],["descrptors","descriptors"],["descrtiption","description"],["descrtiptions","descriptions"],["descrutor","destructor"],["descrybe","describe"],["descrybing","describing"],["descryption","description"],["descryptions","descriptions"],["desctiption","description"],["desctiptor","descriptor"],["desctiptors","descriptors"],["desctop","desktop"],["desctructed","destructed"],["desctruction","destruction"],["desctructive","destructive"],["desctructor","destructor"],["desctructors","destructors"],["descuss","discuss"],["descvription","description"],["descvriptions","descriptions"],["deselct","deselect"],["deselctable","deselectable"],["deselctables","deselectable"],["deselcted","deselected"],["deselcting","deselecting"],["desepears","disappears"],["deserailise","deserialise"],["deserailize","deserialize"],["deserialisazion","deserialisation"],["deserializaed","deserialized"],["deserializazion","deserialization"],["deserialsiation","deserialisation"],["deserialsie","deserialise"],["deserialsied","deserialised"],["deserialsies","deserialises"],["deserialsing","deserialising"],["deserialze","deserialize"],["deserialzed","deserialized"],["deserialzes","deserializes"],["deserialziation","deserialization"],["deserialzie","deserialize"],["deserialzied","deserialized"],["deserialzies","deserializes"],["deserialzing","deserializing"],["desgin","design"],["desgin-mode","design-mode"],["desgined","designed"],["desginer","designer"],["desiar","desire"],["desicate","desiccate"],["desicion","decision"],["desicions","decisions"],["deside","decide"],["desided","decided"],["desides","decides"],["desig","design"],["desigern","designer"],["desigining","designing"],["designd","designed"],["desination","destination"],["desinations","destinations"],["desine","design"],["desing","design"],["desingable","designable"],["desinged","designed"],["desinger","designer"],["desinging","designing"],["desingn","design"],["desingned","designed"],["desingner","designer"],["desingning","designing"],["desingns","designs"],["desings","designs"],["desintaiton","destination"],["desintaitons","destinations"],["desintation","destination"],["desintations","destinations"],["desintegrated","disintegrated"],["desintegration","disintegration"],["desipite","despite"],["desireable","desirable"],["desision","decision"],["desisions","decisions"],["desitable","desirable"],["desitination","destination"],["desitinations","destinations"],["desition","decision"],["desitions","decisions"],["desitned","destined"],["deskop","desktop"],["deskops","desktops"],["desktiop","desktop"],["deskys","disguise"],["deslected","deselected"],["deslects","deselects"],["desltop","desktop"],["desltops","desktops"],["desn't","doesn't"],["desne","dense"],["desnse","dense"],["desogn","design"],["desogned","designed"],["desogner","designer"],["desogning","designing"],["desogns","designs"],["desolve","dissolve"],["desorder","disorder"],["desoriented","disoriented"],["desparately","desperately"],["despatch","dispatch"],["despict","depict"],["despiration","desperation"],["desplay","display"],["desplayed","displayed"],["desplays","displays"],["desposition","disposition"],["desrciption","description"],["desrciptions","descriptions"],["desribe","describe"],["desribed","described"],["desribes","describes"],["desribing","describing"],["desription","description"],["desriptions","descriptions"],["desriptor","descriptor"],["desriptors","descriptors"],["desrire","desire"],["desrired","desired"],["desroyer","destroyer"],["desscribe","describe"],["desscribing","describing"],["desscription","description"],["dessicate","desiccate"],["dessicated","desiccated"],["dessication","desiccation"],["dessigned","designed"],["desstructor","destructor"],["destablized","destabilized"],["destanation","destination"],["destanations","destinations"],["destiantion","destination"],["destiantions","destinations"],["destiation","destination"],["destiations","destinations"],["destinaion","destination"],["destinaions","destinations"],["destinaiton","destination"],["destinaitons","destinations"],["destinarion","destination"],["destinarions","destinations"],["destinataion","destination"],["destinataions","destinations"],["destinatin","destination"],["destinatino","destination"],["destinatinos","destinations"],["destinatins","destinations"],["destinaton","destination"],["destinatons","destinations"],["destinguish","distinguish"],["destintation","destination"],["destintations","destinations"],["destionation","destination"],["destionations","destinations"],["destop","desktop"],["destops","desktops"],["destoried","destroyed"],["destort","distort"],["destory","destroy"],["destoryed","destroyed"],["destorying","destroying"],["destorys","destroys"],["destoy","destroy"],["destoyed","destroyed"],["destrcut","destruct"],["destrcuted","destructed"],["destrcutor","destructor"],["destrcutors","destructors"],["destribute","distribute"],["destributed","distributed"],["destroi","destroy"],["destroied","destroyed"],["destroing","destroying"],["destrois","destroys"],["destroyes","destroys"],["destruciton","destruction"],["destructro","destructor"],["destructros","destructors"],["destruktor","destructor"],["destruktors","destructors"],["destrutor","destructor"],["destrutors","destructors"],["destry","destroy"],["destryed","destroyed"],["destryer","destroyer"],["destrying","destroying"],["destryiong","destroying"],["destryoed","destroyed"],["destryoing","destroying"],["destryong","destroying"],["destrys","destroys"],["destuction","destruction"],["destuctive","destructive"],["destuctor","destructor"],["destuctors","destructors"],["desturcted","destructed"],["desturtor","destructor"],["desturtors","destructors"],["desychronize","desynchronize"],["desychronized","desynchronized"],["detabase","database"],["detachs","detaches"],["detahced","detached"],["detaild","detailed"],["detailled","detailed"],["detais","details"],["detals","details"],["detatch","detach"],["detatched","detached"],["detatches","detaches"],["detatching","detaching"],["detault","default"],["detaulted","defaulted"],["detaulting","defaulting"],["detaults","defaults"],["detction","detection"],["detctions","detections"],["deteced","detected"],["detecing","detecting"],["detecion","detection"],["detecions","detections"],["detectected","detected"],["detectes","detects"],["detectetd","detected"],["detectsion","detection"],["detectsions","detections"],["detemine","determine"],["detemined","determined"],["detemines","determines"],["detemining","determining"],["deteoriated","deteriorated"],["deterant","deterrent"],["deteremine","determine"],["deteremined","determined"],["deteriate","deteriorate"],["deterimined","determined"],["deterine","determine"],["deterioriating","deteriorating"],["determaine","determine"],["determenant","determinant"],["determenistic","deterministic"],["determiens","determines"],["determimnes","determines"],["determin","determine"],["determinated","determined"],["determind","determined"],["determinded","determined"],["determinee","determine"],["determineing","determining"],["determinining","determining"],["deterministinc","deterministic"],["determinne","determine"],["determins","determines"],["determinse","determines"],["determinstic","deterministic"],["determinstically","deterministically"],["determintes","determines"],["determnine","determine"],["deternine","determine"],["detetmine","determine"],["detial","detail"],["detialed","detailed"],["detialing","detailing"],["detials","details"],["detination","destination"],["detinations","destinations"],["detremental","detrimental"],["detremining","determining"],["detrmine","determine"],["detrmined","determined"],["detrmines","determines"],["detrmining","determining"],["detroy","destroy"],["detroyed","destroyed"],["detroying","destroying"],["detroys","destroys"],["detructed","destructed"],["dettach","detach"],["dettaching","detaching"],["detur","detour"],["deturance","deterrence"],["deubug","debug"],["deubuging","debugging"],["deug","debug"],["deugging","debugging"],["devasted","devastated"],["devation","deviation"],["devce","device"],["devcent","decent"],["devcie","device"],["devcies","devices"],["develoers","developers"],["develoment","development"],["develoments","developments"],["develompent","development"],["develompental","developmental"],["develompents","developments"],["develope","develop"],["developement","development"],["developements","developments"],["developmemt","development"],["developmet","development"],["developmetns","developments"],["developmets","developments"],["developp","develop"],["developpe","develop"],["developped","developed"],["developpement","development"],["developper","developer"],["developpers","developers"],["developpment","development"],["develp","develop"],["develped","developed"],["develper","developer"],["develpers","developers"],["develping","developing"],["develpment","development"],["develpments","developments"],["develps","develops"],["devels","delves"],["deveolpment","development"],["deveopers","developers"],["deverloper","developer"],["deverlopers","developers"],["devestated","devastated"],["devestating","devastating"],["devfine","define"],["devfined","defined"],["devfines","defines"],["devic","device"],["devicde","device"],["devicdes","devices"],["device-dependend","device-dependent"],["devicec","device"],["devicecoordiinates","devicecoordinates"],["deviceremoveable","deviceremovable"],["devicesr","devices"],["devicess","devices"],["devicest","devices"],["devide","divide"],["devided","divided"],["devider","divider"],["deviders","dividers"],["devides","divides"],["deviding","dividing"],["deviece","device"],["devied","device"],["deviiate","deviate"],["deviiated","deviated"],["deviiates","deviates"],["deviiating","deviating"],["deviiation","deviation"],["deviiations","deviations"],["devined","defined"],["devired","derived"],["devirtualisaion","devirtualisation"],["devirtualisaiton","devirtualisation"],["devirtualizaion","devirtualization"],["devirtualizaiton","devirtualization"],["devirutalisation","devirtualisation"],["devirutalise","devirtualise"],["devirutalised","devirtualised"],["devirutalization","devirtualization"],["devirutalize","devirtualize"],["devirutalized","devirtualized"],["devisible","divisible"],["devision","division"],["devistating","devastating"],["devive","device"],["devleop","develop"],["devleoped","developed"],["devleoper","developer"],["devleopers","developers"],["devleoping","developing"],["devleopment","development"],["devleopper","developer"],["devleoppers","developers"],["devlop","develop"],["devloped","developed"],["devloper's","developer's"],["devloper","developer"],["devlopers","developers"],["devloping","developing"],["devlopment","development"],["devlopments","developments"],["devlopper","developer"],["devloppers","developers"],["devlops","develops"],["devolopement","development"],["devritualisation","devirtualisation"],["devritualization","devirtualization"],["devuce","device"],["dewrapping","unwrapping"],["dezert","dessert"],["dezibel","decibel"],["dezine","design"],["dezinens","denizens"],["dfine","define"],["dfined","defined"],["dfines","defines"],["dfinition","definition"],["dfinitions","definitions"],["dgetttext","dgettext"],["diable","disable"],["diabled","disabled"],["diabler","disabler"],["diablers","disablers"],["diables","disables"],["diablical","diabolical"],["diabling","disabling"],["diaciritc","diacritic"],["diaciritcs","diacritics"],["diagnistic","diagnostic"],["diagnoal","diagonal"],["diagnoals","diagonals"],["diagnol","diagonal"],["diagnosics","diagnostics"],["diagnositc","diagnostic"],["diagnotic","diagnostic"],["diagnotics","diagnostics"],["diagnxostic","diagnostic"],["diagonale","diagonal"],["diagonales","diagonals"],["diagramas","diagrams"],["diagramm","diagram"],["dialaog","dialog"],["dialate","dilate"],["dialgo","dialog"],["dialgos","dialogs"],["dialig","dialog"],["dialigs","dialogs"],["diamater","diameter"],["diamaters","diameters"],["diamon","diamond"],["diamons","diamonds"],["diamter","diameter"],["diamters","diameters"],["diangose","diagnose"],["dianostic","diagnostic"],["dianostics","diagnostics"],["diaplay","display"],["diaplays","displays"],["diappeares","disappears"],["diarea","diarrhea"],["diaresis","diaeresis"],["diasble","disable"],["diasbled","disabled"],["diasbles","disables"],["diasbling","disabling"],["diaspra","diaspora"],["diaster","disaster"],["diatance","distance"],["diatancing","distancing"],["dicard","discard"],["dicarded","discarded"],["dicarding","discarding"],["dicards","discards"],["dicates","dictates"],["dicationaries","dictionaries"],["dicationary","dictionary"],["dicergence","divergence"],["dichtomy","dichotomy"],["dicionaries","dictionaries"],["dicionary","dictionary"],["dicipline","discipline"],["dicitonaries","dictionaries"],["dicitonary","dictionary"],["dicline","decline"],["diconnected","disconnected"],["diconnection","disconnection"],["diconnects","disconnects"],["dicover","discover"],["dicovered","discovered"],["dicovering","discovering"],["dicovers","discovers"],["dicovery","discovery"],["dicrectory","directory"],["dicrete","discrete"],["dicretion","discretion"],["dicretionary","discretionary"],["dicriminate","discriminate"],["dicriminated","discriminated"],["dicriminates","discriminates"],["dicriminating","discriminating"],["dicriminator","discriminator"],["dicriminators","discriminators"],["dicsriminated","discriminated"],["dictaionaries","dictionaries"],["dictaionary","dictionary"],["dictinary","dictionary"],["dictioanries","dictionaries"],["dictioanry","dictionary"],["dictionarys","dictionaries"],["dictionay","dictionary"],["dictionnaries","dictionaries"],["dictionnary","dictionary"],["dictionries","dictionaries"],["dictionry","dictionary"],["dictoinaries","dictionaries"],["dictoinary","dictionary"],["dictonaries","dictionaries"],["dictonary","dictionary"],["dictrionaries","dictionaries"],["dictrionary","dictionary"],["dicussed","discussed"],["dicussions","discussions"],["did'nt","didn't"],["didi","did"],["didn;t","didn't"],["didnt'","didn't"],["didnt't","didn't"],["didnt","didn't"],["didnt;","didn't"],["diect","direct"],["diectly","directly"],["dielectirc","dielectric"],["dielectircs","dielectrics"],["diemsion","dimension"],["dieties","deities"],["diety","deity"],["diference","difference"],["diferences","differences"],["diferent","different"],["diferentiate","differentiate"],["diferentiated","differentiated"],["diferentiates","differentiates"],["diferentiating","differentiating"],["diferently","differently"],["diferrent","different"],["diffcult","difficult"],["diffculties","difficulties"],["diffculty","difficulty"],["diffeent","different"],["diffence","difference"],["diffenet","different"],["diffenrence","difference"],["diffenrences","differences"],["differance","difference"],["differances","differences"],["differant","different"],["differantiate","differentiate"],["differantiation","differentiation"],["differantiator","differentiator"],["differantion","differentiation"],["differate","differentiate"],["differece","difference"],["differect","different"],["differen","different"],["differencess","differences"],["differencial","differential"],["differenciate","differentiate"],["differenciated","differentiated"],["differenciates","differentiates"],["differenciating","differentiating"],["differenciation","differentiation"],["differencies","differences"],["differenct","different"],["differend","different"],["differene","difference"],["differenes","differences"],["differenly","differently"],["differens","difference"],["differense","difference"],["differentiatiations","differentiations"],["differentiaton","differentiation"],["differentl","differently"],["differernt","different"],["differes","differs"],["differetnt","different"],["differnce","difference"],["differnces","differences"],["differnciate","differentiate"],["differnec","difference"],["differnece","difference"],["differneces","differences"],["differnecs","differences"],["differnence","difference"],["differnences","differences"],["differnencing","differencing"],["differnent","different"],["differnet","different"],["differnetiate","differentiate"],["differnetiated","differentiated"],["differnetly","differently"],["differnt","different"],["differntiable","differentiable"],["differntial","differential"],["differntials","differentials"],["differntiate","differentiate"],["differntiated","differentiated"],["differntiates","differentiates"],["differntiating","differentiating"],["differntly","differently"],["differred","differed"],["differrence","difference"],["differrent","different"],["difffered","differed"],["diffferent","different"],["diffferently","differently"],["difffers","differs"],["difficault","difficult"],["difficaulties","difficulties"],["difficaulty","difficulty"],["difficulity","difficulty"],["difficutl","difficult"],["difficutly","difficulty"],["diffreences","differences"],["diffreent","different"],["diffrence","difference"],["diffrences","differences"],["diffrent","different"],["diffrential","differential"],["diffrentiate","differentiate"],["diffrentiated","differentiated"],["diffrently","differently"],["diffrerence","difference"],["diffrerences","differences"],["diffult","difficult"],["diffussion","diffusion"],["diffussive","diffusive"],["dificulties","difficulties"],["dificulty","difficulty"],["difinition","definition"],["difinitions","definitions"],["difract","diffract"],["difracted","diffracted"],["difraction","diffraction"],["difractive","diffractive"],["difussion","diffusion"],["difussive","diffusive"],["digesty","digest"],["diggit","digit"],["diggital","digital"],["diggits","digits"],["digial","digital"],["digist","digits"],["digitalise","digitize"],["digitalising","digitizing"],["digitalize","digitize"],["digitalizing","digitizing"],["digitial","digital"],["digitis","digits"],["dignostics","diagnostics"],["dilema","dilemma"],["dilemas","dilemmas"],["dilineate","delineate"],["dillema","dilemma"],["dillemas","dilemmas"],["dilligence","diligence"],["dilligent","diligent"],["dilligently","diligently"],["dillimport","dllimport"],["dimansion","dimension"],["dimansional","dimensional"],["dimansions","dimensions"],["dimemsions","dimensions"],["dimenional","dimensional"],["dimenionalities","dimensionalities"],["dimenionality","dimensionality"],["dimenions","dimensions"],["dimenionsal","dimensional"],["dimenionsalities","dimensionalities"],["dimenionsality","dimensionality"],["dimenison","dimension"],["dimensinal","dimensional"],["dimensinoal","dimensional"],["dimensinos","dimensions"],["dimensionaility","dimensionality"],["dimensiones","dimensions"],["dimensonal","dimensional"],["dimenstion","dimension"],["dimenstions","dimensions"],["dimention","dimension"],["dimentional","dimensional"],["dimentionnal","dimensional"],["dimentionnals","dimensional"],["dimentions","dimensions"],["dimesions","dimensions"],["dimesnion","dimension"],["dimesnional","dimensional"],["dimesnions","dimensions"],["diminsh","diminish"],["diminshed","diminished"],["diminuitive","diminutive"],["dimissed","dismissed"],["dimmension","dimension"],["dimmensioned","dimensioned"],["dimmensioning","dimensioning"],["dimmensions","dimensions"],["dimnension","dimension"],["dimnention","dimension"],["dimunitive","diminutive"],["dinamic","dynamic"],["dinamically","dynamically"],["dinamicaly","dynamically"],["dinamiclly","dynamically"],["dinamicly","dynamically"],["dinmaic","dynamic"],["dinteractively","interactively"],["diong","doing"],["diosese","diocese"],["diphtong","diphthong"],["diphtongs","diphthongs"],["diplacement","displacement"],["diplay","display"],["diplayed","displayed"],["diplaying","displaying"],["diplays","displays"],["diplomancy","diplomacy"],["dipthong","diphthong"],["dipthongs","diphthongs"],["dircet","direct"],["dircetories","directories"],["dircetory","directory"],["dirctly","directly"],["dirctories","directories"],["dirctory","directory"],["direccion","direction"],["direcctly","directly"],["direcctory","directory"],["direcctorys","directories"],["direcctries","directories"],["direcdories","directories"],["direcdory","directory"],["direcdorys","directories"],["direcion","direction"],["direcions","directions"],["direciton","direction"],["direcitonal","directional"],["direcitons","directions"],["direclty","directly"],["direcly","directly"],["direcories","directories"],["direcory","directory"],["direcotories","directories"],["direcotory","directory"],["direcotries","directories"],["direcotry","directory"],["direcoty","directory"],["directd","directed"],["directely","directly"],["directes","directs"],["directgories","directories"],["directgory","directory"],["directiories","directories"],["directiory","directory"],["directoies","directories"],["directon","direction"],["directoories","directories"],["directoory","directory"],["directores","directories"],["directoris","directories"],["directort","directory"],["directorty","directory"],["directorys","directories"],["directoty","directory"],["directove","directive"],["directoves","directives"],["directoy","directory"],["directpries","directories"],["directpry","directory"],["directries","directories"],["directrive","directive"],["directrives","directives"],["directrly","directly"],["directroies","directories"],["directrories","directories"],["directrory","directory"],["directroy","directory"],["directry","directory"],["directsion","direction"],["directsions","directions"],["directtories","directories"],["directtory","directory"],["directy","directly"],["direectly","directly"],["diregard","disregard"],["direktly","directly"],["direrctor","director"],["direrctories","directories"],["direrctors","directors"],["direrctory","directory"],["diretive","directive"],["diretly","directly"],["diretories","directories"],["diretory","directory"],["direvctory","directory"],["dirived","derived"],["dirrectly","directly"],["dirtectory","directory"],["dirtyed","dirtied"],["dirtyness","dirtiness"],["dirver","driver"],["disabe","disable"],["disabeling","disabling"],["disabels","disables"],["disabes","disables"],["disabilitiles","disabilities"],["disabilitily","disability"],["disabiltities","disabilities"],["disabiltitiy","disability"],["disabing","disabling"],["disabl","disable"],["disablle","disable"],["disadvantadge","disadvantage"],["disagreeed","disagreed"],["disagress","disagrees"],["disalb","disable"],["disalbe","disable"],["disalbed","disabled"],["disalbes","disables"],["disale","disable"],["disaled","disabled"],["disalow","disallow"],["disambigouate","disambiguate"],["disambiguaiton","disambiguation"],["disambiguiation","disambiguation"],["disapear","disappear"],["disapeard","disappeared"],["disapeared","disappeared"],["disapearing","disappearing"],["disapears","disappears"],["disapline","discipline"],["disapoint","disappoint"],["disapointed","disappointed"],["disapointing","disappointing"],["disappared","disappeared"],["disappearaing","disappearing"],["disappeard","disappeared"],["disappearred","disappeared"],["disapper","disappear"],["disapperar","disappear"],["disapperarance","disappearance"],["disapperared","disappeared"],["disapperars","disappears"],["disappered","disappeared"],["disappering","disappearing"],["disappers","disappears"],["disapporval","disapproval"],["disapporve","disapprove"],["disapporved","disapproved"],["disapporves","disapproves"],["disapporving","disapproving"],["disapprouval","disapproval"],["disapprouve","disapprove"],["disapprouved","disapproved"],["disapprouves","disapproves"],["disapprouving","disapproving"],["disaproval","disapproval"],["disard","discard"],["disariable","desirable"],["disassebled","disassembled"],["disassocate","disassociate"],["disassocation","disassociation"],["disasssembler","disassembler"],["disasterous","disastrous"],["disatisfaction","dissatisfaction"],["disatisfied","dissatisfied"],["disatrous","disastrous"],["disbale","disable"],["disbaled","disabled"],["disbales","disables"],["disbaling","disabling"],["disble","disable"],["disbled","disabled"],["discared","discarded"],["discareded","discarded"],["discarge","discharge"],["discconecct","disconnect"],["discconeccted","disconnected"],["discconeccting","disconnecting"],["discconecction","disconnection"],["discconecctions","disconnections"],["discconeccts","disconnects"],["discconect","disconnect"],["discconected","disconnected"],["discconecting","disconnecting"],["discconection","disconnection"],["discconections","disconnections"],["discconects","disconnects"],["discconeect","disconnect"],["discconeected","disconnected"],["discconeecting","disconnecting"],["discconeection","disconnection"],["discconeections","disconnections"],["discconeects","disconnects"],["discconenct","disconnect"],["discconencted","disconnected"],["discconencting","disconnecting"],["discconenction","disconnection"],["discconenctions","disconnections"],["discconencts","disconnects"],["discconet","disconnect"],["discconeted","disconnected"],["discconeting","disconnecting"],["discconetion","disconnection"],["discconetions","disconnections"],["discconets","disconnects"],["disccuss","discuss"],["discernable","discernible"],["dischare","discharge"],["discimenation","dissemination"],["disciplins","disciplines"],["disclamer","disclaimer"],["disconecct","disconnect"],["disconeccted","disconnected"],["disconeccting","disconnecting"],["disconecction","disconnection"],["disconecctions","disconnections"],["disconeccts","disconnects"],["disconect","disconnect"],["disconected","disconnected"],["disconecting","disconnecting"],["disconection","disconnection"],["disconections","disconnections"],["disconects","disconnects"],["disconeect","disconnect"],["disconeected","disconnected"],["disconeecting","disconnecting"],["disconeection","disconnection"],["disconeections","disconnections"],["disconeects","disconnects"],["disconenct","disconnect"],["disconencted","disconnected"],["disconencting","disconnecting"],["disconenction","disconnection"],["disconenctions","disconnections"],["disconencts","disconnects"],["disconet","disconnect"],["disconeted","disconnected"],["disconeting","disconnecting"],["disconetion","disconnection"],["disconetions","disconnections"],["disconets","disconnects"],["disconnec","disconnect"],["disconneced","disconnected"],["disconnet","disconnect"],["disconneted","disconnected"],["disconneting","disconnecting"],["disconnets","disconnects"],["disconnnect","disconnect"],["discontigious","discontiguous"],["discontigous","discontiguous"],["discontiguities","discontinuities"],["discontinous","discontinuous"],["discontinuos","discontinuous"],["discoraged","discouraged"],["discouranged","discouraged"],["discourarged","discouraged"],["discourrage","discourage"],["discourraged","discouraged"],["discove","discover"],["discoved","discovered"],["discovereability","discoverability"],["discoveribility","discoverability"],["discovey","discovery"],["discovr","discover"],["discovred","discovered"],["discovring","discovering"],["discovrs","discovers"],["discrace","disgrace"],["discraced","disgraced"],["discraceful","disgraceful"],["discracefully","disgracefully"],["discracefulness","disgracefulness"],["discraces","disgraces"],["discracing","disgracing"],["discrards","discards"],["discreminates","discriminates"],["discrepencies","discrepancies"],["discrepency","discrepancy"],["discrepicies","discrepancies"],["discribe","describe"],["discribed","described"],["discribes","describes"],["discribing","describing"],["discription","description"],["discriptions","descriptions"],["discriptor's","descriptor's"],["discriptor","descriptor"],["discriptors","descriptors"],["disctinction","distinction"],["disctinctive","distinctive"],["disctinguish","distinguish"],["disctionaries","dictionaries"],["disctionary","dictionary"],["discuassed","discussed"],["discused","discussed"],["discusion","discussion"],["discusions","discussions"],["discusson","discussion"],["discussons","discussions"],["discusting","disgusting"],["discuusion","discussion"],["disdvantage","disadvantage"],["disecting","dissecting"],["disection","dissection"],["diselect","deselect"],["disemination","dissemination"],["disenchanged","disenchanted"],["disencouraged","discouraged"],["disertation","dissertation"],["disfunctional","dysfunctional"],["disfunctionality","dysfunctionality"],["disgn","design"],["disgned","designed"],["disgner","designer"],["disgning","designing-"],["disgnostic","diagnostic"],["disgnostics","diagnostics"],["disgns","designs"],["disguisting","disgusting"],["disharge","discharge"],["disign","design"],["disignated","designated"],["disinguish","distinguish"],["disiplined","disciplined"],["disired","desired"],["disitributions","distributions"],["diskrete","discrete"],["diskretion","discretion"],["diskretization","discretization"],["diskretize","discretize"],["diskretized","discretized"],["diskrimination","discrimination"],["dislaimer","disclaimer"],["dislay","display"],["dislayed","displayed"],["dislaying","displaying"],["dislays","displays"],["dislpay","display"],["dislpayed","displayed"],["dislpaying","displaying"],["dislpays","displays"],["disnabled","disabled"],["disobediance","disobedience"],["disobediant","disobedient"],["disokay","display"],["disolve","dissolve"],["disolved","dissolved"],["disonnect","disconnect"],["disonnected","disconnected"],["disover","discover"],["disovered","discovered"],["disovering","discovering"],["disovery","discovery"],["dispached","dispatched"],["dispair","despair"],["dispalcement","displacement"],["dispalcements","displacements"],["dispaly","display"],["dispalyable","displayable"],["dispalyed","displayed"],["dispalyes","displays"],["dispalying","displaying"],["dispalys","displays"],["disparingly","disparagingly"],["disparite","disparate"],["dispatcgh","dispatch"],["dispatchs","dispatches"],["dispath","dispatch"],["dispathed","dispatched"],["dispathes","dispatches"],["dispathing","dispatching"],["dispay","display"],["dispayed","displayed"],["dispayes","displays"],["dispayport","displayport"],["dispays","displays"],["dispbibute","distribute"],["dispell","dispel"],["dispence","dispense"],["dispenced","dispensed"],["dispencing","dispensing"],["dispertion","dispersion"],["dispicable","despicable"],["dispite","despite"],["displa","display"],["displacemnt","displacement"],["displacemnts","displacements"],["displacment","displacement"],["displacments","displacements"],["displayd","displayed"],["displayied","displayed"],["displayig","displaying"],["disply","display"],["displyed","displayed"],["displying","displaying"],["displys","displays"],["dispode","dispose"],["disporue","disparue"],["disporve","disprove"],["disporved","disproved"],["disporves","disproves"],["disporving","disproving"],["disposel","disposal"],["dispossable","disposable"],["dispossal","disposal"],["disposse","dispose"],["dispossing","disposing"],["dispostion","disposition"],["disproportiate","disproportionate"],["disproportionatly","disproportionately"],["disputandem","disputandum"],["disregrad","disregard"],["disrete","discrete"],["disretion","discretion"],["disribution","distribution"],["disricts","districts"],["disrm","disarm"],["dissable","disable"],["dissabled","disabled"],["dissables","disables"],["dissabling","disabling"],["dissadvantage","disadvantage"],["dissadvantages","disadvantages"],["dissagreement","disagreement"],["dissagregation","dissaggregation"],["dissallow","disallow"],["dissallowed","disallowed"],["dissallowing","disallowing"],["dissallows","disallows"],["dissalow","disallow"],["dissalowed","disallowed"],["dissalowing","disallowing"],["dissalows","disallows"],["dissambiguate","disambiguate"],["dissamble","disassemble"],["dissambled","disassembled"],["dissambler","disassembler"],["dissambles","disassembles"],["dissamblies","disassemblies"],["dissambling","disassembling"],["dissambly","disassembly"],["dissapate","dissipate"],["dissapates","dissipates"],["dissapear","disappear"],["dissapearance","disappearance"],["dissapeard","disappeared"],["dissapeared","disappeared"],["dissapearing","disappearing"],["dissapears","disappears"],["dissaper","disappear"],["dissaperd","disappeared"],["dissapered","disappeared"],["dissapering","disappearing"],["dissapers","disappears"],["dissapoint","disappoint"],["dissapointed","disappointed"],["dissapointing","disappointing"],["dissapoints","disappoints"],["dissappear","disappear"],["dissappeard","disappeared"],["dissappeared","disappeared"],["dissappearing","disappearing"],["dissappears","disappears"],["dissapper","disappear"],["dissapperd","disappeared"],["dissappered","disappeared"],["dissappering","disappearing"],["dissappers","disappears"],["dissappointed","disappointed"],["dissapprove","disapprove"],["dissapproves","disapproves"],["dissarray","disarray"],["dissasemble","disassemble"],["dissasembled","disassembled"],["dissasembler","disassembler"],["dissasembles","disassembles"],["dissasemblies","disassemblies"],["dissasembling","disassembling"],["dissasembly","disassembly"],["dissasociate","disassociate"],["dissasociated","disassociated"],["dissasociates","disassociates"],["dissasociation","disassociation"],["dissassemble","disassemble"],["dissassembled","disassembled"],["dissassembler","disassembler"],["dissassembles","disassembles"],["dissassemblies","disassemblies"],["dissassembling","disassembling"],["dissassembly","disassembly"],["dissassociate","disassociate"],["dissassociated","disassociated"],["dissassociates","disassociates"],["dissassociating","disassociating"],["dissaster","disaster"],["dissasters","disasters"],["dissble","disable"],["dissbled","disabled"],["dissbles","disables"],["dissbling","disabling"],["dissconect","disconnect"],["dissconnect","disconnect"],["dissconnected","disconnected"],["dissconnects","disconnects"],["disscover","discover"],["disscovered","discovered"],["disscovering","discovering"],["disscovers","discovers"],["disscovery","discovery"],["dissct","dissect"],["disscted","dissected"],["disscting","dissecting"],["dissctor","dissector"],["dissctors","dissectors"],["disscts","dissects"],["disscuesed","discussed"],["disscus","discuss"],["disscused","discussed"],["disscuses","discusses"],["disscusing","discussing"],["disscusion","discussion"],["disscuss","discuss"],["disscussed","discussed"],["disscusses","discusses"],["disscussing","discussing"],["disscussion","discussion"],["disscussions","discussions"],["disshearteningly","dishearteningly"],["dissimialr","dissimilar"],["dissimialrity","dissimilarity"],["dissimialrly","dissimilarly"],["dissimiar","dissimilar"],["dissimilarily","dissimilarly"],["dissimilary","dissimilarly"],["dissimilat","dissimilar"],["dissimilia","dissimilar"],["dissimiliar","dissimilar"],["dissimiliarity","dissimilarity"],["dissimiliarly","dissimilarly"],["dissimiliarty","dissimilarity"],["dissimiliary","dissimilarity"],["dissimillar","dissimilar"],["dissimlar","dissimilar"],["dissimlarlity","dissimilarity"],["dissimlarly","dissimilarly"],["dissimliar","dissimilar"],["dissimliarly","dissimilarly"],["dissimmetric","dissymmetric"],["dissimmetrical","dissymmetrical"],["dissimmetry","dissymmetry"],["dissmantle","dismantle"],["dissmantled","dismantled"],["dissmantles","dismantles"],["dissmantling","dismantling"],["dissmis","dismiss"],["dissmised","dismissed"],["dissmises","dismisses"],["dissmising","dismissing"],["dissmiss","dismiss"],["dissmissed","dismissed"],["dissmisses","dismisses"],["dissmissing","dismissing"],["dissobediance","disobedience"],["dissobediant","disobedient"],["dissobedience","disobedience"],["dissobedient","disobedient"],["dissplay","display"],["dissrupt","disrupt"],["dissrupted","disrupted"],["dissrupting","disrupting"],["dissrupts","disrupts"],["disssemble","disassemble"],["disssembled","disassembled"],["disssembler","disassembler"],["disssembles","disassembles"],["disssemblies","disassemblies"],["disssembling","disassembling"],["disssembly","disassembly"],["disssociate","dissociate"],["disssociated","dissociated"],["disssociates","dissociates"],["disssociating","dissociating"],["distaced","distanced"],["distange","distance"],["distanse","distance"],["distantce","distance"],["distarct","distract"],["distater","disaster"],["distengish","distinguish"],["distibute","distribute"],["distibuted","distributed"],["distibutes","distributes"],["distibuting","distributing"],["distibution","distribution"],["distibutions","distributions"],["distiction","distinction"],["distictly","distinctly"],["distiguish","distinguish"],["distiguished","distinguished"],["distinative","distinctive"],["distingish","distinguish"],["distingished","distinguished"],["distingishes","distinguishes"],["distingishing","distinguishing"],["distingiush","distinguish"],["distingquished","distinguished"],["distinguise","distinguish"],["distinguised","distinguished"],["distinguises","distinguishes"],["distingush","distinguish"],["distingushed","distinguished"],["distingushes","distinguishes"],["distingushing","distinguishing"],["distingusih","distinguish"],["distinquish","distinguish"],["distinquishable","distinguishable"],["distinquished","distinguished"],["distinquishes","distinguishes"],["distinquishing","distinguishing"],["distintions","distinctions"],["distirbute","distribute"],["distirbuted","distributed"],["distirbutes","distributes"],["distirbuting","distributing"],["distirbution","distribution"],["distirbutions","distributions"],["distirted","distorted"],["distnace","distance"],["distnaces","distances"],["distnce","distance"],["distnces","distances"],["distnct","distinct"],["distncte","distance"],["distnctes","distances"],["distnguish","distinguish"],["distnguished","distinguished"],["distniguish","distinguish"],["distniguished","distinguished"],["distorsion","distortion"],["distorsional","distortional"],["distorsions","distortions"],["distrbute","distribute"],["distrbuted","distributed"],["distrbutes","distributes"],["distrbuting","distributing"],["distrbution","distribution"],["distrbutions","distributions"],["distrct","district"],["distrcts","districts"],["distrebuted","distributed"],["distribtion","distribution"],["distribtions","distributions"],["distribtuion","distribution"],["distribtuions","distributions"],["distribtution","distributions"],["distribue","distribute"],["distribued","distributed"],["distribues","distributes"],["distribuion","distribution"],["distribuite","distribute"],["distribuited","distributed"],["distribuiting","distributing"],["distribuition","distribution"],["distribuitng","distributing"],["distribure","distribute"],["districct","district"],["distrobute","distribute"],["distrobuted","distributed"],["distrobutes","distributes"],["distrobuting","distributing"],["distrobution","distribution"],["distrobutions","distributions"],["distrobuts","distributes"],["distroname","distro name"],["distroying","destroying"],["distrub","disturb"],["distrubiotion","distribution"],["distrubite","distribute"],["distrubtion","distribution"],["distrubute","distribute"],["distrubuted","distributed"],["distrubution","distribution"],["distrubutions","distributions"],["distrubutor","distributor"],["distrubutors","distributors"],["distruction","destruction"],["distructive","destructive"],["distructor","destructor"],["distructors","destructors"],["distuingish","distinguish"],["disuade","dissuade"],["disucssion","discussion"],["disucssions","discussions"],["disucussion","discussion"],["disussion","discussion"],["disussions","discussions"],["disutils","distutils"],["ditance","distance"],["ditial","digital"],["ditinguishes","distinguishes"],["ditorconfig","editorconfig"],["ditribute","distribute"],["ditributed","distributed"],["ditribution","distribution"],["ditributions","distributions"],["divde","divide"],["divded","divided"],["divdes","divides"],["divding","dividing"],["divertion","diversion"],["divertions","diversions"],["divet","divot"],["divice","device"],["divicer","divider"],["divion","division"],["divisable","divisible"],["divisior","divisor"],["divison","division"],["divisons","divisions"],["divrese","diverse"],["divsion","division"],["divsions","divisions"],["divsiors","divisors"],["dloating","floating"],["dnamically","dynamically"],["dne","done"],["dnymaic","dynamic"],["do'nt","don't"],["doagonal","diagonal"],["doagonals","diagonals"],["doalog","dialog"],["doamins","domains"],["doasn't","doesn't"],["doble","double"],["dobled","doubled"],["dobles","doubles"],["dobling","doubling"],["doccument","document"],["doccumented","documented"],["doccuments","documents"],["dockson","dachshund"],["docmenetation","documentation"],["docmuent","document"],["docmunet","document"],["docmunetation","documentation"],["docmuneted","documented"],["docmuneting","documenting"],["docmunets","documents"],["docoment","document"],["docomentation","documentation"],["docomented","documented"],["docomenting","documenting"],["docoments","documents"],["docrines","doctrines"],["docstatistik","docstatistic"],["docsund","dachshund"],["doctines","doctrines"],["doctorial","doctoral"],["docucument","document"],["docuement","document"],["docuements","documents"],["docuemnt","document"],["docuemnts","documents"],["docuemtn","document"],["docuemtnation","documentation"],["docuemtned","documented"],["docuemtning","documenting"],["docuemtns","documents"],["docuent","document"],["docuentation","documentation"],["documant","document"],["documantation","documentation"],["documants","documents"],["documation","documentation"],["documemt","document"],["documen","document"],["documenatation","documentation"],["documenation","documentation"],["documenatry","documentary"],["documenet","document"],["documenetation","documentation"],["documeneted","documented"],["documeneter","documenter"],["documeneters","documenters"],["documeneting","documenting"],["documenets","documents"],["documentaion","documentation"],["documentaiton","documentation"],["documentataion","documentation"],["documentataions","documentations"],["documentaton","documentation"],["documentes","documents"],["documention","documentation"],["documetation","documentation"],["documetnation","documentation"],["documment","document"],["documments","documents"],["documnet","document"],["documnetation","documentation"],["documument","document"],["docunment","document"],["doed","does"],["doen's","doesn't"],["doen't","doesn't"],["doen","done"],["doens't","doesn't"],["doens","does"],["doensn't","doesn't"],["does'nt","doesn't"],["does't","doesn't"],["doese't","doesn't"],["doese","does"],["doesen't","doesn't"],["doesent'","doesn't"],["doesent","doesn't"],["doesits","does its"],["doesn'","doesn't"],["doesn't't","doesn't"],["doesn;t","doesn't"],["doesnexist","doesn't exist"],["doesnt'","doesn't"],["doesnt't","doesn't"],["doesnt;","doesn't"],["doess","does"],["doestn't","doesn't"],["doign","doing"],["doiing","doing"],["doiuble","double"],["doiubled","doubled"],["dokc","dock"],["dokced","docked"],["dokcer","docker"],["dokcing","docking"],["dokcre","docker"],["dokcs","docks"],["doller","dollar"],["dollers","dollars"],["dollor","dollar"],["dollors","dollars"],["domait","domain"],["doman","domain"],["domans","domains"],["domension","dimension"],["domensions","dimensions"],["domian","domain"],["domians","domains"],["dominanted","dominated"],["dominanting","dominating"],["dominantion","domination"],["dominaton","domination"],["dominent","dominant"],["dominiant","dominant"],["domonstrate","demonstrate"],["domonstrates","demonstrates"],["domonstrating","demonstrating"],["domonstration","demonstration"],["domonstrations","demonstrations"],["donain","domain"],["donains","domains"],["donejun","dungeon"],["donejuns","dungeons"],["donig","doing"],["donn't","don't"],["donnot","do not"],["dont'","don't"],["dont't","don't"],["donwload","download"],["donwloaded","downloaded"],["donwloading","downloading"],["donwloads","downloads"],["doocument","document"],["doocumentaries","documentaries"],["doocumentary","documentary"],["doocumentation","documentation"],["doocumentations","documentations"],["doocumented","documented"],["doocumenting","documenting"],["doocuments","documents"],["doorjam","doorjamb"],["dorce","force"],["dorced","forced"],["dorceful","forceful"],["dordered","ordered"],["dorment","dormant"],["dorp","drop"],["dosclosed","disclosed"],["doscloses","discloses"],["dosclosing","disclosing"],["dosclosure","disclosure"],["dosclosures","disclosures"],["dosen't","doesn't"],["dosen;t","doesn't"],["dosens","dozens"],["dosent'","doesn't"],["dosent","doesn't"],["dosent;","doesn't"],["dosn't","doesn't"],["dosn;t","doesn't"],["dosnt","doesn't"],["dosposing","disposing"],["dosument","document"],["dosuments","documents"],["dota","data"],["doube","double"],["doube-click","double-click"],["doube-clicked","double-clicked"],["doube-clicks","double-clicks"],["doube-quote","double-quote"],["doube-quoted","double-quoted"],["doube-word","double-word"],["doube-wprd","double-word"],["doubeclick","double-click"],["doubeclicked","double-clicked"],["doubeclicks","double-clicks"],["doubel","double"],["doubele-click","double-click"],["doubele-clicked","double-clicked"],["doubele-clicks","double-clicks"],["doubeleclick","double-click"],["doubeleclicked","double-clicked"],["doubeleclicks","double-clicks"],["doubely","doubly"],["doubes","doubles"],["doublde","double"],["doublded","doubled"],["doubldes","doubles"],["doubleclick","double-click"],["doublely","doubly"],["doubletquote","doublequote"],["doubth","doubt"],["doubthed","doubted"],["doubthing","doubting"],["doubths","doubts"],["doucment","document"],["doucmentated","documented"],["doucmentation","documentation"],["doucmented","documented"],["doucmenter","documenter"],["doucmenters","documenters"],["doucmentes","documents"],["doucmenting","documenting"],["doucments","documents"],["douible","double"],["douibled","doubled"],["doulbe","double"],["doumentc","document"],["dout","doubt"],["dowgrade","downgrade"],["dowlink","downlink"],["dowlinks","downlinks"],["dowload","download"],["dowloaded","downloaded"],["dowloader","downloader"],["dowloaders","downloaders"],["dowloading","downloading"],["dowloads","downloads"],["downagrade","downgrade"],["downagraded","downgraded"],["downagrades","downgrades"],["downagrading","downgrading"],["downgade","downgrade"],["downgaded","downgraded"],["downgades","downgrades"],["downgading","downgrading"],["downgarade","downgrade"],["downgaraded","downgraded"],["downgarades","downgrades"],["downgarading","downgrading"],["downgarde","downgrade"],["downgarded","downgraded"],["downgardes","downgrades"],["downgarding","downgrading"],["downgarte","downgrade"],["downgarted","downgraded"],["downgartes","downgrades"],["downgarting","downgrading"],["downgradde","downgrade"],["downgradded","downgraded"],["downgraddes","downgrades"],["downgradding","downgrading"],["downgradei","downgrade"],["downgradingn","downgrading"],["downgrate","downgrade"],["downgrated","downgraded"],["downgrates","downgrades"],["downgrating","downgrading"],["downlad","download"],["downladed","downloaded"],["downlading","downloading"],["downlads","downloads"],["downlaod","download"],["downlaoded","downloaded"],["downlaodes","downloads"],["downlaoding","downloading"],["downlaods","downloads"],["downloadmanger","downloadmanager"],["downlod","download"],["downloded","downloaded"],["downloding","downloading"],["downlods","downloads"],["downlowd","download"],["downlowded","downloaded"],["downlowding","downloading"],["downlowds","downloads"],["downoad","download"],["downoaded","downloaded"],["downoading","downloading"],["downoads","downloads"],["downoload","download"],["downoloaded","downloaded"],["downoloading","downloading"],["downoloads","downloads"],["downrade","downgrade"],["downraded","downgraded"],["downrades","downgrades"],["downrading","downgrading"],["downrgade","downgrade"],["downrgaded","downgraded"],["downrgades","downgrades"],["downrgading","downgrading"],["downsteram","downstream"],["downsteramed","downstreamed"],["downsteramer","downstreamer"],["downsteramers","downstreamers"],["downsteraming","downstreaming"],["downsterams","downstreams"],["dows","does"],["dowt","doubt"],["doxgen","doxygen"],["doygen","doxygen"],["dpeends","depends"],["dpendent","dependent"],["dpkg-buildpackge","dpkg-buildpackage"],["dpkg-buildpackges","dpkg-buildpackages"],["dpuble","double"],["dpubles","doubles"],["draconain","draconian"],["dragable","draggable"],["draged","dragged"],["draging","dragging"],["draing","drawing"],["drammatic","dramatic"],["dramtic","dramatic"],["dran","drawn"],["drastical","drastically"],["drasticaly","drastically"],["drats","drafts"],["draughtman","draughtsman"],["Dravadian","Dravidian"],["draview","drawview"],["drawack","drawback"],["drawacks","drawbacks"],["drawm","drawn"],["drawng","drawing"],["dreasm","dreams"],["dreawn","drawn"],["dregee","degree"],["dregees","degrees"],["dregree","degree"],["dregrees","degrees"],["drescription","description"],["drescriptions","descriptions"],["driagram","diagram"],["driagrammed","diagrammed"],["driagramming","diagramming"],["driagrams","diagrams"],["driectly","directly"],["drity","dirty"],["driveing","driving"],["drivr","driver"],["drnik","drink"],["drob","drop"],["dropabel","droppable"],["dropable","droppable"],["droped","dropped"],["droping","dropping"],["droppend","dropped"],["droppped","dropped"],["dropse","drops"],["droput","dropout"],["druing","during"],["druming","drumming"],["drummless","drumless"],["drvier","driver"],["drwaing","drawing"],["drwawing","drawing"],["drwawings","drawings"],["dscrete","discrete"],["dscretion","discretion"],["dscribed","described"],["dsiable","disable"],["dsiabled","disabled"],["dsplays","displays"],["dstination","destination"],["dstinations","destinations"],["dthe","the"],["dtoring","storing"],["dubios","dubious"],["dublicade","duplicate"],["dublicat","duplicate"],["dublicate","duplicate"],["dublicated","duplicated"],["dublicates","duplicates"],["dublication","duplication"],["ducment","document"],["ducument","document"],["duirng","during"],["dulicate","duplicate"],["dum","dumb"],["dumplicate","duplicate"],["dumplicated","duplicated"],["dumplicates","duplicates"],["dumplicating","duplicating"],["duoblequote","doublequote"],["dupicate","duplicate"],["duplacate","duplicate"],["duplacated","duplicated"],["duplacates","duplicates"],["duplacation","duplication"],["duplacte","duplicate"],["duplacted","duplicated"],["duplactes","duplicates"],["duplaction","duplication"],["duplaicate","duplicate"],["duplaicated","duplicated"],["duplaicates","duplicates"],["duplaication","duplication"],["duplate","duplicate"],["duplated","duplicated"],["duplates","duplicates"],["duplation","duplication"],["duplcate","duplicate"],["duplciate","duplicate"],["dupliacate","duplicate"],["dupliacates","duplicates"],["dupliace","duplicate"],["dupliacte","duplicate"],["dupliacted","duplicated"],["dupliactes","duplicates"],["dupliagte","duplicate"],["dupliate","duplicate"],["dupliated","duplicated"],["dupliates","duplicates"],["dupliating","duplicating"],["dupliation","duplication"],["dupliations","duplications"],["duplicat","duplicate"],["duplicatd","duplicated"],["duplicats","duplicates"],["dupplicate","duplicate"],["dupplicated","duplicated"],["dupplicates","duplicates"],["dupplicating","duplicating"],["dupplication","duplication"],["dupplications","duplications"],["durationm","duration"],["durectories","directories"],["durectory","directory"],["dureing","during"],["durig","during"],["durining","during"],["durning","during"],["durring","during"],["duting","during"],["dyanamically","dynamically"],["dyanmic","dynamic"],["dyanmically","dynamically"],["dyas","dryas"],["dymamically","dynamically"],["dynamc","dynamic"],["dynamcly","dynamically"],["dynamcs","dynamics"],["dynamicaly","dynamically"],["dynamiclly","dynamically"],["dynamicly","dynamically"],["dynaminc","dynamic"],["dynamincal","dynamical"],["dynamincally","dynamically"],["dynamincs","dynamics"],["dynamlic","dynamic"],["dynamlically","dynamically"],["dynically","dynamically"],["dynmaic","dynamic"],["dynmaically","dynamically"],["dynmic","dynamic"],["dynmically","dynamically"],["dynmics","dynamics"],["eabled","enabled"],["eacf","each"],["eacg","each"],["eachother","each other"],["eachs","each"],["eactly","exactly"],["eagrely","eagerly"],["eahc","each"],["eailier","earlier"],["eaiser","easier"],["ealier","earlier"],["ealiest","earliest"],["eample","example"],["eamples","examples"],["eanable","enable"],["eanble","enable"],["earleir","earlier"],["earler","earlier"],["earliear","earlier"],["earlies","earliest"],["earlist","earliest"],["earlyer","earlier"],["earnt","earned"],["earpeice","earpiece"],["easely","easily"],["easili","easily"],["easiliy","easily"],["easilly","easily"],["easist","easiest"],["easiy","easily"],["easly","easily"],["easyer","easier"],["eaxct","exact"],["ebale","enable"],["ebaled","enabled"],["EBCIDC","EBCDIC"],["ebedded","embedded"],["eccessive","excessive"],["ecclectic","eclectic"],["eceonomy","economy"],["ecept","except"],["eception","exception"],["eceptions","exceptions"],["ecidious","deciduous"],["eclise","eclipse"],["eclispe","eclipse"],["ecnetricity","eccentricity"],["ecognized","recognized"],["ecomonic","economic"],["ecounter","encounter"],["ecountered","encountered"],["ecountering","encountering"],["ecounters","encounters"],["ecplicit","explicit"],["ecplicitly","explicitly"],["ecspecially","especially"],["ect","etc"],["ecxept","except"],["ecxite","excite"],["ecxited","excited"],["ecxites","excites"],["ecxiting","exciting"],["ecxtracted","extracted"],["EDCDIC","EBCDIC"],["eddge","edge"],["eddges","edges"],["edditable","editable"],["ede","edge"],["ediable","editable"],["edige","edge"],["ediges","edges"],["ediit","edit"],["ediiting","editing"],["ediitor","editor"],["ediitors","editors"],["ediits","edits"],["editedt","edited"],["editiing","editing"],["editoro","editor"],["editot","editor"],["editots","editors"],["editt","edit"],["editted","edited"],["editter","editor"],["editting","editing"],["edittor","editor"],["edn","end"],["ednif","endif"],["edxpected","expected"],["eearly","early"],["eeeprom","EEPROM"],["eescription","description"],["eevery","every"],["eeverything","everything"],["eeverywhere","everywhere"],["eextract","extract"],["eextracted","extracted"],["eextracting","extracting"],["eextraction","extraction"],["eextracts","extracts"],["efect","effect"],["efective","effective"],["efectively","effectively"],["efel","evil"],["eferences","references"],["efetivity","effectivity"],["effciency","efficiency"],["effcient","efficient"],["effciently","efficiently"],["effctive","effective"],["effctively","effectively"],["effeciency","efficiency"],["effecient","efficient"],["effeciently","efficiently"],["effecitvely","effectively"],["effeck","effect"],["effecked","effected"],["effecks","effects"],["effeckt","effect"],["effectice","effective"],["effecticely","effectively"],["effectiviness","effectiveness"],["effectivness","effectiveness"],["effectly","effectively"],["effedts","effects"],["effekt","effect"],["effexts","effects"],["efficcient","efficient"],["efficencty","efficiency"],["efficency","efficiency"],["efficent","efficient"],["efficently","efficiently"],["effiency","efficiency"],["effient","efficient"],["effiently","efficiently"],["effulence","effluence"],["eforceable","enforceable"],["egal","equal"],["egals","equals"],["egde","edge"],["egdes","edges"],["ege","edge"],["egenral","general"],["egenralise","generalise"],["egenralised","generalised"],["egenralises","generalises"],["egenralize","generalize"],["egenralized","generalized"],["egenralizes","generalizes"],["egenrally","generally"],["ehance","enhance"],["ehanced","enhanced"],["ehancement","enhancement"],["ehancements","enhancements"],["ehenever","whenever"],["ehough","enough"],["ehr","her"],["ehternet","Ethernet"],["ehthernet","ethernet"],["eighter","either"],["eihter","either"],["einstance","instance"],["eisntance","instance"],["eiter","either"],["eith","with"],["elaspe","elapse"],["elasped","elapsed"],["elaspes","elapses"],["elasping","elapsing"],["elction","election"],["elctromagnetic","electromagnetic"],["elease","release"],["eleased","released"],["eleases","releases"],["eleate","relate"],["electical","electrical"],["electirc","electric"],["electircal","electrical"],["electrial","electrical"],["electricly","electrically"],["electricty","electricity"],["electrinics","electronics"],["electriv","electric"],["electrnoics","electronics"],["eleemnt","element"],["eleent","element"],["elegible","eligible"],["elelement","element"],["elelements","elements"],["elelment","element"],["elelmental","elemental"],["elelmentary","elementary"],["elelments","elements"],["elemant","element"],["elemantary","elementary"],["elemement","element"],["elemements","elements"],["elememt","element"],["elemen","element"],["elemenent","element"],["elemenental","elemental"],["elemenents","elements"],["elemenet","element"],["elemenets","elements"],["elemens","elements"],["elemenst","elements"],["elementay","elementary"],["elementry","elementary"],["elemet","element"],["elemetal","elemental"],["elemetn","element"],["elemetns","elements"],["elemets","elements"],["eleminate","eliminate"],["eleminated","eliminated"],["eleminates","eliminates"],["eleminating","eliminating"],["elemnets","elements"],["elemnt","element"],["elemntal","elemental"],["elemnts","elements"],["elemt","element"],["elemtary","elementary"],["elemts","elements"],["elenment","element"],["eles","else"],["eletricity","electricity"],["eletromagnitic","electromagnetic"],["eletronic","electronic"],["elgible","eligible"],["elicided","elicited"],["eligable","eligible"],["elimentary","elementary"],["elimiante","eliminate"],["elimiate","eliminate"],["eliminetaion","elimination"],["elimintate","eliminate"],["eliminte","eliminate"],["elimnated","eliminated"],["eliptic","elliptic"],["eliptical","elliptical"],["elipticity","ellipticity"],["ellapsed","elapsed"],["ellected","elected"],["ellement","element"],["ellemental","elemental"],["ellementals","elementals"],["ellements","elements"],["elliminate","eliminate"],["elliminated","eliminated"],["elliminates","eliminates"],["elliminating","eliminating"],["ellipsises","ellipsis"],["ellision","elision"],["elmenet","element"],["elmenets","elements"],["elment","element"],["elments","elements"],["elminate","eliminate"],["elminated","eliminated"],["elminates","eliminates"],["elminating","eliminating"],["elphant","elephant"],["elsef","elseif"],["elsehwere","elsewhere"],["elseof","elseif"],["elseswhere","elsewhere"],["elsewehere","elsewhere"],["elsewere","elsewhere"],["elsewhwere","elsewhere"],["elsiof","elseif"],["elsof","elseif"],["emabaroged","embargoed"],["emable","enable"],["emabled","enabled"],["emables","enables"],["emabling","enabling"],["emailling","emailing"],["embarass","embarrass"],["embarassed","embarrassed"],["embarasses","embarrasses"],["embarassing","embarrassing"],["embarassment","embarrassment"],["embargos","embargoes"],["embarras","embarrass"],["embarrased","embarrassed"],["embarrasing","embarrassing"],["embarrasingly","embarrassingly"],["embarrasment","embarrassment"],["embbedded","embedded"],["embbeded","embedded"],["embdder","embedder"],["embdedded","embedded"],["embebbed","embedded"],["embedd","embed"],["embeddded","embedded"],["embeddeding","embedding"],["embedds","embeds"],["embeded","embedded"],["embededded","embedded"],["embeed","embed"],["embezelled","embezzled"],["emblamatic","emblematic"],["embold","embolden"],["embrodery","embroidery"],["emcompass","encompass"],["emcompassed","encompassed"],["emcompassing","encompassing"],["emedded","embedded"],["emegrency","emergency"],["emenet","element"],["emenets","elements"],["emiited","emitted"],["eminate","emanate"],["eminated","emanated"],["emision","emission"],["emited","emitted"],["emiting","emitting"],["emlation","emulation"],["emmediately","immediately"],["emminently","eminently"],["emmisaries","emissaries"],["emmisarries","emissaries"],["emmisarry","emissary"],["emmisary","emissary"],["emmision","emission"],["emmisions","emissions"],["emmit","emit"],["emmited","emitted"],["emmiting","emitting"],["emmits","emits"],["emmitted","emitted"],["emmitting","emitting"],["emnity","enmity"],["emoty","empty"],["emough","enough"],["emought","enough"],["emperical","empirical"],["emperically","empirically"],["emphaised","emphasised"],["emphsis","emphasis"],["emphysyma","emphysema"],["empiracally","empirically"],["empiricaly","empirically"],["emplyed","employed"],["emplyee","employee"],["emplyees","employees"],["emplyer","employer"],["emplyers","employers"],["emplying","employing"],["emplyment","employment"],["emplyments","employments"],["emporer","emperor"],["emprically","empirically"],["emprisoned","imprisoned"],["emprove","improve"],["emproved","improved"],["emprovement","improvement"],["emprovements","improvements"],["emproves","improves"],["emproving","improving"],["emptniess","emptiness"],["emptry","empty"],["emptyed","emptied"],["emptyy","empty"],["empy","empty"],["emtied","emptied"],["emties","empties"],["emtpies","empties"],["emtpy","empty"],["emty","empty"],["emtying","emptying"],["emultor","emulator"],["emultors","emulators"],["enabe","enable"],["enabel","enable"],["enabeled","enabled"],["enabeling","enabling"],["enabing","enabling"],["enabledi","enabled"],["enableing","enabling"],["enablen","enabled"],["enalbe","enable"],["enalbed","enabled"],["enalbes","enables"],["enameld","enameled"],["enaugh","enough"],["enbable","enable"],["enbabled","enabled"],["enbabling","enabling"],["enbale","enable"],["enbaled","enabled"],["enbales","enables"],["enbaling","enabling"],["enbedding","embedding"],["enble","enable"],["encapsualtes","encapsulates"],["encapsulatzion","encapsulation"],["encapsultion","encapsulation"],["encaspulate","encapsulate"],["encaspulated","encapsulated"],["encaspulates","encapsulates"],["encaspulating","encapsulating"],["encaspulation","encapsulation"],["enchanced","enhanced"],["enclosng","enclosing"],["enclosue","enclosure"],["enclosung","enclosing"],["enclude","include"],["encluding","including"],["encocde","encode"],["encocded","encoded"],["encocder","encoder"],["encocders","encoders"],["encocdes","encodes"],["encocding","encoding"],["encocdings","encodings"],["encodingt","encoding"],["encodning","encoding"],["encodnings","encodings"],["encompas","encompass"],["encompased","encompassed"],["encompases","encompasses"],["encompasing","encompassing"],["enconde","encode"],["enconded","encoded"],["enconder","encoder"],["enconders","encoders"],["encondes","encodes"],["enconding","encoding"],["encondings","encodings"],["encorded","encoded"],["encorder","encoder"],["encorders","encoders"],["encording","encoding"],["encordings","encodings"],["encorporating","incorporating"],["encoser","encoder"],["encosers","encoders"],["encosure","enclosure"],["encounterd","encountered"],["encountres","encounters"],["encouraing","encouraging"],["encouter","encounter"],["encoutered","encountered"],["encouters","encounters"],["encoutner","encounter"],["encoutners","encounters"],["encouttering","encountering"],["encrcypt","encrypt"],["encrcypted","encrypted"],["encrcyption","encryption"],["encrcyptions","encryptions"],["encrcypts","encrypts"],["encript","encrypt"],["encripted","encrypted"],["encription","encryption"],["encriptions","encryptions"],["encripts","encrypts"],["encrpt","encrypt"],["encrpted","encrypted"],["encrption","encryption"],["encrptions","encryptions"],["encrpts","encrypts"],["encrupted","encrypted"],["encrypiton","encryption"],["encryptiion","encryption"],["encryptio","encryption"],["encryptiong","encryption"],["encrytion","encryption"],["encrytped","encrypted"],["encrytption","encryption"],["encupsulates","encapsulates"],["encylopedia","encyclopedia"],["encypted","encrypted"],["encyption","encryption"],["endcoded","encoded"],["endcoder","encoder"],["endcoders","encoders"],["endcodes","encodes"],["endcoding","encoding"],["endcodings","encodings"],["endding","ending"],["ende","end"],["endevors","endeavors"],["endevour","endeavour"],["endfi","endif"],["endianes","endianness"],["endianess","endianness"],["endianity","endianness"],["endiannes","endianness"],["endig","ending"],["endiness","endianness"],["endnoden","endnode"],["endoint","endpoint"],["endolithes","endoliths"],["endpints","endpoints"],["endpiont","endpoint"],["endpionts","endpoints"],["endpont","endpoint"],["endponts","endpoints"],["endsup","ends up"],["enduce","induce"],["eneables","enables"],["enebale","enable"],["enebaled","enabled"],["eneble","enable"],["ened","need"],["enegeries","energies"],["enegery","energy"],["enehanced","enhanced"],["enery","energy"],["eneter","enter"],["enetered","entered"],["enetities","entities"],["enetity","entity"],["eneumeration","enumeration"],["eneumerations","enumerations"],["eneumretaion","enumeration"],["eneumretaions","enumerations"],["enew","new"],["enflamed","inflamed"],["enforcable","enforceable"],["enforceing","enforcing"],["enforcmement","enforcement"],["enforcment","enforcement"],["enfore","enforce"],["enfored","enforced"],["enfores","enforces"],["enforncing","enforcing"],["engagment","engagement"],["engeneer","engineer"],["engeneering","engineering"],["engery","energy"],["engieer","engineer"],["engieneer","engineer"],["engieneers","engineers"],["enginee","engine"],["enginge","engine"],["enginin","engine"],["enginineer","engineer"],["engoug","enough"],["enhabce","enhance"],["enhabced","enhanced"],["enhabces","enhances"],["enhabcing","enhancing"],["enhace","enhance"],["enhaced","enhanced"],["enhacement","enhancement"],["enhacements","enhancements"],["enhancd","enhanced"],["enhancment","enhancement"],["enhancments","enhancements"],["enhaned","enhanced"],["enhence","enhance"],["enhenced","enhanced"],["enhencement","enhancement"],["enhencements","enhancements"],["enhencment","enhancement"],["enhencments","enhancements"],["enironment","environment"],["enironments","environments"],["enities","entities"],["enitities","entities"],["enitity","entity"],["enitre","entire"],["enivornment","environment"],["enivornments","environments"],["enivronment","environment"],["enlargment","enlargement"],["enlargments","enlargements"],["enlightnment","enlightenment"],["enlose","enclose"],["enmpty","empty"],["enmum","enum"],["ennpoint","endpoint"],["enntries","entries"],["enocde","encode"],["enocded","encoded"],["enocder","encoder"],["enocders","encoders"],["enocdes","encodes"],["enocding","encoding"],["enocdings","encodings"],["enogh","enough"],["enoght","enough"],["enoguh","enough"],["enouch","enough"],["enoucnter","encounter"],["enoucntered","encountered"],["enoucntering","encountering"],["enoucnters","encounters"],["enouf","enough"],["enoufh","enough"],["enought","enough"],["enoughts","enough"],["enougth","enough"],["enouh","enough"],["enouhg","enough"],["enouncter","encounter"],["enounctered","encountered"],["enounctering","encountering"],["enouncters","encounters"],["enoung","enough"],["enoungh","enough"],["enounter","encounter"],["enountered","encountered"],["enountering","encountering"],["enounters","encounters"],["enouph","enough"],["enourage","encourage"],["enouraged","encouraged"],["enourages","encourages"],["enouraging","encouraging"],["enourmous","enormous"],["enourmously","enormously"],["enouth","enough"],["enouugh","enough"],["enpoint","endpoint"],["enpoints","endpoints"],["enque","enqueue"],["enqueing","enqueuing"],["enrties","entries"],["enrtries","entries"],["enrtry","entry"],["enrty","entry"],["ensconsed","ensconced"],["entaglements","entanglements"],["entended","intended"],["entension","extension"],["entensions","extensions"],["ententries","entries"],["enterance","entrance"],["enteratinment","entertainment"],["entereing","entering"],["enterie","entry"],["enteries","entries"],["enterily","entirely"],["enterprice","enterprise"],["enterprices","enterprises"],["entery","entry"],["enteties","entities"],["entety","entity"],["enthaplies","enthalpies"],["enthaply","enthalpy"],["enthousiasm","enthusiasm"],["enthusiam","enthusiasm"],["enthusiatic","enthusiastic"],["entierly","entirely"],["entireity","entirety"],["entires","entries"],["entirey","entirely"],["entirity","entirety"],["entirly","entirely"],["entitee","entity"],["entitees","entities"],["entites","entities"],["entiti","entity"],["entitie","entity"],["entitites","entities"],["entitities","entities"],["entitity","entity"],["entitiy","entity"],["entitiys","entities"],["entitlied","entitled"],["entitys","entities"],["entoties","entities"],["entoty","entity"],["entrace","entrance"],["entraced","entranced"],["entraces","entrances"],["entrepeneur","entrepreneur"],["entrepeneurs","entrepreneurs"],["entriess","entries"],["entrophy","entropy"],["enttries","entries"],["enttry","entry"],["enulation","emulation"],["enumarate","enumerate"],["enumarated","enumerated"],["enumarates","enumerates"],["enumarating","enumerating"],["enumation","enumeration"],["enumearate","enumerate"],["enumearation","enumeration"],["enumerble","enumerable"],["enumertaion","enumeration"],["enusre","ensure"],["envaluation","evaluation"],["enveloppe","envelope"],["envelopped","enveloped"],["enveloppes","envelopes"],["envelopping","enveloping"],["enver","never"],["envioment","environment"],["enviomental","environmental"],["envioments","environments"],["envionment","environment"],["envionmental","environmental"],["envionments","environments"],["enviorement","environment"],["envioremental","environmental"],["enviorements","environments"],["enviorenment","environment"],["enviorenmental","environmental"],["enviorenments","environments"],["enviorment","environment"],["enviormental","environmental"],["enviormentally","environmentally"],["enviorments","environments"],["enviornemnt","environment"],["enviornemntal","environmental"],["enviornemnts","environments"],["enviornment","environment"],["enviornmental","environmental"],["enviornmentalist","environmentalist"],["enviornmentally","environmentally"],["enviornments","environments"],["envioronment","environment"],["envioronmental","environmental"],["envioronments","environments"],["envireonment","environment"],["envirionment","environment"],["envirnment","environment"],["envirnmental","environmental"],["envirnments","environments"],["envirnoment","environment"],["envirnoments","environments"],["enviroiment","environment"],["enviroment","environment"],["enviromental","environmental"],["enviromentalist","environmentalist"],["enviromentally","environmentally"],["enviroments","environments"],["enviromnent","environment"],["enviromnental","environmental"],["enviromnentally","environmentally"],["enviromnents","environments"],["environement","environment"],["environemnt","environment"],["environemntal","environmental"],["environemnts","environments"],["environent","environment"],["environmane","environment"],["environmenet","environment"],["environmenets","environments"],["environmet","environment"],["environmets","environments"],["environmnet","environment"],["environmont","environment"],["environnement","environment"],["environtment","environment"],["envolutionary","evolutionary"],["envolved","involved"],["envorce","enforce"],["envrion","environ"],["envrionment","environment"],["envrionmental","environmental"],["envrionments","environments"],["envrions","environs"],["envriron","environ"],["envrironment","environment"],["envrironmental","environmental"],["envrironments","environments"],["envrirons","environs"],["envvironment","environment"],["enxt","next"],["enything","anything"],["enyway","anyway"],["epecifica","especifica"],["epect","expect"],["epected","expected"],["epectedly","expectedly"],["epecting","expecting"],["epects","expects"],["ephememeral","ephemeral"],["ephememeris","ephemeris"],["epidsodes","episodes"],["epigramic","epigrammatic"],["epilgoue","epilogue"],["episdoe","episode"],["episdoes","episodes"],["eploit","exploit"],["eploits","exploits"],["epmty","empty"],["epressions","expressions"],["epsiode","episode"],["eptied","emptied"],["eptier","emptier"],["epties","empties"],["eptrapolate","extrapolate"],["eptrapolated","extrapolated"],["eptrapolates","extrapolates"],["epty","empty"],["epxanded","expanded"],["epxected","expected"],["epxiressions","expressions"],["epxlicit","explicit"],["eqaul","equal"],["eqaulity","equality"],["eqaulizer","equalizer"],["eqivalent","equivalent"],["eqivalents","equivalents"],["equailateral","equilateral"],["equalibrium","equilibrium"],["equallity","equality"],["equalls","equals"],["equaly","equally"],["equeation","equation"],["equeations","equations"],["equel","equal"],["equelibrium","equilibrium"],["equialent","equivalent"],["equil","equal"],["equilavalent","equivalent"],["equilibium","equilibrium"],["equilibrum","equilibrium"],["equilvalent","equivalent"],["equilvalently","equivalently"],["equilvalents","equivalents"],["equiped","equipped"],["equipmentd","equipment"],["equipments","equipment"],["equippment","equipment"],["equiptment","equipment"],["equitorial","equatorial"],["equivalance","equivalence"],["equivalant","equivalent"],["equivelant","equivalent"],["equivelent","equivalent"],["equivelents","equivalents"],["equivilant","equivalent"],["equivilent","equivalent"],["equivivalent","equivalent"],["equivlalent","equivalent"],["equivlantly","equivalently"],["equivlent","equivalent"],["equivlently","equivalently"],["equivlents","equivalents"],["equivqlent","equivalent"],["eqution","equation"],["equtions","equations"],["equvalent","equivalent"],["equvivalent","equivalent"],["erasablocks","eraseblocks"],["eratic","erratic"],["eratically","erratically"],["eraticly","erratically"],["erformance","performance"],["erliear","earlier"],["erlier","earlier"],["erly","early"],["ermergency","emergency"],["eroneous","erroneous"],["eror","error"],["erorneus","erroneous"],["erorneusly","erroneously"],["erorr","error"],["erorrs","errors"],["erors","errors"],["erraneously","erroneously"],["erro","error"],["erroneus","erroneous"],["erroneusly","erroneously"],["erronous","erroneous"],["erronously","erroneously"],["errorneous","erroneous"],["errorneously","erroneously"],["errorneus","erroneous"],["errornous","erroneous"],["errornously","erroneously"],["errorprone","error-prone"],["errorr","error"],["erros","errors"],["errot","error"],["errots","errors"],["errro","error"],["errror","error"],["errrors","errors"],["errros","errors"],["errupted","erupted"],["ertoneous","erroneous"],["ertoneously","erroneously"],["ervery","every"],["erverything","everything"],["esacpe","escape"],["esacped","escaped"],["esacpes","escapes"],["escalte","escalate"],["escalted","escalated"],["escaltes","escalates"],["escalting","escalating"],["escaltion","escalation"],["escapeable","escapable"],["escapemant","escapement"],["escased","escaped"],["escation","escalation"],["esccape","escape"],["esccaped","escaped"],["escpae","escape"],["escpaed","escaped"],["esecute","execute"],["esential","essential"],["esentially","essentially"],["esge","edge"],["esger","edger"],["esgers","edgers"],["esges","edges"],["esging","edging"],["esiest","easiest"],["esimate","estimate"],["esimated","estimated"],["esimates","estimates"],["esimating","estimating"],["esimation","estimation"],["esimations","estimations"],["esimator","estimator"],["esimators","estimators"],["esists","exists"],["esitmate","estimate"],["esitmated","estimated"],["esitmates","estimates"],["esitmating","estimating"],["esitmation","estimation"],["esitmations","estimations"],["esitmator","estimator"],["esitmators","estimators"],["esle","else"],["esnure","ensure"],["esnured","ensured"],["esnures","ensures"],["espacally","especially"],["espace","escape"],["espaced","escaped"],["espaces","escapes"],["espacially","especially"],["espacing","escaping"],["espcially","especially"],["especailly","especially"],["especally","especially"],["especialy","especially"],["especialyl","especially"],["especiially","especially"],["espect","expect"],["espeically","especially"],["esseintially","essentially"],["essencial","essential"],["essense","essence"],["essentail","essential"],["essentailly","essentially"],["essentaily","essentially"],["essental","essential"],["essentally","essentially"],["essentals","essentials"],["essentialy","essentially"],["essentual","essential"],["essentually","essentially"],["essentualy","essentially"],["essesital","essential"],["essesitally","essentially"],["essesitaly","essentially"],["essiential","essential"],["esssential","essential"],["estabilish","establish"],["estabish","establish"],["estabishd","established"],["estabished","established"],["estabishes","establishes"],["estabishing","establishing"],["establised","established"],["establishs","establishes"],["establising","establishing"],["establsihed","established"],["estbalishment","establishment"],["estimage","estimate"],["estimages","estimates"],["estiomator","estimator"],["estiomators","estimators"],["esy","easy"],["etablish","establish"],["etablishd","established"],["etablished","established"],["etablishing","establishing"],["etcc","etc"],["etcp","etc"],["etensible","extensible"],["etension","extension"],["etensions","extensions"],["ethe","the"],["etherenet","Ethernet"],["ethernal","eternal"],["ethnocentricm","ethnocentrism"],["etiher","either"],["etroneous","erroneous"],["etroneously","erroneously"],["etsablishment","establishment"],["etsbalishment","establishment"],["etst","test"],["etsts","tests"],["etxt","text"],["euclidian","euclidean"],["euivalent","equivalent"],["euivalents","equivalents"],["euqivalent","equivalent"],["euqivalents","equivalents"],["euristic","heuristic"],["euristics","heuristics"],["Europian","European"],["Europians","Europeans"],["Eurpean","European"],["Eurpoean","European"],["evalation","evaluation"],["evalite","evaluate"],["evalited","evaluated"],["evalites","evaluates"],["evaluataion","evaluation"],["evaluataions","evaluations"],["evalueate","evaluate"],["evalueated","evaluated"],["evaluete","evaluate"],["evalueted","evaluated"],["evalulates","evaluates"],["evalutae","evaluate"],["evalutaed","evaluated"],["evalutaeing","evaluating"],["evalutaes","evaluates"],["evalutaing","evaluating"],["evalutaion","evaluation"],["evalutaions","evaluations"],["evalutaor","evaluator"],["evalutate","evaluate"],["evalutated","evaluated"],["evalutates","evaluates"],["evalutating","evaluating"],["evalutation","evaluation"],["evalutations","evaluations"],["evalute","evaluate"],["evaluted","evaluated"],["evalutes","evaluates"],["evaluting","evaluating"],["evalutions","evaluations"],["evalutive","evaluative"],["evalutor","evaluator"],["evalutors","evaluators"],["evaulate","evaluate"],["evaulated","evaluated"],["evaulates","evaluates"],["evaulating","evaluating"],["evaulation","evaluation"],["evaulator","evaluator"],["evaulted","evaluated"],["evauluate","evaluate"],["evauluated","evaluated"],["evauluates","evaluates"],["evauluation","evaluation"],["eveluate","evaluate"],["eveluated","evaluated"],["eveluates","evaluates"],["eveluating","evaluating"],["eveluation","evaluation"],["eveluations","evaluations"],["eveluator","evaluator"],["eveluators","evaluators"],["evenhtually","eventually"],["eventally","eventually"],["eventaully","eventually"],["eventhanders","event handlers"],["eventhough","even though"],["eventially","eventually"],["eventuall","eventually"],["eventualy","eventually"],["evenually","eventually"],["eveolution","evolution"],["eveolutionary","evolutionary"],["eveolve","evolve"],["eveolved","evolved"],["eveolves","evolves"],["eveolving","evolving"],["everage","average"],["everaged","averaged"],["everbody","everybody"],["everithing","everything"],["everone","everyone"],["everthing","everything"],["evertyhign","everything"],["evertyhing","everything"],["evertything","everything"],["everwhere","everywhere"],["everyhing","everything"],["everyhting","everything"],["everythig","everything"],["everythign","everything"],["everythin","everything"],["everythings","everything"],["everytime","every time"],["everyting","everything"],["everytone","everyone"],["evey","every"],["eveyone","everyone"],["eveyr","every"],["evidentally","evidently"],["evironment","environment"],["evironments","environments"],["evition","eviction"],["evluate","evaluate"],["evluated","evaluated"],["evluates","evaluates"],["evluating","evaluating"],["evluation","evaluation"],["evluations","evaluations"],["evluative","evaluative"],["evluator","evaluator"],["evluators","evaluators"],["evnet","event"],["evnts","events"],["evoluate","evaluate"],["evoluated","evaluated"],["evoluates","evaluates"],["evoluation","evaluations"],["evovler","evolver"],["evovling","evolving"],["evrithing","everything"],["evry","every"],["evrythign","everything"],["evrything","everything"],["evrywhere","everywhere"],["evyrthing","everything"],["ewhwer","where"],["exaclty","exactly"],["exacly","exactly"],["exactely","exactly"],["exacty","exactly"],["exacutable","executable"],["exagerate","exaggerate"],["exagerated","exaggerated"],["exagerates","exaggerates"],["exagerating","exaggerating"],["exagerrate","exaggerate"],["exagerrated","exaggerated"],["exagerrates","exaggerates"],["exagerrating","exaggerating"],["exameple","example"],["exameples","examples"],["examied","examined"],["examinated","examined"],["examing","examining"],["examinining","examining"],["examle","example"],["examles","examples"],["examlpe","example"],["examlpes","examples"],["examnple","example"],["examnples","examples"],["exampel","example"],["exampeles","examples"],["exampels","examples"],["examplees","examples"],["examplifies","exemplifies"],["exampple","example"],["exampples","examples"],["exampt","exempt"],["exand","expand"],["exansive","expansive"],["exapansion","expansion"],["exapend","expand"],["exaplain","explain"],["exaplaination","explanation"],["exaplained","explained"],["exaplaining","explaining"],["exaplains","explains"],["exaplanation","explanation"],["exaplanations","explanations"],["exaple","example"],["exaples","examples"],["exapmle","example"],["exapmles","examples"],["exapnsion","expansion"],["exat","exact"],["exatcly","exactly"],["exatctly","exactly"],["exatly","exactly"],["exausted","exhausted"],["excact","exact"],["excactly","exactly"],["excahcnge","exchange"],["excahnge","exchange"],["excahnges","exchanges"],["excange","exchange"],["excape","escape"],["excaped","escaped"],["excapes","escapes"],["excat","exact"],["excating","exacting"],["excatly","exactly"],["exccute","execute"],["excecise","exercise"],["excecises","exercises"],["excecpt","except"],["excecption","exception"],["excecptional","exceptional"],["excecptions","exceptions"],["excectable","executable"],["excectables","executables"],["excecte","execute"],["excectedly","expectedly"],["excectes","executes"],["excecting","executing"],["excectional","exceptional"],["excective","executive"],["excectives","executives"],["excector","executor"],["excectors","executors"],["excects","expects"],["excecutable","executable"],["excecutables","executables"],["excecute","execute"],["excecuted","executed"],["excecutes","executes"],["excecuting","executing"],["excecution","execution"],["excecutions","executions"],["excecutive","executive"],["excecutives","executives"],["excecutor","executor"],["excecutors","executors"],["excecuts","executes"],["exced","exceed"],["excedded","exceeded"],["excedding","exceeding"],["excede","exceed"],["exceded","exceeded"],["excedeed","exceeded"],["excedes","exceeds"],["exceding","exceeding"],["exceeed","exceed"],["exceirpt","excerpt"],["exceirpts","excerpts"],["excelent","excellent"],["excell","excel"],["excellance","excellence"],["excellant","excellent"],["excells","excels"],["excempt","exempt"],["excempted","exempted"],["excemption","exemption"],["excemptions","exemptions"],["excempts","exempts"],["excentric","eccentric"],["excentricity","eccentricity"],["excentuating","accentuating"],["exceopt","exempt"],["exceopted","exempted"],["exceopts","exempts"],["exceotion","exemption"],["exceotions","exemptions"],["excepetion","exception"],["excepion","exception"],["excepional","exceptional"],["excepionally","exceptionally"],["excepions","exceptions"],["exceprt","excerpt"],["exceprts","excerpts"],["exceptation","expectation"],["exceptionnal","exceptional"],["exceptionss","exceptions"],["exceptionts","exceptions"],["excercise","exercise"],["excercised","exercised"],["excerciser","exerciser"],["excercises","exercises"],["excercising","exercising"],["excerise","exercise"],["exces","excess"],["excesed","exceeded"],["excesive","excessive"],["excesively","excessively"],["excesss","excess"],["excesv","excessive"],["excesvly","excessively"],["excetion","exception"],["excetional","exceptional"],["excetions","exceptions"],["excetpion","exception"],["excetpional","exceptional"],["excetpions","exceptions"],["excetption","exception"],["excetptional","exceptional"],["excetptions","exceptions"],["excetra","etcetera"],["excetutable","executable"],["excetutables","executables"],["excetute","execute"],["excetuted","executed"],["excetutes","executes"],["excetuting","executing"],["excetution","execution"],["excetutions","executions"],["excetutive","executive"],["excetutives","executives"],["excetutor","executor"],["excetutors","executors"],["exceuctable","executable"],["exceuctables","executables"],["exceucte","execute"],["exceucted","executed"],["exceuctes","executes"],["exceucting","executing"],["exceuction","execution"],["exceuctions","executions"],["exceuctive","executive"],["exceuctives","executives"],["exceuctor","executor"],["exceuctors","executors"],["exceutable","executable"],["exceutables","executables"],["exceute","execute"],["exceuted","executed"],["exceutes","executes"],["exceuting","executing"],["exceution","execution"],["exceutions","executions"],["exceutive","executive"],["exceutives","executives"],["exceutor","executor"],["exceutors","executors"],["excewption","exception"],["excewptional","exceptional"],["excewptions","exceptions"],["exchage","exchange"],["exchaged","exchanged"],["exchages","exchanges"],["exchaging","exchanging"],["exchagne","exchange"],["exchagned","exchanged"],["exchagnes","exchanges"],["exchagnge","exchange"],["exchagnged","exchanged"],["exchagnges","exchanges"],["exchagnging","exchanging"],["exchagning","exchanging"],["exchanage","exchange"],["exchanaged","exchanged"],["exchanages","exchanges"],["exchanaging","exchanging"],["exchance","exchange"],["exchanced","exchanged"],["exchances","exchanges"],["exchanche","exchange"],["exchanched","exchanged"],["exchanches","exchanges"],["exchanching","exchanging"],["exchancing","exchanging"],["exchane","exchange"],["exchaned","exchanged"],["exchanes","exchanges"],["exchangable","exchangeable"],["exchaning","exchanging"],["exchaust","exhaust"],["exchausted","exhausted"],["exchausting","exhausting"],["exchaustive","exhaustive"],["exchausts","exhausts"],["exchenge","exchange"],["exchenged","exchanged"],["exchenges","exchanges"],["exchenging","exchanging"],["exchnage","exchange"],["exchnaged","exchanged"],["exchnages","exchanges"],["exchnaging","exchanging"],["exchng","exchange"],["exchngd","exchanged"],["exchnge","exchange"],["exchnged","exchanged"],["exchnges","exchanges"],["exchnging","exchanging"],["exchngng","exchanging"],["exchngs","exchanges"],["exciation","excitation"],["excipt","except"],["exciption","exception"],["exciptions","exceptions"],["excist","exist"],["excisted","existed"],["excisting","existing"],["excitment","excitement"],["exclamantion","exclamation"],["excludde","exclude"],["excludind","excluding"],["exclusiv","exclusive"],["exclusivelly","exclusively"],["exclusivly","exclusively"],["exclusivs","exclusives"],["excluslvely","exclusively"],["exclusuive","exclusive"],["exclusuively","exclusively"],["exclusuives","exclusives"],["excpect","expect"],["excpected","expected"],["excpecting","expecting"],["excpects","expects"],["excpeption","exception"],["excpet","except"],["excpetion","exception"],["excpetional","exceptional"],["excpetions","exceptions"],["excplicit","explicit"],["excplicitly","explicitly"],["excplict","explicit"],["excplictly","explicitly"],["excract","extract"],["exctacted","extracted"],["exctract","extract"],["exctracted","extracted"],["exctracting","extracting"],["exctraction","extraction"],["exctractions","extractions"],["exctractor","extractor"],["exctractors","extractors"],["exctracts","extracts"],["exculde","exclude"],["exculding","excluding"],["exculsive","exclusive"],["exculsively","exclusively"],["exculsivly","exclusively"],["excutable","executable"],["excutables","executables"],["excute","execute"],["excuted","executed"],["excutes","executes"],["excuting","executing"],["excution","execution"],["execeed","exceed"],["execeeded","exceeded"],["execeeds","exceeds"],["exeception","exception"],["execeptions","exceptions"],["execising","exercising"],["execption","exception"],["execptions","exceptions"],["exectable","executable"],["exection","execution"],["exections","executions"],["exectuable","executable"],["exectuableness","executableness"],["exectuables","executables"],["exectued","executed"],["exectuion","execution"],["exectuions","executions"],["execture","execute"],["exectured","executed"],["exectures","executes"],["execturing","executing"],["exectute","execute"],["exectuted","executed"],["exectutes","executes"],["exectution","execution"],["exectutions","executions"],["execuable","executable"],["execuables","executables"],["execuatable","executable"],["execuatables","executables"],["execuatble","executable"],["execuatbles","executables"],["execuate","execute"],["execuated","executed"],["execuates","executes"],["execuation","execution"],["execuations","executions"],["execubale","executable"],["execubales","executables"],["execucte","execute"],["execucted","executed"],["execuctes","executes"],["execuction","execution"],["execuctions","executions"],["execuctor","executor"],["execuctors","executors"],["execude","execute"],["execuded","executed"],["execudes","executes"],["execue","execute"],["execued","executed"],["execues","executes"],["execuet","execute"],["execuetable","executable"],["execuetd","executed"],["execuete","execute"],["execueted","executed"],["execuetes","executes"],["execuets","executes"],["execuing","executing"],["execuion","execution"],["execuions","executions"],["execuitable","executable"],["execuitables","executables"],["execuite","execute"],["execuited","executed"],["execuites","executes"],["execuiting","executing"],["execuition","execution"],["execuitions","executions"],["execulatble","executable"],["execulatbles","executables"],["execultable","executable"],["execultables","executables"],["execulusive","exclusive"],["execune","execute"],["execuned","executed"],["execunes","executes"],["execunting","executing"],["execurable","executable"],["execurables","executables"],["execure","execute"],["execured","executed"],["execures","executes"],["execusion","execution"],["execusions","executions"],["execusive","exclusive"],["execustion","execution"],["execustions","executions"],["execut","execute"],["executabable","executable"],["executabables","executables"],["executabe","executable"],["executabel","executable"],["executabels","executables"],["executabes","executables"],["executablble","executable"],["executabnle","executable"],["executabnles","executables"],["executation","execution"],["executations","executions"],["executbale","executable"],["executbales","executables"],["executble","executable"],["executbles","executables"],["executd","executed"],["executding","executing"],["executeable","executable"],["executeables","executables"],["executible","executable"],["executign","executing"],["executng","executing"],["executre","execute"],["executred","executed"],["executres","executes"],["executs","executes"],["executting","executing"],["executtion","execution"],["executtions","executions"],["executuable","executable"],["executuables","executables"],["executuble","executable"],["executubles","executables"],["executue","execute"],["executued","executed"],["executues","executes"],["executuing","executing"],["executuion","execution"],["executuions","executions"],["executung","executing"],["executuon","execution"],["executuons","executions"],["executute","execute"],["execututed","executed"],["execututes","executes"],["executution","execution"],["execututions","executions"],["exeed","exceed"],["exeeding","exceeding"],["exeedingly","exceedingly"],["exeeds","exceeds"],["exelent","excellent"],["exellent","excellent"],["exempel","example"],["exempels","examples"],["exemple","example"],["exemples","examples"],["exended","extended"],["exension","extension"],["exensions","extensions"],["exent","extent"],["exentended","extended"],["exepct","expect"],["exepcted","expected"],["exepcts","expects"],["exepect","expect"],["exepectation","expectation"],["exepectations","expectations"],["exepected","expected"],["exepectedly","expectedly"],["exepecting","expecting"],["exepects","expects"],["exepriment","experiment"],["exeprimental","experimental"],["exeptional","exceptional"],["exeptions","exceptions"],["exeqution","execution"],["exerbate","exacerbate"],["exerbated","exacerbated"],["exerciese","exercise"],["exerciesed","exercised"],["exercieses","exercises"],["exerciesing","exercising"],["exercize","exercise"],["exerimental","experimental"],["exerpt","excerpt"],["exerpts","excerpts"],["exersize","exercise"],["exersizes","exercises"],["exerternal","external"],["exeucte","execute"],["exeucted","executed"],["exeuctes","executes"],["exeution","execution"],["exexutable","executable"],["exhalted","exalted"],["exhange","exchange"],["exhanged","exchanged"],["exhanges","exchanges"],["exhanging","exchanging"],["exhaused","exhausted"],["exhautivity","exhaustivity"],["exhcuast","exhaust"],["exhcuasted","exhausted"],["exhibtion","exhibition"],["exhist","exist"],["exhistance","existence"],["exhisted","existed"],["exhistence","existence"],["exhisting","existing"],["exhists","exists"],["exhostive","exhaustive"],["exhustiveness","exhaustiveness"],["exibition","exhibition"],["exibitions","exhibitions"],["exicting","exciting"],["exinct","extinct"],["exipration","expiration"],["exipre","expire"],["exipred","expired"],["exipres","expires"],["exising","existing"],["exisit","exist"],["exisited","existed"],["exisitent","existent"],["exisiting","existing"],["exisitng","existing"],["exisits","exists"],["existance","existence"],["existant","existent"],["existatus","exitstatus"],["existencd","existence"],["existend","existed"],["existense","existence"],["existin","existing"],["existince","existence"],["existng","existing"],["existsing","existing"],["existting","existing"],["existung","existing"],["existy","exist"],["existying","existing"],["exitance","existence"],["exitation","excitation"],["exitations","excitations"],["exitt","exit"],["exitted","exited"],["exitting","exiting"],["exitts","exits"],["exixst","exist"],["exixt","exist"],["exlamation","exclamation"],["exlcude","exclude"],["exlcuding","excluding"],["exlcusion","exclusion"],["exlcusions","exclusions"],["exlcusive","exclusive"],["exlicit","explicit"],["exlicite","explicit"],["exlicitely","explicitly"],["exlicitly","explicitly"],["exliled","exiled"],["exlpoit","exploit"],["exlpoited","exploited"],["exlpoits","exploits"],["exlusion","exclusion"],["exlusionary","exclusionary"],["exlusions","exclusions"],["exlusive","exclusive"],["exlusively","exclusively"],["exmaine","examine"],["exmained","examined"],["exmaines","examines"],["exmaple","example"],["exmaples","examples"],["exmple","example"],["exmport","export"],["exnternal","external"],["exnternalities","externalities"],["exnternality","externality"],["exnternally","externally"],["exntry","entry"],["exolicit","explicit"],["exolicitly","explicitly"],["exonorate","exonerate"],["exort","export"],["exoskelaton","exoskeleton"],["expalin","explain"],["expaning","expanding"],["expanion","expansion"],["expanions","expansions"],["expanshion","expansion"],["expanshions","expansions"],["expanssion","expansion"],["exparation","expiration"],["expasion","expansion"],["expatriot","expatriate"],["expception","exception"],["expcetation","expectation"],["expcetations","expectations"],["expceted","expected"],["expceting","expecting"],["expcets","expects"],["expct","expect"],["expcted","expected"],["expctedly","expectedly"],["expcting","expecting"],["expeced","expected"],["expeceted","expected"],["expecially","especially"],["expectaion","expectation"],["expectaions","expectations"],["expectatoins","expectations"],["expectatons","expectations"],["expectd","expected"],["expecte","expected"],["expectes","expects"],["expection","exception"],["expections","exceptions"],["expeditonary","expeditionary"],["expeect","expect"],["expeected","expected"],["expeectedly","expectedly"],["expeecting","expecting"],["expeects","expects"],["expeense","expense"],["expeenses","expenses"],["expeensive","expensive"],["expeience","experience"],["expeienced","experienced"],["expeiences","experiences"],["expeiencing","experiencing"],["expeiment","experiment"],["expeimental","experimental"],["expeimentally","experimentally"],["expeimentation","experimentation"],["expeimentations","experimentations"],["expeimented","experimented"],["expeimentel","experimental"],["expeimentelly","experimentally"],["expeimenter","experimenter"],["expeimenters","experimenters"],["expeimenting","experimenting"],["expeiments","experiments"],["expeiriment","experiment"],["expeirimental","experimental"],["expeirimentally","experimentally"],["expeirimentation","experimentation"],["expeirimentations","experimentations"],["expeirimented","experimented"],["expeirimentel","experimental"],["expeirimentelly","experimentally"],["expeirimenter","experimenter"],["expeirimenters","experimenters"],["expeirimenting","experimenting"],["expeiriments","experiments"],["expell","expel"],["expells","expels"],["expement","experiment"],["expemental","experimental"],["expementally","experimentally"],["expementation","experimentation"],["expementations","experimentations"],["expemented","experimented"],["expementel","experimental"],["expementelly","experimentally"],["expementer","experimenter"],["expementers","experimenters"],["expementing","experimenting"],["expements","experiments"],["expemplar","exemplar"],["expemplars","exemplars"],["expemplary","exemplary"],["expempt","exempt"],["expempted","exempted"],["expemt","exempt"],["expemted","exempted"],["expemtion","exemption"],["expemtions","exemptions"],["expemts","exempts"],["expence","expense"],["expences","expenses"],["expencive","expensive"],["expendeble","expendable"],["expepect","expect"],["expepected","expected"],["expepectedly","expectedly"],["expepecting","expecting"],["expepects","expects"],["expepted","expected"],["expeptedly","expectedly"],["expepting","expecting"],["expeption","exception"],["expeptions","exceptions"],["expepts","expects"],["experament","experiment"],["experamental","experimental"],["experamentally","experimentally"],["experamentation","experimentation"],["experamentations","experimentations"],["experamented","experimented"],["experamentel","experimental"],["experamentelly","experimentally"],["experamenter","experimenter"],["experamenters","experimenters"],["experamenting","experimenting"],["experaments","experiments"],["experation","expiration"],["expercting","expecting"],["expercts","expects"],["expereince","experience"],["expereinced","experienced"],["expereinces","experiences"],["expereincing","experiencing"],["experement","experiment"],["experemental","experimental"],["experementally","experimentally"],["experementation","experimentation"],["experementations","experimentations"],["experemented","experimented"],["experementel","experimental"],["experementelly","experimentally"],["experementer","experimenter"],["experementers","experimenters"],["experementing","experimenting"],["experements","experiments"],["experence","experience"],["experenced","experienced"],["experences","experiences"],["experencing","experiencing"],["experes","express"],["experesed","expressed"],["experesion","expression"],["experesions","expressions"],["experess","express"],["experessed","expressed"],["experesses","expresses"],["experessing","expressing"],["experession's","expression's"],["experession","expression"],["experessions","expressions"],["experiance","experience"],["experianced","experienced"],["experiances","experiences"],["experiancial","experiential"],["experiancing","experiencing"],["experiansial","experiential"],["experiantial","experiential"],["experiation","expiration"],["experiations","expirations"],["experice","experience"],["expericed","experienced"],["experices","experiences"],["expericing","experiencing"],["experiement","experiment"],["experienshial","experiential"],["experiensial","experiential"],["experies","expires"],["experim","experiment"],["experimal","experimental"],["experimally","experimentally"],["experimanent","experiment"],["experimanental","experimental"],["experimanentally","experimentally"],["experimanentation","experimentation"],["experimanentations","experimentations"],["experimanented","experimented"],["experimanentel","experimental"],["experimanentelly","experimentally"],["experimanenter","experimenter"],["experimanenters","experimenters"],["experimanenting","experimenting"],["experimanents","experiments"],["experimanet","experiment"],["experimanetal","experimental"],["experimanetally","experimentally"],["experimanetation","experimentation"],["experimanetations","experimentations"],["experimaneted","experimented"],["experimanetel","experimental"],["experimanetelly","experimentally"],["experimaneter","experimenter"],["experimaneters","experimenters"],["experimaneting","experimenting"],["experimanets","experiments"],["experimant","experiment"],["experimantal","experimental"],["experimantally","experimentally"],["experimantation","experimentation"],["experimantations","experimentations"],["experimanted","experimented"],["experimantel","experimental"],["experimantelly","experimentally"],["experimanter","experimenter"],["experimanters","experimenters"],["experimanting","experimenting"],["experimants","experiments"],["experimation","experimentation"],["experimations","experimentations"],["experimdnt","experiment"],["experimdntal","experimental"],["experimdntally","experimentally"],["experimdntation","experimentation"],["experimdntations","experimentations"],["experimdnted","experimented"],["experimdntel","experimental"],["experimdntelly","experimentally"],["experimdnter","experimenter"],["experimdnters","experimenters"],["experimdnting","experimenting"],["experimdnts","experiments"],["experimed","experimented"],["experimel","experimental"],["experimelly","experimentally"],["experimen","experiment"],["experimenal","experimental"],["experimenally","experimentally"],["experimenat","experiment"],["experimenatal","experimental"],["experimenatally","experimentally"],["experimenatation","experimentation"],["experimenatations","experimentations"],["experimenated","experimented"],["experimenatel","experimental"],["experimenatelly","experimentally"],["experimenater","experimenter"],["experimenaters","experimenters"],["experimenating","experimenting"],["experimenation","experimentation"],["experimenations","experimentations"],["experimenats","experiments"],["experimened","experimented"],["experimenel","experimental"],["experimenelly","experimentally"],["experimener","experimenter"],["experimeners","experimenters"],["experimening","experimenting"],["experimens","experiments"],["experimentaal","experimental"],["experimentaally","experimentally"],["experimentaat","experiment"],["experimentaatl","experimental"],["experimentaatlly","experimentally"],["experimentaats","experiments"],["experimentaed","experimented"],["experimentaer","experimenter"],["experimentaing","experimenting"],["experimentaion","experimentation"],["experimentaions","experimentations"],["experimentait","experiment"],["experimentaital","experimental"],["experimentaitally","experimentally"],["experimentaited","experimented"],["experimentaiter","experimenter"],["experimentaiters","experimenters"],["experimentaitng","experimenting"],["experimentaiton","experimentation"],["experimentaitons","experimentations"],["experimentat","experimental"],["experimentatal","experimental"],["experimentatally","experimentally"],["experimentatation","experimentation"],["experimentatations","experimentations"],["experimentated","experimented"],["experimentater","experimenter"],["experimentatl","experimental"],["experimentatlly","experimentally"],["experimentatly","experimentally"],["experimentel","experimental"],["experimentelly","experimentally"],["experimentt","experiment"],["experimentted","experimented"],["experimentter","experimenter"],["experimentters","experimenters"],["experimentts","experiments"],["experimer","experimenter"],["experimers","experimenters"],["experimet","experiment"],["experimetal","experimental"],["experimetally","experimentally"],["experimetation","experimentation"],["experimetations","experimentations"],["experimeted","experimented"],["experimetel","experimental"],["experimetelly","experimentally"],["experimetent","experiment"],["experimetental","experimental"],["experimetentally","experimentally"],["experimetentation","experimentation"],["experimetentations","experimentations"],["experimetented","experimented"],["experimetentel","experimental"],["experimetentelly","experimentally"],["experimetenter","experimenter"],["experimetenters","experimenters"],["experimetenting","experimenting"],["experimetents","experiments"],["experimeter","experimenter"],["experimeters","experimenters"],["experimeting","experimenting"],["experimetn","experiment"],["experimetnal","experimental"],["experimetnally","experimentally"],["experimetnation","experimentation"],["experimetnations","experimentations"],["experimetned","experimented"],["experimetnel","experimental"],["experimetnelly","experimentally"],["experimetner","experimenter"],["experimetners","experimenters"],["experimetning","experimenting"],["experimetns","experiments"],["experimets","experiments"],["experiming","experimenting"],["experimint","experiment"],["experimintal","experimental"],["experimintally","experimentally"],["experimintation","experimentation"],["experimintations","experimentations"],["experiminted","experimented"],["experimintel","experimental"],["experimintelly","experimentally"],["experiminter","experimenter"],["experiminters","experimenters"],["experiminting","experimenting"],["experimints","experiments"],["experimment","experiment"],["experimmental","experimental"],["experimmentally","experimentally"],["experimmentation","experimentation"],["experimmentations","experimentations"],["experimmented","experimented"],["experimmentel","experimental"],["experimmentelly","experimentally"],["experimmenter","experimenter"],["experimmenters","experimenters"],["experimmenting","experimenting"],["experimments","experiments"],["experimnet","experiment"],["experimnetal","experimental"],["experimnetally","experimentally"],["experimnetation","experimentation"],["experimnetations","experimentations"],["experimneted","experimented"],["experimnetel","experimental"],["experimnetelly","experimentally"],["experimneter","experimenter"],["experimneters","experimenters"],["experimneting","experimenting"],["experimnets","experiments"],["experimnt","experiment"],["experimntal","experimental"],["experimntally","experimentally"],["experimntation","experimentation"],["experimntations","experimentations"],["experimnted","experimented"],["experimntel","experimental"],["experimntelly","experimentally"],["experimnter","experimenter"],["experimnters","experimenters"],["experimnting","experimenting"],["experimnts","experiments"],["experims","experiments"],["experimten","experiment"],["experimtenal","experimental"],["experimtenally","experimentally"],["experimtenation","experimentation"],["experimtenations","experimentations"],["experimtened","experimented"],["experimtenel","experimental"],["experimtenelly","experimentally"],["experimtener","experimenter"],["experimteners","experimenters"],["experimtening","experimenting"],["experimtens","experiments"],["experinece","experience"],["experineced","experienced"],["experinement","experiment"],["experinemental","experimental"],["experinementally","experimentally"],["experinementation","experimentation"],["experinementations","experimentations"],["experinemented","experimented"],["experinementel","experimental"],["experinementelly","experimentally"],["experinementer","experimenter"],["experinementers","experimenters"],["experinementing","experimenting"],["experinements","experiments"],["experiration","expiration"],["experirations","expirations"],["expermenet","experiment"],["expermenetal","experimental"],["expermenetally","experimentally"],["expermenetation","experimentation"],["expermenetations","experimentations"],["expermeneted","experimented"],["expermenetel","experimental"],["expermenetelly","experimentally"],["expermeneter","experimenter"],["expermeneters","experimenters"],["expermeneting","experimenting"],["expermenets","experiments"],["experment","experiment"],["expermental","experimental"],["expermentally","experimentally"],["expermentation","experimentation"],["expermentations","experimentations"],["expermented","experimented"],["expermentel","experimental"],["expermentelly","experimentally"],["expermenter","experimenter"],["expermenters","experimenters"],["expermenting","experimenting"],["experments","experiments"],["expermient","experiment"],["expermiental","experimental"],["expermientally","experimentally"],["expermientation","experimentation"],["expermientations","experimentations"],["expermiented","experimented"],["expermientel","experimental"],["expermientelly","experimentally"],["expermienter","experimenter"],["expermienters","experimenters"],["expermienting","experimenting"],["expermients","experiments"],["expermiment","experiment"],["expermimental","experimental"],["expermimentally","experimentally"],["expermimentation","experimentation"],["expermimentations","experimentations"],["expermimented","experimented"],["expermimentel","experimental"],["expermimentelly","experimentally"],["expermimenter","experimenter"],["expermimenters","experimenters"],["expermimenting","experimenting"],["expermiments","experiments"],["experminent","experiment"],["experminental","experimental"],["experminentally","experimentally"],["experminentation","experimentation"],["experminentations","experimentations"],["experminents","experiments"],["expernal","external"],["expers","express"],["expersed","expressed"],["expersing","expressing"],["expersion","expression"],["expersions","expressions"],["expersive","expensive"],["experss","express"],["experssed","expressed"],["expersses","expresses"],["experssing","expressing"],["experssion","expression"],["experssions","expressions"],["expese","expense"],["expeses","expenses"],["expesive","expensive"],["expesnce","expense"],["expesnces","expenses"],["expesncive","expensive"],["expess","express"],["expessed","expressed"],["expesses","expresses"],["expessing","expressing"],["expession","expression"],["expessions","expressions"],["expest","expect"],["expested","expected"],["expestedly","expectedly"],["expesting","expecting"],["expetancy","expectancy"],["expetation","expectation"],["expetc","expect"],["expetced","expected"],["expetcedly","expectedly"],["expetcing","expecting"],["expetcs","expects"],["expetct","expect"],["expetcted","expected"],["expetctedly","expectedly"],["expetcting","expecting"],["expetcts","expects"],["expetect","expect"],["expetected","expected"],["expetectedly","expectedly"],["expetecting","expecting"],["expetectly","expectedly"],["expetects","expects"],["expeted","expected"],["expetedly","expectedly"],["expetiment","experiment"],["expetimental","experimental"],["expetimentally","experimentally"],["expetimentation","experimentation"],["expetimentations","experimentations"],["expetimented","experimented"],["expetimentel","experimental"],["expetimentelly","experimentally"],["expetimenter","experimenter"],["expetimenters","experimenters"],["expetimenting","experimenting"],["expetiments","experiments"],["expeting","expecting"],["expetion","exception"],["expetional","exceptional"],["expetions","exceptions"],["expets","expects"],["expewriment","experiment"],["expewrimental","experimental"],["expewrimentally","experimentally"],["expewrimentation","experimentation"],["expewrimentations","experimentations"],["expewrimented","experimented"],["expewrimentel","experimental"],["expewrimentelly","experimentally"],["expewrimenter","experimenter"],["expewrimenters","experimenters"],["expewrimenting","experimenting"],["expewriments","experiments"],["expexct","expect"],["expexcted","expected"],["expexctedly","expectedly"],["expexcting","expecting"],["expexcts","expects"],["expexnasion","expansion"],["expexnasions","expansions"],["expext","expect"],["expexted","expected"],["expextedly","expectedly"],["expexting","expecting"],["expexts","expects"],["expicit","explicit"],["expicitly","explicitly"],["expidition","expedition"],["expiditions","expeditions"],["expierence","experience"],["expierenced","experienced"],["expierences","experiences"],["expierience","experience"],["expieriences","experiences"],["expilicitely","explicitly"],["expireitme","expiretime"],["expiriation","expiration"],["expirie","expire"],["expiried","expired"],["expirience","experience"],["expiriences","experiences"],["expirimental","experimental"],["expiriy","expiry"],["explaination","explanation"],["explainations","explanations"],["explainatory","explanatory"],["explaind","explained"],["explanaiton","explanation"],["explanaitons","explanations"],["explane","explain"],["explaned","explained"],["explanes","explains"],["explaning","explaining"],["explantion","explanation"],["explantions","explanations"],["explcit","explicit"],["explecit","explicit"],["explecitely","explicitly"],["explecitily","explicitly"],["explecitly","explicitly"],["explenation","explanation"],["explicat","explicate"],["explicilt","explicit"],["explicilty","explicitly"],["explicitelly","explicitly"],["explicitely","explicitly"],["explicitily","explicitly"],["explicity","explicitly"],["explicityly","explicitly"],["explict","explicit"],["explictely","explicitly"],["explictily","explicitly"],["explictly","explicitly"],["explin","explain"],["explination","explanation"],["explinations","explanations"],["explined","explained"],["explins","explains"],["explit","explicit"],["explitictly","explicitly"],["explitit","explicit"],["explitly","explicitly"],["explizit","explicit"],["explizitly","explicitly"],["exploititive","exploitative"],["expoed","exposed"],["expoent","exponent"],["expoential","exponential"],["expoentially","exponentially"],["expoentntial","exponential"],["expoerted","exported"],["expoit","exploit"],["expoitation","exploitation"],["expoited","exploited"],["expoits","exploits"],["expolde","explode"],["exponant","exponent"],["exponantation","exponentiation"],["exponantially","exponentially"],["exponantialy","exponentially"],["exponants","exponents"],["exponentation","exponentiation"],["exponentialy","exponentially"],["exponentiel","exponential"],["exponentiell","exponential"],["exponetial","exponential"],["exporession","expression"],["expors","exports"],["expport","export"],["exppressed","expressed"],["expres","express"],["expresed","expressed"],["expresing","expressing"],["expresion","expression"],["expresions","expressions"],["expressable","expressible"],["expressino","expression"],["expresso","espresso"],["expresss","express"],["expresssion","expression"],["expresssions","expressions"],["exprience","experience"],["exprienced","experienced"],["expriences","experiences"],["exprimental","experimental"],["expropiated","expropriated"],["expropiation","expropriation"],["exprot","export"],["exproted","exported"],["exproting","exporting"],["exprots","exports"],["exprted","exported"],["exptected","expected"],["exra","extra"],["exract","extract"],["exressed","expressed"],["exression","expression"],["exsistence","existence"],["exsistent","existent"],["exsisting","existing"],["exsists","exists"],["exsiting","existing"],["exspect","expect"],["exspected","expected"],["exspectedly","expectedly"],["exspecting","expecting"],["exspects","expects"],["exspense","expense"],["exspensed","expensed"],["exspenses","expenses"],["exstacy","ecstasy"],["exsted","existed"],["exsting","existing"],["exstream","extreme"],["exsts","exists"],["extaction","extraction"],["extactly","exactly"],["extacy","ecstasy"],["extarnal","external"],["extarnally","externally"],["extatic","ecstatic"],["extedn","extend"],["extedned","extended"],["extedner","extender"],["extedners","extenders"],["extedns","extends"],["extemely","extremely"],["exten","extent"],["extenal","external"],["extendded","extended"],["extendet","extended"],["extendsions","extensions"],["extened","extended"],["exteneded","extended"],["extenisble","extensible"],["extennsions","extensions"],["extensability","extensibility"],["extensiable","extensible"],["extensibity","extensibility"],["extensilbe","extensible"],["extensiones","extensions"],["extensivly","extensively"],["extenson","extension"],["extenstion","extension"],["extenstions","extensions"],["extented","extended"],["extention","extension"],["extentions","extensions"],["extepect","expect"],["extepecting","expecting"],["extepects","expects"],["exteral","external"],["extered","exerted"],["extereme","extreme"],["exterme","extreme"],["extermest","extremest"],["extermist","extremist"],["extermists","extremists"],["extermly","extremely"],["extermporaneous","extemporaneous"],["externaly","externally"],["externel","external"],["externelly","externally"],["externels","externals"],["extesion","extension"],["extesions","extensions"],["extesnion","extension"],["extesnions","extensions"],["extimate","estimate"],["extimated","estimated"],["extimates","estimates"],["extimating","estimating"],["extimation","estimation"],["extimations","estimations"],["extimator","estimator"],["extimators","estimators"],["extist","exist"],["extit","exit"],["extnesion","extension"],["extrac","extract"],["extraced","extracted"],["extracing","extracting"],["extracter","extractor"],["extractet","extracted"],["extractino","extracting"],["extractins","extractions"],["extradiction","extradition"],["extraenous","extraneous"],["extranous","extraneous"],["extrapoliate","extrapolate"],["extrat","extract"],["extrated","extracted"],["extraterrestial","extraterrestrial"],["extraterrestials","extraterrestrials"],["extrates","extracts"],["extrating","extracting"],["extration","extraction"],["extrator","extractor"],["extrators","extractors"],["extrats","extracts"],["extravagent","extravagant"],["extraversion","extroversion"],["extravert","extrovert"],["extraverts","extroverts"],["extraxt","extract"],["extraxted","extracted"],["extraxting","extracting"],["extraxtors","extractors"],["extraxts","extracts"],["extream","extreme"],["extreamely","extremely"],["extreamily","extremely"],["extreamly","extremely"],["extreams","extremes"],["extreem","extreme"],["extreemly","extremely"],["extremaly","extremely"],["extremeley","extremely"],["extremelly","extremely"],["extrememe","extreme"],["extrememely","extremely"],["extrememly","extremely"],["extremeophile","extremophile"],["extremitys","extremities"],["extremly","extremely"],["extrenal","external"],["extrenally","externally"],["extrenaly","externally"],["extrime","extreme"],["extrimely","extremely"],["extrimly","extremely"],["extrmities","extremities"],["extrodinary","extraordinary"],["extrordinarily","extraordinarily"],["extrordinary","extraordinary"],["extry","entry"],["exturd","extrude"],["exturde","extrude"],["exturded","extruded"],["exturdes","extrudes"],["exturding","extruding"],["exuberent","exuberant"],["exucuted","executed"],["eyt","yet"],["ezdrop","eavesdrop"],["fability","facility"],["fabircate","fabricate"],["fabircated","fabricated"],["fabircates","fabricates"],["fabircatings","fabricating"],["fabircation","fabrication"],["facce","face"],["faciliate","facilitate"],["faciliated","facilitated"],["faciliates","facilitates"],["faciliating","facilitating"],["facilites","facilities"],["facilitiate","facilitate"],["facilitiates","facilitates"],["facilititate","facilitate"],["facillitate","facilitate"],["facillities","facilities"],["faciltate","facilitate"],["facilties","facilities"],["facinated","fascinated"],["facirity","facility"],["facist","fascist"],["facorite","favorite"],["facorites","favorites"],["facourite","favourite"],["facourites","favourites"],["facours","favours"],["factization","factorization"],["factorizaiton","factorization"],["factorys","factories"],["fadind","fading"],["faeture","feature"],["faetures","features"],["Fahrenheight","Fahrenheit"],["faield","failed"],["faild","failed"],["failded","failed"],["faile","failed"],["failer","failure"],["failes","fails"],["failicies","facilities"],["failicy","facility"],["failied","failed"],["failiure","failure"],["failiures","failures"],["failiver","failover"],["faill","fail"],["failled","failed"],["faillure","failure"],["failng","failing"],["failre","failure"],["failrue","failure"],["failture","failure"],["failue","failure"],["failuer","failure"],["failues","failures"],["failured","failed"],["faireness","fairness"],["fairoh","pharaoh"],["faiway","fairway"],["faiways","fairways"],["faktor","factor"],["faktored","factored"],["faktoring","factoring"],["faktors","factors"],["falg","flag"],["falgs","flags"],["falied","failed"],["faliure","failure"],["faliures","failures"],["fallabck","fallback"],["fallbck","fallback"],["fallhrough","fallthrough"],["fallthruogh","fallthrough"],["falltrough","fallthrough"],["falshed","flashed"],["falshes","flashes"],["falshing","flashing"],["falsly","falsely"],["falt","fault"],["falure","failure"],["familar","familiar"],["familes","families"],["familiies","families"],["familiy","family"],["familliar","familiar"],["familly","family"],["famlilies","families"],["famlily","family"],["famoust","famous"],["fanatism","fanaticism"],["fancyness","fanciness"],["Farenheight","Fahrenheit"],["Farenheit","Fahrenheit"],["faries","fairies"],["farmework","framework"],["fasade","facade"],["fasion","fashion"],["fasle","false"],["fassade","facade"],["fassinate","fascinate"],["fasterner","fastener"],["fasterners","fasteners"],["fastner","fastener"],["fastners","fasteners"],["fastr","faster"],["fatc","fact"],["fater","faster"],["fatig","fatigue"],["fatser","faster"],["fature","feature"],["faught","fought"],["fauilure","failure"],["fauilures","failures"],["fauture","feature"],["fautured","featured"],["fautures","features"],["fauturing","featuring"],["favoutrable","favourable"],["favuourites","favourites"],["faymus","famous"],["fcound","found"],["feasabile","feasible"],["feasability","feasibility"],["feasable","feasible"],["featchd","fetched"],["featched","fetched"],["featching","fetching"],["featchs","fetches"],["featchss","fetches"],["featchure","feature"],["featchured","featured"],["featchures","features"],["featchuring","featuring"],["featre","feature"],["featue","feature"],["featued","featured"],["featues","features"],["featur","feature"],["featurs","features"],["feautre","feature"],["feauture","feature"],["feautures","features"],["febbruary","February"],["febewary","February"],["februar","February"],["Febuary","February"],["Feburary","February"],["fecthing","fetching"],["fedality","fidelity"],["fedreally","federally"],["feeback","feedback"],["feeded","fed"],["feek","feel"],["feeks","feels"],["feetur","feature"],["feeture","feature"],["feild","field"],["feld","field"],["felisatus","felicitous"],["femminist","feminist"],["fempto","femto"],["feonsay","fianc\xE9e"],["fequency","frequency"],["feromone","pheromone"],["fertil","fertile"],["fertily","fertility"],["fetaure","feature"],["fetaures","features"],["fetchs","fetches"],["feture","feature"],["fetures","features"],["fewsha","fuchsia"],["fezent","pheasant"],["fhurter","further"],["fials","fails"],["fianite","finite"],["fianlly","finally"],["fibonaacci","Fibonacci"],["ficticious","fictitious"],["fictious","fictitious"],["fidality","fidelity"],["fiddley","fiddly"],["fidn","find"],["fied","field"],["fiedl","field"],["fiedled","fielded"],["fiedls","fields"],["fieid","field"],["fieldlst","fieldlist"],["fieled","field"],["fielesystem","filesystem"],["fielesystems","filesystems"],["fielname","filename"],["fielneame","filename"],["fiercly","fiercely"],["fightings","fighting"],["figurestyle","figurestyles"],["filal","final"],["fileand","file and"],["fileds","fields"],["fileld","field"],["filelds","fields"],["filenae","filename"],["filese","files"],["fileshystem","filesystem"],["fileshystems","filesystems"],["filesnames","filenames"],["filess","files"],["filesstem","filesystem"],["filessytem","filesystem"],["filessytems","filesystems"],["fileststem","filesystem"],["filesysems","filesystems"],["filesysthem","filesystem"],["filesysthems","filesystems"],["filesystmes","filesystems"],["filesystyem","filesystem"],["filesystyems","filesystems"],["filesytem","filesystem"],["filesytems","filesystems"],["filesytsem","filesystem"],["fileter","filter"],["filetest","file test"],["filetests","file tests"],["fileystem","filesystem"],["fileystems","filesystems"],["filiament","filament"],["fillay","fillet"],["fillement","filament"],["fillowing","following"],["fillung","filling"],["filnal","final"],["filname","filename"],["filp","flip"],["filpped","flipped"],["filpping","flipping"],["filps","flips"],["filse","files"],["filsystem","filesystem"],["filsystems","filesystems"],["filterd","filtered"],["filterig","filtering"],["filterin","filtering"],["filterring","filtering"],["filtersing","filtering"],["filterss","filters"],["filtype","filetype"],["filtypes","filetypes"],["fimilies","families"],["fimrware","firmware"],["fimware","firmware"],["finacial","financial"],["finailse","finalise"],["finailze","finalize"],["finallly","finally"],["finanace","finance"],["finanaced","financed"],["finanaces","finances"],["finanacially","financially"],["finanacier","financier"],["financialy","financially"],["finanize","finalize"],["finanlize","finalize"],["fincally","finally"],["finctionalities","functionalities"],["finctionality","functionality"],["finde","find"],["findn","find"],["findout","find out"],["finelly","finally"],["finess","finesse"],["fingeprint","fingerprint"],["finialization","finalization"],["finializing","finalizing"],["finilizes","finalizes"],["finisched","finished"],["finised","finished"],["finishied","finished"],["finishs","finishes"],["finitel","finite"],["finness","finesse"],["finnished","finished"],["finshed","finished"],["finshing","finishing"],["finsih","finish"],["finsihed","finished"],["finsihes","finishes"],["finsihing","finishing"],["finsished","finished"],["finxed","fixed"],["finxing","fixing"],["fiorget","forget"],["firday","Friday"],["firends","friends"],["firey","fiery"],["firmare","firmware"],["firmaware","firmware"],["firmawre","firmware"],["firmeare","firmware"],["firmeware","firmware"],["firmnware","firmware"],["firmwart","firmware"],["firmwear","firmware"],["firmwqre","firmware"],["firmwre","firmware"],["firmwware","firmware"],["firsr","first"],["firsth","first"],["firware","firmware"],["firwmare","firmware"],["fisionable","fissionable"],["fisisist","physicist"],["fisist","physicist"],["fisrt","first"],["fitering","filtering"],["fitler","filter"],["fitlers","filters"],["fivety","fifty"],["fixel","pixel"],["fixels","pixels"],["fixeme","fixme"],["fixwd","fixed"],["fizeek","physique"],["flacor","flavor"],["flacored","flavored"],["flacoring","flavoring"],["flacorings","flavorings"],["flacors","flavors"],["flacour","flavour"],["flacoured","flavoured"],["flacouring","flavouring"],["flacourings","flavourings"],["flacours","flavours"],["flaged","flagged"],["flages","flags"],["flagg","flag"],["flahsed","flashed"],["flahses","flashes"],["flahsing","flashing"],["flakyness","flakiness"],["flamable","flammable"],["flaot","float"],["flaoting","floating"],["flashflame","flashframe"],["flashig","flashing"],["flasing","flashing"],["flate","flat"],["flatened","flattened"],["flattend","flattened"],["flattenning","flattening"],["flawess","flawless"],["fle","file"],["flem","phlegm"],["Flemmish","Flemish"],["flewant","fluent"],["flexability","flexibility"],["flexable","flexible"],["flexibel","flexible"],["flexibele","flexible"],["flexibilty","flexibility"],["flext","flex"],["flie","file"],["fliter","filter"],["flitered","filtered"],["flitering","filtering"],["fliters","filters"],["floading-add","floating-add"],["floatation","flotation"],["floride","fluoride"],["floting","floating"],["flouride","fluoride"],["flourine","fluorine"],["flourishment","flourishing"],["flter","filter"],["fluctuand","fluctuant"],["flud","flood"],["fluorish","flourish"],["fluoroscent","fluorescent"],["fluroescent","fluorescent"],["flushs","flushes"],["flusing","flushing"],["focu","focus"],["focued","focused"],["focument","document"],["focuse","focus"],["focusf","focus"],["focuss","focus"],["focussed","focused"],["focusses","focuses"],["fof","for"],["foget","forget"],["fogot","forgot"],["fogotten","forgotten"],["fointers","pointers"],["foler","folder"],["folers","folders"],["folfer","folder"],["folfers","folders"],["folled","followed"],["foller","follower"],["follers","followers"],["follew","follow"],["follewed","followed"],["follewer","follower"],["follewers","followers"],["follewin","following"],["follewind","following"],["follewing","following"],["follewinwg","following"],["follewiong","following"],["follewiwng","following"],["follewong","following"],["follews","follows"],["follfow","follow"],["follfowed","followed"],["follfower","follower"],["follfowers","followers"],["follfowin","following"],["follfowind","following"],["follfowing","following"],["follfowinwg","following"],["follfowiong","following"],["follfowiwng","following"],["follfowong","following"],["follfows","follows"],["follin","following"],["follind","following"],["follinwg","following"],["folliong","following"],["folliw","follow"],["folliwed","followed"],["folliwer","follower"],["folliwers","followers"],["folliwin","following"],["folliwind","following"],["folliwing","following"],["folliwinwg","following"],["folliwiong","following"],["folliwiwng","following"],["folliwng","following"],["folliwong","following"],["folliws","follows"],["folllow","follow"],["folllowed","followed"],["folllower","follower"],["folllowers","followers"],["folllowin","following"],["folllowind","following"],["folllowing","following"],["folllowinwg","following"],["folllowiong","following"],["folllowiwng","following"],["folllowong","following"],["follod","followed"],["folloeing","following"],["folloing","following"],["folloiwng","following"],["follolwing","following"],["follong","following"],["follos","follows"],["followes","follows"],["followig","following"],["followign","following"],["followin","following"],["followind","following"],["followint","following"],["followng","following"],["followwing","following"],["followwings","followings"],["folls","follows"],["follw","follow"],["follwed","followed"],["follwer","follower"],["follwers","followers"],["follwin","following"],["follwind","following"],["follwing","following"],["follwinwg","following"],["follwiong","following"],["follwiwng","following"],["follwo","follow"],["follwoe","follow"],["follwoed","followed"],["follwoeed","followed"],["follwoeer","follower"],["follwoeers","followers"],["follwoein","following"],["follwoeind","following"],["follwoeing","following"],["follwoeinwg","following"],["follwoeiong","following"],["follwoeiwng","following"],["follwoeong","following"],["follwoer","follower"],["follwoers","followers"],["follwoes","follows"],["follwoin","following"],["follwoind","following"],["follwoing","following"],["follwoinwg","following"],["follwoiong","following"],["follwoiwng","following"],["follwong","following"],["follwoong","following"],["follwos","follows"],["follwow","follow"],["follwowed","followed"],["follwower","follower"],["follwowers","followers"],["follwowin","following"],["follwowind","following"],["follwowing","following"],["follwowinwg","following"],["follwowiong","following"],["follwowiwng","following"],["follwowong","following"],["follwows","follows"],["follws","follows"],["follww","follow"],["follwwed","followed"],["follwwer","follower"],["follwwers","followers"],["follwwin","following"],["follwwind","following"],["follwwing","following"],["follwwinwg","following"],["follwwiong","following"],["follwwiwng","following"],["follwwong","following"],["follwws","follows"],["foloow","follow"],["foloowed","followed"],["foloower","follower"],["foloowers","followers"],["foloowin","following"],["foloowind","following"],["foloowing","following"],["foloowinwg","following"],["foloowiong","following"],["foloowiwng","following"],["foloowong","following"],["foloows","follows"],["folow","follow"],["folowed","followed"],["folower","follower"],["folowers","followers"],["folowin","following"],["folowind","following"],["folowing","following"],["folowinwg","following"],["folowiong","following"],["folowiwng","following"],["folowong","following"],["folows","follows"],["foloww","follow"],["folowwed","followed"],["folowwer","follower"],["folowwers","followers"],["folowwin","following"],["folowwind","following"],["folowwing","following"],["folowwinwg","following"],["folowwiong","following"],["folowwiwng","following"],["folowwong","following"],["folowws","follows"],["folse","false"],["folwo","follow"],["folwoed","followed"],["folwoer","follower"],["folwoers","followers"],["folwoin","following"],["folwoind","following"],["folwoing","following"],["folwoinwg","following"],["folwoiong","following"],["folwoiwng","following"],["folwoong","following"],["folwos","follows"],["folx","folks"],["fom","from"],["fomat","format"],["fomated","formatted"],["fomater","formatter"],["fomates","formats"],["fomating","formatting"],["fomats","formats"],["fomatted","formatted"],["fomatter","formatter"],["fomatting","formatting"],["fomed","formed"],["fomrat","format"],["fomrated","formatted"],["fomrater","formatter"],["fomrating","formatting"],["fomrats","formats"],["fomratted","formatted"],["fomratter","formatter"],["fomratting","formatting"],["fomula","formula"],["fomulas","formula"],["fonction","function"],["fonctional","functional"],["fonctionalities","functionalities"],["fonctionality","functionality"],["fonctioning","functioning"],["fonctionnalies","functionalities"],["fonctionnalities","functionalities"],["fonctionnality","functionality"],["fonctions","functions"],["fonetic","phonetic"],["fontier","frontier"],["fontonfig","fontconfig"],["fontrier","frontier"],["fonud","found"],["foontnotes","footnotes"],["foootball","football"],["foorter","footer"],["footnoes","footnotes"],["footprinst","footprints"],["foound","found"],["foppy","floppy"],["foppys","floppies"],["foramatting","formatting"],["foramt","format"],["forat","format"],["forbad","forbade"],["forbbiden","forbidden"],["forbiden","forbidden"],["forbit","forbid"],["forbiten","forbidden"],["forbitten","forbidden"],["forcably","forcibly"],["forcast","forecast"],["forcasted","forecasted"],["forcaster","forecaster"],["forcasters","forecasters"],["forcasting","forecasting"],["forcasts","forecasts"],["forcot","forgot"],["forece","force"],["foreced","forced"],["foreces","forces"],["foregrond","foreground"],["foregronds","foregrounds"],["foreing","foreign"],["forementionned","aforementioned"],["forermly","formerly"],["forfiet","forfeit"],["forgeround","foreground"],["forgoten","forgotten"],["forground","foreground"],["forhead","forehead"],["foriegn","foreign"],["forld","fold"],["forlder","folder"],["forlders","folders"],["Formalhaut","Fomalhaut"],["formallize","formalize"],["formallized","formalized"],["formate","format"],["formated","formatted"],["formater","formatter"],["formaters","formatters"],["formates","formats"],["formath","format"],["formaths","formats"],["formating","formatting"],["formatteded","formatted"],["formattgin","formatting"],["formattind","formatting"],["formattings","formatting"],["formattring","formatting"],["formattted","formatted"],["formattting","formatting"],["formelly","formerly"],["formely","formerly"],["formend","formed"],["formidible","formidable"],["formmatted","formatted"],["formost","foremost"],["formt","format"],["formua","formula"],["formual","formula"],["formuale","formulae"],["formuals","formulas"],["fornat","format"],["fornated","formatted"],["fornater","formatter"],["fornats","formats"],["fornatted","formatted"],["fornatter","formatter"],["forot","forgot"],["forotten","forgotten"],["forr","for"],["forsaw","foresaw"],["forse","force"],["forseeable","foreseeable"],["fortan","fortran"],["fortat","format"],["forteen","fourteen"],["fortelling","foretelling"],["forthcominng","forthcoming"],["forthcomming","forthcoming"],["fortunaly","fortunately"],["fortunat","fortunate"],["fortunatelly","fortunately"],["fortunatly","fortunately"],["fortunetly","fortunately"],["forula","formula"],["forulas","formulas"],["forumla","formula"],["forumlas","formulas"],["forumula","formula"],["forumulas","formulas"],["forunate","fortunate"],["forunately","fortunately"],["forunner","forerunner"],["forutunate","fortunate"],["forutunately","fortunately"],["forver","forever"],["forwad","forward"],["forwaded","forwarded"],["forwading","forwarding"],["forwads","forwards"],["forwardig","forwarding"],["forwaring","forwarding"],["forwwarded","forwarded"],["foto","photo"],["fotograf","photograph"],["fotografic","photographic"],["fotografical","photographical"],["fotografy","photography"],["fotograph","photograph"],["fotography","photography"],["foucs","focus"],["foudn","found"],["foudning","founding"],["fougth","fought"],["foult","fault"],["foults","faults"],["foundaries","foundries"],["foundary","foundry"],["Foundland","Newfoundland"],["fourties","forties"],["fourty","forty"],["fouth","fourth"],["fouund","found"],["foward","forward"],["fowarded","forwarded"],["fowarding","forwarding"],["fowards","forwards"],["fprmat","format"],["fracional","fractional"],["fragement","fragment"],["fragementation","fragmentation"],["fragements","fragments"],["fragmant","fragment"],["fragmantation","fragmentation"],["fragmants","fragments"],["fragmenet","fragment"],["fragmenetd","fragmented"],["fragmeneted","fragmented"],["fragmeneting","fragmenting"],["fragmenets","fragments"],["fragmnet","fragment"],["frambuffer","framebuffer"],["framebufer","framebuffer"],["framei","frame"],["frament","fragment"],["framented","fragmented"],["framents","fragments"],["frametyp","frametype"],["framewoek","framework"],["framewoeks","frameworks"],["frameworkk","framework"],["framlayout","framelayout"],["framming","framing"],["framwework","framework"],["framwork","framework"],["framworks","frameworks"],["frane","frame"],["frankin","franklin"],["Fransiscan","Franciscan"],["Fransiscans","Franciscans"],["franzise","franchise"],["frecuencies","frequencies"],["frecuency","frequency"],["frecuent","frequent"],["frecuented","frequented"],["frecuently","frequently"],["frecuents","frequents"],["freecallrelpy","freecallreply"],["freedon","freedom"],["freedons","freedoms"],["freedum","freedom"],["freedums","freedoms"],["freee","free"],["freeed","freed"],["freezs","freezes"],["freind","friend"],["freindly","friendly"],["freqencies","frequencies"],["freqency","frequency"],["freqeuncies","frequencies"],["freqeuncy","frequency"],["freqiencies","frequencies"],["freqiency","frequency"],["freqquencies","frequencies"],["freqquency","frequency"],["frequancies","frequencies"],["frequancy","frequency"],["frequant","frequent"],["frequantly","frequently"],["frequences","frequencies"],["frequencey","frequency"],["frequenies","frequencies"],["frequentily","frequently"],["frequncies","frequencies"],["frequncy","frequency"],["freze","freeze"],["frezes","freezes"],["frgament","fragment"],["fricton","friction"],["fridey","Friday"],["frimware","firmware"],["frisday","Friday"],["frist","first"],["frition","friction"],["fritional","frictional"],["fritions","frictions"],["frmat","format"],["frmo","from"],["froce","force"],["frok","from"],["fromal","formal"],["fromat","format"],["fromated","formatted"],["fromates","formats"],["fromating","formatting"],["fromation","formation"],["fromats","formats"],["frome","from"],["fromed","formed"],["fromm","from"],["froms","forms"],["fromt","from"],["fromthe","from the"],["fronend","frontend"],["fronends","frontends"],["froniter","frontier"],["frontent","frontend"],["frontents","frontends"],["frop","drop"],["fropm","from"],["frops","drops"],["frowarded","forwarded"],["frowrad","forward"],["frowrading","forwarding"],["frowrads","forwards"],["frozee","frozen"],["fschk","fsck"],["FTBS","FTBFS"],["ftrunacate","ftruncate"],["fualt","fault"],["fualts","faults"],["fucntion","function"],["fucntional","functional"],["fucntionality","functionality"],["fucntioned","functioned"],["fucntioning","functioning"],["fucntions","functions"],["fuction","function"],["fuctionality","functionality"],["fuctiones","functioned"],["fuctioning","functioning"],["fuctionoid","functionoid"],["fuctions","functions"],["fuetherst","furthest"],["fuethest","furthest"],["fufill","fulfill"],["fufilled","fulfilled"],["fugure","figure"],["fugured","figured"],["fugures","figures"],["fule","file"],["fulfiled","fulfilled"],["fullfiled","fulfilled"],["fullfiling","fulfilling"],["fullfilled","fulfilled"],["fullfilling","fulfilling"],["fullfills","fulfills"],["fullly","fully"],["fulsh","flush"],["fuly","fully"],["fumction","function"],["fumctional","functional"],["fumctionally","functionally"],["fumctioned","functioned"],["fumctions","functions"],["funcation","function"],["funchtion","function"],["funchtional","functional"],["funchtioned","functioned"],["funchtioning","functioning"],["funchtionn","function"],["funchtionnal","functional"],["funchtionned","functioned"],["funchtionning","functioning"],["funchtionns","functions"],["funchtions","functions"],["funcion","function"],["funcions","functions"],["funciotn","function"],["funciotns","functions"],["funciton","function"],["funcitonal","functional"],["funcitonality","functionality"],["funcitonally","functionally"],["funcitoned","functioned"],["funcitoning","functioning"],["funcitons","functions"],["funcstions","functions"],["functiion","function"],["functiional","functional"],["functiionality","functionality"],["functiionally","functionally"],["functiioning","functioning"],["functiions","functions"],["functin","function"],["functinality","functionality"],["functino","function"],["functins","functions"],["functio","function"],["functionability","functionality"],["functionaility","functionality"],["functionailty","functionality"],["functionaily","functionality"],["functionallities","functionalities"],["functionallity","functionality"],["functionaltiy","functionality"],["functionalty","functionality"],["functionionalities","functionalities"],["functionionality","functionality"],["functionnal","functional"],["functionnalities","functionalities"],["functionnality","functionality"],["functionnaly","functionally"],["functionning","functioning"],["functionon","function"],["functionss","functions"],["functios","functions"],["functiosn","functions"],["functiton","function"],["functitonal","functional"],["functitonally","functionally"],["functitoned","functioned"],["functitons","functions"],["functon","function"],["functonal","functional"],["functonality","functionality"],["functoning","functioning"],["functons","functions"],["functtion","function"],["functtional","functional"],["functtionalities","functionalities"],["functtioned","functioned"],["functtioning","functioning"],["functtions","functions"],["funczion","function"],["fundametal","fundamental"],["fundametals","fundamentals"],["fundation","foundation"],["fundemantal","fundamental"],["fundemental","fundamental"],["fundementally","fundamentally"],["fundementals","fundamentals"],["funguses","fungi"],["funktion","function"],["funnnily","funnily"],["funtion","function"],["funtional","functional"],["funtionalities","functionalities"],["funtionality","functionality"],["funtionallity","functionality"],["funtionally","functionally"],["funtionalty","functionality"],["funtioning","functioning"],["funtions","functions"],["funvtion","function"],["funvtional","functional"],["funvtionalities","functionalities"],["funvtionality","functionality"],["funvtioned","functioned"],["funvtioning","functioning"],["funvtions","functions"],["funxtion","function"],["funxtional","functional"],["funxtionalities","functionalities"],["funxtionality","functionality"],["funxtioned","functioned"],["funxtioning","functioning"],["funxtions","functions"],["furether","further"],["furethermore","furthermore"],["furethest","furthest"],["furfill","fulfill"],["furher","further"],["furhermore","furthermore"],["furhest","furthest"],["furhter","further"],["furhtermore","furthermore"],["furhtest","furthest"],["furmalae","formulae"],["furmula","formula"],["furmulae","formulae"],["furnction","function"],["furnctional","functional"],["furnctions","functions"],["furneture","furniture"],["furser","further"],["fursermore","furthermore"],["furst","first"],["fursther","further"],["fursthermore","furthermore"],["fursthest","furthest"],["furter","further"],["furthemore","furthermore"],["furthermor","furthermore"],["furtherst","furthest"],["furthremore","furthermore"],["furthrest","furthest"],["furthur","further"],["furture","future"],["furure","future"],["furuther","further"],["furutre","future"],["furzzer","fuzzer"],["fuschia","fuchsia"],["fushed","flushed"],["fushing","flushing"],["futher","further"],["futherize","further"],["futhermore","furthermore"],["futrue","future"],["futrure","future"],["futture","future"],["fwe","few"],["fwirte","fwrite"],["fxed","fixed"],["fysical","physical"],["fysisist","physicist"],["fysisit","physicist"],["gabage","garbage"],["galatic","galactic"],["Galations","Galatians"],["gallaries","galleries"],["gallary","gallery"],["gallaxies","galaxies"],["gallleries","galleries"],["galllery","gallery"],["galllerys","galleries"],["galvinized","galvanized"],["Gameboy","Game Boy"],["ganbia","gambia"],["ganerate","generate"],["ganes","games"],["ganster","gangster"],["garabge","garbage"],["garantee","guarantee"],["garanteed","guaranteed"],["garanteeed","guaranteed"],["garantees","guarantees"],["garantied","guaranteed"],["garanty","guarantee"],["garbadge","garbage"],["garbage-dollected","garbage-collected"],["garbagge","garbage"],["garbarge","garbage"],["gard","guard"],["gardai","garda\xED"],["garentee","guarantee"],["garnison","garrison"],["garuantee","guarantee"],["garuanteed","guaranteed"],["garuantees","guarantees"],["garuantied","guaranteed"],["gatable","gateable"],["gateing","gating"],["gatherig","gathering"],["gatway","gateway"],["gauage","gauge"],["gauarana","guaran\xE1"],["gauarantee","guarantee"],["gauaranteed","guaranteed"],["gauarentee","guarantee"],["gauarenteed","guaranteed"],["gaurantee","guarantee"],["gauranteed","guaranteed"],["gauranteeing","guaranteeing"],["gaurantees","guarantees"],["gaurentee","guarantee"],["gaurenteed","guaranteed"],["gaurentees","guarantees"],["gaus'","Gauss'"],["gaus's","Gauss'"],["gausian","gaussian"],["geeneric","generic"],["geenrate","generate"],["geenrated","generated"],["geenrates","generates"],["geenration","generation"],["geenrational","generational"],["geeoteen","guillotine"],["geeral","general"],["gemetrical","geometrical"],["gemetry","geometry"],["gemoetry","geometry"],["gemometric","geometric"],["genarate","generate"],["genarated","generated"],["genarating","generating"],["genaration","generation"],["genearal","general"],["genearally","generally"],["genearted","generated"],["geneate","generate"],["geneated","generated"],["geneates","generates"],["geneating","generating"],["geneation","generation"],["geneological","genealogical"],["geneologies","genealogies"],["geneology","genealogy"],["generaates","generates"],["generaly","generally"],["generalyl","generally"],["generalyse","generalise"],["generater","generator"],["generaters","generators"],["generatig","generating"],["generatng","generating"],["generatting","generating"],["genereate","generate"],["genereated","generated"],["genereates","generates"],["genereating","generating"],["genered","generated"],["genereic","generic"],["generell","general"],["generelly","generally"],["genererate","generate"],["genererated","generated"],["genererater","generator"],["genererating","generating"],["genereration","generation"],["genereted","generated"],["generilise","generalise"],["generilised","generalised"],["generilises","generalises"],["generilize","generalize"],["generilized","generalized"],["generilizes","generalizes"],["generiously","generously"],["generla","general"],["generlaizes","generalizes"],["generlas","generals"],["generted","generated"],["generting","generating"],["genertion","generation"],["genertor","generator"],["genertors","generators"],["genialia","genitalia"],["genral","general"],["genralisation","generalisation"],["genralisations","generalisations"],["genralise","generalise"],["genralised","generalised"],["genralises","generalises"],["genralization","generalization"],["genralizations","generalizations"],["genralize","generalize"],["genralized","generalized"],["genralizes","generalizes"],["genrally","generally"],["genrals","generals"],["genrate","generate"],["genrated","generated"],["genrates","generates"],["genratet","generated"],["genrating","generating"],["genration","generation"],["genrations","generations"],["genrator","generator"],["genrators","generators"],["genreate","generate"],["genreated","generated"],["genreates","generates"],["genreating","generating"],["genreic","generic"],["genric","generic"],["genrics","generics"],["gental","gentle"],["genuin","genuine"],["geocentic","geocentric"],["geoemtries","geometries"],["geoemtry","geometry"],["geogcountry","geocountry"],["geographich","geographic"],["geographicial","geographical"],["geoio","geoip"],["geomertic","geometric"],["geomerties","geometries"],["geomerty","geometry"],["geomery","geometry"],["geometites","geometries"],["geometrician","geometer"],["geometricians","geometers"],["geometrie","geometry"],["geometrys","geometries"],["geomety","geometry"],["geometyr","geometry"],["geomitrically","geometrically"],["geomoetric","geometric"],["geomoetrically","geometrically"],["geomoetry","geometry"],["geomtery","geometry"],["geomtries","geometries"],["geomtry","geometry"],["geomtrys","geometries"],["georeferncing","georeferencing"],["geraff","giraffe"],["geraphics","graphics"],["gerat","great"],["gereating","generating"],["gerenate","generate"],["gerenated","generated"],["gerenates","generates"],["gerenating","generating"],["gerenation","generation"],["gerenations","generations"],["gerenic","generic"],["gerenics","generics"],["gererate","generate"],["gererated","generated"],["gerilla","guerrilla"],["gerneral","general"],["gernerally","generally"],["gerneraly","generally"],["gernerate","generate"],["gernerated","generated"],["gernerates","generates"],["gernerating","generating"],["gerneration","generation"],["gernerator","generator"],["gernerators","generators"],["gerneric","generic"],["gernerics","generics"],["gess","guess"],["get's","gets"],["get;s","gets"],["getfastproperyvalue","getfastpropertyvalue"],["getimezone","gettimezone"],["geting","getting"],["getlael","getlabel"],["getoe","ghetto"],["getoject","getobject"],["gettetx","gettext"],["gettter","getter"],["gettters","getters"],["getttext","gettext"],["getttime","gettime"],["getttimeofday","gettimeofday"],["gettting","getting"],["ggogled","Googled"],["Ghandi","Gandhi"],["ghostcript","ghostscript"],["ghostscritp","ghostscript"],["ghraphic","graphic"],["gien","given"],["gigibit","gigabit"],["gilotine","guillotine"],["gilty","guilty"],["ginee","guinea"],["gingam","gingham"],["gioen","given"],["gir","git"],["giser","geyser"],["gisers","geysers"],["git-buildpackge","git-buildpackage"],["git-buildpackges","git-buildpackages"],["gitar","guitar"],["gitars","guitars"],["gitatributes","gitattributes"],["giveing","giving"],["givveing","giving"],["givven","given"],["givving","giving"],["glamourous","glamorous"],["glight","flight"],["gloab","globe"],["gloabal","global"],["gloabl","global"],["gloassaries","glossaries"],["gloassary","glossary"],["globablly","globally"],["globaly","globally"],["globbal","global"],["globel","global"],["glorfied","glorified"],["glpyh","glyph"],["glpyhs","glyphs"],["glyh","glyph"],["glyhs","glyphs"],["glyped","glyphed"],["glyphes","glyphs"],["glyping","glyphing"],["glyserin","glycerin"],["gnawwed","gnawed"],["gneral","general"],["gnerally","generally"],["gnerals","generals"],["gnerate","generate"],["gnerated","generated"],["gnerates","generates"],["gnerating","generating"],["gneration","generation"],["gnerations","generations"],["gneric","generic"],["gnorung","ignoring"],["gobal","global"],["gocde","gcode"],["godess","goddess"],["godesses","goddesses"],["Godounov","Godunov"],["goemetries","geometries"],["goess","goes"],["gogether","together"],["goign","going"],["goin","going"],["goind","going"],["golbal","global"],["golbally","globally"],["golbaly","globally"],["gonig","going"],["gool","ghoul"],["gord","gourd"],["gormay","gourmet"],["gorry","gory"],["gorup","group"],["goruped","grouped"],["goruping","grouping"],["gorups","groups"],["gost","ghost"],["Gothenberg","Gothenburg"],["Gottleib","Gottlieb"],["goup","group"],["gouped","grouped"],["goups","groups"],["gouvener","governor"],["govement","government"],["govenment","government"],["govenor","governor"],["govenrment","government"],["goverance","governance"],["goverment","government"],["govermental","governmental"],["govermnment","government"],["governer","governor"],["governmnet","government"],["govorment","government"],["govormental","governmental"],["govornment","government"],["grabage","garbage"],["grabed","grabbed"],["grabing","grabbing"],["gracefull","graceful"],["gracefuly","gracefully"],["gradiants","gradients"],["gradualy","gradually"],["graet","great"],["grafics","graphics"],["grafitti","graffiti"],["grahic","graphic"],["grahical","graphical"],["grahics","graphics"],["grahpic","graphic"],["grahpical","graphical"],["grahpics","graphics"],["gramar","grammar"],["gramatically","grammatically"],["grammartical","grammatical"],["grammaticaly","grammatically"],["grammer","grammar"],["grammers","grammars"],["granchildren","grandchildren"],["granilarity","granularity"],["granuality","granularity"],["granualtiry","granularity"],["granulatiry","granularity"],["grapgics","graphics"],["graphcis","graphics"],["graphis","graphics"],["grapic","graphic"],["grapical","graphical"],["grapics","graphics"],["grat","great"],["gratefull","grateful"],["gratuitious","gratuitous"],["grbber","grabber"],["greatful","grateful"],["greatfully","gratefully"],["greather","greater"],["greif","grief"],["grephic","graphic"],["grestest","greatest"],["greysacles","greyscales"],["gridles","griddles"],["grigorian","Gregorian"],["grobal","global"],["grobally","globally"],["grometry","geometry"],["grooup","group"],["groouped","grouped"],["groouping","grouping"],["grooups","groups"],["gropu","group"],["groubpy","groupby"],["groupd","grouped"],["groupping","grouping"],["groupt","grouped"],["grranted","granted"],["gruop","group"],["gruopd","grouped"],["gruops","groups"],["grup","group"],["gruped","grouped"],["gruping","grouping"],["grups","groups"],["grwo","grow"],["guage","gauge"],["guarante","guarantee"],["guaranted","guaranteed"],["guaranteey","guaranty"],["guaranteing","guaranteeing"],["guarantes","guarantees"],["guarantie","guarantee"],["guarbage","garbage"],["guareded","guarded"],["guareente","guarantee"],["guareented","guaranteed"],["guareentee","guarantee"],["guareenteed","guaranteed"],["guareenteeing","guaranteeing"],["guareentees","guarantees"],["guareenteing","guaranteeing"],["guareentes","guarantees"],["guareenty","guaranty"],["guarente","guarantee"],["guarented","guaranteed"],["guarentee","guarantee"],["guarenteed","guaranteed"],["guarenteede","guarantee"],["guarenteeded","guaranteed"],["guarenteedeing","guaranteeing"],["guarenteedes","guarantees"],["guarenteedy","guaranty"],["guarenteeing","guaranteeing"],["guarenteer","guarantee"],["guarenteerd","guaranteed"],["guarenteering","guaranteeing"],["guarenteers","guarantees"],["guarentees","guarantees"],["guarenteing","guaranteeing"],["guarentes","guarantees"],["guarentie","guarantee"],["guarentied","guaranteed"],["guarentieing","guaranteeing"],["guarenties","guarantees"],["guarenty","guaranty"],["guarentyd","guaranteed"],["guarentying","guarantee"],["guarentyinging","guaranteeing"],["guarentys","guarantees"],["guarging","guarding"],["guarnante","guarantee"],["guarnanted","guaranteed"],["guarnantee","guarantee"],["guarnanteed","guaranteed"],["guarnanteeing","guaranteeing"],["guarnantees","guarantees"],["guarnanteing","guaranteeing"],["guarnantes","guarantees"],["guarnanty","guaranty"],["guarnate","guarantee"],["guarnated","guaranteed"],["guarnatee","guarantee"],["guarnateed","guaranteed"],["guarnateee","guarantee"],["guarnateeed","guaranteed"],["guarnateeeing","guaranteeing"],["guarnateees","guarantees"],["guarnateeing","guaranteeing"],["guarnatees","guarantees"],["guarnateing","guaranteeing"],["guarnates","guarantees"],["guarnatey","guaranty"],["guarnaty","guaranty"],["guarnete","guarantee"],["guarneted","guaranteed"],["guarnetee","guarantee"],["guarneteed","guaranteed"],["guarneteeing","guaranteeing"],["guarnetees","guarantees"],["guarneteing","guaranteeing"],["guarnetes","guarantees"],["guarnety","guaranty"],["guarnte","guarantee"],["guarnted","guaranteed"],["guarntee","guarantee"],["guarnteed","guaranteed"],["guarnteeing","guaranteeing"],["guarntees","guarantees"],["guarnteing","guaranteeing"],["guarntes","guarantees"],["guarnty","guaranty"],["guarrante","guarantee"],["guarranted","guaranteed"],["guarrantee","guarantee"],["guarranteed","guaranteed"],["guarranteeing","guaranteeing"],["guarrantees","guarantees"],["guarranteing","guaranteeing"],["guarrantes","guarantees"],["guarrantie","guarantee"],["guarrantied","guaranteed"],["guarrantieing","guaranteeing"],["guarranties","guarantees"],["guarranty","guaranty"],["guarrantyd","guaranteed"],["guarrantying","guaranteeing"],["guarrantys","guarantees"],["guarrente","guarantee"],["guarrented","guaranteed"],["guarrentee","guarantee"],["guarrenteed","guaranteed"],["guarrenteeing","guaranteeing"],["guarrentees","guarantees"],["guarrenteing","guaranteeing"],["guarrentes","guarantees"],["guarrenty","guaranty"],["guaruante","guarantee"],["guaruanted","guaranteed"],["guaruantee","guarantee"],["guaruanteed","guaranteed"],["guaruanteeing","guaranteeing"],["guaruantees","guarantees"],["guaruanteing","guaranteeing"],["guaruantes","guarantees"],["guaruanty","guaranty"],["guarunte","guarantee"],["guarunted","guaranteed"],["guaruntee","guarantee"],["guarunteed","guaranteed"],["guarunteeing","guaranteeing"],["guaruntees","guarantees"],["guarunteing","guaranteeing"],["guaruntes","guarantees"],["guarunty","guaranty"],["guas'","Gauss'"],["guas's","Gauss'"],["guas","Gauss"],["guass'","Gauss'"],["guass","Gauss"],["guassian","Gaussian"],["Guatamala","Guatemala"],["Guatamalan","Guatemalan"],["gud","good"],["guerrila","guerrilla"],["guerrilas","guerrillas"],["gueswork","guesswork"],["guideded","guided"],["guidence","guidance"],["guidline","guideline"],["guidlines","guidelines"],["Guilia","Giulia"],["Guilio","Giulio"],["Guiness","Guinness"],["Guiseppe","Giuseppe"],["gunanine","guanine"],["gurantee","guarantee"],["guranteed","guaranteed"],["guranteeing","guaranteeing"],["gurantees","guarantees"],["gurrantee","guarantee"],["guttaral","guttural"],["gutteral","guttural"],["gylph","glyph"],["gziniflate","gzinflate"],["gziped","gzipped"],["haa","has"],["haave","have"],["habaeus","habeas"],["habbit","habit"],["habeus","habeas"],["hability","ability"],["Habsbourg","Habsburg"],["hace","have"],["hachish","hackish"],["hadling","handling"],["hadnler","handler"],["haeder","header"],["haemorrage","haemorrhage"],["halarious","hilarious"],["hald","held"],["halfs","halves"],["halp","help"],["halpoints","halfpoints"],["hammmer","hammer"],["hampster","hamster"],["handel","handle"],["handeler","handler"],["handeles","handles"],["handeling","handling"],["handels","handles"],["hander","handler"],["handfull","handful"],["handhake","handshake"],["handker","handler"],["handleer","handler"],["handleing","handling"],["handlig","handling"],["handlling","handling"],["handsake","handshake"],["handshacke","handshake"],["handshackes","handshakes"],["handshacking","handshaking"],["handshage","handshake"],["handshages","handshakes"],["handshaging","handshaking"],["handshak","handshake"],["handshakng","handshaking"],["handshakre","handshake"],["handshakres","handshakes"],["handshakring","handshaking"],["handshaks","handshakes"],["handshale","handshake"],["handshales","handshakes"],["handshaling","handshaking"],["handshare","handshake"],["handshares","handshakes"],["handsharing","handshaking"],["handshk","handshake"],["handshke","handshake"],["handshkes","handshakes"],["handshking","handshaking"],["handshkng","handshaking"],["handshks","handshakes"],["handskake","handshake"],["handwirting","handwriting"],["hanel","handle"],["hangig","hanging"],["hanlde","handle"],["hanlded","handled"],["hanlder","handler"],["hanlders","handlers"],["hanldes","handles"],["hanlding","handling"],["hanldle","handle"],["hanle","handle"],["hanled","handled"],["hanles","handles"],["hanling","handling"],["hanshake","handshake"],["hanshakes","handshakes"],["hansome","handsome"],["hapen","happen"],["hapend","happened"],["hapends","happens"],["hapened","happened"],["hapening","happening"],["hapenn","happen"],["hapenned","happened"],["hapenning","happening"],["hapenns","happens"],["hapens","happens"],["happaned","happened"],["happended","happened"],["happenned","happened"],["happenning","happening"],["happennings","happenings"],["happenns","happens"],["happilly","happily"],["happne","happen"],["happpen","happen"],["happpened","happened"],["happpening","happening"],["happpenings","happenings"],["happpens","happens"],["harased","harassed"],["harases","harasses"],["harasment","harassment"],["harasments","harassments"],["harassement","harassment"],["harcoded","hardcoded"],["harcoding","hardcoding"],["hard-wirted","hard-wired"],["hardare","hardware"],["hardocde","hardcode"],["hardward","hardware"],["hardwdare","hardware"],["hardwirted","hardwired"],["harge","charge"],["harras","harass"],["harrased","harassed"],["harrases","harasses"],["harrasing","harassing"],["harrasment","harassment"],["harrasments","harassments"],["harrass","harass"],["harrassed","harassed"],["harrasses","harassed"],["harrassing","harassing"],["harrassment","harassment"],["harrassments","harassments"],["harth","hearth"],["harware","hardware"],["harwdare","hardware"],["has'nt","hasn't"],["hases","hashes"],["hashi","hash"],["hashreference","hash reference"],["hashs","hashes"],["hashses","hashes"],["hask","hash"],["hasn;t","hasn't"],["hasnt'","hasn't"],["hasnt","hasn't"],["hass","hash"],["hastable","hashtable"],["hastables","hashtables"],["Hatian","Haitian"],["hauty","haughty"],["have'nt","haven't"],["haveing","having"],["haven;t","haven't"],["havent'","haven't"],["havent't","haven't"],["havent","haven't"],["havew","have"],["haviest","heaviest"],["havn't","haven't"],["havnt","haven't"],["hax","hex"],["haynus","heinous"],["hazzle","hassle"],["hda","had"],["headder","header"],["headders","headers"],["headerr","header"],["headerrs","headers"],["headle","handle"],["headong","heading"],["headquarer","headquarter"],["headquater","headquarter"],["headquatered","headquartered"],["headquaters","headquarters"],["heaer","header"],["healthercare","healthcare"],["heathy","healthy"],["hefer","heifer"],["Heidelburg","Heidelberg"],["heigest","highest"],["heigher","higher"],["heighest","highest"],["heighit","height"],["heighteen","eighteen"],["heigt","height"],["heigth","height"],["heirachies","hierarchies"],["heirachy","hierarchy"],["heirarchic","hierarchic"],["heirarchical","hierarchical"],["heirarchically","hierarchically"],["heirarchies","hierarchies"],["heirarchy","hierarchy"],["heiroglyphics","hieroglyphics"],["helerps","helpers"],["hellow","hello"],["helment","helmet"],["heloer","helper"],["heloers","helpers"],["helpe","helper"],["helpfull","helpful"],["helpfuly","helpfully"],["helpped","helped"],["hemipshere","hemisphere"],["hemipsheres","hemispheres"],["hemishpere","hemisphere"],["hemishperes","hemispheres"],["hemmorhage","hemorrhage"],["hemorage","haemorrhage"],["henc","hence"],["henderence","hindrance"],["hendler","handler"],["hense","hence"],["hepler","helper"],["herarchy","hierarchy"],["herat","heart"],["heree","here"],["heridity","heredity"],["heroe","hero"],["heros","heroes"],["herselv","herself"],["hertiage","heritage"],["hertically","hectically"],["hertzs","hertz"],["hese","these"],["hesiate","hesitate"],["hesistant","hesitant"],["hesistate","hesitate"],["hesistated","hesitated"],["hesistates","hesitates"],["hesistating","hesitating"],["hesistation","hesitation"],["hesistations","hesitations"],["hestiate","hesitate"],["hetrogeneous","heterogeneous"],["heuristc","heuristic"],["heuristcs","heuristics"],["heursitics","heuristics"],["hevy","heavy"],["hexademical","hexadecimal"],["hexdecimal","hexadecimal"],["hexgaon","hexagon"],["hexgaonal","hexagonal"],["hexgaons","hexagons"],["hexidecimal","hexadecimal"],["hge","he"],["hiarchical","hierarchical"],["hiarchy","hierarchy"],["hiddden","hidden"],["hidded","hidden"],["hideen","hidden"],["hiden","hidden"],["hiearchies","hierarchies"],["hiearchy","hierarchy"],["hieght","height"],["hiena","hyena"],["hierachical","hierarchical"],["hierachies","hierarchies"],["hierachries","hierarchies"],["hierachry","hierarchy"],["hierachy","hierarchy"],["hierarachical","hierarchical"],["hierarachy","hierarchy"],["hierarchichal","hierarchical"],["hierarchichally","hierarchically"],["hierarchie","hierarchy"],["hierarcical","hierarchical"],["hierarcy","hierarchy"],["hierarhcical","hierarchical"],["hierarhcically","hierarchically"],["hierarhcies","hierarchies"],["hierarhcy","hierarchy"],["hierchy","hierarchy"],["hieroglph","hieroglyph"],["hieroglphs","hieroglyphs"],["hietus","hiatus"],["higeine","hygiene"],["higer","higher"],["higest","highest"],["high-affort","high-effort"],["highight","highlight"],["highighted","highlighted"],["highighter","highlighter"],["highighters","highlighters"],["highights","highlights"],["highjack","hijack"],["highligh","highlight"],["highlighed","highlighted"],["highligher","highlighter"],["highlighers","highlighters"],["highlighing","highlighting"],["highlighs","highlights"],["highlightin","highlighting"],["highlightning","highlighting"],["highligjt","highlight"],["highligjted","highlighted"],["highligjtes","highlights"],["highligjting","highlighting"],["highligjts","highlights"],["highligt","highlight"],["highligted","highlighted"],["highligth","highlight"],["highligting","highlighting"],["highligts","highlights"],["highter","higher"],["hightest","highest"],["hightlight","highlight"],["hightlighted","highlighted"],["hightlighting","highlighting"],["hightlights","highlights"],["hights","heights"],["higlight","highlight"],["higlighted","highlighted"],["higlighting","highlighting"],["higlights","highlights"],["higly","highly"],["higth","height"],["higway","highway"],["hijkack","hijack"],["hijkacked","hijacked"],["hijkacking","hijacking"],["hijkacks","hijacks"],["hilight","highlight"],["hilighted","highlighted"],["hilighting","highlighting"],["hilights","highlights"],["hillarious","hilarious"],["himselv","himself"],["hinderance","hindrance"],["hinderence","hindrance"],["hindrence","hindrance"],["hipopotamus","hippopotamus"],["hipotetical","hypothetical"],["hirachy","hierarchy"],["hirarchies","hierarchies"],["hirarchy","hierarchy"],["hirarcies","hierarchies"],["hirearchy","hierarchy"],["hirearcy","hierarchy"],["hismelf","himself"],["hisory","history"],["histgram","histogram"],["histocompatability","histocompatibility"],["historgram","histogram"],["historgrams","histograms"],["historicians","historians"],["historyan","historian"],["historyans","historians"],["historycal","historical"],["historycally","historically"],["historycaly","historically"],["histroian","historian"],["histroians","historians"],["histroic","historic"],["histroical","historical"],["histroically","historically"],["histroicaly","historically"],["histroies","histories"],["histroy","history"],["histry","history"],["hitogram","histogram"],["hitories","histories"],["hitory","history"],["hitsingles","hit singles"],["hiygeine","hygiene"],["hmdi","hdmi"],["hnalder","handler"],["hoeks","hoax"],["hoever","however"],["hokay","okay"],["holf","hold"],["holliday","holiday"],["hollowcost","holocaust"],["homapage","homepage"],["homegeneous","homogeneous"],["homestate","home state"],["homogeneize","homogenize"],["homogeneized","homogenized"],["homogenious","homogeneous"],["homogeniously","homogeneously"],["homogenity","homogeneity"],["homogenius","homogeneous"],["homogeniusly","homogeneously"],["homogenoues","homogeneous"],["homogenous","homogeneous"],["homogenously","homogeneously"],["homogenuous","homogeneous"],["honory","honorary"],["hoook","hook"],["hoooks","hooks"],["hootsba","chutzpah"],["hopefulle","hopefully"],["hopefullly","hopefully"],["hopefullt","hopefully"],["hopefullu","hopefully"],["hopefuly","hopefully"],["hopeing","hoping"],["hopful","hopeful"],["hopfully","hopefully"],["hopmepage","homepage"],["hopmepages","homepages"],["hoppefully","hopefully"],["hopyfully","hopefully"],["horicontal","horizontal"],["horicontally","horizontally"],["horinzontal","horizontal"],["horizntal","horizontal"],["horizonal","horizontal"],["horizonally","horizontally"],["horizontale","horizontal"],["horiztonal","horizontal"],["horiztonally","horizontally"],["horphan","orphan"],["horrable","horrible"],["horrifing","horrifying"],["horyzontally","horizontally"],["horziontal","horizontal"],["horziontally","horizontally"],["horzontal","horizontal"],["horzontally","horizontally"],["hosited","hoisted"],["hospitible","hospitable"],["hostanme","hostname"],["hostorical","historical"],["hostories","histories"],["hostory","history"],["hostspot","hotspot"],["hostspots","hotspots"],["hotizontal","horizontal"],["hotname","hostname"],["hounour","honour"],["houres","hours"],["housand","thousand"],["houskeeping","housekeeping"],["hovever","however"],["hovewer","however"],["howeever","however"],["howerver","however"],["howeverm","however"],["howewer","however"],["howver","however"],["hradware","hardware"],["hradwares","hardwares"],["hrlp","help"],["hrlped","helped"],["hrlper","helper"],["hrlpers","helpers"],["hrlping","helping"],["hrlps","helps"],["hrough","through"],["hsa","has"],["hsell","shell"],["hsi","his"],["hsitorians","historians"],["hsotname","hostname"],["hsould'nt","shouldn't"],["hsould","should"],["hsouldn't","shouldn't"],["hstory","history"],["htacccess","htaccess"],["hte","the"],["htey","they"],["htikn","think"],["hting","thing"],["htink","think"],["htis","this"],["htmp","html"],["htting","hitting"],["hueristic","heuristic"],["humber","number"],["huminoid","humanoid"],["humoural","humoral"],["humurous","humorous"],["hunderd","hundred"],["hundreths","hundredths"],["hundrets","hundreds"],["hunrgy","hungry"],["huricane","hurricane"],["huristic","heuristic"],["husban","husband"],["hvae","have"],["hvaing","having"],["hve","have"],["hwihc","which"],["hwile","while"],["hwole","whole"],["hybernate","hibernate"],["hydogen","hydrogen"],["hydrolic","hydraulic"],["hydrolics","hydraulics"],["hydropile","hydrophile"],["hydropilic","hydrophilic"],["hydropobe","hydrophobe"],["hydropobic","hydrophobic"],["hyerarchy","hierarchy"],["hyerlink","hyperlink"],["hygeine","hygiene"],["hygene","hygiene"],["hygenic","hygienic"],["hygine","hygiene"],["hyjack","hijack"],["hyjacking","hijacking"],["hypen","hyphen"],["hypenate","hyphenate"],["hypenated","hyphenated"],["hypenates","hyphenates"],["hypenating","hyphenating"],["hypenation","hyphenation"],["hypens","hyphens"],["hyperboly","hyperbole"],["Hyperldger","Hyperledger"],["hypervior","hypervisor"],["hypocracy","hypocrisy"],["hypocrasy","hypocrisy"],["hypocricy","hypocrisy"],["hypocrit","hypocrite"],["hypocrits","hypocrites"],["hyposeses","hypotheses"],["hyposesis","hypothesis"],["hypoteses","hypotheses"],["hypotesis","hypothesis"],["hypotethically","hypothetically"],["hypothenuse","hypotenuse"],["hypothenuses","hypotenuses"],["hypter","hyper"],["hyptothetical","hypothetical"],["hyptothetically","hypothetically"],["hypvervisor","hypervisor"],["hypvervisors","hypervisors"],["hypvisor","hypervisor"],["hypvisors","hypervisors"],["I'sd","I'd"],["i;ll","I'll"],["iamge","image"],["ibject","object"],["ibjects","objects"],["ibrary","library"],["icesickle","icicle"],["iclude","include"],["icluded","included"],["icludes","includes"],["icluding","including"],["iconclastic","iconoclastic"],["iconifie","iconify"],["icrease","increase"],["icreased","increased"],["icreases","increases"],["icreasing","increasing"],["icrement","increment"],["icrementally","incrementally"],["icremented","incremented"],["icrementing","incrementing"],["icrements","increments"],["idae","idea"],["idaeidae","idea"],["idaes","ideas"],["idealogies","ideologies"],["idealogy","ideology"],["idefinite","indefinite"],["idel","idle"],["idelogy","ideology"],["idemopotent","idempotent"],["idendified","identified"],["idendifier","identifier"],["idendifiers","identifiers"],["idenfied","identified"],["idenfifier","identifier"],["idenfifiers","identifiers"],["idenfitifer","identifier"],["idenfitifers","identifiers"],["idenfitify","identify"],["idenitfy","identify"],["idenitify","identify"],["identation","indentation"],["identcial","identical"],["identfied","identified"],["identfier","identifier"],["identfiers","identifiers"],["identiable","identifiable"],["idential","identical"],["identic","identical"],["identicial","identical"],["identidier","identifier"],["identies","identities"],["identifaction","identification"],["identifcation","identification"],["identifeir","identifier"],["identifeirs","identifiers"],["identifer","identifier"],["identifers","identifiers"],["identificable","identifiable"],["identifictaion","identification"],["identifieer","identifier"],["identifiler","identifier"],["identifilers","identifiers"],["identifing","identifying"],["identifiy","identify"],["identifyable","identifiable"],["identifyed","identified"],["identiviert","identifiers"],["identtation","indentation"],["identties","identities"],["identtifier","identifier"],["identty","identity"],["ideosyncracies","ideosyncrasies"],["ideosyncratic","idiosyncratic"],["idetifier","identifier"],["idetifiers","identifiers"],["idetifies","identifies"],["idicate","indicate"],["idicated","indicated"],["idicates","indicates"],["idicating","indicating"],["idices","indices"],["idiosyncracies","idiosyncrasies"],["idiosyncracy","idiosyncrasy"],["idividual","individual"],["idividually","individually"],["idividuals","individuals"],["idons","icons"],["iechart","piechart"],["ifself","itself"],["ifset","if set"],["ignest","ingest"],["ignested","ingested"],["ignesting","ingesting"],["ignests","ingests"],["ignnore","ignore"],["ignoded","ignored"],["ignonre","ignore"],["ignora","ignore"],["ignord","ignored"],["ignoreing","ignoring"],["ignorence","ignorance"],["ignorgable","ignorable"],["ignorgd","ignored"],["ignorge","ignore"],["ignorged","ignored"],["ignorgg","ignoring"],["ignorgig","ignoring"],["ignorging","ignoring"],["ignorgs","ignores"],["ignormable","ignorable"],["ignormd","ignored"],["ignorme","ignore"],["ignormed","ignored"],["ignormg","ignoring"],["ignormig","ignoring"],["ignorming","ignoring"],["ignorms","ignores"],["ignornable","ignorable"],["ignornd","ignored"],["ignorne","ignore"],["ignorned","ignored"],["ignorng","ignoring"],["ignornig","ignoring"],["ignorning","ignoring"],["ignorns","ignores"],["ignorrable","ignorable"],["ignorrd","ignored"],["ignorre","ignore"],["ignorred","ignored"],["ignorrg","ignoring"],["ignorrig","ignoring"],["ignorring","ignoring"],["ignorrs","ignores"],["ignors","ignores"],["ignortable","ignorable"],["ignortd","ignored"],["ignorte","ignore"],["ignorted","ignored"],["ignortg","ignoring"],["ignortig","ignoring"],["ignorting","ignoring"],["ignorts","ignores"],["ignory","ignore"],["ignroed","ignored"],["ignroing","ignoring"],["igoned","ignored"],["igonorando","ignorando"],["igonore","ignore"],["igore","ignore"],["igored","ignored"],["igores","ignores"],["igoring","ignoring"],["igrnore","ignore"],["Ihaca","Ithaca"],["ihs","his"],["iif","if"],["iimmune","immune"],["iinclude","include"],["iinterval","interval"],["iiterator","iterator"],["iland","island"],["ileagle","illegal"],["ilegal","illegal"],["ilegle","illegal"],["iligal","illegal"],["illegimacy","illegitimacy"],["illegitmate","illegitimate"],["illess","illness"],["illgal","illegal"],["illiegal","illegal"],["illigal","illegal"],["illigitament","illegitimate"],["illistrate","illustrate"],["illustrasion","illustration"],["illution","illusion"],["ilness","illness"],["ilogical","illogical"],["iluminate","illuminate"],["iluminated","illuminated"],["iluminates","illuminates"],["ilumination","illumination"],["iluminations","illuminations"],["ilustrate","illustrate"],["ilustrated","illustrated"],["ilustration","illustration"],["imagenary","imaginary"],["imaghe","image"],["imagin","imagine"],["imapct","impact"],["imapcted","impacted"],["imapcting","impacting"],["imapcts","impacts"],["imapge","image"],["imbaress","embarrass"],["imbed","embed"],["imbedded","embedded"],["imbedding","embedding"],["imblance","imbalance"],["imbrase","embrace"],["imcoming","incoming"],["imcomming","incoming"],["imcompatibility","incompatibility"],["imcompatible","incompatible"],["imcomplete","incomplete"],["imedatly","immediately"],["imedialy","immediately"],["imediate","immediate"],["imediately","immediately"],["imediatly","immediately"],["imense","immense"],["imfamus","infamous"],["imgage","image"],["imidiately","immediately"],["imilar","similar"],["imlement","implement"],["imlementation","implementation"],["imlemented","implemented"],["imlementing","implementing"],["imlements","implements"],["imlicit","implicit"],["imlicitly","implicitly"],["imliment","implement"],["imlimentation","implementation"],["imlimented","implemented"],["imlimenting","implementing"],["imliments","implements"],["immadiate","immediate"],["immadiately","immediately"],["immadiatly","immediately"],["immeadiate","immediate"],["immeadiately","immediately"],["immedaite","immediate"],["immedate","immediate"],["immedately","immediately"],["immedeate","immediate"],["immedeately","immediately"],["immedially","immediately"],["immedialty","immediately"],["immediantely","immediately"],["immediatelly","immediately"],["immediatelty","immediately"],["immediatley","immediately"],["immediatlly","immediately"],["immediatly","immediately"],["immediatlye","immediately"],["immeditaly","immediately"],["immeditately","immediately"],["immeidate","immediate"],["immeidately","immediately"],["immenantly","eminently"],["immidately","immediately"],["immidatly","immediately"],["immidiate","immediate"],["immidiatelly","immediately"],["immidiately","immediately"],["immidiatly","immediately"],["immitate","imitate"],["immitated","imitated"],["immitating","imitating"],["immitator","imitator"],["immmediate","immediate"],["immmediately","immediately"],["immsersive","immersive"],["immsersively","immersively"],["immuniy","immunity"],["immunosupressant","immunosuppressant"],["immutible","immutable"],["imolicit","implicit"],["imolicitly","implicitly"],["imort","import"],["imortable","importable"],["imorted","imported"],["imortes","imports"],["imorting","importing"],["imorts","imports"],["imovable","immovable"],["impcat","impact"],["impcated","impacted"],["impcating","impacting"],["impcats","impacts"],["impecabbly","impeccably"],["impedence","impedance"],["impeed","impede"],["impelement","implement"],["impelementation","implementation"],["impelemented","implemented"],["impelementing","implementing"],["impelements","implements"],["impelentation","implementation"],["impelment","implement"],["impelmentation","implementation"],["impelmentations","implementations"],["impement","implement"],["impementaion","implementation"],["impementaions","implementations"],["impementated","implemented"],["impementation","implementation"],["impementations","implementations"],["impemented","implemented"],["impementing","implementing"],["impementling","implementing"],["impementor","implementer"],["impements","implements"],["imperiaal","imperial"],["imperically","empirically"],["imperitive","imperative"],["impermable","impermeable"],["impiled","implied"],["implace","inplace"],["implament","implement"],["implamentation","implementation"],["implamented","implemented"],["implamenting","implementing"],["implaments","implements"],["implcit","implicit"],["implcitly","implicitly"],["implct","implicit"],["implemantation","implementation"],["implemataion","implementation"],["implemataions","implementations"],["implemememnt","implement"],["implemememntation","implementation"],["implemement","implement"],["implemementation","implementation"],["implemementations","implementations"],["implememented","implemented"],["implemementing","implementing"],["implemements","implements"],["implememetation","implementation"],["implememntation","implementation"],["implememt","implement"],["implememtation","implementation"],["implememtations","implementations"],["implememted","implemented"],["implememting","implementing"],["implememts","implements"],["implemen","implement"],["implemenatation","implementation"],["implemenation","implementation"],["implemenationa","implementation"],["implemenationd","implementation"],["implemenations","implementations"],["implemencted","implemented"],["implemend","implement"],["implemends","implements"],["implemened","implemented"],["implemenet","implement"],["implemenetaion","implementation"],["implemenetaions","implementations"],["implemenetation","implementation"],["implemenetations","implementations"],["implemenetd","implemented"],["implemeneted","implemented"],["implemeneter","implementer"],["implemeneting","implementing"],["implemenetions","implementations"],["implemenets","implements"],["implemenrt","implement"],["implementaed","implemented"],["implementaion","implementation"],["implementaions","implementations"],["implementaiton","implementation"],["implementaitons","implementations"],["implementantions","implementations"],["implementastion","implementation"],["implementataion","implementation"],["implementatation","implementation"],["implementated","implemented"],["implementates","implements"],["implementating","implementing"],["implementatins","implementations"],["implementation-spacific","implementation-specific"],["implementatition","implementation"],["implementatoin","implementation"],["implementatoins","implementations"],["implementatoion","implementation"],["implementaton","implementation"],["implementator","implementer"],["implementators","implementers"],["implementattion","implementation"],["implementd","implemented"],["implementes","implements"],["implementet","implemented"],["implemention","implementation"],["implementtaion","implementation"],["implemet","implement"],["implemetation","implementation"],["implemetations","implementations"],["implemeted","implemented"],["implemeting","implementing"],["implemetnation","implementation"],["implemets","implements"],["implemnt","implement"],["implemntation","implementation"],["implemntations","implementations"],["implemt","implement"],["implemtation","implementation"],["implemtations","implementations"],["implemted","implemented"],["implemtentation","implementation"],["implemtentations","implementations"],["implemting","implementing"],["implemts","implements"],["impleneted","implemented"],["implenment","implement"],["implenmentation","implementation"],["implent","implement"],["implentation","implementation"],["implentations","implementations"],["implented","implemented"],["implenting","implementing"],["implentors","implementers"],["implents","implements"],["implet","implement"],["impletation","implementation"],["impletations","implementations"],["impleted","implemented"],["impleter","implementer"],["impleting","implementing"],["impletment","implement"],["implets","implements"],["implicitely","implicitly"],["implicitley","implicitly"],["implict","implicit"],["implictly","implicitly"],["implimcit","implicit"],["implimcitly","implicitly"],["impliment","implement"],["implimentaion","implementation"],["implimentaions","implementations"],["implimentation","implementation"],["implimentation-spacific","implementation-specific"],["implimentations","implementations"],["implimented","implemented"],["implimenting","implementing"],["implimention","implementation"],["implimentions","implementations"],["implimentor","implementor"],["impliments","implements"],["implmenet","implement"],["implmenetaion","implementation"],["implmenetaions","implementations"],["implmenetation","implementation"],["implmenetations","implementations"],["implmenetd","implemented"],["implmeneted","implemented"],["implmeneter","implementer"],["implmeneting","implementing"],["implmenets","implements"],["implment","implement"],["implmentation","implementation"],["implmentations","implementations"],["implmented","implemented"],["implmenting","implementing"],["implments","implements"],["imploys","employs"],["imporing","importing"],["imporot","import"],["imporoted","imported"],["imporoting","importing"],["imporots","imports"],["imporove","improve"],["imporoved","improved"],["imporovement","improvement"],["imporovements","improvements"],["imporoves","improves"],["imporoving","improving"],["imporsts","imports"],["importamt","important"],["importat","important"],["importd","imported"],["importent","important"],["importnt","important"],["imporve","improve"],["imporved","improved"],["imporvement","improvement"],["imporvements","improvements"],["imporves","improves"],["imporving","improving"],["imporvment","improvement"],["imposible","impossible"],["impossiblble","impossible"],["impot","import"],["impove","improve"],["impoved","improved"],["impovement","improvement"],["impovements","improvements"],["impoves","improves"],["impoving","improving"],["impplement","implement"],["impplementating","implementing"],["impplementation","implementation"],["impplemented","implemented"],["impremented","implemented"],["impres","impress"],["impresive","impressive"],["impressario","impresario"],["imprioned","imprisoned"],["imprisonned","imprisoned"],["improbe","improve"],["improbement","improvement"],["improbements","improvements"],["improbes","improves"],["improbing","improving"],["improbment","improvement"],["improbments","improvements"],["improof","improve"],["improofement","improvement"],["improofing","improving"],["improofment","improvement"],["improofs","improves"],["improove","improve"],["improoved","improved"],["improovement","improvement"],["improovements","improvements"],["improoves","improves"],["improoving","improving"],["improovment","improvement"],["improovments","improvements"],["impropely","improperly"],["improssible","impossible"],["improt","import"],["improtance","importance"],["improtant","important"],["improtantly","importantly"],["improtation","importation"],["improtations","importations"],["improted","imported"],["improter","importer"],["improters","importers"],["improting","importing"],["improts","imports"],["improvemen","improvement"],["improvemenet","improvement"],["improvemenets","improvements"],["improvemens","improvements"],["improvision","improvisation"],["improvmenet","improvement"],["improvmenets","improvements"],["improvment","improvement"],["improvments","improvements"],["imput","input"],["imrovement","improvement"],["in-memeory","in-memory"],["inablility","inability"],["inacccessible","inaccessible"],["inaccesible","inaccessible"],["inaccessable","inaccessible"],["inaccuraccies","inaccuracies"],["inaccuraccy","inaccuracy"],["inacessible","inaccessible"],["inacurate","inaccurate"],["inacurracies","inaccuracies"],["inacurrate","inaccurate"],["inadiquate","inadequate"],["inadquate","inadequate"],["inadvertant","inadvertent"],["inadvertantly","inadvertently"],["inadvertedly","inadvertently"],["inagurated","inaugurated"],["inaguration","inauguration"],["inaktively","inactively"],["inalid","invalid"],["inappropiate","inappropriate"],["inappropreate","inappropriate"],["inapropriate","inappropriate"],["inapropriately","inappropriately"],["inate","innate"],["inaugures","inaugurates"],["inavlid","invalid"],["inbalance","imbalance"],["inbalanced","imbalanced"],["inbed","embed"],["inbedded","embedded"],["inbility","inability"],["incalid","invalid"],["incarcirated","incarcerated"],["incase","in case"],["incatation","incantation"],["incatations","incantations"],["incative","inactive"],["incement","increment"],["incemental","incremental"],["incementally","incrementally"],["incemented","incremented"],["incements","increments"],["incerase","increase"],["incerased","increased"],["incerasing","increasing"],["incidential","incidental"],["incidentially","incidentally"],["incidently","incidentally"],["inclding","including"],["incldue","include"],["incldued","included"],["incldues","includes"],["inclinaison","inclination"],["inclode","include"],["inclreased","increased"],["includ","include"],["includea","include"],["includee","include"],["includeing","including"],["includied","included"],["includig","including"],["includign","including"],["includng","including"],["inclue","include"],["inclued","included"],["inclues","includes"],["incluging","including"],["incluide","include"],["incluing","including"],["inclused","included"],["inclusing","including"],["inclusinve","inclusive"],["inclution","inclusion"],["inclutions","inclusions"],["incmrement","increment"],["incoherance","incoherence"],["incoherancy","incoherency"],["incoherant","incoherent"],["incoherantly","incoherently"],["incomapatibility","incompatibility"],["incomapatible","incompatible"],["incomaptibele","incompatible"],["incomaptibelities","incompatibilities"],["incomaptibelity","incompatibility"],["incomaptible","incompatible"],["incombatibilities","incompatibilities"],["incombatibility","incompatibility"],["incomfortable","uncomfortable"],["incomming","incoming"],["incommplete","incomplete"],["incompatabable","incompatible"],["incompatabiity","incompatibility"],["incompatabile","incompatible"],["incompatabilities","incompatibilities"],["incompatability","incompatibility"],["incompatabillity","incompatibility"],["incompatabilty","incompatibility"],["incompatabily","incompatibility"],["incompatable","incompatible"],["incompatablility","incompatibility"],["incompatablities","incompatibilities"],["incompatablitiy","incompatibility"],["incompatablity","incompatibility"],["incompatably","incompatibly"],["incompataibility","incompatibility"],["incompataible","incompatible"],["incompataility","incompatibility"],["incompatatbility","incompatibility"],["incompatatble","incompatible"],["incompatatible","incompatible"],["incompatbility","incompatibility"],["incompatble","incompatible"],["incompatiability","incompatibility"],["incompatiable","incompatible"],["incompatibile","incompatible"],["incompatibilies","incompatibilities"],["incompatiblities","incompatibilities"],["incompatiblity","incompatibility"],["incompetance","incompetence"],["incompetant","incompetent"],["incompete","incomplete"],["incomping","incoming"],["incompleate","incomplete"],["incompleete","incomplete"],["incompletd","incomplete"],["incomptable","incompatible"],["incomptetent","incompetent"],["incomptible","incompatible"],["inconcistencies","inconsistencies"],["inconcistency","inconsistency"],["inconcistent","inconsistent"],["inconditional","unconditional"],["inconditionally","unconditionally"],["inconfortable","uncomfortable"],["inconisistent","inconsistent"],["inconistencies","inconsistencies"],["inconlusive","inconclusive"],["inconsisent","inconsistent"],["inconsisently","inconsistently"],["inconsisntency","inconsistency"],["inconsistance","inconsistency"],["inconsistancies","inconsistencies"],["inconsistancy","inconsistency"],["inconsistant","inconsistent"],["inconsisten","inconsistent"],["inconsistend","inconsistent"],["inconsistendly","inconsistently"],["inconsistendt","inconsistent"],["inconsistendtly","inconsistently"],["inconsistenly","inconsistently"],["inconsistented","inconsistent"],["inconsitant","inconsistent"],["inconsitency","inconsistency"],["inconsitent","inconsistent"],["inconveniant","inconvenient"],["inconveniantly","inconveniently"],["inconvertable","inconvertible"],["inconvienience","inconvenience"],["inconvienient","inconvenient"],["inconvineance","inconvenience"],["inconvineances","inconveniences"],["inconvinence","inconvenience"],["inconvinences","inconveniences"],["inconviniance","inconvenience"],["inconviniances","inconveniences"],["inconvinience","inconvenience"],["inconviniences","inconveniences"],["inconviniency","inconvenience"],["inconviniencys","inconveniences"],["incooperates","incorporates"],["incoperate","incorporate"],["incoperated","incorporated"],["incoperates","incorporates"],["incoperating","incorporating"],["incoporate","incorporate"],["incoporated","incorporated"],["incoporates","incorporates"],["incoporating","incorporating"],["incoprorate","incorporate"],["incoprorated","incorporated"],["incoprorates","incorporates"],["incoprorating","incorporating"],["incorect","incorrect"],["incorectly","incorrectly"],["incoropate","incorporate"],["incoropates","incorporates"],["incoroporated","incorporated"],["incorparates","incorporates"],["incorperate","incorporate"],["incorperated","incorporated"],["incorperates","incorporates"],["incorperating","incorporating"],["incorperation","incorporation"],["incorportaed","incorporated"],["incorported","incorporated"],["incorprates","incorporates"],["incorreclty","incorrectly"],["incorrecly","incorrectly"],["incorrecty","incorrectly"],["incorreect","incorrect"],["incorreectly","incorrectly"],["incorrent","incorrect"],["incorret","incorrect"],["incorrrect","incorrect"],["incorrrectly","incorrectly"],["incorruptable","incorruptible"],["incosistencies","inconsistencies"],["incosistency","inconsistency"],["incosistent","inconsistent"],["incosistente","inconsistent"],["incramentally","incrementally"],["increadible","incredible"],["increading","increasing"],["increaing","increasing"],["increament","increment"],["increas","increase"],["incredable","incredible"],["incremantal","incremental"],["incremeantal","incremental"],["incremenet","increment"],["incremenetd","incremented"],["incremeneted","incremented"],["incrementaly","incrementally"],["incremet","increment"],["incremetal","incremental"],["incremeted","incremented"],["incremnet","increment"],["increse","increase"],["incresed","increased"],["increses","increases"],["incresing","increasing"],["incrfemental","incremental"],["incrmenet","increment"],["incrmenetd","incremented"],["incrmeneted","incremented"],["incrment","increment"],["incrmental","incremental"],["incrmentally","incrementally"],["incrmented","incremented"],["incrmenting","incrementing"],["incrments","increments"],["inctance","instance"],["inctroduce","introduce"],["inctroduced","introduced"],["incude","include"],["incuded","included"],["incudes","includes"],["incuding","including"],["inculde","include"],["inculded","included"],["inculdes","includes"],["inculding","including"],["incunabla","incunabula"],["incure","incur"],["incurruptable","incorruptible"],["incurruptible","incorruptible"],["incvalid","invalid"],["indcates","indicates"],["indciate","indicate"],["inddex","index"],["inddividual","individual"],["inddividually","individually"],["inddividuals","individuals"],["indecate","indicate"],["indeces","indices"],["indecies","indices"],["indefinate","indefinite"],["indefinately","indefinitely"],["indefineable","undefinable"],["indefinetly","indefinitely"],["indefinitiley","indefinitely"],["indefinitively","indefinitely"],["indefinitly","indefinitely"],["indefintly","indefinitely"],["indempotent","idempotent"],["indendation","indentation"],["indentaction","indentation"],["indentaion","indentation"],["indentended","indented"],["indentical","identical"],["indentically","identically"],["indentifer","identifier"],["indentification","identification"],["indentified","identified"],["indentifier","identifier"],["indentifies","identifies"],["indentifing","identifying"],["indentify","identify"],["indentifying","identifying"],["indentit","identity"],["indentity","identity"],["indentleveal","indentlevel"],["indenx","index"],["indepandance","independence"],["indepdence","independence"],["indepdencente","independence"],["indepdendance","independence"],["indepdendant","independent"],["indepdendantly","independently"],["indepdendence","independence"],["indepdendency","independency"],["indepdendent","independent"],["indepdendently","independently"],["indepdendet","independent"],["indepdendetly","independently"],["indepdenence","independence"],["indepdenent","independent"],["indepdenently","independently"],["indepdent","independent"],["indepdented","independent"],["indepdentedly","independently"],["indepdently","independently"],["indepedantly","independently"],["indepedence","independence"],["indepedent","independent"],["indepedently","independently"],["independ","independent"],["independance","independence"],["independant","independent"],["independantly","independently"],["independece","independence"],["independed","independent"],["independedly","independently"],["independend","independent"],["independendet","independent"],["independet","independent"],["independly","independently"],["independnent","independent"],["independnet","independent"],["independnt","independent"],["independntly","independently"],["independt","independent"],["independtly","independently"],["indepenedent","independent"],["indepenendence","independence"],["indepenent","independent"],["indepenently","independently"],["indepent","independent"],["indepentent","independent"],["indepently","independently"],["inderect","indirect"],["inderts","inserts"],["indes","index"],["indespensable","indispensable"],["indespensible","indispensable"],["indexig","indexing"],["indiactor","indicator"],["indiate","indicate"],["indiated","indicated"],["indiates","indicates"],["indiating","indicating"],["indicaite","indicate"],["indicat","indicate"],["indicees","indices"],["indiciate","indicate"],["indiciated","indicated"],["indiciates","indicates"],["indiciating","indicating"],["indicies","indices"],["indicte","indicate"],["indictement","indictment"],["indictes","indicates"],["indictor","indicator"],["indigineous","indigenous"],["indipendence","independence"],["indipendent","independent"],["indipendently","independently"],["indiquate","indicate"],["indiquates","indicates"],["indirecty","indirectly"],["indispensible","indispensable"],["indisputible","indisputable"],["indisputibly","indisputably"],["indistiguishable","indistinguishable"],["indivdual","individual"],["indivdually","individually"],["indivdualy","individually"],["individal","individual"],["individally","individually"],["individals","individuals"],["individaul","individual"],["individaully","individually"],["individauls","individuals"],["individauly","individually"],["individial","individual"],["individualy","individually"],["individuel","individual"],["individuelly","individually"],["individuely","individually"],["indivisual","individual"],["indivisuality","individuality"],["indivisually","individually"],["indivisuals","individuals"],["indiviual","individual"],["indiviually","individually"],["indiviuals","individuals"],["indivual","individual"],["indivudual","individual"],["indivudually","individually"],["indizies","indices"],["indpendent","independent"],["indpendently","independently"],["indrect","indirect"],["indulgue","indulge"],["indure","endure"],["indutrial","industrial"],["indvidual","individual"],["indviduals","individuals"],["indxes","indexes"],["inearisation","linearisation"],["ineffciency","inefficiency"],["ineffcient","inefficient"],["ineffciently","inefficiently"],["inefficency","inefficiency"],["inefficent","inefficient"],["inefficently","inefficiently"],["inefficenty","inefficiently"],["inefficienty","inefficiently"],["ineffiecent","inefficient"],["ineffient","inefficient"],["ineffiently","inefficiently"],["ineficient","inefficient"],["inegrate","integrate"],["inegrated","integrated"],["ineqality","inequality"],["inequalitiy","inequality"],["inerface","interface"],["inerit","inherit"],["ineritance","inheritance"],["inerited","inherited"],["ineriting","inheriting"],["ineritor","inheritor"],["ineritors","inheritors"],["inerits","inherits"],["inernal","internal"],["inerrupt","interrupt"],["inershia","inertia"],["inershial","inertial"],["inersia","inertia"],["inersial","inertial"],["inertion","insertion"],["ines","lines"],["inestart","linestart"],["inetrrupts","interrupts"],["inevatible","inevitable"],["inevitible","inevitable"],["inevititably","inevitably"],["inexistant","inexistent"],["inexperiance","inexperience"],["inexperianced","inexperienced"],["inexpierence","inexperience"],["inexpierenced","inexperienced"],["inexpirience","inexperience"],["inexpirienced","inexperienced"],["infact","in fact"],["infalability","infallibility"],["infallable","infallible"],["infalte","inflate"],["infalted","inflated"],["infaltes","inflates"],["infalting","inflating"],["infectuous","infectious"],["infered","inferred"],["inferface","interface"],["infering","inferring"],["inferrable","inferable"],["inferrence","inference"],["infex","index"],["infilitrate","infiltrate"],["infilitrated","infiltrated"],["infilitration","infiltration"],["infinate","infinite"],["infinately","infinitely"],["infininte","infinite"],["infinit","infinite"],["infinitie","infinity"],["infinitly","infinitely"],["infinte","infinite"],["infintesimal","infinitesimal"],["infinty","infinity"],["infite","infinite"],["inflamation","inflammation"],["inflatoin","inflation"],["inflexable","inflexible"],["inflight","in-flight"],["influece","influence"],["influeced","influenced"],["influeces","influences"],["influecing","influencing"],["influencial","influential"],["influencin","influencing"],["influented","influenced"],["infoemation","information"],["infomation","information"],["infomational","informational"],["infomed","informed"],["infomer","informer"],["infomration","information"],["infoms","informs"],["infor","info"],["inforamtion","information"],["inforation","information"],["inforational","informational"],["inforce","enforce"],["inforced","enforced"],["informacion","information"],["informaion","information"],["informaiton","information"],["informatation","information"],["informatations","information"],["informatikon","information"],["informatins","information"],["informatio","information"],["informatiom","information"],["informations","information"],["informatoin","information"],["informatoins","information"],["informaton","information"],["informfation","information"],["informtion","information"],["inforrmation","information"],["infrantryman","infantryman"],["infrasctructure","infrastructure"],["infrastrcuture","infrastructure"],["infrastruture","infrastructure"],["infrastucture","infrastructure"],["infrastuctures","infrastructures"],["infreqency","infrequency"],["infreqentcy","infrequency"],["infreqeuncy","infrequency"],["infreqeuntcy","infrequency"],["infrequancies","infrequencies"],["infrequancy","infrequency"],["infrequantcies","infrequencies"],["infrequantcy","infrequency"],["infrequentcies","infrequencies"],["infrigement","infringement"],["infromation","information"],["infromatoin","information"],["infrormation","information"],["infrustructure","infrastructure"],["ingegral","integral"],["ingenius","ingenious"],["ingnore","ignore"],["ingnored","ignored"],["ingnores","ignores"],["ingnoring","ignoring"],["ingore","ignore"],["ingored","ignored"],["ingores","ignores"],["ingoring","ignoring"],["ingration","integration"],["ingreediants","ingredients"],["inh","in"],["inhabitans","inhabitants"],["inherantly","inherently"],["inheratance","inheritance"],["inheret","inherit"],["inherets","inherits"],["inheritablility","inheritability"],["inheritence","inheritance"],["inherith","inherit"],["inherithed","inherited"],["inherithing","inheriting"],["inheriths","inherits"],["inheritted","inherited"],["inherrit","inherit"],["inherritance","inheritance"],["inherrited","inherited"],["inherriting","inheriting"],["inherrits","inherits"],["inhert","inherit"],["inhertance","inheritance"],["inhertances","inheritances"],["inherted","inherited"],["inhertiance","inheritance"],["inherting","inheriting"],["inherts","inherits"],["inhomogenous","inhomogeneous"],["inialized","initialized"],["iniate","initiate"],["inidicate","indicate"],["inidicated","indicated"],["inidicates","indicates"],["inidicating","indicating"],["inidication","indication"],["inidications","indications"],["inidividual","individual"],["inidvidual","individual"],["inifinite","infinite"],["inifinity","infinity"],["inifinte","infinite"],["inifite","infinite"],["iniitial","initial"],["iniitialization","initialization"],["iniitializations","initializations"],["iniitialize","initialize"],["iniitialized","initialized"],["iniitializes","initializes"],["iniitializing","initializing"],["inintialisation","initialisation"],["inintialization","initialization"],["inisialise","initialise"],["inisialised","initialised"],["inisialises","initialises"],["iniside","inside"],["inisides","insides"],["initail","initial"],["initailisation","initialisation"],["initailise","initialise"],["initailised","initialised"],["initailiser","initialiser"],["initailisers","initialisers"],["initailises","initialises"],["initailising","initialising"],["initailization","initialization"],["initailize","initialize"],["initailized","initialized"],["initailizer","initializer"],["initailizers","initializers"],["initailizes","initializes"],["initailizing","initializing"],["initailly","initially"],["initails","initials"],["initailsation","initialisation"],["initailse","initialise"],["initailsed","initialised"],["initailsiation","initialisation"],["initaily","initially"],["initailzation","initialization"],["initailze","initialize"],["initailzed","initialized"],["initailziation","initialization"],["inital","initial"],["initalialisation","initialisation"],["initalialization","initialization"],["initalisation","initialisation"],["initalise","initialise"],["initalised","initialised"],["initaliser","initialiser"],["initalises","initialises"],["initalising","initialising"],["initalization","initialization"],["initalize","initialize"],["initalized","initialized"],["initalizer","initializer"],["initalizes","initializes"],["initalizing","initializing"],["initally","initially"],["initals","initials"],["initiailize","initialize"],["initiailized","initialized"],["initiailizes","initializes"],["initiailizing","initializing"],["initiaitive","initiative"],["initiaitives","initiatives"],["initialialise","initialise"],["initialialize","initialize"],["initialiasation","initialisation"],["initialiase","initialise"],["initialiased","initialised"],["initialiation","initialization"],["initialiazation","initialization"],["initialiaze","initialize"],["initialiazed","initialized"],["initialied","initialized"],["initialilsing","initialising"],["initialilzing","initializing"],["initialisaing","initialising"],["initialisaiton","initialisation"],["initialisated","initialised"],["initialisatin","initialisation"],["initialisationg","initialisation"],["initialisaton","initialisation"],["initialisatons","initialisations"],["initialiseing","initialising"],["initialisiation","initialisation"],["initialisong","initialising"],["initialiting","initializing"],["initialitse","initialise"],["initialitsing","initialising"],["initialitze","initialize"],["initialitzing","initializing"],["initializa","initialize"],["initializad","initialized"],["initializaed","initialized"],["initializaing","initializing"],["initializaiton","initialization"],["initializate","initialize"],["initializated","initialized"],["initializates","initializes"],["initializatin","initialization"],["initializating","initializing"],["initializationg","initialization"],["initializaton","initialization"],["initializatons","initializations"],["initializedd","initialized"],["initializeing","initializing"],["initializiation","initialization"],["initializong","initializing"],["initialsation","initialisation"],["initialse","initialise"],["initialsed","initialised"],["initialses","initialises"],["initialsing","initialising"],["initialy","initially"],["initialyl","initially"],["initialyse","initialise"],["initialysed","initialised"],["initialyses","initialises"],["initialysing","initialising"],["initialyze","initialize"],["initialyzed","initialized"],["initialyzes","initializes"],["initialyzing","initializing"],["initialzation","initialization"],["initialze","initialize"],["initialzed","initialized"],["initialzes","initializes"],["initialzing","initializing"],["initiatiate","initiate"],["initiatiated","initiated"],["initiatiater","initiator"],["initiatiating","initiating"],["initiatiator","initiator"],["initiatiats","initiates"],["initiatie","initiate"],["initiatied","initiated"],["initiaties","initiates"],["initiialise","initialise"],["initiialize","initialize"],["initilialised","initialised"],["initilialization","initialization"],["initilializations","initializations"],["initilialize","initialize"],["initilialized","initialized"],["initilializes","initializes"],["initilializing","initializing"],["initiliase","initialise"],["initiliased","initialised"],["initiliases","initialises"],["initiliasing","initialising"],["initiliaze","initialize"],["initiliazed","initialized"],["initiliazes","initializes"],["initiliazing","initializing"],["initilisation","initialisation"],["initilisations","initialisations"],["initilise","initialise"],["initilised","initialised"],["initilises","initialises"],["initilising","initialising"],["initilization","initialization"],["initilizations","initializations"],["initilize","initialize"],["initilized","initialized"],["initilizes","initializes"],["initilizing","initializing"],["inititalisation","initialisation"],["inititalisations","initialisations"],["inititalise","initialise"],["inititalised","initialised"],["inititaliser","initialiser"],["inititalising","initialising"],["inititalization","initialization"],["inititalizations","initializations"],["inititalize","initialize"],["inititate","initiate"],["inititator","initiator"],["inititialization","initialization"],["inititializations","initializations"],["initliasation","initialisation"],["initliase","initialise"],["initliased","initialised"],["initliaser","initialiser"],["initliazation","initialization"],["initliaze","initialize"],["initliazed","initialized"],["initliazer","initializer"],["inituialisation","initialisation"],["inituialization","initialization"],["inivisible","invisible"],["inizialize","initialize"],["inizialized","initialized"],["inizializes","initializes"],["inlalid","invalid"],["inlclude","include"],["inlcluded","included"],["inlcludes","includes"],["inlcluding","including"],["inlcludion","inclusion"],["inlclusive","inclusive"],["inlcude","include"],["inlcuded","included"],["inlcudes","includes"],["inlcuding","including"],["inlcusion","inclusion"],["inlcusive","inclusive"],["inlin","inline"],["inlude","include"],["inluded","included"],["inludes","includes"],["inluding","including"],["inludung","including"],["inluence","influence"],["inlusive","inclusive"],["inmediate","immediate"],["inmediatelly","immediately"],["inmediately","immediately"],["inmediatily","immediately"],["inmediatly","immediately"],["inmense","immense"],["inmigrant","immigrant"],["inmigrants","immigrants"],["inmmediately","immediately"],["inmplementation","implementation"],["innactive","inactive"],["innacurate","inaccurate"],["innacurately","inaccurately"],["innappropriate","inappropriate"],["innecesarily","unnecessarily"],["innecesary","unnecessary"],["innecessarily","unnecessarily"],["innecessary","unnecessary"],["inneffectual","ineffectual"],["innocous","innocuous"],["innoculate","inoculate"],["innoculated","inoculated"],["innosense","innocence"],["inocence","innocence"],["inofficial","unofficial"],["inofrmation","information"],["inoperant","inoperative"],["inoquous","innocuous"],["inot","into"],["inouts","inputs"],["inpact","impact"],["inpacted","impacted"],["inpacting","impacting"],["inpacts","impacts"],["inpeach","impeach"],["inpecting","inspecting"],["inpection","inspection"],["inpections","inspections"],["inpending","impending"],["inpenetrable","impenetrable"],["inplementation","implementation"],["inplementations","implementations"],["inplemented","implemented"],["inplicit","implicit"],["inplicitly","implicitly"],["inpolite","impolite"],["inport","import"],["inportant","important"],["inposible","impossible"],["inpossible","impossible"],["inpout","input"],["inpouts","inputs"],["inpractical","impractical"],["inpracticality","impracticality"],["inpractically","impractically"],["inprisonment","imprisonment"],["inproove","improve"],["inprooved","improved"],["inprooves","improves"],["inprooving","improving"],["inproovment","improvement"],["inproovments","improvements"],["inproper","improper"],["inproperly","improperly"],["inproving","improving"],["inpsection","inspection"],["inpterpreter","interpreter"],["inpu","input"],["inputed","inputted"],["inputsream","inputstream"],["inpuut","input"],["inrement","increment"],["inrements","increments"],["inreractive","interactive"],["inrerface","interface"],["inresponsive","unresponsive"],["inro","into"],["ins't","isn't"],["insallation","installation"],["insalled","installed"],["inscpeting","inspecting"],["insctuction","instruction"],["insctuctional","instructional"],["insctuctions","instructions"],["insde","inside"],["insead","instead"],["insectiverous","insectivorous"],["insensative","insensitive"],["insensetive","insensitive"],["insensistive","insensitive"],["insensistively","insensitively"],["insensitiv","insensitive"],["insensitivy","insensitivity"],["insensitve","insensitive"],["insenstive","insensitive"],["insenstively","insensitively"],["insentives","incentives"],["insentivite","insensitive"],["insepect","inspect"],["insepected","inspected"],["insepection","inspection"],["insepects","inspects"],["insependent","independent"],["inseperable","inseparable"],["insepsion","inception"],["inser","insert"],["insering","inserting"],["insersect","intersect"],["insersected","intersected"],["insersecting","intersecting"],["insersects","intersects"],["inserst","insert"],["insersted","inserted"],["inserster","inserter"],["insersting","inserting"],["inserstor","inserter"],["insersts","inserts"],["insertin","inserting"],["insertino","inserting"],["insesitive","insensitive"],["insesitively","insensitively"],["insesitiveness","insensitiveness"],["insesitivity","insensitivity"],["insetad","instead"],["insetead","instead"],["inseted","inserted"],["insid","inside"],["insidde","inside"],["insiddes","insides"],["insided","inside"],["insignificat","insignificant"],["insignificatly","insignificantly"],["insigt","insight"],["insigth","insight"],["insigths","insights"],["insigts","insights"],["insistance","insistence"],["insititute","institute"],["insitution","institution"],["insitutions","institutions"],["insonsistency","inconsistency"],["instaance","instance"],["instabce","instance"],["instace","instance"],["instaces","instances"],["instaciate","instantiate"],["instad","instead"],["instade","instead"],["instaead","instead"],["instaed","instead"],["instal","install"],["instalation","installation"],["instalations","installations"],["instaled","installed"],["instaler","installer"],["instaling","installing"],["installaion","installation"],["installaiton","installation"],["installaitons","installations"],["installataion","installation"],["installataions","installations"],["installatation","installation"],["installationa","installation"],["installes","installs"],["installtion","installation"],["instals","installs"],["instancd","instance"],["instanciate","instantiate"],["instanciated","instantiated"],["instanciates","instantiates"],["instanciating","instantiating"],["instanciation","instantiation"],["instanciations","instantiations"],["instane","instance"],["instanes","instances"],["instanseation","instantiation"],["instansiate","instantiate"],["instansiated","instantiated"],["instansiates","instantiates"],["instansiation","instantiation"],["instantate","instantiate"],["instantating","instantiating"],["instantation","instantiation"],["instantations","instantiations"],["instantiaties","instantiates"],["instanze","instance"],["instatance","instance"],["instatiate","instantiate"],["instatiation","instantiation"],["instatiations","instantiations"],["insteance","instance"],["insted","instead"],["insteead","instead"],["inster","insert"],["insterad","instead"],["insterrupts","interrupts"],["instersction","intersection"],["instersctions","intersections"],["instersectioned","intersection"],["instert","insert"],["insterted","inserted"],["instertion","insertion"],["institue","institute"],["instlal","install"],["instlalation","installation"],["instlalations","installations"],["instlaled","installed"],["instlaler","installer"],["instlaling","installing"],["instlals","installs"],["instller","installer"],["instnace","instance"],["instnaces","instances"],["instnance","instance"],["instnances","instances"],["instnat","instant"],["instnatiated","instantiated"],["instnatiation","instantiation"],["instnatiations","instantiations"],["instnce","instance"],["instnces","instances"],["instnsiated","instantiated"],["instnsiation","instantiation"],["instnsiations","instantiations"],["instnt","instant"],["instntly","instantly"],["instrace","instance"],["instralled","installed"],["instrction","instruction"],["instrctional","instructional"],["instrctions","instructions"],["instrcut","instruct"],["instrcutino","instruction"],["instrcutinoal","instructional"],["instrcutinos","instructions"],["instrcution","instruction"],["instrcutional","instructional"],["instrcutions","instructions"],["instrcuts","instructs"],["instread","instead"],["instrinsic","intrinsic"],["instruccion","instruction"],["instruccional","instructional"],["instruccions","instructions"],["instrucion","instruction"],["instrucional","instructional"],["instrucions","instructions"],["instruciton","instruction"],["instrucitonal","instructional"],["instrucitons","instructions"],["instrumenet","instrument"],["instrumenetation","instrumentation"],["instrumenetd","instrumented"],["instrumeneted","instrumented"],["instrumentaion","instrumentation"],["instrumnet","instrument"],["instrumnets","instruments"],["instsall","install"],["instsallation","installation"],["instsallations","installations"],["instsalled","installed"],["instsalls","installs"],["instuction","instruction"],["instuctional","instructional"],["instuctions","instructions"],["instuments","instruments"],["insturment","instrument"],["insturments","instruments"],["instutionalized","institutionalized"],["instutions","intuitions"],["insuffciency","insufficiency"],["insuffcient","insufficient"],["insuffciently","insufficiently"],["insufficency","insufficiency"],["insufficent","insufficient"],["insufficently","insufficiently"],["insuffiency","insufficiency"],["insuffient","insufficient"],["insuffiently","insufficiently"],["insurasnce","insurance"],["insurence","insurance"],["intaces","instance"],["intack","intact"],["intall","install"],["intallation","installation"],["intallationpath","installationpath"],["intallations","installations"],["intalled","installed"],["intalleing","installing"],["intaller","installer"],["intalles","installs"],["intalling","installing"],["intalls","installs"],["intances","instances"],["intantiate","instantiate"],["intantiating","instantiating"],["inteaction","interaction"],["intead","instead"],["inteded","intended"],["intedned","intended"],["inteface","interface"],["intefere","interfere"],["intefered","interfered"],["inteference","interference"],["integarte","integrate"],["integarted","integrated"],["integartes","integrates"],["integated","integrated"],["integates","integrates"],["integating","integrating"],["integation","integration"],["integations","integrations"],["integeral","integral"],["integere","integer"],["integreated","integrated"],["integrety","integrity"],["integrey","integrity"],["intelectual","intellectual"],["intelegence","intelligence"],["intelegent","intelligent"],["intelegently","intelligently"],["inteligability","intelligibility"],["inteligable","intelligible"],["inteligance","intelligence"],["inteligantly","intelligently"],["inteligence","intelligence"],["inteligent","intelligent"],["intelisense","intellisense"],["intelligable","intelligible"],["intemediary","intermediary"],["intenal","internal"],["intenational","international"],["intendet","intended"],["inteneded","intended"],["intenisty","intensity"],["intension","intention"],["intensional","intentional"],["intensionally","intentionally"],["intensionaly","intentionally"],["intentation","indentation"],["intentended","intended"],["intentially","intentionally"],["intentialy","intentionally"],["intentionaly","intentionally"],["intentionly","intentionally"],["intepolate","interpolate"],["intepolated","interpolated"],["intepolates","interpolates"],["intepret","interpret"],["intepretable","interpretable"],["intepretation","interpretation"],["intepretations","interpretations"],["intepretator","interpreter"],["intepretators","interpreters"],["intepreted","interpreted"],["intepreter","interpreter"],["intepreter-based","interpreter-based"],["intepreters","interpreters"],["intepretes","interprets"],["intepreting","interpreting"],["intepretor","interpreter"],["intepretors","interpreters"],["inteprets","interprets"],["inter-operability","interoperability"],["interace","interface"],["interaces","interfaces"],["interacive","interactive"],["interacively","interactively"],["interacsion","interaction"],["interacsions","interactions"],["interactionn","interaction"],["interactionns","interactions"],["interactiv","interactive"],["interactivly","interactively"],["interactuable","interactive"],["interafce","interface"],["interakt","interact"],["interaktion","interaction"],["interaktions","interactions"],["interaktive","interactively"],["interaktively","interactively"],["interaktivly","interactively"],["interaly","internally"],["interanl","internal"],["interanlly","internally"],["interate","iterate"],["interational","international"],["interative","interactive"],["interatively","interactively"],["interator","iterator"],["interators","iterators"],["interaxction","interaction"],["interaxctions","interactions"],["interaxtion","interaction"],["interaxtions","interactions"],["intercahnge","interchange"],["intercahnged","interchanged"],["intercation","interaction"],["interchage","interchange"],["interchangable","interchangeable"],["interchangably","interchangeably"],["interchangeble","interchangeable"],["intercollegate","intercollegiate"],["intercontinential","intercontinental"],["intercontinetal","intercontinental"],["interdependant","interdependent"],["interecptor","interceptor"],["intereested","interested"],["intereference","interference"],["intereferences","interferences"],["interelated","interrelated"],["interelaved","interleaved"],["interepolate","interpolate"],["interepolated","interpolated"],["interepolates","interpolates"],["interepolating","interpolating"],["interepolation","interpolation"],["interepret","interpret"],["interepretation","interpretation"],["interepretations","interpretations"],["interepreted","interpreted"],["interepreting","interpreting"],["intereprets","interprets"],["interept","intercept"],["interesct","intersect"],["interescted","intersected"],["interescting","intersecting"],["interesction","intersection"],["interesctions","intersections"],["interescts","intersects"],["interesect","intersect"],["interesected","intersected"],["interesecting","intersecting"],["interesection","intersection"],["interesections","intersections"],["interesects","intersects"],["intereset","interest"],["intereseted","interested"],["intereseting","interesting"],["interesing","interesting"],["interespersed","interspersed"],["interesseted","interested"],["interesst","interest"],["interessted","interested"],["interessting","interesting"],["intereview","interview"],["interfal","interval"],["interfals","intervals"],["interfave","interface"],["interfaves","interfaces"],["interfcae","interface"],["interfcaes","interfaces"],["interfear","interfere"],["interfearence","interference"],["interfearnce","interference"],["interfer","interfere"],["interferance","interference"],["interferd","interfered"],["interfereing","interfering"],["interfernce","interference"],["interferred","interfered"],["interferring","interfering"],["interfers","interferes"],["intergated","integrated"],["interger's","integer's"],["interger","integer"],["intergerated","integrated"],["intergers","integers"],["intergrate","integrate"],["intergrated","integrated"],["intergrates","integrates"],["intergrating","integrating"],["intergration","integration"],["intergrations","integrations"],["interit","inherit"],["interitance","inheritance"],["interited","inherited"],["interiting","inheriting"],["interits","inherits"],["interliveing","interleaving"],["interlly","internally"],["intermediat","intermediate"],["intermeidate","intermediate"],["intermidiate","intermediate"],["intermitent","intermittent"],["intermittant","intermittent"],["intermperance","intemperance"],["internaly","internally"],["internatinal","international"],["internatioanl","international"],["internation","international"],["internel","internal"],["internels","internals"],["internface","interface"],["interogators","interrogators"],["interopeable","interoperable"],["interoprability","interoperability"],["interperated","interpreted"],["interpert","interpret"],["interpertation","interpretation"],["interpertations","interpretations"],["interperted","interpreted"],["interperter","interpreter"],["interperters","interpreters"],["interperting","interpreting"],["interpertive","interpretive"],["interperts","interprets"],["interpet","interpret"],["interpetation","interpretation"],["interpeted","interpreted"],["interpeter","interpreter"],["interpeters","interpreters"],["interpeting","interpreting"],["interpets","interprets"],["interploate","interpolate"],["interploated","interpolated"],["interploates","interpolates"],["interploatin","interpolating"],["interploation","interpolation"],["interpolaed","interpolated"],["interpolaion","interpolation"],["interpolaiton","interpolation"],["interpolar","interpolator"],["interpolayed","interpolated"],["interporation","interpolation"],["interporations","interpolations"],["interprate","interpret"],["interprated","interpreted"],["interpreation","interpretation"],["interprerter","interpreter"],["interpretated","interpreted"],["interprete","interpret"],["interpretes","interprets"],["interpretet","interpreted"],["interpretion","interpretation"],["interpretions","interpretations"],["interpretor","interpreter"],["interprett","interpret"],["interpretted","interpreted"],["interpretter","interpreter"],["interpretting","interpreting"],["interract","interact"],["interracting","interacting"],["interractive","interactive"],["interracts","interacts"],["interrest","interest"],["interrested","interested"],["interresting","interesting"],["interrface","interface"],["interrim","interim"],["interript","interrupt"],["interrput","interrupt"],["interrputed","interrupted"],["interrrupt","interrupt"],["interrrupted","interrupted"],["interrrupting","interrupting"],["interrrupts","interrupts"],["interrtups","interrupts"],["interrugum","interregnum"],["interrum","interim"],["interrup","interrupt"],["interruped","interrupted"],["interruping","interrupting"],["interrups","interrupts"],["interruptable","interruptible"],["interruptors","interrupters"],["interruptted","interrupted"],["interrut","interrupt"],["interrutps","interrupts"],["interscetion","intersection"],["intersecct","intersect"],["interseccted","intersected"],["interseccting","intersecting"],["intersecction","intersection"],["interseccts","intersects"],["intersecrion","intersection"],["intersecton","intersection"],["intersectons","intersections"],["intersparsed","interspersed"],["interst","interest"],["intersted","interested"],["intersting","interesting"],["intersts","interests"],["intertaining","entertaining"],["intertia","inertia"],["intertial","inertial"],["interupt","interrupt"],["interupted","interrupted"],["interupting","interrupting"],["interupts","interrupts"],["interuupt","interrupt"],["intervall","interval"],["intervalls","intervals"],["interveening","intervening"],["intervines","intervenes"],["intesity","intensity"],["inteval","interval"],["intevals","intervals"],["intevene","intervene"],["intger","integer"],["intgers","integers"],["intgral","integral"],["inthe","in the"],["intiailise","initialise"],["intiailised","initialised"],["intiailiseing","initialising"],["intiailiser","initialiser"],["intiailises","initialises"],["intiailising","initialising"],["intiailize","initialize"],["intiailized","initialized"],["intiailizeing","initializing"],["intiailizer","initializer"],["intiailizes","initializes"],["intiailizing","initializing"],["intial","initial"],["intiale","initial"],["intialisation","initialisation"],["intialise","initialise"],["intialised","initialised"],["intialiser","initialiser"],["intialisers","initialisers"],["intialises","initialises"],["intialising","initialising"],["intialistion","initialisation"],["intializating","initializing"],["intialization","initialization"],["intializaze","initialize"],["intialize","initialize"],["intialized","initialized"],["intializer","initializer"],["intializers","initializers"],["intializes","initializes"],["intializing","initializing"],["intializtion","initialization"],["intialled","initialled"],["intiallisation","initialisation"],["intiallisations","initialisations"],["intiallised","initialised"],["intiallization","initialization"],["intiallizations","initializations"],["intiallized","initialized"],["intiallly","initially"],["intially","initially"],["intials","initials"],["intialse","initialise"],["intialsed","initialised"],["intialsing","initialising"],["intialte","initialise"],["intialy","initially"],["intialze","initialize"],["intialzed","initialized"],["intialzing","initializing"],["inticement","enticement"],["intiger","integer"],["intiial","initial"],["intiialise","initialise"],["intiialize","initialize"],["intilising","initialising"],["intilizing","initializing"],["intimite","intimate"],["intinite","infinite"],["intitial","initial"],["intitialization","initialization"],["intitialize","initialize"],["intitialized","initialized"],["intitials","initials"],["intity","entity"],["intot","into"],["intoto","into"],["intpreter","interpreter"],["intput","input"],["intputs","inputs"],["intraversion","introversion"],["intravert","introvert"],["intraverts","introverts"],["intrduced","introduced"],["intreeg","intrigue"],["intreeged","intrigued"],["intreeging","intriguing"],["intreegued","intrigued"],["intreeguing","intriguing"],["intreface","interface"],["intregral","integral"],["intrerrupt","interrupt"],["intresst","interest"],["intressted","interested"],["intressting","interesting"],["intrested","interested"],["intresting","interesting"],["intriduce","introduce"],["intriduced","introduced"],["intriduction","introduction"],["intrisinc","intrinsic"],["intrisincs","intrinsics"],["introducted","introduced"],["introductionary","introductory"],["introdued","introduced"],["introduse","introduce"],["introdused","introduced"],["introduses","introduces"],["introdusing","introducing"],["introsepectable","introspectable"],["introsepection","introspection"],["intrrupt","interrupt"],["intrrupted","interrupted"],["intrrupting","interrupting"],["intrrupts","interrupts"],["intruction","instruction"],["intructional","instructional"],["intructions","instructions"],["intruduced","introduced"],["intruducing","introducing"],["intrument","instrument"],["intrumental","instrumental"],["intrumented","instrumented"],["intrumenting","instrumenting"],["intruments","instruments"],["intrusted","entrusted"],["intstead","instead"],["intstructed","instructed"],["intstructer","instructor"],["intstructing","instructing"],["intstruction","instruction"],["intstructional","instructional"],["intstructions","instructions"],["intstructor","instructor"],["intstructs","instructs"],["intterrupt","interrupt"],["intterupt","interrupt"],["intterupted","interrupted"],["intterupting","interrupting"],["intterupts","interrupts"],["intuative","intuitive"],["inturpratasion","interpretation"],["inturpratation","interpretation"],["inturprett","interpret"],["intutive","intuitive"],["intutively","intuitively"],["inudstry","industry"],["inut","input"],["invaid","invalid"],["invaild","invalid"],["invaildate","invalidate"],["invailid","invalid"],["invalaid","invalid"],["invald","invalid"],["invaldates","invalidates"],["invalde","invalid"],["invalidatiopn","invalidation"],["invalide","invalid"],["invalidiate","invalidate"],["invalidte","invalidate"],["invalidted","invalidated"],["invalidtes","invalidates"],["invalidting","invalidating"],["invalidtion","invalidation"],["invalied","invalid"],["invalud","invalid"],["invarient","invariant"],["invarients","invariants"],["invarinat","invariant"],["invarinats","invariants"],["inventer","inventor"],["inverded","inverted"],["inverion","inversion"],["inverions","inversions"],["invertedd","inverted"],["invertibrates","invertebrates"],["invertion","inversion"],["invertions","inversions"],["inverval","interval"],["inveryed","inverted"],["invesitgated","investigated"],["invesitgating","investigating"],["invesitgation","investigation"],["invesitgations","investigations"],["investingate","investigate"],["inveting","inverting"],["invetory","inventory"],["inviation","invitation"],["invididual","individual"],["invidivual","individual"],["invidual","individual"],["invidually","individually"],["invisble","invisible"],["invisblity","invisibility"],["invisiable","invisible"],["invisibile","invisible"],["invisivble","invisible"],["invlaid","invalid"],["invlid","invalid"],["invlisible","invisible"],["invlove","involve"],["invloved","involved"],["invloves","involves"],["invocaition","invocation"],["invokable","invocable"],["invokation","invocation"],["invokations","invocations"],["invokve","invoke"],["invokved","invoked"],["invokves","invokes"],["invokving","invoking"],["involvment","involvement"],["invovle","involve"],["invovled","involved"],["invovles","involves"],["invovling","involving"],["ioclt","ioctl"],["iomaped","iomapped"],["ionde","inode"],["iplementation","implementation"],["ipmrovement","improvement"],["ipmrovements","improvements"],["iput","input"],["ireelevant","irrelevant"],["irelevent","irrelevant"],["iresistable","irresistible"],["iresistably","irresistibly"],["iresistible","irresistible"],["iresistibly","irresistibly"],["iritable","irritable"],["iritate","irritate"],["iritated","irritated"],["iritating","irritating"],["ironicly","ironically"],["irradate","irradiate"],["irradated","irradiated"],["irradates","irradiates"],["irradating","irradiating"],["irradation","irradiation"],["irraditate","irradiate"],["irraditated","irradiated"],["irraditates","irradiates"],["irraditating","irradiating"],["irregularties","irregularities"],["irregulier","irregular"],["irregulierties","irregularities"],["irrelavent","irrelevant"],["irrelevent","irrelevant"],["irrelvant","irrelevant"],["irreplacable","irreplaceable"],["irreplacalbe","irreplaceable"],["irreproducable","irreproducible"],["irresepective","irrespective"],["irresistable","irresistible"],["irresistably","irresistibly"],["irreversable","irreversible"],["is'nt","isn't"],["isalha","isalpha"],["isconnection","isconnected"],["iscrated","iscreated"],["iself","itself"],["iselfe","itself"],["iserting","inserting"],["isimilar","similar"],["isloation","isolation"],["ismas","isthmus"],["isn;t","isn't"],["isnpiron","inspiron"],["isnt'","isn't"],["isnt","isn't"],["isnt;","isn't"],["isntalation","installation"],["isntalations","installations"],["isntallation","installation"],["isntallations","installations"],["isntance","instance"],["isntances","instances"],["isotrophically","isotropically"],["ispatches","dispatches"],["isplay","display"],["Israelies","Israelis"],["isse","issue"],["isses","issues"],["isssue","issue"],["isssued","issued"],["isssues","issues"],["issueing","issuing"],["istalling","installing"],["istance","instance"],["istead","instead"],["istened","listened"],["istener","listener"],["isteners","listeners"],["istening","listening"],["isue","issue"],["iteartor","iterator"],["iteator","iterator"],["iteger","integer"],["itegral","integral"],["itegrals","integrals"],["iten","item"],["itens","items"],["itention","intention"],["itentional","intentional"],["itentionally","intentionally"],["itentionaly","intentionally"],["iteraion","iteration"],["iteraions","iterations"],["iteratable","iterable"],["iterater","iterator"],["iteraterate","iterate"],["iteratered","iterated"],["iteratior","iterator"],["iteratiors","iterators"],["iteratons","iterations"],["itereating","iterating"],["iterface","interface"],["iterfaces","interfaces"],["iternations","iterations"],["iterpreter","interpreter"],["iterration","iteration"],["iterrations","iterations"],["iterrupt","interrupt"],["iterstion","iteration"],["iterstions","iterations"],["itertation","iteration"],["iteself","itself"],["itesm","items"],["itheir","their"],["itheirs","theirs"],["itialise","initialise"],["itialised","initialised"],["itialises","initialises"],["itialising","initialising"],["itialize","initialize"],["itialized","initialized"],["itializes","initializes"],["itializing","initializing"],["itnerest","interest"],["itnerface","interface"],["itnerfaces","interfaces"],["itnernal","internal"],["itnerprelation","interpretation"],["itnerpret","interpret"],["itnerpretation","interpretation"],["itnerpretaton","interpretation"],["itnerpreted","interpreted"],["itnerpreter","interpreter"],["itnerpreting","interpreting"],["itnerprets","interprets"],["itnervals","intervals"],["itnroduced","introduced"],["itsef","itself"],["itsel","itself"],["itselfs","itself"],["itselt","itself"],["itselv","itself"],["itsems","items"],["itslef","itself"],["itslev","itself"],["itsself","itself"],["itterate","iterate"],["itterated","iterated"],["itterates","iterates"],["itterating","iterating"],["itteration","iteration"],["itterations","iterations"],["itterative","iterative"],["itterator","iterator"],["itterators","iterators"],["iunior","junior"],["ivalid","invalid"],["ivocation","invocation"],["ivoked","invoked"],["iwithout","without"],["iwll","will"],["iwth","with"],["jagid","jagged"],["jagwar","jaguar"],["januar","January"],["janurary","January"],["Januray","January"],["japanease","japanese"],["japaneese","Japanese"],["Japanes","Japanese"],["japanses","Japanese"],["jaques","jacques"],["javacript","javascript"],["javascipt","javascript"],["javasciript","javascript"],["javascritp","javascript"],["javascropt","javascript"],["javasript","javascript"],["javasrript","javascript"],["javescript","javascript"],["javsscript","javascript"],["jeapardy","jeopardy"],["jeffies","jiffies"],["jekins","Jenkins"],["jelous","jealous"],["jelousy","jealousy"],["jelusey","jealousy"],["jenkin","Jenkins"],["jenkkins","Jenkins"],["jenkns","Jenkins"],["jepordize","jeopardize"],["jewllery","jewellery"],["jhondoe","johndoe"],["jist","gist"],["jitterr","jitter"],["jitterring","jittering"],["jodpers","jodhpurs"],["Johanine","Johannine"],["joineable","joinable"],["joinning","joining"],["jont","joint"],["jonts","joints"],["jornal","journal"],["jorunal","journal"],["Jospeh","Joseph"],["jossle","jostle"],["jouney","journey"],["journied","journeyed"],["journies","journeys"],["joystik","joystick"],["jscipt","jscript"],["jstu","just"],["jsut","just"],["juadaism","Judaism"],["juadism","Judaism"],["judical","judicial"],["judisuary","judiciary"],["juducial","judicial"],["juge","judge"],["juipter","Jupiter"],["jumo","jump"],["jumoed","jumped"],["jumpimng","jumping"],["jupyther","Jupyter"],["juristiction","jurisdiction"],["juristictions","jurisdictions"],["jus","just"],["justfied","justified"],["justication","justification"],["justifed","justified"],["justs","just"],["juxt","just"],["juxtification","justification"],["juxtifications","justifications"],["juxtified","justified"],["juxtifies","justifies"],["juxtifying","justifying"],["kakfa","Kafka"],["kazakstan","Kazakhstan"],["keep-alives","keep-alive"],["keept","kept"],["kenerl","kernel"],["kenerls","kernels"],["kenrel","kernel"],["kenrels","kernels"],["kepping","keeping"],["kepps","keeps"],["kerenl","kernel"],["kerenls","kernels"],["kernal","kernel"],["kernals","kernels"],["kernerl","kernel"],["kernerls","kernels"],["keword","keyword"],["kewords","keywords"],["kewword","keyword"],["kewwords","keywords"],["keybaord","keyboard"],["keybaords","keyboards"],["keyboaard","keyboard"],["keyboaards","keyboards"],["keyboad","keyboard"],["keyboads","keyboards"],["keybooard","keyboard"],["keybooards","keyboards"],["keyborad","keyboard"],["keyborads","keyboards"],["keybord","keyboard"],["keybords","keyboards"],["keybroad","keyboard"],["keybroads","keyboards"],["keyevente","keyevent"],["keyords","keywords"],["keyoutch","keytouch"],["keyowrd","keyword"],["keypair","key pair"],["keypairs","key pairs"],["keyservers","key servers"],["keystokes","keystrokes"],["keyward","keyword"],["keywoards","keywords"],["keywork","keyword"],["keyworkd","keyword"],["keyworkds","keywords"],["keywors","keywords"],["keywprd","keyword"],["kindergarden","kindergarten"],["kindgergarden","kindergarten"],["kindgergarten","kindergarten"],["kinf","kind"],["kinfs","kinds"],["kinnect","Kinect"],["klenex","kleenex"],["klick","click"],["klicked","clicked"],["klicks","clicks"],["klunky","clunky"],["knive","knife"],["kno","know"],["knowladge","knowledge"],["knowlage","knowledge"],["knowlageable","knowledgeable"],["knowlegde","knowledge"],["knowlege","knowledge"],["knowlegeabel","knowledgeable"],["knowlegeable","knowledgeable"],["knwo","know"],["knwoing","knowing"],["knwoingly","knowingly"],["knwon","known"],["knwos","knows"],["kocalized","localized"],["konstant","constant"],["konstants","constants"],["konw","know"],["konwn","known"],["konws","knows"],["koordinate","coordinate"],["koordinates","coordinates"],["kown","known"],["kubenates","Kubernetes"],["kubenernetes","Kubernetes"],["kubenertes","Kubernetes"],["kubenetes","Kubernetes"],["kubenretes","Kubernetes"],["kuberenetes","Kubernetes"],["kuberentes","Kubernetes"],["kuberetes","Kubernetes"],["kubermetes","Kubernetes"],["kubernates","Kubernetes"],["kubernests","Kubernetes"],["kubernete","Kubernetes"],["kuberntes","Kubernetes"],["kwno","know"],["kwoledgebase","knowledge base"],["kyrillic","cyrillic"],["labbel","label"],["labbeled","labeled"],["labbels","labels"],["labed","labeled"],["labeld","labelled"],["labirinth","labyrinth"],["lable","label"],["lablel","label"],["lablels","labels"],["lables","labels"],["labouriously","laboriously"],["labratory","laboratory"],["lagacies","legacies"],["lagacy","legacy"],["laguage","language"],["laguages","languages"],["laguague","language"],["laguagues","languages"],["laiter","later"],["lamda","lambda"],["lamdas","lambdas"],["lanaguage","language"],["lanaguge","language"],["lanaguges","languages"],["lanagugs","languages"],["lanauge","language"],["langage","language"],["langauage","language"],["langauge","language"],["langauges","languages"],["langeuage","language"],["langeuagesection","languagesection"],["langht","length"],["langhts","lengths"],["langth","length"],["langths","lengths"],["languace","language"],["languaces","languages"],["languae","language"],["languaes","languages"],["language-spacific","language-specific"],["languahe","language"],["languahes","languages"],["languaje","language"],["languajes","languages"],["langual","lingual"],["languale","language"],["languales","languages"],["langualge","language"],["langualges","languages"],["languange","language"],["languanges","languages"],["languaqe","language"],["languaqes","languages"],["languate","language"],["languates","languages"],["languauge","language"],["languauges","languages"],["languege","language"],["langueges","languages"],["langugae","language"],["langugaes","languages"],["langugage","language"],["langugages","languages"],["languge","language"],["languges","languages"],["langugue","language"],["langugues","languages"],["lanich","launch"],["lanuage","language"],["lanuch","launch"],["lanuched","launched"],["lanuches","launches"],["lanuching","launching"],["lanugage","language"],["lanugages","languages"],["laod","load"],["laoded","loaded"],["laoding","loading"],["laods","loads"],["laout","layout"],["larg","large"],["largst","largest"],["larrry","larry"],["lastes","latest"],["lastr","last"],["latets","latest"],["lating","latin"],["latitide","latitude"],["latitue","latitude"],["latitute","latitude"],["latops","laptops"],["latset","latest"],["lattitude","latitude"],["lauch","launch"],["lauched","launched"],["laucher","launcher"],["lauches","launches"],["lauching","launching"],["lauguage","language"],["launck","launch"],["launhed","launched"],["lavae","larvae"],["layed","laid"],["layou","layout"],["lazer","laser"],["laziliy","lazily"],["lazyness","laziness"],["lcoally","locally"],["lcoation","location"],["lcuase","clause"],["leaast","least"],["leace","leave"],["leack","leak"],["leagacy","legacy"],["leagal","legal"],["leagalise","legalise"],["leagality","legality"],["leagalize","legalize"],["leagcy","legacy"],["leage","league"],["leagel","legal"],["leagelise","legalise"],["leagelity","legality"],["leagelize","legalize"],["leageue","league"],["leagl","legal"],["leaglise","legalise"],["leaglity","legality"],["leaglize","legalize"],["leapyear","leap year"],["leapyears","leap years"],["leary","leery"],["leaset","least"],["leasy","least"],["leathal","lethal"],["leats","least"],["leaveing","leaving"],["leavong","leaving"],["lefted","left"],["legac","legacy"],["legact","legacy"],["legalimate","legitimate"],["legasy","legacy"],["legel","legal"],["leggacies","legacies"],["leggacy","legacy"],["leght","length"],["leghts","lengths"],["legitamate","legitimate"],["legitimiately","legitimately"],["legitmate","legitimate"],["legnth","length"],["legth","length"],["legths","lengths"],["leibnitz","leibniz"],["leightweight","lightweight"],["lene","lens"],["lenggth","length"],["lengh","length"],["lenghs","lengths"],["lenght","length"],["lenghten","lengthen"],["lenghtend","lengthened"],["lenghtened","lengthened"],["lenghtening","lengthening"],["lenghth","length"],["lenghthen","lengthen"],["lenghths","lengths"],["lenghthy","lengthy"],["lenghtly","lengthy"],["lenghts","lengths"],["lenghty","lengthy"],["lengt","length"],["lengten","lengthen"],["lengtext","longtext"],["lengthes","lengths"],["lengthh","length"],["lengts","lengths"],["leniant","lenient"],["leninent","lenient"],["lentgh","length"],["lentghs","lengths"],["lenth","length"],["lenths","lengths"],["leran","learn"],["leraned","learned"],["lerans","learns"],["lessson","lesson"],["lesssons","lessons"],["lesstiff","LessTif"],["letgitimate","legitimate"],["letmost","leftmost"],["leutenant","lieutenant"],["levaridge","leverage"],["levetate","levitate"],["levetated","levitated"],["levetates","levitates"],["levetating","levitating"],["levl","level"],["levle","level"],["lexial","lexical"],["lexigraphic","lexicographic"],["lexigraphical","lexicographical"],["lexigraphically","lexicographically"],["leyer","layer"],["leyered","layered"],["leyering","layering"],["leyers","layers"],["liares","liars"],["liasion","liaison"],["liason","liaison"],["liasons","liaisons"],["libarary","library"],["libaries","libraries"],["libary","library"],["libell","libel"],["liberaries","libraries"],["liberary","library"],["liberoffice","libreoffice"],["liberry","library"],["libgng","libpng"],["libguistic","linguistic"],["libguistics","linguistics"],["libitarianisn","libertarianism"],["libraarie","library"],["libraaries","libraries"],["libraary","library"],["librabarie","library"],["librabaries","libraries"],["librabary","library"],["librabie","library"],["librabies","libraries"],["librabrie","library"],["librabries","libraries"],["librabry","library"],["libraby","library"],["libraie","library"],["libraier","library"],["libraies","libraries"],["libraiesr","libraries"],["libraire","library"],["libraires","libraries"],["librairies","libraries"],["librairy","library"],["libralie","library"],["libralies","libraries"],["libraly","library"],["libraray","library"],["libraris","libraries"],["librarries","libraries"],["librarry","library"],["libraryes","libraries"],["libratie","library"],["libraties","libraries"],["libraty","library"],["libray","library"],["librayr","library"],["libreoffie","libreoffice"],["libreoficekit","libreofficekit"],["libreries","libraries"],["librery","library"],["libries","libraries"],["librraies","libraries"],["librraries","libraries"],["librrary","library"],["librray","library"],["libstc++","libstdc++"],["licate","locate"],["licated","located"],["lication","location"],["lications","locations"],["licenceing","licencing"],["licese","license"],["licesne","license"],["licesnes","licenses"],["licesning","licensing"],["licesnse","license"],["licesnses","licenses"],["licesnsing","licensing"],["licsense","license"],["licsenses","licenses"],["licsensing","licensing"],["lieing","lying"],["liek","like"],["liekd","liked"],["lient","client"],["lients","clients"],["liesure","leisure"],["lieuenant","lieutenant"],["liev","live"],["lieved","lived"],["lifceycle","lifecycle"],["lifecyle","lifecycle"],["lifes","lives"],["lifeycle","lifecycle"],["liftime","lifetime"],["lighing","lighting"],["lightbulp","lightbulb"],["lightweigh","lightweight"],["lightwieght","lightweight"],["lightwight","lightweight"],["lightyear","light year"],["lightyears","light years"],["ligth","light"],["ligthing","lighting"],["ligths","lights"],["ligthweight","lightweight"],["ligthweights","lightweights"],["liitle","little"],["likeley","likely"],["likelly","likely"],["likelyhood","likelihood"],["likewis","likewise"],["likey","likely"],["liklelihood","likelihood"],["likley","likely"],["likly","likely"],["lileral","literal"],["limiation","limitation"],["limiations","limitations"],["liminted","limited"],["limitaion","limitation"],["limite","limit"],["limitiaion","limitation"],["limitiaions","limitations"],["limitiation","limitation"],["limitiations","limitations"],["limitied","limited"],["limitier","limiter"],["limitiers","limiters"],["limitiing","limiting"],["limitimg","limiting"],["limition","limitation"],["limitions","limitations"],["limitis","limits"],["limititation","limitation"],["limititations","limitations"],["limitited","limited"],["limititer","limiter"],["limititers","limiters"],["limititing","limiting"],["limitted","limited"],["limitter","limiter"],["limitting","limiting"],["limitts","limits"],["limk","link"],["limted","limited"],["limti","limit"],["limts","limits"],["linaer","linear"],["linar","linear"],["linarly","linearly"],["lincese","license"],["lincesed","licensed"],["linceses","licenses"],["lineary","linearly"],["linerisation","linearisation"],["linerisations","linearisations"],["lineseach","linesearch"],["lineseaches","linesearches"],["liness","lines"],["linewdith","linewidth"],["linez","lines"],["lingth","length"],["linheight","lineheight"],["linkfy","linkify"],["linnaena","linnaean"],["lintain","lintian"],["linz","lines"],["lippizaner","lipizzaner"],["liquify","liquefy"],["lisetning","listening"],["lising","listing"],["listapck","listpack"],["listbbox","listbox"],["listeing","listening"],["listeneing","listening"],["listeneres","listeners"],["listenes","listens"],["listensers","listeners"],["listenter","listener"],["listenters","listeners"],["listernes","listeners"],["listner","listener"],["listners","listeners"],["litaral","literal"],["litarally","literally"],["litarals","literals"],["litature","literature"],["liteautrue","literature"],["literaly","literally"],["literture","literature"],["litle","little"],["litquid","liquid"],["litquids","liquids"],["lits","list"],["litte","little"],["littel","little"],["littel-endian","little-endian"],["littele","little"],["littelry","literally"],["litteral","literal"],["litterally","literally"],["litterals","literals"],["litterate","literate"],["litterature","literature"],["liuke","like"],["liveing","living"],["livel","level"],["livetime","lifetime"],["livley","lively"],["lizens","license"],["lizense","license"],["lizensing","licensing"],["lke","like"],["llinear","linear"],["lmits","limits"],["loaader","loader"],["loacal","local"],["loacality","locality"],["loacally","locally"],["loacation","location"],["loaction","location"],["loactions","locations"],["loadig","loading"],["loadin","loading"],["loadning","loading"],["locae","locate"],["locaes","locates"],["locahost","localhost"],["locaiing","locating"],["locailty","locality"],["locaing","locating"],["locaion","location"],["locaions","locations"],["locaise","localise"],["locaised","localised"],["locaiser","localiser"],["locaises","localises"],["locaite","locate"],["locaites","locates"],["locaiting","locating"],["locaition","location"],["locaitions","locations"],["locaiton","location"],["locaitons","locations"],["locaize","localize"],["locaized","localized"],["locaizer","localizer"],["locaizes","localizes"],["localation","location"],["localed","located"],["localtion","location"],["localtions","locations"],["localy","locally"],["localzation","localization"],["locatins","locations"],["loccked","locked"],["locgical","logical"],["lockingf","locking"],["lodable","loadable"],["loded","loaded"],["loder","loader"],["loders","loaders"],["loding","loading"],["loev","love"],["logarithimic","logarithmic"],["logarithmical","logarithmically"],["logaritmic","logarithmic"],["logcal","logical"],["loggging","logging"],["logial","logical"],["logially","logically"],["logicaly","logically"],["logictech","logitech"],["logile","logfile"],["logitude","longitude"],["logitudes","longitudes"],["logoic","logic"],["logorithm","logarithm"],["logorithmic","logarithmic"],["logorithms","logarithms"],["logrithm","logarithm"],["logrithms","logarithms"],["logwritter","logwriter"],["loign","login"],["loigns","logins"],["lokal","local"],["lokale","locale"],["lokales","locales"],["lokaly","locally"],["lolal","total"],["lolerant","tolerant"],["lond","long"],["lonelyness","loneliness"],["long-runnign","long-running"],["longers","longer"],["longitudonal","longitudinal"],["longitue","longitude"],["longitutde","longitude"],["longitute","longitude"],["longst","longest"],["longuer","longer"],["longuest","longest"],["lonley","lonely"],["looback","loopback"],["loobacks","loopbacks"],["loobpack","loopback"],["loockdown","lockdown"],["lookes","looks"],["looknig","looking"],["looop","loop"],["loopup","lookup"],["loosley","loosely"],["loosly","loosely"],["losely","loosely"],["losen","loosen"],["losened","loosened"],["lotharingen","Lothringen"],["lpatform","platform"],["luckly","luckily"],["luminose","luminous"],["luminousity","luminosity"],["lveo","love"],["lvoe","love"],["Lybia","Libya"],["maake","make"],["mabe","maybe"],["mabye","maybe"],["macack","macaque"],["macason","moccasin"],["macasons","moccasins"],["maccro","macro"],["maccros","macros"],["machanism","mechanism"],["machanisms","mechanisms"],["mached","matched"],["maches","matches"],["machettie","machete"],["machinary","machinery"],["machine-dependend","machine-dependent"],["machiness","machines"],["mackeral","mackerel"],["maco","macro"],["macor","macro"],["macors","macros"],["macpakge","package"],["macroses","macros"],["macrow","macro"],["macthing","matching"],["madantory","mandatory"],["madatory","mandatory"],["maddness","madness"],["maesure","measure"],["maesured","measured"],["maesurement","measurement"],["maesurements","measurements"],["maesures","measures"],["maesuring","measuring"],["magasine","magazine"],["magincian","magician"],["magisine","magazine"],["magizine","magazine"],["magnatiude","magnitude"],["magnatude","magnitude"],["magnificient","magnificent"],["magolia","magnolia"],["mahcine","machine"],["maibe","maybe"],["maibox","mailbox"],["mailformed","malformed"],["mailling","mailing"],["maillinglist","mailing list"],["maillinglists","mailing lists"],["mailny","mainly"],["mailstrum","maelstrom"],["mainenance","maintenance"],["maininly","mainly"],["mainling","mailing"],["maintainance","maintenance"],["maintaince","maintenance"],["maintainces","maintenances"],["maintainence","maintenance"],["maintaing","maintaining"],["maintan","maintain"],["maintanance","maintenance"],["maintance","maintenance"],["maintane","maintain"],["maintanence","maintenance"],["maintaner","maintainer"],["maintaners","maintainers"],["maintans","maintains"],["maintenace","maintenance"],["maintenence","maintenance"],["maintiain","maintain"],["maintians","maintains"],["maintinaing","maintaining"],["maintioned","mentioned"],["mairabd","MariaDB"],["mairadb","MariaDB"],["maitain","maintain"],["maitainance","maintenance"],["maitained","maintained"],["maitainers","maintainers"],["majoroty","majority"],["maka","make"],["makefle","makefile"],["makeing","making"],["makign","making"],["makretplace","marketplace"],["makro","macro"],["makros","macros"],["Malcom","Malcolm"],["maliciousally","maliciously"],["malicius","malicious"],["maliciusally","maliciously"],["maliciusly","maliciously"],["malicous","malicious"],["malicousally","maliciously"],["malicously","maliciously"],["maline","malign"],["malined","maligned"],["malining","maligning"],["malins","maligns"],["malless","malice"],["malplace","misplace"],["malplaced","misplaced"],["maltesian","Maltese"],["mamagement","management"],["mamal","mammal"],["mamalian","mammalian"],["mamento","memento"],["mamentos","mementos"],["mamory","memory"],["mamuth","mammoth"],["manafacturer","manufacturer"],["manafacturers","manufacturers"],["managament","management"],["manageed","managed"],["managemenet","management"],["managenment","management"],["managet","manager"],["managets","managers"],["managmenet","management"],["managment","management"],["manaise","mayonnaise"],["manal","manual"],["manange","manage"],["manangement","management"],["mananger","manager"],["manangers","managers"],["manaul","manual"],["manaully","manually"],["manauls","manuals"],["manaze","mayonnaise"],["mandatatory","mandatory"],["mandetory","mandatory"],["manement","management"],["maneouvre","manoeuvre"],["maneouvred","manoeuvred"],["maneouvres","manoeuvres"],["maneouvring","manoeuvring"],["manetain","maintain"],["manetained","maintained"],["manetainer","maintainer"],["manetainers","maintainers"],["manetaining","maintaining"],["manetains","maintains"],["mangaed","managed"],["mangaement","management"],["mangager","manager"],["mangagers","managers"],["mangement","management"],["mangementt","management"],["manifacture","manufacture"],["manifactured","manufactured"],["manifacturer","manufacturer"],["manifacturers","manufacturers"],["manifactures","manufactures"],["manifect","manifest"],["manipluate","manipulate"],["manipluated","manipulated"],["manipulatin","manipulating"],["manipulaton","manipulation"],["manipute","manipulate"],["maniputed","manipulated"],["maniputing","manipulating"],["manipution","manipulation"],["maniputions","manipulations"],["maniputor","manipulator"],["manisfestations","manifestations"],["maniuplate","manipulate"],["maniuplated","manipulated"],["maniuplates","manipulates"],["maniuplating","manipulating"],["maniuplation","manipulation"],["maniuplations","manipulations"],["maniuplator","manipulator"],["maniuplators","manipulators"],["mannor","manner"],["mannual","manual"],["mannually","manually"],["mannualy","manually"],["manoeuverability","maneuverability"],["manoeuvering","maneuvering"],["manouevring","manoeuvring"],["mantain","maintain"],["mantainable","maintainable"],["mantained","maintained"],["mantainer","maintainer"],["mantainers","maintainers"],["mantaining","maintaining"],["mantains","maintains"],["mantanine","maintain"],["mantanined","maintained"],["mantatory","mandatory"],["mantenance","maintenance"],["manualy","manually"],["manualyl","manually"],["manualyy","manually"],["manuell","manual"],["manuelly","manually"],["manufactuerd","manufactured"],["manufacturedd","manufactured"],["manufature","manufacture"],["manufatured","manufactured"],["manufaturing","manufacturing"],["manufaucturing","manufacturing"],["manulally","manually"],["manule","manual"],["manuley","manually"],["manully","manually"],["manuly","manually"],["manupilations","manipulations"],["manupulate","manipulate"],["manupulated","manipulated"],["manupulates","manipulates"],["manupulating","manipulating"],["manupulation","manipulation"],["manupulations","manipulations"],["manuver","maneuver"],["manyal","manual"],["manyally","manually"],["manyals","manuals"],["mapable","mappable"],["mape","map"],["maped","mapped"],["maping","mapping"],["mapings","mappings"],["mapp","map"],["mappeds","mapped"],["mappeed","mapped"],["mappping","mapping"],["mapppings","mappings"],["margings","margins"],["mariabd","MariaDB"],["mariage","marriage"],["marjority","majority"],["marketting","marketing"],["markey","marquee"],["markeys","marquees"],["marmelade","marmalade"],["marrage","marriage"],["marraige","marriage"],["marrtyred","martyred"],["marryied","married"],["marshmellow","marshmallow"],["marshmellows","marshmallows"],["marter","martyr"],["masakist","masochist"],["mashetty","machete"],["mashine","machine"],["mashined","machined"],["mashines","machines"],["masia","messiah"],["masicer","massacre"],["masiff","massif"],["maskerading","masquerading"],["maskeraid","masquerade"],["masos","macos"],["masquarade","masquerade"],["masqurade","masquerade"],["Massachusettes","Massachusetts"],["Massachussets","Massachusetts"],["Massachussetts","Massachusetts"],["massagebox","messagebox"],["massectomy","mastectomy"],["massewer","masseur"],["massmedia","mass media"],["massoose","masseuse"],["masster","master"],["masteer","master"],["masterbation","masturbation"],["mastquerade","masquerade"],["mata-data","meta-data"],["matadata","metadata"],["matainer","maintainer"],["matainers","maintainers"],["mataphysical","metaphysical"],["matatable","metatable"],["matc","match"],["matchies","matches"],["matchign","matching"],["matchin","matching"],["matchs","matches"],["matchter","matcher"],["matcing","matching"],["mateiral","material"],["mateirals","materials"],["matemathical","mathematical"],["materaial","material"],["materaials","materials"],["materail","material"],["materails","materials"],["materalists","materialist"],["materil","material"],["materilism","materialism"],["materilize","materialize"],["materils","materials"],["materla","material"],["materlas","materials"],["mathamatics","mathematics"],["mathces","matches"],["mathch","match"],["mathched","matched"],["mathches","matches"],["mathching","matching"],["mathcing","matching"],["mathed","matched"],["mathematicaly","mathematically"],["mathematican","mathematician"],["mathematicas","mathematics"],["mathes","matches"],["mathetician","mathematician"],["matheticians","mathematicians"],["mathimatic","mathematic"],["mathimatical","mathematical"],["mathimatically","mathematically"],["mathimatician","mathematician"],["mathimaticians","mathematicians"],["mathimatics","mathematics"],["mathing","matching"],["mathmatical","mathematical"],["mathmatically","mathematically"],["mathmatician","mathematician"],["mathmaticians","mathematicians"],["mathod","method"],["matinay","matinee"],["matix","matrix"],["matreial","material"],["matreials","materials"],["matresses","mattresses"],["matrial","material"],["matrials","materials"],["matser","master"],["matzch","match"],["mavrick","maverick"],["mawsoleum","mausoleum"],["maximice","maximize"],["maximim","maximum"],["maximimum","maximum"],["maximium","maximum"],["maximnum","maximum"],["maximnums","maximums"],["maximun","maximum"],["maxinum","maximum"],["maxium","maximum"],["maxiumum","maximum"],["maxmimum","maximum"],["maxmium","maximum"],["maxmiums","maximums"],["maxosx","macosx"],["maxumum","maximum"],["maybee","maybe"],["mayonase","mayonnaise"],["mayority","majority"],["mayu","may"],["mayybe","maybe"],["mazilla","Mozilla"],["mccarthyst","mccarthyist"],["mchanic","mechanic"],["mchanical","mechanical"],["mchanically","mechanically"],["mchanicals","mechanicals"],["mchanics","mechanics"],["mchanism","mechanism"],["mchanisms","mechanisms"],["mcroscope","microscope"],["mcroscopes","microscopes"],["mcroscopic","microscopic"],["mcroscopies","microscopies"],["mcroscopy","microscopy"],["mdification","modification"],["mdifications","modifications"],["mdified","modified"],["mdifier","modifier"],["mdifiers","modifiers"],["mdifies","modifies"],["mdify","modify"],["mdifying","modifying"],["mdoel","model"],["mdoeled","modeled"],["mdoeling","modeling"],["mdoelled","modelled"],["mdoelling","modelling"],["mdoels","models"],["meaasure","measure"],["meaasured","measured"],["meaasures","measures"],["meachanism","mechanism"],["meachanisms","mechanisms"],["meachinism","mechanism"],["meachinisms","mechanisms"],["meachnism","mechanism"],["meachnisms","mechanisms"],["meading","meaning"],["meaing","meaning"],["mealflur","millefleur"],["meanigfull","meaningful"],["meanign","meaning"],["meanin","meaning"],["meaninful","meaningful"],["meaningfull","meaningful"],["meanining","meaning"],["meaninless","meaningless"],["meaninng","meaning"],["meassurable","measurable"],["meassurably","measurably"],["meassure","measure"],["meassured","measured"],["meassurement","measurement"],["meassurements","measurements"],["meassures","measures"],["meassuring","measuring"],["measue","measure"],["measued","measured"],["measuement","measurement"],["measuements","measurements"],["measuer","measurer"],["measues","measures"],["measuing","measuring"],["measuremenet","measurement"],["measuremenets","measurements"],["measurmenet","measurement"],["measurmenets","measurements"],["measurment","measurement"],["measurments","measurements"],["meatadata","metadata"],["meatfile","metafile"],["meathod","method"],["meaure","measure"],["meaured","measured"],["meaurement","measurement"],["meaurements","measurements"],["meaurer","measurer"],["meaurers","measurers"],["meaures","measures"],["meauring","measuring"],["meausure","measure"],["meausures","measures"],["meber","member"],["mebmer","member"],["mebrain","membrane"],["mebrains","membranes"],["mebran","membrane"],["mebrans","membranes"],["mecahinsm","mechanism"],["mecahinsms","mechanisms"],["mecahnic","mechanic"],["mecahnics","mechanics"],["mecahnism","mechanism"],["mecanical","mechanical"],["mecanism","mechanism"],["mecanisms","mechanisms"],["meccob","macabre"],["mechamism","mechanism"],["mechamisms","mechanisms"],["mechananism","mechanism"],["mechancial","mechanical"],["mechandise","merchandise"],["mechanim","mechanism"],["mechanims","mechanisms"],["mechanis","mechanism"],["mechansim","mechanism"],["mechansims","mechanisms"],["mechine","machine"],["mechines","machines"],["mechinism","mechanism"],["mechnanism","mechanism"],["mechnism","mechanism"],["mechnisms","mechanisms"],["medacine","medicine"],["medai","media"],["meddo","meadow"],["meddos","meadows"],["medeival","medieval"],["medevial","medieval"],["medhod","method"],["medhods","methods"],["medievel","medieval"],["medifor","metaphor"],["medifors","metaphors"],["medioker","mediocre"],["mediphor","metaphor"],["mediphors","metaphors"],["medisinal","medicinal"],["mediterainnean","mediterranean"],["Mediteranean","Mediterranean"],["medow","meadow"],["medows","meadows"],["meeds","needs"],["meens","means"],["meerkrat","meerkat"],["meerly","merely"],["meetign","meeting"],["meganism","mechanism"],["mege","merge"],["mehcanic","mechanic"],["mehcanical","mechanical"],["mehcanically","mechanically"],["mehcanics","mechanics"],["mehod","method"],["mehodical","methodical"],["mehodically","methodically"],["mehods","methods"],["mehtod","method"],["mehtodical","methodical"],["mehtodically","methodically"],["mehtods","methods"],["meida","media"],["melancoly","melancholy"],["melieux","milieux"],["melineum","millennium"],["melineumms","millennia"],["melineums","millennia"],["melinneum","millennium"],["melinneums","millennia"],["mellineum","millennium"],["mellineums","millennia"],["mellinneum","millennium"],["mellinneums","millennia"],["membran","membrane"],["membranaphone","membranophone"],["membrans","membranes"],["memcahe","memcache"],["memcahed","memcached"],["memeasurement","measurement"],["memeber","member"],["memebered","remembered"],["memebers","members"],["memebership","membership"],["memeberships","memberships"],["memebr","member"],["memebrof","memberof"],["memebrs","members"],["mememory","memory"],["mememto","memento"],["memeory","memory"],["memer","member"],["memership","membership"],["memerships","memberships"],["memery","memory"],["memick","mimic"],["memicked","mimicked"],["memicking","mimicking"],["memics","mimics"],["memmber","member"],["memmick","mimic"],["memmicked","mimicked"],["memmicking","mimicking"],["memmics","mimics"],["memmory","memory"],["memoery","memory"],["memomry","memory"],["memor","memory"],["memoty","memory"],["memove","memmove"],["mempry","memory"],["memroy","memory"],["memwar","memoir"],["memwars","memoirs"],["memwoir","memoir"],["memwoirs","memoirs"],["menally","mentally"],["menas","means"],["menetion","mention"],["menetioned","mentioned"],["menetioning","mentioning"],["menetions","mentions"],["meni","menu"],["menioned","mentioned"],["mensioned","mentioned"],["mensioning","mentioning"],["ment","meant"],["menthods","methods"],["mentiond","mentioned"],["mentione","mentioned"],["mentionned","mentioned"],["mentionning","mentioning"],["mentionnned","mentioned"],["menual","manual"],["menue","menu"],["menues","menus"],["menutitems","menuitems"],["meraj","mirage"],["merajes","mirages"],["merang","meringue"],["mercahnt","merchant"],["mercentile","mercantile"],["merchantibility","merchantability"],["merecat","meerkat"],["merecats","meerkats"],["mergable","mergeable"],["merget","merge"],["mergge","merge"],["mergged","merged"],["mergging","merging"],["mermory","memory"],["merory","memory"],["merrors","mirrors"],["mesage","message"],["mesages","messages"],["mesaureed","measured"],["meskeeto","mosquito"],["meskeetos","mosquitoes"],["mesoneen","mezzanine"],["mesoneens","mezzanines"],["messaes","messages"],["messag","message"],["messagetqueue","messagequeue"],["messagin","messaging"],["messagoe","message"],["messags","messages"],["messagses","messages"],["messanger","messenger"],["messangers","messengers"],["messave","message"],["messeges","messages"],["messenging","messaging"],["messgae","message"],["messgaed","messaged"],["messgaes","messages"],["messge","message"],["messges","messages"],["messsage","message"],["messsages","messages"],["messure","measure"],["messured","measured"],["messurement","measurement"],["messures","measures"],["messuring","measuring"],["messurment","measurement"],["mesure","measure"],["mesured","measured"],["mesurement","measurement"],["mesurements","measurements"],["mesures","measures"],["mesuring","measuring"],["mesurment","measurement"],["meta-attrubute","meta-attribute"],["meta-attrubutes","meta-attributes"],["meta-progamming","meta-programming"],["metacharater","metacharacter"],["metacharaters","metacharacters"],["metalic","metallic"],["metalurgic","metallurgic"],["metalurgical","metallurgical"],["metalurgy","metallurgy"],["metamorphysis","metamorphosis"],["metapackge","metapackage"],["metapackges","metapackages"],["metaphore","metaphor"],["metaphoricial","metaphorical"],["metaprogamming","metaprogramming"],["metatdata","metadata"],["metdata","metadata"],["meterial","material"],["meterials","materials"],["meterologist","meteorologist"],["meterology","meteorology"],["methaphor","metaphor"],["methaphors","metaphors"],["methd","method"],["methdos","methods"],["methds","methods"],["methid","method"],["methids","methods"],["methjod","method"],["methodd","method"],["methode","method"],["methoden","methods"],["methodss","methods"],["methon","method"],["methons","methods"],["methot","method"],["methots","methods"],["metifor","metaphor"],["metifors","metaphors"],["metion","mention"],["metioned","mentioned"],["metiphor","metaphor"],["metiphors","metaphors"],["metod","method"],["metodologies","methodologies"],["metodology","methodology"],["metods","methods"],["metrig","metric"],["metrigal","metrical"],["metrigs","metrics"],["mey","may"],["meybe","maybe"],["mezmorise","mesmerise"],["mezmorised","mesmerised"],["mezmoriser","mesmeriser"],["mezmorises","mesmerises"],["mezmorising","mesmerising"],["mezmorize","mesmerize"],["mezmorized","mesmerized"],["mezmorizer","mesmerizer"],["mezmorizes","mesmerizes"],["mezmorizing","mesmerizing"],["miagic","magic"],["miagical","magical"],["mial","mail"],["mices","mice"],["Michagan","Michigan"],["micorcode","microcode"],["micorcodes","microcodes"],["Micorsoft","Microsoft"],["micoscope","microscope"],["micoscopes","microscopes"],["micoscopic","microscopic"],["micoscopies","microscopies"],["micoscopy","microscopy"],["Micosoft","Microsoft"],["micrcontroller","microcontroller"],["micrcontrollers","microcontrollers"],["microcontroler","microcontroller"],["microcontrolers","microcontrollers"],["Microfost","Microsoft"],["microntroller","microcontroller"],["microntrollers","microcontrollers"],["microoseconds","microseconds"],["micropone","microphone"],["micropones","microphones"],["microprocesspr","microprocessor"],["microprocessprs","microprocessors"],["microseond","microsecond"],["microseonds","microseconds"],["Microsft","Microsoft"],["microship","microchip"],["microships","microchips"],["Microsof","Microsoft"],["Microsofot","Microsoft"],["Micrsft","Microsoft"],["Micrsoft","Microsoft"],["middlware","middleware"],["midevil","medieval"],["midified","modified"],["midpints","midpoints"],["midpiont","midpoint"],["midpionts","midpoints"],["midpont","midpoint"],["midponts","midpoints"],["mige","midge"],["miges","midges"],["migh","might"],["migrateable","migratable"],["migth","might"],["miht","might"],["miinimisation","minimisation"],["miinimise","minimise"],["miinimised","minimised"],["miinimises","minimises"],["miinimising","minimising"],["miinimization","minimization"],["miinimize","minimize"],["miinimized","minimized"],["miinimizes","minimizes"],["miinimizing","minimizing"],["miinimum","minimum"],["mikrosecond","microsecond"],["mikroseconds","microseconds"],["milage","mileage"],["milages","mileages"],["mileau","milieu"],["milennia","millennia"],["milennium","millennium"],["mileu","milieu"],["miliary","military"],["milicious","malicious"],["miliciousally","maliciously"],["miliciously","maliciously"],["milicous","malicious"],["milicousally","maliciously"],["milicously","maliciously"],["miligram","milligram"],["milimeter","millimeter"],["milimeters","millimeters"],["milimetre","millimetre"],["milimetres","millimetres"],["milimiters","millimeters"],["milion","million"],["miliraty","military"],["milisecond","millisecond"],["miliseconds","milliseconds"],["milisecons","milliseconds"],["milivolts","millivolts"],["milktoast","milquetoast"],["milktoasts","milquetoasts"],["milleneum","millennium"],["millenia","millennia"],["millenial","millennial"],["millenialism","millennialism"],["millenials","millennials"],["millenium","millennium"],["millepede","millipede"],["milliescond","millisecond"],["milliesconds","milliseconds"],["millimiter","millimeter"],["millimiters","millimeters"],["millimitre","millimetre"],["millimitres","millimetres"],["millioniare","millionaire"],["millioniares","millionaires"],["millisencond","millisecond"],["millisenconds","milliseconds"],["milliseond","millisecond"],["milliseonds","milliseconds"],["millitant","militant"],["millitary","military"],["millon","million"],["millsecond","millisecond"],["millseconds","milliseconds"],["millsencond","millisecond"],["millsenconds","milliseconds"],["miltary","military"],["miltisite","multisite"],["milyew","milieu"],["mimach","mismatch"],["mimachd","mismatched"],["mimached","mismatched"],["mimaches","mismatches"],["mimaching","mismatching"],["mimatch","mismatch"],["mimatchd","mismatched"],["mimatched","mismatched"],["mimatches","mismatches"],["mimatching","mismatching"],["mimicing","mimicking"],["mimick","mimic"],["mimicks","mimics"],["mimimal","minimal"],["mimimum","minimum"],["mimimun","minimum"],["miminal","minimal"],["miminally","minimally"],["miminaly","minimally"],["miminise","minimise"],["miminised","minimised"],["miminises","minimises"],["miminising","minimising"],["miminize","minimize"],["miminized","minimized"],["miminizes","minimizes"],["miminizing","minimizing"],["mimmick","mimic"],["mimmicked","mimicked"],["mimmicking","mimicking"],["mimmics","mimics"],["minature","miniature"],["minerial","mineral"],["MingGW","MinGW"],["minimam","minimum"],["minimial","minimal"],["minimium","minimum"],["minimsation","minimisation"],["minimse","minimise"],["minimsed","minimised"],["minimses","minimises"],["minimsing","minimising"],["minimumm","minimum"],["minimumn","minimum"],["minimun","minimum"],["minimzation","minimization"],["minimze","minimize"],["minimzed","minimized"],["minimzes","minimizes"],["minimzing","minimizing"],["mininal","minimal"],["mininise","minimise"],["mininised","minimised"],["mininises","minimises"],["mininising","minimising"],["mininize","minimize"],["mininized","minimized"],["mininizes","minimizes"],["mininizing","minimizing"],["mininum","minimum"],["miniscule","minuscule"],["miniscully","minusculely"],["miniture","miniature"],["minium","minimum"],["miniums","minimums"],["miniumum","minimum"],["minmal","minimal"],["minmum","minimum"],["minnimum","minimum"],["minnimums","minimums"],["minsitry","ministry"],["minstries","ministries"],["minstry","ministry"],["minum","minimum"],["minumum","minimum"],["minuscle","minuscule"],["minuts","minutes"],["miplementation","implementation"],["mirconesia","micronesia"],["mircophone","microphone"],["mircophones","microphones"],["mircoscope","microscope"],["mircoscopes","microscopes"],["mircoservice","microservice"],["mircoservices","microservices"],["mircosoft","Microsoft"],["mirgate","migrate"],["mirgated","migrated"],["mirgates","migrates"],["mirometer","micrometer"],["mirometers","micrometers"],["mirored","mirrored"],["miroring","mirroring"],["mirorr","mirror"],["mirorred","mirrored"],["mirorring","mirroring"],["mirorrs","mirrors"],["mirro","mirror"],["mirroed","mirrored"],["mirrorn","mirror"],["mirrorred","mirrored"],["mis-alignement","misalignment"],["mis-alignment","misalignment"],["mis-intepret","mis-interpret"],["mis-intepreted","mis-interpreted"],["mis-match","mismatch"],["misalignement","misalignment"],["misalinged","misaligned"],["misbehaive","misbehave"],["miscallenous","miscellaneous"],["misceancellous","miscellaneous"],["miscelaneous","miscellaneous"],["miscellanious","miscellaneous"],["miscellanous","miscellaneous"],["miscelleneous","miscellaneous"],["mischeivous","mischievous"],["mischevious","mischievous"],["mischevus","mischievous"],["mischevusly","mischievously"],["mischieveous","mischievous"],["mischieveously","mischievously"],["mischievious","mischievous"],["misconfiged","misconfigured"],["Miscrosoft","Microsoft"],["misdameanor","misdemeanor"],["misdameanors","misdemeanors"],["misdemenor","misdemeanor"],["misdemenors","misdemeanors"],["miselaneous","miscellaneous"],["miselaneously","miscellaneously"],["misellaneous","miscellaneous"],["misellaneously","miscellaneously"],["misformed","malformed"],["misfourtunes","misfortunes"],["misile","missile"],["mising","missing"],["misintepret","misinterpret"],["misintepreted","misinterpreted"],["misinterpert","misinterpret"],["misinterperted","misinterpreted"],["misinterperting","misinterpreting"],["misinterperts","misinterprets"],["misinterprett","misinterpret"],["misinterpretted","misinterpreted"],["misisng","missing"],["mismach","mismatch"],["mismached","mismatched"],["mismaches","mismatches"],["mismaching","mismatching"],["mismactch","mismatch"],["mismatchd","mismatched"],["mismatich","mismatch"],["Misouri","Missouri"],["mispell","misspell"],["mispelled","misspelled"],["mispelling","misspelling"],["mispellings","misspellings"],["mispelt","misspelt"],["mispronounciation","mispronunciation"],["misquito","mosquito"],["misquitos","mosquitos"],["missable","miscible"],["missconfiguration","misconfiguration"],["missconfigure","misconfigure"],["missconfigured","misconfigured"],["missconfigures","misconfigures"],["missconfiguring","misconfiguring"],["misscounted","miscounted"],["missen","mizzen"],["missign","missing"],["missingassignement","missingassignment"],["missings","missing"],["Missisipi","Mississippi"],["Missisippi","Mississippi"],["missle","missile"],["missleading","misleading"],["missletow","mistletoe"],["missmanaged","mismanaged"],["missmatch","mismatch"],["missmatchd","mismatched"],["missmatched","mismatched"],["missmatches","mismatches"],["missmatching","mismatching"],["missonary","missionary"],["misspel","misspell"],["misssing","missing"],["misstake","mistake"],["misstaken","mistaken"],["misstakes","mistakes"],["misstype","mistype"],["misstypes","mistypes"],["missunderstood","misunderstood"],["missuse","misuse"],["missused","misused"],["missusing","misusing"],["mistatch","mismatch"],["mistatchd","mismatched"],["mistatched","mismatched"],["mistatches","mismatches"],["mistatching","mismatching"],["misteek","mystique"],["misteeks","mystiques"],["misterious","mysterious"],["mistery","mystery"],["misteryous","mysterious"],["mistic","mystic"],["mistical","mystical"],["mistics","mystics"],["mistmatch","mismatch"],["mistmatched","mismatched"],["mistmatches","mismatches"],["mistmatching","mismatching"],["mistro","maestro"],["mistros","maestros"],["mistrow","maestro"],["mistrows","maestros"],["misue","misuse"],["misued","misused"],["misuing","misusing"],["miticate","mitigate"],["miticated","mitigated"],["miticateing","mitigating"],["miticates","mitigates"],["miticating","mitigating"],["miticator","mitigator"],["mittigate","mitigate"],["miximum","maximum"],["mixted","mixed"],["mixure","mixture"],["mjor","major"],["mkae","make"],["mkaes","makes"],["mkaing","making"],["mke","make"],["mkea","make"],["mmaped","mapped"],["mmatching","matching"],["mmbers","members"],["mmnemonic","mnemonic"],["mnay","many"],["mobify","modify"],["mocrochip","microchip"],["mocrochips","microchips"],["mocrocode","microcode"],["mocrocodes","microcodes"],["mocrocontroller","microcontroller"],["mocrocontrollers","microcontrollers"],["mocrophone","microphone"],["mocrophones","microphones"],["mocroprocessor","microprocessor"],["mocroprocessors","microprocessors"],["mocrosecond","microsecond"],["mocroseconds","microseconds"],["Mocrosoft","Microsoft"],["mocule","module"],["mocules","modules"],["moddel","model"],["moddeled","modeled"],["moddelled","modelled"],["moddels","models"],["modee","mode"],["modelinng","modeling"],["modell","model"],["modellinng","modelling"],["modernination","modernization"],["moderninations","modernizations"],["moderninationz","modernizations"],["modernizationz","modernizations"],["modesettting","modesetting"],["modeul","module"],["modeuls","modules"],["modfel","model"],["modfiable","modifiable"],["modfication","modification"],["modfications","modifications"],["modfide","modified"],["modfided","modified"],["modfider","modifier"],["modfiders","modifiers"],["modfides","modifies"],["modfied","modified"],["modfieid","modified"],["modfieir","modifier"],["modfieirs","modifiers"],["modfieis","modifies"],["modfier","modifier"],["modfiers","modifiers"],["modfies","modifies"],["modfifiable","modifiable"],["modfification","modification"],["modfifications","modifications"],["modfified","modified"],["modfifier","modifier"],["modfifiers","modifiers"],["modfifies","modifies"],["modfify","modify"],["modfifying","modifying"],["modfiiable","modifiable"],["modfiication","modification"],["modfiications","modifications"],["modfitied","modified"],["modfitier","modifier"],["modfitiers","modifiers"],["modfities","modifies"],["modfity","modify"],["modfitying","modifying"],["modfiy","modify"],["modfiying","modifying"],["modfy","modify"],["modfying","modifying"],["modications","modifications"],["modidfication","modification"],["modidfications","modifications"],["modidfied","modified"],["modidfier","modifier"],["modidfiers","modifiers"],["modidfies","modifies"],["modidfy","modify"],["modidfying","modifying"],["modifable","modifiable"],["modifaction","modification"],["modifactions","modifications"],["modifation","modification"],["modifations","modifications"],["modifcation","modification"],["modifcations","modifications"],["modifciation","modification"],["modifciations","modifications"],["modifcication","modification"],["modifcications","modifications"],["modifdied","modified"],["modifdy","modify"],["modifed","modified"],["modifer","modifier"],["modifers","modifiers"],["modifes","modifies"],["modiffer","modifier"],["modiffers","modifiers"],["modifiation","modification"],["modifiations","modifications"],["modificatioon","modification"],["modificatioons","modifications"],["modificaton","modification"],["modificatons","modifications"],["modifid","modified"],["modifified","modified"],["modifify","modify"],["modifing","modifying"],["modifires","modifiers"],["modifiy","modify"],["modifiying","modifying"],["modifiyng","modifying"],["modifled","modified"],["modifler","modifier"],["modiflers","modifiers"],["modift","modify"],["modifty","modify"],["modifu","modify"],["modifuable","modifiable"],["modifued","modified"],["modifx","modify"],["modifyable","modifiable"],["modiration","moderation"],["modle","model"],["modlue","module"],["modprobbing","modprobing"],["modprobeing","modprobing"],["modtified","modified"],["modue","module"],["moduel","module"],["moduels","modules"],["moduile","module"],["modukles","modules"],["modul","module"],["modules's","modules'"],["moduless","modules"],["modulie","module"],["modulu","modulo"],["modulues","modules"],["modyfy","modify"],["moent","moment"],["moeny","money"],["mofdified","modified"],["mofification","modification"],["mofified","modified"],["mofifies","modifies"],["mofify","modify"],["mohammedan","muslim"],["mohammedans","muslims"],["moint","mount"],["mointor","monitor"],["mointored","monitored"],["mointoring","monitoring"],["mointors","monitors"],["moleclues","molecules"],["momement","moment"],["momementarily","momentarily"],["momements","moments"],["momemtarily","momentarily"],["momemtary","momentary"],["momemtn","moment"],["momentarely","momentarily"],["momento","memento"],["momery","memory"],["momoent","moment"],["momoment","moment"],["momomentarily","momentarily"],["momoments","moments"],["momory","memory"],["monarkey","monarchy"],["monarkeys","monarchies"],["monarkies","monarchies"],["monestaries","monasteries"],["monestic","monastic"],["monickers","monikers"],["monitary","monetary"],["moniter","monitor"],["monitoing","monitoring"],["monkies","monkeys"],["monochorome","monochrome"],["monochromo","monochrome"],["monocrome","monochrome"],["monolite","monolithic"],["monontonicity","monotonicity"],["monopace","monospace"],["monotir","monitor"],["monotired","monitored"],["monotiring","monitoring"],["monotirs","monitors"],["monsday","Monday"],["Monserrat","Montserrat"],["monstrum","monster"],["montains","mountains"],["montaj","montage"],["montajes","montages"],["montanous","mountainous"],["monthe","month"],["monthes","months"],["montly","monthly"],["Montnana","Montana"],["monts","months"],["montypic","monotypic"],["moodify","modify"],["moounting","mounting"],["mopdule","module"],["mopre","more"],["mor","more"],["mordern","modern"],["morever","moreover"],["morg","morgue"],["morgage","mortgage"],["morges","morgues"],["morgs","morgues"],["morisette","morissette"],["mormalise","normalise"],["mormalised","normalised"],["mormalises","normalises"],["mormalize","normalize"],["mormalized","normalized"],["mormalizes","normalizes"],["morrisette","morissette"],["morroccan","moroccan"],["morrocco","morocco"],["morroco","morocco"],["mortage","mortgage"],["morter","mortar"],["moslty","mostly"],["mostlky","mostly"],["mosture","moisture"],["mosty","mostly"],["moteef","motif"],["moteefs","motifs"],["moteur","motor"],["moteured","motored"],["moteuring","motoring"],["moteurs","motors"],["mothing","nothing"],["motiviated","motivated"],["motiviation","motivation"],["motononic","monotonic"],["motoroloa","motorola"],["moudle","module"],["moudule","module"],["mountian","mountain"],["mountpiont","mountpoint"],["mountpionts","mountpoints"],["mouspointer","mousepointer"],["moutn","mount"],["moutned","mounted"],["moutning","mounting"],["moutnpoint","mountpoint"],["moutnpoints","mountpoints"],["moutns","mounts"],["mouvement","movement"],["mouvements","movements"],["movebackwrd","movebackward"],["moveble","movable"],["movemement","movement"],["movemements","movements"],["movememnt","movement"],["movememnts","movements"],["movememt","movement"],["movememts","movements"],["movemet","movement"],["movemets","movements"],["movemment","movement"],["movemments","movements"],["movemnet","movement"],["movemnets","movements"],["movemnt","movement"],["movemnts","movements"],["movment","movement"],["moziila","Mozilla"],["mozila","Mozilla"],["mozzilla","mozilla"],["mroe","more"],["msbild","MSBuild"],["msbilds","MSBuild's"],["msbuid","MSBuild"],["msbuids","MSBuild's"],["msbuld","MSBuild"],["msbulds","MSBuild's"],["msbulid","MSBuild"],["msbulids","MSBuild's"],["mssing","missing"],["msssge","message"],["mthod","method"],["mtuually","mutually"],["mucuous","mucous"],["muder","murder"],["mudering","murdering"],["mudule","module"],["mudules","modules"],["muext","mutex"],["muiltiple","multiple"],["muiltiples","multiples"],["muliple","multiple"],["muliples","multiples"],["mulithread","multithread"],["mulitiplier","multiplier"],["mulitipliers","multipliers"],["mulitpart","multipart"],["mulitpath","multipath"],["mulitple","multiple"],["mulitplication","multiplication"],["mulitplicative","multiplicative"],["mulitplied","multiplied"],["mulitplier","multiplier"],["mulitpliers","multipliers"],["mulitply","multiply"],["multi-dimenional","multi-dimensional"],["multi-dimenionsal","multi-dimensional"],["multi-langual","multi-lingual"],["multi-presistion","multi-precision"],["multi-threded","multi-threaded"],["multible","multiple"],["multibye","multibyte"],["multicat","multicast"],["multicultralism","multiculturalism"],["multidimenional","multi-dimensional"],["multidimenionsal","multi-dimensional"],["multidimensinal","multidimensional"],["multidimension","multidimensional"],["multidimensionnal","multidimensional"],["multidimentionnal","multidimensional"],["multiecast","multicast"],["multifuction","multifunction"],["multilangual","multilingual"],["multile","multiple"],["multilpe","multiple"],["multipe","multiple"],["multipes","multiples"],["multipiler","multiplier"],["multipilers","multipliers"],["multipled","multiplied"],["multiplers","multipliers"],["multipliciaton","multiplication"],["multiplicites","multiplicities"],["multiplicty","multiplicity"],["multiplikation","multiplication"],["multipling","multiplying"],["multipllication","multiplication"],["multiplyed","multiplied"],["multipresistion","multiprecision"],["multipul","multiple"],["multipy","multiply"],["multipyling","multiplying"],["multithreded","multithreaded"],["multitute","multitude"],["multivriate","multivariate"],["multixsite","multisite"],["multline","multiline"],["multliple","multiple"],["multliples","multiples"],["multliplied","multiplied"],["multliplier","multiplier"],["multlipliers","multipliers"],["multliplies","multiplies"],["multliply","multiply"],["multliplying","multiplying"],["multple","multiple"],["multples","multiples"],["multplied","multiplied"],["multplier","multiplier"],["multpliers","multipliers"],["multplies","multiplies"],["multply","multiply"],["multplying","multiplying"],["multy","multi"],["multy-thread","multithread"],["mumber","number"],["mumbers","numbers"],["munbers","numbers"],["muncipalities","municipalities"],["muncipality","municipality"],["municiple","municipal"],["munnicipality","municipality"],["munute","minute"],["murr","myrrh"],["muscial","musical"],["muscician","musician"],["muscicians","musicians"],["musn't","mustn't"],["must't","mustn't"],["mustator","mutator"],["muste","must"],["mutablity","mutability"],["mutbale","mutable"],["mutch","much"],["mutches","matches"],["mutecies","mutexes"],["mutexs","mutexes"],["muti","multi"],["muticast","multicast"],["mutices","mutexes"],["mutilcast","multicast"],["mutiliated","mutilated"],["mutimarked","multimarked"],["mutipath","multipath"],["mutiple","multiple"],["mutiply","multiply"],["mutli","multi"],["mutli-threaded","multi-threaded"],["mutlipart","multipart"],["mutliple","multiple"],["mutliples","multiples"],["mutliplication","multiplication"],["mutliplicites","multiplicities"],["mutliplier","multiplier"],["mutlipliers","multipliers"],["mutliply","multiply"],["mutully","mutually"],["mutux","mutex"],["mutuxes","mutexes"],["mutuxs","mutexes"],["muyst","must"],["myabe","maybe"],["mybe","maybe"],["myitereator","myiterator"],["myraid","myriad"],["mysef","myself"],["mysefl","myself"],["mysekf","myself"],["myselfe","myself"],["myselfes","myself"],["myselv","myself"],["myselve","myself"],["myselves","myself"],["myslef","myself"],["mysogynist","misogynist"],["mysogyny","misogyny"],["mysterous","mysterious"],["mystql","mysql"],["mystrow","maestro"],["mystrows","maestros"],["Mythraic","Mithraic"],["myu","my"],["nadly","badly"],["nagative","negative"],["nagatively","negatively"],["nagatives","negatives"],["nagivation","navigation"],["naieve","naive"],["nam","name"],["namaed","named"],["namaes","names"],["nameing","naming"],["namemespace","namespace"],["namepace","namespace"],["namepsace","namespace"],["namepsaces","namespaces"],["namesapce","namespace"],["namesapced","namespaced"],["namesapces","namespaces"],["namess","names"],["namesspaces","namespaces"],["namme","name"],["namne","name"],["namned","named"],["namnes","names"],["namnespace","namespace"],["namnespaces","namespaces"],["nams","names"],["nane","name"],["nanosencond","nanosecond"],["nanosenconds","nanoseconds"],["nanoseond","nanosecond"],["nanoseonds","nanoseconds"],["Naploeon","Napoleon"],["Napolean","Napoleon"],["Napoleonian","Napoleonic"],["nasted","nested"],["nasting","nesting"],["nastly","nasty"],["nastyness","nastiness"],["natched","matched"],["natches","matches"],["nativelyx","natively"],["natrual","natural"],["naturaly","naturally"],["naturely","naturally"],["naturual","natural"],["naturually","naturally"],["natvigation","navigation"],["navagate","navigate"],["navagating","navigating"],["navagation","navigation"],["navagitation","navigation"],["naviagte","navigate"],["naviagted","navigated"],["naviagtes","navigates"],["naviagting","navigating"],["naviagtion","navigation"],["navitvely","natively"],["navtive","native"],["navtives","natives"],["naxima","maxima"],["naximal","maximal"],["naximum","maximum"],["Nazereth","Nazareth"],["nclude","include"],["ndoe","node"],["ndoes","nodes"],["neady","needy"],["neagtive","negative"],["neares","nearest"],["nearset","nearest"],["necassery","necessary"],["necassry","necessary"],["necause","because"],["neccecarily","necessarily"],["neccecary","necessary"],["neccesarily","necessarily"],["neccesary","necessary"],["neccessarily","necessarily"],["neccessarry","necessary"],["neccessary","necessary"],["neccessities","necessities"],["neccessity","necessity"],["neccisary","necessary"],["neccsessary","necessary"],["necesarily","necessarily"],["necesarrily","necessarily"],["necesarry","necessary"],["necesary","necessary"],["necessaery","necessary"],["necessairly","necessarily"],["necessar","necessary"],["necessarilly","necessarily"],["necessarly","necessarily"],["necessarry","necessary"],["necessaryly","necessarily"],["necessay","necessary"],["necesserily","necessarily"],["necessery","necessary"],["necessesary","necessary"],["necessiate","necessitate"],["nechanism","mechanism"],["necssary","necessary"],["nedd","need"],["nedded","needed"],["neded","needed"],["nedia","media"],["nedium","medium"],["nediums","mediums"],["nedle","needle"],["neds","needs"],["needeed","needed"],["neeed","need"],["neeeded","needed"],["neeeding","needing"],["neeedle","needle"],["neeedn't","needn't"],["neeeds","needs"],["nees","needs"],["neesd","needs"],["neesds","needs"],["neested","nested"],["neesting","nesting"],["negaive","negative"],["negarive","negative"],["negatiotiable","negotiable"],["negatiotiate","negotiate"],["negatiotiated","negotiated"],["negatiotiates","negotiates"],["negatiotiating","negotiating"],["negatiotiation","negotiation"],["negatiotiations","negotiations"],["negatiotiator","negotiator"],["negatiotiators","negotiators"],["negativ","negative"],["negatve","negative"],["negible","negligible"],["negitiable","negotiable"],["negitiate","negotiate"],["negitiated","negotiated"],["negitiates","negotiates"],["negitiating","negotiating"],["negitiation","negotiation"],["negitiations","negotiations"],["negitiator","negotiator"],["negitiators","negotiators"],["negitive","negative"],["neglible","negligible"],["negligable","negligible"],["negligble","negligible"],["negoable","negotiable"],["negoate","negotiate"],["negoated","negotiated"],["negoates","negotiates"],["negoatiable","negotiable"],["negoatiate","negotiate"],["negoatiated","negotiated"],["negoatiates","negotiates"],["negoatiating","negotiating"],["negoatiation","negotiation"],["negoatiations","negotiations"],["negoatiator","negotiator"],["negoatiators","negotiators"],["negoating","negotiating"],["negoation","negotiation"],["negoations","negotiations"],["negoator","negotiator"],["negoators","negotiators"],["negociable","negotiable"],["negociate","negotiate"],["negociated","negotiated"],["negociates","negotiates"],["negociating","negotiating"],["negociation","negotiation"],["negociations","negotiations"],["negociator","negotiator"],["negociators","negotiators"],["negogtiable","negotiable"],["negogtiate","negotiate"],["negogtiated","negotiated"],["negogtiates","negotiates"],["negogtiating","negotiating"],["negogtiation","negotiation"],["negogtiations","negotiations"],["negogtiator","negotiator"],["negogtiators","negotiators"],["negoitable","negotiable"],["negoitate","negotiate"],["negoitated","negotiated"],["negoitates","negotiates"],["negoitating","negotiating"],["negoitation","negotiation"],["negoitations","negotiations"],["negoitator","negotiator"],["negoitators","negotiators"],["negoptionsotiable","negotiable"],["negoptionsotiate","negotiate"],["negoptionsotiated","negotiated"],["negoptionsotiates","negotiates"],["negoptionsotiating","negotiating"],["negoptionsotiation","negotiation"],["negoptionsotiations","negotiations"],["negoptionsotiator","negotiator"],["negoptionsotiators","negotiators"],["negosiable","negotiable"],["negosiate","negotiate"],["negosiated","negotiated"],["negosiates","negotiates"],["negosiating","negotiating"],["negosiation","negotiation"],["negosiations","negotiations"],["negosiator","negotiator"],["negosiators","negotiators"],["negotable","negotiable"],["negotaiable","negotiable"],["negotaiate","negotiate"],["negotaiated","negotiated"],["negotaiates","negotiates"],["negotaiating","negotiating"],["negotaiation","negotiation"],["negotaiations","negotiations"],["negotaiator","negotiator"],["negotaiators","negotiators"],["negotaible","negotiable"],["negotaite","negotiate"],["negotaited","negotiated"],["negotaites","negotiates"],["negotaiting","negotiating"],["negotaition","negotiation"],["negotaitions","negotiations"],["negotaitor","negotiator"],["negotaitors","negotiators"],["negotate","negotiate"],["negotated","negotiated"],["negotates","negotiates"],["negotatiable","negotiable"],["negotatiate","negotiate"],["negotatiated","negotiated"],["negotatiates","negotiates"],["negotatiating","negotiating"],["negotatiation","negotiation"],["negotatiations","negotiations"],["negotatiator","negotiator"],["negotatiators","negotiators"],["negotatible","negotiable"],["negotatie","negotiate"],["negotatied","negotiated"],["negotaties","negotiates"],["negotating","negotiating"],["negotation","negotiation"],["negotations","negotiations"],["negotatior","negotiator"],["negotatiors","negotiators"],["negotator","negotiator"],["negotators","negotiators"],["negothiable","negotiable"],["negothiate","negotiate"],["negothiated","negotiated"],["negothiates","negotiates"],["negothiating","negotiating"],["negothiation","negotiation"],["negothiations","negotiations"],["negothiator","negotiator"],["negothiators","negotiators"],["negotible","negotiable"],["negoticable","negotiable"],["negoticate","negotiate"],["negoticated","negotiated"],["negoticates","negotiates"],["negoticating","negotiating"],["negotication","negotiation"],["negotications","negotiations"],["negoticator","negotiator"],["negoticators","negotiators"],["negotinate","negotiate"],["negotioable","negotiable"],["negotioate","negotiate"],["negotioated","negotiated"],["negotioates","negotiates"],["negotioating","negotiating"],["negotioation","negotiation"],["negotioations","negotiations"],["negotioator","negotiator"],["negotioators","negotiators"],["negotioble","negotiable"],["negotion","negotiation"],["negotionable","negotiable"],["negotionate","negotiate"],["negotionated","negotiated"],["negotionates","negotiates"],["negotionating","negotiating"],["negotionation","negotiation"],["negotionations","negotiations"],["negotionator","negotiator"],["negotionators","negotiators"],["negotions","negotiations"],["negotiotable","negotiable"],["negotiotate","negotiate"],["negotiotated","negotiated"],["negotiotates","negotiates"],["negotiotating","negotiating"],["negotiotation","negotiation"],["negotiotations","negotiations"],["negotiotator","negotiator"],["negotiotators","negotiators"],["negotiote","negotiate"],["negotioted","negotiated"],["negotiotes","negotiates"],["negotioting","negotiating"],["negotiotion","negotiation"],["negotiotions","negotiations"],["negotiotor","negotiator"],["negotiotors","negotiators"],["negotitable","negotiable"],["negotitae","negotiate"],["negotitaed","negotiated"],["negotitaes","negotiates"],["negotitaing","negotiating"],["negotitaion","negotiation"],["negotitaions","negotiations"],["negotitaor","negotiator"],["negotitaors","negotiators"],["negotitate","negotiate"],["negotitated","negotiated"],["negotitates","negotiates"],["negotitating","negotiating"],["negotitation","negotiation"],["negotitations","negotiations"],["negotitator","negotiator"],["negotitators","negotiators"],["negotite","negotiate"],["negotited","negotiated"],["negotites","negotiates"],["negotiting","negotiating"],["negotition","negotiation"],["negotitions","negotiations"],["negotitor","negotiator"],["negotitors","negotiators"],["negoziable","negotiable"],["negoziate","negotiate"],["negoziated","negotiated"],["negoziates","negotiates"],["negoziating","negotiating"],["negoziation","negotiation"],["negoziations","negotiations"],["negoziator","negotiator"],["negoziators","negotiators"],["negtive","negative"],["neibhbors","neighbors"],["neibhbours","neighbours"],["neibor","neighbor"],["neiborhood","neighborhood"],["neiborhoods","neighborhoods"],["neibors","neighbors"],["neigbhor","neighbor"],["neigbhorhood","neighborhood"],["neigbhorhoods","neighborhoods"],["neigbhors","neighbors"],["neigbhour","neighbour"],["neigbhours","neighbours"],["neigbor","neighbor"],["neigborhood","neighborhood"],["neigboring","neighboring"],["neigbors","neighbors"],["neigbourhood","neighbourhood"],["neighbar","neighbor"],["neighbarhood","neighborhood"],["neighbarhoods","neighborhoods"],["neighbaring","neighboring"],["neighbars","neighbors"],["neighbbor","neighbor"],["neighbborhood","neighborhood"],["neighbborhoods","neighborhoods"],["neighbboring","neighboring"],["neighbbors","neighbors"],["neighbeard","neighborhood"],["neighbeards","neighborhoods"],["neighbehood","neighborhood"],["neighbehoods","neighborhoods"],["neighbeing","neighboring"],["neighbeod","neighborhood"],["neighbeods","neighborhoods"],["neighbeor","neighbor"],["neighbeordhood","neighborhood"],["neighbeordhoods","neighborhoods"],["neighbeorhod","neighborhood"],["neighbeorhods","neighborhoods"],["neighbeorhood","neighborhood"],["neighbeorhoods","neighborhoods"],["neighbeors","neighbors"],["neighber","neighbor"],["neighbergh","neighbor"],["neighberghs","neighbors"],["neighberhhod","neighborhood"],["neighberhhods","neighborhoods"],["neighberhhood","neighborhood"],["neighberhhoods","neighborhoods"],["neighberhing","neighboring"],["neighberhod","neighborhood"],["neighberhodd","neighborhood"],["neighberhodds","neighborhoods"],["neighberhods","neighborhoods"],["neighberhood","neighborhood"],["neighberhooding","neighboring"],["neighberhoods","neighborhoods"],["neighberhoof","neighborhood"],["neighberhoofs","neighborhoods"],["neighberhoood","neighborhood"],["neighberhooods","neighborhoods"],["neighberhoor","neighbor"],["neighberhoors","neighbors"],["neighberhoud","neighborhood"],["neighberhouds","neighborhoods"],["neighbering","neighboring"],["neighbers","neighbors"],["neighbes","neighbors"],["neighbet","neighbor"],["neighbethood","neighborhood"],["neighbethoods","neighborhoods"],["neighbets","neighbors"],["neighbeuing","neighbouring"],["neighbeurgh","neighbour"],["neighbeurghs","neighbours"],["neighbeurhing","neighbouring"],["neighbeurhooding","neighbouring"],["neighbeurhoor","neighbour"],["neighbeurhoors","neighbours"],["neighbeus","neighbours"],["neighbeut","neighbour"],["neighbeuthood","neighbourhood"],["neighbeuthoods","neighbourhoods"],["neighbeuts","neighbours"],["neighbhor","neighbor"],["neighbhorhood","neighborhood"],["neighbhorhoods","neighborhoods"],["neighbhoring","neighboring"],["neighbhors","neighbors"],["neighboard","neighborhood"],["neighboards","neighborhoods"],["neighbohood","neighborhood"],["neighbohoods","neighborhoods"],["neighboing","neighboring"],["neighbood","neighborhood"],["neighboods","neighborhoods"],["neighboordhood","neighborhood"],["neighboordhoods","neighborhoods"],["neighboorhod","neighborhood"],["neighboorhods","neighborhoods"],["neighboorhood","neighborhood"],["neighboorhoods","neighborhoods"],["neighbooring","neighboring"],["neighborgh","neighbor"],["neighborghs","neighbors"],["neighborhhod","neighborhood"],["neighborhhods","neighborhoods"],["neighborhhood","neighborhood"],["neighborhhoods","neighborhoods"],["neighborhing","neighboring"],["neighborhod","neighborhood"],["neighborhodd","neighborhood"],["neighborhodds","neighborhoods"],["neighborhods","neighborhoods"],["neighborhooding","neighboring"],["neighborhoof","neighborhood"],["neighborhoofs","neighborhoods"],["neighborhoood","neighborhood"],["neighborhooods","neighborhoods"],["neighborhoor","neighbor"],["neighborhoors","neighbors"],["neighborhoud","neighborhood"],["neighborhouds","neighborhoods"],["neighbos","neighbors"],["neighbot","neighbor"],["neighbothood","neighborhood"],["neighbothoods","neighborhoods"],["neighbots","neighbors"],["neighbouing","neighbouring"],["neighbourgh","neighbour"],["neighbourghs","neighbours"],["neighbourhhod","neighbourhood"],["neighbourhhods","neighbourhoods"],["neighbourhhood","neighbourhood"],["neighbourhhoods","neighbourhoods"],["neighbourhing","neighbouring"],["neighbourhod","neighbourhood"],["neighbourhodd","neighbourhood"],["neighbourhodds","neighbourhoods"],["neighbourhods","neighbourhoods"],["neighbourhooding","neighbouring"],["neighbourhoof","neighbourhood"],["neighbourhoofs","neighbourhoods"],["neighbourhoood","neighbourhood"],["neighbourhooods","neighbourhoods"],["neighbourhoor","neighbour"],["neighbourhoors","neighbours"],["neighbourhoud","neighbourhood"],["neighbourhouds","neighbourhoods"],["neighbous","neighbours"],["neighbout","neighbour"],["neighbouthood","neighbourhood"],["neighbouthoods","neighbourhoods"],["neighbouts","neighbours"],["neighbr","neighbor"],["neighbrs","neighbors"],["neighbur","neighbor"],["neighburhood","neighborhood"],["neighburhoods","neighborhoods"],["neighburing","neighboring"],["neighburs","neighbors"],["neigher","neither"],["neighobr","neighbor"],["neighobrhood","neighborhood"],["neighobrhoods","neighborhoods"],["neighobring","neighboring"],["neighobrs","neighbors"],["neighor","neighbor"],["neighorhood","neighborhood"],["neighorhoods","neighborhoods"],["neighoring","neighboring"],["neighors","neighbors"],["neighour","neighbour"],["neighourhood","neighbourhood"],["neighourhoods","neighbourhoods"],["neighouring","neighbouring"],["neighours","neighbours"],["neighror","neighbour"],["neighrorhood","neighbourhood"],["neighrorhoods","neighbourhoods"],["neighroring","neighbouring"],["neighrors","neighbours"],["neighrour","neighbour"],["neighrourhood","neighbourhood"],["neighrourhoods","neighbourhoods"],["neighrouring","neighbouring"],["neighrours","neighbours"],["neight","neither"],["neightbor","neighbor"],["neightborhood","neighborhood"],["neightborhoods","neighborhoods"],["neightboring","neighboring"],["neightbors","neighbors"],["neightbour","neighbour"],["neightbourhood","neighbourhood"],["neightbourhoods","neighbourhoods"],["neightbouring","neighbouring"],["neightbours","neighbours"],["neighter","neither"],["neightobr","neighbor"],["neightobrhood","neighborhood"],["neightobrhoods","neighborhoods"],["neightobring","neighboring"],["neightobrs","neighbors"],["neiter","neither"],["nelink","netlink"],["nenviroment","environment"],["neolitic","neolithic"],["nerver","never"],["nescesaries","necessaries"],["nescesarily","necessarily"],["nescesarrily","necessarily"],["nescesarry","necessary"],["nescessarily","necessarily"],["nescessary","necessary"],["nesesarily","necessarily"],["nessary","necessary"],["nessasarily","necessarily"],["nessasary","necessary"],["nessecarilt","necessarily"],["nessecarily","necessarily"],["nessecarry","necessary"],["nessecary","necessary"],["nesseccarily","necessarily"],["nesseccary","necessary"],["nessesarily","necessarily"],["nessesary","necessary"],["nessessarily","necessarily"],["nessessary","necessary"],["nestin","nesting"],["nestwork","network"],["netacpe","netscape"],["netcape","netscape"],["nethods","methods"],["netiher","neither"],["netowrk","network"],["netowrks","networks"],["netscpe","netscape"],["netwplit","netsplit"],["netwrok","network"],["netwroked","networked"],["netwroks","networks"],["netwrork","network"],["neumeric","numeric"],["nevelope","envelope"],["nevelopes","envelopes"],["nevere","never"],["neveretheless","nevertheless"],["nevers","never"],["neverthless","nevertheless"],["newine","newline"],["newines","newlines"],["newletters","newsletters"],["nework","network"],["neworks","networks"],["newslines","newlines"],["newthon","newton"],["newtork","network"],["Newyorker","New Yorker"],["niear","near"],["niearest","nearest"],["niether","neither"],["nighbor","neighbor"],["nighborhood","neighborhood"],["nighboring","neighboring"],["nighlties","nightlies"],["nighlty","nightly"],["nightfa;;","nightfall"],["nightime","nighttime"],["nimutes","minutes"],["nineth","ninth"],["ninima","minima"],["ninimal","minimal"],["ninimum","minimum"],["ninjs","ninja"],["ninteenth","nineteenth"],["nither","neither"],["nknown","unknown"],["nkow","know"],["nkwo","know"],["nmae","name"],["nned","need"],["nneeded","needed"],["nnumber","number"],["no-overide","no-override"],["nodels","models"],["nodess","nodes"],["nodulated","modulated"],["nofified","notified"],["nofity","notify"],["nohypen","nohyphen"],["nomber","number"],["nombered","numbered"],["nombering","numbering"],["nombers","numbers"],["nomimal","nominal"],["non-alphanumunder","non-alphanumeric"],["non-asii","non-ascii"],["non-assiged","non-assigned"],["non-bloking","non-blocking"],["non-compleeted","non-completed"],["non-complient","non-compliant"],["non-corelated","non-correlated"],["non-existant","non-existent"],["non-exluded","non-excluded"],["non-indentended","non-indented"],["non-inmediate","non-immediate"],["non-inreractive","non-interactive"],["non-instnat","non-instant"],["non-meausure","non-measure"],["non-negatiotiable","non-negotiable"],["non-negatiotiated","non-negotiated"],["non-negativ","non-negative"],["non-negoable","non-negotiable"],["non-negoated","non-negotiated"],["non-negoatiable","non-negotiable"],["non-negoatiated","non-negotiated"],["non-negociable","non-negotiable"],["non-negociated","non-negotiated"],["non-negogtiable","non-negotiable"],["non-negogtiated","non-negotiated"],["non-negoitable","non-negotiable"],["non-negoitated","non-negotiated"],["non-negoptionsotiable","non-negotiable"],["non-negoptionsotiated","non-negotiated"],["non-negosiable","non-negotiable"],["non-negosiated","non-negotiated"],["non-negotable","non-negotiable"],["non-negotaiable","non-negotiable"],["non-negotaiated","non-negotiated"],["non-negotaible","non-negotiable"],["non-negotaited","non-negotiated"],["non-negotated","non-negotiated"],["non-negotatiable","non-negotiable"],["non-negotatiated","non-negotiated"],["non-negotatible","non-negotiable"],["non-negotatied","non-negotiated"],["non-negothiable","non-negotiable"],["non-negothiated","non-negotiated"],["non-negotible","non-negotiable"],["non-negoticable","non-negotiable"],["non-negoticated","non-negotiated"],["non-negotioable","non-negotiable"],["non-negotioated","non-negotiated"],["non-negotioble","non-negotiable"],["non-negotionable","non-negotiable"],["non-negotionated","non-negotiated"],["non-negotiotable","non-negotiable"],["non-negotiotated","non-negotiated"],["non-negotiote","non-negotiated"],["non-negotitable","non-negotiable"],["non-negotitaed","non-negotiated"],["non-negotitated","non-negotiated"],["non-negotited","non-negotiated"],["non-negoziable","non-negotiable"],["non-negoziated","non-negotiated"],["non-priviliged","non-privileged"],["non-referenced-counted","non-reference-counted"],["non-replacable","non-replaceable"],["non-replacalbe","non-replaceable"],["non-reproducable","non-reproducible"],["non-seperable","non-separable"],["non-trasparent","non-transparent"],["non-useful","useless"],["non-usefull","useless"],["non-virutal","non-virtual"],["nonbloking","non-blocking"],["noncombatents","noncombatants"],["noncontigous","non-contiguous"],["nonesense","nonsense"],["nonesensical","nonsensical"],["nonexistance","nonexistence"],["nonexistant","nonexistent"],["nonnegarive","nonnegative"],["nonneighboring","non-neighboring"],["nonsence","nonsense"],["nonsens","nonsense"],["nonseperable","non-separable"],["nonte","note"],["nontheless","nonetheless"],["noo","no"],["noone","no one"],["noralize","normalize"],["noralized","normalized"],["noramal","normal"],["noramalise","normalise"],["noramalised","normalised"],["noramalises","normalises"],["noramalising","normalising"],["noramalize","normalize"],["noramalized","normalized"],["noramalizes","normalizes"],["noramalizing","normalizing"],["noramals","normals"],["noraml","normal"],["norhern","northern"],["norifications","notifications"],["normailzation","normalization"],["normaized","normalized"],["normale","normal"],["normales","normals"],["normaly","normally"],["normalyl","normally"],["normalyly","normally"],["normalysed","normalised"],["normalyy","normally"],["normalyzation","normalization"],["normalyze","normalize"],["normalyzed","normalized"],["normlly","normally"],["normnal","normal"],["normol","normal"],["normolise","normalise"],["normolize","normalize"],["northen","northern"],["northereastern","northeastern"],["nortmally","normally"],["notabley","notably"],["notaion","notation"],["notaly","notably"],["notasion","notation"],["notatin","notation"],["noteable","notable"],["noteably","notably"],["noteboook","notebook"],["noteboooks","notebooks"],["noteriety","notoriety"],["notfication","notification"],["notfications","notifications"],["notfy","notify"],["noth","north"],["nothern","northern"],["nothign","nothing"],["nothigng","nothing"],["nothihg","nothing"],["nothin","nothing"],["nothind","nothing"],["nothink","nothing"],["noticable","noticeable"],["noticably","noticeably"],["notication","notification"],["notications","notifications"],["noticeing","noticing"],["noticiable","noticeable"],["noticible","noticeable"],["notifaction","notification"],["notifactions","notifications"],["notifcation","notification"],["notifcations","notifications"],["notifed","notified"],["notifer","notifier"],["notifes","notifies"],["notifiation","notification"],["notificaction","notification"],["notificaiton","notification"],["notificaitons","notifications"],["notificaton","notification"],["notificatons","notifications"],["notificiation","notification"],["notificiations","notifications"],["notifiy","notify"],["notifiying","notifying"],["notifycation","notification"],["notity","notify"],["notmalize","normalize"],["notmalized","normalized"],["notmutch","notmuch"],["notning","nothing"],["nott","not"],["nottaion","notation"],["nottaions","notations"],["notwhithstanding","notwithstanding"],["noveau","nouveau"],["novemeber","November"],["Novemer","November"],["Novermber","November"],["nowadys","nowadays"],["nowdays","nowadays"],["nowe","now"],["ntification","notification"],["nuber","number"],["nubering","numbering"],["nubmer","number"],["nubmers","numbers"],["nucular","nuclear"],["nuculear","nuclear"],["nuisanse","nuisance"],["nuissance","nuisance"],["nulk","null"],["Nullabour","Nullarbor"],["nulll","null"],["numbber","number"],["numbbered","numbered"],["numbbering","numbering"],["numbbers","numbers"],["numberal","numeral"],["numberals","numerals"],["numberic","numeric"],["numberous","numerous"],["numberr","number"],["numberred","numbered"],["numberring","numbering"],["numberrs","numbers"],["numberss","numbers"],["numbert","number"],["numbet","number"],["numbets","numbers"],["numbres","numbers"],["numearate","numerate"],["numearation","numeration"],["numeber","number"],["numebering","numbering"],["numebers","numbers"],["numebr","number"],["numebrs","numbers"],["numer","number"],["numeraotr","numerator"],["numerbering","numbering"],["numercial","numerical"],["numercially","numerically"],["numering","numbering"],["numers","numbers"],["nummber","number"],["nummbers","numbers"],["nummeric","numeric"],["numnber","number"],["numnbered","numbered"],["numnbering","numbering"],["numnbers","numbers"],["numner","number"],["numners","numbers"],["numver","number"],["numvers","numbers"],["nunber","number"],["nunbers","numbers"],["Nuremburg","Nuremberg"],["nusance","nuisance"],["nutritent","nutrient"],["nutritents","nutrients"],["nuturing","nurturing"],["nwe","new"],["nwo","now"],["o'caml","OCaml"],["oaram","param"],["obay","obey"],["obect","object"],["obediance","obedience"],["obediant","obedient"],["obejct","object"],["obejcted","objected"],["obejction","objection"],["obejctions","objections"],["obejctive","objective"],["obejctively","objectively"],["obejctives","objectives"],["obejcts","objects"],["obeject","object"],["obejection","objection"],["obejects","objects"],["oberflow","overflow"],["oberflowed","overflowed"],["oberflowing","overflowing"],["oberflows","overflows"],["oberv","observe"],["obervant","observant"],["obervation","observation"],["obervations","observations"],["oberve","observe"],["oberved","observed"],["oberver","observer"],["obervers","observers"],["oberves","observes"],["oberving","observing"],["obervs","observes"],["obeservation","observation"],["obeservations","observations"],["obeserve","observe"],["obeserved","observed"],["obeserver","observer"],["obeservers","observers"],["obeserves","observes"],["obeserving","observing"],["obession","obsession"],["obessions","obsessions"],["obgect","object"],["obgects","objects"],["obhect","object"],["obhectification","objectification"],["obhectifies","objectifies"],["obhectify","objectify"],["obhectifying","objectifying"],["obhecting","objecting"],["obhection","objection"],["obhects","objects"],["obious","obvious"],["obiously","obviously"],["obivous","obvious"],["obivously","obviously"],["objec","object"],["objecs","objects"],["objectss","objects"],["objejct","object"],["objekt","object"],["objet","object"],["objetc","object"],["objetcs","objects"],["objets","objects"],["objtain","obtain"],["objtained","obtained"],["objtains","obtains"],["objump","objdump"],["oblitque","oblique"],["obnject","object"],["obscur","obscure"],["obselete","obsolete"],["obseravtion","observation"],["obseravtions","observations"],["observ","observe"],["observered","observed"],["obsevrer","observer"],["obsevrers","observers"],["obsolate","obsolete"],["obsolesence","obsolescence"],["obsolite","obsolete"],["obsolited","obsoleted"],["obsolte","obsolete"],["obsolted","obsoleted"],["obssessed","obsessed"],["obstacal","obstacle"],["obstancles","obstacles"],["obstruced","obstructed"],["obsure","obscure"],["obtaiend","obtained"],["obtaiens","obtains"],["obtainig","obtaining"],["obtaion","obtain"],["obtaioned","obtained"],["obtaions","obtains"],["obtrain","obtain"],["obtrained","obtained"],["obtrains","obtains"],["obusing","abusing"],["obvioulsy","obviously"],["obvisious","obvious"],["obvisous","obvious"],["obvisously","obviously"],["obyect","object"],["obyekt","object"],["ocasion","occasion"],["ocasional","occasional"],["ocasionally","occasionally"],["ocasionaly","occasionally"],["ocasioned","occasioned"],["ocasions","occasions"],["ocassion","occasion"],["ocassional","occasional"],["ocassionally","occasionally"],["ocassionaly","occasionally"],["ocassioned","occasioned"],["ocassions","occasions"],["occaisionally","occasionally"],["occaison","occasion"],["occasinal","occasional"],["occasinally","occasionally"],["occasioanlly","occasionally"],["occasionaly","occasionally"],["occassion","occasion"],["occassional","occasional"],["occassionally","occasionally"],["occassionaly","occasionally"],["occassioned","occasioned"],["occassions","occasions"],["occational","occasional"],["occationally","occasionally"],["occcur","occur"],["occcured","occurred"],["occcurs","occurs"],["occour","occur"],["occoured","occurred"],["occouring","occurring"],["occourring","occurring"],["occours","occurs"],["occrrance","occurrence"],["occrrances","occurrences"],["occrred","occurred"],["occrring","occurring"],["occsionally","occasionally"],["occucence","occurrence"],["occucences","occurrences"],["occulusion","occlusion"],["occuped","occupied"],["occupided","occupied"],["occuracy","accuracy"],["occurance","occurrence"],["occurances","occurrences"],["occurately","accurately"],["occurded","occurred"],["occured","occurred"],["occurence","occurrence"],["occurences","occurrences"],["occures","occurs"],["occuring","occurring"],["occurr","occur"],["occurrance","occurrence"],["occurrances","occurrences"],["occurrencs","occurrences"],["occurrs","occurs"],["oclock","o'clock"],["ocntext","context"],["ocorrence","occurrence"],["ocorrences","occurrences"],["octect","octet"],["octects","octets"],["octohedra","octahedra"],["octohedral","octahedral"],["octohedron","octahedron"],["ocuntries","countries"],["ocuntry","country"],["ocupied","occupied"],["ocupies","occupies"],["ocupy","occupy"],["ocupying","occupying"],["ocur","occur"],["ocurr","occur"],["ocurrance","occurrence"],["ocurred","occurred"],["ocurrence","occurrence"],["ocurrences","occurrences"],["ocurring","occurring"],["ocurrred","occurred"],["ocurrs","occurs"],["odly","oddly"],["ody","body"],["oen","one"],["ofcource","of course"],["offcers","officers"],["offcial","official"],["offcially","officially"],["offcials","officials"],["offerd","offered"],["offereings","offerings"],["offest","offset"],["offests","offsets"],["offfence","offence"],["offfences","offences"],["offfense","offense"],["offfenses","offenses"],["offfset","offset"],["offfsets","offsets"],["offic","office"],["offical","official"],["offically","officially"],["officals","officials"],["officaly","officially"],["officeal","official"],["officeally","officially"],["officeals","officials"],["officealy","officially"],["officialy","officially"],["offloded","offloaded"],["offred","offered"],["offsence","offence"],["offsense","offense"],["offsenses","offenses"],["offser","offset"],["offseted","offsetted"],["offseting","offsetting"],["offsetp","offset"],["offsett","offset"],["offstets","offsets"],["offten","often"],["oficial","official"],["oficially","officially"],["ofmodule","of module"],["ofo","of"],["ofrom","from"],["ofsetted","offsetted"],["ofsset","offset"],["oftenly","often"],["ofthe","of the"],["oherwise","otherwise"],["ohter","other"],["ohters","others"],["ohterwise","otherwise"],["oigin","origin"],["oiginal","original"],["oiginally","originally"],["oiginals","originals"],["oiginating","originating"],["oigins","origins"],["ois","is"],["ojbect","object"],["oje","one"],["oject","object"],["ojection","objection"],["ojective","objective"],["ojects","objects"],["ojekts","objects"],["okat","okay"],["oldes","oldest"],["olny","only"],["olt","old"],["olther","other"],["oly","only"],["omision","omission"],["omited","omitted"],["omiting","omitting"],["omitt","omit"],["omlette","omelette"],["ommision","omission"],["ommission","omission"],["ommit","omit"],["ommited","omitted"],["ommiting","omitting"],["ommits","omits"],["ommitted","omitted"],["ommitting","omitting"],["omniverous","omnivorous"],["omniverously","omnivorously"],["omplementaion","implementation"],["omplementation","implementation"],["omre","more"],["onchage","onchange"],["ond","one"],["one-dimenional","one-dimensional"],["one-dimenionsal","one-dimensional"],["onece","once"],["onedimenional","one-dimensional"],["onedimenionsal","one-dimensional"],["oneliners","one-liners"],["oneyway","oneway"],["ongly","only"],["onl","only"],["onliene","online"],["onlly","only"],["onlye","only"],["onlyonce","only once"],["onoly","only"],["onother","another"],["ons","owns"],["onself","oneself"],["ontain","contain"],["ontained","contained"],["ontainer","container"],["ontainers","containers"],["ontainging","containing"],["ontaining","containing"],["ontainor","container"],["ontainors","containers"],["ontains","contains"],["ontext","context"],["onthe","on the"],["ontop","on top"],["ontrolled","controlled"],["onw","own"],["onwed","owned"],["onwer","owner"],["onwership","ownership"],["onwing","owning"],["onws","owns"],["onyl","only"],["oommits","commits"],["ooutput","output"],["ooutputs","outputs"],["opactity","opacity"],["opactiy","opacity"],["opacy","opacity"],["opague","opaque"],["opatque","opaque"],["opbject","object"],["opbjective","objective"],["opbjects","objects"],["opeaaration","operation"],["opeaarations","operations"],["opeabcration","operation"],["opeabcrations","operations"],["opearand","operand"],["opearands","operands"],["opearate","operate"],["opearates","operates"],["opearating","operating"],["opearation","operation"],["opearations","operations"],["opearatios","operations"],["opearator","operator"],["opearators","operators"],["opearion","operation"],["opearions","operations"],["opearios","operations"],["opeariton","operation"],["opearitons","operations"],["opearitos","operations"],["opearnd","operand"],["opearnds","operands"],["opearor","operator"],["opearors","operators"],["opearte","operate"],["opearted","operated"],["opeartes","operates"],["opearting","operating"],["opeartion","operation"],["opeartions","operations"],["opeartios","operations"],["opeartor","operator"],["opeartors","operators"],["opeate","operate"],["opeates","operates"],["opeation","operation"],["opeational","operational"],["opeations","operations"],["opeatios","operations"],["opeator","operator"],["opeators","operators"],["opeatror","operator"],["opeatrors","operators"],["opeg","open"],["opeging","opening"],["opeing","opening"],["opeinging","opening"],["opeings","openings"],["opem","open"],["opemed","opened"],["opemess","openness"],["opeming","opening"],["opems","opens"],["openbrower","openbrowser"],["opended","opened"],["openeing","opening"],["openend","opened"],["openened","opened"],["openening","opening"],["openess","openness"],["openin","opening"],["openned","opened"],["openning","opening"],["operaand","operand"],["operaands","operands"],["operaion","operation"],["operaions","operations"],["operaiton","operation"],["operandes","operands"],["operaror","operator"],["operatation","operation"],["operatations","operations"],["operater","operator"],["operatings","operating"],["operatio","operation"],["operatione","operation"],["operatior","operator"],["operatng","operating"],["operato","operator"],["operaton","operation"],["operatons","operations"],["operattion","operation"],["operattions","operations"],["opereation","operation"],["opertaion","operation"],["opertaions","operations"],["opertion","operation"],["opertional","operational"],["opertions","operations"],["opertor","operator"],["opertors","operators"],["opetional","optional"],["ophan","orphan"],["ophtalmology","ophthalmology"],["opion","option"],["opionally","optionally"],["opions","options"],["opitionally","optionally"],["opiton","option"],["opitons","options"],["opject","object"],["opjected","objected"],["opjecteing","objecting"],["opjectification","objectification"],["opjectifications","objectifications"],["opjectified","objectified"],["opjecting","objecting"],["opjection","objection"],["opjections","objections"],["opjective","objective"],["opjectively","objectively"],["opjects","objects"],["opne","open"],["opned","opened"],["opnegroup","opengroup"],["opnssl","openssl"],["oponent","opponent"],["oportunity","opportunity"],["opose","oppose"],["oposed","opposed"],["oposite","opposite"],["oposition","opposition"],["oppenly","openly"],["opperate","operate"],["opperated","operated"],["opperates","operates"],["opperation","operation"],["opperational","operational"],["opperations","operations"],["oppertunist","opportunist"],["oppertunities","opportunities"],["oppertunity","opportunity"],["oppinion","opinion"],["oppinions","opinions"],["opponant","opponent"],["oppononent","opponent"],["opportunisticly","opportunistically"],["opportunistly","opportunistically"],["opportunties","opportunities"],["oppositition","opposition"],["oppossed","opposed"],["opprotunity","opportunity"],["opproximate","approximate"],["opps","oops"],["oppsofite","opposite"],["oppurtunity","opportunity"],["opration","operation"],["oprations","operations"],["opreating","operating"],["opreation","operation"],["opreations","operations"],["opression","oppression"],["opressive","oppressive"],["oprimization","optimization"],["oprimizations","optimizations"],["oprimize","optimize"],["oprimized","optimized"],["oprimizes","optimizes"],["optain","obtain"],["optained","obtained"],["optains","obtains"],["optaionl","optional"],["optening","opening"],["optet","opted"],["opthalmic","ophthalmic"],["opthalmologist","ophthalmologist"],["opthalmology","ophthalmology"],["opthamologist","ophthalmologist"],["optiional","optional"],["optimasation","optimization"],["optimazation","optimization"],["optimial","optimal"],["optimiality","optimality"],["optimisim","optimism"],["optimisitc","optimistic"],["optimisitic","optimistic"],["optimissm","optimism"],["optimitation","optimization"],["optimizaing","optimizing"],["optimizaton","optimization"],["optimizier","optimizer"],["optimiztion","optimization"],["optimiztions","optimizations"],["optimsitic","optimistic"],["optimyze","optimize"],["optimze","optimize"],["optimzie","optimize"],["optin","option"],["optinal","optional"],["optinally","optionally"],["optins","options"],["optio","option"],["optioanl","optional"],["optioin","option"],["optioinal","optional"],["optioins","options"],["optionalliy","optionally"],["optionallly","optionally"],["optionaly","optionally"],["optionel","optional"],["optiones","options"],["optionial","optional"],["optionn","option"],["optionnal","optional"],["optionnally","optionally"],["optionnaly","optionally"],["optionss","options"],["optios","options"],["optismied","optimised"],["optizmied","optimized"],["optmisation","optimisation"],["optmisations","optimisations"],["optmization","optimization"],["optmizations","optimizations"],["optmize","optimize"],["optmized","optimized"],["optoin","option"],["optoins","options"],["optomism","optimism"],["opton","option"],["optonal","optional"],["optonally","optionally"],["optons","options"],["opyion","option"],["opyions","options"],["orcale","oracle"],["orded","ordered"],["orderd","ordered"],["ordert","ordered"],["ording","ordering"],["ordner","order"],["orede","order"],["oredes","orders"],["oreding","ordering"],["oredred","ordered"],["orgamise","organise"],["organim","organism"],["organisaion","organisation"],["organisaions","organisations"],["organistion","organisation"],["organistions","organisations"],["organizaion","organization"],["organizaions","organizations"],["organiztion","organization"],["organiztions","organizations"],["organsiation","organisation"],["organsiations","organisations"],["organsied","organised"],["organsier","organiser"],["organsiers","organisers"],["organsies","organises"],["organsiing","organising"],["organziation","organization"],["organziations","organizations"],["organzied","organized"],["organzier","organizer"],["organziers","organizers"],["organzies","organizes"],["organziing","organizing"],["orgiginal","original"],["orgiginally","originally"],["orgiginals","originals"],["orginal","original"],["orginally","originally"],["orginals","originals"],["orginate","originate"],["orginated","originated"],["orginates","originates"],["orginating","originating"],["orginial","original"],["orginially","originally"],["orginials","originals"],["orginiate","originate"],["orginiated","originated"],["orginiates","originates"],["orgininal","original"],["orgininals","originals"],["orginisation","organisation"],["orginisations","organisations"],["orginised","organised"],["orginization","organization"],["orginizations","organizations"],["orginized","organized"],["orginx","originx"],["orginy","originy"],["orhpan","orphan"],["oriant","orient"],["oriantate","orientate"],["oriantated","orientated"],["oriantation","orientation"],["oridinarily","ordinarily"],["orieation","orientation"],["orieations","orientations"],["orienatate","orientate"],["orienatated","orientated"],["orienatation","orientation"],["orienation","orientation"],["orientaion","orientation"],["orientatied","orientated"],["oriente","oriented"],["orientiation","orientation"],["orientied","oriented"],["orientned","oriented"],["orietation","orientation"],["orietations","orientations"],["origanaly","originally"],["origial","original"],["origially","originally"],["origianal","original"],["origianally","originally"],["origianaly","originally"],["origianl","original"],["origianls","originals"],["origigin","origin"],["origiginal","original"],["origiginally","originally"],["origiginals","originals"],["originaly","originally"],["originial","original"],["originially","originally"],["originiated","originated"],["originiating","originating"],["origininal","original"],["origininate","originate"],["origininated","originated"],["origininates","originates"],["origininating","originating"],["origining","originating"],["originnally","originally"],["origion","origin"],["origional","original"],["origionally","originally"],["orign","origin"],["orignal","original"],["orignally","originally"],["orignate","originate"],["orignated","originated"],["orignates","originates"],["orignial","original"],["orignially","originally"],["origninal","original"],["oringal","original"],["oringally","originally"],["orpan","orphan"],["orpanage","orphanage"],["orpaned","orphaned"],["orpans","orphans"],["orriginal","original"],["orthagnal","orthogonal"],["orthagonal","orthogonal"],["orthagonalize","orthogonalize"],["orthoganal","orthogonal"],["orthoganalize","orthogonalize"],["orthognal","orthogonal"],["orthonormalizatin","orthonormalization"],["ortogonal","orthogonal"],["ortogonality","orthogonality"],["osbscure","obscure"],["osciallator","oscillator"],["oscilate","oscillate"],["oscilated","oscillated"],["oscilating","oscillating"],["oscilator","oscillator"],["oscilliscope","oscilloscope"],["oscilliscopes","oscilloscopes"],["osffset","offset"],["osffsets","offsets"],["osffsetting","offsetting"],["osicllations","oscillations"],["otain","obtain"],["otained","obtained"],["otains","obtains"],["otehr","other"],["otehrwice","otherwise"],["otehrwise","otherwise"],["otehrwize","otherwise"],["oterwice","otherwise"],["oterwise","otherwise"],["oterwize","otherwise"],["othe","other"],["othere","other"],["otherewise","otherwise"],["otherise","otherwise"],["otheriwse","otherwise"],["otherwaise","otherwise"],["otherways","otherwise"],["otherweis","otherwise"],["otherweise","otherwise"],["otherwhere","elsewhere"],["otherwhile","otherwise"],["otherwhise","otherwise"],["otherwice","otherwise"],["otherwide","otherwise"],["otherwis","otherwise"],["otherwize","otherwise"],["otherwordly","otherworldly"],["otherwose","otherwise"],["otherwrite","overwrite"],["otherws","otherwise"],["otherwse","otherwise"],["otherwsie","otherwise"],["otherwsise","otherwise"],["otherwuise","otherwise"],["otherwwise","otherwise"],["otherwyse","otherwise"],["othewice","otherwise"],["othewise","otherwise"],["othewize","otherwise"],["otho","otoh"],["othographic","orthographic"],["othwerise","otherwise"],["othwerwise","otherwise"],["othwhise","otherwise"],["otification","notification"],["otiginal","original"],["otion","option"],["otionally","optionally"],["otions","options"],["otpion","option"],["otpions","options"],["otput","output"],["otu","out"],["oublisher","publisher"],["ouer","outer"],["ouevre","oeuvre"],["oultinenodes","outlinenodes"],["oultiner","outliner"],["oultline","outline"],["oultlines","outlines"],["ountline","outline"],["ouptut","output"],["ouptuted","outputted"],["ouptuting","outputting"],["ouptuts","outputs"],["ouput","output"],["ouputarea","outputarea"],["ouputs","outputs"],["ouputted","outputted"],["ouputting","outputting"],["ourselfes","ourselves"],["ourselfs","ourselves"],["ourselvs","ourselves"],["ouside","outside"],["oustanding","outstanding"],["oustide","outside"],["outbut","output"],["outbuts","outputs"],["outgoign","outgoing"],["outisde","outside"],["outllook","outlook"],["outoign","outgoing"],["outout","output"],["outperfoem","outperform"],["outperfoeming","outperforming"],["outperfom","outperform"],["outperfome","outperform"],["outperfomeing","outperforming"],["outperfoming","outperforming"],["outperfomr","outperform"],["outperfomring","outperforming"],["outpout","output"],["outpouts","outputs"],["outpupt","output"],["outpusts","outputs"],["outputed","outputted"],["outputing","outputting"],["outselves","ourselves"],["outsid","outside"],["outter","outer"],["outtermost","outermost"],["outupt","output"],["outupts","outputs"],["outuput","output"],["outut","output"],["oututs","outputs"],["outweight","outweigh"],["outweights","outweighs"],["ouur","our"],["ouurs","ours"],["oveerun","overrun"],["oveflow","overflow"],["oveflowed","overflowed"],["oveflowing","overflowing"],["oveflows","overflows"],["ovelap","overlap"],["ovelapping","overlapping"],["over-engeneer","over-engineer"],["over-engeneering","over-engineering"],["overaall","overall"],["overal","overall"],["overcompansate","overcompensate"],["overcompansated","overcompensated"],["overcompansates","overcompensates"],["overcompansating","overcompensating"],["overcompansation","overcompensation"],["overcompansations","overcompensations"],["overengeneer","overengineer"],["overengeneering","overengineering"],["overfl","overflow"],["overfow","overflow"],["overfowed","overflowed"],["overfowing","overflowing"],["overfows","overflows"],["overhread","overhead"],["overiddden","overridden"],["overidden","overridden"],["overide","override"],["overiden","overridden"],["overides","overrides"],["overiding","overriding"],["overlaped","overlapped"],["overlaping","overlapping"],["overlapp","overlap"],["overlayed","overlaid"],["overlflow","overflow"],["overlflowed","overflowed"],["overlflowing","overflowing"],["overlflows","overflows"],["overlfow","overflow"],["overlfowed","overflowed"],["overlfowing","overflowing"],["overlfows","overflows"],["overlodaded","overloaded"],["overloded","overloaded"],["overlodes","overloads"],["overlow","overflow"],["overlowing","overflowing"],["overlows","overflows"],["overreidden","overridden"],["overreide","override"],["overreides","overrides"],["overriabled","overridable"],["overriddable","overridable"],["overriddden","overridden"],["overriddes","overrides"],["overridding","overriding"],["overrideable","overridable"],["overriden","overridden"],["overrident","overridden"],["overridiing","overriding"],["overrids","overrides"],["overrriddden","overridden"],["overrridden","overridden"],["overrride","override"],["overrriden","overridden"],["overrrides","overrides"],["overrriding","overriding"],["overrrun","overrun"],["overshaddowed","overshadowed"],["oversubcribe","oversubscribe"],["oversubcribed","oversubscribed"],["oversubcribes","oversubscribes"],["oversubcribing","oversubscribing"],["oversubscibe","oversubscribe"],["oversubscibed","oversubscribed"],["oversubscirbe","oversubscribe"],["oversubscirbed","oversubscribed"],["overthere","over there"],["overun","overrun"],["overvise","otherwise"],["overvize","otherwise"],["overvride","override"],["overvrides","overrides"],["overvrite","overwrite"],["overvrites","overwrites"],["overwelm","overwhelm"],["overwelming","overwhelming"],["overwheliming","overwhelming"],["overwiew","overview"],["overwirte","overwrite"],["overwirting","overwriting"],["overwirtten","overwritten"],["overwise","otherwise"],["overwite","overwrite"],["overwites","overwrites"],["overwitten","overwritten"],["overwize","otherwise"],["overwride","overwrite"],["overwriteable","overwritable"],["overwriten","overwritten"],["overwritren","overwritten"],["overwrittes","overwrites"],["overwrittin","overwriting"],["overwritting","overwriting"],["ovewrite","overwrite"],["ovewrites","overwrites"],["ovewriting","overwriting"],["ovewritten","overwritten"],["ovewrote","overwrote"],["ovride","override"],["ovrides","overrides"],["ovrlapped","overlapped"],["ovrridable","overridable"],["ovrridables","overridables"],["ovrwrt","overwrite"],["ovservable","observable"],["ovservation","observation"],["ovserve","observe"],["ovveride","override"],["ovverridden","overridden"],["ovverride","override"],["ovverrides","overrides"],["ovverriding","overriding"],["owener","owner"],["owerflow","overflow"],["owerflowed","overflowed"],["owerflowing","overflowing"],["owerflows","overflows"],["owership","ownership"],["owervrite","overwrite"],["owervrites","overwrites"],["owerwrite","overwrite"],["owerwrites","overwrites"],["owful","awful"],["ownder","owner"],["ownerhsip","ownership"],["ownner","owner"],["ownward","onward"],["ownwer","owner"],["ownwership","ownership"],["owrk","work"],["owudl","would"],["oxigen","oxygen"],["oximoron","oxymoron"],["oxzillary","auxiliary"],["oyu","you"],["p0enis","penis"],["paackage","package"],["pacakge","package"],["pacakges","packages"],["pacakging","packaging"],["paceholder","placeholder"],["pachage","package"],["paches","patches"],["pacht","patch"],["pachtches","patches"],["pachtes","patches"],["pacjage","package"],["pacjages","packages"],["packacge","package"],["packaeg","package"],["packaege","package"],["packaeges","packages"],["packaegs","packages"],["packag","package"],["packags","packages"],["packaing","packaging"],["packats","packets"],["packege","package"],["packge","package"],["packged","packaged"],["packgement","packaging"],["packges'","packages'"],["packges","packages"],["packgs","packages"],["packhage","package"],["packhages","packages"],["packtes","packets"],["pactch","patch"],["pactched","patched"],["pactches","patches"],["padam","param"],["padds","pads"],["pading","padding"],["paermission","permission"],["paermissions","permissions"],["paeth","path"],["pagagraph","paragraph"],["pahses","phases"],["paide","paid"],["painiting","painting"],["paintile","painttile"],["paintin","painting"],["paitience","patience"],["paiting","painting"],["pakage","package"],["pakageimpl","packageimpl"],["pakages","packages"],["pakcage","package"],["paket","packet"],["pakge","package"],["pakvage","package"],["palatte","palette"],["paleolitic","paleolithic"],["palete","palette"],["paliamentarian","parliamentarian"],["Palistian","Palestinian"],["Palistinian","Palestinian"],["Palistinians","Palestinians"],["pallete","palette"],["pallette","palette"],["palletted","paletted"],["paltette","palette"],["paltform","platform"],["pamflet","pamphlet"],["pamplet","pamphlet"],["paniced","panicked"],["panicing","panicking"],["pannel","panel"],["pannels","panels"],["pantomine","pantomime"],["paoition","position"],["paor","pair"],["Papanicalou","Papanicolaou"],["paradime","paradigm"],["paradym","paradigm"],["paraemeter","parameter"],["paraemeters","parameters"],["paraeters","parameters"],["parafanalia","paraphernalia"],["paragaph","paragraph"],["paragaraph","paragraph"],["paragarapha","paragraph"],["paragarph","paragraph"],["paragarphs","paragraphs"],["paragph","paragraph"],["paragpraph","paragraph"],["paragraphy","paragraph"],["paragrphs","paragraphs"],["parahaps","perhaps"],["paralel","parallel"],["paralelising","parallelising"],["paralelism","parallelism"],["paralelizing","parallelizing"],["paralell","parallel"],["paralelle","parallel"],["paralellism","parallelism"],["paralellization","parallelization"],["paralelly","parallelly"],["paralely","parallelly"],["paralle","parallel"],["parallell","parallel"],["parallely","parallelly"],["paralles","parallels"],["parallization","parallelization"],["parallize","parallelize"],["parallized","parallelized"],["parallizes","parallelizes"],["parallizing","parallelizing"],["paralllel","parallel"],["paralllels","parallels"],["paramameter","parameter"],["paramameters","parameters"],["paramater","parameter"],["paramaters","parameters"],["paramemeter","parameter"],["paramemeters","parameters"],["paramemter","parameter"],["paramemters","parameters"],["paramenet","parameter"],["paramenets","parameters"],["paramenter","parameter"],["paramenters","parameters"],["paramer","parameter"],["paramert","parameter"],["paramerters","parameters"],["paramerts","parameters"],["paramete","parameter"],["parameteras","parameters"],["parameteres","parameters"],["parameterical","parametrical"],["parameterts","parameters"],["parametes","parameters"],["parametised","parametrised"],["parametr","parameter"],["parametre","parameter"],["parametreless","parameterless"],["parametres","parameters"],["parametrs","parameters"],["parametter","parameter"],["parametters","parameters"],["paramss","params"],["paramter","parameter"],["paramterer","parameter"],["paramterers","parameters"],["paramteres","parameters"],["paramterize","parameterize"],["paramterless","parameterless"],["paramters","parameters"],["paramtrical","parametrical"],["parana","piranha"],["paraniac","paranoiac"],["paranoya","paranoia"],["parant","parent"],["parantheses","parentheses"],["paranthesis","parenthesis"],["parants","parents"],["paraphanalia","paraphernalia"],["paraphenalia","paraphernalia"],["pararagraph","paragraph"],["pararaph","paragraph"],["parareter","parameter"],["parargaph","paragraph"],["parargaphs","paragraphs"],["pararmeter","parameter"],["pararmeters","parameters"],["parastic","parasitic"],["parastics","parasitics"],["paratheses","parentheses"],["paratmers","parameters"],["paravirutalisation","paravirtualisation"],["paravirutalise","paravirtualise"],["paravirutalised","paravirtualised"],["paravirutalization","paravirtualization"],["paravirutalize","paravirtualize"],["paravirutalized","paravirtualized"],["parctical","practical"],["parctically","practically"],["pard","part"],["parellelogram","parallelogram"],["parellels","parallels"],["parem","param"],["paremeter","parameter"],["paremeters","parameters"],["paremter","parameter"],["paremters","parameters"],["parenthese","parentheses"],["parenthesed","parenthesized"],["parenthesies","parentheses"],["parenthises","parentheses"],["parenthsis","parenthesis"],["parge","large"],["parial","partial"],["parially","partially"],["paricular","particular"],["paricularly","particularly"],["parisitic","parasitic"],["paritally","partially"],["paritals","partials"],["paritial","partial"],["parition","partition"],["paritioning","partitioning"],["paritions","partitions"],["paritition","partition"],["parititioned","partitioned"],["parititioner","partitioner"],["parititiones","partitions"],["parititioning","partitioning"],["parititions","partitions"],["paritiy","parity"],["parituclar","particular"],["parliment","parliament"],["parmaeter","parameter"],["parmaeters","parameters"],["parmameter","parameter"],["parmameters","parameters"],["parmaters","parameters"],["parmeter","parameter"],["parmeters","parameters"],["parmter","parameter"],["parmters","parameters"],["parnoia","paranoia"],["parnter","partner"],["parntered","partnered"],["parntering","partnering"],["parnters","partners"],["parntership","partnership"],["parnterships","partnerships"],["parrakeets","parakeets"],["parralel","parallel"],["parrallel","parallel"],["parrallell","parallel"],["parrallelly","parallelly"],["parrallely","parallelly"],["parrent","parent"],["parseing","parsing"],["parsering","parsing"],["parsin","parsing"],["parstree","parse tree"],["partaining","pertaining"],["partcular","particular"],["partcularity","particularity"],["partcularly","particularly"],["parth","path"],["partialy","partially"],["particalar","particular"],["particalarly","particularly"],["particale","particle"],["particales","particles"],["partically","partially"],["particals","particles"],["particaluar","particular"],["particaluarly","particularly"],["particalur","particular"],["particalurly","particularly"],["particant","participant"],["particaular","particular"],["particaularly","particularly"],["particaulr","particular"],["particaulrly","particularly"],["particlar","particular"],["particlars","particulars"],["particually","particularly"],["particualr","particular"],["particuar","particular"],["particuarly","particularly"],["particulaly","particularly"],["particularily","particularly"],["particulary","particularly"],["particuliar","particular"],["partifular","particular"],["partiiton","partition"],["partiitoned","partitioned"],["partiitoning","partitioning"],["partiitons","partitions"],["partioned","partitioned"],["partirion","partition"],["partirioned","partitioned"],["partirioning","partitioning"],["partirions","partitions"],["partision","partition"],["partisioned","partitioned"],["partisioning","partitioning"],["partisions","partitions"],["partitial","partial"],["partiticipant","participant"],["partiticipants","participants"],["partiticular","particular"],["partitinioning","partitioning"],["partitioing","partitioning"],["partitiones","partitions"],["partitionned","partitioned"],["partitionning","partitioning"],["partitionns","partitions"],["partitionss","partitions"],["partiton","partition"],["partitoned","partitioned"],["partitoning","partitioning"],["partitons","partitions"],["partiula","particular"],["partiular","particular"],["partiularly","particularly"],["partiulars","particulars"],["pasengers","passengers"],["paser","parser"],["pasesd","passed"],["pash","hash"],["pasitioning","positioning"],["pasive","passive"],["pasre","parse"],["pasred","parsed"],["pasres","parses"],["passerbys","passersby"],["passin","passing"],["passiv","passive"],["passowrd","password"],["passs","pass"],["passsed","passed"],["passsing","passing"],["passthrought","passthrough"],["passthruogh","passthrough"],["passtime","pastime"],["passtrough","passthrough"],["passwird","password"],["passwirds","passwords"],["passwrod","password"],["passwrods","passwords"],["pasteing","pasting"],["pasttime","pastime"],["pastural","pastoral"],["pasword","password"],["paswords","passwords"],["patameter","parameter"],["patameters","parameters"],["patcket","packet"],["patckets","packets"],["patern","pattern"],["paterns","patterns"],["pathalogical","pathological"],["pathame","pathname"],["pathames","pathnames"],["pathane","pathname"],["pathced","patched"],["pathes","paths"],["pathign","pathing"],["pathnme","pathname"],["patholgoical","pathological"],["patial","spatial"],["paticular","particular"],["paticularly","particularly"],["patition","partition"],["pattented","patented"],["pattersn","patterns"],["pavillion","pavilion"],["pavillions","pavilions"],["pa\xEDnt","paint"],["pblisher","publisher"],["pbulisher","publisher"],["peacd","peace"],["peacefuland","peaceful and"],["peacify","pacify"],["peageant","pageant"],["peaple","people"],["peaples","peoples"],["pecentage","percentage"],["pecularities","peculiarities"],["pecularity","peculiarity"],["peculure","peculiar"],["pedestrain","pedestrian"],["peding","pending"],["pedning","pending"],["pefer","prefer"],["peferable","preferable"],["peferably","preferably"],["pefered","preferred"],["peference","preference"],["peferences","preferences"],["peferential","preferential"],["peferentially","preferentially"],["peferred","preferred"],["peferring","preferring"],["pefers","prefers"],["peform","perform"],["peformance","performance"],["peformed","performed"],["peforming","performing"],["pege","page"],["pehaps","perhaps"],["peice","piece"],["peicemeal","piecemeal"],["peices","pieces"],["peirod","period"],["peirodical","periodical"],["peirodicals","periodicals"],["peirods","periods"],["penalities","penalties"],["penality","penalty"],["penatly","penalty"],["pendantic","pedantic"],["pendig","pending"],["pendning","pending"],["penerator","penetrator"],["penisula","peninsula"],["penisular","peninsular"],["pennal","panel"],["pennals","panels"],["penninsula","peninsula"],["penninsular","peninsular"],["pennisula","peninsula"],["Pennyslvania","Pennsylvania"],["pensinula","peninsula"],["pensle","pencil"],["penultimante","penultimate"],["peom","poem"],["peoms","poems"],["peopel","people"],["peopels","peoples"],["peopl","people"],["peotry","poetry"],["pepare","prepare"],["peprocessor","preprocessor"],["per-interpeter","per-interpreter"],["perade","parade"],["peraphs","perhaps"],["percentange","percentage"],["percentanges","percentages"],["percentil","percentile"],["percepted","perceived"],["percetage","percentage"],["percetages","percentages"],["percievable","perceivable"],["percievabley","perceivably"],["percievably","perceivably"],["percieve","perceive"],["percieved","perceived"],["percise","precise"],["percisely","precisely"],["percision","precision"],["perenially","perennially"],["peretrator","perpetrator"],["perfec","perfect"],["perfecct","perfect"],["perfecctly","perfectly"],["perfeclty","perfectly"],["perfecly","perfectly"],["perfectably","perfectly"],["perfer","prefer"],["perferable","preferable"],["perferably","preferably"],["perferance","preference"],["perferances","preferences"],["perferct","perfect"],["perferctly","perfectly"],["perferect","perfect"],["perferectly","perfectly"],["perfered","preferred"],["perference","preference"],["perferences","preferences"],["perferm","perform"],["perfermance","performance"],["perfermances","performances"],["perfermence","performance"],["perfermences","performances"],["perferr","prefer"],["perferrable","preferable"],["perferrably","preferably"],["perferrance","preference"],["perferrances","preferences"],["perferred","preferred"],["perferrence","preference"],["perferrences","preferences"],["perferrm","perform"],["perferrmance","performance"],["perferrmances","performances"],["perferrmence","performance"],["perferrmences","performances"],["perferrs","prefers"],["perfers","prefers"],["perfix","prefix"],["perfmormance","performance"],["perfoem","perform"],["perfoemamce","performance"],["perfoemamces","performances"],["perfoemance","performance"],["perfoemanse","performance"],["perfoemanses","performances"],["perfoemant","performant"],["perfoemative","performative"],["perfoemed","performed"],["perfoemer","performer"],["perfoemers","performers"],["perfoeming","performing"],["perfoemnace","performance"],["perfoemnaces","performances"],["perfoems","performs"],["perfom","perform"],["perfomamce","performance"],["perfomamces","performances"],["perfomance","performance"],["perfomanse","performance"],["perfomanses","performances"],["perfomant","performant"],["perfomative","performative"],["perfome","perform"],["perfomeamce","performance"],["perfomeamces","performances"],["perfomeance","performance"],["perfomeanse","performance"],["perfomeanses","performances"],["perfomeant","performant"],["perfomeative","performative"],["perfomed","performed"],["perfomeed","performed"],["perfomeer","performer"],["perfomeers","performers"],["perfomeing","performing"],["perfomenace","performance"],["perfomenaces","performances"],["perfomer","performer"],["perfomers","performers"],["perfomes","performs"],["perfoming","performing"],["perfomnace","performance"],["perfomnaces","performances"],["perfomr","perform"],["perfomramce","performance"],["perfomramces","performances"],["perfomrance","performance"],["perfomranse","performance"],["perfomranses","performances"],["perfomrant","performant"],["perfomrative","performative"],["perfomred","performed"],["perfomrer","performer"],["perfomrers","performers"],["perfomring","performing"],["perfomrnace","performance"],["perfomrnaces","performances"],["perfomrs","performs"],["perfoms","performs"],["perfor","perform"],["perforam","perform"],["perforamed","performed"],["perforaming","performing"],["perforamnce","performance"],["perforamnces","performances"],["perforams","performs"],["perford","performed"],["perforemd","performed"],["performace","performance"],["performaed","performed"],["performamce","performance"],["performane","performance"],["performence","performance"],["performnace","performance"],["perfors","performs"],["perfro","perform"],["perfrom","perform"],["perfromance","performance"],["perfromed","performed"],["perfroming","performing"],["perfroms","performs"],["perhabs","perhaps"],["perhas","perhaps"],["perhasp","perhaps"],["perheaps","perhaps"],["perhpas","perhaps"],["peridic","periodic"],["perihperal","peripheral"],["perihperals","peripherals"],["perimetre","perimeter"],["perimetres","perimeters"],["periode","period"],["periodicaly","periodically"],["periodioc","periodic"],["peripathetic","peripatetic"],["peripherial","peripheral"],["peripherials","peripherals"],["perisist","persist"],["perisisted","persisted"],["perisistent","persistent"],["peristent","persistent"],["perjery","perjury"],["perjorative","pejorative"],["perlciritc","perlcritic"],["permable","permeable"],["permament","permanent"],["permamently","permanently"],["permanant","permanent"],["permanantly","permanently"],["permanentely","permanently"],["permanenty","permanently"],["permantly","permanently"],["permenant","permanent"],["permenantly","permanently"],["permessioned","permissioned"],["permision","permission"],["permisions","permissions"],["permisison","permission"],["permisisons","permissions"],["permissable","permissible"],["permissiosn","permissions"],["permisson","permission"],["permissons","permissions"],["permisssion","permission"],["permisssions","permissions"],["permited","permitted"],["permition","permission"],["permitions","permissions"],["permmission","permission"],["permmissions","permissions"],["permormance","performance"],["permssion","permission"],["permssions","permissions"],["permuatate","permutate"],["permuatated","permutated"],["permuatates","permutates"],["permuatating","permutating"],["permuatation","permutation"],["permuatations","permutations"],["permuation","permutation"],["permuations","permutations"],["permutaion","permutation"],["permutaions","permutations"],["permution","permutation"],["permutions","permutations"],["peroendicular","perpendicular"],["perogative","prerogative"],["peroid","period"],["peroidic","periodic"],["peroidical","periodical"],["peroidically","periodically"],["peroidicals","periodicals"],["peroidicity","periodicity"],["peroids","periods"],["peronal","personal"],["peroperly","properly"],["perosnality","personality"],["perpandicular","perpendicular"],["perpandicularly","perpendicularly"],["perperties","properties"],["perpertrated","perpetrated"],["perperty","property"],["perphas","perhaps"],["perpindicular","perpendicular"],["perpsective","perspective"],["perpsectives","perspectives"],["perrror","perror"],["persan","person"],["persepctive","perspective"],["persepective","perspective"],["persepectives","perspectives"],["perserve","preserve"],["perserved","preserved"],["perserverance","perseverance"],["perservere","persevere"],["perservered","persevered"],["perserveres","perseveres"],["perservering","persevering"],["perserves","preserves"],["perserving","preserving"],["perseverence","perseverance"],["persisit","persist"],["persisited","persisted"],["persistance","persistence"],["persistant","persistent"],["persistantly","persistently"],["persisten","persistent"],["persistented","persisted"],["persited","persisted"],["persitent","persistent"],["personalitie","personality"],["personalitites","personalities"],["personalitity","personality"],["personalitys","personalities"],["personaly","personally"],["personell","personnel"],["personnal","personal"],["personnaly","personally"],["personnell","personnel"],["perspecitve","perspective"],["persuded","persuaded"],["persue","pursue"],["persued","pursued"],["persuing","pursuing"],["persuit","pursuit"],["persuits","pursuits"],["persumably","presumably"],["perticular","particular"],["perticularly","particularly"],["perticulars","particulars"],["pertrub","perturb"],["pertrubation","perturbation"],["pertrubations","perturbations"],["pertrubing","perturbing"],["pertub","perturb"],["pertubate","perturb"],["pertubated","perturbed"],["pertubates","perturbs"],["pertubation","perturbation"],["pertubations","perturbations"],["pertubing","perturbing"],["perturbate","perturb"],["perturbates","perturbs"],["pervious","previous"],["perviously","previously"],["pessiary","pessary"],["petetion","petition"],["pevent","prevent"],["pevents","prevents"],["pezier","bezier"],["phanthom","phantom"],["Pharoah","Pharaoh"],["phasepsace","phasespace"],["phasis","phases"],["phenomenom","phenomenon"],["phenomenonal","phenomenal"],["phenomenonly","phenomenally"],["phenomonenon","phenomenon"],["phenomonon","phenomenon"],["phenonmena","phenomena"],["pheriparials","peripherals"],["Philipines","Philippines"],["philisopher","philosopher"],["philisophical","philosophical"],["philisophy","philosophy"],["Phillipine","Philippine"],["phillipines","philippines"],["Phillippines","Philippines"],["phillosophically","philosophically"],["philospher","philosopher"],["philosphies","philosophies"],["philosphy","philosophy"],["phisical","physical"],["phisically","physically"],["phisicaly","physically"],["phisics","physics"],["phisosophy","philosophy"],["Phonecian","Phoenecian"],["phoneticly","phonetically"],["phongraph","phonograph"],["phote","photo"],["photografic","photographic"],["photografical","photographical"],["photografy","photography"],["photograpic","photographic"],["photograpical","photographical"],["phsical","physical"],["phsyically","physically"],["phtread","pthread"],["phtreads","pthreads"],["phyiscal","physical"],["phyiscally","physically"],["phyiscs","physics"],["phylosophical","philosophical"],["physcial","physical"],["physial","physical"],["physicaly","physically"],["physisist","physicist"],["phython","python"],["phyton","python"],["phy_interace","phy_interface"],["piblisher","publisher"],["pice","piece"],["picoseond","picosecond"],["picoseonds","picoseconds"],["piggypack","piggyback"],["piggypacked","piggybacked"],["pilgrimmage","pilgrimage"],["pilgrimmages","pilgrimages"],["pimxap","pixmap"],["pimxaps","pixmaps"],["pinapple","pineapple"],["pinnaple","pineapple"],["pinoneered","pioneered"],["piont","point"],["pionter","pointer"],["pionts","points"],["piority","priority"],["pipeine","pipeline"],["pipeines","pipelines"],["pipelien","pipeline"],["pipeliens","pipelines"],["pipelin","pipeline"],["pipelinining","pipelining"],["pipelins","pipelines"],["pipepline","pipeline"],["pipeplines","pipelines"],["pipiline","pipeline"],["pipilines","pipelines"],["pipleine","pipeline"],["pipleines","pipelines"],["pipleline","pipeline"],["piplelines","pipelines"],["pitty","pity"],["pivott","pivot"],["pivotting","pivoting"],["pixes","pixels"],["placeemnt","placement"],["placeemnts","placements"],["placehoder","placeholder"],["placeholde","placeholder"],["placeholdes","placeholders"],["placeholer","placeholder"],["placeholers","placeholders"],["placemenet","placement"],["placemenets","placements"],["placholder","placeholder"],["placholders","placeholders"],["placmenet","placement"],["placmenets","placements"],["plaform","platform"],["plaforms","platforms"],["plaftorm","platform"],["plaftorms","platforms"],["plagarism","plagiarism"],["plalform","platform"],["plalforms","platforms"],["planation","plantation"],["plantext","plaintext"],["plantiff","plaintiff"],["plasement","placement"],["plasements","placements"],["plateu","plateau"],["platfarm","platform"],["platfarms","platforms"],["platfform","platform"],["platfforms","platforms"],["platflorm","platform"],["platflorms","platforms"],["platfoem","platform"],["platfom","platform"],["platfomr","platform"],["platfomrs","platforms"],["platfoms","platforms"],["platform-spacific","platform-specific"],["platforma","platforms"],["platformt","platforms"],["platfrom","platform"],["platfroms","platforms"],["plathome","platform"],["platofmr","platform"],["platofmrs","platforms"],["platofms","platforms"],["platofmss","platforms"],["platoform","platform"],["platoforms","platforms"],["platofrm","platform"],["platofrms","platforms"],["plattform","platform"],["plattforms","platforms"],["plausability","plausibility"],["plausable","plausible"],["playble","playable"],["playge","plague"],["playgerise","plagiarise"],["playgerize","plagiarize"],["playgropund","playground"],["playist","playlist"],["playists","playlists"],["playright","playwright"],["playwrite","playwright"],["playwrites","playwrights"],["plcae","place"],["plcaebo","placebo"],["plcaed","placed"],["plcaeholder","placeholder"],["plcaeholders","placeholders"],["plcaement","placement"],["plcaements","placements"],["plcaes","places"],["pleaase","please"],["pleacing","placing"],["pleae","please"],["pleaee","please"],["pleaes","please"],["pleasd","pleased"],["pleasent","pleasant"],["pleasently","pleasantly"],["plebicite","plebiscite"],["plecing","placing"],["plent","plenty"],["plesae","please"],["plesant","pleasant"],["plese","please"],["plesently","pleasantly"],["pliars","pliers"],["pllatforms","platforms"],["ploted","plotted"],["ploting","plotting"],["ploynomial","polynomial"],["ploynomials","polynomials"],["pltform","platform"],["pltforms","platforms"],["plugable","pluggable"],["pluged","plugged"],["pluign","plugin"],["pluigns","plugins"],["pluse","pulse"],["plyotropy","pleiotropy"],["pobular","popular"],["pobularity","popularity"],["podule","module"],["poenis","penis"],["poential","potential"],["poentially","potentially"],["poentials","potentials"],["poeoples","peoples"],["poeple","people"],["poety","poetry"],["pogress","progress"],["poicies","policies"],["poicy","policy"],["poiint","point"],["poiints","points"],["poind","point"],["poindcloud","pointcloud"],["poiner","pointer"],["poing","point"],["poinits","points"],["poinnter","pointer"],["poins","points"],["pointeres","pointers"],["pointes","points"],["pointetr","pointer"],["pointetrs","pointers"],["pointeur","pointer"],["pointseta","poinsettia"],["pointss","points"],["pointzer","pointer"],["poinyent","poignant"],["poisin","poison"],["poisition","position"],["poisitioned","positioned"],["poisitioning","positioning"],["poisitionning","positioning"],["poisitions","positions"],["poistion","position"],["poistioned","positioned"],["poistioning","positioning"],["poistions","positions"],["poistive","positive"],["poistively","positively"],["poistives","positives"],["poistivly","positively"],["poit","point"],["poitd","pointed"],["poited","pointed"],["poiter","pointer"],["poiters","pointers"],["poiting","pointing"],["poitless","pointless"],["poitlessly","pointlessly"],["poitn","point"],["poitnd","pointed"],["poitned","pointed"],["poitner","pointer"],["poitnes","points"],["poitning","pointing"],["poitns","points"],["poits","points"],["poiunter","pointer"],["poject","project"],["pojecting","projecting"],["pojnt","point"],["pojrect","project"],["pojrected","projected"],["pojrecting","projecting"],["pojrection","projection"],["pojrections","projections"],["pojrector","projector"],["pojrectors","projectors"],["pojrects","projects"],["poket","pocket"],["polariy","polarity"],["polgon","polygon"],["polgons","polygons"],["polical","political"],["policiy","policy"],["poligon","polygon"],["poligons","polygons"],["polinator","pollinator"],["polinators","pollinators"],["politican","politician"],["politicans","politicians"],["politicing","politicking"],["pollenate","pollinate"],["polltry","poultry"],["polocies","policies"],["polocy","policy"],["polocys","policies"],["pologon","polygon"],["pologons","polygons"],["polotic","politic"],["polotical","political"],["polotics","politics"],["poltical","political"],["poltry","poultry"],["polute","pollute"],["poluted","polluted"],["polutes","pollutes"],["poluting","polluting"],["polution","pollution"],["polyar","polar"],["polyedral","polyhedral"],["polygond","polygons"],["polygone","polygon"],["polymorpic","polymorphic"],["polynomal","polynomial"],["polynomals","polynomials"],["polyphonyic","polyphonic"],["polypoygon","polypolygon"],["polypoylgons","polypolygons"],["polysaccaride","polysaccharide"],["polysaccharid","polysaccharide"],["pomegranite","pomegranate"],["pomotion","promotion"],["pompay","Pompeii"],["ponint","point"],["poninted","pointed"],["poninter","pointer"],["poninting","pointing"],["ponints","points"],["ponit","point"],["ponitd","pointed"],["ponited","pointed"],["poniter","pointer"],["poniters","pointers"],["ponits","points"],["pont","point"],["pontential","potential"],["ponter","pointer"],["ponting","pointing"],["ponts","points"],["pontuation","punctuation"],["pooint","point"],["poointed","pointed"],["poointer","pointer"],["pooints","points"],["poost","post"],["poperee","potpourri"],["poperties","properties"],["popoen","popen"],["popolate","populate"],["popolated","populated"],["popolates","populates"],["popolating","populating"],["poportional","proportional"],["popoulation","population"],["popoup","popup"],["poppup","popup"],["popularaty","popularity"],["populare","popular"],["populer","popular"],["popullate","populate"],["popullated","populated"],["popuplar","popular"],["popuplarity","popularity"],["popuplate","populate"],["popuplated","populated"],["popuplates","populates"],["popuplating","populating"],["popuplation","population"],["porbably","probably"],["porblem","problem"],["porblems","problems"],["porcess","process"],["porcessed","processed"],["porcesses","processes"],["porcessing","processing"],["porcessor","processor"],["porcessors","processors"],["porgram","program"],["porgrammeer","programmer"],["porgrammeers","programmers"],["porgramming","programming"],["porgrams","programs"],["poriferal","peripheral"],["porject","project"],["porjection","projection"],["porjects","projects"],["porotocol","protocol"],["porotocols","protocols"],["porperties","properties"],["porperty","property"],["porportion","proportion"],["porportional","proportional"],["porportionally","proportionally"],["porportioning","proportioning"],["porportions","proportions"],["porsalin","porcelain"],["porshan","portion"],["porshon","portion"],["portait","portrait"],["portaits","portraits"],["portayed","portrayed"],["portected","protected"],["portguese","Portuguese"],["portioon","portion"],["portraing","portraying"],["portugese","Portuguese"],["portuguease","Portuguese"],["portugues","Portuguese"],["porve","prove"],["porved","proved"],["porven","proven"],["porves","proves"],["porvide","provide"],["porvided","provided"],["porvider","provider"],["porvides","provides"],["porviding","providing"],["porvids","provides"],["porving","proving"],["posative","positive"],["posatives","positives"],["posativity","positivity"],["poseesions","possessions"],["posess","possess"],["posessed","possessed"],["posesses","possesses"],["posessing","possessing"],["posession","possession"],["posessions","possessions"],["posibilities","possibilities"],["posibility","possibility"],["posibilties","possibilities"],["posible","possible"],["posiblity","possibility"],["posibly","possibly"],["posiitive","positive"],["posiitives","positives"],["posiitivity","positivity"],["posisition","position"],["posisitioned","positioned"],["posistion","position"],["positionn","position"],["positionned","positioned"],["positionnes","positions"],["positionning","positioning"],["positionns","positions"],["positiv","positive"],["positivie","positive"],["positivies","positives"],["positivly","positively"],["positoin","position"],["positoined","positioned"],["positoins","positions"],["positonal","positional"],["positoned","positioned"],["positoning","positioning"],["positve","positive"],["positves","positives"],["POSIX-complient","POSIX-compliant"],["pospone","postpone"],["posponed","postponed"],["posption","position"],["possabilites","possibilities"],["possabilities","possibilities"],["possability","possibility"],["possabilties","possibilities"],["possabily","possibly"],["possable","possible"],["possably","possibly"],["possbily","possibly"],["possble","possible"],["possbly","possibly"],["posseses","possesses"],["possesing","possessing"],["possesion","possession"],["possesive","possessive"],["possessess","possesses"],["possiable","possible"],["possibbe","possible"],["possibe","possible"],["possibile","possible"],["possibilies","possibilities"],["possibilites","possibilities"],["possibilitities","possibilities"],["possibiliy","possibility"],["possibillity","possibility"],["possibilties","possibilities"],["possibilty","possibility"],["possibily","possibly"],["possibities","possibilities"],["possibity","possibility"],["possiblble","possible"],["possiblec","possible"],["possiblely","possibly"],["possiblility","possibility"],["possiblilty","possibility"],["possiblities","possibilities"],["possiblity","possibility"],["possiblly","possibly"],["possilbe","possible"],["possily","possibly"],["possition","position"],["possitive","positive"],["possitives","positives"],["possobily","possibly"],["possoble","possible"],["possobly","possibly"],["posssible","possible"],["post-morten","post-mortem"],["post-proces","post-process"],["post-procesing","post-processing"],["postcondtion","postcondition"],["postcondtions","postconditions"],["Postdam","Potsdam"],["postgress","PostgreSQL"],["postgressql","PostgreSQL"],["postgrsql","PostgreSQL"],["posthomous","posthumous"],["postiional","positional"],["postiive","positive"],["postincremend","postincrement"],["postion","position"],["postioned","positioned"],["postions","positions"],["postition","position"],["postitive","positive"],["postitives","positives"],["postive","positive"],["postives","positives"],["postmage","postimage"],["postphoned","postponed"],["postpocessing","postprocessing"],["postponinig","postponing"],["postprocesing","postprocessing"],["postscritp","postscript"],["postulat","postulate"],["postuminus","posthumous"],["postumus","posthumous"],["potatoe","potato"],["potatos","potatoes"],["potencial","potential"],["potencially","potentially"],["potencials","potentials"],["potenial","potential"],["potenially","potentially"],["potentail","potential"],["potentailly","potentially"],["potentails","potentials"],["potental","potential"],["potentally","potentially"],["potentatially","potentially"],["potententially","potentially"],["potentiallly","potentially"],["potentialy","potentially"],["potentiel","potential"],["potentiomenter","potentiometer"],["potition","position"],["potocol","protocol"],["potrait","portrait"],["potrayed","portrayed"],["poulations","populations"],["pount","point"],["pounts","points"],["poupular","popular"],["poverful","powerful"],["poweful","powerful"],["powerfull","powerful"],["powerppc","powerpc"],["pozitive","positive"],["pozitively","positively"],["pozitives","positives"],["ppcheck","cppcheck"],["ppeline","pipeline"],["ppelines","pipelines"],["ppolygons","polygons"],["ppublisher","publisher"],["ppyint","pyint"],["praameter","parameter"],["praameters","parameters"],["prabability","probability"],["prabable","probable"],["prabably","probably"],["pracitcal","practical"],["pracitcally","practically"],["practial","practical"],["practially","practically"],["practicaly","practically"],["practicioner","practitioner"],["practicioners","practitioners"],["practicly","practically"],["practictitioner","practitioner"],["practictitioners","practitioners"],["practicval","practical"],["practioner","practitioner"],["practioners","practitioners"],["praefix","prefix"],["pragam","pragma"],["pragmato","pragma to"],["prairy","prairie"],["pramater","parameter"],["prameter","parameter"],["prameters","parameters"],["prarameter","parameter"],["prarameters","parameters"],["prarie","prairie"],["praries","prairies"],["pratical","practical"],["pratically","practically"],["pratice","practice"],["prcess","process"],["prcesses","processes"],["prcessing","processing"],["prcoess","process"],["prcoessed","processed"],["prcoesses","processes"],["prcoessing","processing"],["prctiles","percentiles"],["prdpagate","propagate"],["prdpagated","propagated"],["prdpagates","propagates"],["prdpagating","propagating"],["prdpagation","propagation"],["prdpagations","propagations"],["prdpagator","propagator"],["prdpagators","propagators"],["pre-condifure","pre-configure"],["pre-condifured","pre-configured"],["pre-confifure","pre-configure"],["pre-confifured","pre-configured"],["pre-confure","pre-configure"],["pre-confured","pre-configured"],["pre-congifure","pre-configure"],["pre-congifured","pre-configured"],["pre-defiend","pre-defined"],["pre-defiened","pre-defined"],["pre-empt","preempt"],["pre-pended","prepended"],["pre-pre-realease","pre-pre-release"],["pre-proces","pre-process"],["pre-procesing","pre-processing"],["pre-realease","pre-release"],["pre-registeres","pre-registers"],["prealocate","preallocate"],["prealocated","preallocated"],["prealocates","preallocates"],["prealocating","preallocating"],["preambule","preamble"],["preamle","preamble"],["preample","preamble"],["preaorocessing","preprocessing"],["preapared","prepared"],["preapre","prepare"],["preaprooved","preapproved"],["prebious","previous"],["precacheed","precached"],["precceding","preceding"],["precding","preceding"],["preced","precede"],["precedencs","precedence"],["precedessor","predecessor"],["preceds","precedes"],["preceision","precision"],["precence","presence"],["precendance","precedence"],["precendances","precedences"],["precende","precedence"],["precendece","precedence"],["precendeces","precedences"],["precendence","precedence"],["precendences","precedences"],["precendencies","precedences"],["precendent","precedent"],["precendes","precedences"],["precending","preceding"],["precends","precedence"],["precenences","preferences"],["precense","presence"],["precentage","percentage"],["precentile","percentile"],["precentiles","percentiles"],["precessing","processing"],["precice","precise"],["precicion","precision"],["precidence","precedence"],["precisily","precisely"],["precisionn","precision"],["precisision","precision"],["precisly","precisely"],["precison","precision"],["precize","precise"],["precomuted","precomputed"],["preconditoner","preconditioner"],["preconditoners","preconditioners"],["precondtion","precondition"],["precondtioner","preconditioner"],["precondtioners","preconditioners"],["precondtionner","preconditioner"],["precondtionners","preconditioners"],["precondtions","preconditions"],["preconfiged","preconfigured"],["precsions","precisions"],["precuation","precaution"],["preculde","preclude"],["preculded","precluded"],["preculdes","precludes"],["precumputed","precomputed"],["precurser","precursor"],["precussion","percussion"],["precussions","percussions"],["predecesor","predecessor"],["predecesors","predecessors"],["predeclarnig","predeclaring"],["predefiend","predefined"],["predefiened","predefined"],["predefiined","predefined"],["predefineds","predefined"],["predessor","predecessor"],["predfined","predefined"],["predicat","predicate"],["predicatble","predictable"],["predicitons","predictions"],["predictible","predictable"],["predifined","predefined"],["predomiantly","predominately"],["preeceding","preceding"],["preemptable","preemptible"],["preesnt","present"],["prefectches","prefetches"],["prefecth","prefetch"],["prefectly","perfectly"],["prefence","preference"],["prefences","preferences"],["preferance","preference"],["preferances","preferences"],["preferecne","preference"],["preferecnes","preferences"],["prefered","preferred"],["preferencfe","preference"],["preferencfes","preferences"],["preferes","prefers"],["prefering","preferring"],["prefernce","preference"],["prefernces","preferences"],["prefernec","preference"],["preferr","prefer"],["preferrable","preferable"],["preferrably","preferably"],["preferrence","preference"],["preferrences","preferences"],["preferrred","preferred"],["prefetchs","prefetches"],["prefex","prefix"],["preffer","prefer"],["prefferable","preferable"],["prefferably","preferably"],["preffered","preferred"],["preffix","prefix"],["preffixed","prefixed"],["preffixes","prefixes"],["preffixing","prefixing"],["prefices","prefixes"],["preformance","performance"],["preformances","performances"],["pregancies","pregnancies"],["prehaps","perhaps"],["preiod","period"],["preivew","preview"],["preivous","previous"],["prejected","projected"],["prejection","projection"],["prejections","projections"],["preliferation","proliferation"],["prelimitary","preliminary"],["premeire","premiere"],["premeired","premiered"],["premillenial","premillennial"],["preminence","preeminence"],["premission","permission"],["premit","permit"],["premits","permits"],["Premonasterians","Premonstratensians"],["premption","preemption"],["premptive","preemptive"],["premptively","preemptively"],["preocess","process"],["preocupation","preoccupation"],["preoperty","property"],["prepair","prepare"],["prepaired","prepared"],["prepand","prepend"],["preparetion","preparation"],["preparetions","preparations"],["prepartion","preparation"],["prepartions","preparations"],["prepate","prepare"],["prepated","prepared"],["prepates","prepares"],["prepatory","preparatory"],["prependet","prepended"],["prepented","prepended"],["preperation","preparation"],["preperations","preparations"],["preponderence","preponderance"],["preppend","prepend"],["preppended","prepended"],["preppendet","prepended"],["preppented","prepended"],["preprend","prepend"],["preprended","prepended"],["prepresent","represent"],["prepresented","represented"],["prepresents","represents"],["preproces","preprocess"],["preprocesing","preprocessing"],["preprocesor","preprocessor"],["preprocesser","preprocessor"],["preprocessers","preprocessors"],["preprocesssing","preprocessing"],["prequisite","prerequisite"],["prequisites","prerequisites"],["prerequesite","prerequisite"],["prerequesites","prerequisites"],["prerequisit","prerequisite"],["prerequisities","prerequisites"],["prerequisits","prerequisites"],["prerequiste","prerequisite"],["prerequsite","prerequisite"],["prerequsites","prerequisites"],["preriod","period"],["preriodic","periodic"],["prersistent","persistent"],["presance","presence"],["prescripe","prescribe"],["prescriped","prescribed"],["prescrition","prescription"],["prescritions","prescriptions"],["presearvation","preservation"],["presearvations","preservations"],["presearve","preserve"],["presearved","preserved"],["presearver","preserver"],["presearves","preserves"],["presearving","preserving"],["presedential","presidential"],["presenece","presence"],["presener","presenter"],["presense","presence"],["presentaion","presentation"],["presentaional","presentational"],["presentaions","presentations"],["presernt","present"],["preserrved","preserved"],["preserv","preserve"],["presetation","presentation"],["preseve","preserve"],["preseved","preserved"],["preseverance","perseverance"],["preseverence","perseverance"],["preseves","preserves"],["preseving","preserving"],["presicion","precision"],["presidenital","presidential"],["presidental","presidential"],["presist","persist"],["presistable","persistable"],["presistance","persistence"],["presistant","persistent"],["presistantly","persistently"],["presisted","persisted"],["presistence","persistence"],["presistency","persistency"],["presistent","persistent"],["presistently","persistently"],["presisting","persisting"],["presistion","precision"],["presists","persists"],["presitgious","prestigious"],["presmissions","permissions"],["presntation","presentation"],["presntations","presentations"],["prespective","perspective"],["presreved","preserved"],["pressent","present"],["pressentation","presentation"],["pressented","presented"],["pressre","pressure"],["pressue","pressure"],["pressues","pressures"],["prestigeous","prestigious"],["prestigous","prestigious"],["presuambly","presumably"],["presumabely","presumably"],["presumaby","presumably"],["presumebly","presumably"],["presumely","presumably"],["presumibly","presumably"],["pretaining","pertaining"],["pretect","protect"],["pretected","protected"],["pretecting","protecting"],["pretection","protection"],["pretects","protects"],["pretendend","pretended"],["pretty-printter","pretty-printer"],["preveiw","preview"],["preveiwed","previewed"],["preveiwer","previewer"],["preveiwers","previewers"],["preveiws","previews"],["prevelance","prevalence"],["prevelant","prevalent"],["preven","prevent"],["prevend","prevent"],["preverse","perverse"],["preverses","preserves"],["preverve","preserve"],["prevew","preview"],["prevews","previews"],["previewd","previewed"],["previious","previous"],["previlege","privilege"],["previoous","previous"],["previos","previous"],["previosly","previously"],["previosu","previous"],["previosuly","previously"],["previou","previous"],["previouls","previous"],["previoulsy","previously"],["previouly","previously"],["previouse","previous"],["previousl","previously"],["previousy","previously"],["previsou","previous"],["previsouly","previously"],["previuous","previous"],["previus","previous"],["previvous","previous"],["prevoius","previous"],["prevous","previous"],["prevously","previously"],["prewview","preview"],["prexisting","preexisting"],["prexixed","prefixed"],["prfer","prefer"],["prferable","preferable"],["prferables","preferable"],["prference","preference"],["prferred","preferred"],["prgram","program"],["priave","private"],["pricipal","principal"],["priciple","principle"],["priciples","principles"],["pricision","precision"],["priestood","priesthood"],["primaray","primary"],["primarely","primarily"],["primarly","primarily"],["primative","primitive"],["primatively","primitively"],["primatives","primitives"],["primay","primary"],["primeter","perimeter"],["primitave","primitive"],["primitiv","primitive"],["primitve","primitive"],["primitves","primitives"],["primive","primitive"],["primordal","primordial"],["princeple","principle"],["princeples","principles"],["princible","principle"],["principaly","principality"],["principial","principal"],["principlaity","principality"],["principly","principally"],["princliple","principle"],["prind","print"],["prinicipal","principal"],["prining","printing"],["printting","printing"],["prioirties","priorities"],["prioirty","priority"],["prioritiy","priority"],["priorization","prioritization"],["priorizations","prioritizations"],["priorty","priority"],["priot","prior"],["priotise","prioritise"],["priotised","prioritised"],["priotising","prioritising"],["priotities","priorities"],["priotitize","prioritize"],["priotity","priority"],["priotized","prioritized"],["priotizing","prioritizing"],["priots","priors"],["prirority","priority"],["pris","prise"],["priting","printing"],["privalege","privilege"],["privaleges","privileges"],["privaye","private"],["privcy","privacy"],["privde","provide"],["priveledge","privilege"],["priveledged","privileged"],["priveledges","privileges"],["privelege","privilege"],["priveleged","privileged"],["priveleges","privileges"],["privelige","privilege"],["priveliged","privileged"],["priveliges","privileges"],["privelleges","privileges"],["priviate","private"],["privide","provide"],["privided","provided"],["privides","provides"],["prividing","providing"],["priview","preview"],["privilage","privilege"],["privilaged","privileged"],["privilages","privileges"],["priviledge","privilege"],["priviledged","privileged"],["priviledges","privileges"],["privilidge","privilege"],["privilidged","privileged"],["privilidges","privileges"],["privilige","privilege"],["priviliged","privileged"],["priviliges","privileges"],["privious","previous"],["priviously","previously"],["privision","provision"],["privisional","provisional"],["privisions","provisions"],["privledge","privilege"],["privleges","privileges"],["privte","private"],["prject","project"],["prjecting","projecting"],["prjection","projection"],["prjections","projections"],["prjects","projects"],["prmitive","primitive"],["prmitives","primitives"],["prmopting","prompting"],["proable","probable"],["proably","probably"],["probabalistic","probabilistic"],["probabaly","probably"],["probabilaty","probability"],["probabilisitic","probabilistic"],["probabilites","probabilities"],["probabilty","probability"],["probablay","probably"],["probablistic","probabilistic"],["probablities","probabilities"],["probablity","probability"],["probablly","probably"],["probaby","probably"],["probalby","probably"],["probalibity","probability"],["probaly","probably"],["probbably","probably"],["probbailities","probabilities"],["probbaility","probability"],["probbaly","probably"],["probbed","probed"],["probblem","problem"],["probblems","problems"],["probblez","problem"],["probblezs","problems"],["probbly","probably"],["probelm","problem"],["probelmatic","problematic"],["probelms","problems"],["probem","problem"],["proberly","properly"],["problably","probably"],["problaem","problem"],["problaems","problems"],["problamatic","problematic"],["probleme","problem"],["problemes","problems"],["problimatic","problematic"],["problme","problem"],["problmes","problems"],["probly","probably"],["procceed","proceed"],["proccesor","processor"],["proccesors","processors"],["proccess","process"],["proccessed","processed"],["proccesses","processes"],["proccessing","processing"],["proccessor","processor"],["proccessors","processors"],["procecure","procedure"],["procecures","procedures"],["procedger","procedure"],["procedings","proceedings"],["procedre","procedure"],["procedres","procedures"],["proceedes","proceeds"],["proceedure","procedure"],["proceedures","procedures"],["proceeed","proceed"],["proceeeded","proceeded"],["proceeeding","proceeding"],["proceeeds","proceeds"],["proceeedures","procedures"],["procees","process"],["proceesed","processed"],["proceesor","processor"],["procelain","porcelain"],["procelains","porcelains"],["procentual","percentual"],["proces","process"],["procesed","processed"],["proceses","processes"],["proceshandler","processhandler"],["procesing","processing"],["procesor","processor"],["processeed","processed"],["processees","processes"],["processer","processor"],["processess","processes"],["processessing","processing"],["processig","processing"],["processinf","processing"],["processore","processor"],["processpr","processor"],["processsed","processed"],["processses","processes"],["processsing","processing"],["processsors","processors"],["procesure","procedure"],["procesures","procedures"],["procide","provide"],["procided","provided"],["procides","provides"],["proclaimation","proclamation"],["proclamed","proclaimed"],["proclaming","proclaiming"],["proclomation","proclamation"],["procoess","process"],["procoessed","processed"],["procoessing","processing"],["proctect","protect"],["proctected","protected"],["proctecting","protecting"],["proctects","protects"],["procteted","protected"],["procude","produce"],["procuded","produced"],["prodceding","proceeding"],["prodecure","procedure"],["producable","producible"],["producables","producible"],["produciton","production"],["producitons","productions"],["producted","produced"],["productiviy","productivity"],["produkt","product"],["produse","produce"],["prodused","produced"],["produses","produces"],["proedural","procedural"],["proedure","procedure"],["proedures","procedures"],["proejct","project"],["proejcted","projected"],["proejcting","projecting"],["proejction","projection"],["proepr","proper"],["proeprly","properly"],["proeprties","properties"],["proeprty","property"],["proerties","properties"],["proessing","processing"],["profesional","professional"],["profesionally","professionally"],["profesionals","professionals"],["profesor","professor"],["professer","professor"],["proffesed","professed"],["proffesion","profession"],["proffesional","professional"],["proffesor","professor"],["proffessor","professor"],["profie","profile"],["profied","profiled"],["profier","profiler"],["profies","profiles"],["profilic","prolific"],["profirle","profile"],["profirled","profiled"],["profirler","profiler"],["profirles","profiles"],["profissional","professional"],["proflie","profile"],["proflier","profiler"],["proflies","profiles"],["profling","profiling"],["profund","profound"],["profundly","profoundly"],["progagate","propagate"],["progagated","propagated"],["progagates","propagates"],["progagating","propagating"],["progagation","propagation"],["progagations","propagations"],["progagator","propagator"],["progagators","propagators"],["progam","program"],["progamability","programmability"],["progamable","programmable"],["progamatic","programmatic"],["progamatically","programmatically"],["progamed","programmed"],["progamer","programmer"],["progamers","programmers"],["progaming","programming"],["progamm","program"],["progammability","programmability"],["progammable","programmable"],["progammatic","programmatic"],["progammatically","programmatically"],["progammed","programmed"],["progammer","programmer"],["progammers","programmers"],["progamming","programming"],["progamms","programs"],["progams","programs"],["progapate","propagate"],["progapated","propagated"],["progapates","propagates"],["progapating","propagating"],["progapation","propagation"],["progapations","propagations"],["progapator","propagator"],["progapators","propagators"],["progaramm","program"],["progarammability","programmability"],["progarammable","programmable"],["progarammatic","programmatic"],["progarammatically","programmatically"],["progarammed","programmed"],["progarammer","programmer"],["progarammers","programmers"],["progaramming","programming"],["progaramms","programs"],["progarm","program"],["progarmability","programmability"],["progarmable","programmable"],["progarmatic","programmatic"],["progarmatically","programmatically"],["progarmed","programmed"],["progarmer","programmer"],["progarmers","programmers"],["progarming","programming"],["progarms","programs"],["progate","propagate"],["progated","propagated"],["progates","propagates"],["progating","propagating"],["progation","propagation"],["progations","propagations"],["progess","progress"],["progessbar","progressbar"],["progessed","progressed"],["progesses","progresses"],["progessive","progressive"],["progessor","progressor"],["progesss","progress"],["progesssive","progressive"],["progidy","prodigy"],["programable","programmable"],["programatic","programmatic"],["programatically","programmatically"],["programattically","programmatically"],["programd","programmed"],["programemer","programmer"],["programemers","programmers"],["programers","programmers"],["programmaticaly","programmatically"],["programmend","programmed"],["programmetically","programmatically"],["programmical","programmatical"],["programmign","programming"],["programmming","programming"],["programms","programs"],["progreess","progress"],["progres","progress"],["progresively","progressively"],["progresss","progress"],["progrewss","progress"],["progrmae","program"],["progrss","progress"],["prohabition","prohibition"],["prohibitted","prohibited"],["prohibitting","prohibiting"],["prohibt","prohibit"],["prohibted","prohibited"],["prohibting","prohibiting"],["prohibts","prohibits"],["proirity","priority"],["projct's","project's"],["projct","project"],["projction","projection"],["projctions","projections"],["projctor","projector"],["projctors","projectors"],["projcts","projects"],["projectd","projected"],["projectio","projection"],["projecttion","projection"],["projet","project"],["projetction","projection"],["projeted","projected"],["projeting","projecting"],["projets","projects"],["prolbems","problems"],["prolem","problem"],["prolematic","problematic"],["prolems","problems"],["prologomena","prolegomena"],["prominance","prominence"],["prominant","prominent"],["prominantly","prominently"],["promis","promise"],["promiscous","promiscuous"],["promiss","promise"],["promissed","promised"],["promisses","promises"],["promissing","promising"],["promixity","proximity"],["prommpt","prompt"],["prommpts","prompts"],["promotted","promoted"],["promprted","prompted"],["promps","prompts"],["promt","prompt"],["promts","prompts"],["pronnounced","pronounced"],["pronomial","pronominal"],["prononciation","pronunciation"],["pronouce","pronounce"],["pronouced","pronounced"],["pronounched","pronounced"],["pronounciation","pronunciation"],["pronunce","pronounce"],["proocecure","procedure"],["proocecures","procedures"],["proocedure","procedure"],["proocedures","procedures"],["proocess","process"],["proocessed","processed"],["proocesses","processes"],["proocessing","processing"],["proocol","protocol"],["proocols","protocols"],["prooduce","produce"],["prooduced","produced"],["prooduces","produces"],["prooduct","product"],["prooerties","properties"],["prooerty","property"],["prool","pool"],["prooof","proof"],["prooper","proper"],["prooperly","properly"],["prooperties","properties"],["prooperty","property"],["proose","propose"],["proosed","proposed"],["prooses","proposes"],["proove","prove"],["prooved","proved"],["prooven","proven"],["prooves","proves"],["prooving","proving"],["proovread","proofread"],["prooxies","proxies"],["prooxy","proxy"],["propably","probably"],["propage","propagate"],["propatagion","propagation"],["propator","propagator"],["propators","propagators"],["propbably","probably"],["propely","properly"],["propeoperties","properties"],["propereties","properties"],["properety","property"],["properies","properties"],["properites","properties"],["properities","properties"],["properries","properties"],["properrt","property"],["properrys","properties"],["propert","property"],["properteis","properties"],["propertery","property"],["propertion","proportion"],["propertional","proportional"],["propertions","proportions"],["propertise","properties"],["propertu","property"],["propertus","properties"],["propertys","properties"],["propertyst","properties"],["propeties","properties"],["propetry","property"],["propetrys","properties"],["propety","property"],["propetys","properties"],["propgated","propagated"],["prophacy","prophecy"],["propietary","proprietary"],["propietries","proprietaries"],["propietry","proprietary"],["propigate","propagate"],["propigation","propagation"],["proplem","problem"],["propmt","prompt"],["propmted","prompted"],["propmter","prompter"],["propmts","prompts"],["propoagate","propagate"],["propoerties","properties"],["propoerty","property"],["propoganda","propaganda"],["propogate","propagate"],["propogated","propagated"],["propogates","propagates"],["propogating","propagating"],["propogation","propagation"],["proporpotion","proportion"],["proporpotional","proportional"],["proportianal","proportional"],["proporties","properties"],["proportinal","proportional"],["proporty","property"],["propostion","proposition"],["proppely","properly"],["propper","proper"],["propperly","properly"],["propperties","properties"],["propperty","property"],["proprely","properly"],["propreties","properties"],["proprety","property"],["proprietory","proprietary"],["proproable","probable"],["proproably","probably"],["proprocessed","preprocessed"],["proprogate","propagate"],["proprogated","propagated"],["proprogates","propagates"],["proprogating","propagating"],["proprogation","propagation"],["proprogations","propagations"],["proprogator","propagator"],["proprogators","propagators"],["proproties","properties"],["proprotion","proportion"],["proprotional","proportional"],["proprotionally","proportionally"],["proprotions","proportions"],["proprty","property"],["propt","prompt"],["propteries","properties"],["propterties","properties"],["propterty","property"],["propvider","provider"],["prority","priority"],["prorotype","prototype"],["proseletyzing","proselytizing"],["prosess","process"],["prosessor","processor"],["protable","portable"],["protaganist","protagonist"],["protaganists","protagonists"],["protcol","protocol"],["protcols","protocols"],["protcool","protocol"],["protcools","protocols"],["protcted","protected"],["protecion","protection"],["protectiv","protective"],["protedcted","protected"],["protential","potential"],["protext","protect"],["protocal","protocol"],["protocals","protocols"],["protocl","protocol"],["protocls","protocols"],["protoco","protocol"],["protocoll","protocol"],["protocolls","protocols"],["protocos","protocols"],["protoganist","protagonist"],["protoge","protege"],["protol","protocol"],["protols","protocols"],["prototyes","prototypes"],["protoype","prototype"],["protoyped","prototyped"],["protoypes","prototypes"],["protoyping","prototyping"],["protoytpe","prototype"],["protoytpes","prototypes"],["protrait","portrait"],["protraits","portraits"],["protrayed","portrayed"],["protruberance","protuberance"],["protruberances","protuberances"],["prouncements","pronouncements"],["provacative","provocative"],["provded","provided"],["provder","provider"],["provdided","provided"],["provdie","provide"],["provdied","provided"],["provdies","provides"],["provding","providing"],["provences","provinces"],["provicde","provide"],["provicded","provided"],["provicdes","provides"],["provicial","provincial"],["provideres","providers"],["providewd","provided"],["providfers","providers"],["provieded","provided"],["proviedes","provides"],["provinicial","provincial"],["provisioing","provisioning"],["provisiong","provisioning"],["provisionging","provisioning"],["provisiosn","provision"],["provisonal","provisional"],["provive","provide"],["provived","provided"],["provives","provides"],["proviving","providing"],["provode","provide"],["provoded","provided"],["provoder","provider"],["provodes","provides"],["provoding","providing"],["provods","provides"],["provsioning","provisioning"],["proximty","proximity"],["prozess","process"],["prpeparations","preparations"],["prpose","propose"],["prposed","proposed"],["prposer","proposer"],["prposers","proposers"],["prposes","proposes"],["prposiing","proposing"],["prrcision","precision"],["prrottypes","prototypes"],["prset","preset"],["prsets","presets"],["prtinf","printf"],["prufe","proof"],["prviate","private"],["psaswd","passwd"],["pseude","pseudo"],["pseudononymous","pseudonymous"],["pseudonyn","pseudonym"],["pseudopoential","pseudopotential"],["pseudopoentials","pseudopotentials"],["pseudorinverse","pseudoinverse"],["pseuo-palette","pseudo-palette"],["psitoin","position"],["psitoined","positioned"],["psitoins","positions"],["psot","post"],["psots","posts"],["psrameter","parameter"],["pssed","passed"],["pssibility","possibility"],["psudo","pseudo"],["psudoinverse","pseudoinverse"],["psuedo","pseudo"],["psuedo-fork","pseudo-fork"],["psuedoinverse","pseudoinverse"],["psuedolayer","pseudolayer"],["psuh","push"],["psychadelic","psychedelic"],["psycology","psychology"],["psyhic","psychic"],["ptd","pdf"],["ptherad","pthread"],["ptherads","pthreads"],["pthon","python"],["pthred","pthread"],["pthreds","pthreads"],["ptorions","portions"],["ptrss","press"],["pubilsh","publish"],["pubilshed","published"],["pubilsher","publisher"],["pubilshers","publishers"],["pubilshing","publishing"],["pubish","publish"],["pubished","published"],["pubisher","publisher"],["pubishers","publishers"],["pubishing","publishing"],["publcation","publication"],["publcise","publicise"],["publcize","publicize"],["publiaher","publisher"],["publically","publicly"],["publicaly","publicly"],["publiched","published"],["publicher","publisher"],["publichers","publishers"],["publiches","publishes"],["publiching","publishing"],["publihsed","published"],["publihser","publisher"],["publised","published"],["publisehd","published"],["publisehr","publisher"],["publisehrs","publishers"],["publiser","publisher"],["publisers","publishers"],["publisged","published"],["publisger","publisher"],["publisgers","publishers"],["publishd","published"],["publisheed","published"],["publisherr","publisher"],["publishher","publisher"],["publishor","publisher"],["publishr","publisher"],["publishre","publisher"],["publishrs","publishers"],["publissher","publisher"],["publlisher","publisher"],["publsh","publish"],["publshed","published"],["publsher","publisher"],["publshers","publishers"],["publshing","publishing"],["publsih","publish"],["publsihed","published"],["publsiher","publisher"],["publsihers","publishers"],["publsihes","publishes"],["publsihing","publishing"],["publuc","public"],["publucation","publication"],["publush","publish"],["publusher","publisher"],["publushers","publishers"],["publushes","publishes"],["publushing","publishing"],["puchasing","purchasing"],["Pucini","Puccini"],["Puertorrican","Puerto Rican"],["Puertorricans","Puerto Ricans"],["pulisher","publisher"],["pullrequest","pull request"],["pullrequests","pull requests"],["pumkin","pumpkin"],["punctation","punctuation"],["puplar","popular"],["puplarity","popularity"],["puplate","populate"],["puplated","populated"],["puplates","populates"],["puplating","populating"],["puplation","population"],["puplisher","publisher"],["pupose","purpose"],["puposes","purposes"],["pupulated","populated"],["purcahed","purchased"],["purcahse","purchase"],["purgest","purges"],["puritannical","puritanical"],["purposedly","purposely"],["purpotedly","purportedly"],["purpse","purpose"],["pursuade","persuade"],["pursuaded","persuaded"],["pursuades","persuades"],["pusehd","pushed"],["pususading","persuading"],["puting","putting"],["putpose","purpose"],["putposed","purposed"],["putposes","purposes"],["pwoer","power"],["pxoxied","proxied"],["pxoxies","proxies"],["pxoxy","proxy"],["pyhon","python"],["pyhsical","physical"],["pyhsically","physically"],["pyhsicals","physicals"],["pyhsicaly","physically"],["pyhthon","python"],["pyhton","python"],["pyramide","pyramid"],["pyramides","pyramids"],["pyrhon","python"],["pyscic","psychic"],["pythin","python"],["pythjon","python"],["pytnon","python"],["pytohn","python"],["pyton","python"],["pytyon","python"],["qest","quest"],["qests","quests"],["qeuest","quest"],["qeuests","quests"],["qeueue","queue"],["qeust","quest"],["qeusts","quests"],["qiest","quest"],["qiests","quests"],["qith","with"],["qoute","quote"],["qouted","quoted"],["qoutes","quotes"],["qouting","quoting"],["quadddec","quaddec"],["quadranle","quadrangle"],["quailified","qualified"],["qualfied","qualified"],["qualfy","qualify"],["qualifer","qualifier"],["qualitification","qualification"],["qualitifications","qualifications"],["quanitified","quantified"],["quantaties","quantities"],["quantaty","quantity"],["quantitites","quantities"],["quantititive","quantitative"],["quantitity","quantity"],["quantitiy","quantity"],["quarantaine","quarantine"],["quarentine","quarantine"],["quartenion","quaternion"],["quartenions","quaternions"],["quartically","quadratically"],["quatation","quotation"],["quater","quarter"],["quation","equation"],["quations","equations"],["quckstarter","quickstarter"],["qudrangles","quadrangles"],["quee","queue"],["Queenland","Queensland"],["queing","queueing"],["queiried","queried"],["queisce","quiesce"],["queriable","queryable"],["quering","querying"],["querries","queries"],["queryies","queries"],["queryinterace","queryinterface"],["querys","queries"],["queset","quest"],["quesets","quests"],["quesiton","question"],["quesitonable","questionable"],["quesitons","questions"],["quesr","quest"],["quesrs","quests"],["questionaire","questionnaire"],["questionnair","questionnaire"],["questoin","question"],["questoins","questions"],["questonable","questionable"],["queu","queue"],["queueud","queued"],["queus","queues"],["quew","queue"],["quickier","quicker"],["quicklyu","quickly"],["quickyl","quickly"],["quicly","quickly"],["quiessent","quiescent"],["quiests","quests"],["quikc","quick"],["quinessential","quintessential"],["quiting","quitting"],["quitt","quit"],["quitted","quit"],["quizes","quizzes"],["quotaion","quotation"],["quoteed","quoted"],["quottes","quotes"],["quried","queried"],["quroum","quorum"],["qust","quest"],["qusts","quests"],["rabinnical","rabbinical"],["racaus","raucous"],["ractise","practise"],["radation","radiation"],["radiactive","radioactive"],["radiaton","radiation"],["radify","ratify"],["radiobuttion","radiobutton"],["radis","radix"],["rady","ready"],["raed","read"],["raeding","reading"],["raeds","reads"],["raedy","ready"],["raelly","really"],["raisedd","raised"],["ralation","relation"],["randmom","random"],["randomally","randomly"],["raoming","roaming"],["raotat","rotate"],["raotate","rotate"],["raotated","rotated"],["raotates","rotates"],["raotating","rotating"],["raotation","rotation"],["raotations","rotations"],["raotats","rotates"],["raplace","replace"],["raplacing","replacing"],["rapresent","represent"],["rapresentation","representation"],["rapresented","represented"],["rapresenting","representing"],["rapresents","represents"],["rapsberry","raspberry"],["rarelly","rarely"],["rarified","rarefied"],["rasberry","raspberry"],["rasie","raise"],["rasied","raised"],["rasies","raises"],["rasiing","raising"],["rasing","raising"],["rasons","reasons"],["raspbery","raspberry"],["raspoberry","raspberry"],["rathar","rather"],["rathern","rather"],["rcall","recall"],["rceate","create"],["rceating","creating"],["rduce","reduce"],["re-attachement","re-attachment"],["re-defiend","re-defined"],["re-engeneer","re-engineer"],["re-engeneering","re-engineering"],["re-evaulated","re-evaluated"],["re-impliment","re-implement"],["re-implimenting","re-implementing"],["re-negatiotiable","re-negotiable"],["re-negatiotiate","re-negotiate"],["re-negatiotiated","re-negotiated"],["re-negatiotiates","re-negotiates"],["re-negatiotiating","re-negotiating"],["re-negatiotiation","re-negotiation"],["re-negatiotiations","re-negotiations"],["re-negatiotiator","re-negotiator"],["re-negatiotiators","re-negotiators"],["re-negoable","re-negotiable"],["re-negoate","re-negotiate"],["re-negoated","re-negotiated"],["re-negoates","re-negotiates"],["re-negoatiable","re-negotiable"],["re-negoatiate","re-negotiate"],["re-negoatiated","re-negotiated"],["re-negoatiates","re-negotiates"],["re-negoatiating","re-negotiating"],["re-negoatiation","re-negotiation"],["re-negoatiations","re-negotiations"],["re-negoatiator","re-negotiator"],["re-negoatiators","re-negotiators"],["re-negoating","re-negotiating"],["re-negoation","re-negotiation"],["re-negoations","re-negotiations"],["re-negoator","re-negotiator"],["re-negoators","re-negotiators"],["re-negociable","re-negotiable"],["re-negociate","re-negotiate"],["re-negociated","re-negotiated"],["re-negociates","re-negotiates"],["re-negociating","re-negotiating"],["re-negociation","re-negotiation"],["re-negociations","re-negotiations"],["re-negociator","re-negotiator"],["re-negociators","re-negotiators"],["re-negogtiable","re-negotiable"],["re-negogtiate","re-negotiate"],["re-negogtiated","re-negotiated"],["re-negogtiates","re-negotiates"],["re-negogtiating","re-negotiating"],["re-negogtiation","re-negotiation"],["re-negogtiations","re-negotiations"],["re-negogtiator","re-negotiator"],["re-negogtiators","re-negotiators"],["re-negoitable","re-negotiable"],["re-negoitate","re-negotiate"],["re-negoitated","re-negotiated"],["re-negoitates","re-negotiates"],["re-negoitating","re-negotiating"],["re-negoitation","re-negotiation"],["re-negoitations","re-negotiations"],["re-negoitator","re-negotiator"],["re-negoitators","re-negotiators"],["re-negoptionsotiable","re-negotiable"],["re-negoptionsotiate","re-negotiate"],["re-negoptionsotiated","re-negotiated"],["re-negoptionsotiates","re-negotiates"],["re-negoptionsotiating","re-negotiating"],["re-negoptionsotiation","re-negotiation"],["re-negoptionsotiations","re-negotiations"],["re-negoptionsotiator","re-negotiator"],["re-negoptionsotiators","re-negotiators"],["re-negosiable","re-negotiable"],["re-negosiate","re-negotiate"],["re-negosiated","re-negotiated"],["re-negosiates","re-negotiates"],["re-negosiating","re-negotiating"],["re-negosiation","re-negotiation"],["re-negosiations","re-negotiations"],["re-negosiator","re-negotiator"],["re-negosiators","re-negotiators"],["re-negotable","re-negotiable"],["re-negotaiable","re-negotiable"],["re-negotaiate","re-negotiate"],["re-negotaiated","re-negotiated"],["re-negotaiates","re-negotiates"],["re-negotaiating","re-negotiating"],["re-negotaiation","re-negotiation"],["re-negotaiations","re-negotiations"],["re-negotaiator","re-negotiator"],["re-negotaiators","re-negotiators"],["re-negotaible","re-negotiable"],["re-negotaite","re-negotiate"],["re-negotaited","re-negotiated"],["re-negotaites","re-negotiates"],["re-negotaiting","re-negotiating"],["re-negotaition","re-negotiation"],["re-negotaitions","re-negotiations"],["re-negotaitor","re-negotiator"],["re-negotaitors","re-negotiators"],["re-negotate","re-negotiate"],["re-negotated","re-negotiated"],["re-negotates","re-negotiates"],["re-negotatiable","re-negotiable"],["re-negotatiate","re-negotiate"],["re-negotatiated","re-negotiated"],["re-negotatiates","re-negotiates"],["re-negotatiating","re-negotiating"],["re-negotatiation","re-negotiation"],["re-negotatiations","re-negotiations"],["re-negotatiator","re-negotiator"],["re-negotatiators","re-negotiators"],["re-negotatible","re-negotiable"],["re-negotatie","re-negotiate"],["re-negotatied","re-negotiated"],["re-negotaties","re-negotiates"],["re-negotating","re-negotiating"],["re-negotation","re-negotiation"],["re-negotations","re-negotiations"],["re-negotatior","re-negotiator"],["re-negotatiors","re-negotiators"],["re-negotator","re-negotiator"],["re-negotators","re-negotiators"],["re-negothiable","re-negotiable"],["re-negothiate","re-negotiate"],["re-negothiated","re-negotiated"],["re-negothiates","re-negotiates"],["re-negothiating","re-negotiating"],["re-negothiation","re-negotiation"],["re-negothiations","re-negotiations"],["re-negothiator","re-negotiator"],["re-negothiators","re-negotiators"],["re-negotible","re-negotiable"],["re-negoticable","re-negotiable"],["re-negoticate","re-negotiate"],["re-negoticated","re-negotiated"],["re-negoticates","re-negotiates"],["re-negoticating","re-negotiating"],["re-negotication","re-negotiation"],["re-negotications","re-negotiations"],["re-negoticator","re-negotiator"],["re-negoticators","re-negotiators"],["re-negotioable","re-negotiable"],["re-negotioate","re-negotiate"],["re-negotioated","re-negotiated"],["re-negotioates","re-negotiates"],["re-negotioating","re-negotiating"],["re-negotioation","re-negotiation"],["re-negotioations","re-negotiations"],["re-negotioator","re-negotiator"],["re-negotioators","re-negotiators"],["re-negotioble","re-negotiable"],["re-negotion","re-negotiation"],["re-negotionable","re-negotiable"],["re-negotionate","re-negotiate"],["re-negotionated","re-negotiated"],["re-negotionates","re-negotiates"],["re-negotionating","re-negotiating"],["re-negotionation","re-negotiation"],["re-negotionations","re-negotiations"],["re-negotionator","re-negotiator"],["re-negotionators","re-negotiators"],["re-negotions","re-negotiations"],["re-negotiotable","re-negotiable"],["re-negotiotate","re-negotiate"],["re-negotiotated","re-negotiated"],["re-negotiotates","re-negotiates"],["re-negotiotating","re-negotiating"],["re-negotiotation","re-negotiation"],["re-negotiotations","re-negotiations"],["re-negotiotator","re-negotiator"],["re-negotiotators","re-negotiators"],["re-negotiote","re-negotiate"],["re-negotioted","re-negotiated"],["re-negotiotes","re-negotiates"],["re-negotioting","re-negotiating"],["re-negotiotion","re-negotiation"],["re-negotiotions","re-negotiations"],["re-negotiotor","re-negotiator"],["re-negotiotors","re-negotiators"],["re-negotitable","re-negotiable"],["re-negotitae","re-negotiate"],["re-negotitaed","re-negotiated"],["re-negotitaes","re-negotiates"],["re-negotitaing","re-negotiating"],["re-negotitaion","re-negotiation"],["re-negotitaions","re-negotiations"],["re-negotitaor","re-negotiator"],["re-negotitaors","re-negotiators"],["re-negotitate","re-negotiate"],["re-negotitated","re-negotiated"],["re-negotitates","re-negotiates"],["re-negotitating","re-negotiating"],["re-negotitation","re-negotiation"],["re-negotitations","re-negotiations"],["re-negotitator","re-negotiator"],["re-negotitators","re-negotiators"],["re-negotite","re-negotiate"],["re-negotited","re-negotiated"],["re-negotites","re-negotiates"],["re-negotiting","re-negotiating"],["re-negotition","re-negotiation"],["re-negotitions","re-negotiations"],["re-negotitor","re-negotiator"],["re-negotitors","re-negotiators"],["re-negoziable","re-negotiable"],["re-negoziate","re-negotiate"],["re-negoziated","re-negotiated"],["re-negoziates","re-negotiates"],["re-negoziating","re-negotiating"],["re-negoziation","re-negotiation"],["re-negoziations","re-negotiations"],["re-negoziator","re-negotiator"],["re-negoziators","re-negotiators"],["re-realease","re-release"],["re-uplad","re-upload"],["re-upladed","re-uploaded"],["re-uplader","re-uploader"],["re-upladers","re-uploaders"],["re-uplading","re-uploading"],["re-uplads","re-uploads"],["re-uplaod","re-upload"],["re-uplaoded","re-uploaded"],["re-uplaoder","re-uploader"],["re-uplaoders","re-uploaders"],["re-uplaoding","re-uploading"],["re-uplaods","re-uploads"],["re-uplod","re-upload"],["re-uploded","re-uploaded"],["re-uploder","re-uploader"],["re-uploders","re-uploaders"],["re-uploding","re-uploading"],["re-uplods","re-uploads"],["reaaly","really"],["reaarange","rearrange"],["reaaranges","rearranges"],["reaasigned","reassigned"],["reacahable","reachable"],["reacahble","reachable"],["reaccurring","recurring"],["reaceive","receive"],["reacheable","reachable"],["reachers","readers"],["reachs","reaches"],["reacing","reaching"],["reacll","recall"],["reactquire","reacquire"],["readabilty","readability"],["readanle","readable"],["readapted","re-adapted"],["readble","readable"],["readdrss","readdress"],["readdrssed","readdressed"],["readdrsses","readdresses"],["readdrssing","readdressing"],["readeable","readable"],["reademe","README"],["readiable","readable"],["readibility","readability"],["readible","readable"],["readig","reading"],["readigs","readings"],["readius","radius"],["readl-only","read-only"],["readmition","readmission"],["readnig","reading"],["readning","reading"],["readyness","readiness"],["reaeched","reached"],["reagrding","regarding"],["reaktivate","reactivate"],["reaktivated","reactivated"],["realease","release"],["realeased","released"],["realeases","releases"],["realiable","reliable"],["realitime","realtime"],["realitvely","relatively"],["realiy","really"],["realiztion","realization"],["realiztions","realizations"],["realling","really"],["reallize","realize"],["reallllly","really"],["reallocae","reallocate"],["reallocaes","reallocates"],["reallocaiing","reallocating"],["reallocaing","reallocating"],["reallocaion","reallocation"],["reallocaions","reallocations"],["reallocaite","reallocate"],["reallocaites","reallocates"],["reallocaiting","reallocating"],["reallocaition","reallocation"],["reallocaitions","reallocations"],["reallocaiton","reallocation"],["reallocaitons","reallocations"],["realsitic","realistic"],["realted","related"],["realyl","really"],["reamde","README"],["reamins","remains"],["reander","render"],["reanme","rename"],["reanmed","renamed"],["reanmes","renames"],["reanming","renaming"],["reaon","reason"],["reaons","reasons"],["reapeat","repeat"],["reapeated","repeated"],["reapeater","repeater"],["reapeating","repeating"],["reapeats","repeats"],["reappeares","reappears"],["reapper","reappear"],["reappered","reappeared"],["reappering","reappearing"],["rearely","rarely"],["rearranable","rearrangeable"],["rearrane","rearrange"],["rearraned","rearranged"],["rearranement","rearrangement"],["rearranements","rearrangements"],["rearranent","rearrangement"],["rearranents","rearrangements"],["rearranes","rearranges"],["rearrang","rearrange"],["rearrangable","rearrangeable"],["rearrangaeble","rearrangeable"],["rearrangaelbe","rearrangeable"],["rearrangd","rearranged"],["rearrangde","rearranged"],["rearrangent","rearrangement"],["rearrangents","rearrangements"],["rearrangmeent","rearrangement"],["rearrangmeents","rearrangements"],["rearrangmenet","rearrangement"],["rearrangmenets","rearrangements"],["rearrangment","rearrangement"],["rearrangments","rearrangements"],["rearrangnig","rearranging"],["rearrangning","rearranging"],["rearrangs","rearranges"],["rearrangse","rearranges"],["rearrangt","rearrangement"],["rearrangte","rearrange"],["rearrangteable","rearrangeable"],["rearrangteables","rearrangeables"],["rearrangted","rearranged"],["rearrangtement","rearrangement"],["rearrangtements","rearrangements"],["rearrangtes","rearranges"],["rearrangting","rearranging"],["rearrangts","rearrangements"],["rearraning","rearranging"],["rearranment","rearrangement"],["rearranments","rearrangements"],["rearrant","rearrangement"],["rearrants","rearrangements"],["reasearch","research"],["reasearcher","researcher"],["reasearchers","researchers"],["reasnable","reasonable"],["reasoable","reasonable"],["reasonabily","reasonably"],["reasonble","reasonable"],["reasonbly","reasonably"],["reasonnable","reasonable"],["reasonnably","reasonably"],["reassinging","reassigning"],["reassocition","reassociation"],["reasssign","reassign"],["reatime","realtime"],["reattachement","reattachment"],["rebiulding","rebuilding"],["rebllions","rebellions"],["reboto","reboot"],["rebounce","rebound"],["rebuilded","rebuilt"],["rebuillt","rebuilt"],["rebuils","rebuilds"],["rebuit","rebuilt"],["rebuld","rebuild"],["rebulding","rebuilding"],["rebulds","rebuilds"],["rebulid","rebuild"],["rebuliding","rebuilding"],["rebulids","rebuilds"],["rebulit","rebuilt"],["recahed","reached"],["recal","recall"],["recalcualte","recalculate"],["recalcualted","recalculated"],["recalcualter","re-calculator"],["recalcualtes","recalculates"],["recalcualting","recalculating"],["recalcualtion","recalculation"],["recalcualtions","recalculations"],["recalcuate","recalculate"],["recalcuated","recalculated"],["recalcuates","recalculates"],["recalcuations","recalculations"],["recalculaion","recalculation"],["recalculatble","re-calculable"],["recalcution","recalculation"],["recalulate","recalculate"],["recalulation","recalculation"],["recangle","rectangle"],["recangles","rectangles"],["reccomend","recommend"],["reccomendations","recommendations"],["reccomended","recommended"],["reccomending","recommending"],["reccommend","recommend"],["reccommendation","recommendation"],["reccommendations","recommendations"],["reccommended","recommended"],["reccommending","recommending"],["reccommends","recommends"],["recconecct","reconnect"],["recconeccted","reconnected"],["recconeccting","reconnecting"],["recconecction","reconnection"],["recconecctions","reconnections"],["recconeccts","reconnects"],["recconect","reconnect"],["recconected","reconnected"],["recconecting","reconnecting"],["recconection","reconnection"],["recconections","reconnections"],["recconects","reconnects"],["recconeect","reconnect"],["recconeected","reconnected"],["recconeecting","reconnecting"],["recconeection","reconnection"],["recconeections","reconnections"],["recconeects","reconnects"],["recconenct","reconnect"],["recconencted","reconnected"],["recconencting","reconnecting"],["recconenction","reconnection"],["recconenctions","reconnections"],["recconencts","reconnects"],["recconet","reconnect"],["recconeted","reconnected"],["recconeting","reconnecting"],["recconetion","reconnection"],["recconetions","reconnections"],["recconets","reconnects"],["reccord","record"],["reccorded","recorded"],["reccording","recording"],["reccords","records"],["reccuring","recurring"],["reccursive","recursive"],["reccursively","recursively"],["receeded","receded"],["receeding","receding"],["receied","received"],["receieve","receive"],["receieved","received"],["receieves","receives"],["receieving","receiving"],["receipient","recipient"],["receipients","recipients"],["receiption","reception"],["receiv","receive"],["receivd","received"],["receivedfrom","received from"],["receiveing","receiving"],["receiviing","receiving"],["receivs","receives"],["recenet","recent"],["recenlty","recently"],["recenly","recently"],["recenty","recently"],["recepient","recipient"],["recepients","recipients"],["recepion","reception"],["receve","receive"],["receved","received"],["receves","receives"],["recevie","receive"],["recevied","received"],["recevier","receiver"],["recevies","receives"],["receving","receiving"],["rechable","reachable"],["rechargable","rechargeable"],["recheability","reachability"],["reched","reached"],["rechek","recheck"],["recide","reside"],["recided","resided"],["recident","resident"],["recidents","residents"],["reciding","residing"],["reciepents","recipients"],["reciept","receipt"],["recieve","receive"],["recieved","received"],["reciever","receiver"],["recievers","receivers"],["recieves","receives"],["recieving","receiving"],["recievs","receives"],["recipiant","recipient"],["recipiants","recipients"],["recipie","recipe"],["recipies","recipes"],["reciprocoal","reciprocal"],["reciprocoals","reciprocals"],["recive","receive"],["recived","received"],["reciver","receiver"],["recivers","receivers"],["recivership","receivership"],["recives","receives"],["reciving","receiving"],["reclaimation","reclamation"],["recntly","recently"],["recod","record"],["recofig","reconfig"],["recoginizing-","recognizing"],["recogise","recognise"],["recogize","recognize"],["recogized","recognized"],["recogizes","recognizes"],["recogizing","recognizing"],["recogniced","recognised"],["recogninse","recognise"],["recognizeable","recognizable"],["recognzied","recognized"],["recomend","recommend"],["recomendation","recommendation"],["recomendations","recommendations"],["recomendatoin","recommendation"],["recomendatoins","recommendations"],["recomended","recommended"],["recomending","recommending"],["recomends","recommends"],["recommad","recommend"],["recommaded","recommended"],["recommand","recommend"],["recommandation","recommendation"],["recommanded","recommended"],["recommanding","recommending"],["recommands","recommends"],["recommd","recommend"],["recommdation","recommendation"],["recommded","recommended"],["recommdend","recommend"],["recommdended","recommended"],["recommdends","recommends"],["recommds","recommends"],["recommed","recommend"],["recommedation","recommendation"],["recommedations","recommendations"],["recommeded","recommended"],["recommeding","recommending"],["recommeds","recommends"],["recommened","recommended"],["recommeneded","recommended"],["recommented","recommended"],["recommmend","recommend"],["recommmended","recommended"],["recommmends","recommends"],["recommnd","recommend"],["recommnded","recommended"],["recommnds","recommends"],["recommned","recommend"],["recommneded","recommended"],["recommneds","recommends"],["recommpile","recompile"],["recommpiled","recompiled"],["recompence","recompense"],["recomput","recompute"],["recomputaion","recomputation"],["recompuute","recompute"],["recompuuted","recomputed"],["recompuutes","recomputes"],["recompuuting","recomputing"],["reconaissance","reconnaissance"],["reconcilation","reconciliation"],["recondifure","reconfigure"],["reconecct","reconnect"],["reconeccted","reconnected"],["reconeccting","reconnecting"],["reconecction","reconnection"],["reconecctions","reconnections"],["reconeccts","reconnects"],["reconect","reconnect"],["reconected","reconnected"],["reconecting","reconnecting"],["reconection","reconnection"],["reconections","reconnections"],["reconects","reconnects"],["reconeect","reconnect"],["reconeected","reconnected"],["reconeecting","reconnecting"],["reconeection","reconnection"],["reconeections","reconnections"],["reconeects","reconnects"],["reconenct","reconnect"],["reconencted","reconnected"],["reconencting","reconnecting"],["reconenction","reconnection"],["reconenctions","reconnections"],["reconencts","reconnects"],["reconet","reconnect"],["reconeted","reconnected"],["reconeting","reconnecting"],["reconetion","reconnection"],["reconetions","reconnections"],["reconets","reconnects"],["reconfifure","reconfigure"],["reconfiged","reconfigured"],["reconfugire","reconfigure"],["reconfugre","reconfigure"],["reconfugure","reconfigure"],["reconfure","reconfigure"],["recongifure","reconfigure"],["recongize","recognize"],["recongized","recognized"],["recongnises","recognises"],["recongnizes","recognizes"],["reconize","recognize"],["reconized","recognized"],["reconnaisance","reconnaissance"],["reconnaissence","reconnaissance"],["reconnct","reconnect"],["reconncted","reconnected"],["reconncting","reconnecting"],["reconncts","reconnects"],["reconsidder","reconsider"],["reconstrcut","reconstruct"],["reconstrcuted","reconstructed"],["reconstrcution","reconstruction"],["reconstuct","reconstruct"],["reconstucted","reconstructed"],["reconstucting","reconstructing"],["reconstucts","reconstructs"],["reconsturction","reconstruction"],["recontruct","reconstruct"],["recontructed","reconstructed"],["recontructing","reconstructing"],["recontruction","reconstruction"],["recontructions","reconstructions"],["recontructor","reconstructor"],["recontructors","reconstructors"],["recontructs","reconstructs"],["recordproducer","record producer"],["recordss","records"],["recored","recorded"],["recoriding","recording"],["recourced","resourced"],["recources","resources"],["recourcing","resourcing"],["recpie","recipe"],["recpies","recipes"],["recquired","required"],["recrational","recreational"],["recreateation","recreation"],["recrod","record"],["recrods","records"],["recrusevly","recursively"],["recrusion","recursion"],["recrusive","recursive"],["recrusivelly","recursively"],["recrusively","recursively"],["rectange","rectangle"],["rectanges","rectangles"],["rectanglar","rectangular"],["rectangluar","rectangular"],["rectiinear","rectilinear"],["recude","reduce"],["recuiting","recruiting"],["reculrively","recursively"],["recuring","recurring"],["recurisvely","recursively"],["recurively","recursively"],["recurrance","recurrence"],["recursily","recursively"],["recursivelly","recursively"],["recursivion","recursion"],["recursivley","recursively"],["recursivly","recursively"],["recurssed","recursed"],["recursses","recurses"],["recurssing","recursing"],["recurssion","recursion"],["recurssive","recursive"],["recusrive","recursive"],["recusrively","recursively"],["recusrsive","recursive"],["recustion","recursion"],["recyclying","recycling"],["recylcing","recycling"],["recyle","recycle"],["recyled","recycled"],["recyles","recycles"],["recyling","recycling"],["redability","readability"],["redandant","redundant"],["redeable","readable"],["redeclaation","redeclaration"],["redefiend","redefined"],["redefiende","redefined"],["redefintion","redefinition"],["redefintions","redefinitions"],["redenderer","renderer"],["redered","rendered"],["redict","redirect"],["rediculous","ridiculous"],["redidual","residual"],["redifine","redefine"],["redifinition","redefinition"],["redifinitions","redefinitions"],["redifintion","redefinition"],["redifintions","redefinitions"],["reding","reading"],["redings","readings"],["redircet","redirect"],["redirectd","redirected"],["redirectrion","redirection"],["redisign","redesign"],["redistirbute","redistribute"],["redistirbuted","redistributed"],["redistirbutes","redistributes"],["redistirbuting","redistributing"],["redistirbution","redistribution"],["redistributeable","redistributable"],["redistrubute","redistribute"],["redistrubuted","redistributed"],["redistrubution","redistribution"],["redistrubutions","redistributions"],["redliens","redlines"],["rednerer","renderer"],["redonly","readonly"],["redudancy","redundancy"],["redudant","redundant"],["redunancy","redundancy"],["redunant","redundant"],["redundacy","redundancy"],["redundand","redundant"],["redundat","redundant"],["redundency","redundancy"],["redundent","redundant"],["reduntancy","redundancy"],["reduntant","redundant"],["reease","release"],["reeased","released"],["reeaser","releaser"],["reeasers","releasers"],["reeases","releases"],["reeasing","releasing"],["reedeming","redeeming"],["reegion","region"],["reegions","regions"],["reelation","relation"],["reelease","release"],["reenable","re-enable"],["reenabled","re-enabled"],["reename","rename"],["reencode","re-encode"],["reenfoce","reinforce"],["reenfoced","reinforced"],["reenforced","reinforced"],["reesrved","reserved"],["reesult","result"],["reeturn","return"],["reeturned","returned"],["reeturning","returning"],["reeturns","returns"],["reevalute","reevaluate"],["reevaulating","reevaluating"],["refcound","refcount"],["refcounf","refcount"],["refect","reflect"],["refected","reflected"],["refecting","reflecting"],["refectiv","reflective"],["refector","refactor"],["refectoring","refactoring"],["refects","reflects"],["refedendum","referendum"],["refeinement","refinement"],["refeinements","refinements"],["refelects","reflects"],["refence","reference"],["refences","references"],["refenence","reference"],["refenrenced","referenced"],["referal","referral"],["referance","reference"],["referanced","referenced"],["referances","references"],["referant","referent"],["referebces","references"],["referece","reference"],["referecence","reference"],["referecences","references"],["refereces","references"],["referecne","reference"],["refered","referred"],["referefences","references"],["referemce","reference"],["referemces","references"],["referenace","reference"],["referenc","reference"],["referencable","referenceable"],["referencial","referential"],["referencially","referentially"],["referencs","references"],["referenct","referenced"],["referene","reference"],["referenece","reference"],["refereneced","referenced"],["refereneces","references"],["referened","referenced"],["referenence","reference"],["referenenced","referenced"],["referenences","references"],["referenes","references"],["referennces","references"],["referense","reference"],["referensed","referenced"],["referenses","references"],["referenz","reference"],["referenzes","references"],["refererd","referred"],["refererence","reference"],["referiang","referring"],["refering","referring"],["refernce","reference"],["refernced","referenced"],["referncence","reference"],["referncences","references"],["refernces","references"],["referncial","referential"],["referncing","referencing"],["refernece","reference"],["referneced","referenced"],["referneces","references"],["refernnce","reference"],["referr","refer"],["referrence","reference"],["referrenced","referenced"],["referrences","references"],["referrencing","referencing"],["referreres","referrers"],["referres","refers"],["referrs","refers"],["refertence","reference"],["refertenced","referenced"],["refertences","references"],["refesh","refresh"],["refeshed","refreshed"],["refeshes","refreshes"],["refeshing","refreshing"],["reffered","referred"],["refference","reference"],["reffering","referring"],["refferr","refer"],["reffers","refers"],["refinemenet","refinement"],["refinmenet","refinement"],["refinment","refinement"],["reflet","reflect"],["refleted","reflected"],["refleting","reflecting"],["refletion","reflection"],["refletions","reflections"],["reflets","reflects"],["refocuss","refocus"],["refocussed","refocused"],["reformating","reformatting"],["reformattd","reformatted"],["refreh","refresh"],["refrence","reference"],["refrenced","referenced"],["refrences","references"],["refrencing","referencing"],["refrerence","reference"],["refrerenced","referenced"],["refrerenceing","referencing"],["refrerences","references"],["refrerencial","referential"],["refrers","refers"],["refreshs","refreshes"],["refreshses","refreshes"],["refridgeration","refrigeration"],["refridgerator","refrigerator"],["refromatting","refomatting"],["refromist","reformist"],["refrormatting","reformatting"],["refure","refuse"],["refures","refuses"],["refusla","refusal"],["regalar","regular"],["regalars","regulars"],["regardes","regards"],["regardles","regardless"],["regardlesss","regardless"],["regaring","regarding"],["regarldess","regardless"],["regarless","regardless"],["regart","regard"],["regarted","regarded"],["regarting","regarding"],["regartless","regardless"],["regconized","recognized"],["regeister","register"],["regeistered","registered"],["regeistration","registration"],["regenarated","regenerated"],["regenrated","regenerated"],["regenratet","regenerated"],["regenrating","regenerating"],["regenration","regeneration"],["regenrative","regenerative"],["regession","regression"],["regestered","registered"],["regidstered","registered"],["regio","region"],["regiser","register"],["regisration","registration"],["regist","register"],["registartion","registration"],["registe","register"],["registed","registered"],["registeing","registering"],["registeration","registration"],["registerered","registered"],["registeres","registers"],["registeresd","registered"],["registerred","registered"],["registert","registered"],["registery","registry"],["registes","registers"],["registing","registering"],["registors","registers"],["registrain","registration"],["registraion","registration"],["registraions","registrations"],["registraration","registration"],["registrated","registered"],["registred","registered"],["registrer","register"],["registring","registering"],["registrs","registers"],["registy","registry"],["regiter","register"],["regitered","registered"],["regitering","registering"],["regiters","registers"],["regluar","regular"],["regon","region"],["regons","regions"],["regorded","recorded"],["regresion","regression"],["regresison","regression"],["regresssion","regression"],["regrigerator","refrigerator"],["regsion","region"],["regsions","regions"],["regsiter","register"],["regsitered","registered"],["regsitering","registering"],["regsiters","registers"],["regsitry","registry"],["regster","register"],["regstered","registered"],["regstering","registering"],["regsters","registers"],["regstry","registry"],["regualar","regular"],["regualarly","regularly"],["regualator","regulator"],["regualr","regular"],["regualtor","regulator"],["reguardless","regardless"],["reguarldess","regardless"],["reguarlise","regularise"],["reguarliser","regulariser"],["reguarlize","regularize"],["reguarlizer","regularizer"],["reguarly","regularly"],["reguator","regulator"],["reguire","require"],["reguired","required"],["reguirement","requirement"],["reguirements","requirements"],["reguires","requires"],["reguiring","requiring"],["regulaer","regular"],["regulaion","regulation"],["regulamentation","regulation"],["regulamentations","regulations"],["regulaotrs","regulators"],["regulaotry","regulatory"],["regularily","regularly"],["regulariry","regularly"],["regularlisation","regularisation"],["regularlise","regularise"],["regularlised","regularised"],["regularliser","regulariser"],["regularlises","regularises"],["regularlising","regularising"],["regularlization","regularization"],["regularlize","regularize"],["regularlized","regularized"],["regularlizer","regularizer"],["regularlizes","regularizes"],["regularlizing","regularizing"],["regularlly","regularly"],["regulax","regular"],["reguler","regular"],["regulr","regular"],["regultor","regulator"],["regultors","regulators"],["regultory","regulatory"],["regurlarly","regularly"],["reguster","register"],["rehersal","rehearsal"],["rehersing","rehearsing"],["reicarnation","reincarnation"],["reigining","reigning"],["reigonal","regional"],["reigster","register"],["reigstered","registered"],["reigstering","registering"],["reigsters","registers"],["reigstration","registration"],["reimplemenet","reimplement"],["reimplementaion","reimplementation"],["reimplementaions","reimplementations"],["reimplemention","reimplementation"],["reimplementions","reimplementations"],["reimplented","reimplemented"],["reimplents","reimplements"],["reimpliment","reimplement"],["reimplimenting","reimplementing"],["reimplmenet","reimplement"],["reimplment","reimplement"],["reimplmentation","reimplementation"],["reimplmented","reimplemented"],["reimplmenting","reimplementing"],["reimplments","reimplements"],["reimpplement","reimplement"],["reimpplementating","reimplementing"],["reimpplementation","reimplementation"],["reimpplemented","reimplemented"],["reimpremented","reimplemented"],["reinfoce","reinforce"],["reinfoced","reinforced"],["reinfocement","reinforcement"],["reinfocements","reinforcements"],["reinfoces","reinforces"],["reinfocing","reinforcing"],["reinitailise","reinitialise"],["reinitailised","reinitialised"],["reinitailize","reinitialize"],["reinitalize","reinitialize"],["reinitilize","reinitialize"],["reinitilized","reinitialized"],["reinstatiate","reinstantiate"],["reinstatiated","reinstantiated"],["reinstatiates","reinstantiates"],["reinstatiation","reinstantiation"],["reintantiate","reinstantiate"],["reintantiating","reinstantiating"],["reintepret","reinterpret"],["reintepreted","reinterpreted"],["reister","register"],["reitterate","reiterate"],["reitterated","reiterated"],["reitterates","reiterates"],["reivison","revision"],["rejplace","replace"],["reknown","renown"],["reknowned","renowned"],["rekursed","recursed"],["rekursion","recursion"],["rekursive","recursive"],["relaative","relative"],["relady","ready"],["relaease","release"],["relaese","release"],["relaesed","released"],["relaeses","releases"],["relaesing","releasing"],["relaged","related"],["relaimed","reclaimed"],["relaion","relation"],["relaive","relative"],["relaly","really"],["relase","release"],["relased","released"],["relaser","releaser"],["relases","releases"],["relashionship","relationship"],["relashionships","relationships"],["relasing","releasing"],["relataive","relative"],["relatated","related"],["relatd","related"],["relatdness","relatedness"],["relatibe","relative"],["relatibely","relatively"],["relatievly","relatively"],["relatiopnship","relationship"],["relativ","relative"],["relativly","relatively"],["relavant","relevant"],["relavent","relevant"],["releaase","release"],["releaased","released"],["relead","reload"],["releae","release"],["releaed","released"],["releaeing","releasing"],["releaing","releasing"],["releas","release"],["releasead","released"],["releasse","release"],["releated","related"],["releating","relating"],["releation","relation"],["releations","relations"],["releationship","relationship"],["releationships","relationships"],["releative","relative"],["releavant","relevant"],["relecant","relevant"],["releive","relieve"],["releived","relieved"],["releiver","reliever"],["releoad","reload"],["relese","release"],["relesed","released"],["releses","releases"],["reletive","relative"],["reletively","relatively"],["relevabt","relevant"],["relevane","relevant"],["releveant","relevant"],["relevence","relevance"],["relevent","relevant"],["relfected","reflected"],["relfecting","reflecting"],["relfection","reflection"],["relfections","reflections"],["reliablity","reliability"],["relient","reliant"],["religeous","religious"],["religous","religious"],["religously","religiously"],["relinguish","relinquish"],["relinguishing","relinquishing"],["relinqushment","relinquishment"],["relintquish","relinquish"],["relitavely","relatively"],["relly","really"],["reloade","reload"],["relocae","relocate"],["relocaes","relocates"],["relocaiing","relocating"],["relocaing","relocating"],["relocaion","relocation"],["relocaions","relocations"],["relocaite","relocate"],["relocaites","relocates"],["relocaiting","relocating"],["relocaition","relocation"],["relocaitions","relocations"],["relocaiton","relocation"],["relocaitons","relocations"],["relocateable","relocatable"],["reloccate","relocate"],["reloccated","relocated"],["reloccates","relocates"],["relpacement","replacement"],["relpy","reply"],["reltive","relative"],["relyable","reliable"],["relyably","reliably"],["relyed","relied"],["relys","relies"],["remaing","remaining"],["remainging","remaining"],["remainig","remaining"],["remainst","remains"],["remaning","remaining"],["remaped","remapped"],["remaping","remapping"],["rembember","remember"],["rembembered","remembered"],["rembembering","remembering"],["rembembers","remembers"],["rember","remember"],["remeber","remember"],["remebered","remembered"],["remebering","remembering"],["remebers","remembers"],["rememberable","memorable"],["rememberance","remembrance"],["rememberd","remembered"],["remembrence","remembrance"],["rememeber","remember"],["rememebered","remembered"],["rememebering","remembering"],["rememebers","remembers"],["rememebr","remember"],["rememebred","remembered"],["rememebrs","remembers"],["rememember","remember"],["rememembered","remembered"],["rememembers","remembers"],["rememer","remember"],["rememered","remembered"],["rememers","remembers"],["rememor","remember"],["rememored","remembered"],["rememoring","remembering"],["rememors","remembers"],["rememver","remember"],["remenant","remnant"],["remenber","remember"],["remenicent","reminiscent"],["remian","remain"],["remianed","remained"],["remianing","remaining"],["remians","remains"],["reminent","remnant"],["reminescent","reminiscent"],["remining","remaining"],["reminiscense","reminiscence"],["reminscent","reminiscent"],["reminsicent","reminiscent"],["remmeber","remember"],["remmebered","remembered"],["remmebering","remembering"],["remmebers","remembers"],["remmove","remove"],["remoce","remove"],["remoive","remove"],["remoived","removed"],["remoives","removes"],["remoiving","removing"],["remontly","remotely"],["remoote","remote"],["remore","remote"],["remorted","reported"],["remot","remote"],["removce","remove"],["removeable","removable"],["removefromat","removeformat"],["removeing","removing"],["removerd","removed"],["remve","remove"],["remved","removed"],["remves","removes"],["remvoe","remove"],["remvoed","removed"],["remvoes","removes"],["remvove","remove"],["remvoved","removed"],["remvoves","removes"],["remvs","removes"],["renabled","re-enabled"],["renderadble","renderable"],["renderd","rendered"],["rendereing","rendering"],["rendererd","rendered"],["renderered","rendered"],["renderering","rendering"],["renderning","rendering"],["renderr","render"],["renderring","rendering"],["rendevous","rendezvous"],["rendezous","rendezvous"],["rendired","rendered"],["rendirer","renderer"],["rendirers","renderers"],["rendiring","rendering"],["rendring","rendering"],["renedered","rendered"],["renegatiotiable","renegotiable"],["renegatiotiate","renegotiate"],["renegatiotiated","renegotiated"],["renegatiotiates","renegotiates"],["renegatiotiating","renegotiating"],["renegatiotiation","renegotiation"],["renegatiotiations","renegotiations"],["renegatiotiator","renegotiator"],["renegatiotiators","renegotiators"],["renegoable","renegotiable"],["renegoate","renegotiate"],["renegoated","renegotiated"],["renegoates","renegotiates"],["renegoatiable","renegotiable"],["renegoatiate","renegotiate"],["renegoatiated","renegotiated"],["renegoatiates","renegotiates"],["renegoatiating","renegotiating"],["renegoatiation","renegotiation"],["renegoatiations","renegotiations"],["renegoatiator","renegotiator"],["renegoatiators","renegotiators"],["renegoating","renegotiating"],["renegoation","renegotiation"],["renegoations","renegotiations"],["renegoator","renegotiator"],["renegoators","renegotiators"],["renegociable","renegotiable"],["renegociate","renegotiate"],["renegociated","renegotiated"],["renegociates","renegotiates"],["renegociating","renegotiating"],["renegociation","renegotiation"],["renegociations","renegotiations"],["renegociator","renegotiator"],["renegociators","renegotiators"],["renegogtiable","renegotiable"],["renegogtiate","renegotiate"],["renegogtiated","renegotiated"],["renegogtiates","renegotiates"],["renegogtiating","renegotiating"],["renegogtiation","renegotiation"],["renegogtiations","renegotiations"],["renegogtiator","renegotiator"],["renegogtiators","renegotiators"],["renegoitable","renegotiable"],["renegoitate","renegotiate"],["renegoitated","renegotiated"],["renegoitates","renegotiates"],["renegoitating","renegotiating"],["renegoitation","renegotiation"],["renegoitations","renegotiations"],["renegoitator","renegotiator"],["renegoitators","renegotiators"],["renegoptionsotiable","renegotiable"],["renegoptionsotiate","renegotiate"],["renegoptionsotiated","renegotiated"],["renegoptionsotiates","renegotiates"],["renegoptionsotiating","renegotiating"],["renegoptionsotiation","renegotiation"],["renegoptionsotiations","renegotiations"],["renegoptionsotiator","renegotiator"],["renegoptionsotiators","renegotiators"],["renegosiable","renegotiable"],["renegosiate","renegotiate"],["renegosiated","renegotiated"],["renegosiates","renegotiates"],["renegosiating","renegotiating"],["renegosiation","renegotiation"],["renegosiations","renegotiations"],["renegosiator","renegotiator"],["renegosiators","renegotiators"],["renegotable","renegotiable"],["renegotaiable","renegotiable"],["renegotaiate","renegotiate"],["renegotaiated","renegotiated"],["renegotaiates","renegotiates"],["renegotaiating","renegotiating"],["renegotaiation","renegotiation"],["renegotaiations","renegotiations"],["renegotaiator","renegotiator"],["renegotaiators","renegotiators"],["renegotaible","renegotiable"],["renegotaite","renegotiate"],["renegotaited","renegotiated"],["renegotaites","renegotiates"],["renegotaiting","renegotiating"],["renegotaition","renegotiation"],["renegotaitions","renegotiations"],["renegotaitor","renegotiator"],["renegotaitors","renegotiators"],["renegotate","renegotiate"],["renegotated","renegotiated"],["renegotates","renegotiates"],["renegotatiable","renegotiable"],["renegotatiate","renegotiate"],["renegotatiated","renegotiated"],["renegotatiates","renegotiates"],["renegotatiating","renegotiating"],["renegotatiation","renegotiation"],["renegotatiations","renegotiations"],["renegotatiator","renegotiator"],["renegotatiators","renegotiators"],["renegotatible","renegotiable"],["renegotatie","renegotiate"],["renegotatied","renegotiated"],["renegotaties","renegotiates"],["renegotating","renegotiating"],["renegotation","renegotiation"],["renegotations","renegotiations"],["renegotatior","renegotiator"],["renegotatiors","renegotiators"],["renegotator","renegotiator"],["renegotators","renegotiators"],["renegothiable","renegotiable"],["renegothiate","renegotiate"],["renegothiated","renegotiated"],["renegothiates","renegotiates"],["renegothiating","renegotiating"],["renegothiation","renegotiation"],["renegothiations","renegotiations"],["renegothiator","renegotiator"],["renegothiators","renegotiators"],["renegotible","renegotiable"],["renegoticable","renegotiable"],["renegoticate","renegotiate"],["renegoticated","renegotiated"],["renegoticates","renegotiates"],["renegoticating","renegotiating"],["renegotication","renegotiation"],["renegotications","renegotiations"],["renegoticator","renegotiator"],["renegoticators","renegotiators"],["renegotioable","renegotiable"],["renegotioate","renegotiate"],["renegotioated","renegotiated"],["renegotioates","renegotiates"],["renegotioating","renegotiating"],["renegotioation","renegotiation"],["renegotioations","renegotiations"],["renegotioator","renegotiator"],["renegotioators","renegotiators"],["renegotioble","renegotiable"],["renegotion","renegotiation"],["renegotionable","renegotiable"],["renegotionate","renegotiate"],["renegotionated","renegotiated"],["renegotionates","renegotiates"],["renegotionating","renegotiating"],["renegotionation","renegotiation"],["renegotionations","renegotiations"],["renegotionator","renegotiator"],["renegotionators","renegotiators"],["renegotions","renegotiations"],["renegotiotable","renegotiable"],["renegotiotate","renegotiate"],["renegotiotated","renegotiated"],["renegotiotates","renegotiates"],["renegotiotating","renegotiating"],["renegotiotation","renegotiation"],["renegotiotations","renegotiations"],["renegotiotator","renegotiator"],["renegotiotators","renegotiators"],["renegotiote","renegotiate"],["renegotioted","renegotiated"],["renegotiotes","renegotiates"],["renegotioting","renegotiating"],["renegotiotion","renegotiation"],["renegotiotions","renegotiations"],["renegotiotor","renegotiator"],["renegotiotors","renegotiators"],["renegotitable","renegotiable"],["renegotitae","renegotiate"],["renegotitaed","renegotiated"],["renegotitaes","renegotiates"],["renegotitaing","renegotiating"],["renegotitaion","renegotiation"],["renegotitaions","renegotiations"],["renegotitaor","renegotiator"],["renegotitaors","renegotiators"],["renegotitate","renegotiate"],["renegotitated","renegotiated"],["renegotitates","renegotiates"],["renegotitating","renegotiating"],["renegotitation","renegotiation"],["renegotitations","renegotiations"],["renegotitator","renegotiator"],["renegotitators","renegotiators"],["renegotite","renegotiate"],["renegotited","renegotiated"],["renegotites","renegotiates"],["renegotiting","renegotiating"],["renegotition","renegotiation"],["renegotitions","renegotiations"],["renegotitor","renegotiator"],["renegotitors","renegotiators"],["renegoziable","renegotiable"],["renegoziate","renegotiate"],["renegoziated","renegotiated"],["renegoziates","renegotiates"],["renegoziating","renegotiating"],["renegoziation","renegotiation"],["renegoziations","renegotiations"],["renegoziator","renegotiator"],["renegoziators","renegotiators"],["reneweal","renewal"],["renewl","renewal"],["renforce","reinforce"],["renforced","reinforced"],["renforcement","reinforcement"],["renforcements","reinforcements"],["renforces","reinforces"],["rennovate","renovate"],["rennovated","renovated"],["rennovating","renovating"],["rennovation","renovation"],["rentime","runtime"],["rentors","renters"],["reoadmap","roadmap"],["reoccurrence","recurrence"],["reoder","reorder"],["reomvable","removable"],["reomve","remove"],["reomved","removed"],["reomves","removes"],["reomving","removing"],["reonly","read-only"],["reopended","reopened"],["reoport","report"],["reopsitory","repository"],["reord","record"],["reorded","reorder"],["reorer","reorder"],["reorganision","reorganisation"],["reorginised","reorganised"],["reorginized","reorganized"],["reosnable","reasonable"],["reosne","reason"],["reosurce","resource"],["reosurced","resourced"],["reosurces","resources"],["reosurcing","resourcing"],["reounded","rounded"],["repace","replace"],["repaced","replaced"],["repacement","replacement"],["repacements","replacements"],["repaces","replaces"],["repacing","replacing"],["repackge","repackage"],["repackged","repackaged"],["repaitnt","repaint"],["reparamterization","reparameterization"],["repblic","republic"],["repblican","republican"],["repblicans","republicans"],["repblics","republics"],["repeates","repeats"],["repeatly","repeatedly"],["repect","respect"],["repectable","respectable"],["repected","respected"],["repecting","respecting"],["repective","respective"],["repectively","respectively"],["repects","respects"],["repedability","repeatability"],["repedable","repeatable"],["repeition","repetition"],["repentence","repentance"],["repentent","repentant"],["reperesent","represent"],["reperesentation","representation"],["reperesentational","representational"],["reperesentations","representations"],["reperesented","represented"],["reperesenting","representing"],["reperesents","represents"],["repersentation","representation"],["repertoir","repertoire"],["repesent","represent"],["repesentation","representation"],["repesentational","representational"],["repesented","represented"],["repesenting","representing"],["repesents","represents"],["repet","repeat"],["repetative","repetitive"],["repete","repeat"],["repeteadly","repeatedly"],["repetetion","repetition"],["repetetions","repetitions"],["repetetive","repetitive"],["repeting","repeating"],["repetion","repetition"],["repetions","repetitions"],["repetive","repetitive"],["repid","rapid"],["repition","repetition"],["repitions","repetitions"],["repitition","repetition"],["repititions","repetitions"],["replacability","replaceability"],["replacables","replaceables"],["replacacing","replacing"],["replacalbe","replaceable"],["replacalbes","replaceables"],["replacament","replacement"],["replacaments","replacements"],["replacate","replicate"],["replacated","replicated"],["replacates","replicates"],["replacating","replicating"],["replacation","replication"],["replacd","replaced"],["replaceemnt","replacement"],["replaceemnts","replacements"],["replacemenet","replacement"],["replacmenet","replacement"],["replacment","replacement"],["replacments","replacements"],["replacong","replacing"],["replaint","repaint"],["replasement","replacement"],["replasements","replacements"],["replcace","replace"],["replcaced","replaced"],["replcaof","replicaof"],["replicae","replicate"],["replicaes","replicates"],["replicaiing","replicating"],["replicaion","replication"],["replicaions","replications"],["replicaite","replicate"],["replicaites","replicates"],["replicaiting","replicating"],["replicaition","replication"],["replicaitions","replications"],["replicaiton","replication"],["replicaitons","replications"],["repling","replying"],["replys","replies"],["reponding","responding"],["reponse","response"],["reponses","responses"],["reponsibilities","responsibilities"],["reponsibility","responsibility"],["reponsible","responsible"],["reporing","reporting"],["reporitory","repository"],["reportadly","reportedly"],["reportign","reporting"],["reportresouces","reportresources"],["reposiotory","repository"],["reposiry","repository"],["repositiories","repositories"],["repositiory","repository"],["repositiroes","repositories"],["reposititioning","repositioning"],["repositorry","repository"],["repositotries","repositories"],["repositotry","repository"],["repositry","repository"],["reposoitory","repository"],["reposond","respond"],["reposonder","responder"],["reposonders","responders"],["reposonding","responding"],["reposonse","response"],["reposonses","responses"],["repostiories","repositories"],["repostiory","repository"],["repostories","repositories"],["repostory","repository"],["repport","report"],["reppository","repository"],["repraesentation","representation"],["repraesentational","representational"],["repraesentations","representations"],["reprecussion","repercussion"],["reprecussions","repercussions"],["repreesnt","represent"],["repreesnted","represented"],["repreesnts","represents"],["reprensent","represent"],["reprensentation","representation"],["reprensentational","representational"],["reprensentations","representations"],["reprepresents","represents"],["represantation","representation"],["represantational","representational"],["represantations","representations"],["represantative","representative"],["represenatation","representation"],["represenatational","representational"],["represenatations","representations"],["represenation","representation"],["represenational","representational"],["represenations","representations"],["represend","represent"],["representaion","representation"],["representaional","representational"],["representaions","representations"],["representaiton","representation"],["representated","represented"],["representating","representing"],["representd","represented"],["representiative","representative"],["represention","representation"],["representions","representations"],["representive","representative"],["representives","representatives"],["represet","represent"],["represetation","representation"],["represeted","represented"],["represeting","representing"],["represets","represents"],["represnet","represent"],["represnetated","represented"],["represnetation","representation"],["represnetations","representations"],["represneted","represented"],["represneting","representing"],["represnets","represents"],["represnt","represent"],["represntation","representation"],["represntative","representative"],["represnted","represented"],["represnts","represents"],["repressent","represent"],["repressentation","representation"],["repressenting","representing"],["repressents","represents"],["reprociblbe","reproducible"],["reprocible","reproducible"],["reprodice","reproduce"],["reprodiced","reproduced"],["reprodicibility","reproducibility"],["reprodicible","reproducible"],["reprodicibly","reproducibly"],["reprodicing","reproducing"],["reprodiction","reproduction"],["reproducabely","reproducibly"],["reproducability","reproducibility"],["reproducable","reproducible"],["reproducablitity","reproducibility"],["reproducably","reproducibly"],["reproduciability","reproduceability"],["reproduciable","reproduceable"],["reproduciblity","reproducibility"],["reprot","report"],["reprots","reports"],["reprsent","represent"],["reprsentation","representation"],["reprsentations","representations"],["reprsented","represented"],["reprsenting","representing"],["reprsents","represents"],["reprtoire","repertoire"],["reprucible","reproducible"],["repsectively","respectively"],["repsonse","response"],["repsonses","responses"],["repsonsible","responsible"],["repspectively","respectively"],["repsresents","represents"],["reptition","repetition"],["repubic","republic"],["repubican","republican"],["repubicans","republicans"],["repubics","republics"],["republi","republic"],["republian","republican"],["republians","republicans"],["republis","republics"],["repulic","republic"],["repulican","republican"],["repulicans","republicans"],["repulics","republics"],["reputpose","repurpose"],["reputposed","repurposed"],["reputposes","repurposes"],["reputposing","repurposing"],["reqest","request"],["reqested","requested"],["reqests","requests"],["reqeuest","request"],["reqeust","request"],["reqeusted","requested"],["reqeusting","requesting"],["reqeusts","requests"],["reqiest","request"],["reqire","require"],["reqired","required"],["reqirement","requirement"],["reqirements","requirements"],["reqires","requires"],["reqiring","requiring"],["reqiure","require"],["reqrite","rewrite"],["reqrites","rewrites"],["requencies","frequencies"],["requency","frequency"],["requeried","required"],["requeriment","requirement"],["requeriments","requirements"],["reques","request"],["requesr","request"],["requestd","requested"],["requestesd","requested"],["requestested","requested"],["requestied","requested"],["requestying","requesting"],["requet","request"],["requeted","requested"],["requeting","requesting"],["requets","requests"],["requeum","requiem"],["requied","required"],["requierd","required"],["requiere","require"],["requiered","required"],["requierement","requirement"],["requierements","requirements"],["requieres","requires"],["requiering","requiring"],["requies","requires"],["requiest","request"],["requiested","requested"],["requiesting","requesting"],["requiests","requests"],["requird","required"],["requireing","requiring"],["requiremenet","requirement"],["requiremenets","requirements"],["requiremnt","requirement"],["requirment","requirement"],["requirments","requirements"],["requisit","requisite"],["requisits","requisites"],["requre","require"],["requred","required"],["requrement","requirement"],["requrements","requirements"],["requres","requires"],["requrest","request"],["requrested","requested"],["requresting","requesting"],["requrests","requests"],["requried","required"],["requriement","requirement"],["requriements","requirements"],["requries","requires"],["requriment","requirement"],["requring","requiring"],["requrired","required"],["requrirement","requirement"],["requrirements","requirements"],["requris","require"],["requsite","requisite"],["requsites","requisites"],["requst","request"],["requsted","requested"],["requsting","requesting"],["requsts","requests"],["reregisteration","reregistration"],["rererences","references"],["rerference","reference"],["rerferences","references"],["rerpesentation","representation"],["rertieve","retrieve"],["rertieved","retrieved"],["rertiever","retriever"],["rertievers","retrievers"],["rertieves","retrieves"],["reruirement","requirement"],["reruirements","requirements"],["reruning","rerunning"],["rerwite","rewrite"],["resarch","research"],["resart","restart"],["resarts","restarts"],["resaurant","restaurant"],["resaurants","restaurants"],["rescaned","rescanned"],["rescource","resource"],["rescourced","resourced"],["rescources","resources"],["rescourcing","resourcing"],["rescrition","restriction"],["rescritions","restrictions"],["rescueing","rescuing"],["reseach","research"],["reseached","researched"],["researvation","reservation"],["researvations","reservations"],["researve","reserve"],["researved","reserved"],["researves","reserves"],["researving","reserving"],["reselction","reselection"],["resembelance","resemblance"],["resembes","resembles"],["resemblence","resemblance"],["resently","recently"],["resepect","respect"],["resepected","respected"],["resepecting","respecting"],["resepective","respective"],["resepectively","respectively"],["resepects","respects"],["reseration","reservation"],["reserv","reserve"],["reserverd","reserved"],["reservered","reserved"],["resestatus","resetstatus"],["resetable","resettable"],["reseted","reset"],["reseting","resetting"],["resetted","reset"],["reseved","reserved"],["reseverd","reserved"],["resevered","reserved"],["resevering","reserving"],["resevoir","reservoir"],["resgister","register"],["resgisters","registers"],["residental","residential"],["resierfs","reiserfs"],["resignement","resignment"],["resilence","resilience"],["resistable","resistible"],["resistence","resistance"],["resistent","resistant"],["resitance","resistance"],["resitances","resistances"],["resitor","resistor"],["resitors","resistors"],["resivwar","reservoir"],["resizeable","resizable"],["resizeble","resizable"],["reslection","reselection"],["reslove","resolve"],["resloved","resolved"],["resloves","resolves"],["resloving","resolving"],["reslut","result"],["resluts","results"],["resoect","respect"],["resoective","respective"],["resoiurce","resource"],["resoiurced","resourced"],["resoiurces","resources"],["resoiurcing","resourcing"],["resoltion","resolution"],["resoltuion","resolution"],["resoltuions","resolutions"],["resoluitons","resolutions"],["resolutin","resolution"],["resolutino","resolution"],["resolutinos","resolutions"],["resolutins","resolutions"],["resoluton","resolution"],["resolvinf","resolving"],["reson","reason"],["resonable","reasonable"],["resons","reasons"],["resonse","response"],["resonses","responses"],["resoource","resource"],["resoourced","resourced"],["resoources","resources"],["resoourcing","resourcing"],["resopnse","response"],["resopnses","responses"],["resorce","resource"],["resorced","resourced"],["resorces","resources"],["resorcing","resourcing"],["resore","restore"],["resorece","resource"],["resoreces","resources"],["resoruce","resource"],["resoruced","resourced"],["resoruces","resources"],["resorucing","resourcing"],["resotration","restoration"],["resotrations","restorations"],["resotrative","restorative"],["resotre","restore"],["resotrer","restorer"],["resotrers","restorers"],["resotres","restores"],["resotring","restoring"],["resouce","resource"],["resouced","resourced"],["resouces","resources"],["resoucing","resourcing"],["resoultion","resolution"],["resoultions","resolutions"],["resourcees","resources"],["resourceype","resourcetype"],["resoure","resource"],["resourecs","resources"],["resoured","resourced"],["resoures","resources"],["resourses","resources"],["resoution","resolution"],["resoves","resolves"],["resovle","resolve"],["resovled","resolved"],["resovles","resolves"],["resovling","resolving"],["respawining","respawning"],["respecitve","respective"],["respecitvely","respectively"],["respecive","respective"],["respecively","respectively"],["respectivelly","respectively"],["respectivley","respectively"],["respectivly","respectively"],["respnse","response"],["respnses","responses"],["respoduce","reproduce"],["responce","response"],["responces","responses"],["responibilities","responsibilities"],["responisble","responsible"],["responnsibilty","responsibility"],["responsabilities","responsibilities"],["responsability","responsibility"],["responsable","responsible"],["responsbile","responsible"],["responser's","responder's"],["responser","responder"],["responsers","responders"],["responsess","responses"],["responsibile","responsible"],["responsibilites","responsibilities"],["responsibilty","responsibility"],["responsiblities","responsibilities"],["responsiblity","responsibility"],["responsing","responding"],["respose","response"],["resposes","responses"],["resposibility","responsibility"],["resposible","responsible"],["resposiblity","responsibility"],["respositories","repositories"],["respository","repository"],["resposive","responsive"],["resposiveness","responsiveness"],["resposne","response"],["resposnes","responses"],["respresent","represent"],["respresentation","representation"],["respresentational","representational"],["respresentations","representations"],["respresented","represented"],["respresenting","representing"],["respresents","represents"],["resquest","request"],["resrouce","resource"],["resrouced","resourced"],["resrouces","resources"],["resroucing","resourcing"],["reSructuredText","reStructuredText"],["resrved","reserved"],["ressapee","recipe"],["ressemblance","resemblance"],["ressemble","resemble"],["ressembled","resembled"],["ressemblence","resemblance"],["ressembling","resembling"],["ressemle","resemble"],["resset","reset"],["resseted","reset"],["ressets","resets"],["ressetting","resetting"],["ressize","resize"],["ressizes","resizes"],["ressource","resource"],["ressourced","resourced"],["ressources","resources"],["ressourcing","resourcing"],["resssurecting","resurrecting"],["ressult","result"],["ressurect","resurrect"],["ressurected","resurrected"],["ressurecting","resurrecting"],["ressurection","resurrection"],["ressurects","resurrects"],["ressurrection","resurrection"],["restarant","restaurant"],["restarants","restaurants"],["restaraunt","restaurant"],["restaraunteur","restaurateur"],["restaraunteurs","restaurateurs"],["restaraunts","restaurants"],["restauranteurs","restaurateurs"],["restauration","restoration"],["restauraunt","restaurant"],["restaurnad","restaurant"],["restaurnat","restaurant"],["resteraunt","restaurant"],["resteraunts","restaurants"],["restes","reset"],["restesting","retesting"],["resticted","restricted"],["restoding","restoring"],["restoiring","restoring"],["restor","restore"],["restorated","restored"],["restoreable","restorable"],["restoreble","restorable"],["restoreing","restoring"],["restors","restores"],["restouration","restoration"],["restrcted","restricted"],["restrcuture","restructure"],["restriced","restricted"],["restroing","restoring"],["reStructuredTetx","reStructuredText"],["reStructuredTxet","reStructuredText"],["reStrucuredText","reStructuredText"],["restuarant","restaurant"],["restuarants","restaurants"],["reStucturedText","reStructuredText"],["restucturing","restructuring"],["reStucuredText","reStructuredText"],["resturant","restaurant"],["resturants","restaurants"],["resturaunt","restaurant"],["resturaunts","restaurants"],["resturcturation","restructuration"],["resturcture","restructure"],["resturctured","restructured"],["resturctures","restructures"],["resturcturing","restructuring"],["resturns","returns"],["resuable","reusable"],["resuables","reusables"],["resubstituion","resubstitution"],["resuction","reduction"],["resuilt","result"],["resuilted","resulted"],["resuilting","resulting"],["resuilts","results"],["resul","result"],["resuling","resulting"],["resullt","result"],["resulotion","resolution"],["resulsets","resultsets"],["resulst","results"],["resultion","resolution"],["resultions","resolutions"],["resultung","resulting"],["resulution","resolution"],["resumbmitting","resubmitting"],["resumitted","resubmitted"],["resumt","resume"],["resuorce","resource"],["resuorced","resourced"],["resuorces","resources"],["resuorcing","resourcing"],["resurce","resource"],["resurced","resourced"],["resurces","resources"],["resurcing","resourcing"],["resurecting","resurrecting"],["resursively","recursively"],["resuse","reuse"],["resuts","results"],["resycn","resync"],["retalitated","retaliated"],["retalitation","retaliation"],["retangles","rectangles"],["retanslate","retranslate"],["rether","rather"],["retieve","retrieve"],["retieved","retrieved"],["retieves","retrieves"],["retieving","retrieving"],["retinew","retinue"],["retireve","retrieve"],["retireved","retrieved"],["retirever","retriever"],["retirevers","retrievers"],["retireves","retrieves"],["retireving","retrieving"],["retirned","returned"],["retore","restore"],["retored","restored"],["retores","restores"],["retoric","rhetoric"],["retorical","rhetorical"],["retoring","restoring"],["retourned","returned"],["retpresenting","representing"],["retquirement","requirement"],["retquirements","requirements"],["retquireseek","requireseek"],["retquiresgpos","requiresgpos"],["retquiresgsub","requiresgsub"],["retquiressl","requiressl"],["retranser","retransfer"],["retransferd","retransferred"],["retransfered","retransferred"],["retransfering","retransferring"],["retransferrd","retransferred"],["retransmited","retransmitted"],["retransmition","retransmission"],["retreevable","retrievable"],["retreeval","retrieval"],["retreeve","retrieve"],["retreeved","retrieved"],["retreeves","retrieves"],["retreeving","retrieving"],["retreivable","retrievable"],["retreival","retrieval"],["retreive","retrieve"],["retreived","retrieved"],["retreives","retrieves"],["retreiving","retrieving"],["retrevable","retrievable"],["retreval","retrieval"],["retreve","retrieve"],["retreved","retrieved"],["retreves","retrieves"],["retreving","retrieving"],["retrict","restrict"],["retricted","restricted"],["retriebe","retrieve"],["retriece","retrieve"],["retrieces","retrieves"],["retriev","retrieve"],["retrieveds","retrieved"],["retrive","retrieve"],["retrived","retrieved"],["retrives","retrieves"],["retriving","retrieving"],["retrn","return"],["retrned","returned"],["retrns","returns"],["retrun","return"],["retruned","returned"],["retruns","returns"],["retrvieve","retrieve"],["retrvieved","retrieved"],["retrviever","retriever"],["retrvievers","retrievers"],["retrvieves","retrieves"],["retsart","restart"],["retsarts","restarts"],["retun","return"],["retunrned","returned"],["retunrs","returns"],["retuns","returns"],["retur","return"],["reture","return"],["retured","returned"],["returend","returned"],["retures","returns"],["returing","returning"],["returm","return"],["returmed","returned"],["returming","returning"],["returms","returns"],["returnd","returned"],["returnes","returns"],["returnig","returning"],["returnn","return"],["returnned","returned"],["returnning","returning"],["returs","returns"],["retursn","returns"],["retutning","returning"],["retyring","retrying"],["reudce","reduce"],["reudced","reduced"],["reudces","reduces"],["reudction","reduction"],["reudctions","reductions"],["reuest","request"],["reuests","requests"],["reulator","regulator"],["reundant","redundant"],["reundantly","redundantly"],["reuplad","reupload"],["reupladed","reuploaded"],["reuplader","reuploader"],["reupladers","reuploaders"],["reuplading","reuploading"],["reuplads","reuploads"],["reuplaod","reupload"],["reuplaoded","reuploaded"],["reuplaoder","reuploader"],["reuplaoders","reuploaders"],["reuplaoding","reuploading"],["reuplaods","reuploads"],["reuplod","reupload"],["reuploded","reuploaded"],["reuploder","reuploader"],["reuploders","reuploaders"],["reuploding","reuploading"],["reuplods","reuploads"],["reuqest","request"],["reuqested","requested"],["reuqesting","requesting"],["reuqests","requests"],["reurn","return"],["reursively","recursively"],["reuslt","result"],["reussing","reusing"],["reutnred","returned"],["reutrn","return"],["reutrns","returns"],["revaildating","revalidating"],["revaluated","reevaluated"],["reveiw","review"],["reveiwed","reviewed"],["reveiwer","reviewer"],["reveiwers","reviewers"],["reveiwing","reviewing"],["reveiws","reviews"],["revelent","relevant"],["revelution","revolution"],["revelutions","revolutions"],["reveokes","revokes"],["reverce","reverse"],["reverced","reversed"],["revereces","references"],["reverese","reverse"],["reveresed","reversed"],["reveret","revert"],["revereted","reverted"],["reversable","reversible"],["reverse-engeneer","reverse-engineer"],["reverse-engeneering","reverse-engineering"],["reverse-engieer","reverse-engineer"],["reverseed","reversed"],["reversees","reverses"],["reverve","reserve"],["reverved","reserved"],["revewrse","reverse"],["reviewl","review"],["reviewsectio","reviewsection"],["revisisions","revisions"],["revison","revision"],["revisons","revisions"],["revist","revisit"],["revisted","revisited"],["revisting","revisiting"],["revists","revisits"],["reviwed","reviewed"],["reviwer","reviewer"],["reviwers","reviewers"],["reviwing","reviewing"],["revoluion","revolution"],["revolutionar","revolutionary"],["revrese","reverse"],["revrieve","retrieve"],["revrieved","retrieved"],["revriever","retriever"],["revrievers","retrievers"],["revrieves","retrieves"],["revsion","revision"],["rewiev","review"],["rewieved","reviewed"],["rewiever","reviewer"],["rewieving","reviewing"],["rewievs","reviews"],["rewirtable","rewritable"],["rewirte","rewrite"],["rewirtten","rewritten"],["rewitable","rewritable"],["rewite","rewrite"],["rewitten","rewritten"],["reworkd","reworked"],["rewriet","rewrite"],["rewriite","rewrite"],["rewriten","rewritten"],["rewritting","rewriting"],["rewuired","required"],["rference","reference"],["rferences","references"],["rfeturned","returned"],["rgister","register"],["rhymme","rhyme"],["rhythem","rhythm"],["rhythim","rhythm"],["rhythimcally","rhythmically"],["rhytmic","rhythmic"],["ridiculus","ridiculous"],["righ","right"],["righht","right"],["righmost","rightmost"],["rightt","right"],["rigourous","rigorous"],["rigt","right"],["rigth","right"],["rigths","rights"],["rigurous","rigorous"],["riminder","reminder"],["riminders","reminders"],["riminding","reminding"],["rimitives","primitives"],["rininging","ringing"],["rispective","respective"],["ristrict","restrict"],["ristricted","restricted"],["ristriction","restriction"],["ritable","writable"],["rivised","revised"],["rizes","rises"],["rlation","relation"],["rlse","else"],["rmeote","remote"],["rmeove","remove"],["rmeoved","removed"],["rmeoves","removes"],["rmove","remove"],["rmoved","removed"],["rmoving","removing"],["roataion","rotation"],["roatation","rotation"],["roated","rotated"],["roation","rotation"],["roboustness","robustness"],["robustnes","robustness"],["Rockerfeller","Rockefeller"],["rococco","rococo"],["rocord","record"],["rocorded","recorded"],["rocorder","recorder"],["rocording","recording"],["rocordings","recordings"],["rocords","records"],["roduceer","producer"],["roigin","origin"],["roiginal","original"],["roiginally","originally"],["roiginals","originals"],["roiginating","originating"],["roigins","origins"],["romote","remote"],["romoted","remoted"],["romoteing","remoting"],["romotely","remotely"],["romotes","remotes"],["romoting","remoting"],["romotly","remotely"],["roomate","roommate"],["ropeat","repeat"],["rorated","rotated"],["rosponse","response"],["rosponsive","responsive"],["rotaion","rotation"],["rotaions","rotations"],["rotaiton","rotation"],["rotaitons","rotations"],["rotat","rotate"],["rotataion","rotation"],["rotataions","rotations"],["rotateable","rotatable"],["rouding","rounding"],["roughtly","roughly"],["rougly","roughly"],["rouine","routine"],["rouines","routines"],["round-robbin","round-robin"],["roundign","rounding"],["roung","round"],["rountine","routine"],["rountines","routines"],["routiens","routines"],["routins","routines"],["rovide","provide"],["rovided","provided"],["rovider","provider"],["rovides","provides"],["roviding","providing"],["rqeuested","requested"],["rqeuesting","requesting"],["rquested","requested"],["rquesting","requesting"],["rquire","require"],["rquired","required"],["rquirement","requirement"],["rquires","requires"],["rquiring","requiring"],["rranslation","translation"],["rranslations","translations"],["rrase","erase"],["rrror","error"],["rrrored","errored"],["rrroring","erroring"],["rrrors","errors"],["rubarb","rhubarb"],["rucuperate","recuperate"],["rudimentally","rudimentary"],["rudimentatry","rudimentary"],["rudimentory","rudimentary"],["rudimentry","rudimentary"],["rulle","rule"],["rumatic","rheumatic"],["runn","run"],["runnig","running"],["runnign","running"],["runnigng","running"],["runnin","running"],["runnint","running"],["runnners","runners"],["runnning","running"],["runns","runs"],["runnung","running"],["runting","runtime"],["rurrent","current"],["russina","Russian"],["Russion","Russian"],["rwite","write"],["rysnc","rsync"],["rythem","rhythm"],["rythim","rhythm"],["rythm","rhythm"],["rythmic","rhythmic"],["rythyms","rhythms"],["saame","same"],["sabatage","sabotage"],["sabatour","saboteur"],["sacalar","scalar"],["sacalars","scalars"],["sacarin","saccharin"],["sacle","scale"],["sacrafice","sacrifice"],["sacreligious","sacrilegious"],["Sacremento","Sacramento"],["sacrifical","sacrificial"],["sacrifying","sacrificing"],["sacrilegeous","sacrilegious"],["sacrin","saccharin"],["sade","sad"],["saem","same"],["safe-pooint","safe-point"],["safe-pooints","safe-points"],["safeing","saving"],["safepooint","safepoint"],["safepooints","safepoints"],["safequard","safeguard"],["saferi","Safari"],["safetly","safely"],["safly","safely"],["saftey","safety"],["safty","safety"],["saggital","sagittal"],["sagital","sagittal"],["Sagitarius","Sagittarius"],["sais","says"],["saleries","salaries"],["salery","salary"],["salveof","slaveof"],["samle","sample"],["samled","sampled"],["samll","small"],["samller","smaller"],["sammon","salmon"],["samori","samurai"],["sampel","sample"],["sampeld","sampled"],["sampels","samples"],["samwich","sandwich"],["samwiches","sandwiches"],["sanaty","sanity"],["sanctionning","sanctioning"],["sandobx","sandbox"],["sandwhich","sandwich"],["Sanhedrim","Sanhedrin"],["sanitizisation","sanitization"],["sanizer","sanitizer"],["sanpshot","snapshot"],["sanpsnots","snapshots"],["sansitizer","sanitizer"],["sansitizers","sanitizers"],["santioned","sanctioned"],["santize","sanitize"],["santized","sanitized"],["santizes","sanitizes"],["santizing","sanitizing"],["sanwich","sandwich"],["sanwiches","sandwiches"],["sanytise","sanitise"],["sanytize","sanitize"],["saphire","sapphire"],["saphires","sapphires"],["sargant","sergeant"],["sargeant","sergeant"],["sarted","started"],["sarter","starter"],["sarters","starters"],["sastisfies","satisfies"],["satandard","standard"],["satandards","standards"],["satelite","satellite"],["satelites","satellites"],["satelitte","satellite"],["satellittes","satellites"],["satement","statement"],["satements","statements"],["saterday","Saturday"],["saterdays","Saturdays"],["satified","satisfied"],["satifies","satisfies"],["satifsy","satisfy"],["satify","satisfy"],["satifying","satisfying"],["satisfactority","satisfactorily"],["satisfiabilty","satisfiability"],["satisfing","satisfying"],["satisfyied","satisfied"],["satisifed","satisfied"],["satisified","satisfied"],["satisifies","satisfies"],["satisify","satisfy"],["satisifying","satisfying"],["satistying","satisfying"],["satric","satiric"],["satrical","satirical"],["satrically","satirically"],["sattelite","satellite"],["sattelites","satellites"],["sattellite","satellite"],["sattellites","satellites"],["satuaday","Saturday"],["satuadays","Saturdays"],["saturdey","Saturday"],["satursday","Saturday"],["satus","status"],["saught","sought"],["sav","save"],["savees","saves"],["saveing","saving"],["savely","safely"],["savere","severe"],["savety","safety"],["savgroup","savegroup"],["savy","savvy"],["saxaphone","saxophone"],["sbsampling","subsampling"],["scahr","schar"],["scalarr","scalar"],["scaleability","scalability"],["scaleable","scalable"],["scaleing","scaling"],["scalled","scaled"],["scandanavia","Scandinavia"],["scaned","scanned"],["scaning","scanning"],["scannning","scanning"],["scaricity","scarcity"],["scavange","scavenge"],["scavanged","scavenged"],["scavanger","scavenger"],["scavangers","scavengers"],["scavanges","scavenges"],["sccope","scope"],["sceanrio","scenario"],["sceanrios","scenarios"],["scecified","specified"],["scenarion","scenario"],["scenarions","scenarios"],["scenegraaph","scenegraph"],["scenegraaphs","scenegraphs"],["sceond","second"],["sceonds","seconds"],["scetch","sketch"],["scetched","sketched"],["scetches","sketches"],["scetching","sketching"],["schdule","schedule"],["schduled","scheduled"],["schduleing","scheduling"],["schduler","scheduler"],["schdules","schedules"],["schduling","scheduling"],["schedual","schedule"],["scheduald","scheduled"],["schedualed","scheduled"],["schedualing","scheduling"],["schedulier","scheduler"],["schedulling","scheduling"],["scheduluing","scheduling"],["schem","scheme"],["schemd","schemed"],["schems","schemes"],["schme","scheme"],["schmea","schema"],["schmeas","schemas"],["schmes","schemes"],["scholarhip","scholarship"],["scholarhips","scholarships"],["scholdn't","shouldn't"],["schould","should"],["scientfic","scientific"],["scientfically","scientifically"],["scientficaly","scientifically"],["scientficly","scientifically"],["scientifc","scientific"],["scientifcally","scientifically"],["scientifcaly","scientifically"],["scientifcly","scientifically"],["scientis","scientist"],["scientiss","scientist"],["scince","science"],["scinece","science"],["scintiallation","scintillation"],["scintillatqt","scintillaqt"],["scipted","scripted"],["scipting","scripting"],["sciript","script"],["sciripts","scripts"],["scirpt","script"],["scirpts","scripts"],["scketch","sketch"],["scketched","sketched"],["scketches","sketches"],["scketching","sketching"],["sclar","scalar"],["scneario","scenario"],["scnearios","scenarios"],["scoket","socket"],["scoll","scroll"],["scolling","scrolling"],["scondary","secondary"],["scopeing","scoping"],["scorebord","scoreboard"],["scources","sources"],["scrach","scratch"],["scrached","scratched"],["scraches","scratches"],["scraching","scratching"],["scrachs","scratches"],["scrao","scrap"],["screeb","screen"],["screebs","screens"],["screenchot","screenshot"],["screenchots","screenshots"],["screenwrighter","screenwriter"],["screnn","screen"],["scriopted","scripted"],["scriopting","scripting"],["scriopts","scripts"],["scriopttype","scripttype"],["scriping","scripting"],["scripst","scripts"],["scriptype","scripttype"],["scritp","script"],["scritped","scripted"],["scritping","scripting"],["scritps","scripts"],["scritpt","script"],["scritpts","scripts"],["scroipt","script"],["scroipted","scripted"],["scroipting","scripting"],["scroipts","scripts"],["scroipttype","scripttype"],["scrollablbe","scrollable"],["scrollin","scrolling"],["scroolbar","scrollbar"],["scrpt","script"],["scrpted","scripted"],["scrpting","scripting"],["scrpts","scripts"],["scrren","screen"],["scrutinity","scrutiny"],["scubscribe","subscribe"],["scubscribed","subscribed"],["scubscriber","subscriber"],["scubscribes","subscribes"],["scuccessully","successfully"],["scupt","sculpt"],["scupted","sculpted"],["scupting","sculpting"],["scupture","sculpture"],["scuptures","sculptures"],["seach","search"],["seached","searched"],["seaches","searches"],["seaching","searching"],["seachkey","searchkey"],["seacrchable","searchable"],["seamlessley","seamlessly"],["seamlessy","seamlessly"],["searcahble","searchable"],["searcheable","searchable"],["searchin","searching"],["searchs","searches"],["seatch","search"],["seccond","second"],["secconds","seconds"],["secction","section"],["secene","scene"],["secific","specific"],["secion","section"],["secions","sections"],["secirity","security"],["seciton","section"],["secitons","sections"],["secne","scene"],["secod","second"],["secods","seconds"],["seconadry","secondary"],["seconcary","secondary"],["secondaray","secondary"],["seconday","secondary"],["seconf","second"],["seconfs","seconds"],["seconly","secondly"],["secont","second"],["secontary","secondary"],["secontly","secondly"],["seconts","seconds"],["secord","second"],["secords","seconds"],["secotr","sector"],["secound","second"],["secoundary","secondary"],["secoundly","secondly"],["secounds","seconds"],["secquence","sequence"],["secratary","secretary"],["secretery","secretary"],["secrion","section"],["secruity","security"],["sectin","section"],["sectins","sections"],["sectionning","sectioning"],["secton","section"],["sectoned","sectioned"],["sectoning","sectioning"],["sectons","sections"],["sectopm","section"],["sectopmed","sectioned"],["sectopming","sectioning"],["sectopms","sections"],["sectopn","section"],["sectopned","sectioned"],["sectopning","sectioning"],["sectopns","sections"],["secue","secure"],["secuely","securely"],["secuence","sequence"],["secuenced","sequenced"],["secuences","sequences"],["secuencial","sequential"],["secuencing","sequencing"],["secuirty","security"],["secuity","security"],["secund","second"],["secunds","seconds"],["securiy","security"],["securiyt","security"],["securly","securely"],["securre","secure"],["securrely","securely"],["securrly","securely"],["securtity","security"],["securtiy","security"],["securty","security"],["securuity","security"],["sedereal","sidereal"],["seeem","seem"],["seeen","seen"],["seelect","select"],["seelected","selected"],["seemes","seems"],["seemless","seamless"],["seemlessly","seamlessly"],["seesion","session"],["seesions","sessions"],["seetings","settings"],["seeverities","severities"],["seeverity","severity"],["segault","segfault"],["segaults","segfaults"],["segement","segment"],["segementation","segmentation"],["segemented","segmented"],["segements","segments"],["segemnts","segments"],["segfualt","segfault"],["segfualts","segfaults"],["segmantation","segmentation"],["segmend","segment"],["segmendation","segmentation"],["segmended","segmented"],["segmends","segments"],["segmenet","segment"],["segmenetd","segmented"],["segmeneted","segmented"],["segmenets","segments"],["segmenst","segments"],["segmentaion","segmentation"],["segmente","segment"],["segmentes","segments"],["segmetn","segment"],["segmetned","segmented"],["segmetns","segments"],["segument","segment"],["seguoys","segues"],["seh","she"],["seige","siege"],["seing","seeing"],["seinor","senior"],["seires","series"],["sekect","select"],["sekected","selected"],["sekects","selects"],["selcetion","selection"],["selct","select"],["selctable","selectable"],["selctables","selectable"],["selcted","selected"],["selcting","selecting"],["selction","selection"],["selctions","selections"],["seldomly","seldom"],["selecction","selection"],["selecctions","selections"],["seleced","selected"],["selecetd","selected"],["seleceted","selected"],["selecgt","select"],["selecgted","selected"],["selecgting","selecting"],["selecing","selecting"],["selecrtion","selection"],["selectd","selected"],["selectes","selects"],["selectoin","selection"],["selecton","selection"],["selectons","selections"],["seledted","selected"],["selektions","selections"],["selektor","selector"],["selet","select"],["selets","selects"],["self-comparisson","self-comparison"],["self-contianed","self-contained"],["self-referencial","self-referential"],["self-refering","self-referring"],["selfs","self"],["sellect","select"],["sellected","selected"],["selv","self"],["semaintics","semantics"],["semaphone","semaphore"],["semaphones","semaphores"],["semaphor","semaphore"],["semaphors","semaphores"],["semapthore","semaphore"],["semapthores","semaphores"],["sematic","semantic"],["sematical","semantical"],["sematically","semantically"],["sematics","semantics"],["sematnics","semantics"],["semding","sending"],["sementation","segmentation"],["sementic","semantic"],["sementically","semantically"],["sementics","semantics"],["semgent","segment"],["semgentation","segmentation"],["semicolor","semicolon"],["semicolumn","semicolon"],["semicondutor","semiconductor"],["sempahore","semaphore"],["sempahores","semaphores"],["sempaphore","semaphore"],["sempaphores","semaphores"],["semphore","semaphore"],["semphores","semaphores"],["sempphore","semaphore"],["senaphore","semaphore"],["senaphores","semaphores"],["senario","scenario"],["senarios","scenarios"],["sencond","second"],["sencondary","secondary"],["senconds","seconds"],["sendign","sending"],["sendinging","sending"],["sendinng","sending"],["senfile","sendfile"],["senintels","sentinels"],["senitnel","sentinel"],["senitnels","sentinels"],["senquence","sequence"],["sensative","sensitive"],["sensetive","sensitive"],["sensisble","sensible"],["sensistive","sensitive"],["sensititive","sensitive"],["sensititivies","sensitivities"],["sensititivity","sensitivity"],["sensititivy","sensitivity"],["sensitiv","sensitive"],["sensitiveties","sensitivities"],["sensitivety","sensitivity"],["sensitivites","sensitivities"],["sensitivties","sensitivities"],["sensitivty","sensitivity"],["sensitve","sensitive"],["senstive","sensitive"],["sensure","censure"],["sentance","sentence"],["sentances","sentences"],["senteces","sentences"],["sentense","sentence"],["sentienl","sentinel"],["sentinal","sentinel"],["sentinals","sentinels"],["sention","section"],["sentions","sections"],["sentive","sensitive"],["sentivite","sensitive"],["sepaate","separate"],["separartor","separator"],["separat","separate"],["separatelly","separately"],["separater","separator"],["separatley","separately"],["separatly","separately"],["separato","separator"],["separatos","separators"],["separatring","separating"],["separed","separated"],["separete","separate"],["separeted","separated"],["separetedly","separately"],["separetely","separately"],["separeter","separator"],["separetes","separates"],["separeting","separating"],["separetly","separately"],["separetor","separator"],["separtates","separates"],["separte","separate"],["separted","separated"],["separtes","separates"],["separting","separating"],["sepatae","separate"],["sepatate","separate"],["sepcial","special"],["sepcific","specific"],["sepcifically","specifically"],["sepcification","specification"],["sepcifications","specifications"],["sepcified","specified"],["sepcifier","specifier"],["sepcifies","specifies"],["sepcify","specify"],["sepcifying","specifying"],["sepearable","separable"],["sepearate","separate"],["sepearated","separated"],["sepearately","separately"],["sepearates","separates"],["sepearation","separation"],["sepearator","separator"],["sepearators","separators"],["sepearet","separate"],["sepearetly","separately"],["sepearte","separate"],["sepearted","separated"],["sepeartely","separately"],["sepeartes","separates"],["sepeartor","separator"],["sepeartors","separators"],["sepeate","separate"],["sepeated","separated"],["sepeates","separates"],["sepeator","separator"],["sepeators","separators"],["sepecial","special"],["sepecifed","specified"],["sepecific","specific"],["sepecification","specification"],["sepecified","specified"],["sepecifier","specifier"],["sepecifiers","specifiers"],["sepecifies","specifies"],["sepecify","specify"],["sepectral","spectral"],["sepeicfy","specify"],["sependent","dependent"],["sepending","depending"],["seperable","separable"],["seperad","separate"],["seperadly","separately"],["seperaly","separately"],["seperaor","separator"],["seperaors","separators"],["seperare","separate"],["seperared","separated"],["seperares","separates"],["seperat","separate"],["seperataed","separated"],["seperatally","separately"],["seperataly","separately"],["seperatated","separated"],["seperatd","separated"],["seperate","separate"],["seperated","separated"],["seperatedly","separately"],["seperatedy","separated"],["seperateely","separately"],["seperateing","separating"],["seperatelly","separately"],["seperately","separately"],["seperater","separator"],["seperaters","separators"],["seperates","separates"],["seperating","separating"],["seperation","separation"],["seperations","separations"],["seperatism","separatism"],["seperatist","separatist"],["seperatley","separately"],["seperatly","separately"],["seperato","separator"],["seperator","separator"],["seperators","separators"],["seperatos","separators"],["sepereate","separate"],["sepereated","separated"],["sepereates","separates"],["sepererate","separate"],["sepererated","separated"],["sepererates","separates"],["seperete","separate"],["sepereted","separated"],["seperetes","separates"],["seperratly","separately"],["sepertator","separator"],["sepertators","separators"],["sepertor","separator"],["sepertors","separators"],["sepetaror","separator"],["sepetarors","separators"],["sepetate","separate"],["sepetated","separated"],["sepetately","separately"],["sepetates","separates"],["sepina","subpoena"],["seporate","separate"],["sepparation","separation"],["sepparations","separations"],["sepperate","separate"],["seprarate","separate"],["seprate","separate"],["seprated","separated"],["seprator","separator"],["seprators","separators"],["Septemer","September"],["seqence","sequence"],["seqenced","sequenced"],["seqences","sequences"],["seqencing","sequencing"],["seqense","sequence"],["seqensed","sequenced"],["seqenses","sequences"],["seqensing","sequencing"],["seqenstial","sequential"],["seqential","sequential"],["seqeuence","sequence"],["seqeuencer","sequencer"],["seqeuental","sequential"],["seqeunce","sequence"],["seqeuncer","sequencer"],["seqeuntials","sequentials"],["sequcne","sequence"],["sequece","sequence"],["sequecence","sequence"],["sequecences","sequences"],["sequeces","sequences"],["sequeence","sequence"],["sequelce","sequence"],["sequemce","sequence"],["sequemces","sequences"],["sequencial","sequential"],["sequencially","sequentially"],["sequencies","sequences"],["sequense","sequence"],["sequensed","sequenced"],["sequenses","sequences"],["sequensing","sequencing"],["sequenstial","sequential"],["sequentialy","sequentially"],["sequenzes","sequences"],["sequetial","sequential"],["sequnce","sequence"],["sequnced","sequenced"],["sequncer","sequencer"],["sequncers","sequencers"],["sequnces","sequences"],["sequnece","sequence"],["sequneces","sequences"],["ser","set"],["serach","search"],["serached","searched"],["seracher","searcher"],["seraches","searches"],["seraching","searching"],["serachs","searches"],["serailisation","serialisation"],["serailise","serialise"],["serailised","serialised"],["serailization","serialization"],["serailize","serialize"],["serailized","serialized"],["serailse","serialise"],["serailsed","serialised"],["serailze","serialize"],["serailzed","serialized"],["serch","search"],["serched","searched"],["serches","searches"],["serching","searching"],["sercive","service"],["sercived","serviced"],["sercives","services"],["serciving","servicing"],["sereverless","serverless"],["serevrless","serverless"],["sergent","sergeant"],["serialialisation","serialisation"],["serialialise","serialise"],["serialialised","serialised"],["serialialises","serialises"],["serialialising","serialising"],["serialialization","serialization"],["serialialize","serialize"],["serialialized","serialized"],["serialializes","serializes"],["serialializing","serializing"],["serialiasation","serialisation"],["serialiazation","serialization"],["serialsiation","serialisation"],["serialsie","serialise"],["serialsied","serialised"],["serialsies","serialises"],["serialsing","serialising"],["serialziation","serialization"],["serialzie","serialize"],["serialzied","serialized"],["serialzies","serializes"],["serialzing","serializing"],["serice","service"],["serie","series"],["seriel","serial"],["serieses","series"],["serios","serious"],["seriouly","seriously"],["seriuos","serious"],["serivce","service"],["serivces","services"],["sersies","series"],["sertificate","certificate"],["sertificated","certificated"],["sertificates","certificates"],["sertification","certification"],["servece","service"],["serveced","serviced"],["serveces","services"],["servecing","servicing"],["serveice","service"],["serveiced","serviced"],["serveices","services"],["serveicing","servicing"],["serveless","serverless"],["serveral","several"],["serverite","severity"],["serverites","severities"],["serverities","severities"],["serverity","severity"],["serverles","serverless"],["serverlesss","serverless"],["serverlsss","serverless"],["servicies","services"],["servie","service"],["servies","services"],["servive","service"],["servoce","service"],["servoced","serviced"],["servoces","services"],["servocing","servicing"],["sesion","session"],["sesions","sessions"],["sesitive","sensitive"],["sesitively","sensitively"],["sesitiveness","sensitiveness"],["sesitivity","sensitivity"],["sessio","session"],["sesssion","session"],["sesssions","sessions"],["sestatusbar","setstatusbar"],["sestatusmsg","setstatusmsg"],["setevn","setenv"],["setgit","setgid"],["seting","setting"],["setings","settings"],["setion","section"],["setions","sections"],["setitng","setting"],["setitngs","settings"],["setquential","sequential"],["setted","set"],["settelement","settlement"],["settign","setting"],["settigns","settings"],["settigs","settings"],["settiing","setting"],["settiings","settings"],["settinga","settings"],["settingss","settings"],["settins","settings"],["settlment","settlement"],["settng","setting"],["settter","setter"],["settters","setters"],["settting","setting"],["setttings","settings"],["settup","setup"],["setyp","setup"],["setyps","setups"],["seuence","sequence"],["seuences","sequences"],["sevaral","several"],["severat","several"],["severeal","several"],["severirirty","severity"],["severirities","severities"],["severite","severity"],["severites","severities"],["severiy","severity"],["severl","several"],["severley","severely"],["severly","severely"],["sevice","service"],["sevirity","severity"],["sevral","several"],["sevrally","severally"],["sevrity","severity"],["sewdonim","pseudonym"],["sewdonims","pseudonyms"],["sewrvice","service"],["sfety","safety"],["sgadow","shadow"],["sh1sum","sha1sum"],["shadasloo","shadaloo"],["shaddow","shadow"],["shadhow","shadow"],["shadoloo","shadaloo"],["shal","shall"],["shandeleer","chandelier"],["shandeleers","chandeliers"],["shandow","shadow"],["shaneal","chenille"],["shanghi","Shanghai"],["shapshot","snapshot"],["shapshots","snapshots"],["shapsnot","snapshot"],["shapsnots","snapshots"],["sharable","shareable"],["shareed","shared"],["shareing","sharing"],["sharloton","charlatan"],["sharraid","charade"],["sharraids","charades"],["shashes","slashes"],["shatow","ch\xE2teau"],["shbang","shebang"],["shedule","schedule"],["sheduled","scheduled"],["shedules","schedules"],["sheduling","scheduling"],["sheepherd","shepherd"],["sheepherds","shepherds"],["sheeps","sheep"],["sheild","shield"],["sheilded","shielded"],["sheilding","shielding"],["sheilds","shields"],["shepe","shape"],["shepered","shepherd"],["sheperedly","shepherdly"],["shepereds","shepherds"],["shepes","shapes"],["sheping","shaping"],["shepre","sphere"],["shepres","spheres"],["sherif","sheriff"],["shfit","shift"],["shfited","shifted"],["shfiting","shifting"],["shfits","shifts"],["shfted","shifted"],["shicane","chicane"],["shif","shift"],["shif-tab","shift-tab"],["shineing","shining"],["shiped","shipped"],["shiping","shipping"],["shoftware","software"],["shoild","should"],["shoing","showing"],["sholder","shoulder"],["sholdn't","shouldn't"],["sholuld","should"],["sholuldn't","shouldn't"],["shoould","should"],["shopkeeepers","shopkeepers"],["shorcut","shortcut"],["shorcuts","shortcuts"],["shorly","shortly"],["short-cicruit","short-circuit"],["short-cicruits","short-circuits"],["shortcat","shortcut"],["shortcats","shortcuts"],["shortcomming","shortcoming"],["shortcommings","shortcomings"],["shortcutt","shortcut"],["shortern","shorten"],["shorthly","shortly"],["shortkut","shortcut"],["shortkuts","shortcuts"],["shortwhile","short while"],["shotcut","shortcut"],["shotcuts","shortcuts"],["shotdown","shutdown"],["shoucl","should"],["shoud","should"],["shoudl","should"],["shoudld","should"],["shoudle","should"],["shoudln't","shouldn't"],["shoudlnt","shouldn't"],["shoudn't","shouldn't"],["shoudn","shouldn"],["should'nt","shouldn't"],["should't","shouldn't"],["shouldn;t","shouldn't"],["shouldnt'","shouldn't"],["shouldnt","shouldn't"],["shouldnt;","shouldn't"],["shoule","should"],["shoulld","should"],["shouln't","shouldn't"],["shouls","should"],["shoult","should"],["shouod","should"],["shouw","show"],["shouws","shows"],["showvinism","chauvinism"],["shpae","shape"],["shpaes","shapes"],["shpapes","shapes"],["shpere","sphere"],["shperes","spheres"],["shpped","shipped"],["shreak","shriek"],["shreshold","threshold"],["shriks","shrinks"],["shttp","https"],["shudown","shutdown"],["shufle","shuffle"],["shuld","should"],["shure","sure"],["shurely","surely"],["shutdownm","shutdown"],["shuting","shutting"],["shutodwn","shutdown"],["shwo","show"],["shwon","shown"],["shystem","system"],["shystems","systems"],["sibiling","sibling"],["sibilings","siblings"],["sibtitle","subtitle"],["sibtitles","subtitles"],["sicinct","succinct"],["sicinctly","succinctly"],["sicne","since"],["sidde","side"],["sideral","sidereal"],["siduction","seduction"],["siezure","seizure"],["siezures","seizures"],["siffix","suffix"],["siffixed","suffixed"],["siffixes","suffixes"],["siffixing","suffixing"],["sigaled","signaled"],["siganture","signature"],["sigantures","signatures"],["sigen","sign"],["sigificance","significance"],["siginificant","significant"],["siginificantly","significantly"],["siginify","signify"],["sigit","digit"],["sigits","digits"],["sigleton","singleton"],["signales","signals"],["signall","signal"],["signatue","signature"],["signatur","signature"],["signes","signs"],["signficant","significant"],["signficantly","significantly"],["signficiant","significant"],["signfies","signifies"],["signguature","signature"],["signifanct","significant"],["signifant","significant"],["signifantly","significantly"],["signifcant","significant"],["signifcantly","significantly"],["signifficant","significant"],["significanly","significantly"],["significat","significant"],["significatly","significantly"],["significently","significantly"],["signifigant","significant"],["signifigantly","significantly"],["signitories","signatories"],["signitory","signatory"],["signol","signal"],["signto","sign to"],["signul","signal"],["signular","singular"],["signularity","singularity"],["silentely","silently"],["silenty","silently"],["silouhette","silhouette"],["silouhetted","silhouetted"],["silouhettes","silhouettes"],["silouhetting","silhouetting"],["simeple","simple"],["simetrie","symmetry"],["simetries","symmetries"],["simgle","single"],["simialr","similar"],["simialrity","similarity"],["simialrly","similarly"],["simiar","similar"],["similarily","similarly"],["similary","similarly"],["similat","similar"],["similia","similar"],["similiar","similar"],["similiarity","similarity"],["similiarly","similarly"],["similiarty","similarity"],["similiary","similarity"],["simillar","similar"],["similtaneous","simultaneous"],["simlar","similar"],["simlarlity","similarity"],["simlarly","similarly"],["simliar","similar"],["simliarly","similarly"],["simlicity","simplicity"],["simlified","simplified"],["simmetric","symmetric"],["simmetrical","symmetrical"],["simmetry","symmetry"],["simmilar","similar"],["simpification","simplification"],["simpifications","simplifications"],["simpified","simplified"],["simplei","simply"],["simpley","simply"],["simplfy","simplify"],["simplicitly","simplicity"],["simplicty","simplicity"],["simplier","simpler"],["simpliest","simplest"],["simplifed","simplified"],["simplificaiton","simplification"],["simplificaitons","simplifications"],["simplifiy","simplify"],["simplifys","simplifies"],["simpliifcation","simplification"],["simpliifcations","simplifications"],["simplist","simplest"],["simpy","simply"],["simualte","simulate"],["simualted","simulated"],["simualtes","simulates"],["simualting","simulating"],["simualtion","simulation"],["simualtions","simulations"],["simualtor","simulator"],["simualtors","simulators"],["simulaiton","simulation"],["simulaitons","simulations"],["simulantaneous","simultaneous"],["simulantaneously","simultaneously"],["simulataeous","simultaneous"],["simulataeously","simultaneously"],["simulataneity","simultaneity"],["simulataneous","simultaneous"],["simulataneously","simultaneously"],["simulatanious","simultaneous"],["simulataniously","simultaneously"],["simulatanous","simultaneous"],["simulatanously","simultaneously"],["simulatation","simulation"],["simulatenous","simultaneous"],["simulatenously","simultaneously"],["simultanaeous","simultaneous"],["simultaneos","simultaneous"],["simultaneosly","simultaneously"],["simultanious","simultaneous"],["simultaniously","simultaneously"],["simultanous","simultaneous"],["simultanously","simultaneously"],["simutaneously","simultaneously"],["sinature","signature"],["sincerley","sincerely"],["sincerly","sincerely"],["singaled","signaled"],["singals","signals"],["singature","signature"],["singatures","signatures"],["singelar","singular"],["singelarity","singularity"],["singelarly","singularly"],["singelton","singleton"],["singl","single"],["singlar","singular"],["single-threded","single-threaded"],["singlton","singleton"],["singltons","singletons"],["singluar","singular"],["singlular","singular"],["singlularly","singularly"],["singnal","signal"],["singnalled","signalled"],["singnals","signals"],["singolar","singular"],["singoolar","singular"],["singoolarity","singularity"],["singoolarly","singularly"],["singsog","singsong"],["singuarity","singularity"],["singuarl","singular"],["singulat","singular"],["singulaties","singularities"],["sinlge","single"],["sinlges","singles"],["sinply","simply"],["sintac","syntax"],["sintacks","syntax"],["sintacs","syntax"],["sintact","syntax"],["sintacts","syntax"],["sintak","syntax"],["sintaks","syntax"],["sintakt","syntax"],["sintakts","syntax"],["sintax","syntax"],["Sionist","Zionist"],["Sionists","Zionists"],["siply","simply"],["sircle","circle"],["sircles","circles"],["sircular","circular"],["sirect","direct"],["sirected","directed"],["sirecting","directing"],["sirection","direction"],["sirectional","directional"],["sirectionalities","directionalities"],["sirectionality","directionality"],["sirectionals","directionals"],["sirectionless","directionless"],["sirections","directions"],["sirective","directive"],["sirectives","directives"],["sirectly","directly"],["sirectness","directness"],["sirector","director"],["sirectories","directories"],["sirectors","directors"],["sirectory","directory"],["sirects","directs"],["sisnce","since"],["sistem","system"],["sistematically","systematically"],["sistematics","systematics"],["sistematies","systematies"],["sistematising","systematising"],["sistematizing","systematizing"],["sistematy","systematy"],["sistemed","systemed"],["sistemic","systemic"],["sistemically","systemically"],["sistemics","systemics"],["sistemist","systemist"],["sistemists","systemists"],["sistemize","systemize"],["sistemized","systemized"],["sistemizes","systemizes"],["sistemizing","systemizing"],["sistems","systems"],["sitation","situation"],["sitations","situations"],["sitaution","situation"],["sitautions","situations"],["sitck","stick"],["siteu","site"],["sitill","still"],["sitirring","stirring"],["sitirs","stirs"],["sitl","still"],["sitll","still"],["sitmuli","stimuli"],["situationnal","situational"],["situatuion","situation"],["situatuions","situations"],["situatution","situation"],["situatutions","situations"],["situbbornness","stubbornness"],["situdio","studio"],["situdios","studios"],["situration","situation"],["siturations","situations"],["situtaion","situation"],["situtaions","situations"],["situtation","situation"],["situtations","situations"],["siutable","suitable"],["siute","suite"],["sivible","visible"],["siwtch","switch"],["siwtched","switched"],["siwtching","switching"],["sizre","size"],["Skagerak","Skagerrak"],["skalar","scalar"],["skateing","skating"],["skecth","sketch"],["skecthes","sketches"],["skeep","skip"],["skelton","skeleton"],["skept","skipped"],["sketchs","sketches"],["skipd","skipped"],["skipe","skip"],["skiping","skipping"],["skippd","skipped"],["skippped","skipped"],["skippps","skips"],["slach","slash"],["slaches","slashes"],["slase","slash"],["slases","slashes"],["slashs","slashes"],["slaugterhouses","slaughterhouses"],["slect","select"],["slected","selected"],["slecting","selecting"],["slection","selection"],["sleect","select"],["sleeped","slept"],["sleepp","sleep"],["slicable","sliceable"],["slient","silent"],["sliently","silently"],["slighlty","slightly"],["slighly","slightly"],["slightl","slightly"],["slighty","slightly"],["slignt","slight"],["sligntly","slightly"],["sligth","slight"],["sligthly","slightly"],["sligtly","slightly"],["sliped","slipped"],["sliseshow","slideshow"],["slowy","slowly"],["sluggify","slugify"],["smae","same"],["smal","small"],["smaler","smaller"],["smallar","smaller"],["smalles","smallest"],["smaple","sample"],["smaples","samples"],["smealting","smelting"],["smething","something"],["smller","smaller"],["smoe","some"],["smoot","smooth"],["smooter","smoother"],["smoothign","smoothing"],["smooting","smoothing"],["smouth","smooth"],["smouthness","smoothness"],["smove","move"],["snaped","snapped"],["snaphot","snapshot"],["snaphsot","snapshot"],["snaping","snapping"],["snappng","snapping"],["snapsnot","snapshot"],["snapsnots","snapshots"],["sneeks","sneaks"],["snese","sneeze"],["snipet","snippet"],["snipets","snippets"],["snpashot","snapshot"],["snpashots","snapshots"],["snyc","sync"],["snytax","syntax"],["Soalris","Solaris"],["socail","social"],["socalism","socialism"],["socekts","sockets"],["socities","societies"],["soecialize","specialized"],["soem","some"],["soemthing","something"],["soemwhere","somewhere"],["sofisticated","sophisticated"],["softend","softened"],["softwares","software"],["softwre","software"],["sofware","software"],["sofwtare","software"],["sohw","show"],["soilders","soldiers"],["soiurce","source"],["soket","socket"],["sokets","sockets"],["solarmutx","solarmutex"],["solatary","solitary"],["solate","isolate"],["solated","isolated"],["solates","isolates"],["solating","isolating"],["soley","solely"],["solfed","solved"],["solfes","solves"],["solfing","solving"],["solfs","solves"],["soliders","soldiers"],["solification","solidification"],["soliliquy","soliloquy"],["soltion","solution"],["soltuion","solution"],["soltuions","solutions"],["soluable","soluble"],["solum","solemn"],["soluton","solution"],["solutons","solutions"],["solveable","solvable"],["solveing","solving"],["solwed","solved"],["som","some"],["someboby","somebody"],["somehing","something"],["somehting","something"],["somehwat","somewhat"],["somehwere","somewhere"],["somehwo","somehow"],["somelse","someone else"],["somemore","some more"],["somene","someone"],["somenone","someone"],["someon","someone"],["somethig","something"],["somethign","something"],["somethimes","sometimes"],["somethimg","something"],["somethiong","something"],["sometiems","sometimes"],["sometihing","something"],["sometihng","something"],["sometims","sometimes"],["sometines","sometimes"],["someting","something"],["sometinhg","something"],["sometring","something"],["sometrings","somethings"],["somewere","somewhere"],["somewher","somewhere"],["somewho","somehow"],["somme","some"],["somthign","something"],["somthing","something"],["somthingelse","somethingelse"],["somtimes","sometimes"],["somwhat","somewhat"],["somwhere","somewhere"],["somwho","somehow"],["somwhow","somehow"],["sonething","something"],["songlar","singular"],["sooaside","suicide"],["soodonim","pseudonym"],["soource","source"],["sophicated","sophisticated"],["sophisicated","sophisticated"],["sophisitcated","sophisticated"],["sophisticted","sophisticated"],["sophmore","sophomore"],["sorceror","sorcerer"],["sorkflow","workflow"],["sorrounding","surrounding"],["sortig","sorting"],["sortings","sorting"],["sortlst","sortlist"],["sortner","sorter"],["sortnr","sorter"],["soscket","socket"],["sotfware","software"],["souce","source"],["souces","sources"],["soucre","source"],["soucres","sources"],["soudn","sound"],["soudns","sounds"],["sould'nt","shouldn't"],["souldn't","shouldn't"],["soundard","soundcard"],["sountrack","soundtrack"],["sourc","source"],["sourcedrectory","sourcedirectory"],["sourcee","source"],["sourcees","sources"],["sourct","source"],["sourrounding","surrounding"],["sourth","south"],["sourthern","southern"],["southbrige","southbridge"],["souvenier","souvenir"],["souveniers","souvenirs"],["soveits","soviets"],["sover","solver"],["sovereignity","sovereignty"],["soverign","sovereign"],["soverignity","sovereignty"],["soverignty","sovereignty"],["sovle","solve"],["sovled","solved"],["sovren","sovereign"],["spacific","specific"],["spacification","specification"],["spacifications","specifications"],["spacifics","specifics"],["spacified","specified"],["spacifies","specifies"],["spaece","space"],["spaeced","spaced"],["spaeces","spaces"],["spaecing","spacing"],["spageti","spaghetti"],["spagetti","spaghetti"],["spagheti","spaghetti"],["spagnum","sphagnum"],["spainish","Spanish"],["spaning","spanning"],["sparate","separate"],["sparately","separately"],["spash","splash"],["spashed","splashed"],["spashes","splashes"],["spaw","spawn"],["spawed","spawned"],["spawing","spawning"],["spawining","spawning"],["spaws","spawns"],["spcae","space"],["spcaed","spaced"],["spcaes","spaces"],["spcaing","spacing"],["spcecified","specified"],["spcial","special"],["spcific","specific"],["spcification","specification"],["spcifications","specifications"],["spcified","specified"],["spcifies","specifies"],["spcify","specify"],["speaced","spaced"],["speach","speech"],["speacing","spacing"],["spearator","separator"],["spearators","separators"],["spec-complient","spec-compliant"],["specail","special"],["specefic","specific"],["specefically","specifically"],["speceficly","specifically"],["specefied","specified"],["specfic","specific"],["specfically","specifically"],["specfication","specification"],["specfications","specifications"],["specficication","specification"],["specficications","specifications"],["specficied","specified"],["specficies","specifies"],["specficy","specify"],["specficying","specifying"],["specfied","specified"],["specfield","specified"],["specfies","specifies"],["specfifies","specifies"],["specfify","specify"],["specfifying","specifying"],["specfiied","specified"],["specfy","specify"],["specfying","specifying"],["speciafied","specified"],["specialisaiton","specialisation"],["specialisaitons","specialisations"],["specializaiton","specialization"],["specializaitons","specializations"],["specialy","specially"],["specic","specific"],["specical","special"],["specication","specification"],["specidic","specific"],["specied","specified"],["speciefied","specified"],["specifactions","specifications"],["specifc","specific"],["specifcally","specifically"],["specifcation","specification"],["specifcations","specifications"],["specifcied","specified"],["specifclly","specifically"],["specifed","specified"],["specifes","specifies"],["speciffic","specific"],["speciffically","specifically"],["specifially","specifically"],["specificaiton","specification"],["specificaitons","specifications"],["specificallly","specifically"],["specificaly","specifically"],["specificated","specified"],["specificateion","specification"],["specificatin","specification"],["specificaton","specification"],["specificed","specified"],["specifices","specifies"],["specificially","specifically"],["specificiation","specification"],["specificiations","specifications"],["specificically","specifically"],["specificied","specified"],["specificl","specific"],["specificly","specifically"],["specifiction","specification"],["specifictions","specifications"],["specifid","specified"],["specifiec","specific"],["specifiecally","specifically"],["specifiecation","specification"],["specifiecations","specifications"],["specifiecd","specified"],["specifieced","specified"],["specifiecs","specifics"],["specifieed","specified"],["specifiees","specifies"],["specifig","specific"],["specifigation","specification"],["specifigations","specifications"],["specifing","specifying"],["specifities","specifics"],["specifiy","specify"],["specifiying","specifying"],["specifric","specific"],["specift","specify"],["specifyed","specified"],["specifyied","specified"],["specifyig","specifying"],["specifyinhg","specifying"],["speciic","specific"],["speciied","specified"],["speciifc","specific"],["speciifed","specified"],["specilisation","specialisation"],["specilisations","specialisations"],["specilization","specialization"],["specilizations","specializations"],["specilized","specialized"],["speciman","specimen"],["speciries","specifies"],["speciry","specify"],["specivied","specified"],["speciy","specify"],["speciyfing","specifying"],["speciyfying","specifying"],["speciying","specifying"],["spectauclar","spectacular"],["spectaulars","spectaculars"],["spectification","specification"],["spectifications","specifications"],["spectified","specified"],["spectifies","specifies"],["spectify","specify"],["spectifying","specifying"],["spectular","spectacular"],["spectularly","spectacularly"],["spectum","spectrum"],["specturm","spectrum"],["specualtive","speculative"],["specufies","specifies"],["specufy","specify"],["spedific","specific"],["spedified","specified"],["spedify","specify"],["speeak","speak"],["speeaking","speaking"],["speeling","spelling"],["speelling","spelling"],["speep","sleep"],["speep-up","speed-up"],["speeped","sped"],["speeping","sleeping"],["spefcifiable","specifiable"],["spefcific","specific"],["spefcifically","specifically"],["spefcification","specification"],["spefcifications","specifications"],["spefcifics","specifics"],["spefcifieid","specified"],["spefcifieir","specifier"],["spefcifieirs","specifiers"],["spefcifieis","specifies"],["spefcifiy","specify"],["spefcifiying","specifying"],["spefeid","specified"],["spefeir","specifier"],["spefeirs","specifiers"],["spefeis","specifies"],["spefiable","specifiable"],["spefial","special"],["spefic","specific"],["speficable","specifiable"],["spefically","specifically"],["spefication","specification"],["spefications","specifications"],["speficed","specified"],["speficeid","specified"],["speficeir","specifier"],["speficeirs","specifiers"],["speficeis","specifies"],["speficer","specifier"],["speficers","specifiers"],["spefices","specifies"],["speficiable","specifiable"],["speficiallally","specifically"],["speficiallation","specification"],["speficiallations","specifications"],["speficialleid","specified"],["speficialleir","specifier"],["speficialleirs","specifiers"],["speficialleis","specifies"],["speficialliable","specifiable"],["speficiallic","specific"],["speficiallically","specifically"],["speficiallication","specification"],["speficiallications","specifications"],["speficiallics","specifics"],["speficiallied","specified"],["speficiallier","specifier"],["speficialliers","specifiers"],["speficiallies","specifies"],["speficiallifed","specified"],["speficiallifer","specifier"],["speficiallifers","specifiers"],["speficiallifes","specifies"],["speficially","specifically"],["speficiation","specification"],["speficiations","specifications"],["speficic","specific"],["speficically","specifically"],["speficication","specification"],["speficications","specifications"],["speficics","specifics"],["speficied","specified"],["speficieid","specified"],["speficieir","specifier"],["speficieirs","specifiers"],["speficieis","specifies"],["speficier","specifier"],["speficiers","specifiers"],["speficies","specifies"],["speficifally","specifically"],["speficifation","specification"],["speficifations","specifications"],["speficifc","specific"],["speficifcally","specifically"],["speficifcation","specification"],["speficifcations","specifications"],["speficifcs","specifics"],["speficifed","specified"],["speficifeid","specified"],["speficifeir","specifier"],["speficifeirs","specifiers"],["speficifeis","specifies"],["speficifer","specifier"],["speficifers","specifiers"],["speficifes","specifies"],["speficifiable","specifiable"],["speficific","specific"],["speficifically","specifically"],["speficification","specification"],["speficifications","specifications"],["speficifics","specifics"],["speficified","specified"],["speficifier","specifier"],["speficifiers","specifiers"],["speficifies","specifies"],["speficififed","specified"],["speficififer","specifier"],["speficififers","specifiers"],["speficififes","specifies"],["speficify","specify"],["speficifying","specifying"],["speficiiable","specifiable"],["speficiic","specific"],["speficiically","specifically"],["speficiication","specification"],["speficiications","specifications"],["speficiics","specifics"],["speficiied","specified"],["speficiier","specifier"],["speficiiers","specifiers"],["speficiies","specifies"],["speficiifed","specified"],["speficiifer","specifier"],["speficiifers","specifiers"],["speficiifes","specifies"],["speficillally","specifically"],["speficillation","specification"],["speficillations","specifications"],["speficilleid","specified"],["speficilleir","specifier"],["speficilleirs","specifiers"],["speficilleis","specifies"],["speficilliable","specifiable"],["speficillic","specific"],["speficillically","specifically"],["speficillication","specification"],["speficillications","specifications"],["speficillics","specifics"],["speficillied","specified"],["speficillier","specifier"],["speficilliers","specifiers"],["speficillies","specifies"],["speficillifed","specified"],["speficillifer","specifier"],["speficillifers","specifiers"],["speficillifes","specifies"],["speficilly","specifically"],["speficitally","specifically"],["speficitation","specification"],["speficitations","specifications"],["speficiteid","specified"],["speficiteir","specifier"],["speficiteirs","specifiers"],["speficiteis","specifies"],["speficitiable","specifiable"],["speficitic","specific"],["speficitically","specifically"],["speficitication","specification"],["speficitications","specifications"],["speficitics","specifics"],["speficitied","specified"],["speficitier","specifier"],["speficitiers","specifiers"],["speficities","specificities"],["speficitifed","specified"],["speficitifer","specifier"],["speficitifers","specifiers"],["speficitifes","specifies"],["speficity","specificity"],["speficiy","specify"],["speficiying","specifying"],["spefics","specifics"],["speficy","specify"],["speficying","specifying"],["spefied","specified"],["spefier","specifier"],["spefiers","specifiers"],["spefies","specifies"],["spefifally","specifically"],["spefifation","specification"],["spefifations","specifications"],["spefifed","specified"],["spefifeid","specified"],["spefifeir","specifier"],["spefifeirs","specifiers"],["spefifeis","specifies"],["spefifer","specifier"],["spefifers","specifiers"],["spefifes","specifies"],["spefifiable","specifiable"],["spefific","specific"],["spefifically","specifically"],["spefification","specification"],["spefifications","specifications"],["spefifics","specifics"],["spefified","specified"],["spefifier","specifier"],["spefifiers","specifiers"],["spefifies","specifies"],["spefififed","specified"],["spefififer","specifier"],["spefififers","specifiers"],["spefififes","specifies"],["spefify","specify"],["spefifying","specifying"],["spefiiable","specifiable"],["spefiic","specific"],["spefiically","specifically"],["spefiication","specification"],["spefiications","specifications"],["spefiics","specifics"],["spefiied","specified"],["spefiier","specifier"],["spefiiers","specifiers"],["spefiies","specifies"],["spefiifally","specifically"],["spefiifation","specification"],["spefiifations","specifications"],["spefiifeid","specified"],["spefiifeir","specifier"],["spefiifeirs","specifiers"],["spefiifeis","specifies"],["spefiifiable","specifiable"],["spefiific","specific"],["spefiifically","specifically"],["spefiification","specification"],["spefiifications","specifications"],["spefiifics","specifics"],["spefiified","specified"],["spefiifier","specifier"],["spefiifiers","specifiers"],["spefiifies","specifies"],["spefiififed","specified"],["spefiififer","specifier"],["spefiififers","specifiers"],["spefiififes","specifies"],["spefiify","specify"],["spefiifying","specifying"],["spefixally","specifically"],["spefixation","specification"],["spefixations","specifications"],["spefixeid","specified"],["spefixeir","specifier"],["spefixeirs","specifiers"],["spefixeis","specifies"],["spefixiable","specifiable"],["spefixic","specific"],["spefixically","specifically"],["spefixication","specification"],["spefixications","specifications"],["spefixics","specifics"],["spefixied","specified"],["spefixier","specifier"],["spefixiers","specifiers"],["spefixies","specifies"],["spefixifed","specified"],["spefixifer","specifier"],["spefixifers","specifiers"],["spefixifes","specifies"],["spefixy","specify"],["spefixying","specifying"],["spefiy","specify"],["spefiying","specifying"],["spefy","specify"],["spefying","specifying"],["speherical","spherical"],["speical","special"],["speices","species"],["speicfied","specified"],["speicific","specific"],["speicified","specified"],["speicify","specify"],["speling","spelling"],["spellshecking","spellchecking"],["spendour","splendour"],["speparate","separate"],["speparated","separated"],["speparating","separating"],["speparation","separation"],["speparator","separator"],["spepc","spec"],["speperatd","separated"],["speperate","separate"],["speperateing","separating"],["speperater","separator"],["speperates","separates"],["speperating","separating"],["speperator","separator"],["speperats","separates"],["sperate","separate"],["sperately","separately"],["sperhical","spherical"],["spermatozoan","spermatozoon"],["speshal","special"],["speshel","special"],["spesialisation","specialization"],["spesific","specific"],["spesifical","specific"],["spesifically","specifically"],["spesificaly","specifically"],["spesifics","specifics"],["spesified","specified"],["spesifities","specifics"],["spesify","specify"],["spezialisation","specialization"],["spezific","specific"],["spezified","specified"],["spezify","specify"],["spicific","specific"],["spicified","specified"],["spicify","specify"],["spiltting","splitting"],["spindel","spindle"],["spindels","spindles"],["spinlcok","spinlock"],["spinock","spinlock"],["spligs","splits"],["spliiter","splitter"],["spliitting","splitting"],["spliting","splitting"],["splitted","split"],["splittng","splitting"],["spllitting","splitting"],["spoace","space"],["spoaced","spaced"],["spoaces","spaces"],["spoacing","spacing"],["sponser","sponsor"],["sponsered","sponsored"],["sponsers","sponsors"],["sponsership","sponsorship"],["spontanous","spontaneous"],["sponzored","sponsored"],["spoonfulls","spoonfuls"],["sporatic","sporadic"],["sporious","spurious"],["sppeches","speeches"],["spport","support"],["spported","supported"],["spporting","supporting"],["spports","supports"],["spreaded","spread"],["spreadhseet","spreadsheet"],["spreadhseets","spreadsheets"],["spreadsheat","spreadsheet"],["spreadsheats","spreadsheets"],["spreasheet","spreadsheet"],["spreasheets","spreadsheets"],["sprech","speech"],["sprecial","special"],["sprecialized","specialized"],["sprecially","specially"],["spred","spread"],["spredsheet","spreadsheet"],["spreedsheet","spreadsheet"],["sprinf","sprintf"],["spririous","spurious"],["spriritual","spiritual"],["spritual","spiritual"],["sproon","spoon"],["spsace","space"],["spsaced","spaced"],["spsaces","spaces"],["spsacing","spacing"],["sptintf","sprintf"],["spurios","spurious"],["spurrious","spurious"],["sqare","square"],["sqared","squared"],["sqares","squares"],["sqash","squash"],["sqashed","squashed"],["sqashing","squashing"],["sqaure","square"],["sqaured","squared"],["sqaures","squares"],["sqeuence","sequence"],["squashgin","squashing"],["squence","sequence"],["squirel","squirrel"],["squirl","squirrel"],["squrared","squared"],["srcipt","script"],["srcipts","scripts"],["sreampropinfo","streampropinfo"],["sreenshot","screenshot"],["sreenshots","screenshots"],["sreturns","returns"],["srikeout","strikeout"],["sring","string"],["srings","strings"],["srink","shrink"],["srinkd","shrunk"],["srinked","shrunk"],["srinking","shrinking"],["sript","script"],["sripts","scripts"],["srollbar","scrollbar"],["srouce","source"],["srtifact","artifact"],["srtifacts","artifacts"],["srtings","strings"],["srtructure","structure"],["srttings","settings"],["sructure","structure"],["sructures","structures"],["srunk","shrunk"],["srunken","shrunken"],["srunkn","shrunken"],["ssame","same"],["ssee","see"],["ssoaiating","associating"],["ssome","some"],["stabalization","stabilization"],["stabilitation","stabilization"],["stabilite","stabilize"],["stabilited","stabilized"],["stabilites","stabilizes"],["stabiliting","stabilizing"],["stabillity","stability"],["stabilty","stability"],["stablility","stability"],["stablilization","stabilization"],["stablize","stabilize"],["stach","stack"],["stacionary","stationary"],["stackk","stack"],["stadnard","standard"],["stadnardisation","standardisation"],["stadnardised","standardised"],["stadnardising","standardising"],["stadnardization","standardization"],["stadnardized","standardized"],["stadnardizing","standardizing"],["stadnards","standards"],["stae","state"],["staement","statement"],["staically","statically"],["stainlees","stainless"],["staion","station"],["staions","stations"],["staition","station"],["staitions","stations"],["stalagtite","stalactite"],["standar","standard"],["standarad","standard"],["standard-complient","standard-compliant"],["standardss","standards"],["standarisation","standardisation"],["standarise","standardise"],["standarised","standardised"],["standarises","standardises"],["standarising","standardising"],["standarization","standardization"],["standarize","standardize"],["standarized","standardized"],["standarizes","standardizes"],["standarizing","standardizing"],["standart","standard"],["standartd","standard"],["standartds","standards"],["standartisation","standardisation"],["standartisator","standardiser"],["standartised","standardised"],["standartization","standardization"],["standartizator","standardizer"],["standartized","standardized"],["standarts","standards"],["standatd","standard"],["standrat","standard"],["standrats","standards"],["standtard","standard"],["stange","strange"],["stanp","stamp"],["staration","starvation"],["stard","start"],["stardard","standard"],["stardardize","standardize"],["stardardized","standardized"],["stardardizes","standardizes"],["stardardizing","standardizing"],["stardards","standards"],["staright","straight"],["startd","started"],["startegic","strategic"],["startegies","strategies"],["startegy","strategy"],["startet","started"],["startign","starting"],["startin","starting"],["startlisteneing","startlistening"],["startnig","starting"],["startparanthesis","startparentheses"],["startted","started"],["startting","starting"],["starup","startup"],["starups","startups"],["statamenet","statement"],["statamenets","statements"],["stategies","strategies"],["stategise","strategise"],["stategised","strategised"],["stategize","strategize"],["stategized","strategized"],["stategy","strategy"],["stateman","statesman"],["statemanet","statement"],["statememts","statements"],["statemen","statement"],["statemenet","statement"],["statemenets","statements"],["statemet","statement"],["statemnts","statements"],["stati","statuses"],["staticly","statically"],["statictic","statistic"],["statictics","statistics"],["statisfied","satisfied"],["statisfies","satisfies"],["statisfy","satisfy"],["statisfying","satisfying"],["statisitics","statistics"],["statistices","statistics"],["statitic","statistic"],["statitics","statistics"],["statmenet","statement"],["statmenmt","statement"],["statment","statement"],["statments","statements"],["statrt","start"],["stattistic","statistic"],["statubar","statusbar"],["statuline","statusline"],["statulines","statuslines"],["statup","startup"],["staturday","Saturday"],["statuss","status"],["statusses","statuses"],["statustics","statistics"],["staulk","stalk"],["stauration","saturation"],["staus","status"],["stawberries","strawberries"],["stawberry","strawberry"],["stawk","stalk"],["stcokbrush","stockbrush"],["stdanard","standard"],["stdanards","standards"],["stength","strength"],["steram","stream"],["steramed","streamed"],["steramer","streamer"],["steraming","streaming"],["sterams","streams"],["sterio","stereo"],["steriods","steroids"],["sterotype","stereotype"],["sterotypes","stereotypes"],["stickness","stickiness"],["stickyness","stickiness"],["stiffneing","stiffening"],["stiky","sticky"],["stil","still"],["stilus","stylus"],["stingent","stringent"],["stipped","stripped"],["stiring","stirring"],["stirng","string"],["stirngs","strings"],["stirr","stir"],["stirrs","stirs"],["stivk","stick"],["stivks","sticks"],["stle","style"],["stlye","style"],["stlyes","styles"],["stnad","stand"],["stndard","standard"],["stoage","storage"],["stoages","storages"],["stocahstic","stochastic"],["stocastic","stochastic"],["stoer","store"],["stoers","stores"],["stomache","stomach"],["stompted","stomped"],["stong","strong"],["stoped","stopped"],["stoping","stopping"],["stopp","stop"],["stoppped","stopped"],["stoppping","stopping"],["stopps","stops"],["stopry","story"],["storag","storage"],["storeable","storable"],["storeage","storage"],["stoream","stream"],["storeble","storable"],["storeing","storing"],["storge","storage"],["storise","stories"],["stornegst","strongest"],["stoyr","story"],["stpo","stop"],["stradegies","strategies"],["stradegy","strategy"],["stragegy","strategy"],["strageties","strategies"],["stragety","strategy"],["straigh-forward","straightforward"],["straighforward","straightforward"],["straightfoward","straightforward"],["straigt","straight"],["straigth","straight"],["straines","strains"],["strangness","strangeness"],["strart","start"],["strarted","started"],["strarting","starting"],["strarts","starts"],["stratagically","strategically"],["strcture","structure"],["strctures","structures"],["strcutre","structure"],["strcutural","structural"],["strcuture","structure"],["strcutures","structures"],["streamm","stream"],["streammed","streamed"],["streamming","streaming"],["streatched","stretched"],["strech","stretch"],["streched","stretched"],["streches","stretches"],["streching","stretching"],["strectch","stretch"],["strecth","stretch"],["strecthed","stretched"],["strecthes","stretches"],["strecthing","stretching"],["streem","stream"],["streemlining","streamlining"],["stregth","strength"],["streightish","straightish"],["streightly","straightly"],["streightness","straightness"],["streigtish","straightish"],["streigtly","straightly"],["streigtness","straightness"],["strem","stream"],["strema","stream"],["strengh","strength"],["strenghen","strengthen"],["strenghened","strengthened"],["strenghening","strengthening"],["strenght","strength"],["strenghten","strengthen"],["strenghtened","strengthened"],["strenghtening","strengthening"],["strenghts","strengths"],["strengtened","strengthened"],["strenous","strenuous"],["strentgh","strength"],["strenth","strength"],["strerrror","strerror"],["striaght","straight"],["striaghten","straighten"],["striaghtens","straightens"],["striaghtforward","straightforward"],["striaghts","straights"],["striclty","strictly"],["stricly","strictly"],["stricteir","stricter"],["strictier","stricter"],["strictiest","strictest"],["strictist","strictest"],["strig","string"],["strigification","stringification"],["strigifying","stringifying"],["striing","string"],["striings","strings"],["strikely","strikingly"],["stringifed","stringified"],["strinsg","strings"],["strippen","stripped"],["stript","stripped"],["strirngification","stringification"],["strnad","strand"],["strng","string"],["stroage","storage"],["stroe","store"],["stroing","storing"],["stronlgy","strongly"],["stronly","strongly"],["strore","store"],["strored","stored"],["strores","stores"],["stroring","storing"],["strotage","storage"],["stroyboard","storyboard"],["struc","struct"],["strucrure","structure"],["strucrured","structured"],["strucrures","structures"],["structed","structured"],["structer","structure"],["structere","structure"],["structered","structured"],["structeres","structures"],["structetr","structure"],["structire","structure"],["structre","structure"],["structred","structured"],["structres","structures"],["structrual","structural"],["structrue","structure"],["structrued","structured"],["structrues","structures"],["structual","structural"],["structue","structure"],["structued","structured"],["structues","structures"],["structur","structure"],["structurs","structures"],["strucur","structure"],["strucure","structure"],["strucured","structured"],["strucures","structures"],["strucuring","structuring"],["strucurs","structures"],["strucutre","structure"],["strucutred","structured"],["strucutres","structures"],["strucuture","structure"],["struggel","struggle"],["struggeled","struggled"],["struggeling","struggling"],["struggels","struggles"],["struttural","structural"],["strutture","structure"],["struture","structure"],["ststion","station"],["ststionary","stationary"],["ststioned","stationed"],["ststionery","stationery"],["ststions","stations"],["ststr","strstr"],["stteting","setting"],["sttetings","settings"],["stubborness","stubbornness"],["stucked","stuck"],["stuckt","stuck"],["stuct","struct"],["stucts","structs"],["stucture","structure"],["stuctured","structured"],["stuctures","structures"],["studdy","study"],["studetn","student"],["studetns","students"],["studing","studying"],["studoi","studio"],["studois","studios"],["stuggling","struggling"],["stuido","studio"],["stuidos","studios"],["stuill","still"],["stummac","stomach"],["sturctural","structural"],["sturcture","structure"],["sturctures","structures"],["sturture","structure"],["sturtured","structured"],["sturtures","structures"],["sturucture","structure"],["stutdown","shutdown"],["stutus","status"],["styhe","style"],["styilistic","stylistic"],["stylessheets","stylesheets"],["sub-lcuase","sub-clause"],["subbtle","subtle"],["subcatagories","subcategories"],["subcatagory","subcategory"],["subcirucit","subcircuit"],["subcommannd","subcommand"],["subcommnad","subcommand"],["subconchus","subconscious"],["subconsiously","subconsciously"],["subcribe","subscribe"],["subcribed","subscribed"],["subcribes","subscribes"],["subcribing","subscribing"],["subdirectoires","subdirectories"],["subdirectorys","subdirectories"],["subdirecty","subdirectory"],["subdivisio","subdivision"],["subdivisiond","subdivisioned"],["subdoamin","subdomain"],["subdoamins","subdomains"],["subelemet","subelement"],["subelemets","subelements"],["subexperesion","subexpression"],["subexperesions","subexpressions"],["subexperession","subexpression"],["subexperessions","subexpressions"],["subexpersion","subexpression"],["subexpersions","subexpressions"],["subexperssion","subexpression"],["subexperssions","subexpressions"],["subexpession","subexpression"],["subexpessions","subexpressions"],["subexpresssion","subexpression"],["subexpresssions","subexpressions"],["subfolfer","subfolder"],["subfolfers","subfolders"],["subfromat","subformat"],["subfromats","subformats"],["subfroms","subforms"],["subgregion","subregion"],["subirectory","subdirectory"],["subjec","subject"],["subjet","subject"],["subjudgation","subjugation"],["sublass","subclass"],["sublasse","subclasse"],["sublasses","subclasses"],["sublcasses","subclasses"],["sublcuase","subclause"],["suble","subtle"],["submachne","submachine"],["submision","submission"],["submisson","submission"],["submited","submitted"],["submition","submission"],["submitions","submissions"],["submittted","submitted"],["submoule","submodule"],["submti","submit"],["subnegatiotiation","subnegotiation"],["subnegatiotiations","subnegotiations"],["subnegoatiation","subnegotiation"],["subnegoatiations","subnegotiations"],["subnegoation","subnegotiation"],["subnegoations","subnegotiations"],["subnegociation","subnegotiation"],["subnegociations","subnegotiations"],["subnegogtiation","subnegotiation"],["subnegogtiations","subnegotiations"],["subnegoitation","subnegotiation"],["subnegoitations","subnegotiations"],["subnegoptionsotiation","subnegotiation"],["subnegoptionsotiations","subnegotiations"],["subnegosiation","subnegotiation"],["subnegosiations","subnegotiations"],["subnegotaiation","subnegotiation"],["subnegotaiations","subnegotiations"],["subnegotaition","subnegotiation"],["subnegotaitions","subnegotiations"],["subnegotatiation","subnegotiation"],["subnegotatiations","subnegotiations"],["subnegotation","subnegotiation"],["subnegotations","subnegotiations"],["subnegothiation","subnegotiation"],["subnegothiations","subnegotiations"],["subnegotication","subnegotiation"],["subnegotications","subnegotiations"],["subnegotioation","subnegotiation"],["subnegotioations","subnegotiations"],["subnegotion","subnegotiation"],["subnegotionation","subnegotiation"],["subnegotionations","subnegotiations"],["subnegotions","subnegotiations"],["subnegotiotation","subnegotiation"],["subnegotiotations","subnegotiations"],["subnegotiotion","subnegotiation"],["subnegotiotions","subnegotiations"],["subnegotitaion","subnegotiation"],["subnegotitaions","subnegotiations"],["subnegotitation","subnegotiation"],["subnegotitations","subnegotiations"],["subnegotition","subnegotiation"],["subnegotitions","subnegotiations"],["subnegoziation","subnegotiation"],["subnegoziations","subnegotiations"],["subobjecs","subobjects"],["suborutine","subroutine"],["suborutines","subroutines"],["suboutine","subroutine"],["subpackge","subpackage"],["subpackges","subpackages"],["subpecies","subspecies"],["subporgram","subprogram"],["subproccese","subprocess"],["subpsace","subspace"],["subquue","subqueue"],["subract","subtract"],["subracted","subtracted"],["subraction","subtraction"],["subree","subtree"],["subresoure","subresource"],["subresoures","subresources"],["subroutie","subroutine"],["subrouties","subroutines"],["subsceptible","susceptible"],["subscibe","subscribe"],["subscibed","subscribed"],["subsciber","subscriber"],["subscibers","subscribers"],["subscirbe","subscribe"],["subscirbed","subscribed"],["subscirber","subscriber"],["subscirbers","subscribers"],["subscirbes","subscribes"],["subscirbing","subscribing"],["subscirpt","subscript"],["subscirption","subscription"],["subscirptions","subscriptions"],["subscritpion","subscription"],["subscritpions","subscriptions"],["subscritpiton","subscription"],["subscritpitons","subscriptions"],["subscritpt","subscript"],["subscritption","subscription"],["subscritptions","subscriptions"],["subsctitution","substitution"],["subsecrion","subsection"],["subsedent","subsequent"],["subseqence","subsequence"],["subseqent","subsequent"],["subsequest","subsequent"],["subsequnce","subsequence"],["subsequnt","subsequent"],["subsequntly","subsequently"],["subseuqent","subsequent"],["subshystem","subsystem"],["subshystems","subsystems"],["subsidary","subsidiary"],["subsiduary","subsidiary"],["subsiquent","subsequent"],["subsiquently","subsequently"],["subsituent","substituent"],["subsituents","substituents"],["subsitutable","substitutable"],["subsitutatble","substitutable"],["subsitute","substitute"],["subsituted","substituted"],["subsitutes","substitutes"],["subsituting","substituting"],["subsitution","substitution"],["subsitutions","substitutions"],["subsitutuent","substituent"],["subsitutuents","substituents"],["subsitutute","substitute"],["subsitututed","substituted"],["subsitututes","substitutes"],["subsitututing","substituting"],["subsitutution","substitution"],["subsquent","subsequent"],["subsquently","subsequently"],["subsriber","subscriber"],["substace","substance"],["substact","subtract"],["substaintially","substantially"],["substancial","substantial"],["substantialy","substantially"],["substantivly","substantively"],["substask","subtask"],["substasks","subtasks"],["substatial","substantial"],["substential","substantial"],["substentially","substantially"],["substition","substitution"],["substitions","substitutions"],["substitition","substitution"],["substititions","substitutions"],["substituation","substitution"],["substituations","substitutions"],["substitude","substitute"],["substituded","substituted"],["substitudes","substitutes"],["substituding","substituting"],["substitue","substitute"],["substitues","substitutes"],["substituing","substituting"],["substituion","substitution"],["substituions","substitutions"],["substiution","substitution"],["substract","subtract"],["substracted","subtracted"],["substracting","subtracting"],["substraction","subtraction"],["substracts","subtracts"],["substucture","substructure"],["substuctures","substructures"],["substutite","substitute"],["subsysthem","subsystem"],["subsysthems","subsystems"],["subsystyem","subsystem"],["subsystyems","subsystems"],["subsysytem","subsystem"],["subsysytems","subsystems"],["subsytem","subsystem"],["subsytems","subsystems"],["subtabels","subtables"],["subtak","subtask"],["subtances","substances"],["subterranian","subterranean"],["subtitute","substitute"],["subtituted","substituted"],["subtitutes","substitutes"],["subtituting","substituting"],["subtitution","substitution"],["subtitutions","substitutions"],["subtrafuge","subterfuge"],["subtrate","substrate"],["subtrates","substrates"],["subtring","substring"],["subtrings","substrings"],["subtsitutable","substitutable"],["subtsitutatble","substitutable"],["suburburban","suburban"],["subystem","subsystem"],["subystems","subsystems"],["succceeded","succeeded"],["succcess","success"],["succcesses","successes"],["succcessful","successful"],["succcessfully","successfully"],["succcessor","successor"],["succcessors","successors"],["succcessul","successful"],["succcessully","successfully"],["succecful","successful"],["succed","succeed"],["succedd","succeed"],["succedded","succeeded"],["succedding","succeeding"],["succedds","succeeds"],["succede","succeed"],["succeded","succeeded"],["succedes","succeeds"],["succedfully","successfully"],["succeding","succeeding"],["succeds","succeeds"],["succee","succeed"],["succeedde","succeeded"],["succeedes","succeeds"],["succeess","success"],["succeesses","successes"],["succes","success"],["succesful","successful"],["succesfull","successful"],["succesfully","successfully"],["succesfuly","successfully"],["succesion","succession"],["succesive","successive"],["succesor","successor"],["succesors","successors"],["successfui","successful"],["successfule","successful"],["successfull","successful"],["successfullies","successfully"],["successfullly","successfully"],["successfulln","successful"],["successfullness","successfulness"],["successfullt","successfully"],["successfuly","successfully"],["successing","successive"],["successs","success"],["successsfully","successfully"],["successsion","succession"],["successul","successful"],["successully","successfully"],["succesully","successfully"],["succicently","sufficiently"],["succint","succinct"],["succseeded","succeeded"],["succsess","success"],["succsessfull","successful"],["succsessive","successive"],["succssful","successful"],["succussfully","successfully"],["suceed","succeed"],["suceeded","succeeded"],["suceeding","succeeding"],["suceeds","succeeds"],["suceessfully","successfully"],["suces","success"],["suceses","successes"],["sucesful","successful"],["sucesfull","successful"],["sucesfully","successfully"],["sucesfuly","successfully"],["sucesion","succession"],["sucesive","successive"],["sucess","success"],["sucesscient","sufficient"],["sucessed","succeeded"],["sucessefully","successfully"],["sucesses","successes"],["sucessess","success"],["sucessflly","successfully"],["sucessfually","successfully"],["sucessfukk","successful"],["sucessful","successful"],["sucessfull","successful"],["sucessfully","successfully"],["sucessfuly","successfully"],["sucession","succession"],["sucessiv","successive"],["sucessive","successive"],["sucessively","successively"],["sucessor","successor"],["sucessors","successors"],["sucessot","successor"],["sucesss","success"],["sucessses","successes"],["sucesssful","successful"],["sucesssfull","successful"],["sucesssfully","successfully"],["sucesssfuly","successfully"],["sucessufll","successful"],["sucessuflly","successfully"],["sucessully","successfully"],["sucide","suicide"],["sucidial","suicidal"],["sucome","succumb"],["sucsede","succeed"],["sucsess","success"],["sudent","student"],["sudents","students"],["sudmobule","submodule"],["sudmobules","submodules"],["sueful","useful"],["sueprset","superset"],["suface","surface"],["sufaces","surfaces"],["sufface","surface"],["suffaces","surfaces"],["suffciency","sufficiency"],["suffcient","sufficient"],["suffciently","sufficiently"],["sufferage","suffrage"],["sufferred","suffered"],["sufferring","suffering"],["sufficate","suffocate"],["sufficated","suffocated"],["sufficates","suffocates"],["sufficating","suffocating"],["suffication","suffocation"],["sufficency","sufficiency"],["sufficent","sufficient"],["sufficently","sufficiently"],["sufficiancy","sufficiency"],["sufficiant","sufficient"],["sufficiantly","sufficiently"],["sufficiennt","sufficient"],["sufficienntly","sufficiently"],["suffiency","sufficiency"],["suffient","sufficient"],["suffiently","sufficiently"],["suffisticated","sophisticated"],["suficate","suffocate"],["suficated","suffocated"],["suficates","suffocates"],["suficating","suffocating"],["sufication","suffocation"],["suficcient","sufficient"],["suficient","sufficient"],["suficiently","sufficiently"],["sufocate","suffocate"],["sufocated","suffocated"],["sufocates","suffocates"],["sufocating","suffocating"],["sufocation","suffocation"],["sugested","suggested"],["sugestion","suggestion"],["sugestions","suggestions"],["sugests","suggests"],["suggesst","suggest"],["suggessted","suggested"],["suggessting","suggesting"],["suggesstion","suggestion"],["suggesstions","suggestions"],["suggessts","suggests"],["suggestes","suggests"],["suggestin","suggestion"],["suggestins","suggestions"],["suggestsed","suggested"],["suggestted","suggested"],["suggesttion","suggestion"],["suggesttions","suggestions"],["sugget","suggest"],["suggeted","suggested"],["suggetsed","suggested"],["suggetsing","suggesting"],["suggetsion","suggestion"],["sugggest","suggest"],["sugggested","suggested"],["sugggesting","suggesting"],["sugggestion","suggestion"],["sugggestions","suggestions"],["sugguest","suggest"],["sugguested","suggested"],["sugguesting","suggesting"],["sugguestion","suggestion"],["sugguestions","suggestions"],["suh","such"],["suiete","suite"],["suiteable","suitable"],["sumamry","summary"],["sumarize","summarize"],["sumary","summary"],["sumbitted","submitted"],["sumed-up","summed-up"],["summarizen","summarize"],["summay","summary"],["summerised","summarised"],["summerized","summarized"],["summersalt","somersault"],["summmaries","summaries"],["summmarisation","summarisation"],["summmarised","summarised"],["summmarization","summarization"],["summmarized","summarized"],["summmary","summary"],["sumodules","submodules"],["sumulate","simulate"],["sumulated","simulated"],["sumulates","simulates"],["sumulation","simulation"],["sumulations","simulations"],["sundey","Sunday"],["sunglases","sunglasses"],["sunsday","Sunday"],["suntask","subtask"],["suop","soup"],["supeblock","superblock"],["supeena","subpoena"],["superbock","superblock"],["superbocks","superblocks"],["supercalifragilisticexpialidoceous","supercalifragilisticexpialidocious"],["supercede","supersede"],["superceded","superseded"],["supercedes","supersedes"],["superceding","superseding"],["superceed","supersede"],["superceeded","superseded"],["superflouous","superfluous"],["superflous","superfluous"],["superflouse","superfluous"],["superfluious","superfluous"],["superfluos","superfluous"],["superfulous","superfluous"],["superintendant","superintendent"],["superopeator","superoperator"],["supersed","superseded"],["superseedd","superseded"],["superseede","supersede"],["superseeded","superseded"],["suphisticated","sophisticated"],["suplant","supplant"],["suplanted","supplanted"],["suplanting","supplanting"],["suplants","supplants"],["suplementary","supplementary"],["suplied","supplied"],["suplimented","supplemented"],["supllies","supplies"],["suport","support"],["suported","supported"],["suporting","supporting"],["suports","supports"],["suportted","supported"],["suposable","supposable"],["supose","suppose"],["suposeable","supposable"],["suposed","supposed"],["suposedly","supposedly"],["suposes","supposes"],["suposing","supposing"],["suposse","suppose"],["suppied","supplied"],["suppier","supplier"],["suppies","supplies"],["supplamented","supplemented"],["suppliad","supplied"],["suppliementing","supplementing"],["suppliment","supplement"],["supplyed","supplied"],["suppoed","supposed"],["suppoert","support"],["suppoort","support"],["suppoorts","supports"],["suppopose","suppose"],["suppoprt","support"],["suppoprted","supported"],["suppor","support"],["suppored","supported"],["supporession","suppression"],["supporing","supporting"],["supportd","supported"],["supportes","supports"],["supportin","supporting"],["supportt","support"],["supportted","supported"],["supportting","supporting"],["supportts","supports"],["supposeable","supposable"],["supposeded","supposed"],["supposedely","supposedly"],["supposeds","supposed"],["supposedy","supposedly"],["supposingly","supposedly"],["suppossed","supposed"],["suppoted","supported"],["suppplied","supplied"],["suppport","support"],["suppported","supported"],["suppporting","supporting"],["suppports","supports"],["suppres","suppress"],["suppresed","suppressed"],["suppresion","suppression"],["suppresions","suppressions"],["suppressingd","suppressing"],["supprot","support"],["supproted","supported"],["supproter","supporter"],["supproters","supporters"],["supproting","supporting"],["supprots","supports"],["supprt","support"],["supprted","supported"],["suppurt","support"],["suppurted","supported"],["suppurter","supporter"],["suppurters","supporters"],["suppurting","supporting"],["suppurtive","supportive"],["suppurts","supports"],["suppy","supply"],["suppying","supplying"],["suprassing","surpassing"],["supres","suppress"],["supresed","suppressed"],["supreses","suppresses"],["supresing","suppressing"],["supresion","suppression"],["supress","suppress"],["supressed","suppressed"],["supresses","suppresses"],["supressible","suppressible"],["supressing","suppressing"],["supression","suppression"],["supressions","suppressions"],["supressor","suppressor"],["supressors","suppressors"],["supresssion","suppression"],["suprious","spurious"],["suprise","surprise"],["suprised","surprised"],["suprises","surprises"],["suprising","surprising"],["suprisingly","surprisingly"],["suprize","surprise"],["suprized","surprised"],["suprizing","surprising"],["suprizingly","surprisingly"],["supsend","suspend"],["supspect","suspect"],["supspected","suspected"],["supspecting","suspecting"],["supspects","suspects"],["surbert","sherbet"],["surfce","surface"],["surgest","suggest"],["surgested","suggested"],["surgestion","suggestion"],["surgestions","suggestions"],["surgests","suggests"],["suround","surround"],["surounded","surrounded"],["surounding","surrounding"],["suroundings","surroundings"],["surounds","surrounds"],["surpise","surprise"],["surpises","surprises"],["surplanted","supplanted"],["surport","support"],["surported","supported"],["surpress","suppress"],["surpressed","suppressed"],["surpresses","suppresses"],["surpressing","suppressing"],["surprisinlgy","surprisingly"],["surprize","surprise"],["surprized","surprised"],["surprizing","surprising"],["surprizingly","surprisingly"],["surregat","surrogate"],["surrepetitious","surreptitious"],["surrepetitiously","surreptitiously"],["surreptious","surreptitious"],["surreptiously","surreptitiously"],["surrogage","surrogate"],["surronded","surrounded"],["surrouded","surrounded"],["surrouding","surrounding"],["surrrounded","surrounded"],["surrundering","surrendering"],["survay","survey"],["survays","surveys"],["surveilence","surveillance"],["surveill","surveil"],["surveyer","surveyor"],["surviver","survivor"],["survivers","survivors"],["survivied","survived"],["susbcribed","subscribed"],["susbsystem","subsystem"],["susbsystems","subsystems"],["susbsytem","subsystem"],["susbsytems","subsystems"],["suscribe","subscribe"],["suscribed","subscribed"],["suscribes","subscribes"],["suscript","subscript"],["susepect","suspect"],["suseptable","susceptible"],["suseptible","susceptible"],["susinctly","succinctly"],["susinkt","succinct"],["suspedn","suspend"],["suspeneded","suspended"],["suspention","suspension"],["suspicios","suspicious"],["suspicioulsy","suspiciously"],["suspicous","suspicious"],["suspicously","suspiciously"],["suspision","suspicion"],["suspsend","suspend"],["sussinct","succinct"],["sustainaiblity","sustainability"],["sustem","system"],["sustems","systems"],["sustitution","substitution"],["sustitutions","substitutions"],["susupend","suspend"],["sutdown","shutdown"],["sutisfaction","satisfaction"],["sutisfied","satisfied"],["sutisfies","satisfies"],["sutisfy","satisfy"],["sutisfying","satisfying"],["suttled","shuttled"],["suttles","shuttles"],["suttlety","subtlety"],["suttling","shuttling"],["suuport","support"],["suuported","supported"],["suuporting","supporting"],["suuports","supports"],["suvenear","souvenir"],["suystem","system"],["suystemic","systemic"],["suystems","systems"],["svelt","svelte"],["swaer","swear"],["swaers","swears"],["swalloed","swallowed"],["swaped","swapped"],["swapiness","swappiness"],["swaping","swapping"],["swarmin","swarming"],["swcloumns","swcolumns"],["swepth","swept"],["swich","switch"],["swiched","switched"],["swiching","switching"],["swicth","switch"],["swicthed","switched"],["swicthing","switching"],["swiming","swimming"],["switchs","switches"],["switcht","switched"],["switchting","switching"],["swith","switch"],["swithable","switchable"],["swithc","switch"],["swithcboard","switchboard"],["swithced","switched"],["swithces","switches"],["swithch","switch"],["swithches","switches"],["swithching","switching"],["swithcing","switching"],["swithcover","switchover"],["swithed","switched"],["swither","switcher"],["swithes","switches"],["swithing","switching"],["switiches","switches"],["swown","shown"],["swtich","switch"],["swtichable","switchable"],["swtichback","switchback"],["swtichbacks","switchbacks"],["swtichboard","switchboard"],["swtichboards","switchboards"],["swtiched","switched"],["swticher","switcher"],["swtichers","switchers"],["swtiches","switches"],["swtiching","switching"],["swtichover","switchover"],["swtichs","switches"],["sxl","xsl"],["syantax","syntax"],["syas","says"],["syatem","system"],["syatems","systems"],["sybsystem","subsystem"],["sybsystems","subsystems"],["sychronisation","synchronisation"],["sychronise","synchronise"],["sychronised","synchronised"],["sychroniser","synchroniser"],["sychronises","synchronises"],["sychronisly","synchronously"],["sychronization","synchronization"],["sychronize","synchronize"],["sychronized","synchronized"],["sychronizer","synchronizer"],["sychronizes","synchronizes"],["sychronmode","synchronmode"],["sychronous","synchronous"],["sychronously","synchronously"],["sycle","cycle"],["sycled","cycled"],["sycles","cycles"],["sycling","cycling"],["sycn","sync"],["sycology","psychology"],["sycronise","synchronise"],["sycronised","synchronised"],["sycronises","synchronises"],["sycronising","synchronising"],["sycronization","synchronization"],["sycronizations","synchronizations"],["sycronize","synchronize"],["sycronized","synchronized"],["sycronizes","synchronizes"],["sycronizing","synchronizing"],["sycronous","synchronous"],["sycronously","synchronously"],["sycronus","synchronous"],["sylabus","syllabus"],["syle","style"],["syles","styles"],["sylibol","syllable"],["sylinder","cylinder"],["sylinders","cylinders"],["sylistic","stylistic"],["sylog","syslog"],["symantics","semantics"],["symblic","symbolic"],["symbo","symbol"],["symboles","symbols"],["symboll","symbol"],["symbonname","symbolname"],["symbsol","symbol"],["symbsols","symbols"],["symemetric","symmetric"],["symetri","symmetry"],["symetric","symmetric"],["symetrical","symmetrical"],["symetrically","symmetrically"],["symetry","symmetry"],["symettric","symmetric"],["symmetic","symmetric"],["symmetral","symmetric"],["symmetri","symmetry"],["symmetricaly","symmetrically"],["symnol","symbol"],["symnols","symbols"],["symobilic","symbolic"],["symobl","symbol"],["symoblic","symbolic"],["symoblically","symbolically"],["symobls","symbols"],["symobolic","symbolic"],["symobolical","symbolical"],["symol","symbol"],["symols","symbols"],["synagouge","synagogue"],["synamic","dynamic"],["synax","syntax"],["synching","syncing"],["synchonisation","synchronisation"],["synchonise","synchronise"],["synchonised","synchronised"],["synchonises","synchronises"],["synchonising","synchronising"],["synchonization","synchronization"],["synchonize","synchronize"],["synchonized","synchronized"],["synchonizes","synchronizes"],["synchonizing","synchronizing"],["synchonous","synchronous"],["synchonrous","synchronous"],["synchrnization","synchronization"],["synchrnonization","synchronization"],["synchroizing","synchronizing"],["synchromized","synchronized"],["synchroneous","synchronous"],["synchroneously","synchronously"],["synchronious","synchronous"],["synchroniously","synchronously"],["synchronizaton","synchronization"],["synchronsouly","synchronously"],["synchronuous","synchronous"],["synchronuously","synchronously"],["synchronus","synchronous"],["syncrhonise","synchronise"],["syncrhonised","synchronised"],["syncrhonize","synchronize"],["syncrhonized","synchronized"],["syncronise","synchronise"],["syncronised","synchronised"],["syncronises","synchronises"],["syncronising","synchronising"],["syncronization","synchronization"],["syncronizations","synchronizations"],["syncronize","synchronize"],["syncronized","synchronized"],["syncronizes","synchronizes"],["syncronizing","synchronizing"],["syncronous","synchronous"],["syncronously","synchronously"],["syncronus","synchronous"],["syncting","syncing"],["syndonic","syntonic"],["syndrom","syndrome"],["syndroms","syndromes"],["synomym","synonym"],["synonim","synonym"],["synonomous","synonymous"],["synonymns","synonyms"],["synopis","synopsis"],["synopsys","synopsis"],["synoym","synonym"],["synphony","symphony"],["synposis","synopsis"],["synronous","synchronous"],["syntac","syntax"],["syntacks","syntax"],["syntacs","syntax"],["syntact","syntax"],["syntactally","syntactically"],["syntacts","syntax"],["syntak","syntax"],["syntaks","syntax"],["syntakt","syntax"],["syntakts","syntax"],["syntatic","syntactic"],["syntatically","syntactically"],["syntaxe","syntax"],["syntaxg","syntax"],["syntaxt","syntax"],["syntehsise","synthesise"],["syntehsised","synthesised"],["syntehsize","synthesize"],["syntehsized","synthesized"],["syntesis","synthesis"],["syntethic","synthetic"],["syntethically","synthetically"],["syntethics","synthetics"],["syntetic","synthetic"],["syntetize","synthesize"],["syntetized","synthesized"],["synthethic","synthetic"],["synthetize","synthesize"],["synthetized","synthesized"],["synthetizes","synthesizes"],["synthtic","synthetic"],["syphyllis","syphilis"],["sypmtoms","symptoms"],["sypport","support"],["syrap","syrup"],["sysbols","symbols"],["syschronize","synchronize"],["sysem","system"],["sysematic","systematic"],["sysems","systems"],["sysmatically","systematically"],["sysmbol","symbol"],["sysmograph","seismograph"],["sysmte","system"],["sysmtes","systems"],["systax","syntax"],["syste","system"],["systen","system"],["systens","systems"],["systesm","systems"],["systhem","system"],["systhems","systems"],["systm","system"],["systme","system"],["systmes","systems"],["systms","systems"],["systyem","system"],["systyems","systems"],["sysyem","system"],["sysyems","systems"],["sytax","syntax"],["sytem","system"],["sytematic","systematic"],["sytemd","systemd"],["syteme","system"],["sytems","systems"],["sythesis","synthesis"],["sytle","style"],["sytled","styled"],["sytles","styles"],["sytlesheet","stylesheet"],["sytling","styling"],["sytnax","syntax"],["sytntax","syntax"],["sytsem","system"],["sytsemic","systemic"],["sytsems","systems"],["szenario","scenario"],["szenarios","scenarios"],["szes","sizes"],["szie","size"],["szied","sized"],["szies","sizes"],["tabacco","tobacco"],["tabbaray","taboret"],["tabblow","tableau"],["tabe","table"],["tabel","table"],["tabeles","tables"],["tabels","tables"],["tabeview","tabview"],["tabke","table"],["tabl","table"],["tablepsace","tablespace"],["tablepsaces","tablespaces"],["tablle","table"],["tabluar","tabular"],["tabluate","tabulate"],["tabluated","tabulated"],["tabluates","tabulates"],["tabluating","tabulating"],["tabualte","tabulate"],["tabualted","tabulated"],["tabualtes","tabulates"],["tabualting","tabulating"],["tabualtor","tabulator"],["tabualtors","tabulators"],["taged","tagged"],["taget","target"],["tageted","targeted"],["tageting","targeting"],["tagets","targets"],["tagggen","taggen"],["tagnet","tangent"],["tagnetial","tangential"],["tagnets","tangents"],["tagued","tagged"],["tahn","than"],["taht","that"],["takslet","tasklet"],["talbe","table"],["talekd","talked"],["tallerable","tolerable"],["tamplate","template"],["tamplated","templated"],["tamplates","templates"],["tamplating","templating"],["tangeant","tangent"],["tangeantial","tangential"],["tangeants","tangents"],["tangenet","tangent"],["tangensial","tangential"],["tangentailly","tangentially"],["tanget","tangent"],["tangetial","tangential"],["tangetially","tangentially"],["tangets","tangents"],["tansact","transact"],["tansaction","transaction"],["tansactional","transactional"],["tansactions","transactions"],["tanseint","transient"],["tansfomed","transformed"],["tansient","transient"],["tanslate","translate"],["tanslated","translated"],["tanslates","translates"],["tanslation","translation"],["tanslations","translations"],["tanslator","translator"],["tansmit","transmit"],["tansverse","transverse"],["tarbal","tarball"],["tarbals","tarballs"],["tarce","trace"],["tarced","traced"],["tarces","traces"],["tarcing","tracing"],["targed","target"],["targer","target"],["targest","targets"],["targetted","targeted"],["targetting","targeting"],["targettting","targeting"],["targt","target"],["targte","target"],["tarmigan","ptarmigan"],["tarnsparent","transparent"],["tarpolin","tarpaulin"],["tarvis","Travis"],["tarvisci","TravisCI"],["tasbar","taskbar"],["taskelt","tasklet"],["tast","taste"],["tatgert","target"],["tatgerted","targeted"],["tatgerting","targeting"],["tatgerts","targets"],["tath","that"],["tatoo","tattoo"],["tatoos","tattoos"],["tattooes","tattoos"],["tawk","talk"],["taxanomic","taxonomic"],["taxanomy","taxonomy"],["taxnomy","taxonomy"],["taxomonmy","taxonomy"],["taxonmy","taxonomy"],["taxonoy","taxonomy"],["taylored","tailored"],["tbe","the"],["tbey","they"],["tcahce","cache"],["tcahces","caches"],["tcheckout","checkout"],["tcpdumpp","tcpdump"],["tcppcheck","cppcheck"],["teacer","teacher"],["teacers","teachers"],["teached","taught"],["teachnig","teaching"],["teaher","teacher"],["teahers","teachers"],["teamplate","template"],["teamplates","templates"],["teated","treated"],["teched","taught"],["techer","teacher"],["techers","teachers"],["teches","teaches"],["techical","technical"],["techician","technician"],["techicians","technicians"],["techincal","technical"],["techincally","technically"],["teching","teaching"],["techinically","technically"],["techinique","technique"],["techiniques","techniques"],["techinque","technique"],["techinques","techniques"],["techique","technique"],["techiques","techniques"],["techneek","technique"],["technic","technique"],["technics","techniques"],["technik","technique"],["techniks","techniques"],["techniquest","techniques"],["techniquet","technique"],["technitian","technician"],["technition","technician"],["technlogy","technology"],["technnology","technology"],["technolgy","technology"],["technoloiges","technologies"],["tecnic","technique"],["tecnical","technical"],["tecnically","technically"],["tecnician","technician"],["tecnicians","technicians"],["tecnique","technique"],["tecniques","techniques"],["tedeous","tedious"],["tefine","define"],["teh","the"],["tehy","they"],["tekst","text"],["teksts","texts"],["telegramm","telegram"],["telelevision","television"],["televsion","television"],["telocom","telecom"],["telphony","telephony"],["temaplate","template"],["temaplates","templates"],["temeprature","temperature"],["temepratures","temperatures"],["temerature","temperature"],["teminal","terminal"],["teminals","terminals"],["teminate","terminate"],["teminated","terminated"],["teminating","terminating"],["temination","termination"],["temlate","template"],["temorarily","temporarily"],["temorary","temporary"],["tempalte","template"],["tempaltes","templates"],["temparal","temporal"],["tempararily","temporarily"],["temparary","temporary"],["temparate","temperate"],["temparature","temperature"],["temparily","temporarily"],["tempate","template"],["tempated","templated"],["tempates","templates"],["tempatied","templatized"],["tempation","temptation"],["tempatised","templatised"],["tempatized","templatized"],["tempature","temperature"],["tempdate","template"],["tempearture","temperature"],["tempeartures","temperatures"],["tempearure","temperature"],["tempelate","template"],["temperarily","temporarily"],["temperarure","temperature"],["temperary","temporary"],["temperatur","temperature"],["tempereature","temperature"],["temperment","temperament"],["tempertaure","temperature"],["temperture","temperature"],["templaced","templated"],["templaces","templates"],["templacing","templating"],["templaet","template"],["templat","template"],["templateas","templates"],["templete","template"],["templeted","templated"],["templetes","templates"],["templeting","templating"],["tempoaray","temporary"],["tempopary","temporary"],["temporaere","temporary"],["temporafy","temporary"],["temporalily","temporarily"],["temporarely","temporarily"],["temporarilly","temporarily"],["temporarilty","temporarily"],["temporarilu","temporary"],["temporarirly","temporarily"],["temporay","temporary"],["tempories","temporaries"],["temporily","temporarily"],["tempororaries","temporaries"],["tempororarily","temporarily"],["tempororary","temporary"],["temporories","temporaries"],["tempororily","temporarily"],["temporory","temporary"],["temporraies","temporaries"],["temporraily","temporarily"],["temporraries","temporaries"],["temporrarily","temporarily"],["temporrary","temporary"],["temporray","temporary"],["temporries","temporaries"],["temporrily","temporarily"],["temporry","temporary"],["temportal","temporal"],["temportaries","temporaries"],["temportarily","temporarily"],["temportary","temporary"],["tempory","temporary"],["temporyries","temporaries"],["temporyrily","temporarily"],["temporyry","temporary"],["tempraaily","temporarily"],["tempraal","temporal"],["tempraarily","temporarily"],["tempraarly","temporarily"],["tempraary","temporary"],["tempraay","temporary"],["tempraily","temporarily"],["tempral","temporal"],["temprament","temperament"],["tempramental","temperamental"],["tempraraily","temporarily"],["tempraral","temporal"],["temprararily","temporarily"],["temprararly","temporarily"],["temprarary","temporary"],["tempraray","temporary"],["temprarily","temporarily"],["temprature","temperature"],["tempratures","temperatures"],["tempray","temporary"],["tempreature","temperature"],["tempreatures","temperatures"],["temprement","temperament"],["tempremental","temperamental"],["temproaily","temporarily"],["temproal","temporal"],["temproarily","temporarily"],["temproarly","temporarily"],["temproary","temporary"],["temproay","temporary"],["temprol","temporal"],["temproment","temperament"],["tempromental","temperamental"],["temproraily","temporarily"],["temproral","temporal"],["temproraly","temporarily"],["temprorarily","temporarily"],["temprorarly","temporarily"],["temprorary","temporary"],["temproray","temporary"],["temprorily","temporarily"],["temprory","temporary"],["temproy","temporary"],["temptatation","temptation"],["tempurature","temperature"],["tempurture","temperature"],["temr","term"],["temrinal","terminal"],["temselves","themselves"],["temtation","temptation"],["tenacle","tentacle"],["tenacles","tentacles"],["tenanet","tenant"],["tenanets","tenants"],["tenatious","tenacious"],["tenatiously","tenaciously"],["tenative","tentative"],["tenatively","tentatively"],["tendacy","tendency"],["tendancies","tendencies"],["tendancy","tendency"],["tennisplayer","tennis player"],["tentaive","tentative"],["tentaively","tentatively"],["tention","tension"],["teplmate","template"],["teplmated","templated"],["teplmates","templates"],["tepmorarily","temporarily"],["teraform","terraform"],["teraformed","terraformed"],["teraforming","terraforming"],["teraforms","terraforms"],["terfform","terraform"],["terfformed","terraformed"],["terfforming","terraforming"],["terfforms","terraforms"],["teridactyl","pterodactyl"],["terific","terrific"],["terimnate","terminate"],["termial","terminal"],["termials","terminals"],["termianted","terminated"],["termimal","terminal"],["termimals","terminals"],["terminater","terminator"],["terminaters","terminators"],["terminats","terminates"],["termindate","terminate"],["termine","determine"],["termined","terminated"],["terminte","terminate"],["termintor","terminator"],["termniate","terminate"],["termniated","terminated"],["termniates","terminates"],["termniating","terminating"],["termniation","termination"],["termniations","terminations"],["termniator","terminator"],["termniators","terminators"],["termo","thermo"],["termostat","thermostat"],["termperatue","temperature"],["termperatues","temperatures"],["termperature","temperature"],["termperatures","temperatures"],["termplate","template"],["termplated","templated"],["termplates","templates"],["termporal","temporal"],["termporaries","temporaries"],["termporarily","temporarily"],["termporary","temporary"],["ternament","tournament"],["ternimate","terminate"],["terninal","terminal"],["terninals","terminals"],["terrable","terrible"],["terrestial","terrestrial"],["terrform","terraform"],["terrformed","terraformed"],["terrforming","terraforming"],["terrforms","terraforms"],["terriffic","terrific"],["terriories","territories"],["terriory","territory"],["territorist","terrorist"],["territoy","territory"],["terroist","terrorist"],["terurn","return"],["terurns","returns"],["tescase","testcase"],["tescases","testcases"],["tesellate","tessellate"],["tesellated","tessellated"],["tesellation","tessellation"],["tesellator","tessellator"],["tesited","tested"],["tessealte","tessellate"],["tessealted","tessellated"],["tesselatad","tessellated"],["tesselate","tessellate"],["tesselated","tessellated"],["tesselation","tessellation"],["tesselator","tessellator"],["tessleate","tessellate"],["tessleated","tessellated"],["tessleating","tessellating"],["tessleator","tessellator"],["testeing","testing"],["testiclular","testicular"],["testin","testing"],["testng","testing"],["testof","test of"],["testomony","testimony"],["testsing","testing"],["tetrahedran","tetrahedron"],["tetrahedrans","tetrahedrons"],["tetry","retry"],["tetss","tests"],["tetxture","texture"],["teusday","Tuesday"],["texchnically","technically"],["texline","textline"],["textfrme","textframe"],["texual","textual"],["texually","textually"],["texure","texture"],["texured","textured"],["texures","textures"],["texxt","text"],["tey","they"],["tghe","the"],["thansk","thanks"],["thansparent","transparent"],["thant","than"],["thare","there"],["that;s","that's"],["thats'","that's"],["thats","that's"],["thats;","that's"],["thck","thick"],["theard","thread"],["thearding","threading"],["theards","threads"],["theared","threaded"],["theather","theater"],["theef","thief"],["theer","there"],["theery","theory"],["theese","these"],["thefore","therefore"],["theif","thief"],["theifs","thieves"],["theive","thief"],["theives","thieves"],["themplate","template"],["themselces","themselves"],["themselfes","themselves"],["themselfs","themselves"],["themselvs","themselves"],["themslves","themselves"],["thenes","themes"],["thenn","then"],["theorectical","theoretical"],["theoreticall","theoretically"],["theoreticaly","theoretically"],["theorical","theoretical"],["theorically","theoretically"],["theoritical","theoretical"],["theoritically","theoretically"],["therafter","thereafter"],["therapudic","therapeutic"],["therby","thereby"],["thereads","threads"],["thereom","theorem"],["thererin","therein"],["theres","there's"],["thereshold","threshold"],["theresholds","thresholds"],["therfore","therefore"],["thermisor","thermistor"],["thermisors","thermistors"],["thermostast","thermostat"],["thermostasts","thermostats"],["therstat","thermostat"],["therwise","otherwise"],["theshold","threshold"],["thesholds","thresholds"],["thest","test"],["thetraedral","tetrahedral"],["thetrahedron","tetrahedron"],["thev","the"],["theves","thieves"],["thgat","that"],["thge","the"],["thhese","these"],["thhis","this"],["thid","this"],["thier","their"],["thign","thing"],["thigns","things"],["thigny","thingy"],["thigsn","things"],["thikn","think"],["thikness","thickness"],["thiknesses","thicknesses"],["thikns","thinks"],["thiks","thinks"],["thimngs","things"],["thinigs","things"],["thinkabel","thinkable"],["thinn","thin"],["thirtyth","thirtieth"],["this'd","this would"],["thisle","thistle"],["thist","this"],["thisy","this"],["thiunk","think"],["thjese","these"],["thme","them"],["thn","then"],["thna","than"],["thnak","thank"],["thnaks","thanks"],["thne","then"],["thnig","thing"],["thnigs","things"],["thonic","chthonic"],["thoroidal","toroidal"],["thoroughty","thoroughly"],["thoruoghly","thoroughly"],["thoses","those"],["thouch","touch"],["thoughout","throughout"],["thougth","thought"],["thounsands","thousands"],["thourghly","thoroughly"],["thourough","thorough"],["thouroughly","thoroughly"],["thq","the"],["thrad","thread"],["threadsave","threadsafe"],["threashold","threshold"],["threasholds","thresholds"],["threatend","threatened"],["threatment","treatment"],["threatments","treatments"],["threatning","threatening"],["thred","thread"],["threded","threaded"],["thredhold","threshold"],["threding","threading"],["threds","threads"],["three-dimenional","three-dimensional"],["three-dimenionsal","three-dimensional"],["threedimenional","three-dimensional"],["threedimenionsal","three-dimensional"],["threee","three"],["threhold","threshold"],["threrefore","therefore"],["threshhold","threshold"],["threshholds","thresholds"],["threshod","threshold"],["threshods","thresholds"],["threshol","threshold"],["thresold","threshold"],["thresshold","threshold"],["thrid","third"],["throen","thrown"],["throgh","through"],["throrough","thorough"],["throttoling","throttling"],["throug","through"],["througg","through"],["throughly","thoroughly"],["throughtout","throughout"],["througout","throughout"],["througt","through"],["througth","through"],["throuh","through"],["throuhg","through"],["throuhgout","throughout"],["throuhgput","throughput"],["throuth","through"],["throwgh","through"],["thrreshold","threshold"],["thrresholds","thresholds"],["thrue","through"],["thrugh","through"],["thruogh","through"],["thruoghout","throughout"],["thruoghput","throughput"],["thruout","throughout"],["thses","these"],["thsi","this"],["thsnk","thank"],["thsnked","thanked"],["thsnkful","thankful"],["thsnkfully","thankfully"],["thsnkfulness","thankfulness"],["thsnking","thanking"],["thsnks","thanks"],["thsnkyou","thank you"],["thsoe","those"],["thsose","those"],["thsould","should"],["thst","that"],["thta","that"],["thtat","that"],["thumbbnail","thumbnail"],["thumbnal","thumbnail"],["thumbnals","thumbnails"],["thundebird","thunderbird"],["thurday","Thursday"],["thurough","thorough"],["thurrow","thorough"],["thursdey","Thursday"],["thurver","further"],["thyat","that"],["tichened","thickened"],["tichness","thickness"],["tickness","thickness"],["tidibt","tidbit"],["tidibts","tidbits"],["tieing","tying"],["tiemout","timeout"],["tiemstamp","timestamp"],["tiemstamped","timestamped"],["tiemstamps","timestamps"],["tieth","tithe"],["tigger","trigger"],["tiggered","triggered"],["tiggering","triggering"],["tiggers","triggers"],["tighly","tightly"],["tightely","tightly"],["tigth","tight"],["tigthen","tighten"],["tigthened","tightened"],["tigthening","tightening"],["tigthens","tightens"],["tigthly","tightly"],["tihkn","think"],["tihs","this"],["tiitle","title"],["tillt","tilt"],["tillted","tilted"],["tillts","tilts"],["timdelta","timedelta"],["timedlta","timedelta"],["timeing","timing"],["timemout","timeout"],["timeot","timeout"],["timeoutted","timed out"],["timere","timer"],["timesamp","timestamp"],["timesamped","timestamped"],["timesamps","timestamps"],["timeschedule","time schedule"],["timespanp","timespan"],["timespanps","timespans"],["timestan","timespan"],["timestans","timespans"],["timestap","timestamp"],["timestaped","timestamped"],["timestaping","timestamping"],["timestaps","timestamps"],["timestemp","timestamp"],["timestemps","timestamps"],["timestmap","timestamp"],["timestmaps","timestamps"],["timetamp","timestamp"],["timetamps","timestamps"],["timmestamp","timestamp"],["timmestamps","timestamps"],["timne","time"],["timoeut","timeout"],["timout","timeout"],["timtout","timeout"],["timzeone","timezone"],["timzeones","timezones"],["timzezone","timezone"],["timzezones","timezones"],["tinterrupts","interrupts"],["tipically","typically"],["tirangle","triangle"],["tirangles","triangles"],["titel","title"],["titels","titles"],["titile","title"],["tittled","titled"],["tittling","titling"],["tje","the"],["tjhe","the"],["tjpanishad","upanishad"],["tkae","take"],["tkaes","takes"],["tkaing","taking"],["tlaking","talking"],["tmis","this"],["tne","the"],["toally","totally"],["tobbaco","tobacco"],["tobot","robot"],["toches","touches"],["tocksen","toxin"],["todya","today"],["toekn","token"],["togehter","together"],["togeter","together"],["togeterness","togetherness"],["toggel","toggle"],["toggeles","toggles"],["toggeling","toggling"],["toggels","toggles"],["toggleing","toggling"],["togheter","together"],["toghether","together"],["togle","toggle"],["togled","toggled"],["togling","toggling"],["toglle","toggle"],["toglled","toggled"],["togther","together"],["tolarable","tolerable"],["tolelerance","tolerance"],["tolen","token"],["tolens","tokens"],["toleranz","tolerance"],["tolerence","tolerance"],["tolerences","tolerances"],["tolerent","tolerant"],["tolernce","tolerance"],["Tolkein","Tolkien"],["tollerable","tolerable"],["tollerance","tolerance"],["tollerances","tolerances"],["tolorance","tolerance"],["tolorances","tolerances"],["tolorant","tolerant"],["tomatoe","tomato"],["tomatos","tomatoes"],["tommorow","tomorrow"],["tommorrow","tomorrow"],["tomorrrow","tomorrow"],["tongiht","tonight"],["tonihgt","tonight"],["tood","todo"],["toogle","toggle"],["toogling","toggling"],["tookits","toolkits"],["toolar","toolbar"],["toolsbox","toolbox"],["toom","tomb"],["toos","tools"],["tootonic","teutonic"],["topicaizer","topicalizer"],["topologie","topology"],["torerable","tolerable"],["toriodal","toroidal"],["tork","torque"],["tormenters","tormentors"],["tornadoe","tornado"],["torpeados","torpedoes"],["torpedos","torpedoes"],["tortilini","tortellini"],["tortise","tortoise"],["torward","toward"],["torwards","towards"],["totaly","totally"],["totat","total"],["totation","rotation"],["totats","totals"],["tothe","to the"],["tothiba","toshiba"],["totol","total"],["totorial","tutorial"],["totorials","tutorials"],["touble","trouble"],["toubles","troubles"],["toubling","troubling"],["toughtful","thoughtful"],["toughtly","tightly"],["toughts","thoughts"],["tounge","tongue"],["touple","tuple"],["towords","towards"],["towrad","toward"],["toxen","toxin"],["tpye","type"],["tpyed","typed"],["tpyes","types"],["tpyo","typo"],["trabsform","transform"],["traceablity","traceability"],["trackign","tracking"],["trackling","tracking"],["tracsode","transcode"],["tracsoded","transcoded"],["tracsoder","transcoder"],["tracsoders","transcoders"],["tracsodes","transcodes"],["tracsoding","transcoding"],["traddition","tradition"],["tradditional","traditional"],["tradditions","traditions"],["tradgic","tragic"],["tradionally","traditionally"],["traditilnal","traditional"],["traditiona","traditional"],["traditionaly","traditionally"],["traditionnal","traditional"],["traditionnally","traditionally"],["traditition","tradition"],["tradtional","traditional"],["tradtionally","traditionally"],["trafficed","trafficked"],["trafficing","trafficking"],["trafic","traffic"],["tragectory","trajectory"],["traget","target"],["trageted","targeted"],["trageting","targeting"],["tragets","targets"],["traige","triage"],["traiger","triager"],["traigers","triagers"],["traiges","triages"],["traiging","triaging"],["trailins","trailing"],["traingle","triangle"],["traingles","triangles"],["traingular","triangular"],["traingulate","triangulate"],["traingulated","triangulated"],["traingulates","triangulates"],["traingulating","triangulating"],["traingulation","triangulation"],["traingulations","triangulations"],["trainig","training"],["trainigs","training"],["trainng","training"],["trainngs","training"],["traked","tracked"],["traker","tracker"],["trakers","trackers"],["traking","tracking"],["tramsmit","transmit"],["tramsmits","transmits"],["tramsmitted","transmitted"],["tramsmitting","transmitting"],["tranaction","transaction"],["tranactional","transactional"],["tranactions","transactions"],["tranalating","translating"],["tranalation","translation"],["tranalations","translations"],["tranasction","transaction"],["tranasctions","transactions"],["tranceiver","transceiver"],["tranceivers","transceivers"],["trancendent","transcendent"],["trancending","transcending"],["tranclate","translate"],["trandional","traditional"],["tranfer","transfer"],["tranfered","transferred"],["tranfering","transferring"],["tranferred","transferred"],["tranfers","transfers"],["tranform","transform"],["tranformable","transformable"],["tranformation","transformation"],["tranformations","transformations"],["tranformative","transformative"],["tranformed","transformed"],["tranforming","transforming"],["tranforms","transforms"],["tranient","transient"],["tranients","transients"],["tranistion","transition"],["tranistioned","transitioned"],["tranistioning","transitioning"],["tranistions","transitions"],["tranition","transition"],["tranitioned","transitioned"],["tranitioning","transitioning"],["tranitions","transitions"],["tranlatable","translatable"],["tranlate","translate"],["tranlated","translated"],["tranlates","translates"],["tranlating","translating"],["tranlation","translation"],["tranlations","translations"],["tranlsation","translation"],["tranlsations","translations"],["tranmission","transmission"],["tranmist","transmit"],["tranmitted","transmitted"],["tranmitting","transmitting"],["tranparent","transparent"],["tranparently","transparently"],["tranport","transport"],["tranported","transported"],["tranporting","transporting"],["tranports","transports"],["transacion","transaction"],["transacions","transactions"],["transaciton","transaction"],["transacitons","transactions"],["transacrtion","transaction"],["transacrtions","transactions"],["transaction-spacific","transaction-specific"],["transactoin","transaction"],["transactoins","transactions"],["transalation","translation"],["transalations","translations"],["transalt","translate"],["transalte","translate"],["transalted","translated"],["transaltes","translates"],["transaltion","translation"],["transaltions","translations"],["transaltor","translator"],["transaltors","translators"],["transcendance","transcendence"],["transcendant","transcendent"],["transcendentational","transcendental"],["transcevier","transceiver"],["transciever","transceiver"],["transcievers","transceivers"],["transcocde","transcode"],["transcocded","transcoded"],["transcocder","transcoder"],["transcocders","transcoders"],["transcocdes","transcodes"],["transcocding","transcoding"],["transcocdings","transcodings"],["transconde","transcode"],["transconded","transcoded"],["transconder","transcoder"],["transconders","transcoders"],["transcondes","transcodes"],["transconding","transcoding"],["transcondings","transcodings"],["transcorde","transcode"],["transcorded","transcoded"],["transcorder","transcoder"],["transcorders","transcoders"],["transcordes","transcodes"],["transcording","transcoding"],["transcordings","transcodings"],["transcoser","transcoder"],["transcosers","transcoders"],["transction","transaction"],["transctions","transactions"],["transeint","transient"],["transending","transcending"],["transer","transfer"],["transesxuals","transsexuals"],["transferd","transferred"],["transfered","transferred"],["transfering","transferring"],["transferrd","transferred"],["transfom","transform"],["transfomation","transformation"],["transfomational","transformational"],["transfomations","transformations"],["transfomed","transformed"],["transfomer","transformer"],["transfomm","transform"],["transfoprmation","transformation"],["transforation","transformation"],["transforations","transformations"],["transformated","transformed"],["transformates","transforms"],["transformaton","transformation"],["transformatted","transformed"],["transfrom","transform"],["transfromation","transformation"],["transfromations","transformations"],["transfromed","transformed"],["transfromer","transformer"],["transfroming","transforming"],["transfroms","transforms"],["transiet","transient"],["transiets","transients"],["transision","transition"],["transisioning","transitioning"],["transisions","transitions"],["transisition","transition"],["transisitioned","transitioned"],["transisitioning","transitioning"],["transisitions","transitions"],["transistion","transition"],["transistioning","transitioning"],["transistions","transitions"],["transitionnal","transitional"],["transitionned","transitioned"],["transitionning","transitioning"],["transitionns","transitions"],["transiton","transition"],["transitoning","transitioning"],["transitons","transitions"],["transitor","transistor"],["transitors","transistors"],["translater","translator"],["translaters","translators"],["translatied","translated"],["translatoin","translation"],["translatoins","translations"],["translteration","transliteration"],["transmision","transmission"],["transmisive","transmissive"],["transmissable","transmissible"],["transmissione","transmission"],["transmist","transmit"],["transmited","transmitted"],["transmiter","transmitter"],["transmiters","transmitters"],["transmiting","transmitting"],["transmition","transmission"],["transmitsion","transmission"],["transmittd","transmitted"],["transmittion","transmission"],["transmitts","transmits"],["transmmit","transmit"],["transocde","transcode"],["transocded","transcoded"],["transocder","transcoder"],["transocders","transcoders"],["transocdes","transcodes"],["transocding","transcoding"],["transocdings","transcodings"],["transofrm","transform"],["transofrmation","transformation"],["transofrmations","transformations"],["transofrmed","transformed"],["transofrmer","transformer"],["transofrmers","transformers"],["transofrming","transforming"],["transofrms","transforms"],["transolate","translate"],["transolated","translated"],["transolates","translates"],["transolating","translating"],["transolation","translation"],["transolations","translations"],["transorm","transform"],["transormed","transformed"],["transorming","transforming"],["transorms","transforms"],["transpable","transposable"],["transpacencies","transparencies"],["transpacency","transparency"],["transpaernt","transparent"],["transpaerntly","transparently"],["transpancies","transparencies"],["transpancy","transparency"],["transpant","transplant"],["transparaent","transparent"],["transparaently","transparently"],["transparanceies","transparencies"],["transparancey","transparency"],["transparancies","transparencies"],["transparancy","transparency"],["transparanet","transparent"],["transparanetly","transparently"],["transparanies","transparencies"],["transparant","transparent"],["transparantly","transparently"],["transparany","transparency"],["transpararent","transparent"],["transpararently","transparently"],["transparcencies","transparencies"],["transparcency","transparency"],["transparcenies","transparencies"],["transparceny","transparency"],["transparecy","transparency"],["transpareny","transparency"],["transparities","transparencies"],["transparity","transparency"],["transparnecies","transparencies"],["transparnecy","transparency"],["transparnt","transparent"],["transparntly","transparently"],["transparren","transparent"],["transparrenly","transparently"],["transparrent","transparent"],["transparrently","transparently"],["transpart","transport"],["transparts","transports"],["transpatrent","transparent"],["transpatrently","transparently"],["transpencies","transparencies"],["transpency","transparency"],["transpeorted","transported"],["transperancies","transparencies"],["transperancy","transparency"],["transperant","transparent"],["transperantly","transparently"],["transperencies","transparencies"],["transperency","transparency"],["transperent","transparent"],["transperently","transparently"],["transporation","transportation"],["transportatin","transportation"],["transprencies","transparencies"],["transprency","transparency"],["transprent","transparent"],["transprently","transparently"],["transprot","transport"],["transproted","transported"],["transproting","transporting"],["transprots","transports"],["transprt","transport"],["transprted","transported"],["transprting","transporting"],["transprts","transports"],["transpsition","transposition"],["transsend","transcend"],["transtion","transition"],["transtioned","transitioned"],["transtioning","transitioning"],["transtions","transitions"],["transtition","transition"],["transtitioned","transitioned"],["transtitioning","transitioning"],["transtitions","transitions"],["transtorm","transform"],["transtormed","transformed"],["transvorm","transform"],["transvormation","transformation"],["transvormed","transformed"],["transvorming","transforming"],["transvorms","transforms"],["tranversing","traversing"],["trapeziod","trapezoid"],["trapeziodal","trapezoidal"],["trasaction","transaction"],["trascation","transaction"],["trasfer","transfer"],["trasferred","transferred"],["trasfers","transfers"],["trasform","transform"],["trasformable","transformable"],["trasformation","transformation"],["trasformations","transformations"],["trasformative","transformative"],["trasformed","transformed"],["trasformer","transformer"],["trasformers","transformers"],["trasforming","transforming"],["trasforms","transforms"],["traslalate","translate"],["traslalated","translated"],["traslalating","translating"],["traslalation","translation"],["traslalations","translations"],["traslate","translate"],["traslated","translated"],["traslates","translates"],["traslating","translating"],["traslation","translation"],["traslations","translations"],["traslucency","translucency"],["trasmission","transmission"],["trasmit","transmit"],["trasnaction","transaction"],["trasnfer","transfer"],["trasnfered","transferred"],["trasnferred","transferred"],["trasnfers","transfers"],["trasnform","transform"],["trasnformation","transformation"],["trasnformed","transformed"],["trasnformer","transformer"],["trasnformers","transformers"],["trasnforms","transforms"],["trasnlate","translate"],["trasnlated","translated"],["trasnlation","translation"],["trasnlations","translations"],["trasnparencies","transparencies"],["trasnparency","transparency"],["trasnparent","transparent"],["trasnport","transport"],["trasnports","transports"],["trasnsmit","transmit"],["trasparency","transparency"],["trasparent","transparent"],["trasparently","transparently"],["trasport","transport"],["trasportable","transportable"],["trasported","transported"],["trasporter","transporter"],["trasports","transports"],["traspose","transpose"],["trasposed","transposed"],["trasposing","transposing"],["trasposition","transposition"],["traspositions","transpositions"],["traved","traversed"],["traveersal","traversal"],["traveerse","traverse"],["traveersed","traversed"],["traveerses","traverses"],["traveersing","traversing"],["traveral","traversal"],["travercal","traversal"],["traverce","traverse"],["traverced","traversed"],["traverces","traverses"],["travercing","traversing"],["travere","traverse"],["travered","traversed"],["traveres","traverse"],["traveresal","traversal"],["traveresed","traversed"],["travereses","traverses"],["traveresing","traversing"],["travering","traversing"],["traverssal","traversal"],["travesal","traversal"],["travese","traverse"],["travesed","traversed"],["traveses","traverses"],["travesing","traversing"],["tre","tree"],["treate","treat"],["treatement","treatment"],["treatements","treatments"],["treates","treats"],["tremelo","tremolo"],["tremelos","tremolos"],["trempoline","trampoline"],["treshhold","threshold"],["treshold","threshold"],["tressle","trestle"],["treting","treating"],["trgistration","registration"],["trhe","the"],["triancle","triangle"],["triancles","triangles"],["trianed","trained"],["triange","triangle"],["triangel","triangle"],["triangels","triangles"],["trianglular","triangular"],["trianglutaion","triangulation"],["triangulataion","triangulation"],["triangultaion","triangulation"],["trianing","training"],["trianlge","triangle"],["trianlges","triangles"],["trians","trains"],["trigered","triggered"],["trigerred","triggered"],["trigerring","triggering"],["trigers","triggers"],["trigged","triggered"],["triggerd","triggered"],["triggeres","triggers"],["triggerred","triggered"],["triggerring","triggering"],["triggerrs","triggers"],["triggger","trigger"],["trignometric","trigonometric"],["trignometry","trigonometry"],["triguered","triggered"],["triked","tricked"],["trikery","trickery"],["triky","tricky"],["trilineal","trilinear"],["trimed","trimmed"],["trimmng","trimming"],["trinagle","triangle"],["trinagles","triangles"],["triniy","trinity"],["triology","trilogy"],["tripel","triple"],["tripeld","tripled"],["tripels","triples"],["tripple","triple"],["triuangulate","triangulate"],["trival","trivial"],["trivally","trivially"],["trivias","trivia"],["trivival","trivial"],["trnasfers","transfers"],["trnasmit","transmit"],["trnasmited","transmitted"],["trnasmits","transmits"],["trnsfer","transfer"],["trnsfered","transferred"],["trnsfers","transfers"],["troling","trolling"],["trottle","throttle"],["troubeshoot","troubleshoot"],["troubeshooted","troubleshooted"],["troubeshooter","troubleshooter"],["troubeshooting","troubleshooting"],["troubeshoots","troubleshoots"],["troublehshoot","troubleshoot"],["troublehshooting","troubleshooting"],["troublshoot","troubleshoot"],["troublshooting","troubleshooting"],["trought","through"],["troup","troupe"],["trriger","trigger"],["trrigered","triggered"],["trrigering","triggering"],["trrigers","triggers"],["trrigger","trigger"],["trriggered","triggered"],["trriggering","triggering"],["trriggers","triggers"],["trubble","trouble"],["trubbled","troubled"],["trubbles","troubles"],["truble","trouble"],["trubled","troubled"],["trubles","troubles"],["trubling","troubling"],["trucate","truncate"],["trucated","truncated"],["trucates","truncates"],["trucating","truncating"],["trucnate","truncate"],["trucnated","truncated"],["trucnating","truncating"],["truct","struct"],["truelly","truly"],["truely","truly"],["truied","tried"],["trully","truly"],["trun","turn"],["trunacted","truncated"],["truncat","truncate"],["trunctate","truncate"],["trunctated","truncated"],["trunctating","truncating"],["trunctation","truncation"],["truncted","truncated"],["truned","turned"],["truns","turns"],["trustworthly","trustworthy"],["trustworthyness","trustworthiness"],["trustworty","trustworthy"],["trustwortyness","trustworthiness"],["trustwothy","trustworthy"],["truw","true"],["tryed","tried"],["tryes","tries"],["tryig","trying"],["tryinng","trying"],["trys","tries"],["tryying","trying"],["ttests","tests"],["tthe","the"],["tuesdey","Tuesday"],["tuesdsy","Tuesday"],["tufure","future"],["tuhmbnail","thumbnail"],["tunelled","tunnelled"],["tunelling","tunneling"],["tunned","tuned"],["tunnell","tunnel"],["tuotiral","tutorial"],["tuotirals","tutorials"],["tupel","tuple"],["tupple","tuple"],["tupples","tuples"],["ture","true"],["turle","turtle"],["turly","truly"],["turorial","tutorial"],["turorials","tutorials"],["turtleh","turtle"],["turtlehs","turtles"],["turtorial","tutorial"],["turtorials","tutorials"],["Tuscon","Tucson"],["tusday","Tuesday"],["tuseday","Tuesday"],["tust","trust"],["tution","tuition"],["tutoriel","tutorial"],["tutoriels","tutorials"],["tweleve","twelve"],["twelth","twelfth"],["two-dimenional","two-dimensional"],["two-dimenionsal","two-dimensional"],["twodimenional","two-dimensional"],["twodimenionsal","two-dimensional"],["twon","town"],["twpo","two"],["tyep","type"],["tyhat","that"],["tyies","tries"],["tymecode","timecode"],["tyope","type"],["typcast","typecast"],["typcasting","typecasting"],["typcasts","typecasts"],["typcial","typical"],["typcially","typically"],["typechek","typecheck"],["typecheking","typechecking"],["typesrript","typescript"],["typicallly","typically"],["typicaly","typically"],["typicially","typically"],["typle","tuple"],["typles","tuples"],["typographc","typographic"],["typpe","type"],["typped","typed"],["typpes","types"],["typpical","typical"],["typpically","typically"],["tyranies","tyrannies"],["tyrany","tyranny"],["tyring","trying"],["tyrranies","tyrannies"],["tyrrany","tyranny"],["ubelieveble","unbelievable"],["ubelievebly","unbelievably"],["ubernetes","Kubernetes"],["ubiquitious","ubiquitous"],["ubiquituously","ubiquitously"],["ubitquitous","ubiquitous"],["ublisher","publisher"],["ubunut","Ubuntu"],["ubutu","Ubuntu"],["ubutunu","Ubuntu"],["udpatable","updatable"],["udpate","update"],["udpated","updated"],["udpater","updater"],["udpates","updates"],["udpating","updating"],["ueful","useful"],["uegister","unregister"],["uesd","used"],["ueses","uses"],["uesful","useful"],["uesfull","useful"],["uesfulness","usefulness"],["uesless","useless"],["ueslessness","uselessness"],["uest","quest"],["uests","quests"],["uffer","buffer"],["uffered","buffered"],["uffering","buffering"],["uffers","buffers"],["uggly","ugly"],["ugglyness","ugliness"],["uglyness","ugliness"],["uique","unique"],["uise","use"],["uisng","using"],["uites","suites"],["uknown","unknown"],["uknowns","unknowns"],["Ukranian","Ukrainian"],["uless","unless"],["ulimited","unlimited"],["ulter","alter"],["ulteration","alteration"],["ulterations","alterations"],["ultered","altered"],["ultering","altering"],["ulters","alters"],["ultimatly","ultimately"],["ultimely","ultimately"],["umambiguous","unambiguous"],["umark","unmark"],["umarked","unmarked"],["umbrealla","umbrella"],["uminportant","unimportant"],["umit","unit"],["umless","unless"],["ummark","unmark"],["umoutn","umount"],["un-complete","incomplete"],["unabailable","unavailable"],["unabale","unable"],["unabel","unable"],["unablet","unable"],["unacceptible","unacceptable"],["unaccesible","inaccessible"],["unaccessable","inaccessible"],["unacknowleged","unacknowledged"],["unacompanied","unaccompanied"],["unadvertantly","inadvertently"],["unadvertedly","inadvertently"],["unadvertent","inadvertent"],["unadvertently","inadvertently"],["unahppy","unhappy"],["unalllowed","unallowed"],["unambigious","unambiguous"],["unambigous","unambiguous"],["unambigously","unambiguously"],["unamed","unnamed"],["unanimuous","unanimous"],["unanymous","unanimous"],["unappretiated","unappreciated"],["unappretiative","unappreciative"],["unapprieciated","unappreciated"],["unapprieciative","unappreciative"],["unapretiated","unappreciated"],["unapretiative","unappreciative"],["unaquired","unacquired"],["unarchving","unarchiving"],["unassing","unassign"],["unassinged","unassigned"],["unassinging","unassigning"],["unassings","unassigns"],["unathenticated","unauthenticated"],["unathorised","unauthorised"],["unathorized","unauthorized"],["unatteded","unattended"],["unauthenicated","unauthenticated"],["unauthenticed","unauthenticated"],["unavaiable","unavailable"],["unavaialable","unavailable"],["unavaialbale","unavailable"],["unavaialbe","unavailable"],["unavaialbel","unavailable"],["unavaialbility","unavailability"],["unavaialble","unavailable"],["unavaible","unavailable"],["unavailabel","unavailable"],["unavailiability","unavailability"],["unavailible","unavailable"],["unavaliable","unavailable"],["unavaoidable","unavoidable"],["unavilable","unavailable"],["unballance","unbalance"],["unbeknowst","unbeknownst"],["unbeleifable","unbelievable"],["unbeleivable","unbelievable"],["unbeliefable","unbelievable"],["unbelivable","unbelievable"],["unbeliveable","unbelievable"],["unbeliveably","unbelievably"],["unbelivebly","unbelievably"],["unborned","unborn"],["unbouind","unbound"],["unbouinded","unbounded"],["unboun","unbound"],["unbounad","unbound"],["unbounaded","unbounded"],["unbouned","unbounded"],["unbounnd","unbound"],["unbounnded","unbounded"],["unbouund","unbound"],["unbouunded","unbounded"],["uncahnged","unchanged"],["uncalcualted","uncalculated"],["unce","once"],["uncehck","uncheck"],["uncehcked","unchecked"],["uncerain","uncertain"],["uncerainties","uncertainties"],["uncerainty","uncertainty"],["uncertaincy","uncertainty"],["uncertainities","uncertainties"],["uncertainity","uncertainty"],["uncessarily","unnecessarily"],["uncetain","uncertain"],["uncetainties","uncertainties"],["uncetainty","uncertainty"],["unchache","uncache"],["unchached","uncached"],["unchaged","unchanged"],["unchainged","unchanged"],["unchallengable","unchallengeable"],["unchaned","unchanged"],["unchaneged","unchanged"],["unchangable","unchangeable"],["uncheked","unchecked"],["unchenged","unchanged"],["uncognized","unrecognized"],["uncoment","uncomment"],["uncomented","uncommented"],["uncomenting","uncommenting"],["uncoments","uncomments"],["uncomitted","uncommitted"],["uncommited","uncommitted"],["uncommment","uncomment"],["uncommmented","uncommented"],["uncommmenting","uncommenting"],["uncommments","uncomments"],["uncommmitted","uncommitted"],["uncommmon","uncommon"],["uncommpresed","uncompressed"],["uncommpresion","uncompression"],["uncommpressd","uncompressed"],["uncommpressed","uncompressed"],["uncommpression","uncompression"],["uncommtited","uncommitted"],["uncomon","uncommon"],["uncompetetive","uncompetitive"],["uncompetive","uncompetitive"],["uncomplete","incomplete"],["uncompleteness","incompleteness"],["uncompletness","incompleteness"],["uncompres","uncompress"],["uncompresed","uncompressed"],["uncompreses","uncompresses"],["uncompresing","uncompressing"],["uncompresor","uncompressor"],["uncompresors","uncompressors"],["uncompressible","incompressible"],["uncomprss","uncompress"],["unconcious","unconscious"],["unconciousness","unconsciousness"],["unconcistencies","inconsistencies"],["unconcistency","inconsistency"],["unconcistent","inconsistent"],["uncondisional","unconditional"],["uncondisionaly","unconditionally"],["uncondisionnal","unconditional"],["uncondisionnaly","unconditionally"],["unconditial","unconditional"],["unconditially","unconditionally"],["unconditialy","unconditionally"],["unconditianal","unconditional"],["unconditianally","unconditionally"],["unconditianaly","unconditionally"],["unconditinally","unconditionally"],["unconditinaly","unconditionally"],["unconditionaly","unconditionally"],["unconditionnal","unconditional"],["unconditionnally","unconditionally"],["unconditionnaly","unconditionally"],["uncondtional","unconditional"],["uncondtionally","unconditionally"],["unconfiged","unconfigured"],["unconfortability","discomfort"],["unconsisntency","inconsistency"],["unconsistent","inconsistent"],["uncontitutional","unconstitutional"],["uncontrained","unconstrained"],["uncontrolable","uncontrollable"],["unconvential","unconventional"],["unconventionnal","unconventional"],["uncorectly","incorrectly"],["uncorelated","uncorrelated"],["uncorrect","incorrect"],["uncorrectly","incorrectly"],["uncorrolated","uncorrelated"],["uncoverted","unconverted"],["uncrypted","unencrypted"],["undecideable","undecidable"],["undefied","undefined"],["undefien","undefine"],["undefiend","undefined"],["undefinied","undefined"],["undeflow","underflow"],["undeflows","underflows"],["undefuned","undefined"],["undelying","underlying"],["underfiend","undefined"],["underfined","undefined"],["underfow","underflow"],["underfowed","underflowed"],["underfowing","underflowing"],["underfows","underflows"],["underlayed","underlaid"],["underlaying","underlying"],["underlflow","underflow"],["underlflowed","underflowed"],["underlflowing","underflowing"],["underlflows","underflows"],["underlfow","underflow"],["underlfowed","underflowed"],["underlfowing","underflowing"],["underlfows","underflows"],["underlow","underflow"],["underlowed","underflowed"],["underlowing","underflowing"],["underlows","underflows"],["underlyng","underlying"],["underneeth","underneath"],["underrrun","underrun"],["undersacn","underscan"],["understadn","understand"],["understadnable","understandable"],["understadning","understanding"],["understadns","understands"],["understoon","understood"],["understoud","understood"],["undertand","understand"],["undertandable","understandable"],["undertanded","understood"],["undertanding","understanding"],["undertands","understands"],["undertsand","understand"],["undertsanding","understanding"],["undertsands","understands"],["undertsood","understood"],["undertstand","understand"],["undertstands","understands"],["underun","underrun"],["underuns","underruns"],["underware","underwear"],["underying","underlying"],["underyling","underlying"],["undescore","underscore"],["undescored","underscored"],["undescores","underscores"],["undesireable","undesirable"],["undesitable","undesirable"],["undestand","understand"],["undestood","understood"],["undet","under"],["undetecable","undetectable"],["undetstand","understand"],["undetware","underwear"],["undetwater","underwater"],["undfine","undefine"],["undfined","undefined"],["undfines","undefines"],["undistinghable","indistinguishable"],["undocummented","undocumented"],["undorder","unorder"],["undordered","unordered"],["undoubtely","undoubtedly"],["undreground","underground"],["undupplicated","unduplicated"],["uneccesary","unnecessary"],["uneccessarily","unnecessarily"],["uneccessary","unnecessary"],["unecessarily","unnecessarily"],["unecessary","unnecessary"],["uneforceable","unenforceable"],["uneform","uniform"],["unencrpt","unencrypt"],["unencrpted","unencrypted"],["unenforcable","unenforceable"],["unepected","unexpected"],["unepectedly","unexpectedly"],["unequalities","inequalities"],["unequality","inequality"],["uner","under"],["unesacpe","unescape"],["unesacped","unescaped"],["unessecarry","unnecessary"],["unessecary","unnecessary"],["unevaluted","unevaluated"],["unexcected","unexpected"],["unexcectedly","unexpectedly"],["unexcpected","unexpected"],["unexcpectedly","unexpectedly"],["unexecpted","unexpected"],["unexecptedly","unexpectedly"],["unexected","unexpected"],["unexectedly","unexpectedly"],["unexepcted","unexpected"],["unexepctedly","unexpectedly"],["unexepected","unexpected"],["unexepectedly","unexpectedly"],["unexpacted","unexpected"],["unexpactedly","unexpectedly"],["unexpcted","unexpected"],["unexpctedly","unexpectedly"],["unexpecetd","unexpected"],["unexpecetdly","unexpectedly"],["unexpect","unexpected"],["unexpectd","unexpected"],["unexpectdly","unexpectedly"],["unexpecte","unexpected"],["unexpectely","unexpectedly"],["unexpectend","unexpected"],["unexpectendly","unexpectedly"],["unexpectly","unexpectedly"],["unexpeected","unexpected"],["unexpeectedly","unexpectedly"],["unexpepected","unexpected"],["unexpepectedly","unexpectedly"],["unexpepted","unexpected"],["unexpeptedly","unexpectedly"],["unexpercted","unexpected"],["unexperctedly","unexpectedly"],["unexpested","unexpected"],["unexpestedly","unexpectedly"],["unexpetced","unexpected"],["unexpetcedly","unexpectedly"],["unexpetct","unexpected"],["unexpetcted","unexpected"],["unexpetctedly","unexpectedly"],["unexpetctly","unexpectedly"],["unexpetect","unexpected"],["unexpetected","unexpected"],["unexpetectedly","unexpectedly"],["unexpetectly","unexpectedly"],["unexpeted","unexpected"],["unexpetedly","unexpectedly"],["unexpexcted","unexpected"],["unexpexctedly","unexpectedly"],["unexpexted","unexpected"],["unexpextedly","unexpectedly"],["unexspected","unexpected"],["unexspectedly","unexpectedly"],["unfilp","unflip"],["unfilpped","unflipped"],["unfilpping","unflipping"],["unfilps","unflips"],["unflaged","unflagged"],["unflexible","inflexible"],["unforetunately","unfortunately"],["unforgetable","unforgettable"],["unforgiveable","unforgivable"],["unformated","unformatted"],["unforseen","unforeseen"],["unforttunately","unfortunately"],["unfortuante","unfortunate"],["unfortuantely","unfortunately"],["unfortunaltely","unfortunately"],["unfortunaly","unfortunately"],["unfortunat","unfortunate"],["unfortunatelly","unfortunately"],["unfortunatetly","unfortunately"],["unfortunatley","unfortunately"],["unfortunatly","unfortunately"],["unfortunetly","unfortunately"],["unfortuntaly","unfortunately"],["unforunate","unfortunate"],["unforunately","unfortunately"],["unforutunate","unfortunate"],["unforutunately","unfortunately"],["unfotunately","unfortunately"],["unfourtunately","unfortunately"],["unfourtunetly","unfortunately"],["unfurtunately","unfortunately"],["ungeneralizeable","ungeneralizable"],["ungly","ugly"],["unhandeled","unhandled"],["unhilight","unhighlight"],["unhilighted","unhighlighted"],["unhilights","unhighlights"],["Unicde","Unicode"],["unich","unix"],["unidentifiedly","unidentified"],["unidimensionnal","unidimensional"],["unifform","uniform"],["unifforms","uniforms"],["unifiy","unify"],["uniformely","uniformly"],["unifrom","uniform"],["unifromed","uniformed"],["unifromity","uniformity"],["unifroms","uniforms"],["unigned","unsigned"],["unihabited","uninhabited"],["unilateraly","unilaterally"],["unilatreal","unilateral"],["unilatreally","unilaterally"],["unimpemented","unimplemented"],["unimplemeneted","unimplemented"],["unimplimented","unimplemented"],["uninitailised","uninitialised"],["uninitailized","uninitialized"],["uninitalise","uninitialise"],["uninitalised","uninitialised"],["uninitalises","uninitialises"],["uninitalize","uninitialize"],["uninitalized","uninitialized"],["uninitalizes","uninitializes"],["uniniteresting","uninteresting"],["uninitializaed","uninitialized"],["uninitialse","uninitialise"],["uninitialsed","uninitialised"],["uninitialses","uninitialises"],["uninitialze","uninitialize"],["uninitialzed","uninitialized"],["uninitialzes","uninitializes"],["uninstalable","uninstallable"],["uninstatiated","uninstantiated"],["uninstlal","uninstall"],["uninstlalation","uninstallation"],["uninstlalations","uninstallations"],["uninstlaled","uninstalled"],["uninstlaler","uninstaller"],["uninstlaling","uninstalling"],["uninstlals","uninstalls"],["unint8_t","uint8_t"],["unintelligable","unintelligible"],["unintentially","unintentionally"],["uninteressting","uninteresting"],["uninterpretted","uninterpreted"],["uninterruped","uninterrupted"],["uninterruptable","uninterruptible"],["unintersting","uninteresting"],["uninteruppted","uninterrupted"],["uninterupted","uninterrupted"],["unintesting","uninteresting"],["unintialised","uninitialised"],["unintialized","uninitialized"],["unintiallised","uninitialised"],["unintiallized","uninitialized"],["unintialsied","uninitialised"],["unintialzied","uninitialized"],["unio","union"],["unios","unions"],["uniqe","unique"],["uniqu","unique"],["uniquness","uniqueness"],["unistalled","uninstalled"],["uniterrupted","uninterrupted"],["UnitesStates","UnitedStates"],["unitialize","uninitialize"],["unitialized","uninitialized"],["unitilised","uninitialised"],["unitilising","uninitialising"],["unitilities","utilities"],["unitility","utility"],["unitilized","uninitialized"],["unitilizing","uninitializing"],["unitilties","utilities"],["unitilty","utility"],["unititialized","uninitialized"],["unitl","until"],["unitled","untitled"],["unitss","units"],["univeral","universal"],["univerally","universally"],["univeriality","universality"],["univeristies","universities"],["univeristy","university"],["univerities","universities"],["univerity","university"],["universial","universal"],["universiality","universality"],["universirty","university"],["universtal","universal"],["universtiy","university"],["univesities","universities"],["univesity","university"],["univiersal","universal"],["univrsal","universal"],["unkmown","unknown"],["unknon","unknown"],["unknonw","unknown"],["unknonwn","unknown"],["unknonws","unknowns"],["unknwn","unknown"],["unknwns","unknowns"],["unknwoing","unknowing"],["unknwoingly","unknowingly"],["unknwon","unknown"],["unknwons","unknowns"],["unknwown","unknown"],["unknwowns","unknowns"],["unkonwn","unknown"],["unkonwns","unknowns"],["unkown","unknown"],["unkowns","unknowns"],["unkwown","unknown"],["unlcear","unclear"],["unles","unless"],["unlikey","unlikely"],["unlikley","unlikely"],["unlimeted","unlimited"],["unlimitied","unlimited"],["unlimted","unlimited"],["unline","unlike"],["unloadins","unloading"],["unmached","unmatched"],["unmainted","unmaintained"],["unmaping","unmapping"],["unmappend","unmapped"],["unmarsalling","unmarshalling"],["unmaximice","unmaximize"],["unmistakeably","unmistakably"],["unmodfide","unmodified"],["unmodfided","unmodified"],["unmodfied","unmodified"],["unmodfieid","unmodified"],["unmodfified","unmodified"],["unmodfitied","unmodified"],["unmodifable","unmodifiable"],["unmodifed","unmodified"],["unmoutned","unmounted"],["unnacquired","unacquired"],["unncessary","unnecessary"],["unneccecarily","unnecessarily"],["unneccecary","unnecessary"],["unneccesarily","unnecessarily"],["unneccesary","unnecessary"],["unneccessarily","unnecessarily"],["unneccessary","unnecessary"],["unneceesarily","unnecessarily"],["unnecesarily","unnecessarily"],["unnecesarrily","unnecessarily"],["unnecesarry","unnecessary"],["unnecesary","unnecessary"],["unnecesasry","unnecessary"],["unnecessar","unnecessary"],["unnecessarilly","unnecessarily"],["unnecesserily","unnecessarily"],["unnecessery","unnecessary"],["unnecessiarlly","unnecessarily"],["unnecssary","unnecessary"],["unnedded","unneeded"],["unneded","unneeded"],["unneedingly","unnecessarily"],["unnescessarily","unnecessarily"],["unnescessary","unnecessary"],["unnesesarily","unnecessarily"],["unnessarily","unnecessarily"],["unnessasary","unnecessary"],["unnessecarily","unnecessarily"],["unnessecarry","unnecessary"],["unnessecary","unnecessary"],["unnessesarily","unnecessarily"],["unnessesary","unnecessary"],["unnessessarily","unnecessarily"],["unnessessary","unnecessary"],["unning","running"],["unnnecessary","unnecessary"],["unnown","unknown"],["unnowns","unknowns"],["unnsupported","unsupported"],["unnused","unused"],["unobstrusive","unobtrusive"],["unocde","Unicode"],["unoffical","unofficial"],["unoin","union"],["unompress","uncompress"],["unoperational","nonoperational"],["unorderd","unordered"],["unoredered","unordered"],["unorotated","unrotated"],["unoticeable","unnoticeable"],["unpacke","unpacked"],["unpacket","unpacked"],["unparseable","unparsable"],["unpertubated","unperturbed"],["unperturb","unperturbed"],["unperturbated","unperturbed"],["unperturbe","unperturbed"],["unplease","displease"],["unpleasent","unpleasant"],["unplesant","unpleasant"],["unplesent","unpleasant"],["unprecendented","unprecedented"],["unprecidented","unprecedented"],["unprecise","imprecise"],["unpredicatable","unpredictable"],["unpredicatble","unpredictable"],["unpredictablity","unpredictability"],["unpredictible","unpredictable"],["unpriviledged","unprivileged"],["unpriviliged","unprivileged"],["unprmopted","unprompted"],["unqiue","unique"],["unqoute","unquote"],["unqouted","unquoted"],["unqoutes","unquotes"],["unqouting","unquoting"],["unque","unique"],["unreacahable","unreachable"],["unreacahble","unreachable"],["unreacheable","unreachable"],["unrealeased","unreleased"],["unreasonabily","unreasonably"],["unrechable","unreachable"],["unrecocnized","unrecognized"],["unrecoginized","unrecognized"],["unrecogized","unrecognized"],["unrecognixed","unrecognized"],["unrecongized","unrecognized"],["unreconized","unrecognized"],["unrecovable","unrecoverable"],["unrecovarable","unrecoverable"],["unrecoverd","unrecovered"],["unregester","unregister"],["unregiste","unregister"],["unregisted","unregistered"],["unregisteing","registering"],["unregisterd","unregistered"],["unregistert","unregistered"],["unregistes","unregisters"],["unregisting","unregistering"],["unregistred","unregistered"],["unregistrs","unregisters"],["unregiter","unregister"],["unregiters","unregisters"],["unregnized","unrecognized"],["unregognised","unrecognised"],["unregsiter","unregister"],["unregsitered","unregistered"],["unregsitering","unregistering"],["unregsiters","unregisters"],["unregster","unregister"],["unregstered","unregistered"],["unregstering","unregistering"],["unregsters","unregisters"],["unreigister","unregister"],["unreigster","unregister"],["unreigstered","unregistered"],["unreigstering","unregistering"],["unreigsters","unregisters"],["unrelatd","unrelated"],["unreleated","unrelated"],["unrelted","unrelated"],["unrelyable","unreliable"],["unrelying","underlying"],["unrepentent","unrepentant"],["unrepetant","unrepentant"],["unrepetent","unrepentant"],["unreplacable","unreplaceable"],["unreplacalbe","unreplaceable"],["unreproducable","unreproducible"],["unresgister","unregister"],["unresgisterd","unregistered"],["unresgistered","unregistered"],["unresgisters","unregisters"],["unresolvabvle","unresolvable"],["unresonable","unreasonable"],["unresposive","unresponsive"],["unrestrcited","unrestricted"],["unrgesiter","unregister"],["unroated","unrotated"],["unrosponsive","unresponsive"],["unsanfe","unsafe"],["unsccessful","unsuccessful"],["unscubscribe","subscribe"],["unscubscribed","subscribed"],["unsearcahble","unsearchable"],["unselct","unselect"],["unselcted","unselected"],["unselctes","unselects"],["unselcting","unselecting"],["unselcts","unselects"],["unselecgt","unselect"],["unselecgted","unselected"],["unselecgtes","unselects"],["unselecgting","unselecting"],["unselecgts","unselects"],["unselectabe","unselectable"],["unsepcified","unspecified"],["unseting","unsetting"],["unsetset","unset"],["unsettin","unsetting"],["unsharable","unshareable"],["unshfit","unshift"],["unshfited","unshifted"],["unshfiting","unshifting"],["unshfits","unshifts"],["unsiged","unsigned"],["unsigend","unsigned"],["unsignd","unsigned"],["unsignificant","insignificant"],["unsinged","unsigned"],["unsoclicited","unsolicited"],["unsolicitied","unsolicited"],["unsolicted","unsolicited"],["unsollicited","unsolicited"],["unspecificed","unspecified"],["unspecifiec","unspecific"],["unspecifiecd","unspecified"],["unspecifieced","unspecified"],["unspefcifieid","unspecified"],["unspefeid","unspecified"],["unspeficed","unspecified"],["unspeficeid","unspecified"],["unspeficialleid","unspecified"],["unspeficiallied","unspecified"],["unspeficiallifed","unspecified"],["unspeficied","unspecified"],["unspeficieid","unspecified"],["unspeficifed","unspecified"],["unspeficifeid","unspecified"],["unspeficified","unspecified"],["unspeficififed","unspecified"],["unspeficiied","unspecified"],["unspeficiifed","unspecified"],["unspeficilleid","unspecified"],["unspeficillied","unspecified"],["unspeficillifed","unspecified"],["unspeficiteid","unspecified"],["unspeficitied","unspecified"],["unspeficitifed","unspecified"],["unspefied","unspecified"],["unspefifed","unspecified"],["unspefifeid","unspecified"],["unspefified","unspecified"],["unspefififed","unspecified"],["unspefiied","unspecified"],["unspefiifeid","unspecified"],["unspefiified","unspecified"],["unspefiififed","unspecified"],["unspefixeid","unspecified"],["unspefixied","unspecified"],["unspefixifed","unspecified"],["unspported","unsupported"],["unstabel","unstable"],["unstalbe","unstable"],["unsuable","unusable"],["unsual","unusual"],["unsubscibe","unsubscribe"],["unsubscibed","unsubscribed"],["unsubscibing","unsubscribing"],["unsubscirbe","unsubscribe"],["unsubscirbed","unsubscribed"],["unsubscirbing","unsubscribing"],["unsubscirption","unsubscription"],["unsubscirptions","unsubscriptions"],["unsubscritpion","unsubscription"],["unsubscritpions","unsubscriptions"],["unsubscritpiton","unsubscription"],["unsubscritpitons","unsubscriptions"],["unsubscritption","unsubscription"],["unsubscritptions","unsubscriptions"],["unsubstanciated","unsubstantiated"],["unsucccessful","unsuccessful"],["unsucccessfully","unsuccessfully"],["unsucccessul","unsuccessful"],["unsucccessully","unsuccessfully"],["unsuccee","unsuccessful"],["unsucceed","unsuccessful"],["unsucceedde","unsuccessful"],["unsucceeded","unsuccessful"],["unsucceeds","unsuccessful"],["unsucceeed","unsuccessful"],["unsuccees","unsuccessful"],["unsuccesful","unsuccessful"],["unsuccesfull","unsuccessful"],["unsuccesfully","unsuccessfully"],["unsuccess","unsuccessful"],["unsuccessfull","unsuccessful"],["unsuccessfullly","unsuccessfully"],["unsucesful","unsuccessful"],["unsucesfull","unsuccessful"],["unsucesfully","unsuccessfully"],["unsucesfuly","unsuccessfully"],["unsucessefully","unsuccessfully"],["unsucessflly","unsuccessfully"],["unsucessfually","unsuccessfully"],["unsucessful","unsuccessful"],["unsucessfull","unsuccessful"],["unsucessfully","unsuccessfully"],["unsucessfuly","unsuccessfully"],["unsucesssful","unsuccessful"],["unsucesssfull","unsuccessful"],["unsucesssfully","unsuccessfully"],["unsucesssfuly","unsuccessfully"],["unsucessufll","unsuccessful"],["unsucessuflly","unsuccessfully"],["unsucessully","unsuccessfully"],["unsued","unused"],["unsufficient","insufficient"],["unsuportable","unsupportable"],["unsuported","unsupported"],["unsupport","unsupported"],["unsupproted","unsupported"],["unsupress","unsuppress"],["unsupressed","unsuppressed"],["unsupresses","unsuppresses"],["unsuprised","unsurprised"],["unsuprising","unsurprising"],["unsuprisingly","unsurprisingly"],["unsuprized","unsurprised"],["unsuprizing","unsurprising"],["unsuprizingly","unsurprisingly"],["unsurprized","unsurprised"],["unsurprizing","unsurprising"],["unsurprizingly","unsurprisingly"],["unsused","unused"],["unswithced","unswitched"],["unsychronise","unsynchronise"],["unsychronised","unsynchronised"],["unsychronize","unsynchronize"],["unsychronized","unsynchronized"],["untargetted","untargeted"],["unter","under"],["untill","until"],["untintuitive","unintuitive"],["untoched","untouched"],["untqueue","unqueue"],["untrached","untracked"],["untranslateable","untranslatable"],["untrasformed","untransformed"],["untrasposed","untransposed"],["untrustworty","untrustworthy"],["unued","unused"],["ununsed","unused"],["ununsual","unusual"],["unusal","unusual"],["unusally","unusually"],["unuseable","unusable"],["unuseful","useless"],["unusre","unsure"],["unusuable","unusable"],["unusued","unused"],["unvailable","unavailable"],["unvalid","invalid"],["unvalidate","invalidate"],["unverfified","unverified"],["unversionned","unversioned"],["unversoned","unversioned"],["unviersity","university"],["unwarrented","unwarranted"],["unweildly","unwieldy"],["unwieldly","unwieldy"],["unwraped","unwrapped"],["unwrritten","unwritten"],["unx","unix"],["unxepected","unexpected"],["unxepectedly","unexpectedly"],["unxpected","unexpected"],["unziped","unzipped"],["upadate","update"],["upadated","updated"],["upadater","updater"],["upadates","updates"],["upadating","updating"],["upadte","update"],["upadted","updated"],["upadter","updater"],["upadters","updaters"],["upadtes","updates"],["upagrade","upgrade"],["upagraded","upgraded"],["upagrades","upgrades"],["upagrading","upgrading"],["upate","update"],["upated","updated"],["upater","updater"],["upates","updates"],["upating","updating"],["upcomming","upcoming"],["updaing","updating"],["updat","update"],["updateded","updated"],["updateed","updated"],["updatees","updates"],["updateing","updating"],["updatess","updates"],["updatig","updating"],["updats","updates"],["updgrade","upgrade"],["updgraded","upgraded"],["updgrades","upgrades"],["updgrading","upgrading"],["updrage","upgrade"],["updraged","upgraded"],["updrages","upgrades"],["updraging","upgrading"],["updte","update"],["upercase","uppercase"],["uperclass","upperclass"],["upgade","upgrade"],["upgaded","upgraded"],["upgades","upgrades"],["upgading","upgrading"],["upgarade","upgrade"],["upgaraded","upgraded"],["upgarades","upgrades"],["upgarading","upgrading"],["upgarde","upgrade"],["upgarded","upgraded"],["upgardes","upgrades"],["upgarding","upgrading"],["upgarte","upgrade"],["upgarted","upgraded"],["upgartes","upgrades"],["upgarting","upgrading"],["upgerade","upgrade"],["upgeraded","upgraded"],["upgerades","upgrades"],["upgerading","upgrading"],["upgradablilty","upgradability"],["upgradde","upgrade"],["upgradded","upgraded"],["upgraddes","upgrades"],["upgradding","upgrading"],["upgradei","upgrade"],["upgradingn","upgrading"],["upgrate","upgrade"],["upgrated","upgraded"],["upgrates","upgrades"],["upgrating","upgrading"],["upholstry","upholstery"],["uplad","upload"],["upladaded","uploaded"],["upladed","uploaded"],["uplader","uploader"],["upladers","uploaders"],["uplading","uploading"],["uplads","uploads"],["uplaod","upload"],["uplaodaded","uploaded"],["uplaoded","uploaded"],["uplaoder","uploader"],["uplaoders","uploaders"],["uplaodes","uploads"],["uplaoding","uploading"],["uplaods","uploads"],["upliad","upload"],["uplod","upload"],["uplodaded","uploaded"],["uploded","uploaded"],["uploder","uploader"],["uploders","uploaders"],["uploding","uploading"],["uplods","uploads"],["uppler","upper"],["uppon","upon"],["upported","supported"],["upporterd","supported"],["uppper","upper"],["uppstream","upstream"],["uppstreamed","upstreamed"],["uppstreamer","upstreamer"],["uppstreaming","upstreaming"],["uppstreams","upstreams"],["uppwards","upwards"],["uprade","upgrade"],["upraded","upgraded"],["uprades","upgrades"],["uprading","upgrading"],["uprgade","upgrade"],["uprgaded","upgraded"],["uprgades","upgrades"],["uprgading","upgrading"],["upsream","upstream"],["upsreamed","upstreamed"],["upsreamer","upstreamer"],["upsreaming","upstreaming"],["upsreams","upstreams"],["upsrteam","upstream"],["upsrteamed","upstreamed"],["upsrteamer","upstreamer"],["upsrteaming","upstreaming"],["upsrteams","upstreams"],["upsteam","upstream"],["upsteamed","upstreamed"],["upsteamer","upstreamer"],["upsteaming","upstreaming"],["upsteams","upstreams"],["upsteram","upstream"],["upsteramed","upstreamed"],["upsteramer","upstreamer"],["upsteraming","upstreaming"],["upsterams","upstreams"],["upstread","upstream"],["upstreamedd","upstreamed"],["upstreammed","upstreamed"],["upstreammer","upstreamer"],["upstreamming","upstreaming"],["upstreem","upstream"],["upstreemed","upstreamed"],["upstreemer","upstreamer"],["upstreeming","upstreaming"],["upstreems","upstreams"],["upstrema","upstream"],["upsupported","unsupported"],["uptadeable","updatable"],["uptdate","update"],["uptim","uptime"],["uptions","options"],["uptodate","up-to-date"],["uptodateness","up-to-dateness"],["uptream","upstream"],["uptreamed","upstreamed"],["uptreamer","upstreamer"],["uptreaming","upstreaming"],["uptreams","upstreams"],["uqest","quest"],["uqests","quests"],["urrlib","urllib"],["usag","usage"],["usal","usual"],["usally","usually"],["uscaled","unscaled"],["useability","usability"],["useable","usable"],["useage","usage"],["usebility","usability"],["useble","usable"],["useed","used"],["usees","uses"],["usefl","useful"],["usefule","useful"],["usefulfor","useful for"],["usefull","useful"],["usefullness","usefulness"],["usefult","useful"],["usefuly","usefully"],["usefutl","useful"],["usege","usage"],["useing","using"],["user-defiend","user-defined"],["user-defiened","user-defined"],["usera","users"],["userame","username"],["userames","usernames"],["userapace","userspace"],["userful","useful"],["userpace","userspace"],["userpsace","userspace"],["usersapce","userspace"],["userspase","userspace"],["usesfull","useful"],["usespace","userspace"],["usetnet","Usenet"],["usibility","usability"],["usible","usable"],["usig","using"],["usigned","unsigned"],["usiing","using"],["usin","using"],["usind","using"],["usinging","using"],["usinng","using"],["usng","using"],["usnig","using"],["usptart","upstart"],["usptarts","upstarts"],["usseful","useful"],["ussual","usual"],["ussuall","usual"],["ussually","usually"],["usuable","usable"],["usuage","usage"],["usuallly","usually"],["usualy","usually"],["usualyl","usually"],["usue","use"],["usued","used"],["usueful","useful"],["usuer","user"],["usuing","using"],["usupported","unsupported"],["ususal","usual"],["ususally","usually"],["UTF8ness","UTF-8-ness"],["utiilties","utilities"],["utilies","utilities"],["utililties","utilities"],["utilis","utilise"],["utilisa","utilise"],["utilisaton","utilisation"],["utilites","utilities"],["utilitisation","utilisation"],["utilitise","utilise"],["utilitises","utilises"],["utilitising","utilising"],["utilitiy","utility"],["utilitization","utilization"],["utilitize","utilize"],["utilitizes","utilizes"],["utilitizing","utilizing"],["utiliz","utilize"],["utiliza","utilize"],["utilizaton","utilization"],["utillities","utilities"],["utilties","utilities"],["utiltities","utilities"],["utiltity","utility"],["utilty","utility"],["utitity","utility"],["utitlities","utilities"],["utitlity","utility"],["utitlty","utility"],["utlities","utilities"],["utlity","utility"],["utput","output"],["utputs","outputs"],["uupload","upload"],["uupper","upper"],["vaalues","values"],["vaccum","vacuum"],["vaccume","vacuum"],["vaccuum","vacuum"],["vacinity","vicinity"],["vactor","vector"],["vactors","vectors"],["vacumme","vacuum"],["vacuosly","vacuously"],["vaelues","values"],["vaguaries","vagaries"],["vaiable","variable"],["vaiables","variables"],["vaiant","variant"],["vaiants","variants"],["vaidate","validate"],["vaieties","varieties"],["vailable","available"],["vaild","valid"],["vailidity","validity"],["vailidty","validity"],["vairable","variable"],["vairables","variables"],["vairous","various"],["vakue","value"],["vakued","valued"],["vakues","values"],["valailable","available"],["valdate","validate"],["valetta","valletta"],["valeu","value"],["valiator","validator"],["validade","validate"],["validata","validate"],["validataion","validation"],["validaterelase","validaterelease"],["valide","valid"],["valididty","validity"],["validing","validating"],["validte","validate"],["validted","validated"],["validtes","validates"],["validting","validating"],["validtion","validation"],["valied","valid"],["valies","values"],["valif","valid"],["valitdity","validity"],["valkues","values"],["vallgrind","valgrind"],["vallid","valid"],["vallidation","validation"],["vallidity","validity"],["vallue","value"],["vallues","values"],["valsues","values"],["valtage","voltage"],["valtages","voltages"],["valu","value"],["valuble","valuable"],["valudes","values"],["value-to-pack","value to pack"],["valueable","valuable"],["valuess","values"],["valuie","value"],["valulation","valuation"],["valulations","valuations"],["valule","value"],["valuled","valued"],["valules","values"],["valuling","valuing"],["vanishs","vanishes"],["varable","variable"],["varables","variables"],["varaiable","variable"],["varaiables","variables"],["varaiance","variance"],["varaiation","variation"],["varaible","variable"],["varaibles","variables"],["varaint","variant"],["varaints","variants"],["varation","variation"],["varations","variations"],["variabble","variable"],["variabbles","variables"],["variabe","variable"],["variabel","variable"],["variabele","variable"],["variabes","variables"],["variabla","variable"],["variablen","variable"],["varialbe","variable"],["varialbes","variables"],["varialbles","variables"],["varian","variant"],["variantions","variations"],["variatinos","variations"],["variationnal","variational"],["variatoin","variation"],["variatoins","variations"],["variavle","variable"],["variavles","variables"],["varibable","variable"],["varibables","variables"],["varibale","variable"],["varibales","variables"],["varibaless","variables"],["varibel","variable"],["varibels","variables"],["varibility","variability"],["variblae","variable"],["variblaes","variables"],["varible","variable"],["varibles","variables"],["varience","variance"],["varient","variant"],["varients","variants"],["varierty","variety"],["variey","variety"],["varify","verify"],["variing","varying"],["varing","varying"],["varities","varieties"],["varity","variety"],["variuos","various"],["variuous","various"],["varius","various"],["varn","warn"],["varned","warned"],["varning","warning"],["varnings","warnings"],["varns","warns"],["varoius","various"],["varous","various"],["varously","variously"],["varriance","variance"],["varriances","variances"],["vartical","vertical"],["vartically","vertically"],["vas","was"],["vasall","vassal"],["vasalls","vassals"],["vaue","value"],["vaule","value"],["vauled","valued"],["vaules","values"],["vauling","valuing"],["vavle","valve"],["vavlue","value"],["vavriable","variable"],["vavriables","variables"],["vbsrcript","vbscript"],["vebrose","verbose"],["vecotr","vector"],["vecotrs","vectors"],["vectices","vertices"],["vectore","vector"],["vectores","vectors"],["vectorss","vectors"],["vectror","vector"],["vectrors","vectors"],["vecvtor","vector"],["vecvtors","vectors"],["vedio","video"],["vefiry","verify"],["vegatarian","vegetarian"],["vegeterian","vegetarian"],["vegitable","vegetable"],["vegitables","vegetables"],["vegtable","vegetable"],["vehicule","vehicle"],["veify","verify"],["veiw","view"],["veiwed","viewed"],["veiwer","viewer"],["veiwers","viewers"],["veiwing","viewing"],["veiwings","viewings"],["veiws","views"],["vektor","vector"],["vektors","vectors"],["velidate","validate"],["vell","well"],["velociries","velocities"],["velociry","velocity"],["vender","vendor"],["venders","vendors"],["venemous","venomous"],["vengance","vengeance"],["vengence","vengeance"],["verbaitm","verbatim"],["verbatum","verbatim"],["verbous","verbose"],["verbouse","verbose"],["verbously","verbosely"],["verbse","verbose"],["verctor","vector"],["verctors","vectors"],["veresion","version"],["veresions","versions"],["verfication","verification"],["verficiation","verification"],["verfier","verifier"],["verfies","verifies"],["verfifiable","verifiable"],["verfification","verification"],["verfifications","verifications"],["verfified","verified"],["verfifier","verifier"],["verfifiers","verifiers"],["verfifies","verifies"],["verfify","verify"],["verfifying","verifying"],["verfires","verifies"],["verfiy","verify"],["verfiying","verifying"],["verfy","verify"],["verfying","verifying"],["verical","vertical"],["verifcation","verification"],["verifiaction","verification"],["verificaion","verification"],["verificaions","verifications"],["verificiation","verification"],["verificiations","verifications"],["verifieing","verifying"],["verifing","verifying"],["verifiy","verify"],["verifiying","verifying"],["verifty","verify"],["veriftying","verifying"],["verifyied","verified"],["verion","version"],["verions","versions"],["veriosn","version"],["veriosns","versions"],["verious","various"],["verison","version"],["verisoned","versioned"],["verisoner","versioner"],["verisoners","versioners"],["verisoning","versioning"],["verisons","versions"],["veritcal","vertical"],["veritcally","vertically"],["veritical","vertical"],["verly","very"],["vermillion","vermilion"],["verndor","vendor"],["verrical","vertical"],["verry","very"],["vershin","version"],["versin","version"],["versino","version"],["versinos","versions"],["versins","versions"],["versio","version"],["versiob","version"],["versioed","versioned"],["versioing","versioning"],["versiom","version"],["versionaddded","versionadded"],["versionm","version"],["versionms","versions"],["versionned","versioned"],["versionning","versioning"],["versios","versions"],["versitilaty","versatility"],["versitile","versatile"],["versitlity","versatility"],["versoin","version"],["versoion","version"],["versoions","versions"],["verson","version"],["versoned","versioned"],["versons","versions"],["vertextes","vertices"],["vertexts","vertices"],["vertial","vertical"],["verticall","vertical"],["verticaly","vertically"],["verticies","vertices"],["verticla","vertical"],["verticlealign","verticalalign"],["vertiece","vertex"],["vertieces","vertices"],["vertifiable","verifiable"],["vertification","verification"],["vertifications","verifications"],["vertify","verify"],["vertikal","vertical"],["vertix","vertex"],["vertixes","vertices"],["vertixs","vertices"],["vertx","vertex"],["veryfieng","verifying"],["veryfy","verify"],["veryified","verified"],["veryifies","verifies"],["veryify","verify"],["veryifying","verifying"],["vesion","version"],["vesions","versions"],["vetex","vertex"],["vetexes","vertices"],["vetod","vetoed"],["vetween","between"],["vew","view"],["veyr","very"],["vhild","child"],["viatnamese","Vietnamese"],["vice-fersa","vice-versa"],["vice-wersa","vice-versa"],["vicefersa","vice-versa"],["viceversa","vice-versa"],["vicewersa","vice-versa"],["videostreamming","videostreaming"],["viee","view"],["viees","views"],["vieport","viewport"],["vieports","viewports"],["vietnamesea","Vietnamese"],["viewtransfromation","viewtransformation"],["vigilence","vigilance"],["vigourous","vigorous"],["vill","will"],["villian","villain"],["villification","vilification"],["villify","vilify"],["vincinity","vicinity"],["vinrator","vibrator"],["vioalte","violate"],["vioaltion","violation"],["violentce","violence"],["violoated","violated"],["violoating","violating"],["violoation","violation"],["violoations","violations"],["virtal","virtual"],["virtaul","virtual"],["virtical","vertical"],["virtiual","virtual"],["virttual","virtual"],["virttually","virtually"],["virtualisaion","virtualisation"],["virtualisaiton","virtualisation"],["virtualizaion","virtualization"],["virtualizaiton","virtualization"],["virtualiziation","virtualization"],["virtualy","virtually"],["virtualzation","virtualization"],["virtuell","virtual"],["virtural","virtual"],["virture","virtue"],["virutal","virtual"],["virutalenv","virtualenv"],["virutalisation","virtualisation"],["virutalise","virtualise"],["virutalised","virtualised"],["virutalization","virtualization"],["virutalize","virtualize"],["virutalized","virtualized"],["virutally","virtually"],["virutals","virtuals"],["virutual","virtual"],["visability","visibility"],["visable","visible"],["visably","visibly"],["visbility","visibility"],["visble","visible"],["visblie","visible"],["visbly","visibly"],["visiable","visible"],["visiably","visibly"],["visibale","visible"],["visibibilty","visibility"],["visibile","visible"],["visibililty","visibility"],["visibilit","visibility"],["visibilty","visibility"],["visibl","visible"],["visibleable","visible"],["visibles","visible"],["visiblities","visibilities"],["visiblity","visibility"],["visiblle","visible"],["visinble","visible"],["visious","vicious"],["visisble","visible"],["visiter","visitor"],["visiters","visitors"],["visitng","visiting"],["visivble","visible"],["vissible","visible"],["visted","visited"],["visting","visiting"],["vistors","visitors"],["visuab","visual"],["visuabisation","visualisation"],["visuabise","visualise"],["visuabised","visualised"],["visuabises","visualises"],["visuabization","visualization"],["visuabize","visualize"],["visuabized","visualized"],["visuabizes","visualizes"],["visuables","visuals"],["visuably","visually"],["visuabs","visuals"],["visuaisation","visualisation"],["visuaise","visualise"],["visuaised","visualised"],["visuaises","visualises"],["visuaization","visualization"],["visuaize","visualize"],["visuaized","visualized"],["visuaizes","visualizes"],["visuale","visual"],["visuales","visuals"],["visualizaion","visualization"],["visualizaiton","visualization"],["visualizaitons","visualizations"],["visualizaton","visualization"],["visualizatons","visualizations"],["visuallisation","visualisation"],["visuallization","visualization"],["visualy","visually"],["visualzation","visualization"],["vitories","victories"],["vitrual","virtual"],["vitrually","virtually"],["vitual","virtual"],["viusally","visually"],["viusualisation","visualisation"],["viwe","view"],["viwed","viewed"],["viweed","viewed"],["viwer","viewer"],["viwers","viewers"],["viwes","views"],["vizualisation","visualisation"],["vizualise","visualise"],["vizualised","visualised"],["vizualize","visualize"],["vizualized","visualized"],["vlarge","large"],["vlaue","value"],["vlaues","values"],["vlone","clone"],["vloned","cloned"],["vlones","clones"],["vlues","values"],["voif","void"],["volatage","voltage"],["volatages","voltages"],["volatge","voltage"],["volatges","voltages"],["volcanoe","volcano"],["volenteer","volunteer"],["volenteered","volunteered"],["volenteers","volunteers"],["voleyball","volleyball"],["volontary","voluntary"],["volonteer","volunteer"],["volonteered","volunteered"],["volonteering","volunteering"],["volonteers","volunteers"],["volounteer","volunteer"],["volounteered","volunteered"],["volounteering","volunteering"],["volounteers","volunteers"],["volumn","volume"],["volumne","volume"],["volums","volume"],["volxel","voxel"],["volxels","voxels"],["vonfig","config"],["vould","would"],["vreity","variety"],["vresion","version"],["vrey","very"],["vriable","variable"],["vriables","variables"],["vriety","variety"],["vrifier","verifier"],["vrifies","verifies"],["vrify","verify"],["vrilog","Verilog"],["vritual","virtual"],["vritualenv","virtualenv"],["vritualisation","virtualisation"],["vritualise","virtualise"],["vritualization","virtualization"],["vritualize","virtualize"],["vrituoso","virtuoso"],["vrsion","version"],["vrsions","versions"],["Vulacn","Vulcan"],["Vulakn","Vulkan"],["vulbearable","vulnerable"],["vulbearabule","vulnerable"],["vulbearbilities","vulnerabilities"],["vulbearbility","vulnerability"],["vulbearbuilities","vulnerabilities"],["vulbearbuility","vulnerability"],["vulberabilility","vulnerability"],["vulberabilites","vulnerabilities"],["vulberabiliti","vulnerability"],["vulberabilitie","vulnerability"],["vulberabilitis","vulnerabilities"],["vulberabilitiy","vulnerability"],["vulberabillities","vulnerabilities"],["vulberabillity","vulnerability"],["vulberabilties","vulnerabilities"],["vulberabilty","vulnerability"],["vulberablility","vulnerability"],["vulberabuilility","vulnerability"],["vulberabuilites","vulnerabilities"],["vulberabuiliti","vulnerability"],["vulberabuilitie","vulnerability"],["vulberabuilities","vulnerabilities"],["vulberabuilitis","vulnerabilities"],["vulberabuilitiy","vulnerability"],["vulberabuility","vulnerability"],["vulberabuillities","vulnerabilities"],["vulberabuillity","vulnerability"],["vulberabuilties","vulnerabilities"],["vulberabuilty","vulnerability"],["vulberabule","vulnerable"],["vulberabulility","vulnerability"],["vulberbilities","vulnerabilities"],["vulberbility","vulnerability"],["vulberbuilities","vulnerabilities"],["vulberbuility","vulnerability"],["vulerabilities","vulnerabilities"],["vulerability","vulnerability"],["vulerable","vulnerable"],["vulerabuilities","vulnerabilities"],["vulerabuility","vulnerability"],["vulerabule","vulnerable"],["vulernabilities","vulnerabilities"],["vulernability","vulnerability"],["vulernable","vulnerable"],["vulnarabilities","vulnerabilities"],["vulnarability","vulnerability"],["vulneabilities","vulnerabilities"],["vulneability","vulnerability"],["vulneable","vulnerable"],["vulnearabilities","vulnerabilities"],["vulnearability","vulnerability"],["vulnearable","vulnerable"],["vulnearabule","vulnerable"],["vulnearbilities","vulnerabilities"],["vulnearbility","vulnerability"],["vulnearbuilities","vulnerabilities"],["vulnearbuility","vulnerability"],["vulnerabilies","vulnerabilities"],["vulnerabiliies","vulnerabilities"],["vulnerabilility","vulnerability"],["vulnerabilites","vulnerabilities"],["vulnerabiliti","vulnerability"],["vulnerabilitie","vulnerability"],["vulnerabilitis","vulnerabilities"],["vulnerabilitiy","vulnerability"],["vulnerabilitu","vulnerability"],["vulnerabiliy","vulnerability"],["vulnerabillities","vulnerabilities"],["vulnerabillity","vulnerability"],["vulnerabilties","vulnerabilities"],["vulnerabilty","vulnerability"],["vulnerablility","vulnerability"],["vulnerablities","vulnerabilities"],["vulnerablity","vulnerability"],["vulnerabuilility","vulnerability"],["vulnerabuilites","vulnerabilities"],["vulnerabuiliti","vulnerability"],["vulnerabuilitie","vulnerability"],["vulnerabuilities","vulnerabilities"],["vulnerabuilitis","vulnerabilities"],["vulnerabuilitiy","vulnerability"],["vulnerabuility","vulnerability"],["vulnerabuillities","vulnerabilities"],["vulnerabuillity","vulnerability"],["vulnerabuilties","vulnerabilities"],["vulnerabuilty","vulnerability"],["vulnerabule","vulnerable"],["vulnerabulility","vulnerability"],["vulnerarbilities","vulnerabilities"],["vulnerarbility","vulnerability"],["vulnerarble","vulnerable"],["vulnerbilities","vulnerabilities"],["vulnerbility","vulnerability"],["vulnerbuilities","vulnerabilities"],["vulnerbuility","vulnerability"],["vulnreabilities","vulnerabilities"],["vulnreability","vulnerability"],["vunerabilities","vulnerabilities"],["vunerability","vulnerability"],["vunerable","vulnerable"],["vyer","very"],["vyre","very"],["waht","what"],["wainting","waiting"],["waisline","waistline"],["waislines","waistlines"],["waitting","waiting"],["wakup","wakeup"],["wallthickness","wall thickness"],["want;s","wants"],["wantto","want to"],["wappers","wrappers"],["warantee","warranty"],["waranties","warranties"],["waranty","warranty"],["wardobe","wardrobe"],["waring","warning"],["warings","warnings"],["warinigs","warnings"],["warining","warning"],["warinings","warnings"],["warks","works"],["warlking","walking"],["warnibg","warning"],["warnibgs","warnings"],["warnig","warning"],["warnign","warning"],["warnigns","warnings"],["warnigs","warnings"],["warniing","warning"],["warniings","warnings"],["warnin","warning"],["warnind","warning"],["warninds","warnings"],["warninf","warning"],["warninfs","warnings"],["warningss","warnings"],["warninig","warning"],["warninigs","warnings"],["warnining","warning"],["warninings","warnings"],["warninng","warning"],["warninngs","warnings"],["warnins","warnings"],["warninsg","warnings"],["warninsgs","warnings"],["warniong","warning"],["warniongs","warnings"],["warnkng","warning"],["warnkngs","warnings"],["warrent","warrant"],["warrents","warrants"],["warrn","warn"],["warrned","warned"],["warrning","warning"],["warrnings","warnings"],["warrriors","warriors"],["was'nt","wasn't"],["was't","wasn't"],["was;t","wasn't"],["wasn;t","wasn't"],["wasnt'","wasn't"],["wasnt","wasn't"],["wasnt;","wasn't"],["wass","was"],["wastefullness","wastefulness"],["watchdong","watchdog"],["watchog","watchdog"],["watermask","watermark"],["wathc","watch"],["wathdog","watchdog"],["wathever","whatever"],["wating","waiting"],["watn","want"],["wavelengh","wavelength"],["wavelenghs","wavelengths"],["wavelenght","wavelength"],["wavelenghts","wavelengths"],["wavelnes","wavelines"],["wayoint","waypoint"],["wayoints","waypoints"],["wayword","wayward"],["weahter","weather"],["weahters","weathers"],["weaponary","weaponry"],["weas","was"],["webage","webpage"],["webbased","web-based"],["webiste","website"],["wedensday","Wednesday"],["wednesay","Wednesday"],["wednesdaay","Wednesday"],["wednesdey","Wednesday"],["wednessday","Wednesday"],["wednsday","Wednesday"],["wege","wedge"],["wehere","where"],["wehn","when"],["wehther","whether"],["weigth","weight"],["weigthed","weighted"],["weigths","weights"],["weilded","wielded"],["weill","will"],["weired","weird"],["weitght","weight"],["wel","well"],["wendesday","Wednesday"],["wendsay","Wednesday"],["wendsday","Wednesday"],["wensday","Wednesday"],["were'nt","weren't"],["wereabouts","whereabouts"],["wereas","whereas"],["weree","were"],["werent","weren't"],["werever","wherever"],["wew","we"],["whant","want"],["whants","wants"],["whataver","whatever"],["whatepsace","whitespace"],["whatepsaces","whitespaces"],["whathever","whatever"],["whch","which"],["whcich","which"],["whcih","which"],["wheh","when"],["whehter","whether"],["wheigh","weigh"],["whem","when"],["whenevery","whenever"],["whenn","when"],["whenver","whenever"],["wheras","whereas"],["wherease","whereas"],["whereever","wherever"],["wherether","whether"],["whery","where"],["wheteher","whether"],["whetehr","whether"],["wheter","whether"],["whethe","whether"],["whethter","whether"],["whever","wherever"],["whheel","wheel"],["whhen","when"],["whic","which"],["whicg","which"],["which;s","which's"],["whichs","which's"],["whicht","which"],["whih","which"],["whihc","which"],["whihch","which"],["whike","while"],["whilest","whilst"],["whiltelist","whitelist"],["whiltelisted","whitelisted"],["whiltelisting","whitelisting"],["whiltelists","whitelists"],["whilw","while"],["whioch","which"],["whishlist","wishlist"],["whitch","which"],["whitchever","whichever"],["whitepsace","whitespace"],["whitepsaces","whitespaces"],["whith","with"],["whithin","within"],["whithout","without"],["whitre","white"],["whitspace","whitespace"],["whitspaces","whitespace"],["whlch","which"],["whle","while"],["whlie","while"],["whn","when"],["whne","when"],["whoes","whose"],["whoknows","who knows"],["wholey","wholly"],["whoose","whose"],["whould","would"],["whre","where"],["whta","what"],["whther","whether"],["whtihin","within"],["whyth","with"],["whythout","without"],["wiat","wait"],["wice","vice"],["wice-versa","vice-versa"],["wice-wersa","vice-versa"],["wiceversa","vice-versa"],["wicewersa","vice-versa"],["wich","which"],["widder","wider"],["widesread","widespread"],["widgect","widget"],["widged","widget"],["widghet","widget"],["widghets","widgets"],["widgit","widget"],["widgtes","widgets"],["widht","width"],["widhtpoint","widthpoint"],["widhtpoints","widthpoints"],["widthn","width"],["widthout","without"],["wief","wife"],["wieghed","weighed"],["wieght","weight"],["wieghts","weights"],["wieh","view"],["wierd","weird"],["wierdly","weirdly"],["wierdness","weirdness"],["wieth","width"],["wiew","view"],["wigdet","widget"],["wigdets","widgets"],["wih","with"],["wihch","which"],["wihich","which"],["wihite","white"],["wihle","while"],["wihout","without"],["wiht","with"],["wihtin","within"],["wihtout","without"],["wiil","will"],["wikpedia","wikipedia"],["wilcard","wildcard"],["wilcards","wildcards"],["wilh","will"],["wille","will"],["willingless","willingness"],["willk","will"],["willl","will"],["windo","window"],["windoes","windows"],["windoow","window"],["windoows","windows"],["windos","windows"],["windowz","windows"],["windwo","window"],["windwos","windows"],["winn","win"],["winndow","window"],["winndows","windows"],["winodw","window"],["wipoing","wiping"],["wirh","with"],["wirte","write"],["wirter","writer"],["wirters","writers"],["wirtes","writes"],["wirting","writing"],["wirtten","written"],["wirtual","virtual"],["witable","writeable"],["witdh","width"],["witdhs","widths"],["witdth","width"],["witdths","widths"],["witheld","withheld"],["withh","with"],["withih","within"],["withinn","within"],["withion","within"],["witho","with"],["withoit","without"],["withold","withhold"],["witholding","withholding"],["withon","within"],["withoout","without"],["withot","without"],["withotu","without"],["withou","without"],["withoud","without"],["withoug","without"],["withough","without"],["withought","without"],["withouht","without"],["withount","without"],["withourt","without"],["withous","without"],["withouth","without"],["withouyt","without"],["withput","without"],["withrawal","withdrawal"],["witht","with"],["withthe","with the"],["withtin","within"],["withun","within"],["withuout","without"],["witin","within"],["witk","with"],["witn","with"],["witout","without"],["witrh","with"],["witth","with"],["wiull","will"],["wiyh","with"],["wiyhout","without"],["wiyth","with"],["wizzard","wizard"],["wjat","what"],["wll","will"],["wlll","will"],["wnated","wanted"],["wnating","wanting"],["wnats","wants"],["woh","who"],["wohle","whole"],["woill","will"],["woithout","without"],["wokr","work"],["wokring","working"],["wolrd","world"],["wolrdly","worldly"],["wolrdwide","worldwide"],["wolwide","worldwide"],["won;t","won't"],["wonderfull","wonderful"],["wonderig","wondering"],["wont't","won't"],["woraround","workaround"],["worarounds","workarounds"],["worbench","workbench"],["worbenches","workbenches"],["worchester","Worcester"],["wordlwide","worldwide"],["wordpres","wordpress"],["worfklow","workflow"],["worfklows","workflows"],["worflow","workflow"],["worflows","workflows"],["workaorund","workaround"],["workaorunds","workarounds"],["workaound","workaround"],["workaounds","workarounds"],["workaraound","workaround"],["workaraounds","workarounds"],["workarbound","workaround"],["workaroud","workaround"],["workaroudn","workaround"],["workaroudns","workarounds"],["workarouds","workarounds"],["workarould","workaround"],["workaroung","workaround"],["workaroungs","workarounds"],["workarround","workaround"],["workarrounds","workarounds"],["workarund","workaround"],["workarunds","workarounds"],["workbanch","workbench"],["workbanches","workbenches"],["workbanchs","workbenches"],["workbenchs","workbenches"],["workbennch","workbench"],["workbennches","workbenches"],["workbnech","workbench"],["workbneches","workbenches"],["workboos","workbooks"],["workes","works"],["workfow","workflow"],["workfows","workflows"],["workign","working"],["worklfow","workflow"],["worklfows","workflows"],["workpsace","workspace"],["workpsaces","workspaces"],["workround","workaround"],["workrounds","workarounds"],["workspce","workspace"],["workspsace","workspace"],["workspsaces","workspaces"],["workstaion","workstation"],["workstaions","workstations"],["workstaition","workstation"],["workstaitions","workstations"],["workstaiton","workstation"],["workstaitons","workstations"],["workststion","workstation"],["workststions","workstations"],["worl","world"],["world-reknown","world renown"],["world-reknowned","world renowned"],["worload","workload"],["worloads","workloads"],["worls","world"],["wornged","wronged"],["worngs","wrongs"],["worrry","worry"],["worser","worse"],["worstened","worsened"],["worthwile","worthwhile"],["woth","worth"],["wothout","without"],["wotk","work"],["wotked","worked"],["wotking","working"],["wotks","works"],["woud","would"],["woudl","would"],["woudn't","wouldn't"],["would'nt","wouldn't"],["would't","wouldn't"],["wouldent","wouldn't"],["woulden`t","wouldn't"],["wouldn;t","wouldn't"],["wouldnt'","wouldn't"],["wouldnt","wouldn't"],["wouldnt;","wouldn't"],["wounderful","wonderful"],["wouold","would"],["wouuld","would"],["wqs","was"],["wraapp","wrap"],["wraapped","wrapped"],["wraapper","wrapper"],["wraappers","wrappers"],["wraapping","wrapping"],["wraapps","wraps"],["wraning","warning"],["wranings","warnings"],["wrapepd","wrapped"],["wraper","wrapper"],["wrapp","wrap"],["wrappered","wrapped"],["wrappng","wrapping"],["wrapps","wraps"],["wresters","wrestlers"],["wriet","write"],["writebufer","writebuffer"],["writechetque","writecheque"],["writeing","writing"],["writen","written"],["writet","writes"],["writewr","writer"],["writingm","writing"],["writters","writers"],["writting","writing"],["writtten","written"],["wrkload","workload"],["wrkloads","workloads"],["wrod","word"],["wroet","wrote"],["wrog","wrong"],["wrok","work"],["wroked","worked"],["wrokflow","workflow"],["wrokflows","workflows"],["wroking","working"],["wrokload","workload"],["wrokloads","workloads"],["wroks","works"],["wron","wrong"],["wronf","wrong"],["wront","wrong"],["wrtie","write"],["wrting","writing"],["wsee","see"],["wser","user"],["wth","with"],["wtih","with"],["wtyle","style"],["wuold","would"],["wupport","support"],["wuth","with"],["wuthin","within"],["wya","way"],["wyth","with"],["wythout","without"],["xdescribe","describe"],["xdpf","xpdf"],["xenophoby","xenophobia"],["xepect","expect"],["xepected","expected"],["xepectedly","expectedly"],["xepecting","expecting"],["xepects","expects"],["xgetttext","xgettext"],["xinitiazlize","xinitialize"],["xmdoel","xmodel"],["xour","your"],["xwindows","X"],["xyou","you"],["yaching","yachting"],["yaer","year"],["yaerly","yearly"],["yaers","years"],["yatch","yacht"],["yearm","year"],["yeasr","years"],["yeild","yield"],["yeilded","yielded"],["yeilding","yielding"],["yeilds","yields"],["yeld","yield"],["yelded","yielded"],["yelding","yielding"],["yelds","yields"],["yello","yellow"],["yera","year"],["yeras","years"],["yersa","years"],["yhe","the"],["yieldin","yielding"],["ymbols","symbols"],["yoman","yeoman"],["yomen","yeomen"],["yot","yacht"],["yotube","youtube"],["youforic","euphoric"],["youforically","euphorically"],["youlogy","eulogy"],["yourselfes","yourselves"],["youself","yourself"],["youthinasia","euthanasia"],["ypes","types"],["yrea","year"],["ytou","you"],["yuforic","euphoric"],["yuforically","euphorically"],["yugoslac","yugoslav"],["yuo","you"],["yuor","your"],["yur","your"],["zar","czar"],["zars","czars"],["zeebra","zebra"],["zefer","zephyr"],["zefers","zephyrs"],["zellot","zealot"],["zellots","zealots"],["zemporary","temporary"],["zick-zack","zig-zag"],["zimmap","zipmap"],["zimpaps","zipmaps"],["zink","zinc"],["ziped","zipped"],["ziper","zipper"],["ziping","zipping"],["zlot","slot"],["zombe","zombie"],["zomebie","zombie"],["zoocheenei","zucchinis"],["zoocheeni","zucchini"],["zoocheinei","zucchinis"],["zoocheini","zucchini"],["zookeenee","zucchini"],["zookeenees","zucchinis"],["zookeenei","zucchinis"],["zookeeni","zucchini"],["zookeinee","zucchini"],["zookeinees","zucchinis"],["zookeinei","zucchinis"],["zookeini","zucchini"],["zucheenei","zucchinis"],["zucheeni","zucchini"],["zukeenee","zucchini"],["zukeenees","zucchinis"],["zukeenei","zucchinis"],["zukeeni","zucchini"],["zuser","user"],["zylophone","xylophone"],["zylophones","xylophone"],["__attribyte__","__attribute__"],["__cpluspus","__cplusplus"],["__cpusplus","__cplusplus"],["\xE9valuate","evaluate"],["\u0441ontain","contain"],["\u0441ontained","contained"],["\u0441ontainer","container"],["\u0441ontainers","containers"],["\u0441ontaining","containing"],["\u0441ontainor","container"],["\u0441ontainors","containers"],["\u0441ontains","contains"]]);var Qa=class{constructor(){this.ignoreWords=[]}},Pn=class extends b{constructor(){super({nameKey:"rules.auto-correct-common-misspellings.name",descriptionKey:"rules.auto-correct-common-misspellings.description",type:"Content",ruleIgnoreTypes:[f.yaml,f.code,f.inlineCode,f.math,f.inlineMath,f.link,f.wikiLink,f.tag,f.image,f.url]})}get OptionsClass(){return Qa}apply(t,i){return t.replaceAll(fu,n=>this.replaceWordWithCorrectCasing(n,i))}replaceWordWithCorrectCasing(t,i){let n=t.toLowerCase();if(!Ko.has(n)||i.ignoreWords.includes(n))return t;let r=Ko.get(n);return t.charAt(0)==t.charAt(0).toUpperCase()&&(r=r.charAt(0).toUpperCase()+r.substring(1)),r}get exampleBuilders(){return[new y({description:"Auto-correct misspellings in regular text, but not code blocks, math blocks, YAML, or tags",before:p` +`)),s+=u+n[l+1]}),s}var p=Py;var Js=require("obsidian");var sn,Un,$i,ei=class{static getRule(){if(!Ve(ei,sn).has(this.name)){let t=new this,i=new as(t.nameKey,t.descriptionKey,t.settingsKey,t.alias,t.type,t.safeApply.bind(t),t.exampleBuilders.map(n=>n.example),t.optionBuilders.map(n=>n.option),t.hasSpecialExecutionOrder,t.ignoreTypes);Ve(ei,sn).set(this.name,i),Ve(ei,Un).set(t.alias,t)}return Ve(ei,sn).get(this.name)}static applyIfEnabledBase(t,i,n,r){let a=t.getOptions(n);if(a[t.enabledOptionName()]){at(t.alias);let s=Object.assign({},a,r);oi(`${T("logs.run-rule-text")} ${t.getName()}`);try{let o=t.apply(i,s);return ji(t.alias),oi(o),[o,!0]}catch(o){ji(t.alias),ls(o,t.getName())}}else return[i,!1]}static getBuilderByName(t){return Ve(ei,Un).get(t)}static setNoSettingControl(t,i){Ve(ei,$i).has(t)||Ve(ei,$i).set(t,[]),Ve(ei,$i).get(t).push(i)}static hasSettingControl(t,i){return!Ve(ei,$i).has(t)||!Ve(ei,$i).get(t).includes(i)}},ci=ei;sn=new WeakMap,Un=new WeakMap,$i=new WeakMap,Yt(ci,sn,new Map),Yt(ci,Un,new Map),Yt(ci,$i,new Map);var b=class extends ci{constructor(i){super();this.alias=i.nameKey.replace(/rules\.(.*)\.name/,"$1"),this.settingsKey=i.nameKey.replace(/rules\.(.*)\.name/,"$1"),this.nameKey=i.nameKey,this.descriptionKey=i.descriptionKey,this.type=i.type,this.hasSpecialExecutionOrder=i.hasSpecialExecutionOrder??!1,i.ruleIgnoreTypes?this.ignoreTypes=[f.customIgnore,...i.ruleIgnoreTypes]:this.ignoreTypes=[f.customIgnore]}static register(i){let n=i.getRule();Xu(n)}safeApply(i,n){return this.apply(i,this.buildRuleOptions(n))}buildRuleOptions(i){i=i??{};let n=new this.OptionsClass,r=Object.assign(n,i);for(let a of this.optionBuilders)a.setRuleOption(r,i);return r}static applyIfEnabled(i,n,r,a){let s=this.getRule();return r.includes(s.alias)?(oi(s.alias+" "+T("logs.disabled-text")),[i,!1]):ci.applyIfEnabledBase(s,i,n,a)}static getRuleOptions(i){let n=ci.getRule.bind(this)(),r=new this,a=n.getOptions(i);return r.buildRuleOptions(a)}static noSettingControl(){return(i,n)=>{let r=i.constructor.name;ci.setNoSettingControl(r,n)}}},al,y=class{constructor(t){Yt(this,al,void 0);this.example=new ss(t.description,t.before,t.after,t.options)}};al=new WeakMap;var on,Wi=class{constructor(t){Yt(this,on,void 0);this.OptionsClass=t.OptionsClass;let i=t.nameKey.split(".");i.length==1?this.configKey=i[0]:this.configKey=i[i.length-2],this.nameKey=t.nameKey,this.descriptionKey=t.descriptionKey,this.optionsKey=t.optionsKey}get defaultValue(){return new this.OptionsClass()[this.optionsKey]}get option(){return Ve(this,on)||nc(this,on,this.buildOption()),Ve(this,on)}setRuleOption(t,i){let n=i[this.configKey];n!==void 0&&(t[this.optionsKey]=n)}};on=new WeakMap;var U=class extends Wi{buildOption(){return new nn(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},cs=class extends Wi{buildOption(){return new Vn(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},ne=class extends Wi{constructor(i){super(i);this.records=i.records.map(n=>new ns("enums."+n.value,n.description))}buildOption(){return new rs(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue,this.records)}},be=class extends Wi{constructor(i){super(i);this.separator=i.separator??` +`,this.splitter=i.splitter??/\n/}buildOption(){return new is(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue.join(this.separator))}setRuleOption(i,n){if(n[this.configKey]!==void 0){let r=n[this.configKey].split(this.splitter).filter(function(a){return a!=""});i[this.optionsKey]=r}}},We=class extends Wi{buildOption(){return new Vn(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},ds=class extends Wi{buildOption(){return new ts(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}};var sl=new Map([["1nd","1st"],["2rd","2nd"],["2st","2nd"],["3nd","3rd"],["3st","3rd"],["4rd","4th"],["a-diaerers","a-diaereses"],["aaccess","access"],["aaccessibility","accessibility"],["aaccession","accession"],["aack","ack"],["aactual","actual"],["aactually","actually"],["aadd","add"],["aagain","again"],["aaggregation","aggregation"],["aanother","another"],["aapply","apply"],["aaproximate","approximate"],["aaproximated","approximated"],["aaproximately","approximately"],["aaproximates","approximates"],["aaproximating","approximating"],["aare","are"],["aassign","assign"],["aassignment","assignment"],["aassignments","assignments"],["aassociated","associated"],["aassumed","assumed"],["aautomatic","automatic"],["aautomatically","automatically"],["abailable","available"],["abanden","abandon"],["abandonded","abandoned"],["abandone","abandon"],["abandonned","abandoned"],["abandonning","abandoning"],["abbbreviated","abbreviated"],["abberation","aberration"],["abberations","aberrations"],["abberivates","abbreviates"],["abberration","aberration"],["abborted","aborted"],["abborting","aborting"],["abbrevate","abbreviate"],["abbrevation","abbreviation"],["abbrevations","abbreviations"],["abbreviaton","abbreviation"],["abbreviatons","abbreviations"],["abbriviate","abbreviate"],["abbriviation","abbreviation"],["abbriviations","abbreviations"],["aberation","aberration"],["abigious","ambiguous"],["abiguity","ambiguity"],["abilityes","abilities"],["abilties","abilities"],["abilty","ability"],["abiss","abyss"],["abitrarily","arbitrarily"],["abitrary","arbitrary"],["abitrate","arbitrate"],["abitration","arbitration"],["abizmal","abysmal"],["abnoramlly","abnormally"],["abnormalty","abnormally"],["abnormaly","abnormally"],["abnornally","abnormally"],["abnove","above"],["abnrormal","abnormal"],["aboluste","absolute"],["abolustely","absolutely"],["abolute","absolute"],["abondon","abandon"],["abondoned","abandoned"],["abondoning","abandoning"],["abondons","abandons"],["aboout","about"],["aborigene","aborigine"],["abortificant","abortifacient"],["aboslute","absolute"],["aboslutely","absolutely"],["abosulte","absolute"],["abosultely","absolutely"],["abosulute","absolute"],["abosulutely","absolutely"],["abotu","about"],["abount","about"],["aboutit","about it"],["aboutthe","about the"],["abouve","above"],["abov","above"],["aboved","above"],["abovemtioned","abovementioned"],["aboves","above"],["abovmentioned","abovementioned"],["abreviate","abbreviate"],["abreviated","abbreviated"],["abreviates","abbreviates"],["abreviating","abbreviating"],["abreviation","abbreviation"],["abreviations","abbreviations"],["abritrarily","arbitrarily"],["abritrary","arbitrary"],["abriviate","abbreviate"],["absail","abseil"],["absailing","abseiling"],["absance","absence"],["abscence","absence"],["abscound","abscond"],["abselutely","absolutely"],["abselutly","absolutely"],["absense","absence"],["absodefly","absolute"],["absodeflyly","absolutely"],["absolate","absolute"],["absolately","absolutely"],["absolaute","absolute"],["absolautely","absolutely"],["absoleted","obsoleted"],["absoletely","absolutely"],["absoliute","absolute"],["absoliutely","absolutely"],["absoloute","absolute"],["absoloutely","absolutely"],["absolte","absolute"],["absoltely","absolutely"],["absoltue","absolute"],["absoltuely","absolutely"],["absoluate","absolute"],["absoluately","absolutely"],["absolue","absolute"],["absoluely","absolutely"],["absoluet","absolute"],["absoluetly","absolutely"],["absolule","absolute"],["absolulte","absolute"],["absolultely","absolutely"],["absolune","absolute"],["absolunely","absolutely"],["absolure","absolute"],["absolurely","absolutely"],["absolut","absolute"],["absolutelly","absolutely"],["absoluth","absolute"],["absoluthe","absolute"],["absoluthely","absolutely"],["absoluthly","absolutely"],["absolutley","absolutely"],["absolutly","absolutely"],["absolutlye","absolutely"],["absoluute","absolute"],["absoluutely","absolutely"],["absoluve","absolute"],["absoluvely","absolutely"],["absoolute","absolute"],["absoolutely","absolutely"],["absorbant","absorbent"],["absorbsion","absorption"],["absorbtion","absorption"],["absorve","absorb"],["absould","absolute"],["absouldly","absolutely"],["absoule","absolute"],["absoulely","absolutely"],["absouletely","absolutely"],["absoult","absolute"],["absoulte","absolute"],["absoultely","absolutely"],["absoultly","absolutely"],["absoulute","absolute"],["absoulutely","absolutely"],["absout","absolute"],["absoute","absolute"],["absoutely","absolutely"],["absoutly","absolutely"],["abstact","abstract"],["abstacted","abstracted"],["abstacter","abstracter"],["abstacting","abstracting"],["abstaction","abstraction"],["abstactions","abstractions"],["abstactly","abstractly"],["abstactness","abstractness"],["abstactor","abstractor"],["abstacts","abstracts"],["abstanence","abstinence"],["abstrac","abstract"],["abstraced","abstracted"],["abstracer","abstracter"],["abstracing","abstracting"],["abstracion","abstraction"],["abstracions","abstractions"],["abstracly","abstractly"],["abstracness","abstractness"],["abstracor","abstractor"],["abstracs","abstracts"],["abstrat","abstract"],["abstrated","abstracted"],["abstrater","abstracter"],["abstrating","abstracting"],["abstration","abstraction"],["abstrations","abstractions"],["abstratly","abstractly"],["abstratness","abstractness"],["abstrator","abstractor"],["abstrats","abstracts"],["abstrct","abstract"],["abstrcted","abstracted"],["abstrcter","abstracter"],["abstrcting","abstracting"],["abstrction","abstraction"],["abstrctions","abstractions"],["abstrctly","abstractly"],["abstrctness","abstractness"],["abstrctor","abstractor"],["abstrcts","abstracts"],["absulute","absolute"],["absymal","abysmal"],["abtract","abstract"],["abtracted","abstracted"],["abtracter","abstracter"],["abtracting","abstracting"],["abtraction","abstraction"],["abtractions","abstractions"],["abtractly","abstractly"],["abtractness","abstractness"],["abtractor","abstractor"],["abtracts","abstracts"],["abudance","abundance"],["abudances","abundances"],["abundacies","abundances"],["abundancies","abundances"],["abundand","abundant"],["abundence","abundance"],["abundent","abundant"],["abundunt","abundant"],["abutts","abuts"],["abvailable","available"],["abvious","obvious"],["acadamy","academy"],["acadimy","academy"],["acadmic","academic"],["acale","scale"],["acatemy","academy"],["accademic","academic"],["accademy","academy"],["accapt","accept"],["accapted","accepted"],["accapts","accepts"],["acccept","accept"],["acccepted","accepted"],["acccepting","accepting"],["acccepts","accepts"],["accces","access"],["acccess","access"],["acccessd","accessed"],["acccessed","accessed"],["acccesses","accesses"],["acccessibility","accessibility"],["acccessible","accessible"],["acccessing","accessing"],["acccession","accession"],["acccessor","accessor"],["acccessors","accessors"],["acccord","accord"],["acccordance","accordance"],["acccordances","accordances"],["acccorded","accorded"],["acccording","according"],["acccordingly","accordingly"],["acccords","accords"],["acccount","account"],["acccumulate","accumulate"],["acccuracy","accuracy"],["acccurate","accurate"],["acccurately","accurately"],["acccused","accused"],["accecpt","accept"],["accecpted","accepted"],["accees","access"],["acceess","access"],["accelarate","accelerate"],["accelaration","acceleration"],["accelarete","accelerate"],["accelearion","acceleration"],["accelearte","accelerate"],["accelearted","accelerated"],["acceleartes","accelerates"],["acceleartion","acceleration"],["acceleartor","accelerator"],["acceleated","accelerated"],["acceleratoin","acceleration"],["acceleraton","acceleration"],["acceleratrion","acceleration"],["accelerte","accelerate"],["accelertion","acceleration"],["accellerate","accelerate"],["accellerated","accelerated"],["accellerating","accelerating"],["accelleration","acceleration"],["accellerator","accelerator"],["accending","ascending"],["acceot","accept"],["accepatble","acceptable"],["accepect","accept"],["accepected","accepted"],["accepeted","accepted"],["acceppt","accept"],["acceptence","acceptance"],["acceptible","acceptable"],["acceptted","accepted"],["acces","access"],["accesed","accessed"],["acceses","accesses"],["accesibility","accessibility"],["accesible","accessible"],["accesiblity","accessibility"],["accesiibility","accessibility"],["accesiiblity","accessibility"],["accesing","accessing"],["accesnt","accent"],["accesor","accessor"],["accesories","accessories"],["accesors","accessors"],["accesory","accessory"],["accessability","accessibility"],["accessable","accessible"],["accessbile","accessible"],["accessiable","accessible"],["accessibile","accessible"],["accessibiliity","accessibility"],["accessibilitiy","accessibility"],["accessibiltiy","accessibility"],["accessibilty","accessibility"],["accessiblilty","accessibility"],["accessiblity","accessibility"],["accessiibility","accessibility"],["accessiiblity","accessibility"],["accessile","accessible"],["accessintg","accessing"],["accessisble","accessible"],["accessoire","accessory"],["accessort","accessor"],["accesss","access"],["accesssibility","accessibility"],["accesssible","accessible"],["accesssiblity","accessibility"],["accesssiiblity","accessibility"],["accesssing","accessing"],["accesssor","accessor"],["accesssors","accessors"],["accet","accept"],["accetable","acceptable"],["accets","accepts"],["acchiev","achieve"],["acchievable","achievable"],["acchieve","achieve"],["acchieveable","achievable"],["acchieved","achieved"],["acchievement","achievement"],["acchievements","achievements"],["acchiever","achiever"],["acchieves","achieves"],["accidant","accident"],["acciddently","accidentally"],["accidentaly","accidentally"],["accidential","accidental"],["accidentially","accidentally"],["accidentically","accidentally"],["accidentilly","accidentally"],["accidentily","accidentally"],["accidently","accidentally"],["accidentually","accidentally"],["accidetly","accidentally"],["acciedential","accidental"],["acciednetally","accidentally"],["accient","accident"],["acciental","accidental"],["acclerated","accelerated"],["acclerates","accelerates"],["accleration","acceleration"],["acclerometers","accelerometers"],["acclimitization","acclimatization"],["accociate","associate"],["accociated","associated"],["accociates","associates"],["accociating","associating"],["accociation","association"],["accociations","associations"],["accoding","according"],["accodingly","accordingly"],["accodr","accord"],["accodrance","accordance"],["accodred","accorded"],["accodring","according"],["accodringly","accordingly"],["accodrs","accords"],["accointing","accounting"],["accoird","accord"],["accoirding","according"],["accomadate","accommodate"],["accomadated","accommodated"],["accomadates","accommodates"],["accomadating","accommodating"],["accomadation","accommodation"],["accomadations","accommodations"],["accomdate","accommodate"],["accomidate","accommodate"],["accommadate","accommodate"],["accommadates","accommodates"],["accommadating","accommodating"],["accommdated","accommodated"],["accomodata","accommodate"],["accomodate","accommodate"],["accomodated","accommodated"],["accomodates","accommodates"],["accomodating","accommodating"],["accomodation","accommodation"],["accomodations","accommodations"],["accompagned","accompanied"],["accompagnied","accompanied"],["accompagnies","accompanies"],["accompagniment","accompaniment"],["accompagning","accompanying"],["accompagny","accompany"],["accompagnying","accompanying"],["accompained","accompanied"],["accompanyed","accompanied"],["accompt","account"],["acconding","according"],["accont","account"],["accontant","accountant"],["acconted","accounted"],["acconting","accounting"],["accoording","according"],["accoordingly","accordingly"],["accoount","account"],["accopunt","account"],["accordding","according"],["accordeon","accordion"],["accordian","accordion"],["accordign","according"],["accordiingly","accordingly"],["accordinag","according"],["accordind","according"],["accordinly","accordingly"],["accordint","according"],["accordintly","accordingly"],["accordling","according"],["accordlingly","accordingly"],["accordng","according"],["accordngly","accordingly"],["accoriding","according"],["accoridng","according"],["accoridngly","accordingly"],["accoringly","accordingly"],["accorndingly","accordingly"],["accort","accord"],["accortance","accordance"],["accorted","accorded"],["accortind","according"],["accorting","according"],["accound","account"],["accouned","accounted"],["accoustic","acoustic"],["accoustically","acoustically"],["accoustics","acoustics"],["accout","account"],["accouting","accounting"],["accoutn","account"],["accpet","accept"],["accpets","accepts"],["accquainted","acquainted"],["accquire","acquire"],["accquired","acquired"],["accquires","acquires"],["accquiring","acquiring"],["accracy","accuracy"],["accrate","accurate"],["accrding","according"],["accrdingly","accordingly"],["accrediation","accreditation"],["accredidation","accreditation"],["accress","access"],["accroding","according"],["accrodingly","accordingly"],["accronym","acronym"],["accronyms","acronyms"],["accrording","according"],["accros","across"],["accrose","across"],["accross","across"],["accsess","access"],["accss","access"],["accssible","accessible"],["accssor","accessor"],["acctual","actual"],["accuarcy","accuracy"],["accuarte","accurate"],["accuartely","accurately"],["accumalate","accumulate"],["accumalates","accumulates"],["accumalator","accumulator"],["accumalte","accumulate"],["accumalted","accumulated"],["accumilated","accumulated"],["accumlate","accumulate"],["accumlated","accumulated"],["accumlates","accumulates"],["accumlating","accumulating"],["accumlator","accumulator"],["accummulating","accumulating"],["accummulators","accumulators"],["accumualte","accumulate"],["accumualtion","accumulation"],["accupied","occupied"],["accupts","accepts"],["accurable","accurate"],["accuraccies","accuracies"],["accuraccy","accuracy"],["accurancy","accuracy"],["accurarcy","accuracy"],["accuratelly","accurately"],["accuratley","accurately"],["accuratly","accurately"],["accurences","occurrences"],["accurracy","accuracy"],["accurring","occurring"],["accussed","accused"],["acditionally","additionally"],["acecess","access"],["acedemic","academic"],["acelerated","accelerated"],["acend","ascend"],["acendance","ascendance"],["acendancey","ascendancy"],["acended","ascended"],["acendence","ascendance"],["acendencey","ascendancy"],["acendency","ascendancy"],["acender","ascender"],["acending","ascending"],["acent","ascent"],["aceptable","acceptable"],["acerage","acreage"],["acess","access"],["acessable","accessible"],["acessed","accessed"],["acesses","accesses"],["acessible","accessible"],["acessing","accessing"],["acessor","accessor"],["acheive","achieve"],["acheived","achieved"],["acheivement","achievement"],["acheivements","achievements"],["acheives","achieves"],["acheiving","achieving"],["acheivment","achievement"],["acheivments","achievements"],["achievment","achievement"],["achievments","achievements"],["achitecture","architecture"],["achitectures","architectures"],["achivable","achievable"],["achivement","achievement"],["achivements","achievements"],["achor","anchor"],["achored","anchored"],["achoring","anchoring"],["achors","anchors"],["ACI","ACPI"],["acident","accident"],["acidental","accidental"],["acidentally","accidentally"],["acidents","accidents"],["acient","ancient"],["acients","ancients"],["ACII","ASCII"],["acition","action"],["acitions","actions"],["acitivate","activate"],["acitivation","activation"],["acitivity","activity"],["acitvate","activate"],["acitve","active"],["acivate","activate"],["acive","active"],["acknodledgment","acknowledgment"],["acknodledgments","acknowledgments"],["acknoledge","acknowledge"],["acknoledged","acknowledged"],["acknoledges","acknowledges"],["acknoledging","acknowledging"],["acknoledgment","acknowledgment"],["acknoledgments","acknowledgments"],["acknowldeged","acknowledged"],["acknowldegement","acknowledgement"],["acknowldegements","acknowledgements"],["acknowledgeing","acknowledging"],["acknowleding","acknowledging"],["acknowlege","acknowledge"],["acknowleged","acknowledged"],["acknowlegement","acknowledgement"],["acknowlegements","acknowledgements"],["acknowleges","acknowledges"],["acknowleging","acknowledging"],["acknowlegment","acknowledgment"],["ackowledge","acknowledge"],["ackowledged","acknowledged"],["ackowledgement","acknowledgement"],["ackowledgements","acknowledgements"],["ackowledges","acknowledges"],["ackowledging","acknowledging"],["acnowledge","acknowledge"],["acocunt","account"],["acommodate","accommodate"],["acommodated","accommodated"],["acommodates","accommodates"],["acommodating","accommodating"],["acommodation","accommodation"],["acommpany","accompany"],["acommpanying","accompanying"],["acomodate","accommodate"],["acomodated","accommodated"],["acompanies","accompanies"],["acomplish","accomplish"],["acomplished","accomplished"],["acomplishment","accomplishment"],["acomplishments","accomplishments"],["acontiguous","a contiguous"],["acoording","according"],["acoordingly","accordingly"],["acording","according"],["acordingly","accordingly"],["acordinng","according"],["acorss","across"],["acorting","according"],["acount","account"],["acounts","accounts"],["acquaintence","acquaintance"],["acquaintences","acquaintances"],["acquiantence","acquaintance"],["acquiantences","acquaintances"],["acquiesence","acquiescence"],["acquisiton","acquisition"],["acquisitons","acquisitions"],["acquited","acquitted"],["acquition","acquisition"],["acqure","acquire"],["acqured","acquired"],["acqures","acquires"],["acquring","acquiring"],["acqusition","acquisition"],["acqusitions","acquisitions"],["acrage","acreage"],["acroos","across"],["acrosss","across"],["acrue","accrue"],["acrued","accrued"],["acssume","assume"],["acssumed","assumed"],["actal","actual"],["actally","actually"],["actaly","actually"],["actaul","actual"],["actaully","actually"],["actial","actual"],["actially","actually"],["actialy","actually"],["actiavte","activate"],["actiavted","activated"],["actiavtes","activates"],["actiavting","activating"],["actiavtion","activation"],["actiavtions","activations"],["actiavtor","activator"],["actibity","activity"],["acticate","activate"],["actice","active"],["actine","active"],["actiual","actual"],["activ","active"],["activaed","activated"],["activationg","activating"],["actived","activated"],["activeta","activate"],["activete","activate"],["activeted","activated"],["activetes","activates"],["activiate","activate"],["activies","activities"],["activites","activities"],["activitis","activities"],["activitites","activities"],["activitiy","activity"],["activley","actively"],["activly","actively"],["activste","activate"],["activsted","activated"],["activstes","activates"],["activtes","activates"],["activties","activities"],["activtion","activation"],["activty","activity"],["activw","active"],["activy","activity"],["actove","active"],["actuaal","actual"],["actuaally","actually"],["actuak","actual"],["actuakly","actually"],["actuallin","actually"],["actualy","actually"],["actualyl","actually"],["actuell","actual"],["actuion","action"],["actuionable","actionable"],["actul","actual"],["actullay","actually"],["actully","actually"],["actural","actual"],["acturally","actually"],["actusally","actually"],["actve","active"],["actzal","actual"],["acual","actual"],["acually","actually"],["acuired","acquired"],["acuires","acquires"],["acumulate","accumulate"],["acumulated","accumulated"],["acumulates","accumulates"],["acumulating","accumulating"],["acumulation","accumulation"],["acumulative","accumulative"],["acumulator","accumulator"],["acuqire","acquire"],["acuracy","accuracy"],["acurate","accurate"],["acused","accused"],["acustom","accustom"],["acustommed","accustomed"],["acutal","actual"],["acutally","actually"],["acutual","actual"],["adapated","adapted"],["adapater","adapter"],["adapaters","adapters"],["adapative","adaptive"],["adapdive","adaptive"],["adapive","adaptive"],["adaptaion","adaptation"],["adaptare","adapter"],["adapte","adapter"],["adaptee","adapted"],["adaptes","adapters"],["adaptibe","adaptive"],["adaquate","adequate"],["adaquately","adequately"],["adatper","adapter"],["adatpers","adapters"],["adavance","advance"],["adavanced","advanced"],["adbandon","abandon"],["addapt","adapt"],["addaptation","adaptation"],["addaptations","adaptations"],["addapted","adapted"],["addapting","adapting"],["addapts","adapts"],["addd","add"],["addded","added"],["addding","adding"],["adddress","address"],["adddresses","addresses"],["addds","adds"],["addedd","added"],["addeed","added"],["addersses","addresses"],["addert","assert"],["adderted","asserted"],["addess","address"],["addessed","addressed"],["addesses","addresses"],["addessing","addressing"],["addied","added"],["addig","adding"],["addiional","additional"],["addiiton","addition"],["addiitonall","additional"],["addional","additional"],["addionally","additionally"],["addiotion","addition"],["addiotional","additional"],["addiotionally","additionally"],["addiotions","additions"],["additianal","additional"],["additianally","additionally"],["additinal","additional"],["additinally","additionally"],["additioanal","additional"],["additioanally","additionally"],["additioanlly","additionally"],["additiona","additional"],["additionallly","additionally"],["additionals","additional"],["additionaly","additionally"],["additionalyy","additionally"],["additionnal","additional"],["additionnally","additionally"],["additionnaly","additionally"],["additoin","addition"],["additoinal","additional"],["additoinally","additionally"],["additoinaly","additionally"],["additon","addition"],["additonal","additional"],["additonally","additionally"],["additonaly","additionally"],["addjust","adjust"],["addjusted","adjusted"],["addjusting","adjusting"],["addjusts","adjusts"],["addmission","admission"],["addmit","admit"],["addopt","adopt"],["addopted","adopted"],["addpress","address"],["addrass","address"],["addrees","address"],["addreess","address"],["addrerss","address"],["addrerssed","addressed"],["addrersser","addresser"],["addrersses","addresses"],["addrerssing","addressing"],["addrersss","address"],["addrersssed","addressed"],["addrerssser","addresser"],["addrerssses","addresses"],["addrersssing","addressing"],["addres","address"],["addresable","addressable"],["addresed","addressed"],["addreses","addresses"],["addresess","addresses"],["addresing","addressing"],["addressess","addresses"],["addressings","addressing"],["addresss","address"],["addresssed","addressed"],["addressses","addresses"],["addresssing","addressing"],["addrress","address"],["addrss","address"],["addrssed","addressed"],["addrsses","addresses"],["addrssing","addressing"],["addted","added"],["addtion","addition"],["addtional","additional"],["addtionally","additionally"],["addtitional","additional"],["adecuate","adequate"],["aded","added"],["adequit","adequate"],["adevnture","adventure"],["adevntured","adventured"],["adevnturer","adventurer"],["adevnturers","adventurers"],["adevntures","adventures"],["adevnturing","adventuring"],["adhearing","adhering"],["adherance","adherence"],["adiacent","adjacent"],["adiditon","addition"],["adin","admin"],["ading","adding"],["adition","addition"],["aditional","additional"],["aditionally","additionally"],["aditionaly","additionally"],["aditionnal","additional"],["adivsories","advisories"],["adivsoriyes","advisories"],["adivsory","advisory"],["adjacentsy","adjacency"],["adjactend","adjacent"],["adjancent","adjacent"],["adjascent","adjacent"],["adjasence","adjacence"],["adjasencies","adjacencies"],["adjasensy","adjacency"],["adjasent","adjacent"],["adjast","adjust"],["adjcence","adjacence"],["adjcencies","adjacencies"],["adjcent","adjacent"],["adjcentcy","adjacency"],["adjsence","adjacence"],["adjsencies","adjacencies"],["adjsuted","adjusted"],["adjuscent","adjacent"],["adjusment","adjustment"],["adjustement","adjustment"],["adjustements","adjustments"],["adjustificat","justification"],["adjustification","justification"],["adjustmant","adjustment"],["adjustmants","adjustments"],["adjustmenet","adjustment"],["admendment","amendment"],["admi","admin"],["admininistrative","administrative"],["admininistrator","administrator"],["admininistrators","administrators"],["admininstrator","administrator"],["administation","administration"],["administator","administrator"],["administor","administrator"],["administraively","administratively"],["adminitrator","administrator"],["adminssion","admission"],["adminstered","administered"],["adminstrate","administrate"],["adminstration","administration"],["adminstrative","administrative"],["adminstrator","administrator"],["adminstrators","administrators"],["admisible","admissible"],["admissability","admissibility"],["admissable","admissible"],["admited","admitted"],["admitedly","admittedly"],["admn","admin"],["admnistrator","administrator"],["admnistrators","administrators"],["adn","and"],["adobted","adopted"],["adolecent","adolescent"],["adpapted","adapted"],["adpat","adapt"],["adpated","adapted"],["adpater","adapter"],["adpaters","adapters"],["adpats","adapts"],["adpter","adapter"],["adquire","acquire"],["adquired","acquired"],["adquires","acquires"],["adquiring","acquiring"],["adrea","area"],["adrerss","address"],["adrerssed","addressed"],["adrersser","addresser"],["adrersses","addresses"],["adrerssing","addressing"],["adres","address"],["adresable","addressable"],["adresing","addressing"],["adress","address"],["adressable","addressable"],["adresse","address"],["adressed","addressed"],["adresses","addresses"],["adressing","addressing"],["adresss","address"],["adressses","addresses"],["adrress","address"],["adrresses","addresses"],["adtodetect","autodetect"],["adusted","adjusted"],["adustment","adjustment"],["advanatage","advantage"],["advanatages","advantages"],["advanatge","advantage"],["advandced","advanced"],["advane","advance"],["advaned","advanced"],["advantagous","advantageous"],["advanved","advanced"],["adventages","advantages"],["adventrous","adventurous"],["adverised","advertised"],["advertice","advertise"],["adverticed","advertised"],["advertisment","advertisement"],["advertisments","advertisements"],["advertistment","advertisement"],["advertistments","advertisements"],["advertize","advertise"],["advertized","advertised"],["advertizes","advertises"],["advesary","adversary"],["advetise","advertise"],["adviced","advised"],["adviseable","advisable"],["advisoriyes","advisories"],["advizable","advisable"],["adwances","advances"],["aequidistant","equidistant"],["aequivalent","equivalent"],["aeriel","aerial"],["aeriels","aerials"],["aesily","easily"],["aesy","easy"],["aexs","axes"],["afair","affair"],["afaraid","afraid"],["afe","safe"],["afecting","affecting"],["afer","after"],["aferwards","afterwards"],["afetr","after"],["affecfted","affected"],["afficianados","aficionados"],["afficionado","aficionado"],["afficionados","aficionados"],["affilate","affiliate"],["affilates","affiliates"],["affilation","affiliation"],["affilations","affiliations"],["affilliate","affiliate"],["affinitied","affinities"],["affinitiy","affinity"],["affinitze","affinitize"],["affinties","affinities"],["affintiy","affinity"],["affintize","affinitize"],["affinty","affinity"],["affitnity","affinity"],["afforementioned","aforementioned"],["affortable","affordable"],["afforts","affords"],["affraid","afraid"],["afinity","affinity"],["afor","for"],["aforememtioned","aforementioned"],["aforementiond","aforementioned"],["aforementionned","aforementioned"],["aformentioned","aforementioned"],["afterall","after all"],["afterw","after"],["aftrer","after"],["aftzer","after"],["againnst","against"],["againsg","against"],["againt","against"],["againts","against"],["agaisnt","against"],["agaist","against"],["agancies","agencies"],["agancy","agency"],["aganist","against"],["agant","agent"],["aggaravates","aggravates"],["aggegate","aggregate"],["aggessive","aggressive"],["aggessively","aggressively"],["agggregate","aggregate"],["aggragate","aggregate"],["aggragator","aggregator"],["aggrated","aggregated"],["aggreagate","aggregate"],["aggreataon","aggregation"],["aggreate","aggregate"],["aggreated","aggregated"],["aggreation","aggregation"],["aggreations","aggregations"],["aggreed","agreed"],["aggreement","agreement"],["aggregatet","aggregated"],["aggregetor","aggregator"],["aggreggate","aggregate"],["aggregious","egregious"],["aggregrate","aggregate"],["aggregrated","aggregated"],["aggresive","aggressive"],["aggresively","aggressively"],["aggrevate","aggravate"],["aggrgate","aggregate"],["agian","again"],["agianst","against"],["agin","again"],["aginst","against"],["aglorithm","algorithm"],["aglorithms","algorithms"],["agorithm","algorithm"],["agrain","again"],["agravate","aggravate"],["agre","agree"],["agred","agreed"],["agreeement","agreement"],["agreemnet","agreement"],["agreemnets","agreements"],["agreemnt","agreement"],["agregate","aggregate"],["agregated","aggregated"],["agregates","aggregates"],["agregation","aggregation"],["agregator","aggregator"],["agreing","agreeing"],["agrement","agreement"],["agression","aggression"],["agressive","aggressive"],["agressively","aggressively"],["agressiveness","aggressiveness"],["agressivity","aggressivity"],["agressor","aggressor"],["agresssive","aggressive"],["agrgument","argument"],["agrguments","arguments"],["agricultue","agriculture"],["agriculure","agriculture"],["agricuture","agriculture"],["agrieved","aggrieved"],["agrresive","aggressive"],["agrument","argument"],["agruments","arguments"],["agsinst","against"],["agument","argument"],["agumented","augmented"],["aguments","arguments"],["aheared","adhered"],["ahev","have"],["ahlpa","alpha"],["ahlpas","alphas"],["ahppen","happen"],["ahve","have"],["aicraft","aircraft"],["aiffer","differ"],["ailgn","align"],["aiport","airport"],["airator","aerator"],["airbourne","airborne"],["aircaft","aircraft"],["aircrafts'","aircraft's"],["aircrafts","aircraft"],["airfow","airflow"],["airlfow","airflow"],["airloom","heirloom"],["airporta","airports"],["airrcraft","aircraft"],["aisian","Asian"],["aixs","axis"],["aizmuth","azimuth"],["ajacence","adjacence"],["ajacencies","adjacencies"],["ajacency","adjacency"],["ajacent","adjacent"],["ajacentcy","adjacency"],["ajasence","adjacence"],["ajasencies","adjacencies"],["ajative","adjective"],["ajcencies","adjacencies"],["ajsencies","adjacencies"],["ajurnment","adjournment"],["ajust","adjust"],["ajusted","adjusted"],["ajustement","adjustment"],["ajusting","adjusting"],["ajustment","adjustment"],["ajustments","adjustments"],["ake","ache"],["akkumulate","accumulate"],["akkumulated","accumulated"],["akkumulates","accumulates"],["akkumulating","accumulating"],["akkumulation","accumulation"],["akkumulative","accumulative"],["akkumulator","accumulator"],["aknowledge","acknowledge"],["aks","ask"],["aksed","asked"],["aktivate","activate"],["aktivated","activated"],["aktivates","activates"],["aktivating","activating"],["aktivation","activation"],["akumulate","accumulate"],["akumulated","accumulated"],["akumulates","accumulates"],["akumulating","accumulating"],["akumulation","accumulation"],["akumulative","accumulative"],["akumulator","accumulator"],["alaready","already"],["albiet","albeit"],["albumns","albums"],["alcemy","alchemy"],["alchohol","alcohol"],["alchoholic","alcoholic"],["alchol","alcohol"],["alcholic","alcoholic"],["alcohal","alcohol"],["alcoholical","alcoholic"],["aleady","already"],["aleays","always"],["aledge","allege"],["aledged","alleged"],["aledges","alleges"],["alegance","allegiance"],["alege","allege"],["aleged","alleged"],["alegience","allegiance"],["alegorical","allegorical"],["alernate","alternate"],["alernated","alternated"],["alernately","alternately"],["alernates","alternates"],["alers","alerts"],["aleviate","alleviate"],["aleviates","alleviates"],["aleviating","alleviating"],["alevt","alert"],["algebraical","algebraic"],["algebric","algebraic"],["algebrra","algebra"],["algee","algae"],["alghorithm","algorithm"],["alghoritm","algorithm"],["alghoritmic","algorithmic"],["alghoritmically","algorithmically"],["alghoritms","algorithms"],["algined","aligned"],["alginment","alignment"],["alginments","alignments"],["algohm","algorithm"],["algohmic","algorithmic"],["algohmically","algorithmically"],["algohms","algorithms"],["algoirthm","algorithm"],["algoirthmic","algorithmic"],["algoirthmically","algorithmically"],["algoirthms","algorithms"],["algoithm","algorithm"],["algoithmic","algorithmic"],["algoithmically","algorithmically"],["algoithms","algorithms"],["algolithm","algorithm"],["algolithmic","algorithmic"],["algolithmically","algorithmically"],["algolithms","algorithms"],["algoorithm","algorithm"],["algoorithmic","algorithmic"],["algoorithmically","algorithmically"],["algoorithms","algorithms"],["algoprithm","algorithm"],["algoprithmic","algorithmic"],["algoprithmically","algorithmically"],["algoprithms","algorithms"],["algorgithm","algorithm"],["algorgithmic","algorithmic"],["algorgithmically","algorithmically"],["algorgithms","algorithms"],["algorhithm","algorithm"],["algorhithmic","algorithmic"],["algorhithmically","algorithmically"],["algorhithms","algorithms"],["algorhitm","algorithm"],["algorhitmic","algorithmic"],["algorhitmically","algorithmically"],["algorhitms","algorithms"],["algorhtm","algorithm"],["algorhtmic","algorithmic"],["algorhtmically","algorithmically"],["algorhtms","algorithms"],["algorhythm","algorithm"],["algorhythmic","algorithmic"],["algorhythmically","algorithmically"],["algorhythms","algorithms"],["algorhytm","algorithm"],["algorhytmic","algorithmic"],["algorhytmically","algorithmically"],["algorhytms","algorithms"],["algorightm","algorithm"],["algorightmic","algorithmic"],["algorightmically","algorithmically"],["algorightms","algorithms"],["algorihm","algorithm"],["algorihmic","algorithmic"],["algorihmically","algorithmically"],["algorihms","algorithms"],["algorihtm","algorithm"],["algorihtmic","algorithmic"],["algorihtmically","algorithmically"],["algorihtms","algorithms"],["algoristhms","algorithms"],["algorith","algorithm"],["algorithem","algorithm"],["algorithemic","algorithmic"],["algorithemically","algorithmically"],["algorithems","algorithms"],["algorithic","algorithmic"],["algorithically","algorithmically"],["algorithim","algorithm"],["algorithimes","algorithms"],["algorithimic","algorithmic"],["algorithimically","algorithmically"],["algorithims","algorithms"],["algorithmes","algorithms"],["algorithmi","algorithm"],["algorithmical","algorithmically"],["algorithmm","algorithm"],["algorithmmic","algorithmic"],["algorithmmically","algorithmically"],["algorithmms","algorithms"],["algorithmn","algorithm"],["algorithmnic","algorithmic"],["algorithmnically","algorithmically"],["algorithmns","algorithms"],["algoriths","algorithms"],["algorithsmic","algorithmic"],["algorithsmically","algorithmically"],["algorithsms","algorithms"],["algoritm","algorithm"],["algoritmic","algorithmic"],["algoritmically","algorithmically"],["algoritms","algorithms"],["algoroithm","algorithm"],["algoroithmic","algorithmic"],["algoroithmically","algorithmically"],["algoroithms","algorithms"],["algororithm","algorithm"],["algororithmic","algorithmic"],["algororithmically","algorithmically"],["algororithms","algorithms"],["algorothm","algorithm"],["algorothmic","algorithmic"],["algorothmically","algorithmically"],["algorothms","algorithms"],["algorrithm","algorithm"],["algorrithmic","algorithmic"],["algorrithmically","algorithmically"],["algorrithms","algorithms"],["algorritm","algorithm"],["algorritmic","algorithmic"],["algorritmically","algorithmically"],["algorritms","algorithms"],["algorthim","algorithm"],["algorthimic","algorithmic"],["algorthimically","algorithmically"],["algorthims","algorithms"],["algorthin","algorithm"],["algorthinic","algorithmic"],["algorthinically","algorithmically"],["algorthins","algorithms"],["algorthm","algorithm"],["algorthmic","algorithmic"],["algorthmically","algorithmically"],["algorthms","algorithms"],["algorthn","algorithm"],["algorthnic","algorithmic"],["algorthnically","algorithmically"],["algorthns","algorithms"],["algorthym","algorithm"],["algorthymic","algorithmic"],["algorthymically","algorithmically"],["algorthyms","algorithms"],["algorthyn","algorithm"],["algorthynic","algorithmic"],["algorthynically","algorithmically"],["algorthyns","algorithms"],["algortihm","algorithm"],["algortihmic","algorithmic"],["algortihmically","algorithmically"],["algortihms","algorithms"],["algortim","algorithm"],["algortimic","algorithmic"],["algortimically","algorithmically"],["algortims","algorithms"],["algortism","algorithm"],["algortismic","algorithmic"],["algortismically","algorithmically"],["algortisms","algorithms"],["algortithm","algorithm"],["algortithmic","algorithmic"],["algortithmically","algorithmically"],["algortithms","algorithms"],["algoruthm","algorithm"],["algoruthmic","algorithmic"],["algoruthmically","algorithmically"],["algoruthms","algorithms"],["algorwwithm","algorithm"],["algorwwithmic","algorithmic"],["algorwwithmically","algorithmically"],["algorwwithms","algorithms"],["algorythem","algorithm"],["algorythemic","algorithmic"],["algorythemically","algorithmically"],["algorythems","algorithms"],["algorythm","algorithm"],["algorythmic","algorithmic"],["algorythmically","algorithmically"],["algorythms","algorithms"],["algothitm","algorithm"],["algothitmic","algorithmic"],["algothitmically","algorithmically"],["algothitms","algorithms"],["algotighm","algorithm"],["algotighmic","algorithmic"],["algotighmically","algorithmically"],["algotighms","algorithms"],["algotihm","algorithm"],["algotihmic","algorithmic"],["algotihmically","algorithmically"],["algotihms","algorithms"],["algotirhm","algorithm"],["algotirhmic","algorithmic"],["algotirhmically","algorithmically"],["algotirhms","algorithms"],["algotithm","algorithm"],["algotithmic","algorithmic"],["algotithmically","algorithmically"],["algotithms","algorithms"],["algotrithm","algorithm"],["algotrithmic","algorithmic"],["algotrithmically","algorithmically"],["algotrithms","algorithms"],["alha","alpha"],["alhabet","alphabet"],["alhabetical","alphabetical"],["alhabetically","alphabetically"],["alhabeticaly","alphabetically"],["alhabets","alphabets"],["alhapet","alphabet"],["alhapetical","alphabetical"],["alhapetically","alphabetically"],["alhapeticaly","alphabetically"],["alhapets","alphabets"],["alhough","although"],["alhpa","alpha"],["alhpabet","alphabet"],["alhpabetical","alphabetical"],["alhpabetically","alphabetically"],["alhpabeticaly","alphabetically"],["alhpabets","alphabets"],["aliagn","align"],["aliasas","aliases"],["aliasses","aliases"],["alientating","alienating"],["aliged","aligned"],["alighned","aligned"],["alighnment","alignment"],["aligin","align"],["aligined","aligned"],["aligining","aligning"],["aliginment","alignment"],["aligins","aligns"],["aligment","alignment"],["aligments","alignments"],["alignation","alignment"],["alignd","aligned"],["aligne","align"],["alignement","alignment"],["alignemnt","alignment"],["alignemnts","alignments"],["alignemt","alignment"],["alignes","aligns"],["alignmant","alignment"],["alignmen","alignment"],["alignmenet","alignment"],["alignmenets","alignments"],["alignmenton","alignment on"],["alignmet","alignment"],["alignmets","alignments"],["alignmment","alignment"],["alignmments","alignments"],["alignmnet","alignment"],["alignmnt","alignment"],["alignrigh","alignright"],["alined","aligned"],["alinged","aligned"],["alinging","aligning"],["alingment","alignment"],["alinment","alignment"],["alinments","alignments"],["alising","aliasing"],["allcate","allocate"],["allcateing","allocating"],["allcater","allocator"],["allcaters","allocators"],["allcating","allocating"],["allcation","allocation"],["allcator","allocator"],["allcoate","allocate"],["allcoated","allocated"],["allcoateing","allocating"],["allcoateng","allocating"],["allcoater","allocator"],["allcoaters","allocators"],["allcoating","allocating"],["allcoation","allocation"],["allcoator","allocator"],["allcoators","allocators"],["alledge","allege"],["alledged","alleged"],["alledgedly","allegedly"],["alledges","alleges"],["allegedely","allegedly"],["allegedy","allegedly"],["allegely","allegedly"],["allegence","allegiance"],["allegience","allegiance"],["allif","all if"],["allign","align"],["alligned","aligned"],["allignement","alignment"],["allignemnt","alignment"],["alligning","aligning"],["allignment","alignment"],["allignmenterror","alignmenterror"],["allignments","alignments"],["alligns","aligns"],["alliviate","alleviate"],["allk","all"],["alllocate","allocate"],["alllocation","allocation"],["alllow","allow"],["alllowed","allowed"],["alllows","allows"],["allmost","almost"],["alloacate","allocate"],["allocae","allocate"],["allocaed","allocated"],["allocaes","allocates"],["allocagtor","allocator"],["allocaiing","allocating"],["allocaing","allocating"],["allocaion","allocation"],["allocaions","allocations"],["allocaite","allocate"],["allocaites","allocates"],["allocaiting","allocating"],["allocaition","allocation"],["allocaitions","allocations"],["allocaiton","allocation"],["allocaitons","allocations"],["allocal","allocate"],["allocarion","allocation"],["allocat","allocate"],["allocatbale","allocatable"],["allocatedi","allocated"],["allocatedp","allocated"],["allocateing","allocating"],["allocateng","allocating"],["allocaton","allocation"],["allocatoor","allocator"],["allocatote","allocate"],["allocatrd","allocated"],["allocattion","allocation"],["alloco","alloc"],["allocos","allocs"],["allocte","allocate"],["allocted","allocated"],["allocting","allocating"],["alloction","allocation"],["alloctions","allocations"],["alloctor","allocator"],["alloews","allows"],["allong","along"],["alloocates","allocates"],["allopone","allophone"],["allopones","allophones"],["allos","allows"],["alloted","allotted"],["allowence","allowance"],["allowences","allowances"],["allpication","application"],["allpications","applications"],["allso","also"],["allthough","although"],["alltough","although"],["allways","always"],["allwo","allow"],["allwos","allows"],["allws","allows"],["allwys","always"],["almoast","almost"],["almostly","almost"],["almsot","almost"],["alo","also"],["alocatable","allocatable"],["alocate","allocate"],["alocated","allocated"],["alocates","allocates"],["alocating","allocating"],["alocations","allocations"],["alochol","alcohol"],["alog","along"],["alogirhtm","algorithm"],["alogirhtmic","algorithmic"],["alogirhtmically","algorithmically"],["alogirhtms","algorithms"],["alogirthm","algorithm"],["alogirthmic","algorithmic"],["alogirthmically","algorithmically"],["alogirthms","algorithms"],["alogned","aligned"],["alogorithms","algorithms"],["alogrithm","algorithm"],["alogrithmic","algorithmic"],["alogrithmically","algorithmically"],["alogrithms","algorithms"],["alomst","almost"],["aloows","allows"],["alorithm","algorithm"],["alos","also"],["alotted","allotted"],["alow","allow"],["alowed","allowed"],["alowing","allowing"],["alows","allows"],["alpabet","alphabet"],["alpabetic","alphabetic"],["alpabetical","alphabetical"],["alpabets","alphabets"],["alpah","alpha"],["alpahabetical","alphabetical"],["alpahbetically","alphabetically"],["alph","alpha"],["alpha-numeric","alphanumeric"],["alphabeticaly","alphabetically"],["alphabeticly","alphabetical"],["alphapeicall","alphabetical"],["alphapeticaly","alphabetically"],["alrady","already"],["alraedy","already"],["alread","already"],["alreadly","already"],["alreadt","already"],["alreasy","already"],["alreay","already"],["alreayd","already"],["alreday","already"],["alredy","already"],["alrelady","already"],["alrms","alarms"],["alrogithm","algorithm"],["alrteady","already"],["als","also"],["alsmost","almost"],["alsot","also"],["alsready","already"],["altenative","alternative"],["alterated","altered"],["alterately","alternately"],["alterative","alternative"],["alteratives","alternatives"],["alterior","ulterior"],["alternaive","alternative"],["alternaives","alternatives"],["alternarive","alternative"],["alternarives","alternatives"],["alternatievly","alternatively"],["alternativey","alternatively"],["alternativley","alternatively"],["alternativly","alternatively"],["alternatve","alternative"],["alternavtely","alternatively"],["alternavtive","alternative"],["alternavtives","alternatives"],["alternetive","alternative"],["alternetives","alternatives"],["alternitive","alternative"],["alternitively","alternatively"],["alternitiveness","alternativeness"],["alternitives","alternatives"],["alternitivly","alternatively"],["altetnative","alternative"],["altho","although"],["althogh","although"],["althorithm","algorithm"],["althorithmic","algorithmic"],["althorithmically","algorithmically"],["althorithms","algorithms"],["althoug","although"],["althought","although"],["althougth","although"],["althouth","although"],["altitide","altitude"],["altitute","altitude"],["altogehter","altogether"],["altough","although"],["altought","although"],["altready","already"],["alue","value"],["alvorithm","algorithm"],["alvorithmic","algorithmic"],["alvorithmically","algorithmically"],["alvorithms","algorithms"],["alwais","always"],["alwas","always"],["alwast","always"],["alwasy","always"],["alwasys","always"],["alwauys","always"],["alway","always"],["alwyas","always"],["alwys","always"],["alyways","always"],["amacing","amazing"],["amacingly","amazingly"],["amalgomated","amalgamated"],["amatuer","amateur"],["amazaing","amazing"],["ambedded","embedded"],["ambibuity","ambiguity"],["ambien","ambient"],["ambigious","ambiguous"],["ambigous","ambiguous"],["ambiguious","ambiguous"],["ambiguitiy","ambiguity"],["ambiguos","ambiguous"],["ambitous","ambitious"],["ambuguity","ambiguity"],["ambulence","ambulance"],["ambulences","ambulances"],["amdgput","amdgpu"],["amendement","amendment"],["amendmant","amendment"],["Amercia","America"],["amerliorate","ameliorate"],["amgle","angle"],["amgles","angles"],["amiguous","ambiguous"],["amke","make"],["amking","making"],["ammend","amend"],["ammended","amended"],["ammending","amending"],["ammendment","amendment"],["ammendments","amendments"],["ammends","amends"],["ammong","among"],["ammongst","amongst"],["ammortizes","amortizes"],["ammoung","among"],["ammoungst","amongst"],["ammount","amount"],["ammused","amused"],["amny","many"],["amongs","among"],["amonst","amongst"],["amonut","amount"],["amound","amount"],["amounds","amounts"],["amoung","among"],["amoungst","amongst"],["amout","amount"],["amoutn","amount"],["amoutns","amounts"],["amouts","amounts"],["amperstands","ampersands"],["amphasis","emphasis"],["amplifer","amplifier"],["amplifyer","amplifier"],["amplitud","amplitude"],["ampty","empty"],["amuch","much"],["amung","among"],["amunition","ammunition"],["amunt","amount"],["analagous","analogous"],["analagus","analogous"],["analaog","analog"],["analgous","analogous"],["analig","analog"],["analise","analyse"],["analised","analysed"],["analiser","analyser"],["analising","analysing"],["analisis","analysis"],["analitic","analytic"],["analitical","analytical"],["analitically","analytically"],["analiticaly","analytically"],["analize","analyze"],["analized","analyzed"],["analizer","analyzer"],["analizes","analyzes"],["analizing","analyzing"],["analogeous","analogous"],["analogicaly","analogically"],["analoguous","analogous"],["analoguously","analogously"],["analogus","analogous"],["analouge","analogue"],["analouges","analogues"],["analsye","analyse"],["analsyed","analysed"],["analsyer","analyser"],["analsyers","analysers"],["analsyes","analyses"],["analsying","analysing"],["analsyis","analysis"],["analsyt","analyst"],["analsyts","analysts"],["analyis","analysis"],["analysator","analyser"],["analysus","analysis"],["analysy","analysis"],["analyticaly","analytically"],["analyticly","analytically"],["analyzator","analyzer"],["analzye","analyze"],["analzyed","analyzed"],["analzyer","analyzer"],["analzyers","analyzers"],["analzyes","analyzes"],["analzying","analyzing"],["ananlog","analog"],["anarchim","anarchism"],["anarchistm","anarchism"],["anarquism","anarchism"],["anarquist","anarchist"],["anaylse","analyse"],["anaylsed","analysed"],["anaylser","analyser"],["anaylses","analyses"],["anaylsis","analysis"],["anaylsises","analysises"],["anayltic","analytic"],["anayltical","analytical"],["anayltically","analytically"],["anayltics","analytics"],["anaylze","analyze"],["anaylzed","analyzed"],["anaylzer","analyzer"],["anaylzes","analyzes"],["anbd","and"],["ancapsulate","encapsulate"],["ancapsulated","encapsulated"],["ancapsulates","encapsulates"],["ancapsulating","encapsulating"],["ancapsulation","encapsulation"],["ancesetor","ancestor"],["ancesetors","ancestors"],["ancester","ancestor"],["ancesteres","ancestors"],["ancesters","ancestors"],["ancestore","ancestor"],["ancestores","ancestors"],["ancestory","ancestry"],["anchestor","ancestor"],["anchestors","ancestors"],["anchord","anchored"],["ancilliary","ancillary"],["andd","and"],["andoid","android"],["andoids","androids"],["andorid","android"],["andorids","androids"],["andriod","android"],["andriods","androids"],["androgenous","androgynous"],["androgeny","androgyny"],["androidextra","androidextras"],["androind","android"],["androinds","androids"],["andthe","and the"],["ane","and"],["anevironment","environment"],["anevironments","environments"],["angluar","angular"],["anhoter","another"],["anid","and"],["anihilation","annihilation"],["animaing","animating"],["animaite","animate"],["animaiter","animator"],["animaiters","animators"],["animaiton","animation"],["animaitons","animations"],["animaitor","animator"],["animaitors","animators"],["animaton","animation"],["animatonic","animatronic"],["animete","animate"],["animeted","animated"],["animetion","animation"],["animetions","animations"],["animets","animates"],["animore","anymore"],["aninate","animate"],["anination","animation"],["aniother","any other"],["anisotrophically","anisotropically"],["anitaliasing","antialiasing"],["anithing","anything"],["anitialising","antialiasing"],["anitime","anytime"],["anitrez","antirez"],["aniversary","anniversary"],["aniway","anyway"],["aniwhere","anywhere"],["anlge","angle"],["anlysis","analysis"],["anlyzing","analyzing"],["annayed","annoyed"],["annaying","annoying"],["annd","and"],["anniversery","anniversary"],["annnounce","announce"],["annoation","annotation"],["annoint","anoint"],["annointed","anointed"],["annointing","anointing"],["annoints","anoints"],["annonate","annotate"],["annonated","annotated"],["annonates","annotates"],["annonce","announce"],["annonced","announced"],["annoncement","announcement"],["annoncements","announcements"],["annonces","announces"],["annoncing","announcing"],["annonymous","anonymous"],["annotaion","annotation"],["annotaions","annotations"],["annoted","annotated"],["annother","another"],["annouce","announce"],["annouced","announced"],["annoucement","announcement"],["annoucements","announcements"],["annouces","announces"],["annoucing","announcing"],["annouing","annoying"],["announcment","announcement"],["announcments","announcements"],["announed","announced"],["announement","announcement"],["announements","announcements"],["annoymous","anonymous"],["annoyying","annoying"],["annualy","annually"],["annuled","annulled"],["annyoingly","annoyingly"],["anoher","another"],["anohter","another"],["anologon","analogon"],["anomally","anomaly"],["anomolies","anomalies"],["anomolous","anomalous"],["anomoly","anomaly"],["anonimity","anonymity"],["anononymous","anonymous"],["anonther","another"],["anonymouse","anonymous"],["anonyms","anonymous"],["anonymus","anonymous"],["anormalies","anomalies"],["anormaly","abnormally"],["anotate","annotate"],["anotated","annotated"],["anotates","annotates"],["anotating","annotating"],["anotation","annotation"],["anotations","annotations"],["anoter","another"],["anothe","another"],["anothers","another"],["anothr","another"],["anounce","announce"],["anounced","announced"],["anouncement","announcement"],["anount","amount"],["anoying","annoying"],["anoymous","anonymous"],["anroid","android"],["ansalisation","nasalisation"],["ansalization","nasalization"],["anser","answer"],["ansester","ancestor"],["ansesters","ancestors"],["ansestor","ancestor"],["ansestors","ancestors"],["answhare","answer"],["answhared","answered"],["answhareing","answering"],["answhares","answers"],["answharing","answering"],["answhars","answers"],["ansynchronous","asynchronous"],["antaliasing","antialiasing"],["antartic","antarctic"],["antecedant","antecedent"],["anteena","antenna"],["anteenas","antennas"],["anthing","anything"],["anthings","anythings"],["anthor","another"],["anthromorphization","anthropomorphization"],["anthropolgist","anthropologist"],["anthropolgy","anthropology"],["antialialised","antialiased"],["antialising","antialiasing"],["antiapartheid","anti-apartheid"],["anticpate","anticipate"],["antry","entry"],["antyhing","anything"],["anual","annual"],["anually","annually"],["anulled","annulled"],["anumber","a number"],["anuwhere","anywhere"],["anway","anyway"],["anways","anyway"],["anwhere","anywhere"],["anwser","answer"],["anwsered","answered"],["anwsering","answering"],["anwsers","answers"],["anyawy","anyway"],["anyhing","anything"],["anyhting","anything"],["anyhwere","anywhere"],["anylsing","analysing"],["anylzing","analyzing"],["anynmore","anymore"],["anyother","any other"],["anytghing","anything"],["anythig","anything"],["anythign","anything"],["anythimng","anything"],["anytiem","anytime"],["anytihng","anything"],["anyting","anything"],["anytning","anything"],["anytrhing","anything"],["anytthing","anything"],["anytying","anything"],["anywere","anywhere"],["anyy","any"],["aoache","apache"],["aond","and"],["aoto","auto"],["aotomate","automate"],["aotomated","automated"],["aotomatic","automatic"],["aotomatical","automatic"],["aotomaticall","automatically"],["aotomatically","automatically"],["aotomation","automation"],["aovid","avoid"],["apach","apache"],["apapted","adapted"],["aparant","apparent"],["aparantly","apparently"],["aparent","apparent"],["aparently","apparently"],["aparment","apartment"],["apdated","updated"],["apeal","appeal"],["apealed","appealed"],["apealing","appealing"],["apeals","appeals"],["apear","appear"],["apeared","appeared"],["apears","appears"],["apect","aspect"],["apects","aspects"],["apeends","appends"],["apend","append"],["apendage","appendage"],["apended","appended"],["apender","appender"],["apendices","appendices"],["apending","appending"],["apendix","appendix"],["apenines","Apennines"],["aperatures","apertures"],["aperure","aperture"],["aperures","apertures"],["apeture","aperture"],["apetures","apertures"],["apilogue","epilogue"],["aplha","alpha"],["aplication","application"],["aplications","applications"],["aplied","applied"],["aplies","applies"],["apllicatin","application"],["apllicatins","applications"],["apllication","application"],["apllications","applications"],["apllied","applied"],["apllies","applies"],["aplly","apply"],["apllying","applying"],["aply","apply"],["aplyed","applied"],["aplying","applying"],["apointed","appointed"],["apointing","appointing"],["apointment","appointment"],["apoints","appoints"],["apolegetic","apologetic"],["apolegetics","apologetics"],["aportionable","apportionable"],["apostrophie","apostrophe"],["apostrophies","apostrophes"],["appar","appear"],["apparant","apparent"],["apparantly","apparently"],["appared","appeared"],["apparence","appearance"],["apparenlty","apparently"],["apparenly","apparently"],["appares","appears"],["apparoches","approaches"],["appars","appears"],["appart","apart"],["appartment","apartment"],["appartments","apartments"],["appearaing","appearing"],["appearantly","apparently"],["appeareance","appearance"],["appearence","appearance"],["appearences","appearances"],["appearently","apparently"],["appeares","appears"],["appearning","appearing"],["appearrs","appears"],["appeciate","appreciate"],["appeded","appended"],["appeding","appending"],["appedn","append"],["appen","append"],["appendend","appended"],["appendent","appended"],["appendex","appendix"],["appendig","appending"],["appendign","appending"],["appendt","append"],["appeneded","appended"],["appenines","Apennines"],["appens","appends"],["appent","append"],["apperance","appearance"],["apperances","appearances"],["apperar","appear"],["apperarance","appearance"],["apperarances","appearances"],["apperared","appeared"],["apperaring","appearing"],["apperars","appears"],["appereance","appearance"],["appereances","appearances"],["appered","appeared"],["apperent","apparent"],["apperently","apparently"],["appers","appears"],["apperture","aperture"],["appicability","applicability"],["appicable","applicable"],["appicaliton","application"],["appicalitons","applications"],["appicant","applicant"],["appication","application"],["appication-specific","application-specific"],["appications","applications"],["appicative","applicative"],["appied","applied"],["appies","applies"],["applay","apply"],["applcation","application"],["applcations","applications"],["appliable","applicable"],["appliacable","applicable"],["appliaction","application"],["appliactions","applications"],["appliation","application"],["appliations","applications"],["applicabel","applicable"],["applicaion","application"],["applicaions","applications"],["applicaiton","application"],["applicaitons","applications"],["applicance","appliance"],["applicapility","applicability"],["applicaple","applicable"],["applicatable","applicable"],["applicaten","application"],["applicatin","application"],["applicatins","applications"],["applicatio","application"],["applicationb","application"],["applicatios","applications"],["applicatiosn","applications"],["applicaton","application"],["applicatons","applications"],["appliction","application"],["applictions","applications"],["applide","applied"],["applikation","application"],["applikations","applications"],["appllied","applied"],["applly","apply"],["applyable","applicable"],["applycable","applicable"],["applyed","applied"],["applyes","applies"],["applyied","applied"],["applyig","applying"],["applys","applies"],["applyting","applying"],["appned","append"],["appologies","apologies"],["appology","apology"],["appon","upon"],["appopriate","appropriate"],["apporach","approach"],["apporached","approached"],["apporaches","approaches"],["apporaching","approaching"],["apporiate","appropriate"],["apporoximate","approximate"],["apporoximated","approximated"],["apporpiate","appropriate"],["apporpriate","appropriate"],["apporpriated","appropriated"],["apporpriately","appropriately"],["apporpriates","appropriates"],["apporpriating","appropriating"],["apporpriation","appropriation"],["apporpriations","appropriations"],["apporval","approval"],["apporve","approve"],["apporved","approved"],["apporves","approves"],["apporving","approving"],["appoval","approval"],["appove","approve"],["appoved","approved"],["appoves","approves"],["appoving","approving"],["appoximate","approximate"],["appoximately","approximately"],["appoximates","approximates"],["appoximation","approximation"],["appoximations","approximations"],["apppear","appear"],["apppears","appears"],["apppend","append"],["apppends","appends"],["appplet","applet"],["appplication","application"],["appplications","applications"],["appplying","applying"],["apppriate","appropriate"],["appproach","approach"],["apppropriate","appropriate"],["appraoch","approach"],["appraochable","approachable"],["appraoched","approached"],["appraoches","approaches"],["appraoching","approaching"],["apprearance","appearance"],["apprently","apparently"],["appreteate","appreciate"],["appreteated","appreciated"],["appretiate","appreciate"],["appretiated","appreciated"],["appretiates","appreciates"],["appretiating","appreciating"],["appretiation","appreciation"],["appretiative","appreciative"],["apprieciate","appreciate"],["apprieciated","appreciated"],["apprieciates","appreciates"],["apprieciating","appreciating"],["apprieciation","appreciation"],["apprieciative","appreciative"],["appriopriate","appropriate"],["appripriate","appropriate"],["appriproate","appropriate"],["apprixamate","approximate"],["apprixamated","approximated"],["apprixamately","approximately"],["apprixamates","approximates"],["apprixamating","approximating"],["apprixamation","approximation"],["apprixamations","approximations"],["appriximate","approximate"],["appriximated","approximated"],["appriximately","approximately"],["appriximates","approximates"],["appriximating","approximating"],["appriximation","approximation"],["appriximations","approximations"],["approachs","approaches"],["approbiate","appropriate"],["approch","approach"],["approche","approach"],["approched","approached"],["approches","approaches"],["approching","approaching"],["approiate","appropriate"],["approopriate","appropriate"],["approoximate","approximate"],["approoximately","approximately"],["approoximates","approximates"],["approoximation","approximation"],["approoximations","approximations"],["approperiate","appropriate"],["appropiate","appropriate"],["appropiately","appropriately"],["approppriately","appropriately"],["appropraite","appropriate"],["appropraitely","appropriately"],["approprate","appropriate"],["approprated","appropriated"],["approprately","appropriately"],["appropration","appropriation"],["approprations","appropriations"],["appropriage","appropriate"],["appropriatedly","appropriately"],["appropriatee","appropriate"],["appropriatly","appropriately"],["appropriatness","appropriateness"],["appropriete","appropriate"],["appropritae","appropriate"],["appropritate","appropriate"],["appropritately","appropriately"],["approprite","appropriate"],["approproate","appropriate"],["appropropiate","appropriate"],["appropropiately","appropriately"],["appropropreate","appropriate"],["appropropriate","appropriate"],["approproximate","approximate"],["approproximately","approximately"],["approproximates","approximates"],["approproximation","approximation"],["approproximations","approximations"],["approprpiate","appropriate"],["approriate","appropriate"],["approriately","appropriately"],["approrpriate","appropriate"],["approrpriately","appropriately"],["approuval","approval"],["approuve","approve"],["approuved","approved"],["approuves","approves"],["approuving","approving"],["approvement","approval"],["approxamate","approximate"],["approxamately","approximately"],["approxamates","approximates"],["approxamation","approximation"],["approxamations","approximations"],["approxamatly","approximately"],["approxametely","approximately"],["approxiamte","approximate"],["approxiamtely","approximately"],["approxiamtes","approximates"],["approxiamtion","approximation"],["approxiamtions","approximations"],["approxiate","approximate"],["approxiately","approximately"],["approxiates","approximates"],["approxiation","approximation"],["approxiations","approximations"],["approximatively","approximately"],["approximatly","approximately"],["approximed","approximated"],["approximetely","approximately"],["approximitely","approximately"],["approxmate","approximate"],["approxmately","approximately"],["approxmates","approximates"],["approxmation","approximation"],["approxmations","approximations"],["approxmimation","approximation"],["apprpriate","appropriate"],["apprpriately","appropriately"],["appy","apply"],["appying","applying"],["apreciate","appreciate"],["apreciated","appreciated"],["apreciates","appreciates"],["apreciating","appreciating"],["apreciation","appreciation"],["apreciative","appreciative"],["aprehensive","apprehensive"],["apreteate","appreciate"],["apreteated","appreciated"],["apreteating","appreciating"],["apretiate","appreciate"],["apretiated","appreciated"],["apretiates","appreciates"],["apretiating","appreciating"],["apretiation","appreciation"],["apretiative","appreciative"],["aproach","approach"],["aproached","approached"],["aproaches","approaches"],["aproaching","approaching"],["aproch","approach"],["aproched","approached"],["aproches","approaches"],["aproching","approaching"],["aproove","approve"],["aprooved","approved"],["apropiate","appropriate"],["apropiately","appropriately"],["apropriate","appropriate"],["apropriately","appropriately"],["aproval","approval"],["aproximate","approximate"],["aproximately","approximately"],["aproximates","approximates"],["aproximation","approximation"],["aproximations","approximations"],["aprrovement","approval"],["aprroximate","approximate"],["aprroximately","approximately"],["aprroximates","approximates"],["aprroximation","approximation"],["aprroximations","approximations"],["aprtment","apartment"],["aqain","again"],["aqcuire","acquire"],["aqcuired","acquired"],["aqcuires","acquires"],["aqcuiring","acquiring"],["aquaduct","aqueduct"],["aquaint","acquaint"],["aquaintance","acquaintance"],["aquainted","acquainted"],["aquainting","acquainting"],["aquaints","acquaints"],["aquiantance","acquaintance"],["aquire","acquire"],["aquired","acquired"],["aquires","acquires"],["aquiring","acquiring"],["aquisition","acquisition"],["aquisitions","acquisitions"],["aquit","acquit"],["aquitted","acquitted"],["arameters","parameters"],["aranged","arranged"],["arangement","arrangement"],["araound","around"],["ararbic","arabic"],["aray","array"],["arays","arrays"],["arbiatraily","arbitrarily"],["arbiatray","arbitrary"],["arbibtarily","arbitrarily"],["arbibtary","arbitrary"],["arbibtrarily","arbitrarily"],["arbibtrary","arbitrary"],["arbiitrarily","arbitrarily"],["arbiitrary","arbitrary"],["arbirarily","arbitrarily"],["arbirary","arbitrary"],["arbiratily","arbitrarily"],["arbiraty","arbitrary"],["arbirtarily","arbitrarily"],["arbirtary","arbitrary"],["arbirtrarily","arbitrarily"],["arbirtrary","arbitrary"],["arbitarary","arbitrary"],["arbitarily","arbitrarily"],["arbitary","arbitrary"],["arbitiarily","arbitrarily"],["arbitiary","arbitrary"],["arbitiraly","arbitrarily"],["arbitiray","arbitrary"],["arbitrailly","arbitrarily"],["arbitraily","arbitrarily"],["arbitraion","arbitration"],["arbitrairly","arbitrarily"],["arbitrairy","arbitrary"],["arbitral","arbitrary"],["arbitralily","arbitrarily"],["arbitrally","arbitrarily"],["arbitralrily","arbitrarily"],["arbitralry","arbitrary"],["arbitraly","arbitrary"],["arbitrarion","arbitration"],["arbitraryily","arbitrarily"],["arbitraryly","arbitrary"],["arbitratily","arbitrarily"],["arbitratiojn","arbitration"],["arbitraton","arbitration"],["arbitratrily","arbitrarily"],["arbitratrion","arbitration"],["arbitratry","arbitrary"],["arbitraty","arbitrary"],["arbitray","arbitrary"],["arbitriarily","arbitrarily"],["arbitriary","arbitrary"],["arbitrily","arbitrarily"],["arbitrion","arbitration"],["arbitriraly","arbitrarily"],["arbitriray","arbitrary"],["arbitrition","arbitration"],["arbitrtily","arbitrarily"],["arbitrty","arbitrary"],["arbitry","arbitrary"],["arbitryarily","arbitrarily"],["arbitryary","arbitrary"],["arbitual","arbitrary"],["arbitually","arbitrarily"],["arbitualy","arbitrary"],["arbituarily","arbitrarily"],["arbituary","arbitrary"],["arbiturarily","arbitrarily"],["arbiturary","arbitrary"],["arbort","abort"],["arborted","aborted"],["arborting","aborting"],["arborts","aborts"],["arbritary","arbitrary"],["arbritrarily","arbitrarily"],["arbritrary","arbitrary"],["arbtirarily","arbitrarily"],["arbtirary","arbitrary"],["arbtrarily","arbitrarily"],["arbtrary","arbitrary"],["arbutrarily","arbitrarily"],["arbutrary","arbitrary"],["arch-dependet","arch-dependent"],["arch-independet","arch-independent"],["archaelogical","archaeological"],["archaelogists","archaeologists"],["archaelogy","archaeology"],["archetect","architect"],["archetects","architects"],["archetectural","architectural"],["archetecturally","architecturally"],["archetecture","architecture"],["archiac","archaic"],["archictect","architect"],["archictecture","architecture"],["archictectures","architectures"],["archicture","architecture"],["archiecture","architecture"],["archiectures","architectures"],["archimedian","archimedean"],["architct","architect"],["architcts","architects"],["architcture","architecture"],["architctures","architectures"],["architecht","architect"],["architechts","architects"],["architechturally","architecturally"],["architechture","architecture"],["architechtures","architectures"],["architectual","architectural"],["architectur","architecture"],["architecturs","architectures"],["architecturse","architectures"],["architecure","architecture"],["architecures","architectures"],["architecutre","architecture"],["architecutres","architectures"],["architecuture","architecture"],["architecutures","architectures"],["architetcure","architecture"],["architetcures","architectures"],["architeture","architecture"],["architetures","architectures"],["architure","architecture"],["architures","architectures"],["archiv","archive"],["archivel","archival"],["archor","anchor"],["archtecture","architecture"],["archtectures","architectures"],["archtiecture","architecture"],["archtiectures","architectures"],["archtitecture","architecture"],["archtitectures","architectures"],["archtype","archetype"],["archtypes","archetypes"],["archvie","archive"],["archvies","archives"],["archving","archiving"],["arcitecture","architecture"],["arcitectures","architectures"],["arcive","archive"],["arcived","archived"],["arciver","archiver"],["arcives","archives"],["arciving","archiving"],["arcticle","article"],["Ardiuno","Arduino"],["are'nt","aren't"],["aready","already"],["areea","area"],["aren's","aren't"],["aren;t","aren't"],["arent'","aren't"],["arent","aren't"],["arent;","aren't"],["areodynamics","aerodynamics"],["argement","argument"],["argements","arguments"],["argemnt","argument"],["argemnts","arguments"],["argment","argument"],["argments","arguments"],["argmument","argument"],["argmuments","arguments"],["argreement","agreement"],["argreements","agreements"],["argubly","arguably"],["arguement","argument"],["arguements","arguments"],["arguemnt","argument"],["arguemnts","arguments"],["arguemtn","argument"],["arguemtns","arguments"],["arguents","arguments"],["argumant","argument"],["argumants","arguments"],["argumeent","argument"],["argumeents","arguments"],["argumement","argument"],["argumements","arguments"],["argumemnt","argument"],["argumemnts","arguments"],["argumeng","argument"],["argumengs","arguments"],["argumens","arguments"],["argumenst","arguments"],["argumentents","arguments"],["argumeny","argument"],["argumet","argument"],["argumetn","argument"],["argumetns","arguments"],["argumets","arguments"],["argumnet","argument"],["argumnets","arguments"],["argumnt","argument"],["argumnts","arguments"],["arhive","archive"],["arhives","archives"],["aribitary","arbitrary"],["aribiter","arbiter"],["aribrary","arbitrary"],["aribtrarily","arbitrarily"],["aribtrary","arbitrary"],["ariflow","airflow"],["arised","arose"],["arithemetic","arithmetic"],["arithemtic","arithmetic"],["arithmatic","arithmetic"],["arithmentic","arithmetic"],["arithmetc","arithmetic"],["arithmethic","arithmetic"],["arithmitic","arithmetic"],["aritmetic","arithmetic"],["aritrary","arbitrary"],["aritst","artist"],["arival","arrival"],["arive","arrive"],["arlready","already"],["armamant","armament"],["armistace","armistice"],["armonic","harmonic"],["arn't","aren't"],["arne't","aren't"],["arogant","arrogant"],["arogent","arrogant"],["aronud","around"],["aroud","around"],["aroudn","around"],["arouind","around"],["arounf","around"],["aroung","around"],["arount","around"],["arquitecture","architecture"],["arquitectures","architectures"],["arraay","array"],["arragement","arrangement"],["arraival","arrival"],["arral","array"],["arranable","arrangeable"],["arrance","arrange"],["arrane","arrange"],["arraned","arranged"],["arranement","arrangement"],["arranements","arrangements"],["arranent","arrangement"],["arranents","arrangements"],["arranes","arranges"],["arrang","arrange"],["arrangable","arrangeable"],["arrangaeble","arrangeable"],["arrangaelbe","arrangeable"],["arrangd","arranged"],["arrangde","arranged"],["arrangemenet","arrangement"],["arrangemenets","arrangements"],["arrangent","arrangement"],["arrangents","arrangements"],["arrangmeent","arrangement"],["arrangmeents","arrangements"],["arrangmenet","arrangement"],["arrangmenets","arrangements"],["arrangment","arrangement"],["arrangments","arrangements"],["arrangnig","arranging"],["arrangs","arranges"],["arrangse","arranges"],["arrangt","arrangement"],["arrangte","arrange"],["arrangteable","arrangeable"],["arrangted","arranged"],["arrangtement","arrangement"],["arrangtements","arrangements"],["arrangtes","arranges"],["arrangting","arranging"],["arrangts","arrangements"],["arraning","arranging"],["arranment","arrangement"],["arranments","arrangements"],["arrants","arrangements"],["arraows","arrows"],["arrary","array"],["arrayes","arrays"],["arre","are"],["arreay","array"],["arrengement","arrangement"],["arrengements","arrangements"],["arriveis","arrives"],["arrivial","arrival"],["arround","around"],["arrray","array"],["arrrays","arrays"],["arrrive","arrive"],["arrrived","arrived"],["arrrives","arrives"],["arrtibute","attribute"],["arrya","array"],["arryas","arrays"],["arrys","arrays"],["artcile","article"],["articaft","artifact"],["articafts","artifacts"],["artical","article"],["articals","articles"],["articat","artifact"],["articats","artifacts"],["artice","article"],["articel","article"],["articels","articles"],["artifac","artifact"],["artifacs","artifacts"],["artifcat","artifact"],["artifcats","artifacts"],["artifical","artificial"],["artifically","artificially"],["artihmetic","arithmetic"],["artilce","article"],["artillary","artillery"],["artuments","arguments"],["arugment","argument"],["arugments","arguments"],["arument","argument"],["aruments","arguments"],["arund","around"],["arvg","argv"],["asai","Asia"],["asain","Asian"],["asbolute","absolute"],["asbolutelly","absolutely"],["asbolutely","absolutely"],["asbtract","abstract"],["asbtracted","abstracted"],["asbtracter","abstracter"],["asbtracting","abstracting"],["asbtraction","abstraction"],["asbtractions","abstractions"],["asbtractly","abstractly"],["asbtractness","abstractness"],["asbtractor","abstractor"],["asbtracts","abstracts"],["ascconciated","associated"],["asceding","ascending"],["ascpect","aspect"],["ascpects","aspects"],["asdignment","assignment"],["asdignments","assignments"],["asemble","assemble"],["asembled","assembled"],["asembler","assembler"],["asemblers","assemblers"],["asembles","assembles"],["asemblies","assemblies"],["asembling","assembling"],["asembly","assembly"],["asendance","ascendance"],["asendancey","ascendancy"],["asendancy","ascendancy"],["asendence","ascendance"],["asendencey","ascendancy"],["asendency","ascendancy"],["asending","ascending"],["asent","ascent"],["aserted","asserted"],["asertion","assertion"],["asess","assess"],["asessment","assessment"],["asessments","assessments"],["asetic","ascetic"],["asfar","as far"],["asign","assign"],["asigned","assigned"],["asignee","assignee"],["asignees","assignees"],["asigning","assigning"],["asignmend","assignment"],["asignmends","assignments"],["asignment","assignment"],["asignor","assignor"],["asigns","assigns"],["asii","ascii"],["asisstant","assistant"],["asisstants","assistants"],["asistance","assistance"],["aske","ask"],["askes","asks"],["aslo","also"],["asnwer","answer"],["asnwered","answered"],["asnwerer","answerer"],["asnwerers","answerers"],["asnwering","answering"],["asnwers","answers"],["asny","any"],["asnychronoue","asynchronous"],["asociated","associated"],["asolute","absolute"],["asorbed","absorbed"],["aspected","expected"],["asphyxation","asphyxiation"],["assasin","assassin"],["assasinate","assassinate"],["assasinated","assassinated"],["assasinates","assassinates"],["assasination","assassination"],["assasinations","assassinations"],["assasined","assassinated"],["assasins","assassins"],["assassintation","assassination"],["asscciated","associated"],["assciated","associated"],["asscii","ASCII"],["asscociated","associated"],["asscoitaed","associated"],["assebly","assembly"],["assebmly","assembly"],["assembe","assemble"],["assembed","assembled"],["assembeld","assembled"],["assember","assembler"],["assemblys","assemblies"],["assemby","assembly"],["assemly","assembly"],["assemnly","assembly"],["assemple","assemble"],["assending","ascending"],["asser","assert"],["assersion","assertion"],["assertation","assertion"],["assertio","assertion"],["assertting","asserting"],["assesmenet","assessment"],["assesment","assessment"],["assesments","assessments"],["assessmant","assessment"],["assessmants","assessments"],["assgin","assign"],["assgined","assigned"],["assgining","assigning"],["assginment","assignment"],["assginments","assignments"],["assgins","assigns"],["assicate","associate"],["assicated","associated"],["assicates","associates"],["assicating","associating"],["assication","association"],["assications","associations"],["assiciate","associate"],["assiciated","associated"],["assiciates","associates"],["assiciation","association"],["assiciations","associations"],["asside","aside"],["assiged","assigned"],["assigend","assigned"],["assigh","assign"],["assighed","assigned"],["assighee","assignee"],["assighees","assignees"],["assigher","assigner"],["assighers","assigners"],["assighing","assigning"],["assighor","assignor"],["assighors","assignors"],["assighs","assigns"],["assiging","assigning"],["assigment","assignment"],["assigments","assignments"],["assigmnent","assignment"],["assignalble","assignable"],["assignement","assignment"],["assignements","assignments"],["assignemnt","assignment"],["assignemnts","assignments"],["assignemtn","assignment"],["assignend","assigned"],["assignenment","assignment"],["assignenmentes","assignments"],["assignenments","assignments"],["assignenmet","assignment"],["assignes","assigns"],["assignmenet","assignment"],["assignmens","assignments"],["assignmet","assignment"],["assignmetns","assignments"],["assignmnet","assignment"],["assignt","assign"],["assigntment","assignment"],["assihnment","assignment"],["assihnments","assignments"],["assime","assume"],["assined","assigned"],["assing","assign"],["assinged","assigned"],["assinging","assigning"],["assingled","assigned"],["assingment","assignment"],["assingned","assigned"],["assingnment","assignment"],["assings","assigns"],["assinment","assignment"],["assiocate","associate"],["assiocated","associated"],["assiocates","associates"],["assiocating","associating"],["assiocation","association"],["assiociate","associate"],["assiociated","associated"],["assiociates","associates"],["assiociating","associating"],["assiociation","association"],["assisance","assistance"],["assisant","assistant"],["assisants","assistants"],["assising","assisting"],["assisnate","assassinate"],["assistence","assistance"],["assistent","assistant"],["assit","assist"],["assitant","assistant"],["assition","assertion"],["assmbler","assembler"],["assmeble","assemble"],["assmebler","assembler"],["assmebles","assembles"],["assmebling","assembling"],["assmebly","assembly"],["assmelber","assembler"],["assmption","assumption"],["assmptions","assumptions"],["assmume","assume"],["assmumed","assumed"],["assmumes","assumes"],["assmuming","assuming"],["assmumption","assumption"],["assmumptions","assumptions"],["assoaiate","associate"],["assoaiated","associated"],["assoaiates","associates"],["assoaiating","associating"],["assoaiation","association"],["assoaiations","associations"],["assoaiative","associative"],["assocaited","associated"],["assocate","associate"],["assocated","associated"],["assocates","associates"],["assocating","associating"],["assocation","association"],["assocations","associations"],["assocciated","associated"],["assocciation","association"],["assocciations","associations"],["assocciative","associative"],["associatated","associated"],["associatd","associated"],["associatied","associated"],["associcate","associate"],["associcated","associated"],["associcates","associates"],["associcating","associating"],["associdated","associated"],["associeate","associate"],["associeated","associated"],["associeates","associates"],["associeating","associating"],["associeation","association"],["associeations","associations"],["associeted","associated"],["associte","associate"],["associted","associated"],["assocites","associates"],["associting","associating"],["assocition","association"],["associtions","associations"],["associtive","associative"],["associuated","associated"],["assoction","association"],["assoiated","associated"],["assoicate","associate"],["assoicated","associated"],["assoicates","associates"],["assoication","association"],["assoiciative","associative"],["assomption","assumption"],["assosciate","associate"],["assosciated","associated"],["assosciates","associates"],["assosciating","associating"],["assosiacition","association"],["assosiacitions","associations"],["assosiacted","associated"],["assosiate","associate"],["assosiated","associated"],["assosiates","associates"],["assosiating","associating"],["assosiation","association"],["assosiations","associations"],["assosiative","associative"],["assosication","assassination"],["assotiated","associated"],["assoziated","associated"],["asssassans","assassins"],["asssembler","assembler"],["asssembly","assembly"],["asssert","assert"],["asssertion","assertion"],["asssociate","associated"],["asssociated","associated"],["asssociation","association"],["asssume","assume"],["asssumes","assumes"],["asssuming","assuming"],["assualt","assault"],["assualted","assaulted"],["assuembly","assembly"],["assum","assume"],["assuma","assume"],["assumad","assumed"],["assumang","assuming"],["assumas","assumes"],["assumbe","assume"],["assumbed","assumed"],["assumbes","assumes"],["assumbing","assuming"],["assumend","assumed"],["assumking","assuming"],["assumme","assume"],["assummed","assumed"],["assummes","assumes"],["assumming","assuming"],["assumne","assume"],["assumned","assumed"],["assumnes","assumes"],["assumning","assuming"],["assumong","assuming"],["assumotion","assumption"],["assumotions","assumptions"],["assumpation","assumption"],["assumpted","assumed"],["assums","assumes"],["assumse","assumes"],["assumtion","assumption"],["assumtions","assumptions"],["assumtpion","assumption"],["assumtpions","assumptions"],["assumu","assume"],["assumud","assumed"],["assumue","assume"],["assumued","assumed"],["assumues","assumes"],["assumuing","assuming"],["assumung","assuming"],["assumuption","assumption"],["assumuptions","assumptions"],["assumus","assumes"],["assupmption","assumption"],["assuption","assumption"],["assuptions","assumptions"],["assurred","assured"],["assymetric","asymmetric"],["assymetrical","asymmetrical"],["assymetries","asymmetries"],["assymetry","asymmetry"],["assymmetric","asymmetric"],["assymmetrical","asymmetrical"],["assymmetries","asymmetries"],["assymmetry","asymmetry"],["assymptote","asymptote"],["assymptotes","asymptotes"],["assymptotic","asymptotic"],["assymptotically","asymptotically"],["assymthotic","asymptotic"],["assymtote","asymptote"],["assymtotes","asymptotes"],["assymtotic","asymptotic"],["assymtotically","asymptotically"],["asterices","asterisks"],["asteriod","asteroid"],["astethic","aesthetic"],["astethically","aesthetically"],["astethicism","aestheticism"],["astethics","aesthetics"],["asthetic","aesthetic"],["asthetical","aesthetical"],["asthetically","aesthetically"],["asthetics","aesthetics"],["astiimate","estimate"],["astiimation","estimation"],["asume","assume"],["asumed","assumed"],["asumes","assumes"],["asuming","assuming"],["asumption","assumption"],["asure","assure"],["aswell","as well"],["asychronize","asynchronize"],["asychronized","asynchronized"],["asychronous","asynchronous"],["asychronously","asynchronously"],["asycn","async"],["asycnhronous","asynchronous"],["asycnhronously","asynchronously"],["asycronous","asynchronous"],["asymetic","asymmetric"],["asymetric","asymmetric"],["asymetrical","asymmetrical"],["asymetricaly","asymmetrically"],["asymmeric","asymmetric"],["asynchnous","asynchronous"],["asynchonous","asynchronous"],["asynchonously","asynchronously"],["asynchornous","asynchronous"],["asynchoronous","asynchronous"],["asynchrnous","asynchronous"],["asynchrnously","asynchronously"],["asynchromous","asynchronous"],["asynchron","asynchronous"],["asynchroneously","asynchronously"],["asynchronious","asynchronous"],["asynchronlous","asynchronous"],["asynchrons","asynchronous"],["asynchroous","asynchronous"],["asynchrounous","asynchronous"],["asynchrounsly","asynchronously"],["asyncronous","asynchronous"],["asyncronously","asynchronously"],["asynnc","async"],["asynschron","asynchronous"],["atach","attach"],["atached","attached"],["ataching","attaching"],["atachment","attachment"],["atachments","attachments"],["atack","attack"],["atain","attain"],["atatch","attach"],["atatchable","attachable"],["atatched","attached"],["atatches","attaches"],["atatching","attaching"],["atatchment","attachment"],["atatchments","attachments"],["atempt","attempt"],["atempting","attempting"],["atempts","attempts"],["atendance","attendance"],["atended","attended"],["atendee","attendee"],["atends","attends"],["atention","attention"],["atheistical","atheistic"],["athenean","Athenian"],["atheneans","Athenians"],["ather","other"],["athiesm","atheism"],["athiest","atheist"],["athough","although"],["athron","athlon"],["athros","atheros"],["atleast","at least"],["atll","all"],["atmoic","atomic"],["atmoically","atomically"],["atomatically","automatically"],["atomical","atomic"],["atomicly","atomically"],["atomiticity","atomicity"],["atomtical","automatic"],["atomtically","automatically"],["atomticaly","automatically"],["atomticlly","automatically"],["atomticly","automatically"],["atorecovery","autorecovery"],["atorney","attorney"],["atquired","acquired"],["atribs","attribs"],["atribut","attribute"],["atribute","attribute"],["atributed","attributed"],["atributes","attributes"],["atrribute","attribute"],["atrributes","attributes"],["atrtribute","attribute"],["atrtributes","attributes"],["attaced","attached"],["attachd","attached"],["attachement","attachment"],["attachements","attachments"],["attachemnt","attachment"],["attachemnts","attachments"],["attachen","attach"],["attachged","attached"],["attachmant","attachment"],["attachmants","attachments"],["attachs","attaches"],["attachted","attached"],["attacs","attacks"],["attacthed","attached"],["attampt","attempt"],["attatch","attach"],["attatched","attached"],["attatches","attaches"],["attatching","attaching"],["attatchment","attachment"],["attatchments","attachments"],["attch","attach"],["attched","attached"],["attches","attaches"],["attching","attaching"],["attchment","attachment"],["attement","attempt"],["attemented","attempted"],["attementing","attempting"],["attements","attempts"],["attemp","attempt"],["attemped","attempted"],["attemping","attempting"],["attemppt","attempt"],["attemps","attempts"],["attemptes","attempts"],["attemptting","attempting"],["attemt","attempt"],["attemted","attempted"],["attemting","attempting"],["attemtp","attempt"],["attemtped","attempted"],["attemtping","attempting"],["attemtps","attempts"],["attemtpted","attempted"],["attemtpts","attempts"],["attemts","attempts"],["attendence","attendance"],["attendent","attendant"],["attendents","attendants"],["attened","attended"],["attennuation","attenuation"],["attension","attention"],["attented","attended"],["attentuation","attenuation"],["attentuations","attenuations"],["attepmpt","attempt"],["attept","attempt"],["attetntion","attention"],["attibute","attribute"],["attibuted","attributed"],["attibutes","attributes"],["attirbute","attribute"],["attirbutes","attributes"],["attiribute","attribute"],["attitide","attitude"],["attmept","attempt"],["attmpt","attempt"],["attnetion","attention"],["attosencond","attosecond"],["attosenconds","attoseconds"],["attrbiute","attribute"],["attrbute","attribute"],["attrbuted","attributed"],["attrbutes","attributes"],["attrbution","attribution"],["attrbutions","attributions"],["attribbute","attribute"],["attribiute","attribute"],["attribiutes","attributes"],["attribte","attribute"],["attribted","attributed"],["attribting","attributing"],["attribtue","attribute"],["attribtutes","attributes"],["attribude","attribute"],["attribue","attribute"],["attribues","attributes"],["attribuets","attributes"],["attribuite","attribute"],["attribuites","attributes"],["attribuition","attribution"],["attribure","attribute"],["attribured","attributed"],["attribures","attributes"],["attriburte","attribute"],["attriburted","attributed"],["attriburtes","attributes"],["attriburtion","attribution"],["attribut","attribute"],["attributei","attribute"],["attributen","attribute"],["attributess","attributes"],["attributred","attributed"],["attributs","attributes"],["attribye","attribute"],["attribyes","attributes"],["attribyte","attribute"],["attribytes","attributes"],["attriebute","attribute"],["attriebuted","attributed"],["attriebutes","attributes"],["attriebuting","attributing"],["attrirbute","attribute"],["attrirbuted","attributed"],["attrirbutes","attributes"],["attrirbution","attribution"],["attritube","attribute"],["attritubed","attributed"],["attritubes","attributes"],["attriubtes","attributes"],["attriubute","attribute"],["attrocities","atrocities"],["attrribute","attribute"],["attrributed","attributed"],["attrributes","attributes"],["attrribution","attribution"],["attrubite","attribute"],["attrubites","attributes"],["attrubte","attribute"],["attrubtes","attributes"],["attrubure","attribute"],["attrubures","attributes"],["attrubute","attribute"],["attrubutes","attributes"],["attrubyte","attribute"],["attrubytes","attributes"],["attruibute","attribute"],["attruibutes","attributes"],["atttached","attached"],["atttribute","attribute"],["atttributes","attributes"],["atuhenticate","authenticate"],["atuhenticated","authenticated"],["atuhenticates","authenticates"],["atuhenticating","authenticating"],["atuhentication","authentication"],["atuhenticator","authenticator"],["atuhenticators","authenticators"],["auccess","success"],["auccessive","successive"],["audeince","audience"],["audiance","audience"],["augest","August"],["augmnet","augment"],["augmnetation","augmentation"],["augmneted","augmented"],["augmneter","augmenter"],["augmneters","augmenters"],["augmnetes","augments"],["augmneting","augmenting"],["augmnets","augments"],["auguest","august"],["auhtor","author"],["auhtors","authors"],["aunthenticate","authenticate"],["aunthenticated","authenticated"],["aunthenticates","authenticates"],["aunthenticating","authenticating"],["aunthentication","authentication"],["aunthenticator","authenticator"],["aunthenticators","authenticators"],["auospacing","autospacing"],["auot","auto"],["auotmatic","automatic"],["auromated","automated"],["austrailia","Australia"],["austrailian","Australian"],["Australien","Australian"],["Austrlaian","Australian"],["autasave","autosave"],["autasaves","autosaves"],["autenticate","authenticate"],["autenticated","authenticated"],["autenticates","authenticates"],["autenticating","authenticating"],["autentication","authentication"],["autenticator","authenticator"],["autenticators","authenticators"],["authecate","authenticate"],["authecated","authenticated"],["authecates","authenticates"],["authecating","authenticating"],["authecation","authentication"],["authecator","authenticator"],["authecators","authenticators"],["authenaticate","authenticate"],["authenaticated","authenticated"],["authenaticates","authenticates"],["authenaticating","authenticating"],["authenatication","authentication"],["authenaticator","authenticator"],["authenaticators","authenticators"],["authencate","authenticate"],["authencated","authenticated"],["authencates","authenticates"],["authencating","authenticating"],["authencation","authentication"],["authencator","authenticator"],["authencators","authenticators"],["authenciate","authenticate"],["authenciated","authenticated"],["authenciates","authenticates"],["authenciating","authenticating"],["authenciation","authentication"],["authenciator","authenticator"],["authenciators","authenticators"],["authencicate","authenticate"],["authencicated","authenticated"],["authencicates","authenticates"],["authencicating","authenticating"],["authencication","authentication"],["authencicator","authenticator"],["authencicators","authenticators"],["authencity","authenticity"],["authencticate","authenticate"],["authencticated","authenticated"],["authencticates","authenticates"],["authencticating","authenticating"],["authenctication","authentication"],["authencticator","authenticator"],["authencticators","authenticators"],["authendicate","authenticate"],["authendicated","authenticated"],["authendicates","authenticates"],["authendicating","authenticating"],["authendication","authentication"],["authendicator","authenticator"],["authendicators","authenticators"],["authenenticate","authenticate"],["authenenticated","authenticated"],["authenenticates","authenticates"],["authenenticating","authenticating"],["authenentication","authentication"],["authenenticator","authenticator"],["authenenticators","authenticators"],["authenfie","authenticate"],["authenfied","authenticated"],["authenfies","authenticates"],["authenfiing","authenticating"],["authenfiion","authentication"],["authenfior","authenticator"],["authenfiors","authenticators"],["authenicae","authenticate"],["authenicaed","authenticated"],["authenicaes","authenticates"],["authenicaing","authenticating"],["authenicaion","authentication"],["authenicaor","authenticator"],["authenicaors","authenticators"],["authenicate","authenticate"],["authenicated","authenticated"],["authenicates","authenticates"],["authenicating","authenticating"],["authenication","authentication"],["authenicator","authenticator"],["authenicators","authenticators"],["authenificate","authenticate"],["authenificated","authenticated"],["authenificates","authenticates"],["authenificating","authenticating"],["authenification","authentication"],["authenificator","authenticator"],["authenificators","authenticators"],["authenitcate","authenticate"],["authenitcated","authenticated"],["authenitcates","authenticates"],["authenitcating","authenticating"],["authenitcation","authentication"],["authenitcator","authenticator"],["authenitcators","authenticators"],["autheniticate","authenticate"],["autheniticated","authenticated"],["autheniticates","authenticates"],["autheniticating","authenticating"],["authenitication","authentication"],["autheniticator","authenticator"],["autheniticators","authenticators"],["authenricate","authenticate"],["authenricated","authenticated"],["authenricates","authenticates"],["authenricating","authenticating"],["authenrication","authentication"],["authenricator","authenticator"],["authenricators","authenticators"],["authentation","authentication"],["authentcated","authenticated"],["authentciate","authenticate"],["authentciated","authenticated"],["authentciates","authenticates"],["authentciating","authenticating"],["authentciation","authentication"],["authentciator","authenticator"],["authentciators","authenticators"],["authenticaiton","authentication"],["authenticateion","authentication"],["authentiction","authentication"],["authentification","authentication"],["auther","author"],["autherisation","authorisation"],["autherise","authorise"],["autherization","authorization"],["autherize","authorize"],["authers","authors"],["authethenticate","authenticate"],["authethenticated","authenticated"],["authethenticates","authenticates"],["authethenticating","authenticating"],["authethentication","authentication"],["authethenticator","authenticator"],["authethenticators","authenticators"],["authethicate","authenticate"],["authethicated","authenticated"],["authethicates","authenticates"],["authethicating","authenticating"],["authethication","authentication"],["authethicator","authenticator"],["authethicators","authenticators"],["autheticate","authenticate"],["autheticated","authenticated"],["autheticates","authenticates"],["autheticating","authenticating"],["authetication","authentication"],["autheticator","authenticator"],["autheticators","authenticators"],["authetnicate","authenticate"],["authetnicated","authenticated"],["authetnicates","authenticates"],["authetnicating","authenticating"],["authetnication","authentication"],["authetnicator","authenticator"],["authetnicators","authenticators"],["authetnticate","authenticate"],["authetnticated","authenticated"],["authetnticates","authenticates"],["authetnticating","authenticating"],["authetntication","authentication"],["authetnticator","authenticator"],["authetnticators","authenticators"],["authobiographic","autobiographic"],["authobiography","autobiography"],["authoer","author"],["authoratative","authoritative"],["authorative","authoritative"],["authorded","authored"],["authorites","authorities"],["authorithy","authority"],["authoritiers","authorities"],["authorititive","authoritative"],["authoritive","authoritative"],["authorizeed","authorized"],["authror","author"],["authrored","authored"],["authrorisation","authorisation"],["authrorities","authorities"],["authrorization","authorization"],["authrors","authors"],["autimatic","automatic"],["autimatically","automatically"],["autmatically","automatically"],["auto-dependancies","auto-dependencies"],["auto-destrcut","auto-destruct"],["auto-genrated","auto-generated"],["auto-genratet","auto-generated"],["auto-genration","auto-generation"],["auto-negatiotiation","auto-negotiation"],["auto-negatiotiations","auto-negotiations"],["auto-negoatiation","auto-negotiation"],["auto-negoatiations","auto-negotiations"],["auto-negoation","auto-negotiation"],["auto-negoations","auto-negotiations"],["auto-negociation","auto-negotiation"],["auto-negociations","auto-negotiations"],["auto-negogtiation","auto-negotiation"],["auto-negogtiations","auto-negotiations"],["auto-negoitation","auto-negotiation"],["auto-negoitations","auto-negotiations"],["auto-negoptionsotiation","auto-negotiation"],["auto-negoptionsotiations","auto-negotiations"],["auto-negosiation","auto-negotiation"],["auto-negosiations","auto-negotiations"],["auto-negotaiation","auto-negotiation"],["auto-negotaiations","auto-negotiations"],["auto-negotaition","auto-negotiation"],["auto-negotaitions","auto-negotiations"],["auto-negotatiation","auto-negotiation"],["auto-negotatiations","auto-negotiations"],["auto-negotation","auto-negotiation"],["auto-negotations","auto-negotiations"],["auto-negothiation","auto-negotiation"],["auto-negothiations","auto-negotiations"],["auto-negotication","auto-negotiation"],["auto-negotications","auto-negotiations"],["auto-negotioation","auto-negotiation"],["auto-negotioations","auto-negotiations"],["auto-negotion","auto-negotiation"],["auto-negotionation","auto-negotiation"],["auto-negotionations","auto-negotiations"],["auto-negotions","auto-negotiations"],["auto-negotiotation","auto-negotiation"],["auto-negotiotations","auto-negotiations"],["auto-negotitaion","auto-negotiation"],["auto-negotitaions","auto-negotiations"],["auto-negotitation","auto-negotiation"],["auto-negotitations","auto-negotiations"],["auto-negotition","auto-negotiation"],["auto-negotitions","auto-negotiations"],["auto-negoziation","auto-negotiation"],["auto-negoziations","auto-negotiations"],["auto-realease","auto-release"],["auto-realeased","auto-released"],["autochtonous","autochthonous"],["autocmplete","autocomplete"],["autocmpleted","autocompleted"],["autocmpletes","autocompletes"],["autocmpleting","autocompleting"],["autocommiting","autocommitting"],["autoconplete","autocomplete"],["autoconpleted","autocompleted"],["autoconpletes","autocompletes"],["autoconpleting","autocompleting"],["autoconpletion","autocompletion"],["autocoomit","autocommit"],["autoctonous","autochthonous"],["autoeselect","autoselect"],["autofilt","autofilter"],["autofomat","autoformat"],["autoformating","autoformatting"],["autogenrated","autogenerated"],["autogenratet","autogenerated"],["autogenration","autogeneration"],["autogroping","autogrouping"],["autohorized","authorized"],["autoincrememnt","autoincrement"],["autoincrementive","autoincrement"],["automaatically","automatically"],["automagicaly","automagically"],["automaitc","automatic"],["automaitcally","automatically"],["automanifactured","automanufactured"],["automatcally","automatically"],["automatially","automatically"],["automaticallly","automatically"],["automaticaly","automatically"],["automaticalyl","automatically"],["automaticalyy","automatically"],["automaticlly","automatically"],["automaticly","automatically"],["autometic","automatic"],["autometically","automatically"],["automibile","automobile"],["automical","automatic"],["automically","automatically"],["automicaly","automatically"],["automicatilly","automatically"],["automiclly","automatically"],["automicly","automatically"],["automonomous","autonomous"],["automtic","automatic"],["automtically","automatically"],["autonagotiation","autonegotiation"],["autonegatiotiation","autonegotiation"],["autonegatiotiations","autonegotiations"],["autonegoatiation","autonegotiation"],["autonegoatiations","autonegotiations"],["autonegoation","autonegotiation"],["autonegoations","autonegotiations"],["autonegociated","autonegotiated"],["autonegociation","autonegotiation"],["autonegociations","autonegotiations"],["autonegogtiation","autonegotiation"],["autonegogtiations","autonegotiations"],["autonegoitation","autonegotiation"],["autonegoitations","autonegotiations"],["autonegoptionsotiation","autonegotiation"],["autonegoptionsotiations","autonegotiations"],["autonegosiation","autonegotiation"],["autonegosiations","autonegotiations"],["autonegotaiation","autonegotiation"],["autonegotaiations","autonegotiations"],["autonegotaition","autonegotiation"],["autonegotaitions","autonegotiations"],["autonegotatiation","autonegotiation"],["autonegotatiations","autonegotiations"],["autonegotation","autonegotiation"],["autonegotations","autonegotiations"],["autonegothiation","autonegotiation"],["autonegothiations","autonegotiations"],["autonegotication","autonegotiation"],["autonegotications","autonegotiations"],["autonegotioation","autonegotiation"],["autonegotioations","autonegotiations"],["autonegotion","autonegotiation"],["autonegotionation","autonegotiation"],["autonegotionations","autonegotiations"],["autonegotions","autonegotiations"],["autonegotiotation","autonegotiation"],["autonegotiotations","autonegotiations"],["autonegotitaion","autonegotiation"],["autonegotitaions","autonegotiations"],["autonegotitation","autonegotiation"],["autonegotitations","autonegotiations"],["autonegotition","autonegotiation"],["autonegotitions","autonegotiations"],["autonegoziation","autonegotiation"],["autonegoziations","autonegotiations"],["autoneogotiation","autonegotiation"],["autoneotiation","autonegotiation"],["autonogotiation","autonegotiation"],["autonymous","autonomous"],["autoonf","autoconf"],["autopsec","autospec"],["autor","author"],["autorealease","autorelease"],["autorisation","authorisation"],["autoritative","authoritative"],["autority","authority"],["autorization","authorization"],["autoropeat","autorepeat"],["autors","authors"],["autosae","autosave"],["autosavegs","autosaves"],["autosaveperodical","autosaveperiodical"],["autosence","autosense"],["autum","autumn"],["auxialiary","auxiliary"],["auxilaries","auxiliaries"],["auxilary","auxiliary"],["auxileries","auxiliaries"],["auxilery","auxiliary"],["auxiliar","auxiliary"],["auxillaries","auxiliaries"],["auxillary","auxiliary"],["auxilleries","auxiliaries"],["auxillery","auxiliary"],["auxilliaries","auxiliaries"],["auxilliary","auxiliary"],["auxiluary","auxiliary"],["auxliliary","auxiliary"],["avaiable","available"],["avaialable","available"],["avaialbale","available"],["avaialbe","available"],["avaialbel","available"],["avaialbility","availability"],["avaialble","available"],["avaiblable","available"],["avaible","available"],["avaiiability","availability"],["avaiiable","available"],["avaiibility","availability"],["avaiible","available"],["avaiilable","available"],["availaable","available"],["availabable","available"],["availabal","available"],["availabale","available"],["availabality","availability"],["availabble","available"],["availabe","available"],["availabed","available"],["availabel","available"],["availabele","available"],["availabelity","availability"],["availabillity","availability"],["availabilty","availability"],["availabke","available"],["availabl","available"],["availabled","available"],["availablen","available"],["availablity","availability"],["availabyl","available"],["availaiable","available"],["availaibility","availability"],["availaible","available"],["availailability","availability"],["availaility","availability"],["availalable","available"],["availalbe","available"],["availalble","available"],["availale","available"],["availaliable","available"],["availality","availability"],["availanle","available"],["availavble","available"],["availavility","availability"],["availavle","available"],["availbable","available"],["availbale","available"],["availbe","available"],["availble","available"],["availeable","available"],["availebilities","availabilities"],["availebility","availability"],["availeble","available"],["availiable","available"],["availibility","availability"],["availibilty","availability"],["availible","available"],["availlable","available"],["avalable","available"],["avalaible","available"],["avalance","avalanche"],["avaliable","available"],["avalibale","available"],["avalible","available"],["avaloable","available"],["avaluate","evaluate"],["avaluated","evaluated"],["avaluates","evaluates"],["avaluating","evaluating"],["avance","advance"],["avanced","advanced"],["avances","advances"],["avancing","advancing"],["avaoid","avoid"],["avaoidable","avoidable"],["avaoided","avoided"],["avarage","average"],["avarageing","averaging"],["avarege","average"],["avation","aviation"],["avcoid","avoid"],["avcoids","avoids"],["avdisories","advisories"],["avdisoriyes","advisories"],["avdisory","advisory"],["avengence","a vengeance"],["averageed","averaged"],["averagine","averaging"],["averload","overload"],["averloaded","overloaded"],["averloads","overloads"],["avertising","advertising"],["avgerage","average"],["aviable","available"],["avialable","available"],["avilability","availability"],["avilable","available"],["aviod","avoid"],["avioded","avoided"],["avioding","avoiding"],["aviods","avoids"],["avisories","advisories"],["avisoriyes","advisories"],["avisory","advisory"],["avod","avoid"],["avoded","avoided"],["avoding","avoiding"],["avods","avoids"],["avoidence","avoidance"],["avoind","avoid"],["avoinded","avoided"],["avoinding","avoiding"],["avoinds","avoids"],["avriable","variable"],["avriables","variables"],["avriant","variant"],["avriants","variants"],["avtive","active"],["awared","awarded"],["aweful","awful"],["awefully","awfully"],["awkard","awkward"],["awming","awning"],["awmings","awnings"],["awnser","answer"],["awnsered","answered"],["awnsers","answers"],["awoid","avoid"],["awsome","awesome"],["awya","away"],["axises","axes"],["axissymmetric","axisymmetric"],["axix","axis"],["axixsymmetric","axisymmetric"],["axpressed","expressed"],["aysnc","async"],["ayways","always"],["bacause","because"],["baceause","because"],["bacground","background"],["bacic","basic"],["backards","backwards"],["backbround","background"],["backbrounds","backgrounds"],["backedn","backend"],["backedns","backends"],["backgorund","background"],["backgorunds","backgrounds"],["backgound","background"],["backgounds","backgrounds"],["backgournd","background"],["backgournds","backgrounds"],["backgrond","background"],["backgronds","backgrounds"],["backgroound","background"],["backgroounds","backgrounds"],["backgroud","background"],["backgroudn","background"],["backgroudns","backgrounds"],["backgrouds","backgrounds"],["backgroun","background"],["backgroung","background"],["backgroungs","backgrounds"],["backgrouns","backgrounds"],["backgrount","background"],["backgrounts","backgrounds"],["backgrouund","background"],["backgrund","background"],["backgrunds","backgrounds"],["backgruond","background"],["backgruonds","backgrounds"],["backlght","backlight"],["backlghting","backlighting"],["backlghts","backlights"],["backned","backend"],["backneds","backends"],["backound","background"],["backounds","backgrounds"],["backpsace","backspace"],["backrefence","backreference"],["backrgound","background"],["backrgounds","backgrounds"],["backround","background"],["backrounds","backgrounds"],["backsapce","backspace"],["backslase","backslash"],["backslases","backslashes"],["backslashs","backslashes"],["backwad","backwards"],["backwardss","backwards"],["backware","backward"],["backwark","backward"],["backwrad","backward"],["bactracking","backtracking"],["bacup","backup"],["baed","based"],["bage","bag"],["bahaving","behaving"],["bahavior","behavior"],["bahavioral","behavioral"],["bahaviors","behaviors"],["bahaviour","behaviour"],["baisc","basic"],["baised","raised"],["bakc","back"],["bakcrefs","backrefs"],["bakends","backends"],["bakground","background"],["bakgrounds","backgrounds"],["bakup","backup"],["bakups","backups"],["bakward","backward"],["bakwards","backwards"],["balacing","balancing"],["balence","balance"],["baloon","balloon"],["baloons","balloons"],["balse","false"],["banannas","bananas"],["bandwdith","bandwidth"],["bandwdiths","bandwidths"],["bandwidht","bandwidth"],["bandwidthm","bandwidth"],["bandwitdh","bandwidth"],["bandwith","bandwidth"],["bankrupcy","bankruptcy"],["banlance","balance"],["banruptcy","bankruptcy"],["barbedos","barbados"],["bariier","barrier"],["barnch","branch"],["barnched","branched"],["barncher","brancher"],["barnchers","branchers"],["barnches","branches"],["barnching","branching"],["barriors","barriers"],["barrriers","barriers"],["barycentic","barycentric"],["basci","basic"],["bascially","basically"],["bascktrack","backtrack"],["basf","base"],["basicallly","basically"],["basicaly","basically"],["basiclly","basically"],["basicly","basically"],["basline","baseline"],["baslines","baselines"],["bassic","basic"],["bassically","basically"],["bastract","abstract"],["bastracted","abstracted"],["bastracter","abstracter"],["bastracting","abstracting"],["bastraction","abstraction"],["bastractions","abstractions"],["bastractly","abstractly"],["bastractness","abstractness"],["bastractor","abstractor"],["bastracts","abstracts"],["bateries","batteries"],["batery","battery"],["battaries","batteries"],["battary","battery"],["bbefore","before"],["bboolean","boolean"],["bbooleans","booleans"],["bcak","back"],["bcause","because"],["beable","be able"],["beacaon","beacon"],["beacause","because"],["beachead","beachhead"],["beacuse","because"],["beaon","beacon"],["bearword","bareword"],["beastiality","bestiality"],["beatiful","beautiful"],["beauracracy","bureaucracy"],["beaurocracy","bureaucracy"],["beaurocratic","bureaucratic"],["beause","because"],["beauti","beauty"],["beautiy","beauty"],["beautyfied","beautified"],["beautyfull","beautiful"],["beaviour","behaviour"],["bebongs","belongs"],["becaause","because"],["becacdd","because"],["becahse","because"],["becamae","became"],["becaouse","because"],["becase","because"],["becasue","because"],["becasuse","because"],["becauae","because"],["becauce","because"],["becaue","because"],["becaues","because"],["becaus","because"],["becausee","because"],["becauseq","because"],["becauses","because"],["becausw","because"],["beccause","because"],["bechmark","benchmark"],["bechmarked","benchmarked"],["bechmarking","benchmarking"],["bechmarks","benchmarks"],["becoem","become"],["becomeing","becoming"],["becomme","become"],["becommes","becomes"],["becomming","becoming"],["becoms","becomes"],["becouse","because"],["becoz","because"],["bector","vector"],["bectors","vectors"],["becuase","because"],["becuse","because"],["becxause","because"],["bedore","before"],["beeings","beings"],["beetween","between"],["beetwen","between"],["beffer","buffer"],["befoer","before"],["befor","before"],["beforehands","beforehand"],["beforere","before"],["befores","before"],["beforing","before"],["befure","before"],["begginer","beginner"],["begginers","beginners"],["beggingin","beginning"],["begginging","beginning"],["begginig","beginning"],["beggining","beginning"],["begginings","beginnings"],["begginnig","beginning"],["begginning","beginning"],["beggins","begins"],["beghavior","behavior"],["beghaviors","behaviors"],["begiinning","beginning"],["beginer","beginner"],["begines","begins"],["begining","beginning"],["beginining","beginning"],["begininings","beginnings"],["begininng","beginning"],["begininngs","beginnings"],["beginn","begin"],["beginnig","beginning"],["beginnin","beginning"],["beginnning","beginning"],["beginnnings","beginnings"],["behabior","behavior"],["behabiors","behaviors"],["behabiour","behaviour"],["behabiours","behaviours"],["behabviour","behaviour"],["behaivior","behavior"],["behaiviour","behaviour"],["behaiviuor","behaviour"],["behaivor","behavior"],["behaivors","behaviors"],["behaivour","behaviour"],["behaivoural","behavioural"],["behaivours","behaviours"],["behavioutr","behaviour"],["behaviro","behavior"],["behaviuor","behaviour"],["behavoir","behavior"],["behavoirs","behaviors"],["behavour","behaviour"],["behavriour","behaviour"],["behavriours","behaviours"],["behinde","behind"],["behvaiour","behaviour"],["behviour","behaviour"],["beigin","begin"],["beiginning","beginning"],["beind","behind"],["beinning","beginning"],["bejond","beyond"],["beleagured","beleaguered"],["beleif","belief"],["beleifable","believable"],["beleifed","believed"],["beleifing","believing"],["beleivable","believable"],["beleive","believe"],["beleived","believed"],["beleives","believes"],["beleiving","believing"],["beliefable","believable"],["beliefed","believed"],["beliefing","believing"],["beligum","belgium"],["beling","belong"],["belivable","believable"],["belive","believe"],["beliveable","believable"],["beliveably","believably"],["beliveble","believable"],["belivebly","believably"],["beliving","believing"],["belligerant","belligerent"],["bellweather","bellwether"],["belog","belong"],["beloging","belonging"],["belogs","belongs"],["belond","belong"],["beloning","belonging"],["belown","belong"],["belwo","below"],["bemusemnt","bemusement"],["benchamarked","benchmarked"],["benchamarking","benchmarking"],["benchamrk","benchmark"],["benchamrked","benchmarked"],["benchamrking","benchmarking"],["benchamrks","benchmarks"],["benchmkar","benchmark"],["benchmkared","benchmarked"],["benchmkaring","benchmarking"],["benchmkars","benchmarks"],["benchs","benches"],["benckmark","benchmark"],["benckmarked","benchmarked"],["benckmarking","benchmarking"],["benckmarks","benchmarks"],["benechmark","benchmark"],["benechmarked","benchmarked"],["benechmarking","benchmarking"],["benechmarks","benchmarks"],["beneeth","beneath"],["benefical","beneficial"],["beneficary","beneficiary"],["benefied","benefited"],["benefitial","beneficial"],["beneits","benefits"],["benetifs","benefits"],["beng","being"],["benhind","behind"],["benificial","beneficial"],["benifit","benefit"],["benifite","benefit"],["benifited","benefited"],["benifitial","beneficial"],["benifits","benefits"],["benig","being"],["beond","beyond"],["berforming","performing"],["bergamont","bergamot"],["Berkley","Berkeley"],["Bernouilli","Bernoulli"],["berween","between"],["besed","based"],["beseige","besiege"],["beseiged","besieged"],["beseiging","besieging"],["besure","be sure"],["beteeen","between"],["beteen","between"],["beter","better"],["beteween","between"],["betrween","between"],["bettern","better"],["bettween","between"],["betwean","between"],["betwee","between"],["betweed","between"],["betweeen","between"],["betweem","between"],["betweend","between"],["betweeness","betweenness"],["betweent","between"],["betwen","between"],["betwene","between"],["betwenn","between"],["betwern","between"],["betwween","between"],["beucase","because"],["beuracracy","bureaucracy"],["beutification","beautification"],["beutiful","beautiful"],["beutifully","beautifully"],["bever","never"],["bevore","before"],["bevorehand","beforehand"],["bevorhand","beforehand"],["beweeen","between"],["beween","between"],["bewteen","between"],["bewteeness","betweenness"],["beyone","beyond"],["beyong","beyond"],["beyound","beyond"],["bffer","buffer"],["bginning","beginning"],["bi-langual","bi-lingual"],["bianries","binaries"],["bianry","binary"],["biappicative","biapplicative"],["biddings","bidding"],["bidimentionnal","bidimensional"],["bidning","binding"],["bidnings","bindings"],["bigallic","bigalloc"],["bigining","beginning"],["biginning","beginning"],["biinary","binary"],["bilangual","bilingual"],["bilateraly","bilaterally"],["billingualism","bilingualism"],["billon","billion"],["bimask","bitmask"],["bimillenia","bimillennia"],["bimillenial","bimillennial"],["bimillenium","bimillennium"],["bimontly","bimonthly"],["binairy","binary"],["binanary","binary"],["binar","binary"],["binay","binary"],["bindins","bindings"],["binidng","binding"],["binominal","binomial"],["binraries","binaries"],["binrary","binary"],["bion","bio"],["birght","bright"],["birghten","brighten"],["birghter","brighter"],["birghtest","brightest"],["birghtness","brightness"],["biridectionality","bidirectionality"],["bisct","bisect"],["bisines","business"],["bisiness","business"],["bisnes","business"],["bisness","business"],["bistream","bitstream"],["bisunes","business"],["bisuness","business"],["bitamps","bitmaps"],["bitap","bitmap"],["bitfileld","bitfield"],["bitfilelds","bitfields"],["bitis","bits"],["bitmast","bitmask"],["bitnaps","bitmaps"],["bitwise-orring","bitwise-oring"],["bizare","bizarre"],["bizarely","bizarrely"],["bizzare","bizarre"],["bject","object"],["bjects","objects"],["blackslashes","backslashes"],["blaclist","blacklist"],["blaim","blame"],["blaimed","blamed"],["blanace","balance"],["blancked","blanked"],["blatent","blatant"],["blatently","blatantly"],["blbos","blobs"],["blcok","block"],["blcoks","blocks"],["bleading","bleeding"],["blessd","blessed"],["blessure","blessing"],["bletooth","bluetooth"],["bleutooth","bluetooth"],["blindy","blindly"],["Blitzkreig","Blitzkrieg"],["bload","bloat"],["bloaded","bloated"],["blocack","blockack"],["bloccks","blocks"],["blocekd","blocked"],["blockhain","blockchain"],["blockhains","blockchains"],["blockin","blocking"],["blockse","blocks"],["bloddy","bloody"],["blodk","block"],["bloek","bloke"],["bloekes","blokes"],["bloeks","blokes"],["bloekss","blokes"],["blohted","bloated"],["blokcer","blocker"],["blokchain","blockchain"],["blokchains","blockchains"],["blokcing","blocking"],["bloked","blocked"],["bloker","blocker"],["bloking","blocking"],["blong","belong"],["blonged","belonged"],["blonging","belonging"],["blongs","belongs"],["bloock","block"],["bloocks","blocks"],["bloted","bloated"],["bluestooth","bluetooth"],["bluetooh","bluetooth"],["bluetoot","bluetooth"],["bluetootn","bluetooth"],["blured","blurred"],["blutooth","bluetooth"],["bnecause","because"],["boads","boards"],["boardcast","broadcast"],["bocome","become"],["boddy","body"],["bodiese","bodies"],["bodydbuilder","bodybuilder"],["boelean","boolean"],["boeleans","booleans"],["boffer","buffer"],["bofore","before"],["bofy","body"],["boggus","bogus"],["bogos","bogus"],["bointer","pointer"],["bolean","boolean"],["boleen","boolean"],["bolor","color"],["bombardement","bombardment"],["bombarment","bombardment"],["bondary","boundary"],["Bonnano","Bonanno"],["bood","boot"],["bookeeping","bookkeeping"],["bookkeeing","bookkeeping"],["bookkeeiping","bookkeeping"],["bookkepp","bookkeep"],["bookmakr","bookmark"],["bookmar","bookmark"],["booleam","boolean"],["booleamn","boolean"],["booleamns","booleans"],["booleams","booleans"],["booleanss","booleans"],["booleen","boolean"],["booleens","booleans"],["boolen","boolean"],["boolens","booleans"],["booltloader","bootloader"],["booltloaders","bootloaders"],["boomark","bookmark"],["boomarks","bookmarks"],["boook","book"],["booolean","boolean"],["boooleans","booleans"],["booshelf","bookshelf"],["booshelves","bookshelves"],["boostrap","bootstrap"],["boostrapped","bootstrapped"],["boostrapping","bootstrapping"],["boostraps","bootstraps"],["booteek","boutique"],["bootlaoder","bootloader"],["bootlaoders","bootloaders"],["bootoloader","bootloader"],["bootom","bottom"],["bootraping","bootstrapping"],["bootsram","bootram"],["bootsrap","bootstrap"],["bootstap","bootstrap"],["bootstapped","bootstrapped"],["bootstapping","bootstrapping"],["bootstaps","bootstraps"],["booundaries","boundaries"],["booundary","boundary"],["boquet","bouquet"],["borad","board"],["boradcast","broadcast"],["bording","boarding"],["bordreline","borderline"],["bordrelines","borderlines"],["borgwasy","bourgeoisie"],["borke","broke"],["borken","broken"],["borow","borrow"],["borwser","browsers"],["borwsers","browsers"],["bothe","both"],["boths","both"],["botifies","notifies"],["bottem","bottom"],["bottlenck","bottleneck"],["bottlencks","bottlenecks"],["bottlenect","bottleneck"],["bottlenects","bottlenecks"],["bottlneck","bottleneck"],["bottlnecks","bottlenecks"],["bottomborde","bottomborder"],["bottome","bottom"],["bottomn","bottom"],["bottonm","bottom"],["botttom","bottom"],["bouce","bounce"],["bouces","bounces"],["boudaries","boundaries"],["boudary","boundary"],["bouding","bounding"],["boudnaries","boundaries"],["boudnary","boundary"],["bouds","bounds"],["bouind","bound"],["bouinded","bounded"],["bouinding","bounding"],["bouinds","bounds"],["boun","bound"],["bounaaries","boundaries"],["bounaary","boundary"],["bounad","bound"],["bounadaries","boundaries"],["bounadary","boundary"],["bounaded","bounded"],["bounading","bounding"],["bounadries","boundaries"],["bounadry","boundary"],["bounads","bounds"],["bounardies","boundaries"],["bounardy","boundary"],["bounaries","boundaries"],["bounary","boundary"],["bounbdaries","boundaries"],["bounbdary","boundary"],["boundares","boundaries"],["boundaryi","boundary"],["boundarys","boundaries"],["bounday","boundary"],["boundays","boundaries"],["bounderies","boundaries"],["boundery","boundary"],["boundig","bounding"],["boundimg","bounding"],["boundin","bounding"],["boundrary","boundary"],["boundries","boundaries"],["boundry","boundary"],["bounduaries","boundaries"],["bouned","bounded"],["boungaries","boundaries"],["boungary","boundary"],["boungin","bounding"],["boungind","bounding"],["bounhdaries","boundaries"],["bounhdary","boundary"],["bounidng","bounding"],["bouning","bounding"],["bounnd","bound"],["bounndaries","boundaries"],["bounndary","boundary"],["bounnded","bounded"],["bounnding","bounding"],["bounnds","bounds"],["bounradies","boundaries"],["bounrady","boundary"],["bounraies","boundaries"],["bounraries","boundaries"],["bounrary","boundary"],["bounray","boundary"],["bouns","bounds"],["bounsaries","boundaries"],["bounsary","boundary"],["bounsd","bounds"],["bount","bound"],["bountries","boundaries"],["bountry","boundary"],["bounudaries","boundaries"],["bounudary","boundary"],["bounus","bonus"],["bouqet","bouquet"],["bouund","bound"],["bouunded","bounded"],["bouunding","bounding"],["bouunds","bounds"],["bouy","buoy"],["bouyancy","buoyancy"],["bouyant","buoyant"],["boyant","buoyant"],["boycot","boycott"],["bracese","braces"],["brach","branch"],["brackeds","brackets"],["bracketwith","bracket with"],["brackground","background"],["bradcast","broadcast"],["brakpoint","breakpoint"],["brakpoints","breakpoints"],["branchces","branches"],["brancheswith","branches with"],["branchs","branches"],["branchsi","branches"],["branck","branch"],["branckes","branches"],["brancket","bracket"],["branckets","brackets"],["brane","brain"],["braodcast","broadcast"],["braodcasted","broadcasted"],["braodcasts","broadcasts"],["Brasillian","Brazilian"],["brazeer","brassiere"],["brazillian","Brazilian"],["breakes","breaks"],["breakthough","breakthrough"],["breakthroughts","breakthroughs"],["breakthruogh","breakthrough"],["breakthruoghs","breakthroughs"],["breal","break"],["breefly","briefly"],["brefore","before"],["breif","brief"],["breifly","briefly"],["brekpoint","breakpoint"],["brekpoints","breakpoints"],["breshed","brushed"],["breshes","brushes"],["breshing","brushing"],["brethen","brethren"],["bretheren","brethren"],["brfore","before"],["bridg","bridge"],["brievely","briefly"],["brievety","brevity"],["brigde","bridge"],["brige","bridge"],["briges","bridges"],["brighness","brightness"],["brightnesss","brightness"],["brigth","bright"],["brigthnes","brightness"],["brigthness","brightness"],["briliant","brilliant"],["brilinear","bilinear"],["brillant","brilliant"],["brimestone","brimstone"],["bringin","bringing"],["bringtofont","bringtofront"],["brite","bright"],["briten","brighten"],["britened","brightened"],["britener","brightener"],["briteners","brighteners"],["britenes","brightenes"],["britening","brightening"],["briter","brighter"],["Britian","Britain"],["Brittish","British"],["brnach","branch"],["brnaches","branches"],["broacast","broadcast"],["broacasted","broadcast"],["broacasting","broadcasting"],["broacasts","broadcasts"],["broadacasting","broadcasting"],["broadcas","broadcast"],["broadcase","broadcast"],["broadcasti","broadcast"],["broadcat","broadcast"],["broady","broadly"],["broardcast","broadcast"],["broblematic","problematic"],["brocher","brochure"],["brocken","broken"],["brockend","broken"],["brockened","broken"],["brocolee","broccoli"],["brodcast","broadcast"],["broked","broken"],["brokem","broken"],["brokend","broken"],["brokened","broken"],["brokeness","brokenness"],["bronken","broken"],["brosable","browsable"],["broser","browser"],["brosers","browsers"],["brosing","browsing"],["broswable","browsable"],["broswe","browse"],["broswed","browsed"],["broswer","browser"],["broswers","browsers"],["broswing","browsing"],["brower","browser"],["browers","browsers"],["browing","browsing"],["browseable","browsable"],["browswable","browsable"],["browswe","browse"],["browswed","browsed"],["browswer","browser"],["browswers","browsers"],["browswing","browsing"],["brutaly","brutally"],["brwosable","browsable"],["brwose","browse"],["brwosed","browsed"],["brwoser","browser"],["brwosers","browsers"],["brwosing","browsing"],["btye","byte"],["btyes","bytes"],["buad","baud"],["bubbless","bubbles"],["Buddah","Buddha"],["Buddist","Buddhist"],["bufefr","buffer"],["bufer","buffer"],["bufers","buffers"],["buffereed","buffered"],["bufferent","buffered"],["bufferes","buffers"],["bufferred","buffered"],["buffeur","buffer"],["bufffer","buffer"],["bufffers","buffers"],["buffor","buffer"],["buffors","buffers"],["buffr","buffer"],["buffred","buffered"],["buffring","buffering"],["bufufer","buffer"],["buggest","biggest"],["bugous","bogus"],["buguous","bogus"],["bugus","bogus"],["buid","build"],["buider","builder"],["buiders","builders"],["buiding","building"],["buidl","build"],["buidling","building"],["buidlings","buildings"],["buidls","builds"],["buiild","build"],["buik","bulk"],["build-dependancies","build-dependencies"],["build-dependancy","build-dependency"],["build-in","built-in"],["builded","built"],["buildpackge","buildpackage"],["buildpackges","buildpackages"],["builing","building"],["builings","buildings"],["buillt","built"],["built-time","build-time"],["builter","builder"],["builters","builders"],["buinseses","businesses"],["buinsess","business"],["buinsesses","businesses"],["buipd","build"],["buisness","business"],["buisnessman","businessman"],["buissiness","business"],["buissinesses","businesses"],["buit","built"],["buitin","builtin"],["buitins","builtins"],["buitlin","builtin"],["buitlins","builtins"],["buitton","button"],["buittons","buttons"],["buld","build"],["bulding","building"],["bulds","builds"],["bulid","build"],["buliding","building"],["bulids","builds"],["bulit","built"],["bulitin","built-in"],["bulle","bullet"],["bulletted","bulleted"],["bulnerabilities","vulnerabilities"],["bulnerability","vulnerability"],["bulnerable","vulnerable"],["bult","built"],["bult-in","built-in"],["bultin","builtin"],["bumby","bumpy"],["bumpded","bumped"],["bumpt","bump"],["bumpted","bumped"],["bumpter","bumper"],["bumpting","bumping"],["bundel","bundle"],["bundeled","bundled"],["bundels","bundles"],["buoancy","buoyancy"],["bureauracy","bureaucracy"],["burocratic","bureaucratic"],["burried","buried"],["burtst","burst"],["busines","business"],["busness","business"],["bussiness","business"],["bussy","busy"],["buton","button"],["butons","buttons"],["butterly","butterfly"],["buttong","button"],["buttonn","button"],["buttonns","buttons"],["buttosn","buttons"],["buttton","button"],["butttons","buttons"],["buufers","buffers"],["buuild","build"],["buuilds","builds"],["bve","be"],["bwtween","between"],["bypas","bypass"],["bypased","bypassed"],["bypasing","bypassing"],["bytetream","bytestream"],["bytetreams","bytestreams"],["cabint","cabinet"],["cabints","cabinets"],["cacahe","cache"],["cacahes","caches"],["cace","cache"],["cachable","cacheable"],["cacheed","cached"],["cacheing","caching"],["cachline","cacheline"],["cacl","calc"],["caclate","calculate"],["cacluate","calculate"],["cacluated","calculated"],["cacluater","calculator"],["cacluates","calculates"],["cacluating","calculating"],["cacluation","calculation"],["cacluations","calculations"],["cacluator","calculator"],["caclucate","calculate"],["caclucation","calculation"],["caclucations","calculations"],["caclucator","calculator"],["caclulate","calculate"],["caclulated","calculated"],["caclulates","calculates"],["caclulating","calculating"],["caclulation","calculation"],["caclulations","calculations"],["caculate","calculate"],["caculated","calculated"],["caculater","calculator"],["caculates","calculates"],["caculating","calculating"],["caculation","calculation"],["caculations","calculations"],["caculator","calculator"],["cacuses","caucuses"],["cadidate","candidate"],["caefully","carefully"],["Caesarian","Caesarean"],["cahacter","character"],["cahacters","characters"],["cahange","change"],["cahanged","changed"],["cahanges","changes"],["cahanging","changing"],["cahannel","channel"],["caharacter","character"],["caharacters","characters"],["caharcter","character"],["caharcters","characters"],["cahc","cache"],["cahce","cache"],["cahced","cached"],["cahces","caches"],["cahche","cache"],["cahchedb","cachedb"],["cahches","caches"],["cahcing","caching"],["cahcs","caches"],["cahdidate","candidate"],["cahdidates","candidates"],["cahe","cache"],["cahes","caches"],["cahgne","change"],["cahgned","changed"],["cahgner","changer"],["cahgners","changers"],["cahgnes","changes"],["cahgning","changing"],["cahhel","channel"],["cahhels","channels"],["cahined","chained"],["cahing","caching"],["cahining","chaining"],["cahnge","change"],["cahnged","changed"],["cahnges","changes"],["cahnging","changing"],["cahnnel","channel"],["cahnnels","channels"],["cahr","char"],["cahracter","character"],["cahracters","characters"],["cahrging","charging"],["cahrs","chars"],["calaber","caliber"],["calalog","catalog"],["calback","callback"],["calbirate","calibrate"],["calbirated","calibrated"],["calbirates","calibrates"],["calbirating","calibrating"],["calbiration","calibration"],["calbirations","calibrations"],["calbirator","calibrator"],["calbirators","calibrators"],["calcable","calculable"],["calcalate","calculate"],["calciulate","calculate"],["calciulating","calculating"],["calclation","calculation"],["calcluate","calculate"],["calcluated","calculated"],["calcluates","calculates"],["calclulate","calculate"],["calclulated","calculated"],["calclulates","calculates"],["calclulating","calculating"],["calclulation","calculation"],["calclulations","calculations"],["calcualate","calculate"],["calcualated","calculated"],["calcualates","calculates"],["calcualating","calculating"],["calcualation","calculation"],["calcualations","calculations"],["calcualte","calculate"],["calcualted","calculated"],["calcualter","calculator"],["calcualtes","calculates"],["calcualting","calculating"],["calcualtion","calculation"],["calcualtions","calculations"],["calcualtor","calculator"],["calcuate","calculate"],["calcuated","calculated"],["calcuates","calculates"],["calcuation","calculation"],["calcuations","calculations"],["calculaion","calculation"],["calculataed","calculated"],["calculater","calculator"],["calculatted","calculated"],["calculatter","calculator"],["calculattion","calculation"],["calculattions","calculations"],["calculaution","calculation"],["calculautions","calculations"],["calculcate","calculate"],["calculcation","calculation"],["calculed","calculated"],["calculs","calculus"],["calcultate","calculate"],["calcultated","calculated"],["calcultater","calculator"],["calcultating","calculating"],["calcultator","calculator"],["calculting","calculating"],["calculuations","calculations"],["calcurate","calculate"],["calcurated","calculated"],["calcurates","calculates"],["calcurating","calculating"],["calcutate","calculate"],["calcutated","calculated"],["calcutates","calculates"],["calcutating","calculating"],["caleed","called"],["caleee","callee"],["calees","callees"],["caler","caller"],["calescing","coalescing"],["caliased","aliased"],["calibraiton","calibration"],["calibraitons","calibrations"],["calibrte","calibrate"],["calibrtion","calibration"],["caligraphy","calligraphy"],["calilng","calling"],["caliming","claiming"],["callabck","callback"],["callabcks","callbacks"],["callack","callback"],["callbacl","callback"],["callbacsk","callback"],["callbak","callback"],["callbakc","callback"],["callbakcs","callbacks"],["callbck","callback"],["callcack","callback"],["callcain","callchain"],["calld","called"],["calle","called"],["callef","called"],["callibrate","calibrate"],["callibrated","calibrated"],["callibrates","calibrates"],["callibrating","calibrating"],["callibration","calibration"],["callibrations","calibrations"],["callibri","calibri"],["callig","calling"],["callint","calling"],["callled","called"],["calllee","callee"],["calloed","called"],["callsr","calls"],["calsses","classes"],["calucalte","calculate"],["calucalted","calculated"],["calucaltes","calculates"],["calucalting","calculating"],["calucaltion","calculation"],["calucaltions","calculations"],["calucate","calculate"],["caluclate","calculate"],["caluclated","calculated"],["caluclater","calculator"],["caluclates","calculates"],["caluclating","calculating"],["caluclation","calculation"],["caluclations","calculations"],["caluclator","calculator"],["caluculate","calculate"],["caluculated","calculated"],["caluculates","calculates"],["caluculating","calculating"],["caluculation","calculation"],["caluculations","calculations"],["calue","value"],["calulate","calculate"],["calulated","calculated"],["calulater","calculator"],["calulates","calculates"],["calulating","calculating"],["calulation","calculation"],["calulations","calculations"],["Cambrige","Cambridge"],["camoflage","camouflage"],["camoflague","camouflage"],["campagin","campaign"],["campain","campaign"],["campaing","campaign"],["campains","campaigns"],["camparing","comparing"],["can;t","can't"],["canadan","canadian"],["canbe","can be"],["cancelaltion","cancellation"],["cancelation","cancellation"],["cancelations","cancellations"],["canceles","cancels"],["cancell","cancel"],["cancelles","cancels"],["cances","cancel"],["cancl","cancel"],["cancle","cancel"],["cancled","canceled"],["candadate","candidate"],["candadates","candidates"],["candiate","candidate"],["candiates","candidates"],["candidat","candidate"],["candidats","candidates"],["candidiate","candidate"],["candidiates","candidates"],["candinate","candidate"],["candinates","candidates"],["canditate","candidate"],["canditates","candidates"],["cange","change"],["canged","changed"],["canges","changes"],["canging","changing"],["canidate","candidate"],["canidates","candidates"],["cann't","can't"],["cann","can"],["cannister","canister"],["cannisters","canisters"],["cannnot","cannot"],["cannobt","cannot"],["cannonical","canonical"],["cannonicalize","canonicalize"],["cannont","cannot"],["cannotation","connotation"],["cannotations","connotations"],["cannott","cannot"],["canonalize","canonicalize"],["canonalized","canonicalized"],["canonalizes","canonicalizes"],["canonalizing","canonicalizing"],["canoncial","canonical"],["canonicalizations","canonicalization"],["canonival","canonical"],["canot","cannot"],["cant'","can't"],["cant't","can't"],["cant;","can't"],["cantact","contact"],["cantacted","contacted"],["cantacting","contacting"],["cantacts","contacts"],["canvase","canvas"],["caost","coast"],["capabable","capable"],["capabicity","capability"],["capabiities","capabilities"],["capabiity","capability"],["capabilies","capabilities"],["capabiliites","capabilities"],["capabilites","capabilities"],["capabilitieis","capabilities"],["capabilitiies","capabilities"],["capabilitires","capabilities"],["capabilitiy","capability"],["capabillity","capability"],["capabilties","capabilities"],["capabiltity","capability"],["capabilty","capability"],["capabitilies","capabilities"],["capablilities","capabilities"],["capablities","capabilities"],["capablity","capability"],["capaciy","capacity"],["capalize","capitalize"],["capalized","capitalized"],["capapbilities","capabilities"],["capatibilities","capabilities"],["capbability","capability"],["capbale","capable"],["capela","capella"],["caperbility","capability"],["Capetown","Cape Town"],["capibilities","capabilities"],["capible","capable"],["capitolize","capitalize"],["cappable","capable"],["captable","capable"],["captial","capital"],["captrure","capture"],["captued","captured"],["capturd","captured"],["caputre","capture"],["caputred","captured"],["caputres","captures"],["caputure","capture"],["carachter","character"],["caracter","character"],["caractere","character"],["caracteristic","characteristic"],["caracterized","characterized"],["caracters","characters"],["carbus","cardbus"],["carefuly","carefully"],["careing","caring"],["carfull","careful"],["cariage","carriage"],["caridge","carriage"],["cariier","carrier"],["carismatic","charismatic"],["Carmalite","Carmelite"],["Carnagie","Carnegie"],["Carnagie-Mellon","Carnegie-Mellon"],["Carnigie","Carnegie"],["Carnigie-Mellon","Carnegie-Mellon"],["carniverous","carnivorous"],["caronavirus","coronavirus"],["caronaviruses","coronaviruses"],["carreer","career"],["carreid","carried"],["carrers","careers"],["carret","caret"],["carriadge","carriage"],["Carribbean","Caribbean"],["Carribean","Caribbean"],["carrien","carrier"],["carrige","carriage"],["carrrier","carrier"],["carryintg","carrying"],["carryng","carrying"],["cartain","certain"],["cartdridge","cartridge"],["cartensian","Cartesian"],["Carthagian","Carthaginian"],["carthesian","cartesian"],["carthographer","cartographer"],["cartiesian","cartesian"],["cartilege","cartilage"],["cartilidge","cartilage"],["cartrige","cartridge"],["caryy","carry"],["cascace","cascade"],["case-insensative","case-insensitive"],["case-insensetive","case-insensitive"],["case-insensistive","case-insensitive"],["case-insensitiv","case-insensitive"],["case-insensitivy","case-insensitivity"],["case-insensitve","case-insensitive"],["case-insenstive","case-insensitive"],["case-insentive","case-insensitive"],["case-insentivite","case-insensitive"],["case-insesitive","case-insensitive"],["case-intensitive","case-insensitive"],["case-sensative","case-sensitive"],["case-sensetive","case-sensitive"],["case-sensistive","case-sensitive"],["case-sensitiv","case-sensitive"],["case-sensitve","case-sensitive"],["case-senstive","case-sensitive"],["case-sentive","case-sensitive"],["case-sentivite","case-sensitive"],["case-sesitive","case-sensitive"],["case-unsensitive","case-insensitive"],["caseinsensative","case-insensitive"],["caseinsensetive","case-insensitive"],["caseinsensistive","case-insensitive"],["caseinsensitiv","case-insensitive"],["caseinsensitve","case-insensitive"],["caseinsenstive","case-insensitive"],["caseinsentive","case-insensitive"],["caseinsentivite","case-insensitive"],["caseinsesitive","case-insensitive"],["caseintensitive","case-insensitive"],["caselessely","caselessly"],["casesensative","case-sensitive"],["casesensetive","casesensitive"],["casesensistive","case-sensitive"],["casesensitiv","case-sensitive"],["casesensitve","case-sensitive"],["casesenstive","case-sensitive"],["casesentive","case-sensitive"],["casesentivite","case-sensitive"],["casesesitive","case-sensitive"],["casette","cassette"],["cashe","cache"],["casion","caisson"],["caspule","capsule"],["caspules","capsules"],["cassawory","cassowary"],["cassowarry","cassowary"],["casue","cause"],["casued","caused"],["casues","causes"],["casuing","causing"],["casulaties","casualties"],["casulaty","casualty"],["cataalogue","catalogue"],["catagori","category"],["catagories","categories"],["catagorization","categorization"],["catagorizations","categorizations"],["catagorized","categorized"],["catagory","category"],["catapillar","caterpillar"],["catapillars","caterpillars"],["catapiller","caterpillar"],["catapillers","caterpillars"],["catastronphic","catastrophic"],["catastropic","catastrophic"],["catastropically","catastrophically"],["catastrphic","catastrophic"],["catche","catch"],["catched","caught"],["catchi","catch"],["catchs","catches"],["categogical","categorical"],["categogically","categorically"],["categogies","categories"],["categogy","category"],["cateogrical","categorical"],["cateogrically","categorically"],["cateogries","categories"],["cateogry","category"],["catepillar","caterpillar"],["catepillars","caterpillars"],["catergorize","categorize"],["catergorized","categorized"],["caterpilar","caterpillar"],["caterpilars","caterpillars"],["caterpiller","caterpillar"],["caterpillers","caterpillars"],["catgorical","categorical"],["catgorically","categorically"],["catgories","categories"],["catgory","category"],["cathlic","catholic"],["catholocism","catholicism"],["catloag","catalog"],["catloaged","cataloged"],["catloags","catalogs"],["catory","factory"],["catpture","capture"],["catpure","capture"],["catpured","captured"],["catpures","captures"],["catterpilar","caterpillar"],["catterpilars","caterpillars"],["catterpillar","caterpillar"],["catterpillars","caterpillars"],["cattleship","battleship"],["caucasion","caucasian"],["cauched","caught"],["caugt","caught"],["cauhgt","caught"],["cauing","causing"],["causees","causes"],["causion","caution"],["causioned","cautioned"],["causions","cautions"],["causious","cautious"],["cavaet","caveat"],["cavaets","caveats"],["ccahe","cache"],["ccale","scale"],["ccertificate","certificate"],["ccertificated","certificated"],["ccertificates","certificates"],["ccertification","certification"],["ccessible","accessible"],["cche","cache"],["cconfiguration","configuration"],["ccordinate","coordinate"],["ccordinates","coordinates"],["ccordinats","coordinates"],["ccoutant","accountant"],["ccpcheck","cppcheck"],["ccurred","occurred"],["ccustom","custom"],["ccustoms","customs"],["cdecompress","decompress"],["ceartype","cleartype"],["Ceasar","Caesar"],["ceate","create"],["ceated","created"],["ceates","creates"],["ceating","creating"],["ceation","creation"],["ceck","check"],["cecked","checked"],["cecker","checker"],["cecking","checking"],["cecks","checks"],["cedential","credential"],["cedentials","credentials"],["cehck","check"],["cehcked","checked"],["cehcker","checker"],["cehcking","checking"],["cehcks","checks"],["Celcius","Celsius"],["celles","cells"],["cellpading","cellpadding"],["cellst","cells"],["cellxs","cells"],["celsuis","celsius"],["cementary","cemetery"],["cemetarey","cemetery"],["cemetaries","cemeteries"],["cemetary","cemetery"],["cenario","scenario"],["cenarios","scenarios"],["cencter","center"],["cencus","census"],["cengter","center"],["censequence","consequence"],["centain","certain"],["cententenial","centennial"],["centerd","centered"],["centisencond","centisecond"],["centisenconds","centiseconds"],["centrifugeable","centrifugable"],["centrigrade","centigrade"],["centriod","centroid"],["centriods","centroids"],["centruies","centuries"],["centruy","century"],["centuties","centuries"],["centuty","century"],["cerain","certain"],["cerainly","certainly"],["cerainty","certainty"],["cerate","create"],["cereates","creates"],["cerimonial","ceremonial"],["cerimonies","ceremonies"],["cerimonious","ceremonious"],["cerimony","ceremony"],["ceromony","ceremony"],["certaily","certainly"],["certaincy","certainty"],["certainity","certainty"],["certaint","certain"],["certaion","certain"],["certan","certain"],["certficate","certificate"],["certficated","certificated"],["certficates","certificates"],["certfication","certification"],["certfications","certifications"],["certficiate","certificate"],["certficiated","certificated"],["certficiates","certificates"],["certficiation","certification"],["certficiations","certifications"],["certfied","certified"],["certfy","certify"],["certian","certain"],["certianly","certainly"],["certicate","certificate"],["certicated","certificated"],["certicates","certificates"],["certication","certification"],["certicicate","certificate"],["certifacte","certificate"],["certifacted","certificated"],["certifactes","certificates"],["certifaction","certification"],["certifcate","certificate"],["certifcated","certificated"],["certifcates","certificates"],["certifcation","certification"],["certifciate","certificate"],["certifciated","certificated"],["certifciates","certificates"],["certifciation","certification"],["certifiate","certificate"],["certifiated","certificated"],["certifiates","certificates"],["certifiating","certificating"],["certifiation","certification"],["certifiations","certifications"],["certificat","certificate"],["certificatd","certificated"],["certificaton","certification"],["certificats","certificates"],["certifice","certificate"],["certificed","certificated"],["certifices","certificates"],["certificion","certification"],["certificste","certificate"],["certificsted","certificated"],["certificstes","certificates"],["certificsting","certificating"],["certificstion","certification"],["certifificate","certificate"],["certifificated","certificated"],["certifificates","certificates"],["certifification","certification"],["certiticate","certificate"],["certiticated","certificated"],["certiticates","certificates"],["certitication","certification"],["cetain","certain"],["cetainly","certainly"],["cetainty","certainty"],["cetrainly","certainly"],["cetting","setting"],["Cgywin","Cygwin"],["chaarges","charges"],["chacacter","character"],["chacacters","characters"],["chache","cache"],["chached","cached"],["chacheline","cacheline"],["chaeck","check"],["chaecked","checked"],["chaecker","checker"],["chaecking","checking"],["chaecks","checks"],["chagne","change"],["chagned","changed"],["chagnes","changes"],["chahged","changed"],["chahging","changing"],["chaied","chained"],["chaing","chain"],["chalenging","challenging"],["challanage","challenge"],["challange","challenge"],["challanged","challenged"],["challanges","challenges"],["challege","challenge"],["chambre","chamber"],["chambres","chambers"],["Champange","Champagne"],["chanage","change"],["chanaged","changed"],["chanager","changer"],["chanages","changes"],["chanaging","changing"],["chanceled","canceled"],["chanceling","canceling"],["chanched","changed"],["chaneged","changed"],["chaneging","changing"],["chanel","channel"],["chanell","channel"],["chanels","channels"],["changable","changeable"],["changeble","changeable"],["changeing","changing"],["changge","change"],["changged","changed"],["changgeling","changeling"],["changges","changes"],["changlog","changelog"],["changuing","changing"],["chanined","chained"],["chaninging","changing"],["chanllenge","challenge"],["chanllenging","challenging"],["channael","channel"],["channe","channel"],["channeles","channels"],["channl","channel"],["channle","channel"],["channles","channels"],["channnel","channel"],["channnels","channels"],["chanses","chances"],["chaper","chapter"],["characaters","characters"],["characer","character"],["characers","characters"],["characeter","character"],["characeters","characters"],["characetrs","characters"],["characher","character"],["charachers","characters"],["charachter","character"],["charachters","characters"],["characstyle","charstyle"],["charactar","character"],["charactaristic","characteristic"],["charactaristics","characteristics"],["charactars","characters"],["characte","character"],["charactear","character"],["charactears","characters"],["characted","character"],["characteds","characters"],["characteer","character"],["characteers","characters"],["characteisation","characterisation"],["characteization","characterization"],["characteor","character"],["characteors","characters"],["characterclasses","character classes"],["characteres","characters"],["characterisic","characteristic"],["characterisically","characteristically"],["characterisicly","characteristically"],["characterisics","characteristics"],["characterisitic","characteristic"],["characterisitics","characteristics"],["characteristicly","characteristically"],["characteritic","characteristic"],["characteritics","characteristics"],["characteritisc","characteristic"],["characteritiscs","characteristics"],["charactersistic","characteristic"],["charactersistically","characteristically"],["charactersistics","characteristics"],["charactersitic","characteristic"],["charactersm","characters"],["characterss","characters"],["characterstic","characteristic"],["characterstically","characteristically"],["characterstics","characteristics"],["charactertistic","characteristic"],["charactertistically","characteristically"],["charactertistics","characteristics"],["charactes","characters"],["charactet","character"],["characteter","character"],["characteteristic","characteristic"],["characteteristics","characteristics"],["characteters","characters"],["charactetistic","characteristic"],["charactetistics","characteristics"],["charactetr","character"],["charactetrs","characters"],["charactets","characters"],["characther","character"],["charactiristic","characteristic"],["charactiristically","characteristically"],["charactiristics","characteristics"],["charactor","character"],["charactors","characters"],["charactristic","characteristic"],["charactristically","characteristically"],["charactristics","characteristics"],["charactrs","characters"],["characts","characters"],["characture","character"],["charakter","character"],["charakters","characters"],["chararacter","character"],["chararacters","characters"],["chararcter","character"],["chararcters","characters"],["charas","chars"],["charascter","character"],["charascters","characters"],["charasmatic","charismatic"],["charater","character"],["charaterize","characterize"],["charaterized","characterized"],["charaters","characters"],["charator","character"],["charators","characters"],["charcater","character"],["charcter","character"],["charcteristic","characteristic"],["charcteristics","characteristics"],["charcters","characters"],["charctor","character"],["charctors","characters"],["charecter","character"],["charecters","characters"],["charector","character"],["chargind","charging"],["charicter","character"],["charicters","characters"],["charictor","character"],["charictors","characters"],["chariman","chairman"],["charistics","characteristics"],["charizma","charisma"],["chartroose","chartreuse"],["chassy","chassis"],["chatacter","character"],["chatacters","characters"],["chatch","catch"],["chater","chapter"],["chawk","chalk"],["chcek","check"],["chceked","checked"],["chceking","checking"],["chceks","checks"],["chck","check"],["chckbox","checkbox"],["cheapeast","cheapest"],["cheatta","cheetah"],["chec","check"],["checbox","checkbox"],["checboxes","checkboxes"],["checg","check"],["checged","checked"],["checheckpoit","checkpoint"],["checheckpoits","checkpoints"],["cheched","checked"],["cheching","checking"],["chechk","check"],["chechs","checks"],["checkalaises","checkaliases"],["checkcsum","checksum"],["checkd","checked"],["checkes","checks"],["checket","checked"],["checkk","check"],["checkng","checking"],["checkoslovakia","czechoslovakia"],["checkox","checkbox"],["checkpoing","checkpoint"],["checkstum","checksum"],["checkstuming","checksumming"],["checkstumming","checksumming"],["checkstums","checksums"],["checksume","checksum"],["checksumed","checksummed"],["checksuming","checksumming"],["checkt","checked"],["checkum","checksum"],["checkums","checksums"],["checkuot","checkout"],["checl","check"],["checled","checked"],["checling","checking"],["checls","checks"],["cheduling","scheduling"],["cheeper","cheaper"],["cheeta","cheetah"],["cheif","chief"],["cheifs","chiefs"],["chek","check"],["chekc","check"],["chekcing","checking"],["chekd","checked"],["cheked","checked"],["chekers","checkers"],["cheking","checking"],["cheks","checks"],["cheksum","checksum"],["cheksums","checksums"],["chello","cello"],["chemcial","chemical"],["chemcially","chemically"],["chemestry","chemistry"],["chemicaly","chemically"],["chenged","changed"],["chennel","channel"],["cherch","church"],["cherchs","churches"],["cherck","check"],["chercking","checking"],["chercks","checks"],["chescksums","checksums"],["chgange","change"],["chganged","changed"],["chganges","changes"],["chganging","changing"],["chidren","children"],["childbird","childbirth"],["childen","children"],["childeren","children"],["childern","children"],["childlren","children"],["chiledren","children"],["chilren","children"],["chineese","Chinese"],["chinense","Chinese"],["chinesse","Chinese"],["chipersuite","ciphersuite"],["chipersuites","ciphersuites"],["chipertext","ciphertext"],["chipertexts","ciphertexts"],["chipet","chipset"],["chipslect","chipselect"],["chipstes","chipsets"],["chiuldren","children"],["chked","checked"],["chnage","change"],["chnaged","changed"],["chnages","changes"],["chnaging","changing"],["chnge","change"],["chnged","changed"],["chnges","changes"],["chnging","changing"],["chnnel","channel"],["choclate","chocolate"],["choicing","choosing"],["choise","choice"],["choises","choices"],["choising","choosing"],["chooose","choose"],["choos","choose"],["choosen","chosen"],["chopipng","chopping"],["choronological","chronological"],["chosed","chose"],["choseen","chosen"],["choser","chooser"],["chosing","choosing"],["chossen","chosen"],["chowsing","choosing"],["chracter","character"],["chracters","characters"],["chractor","character"],["chractors","characters"],["chrminance","chrominance"],["chromum","chromium"],["chuch","church"],["chuks","chunks"],["chunaks","chunks"],["chunc","chunk"],["chunck","chunk"],["chuncked","chunked"],["chuncking","chunking"],["chuncks","chunks"],["chuncksize","chunksize"],["chuncs","chunks"],["chuned","chunked"],["churchs","churches"],["cick","click"],["cicrle","circle"],["cicruit","circuit"],["cicruits","circuits"],["cicular","circular"],["ciculars","circulars"],["cihpher","cipher"],["cihphers","ciphers"],["cilinder","cylinder"],["cilinders","cylinders"],["cilindrical","cylindrical"],["cilyndre","cylinder"],["cilyndres","cylinders"],["cilyndrs","cylinders"],["Cincinatti","Cincinnati"],["Cincinnatti","Cincinnati"],["cinfiguration","configuration"],["cinfigurations","configurations"],["cintaner","container"],["ciontrol","control"],["ciper","cipher"],["cipers","ciphers"],["cipersuite","ciphersuite"],["cipersuites","ciphersuites"],["cipertext","ciphertext"],["cipertexts","ciphertexts"],["ciphe","cipher"],["cipherntext","ciphertext"],["ciphersuit","ciphersuite"],["ciphersuits","ciphersuites"],["ciphersute","ciphersuite"],["ciphersutes","ciphersuites"],["cipheruite","ciphersuite"],["cipheruites","ciphersuites"],["ciphes","ciphers"],["ciphr","cipher"],["ciphrs","ciphers"],["cips","chips"],["circluar","circular"],["circluarly","circularly"],["circluars","circulars"],["circomvent","circumvent"],["circomvented","circumvented"],["circomvents","circumvents"],["circual","circular"],["circuitery","circuitry"],["circulaton","circulation"],["circumferance","circumference"],["circumferencial","circumferential"],["circumsicion","circumcision"],["circumstancial","circumstantial"],["circumstansial","circumstantial"],["circumstnce","circumstance"],["circumstnces","circumstances"],["circumstncial","circumstantial"],["circumstntial","circumstantial"],["circumvernt","circumvent"],["circunference","circumference"],["circunferences","circumferences"],["circunstance","circumstance"],["circunstances","circumstances"],["circunstantial","circumstantial"],["circustances","circumstances"],["circut","circuit"],["circuts","circuits"],["ciricle","circle"],["ciricles","circles"],["ciricuit","circuit"],["ciricuits","circuits"],["ciricular","circular"],["ciricularise","circularise"],["ciricularize","circularize"],["ciriculum","curriculum"],["cirilic","Cyrillic"],["cirillic","Cyrillic"],["ciritc","critic"],["ciritcal","critical"],["ciritcality","criticality"],["ciritcals","criticals"],["ciritcs","critics"],["ciriteria","criteria"],["ciritic","critic"],["ciritical","critical"],["ciriticality","criticality"],["ciriticals","criticals"],["ciritics","critics"],["cirlce","circle"],["cirle","circle"],["cirles","circles"],["cirsumstances","circumstances"],["cirtcuit","circuit"],["cirucal","circular"],["cirucit","circuit"],["cirucits","circuits"],["ciruclar","circular"],["ciruclation","circulation"],["ciruclator","circulator"],["cirucmflex","circumflex"],["cirucular","circular"],["cirucumstance","circumstance"],["cirucumstances","circumstances"],["ciruit","circuit"],["ciruits","circuits"],["cirumflex","circumflex"],["cirumstance","circumstance"],["cirumstances","circumstances"],["civillian","civilian"],["civillians","civilians"],["cjange","change"],["cjanged","changed"],["cjanges","changes"],["cjoice","choice"],["cjoices","choices"],["ckecksum","checksum"],["claaes","classes"],["claculate","calculate"],["claculation","calculation"],["claer","clear"],["claerer","clearer"],["claerly","clearly"],["claibscale","calibscale"],["claime","claim"],["claimes","claims"],["clame","claim"],["claread","cleared"],["clared","cleared"],["clarety","clarity"],["claring","clearing"],["clasic","classic"],["clasical","classical"],["clasically","classically"],["clasification","classification"],["clasified","classified"],["clasifies","classifies"],["clasify","classify"],["clasifying","classifying"],["clasroom","classroom"],["clasrooms","classrooms"],["classess","classes"],["classesss","classes"],["classifcation","classification"],["classifed","classified"],["classifer","classifier"],["classifers","classifiers"],["classificaion","classification"],["classrom","classroom"],["classroms","classrooms"],["classs","class"],["classses","classes"],["clatified","clarified"],["claus","clause"],["clcoksource","clocksource"],["clcosed","closed"],["clea","clean"],["cleaered","cleared"],["cleaing","cleaning"],["cleancacne","cleancache"],["cleaness","cleanness"],["cleanning","cleaning"],["cleannup","cleanup"],["cleanpu","cleanup"],["cleanpus","cleanups"],["cleantup","cleanup"],["cleareance","clearance"],["cleares","clears"],["clearified","clarified"],["clearifies","clarifies"],["clearify","clarify"],["clearifying","clarifying"],["clearling","clearing"],["clearnance","clearance"],["clearnances","clearances"],["clearouput","clearoutput"],["clearted","cleared"],["cleary","clearly"],["cleaup","cleanup"],["cleaups","cleanups"],["cleck","check"],["cleean","clean"],["cleen","clean"],["cleened","cleaned"],["cleens","cleans"],["cleff","clef"],["cleint's","client's"],["cleint","client"],["cleints","clients"],["clened","cleaned"],["clener","cleaner"],["clening","cleaning"],["cler","clear"],["clese","close"],["cleses","closes"],["clevely","cleverly"],["cliboard","clipboard"],["cliboards","clipboards"],["clibpoard","clipboard"],["clibpoards","clipboards"],["cliens","clients"],["cliensite","client-side"],["clienta","client"],["clientelle","clientele"],["clik","click"],["cliks","clicks"],["climer","climber"],["climers","climbers"],["climing","climbing"],["clincial","clinical"],["clinets","clients"],["clinicaly","clinically"],["clipboad","clipboard"],["clipboads","clipboards"],["clipoard","clipboard"],["clipoards","clipboards"],["clipoing","clipping"],["cliuent","client"],["cliuents","clients"],["clloud","cloud"],["cllouded","clouded"],["clloudes","clouds"],["cllouding","clouding"],["cllouds","clouds"],["cloack","cloak"],["cloacks","cloaks"],["cloberring","clobbering"],["clocksourc","clocksource"],["clockw\xEDse","clockwise"],["clock_getttime","clock_gettime"],["cloding","closing"],["cloes","close"],["cloesd","closed"],["cloesed","closed"],["cloesing","closing"],["clonning","cloning"],["clory","glory"],["clos","close"],["closeing","closing"],["closesly","closely"],["closig","closing"],["clossed","closed"],["clossing","closing"],["clossion","collision"],["clossions","collisions"],["cloude","cloud"],["cloudes","clouds"],["cloumn","column"],["cloumns","columns"],["clousre","closure"],["clsoe","close"],["clssroom","classroom"],["clssrooms","classrooms"],["cluase","clause"],["clumn","column"],["clumsly","clumsily"],["cluser","cluster"],["clusetr","cluster"],["clustred","clustered"],["cmak","cmake"],["cmmand","command"],["cmmanded","commanded"],["cmmanding","commanding"],["cmmands","commands"],["cmobination","combination"],["cmoputer","computer"],["cmoputers","computers"],["cna","can"],["cnannel","channel"],["cnat'","can't"],["cnat","can't"],["cnfiguration","configuration"],["cnfigure","configure"],["cnfigured","configured"],["cnfigures","configures"],["cnfiguring","configuring"],["cnosole","console"],["cnosoles","consoles"],["cntain","contain"],["cntains","contains"],["cnter","center"],["co-incided","coincided"],["co-opearte","co-operate"],["co-opeartes","co-operates"],["co-ordinate","coordinate"],["co-ordinates","coordinates"],["coalace","coalesce"],["coalaced","coalesced"],["coalacence","coalescence"],["coalacing","coalescing"],["coalaesce","coalesce"],["coalaesced","coalesced"],["coalaescence","coalescence"],["coalaescing","coalescing"],["coalascece","coalescence"],["coalascence","coalescence"],["coalase","coalesce"],["coalasece","coalescence"],["coalased","coalesced"],["coalasence","coalescence"],["coalases","coalesces"],["coalasing","coalescing"],["coalcece","coalescence"],["coalcence","coalescence"],["coalesc","coalesce"],["coalescsing","coalescing"],["coalesed","coalesced"],["coalesence","coalescence"],["coalessing","coalescing"],["coallate","collate"],["coallates","collates"],["coallating","collating"],["coallece","coalesce"],["coalleced","coalesced"],["coallecence","coalescence"],["coalleces","coalesces"],["coallecing","coalescing"],["coallee","coalesce"],["coalleed","coalesced"],["coalleence","coalescence"],["coallees","coalesces"],["coalleing","coalescing"],["coallesce","coalesce"],["coallesced","coalesced"],["coallesceing","coalescing"],["coallescence","coalescence"],["coallesces","coalesces"],["coallescing","coalescing"],["coallese","coalesce"],["coallesed","coalesced"],["coallesence","coalescence"],["coalleses","coalesces"],["coallesing","coalescing"],["coallesse","coalesce"],["coallessed","coalesced"],["coallessence","coalescence"],["coallesses","coalesces"],["coallessing","coalescing"],["coallision","collision"],["coallisions","collisions"],["coalsce","coalesce"],["coalscece","coalescence"],["coalsced","coalesced"],["coalscence","coalescence"],["coalscing","coalescing"],["coalsece","coalescence"],["coalseced","coalesced"],["coalsecense","coalescence"],["coalsence","coalescence"],["coaslescing","coalescing"],["cobining","combining"],["cobvers","covers"],["coccinele","coccinelle"],["coctail","cocktail"],["cocument","document"],["cocumentation","documentation"],["cocuments","document"],["codeing","coding"],["codepoitn","codepoint"],["codesc","codecs"],["codespel","codespell"],["codesream","codestream"],["codition","condition"],["coditioned","conditioned"],["coditions","conditions"],["codo","code"],["codos","codes"],["coduct","conduct"],["coducted","conducted"],["coducter","conductor"],["coducting","conducting"],["coductor","conductor"],["coducts","conducts"],["coeffcient","coefficient"],["coeffcients","coefficients"],["coefficeint","coefficient"],["coefficeints","coefficients"],["coefficent","coefficient"],["coefficents","coefficients"],["coefficiens","coefficients"],["coefficientss","coefficients"],["coeffiecient","coefficient"],["coeffiecients","coefficients"],["coeffient","coefficient"],["coeffients","coefficients"],["coeficent","coefficient"],["coeficents","coefficients"],["coeficient","coefficient"],["coeficients","coefficients"],["coelesce","coalesce"],["coercable","coercible"],["coerceion","coercion"],["cofeee","coffee"],["cofficient","coefficient"],["cofficients","coefficients"],["cofidence","confidence"],["cofiguration","configuration"],["cofigure","configure"],["cofigured","configured"],["cofigures","configures"],["cofiguring","configuring"],["cofirm","confirm"],["cofirmation","confirmation"],["cofirmations","confirmations"],["cofirmed","confirmed"],["cofirming","confirming"],["cofirms","confirms"],["coform","conform"],["cofrim","confirm"],["cofrimation","confirmation"],["cofrimations","confirmations"],["cofrimed","confirmed"],["cofriming","confirming"],["cofrims","confirms"],["cognizent","cognizant"],["coherance","coherence"],["coherancy","coherency"],["coherant","coherent"],["coherantly","coherently"],["coice","choice"],["coincedentally","coincidentally"],["coinitailize","coinitialize"],["coinside","coincide"],["coinsided","coincided"],["coinsidence","coincidence"],["coinsident","coincident"],["coinsides","coincides"],["coinsiding","coinciding"],["cointain","contain"],["cointained","contained"],["cointaining","containing"],["cointains","contains"],["cokies","cookies"],["colaboration","collaboration"],["colaborations","collaborations"],["colateral","collateral"],["coldplg","coldplug"],["colected","collected"],["colection","collection"],["colections","collections"],["colelction","collection"],["colelctive","collective"],["colerscheme","colorscheme"],["colescing","coalescing"],["colision","collision"],["colission","collision"],["collaberative","collaborative"],["collaction","collection"],["collaobrative","collaborative"],["collaps","collapse"],["collapsable","collapsible"],["collasion","collision"],["collaspe","collapse"],["collasped","collapsed"],["collaspes","collapses"],["collaspible","collapsible"],["collasping","collapsing"],["collationg","collation"],["collborative","collaborative"],["collecing","collecting"],["collecion","collection"],["collecions","collections"],["colleciton","collection"],["collecitons","collections"],["collectin","collection"],["collecton","collection"],["collectons","collections"],["colleection","collection"],["collegue","colleague"],["collegues","colleagues"],["collektion","collection"],["colletion","collection"],["collidies","collides"],["collissions","collisions"],["collistion","collision"],["collistions","collisions"],["colllapses","collapses"],["collocalized","colocalized"],["collonade","colonnade"],["collonies","colonies"],["collony","colony"],["collorscheme","colorscheme"],["collosal","colossal"],["collpase","collapse"],["collpased","collapsed"],["collpases","collapses"],["collpasing","collapsing"],["collsion","collision"],["collsions","collisions"],["collumn","column"],["collumns","columns"],["colmn","column"],["colmns","columns"],["colmuned","columned"],["coloer","color"],["coloeration","coloration"],["coloered","colored"],["coloering","coloring"],["coloers","colors"],["coloful","colorful"],["colomn","column"],["colomns","columns"],["colon-seperated","colon-separated"],["colonizators","colonizers"],["coloringh","coloring"],["colorizoer","colorizer"],["colorpsace","colorspace"],["colorpsaces","colorspaces"],["colose","close"],["coloum","column"],["coloumn","column"],["coloumns","columns"],["coloums","columns"],["colourpsace","colourspace"],["colourpsaces","colourspaces"],["colsed","closed"],["colum","column"],["columm","column"],["colummn","column"],["colummns","columns"],["columms","columns"],["columnn","column"],["columnns","columns"],["columnss","columns"],["columnular","columnar"],["colums","columns"],["columsn","columns"],["colunns","columns"],["comammand","command"],["comamnd","command"],["comamnd-line","command-line"],["comamnded","commanded"],["comamnding","commanding"],["comamndline","commandline"],["comamnds","commands"],["comand","command"],["comand-line","command-line"],["comanded","commanded"],["comanding","commanding"],["comandline","commandline"],["comando","commando"],["comandos","commandos"],["comands","commands"],["comany","company"],["comapany","company"],["comapared","compared"],["comapatibility","compatibility"],["comapatible","compatible"],["comapletion","completion"],["comapnies","companies"],["comapny","company"],["comapre","compare"],["comapring","comparing"],["comaprison","comparison"],["comaptibele","compatible"],["comaptibelities","compatibilities"],["comaptibelity","compatibility"],["comaptible","compatible"],["comarators","comparators"],["comback","comeback"],["combained","combined"],["combanations","combinations"],["combatibility","compatibility"],["combatible","compatible"],["combiantion","combination"],["combiation","combination"],["combiations","combinations"],["combinate","combine"],["combinateion","combination"],["combinateions","combinations"],["combinatins","combinations"],["combinatio","combination"],["combinatios","combinations"],["combinaton","combination"],["combinatorical","combinatorial"],["combinbe","combined"],["combind","combined"],["combinded","combined"],["combiniation","combination"],["combiniations","combinations"],["combinine","combine"],["combintaion","combination"],["combintaions","combinations"],["combusion","combustion"],["comceptually","conceptually"],["comdemnation","condemnation"],["comect","connect"],["comected","connected"],["comecting","connecting"],["comectivity","connectivity"],["comedlib","comedilib"],["comemmorates","commemorates"],["comemoretion","commemoration"],["coment","comment"],["comented","commented"],["comenting","commenting"],["coments","comments"],["comfirm","confirm"],["comflicting","conflicting"],["comformance","conformance"],["comiled","compiled"],["comilers","compilers"],["comination","combination"],["comision","commission"],["comisioned","commissioned"],["comisioner","commissioner"],["comisioning","commissioning"],["comisions","commissions"],["comission","commission"],["comissioned","commissioned"],["comissioner","commissioner"],["comissioning","commissioning"],["comissions","commissions"],["comit","commit"],["comited","committed"],["comitee","committee"],["comiting","committing"],["comits","commits"],["comitted","committed"],["comittee","committee"],["comittees","committees"],["comitter","committer"],["comitting","committing"],["comittish","committish"],["comlain","complain"],["comlained","complained"],["comlainer","complainer"],["comlaining","complaining"],["comlains","complains"],["comlaint","complaint"],["comlaints","complaints"],["comlete","complete"],["comleted","completed"],["comletely","completely"],["comletion","completion"],["comletly","completely"],["comlex","complex"],["comlexity","complexity"],["comlpeter","completer"],["comma-separeted","comma-separated"],["commad","command"],["commadn","command"],["commadn-line","command-line"],["commadnline","commandline"],["commadns","commands"],["commads","commands"],["commandi","command"],["commandoes","commandos"],["commannd","command"],["commans","commands"],["commansd","commands"],["commect","connect"],["commected","connected"],["commecting","connecting"],["commectivity","connectivity"],["commedic","comedic"],["commemerative","commemorative"],["commemmorate","commemorate"],["commemmorating","commemorating"],["commenet","comment"],["commenetd","commented"],["commeneted","commented"],["commenstatus","commentstatus"],["commerical","commercial"],["commerically","commercially"],["commericial","commercial"],["commericially","commercially"],["commerorative","commemorative"],["comming","coming"],["comminication","communication"],["comminity","community"],["comminucating","communicating"],["comminucation","communication"],["commision","commission"],["commisioned","commissioned"],["commisioner","commissioner"],["commisioning","commissioning"],["commisions","commissions"],["commitable","committable"],["commited","committed"],["commitee","committee"],["commiter","committer"],["commiters","committers"],["commitin","committing"],["commiting","committing"],["commitish","committish"],["committ","commit"],["committe","committee"],["committi","committee"],["committis","committees"],["committment","commitment"],["committments","commitments"],["committy","committee"],["commma","comma"],["commma-separated","comma-separated"],["commmand","command"],["commmand-line","command-line"],["commmandline","commandline"],["commmands","commands"],["commmemorated","commemorated"],["commment","comment"],["commmented","commented"],["commmenting","commenting"],["commments","comments"],["commmet","comment"],["commmets","comments"],["commmit","commit"],["commmited","committed"],["commmiting","committing"],["commmits","commits"],["commmitted","committed"],["commmitter","committer"],["commmitters","committers"],["commmitting","committing"],["commmon","common"],["commmunicate","communicate"],["commmunicated","communicated"],["commmunicates","communicates"],["commmunicating","communicating"],["commmunication","communication"],["commmunity","community"],["commna","comma"],["commna-separated","comma-separated"],["commnad","command"],["commnad-line","command-line"],["commnadline","commandline"],["commnads","commands"],["commnand","command"],["commnand-line","command-line"],["commnandline","commandline"],["commnands","commands"],["commnd","command"],["commnd-line","command-line"],["commndline","commandline"],["commnds","commands"],["commnent","comment"],["commnents","comments"],["commnet","comment"],["commnetaries","commentaries"],["commnetary","commentary"],["commnetator","commentator"],["commnetators","commentators"],["commneted","commented"],["commneting","commenting"],["commnets","comments"],["commnication","communication"],["commnities","communities"],["commnity","community"],["commnt","comment"],["commnted","commented"],["commnuative","commutative"],["commnunicating","communicating"],["commnunication","communication"],["commnunity","community"],["commoditiy","commodity"],["commom","common"],["commond","command"],["commongly","commonly"],["commontly","commonly"],["commonweath","commonwealth"],["commpact","compact"],["commpaction","compaction"],["commpare","compare"],["commparisons","comparisons"],["commpatibility","compatibility"],["commpatible","compatible"],["commpessed","compressed"],["commpilation","compilation"],["commpile","compile"],["commpiled","compiled"],["commpiling","compiling"],["commplain","complain"],["commplete","complete"],["commpleted","completed"],["commpletely","completely"],["commpletes","completes"],["commpletion","completion"],["commplex","complex"],["commpliant","compliant"],["commplied","complied"],["commpn","common"],["commponent","component"],["commponents","components"],["commpound","compound"],["commpresd","compressed"],["commpresed","compressed"],["commpresion","compression"],["commpress","compress"],["commpressd","compressed"],["commpressed","compressed"],["commpression","compression"],["commpute","compute"],["commputed","computed"],["commputer","computer"],["commputes","computes"],["commputing","computing"],["commtited","committed"],["commtted","committed"],["commuication","communication"],["commuications","communications"],["commuinications","communications"],["communcated","communicated"],["communcation","communication"],["communcations","communications"],["communciation","communication"],["communiation","communication"],["communicaion","communication"],["communicatie","communication"],["communicaton","communication"],["communitcate","communicate"],["communitcated","communicated"],["communitcates","communicates"],["communitcation","communication"],["communitcations","communications"],["communites","communities"],["communiy","community"],["communiyt","community"],["communuication","communication"],["commutated","commuted"],["commutating","commuting"],["commutive","commutative"],["comnmand","command"],["comnnected","connected"],["comnparing","comparing"],["comnpletion","completion"],["comnpresion","compression"],["comnpress","compress"],["comobobox","combo-box"],["comon","common"],["comonent","component"],["comor","color"],["compability","compatibility"],["compabillity","compatibility"],["compabitiliby","compatibility"],["compabitility","compatibility"],["compagnion","companion"],["compagny","company"],["compaibility","compatibility"],["compain","complain"],["compair","compare"],["compaire","compare"],["compaired","compared"],["compairing","comparing"],["compairison","comparison"],["compairisons","comparisons"],["compairs","compares"],["compansate","compensate"],["compansated","compensated"],["compansates","compensates"],["compansating","compensating"],["compansation","compensation"],["compansations","compensations"],["comparaison","comparison"],["comparare","compare"],["comparasion","comparison"],["comparasions","comparisons"],["comparater","comparator"],["comparation","comparison"],["comparations","comparisons"],["compareable","comparable"],["compareing","comparing"],["compareison","comparison"],["compareisons","comparisons"],["comparements","compartments"],["compariable","comparable"],["comparied","compared"],["comparign","comparing"],["comparigon","comparison"],["comparigons","comparisons"],["compariing","comparing"],["comparion","comparison"],["comparions","comparisons"],["comparios","comparison"],["comparioss","comparisons"],["comparisaion","comparison"],["comparisaions","comparisons"],["comparisation","comparison"],["comparisations","comparisons"],["comparisement","comparison"],["comparisements","comparisons"],["comparisin","comparison"],["comparising","comparing"],["comparisins","comparisons"],["comparision","comparison"],["comparisions","comparisons"],["comparism","comparison"],["comparisment","comparison"],["comparisments","comparisons"],["comparisms","comparisons"],["comparisn","comparison"],["comparisns","comparisons"],["comparispon","comparison"],["comparispons","comparisons"],["comparission","comparison"],["comparissions","comparisons"],["comparisson","comparison"],["comparissons","comparisons"],["comparistion","comparison"],["comparistions","comparisons"],["compariston","comparison"],["comparistons","comparisons"],["comparition","comparison"],["comparitions","comparisons"],["comparititive","comparative"],["comparititively","comparatively"],["comparitive","comparative"],["comparitively","comparatively"],["comparitor","comparator"],["comparitors","comparators"],["comparizon","comparison"],["comparizons","comparisons"],["comparment","compartment"],["comparotor","comparator"],["comparotors","comparators"],["comparre","compare"],["comparsion","comparison"],["comparsions","comparisons"],["compatabable","compatible"],["compatabiity","compatibility"],["compatabile","compatible"],["compatabilities","compatibilities"],["compatability","compatibility"],["compatabillity","compatibility"],["compatabilty","compatibility"],["compatabily","compatibility"],["compatable","compatible"],["compatablility","compatibility"],["compatablities","compatibilities"],["compatablitiy","compatibility"],["compatablity","compatibility"],["compatably","compatibly"],["compataibility","compatibility"],["compataible","compatible"],["compataility","compatibility"],["compatatbility","compatibility"],["compatatble","compatible"],["compatatible","compatible"],["compatator","comparator"],["compatators","comparators"],["compatbile","compatible"],["compatbility","compatibility"],["compatiability","compatibility"],["compatiable","compatible"],["compatiablity","compatibility"],["compatibel","compatible"],["compatibile","compatible"],["compatibiliy","compatibility"],["compatibiltiy","compatibility"],["compatibilty","compatibility"],["compatibily","compatibility"],["compatibity","compatibility"],["compatiblilty","compatibility"],["compatiblities","compatibilities"],["compatiblity","compatibility"],["compation","compaction"],["compatitbility","compatibility"],["compativle","compatible"],["compaytibility","compatibility"],["compeitions","competitions"],["compeletely","completely"],["compelte","complete"],["compeltelyt","completely"],["compeltion","completion"],["compeltly","completely"],["compelx","complex"],["compelxes","complexes"],["compelxities","complexities"],["compelxity","complexity"],["compensantion","compensation"],["compenstate","compensate"],["compenstated","compensated"],["compenstates","compensates"],["competance","competence"],["competant","competent"],["competative","competitive"],["competetive","competitive"],["competions","completions"],["competitiion","competition"],["competive","competitive"],["competiveness","competitiveness"],["compex","complex"],["compfortable","comfortable"],["comphrehensive","comprehensive"],["compiant","compliant"],["compicated","complicated"],["compications","complications"],["compied","compiled"],["compilability","compatibility"],["compilant","compliant"],["compilaton","compilation"],["compilatons","compilations"],["compilcate","complicate"],["compilcated","complicated"],["compilcatedly","complicatedly"],["compilcates","complicates"],["compilcating","complicating"],["compilcation","complication"],["compilcations","complications"],["compileable","compilable"],["compiletime","compile time"],["compiliant","compliant"],["compiliation","compilation"],["compilier","compiler"],["compiliers","compilers"],["compitability","compatibility"],["compitable","compatible"],["compitent","competent"],["compitible","compatible"],["complaing","complaining"],["complanied","complained"],["complate","complete"],["complated","completed"],["complates","completes"],["complating","completing"],["complatly","completely"],["complatness","completeness"],["complats","completes"],["complcated","complicated"],["compleate","complete"],["compleated","completed"],["compleates","completes"],["compleating","completing"],["compleatly","completely"],["compleete","complete"],["compleeted","completed"],["compleetly","completely"],["compleetness","completeness"],["complelely","completely"],["complelte","complete"],["complementt","complement"],["compleness","completeness"],["complession","compression"],["complet","complete"],["completedthe","completed the"],["completeion","completion"],["completelly","completely"],["completelty","completely"],["completelyl","completely"],["completetion","completion"],["completetly","completely"],["completiom","completion"],["completition","completion"],["completley","completely"],["completly","completely"],["completness","completeness"],["complette","complete"],["complettly","completely"],["complety","completely"],["complext","complexity"],["compliace","compliance"],["complianse","compliance"],["compliation","compilation"],["compliations","compilations"],["complied-in","compiled-in"],["complience","compliance"],["complient","compliant"],["complile","compile"],["compliled","compiled"],["compliler","compiler"],["compliles","compiles"],["compliling","compiling"],["compling","compiling"],["complitely","completely"],["complmenet","complement"],["complted","completed"],["compluter","computer"],["compnent","component"],["compnents","components"],["compoennt","component"],["compoent","component"],["compoents","components"],["compoesd","composed"],["compoment","component"],["compoments","components"],["componant","component"],["componants","components"],["componbents","components"],["componding","compounding"],["componeent","component"],["componeents","components"],["componemt","component"],["componemts","components"],["componenet","component"],["componenets","components"],["componens","components"],["componentes","components"],["componet","component"],["componets","components"],["componnents","components"],["componoent","component"],["componoents","components"],["componsites","composites"],["compontent","component"],["compontents","components"],["composablity","composability"],["composibility","composability"],["composiblity","composability"],["composit","composite"],["compositong","compositing"],["composits","composites"],["compount","compound"],["comppatible","compatible"],["comppiler","compiler"],["comppilers","compilers"],["comppliance","compliance"],["comprable","comparable"],["compredded","compressed"],["compresed","compressed"],["compreser","compressor"],["compresers","compressors"],["compreses","compresses"],["compresible","compressible"],["compresing","compressing"],["compresion","compression"],["compresions","compressions"],["compresor","compressor"],["compresors","compressors"],["compressable","compressible"],["compresser","compressor"],["compressers","compressors"],["compresss","compress"],["compresssed","compressed"],["compresssion","compression"],["comprimise","compromise"],["compromize","compromise"],["compromized","compromised"],["compsable","composable"],["compsite","composite"],["comptabile","compatible"],["comptible","compatible"],["comptue","compute"],["compuatation","computation"],["compuation","computation"],["compulsary","compulsory"],["compulsery","compulsory"],["compund","compound"],["compunds","compounds"],["computaion","computation"],["computarized","computerized"],["computaton","computation"],["computtaion","computation"],["computtaions","computations"],["comress","compress"],["comressed","compressed"],["comresses","compresses"],["comressing","compressing"],["comression","compression"],["comrpess","compress"],["comrpessed","compressed"],["comrpesses","compresses"],["comrpessing","compressing"],["comrpession","compression"],["comstraint","constraint"],["comsume","consume"],["comsumed","consumed"],["comsumer","consumer"],["comsumers","consumers"],["comsumes","consumes"],["comsuming","consuming"],["comsumption","consumption"],["comtain","contain"],["comtained","contained"],["comtainer","container"],["comtains","contains"],["comunicate","communicate"],["comunication","communication"],["comunity","community"],["comventions","conventions"],["comverted","converted"],["conain","contain"],["conained","contained"],["conainer","container"],["conainers","containers"],["conaines","contains"],["conaining","containing"],["conains","contains"],["conaint","contain"],["conainted","contained"],["conainter","container"],["conatain","contain"],["conatainer","container"],["conatainers","containers"],["conatains","contains"],["conatin","contain"],["conatined","contained"],["conatiner","container"],["conatiners","containers"],["conatining","containing"],["conatins","contains"],["conbination","combination"],["conbinations","combinations"],["conbtrols","controls"],["concaneted","concatenated"],["concantenated","concatenated"],["concatenaded","concatenated"],["concatenaion","concatenation"],["concatened","concatenated"],["concatentaion","concatenation"],["concatentate","concatenate"],["concatentated","concatenated"],["concatentates","concatenates"],["concatentating","concatenating"],["concatentation","concatenation"],["concatentations","concatenations"],["concatented","concatenated"],["concatinate","concatenate"],["concatinated","concatenated"],["concatination","concatenation"],["concatinations","concatenations"],["concating","concatenating"],["concatonate","concatenate"],["concatonated","concatenated"],["concatonates","concatenates"],["concatonating","concatenating"],["conceed","concede"],["conceedd","conceded"],["concensors","consensus"],["concensus","consensus"],["concentate","concentrate"],["concentated","concentrated"],["concentates","concentrates"],["concentating","concentrating"],["concentation","concentration"],["concentic","concentric"],["concentraze","concentrate"],["concered","concerned"],["concerened","concerned"],["concering","concerning"],["concerntrating","concentrating"],["concicely","concisely"],["concider","consider"],["concidered","considered"],["concidering","considering"],["conciders","considers"],["concieted","conceited"],["concieve","conceive"],["concieved","conceived"],["concious","conscious"],["conciously","consciously"],["conciousness","consciousness"],["concurence","concurrence"],["concurency","concurrency"],["concurent","concurrent"],["concurently","concurrently"],["concurrect","concurrent"],["condamned","condemned"],["condem","condemn"],["condemmed","condemned"],["condfiguration","configuration"],["condfigurations","configurations"],["condfigure","configure"],["condfigured","configured"],["condfigures","configures"],["condfiguring","configuring"],["condict","conduct"],["condicted","conducted"],["condidate","candidate"],["condidates","candidates"],["condident","confident"],["condidential","confidential"],["condidional","conditional"],["condidtion","condition"],["condidtioning","conditioning"],["condidtions","conditions"],["condifurable","configurable"],["condifuration","configuration"],["condifure","configure"],["condifured","configured"],["condig","config"],["condigdialog","configdialog"],["condiiton","condition"],["condionally","conditionally"],["conditial","conditional"],["conditially","conditionally"],["conditialy","conditionally"],["conditianal","conditional"],["conditianally","conditionally"],["conditianaly","conditionally"],["conditionaly","conditionally"],["conditionn","condition"],["conditionnal","conditional"],["conditionnaly","conditionally"],["conditionned","conditioned"],["conditionsof","conditions of"],["conditoinal","conditional"],["conditon","condition"],["conditonal","conditional"],["conditons","conditions"],["condntional","conditional"],["condtiion","condition"],["condtiions","conditions"],["condtion","condition"],["condtional","conditional"],["condtionally","conditionally"],["condtionals","conditionals"],["condtioned","conditioned"],["condtions","conditions"],["condtition","condition"],["condtitional","conditional"],["condtitionals","conditionals"],["condtitions","conditions"],["conecct","connect"],["coneccted","connected"],["coneccting","connecting"],["conecction","connection"],["conecctions","connections"],["conecctivities","connectivities"],["conecctivity","connectivity"],["conecctor","connector"],["conecctors","connectors"],["coneccts","connects"],["conecept","concept"],["conecepts","concepts"],["conecjture","conjecture"],["conecjtures","conjectures"],["conecntrate","concentrate"],["conecntrated","concentrated"],["conecntrates","concentrates"],["conecpt","concept"],["conecpts","concepts"],["conect","connect"],["conected","connected"],["conecting","connecting"],["conection","connection"],["conections","connections"],["conectivities","connectivities"],["conectivity","connectivity"],["conectix","connectix"],["conector","connector"],["conectors","connectors"],["conects","connects"],["conecurrency","concurrency"],["conecutive","consecutive"],["coneect","connect"],["coneected","connected"],["coneecting","connecting"],["coneection","connection"],["coneections","connections"],["coneectivities","connectivities"],["coneectivity","connectivity"],["coneector","connector"],["coneectors","connectors"],["coneects","connects"],["conenct","connect"],["conencted","connected"],["conencting","connecting"],["conenction","connection"],["conenctions","connections"],["conenctivities","connectivities"],["conenctivity","connectivity"],["conenctor","connector"],["conenctors","connectors"],["conencts","connects"],["conenience","convenience"],["conenient","convenient"],["coneninece","convenience"],["coneninet","convenient"],["conent","content"],["conents","contents"],["conergence","convergence"],["conern","concern"],["conerning","concerning"],["conersion","conversion"],["conersions","conversions"],["conert","convert"],["conerted","converted"],["conerter","converter"],["conerters","converters"],["conerting","converting"],["conervative","conservative"],["conesencus","consensus"],["conet","connect"],["coneted","connected"],["coneting","connecting"],["conetion","connection"],["conetions","connections"],["conetivities","connectivities"],["conetivity","connectivity"],["conetnt","content"],["conetor","connector"],["conetors","connectors"],["conets","connects"],["conexant","connexant"],["conferene","conference"],["conferrencing","conferencing"],["confert","convert"],["confety","confetti"],["conffiguration","configuration"],["confgiuration","configuration"],["confgiure","configure"],["confgiured","configured"],["confguration","configuration"],["confgure","configure"],["confgured","configured"],["confict","conflict"],["conficted","conflicted"],["conficts","conflicts"],["confidance","confidence"],["confidantal","confidential"],["confidantally","confidentially"],["confidantals","confidentials"],["confidantial","confidential"],["confidantially","confidentially"],["confidental","confidential"],["confidentally","confidentially"],["confids","confides"],["confifurable","configurable"],["confifuration","configuration"],["confifure","configure"],["confifured","configured"],["configaration","configuration"],["configed","configured"],["configer","configure"],["configiration","configuration"],["configire","configure"],["configiuration","configuration"],["configration","configuration"],["configrations","configurations"],["configred","configured"],["configruation","configuration"],["configruations","configurations"],["configrued","configured"],["configuaration","configuration"],["configuarble","configurable"],["configuare","configure"],["configuared","configured"],["configuarion","configuration"],["configuarions","configurations"],["configuartion","configuration"],["configuartions","configurations"],["configuation","configuration"],["configuations","configurations"],["configue","configure"],["configued","configured"],["configuerd","configured"],["configuered","configured"],["configues","configures"],["configulate","configurate"],["configulation","configuration"],["configulations","configurations"],["configuraion","configuration"],["configuraiton","configuration"],["configuratiens","configurations"],["configuratiom","configuration"],["configurationn","configuration"],["configuratioon","configuration"],["configuratoin","configuration"],["configuratoins","configurations"],["configuraton","configuration"],["configuratons","configurations"],["configuratrions","configurations"],["configuratuion","configuration"],["configureable","configurable"],["configureing","configuring"],["configuretion","configuration"],["configurres","configures"],["configurring","configuring"],["configurses","configures"],["configurtation","configuration"],["configurting","configuring"],["configurtion","configuration"],["configurtoin","configuration"],["configury","configurable"],["configutation","configuration"],["configutations","configurations"],["configute","configure"],["configuted","configured"],["configutes","configures"],["configutration","configuration"],["confim","confirm"],["confimation","confirmation"],["confimations","confirmations"],["confimed","confirmed"],["confiming","confirming"],["confimred","confirmed"],["confims","confirms"],["confiramtion","confirmation"],["confirmacion","confirmation"],["confirmaed","confirmed"],["confirmas","confirms"],["confirmatino","confirmation"],["confirmatinon","confirmation"],["confirmd","confirmed"],["confirmedd","confirmed"],["confirmeed","confirmed"],["confirmming","confirming"],["confiug","config"],["confiugrable","configurable"],["confiugration","configuration"],["confiugrations","configurations"],["confiugre","configure"],["confiugred","configured"],["confiugres","configures"],["confiugring","configuring"],["confiugure","configure"],["conflictin","conflicting"],["conflift","conflict"],["conflit","conflict"],["confoguration","configuration"],["confort","comfort"],["confortable","comfortable"],["confrim","confirm"],["confrimation","confirmation"],["confrimations","confirmations"],["confrimed","confirmed"],["confriming","confirming"],["confrims","confirms"],["confucing","confusing"],["confucion","confusion"],["confuction","conjunction"],["confudion","confusion"],["confue","confuse"],["confued","confused"],["confues","confuses"],["confugiration","configuration"],["confugirble","configurable"],["confugire","configure"],["confugired","configured"],["confugires","configures"],["confugiring","configuring"],["confugrable","configurable"],["confugration","configuration"],["confugre","configure"],["confugred","configured"],["confugres","configures"],["confugring","configuring"],["confugurable","configurable"],["confuguration","configuration"],["confugure","configure"],["confugured","configured"],["confugures","configures"],["confuguring","configuring"],["confuigration","configuration"],["confuigrations","configurations"],["confuing","confusing"],["confunction","conjunction"],["confunder","confounder"],["confunse","confuse"],["confunsed","confused"],["confunses","confuses"],["confunsing","confusing"],["confurable","configurable"],["confuration","configuration"],["confure","configure"],["confured","configured"],["confures","configures"],["confuring","configuring"],["confurse","confuse"],["confursed","confused"],["confurses","confuses"],["confursing","confusing"],["confusting","confusing"],["confuze","confuse"],["confuzed","confused"],["confuzes","confuses"],["confuzing","confusing"],["confuzze","confuse"],["confuzzed","confused"],["confuzzes","confuses"],["confuzzing","confusing"],["congifurable","configurable"],["congifuration","configuration"],["congifure","configure"],["congifured","configured"],["congig","config"],["congigs","configs"],["congiguration","configuration"],["congigurations","configurations"],["congigure","configure"],["congnition","cognition"],["congnitive","cognitive"],["congradulations","congratulations"],["congresional","congressional"],["conider","consider"],["conifguration","configuration"],["conifiguration","configuration"],["conig","config"],["conigurable","configurable"],["conigured","configured"],["conincide","coincide"],["conincidence","coincidence"],["conincident","coincident"],["conincides","coincides"],["coninciding","coinciding"],["coninient","convenient"],["coninstallable","coinstallable"],["coninuation","continuation"],["coninue","continue"],["coninues","continues"],["coninuity","continuity"],["coninuous","continuous"],["conitinue","continue"],["conived","connived"],["conjecutre","conjecture"],["conjonction","conjunction"],["conjonctive","conjunctive"],["conjuction","conjunction"],["conjuctions","conjunctions"],["conjuncion","conjunction"],["conjuntion","conjunction"],["conjuntions","conjunctions"],["conlcude","conclude"],["conlcuded","concluded"],["conlcudes","concludes"],["conlcuding","concluding"],["conlcusion","conclusion"],["conlcusions","conclusions"],["conly","only"],["conmnection","connection"],["conmpress","compress"],["conmpression","compression"],["connaect","connect"],["conncection","connection"],["conncetion","connection"],["connction","connection"],["conncurrent","concurrent"],["connecetd","connected"],["connecion","connection"],["connecions","connections"],["conneciton","connection"],["connecitons","connections"],["connecor","connector"],["connecotr","connector"],["connecstatus","connectstatus"],["connectd","connected"],["connecte","connected"],["connectec","connected"],["connectes","connects"],["connectet","connected"],["connectibity","connectivity"],["connectino","connection"],["connectinos","connections"],["connectins","connections"],["connectiom","connection"],["connectioms","connections"],["connectiona","connection"],["connectionas","connections"],["connectiviy","connectivity"],["connectivty","connectivity"],["connecto","connect"],["connectted","connected"],["connecttion","connection"],["conneection","connection"],["conneiction","connection"],["connektors","connectors"],["connetced","connected"],["connetcion","connection"],["conneted","connected"],["Conneticut","Connecticut"],["connetion","connection"],["connetor","connector"],["connexion","connection"],["connnect","connect"],["connnected","connected"],["connnecting","connecting"],["connnection","connection"],["connnections","connections"],["connnects","connects"],["connot","cannot"],["connstrain","constrain"],["connstrained","constrained"],["connstraint","constraint"],["conntents","contents"],["conntroller","controller"],["conosuer","connoisseur"],["conotation","connotation"],["conotations","connotations"],["conotrol","control"],["conotroled","controlled"],["conotroling","controlling"],["conotrolled","controlled"],["conotrols","controls"],["conpares","compares"],["conplete","complete"],["conpleted","completed"],["conpletes","completes"],["conpleting","completing"],["conpletion","completion"],["conquerd","conquered"],["conquerer","conqueror"],["conquerers","conquerors"],["conqured","conquered"],["conrete","concrete"],["conrol","control"],["conroller","controller"],["conrrespond","correspond"],["conrrespondence","correspondence"],["conrrespondences","correspondences"],["conrrespondent","correspondent"],["conrrespondents","correspondents"],["conrresponding","corresponding"],["conrrespondingly","correspondingly"],["conrresponds","corresponds"],["conrrol","control"],["conrrupt","corrupt"],["conrruptable","corruptible"],["conrrupted","corrupted"],["conrruptible","corruptible"],["conrruption","corruption"],["conrruptions","corruptions"],["conrrupts","corrupts"],["conrtib","contrib"],["conrtibs","contribs"],["consants","constants"],["conscent","consent"],["consciencious","conscientious"],["consciouness","consciousness"],["consctruct","construct"],["consctructed","constructed"],["consctructing","constructing"],["consctruction","construction"],["consctructions","constructions"],["consctructive","constructive"],["consctructor","constructor"],["consctructors","constructors"],["consctructs","constructs"],["consdider","consider"],["consdidered","considered"],["consdiered","considered"],["consdired","considered"],["conseat","conceit"],["conseated","conceited"],["consective","consecutive"],["consectively","consecutively"],["consectutive","consecutive"],["consectuve","consecutive"],["consecuitively","consecutively"],["conseed","concede"],["conseedd","conceded"],["conseeded","conceded"],["conseeds","concedes"],["consenquently","consequently"],["consensis","consensus"],["consentrate","concentrate"],["consentrated","concentrated"],["consentrates","concentrates"],["consept","concept"],["consepts","concepts"],["consequentely","consequently"],["consequentually","consequently"],["consequeseces","consequences"],["consequetive","consecutive"],["consequtive","consecutive"],["consequtively","consecutively"],["consern","concern"],["conserned","concerned"],["conserning","concerning"],["conservativeky","conservatively"],["conservitive","conservative"],["consestently","consistently"],["consevible","conceivable"],["consiciousness","consciousness"],["consicousness","consciousness"],["considder","consider"],["considderation","consideration"],["considdered","considered"],["considdering","considering"],["considerd","considered"],["consideren","considered"],["considerion","consideration"],["considerions","considerations"],["considred","considered"],["consier","consider"],["consiers","considers"],["consifer","consider"],["consifered","considered"],["consious","conscious"],["consisant","consistent"],["consisent","consistent"],["consisently","consistently"],["consisntency","consistency"],["consistancy","consistency"],["consistant","consistent"],["consistantly","consistently"],["consisten","consistent"],["consistend","consistent"],["consistendly","consistently"],["consistendt","consistent"],["consistendtly","consistently"],["consistenly","consistently"],["consistuents","constituents"],["consit","consist"],["consitant","consistent"],["consited","consisted"],["consitency","consistency"],["consitent","consistent"],["consitently","consistently"],["consiting","consisting"],["consitional","conditional"],["consits","consists"],["consituencies","constituencies"],["consituency","constituency"],["consituent","constituent"],["consituents","constituents"],["consitute","constitute"],["consituted","constituted"],["consitutes","constitutes"],["consituting","constituting"],["consitution","constitution"],["consitutional","constitutional"],["consitutuent","constituent"],["consitutuents","constituents"],["consitutute","constitute"],["consitututed","constituted"],["consitututes","constitutes"],["consitututing","constituting"],["consntant","constant"],["consntantly","constantly"],["consntants","constants"],["consol","console"],["consolodate","consolidate"],["consolodated","consolidated"],["consonent","consonant"],["consonents","consonants"],["consorcium","consortium"],["conspiracys","conspiracies"],["conspiriator","conspirator"],["consquence","consequence"],["consquences","consequences"],["consquent","consequent"],["consquently","consequently"],["consrtuct","construct"],["consrtucted","constructed"],["consrtuctor","constructor"],["consrtuctors","constructors"],["consrtucts","constructs"],["consruction","construction"],["consructions","constructions"],["consructor","constructor"],["consructors","constructors"],["constaint","constraint"],["constainted","constrained"],["constaints","constraints"],["constallation","constellation"],["constallations","constellations"],["constan","constant"],["constanly","constantly"],["constantsm","constants"],["constarin","constrain"],["constarint","constraint"],["constarints","constraints"],["constarnation","consternation"],["constatn","constant"],["constatnt","constant"],["constatnts","constants"],["constcurts","constructs"],["constext","context"],["consting","consisting"],["constinually","continually"],["constistency","consistency"],["constists","consists"],["constitently","consistently"],["constituant","constituent"],["constituants","constituents"],["constitue","constitute"],["constitues","constitutes"],["constituion","constitution"],["constituional","constitutional"],["constitutent","constituent"],["constitutents","constituents"],["constly","costly"],["constract","construct"],["constracted","constructed"],["constractor","constructor"],["constractors","constructors"],["constrainsts","constraints"],["constrainted","constrained"],["constraintes","constraints"],["constrainting","constraining"],["constrait","constraint"],["constraits","constraints"],["constrans","constrains"],["constrant","constraint"],["constrants","constraints"],["constrast","contrast"],["constrasts","contrasts"],["constratints","constraints"],["constraucts","constructs"],["constrcuct","construct"],["constrcut","construct"],["constrcuted","constructed"],["constrcution","construction"],["constrcutor","constructor"],["constrcutors","constructors"],["constrcuts","constructs"],["constriants","constraints"],["constrint","constraint"],["constrints","constraints"],["constrollers","controllers"],["construc","construct"],["construces","constructs"],["construcing","constructing"],["construcion","construction"],["construciton","construction"],["construcor","constructor"],["construcs","constructs"],["constructcor","constructor"],["constructer","constructor"],["constructers","constructors"],["constructes","constructs"],["constructred","constructed"],["constructt","construct"],["constructted","constructed"],["constructting","constructing"],["constructtor","constructor"],["constructtors","constructors"],["constructts","constructs"],["constructued","constructed"],["constructur","constructor"],["constructure","constructor"],["constructurs","constructors"],["construktor","constructor"],["construnctor","constructor"],["construrtors","constructors"],["construst","construct"],["construsts","constructs"],["construt","construct"],["construtced","constructed"],["construter","constructor"],["construters","constructors"],["constrution","construction"],["construtor","constructor"],["construtors","constructors"],["consttruct","construct"],["consttructer","constructor"],["consttructers","constructors"],["consttruction","construction"],["consttructor","constructor"],["consttructors","constructors"],["constuct","construct"],["constucted","constructed"],["constucter","constructor"],["constucters","constructors"],["constucting","constructing"],["constuction","construction"],["constuctions","constructions"],["constuctor","constructor"],["constuctors","constructors"],["constucts","constructs"],["consturct","construct"],["consturctor","constructor"],["consuder","consider"],["consuemr","consumer"],["consulant","consultant"],["consultunt","consultant"],["consumate","consummate"],["consumated","consummated"],["consumating","consummating"],["consummed","consumed"],["consummer","consumer"],["consummers","consumers"],["consumtion","consumption"],["contacentaion","concatenation"],["contagen","contagion"],["contaienr","container"],["contaier","container"],["contails","contains"],["contaiminate","contaminate"],["contaiminated","contaminated"],["contaiminating","contaminating"],["containa","contain"],["containees","containers"],["containerr","container"],["containg","containing"],["containging","containing"],["containig","containing"],["containings","containing"],["containining","containing"],["containint","containing"],["containn","contain"],["containner","container"],["containners","containers"],["containns","contains"],["containr","container"],["containrs","containers"],["containted","contained"],["containter","container"],["containters","containers"],["containting","containing"],["containts","contains"],["containuations","continuations"],["contais","contains"],["contaisn","contains"],["contaiun","contain"],["contamporaries","contemporaries"],["contamporary","contemporary"],["contan","contain"],["contaned","contained"],["contanined","contained"],["contaning","containing"],["contanins","contains"],["contans","contains"],["contary","contrary"],["contatenated","concatenated"],["contatining","containing"],["contein","contain"],["conteined","contained"],["conteining","containing"],["conteins","contains"],["contempoary","contemporary"],["contemporaneus","contemporaneous"],["contempory","contemporary"],["conten","contain"],["contence","contents"],["contendor","contender"],["contener","container"],["conteners","containers"],["contenht","content"],["content-negatiotiation","content-negotiation"],["content-negoatiation","content-negotiation"],["content-negoation","content-negotiation"],["content-negociation","content-negotiation"],["content-negogtiation","content-negotiation"],["content-negoitation","content-negotiation"],["content-negoptionsotiation","content-negotiation"],["content-negosiation","content-negotiation"],["content-negotaiation","content-negotiation"],["content-negotaition","content-negotiation"],["content-negotatiation","content-negotiation"],["content-negotation","content-negotiation"],["content-negothiation","content-negotiation"],["content-negotication","content-negotiation"],["content-negotioation","content-negotiation"],["content-negotion","content-negotiation"],["content-negotionation","content-negotiation"],["content-negotiotation","content-negotiation"],["content-negotitaion","content-negotiation"],["content-negotitation","content-negotiation"],["content-negotition","content-negotiation"],["content-negoziation","content-negotiation"],["contentended","contended"],["contentn","content"],["contentss","contents"],["contermporaneous","contemporaneous"],["conterpart","counterpart"],["conterparts","counterparts"],["contersink","countersink"],["contex","context"],["contexta","context"],["contexual","contextual"],["contiains","contains"],["contian","contain"],["contianed","contained"],["contianer","container"],["contianers","containers"],["contianing","containing"],["contians","contains"],["contibute","contribute"],["contibuted","contributed"],["contibutes","contributes"],["contibutor","contributor"],["contigent","contingent"],["contigious","contiguous"],["contigiously","contiguously"],["contignuous","contiguous"],["contigous","contiguous"],["contiguious","contiguous"],["contiguities","continuities"],["contiguos","contiguous"],["contiguous-non","non-contiguous"],["continaing","containing"],["contination","continuation"],["contined","continued"],["continential","continental"],["continging","containing"],["contingous","contiguous"],["continguous","contiguous"],["continious","continuous"],["continiously","continuously"],["continoue","continue"],["continouos","continuous"],["continous","continuous"],["continously","continuously"],["continueing","continuing"],["continuely","continually"],["continuem","continuum"],["continuos","continuous"],["continuosly","continuously"],["continure","continue"],["continusly","continuously"],["continuting","continuing"],["contious","continuous"],["contiously","continuously"],["contiuation","continuation"],["contiue","continue"],["contiuguous","contiguous"],["contiuing","continuing"],["contniue","continue"],["contniued","continued"],["contniues","continues"],["contnt","content"],["contol","control"],["contoler","controller"],["contoller","controller"],["contollers","controllers"],["contolls","controls"],["contols","controls"],["contongency","contingency"],["contorl","control"],["contorled","controlled"],["contorls","controls"],["contoroller","controller"],["contraciction","contradiction"],["contracictions","contradictions"],["contracition","contradiction"],["contracitions","contradictions"],["contracter","contractor"],["contracters","contractors"],["contradically","contradictory"],["contradictary","contradictory"],["contrain","constrain"],["contrainers","containers"],["contraining","constraining"],["contraint","constraint"],["contrainted","constrained"],["contraints","constraints"],["contraitns","constraints"],["contraveining","contravening"],["contravercial","controversial"],["contraversy","controversy"],["contrbution","contribution"],["contribte","contribute"],["contribted","contributed"],["contribtes","contributes"],["contributer","contributor"],["contributers","contributors"],["contries","countries"],["contrinution","contribution"],["contrinutions","contributions"],["contritutions","contributions"],["contriubte","contribute"],["contriubted","contributed"],["contriubtes","contributes"],["contriubting","contributing"],["contriubtion","contribution"],["contriubtions","contributions"],["contrl","control"],["contrller","controller"],["contro","control"],["controlable","controllable"],["controled","controlled"],["controlelrs","controllers"],["controler","controller"],["controlers","controllers"],["controling","controlling"],["controll","control"],["controllerd","controlled"],["controllled","controlled"],["controlller","controller"],["controlllers","controllers"],["controllling","controlling"],["controllor","controller"],["controlls","controls"],["contronl","control"],["contronls","controls"],["controoler","controller"],["controvercial","controversial"],["controvercy","controversy"],["controveries","controversies"],["controversal","controversial"],["controversey","controversy"],["controversials","controversial"],["controvertial","controversial"],["controvery","controversy"],["contrrol","control"],["contrrols","controls"],["contrst","contrast"],["contrsted","contrasted"],["contrsting","contrasting"],["contrsts","contrasts"],["contrtoller","controller"],["contruct","construct"],["contructed","constructed"],["contructing","constructing"],["contruction","construction"],["contructions","constructions"],["contructor","constructor"],["contructors","constructors"],["contructs","constructs"],["contry","country"],["contryie","countryie"],["contsruction","construction"],["contsructor","constructor"],["contstant","constant"],["contstants","constants"],["contstraint","constraint"],["contstructing","constructing"],["contstruction","construction"],["contstructor","constructor"],["contstructors","constructors"],["contur","contour"],["contzains","contains"],["conuntry","country"],["conusmer","consumer"],["convaless","convalesce"],["convax","convex"],["convaxiity","convexity"],["convaxly","convexly"],["convaxness","convexness"],["conveinence","convenience"],["conveinences","conveniences"],["conveinent","convenient"],["conveinience","convenience"],["conveinient","convenient"],["convenant","covenant"],["conveneince","convenience"],["conveniance","convenience"],["conveniant","convenient"],["conveniantly","conveniently"],["convenince","convenience"],["conveninent","convenient"],["convense","convince"],["convential","conventional"],["conventient","convenient"],["convenvient","convenient"],["conver","convert"],["convereted","converted"],["convergance","convergence"],["converion","conversion"],["converions","conversions"],["converison","conversion"],["converitble","convertible"],["conversly","conversely"],["conversoin","conversion"],["converson","conversion"],["conversons","conversions"],["converssion","conversion"],["converst","convert"],["convertable","convertible"],["convertables","convertibles"],["convertet","converted"],["convertion","conversion"],["convertions","conversions"],["convery","convert"],["convesion","conversion"],["convesions","conversions"],["convet","convert"],["conveted","converted"],["conveter","converter"],["conveters","converters"],["conveting","converting"],["convetion","convention"],["convetions","conventions"],["convets","converts"],["conveyer","conveyor"],["conviced","convinced"],["conviencece","convenience"],["convienence","convenience"],["convienent","convenient"],["convienience","convenience"],["convienient","convenient"],["convieniently","conveniently"],["conviently","conveniently"],["conviguration","configuration"],["convigure","configure"],["convination","combination"],["convine","combine"],["convineance","convenience"],["convineances","conveniences"],["convineient","convenient"],["convinence","convenience"],["convinences","conveniences"],["convinent","convenient"],["convinently","conveniently"],["conviniance","convenience"],["conviniances","conveniences"],["convinience","convenience"],["conviniences","conveniences"],["conviniency","convenience"],["conviniencys","conveniences"],["convinient","convenient"],["conviniently","conveniently"],["convining","combining"],["convinve","convince"],["convinved","convinced"],["convinving","convincing"],["convirted","converted"],["convirting","converting"],["convised","convinced"],["convoultion","convolution"],["convoultions","convolutions"],["convovle","convolve"],["convovled","convolved"],["convovling","convolving"],["convrt","convert"],["convserion","conversion"],["conyak","cognac"],["coodinate","coordinate"],["coodinates","coordinates"],["coodrinate","coordinate"],["coodrinates","coordinates"],["cooefficient","coefficient"],["cooefficients","coefficients"],["cooger","cougar"],["cookoo","cuckoo"],["coolent","coolant"],["coolot","culotte"],["coolots","culottes"],["coomand","command"],["coommand","command"],["coomon","common"],["coonstantly","constantly"],["coonstructed","constructed"],["cooordinate","coordinate"],["cooordinates","coordinates"],["coopearte","cooperate"],["coopeartes","cooperates"],["cooporative","cooperative"],["coordanate","coordinate"],["coordanates","coordinates"],["coordenate","coordinate"],["coordenates","coordinates"],["coordiante","coordinate"],["coordiantes","coordinates"],["coordiantion","coordination"],["coordiate","coordinate"],["coordiates","coordinates"],["coordiinates","coordinates"],["coordinatess","coordinates"],["coordinats","coordinates"],["coordindate","coordinate"],["coordindates","coordinates"],["coordine","coordinate"],["coordines","coordinates"],["coording","according"],["coordingate","coordinate"],["coordingates","coordinates"],["coordingly","accordingly"],["coordiniate","coordinate"],["coordiniates","coordinates"],["coordinite","coordinate"],["coordinites","coordinates"],["coordinnate","coordinate"],["coordinnates","coordinates"],["coordintae","coordinate"],["coordintaes","coordinates"],["coordintate","coordinate"],["coordintates","coordinates"],["coordinte","coordinate"],["coordintes","coordinates"],["coorditate","coordinate"],["coordonate","coordinate"],["coordonated","coordinated"],["coordonates","coordinates"],["coorespond","correspond"],["cooresponded","corresponded"],["coorespondend","correspondent"],["coorespondent","correspondent"],["cooresponding","corresponding"],["cooresponds","corresponds"],["cooridate","coordinate"],["cooridated","coordinated"],["cooridates","coordinates"],["cooridnate","coordinate"],["cooridnated","coordinated"],["cooridnates","coordinates"],["coorinate","coordinate"],["coorinates","coordinates"],["coorination","coordination"],["cootdinate","coordinate"],["cootdinated","coordinated"],["cootdinates","coordinates"],["cootdinating","coordinating"],["cootdination","coordination"],["copeing","copying"],["copiese","copies"],["copiing","copying"],["copiler","compiler"],["coplete","complete"],["copleted","completed"],["copletely","completely"],["copletes","completes"],["copmetitors","competitors"],["copmilation","compilation"],["copmonent","component"],["copmutations","computations"],["copntroller","controller"],["coponent","component"],["copoying","copying"],["coppermines","coppermine"],["coppied","copied"],["copright","copyright"],["coprighted","copyrighted"],["coprights","copyrights"],["coproccessor","coprocessor"],["coproccessors","coprocessors"],["coprocesor","coprocessor"],["coprorate","corporate"],["coprorates","corporates"],["coproration","corporation"],["coprorations","corporations"],["coprright","copyright"],["coprrighted","copyrighted"],["coprrights","copyrights"],["copstruction","construction"],["copuright","copyright"],["copurighted","copyrighted"],["copurights","copyrights"],["copute","compute"],["coputed","computed"],["coputer","computer"],["coputes","computes"],["copver","cover"],["copyed","copied"],["copyeight","copyright"],["copyeighted","copyrighted"],["copyeights","copyrights"],["copyied","copied"],["copyrigth","copyright"],["copyrigthed","copyrighted"],["copyrigths","copyrights"],["copyritght","copyright"],["copyritghted","copyrighted"],["copyritghts","copyrights"],["copyrught","copyright"],["copyrughted","copyrighted"],["copyrughts","copyrights"],["copys","copies"],["copytight","copyright"],["copytighted","copyrighted"],["copytights","copyrights"],["copyting","copying"],["corale","chorale"],["cordinate","coordinate"],["cordinates","coordinates"],["cordoroy","corduroy"],["cordump","coredump"],["corecct","correct"],["corecctly","correctly"],["corect","correct"],["corected","corrected"],["corecting","correcting"],["corection","correction"],["corectly","correctly"],["corectness","correctness"],["corects","corrects"],["coreespond","correspond"],["coregated","corrugated"],["corelate","correlate"],["corelated","correlated"],["corelates","correlates"],["corellation","correlation"],["coreolis","Coriolis"],["corerct","correct"],["corerctly","correctly"],["corespond","correspond"],["coresponded","corresponded"],["corespondence","correspondence"],["coresponding","corresponding"],["coresponds","corresponds"],["corfirms","confirms"],["coridal","cordial"],["corispond","correspond"],["cornmitted","committed"],["corordinate","coordinate"],["corordinates","coordinates"],["corordination","coordination"],["corosbonding","corresponding"],["corosion","corrosion"],["corospond","correspond"],["corospondance","correspondence"],["corosponded","corresponded"],["corospondence","correspondence"],["corosponding","corresponding"],["corosponds","corresponds"],["corousel","carousel"],["corparate","corporate"],["corperations","corporations"],["corpration","corporation"],["corproration","corporation"],["corprorations","corporations"],["corrcect","correct"],["corrct","correct"],["corrdinate","coordinate"],["corrdinated","coordinated"],["corrdinates","coordinates"],["corrdinating","coordinating"],["corrdination","coordination"],["corrdinator","coordinator"],["corrdinators","coordinators"],["correclty","correctly"],["correcly","correctly"],["correcpond","correspond"],["correcponded","corresponded"],["correcponding","corresponding"],["correcponds","corresponds"],["correcs","corrects"],["correctably","correctable"],["correctely","correctly"],["correcters","correctors"],["correctlly","correctly"],["correctnes","correctness"],["correcton","correction"],["correctons","corrections"],["correcttness","correctness"],["correctures","correctors"],["correcty","correctly"],["correctyly","correctly"],["correcxt","correct"],["correcy","correct"],["correect","correct"],["correectly","correctly"],["correespond","correspond"],["correesponded","corresponded"],["correespondence","correspondence"],["correespondences","correspondences"],["correespondent","correspondent"],["correesponding","corresponding"],["correesponds","corresponds"],["correlasion","correlation"],["correlatd","correlated"],["correllate","correlate"],["correllation","correlation"],["correllations","correlations"],["correnspond","correspond"],["corrensponded","corresponded"],["correnspondence","correspondence"],["correnspondences","correspondences"],["correnspondent","correspondent"],["correnspondents","correspondents"],["corrensponding","corresponding"],["corrensponds","corresponds"],["correograph","choreograph"],["correponding","corresponding"],["correponds","corresponds"],["correponsing","corresponding"],["correposding","corresponding"],["correpsondence","correspondence"],["correpsonding","corresponding"],["corresond","correspond"],["corresonded","corresponded"],["corresonding","corresponding"],["corresonds","corresponds"],["correspdoning","corresponding"],["correspending","corresponding"],["correspinding","corresponding"],["correspnding","corresponding"],["correspodence","correspondence"],["correspoding","corresponding"],["correspoinding","corresponding"],["correspomd","correspond"],["correspomded","corresponded"],["correspomdence","correspondence"],["correspomdences","correspondences"],["correspomdent","correspondent"],["correspomdents","correspondents"],["correspomding","corresponding"],["correspomds","corresponds"],["correspon","correspond"],["correspondance","correspondence"],["correspondances","correspondences"],["correspondant","correspondent"],["correspondants","correspondents"],["correspondd","corresponded"],["correspondend","correspondent"],["correspondes","corresponds"],["correspondg","corresponding"],["correspondig","corresponding"],["corresponed","corresponded"],["corresponging","corresponding"],["corresponing","corresponding"],["correspons","corresponds"],["corresponsding","corresponding"],["corresponsing","corresponding"],["correspont","correspond"],["correspontence","correspondence"],["correspontences","correspondences"],["correspontend","correspondent"],["correspontent","correspondent"],["correspontents","correspondents"],["corresponting","corresponding"],["corresponts","corresponds"],["correspoond","correspond"],["corressponding","corresponding"],["corret","correct"],["correted","corrected"],["corretion","correction"],["corretly","correctly"],["corridoor","corridor"],["corridoors","corridors"],["corrispond","correspond"],["corrispondant","correspondent"],["corrispondants","correspondents"],["corrisponded","corresponded"],["corrispondence","correspondence"],["corrispondences","correspondences"],["corrisponding","corresponding"],["corrisponds","corresponds"],["corrleation","correlation"],["corrleations","correlations"],["corrolated","correlated"],["corrolates","correlates"],["corrolation","correlation"],["corrolations","correlations"],["corrrect","correct"],["corrrected","corrected"],["corrrecting","correcting"],["corrrection","correction"],["corrrections","corrections"],["corrrectly","correctly"],["corrrectness","correctness"],["corrrects","corrects"],["corrresponding","corresponding"],["corrresponds","corresponds"],["corrrupt","corrupt"],["corrrupted","corrupted"],["corrruption","corruption"],["corrseponding","corresponding"],["corrspond","correspond"],["corrsponded","corresponded"],["corrsponding","corresponding"],["corrsponds","corresponds"],["corrupeted","corrupted"],["corruptable","corruptible"],["corruptiuon","corruption"],["cors-site","cross-site"],["cors-sute","cross-site"],["corse","course"],["corsor","cursor"],["corss-compiling","cross-compiling"],["corss-site","cross-site"],["corss-sute","cross-site"],["corsshair","crosshair"],["corsshairs","crosshairs"],["corssite","cross-site"],["corsssite","cross-site"],["corsssute","cross-site"],["corssute","cross-site"],["corupt","corrupt"],["corupted","corrupted"],["coruption","corruption"],["coruptions","corruptions"],["corupts","corrupts"],["corus","chorus"],["corvering","covering"],["cosed","closed"],["cosnsrain","constrain"],["cosnsrained","constrained"],["cosntitutive","constitutive"],["cosntrain","constrain"],["cosntrained","constrained"],["cosntraining","constraining"],["cosntraint","constraint"],["cosntraints","constraints"],["cosntructed","constructed"],["cosntructor","constructor"],["cosnumer","consumer"],["cosolation","consolation"],["cosole","console"],["cosoled","consoled"],["cosoles","consoles"],["cosoling","consoling"],["costant","constant"],["costexpr","constexpr"],["costitution","constitution"],["costruct","construct"],["costructer","constructor"],["costructor","constructor"],["costumary","customary"],["costumize","customize"],["cotain","contain"],["cotained","contained"],["cotainer","container"],["cotains","contains"],["cotave","octave"],["cotaves","octaves"],["cotnain","contain"],["cotnained","contained"],["cotnainer","container"],["cotnainers","containers"],["cotnaining","containing"],["cotnains","contains"],["cotranser","cotransfer"],["cotrasferred","cotransferred"],["cotrasfers","cotransfers"],["cotrol","control"],["cotroll","control"],["cotrolled","controlled"],["cotroller","controller"],["cotrolles","controls"],["cotrolling","controlling"],["cotrolls","controls"],["cotrols","controls"],["cotten","cotton"],["coucil","council"],["coud","could"],["coudn't","couldn't"],["coudnt","couldn't"],["coul","could"],["could'nt","couldn't"],["could't","couldn't"],["couldent","couldn't"],["coulden`t","couldn't"],["couldn;t","couldn't"],["couldnt'","couldn't"],["couldnt","couldn't"],["couldnt;","couldn't"],["coulmns","columns"],["couln't","couldn't"],["couloumb","coulomb"],["coult","could"],["coummunities","communities"],["coummunity","community"],["coumpound","compound"],["coumpounds","compounds"],["counded","counted"],["counding","counting"],["coundition","condition"],["counds","counts"],["counld","could"],["counpound","compound"],["counpounds","compounds"],["countain","contain"],["countainer","container"],["countainers","containers"],["countains","contains"],["counterfit","counterfeit"],["counterfits","counterfeits"],["counterintuive","counter intuitive"],["countermeausure","countermeasure"],["countermeausures","countermeasures"],["counterpar","counterpart"],["counterpoart","counterpart"],["counterpoarts","counterparts"],["countinue","continue"],["courtesey","courtesy"],["cousing","cousin"],["couted","counted"],["couter","counter"],["coutermeasuere","countermeasure"],["coutermeasueres","countermeasures"],["coutermeasure","countermeasure"],["coutermeasures","countermeasures"],["couterpart","counterpart"],["couting","counting"],["coutner","counter"],["coutners","counters"],["couuld","could"],["couuldn't","couldn't"],["covarage","coverage"],["covarages","coverages"],["covarege","coverage"],["covection","convection"],["covention","convention"],["coventions","conventions"],["coverd","covered"],["covere","cover"],["coveres","covers"],["covergence","convergence"],["coverred","covered"],["coversion","conversion"],["coversions","conversions"],["coverting","converting"],["covnersion","conversion"],["covnert","convert"],["covnerted","converted"],["covnerter","converter"],["covnerters","converters"],["covnertible","convertible"],["covnerting","converting"],["covnertor","converter"],["covnertors","converters"],["covnerts","converts"],["covriance","covariance"],["covriate","covariate"],["covriates","covariates"],["coyp","copy"],["coypright","copyright"],["coyprighted","copyrighted"],["coyprights","copyrights"],["coyright","copyright"],["coyrighted","copyrighted"],["coyrights","copyrights"],["cpacities","capacities"],["cpacity","capacity"],["cpation","caption"],["cpcheck","cppcheck"],["cpontent","content"],["cppp","cpp"],["cpuld","could"],["craced","graced"],["craceful","graceful"],["cracefully","gracefully"],["cracefulness","gracefulness"],["craceless","graceless"],["cracing","gracing"],["crahed","crashed"],["crahes","crashes"],["crahses","crashes"],["crashaes","crashes"],["crasheed","crashed"],["crashees","crashes"],["crashess","crashes"],["crashign","crashing"],["crashs","crashes"],["crationist","creationist"],["crationists","creationists"],["creaate","create"],["creadential","credential"],["creadentialed","credentialed"],["creadentials","credentials"],["creaed","created"],["creaeted","created"],["creasoat","creosote"],["creastor","creator"],["creatation","creation"],["createa","create"],["createable","creatable"],["createdd","created"],["createing","creating"],["createive","creative"],["creatning","creating"],["creatre","create"],["creatred","created"],["creats","creates"],["credate","created"],["credetial","credential"],["credetials","credentials"],["credidential","credential"],["credidentials","credentials"],["credintial","credential"],["credintials","credentials"],["credis","credits"],["credists","credits"],["creditted","credited"],["creedence","credence"],["cresent","crescent"],["cresits","credits"],["cretae","create"],["cretaed","created"],["cretaes","creates"],["cretaing","creating"],["cretate","create"],["cretated","created"],["cretates","creates"],["cretating","creating"],["cretator","creator"],["cretators","creators"],["creted","created"],["creteria","criteria"],["crewsant","croissant"],["cricital","critical"],["cricitally","critically"],["cricitals","criticals"],["crirical","critical"],["crirically","critically"],["criricals","criticals"],["critcal","critical"],["critcally","critically"],["critcals","criticals"],["critcial","critical"],["critcially","critically"],["critcials","criticals"],["criteak","critique"],["critera","criteria"],["critereon","criterion"],["criterias","criteria"],["criteriom","criterion"],["criticial","critical"],["criticially","critically"],["criticials","criticals"],["criticists","critics"],["critiera","criteria"],["critiical","critical"],["critiically","critically"],["critiicals","criticals"],["critisising","criticising"],["critisism","criticism"],["critisisms","criticisms"],["critized","criticized"],["critizing","criticizing"],["croch","crotch"],["crockadile","crocodile"],["crockodiles","crocodiles"],["cronological","chronological"],["cronologically","chronologically"],["croppped","cropped"],["cros","cross"],["cros-site","cross-site"],["cros-sute","cross-site"],["croshet","crochet"],["crosreference","cross-reference"],["crosreferenced","cross-referenced"],["crosreferences","cross-references"],["cross-commpilation","cross-compilation"],["cross-orgin","cross-origin"],["crossgne","crossgen"],["crossin","crossing"],["crossite","cross-site"],["crossreference","cross-reference"],["crossreferenced","cross-referenced"],["crossreferences","cross-references"],["crosssite","cross-site"],["crosssute","cross-site"],["crossute","cross-site"],["crowdsigna","crowdsignal"],["crowkay","croquet"],["crowm","crown"],["crrespond","correspond"],["crsytal","crystal"],["crsytalline","crystalline"],["crsytallisation","crystallisation"],["crsytallise","crystallise"],["crsytallization","crystallization"],["crsytallize","crystallize"],["crsytallographic","crystallographic"],["crsytals","crystals"],["crtical","critical"],["crtically","critically"],["crticals","criticals"],["crticised","criticised"],["crucialy","crucially"],["crucifiction","crucifixion"],["cruncing","crunching"],["crurrent","current"],["crusies","cruises"],["crusor","cursor"],["crutial","crucial"],["crutially","crucially"],["crutialy","crucially"],["crypted","encrypted"],["cryptocraphic","cryptographic"],["cryptograpic","cryptographic"],["crystalisation","crystallisation"],["cryto","crypto"],["crytpo","crypto"],["csae","case"],["csaes","cases"],["cteate","create"],["cteateing","creating"],["cteater","creator"],["cteates","creates"],["cteating","creating"],["cteation","creation"],["cteations","creations"],["cteator","creator"],["ctificate","certificate"],["ctificated","certificated"],["ctificates","certificates"],["ctification","certification"],["cuasality","causality"],["cuasation","causation"],["cuase","cause"],["cuased","caused"],["cuases","causes"],["cuasing","causing"],["cuestion","question"],["cuestioned","questioned"],["cuestions","questions"],["cuileoga","cuileog"],["culiminating","culminating"],["cumlative","cumulative"],["cummand","command"],["cummulated","cumulated"],["cummulative","cumulative"],["cummunicate","communicate"],["cumulatative","cumulative"],["cumulattive","cumulative"],["cuncurency","concurrency"],["curch","church"],["curcuit","circuit"],["curcuits","circuits"],["curcumstance","circumstance"],["curcumstances","circumstances"],["cureful","careful"],["curefully","carefully"],["curefuly","carefully"],["curent","current"],["curentfilter","currentfilter"],["curently","currently"],["curernt","current"],["curerntly","currently"],["curev","curve"],["curevd","curved"],["curevs","curves"],["curiousities","curiosities"],["curiousity's","curiosity's"],["curiousity","curiosity"],["curnilinear","curvilinear"],["currecnies","currencies"],["currecny","currency"],["currected","corrected"],["currecting","correcting"],["curreent","current"],["curreents","currents"],["curremt","current"],["curremtly","currently"],["curremts","currents"],["curren","current"],["currenlty","currently"],["currenly","currently"],["currennt","current"],["currenntly","currently"],["currennts","currents"],["currentl","currently"],["currentlly","currently"],["currentry","currently"],["currenty","currently"],["curresponding","corresponding"],["curretly","currently"],["curretnly","currently"],["curriculem","curriculum"],["currious","curious"],["currnet","current"],["currnt","current"],["currntly","currently"],["curros","cursor"],["currrency","currency"],["currrent","current"],["currrently","currently"],["curruent","current"],["currupt","corrupt"],["curruptable","corruptible"],["currupted","corrupted"],["curruptible","corruptible"],["curruption","corruption"],["curruptions","corruptions"],["currupts","corrupts"],["currus","cirrus"],["curser","cursor"],["cursot","cursor"],["cursro","cursor"],["curvatrue","curvature"],["curvatrues","curvatures"],["curvelinear","curvilinear"],["cusstom","custom"],["cusstomer","customer"],["cusstomers","customers"],["cusstomizable","customizable"],["cusstomization","customization"],["cusstomize","customize"],["cusstomized","customized"],["cusstoms","customs"],["custoisable","customisable"],["custoisation","customisation"],["custoise","customise"],["custoised","customised"],["custoiser","customiser"],["custoisers","customisers"],["custoising","customising"],["custoizable","customizable"],["custoization","customization"],["custoize","customize"],["custoized","customized"],["custoizer","customizer"],["custoizers","customizers"],["custoizing","customizing"],["customable","customizable"],["customie","customize"],["customied","customized"],["customisaton","customisation"],["customisatons","customisations"],["customizaton","customization"],["customizatons","customizations"],["customizeble","customizable"],["customn","custom"],["customns","customs"],["customsied","customised"],["customzied","customized"],["custon","custom"],["custonary","customary"],["custoner","customer"],["custoners","customers"],["custonisable","customisable"],["custonisation","customisation"],["custonise","customise"],["custonised","customised"],["custoniser","customiser"],["custonisers","customisers"],["custonising","customising"],["custonizable","customizable"],["custonization","customization"],["custonize","customize"],["custonized","customized"],["custonizer","customizer"],["custonizers","customizers"],["custonizing","customizing"],["custons","customs"],["custormer","customer"],["custum","custom"],["custumer","customer"],["custumised","customised"],["custumized","customized"],["custums","customs"],["cutom","custom"],["cutted","cut"],["cuurently","currently"],["cuurrent","current"],["cuurrents","currents"],["cvignore","cvsignore"],["cxan","cyan"],["cycic","cyclic"],["cyclinder","cylinder"],["cyclinders","cylinders"],["cycular","circular"],["cygin","cygwin"],["cylcic","cyclic"],["cylcical","cyclical"],["cyle","cycle"],["cylic","cyclic"],["cylider","cylinder"],["cyliders","cylinders"],["cylindical","cylindrical"],["cylindre","cylinder"],["cyllinder","cylinder"],["cyllinders","cylinders"],["cylnder","cylinder"],["cylnders","cylinders"],["cylynders","cylinders"],["cymk","CMYK"],["cyphersuite","ciphersuite"],["cyphersuites","ciphersuites"],["cyphertext","ciphertext"],["cyphertexts","ciphertexts"],["cyprt","crypt"],["cyprtic","cryptic"],["cyprto","crypto"],["Cyrllic","Cyrillic"],["cyrpto","crypto"],["cyrrent","current"],["cyrrilic","Cyrillic"],["cyrstal","crystal"],["cyrstalline","crystalline"],["cyrstallisation","crystallisation"],["cyrstallise","crystallise"],["cyrstallization","crystallization"],["cyrstallize","crystallize"],["cyrstals","crystals"],["cyrto","crypto"],["cywgin","Cygwin"],["daa","data"],["dabase","database"],["daclaration","declaration"],["dacquiri","daiquiri"],["dadlock","deadlock"],["daed","dead"],["dafault","default"],["dafaults","defaults"],["dafaut","default"],["dafualt","default"],["dafualted","defaulted"],["dafualts","defaults"],["daita","data"],["dake","take"],["dalmation","Dalmatian"],["dalta","delta"],["damamge","damage"],["damamged","damaged"],["damamges","damages"],["damamging","damaging"],["damange","damage"],["damanged","damaged"],["damanges","damages"],["damanging","damaging"],["damenor","demeanor"],["damge","damage"],["dammage","damage"],["dammages","damages"],["danceing","dancing"],["dandidates","candidates"],["daplicating","duplicating"],["Dardenelles","Dardanelles"],["dasboard","dashboard"],["dasboards","dashboards"],["dasdot","dashdot"],["dashbaord","dashboard"],["dashbaords","dashboards"],["dashboad","dashboard"],["dashboads","dashboards"],["dashboar","dashboard"],["dashboars","dashboards"],["dashbord","dashboard"],["dashbords","dashboards"],["dashs","dashes"],["data-strcuture","data-structure"],["data-strcutures","data-structures"],["databaase","database"],["databaases","databases"],["databae","database"],["databaes","database"],["databaeses","databases"],["databas","database"],["databsae","database"],["databsaes","databases"],["databse","database"],["databses","databases"],["datadsir","datadir"],["dataet","dataset"],["dataets","datasets"],["datas","data"],["datastrcuture","datastructure"],["datastrcutures","datastructures"],["datastrem","datastream"],["datatbase","database"],["datatbases","databases"],["datatgram","datagram"],["datatgrams","datagrams"],["datatore","datastore"],["datatores","datastores"],["datatpe","datatype"],["datatpes","datatypes"],["datatpye","datatype"],["datatpyes","datatypes"],["datatset","dataset"],["datatsets","datasets"],["datatstructure","datastructure"],["datatstructures","datastructures"],["datattype","datatype"],["datattypes","datatypes"],["datatye","datatype"],["datatyep","datatype"],["datatyepe","datatype"],["datatyepes","datatypes"],["datatyeps","datatypes"],["datatyes","datatypes"],["datatyoe","datatype"],["datatyoes","datatypes"],["datatytpe","datatype"],["datatytpes","datatypes"],["dataum","datum"],["datbase","database"],["datbases","databases"],["datecreatedd","datecreated"],["datection","detection"],["datections","detections"],["datee","date"],["dateset","dataset"],["datesets","datasets"],["datset","dataset"],["datsets","datasets"],["daugher","daughter"],["daugther","daughter"],["daugthers","daughters"],["dbeian","Debian"],["DCHP","DHCP"],["dcok","dock"],["dcoked","docked"],["dcoker","docker"],["dcoking","docking"],["dcoks","docks"],["dcument","document"],["dcumented","documented"],["dcumenting","documenting"],["dcuments","documents"],["ddelete","delete"],["de-actived","deactivated"],["de-duplacate","de-duplicate"],["de-duplacated","de-duplicated"],["de-duplacates","de-duplicates"],["de-duplacation","de-duplication"],["de-duplacte","de-duplicate"],["de-duplacted","de-duplicated"],["de-duplactes","de-duplicates"],["de-duplaction","de-duplication"],["de-duplaicate","de-duplicate"],["de-duplaicated","de-duplicated"],["de-duplaicates","de-duplicates"],["de-duplaication","de-duplication"],["de-duplate","de-duplicate"],["de-duplated","de-duplicated"],["de-duplates","de-duplicates"],["de-duplation","de-duplication"],["de-fualt","default"],["de-fualts","defaults"],["de-registeres","de-registers"],["deacitivation","deactivation"],["deacitvated","deactivated"],["deactivatiion","deactivation"],["deactive","deactivate"],["deactiveate","deactivate"],["deactived","deactivated"],["deactivete","deactivate"],["deactiveted","deactivated"],["deactivetes","deactivates"],["deactiviate","deactivate"],["deactiviates","deactivates"],["deactiving","deactivating"],["deaemon","daemon"],["deafault","default"],["deafualt","default"],["deafualts","defaults"],["deafult","default"],["deafulted","defaulted"],["deafults","defaults"],["deail","deal"],["deailing","dealing"],["deaktivate","deactivate"],["deaktivated","deactivated"],["dealed","dealt"],["dealilng","dealing"],["dealloacte","deallocate"],["deallocaed","deallocated"],["dealocate","deallocate"],["dealte","delete"],["deamand","demand"],["deamanding","demanding"],["deamands","demands"],["deambigate","disambiguate"],["deambigates","disambiguates"],["deambigation","disambiguation"],["deambiguage","disambiguate"],["deambiguages","disambiguates"],["deambiguate","disambiguate"],["deambiguates","disambiguates"],["deambiguation","disambiguation"],["deamiguate","disambiguate"],["deamiguates","disambiguates"],["deamiguation","disambiguation"],["deamon","daemon"],["deamonisation","daemonisation"],["deamonise","daemonise"],["deamonised","daemonised"],["deamonises","daemonises"],["deamonising","daemonising"],["deamonization","daemonization"],["deamonize","daemonize"],["deamonized","daemonized"],["deamonizes","daemonizes"],["deamonizing","daemonizing"],["deamons","daemons"],["deassering","deasserting"],["deatch","detach"],["deatched","detached"],["deatches","detaches"],["deatching","detaching"],["deatil","detail"],["deatiled","detailed"],["deatiling","detailing"],["deatils","details"],["deativate","deactivate"],["deativated","deactivated"],["deativates","deactivates"],["deativation","deactivation"],["deattach","detach"],["deattached","detached"],["deattaches","detaches"],["deattaching","detaching"],["deattachment","detachment"],["deault","default"],["deaults","defaults"],["deauthenication","deauthentication"],["debain","Debian"],["debateable","debatable"],["debbuger","debugger"],["debehlper","debhelper"],["debgu","debug"],["debgug","debug"],["debguging","debugging"],["debhlper","debhelper"],["debia","Debian"],["debiab","Debian"],["debians","Debian's"],["debina","Debian"],["debloking","deblocking"],["debnia","Debian"],["debth","depth"],["debths","depths"],["debudg","debug"],["debudgged","debugged"],["debudgger","debugger"],["debudgging","debugging"],["debudgs","debugs"],["debufs","debugfs"],["debugee","debuggee"],["debuger","debugger"],["debugg","debug"],["debuggg","debug"],["debuggge","debuggee"],["debuggged","debugged"],["debugggee","debuggee"],["debuggger","debugger"],["debuggging","debugging"],["debugggs","debugs"],["debugginf","debugging"],["debuggs","debugs"],["debuging","debugging"],["decaffinated","decaffeinated"],["decalare","declare"],["decalared","declared"],["decalares","declares"],["decalaring","declaring"],["decalration","declaration"],["decalrations","declarations"],["decalratiosn","declarations"],["decapsulting","decapsulating"],["decathalon","decathlon"],["deccelerate","decelerate"],["deccelerated","decelerated"],["deccelerates","decelerates"],["deccelerating","decelerating"],["decceleration","deceleration"],["deccrement","decrement"],["deccremented","decremented"],["deccrements","decrements"],["Decemer","December"],["decend","descend"],["decendant","descendant"],["decendants","descendants"],["decendentant","descendant"],["decendentants","descendants"],["decending","descending"],["deciaml","decimal"],["deciamls","decimals"],["decices","decides"],["decidate","dedicate"],["decidated","dedicated"],["decidates","dedicates"],["decideable","decidable"],["decidely","decidedly"],["decie","decide"],["deciedd","decided"],["deciede","decide"],["decieded","decided"],["deciedes","decides"],["decieding","deciding"],["decieds","decides"],["deciemal","decimal"],["decies","decides"],["decieve","deceive"],["decieved","deceived"],["decieves","deceives"],["decieving","deceiving"],["decimials","decimals"],["decison","decision"],["decission","decision"],["declar","declare"],["declaraion","declaration"],["declaraions","declarations"],["declarated","declared"],["declaratinos","declarations"],["declaratiom","declaration"],["declaraton","declaration"],["declaratons","declarations"],["declarayion","declaration"],["declarayions","declarations"],["declard","declared"],["declarded","declared"],["declaritive","declarative"],["declaritively","declaratively"],["declarnig","declaring"],["declartated","declared"],["declartation","declaration"],["declartations","declarations"],["declartative","declarative"],["declartator","declarator"],["declartators","declarators"],["declarted","declared"],["declartion","declaration"],["declartions","declarations"],["declartiuon","declaration"],["declartiuons","declarations"],["declartiuve","declarative"],["declartive","declarative"],["declartor","declarator"],["declartors","declarators"],["declataions","declarations"],["declatation","declaration"],["declatations","declarations"],["declated","declared"],["declation","declaration"],["declations","declarations"],["declatory","declaratory"],["decleration","declaration"],["declerations","declarations"],["declration","declaration"],["decocde","decode"],["decocded","decoded"],["decocder","decoder"],["decocders","decoders"],["decocdes","decodes"],["decocding","decoding"],["decocdings","decodings"],["decodded","decoded"],["decodding","decoding"],["decodeing","decoding"],["decomissioned","decommissioned"],["decomissioning","decommissioning"],["decommissionn","decommission"],["decommissionned","decommissioned"],["decommpress","decompress"],["decomoposition","decomposition"],["decomposion","decomposition"],["decomposit","decompose"],["decomposited","decomposed"],["decompositing","decomposing"],["decompositon","decomposition"],["decompositons","decompositions"],["decomposits","decomposes"],["decompostion","decomposition"],["decompostition","decomposition"],["decompres","decompress"],["decompresed","decompressed"],["decompreser","decompressor"],["decompreses","decompresses"],["decompresing","decompressing"],["decompresion","decompression"],["decompresor","decompressor"],["decompressd","decompressed"],["decompresser","decompressor"],["decompresssion","decompression"],["decompse","decompose"],["decond","decode"],["deconde","decode"],["deconded","decoded"],["deconder","decoder"],["deconders","decoders"],["decondes","decodes"],["deconding","decoding"],["decondings","decodings"],["deconstract","deconstruct"],["deconstracted","deconstructed"],["deconstrcutor","deconstructor"],["decopose","decompose"],["decoposes","decomposes"],["decoraded","decorated"],["decoratrion","decoration"],["decorde","decode"],["decorded","decoded"],["decorder","decoder"],["decorders","decoders"],["decordes","decodes"],["decording","decoding"],["decordings","decodings"],["decorrellation","decorrelation"],["decortator","decorator"],["decortive","decorative"],["decose","decode"],["decosed","decoded"],["decoser","decoder"],["decosers","decoders"],["decoses","decodes"],["decosing","decoding"],["decosings","decodings"],["decration","decoration"],["decreace","decrease"],["decreas","decrease"],["decremenet","decrement"],["decremenetd","decremented"],["decremeneted","decremented"],["decrese","decrease"],["decress","decrees"],["decribe","describe"],["decribed","described"],["decribes","describes"],["decribing","describing"],["decriptive","descriptive"],["decriptor","descriptor"],["decriptors","descriptors"],["decrmenet","decrement"],["decrmenetd","decremented"],["decrmeneted","decremented"],["decrment","decrement"],["decrmented","decremented"],["decrmenting","decrementing"],["decrments","decrements"],["decroation","decoration"],["decrpt","decrypt"],["decrpted","decrypted"],["decrption","decryption"],["decrytion","decryption"],["decscription","description"],["decsion","decision"],["decsions","decisions"],["decsiptors","descriptors"],["decsribed","described"],["decsriptor","descriptor"],["decsriptors","descriptors"],["decstiption","description"],["decstiptions","descriptions"],["dectect","detect"],["dectected","detected"],["dectecting","detecting"],["dectection","detection"],["dectections","detections"],["dectector","detector"],["dectivate","deactivate"],["decutable","deductible"],["decutables","deductibles"],["decypher","decipher"],["decyphered","deciphered"],["ded","dead"],["dedault","default"],["dedections","detections"],["dedented","indented"],["dedfined","defined"],["dedidate","dedicate"],["dedidated","dedicated"],["dedidates","dedicates"],["dedly","deadly"],["deductable","deductible"],["deductables","deductibles"],["deduplacate","deduplicate"],["deduplacated","deduplicated"],["deduplacates","deduplicates"],["deduplacation","deduplication"],["deduplacte","deduplicate"],["deduplacted","deduplicated"],["deduplactes","deduplicates"],["deduplaction","deduplication"],["deduplaicate","deduplicate"],["deduplaicated","deduplicated"],["deduplaicates","deduplicates"],["deduplaication","deduplication"],["deduplate","deduplicate"],["deduplated","deduplicated"],["deduplates","deduplicates"],["deduplation","deduplication"],["dedupliate","deduplicate"],["dedupliated","deduplicated"],["deecorator","decorator"],["deeep","deep"],["deelte","delete"],["deendencies","dependencies"],["deendency","dependency"],["defail","detail"],["defailt","default"],["defalt","default"],["defalts","defaults"],["defalut","default"],["defargkey","defragkey"],["defatult","default"],["defaukt","default"],["defaul","default"],["defaulat","default"],["defaulats","defaults"],["defauld","default"],["defaulds","defaults"],["defaule","default"],["defaules","defaults"],["defaulf","default"],["defaulfs","defaults"],["defaulg","default"],["defaulgs","defaults"],["defaulh","default"],["defaulhs","defaults"],["defauling","defaulting"],["defaulit","default"],["defaulits","defaults"],["defaulkt","default"],["defaulkts","defaults"],["defaull","default"],["defaulls","defaults"],["defaullt","default"],["defaullts","defaults"],["defaulr","default"],["defaulrs","defaults"],["defaulrt","default"],["defaulrts","defaults"],["defaultet","defaulted"],["defaulty","default"],["defauly","default"],["defaulys","defaults"],["defaut","default"],["defautl","default"],["defautled","defaulted"],["defautling","defaulting"],["defautls","defaults"],["defautlt","default"],["defautly","default"],["defauts","defaults"],["defautt","default"],["defautted","defaulted"],["defautting","defaulting"],["defautts","defaults"],["defeault","default"],["defeaulted","defaulted"],["defeaulting","defaulting"],["defeaults","defaults"],["defecit","deficit"],["defeine","define"],["defeines","defines"],["defenate","definite"],["defenately","definitely"],["defendent","defendant"],["defendents","defendants"],["defenitely","definitely"],["defenition","definition"],["defenitions","definitions"],["defenitly","definitely"],["deferal","deferral"],["deferals","deferrals"],["deferance","deference"],["defered","deferred"],["deferencing","dereferencing"],["deferentiating","differentiating"],["defering","deferring"],["deferreal","deferral"],["deffensively","defensively"],["defferently","differently"],["deffering","differing"],["defferred","deferred"],["deffine","define"],["deffined","defined"],["deffinition","definition"],["deffinitively","definitively"],["deffirent","different"],["defiantely","defiantly"],["defice","device"],["defien","define"],["defiend","defined"],["defiened","defined"],["defin","define"],["definad","defined"],["definance","defiance"],["definate","definite"],["definately","definitely"],["defination","definition"],["definations","definitions"],["definatly","definitely"],["definding","defining"],["defineas","defines"],["defineed","defined"],["definend","defined"],["definete","definite"],["definetelly","definitely"],["definetely","definitely"],["definetly","definitely"],["definiation","definition"],["definied","defined"],["definietly","definitely"],["definifiton","definition"],["definining","defining"],["defininition","definition"],["defininitions","definitions"],["definintion","definition"],["definit","definite"],["definitian","definition"],["definitiion","definition"],["definitiions","definitions"],["definitio","definition"],["definitios","definitions"],["definitivly","definitively"],["definitly","definitely"],["definitoin","definition"],["definiton","definition"],["definitons","definitions"],["definned","defined"],["definnition","definition"],["defintian","definition"],["defintiion","definition"],["defintiions","definitions"],["defintion","definition"],["defintions","definitions"],["defintition","definition"],["defintivly","definitively"],["defition","definition"],["defitions","definitions"],["deflaut","default"],["defninition","definition"],["defninitions","definitions"],["defnitions","definitions"],["defore","before"],["defqault","default"],["defragmenation","defragmentation"],["defualt","default"],["defualtdict","defaultdict"],["defualts","defaults"],["defult","default"],["defulted","defaulted"],["defulting","defaulting"],["defults","defaults"],["degenarate","degenerate"],["degenarated","degenerated"],["degenarating","degenerating"],["degenaration","degeneration"],["degenracy","degeneracy"],["degenrate","degenerate"],["degenrated","degenerated"],["degenrates","degenerates"],["degenratet","degenerated"],["degenrating","degenerating"],["degenration","degeneration"],["degerate","degenerate"],["degeree","degree"],["degnerate","degenerate"],["degnerated","degenerated"],["degnerates","degenerates"],["degrads","degrades"],["degration","degradation"],["degredation","degradation"],["degreee","degree"],["degreeee","degree"],["degreeees","degrees"],["degreees","degrees"],["deifne","define"],["deifned","defined"],["deifnes","defines"],["deifning","defining"],["deimiter","delimiter"],["deine","define"],["deinitailse","deinitialise"],["deinitailze","deinitialize"],["deinitalized","deinitialized"],["deinstantating","deinstantiating"],["deintialize","deinitialize"],["deintialized","deinitialized"],["deintializing","deinitializing"],["deisgn","design"],["deisgned","designed"],["deisgner","designer"],["deisgners","designers"],["deisgning","designing"],["deisgns","designs"],["deivative","derivative"],["deivatives","derivatives"],["deivce","device"],["deivces","devices"],["deivices","devices"],["deklaration","declaration"],["dekstop","desktop"],["dekstops","desktops"],["dektop","desktop"],["dektops","desktops"],["delagate","delegate"],["delagates","delegates"],["delaloc","delalloc"],["delalyed","delayed"],["delapidated","dilapidated"],["delaraction","declaration"],["delaractions","declarations"],["delarations","declarations"],["delare","declare"],["delared","declared"],["delares","declares"],["delaring","declaring"],["delate","delete"],["delayis","delays"],["delcarations","declarations"],["delcare","declare"],["delcared","declared"],["delcares","declares"],["delclaration","declaration"],["delele","delete"],["delelete","delete"],["deleleted","deleted"],["deleletes","deletes"],["deleleting","deleting"],["delelte","delete"],["delemeter","delimiter"],["delemiter","delimiter"],["delerious","delirious"],["delet","delete"],["deletd","deleted"],["deleteable","deletable"],["deleteed","deleted"],["deleteing","deleting"],["deleteion","deletion"],["deleteting","deleting"],["deletiong","deletion"],["delets","deletes"],["delevopment","development"],["delevopp","develop"],["delgate","delegate"],["delgated","delegated"],["delgates","delegates"],["delgating","delegating"],["delgation","delegation"],["delgations","delegations"],["delgator","delegator"],["delgators","delegators"],["deliberatey","deliberately"],["deliberatly","deliberately"],["deliberite","deliberate"],["deliberitely","deliberately"],["delibery","delivery"],["delibrate","deliberate"],["delibrately","deliberately"],["delievering","delivering"],["delievery","delivery"],["delievred","delivered"],["delievries","deliveries"],["delievry","delivery"],["delimeted","delimited"],["delimeter","delimiter"],["delimeters","delimiters"],["delimiited","delimited"],["delimiiter","delimiter"],["delimiiters","delimiters"],["delimitiaion","delimitation"],["delimitiaions","delimitations"],["delimitiation","delimitation"],["delimitiations","delimitations"],["delimitied","delimited"],["delimitier","delimiter"],["delimitiers","delimiters"],["delimitiing","delimiting"],["delimitimg","delimiting"],["delimition","delimitation"],["delimitions","delimitations"],["delimitis","delimits"],["delimititation","delimitation"],["delimititations","delimitations"],["delimitited","delimited"],["delimititer","delimiter"],["delimititers","delimiters"],["delimititing","delimiting"],["delimitor","delimiter"],["delimitors","delimiters"],["delimitted","delimited"],["delimma","dilemma"],["delimted","delimited"],["delimters","delimiter"],["delink","unlink"],["delivared","delivered"],["delivative","derivative"],["delivatives","derivatives"],["deliverate","deliberate"],["delivermode","deliverymode"],["deliverying","delivering"],["delte","delete"],["delted","deleted"],["deltes","deletes"],["delting","deleting"],["deltion","deletion"],["delusionally","delusively"],["delvery","delivery"],["demaind","demand"],["demenor","demeanor"],["demension","dimension"],["demensional","dimensional"],["demensions","dimensions"],["demodualtor","demodulator"],["demog","demo"],["demographical","demographic"],["demolishon","demolition"],["demolision","demolition"],["demoninator","denominator"],["demoninators","denominators"],["demonstates","demonstrates"],["demonstrat","demonstrate"],["demonstrats","demonstrates"],["demorcracy","democracy"],["demostrate","demonstrate"],["demostrated","demonstrated"],["demostrates","demonstrates"],["demostrating","demonstrating"],["demostration","demonstration"],["demudulator","demodulator"],["denegrating","denigrating"],["denisty","density"],["denomitator","denominator"],["denomitators","denominators"],["densitity","density"],["densly","densely"],["denstiy","density"],["deocde","decode"],["deocded","decoded"],["deocder","decoder"],["deocders","decoders"],["deocdes","decodes"],["deocding","decoding"],["deocdings","decodings"],["deoes","does"],["deoesn't","doesn't"],["deompression","decompression"],["depandance","dependence"],["depandancies","dependencies"],["depandancy","dependency"],["depandent","dependent"],["deparment","department"],["deparmental","departmental"],["deparments","departments"],["depcrecated","deprecated"],["depden","depend"],["depdence","dependence"],["depdencente","dependence"],["depdencentes","dependences"],["depdences","dependences"],["depdencies","dependencies"],["depdency","dependency"],["depdend","depend"],["depdendancies","dependencies"],["depdendancy","dependency"],["depdendant","dependent"],["depdendants","dependents"],["depdended","depended"],["depdendence","dependence"],["depdendences","dependences"],["depdendencies","dependencies"],["depdendency","dependency"],["depdendent","dependent"],["depdendents","dependents"],["depdendet","dependent"],["depdendets","dependents"],["depdending","depending"],["depdends","depends"],["depdenence","dependence"],["depdenences","dependences"],["depdenencies","dependencies"],["depdenency","dependency"],["depdenent","dependent"],["depdenents","dependents"],["depdening","depending"],["depdenncies","dependencies"],["depdenncy","dependency"],["depdens","depends"],["depdent","dependent"],["depdents","dependents"],["depecated","deprecated"],["depedencies","dependencies"],["depedency","dependency"],["depedencys","dependencies"],["depedent","dependent"],["depeding","depending"],["depencencies","dependencies"],["depencency","dependency"],["depencendencies","dependencies"],["depencendency","dependency"],["depencendencys","dependencies"],["depencent","dependent"],["depencies","dependencies"],["depency","dependency"],["dependance","dependence"],["dependancies","dependencies"],["dependancy","dependency"],["dependancys","dependencies"],["dependand","dependent"],["dependcies","dependencies"],["dependcy","dependency"],["dependding","depending"],["dependecies","dependencies"],["dependecy","dependency"],["dependecys","dependencies"],["dependedn","dependent"],["dependees","dependencies"],["dependeing","depending"],["dependenceis","dependencies"],["dependencey","dependency"],["dependencie","dependency"],["dependencied","dependency"],["dependenciens","dependencies"],["dependencis","dependencies"],["dependencys","dependencies"],["dependendencies","dependencies"],["dependendency","dependency"],["dependendent","dependent"],["dependenies","dependencies"],["dependening","depending"],["dependeny","dependency"],["dependet","dependent"],["dependices","dependencies"],["dependicy","dependency"],["dependig","depending"],["dependncies","dependencies"],["dependncy","dependency"],["depened","depend"],["depenedecies","dependencies"],["depenedecy","dependency"],["depenedent","dependent"],["depenencies","dependencies"],["depenencis","dependencies"],["depenency","dependency"],["depenencys","dependencies"],["depenend","depend"],["depenendecies","dependencies"],["depenendecy","dependency"],["depenendence","dependence"],["depenendencies","dependencies"],["depenendency","dependency"],["depenendent","dependent"],["depenending","depending"],["depenent","dependent"],["depenently","dependently"],["depennding","depending"],["depent","depend"],["deperecate","deprecate"],["deperecated","deprecated"],["deperecates","deprecates"],["deperecating","deprecating"],["deploied","deployed"],["deploiment","deployment"],["deploiments","deployments"],["deployement","deployment"],["deploymenet","deployment"],["deploymenets","deployments"],["depndant","dependent"],["depnds","depends"],["deporarily","temporarily"],["deposint","deposing"],["depracated","deprecated"],["depreacte","deprecate"],["depreacted","deprecated"],["depreacts","deprecates"],["depreate","deprecate"],["depreated","deprecated"],["depreates","deprecates"],["depreating","deprecating"],["deprecatedf","deprecated"],["deprectaed","deprecated"],["deprectat","deprecate"],["deprectate","deprecate"],["deprectated","deprecated"],["deprectates","deprecates"],["deprectating","deprecating"],["deprectation","deprecation"],["deprectats","deprecates"],["deprected","deprecated"],["depricate","deprecate"],["depricated","deprecated"],["depricates","deprecates"],["depricating","deprecating"],["dequed","dequeued"],["dequeing","dequeuing"],["deques","dequeues"],["derageable","dirigible"],["derective","directive"],["derectory","directory"],["derefence","dereference"],["derefenced","dereferenced"],["derefencing","dereferencing"],["derefenrence","dereference"],["dereferance","dereference"],["dereferanced","dereferenced"],["dereferances","dereferences"],["dereferencable","dereferenceable"],["dereferencce","dereference"],["dereferencced","dereferenced"],["dereferencces","dereferences"],["dereferenccing","dereferencing"],["derefernce","dereference"],["derefernced","dereferenced"],["dereferncence","dereference"],["dereferncencer","dereferencer"],["dereferncencers","dereferencers"],["dereferncences","dereferences"],["dereferncer","dereferencer"],["dereferncers","dereferencers"],["derefernces","dereferences"],["dereferncing","dereferencing"],["derefernece","dereference"],["derefrencable","dereferenceable"],["derefrence","dereference"],["deregistartion","deregistration"],["deregisted","deregistered"],["deregisteres","deregisters"],["deregistrated","deregistered"],["deregistred","deregistered"],["deregiter","deregister"],["deregiters","deregisters"],["derevative","derivative"],["derevatives","derivatives"],["derferencing","dereferencing"],["derfien","define"],["derfiend","defined"],["derfine","define"],["derfined","defined"],["dergeistered","deregistered"],["dergistration","deregistration"],["deriair","derriere"],["dericed","derived"],["dericteries","directories"],["derictery","directory"],["dericteryes","directories"],["dericterys","directories"],["deriffed","derived"],["derivaties","derivatives"],["derivatio","derivation"],["derivativ","derivative"],["derivativs","derivatives"],["deriviated","derived"],["derivitive","derivative"],["derivitives","derivatives"],["derivitivs","derivatives"],["derivtive","derivative"],["derivtives","derivatives"],["dermine","determine"],["dermined","determined"],["dermines","determines"],["dermining","determining"],["derogitory","derogatory"],["derprecated","deprecated"],["derrivatives","derivatives"],["derrive","derive"],["derrived","derived"],["dertermine","determine"],["derterming","determining"],["derth","dearth"],["derviative","derivative"],["derviatives","derivatives"],["dervie","derive"],["dervied","derived"],["dervies","derives"],["dervived","derived"],["desactivate","deactivate"],["desactivated","deactivated"],["desallocate","deallocate"],["desallocated","deallocated"],["desallocates","deallocates"],["desaster","disaster"],["descallocate","deallocate"],["descallocated","deallocated"],["descchedules","deschedules"],["desccription","description"],["descencing","descending"],["descendands","descendants"],["descibe","describe"],["descibed","described"],["descibes","describes"],["descibing","describing"],["descide","decide"],["descided","decided"],["descides","decides"],["desciding","deciding"],["desciption","description"],["desciptions","descriptions"],["desciptor","descriptor"],["desciptors","descriptors"],["desciribe","describe"],["desciribed","described"],["desciribes","describes"],["desciribing","describing"],["desciription","description"],["desciriptions","descriptions"],["descirption","description"],["descirptor","descriptor"],["descision","decision"],["descisions","decisions"],["descize","disguise"],["descized","disguised"],["descktop","desktop"],["descktops","desktops"],["desconstructed","deconstructed"],["descover","discover"],["descovered","discovered"],["descovering","discovering"],["descovery","discovery"],["descrease","decrease"],["descreased","decreased"],["descreases","decreases"],["descreasing","decreasing"],["descrementing","decrementing"],["descrete","discrete"],["describ","describe"],["describbed","described"],["describibg","describing"],["describng","describing"],["describtion","description"],["describtions","descriptions"],["descrice","describe"],["descriced","described"],["descrices","describes"],["descricing","describing"],["descrie","describe"],["descriibes","describes"],["descriminant","discriminant"],["descriminate","discriminate"],["descriminated","discriminated"],["descriminates","discriminates"],["descriminating","discriminating"],["descriont","description"],["descriotor","descriptor"],["descripe","describe"],["descriped","described"],["descripes","describes"],["descriping","describing"],["descripition","description"],["descripor","descriptor"],["descripors","descriptors"],["descripter","descriptor"],["descripters","descriptors"],["descriptio","description"],["descriptiom","description"],["descriptionm","description"],["descriptior","descriptor"],["descriptiors","descriptors"],["descripto","descriptor"],["descriptoin","description"],["descriptoins","descriptions"],["descripton","description"],["descriptons","descriptions"],["descriptot","descriptor"],["descriptoy","descriptor"],["descriptuve","descriptive"],["descrition","description"],["descritpion","description"],["descritpions","descriptions"],["descritpiton","description"],["descritpitons","descriptions"],["descritpor","descriptor"],["descritpors","descriptors"],["descritpr","descriptor"],["descritpro","descriptor"],["descritpros","descriptors"],["descritprs","descriptors"],["descritption","description"],["descritptions","descriptions"],["descritptive","descriptive"],["descritptor","descriptor"],["descritptors","descriptors"],["descrption","description"],["descrptions","descriptions"],["descrptor","descriptor"],["descrptors","descriptors"],["descrtiption","description"],["descrtiptions","descriptions"],["descrutor","destructor"],["descrybe","describe"],["descrybing","describing"],["descryption","description"],["descryptions","descriptions"],["desctiption","description"],["desctiptor","descriptor"],["desctiptors","descriptors"],["desctop","desktop"],["desctructed","destructed"],["desctruction","destruction"],["desctructive","destructive"],["desctructor","destructor"],["desctructors","destructors"],["descuss","discuss"],["descvription","description"],["descvriptions","descriptions"],["deselct","deselect"],["deselctable","deselectable"],["deselctables","deselectable"],["deselcted","deselected"],["deselcting","deselecting"],["desepears","disappears"],["deserailise","deserialise"],["deserailize","deserialize"],["deserialisazion","deserialisation"],["deserializaed","deserialized"],["deserializazion","deserialization"],["deserialsiation","deserialisation"],["deserialsie","deserialise"],["deserialsied","deserialised"],["deserialsies","deserialises"],["deserialsing","deserialising"],["deserialze","deserialize"],["deserialzed","deserialized"],["deserialzes","deserializes"],["deserialziation","deserialization"],["deserialzie","deserialize"],["deserialzied","deserialized"],["deserialzies","deserializes"],["deserialzing","deserializing"],["desgin","design"],["desgin-mode","design-mode"],["desgined","designed"],["desginer","designer"],["desiar","desire"],["desicate","desiccate"],["desicion","decision"],["desicions","decisions"],["deside","decide"],["desided","decided"],["desides","decides"],["desig","design"],["desigern","designer"],["desigining","designing"],["designd","designed"],["desination","destination"],["desinations","destinations"],["desine","design"],["desing","design"],["desingable","designable"],["desinged","designed"],["desinger","designer"],["desinging","designing"],["desingn","design"],["desingned","designed"],["desingner","designer"],["desingning","designing"],["desingns","designs"],["desings","designs"],["desintaiton","destination"],["desintaitons","destinations"],["desintation","destination"],["desintations","destinations"],["desintegrated","disintegrated"],["desintegration","disintegration"],["desipite","despite"],["desireable","desirable"],["desision","decision"],["desisions","decisions"],["desitable","desirable"],["desitination","destination"],["desitinations","destinations"],["desition","decision"],["desitions","decisions"],["desitned","destined"],["deskop","desktop"],["deskops","desktops"],["desktiop","desktop"],["deskys","disguise"],["deslected","deselected"],["deslects","deselects"],["desltop","desktop"],["desltops","desktops"],["desn't","doesn't"],["desne","dense"],["desnse","dense"],["desogn","design"],["desogned","designed"],["desogner","designer"],["desogning","designing"],["desogns","designs"],["desolve","dissolve"],["desorder","disorder"],["desoriented","disoriented"],["desparately","desperately"],["despatch","dispatch"],["despict","depict"],["despiration","desperation"],["desplay","display"],["desplayed","displayed"],["desplays","displays"],["desposition","disposition"],["desrciption","description"],["desrciptions","descriptions"],["desribe","describe"],["desribed","described"],["desribes","describes"],["desribing","describing"],["desription","description"],["desriptions","descriptions"],["desriptor","descriptor"],["desriptors","descriptors"],["desrire","desire"],["desrired","desired"],["desroyer","destroyer"],["desscribe","describe"],["desscribing","describing"],["desscription","description"],["dessicate","desiccate"],["dessicated","desiccated"],["dessication","desiccation"],["dessigned","designed"],["desstructor","destructor"],["destablized","destabilized"],["destanation","destination"],["destanations","destinations"],["destiantion","destination"],["destiantions","destinations"],["destiation","destination"],["destiations","destinations"],["destinaion","destination"],["destinaions","destinations"],["destinaiton","destination"],["destinaitons","destinations"],["destinarion","destination"],["destinarions","destinations"],["destinataion","destination"],["destinataions","destinations"],["destinatin","destination"],["destinatino","destination"],["destinatinos","destinations"],["destinatins","destinations"],["destinaton","destination"],["destinatons","destinations"],["destinguish","distinguish"],["destintation","destination"],["destintations","destinations"],["destionation","destination"],["destionations","destinations"],["destop","desktop"],["destops","desktops"],["destoried","destroyed"],["destort","distort"],["destory","destroy"],["destoryed","destroyed"],["destorying","destroying"],["destorys","destroys"],["destoy","destroy"],["destoyed","destroyed"],["destrcut","destruct"],["destrcuted","destructed"],["destrcutor","destructor"],["destrcutors","destructors"],["destribute","distribute"],["destributed","distributed"],["destroi","destroy"],["destroied","destroyed"],["destroing","destroying"],["destrois","destroys"],["destroyes","destroys"],["destruciton","destruction"],["destructro","destructor"],["destructros","destructors"],["destruktor","destructor"],["destruktors","destructors"],["destrutor","destructor"],["destrutors","destructors"],["destry","destroy"],["destryed","destroyed"],["destryer","destroyer"],["destrying","destroying"],["destryiong","destroying"],["destryoed","destroyed"],["destryoing","destroying"],["destryong","destroying"],["destrys","destroys"],["destuction","destruction"],["destuctive","destructive"],["destuctor","destructor"],["destuctors","destructors"],["desturcted","destructed"],["desturtor","destructor"],["desturtors","destructors"],["desychronize","desynchronize"],["desychronized","desynchronized"],["detabase","database"],["detachs","detaches"],["detahced","detached"],["detaild","detailed"],["detailled","detailed"],["detais","details"],["detals","details"],["detatch","detach"],["detatched","detached"],["detatches","detaches"],["detatching","detaching"],["detault","default"],["detaulted","defaulted"],["detaulting","defaulting"],["detaults","defaults"],["detction","detection"],["detctions","detections"],["deteced","detected"],["detecing","detecting"],["detecion","detection"],["detecions","detections"],["detectected","detected"],["detectes","detects"],["detectetd","detected"],["detectsion","detection"],["detectsions","detections"],["detemine","determine"],["detemined","determined"],["detemines","determines"],["detemining","determining"],["deteoriated","deteriorated"],["deterant","deterrent"],["deteremine","determine"],["deteremined","determined"],["deteriate","deteriorate"],["deterimined","determined"],["deterine","determine"],["deterioriating","deteriorating"],["determaine","determine"],["determenant","determinant"],["determenistic","deterministic"],["determiens","determines"],["determimnes","determines"],["determin","determine"],["determinated","determined"],["determind","determined"],["determinded","determined"],["determinee","determine"],["determineing","determining"],["determinining","determining"],["deterministinc","deterministic"],["determinne","determine"],["determins","determines"],["determinse","determines"],["determinstic","deterministic"],["determinstically","deterministically"],["determintes","determines"],["determnine","determine"],["deternine","determine"],["detetmine","determine"],["detial","detail"],["detialed","detailed"],["detialing","detailing"],["detials","details"],["detination","destination"],["detinations","destinations"],["detremental","detrimental"],["detremining","determining"],["detrmine","determine"],["detrmined","determined"],["detrmines","determines"],["detrmining","determining"],["detroy","destroy"],["detroyed","destroyed"],["detroying","destroying"],["detroys","destroys"],["detructed","destructed"],["dettach","detach"],["dettaching","detaching"],["detur","detour"],["deturance","deterrence"],["deubug","debug"],["deubuging","debugging"],["deug","debug"],["deugging","debugging"],["devasted","devastated"],["devation","deviation"],["devce","device"],["devcent","decent"],["devcie","device"],["devcies","devices"],["develoers","developers"],["develoment","development"],["develoments","developments"],["develompent","development"],["develompental","developmental"],["develompents","developments"],["develope","develop"],["developement","development"],["developements","developments"],["developmemt","development"],["developmet","development"],["developmetns","developments"],["developmets","developments"],["developp","develop"],["developpe","develop"],["developped","developed"],["developpement","development"],["developper","developer"],["developpers","developers"],["developpment","development"],["develp","develop"],["develped","developed"],["develper","developer"],["develpers","developers"],["develping","developing"],["develpment","development"],["develpments","developments"],["develps","develops"],["devels","delves"],["deveolpment","development"],["deveopers","developers"],["deverloper","developer"],["deverlopers","developers"],["devestated","devastated"],["devestating","devastating"],["devfine","define"],["devfined","defined"],["devfines","defines"],["devic","device"],["devicde","device"],["devicdes","devices"],["device-dependend","device-dependent"],["devicec","device"],["devicecoordiinates","devicecoordinates"],["deviceremoveable","deviceremovable"],["devicesr","devices"],["devicess","devices"],["devicest","devices"],["devide","divide"],["devided","divided"],["devider","divider"],["deviders","dividers"],["devides","divides"],["deviding","dividing"],["deviece","device"],["devied","device"],["deviiate","deviate"],["deviiated","deviated"],["deviiates","deviates"],["deviiating","deviating"],["deviiation","deviation"],["deviiations","deviations"],["devined","defined"],["devired","derived"],["devirtualisaion","devirtualisation"],["devirtualisaiton","devirtualisation"],["devirtualizaion","devirtualization"],["devirtualizaiton","devirtualization"],["devirutalisation","devirtualisation"],["devirutalise","devirtualise"],["devirutalised","devirtualised"],["devirutalization","devirtualization"],["devirutalize","devirtualize"],["devirutalized","devirtualized"],["devisible","divisible"],["devision","division"],["devistating","devastating"],["devive","device"],["devleop","develop"],["devleoped","developed"],["devleoper","developer"],["devleopers","developers"],["devleoping","developing"],["devleopment","development"],["devleopper","developer"],["devleoppers","developers"],["devlop","develop"],["devloped","developed"],["devloper's","developer's"],["devloper","developer"],["devlopers","developers"],["devloping","developing"],["devlopment","development"],["devlopments","developments"],["devlopper","developer"],["devloppers","developers"],["devlops","develops"],["devolopement","development"],["devritualisation","devirtualisation"],["devritualization","devirtualization"],["devuce","device"],["dewrapping","unwrapping"],["dezert","dessert"],["dezibel","decibel"],["dezine","design"],["dezinens","denizens"],["dfine","define"],["dfined","defined"],["dfines","defines"],["dfinition","definition"],["dfinitions","definitions"],["dgetttext","dgettext"],["diable","disable"],["diabled","disabled"],["diabler","disabler"],["diablers","disablers"],["diables","disables"],["diablical","diabolical"],["diabling","disabling"],["diaciritc","diacritic"],["diaciritcs","diacritics"],["diagnistic","diagnostic"],["diagnoal","diagonal"],["diagnoals","diagonals"],["diagnol","diagonal"],["diagnosics","diagnostics"],["diagnositc","diagnostic"],["diagnotic","diagnostic"],["diagnotics","diagnostics"],["diagnxostic","diagnostic"],["diagonale","diagonal"],["diagonales","diagonals"],["diagramas","diagrams"],["diagramm","diagram"],["dialaog","dialog"],["dialate","dilate"],["dialgo","dialog"],["dialgos","dialogs"],["dialig","dialog"],["dialigs","dialogs"],["diamater","diameter"],["diamaters","diameters"],["diamon","diamond"],["diamons","diamonds"],["diamter","diameter"],["diamters","diameters"],["diangose","diagnose"],["dianostic","diagnostic"],["dianostics","diagnostics"],["diaplay","display"],["diaplays","displays"],["diappeares","disappears"],["diarea","diarrhea"],["diaresis","diaeresis"],["diasble","disable"],["diasbled","disabled"],["diasbles","disables"],["diasbling","disabling"],["diaspra","diaspora"],["diaster","disaster"],["diatance","distance"],["diatancing","distancing"],["dicard","discard"],["dicarded","discarded"],["dicarding","discarding"],["dicards","discards"],["dicates","dictates"],["dicationaries","dictionaries"],["dicationary","dictionary"],["dicergence","divergence"],["dichtomy","dichotomy"],["dicionaries","dictionaries"],["dicionary","dictionary"],["dicipline","discipline"],["dicitonaries","dictionaries"],["dicitonary","dictionary"],["dicline","decline"],["diconnected","disconnected"],["diconnection","disconnection"],["diconnects","disconnects"],["dicover","discover"],["dicovered","discovered"],["dicovering","discovering"],["dicovers","discovers"],["dicovery","discovery"],["dicrectory","directory"],["dicrete","discrete"],["dicretion","discretion"],["dicretionary","discretionary"],["dicriminate","discriminate"],["dicriminated","discriminated"],["dicriminates","discriminates"],["dicriminating","discriminating"],["dicriminator","discriminator"],["dicriminators","discriminators"],["dicsriminated","discriminated"],["dictaionaries","dictionaries"],["dictaionary","dictionary"],["dictinary","dictionary"],["dictioanries","dictionaries"],["dictioanry","dictionary"],["dictionarys","dictionaries"],["dictionay","dictionary"],["dictionnaries","dictionaries"],["dictionnary","dictionary"],["dictionries","dictionaries"],["dictionry","dictionary"],["dictoinaries","dictionaries"],["dictoinary","dictionary"],["dictonaries","dictionaries"],["dictonary","dictionary"],["dictrionaries","dictionaries"],["dictrionary","dictionary"],["dicussed","discussed"],["dicussions","discussions"],["did'nt","didn't"],["didi","did"],["didn;t","didn't"],["didnt'","didn't"],["didnt't","didn't"],["didnt","didn't"],["didnt;","didn't"],["diect","direct"],["diectly","directly"],["dielectirc","dielectric"],["dielectircs","dielectrics"],["diemsion","dimension"],["dieties","deities"],["diety","deity"],["diference","difference"],["diferences","differences"],["diferent","different"],["diferentiate","differentiate"],["diferentiated","differentiated"],["diferentiates","differentiates"],["diferentiating","differentiating"],["diferently","differently"],["diferrent","different"],["diffcult","difficult"],["diffculties","difficulties"],["diffculty","difficulty"],["diffeent","different"],["diffence","difference"],["diffenet","different"],["diffenrence","difference"],["diffenrences","differences"],["differance","difference"],["differances","differences"],["differant","different"],["differantiate","differentiate"],["differantiation","differentiation"],["differantiator","differentiator"],["differantion","differentiation"],["differate","differentiate"],["differece","difference"],["differect","different"],["differen","different"],["differencess","differences"],["differencial","differential"],["differenciate","differentiate"],["differenciated","differentiated"],["differenciates","differentiates"],["differenciating","differentiating"],["differenciation","differentiation"],["differencies","differences"],["differenct","different"],["differend","different"],["differene","difference"],["differenes","differences"],["differenly","differently"],["differens","difference"],["differense","difference"],["differentiatiations","differentiations"],["differentiaton","differentiation"],["differentl","differently"],["differernt","different"],["differes","differs"],["differetnt","different"],["differnce","difference"],["differnces","differences"],["differnciate","differentiate"],["differnec","difference"],["differnece","difference"],["differneces","differences"],["differnecs","differences"],["differnence","difference"],["differnences","differences"],["differnencing","differencing"],["differnent","different"],["differnet","different"],["differnetiate","differentiate"],["differnetiated","differentiated"],["differnetly","differently"],["differnt","different"],["differntiable","differentiable"],["differntial","differential"],["differntials","differentials"],["differntiate","differentiate"],["differntiated","differentiated"],["differntiates","differentiates"],["differntiating","differentiating"],["differntly","differently"],["differred","differed"],["differrence","difference"],["differrent","different"],["difffered","differed"],["diffferent","different"],["diffferently","differently"],["difffers","differs"],["difficault","difficult"],["difficaulties","difficulties"],["difficaulty","difficulty"],["difficulity","difficulty"],["difficutl","difficult"],["difficutly","difficulty"],["diffreences","differences"],["diffreent","different"],["diffrence","difference"],["diffrences","differences"],["diffrent","different"],["diffrential","differential"],["diffrentiate","differentiate"],["diffrentiated","differentiated"],["diffrently","differently"],["diffrerence","difference"],["diffrerences","differences"],["diffult","difficult"],["diffussion","diffusion"],["diffussive","diffusive"],["dificulties","difficulties"],["dificulty","difficulty"],["difinition","definition"],["difinitions","definitions"],["difract","diffract"],["difracted","diffracted"],["difraction","diffraction"],["difractive","diffractive"],["difussion","diffusion"],["difussive","diffusive"],["digesty","digest"],["diggit","digit"],["diggital","digital"],["diggits","digits"],["digial","digital"],["digist","digits"],["digitalise","digitize"],["digitalising","digitizing"],["digitalize","digitize"],["digitalizing","digitizing"],["digitial","digital"],["digitis","digits"],["dignostics","diagnostics"],["dilema","dilemma"],["dilemas","dilemmas"],["dilineate","delineate"],["dillema","dilemma"],["dillemas","dilemmas"],["dilligence","diligence"],["dilligent","diligent"],["dilligently","diligently"],["dillimport","dllimport"],["dimansion","dimension"],["dimansional","dimensional"],["dimansions","dimensions"],["dimemsions","dimensions"],["dimenional","dimensional"],["dimenionalities","dimensionalities"],["dimenionality","dimensionality"],["dimenions","dimensions"],["dimenionsal","dimensional"],["dimenionsalities","dimensionalities"],["dimenionsality","dimensionality"],["dimenison","dimension"],["dimensinal","dimensional"],["dimensinoal","dimensional"],["dimensinos","dimensions"],["dimensionaility","dimensionality"],["dimensiones","dimensions"],["dimensonal","dimensional"],["dimenstion","dimension"],["dimenstions","dimensions"],["dimention","dimension"],["dimentional","dimensional"],["dimentionnal","dimensional"],["dimentionnals","dimensional"],["dimentions","dimensions"],["dimesions","dimensions"],["dimesnion","dimension"],["dimesnional","dimensional"],["dimesnions","dimensions"],["diminsh","diminish"],["diminshed","diminished"],["diminuitive","diminutive"],["dimissed","dismissed"],["dimmension","dimension"],["dimmensioned","dimensioned"],["dimmensioning","dimensioning"],["dimmensions","dimensions"],["dimnension","dimension"],["dimnention","dimension"],["dimunitive","diminutive"],["dinamic","dynamic"],["dinamically","dynamically"],["dinamicaly","dynamically"],["dinamiclly","dynamically"],["dinamicly","dynamically"],["dinmaic","dynamic"],["dinteractively","interactively"],["diong","doing"],["diosese","diocese"],["diphtong","diphthong"],["diphtongs","diphthongs"],["diplacement","displacement"],["diplay","display"],["diplayed","displayed"],["diplaying","displaying"],["diplays","displays"],["diplomancy","diplomacy"],["dipthong","diphthong"],["dipthongs","diphthongs"],["dircet","direct"],["dircetories","directories"],["dircetory","directory"],["dirctly","directly"],["dirctories","directories"],["dirctory","directory"],["direccion","direction"],["direcctly","directly"],["direcctory","directory"],["direcctorys","directories"],["direcctries","directories"],["direcdories","directories"],["direcdory","directory"],["direcdorys","directories"],["direcion","direction"],["direcions","directions"],["direciton","direction"],["direcitonal","directional"],["direcitons","directions"],["direclty","directly"],["direcly","directly"],["direcories","directories"],["direcory","directory"],["direcotories","directories"],["direcotory","directory"],["direcotries","directories"],["direcotry","directory"],["direcoty","directory"],["directd","directed"],["directely","directly"],["directes","directs"],["directgories","directories"],["directgory","directory"],["directiories","directories"],["directiory","directory"],["directoies","directories"],["directon","direction"],["directoories","directories"],["directoory","directory"],["directores","directories"],["directoris","directories"],["directort","directory"],["directorty","directory"],["directorys","directories"],["directoty","directory"],["directove","directive"],["directoves","directives"],["directoy","directory"],["directpries","directories"],["directpry","directory"],["directries","directories"],["directrive","directive"],["directrives","directives"],["directrly","directly"],["directroies","directories"],["directrories","directories"],["directrory","directory"],["directroy","directory"],["directry","directory"],["directsion","direction"],["directsions","directions"],["directtories","directories"],["directtory","directory"],["directy","directly"],["direectly","directly"],["diregard","disregard"],["direktly","directly"],["direrctor","director"],["direrctories","directories"],["direrctors","directors"],["direrctory","directory"],["diretive","directive"],["diretly","directly"],["diretories","directories"],["diretory","directory"],["direvctory","directory"],["dirived","derived"],["dirrectly","directly"],["dirtectory","directory"],["dirtyed","dirtied"],["dirtyness","dirtiness"],["dirver","driver"],["disabe","disable"],["disabeling","disabling"],["disabels","disables"],["disabes","disables"],["disabilitiles","disabilities"],["disabilitily","disability"],["disabiltities","disabilities"],["disabiltitiy","disability"],["disabing","disabling"],["disabl","disable"],["disablle","disable"],["disadvantadge","disadvantage"],["disagreeed","disagreed"],["disagress","disagrees"],["disalb","disable"],["disalbe","disable"],["disalbed","disabled"],["disalbes","disables"],["disale","disable"],["disaled","disabled"],["disalow","disallow"],["disambigouate","disambiguate"],["disambiguaiton","disambiguation"],["disambiguiation","disambiguation"],["disapear","disappear"],["disapeard","disappeared"],["disapeared","disappeared"],["disapearing","disappearing"],["disapears","disappears"],["disapline","discipline"],["disapoint","disappoint"],["disapointed","disappointed"],["disapointing","disappointing"],["disappared","disappeared"],["disappearaing","disappearing"],["disappeard","disappeared"],["disappearred","disappeared"],["disapper","disappear"],["disapperar","disappear"],["disapperarance","disappearance"],["disapperared","disappeared"],["disapperars","disappears"],["disappered","disappeared"],["disappering","disappearing"],["disappers","disappears"],["disapporval","disapproval"],["disapporve","disapprove"],["disapporved","disapproved"],["disapporves","disapproves"],["disapporving","disapproving"],["disapprouval","disapproval"],["disapprouve","disapprove"],["disapprouved","disapproved"],["disapprouves","disapproves"],["disapprouving","disapproving"],["disaproval","disapproval"],["disard","discard"],["disariable","desirable"],["disassebled","disassembled"],["disassocate","disassociate"],["disassocation","disassociation"],["disasssembler","disassembler"],["disasterous","disastrous"],["disatisfaction","dissatisfaction"],["disatisfied","dissatisfied"],["disatrous","disastrous"],["disbale","disable"],["disbaled","disabled"],["disbales","disables"],["disbaling","disabling"],["disble","disable"],["disbled","disabled"],["discared","discarded"],["discareded","discarded"],["discarge","discharge"],["discconecct","disconnect"],["discconeccted","disconnected"],["discconeccting","disconnecting"],["discconecction","disconnection"],["discconecctions","disconnections"],["discconeccts","disconnects"],["discconect","disconnect"],["discconected","disconnected"],["discconecting","disconnecting"],["discconection","disconnection"],["discconections","disconnections"],["discconects","disconnects"],["discconeect","disconnect"],["discconeected","disconnected"],["discconeecting","disconnecting"],["discconeection","disconnection"],["discconeections","disconnections"],["discconeects","disconnects"],["discconenct","disconnect"],["discconencted","disconnected"],["discconencting","disconnecting"],["discconenction","disconnection"],["discconenctions","disconnections"],["discconencts","disconnects"],["discconet","disconnect"],["discconeted","disconnected"],["discconeting","disconnecting"],["discconetion","disconnection"],["discconetions","disconnections"],["discconets","disconnects"],["disccuss","discuss"],["discernable","discernible"],["dischare","discharge"],["discimenation","dissemination"],["disciplins","disciplines"],["disclamer","disclaimer"],["disconecct","disconnect"],["disconeccted","disconnected"],["disconeccting","disconnecting"],["disconecction","disconnection"],["disconecctions","disconnections"],["disconeccts","disconnects"],["disconect","disconnect"],["disconected","disconnected"],["disconecting","disconnecting"],["disconection","disconnection"],["disconections","disconnections"],["disconects","disconnects"],["disconeect","disconnect"],["disconeected","disconnected"],["disconeecting","disconnecting"],["disconeection","disconnection"],["disconeections","disconnections"],["disconeects","disconnects"],["disconenct","disconnect"],["disconencted","disconnected"],["disconencting","disconnecting"],["disconenction","disconnection"],["disconenctions","disconnections"],["disconencts","disconnects"],["disconet","disconnect"],["disconeted","disconnected"],["disconeting","disconnecting"],["disconetion","disconnection"],["disconetions","disconnections"],["disconets","disconnects"],["disconnec","disconnect"],["disconneced","disconnected"],["disconnet","disconnect"],["disconneted","disconnected"],["disconneting","disconnecting"],["disconnets","disconnects"],["disconnnect","disconnect"],["discontigious","discontiguous"],["discontigous","discontiguous"],["discontiguities","discontinuities"],["discontinous","discontinuous"],["discontinuos","discontinuous"],["discoraged","discouraged"],["discouranged","discouraged"],["discourarged","discouraged"],["discourrage","discourage"],["discourraged","discouraged"],["discove","discover"],["discoved","discovered"],["discovereability","discoverability"],["discoveribility","discoverability"],["discovey","discovery"],["discovr","discover"],["discovred","discovered"],["discovring","discovering"],["discovrs","discovers"],["discrace","disgrace"],["discraced","disgraced"],["discraceful","disgraceful"],["discracefully","disgracefully"],["discracefulness","disgracefulness"],["discraces","disgraces"],["discracing","disgracing"],["discrards","discards"],["discreminates","discriminates"],["discrepencies","discrepancies"],["discrepency","discrepancy"],["discrepicies","discrepancies"],["discribe","describe"],["discribed","described"],["discribes","describes"],["discribing","describing"],["discription","description"],["discriptions","descriptions"],["discriptor's","descriptor's"],["discriptor","descriptor"],["discriptors","descriptors"],["disctinction","distinction"],["disctinctive","distinctive"],["disctinguish","distinguish"],["disctionaries","dictionaries"],["disctionary","dictionary"],["discuassed","discussed"],["discused","discussed"],["discusion","discussion"],["discusions","discussions"],["discusson","discussion"],["discussons","discussions"],["discusting","disgusting"],["discuusion","discussion"],["disdvantage","disadvantage"],["disecting","dissecting"],["disection","dissection"],["diselect","deselect"],["disemination","dissemination"],["disenchanged","disenchanted"],["disencouraged","discouraged"],["disertation","dissertation"],["disfunctional","dysfunctional"],["disfunctionality","dysfunctionality"],["disgn","design"],["disgned","designed"],["disgner","designer"],["disgning","designing-"],["disgnostic","diagnostic"],["disgnostics","diagnostics"],["disgns","designs"],["disguisting","disgusting"],["disharge","discharge"],["disign","design"],["disignated","designated"],["disinguish","distinguish"],["disiplined","disciplined"],["disired","desired"],["disitributions","distributions"],["diskrete","discrete"],["diskretion","discretion"],["diskretization","discretization"],["diskretize","discretize"],["diskretized","discretized"],["diskrimination","discrimination"],["dislaimer","disclaimer"],["dislay","display"],["dislayed","displayed"],["dislaying","displaying"],["dislays","displays"],["dislpay","display"],["dislpayed","displayed"],["dislpaying","displaying"],["dislpays","displays"],["disnabled","disabled"],["disobediance","disobedience"],["disobediant","disobedient"],["disokay","display"],["disolve","dissolve"],["disolved","dissolved"],["disonnect","disconnect"],["disonnected","disconnected"],["disover","discover"],["disovered","discovered"],["disovering","discovering"],["disovery","discovery"],["dispached","dispatched"],["dispair","despair"],["dispalcement","displacement"],["dispalcements","displacements"],["dispaly","display"],["dispalyable","displayable"],["dispalyed","displayed"],["dispalyes","displays"],["dispalying","displaying"],["dispalys","displays"],["disparingly","disparagingly"],["disparite","disparate"],["dispatcgh","dispatch"],["dispatchs","dispatches"],["dispath","dispatch"],["dispathed","dispatched"],["dispathes","dispatches"],["dispathing","dispatching"],["dispay","display"],["dispayed","displayed"],["dispayes","displays"],["dispayport","displayport"],["dispays","displays"],["dispbibute","distribute"],["dispell","dispel"],["dispence","dispense"],["dispenced","dispensed"],["dispencing","dispensing"],["dispertion","dispersion"],["dispicable","despicable"],["dispite","despite"],["displa","display"],["displacemnt","displacement"],["displacemnts","displacements"],["displacment","displacement"],["displacments","displacements"],["displayd","displayed"],["displayied","displayed"],["displayig","displaying"],["disply","display"],["displyed","displayed"],["displying","displaying"],["displys","displays"],["dispode","dispose"],["disporue","disparue"],["disporve","disprove"],["disporved","disproved"],["disporves","disproves"],["disporving","disproving"],["disposel","disposal"],["dispossable","disposable"],["dispossal","disposal"],["disposse","dispose"],["dispossing","disposing"],["dispostion","disposition"],["disproportiate","disproportionate"],["disproportionatly","disproportionately"],["disputandem","disputandum"],["disregrad","disregard"],["disrete","discrete"],["disretion","discretion"],["disribution","distribution"],["disricts","districts"],["disrm","disarm"],["dissable","disable"],["dissabled","disabled"],["dissables","disables"],["dissabling","disabling"],["dissadvantage","disadvantage"],["dissadvantages","disadvantages"],["dissagreement","disagreement"],["dissagregation","dissaggregation"],["dissallow","disallow"],["dissallowed","disallowed"],["dissallowing","disallowing"],["dissallows","disallows"],["dissalow","disallow"],["dissalowed","disallowed"],["dissalowing","disallowing"],["dissalows","disallows"],["dissambiguate","disambiguate"],["dissamble","disassemble"],["dissambled","disassembled"],["dissambler","disassembler"],["dissambles","disassembles"],["dissamblies","disassemblies"],["dissambling","disassembling"],["dissambly","disassembly"],["dissapate","dissipate"],["dissapates","dissipates"],["dissapear","disappear"],["dissapearance","disappearance"],["dissapeard","disappeared"],["dissapeared","disappeared"],["dissapearing","disappearing"],["dissapears","disappears"],["dissaper","disappear"],["dissaperd","disappeared"],["dissapered","disappeared"],["dissapering","disappearing"],["dissapers","disappears"],["dissapoint","disappoint"],["dissapointed","disappointed"],["dissapointing","disappointing"],["dissapoints","disappoints"],["dissappear","disappear"],["dissappeard","disappeared"],["dissappeared","disappeared"],["dissappearing","disappearing"],["dissappears","disappears"],["dissapper","disappear"],["dissapperd","disappeared"],["dissappered","disappeared"],["dissappering","disappearing"],["dissappers","disappears"],["dissappointed","disappointed"],["dissapprove","disapprove"],["dissapproves","disapproves"],["dissarray","disarray"],["dissasemble","disassemble"],["dissasembled","disassembled"],["dissasembler","disassembler"],["dissasembles","disassembles"],["dissasemblies","disassemblies"],["dissasembling","disassembling"],["dissasembly","disassembly"],["dissasociate","disassociate"],["dissasociated","disassociated"],["dissasociates","disassociates"],["dissasociation","disassociation"],["dissassemble","disassemble"],["dissassembled","disassembled"],["dissassembler","disassembler"],["dissassembles","disassembles"],["dissassemblies","disassemblies"],["dissassembling","disassembling"],["dissassembly","disassembly"],["dissassociate","disassociate"],["dissassociated","disassociated"],["dissassociates","disassociates"],["dissassociating","disassociating"],["dissaster","disaster"],["dissasters","disasters"],["dissble","disable"],["dissbled","disabled"],["dissbles","disables"],["dissbling","disabling"],["dissconect","disconnect"],["dissconnect","disconnect"],["dissconnected","disconnected"],["dissconnects","disconnects"],["disscover","discover"],["disscovered","discovered"],["disscovering","discovering"],["disscovers","discovers"],["disscovery","discovery"],["dissct","dissect"],["disscted","dissected"],["disscting","dissecting"],["dissctor","dissector"],["dissctors","dissectors"],["disscts","dissects"],["disscuesed","discussed"],["disscus","discuss"],["disscused","discussed"],["disscuses","discusses"],["disscusing","discussing"],["disscusion","discussion"],["disscuss","discuss"],["disscussed","discussed"],["disscusses","discusses"],["disscussing","discussing"],["disscussion","discussion"],["disscussions","discussions"],["disshearteningly","dishearteningly"],["dissimialr","dissimilar"],["dissimialrity","dissimilarity"],["dissimialrly","dissimilarly"],["dissimiar","dissimilar"],["dissimilarily","dissimilarly"],["dissimilary","dissimilarly"],["dissimilat","dissimilar"],["dissimilia","dissimilar"],["dissimiliar","dissimilar"],["dissimiliarity","dissimilarity"],["dissimiliarly","dissimilarly"],["dissimiliarty","dissimilarity"],["dissimiliary","dissimilarity"],["dissimillar","dissimilar"],["dissimlar","dissimilar"],["dissimlarlity","dissimilarity"],["dissimlarly","dissimilarly"],["dissimliar","dissimilar"],["dissimliarly","dissimilarly"],["dissimmetric","dissymmetric"],["dissimmetrical","dissymmetrical"],["dissimmetry","dissymmetry"],["dissmantle","dismantle"],["dissmantled","dismantled"],["dissmantles","dismantles"],["dissmantling","dismantling"],["dissmis","dismiss"],["dissmised","dismissed"],["dissmises","dismisses"],["dissmising","dismissing"],["dissmiss","dismiss"],["dissmissed","dismissed"],["dissmisses","dismisses"],["dissmissing","dismissing"],["dissobediance","disobedience"],["dissobediant","disobedient"],["dissobedience","disobedience"],["dissobedient","disobedient"],["dissplay","display"],["dissrupt","disrupt"],["dissrupted","disrupted"],["dissrupting","disrupting"],["dissrupts","disrupts"],["disssemble","disassemble"],["disssembled","disassembled"],["disssembler","disassembler"],["disssembles","disassembles"],["disssemblies","disassemblies"],["disssembling","disassembling"],["disssembly","disassembly"],["disssociate","dissociate"],["disssociated","dissociated"],["disssociates","dissociates"],["disssociating","dissociating"],["distaced","distanced"],["distange","distance"],["distanse","distance"],["distantce","distance"],["distarct","distract"],["distater","disaster"],["distengish","distinguish"],["distibute","distribute"],["distibuted","distributed"],["distibutes","distributes"],["distibuting","distributing"],["distibution","distribution"],["distibutions","distributions"],["distiction","distinction"],["distictly","distinctly"],["distiguish","distinguish"],["distiguished","distinguished"],["distinative","distinctive"],["distingish","distinguish"],["distingished","distinguished"],["distingishes","distinguishes"],["distingishing","distinguishing"],["distingiush","distinguish"],["distingquished","distinguished"],["distinguise","distinguish"],["distinguised","distinguished"],["distinguises","distinguishes"],["distingush","distinguish"],["distingushed","distinguished"],["distingushes","distinguishes"],["distingushing","distinguishing"],["distingusih","distinguish"],["distinquish","distinguish"],["distinquishable","distinguishable"],["distinquished","distinguished"],["distinquishes","distinguishes"],["distinquishing","distinguishing"],["distintions","distinctions"],["distirbute","distribute"],["distirbuted","distributed"],["distirbutes","distributes"],["distirbuting","distributing"],["distirbution","distribution"],["distirbutions","distributions"],["distirted","distorted"],["distnace","distance"],["distnaces","distances"],["distnce","distance"],["distnces","distances"],["distnct","distinct"],["distncte","distance"],["distnctes","distances"],["distnguish","distinguish"],["distnguished","distinguished"],["distniguish","distinguish"],["distniguished","distinguished"],["distorsion","distortion"],["distorsional","distortional"],["distorsions","distortions"],["distrbute","distribute"],["distrbuted","distributed"],["distrbutes","distributes"],["distrbuting","distributing"],["distrbution","distribution"],["distrbutions","distributions"],["distrct","district"],["distrcts","districts"],["distrebuted","distributed"],["distribtion","distribution"],["distribtions","distributions"],["distribtuion","distribution"],["distribtuions","distributions"],["distribtution","distributions"],["distribue","distribute"],["distribued","distributed"],["distribues","distributes"],["distribuion","distribution"],["distribuite","distribute"],["distribuited","distributed"],["distribuiting","distributing"],["distribuition","distribution"],["distribuitng","distributing"],["distribure","distribute"],["districct","district"],["distrobute","distribute"],["distrobuted","distributed"],["distrobutes","distributes"],["distrobuting","distributing"],["distrobution","distribution"],["distrobutions","distributions"],["distrobuts","distributes"],["distroname","distro name"],["distroying","destroying"],["distrub","disturb"],["distrubiotion","distribution"],["distrubite","distribute"],["distrubtion","distribution"],["distrubute","distribute"],["distrubuted","distributed"],["distrubution","distribution"],["distrubutions","distributions"],["distrubutor","distributor"],["distrubutors","distributors"],["distruction","destruction"],["distructive","destructive"],["distructor","destructor"],["distructors","destructors"],["distuingish","distinguish"],["disuade","dissuade"],["disucssion","discussion"],["disucssions","discussions"],["disucussion","discussion"],["disussion","discussion"],["disussions","discussions"],["disutils","distutils"],["ditance","distance"],["ditial","digital"],["ditinguishes","distinguishes"],["ditorconfig","editorconfig"],["ditribute","distribute"],["ditributed","distributed"],["ditribution","distribution"],["ditributions","distributions"],["divde","divide"],["divded","divided"],["divdes","divides"],["divding","dividing"],["divertion","diversion"],["divertions","diversions"],["divet","divot"],["divice","device"],["divicer","divider"],["divion","division"],["divisable","divisible"],["divisior","divisor"],["divison","division"],["divisons","divisions"],["divrese","diverse"],["divsion","division"],["divsions","divisions"],["divsiors","divisors"],["dloating","floating"],["dnamically","dynamically"],["dne","done"],["dnymaic","dynamic"],["do'nt","don't"],["doagonal","diagonal"],["doagonals","diagonals"],["doalog","dialog"],["doamins","domains"],["doasn't","doesn't"],["doble","double"],["dobled","doubled"],["dobles","doubles"],["dobling","doubling"],["doccument","document"],["doccumented","documented"],["doccuments","documents"],["dockson","dachshund"],["docmenetation","documentation"],["docmuent","document"],["docmunet","document"],["docmunetation","documentation"],["docmuneted","documented"],["docmuneting","documenting"],["docmunets","documents"],["docoment","document"],["docomentation","documentation"],["docomented","documented"],["docomenting","documenting"],["docoments","documents"],["docrines","doctrines"],["docstatistik","docstatistic"],["docsund","dachshund"],["doctines","doctrines"],["doctorial","doctoral"],["docucument","document"],["docuement","document"],["docuements","documents"],["docuemnt","document"],["docuemnts","documents"],["docuemtn","document"],["docuemtnation","documentation"],["docuemtned","documented"],["docuemtning","documenting"],["docuemtns","documents"],["docuent","document"],["docuentation","documentation"],["documant","document"],["documantation","documentation"],["documants","documents"],["documation","documentation"],["documemt","document"],["documen","document"],["documenatation","documentation"],["documenation","documentation"],["documenatry","documentary"],["documenet","document"],["documenetation","documentation"],["documeneted","documented"],["documeneter","documenter"],["documeneters","documenters"],["documeneting","documenting"],["documenets","documents"],["documentaion","documentation"],["documentaiton","documentation"],["documentataion","documentation"],["documentataions","documentations"],["documentaton","documentation"],["documentes","documents"],["documention","documentation"],["documetation","documentation"],["documetnation","documentation"],["documment","document"],["documments","documents"],["documnet","document"],["documnetation","documentation"],["documument","document"],["docunment","document"],["doed","does"],["doen's","doesn't"],["doen't","doesn't"],["doen","done"],["doens't","doesn't"],["doens","does"],["doensn't","doesn't"],["does'nt","doesn't"],["does't","doesn't"],["doese't","doesn't"],["doese","does"],["doesen't","doesn't"],["doesent'","doesn't"],["doesent","doesn't"],["doesits","does its"],["doesn'","doesn't"],["doesn't't","doesn't"],["doesn;t","doesn't"],["doesnexist","doesn't exist"],["doesnt'","doesn't"],["doesnt't","doesn't"],["doesnt;","doesn't"],["doess","does"],["doestn't","doesn't"],["doign","doing"],["doiing","doing"],["doiuble","double"],["doiubled","doubled"],["dokc","dock"],["dokced","docked"],["dokcer","docker"],["dokcing","docking"],["dokcre","docker"],["dokcs","docks"],["doller","dollar"],["dollers","dollars"],["dollor","dollar"],["dollors","dollars"],["domait","domain"],["doman","domain"],["domans","domains"],["domension","dimension"],["domensions","dimensions"],["domian","domain"],["domians","domains"],["dominanted","dominated"],["dominanting","dominating"],["dominantion","domination"],["dominaton","domination"],["dominent","dominant"],["dominiant","dominant"],["domonstrate","demonstrate"],["domonstrates","demonstrates"],["domonstrating","demonstrating"],["domonstration","demonstration"],["domonstrations","demonstrations"],["donain","domain"],["donains","domains"],["donejun","dungeon"],["donejuns","dungeons"],["donig","doing"],["donn't","don't"],["donnot","do not"],["dont'","don't"],["dont't","don't"],["donwload","download"],["donwloaded","downloaded"],["donwloading","downloading"],["donwloads","downloads"],["doocument","document"],["doocumentaries","documentaries"],["doocumentary","documentary"],["doocumentation","documentation"],["doocumentations","documentations"],["doocumented","documented"],["doocumenting","documenting"],["doocuments","documents"],["doorjam","doorjamb"],["dorce","force"],["dorced","forced"],["dorceful","forceful"],["dordered","ordered"],["dorment","dormant"],["dorp","drop"],["dosclosed","disclosed"],["doscloses","discloses"],["dosclosing","disclosing"],["dosclosure","disclosure"],["dosclosures","disclosures"],["dosen't","doesn't"],["dosen;t","doesn't"],["dosens","dozens"],["dosent'","doesn't"],["dosent","doesn't"],["dosent;","doesn't"],["dosn't","doesn't"],["dosn;t","doesn't"],["dosnt","doesn't"],["dosposing","disposing"],["dosument","document"],["dosuments","documents"],["dota","data"],["doube","double"],["doube-click","double-click"],["doube-clicked","double-clicked"],["doube-clicks","double-clicks"],["doube-quote","double-quote"],["doube-quoted","double-quoted"],["doube-word","double-word"],["doube-wprd","double-word"],["doubeclick","double-click"],["doubeclicked","double-clicked"],["doubeclicks","double-clicks"],["doubel","double"],["doubele-click","double-click"],["doubele-clicked","double-clicked"],["doubele-clicks","double-clicks"],["doubeleclick","double-click"],["doubeleclicked","double-clicked"],["doubeleclicks","double-clicks"],["doubely","doubly"],["doubes","doubles"],["doublde","double"],["doublded","doubled"],["doubldes","doubles"],["doubleclick","double-click"],["doublely","doubly"],["doubletquote","doublequote"],["doubth","doubt"],["doubthed","doubted"],["doubthing","doubting"],["doubths","doubts"],["doucment","document"],["doucmentated","documented"],["doucmentation","documentation"],["doucmented","documented"],["doucmenter","documenter"],["doucmenters","documenters"],["doucmentes","documents"],["doucmenting","documenting"],["doucments","documents"],["douible","double"],["douibled","doubled"],["doulbe","double"],["doumentc","document"],["dout","doubt"],["dowgrade","downgrade"],["dowlink","downlink"],["dowlinks","downlinks"],["dowload","download"],["dowloaded","downloaded"],["dowloader","downloader"],["dowloaders","downloaders"],["dowloading","downloading"],["dowloads","downloads"],["downagrade","downgrade"],["downagraded","downgraded"],["downagrades","downgrades"],["downagrading","downgrading"],["downgade","downgrade"],["downgaded","downgraded"],["downgades","downgrades"],["downgading","downgrading"],["downgarade","downgrade"],["downgaraded","downgraded"],["downgarades","downgrades"],["downgarading","downgrading"],["downgarde","downgrade"],["downgarded","downgraded"],["downgardes","downgrades"],["downgarding","downgrading"],["downgarte","downgrade"],["downgarted","downgraded"],["downgartes","downgrades"],["downgarting","downgrading"],["downgradde","downgrade"],["downgradded","downgraded"],["downgraddes","downgrades"],["downgradding","downgrading"],["downgradei","downgrade"],["downgradingn","downgrading"],["downgrate","downgrade"],["downgrated","downgraded"],["downgrates","downgrades"],["downgrating","downgrading"],["downlad","download"],["downladed","downloaded"],["downlading","downloading"],["downlads","downloads"],["downlaod","download"],["downlaoded","downloaded"],["downlaodes","downloads"],["downlaoding","downloading"],["downlaods","downloads"],["downloadmanger","downloadmanager"],["downlod","download"],["downloded","downloaded"],["downloding","downloading"],["downlods","downloads"],["downlowd","download"],["downlowded","downloaded"],["downlowding","downloading"],["downlowds","downloads"],["downoad","download"],["downoaded","downloaded"],["downoading","downloading"],["downoads","downloads"],["downoload","download"],["downoloaded","downloaded"],["downoloading","downloading"],["downoloads","downloads"],["downrade","downgrade"],["downraded","downgraded"],["downrades","downgrades"],["downrading","downgrading"],["downrgade","downgrade"],["downrgaded","downgraded"],["downrgades","downgrades"],["downrgading","downgrading"],["downsteram","downstream"],["downsteramed","downstreamed"],["downsteramer","downstreamer"],["downsteramers","downstreamers"],["downsteraming","downstreaming"],["downsterams","downstreams"],["dows","does"],["dowt","doubt"],["doxgen","doxygen"],["doygen","doxygen"],["dpeends","depends"],["dpendent","dependent"],["dpkg-buildpackge","dpkg-buildpackage"],["dpkg-buildpackges","dpkg-buildpackages"],["dpuble","double"],["dpubles","doubles"],["draconain","draconian"],["dragable","draggable"],["draged","dragged"],["draging","dragging"],["draing","drawing"],["drammatic","dramatic"],["dramtic","dramatic"],["dran","drawn"],["drastical","drastically"],["drasticaly","drastically"],["drats","drafts"],["draughtman","draughtsman"],["Dravadian","Dravidian"],["draview","drawview"],["drawack","drawback"],["drawacks","drawbacks"],["drawm","drawn"],["drawng","drawing"],["dreasm","dreams"],["dreawn","drawn"],["dregee","degree"],["dregees","degrees"],["dregree","degree"],["dregrees","degrees"],["drescription","description"],["drescriptions","descriptions"],["driagram","diagram"],["driagrammed","diagrammed"],["driagramming","diagramming"],["driagrams","diagrams"],["driectly","directly"],["drity","dirty"],["driveing","driving"],["drivr","driver"],["drnik","drink"],["drob","drop"],["dropabel","droppable"],["dropable","droppable"],["droped","dropped"],["droping","dropping"],["droppend","dropped"],["droppped","dropped"],["dropse","drops"],["droput","dropout"],["druing","during"],["druming","drumming"],["drummless","drumless"],["drvier","driver"],["drwaing","drawing"],["drwawing","drawing"],["drwawings","drawings"],["dscrete","discrete"],["dscretion","discretion"],["dscribed","described"],["dsiable","disable"],["dsiabled","disabled"],["dsplays","displays"],["dstination","destination"],["dstinations","destinations"],["dthe","the"],["dtoring","storing"],["dubios","dubious"],["dublicade","duplicate"],["dublicat","duplicate"],["dublicate","duplicate"],["dublicated","duplicated"],["dublicates","duplicates"],["dublication","duplication"],["ducment","document"],["ducument","document"],["duirng","during"],["dulicate","duplicate"],["dum","dumb"],["dumplicate","duplicate"],["dumplicated","duplicated"],["dumplicates","duplicates"],["dumplicating","duplicating"],["duoblequote","doublequote"],["dupicate","duplicate"],["duplacate","duplicate"],["duplacated","duplicated"],["duplacates","duplicates"],["duplacation","duplication"],["duplacte","duplicate"],["duplacted","duplicated"],["duplactes","duplicates"],["duplaction","duplication"],["duplaicate","duplicate"],["duplaicated","duplicated"],["duplaicates","duplicates"],["duplaication","duplication"],["duplate","duplicate"],["duplated","duplicated"],["duplates","duplicates"],["duplation","duplication"],["duplcate","duplicate"],["duplciate","duplicate"],["dupliacate","duplicate"],["dupliacates","duplicates"],["dupliace","duplicate"],["dupliacte","duplicate"],["dupliacted","duplicated"],["dupliactes","duplicates"],["dupliagte","duplicate"],["dupliate","duplicate"],["dupliated","duplicated"],["dupliates","duplicates"],["dupliating","duplicating"],["dupliation","duplication"],["dupliations","duplications"],["duplicat","duplicate"],["duplicatd","duplicated"],["duplicats","duplicates"],["dupplicate","duplicate"],["dupplicated","duplicated"],["dupplicates","duplicates"],["dupplicating","duplicating"],["dupplication","duplication"],["dupplications","duplications"],["durationm","duration"],["durectories","directories"],["durectory","directory"],["dureing","during"],["durig","during"],["durining","during"],["durning","during"],["durring","during"],["duting","during"],["dyanamically","dynamically"],["dyanmic","dynamic"],["dyanmically","dynamically"],["dyas","dryas"],["dymamically","dynamically"],["dynamc","dynamic"],["dynamcly","dynamically"],["dynamcs","dynamics"],["dynamicaly","dynamically"],["dynamiclly","dynamically"],["dynamicly","dynamically"],["dynaminc","dynamic"],["dynamincal","dynamical"],["dynamincally","dynamically"],["dynamincs","dynamics"],["dynamlic","dynamic"],["dynamlically","dynamically"],["dynically","dynamically"],["dynmaic","dynamic"],["dynmaically","dynamically"],["dynmic","dynamic"],["dynmically","dynamically"],["dynmics","dynamics"],["eabled","enabled"],["eacf","each"],["eacg","each"],["eachother","each other"],["eachs","each"],["eactly","exactly"],["eagrely","eagerly"],["eahc","each"],["eailier","earlier"],["eaiser","easier"],["ealier","earlier"],["ealiest","earliest"],["eample","example"],["eamples","examples"],["eanable","enable"],["eanble","enable"],["earleir","earlier"],["earler","earlier"],["earliear","earlier"],["earlies","earliest"],["earlist","earliest"],["earlyer","earlier"],["earnt","earned"],["earpeice","earpiece"],["easely","easily"],["easili","easily"],["easiliy","easily"],["easilly","easily"],["easist","easiest"],["easiy","easily"],["easly","easily"],["easyer","easier"],["eaxct","exact"],["ebale","enable"],["ebaled","enabled"],["EBCIDC","EBCDIC"],["ebedded","embedded"],["eccessive","excessive"],["ecclectic","eclectic"],["eceonomy","economy"],["ecept","except"],["eception","exception"],["eceptions","exceptions"],["ecidious","deciduous"],["eclise","eclipse"],["eclispe","eclipse"],["ecnetricity","eccentricity"],["ecognized","recognized"],["ecomonic","economic"],["ecounter","encounter"],["ecountered","encountered"],["ecountering","encountering"],["ecounters","encounters"],["ecplicit","explicit"],["ecplicitly","explicitly"],["ecspecially","especially"],["ect","etc"],["ecxept","except"],["ecxite","excite"],["ecxited","excited"],["ecxites","excites"],["ecxiting","exciting"],["ecxtracted","extracted"],["EDCDIC","EBCDIC"],["eddge","edge"],["eddges","edges"],["edditable","editable"],["ede","edge"],["ediable","editable"],["edige","edge"],["ediges","edges"],["ediit","edit"],["ediiting","editing"],["ediitor","editor"],["ediitors","editors"],["ediits","edits"],["editedt","edited"],["editiing","editing"],["editoro","editor"],["editot","editor"],["editots","editors"],["editt","edit"],["editted","edited"],["editter","editor"],["editting","editing"],["edittor","editor"],["edn","end"],["ednif","endif"],["edxpected","expected"],["eearly","early"],["eeeprom","EEPROM"],["eescription","description"],["eevery","every"],["eeverything","everything"],["eeverywhere","everywhere"],["eextract","extract"],["eextracted","extracted"],["eextracting","extracting"],["eextraction","extraction"],["eextracts","extracts"],["efect","effect"],["efective","effective"],["efectively","effectively"],["efel","evil"],["eferences","references"],["efetivity","effectivity"],["effciency","efficiency"],["effcient","efficient"],["effciently","efficiently"],["effctive","effective"],["effctively","effectively"],["effeciency","efficiency"],["effecient","efficient"],["effeciently","efficiently"],["effecitvely","effectively"],["effeck","effect"],["effecked","effected"],["effecks","effects"],["effeckt","effect"],["effectice","effective"],["effecticely","effectively"],["effectiviness","effectiveness"],["effectivness","effectiveness"],["effectly","effectively"],["effedts","effects"],["effekt","effect"],["effexts","effects"],["efficcient","efficient"],["efficencty","efficiency"],["efficency","efficiency"],["efficent","efficient"],["efficently","efficiently"],["effiency","efficiency"],["effient","efficient"],["effiently","efficiently"],["effulence","effluence"],["eforceable","enforceable"],["egal","equal"],["egals","equals"],["egde","edge"],["egdes","edges"],["ege","edge"],["egenral","general"],["egenralise","generalise"],["egenralised","generalised"],["egenralises","generalises"],["egenralize","generalize"],["egenralized","generalized"],["egenralizes","generalizes"],["egenrally","generally"],["ehance","enhance"],["ehanced","enhanced"],["ehancement","enhancement"],["ehancements","enhancements"],["ehenever","whenever"],["ehough","enough"],["ehr","her"],["ehternet","Ethernet"],["ehthernet","ethernet"],["eighter","either"],["eihter","either"],["einstance","instance"],["eisntance","instance"],["eiter","either"],["eith","with"],["elaspe","elapse"],["elasped","elapsed"],["elaspes","elapses"],["elasping","elapsing"],["elction","election"],["elctromagnetic","electromagnetic"],["elease","release"],["eleased","released"],["eleases","releases"],["eleate","relate"],["electical","electrical"],["electirc","electric"],["electircal","electrical"],["electrial","electrical"],["electricly","electrically"],["electricty","electricity"],["electrinics","electronics"],["electriv","electric"],["electrnoics","electronics"],["eleemnt","element"],["eleent","element"],["elegible","eligible"],["elelement","element"],["elelements","elements"],["elelment","element"],["elelmental","elemental"],["elelmentary","elementary"],["elelments","elements"],["elemant","element"],["elemantary","elementary"],["elemement","element"],["elemements","elements"],["elememt","element"],["elemen","element"],["elemenent","element"],["elemenental","elemental"],["elemenents","elements"],["elemenet","element"],["elemenets","elements"],["elemens","elements"],["elemenst","elements"],["elementay","elementary"],["elementry","elementary"],["elemet","element"],["elemetal","elemental"],["elemetn","element"],["elemetns","elements"],["elemets","elements"],["eleminate","eliminate"],["eleminated","eliminated"],["eleminates","eliminates"],["eleminating","eliminating"],["elemnets","elements"],["elemnt","element"],["elemntal","elemental"],["elemnts","elements"],["elemt","element"],["elemtary","elementary"],["elemts","elements"],["elenment","element"],["eles","else"],["eletricity","electricity"],["eletromagnitic","electromagnetic"],["eletronic","electronic"],["elgible","eligible"],["elicided","elicited"],["eligable","eligible"],["elimentary","elementary"],["elimiante","eliminate"],["elimiate","eliminate"],["eliminetaion","elimination"],["elimintate","eliminate"],["eliminte","eliminate"],["elimnated","eliminated"],["eliptic","elliptic"],["eliptical","elliptical"],["elipticity","ellipticity"],["ellapsed","elapsed"],["ellected","elected"],["ellement","element"],["ellemental","elemental"],["ellementals","elementals"],["ellements","elements"],["elliminate","eliminate"],["elliminated","eliminated"],["elliminates","eliminates"],["elliminating","eliminating"],["ellipsises","ellipsis"],["ellision","elision"],["elmenet","element"],["elmenets","elements"],["elment","element"],["elments","elements"],["elminate","eliminate"],["elminated","eliminated"],["elminates","eliminates"],["elminating","eliminating"],["elphant","elephant"],["elsef","elseif"],["elsehwere","elsewhere"],["elseof","elseif"],["elseswhere","elsewhere"],["elsewehere","elsewhere"],["elsewere","elsewhere"],["elsewhwere","elsewhere"],["elsiof","elseif"],["elsof","elseif"],["emabaroged","embargoed"],["emable","enable"],["emabled","enabled"],["emables","enables"],["emabling","enabling"],["emailling","emailing"],["embarass","embarrass"],["embarassed","embarrassed"],["embarasses","embarrasses"],["embarassing","embarrassing"],["embarassment","embarrassment"],["embargos","embargoes"],["embarras","embarrass"],["embarrased","embarrassed"],["embarrasing","embarrassing"],["embarrasingly","embarrassingly"],["embarrasment","embarrassment"],["embbedded","embedded"],["embbeded","embedded"],["embdder","embedder"],["embdedded","embedded"],["embebbed","embedded"],["embedd","embed"],["embeddded","embedded"],["embeddeding","embedding"],["embedds","embeds"],["embeded","embedded"],["embededded","embedded"],["embeed","embed"],["embezelled","embezzled"],["emblamatic","emblematic"],["embold","embolden"],["embrodery","embroidery"],["emcompass","encompass"],["emcompassed","encompassed"],["emcompassing","encompassing"],["emedded","embedded"],["emegrency","emergency"],["emenet","element"],["emenets","elements"],["emiited","emitted"],["eminate","emanate"],["eminated","emanated"],["emision","emission"],["emited","emitted"],["emiting","emitting"],["emlation","emulation"],["emmediately","immediately"],["emminently","eminently"],["emmisaries","emissaries"],["emmisarries","emissaries"],["emmisarry","emissary"],["emmisary","emissary"],["emmision","emission"],["emmisions","emissions"],["emmit","emit"],["emmited","emitted"],["emmiting","emitting"],["emmits","emits"],["emmitted","emitted"],["emmitting","emitting"],["emnity","enmity"],["emoty","empty"],["emough","enough"],["emought","enough"],["emperical","empirical"],["emperically","empirically"],["emphaised","emphasised"],["emphsis","emphasis"],["emphysyma","emphysema"],["empiracally","empirically"],["empiricaly","empirically"],["emplyed","employed"],["emplyee","employee"],["emplyees","employees"],["emplyer","employer"],["emplyers","employers"],["emplying","employing"],["emplyment","employment"],["emplyments","employments"],["emporer","emperor"],["emprically","empirically"],["emprisoned","imprisoned"],["emprove","improve"],["emproved","improved"],["emprovement","improvement"],["emprovements","improvements"],["emproves","improves"],["emproving","improving"],["emptniess","emptiness"],["emptry","empty"],["emptyed","emptied"],["emptyy","empty"],["empy","empty"],["emtied","emptied"],["emties","empties"],["emtpies","empties"],["emtpy","empty"],["emty","empty"],["emtying","emptying"],["emultor","emulator"],["emultors","emulators"],["enabe","enable"],["enabel","enable"],["enabeled","enabled"],["enabeling","enabling"],["enabing","enabling"],["enabledi","enabled"],["enableing","enabling"],["enablen","enabled"],["enalbe","enable"],["enalbed","enabled"],["enalbes","enables"],["enameld","enameled"],["enaugh","enough"],["enbable","enable"],["enbabled","enabled"],["enbabling","enabling"],["enbale","enable"],["enbaled","enabled"],["enbales","enables"],["enbaling","enabling"],["enbedding","embedding"],["enble","enable"],["encapsualtes","encapsulates"],["encapsulatzion","encapsulation"],["encapsultion","encapsulation"],["encaspulate","encapsulate"],["encaspulated","encapsulated"],["encaspulates","encapsulates"],["encaspulating","encapsulating"],["encaspulation","encapsulation"],["enchanced","enhanced"],["enclosng","enclosing"],["enclosue","enclosure"],["enclosung","enclosing"],["enclude","include"],["encluding","including"],["encocde","encode"],["encocded","encoded"],["encocder","encoder"],["encocders","encoders"],["encocdes","encodes"],["encocding","encoding"],["encocdings","encodings"],["encodingt","encoding"],["encodning","encoding"],["encodnings","encodings"],["encompas","encompass"],["encompased","encompassed"],["encompases","encompasses"],["encompasing","encompassing"],["enconde","encode"],["enconded","encoded"],["enconder","encoder"],["enconders","encoders"],["encondes","encodes"],["enconding","encoding"],["encondings","encodings"],["encorded","encoded"],["encorder","encoder"],["encorders","encoders"],["encording","encoding"],["encordings","encodings"],["encorporating","incorporating"],["encoser","encoder"],["encosers","encoders"],["encosure","enclosure"],["encounterd","encountered"],["encountres","encounters"],["encouraing","encouraging"],["encouter","encounter"],["encoutered","encountered"],["encouters","encounters"],["encoutner","encounter"],["encoutners","encounters"],["encouttering","encountering"],["encrcypt","encrypt"],["encrcypted","encrypted"],["encrcyption","encryption"],["encrcyptions","encryptions"],["encrcypts","encrypts"],["encript","encrypt"],["encripted","encrypted"],["encription","encryption"],["encriptions","encryptions"],["encripts","encrypts"],["encrpt","encrypt"],["encrpted","encrypted"],["encrption","encryption"],["encrptions","encryptions"],["encrpts","encrypts"],["encrupted","encrypted"],["encrypiton","encryption"],["encryptiion","encryption"],["encryptio","encryption"],["encryptiong","encryption"],["encrytion","encryption"],["encrytped","encrypted"],["encrytption","encryption"],["encupsulates","encapsulates"],["encylopedia","encyclopedia"],["encypted","encrypted"],["encyption","encryption"],["endcoded","encoded"],["endcoder","encoder"],["endcoders","encoders"],["endcodes","encodes"],["endcoding","encoding"],["endcodings","encodings"],["endding","ending"],["ende","end"],["endevors","endeavors"],["endevour","endeavour"],["endfi","endif"],["endianes","endianness"],["endianess","endianness"],["endianity","endianness"],["endiannes","endianness"],["endig","ending"],["endiness","endianness"],["endnoden","endnode"],["endoint","endpoint"],["endolithes","endoliths"],["endpints","endpoints"],["endpiont","endpoint"],["endpionts","endpoints"],["endpont","endpoint"],["endponts","endpoints"],["endsup","ends up"],["enduce","induce"],["eneables","enables"],["enebale","enable"],["enebaled","enabled"],["eneble","enable"],["ened","need"],["enegeries","energies"],["enegery","energy"],["enehanced","enhanced"],["enery","energy"],["eneter","enter"],["enetered","entered"],["enetities","entities"],["enetity","entity"],["eneumeration","enumeration"],["eneumerations","enumerations"],["eneumretaion","enumeration"],["eneumretaions","enumerations"],["enew","new"],["enflamed","inflamed"],["enforcable","enforceable"],["enforceing","enforcing"],["enforcmement","enforcement"],["enforcment","enforcement"],["enfore","enforce"],["enfored","enforced"],["enfores","enforces"],["enforncing","enforcing"],["engagment","engagement"],["engeneer","engineer"],["engeneering","engineering"],["engery","energy"],["engieer","engineer"],["engieneer","engineer"],["engieneers","engineers"],["enginee","engine"],["enginge","engine"],["enginin","engine"],["enginineer","engineer"],["engoug","enough"],["enhabce","enhance"],["enhabced","enhanced"],["enhabces","enhances"],["enhabcing","enhancing"],["enhace","enhance"],["enhaced","enhanced"],["enhacement","enhancement"],["enhacements","enhancements"],["enhancd","enhanced"],["enhancment","enhancement"],["enhancments","enhancements"],["enhaned","enhanced"],["enhence","enhance"],["enhenced","enhanced"],["enhencement","enhancement"],["enhencements","enhancements"],["enhencment","enhancement"],["enhencments","enhancements"],["enironment","environment"],["enironments","environments"],["enities","entities"],["enitities","entities"],["enitity","entity"],["enitre","entire"],["enivornment","environment"],["enivornments","environments"],["enivronment","environment"],["enlargment","enlargement"],["enlargments","enlargements"],["enlightnment","enlightenment"],["enlose","enclose"],["enmpty","empty"],["enmum","enum"],["ennpoint","endpoint"],["enntries","entries"],["enocde","encode"],["enocded","encoded"],["enocder","encoder"],["enocders","encoders"],["enocdes","encodes"],["enocding","encoding"],["enocdings","encodings"],["enogh","enough"],["enoght","enough"],["enoguh","enough"],["enouch","enough"],["enoucnter","encounter"],["enoucntered","encountered"],["enoucntering","encountering"],["enoucnters","encounters"],["enouf","enough"],["enoufh","enough"],["enought","enough"],["enoughts","enough"],["enougth","enough"],["enouh","enough"],["enouhg","enough"],["enouncter","encounter"],["enounctered","encountered"],["enounctering","encountering"],["enouncters","encounters"],["enoung","enough"],["enoungh","enough"],["enounter","encounter"],["enountered","encountered"],["enountering","encountering"],["enounters","encounters"],["enouph","enough"],["enourage","encourage"],["enouraged","encouraged"],["enourages","encourages"],["enouraging","encouraging"],["enourmous","enormous"],["enourmously","enormously"],["enouth","enough"],["enouugh","enough"],["enpoint","endpoint"],["enpoints","endpoints"],["enque","enqueue"],["enqueing","enqueuing"],["enrties","entries"],["enrtries","entries"],["enrtry","entry"],["enrty","entry"],["ensconsed","ensconced"],["entaglements","entanglements"],["entended","intended"],["entension","extension"],["entensions","extensions"],["ententries","entries"],["enterance","entrance"],["enteratinment","entertainment"],["entereing","entering"],["enterie","entry"],["enteries","entries"],["enterily","entirely"],["enterprice","enterprise"],["enterprices","enterprises"],["entery","entry"],["enteties","entities"],["entety","entity"],["enthaplies","enthalpies"],["enthaply","enthalpy"],["enthousiasm","enthusiasm"],["enthusiam","enthusiasm"],["enthusiatic","enthusiastic"],["entierly","entirely"],["entireity","entirety"],["entires","entries"],["entirey","entirely"],["entirity","entirety"],["entirly","entirely"],["entitee","entity"],["entitees","entities"],["entites","entities"],["entiti","entity"],["entitie","entity"],["entitites","entities"],["entitities","entities"],["entitity","entity"],["entitiy","entity"],["entitiys","entities"],["entitlied","entitled"],["entitys","entities"],["entoties","entities"],["entoty","entity"],["entrace","entrance"],["entraced","entranced"],["entraces","entrances"],["entrepeneur","entrepreneur"],["entrepeneurs","entrepreneurs"],["entriess","entries"],["entrophy","entropy"],["enttries","entries"],["enttry","entry"],["enulation","emulation"],["enumarate","enumerate"],["enumarated","enumerated"],["enumarates","enumerates"],["enumarating","enumerating"],["enumation","enumeration"],["enumearate","enumerate"],["enumearation","enumeration"],["enumerble","enumerable"],["enumertaion","enumeration"],["enusre","ensure"],["envaluation","evaluation"],["enveloppe","envelope"],["envelopped","enveloped"],["enveloppes","envelopes"],["envelopping","enveloping"],["enver","never"],["envioment","environment"],["enviomental","environmental"],["envioments","environments"],["envionment","environment"],["envionmental","environmental"],["envionments","environments"],["enviorement","environment"],["envioremental","environmental"],["enviorements","environments"],["enviorenment","environment"],["enviorenmental","environmental"],["enviorenments","environments"],["enviorment","environment"],["enviormental","environmental"],["enviormentally","environmentally"],["enviorments","environments"],["enviornemnt","environment"],["enviornemntal","environmental"],["enviornemnts","environments"],["enviornment","environment"],["enviornmental","environmental"],["enviornmentalist","environmentalist"],["enviornmentally","environmentally"],["enviornments","environments"],["envioronment","environment"],["envioronmental","environmental"],["envioronments","environments"],["envireonment","environment"],["envirionment","environment"],["envirnment","environment"],["envirnmental","environmental"],["envirnments","environments"],["envirnoment","environment"],["envirnoments","environments"],["enviroiment","environment"],["enviroment","environment"],["enviromental","environmental"],["enviromentalist","environmentalist"],["enviromentally","environmentally"],["enviroments","environments"],["enviromnent","environment"],["enviromnental","environmental"],["enviromnentally","environmentally"],["enviromnents","environments"],["environement","environment"],["environemnt","environment"],["environemntal","environmental"],["environemnts","environments"],["environent","environment"],["environmane","environment"],["environmenet","environment"],["environmenets","environments"],["environmet","environment"],["environmets","environments"],["environmnet","environment"],["environmont","environment"],["environnement","environment"],["environtment","environment"],["envolutionary","evolutionary"],["envolved","involved"],["envorce","enforce"],["envrion","environ"],["envrionment","environment"],["envrionmental","environmental"],["envrionments","environments"],["envrions","environs"],["envriron","environ"],["envrironment","environment"],["envrironmental","environmental"],["envrironments","environments"],["envrirons","environs"],["envvironment","environment"],["enxt","next"],["enything","anything"],["enyway","anyway"],["epecifica","especifica"],["epect","expect"],["epected","expected"],["epectedly","expectedly"],["epecting","expecting"],["epects","expects"],["ephememeral","ephemeral"],["ephememeris","ephemeris"],["epidsodes","episodes"],["epigramic","epigrammatic"],["epilgoue","epilogue"],["episdoe","episode"],["episdoes","episodes"],["eploit","exploit"],["eploits","exploits"],["epmty","empty"],["epressions","expressions"],["epsiode","episode"],["eptied","emptied"],["eptier","emptier"],["epties","empties"],["eptrapolate","extrapolate"],["eptrapolated","extrapolated"],["eptrapolates","extrapolates"],["epty","empty"],["epxanded","expanded"],["epxected","expected"],["epxiressions","expressions"],["epxlicit","explicit"],["eqaul","equal"],["eqaulity","equality"],["eqaulizer","equalizer"],["eqivalent","equivalent"],["eqivalents","equivalents"],["equailateral","equilateral"],["equalibrium","equilibrium"],["equallity","equality"],["equalls","equals"],["equaly","equally"],["equeation","equation"],["equeations","equations"],["equel","equal"],["equelibrium","equilibrium"],["equialent","equivalent"],["equil","equal"],["equilavalent","equivalent"],["equilibium","equilibrium"],["equilibrum","equilibrium"],["equilvalent","equivalent"],["equilvalently","equivalently"],["equilvalents","equivalents"],["equiped","equipped"],["equipmentd","equipment"],["equipments","equipment"],["equippment","equipment"],["equiptment","equipment"],["equitorial","equatorial"],["equivalance","equivalence"],["equivalant","equivalent"],["equivelant","equivalent"],["equivelent","equivalent"],["equivelents","equivalents"],["equivilant","equivalent"],["equivilent","equivalent"],["equivivalent","equivalent"],["equivlalent","equivalent"],["equivlantly","equivalently"],["equivlent","equivalent"],["equivlently","equivalently"],["equivlents","equivalents"],["equivqlent","equivalent"],["eqution","equation"],["equtions","equations"],["equvalent","equivalent"],["equvivalent","equivalent"],["erasablocks","eraseblocks"],["eratic","erratic"],["eratically","erratically"],["eraticly","erratically"],["erformance","performance"],["erliear","earlier"],["erlier","earlier"],["erly","early"],["ermergency","emergency"],["eroneous","erroneous"],["eror","error"],["erorneus","erroneous"],["erorneusly","erroneously"],["erorr","error"],["erorrs","errors"],["erors","errors"],["erraneously","erroneously"],["erro","error"],["erroneus","erroneous"],["erroneusly","erroneously"],["erronous","erroneous"],["erronously","erroneously"],["errorneous","erroneous"],["errorneously","erroneously"],["errorneus","erroneous"],["errornous","erroneous"],["errornously","erroneously"],["errorprone","error-prone"],["errorr","error"],["erros","errors"],["errot","error"],["errots","errors"],["errro","error"],["errror","error"],["errrors","errors"],["errros","errors"],["errupted","erupted"],["ertoneous","erroneous"],["ertoneously","erroneously"],["ervery","every"],["erverything","everything"],["esacpe","escape"],["esacped","escaped"],["esacpes","escapes"],["escalte","escalate"],["escalted","escalated"],["escaltes","escalates"],["escalting","escalating"],["escaltion","escalation"],["escapeable","escapable"],["escapemant","escapement"],["escased","escaped"],["escation","escalation"],["esccape","escape"],["esccaped","escaped"],["escpae","escape"],["escpaed","escaped"],["esecute","execute"],["esential","essential"],["esentially","essentially"],["esge","edge"],["esger","edger"],["esgers","edgers"],["esges","edges"],["esging","edging"],["esiest","easiest"],["esimate","estimate"],["esimated","estimated"],["esimates","estimates"],["esimating","estimating"],["esimation","estimation"],["esimations","estimations"],["esimator","estimator"],["esimators","estimators"],["esists","exists"],["esitmate","estimate"],["esitmated","estimated"],["esitmates","estimates"],["esitmating","estimating"],["esitmation","estimation"],["esitmations","estimations"],["esitmator","estimator"],["esitmators","estimators"],["esle","else"],["esnure","ensure"],["esnured","ensured"],["esnures","ensures"],["espacally","especially"],["espace","escape"],["espaced","escaped"],["espaces","escapes"],["espacially","especially"],["espacing","escaping"],["espcially","especially"],["especailly","especially"],["especally","especially"],["especialy","especially"],["especialyl","especially"],["especiially","especially"],["espect","expect"],["espeically","especially"],["esseintially","essentially"],["essencial","essential"],["essense","essence"],["essentail","essential"],["essentailly","essentially"],["essentaily","essentially"],["essental","essential"],["essentally","essentially"],["essentals","essentials"],["essentialy","essentially"],["essentual","essential"],["essentually","essentially"],["essentualy","essentially"],["essesital","essential"],["essesitally","essentially"],["essesitaly","essentially"],["essiential","essential"],["esssential","essential"],["estabilish","establish"],["estabish","establish"],["estabishd","established"],["estabished","established"],["estabishes","establishes"],["estabishing","establishing"],["establised","established"],["establishs","establishes"],["establising","establishing"],["establsihed","established"],["estbalishment","establishment"],["estimage","estimate"],["estimages","estimates"],["estiomator","estimator"],["estiomators","estimators"],["esy","easy"],["etablish","establish"],["etablishd","established"],["etablished","established"],["etablishing","establishing"],["etcc","etc"],["etcp","etc"],["etensible","extensible"],["etension","extension"],["etensions","extensions"],["ethe","the"],["etherenet","Ethernet"],["ethernal","eternal"],["ethnocentricm","ethnocentrism"],["etiher","either"],["etroneous","erroneous"],["etroneously","erroneously"],["etsablishment","establishment"],["etsbalishment","establishment"],["etst","test"],["etsts","tests"],["etxt","text"],["euclidian","euclidean"],["euivalent","equivalent"],["euivalents","equivalents"],["euqivalent","equivalent"],["euqivalents","equivalents"],["euristic","heuristic"],["euristics","heuristics"],["Europian","European"],["Europians","Europeans"],["Eurpean","European"],["Eurpoean","European"],["evalation","evaluation"],["evalite","evaluate"],["evalited","evaluated"],["evalites","evaluates"],["evaluataion","evaluation"],["evaluataions","evaluations"],["evalueate","evaluate"],["evalueated","evaluated"],["evaluete","evaluate"],["evalueted","evaluated"],["evalulates","evaluates"],["evalutae","evaluate"],["evalutaed","evaluated"],["evalutaeing","evaluating"],["evalutaes","evaluates"],["evalutaing","evaluating"],["evalutaion","evaluation"],["evalutaions","evaluations"],["evalutaor","evaluator"],["evalutate","evaluate"],["evalutated","evaluated"],["evalutates","evaluates"],["evalutating","evaluating"],["evalutation","evaluation"],["evalutations","evaluations"],["evalute","evaluate"],["evaluted","evaluated"],["evalutes","evaluates"],["evaluting","evaluating"],["evalutions","evaluations"],["evalutive","evaluative"],["evalutor","evaluator"],["evalutors","evaluators"],["evaulate","evaluate"],["evaulated","evaluated"],["evaulates","evaluates"],["evaulating","evaluating"],["evaulation","evaluation"],["evaulator","evaluator"],["evaulted","evaluated"],["evauluate","evaluate"],["evauluated","evaluated"],["evauluates","evaluates"],["evauluation","evaluation"],["eveluate","evaluate"],["eveluated","evaluated"],["eveluates","evaluates"],["eveluating","evaluating"],["eveluation","evaluation"],["eveluations","evaluations"],["eveluator","evaluator"],["eveluators","evaluators"],["evenhtually","eventually"],["eventally","eventually"],["eventaully","eventually"],["eventhanders","event handlers"],["eventhough","even though"],["eventially","eventually"],["eventuall","eventually"],["eventualy","eventually"],["evenually","eventually"],["eveolution","evolution"],["eveolutionary","evolutionary"],["eveolve","evolve"],["eveolved","evolved"],["eveolves","evolves"],["eveolving","evolving"],["everage","average"],["everaged","averaged"],["everbody","everybody"],["everithing","everything"],["everone","everyone"],["everthing","everything"],["evertyhign","everything"],["evertyhing","everything"],["evertything","everything"],["everwhere","everywhere"],["everyhing","everything"],["everyhting","everything"],["everythig","everything"],["everythign","everything"],["everythin","everything"],["everythings","everything"],["everytime","every time"],["everyting","everything"],["everytone","everyone"],["evey","every"],["eveyone","everyone"],["eveyr","every"],["evidentally","evidently"],["evironment","environment"],["evironments","environments"],["evition","eviction"],["evluate","evaluate"],["evluated","evaluated"],["evluates","evaluates"],["evluating","evaluating"],["evluation","evaluation"],["evluations","evaluations"],["evluative","evaluative"],["evluator","evaluator"],["evluators","evaluators"],["evnet","event"],["evnts","events"],["evoluate","evaluate"],["evoluated","evaluated"],["evoluates","evaluates"],["evoluation","evaluations"],["evovler","evolver"],["evovling","evolving"],["evrithing","everything"],["evry","every"],["evrythign","everything"],["evrything","everything"],["evrywhere","everywhere"],["evyrthing","everything"],["ewhwer","where"],["exaclty","exactly"],["exacly","exactly"],["exactely","exactly"],["exacty","exactly"],["exacutable","executable"],["exagerate","exaggerate"],["exagerated","exaggerated"],["exagerates","exaggerates"],["exagerating","exaggerating"],["exagerrate","exaggerate"],["exagerrated","exaggerated"],["exagerrates","exaggerates"],["exagerrating","exaggerating"],["exameple","example"],["exameples","examples"],["examied","examined"],["examinated","examined"],["examing","examining"],["examinining","examining"],["examle","example"],["examles","examples"],["examlpe","example"],["examlpes","examples"],["examnple","example"],["examnples","examples"],["exampel","example"],["exampeles","examples"],["exampels","examples"],["examplees","examples"],["examplifies","exemplifies"],["exampple","example"],["exampples","examples"],["exampt","exempt"],["exand","expand"],["exansive","expansive"],["exapansion","expansion"],["exapend","expand"],["exaplain","explain"],["exaplaination","explanation"],["exaplained","explained"],["exaplaining","explaining"],["exaplains","explains"],["exaplanation","explanation"],["exaplanations","explanations"],["exaple","example"],["exaples","examples"],["exapmle","example"],["exapmles","examples"],["exapnsion","expansion"],["exat","exact"],["exatcly","exactly"],["exatctly","exactly"],["exatly","exactly"],["exausted","exhausted"],["excact","exact"],["excactly","exactly"],["excahcnge","exchange"],["excahnge","exchange"],["excahnges","exchanges"],["excange","exchange"],["excape","escape"],["excaped","escaped"],["excapes","escapes"],["excat","exact"],["excating","exacting"],["excatly","exactly"],["exccute","execute"],["excecise","exercise"],["excecises","exercises"],["excecpt","except"],["excecption","exception"],["excecptional","exceptional"],["excecptions","exceptions"],["excectable","executable"],["excectables","executables"],["excecte","execute"],["excectedly","expectedly"],["excectes","executes"],["excecting","executing"],["excectional","exceptional"],["excective","executive"],["excectives","executives"],["excector","executor"],["excectors","executors"],["excects","expects"],["excecutable","executable"],["excecutables","executables"],["excecute","execute"],["excecuted","executed"],["excecutes","executes"],["excecuting","executing"],["excecution","execution"],["excecutions","executions"],["excecutive","executive"],["excecutives","executives"],["excecutor","executor"],["excecutors","executors"],["excecuts","executes"],["exced","exceed"],["excedded","exceeded"],["excedding","exceeding"],["excede","exceed"],["exceded","exceeded"],["excedeed","exceeded"],["excedes","exceeds"],["exceding","exceeding"],["exceeed","exceed"],["exceirpt","excerpt"],["exceirpts","excerpts"],["excelent","excellent"],["excell","excel"],["excellance","excellence"],["excellant","excellent"],["excells","excels"],["excempt","exempt"],["excempted","exempted"],["excemption","exemption"],["excemptions","exemptions"],["excempts","exempts"],["excentric","eccentric"],["excentricity","eccentricity"],["excentuating","accentuating"],["exceopt","exempt"],["exceopted","exempted"],["exceopts","exempts"],["exceotion","exemption"],["exceotions","exemptions"],["excepetion","exception"],["excepion","exception"],["excepional","exceptional"],["excepionally","exceptionally"],["excepions","exceptions"],["exceprt","excerpt"],["exceprts","excerpts"],["exceptation","expectation"],["exceptionnal","exceptional"],["exceptionss","exceptions"],["exceptionts","exceptions"],["excercise","exercise"],["excercised","exercised"],["excerciser","exerciser"],["excercises","exercises"],["excercising","exercising"],["excerise","exercise"],["exces","excess"],["excesed","exceeded"],["excesive","excessive"],["excesively","excessively"],["excesss","excess"],["excesv","excessive"],["excesvly","excessively"],["excetion","exception"],["excetional","exceptional"],["excetions","exceptions"],["excetpion","exception"],["excetpional","exceptional"],["excetpions","exceptions"],["excetption","exception"],["excetptional","exceptional"],["excetptions","exceptions"],["excetra","etcetera"],["excetutable","executable"],["excetutables","executables"],["excetute","execute"],["excetuted","executed"],["excetutes","executes"],["excetuting","executing"],["excetution","execution"],["excetutions","executions"],["excetutive","executive"],["excetutives","executives"],["excetutor","executor"],["excetutors","executors"],["exceuctable","executable"],["exceuctables","executables"],["exceucte","execute"],["exceucted","executed"],["exceuctes","executes"],["exceucting","executing"],["exceuction","execution"],["exceuctions","executions"],["exceuctive","executive"],["exceuctives","executives"],["exceuctor","executor"],["exceuctors","executors"],["exceutable","executable"],["exceutables","executables"],["exceute","execute"],["exceuted","executed"],["exceutes","executes"],["exceuting","executing"],["exceution","execution"],["exceutions","executions"],["exceutive","executive"],["exceutives","executives"],["exceutor","executor"],["exceutors","executors"],["excewption","exception"],["excewptional","exceptional"],["excewptions","exceptions"],["exchage","exchange"],["exchaged","exchanged"],["exchages","exchanges"],["exchaging","exchanging"],["exchagne","exchange"],["exchagned","exchanged"],["exchagnes","exchanges"],["exchagnge","exchange"],["exchagnged","exchanged"],["exchagnges","exchanges"],["exchagnging","exchanging"],["exchagning","exchanging"],["exchanage","exchange"],["exchanaged","exchanged"],["exchanages","exchanges"],["exchanaging","exchanging"],["exchance","exchange"],["exchanced","exchanged"],["exchances","exchanges"],["exchanche","exchange"],["exchanched","exchanged"],["exchanches","exchanges"],["exchanching","exchanging"],["exchancing","exchanging"],["exchane","exchange"],["exchaned","exchanged"],["exchanes","exchanges"],["exchangable","exchangeable"],["exchaning","exchanging"],["exchaust","exhaust"],["exchausted","exhausted"],["exchausting","exhausting"],["exchaustive","exhaustive"],["exchausts","exhausts"],["exchenge","exchange"],["exchenged","exchanged"],["exchenges","exchanges"],["exchenging","exchanging"],["exchnage","exchange"],["exchnaged","exchanged"],["exchnages","exchanges"],["exchnaging","exchanging"],["exchng","exchange"],["exchngd","exchanged"],["exchnge","exchange"],["exchnged","exchanged"],["exchnges","exchanges"],["exchnging","exchanging"],["exchngng","exchanging"],["exchngs","exchanges"],["exciation","excitation"],["excipt","except"],["exciption","exception"],["exciptions","exceptions"],["excist","exist"],["excisted","existed"],["excisting","existing"],["excitment","excitement"],["exclamantion","exclamation"],["excludde","exclude"],["excludind","excluding"],["exclusiv","exclusive"],["exclusivelly","exclusively"],["exclusivly","exclusively"],["exclusivs","exclusives"],["excluslvely","exclusively"],["exclusuive","exclusive"],["exclusuively","exclusively"],["exclusuives","exclusives"],["excpect","expect"],["excpected","expected"],["excpecting","expecting"],["excpects","expects"],["excpeption","exception"],["excpet","except"],["excpetion","exception"],["excpetional","exceptional"],["excpetions","exceptions"],["excplicit","explicit"],["excplicitly","explicitly"],["excplict","explicit"],["excplictly","explicitly"],["excract","extract"],["exctacted","extracted"],["exctract","extract"],["exctracted","extracted"],["exctracting","extracting"],["exctraction","extraction"],["exctractions","extractions"],["exctractor","extractor"],["exctractors","extractors"],["exctracts","extracts"],["exculde","exclude"],["exculding","excluding"],["exculsive","exclusive"],["exculsively","exclusively"],["exculsivly","exclusively"],["excutable","executable"],["excutables","executables"],["excute","execute"],["excuted","executed"],["excutes","executes"],["excuting","executing"],["excution","execution"],["execeed","exceed"],["execeeded","exceeded"],["execeeds","exceeds"],["exeception","exception"],["execeptions","exceptions"],["execising","exercising"],["execption","exception"],["execptions","exceptions"],["exectable","executable"],["exection","execution"],["exections","executions"],["exectuable","executable"],["exectuableness","executableness"],["exectuables","executables"],["exectued","executed"],["exectuion","execution"],["exectuions","executions"],["execture","execute"],["exectured","executed"],["exectures","executes"],["execturing","executing"],["exectute","execute"],["exectuted","executed"],["exectutes","executes"],["exectution","execution"],["exectutions","executions"],["execuable","executable"],["execuables","executables"],["execuatable","executable"],["execuatables","executables"],["execuatble","executable"],["execuatbles","executables"],["execuate","execute"],["execuated","executed"],["execuates","executes"],["execuation","execution"],["execuations","executions"],["execubale","executable"],["execubales","executables"],["execucte","execute"],["execucted","executed"],["execuctes","executes"],["execuction","execution"],["execuctions","executions"],["execuctor","executor"],["execuctors","executors"],["execude","execute"],["execuded","executed"],["execudes","executes"],["execue","execute"],["execued","executed"],["execues","executes"],["execuet","execute"],["execuetable","executable"],["execuetd","executed"],["execuete","execute"],["execueted","executed"],["execuetes","executes"],["execuets","executes"],["execuing","executing"],["execuion","execution"],["execuions","executions"],["execuitable","executable"],["execuitables","executables"],["execuite","execute"],["execuited","executed"],["execuites","executes"],["execuiting","executing"],["execuition","execution"],["execuitions","executions"],["execulatble","executable"],["execulatbles","executables"],["execultable","executable"],["execultables","executables"],["execulusive","exclusive"],["execune","execute"],["execuned","executed"],["execunes","executes"],["execunting","executing"],["execurable","executable"],["execurables","executables"],["execure","execute"],["execured","executed"],["execures","executes"],["execusion","execution"],["execusions","executions"],["execusive","exclusive"],["execustion","execution"],["execustions","executions"],["execut","execute"],["executabable","executable"],["executabables","executables"],["executabe","executable"],["executabel","executable"],["executabels","executables"],["executabes","executables"],["executablble","executable"],["executabnle","executable"],["executabnles","executables"],["executation","execution"],["executations","executions"],["executbale","executable"],["executbales","executables"],["executble","executable"],["executbles","executables"],["executd","executed"],["executding","executing"],["executeable","executable"],["executeables","executables"],["executible","executable"],["executign","executing"],["executng","executing"],["executre","execute"],["executred","executed"],["executres","executes"],["executs","executes"],["executting","executing"],["executtion","execution"],["executtions","executions"],["executuable","executable"],["executuables","executables"],["executuble","executable"],["executubles","executables"],["executue","execute"],["executued","executed"],["executues","executes"],["executuing","executing"],["executuion","execution"],["executuions","executions"],["executung","executing"],["executuon","execution"],["executuons","executions"],["executute","execute"],["execututed","executed"],["execututes","executes"],["executution","execution"],["execututions","executions"],["exeed","exceed"],["exeeding","exceeding"],["exeedingly","exceedingly"],["exeeds","exceeds"],["exelent","excellent"],["exellent","excellent"],["exempel","example"],["exempels","examples"],["exemple","example"],["exemples","examples"],["exended","extended"],["exension","extension"],["exensions","extensions"],["exent","extent"],["exentended","extended"],["exepct","expect"],["exepcted","expected"],["exepcts","expects"],["exepect","expect"],["exepectation","expectation"],["exepectations","expectations"],["exepected","expected"],["exepectedly","expectedly"],["exepecting","expecting"],["exepects","expects"],["exepriment","experiment"],["exeprimental","experimental"],["exeptional","exceptional"],["exeptions","exceptions"],["exeqution","execution"],["exerbate","exacerbate"],["exerbated","exacerbated"],["exerciese","exercise"],["exerciesed","exercised"],["exercieses","exercises"],["exerciesing","exercising"],["exercize","exercise"],["exerimental","experimental"],["exerpt","excerpt"],["exerpts","excerpts"],["exersize","exercise"],["exersizes","exercises"],["exerternal","external"],["exeucte","execute"],["exeucted","executed"],["exeuctes","executes"],["exeution","execution"],["exexutable","executable"],["exhalted","exalted"],["exhange","exchange"],["exhanged","exchanged"],["exhanges","exchanges"],["exhanging","exchanging"],["exhaused","exhausted"],["exhautivity","exhaustivity"],["exhcuast","exhaust"],["exhcuasted","exhausted"],["exhibtion","exhibition"],["exhist","exist"],["exhistance","existence"],["exhisted","existed"],["exhistence","existence"],["exhisting","existing"],["exhists","exists"],["exhostive","exhaustive"],["exhustiveness","exhaustiveness"],["exibition","exhibition"],["exibitions","exhibitions"],["exicting","exciting"],["exinct","extinct"],["exipration","expiration"],["exipre","expire"],["exipred","expired"],["exipres","expires"],["exising","existing"],["exisit","exist"],["exisited","existed"],["exisitent","existent"],["exisiting","existing"],["exisitng","existing"],["exisits","exists"],["existance","existence"],["existant","existent"],["existatus","exitstatus"],["existencd","existence"],["existend","existed"],["existense","existence"],["existin","existing"],["existince","existence"],["existng","existing"],["existsing","existing"],["existting","existing"],["existung","existing"],["existy","exist"],["existying","existing"],["exitance","existence"],["exitation","excitation"],["exitations","excitations"],["exitt","exit"],["exitted","exited"],["exitting","exiting"],["exitts","exits"],["exixst","exist"],["exixt","exist"],["exlamation","exclamation"],["exlcude","exclude"],["exlcuding","excluding"],["exlcusion","exclusion"],["exlcusions","exclusions"],["exlcusive","exclusive"],["exlicit","explicit"],["exlicite","explicit"],["exlicitely","explicitly"],["exlicitly","explicitly"],["exliled","exiled"],["exlpoit","exploit"],["exlpoited","exploited"],["exlpoits","exploits"],["exlusion","exclusion"],["exlusionary","exclusionary"],["exlusions","exclusions"],["exlusive","exclusive"],["exlusively","exclusively"],["exmaine","examine"],["exmained","examined"],["exmaines","examines"],["exmaple","example"],["exmaples","examples"],["exmple","example"],["exmport","export"],["exnternal","external"],["exnternalities","externalities"],["exnternality","externality"],["exnternally","externally"],["exntry","entry"],["exolicit","explicit"],["exolicitly","explicitly"],["exonorate","exonerate"],["exort","export"],["exoskelaton","exoskeleton"],["expalin","explain"],["expaning","expanding"],["expanion","expansion"],["expanions","expansions"],["expanshion","expansion"],["expanshions","expansions"],["expanssion","expansion"],["exparation","expiration"],["expasion","expansion"],["expatriot","expatriate"],["expception","exception"],["expcetation","expectation"],["expcetations","expectations"],["expceted","expected"],["expceting","expecting"],["expcets","expects"],["expct","expect"],["expcted","expected"],["expctedly","expectedly"],["expcting","expecting"],["expeced","expected"],["expeceted","expected"],["expecially","especially"],["expectaion","expectation"],["expectaions","expectations"],["expectatoins","expectations"],["expectatons","expectations"],["expectd","expected"],["expecte","expected"],["expectes","expects"],["expection","exception"],["expections","exceptions"],["expeditonary","expeditionary"],["expeect","expect"],["expeected","expected"],["expeectedly","expectedly"],["expeecting","expecting"],["expeects","expects"],["expeense","expense"],["expeenses","expenses"],["expeensive","expensive"],["expeience","experience"],["expeienced","experienced"],["expeiences","experiences"],["expeiencing","experiencing"],["expeiment","experiment"],["expeimental","experimental"],["expeimentally","experimentally"],["expeimentation","experimentation"],["expeimentations","experimentations"],["expeimented","experimented"],["expeimentel","experimental"],["expeimentelly","experimentally"],["expeimenter","experimenter"],["expeimenters","experimenters"],["expeimenting","experimenting"],["expeiments","experiments"],["expeiriment","experiment"],["expeirimental","experimental"],["expeirimentally","experimentally"],["expeirimentation","experimentation"],["expeirimentations","experimentations"],["expeirimented","experimented"],["expeirimentel","experimental"],["expeirimentelly","experimentally"],["expeirimenter","experimenter"],["expeirimenters","experimenters"],["expeirimenting","experimenting"],["expeiriments","experiments"],["expell","expel"],["expells","expels"],["expement","experiment"],["expemental","experimental"],["expementally","experimentally"],["expementation","experimentation"],["expementations","experimentations"],["expemented","experimented"],["expementel","experimental"],["expementelly","experimentally"],["expementer","experimenter"],["expementers","experimenters"],["expementing","experimenting"],["expements","experiments"],["expemplar","exemplar"],["expemplars","exemplars"],["expemplary","exemplary"],["expempt","exempt"],["expempted","exempted"],["expemt","exempt"],["expemted","exempted"],["expemtion","exemption"],["expemtions","exemptions"],["expemts","exempts"],["expence","expense"],["expences","expenses"],["expencive","expensive"],["expendeble","expendable"],["expepect","expect"],["expepected","expected"],["expepectedly","expectedly"],["expepecting","expecting"],["expepects","expects"],["expepted","expected"],["expeptedly","expectedly"],["expepting","expecting"],["expeption","exception"],["expeptions","exceptions"],["expepts","expects"],["experament","experiment"],["experamental","experimental"],["experamentally","experimentally"],["experamentation","experimentation"],["experamentations","experimentations"],["experamented","experimented"],["experamentel","experimental"],["experamentelly","experimentally"],["experamenter","experimenter"],["experamenters","experimenters"],["experamenting","experimenting"],["experaments","experiments"],["experation","expiration"],["expercting","expecting"],["expercts","expects"],["expereince","experience"],["expereinced","experienced"],["expereinces","experiences"],["expereincing","experiencing"],["experement","experiment"],["experemental","experimental"],["experementally","experimentally"],["experementation","experimentation"],["experementations","experimentations"],["experemented","experimented"],["experementel","experimental"],["experementelly","experimentally"],["experementer","experimenter"],["experementers","experimenters"],["experementing","experimenting"],["experements","experiments"],["experence","experience"],["experenced","experienced"],["experences","experiences"],["experencing","experiencing"],["experes","express"],["experesed","expressed"],["experesion","expression"],["experesions","expressions"],["experess","express"],["experessed","expressed"],["experesses","expresses"],["experessing","expressing"],["experession's","expression's"],["experession","expression"],["experessions","expressions"],["experiance","experience"],["experianced","experienced"],["experiances","experiences"],["experiancial","experiential"],["experiancing","experiencing"],["experiansial","experiential"],["experiantial","experiential"],["experiation","expiration"],["experiations","expirations"],["experice","experience"],["expericed","experienced"],["experices","experiences"],["expericing","experiencing"],["experiement","experiment"],["experienshial","experiential"],["experiensial","experiential"],["experies","expires"],["experim","experiment"],["experimal","experimental"],["experimally","experimentally"],["experimanent","experiment"],["experimanental","experimental"],["experimanentally","experimentally"],["experimanentation","experimentation"],["experimanentations","experimentations"],["experimanented","experimented"],["experimanentel","experimental"],["experimanentelly","experimentally"],["experimanenter","experimenter"],["experimanenters","experimenters"],["experimanenting","experimenting"],["experimanents","experiments"],["experimanet","experiment"],["experimanetal","experimental"],["experimanetally","experimentally"],["experimanetation","experimentation"],["experimanetations","experimentations"],["experimaneted","experimented"],["experimanetel","experimental"],["experimanetelly","experimentally"],["experimaneter","experimenter"],["experimaneters","experimenters"],["experimaneting","experimenting"],["experimanets","experiments"],["experimant","experiment"],["experimantal","experimental"],["experimantally","experimentally"],["experimantation","experimentation"],["experimantations","experimentations"],["experimanted","experimented"],["experimantel","experimental"],["experimantelly","experimentally"],["experimanter","experimenter"],["experimanters","experimenters"],["experimanting","experimenting"],["experimants","experiments"],["experimation","experimentation"],["experimations","experimentations"],["experimdnt","experiment"],["experimdntal","experimental"],["experimdntally","experimentally"],["experimdntation","experimentation"],["experimdntations","experimentations"],["experimdnted","experimented"],["experimdntel","experimental"],["experimdntelly","experimentally"],["experimdnter","experimenter"],["experimdnters","experimenters"],["experimdnting","experimenting"],["experimdnts","experiments"],["experimed","experimented"],["experimel","experimental"],["experimelly","experimentally"],["experimen","experiment"],["experimenal","experimental"],["experimenally","experimentally"],["experimenat","experiment"],["experimenatal","experimental"],["experimenatally","experimentally"],["experimenatation","experimentation"],["experimenatations","experimentations"],["experimenated","experimented"],["experimenatel","experimental"],["experimenatelly","experimentally"],["experimenater","experimenter"],["experimenaters","experimenters"],["experimenating","experimenting"],["experimenation","experimentation"],["experimenations","experimentations"],["experimenats","experiments"],["experimened","experimented"],["experimenel","experimental"],["experimenelly","experimentally"],["experimener","experimenter"],["experimeners","experimenters"],["experimening","experimenting"],["experimens","experiments"],["experimentaal","experimental"],["experimentaally","experimentally"],["experimentaat","experiment"],["experimentaatl","experimental"],["experimentaatlly","experimentally"],["experimentaats","experiments"],["experimentaed","experimented"],["experimentaer","experimenter"],["experimentaing","experimenting"],["experimentaion","experimentation"],["experimentaions","experimentations"],["experimentait","experiment"],["experimentaital","experimental"],["experimentaitally","experimentally"],["experimentaited","experimented"],["experimentaiter","experimenter"],["experimentaiters","experimenters"],["experimentaitng","experimenting"],["experimentaiton","experimentation"],["experimentaitons","experimentations"],["experimentat","experimental"],["experimentatal","experimental"],["experimentatally","experimentally"],["experimentatation","experimentation"],["experimentatations","experimentations"],["experimentated","experimented"],["experimentater","experimenter"],["experimentatl","experimental"],["experimentatlly","experimentally"],["experimentatly","experimentally"],["experimentel","experimental"],["experimentelly","experimentally"],["experimentt","experiment"],["experimentted","experimented"],["experimentter","experimenter"],["experimentters","experimenters"],["experimentts","experiments"],["experimer","experimenter"],["experimers","experimenters"],["experimet","experiment"],["experimetal","experimental"],["experimetally","experimentally"],["experimetation","experimentation"],["experimetations","experimentations"],["experimeted","experimented"],["experimetel","experimental"],["experimetelly","experimentally"],["experimetent","experiment"],["experimetental","experimental"],["experimetentally","experimentally"],["experimetentation","experimentation"],["experimetentations","experimentations"],["experimetented","experimented"],["experimetentel","experimental"],["experimetentelly","experimentally"],["experimetenter","experimenter"],["experimetenters","experimenters"],["experimetenting","experimenting"],["experimetents","experiments"],["experimeter","experimenter"],["experimeters","experimenters"],["experimeting","experimenting"],["experimetn","experiment"],["experimetnal","experimental"],["experimetnally","experimentally"],["experimetnation","experimentation"],["experimetnations","experimentations"],["experimetned","experimented"],["experimetnel","experimental"],["experimetnelly","experimentally"],["experimetner","experimenter"],["experimetners","experimenters"],["experimetning","experimenting"],["experimetns","experiments"],["experimets","experiments"],["experiming","experimenting"],["experimint","experiment"],["experimintal","experimental"],["experimintally","experimentally"],["experimintation","experimentation"],["experimintations","experimentations"],["experiminted","experimented"],["experimintel","experimental"],["experimintelly","experimentally"],["experiminter","experimenter"],["experiminters","experimenters"],["experiminting","experimenting"],["experimints","experiments"],["experimment","experiment"],["experimmental","experimental"],["experimmentally","experimentally"],["experimmentation","experimentation"],["experimmentations","experimentations"],["experimmented","experimented"],["experimmentel","experimental"],["experimmentelly","experimentally"],["experimmenter","experimenter"],["experimmenters","experimenters"],["experimmenting","experimenting"],["experimments","experiments"],["experimnet","experiment"],["experimnetal","experimental"],["experimnetally","experimentally"],["experimnetation","experimentation"],["experimnetations","experimentations"],["experimneted","experimented"],["experimnetel","experimental"],["experimnetelly","experimentally"],["experimneter","experimenter"],["experimneters","experimenters"],["experimneting","experimenting"],["experimnets","experiments"],["experimnt","experiment"],["experimntal","experimental"],["experimntally","experimentally"],["experimntation","experimentation"],["experimntations","experimentations"],["experimnted","experimented"],["experimntel","experimental"],["experimntelly","experimentally"],["experimnter","experimenter"],["experimnters","experimenters"],["experimnting","experimenting"],["experimnts","experiments"],["experims","experiments"],["experimten","experiment"],["experimtenal","experimental"],["experimtenally","experimentally"],["experimtenation","experimentation"],["experimtenations","experimentations"],["experimtened","experimented"],["experimtenel","experimental"],["experimtenelly","experimentally"],["experimtener","experimenter"],["experimteners","experimenters"],["experimtening","experimenting"],["experimtens","experiments"],["experinece","experience"],["experineced","experienced"],["experinement","experiment"],["experinemental","experimental"],["experinementally","experimentally"],["experinementation","experimentation"],["experinementations","experimentations"],["experinemented","experimented"],["experinementel","experimental"],["experinementelly","experimentally"],["experinementer","experimenter"],["experinementers","experimenters"],["experinementing","experimenting"],["experinements","experiments"],["experiration","expiration"],["experirations","expirations"],["expermenet","experiment"],["expermenetal","experimental"],["expermenetally","experimentally"],["expermenetation","experimentation"],["expermenetations","experimentations"],["expermeneted","experimented"],["expermenetel","experimental"],["expermenetelly","experimentally"],["expermeneter","experimenter"],["expermeneters","experimenters"],["expermeneting","experimenting"],["expermenets","experiments"],["experment","experiment"],["expermental","experimental"],["expermentally","experimentally"],["expermentation","experimentation"],["expermentations","experimentations"],["expermented","experimented"],["expermentel","experimental"],["expermentelly","experimentally"],["expermenter","experimenter"],["expermenters","experimenters"],["expermenting","experimenting"],["experments","experiments"],["expermient","experiment"],["expermiental","experimental"],["expermientally","experimentally"],["expermientation","experimentation"],["expermientations","experimentations"],["expermiented","experimented"],["expermientel","experimental"],["expermientelly","experimentally"],["expermienter","experimenter"],["expermienters","experimenters"],["expermienting","experimenting"],["expermients","experiments"],["expermiment","experiment"],["expermimental","experimental"],["expermimentally","experimentally"],["expermimentation","experimentation"],["expermimentations","experimentations"],["expermimented","experimented"],["expermimentel","experimental"],["expermimentelly","experimentally"],["expermimenter","experimenter"],["expermimenters","experimenters"],["expermimenting","experimenting"],["expermiments","experiments"],["experminent","experiment"],["experminental","experimental"],["experminentally","experimentally"],["experminentation","experimentation"],["experminentations","experimentations"],["experminents","experiments"],["expernal","external"],["expers","express"],["expersed","expressed"],["expersing","expressing"],["expersion","expression"],["expersions","expressions"],["expersive","expensive"],["experss","express"],["experssed","expressed"],["expersses","expresses"],["experssing","expressing"],["experssion","expression"],["experssions","expressions"],["expese","expense"],["expeses","expenses"],["expesive","expensive"],["expesnce","expense"],["expesnces","expenses"],["expesncive","expensive"],["expess","express"],["expessed","expressed"],["expesses","expresses"],["expessing","expressing"],["expession","expression"],["expessions","expressions"],["expest","expect"],["expested","expected"],["expestedly","expectedly"],["expesting","expecting"],["expetancy","expectancy"],["expetation","expectation"],["expetc","expect"],["expetced","expected"],["expetcedly","expectedly"],["expetcing","expecting"],["expetcs","expects"],["expetct","expect"],["expetcted","expected"],["expetctedly","expectedly"],["expetcting","expecting"],["expetcts","expects"],["expetect","expect"],["expetected","expected"],["expetectedly","expectedly"],["expetecting","expecting"],["expetectly","expectedly"],["expetects","expects"],["expeted","expected"],["expetedly","expectedly"],["expetiment","experiment"],["expetimental","experimental"],["expetimentally","experimentally"],["expetimentation","experimentation"],["expetimentations","experimentations"],["expetimented","experimented"],["expetimentel","experimental"],["expetimentelly","experimentally"],["expetimenter","experimenter"],["expetimenters","experimenters"],["expetimenting","experimenting"],["expetiments","experiments"],["expeting","expecting"],["expetion","exception"],["expetional","exceptional"],["expetions","exceptions"],["expets","expects"],["expewriment","experiment"],["expewrimental","experimental"],["expewrimentally","experimentally"],["expewrimentation","experimentation"],["expewrimentations","experimentations"],["expewrimented","experimented"],["expewrimentel","experimental"],["expewrimentelly","experimentally"],["expewrimenter","experimenter"],["expewrimenters","experimenters"],["expewrimenting","experimenting"],["expewriments","experiments"],["expexct","expect"],["expexcted","expected"],["expexctedly","expectedly"],["expexcting","expecting"],["expexcts","expects"],["expexnasion","expansion"],["expexnasions","expansions"],["expext","expect"],["expexted","expected"],["expextedly","expectedly"],["expexting","expecting"],["expexts","expects"],["expicit","explicit"],["expicitly","explicitly"],["expidition","expedition"],["expiditions","expeditions"],["expierence","experience"],["expierenced","experienced"],["expierences","experiences"],["expierience","experience"],["expieriences","experiences"],["expilicitely","explicitly"],["expireitme","expiretime"],["expiriation","expiration"],["expirie","expire"],["expiried","expired"],["expirience","experience"],["expiriences","experiences"],["expirimental","experimental"],["expiriy","expiry"],["explaination","explanation"],["explainations","explanations"],["explainatory","explanatory"],["explaind","explained"],["explanaiton","explanation"],["explanaitons","explanations"],["explane","explain"],["explaned","explained"],["explanes","explains"],["explaning","explaining"],["explantion","explanation"],["explantions","explanations"],["explcit","explicit"],["explecit","explicit"],["explecitely","explicitly"],["explecitily","explicitly"],["explecitly","explicitly"],["explenation","explanation"],["explicat","explicate"],["explicilt","explicit"],["explicilty","explicitly"],["explicitelly","explicitly"],["explicitely","explicitly"],["explicitily","explicitly"],["explicity","explicitly"],["explicityly","explicitly"],["explict","explicit"],["explictely","explicitly"],["explictily","explicitly"],["explictly","explicitly"],["explin","explain"],["explination","explanation"],["explinations","explanations"],["explined","explained"],["explins","explains"],["explit","explicit"],["explitictly","explicitly"],["explitit","explicit"],["explitly","explicitly"],["explizit","explicit"],["explizitly","explicitly"],["exploititive","exploitative"],["expoed","exposed"],["expoent","exponent"],["expoential","exponential"],["expoentially","exponentially"],["expoentntial","exponential"],["expoerted","exported"],["expoit","exploit"],["expoitation","exploitation"],["expoited","exploited"],["expoits","exploits"],["expolde","explode"],["exponant","exponent"],["exponantation","exponentiation"],["exponantially","exponentially"],["exponantialy","exponentially"],["exponants","exponents"],["exponentation","exponentiation"],["exponentialy","exponentially"],["exponentiel","exponential"],["exponentiell","exponential"],["exponetial","exponential"],["exporession","expression"],["expors","exports"],["expport","export"],["exppressed","expressed"],["expres","express"],["expresed","expressed"],["expresing","expressing"],["expresion","expression"],["expresions","expressions"],["expressable","expressible"],["expressino","expression"],["expresso","espresso"],["expresss","express"],["expresssion","expression"],["expresssions","expressions"],["exprience","experience"],["exprienced","experienced"],["expriences","experiences"],["exprimental","experimental"],["expropiated","expropriated"],["expropiation","expropriation"],["exprot","export"],["exproted","exported"],["exproting","exporting"],["exprots","exports"],["exprted","exported"],["exptected","expected"],["exra","extra"],["exract","extract"],["exressed","expressed"],["exression","expression"],["exsistence","existence"],["exsistent","existent"],["exsisting","existing"],["exsists","exists"],["exsiting","existing"],["exspect","expect"],["exspected","expected"],["exspectedly","expectedly"],["exspecting","expecting"],["exspects","expects"],["exspense","expense"],["exspensed","expensed"],["exspenses","expenses"],["exstacy","ecstasy"],["exsted","existed"],["exsting","existing"],["exstream","extreme"],["exsts","exists"],["extaction","extraction"],["extactly","exactly"],["extacy","ecstasy"],["extarnal","external"],["extarnally","externally"],["extatic","ecstatic"],["extedn","extend"],["extedned","extended"],["extedner","extender"],["extedners","extenders"],["extedns","extends"],["extemely","extremely"],["exten","extent"],["extenal","external"],["extendded","extended"],["extendet","extended"],["extendsions","extensions"],["extened","extended"],["exteneded","extended"],["extenisble","extensible"],["extennsions","extensions"],["extensability","extensibility"],["extensiable","extensible"],["extensibity","extensibility"],["extensilbe","extensible"],["extensiones","extensions"],["extensivly","extensively"],["extenson","extension"],["extenstion","extension"],["extenstions","extensions"],["extented","extended"],["extention","extension"],["extentions","extensions"],["extepect","expect"],["extepecting","expecting"],["extepects","expects"],["exteral","external"],["extered","exerted"],["extereme","extreme"],["exterme","extreme"],["extermest","extremest"],["extermist","extremist"],["extermists","extremists"],["extermly","extremely"],["extermporaneous","extemporaneous"],["externaly","externally"],["externel","external"],["externelly","externally"],["externels","externals"],["extesion","extension"],["extesions","extensions"],["extesnion","extension"],["extesnions","extensions"],["extimate","estimate"],["extimated","estimated"],["extimates","estimates"],["extimating","estimating"],["extimation","estimation"],["extimations","estimations"],["extimator","estimator"],["extimators","estimators"],["extist","exist"],["extit","exit"],["extnesion","extension"],["extrac","extract"],["extraced","extracted"],["extracing","extracting"],["extracter","extractor"],["extractet","extracted"],["extractino","extracting"],["extractins","extractions"],["extradiction","extradition"],["extraenous","extraneous"],["extranous","extraneous"],["extrapoliate","extrapolate"],["extrat","extract"],["extrated","extracted"],["extraterrestial","extraterrestrial"],["extraterrestials","extraterrestrials"],["extrates","extracts"],["extrating","extracting"],["extration","extraction"],["extrator","extractor"],["extrators","extractors"],["extrats","extracts"],["extravagent","extravagant"],["extraversion","extroversion"],["extravert","extrovert"],["extraverts","extroverts"],["extraxt","extract"],["extraxted","extracted"],["extraxting","extracting"],["extraxtors","extractors"],["extraxts","extracts"],["extream","extreme"],["extreamely","extremely"],["extreamily","extremely"],["extreamly","extremely"],["extreams","extremes"],["extreem","extreme"],["extreemly","extremely"],["extremaly","extremely"],["extremeley","extremely"],["extremelly","extremely"],["extrememe","extreme"],["extrememely","extremely"],["extrememly","extremely"],["extremeophile","extremophile"],["extremitys","extremities"],["extremly","extremely"],["extrenal","external"],["extrenally","externally"],["extrenaly","externally"],["extrime","extreme"],["extrimely","extremely"],["extrimly","extremely"],["extrmities","extremities"],["extrodinary","extraordinary"],["extrordinarily","extraordinarily"],["extrordinary","extraordinary"],["extry","entry"],["exturd","extrude"],["exturde","extrude"],["exturded","extruded"],["exturdes","extrudes"],["exturding","extruding"],["exuberent","exuberant"],["exucuted","executed"],["eyt","yet"],["ezdrop","eavesdrop"],["fability","facility"],["fabircate","fabricate"],["fabircated","fabricated"],["fabircates","fabricates"],["fabircatings","fabricating"],["fabircation","fabrication"],["facce","face"],["faciliate","facilitate"],["faciliated","facilitated"],["faciliates","facilitates"],["faciliating","facilitating"],["facilites","facilities"],["facilitiate","facilitate"],["facilitiates","facilitates"],["facilititate","facilitate"],["facillitate","facilitate"],["facillities","facilities"],["faciltate","facilitate"],["facilties","facilities"],["facinated","fascinated"],["facirity","facility"],["facist","fascist"],["facorite","favorite"],["facorites","favorites"],["facourite","favourite"],["facourites","favourites"],["facours","favours"],["factization","factorization"],["factorizaiton","factorization"],["factorys","factories"],["fadind","fading"],["faeture","feature"],["faetures","features"],["Fahrenheight","Fahrenheit"],["faield","failed"],["faild","failed"],["failded","failed"],["faile","failed"],["failer","failure"],["failes","fails"],["failicies","facilities"],["failicy","facility"],["failied","failed"],["failiure","failure"],["failiures","failures"],["failiver","failover"],["faill","fail"],["failled","failed"],["faillure","failure"],["failng","failing"],["failre","failure"],["failrue","failure"],["failture","failure"],["failue","failure"],["failuer","failure"],["failues","failures"],["failured","failed"],["faireness","fairness"],["fairoh","pharaoh"],["faiway","fairway"],["faiways","fairways"],["faktor","factor"],["faktored","factored"],["faktoring","factoring"],["faktors","factors"],["falg","flag"],["falgs","flags"],["falied","failed"],["faliure","failure"],["faliures","failures"],["fallabck","fallback"],["fallbck","fallback"],["fallhrough","fallthrough"],["fallthruogh","fallthrough"],["falltrough","fallthrough"],["falshed","flashed"],["falshes","flashes"],["falshing","flashing"],["falsly","falsely"],["falt","fault"],["falure","failure"],["familar","familiar"],["familes","families"],["familiies","families"],["familiy","family"],["familliar","familiar"],["familly","family"],["famlilies","families"],["famlily","family"],["famoust","famous"],["fanatism","fanaticism"],["fancyness","fanciness"],["Farenheight","Fahrenheit"],["Farenheit","Fahrenheit"],["faries","fairies"],["farmework","framework"],["fasade","facade"],["fasion","fashion"],["fasle","false"],["fassade","facade"],["fassinate","fascinate"],["fasterner","fastener"],["fasterners","fasteners"],["fastner","fastener"],["fastners","fasteners"],["fastr","faster"],["fatc","fact"],["fater","faster"],["fatig","fatigue"],["fatser","faster"],["fature","feature"],["faught","fought"],["fauilure","failure"],["fauilures","failures"],["fauture","feature"],["fautured","featured"],["fautures","features"],["fauturing","featuring"],["favoutrable","favourable"],["favuourites","favourites"],["faymus","famous"],["fcound","found"],["feasabile","feasible"],["feasability","feasibility"],["feasable","feasible"],["featchd","fetched"],["featched","fetched"],["featching","fetching"],["featchs","fetches"],["featchss","fetches"],["featchure","feature"],["featchured","featured"],["featchures","features"],["featchuring","featuring"],["featre","feature"],["featue","feature"],["featued","featured"],["featues","features"],["featur","feature"],["featurs","features"],["feautre","feature"],["feauture","feature"],["feautures","features"],["febbruary","February"],["febewary","February"],["februar","February"],["Febuary","February"],["Feburary","February"],["fecthing","fetching"],["fedality","fidelity"],["fedreally","federally"],["feeback","feedback"],["feeded","fed"],["feek","feel"],["feeks","feels"],["feetur","feature"],["feeture","feature"],["feild","field"],["feld","field"],["felisatus","felicitous"],["femminist","feminist"],["fempto","femto"],["feonsay","fianc\xE9e"],["fequency","frequency"],["feromone","pheromone"],["fertil","fertile"],["fertily","fertility"],["fetaure","feature"],["fetaures","features"],["fetchs","fetches"],["feture","feature"],["fetures","features"],["fewsha","fuchsia"],["fezent","pheasant"],["fhurter","further"],["fials","fails"],["fianite","finite"],["fianlly","finally"],["fibonaacci","Fibonacci"],["ficticious","fictitious"],["fictious","fictitious"],["fidality","fidelity"],["fiddley","fiddly"],["fidn","find"],["fied","field"],["fiedl","field"],["fiedled","fielded"],["fiedls","fields"],["fieid","field"],["fieldlst","fieldlist"],["fieled","field"],["fielesystem","filesystem"],["fielesystems","filesystems"],["fielname","filename"],["fielneame","filename"],["fiercly","fiercely"],["fightings","fighting"],["figurestyle","figurestyles"],["filal","final"],["fileand","file and"],["fileds","fields"],["fileld","field"],["filelds","fields"],["filenae","filename"],["filese","files"],["fileshystem","filesystem"],["fileshystems","filesystems"],["filesnames","filenames"],["filess","files"],["filesstem","filesystem"],["filessytem","filesystem"],["filessytems","filesystems"],["fileststem","filesystem"],["filesysems","filesystems"],["filesysthem","filesystem"],["filesysthems","filesystems"],["filesystmes","filesystems"],["filesystyem","filesystem"],["filesystyems","filesystems"],["filesytem","filesystem"],["filesytems","filesystems"],["filesytsem","filesystem"],["fileter","filter"],["filetest","file test"],["filetests","file tests"],["fileystem","filesystem"],["fileystems","filesystems"],["filiament","filament"],["fillay","fillet"],["fillement","filament"],["fillowing","following"],["fillung","filling"],["filnal","final"],["filname","filename"],["filp","flip"],["filpped","flipped"],["filpping","flipping"],["filps","flips"],["filse","files"],["filsystem","filesystem"],["filsystems","filesystems"],["filterd","filtered"],["filterig","filtering"],["filterin","filtering"],["filterring","filtering"],["filtersing","filtering"],["filterss","filters"],["filtype","filetype"],["filtypes","filetypes"],["fimilies","families"],["fimrware","firmware"],["fimware","firmware"],["finacial","financial"],["finailse","finalise"],["finailze","finalize"],["finallly","finally"],["finanace","finance"],["finanaced","financed"],["finanaces","finances"],["finanacially","financially"],["finanacier","financier"],["financialy","financially"],["finanize","finalize"],["finanlize","finalize"],["fincally","finally"],["finctionalities","functionalities"],["finctionality","functionality"],["finde","find"],["findn","find"],["findout","find out"],["finelly","finally"],["finess","finesse"],["fingeprint","fingerprint"],["finialization","finalization"],["finializing","finalizing"],["finilizes","finalizes"],["finisched","finished"],["finised","finished"],["finishied","finished"],["finishs","finishes"],["finitel","finite"],["finness","finesse"],["finnished","finished"],["finshed","finished"],["finshing","finishing"],["finsih","finish"],["finsihed","finished"],["finsihes","finishes"],["finsihing","finishing"],["finsished","finished"],["finxed","fixed"],["finxing","fixing"],["fiorget","forget"],["firday","Friday"],["firends","friends"],["firey","fiery"],["firmare","firmware"],["firmaware","firmware"],["firmawre","firmware"],["firmeare","firmware"],["firmeware","firmware"],["firmnware","firmware"],["firmwart","firmware"],["firmwear","firmware"],["firmwqre","firmware"],["firmwre","firmware"],["firmwware","firmware"],["firsr","first"],["firsth","first"],["firware","firmware"],["firwmare","firmware"],["fisionable","fissionable"],["fisisist","physicist"],["fisist","physicist"],["fisrt","first"],["fitering","filtering"],["fitler","filter"],["fitlers","filters"],["fivety","fifty"],["fixel","pixel"],["fixels","pixels"],["fixeme","fixme"],["fixwd","fixed"],["fizeek","physique"],["flacor","flavor"],["flacored","flavored"],["flacoring","flavoring"],["flacorings","flavorings"],["flacors","flavors"],["flacour","flavour"],["flacoured","flavoured"],["flacouring","flavouring"],["flacourings","flavourings"],["flacours","flavours"],["flaged","flagged"],["flages","flags"],["flagg","flag"],["flahsed","flashed"],["flahses","flashes"],["flahsing","flashing"],["flakyness","flakiness"],["flamable","flammable"],["flaot","float"],["flaoting","floating"],["flashflame","flashframe"],["flashig","flashing"],["flasing","flashing"],["flate","flat"],["flatened","flattened"],["flattend","flattened"],["flattenning","flattening"],["flawess","flawless"],["fle","file"],["flem","phlegm"],["Flemmish","Flemish"],["flewant","fluent"],["flexability","flexibility"],["flexable","flexible"],["flexibel","flexible"],["flexibele","flexible"],["flexibilty","flexibility"],["flext","flex"],["flie","file"],["fliter","filter"],["flitered","filtered"],["flitering","filtering"],["fliters","filters"],["floading-add","floating-add"],["floatation","flotation"],["floride","fluoride"],["floting","floating"],["flouride","fluoride"],["flourine","fluorine"],["flourishment","flourishing"],["flter","filter"],["fluctuand","fluctuant"],["flud","flood"],["fluorish","flourish"],["fluoroscent","fluorescent"],["fluroescent","fluorescent"],["flushs","flushes"],["flusing","flushing"],["focu","focus"],["focued","focused"],["focument","document"],["focuse","focus"],["focusf","focus"],["focuss","focus"],["focussed","focused"],["focusses","focuses"],["fof","for"],["foget","forget"],["fogot","forgot"],["fogotten","forgotten"],["fointers","pointers"],["foler","folder"],["folers","folders"],["folfer","folder"],["folfers","folders"],["folled","followed"],["foller","follower"],["follers","followers"],["follew","follow"],["follewed","followed"],["follewer","follower"],["follewers","followers"],["follewin","following"],["follewind","following"],["follewing","following"],["follewinwg","following"],["follewiong","following"],["follewiwng","following"],["follewong","following"],["follews","follows"],["follfow","follow"],["follfowed","followed"],["follfower","follower"],["follfowers","followers"],["follfowin","following"],["follfowind","following"],["follfowing","following"],["follfowinwg","following"],["follfowiong","following"],["follfowiwng","following"],["follfowong","following"],["follfows","follows"],["follin","following"],["follind","following"],["follinwg","following"],["folliong","following"],["folliw","follow"],["folliwed","followed"],["folliwer","follower"],["folliwers","followers"],["folliwin","following"],["folliwind","following"],["folliwing","following"],["folliwinwg","following"],["folliwiong","following"],["folliwiwng","following"],["folliwng","following"],["folliwong","following"],["folliws","follows"],["folllow","follow"],["folllowed","followed"],["folllower","follower"],["folllowers","followers"],["folllowin","following"],["folllowind","following"],["folllowing","following"],["folllowinwg","following"],["folllowiong","following"],["folllowiwng","following"],["folllowong","following"],["follod","followed"],["folloeing","following"],["folloing","following"],["folloiwng","following"],["follolwing","following"],["follong","following"],["follos","follows"],["followes","follows"],["followig","following"],["followign","following"],["followin","following"],["followind","following"],["followint","following"],["followng","following"],["followwing","following"],["followwings","followings"],["folls","follows"],["follw","follow"],["follwed","followed"],["follwer","follower"],["follwers","followers"],["follwin","following"],["follwind","following"],["follwing","following"],["follwinwg","following"],["follwiong","following"],["follwiwng","following"],["follwo","follow"],["follwoe","follow"],["follwoed","followed"],["follwoeed","followed"],["follwoeer","follower"],["follwoeers","followers"],["follwoein","following"],["follwoeind","following"],["follwoeing","following"],["follwoeinwg","following"],["follwoeiong","following"],["follwoeiwng","following"],["follwoeong","following"],["follwoer","follower"],["follwoers","followers"],["follwoes","follows"],["follwoin","following"],["follwoind","following"],["follwoing","following"],["follwoinwg","following"],["follwoiong","following"],["follwoiwng","following"],["follwong","following"],["follwoong","following"],["follwos","follows"],["follwow","follow"],["follwowed","followed"],["follwower","follower"],["follwowers","followers"],["follwowin","following"],["follwowind","following"],["follwowing","following"],["follwowinwg","following"],["follwowiong","following"],["follwowiwng","following"],["follwowong","following"],["follwows","follows"],["follws","follows"],["follww","follow"],["follwwed","followed"],["follwwer","follower"],["follwwers","followers"],["follwwin","following"],["follwwind","following"],["follwwing","following"],["follwwinwg","following"],["follwwiong","following"],["follwwiwng","following"],["follwwong","following"],["follwws","follows"],["foloow","follow"],["foloowed","followed"],["foloower","follower"],["foloowers","followers"],["foloowin","following"],["foloowind","following"],["foloowing","following"],["foloowinwg","following"],["foloowiong","following"],["foloowiwng","following"],["foloowong","following"],["foloows","follows"],["folow","follow"],["folowed","followed"],["folower","follower"],["folowers","followers"],["folowin","following"],["folowind","following"],["folowing","following"],["folowinwg","following"],["folowiong","following"],["folowiwng","following"],["folowong","following"],["folows","follows"],["foloww","follow"],["folowwed","followed"],["folowwer","follower"],["folowwers","followers"],["folowwin","following"],["folowwind","following"],["folowwing","following"],["folowwinwg","following"],["folowwiong","following"],["folowwiwng","following"],["folowwong","following"],["folowws","follows"],["folse","false"],["folwo","follow"],["folwoed","followed"],["folwoer","follower"],["folwoers","followers"],["folwoin","following"],["folwoind","following"],["folwoing","following"],["folwoinwg","following"],["folwoiong","following"],["folwoiwng","following"],["folwoong","following"],["folwos","follows"],["folx","folks"],["fom","from"],["fomat","format"],["fomated","formatted"],["fomater","formatter"],["fomates","formats"],["fomating","formatting"],["fomats","formats"],["fomatted","formatted"],["fomatter","formatter"],["fomatting","formatting"],["fomed","formed"],["fomrat","format"],["fomrated","formatted"],["fomrater","formatter"],["fomrating","formatting"],["fomrats","formats"],["fomratted","formatted"],["fomratter","formatter"],["fomratting","formatting"],["fomula","formula"],["fomulas","formula"],["fonction","function"],["fonctional","functional"],["fonctionalities","functionalities"],["fonctionality","functionality"],["fonctioning","functioning"],["fonctionnalies","functionalities"],["fonctionnalities","functionalities"],["fonctionnality","functionality"],["fonctions","functions"],["fonetic","phonetic"],["fontier","frontier"],["fontonfig","fontconfig"],["fontrier","frontier"],["fonud","found"],["foontnotes","footnotes"],["foootball","football"],["foorter","footer"],["footnoes","footnotes"],["footprinst","footprints"],["foound","found"],["foppy","floppy"],["foppys","floppies"],["foramatting","formatting"],["foramt","format"],["forat","format"],["forbad","forbade"],["forbbiden","forbidden"],["forbiden","forbidden"],["forbit","forbid"],["forbiten","forbidden"],["forbitten","forbidden"],["forcably","forcibly"],["forcast","forecast"],["forcasted","forecasted"],["forcaster","forecaster"],["forcasters","forecasters"],["forcasting","forecasting"],["forcasts","forecasts"],["forcot","forgot"],["forece","force"],["foreced","forced"],["foreces","forces"],["foregrond","foreground"],["foregronds","foregrounds"],["foreing","foreign"],["forementionned","aforementioned"],["forermly","formerly"],["forfiet","forfeit"],["forgeround","foreground"],["forgoten","forgotten"],["forground","foreground"],["forhead","forehead"],["foriegn","foreign"],["forld","fold"],["forlder","folder"],["forlders","folders"],["Formalhaut","Fomalhaut"],["formallize","formalize"],["formallized","formalized"],["formate","format"],["formated","formatted"],["formater","formatter"],["formaters","formatters"],["formates","formats"],["formath","format"],["formaths","formats"],["formating","formatting"],["formatteded","formatted"],["formattgin","formatting"],["formattind","formatting"],["formattings","formatting"],["formattring","formatting"],["formattted","formatted"],["formattting","formatting"],["formelly","formerly"],["formely","formerly"],["formend","formed"],["formidible","formidable"],["formmatted","formatted"],["formost","foremost"],["formt","format"],["formua","formula"],["formual","formula"],["formuale","formulae"],["formuals","formulas"],["fornat","format"],["fornated","formatted"],["fornater","formatter"],["fornats","formats"],["fornatted","formatted"],["fornatter","formatter"],["forot","forgot"],["forotten","forgotten"],["forr","for"],["forsaw","foresaw"],["forse","force"],["forseeable","foreseeable"],["fortan","fortran"],["fortat","format"],["forteen","fourteen"],["fortelling","foretelling"],["forthcominng","forthcoming"],["forthcomming","forthcoming"],["fortunaly","fortunately"],["fortunat","fortunate"],["fortunatelly","fortunately"],["fortunatly","fortunately"],["fortunetly","fortunately"],["forula","formula"],["forulas","formulas"],["forumla","formula"],["forumlas","formulas"],["forumula","formula"],["forumulas","formulas"],["forunate","fortunate"],["forunately","fortunately"],["forunner","forerunner"],["forutunate","fortunate"],["forutunately","fortunately"],["forver","forever"],["forwad","forward"],["forwaded","forwarded"],["forwading","forwarding"],["forwads","forwards"],["forwardig","forwarding"],["forwaring","forwarding"],["forwwarded","forwarded"],["foto","photo"],["fotograf","photograph"],["fotografic","photographic"],["fotografical","photographical"],["fotografy","photography"],["fotograph","photograph"],["fotography","photography"],["foucs","focus"],["foudn","found"],["foudning","founding"],["fougth","fought"],["foult","fault"],["foults","faults"],["foundaries","foundries"],["foundary","foundry"],["Foundland","Newfoundland"],["fourties","forties"],["fourty","forty"],["fouth","fourth"],["fouund","found"],["foward","forward"],["fowarded","forwarded"],["fowarding","forwarding"],["fowards","forwards"],["fprmat","format"],["fracional","fractional"],["fragement","fragment"],["fragementation","fragmentation"],["fragements","fragments"],["fragmant","fragment"],["fragmantation","fragmentation"],["fragmants","fragments"],["fragmenet","fragment"],["fragmenetd","fragmented"],["fragmeneted","fragmented"],["fragmeneting","fragmenting"],["fragmenets","fragments"],["fragmnet","fragment"],["frambuffer","framebuffer"],["framebufer","framebuffer"],["framei","frame"],["frament","fragment"],["framented","fragmented"],["framents","fragments"],["frametyp","frametype"],["framewoek","framework"],["framewoeks","frameworks"],["frameworkk","framework"],["framlayout","framelayout"],["framming","framing"],["framwework","framework"],["framwork","framework"],["framworks","frameworks"],["frane","frame"],["frankin","franklin"],["Fransiscan","Franciscan"],["Fransiscans","Franciscans"],["franzise","franchise"],["frecuencies","frequencies"],["frecuency","frequency"],["frecuent","frequent"],["frecuented","frequented"],["frecuently","frequently"],["frecuents","frequents"],["freecallrelpy","freecallreply"],["freedon","freedom"],["freedons","freedoms"],["freedum","freedom"],["freedums","freedoms"],["freee","free"],["freeed","freed"],["freezs","freezes"],["freind","friend"],["freindly","friendly"],["freqencies","frequencies"],["freqency","frequency"],["freqeuncies","frequencies"],["freqeuncy","frequency"],["freqiencies","frequencies"],["freqiency","frequency"],["freqquencies","frequencies"],["freqquency","frequency"],["frequancies","frequencies"],["frequancy","frequency"],["frequant","frequent"],["frequantly","frequently"],["frequences","frequencies"],["frequencey","frequency"],["frequenies","frequencies"],["frequentily","frequently"],["frequncies","frequencies"],["frequncy","frequency"],["freze","freeze"],["frezes","freezes"],["frgament","fragment"],["fricton","friction"],["fridey","Friday"],["frimware","firmware"],["frisday","Friday"],["frist","first"],["frition","friction"],["fritional","frictional"],["fritions","frictions"],["frmat","format"],["frmo","from"],["froce","force"],["frok","from"],["fromal","formal"],["fromat","format"],["fromated","formatted"],["fromates","formats"],["fromating","formatting"],["fromation","formation"],["fromats","formats"],["frome","from"],["fromed","formed"],["fromm","from"],["froms","forms"],["fromt","from"],["fromthe","from the"],["fronend","frontend"],["fronends","frontends"],["froniter","frontier"],["frontent","frontend"],["frontents","frontends"],["frop","drop"],["fropm","from"],["frops","drops"],["frowarded","forwarded"],["frowrad","forward"],["frowrading","forwarding"],["frowrads","forwards"],["frozee","frozen"],["fschk","fsck"],["FTBS","FTBFS"],["ftrunacate","ftruncate"],["fualt","fault"],["fualts","faults"],["fucntion","function"],["fucntional","functional"],["fucntionality","functionality"],["fucntioned","functioned"],["fucntioning","functioning"],["fucntions","functions"],["fuction","function"],["fuctionality","functionality"],["fuctiones","functioned"],["fuctioning","functioning"],["fuctionoid","functionoid"],["fuctions","functions"],["fuetherst","furthest"],["fuethest","furthest"],["fufill","fulfill"],["fufilled","fulfilled"],["fugure","figure"],["fugured","figured"],["fugures","figures"],["fule","file"],["fulfiled","fulfilled"],["fullfiled","fulfilled"],["fullfiling","fulfilling"],["fullfilled","fulfilled"],["fullfilling","fulfilling"],["fullfills","fulfills"],["fullly","fully"],["fulsh","flush"],["fuly","fully"],["fumction","function"],["fumctional","functional"],["fumctionally","functionally"],["fumctioned","functioned"],["fumctions","functions"],["funcation","function"],["funchtion","function"],["funchtional","functional"],["funchtioned","functioned"],["funchtioning","functioning"],["funchtionn","function"],["funchtionnal","functional"],["funchtionned","functioned"],["funchtionning","functioning"],["funchtionns","functions"],["funchtions","functions"],["funcion","function"],["funcions","functions"],["funciotn","function"],["funciotns","functions"],["funciton","function"],["funcitonal","functional"],["funcitonality","functionality"],["funcitonally","functionally"],["funcitoned","functioned"],["funcitoning","functioning"],["funcitons","functions"],["funcstions","functions"],["functiion","function"],["functiional","functional"],["functiionality","functionality"],["functiionally","functionally"],["functiioning","functioning"],["functiions","functions"],["functin","function"],["functinality","functionality"],["functino","function"],["functins","functions"],["functio","function"],["functionability","functionality"],["functionaility","functionality"],["functionailty","functionality"],["functionaily","functionality"],["functionallities","functionalities"],["functionallity","functionality"],["functionaltiy","functionality"],["functionalty","functionality"],["functionionalities","functionalities"],["functionionality","functionality"],["functionnal","functional"],["functionnalities","functionalities"],["functionnality","functionality"],["functionnaly","functionally"],["functionning","functioning"],["functionon","function"],["functionss","functions"],["functios","functions"],["functiosn","functions"],["functiton","function"],["functitonal","functional"],["functitonally","functionally"],["functitoned","functioned"],["functitons","functions"],["functon","function"],["functonal","functional"],["functonality","functionality"],["functoning","functioning"],["functons","functions"],["functtion","function"],["functtional","functional"],["functtionalities","functionalities"],["functtioned","functioned"],["functtioning","functioning"],["functtions","functions"],["funczion","function"],["fundametal","fundamental"],["fundametals","fundamentals"],["fundation","foundation"],["fundemantal","fundamental"],["fundemental","fundamental"],["fundementally","fundamentally"],["fundementals","fundamentals"],["funguses","fungi"],["funktion","function"],["funnnily","funnily"],["funtion","function"],["funtional","functional"],["funtionalities","functionalities"],["funtionality","functionality"],["funtionallity","functionality"],["funtionally","functionally"],["funtionalty","functionality"],["funtioning","functioning"],["funtions","functions"],["funvtion","function"],["funvtional","functional"],["funvtionalities","functionalities"],["funvtionality","functionality"],["funvtioned","functioned"],["funvtioning","functioning"],["funvtions","functions"],["funxtion","function"],["funxtional","functional"],["funxtionalities","functionalities"],["funxtionality","functionality"],["funxtioned","functioned"],["funxtioning","functioning"],["funxtions","functions"],["furether","further"],["furethermore","furthermore"],["furethest","furthest"],["furfill","fulfill"],["furher","further"],["furhermore","furthermore"],["furhest","furthest"],["furhter","further"],["furhtermore","furthermore"],["furhtest","furthest"],["furmalae","formulae"],["furmula","formula"],["furmulae","formulae"],["furnction","function"],["furnctional","functional"],["furnctions","functions"],["furneture","furniture"],["furser","further"],["fursermore","furthermore"],["furst","first"],["fursther","further"],["fursthermore","furthermore"],["fursthest","furthest"],["furter","further"],["furthemore","furthermore"],["furthermor","furthermore"],["furtherst","furthest"],["furthremore","furthermore"],["furthrest","furthest"],["furthur","further"],["furture","future"],["furure","future"],["furuther","further"],["furutre","future"],["furzzer","fuzzer"],["fuschia","fuchsia"],["fushed","flushed"],["fushing","flushing"],["futher","further"],["futherize","further"],["futhermore","furthermore"],["futrue","future"],["futrure","future"],["futture","future"],["fwe","few"],["fwirte","fwrite"],["fxed","fixed"],["fysical","physical"],["fysisist","physicist"],["fysisit","physicist"],["gabage","garbage"],["galatic","galactic"],["Galations","Galatians"],["gallaries","galleries"],["gallary","gallery"],["gallaxies","galaxies"],["gallleries","galleries"],["galllery","gallery"],["galllerys","galleries"],["galvinized","galvanized"],["Gameboy","Game Boy"],["ganbia","gambia"],["ganerate","generate"],["ganes","games"],["ganster","gangster"],["garabge","garbage"],["garantee","guarantee"],["garanteed","guaranteed"],["garanteeed","guaranteed"],["garantees","guarantees"],["garantied","guaranteed"],["garanty","guarantee"],["garbadge","garbage"],["garbage-dollected","garbage-collected"],["garbagge","garbage"],["garbarge","garbage"],["gard","guard"],["gardai","garda\xED"],["garentee","guarantee"],["garnison","garrison"],["garuantee","guarantee"],["garuanteed","guaranteed"],["garuantees","guarantees"],["garuantied","guaranteed"],["gatable","gateable"],["gateing","gating"],["gatherig","gathering"],["gatway","gateway"],["gauage","gauge"],["gauarana","guaran\xE1"],["gauarantee","guarantee"],["gauaranteed","guaranteed"],["gauarentee","guarantee"],["gauarenteed","guaranteed"],["gaurantee","guarantee"],["gauranteed","guaranteed"],["gauranteeing","guaranteeing"],["gaurantees","guarantees"],["gaurentee","guarantee"],["gaurenteed","guaranteed"],["gaurentees","guarantees"],["gaus'","Gauss'"],["gaus's","Gauss'"],["gausian","gaussian"],["geeneric","generic"],["geenrate","generate"],["geenrated","generated"],["geenrates","generates"],["geenration","generation"],["geenrational","generational"],["geeoteen","guillotine"],["geeral","general"],["gemetrical","geometrical"],["gemetry","geometry"],["gemoetry","geometry"],["gemometric","geometric"],["genarate","generate"],["genarated","generated"],["genarating","generating"],["genaration","generation"],["genearal","general"],["genearally","generally"],["genearted","generated"],["geneate","generate"],["geneated","generated"],["geneates","generates"],["geneating","generating"],["geneation","generation"],["geneological","genealogical"],["geneologies","genealogies"],["geneology","genealogy"],["generaates","generates"],["generaly","generally"],["generalyl","generally"],["generalyse","generalise"],["generater","generator"],["generaters","generators"],["generatig","generating"],["generatng","generating"],["generatting","generating"],["genereate","generate"],["genereated","generated"],["genereates","generates"],["genereating","generating"],["genered","generated"],["genereic","generic"],["generell","general"],["generelly","generally"],["genererate","generate"],["genererated","generated"],["genererater","generator"],["genererating","generating"],["genereration","generation"],["genereted","generated"],["generilise","generalise"],["generilised","generalised"],["generilises","generalises"],["generilize","generalize"],["generilized","generalized"],["generilizes","generalizes"],["generiously","generously"],["generla","general"],["generlaizes","generalizes"],["generlas","generals"],["generted","generated"],["generting","generating"],["genertion","generation"],["genertor","generator"],["genertors","generators"],["genialia","genitalia"],["genral","general"],["genralisation","generalisation"],["genralisations","generalisations"],["genralise","generalise"],["genralised","generalised"],["genralises","generalises"],["genralization","generalization"],["genralizations","generalizations"],["genralize","generalize"],["genralized","generalized"],["genralizes","generalizes"],["genrally","generally"],["genrals","generals"],["genrate","generate"],["genrated","generated"],["genrates","generates"],["genratet","generated"],["genrating","generating"],["genration","generation"],["genrations","generations"],["genrator","generator"],["genrators","generators"],["genreate","generate"],["genreated","generated"],["genreates","generates"],["genreating","generating"],["genreic","generic"],["genric","generic"],["genrics","generics"],["gental","gentle"],["genuin","genuine"],["geocentic","geocentric"],["geoemtries","geometries"],["geoemtry","geometry"],["geogcountry","geocountry"],["geographich","geographic"],["geographicial","geographical"],["geoio","geoip"],["geomertic","geometric"],["geomerties","geometries"],["geomerty","geometry"],["geomery","geometry"],["geometites","geometries"],["geometrician","geometer"],["geometricians","geometers"],["geometrie","geometry"],["geometrys","geometries"],["geomety","geometry"],["geometyr","geometry"],["geomitrically","geometrically"],["geomoetric","geometric"],["geomoetrically","geometrically"],["geomoetry","geometry"],["geomtery","geometry"],["geomtries","geometries"],["geomtry","geometry"],["geomtrys","geometries"],["georeferncing","georeferencing"],["geraff","giraffe"],["geraphics","graphics"],["gerat","great"],["gereating","generating"],["gerenate","generate"],["gerenated","generated"],["gerenates","generates"],["gerenating","generating"],["gerenation","generation"],["gerenations","generations"],["gerenic","generic"],["gerenics","generics"],["gererate","generate"],["gererated","generated"],["gerilla","guerrilla"],["gerneral","general"],["gernerally","generally"],["gerneraly","generally"],["gernerate","generate"],["gernerated","generated"],["gernerates","generates"],["gernerating","generating"],["gerneration","generation"],["gernerator","generator"],["gernerators","generators"],["gerneric","generic"],["gernerics","generics"],["gess","guess"],["get's","gets"],["get;s","gets"],["getfastproperyvalue","getfastpropertyvalue"],["getimezone","gettimezone"],["geting","getting"],["getlael","getlabel"],["getoe","ghetto"],["getoject","getobject"],["gettetx","gettext"],["gettter","getter"],["gettters","getters"],["getttext","gettext"],["getttime","gettime"],["getttimeofday","gettimeofday"],["gettting","getting"],["ggogled","Googled"],["Ghandi","Gandhi"],["ghostcript","ghostscript"],["ghostscritp","ghostscript"],["ghraphic","graphic"],["gien","given"],["gigibit","gigabit"],["gilotine","guillotine"],["gilty","guilty"],["ginee","guinea"],["gingam","gingham"],["gioen","given"],["gir","git"],["giser","geyser"],["gisers","geysers"],["git-buildpackge","git-buildpackage"],["git-buildpackges","git-buildpackages"],["gitar","guitar"],["gitars","guitars"],["gitatributes","gitattributes"],["giveing","giving"],["givveing","giving"],["givven","given"],["givving","giving"],["glamourous","glamorous"],["glight","flight"],["gloab","globe"],["gloabal","global"],["gloabl","global"],["gloassaries","glossaries"],["gloassary","glossary"],["globablly","globally"],["globaly","globally"],["globbal","global"],["globel","global"],["glorfied","glorified"],["glpyh","glyph"],["glpyhs","glyphs"],["glyh","glyph"],["glyhs","glyphs"],["glyped","glyphed"],["glyphes","glyphs"],["glyping","glyphing"],["glyserin","glycerin"],["gnawwed","gnawed"],["gneral","general"],["gnerally","generally"],["gnerals","generals"],["gnerate","generate"],["gnerated","generated"],["gnerates","generates"],["gnerating","generating"],["gneration","generation"],["gnerations","generations"],["gneric","generic"],["gnorung","ignoring"],["gobal","global"],["gocde","gcode"],["godess","goddess"],["godesses","goddesses"],["Godounov","Godunov"],["goemetries","geometries"],["goess","goes"],["gogether","together"],["goign","going"],["goin","going"],["goind","going"],["golbal","global"],["golbally","globally"],["golbaly","globally"],["gonig","going"],["gool","ghoul"],["gord","gourd"],["gormay","gourmet"],["gorry","gory"],["gorup","group"],["goruped","grouped"],["goruping","grouping"],["gorups","groups"],["gost","ghost"],["Gothenberg","Gothenburg"],["Gottleib","Gottlieb"],["goup","group"],["gouped","grouped"],["goups","groups"],["gouvener","governor"],["govement","government"],["govenment","government"],["govenor","governor"],["govenrment","government"],["goverance","governance"],["goverment","government"],["govermental","governmental"],["govermnment","government"],["governer","governor"],["governmnet","government"],["govorment","government"],["govormental","governmental"],["govornment","government"],["grabage","garbage"],["grabed","grabbed"],["grabing","grabbing"],["gracefull","graceful"],["gracefuly","gracefully"],["gradiants","gradients"],["gradualy","gradually"],["graet","great"],["grafics","graphics"],["grafitti","graffiti"],["grahic","graphic"],["grahical","graphical"],["grahics","graphics"],["grahpic","graphic"],["grahpical","graphical"],["grahpics","graphics"],["gramar","grammar"],["gramatically","grammatically"],["grammartical","grammatical"],["grammaticaly","grammatically"],["grammer","grammar"],["grammers","grammars"],["granchildren","grandchildren"],["granilarity","granularity"],["granuality","granularity"],["granualtiry","granularity"],["granulatiry","granularity"],["grapgics","graphics"],["graphcis","graphics"],["graphis","graphics"],["grapic","graphic"],["grapical","graphical"],["grapics","graphics"],["grat","great"],["gratefull","grateful"],["gratuitious","gratuitous"],["grbber","grabber"],["greatful","grateful"],["greatfully","gratefully"],["greather","greater"],["greif","grief"],["grephic","graphic"],["grestest","greatest"],["greysacles","greyscales"],["gridles","griddles"],["grigorian","Gregorian"],["grobal","global"],["grobally","globally"],["grometry","geometry"],["grooup","group"],["groouped","grouped"],["groouping","grouping"],["grooups","groups"],["gropu","group"],["groubpy","groupby"],["groupd","grouped"],["groupping","grouping"],["groupt","grouped"],["grranted","granted"],["gruop","group"],["gruopd","grouped"],["gruops","groups"],["grup","group"],["gruped","grouped"],["gruping","grouping"],["grups","groups"],["grwo","grow"],["guage","gauge"],["guarante","guarantee"],["guaranted","guaranteed"],["guaranteey","guaranty"],["guaranteing","guaranteeing"],["guarantes","guarantees"],["guarantie","guarantee"],["guarbage","garbage"],["guareded","guarded"],["guareente","guarantee"],["guareented","guaranteed"],["guareentee","guarantee"],["guareenteed","guaranteed"],["guareenteeing","guaranteeing"],["guareentees","guarantees"],["guareenteing","guaranteeing"],["guareentes","guarantees"],["guareenty","guaranty"],["guarente","guarantee"],["guarented","guaranteed"],["guarentee","guarantee"],["guarenteed","guaranteed"],["guarenteede","guarantee"],["guarenteeded","guaranteed"],["guarenteedeing","guaranteeing"],["guarenteedes","guarantees"],["guarenteedy","guaranty"],["guarenteeing","guaranteeing"],["guarenteer","guarantee"],["guarenteerd","guaranteed"],["guarenteering","guaranteeing"],["guarenteers","guarantees"],["guarentees","guarantees"],["guarenteing","guaranteeing"],["guarentes","guarantees"],["guarentie","guarantee"],["guarentied","guaranteed"],["guarentieing","guaranteeing"],["guarenties","guarantees"],["guarenty","guaranty"],["guarentyd","guaranteed"],["guarentying","guarantee"],["guarentyinging","guaranteeing"],["guarentys","guarantees"],["guarging","guarding"],["guarnante","guarantee"],["guarnanted","guaranteed"],["guarnantee","guarantee"],["guarnanteed","guaranteed"],["guarnanteeing","guaranteeing"],["guarnantees","guarantees"],["guarnanteing","guaranteeing"],["guarnantes","guarantees"],["guarnanty","guaranty"],["guarnate","guarantee"],["guarnated","guaranteed"],["guarnatee","guarantee"],["guarnateed","guaranteed"],["guarnateee","guarantee"],["guarnateeed","guaranteed"],["guarnateeeing","guaranteeing"],["guarnateees","guarantees"],["guarnateeing","guaranteeing"],["guarnatees","guarantees"],["guarnateing","guaranteeing"],["guarnates","guarantees"],["guarnatey","guaranty"],["guarnaty","guaranty"],["guarnete","guarantee"],["guarneted","guaranteed"],["guarnetee","guarantee"],["guarneteed","guaranteed"],["guarneteeing","guaranteeing"],["guarnetees","guarantees"],["guarneteing","guaranteeing"],["guarnetes","guarantees"],["guarnety","guaranty"],["guarnte","guarantee"],["guarnted","guaranteed"],["guarntee","guarantee"],["guarnteed","guaranteed"],["guarnteeing","guaranteeing"],["guarntees","guarantees"],["guarnteing","guaranteeing"],["guarntes","guarantees"],["guarnty","guaranty"],["guarrante","guarantee"],["guarranted","guaranteed"],["guarrantee","guarantee"],["guarranteed","guaranteed"],["guarranteeing","guaranteeing"],["guarrantees","guarantees"],["guarranteing","guaranteeing"],["guarrantes","guarantees"],["guarrantie","guarantee"],["guarrantied","guaranteed"],["guarrantieing","guaranteeing"],["guarranties","guarantees"],["guarranty","guaranty"],["guarrantyd","guaranteed"],["guarrantying","guaranteeing"],["guarrantys","guarantees"],["guarrente","guarantee"],["guarrented","guaranteed"],["guarrentee","guarantee"],["guarrenteed","guaranteed"],["guarrenteeing","guaranteeing"],["guarrentees","guarantees"],["guarrenteing","guaranteeing"],["guarrentes","guarantees"],["guarrenty","guaranty"],["guaruante","guarantee"],["guaruanted","guaranteed"],["guaruantee","guarantee"],["guaruanteed","guaranteed"],["guaruanteeing","guaranteeing"],["guaruantees","guarantees"],["guaruanteing","guaranteeing"],["guaruantes","guarantees"],["guaruanty","guaranty"],["guarunte","guarantee"],["guarunted","guaranteed"],["guaruntee","guarantee"],["guarunteed","guaranteed"],["guarunteeing","guaranteeing"],["guaruntees","guarantees"],["guarunteing","guaranteeing"],["guaruntes","guarantees"],["guarunty","guaranty"],["guas'","Gauss'"],["guas's","Gauss'"],["guas","Gauss"],["guass'","Gauss'"],["guass","Gauss"],["guassian","Gaussian"],["Guatamala","Guatemala"],["Guatamalan","Guatemalan"],["gud","good"],["guerrila","guerrilla"],["guerrilas","guerrillas"],["gueswork","guesswork"],["guideded","guided"],["guidence","guidance"],["guidline","guideline"],["guidlines","guidelines"],["Guilia","Giulia"],["Guilio","Giulio"],["Guiness","Guinness"],["Guiseppe","Giuseppe"],["gunanine","guanine"],["gurantee","guarantee"],["guranteed","guaranteed"],["guranteeing","guaranteeing"],["gurantees","guarantees"],["gurrantee","guarantee"],["guttaral","guttural"],["gutteral","guttural"],["gylph","glyph"],["gziniflate","gzinflate"],["gziped","gzipped"],["haa","has"],["haave","have"],["habaeus","habeas"],["habbit","habit"],["habeus","habeas"],["hability","ability"],["Habsbourg","Habsburg"],["hace","have"],["hachish","hackish"],["hadling","handling"],["hadnler","handler"],["haeder","header"],["haemorrage","haemorrhage"],["halarious","hilarious"],["hald","held"],["halfs","halves"],["halp","help"],["halpoints","halfpoints"],["hammmer","hammer"],["hampster","hamster"],["handel","handle"],["handeler","handler"],["handeles","handles"],["handeling","handling"],["handels","handles"],["hander","handler"],["handfull","handful"],["handhake","handshake"],["handker","handler"],["handleer","handler"],["handleing","handling"],["handlig","handling"],["handlling","handling"],["handsake","handshake"],["handshacke","handshake"],["handshackes","handshakes"],["handshacking","handshaking"],["handshage","handshake"],["handshages","handshakes"],["handshaging","handshaking"],["handshak","handshake"],["handshakng","handshaking"],["handshakre","handshake"],["handshakres","handshakes"],["handshakring","handshaking"],["handshaks","handshakes"],["handshale","handshake"],["handshales","handshakes"],["handshaling","handshaking"],["handshare","handshake"],["handshares","handshakes"],["handsharing","handshaking"],["handshk","handshake"],["handshke","handshake"],["handshkes","handshakes"],["handshking","handshaking"],["handshkng","handshaking"],["handshks","handshakes"],["handskake","handshake"],["handwirting","handwriting"],["hanel","handle"],["hangig","hanging"],["hanlde","handle"],["hanlded","handled"],["hanlder","handler"],["hanlders","handlers"],["hanldes","handles"],["hanlding","handling"],["hanldle","handle"],["hanle","handle"],["hanled","handled"],["hanles","handles"],["hanling","handling"],["hanshake","handshake"],["hanshakes","handshakes"],["hansome","handsome"],["hapen","happen"],["hapend","happened"],["hapends","happens"],["hapened","happened"],["hapening","happening"],["hapenn","happen"],["hapenned","happened"],["hapenning","happening"],["hapenns","happens"],["hapens","happens"],["happaned","happened"],["happended","happened"],["happenned","happened"],["happenning","happening"],["happennings","happenings"],["happenns","happens"],["happilly","happily"],["happne","happen"],["happpen","happen"],["happpened","happened"],["happpening","happening"],["happpenings","happenings"],["happpens","happens"],["harased","harassed"],["harases","harasses"],["harasment","harassment"],["harasments","harassments"],["harassement","harassment"],["harcoded","hardcoded"],["harcoding","hardcoding"],["hard-wirted","hard-wired"],["hardare","hardware"],["hardocde","hardcode"],["hardward","hardware"],["hardwdare","hardware"],["hardwirted","hardwired"],["harge","charge"],["harras","harass"],["harrased","harassed"],["harrases","harasses"],["harrasing","harassing"],["harrasment","harassment"],["harrasments","harassments"],["harrass","harass"],["harrassed","harassed"],["harrasses","harassed"],["harrassing","harassing"],["harrassment","harassment"],["harrassments","harassments"],["harth","hearth"],["harware","hardware"],["harwdare","hardware"],["has'nt","hasn't"],["hases","hashes"],["hashi","hash"],["hashreference","hash reference"],["hashs","hashes"],["hashses","hashes"],["hask","hash"],["hasn;t","hasn't"],["hasnt'","hasn't"],["hasnt","hasn't"],["hass","hash"],["hastable","hashtable"],["hastables","hashtables"],["Hatian","Haitian"],["hauty","haughty"],["have'nt","haven't"],["haveing","having"],["haven;t","haven't"],["havent'","haven't"],["havent't","haven't"],["havent","haven't"],["havew","have"],["haviest","heaviest"],["havn't","haven't"],["havnt","haven't"],["hax","hex"],["haynus","heinous"],["hazzle","hassle"],["hda","had"],["headder","header"],["headders","headers"],["headerr","header"],["headerrs","headers"],["headle","handle"],["headong","heading"],["headquarer","headquarter"],["headquater","headquarter"],["headquatered","headquartered"],["headquaters","headquarters"],["heaer","header"],["healthercare","healthcare"],["heathy","healthy"],["hefer","heifer"],["Heidelburg","Heidelberg"],["heigest","highest"],["heigher","higher"],["heighest","highest"],["heighit","height"],["heighteen","eighteen"],["heigt","height"],["heigth","height"],["heirachies","hierarchies"],["heirachy","hierarchy"],["heirarchic","hierarchic"],["heirarchical","hierarchical"],["heirarchically","hierarchically"],["heirarchies","hierarchies"],["heirarchy","hierarchy"],["heiroglyphics","hieroglyphics"],["helerps","helpers"],["hellow","hello"],["helment","helmet"],["heloer","helper"],["heloers","helpers"],["helpe","helper"],["helpfull","helpful"],["helpfuly","helpfully"],["helpped","helped"],["hemipshere","hemisphere"],["hemipsheres","hemispheres"],["hemishpere","hemisphere"],["hemishperes","hemispheres"],["hemmorhage","hemorrhage"],["hemorage","haemorrhage"],["henc","hence"],["henderence","hindrance"],["hendler","handler"],["hense","hence"],["hepler","helper"],["herarchy","hierarchy"],["herat","heart"],["heree","here"],["heridity","heredity"],["heroe","hero"],["heros","heroes"],["herselv","herself"],["hertiage","heritage"],["hertically","hectically"],["hertzs","hertz"],["hese","these"],["hesiate","hesitate"],["hesistant","hesitant"],["hesistate","hesitate"],["hesistated","hesitated"],["hesistates","hesitates"],["hesistating","hesitating"],["hesistation","hesitation"],["hesistations","hesitations"],["hestiate","hesitate"],["hetrogeneous","heterogeneous"],["heuristc","heuristic"],["heuristcs","heuristics"],["heursitics","heuristics"],["hevy","heavy"],["hexademical","hexadecimal"],["hexdecimal","hexadecimal"],["hexgaon","hexagon"],["hexgaonal","hexagonal"],["hexgaons","hexagons"],["hexidecimal","hexadecimal"],["hge","he"],["hiarchical","hierarchical"],["hiarchy","hierarchy"],["hiddden","hidden"],["hidded","hidden"],["hideen","hidden"],["hiden","hidden"],["hiearchies","hierarchies"],["hiearchy","hierarchy"],["hieght","height"],["hiena","hyena"],["hierachical","hierarchical"],["hierachies","hierarchies"],["hierachries","hierarchies"],["hierachry","hierarchy"],["hierachy","hierarchy"],["hierarachical","hierarchical"],["hierarachy","hierarchy"],["hierarchichal","hierarchical"],["hierarchichally","hierarchically"],["hierarchie","hierarchy"],["hierarcical","hierarchical"],["hierarcy","hierarchy"],["hierarhcical","hierarchical"],["hierarhcically","hierarchically"],["hierarhcies","hierarchies"],["hierarhcy","hierarchy"],["hierchy","hierarchy"],["hieroglph","hieroglyph"],["hieroglphs","hieroglyphs"],["hietus","hiatus"],["higeine","hygiene"],["higer","higher"],["higest","highest"],["high-affort","high-effort"],["highight","highlight"],["highighted","highlighted"],["highighter","highlighter"],["highighters","highlighters"],["highights","highlights"],["highjack","hijack"],["highligh","highlight"],["highlighed","highlighted"],["highligher","highlighter"],["highlighers","highlighters"],["highlighing","highlighting"],["highlighs","highlights"],["highlightin","highlighting"],["highlightning","highlighting"],["highligjt","highlight"],["highligjted","highlighted"],["highligjtes","highlights"],["highligjting","highlighting"],["highligjts","highlights"],["highligt","highlight"],["highligted","highlighted"],["highligth","highlight"],["highligting","highlighting"],["highligts","highlights"],["highter","higher"],["hightest","highest"],["hightlight","highlight"],["hightlighted","highlighted"],["hightlighting","highlighting"],["hightlights","highlights"],["hights","heights"],["higlight","highlight"],["higlighted","highlighted"],["higlighting","highlighting"],["higlights","highlights"],["higly","highly"],["higth","height"],["higway","highway"],["hijkack","hijack"],["hijkacked","hijacked"],["hijkacking","hijacking"],["hijkacks","hijacks"],["hilight","highlight"],["hilighted","highlighted"],["hilighting","highlighting"],["hilights","highlights"],["hillarious","hilarious"],["himselv","himself"],["hinderance","hindrance"],["hinderence","hindrance"],["hindrence","hindrance"],["hipopotamus","hippopotamus"],["hipotetical","hypothetical"],["hirachy","hierarchy"],["hirarchies","hierarchies"],["hirarchy","hierarchy"],["hirarcies","hierarchies"],["hirearchy","hierarchy"],["hirearcy","hierarchy"],["hismelf","himself"],["hisory","history"],["histgram","histogram"],["histocompatability","histocompatibility"],["historgram","histogram"],["historgrams","histograms"],["historicians","historians"],["historyan","historian"],["historyans","historians"],["historycal","historical"],["historycally","historically"],["historycaly","historically"],["histroian","historian"],["histroians","historians"],["histroic","historic"],["histroical","historical"],["histroically","historically"],["histroicaly","historically"],["histroies","histories"],["histroy","history"],["histry","history"],["hitogram","histogram"],["hitories","histories"],["hitory","history"],["hitsingles","hit singles"],["hiygeine","hygiene"],["hmdi","hdmi"],["hnalder","handler"],["hoeks","hoax"],["hoever","however"],["hokay","okay"],["holf","hold"],["holliday","holiday"],["hollowcost","holocaust"],["homapage","homepage"],["homegeneous","homogeneous"],["homestate","home state"],["homogeneize","homogenize"],["homogeneized","homogenized"],["homogenious","homogeneous"],["homogeniously","homogeneously"],["homogenity","homogeneity"],["homogenius","homogeneous"],["homogeniusly","homogeneously"],["homogenoues","homogeneous"],["homogenous","homogeneous"],["homogenously","homogeneously"],["homogenuous","homogeneous"],["honory","honorary"],["hoook","hook"],["hoooks","hooks"],["hootsba","chutzpah"],["hopefulle","hopefully"],["hopefullly","hopefully"],["hopefullt","hopefully"],["hopefullu","hopefully"],["hopefuly","hopefully"],["hopeing","hoping"],["hopful","hopeful"],["hopfully","hopefully"],["hopmepage","homepage"],["hopmepages","homepages"],["hoppefully","hopefully"],["hopyfully","hopefully"],["horicontal","horizontal"],["horicontally","horizontally"],["horinzontal","horizontal"],["horizntal","horizontal"],["horizonal","horizontal"],["horizonally","horizontally"],["horizontale","horizontal"],["horiztonal","horizontal"],["horiztonally","horizontally"],["horphan","orphan"],["horrable","horrible"],["horrifing","horrifying"],["horyzontally","horizontally"],["horziontal","horizontal"],["horziontally","horizontally"],["horzontal","horizontal"],["horzontally","horizontally"],["hosited","hoisted"],["hospitible","hospitable"],["hostanme","hostname"],["hostorical","historical"],["hostories","histories"],["hostory","history"],["hostspot","hotspot"],["hostspots","hotspots"],["hotizontal","horizontal"],["hotname","hostname"],["hounour","honour"],["houres","hours"],["housand","thousand"],["houskeeping","housekeeping"],["hovever","however"],["hovewer","however"],["howeever","however"],["howerver","however"],["howeverm","however"],["howewer","however"],["howver","however"],["hradware","hardware"],["hradwares","hardwares"],["hrlp","help"],["hrlped","helped"],["hrlper","helper"],["hrlpers","helpers"],["hrlping","helping"],["hrlps","helps"],["hrough","through"],["hsa","has"],["hsell","shell"],["hsi","his"],["hsitorians","historians"],["hsotname","hostname"],["hsould'nt","shouldn't"],["hsould","should"],["hsouldn't","shouldn't"],["hstory","history"],["htacccess","htaccess"],["hte","the"],["htey","they"],["htikn","think"],["hting","thing"],["htink","think"],["htis","this"],["htmp","html"],["htting","hitting"],["hueristic","heuristic"],["humber","number"],["huminoid","humanoid"],["humoural","humoral"],["humurous","humorous"],["hunderd","hundred"],["hundreths","hundredths"],["hundrets","hundreds"],["hunrgy","hungry"],["huricane","hurricane"],["huristic","heuristic"],["husban","husband"],["hvae","have"],["hvaing","having"],["hve","have"],["hwihc","which"],["hwile","while"],["hwole","whole"],["hybernate","hibernate"],["hydogen","hydrogen"],["hydrolic","hydraulic"],["hydrolics","hydraulics"],["hydropile","hydrophile"],["hydropilic","hydrophilic"],["hydropobe","hydrophobe"],["hydropobic","hydrophobic"],["hyerarchy","hierarchy"],["hyerlink","hyperlink"],["hygeine","hygiene"],["hygene","hygiene"],["hygenic","hygienic"],["hygine","hygiene"],["hyjack","hijack"],["hyjacking","hijacking"],["hypen","hyphen"],["hypenate","hyphenate"],["hypenated","hyphenated"],["hypenates","hyphenates"],["hypenating","hyphenating"],["hypenation","hyphenation"],["hypens","hyphens"],["hyperboly","hyperbole"],["Hyperldger","Hyperledger"],["hypervior","hypervisor"],["hypocracy","hypocrisy"],["hypocrasy","hypocrisy"],["hypocricy","hypocrisy"],["hypocrit","hypocrite"],["hypocrits","hypocrites"],["hyposeses","hypotheses"],["hyposesis","hypothesis"],["hypoteses","hypotheses"],["hypotesis","hypothesis"],["hypotethically","hypothetically"],["hypothenuse","hypotenuse"],["hypothenuses","hypotenuses"],["hypter","hyper"],["hyptothetical","hypothetical"],["hyptothetically","hypothetically"],["hypvervisor","hypervisor"],["hypvervisors","hypervisors"],["hypvisor","hypervisor"],["hypvisors","hypervisors"],["I'sd","I'd"],["i;ll","I'll"],["iamge","image"],["ibject","object"],["ibjects","objects"],["ibrary","library"],["icesickle","icicle"],["iclude","include"],["icluded","included"],["icludes","includes"],["icluding","including"],["iconclastic","iconoclastic"],["iconifie","iconify"],["icrease","increase"],["icreased","increased"],["icreases","increases"],["icreasing","increasing"],["icrement","increment"],["icrementally","incrementally"],["icremented","incremented"],["icrementing","incrementing"],["icrements","increments"],["idae","idea"],["idaeidae","idea"],["idaes","ideas"],["idealogies","ideologies"],["idealogy","ideology"],["idefinite","indefinite"],["idel","idle"],["idelogy","ideology"],["idemopotent","idempotent"],["idendified","identified"],["idendifier","identifier"],["idendifiers","identifiers"],["idenfied","identified"],["idenfifier","identifier"],["idenfifiers","identifiers"],["idenfitifer","identifier"],["idenfitifers","identifiers"],["idenfitify","identify"],["idenitfy","identify"],["idenitify","identify"],["identation","indentation"],["identcial","identical"],["identfied","identified"],["identfier","identifier"],["identfiers","identifiers"],["identiable","identifiable"],["idential","identical"],["identic","identical"],["identicial","identical"],["identidier","identifier"],["identies","identities"],["identifaction","identification"],["identifcation","identification"],["identifeir","identifier"],["identifeirs","identifiers"],["identifer","identifier"],["identifers","identifiers"],["identificable","identifiable"],["identifictaion","identification"],["identifieer","identifier"],["identifiler","identifier"],["identifilers","identifiers"],["identifing","identifying"],["identifiy","identify"],["identifyable","identifiable"],["identifyed","identified"],["identiviert","identifiers"],["identtation","indentation"],["identties","identities"],["identtifier","identifier"],["identty","identity"],["ideosyncracies","ideosyncrasies"],["ideosyncratic","idiosyncratic"],["idetifier","identifier"],["idetifiers","identifiers"],["idetifies","identifies"],["idicate","indicate"],["idicated","indicated"],["idicates","indicates"],["idicating","indicating"],["idices","indices"],["idiosyncracies","idiosyncrasies"],["idiosyncracy","idiosyncrasy"],["idividual","individual"],["idividually","individually"],["idividuals","individuals"],["idons","icons"],["iechart","piechart"],["ifself","itself"],["ifset","if set"],["ignest","ingest"],["ignested","ingested"],["ignesting","ingesting"],["ignests","ingests"],["ignnore","ignore"],["ignoded","ignored"],["ignonre","ignore"],["ignora","ignore"],["ignord","ignored"],["ignoreing","ignoring"],["ignorence","ignorance"],["ignorgable","ignorable"],["ignorgd","ignored"],["ignorge","ignore"],["ignorged","ignored"],["ignorgg","ignoring"],["ignorgig","ignoring"],["ignorging","ignoring"],["ignorgs","ignores"],["ignormable","ignorable"],["ignormd","ignored"],["ignorme","ignore"],["ignormed","ignored"],["ignormg","ignoring"],["ignormig","ignoring"],["ignorming","ignoring"],["ignorms","ignores"],["ignornable","ignorable"],["ignornd","ignored"],["ignorne","ignore"],["ignorned","ignored"],["ignorng","ignoring"],["ignornig","ignoring"],["ignorning","ignoring"],["ignorns","ignores"],["ignorrable","ignorable"],["ignorrd","ignored"],["ignorre","ignore"],["ignorred","ignored"],["ignorrg","ignoring"],["ignorrig","ignoring"],["ignorring","ignoring"],["ignorrs","ignores"],["ignors","ignores"],["ignortable","ignorable"],["ignortd","ignored"],["ignorte","ignore"],["ignorted","ignored"],["ignortg","ignoring"],["ignortig","ignoring"],["ignorting","ignoring"],["ignorts","ignores"],["ignory","ignore"],["ignroed","ignored"],["ignroing","ignoring"],["igoned","ignored"],["igonorando","ignorando"],["igonore","ignore"],["igore","ignore"],["igored","ignored"],["igores","ignores"],["igoring","ignoring"],["igrnore","ignore"],["Ihaca","Ithaca"],["ihs","his"],["iif","if"],["iimmune","immune"],["iinclude","include"],["iinterval","interval"],["iiterator","iterator"],["iland","island"],["ileagle","illegal"],["ilegal","illegal"],["ilegle","illegal"],["iligal","illegal"],["illegimacy","illegitimacy"],["illegitmate","illegitimate"],["illess","illness"],["illgal","illegal"],["illiegal","illegal"],["illigal","illegal"],["illigitament","illegitimate"],["illistrate","illustrate"],["illustrasion","illustration"],["illution","illusion"],["ilness","illness"],["ilogical","illogical"],["iluminate","illuminate"],["iluminated","illuminated"],["iluminates","illuminates"],["ilumination","illumination"],["iluminations","illuminations"],["ilustrate","illustrate"],["ilustrated","illustrated"],["ilustration","illustration"],["imagenary","imaginary"],["imaghe","image"],["imagin","imagine"],["imapct","impact"],["imapcted","impacted"],["imapcting","impacting"],["imapcts","impacts"],["imapge","image"],["imbaress","embarrass"],["imbed","embed"],["imbedded","embedded"],["imbedding","embedding"],["imblance","imbalance"],["imbrase","embrace"],["imcoming","incoming"],["imcomming","incoming"],["imcompatibility","incompatibility"],["imcompatible","incompatible"],["imcomplete","incomplete"],["imedatly","immediately"],["imedialy","immediately"],["imediate","immediate"],["imediately","immediately"],["imediatly","immediately"],["imense","immense"],["imfamus","infamous"],["imgage","image"],["imidiately","immediately"],["imilar","similar"],["imlement","implement"],["imlementation","implementation"],["imlemented","implemented"],["imlementing","implementing"],["imlements","implements"],["imlicit","implicit"],["imlicitly","implicitly"],["imliment","implement"],["imlimentation","implementation"],["imlimented","implemented"],["imlimenting","implementing"],["imliments","implements"],["immadiate","immediate"],["immadiately","immediately"],["immadiatly","immediately"],["immeadiate","immediate"],["immeadiately","immediately"],["immedaite","immediate"],["immedate","immediate"],["immedately","immediately"],["immedeate","immediate"],["immedeately","immediately"],["immedially","immediately"],["immedialty","immediately"],["immediantely","immediately"],["immediatelly","immediately"],["immediatelty","immediately"],["immediatley","immediately"],["immediatlly","immediately"],["immediatly","immediately"],["immediatlye","immediately"],["immeditaly","immediately"],["immeditately","immediately"],["immeidate","immediate"],["immeidately","immediately"],["immenantly","eminently"],["immidately","immediately"],["immidatly","immediately"],["immidiate","immediate"],["immidiatelly","immediately"],["immidiately","immediately"],["immidiatly","immediately"],["immitate","imitate"],["immitated","imitated"],["immitating","imitating"],["immitator","imitator"],["immmediate","immediate"],["immmediately","immediately"],["immsersive","immersive"],["immsersively","immersively"],["immuniy","immunity"],["immunosupressant","immunosuppressant"],["immutible","immutable"],["imolicit","implicit"],["imolicitly","implicitly"],["imort","import"],["imortable","importable"],["imorted","imported"],["imortes","imports"],["imorting","importing"],["imorts","imports"],["imovable","immovable"],["impcat","impact"],["impcated","impacted"],["impcating","impacting"],["impcats","impacts"],["impecabbly","impeccably"],["impedence","impedance"],["impeed","impede"],["impelement","implement"],["impelementation","implementation"],["impelemented","implemented"],["impelementing","implementing"],["impelements","implements"],["impelentation","implementation"],["impelment","implement"],["impelmentation","implementation"],["impelmentations","implementations"],["impement","implement"],["impementaion","implementation"],["impementaions","implementations"],["impementated","implemented"],["impementation","implementation"],["impementations","implementations"],["impemented","implemented"],["impementing","implementing"],["impementling","implementing"],["impementor","implementer"],["impements","implements"],["imperiaal","imperial"],["imperically","empirically"],["imperitive","imperative"],["impermable","impermeable"],["impiled","implied"],["implace","inplace"],["implament","implement"],["implamentation","implementation"],["implamented","implemented"],["implamenting","implementing"],["implaments","implements"],["implcit","implicit"],["implcitly","implicitly"],["implct","implicit"],["implemantation","implementation"],["implemataion","implementation"],["implemataions","implementations"],["implemememnt","implement"],["implemememntation","implementation"],["implemement","implement"],["implemementation","implementation"],["implemementations","implementations"],["implememented","implemented"],["implemementing","implementing"],["implemements","implements"],["implememetation","implementation"],["implememntation","implementation"],["implememt","implement"],["implememtation","implementation"],["implememtations","implementations"],["implememted","implemented"],["implememting","implementing"],["implememts","implements"],["implemen","implement"],["implemenatation","implementation"],["implemenation","implementation"],["implemenationa","implementation"],["implemenationd","implementation"],["implemenations","implementations"],["implemencted","implemented"],["implemend","implement"],["implemends","implements"],["implemened","implemented"],["implemenet","implement"],["implemenetaion","implementation"],["implemenetaions","implementations"],["implemenetation","implementation"],["implemenetations","implementations"],["implemenetd","implemented"],["implemeneted","implemented"],["implemeneter","implementer"],["implemeneting","implementing"],["implemenetions","implementations"],["implemenets","implements"],["implemenrt","implement"],["implementaed","implemented"],["implementaion","implementation"],["implementaions","implementations"],["implementaiton","implementation"],["implementaitons","implementations"],["implementantions","implementations"],["implementastion","implementation"],["implementataion","implementation"],["implementatation","implementation"],["implementated","implemented"],["implementates","implements"],["implementating","implementing"],["implementatins","implementations"],["implementation-spacific","implementation-specific"],["implementatition","implementation"],["implementatoin","implementation"],["implementatoins","implementations"],["implementatoion","implementation"],["implementaton","implementation"],["implementator","implementer"],["implementators","implementers"],["implementattion","implementation"],["implementd","implemented"],["implementes","implements"],["implementet","implemented"],["implemention","implementation"],["implementtaion","implementation"],["implemet","implement"],["implemetation","implementation"],["implemetations","implementations"],["implemeted","implemented"],["implemeting","implementing"],["implemetnation","implementation"],["implemets","implements"],["implemnt","implement"],["implemntation","implementation"],["implemntations","implementations"],["implemt","implement"],["implemtation","implementation"],["implemtations","implementations"],["implemted","implemented"],["implemtentation","implementation"],["implemtentations","implementations"],["implemting","implementing"],["implemts","implements"],["impleneted","implemented"],["implenment","implement"],["implenmentation","implementation"],["implent","implement"],["implentation","implementation"],["implentations","implementations"],["implented","implemented"],["implenting","implementing"],["implentors","implementers"],["implents","implements"],["implet","implement"],["impletation","implementation"],["impletations","implementations"],["impleted","implemented"],["impleter","implementer"],["impleting","implementing"],["impletment","implement"],["implets","implements"],["implicitely","implicitly"],["implicitley","implicitly"],["implict","implicit"],["implictly","implicitly"],["implimcit","implicit"],["implimcitly","implicitly"],["impliment","implement"],["implimentaion","implementation"],["implimentaions","implementations"],["implimentation","implementation"],["implimentation-spacific","implementation-specific"],["implimentations","implementations"],["implimented","implemented"],["implimenting","implementing"],["implimention","implementation"],["implimentions","implementations"],["implimentor","implementor"],["impliments","implements"],["implmenet","implement"],["implmenetaion","implementation"],["implmenetaions","implementations"],["implmenetation","implementation"],["implmenetations","implementations"],["implmenetd","implemented"],["implmeneted","implemented"],["implmeneter","implementer"],["implmeneting","implementing"],["implmenets","implements"],["implment","implement"],["implmentation","implementation"],["implmentations","implementations"],["implmented","implemented"],["implmenting","implementing"],["implments","implements"],["imploys","employs"],["imporing","importing"],["imporot","import"],["imporoted","imported"],["imporoting","importing"],["imporots","imports"],["imporove","improve"],["imporoved","improved"],["imporovement","improvement"],["imporovements","improvements"],["imporoves","improves"],["imporoving","improving"],["imporsts","imports"],["importamt","important"],["importat","important"],["importd","imported"],["importent","important"],["importnt","important"],["imporve","improve"],["imporved","improved"],["imporvement","improvement"],["imporvements","improvements"],["imporves","improves"],["imporving","improving"],["imporvment","improvement"],["imposible","impossible"],["impossiblble","impossible"],["impot","import"],["impove","improve"],["impoved","improved"],["impovement","improvement"],["impovements","improvements"],["impoves","improves"],["impoving","improving"],["impplement","implement"],["impplementating","implementing"],["impplementation","implementation"],["impplemented","implemented"],["impremented","implemented"],["impres","impress"],["impresive","impressive"],["impressario","impresario"],["imprioned","imprisoned"],["imprisonned","imprisoned"],["improbe","improve"],["improbement","improvement"],["improbements","improvements"],["improbes","improves"],["improbing","improving"],["improbment","improvement"],["improbments","improvements"],["improof","improve"],["improofement","improvement"],["improofing","improving"],["improofment","improvement"],["improofs","improves"],["improove","improve"],["improoved","improved"],["improovement","improvement"],["improovements","improvements"],["improoves","improves"],["improoving","improving"],["improovment","improvement"],["improovments","improvements"],["impropely","improperly"],["improssible","impossible"],["improt","import"],["improtance","importance"],["improtant","important"],["improtantly","importantly"],["improtation","importation"],["improtations","importations"],["improted","imported"],["improter","importer"],["improters","importers"],["improting","importing"],["improts","imports"],["improvemen","improvement"],["improvemenet","improvement"],["improvemenets","improvements"],["improvemens","improvements"],["improvision","improvisation"],["improvmenet","improvement"],["improvmenets","improvements"],["improvment","improvement"],["improvments","improvements"],["imput","input"],["imrovement","improvement"],["in-memeory","in-memory"],["inablility","inability"],["inacccessible","inaccessible"],["inaccesible","inaccessible"],["inaccessable","inaccessible"],["inaccuraccies","inaccuracies"],["inaccuraccy","inaccuracy"],["inacessible","inaccessible"],["inacurate","inaccurate"],["inacurracies","inaccuracies"],["inacurrate","inaccurate"],["inadiquate","inadequate"],["inadquate","inadequate"],["inadvertant","inadvertent"],["inadvertantly","inadvertently"],["inadvertedly","inadvertently"],["inagurated","inaugurated"],["inaguration","inauguration"],["inaktively","inactively"],["inalid","invalid"],["inappropiate","inappropriate"],["inappropreate","inappropriate"],["inapropriate","inappropriate"],["inapropriately","inappropriately"],["inate","innate"],["inaugures","inaugurates"],["inavlid","invalid"],["inbalance","imbalance"],["inbalanced","imbalanced"],["inbed","embed"],["inbedded","embedded"],["inbility","inability"],["incalid","invalid"],["incarcirated","incarcerated"],["incase","in case"],["incatation","incantation"],["incatations","incantations"],["incative","inactive"],["incement","increment"],["incemental","incremental"],["incementally","incrementally"],["incemented","incremented"],["incements","increments"],["incerase","increase"],["incerased","increased"],["incerasing","increasing"],["incidential","incidental"],["incidentially","incidentally"],["incidently","incidentally"],["inclding","including"],["incldue","include"],["incldued","included"],["incldues","includes"],["inclinaison","inclination"],["inclode","include"],["inclreased","increased"],["includ","include"],["includea","include"],["includee","include"],["includeing","including"],["includied","included"],["includig","including"],["includign","including"],["includng","including"],["inclue","include"],["inclued","included"],["inclues","includes"],["incluging","including"],["incluide","include"],["incluing","including"],["inclused","included"],["inclusing","including"],["inclusinve","inclusive"],["inclution","inclusion"],["inclutions","inclusions"],["incmrement","increment"],["incoherance","incoherence"],["incoherancy","incoherency"],["incoherant","incoherent"],["incoherantly","incoherently"],["incomapatibility","incompatibility"],["incomapatible","incompatible"],["incomaptibele","incompatible"],["incomaptibelities","incompatibilities"],["incomaptibelity","incompatibility"],["incomaptible","incompatible"],["incombatibilities","incompatibilities"],["incombatibility","incompatibility"],["incomfortable","uncomfortable"],["incomming","incoming"],["incommplete","incomplete"],["incompatabable","incompatible"],["incompatabiity","incompatibility"],["incompatabile","incompatible"],["incompatabilities","incompatibilities"],["incompatability","incompatibility"],["incompatabillity","incompatibility"],["incompatabilty","incompatibility"],["incompatabily","incompatibility"],["incompatable","incompatible"],["incompatablility","incompatibility"],["incompatablities","incompatibilities"],["incompatablitiy","incompatibility"],["incompatablity","incompatibility"],["incompatably","incompatibly"],["incompataibility","incompatibility"],["incompataible","incompatible"],["incompataility","incompatibility"],["incompatatbility","incompatibility"],["incompatatble","incompatible"],["incompatatible","incompatible"],["incompatbility","incompatibility"],["incompatble","incompatible"],["incompatiability","incompatibility"],["incompatiable","incompatible"],["incompatibile","incompatible"],["incompatibilies","incompatibilities"],["incompatiblities","incompatibilities"],["incompatiblity","incompatibility"],["incompetance","incompetence"],["incompetant","incompetent"],["incompete","incomplete"],["incomping","incoming"],["incompleate","incomplete"],["incompleete","incomplete"],["incompletd","incomplete"],["incomptable","incompatible"],["incomptetent","incompetent"],["incomptible","incompatible"],["inconcistencies","inconsistencies"],["inconcistency","inconsistency"],["inconcistent","inconsistent"],["inconditional","unconditional"],["inconditionally","unconditionally"],["inconfortable","uncomfortable"],["inconisistent","inconsistent"],["inconistencies","inconsistencies"],["inconlusive","inconclusive"],["inconsisent","inconsistent"],["inconsisently","inconsistently"],["inconsisntency","inconsistency"],["inconsistance","inconsistency"],["inconsistancies","inconsistencies"],["inconsistancy","inconsistency"],["inconsistant","inconsistent"],["inconsisten","inconsistent"],["inconsistend","inconsistent"],["inconsistendly","inconsistently"],["inconsistendt","inconsistent"],["inconsistendtly","inconsistently"],["inconsistenly","inconsistently"],["inconsistented","inconsistent"],["inconsitant","inconsistent"],["inconsitency","inconsistency"],["inconsitent","inconsistent"],["inconveniant","inconvenient"],["inconveniantly","inconveniently"],["inconvertable","inconvertible"],["inconvienience","inconvenience"],["inconvienient","inconvenient"],["inconvineance","inconvenience"],["inconvineances","inconveniences"],["inconvinence","inconvenience"],["inconvinences","inconveniences"],["inconviniance","inconvenience"],["inconviniances","inconveniences"],["inconvinience","inconvenience"],["inconviniences","inconveniences"],["inconviniency","inconvenience"],["inconviniencys","inconveniences"],["incooperates","incorporates"],["incoperate","incorporate"],["incoperated","incorporated"],["incoperates","incorporates"],["incoperating","incorporating"],["incoporate","incorporate"],["incoporated","incorporated"],["incoporates","incorporates"],["incoporating","incorporating"],["incoprorate","incorporate"],["incoprorated","incorporated"],["incoprorates","incorporates"],["incoprorating","incorporating"],["incorect","incorrect"],["incorectly","incorrectly"],["incoropate","incorporate"],["incoropates","incorporates"],["incoroporated","incorporated"],["incorparates","incorporates"],["incorperate","incorporate"],["incorperated","incorporated"],["incorperates","incorporates"],["incorperating","incorporating"],["incorperation","incorporation"],["incorportaed","incorporated"],["incorported","incorporated"],["incorprates","incorporates"],["incorreclty","incorrectly"],["incorrecly","incorrectly"],["incorrecty","incorrectly"],["incorreect","incorrect"],["incorreectly","incorrectly"],["incorrent","incorrect"],["incorret","incorrect"],["incorrrect","incorrect"],["incorrrectly","incorrectly"],["incorruptable","incorruptible"],["incosistencies","inconsistencies"],["incosistency","inconsistency"],["incosistent","inconsistent"],["incosistente","inconsistent"],["incramentally","incrementally"],["increadible","incredible"],["increading","increasing"],["increaing","increasing"],["increament","increment"],["increas","increase"],["incredable","incredible"],["incremantal","incremental"],["incremeantal","incremental"],["incremenet","increment"],["incremenetd","incremented"],["incremeneted","incremented"],["incrementaly","incrementally"],["incremet","increment"],["incremetal","incremental"],["incremeted","incremented"],["incremnet","increment"],["increse","increase"],["incresed","increased"],["increses","increases"],["incresing","increasing"],["incrfemental","incremental"],["incrmenet","increment"],["incrmenetd","incremented"],["incrmeneted","incremented"],["incrment","increment"],["incrmental","incremental"],["incrmentally","incrementally"],["incrmented","incremented"],["incrmenting","incrementing"],["incrments","increments"],["inctance","instance"],["inctroduce","introduce"],["inctroduced","introduced"],["incude","include"],["incuded","included"],["incudes","includes"],["incuding","including"],["inculde","include"],["inculded","included"],["inculdes","includes"],["inculding","including"],["incunabla","incunabula"],["incure","incur"],["incurruptable","incorruptible"],["incurruptible","incorruptible"],["incvalid","invalid"],["indcates","indicates"],["indciate","indicate"],["inddex","index"],["inddividual","individual"],["inddividually","individually"],["inddividuals","individuals"],["indecate","indicate"],["indeces","indices"],["indecies","indices"],["indefinate","indefinite"],["indefinately","indefinitely"],["indefineable","undefinable"],["indefinetly","indefinitely"],["indefinitiley","indefinitely"],["indefinitively","indefinitely"],["indefinitly","indefinitely"],["indefintly","indefinitely"],["indempotent","idempotent"],["indendation","indentation"],["indentaction","indentation"],["indentaion","indentation"],["indentended","indented"],["indentical","identical"],["indentically","identically"],["indentifer","identifier"],["indentification","identification"],["indentified","identified"],["indentifier","identifier"],["indentifies","identifies"],["indentifing","identifying"],["indentify","identify"],["indentifying","identifying"],["indentit","identity"],["indentity","identity"],["indentleveal","indentlevel"],["indenx","index"],["indepandance","independence"],["indepdence","independence"],["indepdencente","independence"],["indepdendance","independence"],["indepdendant","independent"],["indepdendantly","independently"],["indepdendence","independence"],["indepdendency","independency"],["indepdendent","independent"],["indepdendently","independently"],["indepdendet","independent"],["indepdendetly","independently"],["indepdenence","independence"],["indepdenent","independent"],["indepdenently","independently"],["indepdent","independent"],["indepdented","independent"],["indepdentedly","independently"],["indepdently","independently"],["indepedantly","independently"],["indepedence","independence"],["indepedent","independent"],["indepedently","independently"],["independ","independent"],["independance","independence"],["independant","independent"],["independantly","independently"],["independece","independence"],["independed","independent"],["independedly","independently"],["independend","independent"],["independendet","independent"],["independet","independent"],["independly","independently"],["independnent","independent"],["independnet","independent"],["independnt","independent"],["independntly","independently"],["independt","independent"],["independtly","independently"],["indepenedent","independent"],["indepenendence","independence"],["indepenent","independent"],["indepenently","independently"],["indepent","independent"],["indepentent","independent"],["indepently","independently"],["inderect","indirect"],["inderts","inserts"],["indes","index"],["indespensable","indispensable"],["indespensible","indispensable"],["indexig","indexing"],["indiactor","indicator"],["indiate","indicate"],["indiated","indicated"],["indiates","indicates"],["indiating","indicating"],["indicaite","indicate"],["indicat","indicate"],["indicees","indices"],["indiciate","indicate"],["indiciated","indicated"],["indiciates","indicates"],["indiciating","indicating"],["indicies","indices"],["indicte","indicate"],["indictement","indictment"],["indictes","indicates"],["indictor","indicator"],["indigineous","indigenous"],["indipendence","independence"],["indipendent","independent"],["indipendently","independently"],["indiquate","indicate"],["indiquates","indicates"],["indirecty","indirectly"],["indispensible","indispensable"],["indisputible","indisputable"],["indisputibly","indisputably"],["indistiguishable","indistinguishable"],["indivdual","individual"],["indivdually","individually"],["indivdualy","individually"],["individal","individual"],["individally","individually"],["individals","individuals"],["individaul","individual"],["individaully","individually"],["individauls","individuals"],["individauly","individually"],["individial","individual"],["individualy","individually"],["individuel","individual"],["individuelly","individually"],["individuely","individually"],["indivisual","individual"],["indivisuality","individuality"],["indivisually","individually"],["indivisuals","individuals"],["indiviual","individual"],["indiviually","individually"],["indiviuals","individuals"],["indivual","individual"],["indivudual","individual"],["indivudually","individually"],["indizies","indices"],["indpendent","independent"],["indpendently","independently"],["indrect","indirect"],["indulgue","indulge"],["indure","endure"],["indutrial","industrial"],["indvidual","individual"],["indviduals","individuals"],["indxes","indexes"],["inearisation","linearisation"],["ineffciency","inefficiency"],["ineffcient","inefficient"],["ineffciently","inefficiently"],["inefficency","inefficiency"],["inefficent","inefficient"],["inefficently","inefficiently"],["inefficenty","inefficiently"],["inefficienty","inefficiently"],["ineffiecent","inefficient"],["ineffient","inefficient"],["ineffiently","inefficiently"],["ineficient","inefficient"],["inegrate","integrate"],["inegrated","integrated"],["ineqality","inequality"],["inequalitiy","inequality"],["inerface","interface"],["inerit","inherit"],["ineritance","inheritance"],["inerited","inherited"],["ineriting","inheriting"],["ineritor","inheritor"],["ineritors","inheritors"],["inerits","inherits"],["inernal","internal"],["inerrupt","interrupt"],["inershia","inertia"],["inershial","inertial"],["inersia","inertia"],["inersial","inertial"],["inertion","insertion"],["ines","lines"],["inestart","linestart"],["inetrrupts","interrupts"],["inevatible","inevitable"],["inevitible","inevitable"],["inevititably","inevitably"],["inexistant","inexistent"],["inexperiance","inexperience"],["inexperianced","inexperienced"],["inexpierence","inexperience"],["inexpierenced","inexperienced"],["inexpirience","inexperience"],["inexpirienced","inexperienced"],["infact","in fact"],["infalability","infallibility"],["infallable","infallible"],["infalte","inflate"],["infalted","inflated"],["infaltes","inflates"],["infalting","inflating"],["infectuous","infectious"],["infered","inferred"],["inferface","interface"],["infering","inferring"],["inferrable","inferable"],["inferrence","inference"],["infex","index"],["infilitrate","infiltrate"],["infilitrated","infiltrated"],["infilitration","infiltration"],["infinate","infinite"],["infinately","infinitely"],["infininte","infinite"],["infinit","infinite"],["infinitie","infinity"],["infinitly","infinitely"],["infinte","infinite"],["infintesimal","infinitesimal"],["infinty","infinity"],["infite","infinite"],["inflamation","inflammation"],["inflatoin","inflation"],["inflexable","inflexible"],["inflight","in-flight"],["influece","influence"],["influeced","influenced"],["influeces","influences"],["influecing","influencing"],["influencial","influential"],["influencin","influencing"],["influented","influenced"],["infoemation","information"],["infomation","information"],["infomational","informational"],["infomed","informed"],["infomer","informer"],["infomration","information"],["infoms","informs"],["infor","info"],["inforamtion","information"],["inforation","information"],["inforational","informational"],["inforce","enforce"],["inforced","enforced"],["informacion","information"],["informaion","information"],["informaiton","information"],["informatation","information"],["informatations","information"],["informatikon","information"],["informatins","information"],["informatio","information"],["informatiom","information"],["informations","information"],["informatoin","information"],["informatoins","information"],["informaton","information"],["informfation","information"],["informtion","information"],["inforrmation","information"],["infrantryman","infantryman"],["infrasctructure","infrastructure"],["infrastrcuture","infrastructure"],["infrastruture","infrastructure"],["infrastucture","infrastructure"],["infrastuctures","infrastructures"],["infreqency","infrequency"],["infreqentcy","infrequency"],["infreqeuncy","infrequency"],["infreqeuntcy","infrequency"],["infrequancies","infrequencies"],["infrequancy","infrequency"],["infrequantcies","infrequencies"],["infrequantcy","infrequency"],["infrequentcies","infrequencies"],["infrigement","infringement"],["infromation","information"],["infromatoin","information"],["infrormation","information"],["infrustructure","infrastructure"],["ingegral","integral"],["ingenius","ingenious"],["ingnore","ignore"],["ingnored","ignored"],["ingnores","ignores"],["ingnoring","ignoring"],["ingore","ignore"],["ingored","ignored"],["ingores","ignores"],["ingoring","ignoring"],["ingration","integration"],["ingreediants","ingredients"],["inh","in"],["inhabitans","inhabitants"],["inherantly","inherently"],["inheratance","inheritance"],["inheret","inherit"],["inherets","inherits"],["inheritablility","inheritability"],["inheritence","inheritance"],["inherith","inherit"],["inherithed","inherited"],["inherithing","inheriting"],["inheriths","inherits"],["inheritted","inherited"],["inherrit","inherit"],["inherritance","inheritance"],["inherrited","inherited"],["inherriting","inheriting"],["inherrits","inherits"],["inhert","inherit"],["inhertance","inheritance"],["inhertances","inheritances"],["inherted","inherited"],["inhertiance","inheritance"],["inherting","inheriting"],["inherts","inherits"],["inhomogenous","inhomogeneous"],["inialized","initialized"],["iniate","initiate"],["inidicate","indicate"],["inidicated","indicated"],["inidicates","indicates"],["inidicating","indicating"],["inidication","indication"],["inidications","indications"],["inidividual","individual"],["inidvidual","individual"],["inifinite","infinite"],["inifinity","infinity"],["inifinte","infinite"],["inifite","infinite"],["iniitial","initial"],["iniitialization","initialization"],["iniitializations","initializations"],["iniitialize","initialize"],["iniitialized","initialized"],["iniitializes","initializes"],["iniitializing","initializing"],["inintialisation","initialisation"],["inintialization","initialization"],["inisialise","initialise"],["inisialised","initialised"],["inisialises","initialises"],["iniside","inside"],["inisides","insides"],["initail","initial"],["initailisation","initialisation"],["initailise","initialise"],["initailised","initialised"],["initailiser","initialiser"],["initailisers","initialisers"],["initailises","initialises"],["initailising","initialising"],["initailization","initialization"],["initailize","initialize"],["initailized","initialized"],["initailizer","initializer"],["initailizers","initializers"],["initailizes","initializes"],["initailizing","initializing"],["initailly","initially"],["initails","initials"],["initailsation","initialisation"],["initailse","initialise"],["initailsed","initialised"],["initailsiation","initialisation"],["initaily","initially"],["initailzation","initialization"],["initailze","initialize"],["initailzed","initialized"],["initailziation","initialization"],["inital","initial"],["initalialisation","initialisation"],["initalialization","initialization"],["initalisation","initialisation"],["initalise","initialise"],["initalised","initialised"],["initaliser","initialiser"],["initalises","initialises"],["initalising","initialising"],["initalization","initialization"],["initalize","initialize"],["initalized","initialized"],["initalizer","initializer"],["initalizes","initializes"],["initalizing","initializing"],["initally","initially"],["initals","initials"],["initiailize","initialize"],["initiailized","initialized"],["initiailizes","initializes"],["initiailizing","initializing"],["initiaitive","initiative"],["initiaitives","initiatives"],["initialialise","initialise"],["initialialize","initialize"],["initialiasation","initialisation"],["initialiase","initialise"],["initialiased","initialised"],["initialiation","initialization"],["initialiazation","initialization"],["initialiaze","initialize"],["initialiazed","initialized"],["initialied","initialized"],["initialilsing","initialising"],["initialilzing","initializing"],["initialisaing","initialising"],["initialisaiton","initialisation"],["initialisated","initialised"],["initialisatin","initialisation"],["initialisationg","initialisation"],["initialisaton","initialisation"],["initialisatons","initialisations"],["initialiseing","initialising"],["initialisiation","initialisation"],["initialisong","initialising"],["initialiting","initializing"],["initialitse","initialise"],["initialitsing","initialising"],["initialitze","initialize"],["initialitzing","initializing"],["initializa","initialize"],["initializad","initialized"],["initializaed","initialized"],["initializaing","initializing"],["initializaiton","initialization"],["initializate","initialize"],["initializated","initialized"],["initializates","initializes"],["initializatin","initialization"],["initializating","initializing"],["initializationg","initialization"],["initializaton","initialization"],["initializatons","initializations"],["initializedd","initialized"],["initializeing","initializing"],["initializiation","initialization"],["initializong","initializing"],["initialsation","initialisation"],["initialse","initialise"],["initialsed","initialised"],["initialses","initialises"],["initialsing","initialising"],["initialy","initially"],["initialyl","initially"],["initialyse","initialise"],["initialysed","initialised"],["initialyses","initialises"],["initialysing","initialising"],["initialyze","initialize"],["initialyzed","initialized"],["initialyzes","initializes"],["initialyzing","initializing"],["initialzation","initialization"],["initialze","initialize"],["initialzed","initialized"],["initialzes","initializes"],["initialzing","initializing"],["initiatiate","initiate"],["initiatiated","initiated"],["initiatiater","initiator"],["initiatiating","initiating"],["initiatiator","initiator"],["initiatiats","initiates"],["initiatie","initiate"],["initiatied","initiated"],["initiaties","initiates"],["initiialise","initialise"],["initiialize","initialize"],["initilialised","initialised"],["initilialization","initialization"],["initilializations","initializations"],["initilialize","initialize"],["initilialized","initialized"],["initilializes","initializes"],["initilializing","initializing"],["initiliase","initialise"],["initiliased","initialised"],["initiliases","initialises"],["initiliasing","initialising"],["initiliaze","initialize"],["initiliazed","initialized"],["initiliazes","initializes"],["initiliazing","initializing"],["initilisation","initialisation"],["initilisations","initialisations"],["initilise","initialise"],["initilised","initialised"],["initilises","initialises"],["initilising","initialising"],["initilization","initialization"],["initilizations","initializations"],["initilize","initialize"],["initilized","initialized"],["initilizes","initializes"],["initilizing","initializing"],["inititalisation","initialisation"],["inititalisations","initialisations"],["inititalise","initialise"],["inititalised","initialised"],["inititaliser","initialiser"],["inititalising","initialising"],["inititalization","initialization"],["inititalizations","initializations"],["inititalize","initialize"],["inititate","initiate"],["inititator","initiator"],["inititialization","initialization"],["inititializations","initializations"],["initliasation","initialisation"],["initliase","initialise"],["initliased","initialised"],["initliaser","initialiser"],["initliazation","initialization"],["initliaze","initialize"],["initliazed","initialized"],["initliazer","initializer"],["inituialisation","initialisation"],["inituialization","initialization"],["inivisible","invisible"],["inizialize","initialize"],["inizialized","initialized"],["inizializes","initializes"],["inlalid","invalid"],["inlclude","include"],["inlcluded","included"],["inlcludes","includes"],["inlcluding","including"],["inlcludion","inclusion"],["inlclusive","inclusive"],["inlcude","include"],["inlcuded","included"],["inlcudes","includes"],["inlcuding","including"],["inlcusion","inclusion"],["inlcusive","inclusive"],["inlin","inline"],["inlude","include"],["inluded","included"],["inludes","includes"],["inluding","including"],["inludung","including"],["inluence","influence"],["inlusive","inclusive"],["inmediate","immediate"],["inmediatelly","immediately"],["inmediately","immediately"],["inmediatily","immediately"],["inmediatly","immediately"],["inmense","immense"],["inmigrant","immigrant"],["inmigrants","immigrants"],["inmmediately","immediately"],["inmplementation","implementation"],["innactive","inactive"],["innacurate","inaccurate"],["innacurately","inaccurately"],["innappropriate","inappropriate"],["innecesarily","unnecessarily"],["innecesary","unnecessary"],["innecessarily","unnecessarily"],["innecessary","unnecessary"],["inneffectual","ineffectual"],["innocous","innocuous"],["innoculate","inoculate"],["innoculated","inoculated"],["innosense","innocence"],["inocence","innocence"],["inofficial","unofficial"],["inofrmation","information"],["inoperant","inoperative"],["inoquous","innocuous"],["inot","into"],["inouts","inputs"],["inpact","impact"],["inpacted","impacted"],["inpacting","impacting"],["inpacts","impacts"],["inpeach","impeach"],["inpecting","inspecting"],["inpection","inspection"],["inpections","inspections"],["inpending","impending"],["inpenetrable","impenetrable"],["inplementation","implementation"],["inplementations","implementations"],["inplemented","implemented"],["inplicit","implicit"],["inplicitly","implicitly"],["inpolite","impolite"],["inport","import"],["inportant","important"],["inposible","impossible"],["inpossible","impossible"],["inpout","input"],["inpouts","inputs"],["inpractical","impractical"],["inpracticality","impracticality"],["inpractically","impractically"],["inprisonment","imprisonment"],["inproove","improve"],["inprooved","improved"],["inprooves","improves"],["inprooving","improving"],["inproovment","improvement"],["inproovments","improvements"],["inproper","improper"],["inproperly","improperly"],["inproving","improving"],["inpsection","inspection"],["inpterpreter","interpreter"],["inpu","input"],["inputed","inputted"],["inputsream","inputstream"],["inpuut","input"],["inrement","increment"],["inrements","increments"],["inreractive","interactive"],["inrerface","interface"],["inresponsive","unresponsive"],["inro","into"],["ins't","isn't"],["insallation","installation"],["insalled","installed"],["inscpeting","inspecting"],["insctuction","instruction"],["insctuctional","instructional"],["insctuctions","instructions"],["insde","inside"],["insead","instead"],["insectiverous","insectivorous"],["insensative","insensitive"],["insensetive","insensitive"],["insensistive","insensitive"],["insensistively","insensitively"],["insensitiv","insensitive"],["insensitivy","insensitivity"],["insensitve","insensitive"],["insenstive","insensitive"],["insenstively","insensitively"],["insentives","incentives"],["insentivite","insensitive"],["insepect","inspect"],["insepected","inspected"],["insepection","inspection"],["insepects","inspects"],["insependent","independent"],["inseperable","inseparable"],["insepsion","inception"],["inser","insert"],["insering","inserting"],["insersect","intersect"],["insersected","intersected"],["insersecting","intersecting"],["insersects","intersects"],["inserst","insert"],["insersted","inserted"],["inserster","inserter"],["insersting","inserting"],["inserstor","inserter"],["insersts","inserts"],["insertin","inserting"],["insertino","inserting"],["insesitive","insensitive"],["insesitively","insensitively"],["insesitiveness","insensitiveness"],["insesitivity","insensitivity"],["insetad","instead"],["insetead","instead"],["inseted","inserted"],["insid","inside"],["insidde","inside"],["insiddes","insides"],["insided","inside"],["insignificat","insignificant"],["insignificatly","insignificantly"],["insigt","insight"],["insigth","insight"],["insigths","insights"],["insigts","insights"],["insistance","insistence"],["insititute","institute"],["insitution","institution"],["insitutions","institutions"],["insonsistency","inconsistency"],["instaance","instance"],["instabce","instance"],["instace","instance"],["instaces","instances"],["instaciate","instantiate"],["instad","instead"],["instade","instead"],["instaead","instead"],["instaed","instead"],["instal","install"],["instalation","installation"],["instalations","installations"],["instaled","installed"],["instaler","installer"],["instaling","installing"],["installaion","installation"],["installaiton","installation"],["installaitons","installations"],["installataion","installation"],["installataions","installations"],["installatation","installation"],["installationa","installation"],["installes","installs"],["installtion","installation"],["instals","installs"],["instancd","instance"],["instanciate","instantiate"],["instanciated","instantiated"],["instanciates","instantiates"],["instanciating","instantiating"],["instanciation","instantiation"],["instanciations","instantiations"],["instane","instance"],["instanes","instances"],["instanseation","instantiation"],["instansiate","instantiate"],["instansiated","instantiated"],["instansiates","instantiates"],["instansiation","instantiation"],["instantate","instantiate"],["instantating","instantiating"],["instantation","instantiation"],["instantations","instantiations"],["instantiaties","instantiates"],["instanze","instance"],["instatance","instance"],["instatiate","instantiate"],["instatiation","instantiation"],["instatiations","instantiations"],["insteance","instance"],["insted","instead"],["insteead","instead"],["inster","insert"],["insterad","instead"],["insterrupts","interrupts"],["instersction","intersection"],["instersctions","intersections"],["instersectioned","intersection"],["instert","insert"],["insterted","inserted"],["instertion","insertion"],["institue","institute"],["instlal","install"],["instlalation","installation"],["instlalations","installations"],["instlaled","installed"],["instlaler","installer"],["instlaling","installing"],["instlals","installs"],["instller","installer"],["instnace","instance"],["instnaces","instances"],["instnance","instance"],["instnances","instances"],["instnat","instant"],["instnatiated","instantiated"],["instnatiation","instantiation"],["instnatiations","instantiations"],["instnce","instance"],["instnces","instances"],["instnsiated","instantiated"],["instnsiation","instantiation"],["instnsiations","instantiations"],["instnt","instant"],["instntly","instantly"],["instrace","instance"],["instralled","installed"],["instrction","instruction"],["instrctional","instructional"],["instrctions","instructions"],["instrcut","instruct"],["instrcutino","instruction"],["instrcutinoal","instructional"],["instrcutinos","instructions"],["instrcution","instruction"],["instrcutional","instructional"],["instrcutions","instructions"],["instrcuts","instructs"],["instread","instead"],["instrinsic","intrinsic"],["instruccion","instruction"],["instruccional","instructional"],["instruccions","instructions"],["instrucion","instruction"],["instrucional","instructional"],["instrucions","instructions"],["instruciton","instruction"],["instrucitonal","instructional"],["instrucitons","instructions"],["instrumenet","instrument"],["instrumenetation","instrumentation"],["instrumenetd","instrumented"],["instrumeneted","instrumented"],["instrumentaion","instrumentation"],["instrumnet","instrument"],["instrumnets","instruments"],["instsall","install"],["instsallation","installation"],["instsallations","installations"],["instsalled","installed"],["instsalls","installs"],["instuction","instruction"],["instuctional","instructional"],["instuctions","instructions"],["instuments","instruments"],["insturment","instrument"],["insturments","instruments"],["instutionalized","institutionalized"],["instutions","intuitions"],["insuffciency","insufficiency"],["insuffcient","insufficient"],["insuffciently","insufficiently"],["insufficency","insufficiency"],["insufficent","insufficient"],["insufficently","insufficiently"],["insuffiency","insufficiency"],["insuffient","insufficient"],["insuffiently","insufficiently"],["insurasnce","insurance"],["insurence","insurance"],["intaces","instance"],["intack","intact"],["intall","install"],["intallation","installation"],["intallationpath","installationpath"],["intallations","installations"],["intalled","installed"],["intalleing","installing"],["intaller","installer"],["intalles","installs"],["intalling","installing"],["intalls","installs"],["intances","instances"],["intantiate","instantiate"],["intantiating","instantiating"],["inteaction","interaction"],["intead","instead"],["inteded","intended"],["intedned","intended"],["inteface","interface"],["intefere","interfere"],["intefered","interfered"],["inteference","interference"],["integarte","integrate"],["integarted","integrated"],["integartes","integrates"],["integated","integrated"],["integates","integrates"],["integating","integrating"],["integation","integration"],["integations","integrations"],["integeral","integral"],["integere","integer"],["integreated","integrated"],["integrety","integrity"],["integrey","integrity"],["intelectual","intellectual"],["intelegence","intelligence"],["intelegent","intelligent"],["intelegently","intelligently"],["inteligability","intelligibility"],["inteligable","intelligible"],["inteligance","intelligence"],["inteligantly","intelligently"],["inteligence","intelligence"],["inteligent","intelligent"],["intelisense","intellisense"],["intelligable","intelligible"],["intemediary","intermediary"],["intenal","internal"],["intenational","international"],["intendet","intended"],["inteneded","intended"],["intenisty","intensity"],["intension","intention"],["intensional","intentional"],["intensionally","intentionally"],["intensionaly","intentionally"],["intentation","indentation"],["intentended","intended"],["intentially","intentionally"],["intentialy","intentionally"],["intentionaly","intentionally"],["intentionly","intentionally"],["intepolate","interpolate"],["intepolated","interpolated"],["intepolates","interpolates"],["intepret","interpret"],["intepretable","interpretable"],["intepretation","interpretation"],["intepretations","interpretations"],["intepretator","interpreter"],["intepretators","interpreters"],["intepreted","interpreted"],["intepreter","interpreter"],["intepreter-based","interpreter-based"],["intepreters","interpreters"],["intepretes","interprets"],["intepreting","interpreting"],["intepretor","interpreter"],["intepretors","interpreters"],["inteprets","interprets"],["inter-operability","interoperability"],["interace","interface"],["interaces","interfaces"],["interacive","interactive"],["interacively","interactively"],["interacsion","interaction"],["interacsions","interactions"],["interactionn","interaction"],["interactionns","interactions"],["interactiv","interactive"],["interactivly","interactively"],["interactuable","interactive"],["interafce","interface"],["interakt","interact"],["interaktion","interaction"],["interaktions","interactions"],["interaktive","interactively"],["interaktively","interactively"],["interaktivly","interactively"],["interaly","internally"],["interanl","internal"],["interanlly","internally"],["interate","iterate"],["interational","international"],["interative","interactive"],["interatively","interactively"],["interator","iterator"],["interators","iterators"],["interaxction","interaction"],["interaxctions","interactions"],["interaxtion","interaction"],["interaxtions","interactions"],["intercahnge","interchange"],["intercahnged","interchanged"],["intercation","interaction"],["interchage","interchange"],["interchangable","interchangeable"],["interchangably","interchangeably"],["interchangeble","interchangeable"],["intercollegate","intercollegiate"],["intercontinential","intercontinental"],["intercontinetal","intercontinental"],["interdependant","interdependent"],["interecptor","interceptor"],["intereested","interested"],["intereference","interference"],["intereferences","interferences"],["interelated","interrelated"],["interelaved","interleaved"],["interepolate","interpolate"],["interepolated","interpolated"],["interepolates","interpolates"],["interepolating","interpolating"],["interepolation","interpolation"],["interepret","interpret"],["interepretation","interpretation"],["interepretations","interpretations"],["interepreted","interpreted"],["interepreting","interpreting"],["intereprets","interprets"],["interept","intercept"],["interesct","intersect"],["interescted","intersected"],["interescting","intersecting"],["interesction","intersection"],["interesctions","intersections"],["interescts","intersects"],["interesect","intersect"],["interesected","intersected"],["interesecting","intersecting"],["interesection","intersection"],["interesections","intersections"],["interesects","intersects"],["intereset","interest"],["intereseted","interested"],["intereseting","interesting"],["interesing","interesting"],["interespersed","interspersed"],["interesseted","interested"],["interesst","interest"],["interessted","interested"],["interessting","interesting"],["intereview","interview"],["interfal","interval"],["interfals","intervals"],["interfave","interface"],["interfaves","interfaces"],["interfcae","interface"],["interfcaes","interfaces"],["interfear","interfere"],["interfearence","interference"],["interfearnce","interference"],["interfer","interfere"],["interferance","interference"],["interferd","interfered"],["interfereing","interfering"],["interfernce","interference"],["interferred","interfered"],["interferring","interfering"],["interfers","interferes"],["intergated","integrated"],["interger's","integer's"],["interger","integer"],["intergerated","integrated"],["intergers","integers"],["intergrate","integrate"],["intergrated","integrated"],["intergrates","integrates"],["intergrating","integrating"],["intergration","integration"],["intergrations","integrations"],["interit","inherit"],["interitance","inheritance"],["interited","inherited"],["interiting","inheriting"],["interits","inherits"],["interliveing","interleaving"],["interlly","internally"],["intermediat","intermediate"],["intermeidate","intermediate"],["intermidiate","intermediate"],["intermitent","intermittent"],["intermittant","intermittent"],["intermperance","intemperance"],["internaly","internally"],["internatinal","international"],["internatioanl","international"],["internation","international"],["internel","internal"],["internels","internals"],["internface","interface"],["interogators","interrogators"],["interopeable","interoperable"],["interoprability","interoperability"],["interperated","interpreted"],["interpert","interpret"],["interpertation","interpretation"],["interpertations","interpretations"],["interperted","interpreted"],["interperter","interpreter"],["interperters","interpreters"],["interperting","interpreting"],["interpertive","interpretive"],["interperts","interprets"],["interpet","interpret"],["interpetation","interpretation"],["interpeted","interpreted"],["interpeter","interpreter"],["interpeters","interpreters"],["interpeting","interpreting"],["interpets","interprets"],["interploate","interpolate"],["interploated","interpolated"],["interploates","interpolates"],["interploatin","interpolating"],["interploation","interpolation"],["interpolaed","interpolated"],["interpolaion","interpolation"],["interpolaiton","interpolation"],["interpolar","interpolator"],["interpolayed","interpolated"],["interporation","interpolation"],["interporations","interpolations"],["interprate","interpret"],["interprated","interpreted"],["interpreation","interpretation"],["interprerter","interpreter"],["interpretated","interpreted"],["interprete","interpret"],["interpretes","interprets"],["interpretet","interpreted"],["interpretion","interpretation"],["interpretions","interpretations"],["interpretor","interpreter"],["interprett","interpret"],["interpretted","interpreted"],["interpretter","interpreter"],["interpretting","interpreting"],["interract","interact"],["interracting","interacting"],["interractive","interactive"],["interracts","interacts"],["interrest","interest"],["interrested","interested"],["interresting","interesting"],["interrface","interface"],["interrim","interim"],["interript","interrupt"],["interrput","interrupt"],["interrputed","interrupted"],["interrrupt","interrupt"],["interrrupted","interrupted"],["interrrupting","interrupting"],["interrrupts","interrupts"],["interrtups","interrupts"],["interrugum","interregnum"],["interrum","interim"],["interrup","interrupt"],["interruped","interrupted"],["interruping","interrupting"],["interrups","interrupts"],["interruptable","interruptible"],["interruptors","interrupters"],["interruptted","interrupted"],["interrut","interrupt"],["interrutps","interrupts"],["interscetion","intersection"],["intersecct","intersect"],["interseccted","intersected"],["interseccting","intersecting"],["intersecction","intersection"],["interseccts","intersects"],["intersecrion","intersection"],["intersecton","intersection"],["intersectons","intersections"],["intersparsed","interspersed"],["interst","interest"],["intersted","interested"],["intersting","interesting"],["intersts","interests"],["intertaining","entertaining"],["intertia","inertia"],["intertial","inertial"],["interupt","interrupt"],["interupted","interrupted"],["interupting","interrupting"],["interupts","interrupts"],["interuupt","interrupt"],["intervall","interval"],["intervalls","intervals"],["interveening","intervening"],["intervines","intervenes"],["intesity","intensity"],["inteval","interval"],["intevals","intervals"],["intevene","intervene"],["intger","integer"],["intgers","integers"],["intgral","integral"],["inthe","in the"],["intiailise","initialise"],["intiailised","initialised"],["intiailiseing","initialising"],["intiailiser","initialiser"],["intiailises","initialises"],["intiailising","initialising"],["intiailize","initialize"],["intiailized","initialized"],["intiailizeing","initializing"],["intiailizer","initializer"],["intiailizes","initializes"],["intiailizing","initializing"],["intial","initial"],["intiale","initial"],["intialisation","initialisation"],["intialise","initialise"],["intialised","initialised"],["intialiser","initialiser"],["intialisers","initialisers"],["intialises","initialises"],["intialising","initialising"],["intialistion","initialisation"],["intializating","initializing"],["intialization","initialization"],["intializaze","initialize"],["intialize","initialize"],["intialized","initialized"],["intializer","initializer"],["intializers","initializers"],["intializes","initializes"],["intializing","initializing"],["intializtion","initialization"],["intialled","initialled"],["intiallisation","initialisation"],["intiallisations","initialisations"],["intiallised","initialised"],["intiallization","initialization"],["intiallizations","initializations"],["intiallized","initialized"],["intiallly","initially"],["intially","initially"],["intials","initials"],["intialse","initialise"],["intialsed","initialised"],["intialsing","initialising"],["intialte","initialise"],["intialy","initially"],["intialze","initialize"],["intialzed","initialized"],["intialzing","initializing"],["inticement","enticement"],["intiger","integer"],["intiial","initial"],["intiialise","initialise"],["intiialize","initialize"],["intilising","initialising"],["intilizing","initializing"],["intimite","intimate"],["intinite","infinite"],["intitial","initial"],["intitialization","initialization"],["intitialize","initialize"],["intitialized","initialized"],["intitials","initials"],["intity","entity"],["intot","into"],["intoto","into"],["intpreter","interpreter"],["intput","input"],["intputs","inputs"],["intraversion","introversion"],["intravert","introvert"],["intraverts","introverts"],["intrduced","introduced"],["intreeg","intrigue"],["intreeged","intrigued"],["intreeging","intriguing"],["intreegued","intrigued"],["intreeguing","intriguing"],["intreface","interface"],["intregral","integral"],["intrerrupt","interrupt"],["intresst","interest"],["intressted","interested"],["intressting","interesting"],["intrested","interested"],["intresting","interesting"],["intriduce","introduce"],["intriduced","introduced"],["intriduction","introduction"],["intrisinc","intrinsic"],["intrisincs","intrinsics"],["introducted","introduced"],["introductionary","introductory"],["introdued","introduced"],["introduse","introduce"],["introdused","introduced"],["introduses","introduces"],["introdusing","introducing"],["introsepectable","introspectable"],["introsepection","introspection"],["intrrupt","interrupt"],["intrrupted","interrupted"],["intrrupting","interrupting"],["intrrupts","interrupts"],["intruction","instruction"],["intructional","instructional"],["intructions","instructions"],["intruduced","introduced"],["intruducing","introducing"],["intrument","instrument"],["intrumental","instrumental"],["intrumented","instrumented"],["intrumenting","instrumenting"],["intruments","instruments"],["intrusted","entrusted"],["intstead","instead"],["intstructed","instructed"],["intstructer","instructor"],["intstructing","instructing"],["intstruction","instruction"],["intstructional","instructional"],["intstructions","instructions"],["intstructor","instructor"],["intstructs","instructs"],["intterrupt","interrupt"],["intterupt","interrupt"],["intterupted","interrupted"],["intterupting","interrupting"],["intterupts","interrupts"],["intuative","intuitive"],["inturpratasion","interpretation"],["inturpratation","interpretation"],["inturprett","interpret"],["intutive","intuitive"],["intutively","intuitively"],["inudstry","industry"],["inut","input"],["invaid","invalid"],["invaild","invalid"],["invaildate","invalidate"],["invailid","invalid"],["invalaid","invalid"],["invald","invalid"],["invaldates","invalidates"],["invalde","invalid"],["invalidatiopn","invalidation"],["invalide","invalid"],["invalidiate","invalidate"],["invalidte","invalidate"],["invalidted","invalidated"],["invalidtes","invalidates"],["invalidting","invalidating"],["invalidtion","invalidation"],["invalied","invalid"],["invalud","invalid"],["invarient","invariant"],["invarients","invariants"],["invarinat","invariant"],["invarinats","invariants"],["inventer","inventor"],["inverded","inverted"],["inverion","inversion"],["inverions","inversions"],["invertedd","inverted"],["invertibrates","invertebrates"],["invertion","inversion"],["invertions","inversions"],["inverval","interval"],["inveryed","inverted"],["invesitgated","investigated"],["invesitgating","investigating"],["invesitgation","investigation"],["invesitgations","investigations"],["investingate","investigate"],["inveting","inverting"],["invetory","inventory"],["inviation","invitation"],["invididual","individual"],["invidivual","individual"],["invidual","individual"],["invidually","individually"],["invisble","invisible"],["invisblity","invisibility"],["invisiable","invisible"],["invisibile","invisible"],["invisivble","invisible"],["invlaid","invalid"],["invlid","invalid"],["invlisible","invisible"],["invlove","involve"],["invloved","involved"],["invloves","involves"],["invocaition","invocation"],["invokable","invocable"],["invokation","invocation"],["invokations","invocations"],["invokve","invoke"],["invokved","invoked"],["invokves","invokes"],["invokving","invoking"],["involvment","involvement"],["invovle","involve"],["invovled","involved"],["invovles","involves"],["invovling","involving"],["ioclt","ioctl"],["iomaped","iomapped"],["ionde","inode"],["iplementation","implementation"],["ipmrovement","improvement"],["ipmrovements","improvements"],["iput","input"],["ireelevant","irrelevant"],["irelevent","irrelevant"],["iresistable","irresistible"],["iresistably","irresistibly"],["iresistible","irresistible"],["iresistibly","irresistibly"],["iritable","irritable"],["iritate","irritate"],["iritated","irritated"],["iritating","irritating"],["ironicly","ironically"],["irradate","irradiate"],["irradated","irradiated"],["irradates","irradiates"],["irradating","irradiating"],["irradation","irradiation"],["irraditate","irradiate"],["irraditated","irradiated"],["irraditates","irradiates"],["irraditating","irradiating"],["irregularties","irregularities"],["irregulier","irregular"],["irregulierties","irregularities"],["irrelavent","irrelevant"],["irrelevent","irrelevant"],["irrelvant","irrelevant"],["irreplacable","irreplaceable"],["irreplacalbe","irreplaceable"],["irreproducable","irreproducible"],["irresepective","irrespective"],["irresistable","irresistible"],["irresistably","irresistibly"],["irreversable","irreversible"],["is'nt","isn't"],["isalha","isalpha"],["isconnection","isconnected"],["iscrated","iscreated"],["iself","itself"],["iselfe","itself"],["iserting","inserting"],["isimilar","similar"],["isloation","isolation"],["ismas","isthmus"],["isn;t","isn't"],["isnpiron","inspiron"],["isnt'","isn't"],["isnt","isn't"],["isnt;","isn't"],["isntalation","installation"],["isntalations","installations"],["isntallation","installation"],["isntallations","installations"],["isntance","instance"],["isntances","instances"],["isotrophically","isotropically"],["ispatches","dispatches"],["isplay","display"],["Israelies","Israelis"],["isse","issue"],["isses","issues"],["isssue","issue"],["isssued","issued"],["isssues","issues"],["issueing","issuing"],["istalling","installing"],["istance","instance"],["istead","instead"],["istened","listened"],["istener","listener"],["isteners","listeners"],["istening","listening"],["isue","issue"],["iteartor","iterator"],["iteator","iterator"],["iteger","integer"],["itegral","integral"],["itegrals","integrals"],["iten","item"],["itens","items"],["itention","intention"],["itentional","intentional"],["itentionally","intentionally"],["itentionaly","intentionally"],["iteraion","iteration"],["iteraions","iterations"],["iteratable","iterable"],["iterater","iterator"],["iteraterate","iterate"],["iteratered","iterated"],["iteratior","iterator"],["iteratiors","iterators"],["iteratons","iterations"],["itereating","iterating"],["iterface","interface"],["iterfaces","interfaces"],["iternations","iterations"],["iterpreter","interpreter"],["iterration","iteration"],["iterrations","iterations"],["iterrupt","interrupt"],["iterstion","iteration"],["iterstions","iterations"],["itertation","iteration"],["iteself","itself"],["itesm","items"],["itheir","their"],["itheirs","theirs"],["itialise","initialise"],["itialised","initialised"],["itialises","initialises"],["itialising","initialising"],["itialize","initialize"],["itialized","initialized"],["itializes","initializes"],["itializing","initializing"],["itnerest","interest"],["itnerface","interface"],["itnerfaces","interfaces"],["itnernal","internal"],["itnerprelation","interpretation"],["itnerpret","interpret"],["itnerpretation","interpretation"],["itnerpretaton","interpretation"],["itnerpreted","interpreted"],["itnerpreter","interpreter"],["itnerpreting","interpreting"],["itnerprets","interprets"],["itnervals","intervals"],["itnroduced","introduced"],["itsef","itself"],["itsel","itself"],["itselfs","itself"],["itselt","itself"],["itselv","itself"],["itsems","items"],["itslef","itself"],["itslev","itself"],["itsself","itself"],["itterate","iterate"],["itterated","iterated"],["itterates","iterates"],["itterating","iterating"],["itteration","iteration"],["itterations","iterations"],["itterative","iterative"],["itterator","iterator"],["itterators","iterators"],["iunior","junior"],["ivalid","invalid"],["ivocation","invocation"],["ivoked","invoked"],["iwithout","without"],["iwll","will"],["iwth","with"],["jagid","jagged"],["jagwar","jaguar"],["januar","January"],["janurary","January"],["Januray","January"],["japanease","japanese"],["japaneese","Japanese"],["Japanes","Japanese"],["japanses","Japanese"],["jaques","jacques"],["javacript","javascript"],["javascipt","javascript"],["javasciript","javascript"],["javascritp","javascript"],["javascropt","javascript"],["javasript","javascript"],["javasrript","javascript"],["javescript","javascript"],["javsscript","javascript"],["jeapardy","jeopardy"],["jeffies","jiffies"],["jekins","Jenkins"],["jelous","jealous"],["jelousy","jealousy"],["jelusey","jealousy"],["jenkin","Jenkins"],["jenkkins","Jenkins"],["jenkns","Jenkins"],["jepordize","jeopardize"],["jewllery","jewellery"],["jhondoe","johndoe"],["jist","gist"],["jitterr","jitter"],["jitterring","jittering"],["jodpers","jodhpurs"],["Johanine","Johannine"],["joineable","joinable"],["joinning","joining"],["jont","joint"],["jonts","joints"],["jornal","journal"],["jorunal","journal"],["Jospeh","Joseph"],["jossle","jostle"],["jouney","journey"],["journied","journeyed"],["journies","journeys"],["joystik","joystick"],["jscipt","jscript"],["jstu","just"],["jsut","just"],["juadaism","Judaism"],["juadism","Judaism"],["judical","judicial"],["judisuary","judiciary"],["juducial","judicial"],["juge","judge"],["juipter","Jupiter"],["jumo","jump"],["jumoed","jumped"],["jumpimng","jumping"],["jupyther","Jupyter"],["juristiction","jurisdiction"],["juristictions","jurisdictions"],["jus","just"],["justfied","justified"],["justication","justification"],["justifed","justified"],["justs","just"],["juxt","just"],["juxtification","justification"],["juxtifications","justifications"],["juxtified","justified"],["juxtifies","justifies"],["juxtifying","justifying"],["kakfa","Kafka"],["kazakstan","Kazakhstan"],["keep-alives","keep-alive"],["keept","kept"],["kenerl","kernel"],["kenerls","kernels"],["kenrel","kernel"],["kenrels","kernels"],["kepping","keeping"],["kepps","keeps"],["kerenl","kernel"],["kerenls","kernels"],["kernal","kernel"],["kernals","kernels"],["kernerl","kernel"],["kernerls","kernels"],["keword","keyword"],["kewords","keywords"],["kewword","keyword"],["kewwords","keywords"],["keybaord","keyboard"],["keybaords","keyboards"],["keyboaard","keyboard"],["keyboaards","keyboards"],["keyboad","keyboard"],["keyboads","keyboards"],["keybooard","keyboard"],["keybooards","keyboards"],["keyborad","keyboard"],["keyborads","keyboards"],["keybord","keyboard"],["keybords","keyboards"],["keybroad","keyboard"],["keybroads","keyboards"],["keyevente","keyevent"],["keyords","keywords"],["keyoutch","keytouch"],["keyowrd","keyword"],["keypair","key pair"],["keypairs","key pairs"],["keyservers","key servers"],["keystokes","keystrokes"],["keyward","keyword"],["keywoards","keywords"],["keywork","keyword"],["keyworkd","keyword"],["keyworkds","keywords"],["keywors","keywords"],["keywprd","keyword"],["kindergarden","kindergarten"],["kindgergarden","kindergarten"],["kindgergarten","kindergarten"],["kinf","kind"],["kinfs","kinds"],["kinnect","Kinect"],["klenex","kleenex"],["klick","click"],["klicked","clicked"],["klicks","clicks"],["klunky","clunky"],["knive","knife"],["kno","know"],["knowladge","knowledge"],["knowlage","knowledge"],["knowlageable","knowledgeable"],["knowlegde","knowledge"],["knowlege","knowledge"],["knowlegeabel","knowledgeable"],["knowlegeable","knowledgeable"],["knwo","know"],["knwoing","knowing"],["knwoingly","knowingly"],["knwon","known"],["knwos","knows"],["kocalized","localized"],["konstant","constant"],["konstants","constants"],["konw","know"],["konwn","known"],["konws","knows"],["koordinate","coordinate"],["koordinates","coordinates"],["kown","known"],["kubenates","Kubernetes"],["kubenernetes","Kubernetes"],["kubenertes","Kubernetes"],["kubenetes","Kubernetes"],["kubenretes","Kubernetes"],["kuberenetes","Kubernetes"],["kuberentes","Kubernetes"],["kuberetes","Kubernetes"],["kubermetes","Kubernetes"],["kubernates","Kubernetes"],["kubernests","Kubernetes"],["kubernete","Kubernetes"],["kuberntes","Kubernetes"],["kwno","know"],["kwoledgebase","knowledge base"],["kyrillic","cyrillic"],["labbel","label"],["labbeled","labeled"],["labbels","labels"],["labed","labeled"],["labeld","labelled"],["labirinth","labyrinth"],["lable","label"],["lablel","label"],["lablels","labels"],["lables","labels"],["labouriously","laboriously"],["labratory","laboratory"],["lagacies","legacies"],["lagacy","legacy"],["laguage","language"],["laguages","languages"],["laguague","language"],["laguagues","languages"],["laiter","later"],["lamda","lambda"],["lamdas","lambdas"],["lanaguage","language"],["lanaguge","language"],["lanaguges","languages"],["lanagugs","languages"],["lanauge","language"],["langage","language"],["langauage","language"],["langauge","language"],["langauges","languages"],["langeuage","language"],["langeuagesection","languagesection"],["langht","length"],["langhts","lengths"],["langth","length"],["langths","lengths"],["languace","language"],["languaces","languages"],["languae","language"],["languaes","languages"],["language-spacific","language-specific"],["languahe","language"],["languahes","languages"],["languaje","language"],["languajes","languages"],["langual","lingual"],["languale","language"],["languales","languages"],["langualge","language"],["langualges","languages"],["languange","language"],["languanges","languages"],["languaqe","language"],["languaqes","languages"],["languate","language"],["languates","languages"],["languauge","language"],["languauges","languages"],["languege","language"],["langueges","languages"],["langugae","language"],["langugaes","languages"],["langugage","language"],["langugages","languages"],["languge","language"],["languges","languages"],["langugue","language"],["langugues","languages"],["lanich","launch"],["lanuage","language"],["lanuch","launch"],["lanuched","launched"],["lanuches","launches"],["lanuching","launching"],["lanugage","language"],["lanugages","languages"],["laod","load"],["laoded","loaded"],["laoding","loading"],["laods","loads"],["laout","layout"],["larg","large"],["largst","largest"],["larrry","larry"],["lastes","latest"],["lastr","last"],["latets","latest"],["lating","latin"],["latitide","latitude"],["latitue","latitude"],["latitute","latitude"],["latops","laptops"],["latset","latest"],["lattitude","latitude"],["lauch","launch"],["lauched","launched"],["laucher","launcher"],["lauches","launches"],["lauching","launching"],["lauguage","language"],["launck","launch"],["launhed","launched"],["lavae","larvae"],["layed","laid"],["layou","layout"],["lazer","laser"],["laziliy","lazily"],["lazyness","laziness"],["lcoally","locally"],["lcoation","location"],["lcuase","clause"],["leaast","least"],["leace","leave"],["leack","leak"],["leagacy","legacy"],["leagal","legal"],["leagalise","legalise"],["leagality","legality"],["leagalize","legalize"],["leagcy","legacy"],["leage","league"],["leagel","legal"],["leagelise","legalise"],["leagelity","legality"],["leagelize","legalize"],["leageue","league"],["leagl","legal"],["leaglise","legalise"],["leaglity","legality"],["leaglize","legalize"],["leapyear","leap year"],["leapyears","leap years"],["leary","leery"],["leaset","least"],["leasy","least"],["leathal","lethal"],["leats","least"],["leaveing","leaving"],["leavong","leaving"],["lefted","left"],["legac","legacy"],["legact","legacy"],["legalimate","legitimate"],["legasy","legacy"],["legel","legal"],["leggacies","legacies"],["leggacy","legacy"],["leght","length"],["leghts","lengths"],["legitamate","legitimate"],["legitimiately","legitimately"],["legitmate","legitimate"],["legnth","length"],["legth","length"],["legths","lengths"],["leibnitz","leibniz"],["leightweight","lightweight"],["lene","lens"],["lenggth","length"],["lengh","length"],["lenghs","lengths"],["lenght","length"],["lenghten","lengthen"],["lenghtend","lengthened"],["lenghtened","lengthened"],["lenghtening","lengthening"],["lenghth","length"],["lenghthen","lengthen"],["lenghths","lengths"],["lenghthy","lengthy"],["lenghtly","lengthy"],["lenghts","lengths"],["lenghty","lengthy"],["lengt","length"],["lengten","lengthen"],["lengtext","longtext"],["lengthes","lengths"],["lengthh","length"],["lengts","lengths"],["leniant","lenient"],["leninent","lenient"],["lentgh","length"],["lentghs","lengths"],["lenth","length"],["lenths","lengths"],["leran","learn"],["leraned","learned"],["lerans","learns"],["lessson","lesson"],["lesssons","lessons"],["lesstiff","LessTif"],["letgitimate","legitimate"],["letmost","leftmost"],["leutenant","lieutenant"],["levaridge","leverage"],["levetate","levitate"],["levetated","levitated"],["levetates","levitates"],["levetating","levitating"],["levl","level"],["levle","level"],["lexial","lexical"],["lexigraphic","lexicographic"],["lexigraphical","lexicographical"],["lexigraphically","lexicographically"],["leyer","layer"],["leyered","layered"],["leyering","layering"],["leyers","layers"],["liares","liars"],["liasion","liaison"],["liason","liaison"],["liasons","liaisons"],["libarary","library"],["libaries","libraries"],["libary","library"],["libell","libel"],["liberaries","libraries"],["liberary","library"],["liberoffice","libreoffice"],["liberry","library"],["libgng","libpng"],["libguistic","linguistic"],["libguistics","linguistics"],["libitarianisn","libertarianism"],["libraarie","library"],["libraaries","libraries"],["libraary","library"],["librabarie","library"],["librabaries","libraries"],["librabary","library"],["librabie","library"],["librabies","libraries"],["librabrie","library"],["librabries","libraries"],["librabry","library"],["libraby","library"],["libraie","library"],["libraier","library"],["libraies","libraries"],["libraiesr","libraries"],["libraire","library"],["libraires","libraries"],["librairies","libraries"],["librairy","library"],["libralie","library"],["libralies","libraries"],["libraly","library"],["libraray","library"],["libraris","libraries"],["librarries","libraries"],["librarry","library"],["libraryes","libraries"],["libratie","library"],["libraties","libraries"],["libraty","library"],["libray","library"],["librayr","library"],["libreoffie","libreoffice"],["libreoficekit","libreofficekit"],["libreries","libraries"],["librery","library"],["libries","libraries"],["librraies","libraries"],["librraries","libraries"],["librrary","library"],["librray","library"],["libstc++","libstdc++"],["licate","locate"],["licated","located"],["lication","location"],["lications","locations"],["licenceing","licencing"],["licese","license"],["licesne","license"],["licesnes","licenses"],["licesning","licensing"],["licesnse","license"],["licesnses","licenses"],["licesnsing","licensing"],["licsense","license"],["licsenses","licenses"],["licsensing","licensing"],["lieing","lying"],["liek","like"],["liekd","liked"],["lient","client"],["lients","clients"],["liesure","leisure"],["lieuenant","lieutenant"],["liev","live"],["lieved","lived"],["lifceycle","lifecycle"],["lifecyle","lifecycle"],["lifes","lives"],["lifeycle","lifecycle"],["liftime","lifetime"],["lighing","lighting"],["lightbulp","lightbulb"],["lightweigh","lightweight"],["lightwieght","lightweight"],["lightwight","lightweight"],["lightyear","light year"],["lightyears","light years"],["ligth","light"],["ligthing","lighting"],["ligths","lights"],["ligthweight","lightweight"],["ligthweights","lightweights"],["liitle","little"],["likeley","likely"],["likelly","likely"],["likelyhood","likelihood"],["likewis","likewise"],["likey","likely"],["liklelihood","likelihood"],["likley","likely"],["likly","likely"],["lileral","literal"],["limiation","limitation"],["limiations","limitations"],["liminted","limited"],["limitaion","limitation"],["limite","limit"],["limitiaion","limitation"],["limitiaions","limitations"],["limitiation","limitation"],["limitiations","limitations"],["limitied","limited"],["limitier","limiter"],["limitiers","limiters"],["limitiing","limiting"],["limitimg","limiting"],["limition","limitation"],["limitions","limitations"],["limitis","limits"],["limititation","limitation"],["limititations","limitations"],["limitited","limited"],["limititer","limiter"],["limititers","limiters"],["limititing","limiting"],["limitted","limited"],["limitter","limiter"],["limitting","limiting"],["limitts","limits"],["limk","link"],["limted","limited"],["limti","limit"],["limts","limits"],["linaer","linear"],["linar","linear"],["linarly","linearly"],["lincese","license"],["lincesed","licensed"],["linceses","licenses"],["lineary","linearly"],["linerisation","linearisation"],["linerisations","linearisations"],["lineseach","linesearch"],["lineseaches","linesearches"],["liness","lines"],["linewdith","linewidth"],["linez","lines"],["lingth","length"],["linheight","lineheight"],["linkfy","linkify"],["linnaena","linnaean"],["lintain","lintian"],["linz","lines"],["lippizaner","lipizzaner"],["liquify","liquefy"],["lisetning","listening"],["lising","listing"],["listapck","listpack"],["listbbox","listbox"],["listeing","listening"],["listeneing","listening"],["listeneres","listeners"],["listenes","listens"],["listensers","listeners"],["listenter","listener"],["listenters","listeners"],["listernes","listeners"],["listner","listener"],["listners","listeners"],["litaral","literal"],["litarally","literally"],["litarals","literals"],["litature","literature"],["liteautrue","literature"],["literaly","literally"],["literture","literature"],["litle","little"],["litquid","liquid"],["litquids","liquids"],["lits","list"],["litte","little"],["littel","little"],["littel-endian","little-endian"],["littele","little"],["littelry","literally"],["litteral","literal"],["litterally","literally"],["litterals","literals"],["litterate","literate"],["litterature","literature"],["liuke","like"],["liveing","living"],["livel","level"],["livetime","lifetime"],["livley","lively"],["lizens","license"],["lizense","license"],["lizensing","licensing"],["lke","like"],["llinear","linear"],["lmits","limits"],["loaader","loader"],["loacal","local"],["loacality","locality"],["loacally","locally"],["loacation","location"],["loaction","location"],["loactions","locations"],["loadig","loading"],["loadin","loading"],["loadning","loading"],["locae","locate"],["locaes","locates"],["locahost","localhost"],["locaiing","locating"],["locailty","locality"],["locaing","locating"],["locaion","location"],["locaions","locations"],["locaise","localise"],["locaised","localised"],["locaiser","localiser"],["locaises","localises"],["locaite","locate"],["locaites","locates"],["locaiting","locating"],["locaition","location"],["locaitions","locations"],["locaiton","location"],["locaitons","locations"],["locaize","localize"],["locaized","localized"],["locaizer","localizer"],["locaizes","localizes"],["localation","location"],["localed","located"],["localtion","location"],["localtions","locations"],["localy","locally"],["localzation","localization"],["locatins","locations"],["loccked","locked"],["locgical","logical"],["lockingf","locking"],["lodable","loadable"],["loded","loaded"],["loder","loader"],["loders","loaders"],["loding","loading"],["loev","love"],["logarithimic","logarithmic"],["logarithmical","logarithmically"],["logaritmic","logarithmic"],["logcal","logical"],["loggging","logging"],["logial","logical"],["logially","logically"],["logicaly","logically"],["logictech","logitech"],["logile","logfile"],["logitude","longitude"],["logitudes","longitudes"],["logoic","logic"],["logorithm","logarithm"],["logorithmic","logarithmic"],["logorithms","logarithms"],["logrithm","logarithm"],["logrithms","logarithms"],["logwritter","logwriter"],["loign","login"],["loigns","logins"],["lokal","local"],["lokale","locale"],["lokales","locales"],["lokaly","locally"],["lolal","total"],["lolerant","tolerant"],["lond","long"],["lonelyness","loneliness"],["long-runnign","long-running"],["longers","longer"],["longitudonal","longitudinal"],["longitue","longitude"],["longitutde","longitude"],["longitute","longitude"],["longst","longest"],["longuer","longer"],["longuest","longest"],["lonley","lonely"],["looback","loopback"],["loobacks","loopbacks"],["loobpack","loopback"],["loockdown","lockdown"],["lookes","looks"],["looknig","looking"],["looop","loop"],["loopup","lookup"],["loosley","loosely"],["loosly","loosely"],["losely","loosely"],["losen","loosen"],["losened","loosened"],["lotharingen","Lothringen"],["lpatform","platform"],["luckly","luckily"],["luminose","luminous"],["luminousity","luminosity"],["lveo","love"],["lvoe","love"],["Lybia","Libya"],["maake","make"],["mabe","maybe"],["mabye","maybe"],["macack","macaque"],["macason","moccasin"],["macasons","moccasins"],["maccro","macro"],["maccros","macros"],["machanism","mechanism"],["machanisms","mechanisms"],["mached","matched"],["maches","matches"],["machettie","machete"],["machinary","machinery"],["machine-dependend","machine-dependent"],["machiness","machines"],["mackeral","mackerel"],["maco","macro"],["macor","macro"],["macors","macros"],["macpakge","package"],["macroses","macros"],["macrow","macro"],["macthing","matching"],["madantory","mandatory"],["madatory","mandatory"],["maddness","madness"],["maesure","measure"],["maesured","measured"],["maesurement","measurement"],["maesurements","measurements"],["maesures","measures"],["maesuring","measuring"],["magasine","magazine"],["magincian","magician"],["magisine","magazine"],["magizine","magazine"],["magnatiude","magnitude"],["magnatude","magnitude"],["magnificient","magnificent"],["magolia","magnolia"],["mahcine","machine"],["maibe","maybe"],["maibox","mailbox"],["mailformed","malformed"],["mailling","mailing"],["maillinglist","mailing list"],["maillinglists","mailing lists"],["mailny","mainly"],["mailstrum","maelstrom"],["mainenance","maintenance"],["maininly","mainly"],["mainling","mailing"],["maintainance","maintenance"],["maintaince","maintenance"],["maintainces","maintenances"],["maintainence","maintenance"],["maintaing","maintaining"],["maintan","maintain"],["maintanance","maintenance"],["maintance","maintenance"],["maintane","maintain"],["maintanence","maintenance"],["maintaner","maintainer"],["maintaners","maintainers"],["maintans","maintains"],["maintenace","maintenance"],["maintenence","maintenance"],["maintiain","maintain"],["maintians","maintains"],["maintinaing","maintaining"],["maintioned","mentioned"],["mairabd","MariaDB"],["mairadb","MariaDB"],["maitain","maintain"],["maitainance","maintenance"],["maitained","maintained"],["maitainers","maintainers"],["majoroty","majority"],["maka","make"],["makefle","makefile"],["makeing","making"],["makign","making"],["makretplace","marketplace"],["makro","macro"],["makros","macros"],["Malcom","Malcolm"],["maliciousally","maliciously"],["malicius","malicious"],["maliciusally","maliciously"],["maliciusly","maliciously"],["malicous","malicious"],["malicousally","maliciously"],["malicously","maliciously"],["maline","malign"],["malined","maligned"],["malining","maligning"],["malins","maligns"],["malless","malice"],["malplace","misplace"],["malplaced","misplaced"],["maltesian","Maltese"],["mamagement","management"],["mamal","mammal"],["mamalian","mammalian"],["mamento","memento"],["mamentos","mementos"],["mamory","memory"],["mamuth","mammoth"],["manafacturer","manufacturer"],["manafacturers","manufacturers"],["managament","management"],["manageed","managed"],["managemenet","management"],["managenment","management"],["managet","manager"],["managets","managers"],["managmenet","management"],["managment","management"],["manaise","mayonnaise"],["manal","manual"],["manange","manage"],["manangement","management"],["mananger","manager"],["manangers","managers"],["manaul","manual"],["manaully","manually"],["manauls","manuals"],["manaze","mayonnaise"],["mandatatory","mandatory"],["mandetory","mandatory"],["manement","management"],["maneouvre","manoeuvre"],["maneouvred","manoeuvred"],["maneouvres","manoeuvres"],["maneouvring","manoeuvring"],["manetain","maintain"],["manetained","maintained"],["manetainer","maintainer"],["manetainers","maintainers"],["manetaining","maintaining"],["manetains","maintains"],["mangaed","managed"],["mangaement","management"],["mangager","manager"],["mangagers","managers"],["mangement","management"],["mangementt","management"],["manifacture","manufacture"],["manifactured","manufactured"],["manifacturer","manufacturer"],["manifacturers","manufacturers"],["manifactures","manufactures"],["manifect","manifest"],["manipluate","manipulate"],["manipluated","manipulated"],["manipulatin","manipulating"],["manipulaton","manipulation"],["manipute","manipulate"],["maniputed","manipulated"],["maniputing","manipulating"],["manipution","manipulation"],["maniputions","manipulations"],["maniputor","manipulator"],["manisfestations","manifestations"],["maniuplate","manipulate"],["maniuplated","manipulated"],["maniuplates","manipulates"],["maniuplating","manipulating"],["maniuplation","manipulation"],["maniuplations","manipulations"],["maniuplator","manipulator"],["maniuplators","manipulators"],["mannor","manner"],["mannual","manual"],["mannually","manually"],["mannualy","manually"],["manoeuverability","maneuverability"],["manoeuvering","maneuvering"],["manouevring","manoeuvring"],["mantain","maintain"],["mantainable","maintainable"],["mantained","maintained"],["mantainer","maintainer"],["mantainers","maintainers"],["mantaining","maintaining"],["mantains","maintains"],["mantanine","maintain"],["mantanined","maintained"],["mantatory","mandatory"],["mantenance","maintenance"],["manualy","manually"],["manualyl","manually"],["manualyy","manually"],["manuell","manual"],["manuelly","manually"],["manufactuerd","manufactured"],["manufacturedd","manufactured"],["manufature","manufacture"],["manufatured","manufactured"],["manufaturing","manufacturing"],["manufaucturing","manufacturing"],["manulally","manually"],["manule","manual"],["manuley","manually"],["manully","manually"],["manuly","manually"],["manupilations","manipulations"],["manupulate","manipulate"],["manupulated","manipulated"],["manupulates","manipulates"],["manupulating","manipulating"],["manupulation","manipulation"],["manupulations","manipulations"],["manuver","maneuver"],["manyal","manual"],["manyally","manually"],["manyals","manuals"],["mapable","mappable"],["mape","map"],["maped","mapped"],["maping","mapping"],["mapings","mappings"],["mapp","map"],["mappeds","mapped"],["mappeed","mapped"],["mappping","mapping"],["mapppings","mappings"],["margings","margins"],["mariabd","MariaDB"],["mariage","marriage"],["marjority","majority"],["marketting","marketing"],["markey","marquee"],["markeys","marquees"],["marmelade","marmalade"],["marrage","marriage"],["marraige","marriage"],["marrtyred","martyred"],["marryied","married"],["marshmellow","marshmallow"],["marshmellows","marshmallows"],["marter","martyr"],["masakist","masochist"],["mashetty","machete"],["mashine","machine"],["mashined","machined"],["mashines","machines"],["masia","messiah"],["masicer","massacre"],["masiff","massif"],["maskerading","masquerading"],["maskeraid","masquerade"],["masos","macos"],["masquarade","masquerade"],["masqurade","masquerade"],["Massachusettes","Massachusetts"],["Massachussets","Massachusetts"],["Massachussetts","Massachusetts"],["massagebox","messagebox"],["massectomy","mastectomy"],["massewer","masseur"],["massmedia","mass media"],["massoose","masseuse"],["masster","master"],["masteer","master"],["masterbation","masturbation"],["mastquerade","masquerade"],["mata-data","meta-data"],["matadata","metadata"],["matainer","maintainer"],["matainers","maintainers"],["mataphysical","metaphysical"],["matatable","metatable"],["matc","match"],["matchies","matches"],["matchign","matching"],["matchin","matching"],["matchs","matches"],["matchter","matcher"],["matcing","matching"],["mateiral","material"],["mateirals","materials"],["matemathical","mathematical"],["materaial","material"],["materaials","materials"],["materail","material"],["materails","materials"],["materalists","materialist"],["materil","material"],["materilism","materialism"],["materilize","materialize"],["materils","materials"],["materla","material"],["materlas","materials"],["mathamatics","mathematics"],["mathces","matches"],["mathch","match"],["mathched","matched"],["mathches","matches"],["mathching","matching"],["mathcing","matching"],["mathed","matched"],["mathematicaly","mathematically"],["mathematican","mathematician"],["mathematicas","mathematics"],["mathes","matches"],["mathetician","mathematician"],["matheticians","mathematicians"],["mathimatic","mathematic"],["mathimatical","mathematical"],["mathimatically","mathematically"],["mathimatician","mathematician"],["mathimaticians","mathematicians"],["mathimatics","mathematics"],["mathing","matching"],["mathmatical","mathematical"],["mathmatically","mathematically"],["mathmatician","mathematician"],["mathmaticians","mathematicians"],["mathod","method"],["matinay","matinee"],["matix","matrix"],["matreial","material"],["matreials","materials"],["matresses","mattresses"],["matrial","material"],["matrials","materials"],["matser","master"],["matzch","match"],["mavrick","maverick"],["mawsoleum","mausoleum"],["maximice","maximize"],["maximim","maximum"],["maximimum","maximum"],["maximium","maximum"],["maximnum","maximum"],["maximnums","maximums"],["maximun","maximum"],["maxinum","maximum"],["maxium","maximum"],["maxiumum","maximum"],["maxmimum","maximum"],["maxmium","maximum"],["maxmiums","maximums"],["maxosx","macosx"],["maxumum","maximum"],["maybee","maybe"],["mayonase","mayonnaise"],["mayority","majority"],["mayu","may"],["mayybe","maybe"],["mazilla","Mozilla"],["mccarthyst","mccarthyist"],["mchanic","mechanic"],["mchanical","mechanical"],["mchanically","mechanically"],["mchanicals","mechanicals"],["mchanics","mechanics"],["mchanism","mechanism"],["mchanisms","mechanisms"],["mcroscope","microscope"],["mcroscopes","microscopes"],["mcroscopic","microscopic"],["mcroscopies","microscopies"],["mcroscopy","microscopy"],["mdification","modification"],["mdifications","modifications"],["mdified","modified"],["mdifier","modifier"],["mdifiers","modifiers"],["mdifies","modifies"],["mdify","modify"],["mdifying","modifying"],["mdoel","model"],["mdoeled","modeled"],["mdoeling","modeling"],["mdoelled","modelled"],["mdoelling","modelling"],["mdoels","models"],["meaasure","measure"],["meaasured","measured"],["meaasures","measures"],["meachanism","mechanism"],["meachanisms","mechanisms"],["meachinism","mechanism"],["meachinisms","mechanisms"],["meachnism","mechanism"],["meachnisms","mechanisms"],["meading","meaning"],["meaing","meaning"],["mealflur","millefleur"],["meanigfull","meaningful"],["meanign","meaning"],["meanin","meaning"],["meaninful","meaningful"],["meaningfull","meaningful"],["meanining","meaning"],["meaninless","meaningless"],["meaninng","meaning"],["meassurable","measurable"],["meassurably","measurably"],["meassure","measure"],["meassured","measured"],["meassurement","measurement"],["meassurements","measurements"],["meassures","measures"],["meassuring","measuring"],["measue","measure"],["measued","measured"],["measuement","measurement"],["measuements","measurements"],["measuer","measurer"],["measues","measures"],["measuing","measuring"],["measuremenet","measurement"],["measuremenets","measurements"],["measurmenet","measurement"],["measurmenets","measurements"],["measurment","measurement"],["measurments","measurements"],["meatadata","metadata"],["meatfile","metafile"],["meathod","method"],["meaure","measure"],["meaured","measured"],["meaurement","measurement"],["meaurements","measurements"],["meaurer","measurer"],["meaurers","measurers"],["meaures","measures"],["meauring","measuring"],["meausure","measure"],["meausures","measures"],["meber","member"],["mebmer","member"],["mebrain","membrane"],["mebrains","membranes"],["mebran","membrane"],["mebrans","membranes"],["mecahinsm","mechanism"],["mecahinsms","mechanisms"],["mecahnic","mechanic"],["mecahnics","mechanics"],["mecahnism","mechanism"],["mecanical","mechanical"],["mecanism","mechanism"],["mecanisms","mechanisms"],["meccob","macabre"],["mechamism","mechanism"],["mechamisms","mechanisms"],["mechananism","mechanism"],["mechancial","mechanical"],["mechandise","merchandise"],["mechanim","mechanism"],["mechanims","mechanisms"],["mechanis","mechanism"],["mechansim","mechanism"],["mechansims","mechanisms"],["mechine","machine"],["mechines","machines"],["mechinism","mechanism"],["mechnanism","mechanism"],["mechnism","mechanism"],["mechnisms","mechanisms"],["medacine","medicine"],["medai","media"],["meddo","meadow"],["meddos","meadows"],["medeival","medieval"],["medevial","medieval"],["medhod","method"],["medhods","methods"],["medievel","medieval"],["medifor","metaphor"],["medifors","metaphors"],["medioker","mediocre"],["mediphor","metaphor"],["mediphors","metaphors"],["medisinal","medicinal"],["mediterainnean","mediterranean"],["Mediteranean","Mediterranean"],["medow","meadow"],["medows","meadows"],["meeds","needs"],["meens","means"],["meerkrat","meerkat"],["meerly","merely"],["meetign","meeting"],["meganism","mechanism"],["mege","merge"],["mehcanic","mechanic"],["mehcanical","mechanical"],["mehcanically","mechanically"],["mehcanics","mechanics"],["mehod","method"],["mehodical","methodical"],["mehodically","methodically"],["mehods","methods"],["mehtod","method"],["mehtodical","methodical"],["mehtodically","methodically"],["mehtods","methods"],["meida","media"],["melancoly","melancholy"],["melieux","milieux"],["melineum","millennium"],["melineumms","millennia"],["melineums","millennia"],["melinneum","millennium"],["melinneums","millennia"],["mellineum","millennium"],["mellineums","millennia"],["mellinneum","millennium"],["mellinneums","millennia"],["membran","membrane"],["membranaphone","membranophone"],["membrans","membranes"],["memcahe","memcache"],["memcahed","memcached"],["memeasurement","measurement"],["memeber","member"],["memebered","remembered"],["memebers","members"],["memebership","membership"],["memeberships","memberships"],["memebr","member"],["memebrof","memberof"],["memebrs","members"],["mememory","memory"],["mememto","memento"],["memeory","memory"],["memer","member"],["memership","membership"],["memerships","memberships"],["memery","memory"],["memick","mimic"],["memicked","mimicked"],["memicking","mimicking"],["memics","mimics"],["memmber","member"],["memmick","mimic"],["memmicked","mimicked"],["memmicking","mimicking"],["memmics","mimics"],["memmory","memory"],["memoery","memory"],["memomry","memory"],["memor","memory"],["memoty","memory"],["memove","memmove"],["mempry","memory"],["memroy","memory"],["memwar","memoir"],["memwars","memoirs"],["memwoir","memoir"],["memwoirs","memoirs"],["menally","mentally"],["menas","means"],["menetion","mention"],["menetioned","mentioned"],["menetioning","mentioning"],["menetions","mentions"],["meni","menu"],["menioned","mentioned"],["mensioned","mentioned"],["mensioning","mentioning"],["ment","meant"],["menthods","methods"],["mentiond","mentioned"],["mentione","mentioned"],["mentionned","mentioned"],["mentionning","mentioning"],["mentionnned","mentioned"],["menual","manual"],["menue","menu"],["menues","menus"],["menutitems","menuitems"],["meraj","mirage"],["merajes","mirages"],["merang","meringue"],["mercahnt","merchant"],["mercentile","mercantile"],["merchantibility","merchantability"],["merecat","meerkat"],["merecats","meerkats"],["mergable","mergeable"],["merget","merge"],["mergge","merge"],["mergged","merged"],["mergging","merging"],["mermory","memory"],["merory","memory"],["merrors","mirrors"],["mesage","message"],["mesages","messages"],["mesaureed","measured"],["meskeeto","mosquito"],["meskeetos","mosquitoes"],["mesoneen","mezzanine"],["mesoneens","mezzanines"],["messaes","messages"],["messag","message"],["messagetqueue","messagequeue"],["messagin","messaging"],["messagoe","message"],["messags","messages"],["messagses","messages"],["messanger","messenger"],["messangers","messengers"],["messave","message"],["messeges","messages"],["messenging","messaging"],["messgae","message"],["messgaed","messaged"],["messgaes","messages"],["messge","message"],["messges","messages"],["messsage","message"],["messsages","messages"],["messure","measure"],["messured","measured"],["messurement","measurement"],["messures","measures"],["messuring","measuring"],["messurment","measurement"],["mesure","measure"],["mesured","measured"],["mesurement","measurement"],["mesurements","measurements"],["mesures","measures"],["mesuring","measuring"],["mesurment","measurement"],["meta-attrubute","meta-attribute"],["meta-attrubutes","meta-attributes"],["meta-progamming","meta-programming"],["metacharater","metacharacter"],["metacharaters","metacharacters"],["metalic","metallic"],["metalurgic","metallurgic"],["metalurgical","metallurgical"],["metalurgy","metallurgy"],["metamorphysis","metamorphosis"],["metapackge","metapackage"],["metapackges","metapackages"],["metaphore","metaphor"],["metaphoricial","metaphorical"],["metaprogamming","metaprogramming"],["metatdata","metadata"],["metdata","metadata"],["meterial","material"],["meterials","materials"],["meterologist","meteorologist"],["meterology","meteorology"],["methaphor","metaphor"],["methaphors","metaphors"],["methd","method"],["methdos","methods"],["methds","methods"],["methid","method"],["methids","methods"],["methjod","method"],["methodd","method"],["methode","method"],["methoden","methods"],["methodss","methods"],["methon","method"],["methons","methods"],["methot","method"],["methots","methods"],["metifor","metaphor"],["metifors","metaphors"],["metion","mention"],["metioned","mentioned"],["metiphor","metaphor"],["metiphors","metaphors"],["metod","method"],["metodologies","methodologies"],["metodology","methodology"],["metods","methods"],["metrig","metric"],["metrigal","metrical"],["metrigs","metrics"],["mey","may"],["meybe","maybe"],["mezmorise","mesmerise"],["mezmorised","mesmerised"],["mezmoriser","mesmeriser"],["mezmorises","mesmerises"],["mezmorising","mesmerising"],["mezmorize","mesmerize"],["mezmorized","mesmerized"],["mezmorizer","mesmerizer"],["mezmorizes","mesmerizes"],["mezmorizing","mesmerizing"],["miagic","magic"],["miagical","magical"],["mial","mail"],["mices","mice"],["Michagan","Michigan"],["micorcode","microcode"],["micorcodes","microcodes"],["Micorsoft","Microsoft"],["micoscope","microscope"],["micoscopes","microscopes"],["micoscopic","microscopic"],["micoscopies","microscopies"],["micoscopy","microscopy"],["Micosoft","Microsoft"],["micrcontroller","microcontroller"],["micrcontrollers","microcontrollers"],["microcontroler","microcontroller"],["microcontrolers","microcontrollers"],["Microfost","Microsoft"],["microntroller","microcontroller"],["microntrollers","microcontrollers"],["microoseconds","microseconds"],["micropone","microphone"],["micropones","microphones"],["microprocesspr","microprocessor"],["microprocessprs","microprocessors"],["microseond","microsecond"],["microseonds","microseconds"],["Microsft","Microsoft"],["microship","microchip"],["microships","microchips"],["Microsof","Microsoft"],["Microsofot","Microsoft"],["Micrsft","Microsoft"],["Micrsoft","Microsoft"],["middlware","middleware"],["midevil","medieval"],["midified","modified"],["midpints","midpoints"],["midpiont","midpoint"],["midpionts","midpoints"],["midpont","midpoint"],["midponts","midpoints"],["mige","midge"],["miges","midges"],["migh","might"],["migrateable","migratable"],["migth","might"],["miht","might"],["miinimisation","minimisation"],["miinimise","minimise"],["miinimised","minimised"],["miinimises","minimises"],["miinimising","minimising"],["miinimization","minimization"],["miinimize","minimize"],["miinimized","minimized"],["miinimizes","minimizes"],["miinimizing","minimizing"],["miinimum","minimum"],["mikrosecond","microsecond"],["mikroseconds","microseconds"],["milage","mileage"],["milages","mileages"],["mileau","milieu"],["milennia","millennia"],["milennium","millennium"],["mileu","milieu"],["miliary","military"],["milicious","malicious"],["miliciousally","maliciously"],["miliciously","maliciously"],["milicous","malicious"],["milicousally","maliciously"],["milicously","maliciously"],["miligram","milligram"],["milimeter","millimeter"],["milimeters","millimeters"],["milimetre","millimetre"],["milimetres","millimetres"],["milimiters","millimeters"],["milion","million"],["miliraty","military"],["milisecond","millisecond"],["miliseconds","milliseconds"],["milisecons","milliseconds"],["milivolts","millivolts"],["milktoast","milquetoast"],["milktoasts","milquetoasts"],["milleneum","millennium"],["millenia","millennia"],["millenial","millennial"],["millenialism","millennialism"],["millenials","millennials"],["millenium","millennium"],["millepede","millipede"],["milliescond","millisecond"],["milliesconds","milliseconds"],["millimiter","millimeter"],["millimiters","millimeters"],["millimitre","millimetre"],["millimitres","millimetres"],["millioniare","millionaire"],["millioniares","millionaires"],["millisencond","millisecond"],["millisenconds","milliseconds"],["milliseond","millisecond"],["milliseonds","milliseconds"],["millitant","militant"],["millitary","military"],["millon","million"],["millsecond","millisecond"],["millseconds","milliseconds"],["millsencond","millisecond"],["millsenconds","milliseconds"],["miltary","military"],["miltisite","multisite"],["milyew","milieu"],["mimach","mismatch"],["mimachd","mismatched"],["mimached","mismatched"],["mimaches","mismatches"],["mimaching","mismatching"],["mimatch","mismatch"],["mimatchd","mismatched"],["mimatched","mismatched"],["mimatches","mismatches"],["mimatching","mismatching"],["mimicing","mimicking"],["mimick","mimic"],["mimicks","mimics"],["mimimal","minimal"],["mimimum","minimum"],["mimimun","minimum"],["miminal","minimal"],["miminally","minimally"],["miminaly","minimally"],["miminise","minimise"],["miminised","minimised"],["miminises","minimises"],["miminising","minimising"],["miminize","minimize"],["miminized","minimized"],["miminizes","minimizes"],["miminizing","minimizing"],["mimmick","mimic"],["mimmicked","mimicked"],["mimmicking","mimicking"],["mimmics","mimics"],["minature","miniature"],["minerial","mineral"],["MingGW","MinGW"],["minimam","minimum"],["minimial","minimal"],["minimium","minimum"],["minimsation","minimisation"],["minimse","minimise"],["minimsed","minimised"],["minimses","minimises"],["minimsing","minimising"],["minimumm","minimum"],["minimumn","minimum"],["minimun","minimum"],["minimzation","minimization"],["minimze","minimize"],["minimzed","minimized"],["minimzes","minimizes"],["minimzing","minimizing"],["mininal","minimal"],["mininise","minimise"],["mininised","minimised"],["mininises","minimises"],["mininising","minimising"],["mininize","minimize"],["mininized","minimized"],["mininizes","minimizes"],["mininizing","minimizing"],["mininum","minimum"],["miniscule","minuscule"],["miniscully","minusculely"],["miniture","miniature"],["minium","minimum"],["miniums","minimums"],["miniumum","minimum"],["minmal","minimal"],["minmum","minimum"],["minnimum","minimum"],["minnimums","minimums"],["minsitry","ministry"],["minstries","ministries"],["minstry","ministry"],["minum","minimum"],["minumum","minimum"],["minuscle","minuscule"],["minuts","minutes"],["miplementation","implementation"],["mirconesia","micronesia"],["mircophone","microphone"],["mircophones","microphones"],["mircoscope","microscope"],["mircoscopes","microscopes"],["mircoservice","microservice"],["mircoservices","microservices"],["mircosoft","Microsoft"],["mirgate","migrate"],["mirgated","migrated"],["mirgates","migrates"],["mirometer","micrometer"],["mirometers","micrometers"],["mirored","mirrored"],["miroring","mirroring"],["mirorr","mirror"],["mirorred","mirrored"],["mirorring","mirroring"],["mirorrs","mirrors"],["mirro","mirror"],["mirroed","mirrored"],["mirrorn","mirror"],["mirrorred","mirrored"],["mis-alignement","misalignment"],["mis-alignment","misalignment"],["mis-intepret","mis-interpret"],["mis-intepreted","mis-interpreted"],["mis-match","mismatch"],["misalignement","misalignment"],["misalinged","misaligned"],["misbehaive","misbehave"],["miscallenous","miscellaneous"],["misceancellous","miscellaneous"],["miscelaneous","miscellaneous"],["miscellanious","miscellaneous"],["miscellanous","miscellaneous"],["miscelleneous","miscellaneous"],["mischeivous","mischievous"],["mischevious","mischievous"],["mischevus","mischievous"],["mischevusly","mischievously"],["mischieveous","mischievous"],["mischieveously","mischievously"],["mischievious","mischievous"],["misconfiged","misconfigured"],["Miscrosoft","Microsoft"],["misdameanor","misdemeanor"],["misdameanors","misdemeanors"],["misdemenor","misdemeanor"],["misdemenors","misdemeanors"],["miselaneous","miscellaneous"],["miselaneously","miscellaneously"],["misellaneous","miscellaneous"],["misellaneously","miscellaneously"],["misformed","malformed"],["misfourtunes","misfortunes"],["misile","missile"],["mising","missing"],["misintepret","misinterpret"],["misintepreted","misinterpreted"],["misinterpert","misinterpret"],["misinterperted","misinterpreted"],["misinterperting","misinterpreting"],["misinterperts","misinterprets"],["misinterprett","misinterpret"],["misinterpretted","misinterpreted"],["misisng","missing"],["mismach","mismatch"],["mismached","mismatched"],["mismaches","mismatches"],["mismaching","mismatching"],["mismactch","mismatch"],["mismatchd","mismatched"],["mismatich","mismatch"],["Misouri","Missouri"],["mispell","misspell"],["mispelled","misspelled"],["mispelling","misspelling"],["mispellings","misspellings"],["mispelt","misspelt"],["mispronounciation","mispronunciation"],["misquito","mosquito"],["misquitos","mosquitos"],["missable","miscible"],["missconfiguration","misconfiguration"],["missconfigure","misconfigure"],["missconfigured","misconfigured"],["missconfigures","misconfigures"],["missconfiguring","misconfiguring"],["misscounted","miscounted"],["missen","mizzen"],["missign","missing"],["missingassignement","missingassignment"],["missings","missing"],["Missisipi","Mississippi"],["Missisippi","Mississippi"],["missle","missile"],["missleading","misleading"],["missletow","mistletoe"],["missmanaged","mismanaged"],["missmatch","mismatch"],["missmatchd","mismatched"],["missmatched","mismatched"],["missmatches","mismatches"],["missmatching","mismatching"],["missonary","missionary"],["misspel","misspell"],["misssing","missing"],["misstake","mistake"],["misstaken","mistaken"],["misstakes","mistakes"],["misstype","mistype"],["misstypes","mistypes"],["missunderstood","misunderstood"],["missuse","misuse"],["missused","misused"],["missusing","misusing"],["mistatch","mismatch"],["mistatchd","mismatched"],["mistatched","mismatched"],["mistatches","mismatches"],["mistatching","mismatching"],["misteek","mystique"],["misteeks","mystiques"],["misterious","mysterious"],["mistery","mystery"],["misteryous","mysterious"],["mistic","mystic"],["mistical","mystical"],["mistics","mystics"],["mistmatch","mismatch"],["mistmatched","mismatched"],["mistmatches","mismatches"],["mistmatching","mismatching"],["mistro","maestro"],["mistros","maestros"],["mistrow","maestro"],["mistrows","maestros"],["misue","misuse"],["misued","misused"],["misuing","misusing"],["miticate","mitigate"],["miticated","mitigated"],["miticateing","mitigating"],["miticates","mitigates"],["miticating","mitigating"],["miticator","mitigator"],["mittigate","mitigate"],["miximum","maximum"],["mixted","mixed"],["mixure","mixture"],["mjor","major"],["mkae","make"],["mkaes","makes"],["mkaing","making"],["mke","make"],["mkea","make"],["mmaped","mapped"],["mmatching","matching"],["mmbers","members"],["mmnemonic","mnemonic"],["mnay","many"],["mobify","modify"],["mocrochip","microchip"],["mocrochips","microchips"],["mocrocode","microcode"],["mocrocodes","microcodes"],["mocrocontroller","microcontroller"],["mocrocontrollers","microcontrollers"],["mocrophone","microphone"],["mocrophones","microphones"],["mocroprocessor","microprocessor"],["mocroprocessors","microprocessors"],["mocrosecond","microsecond"],["mocroseconds","microseconds"],["Mocrosoft","Microsoft"],["mocule","module"],["mocules","modules"],["moddel","model"],["moddeled","modeled"],["moddelled","modelled"],["moddels","models"],["modee","mode"],["modelinng","modeling"],["modell","model"],["modellinng","modelling"],["modernination","modernization"],["moderninations","modernizations"],["moderninationz","modernizations"],["modernizationz","modernizations"],["modesettting","modesetting"],["modeul","module"],["modeuls","modules"],["modfel","model"],["modfiable","modifiable"],["modfication","modification"],["modfications","modifications"],["modfide","modified"],["modfided","modified"],["modfider","modifier"],["modfiders","modifiers"],["modfides","modifies"],["modfied","modified"],["modfieid","modified"],["modfieir","modifier"],["modfieirs","modifiers"],["modfieis","modifies"],["modfier","modifier"],["modfiers","modifiers"],["modfies","modifies"],["modfifiable","modifiable"],["modfification","modification"],["modfifications","modifications"],["modfified","modified"],["modfifier","modifier"],["modfifiers","modifiers"],["modfifies","modifies"],["modfify","modify"],["modfifying","modifying"],["modfiiable","modifiable"],["modfiication","modification"],["modfiications","modifications"],["modfitied","modified"],["modfitier","modifier"],["modfitiers","modifiers"],["modfities","modifies"],["modfity","modify"],["modfitying","modifying"],["modfiy","modify"],["modfiying","modifying"],["modfy","modify"],["modfying","modifying"],["modications","modifications"],["modidfication","modification"],["modidfications","modifications"],["modidfied","modified"],["modidfier","modifier"],["modidfiers","modifiers"],["modidfies","modifies"],["modidfy","modify"],["modidfying","modifying"],["modifable","modifiable"],["modifaction","modification"],["modifactions","modifications"],["modifation","modification"],["modifations","modifications"],["modifcation","modification"],["modifcations","modifications"],["modifciation","modification"],["modifciations","modifications"],["modifcication","modification"],["modifcications","modifications"],["modifdied","modified"],["modifdy","modify"],["modifed","modified"],["modifer","modifier"],["modifers","modifiers"],["modifes","modifies"],["modiffer","modifier"],["modiffers","modifiers"],["modifiation","modification"],["modifiations","modifications"],["modificatioon","modification"],["modificatioons","modifications"],["modificaton","modification"],["modificatons","modifications"],["modifid","modified"],["modifified","modified"],["modifify","modify"],["modifing","modifying"],["modifires","modifiers"],["modifiy","modify"],["modifiying","modifying"],["modifiyng","modifying"],["modifled","modified"],["modifler","modifier"],["modiflers","modifiers"],["modift","modify"],["modifty","modify"],["modifu","modify"],["modifuable","modifiable"],["modifued","modified"],["modifx","modify"],["modifyable","modifiable"],["modiration","moderation"],["modle","model"],["modlue","module"],["modprobbing","modprobing"],["modprobeing","modprobing"],["modtified","modified"],["modue","module"],["moduel","module"],["moduels","modules"],["moduile","module"],["modukles","modules"],["modul","module"],["modules's","modules'"],["moduless","modules"],["modulie","module"],["modulu","modulo"],["modulues","modules"],["modyfy","modify"],["moent","moment"],["moeny","money"],["mofdified","modified"],["mofification","modification"],["mofified","modified"],["mofifies","modifies"],["mofify","modify"],["mohammedan","muslim"],["mohammedans","muslims"],["moint","mount"],["mointor","monitor"],["mointored","monitored"],["mointoring","monitoring"],["mointors","monitors"],["moleclues","molecules"],["momement","moment"],["momementarily","momentarily"],["momements","moments"],["momemtarily","momentarily"],["momemtary","momentary"],["momemtn","moment"],["momentarely","momentarily"],["momento","memento"],["momery","memory"],["momoent","moment"],["momoment","moment"],["momomentarily","momentarily"],["momoments","moments"],["momory","memory"],["monarkey","monarchy"],["monarkeys","monarchies"],["monarkies","monarchies"],["monestaries","monasteries"],["monestic","monastic"],["monickers","monikers"],["monitary","monetary"],["moniter","monitor"],["monitoing","monitoring"],["monkies","monkeys"],["monochorome","monochrome"],["monochromo","monochrome"],["monocrome","monochrome"],["monolite","monolithic"],["monontonicity","monotonicity"],["monopace","monospace"],["monotir","monitor"],["monotired","monitored"],["monotiring","monitoring"],["monotirs","monitors"],["monsday","Monday"],["Monserrat","Montserrat"],["monstrum","monster"],["montains","mountains"],["montaj","montage"],["montajes","montages"],["montanous","mountainous"],["monthe","month"],["monthes","months"],["montly","monthly"],["Montnana","Montana"],["monts","months"],["montypic","monotypic"],["moodify","modify"],["moounting","mounting"],["mopdule","module"],["mopre","more"],["mor","more"],["mordern","modern"],["morever","moreover"],["morg","morgue"],["morgage","mortgage"],["morges","morgues"],["morgs","morgues"],["morisette","morissette"],["mormalise","normalise"],["mormalised","normalised"],["mormalises","normalises"],["mormalize","normalize"],["mormalized","normalized"],["mormalizes","normalizes"],["morrisette","morissette"],["morroccan","moroccan"],["morrocco","morocco"],["morroco","morocco"],["mortage","mortgage"],["morter","mortar"],["moslty","mostly"],["mostlky","mostly"],["mosture","moisture"],["mosty","mostly"],["moteef","motif"],["moteefs","motifs"],["moteur","motor"],["moteured","motored"],["moteuring","motoring"],["moteurs","motors"],["mothing","nothing"],["motiviated","motivated"],["motiviation","motivation"],["motononic","monotonic"],["motoroloa","motorola"],["moudle","module"],["moudule","module"],["mountian","mountain"],["mountpiont","mountpoint"],["mountpionts","mountpoints"],["mouspointer","mousepointer"],["moutn","mount"],["moutned","mounted"],["moutning","mounting"],["moutnpoint","mountpoint"],["moutnpoints","mountpoints"],["moutns","mounts"],["mouvement","movement"],["mouvements","movements"],["movebackwrd","movebackward"],["moveble","movable"],["movemement","movement"],["movemements","movements"],["movememnt","movement"],["movememnts","movements"],["movememt","movement"],["movememts","movements"],["movemet","movement"],["movemets","movements"],["movemment","movement"],["movemments","movements"],["movemnet","movement"],["movemnets","movements"],["movemnt","movement"],["movemnts","movements"],["movment","movement"],["moziila","Mozilla"],["mozila","Mozilla"],["mozzilla","mozilla"],["mroe","more"],["msbild","MSBuild"],["msbilds","MSBuild's"],["msbuid","MSBuild"],["msbuids","MSBuild's"],["msbuld","MSBuild"],["msbulds","MSBuild's"],["msbulid","MSBuild"],["msbulids","MSBuild's"],["mssing","missing"],["msssge","message"],["mthod","method"],["mtuually","mutually"],["mucuous","mucous"],["muder","murder"],["mudering","murdering"],["mudule","module"],["mudules","modules"],["muext","mutex"],["muiltiple","multiple"],["muiltiples","multiples"],["muliple","multiple"],["muliples","multiples"],["mulithread","multithread"],["mulitiplier","multiplier"],["mulitipliers","multipliers"],["mulitpart","multipart"],["mulitpath","multipath"],["mulitple","multiple"],["mulitplication","multiplication"],["mulitplicative","multiplicative"],["mulitplied","multiplied"],["mulitplier","multiplier"],["mulitpliers","multipliers"],["mulitply","multiply"],["multi-dimenional","multi-dimensional"],["multi-dimenionsal","multi-dimensional"],["multi-langual","multi-lingual"],["multi-presistion","multi-precision"],["multi-threded","multi-threaded"],["multible","multiple"],["multibye","multibyte"],["multicat","multicast"],["multicultralism","multiculturalism"],["multidimenional","multi-dimensional"],["multidimenionsal","multi-dimensional"],["multidimensinal","multidimensional"],["multidimension","multidimensional"],["multidimensionnal","multidimensional"],["multidimentionnal","multidimensional"],["multiecast","multicast"],["multifuction","multifunction"],["multilangual","multilingual"],["multile","multiple"],["multilpe","multiple"],["multipe","multiple"],["multipes","multiples"],["multipiler","multiplier"],["multipilers","multipliers"],["multipled","multiplied"],["multiplers","multipliers"],["multipliciaton","multiplication"],["multiplicites","multiplicities"],["multiplicty","multiplicity"],["multiplikation","multiplication"],["multipling","multiplying"],["multipllication","multiplication"],["multiplyed","multiplied"],["multipresistion","multiprecision"],["multipul","multiple"],["multipy","multiply"],["multipyling","multiplying"],["multithreded","multithreaded"],["multitute","multitude"],["multivriate","multivariate"],["multixsite","multisite"],["multline","multiline"],["multliple","multiple"],["multliples","multiples"],["multliplied","multiplied"],["multliplier","multiplier"],["multlipliers","multipliers"],["multliplies","multiplies"],["multliply","multiply"],["multliplying","multiplying"],["multple","multiple"],["multples","multiples"],["multplied","multiplied"],["multplier","multiplier"],["multpliers","multipliers"],["multplies","multiplies"],["multply","multiply"],["multplying","multiplying"],["multy","multi"],["multy-thread","multithread"],["mumber","number"],["mumbers","numbers"],["munbers","numbers"],["muncipalities","municipalities"],["muncipality","municipality"],["municiple","municipal"],["munnicipality","municipality"],["munute","minute"],["murr","myrrh"],["muscial","musical"],["muscician","musician"],["muscicians","musicians"],["musn't","mustn't"],["must't","mustn't"],["mustator","mutator"],["muste","must"],["mutablity","mutability"],["mutbale","mutable"],["mutch","much"],["mutches","matches"],["mutecies","mutexes"],["mutexs","mutexes"],["muti","multi"],["muticast","multicast"],["mutices","mutexes"],["mutilcast","multicast"],["mutiliated","mutilated"],["mutimarked","multimarked"],["mutipath","multipath"],["mutiple","multiple"],["mutiply","multiply"],["mutli","multi"],["mutli-threaded","multi-threaded"],["mutlipart","multipart"],["mutliple","multiple"],["mutliples","multiples"],["mutliplication","multiplication"],["mutliplicites","multiplicities"],["mutliplier","multiplier"],["mutlipliers","multipliers"],["mutliply","multiply"],["mutully","mutually"],["mutux","mutex"],["mutuxes","mutexes"],["mutuxs","mutexes"],["muyst","must"],["myabe","maybe"],["mybe","maybe"],["myitereator","myiterator"],["myraid","myriad"],["mysef","myself"],["mysefl","myself"],["mysekf","myself"],["myselfe","myself"],["myselfes","myself"],["myselv","myself"],["myselve","myself"],["myselves","myself"],["myslef","myself"],["mysogynist","misogynist"],["mysogyny","misogyny"],["mysterous","mysterious"],["mystql","mysql"],["mystrow","maestro"],["mystrows","maestros"],["Mythraic","Mithraic"],["myu","my"],["nadly","badly"],["nagative","negative"],["nagatively","negatively"],["nagatives","negatives"],["nagivation","navigation"],["naieve","naive"],["nam","name"],["namaed","named"],["namaes","names"],["nameing","naming"],["namemespace","namespace"],["namepace","namespace"],["namepsace","namespace"],["namepsaces","namespaces"],["namesapce","namespace"],["namesapced","namespaced"],["namesapces","namespaces"],["namess","names"],["namesspaces","namespaces"],["namme","name"],["namne","name"],["namned","named"],["namnes","names"],["namnespace","namespace"],["namnespaces","namespaces"],["nams","names"],["nane","name"],["nanosencond","nanosecond"],["nanosenconds","nanoseconds"],["nanoseond","nanosecond"],["nanoseonds","nanoseconds"],["Naploeon","Napoleon"],["Napolean","Napoleon"],["Napoleonian","Napoleonic"],["nasted","nested"],["nasting","nesting"],["nastly","nasty"],["nastyness","nastiness"],["natched","matched"],["natches","matches"],["nativelyx","natively"],["natrual","natural"],["naturaly","naturally"],["naturely","naturally"],["naturual","natural"],["naturually","naturally"],["natvigation","navigation"],["navagate","navigate"],["navagating","navigating"],["navagation","navigation"],["navagitation","navigation"],["naviagte","navigate"],["naviagted","navigated"],["naviagtes","navigates"],["naviagting","navigating"],["naviagtion","navigation"],["navitvely","natively"],["navtive","native"],["navtives","natives"],["naxima","maxima"],["naximal","maximal"],["naximum","maximum"],["Nazereth","Nazareth"],["nclude","include"],["ndoe","node"],["ndoes","nodes"],["neady","needy"],["neagtive","negative"],["neares","nearest"],["nearset","nearest"],["necassery","necessary"],["necassry","necessary"],["necause","because"],["neccecarily","necessarily"],["neccecary","necessary"],["neccesarily","necessarily"],["neccesary","necessary"],["neccessarily","necessarily"],["neccessarry","necessary"],["neccessary","necessary"],["neccessities","necessities"],["neccessity","necessity"],["neccisary","necessary"],["neccsessary","necessary"],["necesarily","necessarily"],["necesarrily","necessarily"],["necesarry","necessary"],["necesary","necessary"],["necessaery","necessary"],["necessairly","necessarily"],["necessar","necessary"],["necessarilly","necessarily"],["necessarly","necessarily"],["necessarry","necessary"],["necessaryly","necessarily"],["necessay","necessary"],["necesserily","necessarily"],["necessery","necessary"],["necessesary","necessary"],["necessiate","necessitate"],["nechanism","mechanism"],["necssary","necessary"],["nedd","need"],["nedded","needed"],["neded","needed"],["nedia","media"],["nedium","medium"],["nediums","mediums"],["nedle","needle"],["neds","needs"],["needeed","needed"],["neeed","need"],["neeeded","needed"],["neeeding","needing"],["neeedle","needle"],["neeedn't","needn't"],["neeeds","needs"],["nees","needs"],["neesd","needs"],["neesds","needs"],["neested","nested"],["neesting","nesting"],["negaive","negative"],["negarive","negative"],["negatiotiable","negotiable"],["negatiotiate","negotiate"],["negatiotiated","negotiated"],["negatiotiates","negotiates"],["negatiotiating","negotiating"],["negatiotiation","negotiation"],["negatiotiations","negotiations"],["negatiotiator","negotiator"],["negatiotiators","negotiators"],["negativ","negative"],["negatve","negative"],["negible","negligible"],["negitiable","negotiable"],["negitiate","negotiate"],["negitiated","negotiated"],["negitiates","negotiates"],["negitiating","negotiating"],["negitiation","negotiation"],["negitiations","negotiations"],["negitiator","negotiator"],["negitiators","negotiators"],["negitive","negative"],["neglible","negligible"],["negligable","negligible"],["negligble","negligible"],["negoable","negotiable"],["negoate","negotiate"],["negoated","negotiated"],["negoates","negotiates"],["negoatiable","negotiable"],["negoatiate","negotiate"],["negoatiated","negotiated"],["negoatiates","negotiates"],["negoatiating","negotiating"],["negoatiation","negotiation"],["negoatiations","negotiations"],["negoatiator","negotiator"],["negoatiators","negotiators"],["negoating","negotiating"],["negoation","negotiation"],["negoations","negotiations"],["negoator","negotiator"],["negoators","negotiators"],["negociable","negotiable"],["negociate","negotiate"],["negociated","negotiated"],["negociates","negotiates"],["negociating","negotiating"],["negociation","negotiation"],["negociations","negotiations"],["negociator","negotiator"],["negociators","negotiators"],["negogtiable","negotiable"],["negogtiate","negotiate"],["negogtiated","negotiated"],["negogtiates","negotiates"],["negogtiating","negotiating"],["negogtiation","negotiation"],["negogtiations","negotiations"],["negogtiator","negotiator"],["negogtiators","negotiators"],["negoitable","negotiable"],["negoitate","negotiate"],["negoitated","negotiated"],["negoitates","negotiates"],["negoitating","negotiating"],["negoitation","negotiation"],["negoitations","negotiations"],["negoitator","negotiator"],["negoitators","negotiators"],["negoptionsotiable","negotiable"],["negoptionsotiate","negotiate"],["negoptionsotiated","negotiated"],["negoptionsotiates","negotiates"],["negoptionsotiating","negotiating"],["negoptionsotiation","negotiation"],["negoptionsotiations","negotiations"],["negoptionsotiator","negotiator"],["negoptionsotiators","negotiators"],["negosiable","negotiable"],["negosiate","negotiate"],["negosiated","negotiated"],["negosiates","negotiates"],["negosiating","negotiating"],["negosiation","negotiation"],["negosiations","negotiations"],["negosiator","negotiator"],["negosiators","negotiators"],["negotable","negotiable"],["negotaiable","negotiable"],["negotaiate","negotiate"],["negotaiated","negotiated"],["negotaiates","negotiates"],["negotaiating","negotiating"],["negotaiation","negotiation"],["negotaiations","negotiations"],["negotaiator","negotiator"],["negotaiators","negotiators"],["negotaible","negotiable"],["negotaite","negotiate"],["negotaited","negotiated"],["negotaites","negotiates"],["negotaiting","negotiating"],["negotaition","negotiation"],["negotaitions","negotiations"],["negotaitor","negotiator"],["negotaitors","negotiators"],["negotate","negotiate"],["negotated","negotiated"],["negotates","negotiates"],["negotatiable","negotiable"],["negotatiate","negotiate"],["negotatiated","negotiated"],["negotatiates","negotiates"],["negotatiating","negotiating"],["negotatiation","negotiation"],["negotatiations","negotiations"],["negotatiator","negotiator"],["negotatiators","negotiators"],["negotatible","negotiable"],["negotatie","negotiate"],["negotatied","negotiated"],["negotaties","negotiates"],["negotating","negotiating"],["negotation","negotiation"],["negotations","negotiations"],["negotatior","negotiator"],["negotatiors","negotiators"],["negotator","negotiator"],["negotators","negotiators"],["negothiable","negotiable"],["negothiate","negotiate"],["negothiated","negotiated"],["negothiates","negotiates"],["negothiating","negotiating"],["negothiation","negotiation"],["negothiations","negotiations"],["negothiator","negotiator"],["negothiators","negotiators"],["negotible","negotiable"],["negoticable","negotiable"],["negoticate","negotiate"],["negoticated","negotiated"],["negoticates","negotiates"],["negoticating","negotiating"],["negotication","negotiation"],["negotications","negotiations"],["negoticator","negotiator"],["negoticators","negotiators"],["negotinate","negotiate"],["negotioable","negotiable"],["negotioate","negotiate"],["negotioated","negotiated"],["negotioates","negotiates"],["negotioating","negotiating"],["negotioation","negotiation"],["negotioations","negotiations"],["negotioator","negotiator"],["negotioators","negotiators"],["negotioble","negotiable"],["negotion","negotiation"],["negotionable","negotiable"],["negotionate","negotiate"],["negotionated","negotiated"],["negotionates","negotiates"],["negotionating","negotiating"],["negotionation","negotiation"],["negotionations","negotiations"],["negotionator","negotiator"],["negotionators","negotiators"],["negotions","negotiations"],["negotiotable","negotiable"],["negotiotate","negotiate"],["negotiotated","negotiated"],["negotiotates","negotiates"],["negotiotating","negotiating"],["negotiotation","negotiation"],["negotiotations","negotiations"],["negotiotator","negotiator"],["negotiotators","negotiators"],["negotiote","negotiate"],["negotioted","negotiated"],["negotiotes","negotiates"],["negotioting","negotiating"],["negotiotion","negotiation"],["negotiotions","negotiations"],["negotiotor","negotiator"],["negotiotors","negotiators"],["negotitable","negotiable"],["negotitae","negotiate"],["negotitaed","negotiated"],["negotitaes","negotiates"],["negotitaing","negotiating"],["negotitaion","negotiation"],["negotitaions","negotiations"],["negotitaor","negotiator"],["negotitaors","negotiators"],["negotitate","negotiate"],["negotitated","negotiated"],["negotitates","negotiates"],["negotitating","negotiating"],["negotitation","negotiation"],["negotitations","negotiations"],["negotitator","negotiator"],["negotitators","negotiators"],["negotite","negotiate"],["negotited","negotiated"],["negotites","negotiates"],["negotiting","negotiating"],["negotition","negotiation"],["negotitions","negotiations"],["negotitor","negotiator"],["negotitors","negotiators"],["negoziable","negotiable"],["negoziate","negotiate"],["negoziated","negotiated"],["negoziates","negotiates"],["negoziating","negotiating"],["negoziation","negotiation"],["negoziations","negotiations"],["negoziator","negotiator"],["negoziators","negotiators"],["negtive","negative"],["neibhbors","neighbors"],["neibhbours","neighbours"],["neibor","neighbor"],["neiborhood","neighborhood"],["neiborhoods","neighborhoods"],["neibors","neighbors"],["neigbhor","neighbor"],["neigbhorhood","neighborhood"],["neigbhorhoods","neighborhoods"],["neigbhors","neighbors"],["neigbhour","neighbour"],["neigbhours","neighbours"],["neigbor","neighbor"],["neigborhood","neighborhood"],["neigboring","neighboring"],["neigbors","neighbors"],["neigbourhood","neighbourhood"],["neighbar","neighbor"],["neighbarhood","neighborhood"],["neighbarhoods","neighborhoods"],["neighbaring","neighboring"],["neighbars","neighbors"],["neighbbor","neighbor"],["neighbborhood","neighborhood"],["neighbborhoods","neighborhoods"],["neighbboring","neighboring"],["neighbbors","neighbors"],["neighbeard","neighborhood"],["neighbeards","neighborhoods"],["neighbehood","neighborhood"],["neighbehoods","neighborhoods"],["neighbeing","neighboring"],["neighbeod","neighborhood"],["neighbeods","neighborhoods"],["neighbeor","neighbor"],["neighbeordhood","neighborhood"],["neighbeordhoods","neighborhoods"],["neighbeorhod","neighborhood"],["neighbeorhods","neighborhoods"],["neighbeorhood","neighborhood"],["neighbeorhoods","neighborhoods"],["neighbeors","neighbors"],["neighber","neighbor"],["neighbergh","neighbor"],["neighberghs","neighbors"],["neighberhhod","neighborhood"],["neighberhhods","neighborhoods"],["neighberhhood","neighborhood"],["neighberhhoods","neighborhoods"],["neighberhing","neighboring"],["neighberhod","neighborhood"],["neighberhodd","neighborhood"],["neighberhodds","neighborhoods"],["neighberhods","neighborhoods"],["neighberhood","neighborhood"],["neighberhooding","neighboring"],["neighberhoods","neighborhoods"],["neighberhoof","neighborhood"],["neighberhoofs","neighborhoods"],["neighberhoood","neighborhood"],["neighberhooods","neighborhoods"],["neighberhoor","neighbor"],["neighberhoors","neighbors"],["neighberhoud","neighborhood"],["neighberhouds","neighborhoods"],["neighbering","neighboring"],["neighbers","neighbors"],["neighbes","neighbors"],["neighbet","neighbor"],["neighbethood","neighborhood"],["neighbethoods","neighborhoods"],["neighbets","neighbors"],["neighbeuing","neighbouring"],["neighbeurgh","neighbour"],["neighbeurghs","neighbours"],["neighbeurhing","neighbouring"],["neighbeurhooding","neighbouring"],["neighbeurhoor","neighbour"],["neighbeurhoors","neighbours"],["neighbeus","neighbours"],["neighbeut","neighbour"],["neighbeuthood","neighbourhood"],["neighbeuthoods","neighbourhoods"],["neighbeuts","neighbours"],["neighbhor","neighbor"],["neighbhorhood","neighborhood"],["neighbhorhoods","neighborhoods"],["neighbhoring","neighboring"],["neighbhors","neighbors"],["neighboard","neighborhood"],["neighboards","neighborhoods"],["neighbohood","neighborhood"],["neighbohoods","neighborhoods"],["neighboing","neighboring"],["neighbood","neighborhood"],["neighboods","neighborhoods"],["neighboordhood","neighborhood"],["neighboordhoods","neighborhoods"],["neighboorhod","neighborhood"],["neighboorhods","neighborhoods"],["neighboorhood","neighborhood"],["neighboorhoods","neighborhoods"],["neighbooring","neighboring"],["neighborgh","neighbor"],["neighborghs","neighbors"],["neighborhhod","neighborhood"],["neighborhhods","neighborhoods"],["neighborhhood","neighborhood"],["neighborhhoods","neighborhoods"],["neighborhing","neighboring"],["neighborhod","neighborhood"],["neighborhodd","neighborhood"],["neighborhodds","neighborhoods"],["neighborhods","neighborhoods"],["neighborhooding","neighboring"],["neighborhoof","neighborhood"],["neighborhoofs","neighborhoods"],["neighborhoood","neighborhood"],["neighborhooods","neighborhoods"],["neighborhoor","neighbor"],["neighborhoors","neighbors"],["neighborhoud","neighborhood"],["neighborhouds","neighborhoods"],["neighbos","neighbors"],["neighbot","neighbor"],["neighbothood","neighborhood"],["neighbothoods","neighborhoods"],["neighbots","neighbors"],["neighbouing","neighbouring"],["neighbourgh","neighbour"],["neighbourghs","neighbours"],["neighbourhhod","neighbourhood"],["neighbourhhods","neighbourhoods"],["neighbourhhood","neighbourhood"],["neighbourhhoods","neighbourhoods"],["neighbourhing","neighbouring"],["neighbourhod","neighbourhood"],["neighbourhodd","neighbourhood"],["neighbourhodds","neighbourhoods"],["neighbourhods","neighbourhoods"],["neighbourhooding","neighbouring"],["neighbourhoof","neighbourhood"],["neighbourhoofs","neighbourhoods"],["neighbourhoood","neighbourhood"],["neighbourhooods","neighbourhoods"],["neighbourhoor","neighbour"],["neighbourhoors","neighbours"],["neighbourhoud","neighbourhood"],["neighbourhouds","neighbourhoods"],["neighbous","neighbours"],["neighbout","neighbour"],["neighbouthood","neighbourhood"],["neighbouthoods","neighbourhoods"],["neighbouts","neighbours"],["neighbr","neighbor"],["neighbrs","neighbors"],["neighbur","neighbor"],["neighburhood","neighborhood"],["neighburhoods","neighborhoods"],["neighburing","neighboring"],["neighburs","neighbors"],["neigher","neither"],["neighobr","neighbor"],["neighobrhood","neighborhood"],["neighobrhoods","neighborhoods"],["neighobring","neighboring"],["neighobrs","neighbors"],["neighor","neighbor"],["neighorhood","neighborhood"],["neighorhoods","neighborhoods"],["neighoring","neighboring"],["neighors","neighbors"],["neighour","neighbour"],["neighourhood","neighbourhood"],["neighourhoods","neighbourhoods"],["neighouring","neighbouring"],["neighours","neighbours"],["neighror","neighbour"],["neighrorhood","neighbourhood"],["neighrorhoods","neighbourhoods"],["neighroring","neighbouring"],["neighrors","neighbours"],["neighrour","neighbour"],["neighrourhood","neighbourhood"],["neighrourhoods","neighbourhoods"],["neighrouring","neighbouring"],["neighrours","neighbours"],["neight","neither"],["neightbor","neighbor"],["neightborhood","neighborhood"],["neightborhoods","neighborhoods"],["neightboring","neighboring"],["neightbors","neighbors"],["neightbour","neighbour"],["neightbourhood","neighbourhood"],["neightbourhoods","neighbourhoods"],["neightbouring","neighbouring"],["neightbours","neighbours"],["neighter","neither"],["neightobr","neighbor"],["neightobrhood","neighborhood"],["neightobrhoods","neighborhoods"],["neightobring","neighboring"],["neightobrs","neighbors"],["neiter","neither"],["nelink","netlink"],["nenviroment","environment"],["neolitic","neolithic"],["nerver","never"],["nescesaries","necessaries"],["nescesarily","necessarily"],["nescesarrily","necessarily"],["nescesarry","necessary"],["nescessarily","necessarily"],["nescessary","necessary"],["nesesarily","necessarily"],["nessary","necessary"],["nessasarily","necessarily"],["nessasary","necessary"],["nessecarilt","necessarily"],["nessecarily","necessarily"],["nessecarry","necessary"],["nessecary","necessary"],["nesseccarily","necessarily"],["nesseccary","necessary"],["nessesarily","necessarily"],["nessesary","necessary"],["nessessarily","necessarily"],["nessessary","necessary"],["nestin","nesting"],["nestwork","network"],["netacpe","netscape"],["netcape","netscape"],["nethods","methods"],["netiher","neither"],["netowrk","network"],["netowrks","networks"],["netscpe","netscape"],["netwplit","netsplit"],["netwrok","network"],["netwroked","networked"],["netwroks","networks"],["netwrork","network"],["neumeric","numeric"],["nevelope","envelope"],["nevelopes","envelopes"],["nevere","never"],["neveretheless","nevertheless"],["nevers","never"],["neverthless","nevertheless"],["newine","newline"],["newines","newlines"],["newletters","newsletters"],["nework","network"],["neworks","networks"],["newslines","newlines"],["newthon","newton"],["newtork","network"],["Newyorker","New Yorker"],["niear","near"],["niearest","nearest"],["niether","neither"],["nighbor","neighbor"],["nighborhood","neighborhood"],["nighboring","neighboring"],["nighlties","nightlies"],["nighlty","nightly"],["nightfa;;","nightfall"],["nightime","nighttime"],["nimutes","minutes"],["nineth","ninth"],["ninima","minima"],["ninimal","minimal"],["ninimum","minimum"],["ninjs","ninja"],["ninteenth","nineteenth"],["nither","neither"],["nknown","unknown"],["nkow","know"],["nkwo","know"],["nmae","name"],["nned","need"],["nneeded","needed"],["nnumber","number"],["no-overide","no-override"],["nodels","models"],["nodess","nodes"],["nodulated","modulated"],["nofified","notified"],["nofity","notify"],["nohypen","nohyphen"],["nomber","number"],["nombered","numbered"],["nombering","numbering"],["nombers","numbers"],["nomimal","nominal"],["non-alphanumunder","non-alphanumeric"],["non-asii","non-ascii"],["non-assiged","non-assigned"],["non-bloking","non-blocking"],["non-compleeted","non-completed"],["non-complient","non-compliant"],["non-corelated","non-correlated"],["non-existant","non-existent"],["non-exluded","non-excluded"],["non-indentended","non-indented"],["non-inmediate","non-immediate"],["non-inreractive","non-interactive"],["non-instnat","non-instant"],["non-meausure","non-measure"],["non-negatiotiable","non-negotiable"],["non-negatiotiated","non-negotiated"],["non-negativ","non-negative"],["non-negoable","non-negotiable"],["non-negoated","non-negotiated"],["non-negoatiable","non-negotiable"],["non-negoatiated","non-negotiated"],["non-negociable","non-negotiable"],["non-negociated","non-negotiated"],["non-negogtiable","non-negotiable"],["non-negogtiated","non-negotiated"],["non-negoitable","non-negotiable"],["non-negoitated","non-negotiated"],["non-negoptionsotiable","non-negotiable"],["non-negoptionsotiated","non-negotiated"],["non-negosiable","non-negotiable"],["non-negosiated","non-negotiated"],["non-negotable","non-negotiable"],["non-negotaiable","non-negotiable"],["non-negotaiated","non-negotiated"],["non-negotaible","non-negotiable"],["non-negotaited","non-negotiated"],["non-negotated","non-negotiated"],["non-negotatiable","non-negotiable"],["non-negotatiated","non-negotiated"],["non-negotatible","non-negotiable"],["non-negotatied","non-negotiated"],["non-negothiable","non-negotiable"],["non-negothiated","non-negotiated"],["non-negotible","non-negotiable"],["non-negoticable","non-negotiable"],["non-negoticated","non-negotiated"],["non-negotioable","non-negotiable"],["non-negotioated","non-negotiated"],["non-negotioble","non-negotiable"],["non-negotionable","non-negotiable"],["non-negotionated","non-negotiated"],["non-negotiotable","non-negotiable"],["non-negotiotated","non-negotiated"],["non-negotiote","non-negotiated"],["non-negotitable","non-negotiable"],["non-negotitaed","non-negotiated"],["non-negotitated","non-negotiated"],["non-negotited","non-negotiated"],["non-negoziable","non-negotiable"],["non-negoziated","non-negotiated"],["non-priviliged","non-privileged"],["non-referenced-counted","non-reference-counted"],["non-replacable","non-replaceable"],["non-replacalbe","non-replaceable"],["non-reproducable","non-reproducible"],["non-seperable","non-separable"],["non-trasparent","non-transparent"],["non-useful","useless"],["non-usefull","useless"],["non-virutal","non-virtual"],["nonbloking","non-blocking"],["noncombatents","noncombatants"],["noncontigous","non-contiguous"],["nonesense","nonsense"],["nonesensical","nonsensical"],["nonexistance","nonexistence"],["nonexistant","nonexistent"],["nonnegarive","nonnegative"],["nonneighboring","non-neighboring"],["nonsence","nonsense"],["nonsens","nonsense"],["nonseperable","non-separable"],["nonte","note"],["nontheless","nonetheless"],["noo","no"],["noone","no one"],["noralize","normalize"],["noralized","normalized"],["noramal","normal"],["noramalise","normalise"],["noramalised","normalised"],["noramalises","normalises"],["noramalising","normalising"],["noramalize","normalize"],["noramalized","normalized"],["noramalizes","normalizes"],["noramalizing","normalizing"],["noramals","normals"],["noraml","normal"],["norhern","northern"],["norifications","notifications"],["normailzation","normalization"],["normaized","normalized"],["normale","normal"],["normales","normals"],["normaly","normally"],["normalyl","normally"],["normalyly","normally"],["normalysed","normalised"],["normalyy","normally"],["normalyzation","normalization"],["normalyze","normalize"],["normalyzed","normalized"],["normlly","normally"],["normnal","normal"],["normol","normal"],["normolise","normalise"],["normolize","normalize"],["northen","northern"],["northereastern","northeastern"],["nortmally","normally"],["notabley","notably"],["notaion","notation"],["notaly","notably"],["notasion","notation"],["notatin","notation"],["noteable","notable"],["noteably","notably"],["noteboook","notebook"],["noteboooks","notebooks"],["noteriety","notoriety"],["notfication","notification"],["notfications","notifications"],["notfy","notify"],["noth","north"],["nothern","northern"],["nothign","nothing"],["nothigng","nothing"],["nothihg","nothing"],["nothin","nothing"],["nothind","nothing"],["nothink","nothing"],["noticable","noticeable"],["noticably","noticeably"],["notication","notification"],["notications","notifications"],["noticeing","noticing"],["noticiable","noticeable"],["noticible","noticeable"],["notifaction","notification"],["notifactions","notifications"],["notifcation","notification"],["notifcations","notifications"],["notifed","notified"],["notifer","notifier"],["notifes","notifies"],["notifiation","notification"],["notificaction","notification"],["notificaiton","notification"],["notificaitons","notifications"],["notificaton","notification"],["notificatons","notifications"],["notificiation","notification"],["notificiations","notifications"],["notifiy","notify"],["notifiying","notifying"],["notifycation","notification"],["notity","notify"],["notmalize","normalize"],["notmalized","normalized"],["notmutch","notmuch"],["notning","nothing"],["nott","not"],["nottaion","notation"],["nottaions","notations"],["notwhithstanding","notwithstanding"],["noveau","nouveau"],["novemeber","November"],["Novemer","November"],["Novermber","November"],["nowadys","nowadays"],["nowdays","nowadays"],["nowe","now"],["ntification","notification"],["nuber","number"],["nubering","numbering"],["nubmer","number"],["nubmers","numbers"],["nucular","nuclear"],["nuculear","nuclear"],["nuisanse","nuisance"],["nuissance","nuisance"],["nulk","null"],["Nullabour","Nullarbor"],["nulll","null"],["numbber","number"],["numbbered","numbered"],["numbbering","numbering"],["numbbers","numbers"],["numberal","numeral"],["numberals","numerals"],["numberic","numeric"],["numberous","numerous"],["numberr","number"],["numberred","numbered"],["numberring","numbering"],["numberrs","numbers"],["numberss","numbers"],["numbert","number"],["numbet","number"],["numbets","numbers"],["numbres","numbers"],["numearate","numerate"],["numearation","numeration"],["numeber","number"],["numebering","numbering"],["numebers","numbers"],["numebr","number"],["numebrs","numbers"],["numer","number"],["numeraotr","numerator"],["numerbering","numbering"],["numercial","numerical"],["numercially","numerically"],["numering","numbering"],["numers","numbers"],["nummber","number"],["nummbers","numbers"],["nummeric","numeric"],["numnber","number"],["numnbered","numbered"],["numnbering","numbering"],["numnbers","numbers"],["numner","number"],["numners","numbers"],["numver","number"],["numvers","numbers"],["nunber","number"],["nunbers","numbers"],["Nuremburg","Nuremberg"],["nusance","nuisance"],["nutritent","nutrient"],["nutritents","nutrients"],["nuturing","nurturing"],["nwe","new"],["nwo","now"],["o'caml","OCaml"],["oaram","param"],["obay","obey"],["obect","object"],["obediance","obedience"],["obediant","obedient"],["obejct","object"],["obejcted","objected"],["obejction","objection"],["obejctions","objections"],["obejctive","objective"],["obejctively","objectively"],["obejctives","objectives"],["obejcts","objects"],["obeject","object"],["obejection","objection"],["obejects","objects"],["oberflow","overflow"],["oberflowed","overflowed"],["oberflowing","overflowing"],["oberflows","overflows"],["oberv","observe"],["obervant","observant"],["obervation","observation"],["obervations","observations"],["oberve","observe"],["oberved","observed"],["oberver","observer"],["obervers","observers"],["oberves","observes"],["oberving","observing"],["obervs","observes"],["obeservation","observation"],["obeservations","observations"],["obeserve","observe"],["obeserved","observed"],["obeserver","observer"],["obeservers","observers"],["obeserves","observes"],["obeserving","observing"],["obession","obsession"],["obessions","obsessions"],["obgect","object"],["obgects","objects"],["obhect","object"],["obhectification","objectification"],["obhectifies","objectifies"],["obhectify","objectify"],["obhectifying","objectifying"],["obhecting","objecting"],["obhection","objection"],["obhects","objects"],["obious","obvious"],["obiously","obviously"],["obivous","obvious"],["obivously","obviously"],["objec","object"],["objecs","objects"],["objectss","objects"],["objejct","object"],["objekt","object"],["objet","object"],["objetc","object"],["objetcs","objects"],["objets","objects"],["objtain","obtain"],["objtained","obtained"],["objtains","obtains"],["objump","objdump"],["oblitque","oblique"],["obnject","object"],["obscur","obscure"],["obselete","obsolete"],["obseravtion","observation"],["obseravtions","observations"],["observ","observe"],["observered","observed"],["obsevrer","observer"],["obsevrers","observers"],["obsolate","obsolete"],["obsolesence","obsolescence"],["obsolite","obsolete"],["obsolited","obsoleted"],["obsolte","obsolete"],["obsolted","obsoleted"],["obssessed","obsessed"],["obstacal","obstacle"],["obstancles","obstacles"],["obstruced","obstructed"],["obsure","obscure"],["obtaiend","obtained"],["obtaiens","obtains"],["obtainig","obtaining"],["obtaion","obtain"],["obtaioned","obtained"],["obtaions","obtains"],["obtrain","obtain"],["obtrained","obtained"],["obtrains","obtains"],["obusing","abusing"],["obvioulsy","obviously"],["obvisious","obvious"],["obvisous","obvious"],["obvisously","obviously"],["obyect","object"],["obyekt","object"],["ocasion","occasion"],["ocasional","occasional"],["ocasionally","occasionally"],["ocasionaly","occasionally"],["ocasioned","occasioned"],["ocasions","occasions"],["ocassion","occasion"],["ocassional","occasional"],["ocassionally","occasionally"],["ocassionaly","occasionally"],["ocassioned","occasioned"],["ocassions","occasions"],["occaisionally","occasionally"],["occaison","occasion"],["occasinal","occasional"],["occasinally","occasionally"],["occasioanlly","occasionally"],["occasionaly","occasionally"],["occassion","occasion"],["occassional","occasional"],["occassionally","occasionally"],["occassionaly","occasionally"],["occassioned","occasioned"],["occassions","occasions"],["occational","occasional"],["occationally","occasionally"],["occcur","occur"],["occcured","occurred"],["occcurs","occurs"],["occour","occur"],["occoured","occurred"],["occouring","occurring"],["occourring","occurring"],["occours","occurs"],["occrrance","occurrence"],["occrrances","occurrences"],["occrred","occurred"],["occrring","occurring"],["occsionally","occasionally"],["occucence","occurrence"],["occucences","occurrences"],["occulusion","occlusion"],["occuped","occupied"],["occupided","occupied"],["occuracy","accuracy"],["occurance","occurrence"],["occurances","occurrences"],["occurately","accurately"],["occurded","occurred"],["occured","occurred"],["occurence","occurrence"],["occurences","occurrences"],["occures","occurs"],["occuring","occurring"],["occurr","occur"],["occurrance","occurrence"],["occurrances","occurrences"],["occurrencs","occurrences"],["occurrs","occurs"],["oclock","o'clock"],["ocntext","context"],["ocorrence","occurrence"],["ocorrences","occurrences"],["octect","octet"],["octects","octets"],["octohedra","octahedra"],["octohedral","octahedral"],["octohedron","octahedron"],["ocuntries","countries"],["ocuntry","country"],["ocupied","occupied"],["ocupies","occupies"],["ocupy","occupy"],["ocupying","occupying"],["ocur","occur"],["ocurr","occur"],["ocurrance","occurrence"],["ocurred","occurred"],["ocurrence","occurrence"],["ocurrences","occurrences"],["ocurring","occurring"],["ocurrred","occurred"],["ocurrs","occurs"],["odly","oddly"],["ody","body"],["oen","one"],["ofcource","of course"],["offcers","officers"],["offcial","official"],["offcially","officially"],["offcials","officials"],["offerd","offered"],["offereings","offerings"],["offest","offset"],["offests","offsets"],["offfence","offence"],["offfences","offences"],["offfense","offense"],["offfenses","offenses"],["offfset","offset"],["offfsets","offsets"],["offic","office"],["offical","official"],["offically","officially"],["officals","officials"],["officaly","officially"],["officeal","official"],["officeally","officially"],["officeals","officials"],["officealy","officially"],["officialy","officially"],["offloded","offloaded"],["offred","offered"],["offsence","offence"],["offsense","offense"],["offsenses","offenses"],["offser","offset"],["offseted","offsetted"],["offseting","offsetting"],["offsetp","offset"],["offsett","offset"],["offstets","offsets"],["offten","often"],["oficial","official"],["oficially","officially"],["ofmodule","of module"],["ofo","of"],["ofrom","from"],["ofsetted","offsetted"],["ofsset","offset"],["oftenly","often"],["ofthe","of the"],["oherwise","otherwise"],["ohter","other"],["ohters","others"],["ohterwise","otherwise"],["oigin","origin"],["oiginal","original"],["oiginally","originally"],["oiginals","originals"],["oiginating","originating"],["oigins","origins"],["ois","is"],["ojbect","object"],["oje","one"],["oject","object"],["ojection","objection"],["ojective","objective"],["ojects","objects"],["ojekts","objects"],["okat","okay"],["oldes","oldest"],["olny","only"],["olt","old"],["olther","other"],["oly","only"],["omision","omission"],["omited","omitted"],["omiting","omitting"],["omitt","omit"],["omlette","omelette"],["ommision","omission"],["ommission","omission"],["ommit","omit"],["ommited","omitted"],["ommiting","omitting"],["ommits","omits"],["ommitted","omitted"],["ommitting","omitting"],["omniverous","omnivorous"],["omniverously","omnivorously"],["omplementaion","implementation"],["omplementation","implementation"],["omre","more"],["onchage","onchange"],["ond","one"],["one-dimenional","one-dimensional"],["one-dimenionsal","one-dimensional"],["onece","once"],["onedimenional","one-dimensional"],["onedimenionsal","one-dimensional"],["oneliners","one-liners"],["oneyway","oneway"],["ongly","only"],["onl","only"],["onliene","online"],["onlly","only"],["onlye","only"],["onlyonce","only once"],["onoly","only"],["onother","another"],["ons","owns"],["onself","oneself"],["ontain","contain"],["ontained","contained"],["ontainer","container"],["ontainers","containers"],["ontainging","containing"],["ontaining","containing"],["ontainor","container"],["ontainors","containers"],["ontains","contains"],["ontext","context"],["onthe","on the"],["ontop","on top"],["ontrolled","controlled"],["onw","own"],["onwed","owned"],["onwer","owner"],["onwership","ownership"],["onwing","owning"],["onws","owns"],["onyl","only"],["oommits","commits"],["ooutput","output"],["ooutputs","outputs"],["opactity","opacity"],["opactiy","opacity"],["opacy","opacity"],["opague","opaque"],["opatque","opaque"],["opbject","object"],["opbjective","objective"],["opbjects","objects"],["opeaaration","operation"],["opeaarations","operations"],["opeabcration","operation"],["opeabcrations","operations"],["opearand","operand"],["opearands","operands"],["opearate","operate"],["opearates","operates"],["opearating","operating"],["opearation","operation"],["opearations","operations"],["opearatios","operations"],["opearator","operator"],["opearators","operators"],["opearion","operation"],["opearions","operations"],["opearios","operations"],["opeariton","operation"],["opearitons","operations"],["opearitos","operations"],["opearnd","operand"],["opearnds","operands"],["opearor","operator"],["opearors","operators"],["opearte","operate"],["opearted","operated"],["opeartes","operates"],["opearting","operating"],["opeartion","operation"],["opeartions","operations"],["opeartios","operations"],["opeartor","operator"],["opeartors","operators"],["opeate","operate"],["opeates","operates"],["opeation","operation"],["opeational","operational"],["opeations","operations"],["opeatios","operations"],["opeator","operator"],["opeators","operators"],["opeatror","operator"],["opeatrors","operators"],["opeg","open"],["opeging","opening"],["opeing","opening"],["opeinging","opening"],["opeings","openings"],["opem","open"],["opemed","opened"],["opemess","openness"],["opeming","opening"],["opems","opens"],["openbrower","openbrowser"],["opended","opened"],["openeing","opening"],["openend","opened"],["openened","opened"],["openening","opening"],["openess","openness"],["openin","opening"],["openned","opened"],["openning","opening"],["operaand","operand"],["operaands","operands"],["operaion","operation"],["operaions","operations"],["operaiton","operation"],["operandes","operands"],["operaror","operator"],["operatation","operation"],["operatations","operations"],["operater","operator"],["operatings","operating"],["operatio","operation"],["operatione","operation"],["operatior","operator"],["operatng","operating"],["operato","operator"],["operaton","operation"],["operatons","operations"],["operattion","operation"],["operattions","operations"],["opereation","operation"],["opertaion","operation"],["opertaions","operations"],["opertion","operation"],["opertional","operational"],["opertions","operations"],["opertor","operator"],["opertors","operators"],["opetional","optional"],["ophan","orphan"],["ophtalmology","ophthalmology"],["opion","option"],["opionally","optionally"],["opions","options"],["opitionally","optionally"],["opiton","option"],["opitons","options"],["opject","object"],["opjected","objected"],["opjecteing","objecting"],["opjectification","objectification"],["opjectifications","objectifications"],["opjectified","objectified"],["opjecting","objecting"],["opjection","objection"],["opjections","objections"],["opjective","objective"],["opjectively","objectively"],["opjects","objects"],["opne","open"],["opned","opened"],["opnegroup","opengroup"],["opnssl","openssl"],["oponent","opponent"],["oportunity","opportunity"],["opose","oppose"],["oposed","opposed"],["oposite","opposite"],["oposition","opposition"],["oppenly","openly"],["opperate","operate"],["opperated","operated"],["opperates","operates"],["opperation","operation"],["opperational","operational"],["opperations","operations"],["oppertunist","opportunist"],["oppertunities","opportunities"],["oppertunity","opportunity"],["oppinion","opinion"],["oppinions","opinions"],["opponant","opponent"],["oppononent","opponent"],["opportunisticly","opportunistically"],["opportunistly","opportunistically"],["opportunties","opportunities"],["oppositition","opposition"],["oppossed","opposed"],["opprotunity","opportunity"],["opproximate","approximate"],["opps","oops"],["oppsofite","opposite"],["oppurtunity","opportunity"],["opration","operation"],["oprations","operations"],["opreating","operating"],["opreation","operation"],["opreations","operations"],["opression","oppression"],["opressive","oppressive"],["oprimization","optimization"],["oprimizations","optimizations"],["oprimize","optimize"],["oprimized","optimized"],["oprimizes","optimizes"],["optain","obtain"],["optained","obtained"],["optains","obtains"],["optaionl","optional"],["optening","opening"],["optet","opted"],["opthalmic","ophthalmic"],["opthalmologist","ophthalmologist"],["opthalmology","ophthalmology"],["opthamologist","ophthalmologist"],["optiional","optional"],["optimasation","optimization"],["optimazation","optimization"],["optimial","optimal"],["optimiality","optimality"],["optimisim","optimism"],["optimisitc","optimistic"],["optimisitic","optimistic"],["optimissm","optimism"],["optimitation","optimization"],["optimizaing","optimizing"],["optimizaton","optimization"],["optimizier","optimizer"],["optimiztion","optimization"],["optimiztions","optimizations"],["optimsitic","optimistic"],["optimyze","optimize"],["optimze","optimize"],["optimzie","optimize"],["optin","option"],["optinal","optional"],["optinally","optionally"],["optins","options"],["optio","option"],["optioanl","optional"],["optioin","option"],["optioinal","optional"],["optioins","options"],["optionalliy","optionally"],["optionallly","optionally"],["optionaly","optionally"],["optionel","optional"],["optiones","options"],["optionial","optional"],["optionn","option"],["optionnal","optional"],["optionnally","optionally"],["optionnaly","optionally"],["optionss","options"],["optios","options"],["optismied","optimised"],["optizmied","optimized"],["optmisation","optimisation"],["optmisations","optimisations"],["optmization","optimization"],["optmizations","optimizations"],["optmize","optimize"],["optmized","optimized"],["optoin","option"],["optoins","options"],["optomism","optimism"],["opton","option"],["optonal","optional"],["optonally","optionally"],["optons","options"],["opyion","option"],["opyions","options"],["orcale","oracle"],["orded","ordered"],["orderd","ordered"],["ordert","ordered"],["ording","ordering"],["ordner","order"],["orede","order"],["oredes","orders"],["oreding","ordering"],["oredred","ordered"],["orgamise","organise"],["organim","organism"],["organisaion","organisation"],["organisaions","organisations"],["organistion","organisation"],["organistions","organisations"],["organizaion","organization"],["organizaions","organizations"],["organiztion","organization"],["organiztions","organizations"],["organsiation","organisation"],["organsiations","organisations"],["organsied","organised"],["organsier","organiser"],["organsiers","organisers"],["organsies","organises"],["organsiing","organising"],["organziation","organization"],["organziations","organizations"],["organzied","organized"],["organzier","organizer"],["organziers","organizers"],["organzies","organizes"],["organziing","organizing"],["orgiginal","original"],["orgiginally","originally"],["orgiginals","originals"],["orginal","original"],["orginally","originally"],["orginals","originals"],["orginate","originate"],["orginated","originated"],["orginates","originates"],["orginating","originating"],["orginial","original"],["orginially","originally"],["orginials","originals"],["orginiate","originate"],["orginiated","originated"],["orginiates","originates"],["orgininal","original"],["orgininals","originals"],["orginisation","organisation"],["orginisations","organisations"],["orginised","organised"],["orginization","organization"],["orginizations","organizations"],["orginized","organized"],["orginx","originx"],["orginy","originy"],["orhpan","orphan"],["oriant","orient"],["oriantate","orientate"],["oriantated","orientated"],["oriantation","orientation"],["oridinarily","ordinarily"],["orieation","orientation"],["orieations","orientations"],["orienatate","orientate"],["orienatated","orientated"],["orienatation","orientation"],["orienation","orientation"],["orientaion","orientation"],["orientatied","orientated"],["oriente","oriented"],["orientiation","orientation"],["orientied","oriented"],["orientned","oriented"],["orietation","orientation"],["orietations","orientations"],["origanaly","originally"],["origial","original"],["origially","originally"],["origianal","original"],["origianally","originally"],["origianaly","originally"],["origianl","original"],["origianls","originals"],["origigin","origin"],["origiginal","original"],["origiginally","originally"],["origiginals","originals"],["originaly","originally"],["originial","original"],["originially","originally"],["originiated","originated"],["originiating","originating"],["origininal","original"],["origininate","originate"],["origininated","originated"],["origininates","originates"],["origininating","originating"],["origining","originating"],["originnally","originally"],["origion","origin"],["origional","original"],["origionally","originally"],["orign","origin"],["orignal","original"],["orignally","originally"],["orignate","originate"],["orignated","originated"],["orignates","originates"],["orignial","original"],["orignially","originally"],["origninal","original"],["oringal","original"],["oringally","originally"],["orpan","orphan"],["orpanage","orphanage"],["orpaned","orphaned"],["orpans","orphans"],["orriginal","original"],["orthagnal","orthogonal"],["orthagonal","orthogonal"],["orthagonalize","orthogonalize"],["orthoganal","orthogonal"],["orthoganalize","orthogonalize"],["orthognal","orthogonal"],["orthonormalizatin","orthonormalization"],["ortogonal","orthogonal"],["ortogonality","orthogonality"],["osbscure","obscure"],["osciallator","oscillator"],["oscilate","oscillate"],["oscilated","oscillated"],["oscilating","oscillating"],["oscilator","oscillator"],["oscilliscope","oscilloscope"],["oscilliscopes","oscilloscopes"],["osffset","offset"],["osffsets","offsets"],["osffsetting","offsetting"],["osicllations","oscillations"],["otain","obtain"],["otained","obtained"],["otains","obtains"],["otehr","other"],["otehrwice","otherwise"],["otehrwise","otherwise"],["otehrwize","otherwise"],["oterwice","otherwise"],["oterwise","otherwise"],["oterwize","otherwise"],["othe","other"],["othere","other"],["otherewise","otherwise"],["otherise","otherwise"],["otheriwse","otherwise"],["otherwaise","otherwise"],["otherways","otherwise"],["otherweis","otherwise"],["otherweise","otherwise"],["otherwhere","elsewhere"],["otherwhile","otherwise"],["otherwhise","otherwise"],["otherwice","otherwise"],["otherwide","otherwise"],["otherwis","otherwise"],["otherwize","otherwise"],["otherwordly","otherworldly"],["otherwose","otherwise"],["otherwrite","overwrite"],["otherws","otherwise"],["otherwse","otherwise"],["otherwsie","otherwise"],["otherwsise","otherwise"],["otherwuise","otherwise"],["otherwwise","otherwise"],["otherwyse","otherwise"],["othewice","otherwise"],["othewise","otherwise"],["othewize","otherwise"],["otho","otoh"],["othographic","orthographic"],["othwerise","otherwise"],["othwerwise","otherwise"],["othwhise","otherwise"],["otification","notification"],["otiginal","original"],["otion","option"],["otionally","optionally"],["otions","options"],["otpion","option"],["otpions","options"],["otput","output"],["otu","out"],["oublisher","publisher"],["ouer","outer"],["ouevre","oeuvre"],["oultinenodes","outlinenodes"],["oultiner","outliner"],["oultline","outline"],["oultlines","outlines"],["ountline","outline"],["ouptut","output"],["ouptuted","outputted"],["ouptuting","outputting"],["ouptuts","outputs"],["ouput","output"],["ouputarea","outputarea"],["ouputs","outputs"],["ouputted","outputted"],["ouputting","outputting"],["ourselfes","ourselves"],["ourselfs","ourselves"],["ourselvs","ourselves"],["ouside","outside"],["oustanding","outstanding"],["oustide","outside"],["outbut","output"],["outbuts","outputs"],["outgoign","outgoing"],["outisde","outside"],["outllook","outlook"],["outoign","outgoing"],["outout","output"],["outperfoem","outperform"],["outperfoeming","outperforming"],["outperfom","outperform"],["outperfome","outperform"],["outperfomeing","outperforming"],["outperfoming","outperforming"],["outperfomr","outperform"],["outperfomring","outperforming"],["outpout","output"],["outpouts","outputs"],["outpupt","output"],["outpusts","outputs"],["outputed","outputted"],["outputing","outputting"],["outselves","ourselves"],["outsid","outside"],["outter","outer"],["outtermost","outermost"],["outupt","output"],["outupts","outputs"],["outuput","output"],["outut","output"],["oututs","outputs"],["outweight","outweigh"],["outweights","outweighs"],["ouur","our"],["ouurs","ours"],["oveerun","overrun"],["oveflow","overflow"],["oveflowed","overflowed"],["oveflowing","overflowing"],["oveflows","overflows"],["ovelap","overlap"],["ovelapping","overlapping"],["over-engeneer","over-engineer"],["over-engeneering","over-engineering"],["overaall","overall"],["overal","overall"],["overcompansate","overcompensate"],["overcompansated","overcompensated"],["overcompansates","overcompensates"],["overcompansating","overcompensating"],["overcompansation","overcompensation"],["overcompansations","overcompensations"],["overengeneer","overengineer"],["overengeneering","overengineering"],["overfl","overflow"],["overfow","overflow"],["overfowed","overflowed"],["overfowing","overflowing"],["overfows","overflows"],["overhread","overhead"],["overiddden","overridden"],["overidden","overridden"],["overide","override"],["overiden","overridden"],["overides","overrides"],["overiding","overriding"],["overlaped","overlapped"],["overlaping","overlapping"],["overlapp","overlap"],["overlayed","overlaid"],["overlflow","overflow"],["overlflowed","overflowed"],["overlflowing","overflowing"],["overlflows","overflows"],["overlfow","overflow"],["overlfowed","overflowed"],["overlfowing","overflowing"],["overlfows","overflows"],["overlodaded","overloaded"],["overloded","overloaded"],["overlodes","overloads"],["overlow","overflow"],["overlowing","overflowing"],["overlows","overflows"],["overreidden","overridden"],["overreide","override"],["overreides","overrides"],["overriabled","overridable"],["overriddable","overridable"],["overriddden","overridden"],["overriddes","overrides"],["overridding","overriding"],["overrideable","overridable"],["overriden","overridden"],["overrident","overridden"],["overridiing","overriding"],["overrids","overrides"],["overrriddden","overridden"],["overrridden","overridden"],["overrride","override"],["overrriden","overridden"],["overrrides","overrides"],["overrriding","overriding"],["overrrun","overrun"],["overshaddowed","overshadowed"],["oversubcribe","oversubscribe"],["oversubcribed","oversubscribed"],["oversubcribes","oversubscribes"],["oversubcribing","oversubscribing"],["oversubscibe","oversubscribe"],["oversubscibed","oversubscribed"],["oversubscirbe","oversubscribe"],["oversubscirbed","oversubscribed"],["overthere","over there"],["overun","overrun"],["overvise","otherwise"],["overvize","otherwise"],["overvride","override"],["overvrides","overrides"],["overvrite","overwrite"],["overvrites","overwrites"],["overwelm","overwhelm"],["overwelming","overwhelming"],["overwheliming","overwhelming"],["overwiew","overview"],["overwirte","overwrite"],["overwirting","overwriting"],["overwirtten","overwritten"],["overwise","otherwise"],["overwite","overwrite"],["overwites","overwrites"],["overwitten","overwritten"],["overwize","otherwise"],["overwride","overwrite"],["overwriteable","overwritable"],["overwriten","overwritten"],["overwritren","overwritten"],["overwrittes","overwrites"],["overwrittin","overwriting"],["overwritting","overwriting"],["ovewrite","overwrite"],["ovewrites","overwrites"],["ovewriting","overwriting"],["ovewritten","overwritten"],["ovewrote","overwrote"],["ovride","override"],["ovrides","overrides"],["ovrlapped","overlapped"],["ovrridable","overridable"],["ovrridables","overridables"],["ovrwrt","overwrite"],["ovservable","observable"],["ovservation","observation"],["ovserve","observe"],["ovveride","override"],["ovverridden","overridden"],["ovverride","override"],["ovverrides","overrides"],["ovverriding","overriding"],["owener","owner"],["owerflow","overflow"],["owerflowed","overflowed"],["owerflowing","overflowing"],["owerflows","overflows"],["owership","ownership"],["owervrite","overwrite"],["owervrites","overwrites"],["owerwrite","overwrite"],["owerwrites","overwrites"],["owful","awful"],["ownder","owner"],["ownerhsip","ownership"],["ownner","owner"],["ownward","onward"],["ownwer","owner"],["ownwership","ownership"],["owrk","work"],["owudl","would"],["oxigen","oxygen"],["oximoron","oxymoron"],["oxzillary","auxiliary"],["oyu","you"],["p0enis","penis"],["paackage","package"],["pacakge","package"],["pacakges","packages"],["pacakging","packaging"],["paceholder","placeholder"],["pachage","package"],["paches","patches"],["pacht","patch"],["pachtches","patches"],["pachtes","patches"],["pacjage","package"],["pacjages","packages"],["packacge","package"],["packaeg","package"],["packaege","package"],["packaeges","packages"],["packaegs","packages"],["packag","package"],["packags","packages"],["packaing","packaging"],["packats","packets"],["packege","package"],["packge","package"],["packged","packaged"],["packgement","packaging"],["packges'","packages'"],["packges","packages"],["packgs","packages"],["packhage","package"],["packhages","packages"],["packtes","packets"],["pactch","patch"],["pactched","patched"],["pactches","patches"],["padam","param"],["padds","pads"],["pading","padding"],["paermission","permission"],["paermissions","permissions"],["paeth","path"],["pagagraph","paragraph"],["pahses","phases"],["paide","paid"],["painiting","painting"],["paintile","painttile"],["paintin","painting"],["paitience","patience"],["paiting","painting"],["pakage","package"],["pakageimpl","packageimpl"],["pakages","packages"],["pakcage","package"],["paket","packet"],["pakge","package"],["pakvage","package"],["palatte","palette"],["paleolitic","paleolithic"],["palete","palette"],["paliamentarian","parliamentarian"],["Palistian","Palestinian"],["Palistinian","Palestinian"],["Palistinians","Palestinians"],["pallete","palette"],["pallette","palette"],["palletted","paletted"],["paltette","palette"],["paltform","platform"],["pamflet","pamphlet"],["pamplet","pamphlet"],["paniced","panicked"],["panicing","panicking"],["pannel","panel"],["pannels","panels"],["pantomine","pantomime"],["paoition","position"],["paor","pair"],["Papanicalou","Papanicolaou"],["paradime","paradigm"],["paradym","paradigm"],["paraemeter","parameter"],["paraemeters","parameters"],["paraeters","parameters"],["parafanalia","paraphernalia"],["paragaph","paragraph"],["paragaraph","paragraph"],["paragarapha","paragraph"],["paragarph","paragraph"],["paragarphs","paragraphs"],["paragph","paragraph"],["paragpraph","paragraph"],["paragraphy","paragraph"],["paragrphs","paragraphs"],["parahaps","perhaps"],["paralel","parallel"],["paralelising","parallelising"],["paralelism","parallelism"],["paralelizing","parallelizing"],["paralell","parallel"],["paralelle","parallel"],["paralellism","parallelism"],["paralellization","parallelization"],["paralelly","parallelly"],["paralely","parallelly"],["paralle","parallel"],["parallell","parallel"],["parallely","parallelly"],["paralles","parallels"],["parallization","parallelization"],["parallize","parallelize"],["parallized","parallelized"],["parallizes","parallelizes"],["parallizing","parallelizing"],["paralllel","parallel"],["paralllels","parallels"],["paramameter","parameter"],["paramameters","parameters"],["paramater","parameter"],["paramaters","parameters"],["paramemeter","parameter"],["paramemeters","parameters"],["paramemter","parameter"],["paramemters","parameters"],["paramenet","parameter"],["paramenets","parameters"],["paramenter","parameter"],["paramenters","parameters"],["paramer","parameter"],["paramert","parameter"],["paramerters","parameters"],["paramerts","parameters"],["paramete","parameter"],["parameteras","parameters"],["parameteres","parameters"],["parameterical","parametrical"],["parameterts","parameters"],["parametes","parameters"],["parametised","parametrised"],["parametr","parameter"],["parametre","parameter"],["parametreless","parameterless"],["parametres","parameters"],["parametrs","parameters"],["parametter","parameter"],["parametters","parameters"],["paramss","params"],["paramter","parameter"],["paramterer","parameter"],["paramterers","parameters"],["paramteres","parameters"],["paramterize","parameterize"],["paramterless","parameterless"],["paramters","parameters"],["paramtrical","parametrical"],["parana","piranha"],["paraniac","paranoiac"],["paranoya","paranoia"],["parant","parent"],["parantheses","parentheses"],["paranthesis","parenthesis"],["parants","parents"],["paraphanalia","paraphernalia"],["paraphenalia","paraphernalia"],["pararagraph","paragraph"],["pararaph","paragraph"],["parareter","parameter"],["parargaph","paragraph"],["parargaphs","paragraphs"],["pararmeter","parameter"],["pararmeters","parameters"],["parastic","parasitic"],["parastics","parasitics"],["paratheses","parentheses"],["paratmers","parameters"],["paravirutalisation","paravirtualisation"],["paravirutalise","paravirtualise"],["paravirutalised","paravirtualised"],["paravirutalization","paravirtualization"],["paravirutalize","paravirtualize"],["paravirutalized","paravirtualized"],["parctical","practical"],["parctically","practically"],["pard","part"],["parellelogram","parallelogram"],["parellels","parallels"],["parem","param"],["paremeter","parameter"],["paremeters","parameters"],["paremter","parameter"],["paremters","parameters"],["parenthese","parentheses"],["parenthesed","parenthesized"],["parenthesies","parentheses"],["parenthises","parentheses"],["parenthsis","parenthesis"],["parge","large"],["parial","partial"],["parially","partially"],["paricular","particular"],["paricularly","particularly"],["parisitic","parasitic"],["paritally","partially"],["paritals","partials"],["paritial","partial"],["parition","partition"],["paritioning","partitioning"],["paritions","partitions"],["paritition","partition"],["parititioned","partitioned"],["parititioner","partitioner"],["parititiones","partitions"],["parititioning","partitioning"],["parititions","partitions"],["paritiy","parity"],["parituclar","particular"],["parliment","parliament"],["parmaeter","parameter"],["parmaeters","parameters"],["parmameter","parameter"],["parmameters","parameters"],["parmaters","parameters"],["parmeter","parameter"],["parmeters","parameters"],["parmter","parameter"],["parmters","parameters"],["parnoia","paranoia"],["parnter","partner"],["parntered","partnered"],["parntering","partnering"],["parnters","partners"],["parntership","partnership"],["parnterships","partnerships"],["parrakeets","parakeets"],["parralel","parallel"],["parrallel","parallel"],["parrallell","parallel"],["parrallelly","parallelly"],["parrallely","parallelly"],["parrent","parent"],["parseing","parsing"],["parsering","parsing"],["parsin","parsing"],["parstree","parse tree"],["partaining","pertaining"],["partcular","particular"],["partcularity","particularity"],["partcularly","particularly"],["parth","path"],["partialy","partially"],["particalar","particular"],["particalarly","particularly"],["particale","particle"],["particales","particles"],["partically","partially"],["particals","particles"],["particaluar","particular"],["particaluarly","particularly"],["particalur","particular"],["particalurly","particularly"],["particant","participant"],["particaular","particular"],["particaularly","particularly"],["particaulr","particular"],["particaulrly","particularly"],["particlar","particular"],["particlars","particulars"],["particually","particularly"],["particualr","particular"],["particuar","particular"],["particuarly","particularly"],["particulaly","particularly"],["particularily","particularly"],["particulary","particularly"],["particuliar","particular"],["partifular","particular"],["partiiton","partition"],["partiitoned","partitioned"],["partiitoning","partitioning"],["partiitons","partitions"],["partioned","partitioned"],["partirion","partition"],["partirioned","partitioned"],["partirioning","partitioning"],["partirions","partitions"],["partision","partition"],["partisioned","partitioned"],["partisioning","partitioning"],["partisions","partitions"],["partitial","partial"],["partiticipant","participant"],["partiticipants","participants"],["partiticular","particular"],["partitinioning","partitioning"],["partitioing","partitioning"],["partitiones","partitions"],["partitionned","partitioned"],["partitionning","partitioning"],["partitionns","partitions"],["partitionss","partitions"],["partiton","partition"],["partitoned","partitioned"],["partitoning","partitioning"],["partitons","partitions"],["partiula","particular"],["partiular","particular"],["partiularly","particularly"],["partiulars","particulars"],["pasengers","passengers"],["paser","parser"],["pasesd","passed"],["pash","hash"],["pasitioning","positioning"],["pasive","passive"],["pasre","parse"],["pasred","parsed"],["pasres","parses"],["passerbys","passersby"],["passin","passing"],["passiv","passive"],["passowrd","password"],["passs","pass"],["passsed","passed"],["passsing","passing"],["passthrought","passthrough"],["passthruogh","passthrough"],["passtime","pastime"],["passtrough","passthrough"],["passwird","password"],["passwirds","passwords"],["passwrod","password"],["passwrods","passwords"],["pasteing","pasting"],["pasttime","pastime"],["pastural","pastoral"],["pasword","password"],["paswords","passwords"],["patameter","parameter"],["patameters","parameters"],["patcket","packet"],["patckets","packets"],["patern","pattern"],["paterns","patterns"],["pathalogical","pathological"],["pathame","pathname"],["pathames","pathnames"],["pathane","pathname"],["pathced","patched"],["pathes","paths"],["pathign","pathing"],["pathnme","pathname"],["patholgoical","pathological"],["patial","spatial"],["paticular","particular"],["paticularly","particularly"],["patition","partition"],["pattented","patented"],["pattersn","patterns"],["pavillion","pavilion"],["pavillions","pavilions"],["pa\xEDnt","paint"],["pblisher","publisher"],["pbulisher","publisher"],["peacd","peace"],["peacefuland","peaceful and"],["peacify","pacify"],["peageant","pageant"],["peaple","people"],["peaples","peoples"],["pecentage","percentage"],["pecularities","peculiarities"],["pecularity","peculiarity"],["peculure","peculiar"],["pedestrain","pedestrian"],["peding","pending"],["pedning","pending"],["pefer","prefer"],["peferable","preferable"],["peferably","preferably"],["pefered","preferred"],["peference","preference"],["peferences","preferences"],["peferential","preferential"],["peferentially","preferentially"],["peferred","preferred"],["peferring","preferring"],["pefers","prefers"],["peform","perform"],["peformance","performance"],["peformed","performed"],["peforming","performing"],["pege","page"],["pehaps","perhaps"],["peice","piece"],["peicemeal","piecemeal"],["peices","pieces"],["peirod","period"],["peirodical","periodical"],["peirodicals","periodicals"],["peirods","periods"],["penalities","penalties"],["penality","penalty"],["penatly","penalty"],["pendantic","pedantic"],["pendig","pending"],["pendning","pending"],["penerator","penetrator"],["penisula","peninsula"],["penisular","peninsular"],["pennal","panel"],["pennals","panels"],["penninsula","peninsula"],["penninsular","peninsular"],["pennisula","peninsula"],["Pennyslvania","Pennsylvania"],["pensinula","peninsula"],["pensle","pencil"],["penultimante","penultimate"],["peom","poem"],["peoms","poems"],["peopel","people"],["peopels","peoples"],["peopl","people"],["peotry","poetry"],["pepare","prepare"],["peprocessor","preprocessor"],["per-interpeter","per-interpreter"],["perade","parade"],["peraphs","perhaps"],["percentange","percentage"],["percentanges","percentages"],["percentil","percentile"],["percepted","perceived"],["percetage","percentage"],["percetages","percentages"],["percievable","perceivable"],["percievabley","perceivably"],["percievably","perceivably"],["percieve","perceive"],["percieved","perceived"],["percise","precise"],["percisely","precisely"],["percision","precision"],["perenially","perennially"],["peretrator","perpetrator"],["perfec","perfect"],["perfecct","perfect"],["perfecctly","perfectly"],["perfeclty","perfectly"],["perfecly","perfectly"],["perfectably","perfectly"],["perfer","prefer"],["perferable","preferable"],["perferably","preferably"],["perferance","preference"],["perferances","preferences"],["perferct","perfect"],["perferctly","perfectly"],["perferect","perfect"],["perferectly","perfectly"],["perfered","preferred"],["perference","preference"],["perferences","preferences"],["perferm","perform"],["perfermance","performance"],["perfermances","performances"],["perfermence","performance"],["perfermences","performances"],["perferr","prefer"],["perferrable","preferable"],["perferrably","preferably"],["perferrance","preference"],["perferrances","preferences"],["perferred","preferred"],["perferrence","preference"],["perferrences","preferences"],["perferrm","perform"],["perferrmance","performance"],["perferrmances","performances"],["perferrmence","performance"],["perferrmences","performances"],["perferrs","prefers"],["perfers","prefers"],["perfix","prefix"],["perfmormance","performance"],["perfoem","perform"],["perfoemamce","performance"],["perfoemamces","performances"],["perfoemance","performance"],["perfoemanse","performance"],["perfoemanses","performances"],["perfoemant","performant"],["perfoemative","performative"],["perfoemed","performed"],["perfoemer","performer"],["perfoemers","performers"],["perfoeming","performing"],["perfoemnace","performance"],["perfoemnaces","performances"],["perfoems","performs"],["perfom","perform"],["perfomamce","performance"],["perfomamces","performances"],["perfomance","performance"],["perfomanse","performance"],["perfomanses","performances"],["perfomant","performant"],["perfomative","performative"],["perfome","perform"],["perfomeamce","performance"],["perfomeamces","performances"],["perfomeance","performance"],["perfomeanse","performance"],["perfomeanses","performances"],["perfomeant","performant"],["perfomeative","performative"],["perfomed","performed"],["perfomeed","performed"],["perfomeer","performer"],["perfomeers","performers"],["perfomeing","performing"],["perfomenace","performance"],["perfomenaces","performances"],["perfomer","performer"],["perfomers","performers"],["perfomes","performs"],["perfoming","performing"],["perfomnace","performance"],["perfomnaces","performances"],["perfomr","perform"],["perfomramce","performance"],["perfomramces","performances"],["perfomrance","performance"],["perfomranse","performance"],["perfomranses","performances"],["perfomrant","performant"],["perfomrative","performative"],["perfomred","performed"],["perfomrer","performer"],["perfomrers","performers"],["perfomring","performing"],["perfomrnace","performance"],["perfomrnaces","performances"],["perfomrs","performs"],["perfoms","performs"],["perfor","perform"],["perforam","perform"],["perforamed","performed"],["perforaming","performing"],["perforamnce","performance"],["perforamnces","performances"],["perforams","performs"],["perford","performed"],["perforemd","performed"],["performace","performance"],["performaed","performed"],["performamce","performance"],["performane","performance"],["performence","performance"],["performnace","performance"],["perfors","performs"],["perfro","perform"],["perfrom","perform"],["perfromance","performance"],["perfromed","performed"],["perfroming","performing"],["perfroms","performs"],["perhabs","perhaps"],["perhas","perhaps"],["perhasp","perhaps"],["perheaps","perhaps"],["perhpas","perhaps"],["peridic","periodic"],["perihperal","peripheral"],["perihperals","peripherals"],["perimetre","perimeter"],["perimetres","perimeters"],["periode","period"],["periodicaly","periodically"],["periodioc","periodic"],["peripathetic","peripatetic"],["peripherial","peripheral"],["peripherials","peripherals"],["perisist","persist"],["perisisted","persisted"],["perisistent","persistent"],["peristent","persistent"],["perjery","perjury"],["perjorative","pejorative"],["perlciritc","perlcritic"],["permable","permeable"],["permament","permanent"],["permamently","permanently"],["permanant","permanent"],["permanantly","permanently"],["permanentely","permanently"],["permanenty","permanently"],["permantly","permanently"],["permenant","permanent"],["permenantly","permanently"],["permessioned","permissioned"],["permision","permission"],["permisions","permissions"],["permisison","permission"],["permisisons","permissions"],["permissable","permissible"],["permissiosn","permissions"],["permisson","permission"],["permissons","permissions"],["permisssion","permission"],["permisssions","permissions"],["permited","permitted"],["permition","permission"],["permitions","permissions"],["permmission","permission"],["permmissions","permissions"],["permormance","performance"],["permssion","permission"],["permssions","permissions"],["permuatate","permutate"],["permuatated","permutated"],["permuatates","permutates"],["permuatating","permutating"],["permuatation","permutation"],["permuatations","permutations"],["permuation","permutation"],["permuations","permutations"],["permutaion","permutation"],["permutaions","permutations"],["permution","permutation"],["permutions","permutations"],["peroendicular","perpendicular"],["perogative","prerogative"],["peroid","period"],["peroidic","periodic"],["peroidical","periodical"],["peroidically","periodically"],["peroidicals","periodicals"],["peroidicity","periodicity"],["peroids","periods"],["peronal","personal"],["peroperly","properly"],["perosnality","personality"],["perpandicular","perpendicular"],["perpandicularly","perpendicularly"],["perperties","properties"],["perpertrated","perpetrated"],["perperty","property"],["perphas","perhaps"],["perpindicular","perpendicular"],["perpsective","perspective"],["perpsectives","perspectives"],["perrror","perror"],["persan","person"],["persepctive","perspective"],["persepective","perspective"],["persepectives","perspectives"],["perserve","preserve"],["perserved","preserved"],["perserverance","perseverance"],["perservere","persevere"],["perservered","persevered"],["perserveres","perseveres"],["perservering","persevering"],["perserves","preserves"],["perserving","preserving"],["perseverence","perseverance"],["persisit","persist"],["persisited","persisted"],["persistance","persistence"],["persistant","persistent"],["persistantly","persistently"],["persisten","persistent"],["persistented","persisted"],["persited","persisted"],["persitent","persistent"],["personalitie","personality"],["personalitites","personalities"],["personalitity","personality"],["personalitys","personalities"],["personaly","personally"],["personell","personnel"],["personnal","personal"],["personnaly","personally"],["personnell","personnel"],["perspecitve","perspective"],["persuded","persuaded"],["persue","pursue"],["persued","pursued"],["persuing","pursuing"],["persuit","pursuit"],["persuits","pursuits"],["persumably","presumably"],["perticular","particular"],["perticularly","particularly"],["perticulars","particulars"],["pertrub","perturb"],["pertrubation","perturbation"],["pertrubations","perturbations"],["pertrubing","perturbing"],["pertub","perturb"],["pertubate","perturb"],["pertubated","perturbed"],["pertubates","perturbs"],["pertubation","perturbation"],["pertubations","perturbations"],["pertubing","perturbing"],["perturbate","perturb"],["perturbates","perturbs"],["pervious","previous"],["perviously","previously"],["pessiary","pessary"],["petetion","petition"],["pevent","prevent"],["pevents","prevents"],["pezier","bezier"],["phanthom","phantom"],["Pharoah","Pharaoh"],["phasepsace","phasespace"],["phasis","phases"],["phenomenom","phenomenon"],["phenomenonal","phenomenal"],["phenomenonly","phenomenally"],["phenomonenon","phenomenon"],["phenomonon","phenomenon"],["phenonmena","phenomena"],["pheriparials","peripherals"],["Philipines","Philippines"],["philisopher","philosopher"],["philisophical","philosophical"],["philisophy","philosophy"],["Phillipine","Philippine"],["phillipines","philippines"],["Phillippines","Philippines"],["phillosophically","philosophically"],["philospher","philosopher"],["philosphies","philosophies"],["philosphy","philosophy"],["phisical","physical"],["phisically","physically"],["phisicaly","physically"],["phisics","physics"],["phisosophy","philosophy"],["Phonecian","Phoenecian"],["phoneticly","phonetically"],["phongraph","phonograph"],["phote","photo"],["photografic","photographic"],["photografical","photographical"],["photografy","photography"],["photograpic","photographic"],["photograpical","photographical"],["phsical","physical"],["phsyically","physically"],["phtread","pthread"],["phtreads","pthreads"],["phyiscal","physical"],["phyiscally","physically"],["phyiscs","physics"],["phylosophical","philosophical"],["physcial","physical"],["physial","physical"],["physicaly","physically"],["physisist","physicist"],["phython","python"],["phyton","python"],["phy_interace","phy_interface"],["piblisher","publisher"],["pice","piece"],["picoseond","picosecond"],["picoseonds","picoseconds"],["piggypack","piggyback"],["piggypacked","piggybacked"],["pilgrimmage","pilgrimage"],["pilgrimmages","pilgrimages"],["pimxap","pixmap"],["pimxaps","pixmaps"],["pinapple","pineapple"],["pinnaple","pineapple"],["pinoneered","pioneered"],["piont","point"],["pionter","pointer"],["pionts","points"],["piority","priority"],["pipeine","pipeline"],["pipeines","pipelines"],["pipelien","pipeline"],["pipeliens","pipelines"],["pipelin","pipeline"],["pipelinining","pipelining"],["pipelins","pipelines"],["pipepline","pipeline"],["pipeplines","pipelines"],["pipiline","pipeline"],["pipilines","pipelines"],["pipleine","pipeline"],["pipleines","pipelines"],["pipleline","pipeline"],["piplelines","pipelines"],["pitty","pity"],["pivott","pivot"],["pivotting","pivoting"],["pixes","pixels"],["placeemnt","placement"],["placeemnts","placements"],["placehoder","placeholder"],["placeholde","placeholder"],["placeholdes","placeholders"],["placeholer","placeholder"],["placeholers","placeholders"],["placemenet","placement"],["placemenets","placements"],["placholder","placeholder"],["placholders","placeholders"],["placmenet","placement"],["placmenets","placements"],["plaform","platform"],["plaforms","platforms"],["plaftorm","platform"],["plaftorms","platforms"],["plagarism","plagiarism"],["plalform","platform"],["plalforms","platforms"],["planation","plantation"],["plantext","plaintext"],["plantiff","plaintiff"],["plasement","placement"],["plasements","placements"],["plateu","plateau"],["platfarm","platform"],["platfarms","platforms"],["platfform","platform"],["platfforms","platforms"],["platflorm","platform"],["platflorms","platforms"],["platfoem","platform"],["platfom","platform"],["platfomr","platform"],["platfomrs","platforms"],["platfoms","platforms"],["platform-spacific","platform-specific"],["platforma","platforms"],["platformt","platforms"],["platfrom","platform"],["platfroms","platforms"],["plathome","platform"],["platofmr","platform"],["platofmrs","platforms"],["platofms","platforms"],["platofmss","platforms"],["platoform","platform"],["platoforms","platforms"],["platofrm","platform"],["platofrms","platforms"],["plattform","platform"],["plattforms","platforms"],["plausability","plausibility"],["plausable","plausible"],["playble","playable"],["playge","plague"],["playgerise","plagiarise"],["playgerize","plagiarize"],["playgropund","playground"],["playist","playlist"],["playists","playlists"],["playright","playwright"],["playwrite","playwright"],["playwrites","playwrights"],["plcae","place"],["plcaebo","placebo"],["plcaed","placed"],["plcaeholder","placeholder"],["plcaeholders","placeholders"],["plcaement","placement"],["plcaements","placements"],["plcaes","places"],["pleaase","please"],["pleacing","placing"],["pleae","please"],["pleaee","please"],["pleaes","please"],["pleasd","pleased"],["pleasent","pleasant"],["pleasently","pleasantly"],["plebicite","plebiscite"],["plecing","placing"],["plent","plenty"],["plesae","please"],["plesant","pleasant"],["plese","please"],["plesently","pleasantly"],["pliars","pliers"],["pllatforms","platforms"],["ploted","plotted"],["ploting","plotting"],["ploynomial","polynomial"],["ploynomials","polynomials"],["pltform","platform"],["pltforms","platforms"],["plugable","pluggable"],["pluged","plugged"],["pluign","plugin"],["pluigns","plugins"],["pluse","pulse"],["plyotropy","pleiotropy"],["pobular","popular"],["pobularity","popularity"],["podule","module"],["poenis","penis"],["poential","potential"],["poentially","potentially"],["poentials","potentials"],["poeoples","peoples"],["poeple","people"],["poety","poetry"],["pogress","progress"],["poicies","policies"],["poicy","policy"],["poiint","point"],["poiints","points"],["poind","point"],["poindcloud","pointcloud"],["poiner","pointer"],["poing","point"],["poinits","points"],["poinnter","pointer"],["poins","points"],["pointeres","pointers"],["pointes","points"],["pointetr","pointer"],["pointetrs","pointers"],["pointeur","pointer"],["pointseta","poinsettia"],["pointss","points"],["pointzer","pointer"],["poinyent","poignant"],["poisin","poison"],["poisition","position"],["poisitioned","positioned"],["poisitioning","positioning"],["poisitionning","positioning"],["poisitions","positions"],["poistion","position"],["poistioned","positioned"],["poistioning","positioning"],["poistions","positions"],["poistive","positive"],["poistively","positively"],["poistives","positives"],["poistivly","positively"],["poit","point"],["poitd","pointed"],["poited","pointed"],["poiter","pointer"],["poiters","pointers"],["poiting","pointing"],["poitless","pointless"],["poitlessly","pointlessly"],["poitn","point"],["poitnd","pointed"],["poitned","pointed"],["poitner","pointer"],["poitnes","points"],["poitning","pointing"],["poitns","points"],["poits","points"],["poiunter","pointer"],["poject","project"],["pojecting","projecting"],["pojnt","point"],["pojrect","project"],["pojrected","projected"],["pojrecting","projecting"],["pojrection","projection"],["pojrections","projections"],["pojrector","projector"],["pojrectors","projectors"],["pojrects","projects"],["poket","pocket"],["polariy","polarity"],["polgon","polygon"],["polgons","polygons"],["polical","political"],["policiy","policy"],["poligon","polygon"],["poligons","polygons"],["polinator","pollinator"],["polinators","pollinators"],["politican","politician"],["politicans","politicians"],["politicing","politicking"],["pollenate","pollinate"],["polltry","poultry"],["polocies","policies"],["polocy","policy"],["polocys","policies"],["pologon","polygon"],["pologons","polygons"],["polotic","politic"],["polotical","political"],["polotics","politics"],["poltical","political"],["poltry","poultry"],["polute","pollute"],["poluted","polluted"],["polutes","pollutes"],["poluting","polluting"],["polution","pollution"],["polyar","polar"],["polyedral","polyhedral"],["polygond","polygons"],["polygone","polygon"],["polymorpic","polymorphic"],["polynomal","polynomial"],["polynomals","polynomials"],["polyphonyic","polyphonic"],["polypoygon","polypolygon"],["polypoylgons","polypolygons"],["polysaccaride","polysaccharide"],["polysaccharid","polysaccharide"],["pomegranite","pomegranate"],["pomotion","promotion"],["pompay","Pompeii"],["ponint","point"],["poninted","pointed"],["poninter","pointer"],["poninting","pointing"],["ponints","points"],["ponit","point"],["ponitd","pointed"],["ponited","pointed"],["poniter","pointer"],["poniters","pointers"],["ponits","points"],["pont","point"],["pontential","potential"],["ponter","pointer"],["ponting","pointing"],["ponts","points"],["pontuation","punctuation"],["pooint","point"],["poointed","pointed"],["poointer","pointer"],["pooints","points"],["poost","post"],["poperee","potpourri"],["poperties","properties"],["popoen","popen"],["popolate","populate"],["popolated","populated"],["popolates","populates"],["popolating","populating"],["poportional","proportional"],["popoulation","population"],["popoup","popup"],["poppup","popup"],["popularaty","popularity"],["populare","popular"],["populer","popular"],["popullate","populate"],["popullated","populated"],["popuplar","popular"],["popuplarity","popularity"],["popuplate","populate"],["popuplated","populated"],["popuplates","populates"],["popuplating","populating"],["popuplation","population"],["porbably","probably"],["porblem","problem"],["porblems","problems"],["porcess","process"],["porcessed","processed"],["porcesses","processes"],["porcessing","processing"],["porcessor","processor"],["porcessors","processors"],["porgram","program"],["porgrammeer","programmer"],["porgrammeers","programmers"],["porgramming","programming"],["porgrams","programs"],["poriferal","peripheral"],["porject","project"],["porjection","projection"],["porjects","projects"],["porotocol","protocol"],["porotocols","protocols"],["porperties","properties"],["porperty","property"],["porportion","proportion"],["porportional","proportional"],["porportionally","proportionally"],["porportioning","proportioning"],["porportions","proportions"],["porsalin","porcelain"],["porshan","portion"],["porshon","portion"],["portait","portrait"],["portaits","portraits"],["portayed","portrayed"],["portected","protected"],["portguese","Portuguese"],["portioon","portion"],["portraing","portraying"],["portugese","Portuguese"],["portuguease","Portuguese"],["portugues","Portuguese"],["porve","prove"],["porved","proved"],["porven","proven"],["porves","proves"],["porvide","provide"],["porvided","provided"],["porvider","provider"],["porvides","provides"],["porviding","providing"],["porvids","provides"],["porving","proving"],["posative","positive"],["posatives","positives"],["posativity","positivity"],["poseesions","possessions"],["posess","possess"],["posessed","possessed"],["posesses","possesses"],["posessing","possessing"],["posession","possession"],["posessions","possessions"],["posibilities","possibilities"],["posibility","possibility"],["posibilties","possibilities"],["posible","possible"],["posiblity","possibility"],["posibly","possibly"],["posiitive","positive"],["posiitives","positives"],["posiitivity","positivity"],["posisition","position"],["posisitioned","positioned"],["posistion","position"],["positionn","position"],["positionned","positioned"],["positionnes","positions"],["positionning","positioning"],["positionns","positions"],["positiv","positive"],["positivie","positive"],["positivies","positives"],["positivly","positively"],["positoin","position"],["positoined","positioned"],["positoins","positions"],["positonal","positional"],["positoned","positioned"],["positoning","positioning"],["positve","positive"],["positves","positives"],["POSIX-complient","POSIX-compliant"],["pospone","postpone"],["posponed","postponed"],["posption","position"],["possabilites","possibilities"],["possabilities","possibilities"],["possability","possibility"],["possabilties","possibilities"],["possabily","possibly"],["possable","possible"],["possably","possibly"],["possbily","possibly"],["possble","possible"],["possbly","possibly"],["posseses","possesses"],["possesing","possessing"],["possesion","possession"],["possesive","possessive"],["possessess","possesses"],["possiable","possible"],["possibbe","possible"],["possibe","possible"],["possibile","possible"],["possibilies","possibilities"],["possibilites","possibilities"],["possibilitities","possibilities"],["possibiliy","possibility"],["possibillity","possibility"],["possibilties","possibilities"],["possibilty","possibility"],["possibily","possibly"],["possibities","possibilities"],["possibity","possibility"],["possiblble","possible"],["possiblec","possible"],["possiblely","possibly"],["possiblility","possibility"],["possiblilty","possibility"],["possiblities","possibilities"],["possiblity","possibility"],["possiblly","possibly"],["possilbe","possible"],["possily","possibly"],["possition","position"],["possitive","positive"],["possitives","positives"],["possobily","possibly"],["possoble","possible"],["possobly","possibly"],["posssible","possible"],["post-morten","post-mortem"],["post-proces","post-process"],["post-procesing","post-processing"],["postcondtion","postcondition"],["postcondtions","postconditions"],["Postdam","Potsdam"],["postgress","PostgreSQL"],["postgressql","PostgreSQL"],["postgrsql","PostgreSQL"],["posthomous","posthumous"],["postiional","positional"],["postiive","positive"],["postincremend","postincrement"],["postion","position"],["postioned","positioned"],["postions","positions"],["postition","position"],["postitive","positive"],["postitives","positives"],["postive","positive"],["postives","positives"],["postmage","postimage"],["postphoned","postponed"],["postpocessing","postprocessing"],["postponinig","postponing"],["postprocesing","postprocessing"],["postscritp","postscript"],["postulat","postulate"],["postuminus","posthumous"],["postumus","posthumous"],["potatoe","potato"],["potatos","potatoes"],["potencial","potential"],["potencially","potentially"],["potencials","potentials"],["potenial","potential"],["potenially","potentially"],["potentail","potential"],["potentailly","potentially"],["potentails","potentials"],["potental","potential"],["potentally","potentially"],["potentatially","potentially"],["potententially","potentially"],["potentiallly","potentially"],["potentialy","potentially"],["potentiel","potential"],["potentiomenter","potentiometer"],["potition","position"],["potocol","protocol"],["potrait","portrait"],["potrayed","portrayed"],["poulations","populations"],["pount","point"],["pounts","points"],["poupular","popular"],["poverful","powerful"],["poweful","powerful"],["powerfull","powerful"],["powerppc","powerpc"],["pozitive","positive"],["pozitively","positively"],["pozitives","positives"],["ppcheck","cppcheck"],["ppeline","pipeline"],["ppelines","pipelines"],["ppolygons","polygons"],["ppublisher","publisher"],["ppyint","pyint"],["praameter","parameter"],["praameters","parameters"],["prabability","probability"],["prabable","probable"],["prabably","probably"],["pracitcal","practical"],["pracitcally","practically"],["practial","practical"],["practially","practically"],["practicaly","practically"],["practicioner","practitioner"],["practicioners","practitioners"],["practicly","practically"],["practictitioner","practitioner"],["practictitioners","practitioners"],["practicval","practical"],["practioner","practitioner"],["practioners","practitioners"],["praefix","prefix"],["pragam","pragma"],["pragmato","pragma to"],["prairy","prairie"],["pramater","parameter"],["prameter","parameter"],["prameters","parameters"],["prarameter","parameter"],["prarameters","parameters"],["prarie","prairie"],["praries","prairies"],["pratical","practical"],["pratically","practically"],["pratice","practice"],["prcess","process"],["prcesses","processes"],["prcessing","processing"],["prcoess","process"],["prcoessed","processed"],["prcoesses","processes"],["prcoessing","processing"],["prctiles","percentiles"],["prdpagate","propagate"],["prdpagated","propagated"],["prdpagates","propagates"],["prdpagating","propagating"],["prdpagation","propagation"],["prdpagations","propagations"],["prdpagator","propagator"],["prdpagators","propagators"],["pre-condifure","pre-configure"],["pre-condifured","pre-configured"],["pre-confifure","pre-configure"],["pre-confifured","pre-configured"],["pre-confure","pre-configure"],["pre-confured","pre-configured"],["pre-congifure","pre-configure"],["pre-congifured","pre-configured"],["pre-defiend","pre-defined"],["pre-defiened","pre-defined"],["pre-empt","preempt"],["pre-pended","prepended"],["pre-pre-realease","pre-pre-release"],["pre-proces","pre-process"],["pre-procesing","pre-processing"],["pre-realease","pre-release"],["pre-registeres","pre-registers"],["prealocate","preallocate"],["prealocated","preallocated"],["prealocates","preallocates"],["prealocating","preallocating"],["preambule","preamble"],["preamle","preamble"],["preample","preamble"],["preaorocessing","preprocessing"],["preapared","prepared"],["preapre","prepare"],["preaprooved","preapproved"],["prebious","previous"],["precacheed","precached"],["precceding","preceding"],["precding","preceding"],["preced","precede"],["precedencs","precedence"],["precedessor","predecessor"],["preceds","precedes"],["preceision","precision"],["precence","presence"],["precendance","precedence"],["precendances","precedences"],["precende","precedence"],["precendece","precedence"],["precendeces","precedences"],["precendence","precedence"],["precendences","precedences"],["precendencies","precedences"],["precendent","precedent"],["precendes","precedences"],["precending","preceding"],["precends","precedence"],["precenences","preferences"],["precense","presence"],["precentage","percentage"],["precentile","percentile"],["precentiles","percentiles"],["precessing","processing"],["precice","precise"],["precicion","precision"],["precidence","precedence"],["precisily","precisely"],["precisionn","precision"],["precisision","precision"],["precisly","precisely"],["precison","precision"],["precize","precise"],["precomuted","precomputed"],["preconditoner","preconditioner"],["preconditoners","preconditioners"],["precondtion","precondition"],["precondtioner","preconditioner"],["precondtioners","preconditioners"],["precondtionner","preconditioner"],["precondtionners","preconditioners"],["precondtions","preconditions"],["preconfiged","preconfigured"],["precsions","precisions"],["precuation","precaution"],["preculde","preclude"],["preculded","precluded"],["preculdes","precludes"],["precumputed","precomputed"],["precurser","precursor"],["precussion","percussion"],["precussions","percussions"],["predecesor","predecessor"],["predecesors","predecessors"],["predeclarnig","predeclaring"],["predefiend","predefined"],["predefiened","predefined"],["predefiined","predefined"],["predefineds","predefined"],["predessor","predecessor"],["predfined","predefined"],["predicat","predicate"],["predicatble","predictable"],["predicitons","predictions"],["predictible","predictable"],["predifined","predefined"],["predomiantly","predominately"],["preeceding","preceding"],["preemptable","preemptible"],["preesnt","present"],["prefectches","prefetches"],["prefecth","prefetch"],["prefectly","perfectly"],["prefence","preference"],["prefences","preferences"],["preferance","preference"],["preferances","preferences"],["preferecne","preference"],["preferecnes","preferences"],["prefered","preferred"],["preferencfe","preference"],["preferencfes","preferences"],["preferes","prefers"],["prefering","preferring"],["prefernce","preference"],["prefernces","preferences"],["prefernec","preference"],["preferr","prefer"],["preferrable","preferable"],["preferrably","preferably"],["preferrence","preference"],["preferrences","preferences"],["preferrred","preferred"],["prefetchs","prefetches"],["prefex","prefix"],["preffer","prefer"],["prefferable","preferable"],["prefferably","preferably"],["preffered","preferred"],["preffix","prefix"],["preffixed","prefixed"],["preffixes","prefixes"],["preffixing","prefixing"],["prefices","prefixes"],["preformance","performance"],["preformances","performances"],["pregancies","pregnancies"],["prehaps","perhaps"],["preiod","period"],["preivew","preview"],["preivous","previous"],["prejected","projected"],["prejection","projection"],["prejections","projections"],["preliferation","proliferation"],["prelimitary","preliminary"],["premeire","premiere"],["premeired","premiered"],["premillenial","premillennial"],["preminence","preeminence"],["premission","permission"],["premit","permit"],["premits","permits"],["Premonasterians","Premonstratensians"],["premption","preemption"],["premptive","preemptive"],["premptively","preemptively"],["preocess","process"],["preocupation","preoccupation"],["preoperty","property"],["prepair","prepare"],["prepaired","prepared"],["prepand","prepend"],["preparetion","preparation"],["preparetions","preparations"],["prepartion","preparation"],["prepartions","preparations"],["prepate","prepare"],["prepated","prepared"],["prepates","prepares"],["prepatory","preparatory"],["prependet","prepended"],["prepented","prepended"],["preperation","preparation"],["preperations","preparations"],["preponderence","preponderance"],["preppend","prepend"],["preppended","prepended"],["preppendet","prepended"],["preppented","prepended"],["preprend","prepend"],["preprended","prepended"],["prepresent","represent"],["prepresented","represented"],["prepresents","represents"],["preproces","preprocess"],["preprocesing","preprocessing"],["preprocesor","preprocessor"],["preprocesser","preprocessor"],["preprocessers","preprocessors"],["preprocesssing","preprocessing"],["prequisite","prerequisite"],["prequisites","prerequisites"],["prerequesite","prerequisite"],["prerequesites","prerequisites"],["prerequisit","prerequisite"],["prerequisities","prerequisites"],["prerequisits","prerequisites"],["prerequiste","prerequisite"],["prerequsite","prerequisite"],["prerequsites","prerequisites"],["preriod","period"],["preriodic","periodic"],["prersistent","persistent"],["presance","presence"],["prescripe","prescribe"],["prescriped","prescribed"],["prescrition","prescription"],["prescritions","prescriptions"],["presearvation","preservation"],["presearvations","preservations"],["presearve","preserve"],["presearved","preserved"],["presearver","preserver"],["presearves","preserves"],["presearving","preserving"],["presedential","presidential"],["presenece","presence"],["presener","presenter"],["presense","presence"],["presentaion","presentation"],["presentaional","presentational"],["presentaions","presentations"],["presernt","present"],["preserrved","preserved"],["preserv","preserve"],["presetation","presentation"],["preseve","preserve"],["preseved","preserved"],["preseverance","perseverance"],["preseverence","perseverance"],["preseves","preserves"],["preseving","preserving"],["presicion","precision"],["presidenital","presidential"],["presidental","presidential"],["presist","persist"],["presistable","persistable"],["presistance","persistence"],["presistant","persistent"],["presistantly","persistently"],["presisted","persisted"],["presistence","persistence"],["presistency","persistency"],["presistent","persistent"],["presistently","persistently"],["presisting","persisting"],["presistion","precision"],["presists","persists"],["presitgious","prestigious"],["presmissions","permissions"],["presntation","presentation"],["presntations","presentations"],["prespective","perspective"],["presreved","preserved"],["pressent","present"],["pressentation","presentation"],["pressented","presented"],["pressre","pressure"],["pressue","pressure"],["pressues","pressures"],["prestigeous","prestigious"],["prestigous","prestigious"],["presuambly","presumably"],["presumabely","presumably"],["presumaby","presumably"],["presumebly","presumably"],["presumely","presumably"],["presumibly","presumably"],["pretaining","pertaining"],["pretect","protect"],["pretected","protected"],["pretecting","protecting"],["pretection","protection"],["pretects","protects"],["pretendend","pretended"],["pretty-printter","pretty-printer"],["preveiw","preview"],["preveiwed","previewed"],["preveiwer","previewer"],["preveiwers","previewers"],["preveiws","previews"],["prevelance","prevalence"],["prevelant","prevalent"],["preven","prevent"],["prevend","prevent"],["preverse","perverse"],["preverses","preserves"],["preverve","preserve"],["prevew","preview"],["prevews","previews"],["previewd","previewed"],["previious","previous"],["previlege","privilege"],["previoous","previous"],["previos","previous"],["previosly","previously"],["previosu","previous"],["previosuly","previously"],["previou","previous"],["previouls","previous"],["previoulsy","previously"],["previouly","previously"],["previouse","previous"],["previousl","previously"],["previousy","previously"],["previsou","previous"],["previsouly","previously"],["previuous","previous"],["previus","previous"],["previvous","previous"],["prevoius","previous"],["prevous","previous"],["prevously","previously"],["prewview","preview"],["prexisting","preexisting"],["prexixed","prefixed"],["prfer","prefer"],["prferable","preferable"],["prferables","preferable"],["prference","preference"],["prferred","preferred"],["prgram","program"],["priave","private"],["pricipal","principal"],["priciple","principle"],["priciples","principles"],["pricision","precision"],["priestood","priesthood"],["primaray","primary"],["primarely","primarily"],["primarly","primarily"],["primative","primitive"],["primatively","primitively"],["primatives","primitives"],["primay","primary"],["primeter","perimeter"],["primitave","primitive"],["primitiv","primitive"],["primitve","primitive"],["primitves","primitives"],["primive","primitive"],["primordal","primordial"],["princeple","principle"],["princeples","principles"],["princible","principle"],["principaly","principality"],["principial","principal"],["principlaity","principality"],["principly","principally"],["princliple","principle"],["prind","print"],["prinicipal","principal"],["prining","printing"],["printting","printing"],["prioirties","priorities"],["prioirty","priority"],["prioritiy","priority"],["priorization","prioritization"],["priorizations","prioritizations"],["priorty","priority"],["priot","prior"],["priotise","prioritise"],["priotised","prioritised"],["priotising","prioritising"],["priotities","priorities"],["priotitize","prioritize"],["priotity","priority"],["priotized","prioritized"],["priotizing","prioritizing"],["priots","priors"],["prirority","priority"],["pris","prise"],["priting","printing"],["privalege","privilege"],["privaleges","privileges"],["privaye","private"],["privcy","privacy"],["privde","provide"],["priveledge","privilege"],["priveledged","privileged"],["priveledges","privileges"],["privelege","privilege"],["priveleged","privileged"],["priveleges","privileges"],["privelige","privilege"],["priveliged","privileged"],["priveliges","privileges"],["privelleges","privileges"],["priviate","private"],["privide","provide"],["privided","provided"],["privides","provides"],["prividing","providing"],["priview","preview"],["privilage","privilege"],["privilaged","privileged"],["privilages","privileges"],["priviledge","privilege"],["priviledged","privileged"],["priviledges","privileges"],["privilidge","privilege"],["privilidged","privileged"],["privilidges","privileges"],["privilige","privilege"],["priviliged","privileged"],["priviliges","privileges"],["privious","previous"],["priviously","previously"],["privision","provision"],["privisional","provisional"],["privisions","provisions"],["privledge","privilege"],["privleges","privileges"],["privte","private"],["prject","project"],["prjecting","projecting"],["prjection","projection"],["prjections","projections"],["prjects","projects"],["prmitive","primitive"],["prmitives","primitives"],["prmopting","prompting"],["proable","probable"],["proably","probably"],["probabalistic","probabilistic"],["probabaly","probably"],["probabilaty","probability"],["probabilisitic","probabilistic"],["probabilites","probabilities"],["probabilty","probability"],["probablay","probably"],["probablistic","probabilistic"],["probablities","probabilities"],["probablity","probability"],["probablly","probably"],["probaby","probably"],["probalby","probably"],["probalibity","probability"],["probaly","probably"],["probbably","probably"],["probbailities","probabilities"],["probbaility","probability"],["probbaly","probably"],["probbed","probed"],["probblem","problem"],["probblems","problems"],["probblez","problem"],["probblezs","problems"],["probbly","probably"],["probelm","problem"],["probelmatic","problematic"],["probelms","problems"],["probem","problem"],["proberly","properly"],["problably","probably"],["problaem","problem"],["problaems","problems"],["problamatic","problematic"],["probleme","problem"],["problemes","problems"],["problimatic","problematic"],["problme","problem"],["problmes","problems"],["probly","probably"],["procceed","proceed"],["proccesor","processor"],["proccesors","processors"],["proccess","process"],["proccessed","processed"],["proccesses","processes"],["proccessing","processing"],["proccessor","processor"],["proccessors","processors"],["procecure","procedure"],["procecures","procedures"],["procedger","procedure"],["procedings","proceedings"],["procedre","procedure"],["procedres","procedures"],["proceedes","proceeds"],["proceedure","procedure"],["proceedures","procedures"],["proceeed","proceed"],["proceeeded","proceeded"],["proceeeding","proceeding"],["proceeeds","proceeds"],["proceeedures","procedures"],["procees","process"],["proceesed","processed"],["proceesor","processor"],["procelain","porcelain"],["procelains","porcelains"],["procentual","percentual"],["proces","process"],["procesed","processed"],["proceses","processes"],["proceshandler","processhandler"],["procesing","processing"],["procesor","processor"],["processeed","processed"],["processees","processes"],["processer","processor"],["processess","processes"],["processessing","processing"],["processig","processing"],["processinf","processing"],["processore","processor"],["processpr","processor"],["processsed","processed"],["processses","processes"],["processsing","processing"],["processsors","processors"],["procesure","procedure"],["procesures","procedures"],["procide","provide"],["procided","provided"],["procides","provides"],["proclaimation","proclamation"],["proclamed","proclaimed"],["proclaming","proclaiming"],["proclomation","proclamation"],["procoess","process"],["procoessed","processed"],["procoessing","processing"],["proctect","protect"],["proctected","protected"],["proctecting","protecting"],["proctects","protects"],["procteted","protected"],["procude","produce"],["procuded","produced"],["prodceding","proceeding"],["prodecure","procedure"],["producable","producible"],["producables","producible"],["produciton","production"],["producitons","productions"],["producted","produced"],["productiviy","productivity"],["produkt","product"],["produse","produce"],["prodused","produced"],["produses","produces"],["proedural","procedural"],["proedure","procedure"],["proedures","procedures"],["proejct","project"],["proejcted","projected"],["proejcting","projecting"],["proejction","projection"],["proepr","proper"],["proeprly","properly"],["proeprties","properties"],["proeprty","property"],["proerties","properties"],["proessing","processing"],["profesional","professional"],["profesionally","professionally"],["profesionals","professionals"],["profesor","professor"],["professer","professor"],["proffesed","professed"],["proffesion","profession"],["proffesional","professional"],["proffesor","professor"],["proffessor","professor"],["profie","profile"],["profied","profiled"],["profier","profiler"],["profies","profiles"],["profilic","prolific"],["profirle","profile"],["profirled","profiled"],["profirler","profiler"],["profirles","profiles"],["profissional","professional"],["proflie","profile"],["proflier","profiler"],["proflies","profiles"],["profling","profiling"],["profund","profound"],["profundly","profoundly"],["progagate","propagate"],["progagated","propagated"],["progagates","propagates"],["progagating","propagating"],["progagation","propagation"],["progagations","propagations"],["progagator","propagator"],["progagators","propagators"],["progam","program"],["progamability","programmability"],["progamable","programmable"],["progamatic","programmatic"],["progamatically","programmatically"],["progamed","programmed"],["progamer","programmer"],["progamers","programmers"],["progaming","programming"],["progamm","program"],["progammability","programmability"],["progammable","programmable"],["progammatic","programmatic"],["progammatically","programmatically"],["progammed","programmed"],["progammer","programmer"],["progammers","programmers"],["progamming","programming"],["progamms","programs"],["progams","programs"],["progapate","propagate"],["progapated","propagated"],["progapates","propagates"],["progapating","propagating"],["progapation","propagation"],["progapations","propagations"],["progapator","propagator"],["progapators","propagators"],["progaramm","program"],["progarammability","programmability"],["progarammable","programmable"],["progarammatic","programmatic"],["progarammatically","programmatically"],["progarammed","programmed"],["progarammer","programmer"],["progarammers","programmers"],["progaramming","programming"],["progaramms","programs"],["progarm","program"],["progarmability","programmability"],["progarmable","programmable"],["progarmatic","programmatic"],["progarmatically","programmatically"],["progarmed","programmed"],["progarmer","programmer"],["progarmers","programmers"],["progarming","programming"],["progarms","programs"],["progate","propagate"],["progated","propagated"],["progates","propagates"],["progating","propagating"],["progation","propagation"],["progations","propagations"],["progess","progress"],["progessbar","progressbar"],["progessed","progressed"],["progesses","progresses"],["progessive","progressive"],["progessor","progressor"],["progesss","progress"],["progesssive","progressive"],["progidy","prodigy"],["programable","programmable"],["programatic","programmatic"],["programatically","programmatically"],["programattically","programmatically"],["programd","programmed"],["programemer","programmer"],["programemers","programmers"],["programers","programmers"],["programmaticaly","programmatically"],["programmend","programmed"],["programmetically","programmatically"],["programmical","programmatical"],["programmign","programming"],["programmming","programming"],["programms","programs"],["progreess","progress"],["progres","progress"],["progresively","progressively"],["progresss","progress"],["progrewss","progress"],["progrmae","program"],["progrss","progress"],["prohabition","prohibition"],["prohibitted","prohibited"],["prohibitting","prohibiting"],["prohibt","prohibit"],["prohibted","prohibited"],["prohibting","prohibiting"],["prohibts","prohibits"],["proirity","priority"],["projct's","project's"],["projct","project"],["projction","projection"],["projctions","projections"],["projctor","projector"],["projctors","projectors"],["projcts","projects"],["projectd","projected"],["projectio","projection"],["projecttion","projection"],["projet","project"],["projetction","projection"],["projeted","projected"],["projeting","projecting"],["projets","projects"],["prolbems","problems"],["prolem","problem"],["prolematic","problematic"],["prolems","problems"],["prologomena","prolegomena"],["prominance","prominence"],["prominant","prominent"],["prominantly","prominently"],["promis","promise"],["promiscous","promiscuous"],["promiss","promise"],["promissed","promised"],["promisses","promises"],["promissing","promising"],["promixity","proximity"],["prommpt","prompt"],["prommpts","prompts"],["promotted","promoted"],["promprted","prompted"],["promps","prompts"],["promt","prompt"],["promts","prompts"],["pronnounced","pronounced"],["pronomial","pronominal"],["prononciation","pronunciation"],["pronouce","pronounce"],["pronouced","pronounced"],["pronounched","pronounced"],["pronounciation","pronunciation"],["pronunce","pronounce"],["proocecure","procedure"],["proocecures","procedures"],["proocedure","procedure"],["proocedures","procedures"],["proocess","process"],["proocessed","processed"],["proocesses","processes"],["proocessing","processing"],["proocol","protocol"],["proocols","protocols"],["prooduce","produce"],["prooduced","produced"],["prooduces","produces"],["prooduct","product"],["prooerties","properties"],["prooerty","property"],["prool","pool"],["prooof","proof"],["prooper","proper"],["prooperly","properly"],["prooperties","properties"],["prooperty","property"],["proose","propose"],["proosed","proposed"],["prooses","proposes"],["proove","prove"],["prooved","proved"],["prooven","proven"],["prooves","proves"],["prooving","proving"],["proovread","proofread"],["prooxies","proxies"],["prooxy","proxy"],["propably","probably"],["propage","propagate"],["propatagion","propagation"],["propator","propagator"],["propators","propagators"],["propbably","probably"],["propely","properly"],["propeoperties","properties"],["propereties","properties"],["properety","property"],["properies","properties"],["properites","properties"],["properities","properties"],["properries","properties"],["properrt","property"],["properrys","properties"],["propert","property"],["properteis","properties"],["propertery","property"],["propertion","proportion"],["propertional","proportional"],["propertions","proportions"],["propertise","properties"],["propertu","property"],["propertus","properties"],["propertys","properties"],["propertyst","properties"],["propeties","properties"],["propetry","property"],["propetrys","properties"],["propety","property"],["propetys","properties"],["propgated","propagated"],["prophacy","prophecy"],["propietary","proprietary"],["propietries","proprietaries"],["propietry","proprietary"],["propigate","propagate"],["propigation","propagation"],["proplem","problem"],["propmt","prompt"],["propmted","prompted"],["propmter","prompter"],["propmts","prompts"],["propoagate","propagate"],["propoerties","properties"],["propoerty","property"],["propoganda","propaganda"],["propogate","propagate"],["propogated","propagated"],["propogates","propagates"],["propogating","propagating"],["propogation","propagation"],["proporpotion","proportion"],["proporpotional","proportional"],["proportianal","proportional"],["proporties","properties"],["proportinal","proportional"],["proporty","property"],["propostion","proposition"],["proppely","properly"],["propper","proper"],["propperly","properly"],["propperties","properties"],["propperty","property"],["proprely","properly"],["propreties","properties"],["proprety","property"],["proprietory","proprietary"],["proproable","probable"],["proproably","probably"],["proprocessed","preprocessed"],["proprogate","propagate"],["proprogated","propagated"],["proprogates","propagates"],["proprogating","propagating"],["proprogation","propagation"],["proprogations","propagations"],["proprogator","propagator"],["proprogators","propagators"],["proproties","properties"],["proprotion","proportion"],["proprotional","proportional"],["proprotionally","proportionally"],["proprotions","proportions"],["proprty","property"],["propt","prompt"],["propteries","properties"],["propterties","properties"],["propterty","property"],["propvider","provider"],["prority","priority"],["prorotype","prototype"],["proseletyzing","proselytizing"],["prosess","process"],["prosessor","processor"],["protable","portable"],["protaganist","protagonist"],["protaganists","protagonists"],["protcol","protocol"],["protcols","protocols"],["protcool","protocol"],["protcools","protocols"],["protcted","protected"],["protecion","protection"],["protectiv","protective"],["protedcted","protected"],["protential","potential"],["protext","protect"],["protocal","protocol"],["protocals","protocols"],["protocl","protocol"],["protocls","protocols"],["protoco","protocol"],["protocoll","protocol"],["protocolls","protocols"],["protocos","protocols"],["protoganist","protagonist"],["protoge","protege"],["protol","protocol"],["protols","protocols"],["prototyes","prototypes"],["protoype","prototype"],["protoyped","prototyped"],["protoypes","prototypes"],["protoyping","prototyping"],["protoytpe","prototype"],["protoytpes","prototypes"],["protrait","portrait"],["protraits","portraits"],["protrayed","portrayed"],["protruberance","protuberance"],["protruberances","protuberances"],["prouncements","pronouncements"],["provacative","provocative"],["provded","provided"],["provder","provider"],["provdided","provided"],["provdie","provide"],["provdied","provided"],["provdies","provides"],["provding","providing"],["provences","provinces"],["provicde","provide"],["provicded","provided"],["provicdes","provides"],["provicial","provincial"],["provideres","providers"],["providewd","provided"],["providfers","providers"],["provieded","provided"],["proviedes","provides"],["provinicial","provincial"],["provisioing","provisioning"],["provisiong","provisioning"],["provisionging","provisioning"],["provisiosn","provision"],["provisonal","provisional"],["provive","provide"],["provived","provided"],["provives","provides"],["proviving","providing"],["provode","provide"],["provoded","provided"],["provoder","provider"],["provodes","provides"],["provoding","providing"],["provods","provides"],["provsioning","provisioning"],["proximty","proximity"],["prozess","process"],["prpeparations","preparations"],["prpose","propose"],["prposed","proposed"],["prposer","proposer"],["prposers","proposers"],["prposes","proposes"],["prposiing","proposing"],["prrcision","precision"],["prrottypes","prototypes"],["prset","preset"],["prsets","presets"],["prtinf","printf"],["prufe","proof"],["prviate","private"],["psaswd","passwd"],["pseude","pseudo"],["pseudononymous","pseudonymous"],["pseudonyn","pseudonym"],["pseudopoential","pseudopotential"],["pseudopoentials","pseudopotentials"],["pseudorinverse","pseudoinverse"],["pseuo-palette","pseudo-palette"],["psitoin","position"],["psitoined","positioned"],["psitoins","positions"],["psot","post"],["psots","posts"],["psrameter","parameter"],["pssed","passed"],["pssibility","possibility"],["psudo","pseudo"],["psudoinverse","pseudoinverse"],["psuedo","pseudo"],["psuedo-fork","pseudo-fork"],["psuedoinverse","pseudoinverse"],["psuedolayer","pseudolayer"],["psuh","push"],["psychadelic","psychedelic"],["psycology","psychology"],["psyhic","psychic"],["ptd","pdf"],["ptherad","pthread"],["ptherads","pthreads"],["pthon","python"],["pthred","pthread"],["pthreds","pthreads"],["ptorions","portions"],["ptrss","press"],["pubilsh","publish"],["pubilshed","published"],["pubilsher","publisher"],["pubilshers","publishers"],["pubilshing","publishing"],["pubish","publish"],["pubished","published"],["pubisher","publisher"],["pubishers","publishers"],["pubishing","publishing"],["publcation","publication"],["publcise","publicise"],["publcize","publicize"],["publiaher","publisher"],["publically","publicly"],["publicaly","publicly"],["publiched","published"],["publicher","publisher"],["publichers","publishers"],["publiches","publishes"],["publiching","publishing"],["publihsed","published"],["publihser","publisher"],["publised","published"],["publisehd","published"],["publisehr","publisher"],["publisehrs","publishers"],["publiser","publisher"],["publisers","publishers"],["publisged","published"],["publisger","publisher"],["publisgers","publishers"],["publishd","published"],["publisheed","published"],["publisherr","publisher"],["publishher","publisher"],["publishor","publisher"],["publishr","publisher"],["publishre","publisher"],["publishrs","publishers"],["publissher","publisher"],["publlisher","publisher"],["publsh","publish"],["publshed","published"],["publsher","publisher"],["publshers","publishers"],["publshing","publishing"],["publsih","publish"],["publsihed","published"],["publsiher","publisher"],["publsihers","publishers"],["publsihes","publishes"],["publsihing","publishing"],["publuc","public"],["publucation","publication"],["publush","publish"],["publusher","publisher"],["publushers","publishers"],["publushes","publishes"],["publushing","publishing"],["puchasing","purchasing"],["Pucini","Puccini"],["Puertorrican","Puerto Rican"],["Puertorricans","Puerto Ricans"],["pulisher","publisher"],["pullrequest","pull request"],["pullrequests","pull requests"],["pumkin","pumpkin"],["punctation","punctuation"],["puplar","popular"],["puplarity","popularity"],["puplate","populate"],["puplated","populated"],["puplates","populates"],["puplating","populating"],["puplation","population"],["puplisher","publisher"],["pupose","purpose"],["puposes","purposes"],["pupulated","populated"],["purcahed","purchased"],["purcahse","purchase"],["purgest","purges"],["puritannical","puritanical"],["purposedly","purposely"],["purpotedly","purportedly"],["purpse","purpose"],["pursuade","persuade"],["pursuaded","persuaded"],["pursuades","persuades"],["pusehd","pushed"],["pususading","persuading"],["puting","putting"],["putpose","purpose"],["putposed","purposed"],["putposes","purposes"],["pwoer","power"],["pxoxied","proxied"],["pxoxies","proxies"],["pxoxy","proxy"],["pyhon","python"],["pyhsical","physical"],["pyhsically","physically"],["pyhsicals","physicals"],["pyhsicaly","physically"],["pyhthon","python"],["pyhton","python"],["pyramide","pyramid"],["pyramides","pyramids"],["pyrhon","python"],["pyscic","psychic"],["pythin","python"],["pythjon","python"],["pytnon","python"],["pytohn","python"],["pyton","python"],["pytyon","python"],["qest","quest"],["qests","quests"],["qeuest","quest"],["qeuests","quests"],["qeueue","queue"],["qeust","quest"],["qeusts","quests"],["qiest","quest"],["qiests","quests"],["qith","with"],["qoute","quote"],["qouted","quoted"],["qoutes","quotes"],["qouting","quoting"],["quadddec","quaddec"],["quadranle","quadrangle"],["quailified","qualified"],["qualfied","qualified"],["qualfy","qualify"],["qualifer","qualifier"],["qualitification","qualification"],["qualitifications","qualifications"],["quanitified","quantified"],["quantaties","quantities"],["quantaty","quantity"],["quantitites","quantities"],["quantititive","quantitative"],["quantitity","quantity"],["quantitiy","quantity"],["quarantaine","quarantine"],["quarentine","quarantine"],["quartenion","quaternion"],["quartenions","quaternions"],["quartically","quadratically"],["quatation","quotation"],["quater","quarter"],["quation","equation"],["quations","equations"],["quckstarter","quickstarter"],["qudrangles","quadrangles"],["quee","queue"],["Queenland","Queensland"],["queing","queueing"],["queiried","queried"],["queisce","quiesce"],["queriable","queryable"],["quering","querying"],["querries","queries"],["queryies","queries"],["queryinterace","queryinterface"],["querys","queries"],["queset","quest"],["quesets","quests"],["quesiton","question"],["quesitonable","questionable"],["quesitons","questions"],["quesr","quest"],["quesrs","quests"],["questionaire","questionnaire"],["questionnair","questionnaire"],["questoin","question"],["questoins","questions"],["questonable","questionable"],["queu","queue"],["queueud","queued"],["queus","queues"],["quew","queue"],["quickier","quicker"],["quicklyu","quickly"],["quickyl","quickly"],["quicly","quickly"],["quiessent","quiescent"],["quiests","quests"],["quikc","quick"],["quinessential","quintessential"],["quiting","quitting"],["quitt","quit"],["quitted","quit"],["quizes","quizzes"],["quotaion","quotation"],["quoteed","quoted"],["quottes","quotes"],["quried","queried"],["quroum","quorum"],["qust","quest"],["qusts","quests"],["rabinnical","rabbinical"],["racaus","raucous"],["ractise","practise"],["radation","radiation"],["radiactive","radioactive"],["radiaton","radiation"],["radify","ratify"],["radiobuttion","radiobutton"],["radis","radix"],["rady","ready"],["raed","read"],["raeding","reading"],["raeds","reads"],["raedy","ready"],["raelly","really"],["raisedd","raised"],["ralation","relation"],["randmom","random"],["randomally","randomly"],["raoming","roaming"],["raotat","rotate"],["raotate","rotate"],["raotated","rotated"],["raotates","rotates"],["raotating","rotating"],["raotation","rotation"],["raotations","rotations"],["raotats","rotates"],["raplace","replace"],["raplacing","replacing"],["rapresent","represent"],["rapresentation","representation"],["rapresented","represented"],["rapresenting","representing"],["rapresents","represents"],["rapsberry","raspberry"],["rarelly","rarely"],["rarified","rarefied"],["rasberry","raspberry"],["rasie","raise"],["rasied","raised"],["rasies","raises"],["rasiing","raising"],["rasing","raising"],["rasons","reasons"],["raspbery","raspberry"],["raspoberry","raspberry"],["rathar","rather"],["rathern","rather"],["rcall","recall"],["rceate","create"],["rceating","creating"],["rduce","reduce"],["re-attachement","re-attachment"],["re-defiend","re-defined"],["re-engeneer","re-engineer"],["re-engeneering","re-engineering"],["re-evaulated","re-evaluated"],["re-impliment","re-implement"],["re-implimenting","re-implementing"],["re-negatiotiable","re-negotiable"],["re-negatiotiate","re-negotiate"],["re-negatiotiated","re-negotiated"],["re-negatiotiates","re-negotiates"],["re-negatiotiating","re-negotiating"],["re-negatiotiation","re-negotiation"],["re-negatiotiations","re-negotiations"],["re-negatiotiator","re-negotiator"],["re-negatiotiators","re-negotiators"],["re-negoable","re-negotiable"],["re-negoate","re-negotiate"],["re-negoated","re-negotiated"],["re-negoates","re-negotiates"],["re-negoatiable","re-negotiable"],["re-negoatiate","re-negotiate"],["re-negoatiated","re-negotiated"],["re-negoatiates","re-negotiates"],["re-negoatiating","re-negotiating"],["re-negoatiation","re-negotiation"],["re-negoatiations","re-negotiations"],["re-negoatiator","re-negotiator"],["re-negoatiators","re-negotiators"],["re-negoating","re-negotiating"],["re-negoation","re-negotiation"],["re-negoations","re-negotiations"],["re-negoator","re-negotiator"],["re-negoators","re-negotiators"],["re-negociable","re-negotiable"],["re-negociate","re-negotiate"],["re-negociated","re-negotiated"],["re-negociates","re-negotiates"],["re-negociating","re-negotiating"],["re-negociation","re-negotiation"],["re-negociations","re-negotiations"],["re-negociator","re-negotiator"],["re-negociators","re-negotiators"],["re-negogtiable","re-negotiable"],["re-negogtiate","re-negotiate"],["re-negogtiated","re-negotiated"],["re-negogtiates","re-negotiates"],["re-negogtiating","re-negotiating"],["re-negogtiation","re-negotiation"],["re-negogtiations","re-negotiations"],["re-negogtiator","re-negotiator"],["re-negogtiators","re-negotiators"],["re-negoitable","re-negotiable"],["re-negoitate","re-negotiate"],["re-negoitated","re-negotiated"],["re-negoitates","re-negotiates"],["re-negoitating","re-negotiating"],["re-negoitation","re-negotiation"],["re-negoitations","re-negotiations"],["re-negoitator","re-negotiator"],["re-negoitators","re-negotiators"],["re-negoptionsotiable","re-negotiable"],["re-negoptionsotiate","re-negotiate"],["re-negoptionsotiated","re-negotiated"],["re-negoptionsotiates","re-negotiates"],["re-negoptionsotiating","re-negotiating"],["re-negoptionsotiation","re-negotiation"],["re-negoptionsotiations","re-negotiations"],["re-negoptionsotiator","re-negotiator"],["re-negoptionsotiators","re-negotiators"],["re-negosiable","re-negotiable"],["re-negosiate","re-negotiate"],["re-negosiated","re-negotiated"],["re-negosiates","re-negotiates"],["re-negosiating","re-negotiating"],["re-negosiation","re-negotiation"],["re-negosiations","re-negotiations"],["re-negosiator","re-negotiator"],["re-negosiators","re-negotiators"],["re-negotable","re-negotiable"],["re-negotaiable","re-negotiable"],["re-negotaiate","re-negotiate"],["re-negotaiated","re-negotiated"],["re-negotaiates","re-negotiates"],["re-negotaiating","re-negotiating"],["re-negotaiation","re-negotiation"],["re-negotaiations","re-negotiations"],["re-negotaiator","re-negotiator"],["re-negotaiators","re-negotiators"],["re-negotaible","re-negotiable"],["re-negotaite","re-negotiate"],["re-negotaited","re-negotiated"],["re-negotaites","re-negotiates"],["re-negotaiting","re-negotiating"],["re-negotaition","re-negotiation"],["re-negotaitions","re-negotiations"],["re-negotaitor","re-negotiator"],["re-negotaitors","re-negotiators"],["re-negotate","re-negotiate"],["re-negotated","re-negotiated"],["re-negotates","re-negotiates"],["re-negotatiable","re-negotiable"],["re-negotatiate","re-negotiate"],["re-negotatiated","re-negotiated"],["re-negotatiates","re-negotiates"],["re-negotatiating","re-negotiating"],["re-negotatiation","re-negotiation"],["re-negotatiations","re-negotiations"],["re-negotatiator","re-negotiator"],["re-negotatiators","re-negotiators"],["re-negotatible","re-negotiable"],["re-negotatie","re-negotiate"],["re-negotatied","re-negotiated"],["re-negotaties","re-negotiates"],["re-negotating","re-negotiating"],["re-negotation","re-negotiation"],["re-negotations","re-negotiations"],["re-negotatior","re-negotiator"],["re-negotatiors","re-negotiators"],["re-negotator","re-negotiator"],["re-negotators","re-negotiators"],["re-negothiable","re-negotiable"],["re-negothiate","re-negotiate"],["re-negothiated","re-negotiated"],["re-negothiates","re-negotiates"],["re-negothiating","re-negotiating"],["re-negothiation","re-negotiation"],["re-negothiations","re-negotiations"],["re-negothiator","re-negotiator"],["re-negothiators","re-negotiators"],["re-negotible","re-negotiable"],["re-negoticable","re-negotiable"],["re-negoticate","re-negotiate"],["re-negoticated","re-negotiated"],["re-negoticates","re-negotiates"],["re-negoticating","re-negotiating"],["re-negotication","re-negotiation"],["re-negotications","re-negotiations"],["re-negoticator","re-negotiator"],["re-negoticators","re-negotiators"],["re-negotioable","re-negotiable"],["re-negotioate","re-negotiate"],["re-negotioated","re-negotiated"],["re-negotioates","re-negotiates"],["re-negotioating","re-negotiating"],["re-negotioation","re-negotiation"],["re-negotioations","re-negotiations"],["re-negotioator","re-negotiator"],["re-negotioators","re-negotiators"],["re-negotioble","re-negotiable"],["re-negotion","re-negotiation"],["re-negotionable","re-negotiable"],["re-negotionate","re-negotiate"],["re-negotionated","re-negotiated"],["re-negotionates","re-negotiates"],["re-negotionating","re-negotiating"],["re-negotionation","re-negotiation"],["re-negotionations","re-negotiations"],["re-negotionator","re-negotiator"],["re-negotionators","re-negotiators"],["re-negotions","re-negotiations"],["re-negotiotable","re-negotiable"],["re-negotiotate","re-negotiate"],["re-negotiotated","re-negotiated"],["re-negotiotates","re-negotiates"],["re-negotiotating","re-negotiating"],["re-negotiotation","re-negotiation"],["re-negotiotations","re-negotiations"],["re-negotiotator","re-negotiator"],["re-negotiotators","re-negotiators"],["re-negotiote","re-negotiate"],["re-negotioted","re-negotiated"],["re-negotiotes","re-negotiates"],["re-negotioting","re-negotiating"],["re-negotiotion","re-negotiation"],["re-negotiotions","re-negotiations"],["re-negotiotor","re-negotiator"],["re-negotiotors","re-negotiators"],["re-negotitable","re-negotiable"],["re-negotitae","re-negotiate"],["re-negotitaed","re-negotiated"],["re-negotitaes","re-negotiates"],["re-negotitaing","re-negotiating"],["re-negotitaion","re-negotiation"],["re-negotitaions","re-negotiations"],["re-negotitaor","re-negotiator"],["re-negotitaors","re-negotiators"],["re-negotitate","re-negotiate"],["re-negotitated","re-negotiated"],["re-negotitates","re-negotiates"],["re-negotitating","re-negotiating"],["re-negotitation","re-negotiation"],["re-negotitations","re-negotiations"],["re-negotitator","re-negotiator"],["re-negotitators","re-negotiators"],["re-negotite","re-negotiate"],["re-negotited","re-negotiated"],["re-negotites","re-negotiates"],["re-negotiting","re-negotiating"],["re-negotition","re-negotiation"],["re-negotitions","re-negotiations"],["re-negotitor","re-negotiator"],["re-negotitors","re-negotiators"],["re-negoziable","re-negotiable"],["re-negoziate","re-negotiate"],["re-negoziated","re-negotiated"],["re-negoziates","re-negotiates"],["re-negoziating","re-negotiating"],["re-negoziation","re-negotiation"],["re-negoziations","re-negotiations"],["re-negoziator","re-negotiator"],["re-negoziators","re-negotiators"],["re-realease","re-release"],["re-uplad","re-upload"],["re-upladed","re-uploaded"],["re-uplader","re-uploader"],["re-upladers","re-uploaders"],["re-uplading","re-uploading"],["re-uplads","re-uploads"],["re-uplaod","re-upload"],["re-uplaoded","re-uploaded"],["re-uplaoder","re-uploader"],["re-uplaoders","re-uploaders"],["re-uplaoding","re-uploading"],["re-uplaods","re-uploads"],["re-uplod","re-upload"],["re-uploded","re-uploaded"],["re-uploder","re-uploader"],["re-uploders","re-uploaders"],["re-uploding","re-uploading"],["re-uplods","re-uploads"],["reaaly","really"],["reaarange","rearrange"],["reaaranges","rearranges"],["reaasigned","reassigned"],["reacahable","reachable"],["reacahble","reachable"],["reaccurring","recurring"],["reaceive","receive"],["reacheable","reachable"],["reachers","readers"],["reachs","reaches"],["reacing","reaching"],["reacll","recall"],["reactquire","reacquire"],["readabilty","readability"],["readanle","readable"],["readapted","re-adapted"],["readble","readable"],["readdrss","readdress"],["readdrssed","readdressed"],["readdrsses","readdresses"],["readdrssing","readdressing"],["readeable","readable"],["reademe","README"],["readiable","readable"],["readibility","readability"],["readible","readable"],["readig","reading"],["readigs","readings"],["readius","radius"],["readl-only","read-only"],["readmition","readmission"],["readnig","reading"],["readning","reading"],["readyness","readiness"],["reaeched","reached"],["reagrding","regarding"],["reaktivate","reactivate"],["reaktivated","reactivated"],["realease","release"],["realeased","released"],["realeases","releases"],["realiable","reliable"],["realitime","realtime"],["realitvely","relatively"],["realiy","really"],["realiztion","realization"],["realiztions","realizations"],["realling","really"],["reallize","realize"],["reallllly","really"],["reallocae","reallocate"],["reallocaes","reallocates"],["reallocaiing","reallocating"],["reallocaing","reallocating"],["reallocaion","reallocation"],["reallocaions","reallocations"],["reallocaite","reallocate"],["reallocaites","reallocates"],["reallocaiting","reallocating"],["reallocaition","reallocation"],["reallocaitions","reallocations"],["reallocaiton","reallocation"],["reallocaitons","reallocations"],["realsitic","realistic"],["realted","related"],["realyl","really"],["reamde","README"],["reamins","remains"],["reander","render"],["reanme","rename"],["reanmed","renamed"],["reanmes","renames"],["reanming","renaming"],["reaon","reason"],["reaons","reasons"],["reapeat","repeat"],["reapeated","repeated"],["reapeater","repeater"],["reapeating","repeating"],["reapeats","repeats"],["reappeares","reappears"],["reapper","reappear"],["reappered","reappeared"],["reappering","reappearing"],["rearely","rarely"],["rearranable","rearrangeable"],["rearrane","rearrange"],["rearraned","rearranged"],["rearranement","rearrangement"],["rearranements","rearrangements"],["rearranent","rearrangement"],["rearranents","rearrangements"],["rearranes","rearranges"],["rearrang","rearrange"],["rearrangable","rearrangeable"],["rearrangaeble","rearrangeable"],["rearrangaelbe","rearrangeable"],["rearrangd","rearranged"],["rearrangde","rearranged"],["rearrangent","rearrangement"],["rearrangents","rearrangements"],["rearrangmeent","rearrangement"],["rearrangmeents","rearrangements"],["rearrangmenet","rearrangement"],["rearrangmenets","rearrangements"],["rearrangment","rearrangement"],["rearrangments","rearrangements"],["rearrangnig","rearranging"],["rearrangning","rearranging"],["rearrangs","rearranges"],["rearrangse","rearranges"],["rearrangt","rearrangement"],["rearrangte","rearrange"],["rearrangteable","rearrangeable"],["rearrangteables","rearrangeables"],["rearrangted","rearranged"],["rearrangtement","rearrangement"],["rearrangtements","rearrangements"],["rearrangtes","rearranges"],["rearrangting","rearranging"],["rearrangts","rearrangements"],["rearraning","rearranging"],["rearranment","rearrangement"],["rearranments","rearrangements"],["rearrant","rearrangement"],["rearrants","rearrangements"],["reasearch","research"],["reasearcher","researcher"],["reasearchers","researchers"],["reasnable","reasonable"],["reasoable","reasonable"],["reasonabily","reasonably"],["reasonble","reasonable"],["reasonbly","reasonably"],["reasonnable","reasonable"],["reasonnably","reasonably"],["reassinging","reassigning"],["reassocition","reassociation"],["reasssign","reassign"],["reatime","realtime"],["reattachement","reattachment"],["rebiulding","rebuilding"],["rebllions","rebellions"],["reboto","reboot"],["rebounce","rebound"],["rebuilded","rebuilt"],["rebuillt","rebuilt"],["rebuils","rebuilds"],["rebuit","rebuilt"],["rebuld","rebuild"],["rebulding","rebuilding"],["rebulds","rebuilds"],["rebulid","rebuild"],["rebuliding","rebuilding"],["rebulids","rebuilds"],["rebulit","rebuilt"],["recahed","reached"],["recal","recall"],["recalcualte","recalculate"],["recalcualted","recalculated"],["recalcualter","re-calculator"],["recalcualtes","recalculates"],["recalcualting","recalculating"],["recalcualtion","recalculation"],["recalcualtions","recalculations"],["recalcuate","recalculate"],["recalcuated","recalculated"],["recalcuates","recalculates"],["recalcuations","recalculations"],["recalculaion","recalculation"],["recalculatble","re-calculable"],["recalcution","recalculation"],["recalulate","recalculate"],["recalulation","recalculation"],["recangle","rectangle"],["recangles","rectangles"],["reccomend","recommend"],["reccomendations","recommendations"],["reccomended","recommended"],["reccomending","recommending"],["reccommend","recommend"],["reccommendation","recommendation"],["reccommendations","recommendations"],["reccommended","recommended"],["reccommending","recommending"],["reccommends","recommends"],["recconecct","reconnect"],["recconeccted","reconnected"],["recconeccting","reconnecting"],["recconecction","reconnection"],["recconecctions","reconnections"],["recconeccts","reconnects"],["recconect","reconnect"],["recconected","reconnected"],["recconecting","reconnecting"],["recconection","reconnection"],["recconections","reconnections"],["recconects","reconnects"],["recconeect","reconnect"],["recconeected","reconnected"],["recconeecting","reconnecting"],["recconeection","reconnection"],["recconeections","reconnections"],["recconeects","reconnects"],["recconenct","reconnect"],["recconencted","reconnected"],["recconencting","reconnecting"],["recconenction","reconnection"],["recconenctions","reconnections"],["recconencts","reconnects"],["recconet","reconnect"],["recconeted","reconnected"],["recconeting","reconnecting"],["recconetion","reconnection"],["recconetions","reconnections"],["recconets","reconnects"],["reccord","record"],["reccorded","recorded"],["reccording","recording"],["reccords","records"],["reccuring","recurring"],["reccursive","recursive"],["reccursively","recursively"],["receeded","receded"],["receeding","receding"],["receied","received"],["receieve","receive"],["receieved","received"],["receieves","receives"],["receieving","receiving"],["receipient","recipient"],["receipients","recipients"],["receiption","reception"],["receiv","receive"],["receivd","received"],["receivedfrom","received from"],["receiveing","receiving"],["receiviing","receiving"],["receivs","receives"],["recenet","recent"],["recenlty","recently"],["recenly","recently"],["recenty","recently"],["recepient","recipient"],["recepients","recipients"],["recepion","reception"],["receve","receive"],["receved","received"],["receves","receives"],["recevie","receive"],["recevied","received"],["recevier","receiver"],["recevies","receives"],["receving","receiving"],["rechable","reachable"],["rechargable","rechargeable"],["recheability","reachability"],["reched","reached"],["rechek","recheck"],["recide","reside"],["recided","resided"],["recident","resident"],["recidents","residents"],["reciding","residing"],["reciepents","recipients"],["reciept","receipt"],["recieve","receive"],["recieved","received"],["reciever","receiver"],["recievers","receivers"],["recieves","receives"],["recieving","receiving"],["recievs","receives"],["recipiant","recipient"],["recipiants","recipients"],["recipie","recipe"],["recipies","recipes"],["reciprocoal","reciprocal"],["reciprocoals","reciprocals"],["recive","receive"],["recived","received"],["reciver","receiver"],["recivers","receivers"],["recivership","receivership"],["recives","receives"],["reciving","receiving"],["reclaimation","reclamation"],["recntly","recently"],["recod","record"],["recofig","reconfig"],["recoginizing-","recognizing"],["recogise","recognise"],["recogize","recognize"],["recogized","recognized"],["recogizes","recognizes"],["recogizing","recognizing"],["recogniced","recognised"],["recogninse","recognise"],["recognizeable","recognizable"],["recognzied","recognized"],["recomend","recommend"],["recomendation","recommendation"],["recomendations","recommendations"],["recomendatoin","recommendation"],["recomendatoins","recommendations"],["recomended","recommended"],["recomending","recommending"],["recomends","recommends"],["recommad","recommend"],["recommaded","recommended"],["recommand","recommend"],["recommandation","recommendation"],["recommanded","recommended"],["recommanding","recommending"],["recommands","recommends"],["recommd","recommend"],["recommdation","recommendation"],["recommded","recommended"],["recommdend","recommend"],["recommdended","recommended"],["recommdends","recommends"],["recommds","recommends"],["recommed","recommend"],["recommedation","recommendation"],["recommedations","recommendations"],["recommeded","recommended"],["recommeding","recommending"],["recommeds","recommends"],["recommened","recommended"],["recommeneded","recommended"],["recommented","recommended"],["recommmend","recommend"],["recommmended","recommended"],["recommmends","recommends"],["recommnd","recommend"],["recommnded","recommended"],["recommnds","recommends"],["recommned","recommend"],["recommneded","recommended"],["recommneds","recommends"],["recommpile","recompile"],["recommpiled","recompiled"],["recompence","recompense"],["recomput","recompute"],["recomputaion","recomputation"],["recompuute","recompute"],["recompuuted","recomputed"],["recompuutes","recomputes"],["recompuuting","recomputing"],["reconaissance","reconnaissance"],["reconcilation","reconciliation"],["recondifure","reconfigure"],["reconecct","reconnect"],["reconeccted","reconnected"],["reconeccting","reconnecting"],["reconecction","reconnection"],["reconecctions","reconnections"],["reconeccts","reconnects"],["reconect","reconnect"],["reconected","reconnected"],["reconecting","reconnecting"],["reconection","reconnection"],["reconections","reconnections"],["reconects","reconnects"],["reconeect","reconnect"],["reconeected","reconnected"],["reconeecting","reconnecting"],["reconeection","reconnection"],["reconeections","reconnections"],["reconeects","reconnects"],["reconenct","reconnect"],["reconencted","reconnected"],["reconencting","reconnecting"],["reconenction","reconnection"],["reconenctions","reconnections"],["reconencts","reconnects"],["reconet","reconnect"],["reconeted","reconnected"],["reconeting","reconnecting"],["reconetion","reconnection"],["reconetions","reconnections"],["reconets","reconnects"],["reconfifure","reconfigure"],["reconfiged","reconfigured"],["reconfugire","reconfigure"],["reconfugre","reconfigure"],["reconfugure","reconfigure"],["reconfure","reconfigure"],["recongifure","reconfigure"],["recongize","recognize"],["recongized","recognized"],["recongnises","recognises"],["recongnizes","recognizes"],["reconize","recognize"],["reconized","recognized"],["reconnaisance","reconnaissance"],["reconnaissence","reconnaissance"],["reconnct","reconnect"],["reconncted","reconnected"],["reconncting","reconnecting"],["reconncts","reconnects"],["reconsidder","reconsider"],["reconstrcut","reconstruct"],["reconstrcuted","reconstructed"],["reconstrcution","reconstruction"],["reconstuct","reconstruct"],["reconstucted","reconstructed"],["reconstucting","reconstructing"],["reconstucts","reconstructs"],["reconsturction","reconstruction"],["recontruct","reconstruct"],["recontructed","reconstructed"],["recontructing","reconstructing"],["recontruction","reconstruction"],["recontructions","reconstructions"],["recontructor","reconstructor"],["recontructors","reconstructors"],["recontructs","reconstructs"],["recordproducer","record producer"],["recordss","records"],["recored","recorded"],["recoriding","recording"],["recourced","resourced"],["recources","resources"],["recourcing","resourcing"],["recpie","recipe"],["recpies","recipes"],["recquired","required"],["recrational","recreational"],["recreateation","recreation"],["recrod","record"],["recrods","records"],["recrusevly","recursively"],["recrusion","recursion"],["recrusive","recursive"],["recrusivelly","recursively"],["recrusively","recursively"],["rectange","rectangle"],["rectanges","rectangles"],["rectanglar","rectangular"],["rectangluar","rectangular"],["rectiinear","rectilinear"],["recude","reduce"],["recuiting","recruiting"],["reculrively","recursively"],["recuring","recurring"],["recurisvely","recursively"],["recurively","recursively"],["recurrance","recurrence"],["recursily","recursively"],["recursivelly","recursively"],["recursivion","recursion"],["recursivley","recursively"],["recursivly","recursively"],["recurssed","recursed"],["recursses","recurses"],["recurssing","recursing"],["recurssion","recursion"],["recurssive","recursive"],["recusrive","recursive"],["recusrively","recursively"],["recusrsive","recursive"],["recustion","recursion"],["recyclying","recycling"],["recylcing","recycling"],["recyle","recycle"],["recyled","recycled"],["recyles","recycles"],["recyling","recycling"],["redability","readability"],["redandant","redundant"],["redeable","readable"],["redeclaation","redeclaration"],["redefiend","redefined"],["redefiende","redefined"],["redefintion","redefinition"],["redefintions","redefinitions"],["redenderer","renderer"],["redered","rendered"],["redict","redirect"],["rediculous","ridiculous"],["redidual","residual"],["redifine","redefine"],["redifinition","redefinition"],["redifinitions","redefinitions"],["redifintion","redefinition"],["redifintions","redefinitions"],["reding","reading"],["redings","readings"],["redircet","redirect"],["redirectd","redirected"],["redirectrion","redirection"],["redisign","redesign"],["redistirbute","redistribute"],["redistirbuted","redistributed"],["redistirbutes","redistributes"],["redistirbuting","redistributing"],["redistirbution","redistribution"],["redistributeable","redistributable"],["redistrubute","redistribute"],["redistrubuted","redistributed"],["redistrubution","redistribution"],["redistrubutions","redistributions"],["redliens","redlines"],["rednerer","renderer"],["redonly","readonly"],["redudancy","redundancy"],["redudant","redundant"],["redunancy","redundancy"],["redunant","redundant"],["redundacy","redundancy"],["redundand","redundant"],["redundat","redundant"],["redundency","redundancy"],["redundent","redundant"],["reduntancy","redundancy"],["reduntant","redundant"],["reease","release"],["reeased","released"],["reeaser","releaser"],["reeasers","releasers"],["reeases","releases"],["reeasing","releasing"],["reedeming","redeeming"],["reegion","region"],["reegions","regions"],["reelation","relation"],["reelease","release"],["reenable","re-enable"],["reenabled","re-enabled"],["reename","rename"],["reencode","re-encode"],["reenfoce","reinforce"],["reenfoced","reinforced"],["reenforced","reinforced"],["reesrved","reserved"],["reesult","result"],["reeturn","return"],["reeturned","returned"],["reeturning","returning"],["reeturns","returns"],["reevalute","reevaluate"],["reevaulating","reevaluating"],["refcound","refcount"],["refcounf","refcount"],["refect","reflect"],["refected","reflected"],["refecting","reflecting"],["refectiv","reflective"],["refector","refactor"],["refectoring","refactoring"],["refects","reflects"],["refedendum","referendum"],["refeinement","refinement"],["refeinements","refinements"],["refelects","reflects"],["refence","reference"],["refences","references"],["refenence","reference"],["refenrenced","referenced"],["referal","referral"],["referance","reference"],["referanced","referenced"],["referances","references"],["referant","referent"],["referebces","references"],["referece","reference"],["referecence","reference"],["referecences","references"],["refereces","references"],["referecne","reference"],["refered","referred"],["referefences","references"],["referemce","reference"],["referemces","references"],["referenace","reference"],["referenc","reference"],["referencable","referenceable"],["referencial","referential"],["referencially","referentially"],["referencs","references"],["referenct","referenced"],["referene","reference"],["referenece","reference"],["refereneced","referenced"],["refereneces","references"],["referened","referenced"],["referenence","reference"],["referenenced","referenced"],["referenences","references"],["referenes","references"],["referennces","references"],["referense","reference"],["referensed","referenced"],["referenses","references"],["referenz","reference"],["referenzes","references"],["refererd","referred"],["refererence","reference"],["referiang","referring"],["refering","referring"],["refernce","reference"],["refernced","referenced"],["referncence","reference"],["referncences","references"],["refernces","references"],["referncial","referential"],["referncing","referencing"],["refernece","reference"],["referneced","referenced"],["referneces","references"],["refernnce","reference"],["referr","refer"],["referrence","reference"],["referrenced","referenced"],["referrences","references"],["referrencing","referencing"],["referreres","referrers"],["referres","refers"],["referrs","refers"],["refertence","reference"],["refertenced","referenced"],["refertences","references"],["refesh","refresh"],["refeshed","refreshed"],["refeshes","refreshes"],["refeshing","refreshing"],["reffered","referred"],["refference","reference"],["reffering","referring"],["refferr","refer"],["reffers","refers"],["refinemenet","refinement"],["refinmenet","refinement"],["refinment","refinement"],["reflet","reflect"],["refleted","reflected"],["refleting","reflecting"],["refletion","reflection"],["refletions","reflections"],["reflets","reflects"],["refocuss","refocus"],["refocussed","refocused"],["reformating","reformatting"],["reformattd","reformatted"],["refreh","refresh"],["refrence","reference"],["refrenced","referenced"],["refrences","references"],["refrencing","referencing"],["refrerence","reference"],["refrerenced","referenced"],["refrerenceing","referencing"],["refrerences","references"],["refrerencial","referential"],["refrers","refers"],["refreshs","refreshes"],["refreshses","refreshes"],["refridgeration","refrigeration"],["refridgerator","refrigerator"],["refromatting","refomatting"],["refromist","reformist"],["refrormatting","reformatting"],["refure","refuse"],["refures","refuses"],["refusla","refusal"],["regalar","regular"],["regalars","regulars"],["regardes","regards"],["regardles","regardless"],["regardlesss","regardless"],["regaring","regarding"],["regarldess","regardless"],["regarless","regardless"],["regart","regard"],["regarted","regarded"],["regarting","regarding"],["regartless","regardless"],["regconized","recognized"],["regeister","register"],["regeistered","registered"],["regeistration","registration"],["regenarated","regenerated"],["regenrated","regenerated"],["regenratet","regenerated"],["regenrating","regenerating"],["regenration","regeneration"],["regenrative","regenerative"],["regession","regression"],["regestered","registered"],["regidstered","registered"],["regio","region"],["regiser","register"],["regisration","registration"],["regist","register"],["registartion","registration"],["registe","register"],["registed","registered"],["registeing","registering"],["registeration","registration"],["registerered","registered"],["registeres","registers"],["registeresd","registered"],["registerred","registered"],["registert","registered"],["registery","registry"],["registes","registers"],["registing","registering"],["registors","registers"],["registrain","registration"],["registraion","registration"],["registraions","registrations"],["registraration","registration"],["registrated","registered"],["registred","registered"],["registrer","register"],["registring","registering"],["registrs","registers"],["registy","registry"],["regiter","register"],["regitered","registered"],["regitering","registering"],["regiters","registers"],["regluar","regular"],["regon","region"],["regons","regions"],["regorded","recorded"],["regresion","regression"],["regresison","regression"],["regresssion","regression"],["regrigerator","refrigerator"],["regsion","region"],["regsions","regions"],["regsiter","register"],["regsitered","registered"],["regsitering","registering"],["regsiters","registers"],["regsitry","registry"],["regster","register"],["regstered","registered"],["regstering","registering"],["regsters","registers"],["regstry","registry"],["regualar","regular"],["regualarly","regularly"],["regualator","regulator"],["regualr","regular"],["regualtor","regulator"],["reguardless","regardless"],["reguarldess","regardless"],["reguarlise","regularise"],["reguarliser","regulariser"],["reguarlize","regularize"],["reguarlizer","regularizer"],["reguarly","regularly"],["reguator","regulator"],["reguire","require"],["reguired","required"],["reguirement","requirement"],["reguirements","requirements"],["reguires","requires"],["reguiring","requiring"],["regulaer","regular"],["regulaion","regulation"],["regulamentation","regulation"],["regulamentations","regulations"],["regulaotrs","regulators"],["regulaotry","regulatory"],["regularily","regularly"],["regulariry","regularly"],["regularlisation","regularisation"],["regularlise","regularise"],["regularlised","regularised"],["regularliser","regulariser"],["regularlises","regularises"],["regularlising","regularising"],["regularlization","regularization"],["regularlize","regularize"],["regularlized","regularized"],["regularlizer","regularizer"],["regularlizes","regularizes"],["regularlizing","regularizing"],["regularlly","regularly"],["regulax","regular"],["reguler","regular"],["regulr","regular"],["regultor","regulator"],["regultors","regulators"],["regultory","regulatory"],["regurlarly","regularly"],["reguster","register"],["rehersal","rehearsal"],["rehersing","rehearsing"],["reicarnation","reincarnation"],["reigining","reigning"],["reigonal","regional"],["reigster","register"],["reigstered","registered"],["reigstering","registering"],["reigsters","registers"],["reigstration","registration"],["reimplemenet","reimplement"],["reimplementaion","reimplementation"],["reimplementaions","reimplementations"],["reimplemention","reimplementation"],["reimplementions","reimplementations"],["reimplented","reimplemented"],["reimplents","reimplements"],["reimpliment","reimplement"],["reimplimenting","reimplementing"],["reimplmenet","reimplement"],["reimplment","reimplement"],["reimplmentation","reimplementation"],["reimplmented","reimplemented"],["reimplmenting","reimplementing"],["reimplments","reimplements"],["reimpplement","reimplement"],["reimpplementating","reimplementing"],["reimpplementation","reimplementation"],["reimpplemented","reimplemented"],["reimpremented","reimplemented"],["reinfoce","reinforce"],["reinfoced","reinforced"],["reinfocement","reinforcement"],["reinfocements","reinforcements"],["reinfoces","reinforces"],["reinfocing","reinforcing"],["reinitailise","reinitialise"],["reinitailised","reinitialised"],["reinitailize","reinitialize"],["reinitalize","reinitialize"],["reinitilize","reinitialize"],["reinitilized","reinitialized"],["reinstatiate","reinstantiate"],["reinstatiated","reinstantiated"],["reinstatiates","reinstantiates"],["reinstatiation","reinstantiation"],["reintantiate","reinstantiate"],["reintantiating","reinstantiating"],["reintepret","reinterpret"],["reintepreted","reinterpreted"],["reister","register"],["reitterate","reiterate"],["reitterated","reiterated"],["reitterates","reiterates"],["reivison","revision"],["rejplace","replace"],["reknown","renown"],["reknowned","renowned"],["rekursed","recursed"],["rekursion","recursion"],["rekursive","recursive"],["relaative","relative"],["relady","ready"],["relaease","release"],["relaese","release"],["relaesed","released"],["relaeses","releases"],["relaesing","releasing"],["relaged","related"],["relaimed","reclaimed"],["relaion","relation"],["relaive","relative"],["relaly","really"],["relase","release"],["relased","released"],["relaser","releaser"],["relases","releases"],["relashionship","relationship"],["relashionships","relationships"],["relasing","releasing"],["relataive","relative"],["relatated","related"],["relatd","related"],["relatdness","relatedness"],["relatibe","relative"],["relatibely","relatively"],["relatievly","relatively"],["relatiopnship","relationship"],["relativ","relative"],["relativly","relatively"],["relavant","relevant"],["relavent","relevant"],["releaase","release"],["releaased","released"],["relead","reload"],["releae","release"],["releaed","released"],["releaeing","releasing"],["releaing","releasing"],["releas","release"],["releasead","released"],["releasse","release"],["releated","related"],["releating","relating"],["releation","relation"],["releations","relations"],["releationship","relationship"],["releationships","relationships"],["releative","relative"],["releavant","relevant"],["relecant","relevant"],["releive","relieve"],["releived","relieved"],["releiver","reliever"],["releoad","reload"],["relese","release"],["relesed","released"],["releses","releases"],["reletive","relative"],["reletively","relatively"],["relevabt","relevant"],["relevane","relevant"],["releveant","relevant"],["relevence","relevance"],["relevent","relevant"],["relfected","reflected"],["relfecting","reflecting"],["relfection","reflection"],["relfections","reflections"],["reliablity","reliability"],["relient","reliant"],["religeous","religious"],["religous","religious"],["religously","religiously"],["relinguish","relinquish"],["relinguishing","relinquishing"],["relinqushment","relinquishment"],["relintquish","relinquish"],["relitavely","relatively"],["relly","really"],["reloade","reload"],["relocae","relocate"],["relocaes","relocates"],["relocaiing","relocating"],["relocaing","relocating"],["relocaion","relocation"],["relocaions","relocations"],["relocaite","relocate"],["relocaites","relocates"],["relocaiting","relocating"],["relocaition","relocation"],["relocaitions","relocations"],["relocaiton","relocation"],["relocaitons","relocations"],["relocateable","relocatable"],["reloccate","relocate"],["reloccated","relocated"],["reloccates","relocates"],["relpacement","replacement"],["relpy","reply"],["reltive","relative"],["relyable","reliable"],["relyably","reliably"],["relyed","relied"],["relys","relies"],["remaing","remaining"],["remainging","remaining"],["remainig","remaining"],["remainst","remains"],["remaning","remaining"],["remaped","remapped"],["remaping","remapping"],["rembember","remember"],["rembembered","remembered"],["rembembering","remembering"],["rembembers","remembers"],["rember","remember"],["remeber","remember"],["remebered","remembered"],["remebering","remembering"],["remebers","remembers"],["rememberable","memorable"],["rememberance","remembrance"],["rememberd","remembered"],["remembrence","remembrance"],["rememeber","remember"],["rememebered","remembered"],["rememebering","remembering"],["rememebers","remembers"],["rememebr","remember"],["rememebred","remembered"],["rememebrs","remembers"],["rememember","remember"],["rememembered","remembered"],["rememembers","remembers"],["rememer","remember"],["rememered","remembered"],["rememers","remembers"],["rememor","remember"],["rememored","remembered"],["rememoring","remembering"],["rememors","remembers"],["rememver","remember"],["remenant","remnant"],["remenber","remember"],["remenicent","reminiscent"],["remian","remain"],["remianed","remained"],["remianing","remaining"],["remians","remains"],["reminent","remnant"],["reminescent","reminiscent"],["remining","remaining"],["reminiscense","reminiscence"],["reminscent","reminiscent"],["reminsicent","reminiscent"],["remmeber","remember"],["remmebered","remembered"],["remmebering","remembering"],["remmebers","remembers"],["remmove","remove"],["remoce","remove"],["remoive","remove"],["remoived","removed"],["remoives","removes"],["remoiving","removing"],["remontly","remotely"],["remoote","remote"],["remore","remote"],["remorted","reported"],["remot","remote"],["removce","remove"],["removeable","removable"],["removefromat","removeformat"],["removeing","removing"],["removerd","removed"],["remve","remove"],["remved","removed"],["remves","removes"],["remvoe","remove"],["remvoed","removed"],["remvoes","removes"],["remvove","remove"],["remvoved","removed"],["remvoves","removes"],["remvs","removes"],["renabled","re-enabled"],["renderadble","renderable"],["renderd","rendered"],["rendereing","rendering"],["rendererd","rendered"],["renderered","rendered"],["renderering","rendering"],["renderning","rendering"],["renderr","render"],["renderring","rendering"],["rendevous","rendezvous"],["rendezous","rendezvous"],["rendired","rendered"],["rendirer","renderer"],["rendirers","renderers"],["rendiring","rendering"],["rendring","rendering"],["renedered","rendered"],["renegatiotiable","renegotiable"],["renegatiotiate","renegotiate"],["renegatiotiated","renegotiated"],["renegatiotiates","renegotiates"],["renegatiotiating","renegotiating"],["renegatiotiation","renegotiation"],["renegatiotiations","renegotiations"],["renegatiotiator","renegotiator"],["renegatiotiators","renegotiators"],["renegoable","renegotiable"],["renegoate","renegotiate"],["renegoated","renegotiated"],["renegoates","renegotiates"],["renegoatiable","renegotiable"],["renegoatiate","renegotiate"],["renegoatiated","renegotiated"],["renegoatiates","renegotiates"],["renegoatiating","renegotiating"],["renegoatiation","renegotiation"],["renegoatiations","renegotiations"],["renegoatiator","renegotiator"],["renegoatiators","renegotiators"],["renegoating","renegotiating"],["renegoation","renegotiation"],["renegoations","renegotiations"],["renegoator","renegotiator"],["renegoators","renegotiators"],["renegociable","renegotiable"],["renegociate","renegotiate"],["renegociated","renegotiated"],["renegociates","renegotiates"],["renegociating","renegotiating"],["renegociation","renegotiation"],["renegociations","renegotiations"],["renegociator","renegotiator"],["renegociators","renegotiators"],["renegogtiable","renegotiable"],["renegogtiate","renegotiate"],["renegogtiated","renegotiated"],["renegogtiates","renegotiates"],["renegogtiating","renegotiating"],["renegogtiation","renegotiation"],["renegogtiations","renegotiations"],["renegogtiator","renegotiator"],["renegogtiators","renegotiators"],["renegoitable","renegotiable"],["renegoitate","renegotiate"],["renegoitated","renegotiated"],["renegoitates","renegotiates"],["renegoitating","renegotiating"],["renegoitation","renegotiation"],["renegoitations","renegotiations"],["renegoitator","renegotiator"],["renegoitators","renegotiators"],["renegoptionsotiable","renegotiable"],["renegoptionsotiate","renegotiate"],["renegoptionsotiated","renegotiated"],["renegoptionsotiates","renegotiates"],["renegoptionsotiating","renegotiating"],["renegoptionsotiation","renegotiation"],["renegoptionsotiations","renegotiations"],["renegoptionsotiator","renegotiator"],["renegoptionsotiators","renegotiators"],["renegosiable","renegotiable"],["renegosiate","renegotiate"],["renegosiated","renegotiated"],["renegosiates","renegotiates"],["renegosiating","renegotiating"],["renegosiation","renegotiation"],["renegosiations","renegotiations"],["renegosiator","renegotiator"],["renegosiators","renegotiators"],["renegotable","renegotiable"],["renegotaiable","renegotiable"],["renegotaiate","renegotiate"],["renegotaiated","renegotiated"],["renegotaiates","renegotiates"],["renegotaiating","renegotiating"],["renegotaiation","renegotiation"],["renegotaiations","renegotiations"],["renegotaiator","renegotiator"],["renegotaiators","renegotiators"],["renegotaible","renegotiable"],["renegotaite","renegotiate"],["renegotaited","renegotiated"],["renegotaites","renegotiates"],["renegotaiting","renegotiating"],["renegotaition","renegotiation"],["renegotaitions","renegotiations"],["renegotaitor","renegotiator"],["renegotaitors","renegotiators"],["renegotate","renegotiate"],["renegotated","renegotiated"],["renegotates","renegotiates"],["renegotatiable","renegotiable"],["renegotatiate","renegotiate"],["renegotatiated","renegotiated"],["renegotatiates","renegotiates"],["renegotatiating","renegotiating"],["renegotatiation","renegotiation"],["renegotatiations","renegotiations"],["renegotatiator","renegotiator"],["renegotatiators","renegotiators"],["renegotatible","renegotiable"],["renegotatie","renegotiate"],["renegotatied","renegotiated"],["renegotaties","renegotiates"],["renegotating","renegotiating"],["renegotation","renegotiation"],["renegotations","renegotiations"],["renegotatior","renegotiator"],["renegotatiors","renegotiators"],["renegotator","renegotiator"],["renegotators","renegotiators"],["renegothiable","renegotiable"],["renegothiate","renegotiate"],["renegothiated","renegotiated"],["renegothiates","renegotiates"],["renegothiating","renegotiating"],["renegothiation","renegotiation"],["renegothiations","renegotiations"],["renegothiator","renegotiator"],["renegothiators","renegotiators"],["renegotible","renegotiable"],["renegoticable","renegotiable"],["renegoticate","renegotiate"],["renegoticated","renegotiated"],["renegoticates","renegotiates"],["renegoticating","renegotiating"],["renegotication","renegotiation"],["renegotications","renegotiations"],["renegoticator","renegotiator"],["renegoticators","renegotiators"],["renegotioable","renegotiable"],["renegotioate","renegotiate"],["renegotioated","renegotiated"],["renegotioates","renegotiates"],["renegotioating","renegotiating"],["renegotioation","renegotiation"],["renegotioations","renegotiations"],["renegotioator","renegotiator"],["renegotioators","renegotiators"],["renegotioble","renegotiable"],["renegotion","renegotiation"],["renegotionable","renegotiable"],["renegotionate","renegotiate"],["renegotionated","renegotiated"],["renegotionates","renegotiates"],["renegotionating","renegotiating"],["renegotionation","renegotiation"],["renegotionations","renegotiations"],["renegotionator","renegotiator"],["renegotionators","renegotiators"],["renegotions","renegotiations"],["renegotiotable","renegotiable"],["renegotiotate","renegotiate"],["renegotiotated","renegotiated"],["renegotiotates","renegotiates"],["renegotiotating","renegotiating"],["renegotiotation","renegotiation"],["renegotiotations","renegotiations"],["renegotiotator","renegotiator"],["renegotiotators","renegotiators"],["renegotiote","renegotiate"],["renegotioted","renegotiated"],["renegotiotes","renegotiates"],["renegotioting","renegotiating"],["renegotiotion","renegotiation"],["renegotiotions","renegotiations"],["renegotiotor","renegotiator"],["renegotiotors","renegotiators"],["renegotitable","renegotiable"],["renegotitae","renegotiate"],["renegotitaed","renegotiated"],["renegotitaes","renegotiates"],["renegotitaing","renegotiating"],["renegotitaion","renegotiation"],["renegotitaions","renegotiations"],["renegotitaor","renegotiator"],["renegotitaors","renegotiators"],["renegotitate","renegotiate"],["renegotitated","renegotiated"],["renegotitates","renegotiates"],["renegotitating","renegotiating"],["renegotitation","renegotiation"],["renegotitations","renegotiations"],["renegotitator","renegotiator"],["renegotitators","renegotiators"],["renegotite","renegotiate"],["renegotited","renegotiated"],["renegotites","renegotiates"],["renegotiting","renegotiating"],["renegotition","renegotiation"],["renegotitions","renegotiations"],["renegotitor","renegotiator"],["renegotitors","renegotiators"],["renegoziable","renegotiable"],["renegoziate","renegotiate"],["renegoziated","renegotiated"],["renegoziates","renegotiates"],["renegoziating","renegotiating"],["renegoziation","renegotiation"],["renegoziations","renegotiations"],["renegoziator","renegotiator"],["renegoziators","renegotiators"],["reneweal","renewal"],["renewl","renewal"],["renforce","reinforce"],["renforced","reinforced"],["renforcement","reinforcement"],["renforcements","reinforcements"],["renforces","reinforces"],["rennovate","renovate"],["rennovated","renovated"],["rennovating","renovating"],["rennovation","renovation"],["rentime","runtime"],["rentors","renters"],["reoadmap","roadmap"],["reoccurrence","recurrence"],["reoder","reorder"],["reomvable","removable"],["reomve","remove"],["reomved","removed"],["reomves","removes"],["reomving","removing"],["reonly","read-only"],["reopended","reopened"],["reoport","report"],["reopsitory","repository"],["reord","record"],["reorded","reorder"],["reorer","reorder"],["reorganision","reorganisation"],["reorginised","reorganised"],["reorginized","reorganized"],["reosnable","reasonable"],["reosne","reason"],["reosurce","resource"],["reosurced","resourced"],["reosurces","resources"],["reosurcing","resourcing"],["reounded","rounded"],["repace","replace"],["repaced","replaced"],["repacement","replacement"],["repacements","replacements"],["repaces","replaces"],["repacing","replacing"],["repackge","repackage"],["repackged","repackaged"],["repaitnt","repaint"],["reparamterization","reparameterization"],["repblic","republic"],["repblican","republican"],["repblicans","republicans"],["repblics","republics"],["repeates","repeats"],["repeatly","repeatedly"],["repect","respect"],["repectable","respectable"],["repected","respected"],["repecting","respecting"],["repective","respective"],["repectively","respectively"],["repects","respects"],["repedability","repeatability"],["repedable","repeatable"],["repeition","repetition"],["repentence","repentance"],["repentent","repentant"],["reperesent","represent"],["reperesentation","representation"],["reperesentational","representational"],["reperesentations","representations"],["reperesented","represented"],["reperesenting","representing"],["reperesents","represents"],["repersentation","representation"],["repertoir","repertoire"],["repesent","represent"],["repesentation","representation"],["repesentational","representational"],["repesented","represented"],["repesenting","representing"],["repesents","represents"],["repet","repeat"],["repetative","repetitive"],["repete","repeat"],["repeteadly","repeatedly"],["repetetion","repetition"],["repetetions","repetitions"],["repetetive","repetitive"],["repeting","repeating"],["repetion","repetition"],["repetions","repetitions"],["repetive","repetitive"],["repid","rapid"],["repition","repetition"],["repitions","repetitions"],["repitition","repetition"],["repititions","repetitions"],["replacability","replaceability"],["replacables","replaceables"],["replacacing","replacing"],["replacalbe","replaceable"],["replacalbes","replaceables"],["replacament","replacement"],["replacaments","replacements"],["replacate","replicate"],["replacated","replicated"],["replacates","replicates"],["replacating","replicating"],["replacation","replication"],["replacd","replaced"],["replaceemnt","replacement"],["replaceemnts","replacements"],["replacemenet","replacement"],["replacmenet","replacement"],["replacment","replacement"],["replacments","replacements"],["replacong","replacing"],["replaint","repaint"],["replasement","replacement"],["replasements","replacements"],["replcace","replace"],["replcaced","replaced"],["replcaof","replicaof"],["replicae","replicate"],["replicaes","replicates"],["replicaiing","replicating"],["replicaion","replication"],["replicaions","replications"],["replicaite","replicate"],["replicaites","replicates"],["replicaiting","replicating"],["replicaition","replication"],["replicaitions","replications"],["replicaiton","replication"],["replicaitons","replications"],["repling","replying"],["replys","replies"],["reponding","responding"],["reponse","response"],["reponses","responses"],["reponsibilities","responsibilities"],["reponsibility","responsibility"],["reponsible","responsible"],["reporing","reporting"],["reporitory","repository"],["reportadly","reportedly"],["reportign","reporting"],["reportresouces","reportresources"],["reposiotory","repository"],["reposiry","repository"],["repositiories","repositories"],["repositiory","repository"],["repositiroes","repositories"],["reposititioning","repositioning"],["repositorry","repository"],["repositotries","repositories"],["repositotry","repository"],["repositry","repository"],["reposoitory","repository"],["reposond","respond"],["reposonder","responder"],["reposonders","responders"],["reposonding","responding"],["reposonse","response"],["reposonses","responses"],["repostiories","repositories"],["repostiory","repository"],["repostories","repositories"],["repostory","repository"],["repport","report"],["reppository","repository"],["repraesentation","representation"],["repraesentational","representational"],["repraesentations","representations"],["reprecussion","repercussion"],["reprecussions","repercussions"],["repreesnt","represent"],["repreesnted","represented"],["repreesnts","represents"],["reprensent","represent"],["reprensentation","representation"],["reprensentational","representational"],["reprensentations","representations"],["reprepresents","represents"],["represantation","representation"],["represantational","representational"],["represantations","representations"],["represantative","representative"],["represenatation","representation"],["represenatational","representational"],["represenatations","representations"],["represenation","representation"],["represenational","representational"],["represenations","representations"],["represend","represent"],["representaion","representation"],["representaional","representational"],["representaions","representations"],["representaiton","representation"],["representated","represented"],["representating","representing"],["representd","represented"],["representiative","representative"],["represention","representation"],["representions","representations"],["representive","representative"],["representives","representatives"],["represet","represent"],["represetation","representation"],["represeted","represented"],["represeting","representing"],["represets","represents"],["represnet","represent"],["represnetated","represented"],["represnetation","representation"],["represnetations","representations"],["represneted","represented"],["represneting","representing"],["represnets","represents"],["represnt","represent"],["represntation","representation"],["represntative","representative"],["represnted","represented"],["represnts","represents"],["repressent","represent"],["repressentation","representation"],["repressenting","representing"],["repressents","represents"],["reprociblbe","reproducible"],["reprocible","reproducible"],["reprodice","reproduce"],["reprodiced","reproduced"],["reprodicibility","reproducibility"],["reprodicible","reproducible"],["reprodicibly","reproducibly"],["reprodicing","reproducing"],["reprodiction","reproduction"],["reproducabely","reproducibly"],["reproducability","reproducibility"],["reproducable","reproducible"],["reproducablitity","reproducibility"],["reproducably","reproducibly"],["reproduciability","reproduceability"],["reproduciable","reproduceable"],["reproduciblity","reproducibility"],["reprot","report"],["reprots","reports"],["reprsent","represent"],["reprsentation","representation"],["reprsentations","representations"],["reprsented","represented"],["reprsenting","representing"],["reprsents","represents"],["reprtoire","repertoire"],["reprucible","reproducible"],["repsectively","respectively"],["repsonse","response"],["repsonses","responses"],["repsonsible","responsible"],["repspectively","respectively"],["repsresents","represents"],["reptition","repetition"],["repubic","republic"],["repubican","republican"],["repubicans","republicans"],["repubics","republics"],["republi","republic"],["republian","republican"],["republians","republicans"],["republis","republics"],["repulic","republic"],["repulican","republican"],["repulicans","republicans"],["repulics","republics"],["reputpose","repurpose"],["reputposed","repurposed"],["reputposes","repurposes"],["reputposing","repurposing"],["reqest","request"],["reqested","requested"],["reqests","requests"],["reqeuest","request"],["reqeust","request"],["reqeusted","requested"],["reqeusting","requesting"],["reqeusts","requests"],["reqiest","request"],["reqire","require"],["reqired","required"],["reqirement","requirement"],["reqirements","requirements"],["reqires","requires"],["reqiring","requiring"],["reqiure","require"],["reqrite","rewrite"],["reqrites","rewrites"],["requencies","frequencies"],["requency","frequency"],["requeried","required"],["requeriment","requirement"],["requeriments","requirements"],["reques","request"],["requesr","request"],["requestd","requested"],["requestesd","requested"],["requestested","requested"],["requestied","requested"],["requestying","requesting"],["requet","request"],["requeted","requested"],["requeting","requesting"],["requets","requests"],["requeum","requiem"],["requied","required"],["requierd","required"],["requiere","require"],["requiered","required"],["requierement","requirement"],["requierements","requirements"],["requieres","requires"],["requiering","requiring"],["requies","requires"],["requiest","request"],["requiested","requested"],["requiesting","requesting"],["requiests","requests"],["requird","required"],["requireing","requiring"],["requiremenet","requirement"],["requiremenets","requirements"],["requiremnt","requirement"],["requirment","requirement"],["requirments","requirements"],["requisit","requisite"],["requisits","requisites"],["requre","require"],["requred","required"],["requrement","requirement"],["requrements","requirements"],["requres","requires"],["requrest","request"],["requrested","requested"],["requresting","requesting"],["requrests","requests"],["requried","required"],["requriement","requirement"],["requriements","requirements"],["requries","requires"],["requriment","requirement"],["requring","requiring"],["requrired","required"],["requrirement","requirement"],["requrirements","requirements"],["requris","require"],["requsite","requisite"],["requsites","requisites"],["requst","request"],["requsted","requested"],["requsting","requesting"],["requsts","requests"],["reregisteration","reregistration"],["rererences","references"],["rerference","reference"],["rerferences","references"],["rerpesentation","representation"],["rertieve","retrieve"],["rertieved","retrieved"],["rertiever","retriever"],["rertievers","retrievers"],["rertieves","retrieves"],["reruirement","requirement"],["reruirements","requirements"],["reruning","rerunning"],["rerwite","rewrite"],["resarch","research"],["resart","restart"],["resarts","restarts"],["resaurant","restaurant"],["resaurants","restaurants"],["rescaned","rescanned"],["rescource","resource"],["rescourced","resourced"],["rescources","resources"],["rescourcing","resourcing"],["rescrition","restriction"],["rescritions","restrictions"],["rescueing","rescuing"],["reseach","research"],["reseached","researched"],["researvation","reservation"],["researvations","reservations"],["researve","reserve"],["researved","reserved"],["researves","reserves"],["researving","reserving"],["reselction","reselection"],["resembelance","resemblance"],["resembes","resembles"],["resemblence","resemblance"],["resently","recently"],["resepect","respect"],["resepected","respected"],["resepecting","respecting"],["resepective","respective"],["resepectively","respectively"],["resepects","respects"],["reseration","reservation"],["reserv","reserve"],["reserverd","reserved"],["reservered","reserved"],["resestatus","resetstatus"],["resetable","resettable"],["reseted","reset"],["reseting","resetting"],["resetted","reset"],["reseved","reserved"],["reseverd","reserved"],["resevered","reserved"],["resevering","reserving"],["resevoir","reservoir"],["resgister","register"],["resgisters","registers"],["residental","residential"],["resierfs","reiserfs"],["resignement","resignment"],["resilence","resilience"],["resistable","resistible"],["resistence","resistance"],["resistent","resistant"],["resitance","resistance"],["resitances","resistances"],["resitor","resistor"],["resitors","resistors"],["resivwar","reservoir"],["resizeable","resizable"],["resizeble","resizable"],["reslection","reselection"],["reslove","resolve"],["resloved","resolved"],["resloves","resolves"],["resloving","resolving"],["reslut","result"],["resluts","results"],["resoect","respect"],["resoective","respective"],["resoiurce","resource"],["resoiurced","resourced"],["resoiurces","resources"],["resoiurcing","resourcing"],["resoltion","resolution"],["resoltuion","resolution"],["resoltuions","resolutions"],["resoluitons","resolutions"],["resolutin","resolution"],["resolutino","resolution"],["resolutinos","resolutions"],["resolutins","resolutions"],["resoluton","resolution"],["resolvinf","resolving"],["reson","reason"],["resonable","reasonable"],["resons","reasons"],["resonse","response"],["resonses","responses"],["resoource","resource"],["resoourced","resourced"],["resoources","resources"],["resoourcing","resourcing"],["resopnse","response"],["resopnses","responses"],["resorce","resource"],["resorced","resourced"],["resorces","resources"],["resorcing","resourcing"],["resore","restore"],["resorece","resource"],["resoreces","resources"],["resoruce","resource"],["resoruced","resourced"],["resoruces","resources"],["resorucing","resourcing"],["resotration","restoration"],["resotrations","restorations"],["resotrative","restorative"],["resotre","restore"],["resotrer","restorer"],["resotrers","restorers"],["resotres","restores"],["resotring","restoring"],["resouce","resource"],["resouced","resourced"],["resouces","resources"],["resoucing","resourcing"],["resoultion","resolution"],["resoultions","resolutions"],["resourcees","resources"],["resourceype","resourcetype"],["resoure","resource"],["resourecs","resources"],["resoured","resourced"],["resoures","resources"],["resourses","resources"],["resoution","resolution"],["resoves","resolves"],["resovle","resolve"],["resovled","resolved"],["resovles","resolves"],["resovling","resolving"],["respawining","respawning"],["respecitve","respective"],["respecitvely","respectively"],["respecive","respective"],["respecively","respectively"],["respectivelly","respectively"],["respectivley","respectively"],["respectivly","respectively"],["respnse","response"],["respnses","responses"],["respoduce","reproduce"],["responce","response"],["responces","responses"],["responibilities","responsibilities"],["responisble","responsible"],["responnsibilty","responsibility"],["responsabilities","responsibilities"],["responsability","responsibility"],["responsable","responsible"],["responsbile","responsible"],["responser's","responder's"],["responser","responder"],["responsers","responders"],["responsess","responses"],["responsibile","responsible"],["responsibilites","responsibilities"],["responsibilty","responsibility"],["responsiblities","responsibilities"],["responsiblity","responsibility"],["responsing","responding"],["respose","response"],["resposes","responses"],["resposibility","responsibility"],["resposible","responsible"],["resposiblity","responsibility"],["respositories","repositories"],["respository","repository"],["resposive","responsive"],["resposiveness","responsiveness"],["resposne","response"],["resposnes","responses"],["respresent","represent"],["respresentation","representation"],["respresentational","representational"],["respresentations","representations"],["respresented","represented"],["respresenting","representing"],["respresents","represents"],["resquest","request"],["resrouce","resource"],["resrouced","resourced"],["resrouces","resources"],["resroucing","resourcing"],["reSructuredText","reStructuredText"],["resrved","reserved"],["ressapee","recipe"],["ressemblance","resemblance"],["ressemble","resemble"],["ressembled","resembled"],["ressemblence","resemblance"],["ressembling","resembling"],["ressemle","resemble"],["resset","reset"],["resseted","reset"],["ressets","resets"],["ressetting","resetting"],["ressize","resize"],["ressizes","resizes"],["ressource","resource"],["ressourced","resourced"],["ressources","resources"],["ressourcing","resourcing"],["resssurecting","resurrecting"],["ressult","result"],["ressurect","resurrect"],["ressurected","resurrected"],["ressurecting","resurrecting"],["ressurection","resurrection"],["ressurects","resurrects"],["ressurrection","resurrection"],["restarant","restaurant"],["restarants","restaurants"],["restaraunt","restaurant"],["restaraunteur","restaurateur"],["restaraunteurs","restaurateurs"],["restaraunts","restaurants"],["restauranteurs","restaurateurs"],["restauration","restoration"],["restauraunt","restaurant"],["restaurnad","restaurant"],["restaurnat","restaurant"],["resteraunt","restaurant"],["resteraunts","restaurants"],["restes","reset"],["restesting","retesting"],["resticted","restricted"],["restoding","restoring"],["restoiring","restoring"],["restor","restore"],["restorated","restored"],["restoreable","restorable"],["restoreble","restorable"],["restoreing","restoring"],["restors","restores"],["restouration","restoration"],["restrcted","restricted"],["restrcuture","restructure"],["restriced","restricted"],["restroing","restoring"],["reStructuredTetx","reStructuredText"],["reStructuredTxet","reStructuredText"],["reStrucuredText","reStructuredText"],["restuarant","restaurant"],["restuarants","restaurants"],["reStucturedText","reStructuredText"],["restucturing","restructuring"],["reStucuredText","reStructuredText"],["resturant","restaurant"],["resturants","restaurants"],["resturaunt","restaurant"],["resturaunts","restaurants"],["resturcturation","restructuration"],["resturcture","restructure"],["resturctured","restructured"],["resturctures","restructures"],["resturcturing","restructuring"],["resturns","returns"],["resuable","reusable"],["resuables","reusables"],["resubstituion","resubstitution"],["resuction","reduction"],["resuilt","result"],["resuilted","resulted"],["resuilting","resulting"],["resuilts","results"],["resul","result"],["resuling","resulting"],["resullt","result"],["resulotion","resolution"],["resulsets","resultsets"],["resulst","results"],["resultion","resolution"],["resultions","resolutions"],["resultung","resulting"],["resulution","resolution"],["resumbmitting","resubmitting"],["resumitted","resubmitted"],["resumt","resume"],["resuorce","resource"],["resuorced","resourced"],["resuorces","resources"],["resuorcing","resourcing"],["resurce","resource"],["resurced","resourced"],["resurces","resources"],["resurcing","resourcing"],["resurecting","resurrecting"],["resursively","recursively"],["resuse","reuse"],["resuts","results"],["resycn","resync"],["retalitated","retaliated"],["retalitation","retaliation"],["retangles","rectangles"],["retanslate","retranslate"],["rether","rather"],["retieve","retrieve"],["retieved","retrieved"],["retieves","retrieves"],["retieving","retrieving"],["retinew","retinue"],["retireve","retrieve"],["retireved","retrieved"],["retirever","retriever"],["retirevers","retrievers"],["retireves","retrieves"],["retireving","retrieving"],["retirned","returned"],["retore","restore"],["retored","restored"],["retores","restores"],["retoric","rhetoric"],["retorical","rhetorical"],["retoring","restoring"],["retourned","returned"],["retpresenting","representing"],["retquirement","requirement"],["retquirements","requirements"],["retquireseek","requireseek"],["retquiresgpos","requiresgpos"],["retquiresgsub","requiresgsub"],["retquiressl","requiressl"],["retranser","retransfer"],["retransferd","retransferred"],["retransfered","retransferred"],["retransfering","retransferring"],["retransferrd","retransferred"],["retransmited","retransmitted"],["retransmition","retransmission"],["retreevable","retrievable"],["retreeval","retrieval"],["retreeve","retrieve"],["retreeved","retrieved"],["retreeves","retrieves"],["retreeving","retrieving"],["retreivable","retrievable"],["retreival","retrieval"],["retreive","retrieve"],["retreived","retrieved"],["retreives","retrieves"],["retreiving","retrieving"],["retrevable","retrievable"],["retreval","retrieval"],["retreve","retrieve"],["retreved","retrieved"],["retreves","retrieves"],["retreving","retrieving"],["retrict","restrict"],["retricted","restricted"],["retriebe","retrieve"],["retriece","retrieve"],["retrieces","retrieves"],["retriev","retrieve"],["retrieveds","retrieved"],["retrive","retrieve"],["retrived","retrieved"],["retrives","retrieves"],["retriving","retrieving"],["retrn","return"],["retrned","returned"],["retrns","returns"],["retrun","return"],["retruned","returned"],["retruns","returns"],["retrvieve","retrieve"],["retrvieved","retrieved"],["retrviever","retriever"],["retrvievers","retrievers"],["retrvieves","retrieves"],["retsart","restart"],["retsarts","restarts"],["retun","return"],["retunrned","returned"],["retunrs","returns"],["retuns","returns"],["retur","return"],["reture","return"],["retured","returned"],["returend","returned"],["retures","returns"],["returing","returning"],["returm","return"],["returmed","returned"],["returming","returning"],["returms","returns"],["returnd","returned"],["returnes","returns"],["returnig","returning"],["returnn","return"],["returnned","returned"],["returnning","returning"],["returs","returns"],["retursn","returns"],["retutning","returning"],["retyring","retrying"],["reudce","reduce"],["reudced","reduced"],["reudces","reduces"],["reudction","reduction"],["reudctions","reductions"],["reuest","request"],["reuests","requests"],["reulator","regulator"],["reundant","redundant"],["reundantly","redundantly"],["reuplad","reupload"],["reupladed","reuploaded"],["reuplader","reuploader"],["reupladers","reuploaders"],["reuplading","reuploading"],["reuplads","reuploads"],["reuplaod","reupload"],["reuplaoded","reuploaded"],["reuplaoder","reuploader"],["reuplaoders","reuploaders"],["reuplaoding","reuploading"],["reuplaods","reuploads"],["reuplod","reupload"],["reuploded","reuploaded"],["reuploder","reuploader"],["reuploders","reuploaders"],["reuploding","reuploading"],["reuplods","reuploads"],["reuqest","request"],["reuqested","requested"],["reuqesting","requesting"],["reuqests","requests"],["reurn","return"],["reursively","recursively"],["reuslt","result"],["reussing","reusing"],["reutnred","returned"],["reutrn","return"],["reutrns","returns"],["revaildating","revalidating"],["revaluated","reevaluated"],["reveiw","review"],["reveiwed","reviewed"],["reveiwer","reviewer"],["reveiwers","reviewers"],["reveiwing","reviewing"],["reveiws","reviews"],["revelent","relevant"],["revelution","revolution"],["revelutions","revolutions"],["reveokes","revokes"],["reverce","reverse"],["reverced","reversed"],["revereces","references"],["reverese","reverse"],["reveresed","reversed"],["reveret","revert"],["revereted","reverted"],["reversable","reversible"],["reverse-engeneer","reverse-engineer"],["reverse-engeneering","reverse-engineering"],["reverse-engieer","reverse-engineer"],["reverseed","reversed"],["reversees","reverses"],["reverve","reserve"],["reverved","reserved"],["revewrse","reverse"],["reviewl","review"],["reviewsectio","reviewsection"],["revisisions","revisions"],["revison","revision"],["revisons","revisions"],["revist","revisit"],["revisted","revisited"],["revisting","revisiting"],["revists","revisits"],["reviwed","reviewed"],["reviwer","reviewer"],["reviwers","reviewers"],["reviwing","reviewing"],["revoluion","revolution"],["revolutionar","revolutionary"],["revrese","reverse"],["revrieve","retrieve"],["revrieved","retrieved"],["revriever","retriever"],["revrievers","retrievers"],["revrieves","retrieves"],["revsion","revision"],["rewiev","review"],["rewieved","reviewed"],["rewiever","reviewer"],["rewieving","reviewing"],["rewievs","reviews"],["rewirtable","rewritable"],["rewirte","rewrite"],["rewirtten","rewritten"],["rewitable","rewritable"],["rewite","rewrite"],["rewitten","rewritten"],["reworkd","reworked"],["rewriet","rewrite"],["rewriite","rewrite"],["rewriten","rewritten"],["rewritting","rewriting"],["rewuired","required"],["rference","reference"],["rferences","references"],["rfeturned","returned"],["rgister","register"],["rhymme","rhyme"],["rhythem","rhythm"],["rhythim","rhythm"],["rhythimcally","rhythmically"],["rhytmic","rhythmic"],["ridiculus","ridiculous"],["righ","right"],["righht","right"],["righmost","rightmost"],["rightt","right"],["rigourous","rigorous"],["rigt","right"],["rigth","right"],["rigths","rights"],["rigurous","rigorous"],["riminder","reminder"],["riminders","reminders"],["riminding","reminding"],["rimitives","primitives"],["rininging","ringing"],["rispective","respective"],["ristrict","restrict"],["ristricted","restricted"],["ristriction","restriction"],["ritable","writable"],["rivised","revised"],["rizes","rises"],["rlation","relation"],["rlse","else"],["rmeote","remote"],["rmeove","remove"],["rmeoved","removed"],["rmeoves","removes"],["rmove","remove"],["rmoved","removed"],["rmoving","removing"],["roataion","rotation"],["roatation","rotation"],["roated","rotated"],["roation","rotation"],["roboustness","robustness"],["robustnes","robustness"],["Rockerfeller","Rockefeller"],["rococco","rococo"],["rocord","record"],["rocorded","recorded"],["rocorder","recorder"],["rocording","recording"],["rocordings","recordings"],["rocords","records"],["roduceer","producer"],["roigin","origin"],["roiginal","original"],["roiginally","originally"],["roiginals","originals"],["roiginating","originating"],["roigins","origins"],["romote","remote"],["romoted","remoted"],["romoteing","remoting"],["romotely","remotely"],["romotes","remotes"],["romoting","remoting"],["romotly","remotely"],["roomate","roommate"],["ropeat","repeat"],["rorated","rotated"],["rosponse","response"],["rosponsive","responsive"],["rotaion","rotation"],["rotaions","rotations"],["rotaiton","rotation"],["rotaitons","rotations"],["rotat","rotate"],["rotataion","rotation"],["rotataions","rotations"],["rotateable","rotatable"],["rouding","rounding"],["roughtly","roughly"],["rougly","roughly"],["rouine","routine"],["rouines","routines"],["round-robbin","round-robin"],["roundign","rounding"],["roung","round"],["rountine","routine"],["rountines","routines"],["routiens","routines"],["routins","routines"],["rovide","provide"],["rovided","provided"],["rovider","provider"],["rovides","provides"],["roviding","providing"],["rqeuested","requested"],["rqeuesting","requesting"],["rquested","requested"],["rquesting","requesting"],["rquire","require"],["rquired","required"],["rquirement","requirement"],["rquires","requires"],["rquiring","requiring"],["rranslation","translation"],["rranslations","translations"],["rrase","erase"],["rrror","error"],["rrrored","errored"],["rrroring","erroring"],["rrrors","errors"],["rubarb","rhubarb"],["rucuperate","recuperate"],["rudimentally","rudimentary"],["rudimentatry","rudimentary"],["rudimentory","rudimentary"],["rudimentry","rudimentary"],["rulle","rule"],["rumatic","rheumatic"],["runn","run"],["runnig","running"],["runnign","running"],["runnigng","running"],["runnin","running"],["runnint","running"],["runnners","runners"],["runnning","running"],["runns","runs"],["runnung","running"],["runting","runtime"],["rurrent","current"],["russina","Russian"],["Russion","Russian"],["rwite","write"],["rysnc","rsync"],["rythem","rhythm"],["rythim","rhythm"],["rythm","rhythm"],["rythmic","rhythmic"],["rythyms","rhythms"],["saame","same"],["sabatage","sabotage"],["sabatour","saboteur"],["sacalar","scalar"],["sacalars","scalars"],["sacarin","saccharin"],["sacle","scale"],["sacrafice","sacrifice"],["sacreligious","sacrilegious"],["Sacremento","Sacramento"],["sacrifical","sacrificial"],["sacrifying","sacrificing"],["sacrilegeous","sacrilegious"],["sacrin","saccharin"],["sade","sad"],["saem","same"],["safe-pooint","safe-point"],["safe-pooints","safe-points"],["safeing","saving"],["safepooint","safepoint"],["safepooints","safepoints"],["safequard","safeguard"],["saferi","Safari"],["safetly","safely"],["safly","safely"],["saftey","safety"],["safty","safety"],["saggital","sagittal"],["sagital","sagittal"],["Sagitarius","Sagittarius"],["sais","says"],["saleries","salaries"],["salery","salary"],["salveof","slaveof"],["samle","sample"],["samled","sampled"],["samll","small"],["samller","smaller"],["sammon","salmon"],["samori","samurai"],["sampel","sample"],["sampeld","sampled"],["sampels","samples"],["samwich","sandwich"],["samwiches","sandwiches"],["sanaty","sanity"],["sanctionning","sanctioning"],["sandobx","sandbox"],["sandwhich","sandwich"],["Sanhedrim","Sanhedrin"],["sanitizisation","sanitization"],["sanizer","sanitizer"],["sanpshot","snapshot"],["sanpsnots","snapshots"],["sansitizer","sanitizer"],["sansitizers","sanitizers"],["santioned","sanctioned"],["santize","sanitize"],["santized","sanitized"],["santizes","sanitizes"],["santizing","sanitizing"],["sanwich","sandwich"],["sanwiches","sandwiches"],["sanytise","sanitise"],["sanytize","sanitize"],["saphire","sapphire"],["saphires","sapphires"],["sargant","sergeant"],["sargeant","sergeant"],["sarted","started"],["sarter","starter"],["sarters","starters"],["sastisfies","satisfies"],["satandard","standard"],["satandards","standards"],["satelite","satellite"],["satelites","satellites"],["satelitte","satellite"],["satellittes","satellites"],["satement","statement"],["satements","statements"],["saterday","Saturday"],["saterdays","Saturdays"],["satified","satisfied"],["satifies","satisfies"],["satifsy","satisfy"],["satify","satisfy"],["satifying","satisfying"],["satisfactority","satisfactorily"],["satisfiabilty","satisfiability"],["satisfing","satisfying"],["satisfyied","satisfied"],["satisifed","satisfied"],["satisified","satisfied"],["satisifies","satisfies"],["satisify","satisfy"],["satisifying","satisfying"],["satistying","satisfying"],["satric","satiric"],["satrical","satirical"],["satrically","satirically"],["sattelite","satellite"],["sattelites","satellites"],["sattellite","satellite"],["sattellites","satellites"],["satuaday","Saturday"],["satuadays","Saturdays"],["saturdey","Saturday"],["satursday","Saturday"],["satus","status"],["saught","sought"],["sav","save"],["savees","saves"],["saveing","saving"],["savely","safely"],["savere","severe"],["savety","safety"],["savgroup","savegroup"],["savy","savvy"],["saxaphone","saxophone"],["sbsampling","subsampling"],["scahr","schar"],["scalarr","scalar"],["scaleability","scalability"],["scaleable","scalable"],["scaleing","scaling"],["scalled","scaled"],["scandanavia","Scandinavia"],["scaned","scanned"],["scaning","scanning"],["scannning","scanning"],["scaricity","scarcity"],["scavange","scavenge"],["scavanged","scavenged"],["scavanger","scavenger"],["scavangers","scavengers"],["scavanges","scavenges"],["sccope","scope"],["sceanrio","scenario"],["sceanrios","scenarios"],["scecified","specified"],["scenarion","scenario"],["scenarions","scenarios"],["scenegraaph","scenegraph"],["scenegraaphs","scenegraphs"],["sceond","second"],["sceonds","seconds"],["scetch","sketch"],["scetched","sketched"],["scetches","sketches"],["scetching","sketching"],["schdule","schedule"],["schduled","scheduled"],["schduleing","scheduling"],["schduler","scheduler"],["schdules","schedules"],["schduling","scheduling"],["schedual","schedule"],["scheduald","scheduled"],["schedualed","scheduled"],["schedualing","scheduling"],["schedulier","scheduler"],["schedulling","scheduling"],["scheduluing","scheduling"],["schem","scheme"],["schemd","schemed"],["schems","schemes"],["schme","scheme"],["schmea","schema"],["schmeas","schemas"],["schmes","schemes"],["scholarhip","scholarship"],["scholarhips","scholarships"],["scholdn't","shouldn't"],["schould","should"],["scientfic","scientific"],["scientfically","scientifically"],["scientficaly","scientifically"],["scientficly","scientifically"],["scientifc","scientific"],["scientifcally","scientifically"],["scientifcaly","scientifically"],["scientifcly","scientifically"],["scientis","scientist"],["scientiss","scientist"],["scince","science"],["scinece","science"],["scintiallation","scintillation"],["scintillatqt","scintillaqt"],["scipted","scripted"],["scipting","scripting"],["sciript","script"],["sciripts","scripts"],["scirpt","script"],["scirpts","scripts"],["scketch","sketch"],["scketched","sketched"],["scketches","sketches"],["scketching","sketching"],["sclar","scalar"],["scneario","scenario"],["scnearios","scenarios"],["scoket","socket"],["scoll","scroll"],["scolling","scrolling"],["scondary","secondary"],["scopeing","scoping"],["scorebord","scoreboard"],["scources","sources"],["scrach","scratch"],["scrached","scratched"],["scraches","scratches"],["scraching","scratching"],["scrachs","scratches"],["scrao","scrap"],["screeb","screen"],["screebs","screens"],["screenchot","screenshot"],["screenchots","screenshots"],["screenwrighter","screenwriter"],["screnn","screen"],["scriopted","scripted"],["scriopting","scripting"],["scriopts","scripts"],["scriopttype","scripttype"],["scriping","scripting"],["scripst","scripts"],["scriptype","scripttype"],["scritp","script"],["scritped","scripted"],["scritping","scripting"],["scritps","scripts"],["scritpt","script"],["scritpts","scripts"],["scroipt","script"],["scroipted","scripted"],["scroipting","scripting"],["scroipts","scripts"],["scroipttype","scripttype"],["scrollablbe","scrollable"],["scrollin","scrolling"],["scroolbar","scrollbar"],["scrpt","script"],["scrpted","scripted"],["scrpting","scripting"],["scrpts","scripts"],["scrren","screen"],["scrutinity","scrutiny"],["scubscribe","subscribe"],["scubscribed","subscribed"],["scubscriber","subscriber"],["scubscribes","subscribes"],["scuccessully","successfully"],["scupt","sculpt"],["scupted","sculpted"],["scupting","sculpting"],["scupture","sculpture"],["scuptures","sculptures"],["seach","search"],["seached","searched"],["seaches","searches"],["seaching","searching"],["seachkey","searchkey"],["seacrchable","searchable"],["seamlessley","seamlessly"],["seamlessy","seamlessly"],["searcahble","searchable"],["searcheable","searchable"],["searchin","searching"],["searchs","searches"],["seatch","search"],["seccond","second"],["secconds","seconds"],["secction","section"],["secene","scene"],["secific","specific"],["secion","section"],["secions","sections"],["secirity","security"],["seciton","section"],["secitons","sections"],["secne","scene"],["secod","second"],["secods","seconds"],["seconadry","secondary"],["seconcary","secondary"],["secondaray","secondary"],["seconday","secondary"],["seconf","second"],["seconfs","seconds"],["seconly","secondly"],["secont","second"],["secontary","secondary"],["secontly","secondly"],["seconts","seconds"],["secord","second"],["secords","seconds"],["secotr","sector"],["secound","second"],["secoundary","secondary"],["secoundly","secondly"],["secounds","seconds"],["secquence","sequence"],["secratary","secretary"],["secretery","secretary"],["secrion","section"],["secruity","security"],["sectin","section"],["sectins","sections"],["sectionning","sectioning"],["secton","section"],["sectoned","sectioned"],["sectoning","sectioning"],["sectons","sections"],["sectopm","section"],["sectopmed","sectioned"],["sectopming","sectioning"],["sectopms","sections"],["sectopn","section"],["sectopned","sectioned"],["sectopning","sectioning"],["sectopns","sections"],["secue","secure"],["secuely","securely"],["secuence","sequence"],["secuenced","sequenced"],["secuences","sequences"],["secuencial","sequential"],["secuencing","sequencing"],["secuirty","security"],["secuity","security"],["secund","second"],["secunds","seconds"],["securiy","security"],["securiyt","security"],["securly","securely"],["securre","secure"],["securrely","securely"],["securrly","securely"],["securtity","security"],["securtiy","security"],["securty","security"],["securuity","security"],["sedereal","sidereal"],["seeem","seem"],["seeen","seen"],["seelect","select"],["seelected","selected"],["seemes","seems"],["seemless","seamless"],["seemlessly","seamlessly"],["seesion","session"],["seesions","sessions"],["seetings","settings"],["seeverities","severities"],["seeverity","severity"],["segault","segfault"],["segaults","segfaults"],["segement","segment"],["segementation","segmentation"],["segemented","segmented"],["segements","segments"],["segemnts","segments"],["segfualt","segfault"],["segfualts","segfaults"],["segmantation","segmentation"],["segmend","segment"],["segmendation","segmentation"],["segmended","segmented"],["segmends","segments"],["segmenet","segment"],["segmenetd","segmented"],["segmeneted","segmented"],["segmenets","segments"],["segmenst","segments"],["segmentaion","segmentation"],["segmente","segment"],["segmentes","segments"],["segmetn","segment"],["segmetned","segmented"],["segmetns","segments"],["segument","segment"],["seguoys","segues"],["seh","she"],["seige","siege"],["seing","seeing"],["seinor","senior"],["seires","series"],["sekect","select"],["sekected","selected"],["sekects","selects"],["selcetion","selection"],["selct","select"],["selctable","selectable"],["selctables","selectable"],["selcted","selected"],["selcting","selecting"],["selction","selection"],["selctions","selections"],["seldomly","seldom"],["selecction","selection"],["selecctions","selections"],["seleced","selected"],["selecetd","selected"],["seleceted","selected"],["selecgt","select"],["selecgted","selected"],["selecgting","selecting"],["selecing","selecting"],["selecrtion","selection"],["selectd","selected"],["selectes","selects"],["selectoin","selection"],["selecton","selection"],["selectons","selections"],["seledted","selected"],["selektions","selections"],["selektor","selector"],["selet","select"],["selets","selects"],["self-comparisson","self-comparison"],["self-contianed","self-contained"],["self-referencial","self-referential"],["self-refering","self-referring"],["selfs","self"],["sellect","select"],["sellected","selected"],["selv","self"],["semaintics","semantics"],["semaphone","semaphore"],["semaphones","semaphores"],["semaphor","semaphore"],["semaphors","semaphores"],["semapthore","semaphore"],["semapthores","semaphores"],["sematic","semantic"],["sematical","semantical"],["sematically","semantically"],["sematics","semantics"],["sematnics","semantics"],["semding","sending"],["sementation","segmentation"],["sementic","semantic"],["sementically","semantically"],["sementics","semantics"],["semgent","segment"],["semgentation","segmentation"],["semicolor","semicolon"],["semicolumn","semicolon"],["semicondutor","semiconductor"],["sempahore","semaphore"],["sempahores","semaphores"],["sempaphore","semaphore"],["sempaphores","semaphores"],["semphore","semaphore"],["semphores","semaphores"],["sempphore","semaphore"],["senaphore","semaphore"],["senaphores","semaphores"],["senario","scenario"],["senarios","scenarios"],["sencond","second"],["sencondary","secondary"],["senconds","seconds"],["sendign","sending"],["sendinging","sending"],["sendinng","sending"],["senfile","sendfile"],["senintels","sentinels"],["senitnel","sentinel"],["senitnels","sentinels"],["senquence","sequence"],["sensative","sensitive"],["sensetive","sensitive"],["sensisble","sensible"],["sensistive","sensitive"],["sensititive","sensitive"],["sensititivies","sensitivities"],["sensititivity","sensitivity"],["sensititivy","sensitivity"],["sensitiv","sensitive"],["sensitiveties","sensitivities"],["sensitivety","sensitivity"],["sensitivites","sensitivities"],["sensitivties","sensitivities"],["sensitivty","sensitivity"],["sensitve","sensitive"],["senstive","sensitive"],["sensure","censure"],["sentance","sentence"],["sentances","sentences"],["senteces","sentences"],["sentense","sentence"],["sentienl","sentinel"],["sentinal","sentinel"],["sentinals","sentinels"],["sention","section"],["sentions","sections"],["sentive","sensitive"],["sentivite","sensitive"],["sepaate","separate"],["separartor","separator"],["separat","separate"],["separatelly","separately"],["separater","separator"],["separatley","separately"],["separatly","separately"],["separato","separator"],["separatos","separators"],["separatring","separating"],["separed","separated"],["separete","separate"],["separeted","separated"],["separetedly","separately"],["separetely","separately"],["separeter","separator"],["separetes","separates"],["separeting","separating"],["separetly","separately"],["separetor","separator"],["separtates","separates"],["separte","separate"],["separted","separated"],["separtes","separates"],["separting","separating"],["sepatae","separate"],["sepatate","separate"],["sepcial","special"],["sepcific","specific"],["sepcifically","specifically"],["sepcification","specification"],["sepcifications","specifications"],["sepcified","specified"],["sepcifier","specifier"],["sepcifies","specifies"],["sepcify","specify"],["sepcifying","specifying"],["sepearable","separable"],["sepearate","separate"],["sepearated","separated"],["sepearately","separately"],["sepearates","separates"],["sepearation","separation"],["sepearator","separator"],["sepearators","separators"],["sepearet","separate"],["sepearetly","separately"],["sepearte","separate"],["sepearted","separated"],["sepeartely","separately"],["sepeartes","separates"],["sepeartor","separator"],["sepeartors","separators"],["sepeate","separate"],["sepeated","separated"],["sepeates","separates"],["sepeator","separator"],["sepeators","separators"],["sepecial","special"],["sepecifed","specified"],["sepecific","specific"],["sepecification","specification"],["sepecified","specified"],["sepecifier","specifier"],["sepecifiers","specifiers"],["sepecifies","specifies"],["sepecify","specify"],["sepectral","spectral"],["sepeicfy","specify"],["sependent","dependent"],["sepending","depending"],["seperable","separable"],["seperad","separate"],["seperadly","separately"],["seperaly","separately"],["seperaor","separator"],["seperaors","separators"],["seperare","separate"],["seperared","separated"],["seperares","separates"],["seperat","separate"],["seperataed","separated"],["seperatally","separately"],["seperataly","separately"],["seperatated","separated"],["seperatd","separated"],["seperate","separate"],["seperated","separated"],["seperatedly","separately"],["seperatedy","separated"],["seperateely","separately"],["seperateing","separating"],["seperatelly","separately"],["seperately","separately"],["seperater","separator"],["seperaters","separators"],["seperates","separates"],["seperating","separating"],["seperation","separation"],["seperations","separations"],["seperatism","separatism"],["seperatist","separatist"],["seperatley","separately"],["seperatly","separately"],["seperato","separator"],["seperator","separator"],["seperators","separators"],["seperatos","separators"],["sepereate","separate"],["sepereated","separated"],["sepereates","separates"],["sepererate","separate"],["sepererated","separated"],["sepererates","separates"],["seperete","separate"],["sepereted","separated"],["seperetes","separates"],["seperratly","separately"],["sepertator","separator"],["sepertators","separators"],["sepertor","separator"],["sepertors","separators"],["sepetaror","separator"],["sepetarors","separators"],["sepetate","separate"],["sepetated","separated"],["sepetately","separately"],["sepetates","separates"],["sepina","subpoena"],["seporate","separate"],["sepparation","separation"],["sepparations","separations"],["sepperate","separate"],["seprarate","separate"],["seprate","separate"],["seprated","separated"],["seprator","separator"],["seprators","separators"],["Septemer","September"],["seqence","sequence"],["seqenced","sequenced"],["seqences","sequences"],["seqencing","sequencing"],["seqense","sequence"],["seqensed","sequenced"],["seqenses","sequences"],["seqensing","sequencing"],["seqenstial","sequential"],["seqential","sequential"],["seqeuence","sequence"],["seqeuencer","sequencer"],["seqeuental","sequential"],["seqeunce","sequence"],["seqeuncer","sequencer"],["seqeuntials","sequentials"],["sequcne","sequence"],["sequece","sequence"],["sequecence","sequence"],["sequecences","sequences"],["sequeces","sequences"],["sequeence","sequence"],["sequelce","sequence"],["sequemce","sequence"],["sequemces","sequences"],["sequencial","sequential"],["sequencially","sequentially"],["sequencies","sequences"],["sequense","sequence"],["sequensed","sequenced"],["sequenses","sequences"],["sequensing","sequencing"],["sequenstial","sequential"],["sequentialy","sequentially"],["sequenzes","sequences"],["sequetial","sequential"],["sequnce","sequence"],["sequnced","sequenced"],["sequncer","sequencer"],["sequncers","sequencers"],["sequnces","sequences"],["sequnece","sequence"],["sequneces","sequences"],["ser","set"],["serach","search"],["serached","searched"],["seracher","searcher"],["seraches","searches"],["seraching","searching"],["serachs","searches"],["serailisation","serialisation"],["serailise","serialise"],["serailised","serialised"],["serailization","serialization"],["serailize","serialize"],["serailized","serialized"],["serailse","serialise"],["serailsed","serialised"],["serailze","serialize"],["serailzed","serialized"],["serch","search"],["serched","searched"],["serches","searches"],["serching","searching"],["sercive","service"],["sercived","serviced"],["sercives","services"],["serciving","servicing"],["sereverless","serverless"],["serevrless","serverless"],["sergent","sergeant"],["serialialisation","serialisation"],["serialialise","serialise"],["serialialised","serialised"],["serialialises","serialises"],["serialialising","serialising"],["serialialization","serialization"],["serialialize","serialize"],["serialialized","serialized"],["serialializes","serializes"],["serialializing","serializing"],["serialiasation","serialisation"],["serialiazation","serialization"],["serialsiation","serialisation"],["serialsie","serialise"],["serialsied","serialised"],["serialsies","serialises"],["serialsing","serialising"],["serialziation","serialization"],["serialzie","serialize"],["serialzied","serialized"],["serialzies","serializes"],["serialzing","serializing"],["serice","service"],["serie","series"],["seriel","serial"],["serieses","series"],["serios","serious"],["seriouly","seriously"],["seriuos","serious"],["serivce","service"],["serivces","services"],["sersies","series"],["sertificate","certificate"],["sertificated","certificated"],["sertificates","certificates"],["sertification","certification"],["servece","service"],["serveced","serviced"],["serveces","services"],["servecing","servicing"],["serveice","service"],["serveiced","serviced"],["serveices","services"],["serveicing","servicing"],["serveless","serverless"],["serveral","several"],["serverite","severity"],["serverites","severities"],["serverities","severities"],["serverity","severity"],["serverles","serverless"],["serverlesss","serverless"],["serverlsss","serverless"],["servicies","services"],["servie","service"],["servies","services"],["servive","service"],["servoce","service"],["servoced","serviced"],["servoces","services"],["servocing","servicing"],["sesion","session"],["sesions","sessions"],["sesitive","sensitive"],["sesitively","sensitively"],["sesitiveness","sensitiveness"],["sesitivity","sensitivity"],["sessio","session"],["sesssion","session"],["sesssions","sessions"],["sestatusbar","setstatusbar"],["sestatusmsg","setstatusmsg"],["setevn","setenv"],["setgit","setgid"],["seting","setting"],["setings","settings"],["setion","section"],["setions","sections"],["setitng","setting"],["setitngs","settings"],["setquential","sequential"],["setted","set"],["settelement","settlement"],["settign","setting"],["settigns","settings"],["settigs","settings"],["settiing","setting"],["settiings","settings"],["settinga","settings"],["settingss","settings"],["settins","settings"],["settlment","settlement"],["settng","setting"],["settter","setter"],["settters","setters"],["settting","setting"],["setttings","settings"],["settup","setup"],["setyp","setup"],["setyps","setups"],["seuence","sequence"],["seuences","sequences"],["sevaral","several"],["severat","several"],["severeal","several"],["severirirty","severity"],["severirities","severities"],["severite","severity"],["severites","severities"],["severiy","severity"],["severl","several"],["severley","severely"],["severly","severely"],["sevice","service"],["sevirity","severity"],["sevral","several"],["sevrally","severally"],["sevrity","severity"],["sewdonim","pseudonym"],["sewdonims","pseudonyms"],["sewrvice","service"],["sfety","safety"],["sgadow","shadow"],["sh1sum","sha1sum"],["shadasloo","shadaloo"],["shaddow","shadow"],["shadhow","shadow"],["shadoloo","shadaloo"],["shal","shall"],["shandeleer","chandelier"],["shandeleers","chandeliers"],["shandow","shadow"],["shaneal","chenille"],["shanghi","Shanghai"],["shapshot","snapshot"],["shapshots","snapshots"],["shapsnot","snapshot"],["shapsnots","snapshots"],["sharable","shareable"],["shareed","shared"],["shareing","sharing"],["sharloton","charlatan"],["sharraid","charade"],["sharraids","charades"],["shashes","slashes"],["shatow","ch\xE2teau"],["shbang","shebang"],["shedule","schedule"],["sheduled","scheduled"],["shedules","schedules"],["sheduling","scheduling"],["sheepherd","shepherd"],["sheepherds","shepherds"],["sheeps","sheep"],["sheild","shield"],["sheilded","shielded"],["sheilding","shielding"],["sheilds","shields"],["shepe","shape"],["shepered","shepherd"],["sheperedly","shepherdly"],["shepereds","shepherds"],["shepes","shapes"],["sheping","shaping"],["shepre","sphere"],["shepres","spheres"],["sherif","sheriff"],["shfit","shift"],["shfited","shifted"],["shfiting","shifting"],["shfits","shifts"],["shfted","shifted"],["shicane","chicane"],["shif","shift"],["shif-tab","shift-tab"],["shineing","shining"],["shiped","shipped"],["shiping","shipping"],["shoftware","software"],["shoild","should"],["shoing","showing"],["sholder","shoulder"],["sholdn't","shouldn't"],["sholuld","should"],["sholuldn't","shouldn't"],["shoould","should"],["shopkeeepers","shopkeepers"],["shorcut","shortcut"],["shorcuts","shortcuts"],["shorly","shortly"],["short-cicruit","short-circuit"],["short-cicruits","short-circuits"],["shortcat","shortcut"],["shortcats","shortcuts"],["shortcomming","shortcoming"],["shortcommings","shortcomings"],["shortcutt","shortcut"],["shortern","shorten"],["shorthly","shortly"],["shortkut","shortcut"],["shortkuts","shortcuts"],["shortwhile","short while"],["shotcut","shortcut"],["shotcuts","shortcuts"],["shotdown","shutdown"],["shoucl","should"],["shoud","should"],["shoudl","should"],["shoudld","should"],["shoudle","should"],["shoudln't","shouldn't"],["shoudlnt","shouldn't"],["shoudn't","shouldn't"],["shoudn","shouldn"],["should'nt","shouldn't"],["should't","shouldn't"],["shouldn;t","shouldn't"],["shouldnt'","shouldn't"],["shouldnt","shouldn't"],["shouldnt;","shouldn't"],["shoule","should"],["shoulld","should"],["shouln't","shouldn't"],["shouls","should"],["shoult","should"],["shouod","should"],["shouw","show"],["shouws","shows"],["showvinism","chauvinism"],["shpae","shape"],["shpaes","shapes"],["shpapes","shapes"],["shpere","sphere"],["shperes","spheres"],["shpped","shipped"],["shreak","shriek"],["shreshold","threshold"],["shriks","shrinks"],["shttp","https"],["shudown","shutdown"],["shufle","shuffle"],["shuld","should"],["shure","sure"],["shurely","surely"],["shutdownm","shutdown"],["shuting","shutting"],["shutodwn","shutdown"],["shwo","show"],["shwon","shown"],["shystem","system"],["shystems","systems"],["sibiling","sibling"],["sibilings","siblings"],["sibtitle","subtitle"],["sibtitles","subtitles"],["sicinct","succinct"],["sicinctly","succinctly"],["sicne","since"],["sidde","side"],["sideral","sidereal"],["siduction","seduction"],["siezure","seizure"],["siezures","seizures"],["siffix","suffix"],["siffixed","suffixed"],["siffixes","suffixes"],["siffixing","suffixing"],["sigaled","signaled"],["siganture","signature"],["sigantures","signatures"],["sigen","sign"],["sigificance","significance"],["siginificant","significant"],["siginificantly","significantly"],["siginify","signify"],["sigit","digit"],["sigits","digits"],["sigleton","singleton"],["signales","signals"],["signall","signal"],["signatue","signature"],["signatur","signature"],["signes","signs"],["signficant","significant"],["signficantly","significantly"],["signficiant","significant"],["signfies","signifies"],["signguature","signature"],["signifanct","significant"],["signifant","significant"],["signifantly","significantly"],["signifcant","significant"],["signifcantly","significantly"],["signifficant","significant"],["significanly","significantly"],["significat","significant"],["significatly","significantly"],["significently","significantly"],["signifigant","significant"],["signifigantly","significantly"],["signitories","signatories"],["signitory","signatory"],["signol","signal"],["signto","sign to"],["signul","signal"],["signular","singular"],["signularity","singularity"],["silentely","silently"],["silenty","silently"],["silouhette","silhouette"],["silouhetted","silhouetted"],["silouhettes","silhouettes"],["silouhetting","silhouetting"],["simeple","simple"],["simetrie","symmetry"],["simetries","symmetries"],["simgle","single"],["simialr","similar"],["simialrity","similarity"],["simialrly","similarly"],["simiar","similar"],["similarily","similarly"],["similary","similarly"],["similat","similar"],["similia","similar"],["similiar","similar"],["similiarity","similarity"],["similiarly","similarly"],["similiarty","similarity"],["similiary","similarity"],["simillar","similar"],["similtaneous","simultaneous"],["simlar","similar"],["simlarlity","similarity"],["simlarly","similarly"],["simliar","similar"],["simliarly","similarly"],["simlicity","simplicity"],["simlified","simplified"],["simmetric","symmetric"],["simmetrical","symmetrical"],["simmetry","symmetry"],["simmilar","similar"],["simpification","simplification"],["simpifications","simplifications"],["simpified","simplified"],["simplei","simply"],["simpley","simply"],["simplfy","simplify"],["simplicitly","simplicity"],["simplicty","simplicity"],["simplier","simpler"],["simpliest","simplest"],["simplifed","simplified"],["simplificaiton","simplification"],["simplificaitons","simplifications"],["simplifiy","simplify"],["simplifys","simplifies"],["simpliifcation","simplification"],["simpliifcations","simplifications"],["simplist","simplest"],["simpy","simply"],["simualte","simulate"],["simualted","simulated"],["simualtes","simulates"],["simualting","simulating"],["simualtion","simulation"],["simualtions","simulations"],["simualtor","simulator"],["simualtors","simulators"],["simulaiton","simulation"],["simulaitons","simulations"],["simulantaneous","simultaneous"],["simulantaneously","simultaneously"],["simulataeous","simultaneous"],["simulataeously","simultaneously"],["simulataneity","simultaneity"],["simulataneous","simultaneous"],["simulataneously","simultaneously"],["simulatanious","simultaneous"],["simulataniously","simultaneously"],["simulatanous","simultaneous"],["simulatanously","simultaneously"],["simulatation","simulation"],["simulatenous","simultaneous"],["simulatenously","simultaneously"],["simultanaeous","simultaneous"],["simultaneos","simultaneous"],["simultaneosly","simultaneously"],["simultanious","simultaneous"],["simultaniously","simultaneously"],["simultanous","simultaneous"],["simultanously","simultaneously"],["simutaneously","simultaneously"],["sinature","signature"],["sincerley","sincerely"],["sincerly","sincerely"],["singaled","signaled"],["singals","signals"],["singature","signature"],["singatures","signatures"],["singelar","singular"],["singelarity","singularity"],["singelarly","singularly"],["singelton","singleton"],["singl","single"],["singlar","singular"],["single-threded","single-threaded"],["singlton","singleton"],["singltons","singletons"],["singluar","singular"],["singlular","singular"],["singlularly","singularly"],["singnal","signal"],["singnalled","signalled"],["singnals","signals"],["singolar","singular"],["singoolar","singular"],["singoolarity","singularity"],["singoolarly","singularly"],["singsog","singsong"],["singuarity","singularity"],["singuarl","singular"],["singulat","singular"],["singulaties","singularities"],["sinlge","single"],["sinlges","singles"],["sinply","simply"],["sintac","syntax"],["sintacks","syntax"],["sintacs","syntax"],["sintact","syntax"],["sintacts","syntax"],["sintak","syntax"],["sintaks","syntax"],["sintakt","syntax"],["sintakts","syntax"],["sintax","syntax"],["Sionist","Zionist"],["Sionists","Zionists"],["siply","simply"],["sircle","circle"],["sircles","circles"],["sircular","circular"],["sirect","direct"],["sirected","directed"],["sirecting","directing"],["sirection","direction"],["sirectional","directional"],["sirectionalities","directionalities"],["sirectionality","directionality"],["sirectionals","directionals"],["sirectionless","directionless"],["sirections","directions"],["sirective","directive"],["sirectives","directives"],["sirectly","directly"],["sirectness","directness"],["sirector","director"],["sirectories","directories"],["sirectors","directors"],["sirectory","directory"],["sirects","directs"],["sisnce","since"],["sistem","system"],["sistematically","systematically"],["sistematics","systematics"],["sistematies","systematies"],["sistematising","systematising"],["sistematizing","systematizing"],["sistematy","systematy"],["sistemed","systemed"],["sistemic","systemic"],["sistemically","systemically"],["sistemics","systemics"],["sistemist","systemist"],["sistemists","systemists"],["sistemize","systemize"],["sistemized","systemized"],["sistemizes","systemizes"],["sistemizing","systemizing"],["sistems","systems"],["sitation","situation"],["sitations","situations"],["sitaution","situation"],["sitautions","situations"],["sitck","stick"],["siteu","site"],["sitill","still"],["sitirring","stirring"],["sitirs","stirs"],["sitl","still"],["sitll","still"],["sitmuli","stimuli"],["situationnal","situational"],["situatuion","situation"],["situatuions","situations"],["situatution","situation"],["situatutions","situations"],["situbbornness","stubbornness"],["situdio","studio"],["situdios","studios"],["situration","situation"],["siturations","situations"],["situtaion","situation"],["situtaions","situations"],["situtation","situation"],["situtations","situations"],["siutable","suitable"],["siute","suite"],["sivible","visible"],["siwtch","switch"],["siwtched","switched"],["siwtching","switching"],["sizre","size"],["Skagerak","Skagerrak"],["skalar","scalar"],["skateing","skating"],["skecth","sketch"],["skecthes","sketches"],["skeep","skip"],["skelton","skeleton"],["skept","skipped"],["sketchs","sketches"],["skipd","skipped"],["skipe","skip"],["skiping","skipping"],["skippd","skipped"],["skippped","skipped"],["skippps","skips"],["slach","slash"],["slaches","slashes"],["slase","slash"],["slases","slashes"],["slashs","slashes"],["slaugterhouses","slaughterhouses"],["slect","select"],["slected","selected"],["slecting","selecting"],["slection","selection"],["sleect","select"],["sleeped","slept"],["sleepp","sleep"],["slicable","sliceable"],["slient","silent"],["sliently","silently"],["slighlty","slightly"],["slighly","slightly"],["slightl","slightly"],["slighty","slightly"],["slignt","slight"],["sligntly","slightly"],["sligth","slight"],["sligthly","slightly"],["sligtly","slightly"],["sliped","slipped"],["sliseshow","slideshow"],["slowy","slowly"],["sluggify","slugify"],["smae","same"],["smal","small"],["smaler","smaller"],["smallar","smaller"],["smalles","smallest"],["smaple","sample"],["smaples","samples"],["smealting","smelting"],["smething","something"],["smller","smaller"],["smoe","some"],["smoot","smooth"],["smooter","smoother"],["smoothign","smoothing"],["smooting","smoothing"],["smouth","smooth"],["smouthness","smoothness"],["smove","move"],["snaped","snapped"],["snaphot","snapshot"],["snaphsot","snapshot"],["snaping","snapping"],["snappng","snapping"],["snapsnot","snapshot"],["snapsnots","snapshots"],["sneeks","sneaks"],["snese","sneeze"],["snipet","snippet"],["snipets","snippets"],["snpashot","snapshot"],["snpashots","snapshots"],["snyc","sync"],["snytax","syntax"],["Soalris","Solaris"],["socail","social"],["socalism","socialism"],["socekts","sockets"],["socities","societies"],["soecialize","specialized"],["soem","some"],["soemthing","something"],["soemwhere","somewhere"],["sofisticated","sophisticated"],["softend","softened"],["softwares","software"],["softwre","software"],["sofware","software"],["sofwtare","software"],["sohw","show"],["soilders","soldiers"],["soiurce","source"],["soket","socket"],["sokets","sockets"],["solarmutx","solarmutex"],["solatary","solitary"],["solate","isolate"],["solated","isolated"],["solates","isolates"],["solating","isolating"],["soley","solely"],["solfed","solved"],["solfes","solves"],["solfing","solving"],["solfs","solves"],["soliders","soldiers"],["solification","solidification"],["soliliquy","soliloquy"],["soltion","solution"],["soltuion","solution"],["soltuions","solutions"],["soluable","soluble"],["solum","solemn"],["soluton","solution"],["solutons","solutions"],["solveable","solvable"],["solveing","solving"],["solwed","solved"],["som","some"],["someboby","somebody"],["somehing","something"],["somehting","something"],["somehwat","somewhat"],["somehwere","somewhere"],["somehwo","somehow"],["somelse","someone else"],["somemore","some more"],["somene","someone"],["somenone","someone"],["someon","someone"],["somethig","something"],["somethign","something"],["somethimes","sometimes"],["somethimg","something"],["somethiong","something"],["sometiems","sometimes"],["sometihing","something"],["sometihng","something"],["sometims","sometimes"],["sometines","sometimes"],["someting","something"],["sometinhg","something"],["sometring","something"],["sometrings","somethings"],["somewere","somewhere"],["somewher","somewhere"],["somewho","somehow"],["somme","some"],["somthign","something"],["somthing","something"],["somthingelse","somethingelse"],["somtimes","sometimes"],["somwhat","somewhat"],["somwhere","somewhere"],["somwho","somehow"],["somwhow","somehow"],["sonething","something"],["songlar","singular"],["sooaside","suicide"],["soodonim","pseudonym"],["soource","source"],["sophicated","sophisticated"],["sophisicated","sophisticated"],["sophisitcated","sophisticated"],["sophisticted","sophisticated"],["sophmore","sophomore"],["sorceror","sorcerer"],["sorkflow","workflow"],["sorrounding","surrounding"],["sortig","sorting"],["sortings","sorting"],["sortlst","sortlist"],["sortner","sorter"],["sortnr","sorter"],["soscket","socket"],["sotfware","software"],["souce","source"],["souces","sources"],["soucre","source"],["soucres","sources"],["soudn","sound"],["soudns","sounds"],["sould'nt","shouldn't"],["souldn't","shouldn't"],["soundard","soundcard"],["sountrack","soundtrack"],["sourc","source"],["sourcedrectory","sourcedirectory"],["sourcee","source"],["sourcees","sources"],["sourct","source"],["sourrounding","surrounding"],["sourth","south"],["sourthern","southern"],["southbrige","southbridge"],["souvenier","souvenir"],["souveniers","souvenirs"],["soveits","soviets"],["sover","solver"],["sovereignity","sovereignty"],["soverign","sovereign"],["soverignity","sovereignty"],["soverignty","sovereignty"],["sovle","solve"],["sovled","solved"],["sovren","sovereign"],["spacific","specific"],["spacification","specification"],["spacifications","specifications"],["spacifics","specifics"],["spacified","specified"],["spacifies","specifies"],["spaece","space"],["spaeced","spaced"],["spaeces","spaces"],["spaecing","spacing"],["spageti","spaghetti"],["spagetti","spaghetti"],["spagheti","spaghetti"],["spagnum","sphagnum"],["spainish","Spanish"],["spaning","spanning"],["sparate","separate"],["sparately","separately"],["spash","splash"],["spashed","splashed"],["spashes","splashes"],["spaw","spawn"],["spawed","spawned"],["spawing","spawning"],["spawining","spawning"],["spaws","spawns"],["spcae","space"],["spcaed","spaced"],["spcaes","spaces"],["spcaing","spacing"],["spcecified","specified"],["spcial","special"],["spcific","specific"],["spcification","specification"],["spcifications","specifications"],["spcified","specified"],["spcifies","specifies"],["spcify","specify"],["speaced","spaced"],["speach","speech"],["speacing","spacing"],["spearator","separator"],["spearators","separators"],["spec-complient","spec-compliant"],["specail","special"],["specefic","specific"],["specefically","specifically"],["speceficly","specifically"],["specefied","specified"],["specfic","specific"],["specfically","specifically"],["specfication","specification"],["specfications","specifications"],["specficication","specification"],["specficications","specifications"],["specficied","specified"],["specficies","specifies"],["specficy","specify"],["specficying","specifying"],["specfied","specified"],["specfield","specified"],["specfies","specifies"],["specfifies","specifies"],["specfify","specify"],["specfifying","specifying"],["specfiied","specified"],["specfy","specify"],["specfying","specifying"],["speciafied","specified"],["specialisaiton","specialisation"],["specialisaitons","specialisations"],["specializaiton","specialization"],["specializaitons","specializations"],["specialy","specially"],["specic","specific"],["specical","special"],["specication","specification"],["specidic","specific"],["specied","specified"],["speciefied","specified"],["specifactions","specifications"],["specifc","specific"],["specifcally","specifically"],["specifcation","specification"],["specifcations","specifications"],["specifcied","specified"],["specifclly","specifically"],["specifed","specified"],["specifes","specifies"],["speciffic","specific"],["speciffically","specifically"],["specifially","specifically"],["specificaiton","specification"],["specificaitons","specifications"],["specificallly","specifically"],["specificaly","specifically"],["specificated","specified"],["specificateion","specification"],["specificatin","specification"],["specificaton","specification"],["specificed","specified"],["specifices","specifies"],["specificially","specifically"],["specificiation","specification"],["specificiations","specifications"],["specificically","specifically"],["specificied","specified"],["specificl","specific"],["specificly","specifically"],["specifiction","specification"],["specifictions","specifications"],["specifid","specified"],["specifiec","specific"],["specifiecally","specifically"],["specifiecation","specification"],["specifiecations","specifications"],["specifiecd","specified"],["specifieced","specified"],["specifiecs","specifics"],["specifieed","specified"],["specifiees","specifies"],["specifig","specific"],["specifigation","specification"],["specifigations","specifications"],["specifing","specifying"],["specifities","specifics"],["specifiy","specify"],["specifiying","specifying"],["specifric","specific"],["specift","specify"],["specifyed","specified"],["specifyied","specified"],["specifyig","specifying"],["specifyinhg","specifying"],["speciic","specific"],["speciied","specified"],["speciifc","specific"],["speciifed","specified"],["specilisation","specialisation"],["specilisations","specialisations"],["specilization","specialization"],["specilizations","specializations"],["specilized","specialized"],["speciman","specimen"],["speciries","specifies"],["speciry","specify"],["specivied","specified"],["speciy","specify"],["speciyfing","specifying"],["speciyfying","specifying"],["speciying","specifying"],["spectauclar","spectacular"],["spectaulars","spectaculars"],["spectification","specification"],["spectifications","specifications"],["spectified","specified"],["spectifies","specifies"],["spectify","specify"],["spectifying","specifying"],["spectular","spectacular"],["spectularly","spectacularly"],["spectum","spectrum"],["specturm","spectrum"],["specualtive","speculative"],["specufies","specifies"],["specufy","specify"],["spedific","specific"],["spedified","specified"],["spedify","specify"],["speeak","speak"],["speeaking","speaking"],["speeling","spelling"],["speelling","spelling"],["speep","sleep"],["speep-up","speed-up"],["speeped","sped"],["speeping","sleeping"],["spefcifiable","specifiable"],["spefcific","specific"],["spefcifically","specifically"],["spefcification","specification"],["spefcifications","specifications"],["spefcifics","specifics"],["spefcifieid","specified"],["spefcifieir","specifier"],["spefcifieirs","specifiers"],["spefcifieis","specifies"],["spefcifiy","specify"],["spefcifiying","specifying"],["spefeid","specified"],["spefeir","specifier"],["spefeirs","specifiers"],["spefeis","specifies"],["spefiable","specifiable"],["spefial","special"],["spefic","specific"],["speficable","specifiable"],["spefically","specifically"],["spefication","specification"],["spefications","specifications"],["speficed","specified"],["speficeid","specified"],["speficeir","specifier"],["speficeirs","specifiers"],["speficeis","specifies"],["speficer","specifier"],["speficers","specifiers"],["spefices","specifies"],["speficiable","specifiable"],["speficiallally","specifically"],["speficiallation","specification"],["speficiallations","specifications"],["speficialleid","specified"],["speficialleir","specifier"],["speficialleirs","specifiers"],["speficialleis","specifies"],["speficialliable","specifiable"],["speficiallic","specific"],["speficiallically","specifically"],["speficiallication","specification"],["speficiallications","specifications"],["speficiallics","specifics"],["speficiallied","specified"],["speficiallier","specifier"],["speficialliers","specifiers"],["speficiallies","specifies"],["speficiallifed","specified"],["speficiallifer","specifier"],["speficiallifers","specifiers"],["speficiallifes","specifies"],["speficially","specifically"],["speficiation","specification"],["speficiations","specifications"],["speficic","specific"],["speficically","specifically"],["speficication","specification"],["speficications","specifications"],["speficics","specifics"],["speficied","specified"],["speficieid","specified"],["speficieir","specifier"],["speficieirs","specifiers"],["speficieis","specifies"],["speficier","specifier"],["speficiers","specifiers"],["speficies","specifies"],["speficifally","specifically"],["speficifation","specification"],["speficifations","specifications"],["speficifc","specific"],["speficifcally","specifically"],["speficifcation","specification"],["speficifcations","specifications"],["speficifcs","specifics"],["speficifed","specified"],["speficifeid","specified"],["speficifeir","specifier"],["speficifeirs","specifiers"],["speficifeis","specifies"],["speficifer","specifier"],["speficifers","specifiers"],["speficifes","specifies"],["speficifiable","specifiable"],["speficific","specific"],["speficifically","specifically"],["speficification","specification"],["speficifications","specifications"],["speficifics","specifics"],["speficified","specified"],["speficifier","specifier"],["speficifiers","specifiers"],["speficifies","specifies"],["speficififed","specified"],["speficififer","specifier"],["speficififers","specifiers"],["speficififes","specifies"],["speficify","specify"],["speficifying","specifying"],["speficiiable","specifiable"],["speficiic","specific"],["speficiically","specifically"],["speficiication","specification"],["speficiications","specifications"],["speficiics","specifics"],["speficiied","specified"],["speficiier","specifier"],["speficiiers","specifiers"],["speficiies","specifies"],["speficiifed","specified"],["speficiifer","specifier"],["speficiifers","specifiers"],["speficiifes","specifies"],["speficillally","specifically"],["speficillation","specification"],["speficillations","specifications"],["speficilleid","specified"],["speficilleir","specifier"],["speficilleirs","specifiers"],["speficilleis","specifies"],["speficilliable","specifiable"],["speficillic","specific"],["speficillically","specifically"],["speficillication","specification"],["speficillications","specifications"],["speficillics","specifics"],["speficillied","specified"],["speficillier","specifier"],["speficilliers","specifiers"],["speficillies","specifies"],["speficillifed","specified"],["speficillifer","specifier"],["speficillifers","specifiers"],["speficillifes","specifies"],["speficilly","specifically"],["speficitally","specifically"],["speficitation","specification"],["speficitations","specifications"],["speficiteid","specified"],["speficiteir","specifier"],["speficiteirs","specifiers"],["speficiteis","specifies"],["speficitiable","specifiable"],["speficitic","specific"],["speficitically","specifically"],["speficitication","specification"],["speficitications","specifications"],["speficitics","specifics"],["speficitied","specified"],["speficitier","specifier"],["speficitiers","specifiers"],["speficities","specificities"],["speficitifed","specified"],["speficitifer","specifier"],["speficitifers","specifiers"],["speficitifes","specifies"],["speficity","specificity"],["speficiy","specify"],["speficiying","specifying"],["spefics","specifics"],["speficy","specify"],["speficying","specifying"],["spefied","specified"],["spefier","specifier"],["spefiers","specifiers"],["spefies","specifies"],["spefifally","specifically"],["spefifation","specification"],["spefifations","specifications"],["spefifed","specified"],["spefifeid","specified"],["spefifeir","specifier"],["spefifeirs","specifiers"],["spefifeis","specifies"],["spefifer","specifier"],["spefifers","specifiers"],["spefifes","specifies"],["spefifiable","specifiable"],["spefific","specific"],["spefifically","specifically"],["spefification","specification"],["spefifications","specifications"],["spefifics","specifics"],["spefified","specified"],["spefifier","specifier"],["spefifiers","specifiers"],["spefifies","specifies"],["spefififed","specified"],["spefififer","specifier"],["spefififers","specifiers"],["spefififes","specifies"],["spefify","specify"],["spefifying","specifying"],["spefiiable","specifiable"],["spefiic","specific"],["spefiically","specifically"],["spefiication","specification"],["spefiications","specifications"],["spefiics","specifics"],["spefiied","specified"],["spefiier","specifier"],["spefiiers","specifiers"],["spefiies","specifies"],["spefiifally","specifically"],["spefiifation","specification"],["spefiifations","specifications"],["spefiifeid","specified"],["spefiifeir","specifier"],["spefiifeirs","specifiers"],["spefiifeis","specifies"],["spefiifiable","specifiable"],["spefiific","specific"],["spefiifically","specifically"],["spefiification","specification"],["spefiifications","specifications"],["spefiifics","specifics"],["spefiified","specified"],["spefiifier","specifier"],["spefiifiers","specifiers"],["spefiifies","specifies"],["spefiififed","specified"],["spefiififer","specifier"],["spefiififers","specifiers"],["spefiififes","specifies"],["spefiify","specify"],["spefiifying","specifying"],["spefixally","specifically"],["spefixation","specification"],["spefixations","specifications"],["spefixeid","specified"],["spefixeir","specifier"],["spefixeirs","specifiers"],["spefixeis","specifies"],["spefixiable","specifiable"],["spefixic","specific"],["spefixically","specifically"],["spefixication","specification"],["spefixications","specifications"],["spefixics","specifics"],["spefixied","specified"],["spefixier","specifier"],["spefixiers","specifiers"],["spefixies","specifies"],["spefixifed","specified"],["spefixifer","specifier"],["spefixifers","specifiers"],["spefixifes","specifies"],["spefixy","specify"],["spefixying","specifying"],["spefiy","specify"],["spefiying","specifying"],["spefy","specify"],["spefying","specifying"],["speherical","spherical"],["speical","special"],["speices","species"],["speicfied","specified"],["speicific","specific"],["speicified","specified"],["speicify","specify"],["speling","spelling"],["spellshecking","spellchecking"],["spendour","splendour"],["speparate","separate"],["speparated","separated"],["speparating","separating"],["speparation","separation"],["speparator","separator"],["spepc","spec"],["speperatd","separated"],["speperate","separate"],["speperateing","separating"],["speperater","separator"],["speperates","separates"],["speperating","separating"],["speperator","separator"],["speperats","separates"],["sperate","separate"],["sperately","separately"],["sperhical","spherical"],["spermatozoan","spermatozoon"],["speshal","special"],["speshel","special"],["spesialisation","specialization"],["spesific","specific"],["spesifical","specific"],["spesifically","specifically"],["spesificaly","specifically"],["spesifics","specifics"],["spesified","specified"],["spesifities","specifics"],["spesify","specify"],["spezialisation","specialization"],["spezific","specific"],["spezified","specified"],["spezify","specify"],["spicific","specific"],["spicified","specified"],["spicify","specify"],["spiltting","splitting"],["spindel","spindle"],["spindels","spindles"],["spinlcok","spinlock"],["spinock","spinlock"],["spligs","splits"],["spliiter","splitter"],["spliitting","splitting"],["spliting","splitting"],["splitted","split"],["splittng","splitting"],["spllitting","splitting"],["spoace","space"],["spoaced","spaced"],["spoaces","spaces"],["spoacing","spacing"],["sponser","sponsor"],["sponsered","sponsored"],["sponsers","sponsors"],["sponsership","sponsorship"],["spontanous","spontaneous"],["sponzored","sponsored"],["spoonfulls","spoonfuls"],["sporatic","sporadic"],["sporious","spurious"],["sppeches","speeches"],["spport","support"],["spported","supported"],["spporting","supporting"],["spports","supports"],["spreaded","spread"],["spreadhseet","spreadsheet"],["spreadhseets","spreadsheets"],["spreadsheat","spreadsheet"],["spreadsheats","spreadsheets"],["spreasheet","spreadsheet"],["spreasheets","spreadsheets"],["sprech","speech"],["sprecial","special"],["sprecialized","specialized"],["sprecially","specially"],["spred","spread"],["spredsheet","spreadsheet"],["spreedsheet","spreadsheet"],["sprinf","sprintf"],["spririous","spurious"],["spriritual","spiritual"],["spritual","spiritual"],["sproon","spoon"],["spsace","space"],["spsaced","spaced"],["spsaces","spaces"],["spsacing","spacing"],["sptintf","sprintf"],["spurios","spurious"],["spurrious","spurious"],["sqare","square"],["sqared","squared"],["sqares","squares"],["sqash","squash"],["sqashed","squashed"],["sqashing","squashing"],["sqaure","square"],["sqaured","squared"],["sqaures","squares"],["sqeuence","sequence"],["squashgin","squashing"],["squence","sequence"],["squirel","squirrel"],["squirl","squirrel"],["squrared","squared"],["srcipt","script"],["srcipts","scripts"],["sreampropinfo","streampropinfo"],["sreenshot","screenshot"],["sreenshots","screenshots"],["sreturns","returns"],["srikeout","strikeout"],["sring","string"],["srings","strings"],["srink","shrink"],["srinkd","shrunk"],["srinked","shrunk"],["srinking","shrinking"],["sript","script"],["sripts","scripts"],["srollbar","scrollbar"],["srouce","source"],["srtifact","artifact"],["srtifacts","artifacts"],["srtings","strings"],["srtructure","structure"],["srttings","settings"],["sructure","structure"],["sructures","structures"],["srunk","shrunk"],["srunken","shrunken"],["srunkn","shrunken"],["ssame","same"],["ssee","see"],["ssoaiating","associating"],["ssome","some"],["stabalization","stabilization"],["stabilitation","stabilization"],["stabilite","stabilize"],["stabilited","stabilized"],["stabilites","stabilizes"],["stabiliting","stabilizing"],["stabillity","stability"],["stabilty","stability"],["stablility","stability"],["stablilization","stabilization"],["stablize","stabilize"],["stach","stack"],["stacionary","stationary"],["stackk","stack"],["stadnard","standard"],["stadnardisation","standardisation"],["stadnardised","standardised"],["stadnardising","standardising"],["stadnardization","standardization"],["stadnardized","standardized"],["stadnardizing","standardizing"],["stadnards","standards"],["stae","state"],["staement","statement"],["staically","statically"],["stainlees","stainless"],["staion","station"],["staions","stations"],["staition","station"],["staitions","stations"],["stalagtite","stalactite"],["standar","standard"],["standarad","standard"],["standard-complient","standard-compliant"],["standardss","standards"],["standarisation","standardisation"],["standarise","standardise"],["standarised","standardised"],["standarises","standardises"],["standarising","standardising"],["standarization","standardization"],["standarize","standardize"],["standarized","standardized"],["standarizes","standardizes"],["standarizing","standardizing"],["standart","standard"],["standartd","standard"],["standartds","standards"],["standartisation","standardisation"],["standartisator","standardiser"],["standartised","standardised"],["standartization","standardization"],["standartizator","standardizer"],["standartized","standardized"],["standarts","standards"],["standatd","standard"],["standrat","standard"],["standrats","standards"],["standtard","standard"],["stange","strange"],["stanp","stamp"],["staration","starvation"],["stard","start"],["stardard","standard"],["stardardize","standardize"],["stardardized","standardized"],["stardardizes","standardizes"],["stardardizing","standardizing"],["stardards","standards"],["staright","straight"],["startd","started"],["startegic","strategic"],["startegies","strategies"],["startegy","strategy"],["startet","started"],["startign","starting"],["startin","starting"],["startlisteneing","startlistening"],["startnig","starting"],["startparanthesis","startparentheses"],["startted","started"],["startting","starting"],["starup","startup"],["starups","startups"],["statamenet","statement"],["statamenets","statements"],["stategies","strategies"],["stategise","strategise"],["stategised","strategised"],["stategize","strategize"],["stategized","strategized"],["stategy","strategy"],["stateman","statesman"],["statemanet","statement"],["statememts","statements"],["statemen","statement"],["statemenet","statement"],["statemenets","statements"],["statemet","statement"],["statemnts","statements"],["stati","statuses"],["staticly","statically"],["statictic","statistic"],["statictics","statistics"],["statisfied","satisfied"],["statisfies","satisfies"],["statisfy","satisfy"],["statisfying","satisfying"],["statisitics","statistics"],["statistices","statistics"],["statitic","statistic"],["statitics","statistics"],["statmenet","statement"],["statmenmt","statement"],["statment","statement"],["statments","statements"],["statrt","start"],["stattistic","statistic"],["statubar","statusbar"],["statuline","statusline"],["statulines","statuslines"],["statup","startup"],["staturday","Saturday"],["statuss","status"],["statusses","statuses"],["statustics","statistics"],["staulk","stalk"],["stauration","saturation"],["staus","status"],["stawberries","strawberries"],["stawberry","strawberry"],["stawk","stalk"],["stcokbrush","stockbrush"],["stdanard","standard"],["stdanards","standards"],["stength","strength"],["steram","stream"],["steramed","streamed"],["steramer","streamer"],["steraming","streaming"],["sterams","streams"],["sterio","stereo"],["steriods","steroids"],["sterotype","stereotype"],["sterotypes","stereotypes"],["stickness","stickiness"],["stickyness","stickiness"],["stiffneing","stiffening"],["stiky","sticky"],["stil","still"],["stilus","stylus"],["stingent","stringent"],["stipped","stripped"],["stiring","stirring"],["stirng","string"],["stirngs","strings"],["stirr","stir"],["stirrs","stirs"],["stivk","stick"],["stivks","sticks"],["stle","style"],["stlye","style"],["stlyes","styles"],["stnad","stand"],["stndard","standard"],["stoage","storage"],["stoages","storages"],["stocahstic","stochastic"],["stocastic","stochastic"],["stoer","store"],["stoers","stores"],["stomache","stomach"],["stompted","stomped"],["stong","strong"],["stoped","stopped"],["stoping","stopping"],["stopp","stop"],["stoppped","stopped"],["stoppping","stopping"],["stopps","stops"],["stopry","story"],["storag","storage"],["storeable","storable"],["storeage","storage"],["stoream","stream"],["storeble","storable"],["storeing","storing"],["storge","storage"],["storise","stories"],["stornegst","strongest"],["stoyr","story"],["stpo","stop"],["stradegies","strategies"],["stradegy","strategy"],["stragegy","strategy"],["strageties","strategies"],["stragety","strategy"],["straigh-forward","straightforward"],["straighforward","straightforward"],["straightfoward","straightforward"],["straigt","straight"],["straigth","straight"],["straines","strains"],["strangness","strangeness"],["strart","start"],["strarted","started"],["strarting","starting"],["strarts","starts"],["stratagically","strategically"],["strcture","structure"],["strctures","structures"],["strcutre","structure"],["strcutural","structural"],["strcuture","structure"],["strcutures","structures"],["streamm","stream"],["streammed","streamed"],["streamming","streaming"],["streatched","stretched"],["strech","stretch"],["streched","stretched"],["streches","stretches"],["streching","stretching"],["strectch","stretch"],["strecth","stretch"],["strecthed","stretched"],["strecthes","stretches"],["strecthing","stretching"],["streem","stream"],["streemlining","streamlining"],["stregth","strength"],["streightish","straightish"],["streightly","straightly"],["streightness","straightness"],["streigtish","straightish"],["streigtly","straightly"],["streigtness","straightness"],["strem","stream"],["strema","stream"],["strengh","strength"],["strenghen","strengthen"],["strenghened","strengthened"],["strenghening","strengthening"],["strenght","strength"],["strenghten","strengthen"],["strenghtened","strengthened"],["strenghtening","strengthening"],["strenghts","strengths"],["strengtened","strengthened"],["strenous","strenuous"],["strentgh","strength"],["strenth","strength"],["strerrror","strerror"],["striaght","straight"],["striaghten","straighten"],["striaghtens","straightens"],["striaghtforward","straightforward"],["striaghts","straights"],["striclty","strictly"],["stricly","strictly"],["stricteir","stricter"],["strictier","stricter"],["strictiest","strictest"],["strictist","strictest"],["strig","string"],["strigification","stringification"],["strigifying","stringifying"],["striing","string"],["striings","strings"],["strikely","strikingly"],["stringifed","stringified"],["strinsg","strings"],["strippen","stripped"],["stript","stripped"],["strirngification","stringification"],["strnad","strand"],["strng","string"],["stroage","storage"],["stroe","store"],["stroing","storing"],["stronlgy","strongly"],["stronly","strongly"],["strore","store"],["strored","stored"],["strores","stores"],["stroring","storing"],["strotage","storage"],["stroyboard","storyboard"],["struc","struct"],["strucrure","structure"],["strucrured","structured"],["strucrures","structures"],["structed","structured"],["structer","structure"],["structere","structure"],["structered","structured"],["structeres","structures"],["structetr","structure"],["structire","structure"],["structre","structure"],["structred","structured"],["structres","structures"],["structrual","structural"],["structrue","structure"],["structrued","structured"],["structrues","structures"],["structual","structural"],["structue","structure"],["structued","structured"],["structues","structures"],["structur","structure"],["structurs","structures"],["strucur","structure"],["strucure","structure"],["strucured","structured"],["strucures","structures"],["strucuring","structuring"],["strucurs","structures"],["strucutre","structure"],["strucutred","structured"],["strucutres","structures"],["strucuture","structure"],["struggel","struggle"],["struggeled","struggled"],["struggeling","struggling"],["struggels","struggles"],["struttural","structural"],["strutture","structure"],["struture","structure"],["ststion","station"],["ststionary","stationary"],["ststioned","stationed"],["ststionery","stationery"],["ststions","stations"],["ststr","strstr"],["stteting","setting"],["sttetings","settings"],["stubborness","stubbornness"],["stucked","stuck"],["stuckt","stuck"],["stuct","struct"],["stucts","structs"],["stucture","structure"],["stuctured","structured"],["stuctures","structures"],["studdy","study"],["studetn","student"],["studetns","students"],["studing","studying"],["studoi","studio"],["studois","studios"],["stuggling","struggling"],["stuido","studio"],["stuidos","studios"],["stuill","still"],["stummac","stomach"],["sturctural","structural"],["sturcture","structure"],["sturctures","structures"],["sturture","structure"],["sturtured","structured"],["sturtures","structures"],["sturucture","structure"],["stutdown","shutdown"],["stutus","status"],["styhe","style"],["styilistic","stylistic"],["stylessheets","stylesheets"],["sub-lcuase","sub-clause"],["subbtle","subtle"],["subcatagories","subcategories"],["subcatagory","subcategory"],["subcirucit","subcircuit"],["subcommannd","subcommand"],["subcommnad","subcommand"],["subconchus","subconscious"],["subconsiously","subconsciously"],["subcribe","subscribe"],["subcribed","subscribed"],["subcribes","subscribes"],["subcribing","subscribing"],["subdirectoires","subdirectories"],["subdirectorys","subdirectories"],["subdirecty","subdirectory"],["subdivisio","subdivision"],["subdivisiond","subdivisioned"],["subdoamin","subdomain"],["subdoamins","subdomains"],["subelemet","subelement"],["subelemets","subelements"],["subexperesion","subexpression"],["subexperesions","subexpressions"],["subexperession","subexpression"],["subexperessions","subexpressions"],["subexpersion","subexpression"],["subexpersions","subexpressions"],["subexperssion","subexpression"],["subexperssions","subexpressions"],["subexpession","subexpression"],["subexpessions","subexpressions"],["subexpresssion","subexpression"],["subexpresssions","subexpressions"],["subfolfer","subfolder"],["subfolfers","subfolders"],["subfromat","subformat"],["subfromats","subformats"],["subfroms","subforms"],["subgregion","subregion"],["subirectory","subdirectory"],["subjec","subject"],["subjet","subject"],["subjudgation","subjugation"],["sublass","subclass"],["sublasse","subclasse"],["sublasses","subclasses"],["sublcasses","subclasses"],["sublcuase","subclause"],["suble","subtle"],["submachne","submachine"],["submision","submission"],["submisson","submission"],["submited","submitted"],["submition","submission"],["submitions","submissions"],["submittted","submitted"],["submoule","submodule"],["submti","submit"],["subnegatiotiation","subnegotiation"],["subnegatiotiations","subnegotiations"],["subnegoatiation","subnegotiation"],["subnegoatiations","subnegotiations"],["subnegoation","subnegotiation"],["subnegoations","subnegotiations"],["subnegociation","subnegotiation"],["subnegociations","subnegotiations"],["subnegogtiation","subnegotiation"],["subnegogtiations","subnegotiations"],["subnegoitation","subnegotiation"],["subnegoitations","subnegotiations"],["subnegoptionsotiation","subnegotiation"],["subnegoptionsotiations","subnegotiations"],["subnegosiation","subnegotiation"],["subnegosiations","subnegotiations"],["subnegotaiation","subnegotiation"],["subnegotaiations","subnegotiations"],["subnegotaition","subnegotiation"],["subnegotaitions","subnegotiations"],["subnegotatiation","subnegotiation"],["subnegotatiations","subnegotiations"],["subnegotation","subnegotiation"],["subnegotations","subnegotiations"],["subnegothiation","subnegotiation"],["subnegothiations","subnegotiations"],["subnegotication","subnegotiation"],["subnegotications","subnegotiations"],["subnegotioation","subnegotiation"],["subnegotioations","subnegotiations"],["subnegotion","subnegotiation"],["subnegotionation","subnegotiation"],["subnegotionations","subnegotiations"],["subnegotions","subnegotiations"],["subnegotiotation","subnegotiation"],["subnegotiotations","subnegotiations"],["subnegotiotion","subnegotiation"],["subnegotiotions","subnegotiations"],["subnegotitaion","subnegotiation"],["subnegotitaions","subnegotiations"],["subnegotitation","subnegotiation"],["subnegotitations","subnegotiations"],["subnegotition","subnegotiation"],["subnegotitions","subnegotiations"],["subnegoziation","subnegotiation"],["subnegoziations","subnegotiations"],["subobjecs","subobjects"],["suborutine","subroutine"],["suborutines","subroutines"],["suboutine","subroutine"],["subpackge","subpackage"],["subpackges","subpackages"],["subpecies","subspecies"],["subporgram","subprogram"],["subproccese","subprocess"],["subpsace","subspace"],["subquue","subqueue"],["subract","subtract"],["subracted","subtracted"],["subraction","subtraction"],["subree","subtree"],["subresoure","subresource"],["subresoures","subresources"],["subroutie","subroutine"],["subrouties","subroutines"],["subsceptible","susceptible"],["subscibe","subscribe"],["subscibed","subscribed"],["subsciber","subscriber"],["subscibers","subscribers"],["subscirbe","subscribe"],["subscirbed","subscribed"],["subscirber","subscriber"],["subscirbers","subscribers"],["subscirbes","subscribes"],["subscirbing","subscribing"],["subscirpt","subscript"],["subscirption","subscription"],["subscirptions","subscriptions"],["subscritpion","subscription"],["subscritpions","subscriptions"],["subscritpiton","subscription"],["subscritpitons","subscriptions"],["subscritpt","subscript"],["subscritption","subscription"],["subscritptions","subscriptions"],["subsctitution","substitution"],["subsecrion","subsection"],["subsedent","subsequent"],["subseqence","subsequence"],["subseqent","subsequent"],["subsequest","subsequent"],["subsequnce","subsequence"],["subsequnt","subsequent"],["subsequntly","subsequently"],["subseuqent","subsequent"],["subshystem","subsystem"],["subshystems","subsystems"],["subsidary","subsidiary"],["subsiduary","subsidiary"],["subsiquent","subsequent"],["subsiquently","subsequently"],["subsituent","substituent"],["subsituents","substituents"],["subsitutable","substitutable"],["subsitutatble","substitutable"],["subsitute","substitute"],["subsituted","substituted"],["subsitutes","substitutes"],["subsituting","substituting"],["subsitution","substitution"],["subsitutions","substitutions"],["subsitutuent","substituent"],["subsitutuents","substituents"],["subsitutute","substitute"],["subsitututed","substituted"],["subsitututes","substitutes"],["subsitututing","substituting"],["subsitutution","substitution"],["subsquent","subsequent"],["subsquently","subsequently"],["subsriber","subscriber"],["substace","substance"],["substact","subtract"],["substaintially","substantially"],["substancial","substantial"],["substantialy","substantially"],["substantivly","substantively"],["substask","subtask"],["substasks","subtasks"],["substatial","substantial"],["substential","substantial"],["substentially","substantially"],["substition","substitution"],["substitions","substitutions"],["substitition","substitution"],["substititions","substitutions"],["substituation","substitution"],["substituations","substitutions"],["substitude","substitute"],["substituded","substituted"],["substitudes","substitutes"],["substituding","substituting"],["substitue","substitute"],["substitues","substitutes"],["substituing","substituting"],["substituion","substitution"],["substituions","substitutions"],["substiution","substitution"],["substract","subtract"],["substracted","subtracted"],["substracting","subtracting"],["substraction","subtraction"],["substracts","subtracts"],["substucture","substructure"],["substuctures","substructures"],["substutite","substitute"],["subsysthem","subsystem"],["subsysthems","subsystems"],["subsystyem","subsystem"],["subsystyems","subsystems"],["subsysytem","subsystem"],["subsysytems","subsystems"],["subsytem","subsystem"],["subsytems","subsystems"],["subtabels","subtables"],["subtak","subtask"],["subtances","substances"],["subterranian","subterranean"],["subtitute","substitute"],["subtituted","substituted"],["subtitutes","substitutes"],["subtituting","substituting"],["subtitution","substitution"],["subtitutions","substitutions"],["subtrafuge","subterfuge"],["subtrate","substrate"],["subtrates","substrates"],["subtring","substring"],["subtrings","substrings"],["subtsitutable","substitutable"],["subtsitutatble","substitutable"],["suburburban","suburban"],["subystem","subsystem"],["subystems","subsystems"],["succceeded","succeeded"],["succcess","success"],["succcesses","successes"],["succcessful","successful"],["succcessfully","successfully"],["succcessor","successor"],["succcessors","successors"],["succcessul","successful"],["succcessully","successfully"],["succecful","successful"],["succed","succeed"],["succedd","succeed"],["succedded","succeeded"],["succedding","succeeding"],["succedds","succeeds"],["succede","succeed"],["succeded","succeeded"],["succedes","succeeds"],["succedfully","successfully"],["succeding","succeeding"],["succeds","succeeds"],["succee","succeed"],["succeedde","succeeded"],["succeedes","succeeds"],["succeess","success"],["succeesses","successes"],["succes","success"],["succesful","successful"],["succesfull","successful"],["succesfully","successfully"],["succesfuly","successfully"],["succesion","succession"],["succesive","successive"],["succesor","successor"],["succesors","successors"],["successfui","successful"],["successfule","successful"],["successfull","successful"],["successfullies","successfully"],["successfullly","successfully"],["successfulln","successful"],["successfullness","successfulness"],["successfullt","successfully"],["successfuly","successfully"],["successing","successive"],["successs","success"],["successsfully","successfully"],["successsion","succession"],["successul","successful"],["successully","successfully"],["succesully","successfully"],["succicently","sufficiently"],["succint","succinct"],["succseeded","succeeded"],["succsess","success"],["succsessfull","successful"],["succsessive","successive"],["succssful","successful"],["succussfully","successfully"],["suceed","succeed"],["suceeded","succeeded"],["suceeding","succeeding"],["suceeds","succeeds"],["suceessfully","successfully"],["suces","success"],["suceses","successes"],["sucesful","successful"],["sucesfull","successful"],["sucesfully","successfully"],["sucesfuly","successfully"],["sucesion","succession"],["sucesive","successive"],["sucess","success"],["sucesscient","sufficient"],["sucessed","succeeded"],["sucessefully","successfully"],["sucesses","successes"],["sucessess","success"],["sucessflly","successfully"],["sucessfually","successfully"],["sucessfukk","successful"],["sucessful","successful"],["sucessfull","successful"],["sucessfully","successfully"],["sucessfuly","successfully"],["sucession","succession"],["sucessiv","successive"],["sucessive","successive"],["sucessively","successively"],["sucessor","successor"],["sucessors","successors"],["sucessot","successor"],["sucesss","success"],["sucessses","successes"],["sucesssful","successful"],["sucesssfull","successful"],["sucesssfully","successfully"],["sucesssfuly","successfully"],["sucessufll","successful"],["sucessuflly","successfully"],["sucessully","successfully"],["sucide","suicide"],["sucidial","suicidal"],["sucome","succumb"],["sucsede","succeed"],["sucsess","success"],["sudent","student"],["sudents","students"],["sudmobule","submodule"],["sudmobules","submodules"],["sueful","useful"],["sueprset","superset"],["suface","surface"],["sufaces","surfaces"],["sufface","surface"],["suffaces","surfaces"],["suffciency","sufficiency"],["suffcient","sufficient"],["suffciently","sufficiently"],["sufferage","suffrage"],["sufferred","suffered"],["sufferring","suffering"],["sufficate","suffocate"],["sufficated","suffocated"],["sufficates","suffocates"],["sufficating","suffocating"],["suffication","suffocation"],["sufficency","sufficiency"],["sufficent","sufficient"],["sufficently","sufficiently"],["sufficiancy","sufficiency"],["sufficiant","sufficient"],["sufficiantly","sufficiently"],["sufficiennt","sufficient"],["sufficienntly","sufficiently"],["suffiency","sufficiency"],["suffient","sufficient"],["suffiently","sufficiently"],["suffisticated","sophisticated"],["suficate","suffocate"],["suficated","suffocated"],["suficates","suffocates"],["suficating","suffocating"],["sufication","suffocation"],["suficcient","sufficient"],["suficient","sufficient"],["suficiently","sufficiently"],["sufocate","suffocate"],["sufocated","suffocated"],["sufocates","suffocates"],["sufocating","suffocating"],["sufocation","suffocation"],["sugested","suggested"],["sugestion","suggestion"],["sugestions","suggestions"],["sugests","suggests"],["suggesst","suggest"],["suggessted","suggested"],["suggessting","suggesting"],["suggesstion","suggestion"],["suggesstions","suggestions"],["suggessts","suggests"],["suggestes","suggests"],["suggestin","suggestion"],["suggestins","suggestions"],["suggestsed","suggested"],["suggestted","suggested"],["suggesttion","suggestion"],["suggesttions","suggestions"],["sugget","suggest"],["suggeted","suggested"],["suggetsed","suggested"],["suggetsing","suggesting"],["suggetsion","suggestion"],["sugggest","suggest"],["sugggested","suggested"],["sugggesting","suggesting"],["sugggestion","suggestion"],["sugggestions","suggestions"],["sugguest","suggest"],["sugguested","suggested"],["sugguesting","suggesting"],["sugguestion","suggestion"],["sugguestions","suggestions"],["suh","such"],["suiete","suite"],["suiteable","suitable"],["sumamry","summary"],["sumarize","summarize"],["sumary","summary"],["sumbitted","submitted"],["sumed-up","summed-up"],["summarizen","summarize"],["summay","summary"],["summerised","summarised"],["summerized","summarized"],["summersalt","somersault"],["summmaries","summaries"],["summmarisation","summarisation"],["summmarised","summarised"],["summmarization","summarization"],["summmarized","summarized"],["summmary","summary"],["sumodules","submodules"],["sumulate","simulate"],["sumulated","simulated"],["sumulates","simulates"],["sumulation","simulation"],["sumulations","simulations"],["sundey","Sunday"],["sunglases","sunglasses"],["sunsday","Sunday"],["suntask","subtask"],["suop","soup"],["supeblock","superblock"],["supeena","subpoena"],["superbock","superblock"],["superbocks","superblocks"],["supercalifragilisticexpialidoceous","supercalifragilisticexpialidocious"],["supercede","supersede"],["superceded","superseded"],["supercedes","supersedes"],["superceding","superseding"],["superceed","supersede"],["superceeded","superseded"],["superflouous","superfluous"],["superflous","superfluous"],["superflouse","superfluous"],["superfluious","superfluous"],["superfluos","superfluous"],["superfulous","superfluous"],["superintendant","superintendent"],["superopeator","superoperator"],["supersed","superseded"],["superseedd","superseded"],["superseede","supersede"],["superseeded","superseded"],["suphisticated","sophisticated"],["suplant","supplant"],["suplanted","supplanted"],["suplanting","supplanting"],["suplants","supplants"],["suplementary","supplementary"],["suplied","supplied"],["suplimented","supplemented"],["supllies","supplies"],["suport","support"],["suported","supported"],["suporting","supporting"],["suports","supports"],["suportted","supported"],["suposable","supposable"],["supose","suppose"],["suposeable","supposable"],["suposed","supposed"],["suposedly","supposedly"],["suposes","supposes"],["suposing","supposing"],["suposse","suppose"],["suppied","supplied"],["suppier","supplier"],["suppies","supplies"],["supplamented","supplemented"],["suppliad","supplied"],["suppliementing","supplementing"],["suppliment","supplement"],["supplyed","supplied"],["suppoed","supposed"],["suppoert","support"],["suppoort","support"],["suppoorts","supports"],["suppopose","suppose"],["suppoprt","support"],["suppoprted","supported"],["suppor","support"],["suppored","supported"],["supporession","suppression"],["supporing","supporting"],["supportd","supported"],["supportes","supports"],["supportin","supporting"],["supportt","support"],["supportted","supported"],["supportting","supporting"],["supportts","supports"],["supposeable","supposable"],["supposeded","supposed"],["supposedely","supposedly"],["supposeds","supposed"],["supposedy","supposedly"],["supposingly","supposedly"],["suppossed","supposed"],["suppoted","supported"],["suppplied","supplied"],["suppport","support"],["suppported","supported"],["suppporting","supporting"],["suppports","supports"],["suppres","suppress"],["suppresed","suppressed"],["suppresion","suppression"],["suppresions","suppressions"],["suppressingd","suppressing"],["supprot","support"],["supproted","supported"],["supproter","supporter"],["supproters","supporters"],["supproting","supporting"],["supprots","supports"],["supprt","support"],["supprted","supported"],["suppurt","support"],["suppurted","supported"],["suppurter","supporter"],["suppurters","supporters"],["suppurting","supporting"],["suppurtive","supportive"],["suppurts","supports"],["suppy","supply"],["suppying","supplying"],["suprassing","surpassing"],["supres","suppress"],["supresed","suppressed"],["supreses","suppresses"],["supresing","suppressing"],["supresion","suppression"],["supress","suppress"],["supressed","suppressed"],["supresses","suppresses"],["supressible","suppressible"],["supressing","suppressing"],["supression","suppression"],["supressions","suppressions"],["supressor","suppressor"],["supressors","suppressors"],["supresssion","suppression"],["suprious","spurious"],["suprise","surprise"],["suprised","surprised"],["suprises","surprises"],["suprising","surprising"],["suprisingly","surprisingly"],["suprize","surprise"],["suprized","surprised"],["suprizing","surprising"],["suprizingly","surprisingly"],["supsend","suspend"],["supspect","suspect"],["supspected","suspected"],["supspecting","suspecting"],["supspects","suspects"],["surbert","sherbet"],["surfce","surface"],["surgest","suggest"],["surgested","suggested"],["surgestion","suggestion"],["surgestions","suggestions"],["surgests","suggests"],["suround","surround"],["surounded","surrounded"],["surounding","surrounding"],["suroundings","surroundings"],["surounds","surrounds"],["surpise","surprise"],["surpises","surprises"],["surplanted","supplanted"],["surport","support"],["surported","supported"],["surpress","suppress"],["surpressed","suppressed"],["surpresses","suppresses"],["surpressing","suppressing"],["surprisinlgy","surprisingly"],["surprize","surprise"],["surprized","surprised"],["surprizing","surprising"],["surprizingly","surprisingly"],["surregat","surrogate"],["surrepetitious","surreptitious"],["surrepetitiously","surreptitiously"],["surreptious","surreptitious"],["surreptiously","surreptitiously"],["surrogage","surrogate"],["surronded","surrounded"],["surrouded","surrounded"],["surrouding","surrounding"],["surrrounded","surrounded"],["surrundering","surrendering"],["survay","survey"],["survays","surveys"],["surveilence","surveillance"],["surveill","surveil"],["surveyer","surveyor"],["surviver","survivor"],["survivers","survivors"],["survivied","survived"],["susbcribed","subscribed"],["susbsystem","subsystem"],["susbsystems","subsystems"],["susbsytem","subsystem"],["susbsytems","subsystems"],["suscribe","subscribe"],["suscribed","subscribed"],["suscribes","subscribes"],["suscript","subscript"],["susepect","suspect"],["suseptable","susceptible"],["suseptible","susceptible"],["susinctly","succinctly"],["susinkt","succinct"],["suspedn","suspend"],["suspeneded","suspended"],["suspention","suspension"],["suspicios","suspicious"],["suspicioulsy","suspiciously"],["suspicous","suspicious"],["suspicously","suspiciously"],["suspision","suspicion"],["suspsend","suspend"],["sussinct","succinct"],["sustainaiblity","sustainability"],["sustem","system"],["sustems","systems"],["sustitution","substitution"],["sustitutions","substitutions"],["susupend","suspend"],["sutdown","shutdown"],["sutisfaction","satisfaction"],["sutisfied","satisfied"],["sutisfies","satisfies"],["sutisfy","satisfy"],["sutisfying","satisfying"],["suttled","shuttled"],["suttles","shuttles"],["suttlety","subtlety"],["suttling","shuttling"],["suuport","support"],["suuported","supported"],["suuporting","supporting"],["suuports","supports"],["suvenear","souvenir"],["suystem","system"],["suystemic","systemic"],["suystems","systems"],["svelt","svelte"],["swaer","swear"],["swaers","swears"],["swalloed","swallowed"],["swaped","swapped"],["swapiness","swappiness"],["swaping","swapping"],["swarmin","swarming"],["swcloumns","swcolumns"],["swepth","swept"],["swich","switch"],["swiched","switched"],["swiching","switching"],["swicth","switch"],["swicthed","switched"],["swicthing","switching"],["swiming","swimming"],["switchs","switches"],["switcht","switched"],["switchting","switching"],["swith","switch"],["swithable","switchable"],["swithc","switch"],["swithcboard","switchboard"],["swithced","switched"],["swithces","switches"],["swithch","switch"],["swithches","switches"],["swithching","switching"],["swithcing","switching"],["swithcover","switchover"],["swithed","switched"],["swither","switcher"],["swithes","switches"],["swithing","switching"],["switiches","switches"],["swown","shown"],["swtich","switch"],["swtichable","switchable"],["swtichback","switchback"],["swtichbacks","switchbacks"],["swtichboard","switchboard"],["swtichboards","switchboards"],["swtiched","switched"],["swticher","switcher"],["swtichers","switchers"],["swtiches","switches"],["swtiching","switching"],["swtichover","switchover"],["swtichs","switches"],["sxl","xsl"],["syantax","syntax"],["syas","says"],["syatem","system"],["syatems","systems"],["sybsystem","subsystem"],["sybsystems","subsystems"],["sychronisation","synchronisation"],["sychronise","synchronise"],["sychronised","synchronised"],["sychroniser","synchroniser"],["sychronises","synchronises"],["sychronisly","synchronously"],["sychronization","synchronization"],["sychronize","synchronize"],["sychronized","synchronized"],["sychronizer","synchronizer"],["sychronizes","synchronizes"],["sychronmode","synchronmode"],["sychronous","synchronous"],["sychronously","synchronously"],["sycle","cycle"],["sycled","cycled"],["sycles","cycles"],["sycling","cycling"],["sycn","sync"],["sycology","psychology"],["sycronise","synchronise"],["sycronised","synchronised"],["sycronises","synchronises"],["sycronising","synchronising"],["sycronization","synchronization"],["sycronizations","synchronizations"],["sycronize","synchronize"],["sycronized","synchronized"],["sycronizes","synchronizes"],["sycronizing","synchronizing"],["sycronous","synchronous"],["sycronously","synchronously"],["sycronus","synchronous"],["sylabus","syllabus"],["syle","style"],["syles","styles"],["sylibol","syllable"],["sylinder","cylinder"],["sylinders","cylinders"],["sylistic","stylistic"],["sylog","syslog"],["symantics","semantics"],["symblic","symbolic"],["symbo","symbol"],["symboles","symbols"],["symboll","symbol"],["symbonname","symbolname"],["symbsol","symbol"],["symbsols","symbols"],["symemetric","symmetric"],["symetri","symmetry"],["symetric","symmetric"],["symetrical","symmetrical"],["symetrically","symmetrically"],["symetry","symmetry"],["symettric","symmetric"],["symmetic","symmetric"],["symmetral","symmetric"],["symmetri","symmetry"],["symmetricaly","symmetrically"],["symnol","symbol"],["symnols","symbols"],["symobilic","symbolic"],["symobl","symbol"],["symoblic","symbolic"],["symoblically","symbolically"],["symobls","symbols"],["symobolic","symbolic"],["symobolical","symbolical"],["symol","symbol"],["symols","symbols"],["synagouge","synagogue"],["synamic","dynamic"],["synax","syntax"],["synching","syncing"],["synchonisation","synchronisation"],["synchonise","synchronise"],["synchonised","synchronised"],["synchonises","synchronises"],["synchonising","synchronising"],["synchonization","synchronization"],["synchonize","synchronize"],["synchonized","synchronized"],["synchonizes","synchronizes"],["synchonizing","synchronizing"],["synchonous","synchronous"],["synchonrous","synchronous"],["synchrnization","synchronization"],["synchrnonization","synchronization"],["synchroizing","synchronizing"],["synchromized","synchronized"],["synchroneous","synchronous"],["synchroneously","synchronously"],["synchronious","synchronous"],["synchroniously","synchronously"],["synchronizaton","synchronization"],["synchronsouly","synchronously"],["synchronuous","synchronous"],["synchronuously","synchronously"],["synchronus","synchronous"],["syncrhonise","synchronise"],["syncrhonised","synchronised"],["syncrhonize","synchronize"],["syncrhonized","synchronized"],["syncronise","synchronise"],["syncronised","synchronised"],["syncronises","synchronises"],["syncronising","synchronising"],["syncronization","synchronization"],["syncronizations","synchronizations"],["syncronize","synchronize"],["syncronized","synchronized"],["syncronizes","synchronizes"],["syncronizing","synchronizing"],["syncronous","synchronous"],["syncronously","synchronously"],["syncronus","synchronous"],["syncting","syncing"],["syndonic","syntonic"],["syndrom","syndrome"],["syndroms","syndromes"],["synomym","synonym"],["synonim","synonym"],["synonomous","synonymous"],["synonymns","synonyms"],["synopis","synopsis"],["synopsys","synopsis"],["synoym","synonym"],["synphony","symphony"],["synposis","synopsis"],["synronous","synchronous"],["syntac","syntax"],["syntacks","syntax"],["syntacs","syntax"],["syntact","syntax"],["syntactally","syntactically"],["syntacts","syntax"],["syntak","syntax"],["syntaks","syntax"],["syntakt","syntax"],["syntakts","syntax"],["syntatic","syntactic"],["syntatically","syntactically"],["syntaxe","syntax"],["syntaxg","syntax"],["syntaxt","syntax"],["syntehsise","synthesise"],["syntehsised","synthesised"],["syntehsize","synthesize"],["syntehsized","synthesized"],["syntesis","synthesis"],["syntethic","synthetic"],["syntethically","synthetically"],["syntethics","synthetics"],["syntetic","synthetic"],["syntetize","synthesize"],["syntetized","synthesized"],["synthethic","synthetic"],["synthetize","synthesize"],["synthetized","synthesized"],["synthetizes","synthesizes"],["synthtic","synthetic"],["syphyllis","syphilis"],["sypmtoms","symptoms"],["sypport","support"],["syrap","syrup"],["sysbols","symbols"],["syschronize","synchronize"],["sysem","system"],["sysematic","systematic"],["sysems","systems"],["sysmatically","systematically"],["sysmbol","symbol"],["sysmograph","seismograph"],["sysmte","system"],["sysmtes","systems"],["systax","syntax"],["syste","system"],["systen","system"],["systens","systems"],["systesm","systems"],["systhem","system"],["systhems","systems"],["systm","system"],["systme","system"],["systmes","systems"],["systms","systems"],["systyem","system"],["systyems","systems"],["sysyem","system"],["sysyems","systems"],["sytax","syntax"],["sytem","system"],["sytematic","systematic"],["sytemd","systemd"],["syteme","system"],["sytems","systems"],["sythesis","synthesis"],["sytle","style"],["sytled","styled"],["sytles","styles"],["sytlesheet","stylesheet"],["sytling","styling"],["sytnax","syntax"],["sytntax","syntax"],["sytsem","system"],["sytsemic","systemic"],["sytsems","systems"],["szenario","scenario"],["szenarios","scenarios"],["szes","sizes"],["szie","size"],["szied","sized"],["szies","sizes"],["tabacco","tobacco"],["tabbaray","taboret"],["tabblow","tableau"],["tabe","table"],["tabel","table"],["tabeles","tables"],["tabels","tables"],["tabeview","tabview"],["tabke","table"],["tabl","table"],["tablepsace","tablespace"],["tablepsaces","tablespaces"],["tablle","table"],["tabluar","tabular"],["tabluate","tabulate"],["tabluated","tabulated"],["tabluates","tabulates"],["tabluating","tabulating"],["tabualte","tabulate"],["tabualted","tabulated"],["tabualtes","tabulates"],["tabualting","tabulating"],["tabualtor","tabulator"],["tabualtors","tabulators"],["taged","tagged"],["taget","target"],["tageted","targeted"],["tageting","targeting"],["tagets","targets"],["tagggen","taggen"],["tagnet","tangent"],["tagnetial","tangential"],["tagnets","tangents"],["tagued","tagged"],["tahn","than"],["taht","that"],["takslet","tasklet"],["talbe","table"],["talekd","talked"],["tallerable","tolerable"],["tamplate","template"],["tamplated","templated"],["tamplates","templates"],["tamplating","templating"],["tangeant","tangent"],["tangeantial","tangential"],["tangeants","tangents"],["tangenet","tangent"],["tangensial","tangential"],["tangentailly","tangentially"],["tanget","tangent"],["tangetial","tangential"],["tangetially","tangentially"],["tangets","tangents"],["tansact","transact"],["tansaction","transaction"],["tansactional","transactional"],["tansactions","transactions"],["tanseint","transient"],["tansfomed","transformed"],["tansient","transient"],["tanslate","translate"],["tanslated","translated"],["tanslates","translates"],["tanslation","translation"],["tanslations","translations"],["tanslator","translator"],["tansmit","transmit"],["tansverse","transverse"],["tarbal","tarball"],["tarbals","tarballs"],["tarce","trace"],["tarced","traced"],["tarces","traces"],["tarcing","tracing"],["targed","target"],["targer","target"],["targest","targets"],["targetted","targeted"],["targetting","targeting"],["targettting","targeting"],["targt","target"],["targte","target"],["tarmigan","ptarmigan"],["tarnsparent","transparent"],["tarpolin","tarpaulin"],["tarvis","Travis"],["tarvisci","TravisCI"],["tasbar","taskbar"],["taskelt","tasklet"],["tast","taste"],["tatgert","target"],["tatgerted","targeted"],["tatgerting","targeting"],["tatgerts","targets"],["tath","that"],["tatoo","tattoo"],["tatoos","tattoos"],["tattooes","tattoos"],["tawk","talk"],["taxanomic","taxonomic"],["taxanomy","taxonomy"],["taxnomy","taxonomy"],["taxomonmy","taxonomy"],["taxonmy","taxonomy"],["taxonoy","taxonomy"],["taylored","tailored"],["tbe","the"],["tbey","they"],["tcahce","cache"],["tcahces","caches"],["tcheckout","checkout"],["tcpdumpp","tcpdump"],["tcppcheck","cppcheck"],["teacer","teacher"],["teacers","teachers"],["teached","taught"],["teachnig","teaching"],["teaher","teacher"],["teahers","teachers"],["teamplate","template"],["teamplates","templates"],["teated","treated"],["teched","taught"],["techer","teacher"],["techers","teachers"],["teches","teaches"],["techical","technical"],["techician","technician"],["techicians","technicians"],["techincal","technical"],["techincally","technically"],["teching","teaching"],["techinically","technically"],["techinique","technique"],["techiniques","techniques"],["techinque","technique"],["techinques","techniques"],["techique","technique"],["techiques","techniques"],["techneek","technique"],["technic","technique"],["technics","techniques"],["technik","technique"],["techniks","techniques"],["techniquest","techniques"],["techniquet","technique"],["technitian","technician"],["technition","technician"],["technlogy","technology"],["technnology","technology"],["technolgy","technology"],["technoloiges","technologies"],["tecnic","technique"],["tecnical","technical"],["tecnically","technically"],["tecnician","technician"],["tecnicians","technicians"],["tecnique","technique"],["tecniques","techniques"],["tedeous","tedious"],["tefine","define"],["teh","the"],["tehy","they"],["tekst","text"],["teksts","texts"],["telegramm","telegram"],["telelevision","television"],["televsion","television"],["telocom","telecom"],["telphony","telephony"],["temaplate","template"],["temaplates","templates"],["temeprature","temperature"],["temepratures","temperatures"],["temerature","temperature"],["teminal","terminal"],["teminals","terminals"],["teminate","terminate"],["teminated","terminated"],["teminating","terminating"],["temination","termination"],["temlate","template"],["temorarily","temporarily"],["temorary","temporary"],["tempalte","template"],["tempaltes","templates"],["temparal","temporal"],["tempararily","temporarily"],["temparary","temporary"],["temparate","temperate"],["temparature","temperature"],["temparily","temporarily"],["tempate","template"],["tempated","templated"],["tempates","templates"],["tempatied","templatized"],["tempation","temptation"],["tempatised","templatised"],["tempatized","templatized"],["tempature","temperature"],["tempdate","template"],["tempearture","temperature"],["tempeartures","temperatures"],["tempearure","temperature"],["tempelate","template"],["temperarily","temporarily"],["temperarure","temperature"],["temperary","temporary"],["temperatur","temperature"],["tempereature","temperature"],["temperment","temperament"],["tempertaure","temperature"],["temperture","temperature"],["templaced","templated"],["templaces","templates"],["templacing","templating"],["templaet","template"],["templat","template"],["templateas","templates"],["templete","template"],["templeted","templated"],["templetes","templates"],["templeting","templating"],["tempoaray","temporary"],["tempopary","temporary"],["temporaere","temporary"],["temporafy","temporary"],["temporalily","temporarily"],["temporarely","temporarily"],["temporarilly","temporarily"],["temporarilty","temporarily"],["temporarilu","temporary"],["temporarirly","temporarily"],["temporay","temporary"],["tempories","temporaries"],["temporily","temporarily"],["tempororaries","temporaries"],["tempororarily","temporarily"],["tempororary","temporary"],["temporories","temporaries"],["tempororily","temporarily"],["temporory","temporary"],["temporraies","temporaries"],["temporraily","temporarily"],["temporraries","temporaries"],["temporrarily","temporarily"],["temporrary","temporary"],["temporray","temporary"],["temporries","temporaries"],["temporrily","temporarily"],["temporry","temporary"],["temportal","temporal"],["temportaries","temporaries"],["temportarily","temporarily"],["temportary","temporary"],["tempory","temporary"],["temporyries","temporaries"],["temporyrily","temporarily"],["temporyry","temporary"],["tempraaily","temporarily"],["tempraal","temporal"],["tempraarily","temporarily"],["tempraarly","temporarily"],["tempraary","temporary"],["tempraay","temporary"],["tempraily","temporarily"],["tempral","temporal"],["temprament","temperament"],["tempramental","temperamental"],["tempraraily","temporarily"],["tempraral","temporal"],["temprararily","temporarily"],["temprararly","temporarily"],["temprarary","temporary"],["tempraray","temporary"],["temprarily","temporarily"],["temprature","temperature"],["tempratures","temperatures"],["tempray","temporary"],["tempreature","temperature"],["tempreatures","temperatures"],["temprement","temperament"],["tempremental","temperamental"],["temproaily","temporarily"],["temproal","temporal"],["temproarily","temporarily"],["temproarly","temporarily"],["temproary","temporary"],["temproay","temporary"],["temprol","temporal"],["temproment","temperament"],["tempromental","temperamental"],["temproraily","temporarily"],["temproral","temporal"],["temproraly","temporarily"],["temprorarily","temporarily"],["temprorarly","temporarily"],["temprorary","temporary"],["temproray","temporary"],["temprorily","temporarily"],["temprory","temporary"],["temproy","temporary"],["temptatation","temptation"],["tempurature","temperature"],["tempurture","temperature"],["temr","term"],["temrinal","terminal"],["temselves","themselves"],["temtation","temptation"],["tenacle","tentacle"],["tenacles","tentacles"],["tenanet","tenant"],["tenanets","tenants"],["tenatious","tenacious"],["tenatiously","tenaciously"],["tenative","tentative"],["tenatively","tentatively"],["tendacy","tendency"],["tendancies","tendencies"],["tendancy","tendency"],["tennisplayer","tennis player"],["tentaive","tentative"],["tentaively","tentatively"],["tention","tension"],["teplmate","template"],["teplmated","templated"],["teplmates","templates"],["tepmorarily","temporarily"],["teraform","terraform"],["teraformed","terraformed"],["teraforming","terraforming"],["teraforms","terraforms"],["terfform","terraform"],["terfformed","terraformed"],["terfforming","terraforming"],["terfforms","terraforms"],["teridactyl","pterodactyl"],["terific","terrific"],["terimnate","terminate"],["termial","terminal"],["termials","terminals"],["termianted","terminated"],["termimal","terminal"],["termimals","terminals"],["terminater","terminator"],["terminaters","terminators"],["terminats","terminates"],["termindate","terminate"],["termine","determine"],["termined","terminated"],["terminte","terminate"],["termintor","terminator"],["termniate","terminate"],["termniated","terminated"],["termniates","terminates"],["termniating","terminating"],["termniation","termination"],["termniations","terminations"],["termniator","terminator"],["termniators","terminators"],["termo","thermo"],["termostat","thermostat"],["termperatue","temperature"],["termperatues","temperatures"],["termperature","temperature"],["termperatures","temperatures"],["termplate","template"],["termplated","templated"],["termplates","templates"],["termporal","temporal"],["termporaries","temporaries"],["termporarily","temporarily"],["termporary","temporary"],["ternament","tournament"],["ternimate","terminate"],["terninal","terminal"],["terninals","terminals"],["terrable","terrible"],["terrestial","terrestrial"],["terrform","terraform"],["terrformed","terraformed"],["terrforming","terraforming"],["terrforms","terraforms"],["terriffic","terrific"],["terriories","territories"],["terriory","territory"],["territorist","terrorist"],["territoy","territory"],["terroist","terrorist"],["terurn","return"],["terurns","returns"],["tescase","testcase"],["tescases","testcases"],["tesellate","tessellate"],["tesellated","tessellated"],["tesellation","tessellation"],["tesellator","tessellator"],["tesited","tested"],["tessealte","tessellate"],["tessealted","tessellated"],["tesselatad","tessellated"],["tesselate","tessellate"],["tesselated","tessellated"],["tesselation","tessellation"],["tesselator","tessellator"],["tessleate","tessellate"],["tessleated","tessellated"],["tessleating","tessellating"],["tessleator","tessellator"],["testeing","testing"],["testiclular","testicular"],["testin","testing"],["testng","testing"],["testof","test of"],["testomony","testimony"],["testsing","testing"],["tetrahedran","tetrahedron"],["tetrahedrans","tetrahedrons"],["tetry","retry"],["tetss","tests"],["tetxture","texture"],["teusday","Tuesday"],["texchnically","technically"],["texline","textline"],["textfrme","textframe"],["texual","textual"],["texually","textually"],["texure","texture"],["texured","textured"],["texures","textures"],["texxt","text"],["tey","they"],["tghe","the"],["thansk","thanks"],["thansparent","transparent"],["thant","than"],["thare","there"],["that;s","that's"],["thats'","that's"],["thats","that's"],["thats;","that's"],["thck","thick"],["theard","thread"],["thearding","threading"],["theards","threads"],["theared","threaded"],["theather","theater"],["theef","thief"],["theer","there"],["theery","theory"],["theese","these"],["thefore","therefore"],["theif","thief"],["theifs","thieves"],["theive","thief"],["theives","thieves"],["themplate","template"],["themselces","themselves"],["themselfes","themselves"],["themselfs","themselves"],["themselvs","themselves"],["themslves","themselves"],["thenes","themes"],["thenn","then"],["theorectical","theoretical"],["theoreticall","theoretically"],["theoreticaly","theoretically"],["theorical","theoretical"],["theorically","theoretically"],["theoritical","theoretical"],["theoritically","theoretically"],["therafter","thereafter"],["therapudic","therapeutic"],["therby","thereby"],["thereads","threads"],["thereom","theorem"],["thererin","therein"],["theres","there's"],["thereshold","threshold"],["theresholds","thresholds"],["therfore","therefore"],["thermisor","thermistor"],["thermisors","thermistors"],["thermostast","thermostat"],["thermostasts","thermostats"],["therstat","thermostat"],["therwise","otherwise"],["theshold","threshold"],["thesholds","thresholds"],["thest","test"],["thetraedral","tetrahedral"],["thetrahedron","tetrahedron"],["thev","the"],["theves","thieves"],["thgat","that"],["thge","the"],["thhese","these"],["thhis","this"],["thid","this"],["thier","their"],["thign","thing"],["thigns","things"],["thigny","thingy"],["thigsn","things"],["thikn","think"],["thikness","thickness"],["thiknesses","thicknesses"],["thikns","thinks"],["thiks","thinks"],["thimngs","things"],["thinigs","things"],["thinkabel","thinkable"],["thinn","thin"],["thirtyth","thirtieth"],["this'd","this would"],["thisle","thistle"],["thist","this"],["thisy","this"],["thiunk","think"],["thjese","these"],["thme","them"],["thn","then"],["thna","than"],["thnak","thank"],["thnaks","thanks"],["thne","then"],["thnig","thing"],["thnigs","things"],["thonic","chthonic"],["thoroidal","toroidal"],["thoroughty","thoroughly"],["thoruoghly","thoroughly"],["thoses","those"],["thouch","touch"],["thoughout","throughout"],["thougth","thought"],["thounsands","thousands"],["thourghly","thoroughly"],["thourough","thorough"],["thouroughly","thoroughly"],["thq","the"],["thrad","thread"],["threadsave","threadsafe"],["threashold","threshold"],["threasholds","thresholds"],["threatend","threatened"],["threatment","treatment"],["threatments","treatments"],["threatning","threatening"],["thred","thread"],["threded","threaded"],["thredhold","threshold"],["threding","threading"],["threds","threads"],["three-dimenional","three-dimensional"],["three-dimenionsal","three-dimensional"],["threedimenional","three-dimensional"],["threedimenionsal","three-dimensional"],["threee","three"],["threhold","threshold"],["threrefore","therefore"],["threshhold","threshold"],["threshholds","thresholds"],["threshod","threshold"],["threshods","thresholds"],["threshol","threshold"],["thresold","threshold"],["thresshold","threshold"],["thrid","third"],["throen","thrown"],["throgh","through"],["throrough","thorough"],["throttoling","throttling"],["throug","through"],["througg","through"],["throughly","thoroughly"],["throughtout","throughout"],["througout","throughout"],["througt","through"],["througth","through"],["throuh","through"],["throuhg","through"],["throuhgout","throughout"],["throuhgput","throughput"],["throuth","through"],["throwgh","through"],["thrreshold","threshold"],["thrresholds","thresholds"],["thrue","through"],["thrugh","through"],["thruogh","through"],["thruoghout","throughout"],["thruoghput","throughput"],["thruout","throughout"],["thses","these"],["thsi","this"],["thsnk","thank"],["thsnked","thanked"],["thsnkful","thankful"],["thsnkfully","thankfully"],["thsnkfulness","thankfulness"],["thsnking","thanking"],["thsnks","thanks"],["thsnkyou","thank you"],["thsoe","those"],["thsose","those"],["thsould","should"],["thst","that"],["thta","that"],["thtat","that"],["thumbbnail","thumbnail"],["thumbnal","thumbnail"],["thumbnals","thumbnails"],["thundebird","thunderbird"],["thurday","Thursday"],["thurough","thorough"],["thurrow","thorough"],["thursdey","Thursday"],["thurver","further"],["thyat","that"],["tichened","thickened"],["tichness","thickness"],["tickness","thickness"],["tidibt","tidbit"],["tidibts","tidbits"],["tieing","tying"],["tiemout","timeout"],["tiemstamp","timestamp"],["tiemstamped","timestamped"],["tiemstamps","timestamps"],["tieth","tithe"],["tigger","trigger"],["tiggered","triggered"],["tiggering","triggering"],["tiggers","triggers"],["tighly","tightly"],["tightely","tightly"],["tigth","tight"],["tigthen","tighten"],["tigthened","tightened"],["tigthening","tightening"],["tigthens","tightens"],["tigthly","tightly"],["tihkn","think"],["tihs","this"],["tiitle","title"],["tillt","tilt"],["tillted","tilted"],["tillts","tilts"],["timdelta","timedelta"],["timedlta","timedelta"],["timeing","timing"],["timemout","timeout"],["timeot","timeout"],["timeoutted","timed out"],["timere","timer"],["timesamp","timestamp"],["timesamped","timestamped"],["timesamps","timestamps"],["timeschedule","time schedule"],["timespanp","timespan"],["timespanps","timespans"],["timestan","timespan"],["timestans","timespans"],["timestap","timestamp"],["timestaped","timestamped"],["timestaping","timestamping"],["timestaps","timestamps"],["timestemp","timestamp"],["timestemps","timestamps"],["timestmap","timestamp"],["timestmaps","timestamps"],["timetamp","timestamp"],["timetamps","timestamps"],["timmestamp","timestamp"],["timmestamps","timestamps"],["timne","time"],["timoeut","timeout"],["timout","timeout"],["timtout","timeout"],["timzeone","timezone"],["timzeones","timezones"],["timzezone","timezone"],["timzezones","timezones"],["tinterrupts","interrupts"],["tipically","typically"],["tirangle","triangle"],["tirangles","triangles"],["titel","title"],["titels","titles"],["titile","title"],["tittled","titled"],["tittling","titling"],["tje","the"],["tjhe","the"],["tjpanishad","upanishad"],["tkae","take"],["tkaes","takes"],["tkaing","taking"],["tlaking","talking"],["tmis","this"],["tne","the"],["toally","totally"],["tobbaco","tobacco"],["tobot","robot"],["toches","touches"],["tocksen","toxin"],["todya","today"],["toekn","token"],["togehter","together"],["togeter","together"],["togeterness","togetherness"],["toggel","toggle"],["toggeles","toggles"],["toggeling","toggling"],["toggels","toggles"],["toggleing","toggling"],["togheter","together"],["toghether","together"],["togle","toggle"],["togled","toggled"],["togling","toggling"],["toglle","toggle"],["toglled","toggled"],["togther","together"],["tolarable","tolerable"],["tolelerance","tolerance"],["tolen","token"],["tolens","tokens"],["toleranz","tolerance"],["tolerence","tolerance"],["tolerences","tolerances"],["tolerent","tolerant"],["tolernce","tolerance"],["Tolkein","Tolkien"],["tollerable","tolerable"],["tollerance","tolerance"],["tollerances","tolerances"],["tolorance","tolerance"],["tolorances","tolerances"],["tolorant","tolerant"],["tomatoe","tomato"],["tomatos","tomatoes"],["tommorow","tomorrow"],["tommorrow","tomorrow"],["tomorrrow","tomorrow"],["tongiht","tonight"],["tonihgt","tonight"],["tood","todo"],["toogle","toggle"],["toogling","toggling"],["tookits","toolkits"],["toolar","toolbar"],["toolsbox","toolbox"],["toom","tomb"],["toos","tools"],["tootonic","teutonic"],["topicaizer","topicalizer"],["topologie","topology"],["torerable","tolerable"],["toriodal","toroidal"],["tork","torque"],["tormenters","tormentors"],["tornadoe","tornado"],["torpeados","torpedoes"],["torpedos","torpedoes"],["tortilini","tortellini"],["tortise","tortoise"],["torward","toward"],["torwards","towards"],["totaly","totally"],["totat","total"],["totation","rotation"],["totats","totals"],["tothe","to the"],["tothiba","toshiba"],["totol","total"],["totorial","tutorial"],["totorials","tutorials"],["touble","trouble"],["toubles","troubles"],["toubling","troubling"],["toughtful","thoughtful"],["toughtly","tightly"],["toughts","thoughts"],["tounge","tongue"],["touple","tuple"],["towords","towards"],["towrad","toward"],["toxen","toxin"],["tpye","type"],["tpyed","typed"],["tpyes","types"],["tpyo","typo"],["trabsform","transform"],["traceablity","traceability"],["trackign","tracking"],["trackling","tracking"],["tracsode","transcode"],["tracsoded","transcoded"],["tracsoder","transcoder"],["tracsoders","transcoders"],["tracsodes","transcodes"],["tracsoding","transcoding"],["traddition","tradition"],["tradditional","traditional"],["tradditions","traditions"],["tradgic","tragic"],["tradionally","traditionally"],["traditilnal","traditional"],["traditiona","traditional"],["traditionaly","traditionally"],["traditionnal","traditional"],["traditionnally","traditionally"],["traditition","tradition"],["tradtional","traditional"],["tradtionally","traditionally"],["trafficed","trafficked"],["trafficing","trafficking"],["trafic","traffic"],["tragectory","trajectory"],["traget","target"],["trageted","targeted"],["trageting","targeting"],["tragets","targets"],["traige","triage"],["traiger","triager"],["traigers","triagers"],["traiges","triages"],["traiging","triaging"],["trailins","trailing"],["traingle","triangle"],["traingles","triangles"],["traingular","triangular"],["traingulate","triangulate"],["traingulated","triangulated"],["traingulates","triangulates"],["traingulating","triangulating"],["traingulation","triangulation"],["traingulations","triangulations"],["trainig","training"],["trainigs","training"],["trainng","training"],["trainngs","training"],["traked","tracked"],["traker","tracker"],["trakers","trackers"],["traking","tracking"],["tramsmit","transmit"],["tramsmits","transmits"],["tramsmitted","transmitted"],["tramsmitting","transmitting"],["tranaction","transaction"],["tranactional","transactional"],["tranactions","transactions"],["tranalating","translating"],["tranalation","translation"],["tranalations","translations"],["tranasction","transaction"],["tranasctions","transactions"],["tranceiver","transceiver"],["tranceivers","transceivers"],["trancendent","transcendent"],["trancending","transcending"],["tranclate","translate"],["trandional","traditional"],["tranfer","transfer"],["tranfered","transferred"],["tranfering","transferring"],["tranferred","transferred"],["tranfers","transfers"],["tranform","transform"],["tranformable","transformable"],["tranformation","transformation"],["tranformations","transformations"],["tranformative","transformative"],["tranformed","transformed"],["tranforming","transforming"],["tranforms","transforms"],["tranient","transient"],["tranients","transients"],["tranistion","transition"],["tranistioned","transitioned"],["tranistioning","transitioning"],["tranistions","transitions"],["tranition","transition"],["tranitioned","transitioned"],["tranitioning","transitioning"],["tranitions","transitions"],["tranlatable","translatable"],["tranlate","translate"],["tranlated","translated"],["tranlates","translates"],["tranlating","translating"],["tranlation","translation"],["tranlations","translations"],["tranlsation","translation"],["tranlsations","translations"],["tranmission","transmission"],["tranmist","transmit"],["tranmitted","transmitted"],["tranmitting","transmitting"],["tranparent","transparent"],["tranparently","transparently"],["tranport","transport"],["tranported","transported"],["tranporting","transporting"],["tranports","transports"],["transacion","transaction"],["transacions","transactions"],["transaciton","transaction"],["transacitons","transactions"],["transacrtion","transaction"],["transacrtions","transactions"],["transaction-spacific","transaction-specific"],["transactoin","transaction"],["transactoins","transactions"],["transalation","translation"],["transalations","translations"],["transalt","translate"],["transalte","translate"],["transalted","translated"],["transaltes","translates"],["transaltion","translation"],["transaltions","translations"],["transaltor","translator"],["transaltors","translators"],["transcendance","transcendence"],["transcendant","transcendent"],["transcendentational","transcendental"],["transcevier","transceiver"],["transciever","transceiver"],["transcievers","transceivers"],["transcocde","transcode"],["transcocded","transcoded"],["transcocder","transcoder"],["transcocders","transcoders"],["transcocdes","transcodes"],["transcocding","transcoding"],["transcocdings","transcodings"],["transconde","transcode"],["transconded","transcoded"],["transconder","transcoder"],["transconders","transcoders"],["transcondes","transcodes"],["transconding","transcoding"],["transcondings","transcodings"],["transcorde","transcode"],["transcorded","transcoded"],["transcorder","transcoder"],["transcorders","transcoders"],["transcordes","transcodes"],["transcording","transcoding"],["transcordings","transcodings"],["transcoser","transcoder"],["transcosers","transcoders"],["transction","transaction"],["transctions","transactions"],["transeint","transient"],["transending","transcending"],["transer","transfer"],["transesxuals","transsexuals"],["transferd","transferred"],["transfered","transferred"],["transfering","transferring"],["transferrd","transferred"],["transfom","transform"],["transfomation","transformation"],["transfomational","transformational"],["transfomations","transformations"],["transfomed","transformed"],["transfomer","transformer"],["transfomm","transform"],["transfoprmation","transformation"],["transforation","transformation"],["transforations","transformations"],["transformated","transformed"],["transformates","transforms"],["transformaton","transformation"],["transformatted","transformed"],["transfrom","transform"],["transfromation","transformation"],["transfromations","transformations"],["transfromed","transformed"],["transfromer","transformer"],["transfroming","transforming"],["transfroms","transforms"],["transiet","transient"],["transiets","transients"],["transision","transition"],["transisioning","transitioning"],["transisions","transitions"],["transisition","transition"],["transisitioned","transitioned"],["transisitioning","transitioning"],["transisitions","transitions"],["transistion","transition"],["transistioning","transitioning"],["transistions","transitions"],["transitionnal","transitional"],["transitionned","transitioned"],["transitionning","transitioning"],["transitionns","transitions"],["transiton","transition"],["transitoning","transitioning"],["transitons","transitions"],["transitor","transistor"],["transitors","transistors"],["translater","translator"],["translaters","translators"],["translatied","translated"],["translatoin","translation"],["translatoins","translations"],["translteration","transliteration"],["transmision","transmission"],["transmisive","transmissive"],["transmissable","transmissible"],["transmissione","transmission"],["transmist","transmit"],["transmited","transmitted"],["transmiter","transmitter"],["transmiters","transmitters"],["transmiting","transmitting"],["transmition","transmission"],["transmitsion","transmission"],["transmittd","transmitted"],["transmittion","transmission"],["transmitts","transmits"],["transmmit","transmit"],["transocde","transcode"],["transocded","transcoded"],["transocder","transcoder"],["transocders","transcoders"],["transocdes","transcodes"],["transocding","transcoding"],["transocdings","transcodings"],["transofrm","transform"],["transofrmation","transformation"],["transofrmations","transformations"],["transofrmed","transformed"],["transofrmer","transformer"],["transofrmers","transformers"],["transofrming","transforming"],["transofrms","transforms"],["transolate","translate"],["transolated","translated"],["transolates","translates"],["transolating","translating"],["transolation","translation"],["transolations","translations"],["transorm","transform"],["transormed","transformed"],["transorming","transforming"],["transorms","transforms"],["transpable","transposable"],["transpacencies","transparencies"],["transpacency","transparency"],["transpaernt","transparent"],["transpaerntly","transparently"],["transpancies","transparencies"],["transpancy","transparency"],["transpant","transplant"],["transparaent","transparent"],["transparaently","transparently"],["transparanceies","transparencies"],["transparancey","transparency"],["transparancies","transparencies"],["transparancy","transparency"],["transparanet","transparent"],["transparanetly","transparently"],["transparanies","transparencies"],["transparant","transparent"],["transparantly","transparently"],["transparany","transparency"],["transpararent","transparent"],["transpararently","transparently"],["transparcencies","transparencies"],["transparcency","transparency"],["transparcenies","transparencies"],["transparceny","transparency"],["transparecy","transparency"],["transpareny","transparency"],["transparities","transparencies"],["transparity","transparency"],["transparnecies","transparencies"],["transparnecy","transparency"],["transparnt","transparent"],["transparntly","transparently"],["transparren","transparent"],["transparrenly","transparently"],["transparrent","transparent"],["transparrently","transparently"],["transpart","transport"],["transparts","transports"],["transpatrent","transparent"],["transpatrently","transparently"],["transpencies","transparencies"],["transpency","transparency"],["transpeorted","transported"],["transperancies","transparencies"],["transperancy","transparency"],["transperant","transparent"],["transperantly","transparently"],["transperencies","transparencies"],["transperency","transparency"],["transperent","transparent"],["transperently","transparently"],["transporation","transportation"],["transportatin","transportation"],["transprencies","transparencies"],["transprency","transparency"],["transprent","transparent"],["transprently","transparently"],["transprot","transport"],["transproted","transported"],["transproting","transporting"],["transprots","transports"],["transprt","transport"],["transprted","transported"],["transprting","transporting"],["transprts","transports"],["transpsition","transposition"],["transsend","transcend"],["transtion","transition"],["transtioned","transitioned"],["transtioning","transitioning"],["transtions","transitions"],["transtition","transition"],["transtitioned","transitioned"],["transtitioning","transitioning"],["transtitions","transitions"],["transtorm","transform"],["transtormed","transformed"],["transvorm","transform"],["transvormation","transformation"],["transvormed","transformed"],["transvorming","transforming"],["transvorms","transforms"],["tranversing","traversing"],["trapeziod","trapezoid"],["trapeziodal","trapezoidal"],["trasaction","transaction"],["trascation","transaction"],["trasfer","transfer"],["trasferred","transferred"],["trasfers","transfers"],["trasform","transform"],["trasformable","transformable"],["trasformation","transformation"],["trasformations","transformations"],["trasformative","transformative"],["trasformed","transformed"],["trasformer","transformer"],["trasformers","transformers"],["trasforming","transforming"],["trasforms","transforms"],["traslalate","translate"],["traslalated","translated"],["traslalating","translating"],["traslalation","translation"],["traslalations","translations"],["traslate","translate"],["traslated","translated"],["traslates","translates"],["traslating","translating"],["traslation","translation"],["traslations","translations"],["traslucency","translucency"],["trasmission","transmission"],["trasmit","transmit"],["trasnaction","transaction"],["trasnfer","transfer"],["trasnfered","transferred"],["trasnferred","transferred"],["trasnfers","transfers"],["trasnform","transform"],["trasnformation","transformation"],["trasnformed","transformed"],["trasnformer","transformer"],["trasnformers","transformers"],["trasnforms","transforms"],["trasnlate","translate"],["trasnlated","translated"],["trasnlation","translation"],["trasnlations","translations"],["trasnparencies","transparencies"],["trasnparency","transparency"],["trasnparent","transparent"],["trasnport","transport"],["trasnports","transports"],["trasnsmit","transmit"],["trasparency","transparency"],["trasparent","transparent"],["trasparently","transparently"],["trasport","transport"],["trasportable","transportable"],["trasported","transported"],["trasporter","transporter"],["trasports","transports"],["traspose","transpose"],["trasposed","transposed"],["trasposing","transposing"],["trasposition","transposition"],["traspositions","transpositions"],["traved","traversed"],["traveersal","traversal"],["traveerse","traverse"],["traveersed","traversed"],["traveerses","traverses"],["traveersing","traversing"],["traveral","traversal"],["travercal","traversal"],["traverce","traverse"],["traverced","traversed"],["traverces","traverses"],["travercing","traversing"],["travere","traverse"],["travered","traversed"],["traveres","traverse"],["traveresal","traversal"],["traveresed","traversed"],["travereses","traverses"],["traveresing","traversing"],["travering","traversing"],["traverssal","traversal"],["travesal","traversal"],["travese","traverse"],["travesed","traversed"],["traveses","traverses"],["travesing","traversing"],["tre","tree"],["treate","treat"],["treatement","treatment"],["treatements","treatments"],["treates","treats"],["tremelo","tremolo"],["tremelos","tremolos"],["trempoline","trampoline"],["treshhold","threshold"],["treshold","threshold"],["tressle","trestle"],["treting","treating"],["trgistration","registration"],["trhe","the"],["triancle","triangle"],["triancles","triangles"],["trianed","trained"],["triange","triangle"],["triangel","triangle"],["triangels","triangles"],["trianglular","triangular"],["trianglutaion","triangulation"],["triangulataion","triangulation"],["triangultaion","triangulation"],["trianing","training"],["trianlge","triangle"],["trianlges","triangles"],["trians","trains"],["trigered","triggered"],["trigerred","triggered"],["trigerring","triggering"],["trigers","triggers"],["trigged","triggered"],["triggerd","triggered"],["triggeres","triggers"],["triggerred","triggered"],["triggerring","triggering"],["triggerrs","triggers"],["triggger","trigger"],["trignometric","trigonometric"],["trignometry","trigonometry"],["triguered","triggered"],["triked","tricked"],["trikery","trickery"],["triky","tricky"],["trilineal","trilinear"],["trimed","trimmed"],["trimmng","trimming"],["trinagle","triangle"],["trinagles","triangles"],["triniy","trinity"],["triology","trilogy"],["tripel","triple"],["tripeld","tripled"],["tripels","triples"],["tripple","triple"],["triuangulate","triangulate"],["trival","trivial"],["trivally","trivially"],["trivias","trivia"],["trivival","trivial"],["trnasfers","transfers"],["trnasmit","transmit"],["trnasmited","transmitted"],["trnasmits","transmits"],["trnsfer","transfer"],["trnsfered","transferred"],["trnsfers","transfers"],["troling","trolling"],["trottle","throttle"],["troubeshoot","troubleshoot"],["troubeshooted","troubleshooted"],["troubeshooter","troubleshooter"],["troubeshooting","troubleshooting"],["troubeshoots","troubleshoots"],["troublehshoot","troubleshoot"],["troublehshooting","troubleshooting"],["troublshoot","troubleshoot"],["troublshooting","troubleshooting"],["trought","through"],["troup","troupe"],["trriger","trigger"],["trrigered","triggered"],["trrigering","triggering"],["trrigers","triggers"],["trrigger","trigger"],["trriggered","triggered"],["trriggering","triggering"],["trriggers","triggers"],["trubble","trouble"],["trubbled","troubled"],["trubbles","troubles"],["truble","trouble"],["trubled","troubled"],["trubles","troubles"],["trubling","troubling"],["trucate","truncate"],["trucated","truncated"],["trucates","truncates"],["trucating","truncating"],["trucnate","truncate"],["trucnated","truncated"],["trucnating","truncating"],["truct","struct"],["truelly","truly"],["truely","truly"],["truied","tried"],["trully","truly"],["trun","turn"],["trunacted","truncated"],["truncat","truncate"],["trunctate","truncate"],["trunctated","truncated"],["trunctating","truncating"],["trunctation","truncation"],["truncted","truncated"],["truned","turned"],["truns","turns"],["trustworthly","trustworthy"],["trustworthyness","trustworthiness"],["trustworty","trustworthy"],["trustwortyness","trustworthiness"],["trustwothy","trustworthy"],["truw","true"],["tryed","tried"],["tryes","tries"],["tryig","trying"],["tryinng","trying"],["trys","tries"],["tryying","trying"],["ttests","tests"],["tthe","the"],["tuesdey","Tuesday"],["tuesdsy","Tuesday"],["tufure","future"],["tuhmbnail","thumbnail"],["tunelled","tunnelled"],["tunelling","tunneling"],["tunned","tuned"],["tunnell","tunnel"],["tuotiral","tutorial"],["tuotirals","tutorials"],["tupel","tuple"],["tupple","tuple"],["tupples","tuples"],["ture","true"],["turle","turtle"],["turly","truly"],["turorial","tutorial"],["turorials","tutorials"],["turtleh","turtle"],["turtlehs","turtles"],["turtorial","tutorial"],["turtorials","tutorials"],["Tuscon","Tucson"],["tusday","Tuesday"],["tuseday","Tuesday"],["tust","trust"],["tution","tuition"],["tutoriel","tutorial"],["tutoriels","tutorials"],["tweleve","twelve"],["twelth","twelfth"],["two-dimenional","two-dimensional"],["two-dimenionsal","two-dimensional"],["twodimenional","two-dimensional"],["twodimenionsal","two-dimensional"],["twon","town"],["twpo","two"],["tyep","type"],["tyhat","that"],["tyies","tries"],["tymecode","timecode"],["tyope","type"],["typcast","typecast"],["typcasting","typecasting"],["typcasts","typecasts"],["typcial","typical"],["typcially","typically"],["typechek","typecheck"],["typecheking","typechecking"],["typesrript","typescript"],["typicallly","typically"],["typicaly","typically"],["typicially","typically"],["typle","tuple"],["typles","tuples"],["typographc","typographic"],["typpe","type"],["typped","typed"],["typpes","types"],["typpical","typical"],["typpically","typically"],["tyranies","tyrannies"],["tyrany","tyranny"],["tyring","trying"],["tyrranies","tyrannies"],["tyrrany","tyranny"],["ubelieveble","unbelievable"],["ubelievebly","unbelievably"],["ubernetes","Kubernetes"],["ubiquitious","ubiquitous"],["ubiquituously","ubiquitously"],["ubitquitous","ubiquitous"],["ublisher","publisher"],["ubunut","Ubuntu"],["ubutu","Ubuntu"],["ubutunu","Ubuntu"],["udpatable","updatable"],["udpate","update"],["udpated","updated"],["udpater","updater"],["udpates","updates"],["udpating","updating"],["ueful","useful"],["uegister","unregister"],["uesd","used"],["ueses","uses"],["uesful","useful"],["uesfull","useful"],["uesfulness","usefulness"],["uesless","useless"],["ueslessness","uselessness"],["uest","quest"],["uests","quests"],["uffer","buffer"],["uffered","buffered"],["uffering","buffering"],["uffers","buffers"],["uggly","ugly"],["ugglyness","ugliness"],["uglyness","ugliness"],["uique","unique"],["uise","use"],["uisng","using"],["uites","suites"],["uknown","unknown"],["uknowns","unknowns"],["Ukranian","Ukrainian"],["uless","unless"],["ulimited","unlimited"],["ulter","alter"],["ulteration","alteration"],["ulterations","alterations"],["ultered","altered"],["ultering","altering"],["ulters","alters"],["ultimatly","ultimately"],["ultimely","ultimately"],["umambiguous","unambiguous"],["umark","unmark"],["umarked","unmarked"],["umbrealla","umbrella"],["uminportant","unimportant"],["umit","unit"],["umless","unless"],["ummark","unmark"],["umoutn","umount"],["un-complete","incomplete"],["unabailable","unavailable"],["unabale","unable"],["unabel","unable"],["unablet","unable"],["unacceptible","unacceptable"],["unaccesible","inaccessible"],["unaccessable","inaccessible"],["unacknowleged","unacknowledged"],["unacompanied","unaccompanied"],["unadvertantly","inadvertently"],["unadvertedly","inadvertently"],["unadvertent","inadvertent"],["unadvertently","inadvertently"],["unahppy","unhappy"],["unalllowed","unallowed"],["unambigious","unambiguous"],["unambigous","unambiguous"],["unambigously","unambiguously"],["unamed","unnamed"],["unanimuous","unanimous"],["unanymous","unanimous"],["unappretiated","unappreciated"],["unappretiative","unappreciative"],["unapprieciated","unappreciated"],["unapprieciative","unappreciative"],["unapretiated","unappreciated"],["unapretiative","unappreciative"],["unaquired","unacquired"],["unarchving","unarchiving"],["unassing","unassign"],["unassinged","unassigned"],["unassinging","unassigning"],["unassings","unassigns"],["unathenticated","unauthenticated"],["unathorised","unauthorised"],["unathorized","unauthorized"],["unatteded","unattended"],["unauthenicated","unauthenticated"],["unauthenticed","unauthenticated"],["unavaiable","unavailable"],["unavaialable","unavailable"],["unavaialbale","unavailable"],["unavaialbe","unavailable"],["unavaialbel","unavailable"],["unavaialbility","unavailability"],["unavaialble","unavailable"],["unavaible","unavailable"],["unavailabel","unavailable"],["unavailiability","unavailability"],["unavailible","unavailable"],["unavaliable","unavailable"],["unavaoidable","unavoidable"],["unavilable","unavailable"],["unballance","unbalance"],["unbeknowst","unbeknownst"],["unbeleifable","unbelievable"],["unbeleivable","unbelievable"],["unbeliefable","unbelievable"],["unbelivable","unbelievable"],["unbeliveable","unbelievable"],["unbeliveably","unbelievably"],["unbelivebly","unbelievably"],["unborned","unborn"],["unbouind","unbound"],["unbouinded","unbounded"],["unboun","unbound"],["unbounad","unbound"],["unbounaded","unbounded"],["unbouned","unbounded"],["unbounnd","unbound"],["unbounnded","unbounded"],["unbouund","unbound"],["unbouunded","unbounded"],["uncahnged","unchanged"],["uncalcualted","uncalculated"],["unce","once"],["uncehck","uncheck"],["uncehcked","unchecked"],["uncerain","uncertain"],["uncerainties","uncertainties"],["uncerainty","uncertainty"],["uncertaincy","uncertainty"],["uncertainities","uncertainties"],["uncertainity","uncertainty"],["uncessarily","unnecessarily"],["uncetain","uncertain"],["uncetainties","uncertainties"],["uncetainty","uncertainty"],["unchache","uncache"],["unchached","uncached"],["unchaged","unchanged"],["unchainged","unchanged"],["unchallengable","unchallengeable"],["unchaned","unchanged"],["unchaneged","unchanged"],["unchangable","unchangeable"],["uncheked","unchecked"],["unchenged","unchanged"],["uncognized","unrecognized"],["uncoment","uncomment"],["uncomented","uncommented"],["uncomenting","uncommenting"],["uncoments","uncomments"],["uncomitted","uncommitted"],["uncommited","uncommitted"],["uncommment","uncomment"],["uncommmented","uncommented"],["uncommmenting","uncommenting"],["uncommments","uncomments"],["uncommmitted","uncommitted"],["uncommmon","uncommon"],["uncommpresed","uncompressed"],["uncommpresion","uncompression"],["uncommpressd","uncompressed"],["uncommpressed","uncompressed"],["uncommpression","uncompression"],["uncommtited","uncommitted"],["uncomon","uncommon"],["uncompetetive","uncompetitive"],["uncompetive","uncompetitive"],["uncomplete","incomplete"],["uncompleteness","incompleteness"],["uncompletness","incompleteness"],["uncompres","uncompress"],["uncompresed","uncompressed"],["uncompreses","uncompresses"],["uncompresing","uncompressing"],["uncompresor","uncompressor"],["uncompresors","uncompressors"],["uncompressible","incompressible"],["uncomprss","uncompress"],["unconcious","unconscious"],["unconciousness","unconsciousness"],["unconcistencies","inconsistencies"],["unconcistency","inconsistency"],["unconcistent","inconsistent"],["uncondisional","unconditional"],["uncondisionaly","unconditionally"],["uncondisionnal","unconditional"],["uncondisionnaly","unconditionally"],["unconditial","unconditional"],["unconditially","unconditionally"],["unconditialy","unconditionally"],["unconditianal","unconditional"],["unconditianally","unconditionally"],["unconditianaly","unconditionally"],["unconditinally","unconditionally"],["unconditinaly","unconditionally"],["unconditionaly","unconditionally"],["unconditionnal","unconditional"],["unconditionnally","unconditionally"],["unconditionnaly","unconditionally"],["uncondtional","unconditional"],["uncondtionally","unconditionally"],["unconfiged","unconfigured"],["unconfortability","discomfort"],["unconsisntency","inconsistency"],["unconsistent","inconsistent"],["uncontitutional","unconstitutional"],["uncontrained","unconstrained"],["uncontrolable","uncontrollable"],["unconvential","unconventional"],["unconventionnal","unconventional"],["uncorectly","incorrectly"],["uncorelated","uncorrelated"],["uncorrect","incorrect"],["uncorrectly","incorrectly"],["uncorrolated","uncorrelated"],["uncoverted","unconverted"],["uncrypted","unencrypted"],["undecideable","undecidable"],["undefied","undefined"],["undefien","undefine"],["undefiend","undefined"],["undefinied","undefined"],["undeflow","underflow"],["undeflows","underflows"],["undefuned","undefined"],["undelying","underlying"],["underfiend","undefined"],["underfined","undefined"],["underfow","underflow"],["underfowed","underflowed"],["underfowing","underflowing"],["underfows","underflows"],["underlayed","underlaid"],["underlaying","underlying"],["underlflow","underflow"],["underlflowed","underflowed"],["underlflowing","underflowing"],["underlflows","underflows"],["underlfow","underflow"],["underlfowed","underflowed"],["underlfowing","underflowing"],["underlfows","underflows"],["underlow","underflow"],["underlowed","underflowed"],["underlowing","underflowing"],["underlows","underflows"],["underlyng","underlying"],["underneeth","underneath"],["underrrun","underrun"],["undersacn","underscan"],["understadn","understand"],["understadnable","understandable"],["understadning","understanding"],["understadns","understands"],["understoon","understood"],["understoud","understood"],["undertand","understand"],["undertandable","understandable"],["undertanded","understood"],["undertanding","understanding"],["undertands","understands"],["undertsand","understand"],["undertsanding","understanding"],["undertsands","understands"],["undertsood","understood"],["undertstand","understand"],["undertstands","understands"],["underun","underrun"],["underuns","underruns"],["underware","underwear"],["underying","underlying"],["underyling","underlying"],["undescore","underscore"],["undescored","underscored"],["undescores","underscores"],["undesireable","undesirable"],["undesitable","undesirable"],["undestand","understand"],["undestood","understood"],["undet","under"],["undetecable","undetectable"],["undetstand","understand"],["undetware","underwear"],["undetwater","underwater"],["undfine","undefine"],["undfined","undefined"],["undfines","undefines"],["undistinghable","indistinguishable"],["undocummented","undocumented"],["undorder","unorder"],["undordered","unordered"],["undoubtely","undoubtedly"],["undreground","underground"],["undupplicated","unduplicated"],["uneccesary","unnecessary"],["uneccessarily","unnecessarily"],["uneccessary","unnecessary"],["unecessarily","unnecessarily"],["unecessary","unnecessary"],["uneforceable","unenforceable"],["uneform","uniform"],["unencrpt","unencrypt"],["unencrpted","unencrypted"],["unenforcable","unenforceable"],["unepected","unexpected"],["unepectedly","unexpectedly"],["unequalities","inequalities"],["unequality","inequality"],["uner","under"],["unesacpe","unescape"],["unesacped","unescaped"],["unessecarry","unnecessary"],["unessecary","unnecessary"],["unevaluted","unevaluated"],["unexcected","unexpected"],["unexcectedly","unexpectedly"],["unexcpected","unexpected"],["unexcpectedly","unexpectedly"],["unexecpted","unexpected"],["unexecptedly","unexpectedly"],["unexected","unexpected"],["unexectedly","unexpectedly"],["unexepcted","unexpected"],["unexepctedly","unexpectedly"],["unexepected","unexpected"],["unexepectedly","unexpectedly"],["unexpacted","unexpected"],["unexpactedly","unexpectedly"],["unexpcted","unexpected"],["unexpctedly","unexpectedly"],["unexpecetd","unexpected"],["unexpecetdly","unexpectedly"],["unexpect","unexpected"],["unexpectd","unexpected"],["unexpectdly","unexpectedly"],["unexpecte","unexpected"],["unexpectely","unexpectedly"],["unexpectend","unexpected"],["unexpectendly","unexpectedly"],["unexpectly","unexpectedly"],["unexpeected","unexpected"],["unexpeectedly","unexpectedly"],["unexpepected","unexpected"],["unexpepectedly","unexpectedly"],["unexpepted","unexpected"],["unexpeptedly","unexpectedly"],["unexpercted","unexpected"],["unexperctedly","unexpectedly"],["unexpested","unexpected"],["unexpestedly","unexpectedly"],["unexpetced","unexpected"],["unexpetcedly","unexpectedly"],["unexpetct","unexpected"],["unexpetcted","unexpected"],["unexpetctedly","unexpectedly"],["unexpetctly","unexpectedly"],["unexpetect","unexpected"],["unexpetected","unexpected"],["unexpetectedly","unexpectedly"],["unexpetectly","unexpectedly"],["unexpeted","unexpected"],["unexpetedly","unexpectedly"],["unexpexcted","unexpected"],["unexpexctedly","unexpectedly"],["unexpexted","unexpected"],["unexpextedly","unexpectedly"],["unexspected","unexpected"],["unexspectedly","unexpectedly"],["unfilp","unflip"],["unfilpped","unflipped"],["unfilpping","unflipping"],["unfilps","unflips"],["unflaged","unflagged"],["unflexible","inflexible"],["unforetunately","unfortunately"],["unforgetable","unforgettable"],["unforgiveable","unforgivable"],["unformated","unformatted"],["unforseen","unforeseen"],["unforttunately","unfortunately"],["unfortuante","unfortunate"],["unfortuantely","unfortunately"],["unfortunaltely","unfortunately"],["unfortunaly","unfortunately"],["unfortunat","unfortunate"],["unfortunatelly","unfortunately"],["unfortunatetly","unfortunately"],["unfortunatley","unfortunately"],["unfortunatly","unfortunately"],["unfortunetly","unfortunately"],["unfortuntaly","unfortunately"],["unforunate","unfortunate"],["unforunately","unfortunately"],["unforutunate","unfortunate"],["unforutunately","unfortunately"],["unfotunately","unfortunately"],["unfourtunately","unfortunately"],["unfourtunetly","unfortunately"],["unfurtunately","unfortunately"],["ungeneralizeable","ungeneralizable"],["ungly","ugly"],["unhandeled","unhandled"],["unhilight","unhighlight"],["unhilighted","unhighlighted"],["unhilights","unhighlights"],["Unicde","Unicode"],["unich","unix"],["unidentifiedly","unidentified"],["unidimensionnal","unidimensional"],["unifform","uniform"],["unifforms","uniforms"],["unifiy","unify"],["uniformely","uniformly"],["unifrom","uniform"],["unifromed","uniformed"],["unifromity","uniformity"],["unifroms","uniforms"],["unigned","unsigned"],["unihabited","uninhabited"],["unilateraly","unilaterally"],["unilatreal","unilateral"],["unilatreally","unilaterally"],["unimpemented","unimplemented"],["unimplemeneted","unimplemented"],["unimplimented","unimplemented"],["uninitailised","uninitialised"],["uninitailized","uninitialized"],["uninitalise","uninitialise"],["uninitalised","uninitialised"],["uninitalises","uninitialises"],["uninitalize","uninitialize"],["uninitalized","uninitialized"],["uninitalizes","uninitializes"],["uniniteresting","uninteresting"],["uninitializaed","uninitialized"],["uninitialse","uninitialise"],["uninitialsed","uninitialised"],["uninitialses","uninitialises"],["uninitialze","uninitialize"],["uninitialzed","uninitialized"],["uninitialzes","uninitializes"],["uninstalable","uninstallable"],["uninstatiated","uninstantiated"],["uninstlal","uninstall"],["uninstlalation","uninstallation"],["uninstlalations","uninstallations"],["uninstlaled","uninstalled"],["uninstlaler","uninstaller"],["uninstlaling","uninstalling"],["uninstlals","uninstalls"],["unint8_t","uint8_t"],["unintelligable","unintelligible"],["unintentially","unintentionally"],["uninteressting","uninteresting"],["uninterpretted","uninterpreted"],["uninterruped","uninterrupted"],["uninterruptable","uninterruptible"],["unintersting","uninteresting"],["uninteruppted","uninterrupted"],["uninterupted","uninterrupted"],["unintesting","uninteresting"],["unintialised","uninitialised"],["unintialized","uninitialized"],["unintiallised","uninitialised"],["unintiallized","uninitialized"],["unintialsied","uninitialised"],["unintialzied","uninitialized"],["unio","union"],["unios","unions"],["uniqe","unique"],["uniqu","unique"],["uniquness","uniqueness"],["unistalled","uninstalled"],["uniterrupted","uninterrupted"],["UnitesStates","UnitedStates"],["unitialize","uninitialize"],["unitialized","uninitialized"],["unitilised","uninitialised"],["unitilising","uninitialising"],["unitilities","utilities"],["unitility","utility"],["unitilized","uninitialized"],["unitilizing","uninitializing"],["unitilties","utilities"],["unitilty","utility"],["unititialized","uninitialized"],["unitl","until"],["unitled","untitled"],["unitss","units"],["univeral","universal"],["univerally","universally"],["univeriality","universality"],["univeristies","universities"],["univeristy","university"],["univerities","universities"],["univerity","university"],["universial","universal"],["universiality","universality"],["universirty","university"],["universtal","universal"],["universtiy","university"],["univesities","universities"],["univesity","university"],["univiersal","universal"],["univrsal","universal"],["unkmown","unknown"],["unknon","unknown"],["unknonw","unknown"],["unknonwn","unknown"],["unknonws","unknowns"],["unknwn","unknown"],["unknwns","unknowns"],["unknwoing","unknowing"],["unknwoingly","unknowingly"],["unknwon","unknown"],["unknwons","unknowns"],["unknwown","unknown"],["unknwowns","unknowns"],["unkonwn","unknown"],["unkonwns","unknowns"],["unkown","unknown"],["unkowns","unknowns"],["unkwown","unknown"],["unlcear","unclear"],["unles","unless"],["unlikey","unlikely"],["unlikley","unlikely"],["unlimeted","unlimited"],["unlimitied","unlimited"],["unlimted","unlimited"],["unline","unlike"],["unloadins","unloading"],["unmached","unmatched"],["unmainted","unmaintained"],["unmaping","unmapping"],["unmappend","unmapped"],["unmarsalling","unmarshalling"],["unmaximice","unmaximize"],["unmistakeably","unmistakably"],["unmodfide","unmodified"],["unmodfided","unmodified"],["unmodfied","unmodified"],["unmodfieid","unmodified"],["unmodfified","unmodified"],["unmodfitied","unmodified"],["unmodifable","unmodifiable"],["unmodifed","unmodified"],["unmoutned","unmounted"],["unnacquired","unacquired"],["unncessary","unnecessary"],["unneccecarily","unnecessarily"],["unneccecary","unnecessary"],["unneccesarily","unnecessarily"],["unneccesary","unnecessary"],["unneccessarily","unnecessarily"],["unneccessary","unnecessary"],["unneceesarily","unnecessarily"],["unnecesarily","unnecessarily"],["unnecesarrily","unnecessarily"],["unnecesarry","unnecessary"],["unnecesary","unnecessary"],["unnecesasry","unnecessary"],["unnecessar","unnecessary"],["unnecessarilly","unnecessarily"],["unnecesserily","unnecessarily"],["unnecessery","unnecessary"],["unnecessiarlly","unnecessarily"],["unnecssary","unnecessary"],["unnedded","unneeded"],["unneded","unneeded"],["unneedingly","unnecessarily"],["unnescessarily","unnecessarily"],["unnescessary","unnecessary"],["unnesesarily","unnecessarily"],["unnessarily","unnecessarily"],["unnessasary","unnecessary"],["unnessecarily","unnecessarily"],["unnessecarry","unnecessary"],["unnessecary","unnecessary"],["unnessesarily","unnecessarily"],["unnessesary","unnecessary"],["unnessessarily","unnecessarily"],["unnessessary","unnecessary"],["unning","running"],["unnnecessary","unnecessary"],["unnown","unknown"],["unnowns","unknowns"],["unnsupported","unsupported"],["unnused","unused"],["unobstrusive","unobtrusive"],["unocde","Unicode"],["unoffical","unofficial"],["unoin","union"],["unompress","uncompress"],["unoperational","nonoperational"],["unorderd","unordered"],["unoredered","unordered"],["unorotated","unrotated"],["unoticeable","unnoticeable"],["unpacke","unpacked"],["unpacket","unpacked"],["unparseable","unparsable"],["unpertubated","unperturbed"],["unperturb","unperturbed"],["unperturbated","unperturbed"],["unperturbe","unperturbed"],["unplease","displease"],["unpleasent","unpleasant"],["unplesant","unpleasant"],["unplesent","unpleasant"],["unprecendented","unprecedented"],["unprecidented","unprecedented"],["unprecise","imprecise"],["unpredicatable","unpredictable"],["unpredicatble","unpredictable"],["unpredictablity","unpredictability"],["unpredictible","unpredictable"],["unpriviledged","unprivileged"],["unpriviliged","unprivileged"],["unprmopted","unprompted"],["unqiue","unique"],["unqoute","unquote"],["unqouted","unquoted"],["unqoutes","unquotes"],["unqouting","unquoting"],["unque","unique"],["unreacahable","unreachable"],["unreacahble","unreachable"],["unreacheable","unreachable"],["unrealeased","unreleased"],["unreasonabily","unreasonably"],["unrechable","unreachable"],["unrecocnized","unrecognized"],["unrecoginized","unrecognized"],["unrecogized","unrecognized"],["unrecognixed","unrecognized"],["unrecongized","unrecognized"],["unreconized","unrecognized"],["unrecovable","unrecoverable"],["unrecovarable","unrecoverable"],["unrecoverd","unrecovered"],["unregester","unregister"],["unregiste","unregister"],["unregisted","unregistered"],["unregisteing","registering"],["unregisterd","unregistered"],["unregistert","unregistered"],["unregistes","unregisters"],["unregisting","unregistering"],["unregistred","unregistered"],["unregistrs","unregisters"],["unregiter","unregister"],["unregiters","unregisters"],["unregnized","unrecognized"],["unregognised","unrecognised"],["unregsiter","unregister"],["unregsitered","unregistered"],["unregsitering","unregistering"],["unregsiters","unregisters"],["unregster","unregister"],["unregstered","unregistered"],["unregstering","unregistering"],["unregsters","unregisters"],["unreigister","unregister"],["unreigster","unregister"],["unreigstered","unregistered"],["unreigstering","unregistering"],["unreigsters","unregisters"],["unrelatd","unrelated"],["unreleated","unrelated"],["unrelted","unrelated"],["unrelyable","unreliable"],["unrelying","underlying"],["unrepentent","unrepentant"],["unrepetant","unrepentant"],["unrepetent","unrepentant"],["unreplacable","unreplaceable"],["unreplacalbe","unreplaceable"],["unreproducable","unreproducible"],["unresgister","unregister"],["unresgisterd","unregistered"],["unresgistered","unregistered"],["unresgisters","unregisters"],["unresolvabvle","unresolvable"],["unresonable","unreasonable"],["unresposive","unresponsive"],["unrestrcited","unrestricted"],["unrgesiter","unregister"],["unroated","unrotated"],["unrosponsive","unresponsive"],["unsanfe","unsafe"],["unsccessful","unsuccessful"],["unscubscribe","subscribe"],["unscubscribed","subscribed"],["unsearcahble","unsearchable"],["unselct","unselect"],["unselcted","unselected"],["unselctes","unselects"],["unselcting","unselecting"],["unselcts","unselects"],["unselecgt","unselect"],["unselecgted","unselected"],["unselecgtes","unselects"],["unselecgting","unselecting"],["unselecgts","unselects"],["unselectabe","unselectable"],["unsepcified","unspecified"],["unseting","unsetting"],["unsetset","unset"],["unsettin","unsetting"],["unsharable","unshareable"],["unshfit","unshift"],["unshfited","unshifted"],["unshfiting","unshifting"],["unshfits","unshifts"],["unsiged","unsigned"],["unsigend","unsigned"],["unsignd","unsigned"],["unsignificant","insignificant"],["unsinged","unsigned"],["unsoclicited","unsolicited"],["unsolicitied","unsolicited"],["unsolicted","unsolicited"],["unsollicited","unsolicited"],["unspecificed","unspecified"],["unspecifiec","unspecific"],["unspecifiecd","unspecified"],["unspecifieced","unspecified"],["unspefcifieid","unspecified"],["unspefeid","unspecified"],["unspeficed","unspecified"],["unspeficeid","unspecified"],["unspeficialleid","unspecified"],["unspeficiallied","unspecified"],["unspeficiallifed","unspecified"],["unspeficied","unspecified"],["unspeficieid","unspecified"],["unspeficifed","unspecified"],["unspeficifeid","unspecified"],["unspeficified","unspecified"],["unspeficififed","unspecified"],["unspeficiied","unspecified"],["unspeficiifed","unspecified"],["unspeficilleid","unspecified"],["unspeficillied","unspecified"],["unspeficillifed","unspecified"],["unspeficiteid","unspecified"],["unspeficitied","unspecified"],["unspeficitifed","unspecified"],["unspefied","unspecified"],["unspefifed","unspecified"],["unspefifeid","unspecified"],["unspefified","unspecified"],["unspefififed","unspecified"],["unspefiied","unspecified"],["unspefiifeid","unspecified"],["unspefiified","unspecified"],["unspefiififed","unspecified"],["unspefixeid","unspecified"],["unspefixied","unspecified"],["unspefixifed","unspecified"],["unspported","unsupported"],["unstabel","unstable"],["unstalbe","unstable"],["unsuable","unusable"],["unsual","unusual"],["unsubscibe","unsubscribe"],["unsubscibed","unsubscribed"],["unsubscibing","unsubscribing"],["unsubscirbe","unsubscribe"],["unsubscirbed","unsubscribed"],["unsubscirbing","unsubscribing"],["unsubscirption","unsubscription"],["unsubscirptions","unsubscriptions"],["unsubscritpion","unsubscription"],["unsubscritpions","unsubscriptions"],["unsubscritpiton","unsubscription"],["unsubscritpitons","unsubscriptions"],["unsubscritption","unsubscription"],["unsubscritptions","unsubscriptions"],["unsubstanciated","unsubstantiated"],["unsucccessful","unsuccessful"],["unsucccessfully","unsuccessfully"],["unsucccessul","unsuccessful"],["unsucccessully","unsuccessfully"],["unsuccee","unsuccessful"],["unsucceed","unsuccessful"],["unsucceedde","unsuccessful"],["unsucceeded","unsuccessful"],["unsucceeds","unsuccessful"],["unsucceeed","unsuccessful"],["unsuccees","unsuccessful"],["unsuccesful","unsuccessful"],["unsuccesfull","unsuccessful"],["unsuccesfully","unsuccessfully"],["unsuccess","unsuccessful"],["unsuccessfull","unsuccessful"],["unsuccessfullly","unsuccessfully"],["unsucesful","unsuccessful"],["unsucesfull","unsuccessful"],["unsucesfully","unsuccessfully"],["unsucesfuly","unsuccessfully"],["unsucessefully","unsuccessfully"],["unsucessflly","unsuccessfully"],["unsucessfually","unsuccessfully"],["unsucessful","unsuccessful"],["unsucessfull","unsuccessful"],["unsucessfully","unsuccessfully"],["unsucessfuly","unsuccessfully"],["unsucesssful","unsuccessful"],["unsucesssfull","unsuccessful"],["unsucesssfully","unsuccessfully"],["unsucesssfuly","unsuccessfully"],["unsucessufll","unsuccessful"],["unsucessuflly","unsuccessfully"],["unsucessully","unsuccessfully"],["unsued","unused"],["unsufficient","insufficient"],["unsuportable","unsupportable"],["unsuported","unsupported"],["unsupport","unsupported"],["unsupproted","unsupported"],["unsupress","unsuppress"],["unsupressed","unsuppressed"],["unsupresses","unsuppresses"],["unsuprised","unsurprised"],["unsuprising","unsurprising"],["unsuprisingly","unsurprisingly"],["unsuprized","unsurprised"],["unsuprizing","unsurprising"],["unsuprizingly","unsurprisingly"],["unsurprized","unsurprised"],["unsurprizing","unsurprising"],["unsurprizingly","unsurprisingly"],["unsused","unused"],["unswithced","unswitched"],["unsychronise","unsynchronise"],["unsychronised","unsynchronised"],["unsychronize","unsynchronize"],["unsychronized","unsynchronized"],["untargetted","untargeted"],["unter","under"],["untill","until"],["untintuitive","unintuitive"],["untoched","untouched"],["untqueue","unqueue"],["untrached","untracked"],["untranslateable","untranslatable"],["untrasformed","untransformed"],["untrasposed","untransposed"],["untrustworty","untrustworthy"],["unued","unused"],["ununsed","unused"],["ununsual","unusual"],["unusal","unusual"],["unusally","unusually"],["unuseable","unusable"],["unuseful","useless"],["unusre","unsure"],["unusuable","unusable"],["unusued","unused"],["unvailable","unavailable"],["unvalid","invalid"],["unvalidate","invalidate"],["unverfified","unverified"],["unversionned","unversioned"],["unversoned","unversioned"],["unviersity","university"],["unwarrented","unwarranted"],["unweildly","unwieldy"],["unwieldly","unwieldy"],["unwraped","unwrapped"],["unwrritten","unwritten"],["unx","unix"],["unxepected","unexpected"],["unxepectedly","unexpectedly"],["unxpected","unexpected"],["unziped","unzipped"],["upadate","update"],["upadated","updated"],["upadater","updater"],["upadates","updates"],["upadating","updating"],["upadte","update"],["upadted","updated"],["upadter","updater"],["upadters","updaters"],["upadtes","updates"],["upagrade","upgrade"],["upagraded","upgraded"],["upagrades","upgrades"],["upagrading","upgrading"],["upate","update"],["upated","updated"],["upater","updater"],["upates","updates"],["upating","updating"],["upcomming","upcoming"],["updaing","updating"],["updat","update"],["updateded","updated"],["updateed","updated"],["updatees","updates"],["updateing","updating"],["updatess","updates"],["updatig","updating"],["updats","updates"],["updgrade","upgrade"],["updgraded","upgraded"],["updgrades","upgrades"],["updgrading","upgrading"],["updrage","upgrade"],["updraged","upgraded"],["updrages","upgrades"],["updraging","upgrading"],["updte","update"],["upercase","uppercase"],["uperclass","upperclass"],["upgade","upgrade"],["upgaded","upgraded"],["upgades","upgrades"],["upgading","upgrading"],["upgarade","upgrade"],["upgaraded","upgraded"],["upgarades","upgrades"],["upgarading","upgrading"],["upgarde","upgrade"],["upgarded","upgraded"],["upgardes","upgrades"],["upgarding","upgrading"],["upgarte","upgrade"],["upgarted","upgraded"],["upgartes","upgrades"],["upgarting","upgrading"],["upgerade","upgrade"],["upgeraded","upgraded"],["upgerades","upgrades"],["upgerading","upgrading"],["upgradablilty","upgradability"],["upgradde","upgrade"],["upgradded","upgraded"],["upgraddes","upgrades"],["upgradding","upgrading"],["upgradei","upgrade"],["upgradingn","upgrading"],["upgrate","upgrade"],["upgrated","upgraded"],["upgrates","upgrades"],["upgrating","upgrading"],["upholstry","upholstery"],["uplad","upload"],["upladaded","uploaded"],["upladed","uploaded"],["uplader","uploader"],["upladers","uploaders"],["uplading","uploading"],["uplads","uploads"],["uplaod","upload"],["uplaodaded","uploaded"],["uplaoded","uploaded"],["uplaoder","uploader"],["uplaoders","uploaders"],["uplaodes","uploads"],["uplaoding","uploading"],["uplaods","uploads"],["upliad","upload"],["uplod","upload"],["uplodaded","uploaded"],["uploded","uploaded"],["uploder","uploader"],["uploders","uploaders"],["uploding","uploading"],["uplods","uploads"],["uppler","upper"],["uppon","upon"],["upported","supported"],["upporterd","supported"],["uppper","upper"],["uppstream","upstream"],["uppstreamed","upstreamed"],["uppstreamer","upstreamer"],["uppstreaming","upstreaming"],["uppstreams","upstreams"],["uppwards","upwards"],["uprade","upgrade"],["upraded","upgraded"],["uprades","upgrades"],["uprading","upgrading"],["uprgade","upgrade"],["uprgaded","upgraded"],["uprgades","upgrades"],["uprgading","upgrading"],["upsream","upstream"],["upsreamed","upstreamed"],["upsreamer","upstreamer"],["upsreaming","upstreaming"],["upsreams","upstreams"],["upsrteam","upstream"],["upsrteamed","upstreamed"],["upsrteamer","upstreamer"],["upsrteaming","upstreaming"],["upsrteams","upstreams"],["upsteam","upstream"],["upsteamed","upstreamed"],["upsteamer","upstreamer"],["upsteaming","upstreaming"],["upsteams","upstreams"],["upsteram","upstream"],["upsteramed","upstreamed"],["upsteramer","upstreamer"],["upsteraming","upstreaming"],["upsterams","upstreams"],["upstread","upstream"],["upstreamedd","upstreamed"],["upstreammed","upstreamed"],["upstreammer","upstreamer"],["upstreamming","upstreaming"],["upstreem","upstream"],["upstreemed","upstreamed"],["upstreemer","upstreamer"],["upstreeming","upstreaming"],["upstreems","upstreams"],["upstrema","upstream"],["upsupported","unsupported"],["uptadeable","updatable"],["uptdate","update"],["uptim","uptime"],["uptions","options"],["uptodate","up-to-date"],["uptodateness","up-to-dateness"],["uptream","upstream"],["uptreamed","upstreamed"],["uptreamer","upstreamer"],["uptreaming","upstreaming"],["uptreams","upstreams"],["uqest","quest"],["uqests","quests"],["urrlib","urllib"],["usag","usage"],["usal","usual"],["usally","usually"],["uscaled","unscaled"],["useability","usability"],["useable","usable"],["useage","usage"],["usebility","usability"],["useble","usable"],["useed","used"],["usees","uses"],["usefl","useful"],["usefule","useful"],["usefulfor","useful for"],["usefull","useful"],["usefullness","usefulness"],["usefult","useful"],["usefuly","usefully"],["usefutl","useful"],["usege","usage"],["useing","using"],["user-defiend","user-defined"],["user-defiened","user-defined"],["usera","users"],["userame","username"],["userames","usernames"],["userapace","userspace"],["userful","useful"],["userpace","userspace"],["userpsace","userspace"],["usersapce","userspace"],["userspase","userspace"],["usesfull","useful"],["usespace","userspace"],["usetnet","Usenet"],["usibility","usability"],["usible","usable"],["usig","using"],["usigned","unsigned"],["usiing","using"],["usin","using"],["usind","using"],["usinging","using"],["usinng","using"],["usng","using"],["usnig","using"],["usptart","upstart"],["usptarts","upstarts"],["usseful","useful"],["ussual","usual"],["ussuall","usual"],["ussually","usually"],["usuable","usable"],["usuage","usage"],["usuallly","usually"],["usualy","usually"],["usualyl","usually"],["usue","use"],["usued","used"],["usueful","useful"],["usuer","user"],["usuing","using"],["usupported","unsupported"],["ususal","usual"],["ususally","usually"],["UTF8ness","UTF-8-ness"],["utiilties","utilities"],["utilies","utilities"],["utililties","utilities"],["utilis","utilise"],["utilisa","utilise"],["utilisaton","utilisation"],["utilites","utilities"],["utilitisation","utilisation"],["utilitise","utilise"],["utilitises","utilises"],["utilitising","utilising"],["utilitiy","utility"],["utilitization","utilization"],["utilitize","utilize"],["utilitizes","utilizes"],["utilitizing","utilizing"],["utiliz","utilize"],["utiliza","utilize"],["utilizaton","utilization"],["utillities","utilities"],["utilties","utilities"],["utiltities","utilities"],["utiltity","utility"],["utilty","utility"],["utitity","utility"],["utitlities","utilities"],["utitlity","utility"],["utitlty","utility"],["utlities","utilities"],["utlity","utility"],["utput","output"],["utputs","outputs"],["uupload","upload"],["uupper","upper"],["vaalues","values"],["vaccum","vacuum"],["vaccume","vacuum"],["vaccuum","vacuum"],["vacinity","vicinity"],["vactor","vector"],["vactors","vectors"],["vacumme","vacuum"],["vacuosly","vacuously"],["vaelues","values"],["vaguaries","vagaries"],["vaiable","variable"],["vaiables","variables"],["vaiant","variant"],["vaiants","variants"],["vaidate","validate"],["vaieties","varieties"],["vailable","available"],["vaild","valid"],["vailidity","validity"],["vailidty","validity"],["vairable","variable"],["vairables","variables"],["vairous","various"],["vakue","value"],["vakued","valued"],["vakues","values"],["valailable","available"],["valdate","validate"],["valetta","valletta"],["valeu","value"],["valiator","validator"],["validade","validate"],["validata","validate"],["validataion","validation"],["validaterelase","validaterelease"],["valide","valid"],["valididty","validity"],["validing","validating"],["validte","validate"],["validted","validated"],["validtes","validates"],["validting","validating"],["validtion","validation"],["valied","valid"],["valies","values"],["valif","valid"],["valitdity","validity"],["valkues","values"],["vallgrind","valgrind"],["vallid","valid"],["vallidation","validation"],["vallidity","validity"],["vallue","value"],["vallues","values"],["valsues","values"],["valtage","voltage"],["valtages","voltages"],["valu","value"],["valuble","valuable"],["valudes","values"],["value-to-pack","value to pack"],["valueable","valuable"],["valuess","values"],["valuie","value"],["valulation","valuation"],["valulations","valuations"],["valule","value"],["valuled","valued"],["valules","values"],["valuling","valuing"],["vanishs","vanishes"],["varable","variable"],["varables","variables"],["varaiable","variable"],["varaiables","variables"],["varaiance","variance"],["varaiation","variation"],["varaible","variable"],["varaibles","variables"],["varaint","variant"],["varaints","variants"],["varation","variation"],["varations","variations"],["variabble","variable"],["variabbles","variables"],["variabe","variable"],["variabel","variable"],["variabele","variable"],["variabes","variables"],["variabla","variable"],["variablen","variable"],["varialbe","variable"],["varialbes","variables"],["varialbles","variables"],["varian","variant"],["variantions","variations"],["variatinos","variations"],["variationnal","variational"],["variatoin","variation"],["variatoins","variations"],["variavle","variable"],["variavles","variables"],["varibable","variable"],["varibables","variables"],["varibale","variable"],["varibales","variables"],["varibaless","variables"],["varibel","variable"],["varibels","variables"],["varibility","variability"],["variblae","variable"],["variblaes","variables"],["varible","variable"],["varibles","variables"],["varience","variance"],["varient","variant"],["varients","variants"],["varierty","variety"],["variey","variety"],["varify","verify"],["variing","varying"],["varing","varying"],["varities","varieties"],["varity","variety"],["variuos","various"],["variuous","various"],["varius","various"],["varn","warn"],["varned","warned"],["varning","warning"],["varnings","warnings"],["varns","warns"],["varoius","various"],["varous","various"],["varously","variously"],["varriance","variance"],["varriances","variances"],["vartical","vertical"],["vartically","vertically"],["vas","was"],["vasall","vassal"],["vasalls","vassals"],["vaue","value"],["vaule","value"],["vauled","valued"],["vaules","values"],["vauling","valuing"],["vavle","valve"],["vavlue","value"],["vavriable","variable"],["vavriables","variables"],["vbsrcript","vbscript"],["vebrose","verbose"],["vecotr","vector"],["vecotrs","vectors"],["vectices","vertices"],["vectore","vector"],["vectores","vectors"],["vectorss","vectors"],["vectror","vector"],["vectrors","vectors"],["vecvtor","vector"],["vecvtors","vectors"],["vedio","video"],["vefiry","verify"],["vegatarian","vegetarian"],["vegeterian","vegetarian"],["vegitable","vegetable"],["vegitables","vegetables"],["vegtable","vegetable"],["vehicule","vehicle"],["veify","verify"],["veiw","view"],["veiwed","viewed"],["veiwer","viewer"],["veiwers","viewers"],["veiwing","viewing"],["veiwings","viewings"],["veiws","views"],["vektor","vector"],["vektors","vectors"],["velidate","validate"],["vell","well"],["velociries","velocities"],["velociry","velocity"],["vender","vendor"],["venders","vendors"],["venemous","venomous"],["vengance","vengeance"],["vengence","vengeance"],["verbaitm","verbatim"],["verbatum","verbatim"],["verbous","verbose"],["verbouse","verbose"],["verbously","verbosely"],["verbse","verbose"],["verctor","vector"],["verctors","vectors"],["veresion","version"],["veresions","versions"],["verfication","verification"],["verficiation","verification"],["verfier","verifier"],["verfies","verifies"],["verfifiable","verifiable"],["verfification","verification"],["verfifications","verifications"],["verfified","verified"],["verfifier","verifier"],["verfifiers","verifiers"],["verfifies","verifies"],["verfify","verify"],["verfifying","verifying"],["verfires","verifies"],["verfiy","verify"],["verfiying","verifying"],["verfy","verify"],["verfying","verifying"],["verical","vertical"],["verifcation","verification"],["verifiaction","verification"],["verificaion","verification"],["verificaions","verifications"],["verificiation","verification"],["verificiations","verifications"],["verifieing","verifying"],["verifing","verifying"],["verifiy","verify"],["verifiying","verifying"],["verifty","verify"],["veriftying","verifying"],["verifyied","verified"],["verion","version"],["verions","versions"],["veriosn","version"],["veriosns","versions"],["verious","various"],["verison","version"],["verisoned","versioned"],["verisoner","versioner"],["verisoners","versioners"],["verisoning","versioning"],["verisons","versions"],["veritcal","vertical"],["veritcally","vertically"],["veritical","vertical"],["verly","very"],["vermillion","vermilion"],["verndor","vendor"],["verrical","vertical"],["verry","very"],["vershin","version"],["versin","version"],["versino","version"],["versinos","versions"],["versins","versions"],["versio","version"],["versiob","version"],["versioed","versioned"],["versioing","versioning"],["versiom","version"],["versionaddded","versionadded"],["versionm","version"],["versionms","versions"],["versionned","versioned"],["versionning","versioning"],["versios","versions"],["versitilaty","versatility"],["versitile","versatile"],["versitlity","versatility"],["versoin","version"],["versoion","version"],["versoions","versions"],["verson","version"],["versoned","versioned"],["versons","versions"],["vertextes","vertices"],["vertexts","vertices"],["vertial","vertical"],["verticall","vertical"],["verticaly","vertically"],["verticies","vertices"],["verticla","vertical"],["verticlealign","verticalalign"],["vertiece","vertex"],["vertieces","vertices"],["vertifiable","verifiable"],["vertification","verification"],["vertifications","verifications"],["vertify","verify"],["vertikal","vertical"],["vertix","vertex"],["vertixes","vertices"],["vertixs","vertices"],["vertx","vertex"],["veryfieng","verifying"],["veryfy","verify"],["veryified","verified"],["veryifies","verifies"],["veryify","verify"],["veryifying","verifying"],["vesion","version"],["vesions","versions"],["vetex","vertex"],["vetexes","vertices"],["vetod","vetoed"],["vetween","between"],["vew","view"],["veyr","very"],["vhild","child"],["viatnamese","Vietnamese"],["vice-fersa","vice-versa"],["vice-wersa","vice-versa"],["vicefersa","vice-versa"],["viceversa","vice-versa"],["vicewersa","vice-versa"],["videostreamming","videostreaming"],["viee","view"],["viees","views"],["vieport","viewport"],["vieports","viewports"],["vietnamesea","Vietnamese"],["viewtransfromation","viewtransformation"],["vigilence","vigilance"],["vigourous","vigorous"],["vill","will"],["villian","villain"],["villification","vilification"],["villify","vilify"],["vincinity","vicinity"],["vinrator","vibrator"],["vioalte","violate"],["vioaltion","violation"],["violentce","violence"],["violoated","violated"],["violoating","violating"],["violoation","violation"],["violoations","violations"],["virtal","virtual"],["virtaul","virtual"],["virtical","vertical"],["virtiual","virtual"],["virttual","virtual"],["virttually","virtually"],["virtualisaion","virtualisation"],["virtualisaiton","virtualisation"],["virtualizaion","virtualization"],["virtualizaiton","virtualization"],["virtualiziation","virtualization"],["virtualy","virtually"],["virtualzation","virtualization"],["virtuell","virtual"],["virtural","virtual"],["virture","virtue"],["virutal","virtual"],["virutalenv","virtualenv"],["virutalisation","virtualisation"],["virutalise","virtualise"],["virutalised","virtualised"],["virutalization","virtualization"],["virutalize","virtualize"],["virutalized","virtualized"],["virutally","virtually"],["virutals","virtuals"],["virutual","virtual"],["visability","visibility"],["visable","visible"],["visably","visibly"],["visbility","visibility"],["visble","visible"],["visblie","visible"],["visbly","visibly"],["visiable","visible"],["visiably","visibly"],["visibale","visible"],["visibibilty","visibility"],["visibile","visible"],["visibililty","visibility"],["visibilit","visibility"],["visibilty","visibility"],["visibl","visible"],["visibleable","visible"],["visibles","visible"],["visiblities","visibilities"],["visiblity","visibility"],["visiblle","visible"],["visinble","visible"],["visious","vicious"],["visisble","visible"],["visiter","visitor"],["visiters","visitors"],["visitng","visiting"],["visivble","visible"],["vissible","visible"],["visted","visited"],["visting","visiting"],["vistors","visitors"],["visuab","visual"],["visuabisation","visualisation"],["visuabise","visualise"],["visuabised","visualised"],["visuabises","visualises"],["visuabization","visualization"],["visuabize","visualize"],["visuabized","visualized"],["visuabizes","visualizes"],["visuables","visuals"],["visuably","visually"],["visuabs","visuals"],["visuaisation","visualisation"],["visuaise","visualise"],["visuaised","visualised"],["visuaises","visualises"],["visuaization","visualization"],["visuaize","visualize"],["visuaized","visualized"],["visuaizes","visualizes"],["visuale","visual"],["visuales","visuals"],["visualizaion","visualization"],["visualizaiton","visualization"],["visualizaitons","visualizations"],["visualizaton","visualization"],["visualizatons","visualizations"],["visuallisation","visualisation"],["visuallization","visualization"],["visualy","visually"],["visualzation","visualization"],["vitories","victories"],["vitrual","virtual"],["vitrually","virtually"],["vitual","virtual"],["viusally","visually"],["viusualisation","visualisation"],["viwe","view"],["viwed","viewed"],["viweed","viewed"],["viwer","viewer"],["viwers","viewers"],["viwes","views"],["vizualisation","visualisation"],["vizualise","visualise"],["vizualised","visualised"],["vizualize","visualize"],["vizualized","visualized"],["vlarge","large"],["vlaue","value"],["vlaues","values"],["vlone","clone"],["vloned","cloned"],["vlones","clones"],["vlues","values"],["voif","void"],["volatage","voltage"],["volatages","voltages"],["volatge","voltage"],["volatges","voltages"],["volcanoe","volcano"],["volenteer","volunteer"],["volenteered","volunteered"],["volenteers","volunteers"],["voleyball","volleyball"],["volontary","voluntary"],["volonteer","volunteer"],["volonteered","volunteered"],["volonteering","volunteering"],["volonteers","volunteers"],["volounteer","volunteer"],["volounteered","volunteered"],["volounteering","volunteering"],["volounteers","volunteers"],["volumn","volume"],["volumne","volume"],["volums","volume"],["volxel","voxel"],["volxels","voxels"],["vonfig","config"],["vould","would"],["vreity","variety"],["vresion","version"],["vrey","very"],["vriable","variable"],["vriables","variables"],["vriety","variety"],["vrifier","verifier"],["vrifies","verifies"],["vrify","verify"],["vrilog","Verilog"],["vritual","virtual"],["vritualenv","virtualenv"],["vritualisation","virtualisation"],["vritualise","virtualise"],["vritualization","virtualization"],["vritualize","virtualize"],["vrituoso","virtuoso"],["vrsion","version"],["vrsions","versions"],["Vulacn","Vulcan"],["Vulakn","Vulkan"],["vulbearable","vulnerable"],["vulbearabule","vulnerable"],["vulbearbilities","vulnerabilities"],["vulbearbility","vulnerability"],["vulbearbuilities","vulnerabilities"],["vulbearbuility","vulnerability"],["vulberabilility","vulnerability"],["vulberabilites","vulnerabilities"],["vulberabiliti","vulnerability"],["vulberabilitie","vulnerability"],["vulberabilitis","vulnerabilities"],["vulberabilitiy","vulnerability"],["vulberabillities","vulnerabilities"],["vulberabillity","vulnerability"],["vulberabilties","vulnerabilities"],["vulberabilty","vulnerability"],["vulberablility","vulnerability"],["vulberabuilility","vulnerability"],["vulberabuilites","vulnerabilities"],["vulberabuiliti","vulnerability"],["vulberabuilitie","vulnerability"],["vulberabuilities","vulnerabilities"],["vulberabuilitis","vulnerabilities"],["vulberabuilitiy","vulnerability"],["vulberabuility","vulnerability"],["vulberabuillities","vulnerabilities"],["vulberabuillity","vulnerability"],["vulberabuilties","vulnerabilities"],["vulberabuilty","vulnerability"],["vulberabule","vulnerable"],["vulberabulility","vulnerability"],["vulberbilities","vulnerabilities"],["vulberbility","vulnerability"],["vulberbuilities","vulnerabilities"],["vulberbuility","vulnerability"],["vulerabilities","vulnerabilities"],["vulerability","vulnerability"],["vulerable","vulnerable"],["vulerabuilities","vulnerabilities"],["vulerabuility","vulnerability"],["vulerabule","vulnerable"],["vulernabilities","vulnerabilities"],["vulernability","vulnerability"],["vulernable","vulnerable"],["vulnarabilities","vulnerabilities"],["vulnarability","vulnerability"],["vulneabilities","vulnerabilities"],["vulneability","vulnerability"],["vulneable","vulnerable"],["vulnearabilities","vulnerabilities"],["vulnearability","vulnerability"],["vulnearable","vulnerable"],["vulnearabule","vulnerable"],["vulnearbilities","vulnerabilities"],["vulnearbility","vulnerability"],["vulnearbuilities","vulnerabilities"],["vulnearbuility","vulnerability"],["vulnerabilies","vulnerabilities"],["vulnerabiliies","vulnerabilities"],["vulnerabilility","vulnerability"],["vulnerabilites","vulnerabilities"],["vulnerabiliti","vulnerability"],["vulnerabilitie","vulnerability"],["vulnerabilitis","vulnerabilities"],["vulnerabilitiy","vulnerability"],["vulnerabilitu","vulnerability"],["vulnerabiliy","vulnerability"],["vulnerabillities","vulnerabilities"],["vulnerabillity","vulnerability"],["vulnerabilties","vulnerabilities"],["vulnerabilty","vulnerability"],["vulnerablility","vulnerability"],["vulnerablities","vulnerabilities"],["vulnerablity","vulnerability"],["vulnerabuilility","vulnerability"],["vulnerabuilites","vulnerabilities"],["vulnerabuiliti","vulnerability"],["vulnerabuilitie","vulnerability"],["vulnerabuilities","vulnerabilities"],["vulnerabuilitis","vulnerabilities"],["vulnerabuilitiy","vulnerability"],["vulnerabuility","vulnerability"],["vulnerabuillities","vulnerabilities"],["vulnerabuillity","vulnerability"],["vulnerabuilties","vulnerabilities"],["vulnerabuilty","vulnerability"],["vulnerabule","vulnerable"],["vulnerabulility","vulnerability"],["vulnerarbilities","vulnerabilities"],["vulnerarbility","vulnerability"],["vulnerarble","vulnerable"],["vulnerbilities","vulnerabilities"],["vulnerbility","vulnerability"],["vulnerbuilities","vulnerabilities"],["vulnerbuility","vulnerability"],["vulnreabilities","vulnerabilities"],["vulnreability","vulnerability"],["vunerabilities","vulnerabilities"],["vunerability","vulnerability"],["vunerable","vulnerable"],["vyer","very"],["vyre","very"],["waht","what"],["wainting","waiting"],["waisline","waistline"],["waislines","waistlines"],["waitting","waiting"],["wakup","wakeup"],["wallthickness","wall thickness"],["want;s","wants"],["wantto","want to"],["wappers","wrappers"],["warantee","warranty"],["waranties","warranties"],["waranty","warranty"],["wardobe","wardrobe"],["waring","warning"],["warings","warnings"],["warinigs","warnings"],["warining","warning"],["warinings","warnings"],["warks","works"],["warlking","walking"],["warnibg","warning"],["warnibgs","warnings"],["warnig","warning"],["warnign","warning"],["warnigns","warnings"],["warnigs","warnings"],["warniing","warning"],["warniings","warnings"],["warnin","warning"],["warnind","warning"],["warninds","warnings"],["warninf","warning"],["warninfs","warnings"],["warningss","warnings"],["warninig","warning"],["warninigs","warnings"],["warnining","warning"],["warninings","warnings"],["warninng","warning"],["warninngs","warnings"],["warnins","warnings"],["warninsg","warnings"],["warninsgs","warnings"],["warniong","warning"],["warniongs","warnings"],["warnkng","warning"],["warnkngs","warnings"],["warrent","warrant"],["warrents","warrants"],["warrn","warn"],["warrned","warned"],["warrning","warning"],["warrnings","warnings"],["warrriors","warriors"],["was'nt","wasn't"],["was't","wasn't"],["was;t","wasn't"],["wasn;t","wasn't"],["wasnt'","wasn't"],["wasnt","wasn't"],["wasnt;","wasn't"],["wass","was"],["wastefullness","wastefulness"],["watchdong","watchdog"],["watchog","watchdog"],["watermask","watermark"],["wathc","watch"],["wathdog","watchdog"],["wathever","whatever"],["wating","waiting"],["watn","want"],["wavelengh","wavelength"],["wavelenghs","wavelengths"],["wavelenght","wavelength"],["wavelenghts","wavelengths"],["wavelnes","wavelines"],["wayoint","waypoint"],["wayoints","waypoints"],["wayword","wayward"],["weahter","weather"],["weahters","weathers"],["weaponary","weaponry"],["weas","was"],["webage","webpage"],["webbased","web-based"],["webiste","website"],["wedensday","Wednesday"],["wednesay","Wednesday"],["wednesdaay","Wednesday"],["wednesdey","Wednesday"],["wednessday","Wednesday"],["wednsday","Wednesday"],["wege","wedge"],["wehere","where"],["wehn","when"],["wehther","whether"],["weigth","weight"],["weigthed","weighted"],["weigths","weights"],["weilded","wielded"],["weill","will"],["weired","weird"],["weitght","weight"],["wel","well"],["wendesday","Wednesday"],["wendsay","Wednesday"],["wendsday","Wednesday"],["wensday","Wednesday"],["were'nt","weren't"],["wereabouts","whereabouts"],["wereas","whereas"],["weree","were"],["werent","weren't"],["werever","wherever"],["wew","we"],["whant","want"],["whants","wants"],["whataver","whatever"],["whatepsace","whitespace"],["whatepsaces","whitespaces"],["whathever","whatever"],["whch","which"],["whcich","which"],["whcih","which"],["wheh","when"],["whehter","whether"],["wheigh","weigh"],["whem","when"],["whenevery","whenever"],["whenn","when"],["whenver","whenever"],["wheras","whereas"],["wherease","whereas"],["whereever","wherever"],["wherether","whether"],["whery","where"],["wheteher","whether"],["whetehr","whether"],["wheter","whether"],["whethe","whether"],["whethter","whether"],["whever","wherever"],["whheel","wheel"],["whhen","when"],["whic","which"],["whicg","which"],["which;s","which's"],["whichs","which's"],["whicht","which"],["whih","which"],["whihc","which"],["whihch","which"],["whike","while"],["whilest","whilst"],["whiltelist","whitelist"],["whiltelisted","whitelisted"],["whiltelisting","whitelisting"],["whiltelists","whitelists"],["whilw","while"],["whioch","which"],["whishlist","wishlist"],["whitch","which"],["whitchever","whichever"],["whitepsace","whitespace"],["whitepsaces","whitespaces"],["whith","with"],["whithin","within"],["whithout","without"],["whitre","white"],["whitspace","whitespace"],["whitspaces","whitespace"],["whlch","which"],["whle","while"],["whlie","while"],["whn","when"],["whne","when"],["whoes","whose"],["whoknows","who knows"],["wholey","wholly"],["whoose","whose"],["whould","would"],["whre","where"],["whta","what"],["whther","whether"],["whtihin","within"],["whyth","with"],["whythout","without"],["wiat","wait"],["wice","vice"],["wice-versa","vice-versa"],["wice-wersa","vice-versa"],["wiceversa","vice-versa"],["wicewersa","vice-versa"],["wich","which"],["widder","wider"],["widesread","widespread"],["widgect","widget"],["widged","widget"],["widghet","widget"],["widghets","widgets"],["widgit","widget"],["widgtes","widgets"],["widht","width"],["widhtpoint","widthpoint"],["widhtpoints","widthpoints"],["widthn","width"],["widthout","without"],["wief","wife"],["wieghed","weighed"],["wieght","weight"],["wieghts","weights"],["wieh","view"],["wierd","weird"],["wierdly","weirdly"],["wierdness","weirdness"],["wieth","width"],["wiew","view"],["wigdet","widget"],["wigdets","widgets"],["wih","with"],["wihch","which"],["wihich","which"],["wihite","white"],["wihle","while"],["wihout","without"],["wiht","with"],["wihtin","within"],["wihtout","without"],["wiil","will"],["wikpedia","wikipedia"],["wilcard","wildcard"],["wilcards","wildcards"],["wilh","will"],["wille","will"],["willingless","willingness"],["willk","will"],["willl","will"],["windo","window"],["windoes","windows"],["windoow","window"],["windoows","windows"],["windos","windows"],["windowz","windows"],["windwo","window"],["windwos","windows"],["winn","win"],["winndow","window"],["winndows","windows"],["winodw","window"],["wipoing","wiping"],["wirh","with"],["wirte","write"],["wirter","writer"],["wirters","writers"],["wirtes","writes"],["wirting","writing"],["wirtten","written"],["wirtual","virtual"],["witable","writeable"],["witdh","width"],["witdhs","widths"],["witdth","width"],["witdths","widths"],["witheld","withheld"],["withh","with"],["withih","within"],["withinn","within"],["withion","within"],["witho","with"],["withoit","without"],["withold","withhold"],["witholding","withholding"],["withon","within"],["withoout","without"],["withot","without"],["withotu","without"],["withou","without"],["withoud","without"],["withoug","without"],["withough","without"],["withought","without"],["withouht","without"],["withount","without"],["withourt","without"],["withous","without"],["withouth","without"],["withouyt","without"],["withput","without"],["withrawal","withdrawal"],["witht","with"],["withthe","with the"],["withtin","within"],["withun","within"],["withuout","without"],["witin","within"],["witk","with"],["witn","with"],["witout","without"],["witrh","with"],["witth","with"],["wiull","will"],["wiyh","with"],["wiyhout","without"],["wiyth","with"],["wizzard","wizard"],["wjat","what"],["wll","will"],["wlll","will"],["wnated","wanted"],["wnating","wanting"],["wnats","wants"],["woh","who"],["wohle","whole"],["woill","will"],["woithout","without"],["wokr","work"],["wokring","working"],["wolrd","world"],["wolrdly","worldly"],["wolrdwide","worldwide"],["wolwide","worldwide"],["won;t","won't"],["wonderfull","wonderful"],["wonderig","wondering"],["wont't","won't"],["woraround","workaround"],["worarounds","workarounds"],["worbench","workbench"],["worbenches","workbenches"],["worchester","Worcester"],["wordlwide","worldwide"],["wordpres","wordpress"],["worfklow","workflow"],["worfklows","workflows"],["worflow","workflow"],["worflows","workflows"],["workaorund","workaround"],["workaorunds","workarounds"],["workaound","workaround"],["workaounds","workarounds"],["workaraound","workaround"],["workaraounds","workarounds"],["workarbound","workaround"],["workaroud","workaround"],["workaroudn","workaround"],["workaroudns","workarounds"],["workarouds","workarounds"],["workarould","workaround"],["workaroung","workaround"],["workaroungs","workarounds"],["workarround","workaround"],["workarrounds","workarounds"],["workarund","workaround"],["workarunds","workarounds"],["workbanch","workbench"],["workbanches","workbenches"],["workbanchs","workbenches"],["workbenchs","workbenches"],["workbennch","workbench"],["workbennches","workbenches"],["workbnech","workbench"],["workbneches","workbenches"],["workboos","workbooks"],["workes","works"],["workfow","workflow"],["workfows","workflows"],["workign","working"],["worklfow","workflow"],["worklfows","workflows"],["workpsace","workspace"],["workpsaces","workspaces"],["workround","workaround"],["workrounds","workarounds"],["workspce","workspace"],["workspsace","workspace"],["workspsaces","workspaces"],["workstaion","workstation"],["workstaions","workstations"],["workstaition","workstation"],["workstaitions","workstations"],["workstaiton","workstation"],["workstaitons","workstations"],["workststion","workstation"],["workststions","workstations"],["worl","world"],["world-reknown","world renown"],["world-reknowned","world renowned"],["worload","workload"],["worloads","workloads"],["worls","world"],["wornged","wronged"],["worngs","wrongs"],["worrry","worry"],["worser","worse"],["worstened","worsened"],["worthwile","worthwhile"],["woth","worth"],["wothout","without"],["wotk","work"],["wotked","worked"],["wotking","working"],["wotks","works"],["woud","would"],["woudl","would"],["woudn't","wouldn't"],["would'nt","wouldn't"],["would't","wouldn't"],["wouldent","wouldn't"],["woulden`t","wouldn't"],["wouldn;t","wouldn't"],["wouldnt'","wouldn't"],["wouldnt","wouldn't"],["wouldnt;","wouldn't"],["wounderful","wonderful"],["wouold","would"],["wouuld","would"],["wqs","was"],["wraapp","wrap"],["wraapped","wrapped"],["wraapper","wrapper"],["wraappers","wrappers"],["wraapping","wrapping"],["wraapps","wraps"],["wraning","warning"],["wranings","warnings"],["wrapepd","wrapped"],["wraper","wrapper"],["wrapp","wrap"],["wrappered","wrapped"],["wrappng","wrapping"],["wrapps","wraps"],["wresters","wrestlers"],["wriet","write"],["writebufer","writebuffer"],["writechetque","writecheque"],["writeing","writing"],["writen","written"],["writet","writes"],["writewr","writer"],["writingm","writing"],["writters","writers"],["writting","writing"],["writtten","written"],["wrkload","workload"],["wrkloads","workloads"],["wrod","word"],["wroet","wrote"],["wrog","wrong"],["wrok","work"],["wroked","worked"],["wrokflow","workflow"],["wrokflows","workflows"],["wroking","working"],["wrokload","workload"],["wrokloads","workloads"],["wroks","works"],["wron","wrong"],["wronf","wrong"],["wront","wrong"],["wrtie","write"],["wrting","writing"],["wsee","see"],["wser","user"],["wth","with"],["wtih","with"],["wtyle","style"],["wuold","would"],["wupport","support"],["wuth","with"],["wuthin","within"],["wya","way"],["wyth","with"],["wythout","without"],["xdescribe","describe"],["xdpf","xpdf"],["xenophoby","xenophobia"],["xepect","expect"],["xepected","expected"],["xepectedly","expectedly"],["xepecting","expecting"],["xepects","expects"],["xgetttext","xgettext"],["xinitiazlize","xinitialize"],["xmdoel","xmodel"],["xour","your"],["xwindows","X"],["xyou","you"],["yaching","yachting"],["yaer","year"],["yaerly","yearly"],["yaers","years"],["yatch","yacht"],["yearm","year"],["yeasr","years"],["yeild","yield"],["yeilded","yielded"],["yeilding","yielding"],["yeilds","yields"],["yeld","yield"],["yelded","yielded"],["yelding","yielding"],["yelds","yields"],["yello","yellow"],["yera","year"],["yeras","years"],["yersa","years"],["yhe","the"],["yieldin","yielding"],["ymbols","symbols"],["yoman","yeoman"],["yomen","yeomen"],["yot","yacht"],["yotube","youtube"],["youforic","euphoric"],["youforically","euphorically"],["youlogy","eulogy"],["yourselfes","yourselves"],["youself","yourself"],["youthinasia","euthanasia"],["ypes","types"],["yrea","year"],["ytou","you"],["yuforic","euphoric"],["yuforically","euphorically"],["yugoslac","yugoslav"],["yuo","you"],["yuor","your"],["yur","your"],["zar","czar"],["zars","czars"],["zeebra","zebra"],["zefer","zephyr"],["zefers","zephyrs"],["zellot","zealot"],["zellots","zealots"],["zemporary","temporary"],["zick-zack","zig-zag"],["zimmap","zipmap"],["zimpaps","zipmaps"],["zink","zinc"],["ziped","zipped"],["ziper","zipper"],["ziping","zipping"],["zlot","slot"],["zombe","zombie"],["zomebie","zombie"],["zoocheenei","zucchinis"],["zoocheeni","zucchini"],["zoocheinei","zucchinis"],["zoocheini","zucchini"],["zookeenee","zucchini"],["zookeenees","zucchinis"],["zookeenei","zucchinis"],["zookeeni","zucchini"],["zookeinee","zucchini"],["zookeinees","zucchinis"],["zookeinei","zucchinis"],["zookeini","zucchini"],["zucheenei","zucchinis"],["zucheeni","zucchini"],["zukeenee","zucchini"],["zukeenees","zucchinis"],["zukeenei","zucchinis"],["zukeeni","zucchini"],["zuser","user"],["zylophone","xylophone"],["zylophones","xylophone"],["__attribyte__","__attribute__"],["__cpluspus","__cplusplus"],["__cpusplus","__cplusplus"],["\xE9valuate","evaluate"],["\u0441ontain","contain"],["\u0441ontained","contained"],["\u0441ontainer","container"],["\u0441ontainers","containers"],["\u0441ontaining","containing"],["\u0441ontainor","container"],["\u0441ontainors","containers"],["\u0441ontains","contains"]]);var us=class{constructor(){this.ignoreWords=[]}},Gn=class extends b{constructor(){super({nameKey:"rules.auto-correct-common-misspellings.name",descriptionKey:"rules.auto-correct-common-misspellings.description",type:"Content",ruleIgnoreTypes:[f.yaml,f.code,f.inlineCode,f.math,f.inlineMath,f.link,f.wikiLink,f.tag,f.image,f.url]})}get OptionsClass(){return us}apply(t,i){return t.replaceAll(Du,n=>this.replaceWordWithCorrectCasing(n,i))}replaceWordWithCorrectCasing(t,i){let n=t.toLowerCase();if(!sl.has(n)||i.ignoreWords.includes(n))return t;let r=sl.get(n);return t.charAt(0)==t.charAt(0).toUpperCase()&&(r=r.charAt(0).toUpperCase()+r.substring(1)),r}get exampleBuilders(){return[new y({description:"Auto-correct misspellings in regular text, but not code blocks, math blocks, YAML, or tags",before:p` --- key: absoltely --- @@ -165,7 +163,7 @@ var bp=Object.create;var mn=Object.defineProperty;var Fl=Object.getOwnPropertyDe http://www.Absoltely.com should not be corrected `,after:p` http://www.Absoltely.com should not be corrected - `})]}get optionBuilders(){return[new be({OptionsClass:Qa,nameKey:"rules.auto-correct-common-misspellings.ignore-words.name",descriptionKey:"rules.auto-correct-common-misspellings.ignore-words.description",optionsKey:"ignoreWords",splitter:Mn,separator:", "})]}};Pn=T([b.register],Pn);var Za=class{constructor(){this.style="space"}},lt=class extends b{constructor(){super({nameKey:"rules.blockquote-style.name",descriptionKey:"rules.blockquote-style.description",type:"Content",hasSpecialExecutionOrder:!0,ruleIgnoreTypes:[f.html]})}get OptionsClass(){return Za}apply(t,i){return i.style==="space"?Fo(t,this.addSpaceToIndicator):Fo(t,this.removeSpaceFromIndicator)}removeSpaceFromIndicator(t){return t.replace(/>( |\t)+/g,">")}addSpaceToIndicator(t){return t.replace(/>([^ ])/g,"> $1").replace(/>>/g,"> >")}get exampleBuilders(){return[new y({description:"When style = `space`, a space is added to blockquotes missing a space after the indicator",before:p` + `})]}get optionBuilders(){return[new be({OptionsClass:us,nameKey:"rules.auto-correct-common-misspellings.ignore-words.name",descriptionKey:"rules.auto-correct-common-misspellings.ignore-words.description",optionsKey:"ignoreWords",splitter:Kn,separator:", "})]}};Gn=A([b.register],Gn);var ps=class{constructor(){this.style="space"}},gt=class extends b{constructor(){super({nameKey:"rules.blockquote-style.name",descriptionKey:"rules.blockquote-style.description",type:"Content",hasSpecialExecutionOrder:!0,ruleIgnoreTypes:[f.html]})}get OptionsClass(){return ps}apply(t,i){return i.style==="space"?il(t,this.addSpaceToIndicator):il(t,this.removeSpaceFromIndicator)}removeSpaceFromIndicator(t){return t.replace(/>( |\t)+/g,">")}addSpaceToIndicator(t){return t.replace(/>([^ ])/g,"> $1").replace(/>>/g,"> >")}get exampleBuilders(){return[new y({description:"When style = `space`, a space is added to blockquotes missing a space after the indicator",before:p` >Blockquotes will have a space added if one is not present > Will be left as is. ${""} @@ -199,7 +197,7 @@ var bp=Object.create;var mn=Object.defineProperty;var Fl=Object.getOwnPropertyDe >>Nesting is handled >>>>>Especially when multiple levels are involved >>>>>Even when partially correct already, it is handled - `,options:{style:"no space"}})]}get optionBuilders(){return[new ne({OptionsClass:Za,nameKey:"rules.blockquote-style.style.name",descriptionKey:"rules.blockquote-style.style.description",optionsKey:"style",records:[{value:"space",description:"> indicator is followed by a space"},{value:"no space",description:">indicator is not followed by a space"}]})]}};lt=T([b.register],lt);var Ja=class{};T([b.noSettingControl()],Ja.prototype,"lineContent",2);var ct=class extends b{constructor(){super({nameKey:"rules.add-blockquote-indentation-on-paste.name",descriptionKey:"rules.add-blockquote-indentation-on-paste.description",type:"Paste"})}get OptionsClass(){return Ja}apply(t,i){let n=/^(\s*)((> ?)+) .*/,r=i.lineContent.match(n);if(!r)return t;let a=r[1]??"",s=r[2]??"";return t.trim().replace(/\n/gm,` + `,options:{style:"no space"}})]}get optionBuilders(){return[new ne({OptionsClass:ps,nameKey:"rules.blockquote-style.style.name",descriptionKey:"rules.blockquote-style.style.description",optionsKey:"style",records:[{value:"space",description:"> indicator is followed by a space"},{value:"no space",description:">indicator is not followed by a space"}]})]}};gt=A([b.register],gt);var ms=class{};A([b.noSettingControl()],ms.prototype,"lineContent",2);var ht=class extends b{constructor(){super({nameKey:"rules.add-blockquote-indentation-on-paste.name",descriptionKey:"rules.add-blockquote-indentation-on-paste.description",type:"Paste"})}get OptionsClass(){return ms}apply(t,i){let n=/^(\s*)((> ?)+) .*/,r=i.lineContent.match(n);if(!r)return t;let a=r[1]??"",s=r[2]??"";return t.trim().replace(/\n/gm,` ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted into regular text does not get blockquotified with current line being `Part 1 of the sentence`",before:p` was much less likely to succeed, but they tried it anyway. Part 2 was much more interesting. @@ -214,7 +212,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i `,after:p` This content is being added to a blockquote > > Note that the second line is indented and the surrounding blank lines were trimmed - `,options:{lineContent:"> > "}})]}get optionBuilders(){return[]}};ct=T([b.register],ct);var dt=class{constructor(){this.style="Title Case";this.ignoreWords=["macOS","iOS","iPhone","iPad","JavaScript","TypeScript","AppleScript","I"];this.lowercaseWords=["a","an","the","aboard","about","abt.","above","abreast","absent","across","after","against","along","aloft","alongside","amid","amidst","mid","midst","among","amongst","anti","apropos","around","round","as","aslant","astride","at","atop","ontop","bar","barring","before","B4","behind","below","beneath","neath","beside","besides","between","'tween","beyond","but","by","chez","circa","c.","ca.","come","concerning","contra","counting","cum","despite","spite","down","during","effective","ere","except","excepting","excluding","failing","following","for","from","in","including","inside","into","less","like","minus","modulo","mod","near","nearer","nearest","next","notwithstanding","of","o'","off","offshore","on","onto","opposite","out","outside","over","o'er","pace","past","pending","per","plus","post","pre","pro","qua","re","regarding","respecting","sans","save","saving","short","since","sub","than","through","thru","throughout","thruout","till","times","to","t'","touching","toward","towards","under","underneath","unlike","until","unto","up","upon","versus","vs.","v.","via","vice","vis-\xE0-vis","wanting","with","w/","w.","c\u0304","within","w/i","without","'thout","w/o","abroad","adrift","aft","afterward","afterwards","ahead","apart","ashore","aside","away","back","backward","backwards","beforehand","downhill","downstage","downstairs","downstream","downward","downwards","downwind","east","eastward","eastwards","forth","forward","forwards","heavenward","heavenwards","hence","henceforth","here","hereby","herein","hereof","hereto","herewith","home","homeward","homewards","indoors","inward","inwards","leftward","leftwards","north","northeast","northward","northwards","northwest","now","onward","onwards","outdoors","outward","outwards","overboard","overhead","overland","overseas","rightward","rightwards","seaward","seawards","skywards","skyward","south","southeast","southwards","southward","southwest","then","thence","thenceforth","there","thereby","therein","thereof","thereto","therewith","together","underfoot","underground","uphill","upstage","upstairs","upstream","upward","upwards","upwind","west","westward","westwards","when","whence","where","whereby","wherein","whereto","wherewith","although","because","considering","given","granted","if","lest","once","provided","providing","seeing","so","supposing","though","unless","whenever","whereas","wherever","while","whilst","ago","according to","as regards","counter to","instead of","owing to","pertaining to","at the behest of","at the expense of","at the hands of","at risk of","at the risk of","at variance with","by dint of","by means of","by virtue of","by way of","for the sake of","for sake of","for lack of","for want of","from want of","in accordance with","in addition to","in case of","in charge of","in compliance with","in conformity with","in contact with","in exchange for","in favor of","in front of","in lieu of","in light of","in the light of","in line with","in place of","in point of","in quest of","in relation to","in regard to","with regard to","in respect to","with respect to","in return for","in search of","in step with","in touch with","in terms of","in the name of","in view of","on account of","on behalf of","on grounds of","on the grounds of","on the part of","on top of","with a view to","with the exception of","\xE0 la","a la","as soon as","as well as","close to","due to","far from","in case","other than","prior to","pursuant to","regardless of","subsequent to","as long as","as much as","as far as","by the time","in as much as","inasmuch","in order to","in order that","even","provide that","if only","whether","whose","whoever","why","how","or not","whatever","what","both","and","or","not only","but also","either","neither","nor","just","rather","no sooner","such","that","yet","is","it"];this.ignoreCasedWords=!0}},ut=class extends b{constructor(){super({nameKey:"rules.capitalize-headings.name",descriptionKey:"rules.capitalize-headings.description",type:"Heading",hasSpecialExecutionOrder:!0,ruleIgnoreTypes:[f.code,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return dt}apply(t,i){return t.replace(ji,n=>{if(i.style==="ALL CAPS")return n.toUpperCase();let r=i.style==="First letter",a=n.match(/\S+/g),s=i.ignoreWords,o=i.lowercaseWords,l=!0;for(let d=1;d > "}})]}get optionBuilders(){return[]}};ht=A([b.register],ht);var ft=class{constructor(){this.style="Title Case";this.ignoreWords=["macOS","iOS","iPhone","iPad","JavaScript","TypeScript","AppleScript","I"];this.lowercaseWords=["a","an","the","aboard","about","abt.","above","abreast","absent","across","after","against","along","aloft","alongside","amid","amidst","mid","midst","among","amongst","anti","apropos","around","round","as","aslant","astride","at","atop","ontop","bar","barring","before","B4","behind","below","beneath","neath","beside","besides","between","'tween","beyond","but","by","chez","circa","c.","ca.","come","concerning","contra","counting","cum","despite","spite","down","during","effective","ere","except","excepting","excluding","failing","following","for","from","in","including","inside","into","less","like","minus","modulo","mod","near","nearer","nearest","next","notwithstanding","of","o'","off","offshore","on","onto","opposite","out","outside","over","o'er","pace","past","pending","per","plus","post","pre","pro","qua","re","regarding","respecting","sans","save","saving","short","since","sub","than","through","thru","throughout","thruout","till","times","to","t'","touching","toward","towards","under","underneath","unlike","until","unto","up","upon","versus","vs.","v.","via","vice","vis-\xE0-vis","wanting","with","w/","w.","c\u0304","within","w/i","without","'thout","w/o","abroad","adrift","aft","afterward","afterwards","ahead","apart","ashore","aside","away","back","backward","backwards","beforehand","downhill","downstage","downstairs","downstream","downward","downwards","downwind","east","eastward","eastwards","forth","forward","forwards","heavenward","heavenwards","hence","henceforth","here","hereby","herein","hereof","hereto","herewith","home","homeward","homewards","indoors","inward","inwards","leftward","leftwards","north","northeast","northward","northwards","northwest","now","onward","onwards","outdoors","outward","outwards","overboard","overhead","overland","overseas","rightward","rightwards","seaward","seawards","skywards","skyward","south","southeast","southwards","southward","southwest","then","thence","thenceforth","there","thereby","therein","thereof","thereto","therewith","together","underfoot","underground","uphill","upstage","upstairs","upstream","upward","upwards","upwind","west","westward","westwards","when","whence","where","whereby","wherein","whereto","wherewith","although","because","considering","given","granted","if","lest","once","provided","providing","seeing","so","supposing","though","unless","whenever","whereas","wherever","while","whilst","ago","according to","as regards","counter to","instead of","owing to","pertaining to","at the behest of","at the expense of","at the hands of","at risk of","at the risk of","at variance with","by dint of","by means of","by virtue of","by way of","for the sake of","for sake of","for lack of","for want of","from want of","in accordance with","in addition to","in case of","in charge of","in compliance with","in conformity with","in contact with","in exchange for","in favor of","in front of","in lieu of","in light of","in the light of","in line with","in place of","in point of","in quest of","in relation to","in regard to","with regard to","in respect to","with respect to","in return for","in search of","in step with","in touch with","in terms of","in the name of","in view of","on account of","on behalf of","on grounds of","on the grounds of","on the part of","on top of","with a view to","with the exception of","\xE0 la","a la","as soon as","as well as","close to","due to","far from","in case","other than","prior to","pursuant to","regardless of","subsequent to","as long as","as much as","as far as","by the time","in as much as","inasmuch","in order to","in order that","even","provide that","if only","whether","whose","whoever","why","how","or not","whatever","what","both","and","or","not only","but also","either","neither","nor","just","rather","no sooner","such","that","yet","is","it"];this.ignoreCasedWords=!0}},yt=class extends b{constructor(){super({nameKey:"rules.capitalize-headings.name",descriptionKey:"rules.capitalize-headings.description",type:"Heading",hasSpecialExecutionOrder:!0,ruleIgnoreTypes:[f.code,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return ft}apply(t,i){return t.replace(Pi,n=>{if(i.style==="ALL CAPS")return n.toUpperCase();let r=i.style==="First letter",a=n.match(/\S+/g),s=i.ignoreWords,o=i.lowercaseWords,l=!0;for(let d=1;d(n=n.replace(/^---\n+/,`--- + `,options:{style:"ALL CAPS"}})]}get optionBuilders(){return[new ne({OptionsClass:ft,nameKey:"rules.capitalize-headings.style.name",descriptionKey:"rules.capitalize-headings.style.description",optionsKey:"style",records:[{value:"Title Case",description:"Capitalize Using Title Case Rules"},{value:"ALL CAPS",description:"CAPITALIZE THE WHOLE TITLE"},{value:"First letter",description:"Only capitalize the first letter"}]}),new U({OptionsClass:ft,nameKey:"rules.capitalize-headings.ignore-case-words.name",descriptionKey:"rules.capitalize-headings.ignore-case-words.description",optionsKey:"ignoreCasedWords"}),new be({OptionsClass:ft,nameKey:"rules.capitalize-headings.ignore-words.name",descriptionKey:"rules.capitalize-headings.ignore-words.description",optionsKey:"ignoreWords",splitter:Kn,separator:", "}),new be({OptionsClass:ft,nameKey:"rules.capitalize-headings.lowercase-words.name",descriptionKey:"rules.capitalize-headings.lowercase-words.description",optionsKey:"lowercaseWords",splitter:Kn,separator:", "})]}};yt=A([b.register],yt);var gs=class{constructor(){this.innerNewLines=!1}},Qn=class extends b{constructor(){super({nameKey:"rules.compact-yaml.name",descriptionKey:"rules.compact-yaml.description",type:"Spacing"})}get OptionsClass(){return gs}apply(t,i){return Ae(t,n=>(n=n.replace(/^---\n+/,`--- `),n=n.replace(/\n+---/,` ---`),i.innerNewLines&&(n=n.replaceAll(/\n{2,}/g,` `)),n))}get exampleBuilders(){return[new y({description:"Remove blank lines at the start and end of the YAML",before:p` @@ -283,9 +281,9 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i ${""} ${""} Body content here. - `,options:{innerNewLines:!0}})]}get optionBuilders(){return[new U({OptionsClass:Xa,nameKey:"rules.compact-yaml.inner-new-lines.name",descriptionKey:"rules.compact-yaml.inner-new-lines.description",optionsKey:"innerNewLines"})]}};Kn=T([b.register],Kn);var $o=class{},$n=class extends b{constructor(){super({nameKey:"rules.consecutive-blank-lines.name",descriptionKey:"rules.consecutive-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return $o}apply(t,i){return t.replace(/(\n([\t\v\f\r \u00a0\u2000-\u200b\u2028-\u2029\u3000]+)?){2,}\n/g,` + `,options:{innerNewLines:!0}})]}get optionBuilders(){return[new U({OptionsClass:gs,nameKey:"rules.compact-yaml.inner-new-lines.name",descriptionKey:"rules.compact-yaml.inner-new-lines.description",optionsKey:"innerNewLines"})]}};Qn=A([b.register],Qn);var ol=class{},Zn=class extends b{constructor(){super({nameKey:"rules.consecutive-blank-lines.name",descriptionKey:"rules.consecutive-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return ol}apply(t,i){return t.replace(/(\n([\t\v\f\r \u00a0\u2000-\u200b\u2028-\u2029\u3000]+)?){2,}\n/g,` -`)}get exampleBuilders(){return[new y({description:"",before:p` +`)}get exampleBuilders(){return[new y({description:"Consecutive blank lines are removed",before:p` Some text ${""} ${""} @@ -294,7 +292,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i Some text ${""} Some more text - `})]}get optionBuilders(){return[]}};$n=T([b.register],$n);var Ho=class{},Hn=class extends b{constructor(){super({nameKey:"rules.convert-bullet-list-markers.name",descriptionKey:"rules.convert-bullet-list-markers.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Ho}apply(t,i){return t.replace(/^([^\S\n]*)([•§])([^\S\n]*)/gm,"$1-$3")}get exampleBuilders(){return[new y({description:"Converts \u2022",before:p` + `})]}get optionBuilders(){return[]}};Zn=A([b.register],Zn);var ll=class{},Jn=class extends b{constructor(){super({nameKey:"rules.convert-bullet-list-markers.name",descriptionKey:"rules.convert-bullet-list-markers.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return ll}apply(t,i){return t.replace(/^([^\S\n]*)([•§])([^\S\n]*)/gm,"$1-$3")}get exampleBuilders(){return[new y({description:"Converts \u2022",before:p` • item 1 • item 2 `,after:p` @@ -308,7 +306,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i - item 1 - item 2 - item 3 - `})]}get optionBuilders(){return[]}};Hn=T([b.register],Hn);var es=class{constructor(){this.tabsize=4}},Yn=class extends b{constructor(){super({nameKey:"rules.convert-spaces-to-tabs.name",descriptionKey:"rules.convert-spaces-to-tabs.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return es}apply(t,i){let n=String(i.tabsize),r=new RegExp("^( *) {"+String(n)+"}","gm");for(;t.match(r)!=null;)t=t.replace(r,"$1 ");return t}get exampleBuilders(){return[new y({description:"Converting spaces to tabs with `tabsize = 3`",before:p` + `})]}get optionBuilders(){return[]}};Jn=A([b.register],Jn);var hs=class{constructor(){this.tabsize=4}},Xn=class extends b{constructor(){super({nameKey:"rules.convert-spaces-to-tabs.name",descriptionKey:"rules.convert-spaces-to-tabs.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return hs}apply(t,i){let n=String(i.tabsize),r=new RegExp("^( *) {"+n+"}","gm");t=this.replaceAllRegexMatches(t,r);let a=new RegExp("^((>( | *))*(>( | )) *) {"+n+"}","gm");return t=this.replaceAllRegexMatches(t,a),t}replaceAllRegexMatches(t,i){for(;t.match(i)!=null;)t=t.replace(i,"$1 ");return t}get exampleBuilders(){return[new y({description:"Converting spaces to tabs with `tabsize = 3`",before:p` - text with no indention - text indented with 3 spaces - text with no indention @@ -318,7 +316,17 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i \t- text indented with 3 spaces - text with no indention \t\t- text indented with 6 spaces - `,options:{tabsize:3}})]}get optionBuilders(){return[new Ua({OptionsClass:es,nameKey:"rules.convert-spaces-to-tabs.tabsize.name",descriptionKey:"rules.convert-spaces-to-tabs.tabsize.description",optionsKey:"tabsize"})]}};Yn=T([b.register],Yn);var is=class{constructor(){this.style="consistent"}},Wn=class extends b{constructor(){super({nameKey:"rules.emphasis-style.name",descriptionKey:"rules.emphasis-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.math,f.inlineMath]})}get OptionsClass(){return is}apply(t,i){return qa(t,i.style,"emphasis")}get exampleBuilders(){return[new y({description:"Emphasis indicators should use underscores when style is set to 'underscore'",before:p` + `,options:{tabsize:3}}),new y({description:"Converting spaces to tabs with `tabsize = 3` works in blockquotes",before:p` + > - text with no indention + > - text indented with 3 spaces + > - text with no indention + > - text indented with 6 spaces + `,after:p` + > - text with no indention + > \t- text indented with 3 spaces + > - text with no indention + > \t\t- text indented with 6 spaces + `,options:{tabsize:3}})]}get optionBuilders(){return[new cs({OptionsClass:hs,nameKey:"rules.convert-spaces-to-tabs.tabsize.name",descriptionKey:"rules.convert-spaces-to-tabs.tabsize.description",optionsKey:"tabsize"})]}};Xn=A([b.register],Xn);var fs=class{constructor(){this.style="consistent"}},er=class extends b{constructor(){super({nameKey:"rules.emphasis-style.name",descriptionKey:"rules.emphasis-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.math,f.inlineMath]})}get OptionsClass(){return fs}apply(t,i){return Pa(t,i.style,"emphasis")}get exampleBuilders(){return[new y({description:"Emphasis indicators should use underscores when style is set to 'underscore'",before:p` # Emphasis Cases ${""} *Test emphasis* @@ -416,7 +424,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i This is ___nested emphasis_ and ending bold__ ${""} __Test bold__ - `,options:{style:"consistent"}})]}get optionBuilders(){return[new ne({OptionsClass:is,nameKey:"rules.emphasis-style.style.name",descriptionKey:"rules.emphasis-style.style.description",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of emphasis is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure * is the emphasis indicator"},{value:"underscore",description:"Makes sure _ is the emphasis indicator"}]})]}};Wn=T([b.register],Wn);var Yo=class{},Vn=class extends b{constructor(){super({nameKey:"rules.empty-line-around-blockquotes.name",descriptionKey:"rules.empty-line-around-blockquotes.description",type:"Spacing"})}get OptionsClass(){return Yo}apply(t,i){return ru(t)}get exampleBuilders(){return[new y({description:"Blockquotes that start a document do not get an empty line before them.",before:p` + `,options:{style:"consistent"}})]}get optionBuilders(){return[new ne({OptionsClass:fs,nameKey:"rules.emphasis-style.style.name",descriptionKey:"rules.emphasis-style.style.description",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of emphasis is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure * is the emphasis indicator"},{value:"underscore",description:"Makes sure _ is the emphasis indicator"}]})]}};er=A([b.register],er);var cl=class{},ir=class extends b{constructor(){super({nameKey:"rules.empty-line-around-blockquotes.name",descriptionKey:"rules.empty-line-around-blockquotes.description",type:"Spacing"})}get OptionsClass(){return cl}apply(t,i){return Su(t)}get exampleBuilders(){return[new y({description:"Blockquotes that start a document do not get an empty line before them.",before:p` > Quote content here > quote content continued # Title here @@ -462,7 +470,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i ${""} > > Quote content here > > quote content continued - `})]}get optionBuilders(){return[]}};Vn=T([b.register],Vn);var Wo=class{},Un=class extends b{constructor(){super({nameKey:"rules.empty-line-around-code-fences.name",descriptionKey:"rules.empty-line-around-code-fences.description",type:"Spacing"})}get OptionsClass(){return Wo}apply(t,i){return tu(t)}get exampleBuilders(){return[new y({description:"Fenced code blocks that start a document do not get an empty line before them.",before:p` + `})]}get optionBuilders(){return[]}};ir=A([b.register],ir);var dl=class{},tr=class extends b{constructor(){super({nameKey:"rules.empty-line-around-code-fences.name",descriptionKey:"rules.empty-line-around-code-fences.description",type:"Spacing"})}get OptionsClass(){return dl}apply(t,i){return ku(t)}get exampleBuilders(){return[new y({description:"Fenced code blocks that start a document do not get an empty line before them.",before:p` \`\`\` js var temp = 'text'; // this is a code block @@ -538,7 +546,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i \`\`\`\` ${""} \`\`\` - `})]}get optionBuilders(){return[]}};Un=T([b.register],Un);var ts=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};T([b.noSettingControl()],ts.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var Gn=class extends b{constructor(){super({nameKey:"rules.empty-line-around-math-blocks.name",descriptionKey:"rules.empty-line-around-math-blocks.description",type:"Spacing",ruleIgnoreTypes:[f.yaml,f.code]})}get OptionsClass(){return ts}apply(t,i){return nu(t,i.minimumNumberOfDollarSignsToBeAMathBlock)}get exampleBuilders(){return[new y({description:"Math blocks that start a document do not get an empty line before them.",before:p` + `})]}get optionBuilders(){return[]}};tr=A([b.register],tr);var ys=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};A([b.noSettingControl()],ys.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var nr=class extends b{constructor(){super({nameKey:"rules.empty-line-around-math-blocks.name",descriptionKey:"rules.empty-line-around-math-blocks.description",type:"Spacing",ruleIgnoreTypes:[f.yaml,f.code]})}get OptionsClass(){return ys}apply(t,i){return zu(t,i.minimumNumberOfDollarSignsToBeAMathBlock)}get exampleBuilders(){return[new y({description:"Math blocks that start a document do not get an empty line before them.",before:p` $$ \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} $$ @@ -607,7 +615,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i > > $$ > > \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} > > $$ - `})]}get optionBuilders(){return[]}};Gn=T([b.register],Gn);var Vo=class{},Qn=class extends b{constructor(){super({nameKey:"rules.empty-line-around-tables.name",descriptionKey:"rules.empty-line-around-tables.description",type:"Spacing",ruleIgnoreTypes:[f.yaml,f.code,f.math,f.inlineMath,f.wikiLink,f.link]})}get OptionsClass(){return Vo}apply(t,i){return ku(t)}get exampleBuilders(){return[new y({description:"Tables that start a document do not get an empty line before them.",before:p` + `})]}get optionBuilders(){return[]}};nr=A([b.register],nr);var ul=class{},rr=class extends b{constructor(){super({nameKey:"rules.empty-line-around-tables.name",descriptionKey:"rules.empty-line-around-tables.description",type:"Spacing",ruleIgnoreTypes:[f.yaml,f.code,f.math,f.inlineMath,f.wikiLink,f.link]})}get OptionsClass(){return ul}apply(t,i){return $u(t)}get exampleBuilders(){return[new y({description:"Tables that start a document do not get an empty line before them.",before:p` | Column 1 | Column 2 | |----------|----------| | foo | bar | @@ -709,8 +717,8 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i > > | foo | bar | blob | > > | baz | qux | trust | > > | quux | quuz | glob | - `})]}get optionBuilders(){return[]}};Qn=T([b.register],Qn);var Zn=class{constructor(){this.defaultEscapeCharacter='"';this.tryToEscapeSingleLineArrays=!1}};T([b.noSettingControl()],Zn.prototype,"defaultEscapeCharacter",2);var pt=class extends b{constructor(){super({nameKey:"rules.escape-yaml-special-characters.name",descriptionKey:"rules.escape-yaml-special-characters.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return Zn}apply(t,i){return Te(t,n=>{let r=n.split(` -`),a=r.length;if(a<1)return n;for(let s=0;s=o.length,c=o.startsWith("-"),u=c&&o.length<2;if(d&&u)continue;let m=1;if(!c)m+=l;else if(l!==-1&&s+1{let r=n.split(` +`),a=r.length;if(a<1)return n;for(let s=0;s=o.length,c=o.startsWith("-"),u=c&&o.length<2;if(d&&u)continue;let m=1;if(!c)m+=l;else if(l!==-1&&s+1{for(let r of i.forceYamlEscape){let a=Ee(n,r);if(a!=null){if(a.includes(` -`)||a.startsWith(" [")||ja(a))continue;a=xi(a,i.defaultEscapeCharacter,!0),n=Ae(n,r," "+a)}}return n})}get exampleBuilders(){return[new y({description:"YAML without anything to escape",before:p` + `})]}get optionBuilders(){return[]}};or=A([b.register],or);var lr=class{constructor(){this.defaultEscapeCharacter='"';this.forceYamlEscape=[]}};A([b.noSettingControl()],lr.prototype,"defaultEscapeCharacter",2);var vt=class extends b{constructor(){super({nameKey:"rules.force-yaml-escape.name",descriptionKey:"rules.force-yaml-escape.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return lr}apply(t,i){return Ae(t,n=>{for(let r of i.forceYamlEscape){let a=Ce(n,r);if(a!=null){if(a.includes(` +`)||a.startsWith(" [")||tn(a))continue;a=li(a,i.defaultEscapeCharacter,!0),n=Le(n,r," "+a)}}return n})}get exampleBuilders(){return[new y({description:"YAML without anything to escape",before:p` --- key: value otherKey: [] @@ -820,7 +828,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i key: value otherKey: [] --- - `}),new y({description:"Force YAML keys to be escaped with double quotes where not already escaped with `Force Yaml Escape on Keys = 'key'\\n'title'\\n'bool'`",before:p` + `}),new y({description:"Force YAML keys to be escaped with double quotes where not already escaped with `Force YAML Escape on Keys = 'key'\\n'title'\\n'bool'`",before:p` --- key: 'Already escaped value' title: This is a title @@ -828,7 +836,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i unaffected: value --- ${""} - _Note that the force Yaml key option should not be used with arrays._ + _Note that the force YAML key option should not be used with arrays._ `,after:p` --- key: 'Already escaped value' @@ -837,8 +845,8 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i unaffected: value --- ${""} - _Note that the force Yaml key option should not be used with arrays._ - `,options:{forceYamlEscape:["key","title","bool"],defaultEscapeCharacter:'"'}})]}get optionBuilders(){return[new be({OptionsClass:er,nameKey:"rules.force-yaml-escape.force-yaml-escape-keys.name",descriptionKey:"rules.force-yaml-escape.force-yaml-escape-keys.description",optionsKey:"forceYamlEscape"})]}};mt=T([b.register],mt);var Go=class{},gt=class extends b{constructor(){super({nameKey:"rules.format-tags-in-yaml.name",descriptionKey:"rules.format-tags-in-yaml.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return Go}apply(t,i){return Te(t,n=>n.replace(new RegExp(`\\n(${_n}|${Do}):(.*?)(?=\\n(?:[A-Za-z-]+?:|---))`,"s"),function(r){return r.replaceAll("#","")}))}get exampleBuilders(){return[new y({description:"Format Tags in YAML frontmatter",before:p` + _Note that the force YAML key option should not be used with arrays._ + `,options:{forceYamlEscape:["key","title","bool"],defaultEscapeCharacter:'"'}})]}get optionBuilders(){return[new be({OptionsClass:lr,nameKey:"rules.force-yaml-escape.force-yaml-escape-keys.name",descriptionKey:"rules.force-yaml-escape.force-yaml-escape-keys.description",optionsKey:"forceYamlEscape"})]}};vt=A([b.register],vt);var ml=class{},xt=class extends b{constructor(){super({nameKey:"rules.format-tags-in-yaml.name",descriptionKey:"rules.format-tags-in-yaml.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return ml}apply(t,i){return Ae(t,n=>n.replace(new RegExp(`\\n(${Hn}|${tl}):(.*?)(?=\\n(?:[A-Za-z-]+?:|---))`,"s"),function(r){return r.replaceAll("#","")}))}get exampleBuilders(){return[new y({description:"Format Tags in YAML frontmatter",before:p` --- tags: #one #two #three #nested/four/five --- @@ -874,9 +882,9 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i - tag1 - tag2 --- - `})]}get optionBuilders(){return[]}};gt=T([b.register],gt);var Ze=class{constructor(){this.aliasArrayStyle="single-line";this.formatAliasKey=!0;this.tagArrayStyle="single-line";this.formatTagKey=!0;this.defaultArrayStyle="single-line";this.formatArrayKeys=!0;this.forceSingleLineArrayStyle=[];this.forceMultiLineArrayStyle=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};T([b.noSettingControl()],Ze.prototype,"aliasArrayStyle",2),T([b.noSettingControl()],Ze.prototype,"tagArrayStyle",2),T([b.noSettingControl()],Ze.prototype,"defaultEscapeCharacter",2),T([b.noSettingControl()],Ze.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var ir=class extends b{constructor(){super({nameKey:"rules.format-yaml-array.name",descriptionKey:"rules.format-yaml-array.description",type:"YAML"})}get OptionsClass(){return Ze}apply(t,i){return Te(t,n=>{let r=Xe(n.replace(`--- + `})]}get optionBuilders(){return[]}};xt=A([b.register],xt);var Ze=class{constructor(){this.aliasArrayStyle="single-line";this.formatAliasKey=!0;this.tagArrayStyle="single-line";this.formatTagKey=!0;this.defaultArrayStyle="single-line";this.formatArrayKeys=!0;this.forceSingleLineArrayStyle=[];this.forceMultiLineArrayStyle=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};A([b.noSettingControl()],Ze.prototype,"aliasArrayStyle",2),A([b.noSettingControl()],Ze.prototype,"tagArrayStyle",2),A([b.noSettingControl()],Ze.prototype,"defaultEscapeCharacter",2),A([b.noSettingControl()],Ze.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var cr=class extends b{constructor(){super({nameKey:"rules.format-yaml-array.name",descriptionKey:"rules.format-yaml-array.description",type:"YAML"})}get OptionsClass(){return Ze}apply(t,i){return Ae(t,n=>{let r=Mi(n.replace(`--- `,"").replace(` ----`,""));if(!r)return n;for(let a of Fn)if(i.formatAliasKey&&Object.keys(r).includes(a)){n=Ae(n,a,Qe(Na(vi(Ee(n,a))),i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays));break}for(let a of Bn)if(i.formatTagKey&&Object.keys(r).includes(a)){n=Ae(n,a,Qe(Da(vi(Ee(n,a))),i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays));break}if(i.formatArrayKeys){let a=[...Fn,...Bn,...i.forceMultiLineArrayStyle,...i.forceSingleLineArrayStyle];for(let s of Object.keys(r))a.includes(s)||!Array.isArray(r[s])||r[s].length!==0&&typeof r[s][0]=="object"&&r[s][0]!==null||(n=Ae(n,s,Qe(vi(Ee(n,s)),i.defaultArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)))}for(let a of i.forceSingleLineArrayStyle)Object.keys(r).includes(a)&&(n=Ae(n,a,Qe(vi(Ee(n,a)),"single-line",i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)));for(let a of i.forceMultiLineArrayStyle)Object.keys(r).includes(a)&&(n=Ae(n,a,Qe(vi(Ee(n,a)),"multi-line",i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)));return n})}get exampleBuilders(){return[new y({description:"Format tags as a single-line array delimited by spaces and aliases as a multi-line array and format the key `test` to be a single-line array",before:p` +---`,""));if(!r)return n;for(let a of Wn)if(i.formatAliasKey&&Object.keys(r).includes(a)){n=Le(n,a,Qe(es(vi(Ce(n,a))),i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0));break}for(let a of $n)if(i.formatTagKey&&Object.keys(r).includes(a)){n=Le(n,a,Qe(Xa(vi(Ce(n,a))),i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays));break}if(i.formatArrayKeys){let a=[...Wn,...$n,...i.forceMultiLineArrayStyle,...i.forceSingleLineArrayStyle];for(let s of Object.keys(r))a.includes(s)||!Array.isArray(r[s])||r[s].length!==0&&typeof r[s][0]=="object"&&r[s][0]!==null||(n=Le(n,s,Qe(vi(Ce(n,s)),i.defaultArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)))}for(let a of i.forceSingleLineArrayStyle)Object.keys(r).includes(a)&&(n=Le(n,a,Qe(vi(Ce(n,a)),"single-line",i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)));for(let a of i.forceMultiLineArrayStyle)Object.keys(r).includes(a)&&(n=Le(n,a,Qe(vi(Ce(n,a)),"multi-line",i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)));return n})}get exampleBuilders(){return[new y({description:"Format tags as a single-line array delimited by spaces and aliases as a multi-line array and format the key `test` to be a single-line array",before:p` --- tags: - computer @@ -887,9 +895,9 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i ${""} # Notes: ${""} - Nesting yaml arrays may result in unexpected results. + Nesting YAML arrays may result in unexpected results. ${""} - Multi-line arrays will have empty values removed only leaving one if it is completely empty. The same is not true for single-line arrays as that is invalid yaml unless it comes as the last entry in the array. + Multi-line arrays will have empty values removed only leaving one if it is completely empty. The same is not true for single-line arrays as that is invalid YAML unless it comes as the last entry in the array. `,after:p` --- tags: [computer, research] @@ -901,10 +909,10 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i ${""} # Notes: ${""} - Nesting yaml arrays may result in unexpected results. + Nesting YAML arrays may result in unexpected results. ${""} - Multi-line arrays will have empty values removed only leaving one if it is completely empty. The same is not true for single-line arrays as that is invalid yaml unless it comes as the last entry in the array. - `,options:{aliasArrayStyle:"multi-line",forceSingleLineArrayStyle:["test"]}}),new y({description:"Format tags as a single string with space delimiters, ignore aliases, and format regular yaml arrays as single-line arrays",before:p` + Multi-line arrays will have empty values removed only leaving one if it is completely empty. The same is not true for single-line arrays as that is invalid YAML unless it comes as the last entry in the array. + `,options:{aliasArrayStyle:"multi-line",forceSingleLineArrayStyle:["test"]}}),new y({description:"Format tags as a single string with space delimiters, ignore aliases, and format regular YAML arrays as single-line arrays",before:p` --- aliases: Typescript types: @@ -934,7 +942,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i filename: file.md isPublic: true --- - `,options:{formatArrayKeys:!0,defaultArrayStyle:"single-line"}})]}get optionBuilders(){return[new U({OptionsClass:Ze,nameKey:"rules.format-yaml-array.alias-key.name",descriptionKey:"rules.format-yaml-array.alias-key.description",optionsKey:"formatAliasKey"}),new U({OptionsClass:Ze,nameKey:"rules.format-yaml-array.tag-key.name",descriptionKey:"rules.format-yaml-array.tag-key.description",optionsKey:"formatTagKey"}),new ne({OptionsClass:Ze,nameKey:"rules.format-yaml-array.default-array-style.name",descriptionKey:"rules.format-yaml-array.default-array-style.description",optionsKey:"defaultArrayStyle",records:[{value:"multi-line",description:"```key:\\n - value```"},{value:"single-line",description:"```key: [value]```"}]}),new U({OptionsClass:Ze,nameKey:"rules.format-yaml-array.default-array-keys.name",descriptionKey:"rules.format-yaml-array.default-array-keys.description",optionsKey:"formatArrayKeys"}),new be({OptionsClass:Ze,nameKey:"rules.format-yaml-array.force-single-line-array-style.name",descriptionKey:"rules.format-yaml-array.force-single-line-array-style.description",optionsKey:"forceSingleLineArrayStyle"}),new be({OptionsClass:Ze,nameKey:"rules.format-yaml-array.force-multi-line-array-style.name",descriptionKey:"rules.format-yaml-array.force-multi-line-array-style.description",optionsKey:"forceMultiLineArrayStyle"})]}};ir=T([b.register],ir);var as=class{constructor(){this.startAtH2=!1}},tr=class extends b{constructor(){super({nameKey:"rules.header-increment.name",descriptionKey:"rules.header-increment.description",type:"Heading",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return as}apply(t,i){let n=0,r=i.startAtH2?2:1,a=[],s=[0,0,0,0,0,0],o=s.length;return t.replace(ji,(l,d="",c="",u="",m="",g="")=>{let h=c.length;if(h=h<=o?h:o,s[h-1]>=0&&h=v;w--)s[w]=0}if(s[h-1]<=0){let v=n,w=a.length+r;w=w<=o?w:o;for(let z=v;z{let h=c.length;if(h=h<=o?h:o,s[h-1]>=0&&h=v;x--)s[x]=0}if(s[h-1]<=0){let v=n,x=a.length+r;x=x<=o?x:o;for(let w=v;wn.trimStart())}get exampleBuilders(){return[new y({description:"Removes spaces prior to a heading",before:p` + `,options:{bottom:!0,emptyLineAfterYaml:!1}})]}get optionBuilders(){return[new U({OptionsClass:pr,nameKey:"rules.heading-blank-lines.bottom.name",descriptionKey:"rules.heading-blank-lines.bottom.description",optionsKey:"bottom"}),new U({OptionsClass:pr,nameKey:"rules.heading-blank-lines.empty-line-after-yaml.name",descriptionKey:"rules.heading-blank-lines.empty-line-after-yaml.description",optionsKey:"emptyLineAfterYaml"})]}};ur=A([b.register],ur);var gl=class{},mr=class extends b{constructor(){super({nameKey:"rules.headings-start-line.name",descriptionKey:"rules.headings-start-line.description",type:"Heading",ruleIgnoreTypes:[f.code,f.math,f.yaml]})}get OptionsClass(){return gl}apply(t,i){return t.replaceAll(Pi,n=>n.trimStart())}get exampleBuilders(){return[new y({description:"Removes spaces prior to a heading",before:p` ${""} ## Other heading preceded by 2 spaces ## _Note that if the spacing is enough for the header to be considered to be part of a codeblock it will not be affected by this rule._ `,after:p` @@ -1075,7 +1082,7 @@ $5`)),t}get exampleBuilders(){return[new y({description:"Headings should be surr `,after:p` ${""} #test # Heading & - `})]}get optionBuilders(){return[]}};ar=T([b.register],ar);var ss=class{constructor(){this.textToInsert=["aliases: ","tags: "]}},sr=class extends b{constructor(){super({nameKey:"rules.insert-yaml-attributes.name",descriptionKey:"rules.insert-yaml-attributes.description",type:"YAML"})}get OptionsClass(){return ss}apply(t,i){return t=bi(t),Te(t,n=>{let r=i.textToInsert.reverse(),a=Xe(n.match(Se)[1]);for(let s of r){let o=s.split(":")[0];Object.prototype.hasOwnProperty.call(a,o)||(n=n.replace(/^---\n/,Ke(`--- + `})]}get optionBuilders(){return[]}};mr=A([b.register],mr);var ws=class{constructor(){this.textToInsert=["aliases: ","tags: "]}},gr=class extends b{constructor(){super({nameKey:"rules.insert-yaml-attributes.name",descriptionKey:"rules.insert-yaml-attributes.description",type:"YAML"})}get OptionsClass(){return ws}apply(t,i){return t=bi(t),Ae(t,n=>{let r=i.textToInsert.reverse(),a=Mi(n.match(Ge)[1]);for(let s of r){let o=s.split(":")[0];Object.prototype.hasOwnProperty.call(a,o)||(n=n.replace(/^---\n/,Ke(`--- ${s} `)))}return n})}get exampleBuilders(){return[new y({description:"Insert static lines into YAML frontmatter. Text to insert: `aliases:\ntags: doc\nanimal: dog`",before:p` --- @@ -1087,7 +1094,7 @@ ${s} tags: doc animal: cat --- - `,options:{textToInsert:["aliases:","tags: doc","animal: dog"]}})]}get optionBuilders(){return[new be({OptionsClass:ss,nameKey:"rules.insert-yaml-attributes.text-to-insert.name",descriptionKey:"rules.insert-yaml-attributes.text-to-insert.description",optionsKey:"textToInsert"})]}};sr=T([b.register],sr);var Zo=class{},or=class extends b{constructor(){super({nameKey:"rules.line-break-at-document-end.name",descriptionKey:"rules.line-break-at-document-end.description",type:"Spacing"})}get OptionsClass(){return Zo}apply(t,i){return t=t.replace(/\n+$/g,""),t+=` + `,options:{textToInsert:["aliases:","tags: doc","animal: dog"]}})]}get optionBuilders(){return[new be({OptionsClass:ws,nameKey:"rules.insert-yaml-attributes.text-to-insert.name",descriptionKey:"rules.insert-yaml-attributes.text-to-insert.description",optionsKey:"textToInsert"})]}};gr=A([b.register],gr);var hl=class{},hr=class extends b{constructor(){super({nameKey:"rules.line-break-at-document-end.name",descriptionKey:"rules.line-break-at-document-end.description",type:"Spacing"})}get OptionsClass(){return hl}apply(t,i){return t=t.replace(/\n+$/g,""),t+=` `,t}get exampleBuilders(){return[new y({description:"Appending a line break to the end of the document.",before:p` Lorem ipsum dolor sit amet, consectetur adipiscing elit. `,after:p` @@ -1101,7 +1108,7 @@ ${s} `,after:p` Lorem ipsum dolor sit amet, consectetur adipiscing elit. ${""} - `})]}get optionBuilders(){return[]}};or=T([b.register],or);var Jo=class{},lr=class extends b{constructor(){super({nameKey:"rules.move-footnotes-to-the-bottom.name",descriptionKey:"rules.move-footnotes-to-the-bottom.description",type:"Footnote",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml]})}get OptionsClass(){return Jo}apply(t,i){return Ud(t)}get exampleBuilders(){return[new y({description:"Moving footnotes to the bottom",before:p` + `})]}get optionBuilders(){return[]}};hr=A([b.register],hr);var fl=class{},fr=class extends b{constructor(){super({nameKey:"rules.move-footnotes-to-the-bottom.name",descriptionKey:"rules.move-footnotes-to-the-bottom.description",type:"Footnote",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml]})}get OptionsClass(){return fl}apply(t,i){return gu(t)}get exampleBuilders(){return[new y({description:"Moving footnotes to the bottom",before:p` Lorem ipsum, consectetur adipiscing elit. [^1] Donec dictum turpis quis ipsum pellentesque. ${""} [^1]: first footnote @@ -1118,7 +1125,7 @@ ${s} ${""} [^1]: first footnote [^2]: second footnote - `})]}get optionBuilders(){return[]}};lr=T([b.register],lr);var os=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};T([b.noSettingControl()],os.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var cr=class extends b{constructor(){super({nameKey:"rules.move-math-block-indicators-to-their-own-line.name",descriptionKey:"rules.move-math-block-indicators-to-their-own-line.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.inlineCode]})}get OptionsClass(){return os}apply(t,i){return ou(t,i.minimumNumberOfDollarSignsToBeAMathBlock)}get exampleBuilders(){return[new y({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 2",before:p` + `})]}get optionBuilders(){return[]}};fr=A([b.register],fr);var ks=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};A([b.noSettingControl()],ks.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var wt=class extends b{constructor(){super({nameKey:"rules.move-math-block-indicators-to-their-own-line.name",descriptionKey:"rules.move-math-block-indicators-to-their-own-line.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.inlineCode],hasSpecialExecutionOrder:!0})}get OptionsClass(){return ks}apply(t,i){return Tu(t,i.minimumNumberOfDollarSignsToBeAMathBlock)}get exampleBuilders(){return[new y({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 2",before:p` This is left alone: $$ \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} @@ -1148,9 +1155,9 @@ ${s} $$ \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} $$ - `})]}get optionBuilders(){return[]}};cr=T([b.register],cr);var Yi=class{constructor(){this.tagArrayStyle="single-line";this.howToHandleExistingTags="Nothing";this.tagsToIgnore=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};T([b.noSettingControl()],Yi.prototype,"tagArrayStyle",2),T([b.noSettingControl()],Yi.prototype,"defaultEscapeCharacter",2),T([b.noSettingControl()],Yi.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var dr=class extends b{constructor(){super({nameKey:"rules.move-tags-to-yaml.name",descriptionKey:"rules.move-tags-to-yaml.description",type:"YAML",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.html,f.wikiLink,f.link]})}get OptionsClass(){return Yi}apply(t,i){let n;return qe([f.yaml],t,r=>(n=zu(r),r)),n.length===0||(t=bi(t),t=Te(t,r=>{r=r.replace(`--- -`,"").replace("---","");let a=[],s=_n;for(let d of Bn){let c=Ee(r,d);if(c!=null){a=Da(vi(c)),s=d;break}}let o=new Set;if(typeof a=="string")o.add(a),a=[a];else if(a!=null)for(let d of a)o.add(d);else a=[];for(let d of n){let c=d.trim().substring(1);!o.has(c)&&!i.tagsToIgnore.includes(c)&&(o.add(c),a.push(c))}return`--- -${Ae(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays))}---`}),t=qe([f.yaml],t,r=>(i.howToHandleExistingTags!=="Nothing"&&(r=r.replace(qn,a=>{let s=a.indexOf("#"),o=a.substring(s+1);return i.tagsToIgnore.includes(o)?a:i.howToHandleExistingTags==="Remove hashtag"?a.substring(0,s)+o:""})),r)),t=t.replace(/(\n---)( |\t)+/,"$1")),t}get exampleBuilders(){return[new y({description:"Move tags from body to Yaml with `Tags to ignore = 'ignored-tag'`",before:p` + `})]}get optionBuilders(){return[]}};wt=A([b.register],wt);var Vi=class{constructor(){this.tagArrayStyle="single-line";this.howToHandleExistingTags="Nothing";this.tagsToIgnore=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};A([b.noSettingControl()],Vi.prototype,"tagArrayStyle",2),A([b.noSettingControl()],Vi.prototype,"defaultEscapeCharacter",2),A([b.noSettingControl()],Vi.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var yr=class extends b{constructor(){super({nameKey:"rules.move-tags-to-yaml.name",descriptionKey:"rules.move-tags-to-yaml.description",type:"YAML",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.html,f.wikiLink,f.link]})}get OptionsClass(){return Vi}apply(t,i){let n;return we([f.yaml],t,r=>(n=Wu(r),r)),n.length===0||(t=bi(t),t=Ae(t,r=>{r=r.replace(`--- +`,"").replace("---","");let a=[],s=Hn;for(let d of $n){let c=Ce(r,d);if(c!=null){a=Xa(vi(c)),s=d;break}}let o=new Set;if(typeof a=="string")o.add(a),a=[a];else if(a!=null)for(let d of a)o.add(d);else a=[];for(let d of n){let c=d.trim().substring(1);!o.has(c)&&!i.tagsToIgnore.includes(c)&&(o.add(c),a.push(c))}return`--- +${Le(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays))}---`}),t=we([f.yaml],t,r=>(i.howToHandleExistingTags!=="Nothing"&&(r=r.replace(jn,a=>{let s=a.indexOf("#"),o=a.substring(s+1);return i.tagsToIgnore.includes(o)?a:i.howToHandleExistingTags==="Remove hashtag"?a.substring(0,s)+o:""})),r)),t=t.replace(/(\n---)( |\t)+/,"$1")),t}get exampleBuilders(){return[new y({description:"Move tags from body to YAML with `Tags to ignore = 'ignored-tag'`",before:p` Text has to do with #test and #markdown ${""} #test content here @@ -1211,7 +1218,7 @@ ${Ae(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape tags: [test, tag2, tags, warning] --- This document will have removed and spacing around tags is left alone except for the space prior to the hashtag - `,options:{howToHandleExistingTags:"Remove whole tag"}})]}get optionBuilders(){return[new ne({OptionsClass:Yi,nameKey:"rules.move-tags-to-yaml.how-to-handle-existing-tags.name",descriptionKey:"rules.move-tags-to-yaml.how-to-handle-existing-tags.description",optionsKey:"howToHandleExistingTags",records:[{value:"Nothing",description:"Leaves tags in the body of the file alone"},{value:"Remove hashtag",description:"Removes `#` from tags in content body after moving them to the YAML frontmatter"},{value:"Remove whole tag",description:"Removes the whole tag in content body after moving them to the YAML frontmatter. _Note that this removes the first space prior to the tag as well_"}]}),new be({OptionsClass:Yi,nameKey:"rules.move-tags-to-yaml.tags-to-ignore.name",descriptionKey:"rules.move-tags-to-yaml.tags-to-ignore.description",optionsKey:"tagsToIgnore"})]}};dr=T([b.register],dr);var Xo=class{},qu="'\"\u2018\u2019\u201C\u201D`[]",ur=class extends b{constructor(){super({nameKey:"rules.no-bare-urls.name",descriptionKey:"rules.no-bare-urls.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.image,f.inlineCode,f.anchorTag]})}get OptionsClass(){return Xo}apply(t,i){let n=t.match(Wt);if(!n)return t;let r=0,a=n.length;for(let s=0;s=t.length?void 0:t.charAt(d);if(c!=null&&qu.includes(c)&&u!=null&&qu.includes(u)){r=l+o.length;continue}if(c!=null&&c==="<"&&u!=null&&u===">"){let m=l-1;for(;m>0&&t.charAt(m-1)==="<";)m--;let g=d;for(;g";)g++;t=fe(t,m,g+1,"<"+o+">"),r=l+o.length;continue}t=fe(t,l,l+o.length,"<"+o+">"),r=l+o.length+2}return t}get exampleBuilders(){return[new y({description:"Make sure that links are inside of angle brackets when not in single quotes('), double quotes(\"), or backticks(`)",before:p` + `,options:{howToHandleExistingTags:"Remove whole tag"}})]}get optionBuilders(){return[new ne({OptionsClass:Vi,nameKey:"rules.move-tags-to-yaml.how-to-handle-existing-tags.name",descriptionKey:"rules.move-tags-to-yaml.how-to-handle-existing-tags.description",optionsKey:"howToHandleExistingTags",records:[{value:"Nothing",description:"Leaves tags in the body of the file alone"},{value:"Remove hashtag",description:"Removes `#` from tags in content body after moving them to the YAML frontmatter"},{value:"Remove whole tag",description:"Removes the whole tag in content body after moving them to the YAML frontmatter. _Note that this removes the first space prior to the tag as well_"}]}),new be({OptionsClass:Vi,nameKey:"rules.move-tags-to-yaml.tags-to-ignore.name",descriptionKey:"rules.move-tags-to-yaml.tags-to-ignore.description",optionsKey:"tagsToIgnore"})]}};yr=A([b.register],yr);var Ss=class{constructor(){this.noBareURIs=!1}},zs="'\"\u2018\u2019\u201C\u201D`[]",vb=["http","ftp","https","smtp"],br=class extends b{constructor(){super({nameKey:"rules.no-bare-urls.name",descriptionKey:"rules.no-bare-urls.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.image,f.inlineCode,f.anchorTag,f.html]})}get OptionsClass(){return Ss}apply(t,i){let n=t.match(Zt);if(n&&(t=this.handleMatches(t,n,!1)),i.noBareURIs){let r=t.match(_u);r&&(t=this.handleMatches(t,r,!0))}return t}handleMatches(t,i,n){let r=0,a=i.length;for(let s=0;s"&&(o=o.substring(0,o.length-1),d--);let c=l===0?void 0:t.charAt(l-1),u=d>=t.length?void 0:t.charAt(d);if(this.skipMatch(c,u,o,n)){r=l+o.length;continue}if(c!=null&&c==="<"&&u!=null&&u===">"){let m=l-1;for(;m>0&&t.charAt(m-1)==="<";)m--;let g=d;for(;g";)g++;t=fe(t,m,g+1,"<"+o+">"),r=l+o.length;continue}t=fe(t,l,l+o.length,"<"+o+">"),r=l+o.length+2}return t}skipMatch(t,i,n,r){let a=t!=null&&zs.includes(t)||zs.includes(n.charAt(0)),s=i!=null&&zs.includes(i)||zs.includes(n.charAt(n.length-1));return a&&s?!0:r?vb.includes(n.substring(0,n.indexOf(":"))):!1}get exampleBuilders(){return[new y({description:"Make sure that links are inside of angle brackets when not in single quotes('), double quotes(\"), or backticks(`)",before:p` https://github.com braces around url should stay the same: [https://github.com] backticks around url should stay the same: \`https://github.com\` @@ -1249,7 +1256,11 @@ ${Ae(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape - `})]}get optionBuilders(){return[]}};ur=T([b.register],ur);var mr=class{constructor(){this.numberStyle="ascending";this.listEndStyle="."}},pr=class extends b{constructor(){super({nameKey:"rules.ordered-list-style.name",descriptionKey:"rules.ordered-list-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.tag]})}get OptionsClass(){return mr}apply(t,i){return au(t,i.numberStyle,i.listEndStyle)}get exampleBuilders(){return[new y({description:"Ordered lists have list items set to ascending numerical order when Number Style is `ascending`.",before:p` + `}),new y({description:"Puts angle brackets around URIs when `No Bare URIs` is enabled",before:p` + obsidian://show-plugin?id=cycle-in-sidebar + `,after:p` + + `,options:{noBareURIs:!0}})]}get optionBuilders(){return[new U({OptionsClass:Ss,nameKey:"rules.no-bare-urls.no-bare-uris.name",descriptionKey:"rules.no-bare-urls.no-bare-uris.description",optionsKey:"noBareURIs"})]}};br=A([b.register],br);var xr=class{constructor(){this.numberStyle="ascending";this.listEndStyle="."}},vr=class extends b{constructor(){super({nameKey:"rules.ordered-list-style.name",descriptionKey:"rules.ordered-list-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.tag]})}get OptionsClass(){return xr}apply(t,i){return Au(t,i.numberStyle,i.listEndStyle)}get exampleBuilders(){return[new y({description:"Ordered lists have list items set to ascending numerical order when Number Style is `ascending`.",before:p` 1. Item 1 2. Item 2 4. Item 3 @@ -1321,7 +1332,7 @@ ${Ae(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape 1) Subitem 2 1) Subitem 3 1) Item 3 - `,options:{listEndStyle:")",numberStyle:"lazy"}})]}get optionBuilders(){return[new ne({OptionsClass:mr,nameKey:"rules.ordered-list-style.number-style.name",descriptionKey:"rules.ordered-list-style.number-style.description",optionsKey:"numberStyle",records:[{value:"ascending",description:"Makes sure ordered list items are ascending (i.e. 1, 2, 3, etc.)"},{value:"lazy",description:"Makes sure ordered list item indicators all are the number 1"}]}),new ne({OptionsClass:mr,nameKey:"rules.ordered-list-style.list-end-style.name",descriptionKey:"rules.ordered-list-style.list-end-style.description",optionsKey:"listEndStyle",records:[{value:".",description:"Makes sure ordered list items indicators end in '.' (i.e `1.`)"},{value:")",description:"Makes sure ordered list item indicators end in ')' (i.e. `1)`)"}]})]}};pr=T([b.register],pr);var el=class{},gr=class extends b{constructor(){super({nameKey:"rules.paragraph-blank-lines.name",descriptionKey:"rules.paragraph-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[f.obsidianMultiLineComments,f.yaml,f.table]})}get OptionsClass(){return el}apply(t,i){return Jd(t)}get exampleBuilders(){return[new y({description:"Paragraphs should be surrounded by blank lines",before:p` + `,options:{listEndStyle:")",numberStyle:"lazy"}})]}get optionBuilders(){return[new ne({OptionsClass:xr,nameKey:"rules.ordered-list-style.number-style.name",descriptionKey:"rules.ordered-list-style.number-style.description",optionsKey:"numberStyle",records:[{value:"ascending",description:"Makes sure ordered list items are ascending (i.e. 1, 2, 3, etc.)"},{value:"lazy",description:"Makes sure ordered list item indicators all are the number 1"}]}),new ne({OptionsClass:xr,nameKey:"rules.ordered-list-style.list-end-style.name",descriptionKey:"rules.ordered-list-style.list-end-style.description",optionsKey:"listEndStyle",records:[{value:".",description:"Makes sure ordered list items indicators end in '.' (i.e `1.`)"},{value:")",description:"Makes sure ordered list item indicators end in ')' (i.e. `1)`)"}]})]}};vr=A([b.register],vr);var yl=class{},wr=class extends b{constructor(){super({nameKey:"rules.paragraph-blank-lines.name",descriptionKey:"rules.paragraph-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[f.obsidianMultiLineComments,f.yaml,f.table]})}get OptionsClass(){return yl}apply(t,i){return bu(t)}get exampleBuilders(){return[new y({description:"Paragraphs should be surrounded by blank lines",before:p` # H1 Newlines are inserted. A paragraph is a line that starts with a letter. @@ -1350,51 +1361,69 @@ ${Ae(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape A new paragraph ${""} # H2 - `})]}get optionBuilders(){return[]}};gr=T([b.register],gr);var ls=class{};T([b.noSettingControl()],ls.prototype,"lineContent",2);var ht=class extends b{constructor(){super({nameKey:"rules.prevent-double-checklist-indicator-on-paste.name",descriptionKey:"rules.prevent-double-checklist-indicator-on-paste.description",type:"Paste"})}get OptionsClass(){return ls}apply(t,i){let n=new RegExp(`^${Yt}- \\[[ x]] `),r=/^\s*- \[[ x]] /,a=n.test(i.lineContent),s=r.test(t);return!a||!s?t:t.replace(r,"")}get exampleBuilders(){return[new y({description:"Line being pasted is left alone when current line has no checklist indicator in it: `Regular text here`",before:p` + `})]}get optionBuilders(){return[]}};wr=A([b.register],wr);var kr=class{};A([b.noSettingControl()],kr.prototype,"lineContent",2),A([b.noSettingControl()],kr.prototype,"selectedText",2);var kt=class extends b{constructor(){super({nameKey:"rules.prevent-double-checklist-indicator-on-paste.name",descriptionKey:"rules.prevent-double-checklist-indicator-on-paste.description",type:"Paste"})}get OptionsClass(){return kr}apply(t,i){let n=Pu.test(i.lineContent),r=Ga.test(t),a=Ga.test(i.selectedText);return!n||!r||a?t:t.replace(Ga,"")}get exampleBuilders(){return[new y({description:"Line being pasted is left alone when current line has no checklist indicator in it: `Regular text here`",before:p` - [ ] Checklist item being pasted `,after:p` - [ ] Checklist item being pasted - `,options:{lineContent:"Regular text here"}}),new y({description:"Line being pasted into a blockquote without a checklist indicator is left alone when it lacks a checklist indicator: `> > `",before:p` + `,options:{lineContent:"Regular text here",selectedText:""}}),new y({description:"Line being pasted into a blockquote without a checklist indicator is left alone when it lacks a checklist indicator: `> > `",before:p` - [ ] Checklist item contents here More content here `,after:p` - [ ] Checklist item contents here More content here - `,options:{lineContent:"> > "}}),new y({description:"Line being pasted into a blockquote with a checklist indicator is has its checklist indicator removed when current line is: `> - [x] `",before:p` + `,options:{lineContent:"> > ",selectedText:""}}),new y({description:"Line being pasted into a blockquote with a checklist indicator has its checklist indicator removed when current line is: `> - [x] `",before:p` - [ ] Checklist item contents here More content here `,after:p` Checklist item contents here More content here - `,options:{lineContent:"> - [x] "}}),new y({description:"Line being pasted with a checklist indicator is has its checklist indicator removed when current line is: `- [ ] `",before:p` + `,options:{lineContent:"> - [x] ",selectedText:""}}),new y({description:"Line being pasted with a checklist indicator has its checklist indicator removed when current line is: `- [ ] `",before:p` - [x] Checklist item 1 - [ ] Checklist item 2 `,after:p` Checklist item 1 - [ ] Checklist item 2 - `,options:{lineContent:"- [ ] "}})]}get optionBuilders(){return[]}};ht=T([b.register],ht);var cs=class{};T([b.noSettingControl()],cs.prototype,"lineContent",2);var ft=class extends b{constructor(){super({nameKey:"rules.prevent-double-list-item-indicator-on-paste.name",descriptionKey:"rules.prevent-double-list-item-indicator-on-paste.description",type:"Paste"})}get OptionsClass(){return cs}apply(t,i){let n=new RegExp(`^${Yt}[*+-] `),r=/^\s*[*+-] /,a=n.test(i.lineContent),s=r.test(t);return!a||!s?t:t.replace(r,"")}get exampleBuilders(){return[new y({description:"Line being pasted is left alone when current line has no list indicator in it: `Regular text here`",before:p` + `,options:{lineContent:"- [ ] ",selectedText:""}}),new y({description:"Line being pasted as a checklist indicator has its checklist indicator removed when current line is: `- [!] `",before:p` + - [x] Checklist item 1 + - [ ] Checklist item 2 + `,after:p` + Checklist item 1 + - [ ] Checklist item 2 + `,options:{lineContent:"- [!] ",selectedText:""}}),new y({description:"When pasting a checklist and the selected text starts with a checklist, the text to paste should still start with a checklist",before:p` + - [x] Checklist item 1 + - [ ] Checklist item 2 + `,after:p` + - [x] Checklist item 1 + - [ ] Checklist item 2 + `,options:{lineContent:"- [!] Some text here",selectedText:"- [!] Some text here"}})]}get optionBuilders(){return[]}};kt=A([b.register],kt);var zr=class{};A([b.noSettingControl()],zr.prototype,"lineContent",2),A([b.noSettingControl()],zr.prototype,"selectedText",2);var zt=class extends b{constructor(){super({nameKey:"rules.prevent-double-list-item-indicator-on-paste.name",descriptionKey:"rules.prevent-double-list-item-indicator-on-paste.description",type:"Paste"})}get OptionsClass(){return zr}apply(t,i){let n=new RegExp(`^${Yn}[*+-] `),r=/^\s*[*+-] /,a=n.test(i.lineContent),s=n.test(i.selectedText),o=r.test(t);return s||!a||!o?t:t.replace(r,"")}get exampleBuilders(){return[new y({description:"Line being pasted is left alone when current line has no list indicator in it: `Regular text here`",before:p` - List item being pasted `,after:p` - List item being pasted - `,options:{lineContent:"Regular text here"}}),new y({description:"Line being pasted into a blockquote without a list indicator is left alone when it lacks a list indicator: `> > `",before:p` + `,options:{lineContent:"Regular text here",selectedText:""}}),new y({description:"Line being pasted into a blockquote without a list indicator is left alone when it lacks a list indicator: `> > `",before:p` * List item contents here More content here `,after:p` * List item contents here More content here - `,options:{lineContent:"> > "}}),new y({description:"Line being pasted into a blockquote with a list indicator is has its list indicator removed when current line is: `> * `",before:p` + `,options:{lineContent:"> > ",selectedText:""}}),new y({description:"Line being pasted into a blockquote with a list indicator is has its list indicator removed when current line is: `> * `",before:p` + List item contents here More content here `,after:p` List item contents here More content here - `,options:{lineContent:"> * "}}),new y({description:"Line being pasted with a list indicator is has its list indicator removed when current line is: `+ `",before:p` + `,options:{lineContent:"> * ",selectedText:""}}),new y({description:"Line being pasted with a list indicator is has its list indicator removed when current line is: `+ `",before:p` - List item 1 - List item 2 `,after:p` List item 1 - List item 2 - `,options:{lineContent:"+ "}})]}get optionBuilders(){return[]}};ft=T([b.register],ft);var il=class{},yt=class extends b{constructor(){super({nameKey:"rules.proper-ellipsis-on-paste.name",descriptionKey:"rules.proper-ellipsis-on-paste.description",type:"Paste"})}get OptionsClass(){return il}apply(t,i){return t.replaceAll(Ba,"\u2026")}get exampleBuilders(){return[new y({description:"Replacing three consecutive dots with an ellipsis even if spaces are present",before:p` + `,options:{lineContent:"+ ",selectedText:""}}),new y({description:"When pasting a list item and the selected text starts with a list item indicator, the text to paste should still start with a list item indicator",before:p` + - List item 1 + - List item 2 + `,after:p` + - List item 1 + - List item 2 + `,options:{lineContent:"+ ",selectedText:"+ "}})]}get optionBuilders(){return[]}};zt=A([b.register],zt);var bl=class{},St=class extends b{constructor(){super({nameKey:"rules.proper-ellipsis-on-paste.name",descriptionKey:"rules.proper-ellipsis-on-paste.description",type:"Paste"})}get OptionsClass(){return bl}apply(t,i){return t.replaceAll(Ua,"\u2026")}get exampleBuilders(){return[new y({description:"Replacing three consecutive dots with an ellipsis even if spaces are present",before:p` Lorem (...) Impsum. Lorem (. ..) Impsum. Lorem (. . .) Impsum. @@ -1402,11 +1431,11 @@ ${Ae(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape Lorem (…) Impsum. Lorem (…) Impsum. Lorem (…) Impsum. - `})]}get optionBuilders(){return[]}};yt=T([b.register],yt);var tl=class{},hr=class extends b{constructor(){super({nameKey:"rules.proper-ellipsis.name",descriptionKey:"rules.proper-ellipsis.description",type:"Content"})}get OptionsClass(){return tl}apply(t,i){return qe([f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.image],t,n=>n.replaceAll(Ba,"\u2026"))}get exampleBuilders(){return[new y({description:"Replacing three consecutive dots with an ellipsis.",before:p` + `})]}get optionBuilders(){return[]}};St=A([b.register],St);var vl=class{},Sr=class extends b{constructor(){super({nameKey:"rules.proper-ellipsis.name",descriptionKey:"rules.proper-ellipsis.description",type:"Content"})}get OptionsClass(){return vl}apply(t,i){return we([f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.image],t,n=>n.replaceAll(Ua,"\u2026"))}get exampleBuilders(){return[new y({description:"Replacing three consecutive dots with an ellipsis.",before:p` Lorem (...) Impsum. `,after:p` Lorem (…) Impsum. - `})]}get optionBuilders(){return[]}};hr=T([b.register],hr);var Gy=["a'ight","ain't","amn't","'n'","aren't","'bout","boy's","can't","cap'n","'cause","'cept","could've","couldn't","couldn't've","daren't","daresn't","dasn't","didn't","doesn't","don't","d'ye","d'ya","e'en","e'er","'em","everybody's","everyone's","everything's","fo'c'sle","'gainst","g'day","girl's","giv'n","gi'z","gon't","guy's","hadn't","had've","hasn't","haven't","he'd","he'll","he's","here's","how'd","how'll","how're","how's","I'd","I'd've","I'd'nt","I'd'nt've","If'n","I'll","I'm","I'm'o","I've","isn't","it'd","it'll","it's","let's","loven't","ma'am","mayn't","may've","mightn't","might've","mine's","mustn't","mustn't've","must've","'neath","needn't","ne'er","o'clock","o'er","ol'","ought've","oughtn't","oughtn't've","'round","shalln't","shan'","shan't","she'd","she'll","she's","should've","shouldn't","shouldn't've","somebody's","someone's","something's","so're","so's","so've","that'll","that're","that's","that'd","there'd","there'll","there're","there's","these're","these've","they'd","they'd've","they'll","they're","they've","this's","those're","those've","'thout","'til","'tis","to've","'twas","'tween","'twere","w'all","w'at","wasn't","we'd","we'd've","we'll","we're","we've","weren't","what'd","what'll","what're","what's","what've","when's","where'd","where'll","where're","where's","where've","which'd","which'll","which're","which's","which've","who'd","who'd've","who'll","who're","who's","who've","why'd","why're","why's","willn't","won't","would've","wouldn't","wouldn't've","y'ain't","y'all","y'all'd've","y'all'd'n't've","y'all're","y'all'ren't","y'at","yes'm","y'know","you'd","you'll","you're","you've","when'd","willn't"],bt=class{constructor(){this.singleQuoteStyleEnabled=!0;this.singleQuoteStyle="''";this.doubleQuoteStyleEnabled=!0;this.doubleQuoteStyle='""'}},fr=class extends b{constructor(){super({nameKey:"rules.quote-style.name",descriptionKey:"rules.quote-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.math,f.inlineMath,f.html,f.templaterCommand]})}get OptionsClass(){return bt}apply(t,i){let n=t;return i.doubleQuoteStyleEnabled&&(i.doubleQuoteStyle==='""'?n=this.convertSmartDoubleQuotesToStraightQuotes(n):n=this.convertStraightDoubleQuotesToDoubleSmartQuotes(n)),i.singleQuoteStyleEnabled&&(i.singleQuoteStyle==="''"?n=this.convertSmartSingleQuotesToStraightQuotes(n):n=this.convertStraightSingleQuotesToSingleSmartQuotes(n)),n}convertSmartSingleQuotesToStraightQuotes(t){return t.replace(vu,"'")}convertSmartDoubleQuotesToStraightQuotes(t){return t.replace(bu,'"')}convertStraightDoubleQuotesToDoubleSmartQuotes(t){this.throwErrorIfNotEqualNumberOfQuotes(t,'"');let i="\u201C\u201D"[0],n="\u201C\u201D"[1],r=0;return t=t.replaceAll('"',()=>{let a=i;return r%2===1&&(a=n),r++,a}),t}convertStraightSingleQuotesToSingleSmartQuotes(t){let i="\u2018\u2019"[0],n="\u2018\u2019"[1];t=this.convertContractionStraightQuotesToSmartQuotes(t,i,n),t=this.convertPossessiveStraightQuotesToSmartQuotes(t,n),this.throwErrorIfNotEqualNumberOfQuotes(t,"'");let r=0;return t=t.replaceAll("'",()=>{let a=i;return r%2===1&&(a=n),r++,a}),t}convertContractionStraightQuotesToSmartQuotes(t,i,n){let r=function(a){return a[0]==="'"&&(a=i+a.substring(1)),a.replaceAll("'",n)};for(let a of Gy)t=t.replace(new RegExp(a,"gi"),r);return t}convertPossessiveStraightQuotesToSmartQuotes(t,i){return t.replace(/([a-zA-Z0-9]'s|s')/g,n=>n.replace("'",i))}throwErrorIfNotEqualNumberOfQuotes(t,i){if(rd(t,i)%2!==0)throw new Error(E("logs.uneven-amount-of-quotes").replace("{QUOTE}",i))}get exampleBuilders(){return[new y({description:"Smart quotes used in file are converted to straight quotes when styles are set to `Straight`",before:p` + `})]}get optionBuilders(){return[]}};Sr=A([b.register],Sr);var Tb=["a'ight","ain't","amn't","'n'","aren't","'bout","boy's","can't","cap'n","'cause","'cept","could've","couldn't","couldn't've","daren't","daresn't","dasn't","didn't","doesn't","don't","d'ye","d'ya","e'en","e'er","'em","everybody's","everyone's","everything's","fo'c'sle","'gainst","g'day","girl's","giv'n","gi'z","gon't","guy's","hadn't","had've","hasn't","haven't","he'd","he'll","he's","here's","how'd","how'll","how're","how's","I'd","I'd've","I'd'nt","I'd'nt've","If'n","I'll","I'm","I'm'o","I've","isn't","it'd","it'll","it's","let's","loven't","ma'am","mayn't","may've","mightn't","might've","mine's","mustn't","mustn't've","must've","'neath","needn't","ne'er","o'clock","o'er","ol'","ought've","oughtn't","oughtn't've","'round","shalln't","shan'","shan't","she'd","she'll","she's","should've","shouldn't","shouldn't've","somebody's","someone's","something's","so're","so's","so've","that'll","that're","that's","that'd","there'd","there'll","there're","there's","these're","these've","they'd","they'd've","they'll","they're","they've","this's","those're","those've","'thout","'til","'tis","to've","'twas","'tween","'twere","w'all","w'at","wasn't","we'd","we'd've","we'll","we're","we've","weren't","what'd","what'll","what're","what's","what've","when's","where'd","where'll","where're","where's","where've","which'd","which'll","which're","which's","which've","who'd","who'd've","who'll","who're","who's","who've","why'd","why're","why's","willn't","won't","would've","wouldn't","wouldn't've","y'ain't","y'all","y'all'd've","y'all'd'n't've","y'all're","y'all'ren't","y'at","yes'm","y'know","you'd","you'll","you're","you've","when'd","willn't"],At=class{constructor(){this.singleQuoteStyleEnabled=!0;this.singleQuoteStyle="''";this.doubleQuoteStyleEnabled=!0;this.doubleQuoteStyle='""'}},Ar=class extends b{constructor(){super({nameKey:"rules.quote-style.name",descriptionKey:"rules.quote-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml,f.math,f.inlineMath,f.html,f.templaterCommand]})}get OptionsClass(){return At}apply(t,i){let n=t;return i.doubleQuoteStyleEnabled&&(i.doubleQuoteStyle==='""'?n=this.convertSmartDoubleQuotesToStraightQuotes(n):n=this.convertStraightDoubleQuotesToDoubleSmartQuotes(n)),i.singleQuoteStyleEnabled&&(i.singleQuoteStyle==="''"?n=this.convertSmartSingleQuotesToStraightQuotes(n):n=this.convertStraightSingleQuotesToSingleSmartQuotes(n)),n}convertSmartSingleQuotesToStraightQuotes(t){return t.replace(Ku,"'")}convertSmartDoubleQuotesToStraightQuotes(t){return t.replace(ju,'"')}convertStraightDoubleQuotesToDoubleSmartQuotes(t){this.throwErrorIfNotEqualNumberOfQuotes(t,'"');let i="\u201C\u201D"[0],n="\u201C\u201D"[1],r=0;return t=t.replaceAll('"',()=>{let a=i;return r%2===1&&(a=n),r++,a}),t}convertStraightSingleQuotesToSingleSmartQuotes(t){let i="\u2018\u2019"[0],n="\u2018\u2019"[1];t=this.convertContractionStraightQuotesToSmartQuotes(t,i,n),t=this.convertPossessiveStraightQuotesToSmartQuotes(t,n),this.throwErrorIfNotEqualNumberOfQuotes(t,"'");let r=0;return t=t.replaceAll("'",()=>{let a=i;return r%2===1&&(a=n),r++,a}),t}convertContractionStraightQuotesToSmartQuotes(t,i,n){let r=function(a){return a[0]==="'"&&(a=i+a.substring(1)),a.replaceAll("'",n)};for(let a of Tb)t=t.replace(new RegExp(a,"gi"),r);return t}convertPossessiveStraightQuotesToSmartQuotes(t,i){return t.replace(/([a-zA-Z0-9]'s|s')/g,n=>n.replace("'",i))}throwErrorIfNotEqualNumberOfQuotes(t,i){if(qn(t,i)%2!==0)throw new Error(T("logs.uneven-amount-of-quotes").replace("{QUOTE}",i))}get exampleBuilders(){return[new y({description:"Smart quotes used in file are converted to straight quotes when styles are set to `Straight`",before:p` # Double Quote Cases “There are a bunch of different kinds of smart quote indicators” „More than you would think” @@ -1444,7 +1473,7 @@ ${Ae(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape ${""} Be careful as converting straight quotes to smart quotes requires you to have an even amount of quotes once possessives and common contractions have been dealt with. If not, it will throw an error. - `,options:{singleQuoteStyle:"\u2018\u2019",doubleQuoteStyle:"\u201C\u201D"}})]}get optionBuilders(){return[new U({OptionsClass:bt,nameKey:"rules.quote-style.single-quote-enabled.name",descriptionKey:"rules.quote-style.single-quote-enabled.description",optionsKey:"singleQuoteStyleEnabled"}),new ne({OptionsClass:bt,nameKey:"rules.quote-style.single-quote-style.name",descriptionKey:"rules.quote-style.single-quote-style.description",optionsKey:"singleQuoteStyle",records:[{value:"''",description:`Uses "'" instead of smart single quotes`},{value:"\u2018\u2019",description:'Uses "\u2018" and "\u2019" instead of straight single quotes'}]}),new U({OptionsClass:bt,nameKey:"rules.quote-style.double-quote-enabled.name",descriptionKey:"rules.quote-style.double-quote-enabled.description",optionsKey:"doubleQuoteStyleEnabled"}),new ne({OptionsClass:bt,nameKey:"rules.quote-style.double-quote-style.name",descriptionKey:"rules.quote-style.double-quote-style.description",optionsKey:"doubleQuoteStyle",records:[{value:'""',description:`Uses '"' instead of smart double quotes`},{value:"\u201C\u201D",description:"Uses '\u201C' and '\u201D' instead of straight double quotes"}]})]}};fr=T([b.register],fr);var nl=class{},yr=class extends b{constructor(){super({nameKey:"rules.re-index-footnotes.name",descriptionKey:"rules.re-index-footnotes.description",type:"Footnote",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return nl}apply(t,i){return Gd(t)}get exampleBuilders(){return[new y({description:"Re-indexing footnotes after having deleted previous footnotes",before:p` + `,options:{singleQuoteStyle:"\u2018\u2019",doubleQuoteStyle:"\u201C\u201D"}})]}get optionBuilders(){return[new U({OptionsClass:At,nameKey:"rules.quote-style.single-quote-enabled.name",descriptionKey:"rules.quote-style.single-quote-enabled.description",optionsKey:"singleQuoteStyleEnabled"}),new ne({OptionsClass:At,nameKey:"rules.quote-style.single-quote-style.name",descriptionKey:"rules.quote-style.single-quote-style.description",optionsKey:"singleQuoteStyle",records:[{value:"''",description:`Uses "'" instead of smart single quotes`},{value:"\u2018\u2019",description:'Uses "\u2018" and "\u2019" instead of straight single quotes'}]}),new U({OptionsClass:At,nameKey:"rules.quote-style.double-quote-enabled.name",descriptionKey:"rules.quote-style.double-quote-enabled.description",optionsKey:"doubleQuoteStyleEnabled"}),new ne({OptionsClass:At,nameKey:"rules.quote-style.double-quote-style.name",descriptionKey:"rules.quote-style.double-quote-style.description",optionsKey:"doubleQuoteStyle",records:[{value:'""',description:`Uses '"' instead of smart double quotes`},{value:"\u201C\u201D",description:"Uses '\u201C' and '\u201D' instead of straight double quotes"}]})]}};Ar=A([b.register],Ar);var xl=class{},Lr=class extends b{constructor(){super({nameKey:"rules.re-index-footnotes.name",descriptionKey:"rules.re-index-footnotes.description",type:"Footnote",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return xl}apply(t,i){return hu(t)}get exampleBuilders(){return[new y({description:"Re-indexing footnotes after having deleted previous footnotes",before:p` Lorem ipsum at aliquet felis.[^3] Donec dictum turpis quis pellentesque,[^5] et iaculis tortor condimentum. ${""} [^3]: first footnote @@ -1488,7 +1517,7 @@ ${Ae(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape ${""} [^1]: bla [^2]: bla - `})]}get optionBuilders(){return[]}};yr=T([b.register],yr);var rl=class{},br=class extends b{constructor(){super({nameKey:"rules.remove-consecutive-list-markers.name",descriptionKey:"rules.remove-consecutive-list-markers.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return rl}apply(t,i){return t.replace(/^([ |\t]*)- - \b/gm,"$1- ")}get exampleBuilders(){return[new y({description:"Removing consecutive list markers.",before:p` + `})]}get optionBuilders(){return[]}};Lr=A([b.register],Lr);var wl=class{},Tr=class extends b{constructor(){super({nameKey:"rules.remove-consecutive-list-markers.name",descriptionKey:"rules.remove-consecutive-list-markers.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return wl}apply(t,i){return t.replace(/^([ |\t]*)- - \b/gm,"$1- ")}get exampleBuilders(){return[new y({description:"Removing consecutive list markers.",before:p` - item 1 - - copypasted item A - item 2 @@ -1500,13 +1529,56 @@ ${Ae(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape - item 2 - indented item - copypasted item B - `})]}get optionBuilders(){return[]}};br=T([b.register],br);var al=class{},vr=class extends b{constructor(){super({nameKey:"rules.remove-empty-lines-between-list-markers-and-checklists.name",descriptionKey:"rules.remove-empty-lines-between-list-markers-and-checklists.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.thematicBreak]});this.replaceEmptyLinesBetweenList=function(i,n,r){let a=new RegExp(`^${n} -{2,}${n}$`,"gm"),s,o=i;do s=o.match(a),o=o.replaceAll(a,r);while(s);return o}}get OptionsClass(){return al}apply(i,n){let r="(( |\\t)*- \\[( |x)\\]( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,r,`$1 -$5`);let a="(( |\\t)*\\d+\\.( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,a,`$1 -$4`);let s="(( |\\t)*\\+( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,s,`$1 -$4`);let o="(( |\\t)*-(?! \\[( |x)\\])( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,o,`$1 -$5`);let l="(( |\\t)*\\*( |\\t)+.+)";return this.replaceEmptyLinesBetweenList(i,l,`$1 -$4`)}get exampleBuilders(){return[new y({description:"",before:p` + `})]}get optionBuilders(){return[]}};Tr=A([b.register],Tr);var kl=class{},Er=class extends b{constructor(){super({nameKey:"rules.remove-empty-lines-between-list-markers-and-checklists.name",descriptionKey:"rules.remove-empty-lines-between-list-markers-and-checklists.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.thematicBreak]});this.replaceEmptyLinesBetweenList=function(i,n){let r=new RegExp(`^${n} +{2,}${n}$`,"gm"),a,s=i;do a=s.match(r),s=s.replaceAll(r,`$1 +$4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)*- ${Jt}( |\\t)+.+)`;i=this.replaceEmptyLinesBetweenList(i,r);let a="(( |\\t)*\\d+\\.( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,a);let s="(( |\\t)*\\+( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,s);let o=`(( |\\t)*-(?! ${Jt})( |\\t)+.+)`;i=this.replaceEmptyLinesBetweenList(i,o);let l="(( |\\t)*\\*( |\\t)+.+)";return this.replaceEmptyLinesBetweenList(i,l)}get exampleBuilders(){return[new y({description:"Blank lines are removed between ordered list items",before:p` + 1. Item 1 + ${""} + 2. Item 2 + `,after:p` + 1. Item 1 + 2. Item 2 + `}),new y({description:"Blank lines are removed between list items when the list indicator is '-'",before:p` + - Item 1 + ${""} + \t- Subitem 1 + ${""} + - Item 2 + `,after:p` + - Item 1 + \t- Subitem 1 + - Item 2 + `}),new y({description:"Blank lines are removed between checklist items",before:p` + - [x] Item 1 + ${""} + \t- [!] Subitem 1 + ${""} + - [ ] Item 2 + `,after:p` + - [x] Item 1 + \t- [!] Subitem 1 + - [ ] Item 2 + `}),new y({description:"Blank lines are removed between list items when the list indicator is '+'",before:p` + + Item 1 + ${""} + \t+ Subitem 1 + ${""} + + Item 2 + `,after:p` + + Item 1 + \t+ Subitem 1 + + Item 2 + `}),new y({description:"Blank lines are removed between list items when the list indicator is '*'",before:p` + * Item 1 + ${""} + \t* Subitem 1 + ${""} + * Item 2 + `,after:p` + * Item 1 + \t* Subitem 1 + * Item 2 + `}),new y({description:"Blanks lines are removed between like list types (ordered, specific list item indicators, and checklists) while blanks are left between different kinds of list item indicators",before:p` 1. Item 1 ${""} 2. Item 2 @@ -1519,7 +1591,7 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` ${""} - [x] Item 1 ${""} - \t- [ ] Subitem 1 + \t- [f] Subitem 1 ${""} - [ ] Item 2 ${""} @@ -1543,7 +1615,7 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` - Item 2 ${""} - [x] Item 1 - \t- [ ] Subitem 1 + \t- [f] Subitem 1 - [ ] Item 2 ${""} + Item 1 @@ -1553,7 +1625,7 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` * Item 1 \t* Subitem 1 * Item 2 - `})]}get optionBuilders(){return[]}};vr=T([b.register],vr);var sl=class{},xr=class extends b{constructor(){super({nameKey:"rules.remove-empty-list-markers.name",descriptionKey:"rules.remove-empty-list-markers.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return sl}apply(t,i){let n=new RegExp(`^${Yt}(-|\\*|\\+|\\d+[.)]|- (\\[( |x)\\]))\\s*?$`,"gm");return t=t.replace(new RegExp(n.source+"\\n","gm"),""),t=t.replace(new RegExp("\\n"+n.source,"gm"),""),t.replace(n,"")}get exampleBuilders(){return[new y({description:"Removes empty list markers.",before:p` + `})]}get optionBuilders(){return[]}};Er=A([b.register],Er);var zl=class{},Or=class extends b{constructor(){super({nameKey:"rules.remove-empty-list-markers.name",descriptionKey:"rules.remove-empty-list-markers.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return zl}apply(t,i){let n=new RegExp(`^${Yn}(-|\\*|\\+|\\d+[.)]|- (\\[( |x)\\]))\\s*?$`,"gm");return t=t.replace(new RegExp(n.source+"\\n","gm"),""),t=t.replace(new RegExp("\\n"+n.source,"gm"),""),t.replace(n,"")}get exampleBuilders(){return[new y({description:"Removes empty list markers.",before:p` - item 1 - - item 2 @@ -1657,16 +1729,16 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` > > + item 1 > + item 2 - `})]}get optionBuilders(){return[]}};xr=T([b.register],xr);var ol=class{},wr=class extends b{constructor(){super({nameKey:"rules.remove-hyphenated-line-breaks.name",descriptionKey:"rules.remove-hyphenated-line-breaks.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return ol}apply(t,i){return t.replace(/\b[-‐] \b/g,"")}get exampleBuilders(){return[new y({description:"Removing hyphenated line breaks.",before:p` + `})]}get optionBuilders(){return[]}};Or=A([b.register],Or);var Sl=class{},Cr=class extends b{constructor(){super({nameKey:"rules.remove-hyphenated-line-breaks.name",descriptionKey:"rules.remove-hyphenated-line-breaks.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Sl}apply(t,i){return t.replace(/\b[-‐] \b/g,"")}get exampleBuilders(){return[new y({description:"Removing hyphenated line breaks.",before:p` This text has a linebr‐ eak. `,after:p` This text has a linebreak. - `})]}get optionBuilders(){return[]}};wr=T([b.register],wr);var ll=class{},vt=class extends b{constructor(){super({nameKey:"rules.remove-hyphens-on-paste.name",descriptionKey:"rules.remove-hyphens-on-paste.description",type:"Paste"})}get OptionsClass(){return ll}apply(t,i){return t.replace(/([^\s-])[-‐]\s+\n?(?=\w)/g,"$1")}get exampleBuilders(){return[new y({description:"Remove hyphen in content to paste",before:p` + `})]}get optionBuilders(){return[]}};Cr=A([b.register],Cr);var Al=class{},Lt=class extends b{constructor(){super({nameKey:"rules.remove-hyphens-on-paste.name",descriptionKey:"rules.remove-hyphens-on-paste.description",type:"Paste"})}get OptionsClass(){return Al}apply(t,i){return t.replace(/([^\s-])[-‐]\s+\n?(?=\w)/g,"$1")}get exampleBuilders(){return[new y({description:"Remove hyphen in content to paste",before:p` Text that was cool but hyper- tension made it uncool. `,after:p` Text that was cool but hypertension made it uncool. - `})]}get optionBuilders(){return[]}};vt=T([b.register],vt);var cl=class{},xt=class extends b{constructor(){super({nameKey:"rules.remove-leading-or-trailing-whitespace-on-paste.name",descriptionKey:"rules.remove-leading-or-trailing-whitespace-on-paste.description",type:"Paste"})}get OptionsClass(){return cl}apply(t,i){return t.replace(/^[\n ]+|\s+$/g,"")}get exampleBuilders(){return[new y({description:"Removes leading spaces and newline characters",before:p` + `})]}get optionBuilders(){return[]}};Lt=A([b.register],Lt);var Ll=class{},Tt=class extends b{constructor(){super({nameKey:"rules.remove-leading-or-trailing-whitespace-on-paste.name",descriptionKey:"rules.remove-leading-or-trailing-whitespace-on-paste.description",type:"Paste"})}get OptionsClass(){return Ll}apply(t,i){return t.replace(/^[\n ]+|\s+$/g,"")}get exampleBuilders(){return[new y({description:"Removes leading spaces and newline characters",before:p` ${""} ${""} This text was really indented @@ -1678,15 +1750,25 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` ${""} \t\tThis text is really indented ${""} - `,after:" This text is really indented"})]}get optionBuilders(){return[]}};xt=T([b.register],xt);var dl=class{},wt=class extends b{constructor(){super({nameKey:"rules.remove-leftover-footnotes-from-quote-on-paste.name",descriptionKey:"rules.remove-leftover-footnotes-from-quote-on-paste.description",type:"Paste"})}get OptionsClass(){return dl}apply(t,i){return t.replace(/(\D)[.,]\d+/g,"$1")}get exampleBuilders(){return[new y({description:"Footnote reference removed",before:p` + `,after:" This text is really indented"})]}get optionBuilders(){return[]}};Tt=A([b.register],Tt);var Tl=class{},Et=class extends b{constructor(){super({nameKey:"rules.remove-leftover-footnotes-from-quote-on-paste.name",descriptionKey:"rules.remove-leftover-footnotes-from-quote-on-paste.description",ruleIgnoreTypes:[f.wikiLink,f.link,f.image],type:"Paste"})}get OptionsClass(){return Tl}apply(t,i){return t.replace(/(\D)[.,]\d+/g,"$1")}get exampleBuilders(){return[new y({description:"Footnote reference removed",before:p` He was sure that he would get off without doing any time, but the cops had other plans.50 ${""} - _Note that the format for footnote references to move is a dot or comma followed by any number of digits_ + _Note that the format for footnote references to remove is a dot or comma followed by any number of digits_ `,after:p` He was sure that he would get off without doing any time, but the cops had other plans ${""} - _Note that the format for footnote references to move is a dot or comma followed by any number of digits_ - `})]}get optionBuilders(){return[]}};wt=T([b.register],wt);var ul=class{},kr=class extends b{constructor(){super({nameKey:"rules.remove-link-spacing.name",descriptionKey:"rules.remove-link-spacing.description",type:"Spacing"})}get OptionsClass(){return ul}apply(t,i){return t=Xd(t),wu(t)}get exampleBuilders(){return[new y({description:"Space in regular markdown link text",before:p` + _Note that the format for footnote references to remove is a dot or comma followed by any number of digits_ + `}),new y({description:"Footnote reference removal does not affect links",before:p` + [[Half is .5]] + [Half is .5](HalfIs.5.md) + ![](HalfIs.5.jpg) + ![[Half is .5.jpg]] + `,after:p` + [[Half is .5]] + [Half is .5](HalfIs.5.md) + ![](HalfIs.5.jpg) + ![[Half is .5.jpg]] + `})]}get optionBuilders(){return[]}};Et=A([b.register],Et);var El=class{},Mr=class extends b{constructor(){super({nameKey:"rules.remove-link-spacing.name",descriptionKey:"rules.remove-link-spacing.description",type:"Spacing"})}get OptionsClass(){return El}apply(t,i){return t=vu(t),Hu(t)}get exampleBuilders(){return[new y({description:"Space in regular markdown link text",before:p` [ here is link text1 ](link_here) [ here is link text2](link_here) [here is link text3 ](link_here) @@ -1720,7 +1802,7 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` [[link_here|here is link text5]] ![[link_here|here is link text6]] [[link_here]] - `})]}get optionBuilders(){return[]}};kr=T([b.register],kr);var pl=class{},kt=class extends b{constructor(){super({nameKey:"rules.remove-multiple-blank-lines-on-paste.name",descriptionKey:"rules.remove-multiple-blank-lines-on-paste.description",type:"Paste"})}get OptionsClass(){return pl}apply(t,i){return t.replace(/\n{3,}/g,` + `})]}get optionBuilders(){return[]}};Mr=A([b.register],Mr);var Ol=class{},Ot=class extends b{constructor(){super({nameKey:"rules.remove-multiple-blank-lines-on-paste.name",descriptionKey:"rules.remove-multiple-blank-lines-on-paste.description",type:"Paste"})}get OptionsClass(){return Ol}apply(t,i){return t.replace(/\n{3,}/g,` `)}get exampleBuilders(){return[new y({description:"Multiple blanks lines condensed down to one",before:p` Here is the first line. @@ -1741,11 +1823,11 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` First line. ${""} Last line. - `})]}get optionBuilders(){return[]}};kt=T([b.register],kt);var ml=class{},zr=class extends b{constructor(){super({nameKey:"rules.remove-multiple-spaces.name",descriptionKey:"rules.remove-multiple-spaces.description",type:"Content",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.inlineMath,f.yaml,f.link,f.wikiLink,f.tag,f.table]})}get OptionsClass(){return ml}apply(t,i){return t=t.replace(/(?!^>)([^\s])( ){2,}([^\s])/gm,"$1 $3"),t}get exampleBuilders(){return[new y({description:"Removing double and triple space.",before:p` + `})]}get optionBuilders(){return[]}};Ot=A([b.register],Ot);var Cl=class{},qr=class extends b{constructor(){super({nameKey:"rules.remove-multiple-spaces.name",descriptionKey:"rules.remove-multiple-spaces.description",type:"Content",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.inlineMath,f.yaml,f.link,f.wikiLink,f.tag,f.table]})}get OptionsClass(){return Cl}apply(t,i){return t=t.replace(/(?!^>)([^\s])( ){2,}([^\s])/gm,"$1 $3"),t}get exampleBuilders(){return[new y({description:"Removing double and triple space.",before:p` Lorem ipsum dolor sit amet. `,after:p` Lorem ipsum dolor sit amet. - `})]}get optionBuilders(){return[]}};zr=T([b.register],zr);var zt=class{constructor(){this.includeFullwidthForms=!0;this.includeCJKSymbolsAndPunctuation=!0;this.includeDashes=!0;this.otherSymbols=""}},Sr=class extends b{constructor(){super({nameKey:"rules.remove-space-around-characters.name",descriptionKey:"rules.remove-space-around-characters.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return zt}apply(t,i){let n="";if(i.includeFullwidthForms&&(n+="\uFF01-\uFF5E"),i.includeCJKSymbolsAndPunctuation&&(n+="\u3000-\u30FF"),i.includeDashes&&(n+="\u2013\u2014"),n+=In(i.otherSymbols),!n)return t;let r=new RegExp(`([ ])+([${n}])`,"g"),a=new RegExp(`([${n}])([ ])+`,"g"),s=function(l){return l.replace(r,"$2").replace(a,"$1")},o=qe([f.list],t,s);return o=Ma(o,s),o}get exampleBuilders(){return[new y({description:"Remove Spaces and Tabs around Fullwidth Characters",before:p` + `})]}get optionBuilders(){return[]}};qr=A([b.register],qr);var Ct=class{constructor(){this.includeFullwidthForms=!0;this.includeCJKSymbolsAndPunctuation=!0;this.includeDashes=!0;this.otherSymbols=""}},Ir=class extends b{constructor(){super({nameKey:"rules.remove-space-around-characters.name",descriptionKey:"rules.remove-space-around-characters.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Ct}apply(t,i){let n="";if(i.includeFullwidthForms&&(n+="\uFF01-\uFF5E"),i.includeCJKSymbolsAndPunctuation&&(n+="\u3000-\u30FF"),i.includeDashes&&(n+="\u2013\u2014"),n+=Pn(i.otherSymbols),!n)return t;let r=new RegExp(`([ ])+([${n}])`,"g"),a=new RegExp(`([${n}])([ ])+`,"g"),s=function(l){return l.replace(r,"$2").replace(a,"$1")},o=we([f.list],t,s);return o=Ha(o,s),o}get exampleBuilders(){return[new y({description:"Remove Spaces and Tabs around Fullwidth Characters",before:p` Full list of affected characters: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,.:;!?"'`^~ ̄_&@#%+-*=<>()[]{}⦅⦆|¦/\¬$£¢₩¥。、「」『』〔〕【】—…–《》〈〉 This is a fullwidth period\t 。 with text after it. This is a fullwidth comma\t, with text after it. @@ -1771,14 +1853,14 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` + [ another item here] * [ one last item here] ${""} - # Nested in a block quote + # Nested in a blockquote ${""} > - [ contents here] > - [ more contents here] more text here > + [ another item here] > * [ one last item here] ${""} - # Doubly nested in a block quote + # Doubly nested in a blockquote ${""} > The following is doubly nested > > - [ contents here] @@ -1793,21 +1875,21 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` + [another item here] * [one last item here] ${""} - # Nested in a block quote + # Nested in a blockquote ${""} > - [contents here] > - [more contents here]more text here > + [another item here] > * [one last item here] ${""} - # Doubly nested in a block quote + # Doubly nested in a blockquote ${""} > The following is doubly nested > > - [contents here] > > - [more contents here]more text here > > + [another item here] > > * [one last item here] - `})]}get optionBuilders(){return[new U({nameKey:"rules.remove-space-around-characters.include-fullwidth-forms.name",descriptionKey:"rules.remove-space-around-characters.include-fullwidth-forms.description",OptionsClass:zt,optionsKey:"includeFullwidthForms"}),new U({nameKey:"rules.remove-space-around-characters.include-cjk-symbols-and-punctuation.name",descriptionKey:"rules.remove-space-around-characters.include-cjk-symbols-and-punctuation.description",OptionsClass:zt,optionsKey:"includeCJKSymbolsAndPunctuation"}),new U({nameKey:"rules.remove-space-around-characters.include-dashes.name",descriptionKey:"rules.remove-space-around-characters.include-dashes.description",OptionsClass:zt,optionsKey:"includeDashes"}),new Ve({nameKey:"rules.remove-space-around-characters.other-symbols.name",descriptionKey:"rules.remove-space-around-characters.other-symbols.description",OptionsClass:zt,optionsKey:"otherSymbols"})]}};Sr=T([b.register],Sr);var Ar=class{constructor(){this.charactersToRemoveSpacesBefore=",!?;:).\u2019\u201D]";this.charactersToRemoveSpacesAfter="\xBF\xA1\u2018\u201C(["}},Tr=class extends b{constructor(){super({nameKey:"rules.remove-space-before-or-after-characters.name",descriptionKey:"rules.remove-space-before-or-after-characters.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Ar}apply(t,i){let n=In(i.charactersToRemoveSpacesBefore),r=In(i.charactersToRemoveSpacesAfter);if(!n&&!r)return t;let a=new RegExp(`([ ])+([${n}])`,"g"),s=new RegExp(`([${r}])([ ])+`,"g"),o=function(d){return d.replace(a,"$2").replace(s,"$1")},l=qe([f.list,f.html],t,o);return l=Ma(l,o),l}get exampleBuilders(){return[new y({description:"Remove Spaces and Tabs Before and After Default Symbol Set",before:p` + `})]}get optionBuilders(){return[new U({nameKey:"rules.remove-space-around-characters.include-fullwidth-forms.name",descriptionKey:"rules.remove-space-around-characters.include-fullwidth-forms.description",OptionsClass:Ct,optionsKey:"includeFullwidthForms"}),new U({nameKey:"rules.remove-space-around-characters.include-cjk-symbols-and-punctuation.name",descriptionKey:"rules.remove-space-around-characters.include-cjk-symbols-and-punctuation.description",OptionsClass:Ct,optionsKey:"includeCJKSymbolsAndPunctuation"}),new U({nameKey:"rules.remove-space-around-characters.include-dashes.name",descriptionKey:"rules.remove-space-around-characters.include-dashes.description",OptionsClass:Ct,optionsKey:"includeDashes"}),new We({nameKey:"rules.remove-space-around-characters.other-symbols.name",descriptionKey:"rules.remove-space-around-characters.other-symbols.description",OptionsClass:Ct,optionsKey:"otherSymbols"})]}};Ir=A([b.register],Ir);var Fr=class{constructor(){this.charactersToRemoveSpacesBefore=",!?;:).\u2019\u201D]";this.charactersToRemoveSpacesAfter="\xBF\xA1\u2018\u201C(["}},Br=class extends b{constructor(){super({nameKey:"rules.remove-space-before-or-after-characters.name",descriptionKey:"rules.remove-space-before-or-after-characters.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Fr}apply(t,i){let n=Pn(i.charactersToRemoveSpacesBefore),r=Pn(i.charactersToRemoveSpacesAfter);if(!n&&!r)return t;let a=new RegExp(`([ ])+([${n}])`,"g"),s=new RegExp(`([${r}])([ ])+`,"g"),o=function(d){return d.replace(a,"$2").replace(s,"$1")},l=we([f.list,f.html],t,o);return l=Ha(l,o),l}get exampleBuilders(){return[new y({description:"Remove Spaces and Tabs Before and After Default Symbol Set",before:p` In the end , the space gets removed\t . The space before the question mark was removed right ? The space before the exclamation point gets removed ! @@ -1825,7 +1907,7 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` “Text in double quotes” [Text in square braces] (Text in parenthesis) - `})]}get optionBuilders(){return[new Ve({nameKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-before.name",descriptionKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-before.description",OptionsClass:Ar,optionsKey:"charactersToRemoveSpacesBefore"}),new Ve({nameKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-after.name",descriptionKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-after.description",OptionsClass:Ar,optionsKey:"charactersToRemoveSpacesAfter"})]}};Tr=T([b.register],Tr);var ds=class{constructor(){this.punctuationToRemove=".,;:!\u3002\uFF0C\uFF1B\uFF1A\uFF01"}},Er=class extends b{constructor(){super({nameKey:"rules.remove-trailing-punctuation-in-heading.name",descriptionKey:"rules.remove-trailing-punctuation-in-heading.description",type:"Heading",ruleIgnoreTypes:[f.code,f.math,f.yaml]})}get OptionsClass(){return ds}apply(t,i){return t.replaceAll(ji,(n,r="",a="",s="",o="",l="")=>{if(o==""||o.match(yu))return n;let d=o.charAt(o.length-1);return i.punctuationToRemove.includes(d)?r+a+s+o.substring(0,o.length-1)+l:n})}get exampleBuilders(){return[new y({description:"Removes punctuation from the end of a heading",before:p` + `})]}get optionBuilders(){return[new We({nameKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-before.name",descriptionKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-before.description",OptionsClass:Fr,optionsKey:"charactersToRemoveSpacesBefore"}),new We({nameKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-after.name",descriptionKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-after.description",OptionsClass:Fr,optionsKey:"charactersToRemoveSpacesAfter"})]}};Br=A([b.register],Br);var As=class{constructor(){this.punctuationToRemove=".,;:!\u3002\uFF0C\uFF1B\uFF1A\uFF01"}},_r=class extends b{constructor(){super({nameKey:"rules.remove-trailing-punctuation-in-heading.name",descriptionKey:"rules.remove-trailing-punctuation-in-heading.description",type:"Heading",ruleIgnoreTypes:[f.code,f.math,f.yaml]})}get OptionsClass(){return As}apply(t,i){return t.replaceAll(Pi,(n,r="",a="",s="",o="",l="")=>{if(o==""||o.match(Nu))return n;let d=o.trimEnd(),c=d.charAt(d.length-1);return i.punctuationToRemove.includes(c)?r+a+s+o.substring(0,d.length-1)+o.substring(d.length)+l:n})}get exampleBuilders(){return[new y({description:"Removes punctuation from the end of a heading",before:p` # Heading ends in a period. ## Other heading ends in an exclamation mark! ## `,after:p` @@ -1837,7 +1919,13 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` `,after:p` # Heading 1 ## Heading & - `})]}get optionBuilders(){return[new Ve({OptionsClass:ds,nameKey:"rules.remove-trailing-punctuation-in-heading.punctuation-to-remove.name",descriptionKey:"rules.remove-trailing-punctuation-in-heading.punctuation-to-remove.description",optionsKey:"punctuationToRemove"})]}};Er=T([b.register],Er);var us=class{constructor(){this.yamlKeysToRemove=[]}},Lr=class extends b{constructor(){super({nameKey:"rules.remove-yaml-keys.name",descriptionKey:"rules.remove-yaml-keys.description",type:"YAML"})}get OptionsClass(){return us}apply(t,i){let n=i.yamlKeysToRemove,r=t.match(Se);if(!r||n.length===0)return t;let a=r[1];for(let s of n){let o=s.trim();o.endsWith(":")&&(o=o.substring(0,o.length-1)),a=st(a,o)}return t.replace(r[1],a)}get exampleBuilders(){return[new y({description:'Removes the values specified in `YAML Keys to Remove` = "status:\nkeywords\ndate"',before:p` + `}),new y({description:"Removes punctuation from the end of a heading when followed by whitespace",before:p` + # Heading 1!${" "} + ## Heading 2.\t + `,after:p` + # Heading 1${" "} + ## Heading 2\t + `})]}get optionBuilders(){return[new We({OptionsClass:As,nameKey:"rules.remove-trailing-punctuation-in-heading.punctuation-to-remove.name",descriptionKey:"rules.remove-trailing-punctuation-in-heading.punctuation-to-remove.description",optionsKey:"punctuationToRemove"})]}};_r=A([b.register],_r);var Ls=class{constructor(){this.yamlKeysToRemove=[]}},Rr=class extends b{constructor(){super({nameKey:"rules.remove-yaml-keys.name",descriptionKey:"rules.remove-yaml-keys.description",type:"YAML"})}get OptionsClass(){return Ls}apply(t,i){let n=i.yamlKeysToRemove;if(n.length===0)return t;let r=en(t);if(r===null)return t;let a=r;for(let s of n){let o=s.trim();o.endsWith(":")&&(o=o.substring(0,o.length-1)),a=ut(a,o)}return t.replace(r,a)}get exampleBuilders(){return[new y({description:'Removes the values specified in `YAML Keys to Remove` = "status:\nkeywords\ndate"',before:p` --- language: Typescript type: programming @@ -1862,7 +1950,7 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` # Header Context ${""} Text - `,options:{yamlKeysToRemove:["status:","keywords","date"]}})]}get optionBuilders(){return[new be({OptionsClass:us,nameKey:"rules.remove-yaml-keys.yaml-keys-to-remove.name",descriptionKey:"rules.remove-yaml-keys.yaml-keys-to-remove.description",optionsKey:"yamlKeysToRemove"})]}};Lr=T([b.register],Lr);var gl=class{},Or=class extends b{constructor(){super({nameKey:"rules.space-after-list-markers.name",descriptionKey:"rules.space-after-list-markers.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return gl}apply(t,i){return t=t.replace(/^(\s*\d+\.|\s*[-+*])[^\S\r\n]+/gm,"$1 "),t.replace(/^(\s*\d+\.|\s*[-+*]\s+\[[ xX]\])[^\S\r\n]+/gm,"$1 ")}get exampleBuilders(){return[new y({description:"",before:p` + `,options:{yamlKeysToRemove:["status:","keywords","date"]}})]}get optionBuilders(){return[new be({OptionsClass:Ls,nameKey:"rules.remove-yaml-keys.yaml-keys-to-remove.name",descriptionKey:"rules.remove-yaml-keys.yaml-keys-to-remove.description",optionsKey:"yamlKeysToRemove"})]}};Rr=A([b.register],Rr);var Ml=class{},Dr=class extends b{constructor(){super({nameKey:"rules.space-after-list-markers.name",descriptionKey:"rules.space-after-list-markers.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Ml}apply(t,i){return t=t.replace(/^(\s*\d+\.|\s*[-+*])[^\S\r\n]+/gm,"$1 "),t.replace(/^(\s*\d+\.|\s*[-+*]\s+\[[ xX]\])[^\S\r\n]+/gm,"$1 ")}get exampleBuilders(){return[new y({description:"A single space is left between the list marker and the text of the list item",before:p` 1. Item 1 2. Item 2 ${""} @@ -1876,7 +1964,7 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` - [ ] Item 1 - [x] Item 2 \t- [ ] Item 3 - `})]}get optionBuilders(){return[]}};Or=T([b.register],Or);var hl=class{},Cr=class extends b{constructor(){super({nameKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.name",descriptionKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.inlineCode,f.yaml,f.image,f.link,f.wikiLink,f.tag,f.math,f.inlineMath,f.html]})}get OptionsClass(){return hl}apply(t,i){let n=/(\p{sc=Han}|\p{sc=Katakana}|\p{sc=Hiragana}|\p{sc=Hangul})( *)(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+'"([¥$]|\*[^*])/gmu,r=/(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+;:'"°%$)\]]|[^*]\*)( *)(\p{sc=Han}|\p{sc=Katakana}|\p{sc=Hiragana}|\p{sc=Hangul})/gmu,a=`${f.link.placeholder}|${f.inlineMath.placeholder}|${f.inlineCode.placeholder}|${f.wikiLink.placeholder}`.replaceAll("{","\\{").replaceAll("}","\\}"),s=new RegExp(`(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})( *)(${a})`,"gmu"),o=new RegExp(`(${a})( *)(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})`,"gmu"),l=function(c){return c.replace(n,"$1 $3").replace(r,"$1 $3")},d=qe([f.italics,f.bold],t,l);return d=d.replace(s,"$1 $3").replace(o,"$1 $3"),d=eu(d,l),d=iu(d,l),d}get exampleBuilders(){return[new y({description:"Space between Chinese and English",before:p` + `})]}get optionBuilders(){return[]}};Dr=A([b.register],Dr);var ql=class{},Nr=class extends b{constructor(){super({nameKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.name",descriptionKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.inlineCode,f.yaml,f.image,f.link,f.wikiLink,f.tag,f.math,f.inlineMath,f.html]})}get OptionsClass(){return ql}apply(t,i){let n=/(\p{sc=Han}|\p{sc=Katakana}|\p{sc=Hiragana}|\p{sc=Hangul})( *)(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+'"([¥$]|\*[^*])/gmu,r=/(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+;:'"°%$)\]]|[^*]\*)( *)(\p{sc=Han}|\p{sc=Katakana}|\p{sc=Hiragana}|\p{sc=Hangul})/gmu,a=`${f.link.placeholder}|${f.inlineMath.placeholder}|${f.inlineCode.placeholder}|${f.wikiLink.placeholder}`.replaceAll("{","\\{").replaceAll("}","\\}"),s=new RegExp(`(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})( *)(${a})`,"gmu"),o=new RegExp(`(${a})( *)(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})`,"gmu"),l=function(c){return c.replace(n,"$1 $3").replace(r,"$1 $3")},d=we([f.italics,f.bold],t,l);return d=d.replace(s,"$1 $3").replace(o,"$1 $3"),d=xu(d,l),d=wu(d,l),d}get exampleBuilders(){return[new y({description:"Space between Chinese and English",before:p` 中文字符串english中文字符串。 `,after:p` 中文字符串 english 中文字符串。 @@ -1928,7 +2016,7 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` カタカナ english カタカナ ハンカクカタカナ english123全角数字 한글 english 한글 - `})]}get optionBuilders(){return[]}};Cr=T([b.register],Cr);var ps=class{constructor(){this.style="consistent"}},qr=class extends b{constructor(){super({nameKey:"rules.strong-style.name",descriptionKey:"rules.strong-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.yaml,f.link,f.wikiLink,f.tag,f.math,f.inlineMath]})}get OptionsClass(){return ps}apply(t,i){return qa(t,i.style,"strong")}get exampleBuilders(){return[new y({description:"Strong indicators should use underscores when style is set to 'underscore'",before:p` + `})]}get optionBuilders(){return[]}};Nr=A([b.register],Nr);var Ts=class{constructor(){this.style="consistent"}},jr=class extends b{constructor(){super({nameKey:"rules.strong-style.name",descriptionKey:"rules.strong-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.yaml,f.link,f.wikiLink,f.tag,f.math,f.inlineMath]})}get OptionsClass(){return Ts}apply(t,i){return Pa(t,i.style,"strong")}get exampleBuilders(){return[new y({description:"Strong indicators should use underscores when style is set to 'underscore'",before:p` # Strong/Bold Cases ${""} **Test bold** @@ -2026,7 +2114,7 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` This is ___nested emphasis_ and ending bold__ ${""} __Test bold__ - `,options:{style:"consistent"}})]}get optionBuilders(){return[new ne({OptionsClass:ps,nameKey:"rules.strong-style.style.name",descriptionKey:"rules.strong-style.style.description",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of strong is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure ** is the strong indicator"},{value:"underscore",description:"Makes sure __ is the strong indicator"}]})]}};qr=T([b.register],qr);var ms=class{constructor(){this.twoSpaceLineBreak=!1}},Mr=class extends b{constructor(){super({nameKey:"rules.trailing-spaces.name",descriptionKey:"rules.trailing-spaces.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return ms}apply(t,i){return i.twoSpaceLineBreak?(t=t.replace(/(\S)[ \t]$/gm,"$1"),t=t.replace(/(\S)[ \t]{3,}$/gm,"$1"),t=t.replace(/(\S)( ?\t\t? ?)$/gm,"$1"),t):t.replace(/[ \t]+$/gm,"")}get exampleBuilders(){return[new y({description:"Removes trailing spaces and tabs.",before:p` + `,options:{style:"consistent"}})]}get optionBuilders(){return[new ne({OptionsClass:Ts,nameKey:"rules.strong-style.style.name",descriptionKey:"rules.strong-style.style.description",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of strong is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure ** is the strong indicator"},{value:"underscore",description:"Makes sure __ is the strong indicator"}]})]}};jr=A([b.register],jr);var Es=class{constructor(){this.twoSpaceLineBreak=!1}},Kr=class extends b{constructor(){super({nameKey:"rules.trailing-spaces.name",descriptionKey:"rules.trailing-spaces.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Es}apply(t,i){return i.twoSpaceLineBreak?(t=t.replace(/(\S)[ \t]$/gm,"$1"),t=t.replace(/(\S)[ \t]{3,}$/gm,"$1"),t=t.replace(/(\S)( ?\t\t? ?)$/gm,"$1"),t):t.replace(/[ \t]+$/gm,"")}get exampleBuilders(){return[new y({description:"Removes trailing spaces and tabs.",before:p` # H1 Line with trailing spaces and tabs. ${""} `,after:p` @@ -2038,7 +2126,7 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` `,after:p` # H1 Line with trailing spaces and tabs. ${""} - `,options:{twoSpaceLineBreak:!0}})]}get optionBuilders(){return[new U({OptionsClass:ms,nameKey:"rules.trailing-spaces.twp-space-line-break.name",descriptionKey:"rules.trailing-spaces.twp-space-line-break.description",optionsKey:"twoSpaceLineBreak"})]}};Mr=T([b.register],Mr);var fl=class{},Ir=class extends b{constructor(){super({nameKey:"rules.two-spaces-between-lines-with-content.name",descriptionKey:"rules.two-spaces-between-lines-with-content.description",type:"Content",ruleIgnoreTypes:[f.obsidianMultiLineComments,f.yaml,f.table]})}get OptionsClass(){return fl}apply(t,i){return Zd(t)}get exampleBuilders(){return[new y({description:"Make sure two spaces are added to the ends of lines that have content on it and the next line for lists, blockquotes, and paragraphs",before:p` + `,options:{twoSpaceLineBreak:!0}})]}get optionBuilders(){return[new U({OptionsClass:Es,nameKey:"rules.trailing-spaces.twp-space-line-break.name",descriptionKey:"rules.trailing-spaces.twp-space-line-break.description",optionsKey:"twoSpaceLineBreak"})]}};Kr=A([b.register],Kr);var Il=class{},Yr=class extends b{constructor(){super({nameKey:"rules.two-spaces-between-lines-with-content.name",descriptionKey:"rules.two-spaces-between-lines-with-content.description",type:"Content",ruleIgnoreTypes:[f.obsidianMultiLineComments,f.yaml,f.table]})}get OptionsClass(){return Il}apply(t,i){return yu(t)}get exampleBuilders(){return[new y({description:"Make sure two spaces are added to the ends of lines that have content on it and the next line for lists, blockquotes, and paragraphs",before:p` # Heading 1 First paragraph stays as the first paragraph ${""} @@ -2116,7 +2204,7 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` Even more content here ${""} - `})]}get optionBuilders(){return[]}};Ir=T([b.register],Ir);var gs=class{constructor(){this.listStyle="consistent"}},_r=class extends b{constructor(){super({nameKey:"rules.unordered-list-style.name",descriptionKey:"rules.unordered-list-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.tag]})}get OptionsClass(){return gs}apply(t,i){return su(t,i.listStyle)}get exampleBuilders(){return[new y({description:"Unordered lists have their indicator updated to `*` when `List item style = 'consistent'` and `*` is the first unordered list indicator",before:p` + `})]}get optionBuilders(){return[]}};Yr=A([b.register],Yr);var Os=class{constructor(){this.listStyle="consistent"}},Pr=class extends b{constructor(){super({nameKey:"rules.unordered-list-style.name",descriptionKey:"rules.unordered-list-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.tag]})}get OptionsClass(){return Os}apply(t,i){return Lu(t,i.listStyle)}get exampleBuilders(){return[new y({description:"Unordered lists have their indicator updated to `*` when `List item style = 'consistent'` and `*` is the first unordered list indicator",before:p` 1. ordered item 1 2. ordered item 2 ${""} @@ -2226,10 +2314,10 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` > > + Subitem 2 > > + Sub sub item 1 > > + Subitem 3 - `,options:{listStyle:"+"}})]}get optionBuilders(){return[new ne({OptionsClass:gs,nameKey:"rules.unordered-list-style.list-style.name",descriptionKey:"rules.unordered-list-style.list-style.description",optionsKey:"listStyle",records:[{value:"consistent",description:"Makes sure unordered list items use a consistent list item indicator in the file which will be based on the first list item found"},{value:"-",description:"Makes sure unordered list items use `-` as their indicator"},{value:"*",description:"Makes sure unordered list items use `*` as their indicator"},{value:"+",description:"Makes sure unordered list items use `+` as their indicator"}]})]}};_r=T([b.register],_r);var qi=class{constructor(){this.priorityKeysAtStartOfYaml=!0;this.yamlKeyPrioritySortOrder=[];this.yamlSortOrderForOtherKeys="None"}};T([b.noSettingControl()],qi.prototype,"dateModifiedKey",2),T([b.noSettingControl()],qi.prototype,"currentTimeFormatted",2),T([b.noSettingControl()],qi.prototype,"yamlTimestampDateModifiedEnabled",2);var St=class extends b{constructor(){super({nameKey:"rules.yaml-key-sort.name",descriptionKey:"rules.yaml-key-sort.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return qi}apply(t,i){let n=t.match(Se);if(!n)return t;let r=n[1],a=r,s=i.priorityKeysAtStartOfYaml,o=i.yamlKeyPrioritySortOrder,l=this.getYAMLKeysSorted(a,o),d=l.sortedYamlKeyValues;a=l.remainingYaml;let c=i.yamlSortOrderForOtherKeys,u=Xe(a);if(u==null)return this.getTextWithNewYamlFrontmatter(t,r,d,a,s,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled);let m=Object.keys(u),g;if(c==="Ascending Alphabetical")g=this.sortAlphabeticallyAsc;else if(c==="Descending Alphabetical")g=this.sortAlphabeticallyDesc;else return this.getTextWithNewYamlFrontmatter(t,r,d,a,s,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled);m=m.sort(g);let h=this.getYAMLKeysSorted(a,m);return this.getTextWithNewYamlFrontmatter(t,r,d,h.sortedYamlKeyValues,s,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled)}getYAMLKeysSorted(t,i){let n="";for(let r of i){let a=Ee(t,r);a!==null&&(a.includes(` + `,options:{listStyle:"+"}})]}get optionBuilders(){return[new ne({OptionsClass:Os,nameKey:"rules.unordered-list-style.list-style.name",descriptionKey:"rules.unordered-list-style.list-style.description",optionsKey:"listStyle",records:[{value:"consistent",description:"Makes sure unordered list items use a consistent list item indicator in the file which will be based on the first list item found"},{value:"-",description:"Makes sure unordered list items use `-` as their indicator"},{value:"*",description:"Makes sure unordered list items use `*` as their indicator"},{value:"+",description:"Makes sure unordered list items use `+` as their indicator"}]})]}};Pr=A([b.register],Pr);var qi=class{constructor(){this.priorityKeysAtStartOfYaml=!0;this.yamlKeyPrioritySortOrder=[];this.yamlSortOrderForOtherKeys="None"}};A([b.noSettingControl()],qi.prototype,"dateModifiedKey",2),A([b.noSettingControl()],qi.prototype,"currentTimeFormatted",2),A([b.noSettingControl()],qi.prototype,"yamlTimestampDateModifiedEnabled",2);var Mt=class extends b{constructor(){super({nameKey:"rules.yaml-key-sort.name",descriptionKey:"rules.yaml-key-sort.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return qi}apply(t,i){let n=en(t);if(n===null)return t;let r=n,a=i.priorityKeysAtStartOfYaml,s=i.yamlKeyPrioritySortOrder,o=0;for(let v of s)v.endsWith(":")&&(s[o]=v.substring(0,v.length-1)),o++;let l=this.getYAMLKeysSorted(r,s),d=l.sortedYamlKeyValues;r=l.remainingYaml;let c=i.yamlSortOrderForOtherKeys,u=Mi(r);if(u==null)return this.getTextWithNewYamlFrontmatter(t,n,d,r,a,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled);let m=Object.keys(u),g;if(c==="Ascending Alphabetical")g=this.sortAlphabeticallyAsc;else if(c==="Descending Alphabetical")g=this.sortAlphabeticallyDesc;else return this.getTextWithNewYamlFrontmatter(t,n,d,r,a,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled);m=m.sort(g);let h=this.getYAMLKeysSorted(r,m);return this.getTextWithNewYamlFrontmatter(t,n,d,h.sortedYamlKeyValues,a,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled)}getYAMLKeysSorted(t,i){let n="";for(let r of i){let a=Ce(t,r);a!==null&&(a.includes(` `)?n+=`${r}:${a} `:n+=`${r}: ${a} -`,t=st(t,r))}return{remainingYaml:t,sortedYamlKeyValues:n}}updateDateModifiedIfYamlChanged(t,i,n,r){return t==i?i:Ae(i,n," "+r)}getTextWithNewYamlFrontmatter(t,i,n,r,a,s,o,l){let d=`${r}${n}`;return a&&(d=`${n}${r}`),l&&(d=this.updateDateModifiedIfYamlChanged(i,d,s,o)),t.replace(i,d)}sortAlphabeticallyAsc(t,i){return t=t.toLowerCase(),i=i.toLowerCase(),ti?-1:i>t?1:0}get exampleBuilders(){return[new y({description:"Sorts YAML keys in order specified by `YAML Key Priority Sort Order` has a sort order of `date type language`",before:p` +`,t=ut(t,r))}return{remainingYaml:t,sortedYamlKeyValues:n}}updateDateModifiedIfYamlChanged(t,i,n,r){return t==i?i:Le(i,n," "+r)}getTextWithNewYamlFrontmatter(t,i,n,r,a,s,o,l){let d=`${r}${n}`;return a&&(d=`${n}${r}`),l&&(d=this.updateDateModifiedIfYamlChanged(i,d,s,o)),t.replace(i,d)}sortAlphabeticallyAsc(t,i){return t=t.toLowerCase(),i=i.toLowerCase(),ti?-1:i>t?1:0}get exampleBuilders(){return[new y({description:"Sorts YAML keys in order specified by `YAML Key Priority Sort Order` has a sort order of `date type language`",before:p` --- language: Typescript type: programming @@ -2302,18 +2390,18 @@ $4`)}get exampleBuilders(){return[new y({description:"",before:p` type: programming language: Typescript --- - `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"Descending Alphabetical",priorityKeysAtStartOfYaml:!1}})]}get optionBuilders(){return[new be({OptionsClass:qi,nameKey:"rules.yaml-key-sort.yaml-key-priority-sort-order.name",descriptionKey:"rules.yaml-key-sort.yaml-key-priority-sort-order.description",optionsKey:"yamlKeyPrioritySortOrder"}),new U({OptionsClass:qi,nameKey:"rules.yaml-key-sort.priority-keys-at-start-of-yaml.name",descriptionKey:"rules.yaml-key-sort.priority-keys-at-start-of-yaml.description",optionsKey:"priorityKeysAtStartOfYaml"}),new ne({OptionsClass:qi,nameKey:"rules.yaml-key-sort.yaml-sort-order-for-other-keys.name",descriptionKey:"rules.yaml-key-sort.yaml-sort-order-for-other-keys.description",optionsKey:"yamlSortOrderForOtherKeys",records:[{value:"None",description:"No sorting other than what is in the YAML Key Priority Sort Order text area"},{value:"Ascending Alphabetical",description:"Sorts the keys based on key value from a to z"},{value:"Descending Alphabetical",description:"Sorts the keys based on key value from z to a"}]})]}};St=T([b.register],St);var Je=require("obsidian");var Ku=gn(Pu());var $e=class{constructor(){this.dateCreatedKey="date created";this.dateCreated=!0;this.forceRetentionOfCreatedValue=!1;this.format="dddd, MMMM Do YYYY, h:mm:ss a";this.dateModified=!0;this.dateModifiedKey="date modified";this.locale="en"}};T([b.noSettingControl()],$e.prototype,"alreadyModified",2),T([b.noSettingControl()],$e.prototype,"fileCreatedTime",2),T([b.noSettingControl()],$e.prototype,"fileModifiedTime",2),T([b.noSettingControl()],$e.prototype,"locale",2),T([b.noSettingControl()],$e.prototype,"currentTime",2),T([b.noSettingControl()],$e.prototype,"fileName",2);var Wi=class extends b{constructor(){super({nameKey:"rules.yaml-timestamp.name",descriptionKey:"rules.yaml-timestamp.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return $e}apply(t,i){let n=i.alreadyModified,r=bi(t);return n=n||r!==t,Te(r,a=>{if(i.dateCreated){let s=!1;[a,s]=this.handleDateCreatedValue(a,i),n=n||s}return i.dateModified&&(a=this.handleDateModifiedValue(a,n,i)),a})}handleDateCreatedValue(t,i){let n=!1,r=` + `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"Descending Alphabetical",priorityKeysAtStartOfYaml:!1}})]}get optionBuilders(){return[new be({OptionsClass:qi,nameKey:"rules.yaml-key-sort.yaml-key-priority-sort-order.name",descriptionKey:"rules.yaml-key-sort.yaml-key-priority-sort-order.description",optionsKey:"yamlKeyPrioritySortOrder"}),new U({OptionsClass:qi,nameKey:"rules.yaml-key-sort.priority-keys-at-start-of-yaml.name",descriptionKey:"rules.yaml-key-sort.priority-keys-at-start-of-yaml.description",optionsKey:"priorityKeysAtStartOfYaml"}),new ne({OptionsClass:qi,nameKey:"rules.yaml-key-sort.yaml-sort-order-for-other-keys.name",descriptionKey:"rules.yaml-key-sort.yaml-sort-order-for-other-keys.description",optionsKey:"yamlSortOrderForOtherKeys",records:[{value:"None",description:"No sorting other than what is in the YAML Key Priority Sort Order text area"},{value:"Ascending Alphabetical",description:"Sorts the keys based on key value from a to z"},{value:"Descending Alphabetical",description:"Sorts the keys based on key value from z to a"}]})]}};Mt=A([b.register],Mt);var Je=require("obsidian");var up=da(dp());var Ye=class{constructor(){this.dateCreatedKey="date created";this.dateCreated=!0;this.forceRetentionOfCreatedValue=!1;this.format="dddd, MMMM Do YYYY, h:mm:ss a";this.dateModified=!0;this.dateModifiedKey="date modified";this.locale="en"}};A([b.noSettingControl()],Ye.prototype,"alreadyModified",2),A([b.noSettingControl()],Ye.prototype,"fileCreatedTime",2),A([b.noSettingControl()],Ye.prototype,"fileModifiedTime",2),A([b.noSettingControl()],Ye.prototype,"locale",2),A([b.noSettingControl()],Ye.prototype,"currentTime",2),A([b.noSettingControl()],Ye.prototype,"fileName",2);var Ui=class extends b{constructor(){super({nameKey:"rules.yaml-timestamp.name",descriptionKey:"rules.yaml-timestamp.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return Ye}apply(t,i){let n=i.alreadyModified,r=bi(t);return n=n||r!==t,i.format=i.format.trimEnd(),Ae(r,a=>{if(i.dateCreated){let s=!1;[a,s]=this.handleDateCreatedValue(a,i),n=n||s}return i.dateModified&&(a=this.handleDateModifiedValue(a,n,i)),a})}handleDateCreatedValue(t,i){let n=!1,r=` ${i.dateCreatedKey}: [^ ]+ `,a=` ${i.dateCreatedKey}:[ ]* `,s=new RegExp(a),o=new RegExp(r),l=(0,Je.moment)(i.fileCreatedTime);l.locale(i.locale);let d=l.format(i.format),c=` ${i.dateCreatedKey}: ${d}`,u=o.test(t);if(!u&&s.test(t))t=t.replace(s,Ke(c)+` -`),n=!0;else if(u){if(u){let m=this.getYAMLTimestampString(t,o,i.dateCreatedKey),g=(0,Je.moment)(m,i.format,i.locale,!0);if(g==null||!g.isValid()&&!i.forceRetentionOfCreatedValue)t=t.replace(o,Ke(c)+` -`),n=!0;else if(i.forceRetentionOfCreatedValue){let h=this.parseValueToCurrentFormatIfPossible(m,i.format,i.locale);if(h==null)throw new Error(E("logs.invalid-date-format-error").replace("{DATE}",m).replace("{FILE_NAME}",i.fileName));let v=` -${i.dateCreatedKey}: ${h.format(i.format)}`;t=t.replace(o,Ke(v)+` -`),n=!0}}}else{let m=t.indexOf(` ----`);t=it(t,m,` +`),n=!0;else if(u){if(u){let m=this.getYAMLTimestampString(t,o,i.dateCreatedKey);if(i.forceRetentionOfCreatedValue){let g=this.parseValueToCurrentFormatIfPossible(m,i.format,i.locale);if(g==null)throw new Error(T("logs.invalid-date-format-error").replace("{DATE}",m).replace("{FILE_NAME}",i.fileName));if(g.format(i.format)!==m){let h=` +${i.dateCreatedKey}: ${g.format(i.format)}`;t=t.replace(o,Ke(h)+` +`),n=!0}}else{let g=(0,Je.moment)(m,i.format,i.locale,!0);(g==null||!g.isValid())&&(t=t.replace(o,Ke(c)+` +`),n=!0)}}}else{let m=t.indexOf(` +---`);t=st(t,m,` ${i.dateCreatedKey}: ${d}`),n=!0}return[t,n]}handleDateModifiedValue(t,i,n){let r=` ${n.dateModifiedKey}: [^ ]+ @@ -2323,7 +2411,7 @@ ${n.dateModifiedKey}:[ ]* ${n.dateModifiedKey}: ${d}`,u=o.test(t);if(u){let m=(0,Je.moment)(t.match(o)[0].replace(n.dateModifiedKey+":","").trim(),n.format,n.locale,!0);(i||m==null||!m.isValid()||this.getTimeDifferenceInSeconds(m,l,n)>5)&&(t=t.replace(o,Ke(c)+` `))}else if(s.test(t))t=t.replace(s,Ke(c)+` `);else if(!u){let m=t.indexOf(` ----`);t=it(t,m,c)}return t}parseValueToCurrentFormatIfPossible(t,i,n){if(t==null)return null;let r=(0,Je.moment)(t,i,n,!0);if(r!=null&&r.isValid())return r;let a=(0,Ku.default)(t);if(a!=null){let s=(0,Je.moment)(t,a);return s.locale(n),(0,Je.moment)(s.format(i),i,n,!0)}return null}getYAMLTimestampString(t,i,n){return t.match(i)[0].replace(n+":","").trim()}getTimeDifferenceInSeconds(t,i,n){let r=(0,Je.moment)(i.format(n.format),n.format,n.locale,!0);return Math.abs(t.diff(r,"seconds"))}get exampleBuilders(){return[new y({description:"Adds a header with the date.",before:p` +---`);t=st(t,m,c)}return t}parseValueToCurrentFormatIfPossible(t,i,n){if(t==null)return null;let r=(0,Je.moment)(t,i,n,!0);if(r!=null&&r.isValid())return r;let a=(0,up.default)(t);if(a!=null){let s=(0,Je.moment)(t,a);return s.locale(n),(0,Je.moment)(s.format(i),i,n,!0)}return null}getYAMLTimestampString(t,i,n){return t.match(i)[0].replace(n+":","").trim()}getTimeDifferenceInSeconds(t,i,n){let r=(0,Je.moment)(i.format(n.format),n.format,n.locale,!0);return Math.abs(t.diff(r,"seconds"))}get exampleBuilders(){return[new y({description:"Adds a header with the date.",before:p` # H1 `,after:p` --- @@ -2352,14 +2440,12 @@ ${n.dateModifiedKey}: ${d}`,u=o.test(t);if(u){let m=(0,Je.moment)(t.match(o)[0]. modified: Wednesday, January 1st 2020, 4:00:00 pm --- # H1 - `,options:{dateCreated:!1,dateModified:!0,dateModifiedKey:"modified",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,Je.moment)("Wednesday, January 1st 2020, 4:00:00 pm","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}})]}get optionBuilders(){return[new U({OptionsClass:$e,nameKey:"rules.yaml-timestamp.date-created.name",descriptionKey:"rules.yaml-timestamp.date-created.description",optionsKey:"dateCreated"}),new Ve({OptionsClass:$e,nameKey:"rules.yaml-timestamp.date-created-key.name",descriptionKey:"rules.yaml-timestamp.date-created-key.description",optionsKey:"dateCreatedKey"}),new U({OptionsClass:$e,nameKey:"rules.yaml-timestamp.force-retention-of-create-value.name",descriptionKey:"rules.yaml-timestamp.force-retention-of-create-value.description",optionsKey:"forceRetentionOfCreatedValue"}),new U({OptionsClass:$e,nameKey:"rules.yaml-timestamp.date-modified.name",descriptionKey:"rules.yaml-timestamp.date-modified.description",optionsKey:"dateModified"}),new Ve({OptionsClass:$e,nameKey:"rules.yaml-timestamp.date-modified-key.name",descriptionKey:"rules.yaml-timestamp.date-modified-key.description",optionsKey:"dateModifiedKey"}),new Ga({OptionsClass:$e,nameKey:"rules.yaml-timestamp.format.name",descriptionKey:"rules.yaml-timestamp.format.description",optionsKey:"format"})]}};Wi=T([b.register],Wi);var zi=class{constructor(){this.preserveExistingAliasesSectionStyle=!0;this.keepAliasThatMatchesTheFilename=!1;this.useYamlKeyToKeepTrackOfOldFilenameOrHeading=!0;this.aliasArrayStyle="multi-line";this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};T([b.noSettingControl()],zi.prototype,"aliasArrayStyle",2),T([b.noSettingControl()],zi.prototype,"fileName",2),T([b.noSettingControl()],zi.prototype,"defaultEscapeCharacter",2),T([b.noSettingControl()],zi.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var Br=class extends b{constructor(){super({nameKey:"rules.yaml-title-alias.name",descriptionKey:"rules.yaml-title-alias.description",type:"YAML"})}get OptionsClass(){return zi}apply(t,i){t=bi(t);let n=qe([f.code,f.math,f.yaml,f.tag],t,Fa);n=n||i.fileName;let r=null,a=t.match(Se)[1],s=!i.keepAliasThatMatchesTheFilename&&n===i.fileName;i.useYamlKeyToKeepTrackOfOldFilenameOrHeading&&(r=Xe(Ee(a,Rn)));let o=a.replace(`--- + `,options:{dateCreated:!1,dateModified:!0,dateModifiedKey:"modified",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,Je.moment)("Wednesday, January 1st 2020, 4:00:00 pm","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}})]}get optionBuilders(){return[new U({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.date-created.name",descriptionKey:"rules.yaml-timestamp.date-created.description",optionsKey:"dateCreated"}),new We({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.date-created-key.name",descriptionKey:"rules.yaml-timestamp.date-created-key.description",optionsKey:"dateCreatedKey"}),new U({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.force-retention-of-create-value.name",descriptionKey:"rules.yaml-timestamp.force-retention-of-create-value.description",optionsKey:"forceRetentionOfCreatedValue"}),new U({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.date-modified.name",descriptionKey:"rules.yaml-timestamp.date-modified.description",optionsKey:"dateModified"}),new We({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.date-modified-key.name",descriptionKey:"rules.yaml-timestamp.date-modified-key.description",optionsKey:"dateModifiedKey"}),new ds({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.format.name",descriptionKey:"rules.yaml-timestamp.format.description",optionsKey:"format"})]}};Ui=A([b.register],Ui);var zi=class{constructor(){this.preserveExistingAliasesSectionStyle=!0;this.keepAliasThatMatchesTheFilename=!1;this.useYamlKeyToKeepTrackOfOldFilenameOrHeading=!0;this.aliasArrayStyle="multi-line";this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};A([b.noSettingControl()],zi.prototype,"aliasArrayStyle",2),A([b.noSettingControl()],zi.prototype,"fileName",2),A([b.noSettingControl()],zi.prototype,"defaultEscapeCharacter",2),A([b.noSettingControl()],zi.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var Hr=class extends b{constructor(){super({nameKey:"rules.yaml-title-alias.name",descriptionKey:"rules.yaml-title-alias.description",type:"YAML"})}get OptionsClass(){return zi}apply(t,i){t=bi(t);let[n,r]=this.getTitleInfo(t,i.fileName,i.aliasArrayStyle,i.defaultEscapeCharacter),a=null,s=t.match(Ge)[1],o=!i.keepAliasThatMatchesTheFilename&&n===i.fileName,l=s.replace(`--- `,"").replace(` ----`,""),l=Xe(a);r=Xe(Ee(a,Rn));let d=n.includes(",")&&(i.aliasArrayStyle==="single-line"||i.aliasArrayStyle==="single string to single-line"||i.aliasArrayStyle==="single string comma delimited");n=xi(n,i.defaultEscapeCharacter,d);let c=function(g,h){if(g==null)return h?"":n;if(typeof g=="string")h?g===n&&(g=""):r===g?g=n:g=[n,g];else if(r!==null){let v=g.indexOf(r);v!==-1&&(h?g.splice(v,1):g[v]=n)}else{let v=g.indexOf(n);v!==-1?h&&g.splice(v,1):h||(g=[n,...g])}return g===""||g.length===0?"":g},u=null,m=Object.keys(l);for(let g of Fn)if(m.includes(g)){u=g;break}if(u!=null){let g=Ee(o,u),h="multi-line",v=g==="",w=!1;g.includes(` -`)||(g.match(/^\[.*\]/)===null?(h="single string to single-line",w=!0):h="single-line");let z=Na(vi(g)),S=c(z,s);S===""?o=st(o,u):i.preserveExistingAliasesSectionStyle?!v&&(w&&n==S||!w||z==S)?o=Ae(o,u,Qe(S,h,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)):o=Ae(o,u,Qe(S,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)):o=Ae(o,u,Qe(S,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays))}else s||(o=Ae(o,No,Qe(n,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)));return!i.useYamlKeyToKeepTrackOfOldFilenameOrHeading||s?o=st(o,Rn):o=Ae(o,Rn,` ${n}`),t=t.replace(`--- -${a}--- -`,`--- -${o}--- -`),t}get exampleBuilders(){return[new y({description:"Adds a header with the title from heading.",before:p` +---`,""),d=Mi(s);a=d[Ja]??null,a!=null&&(a=a+"",a=li(a,i.defaultEscapeCharacter,this.forceEscape(a,i.aliasArrayStyle)));let c=null,u=Object.keys(d);for(let m of Wn)if(u.includes(m)){c=m;break}if(c!=null){let m=Ce(l,c),g="multi-line",h=m==="",v=!1;m.includes(` +`)||(m.match(/^\[.*\]/)===null?(g="single string to single-line",v=!0):g="single-line");let x=es(vi(m)),w=this.getNewAliasValue(x,o,r,a);w===""?l=ut(l,c):i.preserveExistingAliasesSectionStyle?!h&&(v&&r==w||!v||x==w)?l=Le(l,c,Qe(w,g,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0)):l=Le(l,c,Qe(w,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0)):l=Le(l,c,Qe(w,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0))}else o||(l=Le(l,nl,Qe(r,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0)));return!i.useYamlKeyToKeepTrackOfOldFilenameOrHeading||o?l=ut(l,Ja):l=Le(l,Ja,` ${r}`),t=t.replace(`--- +${s}---`,`--- +${l}---`),t}getTitleInfo(t,i,n,r){let a=we([f.code,f.math,f.yaml,f.tag],t,Qa);a=a||i;let s=li(a,r,this.forceEscape(a,n));return[a,s]}forceEscape(t,i){return Ca(t)||t.includes(",")&&(i==="single-line"||i==="single string to single-line"||i==="single string comma delimited")}getNewAliasValue(t,i,n,r){if(t==null)return i?"":n;if(typeof t=="string")i?t===n&&(t=""):r===t?t=n:t=[n,t];else if(r!==null){let a=t.indexOf(r);a===-1&&tn(r)&&(a=t.indexOf(r.substring(1,r.length-1))),a!==-1?i?t.splice(a,1):t[a]=n:t=[n,...t]}else{let a=t.indexOf(n);a!==-1?i&&t.splice(a,1):i||(t=[n,...t])}return t===""||t.length===0?"":t}get exampleBuilders(){return[new y({description:"Adds a header with the title from heading.",before:p` # Obsidian `,after:p` --- @@ -2418,13 +2504,13 @@ ${o}--- linter-yaml-title-alias: This is a Heading --- # This is a [Heading](markdown.md) - `,options:{aliasArrayStyle:"multi-line"}})]}get optionBuilders(){return[new U({OptionsClass:zi,nameKey:"rules.yaml-title-alias.preserve-existing-alias-section-style.name",descriptionKey:"rules.yaml-title-alias.preserve-existing-alias-section-style.description",optionsKey:"preserveExistingAliasesSectionStyle"}),new U({OptionsClass:zi,nameKey:"rules.yaml-title-alias.keep-alias-that-matches-the-filename.name",descriptionKey:"rules.yaml-title-alias.keep-alias-that-matches-the-filename.description",optionsKey:"keepAliasThatMatchesTheFilename"}),new U({OptionsClass:zi,nameKey:"rules.yaml-title-alias.use-yaml-key-to-keep-track-of-old-filename-or-heading.name",descriptionKey:"rules.yaml-title-alias.use-yaml-key-to-keep-track-of-old-filename-or-heading.description",optionsKey:"useYamlKeyToKeepTrackOfOldFilenameOrHeading"})]}};Br=T([b.register],Br);var Tt=class{constructor(){this.defaultEscapeCharacter='"';this.titleKey="title";this.mode="first-h1-or-filename-if-h1-missing"}};T([b.noSettingControl()],Tt.prototype,"fileName",2),T([b.noSettingControl()],Tt.prototype,"defaultEscapeCharacter",2);var Fr=class extends b{constructor(){super({nameKey:"rules.yaml-title.name",descriptionKey:"rules.yaml-title.description",type:"YAML"})}get OptionsClass(){return Tt}apply(t,i){t=bi(t);let n="";switch(i.mode){case"filename":n=i.fileName;break;case"first-h1":n=this.getFirstH1Header(t);break;default:n=this.getFirstH1Header(t),n=n||i.fileName}return n=xi(n,i.defaultEscapeCharacter),Te(t,r=>{let a=` + `,options:{aliasArrayStyle:"multi-line"}})]}get optionBuilders(){return[new U({OptionsClass:zi,nameKey:"rules.yaml-title-alias.preserve-existing-alias-section-style.name",descriptionKey:"rules.yaml-title-alias.preserve-existing-alias-section-style.description",optionsKey:"preserveExistingAliasesSectionStyle"}),new U({OptionsClass:zi,nameKey:"rules.yaml-title-alias.keep-alias-that-matches-the-filename.name",descriptionKey:"rules.yaml-title-alias.keep-alias-that-matches-the-filename.description",optionsKey:"keepAliasThatMatchesTheFilename"}),new U({OptionsClass:zi,nameKey:"rules.yaml-title-alias.use-yaml-key-to-keep-track-of-old-filename-or-heading.name",descriptionKey:"rules.yaml-title-alias.use-yaml-key-to-keep-track-of-old-filename-or-heading.description",optionsKey:"useYamlKeyToKeepTrackOfOldFilenameOrHeading"})]}};Hr=A([b.register],Hr);var qt=class{constructor(){this.defaultEscapeCharacter='"';this.titleKey="title";this.mode="first-h1-or-filename-if-h1-missing"}};A([b.noSettingControl()],qt.prototype,"fileName",2),A([b.noSettingControl()],qt.prototype,"defaultEscapeCharacter",2);var $r=class extends b{constructor(){super({nameKey:"rules.yaml-title.name",descriptionKey:"rules.yaml-title.description",type:"YAML"})}get OptionsClass(){return qt}apply(t,i){t=bi(t);let n="";switch(i.mode){case"filename":n=i.fileName;break;case"first-h1":n=this.getFirstH1Header(t);break;default:n=this.getFirstH1Header(t),n=n||i.fileName}return n=li(n,i.defaultEscapeCharacter),Ae(t,r=>{let a=` ${i.titleKey}.* `,s=new RegExp(a);if(s.test(r))r=r.replace(s,Ke(` ${i.titleKey}: ${n} `));else{let o=r.indexOf(` ----`);r=it(r,o,` -${i.titleKey}: ${n}`)}return r})}getFirstH1Header(t){return qe([f.code,f.math,f.yaml,f.tag],t,Fa)}get exampleBuilders(){return[new y({description:"Adds a header with the title from heading when `mode = 'First H1 or Filename if H1 Missing'`.",before:p` +---`);r=st(r,o,` +${i.titleKey}: ${n}`)}return r})}getFirstH1Header(t){return we([f.code,f.math,f.yaml,f.tag],t,Qa)}get exampleBuilders(){return[new y({description:"Adds a header with the title from heading when `mode = 'First H1 or Filename if H1 Missing'`.",before:p` # Obsidian `,after:p` --- @@ -2459,13 +2545,13 @@ ${i.titleKey}: ${n}`)}return r})}getFirstH1Header(t){return qe([f.code,f.math,f. title: Filename --- # This is a Heading - `,options:{mode:"filename",fileName:"Filename"}})]}get optionBuilders(){return[new Ve({OptionsClass:Tt,nameKey:"rules.yaml-title.title-key.name",descriptionKey:"rules.yaml-title.title-key.description",optionsKey:"titleKey"}),new ne({OptionsClass:Tt,nameKey:"rules.yaml-title.mode.name",descriptionKey:"rules.yaml-title.mode.description",optionsKey:"mode",records:[{value:"first-h1-or-filename-if-h1-missing",description:"Uses the first H1 in the file or the filename of the file if there is not H1"},{value:"filename",description:"Uses the filename as the title"},{value:"first-h1",description:"Uses the first H1 in the file as the title"}]})]}};Fr=T([b.register],Fr);var Ov=` + `,options:{mode:"filename",fileName:"Filename"}})]}get optionBuilders(){return[new We({OptionsClass:qt,nameKey:"rules.yaml-title.title-key.name",descriptionKey:"rules.yaml-title.title-key.description",optionsKey:"titleKey"}),new ne({OptionsClass:qt,nameKey:"rules.yaml-title.mode.name",descriptionKey:"rules.yaml-title.mode.description",optionsKey:"mode",records:[{value:"first-h1-or-filename-if-h1-missing",description:"Uses the first H1 in the file or the filename of the file if there is not H1"},{value:"filename",description:"Uses the filename as the title"},{value:"first-h1",description:"Uses the first H1 in the file as the title"}]})]}};$r=A([b.register],$r);var ox=` -`,Cv=` +`,lx=` @@ -2473,7 +2559,7 @@ ${i.titleKey}: ${n}`)}return r})}getFirstH1Header(t){return qe([f.code,f.math,f. -`,qv=` +`,cx=` @@ -2486,44 +2572,51 @@ ${i.titleKey}: ${n}`)}return r})}getFirstH1Header(t){return qe([f.code,f.math,f. -`,Mv=` +`,dx=` -`,Iv=` +`,ux=` -`,_v=` +`,px=` -`,Bv=` +`,mx=` -`,Fv=` +`,gx=` -`,Rv=` +`,hx=` -`,Dv=` +`,fx=` -`,Nv=` +`,yx=` -`,jv=` +`,bx=` -`,Pv=` +`,vx=` -`,we={folder:{id:"lint-folder",source:Cv},file:{id:"lint-file",source:Ov},vault:{id:"lint-vault",source:qv},whitespace:{id:"lint-whitespace",source:Mv},math:{id:"lint-math",source:Iv},content:{id:"lint-content",source:_v},paste:{id:"lint-paste",source:Bv},custom:{id:"lint-custom",source:Fv},heading:{id:"lint-heading",source:Rv},footer:{id:"lint-footer",source:Dv},yaml:{id:"lint-yaml",source:Nv},general:{id:"lint-general",source:jv},debug:{id:"lint-debug",source:Pv}};var Xt=require("obsidian");var bs=class{constructor(){this.disabledRules=[]}lintText(t){jt(E("logs.rule-running"));let i=t.oldText;this.disabledRules=Lu(i);let n=E("logs.pre-rules");jt(n);let r=this.runBeforeRegularRules(t);Pt(n);let a=E("logs.disabled-text");for(let o of Ki){if(this.disabledRules.includes(o.alias)){fi(o.alias+" "+a);continue}else if(o.hasSpecialExecutionOrder||o.type==="Paste")continue;jt(o.alias),[r]=li.applyIfEnabledBase(o,r,t.settings,{fileCreatedTime:t.fileInfo.createdAtFormatted,fileModifiedTime:t.fileInfo.modifiedAtFormatted,fileName:t.fileInfo.name,locale:t.momentLocale,minimumNumberOfDollarSignsToBeAMathBlock:t.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock,aliasArrayStyle:t.settings.commonStyles.aliasArrayStyle,tagArrayStyle:t.settings.commonStyles.tagArrayStyle,defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter,removeUnnecessaryEscapeCharsForMultiLineArrays:t.settings.commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays}),Pt(o.alias)}let s=E("logs.custom-regex");return jt(s),r=this.runCustomRegexReplacement(t.settings.customRegexes,r),Pt(s),t.oldText=r,this.runAfterRegularRules(i,t)}runBeforeRegularRules(t){let i=t.oldText;return[i]=gt.applyIfEnabled(i,t.settings,this.disabledRules),[i]=pt.applyIfEnabled(i,t.settings,this.disabledRules,{defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter}),i}runAfterRegularRules(t,i){let n=i.oldText,r=E("logs.post-rules");jt(r),[n]=ut.applyIfEnabled(n,i.settings,this.disabledRules),[n]=lt.applyIfEnabled(n,i.settings,this.disabledRules),[n]=mt.applyIfEnabled(n,i.settings,this.disabledRules,{defaultEscapeCharacter:i.settings.commonStyles.escapeCharacter});let a=i.getCurrentTime(),s;[n,s]=Wi.applyIfEnabled(n,i.settings,this.disabledRules,{fileCreatedTime:i.fileInfo.createdAtFormatted,fileModifiedTime:i.fileInfo.modifiedAtFormatted,currentTime:a,alreadyModified:t!=n,locale:i.momentLocale});let o=Wi.getRuleOptions(i.settings);return a=i.getCurrentTime(),[n]=St.applyIfEnabled(n,i.settings,this.disabledRules,{currentTimeFormatted:a.format(o.format),yamlTimestampDateModifiedEnabled:s&&o.dateModified,dateModifiedKey:o.dateModifiedKey}),Pt(r),Pt(E("logs.rule-running")),n}runCustomCommands(t,i){fi(E("logs.running-custom-lint-command"));let n=new Set;for(let r of t){if(r.id){if(n.has(r.id)){et(E("logs.custom-lint-duplicate-warning").replace("{COMMAND_NAME}",r.name));continue}}else continue;try{n.add(r.id),i.executeCommandById(r.id)}catch(a){Va(a,`${E("logs.custom-lint-error-message")} ${r.id}`)}}}runCustomRegexReplacement(t,i){fi(E("logs.running-custom-regex"));let n=i;for(let r of t){if(r.find==null||r.replace===void 0||r.replace===null)continue;let a=new RegExp(`${r.find}`,r.flags);n=n.replace(a,td(r.replace))}return n}runPasteLint(t,i){let n=i.oldText;return[n]=vt.applyIfEnabled(n,i.settings,[]),[n]=kt.applyIfEnabled(n,i.settings,[]),[n]=wt.applyIfEnabled(n,i.settings,[]),[n]=yt.applyIfEnabled(n,i.settings,[]),[n]=xt.applyIfEnabled(n,i.settings,[]),[n]=ht.applyIfEnabled(n,i.settings,[],{lineContent:t}),[n]=ft.applyIfEnabled(n,i.settings,[],{lineContent:t}),[n]=ct.applyIfEnabled(n,i.settings,[],{lineContent:t}),n}};function Rr(e,t=null,i,n){let r=t?(0,Xt.moment)(t.stat.ctime):(0,Xt.moment)();r.locale(i);let a=t?(0,Xt.moment)(t.stat.mtime):(0,Xt.moment)();a.locale(i);let s=a.format(),o=r.format();return{oldText:e,fileInfo:{name:t?t.basename:"",createdAtFormatted:o,modifiedAtFormatted:s},settings:n,momentLocale:i,getCurrentTime:()=>{let l=(0,Xt.moment)();return l.locale(i),l}}}var vs=require("obsidian");var Dr=class extends vs.Modal{constructor(t,i,n,r,a){super(t),this.modalEl.addClass("confirm-modal"),this.contentEl.createEl("h3",{text:E("warning-text")}).style.textAlign="center",this.contentEl.createEl("p",{text:i+" "+E("file-backup-text")}).id="confirm-dialog",this.contentEl.createDiv("modal-button-container",s=>{s.createEl("button",{text:"Cancel"}).addEventListener("click",()=>this.close());let o=s.createEl("button",{attr:{type:"submit"},cls:"mod-cta",text:n});o.addEventListener("click",async l=>{new vs.Notice(r),this.close(),await a()}),setTimeout(()=>{o.focus()},50)})}};var Gi=require("obsidian");var $u=require("obsidian");var Kv={General:we.general.id,Custom:we.custom.id,YAML:we.yaml.id,Heading:we.heading.id,Footnote:we.footer.id,Content:we.content.id,Spacing:we.whitespace.id,Paste:we.paste.id,Debug:we.debug.id},$v={General:"tabs.names.general",Custom:"tabs.names.custom",YAML:"tabs.names.yaml",Heading:"tabs.names.heading",Footnote:"tabs.names.footnote",Content:"tabs.names.content",Spacing:"tabs.names.spacing",Paste:"tabs.names.paste",Debug:"tabs.names.debug"},Si=class{constructor(t,i,n,r,a){this.name=n;this.isMobile=r;this.plugin=a;this.searchSettingInfo=[];this.navButton=t.createDiv("linter-navigation-item");let s="linter-desktop";r&&(s="linter-mobile"),this.navButton.addClass(s),(0,$u.setIcon)(this.navButton.createSpan({cls:"linter-navigation-item-icon"}),Kv[n]);let o=E($v[n]);this.navButton.createSpan().setText(o),this.contentEl=i.createDiv("linter-tab-settings"),this.contentEl.id=n.toLowerCase().replace(" ","-"),this.headingEl=this.contentEl.createEl("h2",{text:o}),ei(this.headingEl)}addSettingSearchInfo(t,i="",n="",r=null,a=null){this.searchSettingInfo.push({containerEl:t,name:i.toLowerCase(),description:n.toLowerCase(),options:r,alias:a})}updateTabDisplayMode(t,i="the status is still the same"){switch(t?(this.navButton.addClass("linter-navigation-item-selected"),ki(this.contentEl)):(this.navButton.removeClass("linter-navigation-item-selected"),ei(this.contentEl)),i){case"entering search mode by focusing on the search input box":ki(this.contentEl),ki(this.headingEl);for(let n of this.searchSettingInfo)ki(n.containerEl);break;case"leaving search mode by selecting a tab":ei(this.headingEl);for(let n of this.searchSettingInfo)ki(n.containerEl);break}}};var Ti=require("obsidian"),Hu=require("obsidian");var xs=class extends Si{constructor(t,i,n,r){super(t,i,"General",n,r),this.display()}display(){let t=this.contentEl.createDiv(),i=E("tabs.general.lint-on-save.name"),n=E("tabs.general.lint-on-save.description"),r=new Ti.Setting(t).setName(i).addToggle(d=>{d.setValue(this.plugin.settings.lintOnSave).onChange(async c=>{this.plugin.settings.lintOnSave=c,await this.plugin.saveSettings()})});wi(n,r.descEl,this.plugin.settingsTab.component),this.addSettingSearchInfo(t,i,n),t=this.contentEl.createDiv(),i=E("tabs.general.display-message.name"),n=E("tabs.general.display-message.description"),new Ti.Setting(t).setName(i).setDesc(n).addToggle(d=>{d.setValue(this.plugin.settings.displayChanged).onChange(async c=>{this.plugin.settings.displayChanged=c,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n),t=this.contentEl.createDiv(),i=E("tabs.general.folders-to-ignore.name"),n=E("tabs.general.folders-to-ignore.description"),new Ti.Setting(t).setName(i).setDesc(n).addTextArea(d=>{d.setValue(this.plugin.settings.foldersToIgnore.join(` -`)).onChange(async c=>{this.plugin.settings.foldersToIgnore=c.split(` -`),await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n);let a=navigator.language?.toLowerCase();t=this.contentEl.createDiv(),i=E("tabs.general.override-locale.name"),n=E("tabs.general.override-locale.description"),new Ti.Setting(t).setName(i).setDesc(n).addDropdown(d=>{d.addOption("system-default",E("tabs.general.same-as-system-locale").replace("{SYS_LOCALE}",a)),Hu.moment.locales().forEach(c=>{d.addOption(c,c)}),d.setValue(this.plugin.settings.linterLocale),d.onChange(async c=>{this.plugin.settings.linterLocale=c,await this.plugin.setOrUpdateMomentInstance(),await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n);let s=["multi-line","single-line","single string comma delimited","single string to single-line","single string to multi-line"];t=this.contentEl.createDiv(),i=E("tabs.general.yaml-aliases-section-style.name"),n=E("tabs.general.yaml-aliases-section-style.description"),new Ti.Setting(t).setName(i).setDesc(n).addDropdown(d=>{s.forEach(c=>{let u="enums."+c;d.addOption(c,E(u))}),d.setValue(this.plugin.settings.commonStyles.aliasArrayStyle),d.onChange(async c=>{this.plugin.settings.commonStyles.aliasArrayStyle=c,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n);let o=["multi-line","single-line","single string to single-line","single string to multi-line","single-line space delimited","single string space delimited","single string comma delimited"];t=this.contentEl.createDiv(),i=E("tabs.general.yaml-tags-section-style.name"),n=E("tabs.general.yaml-tags-section-style.description"),new Ti.Setting(t).setName(i).setDesc(n).addDropdown(d=>{o.forEach(c=>{let u="enums."+c;d.addOption(c,E(u))}),d.setValue(this.plugin.settings.commonStyles.tagArrayStyle),d.onChange(async c=>{this.plugin.settings.commonStyles.tagArrayStyle=c,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n);let l=['"',"'"];t=this.contentEl.createDiv(),i=E("tabs.general.default-escape-character.name"),n=E("tabs.general.default-escape-character.description"),new Ti.Setting(t).setName(i).setDesc(n).addDropdown(d=>{l.forEach(c=>{d.addOption(c,c)}),d.setValue(this.plugin.settings.commonStyles.escapeCharacter),d.onChange(async c=>{this.plugin.settings.commonStyles.escapeCharacter=c,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n),t=this.contentEl.createDiv(),i=E("tabs.general.remove-unnecessary-escape-chars-in-multi-line-arrays.name"),n=E("tabs.general.remove-unnecessary-escape-chars-in-multi-line-arrays.description"),new Ti.Setting(t).setName(i).setDesc(n).addToggle(d=>{d.setValue(this.plugin.settings.commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays).onChange(async c=>{this.plugin.settings.commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays=c,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n),t=this.contentEl.createDiv(),i=E("tabs.general.number-of-dollar-signs-to-indicate-math-block.name"),n=E("tabs.general.number-of-dollar-signs-to-indicate-math-block.description"),new Ti.Setting(t).setName(i).setDesc(n).addText(d=>{d.setValue(this.plugin.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock.toString()).onChange(async c=>{let u=parseInt(c);isNaN(u)&&(u=2),this.plugin.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock=u,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n)}};var ws=class extends Si{constructor(i,n,r,a,s,o){super(i,n,r,s,o);this.rules=a;this.display()}display(){for(let i of this.rules){let n=this.contentEl.createDiv();n.id=i.alias,n.createEl(this.isMobile?"h4":"h3",{},a=>{a.innerHTML=`${i.getName()}`});let r=[];for(let a of i.options)a.display(n,this.plugin.settings,this.plugin),r.push(a.getSearchInfo());this.addSettingSearchInfo(n,i.getName().toLowerCase(),i.getDescription().toLowerCase(),r,n.id)}}};var gp=require("obsidian");var Yu=require("obsidian");var en=class{constructor(t,i,n,r,a,s,o,l,d){this.containerEl=t;this.parentComponent=i;this.name=n;this.description=r;this.warning=a;this.addInputBtnText=s;this.isMobile=o;this.saveSettings=l;this.onAddInput=d}display(){this.containerEl.createEl(this.isMobile?"h4":"h3",{text:this.name}),wi(this.description,this.containerEl,this.parentComponent),this.warning!=null&&this.containerEl.createEl("p",{text:this.warning,cls:"mod-warning"}),new Yu.Setting(this.containerEl).addButton(t=>{t.setButtonText(this.addInputBtnText).setCta().onClick(()=>this.onAddInput())}),this.inputElDiv=this.containerEl.createDiv(),this.showInputEls()}resetInputEls(){this.inputElDiv.empty(),this.showInputEls()}};var mp=require("obsidian");var pe="top",ke="bottom",ve="right",ge="left",ks="auto",Vi=[pe,ke,ve,ge],Mi="start",At="end",Wu="clippingParents",zs="viewport",tn="popper",Vu="reference",xl=Vi.reduce(function(e,t){return e.concat([t+"-"+Mi,t+"-"+At])},[]),Ss=[].concat(Vi,[ks]).reduce(function(e,t){return e.concat([t,t+"-"+Mi,t+"-"+At])},[]),Hv="beforeRead",Yv="read",Wv="afterRead",Vv="beforeMain",Uv="main",Gv="afterMain",Qv="beforeWrite",Zv="write",Jv="afterWrite",Uu=[Hv,Yv,Wv,Vv,Uv,Gv,Qv,Zv,Jv];function Le(e){return e?(e.nodeName||"").toLowerCase():null}function le(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function ti(e){var t=le(e).Element;return e instanceof t||e instanceof Element}function ze(e){var t=le(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function nn(e){if(typeof ShadowRoot>"u")return!1;var t=le(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Xv(e){var t=e.state;Object.keys(t.elements).forEach(function(i){var n=t.styles[i]||{},r=t.attributes[i]||{},a=t.elements[i];!ze(a)||!Le(a)||(Object.assign(a.style,n),Object.keys(r).forEach(function(s){var o=r[s];o===!1?a.removeAttribute(s):a.setAttribute(s,o===!0?"":o)}))})}function ex(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(n){var r=t.elements[n],a=t.attributes[n]||{},s=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:i[n]),o=s.reduce(function(l,d){return l[d]="",l},{});!ze(r)||!Le(r)||(Object.assign(r.style,o),Object.keys(a).forEach(function(l){r.removeAttribute(l)}))})}}var Gu={name:"applyStyles",enabled:!0,phase:"write",fn:Xv,effect:ex,requires:["computeStyles"]};function Oe(e){return e.split("-")[0]}var ci=Math.max,Et=Math.min,Ii=Math.round;function rn(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function Nr(){return!/^((?!chrome|android).)*safari/i.test(rn())}function ni(e,t,i){t===void 0&&(t=!1),i===void 0&&(i=!1);var n=e.getBoundingClientRect(),r=1,a=1;t&&ze(e)&&(r=e.offsetWidth>0&&Ii(n.width)/e.offsetWidth||1,a=e.offsetHeight>0&&Ii(n.height)/e.offsetHeight||1);var s=ti(e)?le(e):window,o=s.visualViewport,l=!Nr()&&i,d=(n.left+(l&&o?o.offsetLeft:0))/r,c=(n.top+(l&&o?o.offsetTop:0))/a,u=n.width/r,m=n.height/a;return{width:u,height:m,top:c,right:d+u,bottom:c+m,left:d,x:d,y:c}}function Lt(e){var t=ni(e),i=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:n}}function jr(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(i&&nn(i)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function He(e){return le(e).getComputedStyle(e)}function wl(e){return["table","td","th"].indexOf(Le(e))>=0}function Me(e){return((ti(e)?e.ownerDocument:e.document)||window.document).documentElement}function _i(e){return Le(e)==="html"?e:e.assignedSlot||e.parentNode||(nn(e)?e.host:null)||Me(e)}function Qu(e){return!ze(e)||He(e).position==="fixed"?null:e.offsetParent}function ix(e){var t=/firefox/i.test(rn()),i=/Trident/i.test(rn());if(i&&ze(e)){var n=He(e);if(n.position==="fixed")return null}var r=_i(e);for(nn(r)&&(r=r.host);ze(r)&&["html","body"].indexOf(Le(r))<0;){var a=He(r);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||t&&a.willChange==="filter"||t&&a.filter&&a.filter!=="none")return r;r=r.parentNode}return null}function di(e){for(var t=le(e),i=Qu(e);i&&wl(i)&&He(i).position==="static";)i=Qu(i);return i&&(Le(i)==="html"||Le(i)==="body"&&He(i).position==="static")?t:i||ix(e)||t}function Ot(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Ct(e,t,i){return ci(e,Et(t,i))}function Zu(e,t,i){var n=Ct(e,t,i);return n>i?i:n}function Pr(){return{top:0,right:0,bottom:0,left:0}}function Kr(e){return Object.assign({},Pr(),e)}function $r(e,t){return t.reduce(function(i,n){return i[n]=e,i},{})}var tx=function(t,i){return t=typeof t=="function"?t(Object.assign({},i.rects,{placement:i.placement})):t,Kr(typeof t!="number"?t:$r(t,Vi))};function nx(e){var t,i=e.state,n=e.name,r=e.options,a=i.elements.arrow,s=i.modifiersData.popperOffsets,o=Oe(i.placement),l=Ot(o),d=[ge,ve].indexOf(o)>=0,c=d?"height":"width";if(!(!a||!s)){var u=tx(r.padding,i),m=Lt(a),g=l==="y"?pe:ge,h=l==="y"?ke:ve,v=i.rects.reference[c]+i.rects.reference[l]-s[l]-i.rects.popper[c],w=s[l]-i.rects.reference[l],z=di(a),S=z?l==="y"?z.clientHeight||0:z.clientWidth||0:0,L=v/2-w/2,q=u[g],_=S-m[c]-u[h],A=S/2-m[c]/2+L,F=Ct(q,A,_),M=l;i.modifiersData[n]=(t={},t[M]=F,t.centerOffset=F-A,t)}}function rx(e){var t=e.state,i=e.options,n=i.element,r=n===void 0?"[data-popper-arrow]":n;r!=null&&(typeof r=="string"&&(r=t.elements.popper.querySelector(r),!r)||jr(t.elements.popper,r)&&(t.elements.arrow=r))}var Ju={name:"arrow",enabled:!0,phase:"main",fn:nx,effect:rx,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ri(e){return e.split("-")[1]}var ax={top:"auto",right:"auto",bottom:"auto",left:"auto"};function sx(e,t){var i=e.x,n=e.y,r=t.devicePixelRatio||1;return{x:Ii(i*r)/r||0,y:Ii(n*r)/r||0}}function Xu(e){var t,i=e.popper,n=e.popperRect,r=e.placement,a=e.variation,s=e.offsets,o=e.position,l=e.gpuAcceleration,d=e.adaptive,c=e.roundOffsets,u=e.isFixed,m=s.x,g=m===void 0?0:m,h=s.y,v=h===void 0?0:h,w=typeof c=="function"?c({x:g,y:v}):{x:g,y:v};g=w.x,v=w.y;var z=s.hasOwnProperty("x"),S=s.hasOwnProperty("y"),L=ge,q=pe,_=window;if(d){var A=di(i),F="clientHeight",M="clientWidth";if(A===le(i)&&(A=Me(i),He(A).position!=="static"&&o==="absolute"&&(F="scrollHeight",M="scrollWidth")),A=A,r===pe||(r===ge||r===ve)&&a===At){q=ke;var D=u&&A===_&&_.visualViewport?_.visualViewport.height:A[F];v-=D-n.height,v*=l?1:-1}if(r===ge||(r===pe||r===ke)&&a===At){L=ve;var H=u&&A===_&&_.visualViewport?_.visualViewport.width:A[M];g-=H-n.width,g*=l?1:-1}}var j=Object.assign({position:o},d&&ax),V=c===!0?sx({x:g,y:v},le(i)):{x:g,y:v};if(g=V.x,v=V.y,l){var R;return Object.assign({},j,(R={},R[q]=S?"0":"",R[L]=z?"0":"",R.transform=(_.devicePixelRatio||1)<=1?"translate("+g+"px, "+v+"px)":"translate3d("+g+"px, "+v+"px, 0)",R))}return Object.assign({},j,(t={},t[q]=S?v+"px":"",t[L]=z?g+"px":"",t.transform="",t))}function ox(e){var t=e.state,i=e.options,n=i.gpuAcceleration,r=n===void 0?!0:n,a=i.adaptive,s=a===void 0?!0:a,o=i.roundOffsets,l=o===void 0?!0:o;if(!1)var d;var c={placement:Oe(t.placement),variation:ri(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Xu(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Xu(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var ep={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:ox,data:{}};var Ts={passive:!0};function lx(e){var t=e.state,i=e.instance,n=e.options,r=n.scroll,a=r===void 0?!0:r,s=n.resize,o=s===void 0?!0:s,l=le(t.elements.popper),d=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&d.forEach(function(c){c.addEventListener("scroll",i.update,Ts)}),o&&l.addEventListener("resize",i.update,Ts),function(){a&&d.forEach(function(c){c.removeEventListener("scroll",i.update,Ts)}),o&&l.removeEventListener("resize",i.update,Ts)}}var ip={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:lx,data:{}};var cx={left:"right",right:"left",bottom:"top",top:"bottom"};function an(e){return e.replace(/left|right|bottom|top/g,function(t){return cx[t]})}var dx={start:"end",end:"start"};function As(e){return e.replace(/start|end/g,function(t){return dx[t]})}function qt(e){var t=le(e),i=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:i,scrollTop:n}}function Mt(e){return ni(Me(e)).left+qt(e).scrollLeft}function kl(e,t){var i=le(e),n=Me(e),r=i.visualViewport,a=n.clientWidth,s=n.clientHeight,o=0,l=0;if(r){a=r.width,s=r.height;var d=Nr();(d||!d&&t==="fixed")&&(o=r.offsetLeft,l=r.offsetTop)}return{width:a,height:s,x:o+Mt(e),y:l}}function zl(e){var t,i=Me(e),n=qt(e),r=(t=e.ownerDocument)==null?void 0:t.body,a=ci(i.scrollWidth,i.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),s=ci(i.scrollHeight,i.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-n.scrollLeft+Mt(e),l=-n.scrollTop;return He(r||i).direction==="rtl"&&(o+=ci(i.clientWidth,r?r.clientWidth:0)-a),{width:a,height:s,x:o,y:l}}function It(e){var t=He(e),i=t.overflow,n=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(i+r+n)}function Es(e){return["html","body","#document"].indexOf(Le(e))>=0?e.ownerDocument.body:ze(e)&&It(e)?e:Es(_i(e))}function Ui(e,t){var i;t===void 0&&(t=[]);var n=Es(e),r=n===((i=e.ownerDocument)==null?void 0:i.body),a=le(n),s=r?[a].concat(a.visualViewport||[],It(n)?n:[]):n,o=t.concat(s);return r?o:o.concat(Ui(_i(s)))}function sn(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ux(e,t){var i=ni(e,!1,t==="fixed");return i.top=i.top+e.clientTop,i.left=i.left+e.clientLeft,i.bottom=i.top+e.clientHeight,i.right=i.left+e.clientWidth,i.width=e.clientWidth,i.height=e.clientHeight,i.x=i.left,i.y=i.top,i}function tp(e,t,i){return t===zs?sn(kl(e,i)):ti(t)?ux(t,i):sn(zl(Me(e)))}function px(e){var t=Ui(_i(e)),i=["absolute","fixed"].indexOf(He(e).position)>=0,n=i&&ze(e)?di(e):e;return ti(n)?t.filter(function(r){return ti(r)&&jr(r,n)&&Le(r)!=="body"}):[]}function Sl(e,t,i,n){var r=t==="clippingParents"?px(e):[].concat(t),a=[].concat(r,[i]),s=a[0],o=a.reduce(function(l,d){var c=tp(e,d,n);return l.top=ci(c.top,l.top),l.right=Et(c.right,l.right),l.bottom=Et(c.bottom,l.bottom),l.left=ci(c.left,l.left),l},tp(e,s,n));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function Hr(e){var t=e.reference,i=e.element,n=e.placement,r=n?Oe(n):null,a=n?ri(n):null,s=t.x+t.width/2-i.width/2,o=t.y+t.height/2-i.height/2,l;switch(r){case pe:l={x:s,y:t.y-i.height};break;case ke:l={x:s,y:t.y+t.height};break;case ve:l={x:t.x+t.width,y:o};break;case ge:l={x:t.x-i.width,y:o};break;default:l={x:t.x,y:t.y}}var d=r?Ot(r):null;if(d!=null){var c=d==="y"?"height":"width";switch(a){case Mi:l[d]=l[d]-(t[c]/2-i[c]/2);break;case At:l[d]=l[d]+(t[c]/2-i[c]/2);break;default:}}return l}function ui(e,t){t===void 0&&(t={});var i=t,n=i.placement,r=n===void 0?e.placement:n,a=i.strategy,s=a===void 0?e.strategy:a,o=i.boundary,l=o===void 0?Wu:o,d=i.rootBoundary,c=d===void 0?zs:d,u=i.elementContext,m=u===void 0?tn:u,g=i.altBoundary,h=g===void 0?!1:g,v=i.padding,w=v===void 0?0:v,z=Kr(typeof w!="number"?w:$r(w,Vi)),S=m===tn?Vu:tn,L=e.rects.popper,q=e.elements[h?S:m],_=Sl(ti(q)?q:q.contextElement||Me(e.elements.popper),l,c,s),A=ni(e.elements.reference),F=Hr({reference:A,element:L,strategy:"absolute",placement:r}),M=sn(Object.assign({},L,F)),D=m===tn?M:A,H={top:_.top-D.top+z.top,bottom:D.bottom-_.bottom+z.bottom,left:_.left-D.left+z.left,right:D.right-_.right+z.right},j=e.modifiersData.offset;if(m===tn&&j){var V=j[r];Object.keys(H).forEach(function(R){var Y=[ve,ke].indexOf(R)>=0?1:-1,re=[pe,ke].indexOf(R)>=0?"y":"x";H[R]+=V[re]*Y})}return H}function Tl(e,t){t===void 0&&(t={});var i=t,n=i.placement,r=i.boundary,a=i.rootBoundary,s=i.padding,o=i.flipVariations,l=i.allowedAutoPlacements,d=l===void 0?Ss:l,c=ri(n),u=c?o?xl:xl.filter(function(h){return ri(h)===c}):Vi,m=u.filter(function(h){return d.indexOf(h)>=0});m.length===0&&(m=u);var g=m.reduce(function(h,v){return h[v]=ui(e,{placement:v,boundary:r,rootBoundary:a,padding:s})[Oe(v)],h},{});return Object.keys(g).sort(function(h,v){return g[h]-g[v]})}function mx(e){if(Oe(e)===ks)return[];var t=an(e);return[As(e),t,As(t)]}function gx(e){var t=e.state,i=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var r=i.mainAxis,a=r===void 0?!0:r,s=i.altAxis,o=s===void 0?!0:s,l=i.fallbackPlacements,d=i.padding,c=i.boundary,u=i.rootBoundary,m=i.altBoundary,g=i.flipVariations,h=g===void 0?!0:g,v=i.allowedAutoPlacements,w=t.options.placement,z=Oe(w),S=z===w,L=l||(S||!h?[an(w)]:mx(w)),q=[w].concat(L).reduce(function(Ye,Re){return Ye.concat(Oe(Re)===ks?Tl(t,{placement:Re,boundary:c,rootBoundary:u,padding:d,flipVariations:h,allowedAutoPlacements:v}):Re)},[]),_=t.rects.reference,A=t.rects.popper,F=new Map,M=!0,D=q[0],H=0;H=0,re=Y?"width":"height",Q=ui(t,{placement:j,boundary:c,rootBoundary:u,altBoundary:m,padding:d}),ce=Y?R?ve:ge:R?ke:pe;_[re]>A[re]&&(ce=an(ce));var de=an(ce),ue=[];if(a&&ue.push(Q[V]<=0),o&&ue.push(Q[ce]<=0,Q[de]<=0),ue.every(function(Ye){return Ye})){D=j,M=!1;break}F.set(j,ue)}if(M)for(var ae=h?3:1,k=function(Re){var ai=q.find(function(De){var se=F.get(De);if(se)return se.slice(0,Re).every(function(Ai){return Ai})});if(ai)return D=ai,"break"},x=ae;x>0;x--){var pi=k(x);if(pi==="break")break}t.placement!==D&&(t.modifiersData[n]._skip=!0,t.placement=D,t.reset=!0)}}var np={name:"flip",enabled:!0,phase:"main",fn:gx,requiresIfExists:["offset"],data:{_skip:!1}};function rp(e,t,i){return i===void 0&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function ap(e){return[pe,ve,ke,ge].some(function(t){return e[t]>=0})}function hx(e){var t=e.state,i=e.name,n=t.rects.reference,r=t.rects.popper,a=t.modifiersData.preventOverflow,s=ui(t,{elementContext:"reference"}),o=ui(t,{altBoundary:!0}),l=rp(s,n),d=rp(o,r,a),c=ap(l),u=ap(d);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:d,isReferenceHidden:c,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":u})}var sp={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:hx};function fx(e,t,i){var n=Oe(e),r=[ge,pe].indexOf(n)>=0?-1:1,a=typeof i=="function"?i(Object.assign({},t,{placement:e})):i,s=a[0],o=a[1];return s=s||0,o=(o||0)*r,[ge,ve].indexOf(n)>=0?{x:o,y:s}:{x:s,y:o}}function yx(e){var t=e.state,i=e.options,n=e.name,r=i.offset,a=r===void 0?[0,0]:r,s=Ss.reduce(function(c,u){return c[u]=fx(u,t.rects,a),c},{}),o=s[t.placement],l=o.x,d=o.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=d),t.modifiersData[n]=s}var op={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:yx};function bx(e){var t=e.state,i=e.name;t.modifiersData[i]=Hr({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var lp={name:"popperOffsets",enabled:!0,phase:"read",fn:bx,data:{}};function Al(e){return e==="x"?"y":"x"}function vx(e){var t=e.state,i=e.options,n=e.name,r=i.mainAxis,a=r===void 0?!0:r,s=i.altAxis,o=s===void 0?!1:s,l=i.boundary,d=i.rootBoundary,c=i.altBoundary,u=i.padding,m=i.tether,g=m===void 0?!0:m,h=i.tetherOffset,v=h===void 0?0:h,w=ui(t,{boundary:l,rootBoundary:d,padding:u,altBoundary:c}),z=Oe(t.placement),S=ri(t.placement),L=!S,q=Ot(z),_=Al(q),A=t.modifiersData.popperOffsets,F=t.rects.reference,M=t.rects.popper,D=typeof v=="function"?v(Object.assign({},t.rects,{placement:t.placement})):v,H=typeof D=="number"?{mainAxis:D,altAxis:D}:Object.assign({mainAxis:0,altAxis:0},D),j=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(A){if(a){var R,Y=q==="y"?pe:ge,re=q==="y"?ke:ve,Q=q==="y"?"height":"width",ce=A[q],de=ce+w[Y],ue=ce-w[re],ae=g?-M[Q]/2:0,k=S===Mi?F[Q]:M[Q],x=S===Mi?-M[Q]:-F[Q],pi=t.elements.arrow,Ye=g&&pi?Lt(pi):{width:0,height:0},Re=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Pr(),ai=Re[Y],De=Re[re],se=Ct(0,F[Q],Ye[Q]),Ai=L?F[Q]/2-ae-se-ai-H.mainAxis:k-se-ai-H.mainAxis,si=L?-F[Q]/2+ae+se+De+H.mainAxis:x+se+De+H.mainAxis,mi=t.elements.arrow&&di(t.elements.arrow),Ei=mi?q==="y"?mi.clientTop||0:mi.clientLeft||0:0,_t=(R=j?.[q])!=null?R:0,Ds=ce+Ai-_t-Ei,Ns=ce+si-_t,ln=Ct(g?Et(de,Ds):de,ce,g?ci(ue,Ns):ue);A[q]=ln,V[q]=ln-ce}if(o){var cn,Vr=q==="x"?pe:ge,js=q==="x"?ke:ve,gi=A[_],Zi=_==="y"?"height":"width",Ur=gi+w[Vr],Gr=gi-w[js],dn=[pe,ge].indexOf(z)!==-1,Qr=(cn=j?.[_])!=null?cn:0,Zr=dn?Ur:gi-F[Zi]-M[Zi]-Qr+H.altAxis,O=dn?gi+F[Zi]+M[Zi]-Qr-H.altAxis:Gr,I=g&&dn?Zu(Zr,gi,O):Ct(g?Zr:Ur,gi,g?O:Gr);A[_]=I,V[_]=I-gi}t.modifiersData[n]=V}}var cp={name:"preventOverflow",enabled:!0,phase:"main",fn:vx,requiresIfExists:["offset"]};function El(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Ll(e){return e===le(e)||!ze(e)?qt(e):El(e)}function xx(e){var t=e.getBoundingClientRect(),i=Ii(t.width)/e.offsetWidth||1,n=Ii(t.height)/e.offsetHeight||1;return i!==1||n!==1}function Ol(e,t,i){i===void 0&&(i=!1);var n=ze(t),r=ze(t)&&xx(t),a=Me(t),s=ni(e,r,i),o={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!i)&&((Le(t)!=="body"||It(a))&&(o=Ll(t)),ze(t)?(l=ni(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):a&&(l.x=Mt(a))),{x:s.left+o.scrollLeft-l.x,y:s.top+o.scrollTop-l.y,width:s.width,height:s.height}}function wx(e){var t=new Map,i=new Set,n=[];e.forEach(function(a){t.set(a.name,a)});function r(a){i.add(a.name);var s=[].concat(a.requires||[],a.requiresIfExists||[]);s.forEach(function(o){if(!i.has(o)){var l=t.get(o);l&&r(l)}}),n.push(a)}return e.forEach(function(a){i.has(a.name)||r(a)}),n}function Cl(e){var t=wx(e);return Uu.reduce(function(i,n){return i.concat(t.filter(function(r){return r.phase===n}))},[])}function ql(e){var t;return function(){return t||(t=new Promise(function(i){Promise.resolve().then(function(){t=void 0,i(e())})})),t}}function Ml(e){var t=e.reduce(function(i,n){var r=i[n.name];return i[n.name]=r?Object.assign({},r,n,{options:Object.assign({},r.options,n.options),data:Object.assign({},r.data,n.data)}):n,i},{});return Object.keys(t).map(function(i){return t[i]})}var dp={placement:"bottom",modifiers:[],strategy:"absolute"};function up(){for(var e=arguments.length,t=new Array(e),i=0;i(e%t+t)%t,_l=class{constructor(t,i,n){this.owner=t,this.containerEl=i,i.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),i.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),n.register([],"ArrowUp",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem-1,!0),!1}),n.register([],"ArrowDown",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem+1,!0),!1}),n.register([],"Enter",r=>{if(!r.isComposing)return this.useSelectedItem(r),!1})}onSuggestionClick(t,i){t.preventDefault();let n=this.suggestions.indexOf(i);this.setSelectedItem(n,!1),this.useSelectedItem(t)}onSuggestionMouseover(t,i){let n=this.suggestions.indexOf(i);this.setSelectedItem(n,!1)}setSuggestions(t){this.containerEl.empty();let i=[];t.forEach(n=>{let r=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(n,r),i.push(r)}),this.values=t,this.suggestions=i,this.setSelectedItem(0,!1)}useSelectedItem(t){let i=this.values[this.selectedItem];i&&this.owner.selectSuggestion(i,t)}setSelectedItem(t,i){let n=zx(t,this.suggestions.length),r=this.suggestions[this.selectedItem],a=this.suggestions[n];r?.removeClass("is-selected"),a?.addClass("is-selected"),this.selectedItem=n,i&&a.scrollIntoView(!1)}},Ls=class{constructor(t,i){this.app=t,this.inputEl=i,this.scope=new mp.Scope,this.suggestEl=createDiv("suggestion-container");let n=this.suggestEl.createDiv("suggestion");this.suggest=new _l(this,n,this.scope),this.scope.register([],"Escape",this.close.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onInputChanged.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",r=>{r.preventDefault()})}onInputChanged(){let t=this.inputEl.value,i=this.getSuggestions(t);if(!i){this.close();return}i.length>0?(this.suggest.setSuggestions(i),this.open(this.app.dom.appContainerEl,this.inputEl)):this.close()}open(t,i){this.app.keymap.pushScope(this.scope),t.appendChild(this.suggestEl),this.popper=Il(i,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"sameWidth",enabled:!0,fn:({state:n,instance:r})=>{let a=`${n.rects.reference.width}px`;n.styles.popper.width!==a&&(n.styles.popper.width=a,r.update())},phase:"beforeWrite",requires:["computeStyles"]}]})}close(){this.app.keymap.popScope(this.scope),this.suggest.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}};var Yr=class extends Ls{constructor(i,n,r=[]){super(i,n);this.app=i;this.inputEl=n;this.valuesToExclude=r}getSuggestions(i){let n=this.app.commands.listCommands();if(!n)return[];let r=n.filter(o=>{for(let l of this.valuesToExclude)if(l.id==o.id&&!(this.inputEl.hasAttribute("commandId")&&this.inputEl.getAttribute("commandId")==o.id))return!1;return!0}),a=[],s=i.toLowerCase();return r.forEach(o=>{(o.id.contains(s)||o.name.toLowerCase().contains(s))&&a.push(o)}),a}renderSuggestion(i,n){n.setText(i.name)}selectSuggestion(i){this.inputEl.value=i.name,this.inputEl.setAttribute("commandId",i.id),this.inputEl.trigger("input"),this.close()}};var Os=class extends en{constructor(i,n,r,a,s,o){super(i,n,E("options.custom-command.name"),E("options.custom-command.description"),E("options.custom-command.warning"),E("options.custom-command.add-input-button-text"),a,o,()=>{let l={id:"",name:""};this.lintCommands.push(l),this.saveSettings(),this.addCommand(l,this.lintCommands.length-1,!0)});this.lintCommands=r;this.app=s;this.display()}showInputEls(){this.lintCommands.forEach((i,n)=>{this.addCommand(i,n)})}addCommand(i,n,r=!1){new gp.Setting(this.inputElDiv).addSearch(a=>{new Yr(this.app,a.inputEl,this.lintCommands),a.setPlaceholder(E("options.custom-command.command-search-placeholder-text")).setValue(i.name).onChange(s=>{let o={id:a.inputEl.getAttribute("commandId"),name:s};o.name&&o.id?(this.lintCommands[n]=o,this.saveSettings()):!o.name&&!o.id&&(this.lintCommands[n]=o,this.saveSettings())}),a.inputEl.setAttr("tabIndex",n),a.inputEl.addClass("linter-custom-command"),r&&a.inputEl.focus()}).addExtraButton(a=>{a.setIcon("up-chevron-glyph").setTooltip(E("options.custom-command.move-up-tooltip")).onClick(()=>{this.arrayMove(n,n-1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("down-chevron-glyph").setTooltip(E("options.custom-command.move-down-tooltip")).onClick(()=>{this.arrayMove(n,n+1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("cross").setTooltip(E("options.custom-command.delete-tooltip")).onClick(()=>{this.lintCommands.splice(n,1),this.saveSettings(),this.resetInputEls()})})}arrayMove(i,n){if(n<0||n===this.lintCommands.length)return;let r=this.lintCommands[i];this.lintCommands[i]=this.lintCommands[n],this.lintCommands[n]=r}};var hp=require("obsidian");var Sx="gm",Cs=class extends en{constructor(i,n,r,a,s){super(i,n,E("options.custom-replace.name"),E("options.custom-replace.description"),E("options.custom-replace.warning"),E("options.custom-replace.add-input-button-text"),a,s,()=>{let o={find:"",replace:"",flags:Sx};this.regexes.push(o),this.saveSettings(),this.addRegex(o,this.regexes.length-1,!0)});this.regexes=r;this.display()}showInputEls(){this.regexes.forEach((i,n)=>{this.addRegex(i,n)})}addRegex(i,n,r=!1){let a=new hp.Setting(this.inputElDiv).addText(s=>{s.setPlaceholder(E("options.custom-replace.regex-to-find-placeholder-text")).setValue(i.find).onChange(o=>{this.regexes[n].find=o,this.saveSettings()}),s.inputEl.setAttr("inputIndex",n),s.inputEl.addClass("linter-custom-regex-replacement"),r&&s.inputEl.focus()}).addText(s=>{s.setPlaceholder(E("options.custom-replace.flags-placeholder-text")).setValue(i.flags).onChange(o=>{this.regexes[n].flags=o,this.saveSettings()})}).addText(s=>{s.setPlaceholder(E("options.custom-replace.regex-to-replace-placeholder-text")).setValue(i.replace).onChange(o=>{this.regexes[n].replace=o,this.saveSettings()})}).addExtraButton(s=>{s.setIcon("up-chevron-glyph").setTooltip(E("options.custom-replace.move-up-tooltip")).onClick(()=>{this.arrayMove(n,n-1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(s=>{s.setIcon("down-chevron-glyph").setTooltip(E("options.custom-replace.move-down-tooltip")).onClick(()=>{this.arrayMove(n,n+1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(s=>{s.setIcon("cross").setTooltip(E("options.custom-replace.delete-tooltip")).onClick(()=>{this.regexes.splice(n,1),this.saveSettings(),this.resetInputEls()})});a.settingEl.style.flexWrap="wrap"}arrayMove(i,n){if(n<0||n===this.regexes.length)return;let r=this.regexes[i];this.regexes[i]=this.regexes[n],this.regexes[n]=r}};var qs=class extends Si{constructor(i,n,r,a,s){super(i,n,"Custom",r,s);this.app=a;this.display()}display(){let i=this.contentEl.createDiv(),n=new Os(i,this.plugin.settingsTab.component,this.plugin.settings.lintCommands,this.isMobile,this.app,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(i,n.name,n.description.replaceAll(` +`,xx=` + + +`,wx=` + + +`,ke={folder:{id:"lint-folder",source:lx},file:{id:"lint-file",source:ox},vault:{id:"lint-vault",source:cx},whitespace:{id:"lint-whitespace",source:dx},math:{id:"lint-math",source:ux},content:{id:"lint-content",source:px},paste:{id:"lint-paste",source:mx},custom:{id:"lint-custom",source:gx},heading:{id:"lint-heading",source:hx},footer:{id:"lint-footer",source:fx},yaml:{id:"lint-yaml",source:yx},general:{id:"lint-general",source:bx},debug:{id:"lint-debug",source:vx},clipboard:{id:"linter-clipboard",source:xx},success:{id:"linter-success",source:wx}};var cn=require("obsidian");var Is=class{constructor(){this.disabledRules=[]}lintText(t){this.skipFile=!1;let i=t.oldText;if([this.disabledRules,this.skipFile]=os(i),this.skipFile)return i;at(T("logs.rule-running"));let n=T("logs.pre-rules");at(n);let r=this.runBeforeRegularRules(t);ji(n);let a=T("logs.disabled-text");for(let o of ki){if(this.disabledRules.includes(o.alias)){oi(o.alias+" "+a);continue}else if(o.hasSpecialExecutionOrder||o.type==="Paste")continue;[r]=ci.applyIfEnabledBase(o,r,t.settings,{fileCreatedTime:t.fileInfo.createdAtFormatted,fileModifiedTime:t.fileInfo.modifiedAtFormatted,fileName:t.fileInfo.name,locale:t.momentLocale,minimumNumberOfDollarSignsToBeAMathBlock:t.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock,aliasArrayStyle:t.settings.commonStyles.aliasArrayStyle,tagArrayStyle:t.settings.commonStyles.tagArrayStyle,defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter,removeUnnecessaryEscapeCharsForMultiLineArrays:t.settings.commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays})}let s=T("logs.custom-regex");return at(s),r=this.runCustomRegexReplacement(t.settings.customRegexes,r),ji(s),t.oldText=r,this.runAfterRegularRules(i,t)}runBeforeRegularRules(t){let i=t.oldText;return[i]=xt.applyIfEnabled(i,t.settings,this.disabledRules),[i]=bt.applyIfEnabled(i,t.settings,this.disabledRules,{defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter}),[i]=wt.applyIfEnabled(i,t.settings,this.disabledRules,{minimumNumberOfDollarSignsToBeAMathBlock:t.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock}),i}runAfterRegularRules(t,i){let n=i.oldText,r=T("logs.post-rules");at(r),[n]=yt.applyIfEnabled(n,i.settings,this.disabledRules),[n]=gt.applyIfEnabled(n,i.settings,this.disabledRules),[n]=vt.applyIfEnabled(n,i.settings,this.disabledRules,{defaultEscapeCharacter:i.settings.commonStyles.escapeCharacter});let a=i.getCurrentTime(),s;[n,s]=Ui.applyIfEnabled(n,i.settings,this.disabledRules,{fileCreatedTime:i.fileInfo.createdAtFormatted,fileModifiedTime:i.fileInfo.modifiedAtFormatted,currentTime:a,alreadyModified:t!=n,locale:i.momentLocale});let o=Ui.getRuleOptions(i.settings);return a=i.getCurrentTime(),[n]=Mt.applyIfEnabled(n,i.settings,this.disabledRules,{currentTimeFormatted:a.format(o.format.trimEnd()),yamlTimestampDateModifiedEnabled:s&&o.dateModified,dateModifiedKey:o.dateModifiedKey}),ji(r),ji(T("logs.rule-running")),n}runCustomCommands(t,i){if(this.skipFile)return;oi(T("logs.running-custom-lint-command"));let n=new Set;for(let r of t){if(r.id){if(n.has(r.id)){rt(T("logs.custom-lint-duplicate-warning").replace("{COMMAND_NAME}",r.name));continue}}else continue;try{n.add(r.id),i.executeCommandById(r.id)}catch(a){ls(a,`${T("logs.custom-lint-error-message")} ${r.id}`)}}}runCustomRegexReplacement(t,i){return we([f.customIgnore],i,n=>{oi(T("logs.running-custom-regex"));let r=n;for(let a of t){let s=a.find===void 0||a.find==""||a.find===null,o=a.replace===void 0||a.replace===null;if(s||o)continue;let l=new RegExp(`${a.find}`,a.flags);r=r.replace(l,zd(a.replace))}return r})}runPasteLint(t,i,n){let r=n.oldText;return[r]=Lt.applyIfEnabled(r,n.settings,[]),[r]=Ot.applyIfEnabled(r,n.settings,[]),[r]=Et.applyIfEnabled(r,n.settings,[]),[r]=St.applyIfEnabled(r,n.settings,[]),[r]=Tt.applyIfEnabled(r,n.settings,[]),[r]=kt.applyIfEnabled(r,n.settings,[],{lineContent:t,selectedText:i}),[r]=zt.applyIfEnabled(r,n.settings,[],{lineContent:t,selectedText:i}),[r]=ht.applyIfEnabled(r,n.settings,[],{lineContent:t}),r}};function Wr(e,t=null,i,n){let r=t?(0,cn.moment)(t.stat.ctime):(0,cn.moment)();r.locale(i);let a=t?(0,cn.moment)(t.stat.mtime):(0,cn.moment)();a.locale(i);let s=a.format(),o=r.format();return{oldText:e,fileInfo:{name:t?t.basename:"",createdAtFormatted:o,modifiedAtFormatted:s},settings:n,momentLocale:i,getCurrentTime:()=>{let l=(0,cn.moment)();return l.locale(i),l}}}var Bs=require("obsidian");var Vr=class extends Bs.Modal{constructor(t,i,n,r,a){super(t),this.modalEl.addClass("confirm-modal"),this.contentEl.createEl("h3",{text:T("warning-text")}).style.textAlign="center",this.contentEl.createEl("p",{text:i+" "+T("file-backup-text")}).id="confirm-dialog",this.contentEl.createDiv("modal-button-container",s=>{s.createEl("button",{text:"Cancel"}).addEventListener("click",()=>this.close());let o=s.createEl("button",{attr:{type:"submit"},cls:"mod-cta",text:n});o.addEventListener("click",async l=>{new Bs.Notice(r),this.close(),await a()}),setTimeout(()=>{o.focus()},50)})}};var Xi=require("obsidian");var pp=require("obsidian");var kx={General:ke.general.id,Custom:ke.custom.id,YAML:ke.yaml.id,Heading:ke.heading.id,Footnote:ke.footer.id,Content:ke.content.id,Spacing:ke.whitespace.id,Paste:ke.paste.id,Debug:ke.debug.id},zx={General:"tabs.names.general",Custom:"tabs.names.custom",YAML:"tabs.names.yaml",Heading:"tabs.names.heading",Footnote:"tabs.names.footnote",Content:"tabs.names.content",Spacing:"tabs.names.spacing",Paste:"tabs.names.paste",Debug:"tabs.names.debug"},Si=class{constructor(t,i,n,r,a){this.name=n;this.isMobile=r;this.plugin=a;this.searchSettingInfo=[];this.navButton=t.createDiv("linter-navigation-item");let s="linter-desktop";r&&(s="linter-mobile"),this.navButton.addClass(s),(0,pp.setIcon)(this.navButton.createSpan({cls:"linter-navigation-item-icon"}),kx[n]);let o=T(zx[n]);this.navButton.createSpan().setText(o),this.contentEl=i.createDiv("linter-tab-settings"),this.contentEl.id=n.toLowerCase().replace(" ","-"),this.headingEl=this.contentEl.createEl("h2",{text:o}),Xe(this.headingEl)}addSettingSearchInfo(t,i="",n="",r=null,a=null){this.searchSettingInfo.push({containerEl:t,name:i.toLowerCase(),description:n.toLowerCase(),options:r,alias:a})}addSettingSearchInfoForGeneralSettings(t){this.searchSettingInfo.push({containerEl:t.containerEl,name:t.name.toLowerCase(),description:t.description.toLowerCase(),options:null,alias:null})}updateTabDisplayMode(t,i="the status is still the same"){switch(t?(this.navButton.addClass("linter-navigation-item-selected"),wi(this.contentEl)):(this.navButton.removeClass("linter-navigation-item-selected"),Xe(this.contentEl)),i){case"entering search mode by focusing on the search input box":wi(this.contentEl),wi(this.headingEl);for(let n of this.searchSettingInfo)wi(n.containerEl);break;case"leaving search mode by selecting a tab":Xe(this.headingEl);for(let n of this.searchSettingInfo)wi(n.containerEl);break}}};var Kp=require("obsidian");var mp=require("obsidian");var Ur={ruleConfigs:{},lintOnSave:!1,recordLintOnSaveLogs:!1,displayChanged:!0,lintOnFileChange:!1,displayLintOnFileChangeNotice:!1,settingsConvertedToConfigKeyValues:!1,foldersToIgnore:[],linterLocale:"system-default",logLevel:"ERROR",lintCommands:[],customRegexes:[],commonStyles:{aliasArrayStyle:"single-line",tagArrayStyle:"single-line",minimumNumberOfDollarSignsToBeAMathBlock:2,escapeCharacter:'"',removeUnnecessaryEscapeCharsForMultiLineArrays:!1}};var Gi=class{constructor(t,i,n,r,a,s=null){this.containerEl=t;this.keyToUpdate=r;this.plugin=a;this.beforeSave=s;this.name=T(i),this.description=T(n)}async saveValue(t){let i=this.keyToUpdate.split(".");i.length===2?this.plugin.settings[i[0]][i[1]]=t:this.plugin.settings[this.keyToUpdate]=t,this.beforeSave&&this.beforeSave(),await this.plugin.saveSettings()}getDefaultValue(){let t=this.keyToUpdate.split(".");return t.length===2?Ur[t[0]][t[1]]:Ur[this.keyToUpdate]}getString(){return On(this.plugin.settings,this.keyToUpdate)??this.getDefaultValue()}getBoolean(){return Wc(this.plugin.settings,this.keyToUpdate)??this.getDefaultValue()}getNumber(){return $c(this.plugin.settings,this.keyToUpdate)??this.getDefaultValue()}parseNameAndDescription(){xi(this.name,this.setting.nameEl,this.plugin.settingsTab.component),xi(this.description,this.setting.descEl,this.plugin.settingsTab.component)}};var Ii=class extends Gi{constructor(i,n,r,a,s,o,l=null){super(i,n,r,a,s,l);this.dropdownRecords=o;this.display()}display(){this.setting=new mp.Setting(this.containerEl).setName(this.name).setDesc(this.description).addDropdown(i=>{this.addDropdownRecords(i),i.setValue(this.getString()),i.onChange(async n=>{this.saveValue(n)})})}addDropdownRecords(i){if(this.dropdownRecords.isForEnum){for(let n of this.dropdownRecords.values){let r="enums."+n;i.addOption(n,T(r))}return}for(let n=0;n{i.inputEl.type="number",i.setValue(this.getNumber().toString()).onChange(async n=>{this.saveValue(parseInt(n))})})}};var hp=require("obsidian");var Ai=class extends Gi{constructor(i,n,r,a,s){super(i,n,r,a,s);this.display()}display(){this.setting=new hp.Setting(this.containerEl).addToggle(i=>{i.setValue(this.getBoolean()).onChange(async n=>{this.saveValue(n)})}),this.parseNameAndDescription()}};var jp=require("obsidian");var fp=require("obsidian");var Qi=class{constructor(t,i,n,r,a,s,o,l){this.containerEl=t;this.parentComponent=i;this.name=n;this.description=r;this.warning=a;this.addInputBtnText=s;this.saveSettings=o;this.onAddInput=l}display(){this.containerEl.createDiv({cls:"setting-item-name",text:this.name});let t=this.containerEl.createDiv({cls:"setting-item-description"});xi(this.description,t.createEl("p",{cls:"custom-row-description"}),this.parentComponent),this.warning!=null&&this.warning.trim()!=""&&t.createEl("p",{text:this.warning,cls:"mod-warning"}),new fp.Setting(this.containerEl).addButton(i=>{i.setButtonText(this.addInputBtnText).setCta().onClick(()=>this.onAddInput())}),this.inputElDiv=this.containerEl.createDiv(),this.showInputEls()}resetInputEls(){this.inputElDiv.empty(),this.showInputEls()}};var Dp=require("obsidian");var pe="top",ze="bottom",ve="right",ge="left",_s="auto",Zi=[pe,ze,ve,ge],Bi="start",It="end",yp="clippingParents",Rs="viewport",dn="popper",bp="reference",Rl=Zi.reduce(function(e,t){return e.concat([t+"-"+Bi,t+"-"+It])},[]),Ds=[].concat(Zi,[_s]).reduce(function(e,t){return e.concat([t,t+"-"+Bi,t+"-"+It])},[]),Sx="beforeRead",Ax="read",Lx="afterRead",Tx="beforeMain",Ex="main",Ox="afterMain",Cx="beforeWrite",Mx="write",qx="afterWrite",vp=[Sx,Ax,Lx,Tx,Ex,Ox,Cx,Mx,qx];function Te(e){return e?(e.nodeName||"").toLowerCase():null}function le(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function ii(e){var t=le(e).Element;return e instanceof t||e instanceof Element}function Se(e){var t=le(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function un(e){if(typeof ShadowRoot>"u")return!1;var t=le(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Ix(e){var t=e.state;Object.keys(t.elements).forEach(function(i){var n=t.styles[i]||{},r=t.attributes[i]||{},a=t.elements[i];!Se(a)||!Te(a)||(Object.assign(a.style,n),Object.keys(r).forEach(function(s){var o=r[s];o===!1?a.removeAttribute(s):a.setAttribute(s,o===!0?"":o)}))})}function Bx(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(n){var r=t.elements[n],a=t.attributes[n]||{},s=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:i[n]),o=s.reduce(function(l,d){return l[d]="",l},{});!Se(r)||!Te(r)||(Object.assign(r.style,o),Object.keys(a).forEach(function(l){r.removeAttribute(l)}))})}}var xp={name:"applyStyles",enabled:!0,phase:"write",fn:Ix,effect:Bx,requires:["computeStyles"]};function Ee(e){return e.split("-")[0]}var di=Math.max,Bt=Math.min,Fi=Math.round;function pn(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function Gr(){return!/^((?!chrome|android).)*safari/i.test(pn())}function ti(e,t,i){t===void 0&&(t=!1),i===void 0&&(i=!1);var n=e.getBoundingClientRect(),r=1,a=1;t&&Se(e)&&(r=e.offsetWidth>0&&Fi(n.width)/e.offsetWidth||1,a=e.offsetHeight>0&&Fi(n.height)/e.offsetHeight||1);var s=ii(e)?le(e):window,o=s.visualViewport,l=!Gr()&&i,d=(n.left+(l&&o?o.offsetLeft:0))/r,c=(n.top+(l&&o?o.offsetTop:0))/a,u=n.width/r,m=n.height/a;return{width:u,height:m,top:c,right:d+u,bottom:c+m,left:d,x:d,y:c}}function Ft(e){var t=ti(e),i=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:n}}function Qr(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(i&&un(i)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Pe(e){return le(e).getComputedStyle(e)}function Dl(e){return["table","td","th"].indexOf(Te(e))>=0}function Me(e){return((ii(e)?e.ownerDocument:e.document)||window.document).documentElement}function _i(e){return Te(e)==="html"?e:e.assignedSlot||e.parentNode||(un(e)?e.host:null)||Me(e)}function wp(e){return!Se(e)||Pe(e).position==="fixed"?null:e.offsetParent}function Fx(e){var t=/firefox/i.test(pn()),i=/Trident/i.test(pn());if(i&&Se(e)){var n=Pe(e);if(n.position==="fixed")return null}var r=_i(e);for(un(r)&&(r=r.host);Se(r)&&["html","body"].indexOf(Te(r))<0;){var a=Pe(r);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||t&&a.willChange==="filter"||t&&a.filter&&a.filter!=="none")return r;r=r.parentNode}return null}function ui(e){for(var t=le(e),i=wp(e);i&&Dl(i)&&Pe(i).position==="static";)i=wp(i);return i&&(Te(i)==="html"||Te(i)==="body"&&Pe(i).position==="static")?t:i||Fx(e)||t}function _t(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Rt(e,t,i){return di(e,Bt(t,i))}function kp(e,t,i){var n=Rt(e,t,i);return n>i?i:n}function Zr(){return{top:0,right:0,bottom:0,left:0}}function Jr(e){return Object.assign({},Zr(),e)}function Xr(e,t){return t.reduce(function(i,n){return i[n]=e,i},{})}var _x=function(t,i){return t=typeof t=="function"?t(Object.assign({},i.rects,{placement:i.placement})):t,Jr(typeof t!="number"?t:Xr(t,Zi))};function Rx(e){var t,i=e.state,n=e.name,r=e.options,a=i.elements.arrow,s=i.modifiersData.popperOffsets,o=Ee(i.placement),l=_t(o),d=[ge,ve].indexOf(o)>=0,c=d?"height":"width";if(!(!a||!s)){var u=_x(r.padding,i),m=Ft(a),g=l==="y"?pe:ge,h=l==="y"?ze:ve,v=i.rects.reference[c]+i.rects.reference[l]-s[l]-i.rects.popper[c],x=s[l]-i.rects.reference[l],w=ui(a),S=w?l==="y"?w.clientHeight||0:w.clientWidth||0:0,E=v/2-x/2,M=u[g],B=S-m[c]-u[h],L=S/2-m[c]/2+E,_=Rt(M,L,B),q=l;i.modifiersData[n]=(t={},t[q]=_,t.centerOffset=_-L,t)}}function Dx(e){var t=e.state,i=e.options,n=i.element,r=n===void 0?"[data-popper-arrow]":n;r!=null&&(typeof r=="string"&&(r=t.elements.popper.querySelector(r),!r)||Qr(t.elements.popper,r)&&(t.elements.arrow=r))}var zp={name:"arrow",enabled:!0,phase:"main",fn:Rx,effect:Dx,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ni(e){return e.split("-")[1]}var Nx={top:"auto",right:"auto",bottom:"auto",left:"auto"};function jx(e,t){var i=e.x,n=e.y,r=t.devicePixelRatio||1;return{x:Fi(i*r)/r||0,y:Fi(n*r)/r||0}}function Sp(e){var t,i=e.popper,n=e.popperRect,r=e.placement,a=e.variation,s=e.offsets,o=e.position,l=e.gpuAcceleration,d=e.adaptive,c=e.roundOffsets,u=e.isFixed,m=s.x,g=m===void 0?0:m,h=s.y,v=h===void 0?0:h,x=typeof c=="function"?c({x:g,y:v}):{x:g,y:v};g=x.x,v=x.y;var w=s.hasOwnProperty("x"),S=s.hasOwnProperty("y"),E=ge,M=pe,B=window;if(d){var L=ui(i),_="clientHeight",q="clientWidth";if(L===le(i)&&(L=Me(i),Pe(L).position!=="static"&&o==="absolute"&&(_="scrollHeight",q="scrollWidth")),L=L,r===pe||(r===ge||r===ve)&&a===It){M=ze;var D=u&&L===B&&B.visualViewport?B.visualViewport.height:L[_];v-=D-n.height,v*=l?1:-1}if(r===ge||(r===pe||r===ze)&&a===It){E=ve;var H=u&&L===B&&B.visualViewport?B.visualViewport.width:L[q];g-=H-n.width,g*=l?1:-1}}var j=Object.assign({position:o},d&&Nx),V=c===!0?jx({x:g,y:v},le(i)):{x:g,y:v};if(g=V.x,v=V.y,l){var R;return Object.assign({},j,(R={},R[M]=S?"0":"",R[E]=w?"0":"",R.transform=(B.devicePixelRatio||1)<=1?"translate("+g+"px, "+v+"px)":"translate3d("+g+"px, "+v+"px, 0)",R))}return Object.assign({},j,(t={},t[M]=S?v+"px":"",t[E]=w?g+"px":"",t.transform="",t))}function Kx(e){var t=e.state,i=e.options,n=i.gpuAcceleration,r=n===void 0?!0:n,a=i.adaptive,s=a===void 0?!0:a,o=i.roundOffsets,l=o===void 0?!0:o;if(!1)var d;var c={placement:Ee(t.placement),variation:ni(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Sp(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Sp(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var Ap={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Kx,data:{}};var Ns={passive:!0};function Yx(e){var t=e.state,i=e.instance,n=e.options,r=n.scroll,a=r===void 0?!0:r,s=n.resize,o=s===void 0?!0:s,l=le(t.elements.popper),d=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&d.forEach(function(c){c.addEventListener("scroll",i.update,Ns)}),o&&l.addEventListener("resize",i.update,Ns),function(){a&&d.forEach(function(c){c.removeEventListener("scroll",i.update,Ns)}),o&&l.removeEventListener("resize",i.update,Ns)}}var Lp={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Yx,data:{}};var Px={left:"right",right:"left",bottom:"top",top:"bottom"};function mn(e){return e.replace(/left|right|bottom|top/g,function(t){return Px[t]})}var Hx={start:"end",end:"start"};function js(e){return e.replace(/start|end/g,function(t){return Hx[t]})}function Dt(e){var t=le(e),i=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:i,scrollTop:n}}function Nt(e){return ti(Me(e)).left+Dt(e).scrollLeft}function Nl(e,t){var i=le(e),n=Me(e),r=i.visualViewport,a=n.clientWidth,s=n.clientHeight,o=0,l=0;if(r){a=r.width,s=r.height;var d=Gr();(d||!d&&t==="fixed")&&(o=r.offsetLeft,l=r.offsetTop)}return{width:a,height:s,x:o+Nt(e),y:l}}function jl(e){var t,i=Me(e),n=Dt(e),r=(t=e.ownerDocument)==null?void 0:t.body,a=di(i.scrollWidth,i.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),s=di(i.scrollHeight,i.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-n.scrollLeft+Nt(e),l=-n.scrollTop;return Pe(r||i).direction==="rtl"&&(o+=di(i.clientWidth,r?r.clientWidth:0)-a),{width:a,height:s,x:o,y:l}}function jt(e){var t=Pe(e),i=t.overflow,n=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(i+r+n)}function Ks(e){return["html","body","#document"].indexOf(Te(e))>=0?e.ownerDocument.body:Se(e)&&jt(e)?e:Ks(_i(e))}function Ji(e,t){var i;t===void 0&&(t=[]);var n=Ks(e),r=n===((i=e.ownerDocument)==null?void 0:i.body),a=le(n),s=r?[a].concat(a.visualViewport||[],jt(n)?n:[]):n,o=t.concat(s);return r?o:o.concat(Ji(_i(s)))}function gn(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function $x(e,t){var i=ti(e,!1,t==="fixed");return i.top=i.top+e.clientTop,i.left=i.left+e.clientLeft,i.bottom=i.top+e.clientHeight,i.right=i.left+e.clientWidth,i.width=e.clientWidth,i.height=e.clientHeight,i.x=i.left,i.y=i.top,i}function Tp(e,t,i){return t===Rs?gn(Nl(e,i)):ii(t)?$x(t,i):gn(jl(Me(e)))}function Wx(e){var t=Ji(_i(e)),i=["absolute","fixed"].indexOf(Pe(e).position)>=0,n=i&&Se(e)?ui(e):e;return ii(n)?t.filter(function(r){return ii(r)&&Qr(r,n)&&Te(r)!=="body"}):[]}function Kl(e,t,i,n){var r=t==="clippingParents"?Wx(e):[].concat(t),a=[].concat(r,[i]),s=a[0],o=a.reduce(function(l,d){var c=Tp(e,d,n);return l.top=di(c.top,l.top),l.right=Bt(c.right,l.right),l.bottom=Bt(c.bottom,l.bottom),l.left=di(c.left,l.left),l},Tp(e,s,n));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function ea(e){var t=e.reference,i=e.element,n=e.placement,r=n?Ee(n):null,a=n?ni(n):null,s=t.x+t.width/2-i.width/2,o=t.y+t.height/2-i.height/2,l;switch(r){case pe:l={x:s,y:t.y-i.height};break;case ze:l={x:s,y:t.y+t.height};break;case ve:l={x:t.x+t.width,y:o};break;case ge:l={x:t.x-i.width,y:o};break;default:l={x:t.x,y:t.y}}var d=r?_t(r):null;if(d!=null){var c=d==="y"?"height":"width";switch(a){case Bi:l[d]=l[d]-(t[c]/2-i[c]/2);break;case It:l[d]=l[d]+(t[c]/2-i[c]/2);break;default:}}return l}function pi(e,t){t===void 0&&(t={});var i=t,n=i.placement,r=n===void 0?e.placement:n,a=i.strategy,s=a===void 0?e.strategy:a,o=i.boundary,l=o===void 0?yp:o,d=i.rootBoundary,c=d===void 0?Rs:d,u=i.elementContext,m=u===void 0?dn:u,g=i.altBoundary,h=g===void 0?!1:g,v=i.padding,x=v===void 0?0:v,w=Jr(typeof x!="number"?x:Xr(x,Zi)),S=m===dn?bp:dn,E=e.rects.popper,M=e.elements[h?S:m],B=Kl(ii(M)?M:M.contextElement||Me(e.elements.popper),l,c,s),L=ti(e.elements.reference),_=ea({reference:L,element:E,strategy:"absolute",placement:r}),q=gn(Object.assign({},E,_)),D=m===dn?q:L,H={top:B.top-D.top+w.top,bottom:D.bottom-B.bottom+w.bottom,left:B.left-D.left+w.left,right:D.right-B.right+w.right},j=e.modifiersData.offset;if(m===dn&&j){var V=j[r];Object.keys(H).forEach(function(R){var $=[ve,ze].indexOf(R)>=0?1:-1,re=[pe,ze].indexOf(R)>=0?"y":"x";H[R]+=V[re]*$})}return H}function Yl(e,t){t===void 0&&(t={});var i=t,n=i.placement,r=i.boundary,a=i.rootBoundary,s=i.padding,o=i.flipVariations,l=i.allowedAutoPlacements,d=l===void 0?Ds:l,c=ni(n),u=c?o?Rl:Rl.filter(function(h){return ni(h)===c}):Zi,m=u.filter(function(h){return d.indexOf(h)>=0});m.length===0&&(m=u);var g=m.reduce(function(h,v){return h[v]=pi(e,{placement:v,boundary:r,rootBoundary:a,padding:s})[Ee(v)],h},{});return Object.keys(g).sort(function(h,v){return g[h]-g[v]})}function Vx(e){if(Ee(e)===_s)return[];var t=mn(e);return[js(e),t,js(t)]}function Ux(e){var t=e.state,i=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var r=i.mainAxis,a=r===void 0?!0:r,s=i.altAxis,o=s===void 0?!0:s,l=i.fallbackPlacements,d=i.padding,c=i.boundary,u=i.rootBoundary,m=i.altBoundary,g=i.flipVariations,h=g===void 0?!0:g,v=i.allowedAutoPlacements,x=t.options.placement,w=Ee(x),S=w===x,E=l||(S||!h?[mn(x)]:Vx(x)),M=[x].concat(E).reduce(function(He,_e){return He.concat(Ee(_e)===_s?Yl(t,{placement:_e,boundary:c,rootBoundary:u,padding:d,flipVariations:h,allowedAutoPlacements:v}):_e)},[]),B=t.rects.reference,L=t.rects.popper,_=new Map,q=!0,D=M[0],H=0;H=0,re=$?"width":"height",Q=pi(t,{placement:j,boundary:c,rootBoundary:u,altBoundary:m,padding:d}),ce=$?R?ve:ge:R?ze:pe;B[re]>L[re]&&(ce=mn(ce));var de=mn(ce),ue=[];if(a&&ue.push(Q[V]<=0),o&&ue.push(Q[ce]<=0,Q[de]<=0),ue.every(function(He){return He})){D=j,q=!1;break}_.set(j,ue)}if(q)for(var ae=h?3:1,z=function(_e){var ri=M.find(function(Re){var se=_.get(Re);if(se)return se.slice(0,_e).every(function(Li){return Li})});if(ri)return D=ri,"break"},k=ae;k>0;k--){var mi=z(k);if(mi==="break")break}t.placement!==D&&(t.modifiersData[n]._skip=!0,t.placement=D,t.reset=!0)}}var Ep={name:"flip",enabled:!0,phase:"main",fn:Ux,requiresIfExists:["offset"],data:{_skip:!1}};function Op(e,t,i){return i===void 0&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function Cp(e){return[pe,ve,ze,ge].some(function(t){return e[t]>=0})}function Gx(e){var t=e.state,i=e.name,n=t.rects.reference,r=t.rects.popper,a=t.modifiersData.preventOverflow,s=pi(t,{elementContext:"reference"}),o=pi(t,{altBoundary:!0}),l=Op(s,n),d=Op(o,r,a),c=Cp(l),u=Cp(d);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:d,isReferenceHidden:c,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":u})}var Mp={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Gx};function Qx(e,t,i){var n=Ee(e),r=[ge,pe].indexOf(n)>=0?-1:1,a=typeof i=="function"?i(Object.assign({},t,{placement:e})):i,s=a[0],o=a[1];return s=s||0,o=(o||0)*r,[ge,ve].indexOf(n)>=0?{x:o,y:s}:{x:s,y:o}}function Zx(e){var t=e.state,i=e.options,n=e.name,r=i.offset,a=r===void 0?[0,0]:r,s=Ds.reduce(function(c,u){return c[u]=Qx(u,t.rects,a),c},{}),o=s[t.placement],l=o.x,d=o.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=d),t.modifiersData[n]=s}var qp={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Zx};function Jx(e){var t=e.state,i=e.name;t.modifiersData[i]=ea({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var Ip={name:"popperOffsets",enabled:!0,phase:"read",fn:Jx,data:{}};function Pl(e){return e==="x"?"y":"x"}function Xx(e){var t=e.state,i=e.options,n=e.name,r=i.mainAxis,a=r===void 0?!0:r,s=i.altAxis,o=s===void 0?!1:s,l=i.boundary,d=i.rootBoundary,c=i.altBoundary,u=i.padding,m=i.tether,g=m===void 0?!0:m,h=i.tetherOffset,v=h===void 0?0:h,x=pi(t,{boundary:l,rootBoundary:d,padding:u,altBoundary:c}),w=Ee(t.placement),S=ni(t.placement),E=!S,M=_t(w),B=Pl(M),L=t.modifiersData.popperOffsets,_=t.rects.reference,q=t.rects.popper,D=typeof v=="function"?v(Object.assign({},t.rects,{placement:t.placement})):v,H=typeof D=="number"?{mainAxis:D,altAxis:D}:Object.assign({mainAxis:0,altAxis:0},D),j=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(L){if(a){var R,$=M==="y"?pe:ge,re=M==="y"?ze:ve,Q=M==="y"?"height":"width",ce=L[M],de=ce+x[$],ue=ce-x[re],ae=g?-q[Q]/2:0,z=S===Bi?_[Q]:q[Q],k=S===Bi?-q[Q]:-_[Q],mi=t.elements.arrow,He=g&&mi?Ft(mi):{width:0,height:0},_e=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Zr(),ri=_e[$],Re=_e[re],se=Rt(0,_[Q],He[Q]),Li=E?_[Q]/2-ae-se-ri-H.mainAxis:z-se-ri-H.mainAxis,ai=E?-_[Q]/2+ae+se+Re+H.mainAxis:k+se+Re+H.mainAxis,gi=t.elements.arrow&&ui(t.elements.arrow),Ti=gi?M==="y"?gi.clientTop||0:gi.clientLeft||0:0,Kt=(R=j?.[M])!=null?R:0,eo=ce+Li-Kt-Ti,io=ce+ai-Kt,bn=Rt(g?Bt(de,eo):de,ce,g?di(ue,io):ue);L[M]=bn,V[M]=bn-ce}if(o){var vn,ra=M==="x"?pe:ge,to=M==="x"?ze:ve,hi=L[B],it=B==="y"?"height":"width",aa=hi+x[ra],sa=hi-x[to],xn=[pe,ge].indexOf(w)!==-1,oa=(vn=j?.[B])!=null?vn:0,la=xn?aa:hi-_[it]-q[it]-oa+H.altAxis,O=xn?hi+_[it]+q[it]-oa-H.altAxis:sa,I=g&&xn?kp(la,hi,O):Rt(g?la:aa,hi,g?O:sa);L[B]=I,V[B]=I-hi}t.modifiersData[n]=V}}var Bp={name:"preventOverflow",enabled:!0,phase:"main",fn:Xx,requiresIfExists:["offset"]};function Hl(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function $l(e){return e===le(e)||!Se(e)?Dt(e):Hl(e)}function ew(e){var t=e.getBoundingClientRect(),i=Fi(t.width)/e.offsetWidth||1,n=Fi(t.height)/e.offsetHeight||1;return i!==1||n!==1}function Wl(e,t,i){i===void 0&&(i=!1);var n=Se(t),r=Se(t)&&ew(t),a=Me(t),s=ti(e,r,i),o={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!i)&&((Te(t)!=="body"||jt(a))&&(o=$l(t)),Se(t)?(l=ti(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):a&&(l.x=Nt(a))),{x:s.left+o.scrollLeft-l.x,y:s.top+o.scrollTop-l.y,width:s.width,height:s.height}}function iw(e){var t=new Map,i=new Set,n=[];e.forEach(function(a){t.set(a.name,a)});function r(a){i.add(a.name);var s=[].concat(a.requires||[],a.requiresIfExists||[]);s.forEach(function(o){if(!i.has(o)){var l=t.get(o);l&&r(l)}}),n.push(a)}return e.forEach(function(a){i.has(a.name)||r(a)}),n}function Vl(e){var t=iw(e);return vp.reduce(function(i,n){return i.concat(t.filter(function(r){return r.phase===n}))},[])}function Ul(e){var t;return function(){return t||(t=new Promise(function(i){Promise.resolve().then(function(){t=void 0,i(e())})})),t}}function Gl(e){var t=e.reduce(function(i,n){var r=i[n.name];return i[n.name]=r?Object.assign({},r,n,{options:Object.assign({},r.options,n.options),data:Object.assign({},r.data,n.data)}):n,i},{});return Object.keys(t).map(function(i){return t[i]})}var Fp={placement:"bottom",modifiers:[],strategy:"absolute"};function _p(){for(var e=arguments.length,t=new Array(e),i=0;i(e%t+t)%t,Zl=class{constructor(t,i,n){this.owner=t,this.containerEl=i,i.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),i.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),n.register([],"ArrowUp",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem-1,!0),!1}),n.register([],"ArrowDown",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem+1,!0),!1}),n.register([],"Enter",r=>{if(!r.isComposing)return this.useSelectedItem(r),!1})}onSuggestionClick(t,i){t.preventDefault();let n=this.suggestions.indexOf(i);this.setSelectedItem(n,!1),this.useSelectedItem(t)}onSuggestionMouseover(t,i){let n=this.suggestions.indexOf(i);this.setSelectedItem(n,!1)}setSuggestions(t){this.containerEl.empty();let i=[];t.forEach(n=>{let r=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(n,r),i.push(r)}),this.values=t,this.suggestions=i,this.setSelectedItem(0,!1)}useSelectedItem(t){let i=this.values[this.selectedItem];i&&this.owner.selectSuggestion(i,t)}setSelectedItem(t,i){let n=nw(t,this.suggestions.length),r=this.suggestions[this.selectedItem],a=this.suggestions[n];r?.removeClass("is-selected"),a?.addClass("is-selected"),this.selectedItem=n,i&&a.scrollIntoView(!1)}},hn=class{constructor(t,i){this.app=t,this.inputEl=i,this.scope=new Dp.Scope,this.suggestEl=createDiv("suggestion-container");let n=this.suggestEl.createDiv("suggestion");this.suggest=new Zl(this,n,this.scope),this.scope.register([],"Escape",this.close.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onInputChanged.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",r=>{r.preventDefault()})}onInputChanged(){let t=this.inputEl.value,i=this.getSuggestions(t);if(!i){this.close();return}i.length>0?(this.suggest.setSuggestions(i),this.open(this.app.dom.appContainerEl,this.inputEl)):this.close()}open(t,i){this.app.keymap.pushScope(this.scope),t.appendChild(this.suggestEl),this.popper=Ql(i,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"sameWidth",enabled:!0,fn:({state:n,instance:r})=>{let a=`${n.rects.reference.width}px`;n.styles.popper.width!==a&&(n.styles.popper.width=a,r.update())},phase:"beforeWrite",requires:["computeStyles"]}]})}close(){this.app.keymap.popScope(this.scope),this.suggest.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}};var Np=require("obsidian"),ia=class extends hn{constructor(i,n,r=[]){super(i,n);this.app=i;this.inputEl=n;this.valuesToExclude=r}getSuggestions(i){let n=this.app.vault.getAllLoadedFiles().filter(o=>o instanceof Np.TFolder&&o.path!=="/").map(o=>o.path);if(!n)return[];let r=n.filter(o=>!this.valuesToExclude.includes(o)||o===this.inputEl.getAttribute("folderExists")),a=[],s=i.toLowerCase();return r.forEach(o=>{o.toLowerCase().contains(s)&&a.push(o)}),a}renderSuggestion(i,n){n.setText(i)}selectSuggestion(i){this.inputEl.setAttribute("folderName",i),this.inputEl.value=i,this.inputEl.trigger("input"),this.close()}};var Ys=class extends Qi{constructor(i,n,r,a,s){super(i,n,T("tabs.general.folders-to-ignore.name"),T("tabs.general.folders-to-ignore.description"),null,T("tabs.general.folders-to-ignore.add-input-button-text"),s,()=>{let o="";this.foldersToIgnore.push(o),this.saveSettings(),this.addFolderToIgnore(o,this.foldersToIgnore.length-1,!0)});this.foldersToIgnore=r;this.app=a;this.display(),this.inputElDiv.addClass("linter-folder-ignore-container")}showInputEls(){this.foldersToIgnore.forEach((i,n)=>{this.addFolderToIgnore(i,n)})}addFolderToIgnore(i,n,r=!1){new jp.Setting(this.inputElDiv).addSearch(s=>{new ia(this.app,s.inputEl,this.foldersToIgnore),s.setPlaceholder(T("tabs.general.folders-to-ignore.folder-search-placeholder-text")).setValue(i).onChange(o=>{let l=o;(l===""||l===s.inputEl.getAttribute("folderName"))&&(this.foldersToIgnore[n]=l,this.saveSettings())}),s.inputEl.setAttr("tabIndex",n),s.inputEl.addClass("linter-folder-ignore"),r&&s.inputEl.focus()}).addExtraButton(s=>{s.setIcon("cross").setTooltip(T("tabs.general.folders-to-ignore.delete-tooltip")).onClick(()=>{this.foldersToIgnore.splice(n,1),this.saveSettings(),this.resetInputEls()})}).settingEl.addClass("linter-no-border")}};var Ps=class extends Si{constructor(i,n,r,a,s){super(i,n,"General",r,a);this.app=s;this.display()}display(){let i=this.contentEl.createDiv();this.addSettingSearchInfoForGeneralSettings(new Ai(i,"tabs.general.lint-on-save.name","tabs.general.lint-on-save.description","lintOnSave",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ai(i,"tabs.general.display-message.name","tabs.general.display-message.description","displayChanged",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ai(i,"tabs.general.lint-on-file-change.name","tabs.general.lint-on-file-change.description","lintOnFileChange",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ai(i,"tabs.general.display-lint-on-file-change-message.name","tabs.general.display-lint-on-file-change-message.description","displayLintOnFileChangeNotice",this.plugin));let n=navigator.language?.toLowerCase(),r=["system-default"],a=[T("tabs.general.same-as-system-locale").replace("{SYS_LOCALE}",n)];for(let g of Kp.moment.locales())r.push(g),a.push(g);let s={isForEnum:!1,values:r,descriptions:a};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ii(i,"tabs.general.override-locale.name","tabs.general.override-locale.description","linterLocale",this.plugin,s,async()=>{await this.plugin.setOrUpdateMomentInstance()}));let o={isForEnum:!0,values:["multi-line","single-line","single string comma delimited","single string to single-line","single string to multi-line"],descriptions:[]};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ii(i,"tabs.general.yaml-aliases-section-style.name","tabs.general.yaml-aliases-section-style.description","commonStyles.aliasArrayStyle",this.plugin,o));let l={isForEnum:!0,values:["multi-line","single-line","single string to single-line","single string to multi-line","single-line space delimited","single string space delimited","single string comma delimited"],descriptions:[]};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ii(i,"tabs.general.yaml-tags-section-style.name","tabs.general.yaml-tags-section-style.description","commonStyles.tagArrayStyle",this.plugin,l));let d=['"',"'"],c={isForEnum:!1,values:d,descriptions:d};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ii(i,"tabs.general.default-escape-character.name","tabs.general.default-escape-character.description","commonStyles.escapeCharacter",this.plugin,c)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ai(i,"tabs.general.remove-unnecessary-escape-chars-in-multi-line-arrays.name","tabs.general.remove-unnecessary-escape-chars-in-multi-line-arrays.description","commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Fs(i,"tabs.general.number-of-dollar-signs-to-indicate-math-block.name","tabs.general.number-of-dollar-signs-to-indicate-math-block.description","commonStyles.minimumNumberOfDollarSignsToBeAMathBlock",this.plugin));let u=this.contentEl.createDiv(),m=new Ys(u,this.plugin.settingsTab.component,this.plugin.settings.foldersToIgnore,this.app,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(u,m.name,m.description.replaceAll(` +`," "))}};var Hs=class extends Si{constructor(i,n,r,a,s,o){super(i,n,r,s,o);this.rules=a;this.display()}display(){for(let i of this.rules){let n=this.contentEl.createDiv();n.id=i.alias,n.createEl(this.isMobile?"h4":"h3",{},a=>{a.innerHTML=`${i.getName()}`});let r=[];for(let a of i.options)a.display(n,this.plugin.settings,this.plugin),r.push(a.getSearchInfo());this.addSettingSearchInfo(n,i.getName().toLowerCase(),i.getDescription().toLowerCase(),r,n.id)}}};var Yp=require("obsidian");var ta=class extends hn{constructor(i,n,r=[]){super(i,n);this.app=i;this.inputEl=n;this.valuesToExclude=r}getSuggestions(i){let n=this.app.commands.listCommands();if(!n)return[];let r=n.filter(o=>{for(let l of this.valuesToExclude)if(l.id==o.id&&!(this.inputEl.hasAttribute("commandId")&&this.inputEl.getAttribute("commandId")==o.id))return!1;return!0}),a=[],s=i.toLowerCase();return r.forEach(o=>{(o.id.contains(s)||o.name.toLowerCase().contains(s))&&a.push(o)}),a}renderSuggestion(i,n){n.setText(i.name)}selectSuggestion(i){this.inputEl.value=i.name,this.inputEl.setAttribute("commandId",i.id),this.inputEl.trigger("input"),this.close()}};var $s=class extends Qi{constructor(i,n,r,a,s){super(i,n,T("options.custom-command.name"),T("options.custom-command.description"),T("options.custom-command.warning"),T("options.custom-command.add-input-button-text"),s,()=>{let o={id:"",name:""};this.lintCommands.push(o),this.saveSettings(),this.addCommand(o,this.lintCommands.length-1,!0)});this.lintCommands=r;this.app=a;this.display()}showInputEls(){this.lintCommands.forEach((i,n)=>{this.addCommand(i,n)})}addCommand(i,n,r=!1){new Yp.Setting(this.inputElDiv).addSearch(a=>{new ta(this.app,a.inputEl,this.lintCommands),a.setPlaceholder(T("options.custom-command.command-search-placeholder-text")).setValue(i.name).onChange(s=>{let o={id:a.inputEl.getAttribute("commandId"),name:s};o.name&&o.id?(this.lintCommands[n]=o,this.saveSettings()):!o.name&&!o.id&&(this.lintCommands[n]=o,this.saveSettings())}),a.inputEl.setAttr("tabIndex",n),a.inputEl.addClass("linter-custom-command"),r&&a.inputEl.focus()}).addExtraButton(a=>{a.setIcon("up-chevron-glyph").setTooltip(T("options.custom-command.move-up-tooltip")).onClick(()=>{this.arrayMove(n,n-1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("down-chevron-glyph").setTooltip(T("options.custom-command.move-down-tooltip")).onClick(()=>{this.arrayMove(n,n+1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("cross").setTooltip(T("options.custom-command.delete-tooltip")).onClick(()=>{this.lintCommands.splice(n,1),this.saveSettings(),this.resetInputEls()})})}arrayMove(i,n){if(n<0||n===this.lintCommands.length)return;let r=this.lintCommands[i];this.lintCommands[i]=this.lintCommands[n],this.lintCommands[n]=r}};var Jl=require("obsidian");var rw="gm",Ws=class extends Qi{constructor(i,n,r,a){super(i,n,T("options.custom-replace.name"),T("options.custom-replace.description"),T("options.custom-replace.warning"),T("options.custom-replace.add-input-button-text"),a,()=>{let s={label:"",find:"",replace:"",flags:rw};this.regexes.push(s),this.saveSettings(),this.addRegex(s,this.regexes.length-1,!0)});this.regexes=r;this.display(),this.inputElDiv.addClass("linter-custom-regex-replacement-container")}showInputEls(){this.regexes.forEach((i,n)=>{this.addRegex(i,n)})}addRegex(i,n,r=!1){let a=this.inputElDiv.createDiv({cls:"linter-custom-regex-replacement"}),s=a.createDiv(),o=new Jl.Setting(s).addText(c=>{c.setPlaceholder(T("options.custom-replace.label-placeholder-text")).setValue(i.label).onChange(u=>{this.regexes[n].label=u,this.saveSettings()}),c.inputEl.setAttr("inputIndex",n),c.inputEl.addClass("linter-custom-regex-replacement-label-input"),r&&c.inputEl.focus()});o.controlEl.addClass("linter-custom-regex-replacement-label"),o.descEl.remove(),o.infoEl.remove(),o.nameEl.remove();let l=a.createDiv();new Jl.Setting(l).addText(c=>{c.setPlaceholder(T("options.custom-replace.regex-to-find-placeholder-text")).setValue(i.find).onChange(u=>{this.regexes[n].find=u,this.saveSettings()}),c.inputEl.addClass("linter-custom-regex-replacement-normal-input")}).addText(c=>{c.setPlaceholder(T("options.custom-replace.flags-placeholder-text")).setValue(i.flags).onChange(u=>{this.regexes[n].flags=u,this.saveSettings()}),c.inputEl.addClass("linter-custom-regex-replacement-flags")}).addText(c=>{c.setPlaceholder(T("options.custom-replace.regex-to-replace-placeholder-text")).setValue(i.replace).onChange(u=>{this.regexes[n].replace=u,this.saveSettings()}),c.inputEl.addClass("linter-custom-regex-replacement-normal-input")}).addExtraButton(c=>{c.setIcon("up-chevron-glyph").setTooltip(T("options.custom-replace.move-up-tooltip")).onClick(()=>{this.arrayMove(n,n-1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(c=>{c.setIcon("down-chevron-glyph").setTooltip(T("options.custom-replace.move-down-tooltip")).onClick(()=>{this.arrayMove(n,n+1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(c=>{c.setIcon("cross").setTooltip(T("options.custom-replace.delete-tooltip")).onClick(()=>{this.regexes.splice(n,1),this.saveSettings(),this.resetInputEls()})}).settingEl.addClass("linter-custom-regex-replacement-row2")}arrayMove(i,n){if(n<0||n===this.regexes.length)return;let r=this.regexes[i];this.regexes[i]=this.regexes[n],this.regexes[n]=r}};var Vs=class extends Si{constructor(i,n,r,a,s){super(i,n,"Custom",r,s);this.app=a;this.display()}display(){let i=this.contentEl.createDiv(),n=new $s(i,this.plugin.settingsTab.component,this.plugin.settings.lintCommands,this.app,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(i,n.name,n.description.replaceAll(` `," ")+n.warning.replaceAll(` -`," "));let r=this.contentEl.createDiv(),a=new Cs(r,this.plugin.settingsTab.component,this.plugin.settings.customRegexes,this.isMobile,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(r,a.name,a.description.replaceAll(` +`," "));let r=this.contentEl.createDiv(),a=new Ws(r,this.plugin.settingsTab.component,this.plugin.settings.customRegexes,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(r,a.name,a.description.replaceAll(` `," ")+a.warning.replaceAll(` -`," "))}};var fp=require("obsidian");var Ms=class{constructor(t,i,n,r){this.containerEl=t;this.searchZeroState=i;this.tabNameToTab=n;this.onFocus=r;this.searchSettingInfo=new Map;for(let[a,s]of n)this.searchSettingInfo.set(a,s.searchSettingInfo);this.display()}display(){let t=new fp.Setting(this.containerEl);t.settingEl.style.border="none",t.addSearch(i=>{this.search=i}),this.search.setPlaceholder(E("tabs.default-search-bar-text")),this.search.inputEl.onfocus=()=>{this.onFocus()},this.search.onChange(i=>{this.searchSettings(i.toLowerCase())})}searchSettings(t){let i=new Set,n=function(r,a){ki(r),i.has(a)||i.add(a)};for(let[r,a]of this.searchSettingInfo)for(let s of a)if(t.trim()===""||s.alias?.includes(t)||s.description.includes(t)||s.name.includes(t))n(s.containerEl,r);else if(s.options)for(let o of s.options){if(o.description.toLowerCase().includes(t)||o.name.toLowerCase().includes(t)){n(s.containerEl,r);break}else if(o.options){for(let l of o.options)if(l.description.toLowerCase().includes(t)||l.value.toLowerCase().includes(t)){n(s.containerEl,r);break}}ei(s.containerEl)}else ei(s.containerEl);for(let[r,a]of this.tabNameToTab)i.has(r)?ki(a.headingEl):ei(a.headingEl);i.size===0?ki(this.searchZeroState):ei(this.searchZeroState)}focusOnInput(){this.search.inputEl.focus()}};var _s=gn(sa());var Bl=require("obsidian");var Wr=class{constructor(t,i,n,r=!0){this.containerEl=t;this.name=i;this.description=n;this.disabled=r;this.display()}display(){let t=this.containerEl.createDiv(),i=t.createDiv("setting-item-info");this.nameEl=i.createDiv("setting-item-name"),this.nameEl.setText(this.name),this.descEl=i.createDiv("setting-item-description"),this.descEl.setText(this.description),this.inputEl=t.createDiv().createEl("textarea",{cls:"full-width"}),this.inputEl.spellcheck=!1,this.inputEl.disabled=this.disabled}getInput(){return this.inputEl.value}};var Tx=Object.keys(_s.default.levels),Ax=Object.values(_s.default.levels),Is=class extends Si{constructor(t,i,n,r){super(t,i,"Debug",n,r),this.display()}display(){let t=this.contentEl.createDiv(),i=E("tabs.debug.log-level.name"),n=E("tabs.debug.log-level.description");new Bl.Setting(t).setName(i).setDesc(n).addDropdown(o=>{Tx.forEach((l,d)=>{o.addOption(Ax[d],E("enums."+l))}),o.setValue(this.plugin.settings.logLevel+""),o.onChange(async l=>{let d=parseInt(l);isNaN(d)&&(d=_s.default.levels.ERROR),da(d),this.plugin.settings.logLevel=d,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n),t=this.contentEl.createDiv(),i=E("tabs.debug.linter-config.name"),n=E("tabs.debug.linter-config.description"),new Wr(t,i,n).inputEl.setText(JSON.stringify(this.plugin.settings,null,2)),this.addSettingSearchInfo(t,i,n),t=this.contentEl.createDiv(),i=E("tabs.debug.log-collection.name"),n=E("tabs.debug.log-collection.description");let a=new Bl.Setting(t).setName(i).addToggle(o=>{o.setValue(this.plugin.settings.recordLintOnSaveLogs).onChange(async l=>{this.plugin.settings.recordLintOnSaveLogs=l,await this.plugin.saveSettings()})});wi(n,a.descEl,this.plugin.settingsTab.component),this.addSettingSearchInfo(t,i,n),t=this.contentEl.createDiv(),i=E("tabs.debug.linter-logs.name"),n=E("tabs.debug.linter-logs.description");let s=new Wr(t,i,"");s.inputEl.setText(la.join(` -`)),wi(n,s.descEl,this.plugin.settingsTab.component),this.addSettingSearchInfo(t,i,n)}};var Bs=class extends Gi.PluginSettingTab{constructor(i,n){super(i,n);this.plugin=n;this.tabNameToTab=new Map;this.selectedTab="General";this.component=new Gi.Component}display(){let{containerEl:i}=this;this.component.load(),i.empty();let n=i.createDiv("linter-setting-title");Gi.Platform.isMobile?n.addClass("linter-mobile"):n.createEl("h1").setText(E("linter-title")),this.navContainer=i.createEl("nav",{cls:"linter-setting-header"}),this.tabNavEl=this.navContainer.createDiv("linter-setting-tab-group"),this.settingsContentEl=i.createDiv("linter-setting-content"),this.addTabs(Gi.Platform.isMobile),this.createSearchZeroState(Gi.Platform.isMobile),this.generateSearchBar(n),this.selectedTab==""&&this.tabSearcher.focusOnInput()}hide(){this.component.unload()}addTabs(i){this.addTab(new xs(this.tabNavEl,this.settingsContentEl,i,this.plugin));for(let n of Object.values(N))this.addTab(new ws(this.tabNavEl,this.settingsContentEl,n,Nn.get(n),i,this.plugin));this.addTab(new qs(this.tabNavEl,this.settingsContentEl,i,this.app,this.plugin)),this.addTab(new Is(this.tabNavEl,this.settingsContentEl,i,this.plugin))}generateSearchBar(i){this.tabSearcher=new Ms(i,this.searchZeroState,this.tabNameToTab,()=>{for(let n of this.tabNameToTab.values()){n.updateTabDisplayMode(!1,"entering search mode by focusing on the search input box");let r=this.tabSearcher.search.getValue();this.selectedTab==""&&r.trim()!=""&&this.tabSearcher.searchSettings(r.toLowerCase()),this.selectedTab=""}})}createSearchZeroState(i){this.searchZeroState=this.settingsContentEl.createDiv(),ei(this.searchZeroState),this.searchZeroState.createEl(i?"h3":"h2",{text:E("empty-search-results-text")}).style.textAlign="center"}addTab(i){i.navButton.onclick=()=>{this.onTabClick(i.name)},i.updateTabDisplayMode(this.selectedTab===i.name,"the status is still the same"),this.tabNameToTab.set(i.name,i)}onTabClick(i){if(this.selectedTab!==i){if(this.selectedTab=="")for(let[n,r]of this.tabNameToTab)r.updateTabDisplayMode(n===i,"leaving search mode by selecting a tab");else ei(this.searchZeroState),this.tabNameToTab.get(i).updateTabDisplayMode(!0),this.tabNameToTab.get(this.selectedTab).updateTabDisplayMode(!1);this.selectedTab=i}}};var Ex={en:"en-gb",zh:"zh-cn","zh-TW":"zh-tw",ru:"ru",ko:"ko",it:"it",id:"id",ro:"ro","pt-BR":"pt-br",cz:"cs",da:"da",de:"de",es:"es",fr:"fr",no:"nn",pl:"pl",pt:"pt",tr:"tr",hi:"hi",nl:"nl",ar:"ar",ja:"ja"},Qi=0,Lx={ruleConfigs:{},lintOnSave:!1,recordLintOnSaveLogs:!1,displayChanged:!0,settingsConvertedToConfigKeyValues:!1,foldersToIgnore:[],linterLocale:"system-default",logLevel:yp.default.levels.ERROR,lintCommands:[],customRegexes:[],commonStyles:{aliasArrayStyle:"single-line",tagArrayStyle:"single-line",minimumNumberOfDollarSignsToBeAMathBlock:2,escapeCharacter:'"',removeUnnecessaryEscapeCharsForMultiLineArrays:!1}},Rs=class extends oe.Plugin{constructor(){super(...arguments);this.eventRefs=[];this.isEnabled=!0;this.rulesRunner=new bs}async onload(){ga(window.localStorage.getItem("language")),wn(E("logs.plugin-load")),this.isEnabled=!0;for(let i in we){let n=we[i];(0,oe.addIcon)(n.id,n.source)}await this.loadSettings(),this.addCommands(),this.registerEventsAndSaveCallback(),this.settingsTab=new Bs(this.app,this),this.addSettingTab(this.settingsTab)}async onunload(){wn(E("logs.plugin-unload")),this.isEnabled=!1;for(let i of this.eventRefs)this.app.workspace.offref(i)}async loadSettings(){let i=await this.loadData();this.settings=Object.assign({},Lx,i),da(this.settings.logLevel),this.setOrUpdateMomentInstance(),this.settings.settingsConvertedToConfigKeyValues||this.moveConfigValuesToKeyBasedFormat();for(let n of Ki)this.settings.ruleConfigs[n.alias]||(this.settings.ruleConfigs[n.alias]=n.getDefaultOptions())}async saveSettings(){await this.saveData(this.settings)}addCommands(){this.addCommand({id:"lint-file",name:E("commands.lint-file.name"),editorCallback:i=>{kn(this.settings.recordLintOnSaveLogs),ao(),this.runLinterEditor(i),kn(!1)},icon:we.file.id,hotkeys:[{modifiers:["Mod","Alt"],key:"L"}]}),this.addCommand({id:"lint-file-unless-ignored",name:E("commands.lint-file-unless-ignored.name"),editorCallback:i=>{let n=this.app.workspace.getActiveFile();this.shouldIgnoreFile(n)||this.runLinterEditor(i)},icon:we.file.id}),this.addCommand({id:"lint-all-files",name:E("commands.lint-all-files.name"),icon:we.vault.id,callback:()=>{let i=E("commands.lint-all-files.start-message"),n=E("commands.lint-all-files.submit-button-text"),r=E("commands.lint-all-files.submit-button-notice-text");new Dr(this.app,i,n,r,()=>this.runLinterAllFiles(this.app)).open()}}),this.addCommand({id:"lint-all-files-in-folder",name:E("commands.lint-all-files-in-folder.name"),icon:we.folder.id,editorCheckCallback:(i,n)=>{if(i)return!this.app.workspace.getActiveFile().parent.isRoot();this.createFolderLintModal(this.app.workspace.getActiveFile().parent)}}),this.addCommand({id:"paste-as-plain-text",name:E("commands.paste-as-plain-text.name"),editorCallback:i=>this.pasteAsPlainText(i)})}registerEventsAndSaveCallback(){let i=this.app.workspace.on("editor-paste",s=>{s.defaultPrevented||this.modifyPasteEvent(s)});this.registerEvent(i),this.eventRefs.push(i),i=this.app.workspace.on("file-menu",(s,o,l)=>this.onMenuOpenCallback(s,o,l)),this.registerEvent(i),this.eventRefs.push(i);let n=this.app.commands?.commands?.["editor:save-file"];typeof n?.callback=="function"&&(n.callback=()=>{if(this.settings.lintOnSave&&this.isEnabled){let s=this.getEditor();if(!s)return;let o=this.app.workspace.getActiveFile();this.shouldIgnoreFile(o)||(kn(this.settings.recordLintOnSaveLogs),ao(),this.runLinterEditor(s),kn(!1))}});let a=this;window.CodeMirrorAdapter.commands.save=()=>{a.app.commands.executeCommandById("editor:save-file")}}onMenuOpenCallback(i,n,r){n instanceof oe.TFile&&n.extension==="md"?i.addItem(a=>{a.setIcon(we.file.id).setTitle(E("commands.lint-file-pop-up-menu-text.name")).onClick(async()=>{this.runLinterFile(n)})}):n instanceof oe.TFolder&&i.addItem(a=>{a.setTitle(E("commands.lint-folder-pop-up-menu-text.name")).setIcon(we.folder.id).onClick(()=>this.createFolderLintModal(n))})}shouldIgnoreFile(i){for(let n of this.settings.foldersToIgnore)if(n.length>0&&i.path.startsWith(n))return!0;return!1}async runLinterFile(i){let n=Jc(await this.app.vault.read(i)),r=this.rulesRunner.lintText(Rr(n,i,this.momentLocale,this.settings));await this.app.vault.modify(i,r)}async runLinterAllFiles(i){let n=0;if(await Promise.all(i.vault.getMarkdownFiles().map(async r=>{if(!this.shouldIgnoreFile(r))try{await this.runLinterFile(r)}catch(a){this.handleLintError(r,a,E("commands.lint-all-files.error-message")+" '{FILE_PATH}'"),n+=1}})),n===0)new oe.Notice(E("commands.lint-all-files.success-message"),Qi);else{let r=n===1?E("commands.lint-all-files.errors-message-singular"):E("commands.lint-all-files.errors-message-plural").replace("{NUM}",n.toString());new oe.Notice(r,Qi)}}async runLinterAllFilesInFolder(i){wn(E("logs.folder-lint")+i.name);let n=0,r=0,a=(0,oe.normalizePath)(i.path)+"/";if(await Promise.all(this.app.vault.getMarkdownFiles().map(async s=>{if((0,oe.normalizePath)(s.path).startsWith(a)&&!this.shouldIgnoreFile(s)){try{await this.runLinterFile(s)}catch(o){this.handleLintError(s,o,E("commands.lint-all-files-in-folder.error-message")+" '{FILE_PATH}'"),n+=1}r++}})),n===0)new oe.Notice(E("commands.lint-all-files-in-folder.success-message").replace("{NUM}",r.toString()).replace("{FOLDER_NAME}",i.name),Qi);else{let s=n===1?E("commands.lint-all-files-in-folder.message-singular").replace("{NUM}",r.toString()).replace("{FOLDER_NAME}",i.name):E("commands.lint-all-files-in-folder.message-plural").replace("{FILE_COUNT}",r.toString()).replace("{FOLDER_NAME}",i.name).replace("{ERROR_COUNT}",n.toString());new oe.Notice(s,Qi)}}createFolderLintModal(i){let n=E("commands.lint-all-files-in-folder.start-message").replace("{FOLDER_NAME}",i.name),r=E("commands.lint-all-files-in-folder.submit-button-text").replace("{FOLDER_NAME}",i.name),a=E("commands.lint-all-files-in-folder.submit-button-notice-text").replace("{FOLDER_NAME}",i.name);new Dr(this.app,n,r,a,()=>this.runLinterAllFilesInFolder(i)).open()}runLinterEditor(i){wn(E("logs.linter-run"));let n=this.app.workspace.getActiveFile(),r=i.getValue(),a;try{a=this.rulesRunner.lintText(Rr(r,n,this.momentLocale,this.settings))}catch(u){this.handleLintError(n,u,E("commands.lint-file.error-message")+" '{FILE_PATH}'",!1);return}let o=new on.default.diff_match_patch().diff_main(r,a),l="";o.forEach(u=>{function m(v){let w=v.split(` -`);return{line:w.length-1,ch:w[w.length-1].length}}let[g,h]=u;if(g==on.default.DIFF_INSERT)i.replaceRange(h,m(l)),l+=h;else if(g==on.default.DIFF_DELETE){let v=m(l),w=l;w+=h;let z=m(w);i.replaceRange("",v,z)}else l+=h});let d=o.map(u=>u[0]==on.default.DIFF_INSERT?u[1].length:0).reduce((u,m)=>u+m,0),c=o.map(u=>u[0]==on.default.DIFF_DELETE?u[1].length:0).reduce((u,m)=>u+m,0);this.displayChangedMessage(d,c);try{this.rulesRunner.runCustomCommands(this.settings.lintCommands,this.app.commands)}catch(u){this.handleLintError(n,u,E("commands.lint-file.error-message")+" '{FILE_PATH}'",!1)}}async setOrUpdateMomentInstance(){let i=localStorage.getItem("language")||"en",n=navigator.language?.toLowerCase(),r=Ex[i];this.settings.linterLocale!=="system-default"?r=this.settings.linterLocale:n.startsWith(i)&&(r=n),this.momentLocale=r;let a=Fs.moment.locale(),s=Fs.moment.locale(r);fi(E("logs.moment-locale-not-found").replace("{MOMENT_LOCALE}",r).replace("{CURRENT_LOCALE}",s)),Fs.moment.locale(a)}displayChangedMessage(i,n){if(this.settings.displayChanged){let r=p` - ${i} ${E("notice-text.characters-added")} - ${n} ${E("notice-text.characters-removed")} - `;new oe.Notice(r)}}handleLintError(i,n,r,a=!0){let s=r.replace("{FILE_PATH}",i.path),o=E("logs.see-console");n instanceof Pi?a?new oe.Notice(`${s} ${n.message}. -${o}`,Qi):new oe.Notice(`${n.message}. -${o}`,Qi):new oe.Notice(`${E("logs.unknown-error")} ${o}`,Qi),Oc(s,n)}async modifyPasteEvent(i){let n=this.getEditor();if(!n)return;let r=i.clipboardData.getData("text/plain");if(!r)return;if(Wt.test(r.trim())){et(E("logs.paste-link-warning"));return}if(i.stopPropagation(),i.preventDefault(),!i.defaultPrevented)return;let a=this.app.vault.getConfig("autoConvertHtml"),s=i.clipboardData.getData("text/html"),o=s&&a?(0,oe.htmlToMarkdown)(s):r,l=n.listSelections();if(l.length===1){let d=l[0];o=this.rulesRunner.runPasteLint(this.getLineContent(n,d),Rr(o,null,this.momentLocale,this.settings)),n.replaceSelection(o)}else this.handleMultiCursorPaste(n,l,o)}handleMultiCursorPaste(i,n,r){let a=this.convertContentIntoProperPasteContent(n,r),s=[];n.forEach((o,l)=>{r=this.rulesRunner.runPasteLint(this.getLineContent(i,o),Rr(a[l],null,this.momentLocale,this.settings)),s.push({text:r,from:o.anchor,to:o.head})}),i.transaction({changes:s})}convertContentIntoProperPasteContent(i,n){let r=n.split(` -`),a=[];if(r.length%i.length!==0)for(let s=0;s{this.search=i}),this.search.setPlaceholder(T("tabs.default-search-bar-text")),this.search.inputEl.onfocus=()=>{this.onFocus()},this.search.onChange(i=>{this.searchSettings(i.toLowerCase())})}searchSettings(t){let i=new Set,n=function(r,a){wi(r),i.has(a)||i.add(a)};for(let[r,a]of this.searchSettingInfo)for(let s of a)if(t.trim()===""||s.alias?.includes(t)||s.description.includes(t)||s.name.includes(t))n(s.containerEl,r);else if(s.options)for(let o of s.options){if(o.description.toLowerCase().includes(t)||o.name.toLowerCase().includes(t)){n(s.containerEl,r);break}else if(o.options){for(let l of o.options)if(l.description.toLowerCase().includes(t)||l.value.toLowerCase().includes(t)){n(s.containerEl,r);break}}Xe(s.containerEl)}else Xe(s.containerEl);for(let[r,a]of this.tabNameToTab)i.has(r)?wi(a.headingEl):Xe(a.headingEl);i.size===0?wi(this.searchZeroState):Xe(this.searchZeroState)}focusOnInput(){this.search.inputEl.focus()}};var Hp=da(wo());var fn=require("obsidian");var na=class{constructor(t,i,n,r=!0){this.containerEl=t;this.name=i;this.description=n;this.disabled=r;this.display()}display(){let t=this.containerEl.createDiv(),i=t.createDiv("setting-item-info");this.nameEl=i.createDiv("setting-item-name"),this.nameEl.setText(this.name),this.descEl=i.createDiv("setting-item-description"),this.descEl.setText(this.description),this.inputContainerEl=t.createDiv("full-width-textbox-input-wrapper"),this.inputContainerEl.onmouseover=()=>{this.getInput().trim()!=""&&this.copyEl.removeClass("linter-visually-hidden")},this.inputContainerEl.onmouseleave=()=>{this.copyEl.addClass("linter-visually-hidden")},this.inputEl=this.inputContainerEl.createEl("textarea",{cls:"full-width"}),this.inputEl.spellcheck=!1,this.inputEl.disabled=this.disabled,this.copyEl=this.inputContainerEl.createDiv({cls:"settings-copy-button linter-visually-hidden ",attr:{"aria-label":T("copy-aria-label")}}),this.copyIconEl=this.copyEl.createSpan(),(0,fn.setIcon)(this.copyIconEl,"linter-clipboard"),this.copyIconEl.onclick=()=>{this.handleCopy(this.copyIconEl)}}getInput(){return this.inputEl.value}handleCopy(t){navigator.clipboard.writeText(this.getInput()).then(()=>{(0,fn.setIcon)(t,"linter-success"),setTimeout(()=>{(0,fn.setIcon)(t,"linter-clipboard")},1500)},i=>{new fn.Notice(`${T("notice-text.copy-to-clipboard-failed")+i}`,0)})}};var aw=Object.keys(Hp.default.levels),Gs=class extends Si{constructor(t,i,n,r){super(t,i,"Debug",n,r),this.display()}display(){let t=this.contentEl.createDiv(),i={isForEnum:!0,values:aw,descriptions:[]};this.addSettingSearchInfoForGeneralSettings(new Ii(t,"tabs.debug.log-level.name","tabs.debug.log-level.description","logLevel",this.plugin,i,async()=>{wa(this.plugin.settings.logLevel)})),t=this.contentEl.createDiv();let n=T("tabs.debug.linter-config.name"),r=T("tabs.debug.linter-config.description");new na(t,n,r).inputEl.setText(JSON.stringify(this.plugin.settings,null,2)),this.addSettingSearchInfo(t,n,r),t=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ai(t,"tabs.debug.log-collection.name","tabs.debug.log-collection.description","recordLintOnSaveLogs",this.plugin)),t=this.contentEl.createDiv(),n=T("tabs.debug.linter-logs.name"),r=T("tabs.debug.linter-logs.description");let s=new na(t,n,"");s.inputEl.setText(va.join(` +`)),xi(r,s.descEl,this.plugin.settingsTab.component),this.addSettingSearchInfo(t,n,r)}};var Qs=class extends Xi.PluginSettingTab{constructor(i,n){super(i,n);this.plugin=n;this.tabNameToTab=new Map;this.selectedTab="General";this.component=new Xi.Component}display(){let{containerEl:i}=this;this.component.load(),i.empty();let n=i.createDiv("linter-setting-title");Xi.Platform.isMobile?n.addClass("linter-mobile"):n.createEl("h1").setText(T("linter-title")),this.navContainer=i.createEl("nav",{cls:"linter-setting-header"}),this.tabNavEl=this.navContainer.createDiv("linter-setting-tab-group"),this.settingsContentEl=i.createDiv("linter-setting-content"),this.addTabs(Xi.Platform.isMobile),this.createSearchZeroState(Xi.Platform.isMobile),this.generateSearchBar(n),this.selectedTab==""&&this.tabSearcher.focusOnInput()}hide(){this.component.unload()}addTabs(i){this.addTab(new Ps(this.tabNavEl,this.settingsContentEl,i,this.plugin,this.app));for(let n of Object.values(N))this.addTab(new Hs(this.tabNavEl,this.settingsContentEl,n,mt.get(n),i,this.plugin));this.addTab(new Vs(this.tabNavEl,this.settingsContentEl,i,this.app,this.plugin)),this.addTab(new Gs(this.tabNavEl,this.settingsContentEl,i,this.plugin))}generateSearchBar(i){this.tabSearcher=new Us(i,this.searchZeroState,this.tabNameToTab,()=>{for(let n of this.tabNameToTab.values()){n.updateTabDisplayMode(!1,"entering search mode by focusing on the search input box");let r=this.tabSearcher.search.getValue();this.selectedTab==""&&r.trim()!=""&&this.tabSearcher.searchSettings(r.toLowerCase()),this.selectedTab=""}})}createSearchZeroState(i){this.searchZeroState=this.settingsContentEl.createDiv(),Xe(this.searchZeroState),this.searchZeroState.createEl(i?"h3":"h2",{text:T("empty-search-results-text")}).style.textAlign="center"}addTab(i){i.navButton.onclick=()=>{this.onTabClick(i.name)},i.updateTabDisplayMode(this.selectedTab===i.name,"the status is still the same"),this.tabNameToTab.set(i.name,i)}onTabClick(i){if(this.selectedTab!==i){if(this.selectedTab=="")for(let[n,r]of this.tabNameToTab)r.updateTabDisplayMode(n===i,"leaving search mode by selecting a tab");else Xe(this.searchZeroState),this.tabNameToTab.get(i).updateTabDisplayMode(!0),this.tabNameToTab.get(this.selectedTab).updateTabDisplayMode(!1);this.selectedTab=i}}};var Wp=require("obsidian");var sw=/^---\n/gm,$p=`${Xt}:`,Zs=class extends Wp.EditorSuggest{constructor(i){super(i.app);this.plugin=i;this.inline=!1;let n=T("all-rules-option");this.ruleInfo=[{displayName:n,name:n.toLowerCase(),alias:"all"}];for(let r of ki){let a=r.getName();this.ruleInfo.push({displayName:a,name:a.toLowerCase(),alias:r.alias})}}onTrigger(i,n,r){let a=n.getLine(i.line).toLowerCase();if(a.startsWith($p)||this.disabledRulesIsEndOfStartOfFileToCursor(n.getRange({line:0,ch:0},i))){this.inline=a.startsWith($p);let o=n.getLine(i.line).substring(0,i.ch),l=o.match(/(\S+)$/)?.first().replaceAll("[","").replaceAll("]","");if(l)return{end:i,start:{ch:o.lastIndexOf(l),line:i.line},query:l}}return null}getSuggestions(i){let[n,r]=os(i.editor.getValue());if(r)return[];let a=i.query.toLowerCase();return this.ruleInfo.filter(o=>(o.name.contains(a)||o.alias.contains(a))&&!n.includes(o.alias))}renderSuggestion(i,n){n.addClass("mod-complex");let r=n.createDiv({cls:"suggestion-content"});r.createDiv({cls:"suggestion-title"}).setText(`${i.displayName}`),r.createDiv({cls:"suggestion-note"}).setText(`${i.alias}`)}selectSuggestion(i){if(this.context){let n=i.alias;this.inline?n=`${n},`:n=`${n} + -`,this.context.editor.replaceRange(`${n} `,this.context.start,this.context.end)}}disabledRulesIsEndOfStartOfFileToCursor(i){if(!i||!i.length||i.match(sw)?.length!=1)return!1;let n=Ce(i+` +`,Xt)?.trimEnd();return n===null?!1:i.trimEnd().endsWith(n)}};var ow={en:"en-gb",zh:"zh-cn","zh-TW":"zh-tw",ru:"ru",ko:"ko",it:"it",id:"id",ro:"ro","pt-BR":"pt-br",cz:"cs",da:"da",de:"de",es:"es",fr:"fr",no:"nn",pl:"pl",pt:"pt",tr:"tr",hi:"hi",nl:"nl",ar:"ar",ja:"ja"},et=0,Xs=class extends oe.Plugin{constructor(){super(...arguments);this.eventRefs=[];this.isEnabled=!0;this.rulesRunner=new Is;this.overridePaste=!1}async onload(){Aa(window.localStorage.getItem("language")),Vt(T("logs.plugin-load")),this.isEnabled=!0;for(let i in ke){let n=ke[i];(0,oe.addIcon)(n.id,n.source)}await this.loadSettings(),this.addCommands(),this.registerEventsAndSaveCallback(),this.registerEditorSuggest(new Zs(this)),this.settingsTab=new Qs(this.app,this),this.addSettingTab(this.settingsTab)}async onunload(){Vt(T("logs.plugin-unload")),this.isEnabled=!1;for(let i of this.eventRefs)this.app.workspace.offref(i)}async loadSettings(){let i=await this.loadData();this.settings=Object.assign({},Ur,i),typeof this.settings.logLevel=="number"&&(this.settings.logLevel=Qc(this.settings.logLevel)),wa(this.settings.logLevel),this.setOrUpdateMomentInstance(),this.settings.settingsConvertedToConfigKeyValues||this.moveConfigValuesToKeyBasedFormat();for(let n of ki)this.settings.ruleConfigs[n.alias]||(this.settings.ruleConfigs[n.alias]=n.getDefaultOptions());this.updatePasteOverrideStatus()}async saveSettings(){await this.saveData(this.settings),this.updatePasteOverrideStatus()}addCommands(){let i=this;this.addCommand({id:"lint-file",name:T("commands.lint-file.name"),editorCheckCallback(n,r,a){if(n)return i.isMarkdownFile(a.file);i.runLinterEditor(r)},icon:ke.file.id,hotkeys:[{modifiers:["Mod","Alt"],key:"L"}]}),this.addCommand({id:"lint-file-unless-ignored",name:T("commands.lint-file-unless-ignored.name"),editorCheckCallback(n,r,a){if(n)return i.isMarkdownFile(a.file);i.shouldIgnoreFile(a.file)||i.runLinterEditor(r)},icon:ke.file.id}),this.addCommand({id:"lint-all-files",name:T("commands.lint-all-files.name"),icon:ke.vault.id,callback:()=>{let n=T("commands.lint-all-files.start-message"),r=T("commands.lint-all-files.submit-button-text"),a=T("commands.lint-all-files.submit-button-notice-text");new Vr(this.app,n,r,a,()=>this.runLinterAllFiles(this.app)).open()}}),this.addCommand({id:"lint-all-files-in-folder",name:T("commands.lint-all-files-in-folder.name"),icon:ke.folder.id,editorCheckCallback:(n,r,a)=>{if(n)return!a.file.parent.isRoot();this.createFolderLintModal(a.file.parent)}}),this.addCommand({id:"paste-as-plain-text",name:T("commands.paste-as-plain-text.name"),editorCheckCallback:(n,r)=>{if(n)return this.overridePaste;this.pasteAsPlainText(r)}})}registerEventsAndSaveCallback(){let i=this.app.workspace.on("editor-paste",s=>{s.defaultPrevented||!this.overridePaste||this.modifyPasteEvent(s)});this.registerEvent(i),this.eventRefs.push(i),i=this.app.workspace.on("file-menu",(s,o,l)=>this.onMenuOpenCallback(s,o,l)),this.registerEvent(i),this.eventRefs.push(i),this.lastActiveFile=this.app.workspace.getActiveFile(),i=this.app.workspace.on("active-leaf-change",()=>this.onActiveLeafChange()),this.registerEvent(i),this.eventRefs.push(i);let n=this.app.commands?.commands?.["editor:save-file"];typeof n?.callback=="function"&&(n.callback=()=>{if(this.settings.lintOnSave&&this.isEnabled){let s=this.getEditor();if(!s)return;let o=this.app.workspace.getActiveFile();!this.shouldIgnoreFile(o)&&this.isMarkdownFile(o)&&this.runLinterEditor(s)}});let a=this;window.CodeMirrorAdapter.commands.save=()=>{a.app.commands.executeCommandById("editor:save-file")}}onMenuOpenCallback(i,n,r){n instanceof oe.TFile&&this.isMarkdownFile(n)?i.addItem(a=>{a.setIcon(ke.file.id).setTitle(T("commands.lint-file-pop-up-menu-text.name")).onClick(async()=>{let s=this.app.workspace.getActiveFile(),o=this.getEditor();s===n&&o?this.runLinterEditor(o):this.runLinterFile(n)})}):n instanceof oe.TFolder&&i.addItem(a=>{a.setTitle(T("commands.lint-folder-pop-up-menu-text.name")).setIcon(ke.folder.id).onClick(()=>this.createFolderLintModal(n))})}async onActiveLeafChange(){if(!this.isEnabled)return;let i=this.app.workspace.getActiveFile(),n=this.lastActiveFile==null?!1:await this.app.vault.adapter.exists(this.lastActiveFile.path);if(!this.settings.lintOnFileChange||!n||this.lastActiveFile===i||!this.isMarkdownFile(this.lastActiveFile)||this.shouldIgnoreFile(this.lastActiveFile)){this.lastActiveFile=i;return}try{await this.runLinterFile(this.lastActiveFile,!0)}catch(r){this.handleLintError(this.lastActiveFile,r,T("commands.lint-file.error-message")+" '{FILE_PATH}'",!1)}finally{this.lastActiveFile=i}}shouldIgnoreFile(i){for(let n of this.settings.foldersToIgnore)if(n.length>0&&i.path.startsWith(n))return!0;return!1}isMarkdownFile(i){return i&&i.extension==="md"}async runLinterFile(i,n=!1){let r=vd(await this.app.vault.read(i)),a=this.rulesRunner.lintText(Wr(r,i,this.momentLocale,this.settings));if(r!=a&&(await this.app.vault.modify(i,a),n)){let s=T("logs.file-change-lint-message-start")+" "+this.lastActiveFile.path;this.settings.displayLintOnFileChangeNotice&&new oe.Notice(s),Vt(s)}}async runLinterAllFiles(i){let n=0;if(await Promise.all(i.vault.getMarkdownFiles().map(async r=>{if(!this.shouldIgnoreFile(r))try{await this.runLinterFile(r)}catch(a){this.handleLintError(r,a,T("commands.lint-all-files.error-message")+" '{FILE_PATH}'"),n+=1}})),n===0)new oe.Notice(T("commands.lint-all-files.success-message"),et);else{let r=n===1?T("commands.lint-all-files.errors-message-singular"):T("commands.lint-all-files.errors-message-plural").replace("{NUM}",n.toString());new oe.Notice(r,et)}}async runLinterAllFilesInFolder(i){Vt(T("logs.folder-lint")+i.name);let n=0,r=0,a=this.getAllFilesInFolder(i);if(await Promise.all(a.map(async s=>{if(!this.shouldIgnoreFile(s)){try{await this.runLinterFile(s)}catch(o){this.handleLintError(s,o,T("commands.lint-all-files-in-folder.error-message")+" '{FILE_PATH}'"),n+=1}r++}})),n===0)new oe.Notice(T("commands.lint-all-files-in-folder.success-message").replace("{NUM}",r.toString()).replace("{FOLDER_NAME}",i.name),et);else{let s=n===1?T("commands.lint-all-files-in-folder.message-singular").replace("{NUM}",r.toString()).replace("{FOLDER_NAME}",i.name):T("commands.lint-all-files-in-folder.message-plural").replace("{FILE_COUNT}",r.toString()).replace("{FOLDER_NAME}",i.name).replace("{ERROR_COUNT}",n.toString());new oe.Notice(s,et)}}createFolderLintModal(i){let n=T("commands.lint-all-files-in-folder.start-message").replace("{FOLDER_NAME}",i.name),r=T("commands.lint-all-files-in-folder.submit-button-text").replace("{FOLDER_NAME}",i.name),a=T("commands.lint-all-files-in-folder.submit-button-notice-text").replace("{FOLDER_NAME}",i.name);new Vr(this.app,n,r,a,()=>this.runLinterAllFilesInFolder(i)).open()}runLinterEditor(i){zo(this.settings.recordLintOnSaveLogs),Gc(),Vt(T("logs.linter-run"));let n=this.app.workspace.getActiveFile(),r=i.getValue(),a;try{a=this.rulesRunner.lintText(Wr(r,n,this.momentLocale,this.settings))}catch(u){this.handleLintError(n,u,T("commands.lint-file.error-message")+" '{FILE_PATH}'",!1);return}let o=new yn.default.diff_match_patch().diff_main(r,a),l="";o.forEach(u=>{function m(v){let x=v.split(` +`);return{line:x.length-1,ch:x[x.length-1].length}}let[g,h]=u;if(g==yn.default.DIFF_INSERT)i.replaceRange(h,m(l)),l+=h;else if(g==yn.default.DIFF_DELETE){let v=m(l),x=l;x+=h;let w=m(x);i.replaceRange("",v,w)}else l+=h});let d=o.map(u=>u[0]==yn.default.DIFF_INSERT?u[1].length:0).reduce((u,m)=>u+m,0),c=o.map(u=>u[0]==yn.default.DIFF_DELETE?u[1].length:0).reduce((u,m)=>u+m,0);this.displayChangedMessage(d,c);try{this.rulesRunner.runCustomCommands(this.settings.lintCommands,this.app.commands)}catch(u){this.handleLintError(n,u,T("commands.lint-file.error-message")+" '{FILE_PATH}'",!1)}zo(!1)}async setOrUpdateMomentInstance(){let i=localStorage.getItem("language")||"en",n=navigator.language?.toLowerCase(),r=ow[i];this.settings.linterLocale!=="system-default"?r=this.settings.linterLocale:n.startsWith(i)&&(r=n),this.momentLocale=r;let a=Js.moment.locale(),s=Js.moment.locale(r);oi(T("logs.moment-locale-not-found").replace("{MOMENT_LOCALE}",r).replace("{CURRENT_LOCALE}",s)),Js.moment.locale(a)}displayChangedMessage(i,n){if(this.settings.displayChanged){let r=p` + ${i} ${T("notice-text.characters-added")} + ${n} ${T("notice-text.characters-removed")} + `;new oe.Notice(r)}}handleLintError(i,n,r,a=!0){let s=r.replace("{FILE_PATH}",i.path),o=T("logs.see-console");n instanceof Hi?a?new oe.Notice(`${s} ${n.message}. +${o}`,et):new oe.Notice(`${n.message}. +${o}`,et):new oe.Notice(`${T("logs.unknown-error")} ${o}`,et),Uc(s,n)}async modifyPasteEvent(i){let n=this.getEditor();if(!n)return;let r=i.clipboardData.getData("text/plain");if(!r)return;if(Zt.test(r.trim())){rt(T("logs.paste-link-warning"));return}if(i.stopPropagation(),i.preventDefault(),!i.defaultPrevented)return;let a=this.app.vault.getConfig("autoConvertHtml"),s=i.clipboardData.getData("text/html"),o=s&&a?(0,oe.htmlToMarkdown)(s):r,l=n.listSelections();if(l.length===1){let d=l[0];o=this.rulesRunner.runPasteLint(this.getLineContent(n,d),n.getSelection()??"",Wr(o,null,this.momentLocale,this.settings)),n.replaceSelection(o)}else this.handleMultiCursorPaste(n,l,o)}handleMultiCursorPaste(i,n,r){let a=this.convertContentIntoProperPasteContent(n,r),s=[];n.forEach((o,l)=>{r=this.rulesRunner.runPasteLint(this.getLineContent(i,o),i.getRange(o.anchor,o.head)??"",Wr(a[l],null,this.momentLocale,this.settings)),s.push({text:r,from:o.anchor,to:o.head})}),i.transaction({changes:s})}convertContentIntoProperPasteContent(i,n){let r=n.split(` +`),a=[];if(r.length%i.length!==0)for(let s=0;s { + this.settings.lightScheme = "minimal-eink-light"; + this.saveData(this.settings); + this.updateLightScheme(); + this.updateLightStyle(); + } + }); this.addCommand({ id: "toggle-minimal-everforest-light", name: "Switch light color scheme to Everforest (light)", @@ -452,7 +462,7 @@ var MinimalTheme = class extends import_obsidian.Plugin { }); this.addCommand({ id: "toggle-minimal-atom-dark", - name: "Switch color scheme to Atom (dark)", + name: "Switch dark color scheme to Atom (dark)", callback: () => { this.settings.darkScheme = "minimal-atom-dark"; this.saveData(this.settings); @@ -462,7 +472,7 @@ var MinimalTheme = class extends import_obsidian.Plugin { }); this.addCommand({ id: "toggle-minimal-ayu-dark", - name: "Switch color scheme to Ayu (dark)", + name: "Switch dark color scheme to Ayu (dark)", callback: () => { this.settings.darkScheme = "minimal-ayu-dark"; this.saveData(this.settings); @@ -482,7 +492,7 @@ var MinimalTheme = class extends import_obsidian.Plugin { }); this.addCommand({ id: "toggle-minimal-dracula-dark", - name: "Switch color scheme to Dracula (dark)", + name: "Switch dark color scheme to Dracula (dark)", callback: () => { this.settings.darkScheme = "minimal-dracula-dark"; this.saveData(this.settings); @@ -501,10 +511,10 @@ var MinimalTheme = class extends import_obsidian.Plugin { } }); this.addCommand({ - id: "toggle-minimal-gruvbox-dark", - name: "Switch dark color scheme to Gruvbox (dark)", + id: "toggle-minimal-eink-dark", + name: "Switch dark color scheme to E-ink (dark)", callback: () => { - this.settings.darkScheme = "minimal-gruvbox-dark"; + this.settings.darkScheme = "minimal-eink-dark"; this.saveData(this.settings); this.updateDarkScheme(); this.updateDarkStyle(); @@ -520,9 +530,19 @@ var MinimalTheme = class extends import_obsidian.Plugin { this.updateDarkStyle(); } }); + this.addCommand({ + id: "toggle-minimal-gruvbox-dark", + name: "Switch dark color scheme to Gruvbox (dark)", + callback: () => { + this.settings.darkScheme = "minimal-gruvbox-dark"; + this.saveData(this.settings); + this.updateDarkScheme(); + this.updateDarkStyle(); + } + }); this.addCommand({ id: "toggle-minimal-macos-dark", - name: "Switch light color scheme to macOS (dark)", + name: "Switch dark color scheme to macOS (dark)", callback: () => { this.settings.darkScheme = "minimal-macos-dark"; this.saveData(this.settings); @@ -552,7 +572,7 @@ var MinimalTheme = class extends import_obsidian.Plugin { }); this.addCommand({ id: "toggle-minimal-rose-pine-dark", - name: "Switch color scheme to Ros\xE9 Pine (dark)", + name: "Switch dark color scheme to Ros\xE9 Pine (dark)", callback: () => { this.settings.darkScheme = "minimal-rose-pine-dark"; this.saveData(this.settings); @@ -676,11 +696,11 @@ var MinimalTheme = class extends import_obsidian.Plugin { this.app.workspace.trigger("css-change"); } updateDarkScheme() { - document.body.removeClass("minimal-atom-dark", "minimal-ayu-dark", "minimal-catppuccin-dark", "minimal-default-dark", "minimal-dracula-dark", "minimal-everforest-dark", "minimal-gruvbox-dark", "minimal-macos-dark", "minimal-nord-dark", "minimal-notion-dark", "minimal-rose-pine-dark", "minimal-solarized-dark", "minimal-things-dark"); + document.body.removeClass("minimal-atom-dark", "minimal-ayu-dark", "minimal-catppuccin-dark", "minimal-default-dark", "minimal-dracula-dark", "minimal-eink-dark", "minimal-everforest-dark", "minimal-gruvbox-dark", "minimal-macos-dark", "minimal-nord-dark", "minimal-notion-dark", "minimal-rose-pine-dark", "minimal-solarized-dark", "minimal-things-dark"); document.body.addClass(this.settings.darkScheme); } updateLightScheme() { - document.body.removeClass("minimal-atom-light", "minimal-ayu-light", "minimal-catppuccin-light", "minimal-default-light", "minimal-everforest-light", "minimal-gruvbox-light", "minimal-macos-light", "minimal-nord-light", "minimal-notion-light", "minimal-rose-pine-light", "minimal-solarized-light", "minimal-things-light"); + document.body.removeClass("minimal-atom-light", "minimal-ayu-light", "minimal-catppuccin-light", "minimal-default-light", "minimal-eink-light", "minimal-everforest-light", "minimal-gruvbox-light", "minimal-macos-light", "minimal-nord-light", "minimal-notion-light", "minimal-rose-pine-light", "minimal-solarized-light", "minimal-things-light"); document.body.addClass(this.settings.lightScheme); } updateTheme() { @@ -737,254 +757,196 @@ var MinimalSettingTab = class extends import_obsidian.PluginSettingTab { display() { let { containerEl } = this; containerEl.empty(); - containerEl.createEl("h3", { text: "Minimal Theme Settings" }); - const mainDesc = containerEl.createEl("p"); - mainDesc.appendText("Need help? Explore the "); - mainDesc.appendChild(createEl("a", { - text: "Minimal documentation", - href: "https://minimal.guide" - })); - mainDesc.appendText(" or visit the "); - mainDesc.appendChild(createEl("strong", { - text: "#minimal" - })); - mainDesc.appendText(" channel in the official Obsidian Discord. You can support continued development by "); - mainDesc.appendChild(createEl("a", { - text: "buying me a coffee", - href: "https://www.buymeacoffee.com/kepano" - })); - mainDesc.appendText(" \u2615"); - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Color scheme" }); - const colorDesc = containerEl.createEl("p"); + const colorSection = containerEl.createEl("div", { cls: "setting-item setting-item-heading" }); + const colorSectionInfo = colorSection.createEl("div", { cls: "setting-item-info" }); + colorSectionInfo.createEl("div", { text: "Color scheme", cls: "setting-item-name" }); + const colorDesc = colorSectionInfo.createEl("div", { cls: "setting-item-description" }); colorDesc.appendChild(createEl("span", { - text: "To create a completely custom color scheme use " + text: "To create a custom color scheme use the " })); colorDesc.appendChild(createEl("a", { - text: "Style Settings plugin", + text: "Style Settings", href: "obsidian://show-plugin?id=obsidian-style-settings" })); - colorDesc.appendText("."); - new import_obsidian.Setting(containerEl).setName("Light mode color scheme").setDesc("Preset color options for light mode").addDropdown((dropdown) => dropdown.addOption("minimal-default-light", "Default").addOption("minimal-atom-light", "Atom").addOption("minimal-ayu-light", "Ayu").addOption("minimal-catppuccin-light", "Catppuccin").addOption("minimal-everforest-light", "Everforest").addOption("minimal-gruvbox-light", "Gruvbox").addOption("minimal-macos-light", "macOS").addOption("minimal-nord-light", "Nord").addOption("minimal-notion-light", "Notion").addOption("minimal-rose-pine-light", "Ros\xE9 Pine").addOption("minimal-solarized-light", "Solarized").addOption("minimal-things-light", "Things").setValue(this.plugin.settings.lightScheme).onChange((value) => { + colorDesc.appendText(" plugin. See "); + colorDesc.appendChild(createEl("a", { + text: "documentation", + href: "https://minimal.guide/features/color-schemes" + })); + colorDesc.appendText(" for details."); + new import_obsidian.Setting(containerEl).setName("Light mode color scheme").setDesc("Preset color options for light mode.").addDropdown((dropdown) => dropdown.addOption("minimal-default-light", "Default").addOption("minimal-atom-light", "Atom").addOption("minimal-ayu-light", "Ayu").addOption("minimal-catppuccin-light", "Catppuccin").addOption("minimal-eink-light", "E-ink (beta)").addOption("minimal-everforest-light", "Everforest").addOption("minimal-gruvbox-light", "Gruvbox").addOption("minimal-macos-light", "macOS").addOption("minimal-nord-light", "Nord").addOption("minimal-notion-light", "Notion").addOption("minimal-rose-pine-light", "Ros\xE9 Pine").addOption("minimal-solarized-light", "Solarized").addOption("minimal-things-light", "Things").setValue(this.plugin.settings.lightScheme).onChange((value) => { this.plugin.settings.lightScheme = value; this.plugin.saveData(this.plugin.settings); this.plugin.updateLightScheme(); })); - new import_obsidian.Setting(containerEl).setName("Light mode background contrast").setDesc("Level of contrast between sidebar and main content").addDropdown((dropdown) => dropdown.addOption("minimal-light", "Default").addOption("minimal-light-white", "All white").addOption("minimal-light-tonal", "Low contrast").addOption("minimal-light-contrast", "High contrast").setValue(this.plugin.settings.lightStyle).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Light mode background contrast").setDesc("Level of contrast between sidebar and main content.").addDropdown((dropdown) => dropdown.addOption("minimal-light", "Default").addOption("minimal-light-white", "All white").addOption("minimal-light-tonal", "Low contrast").addOption("minimal-light-contrast", "High contrast").setValue(this.plugin.settings.lightStyle).onChange((value) => { this.plugin.settings.lightStyle = value; this.plugin.saveData(this.plugin.settings); this.plugin.updateLightStyle(); })); - new import_obsidian.Setting(containerEl).setName("Dark mode color scheme").setDesc("Preset colors options for dark mode").addDropdown((dropdown) => dropdown.addOption("minimal-default-dark", "Default").addOption("minimal-atom-dark", "Atom").addOption("minimal-ayu-dark", "Ayu").addOption("minimal-catppuccin-dark", "Catppuccin").addOption("minimal-dracula-dark", "Dracula").addOption("minimal-everforest-dark", "Everforest").addOption("minimal-gruvbox-dark", "Gruvbox").addOption("minimal-macos-dark", "macOS").addOption("minimal-nord-dark", "Nord").addOption("minimal-notion-dark", "Notion").addOption("minimal-rose-pine-dark", "Ros\xE9 Pine").addOption("minimal-solarized-dark", "Solarized").addOption("minimal-things-dark", "Things").setValue(this.plugin.settings.darkScheme).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Dark mode color scheme").setDesc("Preset colors options for dark mode.").addDropdown((dropdown) => dropdown.addOption("minimal-default-dark", "Default").addOption("minimal-atom-dark", "Atom").addOption("minimal-ayu-dark", "Ayu").addOption("minimal-catppuccin-dark", "Catppuccin").addOption("minimal-dracula-dark", "Dracula").addOption("minimal-eink-dark", "E-ink (beta)").addOption("minimal-everforest-dark", "Everforest").addOption("minimal-gruvbox-dark", "Gruvbox").addOption("minimal-macos-dark", "macOS").addOption("minimal-nord-dark", "Nord").addOption("minimal-notion-dark", "Notion").addOption("minimal-rose-pine-dark", "Ros\xE9 Pine").addOption("minimal-solarized-dark", "Solarized").addOption("minimal-things-dark", "Things").setValue(this.plugin.settings.darkScheme).onChange((value) => { this.plugin.settings.darkScheme = value; this.plugin.saveData(this.plugin.settings); this.plugin.updateDarkScheme(); })); - new import_obsidian.Setting(containerEl).setName("Dark mode background contrast").setDesc("Level of contrast between sidebar and main content").addDropdown((dropdown) => dropdown.addOption("minimal-dark", "Default").addOption("minimal-dark-tonal", "Low contrast").addOption("minimal-dark-black", "True black").setValue(this.plugin.settings.darkStyle).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Dark mode background contrast").setDesc("Level of contrast between sidebar and main content.").addDropdown((dropdown) => dropdown.addOption("minimal-dark", "Default").addOption("minimal-dark-tonal", "Low contrast").addOption("minimal-dark-black", "True black").setValue(this.plugin.settings.darkStyle).onChange((value) => { this.plugin.settings.darkStyle = value; this.plugin.saveData(this.plugin.settings); this.plugin.updateDarkStyle(); })); containerEl.createEl("br"); - containerEl.createEl("h3"); - containerEl.createEl("h3", { text: "Features" }); - new import_obsidian.Setting(containerEl).setName("Match system setting for light or dark mode").setDesc("Automatically switch based on your OS setting").addToggle((toggle) => toggle.setValue(this.plugin.settings.useSystemTheme).onChange((value) => { + const featuresSection = containerEl.createEl("div", { cls: "setting-item setting-item-heading" }); + const featuresSectionInfo = featuresSection.createEl("div", { cls: "setting-item-info" }); + featuresSectionInfo.createEl("div", { text: "Features", cls: "setting-item-name" }); + const featuresSectionDesc = featuresSectionInfo.createEl("div", { cls: "setting-item-description" }); + featuresSectionDesc.appendChild(createEl("span", { + text: "See " + })); + featuresSectionDesc.appendChild(createEl("a", { + text: "documentation", + href: "https://minimal.guide" + })); + featuresSectionDesc.appendText(" for details."); + new import_obsidian.Setting(containerEl).setName("Match system setting for light or dark mode").setDesc("Automatically switch based on your OS setting.").addToggle((toggle) => toggle.setValue(this.plugin.settings.useSystemTheme).onChange((value) => { this.plugin.settings.useSystemTheme = value; this.plugin.saveData(this.plugin.settings); this.plugin.refreshSystemTheme(); })); - new import_obsidian.Setting(containerEl).setName("Text labels for primary navigation").setDesc("Navigation in left sidebar uses text labels (see documentation for localization support)").addToggle((toggle) => toggle.setValue(this.plugin.settings.labeledNav).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Text labels for primary navigation").setDesc("Navigation items in the left sidebar uses text labels.").addToggle((toggle) => toggle.setValue(this.plugin.settings.labeledNav).onChange((value) => { this.plugin.settings.labeledNav = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Colorful window frame").setDesc("The top area of the app uses your accent color").addToggle((toggle) => toggle.setValue(this.plugin.settings.colorfulFrame).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Colorful window frame").setDesc("The top area of the app uses your accent color.").addToggle((toggle) => toggle.setValue(this.plugin.settings.colorfulFrame).onChange((value) => { this.plugin.settings.colorfulFrame = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Colorful active states").setDesc("Active file and menu items use your accent color").addToggle((toggle) => toggle.setValue(this.plugin.settings.colorfulActiveStates).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Colorful active states").setDesc("Active file and menu items use your accent color.").addToggle((toggle) => toggle.setValue(this.plugin.settings.colorfulActiveStates).onChange((value) => { this.plugin.settings.colorfulActiveStates = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Colorful headings").setDesc("Headings use a different color for each size").addToggle((toggle) => toggle.setValue(this.plugin.settings.colorfulHeadings).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Colorful headings").setDesc("Headings use a different color for each size.").addToggle((toggle) => toggle.setValue(this.plugin.settings.colorfulHeadings).onChange((value) => { this.plugin.settings.colorfulHeadings = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Minimal status bar").setDesc("Use narrow status bar").addToggle((toggle) => toggle.setValue(this.plugin.settings.minimalStatus).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Minimal status bar").setDesc("Turn off to use full-width status bar.").addToggle((toggle) => toggle.setValue(this.plugin.settings.minimalStatus).onChange((value) => { this.plugin.settings.minimalStatus = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Trim file names in sidebars").setDesc("Use ellipses to fit file names on a single line").addToggle((toggle) => toggle.setValue(this.plugin.settings.trimNames).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Trim file names in sidebars").setDesc("Use ellipses to fit file names on a single line.").addToggle((toggle) => toggle.setValue(this.plugin.settings.trimNames).onChange((value) => { this.plugin.settings.trimNames = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Workspace borders").setDesc("Display divider lines between workspace elements").addToggle((toggle) => toggle.setValue(this.plugin.settings.bordersToggle).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Workspace borders").setDesc("Display divider lines between workspace elements.").addToggle((toggle) => toggle.setValue(this.plugin.settings.bordersToggle).onChange((value) => { this.plugin.settings.bordersToggle = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Focus mode").setDesc("Hide tab bar and status bar, hover to display (can be toggled with hotkey)").addToggle((toggle) => toggle.setValue(this.plugin.settings.focusMode).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Focus mode").setDesc("Hide tab bar and status bar, hover to display. Can be toggled via hotkey.").addToggle((toggle) => toggle.setValue(this.plugin.settings.focusMode).onChange((value) => { this.plugin.settings.focusMode = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Underline internal links").setDesc("Show underlines on internal links").addToggle((toggle) => toggle.setValue(this.plugin.settings.underlineInternal).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Underline internal links").setDesc("Show underlines on internal links.").addToggle((toggle) => toggle.setValue(this.plugin.settings.underlineInternal).onChange((value) => { this.plugin.settings.underlineInternal = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Underline external links").setDesc("Show underlines on external links").addToggle((toggle) => toggle.setValue(this.plugin.settings.underlineExternal).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Underline external links").setDesc("Show underlines on external links.").addToggle((toggle) => toggle.setValue(this.plugin.settings.underlineExternal).onChange((value) => { this.plugin.settings.underlineExternal = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Maximize media").setDesc("Images and videos fill the width of the line").addToggle((toggle) => toggle.setValue(this.plugin.settings.fullWidthMedia).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Maximize media").setDesc("Images and videos fill the width of the line.").addToggle((toggle) => toggle.setValue(this.plugin.settings.fullWidthMedia).onChange((value) => { this.plugin.settings.fullWidthMedia = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); containerEl.createEl("br"); - containerEl.createEl("h3"); - containerEl.createEl("h3", { text: "Layout" }); - const layoutDesc = containerEl.createEl("p"); - layoutDesc.appendChild(createEl("span", { - text: "The following options require the " + const layoutSection = containerEl.createEl("div", { cls: "setting-item setting-item-heading" }); + const layoutSectionInfo = layoutSection.createEl("div", { cls: "setting-item-info" }); + layoutSectionInfo.createEl("div", { text: "Layout", cls: "setting-item-name" }); + const layoutSectionDesc = layoutSectionInfo.createEl("div", { cls: "setting-item-description" }); + layoutSectionDesc.appendChild(createEl("span", { + text: "These options can also be defined on a per-file basis, see " })); - layoutDesc.appendChild(createEl("a", { - text: "Contextual Typography plugin", - href: "obsidian://show-plugin?id=obsidian-contextual-typography" + layoutSectionDesc.appendChild(createEl("a", { + text: "documentation", + href: "https://minimal.guide/features/block-width" })); - layoutDesc.appendText(". These options can also be defined on a per-file basis using YAML, "); - layoutDesc.appendChild(createEl("a", { - text: "see documentation", - href: "https://minimal.guide/Features/Block+width" - })); - layoutDesc.appendText(" for details."); - new import_obsidian.Setting(containerEl).setName("Image grids").setDesc("Turn consecutive images into columns \u2014 to make a new row, add an extra line break between images").addToggle((toggle) => toggle.setValue(this.plugin.settings.imgGrid).onChange((value) => { + layoutSectionDesc.appendText(" for details."); + new import_obsidian.Setting(containerEl).setName("Image grids").setDesc("Turn consecutive images into columns \u2014 to make a new row, add an extra line break between images.").addToggle((toggle) => toggle.setValue(this.plugin.settings.imgGrid).onChange((value) => { this.plugin.settings.imgGrid = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Chart width").setDesc("Default width for chart blocks").addDropdown((dropdown) => dropdown.addOption("chart-default-width", "Default").addOption("chart-wide", "Wide line width").addOption("chart-max", "Maximum line width").addOption("chart-100", "100% pane width").setValue(this.plugin.settings.chartWidth).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Chart width").setDesc("Default width for chart blocks.").addDropdown((dropdown) => dropdown.addOption("chart-default-width", "Default").addOption("chart-wide", "Wide line width").addOption("chart-max", "Maximum line width").addOption("chart-100", "100% pane width").setValue(this.plugin.settings.chartWidth).onChange((value) => { this.plugin.settings.chartWidth = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Iframe width").setDesc("Default width for iframe blocks").addDropdown((dropdown) => dropdown.addOption("iframe-default-width", "Default").addOption("iframe-wide", "Wide line width").addOption("iframe-max", "Maximum line width").addOption("iframe-100", "100% pane width").setValue(this.plugin.settings.iframeWidth).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Iframe width").setDesc("Default width for iframe blocks.").addDropdown((dropdown) => dropdown.addOption("iframe-default-width", "Default").addOption("iframe-wide", "Wide line width").addOption("iframe-max", "Maximum line width").addOption("iframe-100", "100% pane width").setValue(this.plugin.settings.iframeWidth).onChange((value) => { this.plugin.settings.iframeWidth = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Image width").setDesc("Default width for image blocks").addDropdown((dropdown) => dropdown.addOption("img-default-width", "Default").addOption("img-wide", "Wide line width").addOption("img-max", "Maximum line width").addOption("img-100", "100% pane width").setValue(this.plugin.settings.imgWidth).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Image width").setDesc("Default width for image blocks.").addDropdown((dropdown) => dropdown.addOption("img-default-width", "Default").addOption("img-wide", "Wide line width").addOption("img-max", "Maximum line width").addOption("img-100", "100% pane width").setValue(this.plugin.settings.imgWidth).onChange((value) => { this.plugin.settings.imgWidth = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Map width").setDesc("Default width for map blocks").addDropdown((dropdown) => dropdown.addOption("map-default-width", "Default").addOption("map-wide", "Wide line width").addOption("map-max", "Maximum line width").addOption("map-100", "100% pane width").setValue(this.plugin.settings.mapWidth).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Map width").setDesc("Default width for map blocks.").addDropdown((dropdown) => dropdown.addOption("map-default-width", "Default").addOption("map-wide", "Wide line width").addOption("map-max", "Maximum line width").addOption("map-100", "100% pane width").setValue(this.plugin.settings.mapWidth).onChange((value) => { this.plugin.settings.mapWidth = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Table width").setDesc("Default width for table and Dataview blocks").addDropdown((dropdown) => dropdown.addOption("table-default-width", "Default").addOption("table-wide", "Wide line width").addOption("table-max", "Maximum line width").addOption("table-100", "100% pane width").setValue(this.plugin.settings.tableWidth).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Table width").setDesc("Default width for table and Dataview blocks.").addDropdown((dropdown) => dropdown.addOption("table-default-width", "Default").addOption("table-wide", "Wide line width").addOption("table-max", "Maximum line width").addOption("table-100", "100% pane width").setValue(this.plugin.settings.tableWidth).onChange((value) => { this.plugin.settings.tableWidth = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); containerEl.createEl("br"); - containerEl.createEl("h3"); - containerEl.createEl("h3", { text: "Typography" }); - new import_obsidian.Setting(containerEl).setName("Text font size").setDesc("Used for the main text (default 16)").addText((text) => text.setPlaceholder("16").setValue((this.plugin.settings.textNormal || "") + "").onChange((value) => { + containerEl.createEl("div", { text: "Typography", cls: "setting-item setting-item-heading" }); + new import_obsidian.Setting(containerEl).setName("Text font size").setDesc("Used for the main text (default 16).").addText((text) => text.setPlaceholder("16").setValue((this.plugin.settings.textNormal || "") + "").onChange((value) => { this.plugin.settings.textNormal = parseFloat(value); this.plugin.saveData(this.plugin.settings); this.plugin.setFontSize(); })); - new import_obsidian.Setting(containerEl).setName("Small font size").setDesc("Used for text in the sidebars and tabs (default 13)").addText((text) => text.setPlaceholder("13").setValue((this.plugin.settings.textSmall || "") + "").onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Small font size").setDesc("Used for text in the sidebars and tabs (default 13).").addText((text) => text.setPlaceholder("13").setValue((this.plugin.settings.textSmall || "") + "").onChange((value) => { this.plugin.settings.textSmall = parseFloat(value); this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Line height").setDesc("Line height of text (default 1.5)").addText((text) => text.setPlaceholder("1.5").setValue((this.plugin.settings.lineHeight || "") + "").onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Line height").setDesc("Line height of text (default 1.5).").addText((text) => text.setPlaceholder("1.5").setValue((this.plugin.settings.lineHeight || "") + "").onChange((value) => { this.plugin.settings.lineHeight = parseFloat(value); this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Normal line width").setDesc("Number of characters per line (default 40)").addText((text) => text.setPlaceholder("40").setValue((this.plugin.settings.lineWidth || "") + "").onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Normal line width").setDesc("Number of characters per line (default 40).").addText((text) => text.setPlaceholder("40").setValue((this.plugin.settings.lineWidth || "") + "").onChange((value) => { this.plugin.settings.lineWidth = parseInt(value.trim()); this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Wide line width").setDesc("Number of characters per line for wide elements (default 50)").addText((text) => text.setPlaceholder("50").setValue((this.plugin.settings.lineWidthWide || "") + "").onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Wide line width").setDesc("Number of characters per line for wide elements (default 50).").addText((text) => text.setPlaceholder("50").setValue((this.plugin.settings.lineWidthWide || "") + "").onChange((value) => { this.plugin.settings.lineWidthWide = parseInt(value.trim()); this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Maximum line width %").setDesc("Percentage of space inside a pane that a line can fill (default 88)").addText((text) => text.setPlaceholder("88").setValue((this.plugin.settings.maxWidth || "") + "").onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Maximum line width %").setDesc("Percentage of space inside a pane that a line can fill (default 88).").addText((text) => text.setPlaceholder("88").setValue((this.plugin.settings.maxWidth || "") + "").onChange((value) => { this.plugin.settings.maxWidth = parseInt(value.trim()); this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - new import_obsidian.Setting(containerEl).setName("Editor font").setDesc("Overrides the text font defined in Obsidian Appearance settings when in edit mode").addText((text) => text.setPlaceholder("").setValue((this.plugin.settings.editorFont || "") + "").onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Editor font").setDesc("Overrides the text font defined in Obsidian Appearance settings when in edit mode.").addText((text) => text.setPlaceholder("").setValue((this.plugin.settings.editorFont || "") + "").onChange((value) => { this.plugin.settings.editorFont = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Support development" }); - const donateText = containerEl.createEl("p"); - donateText.appendChild(createEl("span", { - text: "If you enjoy Minimal, consider " - })); - donateText.appendChild(createEl("a", { - text: "buying me a coffee", - href: "https://www.buymeacoffee.com/kepano" - })); - donateText.appendChild(createEl("span", { - text: ", and following me on Twitter " - })); - donateText.appendChild(createEl("a", { - text: "@kepano", - href: "https://twitter.com/kepano" - })); - const div = containerEl.createEl("div", { - cls: "minimal-donation" - }); - const parser = new DOMParser(); - div.appendChild(createDonateButton("https://www.buymeacoffee.com/kepano", parser.parseFromString(buyMeACoffee, "text/xml").documentElement)); } }; -var createDonateButton = (link, img) => { - const a = document.createElement("a"); - a.setAttribute("href", link); - a.addClass("minimal-donate-button"); - a.appendChild(img); - return a; -}; -var buyMeACoffee = ` - - - - - - - - - - - - - - - - - - - - - -`; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQXBwLCBXb3Jrc3BhY2UsIE1vZGFsLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZyB9IGZyb20gJ29ic2lkaWFuJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1pbmltYWxUaGVtZSBleHRlbmRzIFBsdWdpbiB7XHJcblxyXG4gIHNldHRpbmdzOiBNaW5pbWFsU2V0dGluZ3M7XHJcblxyXG4gIGFzeW5jIG9ubG9hZCgpIHtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xyXG5cclxuICAgIHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgTWluaW1hbFNldHRpbmdUYWIodGhpcy5hcHAsIHRoaXMpKTtcclxuXHJcbiAgICB0aGlzLmFkZFN0eWxlKCk7XHJcblxyXG4gICAgLy8gV2F0Y2ggZm9yIHN5c3RlbSBjaGFuZ2VzIHRvIGNvbG9yIHRoZW1lIFxyXG5cclxuICAgIGxldCBtZWRpYSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJyk7XHJcblxyXG4gICAgbGV0IHVwZGF0ZVN5c3RlbVRoZW1lID0gKCkgPT4ge1xyXG4gICAgICBpZiAobWVkaWEubWF0Y2hlcyAmJiB0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0RhcmsgbW9kZSBhY3RpdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdMaWdodCBtb2RlIGFjdGl2ZScpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVTeXN0ZW1UaGVtZSk7XHJcblxyXG4gICAgLy8gUmVtb3ZlIHN5c3RlbSB0aGVtZSBsaXN0ZW5lciB3aGVuIHdlIHVubG9hZFxyXG4gICAgdGhpcy5yZWdpc3RlcigoKSA9PiBtZWRpYS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVTeXN0ZW1UaGVtZSkpO1xyXG5cclxuICAgIHVwZGF0ZVN5c3RlbVRoZW1lKCk7XHJcblxyXG4gICAgLy8gQ2hlY2sgc3RhdGUgb2YgT2JzaWRpYW4gU2V0dGluZ3NcclxuICAgIGxldCBzZXR0aW5nc1VwZGF0ZSA9ICgpID0+IHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBjb25zdCBmb250U2l6ZSA9IHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygnYmFzZUZvbnRTaXplJyk7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCA9IGZvbnRTaXplO1xyXG5cclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBpZiAodGhpcy5hcHAudmF1bHQuZ2V0Q29uZmlnKCdmb2xkSGVhZGluZycpKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5mb2xkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdGb2xkaW5nIGlzIG9uJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5mb2xkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnRm9sZGluZyBpcyBvZmYnKTtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZm9sZGluZycsIHRoaXMuc2V0dGluZ3MuZm9sZGluZyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygnc2hvd0xpbmVOdW1iZXInKSkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGluZU51bWJlcnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0xpbmUgbnVtYmVycyBhcmUgb24nKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpbmVOdW1iZXJzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnTGluZSBudW1iZXJzIGFyZSBvZmYnKTtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtbGluZS1udW1zJywgdGhpcy5zZXR0aW5ncy5saW5lTnVtYmVycyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygncmVhZGFibGVMaW5lTGVuZ3RoJykpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnUmVhZGFibGUgbGluZSBsZW5ndGggaXMgb24nKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1JlYWRhYmxlIGxpbmUgbGVuZ3RoIGlzIG9mZicpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtcmVhZGFibGUnLCB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1yZWFkYWJsZS1vZmYnLCAhdGhpcy5zZXR0aW5ncy5yZWFkYWJsZUxpbmVMZW5ndGgpO1xyXG4gIFxyXG4gICAgfVxyXG4gIFxyXG4gICAgbGV0IHNpZGViYXJVcGRhdGUgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNpZGViYXJFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21vZC1sZWZ0LXNwbGl0JylbMF07XHJcbiAgICAgIGNvbnN0IHJpYmJvbkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2lkZS1kb2NrLXJpYmJvbicpWzBdO1xyXG4gICAgICBpZiAoc2lkZWJhckVsICYmIHJpYmJvbkVsICYmIHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygndGhlbWUnKSA9PSAnbW9vbnN0b25lJyAmJiB0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUgPT0gJ21pbmltYWwtbGlnaHQtY29udHJhc3QnKSB7XHJcbiAgICAgICAgc2lkZWJhckVsLmFkZENsYXNzKCd0aGVtZS1kYXJrJyk7XHJcbiAgICAgICAgcmliYm9uRWwuYWRkQ2xhc3MoJ3RoZW1lLWRhcmsnKTtcclxuICAgICAgfSBlbHNlIGlmIChzaWRlYmFyRWwgJiYgcmliYm9uRWwpIHtcclxuICAgICAgICBzaWRlYmFyRWwucmVtb3ZlQ2xhc3MoJ3RoZW1lLWRhcmsnKTsgXHJcbiAgICAgICAgcmliYm9uRWwucmVtb3ZlQ2xhc3MoJ3RoZW1lLWRhcmsnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMucmVnaXN0ZXJFdmVudChhcHAudmF1bHQub24oJ2NvbmZpZy1jaGFuZ2VkJywgc2V0dGluZ3NVcGRhdGUpKTtcclxuICAgIHRoaXMucmVnaXN0ZXJFdmVudChhcHAud29ya3NwYWNlLm9uKCdjc3MtY2hhbmdlJywgc2lkZWJhclVwZGF0ZSkpO1xyXG5cclxuICAgIHNldHRpbmdzVXBkYXRlKCk7XHJcbiAgICBcclxuICAgIGFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeSgoKSA9PiB7XHJcbiAgICAgIHNpZGViYXJVcGRhdGUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGxpZ2h0U3R5bGVzID0gWydtaW5pbWFsLWxpZ2h0JywgJ21pbmltYWwtbGlnaHQtdG9uYWwnLCAnbWluaW1hbC1saWdodC1jb250cmFzdCcsICdtaW5pbWFsLWxpZ2h0LXdoaXRlJ107XHJcbiAgICBjb25zdCBkYXJrU3R5bGVzID0gWydtaW5pbWFsLWRhcmsnLCAnbWluaW1hbC1kYXJrLXRvbmFsJywgJ21pbmltYWwtZGFyay1ibGFjayddO1xyXG4gICAgY29uc3QgaW1nR3JpZFN0eWxlcyA9IFsnaW1nLWdyaWQnLCdpbWctZ3JpZC1yYXRpbycsJ2ltZy1ub2dyaWQnXTtcclxuICAgIGNvbnN0IHRhYmxlV2lkdGhTdHlsZXMgPSBbJ3RhYmxlLTEwMCcsJ3RhYmxlLWRlZmF1bHQtd2lkdGgnLCd0YWJsZS13aWRlJywndGFibGUtbWF4J107XHJcbiAgICBjb25zdCBpZnJhbWVXaWR0aFN0eWxlcyA9IFsnaWZyYW1lLTEwMCcsJ2lmcmFtZS1kZWZhdWx0LXdpZHRoJywnaWZyYW1lLXdpZGUnLCdpZnJhbWUtbWF4J107XHJcbiAgICBjb25zdCBpbWdXaWR0aFN0eWxlcyA9IFsnaW1nLTEwMCcsJ2ltZy1kZWZhdWx0LXdpZHRoJywnaW1nLXdpZGUnLCdpbWctbWF4J107XHJcbiAgICBjb25zdCBtYXBXaWR0aFN0eWxlcyA9IFsnbWFwLTEwMCcsJ21hcC1kZWZhdWx0LXdpZHRoJywnbWFwLXdpZGUnLCdtYXAtbWF4J107XHJcbiAgICBjb25zdCBjaGFydFdpZHRoU3R5bGVzID0gWydjaGFydC0xMDAnLCdjaGFydC1kZWZhdWx0LXdpZHRoJywnY2hhcnQtd2lkZScsJ2NoYXJ0LW1heCddO1xyXG4gICAgY29uc3QgdGhlbWUgPSBbJ21vb25zdG9uZScsICdvYnNpZGlhbiddO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnaW5jcmVhc2UtYm9keS1mb250LXNpemUnLFxyXG4gICAgICBuYW1lOiAnSW5jcmVhc2UgYm9keSBmb250IHNpemUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCA9IHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCArIDAuNTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9udFNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICdkZWNyZWFzZS1ib2R5LWZvbnQtc2l6ZScsXHJcbiAgICAgIG5hbWU6ICdEZWNyZWFzZSBib2R5IGZvbnQgc2l6ZScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsID0gdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsIC0gMC41O1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5zZXRGb250U2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTsgXHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kYXJrLWN5Y2xlJyxcclxuICAgICAgbmFtZTogJ0N5Y2xlIGJldHdlZW4gZGFyayBtb2RlIHN0eWxlcycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUgPSBkYXJrU3R5bGVzWyhkYXJrU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUpICsgMSkgJSBkYXJrU3R5bGVzLmxlbmd0aF07XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTsgIFxyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbGlnaHQtY3ljbGUnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBsaWdodCBtb2RlIHN0eWxlcycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFN0eWxlID0gbGlnaHRTdHlsZXNbKGxpZ2h0U3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5saWdodFN0eWxlKSArIDEpICUgbGlnaHRTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1oaWRkZW4tYm9yZGVycycsXHJcbiAgICAgIG5hbWU6ICdUb2dnbGUgc2lkZWJhciBib3JkZXJzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUgPSAhdGhpcy5zZXR0aW5ncy5ib3JkZXJzVG9nZ2xlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLWNvbG9yZnVsLWhlYWRpbmdzJyxcclxuICAgICAgbmFtZTogJ1RvZ2dsZSBjb2xvcmZ1bCBoZWFkaW5ncycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEhlYWRpbmdzID0gIXRoaXMuc2V0dGluZ3MuY29sb3JmdWxIZWFkaW5ncztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWZvY3VzLW1vZGUnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGZvY3VzIG1vZGUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlID0gIXRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtY29sb3JmdWwtZnJhbWUnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGNvbG9yZnVsIHdpbmRvdyBmcmFtZScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lID0gIXRoaXMuc2V0dGluZ3MuY29sb3JmdWxGcmFtZTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtdGFibGUtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiB0YWJsZSB3aWR0aCBvcHRpb25zJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnRhYmxlV2lkdGggPSB0YWJsZVdpZHRoU3R5bGVzWyh0YWJsZVdpZHRoU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy50YWJsZVdpZHRoKSArIDEpICUgdGFibGVXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnY3ljbGUtbWluaW1hbC1pbWFnZS13aWR0aCcsXHJcbiAgICAgIG5hbWU6ICdDeWNsZSBiZXR3ZWVuIGltYWdlIHdpZHRoIG9wdGlvbnMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuaW1nV2lkdGggPSBpbWdXaWR0aFN0eWxlc1soaW1nV2lkdGhTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLmltZ1dpZHRoKSArIDEpICUgaW1nV2lkdGhTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtaWZyYW1lLXdpZHRoJyxcclxuICAgICAgbmFtZTogJ0N5Y2xlIGJldHdlZW4gaWZyYW1lIHdpZHRoIG9wdGlvbnMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuaWZyYW1lV2lkdGggPSBpZnJhbWVXaWR0aFN0eWxlc1soaWZyYW1lV2lkdGhTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLmlmcmFtZVdpZHRoKSArIDEpICUgaWZyYW1lV2lkdGhTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtY2hhcnQtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBjaGFydCB3aWR0aCBvcHRpb25zJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmNoYXJ0V2lkdGggPSBjaGFydFdpZHRoU3R5bGVzWyhjaGFydFdpZHRoU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5jaGFydFdpZHRoKSArIDEpICUgY2hhcnRXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnY3ljbGUtbWluaW1hbC1tYXAtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBtYXAgd2lkdGggb3B0aW9ucycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5tYXBXaWR0aCA9IG1hcFdpZHRoU3R5bGVzWyhtYXBXaWR0aFN0eWxlcy5pbmRleE9mKHRoaXMuc2V0dGluZ3MubWFwV2lkdGgpICsgMSkgJSBtYXBXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtaW1nLWdyaWQnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGltYWdlIGdyaWRzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmltZ0dyaWQgPSAhdGhpcy5zZXR0aW5ncy5pbWdHcmlkO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtc3dpdGNoJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBiZXR3ZWVuIGxpZ2h0IGFuZCBkYXJrIG1vZGUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MudGhlbWUgPSB0aGVtZVsodGhlbWUuaW5kZXhPZih0aGlzLnNldHRpbmdzLnRoZW1lKSArIDEpICUgdGhlbWUubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVGhlbWUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1saWdodC1kZWZhdWx0JyxcclxuICAgICAgbmFtZTogJ1VzZSBsaWdodCBtb2RlIChkZWZhdWx0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFN0eWxlID0gJ21pbmltYWwtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbGlnaHQtd2hpdGUnLFxyXG4gICAgICBuYW1lOiAnVXNlIGxpZ2h0IG1vZGUgKGFsbCB3aGl0ZSknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSA9ICdtaW5pbWFsLWxpZ2h0LXdoaXRlJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWxpZ2h0LXRvbmFsJyxcclxuICAgICAgbmFtZTogJ1VzZSBsaWdodCBtb2RlIChsb3cgY29udHJhc3QpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUgPSAnbWluaW1hbC1saWdodC10b25hbCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1saWdodC1jb250cmFzdCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgbGlnaHQgbW9kZSAoaGlnaCBjb250cmFzdCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSA9ICdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRhcmstZGVmYXVsdCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgZGFyayBtb2RlIChkZWZhdWx0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUgPSAnbWluaW1hbC1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZGFyay10b25hbCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgZGFyayBtb2RlIChsb3cgY29udHJhc3QpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSA9ICdtaW5pbWFsLWRhcmstdG9uYWwnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kYXJrLWJsYWNrJyxcclxuICAgICAgbmFtZTogJ1VzZSBkYXJrIG1vZGUgKHRydWUgYmxhY2spJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSA9ICdtaW5pbWFsLWRhcmstYmxhY2snO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1hdG9tLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gQXRvbSAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtYXRvbS1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtYXl1LWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gQXl1IChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1heXUtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWNhdHBwdWNjaW4tbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBDYXRwcHVjY2luIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1jYXRwcHVjY2luLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kZWZhdWx0LWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gZGVmYXVsdCAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtZGVmYXVsdC1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZ3J1dmJveC1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIEdydXZib3ggKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLWdydXZib3gtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWV2ZXJmb3Jlc3QtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBFdmVyZm9yZXN0IChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1ldmVyZm9yZXN0LWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1tYWNvcy1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIG1hY09TIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1tYWNvcy1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbm90aW9uLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gTm90aW9uIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1ub3Rpb24tbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW5vcmQtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBOb3JkIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1ub3JkLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1yb3NlLXBpbmUtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBSb3NcdTAwRTkgUGluZSAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtcm9zZS1waW5lLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1zb2xhcml6ZWQtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBTb2xhcml6ZWQgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLXNvbGFyaXplZC1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtdGhpbmdzLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gVGhpbmdzIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC10aGluZ3MtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWF0b20tZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggY29sb3Igc2NoZW1lIHRvIEF0b20gKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1hdG9tLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1heXUtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggY29sb3Igc2NoZW1lIHRvIEF5dSAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWF5dS1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtY2F0cHB1Y2Npbi1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBDYXRwcHVjY2luIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtY2F0cHB1Y2Npbi1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZHJhY3VsYS1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBjb2xvciBzY2hlbWUgdG8gRHJhY3VsYSAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWRyYWN1bGEtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRlZmF1bHQtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gZGVmYXVsdCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWRlZmF1bHQtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWdydXZib3gtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gR3J1dmJveCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWdydXZib3gtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWV2ZXJmb3Jlc3QtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gRXZlcmZvcmVzdCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWV2ZXJmb3Jlc3QtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW1hY29zLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBtYWNPUyAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLW1hY29zLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ub3JkLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIE5vcmQgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1ub3JkLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ub3Rpb24tZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gTm90aW9uIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtbm90aW9uLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1yb3NlLXBpbmUtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggY29sb3Igc2NoZW1lIHRvIFJvc1x1MDBFOSBQaW5lIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtcm9zZS1waW5lLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1zb2xhcml6ZWQtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gU29sYXJpemVkIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtc29sYXJpemVkLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC10aGluZ3MtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gVGhpbmdzIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtdGhpbmdzLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kZXYtYmxvY2std2lkdGgnLFxyXG4gICAgICBuYW1lOiAnRGV2IFx1MjAxNCBTaG93IGJsb2NrIHdpZHRocycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kZXZCbG9ja1dpZHRoID0gIXRoaXMuc2V0dGluZ3MuZGV2QmxvY2tXaWR0aDtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJlZnJlc2goKVxyXG4gIH1cclxuXHJcbiAgb251bmxvYWQoKSB7XHJcbiAgICBjb25zb2xlLmxvZygnVW5sb2FkaW5nIE1pbmltYWwgVGhlbWUgU2V0dGluZ3MgcGx1Z2luJyk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBsb2FkU2V0dGluZ3MoKSB7XHJcbiAgICB0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbihERUZBVUxUX1NFVFRJTkdTLCBhd2FpdCB0aGlzLmxvYWREYXRhKCkpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2F2ZVNldHRpbmdzKCkge1xyXG4gICAgYXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICB9XHJcblxyXG4gIC8vIHJlZnJlc2ggZnVuY3Rpb24gZm9yIHdoZW4gd2UgY2hhbmdlIHNldHRpbmdzXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIC8vIHJlLWxvYWQgdGhlIHN0eWxlXHJcbiAgICB0aGlzLnVwZGF0ZVN0eWxlKClcclxuICB9XHJcblxyXG4gIC8vIGFkZCB0aGUgc3R5bGluZyBlbGVtZW50cyB3ZSBuZWVkXHJcbiAgYWRkU3R5bGUoKSB7XHJcbiAgICAvLyBhZGQgYSBjc3MgYmxvY2sgZm9yIG91ciBzZXR0aW5ncy1kZXBlbmRlbnQgc3R5bGVzXHJcbiAgICBjb25zdCBjc3MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG4gICAgY3NzLmlkID0gJ21pbmltYWwtdGhlbWUnO1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLmFwcGVuZENoaWxkKGNzcyk7XHJcblxyXG4gICAgLy8gYWRkIHRoZSBtYWluIGNsYXNzXHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ21pbmltYWwtdGhlbWUnKTtcclxuXHJcbiAgICAvLyB1cGRhdGUgdGhlIHN0eWxlIHdpdGggdGhlIHNldHRpbmdzLWRlcGVuZGVudCBzdHlsZXNcclxuICAgIHRoaXMudXBkYXRlU3R5bGUoKTtcclxuICB9XHJcblxyXG4gIHNldEZvbnRTaXplKCkge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAudmF1bHQuc2V0Q29uZmlnKCdiYXNlRm9udFNpemUnLCB0aGlzLnNldHRpbmdzLnRleHROb3JtYWwpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAudXBkYXRlRm9udFNpemUoKTtcclxuICB9XHJcblxyXG4gIC8vIHVwZGF0ZSB0aGUgc3R5bGVzIChhdCB0aGUgc3RhcnQsIG9yIGFzIHRoZSByZXN1bHQgb2YgYSBzZXR0aW5ncyBjaGFuZ2UpXHJcbiAgdXBkYXRlU3R5bGUoKSB7XHJcbiAgICB0aGlzLnJlbW92ZVN0eWxlKCk7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lKTtcclxuXHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2JvcmRlcnMtbm9uZScsICF0aGlzLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdjb2xvcmZ1bC1oZWFkaW5ncycsIHRoaXMuc2V0dGluZ3MuY29sb3JmdWxIZWFkaW5ncyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2NvbG9yZnVsLWZyYW1lJywgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnY29sb3JmdWwtYWN0aXZlJywgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEFjdGl2ZVN0YXRlcyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZm9jdXMtbW9kZScsIHRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbGlua3MtaW50LW9uJywgdGhpcy5zZXR0aW5ncy51bmRlcmxpbmVJbnRlcm5hbCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2xpbmtzLWV4dC1vbicsIHRoaXMuc2V0dGluZ3MudW5kZXJsaW5lRXh0ZXJuYWwpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdzeXN0ZW0tc2hhZGUnLCB0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnZnVsbC13aWR0aC1tZWRpYScsIHRoaXMuc2V0dGluZ3MuZnVsbFdpZHRoTWVkaWEpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdpbWctZ3JpZCcsIHRoaXMuc2V0dGluZ3MuaW1nR3JpZCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZGV2LWJsb2NrLXdpZHRoJywgdGhpcy5zZXR0aW5ncy5kZXZCbG9ja1dpZHRoKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1zdGF0dXMtb2ZmJywgIXRoaXMuc2V0dGluZ3MubWluaW1hbFN0YXR1cyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2Z1bGwtZmlsZS1uYW1lcycsICF0aGlzLnNldHRpbmdzLnRyaW1OYW1lcyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2xhYmVsZWQtbmF2JywgdGhpcy5zZXR0aW5ncy5sYWJlbGVkTmF2KTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1mb2xkaW5nJywgdGhpcy5zZXR0aW5ncy5mb2xkaW5nKTtcclxuXHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKCd0YWJsZS13aWRlJywndGFibGUtbWF4JywndGFibGUtMTAwJywndGFibGUtZGVmYXVsdC13aWR0aCcsXHJcbiAgICAgICdpZnJhbWUtd2lkZScsJ2lmcmFtZS1tYXgnLCdpZnJhbWUtMTAwJywnaWZyYW1lLWRlZmF1bHQtd2lkdGgnLFxyXG4gICAgICAnaW1nLXdpZGUnLCdpbWctbWF4JywnaW1nLTEwMCcsJ2ltZy1kZWZhdWx0LXdpZHRoJyxcclxuICAgICAgJ2NoYXJ0LXdpZGUnLCdjaGFydC1tYXgnLCdjaGFydC0xMDAnLCdjaGFydC1kZWZhdWx0LXdpZHRoJyxcclxuICAgICAgJ21hcC13aWRlJywnbWFwLW1heCcsJ21hcC0xMDAnLCdtYXAtZGVmYXVsdC13aWR0aCcpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmNoYXJ0V2lkdGgpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLnRhYmxlV2lkdGgpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmltZ1dpZHRoKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5pZnJhbWVXaWR0aCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MubWFwV2lkdGgpO1xyXG5cclxuICAgIC8vIGdldCB0aGUgY3VzdG9tIGNzcyBlbGVtZW50XHJcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaW5pbWFsLXRoZW1lJyk7XHJcbiAgICBpZiAoIWVsKSB0aHJvdyBcIm1pbmltYWwtdGhlbWUgZWxlbWVudCBub3QgZm91bmQhXCI7XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gc2V0IHRoZSBzZXR0aW5ncy1kZXBlbmRlbnQgY3NzXHJcbiAgICAgIGVsLmlubmVyVGV4dCA9IFxyXG4gICAgICAgICdib2R5Lm1pbmltYWwtdGhlbWV7J1xyXG4gICAgICAgICsgJy0tZm9udC11aS1zbWFsbDonICsgdGhpcy5zZXR0aW5ncy50ZXh0U21hbGwgKyAncHg7J1xyXG4gICAgICAgICsgJy0tbGluZS1oZWlnaHQ6JyArIHRoaXMuc2V0dGluZ3MubGluZUhlaWdodCArICc7J1xyXG4gICAgICAgICsgJy0tbGluZS13aWR0aDonICsgdGhpcy5zZXR0aW5ncy5saW5lV2lkdGggKyAncmVtOydcclxuICAgICAgICArICctLWxpbmUtd2lkdGgtd2lkZTonICsgdGhpcy5zZXR0aW5ncy5saW5lV2lkdGhXaWRlICsgJ3JlbTsnXHJcbiAgICAgICAgKyAnLS1tYXgtd2lkdGg6JyArIHRoaXMuc2V0dGluZ3MubWF4V2lkdGggKyAnJTsnXHJcbiAgICAgICAgKyAnLS1mb250LWVkaXRvci1vdmVycmlkZTonICsgdGhpcy5zZXR0aW5ncy5lZGl0b3JGb250ICsgJzsnO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHJlZnJlc2hTeXN0ZW1UaGVtZSgpIHtcclxuICAgIGNvbnN0IGlzRGFya01vZGUgPSB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXNcclxuXHJcbiAgICBpZiAoaXNEYXJrTW9kZSAmJiB0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0RhcmsgbW9kZSBhY3RpdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpXHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2V0dGluZ3MudXNlU3lzdGVtVGhlbWUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnTGlnaHQgbW9kZSBhY3RpdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKVxyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEYXJrU3R5bGUoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKFxyXG4gICAgICAndGhlbWUtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZGFyay10b25hbCcsXHJcbiAgICAgICdtaW5pbWFsLWRhcmstYmxhY2snXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSk7XHJcblxyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAuc2V0VGhlbWUoJ29ic2lkaWFuJyk7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmFwcC52YXVsdC5zZXRDb25maWcoJ3RoZW1lJywgJ29ic2lkaWFuJyk7XHJcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignY3NzLWNoYW5nZScpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTGlnaHRTdHlsZSgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoXHJcbiAgICAgICd0aGVtZS1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1saWdodC10b25hbCcsXHJcbiAgICAgICdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JyxcclxuICAgICAgJ21pbmltYWwtbGlnaHQtd2hpdGUnXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUpO1xyXG5cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnNldFRoZW1lKCdtb29uc3RvbmUnKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnZhdWx0LnNldENvbmZpZygndGhlbWUnLCAnbW9vbnN0b25lJyk7XHJcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignY3NzLWNoYW5nZScpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGFya1NjaGVtZSgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoXHJcbiAgICAgICdtaW5pbWFsLWF0b20tZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWF5dS1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtY2F0cHB1Y2Npbi1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZGVmYXVsdC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZHJhY3VsYS1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZXZlcmZvcmVzdC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZ3J1dmJveC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtbWFjb3MtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLW5vcmQtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLW5vdGlvbi1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtcm9zZS1waW5lLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1zb2xhcml6ZWQtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLXRoaW5ncy1kYXJrJ1xyXG4gICAgKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUxpZ2h0U2NoZW1lKCkge1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDbGFzcyhcclxuICAgICAgJ21pbmltYWwtYXRvbS1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWF5dS1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWNhdHBwdWNjaW4tbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1kZWZhdWx0LWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtZXZlcmZvcmVzdC1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWdydXZib3gtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1tYWNvcy1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLW5vcmQtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1ub3Rpb24tbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1yb3NlLXBpbmUtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1zb2xhcml6ZWQtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC10aGluZ3MtbGlnaHQnXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVRoZW1lKCkge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAuc2V0VGhlbWUodGhpcy5zZXR0aW5ncy50aGVtZSk7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmFwcC52YXVsdC5zZXRDb25maWcoJ3RoZW1lJywgdGhpcy5zZXR0aW5ncy50aGVtZSk7XHJcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignY3NzLWNoYW5nZScpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU3R5bGUoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKCdtaW5pbWFsLWxpZ2h0JywnbWluaW1hbC1saWdodC10b25hbCcsJ21pbmltYWwtbGlnaHQtY29udHJhc3QnLCdtaW5pbWFsLWxpZ2h0LXdoaXRlJywnbWluaW1hbC1kYXJrJywnbWluaW1hbC1kYXJrLXRvbmFsJywnbWluaW1hbC1kYXJrLWJsYWNrJyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSx0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuaW50ZXJmYWNlIE1pbmltYWxTZXR0aW5ncyB7XHJcbiAgdGhlbWU6IHN0cmluZztcclxuICBsaWdodFN0eWxlOiBzdHJpbmc7XHJcbiAgZGFya1N0eWxlOiBzdHJpbmc7XHJcbiAgbGlnaHRTY2hlbWU6IHN0cmluZztcclxuICBkYXJrU2NoZW1lOiBzdHJpbmc7XHJcbiAgZWRpdG9yRm9udDogc3RyaW5nO1xyXG4gIGNvbG9yZnVsSGVhZGluZ3M6IGJvb2xlYW47XHJcbiAgY29sb3JmdWxGcmFtZTogYm9vbGVhbjtcclxuICBjb2xvcmZ1bEFjdGl2ZVN0YXRlczogYm9vbGVhbixcclxuICB0cmltTmFtZXM6IGJvb2xlYW47XHJcbiAgbGFiZWxlZE5hdjogYm9vbGVhbjtcclxuICBib3JkZXJzVG9nZ2xlOiBib29sZWFuO1xyXG4gIGZvY3VzTW9kZTogYm9vbGVhbjtcclxuICBsaW5lSGVpZ2h0OiBudW1iZXI7XHJcbiAgbGluZVdpZHRoOiBudW1iZXI7XHJcbiAgbGluZVdpZHRoV2lkZTogbnVtYmVyO1xyXG4gIG1heFdpZHRoOiBudW1iZXI7XHJcbiAgaW1nR3JpZDogYm9vbGVhbjtcclxuICBkZXZCbG9ja1dpZHRoOiBib29sZWFuO1xyXG4gIHRhYmxlV2lkdGg6IHN0cmluZztcclxuICBpZnJhbWVXaWR0aDogc3RyaW5nO1xyXG4gIGltZ1dpZHRoOiBzdHJpbmc7XHJcbiAgY2hhcnRXaWR0aDogc3RyaW5nO1xyXG4gIG1hcFdpZHRoOiBzdHJpbmc7XHJcbiAgZnVsbFdpZHRoTWVkaWE6IGJvb2xlYW4sXHJcbiAgbWluaW1hbFN0YXR1czogYm9vbGVhbixcclxuICB0ZXh0Tm9ybWFsOiBudW1iZXI7XHJcbiAgdGV4dFNtYWxsOiBudW1iZXI7XHJcbiAgdW5kZXJsaW5lSW50ZXJuYWw6IGJvb2xlYW47XHJcbiAgdW5kZXJsaW5lRXh0ZXJuYWw6IGJvb2xlYW47XHJcbiAgdXNlU3lzdGVtVGhlbWU6IGJvb2xlYW47XHJcbiAgZm9sZGluZzogYm9vbGVhbjtcclxuICBsaW5lTnVtYmVyczogYm9vbGVhbjtcclxuICByZWFkYWJsZUxpbmVMZW5ndGg6IGJvb2xlYW47XHJcbn1cclxuXHJcbmNvbnN0IERFRkFVTFRfU0VUVElOR1M6IE1pbmltYWxTZXR0aW5ncyA9IHtcclxuICB0aGVtZTogJ21vb25zdG9uZScsXHJcbiAgbGlnaHRTdHlsZTogJ21pbmltYWwtbGlnaHQnLFxyXG4gIGRhcmtTdHlsZTogJ21pbmltYWwtZGFyaycsXHJcbiAgbGlnaHRTY2hlbWU6ICdtaW5pbWFsLWRlZmF1bHQtbGlnaHQnLFxyXG4gIGRhcmtTY2hlbWU6ICdtaW5pbWFsLWRlZmF1bHQtZGFyaycsXHJcbiAgZWRpdG9yRm9udDogJycsXHJcbiAgbGluZUhlaWdodDogMS41LFxyXG4gIGxpbmVXaWR0aDogNDAsXHJcbiAgbGluZVdpZHRoV2lkZTogNTAsXHJcbiAgbWF4V2lkdGg6IDg4LFxyXG4gIHRleHROb3JtYWw6IDE2LFxyXG4gIHRleHRTbWFsbDogMTMsXHJcbiAgaW1nR3JpZDogZmFsc2UsXHJcbiAgaW1nV2lkdGg6ICdpbWctZGVmYXVsdC13aWR0aCcsXHJcbiAgdGFibGVXaWR0aDogJ3RhYmxlLWRlZmF1bHQtd2lkdGgnLFxyXG4gIGlmcmFtZVdpZHRoOiAnaWZyYW1lLWRlZmF1bHQtd2lkdGgnLFxyXG4gIG1hcFdpZHRoOiAnbWFwLWRlZmF1bHQtd2lkdGgnLFxyXG4gIGNoYXJ0V2lkdGg6ICdjaGFydC1kZWZhdWx0LXdpZHRoJyxcclxuICBjb2xvcmZ1bEhlYWRpbmdzOiBmYWxzZSxcclxuICBjb2xvcmZ1bEZyYW1lOiBmYWxzZSxcclxuICBjb2xvcmZ1bEFjdGl2ZVN0YXRlczogZmFsc2UsXHJcbiAgdHJpbU5hbWVzOiB0cnVlLFxyXG4gIGxhYmVsZWROYXY6IGZhbHNlLFxyXG4gIGZ1bGxXaWR0aE1lZGlhOiB0cnVlLFxyXG4gIGJvcmRlcnNUb2dnbGU6IHRydWUsXHJcbiAgbWluaW1hbFN0YXR1czogdHJ1ZSxcclxuICBmb2N1c01vZGU6IGZhbHNlLFxyXG4gIHVuZGVybGluZUludGVybmFsOiB0cnVlLFxyXG4gIHVuZGVybGluZUV4dGVybmFsOiB0cnVlLFxyXG4gIHVzZVN5c3RlbVRoZW1lOiBmYWxzZSxcclxuICBmb2xkaW5nOiB0cnVlLFxyXG4gIGxpbmVOdW1iZXJzOiBmYWxzZSxcclxuICByZWFkYWJsZUxpbmVMZW5ndGg6IGZhbHNlLFxyXG4gIGRldkJsb2NrV2lkdGg6IGZhbHNlLFxyXG59XHJcblxyXG5jbGFzcyBNaW5pbWFsU2V0dGluZ1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xyXG5cclxuXHJcbiAgcGx1Z2luOiBNaW5pbWFsVGhlbWU7XHJcbiAgY29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogTWluaW1hbFRoZW1lKSB7XHJcbiAgICBzdXBlcihhcHAsIHBsdWdpbik7XHJcbiAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcclxuICB9XHJcblxyXG4gIGRpc3BsYXkoKTogdm9pZCB7XHJcbiAgICBsZXQge2NvbnRhaW5lckVsfSA9IHRoaXM7XHJcblxyXG4gICAgY29udGFpbmVyRWwuZW1wdHkoKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnTWluaW1hbCBUaGVtZSBTZXR0aW5ncyd9KTtcclxuXHJcbiAgICBjb25zdCBtYWluRGVzYyA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJyk7XHJcblxyXG4gICAgICBtYWluRGVzYy5hcHBlbmRUZXh0KCdOZWVkIGhlbHA/IEV4cGxvcmUgdGhlICcpO1xyXG4gICAgICBtYWluRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwiTWluaW1hbCBkb2N1bWVudGF0aW9uXCIsXHJcbiAgICAgICAgICBocmVmOiBcImh0dHBzOi8vbWluaW1hbC5ndWlkZVwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIG1haW5EZXNjLmFwcGVuZFRleHQoJyBvciB2aXNpdCB0aGUgJyk7XHJcbiAgICAgIG1haW5EZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdzdHJvbmcnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcIiNtaW5pbWFsXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgbWFpbkRlc2MuYXBwZW5kVGV4dCgnIGNoYW5uZWwgaW4gdGhlIG9mZmljaWFsIE9ic2lkaWFuIERpc2NvcmQuIFlvdSBjYW4gc3VwcG9ydCBjb250aW51ZWQgZGV2ZWxvcG1lbnQgYnkgJyk7XHJcbiAgICAgIG1haW5EZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdhJywge1xyXG4gICAgICAgICAgdGV4dDogXCJidXlpbmcgbWUgYSBjb2ZmZWVcIixcclxuICAgICAgICAgIGhyZWY6IFwiaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9rZXBhbm9cIixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBtYWluRGVzYy5hcHBlbmRUZXh0KCcgXHUyNjE1Jyk7XHJcblxyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2JyJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7dGV4dDogJ0NvbG9yIHNjaGVtZSd9KTtcclxuXHJcbiAgICBjb25zdCBjb2xvckRlc2MgPSBjb250YWluZXJFbC5jcmVhdGVFbCgncCcpO1xyXG5cclxuICAgICAgY29sb3JEZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdzcGFuJywge1xyXG4gICAgICAgICAgdGV4dDogJ1RvIGNyZWF0ZSBhIGNvbXBsZXRlbHkgY3VzdG9tIGNvbG9yIHNjaGVtZSB1c2UgJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICBjb2xvckRlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ2EnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcIlN0eWxlIFNldHRpbmdzIHBsdWdpblwiLFxyXG4gICAgICAgICAgaHJlZjogXCJvYnNpZGlhbjovL3Nob3ctcGx1Z2luP2lkPW9ic2lkaWFuLXN0eWxlLXNldHRpbmdzXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgY29sb3JEZXNjLmFwcGVuZFRleHQoJy4nKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgIC5zZXROYW1lKCdMaWdodCBtb2RlIGNvbG9yIHNjaGVtZScpXHJcbiAgICAgICAgLnNldERlc2MoJ1ByZXNldCBjb2xvciBvcHRpb25zIGZvciBsaWdodCBtb2RlJylcclxuICAgICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGVmYXVsdC1saWdodCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1hdG9tLWxpZ2h0JywnQXRvbScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWF5dS1saWdodCcsJ0F5dScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWNhdHBwdWNjaW4tbGlnaHQnLCdDYXRwcHVjY2luJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZXZlcmZvcmVzdC1saWdodCcsJ0V2ZXJmb3Jlc3QnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ncnV2Ym94LWxpZ2h0JywnR3J1dmJveCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW1hY29zLWxpZ2h0JywnbWFjT1MnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ub3JkLWxpZ2h0JywnTm9yZCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW5vdGlvbi1saWdodCcsJ05vdGlvbicpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLXJvc2UtcGluZS1saWdodCcsJ1Jvc1x1MDBFOSBQaW5lJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtc29sYXJpemVkLWxpZ2h0JywnU29sYXJpemVkJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtdGhpbmdzLWxpZ2h0JywnVGhpbmdzJylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saWdodFNjaGVtZSlcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5saWdodFNjaGVtZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4udXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnTGlnaHQgbW9kZSBiYWNrZ3JvdW5kIGNvbnRyYXN0JylcclxuICAgICAgICAuc2V0RGVzYygnTGV2ZWwgb2YgY29udHJhc3QgYmV0d2VlbiBzaWRlYmFyIGFuZCBtYWluIGNvbnRlbnQnKVxyXG4gICAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1saWdodCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1saWdodC13aGl0ZScsJ0FsbCB3aGl0ZScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWxpZ2h0LXRvbmFsJywnTG93IGNvbnRyYXN0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbGlnaHQtY29udHJhc3QnLCdIaWdoIGNvbnRyYXN0JylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saWdodFN0eWxlKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpZ2h0U3R5bGUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnRGFyayBtb2RlIGNvbG9yIHNjaGVtZScpXHJcbiAgICAgICAgLnNldERlc2MoJ1ByZXNldCBjb2xvcnMgb3B0aW9ucyBmb3IgZGFyayBtb2RlJylcclxuICAgICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGVmYXVsdC1kYXJrJywnRGVmYXVsdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWF0b20tZGFyaycsJ0F0b20nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1heXUtZGFyaycsJ0F5dScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWNhdHBwdWNjaW4tZGFyaycsJ0NhdHBwdWNjaW4nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1kcmFjdWxhLWRhcmsnLCdEcmFjdWxhJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZXZlcmZvcmVzdC1kYXJrJywnRXZlcmZvcmVzdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWdydXZib3gtZGFyaycsJ0dydXZib3gnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1tYWNvcy1kYXJrJywnbWFjT1MnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ub3JkLWRhcmsnLCdOb3JkJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbm90aW9uLWRhcmsnLCdOb3Rpb24nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1yb3NlLXBpbmUtZGFyaycsJ1Jvc1x1MDBFOSBQaW5lJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtc29sYXJpemVkLWRhcmsnLCdTb2xhcml6ZWQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC10aGluZ3MtZGFyaycsJ1RoaW5ncycpXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGFya1NjaGVtZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZGFya1NjaGVtZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgIC5zZXROYW1lKCdEYXJrIG1vZGUgYmFja2dyb3VuZCBjb250cmFzdCcpXHJcbiAgICAgICAgLnNldERlc2MoJ0xldmVsIG9mIGNvbnRyYXN0IGJldHdlZW4gc2lkZWJhciBhbmQgbWFpbiBjb250ZW50JylcclxuICAgICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGFyaycsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1kYXJrLXRvbmFsJywnTG93IGNvbnRyYXN0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGFyay1ibGFjaycsJ1RydWUgYmxhY2snKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmRhcmtTdHlsZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZGFya1N0eWxlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4udXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2JyJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnRmVhdHVyZXMnfSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdNYXRjaCBzeXN0ZW0gc2V0dGluZyBmb3IgbGlnaHQgb3IgZGFyayBtb2RlJylcclxuICAgICAgLnNldERlc2MoJ0F1dG9tYXRpY2FsbHkgc3dpdGNoIGJhc2VkIG9uIHlvdXIgT1Mgc2V0dGluZycpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlU3lzdGVtVGhlbWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoU3lzdGVtVGhlbWUoKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdUZXh0IGxhYmVscyBmb3IgcHJpbWFyeSBuYXZpZ2F0aW9uJylcclxuICAgICAgLnNldERlc2MoJ05hdmlnYXRpb24gaW4gbGVmdCBzaWRlYmFyIHVzZXMgdGV4dCBsYWJlbHMgKHNlZSBkb2N1bWVudGF0aW9uIGZvciBsb2NhbGl6YXRpb24gc3VwcG9ydCknKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubGFiZWxlZE5hdilcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubGFiZWxlZE5hdiA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0NvbG9yZnVsIHdpbmRvdyBmcmFtZScpXHJcbiAgICAgIC5zZXREZXNjKCdUaGUgdG9wIGFyZWEgb2YgdGhlIGFwcCB1c2VzIHlvdXIgYWNjZW50IGNvbG9yJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsRnJhbWUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsRnJhbWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnQ29sb3JmdWwgYWN0aXZlIHN0YXRlcycpXHJcbiAgICAgIC5zZXREZXNjKCdBY3RpdmUgZmlsZSBhbmQgbWVudSBpdGVtcyB1c2UgeW91ciBhY2NlbnQgY29sb3InKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY29sb3JmdWxBY3RpdmVTdGF0ZXMpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsQWN0aXZlU3RhdGVzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0NvbG9yZnVsIGhlYWRpbmdzJylcclxuICAgICAgLnNldERlc2MoJ0hlYWRpbmdzIHVzZSBhIGRpZmZlcmVudCBjb2xvciBmb3IgZWFjaCBzaXplJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsSGVhZGluZ3MpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsSGVhZGluZ3MgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTWluaW1hbCBzdGF0dXMgYmFyJylcclxuICAgICAgLnNldERlc2MoJ1VzZSBuYXJyb3cgc3RhdHVzIGJhcicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5taW5pbWFsU3RhdHVzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5taW5pbWFsU3RhdHVzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVHJpbSBmaWxlIG5hbWVzIGluIHNpZGViYXJzJylcclxuICAgICAgLnNldERlc2MoJ1VzZSBlbGxpcHNlcyB0byBmaXQgZmlsZSBuYW1lcyBvbiBhIHNpbmdsZSBsaW5lJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnRyaW1OYW1lcylcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudHJpbU5hbWVzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgICAgLnNldE5hbWUoJ1dvcmtzcGFjZSBib3JkZXJzJylcclxuICAgICAgICAuc2V0RGVzYygnRGlzcGxheSBkaXZpZGVyIGxpbmVzIGJldHdlZW4gd29ya3NwYWNlIGVsZW1lbnRzJylcclxuICAgICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuYm9yZGVyc1RvZ2dsZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuYm9yZGVyc1RvZ2dsZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0ZvY3VzIG1vZGUnKVxyXG4gICAgICAuc2V0RGVzYygnSGlkZSB0YWIgYmFyIGFuZCBzdGF0dXMgYmFyLCBob3ZlciB0byBkaXNwbGF5IChjYW4gYmUgdG9nZ2xlZCB3aXRoIGhvdGtleSknKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZm9jdXNNb2RlKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5mb2N1c01vZGUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVW5kZXJsaW5lIGludGVybmFsIGxpbmtzJylcclxuICAgICAgLnNldERlc2MoJ1Nob3cgdW5kZXJsaW5lcyBvbiBpbnRlcm5hbCBsaW5rcycpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy51bmRlcmxpbmVJbnRlcm5hbClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudW5kZXJsaW5lSW50ZXJuYWwgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVW5kZXJsaW5lIGV4dGVybmFsIGxpbmtzJylcclxuICAgICAgLnNldERlc2MoJ1Nob3cgdW5kZXJsaW5lcyBvbiBleHRlcm5hbCBsaW5rcycpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy51bmRlcmxpbmVFeHRlcm5hbClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudW5kZXJsaW5lRXh0ZXJuYWwgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTWF4aW1pemUgbWVkaWEnKVxyXG4gICAgICAuc2V0RGVzYygnSW1hZ2VzIGFuZCB2aWRlb3MgZmlsbCB0aGUgd2lkdGggb2YgdGhlIGxpbmUnKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZnVsbFdpZHRoTWVkaWEpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmZ1bGxXaWR0aE1lZGlhID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdicicpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7dGV4dDogJ0xheW91dCd9KTtcclxuXHJcbiAgICBjb25zdCBsYXlvdXREZXNjID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ3AnKTtcclxuXHJcbiAgICAgIGxheW91dERlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ3NwYW4nLCB7XHJcbiAgICAgICAgICB0ZXh0OiAnVGhlIGZvbGxvd2luZyBvcHRpb25zIHJlcXVpcmUgdGhlICdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgbGF5b3V0RGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwiQ29udGV4dHVhbCBUeXBvZ3JhcGh5IHBsdWdpblwiLFxyXG4gICAgICAgICAgaHJlZjogXCJvYnNpZGlhbjovL3Nob3ctcGx1Z2luP2lkPW9ic2lkaWFuLWNvbnRleHR1YWwtdHlwb2dyYXBoeVwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGxheW91dERlc2MuYXBwZW5kVGV4dCgnLiBUaGVzZSBvcHRpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgb24gYSBwZXItZmlsZSBiYXNpcyB1c2luZyBZQU1MLCAnKTtcclxuICAgICAgbGF5b3V0RGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwic2VlIGRvY3VtZW50YXRpb25cIixcclxuICAgICAgICAgIGhyZWY6IFwiaHR0cHM6Ly9taW5pbWFsLmd1aWRlL0ZlYXR1cmVzL0Jsb2NrK3dpZHRoXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgbGF5b3V0RGVzYy5hcHBlbmRUZXh0KCcgZm9yIGRldGFpbHMuJyk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdJbWFnZSBncmlkcycpXHJcbiAgICAgIC5zZXREZXNjKCdUdXJuIGNvbnNlY3V0aXZlIGltYWdlcyBpbnRvIGNvbHVtbnMgXHUyMDE0IHRvIG1ha2UgYSBuZXcgcm93LCBhZGQgYW4gZXh0cmEgbGluZSBicmVhayBiZXR3ZWVuIGltYWdlcycpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5pbWdHcmlkKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5pbWdHcmlkID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnQ2hhcnQgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnRGVmYXVsdCB3aWR0aCBmb3IgY2hhcnQgYmxvY2tzJylcclxuICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgLmFkZE9wdGlvbignY2hhcnQtZGVmYXVsdC13aWR0aCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2NoYXJ0LXdpZGUnLCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2NoYXJ0LW1heCcsJ01heGltdW0gbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignY2hhcnQtMTAwJywnMTAwJSBwYW5lIHdpZHRoJylcclxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY2hhcnRXaWR0aClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY2hhcnRXaWR0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0lmcmFtZSB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdEZWZhdWx0IHdpZHRoIGZvciBpZnJhbWUgYmxvY2tzJylcclxuICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgLmFkZE9wdGlvbignaWZyYW1lLWRlZmF1bHQtd2lkdGgnLCdEZWZhdWx0JylcclxuICAgICAgICAuYWRkT3B0aW9uKCdpZnJhbWUtd2lkZScsJ1dpZGUgbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaWZyYW1lLW1heCcsJ01heGltdW0gbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaWZyYW1lLTEwMCcsJzEwMCUgcGFuZSB3aWR0aCcpXHJcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmlmcmFtZVdpZHRoKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5pZnJhbWVXaWR0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0ltYWdlIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ0RlZmF1bHQgd2lkdGggZm9yIGltYWdlIGJsb2NrcycpXHJcbiAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2ltZy1kZWZhdWx0LXdpZHRoJywnRGVmYXVsdCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaW1nLXdpZGUnLCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2ltZy1tYXgnLCdNYXhpbXVtIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2ltZy0xMDAnLCcxMDAlIHBhbmUgd2lkdGgnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5pbWdXaWR0aClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuaW1nV2lkdGggPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdNYXAgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnRGVmYXVsdCB3aWR0aCBmb3IgbWFwIGJsb2NrcycpXHJcbiAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgIC5hZGRPcHRpb24oJ21hcC1kZWZhdWx0LXdpZHRoJywnRGVmYXVsdCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignbWFwLXdpZGUnLCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ21hcC1tYXgnLCdNYXhpbXVtIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ21hcC0xMDAnLCcxMDAlIHBhbmUgd2lkdGgnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXBXaWR0aClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubWFwV2lkdGggPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdUYWJsZSB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdEZWZhdWx0IHdpZHRoIGZvciB0YWJsZSBhbmQgRGF0YXZpZXcgYmxvY2tzJylcclxuICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgLmFkZE9wdGlvbigndGFibGUtZGVmYXVsdC13aWR0aCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ3RhYmxlLXdpZGUnLCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ3RhYmxlLW1heCcsJ01heGltdW0gbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbigndGFibGUtMTAwJywnMTAwJSBwYW5lIHdpZHRoJylcclxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MudGFibGVXaWR0aClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudGFibGVXaWR0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnYnInKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJywge3RleHQ6ICdUeXBvZ3JhcGh5J30pO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVGV4dCBmb250IHNpemUnKVxyXG4gICAgICAuc2V0RGVzYygnVXNlZCBmb3IgdGhlIG1haW4gdGV4dCAoZGVmYXVsdCAxNiknKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJzE2JylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLnRleHROb3JtYWwgfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudGV4dE5vcm1hbCA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0Rm9udFNpemUoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdTbWFsbCBmb250IHNpemUnKVxyXG4gICAgICAuc2V0RGVzYygnVXNlZCBmb3IgdGV4dCBpbiB0aGUgc2lkZWJhcnMgYW5kIHRhYnMgKGRlZmF1bHQgMTMpJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCcxMycpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy50ZXh0U21hbGwgfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudGV4dFNtYWxsID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTGluZSBoZWlnaHQnKVxyXG4gICAgICAuc2V0RGVzYygnTGluZSBoZWlnaHQgb2YgdGV4dCAoZGVmYXVsdCAxLjUpJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCcxLjUnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZUhlaWdodCB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lSGVpZ2h0ID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTm9ybWFsIGxpbmUgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnTnVtYmVyIG9mIGNoYXJhY3RlcnMgcGVyIGxpbmUgKGRlZmF1bHQgNDApJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCc0MCcpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lV2lkdGggfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZVdpZHRoID0gcGFyc2VJbnQodmFsdWUudHJpbSgpKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnTnVtYmVyIG9mIGNoYXJhY3RlcnMgcGVyIGxpbmUgZm9yIHdpZGUgZWxlbWVudHMgKGRlZmF1bHQgNTApJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCc1MCcpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lV2lkdGhXaWRlIHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpbmVXaWR0aFdpZGUgPSBwYXJzZUludCh2YWx1ZS50cmltKCkpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ01heGltdW0gbGluZSB3aWR0aCAlJylcclxuICAgICAgLnNldERlc2MoJ1BlcmNlbnRhZ2Ugb2Ygc3BhY2UgaW5zaWRlIGEgcGFuZSB0aGF0IGEgbGluZSBjYW4gZmlsbCAoZGVmYXVsdCA4OCknKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJzg4JylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLm1heFdpZHRoIHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm1heFdpZHRoID0gcGFyc2VJbnQodmFsdWUudHJpbSgpKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0VkaXRvciBmb250JylcclxuICAgICAgLnNldERlc2MoJ092ZXJyaWRlcyB0aGUgdGV4dCBmb250IGRlZmluZWQgaW4gT2JzaWRpYW4gQXBwZWFyYW5jZSBzZXR0aW5ncyB3aGVuIGluIGVkaXQgbW9kZScpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignJylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLmVkaXRvckZvbnQgfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZWRpdG9yRm9udCA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnYnInKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnU3VwcG9ydCBkZXZlbG9wbWVudCd9KTtcclxuXHJcbiAgICBjb25zdCBkb25hdGVUZXh0ID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ3AnKTtcclxuXHJcbiAgICAgIGRvbmF0ZVRleHQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ3NwYW4nLCB7XHJcbiAgICAgICAgICB0ZXh0OiAnSWYgeW91IGVuam95IE1pbmltYWwsIGNvbnNpZGVyICdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgZG9uYXRlVGV4dC5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwiYnV5aW5nIG1lIGEgY29mZmVlXCIsXHJcbiAgICAgICAgICBocmVmOiBcImh0dHBzOi8vd3d3LmJ1eW1lYWNvZmZlZS5jb20va2VwYW5vXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgZG9uYXRlVGV4dC5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnc3BhbicsIHtcclxuICAgICAgICAgIHRleHQ6ICcsIGFuZCBmb2xsb3dpbmcgbWUgb24gVHdpdHRlciAnXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIGRvbmF0ZVRleHQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ2EnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcIkBrZXBhbm9cIixcclxuICAgICAgICAgIGhyZWY6IFwiaHR0cHM6Ly90d2l0dGVyLmNvbS9rZXBhbm9cIixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgIGNvbnN0IGRpdiA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdkaXYnLCB7XHJcbiAgICAgIGNsczogJ21pbmltYWwtZG9uYXRpb24nLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xyXG4gICAgZGl2LmFwcGVuZENoaWxkKFxyXG4gICAgICBjcmVhdGVEb25hdGVCdXR0b24oXHJcbiAgICAgICAgJ2h0dHBzOi8vd3d3LmJ1eW1lYWNvZmZlZS5jb20va2VwYW5vJyxcclxuICAgICAgICBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGJ1eU1lQUNvZmZlZSwgJ3RleHQveG1sJykuZG9jdW1lbnRFbGVtZW50LFxyXG4gICAgICApLFxyXG4gICAgKTtcclxuXHJcblxyXG4gIH1cclxufVxyXG5cclxuY29uc3QgY3JlYXRlRG9uYXRlQnV0dG9uID0gKGxpbms6IHN0cmluZywgaW1nOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50ID0+IHtcclxuICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gIGEuc2V0QXR0cmlidXRlKCdocmVmJywgbGluayk7XHJcbiAgYS5hZGRDbGFzcygnbWluaW1hbC1kb25hdGUtYnV0dG9uJyk7XHJcbiAgYS5hcHBlbmRDaGlsZChpbWcpO1xyXG4gIHJldHVybiBhO1xyXG59O1xyXG5cclxuY29uc3QgYnV5TWVBQ29mZmVlID0gYFxyXG48c3ZnIHdpZHRoPVwiMTUwXCIgaGVpZ2h0PVwiNDJcIiB2aWV3Qm94PVwiMCAwIDI2MCA3M1wiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OjEwcHhcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuPHBhdGggZD1cIk0wIDExLjY4QzAgNS4yMjkzMiA1LjIyOTMxIDAgMTEuNjggMEgyNDguMkMyNTQuNjUxIDAgMjU5Ljg4IDUuMjI5MzEgMjU5Ljg4IDExLjY4VjYxLjMyQzI1OS44OCA2Ny43NzA3IDI1NC42NTEgNzMgMjQ4LjIgNzNIMTEuNjhDNS4yMjkzMSA3MyAwIDY3Ljc3MDcgMCA2MS4zMlYxMS42OFpcIiBmaWxsPVwiI0ZGREQwMFwiLz5cclxuPHBhdGggZD1cIk01Mi4yNTY2IDI0LjAwNzhMNTIuMjI0NiAyMy45ODg5TDUyLjE1MDQgMjMuOTY2M0M1Mi4xODAyIDIzLjk5MTUgNTIuMjE3NiAyNC4wMDYxIDUyLjI1NjYgMjQuMDA3OFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk01Mi43MjQ4IDI3LjM0NTdMNTIuNjg5NSAyNy4zNTU2TDUyLjcyNDggMjcuMzQ1N1pcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk01Mi4yNzAxIDI0LjAwMjRDNTIuMjY2IDI0LjAwMTkgNTIuMjYxOSAyNC4wMDA5IDUyLjI1OCAyMy45OTk1QzUyLjI1NzggMjQuMDAyMiA1Mi4yNTc4IDI0LjAwNDkgNTIuMjU4IDI0LjAwNzZDNTIuMjYyNCAyNC4wMDcgNTIuMjY2NiAyNC4wMDUyIDUyLjI3MDEgMjQuMDAyNFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk01Mi4yNTc4IDI0LjAwOTRINTIuMjY0M1YyNC4wMDU0TDUyLjI1NzggMjQuMDA5NFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk01Mi42OTczIDI3LjMzOTRMNTIuNzUxMyAyNy4zMDg2TDUyLjc3MTQgMjcuMjk3M0w1Mi43ODk3IDI3LjI3NzhDNTIuNzU1NCAyNy4yOTI2IDUyLjcyNDEgMjcuMzEzNSA1Mi42OTczIDI3LjMzOTRaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNTIuMzQ4NCAyNC4wODEyTDUyLjI5NTYgMjQuMDMxTDUyLjI1OTggMjQuMDExNUM1Mi4yNzkgMjQuMDQ1NCA1Mi4zMTA4IDI0LjA3MDUgNTIuMzQ4NCAyNC4wODEyWlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTM5LjA2ODQgNTYuNDY5QzM5LjAyNjIgNTYuNDg3MiAzOC45ODkzIDU2LjUxNTggMzguOTYwOSA1Ni41NTJMMzguOTk0MyA1Ni41MzA2QzM5LjAxNjkgNTYuNTA5OCAzOS4wNDg5IDU2LjQ4NTMgMzkuMDY4NCA1Ni40NjlaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNDYuNzgwMiA1NC45NTE4QzQ2Ljc4MDIgNTQuOTA0MSA0Ni43NTY5IDU0LjkxMjkgNDYuNzYyNiA1NS4wODI2QzQ2Ljc2MjYgNTUuMDY4NyA0Ni43NjgzIDU1LjA1NDkgNDYuNzcwOCA1NS4wNDE3QzQ2Ljc3MzkgNTUuMDExNSA0Ni43NzY0IDU0Ljk4MiA0Ni43ODAyIDU0Ljk1MThaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNDUuOTg0NCA1Ni40NjlDNDUuOTQyMiA1Ni40ODcyIDQ1LjkwNTMgNTYuNTE1OCA0NS44NzcgNTYuNTUyTDQ1LjkxMDMgNTYuNTMwNkM0NS45MzI5IDU2LjUwOTggNDUuOTY0OSA1Ni40ODUzIDQ1Ljk4NDQgNTYuNDY5WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTMzLjYzMDcgNTYuODMwMUMzMy41OTg3IDU2LjgwMjMgMzMuNTU5NSA1Ni43ODQgMzMuNTE3NiA1Ni43NzczQzMzLjU1MTUgNTYuNzkzNyAzMy41ODU1IDU2LjgxIDMzLjYwODEgNTYuODIyNkwzMy42MzA3IDU2LjgzMDFaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNMzIuNDExOCA1NS42NTk4QzMyLjQwNjggNTUuNjEwMyAzMi4zOTE2IDU1LjU2MjQgMzIuMzY3MiA1NS41MTlDMzIuMzg0NSA1NS41NjQyIDMyLjM5OSA1NS42MTA0IDMyLjQxMDYgNTUuNjU3M0wzMi40MTE4IDU1LjY1OThaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNDAuNjIzIDM0LjcyMjFDMzguOTQ0OSAzNS40NDA1IDM3LjA0MDQgMzYuMjU1MSAzNC41NzIyIDM2LjI1NTFDMzMuNTM5NyAzNi4yNTMxIDMyLjUxMjIgMzYuMTExNCAzMS41MTc2IDM1LjgzNEwzMy4yMjQ3IDUzLjM2MDVDMzMuMjg1MSA1NC4wOTMgMzMuNjE4OCA1NC43NzYxIDM0LjE1OTUgNTUuMjczOUMzNC43MDAzIDU1Ljc3MTggMzUuNDA4NSA1Ni4wNDgyIDM2LjE0MzUgNTYuMDQ4QzM2LjE0MzUgNTYuMDQ4IDM4LjU2NCA1Ni4xNzM3IDM5LjM3MTYgNTYuMTczN0M0MC4yNDA5IDU2LjE3MzcgNDIuODQ3NCA1Ni4wNDggNDIuODQ3NCA1Ni4wNDhDNDMuNTgyMyA1Ni4wNDggNDQuMjkwNCA1NS43NzE2IDQ0LjgzMSA1NS4yNzM3QzQ1LjM3MTYgNTQuNzc1OSA0NS43MDUyIDU0LjA5MjkgNDUuNzY1NiA1My4zNjA1TDQ3LjU5NCAzMy45OTNDNDYuNzc2OSAzMy43MTQgNDUuOTUyMyAzMy41Mjg2IDQ1LjAyMjcgMzMuNTI4NkM0My40MTUgMzMuNTI3OSA0Mi4xMTk2IDM0LjA4MTcgNDAuNjIzIDM0LjcyMjFaXCIgZmlsbD1cIndoaXRlXCIvPlxyXG48cGF0aCBkPVwiTTI2LjIzNDQgMjcuMjQ0OUwyNi4yNjMzIDI3LjI3MTlMMjYuMjgyMSAyNy4yODMyQzI2LjI2NzYgMjcuMjY4OCAyNi4yNTE2IDI3LjI1NTkgMjYuMjM0NCAyNy4yNDQ5WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTU1LjQ5MDYgMjUuNjI3NEw1NS4yMzM2IDI0LjMzMDdDNTUuMDAyOSAyMy4xNjczIDU0LjQ3OTMgMjIuMDY4IDUzLjI4NTEgMjEuNjQ3NUM1Mi45MDI0IDIxLjUxMyA1Mi40NjggMjEuNDU1MiA1Mi4xNzQ1IDIxLjE3NjhDNTEuODgxIDIwLjg5ODMgNTEuNzk0MyAyMC40NjU5IDUxLjcyNjQgMjAuMDY0OUM1MS42MDA3IDE5LjMyODkgNTEuNDgyNSAxOC41OTIzIDUxLjM1MzcgMTcuODU3NUM1MS4yNDI0IDE3LjIyNTkgNTEuMTU0NCAxNi41MTYzIDUwLjg2NDcgMTUuOTM2OEM1MC40ODc2IDE1LjE1ODYgNDkuNzA1IDE0LjcwMzYgNDguOTI2OSAxNC40MDI1QzQ4LjUyODIgMTQuMjUzNyA0OC4xMjEzIDE0LjEyNzggNDcuNzA4MiAxNC4wMjU0QzQ1Ljc2NDIgMTMuNTEyNSA0My43MjAyIDEzLjMyNCA0MS43MjAyIDEzLjIxNjVDMzkuMzE5NyAxMy4wODQgMzYuOTEyOCAxMy4xMjM5IDM0LjUxOCAxMy4zMzU5QzMyLjczNTUgMTMuNDk4MSAzMC44NTgxIDEzLjY5NDIgMjkuMTY0MiAxNC4zMTA4QzI4LjU0NTEgMTQuNTM2NCAyNy45MDcxIDE0LjgwNzMgMjcuNDM2NCAxNS4yODU2QzI2Ljg1ODcgMTUuODczMyAyNi42NzAyIDE2Ljc4MjEgMjcuMDkxOSAxNy41MTVDMjcuMzkxNyAxOC4wMzU0IDI3Ljg5OTYgMTguNDAzMSAyOC40MzgyIDE4LjY0NjNDMjkuMTM5OCAxOC45NTk3IDI5Ljg3MjYgMTkuMTk4MiAzMC42MjQyIDE5LjM1NzhDMzIuNzE3MiAxOS44MjA0IDM0Ljg4NSAyMC4wMDIxIDM3LjAyMzMgMjAuMDc5NEMzOS4zOTMyIDIwLjE3NSA0MS43NjcgMjAuMDk3NSA0NC4xMjU2IDE5Ljg0NzRDNDQuNzA4OSAxOS43ODMzIDQ1LjI5MTEgMTkuNzA2NCA0NS44NzIzIDE5LjYxNjhDNDYuNTU2OCAxOS41MTE4IDQ2Ljk5NjEgMTguNjE2OCA0Ni43OTQzIDE3Ljk5MzNDNDYuNTUzIDE3LjI0NzkgNDUuOTA0NCAxNi45NTg3IDQ1LjE3MDkgMTcuMDcxMkM0NS4wNjI4IDE3LjA4ODIgNDQuOTU1MyAxNy4xMDM5IDQ0Ljg0NzIgMTcuMTE5Nkw0NC43NjkyIDE3LjEzMUM0NC41MjA4IDE3LjE2MjQgNDQuMjcyMyAxNy4xOTE3IDQ0LjAyMzggMTcuMjE5QzQzLjUxMDUgMTcuMjc0MyA0Mi45OTU5IDE3LjMxOTUgNDIuNDgwMSAxNy4zNTQ3QzQxLjMyNDkgMTcuNDM1MiA0MC4xNjY1IDE3LjQ3MjIgMzkuMDA4OCAxNy40NzQxQzM3Ljg3MTIgMTcuNDc0MSAzNi43MzI5IDE3LjQ0MjEgMzUuNTk3OCAxNy4zNjczQzM1LjA3OTkgMTcuMzMzMyAzNC41NjMyIDE3LjI5MDIgMzQuMDQ3OCAxNy4yMzc4QzMzLjgxMzQgMTcuMjEzMyAzMy41Nzk2IDE3LjE4NzUgMzMuMzQ1OCAxNy4xNTg2TDMzLjEyMzMgMTcuMTMwM0wzMy4wNzQ5IDE3LjEyMzRMMzIuODQ0MiAxNy4wOTAxQzMyLjM3MjggMTcuMDE5MSAzMS45MDE0IDE2LjkzNzQgMzEuNDM1IDE2LjgzODdDMzEuMzg4IDE2LjgyODMgMzEuMzQ1OSAxNi44MDIxIDMxLjMxNTcgMTYuNzY0NUMzMS4yODU2IDE2LjcyNjkgMzEuMjY5MSAxNi42ODAxIDMxLjI2OTEgMTYuNjMxOUMzMS4yNjkxIDE2LjU4MzcgMzEuMjg1NiAxNi41MzY5IDMxLjMxNTcgMTYuNDk5M0MzMS4zNDU5IDE2LjQ2MTcgMzEuMzg4IDE2LjQzNTYgMzEuNDM1IDE2LjQyNTFIMzEuNDQzOEMzMS44NDggMTYuMzM5IDMyLjI1NTMgMTYuMjY1NSAzMi42NjM4IDE2LjIwMTRDMzIuOCAxNi4xOCAzMi45MzY2IDE2LjE1OSAzMy4wNzM2IDE2LjEzODVIMzMuMDc3NEMzMy4zMzMyIDE2LjEyMTUgMzMuNTkwMyAxNi4wNzU3IDMzLjg0NDggMTYuMDQ1NUMzNi4wNTk1IDE1LjgxNTEgMzguMjg3NCAxNS43MzY2IDQwLjUxMjggMTUuODEwNEM0MS41OTMzIDE1Ljg0MTkgNDIuNjczMSAxNS45MDUzIDQzLjc0ODUgMTYuMDE0N0M0My45Nzk4IDE2LjAzODYgNDQuMjA5OCAxNi4wNjM3IDQ0LjQzOTkgMTYuMDkyQzQ0LjUyNzkgMTYuMTAyNyA0NC42MTY1IDE2LjExNTMgNDQuNzA1MSAxNi4xMjU5TDQ0Ljg4MzYgMTYuMTUxN0M0NS40MDQgMTYuMjI5MiA0NS45MjE3IDE2LjMyMzMgNDYuNDM2NyAxNi40MzM5QzQ3LjE5OTcgMTYuNTk5OSA0OC4xNzk2IDE2LjY1MzkgNDguNTE5IDE3LjQ4OThDNDguNjI3MSAxNy43NTUxIDQ4LjY3NjEgMTguMDQ5OSA0OC43MzU5IDE4LjMyODNMNDguODExOSAxOC42ODM0QzQ4LjgxMzkgMTguNjg5OCA0OC44MTU0IDE4LjY5NjMgNDguODE2MyAxOC43MDI5QzQ4Ljk5NjEgMTkuNTQwOSA0OS4xNzYgMjAuMzc5IDQ5LjM1NjIgMjEuMjE3QzQ5LjM2OTQgMjEuMjc4OSA0OS4zNjk3IDIxLjM0MjkgNDkuMzU3MSAyMS40MDQ5QzQ5LjM0NDUgMjEuNDY2OSA0OS4zMTkzIDIxLjUyNTcgNDkuMjgyOSAyMS41Nzc2QzQ5LjI0NjYgMjEuNjI5NCA0OS4yIDIxLjY3MzIgNDkuMTQ2IDIxLjcwNjJDNDkuMDkyIDIxLjczOTIgNDkuMDMxNyAyMS43NjA4IDQ4Ljk2OSAyMS43Njk1SDQ4Ljk2NEw0OC44NTQgMjEuNzg0Nkw0OC43NDUzIDIxLjc5OUM0OC40MDA5IDIxLjg0MzkgNDguMDU2IDIxLjg4NTggNDcuNzEwNyAyMS45MjQ3QzQ3LjAzMDcgMjIuMDAyMiA0Ni4zNDk2IDIyLjA2OTMgNDUuNjY3NCAyMi4xMjU5QzQ0LjMxMTkgMjIuMjM4NiA0Mi45NTM2IDIyLjMxMjUgNDEuNTkyNyAyMi4zNDc3QzQwLjg5OTIgMjIuMzY2MiA0MC4yMDU5IDIyLjM3NDggMzkuNTEyOSAyMi4zNzM1QzM2Ljc1NDMgMjIuMzcxMyAzMy45OTgxIDIyLjIxMSAzMS4yNTc4IDIxLjg5MzNDMzAuOTYxMSAyMS44NTgxIDMwLjY2NDUgMjEuODIwNCAzMC4zNjc4IDIxLjc4MjFDMzAuNTk3OCAyMS44MTE2IDMwLjIwMDYgMjEuNzU5NCAzMC4xMjAyIDIxLjc0ODFDMjkuOTMxNiAyMS43MjE3IDI5Ljc0MzEgMjEuNjk0MyAyOS41NTQ1IDIxLjY2NThDMjguOTIxNiAyMS41NzA5IDI4LjI5MjQgMjEuNDU0IDI3LjY2MDcgMjEuMzUxNUMyNi44OTcxIDIxLjIyNTggMjYuMTY2NyAyMS4yODg3IDI1LjQ3NiAyMS42NjU4QzI0LjkwOSAyMS45NzYgMjQuNDUwMSAyMi40NTE4IDI0LjE2MDUgMjMuMDI5N0MyMy44NjI2IDIzLjY0NTYgMjMuNzczOSAyNC4zMTYzIDIzLjY0MDcgMjQuOTc4MUMyMy41MDc0IDI1LjYzOTkgMjMuMyAyNi4zNTIxIDIzLjM3ODYgMjcuMDMxNUMyMy41NDc3IDI4LjQ5NzkgMjQuNTcyOCAyOS42ODk1IDI2LjA0NzMgMjkuOTU2QzI3LjQzNDUgMzAuMjA3NCAyOC44MjkyIDMwLjQxMTEgMzAuMjI3NiAzMC41ODQ2QzM1LjcyMTIgMzEuMjU3NCA0MS4yNzExIDMxLjMzNzkgNDYuNzgxOCAzMC44MjQ3QzQ3LjIzMDUgMzAuNzgyOCA0Ny42Nzg3IDMwLjczNzEgNDguMTI2MiAzMC42ODc2QzQ4LjI2NiAzMC42NzIzIDQ4LjQwNzQgMzAuNjg4NCA0OC41NDAxIDMwLjczNDhDNDguNjcyOSAzMC43ODEyIDQ4Ljc5MzYgMzAuODU2NiA0OC44OTM0IDMwLjk1NTdDNDguOTkzMiAzMS4wNTQ4IDQ5LjA2OTUgMzEuMTc0OSA0OS4xMTY5IDMxLjMwNzNDNDkuMTY0MiAzMS40Mzk3IDQ5LjE4MTQgMzEuNTgxMSA0OS4xNjcgMzEuNzIwOUw0OS4wMjc1IDMzLjA3NzNDNDguNzQ2MyAzNS44MTgxIDQ4LjQ2NTIgMzguNTU4NyA0OC4xODQgNDEuMjk5QzQ3Ljg5MDcgNDQuMTc2OSA0Ny41OTU1IDQ3LjA1NDUgNDcuMjk4NCA0OS45MzE5QzQ3LjIxNDYgNTAuNzQyMiA0Ny4xMzA4IDUxLjU1MjQgNDcuMDQ3IDUyLjM2MjRDNDYuOTY2NiA1My4xNiA0Ni45NTUyIDUzLjk4MjcgNDYuODAzOCA1NC43NzA5QzQ2LjU2NDkgNTYuMDEwMyA0NS43MjU4IDU2Ljc3MTUgNDQuNTAxNSA1Ny4wNDk5QzQzLjM3OTggNTcuMzA1MiA0Mi4yMzM5IDU3LjQzOTIgNDEuMDgzNiA1Ny40NDk3QzM5LjgwODMgNTcuNDU2NiAzOC41MzM2IDU3LjQgMzcuMjU4MyA1Ny40MDY5QzM1Ljg5NyA1Ny40MTQ1IDM0LjIyOTUgNTcuMjg4NyAzMy4xNzg2IDU2LjI3NTZDMzIuMjU1MyA1NS4zODU2IDMyLjEyNzcgNTMuOTkyMSAzMi4wMDIgNTIuNzg3MkMzMS44MzQ0IDUxLjE5MiAzMS42NjgyIDQ5LjU5NzEgMzEuNTAzNiA0OC4wMDIzTDMwLjU3OTYgMzkuMTM0NEwyOS45ODE5IDMzLjM5NjZDMjkuOTcxOCAzMy4zMDE3IDI5Ljk2MTggMzMuMjA4IDI5Ljk1MjQgMzMuMTEyNUMyOS44ODA3IDMyLjQyOCAyOS4zOTYxIDMxLjc1OCAyOC42MzI0IDMxLjc5MjZDMjcuOTc4OCAzMS44MjE1IDI3LjIzNTkgMzIuMzc3MSAyNy4zMTI1IDMzLjExMjVMMjcuNzU1NyAzNy4zNjY0TDI4LjY3MiA0Ni4xNjU3QzI4LjkzMzEgNDguNjY1MiAyOS4xOTM1IDUxLjE2NSAyOS40NTMzIDUzLjY2NTNDMjkuNTAzNiA1NC4xNDQyIDI5LjU1MDcgNTQuNjI0NCAyOS42MDM1IDU1LjEwMzRDMjkuODkwOCA1Ny43MjA1IDMxLjg4OTUgNTkuMTMxIDM0LjM2NDYgNTkuNTI4MkMzNS44MTAyIDU5Ljc2MDcgMzcuMjkxIDU5LjgwODUgMzguNzU4IDU5LjgzMjRDNDAuNjM4NiA1OS44NjI2IDQyLjUzOCA1OS45MzQ4IDQ0LjM4NzcgNTkuNTk0MkM0Ny4xMjg3IDU5LjA5MTQgNDkuMTg1MyA1Ny4yNjExIDQ5LjQ3ODggNTQuNDIyQzQ5LjU2MjYgNTMuNjAyNCA0OS42NDY0IDUyLjc4MjYgNDkuNzMwMiA1MS45NjI2QzUwLjAwODggNDkuMjUwNyA1MC4yODcxIDQ2LjUzODYgNTAuNTY0OSA0My44MjYzTDUxLjQ3MzcgMzQuOTY0MUw1MS44OTA0IDMwLjkwMjZDNTEuOTExMiAzMC43MDEyIDUxLjk5NjIgMzAuNTExOCA1Mi4xMzMgMzAuMzYyNUM1Mi4yNjk3IDMwLjIxMzIgNTIuNDUwOSAzMC4xMTE5IDUyLjY0OTcgMzAuMDczNkM1My40MzM1IDI5LjkyMDggNTQuMTgyNyAyOS42NiA1NC43NDAyIDI5LjA2MzVDNTUuNjI3NyAyOC4xMTM4IDU1LjgwNDMgMjYuODc1NiA1NS40OTA2IDI1LjYyNzRaTTI2LjAwNzEgMjYuNTAzNUMyNi4wMTkgMjYuNDk3OSAyNS45OTcgMjYuNjAwMyAyNS45ODc2IDI2LjY0ODFDMjUuOTg1NyAyNi41NzU4IDI1Ljk4OTUgMjYuNTExNyAyNi4wMDcxIDI2LjUwMzVaTTI2LjA4MzEgMjcuMDkxOEMyNi4wODk0IDI3LjA4NzQgMjYuMTA4MyAyNy4xMTI2IDI2LjEyNzggMjcuMTQyOEMyNi4wOTgyIDI3LjExNTEgMjYuMDc5NCAyNy4wOTQ0IDI2LjA4MjUgMjcuMDkxOEgyNi4wODMxWk0yNi4xNTc5IDI3LjE5MDVDMjYuMTg1IDI3LjIzNjQgMjYuMTk5NCAyNy4yNjUzIDI2LjE1NzkgMjcuMTkwNVYyNy4xOTA1Wk0yNi4zMDgyIDI3LjMxMjVIMjYuMzExOUMyNi4zMTE5IDI3LjMxNjkgMjYuMzE4OCAyNy4zMjEzIDI2LjMyMTQgMjcuMzI1N0MyNi4zMTcyIDI3LjMyMDggMjYuMzEyNiAyNy4zMTY0IDI2LjMwNzUgMjcuMzEyNUgyNi4zMDgyWk01Mi42MTMyIDI3LjEzMDJDNTIuMzMxNyAyNy4zOTc5IDUxLjkwNzQgMjcuNTIyNCA1MS40ODgyIDI3LjU4NDZDNDYuNzg2OCAyOC4yODIzIDQyLjAxNjkgMjguNjM1NSAzNy4yNjQgMjguNDc5NkMzMy44NjI0IDI4LjM2MzMgMzAuNDk2NyAyNy45ODU2IDI3LjEyOSAyNy41MDk4QzI2Ljc5OSAyNy40NjMzIDI2LjQ0MTQgMjcuNDAzIDI2LjIxNDUgMjcuMTU5N0MyNS43ODcxIDI2LjcwMDkgMjUuOTk3IDI1Ljc3NyAyNi4xMDgzIDI1LjIyMjZDMjYuMjEwMSAyNC43MTQ4IDI2LjQwNSAyNC4wMzc4IDI3LjAwOSAyMy45NjU2QzI3Ljk1MTggMjMuODU0OSAyOS4wNDY2IDI0LjI1MjggMjkuOTc5NCAyNC4zOTQyQzMxLjEwMjMgMjQuNTY1NiAzMi4yMjk1IDI0LjcwMjggMzMuMzYwOSAyNC44MDU5QzM4LjE4OTIgMjUuMjQ1OSA0My4wOTg2IDI1LjE3NzQgNDcuOTA1NiAyNC41MzM3QzQ4Ljc4MTcgMjQuNDE2IDQ5LjY1NDggMjQuMjc5MiA1MC41MjQ2IDI0LjEyMzNDNTEuMjk5NiAyMy45ODQ0IDUyLjE1ODggMjMuNzIzNiA1Mi42MjcxIDI0LjUyNjJDNTIuOTQ4MiAyNS4wNzMgNTIuOTkxIDI1LjgwNDYgNTIuOTQxMyAyNi40MjI1QzUyLjkyNiAyNi42OTE3IDUyLjgwODQgMjYuOTQ0OCA1Mi42MTI2IDI3LjEzMDJINTIuNjEzMlpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTgxLjEzMDIgNDAuMTkyOUM4MC44NTU2IDQwLjcxNjkgODAuNDc4MSA0MS4xNzMyIDc5Ljk5NzggNDEuNTYwNEM3OS41MTc1IDQxLjk0NzkgNzguOTU3MSA0Mi4yNjMzIDc4LjMxNjYgNDIuNTA2MkM3Ny42NzYxIDQyLjc0OTcgNzcuMDMxNSA0Mi45MTMxIDc2LjM4MzUgNDIuOTk2NEM3NS43MzUyIDQzLjA3OTkgNzUuMTA2IDQzLjA3MjcgNzQuNDk2MyA0Mi45NzM1QzczLjg4NjMgNDIuODc0OSA3My4zNjc0IDQyLjY3MzcgNzIuOTQwOCA0Mi4zNjk1TDczLjQyMTQgMzcuMzc3OUM3My44NjMzIDM3LjIyNjEgNzQuNDE5NyAzNy4wNzAzIDc1LjA5MDkgMzYuOTEwN0M3NS43NjE5IDM2Ljc1MTMgNzYuNDUyIDM2LjYzNzEgNzcuMTYxMyAzNi41Njg5Qzc3Ljg3MDUgMzYuNTAwMyA3OC41NDEyIDM2LjUwODQgNzkuMTc0NCAzNi41OTE3Qzc5LjgwNjggMzYuNjc1MyA4MC4zMDY1IDM2Ljg3NjUgODAuNjcyNSAzNy4xOTU4QzgwLjg3MDcgMzcuMzc4IDgxLjAzODcgMzcuNTc1NCA4MS4xNzYgMzcuNzg4M0M4MS4zMTMgMzguMDAxMSA4MS4zOTY5IDM4LjIyMTQgODEuNDI3NiAzOC40NDkzQzgxLjUwMzcgMzkuMDg3NSA4MS40MDQ3IDM5LjY2ODcgODEuMTMwMiA0MC4xOTI5Wk03NC4xNTMgMjkuNTYwMkM3NC40NzM0IDI5LjM2MjcgNzQuODU4NSAyOS4xODc3IDc1LjMwODMgMjkuMDM1NkM3NS43NTgxIDI4Ljg4NDEgNzYuMjE5NSAyOC43Nzc0IDc2LjY5MjMgMjguNzE2N0M3Ny4xNjQ4IDI4LjY1NjIgNzcuNjI2MiAyOC42NDgxIDc4LjA3NjMgMjguNjkzOEM3OC41MjU4IDI4LjczOTUgNzguOTIyOCAyOC44NjQ3IDc5LjI2NTkgMjkuMDY5N0M3OS42MDg5IDI5LjI3NTEgNzkuODY0MyAyOS41NzE0IDgwLjAzMiAyOS45NTg2QzgwLjE5OTcgMzAuMzQ2NCA4MC4yNDU2IDMwLjgzNjUgODAuMTY5MyAzMS40MjlDODAuMTA4MyAzMS45MDAxIDc5LjkyMTEgMzIuMjk5MSA3OS42MDg5IDMyLjYyNTZDNzkuMjk2MyAzMi45NTI2IDc4LjkxNDcgMzMuMjI1OSA3OC40NjUyIDMzLjQ0NjJDNzguMDE1NCAzMy42NjY4IDc3LjUzODggMzMuODQxNSA3Ny4wMzU2IDMzLjk3MDJDNzYuNTMyMSAzNC4wOTk3IDc2LjA0NzcgMzQuMTk0OSA3NS41ODI4IDM0LjI1NTNDNzUuMTE3NiAzNC4zMTYzIDc0LjcxMzcgMzQuMzU0NSA3NC4zNzA2IDM0LjM2OTJDNzQuMDI3MyAzNC4zODQ1IDczLjgwMjEgMzQuMzkyMSA3My42OTU2IDM0LjM5MjFMNzQuMTUzIDI5LjU2MDJaTTgzLjYwMDcgMzYuOTY3NkM4My4zNTY2IDM2LjQzNjEgODMuMDI4NyAzNS45Njg5IDgyLjYxNzIgMzUuNTY1OEM4Mi4yMDU0IDM1LjE2MzMgODEuNzE3IDM0Ljg3MDkgODEuMTUzMSAzNC42ODg1QzgxLjM5NjkgMzQuNDkxIDgxLjYzNzEgMzQuMTc5NSA4MS44NzM3IDMzLjc1MzlDODIuMTA5OSAzMy4zMjg4IDgyLjMxMTkgMzIuODY1IDgyLjQ3OTYgMzIuMzYzNkM4Mi42NDc0IDMxLjg2MTkgODIuNzYyIDMxLjM1NyA4Mi44MjI5IDMwLjg0NzhDODIuODgzNiAzMC4zMzg5IDgyLjg2MDcgMjkuOTAyIDgyLjc1NDQgMjkuNTM3QzgyLjQ5NDcgMjguNjI1NiA4Mi4wODcgMjcuOTExNCA4MS41MzAzIDI3LjM5NDZDODAuOTczNCAyNi44NzgyIDgwLjMyNTcgMjYuNTIxMSA3OS41ODYgMjYuMzIzM0M3OC44NDYyIDI2LjEyNjQgNzguMDMwNCAyNi4wODQyIDc3LjEzODMgMjYuMTk4MUM3Ni4yNDYyIDI2LjMxMiA3NS4zMzQ3IDI2LjUzNjEgNzQuNDA0OSAyNi44NzA0Qzc0LjQwNDkgMjYuNzk0NiA3NC40MTI0IDI2LjcxNDggNzQuNDI3OCAyNi42MzEyQzc0LjQ0MjYgMjYuNTQ4IDc0LjQ1MDQgMjYuNDYwNCA3NC40NTA0IDI2LjM2OUM3NC40NTA0IDI2LjE0MTEgNzQuMzM2MSAyNS45NDM5IDc0LjEwNzQgMjUuNzc2NUM3My44Nzg3IDI1LjYwOTMgNzMuNjE1NSAyNS41MTA3IDczLjMxODMgMjUuNDgwMUM3My4wMjA5IDI1LjQ1IDcyLjczMSAyNS41MTQyIDcyLjQ0ODkgMjUuNjczOEM3Mi4xNjY1IDI1LjgzMzQgNzEuOTcyMSAyNi4xMjY0IDcxLjg2NTYgMjYuNTUxMUM3MS43NDM0IDI3LjkxODkgNzEuNjIxNSAyOS4zMzk4IDcxLjQ5OTYgMzAuODEzNEM3MS4zNzc0IDMyLjI4NzUgNzEuMjQ4IDMzLjc3NjcgNzEuMTEwNyAzNS4yODEyQzcwLjk3MzUgMzYuNzg1NSA3MC44MzYyIDM4LjI3ODQgNzAuNjk4OSAzOS43NTk4QzcwLjU2MTYgNDEuMjQxNCA3MC40MjQ0IDQyLjY2NTkgNzAuMjg3MSA0NC4wMzMzQzcwLjMzMyA0NC40NDM2IDcwLjQ0NzMgNDQuNzYyOSA3MC42MzA0IDQ0Ljk5MDdDNzAuODEzMyA0NS4yMTg5IDcxLjAyNjggNDUuMzU1NiA3MS4yNzA5IDQ1LjQwMUM3MS41MTQ3IDQ1LjQ0NjcgNzEuNzcwNCA0NS40MDQ1IDcyLjAzNzEgNDUuMjc1NUM3Mi4zMDM4IDQ1LjE0NjkgNzIuNTM2NSA0NC45MjIyIDcyLjczNSA0NC42MDMyQzczLjM0NDcgNDQuOTM3NSA3NC4wMzExIDQ1LjE1NDEgNzQuNzkzOCA0NS4yNTNDNzUuNTU2MSA0NS4zNTE2IDc2LjMyOTggNDUuMzUxNiA3Ny4xMTU3IDQ1LjI1M0M3Ny45MDA3IDQ1LjE1NDEgNzguNjc0NyA0NC45NjgyIDc5LjQzNzQgNDQuNjk0M0M4MC4xOTk3IDQ0LjQyMTEgODAuODkzNiA0NC4wNzkgODEuNTE5IDQzLjY2OUM4Mi4xNDQxIDQzLjI1ODYgODIuNjcwMyA0Mi43OTExIDgzLjA5NzUgNDIuMjY3MUM4My41MjQ0IDQxLjc0MjYgODMuODA2NSA0MS4xNzY3IDgzLjk0MzcgNDAuNTY5MUM4NC4wODEgMzkuOTQ2IDg0LjExOSAzOS4zMjMxIDg0LjA1ODEgMzguN0M4My45OTcxIDM4LjA3NzEgODMuODQ0NSAzNy41IDgzLjYwMDcgMzYuOTY3NlpcIiBmaWxsPVwiIzBEMEMyM1wiLz5cclxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTEwNS45MTUgNDkuMDAxN0MxMDUuODMyIDQ5LjUwMzEgMTA1LjcxMyA1MC4wMzExIDEwNS41NjEgNTAuNTg2QzEwNS40MDggNTEuMTQwMyAxMDUuMjI5IDUxLjY0NTggMTA1LjAyMyA1Mi4xMDE4QzEwNC44MTggNTIuNTU3NSAxMDQuNTg5IDUyLjkyNTYgMTA0LjMzNyA1My4yMDdDMTA0LjA4NSA1My40ODggMTAzLjgxNSA1My42MDYgMTAzLjUyNSA1My41NjA2QzEwMy4yOTYgNTMuNTI5NyAxMDMuMTUxIDUzLjM4NTQgMTAzLjA5MSA1My4xMjc0QzEwMy4wMjkgNTIuODY4NiAxMDMuMDI5IDUyLjU0OTcgMTAzLjA5MSA1Mi4xN0MxMDMuMTUxIDUxLjc5MDEgMTAzLjI2OSA1MS4zNjA3IDEwMy40NDUgNTAuODgyMUMxMDMuNjIgNTAuNDAzNSAxMDMuODM0IDQ5LjkyODQgMTA0LjA4NSA0OS40NTc3QzEwNC4zMzcgNDguOTg2NCAxMDQuNjIzIDQ4LjUzNDcgMTA0Ljk0MyA0OC4xMDE1QzEwNS4yNjQgNDcuNjY4NiAxMDUuNTk5IDQ3LjMwNzUgMTA1Ljk1IDQ3LjAxODlDMTA2LjAyNiA0Ny4xMSAxMDYuMDYgNDcuMzM3OCAxMDYuMDUzIDQ3LjcwMjhDMTA2LjA0NSA0OC4wNjc0IDEwNS45OTkgNDguNTAwNiAxMDUuOTE1IDQ5LjAwMTdaTTExMy42NyAzOS4xMDk3QzExMy40NjQgMzguODgxOSAxMTMuMjEzIDM4Ljc1MjkgMTEyLjkxNSAzOC43MjIzQzExMi42MTggMzguNjkxOSAxMTIuMzE3IDM4Ljg1OSAxMTIuMDEyIDM5LjIyMzdDMTExLjgxMyAzOS41ODgzIDExMS41NjIgMzkuOTM3OSAxMTEuMjU3IDQwLjI3MjJDMTEwLjk1MiA0MC42MDY3IDExMC42MzUgNDAuOTEwMyAxMTAuMzA3IDQxLjE4MzlDMTA5Ljk4IDQxLjQ1NzIgMTA5LjY2NyA0MS42OTMxIDEwOS4zNyA0MS44OTAzQzEwOS4wNzIgNDIuMDg4MSAxMDguODQgNDIuMjMyNCAxMDguNjcyIDQyLjMyMzVDMTA4LjYxMSA0MS44Mzc0IDEwOC41NzYgNDEuMzEzMiAxMDguNTY5IDQwLjc1MDdDMTA4LjU2MSA0MC4xODg2IDEwOC41NzMgMzkuNjE5IDEwOC42MDMgMzkuMDQxNUMxMDguNjQ5IDM4LjIyMDkgMTA4Ljc0NCAzNy4zOTMgMTA4Ljg4OSAzNi41NTdDMTA5LjAzNCAzNS43MjEzIDEwOS4yNDQgMzQuOTAwNyAxMDkuNTE4IDM0LjA5NTFDMTA5LjUxOCAzMy42NyAxMDkuNDE5IDMzLjMyNDIgMTA5LjIyMSAzMy4wNTgyQzEwOS4wMjIgMzIuNzkyNCAxMDguNzgyIDMyLjYyNSAxMDguNSAzMi41NTY3QzEwOC4yMTggMzIuNDg4NSAxMDcuOTI5IDMyLjUyNjQgMTA3LjYzMSAzMi42NzA3QzEwNy4zMzQgMzIuODE1MyAxMDcuMDc4IDMzLjA3NzUgMTA2Ljg2NSAzMy40NTY5QzEwNi42ODIgMzMuOTU4NiAxMDYuNDcyIDM0LjUyMDcgMTA2LjIzNiAzNS4xNDM2QzEwNS45OTkgMzUuNzY2NyAxMDUuNzMyIDM2LjQwMTIgMTA1LjQzNSAzNy4wNDY5QzEwNS4xMzggMzcuNjkzMSAxMDQuODA2IDM4LjMxOTcgMTA0LjQ0IDM4LjkyNzNDMTA0LjA3NCAzOS41MzU0IDEwMy42NzQgNDAuMDc1IDEwMy4yMzkgNDAuNTQ1N0MxMDIuODA0IDQxLjAxNjggMTAyLjMzMSA0MS4zODU0IDEwMS44MjEgNDEuNjUxMkMxMDEuMzEgNDEuOTE3MiAxMDAuNzU3IDQyLjAzNDkgMTAwLjE2MiA0Mi4wMDQ1Qzk5Ljg4NzYgNDEuOTI4NSA5OS42ODkzIDQxLjcyMzUgOTkuNTY3NSA0MS4zODg5Qzk5LjQ0NTMgNDEuMDU0OSA5OS4zNzMgNDAuNjM2OCA5OS4zNTA0IDQwLjEzNTRDOTkuMzI3NSAzOS42MzQgOTkuMzUwNCAzOS4wODMxIDk5LjQxODkgMzguNDgyOEM5OS40ODc3IDM3Ljg4MjggOTkuNTc5MSAzNy4yODYzIDk5LjY5MzQgMzYuNjkzOEM5OS44MDc4IDM2LjEwMSA5OS45MzM3IDM1LjUzODkgMTAwLjA3MSAzNS4wMDcxQzEwMC4yMDggMzQuNDc1MyAxMDAuMzM3IDM0LjAyNjggMTAwLjQ2IDMzLjY2MjJDMTAwLjY0MyAzMy4yMjE4IDEwMC42NDMgMzIuODUyOSAxMDAuNDYgMzIuNTU2N0MxMDAuMjc3IDMyLjI2MDQgMTAwLjAyNSAzMi4wNjMxIDk5LjcwNSAzMS45NjRDOTkuMzg0NiAzMS44NjU0IDk5LjA0ODkgMzEuODY5NCA5OC42OTgzIDMxLjk3NTVDOTguMzQ3NCAzMi4wODE5IDk4LjA5NTggMzIuMzE3MyA5Ny45NDM1IDMyLjY4MkM5Ny42ODQgMzMuMzA1NCA5Ny40NDc1IDM0LjAwNCA5Ny4yMzQyIDM0Ljc3OUM5Ny4wMjA2IDM1LjU1MzkgOTYuODQ5MSAzNi4zNTU4IDk2LjcxOTcgMzcuMTgzNkM5Ni41ODk2IDM4LjAxMjEgOTYuNTE3MSAzOC44MzI3IDk2LjUwMiAzOS42NDU2Qzk2LjUwMTEgMzkuNjk4NSA5Ni41MDM3IDM5Ljc0ODggOTYuNTAzNCAzOS44MDE0Qzk2LjE3MDkgNDAuNjg0OCA5NS44NTQgNDEuMzUyNSA5NS41NTMgNDEuNzk5MkM5NS4xNjQxIDQyLjM3NyA5NC43MjUzIDQyLjYyNzcgOTQuMjM3NSA0Mi41NTEzQzk0LjAyMzYgNDIuNDYwMyA5My44ODMyIDQyLjI0NzcgOTMuODE0NyA0MS45MTMyQzkzLjc0NTMgNDEuNTc5MiA5My43MjI3IDQxLjE2ODkgOTMuNzQ1MyA0MC42ODIyQzkzLjc2ODggNDAuMTk2NCA5My44MjYgMzkuNjQ1NiA5My45MTcxIDM5LjAyOTlDOTQuMDA5MSAzOC40MTQ2IDk0LjEyMjkgMzcuNzc2NCA5NC4yNjAxIDM3LjExNTRDOTQuMzk3NyAzNi40NTQxIDk0LjU0MjUgMzUuNzg5OSA5NC42OTQ5IDM1LjEyMUM5NC44NDcyIDM0LjQ1MjUgOTQuOTg0NSAzMy44MjE4IDk1LjEwNyAzMy4yMjkxQzk1LjA5MTYgMzIuNjk3MyA5NC45MzUyIDMyLjI5MSA5NC42Mzc3IDMyLjAwOTdDOTQuMzQwNSAzMS43Mjg5IDkzLjkyNDcgMzEuNjE4NyA5My4zOTEzIDMxLjY3OTFDOTMuMDI1MyAzMS44MzEyIDkyLjc1NDIgMzIuMDI5IDkyLjU3OSAzMi4yNzE5QzkyLjQwMzQgMzIuNTE0OCA5Mi4yNjIzIDMyLjgyNjUgOTIuMTU1OCAzMy4yMDYyQzkyLjA5NDYgMzMuNDA0IDkyLjAwMzIgMzMuNzk5IDkxLjg4MTMgMzQuMzkxOEM5MS43NTkxIDM0Ljk4NCA5MS42MDMgMzUuNjY0NCA5MS40MTIzIDM2LjQzMTVDOTEuMjIxNyAzNy4xOTkyIDkwLjk5NjcgMzguMDAwNSA5MC43Mzc2IDM4LjgzNjJDOTAuNDc4MSAzOS42NzE5IDkwLjE4ODUgNDAuNDI4MyA4OS44Njg0IDQxLjEwNDFDODkuNTQ4IDQxLjc4MDEgODkuMTk3MiA0Mi4zMjM1IDg4LjgxNjEgNDIuNzMzOEM4OC40MzQ4IDQzLjE0MzggODguMDIzIDQzLjMxMTMgODcuNTgwNyA0My4yMzUyQzg3LjMzNjYgNDMuMTg5NSA4Ny4xODA1IDQyLjkzODggODcuMTEyIDQyLjQ4MzFDODcuMDQzMiA0Mi4wMjcxIDg3LjAzMTkgNDEuNDY1MyA4Ny4wNzc1IDQwLjc5NjRDODcuMTIzMyA0MC4xMjc5IDg3LjIxNDggMzkuMzk0NiA4Ny4zNTIgMzguNTk3MUM4Ny40ODkzIDM3Ljc5OTMgODcuNjMgMzcuMDQzNCA4Ny43NzUyIDM2LjMyODlDODcuOTIgMzUuNjE0OSA4OC4wNTM1IDM0Ljk4NCA4OC4xNzU2IDM0LjQzNzJDODguMjk3NSAzMy44OTAxIDg4LjM4MTQgMzMuNTI1NCA4OC40MjcyIDMzLjM0MzNDODguNDI3MiAzMi45MDI2IDg4LjMyNzcgMzIuNTQ5NSA4OC4xMjk4IDMyLjI4MzJDODcuOTMxMyAzMi4wMTc4IDg3LjY5MTMgMzEuODUwMyA4Ny40MDkyIDMxLjc4MThDODcuMTI2OCAzMS43MTM2IDg2LjgzNzIgMzEuNzUxNCA4Ni41NCAzMS44OTU3Qzg2LjI0MjYgMzIuMDQwMyA4NS45ODcyIDMyLjMwMjYgODUuNzczNiAzMi42ODJDODUuNjk3MyAzMy4wOTIzIDg1LjU5OCAzMy41Njc0IDg1LjQ3NjEgMzQuMTA2N0M4NS4zNTM5IDM0LjY0NTkgODUuMjM2MSAzNS4yMDA2IDg1LjEyMTggMzUuNzcwNUM4NS4wMDc0IDM2LjM0MDQgODQuOTAwMyAzNi44OTg4IDg0LjgwMTQgMzcuNDQ1OUM4NC43MDIxIDM3Ljk5MyA4NC42Mjk5IDM4LjQ3MTYgODQuNTg0IDM4Ljg4MTlDODQuNTUzNiAzOS4yMDA4IDg0LjUxOSAzOS41OTIzIDg0LjQ4MTMgNDAuMDU1NkM4NC40NDMgNDAuNTE5NCA4NC40MjM4IDQxLjAwOTIgODQuNDIzOCA0MS41MjU3Qzg0LjQyMzggNDIuMDQyNyA4NC40NjE4IDQyLjU1NTQgODQuNTM4NSA0My4wNjQzQzg0LjYxNDUgNDMuNTczNSA4NC43NTE4IDQ0LjA0MDggODQuOTUgNDQuNDY1OUM4NS4xNDgyIDQ0Ljg5MTUgODUuNDI2NSA0NS4yNDA4IDg1Ljc4NTIgNDUuNTE0NEM4Ni4xNDMzIDQ1Ljc4NzkgODYuNTk3MiA0NS45Mzk3IDg3LjE0NjMgNDUuOTcwNEM4Ny43MTAxIDQ2LjAwMDUgODguMjAyIDQ1Ljk1OTEgODguNjIxNyA0NS44NDQ5Qzg5LjA0MSA0NS43MzEgODkuNDIyMSA0NS41NTIzIDg5Ljc2NTQgNDUuMzA5MUM5MC4xMDg0IDQ1LjA2NjUgOTAuNDIxIDQ0Ljc3NzYgOTAuNzAzMyA0NC40NDNDOTAuOTg1MSA0NC4xMDkxIDkxLjI2MzcgNDMuNzQ0NCA5MS41MzgzIDQzLjM0OTFDOTEuNzk3NCA0My45MjY5IDkyLjEzMjkgNDQuMzc0OCA5Mi41NDQ3IDQ0LjY5NEM5Mi45NTY1IDQ1LjAxMyA5My4zOTEzIDQ1LjIwMzIgOTMuODQ4NiA0NS4yNjM3Qzk0LjMwNiA0NS4zMjQxIDk0Ljc3MTUgNDUuMjYwMiA5NS4yNDQyIDQ1LjA2OTlDOTUuNzE2NyA0NC44ODAzIDk2LjE0MzYgNDQuNTU3MyA5Ni41MjUyIDQ0LjEwMTJDOTYuNzc2MiA0My44MjE2IDk3LjAxMzEgNDMuNTAzOCA5Ny4yMzU0IDQzLjE1MjVDOTcuMzI5NyA0My4zMTcgOTcuNDMwMSA0My40NzU4IDk3LjU0MyA0My42MjI0Qzk3LjkxNjggNDQuMTA5MSA5OC40MjQgNDQuNDQzIDk5LjA2NDUgNDQuNjI1NUM5OS43NTA2IDQ0LjgwOCAxMDAuNDIxIDQ0LjgzODYgMTAxLjA3NyA0NC43MTY5QzEwMS43MzMgNDQuNTk1NCAxMDIuMzU4IDQ0LjM3NDggMTAyLjk1MyA0NC4wNTU5QzEwMy41NDggNDMuNzM2NiAxMDQuMTAxIDQzLjM1MzIgMTA0LjYxMiA0Mi45MDQ3QzEwNS4xMjIgNDIuNDU2NSAxMDUuNTY4IDQxLjk4OTUgMTA1Ljk1IDQxLjUwMjhDMTA1LjkzNCA0MS44NTI0IDEwNS45MjcgNDIuMTgzMiAxMDUuOTI3IDQyLjQ5NDRDMTA1LjkyNyA0Mi44MDYxIDEwNS45MTkgNDMuMTQzOCAxMDUuOTA0IDQzLjUwODhDMTA1LjE0MSA0NC4wNDA4IDEwNC40MjEgNDQuNjc5IDEwMy43NDIgNDUuNDIzM0MxMDMuMDY0IDQ2LjE2NzYgMTAyLjQ2OSA0Ni45NjE2IDEwMS45NTggNDcuODA1MUMxMDEuNDQ3IDQ4LjY0ODMgMTAxLjA0NyA0OS41MDMxIDEwMC43NTcgNTAuMzY5MUMxMDAuNDY3IDUxLjIzNTcgMTAwLjMyNiA1Mi4wNDQ1IDEwMC4zMzQgNTIuNzk2OUMxMDAuMzQxIDUzLjU0OSAxMDAuNTIxIDU0LjIwNiAxMDAuODcxIDU0Ljc2ODFDMTAxLjIyMiA1NS4zMzA2IDEwMS43OTQgNTUuNzMzMSAxMDIuNTg3IDU1Ljk3NjNDMTAzLjQxMSA1Ni4yMzQ4IDEwNC4xMzUgNTYuMjQyIDEwNC43NiA1NS45OTkxQzEwNS4zODYgNTUuNzU1OSAxMDUuOTMxIDU1LjM1MzEgMTA2LjM5NiA1NC43OTFDMTA2Ljg2MSA1NC4yMjg5IDEwNy4yNDIgNTMuNTQ5IDEwNy41NCA1Mi43NTEyQzEwNy44MzcgNTEuOTUzNCAxMDguMDczIDUxLjEyMTUgMTA4LjI0OSA1MC4yNTU1QzEwOC40MjQgNDkuMzg5NCAxMDguNTM1IDQ4LjUzNzkgMTA4LjU4IDQ3LjcwMjhDMTA4LjYyNiA0Ni44NjY4IDEwOC42MjYgNDYuMTIxOSAxMDguNTggNDUuNDY4N0MxMDkuODkyIDQ0LjkyMTkgMTEwLjk2NyA0NC4yMzA1IDExMS44MDYgNDMuMzk0NUMxMTIuNjQ1IDQyLjU1OTQgMTEzLjMzOCA0MS42Nzc4IDExMy44ODcgNDAuNzUwN0MxMTQuMDU1IDQwLjUyMjkgMTE0LjExMiA0MC4yNDkzIDExNC4wNTkgMzkuOTMwNEMxMTQuMDA2IDM5LjYxMTEgMTEzLjg3NiAzOS4zMzc2IDExMy42NyAzOS4xMDk3WlwiIGZpbGw9XCIjMEQwQzIzXCIvPlxyXG48cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTQyLjUzIDM3LjY1MTVDMTQyLjU3NSAzNy4zMDIyIDE0Mi42NDQgMzYuOTMzNSAxNDIuNzM1IDM2LjU0NkMxNDIuODI3IDM2LjE1ODUgMTQyLjk0MSAzNS43ODIzIDE0My4wNzkgMzUuNDE3N0MxNDMuMjE2IDM1LjA1MzEgMTQzLjM3NiAzNC43Mzc5IDE0My41NTkgMzQuNDcxOEMxNDMuNzQyIDM0LjIwNjEgMTQzLjkzNyAzNC4wMTYxIDE0NC4xNDIgMzMuOTAxOUMxNDQuMzQ4IDMzLjc4ODMgMTQ0LjU1OCAzMy43OTk1IDE0NC43NzEgMzMuOTM2QzE0NSAzNC4wNzMxIDE0NS4xNDEgMzQuMzYxNyAxNDUuMTk1IDM0LjgwMjFDMTQ1LjI0OCAzNS4yNDMzIDE0NS4xOTUgMzUuNzE0MSAxNDUuMDM0IDM2LjIxNTVDMTQ0Ljg3NCAzNi43MTcyIDE0NC41ODggMzcuMTg3OSAxNDQuMTc3IDM3LjYyODZDMTQzLjc2NSAzOC4wNjk2IDE0My4yMDggMzguMzU3OSAxNDIuNTA3IDM4LjQ5NDdDMTQyLjQ3NiAzOC4yODI0IDE0Mi40ODQgMzguMDAxMSAxNDIuNTMgMzcuNjUxNVpNMTUwLjQ1NiAzOC41ODU3QzE1MC4yMDQgMzguNTEwMyAxNDkuOTY0IDM4LjUwMjUgMTQ5LjczNSAzOC41NjMyQzE0OS41MDYgMzguNjIzOSAxNDkuMzYxIDM4Ljc4MzUgMTQ5LjMwMSAzOS4wNDJDMTQ5LjE3OCAzOS41MjgxIDE0OC45ODQgNDAuMDI1OCAxNDguNzE3IDQwLjUzNDdDMTQ4LjQ1IDQxLjA0MzkgMTQ4LjEyMiA0MS41MjYyIDE0Ny43MzQgNDEuOTgyMkMxNDcuMzQ1IDQyLjQzOCAxNDYuOTA2IDQyLjg0MDggMTQ2LjQxOCA0My4xOTAxQzE0NS45MyA0My41Mzk3IDE0NS40MTkgNDMuNzkwNCAxNDQuODg2IDQzLjk0MjJDMTQ0LjM1MSA0NC4xMDk2IDE0My45MSA0NC4xMjg0IDE0My41NTkgNDMuOTk5MUMxNDMuMjA4IDQzLjg3MDUgMTQyLjkzIDQzLjY0OTggMTQyLjcyNCA0My4zMzg0QzE0Mi41MTggNDMuMDI3IDE0Mi4zNjkgNDIuNjUwOCAxNDIuMjc4IDQyLjIxMDFDMTQyLjE4NiA0MS43Njk0IDE0Mi4xMzMgNDEuMzEzNyAxNDIuMTE4IDQwLjg0MjRDMTQyLjk4NyA0MC45MDM0IDE0My43NjEgNDAuNzQ3OCAxNDQuNDQgNDAuMzc1MUMxNDUuMTE4IDQwLjAwMzIgMTQ1LjY5NCAzOS41MDkgMTQ2LjE2NyAzOC44OTM3QzE0Ni42MzkgMzguMjc4NCAxNDYuOTk4IDM3LjU4NyAxNDcuMjQyIDM2LjgxOTVDMTQ3LjQ4NSAzNi4wNTI0IDE0Ny42MjMgMzUuMjg4NyAxNDcuNjUzIDM0LjUyODhDMTQ3LjY2OSAzMy44MTQ2IDE0Ny41NjIgMzMuMjEwOCAxNDcuMzMzIDMyLjcxNjlDMTQ3LjEwNSAzMi4yMjMzIDE0Ni43OTYgMzEuODM5IDE0Ni40MDcgMzEuNTY1OEMxNDYuMDE4IDMxLjI5MjIgMTQ1LjU3MiAzMS4xMzI2IDE0NS4wNjkgMzEuMDg3MkMxNDQuNTY2IDMxLjA0MTUgMTQ0LjA1NCAzMS4xMSAxNDMuNTM2IDMxLjI5MjJDMTQyLjkxIDMxLjUwNSAxNDIuMzgxIDMxLjg1MDYgMTQxLjk0NiAzMi4zMjk0QzE0MS41MTIgMzIuODA4IDE0MS4xNDkgMzMuMzYyOSAxNDAuODYgMzMuOTkzM0MxNDAuNTcgMzQuNjIzOSAxNDAuMzQxIDM1LjMwMzggMTQwLjE3MyAzNi4wMzNDMTQwLjAwNSAzNi43NjI2IDEzOS44ODMgMzcuNDgwNiAxMzkuODA3IDM4LjE4NzNDMTM5LjczOSAzOC44MjE0IDEzOS43MDIgMzkuNDI3OCAxMzkuNjg5IDQwLjAxM0MxMzkuNjU3IDQwLjA4NzQgMTM5LjYyNSA0MC4xNTg4IDEzOS41OSA0MC4yMzgzQzEzOS4zNTQgNDAuNzc4MiAxMzkuMDc5IDQxLjMwNjIgMTM4Ljc2NiA0MS44MjI2QzEzOC40NTQgNDIuMzM5NCAxMzguMTA3IDQyLjc3MjUgMTM3LjcyNiA0My4xMjE4QzEzNy4zNDQgNDMuNDcxNCAxMzYuOTQ4IDQzLjU5MjkgMTM2LjUzNiA0My40ODY1QzEzNi4yOTIgNDMuNDI2IDEzNi4xNTkgNDMuMTQ0NCAxMzYuMTM2IDQyLjY0MzNDMTM2LjExMyA0Mi4xNDE2IDEzNi4xMzkgNDEuNTE4NyAxMzYuMjE2IDQwLjc3NDFDMTM2LjI5MiA0MC4wMjk4IDEzNi4zOCAzOS4yMjM5IDEzNi40NzkgMzguMzU3OUMxMzYuNTc4IDM3LjQ5MTggMTM2LjYyOCAzNi42NjQgMTM2LjYyOCAzNS44NzM3QzEzNi42MjggMzUuMTg5OCAxMzYuNDk4IDM0LjUzMjkgMTM2LjIzOSAzMy45MDE5QzEzNS45NzkgMzMuMjcxOCAxMzUuNjI1IDMyLjc0NzMgMTM1LjE3NSAzMi4zMjk0QzEzNC43MjUgMzEuOTExMyAxMzQuMjAzIDMxLjYzNCAxMzMuNjA4IDMxLjQ5NzVDMTMzLjAxMyAzMS4zNjA1IDEzMi4zNzMgMzEuNDUxOCAxMzEuNjg3IDMxLjc3MDhDMTMxIDMyLjA5IDEzMC40NTUgMzIuNTM4MiAxMzAuMDUxIDMzLjExNTdDMTI5LjY0NyAzMy42OTM0IDEyOS4yNzcgMzQuMzAwOSAxMjguOTQyIDM0LjkzOTFDMTI4LjgxOSAzNC40NTI4IDEyOC42NDEgMzQuMDAxMSAxMjguNDA0IDMzLjU4M0MxMjguMTY3IDMzLjE2NTEgMTI3Ljg3OCAzMi44MDA1IDEyNy41MzUgMzIuNDg4OEMxMjcuMTkxIDMyLjE3NzYgMTI2LjgwNiAzMS45MzQ0IDEyNi4zOCAzMS43NTk1QzEyNS45NTMgMzEuNTg1MSAxMjUuNTAyIDMxLjQ5NzUgMTI1LjAzIDMxLjQ5NzVDMTI0LjU3MiAzMS40OTc1IDEyNC4xNDkgMzEuNTg1MSAxMjMuNzYgMzEuNzU5NUMxMjMuMzcxIDMxLjkzNDQgMTIzLjAxNyAzMi4xNTgzIDEyMi42OTYgMzIuNDMxOEMxMjIuMzc2IDMyLjcwNTYgMTIyLjA4NyAzMy4wMTMgMTIxLjgyNyAzMy4zNTUxQzEyMS41NjggMzMuNjk2OSAxMjEuMzM5IDM0LjAzNTIgMTIxLjE0MSAzNC4zNjkyQzEyMS4xMSAzMy45NzQyIDEyMS4wNzYgMzMuNjI4NiAxMjEuMDM4IDMzLjMzMkMxMjEgMzMuMDM1OSAxMjAuOTMxIDMyLjc4NTIgMTIwLjgzMiAzMi41ODAxQzEyMC43MzMgMzIuMzc0OCAxMjAuNTkyIDMyLjIxOTMgMTIwLjQwOSAzMi4xMTI5QzEyMC4yMjYgMzIuMDA2NyAxMTkuOTY3IDMxLjk1MzIgMTE5LjYzMiAzMS45NTMyQzExOS40NjQgMzEuOTUzMiAxMTkuMjk2IDMxLjk4NzQgMTE5LjEyOCAzMi4wNTU2QzExOC45NiAzMi4xMjQxIDExOC44MTEgMzIuMjE5MyAxMTguNjgyIDMyLjM0MDdDMTE4LjU1MiAzMi40NjI3IDExOC40NTMgMzIuNjEwNSAxMTguMzg1IDMyLjc4NTJDMTE4LjMxNiAzMi45NTk4IDExOC4yOTcgMzMuMTYxNCAxMTguMzI3IDMzLjM4OTJDMTE4LjM0MiAzMy41NTY2IDExOC4zODUgMzMuNzU3NiAxMTguNDUzIDMzLjk5MzNDMTE4LjUyMiAzNC4yMjg5IDExOC41ODcgMzQuNTM2OSAxMTguNjQ4IDM0LjkxNjNDMTE4LjcwOCAzNS4yOTYyIDExOC43NTggMzUuNzU2IDExOC43OTYgMzYuMjk1M0MxMTguODM0IDM2LjgzNDkgMTE4Ljg0NiAzNy40OTU5IDExOC44MzEgMzguMjc4NEMxMTguODE1IDM5LjA2MTEgMTE4Ljc1OCAzOS45NzYzIDExOC42NTkgNDEuMDI0OEMxMTguNTYgNDIuMDczMyAxMTguNDAzIDQzLjI4OSAxMTguMTkgNDQuNjcxNEMxMTguMTYgNDQuOTkwNyAxMTguMjgyIDQ1LjI0OTIgMTE4LjU1NiA0NS40NDY3QzExOC44MzEgNDUuNjQzOSAxMTkuMTQzIDQ1Ljc1NzggMTE5LjQ5NCA0NS43ODg1QzExOS44NDUgNDUuODE4OCAxMjAuMTc3IDQ1Ljc1NzggMTIwLjQ4OSA0NS42MDYzQzEyMC44MDIgNDUuNDUzOSAxMjAuOTgxIDQ1LjE4ODIgMTIxLjAyNyA0NC44MDg1QzEyMS4wNzIgNDQuMDk0MyAxMjEuMTYgNDMuMzM0NyAxMjEuMjkgNDIuNTI5QzEyMS40MTkgNDEuNzI0IDEyMS41NzkgNDAuOTI2MiAxMjEuNzcgNDAuMTM1OUMxMjEuOTYxIDM5LjM0NiAxMjIuMTc4IDM4LjU5MzggMTIyLjQyMiAzNy44NzkzQzEyMi42NjYgMzcuMTY1MSAxMjIuOTM3IDM2LjUzNDcgMTIzLjIzNCAzNS45ODc2QzEyMy41MzIgMzUuNDQwNSAxMjMuODQgMzUuMDAzOSAxMjQuMTYxIDM0LjY3NzFDMTI0LjQ4MSAzNC4zNTA0IDEyNC44MTYgMzQuMTg3IDEyNS4xNjcgMzQuMTg3QzEyNS41OTQgMzQuMTg3IDEyNS45MjYgMzQuMzgwNSAxMjYuMTYyIDM0Ljc2NzlDMTI2LjM5OCAzNS4xNTU3IDEyNi41NjYgMzUuNjUzNiAxMjYuNjY2IDM2LjI2MDlDMTI2Ljc2NSAzNi44NjkgMTI2LjgxIDM3LjUzNDEgMTI2LjgwMyAzOC4yNTU1QzEyNi43OTUgMzguOTc3MyAxMjYuNzY1IDM5LjY3MjQgMTI2LjcxMSA0MC4zNDFDMTI2LjY1OCA0MS4wMDk4IDEyNi41OTcgNDEuNjA2IDEyNi41MjggNDIuMTMwM0MxMjYuNDYgNDIuNjU0NSAxMjYuNDEgNDMuMDE1NyAxMjYuMzggNDMuMjEyOUMxMjYuMzggNDMuNTYyNSAxMjYuNTEzIDQzLjgzOTUgMTI2Ljc4IDQ0LjA0NDhDMTI3LjA0NiA0NC4yNDk4IDEyNy4zNDQgNDQuMzcxNiAxMjcuNjcyIDQ0LjQwOTVDMTI4IDQ0LjQ0NzYgMTI4LjMwOSA0NC4zODY2IDEyOC41OTggNDQuMjI3QzEyOC44ODggNDQuMDY3NCAxMjkuMDU2IDQzLjc5ODIgMTI5LjEwMiA0My40MTc5QzEyOS4yNTQgNDIuMzI0IDEyOS40NjQgNDEuMjI2NCAxMjkuNzMxIDQwLjEyNDdDMTI5Ljk5NyAzOS4wMjMgMTMwLjMwMyAzOC4wMzU1IDEzMC42NDYgMzcuMTYxNkMxMzAuOTg5IDM2LjI4NzggMTMxLjM3IDM1LjU3MzUgMTMxLjc5IDM1LjAxODlDMTMyLjIwOSAzNC40NjQ2IDEzMi42NTUgMzQuMTg3IDEzMy4xMjggMzQuMTg3QzEzMy4zNzEgMzQuMTg3IDEzMy41NTkgMzQuMzU0NCAxMzMuNjg4IDM0LjY4ODRDMTMzLjgxOCAzNS4wMjI3IDEzMy44ODMgMzUuNDc4NCAxMzMuODgzIDM2LjA1NTlDMTMzLjg4MyAzNi40ODE1IDEzMy44NDggMzYuOTE4NCAxMzMuNzggMzcuMzY2NkMxMzMuNzExIDM3LjgxNDggMTMzLjYzMSAzOC4yNzg0IDEzMy41NCAzOC43NTY5QzEzMy40NDggMzkuMjM1OCAxMzMuMzY4IDM5LjcyNTYgMTMzLjI5OSA0MC4yMjdDMTMzLjIzMSA0MC43Mjg3IDEzMy4xOTYgNDEuMjUyNyAxMzMuMTk2IDQxLjc5OThDMTMzLjE5NiA0Mi4xNzk3IDEzMy4yMzUgNDIuNjIwNCAxMzMuMzExIDQzLjEyMThDMTMzLjM4NyA0My42MjI5IDEzMy41MzIgNDQuMDk4MyAxMzMuNzQ1IDQ0LjU0NjJDMTMzLjk1OSA0NC45OTQ3IDEzNC4yNTIgNDUuMzc0NCAxMzQuNjI2IDQ1LjY4NThDMTM1IDQ1Ljk5NzMgMTM1LjQ3NiA0Ni4xNTMxIDEzNi4wNTYgNDYuMTUzMUMxMzYuOTI1IDQ2LjE1MzEgMTM3LjY5NSA0NS45NjY5IDEzOC4zNjYgNDUuNTk0N0MxMzkuMDM3IDQ1LjIyMjYgMTM5LjYxMyA0NC43MzY1IDE0MC4wOTMgNDQuMTM2MkMxNDAuMTE4IDQ0LjEwNDcgMTQwLjE0MSA0NC4wNzExIDE0MC4xNjUgNDQuMDM5OUMxNDAuMjAyIDQ0LjEyODcgMTQwLjIzNSA0NC4yMjI3IDE0MC4yNzYgNDQuMzA3MUMxNDAuNjA0IDQ0Ljk3NTYgMTQxLjA1IDQ1LjQ5MjEgMTQxLjYxNSA0NS44NTdDMTQyLjE3OCA0Ni4yMjE2IDE0Mi44NDIgNDYuNDIyOSAxNDMuNjA1IDQ2LjQ2MTFDMTQ0LjM2NyA0Ni40OTg3IDE0NS4xOTggNDYuMzU4MSAxNDYuMDk4IDQ2LjAzOTJDMTQ2Ljc2OSA0NS43OTYgMTQ3LjM1MiA0NS40OTIxIDE0Ny44NDggNDUuMTI3NUMxNDguMzQzIDQ0Ljc2MjggMTQ4Ljc4OSA0NC4zMTg0IDE0OS4xODYgNDMuNzk0MUMxNDkuNTgzIDQzLjI2OTkgMTQ5Ljk0NSA0Mi42NjU4IDE1MC4yNzMgNDEuOTgyMkMxNTAuNjAxIDQxLjI5ODEgMTUwLjkzMiA0MC41MTU5IDE1MS4yNjggMzkuNjM0MkMxNTEuMzI5IDM5LjM5MTYgMTUxLjI3MiAzOS4xNzUxIDE1MS4wOTcgMzguOTg0OEMxNTAuOTIxIDM4Ljc5NTEgMTUwLjcwOCAzOC42NjIxIDE1MC40NTYgMzguNTg1N1pcIiBmaWxsPVwiIzBEMEMyM1wiLz5cclxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE2Mi44ODcgMzYuMDQzNEMxNjIuODEgMzYuNDkxOCAxNjIuNzA3IDM2Ljk4NiAxNjIuNTc4IDM3LjUyNUMxNjIuNDQ4IDM4LjA2NDYgMTYyLjI4NCAzOC42MjMgMTYyLjA4NiAzOS4yMDA0QzE2MS44ODggMzkuNzc3OSAxNjEuNjQ0IDQwLjI5ODQgMTYxLjM1NCA0MC43NjE2QzE2MS4wNjQgNDEuMjI1NCAxNjAuNzMzIDQxLjU5MzUgMTYwLjM1OSA0MS44NjcxQzE1OS45ODUgNDIuMTQwNiAxNTkuNTU1IDQyLjI1NDYgMTU5LjA2NiA0Mi4yMDg5QzE1OC44MjIgNDIuMTc4OCAxNTguNjM1IDQyLjAxMTcgMTU4LjUwNiA0MS43MDc1QzE1OC4zNzYgNDEuNDAzOCAxNTguMzA4IDQxLjAxNjEgMTU4LjMgNDAuNTQ1QzE1OC4yOTIgNDAuMDc0MyAxNTguMzM0IDM5LjU1NzUgMTU4LjQyNiAzOC45OTUxQzE1OC41MTcgMzguNDMzMyAxNTguNjU4IDM3Ljg4MjEgMTU4Ljg0OSAzNy4zNDI2QzE1OS4wNCAzNi44MDM2IDE1OS4yNzIgMzYuMzA1NiAxNTkuNTQ3IDM1Ljg0OTZDMTU5LjgyMSAzNS4zOTM5IDE2MC4xMzggMzUuMDQwNSAxNjAuNDk2IDM0Ljc4OThDMTYwLjg1NCAzNC41MzkxIDE2MS4yNDcgMzQuNDIxNyAxNjEuNjc0IDM0LjQzNjVDMTYyLjEwMSAzNC40NTE4IDE2Mi41NTkgMzQuNjY0MyAxNjMuMDQ3IDM1LjA3NDdDMTYzLjAxNiAzNS4yNzI1IDE2Mi45NjMgMzUuNTk1NCAxNjIuODg3IDM2LjA0MzRaTTE3MS4wMTkgMzcuNzg3QzE3MC43ODIgMzcuNjY1NiAxNzAuNTM4IDM3LjYzOTIgMTcwLjI4NyAzNy43MDc1QzE3MC4wMzUgMzcuNzc1NyAxNjkuODU2IDM4LjAwNzYgMTY5Ljc0OSAzOC40MDI2QzE2OS42ODggMzguODI4MyAxNjkuNTUxIDM5LjMyOTQgMTY5LjMzOCAzOS45MDY5QzE2OS4xMjQgNDAuNDg0MyAxNjguODYxIDQxLjAzMTcgMTY4LjU0OCA0MS41NDc4QzE2OC4yMzYgNDIuMDY0NiAxNjcuODc3IDQyLjQ5NCAxNjcuNDczIDQyLjgzNThDMTY3LjA2OSA0My4xNzc4IDE2Ni42MzggNDMuMzMzNyAxNjYuMTgxIDQzLjMwMjhDMTY1Ljc5OSA0My4yNzI3IDE2NS41MzIgNDMuMDc5IDE2NS4zOCA0Mi43MjE4QzE2NS4yMjcgNDIuMzY0NyAxNjUuMTQ3IDQxLjkxNjggMTY1LjE0IDQxLjM3NjlDMTY1LjEzMiA0MC44MzggMTY1LjE4NiA0MC4yMzAxIDE2NS4zIDM5LjU1MzhDMTY1LjQxNCAzOC44Nzc3IDE2NS41NTIgMzguMjA1NCAxNjUuNzEyIDM3LjUzNjNDMTY1Ljg3MiAzNi44NjggMTY2LjAzNiAzNi4yMjU4IDE2Ni4yMDQgMzUuNjEwNUMxNjYuMzcxIDM0Ljk5NTEgMTY2LjUwOCAzNC40NzQ3IDE2Ni42MTYgMzQuMDQ5M0MxNjYuNzM4IDMzLjY2OTMgMTY2LjY5OSAzMy4zNDY2IDE2Ni41MDEgMzMuMDgwM0MxNjYuMzAzIDMyLjgxNDkgMTY2LjA1NSAzMi42MjQ2IDE2NS43NTggMzIuNTEwN0MxNjUuNDYgMzIuMzk2NyAxNjUuMTU5IDMyLjM2NjQgMTY0Ljg1NCAzMi40MTk2QzE2NC41NDkgMzIuNDcyOCAxNjQuMzUxIDMyLjYzNjIgMTY0LjI1OSAzMi45MDk0QzE2My4zNTkgMzIuMTM0NSAxNjIuNDk0IDMxLjcxNjYgMTYxLjY2MyAzMS42NTU5QzE2MC44MzEgMzEuNTk1MiAxNjAuMDY1IDMxLjc3NzYgMTU5LjM2NCAzMi4yMDNDMTU4LjY2MiAzMi42Mjg0IDE1OC4wNDEgMzMuMjQzNyAxNTcuNSAzNC4wNDkzQzE1Ni45NTggMzQuODU0OSAxNTYuNTIgMzUuNzMyMiAxNTYuMTg0IDM2LjY4MThDMTU1Ljg0OSAzNy42MzE0IDE1NS42MzkgMzguNjAwNCAxNTUuNTU1IDM5LjU4NzlDMTU1LjQ3MSA0MC41NzU3IDE1NS41MzYgNDEuNDc2MSAxNTUuNzUgNDIuMjg5QzE1NS45NjMgNDMuMTAxOCAxNTYuMzQgNDMuNzY2OSAxNTYuODgyIDQ0LjI4M0MxNTcuNDIzIDQ0Ljc5OTggMTU4LjE1OSA0NS4wNTgzIDE1OS4wODkgNDUuMDU4M0MxNTkuNTAxIDQ1LjA1ODMgMTU5Ljg5OCA0NC45NzQ3IDE2MC4yNzkgNDQuODA3NkMxNjAuNjYgNDQuNjQwMSAxNjEuMDExIDQ0LjQ0MjYgMTYxLjMzMSA0NC4yMTQ4QzE2MS42NTEgNDMuOTg2OSAxNjEuOTMzIDQzLjc0NzUgMTYyLjE3OCA0My40OTY4QzE2Mi40MjEgNDMuMjQ2MSAxNjIuNjEyIDQzLjAzNzMgMTYyLjc0OSA0Mi44Njk5QzE2Mi44NTYgNDMuNDE3IDE2My4wMzIgNDMuODgwOCAxNjMuMjc2IDQ0LjI2MDVDMTYzLjUxOSA0NC42NDAxIDE2My43OTggNDQuOTUyMSAxNjQuMTExIDQ1LjE5NDhDMTY0LjQyMyA0NS40Mzc2IDE2NC43NTEgNDUuNjE2NCAxNjUuMDk0IDQ1LjczMDZDMTY1LjQzNyA0NS44NDQ1IDE2NS43NjkgNDUuOTAxNSAxNjYuMDg5IDQ1LjkwMTVDMTY2LjgwNiA0NS45MDE1IDE2Ny40NzcgNDUuNjU4MyAxNjguMTAyIDQ1LjE3MTlDMTY4LjcyNyA0NC42ODYxIDE2OS4yODggNDQuMDg5MyAxNjkuNzg0IDQzLjM4MjlDMTcwLjI3OSA0Mi42NzYyIDE3MC42ODcgNDEuOTMxOSAxNzEuMDA3IDQxLjE0OTFDMTcxLjMyOCA0MC4zNjY2IDE3MS41NDEgMzkuNjcxNSAxNzEuNjQ4IDM5LjA2MzRDMTcxLjc1NSAzOC44MzU1IDE3MS43MzUgMzguNTk2NCAxNzEuNTkxIDM4LjM0NTdDMTcxLjQ0NiAzOC4wOTUgMTcxLjI1NSAzNy45MDkgMTcxLjAxOSAzNy43ODdaXCIgZmlsbD1cIiMwRDBDMjNcIi8+XHJcbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0yMTIuMTk0IDUwLjM3MDFDMjEyLjA2NCA1MC44ODY2IDIxMS44NjIgNTEuMzIzOCAyMTEuNTg3IDUxLjY4MDZDMjExLjMxMyA1Mi4wMzc3IDIxMC45NyA1Mi4yMjM5IDIxMC41NTggNTIuMjM5M0MyMTAuMjk5IDUyLjI1NDMgMjEwLjEwMSA1Mi4xMTc1IDIwOS45NjMgNTEuODI4OUMyMDkuODI2IDUxLjU0MDEgMjA5LjczMSA1MS4xNjc5IDIwOS42NzggNTAuNzEyMkMyMDkuNjI0IDUwLjI1NjIgMjA5LjYwMSA0OS43NDcgMjA5LjYwOSA0OS4xODQ5QzIwOS42MTYgNDguNjIyNyAyMDkuNjM5IDQ4LjA2ODEgMjA5LjY3OCA0Ny41MjFDMjA5LjcxNSA0Ni45NzQyIDIwOS43NjEgNDYuNDY0NyAyMDkuODE1IDQ1Ljk5MzlDMjA5Ljg2OCA0NS41MjI2IDIwOS45MSA0NS4xNTg2IDIwOS45NCA0NC45QzIxMC40NTkgNDQuOTYwOCAyMTAuODkgNDUuMTg0NiAyMTEuMjMzIDQ1LjU3MjNDMjExLjU3NiA0NS45NTk4IDIxMS44MzkgNDYuNDE5MyAyMTIuMDIyIDQ2Ljk1MTRDMjEyLjIwNSA0Ny40ODMxIDIxMi4zMTIgNDguMDU2OCAyMTIuMzQzIDQ4LjY3MjJDMjEyLjM3MyA0OS4yODc1IDIxMi4zMjMgNDkuODUzNCAyMTIuMTk0IDUwLjM3MDFaTTIwMy45MTMgNTAuMzcwMUMyMDMuNzgzIDUwLjg4NjYgMjAzLjU4MSA1MS4zMjM4IDIwMy4zMDcgNTEuNjgwNkMyMDMuMDMyIDUyLjAzNzcgMjAyLjY4OSA1Mi4yMjM5IDIwMi4yNzcgNTIuMjM5M0MyMDIuMDE4IDUyLjI1NDMgMjAxLjgyIDUyLjExNzUgMjAxLjY4MyA1MS44Mjg5QzIwMS41NDUgNTEuNTQwMSAyMDEuNDUgNTEuMTY3OSAyMDEuMzk3IDUwLjcxMjJDMjAxLjM0MyA1MC4yNTYyIDIwMS4zMiA0OS43NDcgMjAxLjMyOCA0OS4xODQ5QzIwMS4zMzYgNDguNjIyNyAyMDEuMzU4IDQ4LjA2ODEgMjAxLjM5NyA0Ny41MjFDMjAxLjQzNCA0Ni45NzQyIDIwMS40OCA0Ni40NjQ3IDIwMS41MzQgNDUuOTkzOUMyMDEuNTg3IDQ1LjUyMjYgMjAxLjYyOSA0NS4xNTg2IDIwMS42NiA0NC45QzIwMi4xNzggNDQuOTYwOCAyMDIuNjA5IDQ1LjE4NDYgMjAyLjk1MiA0NS41NzIzQzIwMy4yOTUgNDUuOTU5OCAyMDMuNTU4IDQ2LjQxOTMgMjAzLjc0MSA0Ni45NTE0QzIwMy45MjQgNDcuNDgzMSAyMDQuMDMxIDQ4LjA1NjggMjA0LjA2MiA0OC42NzIyQzIwNC4wOTIgNDkuMjg3NSAyMDQuMDQyIDQ5Ljg1MzQgMjAzLjkxMyA1MC4zNzAxWk0xOTUuNDE1IDM3LjQyNDFDMTk1LjM5OSAzNy43ODg0IDE5NS4zNjUgMzguMTExNCAxOTUuMzEyIDM4LjM5MjVDMTk1LjI1OCAzOC42NzQxIDE5NS4xODYgMzguODUyMiAxOTUuMDk1IDM4LjkyODNDMTk0LjkyNyAzOC44MzY5IDE5NC43MjEgMzguNjAxOCAxOTQuNDc3IDM4LjIyMTZDMTk0LjIzMyAzNy44NDE5IDE5NC4wNDIgMzcuNDEyMiAxOTMuOTA1IDM2LjkzMzZDMTkzLjc2OCAzNi40NTUxIDE5My43MjUgMzUuOTg0MyAxOTMuNzc5IDM1LjUyMDVDMTkzLjgzMiAzNS4wNTczIDE5NC4wNzMgMzQuNjk2NyAxOTQuNSAzNC40Mzc5QzE5NC42NjcgMzQuMzQ2OCAxOTQuODEyIDM0LjM4MDkgMTk0LjkzNCAzNC41NDA1QzE5NS4wNTYgMzQuNzAwMSAxOTUuMTU1IDM0LjkzMTggMTk1LjIzMiAzNS4yMzU3QzE5NS4zMDggMzUuNTM5OSAxOTUuMzYxIDM1Ljg4OTIgMTk1LjM5MiAzNi4yODQyQzE5NS40MjIgMzYuNjc5NSAxOTUuNDMgMzcuMDU5MSAxOTUuNDE1IDM3LjQyNDFaTTE5My4zOSA0MS45NzExQzE5My4xNTQgNDIuMjIxNSAxOTIuODkgNDIuNDM4MSAxOTIuNjAxIDQyLjYyMDZDMTkyLjMxMSA0Mi44MDMgMTkyLjAxNCA0Mi45Mzk4IDE5MS43MDkgNDMuMDMwOUMxOTEuNDA0IDQzLjEyMjMgMTkxLjEyOSA0My4xNDQ4IDE5MC44ODUgNDMuMDk5MUMxOTAuMTk5IDQyLjk2MjcgMTg5LjY3MyA0Mi42NjYgMTg5LjMwNyA0Mi4yMTAzQzE4OC45NDEgNDEuNzU0NSAxODguNzA4IDQxLjIxOSAxODguNjA5IDQwLjYwMzdDMTg4LjUxIDM5Ljk4ODEgMTg4LjUyMSAzOS4zMzA4IDE4OC42NDQgMzguNjMxOUMxODguNzY1IDM3LjkzMyAxODguOTcxIDM3LjI4MzUgMTg5LjI2MSAzNi42ODMyQzE4OS41NTEgMzYuMDgyOSAxODkuOTAyIDM1LjU2NjIgMTkwLjMxMyAzNS4xMzMzQzE5MC43MjUgMzQuNzAwMSAxOTEuMTc1IDM0LjQzMDYgMTkxLjY2MyAzNC4zMjM5QzE5MS40OCAzNS4wOTg5IDE5MS40MTkgMzUuOTAwNyAxOTEuNDggMzYuNzI4NkMxOTEuNTQxIDM3LjU1NjggMTkxLjczOSAzOC4zMzU1IDE5Mi4wNzUgMzkuMDY0OEMxOTIuMjg4IDM5LjUwNiAxOTIuNTQ0IDM5LjkwODIgMTkyLjg0MSA0MC4yNzI5QzE5My4xMzkgNDAuNjM3OCAxOTMuNTAxIDQwLjk0OTIgMTkzLjkyOCA0MS4yMDc1QzE5My44MDYgNDEuNDY2IDE5My42MjYgNDEuNzIwNCAxOTMuMzkgNDEuOTcxMVpNMjE4LjcwMiAzNy42NTE5QzIxOC43NDcgMzcuMzAyNiAyMTguODE2IDM2LjkzMzYgMjE4LjkwOCAzNi41NDYyQzIxOC45OTkgMzYuMTU5IDIxOS4xMTQgMzUuNzgyOCAyMTkuMjUxIDM1LjQxODFDMjE5LjM4OCAzNS4wNTMyIDIxOS41NDggMzQuNzM4IDIxOS43MzEgMzQuNDcyM0MyMTkuOTE0IDM0LjIwNjUgMjIwLjEwOCAzNC4wMTYzIDIyMC4zMTQgMzMuOTAyNEMyMjAuNTIgMzMuNzg4NCAyMjAuNzMgMzMuNzk5NyAyMjAuOTQzIDMzLjkzNjVDMjIxLjE3MiAzNC4wNzM1IDIyMS4zMTMgMzQuMzYyMSAyMjEuMzY3IDM0LjgwMjVDMjIxLjQyIDM1LjI0MzUgMjIxLjM2NyAzNS43MTQyIDIyMS4yMDcgMzYuMjE1OUMyMjEuMDQ2IDM2LjcxNzMgMjIwLjc2MSAzNy4xODg0IDIyMC4zNDkgMzcuNjI4OEMyMTkuOTM3IDM4LjA3IDIxOS4zOCAzOC4zNTgzIDIxOC42NzkgMzguNDk1MUMyMTguNjQ4IDM4LjI4MjYgMjE4LjY1NiAzOC4wMDE1IDIxOC43MDIgMzcuNjUxOVpNMjI3LjkyMSAzNy42NTE5QzIyNy45NjYgMzcuMzAyNiAyMjguMDM1IDM2LjkzMzYgMjI4LjEyNiAzNi41NDYyQzIyOC4yMTggMzYuMTU5IDIyOC4zMzIgMzUuNzgyOCAyMjguNDcgMzUuNDE4MUMyMjguNjA3IDM1LjA1MzIgMjI4Ljc2NyAzNC43MzggMjI4Ljk1IDM0LjQ3MjNDMjI5LjEzMyAzNC4yMDY1IDIyOS4zMjggMzQuMDE2MyAyMjkuNTMzIDMzLjkwMjRDMjI5LjczOSAzMy43ODg0IDIyOS45NDkgMzMuNzk5NyAyMzAuMTYyIDMzLjkzNjVDMjMwLjM5MSAzNC4wNzM1IDIzMC41MzIgMzQuMzYyMSAyMzAuNTg2IDM0LjgwMjVDMjMwLjYzOSAzNS4yNDM1IDIzMC41ODYgMzUuNzE0MiAyMzAuNDI1IDM2LjIxNTlDMjMwLjI2NSAzNi43MTczIDIyOS45NzkgMzcuMTg4NCAyMjkuNTY4IDM3LjYyODhDMjI5LjE1NiAzOC4wNyAyMjguNTk5IDM4LjM1ODMgMjI3Ljg5OCAzOC40OTUxQzIyNy44NjcgMzguMjgyNiAyMjcuODc1IDM4LjAwMTUgMjI3LjkyMSAzNy42NTE5Wk0yMzYuNDg4IDM4Ljk4NTJDMjM2LjMxMiAzOC43OTU1IDIzNi4wOTkgMzguNjYyNSAyMzUuODQ3IDM4LjU4NjJDMjM1LjU5NSAzOC41MTA0IDIzNS4zNTUgMzguNTAyOSAyMzUuMTI2IDM4LjU2MzZDMjM0Ljg5NyAzOC42MjQ0IDIzNC43NTIgMzguNzg0IDIzNC42OTIgMzkuMDQyMkMyMzQuNTcgMzkuNTI4NiAyMzQuMzc1IDQwLjAyNjIgMjM0LjEwOCA0MC41MzQ5QzIzMy44NDEgNDEuMDQ0NCAyMzMuNTE0IDQxLjUyNjcgMjMzLjEyNSA0MS45ODI0QzIzMi43MzYgNDIuNDM4MSAyMzIuMjk3IDQyLjg0MTIgMjMxLjgxIDQzLjE5MDVDMjMxLjMyMSA0My41NDAxIDIzMC44MSA0My43OTA4IDIzMC4yNzcgNDMuOTQyM0MyMjkuNzQzIDQ0LjExMDEgMjI5LjMwMSA0NC4xMjg5IDIyOC45NSA0My45OTk2QzIyOC41OTkgNDMuODcwNiAyMjguMzIxIDQzLjY1MDMgMjI4LjExNSA0My4zMzg5QzIyNy45MDkgNDMuMDI3MSAyMjcuNzYxIDQyLjY1MTIgMjI3LjY2OSA0Mi4yMTAzQzIyNy41NzggNDEuNzY5OSAyMjcuNTI0IDQxLjMxNDIgMjI3LjUwOSA0MC44NDI4QzIyOC4zNzggNDAuOTAzOCAyMjkuMTUyIDQwLjc0ODMgMjI5LjgzMSA0MC4zNzU1QzIzMC41MDkgNDAuMDAzNCAyMzEuMDg1IDM5LjUwOTIgMjMxLjU1OCAzOC44OTM5QzIzMi4wMzEgMzguMjc4OCAyMzIuMzg5IDM3LjU4NzQgMjMyLjYzMyAzNi44MkMyMzIuODc3IDM2LjA1MjYgMjMzLjAxNCAzNS4yODkyIDIzMy4wNDUgMzQuNTI5M0MyMzMuMDYgMzMuODE1IDIzMi45NTMgMzMuMjExIDIzMi43MjQgMzIuNzE3MUMyMzIuNDk2IDMyLjIyMzUgMjMyLjE4NyAzMS44Mzk1IDIzMS43OTggMzEuNTY2MkMyMzEuNDA5IDMxLjI5MjQgMjMwLjk2MyAzMS4xMzMgMjMwLjQ2IDMxLjA4NzRDMjI5Ljk1NyAzMS4wNDE3IDIyOS40NDUgMzEuMTEwNSAyMjguOTI3IDMxLjI5MjRDMjI4LjMwMiAzMS41MDU1IDIyNy43NzIgMzEuODUxIDIyNy4zMzggMzIuMzI5NkMyMjYuOTAzIDMyLjgwODUgMjI2LjU0IDMzLjM2MzQgMjI2LjI1MSAzMy45OTM0QzIyNS45NjEgMzQuNjI0NCAyMjUuNzMyIDM1LjMwMzkgMjI1LjU2NCAzNi4wMzM1QzIyNS4zOTYgMzYuNzYyNyAyMjUuMjc0IDM3LjQ4MSAyMjUuMTk5IDM4LjE4NzRDMjI1LjEyNCAzOC44NzMgMjI1LjA4NCAzOS41MjkyIDIyNS4wNzUgNDAuMTU3MkMyMjUuMDE3IDQwLjI4MjQgMjI0Ljk1NiA0MC40MDgyIDIyNC44ODkgNDAuNTM0OUMyMjQuNjIyIDQxLjA0NDQgMjI0LjI5NSA0MS41MjY3IDIyMy45MDYgNDEuOTgyNEMyMjMuNTE3IDQyLjQzODEgMjIzLjA3OCA0Mi44NDEyIDIyMi41OTEgNDMuMTkwNUMyMjIuMTAyIDQzLjU0MDEgMjIxLjU5MiA0My43OTA4IDIyMS4wNTggNDMuOTQyM0MyMjAuNTI0IDQ0LjExMDEgMjIwLjA4MiA0NC4xMjg5IDIxOS43MzEgNDMuOTk5NkMyMTkuMzggNDMuODcwNiAyMTkuMTAyIDQzLjY1MDMgMjE4Ljg5NiA0My4zMzg5QzIxOC42OTEgNDMuMDI3MSAyMTguNTQyIDQyLjY1MTIgMjE4LjQ1IDQyLjIxMDNDMjE4LjM1OSA0MS43Njk5IDIxOC4zMDUgNDEuMzE0MiAyMTguMjkgNDAuODQyOEMyMTkuMTU5IDQwLjkwMzggMjE5LjkzMyA0MC43NDgzIDIyMC42MTIgNDAuMzc1NUMyMjEuMjkgNDAuMDAzNCAyMjEuODY2IDM5LjUwOTIgMjIyLjMzOSAzOC44OTM5QzIyMi44MTEgMzguMjc4OCAyMjMuMTcgMzcuNTg3NCAyMjMuNDE0IDM2LjgyQzIyMy42NTggMzYuMDUyNiAyMjMuNzk1IDM1LjI4OTIgMjIzLjgyNiAzNC41MjkzQzIyMy44NDEgMzMuODE1IDIyMy43MzQgMzMuMjExIDIyMy41MDYgMzIuNzE3MUMyMjMuMjc3IDMyLjIyMzUgMjIyLjk2OCAzMS44Mzk1IDIyMi41NzkgMzEuNTY2MkMyMjIuMTkgMzEuMjkyNCAyMjEuNzQ0IDMxLjEzMyAyMjEuMjQxIDMxLjA4NzRDMjIwLjczOCAzMS4wNDE3IDIyMC4yMjcgMzEuMTEwNSAyMTkuNzA4IDMxLjI5MjRDMjE5LjA4MyAzMS41MDU1IDIxOC41NTMgMzEuODUxIDIxOC4xMTkgMzIuMzI5NkMyMTcuNjg0IDMyLjgwODUgMjE3LjMyMSAzMy4zNjM0IDIxNy4wMzIgMzMuOTkzNEMyMTYuNzQyIDM0LjYyNDQgMjE2LjUxMyAzNS4zMDM5IDIxNi4zNDYgMzYuMDMzNUMyMTYuMTc4IDM2Ljc2MjcgMjE2LjA1NiAzNy40ODEgMjE1Ljk4IDM4LjE4NzRDMjE1LjkzNiAzOC41ODU5IDIxNS45MDcgMzguOTcyMiAyMTUuODg2IDM5LjM1MTZDMjE1LjczOSAzOS40NzY1IDIxNS41OTUgMzkuNjAyMyAyMTUuNDQyIDM5LjcyNThDMjE0LjkxNiA0MC4xNTE0IDIxNC4zNjMgNDAuNTM0OSAyMTMuNzg0IDQwLjg3NjlDMjEzLjIwNCA0MS4yMTkgMjEyLjYwMSA0MS41MDAxIDIxMS45NzcgNDEuNzIwNEMyMTEuMzUxIDQxLjk0MDggMjEwLjcxIDQyLjA3MzggMjEwLjA1NSA0Mi4xMTkyTDIxMS40NzMgMjYuOTg0N0MyMTEuNTY1IDI2LjY2NTUgMjExLjUxOSAyNi4zODQ3IDIxMS4zMzYgMjYuMTQxNUMyMTEuMTUzIDI1Ljg5ODMgMjEwLjkxNiAyNS43MzEyIDIxMC42MjcgMjUuNjQwMUMyMTAuMzM3IDI1LjU0ODggMjEwLjAyOCAyNS41NTY2IDIwOS43IDI1LjY2MjdDMjA5LjM3MiAyNS43Njk0IDIwOS4xMDIgMjYuMDEyNiAyMDguODg4IDI2LjM5MTlDMjA4Ljc4MSAyNi45Njk3IDIwOC42NzEgMjcuNzU5NyAyMDguNTU3IDI4Ljc2MjVDMjA4LjQ0MiAyOS43NjUzIDIwOC4zMjggMzAuODU5NSAyMDguMjEzIDMyLjA0NDhDMjA4LjA5OSAzMy4yMyAyMDcuOTg1IDM0LjQ1MzIgMjA3Ljg3IDM1LjcxNDJDMjA3Ljc1NiAzNi45NzU5IDIwNy42NTcgMzguMTUzMyAyMDcuNTczIDM5LjI0NzJDMjA3LjU2OSAzOS4yOTU4IDIwNy41NjYgMzkuMzM5OCAyMDcuNTYyIDM5LjM4NzhDMjA3LjQyOSAzOS41MDA1IDIwNy4yOTkgMzkuNjE0MiAyMDcuMTYxIDM5LjcyNThDMjA2LjYzNSA0MC4xNTE0IDIwNi4wODIgNDAuNTM0OSAyMDUuNTAzIDQwLjg3NjlDMjA0LjkyMyA0MS4yMTkgMjA0LjMyMSA0MS41MDAxIDIwMy42OTYgNDEuNzIwNEMyMDMuMDcgNDEuOTQwOCAyMDIuNDI5IDQyLjA3MzggMjAxLjc3NCA0Mi4xMTkyTDIwMy4xOTIgMjYuOTg0N0MyMDMuMjg0IDI2LjY2NTUgMjAzLjIzOCAyNi4zODQ3IDIwMy4wNTUgMjYuMTQxNUMyMDIuODcyIDI1Ljg5ODMgMjAyLjYzNSAyNS43MzEyIDIwMi4zNDYgMjUuNjQwMUMyMDIuMDU2IDI1LjU0ODggMjAxLjc0NyAyNS41NTY2IDIwMS40MTkgMjUuNjYyN0MyMDEuMDkxIDI1Ljc2OTQgMjAwLjgyMSAyNi4wMTI2IDIwMC42MDcgMjYuMzkxOUMyMDAuNTAxIDI2Ljk2OTcgMjAwLjM5IDI3Ljc1OTcgMjAwLjI3NiAyOC43NjI1QzIwMC4xNjEgMjkuNzY1MyAyMDAuMDQ3IDMwLjg1OTUgMTk5LjkzMyAzMi4wNDQ4QzE5OS44MTggMzMuMjMgMTk5LjcwNCAzNC40NTMyIDE5OS41ODkgMzUuNzE0MkMxOTkuNDc1IDM2Ljk3NTkgMTk5LjM3NiAzOC4xNTMzIDE5OS4yOTIgMzkuMjQ3MkMxOTkuMjkgMzkuMjY5MiAxOTkuMjg5IDM5LjI4OTEgMTk5LjI4NyAzOS4zMTExQzE5OS4wNDggMzkuNDIxOSAxOTguNzg2IDM5LjUxOSAxOTguNTAzIDM5LjYwMDZDMTk4LjIxMyAzOS42ODQ0IDE5Ny44ODUgMzkuNzMzOSAxOTcuNTE5IDM5Ljc0ODlDMTk3LjU4IDM5LjQ3NTEgMTk3LjYzIDM5LjE3MTIgMTk3LjY2OCAzOC44MzY5QzE5Ny43MDYgMzguNTAyOSAxOTcuNzM3IDM4LjE1MzMgMTk3Ljc2IDM3Ljc4ODRDMTk3Ljc4MiAzNy40MjQxIDE5Ny43OSAzNy4wNTkxIDE5Ny43ODIgMzYuNjk0NUMxOTcuNzc0IDM2LjMyOTYgMTk3Ljc1NSAzNS45OTU2IDE5Ny43MjUgMzUuNjkxNEMxOTcuNjQ5IDM1LjAzODUgMTk3LjUwOCAzNC40MTkxIDE5Ny4zMDIgMzMuODMzOEMxOTcuMDk2IDMzLjI0OTEgMTk2LjgxOCAzMi43NTkzIDE5Ni40NjcgMzIuMzYzN0MxOTYuMTE2IDMxLjk2ODcgMTk1LjY3OCAzMS43MDI3IDE5NS4xNTEgMzEuNTY2MkMxOTQuNjI2IDMxLjQyOTQgMTk0LjAxMiAzMS40NzQ4IDE5My4zMSAzMS43MDI3QzE5Mi4yNzMgMzEuNTY2MiAxOTEuMzM5IDMxLjY2MTMgMTkwLjUwOCAzMS45ODc4QzE4OS42NzcgMzIuMzE0OSAxODguOTU2IDMyLjc4OTQgMTg4LjM0NiAzMy40MTIyQzE4Ny43MzYgMzQuMDM1NyAxODcuMjM3IDM0Ljc2ODQgMTg2Ljg0OCAzNS42MTE5QzE4Ni40NTkgMzYuNDU1MSAxODYuMiAzNy4zMjE0IDE4Ni4wNyAzOC4yMUMxODYuMDE1IDM4LjU4NjggMTg1Ljk4OCAzOC45NjE4IDE4NS45OCAzOS4zMzZDMTg1Ljc0NCAzOS44MTc3IDE4NS40ODYgNDAuMjM4OCAxODUuMjAxIDQwLjU5MjFDMTg0Ljc5NyA0MS4wOTM1IDE4NC4zNzcgNDEuNTAzOCAxODMuOTQzIDQxLjgyMjhDMTgzLjUwOCA0Mi4xNDIgMTgzLjA3NyA0Mi4zODUyIDE4Mi42NSA0Mi41NTIzQzE4Mi4yMjMgNDIuNzE5OCAxODEuODQyIDQyLjgzMzcgMTgxLjUwNyA0Mi44OTQxQzE4MS4xMSA0Mi45NzAyIDE4MC43MjkgNDIuOTc4IDE4MC4zNjMgNDIuOTE3QzE3OS45OTcgNDIuODU2NSAxNzkuNjYxIDQyLjY4MTYgMTc5LjM1NyA0Mi4zOTI3QzE3OS4xMTIgNDIuMTgwMiAxNzguOTI1IDQxLjgzODEgMTc4Ljc5NiA0MS4zNjcxQzE3OC42NjYgNDAuODk2IDE3OC41OSA0MC4zNjA4IDE3OC41NjcgMzkuNzYwMkMxNzguNTQ0IDM5LjE1OTkgMTc4LjU2NyAzOC41MzMgMTc4LjYzNiAzNy44Nzk4QzE3OC43MDUgMzcuMjI2NiAxNzguODIyIDM2LjYwNzIgMTc4Ljk5IDM2LjAyMjJDMTc5LjE1OCAzNS40MzcyIDE3OS4zNzEgMzQuOTEzIDE3OS42MzEgMzQuNDQ5MkMxNzkuODkgMzMuOTg2MiAxODAuMTk1IDMzLjY1NTQgMTgwLjU0NiAzMy40NTc5QzE4MC43NDQgMzMuNDg4NiAxODAuODY2IDMzLjYwNiAxODAuOTEyIDMzLjgxMUMxODAuOTU4IDM0LjAxNjMgMTgwLjk2OSAzNC4yNTk1IDE4MC45NDYgMzQuNTQwNUMxODAuOTIzIDM0LjgyMTkgMTgwLjg4OSAzNS4xMTA1IDE4MC44NDMgMzUuNDA2NkMxODAuNzk3IDM1LjcwMyAxODAuNzc1IDM1Ljk1MDIgMTgwLjc3NSAzNi4xNDc0QzE4MC44NTEgMzYuNTU3NyAxODAuOTk5IDM2Ljg3NyAxODEuMjIxIDM3LjEwNDhDMTgxLjQ0MSAzNy4zMzI3IDE4MS42OSAzNy40NjYgMTgxLjk2NCAzNy41MDM2QzE4Mi4yMzkgMzcuNTQxNyAxODIuNTA5IDM3LjQ3NzMgMTgyLjc3NiAzNy4zMDk4QzE4My4wNDMgMzcuMTQzIDE4My4yNiAzNi44NzcgMTgzLjQyOCAzNi41MTJDMTgzLjQ0MyAzNi41Mjc0IDE4My40NjYgMzYuNTM0OSAxODMuNDk3IDM2LjUzNDlMMTgzLjgxNyAzMy42NDA0QzE4My45MDkgMzMuMjQ1MSAxODMuODQ3IDMyLjg5NTggMTgzLjYzNCAzMi41OTE5QzE4My40MiAzMi4yODggMTgzLjEzOCAzMi4xMTMgMTgyLjc4OCAzMi4wNjc2QzE4Mi4zNDUgMzEuNDI5NCAxODEuNzQ3IDMxLjA5MTQgMTgwLjk5MiAzMS4wNTMyQzE4MC4yMzcgMzEuMDE1NCAxNzkuNDYzIDMxLjI2MjMgMTc4LjY3IDMxLjc5NDFDMTc4LjE4MiAzMi4xNDQgMTc3Ljc1MSAzMi42MjYgMTc3LjM3OCAzMy4yNDEzQzE3Ny4wMDQgMzMuODU3IDE3Ni42OTkgMzQuNTQwNSAxNzYuNDYzIDM1LjI5MjZDMTc2LjIyNiAzNi4wNDQ4IDE3Ni4wNTggMzYuODM5MSAxNzUuOTU5IDM3LjY3NDhDMTc1Ljg2IDM4LjUxMDQgMTc1Ljg0MSAzOS4zMjM2IDE3NS45MDIgNDAuMTEzM0MxNzUuOTYzIDQwLjkwMzggMTc2LjEwNCA0MS42NDg0IDE3Ni4zMjUgNDIuMzQ3QzE3Ni41NDYgNDMuMDQ2MiAxNzYuODU1IDQzLjYzMTIgMTc3LjI1MiA0NC4xMDJDMTc3LjU4NyA0NC41MTIzIDE3Ny45NjggNDQuODEyNyAxNzguMzk1IDQ1LjAwMjdDMTc4LjgyMiA0NS4xOTI3IDE3OS4yNjggNDUuMzEwMSAxNzkuNzM0IDQ1LjM1NThDMTgwLjE5OSA0NS40MDEyIDE4MC42NiA0NS4zODIxIDE4MS4xMTggNDUuMjk4OEMxODEuNTc1IDQ1LjIxNTUgMTgyLjAxIDQ1LjA5NzggMTgyLjQyMSA0NC45NDU0QzE4Mi45NTUgNDQuNzQ4MiAxODMuNTA1IDQ0LjQ5NzIgMTg0LjA2OSA0NC4xOTMzQzE4NC42MzMgNDMuODg5NyAxODUuMTc0IDQzLjUyNDggMTg1LjY5MyA0My4wOTkxQzE4NS45NjYgNDIuODc1MyAxODYuMjI4IDQyLjYzMTMgMTg2LjQ4MiA0Mi4zNjk2QzE4Ni41OTggNDIuNjU1MyAxODYuNzI3IDQyLjkzMTcgMTg2Ljg4MiA0My4xOTA1QzE4Ny4yOTQgNDMuODc0MSAxODcuODUgNDQuNDI5IDE4OC41NTIgNDQuODU0NEMxODkuMjUzIDQ1LjI3OTcgMTkwLjExNSA0NS40ODQ0IDE5MS4xMzcgNDUuNDY5N0MxOTIuMjM1IDQ1LjQ1NDQgMTkzLjI0OSA0NS4xNzc0IDE5NC4xOCA0NC42Mzc4QzE5NS4xMSA0NC4wOTg4IDE5NS44NzIgNDMuMzA0MiAxOTYuNDY3IDQyLjI1NkMxOTcuMzU4IDQyLjI1NiAxOTguMjM0IDQyLjEwOTYgMTk5LjA5NiA0MS44MTlDMTk5LjA4OSA0MS45MTEgMTk5LjA4MSA0Mi4wMDc5IDE5OS4wNzUgNDIuMDk2NkMxOTkuMDE0IDQyLjkwMTkgMTk4Ljk4MyA0My40NDg3IDE5OC45ODMgNDMuNzM3NkMxOTguOTY4IDQ0LjIzOSAxOTguOTM0IDQ0Ljg1ODEgMTk4Ljg4IDQ1LjU5NDlDMTk4LjgyNyA0Ni4zMzIgMTk4Ljc5MyA0Ny4xMDY5IDE5OC43NzggNDcuOTE5OEMxOTguNzYzIDQ4LjczMjYgMTk4Ljc5MyA0OS41NTMyIDE5OC44NjkgNTAuMzgxN0MxOTguOTQ1IDUxLjIwOTYgMTk5LjEwNSA1MS45NjIgMTk5LjM0OSA1Mi42MzgzQzE5OS41OTMgNTMuMzE0MSAxOTkuOTQgNTMuODg3OCAyMDAuMzkgNTQuMzU5MUMyMDAuODQgNTQuODI5OSAyMDEuNDMxIDU1LjExMTIgMjAyLjE2MyA1NS4yMDIzQzIwMi45NDEgNTUuMzA4NCAyMDMuNjEyIDU1LjE3MTcgMjA0LjE3NiA1NC43OTJDMjA0Ljc0IDU0LjQxMiAyMDUuMTk4IDUzLjg5MTggMjA1LjU0OSA1My4yMzA4QzIwNS44OTkgNTIuNTY5NSAyMDYuMTQ3IDUxLjgwNjEgMjA2LjI5MiA1MC45NDAxQzIwNi40MzcgNTAuMDc0IDIwNi40NzkgNDkuMjAzOSAyMDYuNDE4IDQ4LjMzMDFDMjA2LjM1NyA0Ny40NTYyIDIwNi4xOTYgNDYuNjMyMSAyMDUuOTM3IDQ1Ljg1NzVDMjA1LjY3OCA0NS4wODIyIDIwNS4zMTkgNDQuNDQ0IDIwNC44NjIgNDMuOTQyM0MyMDUuMTM3IDQzLjg2NjkgMjA1LjQ2NSA0My43MjI2IDIwNS44NDYgNDMuNTA5NUMyMDYuMjI3IDQzLjI5NjkgMjA2LjYyIDQzLjA1NzUgMjA3LjAyNCA0Mi43OTE1QzIwNy4xMjMgNDIuNzI2MSAyMDcuMjIxIDQyLjY1NzMgMjA3LjMyIDQyLjU5MDJDMjA3LjI4MyA0My4xMjg2IDIwNy4yNjQgNDMuNTEyNiAyMDcuMjY0IDQzLjczNzZDMjA3LjI0OSA0NC4yMzkgMjA3LjIxNSA0NC44NTgxIDIwNy4xNjEgNDUuNTk0OUMyMDcuMTA4IDQ2LjMzMiAyMDcuMDczIDQ3LjEwNjkgMjA3LjA1OCA0Ny45MTk4QzIwNy4wNDMgNDguNzMyNiAyMDcuMDczIDQ5LjU1MzIgMjA3LjE1IDUwLjM4MTdDMjA3LjIyNiA1MS4yMDk2IDIwNy4zODYgNTEuOTYyIDIwNy42MyA1Mi42MzgzQzIwNy44NzQgNTMuMzE0MSAyMDguMjIxIDUzLjg4NzggMjA4LjY3MSA1NC4zNTkxQzIwOS4xMjEgNTQuODI5OSAyMDkuNzEyIDU1LjExMTIgMjEwLjQ0NCA1NS4yMDIzQzIxMS4yMjEgNTUuMzA4NCAyMTEuODkyIDU1LjE3MTcgMjEyLjQ1NyA1NC43OTJDMjEzLjAyMSA1NC40MTIgMjEzLjQ3OCA1My44OTE4IDIxMy44MyA1My4yMzA4QzIxNC4xOCA1Mi41Njk1IDIxNC40MjggNTEuODA2MSAyMTQuNTczIDUwLjk0MDFDMjE0LjcxOCA1MC4wNzQgMjE0Ljc1OSA0OS4yMDM5IDIxNC42OTkgNDguMzMwMUMyMTQuNjM3IDQ3LjQ1NjIgMjE0LjQ3NyA0Ni42MzIxIDIxNC4yMTggNDUuODU3NUMyMTMuOTU5IDQ1LjA4MjIgMjEzLjYwMSA0NC40NDQgMjEzLjE0MyA0My45NDIzQzIxMy40MTggNDMuODY2OSAyMTMuNzQ1IDQzLjcyMjYgMjE0LjEyNyA0My41MDk1QzIxNC41MDggNDMuMjk2OSAyMTQuOSA0My4wNTc1IDIxNS4zMDUgNDIuNzkxNUMyMTUuNTE1IDQyLjY1MzMgMjE1LjcyNCA0Mi41MTA3IDIxNS45MzIgNDIuMzY0MUMyMTYuMDEgNDMuMTA3MiAyMTYuMTc5IDQzLjc1OSAyMTYuNDQ4IDQ0LjMwNzNDMjE2Ljc3NiA0NC45NzYxIDIxNy4yMjIgNDUuNDkyNSAyMTcuNzg3IDQ1Ljg1NzVDMjE4LjM1MSA0Ni4yMjE4IDIxOS4wMTQgNDYuNDIzNCAyMTkuNzc3IDQ2LjQ2MTJDMjIwLjUzOSA0Ni40OTg4IDIyMS4zNyA0Ni4zNTg2IDIyMi4yNzEgNDYuMDM5M0MyMjIuOTQxIDQ1Ljc5NjUgMjIzLjUyNSA0NS40OTI1IDIyNC4wMiA0NS4xMjc5QzIyNC41MTYgNDQuNzYzIDIyNC45NjIgNDQuMzE4NSAyMjUuMzU4IDQzLjc5NDZDMjI1LjM4MSA0My43NjQyIDIyNS40MDMgNDMuNzMxMyAyMjUuNDI1IDQzLjcwMDZDMjI1LjQ5NiA0My45MTM0IDIyNS41NzQgNDQuMTE3OSAyMjUuNjY3IDQ0LjMwNzNDMjI1Ljk5NSA0NC45NzYxIDIyNi40NDEgNDUuNDkyNSAyMjcuMDA2IDQ1Ljg1NzVDMjI3LjU2OSA0Ni4yMjE4IDIyOC4yMzMgNDYuNDIzNCAyMjguOTk2IDQ2LjQ2MTJDMjI5Ljc1OCA0Ni40OTg4IDIzMC41ODkgNDYuMzU4NiAyMzEuNDg5IDQ2LjAzOTNDMjMyLjE2IDQ1Ljc5NjUgMjMyLjc0NCA0NS40OTI1IDIzMy4yMzkgNDUuMTI3OUMyMzMuNzM1IDQ0Ljc2MyAyMzQuMTgxIDQ0LjMxODUgMjM0LjU3NyA0My43OTQ2QzIzNC45NzQgNDMuMjcgMjM1LjMzNiA0Mi42NjYgMjM1LjY2NCA0MS45ODI0QzIzNS45OTIgNDEuMjk4NSAyMzYuMzIzIDQwLjUxNjQgMjM2LjY1OSAzOS42MzQ3QzIzNi43MiAzOS4zOTE4IDIzNi42NjMgMzkuMTc1MiAyMzYuNDg4IDM4Ljk4NTJaXCIgZmlsbD1cIiMwRDBDMjNcIi8+XHJcbjwvc3ZnPmA7Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQSxzQkFBaUY7QUFFakYsaUNBQTBDLHVCQUFPO0FBQUEsRUFJekMsU0FBUztBQUFBO0FBRWIsWUFBTSxLQUFLO0FBRVgsV0FBSyxjQUFjLElBQUksa0JBQWtCLEtBQUssS0FBSztBQUVuRCxXQUFLO0FBSUwsVUFBSSxRQUFRLE9BQU8sV0FBVztBQUU5QixVQUFJLG9CQUFvQixNQUFNO0FBQzVCLFlBQUksTUFBTSxXQUFXLEtBQUssU0FBUyxnQkFBZ0I7QUFDakQsa0JBQVEsSUFBSTtBQUNaLGVBQUs7QUFBQSxtQkFDSSxLQUFLLFNBQVMsZ0JBQWdCO0FBQ3ZDLGtCQUFRLElBQUk7QUFDWixlQUFLO0FBQUE7QUFBQTtBQUlULFlBQU0saUJBQWlCLFVBQVU7QUFHakMsV0FBSyxTQUFTLE1BQU0sTUFBTSxvQkFBb0IsVUFBVTtBQUV4RDtBQUdBLFVBQUksaUJBQWlCLE1BQU07QUFFekIsY0FBTSxXQUFXLEtBQUssSUFBSSxNQUFNLFVBQVU7QUFDMUMsYUFBSyxTQUFTLGFBQWE7QUFHM0IsWUFBSSxLQUFLLElBQUksTUFBTSxVQUFVLGdCQUFnQjtBQUMzQyxlQUFLLFNBQVMsVUFBVTtBQUN4QixlQUFLLFNBQVMsS0FBSztBQUNuQixrQkFBUSxJQUFJO0FBQUEsZUFDUDtBQUNMLGVBQUssU0FBUyxVQUFVO0FBQ3hCLGVBQUssU0FBUyxLQUFLO0FBQ25CLGtCQUFRLElBQUk7QUFBQTtB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 +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQXBwLCBXb3Jrc3BhY2UsIE1vZGFsLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZyB9IGZyb20gJ29ic2lkaWFuJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1pbmltYWxUaGVtZSBleHRlbmRzIFBsdWdpbiB7XHJcblxyXG4gIHNldHRpbmdzOiBNaW5pbWFsU2V0dGluZ3M7XHJcblxyXG4gIGFzeW5jIG9ubG9hZCgpIHtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xyXG5cclxuICAgIHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgTWluaW1hbFNldHRpbmdUYWIodGhpcy5hcHAsIHRoaXMpKTtcclxuXHJcbiAgICB0aGlzLmFkZFN0eWxlKCk7XHJcblxyXG4gICAgLy8gV2F0Y2ggZm9yIHN5c3RlbSBjaGFuZ2VzIHRvIGNvbG9yIHRoZW1lIFxyXG5cclxuICAgIGxldCBtZWRpYSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJyk7XHJcblxyXG4gICAgbGV0IHVwZGF0ZVN5c3RlbVRoZW1lID0gKCkgPT4ge1xyXG4gICAgICBpZiAobWVkaWEubWF0Y2hlcyAmJiB0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0RhcmsgbW9kZSBhY3RpdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdMaWdodCBtb2RlIGFjdGl2ZScpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVTeXN0ZW1UaGVtZSk7XHJcblxyXG4gICAgLy8gUmVtb3ZlIHN5c3RlbSB0aGVtZSBsaXN0ZW5lciB3aGVuIHdlIHVubG9hZFxyXG4gICAgdGhpcy5yZWdpc3RlcigoKSA9PiBtZWRpYS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVTeXN0ZW1UaGVtZSkpO1xyXG5cclxuICAgIHVwZGF0ZVN5c3RlbVRoZW1lKCk7XHJcblxyXG4gICAgLy8gQ2hlY2sgc3RhdGUgb2YgT2JzaWRpYW4gU2V0dGluZ3NcclxuICAgIGxldCBzZXR0aW5nc1VwZGF0ZSA9ICgpID0+IHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBjb25zdCBmb250U2l6ZSA9IHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygnYmFzZUZvbnRTaXplJyk7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCA9IGZvbnRTaXplO1xyXG5cclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBpZiAodGhpcy5hcHAudmF1bHQuZ2V0Q29uZmlnKCdmb2xkSGVhZGluZycpKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5mb2xkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdGb2xkaW5nIGlzIG9uJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5mb2xkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnRm9sZGluZyBpcyBvZmYnKTtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZm9sZGluZycsIHRoaXMuc2V0dGluZ3MuZm9sZGluZyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygnc2hvd0xpbmVOdW1iZXInKSkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGluZU51bWJlcnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0xpbmUgbnVtYmVycyBhcmUgb24nKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpbmVOdW1iZXJzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnTGluZSBudW1iZXJzIGFyZSBvZmYnKTtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtbGluZS1udW1zJywgdGhpcy5zZXR0aW5ncy5saW5lTnVtYmVycyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygncmVhZGFibGVMaW5lTGVuZ3RoJykpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnUmVhZGFibGUgbGluZSBsZW5ndGggaXMgb24nKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1JlYWRhYmxlIGxpbmUgbGVuZ3RoIGlzIG9mZicpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtcmVhZGFibGUnLCB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1yZWFkYWJsZS1vZmYnLCAhdGhpcy5zZXR0aW5ncy5yZWFkYWJsZUxpbmVMZW5ndGgpO1xyXG4gIFxyXG4gICAgfVxyXG4gIFxyXG4gICAgbGV0IHNpZGViYXJVcGRhdGUgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNpZGViYXJFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21vZC1sZWZ0LXNwbGl0JylbMF07XHJcbiAgICAgIGNvbnN0IHJpYmJvbkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2lkZS1kb2NrLXJpYmJvbicpWzBdO1xyXG4gICAgICBpZiAoc2lkZWJhckVsICYmIHJpYmJvbkVsICYmIHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygndGhlbWUnKSA9PSAnbW9vbnN0b25lJyAmJiB0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUgPT0gJ21pbmltYWwtbGlnaHQtY29udHJhc3QnKSB7XHJcbiAgICAgICAgc2lkZWJhckVsLmFkZENsYXNzKCd0aGVtZS1kYXJrJyk7XHJcbiAgICAgICAgcmliYm9uRWwuYWRkQ2xhc3MoJ3RoZW1lLWRhcmsnKTtcclxuICAgICAgfSBlbHNlIGlmIChzaWRlYmFyRWwgJiYgcmliYm9uRWwpIHtcclxuICAgICAgICBzaWRlYmFyRWwucmVtb3ZlQ2xhc3MoJ3RoZW1lLWRhcmsnKTsgXHJcbiAgICAgICAgcmliYm9uRWwucmVtb3ZlQ2xhc3MoJ3RoZW1lLWRhcmsnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMucmVnaXN0ZXJFdmVudChhcHAudmF1bHQub24oJ2NvbmZpZy1jaGFuZ2VkJywgc2V0dGluZ3NVcGRhdGUpKTtcclxuICAgIHRoaXMucmVnaXN0ZXJFdmVudChhcHAud29ya3NwYWNlLm9uKCdjc3MtY2hhbmdlJywgc2lkZWJhclVwZGF0ZSkpO1xyXG5cclxuICAgIHNldHRpbmdzVXBkYXRlKCk7XHJcbiAgICBcclxuICAgIGFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeSgoKSA9PiB7XHJcbiAgICAgIHNpZGViYXJVcGRhdGUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGxpZ2h0U3R5bGVzID0gWydtaW5pbWFsLWxpZ2h0JywgJ21pbmltYWwtbGlnaHQtdG9uYWwnLCAnbWluaW1hbC1saWdodC1jb250cmFzdCcsICdtaW5pbWFsLWxpZ2h0LXdoaXRlJ107XHJcbiAgICBjb25zdCBkYXJrU3R5bGVzID0gWydtaW5pbWFsLWRhcmsnLCAnbWluaW1hbC1kYXJrLXRvbmFsJywgJ21pbmltYWwtZGFyay1ibGFjayddO1xyXG4gICAgY29uc3QgaW1nR3JpZFN0eWxlcyA9IFsnaW1nLWdyaWQnLCdpbWctZ3JpZC1yYXRpbycsJ2ltZy1ub2dyaWQnXTtcclxuICAgIGNvbnN0IHRhYmxlV2lkdGhTdHlsZXMgPSBbJ3RhYmxlLTEwMCcsJ3RhYmxlLWRlZmF1bHQtd2lkdGgnLCd0YWJsZS13aWRlJywndGFibGUtbWF4J107XHJcbiAgICBjb25zdCBpZnJhbWVXaWR0aFN0eWxlcyA9IFsnaWZyYW1lLTEwMCcsJ2lmcmFtZS1kZWZhdWx0LXdpZHRoJywnaWZyYW1lLXdpZGUnLCdpZnJhbWUtbWF4J107XHJcbiAgICBjb25zdCBpbWdXaWR0aFN0eWxlcyA9IFsnaW1nLTEwMCcsJ2ltZy1kZWZhdWx0LXdpZHRoJywnaW1nLXdpZGUnLCdpbWctbWF4J107XHJcbiAgICBjb25zdCBtYXBXaWR0aFN0eWxlcyA9IFsnbWFwLTEwMCcsJ21hcC1kZWZhdWx0LXdpZHRoJywnbWFwLXdpZGUnLCdtYXAtbWF4J107XHJcbiAgICBjb25zdCBjaGFydFdpZHRoU3R5bGVzID0gWydjaGFydC0xMDAnLCdjaGFydC1kZWZhdWx0LXdpZHRoJywnY2hhcnQtd2lkZScsJ2NoYXJ0LW1heCddO1xyXG4gICAgY29uc3QgdGhlbWUgPSBbJ21vb25zdG9uZScsICdvYnNpZGlhbiddO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnaW5jcmVhc2UtYm9keS1mb250LXNpemUnLFxyXG4gICAgICBuYW1lOiAnSW5jcmVhc2UgYm9keSBmb250IHNpemUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCA9IHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCArIDAuNTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9udFNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICdkZWNyZWFzZS1ib2R5LWZvbnQtc2l6ZScsXHJcbiAgICAgIG5hbWU6ICdEZWNyZWFzZSBib2R5IGZvbnQgc2l6ZScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsID0gdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsIC0gMC41O1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5zZXRGb250U2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTsgXHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kYXJrLWN5Y2xlJyxcclxuICAgICAgbmFtZTogJ0N5Y2xlIGJldHdlZW4gZGFyayBtb2RlIHN0eWxlcycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUgPSBkYXJrU3R5bGVzWyhkYXJrU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUpICsgMSkgJSBkYXJrU3R5bGVzLmxlbmd0aF07XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTsgIFxyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbGlnaHQtY3ljbGUnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBsaWdodCBtb2RlIHN0eWxlcycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFN0eWxlID0gbGlnaHRTdHlsZXNbKGxpZ2h0U3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5saWdodFN0eWxlKSArIDEpICUgbGlnaHRTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1oaWRkZW4tYm9yZGVycycsXHJcbiAgICAgIG5hbWU6ICdUb2dnbGUgc2lkZWJhciBib3JkZXJzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUgPSAhdGhpcy5zZXR0aW5ncy5ib3JkZXJzVG9nZ2xlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLWNvbG9yZnVsLWhlYWRpbmdzJyxcclxuICAgICAgbmFtZTogJ1RvZ2dsZSBjb2xvcmZ1bCBoZWFkaW5ncycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEhlYWRpbmdzID0gIXRoaXMuc2V0dGluZ3MuY29sb3JmdWxIZWFkaW5ncztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWZvY3VzLW1vZGUnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGZvY3VzIG1vZGUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlID0gIXRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtY29sb3JmdWwtZnJhbWUnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGNvbG9yZnVsIHdpbmRvdyBmcmFtZScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lID0gIXRoaXMuc2V0dGluZ3MuY29sb3JmdWxGcmFtZTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtdGFibGUtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiB0YWJsZSB3aWR0aCBvcHRpb25zJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnRhYmxlV2lkdGggPSB0YWJsZVdpZHRoU3R5bGVzWyh0YWJsZVdpZHRoU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy50YWJsZVdpZHRoKSArIDEpICUgdGFibGVXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnY3ljbGUtbWluaW1hbC1pbWFnZS13aWR0aCcsXHJcbiAgICAgIG5hbWU6ICdDeWNsZSBiZXR3ZWVuIGltYWdlIHdpZHRoIG9wdGlvbnMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuaW1nV2lkdGggPSBpbWdXaWR0aFN0eWxlc1soaW1nV2lkdGhTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLmltZ1dpZHRoKSArIDEpICUgaW1nV2lkdGhTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtaWZyYW1lLXdpZHRoJyxcclxuICAgICAgbmFtZTogJ0N5Y2xlIGJldHdlZW4gaWZyYW1lIHdpZHRoIG9wdGlvbnMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuaWZyYW1lV2lkdGggPSBpZnJhbWVXaWR0aFN0eWxlc1soaWZyYW1lV2lkdGhTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLmlmcmFtZVdpZHRoKSArIDEpICUgaWZyYW1lV2lkdGhTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtY2hhcnQtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBjaGFydCB3aWR0aCBvcHRpb25zJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmNoYXJ0V2lkdGggPSBjaGFydFdpZHRoU3R5bGVzWyhjaGFydFdpZHRoU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5jaGFydFdpZHRoKSArIDEpICUgY2hhcnRXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnY3ljbGUtbWluaW1hbC1tYXAtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBtYXAgd2lkdGggb3B0aW9ucycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5tYXBXaWR0aCA9IG1hcFdpZHRoU3R5bGVzWyhtYXBXaWR0aFN0eWxlcy5pbmRleE9mKHRoaXMuc2V0dGluZ3MubWFwV2lkdGgpICsgMSkgJSBtYXBXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtaW1nLWdyaWQnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGltYWdlIGdyaWRzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmltZ0dyaWQgPSAhdGhpcy5zZXR0aW5ncy5pbWdHcmlkO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtc3dpdGNoJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBiZXR3ZWVuIGxpZ2h0IGFuZCBkYXJrIG1vZGUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MudGhlbWUgPSB0aGVtZVsodGhlbWUuaW5kZXhPZih0aGlzLnNldHRpbmdzLnRoZW1lKSArIDEpICUgdGhlbWUubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVGhlbWUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1saWdodC1kZWZhdWx0JyxcclxuICAgICAgbmFtZTogJ1VzZSBsaWdodCBtb2RlIChkZWZhdWx0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFN0eWxlID0gJ21pbmltYWwtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbGlnaHQtd2hpdGUnLFxyXG4gICAgICBuYW1lOiAnVXNlIGxpZ2h0IG1vZGUgKGFsbCB3aGl0ZSknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSA9ICdtaW5pbWFsLWxpZ2h0LXdoaXRlJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWxpZ2h0LXRvbmFsJyxcclxuICAgICAgbmFtZTogJ1VzZSBsaWdodCBtb2RlIChsb3cgY29udHJhc3QpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUgPSAnbWluaW1hbC1saWdodC10b25hbCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1saWdodC1jb250cmFzdCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgbGlnaHQgbW9kZSAoaGlnaCBjb250cmFzdCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSA9ICdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRhcmstZGVmYXVsdCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgZGFyayBtb2RlIChkZWZhdWx0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUgPSAnbWluaW1hbC1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZGFyay10b25hbCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgZGFyayBtb2RlIChsb3cgY29udHJhc3QpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSA9ICdtaW5pbWFsLWRhcmstdG9uYWwnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kYXJrLWJsYWNrJyxcclxuICAgICAgbmFtZTogJ1VzZSBkYXJrIG1vZGUgKHRydWUgYmxhY2spJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSA9ICdtaW5pbWFsLWRhcmstYmxhY2snO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1hdG9tLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gQXRvbSAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtYXRvbS1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtYXl1LWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gQXl1IChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1heXUtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWNhdHBwdWNjaW4tbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBDYXRwcHVjY2luIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1jYXRwcHVjY2luLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kZWZhdWx0LWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gZGVmYXVsdCAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtZGVmYXVsdC1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZ3J1dmJveC1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIEdydXZib3ggKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLWdydXZib3gtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWVpbmstbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBFLWluayAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtZWluay1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZXZlcmZvcmVzdC1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIEV2ZXJmb3Jlc3QgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLWV2ZXJmb3Jlc3QtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW1hY29zLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gbWFjT1MgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLW1hY29zLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ub3Rpb24tbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBOb3Rpb24gKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLW5vdGlvbi1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbm9yZC1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIE5vcmQgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLW5vcmQtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLXJvc2UtcGluZS1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIFJvc1x1MDBFOSBQaW5lIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1yb3NlLXBpbmUtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLXNvbGFyaXplZC1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIFNvbGFyaXplZCAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtc29sYXJpemVkLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC10aGluZ3MtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBUaGluZ3MgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLXRoaW5ncy1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtYXRvbS1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBBdG9tIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtYXRvbS1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtYXl1LWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIEF5dSAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWF5dS1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtY2F0cHB1Y2Npbi1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBDYXRwcHVjY2luIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtY2F0cHB1Y2Npbi1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZHJhY3VsYS1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBEcmFjdWxhIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtZHJhY3VsYS1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZGVmYXVsdC1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBkZWZhdWx0IChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtZGVmYXVsdC1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZWluay1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBFLWluayAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWVpbmstZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWV2ZXJmb3Jlc3QtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gRXZlcmZvcmVzdCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWV2ZXJmb3Jlc3QtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWdydXZib3gtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gR3J1dmJveCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWdydXZib3gtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW1hY29zLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIG1hY09TIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtbWFjb3MtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW5vcmQtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gTm9yZCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLW5vcmQtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW5vdGlvbi1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBOb3Rpb24gKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1ub3Rpb24tZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLXJvc2UtcGluZS1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBSb3NcdTAwRTkgUGluZSAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLXJvc2UtcGluZS1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtc29sYXJpemVkLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIFNvbGFyaXplZCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLXNvbGFyaXplZC1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtdGhpbmdzLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIFRoaW5ncyAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLXRoaW5ncy1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZGV2LWJsb2NrLXdpZHRoJyxcclxuICAgICAgbmFtZTogJ0RldiBcdTIwMTQgU2hvdyBibG9jayB3aWR0aHMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGV2QmxvY2tXaWR0aCA9ICF0aGlzLnNldHRpbmdzLmRldkJsb2NrV2lkdGg7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoKClcclxuICB9XHJcblxyXG4gIG9udW5sb2FkKCkge1xyXG4gICAgY29uc29sZS5sb2coJ1VubG9hZGluZyBNaW5pbWFsIFRoZW1lIFNldHRpbmdzIHBsdWdpbicpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbG9hZFNldHRpbmdzKCkge1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oREVGQVVMVF9TRVRUSU5HUywgYXdhaXQgdGhpcy5sb2FkRGF0YSgpKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcclxuICAgIGF3YWl0IHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgfVxyXG5cclxuICAvLyByZWZyZXNoIGZ1bmN0aW9uIGZvciB3aGVuIHdlIGNoYW5nZSBzZXR0aW5nc1xyXG4gIHJlZnJlc2goKSB7XHJcbiAgICAvLyByZS1sb2FkIHRoZSBzdHlsZVxyXG4gICAgdGhpcy51cGRhdGVTdHlsZSgpXHJcbiAgfVxyXG5cclxuICAvLyBhZGQgdGhlIHN0eWxpbmcgZWxlbWVudHMgd2UgbmVlZFxyXG4gIGFkZFN0eWxlKCkge1xyXG4gICAgLy8gYWRkIGEgY3NzIGJsb2NrIGZvciBvdXIgc2V0dGluZ3MtZGVwZW5kZW50IHN0eWxlc1xyXG4gICAgY29uc3QgY3NzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgIGNzcy5pZCA9ICdtaW5pbWFsLXRoZW1lJztcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZChjc3MpO1xyXG5cclxuICAgIC8vIGFkZCB0aGUgbWFpbiBjbGFzc1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdtaW5pbWFsLXRoZW1lJyk7XHJcblxyXG4gICAgLy8gdXBkYXRlIHRoZSBzdHlsZSB3aXRoIHRoZSBzZXR0aW5ncy1kZXBlbmRlbnQgc3R5bGVzXHJcbiAgICB0aGlzLnVwZGF0ZVN0eWxlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRGb250U2l6ZSgpIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnZhdWx0LnNldENvbmZpZygnYmFzZUZvbnRTaXplJywgdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnVwZGF0ZUZvbnRTaXplKCk7XHJcbiAgfVxyXG5cclxuICAvLyB1cGRhdGUgdGhlIHN0eWxlcyAoYXQgdGhlIHN0YXJ0LCBvciBhcyB0aGUgcmVzdWx0IG9mIGEgc2V0dGluZ3MgY2hhbmdlKVxyXG4gIHVwZGF0ZVN0eWxlKCkge1xyXG4gICAgdGhpcy5yZW1vdmVTdHlsZSgpO1xyXG5cclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSk7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdib3JkZXJzLW5vbmUnLCAhdGhpcy5zZXR0aW5ncy5ib3JkZXJzVG9nZ2xlKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnY29sb3JmdWwtaGVhZGluZ3MnLCB0aGlzLnNldHRpbmdzLmNvbG9yZnVsSGVhZGluZ3MpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdjb2xvcmZ1bC1mcmFtZScsIHRoaXMuc2V0dGluZ3MuY29sb3JmdWxGcmFtZSk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2NvbG9yZnVsLWFjdGl2ZScsIHRoaXMuc2V0dGluZ3MuY29sb3JmdWxBY3RpdmVTdGF0ZXMpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdtaW5pbWFsLWZvY3VzLW1vZGUnLCB0aGlzLnNldHRpbmdzLmZvY3VzTW9kZSk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2xpbmtzLWludC1vbicsIHRoaXMuc2V0dGluZ3MudW5kZXJsaW5lSW50ZXJuYWwpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdsaW5rcy1leHQtb24nLCB0aGlzLnNldHRpbmdzLnVuZGVybGluZUV4dGVybmFsKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnc3lzdGVtLXNoYWRlJywgdGhpcy5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2Z1bGwtd2lkdGgtbWVkaWEnLCB0aGlzLnNldHRpbmdzLmZ1bGxXaWR0aE1lZGlhKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnaW1nLWdyaWQnLCB0aGlzLnNldHRpbmdzLmltZ0dyaWQpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdtaW5pbWFsLWRldi1ibG9jay13aWR0aCcsIHRoaXMuc2V0dGluZ3MuZGV2QmxvY2tXaWR0aCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtc3RhdHVzLW9mZicsICF0aGlzLnNldHRpbmdzLm1pbmltYWxTdGF0dXMpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdmdWxsLWZpbGUtbmFtZXMnLCAhdGhpcy5zZXR0aW5ncy50cmltTmFtZXMpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdsYWJlbGVkLW5hdicsIHRoaXMuc2V0dGluZ3MubGFiZWxlZE5hdik7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZm9sZGluZycsIHRoaXMuc2V0dGluZ3MuZm9sZGluZyk7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDbGFzcygndGFibGUtd2lkZScsJ3RhYmxlLW1heCcsJ3RhYmxlLTEwMCcsJ3RhYmxlLWRlZmF1bHQtd2lkdGgnLFxyXG4gICAgICAnaWZyYW1lLXdpZGUnLCdpZnJhbWUtbWF4JywnaWZyYW1lLTEwMCcsJ2lmcmFtZS1kZWZhdWx0LXdpZHRoJyxcclxuICAgICAgJ2ltZy13aWRlJywnaW1nLW1heCcsJ2ltZy0xMDAnLCdpbWctZGVmYXVsdC13aWR0aCcsXHJcbiAgICAgICdjaGFydC13aWRlJywnY2hhcnQtbWF4JywnY2hhcnQtMTAwJywnY2hhcnQtZGVmYXVsdC13aWR0aCcsXHJcbiAgICAgICdtYXAtd2lkZScsJ21hcC1tYXgnLCdtYXAtMTAwJywnbWFwLWRlZmF1bHQtd2lkdGgnKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5jaGFydFdpZHRoKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy50YWJsZVdpZHRoKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5pbWdXaWR0aCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuaWZyYW1lV2lkdGgpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLm1hcFdpZHRoKTtcclxuXHJcbiAgICAvLyBnZXQgdGhlIGN1c3RvbSBjc3MgZWxlbWVudFxyXG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWluaW1hbC10aGVtZScpO1xyXG4gICAgaWYgKCFlbCkgdGhyb3cgXCJtaW5pbWFsLXRoZW1lIGVsZW1lbnQgbm90IGZvdW5kIVwiO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIHNldCB0aGUgc2V0dGluZ3MtZGVwZW5kZW50IGNzc1xyXG4gICAgICBlbC5pbm5lclRleHQgPSBcclxuICAgICAgICAnYm9keS5taW5pbWFsLXRoZW1leydcclxuICAgICAgICArICctLWZvbnQtdWktc21hbGw6JyArIHRoaXMuc2V0dGluZ3MudGV4dFNtYWxsICsgJ3B4OydcclxuICAgICAgICArICctLWxpbmUtaGVpZ2h0OicgKyB0aGlzLnNldHRpbmdzLmxpbmVIZWlnaHQgKyAnOydcclxuICAgICAgICArICctLWxpbmUtd2lkdGg6JyArIHRoaXMuc2V0dGluZ3MubGluZVdpZHRoICsgJ3JlbTsnXHJcbiAgICAgICAgKyAnLS1saW5lLXdpZHRoLXdpZGU6JyArIHRoaXMuc2V0dGluZ3MubGluZVdpZHRoV2lkZSArICdyZW07J1xyXG4gICAgICAgICsgJy0tbWF4LXdpZHRoOicgKyB0aGlzLnNldHRpbmdzLm1heFdpZHRoICsgJyU7J1xyXG4gICAgICAgICsgJy0tZm9udC1lZGl0b3Itb3ZlcnJpZGU6JyArIHRoaXMuc2V0dGluZ3MuZWRpdG9yRm9udCArICc7JztcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICByZWZyZXNoU3lzdGVtVGhlbWUoKSB7XHJcbiAgICBjb25zdCBpc0RhcmtNb2RlID0gd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzXHJcblxyXG4gICAgaWYgKGlzRGFya01vZGUgJiYgdGhpcy5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdEYXJrIG1vZGUgYWN0aXZlJyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKVxyXG5cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0xpZ2h0IG1vZGUgYWN0aXZlJyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKClcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGFya1N0eWxlKCkge1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDbGFzcyhcclxuICAgICAgJ3RoZW1lLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWRhcmstdG9uYWwnLFxyXG4gICAgICAnbWluaW1hbC1kYXJrLWJsYWNrJ1xyXG4gICAgKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUpO1xyXG5cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnNldFRoZW1lKCdvYnNpZGlhbicpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAudmF1bHQuc2V0Q29uZmlnKCd0aGVtZScsICdvYnNpZGlhbicpO1xyXG4gICAgdGhpcy5hcHAud29ya3NwYWNlLnRyaWdnZXIoJ2Nzcy1jaGFuZ2UnKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUxpZ2h0U3R5bGUoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKFxyXG4gICAgICAndGhlbWUtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtbGlnaHQtdG9uYWwnLFxyXG4gICAgICAnbWluaW1hbC1saWdodC1jb250cmFzdCcsXHJcbiAgICAgICdtaW5pbWFsLWxpZ2h0LXdoaXRlJ1xyXG4gICAgKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5saWdodFN0eWxlKTtcclxuXHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmFwcC5zZXRUaGVtZSgnbW9vbnN0b25lJyk7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmFwcC52YXVsdC5zZXRDb25maWcoJ3RoZW1lJywgJ21vb25zdG9uZScpO1xyXG4gICAgdGhpcy5hcHAud29ya3NwYWNlLnRyaWdnZXIoJ2Nzcy1jaGFuZ2UnKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZURhcmtTY2hlbWUoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKFxyXG4gICAgICAnbWluaW1hbC1hdG9tLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1heXUtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWNhdHBwdWNjaW4tZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWRlZmF1bHQtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWRyYWN1bGEtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWVpbmstZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWV2ZXJmb3Jlc3QtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWdydXZib3gtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLW1hY29zLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1ub3JkLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1ub3Rpb24tZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLXJvc2UtcGluZS1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtc29sYXJpemVkLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC10aGluZ3MtZGFyaydcclxuICAgICk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVMaWdodFNjaGVtZSgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoXHJcbiAgICAgICdtaW5pbWFsLWF0b20tbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1heXUtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1jYXRwcHVjY2luLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtZGVmYXVsdC1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWVpbmstbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1ldmVyZm9yZXN0LWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtZ3J1dmJveC1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLW1hY29zLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtbm9yZC1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLW5vdGlvbi1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLXJvc2UtcGluZS1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLXNvbGFyaXplZC1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLXRoaW5ncy1saWdodCdcclxuICAgICk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVGhlbWUoKSB7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmFwcC5zZXRUaGVtZSh0aGlzLnNldHRpbmdzLnRoZW1lKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnZhdWx0LnNldENvbmZpZygndGhlbWUnLCB0aGlzLnNldHRpbmdzLnRoZW1lKTtcclxuICAgIHRoaXMuYXBwLndvcmtzcGFjZS50cmlnZ2VyKCdjc3MtY2hhbmdlJyk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVTdHlsZSgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoJ21pbmltYWwtbGlnaHQnLCdtaW5pbWFsLWxpZ2h0LXRvbmFsJywnbWluaW1hbC1saWdodC1jb250cmFzdCcsJ21pbmltYWwtbGlnaHQtd2hpdGUnLCdtaW5pbWFsLWRhcmsnLCdtaW5pbWFsLWRhcmstdG9uYWwnLCdtaW5pbWFsLWRhcmstYmxhY2snKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5saWdodFN0eWxlLHRoaXMuc2V0dGluZ3MuZGFya1N0eWxlKTtcclxuICB9XHJcblxyXG59XHJcblxyXG5pbnRlcmZhY2UgTWluaW1hbFNldHRpbmdzIHtcclxuICB0aGVtZTogc3RyaW5nO1xyXG4gIGxpZ2h0U3R5bGU6IHN0cmluZztcclxuICBkYXJrU3R5bGU6IHN0cmluZztcclxuICBsaWdodFNjaGVtZTogc3RyaW5nO1xyXG4gIGRhcmtTY2hlbWU6IHN0cmluZztcclxuICBlZGl0b3JGb250OiBzdHJpbmc7XHJcbiAgY29sb3JmdWxIZWFkaW5nczogYm9vbGVhbjtcclxuICBjb2xvcmZ1bEZyYW1lOiBib29sZWFuO1xyXG4gIGNvbG9yZnVsQWN0aXZlU3RhdGVzOiBib29sZWFuLFxyXG4gIHRyaW1OYW1lczogYm9vbGVhbjtcclxuICBsYWJlbGVkTmF2OiBib29sZWFuO1xyXG4gIGJvcmRlcnNUb2dnbGU6IGJvb2xlYW47XHJcbiAgZm9jdXNNb2RlOiBib29sZWFuO1xyXG4gIGxpbmVIZWlnaHQ6IG51bWJlcjtcclxuICBsaW5lV2lkdGg6IG51bWJlcjtcclxuICBsaW5lV2lkdGhXaWRlOiBudW1iZXI7XHJcbiAgbWF4V2lkdGg6IG51bWJlcjtcclxuICBpbWdHcmlkOiBib29sZWFuO1xyXG4gIGRldkJsb2NrV2lkdGg6IGJvb2xlYW47XHJcbiAgdGFibGVXaWR0aDogc3RyaW5nO1xyXG4gIGlmcmFtZVdpZHRoOiBzdHJpbmc7XHJcbiAgaW1nV2lkdGg6IHN0cmluZztcclxuICBjaGFydFdpZHRoOiBzdHJpbmc7XHJcbiAgbWFwV2lkdGg6IHN0cmluZztcclxuICBmdWxsV2lkdGhNZWRpYTogYm9vbGVhbixcclxuICBtaW5pbWFsU3RhdHVzOiBib29sZWFuLFxyXG4gIHRleHROb3JtYWw6IG51bWJlcjtcclxuICB0ZXh0U21hbGw6IG51bWJlcjtcclxuICB1bmRlcmxpbmVJbnRlcm5hbDogYm9vbGVhbjtcclxuICB1bmRlcmxpbmVFeHRlcm5hbDogYm9vbGVhbjtcclxuICB1c2VTeXN0ZW1UaGVtZTogYm9vbGVhbjtcclxuICBmb2xkaW5nOiBib29sZWFuO1xyXG4gIGxpbmVOdW1iZXJzOiBib29sZWFuO1xyXG4gIHJlYWRhYmxlTGluZUxlbmd0aDogYm9vbGVhbjtcclxufVxyXG5cclxuY29uc3QgREVGQVVMVF9TRVRUSU5HUzogTWluaW1hbFNldHRpbmdzID0ge1xyXG4gIHRoZW1lOiAnbW9vbnN0b25lJyxcclxuICBsaWdodFN0eWxlOiAnbWluaW1hbC1saWdodCcsXHJcbiAgZGFya1N0eWxlOiAnbWluaW1hbC1kYXJrJyxcclxuICBsaWdodFNjaGVtZTogJ21pbmltYWwtZGVmYXVsdC1saWdodCcsXHJcbiAgZGFya1NjaGVtZTogJ21pbmltYWwtZGVmYXVsdC1kYXJrJyxcclxuICBlZGl0b3JGb250OiAnJyxcclxuICBsaW5lSGVpZ2h0OiAxLjUsXHJcbiAgbGluZVdpZHRoOiA0MCxcclxuICBsaW5lV2lkdGhXaWRlOiA1MCxcclxuICBtYXhXaWR0aDogODgsXHJcbiAgdGV4dE5vcm1hbDogMTYsXHJcbiAgdGV4dFNtYWxsOiAxMyxcclxuICBpbWdHcmlkOiBmYWxzZSxcclxuICBpbWdXaWR0aDogJ2ltZy1kZWZhdWx0LXdpZHRoJyxcclxuICB0YWJsZVdpZHRoOiAndGFibGUtZGVmYXVsdC13aWR0aCcsXHJcbiAgaWZyYW1lV2lkdGg6ICdpZnJhbWUtZGVmYXVsdC13aWR0aCcsXHJcbiAgbWFwV2lkdGg6ICdtYXAtZGVmYXVsdC13aWR0aCcsXHJcbiAgY2hhcnRXaWR0aDogJ2NoYXJ0LWRlZmF1bHQtd2lkdGgnLFxyXG4gIGNvbG9yZnVsSGVhZGluZ3M6IGZhbHNlLFxyXG4gIGNvbG9yZnVsRnJhbWU6IGZhbHNlLFxyXG4gIGNvbG9yZnVsQWN0aXZlU3RhdGVzOiBmYWxzZSxcclxuICB0cmltTmFtZXM6IHRydWUsXHJcbiAgbGFiZWxlZE5hdjogZmFsc2UsXHJcbiAgZnVsbFdpZHRoTWVkaWE6IHRydWUsXHJcbiAgYm9yZGVyc1RvZ2dsZTogdHJ1ZSxcclxuICBtaW5pbWFsU3RhdHVzOiB0cnVlLFxyXG4gIGZvY3VzTW9kZTogZmFsc2UsXHJcbiAgdW5kZXJsaW5lSW50ZXJuYWw6IHRydWUsXHJcbiAgdW5kZXJsaW5lRXh0ZXJuYWw6IHRydWUsXHJcbiAgdXNlU3lzdGVtVGhlbWU6IGZhbHNlLFxyXG4gIGZvbGRpbmc6IHRydWUsXHJcbiAgbGluZU51bWJlcnM6IGZhbHNlLFxyXG4gIHJlYWRhYmxlTGluZUxlbmd0aDogZmFsc2UsXHJcbiAgZGV2QmxvY2tXaWR0aDogZmFsc2UsXHJcbn1cclxuXHJcbmNsYXNzIE1pbmltYWxTZXR0aW5nVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XHJcblxyXG5cclxuICBwbHVnaW46IE1pbmltYWxUaGVtZTtcclxuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBNaW5pbWFsVGhlbWUpIHtcclxuICAgIHN1cGVyKGFwcCwgcGx1Z2luKTtcclxuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xyXG4gIH1cclxuXHJcbiAgZGlzcGxheSgpOiB2b2lkIHtcclxuICAgIGxldCB7Y29udGFpbmVyRWx9ID0gdGhpcztcclxuXHJcbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xyXG5cclxuICAgIGNvbnN0IGNvbG9yU2VjdGlvbiA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdkaXYnLCB7Y2xzOiAnc2V0dGluZy1pdGVtIHNldHRpbmctaXRlbS1oZWFkaW5nJ30pO1xyXG5cclxuICAgIGNvbnN0IGNvbG9yU2VjdGlvbkluZm8gPSAgY29sb3JTZWN0aW9uLmNyZWF0ZUVsKCdkaXYnLCB7Y2xzOiAnc2V0dGluZy1pdGVtLWluZm8nfSk7XHJcblxyXG4gICAgY29sb3JTZWN0aW9uSW5mby5jcmVhdGVFbCgnZGl2Jywge3RleHQ6ICdDb2xvciBzY2hlbWUnLCBjbHM6ICdzZXR0aW5nLWl0ZW0tbmFtZSd9KTtcclxuXHJcbiAgICBjb25zdCBjb2xvckRlc2MgPSBjb2xvclNlY3Rpb25JbmZvLmNyZWF0ZUVsKCdkaXYnLCB7Y2xzOiAnc2V0dGluZy1pdGVtLWRlc2NyaXB0aW9uJ30pO1xyXG5cclxuICAgICAgY29sb3JEZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdzcGFuJywge1xyXG4gICAgICAgICAgdGV4dDogJ1RvIGNyZWF0ZSBhIGN1c3RvbSBjb2xvciBzY2hlbWUgdXNlIHRoZSAnXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIGNvbG9yRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwiU3R5bGUgU2V0dGluZ3NcIixcclxuICAgICAgICAgIGhyZWY6IFwib2JzaWRpYW46Ly9zaG93LXBsdWdpbj9pZD1vYnNpZGlhbi1zdHlsZS1zZXR0aW5nc1wiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbG9yRGVzYy5hcHBlbmRUZXh0KCcgcGx1Z2luLiBTZWUgJyk7XHJcblxyXG4gICAgICBjb2xvckRlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ2EnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcImRvY3VtZW50YXRpb25cIixcclxuICAgICAgICAgIGhyZWY6IFwiaHR0cHM6Ly9taW5pbWFsLmd1aWRlL2ZlYXR1cmVzL2NvbG9yLXNjaGVtZXNcIixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBjb2xvckRlc2MuYXBwZW5kVGV4dCgnIGZvciBkZXRhaWxzLicpO1xyXG5cclxuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgICAgLnNldE5hbWUoJ0xpZ2h0IG1vZGUgY29sb3Igc2NoZW1lJylcclxuICAgICAgICAuc2V0RGVzYygnUHJlc2V0IGNvbG9yIG9wdGlvbnMgZm9yIGxpZ2h0IG1vZGUuJylcclxuICAgICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGVmYXVsdC1saWdodCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1hdG9tLWxpZ2h0JywnQXRvbScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWF5dS1saWdodCcsJ0F5dScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWNhdHBwdWNjaW4tbGlnaHQnLCdDYXRwcHVjY2luJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZWluay1saWdodCcsJ0UtaW5rIChiZXRhKScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWV2ZXJmb3Jlc3QtbGlnaHQnLCdFdmVyZm9yZXN0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZ3J1dmJveC1saWdodCcsJ0dydXZib3gnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1tYWNvcy1saWdodCcsJ21hY09TJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbm9yZC1saWdodCcsJ05vcmQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ub3Rpb24tbGlnaHQnLCdOb3Rpb24nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1yb3NlLXBpbmUtbGlnaHQnLCdSb3NcdTAwRTkgUGluZScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLXNvbGFyaXplZC1saWdodCcsJ1NvbGFyaXplZCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLXRoaW5ncy1saWdodCcsJ1RoaW5ncycpXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubGlnaHRTY2hlbWUpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubGlnaHRTY2hlbWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgICAgLnNldE5hbWUoJ0xpZ2h0IG1vZGUgYmFja2dyb3VuZCBjb250cmFzdCcpXHJcbiAgICAgICAgLnNldERlc2MoJ0xldmVsIG9mIGNvbnRyYXN0IGJldHdlZW4gc2lkZWJhciBhbmQgbWFpbiBjb250ZW50LicpXHJcbiAgICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWxpZ2h0JywnRGVmYXVsdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWxpZ2h0LXdoaXRlJywnQWxsIHdoaXRlJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbGlnaHQtdG9uYWwnLCdMb3cgY29udHJhc3QnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1saWdodC1jb250cmFzdCcsJ0hpZ2ggY29udHJhc3QnKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmxpZ2h0U3R5bGUpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubGlnaHRTdHlsZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4udXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgIC5zZXROYW1lKCdEYXJrIG1vZGUgY29sb3Igc2NoZW1lJylcclxuICAgICAgICAuc2V0RGVzYygnUHJlc2V0IGNvbG9ycyBvcHRpb25zIGZvciBkYXJrIG1vZGUuJylcclxuICAgICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGVmYXVsdC1kYXJrJywnRGVmYXVsdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWF0b20tZGFyaycsJ0F0b20nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1heXUtZGFyaycsJ0F5dScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWNhdHBwdWNjaW4tZGFyaycsJ0NhdHBwdWNjaW4nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1kcmFjdWxhLWRhcmsnLCdEcmFjdWxhJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZWluay1kYXJrJywnRS1pbmsgKGJldGEpJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZXZlcmZvcmVzdC1kYXJrJywnRXZlcmZvcmVzdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWdydXZib3gtZGFyaycsJ0dydXZib3gnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1tYWNvcy1kYXJrJywnbWFjT1MnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ub3JkLWRhcmsnLCdOb3JkJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbm90aW9uLWRhcmsnLCdOb3Rpb24nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1yb3NlLXBpbmUtZGFyaycsJ1Jvc1x1MDBFOSBQaW5lJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtc29sYXJpemVkLWRhcmsnLCdTb2xhcml6ZWQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC10aGluZ3MtZGFyaycsJ1RoaW5ncycpXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGFya1NjaGVtZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZGFya1NjaGVtZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgIC5zZXROYW1lKCdEYXJrIG1vZGUgYmFja2dyb3VuZCBjb250cmFzdCcpXHJcbiAgICAgICAgLnNldERlc2MoJ0xldmVsIG9mIGNvbnRyYXN0IGJldHdlZW4gc2lkZWJhciBhbmQgbWFpbiBjb250ZW50LicpXHJcbiAgICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWRhcmsnLCdEZWZhdWx0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGFyay10b25hbCcsJ0xvdyBjb250cmFzdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWRhcmstYmxhY2snLCdUcnVlIGJsYWNrJylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5kYXJrU3R5bGUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRhcmtTdHlsZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdicicpO1xyXG5cclxuICAgIGNvbnN0IGZlYXR1cmVzU2VjdGlvbiA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdkaXYnLCB7Y2xzOiAnc2V0dGluZy1pdGVtIHNldHRpbmctaXRlbS1oZWFkaW5nJ30pO1xyXG5cclxuICAgIGNvbnN0IGZlYXR1cmVzU2VjdGlvbkluZm8gPSAgZmVhdHVyZXNTZWN0aW9uLmNyZWF0ZUVsKCdkaXYnLCB7Y2xzOiAnc2V0dGluZy1pdGVtLWluZm8nfSk7XHJcblxyXG4gICAgZmVhdHVyZXNTZWN0aW9uSW5mby5jcmVhdGVFbCgnZGl2Jywge3RleHQ6ICdGZWF0dXJlcycsIGNsczogJ3NldHRpbmctaXRlbS1uYW1lJ30pO1xyXG5cclxuICAgIGNvbnN0IGZlYXR1cmVzU2VjdGlvbkRlc2MgPSBmZWF0dXJlc1NlY3Rpb25JbmZvLmNyZWF0ZUVsKCdkaXYnLCB7Y2xzOiAnc2V0dGluZy1pdGVtLWRlc2NyaXB0aW9uJ30pO1xyXG5cclxuICAgICAgZmVhdHVyZXNTZWN0aW9uRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnc3BhbicsIHtcclxuICAgICAgICAgIHRleHQ6ICdTZWUgJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgZmVhdHVyZXNTZWN0aW9uRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwiZG9jdW1lbnRhdGlvblwiLFxyXG4gICAgICAgICAgaHJlZjogXCJodHRwczovL21pbmltYWwuZ3VpZGVcIixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBmZWF0dXJlc1NlY3Rpb25EZXNjLmFwcGVuZFRleHQoJyBmb3IgZGV0YWlscy4nKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ01hdGNoIHN5c3RlbSBzZXR0aW5nIGZvciBsaWdodCBvciBkYXJrIG1vZGUnKVxyXG4gICAgICAuc2V0RGVzYygnQXV0b21hdGljYWxseSBzd2l0Y2ggYmFzZWQgb24geW91ciBPUyBzZXR0aW5nLicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlU3lzdGVtVGhlbWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoU3lzdGVtVGhlbWUoKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdUZXh0IGxhYmVscyBmb3IgcHJpbWFyeSBuYXZpZ2F0aW9uJylcclxuICAgICAgLnNldERlc2MoJ05hdmlnYXRpb24gaXRlbXMgaW4gdGhlIGxlZnQgc2lkZWJhciB1c2VzIHRleHQgbGFiZWxzLicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5sYWJlbGVkTmF2KVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5sYWJlbGVkTmF2ID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnQ29sb3JmdWwgd2luZG93IGZyYW1lJylcclxuICAgICAgLnNldERlc2MoJ1RoZSB0b3AgYXJlYSBvZiB0aGUgYXBwIHVzZXMgeW91ciBhY2NlbnQgY29sb3IuJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsRnJhbWUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsRnJhbWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnQ29sb3JmdWwgYWN0aXZlIHN0YXRlcycpXHJcbiAgICAgIC5zZXREZXNjKCdBY3RpdmUgZmlsZSBhbmQgbWVudSBpdGVtcyB1c2UgeW91ciBhY2NlbnQgY29sb3IuJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsQWN0aXZlU3RhdGVzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEFjdGl2ZVN0YXRlcyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdDb2xvcmZ1bCBoZWFkaW5ncycpXHJcbiAgICAgIC5zZXREZXNjKCdIZWFkaW5ncyB1c2UgYSBkaWZmZXJlbnQgY29sb3IgZm9yIGVhY2ggc2l6ZS4nKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY29sb3JmdWxIZWFkaW5ncylcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY29sb3JmdWxIZWFkaW5ncyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdNaW5pbWFsIHN0YXR1cyBiYXInKVxyXG4gICAgICAuc2V0RGVzYygnVHVybiBvZmYgdG8gdXNlIGZ1bGwtd2lkdGggc3RhdHVzIGJhci4nKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubWluaW1hbFN0YXR1cylcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubWluaW1hbFN0YXR1cyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1RyaW0gZmlsZSBuYW1lcyBpbiBzaWRlYmFycycpXHJcbiAgICAgIC5zZXREZXNjKCdVc2UgZWxsaXBzZXMgdG8gZml0IGZpbGUgbmFtZXMgb24gYSBzaW5nbGUgbGluZS4nKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MudHJpbU5hbWVzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy50cmltTmFtZXMgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnV29ya3NwYWNlIGJvcmRlcnMnKVxyXG4gICAgICAgIC5zZXREZXNjKCdEaXNwbGF5IGRpdmlkZXIgbGluZXMgYmV0d2VlbiB3b3Jrc3BhY2UgZWxlbWVudHMuJylcclxuICAgICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuYm9yZGVyc1RvZ2dsZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuYm9yZGVyc1RvZ2dsZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0ZvY3VzIG1vZGUnKVxyXG4gICAgICAuc2V0RGVzYygnSGlkZSB0YWIgYmFyIGFuZCBzdGF0dXMgYmFyLCBob3ZlciB0byBkaXNwbGF5LiBDYW4gYmUgdG9nZ2xlZCB2aWEgaG90a2V5LicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5mb2N1c01vZGUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmZvY3VzTW9kZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdVbmRlcmxpbmUgaW50ZXJuYWwgbGlua3MnKVxyXG4gICAgICAuc2V0RGVzYygnU2hvdyB1bmRlcmxpbmVzIG9uIGludGVybmFsIGxpbmtzLicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy51bmRlcmxpbmVJbnRlcm5hbClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudW5kZXJsaW5lSW50ZXJuYWwgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVW5kZXJsaW5lIGV4dGVybmFsIGxpbmtzJylcclxuICAgICAgLnNldERlc2MoJ1Nob3cgdW5kZXJsaW5lcyBvbiBleHRlcm5hbCBsaW5rcy4nKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MudW5kZXJsaW5lRXh0ZXJuYWwpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnVuZGVybGluZUV4dGVybmFsID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ01heGltaXplIG1lZGlhJylcclxuICAgICAgLnNldERlc2MoJ0ltYWdlcyBhbmQgdmlkZW9zIGZpbGwgdGhlIHdpZHRoIG9mIHRoZSBsaW5lLicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5mdWxsV2lkdGhNZWRpYSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZnVsbFdpZHRoTWVkaWEgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2JyJyk7XHJcblxyXG4gICAgY29uc3QgbGF5b3V0U2VjdGlvbiA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdkaXYnLCB7Y2xzOiAnc2V0dGluZy1pdGVtIHNldHRpbmctaXRlbS1oZWFkaW5nJ30pO1xyXG5cclxuICAgIGNvbnN0IGxheW91dFNlY3Rpb25JbmZvID0gIGxheW91dFNlY3Rpb24uY3JlYXRlRWwoJ2RpdicsIHtjbHM6ICdzZXR0aW5nLWl0ZW0taW5mbyd9KTtcclxuXHJcbiAgICBsYXlvdXRTZWN0aW9uSW5mby5jcmVhdGVFbCgnZGl2Jywge3RleHQ6ICdMYXlvdXQnLCBjbHM6ICdzZXR0aW5nLWl0ZW0tbmFtZSd9KTtcclxuXHJcbiAgICBjb25zdCBsYXlvdXRTZWN0aW9uRGVzYyA9IGxheW91dFNlY3Rpb25JbmZvLmNyZWF0ZUVsKCdkaXYnLCB7Y2xzOiAnc2V0dGluZy1pdGVtLWRlc2NyaXB0aW9uJ30pO1xyXG5cclxuICAgICAgbGF5b3V0U2VjdGlvbkRlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ3NwYW4nLCB7XHJcbiAgICAgICAgICB0ZXh0OiAnVGhlc2Ugb3B0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIG9uIGEgcGVyLWZpbGUgYmFzaXMsIHNlZSAnXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIGxheW91dFNlY3Rpb25EZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdhJywge1xyXG4gICAgICAgICAgdGV4dDogXCJkb2N1bWVudGF0aW9uXCIsXHJcbiAgICAgICAgICBocmVmOiBcImh0dHBzOi8vbWluaW1hbC5ndWlkZS9mZWF0dXJlcy9ibG9jay13aWR0aFwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGxheW91dFNlY3Rpb25EZXNjLmFwcGVuZFRleHQoJyBmb3IgZGV0YWlscy4nKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0ltYWdlIGdyaWRzJylcclxuICAgICAgLnNldERlc2MoJ1R1cm4gY29uc2VjdXRpdmUgaW1hZ2VzIGludG8gY29sdW1ucyBcdTIwMTQgdG8gbWFrZSBhIG5ldyByb3csIGFkZCBhbiBleHRyYSBsaW5lIGJyZWFrIGJldHdlZW4gaW1hZ2VzLicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5pbWdHcmlkKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5pbWdHcmlkID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnQ2hhcnQgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnRGVmYXVsdCB3aWR0aCBmb3IgY2hhcnQgYmxvY2tzLicpXHJcbiAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2NoYXJ0LWRlZmF1bHQtd2lkdGgnLCdEZWZhdWx0JylcclxuICAgICAgICAuYWRkT3B0aW9uKCdjaGFydC13aWRlJywnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdjaGFydC1tYXgnLCdNYXhpbXVtIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2NoYXJ0LTEwMCcsJzEwMCUgcGFuZSB3aWR0aCcpXHJcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmNoYXJ0V2lkdGgpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNoYXJ0V2lkdGggPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdJZnJhbWUgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnRGVmYXVsdCB3aWR0aCBmb3IgaWZyYW1lIGJsb2Nrcy4nKVxyXG4gICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAuYWRkT3B0aW9uKCdpZnJhbWUtZGVmYXVsdC13aWR0aCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2lmcmFtZS13aWRlJywnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdpZnJhbWUtbWF4JywnTWF4aW11bSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdpZnJhbWUtMTAwJywnMTAwJSBwYW5lIHdpZHRoJylcclxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuaWZyYW1lV2lkdGgpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmlmcmFtZVdpZHRoID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnSW1hZ2Ugd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnRGVmYXVsdCB3aWR0aCBmb3IgaW1hZ2UgYmxvY2tzLicpXHJcbiAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2ltZy1kZWZhdWx0LXdpZHRoJywnRGVmYXVsdCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaW1nLXdpZGUnLCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2ltZy1tYXgnLCdNYXhpbXVtIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2ltZy0xMDAnLCcxMDAlIHBhbmUgd2lkdGgnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5pbWdXaWR0aClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuaW1nV2lkdGggPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdNYXAgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnRGVmYXVsdCB3aWR0aCBmb3IgbWFwIGJsb2Nrcy4nKVxyXG4gICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAuYWRkT3B0aW9uKCdtYXAtZGVmYXVsdC13aWR0aCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ21hcC13aWRlJywnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdtYXAtbWF4JywnTWF4aW11bSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdtYXAtMTAwJywnMTAwJSBwYW5lIHdpZHRoJylcclxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubWFwV2lkdGgpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm1hcFdpZHRoID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVGFibGUgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnRGVmYXVsdCB3aWR0aCBmb3IgdGFibGUgYW5kIERhdGF2aWV3IGJsb2Nrcy4nKVxyXG4gICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAuYWRkT3B0aW9uKCd0YWJsZS1kZWZhdWx0LXdpZHRoJywnRGVmYXVsdCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbigndGFibGUtd2lkZScsJ1dpZGUgbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbigndGFibGUtbWF4JywnTWF4aW11bSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCd0YWJsZS0xMDAnLCcxMDAlIHBhbmUgd2lkdGgnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy50YWJsZVdpZHRoKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy50YWJsZVdpZHRoID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdicicpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2RpdicsIHt0ZXh0OiAnVHlwb2dyYXBoeScsIGNsczogJ3NldHRpbmctaXRlbSBzZXR0aW5nLWl0ZW0taGVhZGluZyd9KTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1RleHQgZm9udCBzaXplJylcclxuICAgICAgLnNldERlc2MoJ1VzZWQgZm9yIHRoZSBtYWluIHRleHQgKGRlZmF1bHQgMTYpLicpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignMTYnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MudGV4dE5vcm1hbCB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy50ZXh0Tm9ybWFsID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXRGb250U2l6ZSgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1NtYWxsIGZvbnQgc2l6ZScpXHJcbiAgICAgIC5zZXREZXNjKCdVc2VkIGZvciB0ZXh0IGluIHRoZSBzaWRlYmFycyBhbmQgdGFicyAoZGVmYXVsdCAxMykuJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCcxMycpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy50ZXh0U21hbGwgfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudGV4dFNtYWxsID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTGluZSBoZWlnaHQnKVxyXG4gICAgICAuc2V0RGVzYygnTGluZSBoZWlnaHQgb2YgdGV4dCAoZGVmYXVsdCAxLjUpLicpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignMS41JylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLmxpbmVIZWlnaHQgfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZUhlaWdodCA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ05vcm1hbCBsaW5lIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ051bWJlciBvZiBjaGFyYWN0ZXJzIHBlciBsaW5lIChkZWZhdWx0IDQwKS4nKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJzQwJylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLmxpbmVXaWR0aCB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lV2lkdGggPSBwYXJzZUludCh2YWx1ZS50cmltKCkpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1dpZGUgbGluZSB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdOdW1iZXIgb2YgY2hhcmFjdGVycyBwZXIgbGluZSBmb3Igd2lkZSBlbGVtZW50cyAoZGVmYXVsdCA1MCkuJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCc1MCcpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lV2lkdGhXaWRlIHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpbmVXaWR0aFdpZGUgPSBwYXJzZUludCh2YWx1ZS50cmltKCkpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ01heGltdW0gbGluZSB3aWR0aCAlJylcclxuICAgICAgLnNldERlc2MoJ1BlcmNlbnRhZ2Ugb2Ygc3BhY2UgaW5zaWRlIGEgcGFuZSB0aGF0IGEgbGluZSBjYW4gZmlsbCAoZGVmYXVsdCA4OCkuJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCc4OCcpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXhXaWR0aCB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXhXaWR0aCA9IHBhcnNlSW50KHZhbHVlLnRyaW0oKSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdFZGl0b3IgZm9udCcpXHJcbiAgICAgIC5zZXREZXNjKCdPdmVycmlkZXMgdGhlIHRleHQgZm9udCBkZWZpbmVkIGluIE9ic2lkaWFuIEFwcGVhcmFuY2Ugc2V0dGluZ3Mgd2hlbiBpbiBlZGl0IG1vZGUuJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCcnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MuZWRpdG9yRm9udCB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5lZGl0b3JGb250ID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICB9XHJcbn1cclxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7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 diff --git a/.obsidian/plugins/obsidian-minimal-settings/manifest.json b/.obsidian/plugins/obsidian-minimal-settings/manifest.json index 17584fe..f0ccbe1 100644 --- a/.obsidian/plugins/obsidian-minimal-settings/manifest.json +++ b/.obsidian/plugins/obsidian-minimal-settings/manifest.json @@ -1,8 +1,8 @@ { "id": "obsidian-minimal-settings", "name": "Minimal Theme Settings", - "version": "6.3.1", - "minAppVersion": "0.16.0", + "version": "7.2.4", + "minAppVersion": "1.1.9", "description": "Change the colors, fonts and features of Minimal Theme.", "author": "@kepano", "authorUrl": "https://www.twitter.com/kepano", diff --git a/.obsidian/plugins/obsidian-outliner/main.js b/.obsidian/plugins/obsidian-outliner/main.js index 15468bb..798c593 100644 --- a/.obsidian/plugins/obsidian-outliner/main.js +++ b/.obsidian/plugins/obsidian-outliner/main.js @@ -812,23 +812,46 @@ class SelectAllContent { const list = root.getListUnderCursor(); const contentStart = list.getFirstLineContentStartAfterCheckbox(); const contentEnd = list.getLastLineContentEnd(); - if (selectionFrom.line < contentStart.line || - selectionTo.line > contentEnd.line) { - return false; - } + const listUnderSelectionFrom = root.getListUnderLine(selectionFrom.line); + const listStart = listUnderSelectionFrom.getFirstLineContentStartAfterCheckbox(); + const listEnd = listUnderSelectionFrom.getContentEndIncludingChildren(); this.stopPropagation = true; this.updated = true; if (selectionFrom.line === contentStart.line && selectionFrom.ch === contentStart.ch && selectionTo.line === contentEnd.line && selectionTo.ch === contentEnd.ch) { + if (list.getChildren().length) { + // select sub lists + root.replaceSelections([ + { anchor: contentStart, head: list.getContentEndIncludingChildren() }, + ]); + } + else { + // select whole list + root.replaceSelections([{ anchor: rootStart, head: rootEnd }]); + } + } + else if (listStart.ch == selectionFrom.ch && + listEnd.line == selectionTo.line && + listEnd.ch == selectionTo.ch) { // select whole list root.replaceSelections([{ anchor: rootStart, head: rootEnd }]); } - else { + else if ((selectionFrom.line > contentStart.line || + (selectionFrom.line == contentStart.line && + selectionFrom.ch >= contentStart.ch)) && + (selectionTo.line < contentEnd.line || + (selectionTo.line == contentEnd.line && + selectionTo.ch <= contentEnd.ch))) { // select whole line root.replaceSelections([{ anchor: contentStart, head: contentEnd }]); } + else { + this.stopPropagation = false; + this.updated = false; + return false; + } return true; } } @@ -2215,7 +2238,7 @@ class ReleaseNotesAnnouncement { if (releaseNotes.trim().length === 0) { return; } - const modalTitle = `Welcome to Obsidian Outliner ${"4.7.1"}`; + const modalTitle = `Welcome to Obsidian Outliner ${"4.8.0"}`; this.modal = new ReleaseNotesModal(this.plugin, modalTitle, releaseNotes, this.handleClose); this.modal.open(); }; @@ -2223,7 +2246,7 @@ class ReleaseNotesAnnouncement { if (!this.modal) { return; } - this.settings.previousRelease = "4.7.1"; + this.settings.previousRelease = "4.8.0"; yield this.settings.save(); }); } @@ -3351,4 +3374,4 @@ class ObsidianOutlinerPlugin extends obsidian.Plugin { } module.exports = ObsidianOutlinerPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9vcGVyYXRpb25zL01vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lLnRzIiwic3JjL2VkaXRvci9pbmRleC50cyIsInNyYy91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFjay50cyIsInNyYy9mZWF0dXJlcy9BcnJvd0xlZnRBbmRDdHJsQXJyb3dMZWZ0QmVoYXZpb3VyT3ZlcnJpZGUudHMiLCJzcmMvcm9vdC9pbmRleC50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnRzIiwic3JjL2ZlYXR1cmVzL0JhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlLnRzIiwic3JjL2ZlYXR1cmVzL0JldHRlckxpc3RzU3R5bGVzLnRzIiwic3JjL29wZXJhdGlvbnMvU2VsZWN0QWxsQ29udGVudC50cyIsInNyYy9mZWF0dXJlcy9DdHJsQUFuZENtZEFCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxOZXh0TGluZUNvbnRlbnRTdGFydC50cyIsInNyYy9mZWF0dXJlcy9EZWxldGVCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy9vcGVyYXRpb25zL01vdmVMaXN0VG9EaWZmZXJlbnRQb3NpdGlvbi50cyIsInNyYy9mZWF0dXJlcy9EcmFnQW5kRHJvcC50cyIsInNyYy9vcGVyYXRpb25zL0tlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMudHMiLCJzcmMvb3BlcmF0aW9ucy9LZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnQudHMiLCJzcmMvZmVhdHVyZXMvRWRpdG9yU2VsZWN0aW9uc0JlaGF2aW91ck92ZXJyaWRlLnRzIiwic3JjL3V0aWxzL2NoZWNrYm94UmUudHMiLCJzcmMvdXRpbHMvaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gudHMiLCJzcmMvb3BlcmF0aW9ucy9DcmVhdGVOZXdJdGVtLnRzIiwic3JjL29wZXJhdGlvbnMvT3V0ZGVudExpc3QudHMiLCJzcmMvb3BlcmF0aW9ucy9PdXRkZW50TGlzdElmSXRzRW1wdHkudHMiLCJzcmMvZmVhdHVyZXMvRW50ZXJCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy91dGlscy9jcmVhdGVFZGl0b3JDYWxsYmFjay50cyIsInNyYy9mZWF0dXJlcy9MaXN0c0ZvbGRpbmdDb21tYW5kcy50cyIsInNyYy9vcGVyYXRpb25zL0luZGVudExpc3QudHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlTGlzdERvd24udHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlTGlzdFVwLnRzIiwic3JjL2ZlYXR1cmVzL0xpc3RzTW92ZW1lbnRDb21tYW5kcy50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxDdXJyZW50TGluZUNvbnRlbnRTdGFydC50cyIsInNyYy9mZWF0dXJlcy9NZXRhQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGUudHMiLCJzcmMvZmVhdHVyZXMvUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50LnRzIiwic3JjL2ZlYXR1cmVzL1NldHRpbmdzVGFiLnRzIiwic3JjL2ZlYXR1cmVzL1NoaWZ0VGFiQmVoYXZpb3VyT3ZlcnJpZGUudHMiLCJzcmMvZmVhdHVyZXMvU3lzdGVtSW5mby50cyIsInNyYy9mZWF0dXJlcy9UYWJCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy9mZWF0dXJlcy9WZXJ0aWNhbExpbmVzLnRzIiwic3JjL3NlcnZpY2VzL0NoYW5nZXNBcHBsaWNhdG9yLnRzIiwic3JjL3NlcnZpY2VzL0lNRURldGVjdG9yLnRzIiwic3JjL3NlcnZpY2VzL0xvZ2dlci50cyIsInNyYy9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzLnRzIiwic3JjL3NlcnZpY2VzL09wZXJhdGlvblBlcmZvcm1lci50cyIsInNyYy9zZXJ2aWNlcy9QYXJzZXIudHMiLCJzcmMvc2VydmljZXMvU2V0dGluZ3MudHMiLCJzcmMvT2JzaWRpYW5PdXRsaW5lclBsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMucHVzaChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy5wdXNoKF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBMaXN0TGluZSwgUG9zaXRpb24sIFJvb3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmUgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gdGhpcy5yb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGN1cnNvciA9IHRoaXMucm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCk7XG4gICAgY29uc3QgbGluZU5vID0gbGluZXMuZmluZEluZGV4KChsKSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBjdXJzb3IuY2ggPT09IGwuZnJvbS5jaCArIGxpc3QuZ2V0Q2hlY2tib3hMZW5ndGgoKSAmJlxuICAgICAgICBjdXJzb3IubGluZSA9PT0gbC5mcm9tLmxpbmVcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpZiAobGluZU5vID09PSAwKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRJdGVtKHJvb3QsIGN1cnNvcik7XG4gICAgfSBlbHNlIGlmIChsaW5lTm8gPiAwKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3JUb1ByZXZpb3VzTm90ZUxpbmUocm9vdCwgbGluZXMsIGxpbmVObyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ3Vyc29yVG9QcmV2aW91c05vdGVMaW5lKFxuICAgIHJvb3Q6IFJvb3QsXG4gICAgbGluZXM6IExpc3RMaW5lW10sXG4gICAgbGluZU5vOiBudW1iZXJcbiAgKSB7XG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICByb290LnJlcGxhY2VDdXJzb3IobGluZXNbbGluZU5vIC0gMV0udG8pO1xuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkSXRlbShyb290OiBSb290LCBjdXJzb3I6IFBvc2l0aW9uKSB7XG4gICAgY29uc3QgcHJldiA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShjdXJzb3IubGluZSAtIDEpO1xuXG4gICAgaWYgKCFwcmV2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBpZiAocHJldi5pc0ZvbGRlZCgpKSB7XG4gICAgICBjb25zdCBmb2xkUm9vdCA9IHByZXYuZ2V0VG9wRm9sZFJvb3QoKTtcbiAgICAgIGNvbnN0IGZpcnN0TGluZUVuZCA9IGZvbGRSb290LmdldExpbmVzSW5mbygpWzBdLnRvO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKGZpcnN0TGluZUVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihwcmV2LmdldExhc3RMaW5lQ29udGVudEVuZCgpKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IEVkaXRvciwgZWRpdG9ySW5mb0ZpZWxkIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7XG4gIGZvbGRFZmZlY3QsXG4gIGZvbGRhYmxlLFxuICBmb2xkZWRSYW5nZXMsXG4gIHVuZm9sZEVmZmVjdCxcbn0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5pbXBvcnQgeyBFZGl0b3JTdGF0ZSB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgRWRpdG9yVmlldywgcnVuU2NvcGVIYW5kbGVycyB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmV4cG9ydCBjbGFzcyBNeUVkaXRvclBvc2l0aW9uIHtcbiAgbGluZTogbnVtYmVyO1xuICBjaDogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3JSYW5nZSB7XG4gIGZyb206IE15RWRpdG9yUG9zaXRpb247XG4gIHRvOiBNeUVkaXRvclBvc2l0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3JTZWxlY3Rpb24ge1xuICBhbmNob3I6IE15RWRpdG9yUG9zaXRpb247XG4gIGhlYWQ6IE15RWRpdG9yUG9zaXRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFZGl0b3JGcm9tU3RhdGUoc3RhdGU6IEVkaXRvclN0YXRlKSB7XG4gIGNvbnN0IHsgZWRpdG9yIH0gPSBzdGF0ZS5maWVsZChlZGl0b3JJbmZvRmllbGQpO1xuXG4gIGlmICghZWRpdG9yKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gbmV3IE15RWRpdG9yKGVkaXRvcik7XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgT2JzaWRpYW5ab29tUGx1Z2luPzoge1xuICAgICAgZ2V0Wm9vbVJhbmdlKGU6IEVkaXRvcik6IE15RWRpdG9yUmFuZ2U7XG4gICAgICB6b29tT3V0KGU6IEVkaXRvcik6IHZvaWQ7XG4gICAgICB6b29tSW4oZTogRWRpdG9yLCBsaW5lOiBudW1iZXIpOiB2b2lkO1xuICAgICAgcmVmcmVzaFpvb20/KGU6IEVkaXRvcik6IHZvaWQ7XG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb2xkSW5zaWRlKHZpZXc6IEVkaXRvclZpZXcsIGZyb206IG51bWJlciwgdG86IG51bWJlcikge1xuICBsZXQgZm91bmQ6IHsgZnJvbTogbnVtYmVyOyB0bzogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcbiAgZm9sZGVkUmFuZ2VzKHZpZXcuc3RhdGUpLmJldHdlZW4oZnJvbSwgdG8sIChmcm9tLCB0bykgPT4ge1xuICAgIGlmICghZm91bmQgfHwgZm91bmQuZnJvbSA+IGZyb20pIGZvdW5kID0geyBmcm9tLCB0byB9O1xuICB9KTtcbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3Ige1xuICBwcml2YXRlIHZpZXc6IEVkaXRvclZpZXc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlOiBFZGl0b3IpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHRoaXMudmlldyA9ICh0aGlzLmUgYXMgYW55KS5jbTtcbiAgfVxuXG4gIGdldEN1cnNvcigpOiBNeUVkaXRvclBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5lLmdldEN1cnNvcigpO1xuICB9XG5cbiAgZ2V0TGluZShuOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0TGluZShuKTtcbiAgfVxuXG4gIGxhc3RMaW5lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZS5sYXN0TGluZSgpO1xuICB9XG5cbiAgbGlzdFNlbGVjdGlvbnMoKTogTXlFZGl0b3JTZWxlY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuZS5saXN0U2VsZWN0aW9ucygpO1xuICB9XG5cbiAgZ2V0UmFuZ2UoZnJvbTogTXlFZGl0b3JQb3NpdGlvbiwgdG86IE15RWRpdG9yUG9zaXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0UmFuZ2UoZnJvbSwgdG8pO1xuICB9XG5cbiAgcmVwbGFjZVJhbmdlKFxuICAgIHJlcGxhY2VtZW50OiBzdHJpbmcsXG4gICAgZnJvbTogTXlFZGl0b3JQb3NpdGlvbixcbiAgICB0bzogTXlFZGl0b3JQb3NpdGlvblxuICApOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5lLnJlcGxhY2VSYW5nZShyZXBsYWNlbWVudCwgZnJvbSwgdG8pO1xuICB9XG5cbiAgc2V0U2VsZWN0aW9ucyhzZWxlY3Rpb25zOiBNeUVkaXRvclNlbGVjdGlvbltdKTogdm9pZCB7XG4gICAgdGhpcy5lLnNldFNlbGVjdGlvbnMoc2VsZWN0aW9ucyk7XG4gIH1cblxuICBzZXRWYWx1ZSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmUuc2V0VmFsdWUodGV4dCk7XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIG9mZnNldFRvUG9zKG9mZnNldDogbnVtYmVyKTogTXlFZGl0b3JQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZS5vZmZzZXRUb1BvcyhvZmZzZXQpO1xuICB9XG5cbiAgcG9zVG9PZmZzZXQocG9zOiBNeUVkaXRvclBvc2l0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5lLnBvc1RvT2Zmc2V0KHBvcyk7XG4gIH1cblxuICBmb2xkKG46IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmlldyB9ID0gdGhpcztcbiAgICBjb25zdCBsID0gdmlldy5saW5lQmxvY2tBdCh2aWV3LnN0YXRlLmRvYy5saW5lKG4gKyAxKS5mcm9tKTtcbiAgICBjb25zdCByYW5nZSA9IGZvbGRhYmxlKHZpZXcuc3RhdGUsIGwuZnJvbSwgbC50byk7XG5cbiAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLmZyb20gPT09IHJhbmdlLnRvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmlldy5kaXNwYXRjaCh7IGVmZmVjdHM6IFtmb2xkRWZmZWN0Lm9mKHJhbmdlKV0gfSk7XG4gIH1cblxuICB1bmZvbGQobjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgeyB2aWV3IH0gPSB0aGlzO1xuICAgIGNvbnN0IGwgPSB2aWV3LmxpbmVCbG9ja0F0KHZpZXcuc3RhdGUuZG9jLmxpbmUobiArIDEpLmZyb20pO1xuICAgIGNvbnN0IHJhbmdlID0gZm9sZEluc2lkZSh2aWV3LCBsLmZyb20sIGwudG8pO1xuXG4gICAgaWYgKCFyYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZpZXcuZGlzcGF0Y2goeyBlZmZlY3RzOiBbdW5mb2xkRWZmZWN0Lm9mKHJhbmdlKV0gfSk7XG4gIH1cblxuICBnZXRBbGxGb2xkZWRMaW5lcygpOiBudW1iZXJbXSB7XG4gICAgY29uc3QgYyA9IGZvbGRlZFJhbmdlcyh0aGlzLnZpZXcuc3RhdGUpLml0ZXIoKTtcbiAgICBjb25zdCByZXM6IG51bWJlcltdID0gW107XG4gICAgd2hpbGUgKGMudmFsdWUpIHtcbiAgICAgIHJlcy5wdXNoKHRoaXMub2Zmc2V0VG9Qb3MoYy5mcm9tKS5saW5lKTtcbiAgICAgIGMubmV4dCgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgdHJpZ2dlck9uS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgcnVuU2NvcGVIYW5kbGVycyh0aGlzLnZpZXcsIGUsIFwiZWRpdG9yXCIpO1xuICB9XG5cbiAgZ2V0Wm9vbVJhbmdlKCk6IE15RWRpdG9yUmFuZ2UgfCBudWxsIHtcbiAgICBpZiAoIXdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luLmdldFpvb21SYW5nZSh0aGlzLmUpO1xuICB9XG5cbiAgem9vbU91dCgpIHtcbiAgICBpZiAoIXdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luLnpvb21PdXQodGhpcy5lKTtcbiAgfVxuXG4gIHpvb21JbihsaW5lOiBudW1iZXIpIHtcbiAgICBpZiAoIXdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luLnpvb21Jbih0aGlzLmUsIGxpbmUpO1xuICB9XG5cbiAgdHJ5UmVmcmVzaFpvb20obGluZTogbnVtYmVyKSB7XG4gICAgaWYgKCF3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4ucmVmcmVzaFpvb20pIHtcbiAgICAgIHdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4ucmVmcmVzaFpvb20odGhpcy5lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lk9ic2lkaWFuWm9vbVBsdWdpbi56b29tSW4odGhpcy5lLCBsaW5lKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciwgZ2V0RWRpdG9yRnJvbVN0YXRlIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soY29uZmlnOiB7XG4gIGNoZWNrPzogKGVkaXRvcjogTXlFZGl0b3IpID0+IGJvb2xlYW47XG4gIHJ1bjogKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBzaG91bGRVcGRhdGU6IGJvb2xlYW47XG4gICAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uOiBib29sZWFuO1xuICB9O1xufSkge1xuICBjb25zdCBjaGVjayA9IGNvbmZpZy5jaGVjayB8fCAoKCkgPT4gdHJ1ZSk7XG4gIGNvbnN0IHsgcnVuIH0gPSBjb25maWc7XG5cbiAgcmV0dXJuICh2aWV3OiBFZGl0b3JWaWV3KTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgZWRpdG9yID0gZ2V0RWRpdG9yRnJvbVN0YXRlKHZpZXcuc3RhdGUpO1xuXG4gICAgaWYgKCFjaGVjayhlZGl0b3IpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgeyBzaG91bGRVcGRhdGUsIHNob3VsZFN0b3BQcm9wYWdhdGlvbiB9ID0gcnVuKGVkaXRvcik7XG5cbiAgICByZXR1cm4gc2hvdWxkVXBkYXRlIHx8IHNob3VsZFN0b3BQcm9wYWdhdGlvbjtcbiAgfTtcbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmUgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9Nb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkTGluZVwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgQXJyb3dMZWZ0QW5kQ3RybEFycm93TGVmdEJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJBcnJvd0xlZnRcIixcbiAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHdpbjogXCJjLUFycm93TGVmdFwiLFxuICAgICAgICAgIGxpbnV4OiBcImMtQXJyb3dMZWZ0XCIsXG4gICAgICAgICAgcnVuOiBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgIT09IFwibmV2ZXJcIiAmJlxuICAgICAgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkTGluZShyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gY21wUG9zKGE6IFBvc2l0aW9uLCBiOiBQb3NpdGlvbikge1xuICByZXR1cm4gYS5saW5lIC0gYi5saW5lIHx8IGEuY2ggLSBiLmNoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF4UG9zKGE6IFBvc2l0aW9uLCBiOiBQb3NpdGlvbikge1xuICByZXR1cm4gY21wUG9zKGEsIGIpIDwgMCA/IGIgOiBhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluUG9zKGE6IFBvc2l0aW9uLCBiOiBQb3NpdGlvbikge1xuICByZXR1cm4gY21wUG9zKGEsIGIpIDwgMCA/IGEgOiBiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSYW5nZXNJbnRlcnNlY3RzKFxuICBhOiBbUG9zaXRpb24sIFBvc2l0aW9uXSxcbiAgYjogW1Bvc2l0aW9uLCBQb3NpdGlvbl1cbikge1xuICByZXR1cm4gY21wUG9zKGFbMV0sIGJbMF0pID49IDAgJiYgY21wUG9zKGFbMF0sIGJbMV0pIDw9IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3Q6IFJvb3QpIHtcbiAgZnVuY3Rpb24gdmlzaXQocGFyZW50OiBSb290IHwgTGlzdCkge1xuICAgIGxldCBpbmRleCA9IDE7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHBhcmVudC5nZXRDaGlsZHJlbigpKSB7XG4gICAgICBpZiAoL1xcZCtcXC4vLnRlc3QoY2hpbGQuZ2V0QnVsbGV0KCkpKSB7XG4gICAgICAgIGNoaWxkLnJlcGxhdGVCdWxsZXQoYCR7aW5kZXgrK30uYCk7XG4gICAgICB9XG5cbiAgICAgIHZpc2l0KGNoaWxkKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdChyb290KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3NpdGlvbiB7XG4gIGNoOiBudW1iZXI7XG4gIGxpbmU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0TGluZSB7XG4gIHRleHQ6IHN0cmluZztcbiAgZnJvbTogUG9zaXRpb247XG4gIHRvOiBQb3NpdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYW5nZSB7XG4gIGFuY2hvcjogUG9zaXRpb247XG4gIGhlYWQ6IFBvc2l0aW9uO1xufVxuXG5sZXQgaWRTZXEgPSAwO1xuXG5leHBvcnQgY2xhc3MgTGlzdCB7XG4gIHByaXZhdGUgaWQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBwYXJlbnQ6IExpc3QgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjaGlsZHJlbjogTGlzdFtdID0gW107XG4gIHByaXZhdGUgbm90ZXNJbmRlbnQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm9vdDogUm9vdCxcbiAgICBwcml2YXRlIGluZGVudDogc3RyaW5nLFxuICAgIHByaXZhdGUgYnVsbGV0OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBvcHRpb25hbENoZWNrYm94OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBzcGFjZUFmdGVyQnVsbGV0OiBzdHJpbmcsXG4gICAgZmlyc3RMaW5lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBmb2xkUm9vdDogYm9vbGVhblxuICApIHtcbiAgICB0aGlzLmlkID0gaWRTZXErKztcbiAgICB0aGlzLmxpbmVzLnB1c2goZmlyc3RMaW5lKTtcbiAgfVxuXG4gIGdldElEKCkge1xuICAgIHJldHVybiB0aGlzLmlkO1xuICB9XG5cbiAgZ2V0Tm90ZXNJbmRlbnQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubm90ZXNJbmRlbnQ7XG4gIH1cblxuICBzZXROb3Rlc0luZGVudChub3Rlc0luZGVudDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMubm90ZXNJbmRlbnQgIT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm90ZXMgaW5kZW50IGFscmVhZHkgcHJvdmlkZWRgKTtcbiAgICB9XG4gICAgdGhpcy5ub3Rlc0luZGVudCA9IG5vdGVzSW5kZW50O1xuICB9XG5cbiAgYWRkTGluZSh0ZXh0OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5ub3Rlc0luZGVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5hYmxlIHRvIGFkZCBsaW5lLCBub3RlcyBpbmRlbnQgc2hvdWxkIGJlIHByb3ZpZGVkIGZpcnN0YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmVzLnB1c2godGV4dCk7XG4gIH1cblxuICByZXBsYWNlTGluZXMobGluZXM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKGxpbmVzLmxlbmd0aCA+IDEgJiYgdGhpcy5ub3Rlc0luZGVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5hYmxlIHRvIGFkZCBsaW5lLCBub3RlcyBpbmRlbnQgc2hvdWxkIGJlIHByb3ZpZGVkIGZpcnN0YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmVzID0gbGluZXM7XG4gIH1cblxuICBnZXRMaW5lQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGluZXMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0Um9vdCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb290O1xuICB9XG5cbiAgZ2V0Q2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4uY29uY2F0KCk7XG4gIH1cblxuICBnZXRMaW5lc0luZm8oKTogTGlzdExpbmVbXSB7XG4gICAgY29uc3Qgc3RhcnRMaW5lID0gdGhpcy5yb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YodGhpcylbMF07XG5cbiAgICByZXR1cm4gdGhpcy5saW5lcy5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgY29uc3QgbGluZSA9IHN0YXJ0TGluZSArIGk7XG4gICAgICBjb25zdCBzdGFydENoID1cbiAgICAgICAgaSA9PT0gMCA/IHRoaXMuZ2V0Q29udGVudFN0YXJ0Q2goKSA6IHRoaXMubm90ZXNJbmRlbnQubGVuZ3RoO1xuICAgICAgY29uc3QgZW5kQ2ggPSBzdGFydENoICsgcm93Lmxlbmd0aDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGV4dDogcm93LFxuICAgICAgICBmcm9tOiB7IGxpbmUsIGNoOiBzdGFydENoIH0sXG4gICAgICAgIHRvOiB7IGxpbmUsIGNoOiBlbmRDaCB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldExpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5saW5lcy5jb25jYXQoKTtcbiAgfVxuXG4gIGdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpIHtcbiAgICBjb25zdCBzdGFydExpbmUgPSB0aGlzLnJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZih0aGlzKVswXTtcblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBzdGFydExpbmUsXG4gICAgICBjaDogdGhpcy5nZXRDb250ZW50U3RhcnRDaCgpLFxuICAgIH07XG4gIH1cblxuICBnZXRGaXJzdExpbmVDb250ZW50U3RhcnRBZnRlckNoZWNrYm94KCkge1xuICAgIGNvbnN0IHN0YXJ0TGluZSA9IHRoaXMucm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKHRoaXMpWzBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IHN0YXJ0TGluZSxcbiAgICAgIGNoOiB0aGlzLmdldENvbnRlbnRTdGFydENoKCkgKyB0aGlzLmdldENoZWNrYm94TGVuZ3RoKCksXG4gICAgfTtcbiAgfVxuXG4gIGdldExhc3RMaW5lQ29udGVudEVuZCgpIHtcbiAgICBjb25zdCBlbmRMaW5lID0gdGhpcy5yb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YodGhpcylbMV07XG4gICAgY29uc3QgZW5kQ2ggPVxuICAgICAgdGhpcy5saW5lcy5sZW5ndGggPT09IDFcbiAgICAgICAgPyB0aGlzLmdldENvbnRlbnRTdGFydENoKCkgKyB0aGlzLmxpbmVzWzBdLmxlbmd0aFxuICAgICAgICA6IHRoaXMubm90ZXNJbmRlbnQubGVuZ3RoICsgdGhpcy5saW5lc1t0aGlzLmxpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aDtcblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBlbmRMaW5lLFxuICAgICAgY2g6IGVuZENoLFxuICAgIH07XG4gIH1cblxuICBnZXRDb250ZW50RW5kSW5jbHVkaW5nQ2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGFzdENoaWxkKCkuZ2V0TGFzdExpbmVDb250ZW50RW5kKCk7XG4gIH1cblxuICBwcml2YXRlIGdldExhc3RDaGlsZCgpIHtcbiAgICBsZXQgbGFzdENoaWxkOiBMaXN0ID0gdGhpcztcblxuICAgIHdoaWxlICghbGFzdENoaWxkLmlzRW1wdHkoKSkge1xuICAgICAgbGFzdENoaWxkID0gbGFzdENoaWxkLmdldENoaWxkcmVuKCkubGFzdCgpO1xuICAgIH1cblxuICAgIHJldHVybiBsYXN0Q2hpbGQ7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRlbnRTdGFydENoKCkge1xuICAgIHJldHVybiB0aGlzLmluZGVudC5sZW5ndGggKyB0aGlzLmJ1bGxldC5sZW5ndGggKyAxO1xuICB9XG5cbiAgaXNGb2xkZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZm9sZFJvb3QpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmlzRm9sZGVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNGb2xkUm9vdCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb2xkUm9vdDtcbiAgfVxuXG4gIGdldFRvcEZvbGRSb290KCkge1xuICAgIGxldCB0bXA6IExpc3QgPSB0aGlzO1xuICAgIGxldCBmb2xkUm9vdDogTGlzdCB8IG51bGwgPSBudWxsO1xuICAgIHdoaWxlICh0bXApIHtcbiAgICAgIGlmICh0bXAuaXNGb2xkUm9vdCgpKSB7XG4gICAgICAgIGZvbGRSb290ID0gdG1wO1xuICAgICAgfVxuICAgICAgdG1wID0gdG1wLnBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIGZvbGRSb290O1xuICB9XG5cbiAgZ2V0TGV2ZWwoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMucGFyZW50KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0TGV2ZWwoKSArIDE7XG4gIH1cblxuICB1bmluZGVudENvbnRlbnQoZnJvbTogbnVtYmVyLCB0aWxsOiBudW1iZXIpIHtcbiAgICB0aGlzLmluZGVudCA9IHRoaXMuaW5kZW50LnNsaWNlKDAsIGZyb20pICsgdGhpcy5pbmRlbnQuc2xpY2UodGlsbCk7XG4gICAgaWYgKHRoaXMubm90ZXNJbmRlbnQgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubm90ZXNJbmRlbnQgPVxuICAgICAgICB0aGlzLm5vdGVzSW5kZW50LnNsaWNlKDAsIGZyb20pICsgdGhpcy5ub3Rlc0luZGVudC5zbGljZSh0aWxsKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGRyZW4pIHtcbiAgICAgIGNoaWxkLnVuaW5kZW50Q29udGVudChmcm9tLCB0aWxsKTtcbiAgICB9XG4gIH1cblxuICBpbmRlbnRDb250ZW50KGluZGVudFBvczogbnVtYmVyLCBpbmRlbnRDaGFyczogc3RyaW5nKSB7XG4gICAgdGhpcy5pbmRlbnQgPVxuICAgICAgdGhpcy5pbmRlbnQuc2xpY2UoMCwgaW5kZW50UG9zKSArXG4gICAgICBpbmRlbnRDaGFycyArXG4gICAgICB0aGlzLmluZGVudC5zbGljZShpbmRlbnRQb3MpO1xuICAgIGlmICh0aGlzLm5vdGVzSW5kZW50ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLm5vdGVzSW5kZW50ID1cbiAgICAgICAgdGhpcy5ub3Rlc0luZGVudC5zbGljZSgwLCBpbmRlbnRQb3MpICtcbiAgICAgICAgaW5kZW50Q2hhcnMgK1xuICAgICAgICB0aGlzLm5vdGVzSW5kZW50LnNsaWNlKGluZGVudFBvcyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkcmVuKSB7XG4gICAgICBjaGlsZC5pbmRlbnRDb250ZW50KGluZGVudFBvcywgaW5kZW50Q2hhcnMpO1xuICAgIH1cbiAgfVxuXG4gIGdldEZpcnN0TGluZUluZGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbmRlbnQ7XG4gIH1cblxuICBnZXRCdWxsZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVsbGV0O1xuICB9XG5cbiAgZ2V0U3BhY2VBZnRlckJ1bGxldCgpIHtcbiAgICByZXR1cm4gdGhpcy5zcGFjZUFmdGVyQnVsbGV0O1xuICB9XG5cbiAgZ2V0Q2hlY2tib3hMZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uYWxDaGVja2JveC5sZW5ndGg7XG4gIH1cblxuICByZXBsYXRlQnVsbGV0KGJ1bGxldDogc3RyaW5nKSB7XG4gICAgdGhpcy5idWxsZXQgPSBidWxsZXQ7XG4gIH1cblxuICBnZXRQYXJlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgYWRkQmVmb3JlQWxsKGxpc3Q6IExpc3QpIHtcbiAgICB0aGlzLmNoaWxkcmVuLnVuc2hpZnQobGlzdCk7XG4gICAgbGlzdC5wYXJlbnQgPSB0aGlzO1xuICB9XG5cbiAgYWRkQWZ0ZXJBbGwobGlzdDogTGlzdCkge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaChsaXN0KTtcbiAgICBsaXN0LnBhcmVudCA9IHRoaXM7XG4gIH1cblxuICByZW1vdmVDaGlsZChsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihsaXN0KTtcbiAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpLCAxKTtcbiAgICBsaXN0LnBhcmVudCA9IG51bGw7XG4gIH1cblxuICBhZGRCZWZvcmUoYmVmb3JlOiBMaXN0LCBsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihiZWZvcmUpO1xuICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGksIDAsIGxpc3QpO1xuICAgIGxpc3QucGFyZW50ID0gdGhpcztcbiAgfVxuXG4gIGFkZEFmdGVyKGJlZm9yZTogTGlzdCwgbGlzdDogTGlzdCkge1xuICAgIGNvbnN0IGkgPSB0aGlzLmNoaWxkcmVuLmluZGV4T2YoYmVmb3JlKTtcbiAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpICsgMSwgMCwgbGlzdCk7XG4gICAgbGlzdC5wYXJlbnQgPSB0aGlzO1xuICB9XG5cbiAgZ2V0UHJldlNpYmxpbmdPZihsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihsaXN0KTtcbiAgICByZXR1cm4gaSA+IDAgPyB0aGlzLmNoaWxkcmVuW2kgLSAxXSA6IG51bGw7XG4gIH1cblxuICBnZXROZXh0U2libGluZ09mKGxpc3Q6IExpc3QpIHtcbiAgICBjb25zdCBpID0gdGhpcy5jaGlsZHJlbi5pbmRleE9mKGxpc3QpO1xuICAgIHJldHVybiBpID49IDAgJiYgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoID8gdGhpcy5jaGlsZHJlbltpICsgMV0gOiBudWxsO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcmludCgpIHtcbiAgICBsZXQgcmVzID0gXCJcIjtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5saW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzICs9XG4gICAgICAgIGkgPT09IDBcbiAgICAgICAgICA/IHRoaXMuaW5kZW50ICsgdGhpcy5idWxsZXQgKyB0aGlzLnNwYWNlQWZ0ZXJCdWxsZXRcbiAgICAgICAgICA6IHRoaXMubm90ZXNJbmRlbnQ7XG4gICAgICByZXMgKz0gdGhpcy5saW5lc1tpXTtcbiAgICAgIHJlcyArPSBcIlxcblwiO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbikge1xuICAgICAgcmVzICs9IGNoaWxkLnByaW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIGNsb25lKG5ld1Jvb3Q6IFJvb3QpIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBMaXN0KFxuICAgICAgbmV3Um9vdCxcbiAgICAgIHRoaXMuaW5kZW50LFxuICAgICAgdGhpcy5idWxsZXQsXG4gICAgICB0aGlzLm9wdGlvbmFsQ2hlY2tib3gsXG4gICAgICB0aGlzLnNwYWNlQWZ0ZXJCdWxsZXQsXG4gICAgICBcIlwiLFxuICAgICAgdGhpcy5mb2xkUm9vdFxuICAgICk7XG4gICAgY2xvbmUuaWQgPSB0aGlzLmlkO1xuICAgIGNsb25lLmxpbmVzID0gdGhpcy5saW5lcy5jb25jYXQoKTtcbiAgICBjbG9uZS5ub3Rlc0luZGVudCA9IHRoaXMubm90ZXNJbmRlbnQ7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkcmVuKSB7XG4gICAgICBjbG9uZS5hZGRBZnRlckFsbChjaGlsZC5jbG9uZShuZXdSb290KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSb290IHtcbiAgcHJpdmF0ZSByb290TGlzdCA9IG5ldyBMaXN0KHRoaXMsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIGZhbHNlKTtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25zOiBSYW5nZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdGFydDogUG9zaXRpb24sXG4gICAgcHJpdmF0ZSBlbmQ6IFBvc2l0aW9uLFxuICAgIHNlbGVjdGlvbnM6IFJhbmdlW11cbiAgKSB7XG4gICAgdGhpcy5yZXBsYWNlU2VsZWN0aW9ucyhzZWxlY3Rpb25zKTtcbiAgfVxuXG4gIGdldFJvb3RMaXN0KCkge1xuICAgIHJldHVybiB0aGlzLnJvb3RMaXN0O1xuICB9XG5cbiAgZ2V0Q29udGVudFJhbmdlKCk6IFtQb3NpdGlvbiwgUG9zaXRpb25dIHtcbiAgICByZXR1cm4gW3RoaXMuZ2V0Q29udGVudFN0YXJ0KCksIHRoaXMuZ2V0Q29udGVudEVuZCgpXTtcbiAgfVxuXG4gIGdldENvbnRlbnRTdGFydCgpOiBQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdGFydCB9O1xuICB9XG5cbiAgZ2V0Q29udGVudEVuZCgpOiBQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5lbmQgfTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbnMoKTogUmFuZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9ucy5tYXAoKHMpID0+ICh7XG4gICAgICBhbmNob3I6IHsgLi4ucy5hbmNob3IgfSxcbiAgICAgIGhlYWQ6IHsgLi4ucy5oZWFkIH0sXG4gICAgfSkpO1xuICB9XG5cbiAgaGFzU2luZ2xlQ3Vyc29yKCkge1xuICAgIGlmICghdGhpcy5oYXNTaW5nbGVTZWxlY3Rpb24oKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uc1swXTtcblxuICAgIHJldHVybiAoXG4gICAgICBzZWxlY3Rpb24uYW5jaG9yLmxpbmUgPT09IHNlbGVjdGlvbi5oZWFkLmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbi5hbmNob3IuY2ggPT09IHNlbGVjdGlvbi5oZWFkLmNoXG4gICAgKTtcbiAgfVxuXG4gIGhhc1NpbmdsZVNlbGVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbigpIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbnNbdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCAtIDFdO1xuXG4gICAgY29uc3QgZnJvbSA9XG4gICAgICBzZWxlY3Rpb24uYW5jaG9yLmNoID4gc2VsZWN0aW9uLmhlYWQuY2hcbiAgICAgICAgPyBzZWxlY3Rpb24uaGVhZC5jaFxuICAgICAgICA6IHNlbGVjdGlvbi5hbmNob3IuY2g7XG4gICAgY29uc3QgdG8gPVxuICAgICAgc2VsZWN0aW9uLmFuY2hvci5jaCA+IHNlbGVjdGlvbi5oZWFkLmNoXG4gICAgICAgID8gc2VsZWN0aW9uLmFuY2hvci5jaFxuICAgICAgICA6IHNlbGVjdGlvbi5oZWFkLmNoO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNlbGVjdGlvbixcbiAgICAgIGZyb20sXG4gICAgICB0byxcbiAgICB9O1xuICB9XG5cbiAgZ2V0Q3Vyc29yKCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc2VsZWN0aW9uc1t0aGlzLnNlbGVjdGlvbnMubGVuZ3RoIC0gMV0uaGVhZCB9O1xuICB9XG5cbiAgcmVwbGFjZUN1cnNvcihjdXJzb3I6IFBvc2l0aW9uKSB7XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gW3sgYW5jaG9yOiBjdXJzb3IsIGhlYWQ6IGN1cnNvciB9XTtcbiAgfVxuXG4gIHJlcGxhY2VTZWxlY3Rpb25zKHNlbGVjdGlvbnM6IFJhbmdlW10pIHtcbiAgICBpZiAoc2VsZWN0aW9ucy5sZW5ndGggPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBjcmVhdGUgUm9vdCB3aXRob3V0IHNlbGVjdGlvbnNgKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gc2VsZWN0aW9ucztcbiAgfVxuXG4gIGdldExpc3RVbmRlckN1cnNvcigpOiBMaXN0IHtcbiAgICByZXR1cm4gdGhpcy5nZXRMaXN0VW5kZXJMaW5lKHRoaXMuZ2V0Q3Vyc29yKCkubGluZSk7XG4gIH1cblxuICBnZXRMaXN0VW5kZXJMaW5lKGxpbmU6IG51bWJlcikge1xuICAgIGlmIChsaW5lIDwgdGhpcy5zdGFydC5saW5lIHx8IGxpbmUgPiB0aGlzLmVuZC5saW5lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdDogTGlzdCA9IG51bGw7XG4gICAgbGV0IGluZGV4OiBudW1iZXIgPSB0aGlzLnN0YXJ0LmxpbmU7XG5cbiAgICBjb25zdCB2aXNpdEFyciA9IChsbDogTGlzdFtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGwgb2YgbGwpIHtcbiAgICAgICAgY29uc3QgbGlzdEZyb21MaW5lID0gaW5kZXg7XG4gICAgICAgIGNvbnN0IGxpc3RUaWxsTGluZSA9IGxpc3RGcm9tTGluZSArIGwuZ2V0TGluZUNvdW50KCkgLSAxO1xuXG4gICAgICAgIGlmIChsaW5lID49IGxpc3RGcm9tTGluZSAmJiBsaW5lIDw9IGxpc3RUaWxsTGluZSkge1xuICAgICAgICAgIHJlc3VsdCA9IGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXggPSBsaXN0VGlsbExpbmUgKyAxO1xuICAgICAgICAgIHZpc2l0QXJyKGwuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2aXNpdEFycih0aGlzLnJvb3RMaXN0LmdldENoaWxkcmVuKCkpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdDogTGlzdCk6IFtudW1iZXIsIG51bWJlcl0gfCBudWxsIHtcbiAgICBsZXQgcmVzdWx0OiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGxpbmU6IG51bWJlciA9IHRoaXMuc3RhcnQubGluZTtcblxuICAgIGNvbnN0IHZpc2l0QXJyID0gKGxsOiBMaXN0W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgbCBvZiBsbCkge1xuICAgICAgICBjb25zdCBsaXN0RnJvbUxpbmUgPSBsaW5lO1xuICAgICAgICBjb25zdCBsaXN0VGlsbExpbmUgPSBsaXN0RnJvbUxpbmUgKyBsLmdldExpbmVDb3VudCgpIC0gMTtcblxuICAgICAgICBpZiAobCA9PT0gbGlzdCkge1xuICAgICAgICAgIHJlc3VsdCA9IFtsaXN0RnJvbUxpbmUsIGxpc3RUaWxsTGluZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluZSA9IGxpc3RUaWxsTGluZSArIDE7XG4gICAgICAgICAgdmlzaXRBcnIobC5nZXRDaGlsZHJlbigpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmlzaXRBcnIodGhpcy5yb290TGlzdC5nZXRDaGlsZHJlbigpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5yb290TGlzdC5nZXRDaGlsZHJlbigpO1xuICB9XG5cbiAgcHJpbnQoKSB7XG4gICAgbGV0IHJlcyA9IFwiXCI7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMucm9vdExpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgcmVzICs9IGNoaWxkLnByaW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5yZXBsYWNlKC9cXG4kLywgXCJcIik7XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBSb290KFxuICAgICAgeyAuLi50aGlzLnN0YXJ0IH0sXG4gICAgICB7IC4uLnRoaXMuZW5kIH0sXG4gICAgICB0aGlzLmdldFNlbGVjdGlvbnMoKVxuICAgICk7XG4gICAgY2xvbmUucm9vdExpc3QgPSB0aGlzLnJvb3RMaXN0LmNsb25lKGNsb25lKTtcbiAgICByZXR1cm4gY2xvbmU7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQge1xuICBMaXN0LFxuICBMaXN0TGluZSxcbiAgUG9zaXRpb24sXG4gIFJvb3QsXG4gIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMsXG59IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVUaWxsUHJldmlvdXNMaW5lQ29udGVudEVuZCBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzSW5mbygpO1xuXG4gICAgY29uc3QgbGluZU5vID0gbGluZXMuZmluZEluZGV4KFxuICAgICAgKGwpID0+IGN1cnNvci5jaCA9PT0gbC5mcm9tLmNoICYmIGN1cnNvci5saW5lID09PSBsLmZyb20ubGluZVxuICAgICk7XG5cbiAgICBpZiAobGluZU5vID09PSAwKSB7XG4gICAgICB0aGlzLm1lcmdlV2l0aFByZXZpb3VzSXRlbShyb290LCBjdXJzb3IsIGxpc3QpO1xuICAgIH0gZWxzZSBpZiAobGluZU5vID4gMCkge1xuICAgICAgdGhpcy5tZXJnZU5vdGVzKHJvb3QsIGN1cnNvciwgbGlzdCwgbGluZXMsIGxpbmVObyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZU5vdGVzKFxuICAgIHJvb3Q6IFJvb3QsXG4gICAgY3Vyc29yOiBQb3NpdGlvbixcbiAgICBsaXN0OiBMaXN0LFxuICAgIGxpbmVzOiBMaXN0TGluZVtdLFxuICAgIGxpbmVObzogbnVtYmVyXG4gICkge1xuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgcHJldkxpbmVObyA9IGxpbmVObyAtIDE7XG5cbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgLSAxLFxuICAgICAgY2g6IGxpbmVzW3ByZXZMaW5lTm9dLnRleHQubGVuZ3RoICsgbGluZXNbcHJldkxpbmVOb10uZnJvbS5jaCxcbiAgICB9KTtcblxuICAgIGxpbmVzW3ByZXZMaW5lTm9dLnRleHQgKz0gbGluZXNbbGluZU5vXS50ZXh0O1xuICAgIGxpbmVzLnNwbGljZShsaW5lTm8sIDEpO1xuXG4gICAgbGlzdC5yZXBsYWNlTGluZXMobGluZXMubWFwKChsKSA9PiBsLnRleHQpKTtcbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VXaXRoUHJldmlvdXNJdGVtKHJvb3Q6IFJvb3QsIGN1cnNvcjogUG9zaXRpb24sIGxpc3Q6IExpc3QpIHtcbiAgICBpZiAocm9vdC5nZXRDaGlsZHJlbigpWzBdID09PSBsaXN0ICYmIGxpc3QuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgcHJldiA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShjdXJzb3IubGluZSAtIDEpO1xuXG4gICAgaWYgKCFwcmV2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm90aEFyZUVtcHR5ID0gcHJldi5pc0VtcHR5KCkgJiYgbGlzdC5pc0VtcHR5KCk7XG4gICAgY29uc3QgcHJldklzRW1wdHlBbmRTYW1lTGV2ZWwgPVxuICAgICAgcHJldi5pc0VtcHR5KCkgJiYgIWxpc3QuaXNFbXB0eSgpICYmIHByZXYuZ2V0TGV2ZWwoKSA9PT0gbGlzdC5nZXRMZXZlbCgpO1xuICAgIGNvbnN0IGxpc3RJc0VtcHR5QW5kUHJldklzUGFyZW50ID1cbiAgICAgIGxpc3QuaXNFbXB0eSgpICYmIHByZXYuZ2V0TGV2ZWwoKSA9PT0gbGlzdC5nZXRMZXZlbCgpIC0gMTtcblxuICAgIGlmIChib3RoQXJlRW1wdHkgfHwgcHJldklzRW1wdHlBbmRTYW1lTGV2ZWwgfHwgbGlzdElzRW1wdHlBbmRQcmV2SXNQYXJlbnQpIHtcbiAgICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICAgIGNvbnN0IHBhcmVudCA9IGxpc3QuZ2V0UGFyZW50KCk7XG4gICAgICBjb25zdCBwcmV2RW5kID0gcHJldi5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKTtcblxuICAgICAgaWYgKCFwcmV2LmdldE5vdGVzSW5kZW50KCkgJiYgbGlzdC5nZXROb3Rlc0luZGVudCgpKSB7XG4gICAgICAgIHByZXYuc2V0Tm90ZXNJbmRlbnQoXG4gICAgICAgICAgcHJldi5nZXRGaXJzdExpbmVJbmRlbnQoKSArXG4gICAgICAgICAgICBsaXN0LmdldE5vdGVzSW5kZW50KCkuc2xpY2UobGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGgpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9sZExpbmVzID0gcHJldi5nZXRMaW5lcygpO1xuICAgICAgY29uc3QgbmV3TGluZXMgPSBsaXN0LmdldExpbmVzKCk7XG4gICAgICBvbGRMaW5lc1tvbGRMaW5lcy5sZW5ndGggLSAxXSArPSBuZXdMaW5lc1swXTtcbiAgICAgIGNvbnN0IHJlc3VsdExpbmVzID0gb2xkTGluZXMuY29uY2F0KG5ld0xpbmVzLnNsaWNlKDEpKTtcblxuICAgICAgcHJldi5yZXBsYWNlTGluZXMocmVzdWx0TGluZXMpO1xuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuXG4gICAgICBmb3IgKGNvbnN0IGMgb2YgbGlzdC5nZXRDaGlsZHJlbigpKSB7XG4gICAgICAgIGxpc3QucmVtb3ZlQ2hpbGQoYyk7XG4gICAgICAgIHByZXYuYWRkQWZ0ZXJBbGwoYyk7XG4gICAgICB9XG5cbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihwcmV2RW5kKTtcblxuICAgICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgRGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9EZWxldGVUaWxsUHJldmlvdXNMaW5lQ29udGVudEVuZFwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgaW1lRGV0ZWN0b3I6IElNRURldGVjdG9yLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uUGVyZm9ybWVyOiBPcGVyYXRpb25QZXJmb3JtZXJcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBrZXltYXAub2YoW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcIkJhY2tzcGFjZVwiLFxuICAgICAgICAgIHJ1bjogY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ICE9PSBcIm5ldmVyXCIgJiZcbiAgICAgICF0aGlzLmltZURldGVjdG9yLmlzT3BlbmVkKClcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PiBuZXcgRGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jb25zdCBCRVRURVJfTElTVFNfQk9EWV9DTEFTUyA9IFwib3V0bGluZXItcGx1Z2luLWJldHRlci1saXN0c1wiO1xuXG5leHBvcnQgY2xhc3MgQmV0dGVyTGlzdHNTdHlsZXMgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgcHJpdmF0ZSB1cGRhdGVCb2R5Q2xhc3NJbnRlcnZhbDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgb2JzaWRpYW5TZXR0aW5nczogT2JzaWRpYW5TZXR0aW5nc1xuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnVwZGF0ZUJvZHlDbGFzcygpO1xuICAgIHRoaXMudXBkYXRlQm9keUNsYXNzSW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVCb2R5Q2xhc3MoKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMudXBkYXRlQm9keUNsYXNzSW50ZXJ2YWwpO1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShCRVRURVJfTElTVFNfQk9EWV9DTEFTUyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUJvZHlDbGFzcyA9ICgpID0+IHtcbiAgICBjb25zdCBzaG91bGRFeGlzdHMgPVxuICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLmlzRGVmYXVsdFRoZW1lRW5hYmxlZCgpICYmXG4gICAgICB0aGlzLnNldHRpbmdzLmJldHRlckxpc3RzU3R5bGVzO1xuICAgIGNvbnN0IGV4aXN0cyA9IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKEJFVFRFUl9MSVNUU19CT0RZX0NMQVNTKTtcblxuICAgIGlmIChzaG91bGRFeGlzdHMgJiYgIWV4aXN0cykge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKEJFVFRFUl9MSVNUU19CT0RZX0NMQVNTKTtcbiAgICB9XG5cbiAgICBpZiAoIXNob3VsZEV4aXN0cyAmJiBleGlzdHMpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShCRVRURVJfTElTVFNfQk9EWV9DTEFTUyk7XG4gICAgfVxuICB9O1xufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QsIG1heFBvcywgbWluUG9zIH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIFNlbGVjdEFsbENvbnRlbnQgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlU2VsZWN0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb24gPSByb290LmdldFNlbGVjdGlvbnMoKVswXTtcbiAgICBjb25zdCBbcm9vdFN0YXJ0LCByb290RW5kXSA9IHJvb3QuZ2V0Q29udGVudFJhbmdlKCk7XG5cbiAgICBjb25zdCBzZWxlY3Rpb25Gcm9tID0gbWluUG9zKHNlbGVjdGlvbi5hbmNob3IsIHNlbGVjdGlvbi5oZWFkKTtcbiAgICBjb25zdCBzZWxlY3Rpb25UbyA9IG1heFBvcyhzZWxlY3Rpb24uYW5jaG9yLCBzZWxlY3Rpb24uaGVhZCk7XG5cbiAgICBpZiAoXG4gICAgICBzZWxlY3Rpb25Gcm9tLmxpbmUgPCByb290U3RhcnQubGluZSB8fFxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA+IHJvb3RFbmQubGluZVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbkZyb20ubGluZSA9PT0gcm9vdFN0YXJ0LmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbkZyb20uY2ggPT09IHJvb3RTdGFydC5jaCAmJlxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA9PT0gcm9vdEVuZC5saW5lICYmXG4gICAgICBzZWxlY3Rpb25Uby5jaCA9PT0gcm9vdEVuZC5jaFxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGNvbnRlbnRTdGFydCA9IGxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0QWZ0ZXJDaGVja2JveCgpO1xuICAgIGNvbnN0IGNvbnRlbnRFbmQgPSBsaXN0LmdldExhc3RMaW5lQ29udGVudEVuZCgpO1xuXG4gICAgaWYgKFxuICAgICAgc2VsZWN0aW9uRnJvbS5saW5lIDwgY29udGVudFN0YXJ0LmxpbmUgfHxcbiAgICAgIHNlbGVjdGlvblRvLmxpbmUgPiBjb250ZW50RW5kLmxpbmVcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbkZyb20ubGluZSA9PT0gY29udGVudFN0YXJ0LmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbkZyb20uY2ggPT09IGNvbnRlbnRTdGFydC5jaCAmJlxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA9PT0gY29udGVudEVuZC5saW5lICYmXG4gICAgICBzZWxlY3Rpb25Uby5jaCA9PT0gY29udGVudEVuZC5jaFxuICAgICkge1xuICAgICAgLy8gc2VsZWN0IHdob2xlIGxpc3RcbiAgICAgIHJvb3QucmVwbGFjZVNlbGVjdGlvbnMoW3sgYW5jaG9yOiByb290U3RhcnQsIGhlYWQ6IHJvb3RFbmQgfV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzZWxlY3Qgd2hvbGUgbGluZVxuICAgICAgcm9vdC5yZXBsYWNlU2VsZWN0aW9ucyhbeyBhbmNob3I6IGNvbnRlbnRTdGFydCwgaGVhZDogY29udGVudEVuZCB9XSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgU2VsZWN0QWxsQ29udGVudCB9IGZyb20gXCIuLi9vcGVyYXRpb25zL1NlbGVjdEFsbENvbnRlbnRcIjtcbmltcG9ydCB7IElNRURldGVjdG9yIH0gZnJvbSBcIi4uL3NlcnZpY2VzL0lNRURldGVjdG9yXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2sgfSBmcm9tIFwiLi4vdXRpbHMvY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2tcIjtcblxuZXhwb3J0IGNsYXNzIEN0cmxBQW5kQ21kQUJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJjLWFcIixcbiAgICAgICAgICBtYWM6IFwibS1hXCIsXG4gICAgICAgICAgcnVuOiBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXIgJiYgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBTZWxlY3RBbGxDb250ZW50KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IERlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kIH0gZnJvbSBcIi4vRGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmRcIjtcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIERlbGV0ZVRpbGxOZXh0TGluZUNvbnRlbnRTdGFydCBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgZGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQ6IERlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge1xuICAgIHRoaXMuZGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQgPVxuICAgICAgbmV3IERlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kKHJvb3QpO1xuICB9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnNob3VsZFN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnNob3VsZFVwZGF0ZSgpO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcblxuICAgIGNvbnN0IGxpbmVObyA9IGxpbmVzLmZpbmRJbmRleChcbiAgICAgIChsKSA9PiBjdXJzb3IuY2ggPT09IGwudG8uY2ggJiYgY3Vyc29yLmxpbmUgPT09IGwudG8ubGluZVxuICAgICk7XG5cbiAgICBpZiAobGluZU5vID09PSBsaW5lcy5sZW5ndGggLSAxKSB7XG4gICAgICBjb25zdCBuZXh0TGluZSA9IGxpbmVzW2xpbmVOb10udG8ubGluZSArIDE7XG4gICAgICBjb25zdCBuZXh0TGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShuZXh0TGluZSk7XG4gICAgICBpZiAoIW5leHRMaXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihuZXh0TGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKSk7XG4gICAgICB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnBlcmZvcm0oKTtcbiAgICB9IGVsc2UgaWYgKGxpbmVObyA+PSAwKSB7XG4gICAgICByb290LnJlcGxhY2VDdXJzb3IobGluZXNbbGluZU5vICsgMV0uZnJvbSk7XG4gICAgICB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnBlcmZvcm0oKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgRGVsZXRlVGlsbE5leHRMaW5lQ29udGVudFN0YXJ0IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvRGVsZXRlVGlsbE5leHRMaW5lQ29udGVudFN0YXJ0XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uUGVyZm9ybWVyIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09wZXJhdGlvblBlcmZvcm1lclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrIH0gZnJvbSBcIi4uL3V0aWxzL2NyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrXCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVCZWhhdmlvdXJPdmVycmlkZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBpbWVEZXRlY3RvcjogSU1FRGV0ZWN0b3IsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIGtleW1hcC5vZihbXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IFwiRGVsZXRlXCIsXG4gICAgICAgICAgcnVuOiBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgIT09IFwibmV2ZXJcIiAmJlxuICAgICAgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBEZWxldGVUaWxsTmV4dExpbmVDb250ZW50U3RhcnQocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IExpc3QsIFJvb3QsIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5pbnRlcmZhY2UgQ3Vyc29yQW5jaG9yIHtcbiAgY3Vyc29yTGlzdDogTGlzdDtcbiAgbGluZURpZmY6IG51bWJlcjtcbiAgY2hEaWZmOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBNb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvb3Q6IFJvb3QsXG4gICAgcHJpdmF0ZSBsaXN0VG9Nb3ZlOiBMaXN0LFxuICAgIHByaXZhdGUgcGxhY2VUb01vdmU6IExpc3QsXG4gICAgcHJpdmF0ZSB3aGVyZVRvTW92ZTogXCJiZWZvcmVcIiB8IFwiYWZ0ZXJcIiB8IFwiaW5zaWRlXCIsXG4gICAgcHJpdmF0ZSBkZWZhdWx0SW5kZW50Q2hhcnM6IHN0cmluZ1xuICApIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBpZiAodGhpcy5saXN0VG9Nb3ZlID09PSB0aGlzLnBsYWNlVG9Nb3ZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBjdXJzb3JBbmNob3IgPSB0aGlzLmNhbGN1bGF0ZUN1cnNvckFuY2hvcigpO1xuICAgIHRoaXMubW92ZUxpc3QoKTtcbiAgICB0aGlzLmNoYW5nZUluZGVudCgpO1xuICAgIHRoaXMucmVzdG9yZUN1cnNvcihjdXJzb3JBbmNob3IpO1xuICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHModGhpcy5yb290KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlQ3Vyc29yQW5jaG9yKCk6IEN1cnNvckFuY2hvciB7XG4gICAgY29uc3QgY3Vyc29yTGluZSA9IHRoaXMucm9vdC5nZXRDdXJzb3IoKS5saW5lO1xuXG4gICAgY29uc3QgbGluZXMgPSBbXG4gICAgICB0aGlzLmxpc3RUb01vdmUuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZSxcbiAgICAgIHRoaXMubGlzdFRvTW92ZS5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKS5saW5lLFxuICAgICAgdGhpcy5wbGFjZVRvTW92ZS5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lLFxuICAgICAgdGhpcy5wbGFjZVRvTW92ZS5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKS5saW5lLFxuICAgIF07XG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZSA9IE1hdGgubWluKC4uLmxpbmVzKTtcbiAgICBjb25zdCBsaXN0RW5kTGluZSA9IE1hdGgubWF4KC4uLmxpbmVzKTtcblxuICAgIGlmIChjdXJzb3JMaW5lIDwgbGlzdFN0YXJ0TGluZSB8fCBjdXJzb3JMaW5lID4gbGlzdEVuZExpbmUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnNvciA9IHRoaXMucm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBjdXJzb3JMaXN0ID0gdGhpcy5yb290LmdldExpc3RVbmRlckxpbmUoY3Vyc29yLmxpbmUpO1xuICAgIGNvbnN0IGN1cnNvckxpc3RTdGFydCA9IGN1cnNvckxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCk7XG4gICAgY29uc3QgbGluZURpZmYgPSBjdXJzb3IubGluZSAtIGN1cnNvckxpc3RTdGFydC5saW5lO1xuICAgIGNvbnN0IGNoRGlmZiA9IGN1cnNvci5jaCAtIGN1cnNvckxpc3RTdGFydC5jaDtcblxuICAgIHJldHVybiB7IGN1cnNvckxpc3QsIGxpbmVEaWZmLCBjaERpZmYgfTtcbiAgfVxuXG4gIHByaXZhdGUgbW92ZUxpc3QoKSB7XG4gICAgdGhpcy5saXN0VG9Nb3ZlLmdldFBhcmVudCgpLnJlbW92ZUNoaWxkKHRoaXMubGlzdFRvTW92ZSk7XG5cbiAgICBzd2l0Y2ggKHRoaXMud2hlcmVUb01vdmUpIHtcbiAgICAgIGNhc2UgXCJiZWZvcmVcIjpcbiAgICAgICAgdGhpcy5wbGFjZVRvTW92ZVxuICAgICAgICAgIC5nZXRQYXJlbnQoKVxuICAgICAgICAgIC5hZGRCZWZvcmUodGhpcy5wbGFjZVRvTW92ZSwgdGhpcy5saXN0VG9Nb3ZlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJhZnRlclwiOlxuICAgICAgICB0aGlzLnBsYWNlVG9Nb3ZlXG4gICAgICAgICAgLmdldFBhcmVudCgpXG4gICAgICAgICAgLmFkZEFmdGVyKHRoaXMucGxhY2VUb01vdmUsIHRoaXMubGlzdFRvTW92ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiaW5zaWRlXCI6XG4gICAgICAgIHRoaXMucGxhY2VUb01vdmUuYWRkQmVmb3JlQWxsKHRoaXMubGlzdFRvTW92ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlSW5kZW50KCkge1xuICAgIGNvbnN0IG9sZEluZGVudCA9IHRoaXMubGlzdFRvTW92ZS5nZXRGaXJzdExpbmVJbmRlbnQoKTtcbiAgICBjb25zdCBuZXdJbmRlbnQgPVxuICAgICAgdGhpcy53aGVyZVRvTW92ZSA9PT0gXCJpbnNpZGVcIlxuICAgICAgICA/IHRoaXMucGxhY2VUb01vdmUuZ2V0Rmlyc3RMaW5lSW5kZW50KCkgKyB0aGlzLmRlZmF1bHRJbmRlbnRDaGFyc1xuICAgICAgICA6IHRoaXMucGxhY2VUb01vdmUuZ2V0Rmlyc3RMaW5lSW5kZW50KCk7XG4gICAgdGhpcy5saXN0VG9Nb3ZlLnVuaW5kZW50Q29udGVudCgwLCBvbGRJbmRlbnQubGVuZ3RoKTtcbiAgICB0aGlzLmxpc3RUb01vdmUuaW5kZW50Q29udGVudCgwLCBuZXdJbmRlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXN0b3JlQ3Vyc29yKGN1cnNvckFuY2hvcjogQ3Vyc29yQW5jaG9yKSB7XG4gICAgaWYgKGN1cnNvckFuY2hvcikge1xuICAgICAgY29uc3QgY3Vyc29yTGlzdFN0YXJ0ID1cbiAgICAgICAgY3Vyc29yQW5jaG9yLmN1cnNvckxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCk7XG5cbiAgICAgIHRoaXMucm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgICAgbGluZTogY3Vyc29yTGlzdFN0YXJ0LmxpbmUgKyBjdXJzb3JBbmNob3IubGluZURpZmYsXG4gICAgICAgIGNoOiBjdXJzb3JMaXN0U3RhcnQuY2ggKyBjdXJzb3JBbmNob3IuY2hEaWZmLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdoZW4geW91IG1vdmUgYSBsaXN0LCB0aGUgc2NyZWVuIHNjcm9sbHMgdG8gdGhlIGN1cnNvci5cbiAgICAgIC8vIEl0IGlzIGJldHRlciB0byBtb3ZlIHRoZSBjdXJzb3IgaW50byB0aGUgdmlld3BvcnQgdGhhbiBsZXQgdGhlIHNjcmVlbiBzY3JvbGwuXG4gICAgICB0aGlzLnJvb3QucmVwbGFjZUN1cnNvcih0aGlzLmxpc3RUb01vdmUuZ2V0TGFzdExpbmVDb250ZW50RW5kKCkpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgTm90aWNlLCBQbGF0Zm9ybSwgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgZ2V0SW5kZW50VW5pdCwgaW5kZW50U3RyaW5nIH0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5pbXBvcnQgeyBTdGF0ZUVmZmVjdCwgU3RhdGVGaWVsZCB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgRGVjb3JhdGlvbiwgRGVjb3JhdGlvblNldCwgRWRpdG9yVmlldyB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yLCBnZXRFZGl0b3JGcm9tU3RhdGUgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBNb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb24gfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9Nb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb25cIjtcbmltcG9ydCB7IExpc3QsIFJvb3QsIGNtcFBvcyB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyBPYnNpZGlhblNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2V0dGluZ3NcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QYXJzZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5cbmNvbnN0IEJPRFlfQ0xBU1MgPSBcIm91dGxpbmVyLXBsdWdpbi1kbmRcIjtcblxuZXhwb3J0IGNsYXNzIERyYWdBbmREcm9wIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIHByaXZhdGUgZHJvcFpvbmU6IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIGRyb3Bab25lUGFkZGluZzogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgcHJlU3RhcnQ6IERyYWdBbmREcm9wUHJlU3RhcnRTdGF0ZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN0YXRlOiBEcmFnQW5kRHJvcFN0YXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgb2Jpc2lkaWFuOiBPYnNpZGlhblNldHRpbmdzLFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihbXG4gICAgICBkcmFnZ2luZ0xpbmVzU3RhdGVGaWVsZCxcbiAgICAgIGRyb3BwaW5nTGluZXNTdGF0ZUZpZWxkLFxuICAgIF0pO1xuICAgIHRoaXMuZW5hYmxlRmVhdHVyZVRvZ2dsZSgpO1xuICAgIHRoaXMuY3JlYXRlRHJvcFpvbmUoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7XG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMucmVtb3ZlRHJvcFpvbmUoKTtcbiAgICB0aGlzLmRpc2FibGVGZWF0dXJlVG9nZ2xlKCk7XG4gIH1cblxuICBwcml2YXRlIGVuYWJsZUZlYXR1cmVUb2dnbGUoKSB7XG4gICAgdGhpcy5zZXR0aW5ncy5vbkNoYW5nZSh0aGlzLmhhbmRsZVNldHRpbmdzQ2hhbmdlKTtcbiAgICB0aGlzLmhhbmRsZVNldHRpbmdzQ2hhbmdlKCk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGVGZWF0dXJlVG9nZ2xlKCkge1xuICAgIHRoaXMuc2V0dGluZ3MucmVtb3ZlQ2FsbGJhY2sodGhpcy5oYW5kbGVTZXR0aW5nc0NoYW5nZSk7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKEJPRFlfQ0xBU1MpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEcm9wWm9uZSgpIHtcbiAgICB0aGlzLmRyb3Bab25lUGFkZGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgdGhpcy5kcm9wWm9uZVBhZGRpbmcuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1kcm9wLXpvbmUtcGFkZGluZ1wiKTtcbiAgICB0aGlzLmRyb3Bab25lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLmRyb3Bab25lLmNsYXNzTGlzdC5hZGQoXCJvdXRsaW5lci1wbHVnaW4tZHJvcC16b25lXCIpO1xuICAgIHRoaXMuZHJvcFpvbmUuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgIHRoaXMuZHJvcFpvbmUuYXBwZW5kQ2hpbGQodGhpcy5kcm9wWm9uZVBhZGRpbmcpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5kcm9wWm9uZSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZURyb3Bab25lKCkge1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5kcm9wWm9uZSk7XG4gICAgdGhpcy5kcm9wWm9uZVBhZGRpbmcgPSBudWxsO1xuICAgIHRoaXMuZHJvcFpvbmUgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycygpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMuaGFuZGxlTW91c2VEb3duLCB7XG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0pO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5oYW5kbGVNb3VzZU1vdmUpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMuaGFuZGxlTW91c2VVcCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcy5oYW5kbGVLZXlEb3duKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCB0aGlzLmhhbmRsZU1vdXNlRG93biwge1xuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMuaGFuZGxlTW91c2VNb3ZlKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLmhhbmRsZU1vdXNlVXApO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMuaGFuZGxlS2V5RG93bik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNldHRpbmdzQ2hhbmdlID0gKCkgPT4ge1xuICAgIGlmICghaXNGZWF0dXJlU3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZXR0aW5ncy5kcmFnQW5kRHJvcCkge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKEJPRFlfQ0xBU1MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoQk9EWV9DTEFTUyk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlTW91c2VEb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoXG4gICAgICAhaXNGZWF0dXJlU3VwcG9ydGVkKCkgfHxcbiAgICAgICF0aGlzLnNldHRpbmdzLmRyYWdBbmREcm9wIHx8XG4gICAgICAhaXNDbGlja09uQnVsbGV0KGUpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmlldyA9IGdldEVkaXRvclZpZXdGcm9tSFRNTEVsZW1lbnQoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgIGlmICghdmlldykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5wcmVTdGFydCA9IHtcbiAgICAgIHg6IGUueCxcbiAgICAgIHk6IGUueSxcbiAgICAgIHZpZXcsXG4gICAgfTtcbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZU1vdXNlTW92ZSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKHRoaXMucHJlU3RhcnQpIHtcbiAgICAgIHRoaXMuc3RhcnREcmFnZ2luZygpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5kZXRlY3RBbmREcmF3RHJvcFpvbmUoZS54LCBlLnkpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZU1vdXNlVXAgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJlU3RhcnQpIHtcbiAgICAgIHRoaXMucHJlU3RhcnQgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVLZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZSAmJiBlLmNvZGUgPT09IFwiRXNjYXBlXCIpIHtcbiAgICAgIHRoaXMuY2FuY2VsRHJhZ2dpbmcoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBzdGFydERyYWdnaW5nKCkge1xuICAgIGNvbnN0IHsgeCwgeSwgdmlldyB9ID0gdGhpcy5wcmVTdGFydDtcbiAgICB0aGlzLnByZVN0YXJ0ID0gbnVsbDtcblxuICAgIGNvbnN0IGVkaXRvciA9IGdldEVkaXRvckZyb21TdGF0ZSh2aWV3LnN0YXRlKTtcbiAgICBjb25zdCBwb3MgPSBlZGl0b3Iub2Zmc2V0VG9Qb3Modmlldy5wb3NBdENvb3Jkcyh7IHgsIHkgfSkpO1xuICAgIGNvbnN0IHJvb3QgPSB0aGlzLnBhcnNlci5wYXJzZShlZGl0b3IsIHBvcyk7XG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShwb3MubGluZSk7XG4gICAgY29uc3Qgc3RhdGUgPSBuZXcgRHJhZ0FuZERyb3BTdGF0ZSh2aWV3LCBlZGl0b3IsIHJvb3QsIGxpc3QpO1xuXG4gICAgaWYgKCFzdGF0ZS5oYXNEcm9wVmFyaWFudHMoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB0aGlzLmhpZ2hsaWdodERyYWdnaW5nTGluZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0QW5kRHJhd0Ryb3Bab25lKHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGF0ZS5jYWxjdWxhdGVOZWFyZXN0RHJvcFZhcmlhbnQoeCwgeSk7XG4gICAgdGhpcy5kcmF3RHJvcFpvbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuY2VsRHJhZ2dpbmcoKSB7XG4gICAgdGhpcy5zdGF0ZS5kcm9wVmFyaWFudCA9IG51bGw7XG4gICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcERyYWdnaW5nKCkge1xuICAgIHRoaXMudW5oaWdodGxpZ2h0RHJhZ2dpbmdMaW5lcygpO1xuICAgIHRoaXMuaGlkZURyb3Bab25lKCk7XG4gICAgdGhpcy5hcHBseUNoYW5nZXMoKTtcbiAgICB0aGlzLnN0YXRlID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDaGFuZ2VzKCkge1xuICAgIGlmICghdGhpcy5zdGF0ZS5kcm9wVmFyaWFudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgY29uc3QgeyBkcm9wVmFyaWFudCwgZWRpdG9yLCByb290LCBsaXN0IH0gPSBzdGF0ZTtcblxuICAgIGNvbnN0IG5ld1Jvb3QgPSB0aGlzLnBhcnNlci5wYXJzZShlZGl0b3IsIHJvb3QuZ2V0Q29udGVudFN0YXJ0KCkpO1xuICAgIGlmICghaXNTYW1lUm9vdHMocm9vdCwgbmV3Um9vdCkpIHtcbiAgICAgIG5ldyBOb3RpY2UoXG4gICAgICAgIGBUaGUgaXRlbSBjYW5ub3QgYmUgbW92ZWQuIFRoZSBwYWdlIGNvbnRlbnQgY2hhbmdlZCBkdXJpbmcgdGhlIG1vdmUuYCxcbiAgICAgICAgNTAwMFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5ldmFsKFxuICAgICAgcm9vdCxcbiAgICAgIG5ldyBNb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb24oXG4gICAgICAgIHJvb3QsXG4gICAgICAgIGxpc3QsXG4gICAgICAgIGRyb3BWYXJpYW50LnBsYWNlVG9Nb3ZlLFxuICAgICAgICBkcm9wVmFyaWFudC53aGVyZVRvTW92ZSxcbiAgICAgICAgdGhpcy5vYmlzaWRpYW4uZ2V0RGVmYXVsdEluZGVudENoYXJzKClcbiAgICAgICksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWdobGlnaHREcmFnZ2luZ0xpbmVzKCkge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgY29uc3QgeyBsaXN0LCBlZGl0b3IsIHZpZXcgfSA9IHN0YXRlO1xuXG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICBjb25zdCBmcm9tTGluZSA9IGxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZTtcbiAgICBjb25zdCB0aWxsTGluZSA9IGxpc3QuZ2V0Q29udGVudEVuZEluY2x1ZGluZ0NoaWxkcmVuKCkubGluZTtcbiAgICBmb3IgKGxldCBpID0gZnJvbUxpbmU7IGkgPD0gdGlsbExpbmU7IGkrKykge1xuICAgICAgbGluZXMucHVzaChlZGl0b3IucG9zVG9PZmZzZXQoeyBsaW5lOiBpLCBjaDogMCB9KSk7XG4gICAgfVxuICAgIHZpZXcuZGlzcGF0Y2goe1xuICAgICAgZWZmZWN0czogW2RuZFN0YXJ0ZWQub2YobGluZXMpXSxcbiAgICB9KTtcblxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1kcmFnZ2luZ1wiKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5oaWdodGxpZ2h0RHJhZ2dpbmdMaW5lcygpIHtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJvdXRsaW5lci1wbHVnaW4tZHJhZ2dpbmdcIik7XG5cbiAgICB0aGlzLnN0YXRlLnZpZXcuZGlzcGF0Y2goe1xuICAgICAgZWZmZWN0czogW2RuZEVuZGVkLm9mKCldLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3RHJvcFpvbmUoKSB7XG4gICAgY29uc3QgeyBzdGF0ZSB9ID0gdGhpcztcbiAgICBjb25zdCB7IHZpZXcsIGVkaXRvciwgZHJvcFZhcmlhbnQgfSA9IHN0YXRlO1xuXG4gICAgY29uc3QgbmV3UGFyZW50ID1cbiAgICAgIGRyb3BWYXJpYW50LndoZXJlVG9Nb3ZlID09PSBcImluc2lkZVwiXG4gICAgICAgID8gZHJvcFZhcmlhbnQucGxhY2VUb01vdmVcbiAgICAgICAgOiBkcm9wVmFyaWFudC5wbGFjZVRvTW92ZS5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBuZXdQYXJlbnRJc1Jvb3RMaXN0ID0gIW5ld1BhcmVudC5nZXRQYXJlbnQoKTtcblxuICAgIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gTWF0aC5yb3VuZChcbiAgICAgICAgdmlldy5jb250ZW50RE9NLm9mZnNldFdpZHRoIC1cbiAgICAgICAgICAoZHJvcFZhcmlhbnQubGVmdCAtIHRoaXMuc3RhdGUubGVmdFBhZGRpbmcpXG4gICAgICApO1xuXG4gICAgICB0aGlzLmRyb3Bab25lLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICB0aGlzLmRyb3Bab25lLnN0eWxlLnRvcCA9IGRyb3BWYXJpYW50LnRvcCArIFwicHhcIjtcbiAgICAgIHRoaXMuZHJvcFpvbmUuc3R5bGUubGVmdCA9IGRyb3BWYXJpYW50LmxlZnQgKyBcInB4XCI7XG4gICAgICB0aGlzLmRyb3Bab25lLnN0eWxlLndpZHRoID0gd2lkdGggKyBcInB4XCI7XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QgbGV2ZWwgPSBuZXdQYXJlbnQuZ2V0TGV2ZWwoKTtcbiAgICAgIGNvbnN0IGluZGVudFdpZHRoID0gdGhpcy5zdGF0ZS50YWJXaWR0aDtcbiAgICAgIGNvbnN0IHdpZHRoID0gaW5kZW50V2lkdGggKiBsZXZlbDtcbiAgICAgIGNvbnN0IGRhc2hQYWRkaW5nID0gMztcbiAgICAgIGNvbnN0IGRhc2hXaWR0aCA9IGluZGVudFdpZHRoIC0gZGFzaFBhZGRpbmc7XG4gICAgICBjb25zdCBjb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgXCItLWNvbG9yLWFjY2VudFwiXG4gICAgICApO1xuXG4gICAgICB0aGlzLmRyb3Bab25lUGFkZGluZy5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgIHRoaXMuZHJvcFpvbmVQYWRkaW5nLnN0eWxlLm1hcmdpbkxlZnQgPSBgLSR7d2lkdGh9cHhgO1xuICAgICAgdGhpcy5kcm9wWm9uZVBhZGRpbmcuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMCR7d2lkdGh9JTIwNCUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTNDbGluZSUyMHgxJTNEJTIyMCUyMiUyMHkxJTNEJTIyMCUyMiUyMHgyJTNEJTIyJHt3aWR0aH0lMjIlMjB5MiUzRCUyMjAlMjIlMjBzdHJva2UlM0QlMjIke2NvbG9yfSUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjglMjIlMjBzdHJva2UtZGFzaGFycmF5JTNEJTIyJHtkYXNoV2lkdGh9JTIwJHtkYXNoUGFkZGluZ30lMjIlMkYlM0UlM0MlMkZzdmclM0UnKWA7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZS52aWV3LmRpc3BhdGNoKHtcbiAgICAgIGVmZmVjdHM6IFtcbiAgICAgICAgZG5kTW92ZWQub2YoXG4gICAgICAgICAgbmV3UGFyZW50SXNSb290TGlzdFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IGVkaXRvci5wb3NUb09mZnNldCh7XG4gICAgICAgICAgICAgICAgbGluZTogbmV3UGFyZW50LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUsXG4gICAgICAgICAgICAgICAgY2g6IDAsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWRlRHJvcFpvbmUoKSB7XG4gICAgdGhpcy5kcm9wWm9uZS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gIH1cbn1cblxuaW50ZXJmYWNlIERyb3BWYXJpYW50IHtcbiAgbGluZTogbnVtYmVyO1xuICBsZXZlbDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIHRvcDogbnVtYmVyO1xuICBwbGFjZVRvTW92ZTogTGlzdDtcbiAgd2hlcmVUb01vdmU6IFwiYWZ0ZXJcIiB8IFwiYmVmb3JlXCIgfCBcImluc2lkZVwiO1xufVxuXG5pbnRlcmZhY2UgRHJhZ0FuZERyb3BQcmVTdGFydFN0YXRlIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHZpZXc6IEVkaXRvclZpZXc7XG59XG5cbmNsYXNzIERyYWdBbmREcm9wU3RhdGUge1xuICBwcml2YXRlIGRyb3BWYXJpYW50czogTWFwPHN0cmluZywgRHJvcFZhcmlhbnQ+ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgZHJvcFZhcmlhbnQ6IERyb3BWYXJpYW50ID0gbnVsbDtcbiAgcHVibGljIGxlZnRQYWRkaW5nID0gMDtcbiAgcHVibGljIHRhYldpZHRoID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmlldzogRWRpdG9yVmlldyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZWRpdG9yOiBNeUVkaXRvcixcbiAgICBwdWJsaWMgcmVhZG9ubHkgcm9vdDogUm9vdCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFxuICApIHtcbiAgICB0aGlzLmNvbGxlY3REcm9wVmFyaWFudHMoKTtcbiAgICB0aGlzLmNhbGN1bGF0ZUxlZnRQYWRkaW5nKCk7XG4gICAgdGhpcy5jYWxjdWxhdGVUYWJXaWR0aCgpO1xuICB9XG5cbiAgZ2V0RHJvcFZhcmlhbnRzKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZHJvcFZhcmlhbnRzLnZhbHVlcygpKTtcbiAgfVxuXG4gIGhhc0Ryb3BWYXJpYW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5kcm9wVmFyaWFudHMuc2l6ZSA+IDA7XG4gIH1cblxuICBjYWxjdWxhdGVOZWFyZXN0RHJvcFZhcmlhbnQoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICBjb25zdCB7IHZpZXcsIGVkaXRvciB9ID0gdGhpcztcblxuICAgIGNvbnN0IGRyb3BWYXJpYW50cyA9IHRoaXMuZ2V0RHJvcFZhcmlhbnRzKCk7XG5cbiAgICBmb3IgKGNvbnN0IHYgb2YgZHJvcFZhcmlhbnRzKSB7XG4gICAgICBjb25zdCB7IHBsYWNlVG9Nb3ZlIH0gPSB2O1xuXG4gICAgICB2LmxlZnQgPSB0aGlzLmxlZnRQYWRkaW5nICsgKHYubGV2ZWwgLSAxKSAqIHRoaXMudGFiV2lkdGg7XG5cbiAgICAgIGNvbnN0IHBvc2l0aW9uQWZ0ZXJMaXN0ID1cbiAgICAgICAgdi53aGVyZVRvTW92ZSA9PT0gXCJhZnRlclwiIHx8IHYud2hlcmVUb01vdmUgPT09IFwiaW5zaWRlXCI7XG4gICAgICBjb25zdCBsaW5lID0gcG9zaXRpb25BZnRlckxpc3RcbiAgICAgICAgPyBwbGFjZVRvTW92ZS5nZXRDb250ZW50RW5kSW5jbHVkaW5nQ2hpbGRyZW4oKS5saW5lXG4gICAgICAgIDogcGxhY2VUb01vdmUuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZTtcbiAgICAgIGNvbnN0IGxpbmVQb3MgPSBlZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgICBsaW5lLFxuICAgICAgICBjaDogMCxcbiAgICAgIH0pO1xuXG4gICAgICB2LnRvcCA9IHZpZXcuY29vcmRzQXRQb3MobGluZVBvcywgLTEpLnRvcDtcblxuICAgICAgaWYgKHBvc2l0aW9uQWZ0ZXJMaXN0KSB7XG4gICAgICAgIHYudG9wICs9IHZpZXcubGluZUJsb2NrQXQobGluZVBvcykuaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICAvLyBCZXR0ZXIgdmVydGljYWwgYWxpZ25tZW50XG4gICAgICB2LnRvcCAtPSA4O1xuICAgIH1cblxuICAgIGNvbnN0IG5lYXJlc3RMaW5lVG9wID0gZHJvcFZhcmlhbnRzXG4gICAgICAuc29ydCgoYSwgYikgPT4gTWF0aC5hYnMoeSAtIGEudG9wKSAtIE1hdGguYWJzKHkgLSBiLnRvcCkpXG4gICAgICAuZmlyc3QoKS50b3A7XG5cbiAgICBjb25zdCB2YXJpYW5zT25OZWFyZXN0TGluZSA9IGRyb3BWYXJpYW50cy5maWx0ZXIoXG4gICAgICAodikgPT4gTWF0aC5hYnModi50b3AgLSBuZWFyZXN0TGluZVRvcCkgPD0gNFxuICAgICk7XG5cbiAgICB0aGlzLmRyb3BWYXJpYW50ID0gdmFyaWFuc09uTmVhcmVzdExpbmVcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBNYXRoLmFicyh4IC0gYS5sZWZ0KSAtIE1hdGguYWJzKHggLSBiLmxlZnQpKVxuICAgICAgLmZpcnN0KCk7XG4gIH1cblxuICBwcml2YXRlIGFkZERyb3BWYXJpYW50KHY6IERyb3BWYXJpYW50KSB7XG4gICAgdGhpcy5kcm9wVmFyaWFudHMuc2V0KGAke3YubGluZX0gJHt2LmxldmVsfWAsIHYpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xsZWN0RHJvcFZhcmlhbnRzKCkge1xuICAgIGNvbnN0IHZpc2l0ID0gKGxpc3RzOiBMaXN0W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgcGxhY2VUb01vdmUgb2YgbGlzdHMpIHtcbiAgICAgICAgY29uc3QgbGluZUJlZm9yZSA9IHBsYWNlVG9Nb3ZlLmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmU7XG4gICAgICAgIGNvbnN0IGxpbmVBZnRlciA9IHBsYWNlVG9Nb3ZlLmdldENvbnRlbnRFbmRJbmNsdWRpbmdDaGlsZHJlbigpLmxpbmUgKyAxO1xuXG4gICAgICAgIGNvbnN0IGxldmVsID0gcGxhY2VUb01vdmUuZ2V0TGV2ZWwoKTtcblxuICAgICAgICB0aGlzLmFkZERyb3BWYXJpYW50KHtcbiAgICAgICAgICBsaW5lOiBsaW5lQmVmb3JlLFxuICAgICAgICAgIGxldmVsLFxuICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBsYWNlVG9Nb3ZlLFxuICAgICAgICAgIHdoZXJlVG9Nb3ZlOiBcImJlZm9yZVwiLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hZGREcm9wVmFyaWFudCh7XG4gICAgICAgICAgbGluZTogbGluZUFmdGVyLFxuICAgICAgICAgIGxldmVsLFxuICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBsYWNlVG9Nb3ZlLFxuICAgICAgICAgIHdoZXJlVG9Nb3ZlOiBcImFmdGVyXCIsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChwbGFjZVRvTW92ZSA9PT0gdGhpcy5saXN0KSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGxhY2VUb01vdmUuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgdGhpcy5hZGREcm9wVmFyaWFudCh7XG4gICAgICAgICAgICBsaW5lOiBsaW5lQWZ0ZXIsXG4gICAgICAgICAgICBsZXZlbDogbGV2ZWwgKyAxLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIHBsYWNlVG9Nb3ZlLFxuICAgICAgICAgICAgd2hlcmVUb01vdmU6IFwiaW5zaWRlXCIsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlzaXQocGxhY2VUb01vdmUuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmlzaXQodGhpcy5yb290LmdldENoaWxkcmVuKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVMZWZ0UGFkZGluZygpIHtcbiAgICB0aGlzLmxlZnRQYWRkaW5nID0gdGhpcy52aWV3LmNvb3Jkc0F0UG9zKDAsIC0xKS5sZWZ0O1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVUYWJXaWR0aCgpIHtcbiAgICBjb25zdCB7IHZpZXcgfSA9IHRoaXM7XG5cbiAgICBjb25zdCBzaW5nbGVJbmRlbnQgPSBpbmRlbnRTdHJpbmcodmlldy5zdGF0ZSwgZ2V0SW5kZW50VW5pdCh2aWV3LnN0YXRlKSk7XG5cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB2aWV3LnN0YXRlLmRvYy5saW5lczsgaSsrKSB7XG4gICAgICBjb25zdCBsaW5lID0gdmlldy5zdGF0ZS5kb2MubGluZShpKTtcblxuICAgICAgaWYgKGxpbmUudGV4dC5zdGFydHNXaXRoKHNpbmdsZUluZGVudCkpIHtcbiAgICAgICAgY29uc3QgYSA9IHZpZXcuY29vcmRzQXRQb3MobGluZS5mcm9tLCAtMSk7XG4gICAgICAgIGNvbnN0IGIgPSB2aWV3LmNvb3Jkc0F0UG9zKGxpbmUuZnJvbSArIHNpbmdsZUluZGVudC5sZW5ndGgsIC0xKTtcbiAgICAgICAgdGhpcy50YWJXaWR0aCA9IGIubGVmdCAtIGEubGVmdDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudGFiV2lkdGggPSB2aWV3LmRlZmF1bHRDaGFyYWN0ZXJXaWR0aCAqIGdldEluZGVudFVuaXQodmlldy5zdGF0ZSk7XG4gIH1cbn1cblxuY29uc3QgZG5kU3RhcnRlZCA9IFN0YXRlRWZmZWN0LmRlZmluZTxudW1iZXJbXT4oe1xuICBtYXA6IChsaW5lcywgY2hhbmdlKSA9PiBsaW5lcy5tYXAoKGwpID0+IGNoYW5nZS5tYXBQb3MobCkpLFxufSk7XG5cbmNvbnN0IGRuZE1vdmVkID0gU3RhdGVFZmZlY3QuZGVmaW5lPG51bWJlciB8IG51bGw+KHtcbiAgbWFwOiAobGluZSwgY2hhbmdlKSA9PiAobGluZSAhPT0gbnVsbCA/IGNoYW5nZS5tYXBQb3MobGluZSkgOiBsaW5lKSxcbn0pO1xuXG5jb25zdCBkbmRFbmRlZCA9IFN0YXRlRWZmZWN0LmRlZmluZTx2b2lkPigpO1xuXG5jb25zdCBkcmFnZ2luZ0xpbmVEZWNvcmF0aW9uID0gRGVjb3JhdGlvbi5saW5lKHtcbiAgY2xhc3M6IFwib3V0bGluZXItcGx1Z2luLWRyYWdnaW5nLWxpbmVcIixcbn0pO1xuXG5jb25zdCBkcm9wcGluZ0xpbmVEZWNvcmF0aW9uID0gRGVjb3JhdGlvbi5saW5lKHtcbiAgY2xhc3M6IFwib3V0bGluZXItcGx1Z2luLWRyb3BwaW5nLWxpbmVcIixcbn0pO1xuXG5jb25zdCBkcmFnZ2luZ0xpbmVzU3RhdGVGaWVsZCA9IFN0YXRlRmllbGQuZGVmaW5lPERlY29yYXRpb25TZXQ+KHtcbiAgY3JlYXRlOiAoKSA9PiBEZWNvcmF0aW9uLm5vbmUsXG5cbiAgdXBkYXRlOiAoZG5kU3RhdGUsIHRyKSA9PiB7XG4gICAgZG5kU3RhdGUgPSBkbmRTdGF0ZS5tYXAodHIuY2hhbmdlcyk7XG5cbiAgICBmb3IgKGNvbnN0IGUgb2YgdHIuZWZmZWN0cykge1xuICAgICAgaWYgKGUuaXMoZG5kU3RhcnRlZCkpIHtcbiAgICAgICAgZG5kU3RhdGUgPSBkbmRTdGF0ZS51cGRhdGUoe1xuICAgICAgICAgIGFkZDogZS52YWx1ZS5tYXAoKGwpID0+IGRyYWdnaW5nTGluZURlY29yYXRpb24ucmFuZ2UobCwgbCkpLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGUuaXMoZG5kRW5kZWQpKSB7XG4gICAgICAgIGRuZFN0YXRlID0gRGVjb3JhdGlvbi5ub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkbmRTdGF0ZTtcbiAgfSxcblxuICBwcm92aWRlOiAoZikgPT4gRWRpdG9yVmlldy5kZWNvcmF0aW9ucy5mcm9tKGYpLFxufSk7XG5cbmNvbnN0IGRyb3BwaW5nTGluZXNTdGF0ZUZpZWxkID0gU3RhdGVGaWVsZC5kZWZpbmU8RGVjb3JhdGlvblNldD4oe1xuICBjcmVhdGU6ICgpID0+IERlY29yYXRpb24ubm9uZSxcblxuICB1cGRhdGU6IChkbmREcm9wcGluZ1N0YXRlLCB0cikgPT4ge1xuICAgIGRuZERyb3BwaW5nU3RhdGUgPSBkbmREcm9wcGluZ1N0YXRlLm1hcCh0ci5jaGFuZ2VzKTtcblxuICAgIGZvciAoY29uc3QgZSBvZiB0ci5lZmZlY3RzKSB7XG4gICAgICBpZiAoZS5pcyhkbmRNb3ZlZCkpIHtcbiAgICAgICAgZG5kRHJvcHBpbmdTdGF0ZSA9XG4gICAgICAgICAgZS52YWx1ZSA9PT0gbnVsbFxuICAgICAgICAgICAgPyBEZWNvcmF0aW9uLm5vbmVcbiAgICAgICAgICAgIDogRGVjb3JhdGlvbi5zZXQoZHJvcHBpbmdMaW5lRGVjb3JhdGlvbi5yYW5nZShlLnZhbHVlLCBlLnZhbHVlKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlLmlzKGRuZEVuZGVkKSkge1xuICAgICAgICBkbmREcm9wcGluZ1N0YXRlID0gRGVjb3JhdGlvbi5ub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkbmREcm9wcGluZ1N0YXRlO1xuICB9LFxuXG4gIHByb3ZpZGU6IChmKSA9PiBFZGl0b3JWaWV3LmRlY29yYXRpb25zLmZyb20oZiksXG59KTtcblxuZnVuY3Rpb24gZ2V0RWRpdG9yVmlld0Zyb21IVE1MRWxlbWVudChlOiBIVE1MRWxlbWVudCkge1xuICB3aGlsZSAoZSAmJiAhZS5jbGFzc0xpc3QuY29udGFpbnMoXCJjbS1lZGl0b3JcIikpIHtcbiAgICBlID0gZS5wYXJlbnRFbGVtZW50O1xuICB9XG5cbiAgaWYgKCFlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gRWRpdG9yVmlldy5maW5kRnJvbURPTShlKTtcbn1cblxuZnVuY3Rpb24gaXNDbGlja09uQnVsbGV0KGU6IE1vdXNlRXZlbnQpIHtcbiAgbGV0IGVsID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgd2hpbGUgKGVsKSB7XG4gICAgaWYgKFxuICAgICAgZWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwiY20tZm9ybWF0dGluZy1saXN0XCIpIHx8XG4gICAgICBlbC5jbGFzc0xpc3QuY29udGFpbnMoXCJjbS1mb2xkLWluZGljYXRvclwiKSB8fFxuICAgICAgZWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwidGFzay1saXN0LWl0ZW0tY2hlY2tib3hcIilcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGVsID0gZWwucGFyZW50RWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNTYW1lUm9vdHMoYTogUm9vdCwgYjogUm9vdCkge1xuICBjb25zdCBbYVN0YXJ0LCBhRW5kXSA9IGEuZ2V0Q29udGVudFJhbmdlKCk7XG4gIGNvbnN0IFtiU3RhcnQsIGJFbmRdID0gYi5nZXRDb250ZW50UmFuZ2UoKTtcblxuICBpZiAoY21wUG9zKGFTdGFydCwgYlN0YXJ0KSAhPT0gMCB8fCBjbXBQb3MoYUVuZCwgYkVuZCkgIT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gYS5wcmludCgpID09PSBiLnByaW50KCk7XG59XG5cbmZ1bmN0aW9uIGlzRmVhdHVyZVN1cHBvcnRlZCgpIHtcbiAgcmV0dXJuIFBsYXRmb3JtLmlzRGVza3RvcDtcbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIEtlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgaWYgKCFsaXN0LmlzRm9sZGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmb2xkUm9vdCA9IGxpc3QuZ2V0VG9wRm9sZFJvb3QoKTtcbiAgICBjb25zdCBmaXJzdExpbmVFbmQgPSBmb2xkUm9vdC5nZXRMaW5lc0luZm8oKVswXS50bztcblxuICAgIGlmIChjdXJzb3IubGluZSA+IGZpcnN0TGluZUVuZC5saW5lKSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKGZpcnN0TGluZUVuZCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBLZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnQgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGNvbnRlbnRTdGFydCA9IGxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0QWZ0ZXJDaGVja2JveCgpO1xuICAgIGNvbnN0IGxpbmVQcmVmaXggPVxuICAgICAgY29udGVudFN0YXJ0LmxpbmUgPT09IGN1cnNvci5saW5lXG4gICAgICAgID8gY29udGVudFN0YXJ0LmNoXG4gICAgICAgIDogbGlzdC5nZXROb3Rlc0luZGVudCgpLmxlbmd0aDtcblxuICAgIGlmIChjdXJzb3IuY2ggPCBsaW5lUHJlZml4KSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgICAgbGluZTogY3Vyc29yLmxpbmUsXG4gICAgICAgIGNoOiBsaW5lUHJlZml4LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBFZGl0b3JTdGF0ZSwgVHJhbnNhY3Rpb24gfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IsIGdldEVkaXRvckZyb21TdGF0ZSB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IEtlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9LZWVwQ3Vyc29yT3V0c2lkZUZvbGRlZExpbmVzXCI7XG5pbXBvcnQgeyBLZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnQgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9LZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnRcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QYXJzZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5cbmV4cG9ydCBjbGFzcyBFZGl0b3JTZWxlY3Rpb25zQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIEVkaXRvclN0YXRlLnRyYW5zYWN0aW9uRXh0ZW5kZXIub2YodGhpcy50cmFuc2FjdGlvbkV4dGVuZGVyKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgdHJhbnNhY3Rpb25FeHRlbmRlciA9ICh0cjogVHJhbnNhY3Rpb24pOiBudWxsID0+IHtcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5rZWVwQ3Vyc29yV2l0aGluQ29udGVudCA9PT0gXCJuZXZlclwiIHx8ICF0ci5zZWxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGVkaXRvciA9IGdldEVkaXRvckZyb21TdGF0ZSh0ci5zdGFydFN0YXRlKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVTZWxlY3Rpb25zQ2hhbmdlcyhlZGl0b3IpO1xuICAgIH0sIDApO1xuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVTZWxlY3Rpb25zQ2hhbmdlcyA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IHRoaXMucGFyc2VyLnBhcnNlKGVkaXRvcik7XG5cbiAgICBpZiAoIXJvb3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB7XG4gICAgICBjb25zdCB7IHNob3VsZFN0b3BQcm9wYWdhdGlvbiB9ID0gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIuZXZhbChcbiAgICAgICAgcm9vdCxcbiAgICAgICAgbmV3IEtlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMocm9vdCksXG4gICAgICAgIGVkaXRvclxuICAgICAgKTtcblxuICAgICAgaWYgKHNob3VsZFN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIuZXZhbChcbiAgICAgIHJvb3QsXG4gICAgICBuZXcgS2VlcEN1cnNvcldpdGhpbkxpc3RDb250ZW50KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImV4cG9ydCBjb25zdCBjaGVja2JveFJlID0gYFxcXFxbW15cXFxcW1xcXFxdXVxcXFxdWyBcXHRdYDtcbiIsImV4cG9ydCBmdW5jdGlvbiBpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveChsaW5lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGxpbmUgPT09IFwiXCIgfHwgbGluZSA9PT0gXCJbIF0gXCI7XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgTGlzdCwgUG9zaXRpb24sIFJvb3QsIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuaW1wb3J0IHsgY2hlY2tib3hSZSB9IGZyb20gXCIuLi91dGlscy9jaGVja2JveFJlXCI7XG5pbXBvcnQgeyBpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveCB9IGZyb20gXCIuLi91dGlscy9pc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdldFpvb21SYW5nZSB7XG4gIGdldFpvb21SYW5nZSgpOiB7IGZyb206IFBvc2l0aW9uOyB0bzogUG9zaXRpb24gfSB8IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVOZXdJdGVtIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb290OiBSb290LFxuICAgIHByaXZhdGUgZGVmYXVsdEluZGVudENoYXJzOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBnZXRab29tUmFuZ2U6IEdldFpvb21SYW5nZVxuICApIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlU2VsZWN0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb24gPSByb290LmdldFNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5hbmNob3IubGluZSAhPT0gc2VsZWN0aW9uLmhlYWQubGluZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcblxuICAgIGlmIChsaW5lcy5sZW5ndGggPT09IDEgJiYgaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gobGluZXNbMF0udGV4dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVVbmRlckN1cnNvciA9IGxpbmVzLmZpbmQoKGwpID0+IGwuZnJvbS5saW5lID09PSBjdXJzb3IubGluZSk7XG5cbiAgICBpZiAoY3Vyc29yLmNoIDwgbGluZVVuZGVyQ3Vyc29yLmZyb20uY2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IG9sZExpbmVzLCBuZXdMaW5lcyB9ID0gbGluZXMucmVkdWNlKFxuICAgICAgKGFjYywgbGluZSkgPT4ge1xuICAgICAgICBpZiAoY3Vyc29yLmxpbmUgPiBsaW5lLmZyb20ubGluZSkge1xuICAgICAgICAgIGFjYy5vbGRMaW5lcy5wdXNoKGxpbmUudGV4dCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3Vyc29yLmxpbmUgPT09IGxpbmUuZnJvbS5saW5lKSB7XG4gICAgICAgICAgY29uc3QgbGVmdCA9IGxpbmUudGV4dC5zbGljZSgwLCBzZWxlY3Rpb24uZnJvbSAtIGxpbmUuZnJvbS5jaCk7XG4gICAgICAgICAgY29uc3QgcmlnaHQgPSBsaW5lLnRleHQuc2xpY2Uoc2VsZWN0aW9uLnRvIC0gbGluZS5mcm9tLmNoKTtcbiAgICAgICAgICBhY2Mub2xkTGluZXMucHVzaChsZWZ0KTtcbiAgICAgICAgICBhY2MubmV3TGluZXMucHVzaChyaWdodCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3Vyc29yLmxpbmUgPCBsaW5lLmZyb20ubGluZSkge1xuICAgICAgICAgIGFjYy5uZXdMaW5lcy5wdXNoKGxpbmUudGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb2xkTGluZXM6IFtdLFxuICAgICAgICBuZXdMaW5lczogW10sXG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IGNvZGVCbG9ja0JhY3RpY2tzID0gb2xkTGluZXMuam9pbihcIlxcblwiKS5zcGxpdChcImBgYFwiKS5sZW5ndGggLSAxO1xuICAgIGNvbnN0IGlzSW5zaWRlQ29kZWJsb2NrID1cbiAgICAgIGNvZGVCbG9ja0JhY3RpY2tzID4gMCAmJiBjb2RlQmxvY2tCYWN0aWNrcyAlIDIgIT09IDA7XG5cbiAgICBpZiAoaXNJbnNpZGVDb2RlYmxvY2spIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHpvb21SYW5nZSA9IHRoaXMuZ2V0Wm9vbVJhbmdlLmdldFpvb21SYW5nZSgpO1xuICAgIGNvbnN0IGxpc3RJc1pvb21pbmdSb290ID0gQm9vbGVhbihcbiAgICAgIHpvb21SYW5nZSAmJlxuICAgICAgICBsaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUgPj0gem9vbVJhbmdlLmZyb20ubGluZSAmJlxuICAgICAgICBsaXN0LmdldExhc3RMaW5lQ29udGVudEVuZCgpLmxpbmUgPD0gem9vbVJhbmdlLmZyb20ubGluZVxuICAgICk7XG5cbiAgICBjb25zdCBoYXNDaGlsZHJlbiA9ICFsaXN0LmlzRW1wdHkoKTtcbiAgICBjb25zdCBjaGlsZElzRm9sZGVkID0gbGlzdC5pc0ZvbGRSb290KCk7XG4gICAgY29uc3QgZW5kUG9zID0gbGlzdC5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKTtcbiAgICBjb25zdCBlbmRPZkxpbmUgPSBjdXJzb3IubGluZSA9PT0gZW5kUG9zLmxpbmUgJiYgY3Vyc29yLmNoID09PSBlbmRQb3MuY2g7XG5cbiAgICBjb25zdCBvbkNoaWxkTGV2ZWwgPVxuICAgICAgbGlzdElzWm9vbWluZ1Jvb3QgfHwgKGhhc0NoaWxkcmVuICYmICFjaGlsZElzRm9sZGVkICYmIGVuZE9mTGluZSk7XG5cbiAgICBjb25zdCBpbmRlbnQgPSBvbkNoaWxkTGV2ZWxcbiAgICAgID8gaGFzQ2hpbGRyZW5cbiAgICAgICAgPyBsaXN0LmdldENoaWxkcmVuKClbMF0uZ2V0Rmlyc3RMaW5lSW5kZW50KClcbiAgICAgICAgOiBsaXN0LmdldEZpcnN0TGluZUluZGVudCgpICsgdGhpcy5kZWZhdWx0SW5kZW50Q2hhcnNcbiAgICAgIDogbGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKTtcblxuICAgIGNvbnN0IGJ1bGxldCA9XG4gICAgICBvbkNoaWxkTGV2ZWwgJiYgaGFzQ2hpbGRyZW5cbiAgICAgICAgPyBsaXN0LmdldENoaWxkcmVuKClbMF0uZ2V0QnVsbGV0KClcbiAgICAgICAgOiBsaXN0LmdldEJ1bGxldCgpO1xuXG4gICAgY29uc3Qgc3BhY2VBZnRlckJ1bGxldCA9XG4gICAgICBvbkNoaWxkTGV2ZWwgJiYgaGFzQ2hpbGRyZW5cbiAgICAgICAgPyBsaXN0LmdldENoaWxkcmVuKClbMF0uZ2V0U3BhY2VBZnRlckJ1bGxldCgpXG4gICAgICAgIDogbGlzdC5nZXRTcGFjZUFmdGVyQnVsbGV0KCk7XG5cbiAgICBjb25zdCBwcmVmaXggPSBvbGRMaW5lc1swXS5tYXRjaChjaGVja2JveFJlKSA/IFwiWyBdIFwiIDogXCJcIjtcblxuICAgIGNvbnN0IG5ld0xpc3QgPSBuZXcgTGlzdChcbiAgICAgIGxpc3QuZ2V0Um9vdCgpLFxuICAgICAgaW5kZW50LFxuICAgICAgYnVsbGV0LFxuICAgICAgcHJlZml4LFxuICAgICAgc3BhY2VBZnRlckJ1bGxldCxcbiAgICAgIHByZWZpeCArIG5ld0xpbmVzLnNoaWZ0KCksXG4gICAgICBmYWxzZVxuICAgICk7XG5cbiAgICBpZiAobmV3TGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgbmV3TGlzdC5zZXROb3Rlc0luZGVudChsaXN0LmdldE5vdGVzSW5kZW50KCkpO1xuICAgICAgZm9yIChjb25zdCBsaW5lIG9mIG5ld0xpbmVzKSB7XG4gICAgICAgIG5ld0xpc3QuYWRkTGluZShsaW5lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob25DaGlsZExldmVsKSB7XG4gICAgICBsaXN0LmFkZEJlZm9yZUFsbChuZXdMaXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjaGlsZElzRm9sZGVkIHx8ICFlbmRPZkxpbmUpIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBsaXN0LmdldENoaWxkcmVuKCk7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgICBsaXN0LnJlbW92ZUNoaWxkKGNoaWxkKTtcbiAgICAgICAgICBuZXdMaXN0LmFkZEFmdGVyQWxsKGNoaWxkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LmdldFBhcmVudCgpLmFkZEFmdGVyKGxpc3QsIG5ld0xpc3QpO1xuICAgIH1cblxuICAgIGxpc3QucmVwbGFjZUxpbmVzKG9sZExpbmVzKTtcblxuICAgIGNvbnN0IG5ld0xpc3RTdGFydCA9IG5ld0xpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IG5ld0xpc3RTdGFydC5saW5lLFxuICAgICAgY2g6IG5ld0xpc3RTdGFydC5jaCArIHByZWZpeC5sZW5ndGgsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCwgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBPdXRkZW50TGlzdCBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IHBhcmVudCA9IGxpc3QuZ2V0UGFyZW50KCk7XG4gICAgY29uc3QgZ3JhbmRQYXJlbnQgPSBwYXJlbnQuZ2V0UGFyZW50KCk7XG5cbiAgICBpZiAoIWdyYW5kUGFyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVCZWZvcmUgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG4gICAgY29uc3QgaW5kZW50Um1Gcm9tID0gcGFyZW50LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aDtcbiAgICBjb25zdCBpbmRlbnRSbVRpbGwgPSBsaXN0LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aDtcblxuICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICBncmFuZFBhcmVudC5hZGRBZnRlcihwYXJlbnQsIGxpc3QpO1xuICAgIGxpc3QudW5pbmRlbnRDb250ZW50KGluZGVudFJtRnJvbSwgaW5kZW50Um1UaWxsKTtcblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVBZnRlciA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcbiAgICBjb25zdCBsaW5lRGlmZiA9IGxpc3RTdGFydExpbmVBZnRlciAtIGxpc3RTdGFydExpbmVCZWZvcmU7XG4gICAgY29uc3QgY2hEaWZmID0gaW5kZW50Um1UaWxsIC0gaW5kZW50Um1Gcm9tO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgKyBsaW5lRGlmZixcbiAgICAgIGNoOiBjdXJzb3IuY2ggLSBjaERpZmYsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcbmltcG9ydCB7IE91dGRlbnRMaXN0IH0gZnJvbSBcIi4vT3V0ZGVudExpc3RcIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyBpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveCB9IGZyb20gXCIuLi91dGlscy9pc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveFwiO1xuXG5leHBvcnQgY2xhc3MgT3V0ZGVudExpc3RJZkl0c0VtcHR5IGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBvdXRkZW50TGlzdDogT3V0ZGVudExpc3Q7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7XG4gICAgdGhpcy5vdXRkZW50TGlzdCA9IG5ldyBPdXRkZW50TGlzdChyb290KTtcbiAgfVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5vdXRkZW50TGlzdC5zaG91bGRTdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXRkZW50TGlzdC5zaG91bGRVcGRhdGUoKTtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzKCk7XG5cbiAgICBpZiAoXG4gICAgICBsaW5lcy5sZW5ndGggPiAxIHx8XG4gICAgICAhaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gobGluZXNbMF0pIHx8XG4gICAgICBsaXN0LmdldExldmVsKCkgPT09IDFcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm91dGRlbnRMaXN0LnBlcmZvcm0oKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgUHJlYyB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBDcmVhdGVOZXdJdGVtIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvQ3JlYXRlTmV3SXRlbVwiO1xuaW1wb3J0IHsgT3V0ZGVudExpc3RJZkl0c0VtcHR5IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvT3V0ZGVudExpc3RJZkl0c0VtcHR5XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvUGFyc2VyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2sgfSBmcm9tIFwiLi4vdXRpbHMvY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2tcIjtcblxuZXhwb3J0IGNsYXNzIEVudGVyQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgaW1lRGV0ZWN0b3I6IElNRURldGVjdG9yLFxuICAgIHByaXZhdGUgb2JzaWRpYW5TZXR0aW5nczogT2JzaWRpYW5TZXR0aW5ncyxcbiAgICBwcml2YXRlIHBhcnNlcjogUGFyc2VyLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uUGVyZm9ybWVyOiBPcGVyYXRpb25QZXJmb3JtZXJcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBQcmVjLmhpZ2hlc3QoXG4gICAgICAgIGtleW1hcC5vZihbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcIkVudGVyXCIsXG4gICAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVFbnRlckJlaGF2aW91ciAmJiAhdGhpcy5pbWVEZXRlY3Rvci5pc09wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBjb25zdCByb290ID0gdGhpcy5wYXJzZXIucGFyc2UoZWRpdG9yKTtcblxuICAgIGlmICghcm9vdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2hvdWxkVXBkYXRlOiBmYWxzZSxcbiAgICAgICAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QgcmVzID0gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIuZXZhbChcbiAgICAgICAgcm9vdCxcbiAgICAgICAgbmV3IE91dGRlbnRMaXN0SWZJdHNFbXB0eShyb290KSxcbiAgICAgICAgZWRpdG9yXG4gICAgICApO1xuXG4gICAgICBpZiAocmVzLnNob3VsZFN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRJbmRlbnRDaGFycyA9IHRoaXMub2JzaWRpYW5TZXR0aW5ncy5nZXREZWZhdWx0SW5kZW50Q2hhcnMoKTtcbiAgICAgIGNvbnN0IHpvb21SYW5nZSA9IGVkaXRvci5nZXRab29tUmFuZ2UoKTtcbiAgICAgIGNvbnN0IGdldFpvb21SYW5nZSA9IHtcbiAgICAgICAgZ2V0Wm9vbVJhbmdlOiAoKSA9PiB6b29tUmFuZ2UsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXMgPSB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5ldmFsKFxuICAgICAgICByb290LFxuICAgICAgICBuZXcgQ3JlYXRlTmV3SXRlbShyb290LCBkZWZhdWx0SW5kZW50Q2hhcnMsIGdldFpvb21SYW5nZSksXG4gICAgICAgIGVkaXRvclxuICAgICAgKTtcblxuICAgICAgaWYgKHJlcy5zaG91bGRVcGRhdGUgJiYgem9vbVJhbmdlKSB7XG4gICAgICAgIGVkaXRvci50cnlSZWZyZXNoWm9vbSh6b29tUmFuZ2UuZnJvbS5saW5lKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gIH07XG59XG4iLCJpbXBvcnQgeyBFZGl0b3IgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0b3JDYWxsYmFjayhjYjogKGVkaXRvcjogTXlFZGl0b3IpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIChlZGl0b3I6IEVkaXRvcikgPT4ge1xuICAgIGNvbnN0IG15RWRpdG9yID0gbmV3IE15RWRpdG9yKGVkaXRvcik7XG4gICAgY29uc3Qgc2hvdWxkU3RvcFByb3BhZ2F0aW9uID0gY2IobXlFZGl0b3IpO1xuXG4gICAgaWYgKFxuICAgICAgIXNob3VsZFN0b3BQcm9wYWdhdGlvbiAmJlxuICAgICAgd2luZG93LmV2ZW50ICYmXG4gICAgICB3aW5kb3cuZXZlbnQudHlwZSA9PT0gXCJrZXlkb3duXCJcbiAgICApIHtcbiAgICAgIG15RWRpdG9yLnRyaWdnZXJPbktleURvd24od2luZG93LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpO1xuICAgIH1cbiAgfTtcbn1cbiIsImltcG9ydCB7IE5vdGljZSwgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBPYnNpZGlhblNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUVkaXRvckNhbGxiYWNrIH0gZnJvbSBcIi4uL3V0aWxzL2NyZWF0ZUVkaXRvckNhbGxiYWNrXCI7XG5cbmV4cG9ydCBjbGFzcyBMaXN0c0ZvbGRpbmdDb21tYW5kcyBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBvYnNpZGlhblNldHRpbmdzOiBPYnNpZGlhblNldHRpbmdzXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwiZm9sZFwiLFxuICAgICAgaWNvbjogXCJjaGV2cm9ucy1kb3duLXVwXCIsXG4gICAgICBuYW1lOiBcIkZvbGQgdGhlIGxpc3RcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiBjcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLmZvbGQpLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIl0sXG4gICAgICAgICAga2V5OiBcIkFycm93VXBcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcInVuZm9sZFwiLFxuICAgICAgaWNvbjogXCJjaGV2cm9ucy11cC1kb3duXCIsXG4gICAgICBuYW1lOiBcIlVuZm9sZCB0aGUgbGlzdFwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IGNyZWF0ZUVkaXRvckNhbGxiYWNrKHRoaXMudW5mb2xkKSxcbiAgICAgIGhvdGtleXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vZGlmaWVyczogW1wiTW9kXCJdLFxuICAgICAgICAgIGtleTogXCJBcnJvd0Rvd25cIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgc2V0Rm9sZChlZGl0b3I6IE15RWRpdG9yLCB0eXBlOiBcImZvbGRcIiB8IFwidW5mb2xkXCIpIHtcbiAgICBpZiAoIXRoaXMub2JzaWRpYW5TZXR0aW5ncy5nZXRGb2xkU2V0dGluZ3MoKS5mb2xkSW5kZW50KSB7XG4gICAgICBuZXcgTm90aWNlKFxuICAgICAgICBgVW5hYmxlIHRvICR7dHlwZX0gYmVjYXVzZSBmb2xkaW5nIGlzIGRpc2FibGVkLiBQbGVhc2UgZW5hYmxlIFwiRm9sZCBpbmRlbnRcIiBpbiBPYnNpZGlhbiBzZXR0aW5ncy5gLFxuICAgICAgICA1MDAwXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgY3Vyc29yID0gZWRpdG9yLmdldEN1cnNvcigpO1xuXG4gICAgaWYgKHR5cGUgPT09IFwiZm9sZFwiKSB7XG4gICAgICBlZGl0b3IuZm9sZChjdXJzb3IubGluZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVkaXRvci51bmZvbGQoY3Vyc29yLmxpbmUpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2xkID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXRGb2xkKGVkaXRvciwgXCJmb2xkXCIpO1xuICB9O1xuXG4gIHByaXZhdGUgdW5mb2xkID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXRGb2xkKGVkaXRvciwgXCJ1bmZvbGRcIik7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCwgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBJbmRlbnRMaXN0IGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290LCBwcml2YXRlIGRlZmF1bHRJbmRlbnRDaGFyczogc3RyaW5nKSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgcGFyZW50ID0gbGlzdC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBwcmV2ID0gcGFyZW50LmdldFByZXZTaWJsaW5nT2YobGlzdCk7XG5cbiAgICBpZiAoIXByZXYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUJlZm9yZSA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcblxuICAgIGNvbnN0IGluZGVudFBvcyA9IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoO1xuICAgIGxldCBpbmRlbnRDaGFycyA9IFwiXCI7XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIgJiYgIXByZXYuaXNFbXB0eSgpKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IHByZXZcbiAgICAgICAgLmdldENoaWxkcmVuKClbMF1cbiAgICAgICAgLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIC5zbGljZShwcmV2LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgaWYgKGluZGVudENoYXJzID09PSBcIlwiKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IGxpc3RcbiAgICAgICAgLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIC5zbGljZShwYXJlbnQuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIgJiYgIWxpc3QuaXNFbXB0eSgpKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IGxpc3QuZ2V0Q2hpbGRyZW4oKVswXS5nZXRGaXJzdExpbmVJbmRlbnQoKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIpIHtcbiAgICAgIGluZGVudENoYXJzID0gdGhpcy5kZWZhdWx0SW5kZW50Q2hhcnM7XG4gICAgfVxuXG4gICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuICAgIHByZXYuYWRkQWZ0ZXJBbGwobGlzdCk7XG4gICAgbGlzdC5pbmRlbnRDb250ZW50KGluZGVudFBvcywgaW5kZW50Q2hhcnMpO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUFmdGVyID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuICAgIGNvbnN0IGxpbmVEaWZmID0gbGlzdFN0YXJ0TGluZUFmdGVyIC0gbGlzdFN0YXJ0TGluZUJlZm9yZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lICsgbGluZURpZmYsXG4gICAgICBjaDogY3Vyc29yLmNoICsgaW5kZW50Q2hhcnMubGVuZ3RoLFxuICAgIH0pO1xuXG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QsIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUxpc3REb3duIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgcGFyZW50ID0gbGlzdC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBncmFuZFBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBuZXh0ID0gcGFyZW50LmdldE5leHRTaWJsaW5nT2YobGlzdCk7XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQmVmb3JlID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuXG4gICAgaWYgKCFuZXh0ICYmIGdyYW5kUGFyZW50KSB7XG4gICAgICBjb25zdCBuZXdQYXJlbnQgPSBncmFuZFBhcmVudC5nZXROZXh0U2libGluZ09mKHBhcmVudCk7XG5cbiAgICAgIGlmIChuZXdQYXJlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuICAgICAgICBuZXdQYXJlbnQuYWRkQmVmb3JlQWxsKGxpc3QpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmV4dCkge1xuICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICAgIHBhcmVudC5hZGRBZnRlcihuZXh0LCBsaXN0KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudXBkYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVBZnRlciA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcbiAgICBjb25zdCBsaW5lRGlmZiA9IGxpc3RTdGFydExpbmVBZnRlciAtIGxpc3RTdGFydExpbmVCZWZvcmU7XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIHJvb3QucmVwbGFjZUN1cnNvcih7XG4gICAgICBsaW5lOiBjdXJzb3IubGluZSArIGxpbmVEaWZmLFxuICAgICAgY2g6IGN1cnNvci5jaCxcbiAgICB9KTtcblxuICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMocm9vdCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290LCByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzIH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIE1vdmVMaXN0VXAgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBwYXJlbnQgPSBsaXN0LmdldFBhcmVudCgpO1xuICAgIGNvbnN0IGdyYW5kUGFyZW50ID0gcGFyZW50LmdldFBhcmVudCgpO1xuICAgIGNvbnN0IHByZXYgPSBwYXJlbnQuZ2V0UHJldlNpYmxpbmdPZihsaXN0KTtcblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVCZWZvcmUgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG5cbiAgICBpZiAoIXByZXYgJiYgZ3JhbmRQYXJlbnQpIHtcbiAgICAgIGNvbnN0IG5ld1BhcmVudCA9IGdyYW5kUGFyZW50LmdldFByZXZTaWJsaW5nT2YocGFyZW50KTtcblxuICAgICAgaWYgKG5ld1BhcmVudCkge1xuICAgICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG4gICAgICAgIG5ld1BhcmVudC5hZGRBZnRlckFsbChsaXN0KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByZXYpIHtcbiAgICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG4gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG4gICAgICBwYXJlbnQuYWRkQmVmb3JlKHByZXYsIGxpc3QpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy51cGRhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUFmdGVyID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuICAgIGNvbnN0IGxpbmVEaWZmID0gbGlzdFN0YXJ0TGluZUFmdGVyIC0gbGlzdFN0YXJ0TGluZUJlZm9yZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lICsgbGluZURpZmYsXG4gICAgICBjaDogY3Vyc29yLmNoLFxuICAgIH0pO1xuXG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBJbmRlbnRMaXN0IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvSW5kZW50TGlzdFwiO1xuaW1wb3J0IHsgTW92ZUxpc3REb3duIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvTW92ZUxpc3REb3duXCI7XG5pbXBvcnQgeyBNb3ZlTGlzdFVwIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvTW92ZUxpc3RVcFwiO1xuaW1wb3J0IHsgT3V0ZGVudExpc3QgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9PdXRkZW50TGlzdFwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBjcmVhdGVFZGl0b3JDYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVFZGl0b3JDYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgTGlzdHNNb3ZlbWVudENvbW1hbmRzIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcIm1vdmUtbGlzdC1pdGVtLXVwXCIsXG4gICAgICBpY29uOiBcImFycm93LXVwXCIsXG4gICAgICBuYW1lOiBcIk1vdmUgbGlzdCBhbmQgc3VibGlzdHMgdXBcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiBjcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLm1vdmVMaXN0VXApLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIiwgXCJTaGlmdFwiXSxcbiAgICAgICAgICBrZXk6IFwiQXJyb3dVcFwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwibW92ZS1saXN0LWl0ZW0tZG93blwiLFxuICAgICAgaWNvbjogXCJhcnJvdy1kb3duXCIsXG4gICAgICBuYW1lOiBcIk1vdmUgbGlzdCBhbmQgc3VibGlzdHMgZG93blwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IGNyZWF0ZUVkaXRvckNhbGxiYWNrKHRoaXMubW92ZUxpc3REb3duKSxcbiAgICAgIGhvdGtleXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vZGlmaWVyczogW1wiTW9kXCIsIFwiU2hpZnRcIl0sXG4gICAgICAgICAga2V5OiBcIkFycm93RG93blwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwiaW5kZW50LWxpc3RcIixcbiAgICAgIGljb246IFwiaW5kZW50XCIsXG4gICAgICBuYW1lOiBcIkluZGVudCB0aGUgbGlzdCBhbmQgc3VibGlzdHNcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiBjcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLmluZGVudExpc3QpLFxuICAgICAgaG90a2V5czogW10sXG4gICAgfSk7XG5cbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcIm91dGRlbnQtbGlzdFwiLFxuICAgICAgaWNvbjogXCJvdXRkZW50XCIsXG4gICAgICBuYW1lOiBcIk91dGRlbnQgdGhlIGxpc3QgYW5kIHN1Ymxpc3RzXCIsXG4gICAgICBlZGl0b3JDYWxsYmFjazogY3JlYXRlRWRpdG9yQ2FsbGJhY2sodGhpcy5vdXRkZW50TGlzdCksXG4gICAgICBob3RrZXlzOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBtb3ZlTGlzdERvd24gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIGNvbnN0IHsgc2hvdWxkU3RvcFByb3BhZ2F0aW9uIH0gPSB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlTGlzdERvd24ocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuXG4gICAgcmV0dXJuIHNob3VsZFN0b3BQcm9wYWdhdGlvbjtcbiAgfTtcblxuICBwcml2YXRlIG1vdmVMaXN0VXAgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIGNvbnN0IHsgc2hvdWxkU3RvcFByb3BhZ2F0aW9uIH0gPSB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlTGlzdFVwKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIHJldHVybiBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG5cbiAgcHJpdmF0ZSBpbmRlbnRMaXN0ID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBjb25zdCB7IHNob3VsZFN0b3BQcm9wYWdhdGlvbiB9ID0gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PlxuICAgICAgICBuZXcgSW5kZW50TGlzdChyb290LCB0aGlzLm9ic2lkaWFuU2V0dGluZ3MuZ2V0RGVmYXVsdEluZGVudENoYXJzKCkpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIHJldHVybiBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG5cbiAgcHJpdmF0ZSBvdXRkZW50TGlzdCA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgY29uc3QgeyBzaG91bGRTdG9wUHJvcGFnYXRpb24gfSA9IHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLnBlcmZvcm0oXG4gICAgICAocm9vdCkgPT4gbmV3IE91dGRlbnRMaXN0KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIHJldHVybiBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVUaWxsQ3VycmVudExpbmVDb250ZW50U3RhcnQgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzSW5mbygpO1xuICAgIGNvbnN0IGxpbmVObyA9IGxpbmVzLmZpbmRJbmRleCgobCkgPT4gbC5mcm9tLmxpbmUgPT09IGN1cnNvci5saW5lKTtcblxuICAgIGxpbmVzW2xpbmVOb10udGV4dCA9IGxpbmVzW2xpbmVOb10udGV4dC5zbGljZShcbiAgICAgIGN1cnNvci5jaCAtIGxpbmVzW2xpbmVOb10uZnJvbS5jaFxuICAgICk7XG5cbiAgICBsaXN0LnJlcGxhY2VMaW5lcyhsaW5lcy5tYXAoKGwpID0+IGwudGV4dCkpO1xuICAgIHJvb3QucmVwbGFjZUN1cnNvcihsaW5lc1tsaW5lTm9dLmZyb20pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IERlbGV0ZVRpbGxDdXJyZW50TGluZUNvbnRlbnRTdGFydCB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0RlbGV0ZVRpbGxDdXJyZW50TGluZUNvbnRlbnRTdGFydFwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgTWV0YUJhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIG1hYzogXCJtLUJhY2tzcGFjZVwiLFxuICAgICAgICAgIHJ1bjogY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ICE9PSBcIm5ldmVyXCIgJiZcbiAgICAgICF0aGlzLmltZURldGVjdG9yLmlzT3BlbmVkKClcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PiBuZXcgRGVsZXRlVGlsbEN1cnJlbnRMaW5lQ29udGVudFN0YXJ0KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IE1hcmtkb3duUmVuZGVyZXIsIE1vZGFsLCBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jbGFzcyBSZWxlYXNlTm90ZXNNb2RhbCBleHRlbmRzIE1vZGFsIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgdGl0bGU6IHN0cmluZyxcbiAgICBwcml2YXRlIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBwcml2YXRlIGNiOiAoKSA9PiB2b2lkXG4gICkge1xuICAgIHN1cGVyKHBsdWdpbi5hcHApO1xuICB9XG5cbiAgYXN5bmMgb25PcGVuKCkge1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KHRoaXMudGl0bGUpO1xuXG4gICAgTWFya2Rvd25SZW5kZXJlci5yZW5kZXJNYXJrZG93bihcbiAgICAgIHRoaXMuY29udGVudCxcbiAgICAgIHRoaXMuY29udGVudEVsLFxuICAgICAgXCJcIixcbiAgICAgIHRoaXMucGx1Z2luXG4gICAgKTtcbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgdGhpcy5jYigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVSZWxlYXNlcyhhOiBzdHJpbmcsIGI6IHN0cmluZykge1xuICBjb25zdCBbYU1ham9yLCBhTWlub3IsIGFQYXRjaF0gPSBhLnNwbGl0KFwiLlwiLCAzKS5tYXAoTnVtYmVyKTtcbiAgY29uc3QgW2JNYWpvciwgYk1pbm9yLCBiUGF0Y2hdID0gYi5zcGxpdChcIi5cIiwgMykubWFwKE51bWJlcik7XG5cbiAgaWYgKGFNYWpvciA9PT0gYk1ham9yKSB7XG4gICAgaWYgKGFNaW5vciA9PT0gYk1pbm9yKSB7XG4gICAgICByZXR1cm4gYVBhdGNoIC0gYlBhdGNoO1xuICAgIH1cblxuICAgIHJldHVybiBhTWlub3IgLSBiTWlub3I7XG4gIH1cblxuICByZXR1cm4gYU1ham9yIC0gYk1ham9yO1xufVxuXG5mdW5jdGlvbiBwYXJzZUNoYW5nZWxvZygpIHtcbiAgY29uc3QgbWFya2Rvd24gPSBDSEFOR0VMT0dfTUQ7XG4gIGNvbnN0IHJlbGVhc2VOb3RlczogW3N0cmluZywgc3RyaW5nXVtdID0gW107XG4gIGxldCB2ZXJzaW9uO1xuICBsZXQgY29udGVudCA9IFwiXCI7XG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIG1hcmtkb3duLnNwbGl0KFwiXFxuXCIpKSB7XG4gICAgY29uc3QgdmVyc2lvbkhlYWRlck1hdGNoZXMgPSAvXiMrXFxzKyhcXGQrXFwuXFxkK1xcLlxcZCspJC8uZXhlYyhsaW5lKTtcbiAgICBpZiAodmVyc2lvbkhlYWRlck1hdGNoZXMpIHtcbiAgICAgIGlmICh2ZXJzaW9uICYmIGNvbnRlbnQudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVsZWFzZU5vdGVzLnB1c2goW3ZlcnNpb24sIGNvbnRlbnRdKTtcbiAgICAgIH1cbiAgICAgIHZlcnNpb24gPSB2ZXJzaW9uSGVhZGVyTWF0Y2hlc1sxXTtcbiAgICAgIGNvbnRlbnQgPSBsaW5lO1xuICAgICAgY29udGVudCArPSBcIlxcblwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZW50ICs9IGxpbmU7XG4gICAgICBjb250ZW50ICs9IFwiXFxuXCI7XG4gICAgfVxuICB9XG5cbiAgaWYgKHZlcnNpb24gJiYgY29udGVudC50cmltKCkubGVuZ3RoID4gMCkge1xuICAgIHJlbGVhc2VOb3Rlcy5wdXNoKFt2ZXJzaW9uLCBjb250ZW50XSk7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZU5vdGVzO1xufVxuXG5leHBvcnQgY2xhc3MgUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50IGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIHByaXZhdGUgbW9kYWw6IFJlbGVhc2VOb3Rlc01vZGFsIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLCBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncykge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwic2hvdy1yZWxlYXNlLW5vdGVzXCIsXG4gICAgICBuYW1lOiBcIlNob3cgUmVsZWFzZSBOb3Rlc1wiLFxuICAgICAgY2FsbGJhY2s6IHRoaXMuc2hvd01vZGFsLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zaG93TW9kYWwodGhpcy5zZXR0aW5ncy5wcmV2aW91c1JlbGVhc2UpO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge1xuICAgIGlmICghdGhpcy5tb2RhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5tb2RhbDtcbiAgICB0aGlzLm1vZGFsID0gbnVsbDtcbiAgICBtb2RhbC5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93TW9kYWwgPSAocHJldmlvdXNSZWxlYXNlOiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuICAgIGxldCByZWxlYXNlTm90ZXMgPSBcIlwiO1xuICAgIGZvciAoY29uc3QgW3ZlcnNpb24sIGNvbnRlbnRdIG9mIHBhcnNlQ2hhbmdlbG9nKCkpIHtcbiAgICAgIGlmIChjb21wYXJlUmVsZWFzZXModmVyc2lvbiwgcHJldmlvdXNSZWxlYXNlIHx8IFwiMC4wLjBcIikgPiAwKSB7XG4gICAgICAgIHJlbGVhc2VOb3RlcyArPSBjb250ZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZWxlYXNlTm90ZXMudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGFsVGl0bGUgPSBgV2VsY29tZSB0byBPYnNpZGlhbiBPdXRsaW5lciAke1BMVUdJTl9WRVJTSU9OfWA7XG5cbiAgICB0aGlzLm1vZGFsID0gbmV3IFJlbGVhc2VOb3Rlc01vZGFsKFxuICAgICAgdGhpcy5wbHVnaW4sXG4gICAgICBtb2RhbFRpdGxlLFxuICAgICAgcmVsZWFzZU5vdGVzLFxuICAgICAgdGhpcy5oYW5kbGVDbG9zZVxuICAgICk7XG4gICAgdGhpcy5tb2RhbC5vcGVuKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbG9zZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIXRoaXMubW9kYWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHRpbmdzLnByZXZpb3VzUmVsZWFzZSA9IFBMVUdJTl9WRVJTSU9OO1xuICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgQXBwLCBQbHVnaW5TZXR0aW5nVGFiLCBQbHVnaW5fMiwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQge1xuICBLZWVwQ3Vyc29yV2l0aGluQ29udGVudCxcbiAgU2V0dGluZ3MsXG4gIFZlcnRpY2FsTGluZXNBY3Rpb24sXG59IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jbGFzcyBPYnNpZGlhbk91dGxpbmVyUGx1Z2luU2V0dGluZ1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBQbHVnaW5fMiwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHtcbiAgICBzdXBlcihhcHAsIHBsdWdpbik7XG4gIH1cblxuICBkaXNwbGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGFpbmVyRWwgfSA9IHRoaXM7XG5cbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIlN0aWNrIHRoZSBjdXJzb3IgdG8gdGhlIGNvbnRlbnRcIilcbiAgICAgIC5zZXREZXNjKFwiRG9uJ3QgbGV0IHRoZSBjdXJzb3IgbW92ZSB0byB0aGUgYnVsbGV0IHBvc2l0aW9uLlwiKVxuICAgICAgLmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuICAgICAgICBkcm9wZG93blxuICAgICAgICAgIC5hZGRPcHRpb25zKHtcbiAgICAgICAgICAgIG5ldmVyOiBcIk5ldmVyXCIsXG4gICAgICAgICAgICBcImJ1bGxldC1vbmx5XCI6IFwiU3RpY2sgY3Vyc29yIG91dCBvZiBidWxsZXRzXCIsXG4gICAgICAgICAgICBcImJ1bGxldC1hbmQtY2hlY2tib3hcIjogXCJTdGljayBjdXJzb3Igb3V0IG9mIGJ1bGxldHMgYW5kIGNoZWNrYm94ZXNcIixcbiAgICAgICAgICB9IGFzIHsgW2tleSBpbiBLZWVwQ3Vyc29yV2l0aGluQ29udGVudF06IHN0cmluZyB9KVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50KVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWU6IEtlZXBDdXJzb3JXaXRoaW5Db250ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkVuaGFuY2UgdGhlIFRhYiBrZXlcIilcbiAgICAgIC5zZXREZXNjKFwiTWFrZSBUYWIgYW5kIFNoaWZ0LVRhYiBiZWhhdmUgdGhlIHNhbWUgYXMgb3RoZXIgb3V0bGluZXJzLlwiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLm92ZXJyaWRlVGFiQmVoYXZpb3VyKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVUYWJCZWhhdmlvdXIgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiRW5oYW5jZSB0aGUgRW50ZXIga2V5XCIpXG4gICAgICAuc2V0RGVzYyhcIk1ha2UgdGhlIEVudGVyIGtleSBiZWhhdmUgdGhlIHNhbWUgYXMgb3RoZXIgb3V0bGluZXJzLlwiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLm92ZXJyaWRlRW50ZXJCZWhhdmlvdXIpXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5vdmVycmlkZUVudGVyQmVoYXZpb3VyID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkVuaGFuY2UgdGhlIEN0cmwrQSBvciBDbWQrQSBiZWhhdmlvclwiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiUHJlc3MgdGhlIGhvdGtleSBvbmNlIHRvIHNlbGVjdCB0aGUgY3VycmVudCBsaXN0IGl0ZW0uIFByZXNzIHRoZSBob3RrZXkgdHdpY2UgdG8gc2VsZWN0IHRoZSBlbnRpcmUgbGlzdC5cIlxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLm92ZXJyaWRlU2VsZWN0QWxsQmVoYXZpb3VyKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXIgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiSW1wcm92ZSB0aGUgc3R5bGUgb2YgeW91ciBsaXN0c1wiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiU3R5bGVzIGFyZSBvbmx5IGNvbXBhdGlibGUgd2l0aCBidWlsdC1pbiBPYnNpZGlhbiB0aGVtZXMgYW5kIG1heSBub3QgYmUgY29tcGF0aWJsZSB3aXRoIG90aGVyIHRoZW1lcy5cIlxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmJldHRlckxpc3RzU3R5bGVzKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuYmV0dGVyTGlzdHNTdHlsZXMgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiRHJhdyB2ZXJ0aWNhbCBpbmRlbnRhdGlvbiBsaW5lc1wiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXMpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MudmVydGljYWxMaW5lcyA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIlZlcnRpY2FsIGluZGVudGF0aW9uIGxpbmUgY2xpY2sgYWN0aW9uXCIpXG4gICAgICAuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG4gICAgICAgIGRyb3Bkb3duXG4gICAgICAgICAgLmFkZE9wdGlvbnMoe1xuICAgICAgICAgICAgbm9uZTogXCJOb25lXCIsXG4gICAgICAgICAgICBcInpvb20taW5cIjogXCJab29tIEluXCIsXG4gICAgICAgICAgICBcInRvZ2dsZS1mb2xkaW5nXCI6IFwiVG9nZ2xlIEZvbGRpbmdcIixcbiAgICAgICAgICB9IGFzIHsgW2tleSBpbiBWZXJ0aWNhbExpbmVzQWN0aW9uXTogc3RyaW5nIH0pXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MudmVydGljYWxMaW5lc0FjdGlvbilcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlOiBWZXJ0aWNhbExpbmVzQWN0aW9uKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXNBY3Rpb24gPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbCkuc2V0TmFtZShcIkRyYWctYW5kLURyb3BcIikuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmRyYWdBbmREcm9wKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kcmFnQW5kRHJvcCA9IHZhbHVlO1xuICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkRlYnVnIG1vZGVcIilcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICBcIk9wZW4gRGV2VG9vbHMgKENvbW1hbmQrT3B0aW9uK0kgb3IgQ29udHJvbCtTaGlmdCtJKSB0byBjb3B5IHRoZSBkZWJ1ZyBsb2dzLlwiXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZGVidWcpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZGVidWcgPSB2YWx1ZTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NUYWIgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLCBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncykge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZFNldHRpbmdUYWIoXG4gICAgICBuZXcgT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdUYWIoXG4gICAgICAgIHRoaXMucGx1Z2luLmFwcCxcbiAgICAgICAgdGhpcy5wbHVnaW4sXG4gICAgICAgIHRoaXMuc2V0dGluZ3NcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IFByZWMgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgT3V0ZGVudExpc3QgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9PdXRkZW50TGlzdFwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgU2hpZnRUYWJCZWhhdmlvdXJPdmVycmlkZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBpbWVEZXRlY3RvcjogSU1FRGV0ZWN0b3IsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIFByZWMuaGlnaGVzdChcbiAgICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwicy1UYWJcIixcbiAgICAgICAgICAgIHJ1bjogY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBjaGVjayA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5vdmVycmlkZVRhYkJlaGF2aW91ciAmJiAhdGhpcy5pbWVEZXRlY3Rvci5pc09wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PiBuZXcgT3V0ZGVudExpc3Qocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgQXBwLCBNb2RhbCwgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NcIjtcblxuaW50ZXJmYWNlIEFwcEhpZGRlblByb3BzIHtcbiAgaW50ZXJuYWxQbHVnaW5zOiB7XG4gICAgY29uZmlnOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbiAgfTtcbiAgaXNNb2JpbGU6IGJvb2xlYW47XG4gIHBsdWdpbnM6IHtcbiAgICBlbmFibGVkUGx1Z2luczogU2V0PHN0cmluZz47XG4gICAgbWFuaWZlc3RzOiB7IFtrZXk6IHN0cmluZ106IHsgdmVyc2lvbjogc3RyaW5nIH0gfTtcbiAgfTtcbiAgdmF1bHQ6IHtcbiAgICBjb25maWc6IG9iamVjdDtcbiAgfTtcbn1cblxuY2xhc3MgU3lzdGVtSW5mb01vZGFsIGV4dGVuZHMgTW9kYWwge1xuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHtcbiAgICBzdXBlcihhcHApO1xuICB9XG5cbiAgYXN5bmMgb25PcGVuKCkge1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KFwiU3lzdGVtIEluZm9ybWF0aW9uXCIpO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBhcHAgPSB0aGlzLmFwcCBhcyBhbnkgYXMgQXBwSGlkZGVuUHJvcHM7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgcHJvY2Vzczoge1xuICAgICAgICBhcmNoOiBwcm9jZXNzLmFyY2gsXG4gICAgICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgfSxcbiAgICAgIGFwcDoge1xuICAgICAgICBpbnRlcm5hbFBsdWdpbnM6IHtcbiAgICAgICAgICBjb25maWc6IGFwcC5pbnRlcm5hbFBsdWdpbnMuY29uZmlnLFxuICAgICAgICB9LFxuICAgICAgICBpc01vYmlsZTogYXBwLmlzTW9iaWxlLFxuICAgICAgICBwbHVnaW5zOiB7XG4gICAgICAgICAgZW5hYmxlZFBsdWdpbnM6IEFycmF5LmZyb20oYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMpLFxuICAgICAgICAgIG1hbmlmZXN0czogT2JqZWN0LmtleXMoYXBwLnBsdWdpbnMubWFuaWZlc3RzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IHtcbiAgICAgICAgICAgICAgdmVyc2lvbjogYXBwLnBsdWdpbnMubWFuaWZlc3RzW2tleV0udmVyc2lvbixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIHt9IGFzIHsgW2tleTogc3RyaW5nXTogeyB2ZXJzaW9uOiBzdHJpbmcgfSB9KSxcbiAgICAgICAgfSxcbiAgICAgICAgdmF1bHQ6IHtcbiAgICAgICAgICBjb25maWc6IGFwcC52YXVsdC5jb25maWcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcGx1Z2luOiB7XG4gICAgICAgIHNldHRpbmdzOiB7IHZhbHVlczogdGhpcy5zZXR0aW5ncy5nZXRWYWx1ZXMoKSB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgdGV4dCA9IEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpO1xuXG4gICAgY29uc3QgcHJlID0gdGhpcy5jb250ZW50RWwuY3JlYXRlRWwoXCJwcmVcIik7XG4gICAgcHJlLnNldFRleHQodGV4dCk7XG4gICAgcHJlLnNldENzc1N0eWxlcyh7XG4gICAgICBvdmVyZmxvdzogXCJzY3JvbGxcIixcbiAgICAgIG1heEhlaWdodDogXCIzMDBweFwiLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYnV0dG9uID0gdGhpcy5jb250ZW50RWwuY3JlYXRlRWwoXCJidXR0b25cIik7XG4gICAgYnV0dG9uLnNldFRleHQoXCJDb3B5IGFuZCBDbG9zZVwiKTtcbiAgICBidXR0b24ub25DbGlja0V2ZW50KCgpID0+IHtcbiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KFwiYGBganNvblxcblwiICsgdGV4dCArIFwiXFxuYGBgXCIpO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTeXN0ZW1JbmZvIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMiwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcInN5c3RlbS1pbmZvXCIsXG4gICAgICBuYW1lOiBcIlNob3cgU3lzdGVtIEluZm9cIixcbiAgICAgIGNhbGxiYWNrOiB0aGlzLmNhbGxiYWNrLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIiwgXCJTaGlmdFwiLCBcIkFsdFwiXSxcbiAgICAgICAgICBrZXk6IFwiSVwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBjYWxsYmFjayA9ICgpID0+IHtcbiAgICBjb25zdCBtb2RhbCA9IG5ldyBTeXN0ZW1JbmZvTW9kYWwodGhpcy5wbHVnaW4uYXBwLCB0aGlzLnNldHRpbmdzKTtcbiAgICBtb2RhbC5vcGVuKCk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBQcmVjIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IEluZGVudExpc3QgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9JbmRlbnRMaXN0XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2sgfSBmcm9tIFwiLi4vdXRpbHMvY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2tcIjtcblxuZXhwb3J0IGNsYXNzIFRhYkJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIFByZWMuaGlnaGVzdChcbiAgICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwiVGFiXCIsXG4gICAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVUYWJCZWhhdmlvdXIgJiYgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKTtcbiAgfTtcblxuICBwcml2YXRlIHJ1biA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLnBlcmZvcm0oXG4gICAgICAocm9vdCkgPT5cbiAgICAgICAgbmV3IEluZGVudExpc3Qocm9vdCwgdGhpcy5vYnNpZGlhblNldHRpbmdzLmdldERlZmF1bHRJbmRlbnRDaGFycygpKSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQge1xuICBFZGl0b3JWaWV3LFxuICBQbHVnaW5WYWx1ZSxcbiAgVmlld1BsdWdpbixcbiAgVmlld1VwZGF0ZSxcbn0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IsIGdldEVkaXRvckZyb21TdGF0ZSB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IExpc3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvUGFyc2VyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jb25zdCBWRVJUSUNBTF9MSU5FU19CT0RZX0NMQVNTID0gXCJvdXRsaW5lci1wbHVnaW4tdmVydGljYWwtbGluZXNcIjtcblxuaW50ZXJmYWNlIExpbmVEYXRhIHtcbiAgdG9wOiBudW1iZXI7XG4gIGxlZnQ6IG51bWJlcjtcbiAgaGVpZ2h0OiBzdHJpbmc7XG4gIGxpc3Q6IExpc3Q7XG59XG5cbmNsYXNzIFZlcnRpY2FsTGluZXNQbHVnaW5WYWx1ZSBpbXBsZW1lbnRzIFBsdWdpblZhbHVlIHtcbiAgcHJpdmF0ZSBzY2hlZHVsZWQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICBwcml2YXRlIHNjcm9sbGVyOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBjb250ZW50Q29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBlZGl0b3I6IE15RWRpdG9yO1xuICBwcml2YXRlIGxhc3RMaW5lOiBudW1iZXI7XG4gIHByaXZhdGUgbGluZXM6IExpbmVEYXRhW107XG4gIHByaXZhdGUgbGluZUVsZW1lbnRzOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvYnNpZGlhblNldHRpbmdzOiBPYnNpZGlhblNldHRpbmdzLFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSB2aWV3OiBFZGl0b3JWaWV3XG4gICkge1xuICAgIHRoaXMudmlldy5zY3JvbGxET00uYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICB0aGlzLnNldHRpbmdzLm9uQ2hhbmdlKHRoaXMuc2NoZWR1bGVSZWNhbGN1bGF0ZSk7XG5cbiAgICB0aGlzLnByZXBhcmVEb20oKTtcbiAgICB0aGlzLndhaXRGb3JFZGl0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgd2FpdEZvckVkaXRvciA9ICgpID0+IHtcbiAgICBjb25zdCBlZGl0b3IgPSBnZXRFZGl0b3JGcm9tU3RhdGUodGhpcy52aWV3LnN0YXRlKTtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgc2V0VGltZW91dCh0aGlzLndhaXRGb3JFZGl0b3IsIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICB0aGlzLnNjaGVkdWxlUmVjYWxjdWxhdGUoKTtcbiAgfTtcblxuICBwcml2YXRlIHByZXBhcmVEb20oKSB7XG4gICAgdGhpcy5jb250ZW50Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIuY2xhc3NMaXN0LmFkZChcbiAgICAgIFwib3V0bGluZXItcGx1Z2luLWxpc3QtbGluZXMtY29udGVudC1jb250YWluZXJcIlxuICAgICk7XG5cbiAgICB0aGlzLnNjcm9sbGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLnNjcm9sbGVyLmNsYXNzTGlzdC5hZGQoXCJvdXRsaW5lci1wbHVnaW4tbGlzdC1saW5lcy1zY3JvbGxlclwiKTtcblxuICAgIHRoaXMuc2Nyb2xsZXIuYXBwZW5kQ2hpbGQodGhpcy5jb250ZW50Q29udGFpbmVyKTtcbiAgICB0aGlzLnZpZXcuZG9tLmFwcGVuZENoaWxkKHRoaXMuc2Nyb2xsZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNjcm9sbCA9IChlOiBFdmVudCkgPT4ge1xuICAgIGNvbnN0IHsgc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wIH0gPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLnNjcm9sbGVyLnNjcm9sbFRvKHNjcm9sbExlZnQsIHNjcm9sbFRvcCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZVJlY2FsY3VsYXRlID0gKCkgPT4ge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnNjaGVkdWxlZCk7XG4gICAgdGhpcy5zY2hlZHVsZWQgPSBzZXRUaW1lb3V0KHRoaXMuY2FsY3VsYXRlLCAwKTtcbiAgfTtcblxuICB1cGRhdGUodXBkYXRlOiBWaWV3VXBkYXRlKSB7XG4gICAgaWYgKFxuICAgICAgdXBkYXRlLmRvY0NoYW5nZWQgfHxcbiAgICAgIHVwZGF0ZS52aWV3cG9ydENoYW5nZWQgfHxcbiAgICAgIHVwZGF0ZS5nZW9tZXRyeUNoYW5nZWQgfHxcbiAgICAgIHVwZGF0ZS50cmFuc2FjdGlvbnMuc29tZSgodHIpID0+IHRyLnJlY29uZmlndXJlZClcbiAgICApIHtcbiAgICAgIHRoaXMuc2NoZWR1bGVSZWNhbGN1bGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlID0gKCkgPT4ge1xuICAgIHRoaXMubGluZXMgPSBbXTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMuc2V0dGluZ3MudmVydGljYWxMaW5lcyAmJlxuICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLmlzRGVmYXVsdFRoZW1lRW5hYmxlZCgpICYmXG4gICAgICB0aGlzLnZpZXcudmlld3BvcnRMaW5lQmxvY2tzLmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMudmlldy52aXNpYmxlUmFuZ2VzLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGNvbnN0IGZyb21MaW5lID0gdGhpcy5lZGl0b3Iub2Zmc2V0VG9Qb3ModGhpcy52aWV3LnZpZXdwb3J0LmZyb20pLmxpbmU7XG4gICAgICBjb25zdCB0b0xpbmUgPSB0aGlzLmVkaXRvci5vZmZzZXRUb1Bvcyh0aGlzLnZpZXcudmlld3BvcnQudG8pLmxpbmU7XG4gICAgICBjb25zdCBsaXN0cyA9IHRoaXMucGFyc2VyLnBhcnNlUmFuZ2UodGhpcy5lZGl0b3IsIGZyb21MaW5lLCB0b0xpbmUpO1xuXG4gICAgICBmb3IgKGNvbnN0IGxpc3Qgb2YgbGlzdHMpIHtcbiAgICAgICAgdGhpcy5sYXN0TGluZSA9IGxpc3QuZ2V0Q29udGVudEVuZCgpLmxpbmU7XG5cbiAgICAgICAgZm9yIChjb25zdCBjIG9mIGxpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgIHRoaXMucmVjdXJzaXZlKGMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGluZXMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgYS50b3AgPT09IGIudG9wID8gYS5sZWZ0IC0gYi5sZWZ0IDogYS50b3AgLSBiLnRvcFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZURvbSgpO1xuICB9O1xuXG4gIHByaXZhdGUgZ2V0TmV4dFNpYmxpbmcobGlzdDogTGlzdCk6IExpc3QgfCBudWxsIHtcbiAgICBsZXQgbGlzdFRtcCA9IGxpc3Q7XG4gICAgbGV0IHAgPSBsaXN0VG1wLmdldFBhcmVudCgpO1xuICAgIHdoaWxlIChwKSB7XG4gICAgICBjb25zdCBuZXh0U2libGluZyA9IHAuZ2V0TmV4dFNpYmxpbmdPZihsaXN0VG1wKTtcbiAgICAgIGlmIChuZXh0U2libGluZykge1xuICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmc7XG4gICAgICB9XG4gICAgICBsaXN0VG1wID0gcDtcbiAgICAgIHAgPSBsaXN0VG1wLmdldFBhcmVudCgpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVjdXJzaXZlKGxpc3Q6IExpc3QsIHBhcmVudEN0eDogeyByb290TGVmdD86IG51bWJlciB9ID0ge30pIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IGxpc3QuZ2V0Q2hpbGRyZW4oKTtcblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmcm9tT2Zmc2V0ID0gdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgbGluZTogbGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lLFxuICAgICAgY2g6IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoLFxuICAgIH0pO1xuICAgIGNvbnN0IG5leHRTaWJsaW5nID0gdGhpcy5nZXROZXh0U2libGluZyhsaXN0KTtcbiAgICBjb25zdCB0aWxsT2Zmc2V0ID0gdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgbGluZTogbmV4dFNpYmxpbmdcbiAgICAgICAgPyBuZXh0U2libGluZy5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lIC0gMVxuICAgICAgICA6IHRoaXMubGFzdExpbmUsXG4gICAgICBjaDogMCxcbiAgICB9KTtcblxuICAgIGxldCB2aXNpYmxlRnJvbSA9IHRoaXMudmlldy52aXNpYmxlUmFuZ2VzWzBdLmZyb207XG4gICAgbGV0IHZpc2libGVUbyA9XG4gICAgICB0aGlzLnZpZXcudmlzaWJsZVJhbmdlc1t0aGlzLnZpZXcudmlzaWJsZVJhbmdlcy5sZW5ndGggLSAxXS50bztcbiAgICBjb25zdCB6b29tUmFuZ2UgPSB0aGlzLmVkaXRvci5nZXRab29tUmFuZ2UoKTtcbiAgICBpZiAoem9vbVJhbmdlKSB7XG4gICAgICB2aXNpYmxlRnJvbSA9IE1hdGgubWF4KFxuICAgICAgICB2aXNpYmxlRnJvbSxcbiAgICAgICAgdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQoem9vbVJhbmdlLmZyb20pXG4gICAgICApO1xuICAgICAgdmlzaWJsZVRvID0gTWF0aC5taW4odmlzaWJsZVRvLCB0aGlzLmVkaXRvci5wb3NUb09mZnNldCh6b29tUmFuZ2UudG8pKTtcbiAgICB9XG5cbiAgICBpZiAoZnJvbU9mZnNldCA+IHZpc2libGVUbyB8fCB0aWxsT2Zmc2V0IDwgdmlzaWJsZUZyb20pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb29yZHMgPSB0aGlzLnZpZXcuY29vcmRzQXRQb3MoZnJvbU9mZnNldCwgMSk7XG4gICAgaWYgKHBhcmVudEN0eC5yb290TGVmdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJlbnRDdHgucm9vdExlZnQgPSBjb29yZHMubGVmdDtcbiAgICB9XG4gICAgY29uc3QgbGVmdCA9IE1hdGguZmxvb3IoY29vcmRzLnJpZ2h0IC0gcGFyZW50Q3R4LnJvb3RMZWZ0KTtcblxuICAgIGNvbnN0IHRvcCA9XG4gICAgICB2aXNpYmxlRnJvbSA+IDAgJiYgZnJvbU9mZnNldCA8IHZpc2libGVGcm9tXG4gICAgICAgID8gLTIwXG4gICAgICAgIDogdGhpcy52aWV3LmxpbmVCbG9ja0F0KGZyb21PZmZzZXQpLnRvcDtcbiAgICBjb25zdCBib3R0b20gPVxuICAgICAgdGlsbE9mZnNldCA+IHZpc2libGVUb1xuICAgICAgICA/IHRoaXMudmlldy5saW5lQmxvY2tBdCh2aXNpYmxlVG8gLSAxKS5ib3R0b21cbiAgICAgICAgOiB0aGlzLnZpZXcubGluZUJsb2NrQXQodGlsbE9mZnNldCkuYm90dG9tO1xuICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcblxuICAgIGlmIChoZWlnaHQgPiAwICYmICFsaXN0LmlzRm9sZGVkKCkpIHtcbiAgICAgIGNvbnN0IG5leHRTaWJsaW5nID0gbGlzdC5nZXRQYXJlbnQoKS5nZXROZXh0U2libGluZ09mKGxpc3QpO1xuICAgICAgY29uc3QgaGFzTmV4dFNpYmxpbmcgPVxuICAgICAgICAhIW5leHRTaWJsaW5nICYmXG4gICAgICAgIHRoaXMuZWRpdG9yLnBvc1RvT2Zmc2V0KG5leHRTaWJsaW5nLmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpKSA8PVxuICAgICAgICAgIHZpc2libGVUbztcblxuICAgICAgdGhpcy5saW5lcy5wdXNoKHtcbiAgICAgICAgdG9wLFxuICAgICAgICBsZWZ0LFxuICAgICAgICBoZWlnaHQ6IGBjYWxjKCR7aGVpZ2h0fXB4ICR7aGFzTmV4dFNpYmxpbmcgPyBcIi0gMS41ZW1cIiA6IFwiLSAyZW1cIn0pYCxcbiAgICAgICAgbGlzdCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGlmICghY2hpbGQuaXNFbXB0eSgpKSB7XG4gICAgICAgIHRoaXMucmVjdXJzaXZlKGNoaWxkLCBwYXJlbnRDdHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25DbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY29uc3QgbGluZSA9IHRoaXMubGluZXNbTnVtYmVyKChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZGF0YXNldC5pbmRleCldO1xuXG4gICAgc3dpdGNoICh0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXNBY3Rpb24pIHtcbiAgICAgIGNhc2UgXCJ6b29tLWluXCI6XG4gICAgICAgIHRoaXMuem9vbUluKGxpbmUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcInRvZ2dsZS1mb2xkaW5nXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlRm9sZGluZyhsaW5lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgem9vbUluKGxpbmU6IExpbmVEYXRhKSB7XG4gICAgY29uc3QgZWRpdG9yID0gZ2V0RWRpdG9yRnJvbVN0YXRlKHRoaXMudmlldy5zdGF0ZSk7XG5cbiAgICBlZGl0b3Iuem9vbUluKGxpbmUubGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlRm9sZGluZyhsaW5lOiBMaW5lRGF0YSkge1xuICAgIGNvbnN0IHsgbGlzdCB9ID0gbGluZTtcblxuICAgIGlmIChsaXN0LmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBuZWVkVG9VbmZvbGQgPSB0cnVlO1xuICAgIGNvbnN0IGxpbmVzVG9Ub2dnbGU6IG51bWJlcltdID0gW107XG4gICAgZm9yIChjb25zdCBjIG9mIGxpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgaWYgKGMuaXNFbXB0eSgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFjLmlzRm9sZGVkKCkpIHtcbiAgICAgICAgbmVlZFRvVW5mb2xkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBsaW5lc1RvVG9nZ2xlLnB1c2goYy5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lKTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0b3IgPSBnZXRFZGl0b3JGcm9tU3RhdGUodGhpcy52aWV3LnN0YXRlKTtcblxuICAgIGZvciAoY29uc3QgbCBvZiBsaW5lc1RvVG9nZ2xlKSB7XG4gICAgICBpZiAobmVlZFRvVW5mb2xkKSB7XG4gICAgICAgIGVkaXRvci51bmZvbGQobCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGl0b3IuZm9sZChsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURvbSgpIHtcbiAgICBjb25zdCBjbVNjcm9sbCA9IHRoaXMudmlldy5zY3JvbGxET007XG4gICAgY29uc3QgY21Db250ZW50ID0gdGhpcy52aWV3LmNvbnRlbnRET007XG4gICAgY29uc3QgY21Db250ZW50Q29udGFpbmVyID0gY21Db250ZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgY29uc3QgY21TaXplciA9IGNtQ29udGVudENvbnRhaW5lci5wYXJlbnRFbGVtZW50O1xuXG4gICAgLyoqXG4gICAgICogT2JzaWRpYW4gY2FuIGFkZCBhZGRpdGlvbmFsIGVsZW1lbnRzIGludG8gQ29udGVudCBNYW5hZ2VyLlxuICAgICAqIFRoZSBtb3N0IG9idmlvdXMgY2FzZSBpcyB0aGUgJ2VtYmVkZGVkLWJhY2tsaW5rcycgY29yZSBwbHVnaW4gdGhhdCBhZGRzIGEgbWVudSBpbnNpZGUgYSBDb250ZW50IE1hbmFnZXIuXG4gICAgICogV2UgbXVzdCB0YWtlIGhlaWdodHMgb2YgYWxsIG9mIHRoZXNlIGVsZW1lbnRzIGludG8gYWNjb3VudFxuICAgICAqIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHNpemUgb2YgbGluZXMnIGNvbnRhaW5lci5cbiAgICAgKi9cbiAgICBsZXQgY21TaXplckNoaWxkcmVuU3VtSGVpZ2h0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNtU2l6ZXIuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNtU2l6ZXJDaGlsZHJlblN1bUhlaWdodCArPSBjbVNpemVyLmNoaWxkcmVuW2ldLmNsaWVudEhlaWdodDtcbiAgICB9XG5cbiAgICB0aGlzLnNjcm9sbGVyLnN0eWxlLnRvcCA9IGNtU2Nyb2xsLm9mZnNldFRvcCArIFwicHhcIjtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gY21TaXplckNoaWxkcmVuU3VtSGVpZ2h0ICsgXCJweFwiO1xuICAgIHRoaXMuY29udGVudENvbnRhaW5lci5zdHlsZS5tYXJnaW5MZWZ0ID1cbiAgICAgIGNtQ29udGVudENvbnRhaW5lci5vZmZzZXRMZWZ0ICsgXCJweFwiO1xuICAgIHRoaXMuY29udGVudENvbnRhaW5lci5zdHlsZS5tYXJnaW5Ub3AgPVxuICAgICAgKGNtQ29udGVudC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkub2Zmc2V0VG9wIC0gMjQgKyBcInB4XCI7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGggPT09IGkpIHtcbiAgICAgICAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIGUuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1saXN0LWxpbmVcIik7XG4gICAgICAgIGUuZGF0YXNldC5pbmRleCA9IFN0cmluZyhpKTtcbiAgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25DbGljayk7XG4gICAgICAgIHRoaXMuY29udGVudENvbnRhaW5lci5hcHBlbmRDaGlsZChlKTtcbiAgICAgICAgdGhpcy5saW5lRWxlbWVudHMucHVzaChlKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbCA9IHRoaXMubGluZXNbaV07XG4gICAgICBjb25zdCBlID0gdGhpcy5saW5lRWxlbWVudHNbaV07XG4gICAgICBlLnN0eWxlLnRvcCA9IGwudG9wICsgXCJweFwiO1xuICAgICAgZS5zdHlsZS5sZWZ0ID0gbC5sZWZ0ICsgXCJweFwiO1xuICAgICAgZS5zdHlsZS5oZWlnaHQgPSBsLmhlaWdodDtcbiAgICAgIGUuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gdGhpcy5saW5lcy5sZW5ndGg7IGkgPCB0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZSA9IHRoaXMubGluZUVsZW1lbnRzW2ldO1xuICAgICAgZS5zdHlsZS50b3AgPSBcIjBweFwiO1xuICAgICAgZS5zdHlsZS5sZWZ0ID0gXCIwcHhcIjtcbiAgICAgIGUuc3R5bGUuaGVpZ2h0ID0gXCIwcHhcIjtcbiAgICAgIGUuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZXR0aW5ncy5yZW1vdmVDYWxsYmFjayh0aGlzLnNjaGVkdWxlUmVjYWxjdWxhdGUpO1xuICAgIHRoaXMudmlldy5zY3JvbGxET00ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICB0aGlzLnZpZXcuZG9tLnJlbW92ZUNoaWxkKHRoaXMuc2Nyb2xsZXIpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnNjaGVkdWxlZCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZlcnRpY2FsTGluZXMgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgcHJpdmF0ZSB1cGRhdGVCb2R5Q2xhc3NJbnRlcnZhbDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBwYXJzZXI6IFBhcnNlclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnVwZGF0ZUJvZHlDbGFzcygpO1xuICAgIHRoaXMudXBkYXRlQm9keUNsYXNzSW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVCb2R5Q2xhc3MoKTtcbiAgICB9LCAxMDAwKTtcblxuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAgVmlld1BsdWdpbi5kZWZpbmUoXG4gICAgICAgICh2aWV3KSA9PlxuICAgICAgICAgIG5ldyBWZXJ0aWNhbExpbmVzUGx1Z2luVmFsdWUoXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLFxuICAgICAgICAgICAgdGhpcy5wYXJzZXIsXG4gICAgICAgICAgICB2aWV3XG4gICAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnVwZGF0ZUJvZHlDbGFzc0ludGVydmFsKTtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoVkVSVElDQUxfTElORVNfQk9EWV9DTEFTUyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUJvZHlDbGFzcyA9ICgpID0+IHtcbiAgICBjb25zdCBzaG91bGRFeGlzdHMgPVxuICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLmlzRGVmYXVsdFRoZW1lRW5hYmxlZCgpICYmXG4gICAgICB0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXM7XG4gICAgY29uc3QgZXhpc3RzID0gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoVkVSVElDQUxfTElORVNfQk9EWV9DTEFTUyk7XG5cbiAgICBpZiAoc2hvdWxkRXhpc3RzICYmICFleGlzdHMpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChWRVJUSUNBTF9MSU5FU19CT0RZX0NMQVNTKTtcbiAgICB9XG5cbiAgICBpZiAoIXNob3VsZEV4aXN0cyAmJiBleGlzdHMpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShWRVJUSUNBTF9MSU5FU19CT0RZX0NMQVNTKTtcbiAgICB9XG4gIH07XG59XG4iLCJpbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IExpc3QsIFBvc2l0aW9uLCBSb290LCBpc1Jhbmdlc0ludGVyc2VjdHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgQ2hhbmdlc0FwcGxpY2F0b3Ige1xuICBhcHBseShlZGl0b3I6IE15RWRpdG9yLCBwcmV2Um9vdDogUm9vdCwgbmV3Um9vdDogUm9vdCkge1xuICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLmNhbGN1bGF0ZUNoYW5nZXMoZWRpdG9yLCBwcmV2Um9vdCwgbmV3Um9vdCk7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIGNvbnN0IHsgcmVwbGFjZW1lbnQsIGNoYW5nZUZyb20sIGNoYW5nZVRvIH0gPSBjaGFuZ2VzO1xuXG4gICAgICBjb25zdCB7IHVuZm9sZCwgZm9sZCB9ID0gdGhpcy5jYWxjdWxhdGVGb2xkaW5nT3ByYXRpb25zKFxuICAgICAgICBwcmV2Um9vdCxcbiAgICAgICAgbmV3Um9vdCxcbiAgICAgICAgY2hhbmdlRnJvbSxcbiAgICAgICAgY2hhbmdlVG9cbiAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiB1bmZvbGQpIHtcbiAgICAgICAgZWRpdG9yLnVuZm9sZChsaW5lKTtcbiAgICAgIH1cblxuICAgICAgZWRpdG9yLnJlcGxhY2VSYW5nZShyZXBsYWNlbWVudCwgY2hhbmdlRnJvbSwgY2hhbmdlVG8pO1xuXG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgZm9sZCkge1xuICAgICAgICBlZGl0b3IuZm9sZChsaW5lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlZGl0b3Iuc2V0U2VsZWN0aW9ucyhuZXdSb290LmdldFNlbGVjdGlvbnMoKSk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUNoYW5nZXMoZWRpdG9yOiBNeUVkaXRvciwgcHJldlJvb3Q6IFJvb3QsIG5ld1Jvb3Q6IFJvb3QpIHtcbiAgICBjb25zdCByb290UmFuZ2UgPSBwcmV2Um9vdC5nZXRDb250ZW50UmFuZ2UoKTtcbiAgICBjb25zdCBvbGRTdHJpbmcgPSBlZGl0b3IuZ2V0UmFuZ2Uocm9vdFJhbmdlWzBdLCByb290UmFuZ2VbMV0pO1xuICAgIGNvbnN0IG5ld1N0cmluZyA9IG5ld1Jvb3QucHJpbnQoKTtcblxuICAgIGNvbnN0IGNoYW5nZUZyb20gPSB7IC4uLnJvb3RSYW5nZVswXSB9O1xuICAgIGNvbnN0IGNoYW5nZVRvID0geyAuLi5yb290UmFuZ2VbMV0gfTtcbiAgICBsZXQgb2xkVG1wID0gb2xkU3RyaW5nO1xuICAgIGxldCBuZXdUbXAgPSBuZXdTdHJpbmc7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgbmxJbmRleCA9IG9sZFRtcC5sYXN0SW5kZXhPZihcIlxcblwiKTtcblxuICAgICAgaWYgKG5sSW5kZXggPCAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvbGRMaW5lID0gb2xkVG1wLnNsaWNlKG5sSW5kZXgpO1xuICAgICAgY29uc3QgbmV3TGluZSA9IG5ld1RtcC5zbGljZSgtb2xkTGluZS5sZW5ndGgpO1xuXG4gICAgICBpZiAob2xkTGluZSAhPT0gbmV3TGluZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgb2xkVG1wID0gb2xkVG1wLnNsaWNlKDAsIC1vbGRMaW5lLmxlbmd0aCk7XG4gICAgICBuZXdUbXAgPSBuZXdUbXAuc2xpY2UoMCwgLW9sZExpbmUubGVuZ3RoKTtcbiAgICAgIGNvbnN0IG5sSW5kZXgyID0gb2xkVG1wLmxhc3RJbmRleE9mKFwiXFxuXCIpO1xuICAgICAgY2hhbmdlVG8uY2ggPVxuICAgICAgICBubEluZGV4MiA+PSAwID8gb2xkVG1wLmxlbmd0aCAtIG5sSW5kZXgyIC0gMSA6IG9sZFRtcC5sZW5ndGg7XG4gICAgICBjaGFuZ2VUby5saW5lLS07XG4gICAgfVxuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IG5sSW5kZXggPSBvbGRUbXAuaW5kZXhPZihcIlxcblwiKTtcblxuICAgICAgaWYgKG5sSW5kZXggPCAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvbGRMaW5lID0gb2xkVG1wLnNsaWNlKDAsIG5sSW5kZXggKyAxKTtcbiAgICAgIGNvbnN0IG5ld0xpbmUgPSBuZXdUbXAuc2xpY2UoMCwgb2xkTGluZS5sZW5ndGgpO1xuXG4gICAgICBpZiAob2xkTGluZSAhPT0gbmV3TGluZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2hhbmdlRnJvbS5saW5lKys7XG4gICAgICBvbGRUbXAgPSBvbGRUbXAuc2xpY2Uob2xkTGluZS5sZW5ndGgpO1xuICAgICAgbmV3VG1wID0gbmV3VG1wLnNsaWNlKG9sZExpbmUubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAob2xkVG1wID09PSBuZXdUbXApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZXBsYWNlbWVudDogbmV3VG1wLFxuICAgICAgY2hhbmdlRnJvbSxcbiAgICAgIGNoYW5nZVRvLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUZvbGRpbmdPcHJhdGlvbnMoXG4gICAgcHJldlJvb3Q6IFJvb3QsXG4gICAgbmV3Um9vdDogUm9vdCxcbiAgICBjaGFuZ2VGcm9tOiBQb3NpdGlvbixcbiAgICBjaGFuZ2VUbzogUG9zaXRpb25cbiAgKSB7XG4gICAgY29uc3QgY2hhbmdlZFJhbmdlOiBbUG9zaXRpb24sIFBvc2l0aW9uXSA9IFtjaGFuZ2VGcm9tLCBjaGFuZ2VUb107XG5cbiAgICBjb25zdCBwcmV2TGlzdHMgPSBnZXRBbGxDaGlsZHJlbihwcmV2Um9vdCk7XG4gICAgY29uc3QgbmV3TGlzdHMgPSBnZXRBbGxDaGlsZHJlbihuZXdSb290KTtcblxuICAgIGNvbnN0IHVuZm9sZDogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBmb2xkOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBwcmV2TGlzdCBvZiBwcmV2TGlzdHMudmFsdWVzKCkpIHtcbiAgICAgIGlmICghcHJldkxpc3QuaXNGb2xkUm9vdCgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdMaXN0ID0gbmV3TGlzdHMuZ2V0KHByZXZMaXN0LmdldElEKCkpO1xuXG4gICAgICBpZiAoIW5ld0xpc3QpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByZXZMaXN0UmFuZ2U6IFtQb3NpdGlvbiwgUG9zaXRpb25dID0gW1xuICAgICAgICBwcmV2TGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKSxcbiAgICAgICAgcHJldkxpc3QuZ2V0Q29udGVudEVuZEluY2x1ZGluZ0NoaWxkcmVuKCksXG4gICAgICBdO1xuXG4gICAgICBpZiAoaXNSYW5nZXNJbnRlcnNlY3RzKHByZXZMaXN0UmFuZ2UsIGNoYW5nZWRSYW5nZSkpIHtcbiAgICAgICAgdW5mb2xkLnB1c2gocHJldkxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZSk7XG4gICAgICAgIGZvbGQucHVzaChuZXdMaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHVuZm9sZC5zb3J0KChhLCBiKSA9PiBiIC0gYSk7XG4gICAgZm9sZC5zb3J0KChhLCBiKSA9PiBiIC0gYSk7XG5cbiAgICByZXR1cm4geyB1bmZvbGQsIGZvbGQgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBbGxDaGlsZHJlblJlZHVjZUZuKGFjYzogTWFwPG51bWJlciwgTGlzdD4sIGNoaWxkOiBMaXN0KSB7XG4gIGFjYy5zZXQoY2hpbGQuZ2V0SUQoKSwgY2hpbGQpO1xuICBjaGlsZC5nZXRDaGlsZHJlbigpLnJlZHVjZShnZXRBbGxDaGlsZHJlblJlZHVjZUZuLCBhY2MpO1xuXG4gIHJldHVybiBhY2M7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENoaWxkcmVuKHJvb3Q6IFJvb3QpOiBNYXA8bnVtYmVyLCBMaXN0PiB7XG4gIHJldHVybiByb290LmdldENoaWxkcmVuKCkucmVkdWNlKGdldEFsbENoaWxkcmVuUmVkdWNlRm4sIG5ldyBNYXAoKSk7XG59XG4iLCJpbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5leHBvcnQgY2xhc3MgSU1FRGV0ZWN0b3Ige1xuICBwcml2YXRlIGNvbXBvc2l0aW9uID0gZmFsc2U7XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY29tcG9zaXRpb25zdGFydFwiLCB0aGlzLm9uQ29tcG9zaXRpb25TdGFydCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uZW5kXCIsIHRoaXMub25Db21wb3NpdGlvbkVuZCk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uZW5kXCIsIHRoaXMub25Db21wb3NpdGlvbkVuZCk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uc3RhcnRcIiwgdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQpO1xuICB9XG5cbiAgaXNPcGVuZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9zaXRpb24gJiYgUGxhdGZvcm0uaXNEZXNrdG9wO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNvbXBvc2l0aW9uU3RhcnQgPSAoKSA9PiB7XG4gICAgdGhpcy5jb21wb3NpdGlvbiA9IHRydWU7XG4gIH07XG5cbiAgcHJpdmF0ZSBvbkNvbXBvc2l0aW9uRW5kID0gKCkgPT4ge1xuICAgIHRoaXMuY29tcG9zaXRpb24gPSBmYWxzZTtcbiAgfTtcbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4vU2V0dGluZ3NcIjtcblxuZXhwb3J0IGNsYXNzIExvZ2dlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzKSB7fVxuXG4gIGxvZyhtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MuZGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmluZm8obWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGJpbmQobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiB0aGlzLmxvZyhtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBBcHAgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhblRhYnNTZXR0aW5ncyB7XG4gIHVzZVRhYjogYm9vbGVhbjtcbiAgdGFiU2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuRm9sZFNldHRpbmdzIHtcbiAgZm9sZEluZGVudDogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gZ2V0SGlkZGVuT2JzaWRpYW5Db25maWcoYXBwOiBBcHApIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcmV0dXJuIChhcHAudmF1bHQgYXMgYW55KS5jb25maWc7XG59XG5cbmV4cG9ydCBjbGFzcyBPYnNpZGlhblNldHRpbmdzIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHA6IEFwcCkge31cblxuICBpc0xlZ2FjeUVkaXRvckVuYWJsZWQoKSB7XG4gICAgY29uc3QgY29uZmlnOiB7IGxlZ2FjeUVkaXRvcjogYm9vbGVhbiB9ID0ge1xuICAgICAgbGVnYWN5RWRpdG9yOiBmYWxzZSxcbiAgICAgIC4uLmdldEhpZGRlbk9ic2lkaWFuQ29uZmlnKHRoaXMuYXBwKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbmZpZy5sZWdhY3lFZGl0b3I7XG4gIH1cblxuICBpc0RlZmF1bHRUaGVtZUVuYWJsZWQoKSB7XG4gICAgY29uc3QgY29uZmlnOiB7IGNzc1RoZW1lOiBzdHJpbmcgfSA9IHtcbiAgICAgIGNzc1RoZW1lOiBcIlwiLFxuICAgICAgLi4uZ2V0SGlkZGVuT2JzaWRpYW5Db25maWcodGhpcy5hcHApLFxuICAgIH07XG5cbiAgICByZXR1cm4gY29uZmlnLmNzc1RoZW1lID09PSBcIlwiO1xuICB9XG5cbiAgZ2V0VGFic1NldHRpbmdzKCk6IE9ic2lkaWFuVGFic1NldHRpbmdzIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXNlVGFiOiB0cnVlLFxuICAgICAgdGFiU2l6ZTogNCxcbiAgICAgIC4uLmdldEhpZGRlbk9ic2lkaWFuQ29uZmlnKHRoaXMuYXBwKSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0Rm9sZFNldHRpbmdzKCk6IE9ic2lkaWFuRm9sZFNldHRpbmdzIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9sZEluZGVudDogdHJ1ZSxcbiAgICAgIC4uLmdldEhpZGRlbk9ic2lkaWFuQ29uZmlnKHRoaXMuYXBwKSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdEluZGVudENoYXJzKCkge1xuICAgIGNvbnN0IHsgdXNlVGFiLCB0YWJTaXplIH0gPSB0aGlzLmdldFRhYnNTZXR0aW5ncygpO1xuXG4gICAgcmV0dXJuIHVzZVRhYiA/IFwiXFx0XCIgOiBuZXcgQXJyYXkodGFiU2l6ZSkuZmlsbChcIiBcIikuam9pbihcIlwiKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQ2hhbmdlc0FwcGxpY2F0b3IgfSBmcm9tIFwiLi9DaGFuZ2VzQXBwbGljYXRvclwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4vUGFyc2VyXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvT3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIE9wZXJhdGlvblBlcmZvcm1lciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSBjaGFuZ2VzQXBwbGljYXRvcjogQ2hhbmdlc0FwcGxpY2F0b3JcbiAgKSB7fVxuXG4gIGV2YWwocm9vdDogUm9vdCwgb3A6IE9wZXJhdGlvbiwgZWRpdG9yOiBNeUVkaXRvcikge1xuICAgIGNvbnN0IHByZXZSb290ID0gcm9vdC5jbG9uZSgpO1xuXG4gICAgb3AucGVyZm9ybSgpO1xuXG4gICAgaWYgKG9wLnNob3VsZFVwZGF0ZSgpKSB7XG4gICAgICB0aGlzLmNoYW5nZXNBcHBsaWNhdG9yLmFwcGx5KGVkaXRvciwgcHJldlJvb3QsIHJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzaG91bGRVcGRhdGU6IG9wLnNob3VsZFVwZGF0ZSgpLFxuICAgICAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uOiBvcC5zaG91bGRTdG9wUHJvcGFnYXRpb24oKSxcbiAgICB9O1xuICB9XG5cbiAgcGVyZm9ybShcbiAgICBjYjogKHJvb3Q6IFJvb3QpID0+IE9wZXJhdGlvbixcbiAgICBlZGl0b3I6IE15RWRpdG9yLFxuICAgIGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3IoKVxuICApIHtcbiAgICBjb25zdCByb290ID0gdGhpcy5wYXJzZXIucGFyc2UoZWRpdG9yLCBjdXJzb3IpO1xuXG4gICAgaWYgKCFyb290KSB7XG4gICAgICByZXR1cm4geyBzaG91bGRVcGRhdGU6IGZhbHNlLCBzaG91bGRTdG9wUHJvcGFnYXRpb246IGZhbHNlIH07XG4gICAgfVxuXG4gICAgY29uc3Qgb3AgPSBjYihyb290KTtcblxuICAgIHJldHVybiB0aGlzLmV2YWwocm9vdCwgb3AsIGVkaXRvcik7XG4gIH1cbn1cbiIsImltcG9ydCB7IExvZ2dlciB9IGZyb20gXCIuL0xvZ2dlclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi9TZXR0aW5nc1wiO1xuXG5pbXBvcnQgeyBMaXN0LCBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IGNoZWNrYm94UmUgfSBmcm9tIFwiLi4vdXRpbHMvY2hlY2tib3hSZVwiO1xuXG5jb25zdCBidWxsZXRTaWduUmUgPSBgKD86Wy0qK118XFxcXGQrXFxcXC4pYDtcbmNvbnN0IG9wdGlvbmFsQ2hlY2tib3hSZSA9IGAoPzoke2NoZWNrYm94UmV9KT9gO1xuXG5jb25zdCBsaXN0SXRlbVdpdGhvdXRTcGFjZXNSZSA9IG5ldyBSZWdFeHAoYF4ke2J1bGxldFNpZ25SZX0oIHxcXHQpYCk7XG5jb25zdCBsaXN0SXRlbVJlID0gbmV3IFJlZ0V4cChgXlsgXFx0XSoke2J1bGxldFNpZ25SZX0oIHxcXHQpYCk7XG5jb25zdCBzdHJpbmdXaXRoU3BhY2VzUmUgPSBuZXcgUmVnRXhwKGBeWyBcXHRdK2ApO1xuY29uc3QgcGFyc2VMaXN0SXRlbVJlID0gbmV3IFJlZ0V4cChcbiAgYF4oWyBcXHRdKikoJHtidWxsZXRTaWduUmV9KSggfFxcdCkoJHtvcHRpb25hbENoZWNrYm94UmV9KSguKikkYFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXJQb3NpdGlvbiB7XG4gIGxpbmU6IG51bWJlcjtcbiAgY2g6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXJTZWxlY3Rpb24ge1xuICBhbmNob3I6IFJlYWRlclBvc2l0aW9uO1xuICBoZWFkOiBSZWFkZXJQb3NpdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXIge1xuICBnZXRDdXJzb3IoKTogUmVhZGVyUG9zaXRpb247XG4gIGdldExpbmUobjogbnVtYmVyKTogc3RyaW5nO1xuICBsYXN0TGluZSgpOiBudW1iZXI7XG4gIGxpc3RTZWxlY3Rpb25zKCk6IFJlYWRlclNlbGVjdGlvbltdO1xuICBnZXRBbGxGb2xkZWRMaW5lcygpOiBudW1iZXJbXTtcbn1cblxuaW50ZXJmYWNlIFBhcnNlTGlzdExpc3Qge1xuICBnZXRGaXJzdExpbmVJbmRlbnQoKTogc3RyaW5nO1xuICBzZXROb3Rlc0luZGVudChub3Rlc0luZGVudDogc3RyaW5nKTogdm9pZDtcbiAgZ2V0Tm90ZXNJbmRlbnQoKTogc3RyaW5nIHwgbnVsbDtcbiAgYWRkTGluZSh0ZXh0OiBzdHJpbmcpOiB2b2lkO1xuICBnZXRQYXJlbnQoKTogUGFyc2VMaXN0TGlzdCB8IG51bGw7XG4gIGFkZEFmdGVyQWxsKGxpc3Q6IFBhcnNlTGlzdExpc3QpOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgUGFyc2VyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2dnZXI6IExvZ2dlciwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHt9XG5cbiAgcGFyc2VSYW5nZShlZGl0b3I6IFJlYWRlciwgZnJvbUxpbmUgPSAwLCB0b0xpbmUgPSBlZGl0b3IubGFzdExpbmUoKSk6IFJvb3RbXSB7XG4gICAgY29uc3QgbGlzdHM6IFJvb3RbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IGZyb21MaW5lOyBpIDw9IHRvTGluZTsgaSsrKSB7XG4gICAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUoaSk7XG5cbiAgICAgIGlmIChpID09PSBmcm9tTGluZSB8fCB0aGlzLmlzTGlzdEl0ZW0obGluZSkpIHtcbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMucGFyc2VXaXRoTGltaXRzKGVkaXRvciwgaSwgZnJvbUxpbmUsIHRvTGluZSk7XG5cbiAgICAgICAgaWYgKGxpc3QpIHtcbiAgICAgICAgICBsaXN0cy5wdXNoKGxpc3QpO1xuICAgICAgICAgIGkgPSBsaXN0LmdldENvbnRlbnRFbmQoKS5saW5lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpc3RzO1xuICB9XG5cbiAgcGFyc2UoZWRpdG9yOiBSZWFkZXIsIGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3IoKSk6IFJvb3QgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVdpdGhMaW1pdHMoZWRpdG9yLCBjdXJzb3IubGluZSwgMCwgZWRpdG9yLmxhc3RMaW5lKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVdpdGhMaW1pdHMoXG4gICAgZWRpdG9yOiBSZWFkZXIsXG4gICAgcGFyc2luZ1N0YXJ0TGluZTogbnVtYmVyLFxuICAgIGxpbWl0RnJvbTogbnVtYmVyLFxuICAgIGxpbWl0VG86IG51bWJlclxuICApOiBSb290IHwgbnVsbCB7XG4gICAgY29uc3QgZCA9IHRoaXMubG9nZ2VyLmJpbmQoXCJwYXJzZUxpc3RcIik7XG4gICAgY29uc3QgZXJyb3IgPSAobXNnOiBzdHJpbmcpOiBudWxsID0+IHtcbiAgICAgIGQobXNnKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG5cbiAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUocGFyc2luZ1N0YXJ0TGluZSk7XG5cbiAgICBsZXQgbGlzdExvb2tpbmdQb3M6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuaXNMaXN0SXRlbShsaW5lKSkge1xuICAgICAgbGlzdExvb2tpbmdQb3MgPSBwYXJzaW5nU3RhcnRMaW5lO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0xpbmVXaXRoSW5kZW50KGxpbmUpKSB7XG4gICAgICBsZXQgbGlzdExvb2tpbmdQb3NTZWFyY2ggPSBwYXJzaW5nU3RhcnRMaW5lIC0gMTtcbiAgICAgIHdoaWxlIChsaXN0TG9va2luZ1Bvc1NlYXJjaCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0TG9va2luZ1Bvc1NlYXJjaCk7XG4gICAgICAgIGlmICh0aGlzLmlzTGlzdEl0ZW0obGluZSkpIHtcbiAgICAgICAgICBsaXN0TG9va2luZ1BvcyA9IGxpc3RMb29raW5nUG9zU2VhcmNoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICAgIGxpc3RMb29raW5nUG9zU2VhcmNoLS07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobGlzdExvb2tpbmdQb3MgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBsaXN0U3RhcnRMaW5lOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgbGlzdFN0YXJ0TGluZUxvb2t1cCA9IGxpc3RMb29raW5nUG9zO1xuICAgIHdoaWxlIChsaXN0U3RhcnRMaW5lTG9va3VwID49IDApIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0U3RhcnRMaW5lTG9va3VwKTtcbiAgICAgIGlmICghdGhpcy5pc0xpc3RJdGVtKGxpbmUpICYmICF0aGlzLmlzTGluZVdpdGhJbmRlbnQobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc0xpc3RJdGVtV2l0aG91dFNwYWNlcyhsaW5lKSkge1xuICAgICAgICBsaXN0U3RhcnRMaW5lID0gbGlzdFN0YXJ0TGluZUxvb2t1cDtcbiAgICAgICAgaWYgKGxpc3RTdGFydExpbmVMb29rdXAgPD0gbGltaXRGcm9tKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxpc3RTdGFydExpbmVMb29rdXAtLTtcbiAgICB9XG5cbiAgICBpZiAobGlzdFN0YXJ0TGluZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IGxpc3RFbmRMaW5lID0gbGlzdExvb2tpbmdQb3M7XG4gICAgbGV0IGxpc3RFbmRMaW5lTG9va3VwID0gbGlzdExvb2tpbmdQb3M7XG4gICAgd2hpbGUgKGxpc3RFbmRMaW5lTG9va3VwIDw9IGVkaXRvci5sYXN0TGluZSgpKSB7XG4gICAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUobGlzdEVuZExpbmVMb29rdXApO1xuICAgICAgaWYgKCF0aGlzLmlzTGlzdEl0ZW0obGluZSkgJiYgIXRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pc0VtcHR5TGluZShsaW5lKSkge1xuICAgICAgICBsaXN0RW5kTGluZSA9IGxpc3RFbmRMaW5lTG9va3VwO1xuICAgICAgfVxuICAgICAgaWYgKGxpc3RFbmRMaW5lTG9va3VwID49IGxpbWl0VG8pIHtcbiAgICAgICAgbGlzdEVuZExpbmUgPSBsaW1pdFRvO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGxpc3RFbmRMaW5lTG9va3VwKys7XG4gICAgfVxuXG4gICAgaWYgKGxpc3RTdGFydExpbmUgPiBwYXJzaW5nU3RhcnRMaW5lIHx8IGxpc3RFbmRMaW5lIDwgcGFyc2luZ1N0YXJ0TGluZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIGxhc3QgbGluZSBjb250YWlucyBvbmx5IHNwYWNlcyBhbmQgdGhhdCdzIGluY29ycmVjdCBpbmRlbnQsIHRoZW4gaWdub3JlIHRoZSBsYXN0IGxpbmVcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnNsaW5rby9vYnNpZGlhbi1vdXRsaW5lci9pc3N1ZXMvMzY4XG4gICAgaWYgKGxpc3RFbmRMaW5lID4gbGlzdFN0YXJ0TGluZSkge1xuICAgICAgY29uc3QgbGFzdExpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0RW5kTGluZSk7XG4gICAgICBpZiAobGFzdExpbmUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCBwcmV2TGluZSA9IGVkaXRvci5nZXRMaW5lKGxpc3RFbmRMaW5lIC0gMSk7XG4gICAgICAgIGNvbnN0IFssIHByZXZMaW5lSW5kZW50XSA9IC9eKFxccyopLy5leGVjKHByZXZMaW5lKTtcbiAgICAgICAgaWYgKCFsYXN0TGluZS5zdGFydHNXaXRoKHByZXZMaW5lSW5kZW50KSkge1xuICAgICAgICAgIGxpc3RFbmRMaW5lLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByb290ID0gbmV3IFJvb3QoXG4gICAgICB7IGxpbmU6IGxpc3RTdGFydExpbmUsIGNoOiAwIH0sXG4gICAgICB7IGxpbmU6IGxpc3RFbmRMaW5lLCBjaDogZWRpdG9yLmdldExpbmUobGlzdEVuZExpbmUpLmxlbmd0aCB9LFxuICAgICAgZWRpdG9yLmxpc3RTZWxlY3Rpb25zKCkubWFwKChyKSA9PiAoe1xuICAgICAgICBhbmNob3I6IHsgbGluZTogci5hbmNob3IubGluZSwgY2g6IHIuYW5jaG9yLmNoIH0sXG4gICAgICAgIGhlYWQ6IHsgbGluZTogci5oZWFkLmxpbmUsIGNoOiByLmhlYWQuY2ggfSxcbiAgICAgIH0pKVxuICAgICk7XG5cbiAgICBsZXQgY3VycmVudFBhcmVudDogUGFyc2VMaXN0TGlzdCA9IHJvb3QuZ2V0Um9vdExpc3QoKTtcbiAgICBsZXQgY3VycmVudExpc3Q6IFBhcnNlTGlzdExpc3QgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgY3VycmVudEluZGVudCA9IFwiXCI7XG5cbiAgICBjb25zdCBmb2xkZWRMaW5lcyA9IGVkaXRvci5nZXRBbGxGb2xkZWRMaW5lcygpO1xuXG4gICAgZm9yIChsZXQgbCA9IGxpc3RTdGFydExpbmU7IGwgPD0gbGlzdEVuZExpbmU7IGwrKykge1xuICAgICAgY29uc3QgbGluZSA9IGVkaXRvci5nZXRMaW5lKGwpO1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IHBhcnNlTGlzdEl0ZW1SZS5leGVjKGxpbmUpO1xuXG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICBjb25zdCBbLCBpbmRlbnQsIGJ1bGxldCwgc3BhY2VBZnRlckJ1bGxldF0gPSBtYXRjaGVzO1xuICAgICAgICBsZXQgWywgLCAsICwgb3B0aW9uYWxDaGVja2JveCwgY29udGVudF0gPSBtYXRjaGVzO1xuXG4gICAgICAgIGNvbnRlbnQgPSBvcHRpb25hbENoZWNrYm94ICsgY29udGVudDtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgIT09IFwiYnVsbGV0LWFuZC1jaGVja2JveFwiKSB7XG4gICAgICAgICAgb3B0aW9uYWxDaGVja2JveCA9IFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb21wYXJlTGVuZ3RoID0gTWF0aC5taW4oY3VycmVudEluZGVudC5sZW5ndGgsIGluZGVudC5sZW5ndGgpO1xuICAgICAgICBjb25zdCBpbmRlbnRTbGljZSA9IGluZGVudC5zbGljZSgwLCBjb21wYXJlTGVuZ3RoKTtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGVudFNsaWNlID0gY3VycmVudEluZGVudC5zbGljZSgwLCBjb21wYXJlTGVuZ3RoKTtcblxuICAgICAgICBpZiAoaW5kZW50U2xpY2UgIT09IGN1cnJlbnRJbmRlbnRTbGljZSkge1xuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gY3VycmVudEluZGVudFNsaWNlXG4gICAgICAgICAgICAucmVwbGFjZSgvIC9nLCBcIlNcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHQvZywgXCJUXCIpO1xuICAgICAgICAgIGNvbnN0IGdvdCA9IGluZGVudFNsaWNlLnJlcGxhY2UoLyAvZywgXCJTXCIpLnJlcGxhY2UoL1xcdC9nLCBcIlRcIik7XG5cbiAgICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgICBgVW5hYmxlIHRvIHBhcnNlIGxpc3Q6IGV4cGVjdGVkIGluZGVudCBcIiR7ZXhwZWN0ZWR9XCIsIGdvdCBcIiR7Z290fVwiYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZW50Lmxlbmd0aCA+IGN1cnJlbnRJbmRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgY3VycmVudFBhcmVudCA9IGN1cnJlbnRMaXN0O1xuICAgICAgICAgIGN1cnJlbnRJbmRlbnQgPSBpbmRlbnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZW50Lmxlbmd0aCA8IGN1cnJlbnRJbmRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgY3VycmVudFBhcmVudC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGggPj0gaW5kZW50Lmxlbmd0aCAmJlxuICAgICAgICAgICAgY3VycmVudFBhcmVudC5nZXRQYXJlbnQoKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY3VycmVudFBhcmVudCA9IGN1cnJlbnRQYXJlbnQuZ2V0UGFyZW50KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRJbmRlbnQgPSBpbmRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb2xkUm9vdCA9IGZvbGRlZExpbmVzLmluY2x1ZGVzKGwpO1xuXG4gICAgICAgIGN1cnJlbnRMaXN0ID0gbmV3IExpc3QoXG4gICAgICAgICAgcm9vdCxcbiAgICAgICAgICBpbmRlbnQsXG4gICAgICAgICAgYnVsbGV0LFxuICAgICAgICAgIG9wdGlvbmFsQ2hlY2tib3gsXG4gICAgICAgICAgc3BhY2VBZnRlckJ1bGxldCxcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgIGZvbGRSb290XG4gICAgICAgICk7XG4gICAgICAgIGN1cnJlbnRQYXJlbnQuYWRkQWZ0ZXJBbGwoY3VycmVudExpc3QpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzTGluZVdpdGhJbmRlbnQobGluZSkpIHtcbiAgICAgICAgaWYgKCFjdXJyZW50TGlzdCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcihcbiAgICAgICAgICAgIGBVbmFibGUgdG8gcGFyc2UgbGlzdDogZXhwZWN0ZWQgbGlzdCBpdGVtLCBnb3QgZW1wdHkgbGluZWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5kZW50VG9DaGVjayA9IGN1cnJlbnRMaXN0LmdldE5vdGVzSW5kZW50KCkgfHwgY3VycmVudEluZGVudDtcblxuICAgICAgICBpZiAobGluZS5pbmRleE9mKGluZGVudFRvQ2hlY2spICE9PSAwKSB7XG4gICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBpbmRlbnRUb0NoZWNrLnJlcGxhY2UoLyAvZywgXCJTXCIpLnJlcGxhY2UoL1xcdC9nLCBcIlRcIik7XG4gICAgICAgICAgY29uc3QgZ290ID0gbGluZVxuICAgICAgICAgICAgLm1hdGNoKC9eWyBcXHRdKi8pWzBdXG4gICAgICAgICAgICAucmVwbGFjZSgvIC9nLCBcIlNcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHQvZywgXCJUXCIpO1xuXG4gICAgICAgICAgcmV0dXJuIGVycm9yKFxuICAgICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBpbmRlbnQgXCIke2V4cGVjdGVkfVwiLCBnb3QgXCIke2dvdH1cImBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjdXJyZW50TGlzdC5nZXROb3Rlc0luZGVudCgpKSB7XG4gICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGxpbmUubWF0Y2goL15bIFxcdF0rLyk7XG5cbiAgICAgICAgICBpZiAoIW1hdGNoZXMgfHwgbWF0Y2hlc1swXS5sZW5ndGggPD0gY3VycmVudEluZGVudC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICgvXlxccyskLy50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgICAgIGBVbmFibGUgdG8gcGFyc2UgbGlzdDogZXhwZWN0ZWQgc29tZSBpbmRlbnQsIGdvdCBubyBpbmRlbnRgXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1cnJlbnRMaXN0LnNldE5vdGVzSW5kZW50KG1hdGNoZXNbMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudExpc3QuYWRkTGluZShsaW5lLnNsaWNlKGN1cnJlbnRMaXN0LmdldE5vdGVzSW5kZW50KCkubGVuZ3RoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBsaXN0IGl0ZW0gb3Igbm90ZSwgZ290IFwiJHtsaW5lfVwiYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb290O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0VtcHR5TGluZShsaW5lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbGluZS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzTGluZVdpdGhJbmRlbnQobGluZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZ1dpdGhTcGFjZXNSZS50ZXN0KGxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xpc3RJdGVtKGxpbmU6IHN0cmluZykge1xuICAgIHJldHVybiBsaXN0SXRlbVJlLnRlc3QobGluZSk7XG4gIH1cblxuICBwcml2YXRlIGlzTGlzdEl0ZW1XaXRob3V0U3BhY2VzKGxpbmU6IHN0cmluZykge1xuICAgIHJldHVybiBsaXN0SXRlbVdpdGhvdXRTcGFjZXNSZS50ZXN0KGxpbmUpO1xuICB9XG59XG4iLCJleHBvcnQgdHlwZSBWZXJ0aWNhbExpbmVzQWN0aW9uID0gXCJub25lXCIgfCBcInpvb20taW5cIiB8IFwidG9nZ2xlLWZvbGRpbmdcIjtcbmV4cG9ydCB0eXBlIEtlZXBDdXJzb3JXaXRoaW5Db250ZW50ID1cbiAgfCBcIm5ldmVyXCJcbiAgfCBcImJ1bGxldC1vbmx5XCJcbiAgfCBcImJ1bGxldC1hbmQtY2hlY2tib3hcIjtcblxuaW50ZXJmYWNlIFNldHRpbmdzT2JqZWN0IHtcbiAgc3R5bGVMaXN0czogYm9vbGVhbjtcbiAgZGVidWc6IGJvb2xlYW47XG4gIHN0aWNrQ3Vyc29yOiBLZWVwQ3Vyc29yV2l0aGluQ29udGVudCB8IGJvb2xlYW47XG4gIGJldHRlckVudGVyOiBib29sZWFuO1xuICBiZXR0ZXJUYWI6IGJvb2xlYW47XG4gIHNlbGVjdEFsbDogYm9vbGVhbjtcbiAgbGlzdExpbmVzOiBib29sZWFuO1xuICBsaXN0TGluZUFjdGlvbjogVmVydGljYWxMaW5lc0FjdGlvbjtcbiAgZG5kOiBib29sZWFuO1xuICBwcmV2aW91c1JlbGVhc2U6IHN0cmluZyB8IG51bGw7XG59XG5cbmNvbnN0IERFRkFVTFRfU0VUVElOR1M6IFNldHRpbmdzT2JqZWN0ID0ge1xuICBzdHlsZUxpc3RzOiB0cnVlLFxuICBkZWJ1ZzogZmFsc2UsXG4gIHN0aWNrQ3Vyc29yOiBcImJ1bGxldC1hbmQtY2hlY2tib3hcIixcbiAgYmV0dGVyRW50ZXI6IHRydWUsXG4gIGJldHRlclRhYjogdHJ1ZSxcbiAgc2VsZWN0QWxsOiB0cnVlLFxuICBsaXN0TGluZXM6IGZhbHNlLFxuICBsaXN0TGluZUFjdGlvbjogXCJ0b2dnbGUtZm9sZGluZ1wiLFxuICBkbmQ6IHRydWUsXG4gIHByZXZpb3VzUmVsZWFzZTogbnVsbCxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZSB7XG4gIGxvYWREYXRhKCk6IFByb21pc2U8U2V0dGluZ3NPYmplY3Q+O1xuICBzYXZlRGF0YShzZXR0aW5nczogU2V0dGluZ3NPYmplY3QpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG50eXBlIENhbGxiYWNrID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIFNldHRpbmdzIHtcbiAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlO1xuICBwcml2YXRlIHZhbHVlczogU2V0dGluZ3NPYmplY3Q7XG4gIHByaXZhdGUgY2FsbGJhY2tzOiBTZXQ8Q2FsbGJhY2s+O1xuXG4gIGNvbnN0cnVjdG9yKHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgICB0aGlzLnN0b3JhZ2UgPSBzdG9yYWdlO1xuICAgIHRoaXMuY2FsbGJhY2tzID0gbmV3IFNldCgpO1xuICB9XG5cbiAgZ2V0IGtlZXBDdXJzb3JXaXRoaW5Db250ZW50KCkge1xuICAgIC8vIEFkYXB0b3IgZm9yIHVzZXJzIG1pZ3JhdGluZyBmcm9tIG9sZGVyIHZlcnNpb24gb2YgdGhlIHBsdWdpbi5cbiAgICBpZiAodGhpcy52YWx1ZXMuc3RpY2tDdXJzb3IgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiBcImJ1bGxldC1hbmQtY2hlY2tib3hcIjtcbiAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWVzLnN0aWNrQ3Vyc29yID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuc3RpY2tDdXJzb3I7XG4gIH1cblxuICBzZXQga2VlcEN1cnNvcldpdGhpbkNvbnRlbnQodmFsdWU6IEtlZXBDdXJzb3JXaXRoaW5Db250ZW50KSB7XG4gICAgdGhpcy5zZXQoXCJzdGlja0N1cnNvclwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgb3ZlcnJpZGVUYWJCZWhhdmlvdXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmJldHRlclRhYjtcbiAgfVxuXG4gIHNldCBvdmVycmlkZVRhYkJlaGF2aW91cih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwiYmV0dGVyVGFiXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBvdmVycmlkZUVudGVyQmVoYXZpb3VyKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5iZXR0ZXJFbnRlcjtcbiAgfVxuXG4gIHNldCBvdmVycmlkZUVudGVyQmVoYXZpb3VyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJiZXR0ZXJFbnRlclwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgb3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLnNlbGVjdEFsbDtcbiAgfVxuXG4gIHNldCBvdmVycmlkZVNlbGVjdEFsbEJlaGF2aW91cih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwic2VsZWN0QWxsXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBiZXR0ZXJMaXN0c1N0eWxlcygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuc3R5bGVMaXN0cztcbiAgfVxuXG4gIHNldCBiZXR0ZXJMaXN0c1N0eWxlcyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwic3R5bGVMaXN0c1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgdmVydGljYWxMaW5lcygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMubGlzdExpbmVzO1xuICB9XG5cbiAgc2V0IHZlcnRpY2FsTGluZXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcImxpc3RMaW5lc1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgdmVydGljYWxMaW5lc0FjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMubGlzdExpbmVBY3Rpb247XG4gIH1cblxuICBzZXQgdmVydGljYWxMaW5lc0FjdGlvbih2YWx1ZTogVmVydGljYWxMaW5lc0FjdGlvbikge1xuICAgIHRoaXMuc2V0KFwibGlzdExpbmVBY3Rpb25cIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IGRyYWdBbmREcm9wKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5kbmQ7XG4gIH1cblxuICBzZXQgZHJhZ0FuZERyb3AodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcImRuZFwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgZGVidWcoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmRlYnVnO1xuICB9XG5cbiAgc2V0IGRlYnVnKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJkZWJ1Z1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgcHJldmlvdXNSZWxlYXNlKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5wcmV2aW91c1JlbGVhc2U7XG4gIH1cblxuICBzZXQgcHJldmlvdXNSZWxlYXNlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5zZXQoXCJwcmV2aW91c1JlbGVhc2VcIiwgdmFsdWUpO1xuICB9XG5cbiAgb25DaGFuZ2UoY2I6IENhbGxiYWNrKSB7XG4gICAgdGhpcy5jYWxsYmFja3MuYWRkKGNiKTtcbiAgfVxuXG4gIHJlbW92ZUNhbGxiYWNrKGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIHRoaXMuY2FsbGJhY2tzLmRlbGV0ZShjYik7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhERUZBVUxUX1NFVFRJTkdTKSkge1xuICAgICAgdGhpcy5zZXQoayBhcyBrZXlvZiBTZXR0aW5nc09iamVjdCwgdik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnZhbHVlcyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIERFRkFVTFRfU0VUVElOR1MsXG4gICAgICBhd2FpdCB0aGlzLnN0b3JhZ2UubG9hZERhdGEoKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzYXZlKCkge1xuICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zYXZlRGF0YSh0aGlzLnZhbHVlcyk7XG4gIH1cblxuICBnZXRWYWx1ZXMoKTogU2V0dGluZ3NPYmplY3Qge1xuICAgIHJldHVybiB7IC4uLnRoaXMudmFsdWVzIH07XG4gIH1cblxuICBwcml2YXRlIHNldDxUIGV4dGVuZHMga2V5b2YgU2V0dGluZ3NPYmplY3Q+KFxuICAgIGtleTogVCxcbiAgICB2YWx1ZTogU2V0dGluZ3NPYmplY3RbVF1cbiAgKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZXNba2V5XSA9IHZhbHVlO1xuXG4gICAgZm9yIChjb25zdCBjYiBvZiB0aGlzLmNhbGxiYWNrcykge1xuICAgICAgY2IoKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBBcnJvd0xlZnRBbmRDdHJsQXJyb3dMZWZ0QmVoYXZpb3VyT3ZlcnJpZGUgfSBmcm9tIFwiLi9mZWF0dXJlcy9BcnJvd0xlZnRBbmRDdHJsQXJyb3dMZWZ0QmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IEJhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IEJldHRlckxpc3RzU3R5bGVzIH0gZnJvbSBcIi4vZmVhdHVyZXMvQmV0dGVyTGlzdHNTdHlsZXNcIjtcbmltcG9ydCB7IEN0cmxBQW5kQ21kQUJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvQ3RybEFBbmRDbWRBQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IERlbGV0ZUJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRGVsZXRlQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IERyYWdBbmREcm9wIH0gZnJvbSBcIi4vZmVhdHVyZXMvRHJhZ0FuZERyb3BcIjtcbmltcG9ydCB7IEVkaXRvclNlbGVjdGlvbnNCZWhhdmlvdXJPdmVycmlkZSB9IGZyb20gXCIuL2ZlYXR1cmVzL0VkaXRvclNlbGVjdGlvbnNCZWhhdmlvdXJPdmVycmlkZVwiO1xuaW1wb3J0IHsgRW50ZXJCZWhhdmlvdXJPdmVycmlkZSB9IGZyb20gXCIuL2ZlYXR1cmVzL0VudGVyQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9GZWF0dXJlXCI7XG5pbXBvcnQgeyBMaXN0c0ZvbGRpbmdDb21tYW5kcyB9IGZyb20gXCIuL2ZlYXR1cmVzL0xpc3RzRm9sZGluZ0NvbW1hbmRzXCI7XG5pbXBvcnQgeyBMaXN0c01vdmVtZW50Q29tbWFuZHMgfSBmcm9tIFwiLi9mZWF0dXJlcy9MaXN0c01vdmVtZW50Q29tbWFuZHNcIjtcbmltcG9ydCB7IE1ldGFCYWNrc3BhY2VCZWhhdmlvdXJPdmVycmlkZSB9IGZyb20gXCIuL2ZlYXR1cmVzL01ldGFCYWNrc3BhY2VCZWhhdmlvdXJPdmVycmlkZVwiO1xuaW1wb3J0IHsgUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50IH0gZnJvbSBcIi4vZmVhdHVyZXMvUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50XCI7XG5pbXBvcnQgeyBTZXR0aW5nc1RhYiB9IGZyb20gXCIuL2ZlYXR1cmVzL1NldHRpbmdzVGFiXCI7XG5pbXBvcnQgeyBTaGlmdFRhYkJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvU2hpZnRUYWJCZWhhdmlvdXJPdmVycmlkZVwiO1xuaW1wb3J0IHsgU3lzdGVtSW5mbyB9IGZyb20gXCIuL2ZlYXR1cmVzL1N5c3RlbUluZm9cIjtcbmltcG9ydCB7IFRhYkJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvVGFiQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IFZlcnRpY2FsTGluZXMgfSBmcm9tIFwiLi9mZWF0dXJlcy9WZXJ0aWNhbExpbmVzXCI7XG5pbXBvcnQgeyBDaGFuZ2VzQXBwbGljYXRvciB9IGZyb20gXCIuL3NlcnZpY2VzL0NoYW5nZXNBcHBsaWNhdG9yXCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuL3NlcnZpY2VzL0lNRURldGVjdG9yXCI7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9Mb2dnZXJcIjtcbmltcG9ydCB7IE9ic2lkaWFuU2V0dGluZ3MgfSBmcm9tIFwiLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuL3NlcnZpY2VzL1BhcnNlclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGNvbnN0IFBMVUdJTl9WRVJTSU9OOiBzdHJpbmc7XG4gIGNvbnN0IENIQU5HRUxPR19NRDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPYnNpZGlhbk91dGxpbmVyUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcbiAgcHJpdmF0ZSBmZWF0dXJlczogRmVhdHVyZVtdO1xuICBwcm90ZWN0ZWQgc2V0dGluZ3M6IFNldHRpbmdzO1xuICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyO1xuICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3M7XG4gIHByaXZhdGUgcGFyc2VyOiBQYXJzZXI7XG4gIHByaXZhdGUgY2hhbmdlc0FwcGxpY2F0b3I6IENoYW5nZXNBcHBsaWNhdG9yO1xuICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyO1xuICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcjtcblxuICBhc3luYyBvbmxvYWQoKSB7XG4gICAgY29uc29sZS5sb2coYExvYWRpbmcgb2JzaWRpYW4tb3V0bGluZXJgKTtcblxuICAgIGF3YWl0IHRoaXMucHJlcGFyZVNldHRpbmdzKCk7XG5cbiAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MgPSBuZXcgT2JzaWRpYW5TZXR0aW5ncyh0aGlzLmFwcCk7XG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMuc2V0dGluZ3MpO1xuICAgIHRoaXMucGFyc2VyID0gbmV3IFBhcnNlcih0aGlzLmxvZ2dlciwgdGhpcy5zZXR0aW5ncyk7XG4gICAgdGhpcy5jaGFuZ2VzQXBwbGljYXRvciA9IG5ldyBDaGFuZ2VzQXBwbGljYXRvcigpO1xuICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyID0gbmV3IE9wZXJhdGlvblBlcmZvcm1lcihcbiAgICAgIHRoaXMucGFyc2VyLFxuICAgICAgdGhpcy5jaGFuZ2VzQXBwbGljYXRvclxuICAgICk7XG5cbiAgICB0aGlzLmltZURldGVjdG9yID0gbmV3IElNRURldGVjdG9yKCk7XG4gICAgYXdhaXQgdGhpcy5pbWVEZXRlY3Rvci5sb2FkKCk7XG5cbiAgICB0aGlzLmZlYXR1cmVzID0gW1xuICAgICAgLy8gc2VydmljZSBmZWF0dXJlc1xuICAgICAgbmV3IFJlbGVhc2VOb3Rlc0Fubm91bmNlbWVudCh0aGlzLCB0aGlzLnNldHRpbmdzKSxcbiAgICAgIG5ldyBTZXR0aW5nc1RhYih0aGlzLCB0aGlzLnNldHRpbmdzKSxcbiAgICAgIG5ldyBTeXN0ZW1JbmZvKHRoaXMsIHRoaXMuc2V0dGluZ3MpLFxuXG4gICAgICAvLyBnZW5lcmFsIGZlYXR1cmVzXG4gICAgICBuZXcgTGlzdHNNb3ZlbWVudENvbW1hbmRzKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MsXG4gICAgICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyXG4gICAgICApLFxuICAgICAgbmV3IExpc3RzRm9sZGluZ0NvbW1hbmRzKHRoaXMsIHRoaXMub2JzaWRpYW5TZXR0aW5ncyksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50XG4gICAgICBuZXcgRWRpdG9yU2VsZWN0aW9uc0JlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLnBhcnNlcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG4gICAgICBuZXcgQXJyb3dMZWZ0QW5kQ3RybEFycm93TGVmdEJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lclxuICAgICAgKSxcbiAgICAgIG5ldyBCYWNrc3BhY2VCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG4gICAgICBuZXcgTWV0YUJhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lclxuICAgICAgKSxcbiAgICAgIG5ldyBEZWxldGVCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLm92ZXJyaWRlVGFiQmVoYXZpb3VyXG4gICAgICBuZXcgVGFiQmVoYXZpb3VyT3ZlcnJpZGUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuaW1lRGV0ZWN0b3IsXG4gICAgICAgIHRoaXMub2JzaWRpYW5TZXR0aW5ncyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG4gICAgICBuZXcgU2hpZnRUYWJCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLm92ZXJyaWRlRW50ZXJCZWhhdmlvdXJcbiAgICAgIG5ldyBFbnRlckJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MsXG4gICAgICAgIHRoaXMucGFyc2VyLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lclxuICAgICAgKSxcblxuICAgICAgLy8gZmVhdHVyZXMgYmFzZWQgb24gc2V0dGluZ3Mub3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXJcbiAgICAgIG5ldyBDdHJsQUFuZENtZEFCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLmJldHRlckxpc3RzU3R5bGVzXG4gICAgICBuZXcgQmV0dGVyTGlzdHNTdHlsZXModGhpcy5zZXR0aW5ncywgdGhpcy5vYnNpZGlhblNldHRpbmdzKSxcblxuICAgICAgLy8gZmVhdHVyZXMgYmFzZWQgb24gc2V0dGluZ3MudmVydGljYWxMaW5lc1xuICAgICAgbmV3IFZlcnRpY2FsTGluZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMub2JzaWRpYW5TZXR0aW5ncyxcbiAgICAgICAgdGhpcy5wYXJzZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLmRyYWdBbmREcm9wXG4gICAgICBuZXcgRHJhZ0FuZERyb3AoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMub2JzaWRpYW5TZXR0aW5ncyxcbiAgICAgICAgdGhpcy5wYXJzZXIsXG4gICAgICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyXG4gICAgICApLFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgdGhpcy5mZWF0dXJlcykge1xuICAgICAgYXdhaXQgZmVhdHVyZS5sb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb251bmxvYWQoKSB7XG4gICAgY29uc29sZS5sb2coYFVubG9hZGluZyBvYnNpZGlhbi1vdXRsaW5lcmApO1xuXG4gICAgYXdhaXQgdGhpcy5pbWVEZXRlY3Rvci51bmxvYWQoKTtcblxuICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiB0aGlzLmZlYXR1cmVzKSB7XG4gICAgICBhd2FpdCBmZWF0dXJlLnVubG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlU2V0dGluZ3MoKSB7XG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBTZXR0aW5ncyh0aGlzKTtcbiAgICBhd2FpdCB0aGlzLnNldHRpbmdzLmxvYWQoKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImVkaXRvckluZm9GaWVsZCIsImZvbGRlZFJhbmdlcyIsImZvbGRhYmxlIiwiZm9sZEVmZmVjdCIsInVuZm9sZEVmZmVjdCIsInJ1blNjb3BlSGFuZGxlcnMiLCJrZXltYXAiLCJOb3RpY2UiLCJpbmRlbnRTdHJpbmciLCJnZXRJbmRlbnRVbml0IiwiU3RhdGVFZmZlY3QiLCJEZWNvcmF0aW9uIiwiU3RhdGVGaWVsZCIsIkVkaXRvclZpZXciLCJQbGF0Zm9ybSIsIkVkaXRvclN0YXRlIiwiUHJlYyIsIk1vZGFsIiwiTWFya2Rvd25SZW5kZXJlciIsIlBsdWdpblNldHRpbmdUYWIiLCJTZXR0aW5nIiwiVmlld1BsdWdpbiIsIlBsdWdpbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFvR0E7QUFDTyxTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUU7QUFDN0QsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEtBQUssWUFBWSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDaEgsSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDL0QsUUFBUSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ25HLFFBQVEsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ3RHLFFBQVEsU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3RILFFBQVEsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzlFLEtBQUssQ0FBQyxDQUFDO0FBQ1A7O01DdEhhLGdDQUFnQyxDQUFBO0FBSTNDLElBQUEsV0FBQSxDQUFvQixJQUFVLEVBQUE7UUFBVixJQUFJLENBQUEsSUFBQSxHQUFKLElBQUksQ0FBTTtRQUh0QixJQUFlLENBQUEsZUFBQSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFPLENBQUEsT0FBQSxHQUFHLEtBQUssQ0FBQztLQUVVO0lBRWxDLHFCQUFxQixHQUFBO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztLQUM3QjtJQUVELFlBQVksR0FBQTtRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztLQUNyQjtJQUVELE9BQU8sR0FBQTtBQUNMLFFBQUEsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztBQUV0QixRQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDM0IsT0FBTztBQUNSLFNBQUE7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNyQyxRQUFBLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFJO0FBQ25DLFlBQUEsUUFDRSxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFDbEQsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFDM0I7QUFDSixTQUFDLENBQUMsQ0FBQztRQUVILElBQUksTUFBTSxLQUFLLENBQUMsRUFBRTtBQUNoQixZQUFBLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDckQsU0FBQTthQUFNLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN4RCxTQUFBO0tBQ0Y7QUFFTyxJQUFBLDRCQUE0QixDQUNsQyxJQUFVLEVBQ1YsS0FBaUIsRUFDakIsTUFBYyxFQUFBO0FBRWQsUUFBQSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztBQUM1QixRQUFBLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBRXBCLFFBQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQzFDO0lBRU8sZ0NBQWdDLENBQUMsSUFBVSxFQUFFLE1BQWdCLEVBQUE7QUFDbkUsUUFBQSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVwRCxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTztBQUNSLFNBQUE7QUFFRCxRQUFBLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBQzVCLFFBQUEsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFFcEIsUUFBQSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtBQUNuQixZQUFBLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ25ELFlBQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNsQyxTQUFBO0FBQU0sYUFBQTtZQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztBQUNsRCxTQUFBO0tBQ0Y7QUFDRjs7QUM3Q0ssU0FBVSxrQkFBa0IsQ0FBQyxLQUFrQixFQUFBO0lBQ25ELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDQSx3QkFBZSxDQUFDLENBQUM7SUFFaEQsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNYLFFBQUEsT0FBTyxJQUFJLENBQUM7QUFDYixLQUFBO0FBRUQsSUFBQSxPQUFPLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFhRCxTQUFTLFVBQVUsQ0FBQyxJQUFnQixFQUFFLElBQVksRUFBRSxFQUFVLEVBQUE7SUFDNUQsSUFBSSxLQUFLLEdBQXdDLElBQUksQ0FBQztBQUN0RCxJQUFBQyxxQkFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUk7QUFDdEQsUUFBQSxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSTtBQUFFLFlBQUEsS0FBSyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3hELEtBQUMsQ0FBQyxDQUFDO0FBQ0gsSUFBQSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7TUFFWSxRQUFRLENBQUE7QUFHbkIsSUFBQSxXQUFBLENBQW9CLENBQVMsRUFBQTtRQUFULElBQUMsQ0FBQSxDQUFBLEdBQUQsQ0FBQyxDQUFROztRQUUzQixJQUFJLENBQUMsSUFBSSxHQUFJLElBQUksQ0FBQyxDQUFTLENBQUMsRUFBRSxDQUFDO0tBQ2hDO0lBRUQsU0FBUyxHQUFBO0FBQ1AsUUFBQSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7S0FDM0I7QUFFRCxJQUFBLE9BQU8sQ0FBQyxDQUFTLEVBQUE7UUFDZixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzFCO0lBRUQsUUFBUSxHQUFBO0FBQ04sUUFBQSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7S0FDMUI7SUFFRCxjQUFjLEdBQUE7QUFDWixRQUFBLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztLQUNoQztJQUVELFFBQVEsQ0FBQyxJQUFzQixFQUFFLEVBQW9CLEVBQUE7UUFDbkQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDbEM7QUFFRCxJQUFBLFlBQVksQ0FDVixXQUFtQixFQUNuQixJQUFzQixFQUN0QixFQUFvQixFQUFBO0FBRXBCLFFBQUEsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQ25EO0FBRUQsSUFBQSxhQUFhLENBQUMsVUFBK0IsRUFBQTtBQUMzQyxRQUFBLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ2xDO0FBRUQsSUFBQSxRQUFRLENBQUMsSUFBWSxFQUFBO0FBQ25CLFFBQUEsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdkI7SUFFRCxRQUFRLEdBQUE7QUFDTixRQUFBLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztLQUMxQjtBQUVELElBQUEsV0FBVyxDQUFDLE1BQWMsRUFBQTtRQUN4QixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ25DO0FBRUQsSUFBQSxXQUFXLENBQUMsR0FBcUIsRUFBQTtRQUMvQixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2hDO0FBRUQsSUFBQSxJQUFJLENBQUMsQ0FBUyxFQUFBO0FBQ1osUUFBQSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1RCxRQUFBLE1BQU0sS0FBSyxHQUFHQyxpQkFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFakQsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDckMsT0FBTztBQUNSLFNBQUE7QUFFRCxRQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQ0MsbUJBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDcEQ7QUFFRCxJQUFBLE1BQU0sQ0FBQyxDQUFTLEVBQUE7QUFDZCxRQUFBLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDdEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVELFFBQUEsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTztBQUNSLFNBQUE7QUFFRCxRQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQ0MscUJBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDdEQ7SUFFRCxpQkFBaUIsR0FBQTtBQUNmLFFBQUEsTUFBTSxDQUFDLEdBQUdILHFCQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMvQyxNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7UUFDekIsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ2QsWUFBQSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNWLFNBQUE7QUFDRCxRQUFBLE9BQU8sR0FBRyxDQUFDO0tBQ1o7QUFFRCxJQUFBLGdCQUFnQixDQUFDLENBQWdCLEVBQUE7UUFDL0JJLHFCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQzFDO0lBRUQsWUFBWSxHQUFBO0FBQ1YsUUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFO0FBQzlCLFlBQUEsT0FBTyxJQUFJLENBQUM7QUFDYixTQUFBO1FBRUQsT0FBTyxNQUFNLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN2RDtJQUVELE9BQU8sR0FBQTtBQUNMLFFBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTtZQUM5QixPQUFPO0FBQ1IsU0FBQTtRQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzNDO0FBRUQsSUFBQSxNQUFNLENBQUMsSUFBWSxFQUFBO0FBQ2pCLFFBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTtZQUM5QixPQUFPO0FBQ1IsU0FBQTtRQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUNoRDtBQUVELElBQUEsY0FBYyxDQUFDLElBQVksRUFBQTtBQUN6QixRQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUU7WUFDOUIsT0FBTztBQUNSLFNBQUE7QUFFRCxRQUFBLElBQUksTUFBTSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRTtZQUN6QyxNQUFNLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQyxTQUFBO0FBQU0sYUFBQTtZQUNMLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNoRCxTQUFBO0tBQ0Y7QUFDRjs7QUNwTEssU0FBVSx1QkFBdUIsQ0FBQyxNQU12QyxFQUFBO0FBQ0MsSUFBQSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDM0MsSUFBQSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRXZCLE9BQU8sQ0FBQyxJQUFnQixLQUFhO1FBQ25DLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUU5QyxRQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDbEIsWUFBQSxPQUFPLEtBQUssQ0FBQztBQUNkLFNBQUE7UUFFRCxNQUFNLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTVELE9BQU8sWUFBWSxJQUFJLHFCQUFxQixDQUFDO0FBQy9DLEtBQUMsQ0FBQztBQUNKOztNQ1phLDBDQUEwQyxDQUFBO0FBQ3JELElBQUEsV0FBQSxDQUNVLE1BQWdCLEVBQ2hCLFFBQWtCLEVBQ2xCLFdBQXdCLEVBQ3hCLGtCQUFzQyxFQUFBO1FBSHRDLElBQU0sQ0FBQSxNQUFBLEdBQU4sTUFBTSxDQUFVO1FBQ2hCLElBQVEsQ0FBQSxRQUFBLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLElBQVcsQ0FBQSxXQUFBLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLElBQWtCLENBQUEsa0JBQUEsR0FBbEIsa0JBQWtCLENBQW9CO1FBMkJ4QyxJQUFLLENBQUEsS0FBQSxHQUFHLE1BQUs7QUFDbkIsWUFBQSxRQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLEtBQUssT0FBTztBQUNqRCxnQkFBQSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQzVCO0FBQ0osU0FBQyxDQUFDO0FBRU0sUUFBQSxJQUFBLENBQUEsR0FBRyxHQUFHLENBQUMsTUFBZ0IsS0FBSTtBQUNqQyxZQUFBLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FDcEMsQ0FBQyxJQUFJLEtBQUssSUFBSSxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsRUFDcEQsTUFBTSxDQUNQLENBQUM7QUFDSixTQUFDLENBQUM7S0F0Q0U7SUFFRSxJQUFJLEdBQUE7O1lBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FDakNDLFdBQU0sQ0FBQyxFQUFFLENBQUM7QUFDUixnQkFBQTtBQUNFLG9CQUFBLEdBQUcsRUFBRSxXQUFXO29CQUNoQixHQUFHLEVBQUUsdUJBQXVCLENBQUM7d0JBQzNCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzt3QkFDakIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO3FCQUNkLENBQUM7QUFDSCxpQkFBQTtBQUNELGdCQUFBO0FBQ0Usb0JBQUEsR0FBRyxFQUFFLGFBQWE7QUFDbEIsb0JBQUEsS0FBSyxFQUFFLGFBQWE7b0JBQ3BCLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzt3QkFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO3dCQUNqQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7cUJBQ2QsQ0FBQztBQUNILGlCQUFBO0FBQ0YsYUFBQSxDQUFDLENBQ0gsQ0FBQztTQUNILENBQUEsQ0FBQTtBQUFBLEtBQUE7SUFFSyxNQUFNLEdBQUE7K0RBQUssQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQWVsQjs7QUMxRGUsU0FBQSxNQUFNLENBQUMsQ0FBVyxFQUFFLENBQVcsRUFBQTtBQUM3QyxJQUFBLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN4QyxDQUFDO0FBRWUsU0FBQSxNQUFNLENBQUMsQ0FBVyxFQUFFLENBQVcsRUFBQTtBQUM3QyxJQUFBLE9BQU8sTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRWUsU0FBQSxNQUFNLENBQUMsQ0FBVyxFQUFFLENBQVcsRUFBQTtBQUM3QyxJQUFBLE9BQU8sTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRWUsU0FBQSxrQkFBa0IsQ0FDaEMsQ0FBdUIsRUFDdkIsQ0FBdUIsRUFBQTtBQUV2QixJQUFBLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUVLLFNBQVUseUJBQXlCLENBQUMsSUFBVSxFQUFBO0lBQ2xELFNBQVMsS0FBSyxDQUFDLE1BQW1CLEVBQUE7UUFDaEMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBRWQsUUFBQSxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUN4QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUU7Z0JBQ25DLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQSxFQUFHLEtBQUssRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDcEMsYUFBQTtZQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNkLFNBQUE7S0FDRjtJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNkLENBQUM7QUFrQkQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO01BRUQsSUFBSSxDQUFBO0FBT2YsSUFBQSxXQUFBLENBQ1UsSUFBVSxFQUNWLE1BQWMsRUFDZCxNQUFjLEVBQ2QsZ0JBQXdCLEVBQ3hCLGdCQUF3QixFQUNoQyxTQUFpQixFQUNULFFBQWlCLEVBQUE7UUFOakIsSUFBSSxDQUFBLElBQUEsR0FBSixJQUFJLENBQU07UUFDVixJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBUTtRQUNkLElBQU0sQ0FBQSxNQUFBLEdBQU4sTUFBTSxDQUFRO1FBQ2QsSUFBZ0IsQ0FBQSxnQkFBQSxHQUFoQixnQkFBZ0IsQ0FBUTtRQUN4QixJQUFnQixDQUFBLGdCQUFBLEdBQWhCLGdCQUFnQixDQUFRO1FBRXhCLElBQVEsQ0FBQSxRQUFBLEdBQVIsUUFBUSxDQUFTO1FBWm5CLElBQU0sQ0FBQSxNQUFBLEdBQWdCLElBQUksQ0FBQztRQUMzQixJQUFRLENBQUEsUUFBQSxHQUFXLEVBQUUsQ0FBQztRQUN0QixJQUFXLENBQUEsV0FBQSxHQUFrQixJQUFJLENBQUM7UUFDbEMsSUFBSyxDQUFBLEtBQUEsR0FBYSxFQUFFLENBQUM7QUFXM0IsUUFBQSxJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2xCLFFBQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDNUI7SUFFRCxLQUFLLEdBQUE7UUFDSCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7S0FDaEI7SUFFRCxjQUFjLEdBQUE7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7S0FDekI7QUFFRCxJQUFBLGNBQWMsQ0FBQyxXQUFtQixFQUFBO0FBQ2hDLFFBQUEsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRTtBQUM3QixZQUFBLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQSw2QkFBQSxDQUErQixDQUFDLENBQUM7QUFDbEQsU0FBQTtBQUNELFFBQUEsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7S0FDaEM7QUFFRCxJQUFBLE9BQU8sQ0FBQyxJQUFZLEVBQUE7QUFDbEIsUUFBQSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFO0FBQzdCLFlBQUEsTUFBTSxJQUFJLEtBQUssQ0FDYixDQUFBLHlEQUFBLENBQTJELENBQzVELENBQUM7QUFDSCxTQUFBO0FBRUQsUUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN2QjtBQUVELElBQUEsWUFBWSxDQUFDLEtBQWUsRUFBQTtRQUMxQixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFO0FBQ2pELFlBQUEsTUFBTSxJQUFJLEtBQUssQ0FDYixDQUFBLHlEQUFBLENBQTJELENBQzVELENBQUM7QUFDSCxTQUFBO0FBRUQsUUFBQSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjtJQUVELFlBQVksR0FBQTtBQUNWLFFBQUEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztLQUMxQjtJQUVELE9BQU8sR0FBQTtRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztLQUNsQjtJQUVELFdBQVcsR0FBQTtBQUNULFFBQUEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQy9CO0lBRUQsWUFBWSxHQUFBO0FBQ1YsUUFBQSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFJO0FBQy9CLFlBQUEsTUFBTSxJQUFJLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUMzQixNQUFNLE9BQU8sR0FDWCxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO0FBQy9ELFlBQUEsTUFBTSxLQUFLLEdBQUcsT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFFbkMsT0FBTztBQUNMLGdCQUFBLElBQUksRUFBRSxHQUFHO0FBQ1QsZ0JBQUEsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUU7QUFDM0IsZ0JBQUEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUU7YUFDeEIsQ0FBQztBQUNKLFNBQUMsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxRQUFRLEdBQUE7QUFDTixRQUFBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQUM1QjtJQUVELHdCQUF3QixHQUFBO0FBQ3RCLFFBQUEsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU1RCxPQUFPO0FBQ0wsWUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFlBQUEsRUFBRSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtTQUM3QixDQUFDO0tBQ0g7SUFFRCxxQ0FBcUMsR0FBQTtBQUNuQyxRQUFBLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFNUQsT0FBTztBQUNMLFlBQUEsSUFBSSxFQUFFLFNBQVM7WUFDZixFQUFFLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1NBQ3hELENBQUM7S0FDSDtJQUVELHFCQUFxQixHQUFBO0FBQ25CLFFBQUEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRCxNQUFNLEtBQUssR0FDVCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO0FBQ3JCLGNBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO2NBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBRXpFLE9BQU87QUFDTCxZQUFBLElBQUksRUFBRSxPQUFPO0FBQ2IsWUFBQSxFQUFFLEVBQUUsS0FBSztTQUNWLENBQUM7S0FDSDtJQUVELDhCQUE4QixHQUFBO0FBQzVCLFFBQUEsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQztLQUNwRDtJQUVPLFlBQVksR0FBQTtRQUNsQixJQUFJLFNBQVMsR0FBUyxJQUFJLENBQUM7QUFFM0IsUUFBQSxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzNCLFNBQVMsR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDNUMsU0FBQTtBQUVELFFBQUEsT0FBTyxTQUFTLENBQUM7S0FDbEI7SUFFTyxpQkFBaUIsR0FBQTtBQUN2QixRQUFBLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0tBQ3BEO0lBRUQsUUFBUSxHQUFBO1FBQ04sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ2pCLFlBQUEsT0FBTyxJQUFJLENBQUM7QUFDYixTQUFBO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2YsWUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDL0IsU0FBQTtBQUVELFFBQUEsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELFVBQVUsR0FBQTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztLQUN0QjtJQUVELGNBQWMsR0FBQTtRQUNaLElBQUksR0FBRyxHQUFTLElBQUksQ0FBQztRQUNyQixJQUFJLFFBQVEsR0FBZ0IsSUFBSSxDQUFDO0FBQ2pDLFFBQUEsT0FBTyxHQUFHLEVBQUU7QUFDVixZQUFBLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUNwQixRQUFRLEdBQUcsR0FBRyxDQUFDO0FBQ2hCLGFBQUE7QUFDRCxZQUFBLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQ2xCLFNBQUE7QUFDRCxRQUFBLE9BQU8sUUFBUSxDQUFDO0tBQ2pCO0lBRUQsUUFBUSxHQUFBO0FBQ04sUUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNoQixZQUFBLE9BQU8sQ0FBQyxDQUFDO0FBQ1YsU0FBQTtRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDbkM7SUFFRCxlQUFlLENBQUMsSUFBWSxFQUFFLElBQVksRUFBQTtRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuRSxRQUFBLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLEVBQUU7QUFDN0IsWUFBQSxJQUFJLENBQUMsV0FBVztBQUNkLGdCQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsRSxTQUFBO0FBRUQsUUFBQSxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDakMsWUFBQSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuQyxTQUFBO0tBQ0Y7SUFFRCxhQUFhLENBQUMsU0FBaUIsRUFBRSxXQUFtQixFQUFBO0FBQ2xELFFBQUEsSUFBSSxDQUFDLE1BQU07WUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO2dCQUMvQixXQUFXO0FBQ1gsZ0JBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDL0IsUUFBQSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFO0FBQzdCLFlBQUEsSUFBSSxDQUFDLFdBQVc7Z0JBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQztvQkFDcEMsV0FBVztBQUNYLG9CQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3JDLFNBQUE7QUFFRCxRQUFBLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNqQyxZQUFBLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzdDLFNBQUE7S0FDRjtJQUVELGtCQUFrQixHQUFBO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtJQUVELFNBQVMsR0FBQTtRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtJQUVELG1CQUFtQixHQUFBO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0tBQzlCO0lBRUQsaUJBQWlCLEdBQUE7QUFDZixRQUFBLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztLQUNyQztBQUVELElBQUEsYUFBYSxDQUFDLE1BQWMsRUFBQTtBQUMxQixRQUFBLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0tBQ3RCO0lBRUQsU0FBUyxHQUFBO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0tBQ3BCO0FBRUQsSUFBQSxZQUFZLENBQUMsSUFBVSxFQUFBO0FBQ3JCLFFBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUIsUUFBQSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztLQUNwQjtBQUVELElBQUEsV0FBVyxDQUFDLElBQVUsRUFBQTtBQUNwQixRQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pCLFFBQUEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7S0FDcEI7QUFFRCxJQUFBLFdBQVcsQ0FBQyxJQUFVLEVBQUE7UUFDcEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNCLFFBQUEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7S0FDcEI7SUFFRCxTQUFTLENBQUMsTUFBWSxFQUFFLElBQVUsRUFBQTtRQUNoQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFFBQUEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7S0FDcEI7SUFFRCxRQUFRLENBQUMsTUFBWSxFQUFFLElBQVUsRUFBQTtRQUMvQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QyxRQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JDLFFBQUEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7S0FDcEI7QUFFRCxJQUFBLGdCQUFnQixDQUFDLElBQVUsRUFBQTtRQUN6QixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxRQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7S0FDNUM7QUFFRCxJQUFBLGdCQUFnQixDQUFDLElBQVUsRUFBQTtRQUN6QixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztLQUN6RTtJQUVELE9BQU8sR0FBQTtBQUNMLFFBQUEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7S0FDbkM7SUFFRCxLQUFLLEdBQUE7UUFDSCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFFYixRQUFBLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQyxHQUFHO0FBQ0QsZ0JBQUEsQ0FBQyxLQUFLLENBQUM7c0JBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0I7QUFDbkQsc0JBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQztBQUN2QixZQUFBLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLEdBQUcsSUFBSSxJQUFJLENBQUM7QUFDYixTQUFBO0FBRUQsUUFBQSxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDakMsWUFBQSxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3RCLFNBQUE7QUFFRCxRQUFBLE9BQU8sR0FBRyxDQUFDO0tBQ1o7QUFFRCxJQUFBLEtBQUssQ0FBQyxPQUFhLEVBQUE7QUFDakIsUUFBQSxNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksQ0FDcEIsT0FBTyxFQUNQLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsRUFDckIsRUFBRSxFQUNGLElBQUksQ0FBQyxRQUFRLENBQ2QsQ0FBQztBQUNGLFFBQUEsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ25CLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQyxRQUFBLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztBQUNyQyxRQUFBLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN6QyxTQUFBO0FBRUQsUUFBQSxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0YsQ0FBQTtNQUVZLElBQUksQ0FBQTtBQUlmLElBQUEsV0FBQSxDQUNVLEtBQWUsRUFDZixHQUFhLEVBQ3JCLFVBQW1CLEVBQUE7UUFGWCxJQUFLLENBQUEsS0FBQSxHQUFMLEtBQUssQ0FBVTtRQUNmLElBQUcsQ0FBQSxHQUFBLEdBQUgsR0FBRyxDQUFVO0FBTGYsUUFBQSxJQUFBLENBQUEsUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JELElBQVUsQ0FBQSxVQUFBLEdBQVksRUFBRSxDQUFDO0FBTy9CLFFBQUEsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3BDO0lBRUQsV0FBVyxHQUFBO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0tBQ3RCO0lBRUQsZUFBZSxHQUFBO1FBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztLQUN2RDtJQUVELGVBQWUsR0FBQTtRQUNiLE9BQVksTUFBQSxDQUFBLE1BQUEsQ0FBQSxFQUFBLEVBQUEsSUFBSSxDQUFDLEtBQUssQ0FBRyxDQUFBO0tBQzFCO0lBRUQsYUFBYSxHQUFBO1FBQ1gsT0FBWSxNQUFBLENBQUEsTUFBQSxDQUFBLEVBQUEsRUFBQSxJQUFJLENBQUMsR0FBRyxDQUFHLENBQUE7S0FDeEI7SUFFRCxhQUFhLEdBQUE7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNO0FBQ2pDLFlBQUEsTUFBTSxFQUFPLE1BQUEsQ0FBQSxNQUFBLENBQUEsRUFBQSxFQUFBLENBQUMsQ0FBQyxNQUFNLENBQUU7QUFDdkIsWUFBQSxJQUFJLEVBQU8sTUFBQSxDQUFBLE1BQUEsQ0FBQSxFQUFBLEVBQUEsQ0FBQyxDQUFDLElBQUksQ0FBRTtBQUNwQixTQUFBLENBQUMsQ0FBQyxDQUFDO0tBQ0w7SUFFRCxlQUFlLEdBQUE7QUFDYixRQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtBQUM5QixZQUFBLE9BQU8sS0FBSyxDQUFDO0FBQ2QsU0FBQTtRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFckMsUUFDRSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDN0MsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQ3pDO0tBQ0g7SUFFRCxrQkFBa0IsR0FBQTtBQUNoQixRQUFBLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0tBQ3JDO0lBRUQsWUFBWSxHQUFBO0FBQ1YsUUFBQSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRTlELFFBQUEsTUFBTSxJQUFJLEdBQ1IsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3JDLGNBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25CLGNBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDMUIsUUFBQSxNQUFNLEVBQUUsR0FDTixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDckMsY0FBRSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDckIsY0FBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUV4QixPQUNLLE1BQUEsQ0FBQSxNQUFBLENBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxFQUFBLEVBQUEsU0FBUyxLQUNaLElBQUk7QUFDSixZQUFBLEVBQUUsRUFDRixDQUFBLENBQUE7S0FDSDtJQUVELFNBQVMsR0FBQTtBQUNQLFFBQUEsT0FBQSxNQUFBLENBQUEsTUFBQSxDQUFBLEVBQUEsRUFBWSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBRyxDQUFBO0tBQ2hFO0FBRUQsSUFBQSxhQUFhLENBQUMsTUFBZ0IsRUFBQTtBQUM1QixRQUFBLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDdEQ7QUFFRCxJQUFBLGlCQUFpQixDQUFDLFVBQW1CLEVBQUE7QUFDbkMsUUFBQSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3pCLFlBQUEsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFBLHdDQUFBLENBQTBDLENBQUMsQ0FBQztBQUM3RCxTQUFBO0FBQ0QsUUFBQSxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztLQUM5QjtJQUVELGtCQUFrQixHQUFBO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNyRDtBQUVELElBQUEsZ0JBQWdCLENBQUMsSUFBWSxFQUFBO0FBQzNCLFFBQUEsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ2xELE9BQU87QUFDUixTQUFBO1FBRUQsSUFBSSxNQUFNLEdBQVMsSUFBSSxDQUFDO0FBQ3hCLFFBQUEsSUFBSSxLQUFLLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFFcEMsUUFBQSxNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQVUsS0FBSTtBQUM5QixZQUFBLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNsQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBQzNCLE1BQU0sWUFBWSxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRXpELGdCQUFBLElBQUksSUFBSSxJQUFJLFlBQVksSUFBSSxJQUFJLElBQUksWUFBWSxFQUFFO29CQUNoRCxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ1osaUJBQUE7QUFBTSxxQkFBQTtBQUNMLG9CQUFBLEtBQUssR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLG9CQUFBLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUMzQixpQkFBQTtnQkFDRCxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7b0JBQ25CLE9BQU87QUFDUixpQkFBQTtBQUNGLGFBQUE7QUFDSCxTQUFDLENBQUM7UUFFRixRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBRXRDLFFBQUEsT0FBTyxNQUFNLENBQUM7S0FDZjtBQUVELElBQUEsc0JBQXNCLENBQUMsSUFBVSxFQUFBO1FBQy9CLElBQUksTUFBTSxHQUE0QixJQUFJLENBQUM7QUFDM0MsUUFBQSxJQUFJLElBQUksR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztBQUVuQyxRQUFBLE1BQU0sUUFBUSxHQUFHLENBQUMsRUFBVSxLQUFJO0FBQzlCLFlBQUEsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ2xCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDMUIsTUFBTSxZQUFZLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBRXpELElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtBQUNkLG9CQUFBLE1BQU0sR0FBRyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztBQUN2QyxpQkFBQTtBQUFNLHFCQUFBO0FBQ0wsb0JBQUEsSUFBSSxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDeEIsb0JBQUEsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQzNCLGlCQUFBO2dCQUVELElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtvQkFDbkIsT0FBTztBQUNSLGlCQUFBO0FBQ0YsYUFBQTtBQUNILFNBQUMsQ0FBQztRQUVGLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFFdEMsUUFBQSxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBRUQsV0FBVyxHQUFBO0FBQ1QsUUFBQSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7S0FDcEM7SUFFRCxLQUFLLEdBQUE7UUFDSCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFFYixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUU7QUFDL0MsWUFBQSxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3RCLFNBQUE7UUFFRCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQy9CO0lBRUQsS0FBSyxHQUFBO0FBQ0gsUUFBQSxNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksQ0FDZixNQUFBLENBQUEsTUFBQSxDQUFBLEVBQUEsRUFBQSxJQUFJLENBQUMsS0FBSyxDQUFBLEVBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxFQUFBLEVBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FDYixFQUFBLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FDckIsQ0FBQztRQUNGLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUMsUUFBQSxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0Y7O01DemdCWSxnQ0FBZ0MsQ0FBQTtBQUkzQyxJQUFBLFdBQUEsQ0FBb0IsSUFBVSxFQUFBO1FBQVYsSUFBSSxDQUFBLElBQUEsR0FBSixJQUFJLENBQU07UUFIdEIsSUFBZSxDQUFBLGVBQUEsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBTyxDQUFBLE9BQUEsR0FBRyxLQUFLLENBQUM7S0FFVTtJQUVsQyxxQkFBcUIsR0FBQTtRQUNuQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7S0FDN0I7SUFFRCxZQUFZLEdBQUE7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7S0FDckI7SUFFRCxPQUFPLEdBQUE7QUFDTCxRQUFBLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFdEIsUUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQzNCLE9BQU87QUFDUixTQUFBO0FBRUQsUUFBQSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUN2QyxRQUFBLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNoQyxRQUFBLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUVsQyxRQUFBLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQzVCLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDOUQsQ0FBQztRQUVGLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNoRCxTQUFBO2FBQU0sSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3JCLFlBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDcEQsU0FBQTtLQUNGO0lBRU8sVUFBVSxDQUNoQixJQUFVLEVBQ1YsTUFBZ0IsRUFDaEIsSUFBVSxFQUNWLEtBQWlCLEVBQ2pCLE1BQWMsRUFBQTtBQUVkLFFBQUEsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDNUIsUUFBQSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUVwQixRQUFBLE1BQU0sVUFBVSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQztBQUNqQixZQUFBLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDckIsWUFBQSxFQUFFLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzlELFNBQUEsQ0FBQyxDQUFDO0FBRUgsUUFBQSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDN0MsUUFBQSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUV4QixRQUFBLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUM3QztBQUVPLElBQUEscUJBQXFCLENBQUMsSUFBVSxFQUFFLE1BQWdCLEVBQUUsSUFBVSxFQUFBO0FBQ3BFLFFBQUEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNwRCxPQUFPO0FBQ1IsU0FBQTtBQUVELFFBQUEsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFFNUIsUUFBQSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVwRCxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTztBQUNSLFNBQUE7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RELE1BQU0sdUJBQXVCLEdBQzNCLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzNFLFFBQUEsTUFBTSwwQkFBMEIsR0FDOUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRTVELFFBQUEsSUFBSSxZQUFZLElBQUksdUJBQXVCLElBQUksMEJBQTBCLEVBQUU7QUFDekUsWUFBQSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUVwQixZQUFBLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNoQyxZQUFBLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBRTdDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO0FBQ25ELGdCQUFBLElBQUksQ0FBQyxjQUFjLENBQ2pCLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtBQUN2QixvQkFBQSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUNoRSxDQUFDO0FBQ0gsYUFBQTtBQUVELFlBQUEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ2pDLFlBQUEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ2pDLFlBQUEsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLFlBQUEsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFdkQsWUFBQSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQy9CLFlBQUEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV6QixZQUFBLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO0FBQ2xDLGdCQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsZ0JBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQixhQUFBO0FBRUQsWUFBQSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRTVCLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFNBQUE7S0FDRjtBQUNGOztNQzFHWSwwQkFBMEIsQ0FBQTtBQUNyQyxJQUFBLFdBQUEsQ0FDVSxNQUFnQixFQUNoQixRQUFrQixFQUNsQixXQUF3QixFQUN4QixrQkFBc0MsRUFBQTtRQUh0QyxJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBVTtRQUNoQixJQUFRLENBQUEsUUFBQSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixJQUFXLENBQUEsV0FBQSxHQUFYLFdBQVcsQ0FBYTtRQUN4QixJQUFrQixDQUFBLGtCQUFBLEdBQWxCLGtCQUFrQixDQUFvQjtRQW1CeEMsSUFBSyxDQUFBLEtBQUEsR0FBRyxNQUFLO0FBQ25CLFlBQUEsUUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixLQUFLLE9BQU87QUFDakQsZ0JBQUEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUM1QjtBQUNKLFNBQUMsQ0FBQztBQUVNLFFBQUEsSUFBQSxDQUFBLEdBQUcsR0FBRyxDQUFDLE1BQWdCLEtBQUk7QUFDakMsWUFBQSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQ3BDLENBQUMsSUFBSSxLQUFLLElBQUksZ0NBQWdDLENBQUMsSUFBSSxDQUFDLEVBQ3BELE1BQU0sQ0FDUCxDQUFDO0FBQ0osU0FBQyxDQUFDO0tBOUJFO0lBRUUsSUFBSSxHQUFBOztZQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQ2pDQSxXQUFNLENBQUMsRUFBRSxDQUFDO0FBQ1IsZ0JBQUE7QUFDRSxvQkFBQSxHQUFHLEVBQUUsV0FBVztvQkFDaEIsR0FBRyxFQUFFLHVCQUF1QixDQUFDO3dCQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7d0JBQ2pCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztxQkFDZCxDQUFDO0FBQ0gsaUJBQUE7QUFDRixhQUFBLENBQUMsQ0FDSCxDQUFDO1NBQ0gsQ0FBQSxDQUFBO0FBQUEsS0FBQTtJQUVLLE1BQU0sR0FBQTsrREFBSyxDQUFBLENBQUE7QUFBQSxLQUFBO0FBZWxCOztBQzdDRCxNQUFNLHVCQUF1QixHQUFHLDhCQUE4QixDQUFDO01BRWxELGlCQUFpQixDQUFBO0lBRzVCLFdBQ1UsQ0FBQSxRQUFrQixFQUNsQixnQkFBa0MsRUFBQTtRQURsQyxJQUFRLENBQUEsUUFBQSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixJQUFnQixDQUFBLGdCQUFBLEdBQWhCLGdCQUFnQixDQUFrQjtRQWVwQyxJQUFlLENBQUEsZUFBQSxHQUFHLE1BQUs7QUFDN0IsWUFBQSxNQUFNLFlBQVksR0FDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFO0FBQzdDLGdCQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7QUFDbEMsWUFBQSxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUV6RSxZQUFBLElBQUksWUFBWSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUN0RCxhQUFBO0FBRUQsWUFBQSxJQUFJLENBQUMsWUFBWSxJQUFJLE1BQU0sRUFBRTtnQkFDM0IsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDekQsYUFBQTtBQUNILFNBQUMsQ0FBQztLQTNCRTtJQUVFLElBQUksR0FBQTs7WUFDUixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBSztnQkFDckQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3hCLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDVixDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUssTUFBTSxHQUFBOztBQUNWLFlBQUEsYUFBYSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQzVDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1NBQ3pELENBQUEsQ0FBQTtBQUFBLEtBQUE7QUFnQkY7O01DckNZLGdCQUFnQixDQUFBO0FBSTNCLElBQUEsV0FBQSxDQUFvQixJQUFVLEVBQUE7UUFBVixJQUFJLENBQUEsSUFBQSxHQUFKLElBQUksQ0FBTTtRQUh0QixJQUFlLENBQUEsZUFBQSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFPLENBQUEsT0FBQSxHQUFHLEtBQUssQ0FBQztLQUVVO0lBRWxDLHFCQUFxQixHQUFBO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztLQUM3QjtJQUVELFlBQVksR0FBQTtRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztLQUNyQjtJQUVELE9BQU8sR0FBQTtBQUNMLFFBQUEsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztBQUV0QixRQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtZQUM5QixPQUFPO0FBQ1IsU0FBQTtRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUVwRCxRQUFBLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvRCxRQUFBLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUU3RCxRQUFBLElBQ0UsYUFBYSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSTtBQUNuQyxZQUFBLFdBQVcsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksRUFDL0I7QUFDQSxZQUFBLE9BQU8sS0FBSyxDQUFDO0FBQ2QsU0FBQTtBQUVELFFBQUEsSUFDRSxhQUFhLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxJQUFJO0FBQ3JDLFlBQUEsYUFBYSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsRUFBRTtBQUNqQyxZQUFBLFdBQVcsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLElBQUk7QUFDakMsWUFBQSxXQUFXLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxFQUFFLEVBQzdCO0FBQ0EsWUFBQSxPQUFPLEtBQUssQ0FBQztBQUNkLFNBQUE7QUFFRCxRQUFBLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0FBQ3ZDLFFBQUEsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLENBQUM7QUFDbEUsUUFBQSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztBQUVoRCxRQUFBLElBQ0UsYUFBYSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSTtBQUN0QyxZQUFBLFdBQVcsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksRUFDbEM7QUFDQSxZQUFBLE9BQU8sS0FBSyxDQUFDO0FBQ2QsU0FBQTtBQUVELFFBQUEsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDNUIsUUFBQSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUVwQixRQUFBLElBQ0UsYUFBYSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSTtBQUN4QyxZQUFBLGFBQWEsQ0FBQyxFQUFFLEtBQUssWUFBWSxDQUFDLEVBQUU7QUFDcEMsWUFBQSxXQUFXLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJO0FBQ3BDLFlBQUEsV0FBVyxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsRUFBRSxFQUNoQzs7QUFFQSxZQUFBLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLFNBQUE7QUFBTSxhQUFBOztBQUVMLFlBQUEsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEUsU0FBQTtBQUVELFFBQUEsT0FBTyxJQUFJLENBQUM7S0FDYjtBQUNGOztNQy9EWSw2QkFBNkIsQ0FBQTtBQUN4QyxJQUFBLFdBQUEsQ0FDVSxNQUFnQixFQUNoQixRQUFrQixFQUNsQixXQUF3QixFQUN4QixrQkFBc0MsRUFBQTtRQUh0QyxJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBVTtRQUNoQixJQUFRLENBQUEsUUFBQSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixJQUFXLENBQUEsV0FBQSxHQUFYLFdBQVcsQ0FBYTtRQUN4QixJQUFrQixDQUFBLGtCQUFBLEdBQWxCLGtCQUFrQixDQUFvQjtRQW9CeEMsSUFBSyxDQUFBLEtBQUEsR0FBRyxNQUFLO0FBQ25CLFlBQUEsUUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLDBCQUEwQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFDeEU7QUFDSixTQUFDLENBQUM7QUFFTSxRQUFBLElBQUEsQ0FBQSxHQUFHLEdBQUcsQ0FBQyxNQUFnQixLQUFJO0FBQ2pDLFlBQUEsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUNwQyxDQUFDLElBQUksS0FBSyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUNwQyxNQUFNLENBQ1AsQ0FBQztBQUNKLFNBQUMsQ0FBQztLQTlCRTtJQUVFLElBQUksR0FBQTs7WUFDUixJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUNqQ0EsV0FBTSxDQUFDLEVBQUUsQ0FBQztBQUNSLGdCQUFBO0FBQ0Usb0JBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixvQkFBQSxHQUFHLEVBQUUsS0FBSztvQkFDVixHQUFHLEVBQUUsdUJBQXVCLENBQUM7d0JBQzNCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzt3QkFDakIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO3FCQUNkLENBQUM7QUFDSCxpQkFBQTtBQUNGLGFBQUEsQ0FBQyxDQUNILENBQUM7U0FDSCxDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUssTUFBTSxHQUFBOytEQUFLLENBQUEsQ0FBQTtBQUFBLEtBQUE7QUFjbEI7O01DN0NZLDhCQUE4QixDQUFBO0FBR3pDLElBQUEsV0FBQSxDQUFvQixJQUFVLEVBQUE7UUFBVixJQUFJLENBQUEsSUFBQSxHQUFKLElBQUksQ0FBTTtBQUM1QixRQUFBLElBQUksQ0FBQyxnQ0FBZ0M7QUFDbkMsWUFBQSxJQUFJLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlDO0lBRUQscUJBQXFCLEdBQUE7QUFDbkIsUUFBQSxPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0tBQ3RFO0lBRUQsWUFBWSxHQUFBO0FBQ1YsUUFBQSxPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQUM3RDtJQUVELE9BQU8sR0FBQTtBQUNMLFFBQUEsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztBQUV0QixRQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDM0IsT0FBTztBQUNSLFNBQUE7QUFFRCxRQUFBLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0FBQ3ZDLFFBQUEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ2hDLFFBQUEsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBRWxDLFFBQUEsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FDNUIsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUMxRCxDQUFDO0FBRUYsUUFBQSxJQUFJLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUMvQixZQUFBLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUMzQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDYixPQUFPO0FBQ1IsYUFBQTtZQUNELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQztBQUN4RCxZQUFBLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNqRCxTQUFBO2FBQU0sSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3RCLFlBQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNDLFlBQUEsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ2pELFNBQUE7S0FDRjtBQUNGOztNQ3BDWSx1QkFBdUIsQ0FBQTtBQUNsQyxJQUFBLFdBQUEsQ0FDVSxNQUFnQixFQUNoQixRQUFrQixFQUNsQixXQUF3QixFQUN4QixrQkFBc0MsRUFBQTtRQUh0QyxJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBVTtRQUNoQixJQUFRLENBQUEsUUFBQSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixJQUFXLENBQUEsV0FBQSxHQUFYLFdBQVcsQ0FBYTtRQUN4QixJQUFrQixDQUFBLGtCQUFBLEdBQWxCLGtCQUFrQixDQUFvQjtRQW1CeEMsSUFBSyxDQUFBLEtBQUEsR0FBRyxNQUFLO0FBQ25CLFlBQUEsUUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixLQUFLLE9BQU87QUFDakQsZ0JBQUEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUM1QjtBQUNKLFNBQUMsQ0FBQztBQUVNLFFBQUEsSUFBQSxDQUFBLEdBQUcsR0FBRyxDQUFDLE1BQWdCLEtBQUk7QUFDakMsWUFBQSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQ3BDLENBQUMsSUFBSSxLQUFLLElBQUksOEJBQThCLENBQUMsSUFBSSxDQUFDLEVBQ2xELE1BQU0sQ0FDUCxDQUFDO0FBQ0osU0FBQyxDQUFDO0tBOUJFO0lBRUUsSUFBSSxHQUFBOztZQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQ2pDQSxXQUFNLENBQUMsRUFBRSxDQUFDO0FBQ1IsZ0JBQUE7QUFDRSxvQkFBQSxHQUFHLEVBQUUsUUFBUTtvQkFDYixHQUFHLEVBQUUsdUJBQXVCLENBQUM7d0JBQzNCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzt3QkFDakIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO3FCQUNkLENBQUM7QUFDSCxpQkFBQTtBQUNGLGFBQUEsQ0FBQyxDQUNILENBQUM7U0FDSCxDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUssTUFBTSxHQUFBOytEQUFLLENBQUEsQ0FBQTtBQUFBLEtBQUE7QUFlbEI7O01DeENZLDJCQUEyQixDQUFBO0lBSXRDLFdBQ1UsQ0FBQSxJQUFVLEVBQ1YsVUFBZ0IsRUFDaEIsV0FBaUIsRUFDakIsV0FBMEMsRUFDMUMsa0JBQTBCLEVBQUE7UUFKMUIsSUFBSSxDQUFBLElBQUEsR0FBSixJQUFJLENBQU07UUFDVixJQUFVLENBQUEsVUFBQSxHQUFWLFVBQVUsQ0FBTTtRQUNoQixJQUFXLENBQUEsV0FBQSxHQUFYLFdBQVcsQ0FBTTtRQUNqQixJQUFXLENBQUEsV0FBQSxHQUFYLFdBQVcsQ0FBK0I7UUFDMUMsSUFBa0IsQ0FBQSxrQkFBQSxHQUFsQixrQkFBa0IsQ0FBUTtRQVI1QixJQUFlLENBQUEsZUFBQSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFPLENBQUEsT0FBQSxHQUFHLEtBQUssQ0FBQztLQVFwQjtJQUVKLHFCQUFxQixHQUFBO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztLQUM3QjtJQUVELFlBQVksR0FBQTtRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztLQUNyQjtJQUVELE9BQU8sR0FBQTtBQUNMLFFBQUEsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDeEMsT0FBTztBQUNSLFNBQUE7QUFFRCxRQUFBLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBQzVCLFFBQUEsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFFcEIsUUFBQSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ3BCLFFBQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNqQyxRQUFBLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QztJQUVPLHFCQUFxQixHQUFBO1FBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBRTlDLFFBQUEsTUFBTSxLQUFLLEdBQUc7QUFDWixZQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxJQUFJO0FBQy9DLFlBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLElBQUk7QUFDNUMsWUFBQSxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLENBQUMsSUFBSTtBQUNoRCxZQUFBLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJO1NBQzlDLENBQUM7UUFDRixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDekMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBRXZDLFFBQUEsSUFBSSxVQUFVLEdBQUcsYUFBYSxJQUFJLFVBQVUsR0FBRyxXQUFXLEVBQUU7QUFDMUQsWUFBQSxPQUFPLElBQUksQ0FBQztBQUNiLFNBQUE7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3JDLFFBQUEsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0QsUUFBQSxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUM5RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7UUFDcEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxlQUFlLENBQUMsRUFBRSxDQUFDO0FBRTlDLFFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7S0FDekM7SUFFTyxRQUFRLEdBQUE7QUFDZCxRQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV6RCxRQUFRLElBQUksQ0FBQyxXQUFXO0FBQ3RCLFlBQUEsS0FBSyxRQUFRO0FBQ1gsZ0JBQUEsSUFBSSxDQUFDLFdBQVc7QUFDYixxQkFBQSxTQUFTLEVBQUU7cUJBQ1gsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNoRCxNQUFNO0FBRVIsWUFBQSxLQUFLLE9BQU87QUFDVixnQkFBQSxJQUFJLENBQUMsV0FBVztBQUNiLHFCQUFBLFNBQVMsRUFBRTtxQkFDWCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQy9DLE1BQU07QUFFUixZQUFBLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQy9DLE1BQU07QUFDVCxTQUFBO0tBQ0Y7SUFFTyxZQUFZLEdBQUE7UUFDbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0FBQ3ZELFFBQUEsTUFBTSxTQUFTLEdBQ2IsSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRO2NBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCO0FBQ2pFLGNBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQzdDO0FBRU8sSUFBQSxhQUFhLENBQUMsWUFBMEIsRUFBQTtBQUM5QyxRQUFBLElBQUksWUFBWSxFQUFFO1lBQ2hCLE1BQU0sZUFBZSxHQUNuQixZQUFZLENBQUMsVUFBVSxDQUFDLHdCQUF3QixFQUFFLENBQUM7QUFFckQsWUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztBQUN0QixnQkFBQSxJQUFJLEVBQUUsZUFBZSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsUUFBUTtBQUNsRCxnQkFBQSxFQUFFLEVBQUUsZUFBZSxDQUFDLEVBQUUsR0FBRyxZQUFZLENBQUMsTUFBTTtBQUM3QyxhQUFBLENBQUMsQ0FBQztBQUNKLFNBQUE7QUFBTSxhQUFBOzs7QUFHTCxZQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFLFNBQUE7S0FDRjtBQUNGOztBQ3JHRCxNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQztNQUU1QixXQUFXLENBQUE7SUFNdEIsV0FDVSxDQUFBLE1BQWdCLEVBQ2hCLFFBQWtCLEVBQ2xCLFNBQTJCLEVBQzNCLE1BQWMsRUFDZCxrQkFBc0MsRUFBQTtRQUp0QyxJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBVTtRQUNoQixJQUFRLENBQUEsUUFBQSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixJQUFTLENBQUEsU0FBQSxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVE7UUFDZCxJQUFrQixDQUFBLGtCQUFBLEdBQWxCLGtCQUFrQixDQUFvQjtRQVJ4QyxJQUFRLENBQUEsUUFBQSxHQUFvQyxJQUFJLENBQUM7UUFDakQsSUFBSyxDQUFBLEtBQUEsR0FBNEIsSUFBSSxDQUFDO1FBc0V0QyxJQUFvQixDQUFBLG9CQUFBLEdBQUcsTUFBSztZQUNsQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtnQkFDekIsT0FBTztBQUNSLGFBQUE7QUFFRCxZQUFBLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUU7Z0JBQzdCLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN6QyxhQUFBO0FBQU0saUJBQUE7Z0JBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzVDLGFBQUE7QUFDSCxTQUFDLENBQUM7QUFFTSxRQUFBLElBQUEsQ0FBQSxlQUFlLEdBQUcsQ0FBQyxDQUFhLEtBQUk7WUFDMUMsSUFDRSxDQUFDLGtCQUFrQixFQUFFO0FBQ3JCLGdCQUFBLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXO0FBQzFCLGdCQUFBLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUNuQjtnQkFDQSxPQUFPO0FBQ1IsYUFBQTtZQUVELE1BQU0sSUFBSSxHQUFHLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxNQUFxQixDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPO0FBQ1IsYUFBQTtZQUVELENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNuQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7WUFFcEIsSUFBSSxDQUFDLFFBQVEsR0FBRztnQkFDZCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ04sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNOLElBQUk7YUFDTCxDQUFDO0FBQ0osU0FBQyxDQUFDO0FBRU0sUUFBQSxJQUFBLENBQUEsZUFBZSxHQUFHLENBQUMsQ0FBYSxLQUFJO1lBQzFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQ3RCLGFBQUE7WUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLGFBQUE7QUFDSCxTQUFDLENBQUM7UUFFTSxJQUFhLENBQUEsYUFBQSxHQUFHLE1BQUs7WUFDM0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ2pCLGdCQUFBLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3RCLGFBQUE7WUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ3JCLGFBQUE7QUFDSCxTQUFDLENBQUM7QUFFTSxRQUFBLElBQUEsQ0FBQSxhQUFhLEdBQUcsQ0FBQyxDQUFnQixLQUFJO1lBQzNDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDckMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3ZCLGFBQUE7QUFDSCxTQUFDLENBQUM7S0F4SEU7SUFFRSxJQUFJLEdBQUE7O0FBQ1IsWUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDO2dCQUNsQyx1QkFBdUI7Z0JBQ3ZCLHVCQUF1QjtBQUN4QixhQUFBLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQixDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUssTUFBTSxHQUFBOztZQUNWLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztTQUM3QixDQUFBLENBQUE7QUFBQSxLQUFBO0lBRU8sbUJBQW1CLEdBQUE7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7S0FDN0I7SUFFTyxvQkFBb0IsR0FBQTtRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4RCxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDNUM7SUFFTyxjQUFjLEdBQUE7UUFDcEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNoRCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDMUM7SUFFTyxjQUFjLEdBQUE7UUFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3pDLFFBQUEsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDNUIsUUFBQSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztLQUN0QjtJQUVPLGlCQUFpQixHQUFBO1FBQ3ZCLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtBQUMzRCxZQUFBLE9BQU8sRUFBRSxJQUFJO0FBQ2QsU0FBQSxDQUFDLENBQUM7UUFDSCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3RCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUMxRDtJQUVPLG9CQUFvQixHQUFBO1FBQzFCLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtBQUM5RCxZQUFBLE9BQU8sRUFBRSxJQUFJO0FBQ2QsU0FBQSxDQUFDLENBQUM7UUFDSCxRQUFRLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNoRSxRQUFRLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM1RCxRQUFRLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUM3RDtJQThETyxhQUFhLEdBQUE7UUFDbkIsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUNyQyxRQUFBLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXJCLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QyxRQUFBLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0QsUUFBQSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QyxRQUFBLE1BQU0sS0FBSyxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFN0QsUUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQzVCLE9BQU87QUFDUixTQUFBO0FBRUQsUUFBQSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztLQUMvQjtJQUVPLHFCQUFxQixDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUE7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0tBQ3JCO0lBRU8sY0FBYyxHQUFBO0FBQ3BCLFFBQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQUNyQjtJQUVPLFlBQVksR0FBQTtRQUNsQixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ3BCLFFBQUEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7S0FDbkI7SUFFTyxZQUFZLEdBQUE7QUFDbEIsUUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDM0IsT0FBTztBQUNSLFNBQUE7QUFFRCxRQUFBLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDdkIsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztBQUVsRCxRQUFBLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztBQUNsRSxRQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQy9CLFlBQUEsSUFBSUMsZUFBTSxDQUNSLENBQUEsbUVBQUEsQ0FBcUUsRUFDckUsSUFBSSxDQUNMLENBQUM7WUFDRixPQUFPO0FBQ1IsU0FBQTtBQUVELFFBQUEsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDMUIsSUFBSSxFQUNKLElBQUksMkJBQTJCLENBQzdCLElBQUksRUFDSixJQUFJLEVBQ0osV0FBVyxDQUFDLFdBQVcsRUFDdkIsV0FBVyxDQUFDLFdBQVcsRUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxDQUN2QyxFQUNELE1BQU0sQ0FDUCxDQUFDO0tBQ0g7SUFFTyxzQkFBc0IsR0FBQTtBQUM1QixRQUFBLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDdkIsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRXJDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNqQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDdEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUMsSUFBSSxDQUFDO1FBQzVELEtBQUssSUFBSSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDekMsWUFBQSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEQsU0FBQTtRQUNELElBQUksQ0FBQyxRQUFRLENBQUM7WUFDWixPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLFNBQUEsQ0FBQyxDQUFDO1FBRUgsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7S0FDekQ7SUFFTyx5QkFBeUIsR0FBQTtRQUMvQixRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUUzRCxRQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUN2QixZQUFBLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN6QixTQUFBLENBQUMsQ0FBQztLQUNKO0lBRU8sWUFBWSxHQUFBO0FBQ2xCLFFBQUEsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztRQUN2QixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFFNUMsUUFBQSxNQUFNLFNBQVMsR0FDYixXQUFXLENBQUMsV0FBVyxLQUFLLFFBQVE7Y0FDaEMsV0FBVyxDQUFDLFdBQVc7QUFDekIsY0FBRSxXQUFXLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQzFDLFFBQUEsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUVuRCxRQUFBO1lBQ0UsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXO2lCQUN4QixXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQzlDLENBQUM7WUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3RDLFlBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQ2pELFlBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQzFDLFNBQUE7QUFFRCxRQUFBO0FBQ0UsWUFBQSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDbkMsWUFBQSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztBQUN4QyxZQUFBLE1BQU0sS0FBSyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDbEMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLFlBQUEsTUFBTSxTQUFTLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQztBQUM1QyxZQUFBLE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsQ0FDNUQsZ0JBQWdCLENBQ2pCLENBQUM7WUFFRixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQSxFQUFHLEtBQUssQ0FBQSxFQUFBLENBQUksQ0FBQztZQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQSxDQUFBLEVBQUksS0FBSyxDQUFBLEVBQUEsQ0FBSSxDQUFDO0FBQ3RELFlBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLENBQXlELHNEQUFBLEVBQUEsS0FBSyxDQUFrSCwrR0FBQSxFQUFBLEtBQUssb0NBQW9DLEtBQUssQ0FBQSxxREFBQSxFQUF3RCxTQUFTLENBQU0sR0FBQSxFQUFBLFdBQVcseUJBQXlCLENBQUM7QUFDeFgsU0FBQTtBQUVELFFBQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQ3ZCLFlBQUEsT0FBTyxFQUFFO2dCQUNQLFFBQVEsQ0FBQyxFQUFFLENBQ1QsbUJBQW1CO0FBQ2pCLHNCQUFFLElBQUk7QUFDTixzQkFBRSxNQUFNLENBQUMsV0FBVyxDQUFDO0FBQ2pCLHdCQUFBLElBQUksRUFBRSxTQUFTLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxJQUFJO0FBQy9DLHdCQUFBLEVBQUUsRUFBRSxDQUFDO0FBQ04scUJBQUEsQ0FBQyxDQUNQO0FBQ0YsYUFBQTtBQUNGLFNBQUEsQ0FBQyxDQUFDO0tBQ0o7SUFFTyxZQUFZLEdBQUE7UUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztLQUN0QztBQUNGLENBQUE7QUFpQkQsTUFBTSxnQkFBZ0IsQ0FBQTtBQU1wQixJQUFBLFdBQUEsQ0FDa0IsSUFBZ0IsRUFDaEIsTUFBZ0IsRUFDaEIsSUFBVSxFQUNWLElBQVUsRUFBQTtRQUhWLElBQUksQ0FBQSxJQUFBLEdBQUosSUFBSSxDQUFZO1FBQ2hCLElBQU0sQ0FBQSxNQUFBLEdBQU4sTUFBTSxDQUFVO1FBQ2hCLElBQUksQ0FBQSxJQUFBLEdBQUosSUFBSSxDQUFNO1FBQ1YsSUFBSSxDQUFBLElBQUEsR0FBSixJQUFJLENBQU07QUFUcEIsUUFBQSxJQUFBLENBQUEsWUFBWSxHQUE2QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3BELElBQVcsQ0FBQSxXQUFBLEdBQWdCLElBQUksQ0FBQztRQUNoQyxJQUFXLENBQUEsV0FBQSxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFRLENBQUEsUUFBQSxHQUFHLENBQUMsQ0FBQztRQVFsQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztLQUMxQjtJQUVELGVBQWUsR0FBQTtRQUNiLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDL0M7SUFFRCxlQUFlLEdBQUE7QUFDYixRQUFBLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0tBQ25DO0lBRUQsMkJBQTJCLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBQTtBQUM5QyxRQUFBLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRTlCLFFBQUEsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBRTVDLFFBQUEsS0FBSyxNQUFNLENBQUMsSUFBSSxZQUFZLEVBQUU7QUFDNUIsWUFBQSxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRTFCLFlBQUEsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUUxRCxZQUFBLE1BQU0saUJBQWlCLEdBQ3JCLENBQUMsQ0FBQyxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsQ0FBQyxXQUFXLEtBQUssUUFBUSxDQUFDO1lBQzFELE1BQU0sSUFBSSxHQUFHLGlCQUFpQjtBQUM1QixrQkFBRSxXQUFXLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxJQUFJO0FBQ25ELGtCQUFFLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLElBQUksQ0FBQztBQUNoRCxZQUFBLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Z0JBQ2pDLElBQUk7QUFDSixnQkFBQSxFQUFFLEVBQUUsQ0FBQztBQUNOLGFBQUEsQ0FBQyxDQUFDO0FBRUgsWUFBQSxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBRTFDLFlBQUEsSUFBSSxpQkFBaUIsRUFBRTtnQkFDckIsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUMzQyxhQUFBOztBQUdELFlBQUEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDWixTQUFBO1FBRUQsTUFBTSxjQUFjLEdBQUcsWUFBWTtBQUNoQyxhQUFBLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN6RCxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFFZixNQUFNLG9CQUFvQixHQUFHLFlBQVksQ0FBQyxNQUFNLENBQzlDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQzdDLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQjtBQUNwQyxhQUFBLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzRCxhQUFBLEtBQUssRUFBRSxDQUFDO0tBQ1o7QUFFTyxJQUFBLGNBQWMsQ0FBQyxDQUFjLEVBQUE7QUFDbkMsUUFBQSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBQSxFQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUNsRDtJQUVPLG1CQUFtQixHQUFBO0FBQ3pCLFFBQUEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFhLEtBQUk7QUFDOUIsWUFBQSxLQUFLLE1BQU0sV0FBVyxJQUFJLEtBQUssRUFBRTtnQkFDL0IsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLHdCQUF3QixFQUFFLENBQUMsSUFBSSxDQUFDO2dCQUMvRCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBRXhFLGdCQUFBLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFFckMsSUFBSSxDQUFDLGNBQWMsQ0FBQztBQUNsQixvQkFBQSxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsS0FBSztBQUNMLG9CQUFBLElBQUksRUFBRSxDQUFDO0FBQ1Asb0JBQUEsR0FBRyxFQUFFLENBQUM7b0JBQ04sV0FBVztBQUNYLG9CQUFBLFdBQVcsRUFBRSxRQUFRO0FBQ3RCLGlCQUFBLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsY0FBYyxDQUFDO0FBQ2xCLG9CQUFBLElBQUksRUFBRSxTQUFTO29CQUNmLEtBQUs7QUFDTCxvQkFBQSxJQUFJLEVBQUUsQ0FBQztBQUNQLG9CQUFBLEdBQUcsRUFBRSxDQUFDO29CQUNOLFdBQVc7QUFDWCxvQkFBQSxXQUFXLEVBQUUsT0FBTztBQUNyQixpQkFBQSxDQUFDLENBQUM7QUFFSCxnQkFBQSxJQUFJLFdBQVcsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFO29CQUM3QixTQUFTO0FBQ1YsaUJBQUE7QUFFRCxnQkFBQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQztBQUNsQix3QkFBQSxJQUFJLEVBQUUsU0FBUzt3QkFDZixLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUM7QUFDaEIsd0JBQUEsSUFBSSxFQUFFLENBQUM7QUFDUCx3QkFBQSxHQUFHLEVBQUUsQ0FBQzt3QkFDTixXQUFXO0FBQ1gsd0JBQUEsV0FBVyxFQUFFLFFBQVE7QUFDdEIscUJBQUEsQ0FBQyxDQUFDO0FBQ0osaUJBQUE7QUFBTSxxQkFBQTtBQUNMLG9CQUFBLEtBQUssQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUNsQyxpQkFBQTtBQUNGLGFBQUE7QUFDSCxTQUFDLENBQUM7UUFFRixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0tBQ2hDO0lBRU8sb0JBQW9CLEdBQUE7QUFDMUIsUUFBQSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztLQUN0RDtJQUVPLGlCQUFpQixHQUFBO0FBQ3ZCLFFBQUEsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztBQUV0QixRQUFBLE1BQU0sWUFBWSxHQUFHQyxxQkFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUVDLHNCQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFekUsUUFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzlDLFlBQUEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXBDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUU7QUFDdEMsZ0JBQUEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUMsZ0JBQUEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2hDLE9BQU87QUFDUixhQUFBO0FBQ0YsU0FBQTtBQUVELFFBQUEsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUdBLHNCQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3hFO0FBQ0YsQ0FBQTtBQUVELE1BQU0sVUFBVSxHQUFHQyxpQkFBVyxDQUFDLE1BQU0sQ0FBVztJQUM5QyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxLQUFLLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRCxDQUFBLENBQUMsQ0FBQztBQUVILE1BQU0sUUFBUSxHQUFHQSxpQkFBVyxDQUFDLE1BQU0sQ0FBZ0I7SUFDakQsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sTUFBTSxJQUFJLEtBQUssSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3BFLENBQUEsQ0FBQyxDQUFDO0FBRUgsTUFBTSxRQUFRLEdBQUdBLGlCQUFXLENBQUMsTUFBTSxFQUFRLENBQUM7QUFFNUMsTUFBTSxzQkFBc0IsR0FBR0MsZUFBVSxDQUFDLElBQUksQ0FBQztBQUM3QyxJQUFBLEtBQUssRUFBRSwrQkFBK0I7QUFDdkMsQ0FBQSxDQUFDLENBQUM7QUFFSCxNQUFNLHNCQUFzQixHQUFHQSxlQUFVLENBQUMsSUFBSSxDQUFDO0FBQzdDLElBQUEsS0FBSyxFQUFFLCtCQUErQjtBQUN2QyxDQUFBLENBQUMsQ0FBQztBQUVILE1BQU0sdUJBQXVCLEdBQUdDLGdCQUFVLENBQUMsTUFBTSxDQUFnQjtBQUMvRCxJQUFBLE1BQU0sRUFBRSxNQUFNRCxlQUFVLENBQUMsSUFBSTtBQUU3QixJQUFBLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUk7UUFDdkIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRXBDLFFBQUEsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFO0FBQzFCLFlBQUEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ3BCLGdCQUFBLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO29CQUN6QixHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1RCxpQkFBQSxDQUFDLENBQUM7QUFDSixhQUFBO0FBRUQsWUFBQSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDbEIsZ0JBQUEsUUFBUSxHQUFHQSxlQUFVLENBQUMsSUFBSSxDQUFDO0FBQzVCLGFBQUE7QUFDRixTQUFBO0FBRUQsUUFBQSxPQUFPLFFBQVEsQ0FBQztLQUNqQjtBQUVELElBQUEsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLRSxlQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQSxDQUFDLENBQUM7QUFFSCxNQUFNLHVCQUF1QixHQUFHRCxnQkFBVSxDQUFDLE1BQU0sQ0FBZ0I7QUFDL0QsSUFBQSxNQUFNLEVBQUUsTUFBTUQsZUFBVSxDQUFDLElBQUk7QUFFN0IsSUFBQSxNQUFNLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEtBQUk7UUFDL0IsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVwRCxRQUFBLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRTtBQUMxQixZQUFBLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDbEIsZ0JBQWdCO29CQUNkLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSTswQkFDWkEsZUFBVSxDQUFDLElBQUk7QUFDakIsMEJBQUVBLGVBQVUsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEUsYUFBQTtBQUVELFlBQUEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQ2xCLGdCQUFBLGdCQUFnQixHQUFHQSxlQUFVLENBQUMsSUFBSSxDQUFDO0FBQ3BDLGFBQUE7QUFDRixTQUFBO0FBRUQsUUFBQSxPQUFPLGdCQUFnQixDQUFDO0tBQ3pCO0FBRUQsSUFBQSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUtFLGVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFBLENBQUMsQ0FBQztBQUVILFNBQVMsNEJBQTRCLENBQUMsQ0FBYyxFQUFBO0lBQ2xELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUU7QUFDOUMsUUFBQSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztBQUNyQixLQUFBO0lBRUQsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUNOLFFBQUEsT0FBTyxJQUFJLENBQUM7QUFDYixLQUFBO0FBRUQsSUFBQSxPQUFPQSxlQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxDQUFhLEVBQUE7QUFDcEMsSUFBQSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBcUIsQ0FBQztBQUVqQyxJQUFBLE9BQU8sRUFBRSxFQUFFO0FBQ1QsUUFBQSxJQUNFLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDO0FBQzNDLFlBQUEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUM7QUFDMUMsWUFBQSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxFQUNoRDtBQUNBLFlBQUEsT0FBTyxJQUFJLENBQUM7QUFDYixTQUFBO0FBRUQsUUFBQSxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztBQUN2QixLQUFBO0FBRUQsSUFBQSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxDQUFPLEVBQUUsQ0FBTyxFQUFBO0lBQ25DLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBRTNDLElBQUEsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUM1RCxRQUFBLE9BQU8sS0FBSyxDQUFDO0FBQ2QsS0FBQTtJQUVELE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNqQyxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsR0FBQTtJQUN6QixPQUFPQyxpQkFBUSxDQUFDLFNBQVMsQ0FBQztBQUM1Qjs7TUNsakJhLDRCQUE0QixDQUFBO0FBSXZDLElBQUEsV0FBQSxDQUFvQixJQUFVLEVBQUE7UUFBVixJQUFJLENBQUEsSUFBQSxHQUFKLElBQUksQ0FBTTtRQUh0QixJQUFlLENBQUEsZUFBQSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFPLENBQUEsT0FBQSxHQUFHLEtBQUssQ0FBQztLQUVVO0lBRWxDLHFCQUFxQixHQUFBO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztLQUM3QjtJQUVELFlBQVksR0FBQTtRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztLQUNyQjtJQUVELE9BQU8sR0FBQTtBQUNMLFFBQUEsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztBQUV0QixRQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDM0IsT0FBTztBQUNSLFNBQUE7QUFFRCxRQUFBLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUVoQyxRQUFBLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0FBQ3ZDLFFBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNwQixPQUFPO0FBQ1IsU0FBQTtBQUVELFFBQUEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFbkQsUUFBQSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRTtBQUNuQyxZQUFBLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLFlBQUEsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDNUIsWUFBQSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ2xDLFNBQUE7S0FDRjtBQUNGOztNQ3JDWSwyQkFBMkIsQ0FBQTtBQUl0QyxJQUFBLFdBQUEsQ0FBb0IsSUFBVSxFQUFBO1FBQVYsSUFBSSxDQUFBLElBQUEsR0FBSixJQUFJLENBQU07UUFIdEIsSUFBZSxDQUFBLGVBQUEsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBTyxDQUFBLE9BQUEsR0FBRyxLQUFLLENBQUM7S0FFVTtJQUVsQyxxQkFBcUIsR0FBQTtRQUNuQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7S0FDN0I7SUFFRCxZQUFZLEdBQUE7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7S0FDckI7SUFFRCxPQUFPLEdBQUE7QUFDTCxRQUFBLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFdEIsUUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQzNCLE9BQU87QUFDUixTQUFBO0FBRUQsUUFBQSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDaEMsUUFBQSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUN2QyxRQUFBLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDO1FBQ2xFLE1BQU0sVUFBVSxHQUNkLFlBQVksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUk7Y0FDN0IsWUFBWSxDQUFDLEVBQUU7QUFDakIsY0FBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBRW5DLFFBQUEsSUFBSSxNQUFNLENBQUMsRUFBRSxHQUFHLFVBQVUsRUFBRTtBQUMxQixZQUFBLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLFlBQUEsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQztnQkFDakIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO0FBQ2pCLGdCQUFBLEVBQUUsRUFBRSxVQUFVO0FBQ2YsYUFBQSxDQUFDLENBQUM7QUFDSixTQUFBO0tBQ0Y7QUFDRjs7TUM3QlksaUNBQWlDLENBQUE7QUFDNUMsSUFBQSxXQUFBLENBQ1UsTUFBZ0IsRUFDaEIsUUFBa0IsRUFDbEIsTUFBYyxFQUNkLGtCQUFzQyxFQUFBO1FBSHRDLElBQU0sQ0FBQSxNQUFBLEdBQU4sTUFBTSxDQUFVO1FBQ2hCLElBQVEsQ0FBQSxRQUFBLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLElBQU0sQ0FBQSxNQUFBLEdBQU4sTUFBTSxDQUFRO1FBQ2QsSUFBa0IsQ0FBQSxrQkFBQSxHQUFsQixrQkFBa0IsQ0FBb0I7QUFXeEMsUUFBQSxJQUFBLENBQUEsbUJBQW1CLEdBQUcsQ0FBQyxFQUFlLEtBQVU7QUFDdEQsWUFBQSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLEtBQUssT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRTtBQUN0RSxnQkFBQSxPQUFPLElBQUksQ0FBQztBQUNiLGFBQUE7WUFFRCxNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFakQsVUFBVSxDQUFDLE1BQUs7QUFDZCxnQkFBQSxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdEMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUVOLFlBQUEsT0FBTyxJQUFJLENBQUM7QUFDZCxTQUFDLENBQUM7QUFFTSxRQUFBLElBQUEsQ0FBQSx1QkFBdUIsR0FBRyxDQUFDLE1BQWdCLEtBQUk7WUFDckQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFdkMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPO0FBQ1IsYUFBQTtBQUVELFlBQUE7Z0JBQ0UsTUFBTSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDNUQsSUFBSSxFQUNKLElBQUksNEJBQTRCLENBQUMsSUFBSSxDQUFDLEVBQ3RDLE1BQU0sQ0FDUCxDQUFDO0FBRUYsZ0JBQUEsSUFBSSxxQkFBcUIsRUFBRTtvQkFDekIsT0FBTztBQUNSLGlCQUFBO0FBQ0YsYUFBQTtBQUVELFlBQUEsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDMUIsSUFBSSxFQUNKLElBQUksMkJBQTJCLENBQUMsSUFBSSxDQUFDLEVBQ3JDLE1BQU0sQ0FDUCxDQUFDO0FBQ0osU0FBQyxDQUFDO0tBaERFO0lBRUUsSUFBSSxHQUFBOztBQUNSLFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FDakNDLGlCQUFXLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUM3RCxDQUFDO1NBQ0gsQ0FBQSxDQUFBO0FBQUEsS0FBQTtJQUVLLE1BQU0sR0FBQTsrREFBSyxDQUFBLENBQUE7QUFBQSxLQUFBO0FBeUNsQjs7QUNwRU0sTUFBTSxVQUFVLEdBQUcsc0JBQXNCOztBQ0ExQyxTQUFVLDBCQUEwQixDQUFDLElBQVksRUFBQTtBQUNyRCxJQUFBLE9BQU8sSUFBSSxLQUFLLEVBQUUsSUFBSSxJQUFJLEtBQUssTUFBTSxDQUFDO0FBQ3hDOztNQ1FhLGFBQWEsQ0FBQTtBQUl4QixJQUFBLFdBQUEsQ0FDVSxJQUFVLEVBQ1Ysa0JBQTBCLEVBQzFCLFlBQTBCLEVBQUE7UUFGMUIsSUFBSSxDQUFBLElBQUEsR0FBSixJQUFJLENBQU07UUFDVixJQUFrQixDQUFBLGtCQUFBLEdBQWxCLGtCQUFrQixDQUFRO1FBQzFCLElBQVksQ0FBQSxZQUFBLEdBQVosWUFBWSxDQUFjO1FBTjVCLElBQWUsQ0FBQSxlQUFBLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQU8sQ0FBQSxPQUFBLEdBQUcsS0FBSyxDQUFDO0tBTXBCO0lBRUoscUJBQXFCLEdBQUE7UUFDbkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0tBQzdCO0lBRUQsWUFBWSxHQUFBO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0tBQ3JCO0lBRUQsT0FBTyxHQUFBO0FBQ0wsUUFBQSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRXRCLFFBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO1lBQzlCLE9BQU87QUFDUixTQUFBO0FBRUQsUUFBQSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDdEMsUUFBQSxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQy9ELE9BQU87QUFDUixTQUFBO0FBRUQsUUFBQSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUN2QyxRQUFBLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUVsQyxRQUFBLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25FLE9BQU87QUFDUixTQUFBO0FBRUQsUUFBQSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDaEMsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkUsSUFBSSxNQUFNLENBQUMsRUFBRSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ3ZDLE9BQU87QUFDUixTQUFBO0FBRUQsUUFBQSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQ3pDLENBQUMsR0FBRyxFQUFFLElBQUksS0FBSTtZQUNaLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDaEMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLGFBQUE7aUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9ELGdCQUFBLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzRCxnQkFBQSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QixnQkFBQSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQixhQUFBO2lCQUFNLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDdkMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLGFBQUE7QUFFRCxZQUFBLE9BQU8sR0FBRyxDQUFDO0FBQ2IsU0FBQyxFQUNEO0FBQ0UsWUFBQSxRQUFRLEVBQUUsRUFBRTtBQUNaLFlBQUEsUUFBUSxFQUFFLEVBQUU7QUFDYixTQUFBLENBQ0YsQ0FBQztBQUVGLFFBQUEsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0saUJBQWlCLEdBQ3JCLGlCQUFpQixHQUFHLENBQUMsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXZELFFBQUEsSUFBSSxpQkFBaUIsRUFBRTtZQUNyQixPQUFPO0FBQ1IsU0FBQTtBQUVELFFBQUEsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDNUIsUUFBQSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUVwQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ25ELFFBQUEsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQy9CLFNBQVM7WUFDUCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJO0FBQzNELFlBQUEsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUMzRCxDQUFDO0FBRUYsUUFBQSxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNwQyxRQUFBLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUN4QyxRQUFBLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0FBQzVDLFFBQUEsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUV6RSxRQUFBLE1BQU0sWUFBWSxHQUNoQixpQkFBaUIsS0FBSyxXQUFXLElBQUksQ0FBQyxhQUFhLElBQUksU0FBUyxDQUFDLENBQUM7UUFFcEUsTUFBTSxNQUFNLEdBQUcsWUFBWTtBQUN6QixjQUFFLFdBQVc7a0JBQ1QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixFQUFFO2tCQUMxQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCO0FBQ3ZELGNBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFFOUIsUUFBQSxNQUFNLE1BQU0sR0FDVixZQUFZLElBQUksV0FBVztjQUN2QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ25DLGNBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBRXZCLFFBQUEsTUFBTSxnQkFBZ0IsR0FDcEIsWUFBWSxJQUFJLFdBQVc7Y0FDdkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixFQUFFO0FBQzdDLGNBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7QUFFakMsUUFBQSxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFM0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQ3RCLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFDZCxNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDTixnQkFBZ0IsRUFDaEIsTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFDekIsS0FBSyxDQUNOLENBQUM7QUFFRixRQUFBLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztBQUM5QyxZQUFBLEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFO0FBQzNCLGdCQUFBLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkIsYUFBQTtBQUNGLFNBQUE7QUFFRCxRQUFBLElBQUksWUFBWSxFQUFFO0FBQ2hCLFlBQUEsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1QixTQUFBO0FBQU0sYUFBQTtBQUNMLFlBQUEsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUNoQyxnQkFBQSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDcEMsZ0JBQUEsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRLEVBQUU7QUFDNUIsb0JBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixvQkFBQSxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLGlCQUFBO0FBQ0YsYUFBQTtZQUVELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzFDLFNBQUE7QUFFRCxRQUFBLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFNUIsUUFBQSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUN4RCxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ2pCLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSTtBQUN2QixZQUFBLEVBQUUsRUFBRSxZQUFZLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNO0FBQ3BDLFNBQUEsQ0FBQyxDQUFDO1FBRUgseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakM7QUFDRjs7TUM1SlksV0FBVyxDQUFBO0FBSXRCLElBQUEsV0FBQSxDQUFvQixJQUFVLEVBQUE7UUFBVixJQUFJLENBQUEsSUFBQSxHQUFKLElBQUksQ0FBTTtRQUh0QixJQUFlLENBQUEsZUFBQSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFPLENBQUEsT0FBQSxHQUFHLEtBQUssQ0FBQztLQUVVO0lBRWxDLHFCQUFxQixHQUFBO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztLQUM3QjtJQUVELFlBQVksR0FBQTtRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztLQUNyQjtJQUVELE9BQU8sR0FBQTtBQUNMLFFBQUEsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztBQUV0QixRQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDM0IsT0FBTztBQUNSLFNBQUE7QUFFRCxRQUFBLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBRTVCLFFBQUEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFDdkMsUUFBQSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDaEMsUUFBQSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFdkMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixPQUFPO0FBQ1IsU0FBQTtBQUVELFFBQUEsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFcEIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUV0RCxRQUFBLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekIsUUFBQSxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuQyxRQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRWpELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLFFBQUEsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLEdBQUcsbUJBQW1CLENBQUM7QUFDMUQsUUFBQSxNQUFNLE1BQU0sR0FBRyxZQUFZLEdBQUcsWUFBWSxDQUFDO0FBRTNDLFFBQUEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUM7QUFDakIsWUFBQSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRO0FBQzVCLFlBQUEsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTTtBQUN2QixTQUFBLENBQUMsQ0FBQztRQUVILHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2pDO0FBQ0Y7O01DbkRZLHFCQUFxQixDQUFBO0FBR2hDLElBQUEsV0FBQSxDQUFvQixJQUFVLEVBQUE7UUFBVixJQUFJLENBQUEsSUFBQSxHQUFKLElBQUksQ0FBTTtRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzFDO0lBRUQscUJBQXFCLEdBQUE7QUFDbkIsUUFBQSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQztLQUNqRDtJQUVELFlBQVksR0FBQTtBQUNWLFFBQUEsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0tBQ3hDO0lBRUQsT0FBTyxHQUFBO0FBQ0wsUUFBQSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRXRCLFFBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUMzQixPQUFPO0FBQ1IsU0FBQTtBQUVELFFBQUEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFDdkMsUUFBQSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFFOUIsUUFBQSxJQUNFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztBQUNoQixZQUFBLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLFlBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFDckI7WUFDQSxPQUFPO0FBQ1IsU0FBQTtBQUVELFFBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUM1QjtBQUNGOztNQ3hCWSxzQkFBc0IsQ0FBQTtJQUNqQyxXQUNVLENBQUEsTUFBZ0IsRUFDaEIsUUFBa0IsRUFDbEIsV0FBd0IsRUFDeEIsZ0JBQWtDLEVBQ2xDLE1BQWMsRUFDZCxrQkFBc0MsRUFBQTtRQUx0QyxJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBVTtRQUNoQixJQUFRLENBQUEsUUFBQSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixJQUFXLENBQUEsV0FBQSxHQUFYLFdBQVcsQ0FBYTtRQUN4QixJQUFnQixDQUFBLGdCQUFBLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBUTtRQUNkLElBQWtCLENBQUEsa0JBQUEsR0FBbEIsa0JBQWtCLENBQW9CO1FBcUJ4QyxJQUFLLENBQUEsS0FBQSxHQUFHLE1BQUs7QUFDbkIsWUFBQSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzlFLFNBQUMsQ0FBQztBQUVNLFFBQUEsSUFBQSxDQUFBLEdBQUcsR0FBRyxDQUFDLE1BQWdCLEtBQUk7WUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFdkMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPO0FBQ0wsb0JBQUEsWUFBWSxFQUFFLEtBQUs7QUFDbkIsb0JBQUEscUJBQXFCLEVBQUUsS0FBSztpQkFDN0IsQ0FBQztBQUNILGFBQUE7QUFFRCxZQUFBO0FBQ0UsZ0JBQUEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDdEMsSUFBSSxFQUNKLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQy9CLE1BQU0sQ0FDUCxDQUFDO2dCQUVGLElBQUksR0FBRyxDQUFDLHFCQUFxQixFQUFFO0FBQzdCLG9CQUFBLE9BQU8sR0FBRyxDQUFDO0FBQ1osaUJBQUE7QUFDRixhQUFBO0FBRUQsWUFBQTtnQkFDRSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0FBQ3pFLGdCQUFBLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUN4QyxnQkFBQSxNQUFNLFlBQVksR0FBRztBQUNuQixvQkFBQSxZQUFZLEVBQUUsTUFBTSxTQUFTO2lCQUM5QixDQUFDO2dCQUVGLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQ3RDLElBQUksRUFDSixJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLEVBQ3pELE1BQU0sQ0FDUCxDQUFDO0FBRUYsZ0JBQUEsSUFBSSxHQUFHLENBQUMsWUFBWSxJQUFJLFNBQVMsRUFBRTtvQkFDakMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVDLGlCQUFBO0FBRUQsZ0JBQUEsT0FBTyxHQUFHLENBQUM7QUFDWixhQUFBO0FBQ0gsU0FBQyxDQUFDO0tBakVFO0lBRUUsSUFBSSxHQUFBOztBQUNSLFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FDakNDLFVBQUksQ0FBQyxPQUFPLENBQ1ZWLFdBQU0sQ0FBQyxFQUFFLENBQUM7QUFDUixnQkFBQTtBQUNFLG9CQUFBLEdBQUcsRUFBRSxPQUFPO29CQUNaLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzt3QkFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO3dCQUNqQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7cUJBQ2QsQ0FBQztBQUNILGlCQUFBO2FBQ0YsQ0FBQyxDQUNILENBQ0YsQ0FBQztTQUNILENBQUEsQ0FBQTtBQUFBLEtBQUE7SUFFSyxNQUFNLEdBQUE7K0RBQUssQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQWdEbEI7O0FDdkZLLFNBQVUsb0JBQW9CLENBQUMsRUFBaUMsRUFBQTtJQUNwRSxPQUFPLENBQUMsTUFBYyxLQUFJO0FBQ3hCLFFBQUEsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEMsUUFBQSxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUUzQyxRQUFBLElBQ0UsQ0FBQyxxQkFBcUI7QUFDdEIsWUFBQSxNQUFNLENBQUMsS0FBSztBQUNaLFlBQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUMvQjtBQUNBLFlBQUEsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFzQixDQUFDLENBQUM7QUFDMUQsU0FBQTtBQUNILEtBQUMsQ0FBQztBQUNKOztNQ1RhLG9CQUFvQixDQUFBO0lBQy9CLFdBQ1UsQ0FBQSxNQUFnQixFQUNoQixnQkFBa0MsRUFBQTtRQURsQyxJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBVTtRQUNoQixJQUFnQixDQUFBLGdCQUFBLEdBQWhCLGdCQUFnQixDQUFrQjtBQXFEcEMsUUFBQSxJQUFBLENBQUEsSUFBSSxHQUFHLENBQUMsTUFBZ0IsS0FBSTtZQUNsQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDLFNBQUMsQ0FBQztBQUVNLFFBQUEsSUFBQSxDQUFBLE1BQU0sR0FBRyxDQUFDLE1BQWdCLEtBQUk7WUFDcEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN4QyxTQUFDLENBQUM7S0ExREU7SUFFRSxJQUFJLEdBQUE7O0FBQ1IsWUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUNyQixnQkFBQSxFQUFFLEVBQUUsTUFBTTtBQUNWLGdCQUFBLElBQUksRUFBRSxrQkFBa0I7QUFDeEIsZ0JBQUEsSUFBSSxFQUFFLGVBQWU7QUFDckIsZ0JBQUEsY0FBYyxFQUFFLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDL0MsZ0JBQUEsT0FBTyxFQUFFO0FBQ1Asb0JBQUE7d0JBQ0UsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQ2xCLHdCQUFBLEdBQUcsRUFBRSxTQUFTO0FBQ2YscUJBQUE7QUFDRixpQkFBQTtBQUNGLGFBQUEsQ0FBQyxDQUFDO0FBRUgsWUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUNyQixnQkFBQSxFQUFFLEVBQUUsUUFBUTtBQUNaLGdCQUFBLElBQUksRUFBRSxrQkFBa0I7QUFDeEIsZ0JBQUEsSUFBSSxFQUFFLGlCQUFpQjtBQUN2QixnQkFBQSxjQUFjLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUNqRCxnQkFBQSxPQUFPLEVBQUU7QUFDUCxvQkFBQTt3QkFDRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUM7QUFDbEIsd0JBQUEsR0FBRyxFQUFFLFdBQVc7QUFDakIscUJBQUE7QUFDRixpQkFBQTtBQUNGLGFBQUEsQ0FBQyxDQUFDO1NBQ0osQ0FBQSxDQUFBO0FBQUEsS0FBQTtJQUVLLE1BQU0sR0FBQTsrREFBSyxDQUFBLENBQUE7QUFBQSxLQUFBO0lBRVQsT0FBTyxDQUFDLE1BQWdCLEVBQUUsSUFBdUIsRUFBQTtRQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxDQUFDLFVBQVUsRUFBRTtZQUN2RCxJQUFJQyxlQUFNLENBQ1IsQ0FBYSxVQUFBLEVBQUEsSUFBSSxpRkFBaUYsRUFDbEcsSUFBSSxDQUNMLENBQUM7QUFDRixZQUFBLE9BQU8sSUFBSSxDQUFDO0FBQ2IsU0FBQTtBQUVELFFBQUEsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWxDLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtBQUNuQixZQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLFNBQUE7QUFBTSxhQUFBO0FBQ0wsWUFBQSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QixTQUFBO0FBRUQsUUFBQSxPQUFPLElBQUksQ0FBQztLQUNiO0FBU0Y7O01DbkVZLFVBQVUsQ0FBQTtJQUlyQixXQUFvQixDQUFBLElBQVUsRUFBVSxrQkFBMEIsRUFBQTtRQUE5QyxJQUFJLENBQUEsSUFBQSxHQUFKLElBQUksQ0FBTTtRQUFVLElBQWtCLENBQUEsa0JBQUEsR0FBbEIsa0JBQWtCLENBQVE7UUFIMUQsSUFBZSxDQUFBLGVBQUEsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBTyxDQUFBLE9BQUEsR0FBRyxLQUFLLENBQUM7S0FFOEM7SUFFdEUscUJBQXFCLEdBQUE7UUFDbkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0tBQzdCO0lBRUQsWUFBWSxHQUFBO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0tBQ3JCO0lBRUQsT0FBTyxHQUFBO0FBQ0wsUUFBQSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRXRCLFFBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUMzQixPQUFPO0FBQ1IsU0FBQTtBQUVELFFBQUEsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFFNUIsUUFBQSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUN2QyxRQUFBLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU87QUFDUixTQUFBO0FBRUQsUUFBQSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUVwQixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDbkQsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXJCLElBQUksV0FBVyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtBQUN6QyxZQUFBLFdBQVcsR0FBRyxJQUFJO2lCQUNmLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoQixpQkFBQSxrQkFBa0IsRUFBRTtpQkFDcEIsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLFNBQUE7UUFFRCxJQUFJLFdBQVcsS0FBSyxFQUFFLEVBQUU7QUFDdEIsWUFBQSxXQUFXLEdBQUcsSUFBSTtBQUNmLGlCQUFBLGtCQUFrQixFQUFFO2lCQUNwQixLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUMsU0FBQTtRQUVELElBQUksV0FBVyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN6QyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFDMUQsU0FBQTtRQUVELElBQUksV0FBVyxLQUFLLEVBQUUsRUFBRTtBQUN0QixZQUFBLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7QUFDdkMsU0FBQTtBQUVELFFBQUEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QixRQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkIsUUFBQSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUUzQyxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRSxRQUFBLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDO0FBRTFELFFBQUEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUM7QUFDakIsWUFBQSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRO0FBQzVCLFlBQUEsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLE1BQU07QUFDbkMsU0FBQSxDQUFDLENBQUM7UUFFSCx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNqQztBQUNGOztNQzFFWSxZQUFZLENBQUE7QUFJdkIsSUFBQSxXQUFBLENBQW9CLElBQVUsRUFBQTtRQUFWLElBQUksQ0FBQSxJQUFBLEdBQUosSUFBSSxDQUFNO1FBSHRCLElBQWUsQ0FBQSxlQUFBLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQU8sQ0FBQSxPQUFBLEdBQUcsS0FBSyxDQUFDO0tBRVU7SUFFbEMscUJBQXFCLEdBQUE7UUFDbkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0tBQzdCO0lBRUQsWUFBWSxHQUFBO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0tBQ3JCO0lBRUQsT0FBTyxHQUFBO0FBQ0wsUUFBQSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRXRCLFFBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUMzQixPQUFPO0FBQ1IsU0FBQTtBQUVELFFBQUEsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFFNUIsUUFBQSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUN2QyxRQUFBLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNoQyxRQUFBLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0MsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFakUsUUFBQSxJQUFJLENBQUMsSUFBSSxJQUFJLFdBQVcsRUFBRTtZQUN4QixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFdkQsWUFBQSxJQUFJLFNBQVMsRUFBRTtBQUNiLGdCQUFBLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLGdCQUFBLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekIsZ0JBQUEsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QixhQUFBO0FBQ0YsU0FBQTtBQUFNLGFBQUEsSUFBSSxJQUFJLEVBQUU7QUFDZixZQUFBLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLFlBQUEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QixZQUFBLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdCLFNBQUE7QUFFRCxRQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLE9BQU87QUFDUixTQUFBO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEUsUUFBQSxNQUFNLFFBQVEsR0FBRyxrQkFBa0IsR0FBRyxtQkFBbUIsQ0FBQztBQUUxRCxRQUFBLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDO0FBQ2pCLFlBQUEsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsUUFBUTtZQUM1QixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7QUFDZCxTQUFBLENBQUMsQ0FBQztRQUVILHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2pDO0FBQ0Y7O01DM0RZLFVBQVUsQ0FBQTtBQUlyQixJQUFBLFdBQUEsQ0FBb0IsSUFBVSxFQUFBO1FBQVYsSUFBSSxDQUFBLElBQUEsR0FBSixJQUFJLENBQU07UUFIdEIsSUFBZSxDQUFBLGVBQUEsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBTyxDQUFBLE9BQUEsR0FBRyxLQUFLLENBQUM7S0FFVTtJQUVsQyxxQkFBcUIsR0FBQTtRQUNuQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7S0FDN0I7SUFFRCxZQUFZLEdBQUE7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7S0FDckI7SUFFRCxPQUFPLEdBQUE7QUFDTCxRQUFBLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFdEIsUUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQzNCLE9BQU87QUFDUixTQUFBO0FBRUQsUUFBQSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztBQUU1QixRQUFBLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0FBQ3ZDLFFBQUEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ2hDLFFBQUEsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzQyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVqRSxRQUFBLElBQUksQ0FBQyxJQUFJLElBQUksV0FBVyxFQUFFO1lBQ3hCLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUV2RCxZQUFBLElBQUksU0FBUyxFQUFFO0FBQ2IsZ0JBQUEsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDcEIsZ0JBQUEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QixnQkFBQSxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdCLGFBQUE7QUFDRixTQUFBO0FBQU0sYUFBQSxJQUFJLElBQUksRUFBRTtBQUNmLFlBQUEsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDcEIsWUFBQSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pCLFlBQUEsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUIsU0FBQTtBQUVELFFBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsT0FBTztBQUNSLFNBQUE7UUFFRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRSxRQUFBLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDO0FBRTFELFFBQUEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUM7QUFDakIsWUFBQSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRO1lBQzVCLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtBQUNkLFNBQUEsQ0FBQyxDQUFDO1FBRUgseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakM7QUFDRjs7TUNsRFkscUJBQXFCLENBQUE7QUFDaEMsSUFBQSxXQUFBLENBQ1UsTUFBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLGtCQUFzQyxFQUFBO1FBRnRDLElBQU0sQ0FBQSxNQUFBLEdBQU4sTUFBTSxDQUFVO1FBQ2hCLElBQWdCLENBQUEsZ0JBQUEsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLElBQWtCLENBQUEsa0JBQUEsR0FBbEIsa0JBQWtCLENBQW9CO0FBaUR4QyxRQUFBLElBQUEsQ0FBQSxZQUFZLEdBQUcsQ0FBQyxNQUFnQixLQUFJO1lBQzFDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQy9ELENBQUMsSUFBSSxLQUFLLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxFQUNoQyxNQUFNLENBQ1AsQ0FBQztBQUVGLFlBQUEsT0FBTyxxQkFBcUIsQ0FBQztBQUMvQixTQUFDLENBQUM7QUFFTSxRQUFBLElBQUEsQ0FBQSxVQUFVLEdBQUcsQ0FBQyxNQUFnQixLQUFJO1lBQ3hDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQy9ELENBQUMsSUFBSSxLQUFLLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUM5QixNQUFNLENBQ1AsQ0FBQztBQUVGLFlBQUEsT0FBTyxxQkFBcUIsQ0FBQztBQUMvQixTQUFDLENBQUM7QUFFTSxRQUFBLElBQUEsQ0FBQSxVQUFVLEdBQUcsQ0FBQyxNQUFnQixLQUFJO0FBQ3hDLFlBQUEsTUFBTSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FDL0QsQ0FBQyxJQUFJLEtBQ0gsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEVBQ3JFLE1BQU0sQ0FDUCxDQUFDO0FBRUYsWUFBQSxPQUFPLHFCQUFxQixDQUFDO0FBQy9CLFNBQUMsQ0FBQztBQUVNLFFBQUEsSUFBQSxDQUFBLFdBQVcsR0FBRyxDQUFDLE1BQWdCLEtBQUk7WUFDekMsTUFBTSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FDL0QsQ0FBQyxJQUFJLEtBQUssSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQy9CLE1BQU0sQ0FDUCxDQUFDO0FBRUYsWUFBQSxPQUFPLHFCQUFxQixDQUFDO0FBQy9CLFNBQUMsQ0FBQztLQW5GRTtJQUVFLElBQUksR0FBQTs7QUFDUixZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQ3JCLGdCQUFBLEVBQUUsRUFBRSxtQkFBbUI7QUFDdkIsZ0JBQUEsSUFBSSxFQUFFLFVBQVU7QUFDaEIsZ0JBQUEsSUFBSSxFQUFFLDJCQUEyQjtBQUNqQyxnQkFBQSxjQUFjLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUNyRCxnQkFBQSxPQUFPLEVBQUU7QUFDUCxvQkFBQTtBQUNFLHdCQUFBLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7QUFDM0Isd0JBQUEsR0FBRyxFQUFFLFNBQVM7QUFDZixxQkFBQTtBQUNGLGlCQUFBO0FBQ0YsYUFBQSxDQUFDLENBQUM7QUFFSCxZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQ3JCLGdCQUFBLEVBQUUsRUFBRSxxQkFBcUI7QUFDekIsZ0JBQUEsSUFBSSxFQUFFLFlBQVk7QUFDbEIsZ0JBQUEsSUFBSSxFQUFFLDZCQUE2QjtBQUNuQyxnQkFBQSxjQUFjLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztBQUN2RCxnQkFBQSxPQUFPLEVBQUU7QUFDUCxvQkFBQTtBQUNFLHdCQUFBLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7QUFDM0Isd0JBQUEsR0FBRyxFQUFFLFdBQVc7QUFDakIscUJBQUE7QUFDRixpQkFBQTtBQUNGLGFBQUEsQ0FBQyxDQUFDO0FBRUgsWUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUNyQixnQkFBQSxFQUFFLEVBQUUsYUFBYTtBQUNqQixnQkFBQSxJQUFJLEVBQUUsUUFBUTtBQUNkLGdCQUFBLElBQUksRUFBRSw4QkFBOEI7QUFDcEMsZ0JBQUEsY0FBYyxFQUFFLG9CQUFvQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDckQsZ0JBQUEsT0FBTyxFQUFFLEVBQUU7QUFDWixhQUFBLENBQUMsQ0FBQztBQUVILFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7QUFDckIsZ0JBQUEsRUFBRSxFQUFFLGNBQWM7QUFDbEIsZ0JBQUEsSUFBSSxFQUFFLFNBQVM7QUFDZixnQkFBQSxJQUFJLEVBQUUsK0JBQStCO0FBQ3JDLGdCQUFBLGNBQWMsRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0FBQ3RELGdCQUFBLE9BQU8sRUFBRSxFQUFFO0FBQ1osYUFBQSxDQUFDLENBQUM7U0FDSixDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUssTUFBTSxHQUFBOytEQUFLLENBQUEsQ0FBQTtBQUFBLEtBQUE7QUFzQ2xCOztNQ2xHWSxpQ0FBaUMsQ0FBQTtBQUk1QyxJQUFBLFdBQUEsQ0FBb0IsSUFBVSxFQUFBO1FBQVYsSUFBSSxDQUFBLElBQUEsR0FBSixJQUFJLENBQU07UUFIdEIsSUFBZSxDQUFBLGVBQUEsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBTyxDQUFBLE9BQUEsR0FBRyxLQUFLLENBQUM7S0FFVTtJQUVsQyxxQkFBcUIsR0FBQTtRQUNuQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7S0FDN0I7SUFFRCxZQUFZLEdBQUE7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7S0FDckI7SUFFRCxPQUFPLEdBQUE7QUFDTCxRQUFBLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFdEIsUUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQzNCLE9BQU87QUFDUixTQUFBO0FBRUQsUUFBQSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztBQUM1QixRQUFBLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBRXBCLFFBQUEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ2hDLFFBQUEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFDdkMsUUFBQSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFbkUsUUFBQSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUMzQyxNQUFNLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNsQyxDQUFDO0FBRUYsUUFBQSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDeEM7QUFDRjs7TUMzQlksOEJBQThCLENBQUE7QUFDekMsSUFBQSxXQUFBLENBQ1UsTUFBZ0IsRUFDaEIsUUFBa0IsRUFDbEIsV0FBd0IsRUFDeEIsa0JBQXNDLEVBQUE7UUFIdEMsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVU7UUFDaEIsSUFBUSxDQUFBLFFBQUEsR0FBUixRQUFRLENBQVU7UUFDbEIsSUFBVyxDQUFBLFdBQUEsR0FBWCxXQUFXLENBQWE7UUFDeEIsSUFBa0IsQ0FBQSxrQkFBQSxHQUFsQixrQkFBa0IsQ0FBb0I7UUFtQnhDLElBQUssQ0FBQSxLQUFBLEdBQUcsTUFBSztBQUNuQixZQUFBLFFBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsS0FBSyxPQUFPO0FBQ2pELGdCQUFBLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFDNUI7QUFDSixTQUFDLENBQUM7QUFFTSxRQUFBLElBQUEsQ0FBQSxHQUFHLEdBQUcsQ0FBQyxNQUFnQixLQUFJO0FBQ2pDLFlBQUEsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUNwQyxDQUFDLElBQUksS0FBSyxJQUFJLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxFQUNyRCxNQUFNLENBQ1AsQ0FBQztBQUNKLFNBQUMsQ0FBQztLQTlCRTtJQUVFLElBQUksR0FBQTs7WUFDUixJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUNqQ0QsV0FBTSxDQUFDLEVBQUUsQ0FBQztBQUNSLGdCQUFBO0FBQ0Usb0JBQUEsR0FBRyxFQUFFLGFBQWE7b0JBQ2xCLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzt3QkFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO3dCQUNqQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7cUJBQ2QsQ0FBQztBQUNILGlCQUFBO0FBQ0YsYUFBQSxDQUFDLENBQ0gsQ0FBQztTQUNILENBQUEsQ0FBQTtBQUFBLEtBQUE7SUFFSyxNQUFNLEdBQUE7K0RBQUssQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQWVsQjs7QUM1Q0QsTUFBTSxpQkFBa0IsU0FBUVcsY0FBSyxDQUFBO0FBQ25DLElBQUEsV0FBQSxDQUNVLE1BQWdCLEVBQ2hCLEtBQWEsRUFDYixPQUFlLEVBQ2YsRUFBYyxFQUFBO0FBRXRCLFFBQUEsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUxWLElBQU0sQ0FBQSxNQUFBLEdBQU4sTUFBTSxDQUFVO1FBQ2hCLElBQUssQ0FBQSxLQUFBLEdBQUwsS0FBSyxDQUFRO1FBQ2IsSUFBTyxDQUFBLE9BQUEsR0FBUCxPQUFPLENBQVE7UUFDZixJQUFFLENBQUEsRUFBQSxHQUFGLEVBQUUsQ0FBWTtLQUd2QjtJQUVLLE1BQU0sR0FBQTs7WUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFakMsWUFBQUMseUJBQWdCLENBQUMsY0FBYyxDQUM3QixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxTQUFTLEVBQ2QsRUFBRSxFQUNGLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztTQUNILENBQUEsQ0FBQTtBQUFBLEtBQUE7SUFFRCxPQUFPLEdBQUE7UUFDTCxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7S0FDWDtBQUNGLENBQUE7QUFFRCxTQUFTLGVBQWUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFBO0lBQzNDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3RCxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFN0QsSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFO1FBQ3JCLElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRTtZQUNyQixPQUFPLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDeEIsU0FBQTtRQUVELE9BQU8sTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUN4QixLQUFBO0lBRUQsT0FBTyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQ3pCLENBQUM7QUFFRCxTQUFTLGNBQWMsR0FBQTtJQUNyQixNQUFNLFFBQVEsR0FBRyxxbENBQVksQ0FBQztJQUM5QixNQUFNLFlBQVksR0FBdUIsRUFBRSxDQUFDO0FBQzVDLElBQUEsSUFBSSxPQUFPLENBQUM7SUFDWixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFFakIsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3ZDLE1BQU0sb0JBQW9CLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pFLFFBQUEsSUFBSSxvQkFBb0IsRUFBRTtZQUN4QixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDeEMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLGFBQUE7QUFDRCxZQUFBLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ2YsT0FBTyxJQUFJLElBQUksQ0FBQztBQUNqQixTQUFBO0FBQU0sYUFBQTtZQUNMLE9BQU8sSUFBSSxJQUFJLENBQUM7WUFDaEIsT0FBTyxJQUFJLElBQUksQ0FBQztBQUNqQixTQUFBO0FBQ0YsS0FBQTtJQUVELElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3hDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN2QyxLQUFBO0FBRUQsSUFBQSxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO01BRVksd0JBQXdCLENBQUE7SUFHbkMsV0FBb0IsQ0FBQSxNQUFnQixFQUFVLFFBQWtCLEVBQUE7UUFBNUMsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVU7UUFBVSxJQUFRLENBQUEsUUFBQSxHQUFSLFFBQVEsQ0FBVTtRQUZ4RCxJQUFLLENBQUEsS0FBQSxHQUE2QixJQUFJLENBQUM7QUF3QnZDLFFBQUEsSUFBQSxDQUFBLFNBQVMsR0FBRyxDQUFDLGVBQWlDLEdBQUEsSUFBSSxLQUFJO1lBQzVELElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUN0QixLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksY0FBYyxFQUFFLEVBQUU7Z0JBQ2pELElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRSxlQUFlLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUM1RCxZQUFZLElBQUksT0FBTyxDQUFDO0FBQ3pCLGlCQUFBO0FBQ0YsYUFBQTtZQUVELElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3BDLE9BQU87QUFDUixhQUFBO0FBRUQsWUFBQSxNQUFNLFVBQVUsR0FBRyxDQUFnQyw2QkFBQSxFQUFBLE9BQWMsRUFBRSxDQUFDO0FBRXBFLFlBQUEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGlCQUFpQixDQUNoQyxJQUFJLENBQUMsTUFBTSxFQUNYLFVBQVUsRUFDVixZQUFZLEVBQ1osSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQztBQUNGLFlBQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNwQixTQUFDLENBQUM7UUFFTSxJQUFXLENBQUEsV0FBQSxHQUFHLE1BQVcsU0FBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxhQUFBO0FBQy9CLFlBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2YsT0FBTztBQUNSLGFBQUE7QUFFRCxZQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLE9BQWMsQ0FBQztBQUMvQyxZQUFBLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM3QixTQUFDLENBQUEsQ0FBQztLQXBEa0U7SUFFOUQsSUFBSSxHQUFBOztBQUNSLFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7QUFDckIsZ0JBQUEsRUFBRSxFQUFFLG9CQUFvQjtBQUN4QixnQkFBQSxJQUFJLEVBQUUsb0JBQW9CO2dCQUMxQixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVM7QUFDekIsYUFBQSxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDL0MsQ0FBQSxDQUFBO0FBQUEsS0FBQTtJQUVLLE1BQU0sR0FBQTs7QUFDVixZQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNmLE9BQU87QUFDUixhQUFBO0FBRUQsWUFBQSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3pCLFlBQUEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2YsQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQWlDRjs7QUN6SEQsTUFBTSxnQ0FBaUMsU0FBUUMseUJBQWdCLENBQUE7QUFDN0QsSUFBQSxXQUFBLENBQVksR0FBUSxFQUFFLE1BQWdCLEVBQVUsUUFBa0IsRUFBQTtBQUNoRSxRQUFBLEtBQUssQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFEMkIsSUFBUSxDQUFBLFFBQUEsR0FBUixRQUFRLENBQVU7S0FFakU7SUFFRCxPQUFPLEdBQUE7QUFDTCxRQUFBLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFN0IsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXBCLElBQUlDLGdCQUFPLENBQUMsV0FBVyxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQzthQUMxQyxPQUFPLENBQUMsbURBQW1ELENBQUM7QUFDNUQsYUFBQSxXQUFXLENBQUMsQ0FBQyxRQUFRLEtBQUk7WUFDeEIsUUFBUTtBQUNMLGlCQUFBLFVBQVUsQ0FBQztBQUNWLGdCQUFBLEtBQUssRUFBRSxPQUFPO0FBQ2QsZ0JBQUEsYUFBYSxFQUFFLDZCQUE2QjtBQUM1QyxnQkFBQSxxQkFBcUIsRUFBRSw0Q0FBNEM7YUFDcEIsQ0FBQztBQUNqRCxpQkFBQSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQztBQUMvQyxpQkFBQSxRQUFRLENBQUMsQ0FBTyxLQUE4QixLQUFJLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtBQUNqRCxnQkFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztBQUM5QyxnQkFBQSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDNUIsQ0FBQSxDQUFDLENBQUM7QUFDUCxTQUFDLENBQUMsQ0FBQztRQUVMLElBQUlBLGdCQUFPLENBQUMsV0FBVyxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQzthQUM5QixPQUFPLENBQUMsNERBQTRELENBQUM7QUFDckUsYUFBQSxTQUFTLENBQUMsQ0FBQyxNQUFNLEtBQUk7WUFDcEIsTUFBTTtBQUNILGlCQUFBLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDO0FBQzVDLGlCQUFBLFFBQVEsQ0FBQyxDQUFPLEtBQUssS0FBSSxTQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7QUFDeEIsZ0JBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7QUFDM0MsZ0JBQUEsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzVCLENBQUEsQ0FBQyxDQUFDO0FBQ1AsU0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJQSxnQkFBTyxDQUFDLFdBQVcsQ0FBQzthQUNyQixPQUFPLENBQUMsdUJBQXVCLENBQUM7YUFDaEMsT0FBTyxDQUFDLHdEQUF3RCxDQUFDO0FBQ2pFLGFBQUEsU0FBUyxDQUFDLENBQUMsTUFBTSxLQUFJO1lBQ3BCLE1BQU07QUFDSCxpQkFBQSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQztBQUM5QyxpQkFBQSxRQUFRLENBQUMsQ0FBTyxLQUFLLEtBQUksU0FBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxhQUFBO0FBQ3hCLGdCQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0FBQzdDLGdCQUFBLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUM1QixDQUFBLENBQUMsQ0FBQztBQUNQLFNBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSUEsZ0JBQU8sQ0FBQyxXQUFXLENBQUM7YUFDckIsT0FBTyxDQUFDLHNDQUFzQyxDQUFDO2FBQy9DLE9BQU8sQ0FDTiwwR0FBMEcsQ0FDM0c7QUFDQSxhQUFBLFNBQVMsQ0FBQyxDQUFDLE1BQU0sS0FBSTtZQUNwQixNQUFNO0FBQ0gsaUJBQUEsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUM7QUFDbEQsaUJBQUEsUUFBUSxDQUFDLENBQU8sS0FBSyxLQUFJLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtBQUN4QixnQkFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLDBCQUEwQixHQUFHLEtBQUssQ0FBQztBQUNqRCxnQkFBQSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDNUIsQ0FBQSxDQUFDLENBQUM7QUFDUCxTQUFDLENBQUMsQ0FBQztRQUVMLElBQUlBLGdCQUFPLENBQUMsV0FBVyxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQzthQUMxQyxPQUFPLENBQ04sdUdBQXVHLENBQ3hHO0FBQ0EsYUFBQSxTQUFTLENBQUMsQ0FBQyxNQUFNLEtBQUk7WUFDcEIsTUFBTTtBQUNILGlCQUFBLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO0FBQ3pDLGlCQUFBLFFBQVEsQ0FBQyxDQUFPLEtBQUssS0FBSSxTQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7QUFDeEIsZ0JBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7QUFDeEMsZ0JBQUEsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzVCLENBQUEsQ0FBQyxDQUFDO0FBQ1AsU0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJQSxnQkFBTyxDQUFDLFdBQVcsQ0FBQzthQUNyQixPQUFPLENBQUMsaUNBQWlDLENBQUM7QUFDMUMsYUFBQSxTQUFTLENBQUMsQ0FBQyxNQUFNLEtBQUk7QUFDcEIsWUFBQSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQU8sS0FBSyxLQUFJLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtBQUNwRSxnQkFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7QUFDcEMsZ0JBQUEsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzVCLENBQUEsQ0FBQyxDQUFDO0FBQ0wsU0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJQSxnQkFBTyxDQUFDLFdBQVcsQ0FBQzthQUNyQixPQUFPLENBQUMsd0NBQXdDLENBQUM7QUFDakQsYUFBQSxXQUFXLENBQUMsQ0FBQyxRQUFRLEtBQUk7WUFDeEIsUUFBUTtBQUNMLGlCQUFBLFVBQVUsQ0FBQztBQUNWLGdCQUFBLElBQUksRUFBRSxNQUFNO0FBQ1osZ0JBQUEsU0FBUyxFQUFFLFNBQVM7QUFDcEIsZ0JBQUEsZ0JBQWdCLEVBQUUsZ0JBQWdCO2FBQ1MsQ0FBQztBQUM3QyxpQkFBQSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQztBQUMzQyxpQkFBQSxRQUFRLENBQUMsQ0FBTyxLQUEwQixLQUFJLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtBQUM3QyxnQkFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztBQUMxQyxnQkFBQSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDNUIsQ0FBQSxDQUFDLENBQUM7QUFDUCxTQUFDLENBQUMsQ0FBQztBQUVMLFFBQUEsSUFBSUEsZ0JBQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxLQUFJO0FBQ3JFLFlBQUEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFPLEtBQUssS0FBSSxTQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7QUFDbEUsZ0JBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBQ2xDLGdCQUFBLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUM1QixDQUFBLENBQUMsQ0FBQztBQUNMLFNBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSUEsZ0JBQU8sQ0FBQyxXQUFXLENBQUM7YUFDckIsT0FBTyxDQUFDLFlBQVksQ0FBQzthQUNyQixPQUFPLENBQ04sNkVBQTZFLENBQzlFO0FBQ0EsYUFBQSxTQUFTLENBQUMsQ0FBQyxNQUFNLEtBQUk7QUFDcEIsWUFBQSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQU8sS0FBSyxLQUFJLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtBQUM1RCxnQkFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDNUIsZ0JBQUEsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzVCLENBQUEsQ0FBQyxDQUFDO0FBQ0wsU0FBQyxDQUFDLENBQUM7S0FDTjtBQUNGLENBQUE7TUFFWSxXQUFXLENBQUE7SUFDdEIsV0FBb0IsQ0FBQSxNQUFnQixFQUFVLFFBQWtCLEVBQUE7UUFBNUMsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVU7UUFBVSxJQUFRLENBQUEsUUFBQSxHQUFSLFFBQVEsQ0FBVTtLQUFJO0lBRTlELElBQUksR0FBQTs7WUFDUixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FDdkIsSUFBSSxnQ0FBZ0MsQ0FDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQ2YsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsUUFBUSxDQUNkLENBQ0YsQ0FBQztTQUNILENBQUEsQ0FBQTtBQUFBLEtBQUE7SUFFSyxNQUFNLEdBQUE7K0RBQUssQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUNsQjs7TUN2SVkseUJBQXlCLENBQUE7QUFDcEMsSUFBQSxXQUFBLENBQ1UsTUFBZ0IsRUFDaEIsV0FBd0IsRUFDeEIsUUFBa0IsRUFDbEIsa0JBQXNDLEVBQUE7UUFIdEMsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVU7UUFDaEIsSUFBVyxDQUFBLFdBQUEsR0FBWCxXQUFXLENBQWE7UUFDeEIsSUFBUSxDQUFBLFFBQUEsR0FBUixRQUFRLENBQVU7UUFDbEIsSUFBa0IsQ0FBQSxrQkFBQSxHQUFsQixrQkFBa0IsQ0FBb0I7UUFxQnhDLElBQUssQ0FBQSxLQUFBLEdBQUcsTUFBSztBQUNuQixZQUFBLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDNUUsU0FBQyxDQUFDO0FBRU0sUUFBQSxJQUFBLENBQUEsR0FBRyxHQUFHLENBQUMsTUFBZ0IsS0FBSTtBQUNqQyxZQUFBLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FDcEMsQ0FBQyxJQUFJLEtBQUssSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQy9CLE1BQU0sQ0FDUCxDQUFDO0FBQ0osU0FBQyxDQUFDO0tBN0JFO0lBRUUsSUFBSSxHQUFBOztBQUNSLFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FDakNKLFVBQUksQ0FBQyxPQUFPLENBQ1ZWLFdBQU0sQ0FBQyxFQUFFLENBQUM7QUFDUixnQkFBQTtBQUNFLG9CQUFBLEdBQUcsRUFBRSxPQUFPO29CQUNaLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzt3QkFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO3dCQUNqQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7cUJBQ2QsQ0FBQztBQUNILGlCQUFBO2FBQ0YsQ0FBQyxDQUNILENBQ0YsQ0FBQztTQUNILENBQUEsQ0FBQTtBQUFBLEtBQUE7SUFFSyxNQUFNLEdBQUE7K0RBQUssQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQVlsQjs7QUM5QkQsTUFBTSxlQUFnQixTQUFRVyxjQUFLLENBQUE7SUFDakMsV0FBWSxDQUFBLEdBQVEsRUFBVSxRQUFrQixFQUFBO1FBQzlDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURpQixJQUFRLENBQUEsUUFBQSxHQUFSLFFBQVEsQ0FBVTtLQUUvQztJQUVLLE1BQU0sR0FBQTs7QUFDVixZQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7O0FBRzNDLFlBQUEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQTRCLENBQUM7QUFFOUMsWUFBQSxNQUFNLElBQUksR0FBRztBQUNYLGdCQUFBLE9BQU8sRUFBRTtvQkFDUCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtBQUMzQixpQkFBQTtBQUNELGdCQUFBLEdBQUcsRUFBRTtBQUNILG9CQUFBLGVBQWUsRUFBRTtBQUNmLHdCQUFBLE1BQU0sRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLE1BQU07QUFDbkMscUJBQUE7b0JBQ0QsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO0FBQ3RCLG9CQUFBLE9BQU8sRUFBRTt3QkFDUCxjQUFjLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztBQUN0RCx3QkFBQSxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUk7NEJBQ2hFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRztnQ0FDVCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTzs2QkFDNUMsQ0FBQztBQUNGLDRCQUFBLE9BQU8sR0FBRyxDQUFDO3lCQUNaLEVBQUUsRUFBNEMsQ0FBQztBQUNqRCxxQkFBQTtBQUNELG9CQUFBLEtBQUssRUFBRTtBQUNMLHdCQUFBLE1BQU0sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU07QUFDekIscUJBQUE7QUFDRixpQkFBQTtBQUNELGdCQUFBLE1BQU0sRUFBRTtvQkFDTixRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRTtBQUNoRCxpQkFBQTthQUNGLENBQUM7QUFFRixZQUFBLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUUzQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzQyxZQUFBLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsR0FBRyxDQUFDLFlBQVksQ0FBQztBQUNmLGdCQUFBLFFBQVEsRUFBRSxRQUFRO0FBQ2xCLGdCQUFBLFNBQVMsRUFBRSxPQUFPO0FBQ25CLGFBQUEsQ0FBQyxDQUFDO1lBRUgsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakQsWUFBQSxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDakMsWUFBQSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQUs7Z0JBQ3ZCLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNmLGFBQUMsQ0FBQyxDQUFDO1NBQ0osQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUNGLENBQUE7TUFFWSxVQUFVLENBQUE7SUFDckIsV0FBb0IsQ0FBQSxNQUFnQixFQUFVLFFBQWtCLEVBQUE7UUFBNUMsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVU7UUFBVSxJQUFRLENBQUEsUUFBQSxHQUFSLFFBQVEsQ0FBVTtRQWtCeEQsSUFBUSxDQUFBLFFBQUEsR0FBRyxNQUFLO0FBQ3RCLFlBQUEsTUFBTSxLQUFLLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNmLFNBQUMsQ0FBQztLQXJCa0U7SUFFOUQsSUFBSSxHQUFBOztBQUNSLFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7QUFDckIsZ0JBQUEsRUFBRSxFQUFFLGFBQWE7QUFDakIsZ0JBQUEsSUFBSSxFQUFFLGtCQUFrQjtnQkFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO0FBQ3ZCLGdCQUFBLE9BQU8sRUFBRTtBQUNQLG9CQUFBO0FBQ0Usd0JBQUEsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUM7QUFDbEMsd0JBQUEsR0FBRyxFQUFFLEdBQUc7QUFDVCxxQkFBQTtBQUNGLGlCQUFBO0FBQ0YsYUFBQSxDQUFDLENBQUM7U0FDSixDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUssTUFBTSxHQUFBOytEQUFLLENBQUEsQ0FBQTtBQUFBLEtBQUE7QUFNbEI7O01DckZZLG9CQUFvQixDQUFBO0lBQy9CLFdBQ1UsQ0FBQSxNQUFnQixFQUNoQixXQUF3QixFQUN4QixnQkFBa0MsRUFDbEMsUUFBa0IsRUFDbEIsa0JBQXNDLEVBQUE7UUFKdEMsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVU7UUFDaEIsSUFBVyxDQUFBLFdBQUEsR0FBWCxXQUFXLENBQWE7UUFDeEIsSUFBZ0IsQ0FBQSxnQkFBQSxHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsSUFBUSxDQUFBLFFBQUEsR0FBUixRQUFRLENBQVU7UUFDbEIsSUFBa0IsQ0FBQSxrQkFBQSxHQUFsQixrQkFBa0IsQ0FBb0I7UUFxQnhDLElBQUssQ0FBQSxLQUFBLEdBQUcsTUFBSztBQUNuQixZQUFBLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDNUUsU0FBQyxDQUFDO0FBRU0sUUFBQSxJQUFBLENBQUEsR0FBRyxHQUFHLENBQUMsTUFBZ0IsS0FBSTtZQUNqQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQ3BDLENBQUMsSUFBSSxLQUNILElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxFQUNyRSxNQUFNLENBQ1AsQ0FBQztBQUNKLFNBQUMsQ0FBQztLQTlCRTtJQUVFLElBQUksR0FBQTs7QUFDUixZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQ2pDRCxVQUFJLENBQUMsT0FBTyxDQUNWVixXQUFNLENBQUMsRUFBRSxDQUFDO0FBQ1IsZ0JBQUE7QUFDRSxvQkFBQSxHQUFHLEVBQUUsS0FBSztvQkFDVixHQUFHLEVBQUUsdUJBQXVCLENBQUM7d0JBQzNCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzt3QkFDakIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO3FCQUNkLENBQUM7QUFDSCxpQkFBQTthQUNGLENBQUMsQ0FDSCxDQUNGLENBQUM7U0FDSCxDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUssTUFBTSxHQUFBOytEQUFLLENBQUEsQ0FBQTtBQUFBLEtBQUE7QUFhbEI7O0FDcENELE1BQU0seUJBQXlCLEdBQUcsZ0NBQWdDLENBQUM7QUFTbkUsTUFBTSx3QkFBd0IsQ0FBQTtBQVM1QixJQUFBLFdBQUEsQ0FDVSxRQUFrQixFQUNsQixnQkFBa0MsRUFDbEMsTUFBYyxFQUNkLElBQWdCLEVBQUE7UUFIaEIsSUFBUSxDQUFBLFFBQUEsR0FBUixRQUFRLENBQVU7UUFDbEIsSUFBZ0IsQ0FBQSxnQkFBQSxHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVE7UUFDZCxJQUFJLENBQUEsSUFBQSxHQUFKLElBQUksQ0FBWTtRQU5sQixJQUFZLENBQUEsWUFBQSxHQUFrQixFQUFFLENBQUM7UUFlakMsSUFBYSxDQUFBLGFBQUEsR0FBRyxNQUFLO1lBQzNCLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNYLGdCQUFBLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNsQyxPQUFPO0FBQ1IsYUFBQTtBQUNELFlBQUEsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDckIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7QUFDN0IsU0FBQyxDQUFDO0FBZU0sUUFBQSxJQUFBLENBQUEsUUFBUSxHQUFHLENBQUMsQ0FBUSxLQUFJO1lBQzlCLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQXFCLENBQUM7WUFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2hELFNBQUMsQ0FBQztRQUVNLElBQW1CLENBQUEsbUJBQUEsR0FBRyxNQUFLO0FBQ2pDLFlBQUEsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pELFNBQUMsQ0FBQztRQWFNLElBQVMsQ0FBQSxTQUFBLEdBQUcsTUFBSztBQUN2QixZQUFBLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBRWhCLFlBQUEsSUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWE7QUFDM0IsZ0JBQUEsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFO0FBQzdDLGdCQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQ2xDO0FBQ0EsZ0JBQUEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3ZFLGdCQUFBLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNuRSxnQkFBQSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUVwRSxnQkFBQSxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtvQkFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDO0FBRTFDLG9CQUFBLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO0FBQ2xDLHdCQUFBLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkIscUJBQUE7QUFDRixpQkFBQTtBQUVELGdCQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FDbkIsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQ2xELENBQUM7QUFDSCxhQUFBO1lBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ25CLFNBQUMsQ0FBQztBQXlGTSxRQUFBLElBQUEsQ0FBQSxPQUFPLEdBQUcsQ0FBQyxDQUFhLEtBQUk7WUFDbEMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBRW5CLFlBQUEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUUsQ0FBQyxDQUFDLE1BQXNCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFekUsWUFBQSxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CO0FBQ3ZDLGdCQUFBLEtBQUssU0FBUztBQUNaLG9CQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xCLE1BQU07QUFFUixnQkFBQSxLQUFLLGdCQUFnQjtBQUNuQixvQkFBQSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN6QixNQUFNO0FBQ1QsYUFBQTtBQUNILFNBQUMsQ0FBQztBQXJMQSxRQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFakQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztLQUN0QjtJQVlPLFVBQVUsR0FBQTtRQUNoQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FDakMsOENBQThDLENBQy9DLENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFFbkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUMxQztBQVlELElBQUEsTUFBTSxDQUFDLE1BQWtCLEVBQUE7UUFDdkIsSUFDRSxNQUFNLENBQUMsVUFBVTtBQUNqQixZQUFBLE1BQU0sQ0FBQyxlQUFlO0FBQ3RCLFlBQUEsTUFBTSxDQUFDLGVBQWU7QUFDdEIsWUFBQSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQ2pEO1lBQ0EsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7QUFDNUIsU0FBQTtLQUNGO0FBK0JPLElBQUEsY0FBYyxDQUFDLElBQVUsRUFBQTtRQUMvQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbkIsUUFBQSxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDNUIsUUFBQSxPQUFPLENBQUMsRUFBRTtZQUNSLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoRCxZQUFBLElBQUksV0FBVyxFQUFFO0FBQ2YsZ0JBQUEsT0FBTyxXQUFXLENBQUM7QUFDcEIsYUFBQTtZQUNELE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDWixZQUFBLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDekIsU0FBQTtBQUNELFFBQUEsT0FBTyxJQUFJLENBQUM7S0FDYjtBQUVPLElBQUEsU0FBUyxDQUFDLElBQVUsRUFBRSxTQUFBLEdBQW1DLEVBQUUsRUFBQTtBQUNqRSxRQUFBLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUVwQyxRQUFBLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDekIsT0FBTztBQUNSLFNBQUE7QUFFRCxRQUFBLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO0FBQ3pDLFlBQUEsSUFBSSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLElBQUk7QUFDMUMsWUFBQSxFQUFFLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsTUFBTTtBQUNyQyxTQUFBLENBQUMsQ0FBQztRQUNILE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUMsUUFBQSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztBQUN6QyxZQUFBLElBQUksRUFBRSxXQUFXO2tCQUNiLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDO2tCQUMvQyxJQUFJLENBQUMsUUFBUTtBQUNqQixZQUFBLEVBQUUsRUFBRSxDQUFDO0FBQ04sU0FBQSxDQUFDLENBQUM7QUFFSCxRQUFBLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNsRCxJQUFJLFNBQVMsR0FDWCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDN0MsUUFBQSxJQUFJLFNBQVMsRUFBRTtBQUNiLFlBQUEsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ3BCLFdBQVcsRUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQ3hDLENBQUM7QUFDRixZQUFBLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4RSxTQUFBO0FBRUQsUUFBQSxJQUFJLFVBQVUsR0FBRyxTQUFTLElBQUksVUFBVSxHQUFHLFdBQVcsRUFBRTtZQUN0RCxPQUFPO0FBQ1IsU0FBQTtBQUVELFFBQUEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BELFFBQUEsSUFBSSxTQUFTLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUNwQyxZQUFBLFNBQVMsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztBQUNsQyxTQUFBO0FBQ0QsUUFBQSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNELE1BQU0sR0FBRyxHQUNQLFdBQVcsR0FBRyxDQUFDLElBQUksVUFBVSxHQUFHLFdBQVc7Y0FDdkMsQ0FBQyxFQUFFO2NBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzVDLFFBQUEsTUFBTSxNQUFNLEdBQ1YsVUFBVSxHQUFHLFNBQVM7QUFDcEIsY0FBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTTtjQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDL0MsUUFBQSxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBRTVCLElBQUksTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNsQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUQsWUFBQSxNQUFNLGNBQWMsR0FDbEIsQ0FBQyxDQUFDLFdBQVc7Z0JBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLENBQUM7QUFDN0Qsb0JBQUEsU0FBUyxDQUFDO0FBRWQsWUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDZCxHQUFHO2dCQUNILElBQUk7QUFDSixnQkFBQSxNQUFNLEVBQUUsQ0FBQSxLQUFBLEVBQVEsTUFBTSxDQUFBLEdBQUEsRUFBTSxjQUFjLEdBQUcsU0FBUyxHQUFHLE9BQU8sQ0FBRyxDQUFBLENBQUE7Z0JBQ25FLElBQUk7QUFDTCxhQUFBLENBQUMsQ0FBQztBQUNKLFNBQUE7QUFFRCxRQUFBLEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxFQUFFO0FBQzVCLFlBQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRTtBQUNwQixnQkFBQSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNsQyxhQUFBO0FBQ0YsU0FBQTtLQUNGO0FBa0JPLElBQUEsTUFBTSxDQUFDLElBQWMsRUFBQTtRQUMzQixNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRW5ELFFBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDMUQ7QUFFTyxJQUFBLGFBQWEsQ0FBQyxJQUFjLEVBQUE7QUFDbEMsUUFBQSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRXRCLFFBQUEsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbEIsT0FBTztBQUNSLFNBQUE7UUFFRCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDeEIsTUFBTSxhQUFhLEdBQWEsRUFBRSxDQUFDO0FBQ25DLFFBQUEsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7QUFDbEMsWUFBQSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDZixTQUFTO0FBQ1YsYUFBQTtBQUNELFlBQUEsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDakIsWUFBWSxHQUFHLEtBQUssQ0FBQztBQUN0QixhQUFBO1lBQ0QsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2RCxTQUFBO1FBRUQsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUVuRCxRQUFBLEtBQUssTUFBTSxDQUFDLElBQUksYUFBYSxFQUFFO0FBQzdCLFlBQUEsSUFBSSxZQUFZLEVBQUU7QUFDaEIsZ0JBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixhQUFBO0FBQU0saUJBQUE7QUFDTCxnQkFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLGFBQUE7QUFDRixTQUFBO0tBQ0Y7SUFFTyxTQUFTLEdBQUE7QUFDZixRQUFBLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ3JDLFFBQUEsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDdkMsUUFBQSxNQUFNLGtCQUFrQixHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUM7QUFDbkQsUUFBQSxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7QUFFakQ7Ozs7O0FBS0c7UUFDSCxJQUFJLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUNqQyxRQUFBLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNoRCx3QkFBd0IsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztBQUM5RCxTQUFBO0FBRUQsUUFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO0FBQ3JFLFFBQUEsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxVQUFVO0FBQ3BDLFlBQUEsa0JBQWtCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUN2QyxRQUFBLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsU0FBUztZQUNsQyxTQUFTLENBQUMsaUJBQWlDLENBQUMsU0FBUyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFckUsUUFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUMsWUFBQSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDbEMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QyxnQkFBQSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO2dCQUM3QyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLGdCQUFBLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsZ0JBQUEsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsYUFBQTtZQUVELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztZQUMzQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUM3QixDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQzFCLFlBQUEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQzNCLFNBQUE7QUFFRCxRQUFBLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsWUFBQSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDcEIsWUFBQSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7QUFDckIsWUFBQSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDdkIsWUFBQSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDMUIsU0FBQTtLQUNGO0lBRUQsT0FBTyxHQUFBO1FBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDdkQsUUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekMsUUFBQSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQzlCO0FBQ0YsQ0FBQTtNQUVZLGFBQWEsQ0FBQTtBQUd4QixJQUFBLFdBQUEsQ0FDVSxNQUFnQixFQUNoQixRQUFrQixFQUNsQixnQkFBa0MsRUFDbEMsTUFBYyxFQUFBO1FBSGQsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVU7UUFDaEIsSUFBUSxDQUFBLFFBQUEsR0FBUixRQUFRLENBQVU7UUFDbEIsSUFBZ0IsQ0FBQSxnQkFBQSxHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVE7UUEyQmhCLElBQWUsQ0FBQSxlQUFBLEdBQUcsTUFBSztBQUM3QixZQUFBLE1BQU0sWUFBWSxHQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUU7QUFDN0MsZ0JBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7QUFDOUIsWUFBQSxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUUzRSxZQUFBLElBQUksWUFBWSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUN4RCxhQUFBO0FBRUQsWUFBQSxJQUFJLENBQUMsWUFBWSxJQUFJLE1BQU0sRUFBRTtnQkFDM0IsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDM0QsYUFBQTtBQUNILFNBQUMsQ0FBQztLQXZDRTtJQUVFLElBQUksR0FBQTs7WUFDUixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBSztnQkFDckQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3hCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFVCxZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQ2pDZSxlQUFVLENBQUMsTUFBTSxDQUNmLENBQUMsSUFBSSxLQUNILElBQUksd0JBQXdCLENBQzFCLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FDTCxDQUNKLENBQ0YsQ0FBQztTQUNILENBQUEsQ0FBQTtBQUFBLEtBQUE7SUFFSyxNQUFNLEdBQUE7O0FBQ1YsWUFBQSxhQUFhLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDNUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDM0QsQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQWdCRjs7TUM1V1ksaUJBQWlCLENBQUE7QUFDNUIsSUFBQSxLQUFLLENBQUMsTUFBZ0IsRUFBRSxRQUFjLEVBQUUsT0FBYSxFQUFBO0FBQ25ELFFBQUEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDakUsUUFBQSxJQUFJLE9BQU8sRUFBRTtZQUNYLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUV0RCxZQUFBLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUNyRCxRQUFRLEVBQ1IsT0FBTyxFQUNQLFVBQVUsRUFDVixRQUFRLENBQ1QsQ0FBQztBQUVGLFlBQUEsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLEVBQUU7QUFDekIsZ0JBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQixhQUFBO1lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBRXZELFlBQUEsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUU7QUFDdkIsZ0JBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuQixhQUFBO0FBQ0YsU0FBQTtRQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7S0FDL0M7QUFFTyxJQUFBLGdCQUFnQixDQUFDLE1BQWdCLEVBQUUsUUFBYyxFQUFFLE9BQWEsRUFBQTtBQUN0RSxRQUFBLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUM3QyxRQUFBLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlELFFBQUEsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBRWxDLFFBQUEsTUFBTSxVQUFVLEdBQVEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxFQUFBLEVBQUEsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUM7QUFDdkMsUUFBQSxNQUFNLFFBQVEsR0FBUSxNQUFBLENBQUEsTUFBQSxDQUFBLEVBQUEsRUFBQSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQztRQUNyQyxJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDdkIsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDO0FBRXZCLFFBQUEsT0FBTyxJQUFJLEVBQUU7WUFDWCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpDLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRTtnQkFDZixNQUFNO0FBQ1AsYUFBQTtZQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU5QyxJQUFJLE9BQU8sS0FBSyxPQUFPLEVBQUU7Z0JBQ3ZCLE1BQU07QUFDUCxhQUFBO0FBRUQsWUFBQSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUMsWUFBQSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxQyxZQUFBLFFBQVEsQ0FBQyxFQUFFO0FBQ1QsZ0JBQUEsUUFBUSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLFFBQVEsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUMvRCxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDakIsU0FBQTtBQUVELFFBQUEsT0FBTyxJQUFJLEVBQUU7WUFDWCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXJDLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRTtnQkFDZixNQUFNO0FBQ1AsYUFBQTtBQUVELFlBQUEsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdDLFlBQUEsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWhELElBQUksT0FBTyxLQUFLLE9BQU8sRUFBRTtnQkFDdkIsTUFBTTtBQUNQLGFBQUE7WUFFRCxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QyxTQUFBO1FBRUQsSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFO0FBQ3JCLFlBQUEsT0FBTyxJQUFJLENBQUM7QUFDYixTQUFBO1FBRUQsT0FBTztBQUNMLFlBQUEsV0FBVyxFQUFFLE1BQU07WUFDbkIsVUFBVTtZQUNWLFFBQVE7U0FDVCxDQUFDO0tBQ0g7QUFFTyxJQUFBLHlCQUF5QixDQUMvQixRQUFjLEVBQ2QsT0FBYSxFQUNiLFVBQW9CLEVBQ3BCLFFBQWtCLEVBQUE7QUFFbEIsUUFBQSxNQUFNLFlBQVksR0FBeUIsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFbEUsUUFBQSxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDM0MsUUFBQSxNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFekMsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztBQUUxQixRQUFBLEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFO0FBQ3pDLFlBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRTtnQkFDMUIsU0FBUztBQUNWLGFBQUE7WUFFRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBRS9DLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ1osU0FBUztBQUNWLGFBQUE7QUFFRCxZQUFBLE1BQU0sYUFBYSxHQUF5QjtnQkFDMUMsUUFBUSxDQUFDLHdCQUF3QixFQUFFO2dCQUNuQyxRQUFRLENBQUMsOEJBQThCLEVBQUU7YUFDMUMsQ0FBQztBQUVGLFlBQUEsSUFBSSxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQ25ELE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHdCQUF3QixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEQsYUFBQTtBQUNGLFNBQUE7QUFFRCxRQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3QixRQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUUzQixRQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7S0FDekI7QUFDRixDQUFBO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxHQUFzQixFQUFFLEtBQVcsRUFBQTtJQUNqRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRXhELElBQUEsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsSUFBVSxFQUFBO0FBQ2hDLElBQUEsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN0RTs7TUM5SWEsV0FBVyxDQUFBO0FBQXhCLElBQUEsV0FBQSxHQUFBO1FBQ1UsSUFBVyxDQUFBLFdBQUEsR0FBRyxLQUFLLENBQUM7UUFnQnBCLElBQWtCLENBQUEsa0JBQUEsR0FBRyxNQUFLO0FBQ2hDLFlBQUEsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDMUIsU0FBQyxDQUFDO1FBRU0sSUFBZ0IsQ0FBQSxnQkFBQSxHQUFHLE1BQUs7QUFDOUIsWUFBQSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztBQUMzQixTQUFDLENBQUM7S0FDSDtJQXJCTyxJQUFJLEdBQUE7O1lBQ1IsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3ZFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNwRSxDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUssTUFBTSxHQUFBOztZQUNWLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN0RSxRQUFRLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDM0UsQ0FBQSxDQUFBO0FBQUEsS0FBQTtJQUVELFFBQVEsR0FBQTtBQUNOLFFBQUEsT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJUCxpQkFBUSxDQUFDLFNBQVMsQ0FBQztLQUMvQztBQVNGOztNQ3ZCWSxNQUFNLENBQUE7QUFDakIsSUFBQSxXQUFBLENBQW9CLFFBQWtCLEVBQUE7UUFBbEIsSUFBUSxDQUFBLFFBQUEsR0FBUixRQUFRLENBQVU7S0FBSTtBQUUxQyxJQUFBLEdBQUcsQ0FBQyxNQUFjLEVBQUUsR0FBRyxJQUFXLEVBQUE7QUFDaEMsUUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDeEIsT0FBTztBQUNSLFNBQUE7UUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQy9CO0FBRUQsSUFBQSxJQUFJLENBQUMsTUFBYyxFQUFBO0FBQ2pCLFFBQUEsT0FBTyxDQUFDLEdBQUcsSUFBVyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDdEQ7QUFDRjs7QUNORCxTQUFTLHVCQUF1QixDQUFDLEdBQVEsRUFBQTs7QUFFdkMsSUFBQSxPQUFRLEdBQUcsQ0FBQyxLQUFhLENBQUMsTUFBTSxDQUFDO0FBQ25DLENBQUM7TUFFWSxnQkFBZ0IsQ0FBQTtBQUMzQixJQUFBLFdBQUEsQ0FBb0IsR0FBUSxFQUFBO1FBQVIsSUFBRyxDQUFBLEdBQUEsR0FBSCxHQUFHLENBQUs7S0FBSTtJQUVoQyxxQkFBcUIsR0FBQTtBQUNuQixRQUFBLE1BQU0sTUFBTSxHQUFBLE1BQUEsQ0FBQSxNQUFBLENBQUEsRUFDVixZQUFZLEVBQUUsS0FBSyxFQUFBLEVBQ2hCLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDckMsQ0FBQztRQUVGLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQztLQUM1QjtJQUVELHFCQUFxQixHQUFBO0FBQ25CLFFBQUEsTUFBTSxNQUFNLEdBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxFQUNWLFFBQVEsRUFBRSxFQUFFLEVBQUEsRUFDVCx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ3JDLENBQUM7QUFFRixRQUFBLE9BQU8sTUFBTSxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUM7S0FDL0I7SUFFRCxlQUFlLEdBQUE7QUFDYixRQUFBLE9BQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxFQUNFLE1BQU0sRUFBRSxJQUFJLEVBQ1osT0FBTyxFQUFFLENBQUMsRUFDUCxFQUFBLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDcEMsQ0FBQTtLQUNIO0lBRUQsZUFBZSxHQUFBO1FBQ2IsT0FDRSxNQUFBLENBQUEsTUFBQSxDQUFBLEVBQUEsVUFBVSxFQUFFLElBQUksRUFDYixFQUFBLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDcEMsQ0FBQTtLQUNIO0lBRUQscUJBQXFCLEdBQUE7UUFDbkIsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFbkQsT0FBTyxNQUFNLEdBQUcsSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDOUQ7QUFDRjs7TUNsRFksa0JBQWtCLENBQUE7SUFDN0IsV0FDVSxDQUFBLE1BQWMsRUFDZCxpQkFBb0MsRUFBQTtRQURwQyxJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBUTtRQUNkLElBQWlCLENBQUEsaUJBQUEsR0FBakIsaUJBQWlCLENBQW1CO0tBQzFDO0FBRUosSUFBQSxJQUFJLENBQUMsSUFBVSxFQUFFLEVBQWEsRUFBRSxNQUFnQixFQUFBO0FBQzlDLFFBQUEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTlCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUViLFFBQUEsSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RELFNBQUE7UUFFRCxPQUFPO0FBQ0wsWUFBQSxZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksRUFBRTtBQUMvQixZQUFBLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRTtTQUNsRCxDQUFDO0tBQ0g7SUFFRCxPQUFPLENBQ0wsRUFBNkIsRUFDN0IsTUFBZ0IsRUFDaEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBQTtBQUUzQixRQUFBLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDOUQsU0FBQTtBQUVELFFBQUEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3BDO0FBQ0Y7O0FDckNELE1BQU0sWUFBWSxHQUFHLENBQUEsaUJBQUEsQ0FBbUIsQ0FBQztBQUN6QyxNQUFNLGtCQUFrQixHQUFHLENBQU0sR0FBQSxFQUFBLFVBQVUsSUFBSSxDQUFDO0FBRWhELE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxNQUFNLENBQUMsQ0FBSSxDQUFBLEVBQUEsWUFBWSxDQUFRLE1BQUEsQ0FBQSxDQUFDLENBQUM7QUFDckUsTUFBTSxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQUMsQ0FBVSxPQUFBLEVBQUEsWUFBWSxDQUFRLE1BQUEsQ0FBQSxDQUFDLENBQUM7QUFDOUQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFBLE9BQUEsQ0FBUyxDQUFDLENBQUM7QUFDakQsTUFBTSxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQ2hDLENBQWEsVUFBQSxFQUFBLFlBQVksQ0FBVyxRQUFBLEVBQUEsa0JBQWtCLENBQVEsTUFBQSxDQUFBLENBQy9ELENBQUM7TUE2QlcsTUFBTSxDQUFBO0lBQ2pCLFdBQW9CLENBQUEsTUFBYyxFQUFVLFFBQWtCLEVBQUE7UUFBMUMsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVE7UUFBVSxJQUFRLENBQUEsUUFBQSxHQUFSLFFBQVEsQ0FBVTtLQUFJO0FBRWxFLElBQUEsVUFBVSxDQUFDLE1BQWMsRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUE7UUFDakUsTUFBTSxLQUFLLEdBQVcsRUFBRSxDQUFDO1FBRXpCLEtBQUssSUFBSSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUvQixJQUFJLENBQUMsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUMzQyxnQkFBQSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRS9ELGdCQUFBLElBQUksSUFBSSxFQUFFO0FBQ1Isb0JBQUEsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQixvQkFBQSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQztBQUMvQixpQkFBQTtBQUNGLGFBQUE7QUFDRixTQUFBO0FBRUQsUUFBQSxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsS0FBSyxDQUFDLE1BQWMsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFBO0FBQy9DLFFBQUEsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztLQUN4RTtBQUVPLElBQUEsZUFBZSxDQUNyQixNQUFjLEVBQ2QsZ0JBQXdCLEVBQ3hCLFNBQWlCLEVBQ2pCLE9BQWUsRUFBQTtRQUVmLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3hDLFFBQUEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFXLEtBQVU7WUFDbEMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1AsWUFBQSxPQUFPLElBQUksQ0FBQztBQUNkLFNBQUMsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU5QyxJQUFJLGNBQWMsR0FBa0IsSUFBSSxDQUFDO0FBRXpDLFFBQUEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pCLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztBQUNuQyxTQUFBO0FBQU0sYUFBQSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN0QyxZQUFBLElBQUksb0JBQW9CLEdBQUcsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sb0JBQW9CLElBQUksQ0FBQyxFQUFFO2dCQUNoQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDbEQsZ0JBQUEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUN6QixjQUFjLEdBQUcsb0JBQW9CLENBQUM7b0JBQ3RDLE1BQU07QUFDUCxpQkFBQTtBQUFNLHFCQUFBLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3RDLG9CQUFBLG9CQUFvQixFQUFFLENBQUM7QUFDeEIsaUJBQUE7QUFBTSxxQkFBQTtvQkFDTCxNQUFNO0FBQ1AsaUJBQUE7QUFDRixhQUFBO0FBQ0YsU0FBQTtRQUVELElBQUksY0FBYyxLQUFLLElBQUksRUFBRTtBQUMzQixZQUFBLE9BQU8sSUFBSSxDQUFDO0FBQ2IsU0FBQTtRQUVELElBQUksYUFBYSxHQUFrQixJQUFJLENBQUM7UUFDeEMsSUFBSSxtQkFBbUIsR0FBRyxjQUFjLENBQUM7UUFDekMsT0FBTyxtQkFBbUIsSUFBSSxDQUFDLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2pELFlBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzFELE1BQU07QUFDUCxhQUFBO0FBQ0QsWUFBQSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEMsYUFBYSxHQUFHLG1CQUFtQixDQUFDO2dCQUNwQyxJQUFJLG1CQUFtQixJQUFJLFNBQVMsRUFBRTtvQkFDcEMsTUFBTTtBQUNQLGlCQUFBO0FBQ0YsYUFBQTtBQUNELFlBQUEsbUJBQW1CLEVBQUUsQ0FBQztBQUN2QixTQUFBO1FBRUQsSUFBSSxhQUFhLEtBQUssSUFBSSxFQUFFO0FBQzFCLFlBQUEsT0FBTyxJQUFJLENBQUM7QUFDYixTQUFBO1FBRUQsSUFBSSxXQUFXLEdBQUcsY0FBYyxDQUFDO1FBQ2pDLElBQUksaUJBQWlCLEdBQUcsY0FBYyxDQUFDO0FBQ3ZDLFFBQUEsT0FBTyxpQkFBaUIsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDN0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQy9DLFlBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzFELE1BQU07QUFDUCxhQUFBO0FBQ0QsWUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDM0IsV0FBVyxHQUFHLGlCQUFpQixDQUFDO0FBQ2pDLGFBQUE7WUFDRCxJQUFJLGlCQUFpQixJQUFJLE9BQU8sRUFBRTtnQkFDaEMsV0FBVyxHQUFHLE9BQU8sQ0FBQztnQkFDdEIsTUFBTTtBQUNQLGFBQUE7QUFDRCxZQUFBLGlCQUFpQixFQUFFLENBQUM7QUFDckIsU0FBQTtBQUVELFFBQUEsSUFBSSxhQUFhLEdBQUcsZ0JBQWdCLElBQUksV0FBVyxHQUFHLGdCQUFnQixFQUFFO0FBQ3RFLFlBQUEsT0FBTyxJQUFJLENBQUM7QUFDYixTQUFBOzs7UUFJRCxJQUFJLFdBQVcsR0FBRyxhQUFhLEVBQUU7WUFDL0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3QyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNoQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDakQsTUFBTSxHQUFHLGNBQWMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbkQsZ0JBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUU7QUFDeEMsb0JBQUEsV0FBVyxFQUFFLENBQUM7QUFDZixpQkFBQTtBQUNGLGFBQUE7QUFDRixTQUFBO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQ25CLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQzlCLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFDN0QsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUNsQyxZQUFBLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUU7QUFDaEQsWUFBQSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1NBQzNDLENBQUMsQ0FBQyxDQUNKLENBQUM7QUFFRixRQUFBLElBQUksYUFBYSxHQUFrQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEQsSUFBSSxXQUFXLEdBQXlCLElBQUksQ0FBQztRQUM3QyxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFFdkIsUUFBQSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUUvQyxLQUFLLElBQUksQ0FBQyxHQUFHLGFBQWEsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUUzQyxZQUFBLElBQUksT0FBTyxFQUFFO2dCQUNYLE1BQU0sR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQ3JELGdCQUFBLElBQUksU0FBUyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLENBQUM7QUFFbEQsZ0JBQUEsT0FBTyxHQUFHLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztBQUNyQyxnQkFBQSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLEtBQUsscUJBQXFCLEVBQUU7b0JBQ25FLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUN2QixpQkFBQTtBQUVELGdCQUFBLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3BFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUNuRCxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUVqRSxJQUFJLFdBQVcsS0FBSyxrQkFBa0IsRUFBRTtvQkFDdEMsTUFBTSxRQUFRLEdBQUcsa0JBQWtCO0FBQ2hDLHlCQUFBLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ2xCLHlCQUFBLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkIsb0JBQUEsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFFL0QsT0FBTyxLQUFLLENBQ1YsQ0FBMEMsdUNBQUEsRUFBQSxRQUFRLFdBQVcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUNwRSxDQUFDO0FBQ0gsaUJBQUE7QUFFRCxnQkFBQSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRTtvQkFDeEMsYUFBYSxHQUFHLFdBQVcsQ0FBQztvQkFDNUIsYUFBYSxHQUFHLE1BQU0sQ0FBQztBQUN4QixpQkFBQTtBQUFNLHFCQUFBLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFO29CQUMvQyxPQUNFLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTTt3QkFDMUQsYUFBYSxDQUFDLFNBQVMsRUFBRSxFQUN6QjtBQUNBLHdCQUFBLGFBQWEsR0FBRyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDM0MscUJBQUE7b0JBQ0QsYUFBYSxHQUFHLE1BQU0sQ0FBQztBQUN4QixpQkFBQTtnQkFFRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXpDLGdCQUFBLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FDcEIsSUFBSSxFQUNKLE1BQU0sRUFDTixNQUFNLEVBQ04sZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixPQUFPLEVBQ1AsUUFBUSxDQUNULENBQUM7QUFDRixnQkFBQSxhQUFhLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3hDLGFBQUE7QUFBTSxpQkFBQSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLFdBQVcsRUFBRTtBQUNoQixvQkFBQSxPQUFPLEtBQUssQ0FDVixDQUEwRCx3REFBQSxDQUFBLENBQzNELENBQUM7QUFDSCxpQkFBQTtnQkFFRCxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsY0FBYyxFQUFFLElBQUksYUFBYSxDQUFDO2dCQUVwRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3JDLG9CQUFBLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3RFLE1BQU0sR0FBRyxHQUFHLElBQUk7QUFDYix5QkFBQSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLHlCQUFBLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ2xCLHlCQUFBLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBRXZCLE9BQU8sS0FBSyxDQUNWLENBQTBDLHVDQUFBLEVBQUEsUUFBUSxXQUFXLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FDcEUsQ0FBQztBQUNILGlCQUFBO0FBRUQsZ0JBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsRUFBRTtvQkFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUV0QyxvQkFBQSxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRTtBQUN6RCx3QkFBQSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7NEJBQ3RCLFNBQVM7QUFDVix5QkFBQTtBQUVELHdCQUFBLE9BQU8sS0FBSyxDQUNWLENBQTJELHlEQUFBLENBQUEsQ0FDNUQsQ0FBQztBQUNILHFCQUFBO29CQUVELFdBQVcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsaUJBQUE7QUFFRCxnQkFBQSxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdEUsYUFBQTtBQUFNLGlCQUFBO0FBQ0wsZ0JBQUEsT0FBTyxLQUFLLENBQ1YsQ0FBQSx1REFBQSxFQUEwRCxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQ2xFLENBQUM7QUFDSCxhQUFBO0FBQ0YsU0FBQTtBQUVELFFBQUEsT0FBTyxJQUFJLENBQUM7S0FDYjtBQUVPLElBQUEsV0FBVyxDQUFDLElBQVksRUFBQTtBQUM5QixRQUFBLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7S0FDMUI7QUFFTyxJQUFBLGdCQUFnQixDQUFDLElBQVksRUFBQTtBQUNuQyxRQUFBLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RDO0FBRU8sSUFBQSxVQUFVLENBQUMsSUFBWSxFQUFBO0FBQzdCLFFBQUEsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCO0FBRU8sSUFBQSx1QkFBdUIsQ0FBQyxJQUFZLEVBQUE7QUFDMUMsUUFBQSxPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMzQztBQUNGOztBQ2hSRCxNQUFNLGdCQUFnQixHQUFtQjtBQUN2QyxJQUFBLFVBQVUsRUFBRSxJQUFJO0FBQ2hCLElBQUEsS0FBSyxFQUFFLEtBQUs7QUFDWixJQUFBLFdBQVcsRUFBRSxxQkFBcUI7QUFDbEMsSUFBQSxXQUFXLEVBQUUsSUFBSTtBQUNqQixJQUFBLFNBQVMsRUFBRSxJQUFJO0FBQ2YsSUFBQSxTQUFTLEVBQUUsSUFBSTtBQUNmLElBQUEsU0FBUyxFQUFFLEtBQUs7QUFDaEIsSUFBQSxjQUFjLEVBQUUsZ0JBQWdCO0FBQ2hDLElBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxJQUFBLGVBQWUsRUFBRSxJQUFJO0NBQ3RCLENBQUM7TUFTVyxRQUFRLENBQUE7QUFLbkIsSUFBQSxXQUFBLENBQVksT0FBZ0IsRUFBQTtBQUMxQixRQUFBLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3ZCLFFBQUEsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0tBQzVCO0FBRUQsSUFBQSxJQUFJLHVCQUF1QixHQUFBOztBQUV6QixRQUFBLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFO0FBQ3BDLFlBQUEsT0FBTyxxQkFBcUIsQ0FBQztBQUM5QixTQUFBO0FBQU0sYUFBQSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxLQUFLLEtBQUssRUFBRTtBQUM1QyxZQUFBLE9BQU8sT0FBTyxDQUFDO0FBQ2hCLFNBQUE7QUFFRCxRQUFBLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7S0FDaEM7SUFFRCxJQUFJLHVCQUF1QixDQUFDLEtBQThCLEVBQUE7QUFDeEQsUUFBQSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUNoQztBQUVELElBQUEsSUFBSSxvQkFBb0IsR0FBQTtBQUN0QixRQUFBLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7S0FDOUI7SUFFRCxJQUFJLG9CQUFvQixDQUFDLEtBQWMsRUFBQTtBQUNyQyxRQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzlCO0FBRUQsSUFBQSxJQUFJLHNCQUFzQixHQUFBO0FBQ3hCLFFBQUEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztLQUNoQztJQUVELElBQUksc0JBQXNCLENBQUMsS0FBYyxFQUFBO0FBQ3ZDLFFBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDaEM7QUFFRCxJQUFBLElBQUksMEJBQTBCLEdBQUE7QUFDNUIsUUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO0tBQzlCO0lBRUQsSUFBSSwwQkFBMEIsQ0FBQyxLQUFjLEVBQUE7QUFDM0MsUUFBQSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUM5QjtBQUVELElBQUEsSUFBSSxpQkFBaUIsR0FBQTtBQUNuQixRQUFBLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7S0FDL0I7SUFFRCxJQUFJLGlCQUFpQixDQUFDLEtBQWMsRUFBQTtBQUNsQyxRQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQy9CO0FBRUQsSUFBQSxJQUFJLGFBQWEsR0FBQTtBQUNmLFFBQUEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztLQUM5QjtJQUVELElBQUksYUFBYSxDQUFDLEtBQWMsRUFBQTtBQUM5QixRQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzlCO0FBRUQsSUFBQSxJQUFJLG1CQUFtQixHQUFBO0FBQ3JCLFFBQUEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztLQUNuQztJQUVELElBQUksbUJBQW1CLENBQUMsS0FBMEIsRUFBQTtBQUNoRCxRQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDbkM7QUFFRCxJQUFBLElBQUksV0FBVyxHQUFBO0FBQ2IsUUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0tBQ3hCO0lBRUQsSUFBSSxXQUFXLENBQUMsS0FBYyxFQUFBO0FBQzVCLFFBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDeEI7QUFFRCxJQUFBLElBQUksS0FBSyxHQUFBO0FBQ1AsUUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0tBQzFCO0lBRUQsSUFBSSxLQUFLLENBQUMsS0FBYyxFQUFBO0FBQ3RCLFFBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDMUI7QUFFRCxJQUFBLElBQUksZUFBZSxHQUFBO0FBQ2pCLFFBQUEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztLQUNwQztJQUVELElBQUksZUFBZSxDQUFDLEtBQW9CLEVBQUE7QUFDdEMsUUFBQSxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ3BDO0FBRUQsSUFBQSxRQUFRLENBQUMsRUFBWSxFQUFBO0FBQ25CLFFBQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDeEI7QUFFRCxJQUFBLGNBQWMsQ0FBQyxFQUFZLEVBQUE7QUFDekIsUUFBQSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUMzQjtJQUVELEtBQUssR0FBQTtBQUNILFFBQUEsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtBQUNyRCxZQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4QyxTQUFBO0tBQ0Y7SUFFSyxJQUFJLEdBQUE7O0FBQ1IsWUFBQSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ3pCLEVBQUUsRUFDRixnQkFBZ0IsRUFDaEIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUM5QixDQUFDO1NBQ0gsQ0FBQSxDQUFBO0FBQUEsS0FBQTtJQUVLLElBQUksR0FBQTs7WUFDUixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMxQyxDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUQsU0FBUyxHQUFBO1FBQ1AsT0FBWSxNQUFBLENBQUEsTUFBQSxDQUFBLEVBQUEsRUFBQSxJQUFJLENBQUMsTUFBTSxDQUFHLENBQUE7S0FDM0I7SUFFTyxHQUFHLENBQ1QsR0FBTSxFQUNOLEtBQXdCLEVBQUE7QUFFeEIsUUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUV6QixRQUFBLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUMvQixZQUFBLEVBQUUsRUFBRSxDQUFDO0FBQ04sU0FBQTtLQUNGO0FBQ0Y7O0FDL0lvQixNQUFBLHNCQUF1QixTQUFRUSxlQUFNLENBQUE7SUFVbEQsTUFBTSxHQUFBOztBQUNWLFlBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBLHlCQUFBLENBQTJCLENBQUMsQ0FBQztBQUV6QyxZQUFBLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRTdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxZQUFBLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckQsWUFBQSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0FBQ2pELFlBQUEsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksa0JBQWtCLENBQzlDLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUN2QixDQUFDO0FBRUYsWUFBQSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFDckMsWUFBQSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFOUIsSUFBSSxDQUFDLFFBQVEsR0FBRzs7QUFFZCxnQkFBQSxJQUFJLHdCQUF3QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQ2pELGdCQUFBLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQ3BDLGdCQUFBLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDOztnQkFHbkMsSUFBSSxxQkFBcUIsQ0FDdkIsSUFBSSxFQUNKLElBQUksQ0FBQyxnQkFBZ0IsRUFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUN4QjtBQUNELGdCQUFBLElBQUksb0JBQW9CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQzs7QUFHckQsZ0JBQUEsSUFBSSxpQ0FBaUMsQ0FDbkMsSUFBSSxFQUNKLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsa0JBQWtCLENBQ3hCO0FBQ0QsZ0JBQUEsSUFBSSwwQ0FBMEMsQ0FDNUMsSUFBSSxFQUNKLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLGtCQUFrQixDQUN4QjtBQUNELGdCQUFBLElBQUksMEJBQTBCLENBQzVCLElBQUksRUFDSixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEI7QUFDRCxnQkFBQSxJQUFJLDhCQUE4QixDQUNoQyxJQUFJLEVBQ0osSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQ3hCO0FBQ0QsZ0JBQUEsSUFBSSx1QkFBdUIsQ0FDekIsSUFBSSxFQUNKLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLGtCQUFrQixDQUN4Qjs7QUFHRCxnQkFBQSxJQUFJLG9CQUFvQixDQUN0QixJQUFJLEVBQ0osSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEI7QUFDRCxnQkFBQSxJQUFJLHlCQUF5QixDQUMzQixJQUFJLEVBQ0osSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsa0JBQWtCLENBQ3hCOztnQkFHRCxJQUFJLHNCQUFzQixDQUN4QixJQUFJLEVBQ0osSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUN4Qjs7QUFHRCxnQkFBQSxJQUFJLDZCQUE2QixDQUMvQixJQUFJLEVBQ0osSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQ3hCOztnQkFHRCxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDOztBQUczRCxnQkFBQSxJQUFJLGFBQWEsQ0FDZixJQUFJLEVBQ0osSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksQ0FBQyxNQUFNLENBQ1o7O0FBR0QsZ0JBQUEsSUFBSSxXQUFXLENBQ2IsSUFBSSxFQUNKLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEI7YUFDRixDQUFDO0FBRUYsWUFBQSxLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDbkMsZ0JBQUEsTUFBTSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDdEIsYUFBQTtTQUNGLENBQUEsQ0FBQTtBQUFBLEtBQUE7SUFFSyxRQUFRLEdBQUE7O0FBQ1osWUFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUEsMkJBQUEsQ0FBNkIsQ0FBQyxDQUFDO0FBRTNDLFlBQUEsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBRWhDLFlBQUEsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ25DLGdCQUFBLE1BQU0sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3hCLGFBQUE7U0FDRixDQUFBLENBQUE7QUFBQSxLQUFBO0lBRWUsZUFBZSxHQUFBOztZQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25DLFlBQUEsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzVCLENBQUEsQ0FBQTtBQUFBLEtBQUE7QUFDRjs7OzsiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9vcGVyYXRpb25zL01vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lLnRzIiwic3JjL2VkaXRvci9pbmRleC50cyIsInNyYy91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFjay50cyIsInNyYy9mZWF0dXJlcy9BcnJvd0xlZnRBbmRDdHJsQXJyb3dMZWZ0QmVoYXZpb3VyT3ZlcnJpZGUudHMiLCJzcmMvcm9vdC9pbmRleC50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnRzIiwic3JjL2ZlYXR1cmVzL0JhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlLnRzIiwic3JjL2ZlYXR1cmVzL0JldHRlckxpc3RzU3R5bGVzLnRzIiwic3JjL29wZXJhdGlvbnMvU2VsZWN0QWxsQ29udGVudC50cyIsInNyYy9mZWF0dXJlcy9DdHJsQUFuZENtZEFCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxOZXh0TGluZUNvbnRlbnRTdGFydC50cyIsInNyYy9mZWF0dXJlcy9EZWxldGVCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy9vcGVyYXRpb25zL01vdmVMaXN0VG9EaWZmZXJlbnRQb3NpdGlvbi50cyIsInNyYy9mZWF0dXJlcy9EcmFnQW5kRHJvcC50cyIsInNyYy9vcGVyYXRpb25zL0tlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMudHMiLCJzcmMvb3BlcmF0aW9ucy9LZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnQudHMiLCJzcmMvZmVhdHVyZXMvRWRpdG9yU2VsZWN0aW9uc0JlaGF2aW91ck92ZXJyaWRlLnRzIiwic3JjL3V0aWxzL2NoZWNrYm94UmUudHMiLCJzcmMvdXRpbHMvaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gudHMiLCJzcmMvb3BlcmF0aW9ucy9DcmVhdGVOZXdJdGVtLnRzIiwic3JjL29wZXJhdGlvbnMvT3V0ZGVudExpc3QudHMiLCJzcmMvb3BlcmF0aW9ucy9PdXRkZW50TGlzdElmSXRzRW1wdHkudHMiLCJzcmMvZmVhdHVyZXMvRW50ZXJCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy91dGlscy9jcmVhdGVFZGl0b3JDYWxsYmFjay50cyIsInNyYy9mZWF0dXJlcy9MaXN0c0ZvbGRpbmdDb21tYW5kcy50cyIsInNyYy9vcGVyYXRpb25zL0luZGVudExpc3QudHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlTGlzdERvd24udHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlTGlzdFVwLnRzIiwic3JjL2ZlYXR1cmVzL0xpc3RzTW92ZW1lbnRDb21tYW5kcy50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxDdXJyZW50TGluZUNvbnRlbnRTdGFydC50cyIsInNyYy9mZWF0dXJlcy9NZXRhQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGUudHMiLCJzcmMvZmVhdHVyZXMvUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50LnRzIiwic3JjL2ZlYXR1cmVzL1NldHRpbmdzVGFiLnRzIiwic3JjL2ZlYXR1cmVzL1NoaWZ0VGFiQmVoYXZpb3VyT3ZlcnJpZGUudHMiLCJzcmMvZmVhdHVyZXMvU3lzdGVtSW5mby50cyIsInNyYy9mZWF0dXJlcy9UYWJCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy9mZWF0dXJlcy9WZXJ0aWNhbExpbmVzLnRzIiwic3JjL3NlcnZpY2VzL0NoYW5nZXNBcHBsaWNhdG9yLnRzIiwic3JjL3NlcnZpY2VzL0lNRURldGVjdG9yLnRzIiwic3JjL3NlcnZpY2VzL0xvZ2dlci50cyIsInNyYy9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzLnRzIiwic3JjL3NlcnZpY2VzL09wZXJhdGlvblBlcmZvcm1lci50cyIsInNyYy9zZXJ2aWNlcy9QYXJzZXIudHMiLCJzcmMvc2VydmljZXMvU2V0dGluZ3MudHMiLCJzcmMvT2JzaWRpYW5PdXRsaW5lclBsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMucHVzaChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy5wdXNoKF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBMaXN0TGluZSwgUG9zaXRpb24sIFJvb3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmUgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gdGhpcy5yb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGN1cnNvciA9IHRoaXMucm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCk7XG4gICAgY29uc3QgbGluZU5vID0gbGluZXMuZmluZEluZGV4KChsKSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBjdXJzb3IuY2ggPT09IGwuZnJvbS5jaCArIGxpc3QuZ2V0Q2hlY2tib3hMZW5ndGgoKSAmJlxuICAgICAgICBjdXJzb3IubGluZSA9PT0gbC5mcm9tLmxpbmVcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpZiAobGluZU5vID09PSAwKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRJdGVtKHJvb3QsIGN1cnNvcik7XG4gICAgfSBlbHNlIGlmIChsaW5lTm8gPiAwKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3JUb1ByZXZpb3VzTm90ZUxpbmUocm9vdCwgbGluZXMsIGxpbmVObyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ3Vyc29yVG9QcmV2aW91c05vdGVMaW5lKFxuICAgIHJvb3Q6IFJvb3QsXG4gICAgbGluZXM6IExpc3RMaW5lW10sXG4gICAgbGluZU5vOiBudW1iZXJcbiAgKSB7XG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICByb290LnJlcGxhY2VDdXJzb3IobGluZXNbbGluZU5vIC0gMV0udG8pO1xuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkSXRlbShyb290OiBSb290LCBjdXJzb3I6IFBvc2l0aW9uKSB7XG4gICAgY29uc3QgcHJldiA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShjdXJzb3IubGluZSAtIDEpO1xuXG4gICAgaWYgKCFwcmV2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBpZiAocHJldi5pc0ZvbGRlZCgpKSB7XG4gICAgICBjb25zdCBmb2xkUm9vdCA9IHByZXYuZ2V0VG9wRm9sZFJvb3QoKTtcbiAgICAgIGNvbnN0IGZpcnN0TGluZUVuZCA9IGZvbGRSb290LmdldExpbmVzSW5mbygpWzBdLnRvO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKGZpcnN0TGluZUVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihwcmV2LmdldExhc3RMaW5lQ29udGVudEVuZCgpKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IEVkaXRvciwgZWRpdG9ySW5mb0ZpZWxkIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7XG4gIGZvbGRFZmZlY3QsXG4gIGZvbGRhYmxlLFxuICBmb2xkZWRSYW5nZXMsXG4gIHVuZm9sZEVmZmVjdCxcbn0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5pbXBvcnQgeyBFZGl0b3JTdGF0ZSB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgRWRpdG9yVmlldywgcnVuU2NvcGVIYW5kbGVycyB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmV4cG9ydCBjbGFzcyBNeUVkaXRvclBvc2l0aW9uIHtcbiAgbGluZTogbnVtYmVyO1xuICBjaDogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3JSYW5nZSB7XG4gIGZyb206IE15RWRpdG9yUG9zaXRpb247XG4gIHRvOiBNeUVkaXRvclBvc2l0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3JTZWxlY3Rpb24ge1xuICBhbmNob3I6IE15RWRpdG9yUG9zaXRpb247XG4gIGhlYWQ6IE15RWRpdG9yUG9zaXRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFZGl0b3JGcm9tU3RhdGUoc3RhdGU6IEVkaXRvclN0YXRlKSB7XG4gIGNvbnN0IHsgZWRpdG9yIH0gPSBzdGF0ZS5maWVsZChlZGl0b3JJbmZvRmllbGQpO1xuXG4gIGlmICghZWRpdG9yKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gbmV3IE15RWRpdG9yKGVkaXRvcik7XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgT2JzaWRpYW5ab29tUGx1Z2luPzoge1xuICAgICAgZ2V0Wm9vbVJhbmdlKGU6IEVkaXRvcik6IE15RWRpdG9yUmFuZ2U7XG4gICAgICB6b29tT3V0KGU6IEVkaXRvcik6IHZvaWQ7XG4gICAgICB6b29tSW4oZTogRWRpdG9yLCBsaW5lOiBudW1iZXIpOiB2b2lkO1xuICAgICAgcmVmcmVzaFpvb20/KGU6IEVkaXRvcik6IHZvaWQ7XG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb2xkSW5zaWRlKHZpZXc6IEVkaXRvclZpZXcsIGZyb206IG51bWJlciwgdG86IG51bWJlcikge1xuICBsZXQgZm91bmQ6IHsgZnJvbTogbnVtYmVyOyB0bzogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcbiAgZm9sZGVkUmFuZ2VzKHZpZXcuc3RhdGUpLmJldHdlZW4oZnJvbSwgdG8sIChmcm9tLCB0bykgPT4ge1xuICAgIGlmICghZm91bmQgfHwgZm91bmQuZnJvbSA+IGZyb20pIGZvdW5kID0geyBmcm9tLCB0byB9O1xuICB9KTtcbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3Ige1xuICBwcml2YXRlIHZpZXc6IEVkaXRvclZpZXc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlOiBFZGl0b3IpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHRoaXMudmlldyA9ICh0aGlzLmUgYXMgYW55KS5jbTtcbiAgfVxuXG4gIGdldEN1cnNvcigpOiBNeUVkaXRvclBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5lLmdldEN1cnNvcigpO1xuICB9XG5cbiAgZ2V0TGluZShuOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0TGluZShuKTtcbiAgfVxuXG4gIGxhc3RMaW5lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZS5sYXN0TGluZSgpO1xuICB9XG5cbiAgbGlzdFNlbGVjdGlvbnMoKTogTXlFZGl0b3JTZWxlY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuZS5saXN0U2VsZWN0aW9ucygpO1xuICB9XG5cbiAgZ2V0UmFuZ2UoZnJvbTogTXlFZGl0b3JQb3NpdGlvbiwgdG86IE15RWRpdG9yUG9zaXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0UmFuZ2UoZnJvbSwgdG8pO1xuICB9XG5cbiAgcmVwbGFjZVJhbmdlKFxuICAgIHJlcGxhY2VtZW50OiBzdHJpbmcsXG4gICAgZnJvbTogTXlFZGl0b3JQb3NpdGlvbixcbiAgICB0bzogTXlFZGl0b3JQb3NpdGlvblxuICApOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5lLnJlcGxhY2VSYW5nZShyZXBsYWNlbWVudCwgZnJvbSwgdG8pO1xuICB9XG5cbiAgc2V0U2VsZWN0aW9ucyhzZWxlY3Rpb25zOiBNeUVkaXRvclNlbGVjdGlvbltdKTogdm9pZCB7XG4gICAgdGhpcy5lLnNldFNlbGVjdGlvbnMoc2VsZWN0aW9ucyk7XG4gIH1cblxuICBzZXRWYWx1ZSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmUuc2V0VmFsdWUodGV4dCk7XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIG9mZnNldFRvUG9zKG9mZnNldDogbnVtYmVyKTogTXlFZGl0b3JQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZS5vZmZzZXRUb1BvcyhvZmZzZXQpO1xuICB9XG5cbiAgcG9zVG9PZmZzZXQocG9zOiBNeUVkaXRvclBvc2l0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5lLnBvc1RvT2Zmc2V0KHBvcyk7XG4gIH1cblxuICBmb2xkKG46IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmlldyB9ID0gdGhpcztcbiAgICBjb25zdCBsID0gdmlldy5saW5lQmxvY2tBdCh2aWV3LnN0YXRlLmRvYy5saW5lKG4gKyAxKS5mcm9tKTtcbiAgICBjb25zdCByYW5nZSA9IGZvbGRhYmxlKHZpZXcuc3RhdGUsIGwuZnJvbSwgbC50byk7XG5cbiAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLmZyb20gPT09IHJhbmdlLnRvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmlldy5kaXNwYXRjaCh7IGVmZmVjdHM6IFtmb2xkRWZmZWN0Lm9mKHJhbmdlKV0gfSk7XG4gIH1cblxuICB1bmZvbGQobjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgeyB2aWV3IH0gPSB0aGlzO1xuICAgIGNvbnN0IGwgPSB2aWV3LmxpbmVCbG9ja0F0KHZpZXcuc3RhdGUuZG9jLmxpbmUobiArIDEpLmZyb20pO1xuICAgIGNvbnN0IHJhbmdlID0gZm9sZEluc2lkZSh2aWV3LCBsLmZyb20sIGwudG8pO1xuXG4gICAgaWYgKCFyYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZpZXcuZGlzcGF0Y2goeyBlZmZlY3RzOiBbdW5mb2xkRWZmZWN0Lm9mKHJhbmdlKV0gfSk7XG4gIH1cblxuICBnZXRBbGxGb2xkZWRMaW5lcygpOiBudW1iZXJbXSB7XG4gICAgY29uc3QgYyA9IGZvbGRlZFJhbmdlcyh0aGlzLnZpZXcuc3RhdGUpLml0ZXIoKTtcbiAgICBjb25zdCByZXM6IG51bWJlcltdID0gW107XG4gICAgd2hpbGUgKGMudmFsdWUpIHtcbiAgICAgIHJlcy5wdXNoKHRoaXMub2Zmc2V0VG9Qb3MoYy5mcm9tKS5saW5lKTtcbiAgICAgIGMubmV4dCgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgdHJpZ2dlck9uS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgcnVuU2NvcGVIYW5kbGVycyh0aGlzLnZpZXcsIGUsIFwiZWRpdG9yXCIpO1xuICB9XG5cbiAgZ2V0Wm9vbVJhbmdlKCk6IE15RWRpdG9yUmFuZ2UgfCBudWxsIHtcbiAgICBpZiAoIXdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luLmdldFpvb21SYW5nZSh0aGlzLmUpO1xuICB9XG5cbiAgem9vbU91dCgpIHtcbiAgICBpZiAoIXdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luLnpvb21PdXQodGhpcy5lKTtcbiAgfVxuXG4gIHpvb21JbihsaW5lOiBudW1iZXIpIHtcbiAgICBpZiAoIXdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luLnpvb21Jbih0aGlzLmUsIGxpbmUpO1xuICB9XG5cbiAgdHJ5UmVmcmVzaFpvb20obGluZTogbnVtYmVyKSB7XG4gICAgaWYgKCF3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4ucmVmcmVzaFpvb20pIHtcbiAgICAgIHdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4ucmVmcmVzaFpvb20odGhpcy5lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lk9ic2lkaWFuWm9vbVBsdWdpbi56b29tSW4odGhpcy5lLCBsaW5lKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciwgZ2V0RWRpdG9yRnJvbVN0YXRlIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soY29uZmlnOiB7XG4gIGNoZWNrPzogKGVkaXRvcjogTXlFZGl0b3IpID0+IGJvb2xlYW47XG4gIHJ1bjogKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBzaG91bGRVcGRhdGU6IGJvb2xlYW47XG4gICAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uOiBib29sZWFuO1xuICB9O1xufSkge1xuICBjb25zdCBjaGVjayA9IGNvbmZpZy5jaGVjayB8fCAoKCkgPT4gdHJ1ZSk7XG4gIGNvbnN0IHsgcnVuIH0gPSBjb25maWc7XG5cbiAgcmV0dXJuICh2aWV3OiBFZGl0b3JWaWV3KTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgZWRpdG9yID0gZ2V0RWRpdG9yRnJvbVN0YXRlKHZpZXcuc3RhdGUpO1xuXG4gICAgaWYgKCFjaGVjayhlZGl0b3IpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgeyBzaG91bGRVcGRhdGUsIHNob3VsZFN0b3BQcm9wYWdhdGlvbiB9ID0gcnVuKGVkaXRvcik7XG5cbiAgICByZXR1cm4gc2hvdWxkVXBkYXRlIHx8IHNob3VsZFN0b3BQcm9wYWdhdGlvbjtcbiAgfTtcbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmUgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9Nb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkTGluZVwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgQXJyb3dMZWZ0QW5kQ3RybEFycm93TGVmdEJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJBcnJvd0xlZnRcIixcbiAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHdpbjogXCJjLUFycm93TGVmdFwiLFxuICAgICAgICAgIGxpbnV4OiBcImMtQXJyb3dMZWZ0XCIsXG4gICAgICAgICAgcnVuOiBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgIT09IFwibmV2ZXJcIiAmJlxuICAgICAgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkTGluZShyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gY21wUG9zKGE6IFBvc2l0aW9uLCBiOiBQb3NpdGlvbikge1xuICByZXR1cm4gYS5saW5lIC0gYi5saW5lIHx8IGEuY2ggLSBiLmNoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF4UG9zKGE6IFBvc2l0aW9uLCBiOiBQb3NpdGlvbikge1xuICByZXR1cm4gY21wUG9zKGEsIGIpIDwgMCA/IGIgOiBhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluUG9zKGE6IFBvc2l0aW9uLCBiOiBQb3NpdGlvbikge1xuICByZXR1cm4gY21wUG9zKGEsIGIpIDwgMCA/IGEgOiBiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSYW5nZXNJbnRlcnNlY3RzKFxuICBhOiBbUG9zaXRpb24sIFBvc2l0aW9uXSxcbiAgYjogW1Bvc2l0aW9uLCBQb3NpdGlvbl1cbikge1xuICByZXR1cm4gY21wUG9zKGFbMV0sIGJbMF0pID49IDAgJiYgY21wUG9zKGFbMF0sIGJbMV0pIDw9IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3Q6IFJvb3QpIHtcbiAgZnVuY3Rpb24gdmlzaXQocGFyZW50OiBSb290IHwgTGlzdCkge1xuICAgIGxldCBpbmRleCA9IDE7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHBhcmVudC5nZXRDaGlsZHJlbigpKSB7XG4gICAgICBpZiAoL1xcZCtcXC4vLnRlc3QoY2hpbGQuZ2V0QnVsbGV0KCkpKSB7XG4gICAgICAgIGNoaWxkLnJlcGxhdGVCdWxsZXQoYCR7aW5kZXgrK30uYCk7XG4gICAgICB9XG5cbiAgICAgIHZpc2l0KGNoaWxkKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdChyb290KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3NpdGlvbiB7XG4gIGNoOiBudW1iZXI7XG4gIGxpbmU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0TGluZSB7XG4gIHRleHQ6IHN0cmluZztcbiAgZnJvbTogUG9zaXRpb247XG4gIHRvOiBQb3NpdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYW5nZSB7XG4gIGFuY2hvcjogUG9zaXRpb247XG4gIGhlYWQ6IFBvc2l0aW9uO1xufVxuXG5sZXQgaWRTZXEgPSAwO1xuXG5leHBvcnQgY2xhc3MgTGlzdCB7XG4gIHByaXZhdGUgaWQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBwYXJlbnQ6IExpc3QgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjaGlsZHJlbjogTGlzdFtdID0gW107XG4gIHByaXZhdGUgbm90ZXNJbmRlbnQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm9vdDogUm9vdCxcbiAgICBwcml2YXRlIGluZGVudDogc3RyaW5nLFxuICAgIHByaXZhdGUgYnVsbGV0OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBvcHRpb25hbENoZWNrYm94OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBzcGFjZUFmdGVyQnVsbGV0OiBzdHJpbmcsXG4gICAgZmlyc3RMaW5lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBmb2xkUm9vdDogYm9vbGVhblxuICApIHtcbiAgICB0aGlzLmlkID0gaWRTZXErKztcbiAgICB0aGlzLmxpbmVzLnB1c2goZmlyc3RMaW5lKTtcbiAgfVxuXG4gIGdldElEKCkge1xuICAgIHJldHVybiB0aGlzLmlkO1xuICB9XG5cbiAgZ2V0Tm90ZXNJbmRlbnQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubm90ZXNJbmRlbnQ7XG4gIH1cblxuICBzZXROb3Rlc0luZGVudChub3Rlc0luZGVudDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMubm90ZXNJbmRlbnQgIT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm90ZXMgaW5kZW50IGFscmVhZHkgcHJvdmlkZWRgKTtcbiAgICB9XG4gICAgdGhpcy5ub3Rlc0luZGVudCA9IG5vdGVzSW5kZW50O1xuICB9XG5cbiAgYWRkTGluZSh0ZXh0OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5ub3Rlc0luZGVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5hYmxlIHRvIGFkZCBsaW5lLCBub3RlcyBpbmRlbnQgc2hvdWxkIGJlIHByb3ZpZGVkIGZpcnN0YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmVzLnB1c2godGV4dCk7XG4gIH1cblxuICByZXBsYWNlTGluZXMobGluZXM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKGxpbmVzLmxlbmd0aCA+IDEgJiYgdGhpcy5ub3Rlc0luZGVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5hYmxlIHRvIGFkZCBsaW5lLCBub3RlcyBpbmRlbnQgc2hvdWxkIGJlIHByb3ZpZGVkIGZpcnN0YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmVzID0gbGluZXM7XG4gIH1cblxuICBnZXRMaW5lQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGluZXMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0Um9vdCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb290O1xuICB9XG5cbiAgZ2V0Q2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4uY29uY2F0KCk7XG4gIH1cblxuICBnZXRMaW5lc0luZm8oKTogTGlzdExpbmVbXSB7XG4gICAgY29uc3Qgc3RhcnRMaW5lID0gdGhpcy5yb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YodGhpcylbMF07XG5cbiAgICByZXR1cm4gdGhpcy5saW5lcy5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgY29uc3QgbGluZSA9IHN0YXJ0TGluZSArIGk7XG4gICAgICBjb25zdCBzdGFydENoID1cbiAgICAgICAgaSA9PT0gMCA/IHRoaXMuZ2V0Q29udGVudFN0YXJ0Q2goKSA6IHRoaXMubm90ZXNJbmRlbnQubGVuZ3RoO1xuICAgICAgY29uc3QgZW5kQ2ggPSBzdGFydENoICsgcm93Lmxlbmd0aDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGV4dDogcm93LFxuICAgICAgICBmcm9tOiB7IGxpbmUsIGNoOiBzdGFydENoIH0sXG4gICAgICAgIHRvOiB7IGxpbmUsIGNoOiBlbmRDaCB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldExpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5saW5lcy5jb25jYXQoKTtcbiAgfVxuXG4gIGdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpIHtcbiAgICBjb25zdCBzdGFydExpbmUgPSB0aGlzLnJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZih0aGlzKVswXTtcblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBzdGFydExpbmUsXG4gICAgICBjaDogdGhpcy5nZXRDb250ZW50U3RhcnRDaCgpLFxuICAgIH07XG4gIH1cblxuICBnZXRGaXJzdExpbmVDb250ZW50U3RhcnRBZnRlckNoZWNrYm94KCkge1xuICAgIGNvbnN0IHN0YXJ0TGluZSA9IHRoaXMucm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKHRoaXMpWzBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IHN0YXJ0TGluZSxcbiAgICAgIGNoOiB0aGlzLmdldENvbnRlbnRTdGFydENoKCkgKyB0aGlzLmdldENoZWNrYm94TGVuZ3RoKCksXG4gICAgfTtcbiAgfVxuXG4gIGdldExhc3RMaW5lQ29udGVudEVuZCgpIHtcbiAgICBjb25zdCBlbmRMaW5lID0gdGhpcy5yb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YodGhpcylbMV07XG4gICAgY29uc3QgZW5kQ2ggPVxuICAgICAgdGhpcy5saW5lcy5sZW5ndGggPT09IDFcbiAgICAgICAgPyB0aGlzLmdldENvbnRlbnRTdGFydENoKCkgKyB0aGlzLmxpbmVzWzBdLmxlbmd0aFxuICAgICAgICA6IHRoaXMubm90ZXNJbmRlbnQubGVuZ3RoICsgdGhpcy5saW5lc1t0aGlzLmxpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aDtcblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBlbmRMaW5lLFxuICAgICAgY2g6IGVuZENoLFxuICAgIH07XG4gIH1cblxuICBnZXRDb250ZW50RW5kSW5jbHVkaW5nQ2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGFzdENoaWxkKCkuZ2V0TGFzdExpbmVDb250ZW50RW5kKCk7XG4gIH1cblxuICBwcml2YXRlIGdldExhc3RDaGlsZCgpIHtcbiAgICBsZXQgbGFzdENoaWxkOiBMaXN0ID0gdGhpcztcblxuICAgIHdoaWxlICghbGFzdENoaWxkLmlzRW1wdHkoKSkge1xuICAgICAgbGFzdENoaWxkID0gbGFzdENoaWxkLmdldENoaWxkcmVuKCkubGFzdCgpO1xuICAgIH1cblxuICAgIHJldHVybiBsYXN0Q2hpbGQ7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRlbnRTdGFydENoKCkge1xuICAgIHJldHVybiB0aGlzLmluZGVudC5sZW5ndGggKyB0aGlzLmJ1bGxldC5sZW5ndGggKyAxO1xuICB9XG5cbiAgaXNGb2xkZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZm9sZFJvb3QpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmlzRm9sZGVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNGb2xkUm9vdCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb2xkUm9vdDtcbiAgfVxuXG4gIGdldFRvcEZvbGRSb290KCkge1xuICAgIGxldCB0bXA6IExpc3QgPSB0aGlzO1xuICAgIGxldCBmb2xkUm9vdDogTGlzdCB8IG51bGwgPSBudWxsO1xuICAgIHdoaWxlICh0bXApIHtcbiAgICAgIGlmICh0bXAuaXNGb2xkUm9vdCgpKSB7XG4gICAgICAgIGZvbGRSb290ID0gdG1wO1xuICAgICAgfVxuICAgICAgdG1wID0gdG1wLnBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIGZvbGRSb290O1xuICB9XG5cbiAgZ2V0TGV2ZWwoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMucGFyZW50KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0TGV2ZWwoKSArIDE7XG4gIH1cblxuICB1bmluZGVudENvbnRlbnQoZnJvbTogbnVtYmVyLCB0aWxsOiBudW1iZXIpIHtcbiAgICB0aGlzLmluZGVudCA9IHRoaXMuaW5kZW50LnNsaWNlKDAsIGZyb20pICsgdGhpcy5pbmRlbnQuc2xpY2UodGlsbCk7XG4gICAgaWYgKHRoaXMubm90ZXNJbmRlbnQgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubm90ZXNJbmRlbnQgPVxuICAgICAgICB0aGlzLm5vdGVzSW5kZW50LnNsaWNlKDAsIGZyb20pICsgdGhpcy5ub3Rlc0luZGVudC5zbGljZSh0aWxsKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGRyZW4pIHtcbiAgICAgIGNoaWxkLnVuaW5kZW50Q29udGVudChmcm9tLCB0aWxsKTtcbiAgICB9XG4gIH1cblxuICBpbmRlbnRDb250ZW50KGluZGVudFBvczogbnVtYmVyLCBpbmRlbnRDaGFyczogc3RyaW5nKSB7XG4gICAgdGhpcy5pbmRlbnQgPVxuICAgICAgdGhpcy5pbmRlbnQuc2xpY2UoMCwgaW5kZW50UG9zKSArXG4gICAgICBpbmRlbnRDaGFycyArXG4gICAgICB0aGlzLmluZGVudC5zbGljZShpbmRlbnRQb3MpO1xuICAgIGlmICh0aGlzLm5vdGVzSW5kZW50ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLm5vdGVzSW5kZW50ID1cbiAgICAgICAgdGhpcy5ub3Rlc0luZGVudC5zbGljZSgwLCBpbmRlbnRQb3MpICtcbiAgICAgICAgaW5kZW50Q2hhcnMgK1xuICAgICAgICB0aGlzLm5vdGVzSW5kZW50LnNsaWNlKGluZGVudFBvcyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkcmVuKSB7XG4gICAgICBjaGlsZC5pbmRlbnRDb250ZW50KGluZGVudFBvcywgaW5kZW50Q2hhcnMpO1xuICAgIH1cbiAgfVxuXG4gIGdldEZpcnN0TGluZUluZGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbmRlbnQ7XG4gIH1cblxuICBnZXRCdWxsZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVsbGV0O1xuICB9XG5cbiAgZ2V0U3BhY2VBZnRlckJ1bGxldCgpIHtcbiAgICByZXR1cm4gdGhpcy5zcGFjZUFmdGVyQnVsbGV0O1xuICB9XG5cbiAgZ2V0Q2hlY2tib3hMZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uYWxDaGVja2JveC5sZW5ndGg7XG4gIH1cblxuICByZXBsYXRlQnVsbGV0KGJ1bGxldDogc3RyaW5nKSB7XG4gICAgdGhpcy5idWxsZXQgPSBidWxsZXQ7XG4gIH1cblxuICBnZXRQYXJlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgYWRkQmVmb3JlQWxsKGxpc3Q6IExpc3QpIHtcbiAgICB0aGlzLmNoaWxkcmVuLnVuc2hpZnQobGlzdCk7XG4gICAgbGlzdC5wYXJlbnQgPSB0aGlzO1xuICB9XG5cbiAgYWRkQWZ0ZXJBbGwobGlzdDogTGlzdCkge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaChsaXN0KTtcbiAgICBsaXN0LnBhcmVudCA9IHRoaXM7XG4gIH1cblxuICByZW1vdmVDaGlsZChsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihsaXN0KTtcbiAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpLCAxKTtcbiAgICBsaXN0LnBhcmVudCA9IG51bGw7XG4gIH1cblxuICBhZGRCZWZvcmUoYmVmb3JlOiBMaXN0LCBsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihiZWZvcmUpO1xuICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGksIDAsIGxpc3QpO1xuICAgIGxpc3QucGFyZW50ID0gdGhpcztcbiAgfVxuXG4gIGFkZEFmdGVyKGJlZm9yZTogTGlzdCwgbGlzdDogTGlzdCkge1xuICAgIGNvbnN0IGkgPSB0aGlzLmNoaWxkcmVuLmluZGV4T2YoYmVmb3JlKTtcbiAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpICsgMSwgMCwgbGlzdCk7XG4gICAgbGlzdC5wYXJlbnQgPSB0aGlzO1xuICB9XG5cbiAgZ2V0UHJldlNpYmxpbmdPZihsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihsaXN0KTtcbiAgICByZXR1cm4gaSA+IDAgPyB0aGlzLmNoaWxkcmVuW2kgLSAxXSA6IG51bGw7XG4gIH1cblxuICBnZXROZXh0U2libGluZ09mKGxpc3Q6IExpc3QpIHtcbiAgICBjb25zdCBpID0gdGhpcy5jaGlsZHJlbi5pbmRleE9mKGxpc3QpO1xuICAgIHJldHVybiBpID49IDAgJiYgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoID8gdGhpcy5jaGlsZHJlbltpICsgMV0gOiBudWxsO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcmludCgpIHtcbiAgICBsZXQgcmVzID0gXCJcIjtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5saW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzICs9XG4gICAgICAgIGkgPT09IDBcbiAgICAgICAgICA/IHRoaXMuaW5kZW50ICsgdGhpcy5idWxsZXQgKyB0aGlzLnNwYWNlQWZ0ZXJCdWxsZXRcbiAgICAgICAgICA6IHRoaXMubm90ZXNJbmRlbnQ7XG4gICAgICByZXMgKz0gdGhpcy5saW5lc1tpXTtcbiAgICAgIHJlcyArPSBcIlxcblwiO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbikge1xuICAgICAgcmVzICs9IGNoaWxkLnByaW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIGNsb25lKG5ld1Jvb3Q6IFJvb3QpIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBMaXN0KFxuICAgICAgbmV3Um9vdCxcbiAgICAgIHRoaXMuaW5kZW50LFxuICAgICAgdGhpcy5idWxsZXQsXG4gICAgICB0aGlzLm9wdGlvbmFsQ2hlY2tib3gsXG4gICAgICB0aGlzLnNwYWNlQWZ0ZXJCdWxsZXQsXG4gICAgICBcIlwiLFxuICAgICAgdGhpcy5mb2xkUm9vdFxuICAgICk7XG4gICAgY2xvbmUuaWQgPSB0aGlzLmlkO1xuICAgIGNsb25lLmxpbmVzID0gdGhpcy5saW5lcy5jb25jYXQoKTtcbiAgICBjbG9uZS5ub3Rlc0luZGVudCA9IHRoaXMubm90ZXNJbmRlbnQ7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkcmVuKSB7XG4gICAgICBjbG9uZS5hZGRBZnRlckFsbChjaGlsZC5jbG9uZShuZXdSb290KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSb290IHtcbiAgcHJpdmF0ZSByb290TGlzdCA9IG5ldyBMaXN0KHRoaXMsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIGZhbHNlKTtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25zOiBSYW5nZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdGFydDogUG9zaXRpb24sXG4gICAgcHJpdmF0ZSBlbmQ6IFBvc2l0aW9uLFxuICAgIHNlbGVjdGlvbnM6IFJhbmdlW11cbiAgKSB7XG4gICAgdGhpcy5yZXBsYWNlU2VsZWN0aW9ucyhzZWxlY3Rpb25zKTtcbiAgfVxuXG4gIGdldFJvb3RMaXN0KCkge1xuICAgIHJldHVybiB0aGlzLnJvb3RMaXN0O1xuICB9XG5cbiAgZ2V0Q29udGVudFJhbmdlKCk6IFtQb3NpdGlvbiwgUG9zaXRpb25dIHtcbiAgICByZXR1cm4gW3RoaXMuZ2V0Q29udGVudFN0YXJ0KCksIHRoaXMuZ2V0Q29udGVudEVuZCgpXTtcbiAgfVxuXG4gIGdldENvbnRlbnRTdGFydCgpOiBQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdGFydCB9O1xuICB9XG5cbiAgZ2V0Q29udGVudEVuZCgpOiBQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5lbmQgfTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbnMoKTogUmFuZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9ucy5tYXAoKHMpID0+ICh7XG4gICAgICBhbmNob3I6IHsgLi4ucy5hbmNob3IgfSxcbiAgICAgIGhlYWQ6IHsgLi4ucy5oZWFkIH0sXG4gICAgfSkpO1xuICB9XG5cbiAgaGFzU2luZ2xlQ3Vyc29yKCkge1xuICAgIGlmICghdGhpcy5oYXNTaW5nbGVTZWxlY3Rpb24oKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uc1swXTtcblxuICAgIHJldHVybiAoXG4gICAgICBzZWxlY3Rpb24uYW5jaG9yLmxpbmUgPT09IHNlbGVjdGlvbi5oZWFkLmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbi5hbmNob3IuY2ggPT09IHNlbGVjdGlvbi5oZWFkLmNoXG4gICAgKTtcbiAgfVxuXG4gIGhhc1NpbmdsZVNlbGVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbigpIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbnNbdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCAtIDFdO1xuXG4gICAgY29uc3QgZnJvbSA9XG4gICAgICBzZWxlY3Rpb24uYW5jaG9yLmNoID4gc2VsZWN0aW9uLmhlYWQuY2hcbiAgICAgICAgPyBzZWxlY3Rpb24uaGVhZC5jaFxuICAgICAgICA6IHNlbGVjdGlvbi5hbmNob3IuY2g7XG4gICAgY29uc3QgdG8gPVxuICAgICAgc2VsZWN0aW9uLmFuY2hvci5jaCA+IHNlbGVjdGlvbi5oZWFkLmNoXG4gICAgICAgID8gc2VsZWN0aW9uLmFuY2hvci5jaFxuICAgICAgICA6IHNlbGVjdGlvbi5oZWFkLmNoO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNlbGVjdGlvbixcbiAgICAgIGZyb20sXG4gICAgICB0byxcbiAgICB9O1xuICB9XG5cbiAgZ2V0Q3Vyc29yKCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc2VsZWN0aW9uc1t0aGlzLnNlbGVjdGlvbnMubGVuZ3RoIC0gMV0uaGVhZCB9O1xuICB9XG5cbiAgcmVwbGFjZUN1cnNvcihjdXJzb3I6IFBvc2l0aW9uKSB7XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gW3sgYW5jaG9yOiBjdXJzb3IsIGhlYWQ6IGN1cnNvciB9XTtcbiAgfVxuXG4gIHJlcGxhY2VTZWxlY3Rpb25zKHNlbGVjdGlvbnM6IFJhbmdlW10pIHtcbiAgICBpZiAoc2VsZWN0aW9ucy5sZW5ndGggPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBjcmVhdGUgUm9vdCB3aXRob3V0IHNlbGVjdGlvbnNgKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gc2VsZWN0aW9ucztcbiAgfVxuXG4gIGdldExpc3RVbmRlckN1cnNvcigpOiBMaXN0IHtcbiAgICByZXR1cm4gdGhpcy5nZXRMaXN0VW5kZXJMaW5lKHRoaXMuZ2V0Q3Vyc29yKCkubGluZSk7XG4gIH1cblxuICBnZXRMaXN0VW5kZXJMaW5lKGxpbmU6IG51bWJlcikge1xuICAgIGlmIChsaW5lIDwgdGhpcy5zdGFydC5saW5lIHx8IGxpbmUgPiB0aGlzLmVuZC5saW5lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdDogTGlzdCA9IG51bGw7XG4gICAgbGV0IGluZGV4OiBudW1iZXIgPSB0aGlzLnN0YXJ0LmxpbmU7XG5cbiAgICBjb25zdCB2aXNpdEFyciA9IChsbDogTGlzdFtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGwgb2YgbGwpIHtcbiAgICAgICAgY29uc3QgbGlzdEZyb21MaW5lID0gaW5kZXg7XG4gICAgICAgIGNvbnN0IGxpc3RUaWxsTGluZSA9IGxpc3RGcm9tTGluZSArIGwuZ2V0TGluZUNvdW50KCkgLSAxO1xuXG4gICAgICAgIGlmIChsaW5lID49IGxpc3RGcm9tTGluZSAmJiBsaW5lIDw9IGxpc3RUaWxsTGluZSkge1xuICAgICAgICAgIHJlc3VsdCA9IGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXggPSBsaXN0VGlsbExpbmUgKyAxO1xuICAgICAgICAgIHZpc2l0QXJyKGwuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2aXNpdEFycih0aGlzLnJvb3RMaXN0LmdldENoaWxkcmVuKCkpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdDogTGlzdCk6IFtudW1iZXIsIG51bWJlcl0gfCBudWxsIHtcbiAgICBsZXQgcmVzdWx0OiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGxpbmU6IG51bWJlciA9IHRoaXMuc3RhcnQubGluZTtcblxuICAgIGNvbnN0IHZpc2l0QXJyID0gKGxsOiBMaXN0W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgbCBvZiBsbCkge1xuICAgICAgICBjb25zdCBsaXN0RnJvbUxpbmUgPSBsaW5lO1xuICAgICAgICBjb25zdCBsaXN0VGlsbExpbmUgPSBsaXN0RnJvbUxpbmUgKyBsLmdldExpbmVDb3VudCgpIC0gMTtcblxuICAgICAgICBpZiAobCA9PT0gbGlzdCkge1xuICAgICAgICAgIHJlc3VsdCA9IFtsaXN0RnJvbUxpbmUsIGxpc3RUaWxsTGluZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluZSA9IGxpc3RUaWxsTGluZSArIDE7XG4gICAgICAgICAgdmlzaXRBcnIobC5nZXRDaGlsZHJlbigpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmlzaXRBcnIodGhpcy5yb290TGlzdC5nZXRDaGlsZHJlbigpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5yb290TGlzdC5nZXRDaGlsZHJlbigpO1xuICB9XG5cbiAgcHJpbnQoKSB7XG4gICAgbGV0IHJlcyA9IFwiXCI7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMucm9vdExpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgcmVzICs9IGNoaWxkLnByaW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5yZXBsYWNlKC9cXG4kLywgXCJcIik7XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBSb290KFxuICAgICAgeyAuLi50aGlzLnN0YXJ0IH0sXG4gICAgICB7IC4uLnRoaXMuZW5kIH0sXG4gICAgICB0aGlzLmdldFNlbGVjdGlvbnMoKVxuICAgICk7XG4gICAgY2xvbmUucm9vdExpc3QgPSB0aGlzLnJvb3RMaXN0LmNsb25lKGNsb25lKTtcbiAgICByZXR1cm4gY2xvbmU7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQge1xuICBMaXN0LFxuICBMaXN0TGluZSxcbiAgUG9zaXRpb24sXG4gIFJvb3QsXG4gIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMsXG59IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVUaWxsUHJldmlvdXNMaW5lQ29udGVudEVuZCBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzSW5mbygpO1xuXG4gICAgY29uc3QgbGluZU5vID0gbGluZXMuZmluZEluZGV4KFxuICAgICAgKGwpID0+IGN1cnNvci5jaCA9PT0gbC5mcm9tLmNoICYmIGN1cnNvci5saW5lID09PSBsLmZyb20ubGluZVxuICAgICk7XG5cbiAgICBpZiAobGluZU5vID09PSAwKSB7XG4gICAgICB0aGlzLm1lcmdlV2l0aFByZXZpb3VzSXRlbShyb290LCBjdXJzb3IsIGxpc3QpO1xuICAgIH0gZWxzZSBpZiAobGluZU5vID4gMCkge1xuICAgICAgdGhpcy5tZXJnZU5vdGVzKHJvb3QsIGN1cnNvciwgbGlzdCwgbGluZXMsIGxpbmVObyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZU5vdGVzKFxuICAgIHJvb3Q6IFJvb3QsXG4gICAgY3Vyc29yOiBQb3NpdGlvbixcbiAgICBsaXN0OiBMaXN0LFxuICAgIGxpbmVzOiBMaXN0TGluZVtdLFxuICAgIGxpbmVObzogbnVtYmVyXG4gICkge1xuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgcHJldkxpbmVObyA9IGxpbmVObyAtIDE7XG5cbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgLSAxLFxuICAgICAgY2g6IGxpbmVzW3ByZXZMaW5lTm9dLnRleHQubGVuZ3RoICsgbGluZXNbcHJldkxpbmVOb10uZnJvbS5jaCxcbiAgICB9KTtcblxuICAgIGxpbmVzW3ByZXZMaW5lTm9dLnRleHQgKz0gbGluZXNbbGluZU5vXS50ZXh0O1xuICAgIGxpbmVzLnNwbGljZShsaW5lTm8sIDEpO1xuXG4gICAgbGlzdC5yZXBsYWNlTGluZXMobGluZXMubWFwKChsKSA9PiBsLnRleHQpKTtcbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VXaXRoUHJldmlvdXNJdGVtKHJvb3Q6IFJvb3QsIGN1cnNvcjogUG9zaXRpb24sIGxpc3Q6IExpc3QpIHtcbiAgICBpZiAocm9vdC5nZXRDaGlsZHJlbigpWzBdID09PSBsaXN0ICYmIGxpc3QuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgcHJldiA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShjdXJzb3IubGluZSAtIDEpO1xuXG4gICAgaWYgKCFwcmV2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm90aEFyZUVtcHR5ID0gcHJldi5pc0VtcHR5KCkgJiYgbGlzdC5pc0VtcHR5KCk7XG4gICAgY29uc3QgcHJldklzRW1wdHlBbmRTYW1lTGV2ZWwgPVxuICAgICAgcHJldi5pc0VtcHR5KCkgJiYgIWxpc3QuaXNFbXB0eSgpICYmIHByZXYuZ2V0TGV2ZWwoKSA9PT0gbGlzdC5nZXRMZXZlbCgpO1xuICAgIGNvbnN0IGxpc3RJc0VtcHR5QW5kUHJldklzUGFyZW50ID1cbiAgICAgIGxpc3QuaXNFbXB0eSgpICYmIHByZXYuZ2V0TGV2ZWwoKSA9PT0gbGlzdC5nZXRMZXZlbCgpIC0gMTtcblxuICAgIGlmIChib3RoQXJlRW1wdHkgfHwgcHJldklzRW1wdHlBbmRTYW1lTGV2ZWwgfHwgbGlzdElzRW1wdHlBbmRQcmV2SXNQYXJlbnQpIHtcbiAgICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICAgIGNvbnN0IHBhcmVudCA9IGxpc3QuZ2V0UGFyZW50KCk7XG4gICAgICBjb25zdCBwcmV2RW5kID0gcHJldi5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKTtcblxuICAgICAgaWYgKCFwcmV2LmdldE5vdGVzSW5kZW50KCkgJiYgbGlzdC5nZXROb3Rlc0luZGVudCgpKSB7XG4gICAgICAgIHByZXYuc2V0Tm90ZXNJbmRlbnQoXG4gICAgICAgICAgcHJldi5nZXRGaXJzdExpbmVJbmRlbnQoKSArXG4gICAgICAgICAgICBsaXN0LmdldE5vdGVzSW5kZW50KCkuc2xpY2UobGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGgpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9sZExpbmVzID0gcHJldi5nZXRMaW5lcygpO1xuICAgICAgY29uc3QgbmV3TGluZXMgPSBsaXN0LmdldExpbmVzKCk7XG4gICAgICBvbGRMaW5lc1tvbGRMaW5lcy5sZW5ndGggLSAxXSArPSBuZXdMaW5lc1swXTtcbiAgICAgIGNvbnN0IHJlc3VsdExpbmVzID0gb2xkTGluZXMuY29uY2F0KG5ld0xpbmVzLnNsaWNlKDEpKTtcblxuICAgICAgcHJldi5yZXBsYWNlTGluZXMocmVzdWx0TGluZXMpO1xuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuXG4gICAgICBmb3IgKGNvbnN0IGMgb2YgbGlzdC5nZXRDaGlsZHJlbigpKSB7XG4gICAgICAgIGxpc3QucmVtb3ZlQ2hpbGQoYyk7XG4gICAgICAgIHByZXYuYWRkQWZ0ZXJBbGwoYyk7XG4gICAgICB9XG5cbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihwcmV2RW5kKTtcblxuICAgICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgRGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9EZWxldGVUaWxsUHJldmlvdXNMaW5lQ29udGVudEVuZFwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgaW1lRGV0ZWN0b3I6IElNRURldGVjdG9yLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uUGVyZm9ybWVyOiBPcGVyYXRpb25QZXJmb3JtZXJcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBrZXltYXAub2YoW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcIkJhY2tzcGFjZVwiLFxuICAgICAgICAgIHJ1bjogY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ICE9PSBcIm5ldmVyXCIgJiZcbiAgICAgICF0aGlzLmltZURldGVjdG9yLmlzT3BlbmVkKClcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PiBuZXcgRGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jb25zdCBCRVRURVJfTElTVFNfQk9EWV9DTEFTUyA9IFwib3V0bGluZXItcGx1Z2luLWJldHRlci1saXN0c1wiO1xuXG5leHBvcnQgY2xhc3MgQmV0dGVyTGlzdHNTdHlsZXMgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgcHJpdmF0ZSB1cGRhdGVCb2R5Q2xhc3NJbnRlcnZhbDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgb2JzaWRpYW5TZXR0aW5nczogT2JzaWRpYW5TZXR0aW5nc1xuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnVwZGF0ZUJvZHlDbGFzcygpO1xuICAgIHRoaXMudXBkYXRlQm9keUNsYXNzSW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVCb2R5Q2xhc3MoKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMudXBkYXRlQm9keUNsYXNzSW50ZXJ2YWwpO1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShCRVRURVJfTElTVFNfQk9EWV9DTEFTUyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUJvZHlDbGFzcyA9ICgpID0+IHtcbiAgICBjb25zdCBzaG91bGRFeGlzdHMgPVxuICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLmlzRGVmYXVsdFRoZW1lRW5hYmxlZCgpICYmXG4gICAgICB0aGlzLnNldHRpbmdzLmJldHRlckxpc3RzU3R5bGVzO1xuICAgIGNvbnN0IGV4aXN0cyA9IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKEJFVFRFUl9MSVNUU19CT0RZX0NMQVNTKTtcblxuICAgIGlmIChzaG91bGRFeGlzdHMgJiYgIWV4aXN0cykge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKEJFVFRFUl9MSVNUU19CT0RZX0NMQVNTKTtcbiAgICB9XG5cbiAgICBpZiAoIXNob3VsZEV4aXN0cyAmJiBleGlzdHMpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShCRVRURVJfTElTVFNfQk9EWV9DTEFTUyk7XG4gICAgfVxuICB9O1xufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QsIG1heFBvcywgbWluUG9zIH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIFNlbGVjdEFsbENvbnRlbnQgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlU2VsZWN0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb24gPSByb290LmdldFNlbGVjdGlvbnMoKVswXTtcbiAgICBjb25zdCBbcm9vdFN0YXJ0LCByb290RW5kXSA9IHJvb3QuZ2V0Q29udGVudFJhbmdlKCk7XG5cbiAgICBjb25zdCBzZWxlY3Rpb25Gcm9tID0gbWluUG9zKHNlbGVjdGlvbi5hbmNob3IsIHNlbGVjdGlvbi5oZWFkKTtcbiAgICBjb25zdCBzZWxlY3Rpb25UbyA9IG1heFBvcyhzZWxlY3Rpb24uYW5jaG9yLCBzZWxlY3Rpb24uaGVhZCk7XG5cbiAgICBpZiAoXG4gICAgICBzZWxlY3Rpb25Gcm9tLmxpbmUgPCByb290U3RhcnQubGluZSB8fFxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA+IHJvb3RFbmQubGluZVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbkZyb20ubGluZSA9PT0gcm9vdFN0YXJ0LmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbkZyb20uY2ggPT09IHJvb3RTdGFydC5jaCAmJlxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA9PT0gcm9vdEVuZC5saW5lICYmXG4gICAgICBzZWxlY3Rpb25Uby5jaCA9PT0gcm9vdEVuZC5jaFxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGNvbnRlbnRTdGFydCA9IGxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0QWZ0ZXJDaGVja2JveCgpO1xuICAgIGNvbnN0IGNvbnRlbnRFbmQgPSBsaXN0LmdldExhc3RMaW5lQ29udGVudEVuZCgpO1xuICAgIGNvbnN0IGxpc3RVbmRlclNlbGVjdGlvbkZyb20gPSByb290LmdldExpc3RVbmRlckxpbmUoc2VsZWN0aW9uRnJvbS5saW5lKTtcbiAgICBjb25zdCBsaXN0U3RhcnQgPVxuICAgICAgbGlzdFVuZGVyU2VsZWN0aW9uRnJvbS5nZXRGaXJzdExpbmVDb250ZW50U3RhcnRBZnRlckNoZWNrYm94KCk7XG4gICAgY29uc3QgbGlzdEVuZCA9IGxpc3RVbmRlclNlbGVjdGlvbkZyb20uZ2V0Q29udGVudEVuZEluY2x1ZGluZ0NoaWxkcmVuKCk7XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbkZyb20ubGluZSA9PT0gY29udGVudFN0YXJ0LmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbkZyb20uY2ggPT09IGNvbnRlbnRTdGFydC5jaCAmJlxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA9PT0gY29udGVudEVuZC5saW5lICYmXG4gICAgICBzZWxlY3Rpb25Uby5jaCA9PT0gY29udGVudEVuZC5jaFxuICAgICkge1xuICAgICAgaWYgKGxpc3QuZ2V0Q2hpbGRyZW4oKS5sZW5ndGgpIHtcbiAgICAgICAgLy8gc2VsZWN0IHN1YiBsaXN0c1xuICAgICAgICByb290LnJlcGxhY2VTZWxlY3Rpb25zKFtcbiAgICAgICAgICB7IGFuY2hvcjogY29udGVudFN0YXJ0LCBoZWFkOiBsaXN0LmdldENvbnRlbnRFbmRJbmNsdWRpbmdDaGlsZHJlbigpIH0sXG4gICAgICAgIF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc2VsZWN0IHdob2xlIGxpc3RcbiAgICAgICAgcm9vdC5yZXBsYWNlU2VsZWN0aW9ucyhbeyBhbmNob3I6IHJvb3RTdGFydCwgaGVhZDogcm9vdEVuZCB9XSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGxpc3RTdGFydC5jaCA9PSBzZWxlY3Rpb25Gcm9tLmNoICYmXG4gICAgICBsaXN0RW5kLmxpbmUgPT0gc2VsZWN0aW9uVG8ubGluZSAmJlxuICAgICAgbGlzdEVuZC5jaCA9PSBzZWxlY3Rpb25Uby5jaFxuICAgICkge1xuICAgICAgLy8gc2VsZWN0IHdob2xlIGxpc3RcbiAgICAgIHJvb3QucmVwbGFjZVNlbGVjdGlvbnMoW3sgYW5jaG9yOiByb290U3RhcnQsIGhlYWQ6IHJvb3RFbmQgfV0pO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAoc2VsZWN0aW9uRnJvbS5saW5lID4gY29udGVudFN0YXJ0LmxpbmUgfHxcbiAgICAgICAgKHNlbGVjdGlvbkZyb20ubGluZSA9PSBjb250ZW50U3RhcnQubGluZSAmJlxuICAgICAgICAgIHNlbGVjdGlvbkZyb20uY2ggPj0gY29udGVudFN0YXJ0LmNoKSkgJiZcbiAgICAgIChzZWxlY3Rpb25Uby5saW5lIDwgY29udGVudEVuZC5saW5lIHx8XG4gICAgICAgIChzZWxlY3Rpb25Uby5saW5lID09IGNvbnRlbnRFbmQubGluZSAmJlxuICAgICAgICAgIHNlbGVjdGlvblRvLmNoIDw9IGNvbnRlbnRFbmQuY2gpKVxuICAgICkge1xuICAgICAgLy8gc2VsZWN0IHdob2xlIGxpbmVcbiAgICAgIHJvb3QucmVwbGFjZVNlbGVjdGlvbnMoW3sgYW5jaG9yOiBjb250ZW50U3RhcnQsIGhlYWQ6IGNvbnRlbnRFbmQgfV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICAgICAgdGhpcy51cGRhdGVkID0gZmFsc2U7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgU2VsZWN0QWxsQ29udGVudCB9IGZyb20gXCIuLi9vcGVyYXRpb25zL1NlbGVjdEFsbENvbnRlbnRcIjtcbmltcG9ydCB7IElNRURldGVjdG9yIH0gZnJvbSBcIi4uL3NlcnZpY2VzL0lNRURldGVjdG9yXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2sgfSBmcm9tIFwiLi4vdXRpbHMvY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2tcIjtcblxuZXhwb3J0IGNsYXNzIEN0cmxBQW5kQ21kQUJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJjLWFcIixcbiAgICAgICAgICBtYWM6IFwibS1hXCIsXG4gICAgICAgICAgcnVuOiBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXIgJiYgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBTZWxlY3RBbGxDb250ZW50KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IERlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kIH0gZnJvbSBcIi4vRGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmRcIjtcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIERlbGV0ZVRpbGxOZXh0TGluZUNvbnRlbnRTdGFydCBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgZGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQ6IERlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge1xuICAgIHRoaXMuZGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQgPVxuICAgICAgbmV3IERlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kKHJvb3QpO1xuICB9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnNob3VsZFN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnNob3VsZFVwZGF0ZSgpO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcblxuICAgIGNvbnN0IGxpbmVObyA9IGxpbmVzLmZpbmRJbmRleChcbiAgICAgIChsKSA9PiBjdXJzb3IuY2ggPT09IGwudG8uY2ggJiYgY3Vyc29yLmxpbmUgPT09IGwudG8ubGluZVxuICAgICk7XG5cbiAgICBpZiAobGluZU5vID09PSBsaW5lcy5sZW5ndGggLSAxKSB7XG4gICAgICBjb25zdCBuZXh0TGluZSA9IGxpbmVzW2xpbmVOb10udG8ubGluZSArIDE7XG4gICAgICBjb25zdCBuZXh0TGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShuZXh0TGluZSk7XG4gICAgICBpZiAoIW5leHRMaXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihuZXh0TGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKSk7XG4gICAgICB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnBlcmZvcm0oKTtcbiAgICB9IGVsc2UgaWYgKGxpbmVObyA+PSAwKSB7XG4gICAgICByb290LnJlcGxhY2VDdXJzb3IobGluZXNbbGluZU5vICsgMV0uZnJvbSk7XG4gICAgICB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnBlcmZvcm0oKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgRGVsZXRlVGlsbE5leHRMaW5lQ29udGVudFN0YXJ0IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvRGVsZXRlVGlsbE5leHRMaW5lQ29udGVudFN0YXJ0XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uUGVyZm9ybWVyIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09wZXJhdGlvblBlcmZvcm1lclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrIH0gZnJvbSBcIi4uL3V0aWxzL2NyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrXCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVCZWhhdmlvdXJPdmVycmlkZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBpbWVEZXRlY3RvcjogSU1FRGV0ZWN0b3IsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIGtleW1hcC5vZihbXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IFwiRGVsZXRlXCIsXG4gICAgICAgICAgcnVuOiBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgIT09IFwibmV2ZXJcIiAmJlxuICAgICAgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBEZWxldGVUaWxsTmV4dExpbmVDb250ZW50U3RhcnQocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IExpc3QsIFJvb3QsIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5pbnRlcmZhY2UgQ3Vyc29yQW5jaG9yIHtcbiAgY3Vyc29yTGlzdDogTGlzdDtcbiAgbGluZURpZmY6IG51bWJlcjtcbiAgY2hEaWZmOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBNb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvb3Q6IFJvb3QsXG4gICAgcHJpdmF0ZSBsaXN0VG9Nb3ZlOiBMaXN0LFxuICAgIHByaXZhdGUgcGxhY2VUb01vdmU6IExpc3QsXG4gICAgcHJpdmF0ZSB3aGVyZVRvTW92ZTogXCJiZWZvcmVcIiB8IFwiYWZ0ZXJcIiB8IFwiaW5zaWRlXCIsXG4gICAgcHJpdmF0ZSBkZWZhdWx0SW5kZW50Q2hhcnM6IHN0cmluZ1xuICApIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBpZiAodGhpcy5saXN0VG9Nb3ZlID09PSB0aGlzLnBsYWNlVG9Nb3ZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBjdXJzb3JBbmNob3IgPSB0aGlzLmNhbGN1bGF0ZUN1cnNvckFuY2hvcigpO1xuICAgIHRoaXMubW92ZUxpc3QoKTtcbiAgICB0aGlzLmNoYW5nZUluZGVudCgpO1xuICAgIHRoaXMucmVzdG9yZUN1cnNvcihjdXJzb3JBbmNob3IpO1xuICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHModGhpcy5yb290KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlQ3Vyc29yQW5jaG9yKCk6IEN1cnNvckFuY2hvciB7XG4gICAgY29uc3QgY3Vyc29yTGluZSA9IHRoaXMucm9vdC5nZXRDdXJzb3IoKS5saW5lO1xuXG4gICAgY29uc3QgbGluZXMgPSBbXG4gICAgICB0aGlzLmxpc3RUb01vdmUuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZSxcbiAgICAgIHRoaXMubGlzdFRvTW92ZS5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKS5saW5lLFxuICAgICAgdGhpcy5wbGFjZVRvTW92ZS5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lLFxuICAgICAgdGhpcy5wbGFjZVRvTW92ZS5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKS5saW5lLFxuICAgIF07XG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZSA9IE1hdGgubWluKC4uLmxpbmVzKTtcbiAgICBjb25zdCBsaXN0RW5kTGluZSA9IE1hdGgubWF4KC4uLmxpbmVzKTtcblxuICAgIGlmIChjdXJzb3JMaW5lIDwgbGlzdFN0YXJ0TGluZSB8fCBjdXJzb3JMaW5lID4gbGlzdEVuZExpbmUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnNvciA9IHRoaXMucm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBjdXJzb3JMaXN0ID0gdGhpcy5yb290LmdldExpc3RVbmRlckxpbmUoY3Vyc29yLmxpbmUpO1xuICAgIGNvbnN0IGN1cnNvckxpc3RTdGFydCA9IGN1cnNvckxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCk7XG4gICAgY29uc3QgbGluZURpZmYgPSBjdXJzb3IubGluZSAtIGN1cnNvckxpc3RTdGFydC5saW5lO1xuICAgIGNvbnN0IGNoRGlmZiA9IGN1cnNvci5jaCAtIGN1cnNvckxpc3RTdGFydC5jaDtcblxuICAgIHJldHVybiB7IGN1cnNvckxpc3QsIGxpbmVEaWZmLCBjaERpZmYgfTtcbiAgfVxuXG4gIHByaXZhdGUgbW92ZUxpc3QoKSB7XG4gICAgdGhpcy5saXN0VG9Nb3ZlLmdldFBhcmVudCgpLnJlbW92ZUNoaWxkKHRoaXMubGlzdFRvTW92ZSk7XG5cbiAgICBzd2l0Y2ggKHRoaXMud2hlcmVUb01vdmUpIHtcbiAgICAgIGNhc2UgXCJiZWZvcmVcIjpcbiAgICAgICAgdGhpcy5wbGFjZVRvTW92ZVxuICAgICAgICAgIC5nZXRQYXJlbnQoKVxuICAgICAgICAgIC5hZGRCZWZvcmUodGhpcy5wbGFjZVRvTW92ZSwgdGhpcy5saXN0VG9Nb3ZlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJhZnRlclwiOlxuICAgICAgICB0aGlzLnBsYWNlVG9Nb3ZlXG4gICAgICAgICAgLmdldFBhcmVudCgpXG4gICAgICAgICAgLmFkZEFmdGVyKHRoaXMucGxhY2VUb01vdmUsIHRoaXMubGlzdFRvTW92ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiaW5zaWRlXCI6XG4gICAgICAgIHRoaXMucGxhY2VUb01vdmUuYWRkQmVmb3JlQWxsKHRoaXMubGlzdFRvTW92ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlSW5kZW50KCkge1xuICAgIGNvbnN0IG9sZEluZGVudCA9IHRoaXMubGlzdFRvTW92ZS5nZXRGaXJzdExpbmVJbmRlbnQoKTtcbiAgICBjb25zdCBuZXdJbmRlbnQgPVxuICAgICAgdGhpcy53aGVyZVRvTW92ZSA9PT0gXCJpbnNpZGVcIlxuICAgICAgICA/IHRoaXMucGxhY2VUb01vdmUuZ2V0Rmlyc3RMaW5lSW5kZW50KCkgKyB0aGlzLmRlZmF1bHRJbmRlbnRDaGFyc1xuICAgICAgICA6IHRoaXMucGxhY2VUb01vdmUuZ2V0Rmlyc3RMaW5lSW5kZW50KCk7XG4gICAgdGhpcy5saXN0VG9Nb3ZlLnVuaW5kZW50Q29udGVudCgwLCBvbGRJbmRlbnQubGVuZ3RoKTtcbiAgICB0aGlzLmxpc3RUb01vdmUuaW5kZW50Q29udGVudCgwLCBuZXdJbmRlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXN0b3JlQ3Vyc29yKGN1cnNvckFuY2hvcjogQ3Vyc29yQW5jaG9yKSB7XG4gICAgaWYgKGN1cnNvckFuY2hvcikge1xuICAgICAgY29uc3QgY3Vyc29yTGlzdFN0YXJ0ID1cbiAgICAgICAgY3Vyc29yQW5jaG9yLmN1cnNvckxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCk7XG5cbiAgICAgIHRoaXMucm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgICAgbGluZTogY3Vyc29yTGlzdFN0YXJ0LmxpbmUgKyBjdXJzb3JBbmNob3IubGluZURpZmYsXG4gICAgICAgIGNoOiBjdXJzb3JMaXN0U3RhcnQuY2ggKyBjdXJzb3JBbmNob3IuY2hEaWZmLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdoZW4geW91IG1vdmUgYSBsaXN0LCB0aGUgc2NyZWVuIHNjcm9sbHMgdG8gdGhlIGN1cnNvci5cbiAgICAgIC8vIEl0IGlzIGJldHRlciB0byBtb3ZlIHRoZSBjdXJzb3IgaW50byB0aGUgdmlld3BvcnQgdGhhbiBsZXQgdGhlIHNjcmVlbiBzY3JvbGwuXG4gICAgICB0aGlzLnJvb3QucmVwbGFjZUN1cnNvcih0aGlzLmxpc3RUb01vdmUuZ2V0TGFzdExpbmVDb250ZW50RW5kKCkpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgTm90aWNlLCBQbGF0Zm9ybSwgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgZ2V0SW5kZW50VW5pdCwgaW5kZW50U3RyaW5nIH0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5pbXBvcnQgeyBTdGF0ZUVmZmVjdCwgU3RhdGVGaWVsZCB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgRGVjb3JhdGlvbiwgRGVjb3JhdGlvblNldCwgRWRpdG9yVmlldyB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yLCBnZXRFZGl0b3JGcm9tU3RhdGUgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBNb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb24gfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9Nb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb25cIjtcbmltcG9ydCB7IExpc3QsIFJvb3QsIGNtcFBvcyB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyBPYnNpZGlhblNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2V0dGluZ3NcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QYXJzZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5cbmNvbnN0IEJPRFlfQ0xBU1MgPSBcIm91dGxpbmVyLXBsdWdpbi1kbmRcIjtcblxuZXhwb3J0IGNsYXNzIERyYWdBbmREcm9wIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIHByaXZhdGUgZHJvcFpvbmU6IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIGRyb3Bab25lUGFkZGluZzogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgcHJlU3RhcnQ6IERyYWdBbmREcm9wUHJlU3RhcnRTdGF0ZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN0YXRlOiBEcmFnQW5kRHJvcFN0YXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgb2Jpc2lkaWFuOiBPYnNpZGlhblNldHRpbmdzLFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihbXG4gICAgICBkcmFnZ2luZ0xpbmVzU3RhdGVGaWVsZCxcbiAgICAgIGRyb3BwaW5nTGluZXNTdGF0ZUZpZWxkLFxuICAgIF0pO1xuICAgIHRoaXMuZW5hYmxlRmVhdHVyZVRvZ2dsZSgpO1xuICAgIHRoaXMuY3JlYXRlRHJvcFpvbmUoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7XG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMucmVtb3ZlRHJvcFpvbmUoKTtcbiAgICB0aGlzLmRpc2FibGVGZWF0dXJlVG9nZ2xlKCk7XG4gIH1cblxuICBwcml2YXRlIGVuYWJsZUZlYXR1cmVUb2dnbGUoKSB7XG4gICAgdGhpcy5zZXR0aW5ncy5vbkNoYW5nZSh0aGlzLmhhbmRsZVNldHRpbmdzQ2hhbmdlKTtcbiAgICB0aGlzLmhhbmRsZVNldHRpbmdzQ2hhbmdlKCk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGVGZWF0dXJlVG9nZ2xlKCkge1xuICAgIHRoaXMuc2V0dGluZ3MucmVtb3ZlQ2FsbGJhY2sodGhpcy5oYW5kbGVTZXR0aW5nc0NoYW5nZSk7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKEJPRFlfQ0xBU1MpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEcm9wWm9uZSgpIHtcbiAgICB0aGlzLmRyb3Bab25lUGFkZGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgdGhpcy5kcm9wWm9uZVBhZGRpbmcuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1kcm9wLXpvbmUtcGFkZGluZ1wiKTtcbiAgICB0aGlzLmRyb3Bab25lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLmRyb3Bab25lLmNsYXNzTGlzdC5hZGQoXCJvdXRsaW5lci1wbHVnaW4tZHJvcC16b25lXCIpO1xuICAgIHRoaXMuZHJvcFpvbmUuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgIHRoaXMuZHJvcFpvbmUuYXBwZW5kQ2hpbGQodGhpcy5kcm9wWm9uZVBhZGRpbmcpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5kcm9wWm9uZSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZURyb3Bab25lKCkge1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5kcm9wWm9uZSk7XG4gICAgdGhpcy5kcm9wWm9uZVBhZGRpbmcgPSBudWxsO1xuICAgIHRoaXMuZHJvcFpvbmUgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycygpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMuaGFuZGxlTW91c2VEb3duLCB7XG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0pO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5oYW5kbGVNb3VzZU1vdmUpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMuaGFuZGxlTW91c2VVcCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcy5oYW5kbGVLZXlEb3duKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCB0aGlzLmhhbmRsZU1vdXNlRG93biwge1xuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMuaGFuZGxlTW91c2VNb3ZlKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLmhhbmRsZU1vdXNlVXApO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMuaGFuZGxlS2V5RG93bik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNldHRpbmdzQ2hhbmdlID0gKCkgPT4ge1xuICAgIGlmICghaXNGZWF0dXJlU3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZXR0aW5ncy5kcmFnQW5kRHJvcCkge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKEJPRFlfQ0xBU1MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoQk9EWV9DTEFTUyk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlTW91c2VEb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoXG4gICAgICAhaXNGZWF0dXJlU3VwcG9ydGVkKCkgfHxcbiAgICAgICF0aGlzLnNldHRpbmdzLmRyYWdBbmREcm9wIHx8XG4gICAgICAhaXNDbGlja09uQnVsbGV0KGUpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmlldyA9IGdldEVkaXRvclZpZXdGcm9tSFRNTEVsZW1lbnQoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgIGlmICghdmlldykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5wcmVTdGFydCA9IHtcbiAgICAgIHg6IGUueCxcbiAgICAgIHk6IGUueSxcbiAgICAgIHZpZXcsXG4gICAgfTtcbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZU1vdXNlTW92ZSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKHRoaXMucHJlU3RhcnQpIHtcbiAgICAgIHRoaXMuc3RhcnREcmFnZ2luZygpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5kZXRlY3RBbmREcmF3RHJvcFpvbmUoZS54LCBlLnkpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZU1vdXNlVXAgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJlU3RhcnQpIHtcbiAgICAgIHRoaXMucHJlU3RhcnQgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVLZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZSAmJiBlLmNvZGUgPT09IFwiRXNjYXBlXCIpIHtcbiAgICAgIHRoaXMuY2FuY2VsRHJhZ2dpbmcoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBzdGFydERyYWdnaW5nKCkge1xuICAgIGNvbnN0IHsgeCwgeSwgdmlldyB9ID0gdGhpcy5wcmVTdGFydDtcbiAgICB0aGlzLnByZVN0YXJ0ID0gbnVsbDtcblxuICAgIGNvbnN0IGVkaXRvciA9IGdldEVkaXRvckZyb21TdGF0ZSh2aWV3LnN0YXRlKTtcbiAgICBjb25zdCBwb3MgPSBlZGl0b3Iub2Zmc2V0VG9Qb3Modmlldy5wb3NBdENvb3Jkcyh7IHgsIHkgfSkpO1xuICAgIGNvbnN0IHJvb3QgPSB0aGlzLnBhcnNlci5wYXJzZShlZGl0b3IsIHBvcyk7XG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShwb3MubGluZSk7XG4gICAgY29uc3Qgc3RhdGUgPSBuZXcgRHJhZ0FuZERyb3BTdGF0ZSh2aWV3LCBlZGl0b3IsIHJvb3QsIGxpc3QpO1xuXG4gICAgaWYgKCFzdGF0ZS5oYXNEcm9wVmFyaWFudHMoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB0aGlzLmhpZ2hsaWdodERyYWdnaW5nTGluZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0QW5kRHJhd0Ryb3Bab25lKHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGF0ZS5jYWxjdWxhdGVOZWFyZXN0RHJvcFZhcmlhbnQoeCwgeSk7XG4gICAgdGhpcy5kcmF3RHJvcFpvbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuY2VsRHJhZ2dpbmcoKSB7XG4gICAgdGhpcy5zdGF0ZS5kcm9wVmFyaWFudCA9IG51bGw7XG4gICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcERyYWdnaW5nKCkge1xuICAgIHRoaXMudW5oaWdodGxpZ2h0RHJhZ2dpbmdMaW5lcygpO1xuICAgIHRoaXMuaGlkZURyb3Bab25lKCk7XG4gICAgdGhpcy5hcHBseUNoYW5nZXMoKTtcbiAgICB0aGlzLnN0YXRlID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDaGFuZ2VzKCkge1xuICAgIGlmICghdGhpcy5zdGF0ZS5kcm9wVmFyaWFudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgY29uc3QgeyBkcm9wVmFyaWFudCwgZWRpdG9yLCByb290LCBsaXN0IH0gPSBzdGF0ZTtcblxuICAgIGNvbnN0IG5ld1Jvb3QgPSB0aGlzLnBhcnNlci5wYXJzZShlZGl0b3IsIHJvb3QuZ2V0Q29udGVudFN0YXJ0KCkpO1xuICAgIGlmICghaXNTYW1lUm9vdHMocm9vdCwgbmV3Um9vdCkpIHtcbiAgICAgIG5ldyBOb3RpY2UoXG4gICAgICAgIGBUaGUgaXRlbSBjYW5ub3QgYmUgbW92ZWQuIFRoZSBwYWdlIGNvbnRlbnQgY2hhbmdlZCBkdXJpbmcgdGhlIG1vdmUuYCxcbiAgICAgICAgNTAwMFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5ldmFsKFxuICAgICAgcm9vdCxcbiAgICAgIG5ldyBNb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb24oXG4gICAgICAgIHJvb3QsXG4gICAgICAgIGxpc3QsXG4gICAgICAgIGRyb3BWYXJpYW50LnBsYWNlVG9Nb3ZlLFxuICAgICAgICBkcm9wVmFyaWFudC53aGVyZVRvTW92ZSxcbiAgICAgICAgdGhpcy5vYmlzaWRpYW4uZ2V0RGVmYXVsdEluZGVudENoYXJzKClcbiAgICAgICksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWdobGlnaHREcmFnZ2luZ0xpbmVzKCkge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgY29uc3QgeyBsaXN0LCBlZGl0b3IsIHZpZXcgfSA9IHN0YXRlO1xuXG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICBjb25zdCBmcm9tTGluZSA9IGxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZTtcbiAgICBjb25zdCB0aWxsTGluZSA9IGxpc3QuZ2V0Q29udGVudEVuZEluY2x1ZGluZ0NoaWxkcmVuKCkubGluZTtcbiAgICBmb3IgKGxldCBpID0gZnJvbUxpbmU7IGkgPD0gdGlsbExpbmU7IGkrKykge1xuICAgICAgbGluZXMucHVzaChlZGl0b3IucG9zVG9PZmZzZXQoeyBsaW5lOiBpLCBjaDogMCB9KSk7XG4gICAgfVxuICAgIHZpZXcuZGlzcGF0Y2goe1xuICAgICAgZWZmZWN0czogW2RuZFN0YXJ0ZWQub2YobGluZXMpXSxcbiAgICB9KTtcblxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1kcmFnZ2luZ1wiKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5oaWdodGxpZ2h0RHJhZ2dpbmdMaW5lcygpIHtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJvdXRsaW5lci1wbHVnaW4tZHJhZ2dpbmdcIik7XG5cbiAgICB0aGlzLnN0YXRlLnZpZXcuZGlzcGF0Y2goe1xuICAgICAgZWZmZWN0czogW2RuZEVuZGVkLm9mKCldLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3RHJvcFpvbmUoKSB7XG4gICAgY29uc3QgeyBzdGF0ZSB9ID0gdGhpcztcbiAgICBjb25zdCB7IHZpZXcsIGVkaXRvciwgZHJvcFZhcmlhbnQgfSA9IHN0YXRlO1xuXG4gICAgY29uc3QgbmV3UGFyZW50ID1cbiAgICAgIGRyb3BWYXJpYW50LndoZXJlVG9Nb3ZlID09PSBcImluc2lkZVwiXG4gICAgICAgID8gZHJvcFZhcmlhbnQucGxhY2VUb01vdmVcbiAgICAgICAgOiBkcm9wVmFyaWFudC5wbGFjZVRvTW92ZS5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBuZXdQYXJlbnRJc1Jvb3RMaXN0ID0gIW5ld1BhcmVudC5nZXRQYXJlbnQoKTtcblxuICAgIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gTWF0aC5yb3VuZChcbiAgICAgICAgdmlldy5jb250ZW50RE9NLm9mZnNldFdpZHRoIC1cbiAgICAgICAgICAoZHJvcFZhcmlhbnQubGVmdCAtIHRoaXMuc3RhdGUubGVmdFBhZGRpbmcpXG4gICAgICApO1xuXG4gICAgICB0aGlzLmRyb3Bab25lLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICB0aGlzLmRyb3Bab25lLnN0eWxlLnRvcCA9IGRyb3BWYXJpYW50LnRvcCArIFwicHhcIjtcbiAgICAgIHRoaXMuZHJvcFpvbmUuc3R5bGUubGVmdCA9IGRyb3BWYXJpYW50LmxlZnQgKyBcInB4XCI7XG4gICAgICB0aGlzLmRyb3Bab25lLnN0eWxlLndpZHRoID0gd2lkdGggKyBcInB4XCI7XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QgbGV2ZWwgPSBuZXdQYXJlbnQuZ2V0TGV2ZWwoKTtcbiAgICAgIGNvbnN0IGluZGVudFdpZHRoID0gdGhpcy5zdGF0ZS50YWJXaWR0aDtcbiAgICAgIGNvbnN0IHdpZHRoID0gaW5kZW50V2lkdGggKiBsZXZlbDtcbiAgICAgIGNvbnN0IGRhc2hQYWRkaW5nID0gMztcbiAgICAgIGNvbnN0IGRhc2hXaWR0aCA9IGluZGVudFdpZHRoIC0gZGFzaFBhZGRpbmc7XG4gICAgICBjb25zdCBjb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgXCItLWNvbG9yLWFjY2VudFwiXG4gICAgICApO1xuXG4gICAgICB0aGlzLmRyb3Bab25lUGFkZGluZy5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgIHRoaXMuZHJvcFpvbmVQYWRkaW5nLnN0eWxlLm1hcmdpbkxlZnQgPSBgLSR7d2lkdGh9cHhgO1xuICAgICAgdGhpcy5kcm9wWm9uZVBhZGRpbmcuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMCR7d2lkdGh9JTIwNCUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTNDbGluZSUyMHgxJTNEJTIyMCUyMiUyMHkxJTNEJTIyMCUyMiUyMHgyJTNEJTIyJHt3aWR0aH0lMjIlMjB5MiUzRCUyMjAlMjIlMjBzdHJva2UlM0QlMjIke2NvbG9yfSUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjglMjIlMjBzdHJva2UtZGFzaGFycmF5JTNEJTIyJHtkYXNoV2lkdGh9JTIwJHtkYXNoUGFkZGluZ30lMjIlMkYlM0UlM0MlMkZzdmclM0UnKWA7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZS52aWV3LmRpc3BhdGNoKHtcbiAgICAgIGVmZmVjdHM6IFtcbiAgICAgICAgZG5kTW92ZWQub2YoXG4gICAgICAgICAgbmV3UGFyZW50SXNSb290TGlzdFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IGVkaXRvci5wb3NUb09mZnNldCh7XG4gICAgICAgICAgICAgICAgbGluZTogbmV3UGFyZW50LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUsXG4gICAgICAgICAgICAgICAgY2g6IDAsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWRlRHJvcFpvbmUoKSB7XG4gICAgdGhpcy5kcm9wWm9uZS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gIH1cbn1cblxuaW50ZXJmYWNlIERyb3BWYXJpYW50IHtcbiAgbGluZTogbnVtYmVyO1xuICBsZXZlbDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIHRvcDogbnVtYmVyO1xuICBwbGFjZVRvTW92ZTogTGlzdDtcbiAgd2hlcmVUb01vdmU6IFwiYWZ0ZXJcIiB8IFwiYmVmb3JlXCIgfCBcImluc2lkZVwiO1xufVxuXG5pbnRlcmZhY2UgRHJhZ0FuZERyb3BQcmVTdGFydFN0YXRlIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHZpZXc6IEVkaXRvclZpZXc7XG59XG5cbmNsYXNzIERyYWdBbmREcm9wU3RhdGUge1xuICBwcml2YXRlIGRyb3BWYXJpYW50czogTWFwPHN0cmluZywgRHJvcFZhcmlhbnQ+ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgZHJvcFZhcmlhbnQ6IERyb3BWYXJpYW50ID0gbnVsbDtcbiAgcHVibGljIGxlZnRQYWRkaW5nID0gMDtcbiAgcHVibGljIHRhYldpZHRoID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmlldzogRWRpdG9yVmlldyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZWRpdG9yOiBNeUVkaXRvcixcbiAgICBwdWJsaWMgcmVhZG9ubHkgcm9vdDogUm9vdCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFxuICApIHtcbiAgICB0aGlzLmNvbGxlY3REcm9wVmFyaWFudHMoKTtcbiAgICB0aGlzLmNhbGN1bGF0ZUxlZnRQYWRkaW5nKCk7XG4gICAgdGhpcy5jYWxjdWxhdGVUYWJXaWR0aCgpO1xuICB9XG5cbiAgZ2V0RHJvcFZhcmlhbnRzKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZHJvcFZhcmlhbnRzLnZhbHVlcygpKTtcbiAgfVxuXG4gIGhhc0Ryb3BWYXJpYW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5kcm9wVmFyaWFudHMuc2l6ZSA+IDA7XG4gIH1cblxuICBjYWxjdWxhdGVOZWFyZXN0RHJvcFZhcmlhbnQoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICBjb25zdCB7IHZpZXcsIGVkaXRvciB9ID0gdGhpcztcblxuICAgIGNvbnN0IGRyb3BWYXJpYW50cyA9IHRoaXMuZ2V0RHJvcFZhcmlhbnRzKCk7XG5cbiAgICBmb3IgKGNvbnN0IHYgb2YgZHJvcFZhcmlhbnRzKSB7XG4gICAgICBjb25zdCB7IHBsYWNlVG9Nb3ZlIH0gPSB2O1xuXG4gICAgICB2LmxlZnQgPSB0aGlzLmxlZnRQYWRkaW5nICsgKHYubGV2ZWwgLSAxKSAqIHRoaXMudGFiV2lkdGg7XG5cbiAgICAgIGNvbnN0IHBvc2l0aW9uQWZ0ZXJMaXN0ID1cbiAgICAgICAgdi53aGVyZVRvTW92ZSA9PT0gXCJhZnRlclwiIHx8IHYud2hlcmVUb01vdmUgPT09IFwiaW5zaWRlXCI7XG4gICAgICBjb25zdCBsaW5lID0gcG9zaXRpb25BZnRlckxpc3RcbiAgICAgICAgPyBwbGFjZVRvTW92ZS5nZXRDb250ZW50RW5kSW5jbHVkaW5nQ2hpbGRyZW4oKS5saW5lXG4gICAgICAgIDogcGxhY2VUb01vdmUuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZTtcbiAgICAgIGNvbnN0IGxpbmVQb3MgPSBlZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgICBsaW5lLFxuICAgICAgICBjaDogMCxcbiAgICAgIH0pO1xuXG4gICAgICB2LnRvcCA9IHZpZXcuY29vcmRzQXRQb3MobGluZVBvcywgLTEpLnRvcDtcblxuICAgICAgaWYgKHBvc2l0aW9uQWZ0ZXJMaXN0KSB7XG4gICAgICAgIHYudG9wICs9IHZpZXcubGluZUJsb2NrQXQobGluZVBvcykuaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICAvLyBCZXR0ZXIgdmVydGljYWwgYWxpZ25tZW50XG4gICAgICB2LnRvcCAtPSA4O1xuICAgIH1cblxuICAgIGNvbnN0IG5lYXJlc3RMaW5lVG9wID0gZHJvcFZhcmlhbnRzXG4gICAgICAuc29ydCgoYSwgYikgPT4gTWF0aC5hYnMoeSAtIGEudG9wKSAtIE1hdGguYWJzKHkgLSBiLnRvcCkpXG4gICAgICAuZmlyc3QoKS50b3A7XG5cbiAgICBjb25zdCB2YXJpYW5zT25OZWFyZXN0TGluZSA9IGRyb3BWYXJpYW50cy5maWx0ZXIoXG4gICAgICAodikgPT4gTWF0aC5hYnModi50b3AgLSBuZWFyZXN0TGluZVRvcCkgPD0gNFxuICAgICk7XG5cbiAgICB0aGlzLmRyb3BWYXJpYW50ID0gdmFyaWFuc09uTmVhcmVzdExpbmVcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBNYXRoLmFicyh4IC0gYS5sZWZ0KSAtIE1hdGguYWJzKHggLSBiLmxlZnQpKVxuICAgICAgLmZpcnN0KCk7XG4gIH1cblxuICBwcml2YXRlIGFkZERyb3BWYXJpYW50KHY6IERyb3BWYXJpYW50KSB7XG4gICAgdGhpcy5kcm9wVmFyaWFudHMuc2V0KGAke3YubGluZX0gJHt2LmxldmVsfWAsIHYpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xsZWN0RHJvcFZhcmlhbnRzKCkge1xuICAgIGNvbnN0IHZpc2l0ID0gKGxpc3RzOiBMaXN0W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgcGxhY2VUb01vdmUgb2YgbGlzdHMpIHtcbiAgICAgICAgY29uc3QgbGluZUJlZm9yZSA9IHBsYWNlVG9Nb3ZlLmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmU7XG4gICAgICAgIGNvbnN0IGxpbmVBZnRlciA9IHBsYWNlVG9Nb3ZlLmdldENvbnRlbnRFbmRJbmNsdWRpbmdDaGlsZHJlbigpLmxpbmUgKyAxO1xuXG4gICAgICAgIGNvbnN0IGxldmVsID0gcGxhY2VUb01vdmUuZ2V0TGV2ZWwoKTtcblxuICAgICAgICB0aGlzLmFkZERyb3BWYXJpYW50KHtcbiAgICAgICAgICBsaW5lOiBsaW5lQmVmb3JlLFxuICAgICAgICAgIGxldmVsLFxuICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBsYWNlVG9Nb3ZlLFxuICAgICAgICAgIHdoZXJlVG9Nb3ZlOiBcImJlZm9yZVwiLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hZGREcm9wVmFyaWFudCh7XG4gICAgICAgICAgbGluZTogbGluZUFmdGVyLFxuICAgICAgICAgIGxldmVsLFxuICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBsYWNlVG9Nb3ZlLFxuICAgICAgICAgIHdoZXJlVG9Nb3ZlOiBcImFmdGVyXCIsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChwbGFjZVRvTW92ZSA9PT0gdGhpcy5saXN0KSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGxhY2VUb01vdmUuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgdGhpcy5hZGREcm9wVmFyaWFudCh7XG4gICAgICAgICAgICBsaW5lOiBsaW5lQWZ0ZXIsXG4gICAgICAgICAgICBsZXZlbDogbGV2ZWwgKyAxLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIHBsYWNlVG9Nb3ZlLFxuICAgICAgICAgICAgd2hlcmVUb01vdmU6IFwiaW5zaWRlXCIsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlzaXQocGxhY2VUb01vdmUuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmlzaXQodGhpcy5yb290LmdldENoaWxkcmVuKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVMZWZ0UGFkZGluZygpIHtcbiAgICB0aGlzLmxlZnRQYWRkaW5nID0gdGhpcy52aWV3LmNvb3Jkc0F0UG9zKDAsIC0xKS5sZWZ0O1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVUYWJXaWR0aCgpIHtcbiAgICBjb25zdCB7IHZpZXcgfSA9IHRoaXM7XG5cbiAgICBjb25zdCBzaW5nbGVJbmRlbnQgPSBpbmRlbnRTdHJpbmcodmlldy5zdGF0ZSwgZ2V0SW5kZW50VW5pdCh2aWV3LnN0YXRlKSk7XG5cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB2aWV3LnN0YXRlLmRvYy5saW5lczsgaSsrKSB7XG4gICAgICBjb25zdCBsaW5lID0gdmlldy5zdGF0ZS5kb2MubGluZShpKTtcblxuICAgICAgaWYgKGxpbmUudGV4dC5zdGFydHNXaXRoKHNpbmdsZUluZGVudCkpIHtcbiAgICAgICAgY29uc3QgYSA9IHZpZXcuY29vcmRzQXRQb3MobGluZS5mcm9tLCAtMSk7XG4gICAgICAgIGNvbnN0IGIgPSB2aWV3LmNvb3Jkc0F0UG9zKGxpbmUuZnJvbSArIHNpbmdsZUluZGVudC5sZW5ndGgsIC0xKTtcbiAgICAgICAgdGhpcy50YWJXaWR0aCA9IGIubGVmdCAtIGEubGVmdDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudGFiV2lkdGggPSB2aWV3LmRlZmF1bHRDaGFyYWN0ZXJXaWR0aCAqIGdldEluZGVudFVuaXQodmlldy5zdGF0ZSk7XG4gIH1cbn1cblxuY29uc3QgZG5kU3RhcnRlZCA9IFN0YXRlRWZmZWN0LmRlZmluZTxudW1iZXJbXT4oe1xuICBtYXA6IChsaW5lcywgY2hhbmdlKSA9PiBsaW5lcy5tYXAoKGwpID0+IGNoYW5nZS5tYXBQb3MobCkpLFxufSk7XG5cbmNvbnN0IGRuZE1vdmVkID0gU3RhdGVFZmZlY3QuZGVmaW5lPG51bWJlciB8IG51bGw+KHtcbiAgbWFwOiAobGluZSwgY2hhbmdlKSA9PiAobGluZSAhPT0gbnVsbCA/IGNoYW5nZS5tYXBQb3MobGluZSkgOiBsaW5lKSxcbn0pO1xuXG5jb25zdCBkbmRFbmRlZCA9IFN0YXRlRWZmZWN0LmRlZmluZTx2b2lkPigpO1xuXG5jb25zdCBkcmFnZ2luZ0xpbmVEZWNvcmF0aW9uID0gRGVjb3JhdGlvbi5saW5lKHtcbiAgY2xhc3M6IFwib3V0bGluZXItcGx1Z2luLWRyYWdnaW5nLWxpbmVcIixcbn0pO1xuXG5jb25zdCBkcm9wcGluZ0xpbmVEZWNvcmF0aW9uID0gRGVjb3JhdGlvbi5saW5lKHtcbiAgY2xhc3M6IFwib3V0bGluZXItcGx1Z2luLWRyb3BwaW5nLWxpbmVcIixcbn0pO1xuXG5jb25zdCBkcmFnZ2luZ0xpbmVzU3RhdGVGaWVsZCA9IFN0YXRlRmllbGQuZGVmaW5lPERlY29yYXRpb25TZXQ+KHtcbiAgY3JlYXRlOiAoKSA9PiBEZWNvcmF0aW9uLm5vbmUsXG5cbiAgdXBkYXRlOiAoZG5kU3RhdGUsIHRyKSA9PiB7XG4gICAgZG5kU3RhdGUgPSBkbmRTdGF0ZS5tYXAodHIuY2hhbmdlcyk7XG5cbiAgICBmb3IgKGNvbnN0IGUgb2YgdHIuZWZmZWN0cykge1xuICAgICAgaWYgKGUuaXMoZG5kU3RhcnRlZCkpIHtcbiAgICAgICAgZG5kU3RhdGUgPSBkbmRTdGF0ZS51cGRhdGUoe1xuICAgICAgICAgIGFkZDogZS52YWx1ZS5tYXAoKGwpID0+IGRyYWdnaW5nTGluZURlY29yYXRpb24ucmFuZ2UobCwgbCkpLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGUuaXMoZG5kRW5kZWQpKSB7XG4gICAgICAgIGRuZFN0YXRlID0gRGVjb3JhdGlvbi5ub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkbmRTdGF0ZTtcbiAgfSxcblxuICBwcm92aWRlOiAoZikgPT4gRWRpdG9yVmlldy5kZWNvcmF0aW9ucy5mcm9tKGYpLFxufSk7XG5cbmNvbnN0IGRyb3BwaW5nTGluZXNTdGF0ZUZpZWxkID0gU3RhdGVGaWVsZC5kZWZpbmU8RGVjb3JhdGlvblNldD4oe1xuICBjcmVhdGU6ICgpID0+IERlY29yYXRpb24ubm9uZSxcblxuICB1cGRhdGU6IChkbmREcm9wcGluZ1N0YXRlLCB0cikgPT4ge1xuICAgIGRuZERyb3BwaW5nU3RhdGUgPSBkbmREcm9wcGluZ1N0YXRlLm1hcCh0ci5jaGFuZ2VzKTtcblxuICAgIGZvciAoY29uc3QgZSBvZiB0ci5lZmZlY3RzKSB7XG4gICAgICBpZiAoZS5pcyhkbmRNb3ZlZCkpIHtcbiAgICAgICAgZG5kRHJvcHBpbmdTdGF0ZSA9XG4gICAgICAgICAgZS52YWx1ZSA9PT0gbnVsbFxuICAgICAgICAgICAgPyBEZWNvcmF0aW9uLm5vbmVcbiAgICAgICAgICAgIDogRGVjb3JhdGlvbi5zZXQoZHJvcHBpbmdMaW5lRGVjb3JhdGlvbi5yYW5nZShlLnZhbHVlLCBlLnZhbHVlKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlLmlzKGRuZEVuZGVkKSkge1xuICAgICAgICBkbmREcm9wcGluZ1N0YXRlID0gRGVjb3JhdGlvbi5ub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkbmREcm9wcGluZ1N0YXRlO1xuICB9LFxuXG4gIHByb3ZpZGU6IChmKSA9PiBFZGl0b3JWaWV3LmRlY29yYXRpb25zLmZyb20oZiksXG59KTtcblxuZnVuY3Rpb24gZ2V0RWRpdG9yVmlld0Zyb21IVE1MRWxlbWVudChlOiBIVE1MRWxlbWVudCkge1xuICB3aGlsZSAoZSAmJiAhZS5jbGFzc0xpc3QuY29udGFpbnMoXCJjbS1lZGl0b3JcIikpIHtcbiAgICBlID0gZS5wYXJlbnRFbGVtZW50O1xuICB9XG5cbiAgaWYgKCFlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gRWRpdG9yVmlldy5maW5kRnJvbURPTShlKTtcbn1cblxuZnVuY3Rpb24gaXNDbGlja09uQnVsbGV0KGU6IE1vdXNlRXZlbnQpIHtcbiAgbGV0IGVsID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgd2hpbGUgKGVsKSB7XG4gICAgaWYgKFxuICAgICAgZWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwiY20tZm9ybWF0dGluZy1saXN0XCIpIHx8XG4gICAgICBlbC5jbGFzc0xpc3QuY29udGFpbnMoXCJjbS1mb2xkLWluZGljYXRvclwiKSB8fFxuICAgICAgZWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwidGFzay1saXN0LWl0ZW0tY2hlY2tib3hcIilcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGVsID0gZWwucGFyZW50RWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNTYW1lUm9vdHMoYTogUm9vdCwgYjogUm9vdCkge1xuICBjb25zdCBbYVN0YXJ0LCBhRW5kXSA9IGEuZ2V0Q29udGVudFJhbmdlKCk7XG4gIGNvbnN0IFtiU3RhcnQsIGJFbmRdID0gYi5nZXRDb250ZW50UmFuZ2UoKTtcblxuICBpZiAoY21wUG9zKGFTdGFydCwgYlN0YXJ0KSAhPT0gMCB8fCBjbXBQb3MoYUVuZCwgYkVuZCkgIT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gYS5wcmludCgpID09PSBiLnByaW50KCk7XG59XG5cbmZ1bmN0aW9uIGlzRmVhdHVyZVN1cHBvcnRlZCgpIHtcbiAgcmV0dXJuIFBsYXRmb3JtLmlzRGVza3RvcDtcbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIEtlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgaWYgKCFsaXN0LmlzRm9sZGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmb2xkUm9vdCA9IGxpc3QuZ2V0VG9wRm9sZFJvb3QoKTtcbiAgICBjb25zdCBmaXJzdExpbmVFbmQgPSBmb2xkUm9vdC5nZXRMaW5lc0luZm8oKVswXS50bztcblxuICAgIGlmIChjdXJzb3IubGluZSA+IGZpcnN0TGluZUVuZC5saW5lKSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKGZpcnN0TGluZUVuZCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBLZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnQgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGNvbnRlbnRTdGFydCA9IGxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0QWZ0ZXJDaGVja2JveCgpO1xuICAgIGNvbnN0IGxpbmVQcmVmaXggPVxuICAgICAgY29udGVudFN0YXJ0LmxpbmUgPT09IGN1cnNvci5saW5lXG4gICAgICAgID8gY29udGVudFN0YXJ0LmNoXG4gICAgICAgIDogbGlzdC5nZXROb3Rlc0luZGVudCgpLmxlbmd0aDtcblxuICAgIGlmIChjdXJzb3IuY2ggPCBsaW5lUHJlZml4KSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgICAgbGluZTogY3Vyc29yLmxpbmUsXG4gICAgICAgIGNoOiBsaW5lUHJlZml4LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBFZGl0b3JTdGF0ZSwgVHJhbnNhY3Rpb24gfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IsIGdldEVkaXRvckZyb21TdGF0ZSB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IEtlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9LZWVwQ3Vyc29yT3V0c2lkZUZvbGRlZExpbmVzXCI7XG5pbXBvcnQgeyBLZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnQgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9LZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnRcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QYXJzZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5cbmV4cG9ydCBjbGFzcyBFZGl0b3JTZWxlY3Rpb25zQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIEVkaXRvclN0YXRlLnRyYW5zYWN0aW9uRXh0ZW5kZXIub2YodGhpcy50cmFuc2FjdGlvbkV4dGVuZGVyKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgdHJhbnNhY3Rpb25FeHRlbmRlciA9ICh0cjogVHJhbnNhY3Rpb24pOiBudWxsID0+IHtcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5rZWVwQ3Vyc29yV2l0aGluQ29udGVudCA9PT0gXCJuZXZlclwiIHx8ICF0ci5zZWxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGVkaXRvciA9IGdldEVkaXRvckZyb21TdGF0ZSh0ci5zdGFydFN0YXRlKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVTZWxlY3Rpb25zQ2hhbmdlcyhlZGl0b3IpO1xuICAgIH0sIDApO1xuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVTZWxlY3Rpb25zQ2hhbmdlcyA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IHRoaXMucGFyc2VyLnBhcnNlKGVkaXRvcik7XG5cbiAgICBpZiAoIXJvb3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB7XG4gICAgICBjb25zdCB7IHNob3VsZFN0b3BQcm9wYWdhdGlvbiB9ID0gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIuZXZhbChcbiAgICAgICAgcm9vdCxcbiAgICAgICAgbmV3IEtlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMocm9vdCksXG4gICAgICAgIGVkaXRvclxuICAgICAgKTtcblxuICAgICAgaWYgKHNob3VsZFN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIuZXZhbChcbiAgICAgIHJvb3QsXG4gICAgICBuZXcgS2VlcEN1cnNvcldpdGhpbkxpc3RDb250ZW50KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImV4cG9ydCBjb25zdCBjaGVja2JveFJlID0gYFxcXFxbW15cXFxcW1xcXFxdXVxcXFxdWyBcXHRdYDtcbiIsImV4cG9ydCBmdW5jdGlvbiBpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveChsaW5lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGxpbmUgPT09IFwiXCIgfHwgbGluZSA9PT0gXCJbIF0gXCI7XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgTGlzdCwgUG9zaXRpb24sIFJvb3QsIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuaW1wb3J0IHsgY2hlY2tib3hSZSB9IGZyb20gXCIuLi91dGlscy9jaGVja2JveFJlXCI7XG5pbXBvcnQgeyBpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveCB9IGZyb20gXCIuLi91dGlscy9pc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdldFpvb21SYW5nZSB7XG4gIGdldFpvb21SYW5nZSgpOiB7IGZyb206IFBvc2l0aW9uOyB0bzogUG9zaXRpb24gfSB8IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVOZXdJdGVtIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb290OiBSb290LFxuICAgIHByaXZhdGUgZGVmYXVsdEluZGVudENoYXJzOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBnZXRab29tUmFuZ2U6IEdldFpvb21SYW5nZVxuICApIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlU2VsZWN0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb24gPSByb290LmdldFNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5hbmNob3IubGluZSAhPT0gc2VsZWN0aW9uLmhlYWQubGluZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcblxuICAgIGlmIChsaW5lcy5sZW5ndGggPT09IDEgJiYgaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gobGluZXNbMF0udGV4dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVVbmRlckN1cnNvciA9IGxpbmVzLmZpbmQoKGwpID0+IGwuZnJvbS5saW5lID09PSBjdXJzb3IubGluZSk7XG5cbiAgICBpZiAoY3Vyc29yLmNoIDwgbGluZVVuZGVyQ3Vyc29yLmZyb20uY2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IG9sZExpbmVzLCBuZXdMaW5lcyB9ID0gbGluZXMucmVkdWNlKFxuICAgICAgKGFjYywgbGluZSkgPT4ge1xuICAgICAgICBpZiAoY3Vyc29yLmxpbmUgPiBsaW5lLmZyb20ubGluZSkge1xuICAgICAgICAgIGFjYy5vbGRMaW5lcy5wdXNoKGxpbmUudGV4dCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3Vyc29yLmxpbmUgPT09IGxpbmUuZnJvbS5saW5lKSB7XG4gICAgICAgICAgY29uc3QgbGVmdCA9IGxpbmUudGV4dC5zbGljZSgwLCBzZWxlY3Rpb24uZnJvbSAtIGxpbmUuZnJvbS5jaCk7XG4gICAgICAgICAgY29uc3QgcmlnaHQgPSBsaW5lLnRleHQuc2xpY2Uoc2VsZWN0aW9uLnRvIC0gbGluZS5mcm9tLmNoKTtcbiAgICAgICAgICBhY2Mub2xkTGluZXMucHVzaChsZWZ0KTtcbiAgICAgICAgICBhY2MubmV3TGluZXMucHVzaChyaWdodCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3Vyc29yLmxpbmUgPCBsaW5lLmZyb20ubGluZSkge1xuICAgICAgICAgIGFjYy5uZXdMaW5lcy5wdXNoKGxpbmUudGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb2xkTGluZXM6IFtdLFxuICAgICAgICBuZXdMaW5lczogW10sXG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IGNvZGVCbG9ja0JhY3RpY2tzID0gb2xkTGluZXMuam9pbihcIlxcblwiKS5zcGxpdChcImBgYFwiKS5sZW5ndGggLSAxO1xuICAgIGNvbnN0IGlzSW5zaWRlQ29kZWJsb2NrID1cbiAgICAgIGNvZGVCbG9ja0JhY3RpY2tzID4gMCAmJiBjb2RlQmxvY2tCYWN0aWNrcyAlIDIgIT09IDA7XG5cbiAgICBpZiAoaXNJbnNpZGVDb2RlYmxvY2spIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHpvb21SYW5nZSA9IHRoaXMuZ2V0Wm9vbVJhbmdlLmdldFpvb21SYW5nZSgpO1xuICAgIGNvbnN0IGxpc3RJc1pvb21pbmdSb290ID0gQm9vbGVhbihcbiAgICAgIHpvb21SYW5nZSAmJlxuICAgICAgICBsaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUgPj0gem9vbVJhbmdlLmZyb20ubGluZSAmJlxuICAgICAgICBsaXN0LmdldExhc3RMaW5lQ29udGVudEVuZCgpLmxpbmUgPD0gem9vbVJhbmdlLmZyb20ubGluZVxuICAgICk7XG5cbiAgICBjb25zdCBoYXNDaGlsZHJlbiA9ICFsaXN0LmlzRW1wdHkoKTtcbiAgICBjb25zdCBjaGlsZElzRm9sZGVkID0gbGlzdC5pc0ZvbGRSb290KCk7XG4gICAgY29uc3QgZW5kUG9zID0gbGlzdC5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKTtcbiAgICBjb25zdCBlbmRPZkxpbmUgPSBjdXJzb3IubGluZSA9PT0gZW5kUG9zLmxpbmUgJiYgY3Vyc29yLmNoID09PSBlbmRQb3MuY2g7XG5cbiAgICBjb25zdCBvbkNoaWxkTGV2ZWwgPVxuICAgICAgbGlzdElzWm9vbWluZ1Jvb3QgfHwgKGhhc0NoaWxkcmVuICYmICFjaGlsZElzRm9sZGVkICYmIGVuZE9mTGluZSk7XG5cbiAgICBjb25zdCBpbmRlbnQgPSBvbkNoaWxkTGV2ZWxcbiAgICAgID8gaGFzQ2hpbGRyZW5cbiAgICAgICAgPyBsaXN0LmdldENoaWxkcmVuKClbMF0uZ2V0Rmlyc3RMaW5lSW5kZW50KClcbiAgICAgICAgOiBsaXN0LmdldEZpcnN0TGluZUluZGVudCgpICsgdGhpcy5kZWZhdWx0SW5kZW50Q2hhcnNcbiAgICAgIDogbGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKTtcblxuICAgIGNvbnN0IGJ1bGxldCA9XG4gICAgICBvbkNoaWxkTGV2ZWwgJiYgaGFzQ2hpbGRyZW5cbiAgICAgICAgPyBsaXN0LmdldENoaWxkcmVuKClbMF0uZ2V0QnVsbGV0KClcbiAgICAgICAgOiBsaXN0LmdldEJ1bGxldCgpO1xuXG4gICAgY29uc3Qgc3BhY2VBZnRlckJ1bGxldCA9XG4gICAgICBvbkNoaWxkTGV2ZWwgJiYgaGFzQ2hpbGRyZW5cbiAgICAgICAgPyBsaXN0LmdldENoaWxkcmVuKClbMF0uZ2V0U3BhY2VBZnRlckJ1bGxldCgpXG4gICAgICAgIDogbGlzdC5nZXRTcGFjZUFmdGVyQnVsbGV0KCk7XG5cbiAgICBjb25zdCBwcmVmaXggPSBvbGRMaW5lc1swXS5tYXRjaChjaGVja2JveFJlKSA/IFwiWyBdIFwiIDogXCJcIjtcblxuICAgIGNvbnN0IG5ld0xpc3QgPSBuZXcgTGlzdChcbiAgICAgIGxpc3QuZ2V0Um9vdCgpLFxuICAgICAgaW5kZW50LFxuICAgICAgYnVsbGV0LFxuICAgICAgcHJlZml4LFxuICAgICAgc3BhY2VBZnRlckJ1bGxldCxcbiAgICAgIHByZWZpeCArIG5ld0xpbmVzLnNoaWZ0KCksXG4gICAgICBmYWxzZVxuICAgICk7XG5cbiAgICBpZiAobmV3TGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgbmV3TGlzdC5zZXROb3Rlc0luZGVudChsaXN0LmdldE5vdGVzSW5kZW50KCkpO1xuICAgICAgZm9yIChjb25zdCBsaW5lIG9mIG5ld0xpbmVzKSB7XG4gICAgICAgIG5ld0xpc3QuYWRkTGluZShsaW5lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob25DaGlsZExldmVsKSB7XG4gICAgICBsaXN0LmFkZEJlZm9yZUFsbChuZXdMaXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjaGlsZElzRm9sZGVkIHx8ICFlbmRPZkxpbmUpIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBsaXN0LmdldENoaWxkcmVuKCk7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgICBsaXN0LnJlbW92ZUNoaWxkKGNoaWxkKTtcbiAgICAgICAgICBuZXdMaXN0LmFkZEFmdGVyQWxsKGNoaWxkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LmdldFBhcmVudCgpLmFkZEFmdGVyKGxpc3QsIG5ld0xpc3QpO1xuICAgIH1cblxuICAgIGxpc3QucmVwbGFjZUxpbmVzKG9sZExpbmVzKTtcblxuICAgIGNvbnN0IG5ld0xpc3RTdGFydCA9IG5ld0xpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IG5ld0xpc3RTdGFydC5saW5lLFxuICAgICAgY2g6IG5ld0xpc3RTdGFydC5jaCArIHByZWZpeC5sZW5ndGgsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCwgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBPdXRkZW50TGlzdCBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IHBhcmVudCA9IGxpc3QuZ2V0UGFyZW50KCk7XG4gICAgY29uc3QgZ3JhbmRQYXJlbnQgPSBwYXJlbnQuZ2V0UGFyZW50KCk7XG5cbiAgICBpZiAoIWdyYW5kUGFyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVCZWZvcmUgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG4gICAgY29uc3QgaW5kZW50Um1Gcm9tID0gcGFyZW50LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aDtcbiAgICBjb25zdCBpbmRlbnRSbVRpbGwgPSBsaXN0LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aDtcblxuICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICBncmFuZFBhcmVudC5hZGRBZnRlcihwYXJlbnQsIGxpc3QpO1xuICAgIGxpc3QudW5pbmRlbnRDb250ZW50KGluZGVudFJtRnJvbSwgaW5kZW50Um1UaWxsKTtcblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVBZnRlciA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcbiAgICBjb25zdCBsaW5lRGlmZiA9IGxpc3RTdGFydExpbmVBZnRlciAtIGxpc3RTdGFydExpbmVCZWZvcmU7XG4gICAgY29uc3QgY2hEaWZmID0gaW5kZW50Um1UaWxsIC0gaW5kZW50Um1Gcm9tO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgKyBsaW5lRGlmZixcbiAgICAgIGNoOiBjdXJzb3IuY2ggLSBjaERpZmYsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcbmltcG9ydCB7IE91dGRlbnRMaXN0IH0gZnJvbSBcIi4vT3V0ZGVudExpc3RcIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyBpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveCB9IGZyb20gXCIuLi91dGlscy9pc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveFwiO1xuXG5leHBvcnQgY2xhc3MgT3V0ZGVudExpc3RJZkl0c0VtcHR5IGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBvdXRkZW50TGlzdDogT3V0ZGVudExpc3Q7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7XG4gICAgdGhpcy5vdXRkZW50TGlzdCA9IG5ldyBPdXRkZW50TGlzdChyb290KTtcbiAgfVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5vdXRkZW50TGlzdC5zaG91bGRTdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXRkZW50TGlzdC5zaG91bGRVcGRhdGUoKTtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzKCk7XG5cbiAgICBpZiAoXG4gICAgICBsaW5lcy5sZW5ndGggPiAxIHx8XG4gICAgICAhaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gobGluZXNbMF0pIHx8XG4gICAgICBsaXN0LmdldExldmVsKCkgPT09IDFcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm91dGRlbnRMaXN0LnBlcmZvcm0oKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgUHJlYyB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBDcmVhdGVOZXdJdGVtIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvQ3JlYXRlTmV3SXRlbVwiO1xuaW1wb3J0IHsgT3V0ZGVudExpc3RJZkl0c0VtcHR5IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvT3V0ZGVudExpc3RJZkl0c0VtcHR5XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvUGFyc2VyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2sgfSBmcm9tIFwiLi4vdXRpbHMvY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2tcIjtcblxuZXhwb3J0IGNsYXNzIEVudGVyQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgaW1lRGV0ZWN0b3I6IElNRURldGVjdG9yLFxuICAgIHByaXZhdGUgb2JzaWRpYW5TZXR0aW5nczogT2JzaWRpYW5TZXR0aW5ncyxcbiAgICBwcml2YXRlIHBhcnNlcjogUGFyc2VyLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uUGVyZm9ybWVyOiBPcGVyYXRpb25QZXJmb3JtZXJcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBQcmVjLmhpZ2hlc3QoXG4gICAgICAgIGtleW1hcC5vZihbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcIkVudGVyXCIsXG4gICAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVFbnRlckJlaGF2aW91ciAmJiAhdGhpcy5pbWVEZXRlY3Rvci5pc09wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBjb25zdCByb290ID0gdGhpcy5wYXJzZXIucGFyc2UoZWRpdG9yKTtcblxuICAgIGlmICghcm9vdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2hvdWxkVXBkYXRlOiBmYWxzZSxcbiAgICAgICAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QgcmVzID0gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIuZXZhbChcbiAgICAgICAgcm9vdCxcbiAgICAgICAgbmV3IE91dGRlbnRMaXN0SWZJdHNFbXB0eShyb290KSxcbiAgICAgICAgZWRpdG9yXG4gICAgICApO1xuXG4gICAgICBpZiAocmVzLnNob3VsZFN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRJbmRlbnRDaGFycyA9IHRoaXMub2JzaWRpYW5TZXR0aW5ncy5nZXREZWZhdWx0SW5kZW50Q2hhcnMoKTtcbiAgICAgIGNvbnN0IHpvb21SYW5nZSA9IGVkaXRvci5nZXRab29tUmFuZ2UoKTtcbiAgICAgIGNvbnN0IGdldFpvb21SYW5nZSA9IHtcbiAgICAgICAgZ2V0Wm9vbVJhbmdlOiAoKSA9PiB6b29tUmFuZ2UsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXMgPSB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5ldmFsKFxuICAgICAgICByb290LFxuICAgICAgICBuZXcgQ3JlYXRlTmV3SXRlbShyb290LCBkZWZhdWx0SW5kZW50Q2hhcnMsIGdldFpvb21SYW5nZSksXG4gICAgICAgIGVkaXRvclxuICAgICAgKTtcblxuICAgICAgaWYgKHJlcy5zaG91bGRVcGRhdGUgJiYgem9vbVJhbmdlKSB7XG4gICAgICAgIGVkaXRvci50cnlSZWZyZXNoWm9vbSh6b29tUmFuZ2UuZnJvbS5saW5lKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gIH07XG59XG4iLCJpbXBvcnQgeyBFZGl0b3IgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0b3JDYWxsYmFjayhjYjogKGVkaXRvcjogTXlFZGl0b3IpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIChlZGl0b3I6IEVkaXRvcikgPT4ge1xuICAgIGNvbnN0IG15RWRpdG9yID0gbmV3IE15RWRpdG9yKGVkaXRvcik7XG4gICAgY29uc3Qgc2hvdWxkU3RvcFByb3BhZ2F0aW9uID0gY2IobXlFZGl0b3IpO1xuXG4gICAgaWYgKFxuICAgICAgIXNob3VsZFN0b3BQcm9wYWdhdGlvbiAmJlxuICAgICAgd2luZG93LmV2ZW50ICYmXG4gICAgICB3aW5kb3cuZXZlbnQudHlwZSA9PT0gXCJrZXlkb3duXCJcbiAgICApIHtcbiAgICAgIG15RWRpdG9yLnRyaWdnZXJPbktleURvd24od2luZG93LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpO1xuICAgIH1cbiAgfTtcbn1cbiIsImltcG9ydCB7IE5vdGljZSwgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBPYnNpZGlhblNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUVkaXRvckNhbGxiYWNrIH0gZnJvbSBcIi4uL3V0aWxzL2NyZWF0ZUVkaXRvckNhbGxiYWNrXCI7XG5cbmV4cG9ydCBjbGFzcyBMaXN0c0ZvbGRpbmdDb21tYW5kcyBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBvYnNpZGlhblNldHRpbmdzOiBPYnNpZGlhblNldHRpbmdzXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwiZm9sZFwiLFxuICAgICAgaWNvbjogXCJjaGV2cm9ucy1kb3duLXVwXCIsXG4gICAgICBuYW1lOiBcIkZvbGQgdGhlIGxpc3RcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiBjcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLmZvbGQpLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIl0sXG4gICAgICAgICAga2V5OiBcIkFycm93VXBcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcInVuZm9sZFwiLFxuICAgICAgaWNvbjogXCJjaGV2cm9ucy11cC1kb3duXCIsXG4gICAgICBuYW1lOiBcIlVuZm9sZCB0aGUgbGlzdFwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IGNyZWF0ZUVkaXRvckNhbGxiYWNrKHRoaXMudW5mb2xkKSxcbiAgICAgIGhvdGtleXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vZGlmaWVyczogW1wiTW9kXCJdLFxuICAgICAgICAgIGtleTogXCJBcnJvd0Rvd25cIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgc2V0Rm9sZChlZGl0b3I6IE15RWRpdG9yLCB0eXBlOiBcImZvbGRcIiB8IFwidW5mb2xkXCIpIHtcbiAgICBpZiAoIXRoaXMub2JzaWRpYW5TZXR0aW5ncy5nZXRGb2xkU2V0dGluZ3MoKS5mb2xkSW5kZW50KSB7XG4gICAgICBuZXcgTm90aWNlKFxuICAgICAgICBgVW5hYmxlIHRvICR7dHlwZX0gYmVjYXVzZSBmb2xkaW5nIGlzIGRpc2FibGVkLiBQbGVhc2UgZW5hYmxlIFwiRm9sZCBpbmRlbnRcIiBpbiBPYnNpZGlhbiBzZXR0aW5ncy5gLFxuICAgICAgICA1MDAwXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgY3Vyc29yID0gZWRpdG9yLmdldEN1cnNvcigpO1xuXG4gICAgaWYgKHR5cGUgPT09IFwiZm9sZFwiKSB7XG4gICAgICBlZGl0b3IuZm9sZChjdXJzb3IubGluZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVkaXRvci51bmZvbGQoY3Vyc29yLmxpbmUpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2xkID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXRGb2xkKGVkaXRvciwgXCJmb2xkXCIpO1xuICB9O1xuXG4gIHByaXZhdGUgdW5mb2xkID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXRGb2xkKGVkaXRvciwgXCJ1bmZvbGRcIik7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCwgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBJbmRlbnRMaXN0IGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290LCBwcml2YXRlIGRlZmF1bHRJbmRlbnRDaGFyczogc3RyaW5nKSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgcGFyZW50ID0gbGlzdC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBwcmV2ID0gcGFyZW50LmdldFByZXZTaWJsaW5nT2YobGlzdCk7XG5cbiAgICBpZiAoIXByZXYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUJlZm9yZSA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcblxuICAgIGNvbnN0IGluZGVudFBvcyA9IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoO1xuICAgIGxldCBpbmRlbnRDaGFycyA9IFwiXCI7XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIgJiYgIXByZXYuaXNFbXB0eSgpKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IHByZXZcbiAgICAgICAgLmdldENoaWxkcmVuKClbMF1cbiAgICAgICAgLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIC5zbGljZShwcmV2LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgaWYgKGluZGVudENoYXJzID09PSBcIlwiKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IGxpc3RcbiAgICAgICAgLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIC5zbGljZShwYXJlbnQuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIgJiYgIWxpc3QuaXNFbXB0eSgpKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IGxpc3QuZ2V0Q2hpbGRyZW4oKVswXS5nZXRGaXJzdExpbmVJbmRlbnQoKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIpIHtcbiAgICAgIGluZGVudENoYXJzID0gdGhpcy5kZWZhdWx0SW5kZW50Q2hhcnM7XG4gICAgfVxuXG4gICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuICAgIHByZXYuYWRkQWZ0ZXJBbGwobGlzdCk7XG4gICAgbGlzdC5pbmRlbnRDb250ZW50KGluZGVudFBvcywgaW5kZW50Q2hhcnMpO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUFmdGVyID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuICAgIGNvbnN0IGxpbmVEaWZmID0gbGlzdFN0YXJ0TGluZUFmdGVyIC0gbGlzdFN0YXJ0TGluZUJlZm9yZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lICsgbGluZURpZmYsXG4gICAgICBjaDogY3Vyc29yLmNoICsgaW5kZW50Q2hhcnMubGVuZ3RoLFxuICAgIH0pO1xuXG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QsIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUxpc3REb3duIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgcGFyZW50ID0gbGlzdC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBncmFuZFBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBuZXh0ID0gcGFyZW50LmdldE5leHRTaWJsaW5nT2YobGlzdCk7XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQmVmb3JlID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuXG4gICAgaWYgKCFuZXh0ICYmIGdyYW5kUGFyZW50KSB7XG4gICAgICBjb25zdCBuZXdQYXJlbnQgPSBncmFuZFBhcmVudC5nZXROZXh0U2libGluZ09mKHBhcmVudCk7XG5cbiAgICAgIGlmIChuZXdQYXJlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuICAgICAgICBuZXdQYXJlbnQuYWRkQmVmb3JlQWxsKGxpc3QpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmV4dCkge1xuICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICAgIHBhcmVudC5hZGRBZnRlcihuZXh0LCBsaXN0KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudXBkYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVBZnRlciA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcbiAgICBjb25zdCBsaW5lRGlmZiA9IGxpc3RTdGFydExpbmVBZnRlciAtIGxpc3RTdGFydExpbmVCZWZvcmU7XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIHJvb3QucmVwbGFjZUN1cnNvcih7XG4gICAgICBsaW5lOiBjdXJzb3IubGluZSArIGxpbmVEaWZmLFxuICAgICAgY2g6IGN1cnNvci5jaCxcbiAgICB9KTtcblxuICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMocm9vdCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290LCByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzIH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIE1vdmVMaXN0VXAgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBwYXJlbnQgPSBsaXN0LmdldFBhcmVudCgpO1xuICAgIGNvbnN0IGdyYW5kUGFyZW50ID0gcGFyZW50LmdldFBhcmVudCgpO1xuICAgIGNvbnN0IHByZXYgPSBwYXJlbnQuZ2V0UHJldlNpYmxpbmdPZihsaXN0KTtcblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVCZWZvcmUgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG5cbiAgICBpZiAoIXByZXYgJiYgZ3JhbmRQYXJlbnQpIHtcbiAgICAgIGNvbnN0IG5ld1BhcmVudCA9IGdyYW5kUGFyZW50LmdldFByZXZTaWJsaW5nT2YocGFyZW50KTtcblxuICAgICAgaWYgKG5ld1BhcmVudCkge1xuICAgICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG4gICAgICAgIG5ld1BhcmVudC5hZGRBZnRlckFsbChsaXN0KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByZXYpIHtcbiAgICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG4gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG4gICAgICBwYXJlbnQuYWRkQmVmb3JlKHByZXYsIGxpc3QpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy51cGRhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUFmdGVyID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuICAgIGNvbnN0IGxpbmVEaWZmID0gbGlzdFN0YXJ0TGluZUFmdGVyIC0gbGlzdFN0YXJ0TGluZUJlZm9yZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lICsgbGluZURpZmYsXG4gICAgICBjaDogY3Vyc29yLmNoLFxuICAgIH0pO1xuXG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBJbmRlbnRMaXN0IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvSW5kZW50TGlzdFwiO1xuaW1wb3J0IHsgTW92ZUxpc3REb3duIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvTW92ZUxpc3REb3duXCI7XG5pbXBvcnQgeyBNb3ZlTGlzdFVwIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvTW92ZUxpc3RVcFwiO1xuaW1wb3J0IHsgT3V0ZGVudExpc3QgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9PdXRkZW50TGlzdFwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBjcmVhdGVFZGl0b3JDYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVFZGl0b3JDYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgTGlzdHNNb3ZlbWVudENvbW1hbmRzIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcIm1vdmUtbGlzdC1pdGVtLXVwXCIsXG4gICAgICBpY29uOiBcImFycm93LXVwXCIsXG4gICAgICBuYW1lOiBcIk1vdmUgbGlzdCBhbmQgc3VibGlzdHMgdXBcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiBjcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLm1vdmVMaXN0VXApLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIiwgXCJTaGlmdFwiXSxcbiAgICAgICAgICBrZXk6IFwiQXJyb3dVcFwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwibW92ZS1saXN0LWl0ZW0tZG93blwiLFxuICAgICAgaWNvbjogXCJhcnJvdy1kb3duXCIsXG4gICAgICBuYW1lOiBcIk1vdmUgbGlzdCBhbmQgc3VibGlzdHMgZG93blwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IGNyZWF0ZUVkaXRvckNhbGxiYWNrKHRoaXMubW92ZUxpc3REb3duKSxcbiAgICAgIGhvdGtleXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vZGlmaWVyczogW1wiTW9kXCIsIFwiU2hpZnRcIl0sXG4gICAgICAgICAga2V5OiBcIkFycm93RG93blwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwiaW5kZW50LWxpc3RcIixcbiAgICAgIGljb246IFwiaW5kZW50XCIsXG4gICAgICBuYW1lOiBcIkluZGVudCB0aGUgbGlzdCBhbmQgc3VibGlzdHNcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiBjcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLmluZGVudExpc3QpLFxuICAgICAgaG90a2V5czogW10sXG4gICAgfSk7XG5cbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcIm91dGRlbnQtbGlzdFwiLFxuICAgICAgaWNvbjogXCJvdXRkZW50XCIsXG4gICAgICBuYW1lOiBcIk91dGRlbnQgdGhlIGxpc3QgYW5kIHN1Ymxpc3RzXCIsXG4gICAgICBlZGl0b3JDYWxsYmFjazogY3JlYXRlRWRpdG9yQ2FsbGJhY2sodGhpcy5vdXRkZW50TGlzdCksXG4gICAgICBob3RrZXlzOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBtb3ZlTGlzdERvd24gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIGNvbnN0IHsgc2hvdWxkU3RvcFByb3BhZ2F0aW9uIH0gPSB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlTGlzdERvd24ocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuXG4gICAgcmV0dXJuIHNob3VsZFN0b3BQcm9wYWdhdGlvbjtcbiAgfTtcblxuICBwcml2YXRlIG1vdmVMaXN0VXAgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIGNvbnN0IHsgc2hvdWxkU3RvcFByb3BhZ2F0aW9uIH0gPSB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlTGlzdFVwKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIHJldHVybiBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG5cbiAgcHJpdmF0ZSBpbmRlbnRMaXN0ID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBjb25zdCB7IHNob3VsZFN0b3BQcm9wYWdhdGlvbiB9ID0gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PlxuICAgICAgICBuZXcgSW5kZW50TGlzdChyb290LCB0aGlzLm9ic2lkaWFuU2V0dGluZ3MuZ2V0RGVmYXVsdEluZGVudENoYXJzKCkpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIHJldHVybiBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG5cbiAgcHJpdmF0ZSBvdXRkZW50TGlzdCA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgY29uc3QgeyBzaG91bGRTdG9wUHJvcGFnYXRpb24gfSA9IHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLnBlcmZvcm0oXG4gICAgICAocm9vdCkgPT4gbmV3IE91dGRlbnRMaXN0KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIHJldHVybiBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVUaWxsQ3VycmVudExpbmVDb250ZW50U3RhcnQgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzSW5mbygpO1xuICAgIGNvbnN0IGxpbmVObyA9IGxpbmVzLmZpbmRJbmRleCgobCkgPT4gbC5mcm9tLmxpbmUgPT09IGN1cnNvci5saW5lKTtcblxuICAgIGxpbmVzW2xpbmVOb10udGV4dCA9IGxpbmVzW2xpbmVOb10udGV4dC5zbGljZShcbiAgICAgIGN1cnNvci5jaCAtIGxpbmVzW2xpbmVOb10uZnJvbS5jaFxuICAgICk7XG5cbiAgICBsaXN0LnJlcGxhY2VMaW5lcyhsaW5lcy5tYXAoKGwpID0+IGwudGV4dCkpO1xuICAgIHJvb3QucmVwbGFjZUN1cnNvcihsaW5lc1tsaW5lTm9dLmZyb20pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IERlbGV0ZVRpbGxDdXJyZW50TGluZUNvbnRlbnRTdGFydCB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0RlbGV0ZVRpbGxDdXJyZW50TGluZUNvbnRlbnRTdGFydFwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgTWV0YUJhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIG1hYzogXCJtLUJhY2tzcGFjZVwiLFxuICAgICAgICAgIHJ1bjogY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ICE9PSBcIm5ldmVyXCIgJiZcbiAgICAgICF0aGlzLmltZURldGVjdG9yLmlzT3BlbmVkKClcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PiBuZXcgRGVsZXRlVGlsbEN1cnJlbnRMaW5lQ29udGVudFN0YXJ0KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IE1hcmtkb3duUmVuZGVyZXIsIE1vZGFsLCBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jbGFzcyBSZWxlYXNlTm90ZXNNb2RhbCBleHRlbmRzIE1vZGFsIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgdGl0bGU6IHN0cmluZyxcbiAgICBwcml2YXRlIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBwcml2YXRlIGNiOiAoKSA9PiB2b2lkXG4gICkge1xuICAgIHN1cGVyKHBsdWdpbi5hcHApO1xuICB9XG5cbiAgYXN5bmMgb25PcGVuKCkge1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KHRoaXMudGl0bGUpO1xuXG4gICAgTWFya2Rvd25SZW5kZXJlci5yZW5kZXJNYXJrZG93bihcbiAgICAgIHRoaXMuY29udGVudCxcbiAgICAgIHRoaXMuY29udGVudEVsLFxuICAgICAgXCJcIixcbiAgICAgIHRoaXMucGx1Z2luXG4gICAgKTtcbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgdGhpcy5jYigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVSZWxlYXNlcyhhOiBzdHJpbmcsIGI6IHN0cmluZykge1xuICBjb25zdCBbYU1ham9yLCBhTWlub3IsIGFQYXRjaF0gPSBhLnNwbGl0KFwiLlwiLCAzKS5tYXAoTnVtYmVyKTtcbiAgY29uc3QgW2JNYWpvciwgYk1pbm9yLCBiUGF0Y2hdID0gYi5zcGxpdChcIi5cIiwgMykubWFwKE51bWJlcik7XG5cbiAgaWYgKGFNYWpvciA9PT0gYk1ham9yKSB7XG4gICAgaWYgKGFNaW5vciA9PT0gYk1pbm9yKSB7XG4gICAgICByZXR1cm4gYVBhdGNoIC0gYlBhdGNoO1xuICAgIH1cblxuICAgIHJldHVybiBhTWlub3IgLSBiTWlub3I7XG4gIH1cblxuICByZXR1cm4gYU1ham9yIC0gYk1ham9yO1xufVxuXG5mdW5jdGlvbiBwYXJzZUNoYW5nZWxvZygpIHtcbiAgY29uc3QgbWFya2Rvd24gPSBDSEFOR0VMT0dfTUQ7XG4gIGNvbnN0IHJlbGVhc2VOb3RlczogW3N0cmluZywgc3RyaW5nXVtdID0gW107XG4gIGxldCB2ZXJzaW9uO1xuICBsZXQgY29udGVudCA9IFwiXCI7XG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIG1hcmtkb3duLnNwbGl0KFwiXFxuXCIpKSB7XG4gICAgY29uc3QgdmVyc2lvbkhlYWRlck1hdGNoZXMgPSAvXiMrXFxzKyhcXGQrXFwuXFxkK1xcLlxcZCspJC8uZXhlYyhsaW5lKTtcbiAgICBpZiAodmVyc2lvbkhlYWRlck1hdGNoZXMpIHtcbiAgICAgIGlmICh2ZXJzaW9uICYmIGNvbnRlbnQudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVsZWFzZU5vdGVzLnB1c2goW3ZlcnNpb24sIGNvbnRlbnRdKTtcbiAgICAgIH1cbiAgICAgIHZlcnNpb24gPSB2ZXJzaW9uSGVhZGVyTWF0Y2hlc1sxXTtcbiAgICAgIGNvbnRlbnQgPSBsaW5lO1xuICAgICAgY29udGVudCArPSBcIlxcblwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZW50ICs9IGxpbmU7XG4gICAgICBjb250ZW50ICs9IFwiXFxuXCI7XG4gICAgfVxuICB9XG5cbiAgaWYgKHZlcnNpb24gJiYgY29udGVudC50cmltKCkubGVuZ3RoID4gMCkge1xuICAgIHJlbGVhc2VOb3Rlcy5wdXNoKFt2ZXJzaW9uLCBjb250ZW50XSk7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZU5vdGVzO1xufVxuXG5leHBvcnQgY2xhc3MgUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50IGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIHByaXZhdGUgbW9kYWw6IFJlbGVhc2VOb3Rlc01vZGFsIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLCBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncykge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwic2hvdy1yZWxlYXNlLW5vdGVzXCIsXG4gICAgICBuYW1lOiBcIlNob3cgUmVsZWFzZSBOb3Rlc1wiLFxuICAgICAgY2FsbGJhY2s6IHRoaXMuc2hvd01vZGFsLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zaG93TW9kYWwodGhpcy5zZXR0aW5ncy5wcmV2aW91c1JlbGVhc2UpO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge1xuICAgIGlmICghdGhpcy5tb2RhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5tb2RhbDtcbiAgICB0aGlzLm1vZGFsID0gbnVsbDtcbiAgICBtb2RhbC5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93TW9kYWwgPSAocHJldmlvdXNSZWxlYXNlOiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuICAgIGxldCByZWxlYXNlTm90ZXMgPSBcIlwiO1xuICAgIGZvciAoY29uc3QgW3ZlcnNpb24sIGNvbnRlbnRdIG9mIHBhcnNlQ2hhbmdlbG9nKCkpIHtcbiAgICAgIGlmIChjb21wYXJlUmVsZWFzZXModmVyc2lvbiwgcHJldmlvdXNSZWxlYXNlIHx8IFwiMC4wLjBcIikgPiAwKSB7XG4gICAgICAgIHJlbGVhc2VOb3RlcyArPSBjb250ZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZWxlYXNlTm90ZXMudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGFsVGl0bGUgPSBgV2VsY29tZSB0byBPYnNpZGlhbiBPdXRsaW5lciAke1BMVUdJTl9WRVJTSU9OfWA7XG5cbiAgICB0aGlzLm1vZGFsID0gbmV3IFJlbGVhc2VOb3Rlc01vZGFsKFxuICAgICAgdGhpcy5wbHVnaW4sXG4gICAgICBtb2RhbFRpdGxlLFxuICAgICAgcmVsZWFzZU5vdGVzLFxuICAgICAgdGhpcy5oYW5kbGVDbG9zZVxuICAgICk7XG4gICAgdGhpcy5tb2RhbC5vcGVuKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbG9zZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIXRoaXMubW9kYWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHRpbmdzLnByZXZpb3VzUmVsZWFzZSA9IFBMVUdJTl9WRVJTSU9OO1xuICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgQXBwLCBQbHVnaW5TZXR0aW5nVGFiLCBQbHVnaW5fMiwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQge1xuICBLZWVwQ3Vyc29yV2l0aGluQ29udGVudCxcbiAgU2V0dGluZ3MsXG4gIFZlcnRpY2FsTGluZXNBY3Rpb24sXG59IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jbGFzcyBPYnNpZGlhbk91dGxpbmVyUGx1Z2luU2V0dGluZ1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBQbHVnaW5fMiwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHtcbiAgICBzdXBlcihhcHAsIHBsdWdpbik7XG4gIH1cblxuICBkaXNwbGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGFpbmVyRWwgfSA9IHRoaXM7XG5cbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIlN0aWNrIHRoZSBjdXJzb3IgdG8gdGhlIGNvbnRlbnRcIilcbiAgICAgIC5zZXREZXNjKFwiRG9uJ3QgbGV0IHRoZSBjdXJzb3IgbW92ZSB0byB0aGUgYnVsbGV0IHBvc2l0aW9uLlwiKVxuICAgICAgLmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuICAgICAgICBkcm9wZG93blxuICAgICAgICAgIC5hZGRPcHRpb25zKHtcbiAgICAgICAgICAgIG5ldmVyOiBcIk5ldmVyXCIsXG4gICAgICAgICAgICBcImJ1bGxldC1vbmx5XCI6IFwiU3RpY2sgY3Vyc29yIG91dCBvZiBidWxsZXRzXCIsXG4gICAgICAgICAgICBcImJ1bGxldC1hbmQtY2hlY2tib3hcIjogXCJTdGljayBjdXJzb3Igb3V0IG9mIGJ1bGxldHMgYW5kIGNoZWNrYm94ZXNcIixcbiAgICAgICAgICB9IGFzIHsgW2tleSBpbiBLZWVwQ3Vyc29yV2l0aGluQ29udGVudF06IHN0cmluZyB9KVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50KVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWU6IEtlZXBDdXJzb3JXaXRoaW5Db250ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkVuaGFuY2UgdGhlIFRhYiBrZXlcIilcbiAgICAgIC5zZXREZXNjKFwiTWFrZSBUYWIgYW5kIFNoaWZ0LVRhYiBiZWhhdmUgdGhlIHNhbWUgYXMgb3RoZXIgb3V0bGluZXJzLlwiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLm92ZXJyaWRlVGFiQmVoYXZpb3VyKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVUYWJCZWhhdmlvdXIgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiRW5oYW5jZSB0aGUgRW50ZXIga2V5XCIpXG4gICAgICAuc2V0RGVzYyhcIk1ha2UgdGhlIEVudGVyIGtleSBiZWhhdmUgdGhlIHNhbWUgYXMgb3RoZXIgb3V0bGluZXJzLlwiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLm92ZXJyaWRlRW50ZXJCZWhhdmlvdXIpXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5vdmVycmlkZUVudGVyQmVoYXZpb3VyID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkVuaGFuY2UgdGhlIEN0cmwrQSBvciBDbWQrQSBiZWhhdmlvclwiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiUHJlc3MgdGhlIGhvdGtleSBvbmNlIHRvIHNlbGVjdCB0aGUgY3VycmVudCBsaXN0IGl0ZW0uIFByZXNzIHRoZSBob3RrZXkgdHdpY2UgdG8gc2VsZWN0IHRoZSBlbnRpcmUgbGlzdC5cIlxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLm92ZXJyaWRlU2VsZWN0QWxsQmVoYXZpb3VyKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXIgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiSW1wcm92ZSB0aGUgc3R5bGUgb2YgeW91ciBsaXN0c1wiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiU3R5bGVzIGFyZSBvbmx5IGNvbXBhdGlibGUgd2l0aCBidWlsdC1pbiBPYnNpZGlhbiB0aGVtZXMgYW5kIG1heSBub3QgYmUgY29tcGF0aWJsZSB3aXRoIG90aGVyIHRoZW1lcy5cIlxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmJldHRlckxpc3RzU3R5bGVzKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuYmV0dGVyTGlzdHNTdHlsZXMgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiRHJhdyB2ZXJ0aWNhbCBpbmRlbnRhdGlvbiBsaW5lc1wiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXMpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MudmVydGljYWxMaW5lcyA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIlZlcnRpY2FsIGluZGVudGF0aW9uIGxpbmUgY2xpY2sgYWN0aW9uXCIpXG4gICAgICAuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG4gICAgICAgIGRyb3Bkb3duXG4gICAgICAgICAgLmFkZE9wdGlvbnMoe1xuICAgICAgICAgICAgbm9uZTogXCJOb25lXCIsXG4gICAgICAgICAgICBcInpvb20taW5cIjogXCJab29tIEluXCIsXG4gICAgICAgICAgICBcInRvZ2dsZS1mb2xkaW5nXCI6IFwiVG9nZ2xlIEZvbGRpbmdcIixcbiAgICAgICAgICB9IGFzIHsgW2tleSBpbiBWZXJ0aWNhbExpbmVzQWN0aW9uXTogc3RyaW5nIH0pXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MudmVydGljYWxMaW5lc0FjdGlvbilcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlOiBWZXJ0aWNhbExpbmVzQWN0aW9uKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXNBY3Rpb24gPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbCkuc2V0TmFtZShcIkRyYWctYW5kLURyb3BcIikuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmRyYWdBbmREcm9wKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kcmFnQW5kRHJvcCA9IHZhbHVlO1xuICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkRlYnVnIG1vZGVcIilcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICBcIk9wZW4gRGV2VG9vbHMgKENvbW1hbmQrT3B0aW9uK0kgb3IgQ29udHJvbCtTaGlmdCtJKSB0byBjb3B5IHRoZSBkZWJ1ZyBsb2dzLlwiXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZGVidWcpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZGVidWcgPSB2YWx1ZTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NUYWIgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLCBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncykge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZFNldHRpbmdUYWIoXG4gICAgICBuZXcgT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdUYWIoXG4gICAgICAgIHRoaXMucGx1Z2luLmFwcCxcbiAgICAgICAgdGhpcy5wbHVnaW4sXG4gICAgICAgIHRoaXMuc2V0dGluZ3NcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IFByZWMgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgT3V0ZGVudExpc3QgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9PdXRkZW50TGlzdFwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgU2hpZnRUYWJCZWhhdmlvdXJPdmVycmlkZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBpbWVEZXRlY3RvcjogSU1FRGV0ZWN0b3IsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIFByZWMuaGlnaGVzdChcbiAgICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwicy1UYWJcIixcbiAgICAgICAgICAgIHJ1bjogY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBjaGVjayA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5vdmVycmlkZVRhYkJlaGF2aW91ciAmJiAhdGhpcy5pbWVEZXRlY3Rvci5pc09wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PiBuZXcgT3V0ZGVudExpc3Qocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgQXBwLCBNb2RhbCwgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NcIjtcblxuaW50ZXJmYWNlIEFwcEhpZGRlblByb3BzIHtcbiAgaW50ZXJuYWxQbHVnaW5zOiB7XG4gICAgY29uZmlnOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbiAgfTtcbiAgaXNNb2JpbGU6IGJvb2xlYW47XG4gIHBsdWdpbnM6IHtcbiAgICBlbmFibGVkUGx1Z2luczogU2V0PHN0cmluZz47XG4gICAgbWFuaWZlc3RzOiB7IFtrZXk6IHN0cmluZ106IHsgdmVyc2lvbjogc3RyaW5nIH0gfTtcbiAgfTtcbiAgdmF1bHQ6IHtcbiAgICBjb25maWc6IG9iamVjdDtcbiAgfTtcbn1cblxuY2xhc3MgU3lzdGVtSW5mb01vZGFsIGV4dGVuZHMgTW9kYWwge1xuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHtcbiAgICBzdXBlcihhcHApO1xuICB9XG5cbiAgYXN5bmMgb25PcGVuKCkge1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KFwiU3lzdGVtIEluZm9ybWF0aW9uXCIpO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBhcHAgPSB0aGlzLmFwcCBhcyBhbnkgYXMgQXBwSGlkZGVuUHJvcHM7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgcHJvY2Vzczoge1xuICAgICAgICBhcmNoOiBwcm9jZXNzLmFyY2gsXG4gICAgICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgfSxcbiAgICAgIGFwcDoge1xuICAgICAgICBpbnRlcm5hbFBsdWdpbnM6IHtcbiAgICAgICAgICBjb25maWc6IGFwcC5pbnRlcm5hbFBsdWdpbnMuY29uZmlnLFxuICAgICAgICB9LFxuICAgICAgICBpc01vYmlsZTogYXBwLmlzTW9iaWxlLFxuICAgICAgICBwbHVnaW5zOiB7XG4gICAgICAgICAgZW5hYmxlZFBsdWdpbnM6IEFycmF5LmZyb20oYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMpLFxuICAgICAgICAgIG1hbmlmZXN0czogT2JqZWN0LmtleXMoYXBwLnBsdWdpbnMubWFuaWZlc3RzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IHtcbiAgICAgICAgICAgICAgdmVyc2lvbjogYXBwLnBsdWdpbnMubWFuaWZlc3RzW2tleV0udmVyc2lvbixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIHt9IGFzIHsgW2tleTogc3RyaW5nXTogeyB2ZXJzaW9uOiBzdHJpbmcgfSB9KSxcbiAgICAgICAgfSxcbiAgICAgICAgdmF1bHQ6IHtcbiAgICAgICAgICBjb25maWc6IGFwcC52YXVsdC5jb25maWcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcGx1Z2luOiB7XG4gICAgICAgIHNldHRpbmdzOiB7IHZhbHVlczogdGhpcy5zZXR0aW5ncy5nZXRWYWx1ZXMoKSB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgdGV4dCA9IEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpO1xuXG4gICAgY29uc3QgcHJlID0gdGhpcy5jb250ZW50RWwuY3JlYXRlRWwoXCJwcmVcIik7XG4gICAgcHJlLnNldFRleHQodGV4dCk7XG4gICAgcHJlLnNldENzc1N0eWxlcyh7XG4gICAgICBvdmVyZmxvdzogXCJzY3JvbGxcIixcbiAgICAgIG1heEhlaWdodDogXCIzMDBweFwiLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYnV0dG9uID0gdGhpcy5jb250ZW50RWwuY3JlYXRlRWwoXCJidXR0b25cIik7XG4gICAgYnV0dG9uLnNldFRleHQoXCJDb3B5IGFuZCBDbG9zZVwiKTtcbiAgICBidXR0b24ub25DbGlja0V2ZW50KCgpID0+IHtcbiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KFwiYGBganNvblxcblwiICsgdGV4dCArIFwiXFxuYGBgXCIpO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTeXN0ZW1JbmZvIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMiwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcInN5c3RlbS1pbmZvXCIsXG4gICAgICBuYW1lOiBcIlNob3cgU3lzdGVtIEluZm9cIixcbiAgICAgIGNhbGxiYWNrOiB0aGlzLmNhbGxiYWNrLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIiwgXCJTaGlmdFwiLCBcIkFsdFwiXSxcbiAgICAgICAgICBrZXk6IFwiSVwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBjYWxsYmFjayA9ICgpID0+IHtcbiAgICBjb25zdCBtb2RhbCA9IG5ldyBTeXN0ZW1JbmZvTW9kYWwodGhpcy5wbHVnaW4uYXBwLCB0aGlzLnNldHRpbmdzKTtcbiAgICBtb2RhbC5vcGVuKCk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBQcmVjIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IEluZGVudExpc3QgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9JbmRlbnRMaXN0XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2sgfSBmcm9tIFwiLi4vdXRpbHMvY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2tcIjtcblxuZXhwb3J0IGNsYXNzIFRhYkJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIFByZWMuaGlnaGVzdChcbiAgICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwiVGFiXCIsXG4gICAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVUYWJCZWhhdmlvdXIgJiYgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKTtcbiAgfTtcblxuICBwcml2YXRlIHJ1biA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLnBlcmZvcm0oXG4gICAgICAocm9vdCkgPT5cbiAgICAgICAgbmV3IEluZGVudExpc3Qocm9vdCwgdGhpcy5vYnNpZGlhblNldHRpbmdzLmdldERlZmF1bHRJbmRlbnRDaGFycygpKSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQge1xuICBFZGl0b3JWaWV3LFxuICBQbHVnaW5WYWx1ZSxcbiAgVmlld1BsdWdpbixcbiAgVmlld1VwZGF0ZSxcbn0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IsIGdldEVkaXRvckZyb21TdGF0ZSB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IExpc3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvUGFyc2VyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jb25zdCBWRVJUSUNBTF9MSU5FU19CT0RZX0NMQVNTID0gXCJvdXRsaW5lci1wbHVnaW4tdmVydGljYWwtbGluZXNcIjtcblxuaW50ZXJmYWNlIExpbmVEYXRhIHtcbiAgdG9wOiBudW1iZXI7XG4gIGxlZnQ6IG51bWJlcjtcbiAgaGVpZ2h0OiBzdHJpbmc7XG4gIGxpc3Q6IExpc3Q7XG59XG5cbmNsYXNzIFZlcnRpY2FsTGluZXNQbHVnaW5WYWx1ZSBpbXBsZW1lbnRzIFBsdWdpblZhbHVlIHtcbiAgcHJpdmF0ZSBzY2hlZHVsZWQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICBwcml2YXRlIHNjcm9sbGVyOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBjb250ZW50Q29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBlZGl0b3I6IE15RWRpdG9yO1xuICBwcml2YXRlIGxhc3RMaW5lOiBudW1iZXI7XG4gIHByaXZhdGUgbGluZXM6IExpbmVEYXRhW107XG4gIHByaXZhdGUgbGluZUVsZW1lbnRzOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvYnNpZGlhblNldHRpbmdzOiBPYnNpZGlhblNldHRpbmdzLFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSB2aWV3OiBFZGl0b3JWaWV3XG4gICkge1xuICAgIHRoaXMudmlldy5zY3JvbGxET00uYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICB0aGlzLnNldHRpbmdzLm9uQ2hhbmdlKHRoaXMuc2NoZWR1bGVSZWNhbGN1bGF0ZSk7XG5cbiAgICB0aGlzLnByZXBhcmVEb20oKTtcbiAgICB0aGlzLndhaXRGb3JFZGl0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgd2FpdEZvckVkaXRvciA9ICgpID0+IHtcbiAgICBjb25zdCBlZGl0b3IgPSBnZXRFZGl0b3JGcm9tU3RhdGUodGhpcy52aWV3LnN0YXRlKTtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgc2V0VGltZW91dCh0aGlzLndhaXRGb3JFZGl0b3IsIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICB0aGlzLnNjaGVkdWxlUmVjYWxjdWxhdGUoKTtcbiAgfTtcblxuICBwcml2YXRlIHByZXBhcmVEb20oKSB7XG4gICAgdGhpcy5jb250ZW50Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIuY2xhc3NMaXN0LmFkZChcbiAgICAgIFwib3V0bGluZXItcGx1Z2luLWxpc3QtbGluZXMtY29udGVudC1jb250YWluZXJcIlxuICAgICk7XG5cbiAgICB0aGlzLnNjcm9sbGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLnNjcm9sbGVyLmNsYXNzTGlzdC5hZGQoXCJvdXRsaW5lci1wbHVnaW4tbGlzdC1saW5lcy1zY3JvbGxlclwiKTtcblxuICAgIHRoaXMuc2Nyb2xsZXIuYXBwZW5kQ2hpbGQodGhpcy5jb250ZW50Q29udGFpbmVyKTtcbiAgICB0aGlzLnZpZXcuZG9tLmFwcGVuZENoaWxkKHRoaXMuc2Nyb2xsZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNjcm9sbCA9IChlOiBFdmVudCkgPT4ge1xuICAgIGNvbnN0IHsgc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wIH0gPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLnNjcm9sbGVyLnNjcm9sbFRvKHNjcm9sbExlZnQsIHNjcm9sbFRvcCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZVJlY2FsY3VsYXRlID0gKCkgPT4ge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnNjaGVkdWxlZCk7XG4gICAgdGhpcy5zY2hlZHVsZWQgPSBzZXRUaW1lb3V0KHRoaXMuY2FsY3VsYXRlLCAwKTtcbiAgfTtcblxuICB1cGRhdGUodXBkYXRlOiBWaWV3VXBkYXRlKSB7XG4gICAgaWYgKFxuICAgICAgdXBkYXRlLmRvY0NoYW5nZWQgfHxcbiAgICAgIHVwZGF0ZS52aWV3cG9ydENoYW5nZWQgfHxcbiAgICAgIHVwZGF0ZS5nZW9tZXRyeUNoYW5nZWQgfHxcbiAgICAgIHVwZGF0ZS50cmFuc2FjdGlvbnMuc29tZSgodHIpID0+IHRyLnJlY29uZmlndXJlZClcbiAgICApIHtcbiAgICAgIHRoaXMuc2NoZWR1bGVSZWNhbGN1bGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlID0gKCkgPT4ge1xuICAgIHRoaXMubGluZXMgPSBbXTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMuc2V0dGluZ3MudmVydGljYWxMaW5lcyAmJlxuICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLmlzRGVmYXVsdFRoZW1lRW5hYmxlZCgpICYmXG4gICAgICB0aGlzLnZpZXcudmlld3BvcnRMaW5lQmxvY2tzLmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMudmlldy52aXNpYmxlUmFuZ2VzLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGNvbnN0IGZyb21MaW5lID0gdGhpcy5lZGl0b3Iub2Zmc2V0VG9Qb3ModGhpcy52aWV3LnZpZXdwb3J0LmZyb20pLmxpbmU7XG4gICAgICBjb25zdCB0b0xpbmUgPSB0aGlzLmVkaXRvci5vZmZzZXRUb1Bvcyh0aGlzLnZpZXcudmlld3BvcnQudG8pLmxpbmU7XG4gICAgICBjb25zdCBsaXN0cyA9IHRoaXMucGFyc2VyLnBhcnNlUmFuZ2UodGhpcy5lZGl0b3IsIGZyb21MaW5lLCB0b0xpbmUpO1xuXG4gICAgICBmb3IgKGNvbnN0IGxpc3Qgb2YgbGlzdHMpIHtcbiAgICAgICAgdGhpcy5sYXN0TGluZSA9IGxpc3QuZ2V0Q29udGVudEVuZCgpLmxpbmU7XG5cbiAgICAgICAgZm9yIChjb25zdCBjIG9mIGxpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgIHRoaXMucmVjdXJzaXZlKGMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGluZXMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgYS50b3AgPT09IGIudG9wID8gYS5sZWZ0IC0gYi5sZWZ0IDogYS50b3AgLSBiLnRvcFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZURvbSgpO1xuICB9O1xuXG4gIHByaXZhdGUgZ2V0TmV4dFNpYmxpbmcobGlzdDogTGlzdCk6IExpc3QgfCBudWxsIHtcbiAgICBsZXQgbGlzdFRtcCA9IGxpc3Q7XG4gICAgbGV0IHAgPSBsaXN0VG1wLmdldFBhcmVudCgpO1xuICAgIHdoaWxlIChwKSB7XG4gICAgICBjb25zdCBuZXh0U2libGluZyA9IHAuZ2V0TmV4dFNpYmxpbmdPZihsaXN0VG1wKTtcbiAgICAgIGlmIChuZXh0U2libGluZykge1xuICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmc7XG4gICAgICB9XG4gICAgICBsaXN0VG1wID0gcDtcbiAgICAgIHAgPSBsaXN0VG1wLmdldFBhcmVudCgpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVjdXJzaXZlKGxpc3Q6IExpc3QsIHBhcmVudEN0eDogeyByb290TGVmdD86IG51bWJlciB9ID0ge30pIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IGxpc3QuZ2V0Q2hpbGRyZW4oKTtcblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmcm9tT2Zmc2V0ID0gdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgbGluZTogbGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lLFxuICAgICAgY2g6IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoLFxuICAgIH0pO1xuICAgIGNvbnN0IG5leHRTaWJsaW5nID0gdGhpcy5nZXROZXh0U2libGluZyhsaXN0KTtcbiAgICBjb25zdCB0aWxsT2Zmc2V0ID0gdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgbGluZTogbmV4dFNpYmxpbmdcbiAgICAgICAgPyBuZXh0U2libGluZy5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lIC0gMVxuICAgICAgICA6IHRoaXMubGFzdExpbmUsXG4gICAgICBjaDogMCxcbiAgICB9KTtcblxuICAgIGxldCB2aXNpYmxlRnJvbSA9IHRoaXMudmlldy52aXNpYmxlUmFuZ2VzWzBdLmZyb207XG4gICAgbGV0IHZpc2libGVUbyA9XG4gICAgICB0aGlzLnZpZXcudmlzaWJsZVJhbmdlc1t0aGlzLnZpZXcudmlzaWJsZVJhbmdlcy5sZW5ndGggLSAxXS50bztcbiAgICBjb25zdCB6b29tUmFuZ2UgPSB0aGlzLmVkaXRvci5nZXRab29tUmFuZ2UoKTtcbiAgICBpZiAoem9vbVJhbmdlKSB7XG4gICAgICB2aXNpYmxlRnJvbSA9IE1hdGgubWF4KFxuICAgICAgICB2aXNpYmxlRnJvbSxcbiAgICAgICAgdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQoem9vbVJhbmdlLmZyb20pXG4gICAgICApO1xuICAgICAgdmlzaWJsZVRvID0gTWF0aC5taW4odmlzaWJsZVRvLCB0aGlzLmVkaXRvci5wb3NUb09mZnNldCh6b29tUmFuZ2UudG8pKTtcbiAgICB9XG5cbiAgICBpZiAoZnJvbU9mZnNldCA+IHZpc2libGVUbyB8fCB0aWxsT2Zmc2V0IDwgdmlzaWJsZUZyb20pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb29yZHMgPSB0aGlzLnZpZXcuY29vcmRzQXRQb3MoZnJvbU9mZnNldCwgMSk7XG4gICAgaWYgKHBhcmVudEN0eC5yb290TGVmdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJlbnRDdHgucm9vdExlZnQgPSBjb29yZHMubGVmdDtcbiAgICB9XG4gICAgY29uc3QgbGVmdCA9IE1hdGguZmxvb3IoY29vcmRzLnJpZ2h0IC0gcGFyZW50Q3R4LnJvb3RMZWZ0KTtcblxuICAgIGNvbnN0IHRvcCA9XG4gICAgICB2aXNpYmxlRnJvbSA+IDAgJiYgZnJvbU9mZnNldCA8IHZpc2libGVGcm9tXG4gICAgICAgID8gLTIwXG4gICAgICAgIDogdGhpcy52aWV3LmxpbmVCbG9ja0F0KGZyb21PZmZzZXQpLnRvcDtcbiAgICBjb25zdCBib3R0b20gPVxuICAgICAgdGlsbE9mZnNldCA+IHZpc2libGVUb1xuICAgICAgICA/IHRoaXMudmlldy5saW5lQmxvY2tBdCh2aXNpYmxlVG8gLSAxKS5ib3R0b21cbiAgICAgICAgOiB0aGlzLnZpZXcubGluZUJsb2NrQXQodGlsbE9mZnNldCkuYm90dG9tO1xuICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcblxuICAgIGlmIChoZWlnaHQgPiAwICYmICFsaXN0LmlzRm9sZGVkKCkpIHtcbiAgICAgIGNvbnN0IG5leHRTaWJsaW5nID0gbGlzdC5nZXRQYXJlbnQoKS5nZXROZXh0U2libGluZ09mKGxpc3QpO1xuICAgICAgY29uc3QgaGFzTmV4dFNpYmxpbmcgPVxuICAgICAgICAhIW5leHRTaWJsaW5nICYmXG4gICAgICAgIHRoaXMuZWRpdG9yLnBvc1RvT2Zmc2V0KG5leHRTaWJsaW5nLmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpKSA8PVxuICAgICAgICAgIHZpc2libGVUbztcblxuICAgICAgdGhpcy5saW5lcy5wdXNoKHtcbiAgICAgICAgdG9wLFxuICAgICAgICBsZWZ0LFxuICAgICAgICBoZWlnaHQ6IGBjYWxjKCR7aGVpZ2h0fXB4ICR7aGFzTmV4dFNpYmxpbmcgPyBcIi0gMS41ZW1cIiA6IFwiLSAyZW1cIn0pYCxcbiAgICAgICAgbGlzdCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGlmICghY2hpbGQuaXNFbXB0eSgpKSB7XG4gICAgICAgIHRoaXMucmVjdXJzaXZlKGNoaWxkLCBwYXJlbnRDdHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25DbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY29uc3QgbGluZSA9IHRoaXMubGluZXNbTnVtYmVyKChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZGF0YXNldC5pbmRleCldO1xuXG4gICAgc3dpdGNoICh0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXNBY3Rpb24pIHtcbiAgICAgIGNhc2UgXCJ6b29tLWluXCI6XG4gICAgICAgIHRoaXMuem9vbUluKGxpbmUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcInRvZ2dsZS1mb2xkaW5nXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlRm9sZGluZyhsaW5lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgem9vbUluKGxpbmU6IExpbmVEYXRhKSB7XG4gICAgY29uc3QgZWRpdG9yID0gZ2V0RWRpdG9yRnJvbVN0YXRlKHRoaXMudmlldy5zdGF0ZSk7XG5cbiAgICBlZGl0b3Iuem9vbUluKGxpbmUubGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlRm9sZGluZyhsaW5lOiBMaW5lRGF0YSkge1xuICAgIGNvbnN0IHsgbGlzdCB9ID0gbGluZTtcblxuICAgIGlmIChsaXN0LmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBuZWVkVG9VbmZvbGQgPSB0cnVlO1xuICAgIGNvbnN0IGxpbmVzVG9Ub2dnbGU6IG51bWJlcltdID0gW107XG4gICAgZm9yIChjb25zdCBjIG9mIGxpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgaWYgKGMuaXNFbXB0eSgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFjLmlzRm9sZGVkKCkpIHtcbiAgICAgICAgbmVlZFRvVW5mb2xkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBsaW5lc1RvVG9nZ2xlLnB1c2goYy5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lKTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0b3IgPSBnZXRFZGl0b3JGcm9tU3RhdGUodGhpcy52aWV3LnN0YXRlKTtcblxuICAgIGZvciAoY29uc3QgbCBvZiBsaW5lc1RvVG9nZ2xlKSB7XG4gICAgICBpZiAobmVlZFRvVW5mb2xkKSB7XG4gICAgICAgIGVkaXRvci51bmZvbGQobCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGl0b3IuZm9sZChsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURvbSgpIHtcbiAgICBjb25zdCBjbVNjcm9sbCA9IHRoaXMudmlldy5zY3JvbGxET007XG4gICAgY29uc3QgY21Db250ZW50ID0gdGhpcy52aWV3LmNvbnRlbnRET007XG4gICAgY29uc3QgY21Db250ZW50Q29udGFpbmVyID0gY21Db250ZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgY29uc3QgY21TaXplciA9IGNtQ29udGVudENvbnRhaW5lci5wYXJlbnRFbGVtZW50O1xuXG4gICAgLyoqXG4gICAgICogT2JzaWRpYW4gY2FuIGFkZCBhZGRpdGlvbmFsIGVsZW1lbnRzIGludG8gQ29udGVudCBNYW5hZ2VyLlxuICAgICAqIFRoZSBtb3N0IG9idmlvdXMgY2FzZSBpcyB0aGUgJ2VtYmVkZGVkLWJhY2tsaW5rcycgY29yZSBwbHVnaW4gdGhhdCBhZGRzIGEgbWVudSBpbnNpZGUgYSBDb250ZW50IE1hbmFnZXIuXG4gICAgICogV2UgbXVzdCB0YWtlIGhlaWdodHMgb2YgYWxsIG9mIHRoZXNlIGVsZW1lbnRzIGludG8gYWNjb3VudFxuICAgICAqIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHNpemUgb2YgbGluZXMnIGNvbnRhaW5lci5cbiAgICAgKi9cbiAgICBsZXQgY21TaXplckNoaWxkcmVuU3VtSGVpZ2h0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNtU2l6ZXIuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNtU2l6ZXJDaGlsZHJlblN1bUhlaWdodCArPSBjbVNpemVyLmNoaWxkcmVuW2ldLmNsaWVudEhlaWdodDtcbiAgICB9XG5cbiAgICB0aGlzLnNjcm9sbGVyLnN0eWxlLnRvcCA9IGNtU2Nyb2xsLm9mZnNldFRvcCArIFwicHhcIjtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gY21TaXplckNoaWxkcmVuU3VtSGVpZ2h0ICsgXCJweFwiO1xuICAgIHRoaXMuY29udGVudENvbnRhaW5lci5zdHlsZS5tYXJnaW5MZWZ0ID1cbiAgICAgIGNtQ29udGVudENvbnRhaW5lci5vZmZzZXRMZWZ0ICsgXCJweFwiO1xuICAgIHRoaXMuY29udGVudENvbnRhaW5lci5zdHlsZS5tYXJnaW5Ub3AgPVxuICAgICAgKGNtQ29udGVudC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkub2Zmc2V0VG9wIC0gMjQgKyBcInB4XCI7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGggPT09IGkpIHtcbiAgICAgICAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIGUuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1saXN0LWxpbmVcIik7XG4gICAgICAgIGUuZGF0YXNldC5pbmRleCA9IFN0cmluZyhpKTtcbiAgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25DbGljayk7XG4gICAgICAgIHRoaXMuY29udGVudENvbnRhaW5lci5hcHBlbmRDaGlsZChlKTtcbiAgICAgICAgdGhpcy5saW5lRWxlbWVudHMucHVzaChlKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbCA9IHRoaXMubGluZXNbaV07XG4gICAgICBjb25zdCBlID0gdGhpcy5saW5lRWxlbWVudHNbaV07XG4gICAgICBlLnN0eWxlLnRvcCA9IGwudG9wICsgXCJweFwiO1xuICAgICAgZS5zdHlsZS5sZWZ0ID0gbC5sZWZ0ICsgXCJweFwiO1xuICAgICAgZS5zdHlsZS5oZWlnaHQgPSBsLmhlaWdodDtcbiAgICAgIGUuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gdGhpcy5saW5lcy5sZW5ndGg7IGkgPCB0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZSA9IHRoaXMubGluZUVsZW1lbnRzW2ldO1xuICAgICAgZS5zdHlsZS50b3AgPSBcIjBweFwiO1xuICAgICAgZS5zdHlsZS5sZWZ0ID0gXCIwcHhcIjtcbiAgICAgIGUuc3R5bGUuaGVpZ2h0ID0gXCIwcHhcIjtcbiAgICAgIGUuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZXR0aW5ncy5yZW1vdmVDYWxsYmFjayh0aGlzLnNjaGVkdWxlUmVjYWxjdWxhdGUpO1xuICAgIHRoaXMudmlldy5zY3JvbGxET00ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICB0aGlzLnZpZXcuZG9tLnJlbW92ZUNoaWxkKHRoaXMuc2Nyb2xsZXIpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnNjaGVkdWxlZCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZlcnRpY2FsTGluZXMgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgcHJpdmF0ZSB1cGRhdGVCb2R5Q2xhc3NJbnRlcnZhbDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBwYXJzZXI6IFBhcnNlclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnVwZGF0ZUJvZHlDbGFzcygpO1xuICAgIHRoaXMudXBkYXRlQm9keUNsYXNzSW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVCb2R5Q2xhc3MoKTtcbiAgICB9LCAxMDAwKTtcblxuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAgVmlld1BsdWdpbi5kZWZpbmUoXG4gICAgICAgICh2aWV3KSA9PlxuICAgICAgICAgIG5ldyBWZXJ0aWNhbExpbmVzUGx1Z2luVmFsdWUoXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLFxuICAgICAgICAgICAgdGhpcy5wYXJzZXIsXG4gICAgICAgICAgICB2aWV3XG4gICAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnVwZGF0ZUJvZHlDbGFzc0ludGVydmFsKTtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoVkVSVElDQUxfTElORVNfQk9EWV9DTEFTUyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUJvZHlDbGFzcyA9ICgpID0+IHtcbiAgICBjb25zdCBzaG91bGRFeGlzdHMgPVxuICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLmlzRGVmYXVsdFRoZW1lRW5hYmxlZCgpICYmXG4gICAgICB0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXM7XG4gICAgY29uc3QgZXhpc3RzID0gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoVkVSVElDQUxfTElORVNfQk9EWV9DTEFTUyk7XG5cbiAgICBpZiAoc2hvdWxkRXhpc3RzICYmICFleGlzdHMpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChWRVJUSUNBTF9MSU5FU19CT0RZX0NMQVNTKTtcbiAgICB9XG5cbiAgICBpZiAoIXNob3VsZEV4aXN0cyAmJiBleGlzdHMpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShWRVJUSUNBTF9MSU5FU19CT0RZX0NMQVNTKTtcbiAgICB9XG4gIH07XG59XG4iLCJpbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IExpc3QsIFBvc2l0aW9uLCBSb290LCBpc1Jhbmdlc0ludGVyc2VjdHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgQ2hhbmdlc0FwcGxpY2F0b3Ige1xuICBhcHBseShlZGl0b3I6IE15RWRpdG9yLCBwcmV2Um9vdDogUm9vdCwgbmV3Um9vdDogUm9vdCkge1xuICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLmNhbGN1bGF0ZUNoYW5nZXMoZWRpdG9yLCBwcmV2Um9vdCwgbmV3Um9vdCk7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIGNvbnN0IHsgcmVwbGFjZW1lbnQsIGNoYW5nZUZyb20sIGNoYW5nZVRvIH0gPSBjaGFuZ2VzO1xuXG4gICAgICBjb25zdCB7IHVuZm9sZCwgZm9sZCB9ID0gdGhpcy5jYWxjdWxhdGVGb2xkaW5nT3ByYXRpb25zKFxuICAgICAgICBwcmV2Um9vdCxcbiAgICAgICAgbmV3Um9vdCxcbiAgICAgICAgY2hhbmdlRnJvbSxcbiAgICAgICAgY2hhbmdlVG9cbiAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiB1bmZvbGQpIHtcbiAgICAgICAgZWRpdG9yLnVuZm9sZChsaW5lKTtcbiAgICAgIH1cblxuICAgICAgZWRpdG9yLnJlcGxhY2VSYW5nZShyZXBsYWNlbWVudCwgY2hhbmdlRnJvbSwgY2hhbmdlVG8pO1xuXG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgZm9sZCkge1xuICAgICAgICBlZGl0b3IuZm9sZChsaW5lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlZGl0b3Iuc2V0U2VsZWN0aW9ucyhuZXdSb290LmdldFNlbGVjdGlvbnMoKSk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUNoYW5nZXMoZWRpdG9yOiBNeUVkaXRvciwgcHJldlJvb3Q6IFJvb3QsIG5ld1Jvb3Q6IFJvb3QpIHtcbiAgICBjb25zdCByb290UmFuZ2UgPSBwcmV2Um9vdC5nZXRDb250ZW50UmFuZ2UoKTtcbiAgICBjb25zdCBvbGRTdHJpbmcgPSBlZGl0b3IuZ2V0UmFuZ2Uocm9vdFJhbmdlWzBdLCByb290UmFuZ2VbMV0pO1xuICAgIGNvbnN0IG5ld1N0cmluZyA9IG5ld1Jvb3QucHJpbnQoKTtcblxuICAgIGNvbnN0IGNoYW5nZUZyb20gPSB7IC4uLnJvb3RSYW5nZVswXSB9O1xuICAgIGNvbnN0IGNoYW5nZVRvID0geyAuLi5yb290UmFuZ2VbMV0gfTtcbiAgICBsZXQgb2xkVG1wID0gb2xkU3RyaW5nO1xuICAgIGxldCBuZXdUbXAgPSBuZXdTdHJpbmc7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgbmxJbmRleCA9IG9sZFRtcC5sYXN0SW5kZXhPZihcIlxcblwiKTtcblxuICAgICAgaWYgKG5sSW5kZXggPCAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvbGRMaW5lID0gb2xkVG1wLnNsaWNlKG5sSW5kZXgpO1xuICAgICAgY29uc3QgbmV3TGluZSA9IG5ld1RtcC5zbGljZSgtb2xkTGluZS5sZW5ndGgpO1xuXG4gICAgICBpZiAob2xkTGluZSAhPT0gbmV3TGluZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgb2xkVG1wID0gb2xkVG1wLnNsaWNlKDAsIC1vbGRMaW5lLmxlbmd0aCk7XG4gICAgICBuZXdUbXAgPSBuZXdUbXAuc2xpY2UoMCwgLW9sZExpbmUubGVuZ3RoKTtcbiAgICAgIGNvbnN0IG5sSW5kZXgyID0gb2xkVG1wLmxhc3RJbmRleE9mKFwiXFxuXCIpO1xuICAgICAgY2hhbmdlVG8uY2ggPVxuICAgICAgICBubEluZGV4MiA+PSAwID8gb2xkVG1wLmxlbmd0aCAtIG5sSW5kZXgyIC0gMSA6IG9sZFRtcC5sZW5ndGg7XG4gICAgICBjaGFuZ2VUby5saW5lLS07XG4gICAgfVxuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IG5sSW5kZXggPSBvbGRUbXAuaW5kZXhPZihcIlxcblwiKTtcblxuICAgICAgaWYgKG5sSW5kZXggPCAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvbGRMaW5lID0gb2xkVG1wLnNsaWNlKDAsIG5sSW5kZXggKyAxKTtcbiAgICAgIGNvbnN0IG5ld0xpbmUgPSBuZXdUbXAuc2xpY2UoMCwgb2xkTGluZS5sZW5ndGgpO1xuXG4gICAgICBpZiAob2xkTGluZSAhPT0gbmV3TGluZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2hhbmdlRnJvbS5saW5lKys7XG4gICAgICBvbGRUbXAgPSBvbGRUbXAuc2xpY2Uob2xkTGluZS5sZW5ndGgpO1xuICAgICAgbmV3VG1wID0gbmV3VG1wLnNsaWNlKG9sZExpbmUubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAob2xkVG1wID09PSBuZXdUbXApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZXBsYWNlbWVudDogbmV3VG1wLFxuICAgICAgY2hhbmdlRnJvbSxcbiAgICAgIGNoYW5nZVRvLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUZvbGRpbmdPcHJhdGlvbnMoXG4gICAgcHJldlJvb3Q6IFJvb3QsXG4gICAgbmV3Um9vdDogUm9vdCxcbiAgICBjaGFuZ2VGcm9tOiBQb3NpdGlvbixcbiAgICBjaGFuZ2VUbzogUG9zaXRpb25cbiAgKSB7XG4gICAgY29uc3QgY2hhbmdlZFJhbmdlOiBbUG9zaXRpb24sIFBvc2l0aW9uXSA9IFtjaGFuZ2VGcm9tLCBjaGFuZ2VUb107XG5cbiAgICBjb25zdCBwcmV2TGlzdHMgPSBnZXRBbGxDaGlsZHJlbihwcmV2Um9vdCk7XG4gICAgY29uc3QgbmV3TGlzdHMgPSBnZXRBbGxDaGlsZHJlbihuZXdSb290KTtcblxuICAgIGNvbnN0IHVuZm9sZDogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBmb2xkOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBwcmV2TGlzdCBvZiBwcmV2TGlzdHMudmFsdWVzKCkpIHtcbiAgICAgIGlmICghcHJldkxpc3QuaXNGb2xkUm9vdCgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdMaXN0ID0gbmV3TGlzdHMuZ2V0KHByZXZMaXN0LmdldElEKCkpO1xuXG4gICAgICBpZiAoIW5ld0xpc3QpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByZXZMaXN0UmFuZ2U6IFtQb3NpdGlvbiwgUG9zaXRpb25dID0gW1xuICAgICAgICBwcmV2TGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKSxcbiAgICAgICAgcHJldkxpc3QuZ2V0Q29udGVudEVuZEluY2x1ZGluZ0NoaWxkcmVuKCksXG4gICAgICBdO1xuXG4gICAgICBpZiAoaXNSYW5nZXNJbnRlcnNlY3RzKHByZXZMaXN0UmFuZ2UsIGNoYW5nZWRSYW5nZSkpIHtcbiAgICAgICAgdW5mb2xkLnB1c2gocHJldkxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZSk7XG4gICAgICAgIGZvbGQucHVzaChuZXdMaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHVuZm9sZC5zb3J0KChhLCBiKSA9PiBiIC0gYSk7XG4gICAgZm9sZC5zb3J0KChhLCBiKSA9PiBiIC0gYSk7XG5cbiAgICByZXR1cm4geyB1bmZvbGQsIGZvbGQgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBbGxDaGlsZHJlblJlZHVjZUZuKGFjYzogTWFwPG51bWJlciwgTGlzdD4sIGNoaWxkOiBMaXN0KSB7XG4gIGFjYy5zZXQoY2hpbGQuZ2V0SUQoKSwgY2hpbGQpO1xuICBjaGlsZC5nZXRDaGlsZHJlbigpLnJlZHVjZShnZXRBbGxDaGlsZHJlblJlZHVjZUZuLCBhY2MpO1xuXG4gIHJldHVybiBhY2M7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENoaWxkcmVuKHJvb3Q6IFJvb3QpOiBNYXA8bnVtYmVyLCBMaXN0PiB7XG4gIHJldHVybiByb290LmdldENoaWxkcmVuKCkucmVkdWNlKGdldEFsbENoaWxkcmVuUmVkdWNlRm4sIG5ldyBNYXAoKSk7XG59XG4iLCJpbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5leHBvcnQgY2xhc3MgSU1FRGV0ZWN0b3Ige1xuICBwcml2YXRlIGNvbXBvc2l0aW9uID0gZmFsc2U7XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY29tcG9zaXRpb25zdGFydFwiLCB0aGlzLm9uQ29tcG9zaXRpb25TdGFydCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uZW5kXCIsIHRoaXMub25Db21wb3NpdGlvbkVuZCk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uZW5kXCIsIHRoaXMub25Db21wb3NpdGlvbkVuZCk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uc3RhcnRcIiwgdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQpO1xuICB9XG5cbiAgaXNPcGVuZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9zaXRpb24gJiYgUGxhdGZvcm0uaXNEZXNrdG9wO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNvbXBvc2l0aW9uU3RhcnQgPSAoKSA9PiB7XG4gICAgdGhpcy5jb21wb3NpdGlvbiA9IHRydWU7XG4gIH07XG5cbiAgcHJpdmF0ZSBvbkNvbXBvc2l0aW9uRW5kID0gKCkgPT4ge1xuICAgIHRoaXMuY29tcG9zaXRpb24gPSBmYWxzZTtcbiAgfTtcbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4vU2V0dGluZ3NcIjtcblxuZXhwb3J0IGNsYXNzIExvZ2dlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzKSB7fVxuXG4gIGxvZyhtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MuZGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmluZm8obWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGJpbmQobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiB0aGlzLmxvZyhtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBBcHAgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhblRhYnNTZXR0aW5ncyB7XG4gIHVzZVRhYjogYm9vbGVhbjtcbiAgdGFiU2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuRm9sZFNldHRpbmdzIHtcbiAgZm9sZEluZGVudDogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gZ2V0SGlkZGVuT2JzaWRpYW5Db25maWcoYXBwOiBBcHApIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcmV0dXJuIChhcHAudmF1bHQgYXMgYW55KS5jb25maWc7XG59XG5cbmV4cG9ydCBjbGFzcyBPYnNpZGlhblNldHRpbmdzIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHA6IEFwcCkge31cblxuICBpc0xlZ2FjeUVkaXRvckVuYWJsZWQoKSB7XG4gICAgY29uc3QgY29uZmlnOiB7IGxlZ2FjeUVkaXRvcjogYm9vbGVhbiB9ID0ge1xuICAgICAgbGVnYWN5RWRpdG9yOiBmYWxzZSxcbiAgICAgIC4uLmdldEhpZGRlbk9ic2lkaWFuQ29uZmlnKHRoaXMuYXBwKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbmZpZy5sZWdhY3lFZGl0b3I7XG4gIH1cblxuICBpc0RlZmF1bHRUaGVtZUVuYWJsZWQoKSB7XG4gICAgY29uc3QgY29uZmlnOiB7IGNzc1RoZW1lOiBzdHJpbmcgfSA9IHtcbiAgICAgIGNzc1RoZW1lOiBcIlwiLFxuICAgICAgLi4uZ2V0SGlkZGVuT2JzaWRpYW5Db25maWcodGhpcy5hcHApLFxuICAgIH07XG5cbiAgICByZXR1cm4gY29uZmlnLmNzc1RoZW1lID09PSBcIlwiO1xuICB9XG5cbiAgZ2V0VGFic1NldHRpbmdzKCk6IE9ic2lkaWFuVGFic1NldHRpbmdzIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXNlVGFiOiB0cnVlLFxuICAgICAgdGFiU2l6ZTogNCxcbiAgICAgIC4uLmdldEhpZGRlbk9ic2lkaWFuQ29uZmlnKHRoaXMuYXBwKSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0Rm9sZFNldHRpbmdzKCk6IE9ic2lkaWFuRm9sZFNldHRpbmdzIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9sZEluZGVudDogdHJ1ZSxcbiAgICAgIC4uLmdldEhpZGRlbk9ic2lkaWFuQ29uZmlnKHRoaXMuYXBwKSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdEluZGVudENoYXJzKCkge1xuICAgIGNvbnN0IHsgdXNlVGFiLCB0YWJTaXplIH0gPSB0aGlzLmdldFRhYnNTZXR0aW5ncygpO1xuXG4gICAgcmV0dXJuIHVzZVRhYiA/IFwiXFx0XCIgOiBuZXcgQXJyYXkodGFiU2l6ZSkuZmlsbChcIiBcIikuam9pbihcIlwiKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQ2hhbmdlc0FwcGxpY2F0b3IgfSBmcm9tIFwiLi9DaGFuZ2VzQXBwbGljYXRvclwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4vUGFyc2VyXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvT3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIE9wZXJhdGlvblBlcmZvcm1lciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSBjaGFuZ2VzQXBwbGljYXRvcjogQ2hhbmdlc0FwcGxpY2F0b3JcbiAgKSB7fVxuXG4gIGV2YWwocm9vdDogUm9vdCwgb3A6IE9wZXJhdGlvbiwgZWRpdG9yOiBNeUVkaXRvcikge1xuICAgIGNvbnN0IHByZXZSb290ID0gcm9vdC5jbG9uZSgpO1xuXG4gICAgb3AucGVyZm9ybSgpO1xuXG4gICAgaWYgKG9wLnNob3VsZFVwZGF0ZSgpKSB7XG4gICAgICB0aGlzLmNoYW5nZXNBcHBsaWNhdG9yLmFwcGx5KGVkaXRvciwgcHJldlJvb3QsIHJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzaG91bGRVcGRhdGU6IG9wLnNob3VsZFVwZGF0ZSgpLFxuICAgICAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uOiBvcC5zaG91bGRTdG9wUHJvcGFnYXRpb24oKSxcbiAgICB9O1xuICB9XG5cbiAgcGVyZm9ybShcbiAgICBjYjogKHJvb3Q6IFJvb3QpID0+IE9wZXJhdGlvbixcbiAgICBlZGl0b3I6IE15RWRpdG9yLFxuICAgIGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3IoKVxuICApIHtcbiAgICBjb25zdCByb290ID0gdGhpcy5wYXJzZXIucGFyc2UoZWRpdG9yLCBjdXJzb3IpO1xuXG4gICAgaWYgKCFyb290KSB7XG4gICAgICByZXR1cm4geyBzaG91bGRVcGRhdGU6IGZhbHNlLCBzaG91bGRTdG9wUHJvcGFnYXRpb246IGZhbHNlIH07XG4gICAgfVxuXG4gICAgY29uc3Qgb3AgPSBjYihyb290KTtcblxuICAgIHJldHVybiB0aGlzLmV2YWwocm9vdCwgb3AsIGVkaXRvcik7XG4gIH1cbn1cbiIsImltcG9ydCB7IExvZ2dlciB9IGZyb20gXCIuL0xvZ2dlclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi9TZXR0aW5nc1wiO1xuXG5pbXBvcnQgeyBMaXN0LCBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IGNoZWNrYm94UmUgfSBmcm9tIFwiLi4vdXRpbHMvY2hlY2tib3hSZVwiO1xuXG5jb25zdCBidWxsZXRTaWduUmUgPSBgKD86Wy0qK118XFxcXGQrXFxcXC4pYDtcbmNvbnN0IG9wdGlvbmFsQ2hlY2tib3hSZSA9IGAoPzoke2NoZWNrYm94UmV9KT9gO1xuXG5jb25zdCBsaXN0SXRlbVdpdGhvdXRTcGFjZXNSZSA9IG5ldyBSZWdFeHAoYF4ke2J1bGxldFNpZ25SZX0oIHxcXHQpYCk7XG5jb25zdCBsaXN0SXRlbVJlID0gbmV3IFJlZ0V4cChgXlsgXFx0XSoke2J1bGxldFNpZ25SZX0oIHxcXHQpYCk7XG5jb25zdCBzdHJpbmdXaXRoU3BhY2VzUmUgPSBuZXcgUmVnRXhwKGBeWyBcXHRdK2ApO1xuY29uc3QgcGFyc2VMaXN0SXRlbVJlID0gbmV3IFJlZ0V4cChcbiAgYF4oWyBcXHRdKikoJHtidWxsZXRTaWduUmV9KSggfFxcdCkoJHtvcHRpb25hbENoZWNrYm94UmV9KSguKikkYFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXJQb3NpdGlvbiB7XG4gIGxpbmU6IG51bWJlcjtcbiAgY2g6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXJTZWxlY3Rpb24ge1xuICBhbmNob3I6IFJlYWRlclBvc2l0aW9uO1xuICBoZWFkOiBSZWFkZXJQb3NpdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXIge1xuICBnZXRDdXJzb3IoKTogUmVhZGVyUG9zaXRpb247XG4gIGdldExpbmUobjogbnVtYmVyKTogc3RyaW5nO1xuICBsYXN0TGluZSgpOiBudW1iZXI7XG4gIGxpc3RTZWxlY3Rpb25zKCk6IFJlYWRlclNlbGVjdGlvbltdO1xuICBnZXRBbGxGb2xkZWRMaW5lcygpOiBudW1iZXJbXTtcbn1cblxuaW50ZXJmYWNlIFBhcnNlTGlzdExpc3Qge1xuICBnZXRGaXJzdExpbmVJbmRlbnQoKTogc3RyaW5nO1xuICBzZXROb3Rlc0luZGVudChub3Rlc0luZGVudDogc3RyaW5nKTogdm9pZDtcbiAgZ2V0Tm90ZXNJbmRlbnQoKTogc3RyaW5nIHwgbnVsbDtcbiAgYWRkTGluZSh0ZXh0OiBzdHJpbmcpOiB2b2lkO1xuICBnZXRQYXJlbnQoKTogUGFyc2VMaXN0TGlzdCB8IG51bGw7XG4gIGFkZEFmdGVyQWxsKGxpc3Q6IFBhcnNlTGlzdExpc3QpOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgUGFyc2VyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2dnZXI6IExvZ2dlciwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHt9XG5cbiAgcGFyc2VSYW5nZShlZGl0b3I6IFJlYWRlciwgZnJvbUxpbmUgPSAwLCB0b0xpbmUgPSBlZGl0b3IubGFzdExpbmUoKSk6IFJvb3RbXSB7XG4gICAgY29uc3QgbGlzdHM6IFJvb3RbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IGZyb21MaW5lOyBpIDw9IHRvTGluZTsgaSsrKSB7XG4gICAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUoaSk7XG5cbiAgICAgIGlmIChpID09PSBmcm9tTGluZSB8fCB0aGlzLmlzTGlzdEl0ZW0obGluZSkpIHtcbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMucGFyc2VXaXRoTGltaXRzKGVkaXRvciwgaSwgZnJvbUxpbmUsIHRvTGluZSk7XG5cbiAgICAgICAgaWYgKGxpc3QpIHtcbiAgICAgICAgICBsaXN0cy5wdXNoKGxpc3QpO1xuICAgICAgICAgIGkgPSBsaXN0LmdldENvbnRlbnRFbmQoKS5saW5lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpc3RzO1xuICB9XG5cbiAgcGFyc2UoZWRpdG9yOiBSZWFkZXIsIGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3IoKSk6IFJvb3QgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVdpdGhMaW1pdHMoZWRpdG9yLCBjdXJzb3IubGluZSwgMCwgZWRpdG9yLmxhc3RMaW5lKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVdpdGhMaW1pdHMoXG4gICAgZWRpdG9yOiBSZWFkZXIsXG4gICAgcGFyc2luZ1N0YXJ0TGluZTogbnVtYmVyLFxuICAgIGxpbWl0RnJvbTogbnVtYmVyLFxuICAgIGxpbWl0VG86IG51bWJlclxuICApOiBSb290IHwgbnVsbCB7XG4gICAgY29uc3QgZCA9IHRoaXMubG9nZ2VyLmJpbmQoXCJwYXJzZUxpc3RcIik7XG4gICAgY29uc3QgZXJyb3IgPSAobXNnOiBzdHJpbmcpOiBudWxsID0+IHtcbiAgICAgIGQobXNnKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG5cbiAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUocGFyc2luZ1N0YXJ0TGluZSk7XG5cbiAgICBsZXQgbGlzdExvb2tpbmdQb3M6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuaXNMaXN0SXRlbShsaW5lKSkge1xuICAgICAgbGlzdExvb2tpbmdQb3MgPSBwYXJzaW5nU3RhcnRMaW5lO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0xpbmVXaXRoSW5kZW50KGxpbmUpKSB7XG4gICAgICBsZXQgbGlzdExvb2tpbmdQb3NTZWFyY2ggPSBwYXJzaW5nU3RhcnRMaW5lIC0gMTtcbiAgICAgIHdoaWxlIChsaXN0TG9va2luZ1Bvc1NlYXJjaCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0TG9va2luZ1Bvc1NlYXJjaCk7XG4gICAgICAgIGlmICh0aGlzLmlzTGlzdEl0ZW0obGluZSkpIHtcbiAgICAgICAgICBsaXN0TG9va2luZ1BvcyA9IGxpc3RMb29raW5nUG9zU2VhcmNoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICAgIGxpc3RMb29raW5nUG9zU2VhcmNoLS07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobGlzdExvb2tpbmdQb3MgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBsaXN0U3RhcnRMaW5lOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgbGlzdFN0YXJ0TGluZUxvb2t1cCA9IGxpc3RMb29raW5nUG9zO1xuICAgIHdoaWxlIChsaXN0U3RhcnRMaW5lTG9va3VwID49IDApIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0U3RhcnRMaW5lTG9va3VwKTtcbiAgICAgIGlmICghdGhpcy5pc0xpc3RJdGVtKGxpbmUpICYmICF0aGlzLmlzTGluZVdpdGhJbmRlbnQobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc0xpc3RJdGVtV2l0aG91dFNwYWNlcyhsaW5lKSkge1xuICAgICAgICBsaXN0U3RhcnRMaW5lID0gbGlzdFN0YXJ0TGluZUxvb2t1cDtcbiAgICAgICAgaWYgKGxpc3RTdGFydExpbmVMb29rdXAgPD0gbGltaXRGcm9tKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxpc3RTdGFydExpbmVMb29rdXAtLTtcbiAgICB9XG5cbiAgICBpZiAobGlzdFN0YXJ0TGluZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IGxpc3RFbmRMaW5lID0gbGlzdExvb2tpbmdQb3M7XG4gICAgbGV0IGxpc3RFbmRMaW5lTG9va3VwID0gbGlzdExvb2tpbmdQb3M7XG4gICAgd2hpbGUgKGxpc3RFbmRMaW5lTG9va3VwIDw9IGVkaXRvci5sYXN0TGluZSgpKSB7XG4gICAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUobGlzdEVuZExpbmVMb29rdXApO1xuICAgICAgaWYgKCF0aGlzLmlzTGlzdEl0ZW0obGluZSkgJiYgIXRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pc0VtcHR5TGluZShsaW5lKSkge1xuICAgICAgICBsaXN0RW5kTGluZSA9IGxpc3RFbmRMaW5lTG9va3VwO1xuICAgICAgfVxuICAgICAgaWYgKGxpc3RFbmRMaW5lTG9va3VwID49IGxpbWl0VG8pIHtcbiAgICAgICAgbGlzdEVuZExpbmUgPSBsaW1pdFRvO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGxpc3RFbmRMaW5lTG9va3VwKys7XG4gICAgfVxuXG4gICAgaWYgKGxpc3RTdGFydExpbmUgPiBwYXJzaW5nU3RhcnRMaW5lIHx8IGxpc3RFbmRMaW5lIDwgcGFyc2luZ1N0YXJ0TGluZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIGxhc3QgbGluZSBjb250YWlucyBvbmx5IHNwYWNlcyBhbmQgdGhhdCdzIGluY29ycmVjdCBpbmRlbnQsIHRoZW4gaWdub3JlIHRoZSBsYXN0IGxpbmVcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnNsaW5rby9vYnNpZGlhbi1vdXRsaW5lci9pc3N1ZXMvMzY4XG4gICAgaWYgKGxpc3RFbmRMaW5lID4gbGlzdFN0YXJ0TGluZSkge1xuICAgICAgY29uc3QgbGFzdExpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0RW5kTGluZSk7XG4gICAgICBpZiAobGFzdExpbmUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCBwcmV2TGluZSA9IGVkaXRvci5nZXRMaW5lKGxpc3RFbmRMaW5lIC0gMSk7XG4gICAgICAgIGNvbnN0IFssIHByZXZMaW5lSW5kZW50XSA9IC9eKFxccyopLy5leGVjKHByZXZMaW5lKTtcbiAgICAgICAgaWYgKCFsYXN0TGluZS5zdGFydHNXaXRoKHByZXZMaW5lSW5kZW50KSkge1xuICAgICAgICAgIGxpc3RFbmRMaW5lLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByb290ID0gbmV3IFJvb3QoXG4gICAgICB7IGxpbmU6IGxpc3RTdGFydExpbmUsIGNoOiAwIH0sXG4gICAgICB7IGxpbmU6IGxpc3RFbmRMaW5lLCBjaDogZWRpdG9yLmdldExpbmUobGlzdEVuZExpbmUpLmxlbmd0aCB9LFxuICAgICAgZWRpdG9yLmxpc3RTZWxlY3Rpb25zKCkubWFwKChyKSA9PiAoe1xuICAgICAgICBhbmNob3I6IHsgbGluZTogci5hbmNob3IubGluZSwgY2g6IHIuYW5jaG9yLmNoIH0sXG4gICAgICAgIGhlYWQ6IHsgbGluZTogci5oZWFkLmxpbmUsIGNoOiByLmhlYWQuY2ggfSxcbiAgICAgIH0pKVxuICAgICk7XG5cbiAgICBsZXQgY3VycmVudFBhcmVudDogUGFyc2VMaXN0TGlzdCA9IHJvb3QuZ2V0Um9vdExpc3QoKTtcbiAgICBsZXQgY3VycmVudExpc3Q6IFBhcnNlTGlzdExpc3QgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgY3VycmVudEluZGVudCA9IFwiXCI7XG5cbiAgICBjb25zdCBmb2xkZWRMaW5lcyA9IGVkaXRvci5nZXRBbGxGb2xkZWRMaW5lcygpO1xuXG4gICAgZm9yIChsZXQgbCA9IGxpc3RTdGFydExpbmU7IGwgPD0gbGlzdEVuZExpbmU7IGwrKykge1xuICAgICAgY29uc3QgbGluZSA9IGVkaXRvci5nZXRMaW5lKGwpO1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IHBhcnNlTGlzdEl0ZW1SZS5leGVjKGxpbmUpO1xuXG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICBjb25zdCBbLCBpbmRlbnQsIGJ1bGxldCwgc3BhY2VBZnRlckJ1bGxldF0gPSBtYXRjaGVzO1xuICAgICAgICBsZXQgWywgLCAsICwgb3B0aW9uYWxDaGVja2JveCwgY29udGVudF0gPSBtYXRjaGVzO1xuXG4gICAgICAgIGNvbnRlbnQgPSBvcHRpb25hbENoZWNrYm94ICsgY29udGVudDtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgIT09IFwiYnVsbGV0LWFuZC1jaGVja2JveFwiKSB7XG4gICAgICAgICAgb3B0aW9uYWxDaGVja2JveCA9IFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb21wYXJlTGVuZ3RoID0gTWF0aC5taW4oY3VycmVudEluZGVudC5sZW5ndGgsIGluZGVudC5sZW5ndGgpO1xuICAgICAgICBjb25zdCBpbmRlbnRTbGljZSA9IGluZGVudC5zbGljZSgwLCBjb21wYXJlTGVuZ3RoKTtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGVudFNsaWNlID0gY3VycmVudEluZGVudC5zbGljZSgwLCBjb21wYXJlTGVuZ3RoKTtcblxuICAgICAgICBpZiAoaW5kZW50U2xpY2UgIT09IGN1cnJlbnRJbmRlbnRTbGljZSkge1xuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gY3VycmVudEluZGVudFNsaWNlXG4gICAgICAgICAgICAucmVwbGFjZSgvIC9nLCBcIlNcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHQvZywgXCJUXCIpO1xuICAgICAgICAgIGNvbnN0IGdvdCA9IGluZGVudFNsaWNlLnJlcGxhY2UoLyAvZywgXCJTXCIpLnJlcGxhY2UoL1xcdC9nLCBcIlRcIik7XG5cbiAgICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgICBgVW5hYmxlIHRvIHBhcnNlIGxpc3Q6IGV4cGVjdGVkIGluZGVudCBcIiR7ZXhwZWN0ZWR9XCIsIGdvdCBcIiR7Z290fVwiYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZW50Lmxlbmd0aCA+IGN1cnJlbnRJbmRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgY3VycmVudFBhcmVudCA9IGN1cnJlbnRMaXN0O1xuICAgICAgICAgIGN1cnJlbnRJbmRlbnQgPSBpbmRlbnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZW50Lmxlbmd0aCA8IGN1cnJlbnRJbmRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgY3VycmVudFBhcmVudC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGggPj0gaW5kZW50Lmxlbmd0aCAmJlxuICAgICAgICAgICAgY3VycmVudFBhcmVudC5nZXRQYXJlbnQoKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY3VycmVudFBhcmVudCA9IGN1cnJlbnRQYXJlbnQuZ2V0UGFyZW50KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRJbmRlbnQgPSBpbmRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb2xkUm9vdCA9IGZvbGRlZExpbmVzLmluY2x1ZGVzKGwpO1xuXG4gICAgICAgIGN1cnJlbnRMaXN0ID0gbmV3IExpc3QoXG4gICAgICAgICAgcm9vdCxcbiAgICAgICAgICBpbmRlbnQsXG4gICAgICAgICAgYnVsbGV0LFxuICAgICAgICAgIG9wdGlvbmFsQ2hlY2tib3gsXG4gICAgICAgICAgc3BhY2VBZnRlckJ1bGxldCxcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgIGZvbGRSb290XG4gICAgICAgICk7XG4gICAgICAgIGN1cnJlbnRQYXJlbnQuYWRkQWZ0ZXJBbGwoY3VycmVudExpc3QpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzTGluZVdpdGhJbmRlbnQobGluZSkpIHtcbiAgICAgICAgaWYgKCFjdXJyZW50TGlzdCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcihcbiAgICAgICAgICAgIGBVbmFibGUgdG8gcGFyc2UgbGlzdDogZXhwZWN0ZWQgbGlzdCBpdGVtLCBnb3QgZW1wdHkgbGluZWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5kZW50VG9DaGVjayA9IGN1cnJlbnRMaXN0LmdldE5vdGVzSW5kZW50KCkgfHwgY3VycmVudEluZGVudDtcblxuICAgICAgICBpZiAobGluZS5pbmRleE9mKGluZGVudFRvQ2hlY2spICE9PSAwKSB7XG4gICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBpbmRlbnRUb0NoZWNrLnJlcGxhY2UoLyAvZywgXCJTXCIpLnJlcGxhY2UoL1xcdC9nLCBcIlRcIik7XG4gICAgICAgICAgY29uc3QgZ290ID0gbGluZVxuICAgICAgICAgICAgLm1hdGNoKC9eWyBcXHRdKi8pWzBdXG4gICAgICAgICAgICAucmVwbGFjZSgvIC9nLCBcIlNcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHQvZywgXCJUXCIpO1xuXG4gICAgICAgICAgcmV0dXJuIGVycm9yKFxuICAgICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBpbmRlbnQgXCIke2V4cGVjdGVkfVwiLCBnb3QgXCIke2dvdH1cImBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjdXJyZW50TGlzdC5nZXROb3Rlc0luZGVudCgpKSB7XG4gICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGxpbmUubWF0Y2goL15bIFxcdF0rLyk7XG5cbiAgICAgICAgICBpZiAoIW1hdGNoZXMgfHwgbWF0Y2hlc1swXS5sZW5ndGggPD0gY3VycmVudEluZGVudC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICgvXlxccyskLy50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgICAgIGBVbmFibGUgdG8gcGFyc2UgbGlzdDogZXhwZWN0ZWQgc29tZSBpbmRlbnQsIGdvdCBubyBpbmRlbnRgXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1cnJlbnRMaXN0LnNldE5vdGVzSW5kZW50KG1hdGNoZXNbMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudExpc3QuYWRkTGluZShsaW5lLnNsaWNlKGN1cnJlbnRMaXN0LmdldE5vdGVzSW5kZW50KCkubGVuZ3RoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBsaXN0IGl0ZW0gb3Igbm90ZSwgZ290IFwiJHtsaW5lfVwiYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb290O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0VtcHR5TGluZShsaW5lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbGluZS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzTGluZVdpdGhJbmRlbnQobGluZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZ1dpdGhTcGFjZXNSZS50ZXN0KGxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xpc3RJdGVtKGxpbmU6IHN0cmluZykge1xuICAgIHJldHVybiBsaXN0SXRlbVJlLnRlc3QobGluZSk7XG4gIH1cblxuICBwcml2YXRlIGlzTGlzdEl0ZW1XaXRob3V0U3BhY2VzKGxpbmU6IHN0cmluZykge1xuICAgIHJldHVybiBsaXN0SXRlbVdpdGhvdXRTcGFjZXNSZS50ZXN0KGxpbmUpO1xuICB9XG59XG4iLCJleHBvcnQgdHlwZSBWZXJ0aWNhbExpbmVzQWN0aW9uID0gXCJub25lXCIgfCBcInpvb20taW5cIiB8IFwidG9nZ2xlLWZvbGRpbmdcIjtcbmV4cG9ydCB0eXBlIEtlZXBDdXJzb3JXaXRoaW5Db250ZW50ID1cbiAgfCBcIm5ldmVyXCJcbiAgfCBcImJ1bGxldC1vbmx5XCJcbiAgfCBcImJ1bGxldC1hbmQtY2hlY2tib3hcIjtcblxuaW50ZXJmYWNlIFNldHRpbmdzT2JqZWN0IHtcbiAgc3R5bGVMaXN0czogYm9vbGVhbjtcbiAgZGVidWc6IGJvb2xlYW47XG4gIHN0aWNrQ3Vyc29yOiBLZWVwQ3Vyc29yV2l0aGluQ29udGVudCB8IGJvb2xlYW47XG4gIGJldHRlckVudGVyOiBib29sZWFuO1xuICBiZXR0ZXJUYWI6IGJvb2xlYW47XG4gIHNlbGVjdEFsbDogYm9vbGVhbjtcbiAgbGlzdExpbmVzOiBib29sZWFuO1xuICBsaXN0TGluZUFjdGlvbjogVmVydGljYWxMaW5lc0FjdGlvbjtcbiAgZG5kOiBib29sZWFuO1xuICBwcmV2aW91c1JlbGVhc2U6IHN0cmluZyB8IG51bGw7XG59XG5cbmNvbnN0IERFRkFVTFRfU0VUVElOR1M6IFNldHRpbmdzT2JqZWN0ID0ge1xuICBzdHlsZUxpc3RzOiB0cnVlLFxuICBkZWJ1ZzogZmFsc2UsXG4gIHN0aWNrQ3Vyc29yOiBcImJ1bGxldC1hbmQtY2hlY2tib3hcIixcbiAgYmV0dGVyRW50ZXI6IHRydWUsXG4gIGJldHRlclRhYjogdHJ1ZSxcbiAgc2VsZWN0QWxsOiB0cnVlLFxuICBsaXN0TGluZXM6IGZhbHNlLFxuICBsaXN0TGluZUFjdGlvbjogXCJ0b2dnbGUtZm9sZGluZ1wiLFxuICBkbmQ6IHRydWUsXG4gIHByZXZpb3VzUmVsZWFzZTogbnVsbCxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZSB7XG4gIGxvYWREYXRhKCk6IFByb21pc2U8U2V0dGluZ3NPYmplY3Q+O1xuICBzYXZlRGF0YShzZXR0aW5nczogU2V0dGluZ3NPYmplY3QpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG50eXBlIENhbGxiYWNrID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIFNldHRpbmdzIHtcbiAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlO1xuICBwcml2YXRlIHZhbHVlczogU2V0dGluZ3NPYmplY3Q7XG4gIHByaXZhdGUgY2FsbGJhY2tzOiBTZXQ8Q2FsbGJhY2s+O1xuXG4gIGNvbnN0cnVjdG9yKHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgICB0aGlzLnN0b3JhZ2UgPSBzdG9yYWdlO1xuICAgIHRoaXMuY2FsbGJhY2tzID0gbmV3IFNldCgpO1xuICB9XG5cbiAgZ2V0IGtlZXBDdXJzb3JXaXRoaW5Db250ZW50KCkge1xuICAgIC8vIEFkYXB0b3IgZm9yIHVzZXJzIG1pZ3JhdGluZyBmcm9tIG9sZGVyIHZlcnNpb24gb2YgdGhlIHBsdWdpbi5cbiAgICBpZiAodGhpcy52YWx1ZXMuc3RpY2tDdXJzb3IgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiBcImJ1bGxldC1hbmQtY2hlY2tib3hcIjtcbiAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWVzLnN0aWNrQ3Vyc29yID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuc3RpY2tDdXJzb3I7XG4gIH1cblxuICBzZXQga2VlcEN1cnNvcldpdGhpbkNvbnRlbnQodmFsdWU6IEtlZXBDdXJzb3JXaXRoaW5Db250ZW50KSB7XG4gICAgdGhpcy5zZXQoXCJzdGlja0N1cnNvclwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgb3ZlcnJpZGVUYWJCZWhhdmlvdXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmJldHRlclRhYjtcbiAgfVxuXG4gIHNldCBvdmVycmlkZVRhYkJlaGF2aW91cih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwiYmV0dGVyVGFiXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBvdmVycmlkZUVudGVyQmVoYXZpb3VyKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5iZXR0ZXJFbnRlcjtcbiAgfVxuXG4gIHNldCBvdmVycmlkZUVudGVyQmVoYXZpb3VyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJiZXR0ZXJFbnRlclwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgb3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLnNlbGVjdEFsbDtcbiAgfVxuXG4gIHNldCBvdmVycmlkZVNlbGVjdEFsbEJlaGF2aW91cih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwic2VsZWN0QWxsXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBiZXR0ZXJMaXN0c1N0eWxlcygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuc3R5bGVMaXN0cztcbiAgfVxuXG4gIHNldCBiZXR0ZXJMaXN0c1N0eWxlcyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwic3R5bGVMaXN0c1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgdmVydGljYWxMaW5lcygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMubGlzdExpbmVzO1xuICB9XG5cbiAgc2V0IHZlcnRpY2FsTGluZXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcImxpc3RMaW5lc1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgdmVydGljYWxMaW5lc0FjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMubGlzdExpbmVBY3Rpb247XG4gIH1cblxuICBzZXQgdmVydGljYWxMaW5lc0FjdGlvbih2YWx1ZTogVmVydGljYWxMaW5lc0FjdGlvbikge1xuICAgIHRoaXMuc2V0KFwibGlzdExpbmVBY3Rpb25cIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IGRyYWdBbmREcm9wKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5kbmQ7XG4gIH1cblxuICBzZXQgZHJhZ0FuZERyb3AodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcImRuZFwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgZGVidWcoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmRlYnVnO1xuICB9XG5cbiAgc2V0IGRlYnVnKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJkZWJ1Z1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgcHJldmlvdXNSZWxlYXNlKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5wcmV2aW91c1JlbGVhc2U7XG4gIH1cblxuICBzZXQgcHJldmlvdXNSZWxlYXNlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5zZXQoXCJwcmV2aW91c1JlbGVhc2VcIiwgdmFsdWUpO1xuICB9XG5cbiAgb25DaGFuZ2UoY2I6IENhbGxiYWNrKSB7XG4gICAgdGhpcy5jYWxsYmFja3MuYWRkKGNiKTtcbiAgfVxuXG4gIHJlbW92ZUNhbGxiYWNrKGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIHRoaXMuY2FsbGJhY2tzLmRlbGV0ZShjYik7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhERUZBVUxUX1NFVFRJTkdTKSkge1xuICAgICAgdGhpcy5zZXQoayBhcyBrZXlvZiBTZXR0aW5nc09iamVjdCwgdik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnZhbHVlcyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIERFRkFVTFRfU0VUVElOR1MsXG4gICAgICBhd2FpdCB0aGlzLnN0b3JhZ2UubG9hZERhdGEoKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzYXZlKCkge1xuICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zYXZlRGF0YSh0aGlzLnZhbHVlcyk7XG4gIH1cblxuICBnZXRWYWx1ZXMoKTogU2V0dGluZ3NPYmplY3Qge1xuICAgIHJldHVybiB7IC4uLnRoaXMudmFsdWVzIH07XG4gIH1cblxuICBwcml2YXRlIHNldDxUIGV4dGVuZHMga2V5b2YgU2V0dGluZ3NPYmplY3Q+KFxuICAgIGtleTogVCxcbiAgICB2YWx1ZTogU2V0dGluZ3NPYmplY3RbVF1cbiAgKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZXNba2V5XSA9IHZhbHVlO1xuXG4gICAgZm9yIChjb25zdCBjYiBvZiB0aGlzLmNhbGxiYWNrcykge1xuICAgICAgY2IoKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBBcnJvd0xlZnRBbmRDdHJsQXJyb3dMZWZ0QmVoYXZpb3VyT3ZlcnJpZGUgfSBmcm9tIFwiLi9mZWF0dXJlcy9BcnJvd0xlZnRBbmRDdHJsQXJyb3dMZWZ0QmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IEJhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IEJldHRlckxpc3RzU3R5bGVzIH0gZnJvbSBcIi4vZmVhdHVyZXMvQmV0dGVyTGlzdHNTdHlsZXNcIjtcbmltcG9ydCB7IEN0cmxBQW5kQ21kQUJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvQ3RybEFBbmRDbWRBQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IERlbGV0ZUJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRGVsZXRlQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IERyYWdBbmREcm9wIH0gZnJvbSBcIi4vZmVhdHVyZXMvRHJhZ0FuZERyb3BcIjtcbmltcG9ydCB7IEVkaXRvclNlbGVjdGlvbnNCZWhhdmlvdXJPdmVycmlkZSB9IGZyb20gXCIuL2ZlYXR1cmVzL0VkaXRvclNlbGVjdGlvbnNCZWhhdmlvdXJPdmVycmlkZVwiO1xuaW1wb3J0IHsgRW50ZXJCZWhhdmlvdXJPdmVycmlkZSB9IGZyb20gXCIuL2ZlYXR1cmVzL0VudGVyQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9GZWF0dXJlXCI7XG5pbXBvcnQgeyBMaXN0c0ZvbGRpbmdDb21tYW5kcyB9IGZyb20gXCIuL2ZlYXR1cmVzL0xpc3RzRm9sZGluZ0NvbW1hbmRzXCI7XG5pbXBvcnQgeyBMaXN0c01vdmVtZW50Q29tbWFuZHMgfSBmcm9tIFwiLi9mZWF0dXJlcy9MaXN0c01vdmVtZW50Q29tbWFuZHNcIjtcbmltcG9ydCB7IE1ldGFCYWNrc3BhY2VCZWhhdmlvdXJPdmVycmlkZSB9IGZyb20gXCIuL2ZlYXR1cmVzL01ldGFCYWNrc3BhY2VCZWhhdmlvdXJPdmVycmlkZVwiO1xuaW1wb3J0IHsgUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50IH0gZnJvbSBcIi4vZmVhdHVyZXMvUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50XCI7XG5pbXBvcnQgeyBTZXR0aW5nc1RhYiB9IGZyb20gXCIuL2ZlYXR1cmVzL1NldHRpbmdzVGFiXCI7XG5pbXBvcnQgeyBTaGlmdFRhYkJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvU2hpZnRUYWJCZWhhdmlvdXJPdmVycmlkZVwiO1xuaW1wb3J0IHsgU3lzdGVtSW5mbyB9IGZyb20gXCIuL2ZlYXR1cmVzL1N5c3RlbUluZm9cIjtcbmltcG9ydCB7IFRhYkJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvVGFiQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IFZlcnRpY2FsTGluZXMgfSBmcm9tIFwiLi9mZWF0dXJlcy9WZXJ0aWNhbExpbmVzXCI7XG5pbXBvcnQgeyBDaGFuZ2VzQXBwbGljYXRvciB9IGZyb20gXCIuL3NlcnZpY2VzL0NoYW5nZXNBcHBsaWNhdG9yXCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuL3NlcnZpY2VzL0lNRURldGVjdG9yXCI7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9Mb2dnZXJcIjtcbmltcG9ydCB7IE9ic2lkaWFuU2V0dGluZ3MgfSBmcm9tIFwiLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuL3NlcnZpY2VzL1BhcnNlclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGNvbnN0IFBMVUdJTl9WRVJTSU9OOiBzdHJpbmc7XG4gIGNvbnN0IENIQU5HRUxPR19NRDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPYnNpZGlhbk91dGxpbmVyUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcbiAgcHJpdmF0ZSBmZWF0dXJlczogRmVhdHVyZVtdO1xuICBwcm90ZWN0ZWQgc2V0dGluZ3M6IFNldHRpbmdzO1xuICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyO1xuICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3M7XG4gIHByaXZhdGUgcGFyc2VyOiBQYXJzZXI7XG4gIHByaXZhdGUgY2hhbmdlc0FwcGxpY2F0b3I6IENoYW5nZXNBcHBsaWNhdG9yO1xuICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyO1xuICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcjtcblxuICBhc3luYyBvbmxvYWQoKSB7XG4gICAgY29uc29sZS5sb2coYExvYWRpbmcgb2JzaWRpYW4tb3V0bGluZXJgKTtcblxuICAgIGF3YWl0IHRoaXMucHJlcGFyZVNldHRpbmdzKCk7XG5cbiAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MgPSBuZXcgT2JzaWRpYW5TZXR0aW5ncyh0aGlzLmFwcCk7XG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMuc2V0dGluZ3MpO1xuICAgIHRoaXMucGFyc2VyID0gbmV3IFBhcnNlcih0aGlzLmxvZ2dlciwgdGhpcy5zZXR0aW5ncyk7XG4gICAgdGhpcy5jaGFuZ2VzQXBwbGljYXRvciA9IG5ldyBDaGFuZ2VzQXBwbGljYXRvcigpO1xuICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyID0gbmV3IE9wZXJhdGlvblBlcmZvcm1lcihcbiAgICAgIHRoaXMucGFyc2VyLFxuICAgICAgdGhpcy5jaGFuZ2VzQXBwbGljYXRvclxuICAgICk7XG5cbiAgICB0aGlzLmltZURldGVjdG9yID0gbmV3IElNRURldGVjdG9yKCk7XG4gICAgYXdhaXQgdGhpcy5pbWVEZXRlY3Rvci5sb2FkKCk7XG5cbiAgICB0aGlzLmZlYXR1cmVzID0gW1xuICAgICAgLy8gc2VydmljZSBmZWF0dXJlc1xuICAgICAgbmV3IFJlbGVhc2VOb3Rlc0Fubm91bmNlbWVudCh0aGlzLCB0aGlzLnNldHRpbmdzKSxcbiAgICAgIG5ldyBTZXR0aW5nc1RhYih0aGlzLCB0aGlzLnNldHRpbmdzKSxcbiAgICAgIG5ldyBTeXN0ZW1JbmZvKHRoaXMsIHRoaXMuc2V0dGluZ3MpLFxuXG4gICAgICAvLyBnZW5lcmFsIGZlYXR1cmVzXG4gICAgICBuZXcgTGlzdHNNb3ZlbWVudENvbW1hbmRzKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MsXG4gICAgICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyXG4gICAgICApLFxuICAgICAgbmV3IExpc3RzRm9sZGluZ0NvbW1hbmRzKHRoaXMsIHRoaXMub2JzaWRpYW5TZXR0aW5ncyksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50XG4gICAgICBuZXcgRWRpdG9yU2VsZWN0aW9uc0JlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLnBhcnNlcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG4gICAgICBuZXcgQXJyb3dMZWZ0QW5kQ3RybEFycm93TGVmdEJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lclxuICAgICAgKSxcbiAgICAgIG5ldyBCYWNrc3BhY2VCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG4gICAgICBuZXcgTWV0YUJhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lclxuICAgICAgKSxcbiAgICAgIG5ldyBEZWxldGVCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLm92ZXJyaWRlVGFiQmVoYXZpb3VyXG4gICAgICBuZXcgVGFiQmVoYXZpb3VyT3ZlcnJpZGUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuaW1lRGV0ZWN0b3IsXG4gICAgICAgIHRoaXMub2JzaWRpYW5TZXR0aW5ncyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG4gICAgICBuZXcgU2hpZnRUYWJCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLm92ZXJyaWRlRW50ZXJCZWhhdmlvdXJcbiAgICAgIG5ldyBFbnRlckJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MsXG4gICAgICAgIHRoaXMucGFyc2VyLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lclxuICAgICAgKSxcblxuICAgICAgLy8gZmVhdHVyZXMgYmFzZWQgb24gc2V0dGluZ3Mub3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXJcbiAgICAgIG5ldyBDdHJsQUFuZENtZEFCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLmJldHRlckxpc3RzU3R5bGVzXG4gICAgICBuZXcgQmV0dGVyTGlzdHNTdHlsZXModGhpcy5zZXR0aW5ncywgdGhpcy5vYnNpZGlhblNldHRpbmdzKSxcblxuICAgICAgLy8gZmVhdHVyZXMgYmFzZWQgb24gc2V0dGluZ3MudmVydGljYWxMaW5lc1xuICAgICAgbmV3IFZlcnRpY2FsTGluZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMub2JzaWRpYW5TZXR0aW5ncyxcbiAgICAgICAgdGhpcy5wYXJzZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLmRyYWdBbmREcm9wXG4gICAgICBuZXcgRHJhZ0FuZERyb3AoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMub2JzaWRpYW5TZXR0aW5ncyxcbiAgICAgICAgdGhpcy5wYXJzZXIsXG4gICAgICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyXG4gICAgICApLFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgdGhpcy5mZWF0dXJlcykge1xuICAgICAgYXdhaXQgZmVhdHVyZS5sb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb251bmxvYWQoKSB7XG4gICAgY29uc29sZS5sb2coYFVubG9hZGluZyBvYnNpZGlhbi1vdXRsaW5lcmApO1xuXG4gICAgYXdhaXQgdGhpcy5pbWVEZXRlY3Rvci51bmxvYWQoKTtcblxuICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiB0aGlzLmZlYXR1cmVzKSB7XG4gICAgICBhd2FpdCBmZWF0dXJlLnVubG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlU2V0dGluZ3MoKSB7XG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBTZXR0aW5ncyh0aGlzKTtcbiAgICBhd2FpdCB0aGlzLnNldHRpbmdzLmxvYWQoKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImVkaXRvckluZm9GaWVsZCIsImZvbGRlZFJhbmdlcyIsImZvbGRhYmxlIiwiZm9sZEVmZmVjdCIsInVuZm9sZEVmZmVjdCIsInJ1blNjb3BlSGFuZGxlcnMiLCJrZXltYXAiLCJOb3RpY2UiLCJpbmRlbnRTdHJpbmciLCJnZXRJbmRlbnRVbml0IiwiU3RhdGVFZmZlY3QiLCJEZWNvcmF0aW9uIiwiU3RhdGVGaWVsZCIsIkVkaXRvclZpZXciLCJQbGF0Zm9ybSIsIkVkaXRvclN0YXRlIiwiUHJlYyIsIk1vZGFsIiwiTWFya2Rvd25SZW5kZXJlciIsIlBsdWdpblNldHRpbmdUYWIiLCJTZXR0aW5nIiwiVmlld1BsdWdpbiIsIlBsdWdpbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFvR0E7QUFDTyxTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUU7QUFDN0QsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEtBQUssWUFBWSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDaEgsSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDL0QsUUFBUSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ25HLFFB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 diff --git a/.obsidian/plugins/obsidian-outliner/manifest.json b/.obsidian/plugins/obsidian-outliner/manifest.json index 457fd9b..287ee41 100644 --- a/.obsidian/plugins/obsidian-outliner/manifest.json +++ b/.obsidian/plugins/obsidian-outliner/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-outliner", "name": "Outliner", - "version": "4.7.1", + "version": "4.8.0", "minAppVersion": "1.1.16", "description": "Work with your lists like in Workflowy or RoamResearch.", "author": "Viacheslav Slinko", diff --git a/.obsidian/plugins/obsidian-quiet-outline/main.js b/.obsidian/plugins/obsidian-quiet-outline/main.js index 9c07b07..49e1ce7 100644 --- a/.obsidian/plugins/obsidian-quiet-outline/main.js +++ b/.obsidian/plugins/obsidian-quiet-outline/main.js @@ -3,34 +3,34 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ -var PT=Object.create;var Cn=Object.defineProperty;var MT=Object.getOwnPropertyDescriptor;var BT=Object.getOwnPropertyNames;var LT=Object.getPrototypeOf,ET=Object.prototype.hasOwnProperty;var vp=e=>Cn(e,"__esModule",{value:!0});var Et=(e,o)=>()=>(o||e((o={exports:{}}).exports,o),o.exports),NT=(e,o)=>{vp(e);for(var t in o)Cn(e,t,{get:o[t],enumerable:!0})},_T=(e,o,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of BT(o))!ET.call(e,r)&&r!=="default"&&Cn(e,r,{get:()=>o[r],enumerable:!(t=MT(o,r))||t.enumerable});return e},Oa=e=>_T(vp(Cn(e!=null?PT(LT(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var $e=(e,o,t)=>new Promise((r,a)=>{var l=d=>{try{i(t.next(d))}catch(s){a(s)}},n=d=>{try{i(t.throw(d))}catch(s){a(s)}},i=d=>d.done?r(d.value):Promise.resolve(d.value).then(l,n);i((t=t.apply(e,o)).next())});var dS=Et((Ul,iS)=>{"use strict";Object.defineProperty(Ul,"__esModule",{value:!0});Ul.default=void 0;var Wv={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},Vv=function(e,o,t){var r,a=Wv[e];return typeof a=="string"?r=a:o===1?r=a.one:r=a.other.replace("{{count}}",o.toString()),t!=null&&t.addSuffix?t.comparison&&t.comparison>0?"in "+r:r+" ago":r},zv=Vv;Ul.default=zv;iS.exports=Ul.default});var uS=Et((Gi,sS)=>{"use strict";Object.defineProperty(Gi,"__esModule",{value:!0});Gi.default=jv;function jv(e){return function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=o.width?String(o.width):e.defaultWidth,r=e.formats[t]||e.formats[e.defaultWidth];return r}}sS.exports=Gi.default});var pS=Et((Kl,fS)=>{"use strict";Object.defineProperty(Kl,"__esModule",{value:!0});Kl.default=void 0;var Gs=$v(uS());function $v(e){return e&&e.__esModule?e:{default:e}}var Uv={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Kv={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Gv={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},qv={date:(0,Gs.default)({formats:Uv,defaultWidth:"full"}),time:(0,Gs.default)({formats:Kv,defaultWidth:"full"}),dateTime:(0,Gs.default)({formats:Gv,defaultWidth:"full"})},Qv=qv;Kl.default=Qv;fS.exports=Kl.default});var cS=Et((Gl,mS)=>{"use strict";Object.defineProperty(Gl,"__esModule",{value:!0});Gl.default=void 0;var Zv={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Yv=function(e,o,t,r){return Zv[e]},Xv=Yv;Gl.default=Xv;mS.exports=Gl.default});var hS=Et((qi,xS)=>{"use strict";Object.defineProperty(qi,"__esModule",{value:!0});qi.default=Jv;function Jv(e){return function(o,t){var r=t||{},a=r.context?String(r.context):"standalone",l;if(a==="formatting"&&e.formattingValues){var n=e.defaultFormattingWidth||e.defaultWidth,i=r.width?String(r.width):n;l=e.formattingValues[i]||e.formattingValues[n]}else{var d=e.defaultWidth,s=r.width?String(r.width):e.defaultWidth;l=e.values[s]||e.values[d]}var u=e.argumentCallback?e.argumentCallback(o):o;return l[u]}}xS.exports=qi.default});var gS=Et((Ql,SS)=>{"use strict";Object.defineProperty(Ql,"__esModule",{value:!0});Ql.default=void 0;var ql=ek(hS());function ek(e){return e&&e.__esModule?e:{default:e}}var ok={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},tk={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},rk={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},ak={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},lk={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},nk={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},ik=function(e,o){var t=Number(e),r=t%100;if(r>20||r<10)switch(r%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"},dk={ordinalNumber:ik,era:(0,ql.default)({values:ok,defaultWidth:"wide"}),quarter:(0,ql.default)({values:tk,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:(0,ql.default)({values:rk,defaultWidth:"wide"}),day:(0,ql.default)({values:ak,defaultWidth:"wide"}),dayPeriod:(0,ql.default)({values:lk,defaultWidth:"wide",formattingValues:nk,defaultFormattingWidth:"wide"})},sk=dk;Ql.default=sk;SS.exports=Ql.default});var TS=Et((Qi,wS)=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});Qi.default=uk;function uk(e){return function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.width,a=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],l=o.match(a);if(!l)return null;var n=l[0],i=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],d=Array.isArray(i)?pk(i,function(f){return f.test(n)}):fk(i,function(f){return f.test(n)}),s;s=e.valueCallback?e.valueCallback(d):d,s=t.valueCallback?t.valueCallback(s):s;var u=o.slice(n.length);return{value:s,rest:u}}}function fk(e,o){for(var t in e)if(e.hasOwnProperty(t)&&o(e[t]))return t}function pk(e,o){for(var t=0;t{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});Zi.default=mk;function mk(e){return function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=o.match(e.matchPattern);if(!r)return null;var a=r[0],l=o.match(e.parsePattern);if(!l)return null;var n=e.valueCallback?e.valueCallback(l[0]):l[0];n=t.valueCallback?t.valueCallback(n):n;var i=o.slice(a.length);return{value:n,rest:i}}}RS.exports=Zi.default});var bS=Et((Yl,CS)=>{"use strict";Object.defineProperty(Yl,"__esModule",{value:!0});Yl.default=void 0;var Zl=OS(TS()),ck=OS(FS());function OS(e){return e&&e.__esModule?e:{default:e}}var xk=/^(\d+)(th|st|nd|rd)?/i,hk=/\d+/i,Sk={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},gk={any:[/^b/i,/^(a|c)/i]},wk={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Tk={any:[/1/i,/2/i,/3/i,/4/i]},Rk={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},Fk={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Ok={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},Ck={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},bk={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},yk={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},vk={ordinalNumber:(0,ck.default)({matchPattern:xk,parsePattern:hk,valueCallback:function(e){return parseInt(e,10)}}),era:(0,Zl.default)({matchPatterns:Sk,defaultMatchWidth:"wide",parsePatterns:gk,defaultParseWidth:"any"}),quarter:(0,Zl.default)({matchPatterns:wk,defaultMatchWidth:"wide",parsePatterns:Tk,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:(0,Zl.default)({matchPatterns:Rk,defaultMatchWidth:"wide",parsePatterns:Fk,defaultParseWidth:"any"}),day:(0,Zl.default)({matchPatterns:Ok,defaultMatchWidth:"wide",parsePatterns:Ck,defaultParseWidth:"any"}),dayPeriod:(0,Zl.default)({matchPatterns:bk,defaultMatchWidth:"any",parsePatterns:yk,defaultParseWidth:"any"})},kk=vk;Yl.default=kk;CS.exports=Yl.default});var vS=Et((Jl,yS)=>{"use strict";Object.defineProperty(Jl,"__esModule",{value:!0});Jl.default=void 0;var Ak=Xl(dS()),Dk=Xl(pS()),Pk=Xl(cS()),Mk=Xl(gS()),Bk=Xl(bS());function Xl(e){return e&&e.__esModule?e:{default:e}}var Lk={code:"en-US",formatDistance:Ak.default,formatLong:Dk.default,formatRelative:Pk.default,localize:Mk.default,match:Bk.default,options:{weekStartsOn:0,firstWeekContainsDate:1}},Ek=Lk;Jl.default=Ek;yS.exports=Jl.default});NT(exports,{default:()=>QP});var Kr=Oa(require("obsidian"));var tT=Oa(require("obsidian"));function Ca(e,o){let t=Object.create(null),r=e.split(",");for(let a=0;a!!t[a.toLowerCase()]:a=>!!t[a]}var YP={[1]:"TEXT",[2]:"CLASS",[4]:"STYLE",[8]:"PROPS",[16]:"FULL_PROPS",[32]:"HYDRATE_EVENTS",[64]:"STABLE_FRAGMENT",[128]:"KEYED_FRAGMENT",[256]:"UNKEYED_FRAGMENT",[512]:"NEED_PATCH",[1024]:"DYNAMIC_SLOTS",[2048]:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},XP={[1]:"STABLE",[2]:"DYNAMIC",[3]:"FORWARDED"};function Sr(e){if(Ae(e)){let o={};for(let t=0;t{if(t){let r=t.split(HT);r.length>1&&(o[r[0].trim()]=r[1].trim())}}),o}function Gr(e){let o="";if(Ro(e))o=e;else if(Ae(e))for(let t=0;tRo(e)?e:e==null?"":Ae(e)||ao(e)&&(e.toString===Mp||!Ee(e.toString))?JSON.stringify(e,Dp,2):String(e),Dp=(e,o)=>o&&o.__v_isRef?Dp(e,o.value):gr(o)?{[`Map(${o.size})`]:[...o.entries()].reduce((t,[r,a])=>(t[`${r} =>`]=a,t),{})}:yn(o)?{[`Set(${o.size})`]:[...o.values()]}:ao(o)&&!Ae(o)&&!Dd(o)?String(o):o,ro={},qr=[],nt=()=>{},Pp=()=>!1,zT=/^on[^a-z]/,ba=e=>zT.test(e),sl=e=>e.startsWith("onUpdate:"),Oo=Object.assign,bn=(e,o)=>{let t=e.indexOf(o);t>-1&&e.splice(t,1)},jT=Object.prototype.hasOwnProperty,je=(e,o)=>jT.call(e,o),Ae=Array.isArray,gr=e=>kn(e)==="[object Map]",yn=e=>kn(e)==="[object Set]";var Ee=e=>typeof e=="function",Ro=e=>typeof e=="string",vn=e=>typeof e=="symbol",ao=e=>e!==null&&typeof e=="object",kd=e=>ao(e)&&Ee(e.then)&&Ee(e.catch),Mp=Object.prototype.toString,kn=e=>Mp.call(e),Ad=e=>kn(e).slice(8,-1),Dd=e=>kn(e)==="[object Object]",An=e=>Ro(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ul=Ca(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");var Dn=e=>{let o=Object.create(null);return t=>o[t]||(o[t]=e(t))},$T=/-(\w)/g,Nt=Dn(e=>e.replace($T,(o,t)=>t?t.toUpperCase():"")),UT=/\B([A-Z])/g,wr=Dn(e=>e.replace(UT,"-$1").toLowerCase()),fl=Dn(e=>e.charAt(0).toUpperCase()+e.slice(1)),pl=Dn(e=>e?`on${fl(e)}`:""),Qr=(e,o)=>!Object.is(e,o),ml=(e,o)=>{for(let t=0;t{Object.defineProperty(e,o,{configurable:!0,enumerable:!1,value:t})},va=e=>{let o=parseFloat(e);return isNaN(o)?e:o},Bp,Lp=()=>Bp||(Bp=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});var _t,Pn=class{constructor(o=!1){this.detached=o,this.active=!0,this.effects=[],this.cleanups=[],this.parent=_t,!o&&_t&&(this.index=(_t.scopes||(_t.scopes=[])).push(this)-1)}run(o){if(this.active){let t=_t;try{return _t=this,o()}finally{_t=t}}}on(){_t=this}off(){_t=this.parent}stop(o){if(this.active){let t,r;for(t=0,r=this.effects.length;t{let o=new Set(e);return o.w=0,o.n=0,o},Ep=e=>(e.w&Tr)>0,Np=e=>(e.n&Tr)>0,GT=({deps:e})=>{if(e.length)for(let o=0;o{let{deps:o}=e;if(o.length){let t=0;for(let r=0;r{(f==="length"||f>=s)&&i.push(u)})}else switch(t!==void 0&&i.push(n.get(t)),o){case"add":Ae(e)?An(t)&&i.push(n.get("length")):(i.push(n.get(Zr)),gr(e)&&i.push(n.get(Ld)));break;case"delete":Ae(e)||(i.push(n.get(Zr)),gr(e)&&i.push(n.get(Ld)));break;case"set":gr(e)&&i.push(n.get(Zr));break}let d=void 0;if(i.length===1)i[0]&&Ed(i[0]);else{let s=[];for(let u of i)u&&s.push(...u);Ed(Pd(s))}}function Ed(e,o){let t=Ae(e)?e:[...e];for(let r of t)r.computed&&Wp(r,o);for(let r of t)r.computed||Wp(r,o)}function Wp(e,o){(e!==yt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}var QT=Ca("__proto__,__v_isRef,__isVue"),Vp=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(vn)),ZT=Nd(),YT=Nd(!1,!0),XT=Nd(!0);var zp=JT();function JT(){let e={};return["includes","indexOf","lastIndexOf"].forEach(o=>{e[o]=function(...t){let r=Ie(this);for(let l=0,n=this.length;l{e[o]=function(...t){Fr();let r=Ie(this)[o].apply(this,t);return Or(),r}}),e}function Nd(e=!1,o=!1){return function(r,a,l){if(a==="__v_isReactive")return!e;if(a==="__v_isReadonly")return e;if(a==="__v_isShallow")return o;if(a==="__v_raw"&&l===(e?o?xR:Yp:o?Zp:Qp).get(r))return r;let n=Ae(r);if(!e&&n&&je(zp,a))return Reflect.get(zp,a,l);let i=Reflect.get(r,a,l);return(vn(a)?Vp.has(a):QT(a))||(e||et(r,"get",a),o)?i:yo(i)?n&&An(a)?i:i.value:ao(i)?e?br(i):Ht(i):i}}var eR=jp(),oR=jp(!0);function jp(e=!1){return function(t,r,a,l){let n=t[r];if(vr(n)&&yo(n)&&!yo(a))return!1;if(!e&&(!Aa(a)&&!vr(a)&&(n=Ie(n),a=Ie(a)),!Ae(t)&&yo(n)&&!yo(a)))return n.value=a,!0;let i=Ae(t)&&An(r)?Number(r)e,Mn=e=>Reflect.getPrototypeOf(e);function Bn(e,o,t=!1,r=!1){e=e.__v_raw;let a=Ie(e),l=Ie(o);t||(o!==l&&et(a,"get",o),et(a,"get",l));let{has:n}=Mn(a),i=r?_d:t?Vd:xl;if(n.call(a,o))return i(e.get(o));if(n.call(a,l))return i(e.get(l));e!==a&&e.get(o)}function Ln(e,o=!1){let t=this.__v_raw,r=Ie(t),a=Ie(e);return o||(e!==a&&et(r,"has",e),et(r,"has",a)),e===a?t.has(e):t.has(e)||t.has(a)}function En(e,o=!1){return e=e.__v_raw,!o&&et(Ie(e),"iterate",Zr),Reflect.get(e,"size",e)}function Up(e){e=Ie(e);let o=Ie(this);return Mn(o).has.call(o,e)||(o.add(e),It(o,"add",e,e)),this}function Kp(e,o){o=Ie(o);let t=Ie(this),{has:r,get:a}=Mn(t),l=r.call(t,e);l||(e=Ie(e),l=r.call(t,e));let n=a.call(t,e);return t.set(e,o),l?Qr(o,n)&&It(t,"set",e,o,n):It(t,"add",e,o),this}function Gp(e){let o=Ie(this),{has:t,get:r}=Mn(o),a=t.call(o,e);a||(e=Ie(e),a=t.call(o,e));let l=r?r.call(o,e):void 0,n=o.delete(e);return a&&It(o,"delete",e,void 0,l),n}function qp(){let e=Ie(this),o=e.size!==0,t=void 0,r=e.clear();return o&&It(e,"clear",void 0,void 0,t),r}function Nn(e,o){return function(r,a){let l=this,n=l.__v_raw,i=Ie(n),d=o?_d:e?Vd:xl;return!e&&et(i,"iterate",Zr),n.forEach((s,u)=>r.call(a,d(s),d(u),l))}}function _n(e,o,t){return function(...r){let a=this.__v_raw,l=Ie(a),n=gr(l),i=e==="entries"||e===Symbol.iterator&&n,d=e==="keys"&&n,s=a[e](...r),u=t?_d:o?Vd:xl;return!o&&et(l,"iterate",d?Ld:Zr),{next(){let{value:f,done:c}=s.next();return c?{value:f,done:c}:{value:i?[u(f[0]),u(f[1])]:u(f),done:c}},[Symbol.iterator](){return this}}}}function Cr(e){return function(...o){return e==="delete"?!1:this}}function iR(){let e={get(l){return Bn(this,l)},get size(){return En(this)},has:Ln,add:Up,set:Kp,delete:Gp,clear:qp,forEach:Nn(!1,!1)},o={get(l){return Bn(this,l,!1,!0)},get size(){return En(this)},has:Ln,add:Up,set:Kp,delete:Gp,clear:qp,forEach:Nn(!1,!0)},t={get(l){return Bn(this,l,!0)},get size(){return En(this,!0)},has(l){return Ln.call(this,l,!0)},add:Cr("add"),set:Cr("set"),delete:Cr("delete"),clear:Cr("clear"),forEach:Nn(!0,!1)},r={get(l){return Bn(this,l,!0,!0)},get size(){return En(this,!0)},has(l){return Ln.call(this,l,!0)},add:Cr("add"),set:Cr("set"),delete:Cr("delete"),clear:Cr("clear"),forEach:Nn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(l=>{e[l]=_n(l,!1,!1),t[l]=_n(l,!0,!1),o[l]=_n(l,!1,!0),r[l]=_n(l,!0,!0)}),[e,t,o,r]}var[dR,sR,uR,fR]=iR();function Id(e,o){let t=o?e?fR:uR:e?sR:dR;return(r,a,l)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?r:Reflect.get(je(t,a)&&a in r?t:r,a,l)}var pR={get:Id(!1,!1)},mR={get:Id(!1,!0)},cR={get:Id(!0,!1)};var Qp=new WeakMap,Zp=new WeakMap,Yp=new WeakMap,xR=new WeakMap;function hR(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function SR(e){return e.__v_skip||!Object.isExtensible(e)?0:hR(Ad(e))}function Ht(e){return vr(e)?e:Wd(e,!1,$p,pR,Qp)}function Hd(e){return Wd(e,!1,nR,mR,Zp)}function br(e){return Wd(e,!0,lR,cR,Yp)}function Wd(e,o,t,r,a){if(!ao(e)||e.__v_raw&&!(o&&e.__v_isReactive))return e;let l=a.get(e);if(l)return l;let n=SR(e);if(n===0)return e;let i=new Proxy(e,n===2?r:t);return a.set(e,i),i}function yr(e){return vr(e)?yr(e.__v_raw):!!(e&&e.__v_isReactive)}function vr(e){return!!(e&&e.__v_isReadonly)}function Aa(e){return!!(e&&e.__v_isShallow)}function In(e){return yr(e)||vr(e)}function Ie(e){let o=e&&e.__v_raw;return o?Ie(o):e}function Yr(e){return ya(e,"__v_skip",!0),e}var xl=e=>ao(e)?Ht(e):e,Vd=e=>ao(e)?br(e):e;function Xp(e){Rr&&yt&&(e=Ie(e),Hp(e.dep||(e.dep=Pd())))}function Jp(e,o){e=Ie(e),e.dep&&Ed(e.dep)}function yo(e){return!!(e&&e.__v_isRef===!0)}function Z(e){return gR(e,!1)}function gR(e,o){return yo(e)?e:new em(e,o)}var em=class{constructor(o,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?o:Ie(o),this._value=t?o:xl(o)}get value(){return Xp(this),this._value}set value(o){let t=this.__v_isShallow||Aa(o)||vr(o);o=t?o:Ie(o),Qr(o,this._rawValue)&&(this._rawValue=o,this._value=t?o:xl(o),Jp(this,o))}};function ar(e){return yo(e)?e.value:e}var wR={get:(e,o,t)=>ar(Reflect.get(e,o,t)),set:(e,o,t,r)=>{let a=e[o];return yo(a)&&!yo(t)?(a.value=t,!0):Reflect.set(e,o,t,r)}};function Hn(e){return yr(e)?e:new Proxy(e,wR)}var om=class{constructor(o,t,r){this._object=o,this._key=t,this._defaultValue=r,this.__v_isRef=!0}get value(){let o=this._object[this._key];return o===void 0?this._defaultValue:o}set value(o){this._object[this._key]=o}};function De(e,o,t){let r=e[o];return yo(r)?r:new om(e,o,t)}var tm,rm=class{constructor(o,t,r,a){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[tm]=!1,this._dirty=!0,this.effect=new ka(o,()=>{this._dirty||(this._dirty=!0,Jp(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=r}get value(){let o=Ie(this);return Xp(o),(o._dirty||!o._cacheable)&&(o._dirty=!1,o._value=o.effect.run()),o._value}set value(o){this._setter(o)}};tm="__v_isReadonly";function am(e,o,t=!1){let r,a,l=Ee(e);return l?(r=e,a=nt):(r=e.get,a=e.set),new rm(r,a,l||!a,t)}var TR;TR="__v_isReadonly";var hl=[];function lm(e,...o){}function RR(){let e=hl[hl.length-1];if(!e)return[];let o=[];for(;e;){let t=o[0];t&&t.vnode===e?t.recurseCount++:o.push({vnode:e,recurseCount:0});let r=e.component&&e.component.parent;e=r&&r.vnode}return o}function FR(e){let o=[];return e.forEach((t,r)=>{o.push(...r===0?[]:[` -`],...OR(t))}),o}function OR({vnode:e,recurseCount:o}){let t=o>0?`... (${o} recursive calls)`:"",r=e.component?e.component.parent==null:!1,a=` at <${Km(e.component,e.type,r)}`,l=">"+t;return e.props?[a,...CR(e.props),l]:[a+l]}function CR(e){let o=[],t=Object.keys(e);return t.slice(0,3).forEach(r=>{o.push(...nm(r,e[r]))}),t.length>3&&o.push(" ..."),o}function nm(e,o,t){return Ro(o)?(o=JSON.stringify(o),t?o:[`${e}=${o}`]):typeof o=="number"||typeof o=="boolean"||o==null?t?o:[`${e}=${o}`]:yo(o)?(o=nm(e,Ie(o.value),!0),t?o:[`${e}=Ref<`,o,">"]):Ee(o)?[`${e}=fn${o.name?`<${o.name}>`:""}`]:(o=Ie(o),t?o:[`${e}=`,o])}var T0={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",[0]:"setup function",[1]:"render function",[2]:"watcher getter",[3]:"watcher callback",[4]:"watcher cleanup function",[5]:"native event handler",[6]:"component event handler",[7]:"vnode hook",[8]:"directive hook",[9]:"transition hook",[10]:"app errorHandler",[11]:"app warnHandler",[12]:"ref function",[13]:"async component loader",[14]:"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"};function lr(e,o,t,r){let a;try{a=r?e(...r):e()}catch(l){Wn(l,o,t)}return a}function it(e,o,t,r){if(Ee(e)){let l=lr(e,o,t,r);return l&&kd(l)&&l.catch(n=>{Wn(n,o,t)}),l}let a=[];for(let l=0;l>>1;gl(zo[r])Wt&&zo.splice(o,1)}function kR(e){Ae(e)?Da.push(...e):(!nr||!nr.includes(e,e.allowRecurse?Xr+1:Xr))&&Da.push(e),dm()}function sm(e,o=Sl?Wt+1:0){for(;ogl(t)-gl(r)),Xr=0;Xre.id==null?1/0:e.id,AR=(e,o)=>{let t=gl(e)-gl(o);if(t===0){if(e.pre&&!o.pre)return-1;if(o.pre&&!e.pre)return 1}return t};function fm(e){zd=!1,Sl=!0,zo.sort(AR);let o=nt;try{for(Wt=0;WtRo(p)?p.trim():p)),f&&(a=t.map(va))}let i,d=r[i=pl(o)]||r[i=pl(Nt(o))];!d&&l&&(d=r[i=pl(wr(o))]),d&&it(d,e,6,a);let s=r[i+"Once"];if(s){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,it(s,e,6,a)}}function pm(e,o,t=!1){let r=o.emitsCache,a=r.get(e);if(a!==void 0)return a;let l=e.emits,n={},i=!1;if(!Ee(e)){let d=s=>{let u=pm(s,o,!0);u&&(i=!0,Oo(n,u))};!t&&o.mixins.length&&o.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!l&&!i?(ao(e)&&r.set(e,null),null):(Ae(l)?l.forEach(d=>n[d]=null):Oo(n,l),ao(e)&&r.set(e,n),n)}function Vn(e,o){return!e||!ba(o)?!1:(o=o.slice(2).replace(/Once$/,""),je(e,o[0].toLowerCase()+o.slice(1))||je(e,wr(o))||je(e,o))}var jo=null,mm=null;function zn(e){let o=jo;return jo=e,mm=e&&e.type.__scopeId||null,o}function Jr(e,o=jo,t){if(!o||e._n)return e;let r=(...a)=>{r._d&&Im(-1);let l=zn(o),n;try{n=e(...a)}finally{zn(l),r._d&&Im(1)}return n};return r._n=!0,r._c=!0,r._d=!0,r}function Ud(e){let{type:o,vnode:t,proxy:r,withProxy:a,props:l,propsOptions:[n],slots:i,attrs:d,emit:s,render:u,renderCache:f,data:c,setupState:p,ctx:x,inheritAttrs:T}=e,C,S,D=zn(e);try{if(t.shapeFlag&4){let g=a||r;C=Vt(u.call(g,g,f,l,p,c,x)),S=d}else{let g=o;C=Vt(g.length>1?g(l,{attrs:d,slots:i,emit:s}):g(l,null)),S=o.props?d:PR(d)}}catch(g){Ol.length=0,Wn(g,e,1),C=mo($o)}let $=C,O;if(S&&T!==!1){let g=Object.keys(S),{shapeFlag:v}=$;g.length&&v&(1|6)&&(n&&g.some(sl)&&(S=MR(S,n)),$=Ar($,S))}return t.dirs&&($=Ar($),$.dirs=$.dirs?$.dirs.concat(t.dirs):t.dirs),t.transition&&($.transition=t.transition),C=$,zn(D),C}var PR=e=>{let o;for(let t in e)(t==="class"||t==="style"||ba(t))&&((o||(o={}))[t]=e[t]);return o},MR=(e,o)=>{let t={};for(let r in e)(!sl(r)||!(r.slice(9)in o))&&(t[r]=e[r]);return t};function BR(e,o,t){let{props:r,children:a,component:l}=e,{props:n,children:i,patchFlag:d}=o,s=l.emitsOptions;if(o.dirs||o.transition)return!0;if(t&&d>=0){if(d&1024)return!0;if(d&16)return r?cm(r,n,s):!!n;if(d&8){let u=o.dynamicProps;for(let f=0;fe.__isSuspense;function NR(e,o){o&&o.pendingBranch?Ae(e)?o.effects.push(...e):o.effects.push(e):kR(e)}function qo(e,o){if(Io){let t=Io.provides,r=Io.parent&&Io.parent.provides;r===t&&(t=Io.provides=Object.create(r)),t[e]=o}}function Te(e,o,t=!1){let r=Io||jo;if(r){let a=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(a&&e in a)return a[e];if(arguments.length>1)return t&&Ee(o)?o.call(r.proxy):o}}function Mo(e,o){return $n(e,null,o)}function xm(e,o){return $n(e,null,{flush:"post"})}var jn={};function Ze(e,o,t){return $n(e,o,t)}function $n(e,o,{immediate:t,deep:r,flush:a,onTrack:l,onTrigger:n}=ro){let i=O=>{lm("Invalid watch source: ",O,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},d=Io,s,u=!1,f=!1;if(yo(e)?(s=()=>e.value,u=Aa(e)):yr(e)?(s=()=>e,r=!0):Ae(e)?(f=!0,u=e.some(O=>yr(O)||Aa(O)),s=()=>e.map(O=>{if(yo(O))return O.value;if(yr(O))return ea(O);if(Ee(O))return lr(O,d,2)})):Ee(e)?o?s=()=>lr(e,d,2):s=()=>{if(!(d&&d.isUnmounted))return c&&c(),it(e,d,3,[p])}:s=nt,o&&r){let O=s;s=()=>ea(O())}let c,p=O=>{c=D.onStop=()=>{lr(O,d,4)}},x;if(vl)if(p=nt,o?t&&it(o,d,3,[s(),f?[]:void 0,p]):s(),a==="sync"){let O=yF();x=O.__watcherHandles||(O.__watcherHandles=[])}else return nt;let T=f?new Array(e.length).fill(jn):jn,C=()=>{if(!!D.active)if(o){let O=D.run();(r||u||(f?O.some((g,v)=>Qr(g,T[v])):Qr(O,T)))&&(c&&c(),it(o,d,3,[O,T===jn?void 0:f&&T[0]===jn?[]:T,p]),T=O)}else D.run()};C.allowRecurse=!!o;let S;a==="sync"?S=C:a==="post"?S=()=>ot(C,d&&d.suspense):(C.pre=!0,d&&(C.id=d.uid),S=()=>$d(C));let D=new ka(s,S);o?t?C():T=D.run():a==="post"?ot(D.run.bind(D),d&&d.suspense):D.run();let $=()=>{D.stop(),d&&d.scope&&bn(d.scope.effects,D)};return x&&x.push($),$}function _R(e,o,t){let r=this.proxy,a=Ro(e)?e.includes(".")?hm(r,e):()=>r[e]:e.bind(r,r),l;Ee(o)?l=o:(l=o.handler,t=o);let n=Io;_a(this);let i=$n(a,l.bind(r),t);return n?_a(n):na(),i}function hm(e,o){let t=o.split(".");return()=>{let r=e;for(let a=0;a{ea(t,o)});else if(Dd(e))for(let t in e)ea(e[t],o);return e}function Kd(){let e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return fo(()=>{e.isMounted=!0}),_o(()=>{e.isUnmounting=!0}),e}var xt=[Function,Array],IR={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:xt,onEnter:xt,onAfterEnter:xt,onEnterCancelled:xt,onBeforeLeave:xt,onLeave:xt,onAfterLeave:xt,onLeaveCancelled:xt,onBeforeAppear:xt,onAppear:xt,onAfterAppear:xt,onAppearCancelled:xt},setup(e,{slots:o}){let t=St(),r=Kd(),a;return()=>{let l=o.default&&Un(o.default(),!0);if(!l||!l.length)return;let n=l[0];if(l.length>1){let T=!1;for(let C of l)if(C.type!==$o){n=C,T=!0;break}}let i=Ie(e),{mode:d}=i;if(r.isLeaving)return qd(n);let s=gm(n);if(!s)return qd(n);let u=Pa(s,i,r,t);Ma(s,u);let f=t.subTree,c=f&&gm(f),p=!1,{getTransitionKey:x}=s.type;if(x){let T=x();a===void 0?a=T:T!==a&&(a=T,p=!0)}if(c&&c.type!==$o&&(!la(s,c)||p)){let T=Pa(c,i,r,t);if(Ma(c,T),d==="out-in")return r.isLeaving=!0,T.afterLeave=()=>{r.isLeaving=!1,t.update.active!==!1&&t.update()},qd(n);d==="in-out"&&s.type!==$o&&(T.delayLeave=(C,S,D)=>{let $=Sm(r,c);$[String(c.key)]=c,C._leaveCb=()=>{S(),C._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=D})}return n}}},Gd=IR;function Sm(e,o){let{leavingVNodes:t}=e,r=t.get(o.type);return r||(r=Object.create(null),t.set(o.type,r)),r}function Pa(e,o,t,r){let{appear:a,mode:l,persisted:n=!1,onBeforeEnter:i,onEnter:d,onAfterEnter:s,onEnterCancelled:u,onBeforeLeave:f,onLeave:c,onAfterLeave:p,onLeaveCancelled:x,onBeforeAppear:T,onAppear:C,onAfterAppear:S,onAppearCancelled:D}=o,$=String(e.key),O=Sm(t,e),g=(F,B)=>{F&&it(F,r,9,B)},v=(F,B)=>{let y=B[1];g(F,B),Ae(F)?F.every(W=>W.length<=1)&&y():F.length<=1&&y()},w={mode:l,persisted:n,beforeEnter(F){let B=i;if(!t.isMounted)if(a)B=T||i;else return;F._leaveCb&&F._leaveCb(!0);let y=O[$];y&&la(e,y)&&y.el._leaveCb&&y.el._leaveCb(),g(B,[F])},enter(F){let B=d,y=s,W=u;if(!t.isMounted)if(a)B=C||d,y=S||s,W=D||u;else return;let _=!1,ae=F._enterCb=he=>{_||(_=!0,he?g(W,[F]):g(y,[F]),w.delayedLeave&&w.delayedLeave(),F._enterCb=void 0)};B?v(B,[F,ae]):ae()},leave(F,B){let y=String(e.key);if(F._enterCb&&F._enterCb(!0),t.isUnmounting)return B();g(f,[F]);let W=!1,_=F._leaveCb=ae=>{W||(W=!0,B(),ae?g(x,[F]):g(p,[F]),F._leaveCb=void 0,O[y]===e&&delete O[y])};O[y]=e,c?v(c,[F,_]):_()},clone(F){return Pa(F,o,t,r)}};return w}function qd(e){if(Kn(e))return e=Ar(e),e.children=null,e}function gm(e){return Kn(e)?e.children?e.children[0]:void 0:e}function Ma(e,o){e.shapeFlag&6&&e.component?Ma(e.component.subTree,o):e.shapeFlag&128?(e.ssContent.transition=o.clone(e.ssContent),e.ssFallback.transition=o.clone(e.ssFallback)):e.transition=o}function Un(e,o=!1,t){let r=[],a=0;for(let l=0;l1)for(let l=0;l!!e.type.__asyncLoader;var Kn=e=>e.type.__isKeepAlive;function Qd(e,o){wm(e,"a",o)}function HR(e,o){wm(e,"da",o)}function wm(e,o,t=Io){let r=e.__wdc||(e.__wdc=()=>{let a=t;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(Gn(o,r,t),t){let a=t.parent;for(;a&&a.parent;)Kn(a.parent.vnode)&&WR(r,o,t,a),a=a.parent}}function WR(e,o,t,r){let a=Gn(o,e,r,!0);oa(()=>{bn(r[o],a)},t)}function Gn(e,o,t=Io,r=!1){if(t){let a=t[e]||(t[e]=[]),l=o.__weh||(o.__weh=(...n)=>{if(t.isUnmounted)return;Fr(),_a(t);let i=it(o,t,e,n);return na(),Or(),i});return r?a.unshift(l):a.push(l),l}}var ir=e=>(o,t=Io)=>(!vl||e==="sp")&&Gn(e,(...r)=>o(...r),t),dr=ir("bm"),fo=ir("m"),Zd=ir("bu"),Yd=ir("u"),_o=ir("bum"),oa=ir("um"),VR=ir("sp"),zR=ir("rtg"),jR=ir("rtc");function $R(e,o=Io){Gn("ec",e,o)}function qn(e,o){let t=jo;if(t===null)return e;let r=oi(t)||t.proxy,a=e.dirs||(e.dirs=[]);for(let l=0;lLa(o)?!(o.type===$o||o.type===Co&&!Tm(o.children)):!0)?e:null}var Xd=e=>e?Vm(e)?oi(e)||e.proxy:Xd(e.parent):null,Tl=Oo(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Xd(e.parent),$root:e=>Xd(e.root),$emit:e=>e.emit,$options:e=>os(e),$forceUpdate:e=>e.f||(e.f=()=>$d(e.update)),$nextTick:e=>e.n||(e.n=No.bind(e.proxy)),$watch:e=>_R.bind(e)});var Jd=(e,o)=>e!==ro&&!e.__isScriptSetup&&je(e,o),KR={get({_:e},o){let{ctx:t,setupState:r,data:a,props:l,accessCache:n,type:i,appContext:d}=e,s;if(o[0]!=="$"){let p=n[o];if(p!==void 0)switch(p){case 1:return r[o];case 2:return a[o];case 4:return t[o];case 3:return l[o]}else{if(Jd(r,o))return n[o]=1,r[o];if(a!==ro&&je(a,o))return n[o]=2,a[o];if((s=e.propsOptions[0])&&je(s,o))return n[o]=3,l[o];if(t!==ro&&je(t,o))return n[o]=4,t[o];es&&(n[o]=0)}}let u=Tl[o],f,c;if(u)return o==="$attrs"&&et(e,"get",o),u(e);if((f=i.__cssModules)&&(f=f[o]))return f;if(t!==ro&&je(t,o))return n[o]=4,t[o];if(c=d.config.globalProperties,je(c,o))return c[o]},set({_:e},o,t){let{data:r,setupState:a,ctx:l}=e;return Jd(a,o)?(a[o]=t,!0):r!==ro&&je(r,o)?(r[o]=t,!0):je(e.props,o)||o[0]==="$"&&o.slice(1)in e?!1:(l[o]=t,!0)},has({_:{data:e,setupState:o,accessCache:t,ctx:r,appContext:a,propsOptions:l}},n){let i;return!!t[n]||e!==ro&&je(e,n)||Jd(o,n)||(i=l[0])&&je(i,n)||je(r,n)||je(Tl,n)||je(a.config.globalProperties,n)},defineProperty(e,o,t){return t.get!=null?e._.accessCache[o]=0:je(t,"value")&&this.set(e,o,t.value,null),Reflect.defineProperty(e,o,t)}};var es=!0;function GR(e){let o=os(e),t=e.proxy,r=e.ctx;es=!1,o.beforeCreate&&Rm(o.beforeCreate,e,"bc");let{data:a,computed:l,methods:n,watch:i,provide:d,inject:s,created:u,beforeMount:f,mounted:c,beforeUpdate:p,updated:x,activated:T,deactivated:C,beforeDestroy:S,beforeUnmount:D,destroyed:$,unmounted:O,render:g,renderTracked:v,renderTriggered:w,errorCaptured:F,serverPrefetch:B,expose:y,inheritAttrs:W,components:_,directives:ae,filters:he}=o;if(s&&qR(s,r,null,e.appContext.config.unwrapInjectedRef),n)for(let ie in n){let ge=n[ie];Ee(ge)&&(r[ie]=ge.bind(t))}if(a){let ie=a.call(t,t);ao(ie)&&(e.data=Ht(ie))}if(es=!0,l)for(let ie in l){let ge=l[ie],Ve=Ee(ge)?ge.bind(t,t):Ee(ge.get)?ge.get.bind(t,t):nt,Ke=!Ee(ge)&&Ee(ge.set)?ge.set.bind(t):nt,He=V({get:Ve,set:Ke});Object.defineProperty(r,ie,{enumerable:!0,configurable:!0,get:()=>He.value,set:Xe=>He.value=Xe})}if(i)for(let ie in i)Fm(i[ie],r,t,ie);if(d){let ie=Ee(d)?d.call(t):d;Reflect.ownKeys(ie).forEach(ge=>{qo(ge,ie[ge])})}u&&Rm(u,e,"c");function de(ie,ge){Ae(ge)?ge.forEach(Ve=>ie(Ve.bind(t))):ge&&ie(ge.bind(t))}if(de(dr,f),de(fo,c),de(Zd,p),de(Yd,x),de(Qd,T),de(HR,C),de($R,F),de(jR,v),de(zR,w),de(_o,D),de(oa,O),de(VR,B),Ae(y))if(y.length){let ie=e.exposed||(e.exposed={});y.forEach(ge=>{Object.defineProperty(ie,ge,{get:()=>t[ge],set:Ve=>t[ge]=Ve})})}else e.exposed||(e.exposed={});g&&e.render===nt&&(e.render=g),W!=null&&(e.inheritAttrs=W),_&&(e.components=_),ae&&(e.directives=ae)}function qR(e,o,t=nt,r=!1){Ae(e)&&(e=ts(e));for(let a in e){let l=e[a],n;ao(l)?"default"in l?n=Te(l.from||a,l.default,!0):n=Te(l.from||a):n=Te(l),yo(n)&&r?Object.defineProperty(o,a,{enumerable:!0,configurable:!0,get:()=>n.value,set:i=>n.value=i}):o[a]=n}}function Rm(e,o,t){it(Ae(e)?e.map(r=>r.bind(o.proxy)):e.bind(o.proxy),o,t)}function Fm(e,o,t,r){let a=r.includes(".")?hm(t,r):()=>t[r];if(Ro(e)){let l=o[e];Ee(l)&&Ze(a,l)}else if(Ee(e))Ze(a,e.bind(t));else if(ao(e))if(Ae(e))e.forEach(l=>Fm(l,o,t,r));else{let l=Ee(e.handler)?e.handler.bind(t):o[e.handler];Ee(l)&&Ze(a,l,e)}}function os(e){let o=e.type,{mixins:t,extends:r}=o,{mixins:a,optionsCache:l,config:{optionMergeStrategies:n}}=e.appContext,i=l.get(o),d;return i?d=i:!a.length&&!t&&!r?d=o:(d={},a.length&&a.forEach(s=>Qn(d,s,n,!0)),Qn(d,o,n)),ao(o)&&l.set(o,d),d}function Qn(e,o,t,r=!1){let{mixins:a,extends:l}=o;l&&Qn(e,l,t,!0),a&&a.forEach(n=>Qn(e,n,t,!0));for(let n in o)if(!(r&&n==="expose")){let i=QR[n]||t&&t[n];e[n]=i?i(e[n],o[n]):o[n]}return e}var QR={data:Om,props:ra,emits:ra,methods:ra,computed:ra,beforeCreate:Qo,created:Qo,beforeMount:Qo,mounted:Qo,beforeUpdate:Qo,updated:Qo,beforeDestroy:Qo,beforeUnmount:Qo,destroyed:Qo,unmounted:Qo,activated:Qo,deactivated:Qo,errorCaptured:Qo,serverPrefetch:Qo,components:ra,directives:ra,watch:YR,provide:Om,inject:ZR};function Om(e,o){return o?e?function(){return Oo(Ee(e)?e.call(this,this):e,Ee(o)?o.call(this,this):o)}:o:e}function ZR(e,o){return ra(ts(e),ts(o))}function ts(e){if(Ae(e)){let o={};for(let t=0;t0)&&!(n&16)){if(n&8){let u=e.vnode.dynamicProps;for(let f=0;f{d=!0;let[c,p]=bm(f,o,!0);Oo(n,c),p&&i.push(...p)};!t&&o.mixins.length&&o.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!l&&!d)return ao(e)&&r.set(e,qr),qr;if(Ae(l))for(let u=0;u-1,p[1]=T<0||x-1||je(p,"default"))&&i.push(f)}}}let s=[n,i];return ao(e)&&r.set(e,s),s}function ym(e){return e[0]!=="$"}function vm(e){let o=e&&e.toString().match(/^\s*function (\w+)/);return o?o[1]:e===null?"null":""}function km(e,o){return vm(e)===vm(o)}function Am(e,o){return Ae(o)?o.findIndex(t=>km(t,e)):Ee(o)&&km(o,e)?0:-1}var Dm=e=>e[0]==="_"||e==="$stable",as=e=>Ae(e)?e.map(Vt):[Vt(e)],eF=(e,o,t)=>{if(o._n)return o;let r=Jr((...a)=>as(o(...a)),t);return r._c=!1,r},Pm=(e,o,t)=>{let r=e._ctx;for(let a in e){if(Dm(a))continue;let l=e[a];if(Ee(l))o[a]=eF(a,l,r);else if(l!=null){let n=as(l);o[a]=()=>n}}},Mm=(e,o)=>{let t=as(o);e.slots.default=()=>t},oF=(e,o)=>{if(e.vnode.shapeFlag&32){let t=o._;t?(e.slots=Ie(o),ya(o,"_",t)):Pm(o,e.slots={})}else e.slots={},o&&Mm(e,o);ya(e.slots,Xn,1)},tF=(e,o,t)=>{let{vnode:r,slots:a}=e,l=!0,n=ro;if(r.shapeFlag&32){let i=o._;i?t&&i===1?l=!1:(Oo(a,o),!t&&i===1&&delete a._):(l=!o.$stable,Pm(o,a)),n=o}else o&&(Mm(e,o),n={default:1});if(l)for(let i in a)!Dm(i)&&!(i in n)&&delete a[i]};function Bm(){return{app:null,config:{isNativeTag:Pp,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}var rF=0;function aF(e,o){return function(r,a=null){Ee(r)||(r=Object.assign({},r)),a!=null&&!ao(a)&&(a=null);let l=Bm(),n=new Set,i=!1,d=l.app={_uid:rF++,_component:r,_props:a,_container:null,_context:l,_instance:null,version:vF,get config(){return l.config},set config(s){},use(s,...u){return n.has(s)||(s&&Ee(s.install)?(n.add(s),s.install(d,...u)):Ee(s)&&(n.add(s),s(d,...u))),d},mixin(s){return l.mixins.includes(s)||l.mixins.push(s),d},component(s,u){return u?(l.components[s]=u,d):l.components[s]},directive(s,u){return u?(l.directives[s]=u,d):l.directives[s]},mount(s,u,f){if(!i){let c=mo(r,a);return c.appContext=l,u&&o?o(c,s):e(c,s,f),i=!0,d._container=s,s.__vue_app__=d,oi(c.component)||c.component.proxy}},unmount(){i&&(e(null,d._container),delete d._container.__vue_app__)},provide(s,u){return l.provides[s]=u,d}};return d}}function ls(e,o,t,r,a=!1){if(Ae(e)){e.forEach((c,p)=>ls(c,o&&(Ae(o)?o[p]:o),t,r,a));return}if(wl(r)&&!a)return;let l=r.shapeFlag&4?oi(r.component)||r.component.proxy:r.el,n=a?null:l,{i,r:d}=e,s=o&&o.r,u=i.refs===ro?i.refs={}:i.refs,f=i.setupState;if(s!=null&&s!==d&&(Ro(s)?(u[s]=null,je(f,s)&&(f[s]=null)):yo(s)&&(s.value=null)),Ee(d))lr(d,i,12,[n,u]);else{let c=Ro(d),p=yo(d);if(c||p){let x=()=>{if(e.f){let T=c?je(f,d)?f[d]:u[d]:d.value;a?Ae(T)&&bn(T,l):Ae(T)?T.includes(l)||T.push(l):c?(u[d]=[l],je(f,d)&&(f[d]=u[d])):(d.value=[l],e.k&&(u[e.k]=d.value))}else c?(u[d]=n,je(f,d)&&(f[d]=n)):p&&(d.value=n,e.k&&(u[e.k]=n))};n?(x.id=-1,ot(x,t)):x()}}}function lF(){let e=[]}var ot=NR;function Lm(e){return nF(e)}function nF(e,o){lF();let t=Lp();t.__VUE__=!0;let{insert:r,remove:a,patchProp:l,createElement:n,createText:i,createComment:d,setText:s,setElementText:u,parentNode:f,nextSibling:c,setScopeId:p=nt,insertStaticContent:x}=e,T=(m,h,k,E=null,I=null,j=null,U=!1,L=null,K=!!h.dynamicChildren)=>{if(m===h)return;m&&!la(m,h)&&(E=ho(m),Qe(m,I,j,!0),m=null),h.patchFlag===-2&&(K=!1,h.dynamicChildren=null);let{type:H,ref:b,shapeFlag:N}=h;switch(H){case Yn:C(m,h,k,E);break;case $o:S(m,h,k,E);break;case Fl:m==null&&D(h,k,E,U);break;case Co:ae(m,h,k,E,I,j,U,L,K);break;default:N&1?v(m,h,k,E,I,j,U,L,K):N&6?he(m,h,k,E,I,j,U,L,K):(N&64||N&128)&&H.process(m,h,k,E,I,j,U,L,K,qe)}b!=null&&I&&ls(b,m&&m.ref,j,h||m,!h)},C=(m,h,k,E)=>{if(m==null)r(h.el=i(h.children),k,E);else{let I=h.el=m.el;h.children!==m.children&&s(I,h.children)}},S=(m,h,k,E)=>{m==null?r(h.el=d(h.children||""),k,E):h.el=m.el},D=(m,h,k,E)=>{[m.el,m.anchor]=x(m.children,h,k,E,m.el,m.anchor)},$=(m,h,k,E)=>{if(h.children!==m.children){let I=c(m.anchor);g(m),[h.el,h.anchor]=x(h.children,k,I,E)}else h.el=m.el,h.anchor=m.anchor},O=({el:m,anchor:h},k,E)=>{let I;for(;m&&m!==h;)I=c(m),r(m,k,E),m=I;r(h,k,E)},g=({el:m,anchor:h})=>{let k;for(;m&&m!==h;)k=c(m),a(m),m=k;a(h)},v=(m,h,k,E,I,j,U,L,K)=>{U=U||h.type==="svg",m==null?w(h,k,E,I,j,U,L,K):y(m,h,I,j,U,L,K)},w=(m,h,k,E,I,j,U,L)=>{let K,H,{type:b,props:N,shapeFlag:z,transition:te,dirs:fe}=m;if(K=m.el=n(m.type,j,N&&N.is,N),z&8?u(K,m.children):z&16&&B(m.children,K,null,E,I,j&&b!=="foreignObject",U,L),fe&&ta(m,null,E,"created"),N){for(let ye in N)ye!=="value"&&!ul(ye)&&l(K,ye,null,N[ye],j,m.children,E,I,We);"value"in N&&l(K,"value",null,N.value),(H=N.onVnodeBeforeMount)&&zt(H,E,m)}F(K,m,m.scopeId,U,E),fe&&ta(m,null,E,"beforeMount");let Ce=(!I||I&&!I.pendingBranch)&&te&&!te.persisted;Ce&&te.beforeEnter(K),r(K,h,k),((H=N&&N.onVnodeMounted)||Ce||fe)&&ot(()=>{H&&zt(H,E,m),Ce&&te.enter(K),fe&&ta(m,null,E,"mounted")},I)},F=(m,h,k,E,I)=>{if(k&&p(m,k),E)for(let j=0;j{for(let H=K;H{let L=h.el=m.el,{patchFlag:K,dynamicChildren:H,dirs:b}=h;K|=m.patchFlag&16;let N=m.props||ro,z=h.props||ro,te;k&&aa(k,!1),(te=z.onVnodeBeforeUpdate)&&zt(te,k,h,m),b&&ta(h,m,k,"beforeUpdate"),k&&aa(k,!0);let fe=I&&h.type!=="foreignObject";if(H?W(m.dynamicChildren,H,L,k,E,fe,j):U||Ve(m,h,L,null,k,E,fe,j,!1),K>0){if(K&16)_(L,h,N,z,k,E,I);else if(K&2&&N.class!==z.class&&l(L,"class",null,z.class,I),K&4&&l(L,"style",N.style,z.style,I),K&8){let Ce=h.dynamicProps;for(let ye=0;ye{te&&zt(te,k,h,m),b&&ta(h,m,k,"updated")},E)},W=(m,h,k,E,I,j,U)=>{for(let L=0;L{if(k!==E){if(k!==ro)for(let L in k)!ul(L)&&!(L in E)&&l(m,L,k[L],null,U,h.children,I,j,We);for(let L in E){if(ul(L))continue;let K=E[L],H=k[L];K!==H&&L!=="value"&&l(m,L,H,K,U,h.children,I,j,We)}"value"in E&&l(m,"value",k.value,E.value)}},ae=(m,h,k,E,I,j,U,L,K)=>{let H=h.el=m?m.el:i(""),b=h.anchor=m?m.anchor:i(""),{patchFlag:N,dynamicChildren:z,slotScopeIds:te}=h;te&&(L=L?L.concat(te):te),m==null?(r(H,k,E),r(b,k,E),B(h.children,k,b,I,j,U,L,K)):N>0&&N&64&&z&&m.dynamicChildren?(W(m.dynamicChildren,z,k,I,j,U,L),(h.key!=null||I&&h===I.subTree)&&ns(m,h,!0)):Ve(m,h,k,b,I,j,U,L,K)},he=(m,h,k,E,I,j,U,L,K)=>{h.slotScopeIds=L,m==null?h.shapeFlag&512?I.ctx.activate(h,k,E,U,K):Me(h,k,E,I,j,U,K):de(m,h,K)},Me=(m,h,k,E,I,j,U)=>{let L=m.component=hF(m,E,I);if(Kn(m)&&(L.ctx.renderer=qe),SF(L),L.asyncDep){if(I&&I.registerDep(L,ie),!m.el){let K=L.subTree=mo($o);S(null,K,h,k)}return}ie(L,m,h,k,I,j,U)},de=(m,h,k)=>{let E=h.component=m.component;if(BR(m,h,k))if(E.asyncDep&&!E.asyncResolved){ge(E,h,k);return}else E.next=h,vR(E.update),E.update();else h.el=m.el,E.vnode=h},ie=(m,h,k,E,I,j,U)=>{let L=()=>{if(m.isMounted){let{next:b,bu:N,u:z,parent:te,vnode:fe}=m,Ce=b,ye;aa(m,!1),b?(b.el=fe.el,ge(m,b,U)):b=fe,N&&ml(N),(ye=b.props&&b.props.onVnodeBeforeUpdate)&&zt(ye,te,b,fe),aa(m,!0);let Le=Ud(m),Q=m.subTree;m.subTree=Le,T(Q,Le,f(Q.el),ho(Q),m,I,j),b.el=Le.el,Ce===null&&LR(m,Le.el),z&&ot(z,I),(ye=b.props&&b.props.onVnodeUpdated)&&ot(()=>zt(ye,te,b,fe),I)}else{let b,{el:N,props:z}=h,{bm:te,m:fe,parent:Ce}=m,ye=wl(h);if(aa(m,!1),te&&ml(te),!ye&&(b=z&&z.onVnodeBeforeMount)&&zt(b,Ce,h),aa(m,!0),N&&vo){let Le=()=>{m.subTree=Ud(m),vo(N,m.subTree,m,I,null)};ye?h.type.__asyncLoader().then(()=>!m.isUnmounted&&Le()):Le()}else{let Le=m.subTree=Ud(m);T(null,Le,k,E,m,I,j),h.el=Le.el}if(fe&&ot(fe,I),!ye&&(b=z&&z.onVnodeMounted)){let Le=h;ot(()=>zt(b,Ce,Le),I)}(h.shapeFlag&256||Ce&&wl(Ce.vnode)&&Ce.vnode.shapeFlag&256)&&m.a&&ot(m.a,I),m.isMounted=!0,h=k=E=null}},K=m.effect=new ka(L,()=>$d(H),m.scope),H=m.update=()=>K.run();H.id=m.uid,aa(m,!0),H()},ge=(m,h,k)=>{h.component=m;let E=m.vnode.props;m.vnode=h,m.next=null,JR(m,h.props,E,k),tF(m,h.children,k),Fr(),sm(),Or()},Ve=(m,h,k,E,I,j,U,L,K=!1)=>{let H=m&&m.children,b=m?m.shapeFlag:0,N=h.children,{patchFlag:z,shapeFlag:te}=h;if(z>0){if(z&128){He(H,N,k,E,I,j,U,L,K);return}else if(z&256){Ke(H,N,k,E,I,j,U,L,K);return}}te&8?(b&16&&We(H,I,j),N!==H&&u(k,N)):b&16?te&16?He(H,N,k,E,I,j,U,L,K):We(H,I,j,!0):(b&8&&u(k,""),te&16&&B(N,k,E,I,j,U,L,K))},Ke=(m,h,k,E,I,j,U,L,K)=>{m=m||qr,h=h||qr;let H=m.length,b=h.length,N=Math.min(H,b),z;for(z=0;zb?We(m,I,j,!0,!1,N):B(h,k,E,I,j,U,L,K,N)},He=(m,h,k,E,I,j,U,L,K)=>{let H=0,b=h.length,N=m.length-1,z=b-1;for(;H<=N&&H<=z;){let te=m[H],fe=h[H]=K?Dr(h[H]):Vt(h[H]);if(la(te,fe))T(te,fe,k,null,I,j,U,L,K);else break;H++}for(;H<=N&&H<=z;){let te=m[N],fe=h[z]=K?Dr(h[z]):Vt(h[z]);if(la(te,fe))T(te,fe,k,null,I,j,U,L,K);else break;N--,z--}if(H>N){if(H<=z){let te=z+1,fe=tez)for(;H<=N;)Qe(m[H],I,j,!0),H++;else{let te=H,fe=H,Ce=new Map;for(H=fe;H<=z;H++){let ze=h[H]=K?Dr(h[H]):Vt(h[H]);ze.key!=null&&Ce.set(ze.key,H)}let ye,Le=0,Q=z-fe+1,re=!1,Se=0,_e=new Array(Q);for(H=0;H=Q){Qe(ze,I,j,!0);continue}let eo;if(ze.key!=null)eo=Ce.get(ze.key);else for(ye=fe;ye<=z;ye++)if(_e[ye-fe]===0&&la(ze,h[ye])){eo=ye;break}eo===void 0?Qe(ze,I,j,!0):(_e[eo-fe]=H+1,eo>=Se?Se=eo:re=!0,T(ze,h[eo],k,null,I,j,U,L,K),Le++)}let Je=re?iF(_e):qr;for(ye=Je.length-1,H=Q-1;H>=0;H--){let ze=fe+H,eo=h[ze],Ge=ze+1{let{el:j,type:U,transition:L,children:K,shapeFlag:H}=m;if(H&6){Xe(m.component.subTree,h,k,E);return}if(H&128){m.suspense.move(h,k,E);return}if(H&64){U.move(m,h,k,qe);return}if(U===Co){r(j,h,k);for(let N=0;NL.enter(j),I);else{let{leave:N,delayLeave:z,afterLeave:te}=L,fe=()=>r(j,h,k),Ce=()=>{N(j,()=>{fe(),te&&te()})};z?z(j,fe,Ce):Ce()}else r(j,h,k)},Qe=(m,h,k,E=!1,I=!1)=>{let{type:j,props:U,ref:L,children:K,dynamicChildren:H,shapeFlag:b,patchFlag:N,dirs:z}=m;if(L!=null&&ls(L,null,k,m,!0),b&256){h.ctx.deactivate(m);return}let te=b&1&&z,fe=!wl(m),Ce;if(fe&&(Ce=U&&U.onVnodeBeforeUnmount)&&zt(Ce,h,m),b&6)Be(m.component,k,E);else{if(b&128){m.suspense.unmount(k,E);return}te&&ta(m,null,h,"beforeUnmount"),b&64?m.type.remove(m,h,k,I,qe,E):H&&(j!==Co||N>0&&N&64)?We(H,h,k,!1,!0):(j===Co&&N&(128|256)||!I&&b&16)&&We(K,h,k),E&&wo(m)}(fe&&(Ce=U&&U.onVnodeUnmounted)||te)&&ot(()=>{Ce&&zt(Ce,h,m),te&&ta(m,null,h,"unmounted")},k)},wo=m=>{let{type:h,el:k,anchor:E,transition:I}=m;if(h===Co){Do(k,E);return}if(h===Fl){g(m);return}let j=()=>{a(k),I&&!I.persisted&&I.afterLeave&&I.afterLeave()};if(m.shapeFlag&1&&I&&!I.persisted){let{leave:U,delayLeave:L}=I,K=()=>U(k,j);L?L(m.el,j,K):K()}else j()},Do=(m,h)=>{let k;for(;m!==h;)k=c(m),a(m),m=k;a(h)},Be=(m,h,k)=>{let{bum:E,scope:I,update:j,subTree:U,um:L}=m;E&&ml(E),I.stop(),j&&(j.active=!1,Qe(U,m,h,k)),L&&ot(L,h),ot(()=>{m.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&m.asyncDep&&!m.asyncResolved&&m.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},We=(m,h,k,E=!1,I=!1,j=0)=>{for(let U=j;Um.shapeFlag&6?ho(m.component.subTree):m.shapeFlag&128?m.suspense.next():c(m.anchor||m.el),we=(m,h,k)=>{m==null?h._vnode&&Qe(h._vnode,null,null,!0):T(h._vnode||null,m,h,null,null,null,k),sm(),um(),h._vnode=m},qe={p:T,um:Qe,m:Xe,r:wo,mt:Me,mc:B,pc:Ve,pbc:W,n:ho,o:e},to,vo;return o&&([to,vo]=o(qe)),{render:we,hydrate:to,createApp:aF(we,to)}}function aa({effect:e,update:o},t){e.allowRecurse=o.allowRecurse=t}function ns(e,o,t=!1){let r=e.children,a=o.children;if(Ae(r)&&Ae(a))for(let l=0;l>1,e[t[i]]0&&(o[r]=t[l-1]),t[l]=r)}}for(l=t.length,n=t[l-1];l-- >0;)t[l]=n,n=o[n];return t}var dF=e=>e.__isTeleport,Rl=e=>e&&(e.disabled||e.disabled===""),Em=e=>typeof SVGElement!="undefined"&&e instanceof SVGElement,is=(e,o)=>{let t=e&&e.to;if(Ro(t))if(o){let r=o(t);return r}else return null;else return t},sF={__isTeleport:!0,process(e,o,t,r,a,l,n,i,d,s){let{mc:u,pc:f,pbc:c,o:{insert:p,querySelector:x,createText:T,createComment:C}}=s,S=Rl(o.props),{shapeFlag:D,children:$,dynamicChildren:O}=o;if(e==null){let g=o.el=T(""),v=o.anchor=T("");p(g,t,r),p(v,t,r);let w=o.target=is(o.props,x),F=o.targetAnchor=T("");w&&(p(F,w),n=n||Em(w));let B=(y,W)=>{D&16&&u($,y,W,a,l,n,i,d)};S?B(t,v):w&&B(w,F)}else{o.el=e.el;let g=o.anchor=e.anchor,v=o.target=e.target,w=o.targetAnchor=e.targetAnchor,F=Rl(e.props),B=F?t:v,y=F?g:w;if(n=n||Em(v),O?(c(e.dynamicChildren,O,B,a,l,n,i),ns(e,o,!0)):d||f(e,o,B,y,a,l,n,i,!1),S)F||Zn(o,t,g,s,1);else if((o.props&&o.props.to)!==(e.props&&e.props.to)){let W=o.target=is(o.props,x);W&&Zn(o,W,null,s,0)}else F&&Zn(o,v,w,s,1)}_m(o)},remove(e,o,t,r,{um:a,o:{remove:l}},n){let{shapeFlag:i,children:d,anchor:s,targetAnchor:u,target:f,props:c}=e;if(f&&l(u),(n||!Rl(c))&&(l(s),i&16))for(let p=0;p0?vt||qr:null,fF(),Cl>0&&vt&&vt.push(e),e}function kr(e,o,t,r,a,l){return Hm(Ea(e,o,t,r,a,l,!0))}function bl(e,o,t,r,a){return Hm(mo(e,o,t,r,a,!0))}function La(e){return e?e.__v_isVNode===!0:!1}function la(e,o){return e.type===o.type&&e.key===o.key}var Xn="__vInternal",Wm=({key:e})=>e!=null?e:null,Jn=({ref:e,ref_key:o,ref_for:t})=>e!=null?Ro(e)||yo(e)||Ee(e)?{i:jo,r:e,k:o,f:!!t}:e:null;function Ea(e,o=null,t=null,r=0,a=null,l=e===Co?0:1,n=!1,i=!1){let d={__v_isVNode:!0,__v_skip:!0,type:e,props:o,key:o&&Wm(o),ref:o&&Jn(o),scopeId:mm,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:r,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:jo};return i?(ds(d,t),l&128&&e.normalize(d)):t&&(d.shapeFlag|=Ro(t)?8:16),Cl>0&&!n&&vt&&(d.patchFlag>0||l&6)&&d.patchFlag!==32&&vt.push(d),d}var mo=pF;function pF(e,o=null,t=null,r=0,a=null,l=!1){if((!e||e===UR)&&(e=$o),La(e)){let i=Ar(e,o,!0);return t&&ds(i,t),Cl>0&&!l&&vt&&(i.shapeFlag&6?vt[vt.indexOf(e)]=i:vt.push(i)),i.patchFlag|=-2,i}if(CF(e)&&(e=e.__vccOpts),o){o=mF(o);let{class:i,style:d}=o;i&&!Ro(i)&&(o.class=Gr(i)),ao(d)&&(In(d)&&!Ae(d)&&(d=Oo({},d)),o.style=Sr(d))}let n=Ro(e)?1:ER(e)?128:dF(e)?64:ao(e)?4:Ee(e)?2:0;return Ea(e,o,t,r,a,n,l,!0)}function mF(e){return e?In(e)||Xn in e?Oo({},e):e:null}function Ar(e,o,t=!1){let{props:r,ref:a,patchFlag:l,children:n}=e,i=o?yl(r||{},o):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:i,key:i&&Wm(i),ref:o&&o.ref?t&&a?Ae(a)?a.concat(Jn(o)):[a,Jn(o)]:Jn(o):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:n,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:o&&e.type!==Co?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ar(e.ssContent),ssFallback:e.ssFallback&&Ar(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx}}function Na(e=" ",o=0){return mo(Yn,null,e,o)}function ei(e="",o=!1){return o?(ht(),bl($o,null,e)):mo($o,null,e)}function Vt(e){return e==null||typeof e=="boolean"?mo($o):Ae(e)?mo(Co,null,e.slice()):typeof e=="object"?Dr(e):mo(Yn,null,String(e))}function Dr(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ar(e)}function ds(e,o){let t=0,{shapeFlag:r}=e;if(o==null)o=null;else if(Ae(o))t=16;else if(typeof o=="object")if(r&(1|64)){let a=o.default;a&&(a._c&&(a._d=!1),ds(e,a()),a._c&&(a._d=!0));return}else{t=32;let a=o._;!a&&!(Xn in o)?o._ctx=jo:a===3&&jo&&(jo.slots._===1?o._=1:(o._=2,e.patchFlag|=1024))}else Ee(o)?(o={default:o,_ctx:jo},t=32):(o=String(o),r&64?(t=16,o=[Na(o)]):t=8);e.children=o,e.shapeFlag|=t}function yl(...e){let o={};for(let t=0;tIo||jo,_a=e=>{Io=e,e.scope.on()},na=()=>{Io&&Io.scope.off(),Io=null};function Vm(e){return e.vnode.shapeFlag&4}var vl=!1;function SF(e,o=!1){vl=o;let{props:t,children:r}=e.vnode,a=Vm(e);XR(e,t,a,o),oF(e,r);let l=a?gF(e,o):void 0;return vl=!1,l}function gF(e,o){var t;let r=e.type;e.accessCache=Object.create(null),e.proxy=Yr(new Proxy(e.ctx,KR));let{setup:a}=r;if(a){let l=e.setupContext=a.length>1?TF(e):null;_a(e),Fr();let n=lr(a,e,0,[e.props,l]);if(Or(),na(),kd(n)){if(n.then(na,na),o)return n.then(i=>{zm(e,i,o)}).catch(i=>{Wn(i,e,0)});e.asyncDep=n}else zm(e,n,o)}else Um(e,o)}function zm(e,o,t){Ee(o)?e.type.__ssrInlineRender?e.ssrRender=o:e.render=o:ao(o)&&(e.setupState=Hn(o)),Um(e,t)}var jm,$m;function Um(e,o,t){let r=e.type;if(!e.render){if(!o&&jm&&!r.render){let a=r.template||os(e).template;if(a){let{isCustomElement:l,compilerOptions:n}=e.appContext.config,{delimiters:i,compilerOptions:d}=r,s=Oo(Oo({isCustomElement:l,delimiters:i},n),d);r.render=jm(a,s)}}e.render=r.render||nt,$m&&$m(e)}_a(e),Fr(),GR(e),Or(),na()}function wF(e){return new Proxy(e.attrs,{get(o,t){return et(e,"get","$attrs"),o[t]}})}function TF(e){let o=r=>{e.exposed=r||{}},t;return{get attrs(){return t||(t=wF(e))},slots:e.slots,emit:e.emit,expose:o}}function oi(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Hn(Yr(e.exposed)),{get(o,t){if(t in o)return o[t];if(t in Tl)return Tl[t](e)},has(o,t){return t in o||t in Tl}}))}var RF=/(?:^|[-_])(\w)/g,FF=e=>e.replace(RF,o=>o.toUpperCase()).replace(/[-_]/g,"");function OF(e,o=!0){return Ee(e)?e.displayName||e.name:e.name||o&&e.__name}function Km(e,o,t=!1){let r=OF(o);if(!r&&o.__file){let a=o.__file.match(/([^/\\]+)\.\w+$/);a&&(r=a[1])}if(!r&&e&&e.parent){let a=l=>{for(let n in l)if(l[n]===o)return n};r=a(e.components||e.parent.type.components)||a(e.appContext.components)}return r?FF(r):t?"App":"Anonymous"}function CF(e){return Ee(e)&&"__vccOpts"in e}var V=(e,o)=>am(e,o,vl);function R(e,o,t){let r=arguments.length;return r===2?ao(o)&&!Ae(o)?La(o)?mo(e,null,[o]):mo(e,o):mo(e,null,o):(r>3?t=Array.prototype.slice.call(arguments,2):r===3&&La(t)&&(t=[t]),mo(e,o,t))}var bF=Symbol(""),yF=()=>{{let e=Te(bF);return e}};var vF="3.2.45";var kF="http://www.w3.org/2000/svg",ia=typeof document!="undefined"?document:null,Gm=ia&&ia.createElement("template"),AF={insert:(e,o,t)=>{o.insertBefore(e,t||null)},remove:e=>{let o=e.parentNode;o&&o.removeChild(e)},createElement:(e,o,t,r)=>{let a=o?ia.createElementNS(kF,e):ia.createElement(e,t?{is:t}:void 0);return e==="select"&&r&&r.multiple!=null&&a.setAttribute("multiple",r.multiple),a},createText:e=>ia.createTextNode(e),createComment:e=>ia.createComment(e),setText:(e,o)=>{e.nodeValue=o},setElementText:(e,o)=>{e.textContent=o},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ia.querySelector(e),setScopeId(e,o){e.setAttribute(o,"")},insertStaticContent(e,o,t,r,a,l){let n=t?t.previousSibling:o.lastChild;if(a&&(a===l||a.nextSibling))for(;o.insertBefore(a.cloneNode(!0),t),!(a===l||!(a=a.nextSibling)););else{Gm.innerHTML=r?`${e}`:e;let i=Gm.content;if(r){let d=i.firstChild;for(;d.firstChild;)i.appendChild(d.firstChild);i.removeChild(d)}o.insertBefore(i,t)}return[n?n.nextSibling:o.firstChild,t?t.previousSibling:o.lastChild]}};function DF(e,o,t){let r=e._vtc;r&&(o=(o?[o,...r]:[...r]).join(" ")),o==null?e.removeAttribute("class"):t?e.setAttribute("class",o):e.className=o}function PF(e,o,t){let r=e.style,a=Ro(t);if(t&&!a){for(let l in t)ss(r,l,t[l]);if(o&&!Ro(o))for(let l in o)t[l]==null&&ss(r,l,"")}else{let l=r.display;a?o!==t&&(r.cssText=t):o&&e.removeAttribute("style"),"_vod"in e&&(r.display=l)}}var qm=/\s*!important$/;function ss(e,o,t){if(Ae(t))t.forEach(r=>ss(e,o,r));else if(t==null&&(t=""),o.startsWith("--"))e.setProperty(o,t);else{let r=MF(e,o);qm.test(t)?e.setProperty(wr(r),t.replace(qm,""),"important"):e[r]=t}}var Qm=["Webkit","Moz","ms"],us={};function MF(e,o){let t=us[o];if(t)return t;let r=Nt(o);if(r!=="filter"&&r in e)return us[o]=r;r=fl(r);for(let a=0;afs||(HF.then(()=>fs=0),fs=Date.now());function VF(e,o){let t=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=t.attached)return;it(zF(r,t.value),o,5,[r])};return t.value=e,t.attached=WF(),t}function zF(e,o){if(Ae(o)){let t=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{t.call(e),e._stopped=!0},o.map(r=>a=>!a._stopped&&r&&r(a))}else return o}var Xm=/^on[a-z]/,jF=(e,o,t,r,a=!1,l,n,i,d)=>{o==="class"?DF(e,r,a):o==="style"?PF(e,t,r):ba(o)?sl(o)||_F(e,o,t,r,n):(o[0]==="."?(o=o.slice(1),!0):o[0]==="^"?(o=o.slice(1),!1):$F(e,o,r,a))?LF(e,o,r,l,n,i,d):(o==="true-value"?e._trueValue=r:o==="false-value"&&(e._falseValue=r),BF(e,o,r,a))};function $F(e,o,t,r){return r?!!(o==="innerHTML"||o==="textContent"||o in e&&Xm.test(o)&&Ee(t)):o==="spellcheck"||o==="draggable"||o==="translate"||o==="form"||o==="list"&&e.tagName==="INPUT"||o==="type"&&e.tagName==="TEXTAREA"||Xm.test(o)&&Ro(t)?!1:o in e}function Jm(e){let o=St();if(!o)return;let t=o.ut=(a=e(o.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${o.uid}"]`)).forEach(l=>ms(l,a))},r=()=>{let a=e(o.proxy);ps(o.subTree,a),t(a)};xm(r),fo(()=>{let a=new MutationObserver(r);a.observe(o.subTree.el.parentNode,{childList:!0}),oa(()=>a.disconnect())})}function ps(e,o){if(e.shapeFlag&128){let t=e.suspense;e=t.activeBranch,t.pendingBranch&&!t.isHydrating&&t.effects.push(()=>{ps(t.activeBranch,o)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)ms(e.el,o);else if(e.type===Co)e.children.forEach(t=>ps(t,o));else if(e.type===Fl){let{el:t,anchor:r}=e;for(;t&&(ms(t,o),t!==r);)t=t.nextSibling}}function ms(e,o){if(e.nodeType===1){let t=e.style;for(let r in o)t.setProperty(`--${r}`,o[r])}}var Pr="transition",kl="animation",kt=(e,{slots:o})=>R(Gd,tc(e),o);kt.displayName="Transition";var ec={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},UF=kt.props=Oo({},Gd.props,ec),da=(e,o=[])=>{Ae(e)?e.forEach(t=>t(...o)):e&&e(...o)},oc=e=>e?Ae(e)?e.some(o=>o.length>1):e.length>1:!1;function tc(e){let o={};for(let _ in e)_ in ec||(o[_]=e[_]);if(e.css===!1)return o;let{name:t="v",type:r,duration:a,enterFromClass:l=`${t}-enter-from`,enterActiveClass:n=`${t}-enter-active`,enterToClass:i=`${t}-enter-to`,appearFromClass:d=l,appearActiveClass:s=n,appearToClass:u=i,leaveFromClass:f=`${t}-leave-from`,leaveActiveClass:c=`${t}-leave-active`,leaveToClass:p=`${t}-leave-to`}=e,x=KF(a),T=x&&x[0],C=x&&x[1],{onBeforeEnter:S,onEnter:D,onEnterCancelled:$,onLeave:O,onLeaveCancelled:g,onBeforeAppear:v=S,onAppear:w=D,onAppearCancelled:F=$}=o,B=(_,ae,he)=>{Mr(_,ae?u:i),Mr(_,ae?s:n),he&&he()},y=(_,ae)=>{_._isLeaving=!1,Mr(_,f),Mr(_,p),Mr(_,c),ae&&ae()},W=_=>(ae,he)=>{let Me=_?w:D,de=()=>B(ae,_,he);da(Me,[ae,de]),rc(()=>{Mr(ae,_?d:l),sr(ae,_?u:i),oc(Me)||ac(ae,r,T,de)})};return Oo(o,{onBeforeEnter(_){da(S,[_]),sr(_,l),sr(_,n)},onBeforeAppear(_){da(v,[_]),sr(_,d),sr(_,s)},onEnter:W(!1),onAppear:W(!0),onLeave(_,ae){_._isLeaving=!0;let he=()=>y(_,ae);sr(_,f),dc(),sr(_,c),rc(()=>{!_._isLeaving||(Mr(_,f),sr(_,p),oc(O)||ac(_,r,C,he))}),da(O,[_,he])},onEnterCancelled(_){B(_,!1),da($,[_])},onAppearCancelled(_){B(_,!0),da(F,[_])},onLeaveCancelled(_){y(_),da(g,[_])}})}function KF(e){if(e==null)return null;if(ao(e))return[cs(e.enter),cs(e.leave)];{let o=cs(e);return[o,o]}}function cs(e){return va(e)}function sr(e,o){o.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e._vtc||(e._vtc=new Set)).add(o)}function Mr(e,o){o.split(/\s+/).forEach(r=>r&&e.classList.remove(r));let{_vtc:t}=e;t&&(t.delete(o),t.size||(e._vtc=void 0))}function rc(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var GF=0;function ac(e,o,t,r){let a=e._endId=++GF,l=()=>{a===e._endId&&r()};if(t)return setTimeout(l,t);let{type:n,timeout:i,propCount:d}=lc(e,o);if(!n)return r();let s=n+"end",u=0,f=()=>{e.removeEventListener(s,c),l()},c=p=>{p.target===e&&++u>=d&&f()};setTimeout(()=>{u(t[x]||"").split(", "),a=r(`${Pr}Delay`),l=r(`${Pr}Duration`),n=nc(a,l),i=r(`${kl}Delay`),d=r(`${kl}Duration`),s=nc(i,d),u=null,f=0,c=0;o===Pr?n>0&&(u=Pr,f=n,c=l.length):o===kl?s>0&&(u=kl,f=s,c=d.length):(f=Math.max(n,s),u=f>0?n>s?Pr:kl:null,c=u?u===Pr?l.length:d.length:0);let p=u===Pr&&/\b(transform|all)(,|$)/.test(r(`${Pr}Property`).toString());return{type:u,timeout:f,propCount:c,hasTransform:p}}function nc(e,o){for(;e.lengthic(t)+ic(e[r])))}function ic(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function dc(){return document.body.offsetHeight}var sc=new WeakMap,uc=new WeakMap,qF={name:"TransitionGroup",props:Oo({},UF,{tag:String,moveClass:String}),setup(e,{slots:o}){let t=St(),r=Kd(),a,l;return Yd(()=>{if(!a.length)return;let n=e.moveClass||`${e.name||"v"}-move`;if(!XF(a[0].el,t.vnode.el,n))return;a.forEach(QF),a.forEach(ZF);let i=a.filter(YF);dc(),i.forEach(d=>{let s=d.el,u=s.style;sr(s,n),u.transform=u.webkitTransform=u.transitionDuration="";let f=s._moveCb=c=>{c&&c.target!==s||(!c||/transform$/.test(c.propertyName))&&(s.removeEventListener("transitionend",f),s._moveCb=null,Mr(s,n))};s.addEventListener("transitionend",f)})}),()=>{let n=Ie(e),i=tc(n),d=n.tag||Co;a=l,l=o.default?Un(o.default()):[];for(let s=0;s{n.split(/\s+/).forEach(i=>i&&r.classList.remove(i))}),t.split(/\s+/).forEach(n=>n&&r.classList.add(n)),r.style.display="none";let a=o.nodeType===1?o:o.parentNode;a.appendChild(r);let{hasTransform:l}=lc(r);return a.removeChild(r),l}var JF=Oo({patchProp:jF},AF),pc;function eO(){return pc||(pc=Lm(JF))}var mc=(...e)=>{let o=eO().createApp(...e),{mount:t}=o;return o.mount=r=>{let a=oO(r);if(!a)return;let l=o._component;!Ee(l)&&!l.render&&!l.template&&(l.template=a.innerHTML),a.innerHTML="";let n=t(a,!1,a instanceof SVGElement);return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),n},o};function oO(e){return Ro(e)?document.querySelector(e):e}var Od=Oa(require("obsidian"));var ti=[],cc=new WeakMap;function tO(){ti.forEach(e=>e(...cc.get(e))),ti=[]}function Al(e,...o){cc.set(e,o),!ti.includes(e)&&ti.push(e)===1&&requestAnimationFrame(tO)}function ri(e,o){let{target:t}=e;for(;t;){if(t.dataset&&t.dataset[o]!==void 0)return!0;t=t.parentElement}return!1}function ai(e){return typeof e=="string"?e.endsWith("px")?Number(e.slice(0,e.length-2)):Number(e):e}function Br(e){if(e!=null)return typeof e=="number"?`${e}px`:e.endsWith("px")?e:`${e}px`}function Ia(e,o){let t=e.trim().split(/\s+/g),r={top:t[0]};switch(t.length){case 1:r.right=t[0],r.bottom=t[0],r.left=t[0];break;case 2:r.right=t[1],r.left=t[1],r.bottom=t[0];break;case 3:r.right=t[1],r.bottom=t[2],r.left=t[1];break;case 4:r.right=t[1],r.bottom=t[2],r.left=t[3];break;default:throw new Error("[seemly/getMargin]:"+e+" is not a valid value.")}return o===void 0?r:r[o]}var xs={black:"#000",silver:"#C0C0C0",gray:"#808080",white:"#FFF",maroon:"#800000",red:"#F00",purple:"#800080",fuchsia:"#F0F",green:"#008000",lime:"#0F0",olive:"#808000",yellow:"#FF0",navy:"#000080",blue:"#00F",teal:"#008080",aqua:"#0FF",transparent:"#0000"};var jt="^\\s*",$t="\\s*$",Lr="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))%\\s*",dt="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))\\s*",sa="([0-9A-Fa-f])",ua="([0-9A-Fa-f]{2})",j0=new RegExp(`${jt}hsl\\s*\\(${dt},${Lr},${Lr}\\)${$t}`),$0=new RegExp(`${jt}hsv\\s*\\(${dt},${Lr},${Lr}\\)${$t}`),U0=new RegExp(`${jt}hsla\\s*\\(${dt},${Lr},${Lr},${dt}\\)${$t}`),K0=new RegExp(`${jt}hsva\\s*\\(${dt},${Lr},${Lr},${dt}\\)${$t}`),rO=new RegExp(`${jt}rgb\\s*\\(${dt},${dt},${dt}\\)${$t}`),aO=new RegExp(`${jt}rgba\\s*\\(${dt},${dt},${dt},${dt}\\)${$t}`),lO=new RegExp(`${jt}#${sa}${sa}${sa}${$t}`),nO=new RegExp(`${jt}#${ua}${ua}${ua}${$t}`),iO=new RegExp(`${jt}#${sa}${sa}${sa}${sa}${$t}`),dO=new RegExp(`${jt}#${ua}${ua}${ua}${ua}${$t}`);function tt(e){return parseInt(e,16)}function gt(e){try{let o;if(o=nO.exec(e))return[tt(o[1]),tt(o[2]),tt(o[3]),1];if(o=rO.exec(e))return[Ho(o[1]),Ho(o[5]),Ho(o[9]),1];if(o=aO.exec(e))return[Ho(o[1]),Ho(o[5]),Ho(o[9]),Ha(o[13])];if(o=lO.exec(e))return[tt(o[1]+o[1]),tt(o[2]+o[2]),tt(o[3]+o[3]),1];if(o=dO.exec(e))return[tt(o[1]),tt(o[2]),tt(o[3]),Ha(tt(o[4])/255)];if(o=iO.exec(e))return[tt(o[1]+o[1]),tt(o[2]+o[2]),tt(o[3]+o[3]),Ha(tt(o[4]+o[4])/255)];if(e in xs)return gt(xs[e]);throw new Error(`[seemly/rgba]: Invalid color value ${e}.`)}catch(o){throw o}}function sO(e){return e>1?1:e<0?0:e}function hs(e,o,t,r){return`rgba(${Ho(e)}, ${Ho(o)}, ${Ho(t)}, ${sO(r)})`}function Ss(e,o,t,r,a){return Ho((e*o*(1-r)+t*r)/a)}function me(e,o){Array.isArray(e)||(e=gt(e)),Array.isArray(o)||(o=gt(o));let t=e[3],r=o[3],a=Ha(t+r-t*r);return hs(Ss(e[0],t,o[0],r,a),Ss(e[1],t,o[1],r,a),Ss(e[2],t,o[2],r,a),a)}function J(e,o){let[t,r,a,l=1]=Array.isArray(e)?e:gt(e);return o.alpha?hs(t,r,a,o.alpha):hs(t,r,a,l)}function ur(e,o){let[t,r,a,l=1]=Array.isArray(e)?e:gt(e),{lightness:n=1,alpha:i=1}=o;return xc([t*n,r*n,a*n,l*i])}function Ha(e){let o=Math.round(Number(e)*100)/100;return o>1?1:o<0?0:o}function Ho(e){let o=Math.round(Number(e));return o>255?255:o<0?0:o}function xc(e){let[o,t,r]=e;return 3 in e?`rgba(${Ho(o)}, ${Ho(t)}, ${Ho(r)}, ${Ha(e[3])})`:`rgba(${Ho(o)}, ${Ho(t)}, ${Ho(r)}, 1)`}function gs(e=8){return Math.random().toString(16).slice(2,2+e)}function ws(e,o){let t=[];for(let r=0;rRe(t,...o));else return e(...o)}var Wa=(e,...o)=>typeof e=="function"?e(...o):typeof e=="string"?Na(e):typeof e=="number"?Na(String(e)):null;var kM=new Set;function li(e,o){console.error(`[naive/${e}]: ${o}`)}function ni(e,o){throw new Error(`[naive/${e}]: ${o}`)}function Va(e){return typeof e=="string"?`s-${e}`:`n-${e}`}function lo(e){return e}function Dl(e){return e.some(o=>La(o)?!(o.type===$o||o.type===Co&&!Dl(o.children)):!0)?e:null}function Ut(e,o){return e&&Dl(e())||o()}function ii(e,o,t){return e&&Dl(e(o))||t(o)}function Kt(e,o){let t=e&&Dl(e());return o(t||null)}function di(e){return!(e&&Dl(e()))}function Pl(e){return e.replace(/#|\(|\)|,|\s/g,"_")}function fO(e){let o=0;for(let t=0;t{let a=fO(r);if(a){if(a===1){e.forEach(n=>{t.push(r.replace("&",n))});return}}else{e.forEach(n=>{t.push((n&&n+" ")+r)});return}let l=[r];for(;a--;){let n=[];l.forEach(i=>{e.forEach(d=>{n.push(i.replace("&",d))})}),l=n}l.forEach(n=>t.push(n))}),t}function cO(e,o){let t=[];return o.split(hc).forEach(r=>{e.forEach(a=>{t.push((a&&a+" ")+r)})}),t}function Sc(e){let o=[""];return e.forEach(t=>{t=t&&t.trim(),!!t&&(t.includes("&")?o=mO(o,t):o=cO(o,t))}),o.join(", ").replace(pO," ")}function Ts(e){if(!e)return;let o=e.parentElement;o&&o.removeChild(e)}function fa(e){return document.querySelector(`style[cssr-id="${e}"]`)}function gc(e){let o=document.createElement("style");return o.setAttribute("cssr-id",e),o}function Ml(e){return e?/^\s*@(s|m)/.test(e):!1}var xO=/[A-Z]/g;function wc(e){return e.replace(xO,o=>"-"+o.toLowerCase())}function hO(e,o=" "){return typeof e=="object"&&e!==null?` { +var MT=Object.create;var Cn=Object.defineProperty;var BT=Object.getOwnPropertyDescriptor;var LT=Object.getOwnPropertyNames;var ET=Object.getPrototypeOf,NT=Object.prototype.hasOwnProperty;var vp=e=>Cn(e,"__esModule",{value:!0});var Et=(e,o)=>()=>(o||e((o={exports:{}}).exports,o),o.exports),_T=(e,o)=>{vp(e);for(var t in o)Cn(e,t,{get:o[t],enumerable:!0})},IT=(e,o,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of LT(o))!NT.call(e,r)&&r!=="default"&&Cn(e,r,{get:()=>o[r],enumerable:!(t=BT(o,r))||t.enumerable});return e},Oa=e=>IT(vp(Cn(e!=null?MT(ET(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var $e=(e,o,t)=>new Promise((r,a)=>{var l=d=>{try{i(t.next(d))}catch(s){a(s)}},n=d=>{try{i(t.throw(d))}catch(s){a(s)}},i=d=>d.done?r(d.value):Promise.resolve(d.value).then(l,n);i((t=t.apply(e,o)).next())});var dS=Et((Ul,iS)=>{"use strict";Object.defineProperty(Ul,"__esModule",{value:!0});Ul.default=void 0;var Vv={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},zv=function(e,o,t){var r,a=Vv[e];return typeof a=="string"?r=a:o===1?r=a.one:r=a.other.replace("{{count}}",o.toString()),t!=null&&t.addSuffix?t.comparison&&t.comparison>0?"in "+r:r+" ago":r},jv=zv;Ul.default=jv;iS.exports=Ul.default});var uS=Et((Gi,sS)=>{"use strict";Object.defineProperty(Gi,"__esModule",{value:!0});Gi.default=$v;function $v(e){return function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=o.width?String(o.width):e.defaultWidth,r=e.formats[t]||e.formats[e.defaultWidth];return r}}sS.exports=Gi.default});var pS=Et((Kl,fS)=>{"use strict";Object.defineProperty(Kl,"__esModule",{value:!0});Kl.default=void 0;var Gs=Uv(uS());function Uv(e){return e&&e.__esModule?e:{default:e}}var Kv={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Gv={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},qv={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Qv={date:(0,Gs.default)({formats:Kv,defaultWidth:"full"}),time:(0,Gs.default)({formats:Gv,defaultWidth:"full"}),dateTime:(0,Gs.default)({formats:qv,defaultWidth:"full"})},Zv=Qv;Kl.default=Zv;fS.exports=Kl.default});var cS=Et((Gl,mS)=>{"use strict";Object.defineProperty(Gl,"__esModule",{value:!0});Gl.default=void 0;var Yv={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Xv=function(e,o,t,r){return Yv[e]},Jv=Xv;Gl.default=Jv;mS.exports=Gl.default});var hS=Et((qi,xS)=>{"use strict";Object.defineProperty(qi,"__esModule",{value:!0});qi.default=ek;function ek(e){return function(o,t){var r=t||{},a=r.context?String(r.context):"standalone",l;if(a==="formatting"&&e.formattingValues){var n=e.defaultFormattingWidth||e.defaultWidth,i=r.width?String(r.width):n;l=e.formattingValues[i]||e.formattingValues[n]}else{var d=e.defaultWidth,s=r.width?String(r.width):e.defaultWidth;l=e.values[s]||e.values[d]}var u=e.argumentCallback?e.argumentCallback(o):o;return l[u]}}xS.exports=qi.default});var gS=Et((Ql,SS)=>{"use strict";Object.defineProperty(Ql,"__esModule",{value:!0});Ql.default=void 0;var ql=ok(hS());function ok(e){return e&&e.__esModule?e:{default:e}}var tk={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},rk={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},ak={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},lk={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},nk={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},ik={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},dk=function(e,o){var t=Number(e),r=t%100;if(r>20||r<10)switch(r%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"},sk={ordinalNumber:dk,era:(0,ql.default)({values:tk,defaultWidth:"wide"}),quarter:(0,ql.default)({values:rk,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:(0,ql.default)({values:ak,defaultWidth:"wide"}),day:(0,ql.default)({values:lk,defaultWidth:"wide"}),dayPeriod:(0,ql.default)({values:nk,defaultWidth:"wide",formattingValues:ik,defaultFormattingWidth:"wide"})},uk=sk;Ql.default=uk;SS.exports=Ql.default});var TS=Et((Qi,wS)=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});Qi.default=fk;function fk(e){return function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.width,a=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],l=o.match(a);if(!l)return null;var n=l[0],i=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],d=Array.isArray(i)?mk(i,function(f){return f.test(n)}):pk(i,function(f){return f.test(n)}),s;s=e.valueCallback?e.valueCallback(d):d,s=t.valueCallback?t.valueCallback(s):s;var u=o.slice(n.length);return{value:s,rest:u}}}function pk(e,o){for(var t in e)if(e.hasOwnProperty(t)&&o(e[t]))return t}function mk(e,o){for(var t=0;t{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});Zi.default=ck;function ck(e){return function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=o.match(e.matchPattern);if(!r)return null;var a=r[0],l=o.match(e.parsePattern);if(!l)return null;var n=e.valueCallback?e.valueCallback(l[0]):l[0];n=t.valueCallback?t.valueCallback(n):n;var i=o.slice(a.length);return{value:n,rest:i}}}RS.exports=Zi.default});var bS=Et((Yl,CS)=>{"use strict";Object.defineProperty(Yl,"__esModule",{value:!0});Yl.default=void 0;var Zl=OS(TS()),xk=OS(FS());function OS(e){return e&&e.__esModule?e:{default:e}}var hk=/^(\d+)(th|st|nd|rd)?/i,Sk=/\d+/i,gk={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},wk={any:[/^b/i,/^(a|c)/i]},Tk={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Rk={any:[/1/i,/2/i,/3/i,/4/i]},Fk={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},Ok={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Ck={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},bk={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},yk={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},vk={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},kk={ordinalNumber:(0,xk.default)({matchPattern:hk,parsePattern:Sk,valueCallback:function(e){return parseInt(e,10)}}),era:(0,Zl.default)({matchPatterns:gk,defaultMatchWidth:"wide",parsePatterns:wk,defaultParseWidth:"any"}),quarter:(0,Zl.default)({matchPatterns:Tk,defaultMatchWidth:"wide",parsePatterns:Rk,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:(0,Zl.default)({matchPatterns:Fk,defaultMatchWidth:"wide",parsePatterns:Ok,defaultParseWidth:"any"}),day:(0,Zl.default)({matchPatterns:Ck,defaultMatchWidth:"wide",parsePatterns:bk,defaultParseWidth:"any"}),dayPeriod:(0,Zl.default)({matchPatterns:yk,defaultMatchWidth:"any",parsePatterns:vk,defaultParseWidth:"any"})},Ak=kk;Yl.default=Ak;CS.exports=Yl.default});var vS=Et((Jl,yS)=>{"use strict";Object.defineProperty(Jl,"__esModule",{value:!0});Jl.default=void 0;var Dk=Xl(dS()),Pk=Xl(pS()),Mk=Xl(cS()),Bk=Xl(gS()),Lk=Xl(bS());function Xl(e){return e&&e.__esModule?e:{default:e}}var Ek={code:"en-US",formatDistance:Dk.default,formatLong:Pk.default,formatRelative:Mk.default,localize:Bk.default,match:Lk.default,options:{weekStartsOn:0,firstWeekContainsDate:1}},Nk=Ek;Jl.default=Nk;yS.exports=Jl.default});_T(exports,{default:()=>ZP});var Kr=Oa(require("obsidian"));var rT=Oa(require("obsidian"));function Ca(e,o){let t=Object.create(null),r=e.split(",");for(let a=0;a!!t[a.toLowerCase()]:a=>!!t[a]}var XP={[1]:"TEXT",[2]:"CLASS",[4]:"STYLE",[8]:"PROPS",[16]:"FULL_PROPS",[32]:"HYDRATE_EVENTS",[64]:"STABLE_FRAGMENT",[128]:"KEYED_FRAGMENT",[256]:"UNKEYED_FRAGMENT",[512]:"NEED_PATCH",[1024]:"DYNAMIC_SLOTS",[2048]:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},JP={[1]:"STABLE",[2]:"DYNAMIC",[3]:"FORWARDED"};function Sr(e){if(Ae(e)){let o={};for(let t=0;t{if(t){let r=t.split(WT);r.length>1&&(o[r[0].trim()]=r[1].trim())}}),o}function Gr(e){let o="";if(Ro(e))o=e;else if(Ae(e))for(let t=0;tRo(e)?e:e==null?"":Ae(e)||ao(e)&&(e.toString===Mp||!Ee(e.toString))?JSON.stringify(e,Dp,2):String(e),Dp=(e,o)=>o&&o.__v_isRef?Dp(e,o.value):gr(o)?{[`Map(${o.size})`]:[...o.entries()].reduce((t,[r,a])=>(t[`${r} =>`]=a,t),{})}:yn(o)?{[`Set(${o.size})`]:[...o.values()]}:ao(o)&&!Ae(o)&&!Dd(o)?String(o):o,ro={},qr=[],nt=()=>{},Pp=()=>!1,jT=/^on[^a-z]/,ba=e=>jT.test(e),sl=e=>e.startsWith("onUpdate:"),Oo=Object.assign,bn=(e,o)=>{let t=e.indexOf(o);t>-1&&e.splice(t,1)},$T=Object.prototype.hasOwnProperty,je=(e,o)=>$T.call(e,o),Ae=Array.isArray,gr=e=>kn(e)==="[object Map]",yn=e=>kn(e)==="[object Set]";var Ee=e=>typeof e=="function",Ro=e=>typeof e=="string",vn=e=>typeof e=="symbol",ao=e=>e!==null&&typeof e=="object",kd=e=>ao(e)&&Ee(e.then)&&Ee(e.catch),Mp=Object.prototype.toString,kn=e=>Mp.call(e),Ad=e=>kn(e).slice(8,-1),Dd=e=>kn(e)==="[object Object]",An=e=>Ro(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ul=Ca(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");var Dn=e=>{let o=Object.create(null);return t=>o[t]||(o[t]=e(t))},UT=/-(\w)/g,Nt=Dn(e=>e.replace(UT,(o,t)=>t?t.toUpperCase():"")),KT=/\B([A-Z])/g,wr=Dn(e=>e.replace(KT,"-$1").toLowerCase()),fl=Dn(e=>e.charAt(0).toUpperCase()+e.slice(1)),pl=Dn(e=>e?`on${fl(e)}`:""),Qr=(e,o)=>!Object.is(e,o),ml=(e,o)=>{for(let t=0;t{Object.defineProperty(e,o,{configurable:!0,enumerable:!1,value:t})},va=e=>{let o=parseFloat(e);return isNaN(o)?e:o},Bp,Lp=()=>Bp||(Bp=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});var _t,Pn=class{constructor(o=!1){this.detached=o,this.active=!0,this.effects=[],this.cleanups=[],this.parent=_t,!o&&_t&&(this.index=(_t.scopes||(_t.scopes=[])).push(this)-1)}run(o){if(this.active){let t=_t;try{return _t=this,o()}finally{_t=t}}}on(){_t=this}off(){_t=this.parent}stop(o){if(this.active){let t,r;for(t=0,r=this.effects.length;t{let o=new Set(e);return o.w=0,o.n=0,o},Ep=e=>(e.w&Tr)>0,Np=e=>(e.n&Tr)>0,qT=({deps:e})=>{if(e.length)for(let o=0;o{let{deps:o}=e;if(o.length){let t=0;for(let r=0;r{(f==="length"||f>=s)&&i.push(u)})}else switch(t!==void 0&&i.push(n.get(t)),o){case"add":Ae(e)?An(t)&&i.push(n.get("length")):(i.push(n.get(Zr)),gr(e)&&i.push(n.get(Ld)));break;case"delete":Ae(e)||(i.push(n.get(Zr)),gr(e)&&i.push(n.get(Ld)));break;case"set":gr(e)&&i.push(n.get(Zr));break}let d=void 0;if(i.length===1)i[0]&&Ed(i[0]);else{let s=[];for(let u of i)u&&s.push(...u);Ed(Pd(s))}}function Ed(e,o){let t=Ae(e)?e:[...e];for(let r of t)r.computed&&Wp(r,o);for(let r of t)r.computed||Wp(r,o)}function Wp(e,o){(e!==yt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}var ZT=Ca("__proto__,__v_isRef,__isVue"),Vp=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(vn)),YT=Nd(),XT=Nd(!1,!0),JT=Nd(!0);var zp=eR();function eR(){let e={};return["includes","indexOf","lastIndexOf"].forEach(o=>{e[o]=function(...t){let r=Ie(this);for(let l=0,n=this.length;l{e[o]=function(...t){Fr();let r=Ie(this)[o].apply(this,t);return Or(),r}}),e}function Nd(e=!1,o=!1){return function(r,a,l){if(a==="__v_isReactive")return!e;if(a==="__v_isReadonly")return e;if(a==="__v_isShallow")return o;if(a==="__v_raw"&&l===(e?o?hR:Yp:o?Zp:Qp).get(r))return r;let n=Ae(r);if(!e&&n&&je(zp,a))return Reflect.get(zp,a,l);let i=Reflect.get(r,a,l);return(vn(a)?Vp.has(a):ZT(a))||(e||et(r,"get",a),o)?i:yo(i)?n&&An(a)?i:i.value:ao(i)?e?br(i):Ht(i):i}}var oR=jp(),tR=jp(!0);function jp(e=!1){return function(t,r,a,l){let n=t[r];if(vr(n)&&yo(n)&&!yo(a))return!1;if(!e&&(!Aa(a)&&!vr(a)&&(n=Ie(n),a=Ie(a)),!Ae(t)&&yo(n)&&!yo(a)))return n.value=a,!0;let i=Ae(t)&&An(r)?Number(r)e,Mn=e=>Reflect.getPrototypeOf(e);function Bn(e,o,t=!1,r=!1){e=e.__v_raw;let a=Ie(e),l=Ie(o);t||(o!==l&&et(a,"get",o),et(a,"get",l));let{has:n}=Mn(a),i=r?_d:t?Vd:xl;if(n.call(a,o))return i(e.get(o));if(n.call(a,l))return i(e.get(l));e!==a&&e.get(o)}function Ln(e,o=!1){let t=this.__v_raw,r=Ie(t),a=Ie(e);return o||(e!==a&&et(r,"has",e),et(r,"has",a)),e===a?t.has(e):t.has(e)||t.has(a)}function En(e,o=!1){return e=e.__v_raw,!o&&et(Ie(e),"iterate",Zr),Reflect.get(e,"size",e)}function Up(e){e=Ie(e);let o=Ie(this);return Mn(o).has.call(o,e)||(o.add(e),It(o,"add",e,e)),this}function Kp(e,o){o=Ie(o);let t=Ie(this),{has:r,get:a}=Mn(t),l=r.call(t,e);l||(e=Ie(e),l=r.call(t,e));let n=a.call(t,e);return t.set(e,o),l?Qr(o,n)&&It(t,"set",e,o,n):It(t,"add",e,o),this}function Gp(e){let o=Ie(this),{has:t,get:r}=Mn(o),a=t.call(o,e);a||(e=Ie(e),a=t.call(o,e));let l=r?r.call(o,e):void 0,n=o.delete(e);return a&&It(o,"delete",e,void 0,l),n}function qp(){let e=Ie(this),o=e.size!==0,t=void 0,r=e.clear();return o&&It(e,"clear",void 0,void 0,t),r}function Nn(e,o){return function(r,a){let l=this,n=l.__v_raw,i=Ie(n),d=o?_d:e?Vd:xl;return!e&&et(i,"iterate",Zr),n.forEach((s,u)=>r.call(a,d(s),d(u),l))}}function _n(e,o,t){return function(...r){let a=this.__v_raw,l=Ie(a),n=gr(l),i=e==="entries"||e===Symbol.iterator&&n,d=e==="keys"&&n,s=a[e](...r),u=t?_d:o?Vd:xl;return!o&&et(l,"iterate",d?Ld:Zr),{next(){let{value:f,done:c}=s.next();return c?{value:f,done:c}:{value:i?[u(f[0]),u(f[1])]:u(f),done:c}},[Symbol.iterator](){return this}}}}function Cr(e){return function(...o){return e==="delete"?!1:this}}function dR(){let e={get(l){return Bn(this,l)},get size(){return En(this)},has:Ln,add:Up,set:Kp,delete:Gp,clear:qp,forEach:Nn(!1,!1)},o={get(l){return Bn(this,l,!1,!0)},get size(){return En(this)},has:Ln,add:Up,set:Kp,delete:Gp,clear:qp,forEach:Nn(!1,!0)},t={get(l){return Bn(this,l,!0)},get size(){return En(this,!0)},has(l){return Ln.call(this,l,!0)},add:Cr("add"),set:Cr("set"),delete:Cr("delete"),clear:Cr("clear"),forEach:Nn(!0,!1)},r={get(l){return Bn(this,l,!0,!0)},get size(){return En(this,!0)},has(l){return Ln.call(this,l,!0)},add:Cr("add"),set:Cr("set"),delete:Cr("delete"),clear:Cr("clear"),forEach:Nn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(l=>{e[l]=_n(l,!1,!1),t[l]=_n(l,!0,!1),o[l]=_n(l,!1,!0),r[l]=_n(l,!0,!0)}),[e,t,o,r]}var[sR,uR,fR,pR]=dR();function Id(e,o){let t=o?e?pR:fR:e?uR:sR;return(r,a,l)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?r:Reflect.get(je(t,a)&&a in r?t:r,a,l)}var mR={get:Id(!1,!1)},cR={get:Id(!1,!0)},xR={get:Id(!0,!1)};var Qp=new WeakMap,Zp=new WeakMap,Yp=new WeakMap,hR=new WeakMap;function SR(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function gR(e){return e.__v_skip||!Object.isExtensible(e)?0:SR(Ad(e))}function Ht(e){return vr(e)?e:Wd(e,!1,$p,mR,Qp)}function Hd(e){return Wd(e,!1,iR,cR,Zp)}function br(e){return Wd(e,!0,nR,xR,Yp)}function Wd(e,o,t,r,a){if(!ao(e)||e.__v_raw&&!(o&&e.__v_isReactive))return e;let l=a.get(e);if(l)return l;let n=gR(e);if(n===0)return e;let i=new Proxy(e,n===2?r:t);return a.set(e,i),i}function yr(e){return vr(e)?yr(e.__v_raw):!!(e&&e.__v_isReactive)}function vr(e){return!!(e&&e.__v_isReadonly)}function Aa(e){return!!(e&&e.__v_isShallow)}function In(e){return yr(e)||vr(e)}function Ie(e){let o=e&&e.__v_raw;return o?Ie(o):e}function Yr(e){return ya(e,"__v_skip",!0),e}var xl=e=>ao(e)?Ht(e):e,Vd=e=>ao(e)?br(e):e;function Xp(e){Rr&&yt&&(e=Ie(e),Hp(e.dep||(e.dep=Pd())))}function Jp(e,o){e=Ie(e),e.dep&&Ed(e.dep)}function yo(e){return!!(e&&e.__v_isRef===!0)}function Z(e){return wR(e,!1)}function wR(e,o){return yo(e)?e:new em(e,o)}var em=class{constructor(o,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?o:Ie(o),this._value=t?o:xl(o)}get value(){return Xp(this),this._value}set value(o){let t=this.__v_isShallow||Aa(o)||vr(o);o=t?o:Ie(o),Qr(o,this._rawValue)&&(this._rawValue=o,this._value=t?o:xl(o),Jp(this,o))}};function ar(e){return yo(e)?e.value:e}var TR={get:(e,o,t)=>ar(Reflect.get(e,o,t)),set:(e,o,t,r)=>{let a=e[o];return yo(a)&&!yo(t)?(a.value=t,!0):Reflect.set(e,o,t,r)}};function Hn(e){return yr(e)?e:new Proxy(e,TR)}var om=class{constructor(o,t,r){this._object=o,this._key=t,this._defaultValue=r,this.__v_isRef=!0}get value(){let o=this._object[this._key];return o===void 0?this._defaultValue:o}set value(o){this._object[this._key]=o}};function De(e,o,t){let r=e[o];return yo(r)?r:new om(e,o,t)}var tm,rm=class{constructor(o,t,r,a){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[tm]=!1,this._dirty=!0,this.effect=new ka(o,()=>{this._dirty||(this._dirty=!0,Jp(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=r}get value(){let o=Ie(this);return Xp(o),(o._dirty||!o._cacheable)&&(o._dirty=!1,o._value=o.effect.run()),o._value}set value(o){this._setter(o)}};tm="__v_isReadonly";function am(e,o,t=!1){let r,a,l=Ee(e);return l?(r=e,a=nt):(r=e.get,a=e.set),new rm(r,a,l||!a,t)}var RR;RR="__v_isReadonly";var hl=[];function lm(e,...o){}function FR(){let e=hl[hl.length-1];if(!e)return[];let o=[];for(;e;){let t=o[0];t&&t.vnode===e?t.recurseCount++:o.push({vnode:e,recurseCount:0});let r=e.component&&e.component.parent;e=r&&r.vnode}return o}function OR(e){let o=[];return e.forEach((t,r)=>{o.push(...r===0?[]:[` +`],...CR(t))}),o}function CR({vnode:e,recurseCount:o}){let t=o>0?`... (${o} recursive calls)`:"",r=e.component?e.component.parent==null:!1,a=` at <${Km(e.component,e.type,r)}`,l=">"+t;return e.props?[a,...bR(e.props),l]:[a+l]}function bR(e){let o=[],t=Object.keys(e);return t.slice(0,3).forEach(r=>{o.push(...nm(r,e[r]))}),t.length>3&&o.push(" ..."),o}function nm(e,o,t){return Ro(o)?(o=JSON.stringify(o),t?o:[`${e}=${o}`]):typeof o=="number"||typeof o=="boolean"||o==null?t?o:[`${e}=${o}`]:yo(o)?(o=nm(e,Ie(o.value),!0),t?o:[`${e}=Ref<`,o,">"]):Ee(o)?[`${e}=fn${o.name?`<${o.name}>`:""}`]:(o=Ie(o),t?o:[`${e}=`,o])}var R0={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",[0]:"setup function",[1]:"render function",[2]:"watcher getter",[3]:"watcher callback",[4]:"watcher cleanup function",[5]:"native event handler",[6]:"component event handler",[7]:"vnode hook",[8]:"directive hook",[9]:"transition hook",[10]:"app errorHandler",[11]:"app warnHandler",[12]:"ref function",[13]:"async component loader",[14]:"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"};function lr(e,o,t,r){let a;try{a=r?e(...r):e()}catch(l){Wn(l,o,t)}return a}function it(e,o,t,r){if(Ee(e)){let l=lr(e,o,t,r);return l&&kd(l)&&l.catch(n=>{Wn(n,o,t)}),l}let a=[];for(let l=0;l>>1;gl(zo[r])Wt&&zo.splice(o,1)}function AR(e){Ae(e)?Da.push(...e):(!nr||!nr.includes(e,e.allowRecurse?Xr+1:Xr))&&Da.push(e),dm()}function sm(e,o=Sl?Wt+1:0){for(;ogl(t)-gl(r)),Xr=0;Xre.id==null?1/0:e.id,DR=(e,o)=>{let t=gl(e)-gl(o);if(t===0){if(e.pre&&!o.pre)return-1;if(o.pre&&!e.pre)return 1}return t};function fm(e){zd=!1,Sl=!0,zo.sort(DR);let o=nt;try{for(Wt=0;WtRo(p)?p.trim():p)),f&&(a=t.map(va))}let i,d=r[i=pl(o)]||r[i=pl(Nt(o))];!d&&l&&(d=r[i=pl(wr(o))]),d&&it(d,e,6,a);let s=r[i+"Once"];if(s){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,it(s,e,6,a)}}function pm(e,o,t=!1){let r=o.emitsCache,a=r.get(e);if(a!==void 0)return a;let l=e.emits,n={},i=!1;if(!Ee(e)){let d=s=>{let u=pm(s,o,!0);u&&(i=!0,Oo(n,u))};!t&&o.mixins.length&&o.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!l&&!i?(ao(e)&&r.set(e,null),null):(Ae(l)?l.forEach(d=>n[d]=null):Oo(n,l),ao(e)&&r.set(e,n),n)}function Vn(e,o){return!e||!ba(o)?!1:(o=o.slice(2).replace(/Once$/,""),je(e,o[0].toLowerCase()+o.slice(1))||je(e,wr(o))||je(e,o))}var jo=null,mm=null;function zn(e){let o=jo;return jo=e,mm=e&&e.type.__scopeId||null,o}function Jr(e,o=jo,t){if(!o||e._n)return e;let r=(...a)=>{r._d&&Im(-1);let l=zn(o),n;try{n=e(...a)}finally{zn(l),r._d&&Im(1)}return n};return r._n=!0,r._c=!0,r._d=!0,r}function Ud(e){let{type:o,vnode:t,proxy:r,withProxy:a,props:l,propsOptions:[n],slots:i,attrs:d,emit:s,render:u,renderCache:f,data:c,setupState:p,ctx:x,inheritAttrs:T}=e,C,S,D=zn(e);try{if(t.shapeFlag&4){let g=a||r;C=Vt(u.call(g,g,f,l,p,c,x)),S=d}else{let g=o;C=Vt(g.length>1?g(l,{attrs:d,slots:i,emit:s}):g(l,null)),S=o.props?d:MR(d)}}catch(g){Ol.length=0,Wn(g,e,1),C=mo($o)}let $=C,O;if(S&&T!==!1){let g=Object.keys(S),{shapeFlag:v}=$;g.length&&v&(1|6)&&(n&&g.some(sl)&&(S=BR(S,n)),$=Ar($,S))}return t.dirs&&($=Ar($),$.dirs=$.dirs?$.dirs.concat(t.dirs):t.dirs),t.transition&&($.transition=t.transition),C=$,zn(D),C}var MR=e=>{let o;for(let t in e)(t==="class"||t==="style"||ba(t))&&((o||(o={}))[t]=e[t]);return o},BR=(e,o)=>{let t={};for(let r in e)(!sl(r)||!(r.slice(9)in o))&&(t[r]=e[r]);return t};function LR(e,o,t){let{props:r,children:a,component:l}=e,{props:n,children:i,patchFlag:d}=o,s=l.emitsOptions;if(o.dirs||o.transition)return!0;if(t&&d>=0){if(d&1024)return!0;if(d&16)return r?cm(r,n,s):!!n;if(d&8){let u=o.dynamicProps;for(let f=0;fe.__isSuspense;function _R(e,o){o&&o.pendingBranch?Ae(e)?o.effects.push(...e):o.effects.push(e):AR(e)}function qo(e,o){if(Io){let t=Io.provides,r=Io.parent&&Io.parent.provides;r===t&&(t=Io.provides=Object.create(r)),t[e]=o}}function Te(e,o,t=!1){let r=Io||jo;if(r){let a=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(a&&e in a)return a[e];if(arguments.length>1)return t&&Ee(o)?o.call(r.proxy):o}}function Mo(e,o){return $n(e,null,o)}function xm(e,o){return $n(e,null,{flush:"post"})}var jn={};function Ze(e,o,t){return $n(e,o,t)}function $n(e,o,{immediate:t,deep:r,flush:a,onTrack:l,onTrigger:n}=ro){let i=O=>{lm("Invalid watch source: ",O,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},d=Io,s,u=!1,f=!1;if(yo(e)?(s=()=>e.value,u=Aa(e)):yr(e)?(s=()=>e,r=!0):Ae(e)?(f=!0,u=e.some(O=>yr(O)||Aa(O)),s=()=>e.map(O=>{if(yo(O))return O.value;if(yr(O))return ea(O);if(Ee(O))return lr(O,d,2)})):Ee(e)?o?s=()=>lr(e,d,2):s=()=>{if(!(d&&d.isUnmounted))return c&&c(),it(e,d,3,[p])}:s=nt,o&&r){let O=s;s=()=>ea(O())}let c,p=O=>{c=D.onStop=()=>{lr(O,d,4)}},x;if(vl)if(p=nt,o?t&&it(o,d,3,[s(),f?[]:void 0,p]):s(),a==="sync"){let O=vF();x=O.__watcherHandles||(O.__watcherHandles=[])}else return nt;let T=f?new Array(e.length).fill(jn):jn,C=()=>{if(!!D.active)if(o){let O=D.run();(r||u||(f?O.some((g,v)=>Qr(g,T[v])):Qr(O,T)))&&(c&&c(),it(o,d,3,[O,T===jn?void 0:f&&T[0]===jn?[]:T,p]),T=O)}else D.run()};C.allowRecurse=!!o;let S;a==="sync"?S=C:a==="post"?S=()=>ot(C,d&&d.suspense):(C.pre=!0,d&&(C.id=d.uid),S=()=>$d(C));let D=new ka(s,S);o?t?C():T=D.run():a==="post"?ot(D.run.bind(D),d&&d.suspense):D.run();let $=()=>{D.stop(),d&&d.scope&&bn(d.scope.effects,D)};return x&&x.push($),$}function IR(e,o,t){let r=this.proxy,a=Ro(e)?e.includes(".")?hm(r,e):()=>r[e]:e.bind(r,r),l;Ee(o)?l=o:(l=o.handler,t=o);let n=Io;_a(this);let i=$n(a,l.bind(r),t);return n?_a(n):na(),i}function hm(e,o){let t=o.split(".");return()=>{let r=e;for(let a=0;a{ea(t,o)});else if(Dd(e))for(let t in e)ea(e[t],o);return e}function Kd(){let e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return fo(()=>{e.isMounted=!0}),_o(()=>{e.isUnmounting=!0}),e}var xt=[Function,Array],HR={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:xt,onEnter:xt,onAfterEnter:xt,onEnterCancelled:xt,onBeforeLeave:xt,onLeave:xt,onAfterLeave:xt,onLeaveCancelled:xt,onBeforeAppear:xt,onAppear:xt,onAfterAppear:xt,onAppearCancelled:xt},setup(e,{slots:o}){let t=St(),r=Kd(),a;return()=>{let l=o.default&&Un(o.default(),!0);if(!l||!l.length)return;let n=l[0];if(l.length>1){let T=!1;for(let C of l)if(C.type!==$o){n=C,T=!0;break}}let i=Ie(e),{mode:d}=i;if(r.isLeaving)return qd(n);let s=gm(n);if(!s)return qd(n);let u=Pa(s,i,r,t);Ma(s,u);let f=t.subTree,c=f&&gm(f),p=!1,{getTransitionKey:x}=s.type;if(x){let T=x();a===void 0?a=T:T!==a&&(a=T,p=!0)}if(c&&c.type!==$o&&(!la(s,c)||p)){let T=Pa(c,i,r,t);if(Ma(c,T),d==="out-in")return r.isLeaving=!0,T.afterLeave=()=>{r.isLeaving=!1,t.update.active!==!1&&t.update()},qd(n);d==="in-out"&&s.type!==$o&&(T.delayLeave=(C,S,D)=>{let $=Sm(r,c);$[String(c.key)]=c,C._leaveCb=()=>{S(),C._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=D})}return n}}},Gd=HR;function Sm(e,o){let{leavingVNodes:t}=e,r=t.get(o.type);return r||(r=Object.create(null),t.set(o.type,r)),r}function Pa(e,o,t,r){let{appear:a,mode:l,persisted:n=!1,onBeforeEnter:i,onEnter:d,onAfterEnter:s,onEnterCancelled:u,onBeforeLeave:f,onLeave:c,onAfterLeave:p,onLeaveCancelled:x,onBeforeAppear:T,onAppear:C,onAfterAppear:S,onAppearCancelled:D}=o,$=String(e.key),O=Sm(t,e),g=(F,B)=>{F&&it(F,r,9,B)},v=(F,B)=>{let y=B[1];g(F,B),Ae(F)?F.every(W=>W.length<=1)&&y():F.length<=1&&y()},w={mode:l,persisted:n,beforeEnter(F){let B=i;if(!t.isMounted)if(a)B=T||i;else return;F._leaveCb&&F._leaveCb(!0);let y=O[$];y&&la(e,y)&&y.el._leaveCb&&y.el._leaveCb(),g(B,[F])},enter(F){let B=d,y=s,W=u;if(!t.isMounted)if(a)B=C||d,y=S||s,W=D||u;else return;let _=!1,ae=F._enterCb=he=>{_||(_=!0,he?g(W,[F]):g(y,[F]),w.delayedLeave&&w.delayedLeave(),F._enterCb=void 0)};B?v(B,[F,ae]):ae()},leave(F,B){let y=String(e.key);if(F._enterCb&&F._enterCb(!0),t.isUnmounting)return B();g(f,[F]);let W=!1,_=F._leaveCb=ae=>{W||(W=!0,B(),ae?g(x,[F]):g(p,[F]),F._leaveCb=void 0,O[y]===e&&delete O[y])};O[y]=e,c?v(c,[F,_]):_()},clone(F){return Pa(F,o,t,r)}};return w}function qd(e){if(Kn(e))return e=Ar(e),e.children=null,e}function gm(e){return Kn(e)?e.children?e.children[0]:void 0:e}function Ma(e,o){e.shapeFlag&6&&e.component?Ma(e.component.subTree,o):e.shapeFlag&128?(e.ssContent.transition=o.clone(e.ssContent),e.ssFallback.transition=o.clone(e.ssFallback)):e.transition=o}function Un(e,o=!1,t){let r=[],a=0;for(let l=0;l1)for(let l=0;l!!e.type.__asyncLoader;var Kn=e=>e.type.__isKeepAlive;function Qd(e,o){wm(e,"a",o)}function WR(e,o){wm(e,"da",o)}function wm(e,o,t=Io){let r=e.__wdc||(e.__wdc=()=>{let a=t;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(Gn(o,r,t),t){let a=t.parent;for(;a&&a.parent;)Kn(a.parent.vnode)&&VR(r,o,t,a),a=a.parent}}function VR(e,o,t,r){let a=Gn(o,e,r,!0);oa(()=>{bn(r[o],a)},t)}function Gn(e,o,t=Io,r=!1){if(t){let a=t[e]||(t[e]=[]),l=o.__weh||(o.__weh=(...n)=>{if(t.isUnmounted)return;Fr(),_a(t);let i=it(o,t,e,n);return na(),Or(),i});return r?a.unshift(l):a.push(l),l}}var ir=e=>(o,t=Io)=>(!vl||e==="sp")&&Gn(e,(...r)=>o(...r),t),dr=ir("bm"),fo=ir("m"),Zd=ir("bu"),Yd=ir("u"),_o=ir("bum"),oa=ir("um"),zR=ir("sp"),jR=ir("rtg"),$R=ir("rtc");function UR(e,o=Io){Gn("ec",e,o)}function qn(e,o){let t=jo;if(t===null)return e;let r=oi(t)||t.proxy,a=e.dirs||(e.dirs=[]);for(let l=0;lLa(o)?!(o.type===$o||o.type===Co&&!Tm(o.children)):!0)?e:null}var Xd=e=>e?Vm(e)?oi(e)||e.proxy:Xd(e.parent):null,Tl=Oo(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Xd(e.parent),$root:e=>Xd(e.root),$emit:e=>e.emit,$options:e=>os(e),$forceUpdate:e=>e.f||(e.f=()=>$d(e.update)),$nextTick:e=>e.n||(e.n=No.bind(e.proxy)),$watch:e=>IR.bind(e)});var Jd=(e,o)=>e!==ro&&!e.__isScriptSetup&&je(e,o),GR={get({_:e},o){let{ctx:t,setupState:r,data:a,props:l,accessCache:n,type:i,appContext:d}=e,s;if(o[0]!=="$"){let p=n[o];if(p!==void 0)switch(p){case 1:return r[o];case 2:return a[o];case 4:return t[o];case 3:return l[o]}else{if(Jd(r,o))return n[o]=1,r[o];if(a!==ro&&je(a,o))return n[o]=2,a[o];if((s=e.propsOptions[0])&&je(s,o))return n[o]=3,l[o];if(t!==ro&&je(t,o))return n[o]=4,t[o];es&&(n[o]=0)}}let u=Tl[o],f,c;if(u)return o==="$attrs"&&et(e,"get",o),u(e);if((f=i.__cssModules)&&(f=f[o]))return f;if(t!==ro&&je(t,o))return n[o]=4,t[o];if(c=d.config.globalProperties,je(c,o))return c[o]},set({_:e},o,t){let{data:r,setupState:a,ctx:l}=e;return Jd(a,o)?(a[o]=t,!0):r!==ro&&je(r,o)?(r[o]=t,!0):je(e.props,o)||o[0]==="$"&&o.slice(1)in e?!1:(l[o]=t,!0)},has({_:{data:e,setupState:o,accessCache:t,ctx:r,appContext:a,propsOptions:l}},n){let i;return!!t[n]||e!==ro&&je(e,n)||Jd(o,n)||(i=l[0])&&je(i,n)||je(r,n)||je(Tl,n)||je(a.config.globalProperties,n)},defineProperty(e,o,t){return t.get!=null?e._.accessCache[o]=0:je(t,"value")&&this.set(e,o,t.value,null),Reflect.defineProperty(e,o,t)}};var es=!0;function qR(e){let o=os(e),t=e.proxy,r=e.ctx;es=!1,o.beforeCreate&&Rm(o.beforeCreate,e,"bc");let{data:a,computed:l,methods:n,watch:i,provide:d,inject:s,created:u,beforeMount:f,mounted:c,beforeUpdate:p,updated:x,activated:T,deactivated:C,beforeDestroy:S,beforeUnmount:D,destroyed:$,unmounted:O,render:g,renderTracked:v,renderTriggered:w,errorCaptured:F,serverPrefetch:B,expose:y,inheritAttrs:W,components:_,directives:ae,filters:he}=o;if(s&&QR(s,r,null,e.appContext.config.unwrapInjectedRef),n)for(let ie in n){let ge=n[ie];Ee(ge)&&(r[ie]=ge.bind(t))}if(a){let ie=a.call(t,t);ao(ie)&&(e.data=Ht(ie))}if(es=!0,l)for(let ie in l){let ge=l[ie],Ve=Ee(ge)?ge.bind(t,t):Ee(ge.get)?ge.get.bind(t,t):nt,Ke=!Ee(ge)&&Ee(ge.set)?ge.set.bind(t):nt,He=V({get:Ve,set:Ke});Object.defineProperty(r,ie,{enumerable:!0,configurable:!0,get:()=>He.value,set:Xe=>He.value=Xe})}if(i)for(let ie in i)Fm(i[ie],r,t,ie);if(d){let ie=Ee(d)?d.call(t):d;Reflect.ownKeys(ie).forEach(ge=>{qo(ge,ie[ge])})}u&&Rm(u,e,"c");function de(ie,ge){Ae(ge)?ge.forEach(Ve=>ie(Ve.bind(t))):ge&&ie(ge.bind(t))}if(de(dr,f),de(fo,c),de(Zd,p),de(Yd,x),de(Qd,T),de(WR,C),de(UR,F),de($R,v),de(jR,w),de(_o,D),de(oa,O),de(zR,B),Ae(y))if(y.length){let ie=e.exposed||(e.exposed={});y.forEach(ge=>{Object.defineProperty(ie,ge,{get:()=>t[ge],set:Ve=>t[ge]=Ve})})}else e.exposed||(e.exposed={});g&&e.render===nt&&(e.render=g),W!=null&&(e.inheritAttrs=W),_&&(e.components=_),ae&&(e.directives=ae)}function QR(e,o,t=nt,r=!1){Ae(e)&&(e=ts(e));for(let a in e){let l=e[a],n;ao(l)?"default"in l?n=Te(l.from||a,l.default,!0):n=Te(l.from||a):n=Te(l),yo(n)&&r?Object.defineProperty(o,a,{enumerable:!0,configurable:!0,get:()=>n.value,set:i=>n.value=i}):o[a]=n}}function Rm(e,o,t){it(Ae(e)?e.map(r=>r.bind(o.proxy)):e.bind(o.proxy),o,t)}function Fm(e,o,t,r){let a=r.includes(".")?hm(t,r):()=>t[r];if(Ro(e)){let l=o[e];Ee(l)&&Ze(a,l)}else if(Ee(e))Ze(a,e.bind(t));else if(ao(e))if(Ae(e))e.forEach(l=>Fm(l,o,t,r));else{let l=Ee(e.handler)?e.handler.bind(t):o[e.handler];Ee(l)&&Ze(a,l,e)}}function os(e){let o=e.type,{mixins:t,extends:r}=o,{mixins:a,optionsCache:l,config:{optionMergeStrategies:n}}=e.appContext,i=l.get(o),d;return i?d=i:!a.length&&!t&&!r?d=o:(d={},a.length&&a.forEach(s=>Qn(d,s,n,!0)),Qn(d,o,n)),ao(o)&&l.set(o,d),d}function Qn(e,o,t,r=!1){let{mixins:a,extends:l}=o;l&&Qn(e,l,t,!0),a&&a.forEach(n=>Qn(e,n,t,!0));for(let n in o)if(!(r&&n==="expose")){let i=ZR[n]||t&&t[n];e[n]=i?i(e[n],o[n]):o[n]}return e}var ZR={data:Om,props:ra,emits:ra,methods:ra,computed:ra,beforeCreate:Qo,created:Qo,beforeMount:Qo,mounted:Qo,beforeUpdate:Qo,updated:Qo,beforeDestroy:Qo,beforeUnmount:Qo,destroyed:Qo,unmounted:Qo,activated:Qo,deactivated:Qo,errorCaptured:Qo,serverPrefetch:Qo,components:ra,directives:ra,watch:XR,provide:Om,inject:YR};function Om(e,o){return o?e?function(){return Oo(Ee(e)?e.call(this,this):e,Ee(o)?o.call(this,this):o)}:o:e}function YR(e,o){return ra(ts(e),ts(o))}function ts(e){if(Ae(e)){let o={};for(let t=0;t0)&&!(n&16)){if(n&8){let u=e.vnode.dynamicProps;for(let f=0;f{d=!0;let[c,p]=bm(f,o,!0);Oo(n,c),p&&i.push(...p)};!t&&o.mixins.length&&o.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!l&&!d)return ao(e)&&r.set(e,qr),qr;if(Ae(l))for(let u=0;u-1,p[1]=T<0||x-1||je(p,"default"))&&i.push(f)}}}let s=[n,i];return ao(e)&&r.set(e,s),s}function ym(e){return e[0]!=="$"}function vm(e){let o=e&&e.toString().match(/^\s*function (\w+)/);return o?o[1]:e===null?"null":""}function km(e,o){return vm(e)===vm(o)}function Am(e,o){return Ae(o)?o.findIndex(t=>km(t,e)):Ee(o)&&km(o,e)?0:-1}var Dm=e=>e[0]==="_"||e==="$stable",as=e=>Ae(e)?e.map(Vt):[Vt(e)],oF=(e,o,t)=>{if(o._n)return o;let r=Jr((...a)=>as(o(...a)),t);return r._c=!1,r},Pm=(e,o,t)=>{let r=e._ctx;for(let a in e){if(Dm(a))continue;let l=e[a];if(Ee(l))o[a]=oF(a,l,r);else if(l!=null){let n=as(l);o[a]=()=>n}}},Mm=(e,o)=>{let t=as(o);e.slots.default=()=>t},tF=(e,o)=>{if(e.vnode.shapeFlag&32){let t=o._;t?(e.slots=Ie(o),ya(o,"_",t)):Pm(o,e.slots={})}else e.slots={},o&&Mm(e,o);ya(e.slots,Xn,1)},rF=(e,o,t)=>{let{vnode:r,slots:a}=e,l=!0,n=ro;if(r.shapeFlag&32){let i=o._;i?t&&i===1?l=!1:(Oo(a,o),!t&&i===1&&delete a._):(l=!o.$stable,Pm(o,a)),n=o}else o&&(Mm(e,o),n={default:1});if(l)for(let i in a)!Dm(i)&&!(i in n)&&delete a[i]};function Bm(){return{app:null,config:{isNativeTag:Pp,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}var aF=0;function lF(e,o){return function(r,a=null){Ee(r)||(r=Object.assign({},r)),a!=null&&!ao(a)&&(a=null);let l=Bm(),n=new Set,i=!1,d=l.app={_uid:aF++,_component:r,_props:a,_container:null,_context:l,_instance:null,version:kF,get config(){return l.config},set config(s){},use(s,...u){return n.has(s)||(s&&Ee(s.install)?(n.add(s),s.install(d,...u)):Ee(s)&&(n.add(s),s(d,...u))),d},mixin(s){return l.mixins.includes(s)||l.mixins.push(s),d},component(s,u){return u?(l.components[s]=u,d):l.components[s]},directive(s,u){return u?(l.directives[s]=u,d):l.directives[s]},mount(s,u,f){if(!i){let c=mo(r,a);return c.appContext=l,u&&o?o(c,s):e(c,s,f),i=!0,d._container=s,s.__vue_app__=d,oi(c.component)||c.component.proxy}},unmount(){i&&(e(null,d._container),delete d._container.__vue_app__)},provide(s,u){return l.provides[s]=u,d}};return d}}function ls(e,o,t,r,a=!1){if(Ae(e)){e.forEach((c,p)=>ls(c,o&&(Ae(o)?o[p]:o),t,r,a));return}if(wl(r)&&!a)return;let l=r.shapeFlag&4?oi(r.component)||r.component.proxy:r.el,n=a?null:l,{i,r:d}=e,s=o&&o.r,u=i.refs===ro?i.refs={}:i.refs,f=i.setupState;if(s!=null&&s!==d&&(Ro(s)?(u[s]=null,je(f,s)&&(f[s]=null)):yo(s)&&(s.value=null)),Ee(d))lr(d,i,12,[n,u]);else{let c=Ro(d),p=yo(d);if(c||p){let x=()=>{if(e.f){let T=c?je(f,d)?f[d]:u[d]:d.value;a?Ae(T)&&bn(T,l):Ae(T)?T.includes(l)||T.push(l):c?(u[d]=[l],je(f,d)&&(f[d]=u[d])):(d.value=[l],e.k&&(u[e.k]=d.value))}else c?(u[d]=n,je(f,d)&&(f[d]=n)):p&&(d.value=n,e.k&&(u[e.k]=n))};n?(x.id=-1,ot(x,t)):x()}}}function nF(){let e=[]}var ot=_R;function Lm(e){return iF(e)}function iF(e,o){nF();let t=Lp();t.__VUE__=!0;let{insert:r,remove:a,patchProp:l,createElement:n,createText:i,createComment:d,setText:s,setElementText:u,parentNode:f,nextSibling:c,setScopeId:p=nt,insertStaticContent:x}=e,T=(m,h,k,E=null,I=null,j=null,U=!1,L=null,K=!!h.dynamicChildren)=>{if(m===h)return;m&&!la(m,h)&&(E=ho(m),Qe(m,I,j,!0),m=null),h.patchFlag===-2&&(K=!1,h.dynamicChildren=null);let{type:H,ref:b,shapeFlag:N}=h;switch(H){case Yn:C(m,h,k,E);break;case $o:S(m,h,k,E);break;case Fl:m==null&&D(h,k,E,U);break;case Co:ae(m,h,k,E,I,j,U,L,K);break;default:N&1?v(m,h,k,E,I,j,U,L,K):N&6?he(m,h,k,E,I,j,U,L,K):(N&64||N&128)&&H.process(m,h,k,E,I,j,U,L,K,qe)}b!=null&&I&&ls(b,m&&m.ref,j,h||m,!h)},C=(m,h,k,E)=>{if(m==null)r(h.el=i(h.children),k,E);else{let I=h.el=m.el;h.children!==m.children&&s(I,h.children)}},S=(m,h,k,E)=>{m==null?r(h.el=d(h.children||""),k,E):h.el=m.el},D=(m,h,k,E)=>{[m.el,m.anchor]=x(m.children,h,k,E,m.el,m.anchor)},$=(m,h,k,E)=>{if(h.children!==m.children){let I=c(m.anchor);g(m),[h.el,h.anchor]=x(h.children,k,I,E)}else h.el=m.el,h.anchor=m.anchor},O=({el:m,anchor:h},k,E)=>{let I;for(;m&&m!==h;)I=c(m),r(m,k,E),m=I;r(h,k,E)},g=({el:m,anchor:h})=>{let k;for(;m&&m!==h;)k=c(m),a(m),m=k;a(h)},v=(m,h,k,E,I,j,U,L,K)=>{U=U||h.type==="svg",m==null?w(h,k,E,I,j,U,L,K):y(m,h,I,j,U,L,K)},w=(m,h,k,E,I,j,U,L)=>{let K,H,{type:b,props:N,shapeFlag:z,transition:te,dirs:fe}=m;if(K=m.el=n(m.type,j,N&&N.is,N),z&8?u(K,m.children):z&16&&B(m.children,K,null,E,I,j&&b!=="foreignObject",U,L),fe&&ta(m,null,E,"created"),N){for(let ye in N)ye!=="value"&&!ul(ye)&&l(K,ye,null,N[ye],j,m.children,E,I,We);"value"in N&&l(K,"value",null,N.value),(H=N.onVnodeBeforeMount)&&zt(H,E,m)}F(K,m,m.scopeId,U,E),fe&&ta(m,null,E,"beforeMount");let Ce=(!I||I&&!I.pendingBranch)&&te&&!te.persisted;Ce&&te.beforeEnter(K),r(K,h,k),((H=N&&N.onVnodeMounted)||Ce||fe)&&ot(()=>{H&&zt(H,E,m),Ce&&te.enter(K),fe&&ta(m,null,E,"mounted")},I)},F=(m,h,k,E,I)=>{if(k&&p(m,k),E)for(let j=0;j{for(let H=K;H{let L=h.el=m.el,{patchFlag:K,dynamicChildren:H,dirs:b}=h;K|=m.patchFlag&16;let N=m.props||ro,z=h.props||ro,te;k&&aa(k,!1),(te=z.onVnodeBeforeUpdate)&&zt(te,k,h,m),b&&ta(h,m,k,"beforeUpdate"),k&&aa(k,!0);let fe=I&&h.type!=="foreignObject";if(H?W(m.dynamicChildren,H,L,k,E,fe,j):U||Ve(m,h,L,null,k,E,fe,j,!1),K>0){if(K&16)_(L,h,N,z,k,E,I);else if(K&2&&N.class!==z.class&&l(L,"class",null,z.class,I),K&4&&l(L,"style",N.style,z.style,I),K&8){let Ce=h.dynamicProps;for(let ye=0;ye{te&&zt(te,k,h,m),b&&ta(h,m,k,"updated")},E)},W=(m,h,k,E,I,j,U)=>{for(let L=0;L{if(k!==E){if(k!==ro)for(let L in k)!ul(L)&&!(L in E)&&l(m,L,k[L],null,U,h.children,I,j,We);for(let L in E){if(ul(L))continue;let K=E[L],H=k[L];K!==H&&L!=="value"&&l(m,L,H,K,U,h.children,I,j,We)}"value"in E&&l(m,"value",k.value,E.value)}},ae=(m,h,k,E,I,j,U,L,K)=>{let H=h.el=m?m.el:i(""),b=h.anchor=m?m.anchor:i(""),{patchFlag:N,dynamicChildren:z,slotScopeIds:te}=h;te&&(L=L?L.concat(te):te),m==null?(r(H,k,E),r(b,k,E),B(h.children,k,b,I,j,U,L,K)):N>0&&N&64&&z&&m.dynamicChildren?(W(m.dynamicChildren,z,k,I,j,U,L),(h.key!=null||I&&h===I.subTree)&&ns(m,h,!0)):Ve(m,h,k,b,I,j,U,L,K)},he=(m,h,k,E,I,j,U,L,K)=>{h.slotScopeIds=L,m==null?h.shapeFlag&512?I.ctx.activate(h,k,E,U,K):Me(h,k,E,I,j,U,K):de(m,h,K)},Me=(m,h,k,E,I,j,U)=>{let L=m.component=SF(m,E,I);if(Kn(m)&&(L.ctx.renderer=qe),gF(L),L.asyncDep){if(I&&I.registerDep(L,ie),!m.el){let K=L.subTree=mo($o);S(null,K,h,k)}return}ie(L,m,h,k,I,j,U)},de=(m,h,k)=>{let E=h.component=m.component;if(LR(m,h,k))if(E.asyncDep&&!E.asyncResolved){ge(E,h,k);return}else E.next=h,kR(E.update),E.update();else h.el=m.el,E.vnode=h},ie=(m,h,k,E,I,j,U)=>{let L=()=>{if(m.isMounted){let{next:b,bu:N,u:z,parent:te,vnode:fe}=m,Ce=b,ye;aa(m,!1),b?(b.el=fe.el,ge(m,b,U)):b=fe,N&&ml(N),(ye=b.props&&b.props.onVnodeBeforeUpdate)&&zt(ye,te,b,fe),aa(m,!0);let Le=Ud(m),Q=m.subTree;m.subTree=Le,T(Q,Le,f(Q.el),ho(Q),m,I,j),b.el=Le.el,Ce===null&&ER(m,Le.el),z&&ot(z,I),(ye=b.props&&b.props.onVnodeUpdated)&&ot(()=>zt(ye,te,b,fe),I)}else{let b,{el:N,props:z}=h,{bm:te,m:fe,parent:Ce}=m,ye=wl(h);if(aa(m,!1),te&&ml(te),!ye&&(b=z&&z.onVnodeBeforeMount)&&zt(b,Ce,h),aa(m,!0),N&&vo){let Le=()=>{m.subTree=Ud(m),vo(N,m.subTree,m,I,null)};ye?h.type.__asyncLoader().then(()=>!m.isUnmounted&&Le()):Le()}else{let Le=m.subTree=Ud(m);T(null,Le,k,E,m,I,j),h.el=Le.el}if(fe&&ot(fe,I),!ye&&(b=z&&z.onVnodeMounted)){let Le=h;ot(()=>zt(b,Ce,Le),I)}(h.shapeFlag&256||Ce&&wl(Ce.vnode)&&Ce.vnode.shapeFlag&256)&&m.a&&ot(m.a,I),m.isMounted=!0,h=k=E=null}},K=m.effect=new ka(L,()=>$d(H),m.scope),H=m.update=()=>K.run();H.id=m.uid,aa(m,!0),H()},ge=(m,h,k)=>{h.component=m;let E=m.vnode.props;m.vnode=h,m.next=null,eF(m,h.props,E,k),rF(m,h.children,k),Fr(),sm(),Or()},Ve=(m,h,k,E,I,j,U,L,K=!1)=>{let H=m&&m.children,b=m?m.shapeFlag:0,N=h.children,{patchFlag:z,shapeFlag:te}=h;if(z>0){if(z&128){He(H,N,k,E,I,j,U,L,K);return}else if(z&256){Ke(H,N,k,E,I,j,U,L,K);return}}te&8?(b&16&&We(H,I,j),N!==H&&u(k,N)):b&16?te&16?He(H,N,k,E,I,j,U,L,K):We(H,I,j,!0):(b&8&&u(k,""),te&16&&B(N,k,E,I,j,U,L,K))},Ke=(m,h,k,E,I,j,U,L,K)=>{m=m||qr,h=h||qr;let H=m.length,b=h.length,N=Math.min(H,b),z;for(z=0;zb?We(m,I,j,!0,!1,N):B(h,k,E,I,j,U,L,K,N)},He=(m,h,k,E,I,j,U,L,K)=>{let H=0,b=h.length,N=m.length-1,z=b-1;for(;H<=N&&H<=z;){let te=m[H],fe=h[H]=K?Dr(h[H]):Vt(h[H]);if(la(te,fe))T(te,fe,k,null,I,j,U,L,K);else break;H++}for(;H<=N&&H<=z;){let te=m[N],fe=h[z]=K?Dr(h[z]):Vt(h[z]);if(la(te,fe))T(te,fe,k,null,I,j,U,L,K);else break;N--,z--}if(H>N){if(H<=z){let te=z+1,fe=tez)for(;H<=N;)Qe(m[H],I,j,!0),H++;else{let te=H,fe=H,Ce=new Map;for(H=fe;H<=z;H++){let ze=h[H]=K?Dr(h[H]):Vt(h[H]);ze.key!=null&&Ce.set(ze.key,H)}let ye,Le=0,Q=z-fe+1,re=!1,Se=0,_e=new Array(Q);for(H=0;H=Q){Qe(ze,I,j,!0);continue}let eo;if(ze.key!=null)eo=Ce.get(ze.key);else for(ye=fe;ye<=z;ye++)if(_e[ye-fe]===0&&la(ze,h[ye])){eo=ye;break}eo===void 0?Qe(ze,I,j,!0):(_e[eo-fe]=H+1,eo>=Se?Se=eo:re=!0,T(ze,h[eo],k,null,I,j,U,L,K),Le++)}let Je=re?dF(_e):qr;for(ye=Je.length-1,H=Q-1;H>=0;H--){let ze=fe+H,eo=h[ze],Ge=ze+1{let{el:j,type:U,transition:L,children:K,shapeFlag:H}=m;if(H&6){Xe(m.component.subTree,h,k,E);return}if(H&128){m.suspense.move(h,k,E);return}if(H&64){U.move(m,h,k,qe);return}if(U===Co){r(j,h,k);for(let N=0;NL.enter(j),I);else{let{leave:N,delayLeave:z,afterLeave:te}=L,fe=()=>r(j,h,k),Ce=()=>{N(j,()=>{fe(),te&&te()})};z?z(j,fe,Ce):Ce()}else r(j,h,k)},Qe=(m,h,k,E=!1,I=!1)=>{let{type:j,props:U,ref:L,children:K,dynamicChildren:H,shapeFlag:b,patchFlag:N,dirs:z}=m;if(L!=null&&ls(L,null,k,m,!0),b&256){h.ctx.deactivate(m);return}let te=b&1&&z,fe=!wl(m),Ce;if(fe&&(Ce=U&&U.onVnodeBeforeUnmount)&&zt(Ce,h,m),b&6)Be(m.component,k,E);else{if(b&128){m.suspense.unmount(k,E);return}te&&ta(m,null,h,"beforeUnmount"),b&64?m.type.remove(m,h,k,I,qe,E):H&&(j!==Co||N>0&&N&64)?We(H,h,k,!1,!0):(j===Co&&N&(128|256)||!I&&b&16)&&We(K,h,k),E&&wo(m)}(fe&&(Ce=U&&U.onVnodeUnmounted)||te)&&ot(()=>{Ce&&zt(Ce,h,m),te&&ta(m,null,h,"unmounted")},k)},wo=m=>{let{type:h,el:k,anchor:E,transition:I}=m;if(h===Co){Do(k,E);return}if(h===Fl){g(m);return}let j=()=>{a(k),I&&!I.persisted&&I.afterLeave&&I.afterLeave()};if(m.shapeFlag&1&&I&&!I.persisted){let{leave:U,delayLeave:L}=I,K=()=>U(k,j);L?L(m.el,j,K):K()}else j()},Do=(m,h)=>{let k;for(;m!==h;)k=c(m),a(m),m=k;a(h)},Be=(m,h,k)=>{let{bum:E,scope:I,update:j,subTree:U,um:L}=m;E&&ml(E),I.stop(),j&&(j.active=!1,Qe(U,m,h,k)),L&&ot(L,h),ot(()=>{m.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&m.asyncDep&&!m.asyncResolved&&m.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},We=(m,h,k,E=!1,I=!1,j=0)=>{for(let U=j;Um.shapeFlag&6?ho(m.component.subTree):m.shapeFlag&128?m.suspense.next():c(m.anchor||m.el),we=(m,h,k)=>{m==null?h._vnode&&Qe(h._vnode,null,null,!0):T(h._vnode||null,m,h,null,null,null,k),sm(),um(),h._vnode=m},qe={p:T,um:Qe,m:Xe,r:wo,mt:Me,mc:B,pc:Ve,pbc:W,n:ho,o:e},to,vo;return o&&([to,vo]=o(qe)),{render:we,hydrate:to,createApp:lF(we,to)}}function aa({effect:e,update:o},t){e.allowRecurse=o.allowRecurse=t}function ns(e,o,t=!1){let r=e.children,a=o.children;if(Ae(r)&&Ae(a))for(let l=0;l>1,e[t[i]]0&&(o[r]=t[l-1]),t[l]=r)}}for(l=t.length,n=t[l-1];l-- >0;)t[l]=n,n=o[n];return t}var sF=e=>e.__isTeleport,Rl=e=>e&&(e.disabled||e.disabled===""),Em=e=>typeof SVGElement!="undefined"&&e instanceof SVGElement,is=(e,o)=>{let t=e&&e.to;if(Ro(t))if(o){let r=o(t);return r}else return null;else return t},uF={__isTeleport:!0,process(e,o,t,r,a,l,n,i,d,s){let{mc:u,pc:f,pbc:c,o:{insert:p,querySelector:x,createText:T,createComment:C}}=s,S=Rl(o.props),{shapeFlag:D,children:$,dynamicChildren:O}=o;if(e==null){let g=o.el=T(""),v=o.anchor=T("");p(g,t,r),p(v,t,r);let w=o.target=is(o.props,x),F=o.targetAnchor=T("");w&&(p(F,w),n=n||Em(w));let B=(y,W)=>{D&16&&u($,y,W,a,l,n,i,d)};S?B(t,v):w&&B(w,F)}else{o.el=e.el;let g=o.anchor=e.anchor,v=o.target=e.target,w=o.targetAnchor=e.targetAnchor,F=Rl(e.props),B=F?t:v,y=F?g:w;if(n=n||Em(v),O?(c(e.dynamicChildren,O,B,a,l,n,i),ns(e,o,!0)):d||f(e,o,B,y,a,l,n,i,!1),S)F||Zn(o,t,g,s,1);else if((o.props&&o.props.to)!==(e.props&&e.props.to)){let W=o.target=is(o.props,x);W&&Zn(o,W,null,s,0)}else F&&Zn(o,v,w,s,1)}_m(o)},remove(e,o,t,r,{um:a,o:{remove:l}},n){let{shapeFlag:i,children:d,anchor:s,targetAnchor:u,target:f,props:c}=e;if(f&&l(u),(n||!Rl(c))&&(l(s),i&16))for(let p=0;p0?vt||qr:null,pF(),Cl>0&&vt&&vt.push(e),e}function kr(e,o,t,r,a,l){return Hm(Ea(e,o,t,r,a,l,!0))}function bl(e,o,t,r,a){return Hm(mo(e,o,t,r,a,!0))}function La(e){return e?e.__v_isVNode===!0:!1}function la(e,o){return e.type===o.type&&e.key===o.key}var Xn="__vInternal",Wm=({key:e})=>e!=null?e:null,Jn=({ref:e,ref_key:o,ref_for:t})=>e!=null?Ro(e)||yo(e)||Ee(e)?{i:jo,r:e,k:o,f:!!t}:e:null;function Ea(e,o=null,t=null,r=0,a=null,l=e===Co?0:1,n=!1,i=!1){let d={__v_isVNode:!0,__v_skip:!0,type:e,props:o,key:o&&Wm(o),ref:o&&Jn(o),scopeId:mm,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:r,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:jo};return i?(ds(d,t),l&128&&e.normalize(d)):t&&(d.shapeFlag|=Ro(t)?8:16),Cl>0&&!n&&vt&&(d.patchFlag>0||l&6)&&d.patchFlag!==32&&vt.push(d),d}var mo=mF;function mF(e,o=null,t=null,r=0,a=null,l=!1){if((!e||e===KR)&&(e=$o),La(e)){let i=Ar(e,o,!0);return t&&ds(i,t),Cl>0&&!l&&vt&&(i.shapeFlag&6?vt[vt.indexOf(e)]=i:vt.push(i)),i.patchFlag|=-2,i}if(bF(e)&&(e=e.__vccOpts),o){o=cF(o);let{class:i,style:d}=o;i&&!Ro(i)&&(o.class=Gr(i)),ao(d)&&(In(d)&&!Ae(d)&&(d=Oo({},d)),o.style=Sr(d))}let n=Ro(e)?1:NR(e)?128:sF(e)?64:ao(e)?4:Ee(e)?2:0;return Ea(e,o,t,r,a,n,l,!0)}function cF(e){return e?In(e)||Xn in e?Oo({},e):e:null}function Ar(e,o,t=!1){let{props:r,ref:a,patchFlag:l,children:n}=e,i=o?yl(r||{},o):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:i,key:i&&Wm(i),ref:o&&o.ref?t&&a?Ae(a)?a.concat(Jn(o)):[a,Jn(o)]:Jn(o):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:n,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:o&&e.type!==Co?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ar(e.ssContent),ssFallback:e.ssFallback&&Ar(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx}}function Na(e=" ",o=0){return mo(Yn,null,e,o)}function ei(e="",o=!1){return o?(ht(),bl($o,null,e)):mo($o,null,e)}function Vt(e){return e==null||typeof e=="boolean"?mo($o):Ae(e)?mo(Co,null,e.slice()):typeof e=="object"?Dr(e):mo(Yn,null,String(e))}function Dr(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ar(e)}function ds(e,o){let t=0,{shapeFlag:r}=e;if(o==null)o=null;else if(Ae(o))t=16;else if(typeof o=="object")if(r&(1|64)){let a=o.default;a&&(a._c&&(a._d=!1),ds(e,a()),a._c&&(a._d=!0));return}else{t=32;let a=o._;!a&&!(Xn in o)?o._ctx=jo:a===3&&jo&&(jo.slots._===1?o._=1:(o._=2,e.patchFlag|=1024))}else Ee(o)?(o={default:o,_ctx:jo},t=32):(o=String(o),r&64?(t=16,o=[Na(o)]):t=8);e.children=o,e.shapeFlag|=t}function yl(...e){let o={};for(let t=0;tIo||jo,_a=e=>{Io=e,e.scope.on()},na=()=>{Io&&Io.scope.off(),Io=null};function Vm(e){return e.vnode.shapeFlag&4}var vl=!1;function gF(e,o=!1){vl=o;let{props:t,children:r}=e.vnode,a=Vm(e);JR(e,t,a,o),tF(e,r);let l=a?wF(e,o):void 0;return vl=!1,l}function wF(e,o){var t;let r=e.type;e.accessCache=Object.create(null),e.proxy=Yr(new Proxy(e.ctx,GR));let{setup:a}=r;if(a){let l=e.setupContext=a.length>1?RF(e):null;_a(e),Fr();let n=lr(a,e,0,[e.props,l]);if(Or(),na(),kd(n)){if(n.then(na,na),o)return n.then(i=>{zm(e,i,o)}).catch(i=>{Wn(i,e,0)});e.asyncDep=n}else zm(e,n,o)}else Um(e,o)}function zm(e,o,t){Ee(o)?e.type.__ssrInlineRender?e.ssrRender=o:e.render=o:ao(o)&&(e.setupState=Hn(o)),Um(e,t)}var jm,$m;function Um(e,o,t){let r=e.type;if(!e.render){if(!o&&jm&&!r.render){let a=r.template||os(e).template;if(a){let{isCustomElement:l,compilerOptions:n}=e.appContext.config,{delimiters:i,compilerOptions:d}=r,s=Oo(Oo({isCustomElement:l,delimiters:i},n),d);r.render=jm(a,s)}}e.render=r.render||nt,$m&&$m(e)}_a(e),Fr(),qR(e),Or(),na()}function TF(e){return new Proxy(e.attrs,{get(o,t){return et(e,"get","$attrs"),o[t]}})}function RF(e){let o=r=>{e.exposed=r||{}},t;return{get attrs(){return t||(t=TF(e))},slots:e.slots,emit:e.emit,expose:o}}function oi(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Hn(Yr(e.exposed)),{get(o,t){if(t in o)return o[t];if(t in Tl)return Tl[t](e)},has(o,t){return t in o||t in Tl}}))}var FF=/(?:^|[-_])(\w)/g,OF=e=>e.replace(FF,o=>o.toUpperCase()).replace(/[-_]/g,"");function CF(e,o=!0){return Ee(e)?e.displayName||e.name:e.name||o&&e.__name}function Km(e,o,t=!1){let r=CF(o);if(!r&&o.__file){let a=o.__file.match(/([^/\\]+)\.\w+$/);a&&(r=a[1])}if(!r&&e&&e.parent){let a=l=>{for(let n in l)if(l[n]===o)return n};r=a(e.components||e.parent.type.components)||a(e.appContext.components)}return r?OF(r):t?"App":"Anonymous"}function bF(e){return Ee(e)&&"__vccOpts"in e}var V=(e,o)=>am(e,o,vl);function R(e,o,t){let r=arguments.length;return r===2?ao(o)&&!Ae(o)?La(o)?mo(e,null,[o]):mo(e,o):mo(e,null,o):(r>3?t=Array.prototype.slice.call(arguments,2):r===3&&La(t)&&(t=[t]),mo(e,o,t))}var yF=Symbol(""),vF=()=>{{let e=Te(yF);return e}};var kF="3.2.45";var AF="http://www.w3.org/2000/svg",ia=typeof document!="undefined"?document:null,Gm=ia&&ia.createElement("template"),DF={insert:(e,o,t)=>{o.insertBefore(e,t||null)},remove:e=>{let o=e.parentNode;o&&o.removeChild(e)},createElement:(e,o,t,r)=>{let a=o?ia.createElementNS(AF,e):ia.createElement(e,t?{is:t}:void 0);return e==="select"&&r&&r.multiple!=null&&a.setAttribute("multiple",r.multiple),a},createText:e=>ia.createTextNode(e),createComment:e=>ia.createComment(e),setText:(e,o)=>{e.nodeValue=o},setElementText:(e,o)=>{e.textContent=o},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ia.querySelector(e),setScopeId(e,o){e.setAttribute(o,"")},insertStaticContent(e,o,t,r,a,l){let n=t?t.previousSibling:o.lastChild;if(a&&(a===l||a.nextSibling))for(;o.insertBefore(a.cloneNode(!0),t),!(a===l||!(a=a.nextSibling)););else{Gm.innerHTML=r?`${e}`:e;let i=Gm.content;if(r){let d=i.firstChild;for(;d.firstChild;)i.appendChild(d.firstChild);i.removeChild(d)}o.insertBefore(i,t)}return[n?n.nextSibling:o.firstChild,t?t.previousSibling:o.lastChild]}};function PF(e,o,t){let r=e._vtc;r&&(o=(o?[o,...r]:[...r]).join(" ")),o==null?e.removeAttribute("class"):t?e.setAttribute("class",o):e.className=o}function MF(e,o,t){let r=e.style,a=Ro(t);if(t&&!a){for(let l in t)ss(r,l,t[l]);if(o&&!Ro(o))for(let l in o)t[l]==null&&ss(r,l,"")}else{let l=r.display;a?o!==t&&(r.cssText=t):o&&e.removeAttribute("style"),"_vod"in e&&(r.display=l)}}var qm=/\s*!important$/;function ss(e,o,t){if(Ae(t))t.forEach(r=>ss(e,o,r));else if(t==null&&(t=""),o.startsWith("--"))e.setProperty(o,t);else{let r=BF(e,o);qm.test(t)?e.setProperty(wr(r),t.replace(qm,""),"important"):e[r]=t}}var Qm=["Webkit","Moz","ms"],us={};function BF(e,o){let t=us[o];if(t)return t;let r=Nt(o);if(r!=="filter"&&r in e)return us[o]=r;r=fl(r);for(let a=0;afs||(WF.then(()=>fs=0),fs=Date.now());function zF(e,o){let t=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=t.attached)return;it(jF(r,t.value),o,5,[r])};return t.value=e,t.attached=VF(),t}function jF(e,o){if(Ae(o)){let t=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{t.call(e),e._stopped=!0},o.map(r=>a=>!a._stopped&&r&&r(a))}else return o}var Xm=/^on[a-z]/,$F=(e,o,t,r,a=!1,l,n,i,d)=>{o==="class"?PF(e,r,a):o==="style"?MF(e,t,r):ba(o)?sl(o)||IF(e,o,t,r,n):(o[0]==="."?(o=o.slice(1),!0):o[0]==="^"?(o=o.slice(1),!1):UF(e,o,r,a))?EF(e,o,r,l,n,i,d):(o==="true-value"?e._trueValue=r:o==="false-value"&&(e._falseValue=r),LF(e,o,r,a))};function UF(e,o,t,r){return r?!!(o==="innerHTML"||o==="textContent"||o in e&&Xm.test(o)&&Ee(t)):o==="spellcheck"||o==="draggable"||o==="translate"||o==="form"||o==="list"&&e.tagName==="INPUT"||o==="type"&&e.tagName==="TEXTAREA"||Xm.test(o)&&Ro(t)?!1:o in e}function Jm(e){let o=St();if(!o)return;let t=o.ut=(a=e(o.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${o.uid}"]`)).forEach(l=>ms(l,a))},r=()=>{let a=e(o.proxy);ps(o.subTree,a),t(a)};xm(r),fo(()=>{let a=new MutationObserver(r);a.observe(o.subTree.el.parentNode,{childList:!0}),oa(()=>a.disconnect())})}function ps(e,o){if(e.shapeFlag&128){let t=e.suspense;e=t.activeBranch,t.pendingBranch&&!t.isHydrating&&t.effects.push(()=>{ps(t.activeBranch,o)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)ms(e.el,o);else if(e.type===Co)e.children.forEach(t=>ps(t,o));else if(e.type===Fl){let{el:t,anchor:r}=e;for(;t&&(ms(t,o),t!==r);)t=t.nextSibling}}function ms(e,o){if(e.nodeType===1){let t=e.style;for(let r in o)t.setProperty(`--${r}`,o[r])}}var Pr="transition",kl="animation",kt=(e,{slots:o})=>R(Gd,tc(e),o);kt.displayName="Transition";var ec={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},KF=kt.props=Oo({},Gd.props,ec),da=(e,o=[])=>{Ae(e)?e.forEach(t=>t(...o)):e&&e(...o)},oc=e=>e?Ae(e)?e.some(o=>o.length>1):e.length>1:!1;function tc(e){let o={};for(let _ in e)_ in ec||(o[_]=e[_]);if(e.css===!1)return o;let{name:t="v",type:r,duration:a,enterFromClass:l=`${t}-enter-from`,enterActiveClass:n=`${t}-enter-active`,enterToClass:i=`${t}-enter-to`,appearFromClass:d=l,appearActiveClass:s=n,appearToClass:u=i,leaveFromClass:f=`${t}-leave-from`,leaveActiveClass:c=`${t}-leave-active`,leaveToClass:p=`${t}-leave-to`}=e,x=GF(a),T=x&&x[0],C=x&&x[1],{onBeforeEnter:S,onEnter:D,onEnterCancelled:$,onLeave:O,onLeaveCancelled:g,onBeforeAppear:v=S,onAppear:w=D,onAppearCancelled:F=$}=o,B=(_,ae,he)=>{Mr(_,ae?u:i),Mr(_,ae?s:n),he&&he()},y=(_,ae)=>{_._isLeaving=!1,Mr(_,f),Mr(_,p),Mr(_,c),ae&&ae()},W=_=>(ae,he)=>{let Me=_?w:D,de=()=>B(ae,_,he);da(Me,[ae,de]),rc(()=>{Mr(ae,_?d:l),sr(ae,_?u:i),oc(Me)||ac(ae,r,T,de)})};return Oo(o,{onBeforeEnter(_){da(S,[_]),sr(_,l),sr(_,n)},onBeforeAppear(_){da(v,[_]),sr(_,d),sr(_,s)},onEnter:W(!1),onAppear:W(!0),onLeave(_,ae){_._isLeaving=!0;let he=()=>y(_,ae);sr(_,f),dc(),sr(_,c),rc(()=>{!_._isLeaving||(Mr(_,f),sr(_,p),oc(O)||ac(_,r,C,he))}),da(O,[_,he])},onEnterCancelled(_){B(_,!1),da($,[_])},onAppearCancelled(_){B(_,!0),da(F,[_])},onLeaveCancelled(_){y(_),da(g,[_])}})}function GF(e){if(e==null)return null;if(ao(e))return[cs(e.enter),cs(e.leave)];{let o=cs(e);return[o,o]}}function cs(e){return va(e)}function sr(e,o){o.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e._vtc||(e._vtc=new Set)).add(o)}function Mr(e,o){o.split(/\s+/).forEach(r=>r&&e.classList.remove(r));let{_vtc:t}=e;t&&(t.delete(o),t.size||(e._vtc=void 0))}function rc(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var qF=0;function ac(e,o,t,r){let a=e._endId=++qF,l=()=>{a===e._endId&&r()};if(t)return setTimeout(l,t);let{type:n,timeout:i,propCount:d}=lc(e,o);if(!n)return r();let s=n+"end",u=0,f=()=>{e.removeEventListener(s,c),l()},c=p=>{p.target===e&&++u>=d&&f()};setTimeout(()=>{u(t[x]||"").split(", "),a=r(`${Pr}Delay`),l=r(`${Pr}Duration`),n=nc(a,l),i=r(`${kl}Delay`),d=r(`${kl}Duration`),s=nc(i,d),u=null,f=0,c=0;o===Pr?n>0&&(u=Pr,f=n,c=l.length):o===kl?s>0&&(u=kl,f=s,c=d.length):(f=Math.max(n,s),u=f>0?n>s?Pr:kl:null,c=u?u===Pr?l.length:d.length:0);let p=u===Pr&&/\b(transform|all)(,|$)/.test(r(`${Pr}Property`).toString());return{type:u,timeout:f,propCount:c,hasTransform:p}}function nc(e,o){for(;e.lengthic(t)+ic(e[r])))}function ic(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function dc(){return document.body.offsetHeight}var sc=new WeakMap,uc=new WeakMap,QF={name:"TransitionGroup",props:Oo({},KF,{tag:String,moveClass:String}),setup(e,{slots:o}){let t=St(),r=Kd(),a,l;return Yd(()=>{if(!a.length)return;let n=e.moveClass||`${e.name||"v"}-move`;if(!JF(a[0].el,t.vnode.el,n))return;a.forEach(ZF),a.forEach(YF);let i=a.filter(XF);dc(),i.forEach(d=>{let s=d.el,u=s.style;sr(s,n),u.transform=u.webkitTransform=u.transitionDuration="";let f=s._moveCb=c=>{c&&c.target!==s||(!c||/transform$/.test(c.propertyName))&&(s.removeEventListener("transitionend",f),s._moveCb=null,Mr(s,n))};s.addEventListener("transitionend",f)})}),()=>{let n=Ie(e),i=tc(n),d=n.tag||Co;a=l,l=o.default?Un(o.default()):[];for(let s=0;s{n.split(/\s+/).forEach(i=>i&&r.classList.remove(i))}),t.split(/\s+/).forEach(n=>n&&r.classList.add(n)),r.style.display="none";let a=o.nodeType===1?o:o.parentNode;a.appendChild(r);let{hasTransform:l}=lc(r);return a.removeChild(r),l}var eO=Oo({patchProp:$F},DF),pc;function oO(){return pc||(pc=Lm(eO))}var mc=(...e)=>{let o=oO().createApp(...e),{mount:t}=o;return o.mount=r=>{let a=tO(r);if(!a)return;let l=o._component;!Ee(l)&&!l.render&&!l.template&&(l.template=a.innerHTML),a.innerHTML="";let n=t(a,!1,a instanceof SVGElement);return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),n},o};function tO(e){return Ro(e)?document.querySelector(e):e}var Od=Oa(require("obsidian"));var ti=[],cc=new WeakMap;function rO(){ti.forEach(e=>e(...cc.get(e))),ti=[]}function Al(e,...o){cc.set(e,o),!ti.includes(e)&&ti.push(e)===1&&requestAnimationFrame(rO)}function ri(e,o){let{target:t}=e;for(;t;){if(t.dataset&&t.dataset[o]!==void 0)return!0;t=t.parentElement}return!1}function ai(e){return typeof e=="string"?e.endsWith("px")?Number(e.slice(0,e.length-2)):Number(e):e}function Br(e){if(e!=null)return typeof e=="number"?`${e}px`:e.endsWith("px")?e:`${e}px`}function Ia(e,o){let t=e.trim().split(/\s+/g),r={top:t[0]};switch(t.length){case 1:r.right=t[0],r.bottom=t[0],r.left=t[0];break;case 2:r.right=t[1],r.left=t[1],r.bottom=t[0];break;case 3:r.right=t[1],r.bottom=t[2],r.left=t[1];break;case 4:r.right=t[1],r.bottom=t[2],r.left=t[3];break;default:throw new Error("[seemly/getMargin]:"+e+" is not a valid value.")}return o===void 0?r:r[o]}var xs={black:"#000",silver:"#C0C0C0",gray:"#808080",white:"#FFF",maroon:"#800000",red:"#F00",purple:"#800080",fuchsia:"#F0F",green:"#008000",lime:"#0F0",olive:"#808000",yellow:"#FF0",navy:"#000080",blue:"#00F",teal:"#008080",aqua:"#0FF",transparent:"#0000"};var jt="^\\s*",$t="\\s*$",Lr="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))%\\s*",dt="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))\\s*",sa="([0-9A-Fa-f])",ua="([0-9A-Fa-f]{2})",$0=new RegExp(`${jt}hsl\\s*\\(${dt},${Lr},${Lr}\\)${$t}`),U0=new RegExp(`${jt}hsv\\s*\\(${dt},${Lr},${Lr}\\)${$t}`),K0=new RegExp(`${jt}hsla\\s*\\(${dt},${Lr},${Lr},${dt}\\)${$t}`),G0=new RegExp(`${jt}hsva\\s*\\(${dt},${Lr},${Lr},${dt}\\)${$t}`),aO=new RegExp(`${jt}rgb\\s*\\(${dt},${dt},${dt}\\)${$t}`),lO=new RegExp(`${jt}rgba\\s*\\(${dt},${dt},${dt},${dt}\\)${$t}`),nO=new RegExp(`${jt}#${sa}${sa}${sa}${$t}`),iO=new RegExp(`${jt}#${ua}${ua}${ua}${$t}`),dO=new RegExp(`${jt}#${sa}${sa}${sa}${sa}${$t}`),sO=new RegExp(`${jt}#${ua}${ua}${ua}${ua}${$t}`);function tt(e){return parseInt(e,16)}function gt(e){try{let o;if(o=iO.exec(e))return[tt(o[1]),tt(o[2]),tt(o[3]),1];if(o=aO.exec(e))return[Ho(o[1]),Ho(o[5]),Ho(o[9]),1];if(o=lO.exec(e))return[Ho(o[1]),Ho(o[5]),Ho(o[9]),Ha(o[13])];if(o=nO.exec(e))return[tt(o[1]+o[1]),tt(o[2]+o[2]),tt(o[3]+o[3]),1];if(o=sO.exec(e))return[tt(o[1]),tt(o[2]),tt(o[3]),Ha(tt(o[4])/255)];if(o=dO.exec(e))return[tt(o[1]+o[1]),tt(o[2]+o[2]),tt(o[3]+o[3]),Ha(tt(o[4]+o[4])/255)];if(e in xs)return gt(xs[e]);throw new Error(`[seemly/rgba]: Invalid color value ${e}.`)}catch(o){throw o}}function uO(e){return e>1?1:e<0?0:e}function hs(e,o,t,r){return`rgba(${Ho(e)}, ${Ho(o)}, ${Ho(t)}, ${uO(r)})`}function Ss(e,o,t,r,a){return Ho((e*o*(1-r)+t*r)/a)}function me(e,o){Array.isArray(e)||(e=gt(e)),Array.isArray(o)||(o=gt(o));let t=e[3],r=o[3],a=Ha(t+r-t*r);return hs(Ss(e[0],t,o[0],r,a),Ss(e[1],t,o[1],r,a),Ss(e[2],t,o[2],r,a),a)}function J(e,o){let[t,r,a,l=1]=Array.isArray(e)?e:gt(e);return o.alpha?hs(t,r,a,o.alpha):hs(t,r,a,l)}function ur(e,o){let[t,r,a,l=1]=Array.isArray(e)?e:gt(e),{lightness:n=1,alpha:i=1}=o;return xc([t*n,r*n,a*n,l*i])}function Ha(e){let o=Math.round(Number(e)*100)/100;return o>1?1:o<0?0:o}function Ho(e){let o=Math.round(Number(e));return o>255?255:o<0?0:o}function xc(e){let[o,t,r]=e;return 3 in e?`rgba(${Ho(o)}, ${Ho(t)}, ${Ho(r)}, ${Ha(e[3])})`:`rgba(${Ho(o)}, ${Ho(t)}, ${Ho(r)}, 1)`}function gs(e=8){return Math.random().toString(16).slice(2,2+e)}function ws(e,o){let t=[];for(let r=0;rRe(t,...o));else return e(...o)}var Wa=(e,...o)=>typeof e=="function"?e(...o):typeof e=="string"?Na(e):typeof e=="number"?Na(String(e)):null;var AM=new Set;function li(e,o){console.error(`[naive/${e}]: ${o}`)}function ni(e,o){throw new Error(`[naive/${e}]: ${o}`)}function Va(e){return typeof e=="string"?`s-${e}`:`n-${e}`}function lo(e){return e}function Dl(e){return e.some(o=>La(o)?!(o.type===$o||o.type===Co&&!Dl(o.children)):!0)?e:null}function Ut(e,o){return e&&Dl(e())||o()}function ii(e,o,t){return e&&Dl(e(o))||t(o)}function Kt(e,o){let t=e&&Dl(e());return o(t||null)}function di(e){return!(e&&Dl(e()))}function Pl(e){return e.replace(/#|\(|\)|,|\s/g,"_")}function pO(e){let o=0;for(let t=0;t{let a=pO(r);if(a){if(a===1){e.forEach(n=>{t.push(r.replace("&",n))});return}}else{e.forEach(n=>{t.push((n&&n+" ")+r)});return}let l=[r];for(;a--;){let n=[];l.forEach(i=>{e.forEach(d=>{n.push(i.replace("&",d))})}),l=n}l.forEach(n=>t.push(n))}),t}function xO(e,o){let t=[];return o.split(hc).forEach(r=>{e.forEach(a=>{t.push((a&&a+" ")+r)})}),t}function Sc(e){let o=[""];return e.forEach(t=>{t=t&&t.trim(),!!t&&(t.includes("&")?o=cO(o,t):o=xO(o,t))}),o.join(", ").replace(mO," ")}function Ts(e){if(!e)return;let o=e.parentElement;o&&o.removeChild(e)}function fa(e){return document.querySelector(`style[cssr-id="${e}"]`)}function gc(e){let o=document.createElement("style");return o.setAttribute("cssr-id",e),o}function Ml(e){return e?/^\s*@(s|m)/.test(e):!1}var hO=/[A-Z]/g;function wc(e){return e.replace(hO,o=>"-"+o.toLowerCase())}function SO(e,o=" "){return typeof e=="object"&&e!==null?` { `+Object.entries(e).map(t=>o+` ${wc(t[0])}: ${t[1]};`).join(` `)+` -`+o+"}":`: ${e};`}function SO(e,o,t){return typeof e=="function"?e({context:o.context,props:t}):e}function Tc(e,o,t,r){if(!o)return"";let a=SO(o,t,r);if(!a)return"";if(typeof a=="string")return`${e} { +`+o+"}":`: ${e};`}function gO(e,o,t){return typeof e=="function"?e({context:o.context,props:t}):e}function Tc(e,o,t,r){if(!o)return"";let a=gO(o,t,r);if(!a)return"";if(typeof a=="string")return`${e} { ${a} }`;let l=Object.keys(a);if(l.length===0)return t.config.keepEmptyBlock?e+` { }`:"";let n=e?[e+" {"]:[];return l.forEach(i=>{let d=a[i];if(i==="raw"){n.push(` `+d+` -`);return}i=wc(i),d!=null&&n.push(` ${i}${hO(d)}`)}),e&&n.push("}"),n.join(` +`);return}i=wc(i),d!=null&&n.push(` ${i}${SO(d)}`)}),e&&n.push("}"),n.join(` `)}function Rs(e,o,t){!e||e.forEach(r=>{if(Array.isArray(r))Rs(r,o,t);else if(typeof r=="function"){let a=r(o);Array.isArray(a)?Rs(a,o,t):a&&t(a)}else r&&t(r)})}function Rc(e,o,t,r,a,l){let n=e.$,i="";if(!n||typeof n=="string")Ml(n)?i=n:o.push(n);else if(typeof n=="function"){let u=n({context:r.context,props:a});Ml(u)?i=u:o.push(u)}else if(n.before&&n.before(r.context),!n.$||typeof n.$=="string")Ml(n.$)?i=n.$:o.push(n.$);else if(n.$){let u=n.$({context:r.context,props:a});Ml(u)?i=u:o.push(u)}let d=Sc(o),s=Tc(d,e.props,r,a);i?(t.push(`${i} {`),l&&s&&l.insertRule(`${i} { ${s} } `)):(l&&s&&l.insertRule(s),!l&&s.length&&t.push(s)),e.children&&Rs(e.children,{context:r.context,props:a},u=>{if(typeof u=="string"){let f=Tc(d,{raw:u},r,a);l?l.insertRule(f):t.push(f)}else Rc(u,o,t,r,a,l)}),o.pop(),i&&t.push("}"),n&&n.after&&n.after(r.context)}function si(e,o,t,r=!1){let a=[];return Rc(e,[],a,o,t,r?e.instance.__styleSheet:void 0),r?"":a.join(` -`)}function gO(e){for(var o=0,t,r=0,a=e.length;a>=4;++r,a-=4)t=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,t=(t&65535)*1540483477+((t>>>16)*59797<<16),t^=t>>>24,o=(t&65535)*1540483477+((t>>>16)*59797<<16)^(o&65535)*1540483477+((o>>>16)*59797<<16);switch(a){case 3:o^=(e.charCodeAt(r+2)&255)<<16;case 2:o^=(e.charCodeAt(r+1)&255)<<8;case 1:o^=e.charCodeAt(r)&255,o=(o&65535)*1540483477+((o>>>16)*59797<<16)}return o^=o>>>13,o=(o&65535)*1540483477+((o>>>16)*59797<<16),((o^o>>>15)>>>0).toString(36)}var st=gO;typeof window!="undefined"&&(window.__cssrContext={});function Fc(e,o,t){let{els:r}=o;if(t===void 0)r.forEach(Ts),o.els=[];else{let a=fa(t);a&&r.includes(a)&&(Ts(a),o.els=r.filter(l=>l!==a))}}function Oc(e,o){e.push(o)}function Cc(e,o,t,r,a,l,n,i,d){if(l&&!d){if(t===void 0){console.error("[css-render/mount]: `id` is required in `silent` mode.");return}let c=window.__cssrContext;c[t]||(c[t]=!0,si(o,e,r,l));return}let s;if(t===void 0&&(s=o.render(r),t=st(s)),d){d.adapter(t,s!=null?s:o.render(r));return}let u=fa(t);if(u!==null&&!n)return u;let f=u!=null?u:gc(t);if(s===void 0&&(s=o.render(r)),f.textContent=s,u!==null)return u;if(i){let c=document.head.querySelector(`meta[name="${i}"]`);if(c)return document.head.insertBefore(f,c),Oc(o.els,f),f}return a?document.head.insertBefore(f,document.head.querySelector("style, link")):document.head.appendChild(f),Oc(o.els,f),f}function wO(e){return si(this,this.instance,e)}function TO(e={}){let{id:o,ssr:t,props:r,head:a=!1,silent:l=!1,force:n=!1,anchorMetaName:i}=e;return Cc(this.instance,this,o,r,a,l,n,i,t)}function RO(e={}){let{id:o}=e;Fc(this.instance,this,o)}var ui=function(e,o,t,r){return{instance:e,$:o,props:t,children:r,els:[],render:wO,mount:TO,unmount:RO}},bc=function(e,o,t,r){return Array.isArray(o)?ui(e,{$:null},null,o):Array.isArray(t)?ui(e,o,null,t):Array.isArray(r)?ui(e,o,t,r):ui(e,o,t,null)};function fi(e={}){let o=null,t={c:(...r)=>bc(t,...r),use:(r,...a)=>r.install(t,...a),find:fa,context:{},config:e,get __styleSheet(){if(!o){let r=document.createElement("style");return document.head.appendChild(r),o=document.styleSheets[document.styleSheets.length-1],o}return o}};return t}function Fs(e,o){if(e===void 0)return!1;if(o){let{context:{ids:t}}=o;return t.has(e)}return fa(e)!==null}var yc=fi;function FO(e){let o=".",t="__",r="--",a;if(e){let x=e.blockPrefix;x&&(o=x),x=e.elementPrefix,x&&(t=x),x=e.modifierPrefix,x&&(r=x)}let l={install(x){a=x.c;let T=x.context;T.bem={},T.bem.b=null,T.bem.els=null}};function n(x){let T,C;return{before(S){T=S.bem.b,C=S.bem.els,S.bem.els=null},after(S){S.bem.b=T,S.bem.els=C},$({context:S,props:D}){return x=typeof x=="string"?x:x({context:S,props:D}),S.bem.b=x,`${(D==null?void 0:D.bPrefix)||o}${S.bem.b}`}}}function i(x){let T;return{before(C){T=C.bem.els},after(C){C.bem.els=T},$({context:C,props:S}){return x=typeof x=="string"?x:x({context:C,props:S}),C.bem.els=x.split(",").map(D=>D.trim()),C.bem.els.map(D=>`${(S==null?void 0:S.bPrefix)||o}${C.bem.b}${t}${D}`).join(", ")}}}function d(x){return{$({context:T,props:C}){x=typeof x=="string"?x:x({context:T,props:C});let S=x.split(",").map(O=>O.trim());function D(O){return S.map(g=>`&${(C==null?void 0:C.bPrefix)||o}${T.bem.b}${O!==void 0?`${t}${O}`:""}${r}${g}`).join(", ")}let $=T.bem.els;return $!==null?D($[0]):D()}}}function s(x){return{$({context:T,props:C}){x=typeof x=="string"?x:x({context:T,props:C});let S=T.bem.els;return`&:not(${(C==null?void 0:C.bPrefix)||o}${T.bem.b}${S!==null&&S.length>0?`${t}${S[0]}`:""}${r}${x})`}}}return Object.assign(l,{cB:(...x)=>a(n(x[0]),x[1],x[2]),cE:(...x)=>a(i(x[0]),x[1],x[2]),cM:(...x)=>a(d(x[0]),x[1],x[2]),cNotM:(...x)=>a(s(x[0]),x[1],x[2])}),l}var vc=FO;function ve(e,o){return e+(o==="default"?"":o.replace(/^[a-z]/,t=>t.toUpperCase()))}ve("abc","def");var OO="n",Bl=`.${OO}-`,CO="__",bO="--",kc=yc(),Ac=vc({blockPrefix:Bl,elementPrefix:CO,modifierPrefix:bO});kc.use(Ac);var{c:Y,find:RB}=kc,{cB:G,cE:X,cM:xe,cNotM:rt}=Ac;function pi(e){return Y(({props:{bPrefix:o}})=>`${o||Bl}modal, ${o||Bl}drawer`,[e])}function mi(e){return Y(({props:{bPrefix:o}})=>`${o||Bl}popover:not(${o||Bl}tooltip)`,[e])}function ci(e){let o=Z(!!e.value);if(o.value)return br(o);let t=Ze(e,r=>{r&&(o.value=!0,t())});return br(o)}function yO(e){let o=V(e),t=Z(o.value);return Ze(o,r=>{t.value=r}),typeof e=="function"?t:{__v_isRef:!0,get value(){return t.value},set value(r){e.set(r)}}}var Ye=yO;var Dc=typeof window!="undefined";var za,Ll,vO=()=>{var e,o;za=Dc?(o=(e=document)===null||e===void 0?void 0:e.fonts)===null||o===void 0?void 0:o.ready:void 0,Ll=!1,za!==void 0?za.then(()=>{Ll=!0}):Ll=!0};vO();function xi(e){if(Ll)return;let o=!1;fo(()=>{Ll||za==null||za.then(()=>{o||e()})}),_o(()=>{o=!0})}var kO={mousemoveoutside:new WeakMap,clickoutside:new WeakMap};function AO(e,o,t){if(e==="mousemoveoutside"){let r=a=>{o.contains(a.target)||t(a)};return{mousemove:r,touchstart:r}}else if(e==="clickoutside"){let r=!1,a=n=>{r=!o.contains(n.target)},l=n=>{!r||o.contains(n.target)||t(n)};return{mousedown:a,mouseup:l,touchstart:a,touchend:l}}return console.error(`[evtd/create-trap-handler]: name \`${e}\` is invalid. This could be a bug of evtd.`),{}}function Pc(e,o,t){let r=kO[e],a=r.get(o);a===void 0&&r.set(o,a=new WeakMap);let l=a.get(t);return l===void 0&&a.set(t,l=AO(e,o,t)),l}function Mc(e,o,t,r){if(e==="mousemoveoutside"||e==="clickoutside"){let a=Pc(e,o,t);return Object.keys(a).forEach(l=>{So(l,document,a[l],r)}),!0}return!1}function Bc(e,o,t,r){if(e==="mousemoveoutside"||e==="clickoutside"){let a=Pc(e,o,t);return Object.keys(a).forEach(l=>{xo(l,document,a[l],r)}),!0}return!1}function DO(){if(typeof window=="undefined")return{on:()=>{},off:()=>{}};let e=new WeakMap,o=new WeakMap;function t(){e.set(this,!0)}function r(){e.set(this,!0),o.set(this,!0)}function a(w,F,B){let y=w[F];return w[F]=function(){return B.apply(w,arguments),y.apply(w,arguments)},w}function l(w,F){w[F]=Event.prototype[F]}let n=new WeakMap,i=Object.getOwnPropertyDescriptor(Event.prototype,"currentTarget");function d(){var w;return(w=n.get(this))!==null&&w!==void 0?w:null}function s(w,F){i!==void 0&&Object.defineProperty(w,"currentTarget",{configurable:!0,enumerable:!0,get:F!=null?F:i.get})}let u={bubble:{},capture:{}},f={};function c(){let w=function(F){let{type:B,eventPhase:y,target:W,bubbles:_}=F;if(y===2)return;let ae=y===1?"capture":"bubble",he=W,Me=[];for(;he===null&&(he=window),Me.push(he),he!==window;)he=he.parentNode||null;let de=u.capture[B],ie=u.bubble[B];if(a(F,"stopPropagation",t),a(F,"stopImmediatePropagation",r),s(F,d),ae==="capture"){if(de===void 0)return;for(let ge=Me.length-1;ge>=0&&!e.has(F);--ge){let Ve=Me[ge],Ke=de.get(Ve);if(Ke!==void 0){n.set(F,Ve);for(let He of Ke){if(o.has(F))break;He(F)}}if(ge===0&&!_&&ie!==void 0){let He=ie.get(Ve);if(He!==void 0)for(let Xe of He){if(o.has(F))break;Xe(F)}}}}else if(ae==="bubble"){if(ie===void 0)return;for(let ge=0;ge_(F))};return w.displayName="evtdUnifiedWindowEventHandler",w}let x=c(),T=p();function C(w,F){let B=u[w];return B[F]===void 0&&(B[F]=new Map,window.addEventListener(F,x,w==="capture")),B[F]}function S(w){return f[w]===void 0&&(f[w]=new Set,window.addEventListener(w,T)),f[w]}function D(w,F){let B=w.get(F);return B===void 0&&w.set(F,B=new Set),B}function $(w,F,B,y){let W=u[F][B];if(W!==void 0){let _=W.get(w);if(_!==void 0&&_.has(y))return!0}return!1}function O(w,F){let B=f[w];return!!(B!==void 0&&B.has(F))}function g(w,F,B,y){let W;if(typeof y=="object"&&y.once===!0?W=de=>{v(w,F,W,y),B(de)}:W=B,Mc(w,F,W,y))return;let ae=y===!0||typeof y=="object"&&y.capture===!0?"capture":"bubble",he=C(ae,w),Me=D(he,F);if(Me.has(W)||Me.add(W),F===window){let de=S(w);de.has(W)||de.add(W)}}function v(w,F,B,y){if(Bc(w,F,B,y))return;let _=y===!0||typeof y=="object"&&y.capture===!0,ae=_?"capture":"bubble",he=C(ae,w),Me=D(he,F);if(F===window&&!$(F,_?"bubble":"capture",w,B)&&O(w,B)){let ie=f[w];ie.delete(B),ie.size===0&&(window.removeEventListener(w,T),f[w]=void 0)}Me.has(B)&&Me.delete(B),Me.size===0&&he.delete(F),he.size===0&&(window.removeEventListener(w,x,ae==="capture"),u[ae][w]=void 0)}return{on:g,off:v}}var{on:So,off:xo}=DO();function Zo(e,o){return Ze(e,t=>{t!==void 0&&(o.value=t)}),V(()=>e.value===void 0?o.value:e.value)}function Er(){let e=Z(!1);return fo(()=>{e.value=!0}),br(e)}var PO=(typeof window=="undefined"?!1:/iPad|iPhone|iPod/.test(navigator.platform)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)&&!window.MSStream;function hi(){return PO}var XB=lo("n-internal-select-menu"),Lc=lo("n-internal-select-menu-body");var Ec=lo("n-modal-body"),oL=lo("n-modal");var Nc=lo("n-drawer-body"),aL=lo("n-drawer");var _c=lo("n-popover-body");var Ic="__disabled__";function pa(e){let o=Te(Ec,null),t=Te(Nc,null),r=Te(_c,null),a=Te(Lc,null),l=Z();if(typeof document!="undefined"){l.value=document.fullscreenElement;let n=()=>{l.value=document.fullscreenElement};fo(()=>{So("fullscreenchange",document,n)}),_o(()=>{xo("fullscreenchange",document,n)})}return Ye(()=>{var n;let{to:i}=e;return i!==void 0?i===!1?Ic:i===!0?l.value||"body":i:(o==null?void 0:o.value)?(n=o.value.$el)!==null&&n!==void 0?n:o.value:(t==null?void 0:t.value)?t.value:(r==null?void 0:r.value)?r.value:(a==null?void 0:a.value)?a.value:i!=null?i:l.value||"body"})}pa.tdkey=Ic;pa.propTo={type:[String,Object,Boolean],default:void 0};function El(e,o,t="default"){let r=o[t];if(r===void 0)throw new Error(`[vueuc/${e}]: slot[${t}] is empty.`);return r()}function Os(e,o=!0,t=[]){return e.forEach(r=>{if(r!==null){if(typeof r!="object"){(typeof r=="string"||typeof r=="number")&&t.push(Na(String(r)));return}if(Array.isArray(r)){Os(r,o,t);return}if(r.type===Co){if(r.children===null)return;Array.isArray(r.children)&&Os(r.children,o,t)}else r.type!==$o&&t.push(r)}}),t}function Cs(e,o,t="default"){let r=o[t];if(r===void 0)throw new Error(`[vueuc/${e}]: slot[${t}] is empty.`);let a=Os(r());if(a.length===1)return a[0];throw new Error(`[vueuc/${e}]: slot[${t}] should have exactly one child.`)}var Nr=null;function Hc(){if(Nr===null&&(Nr=document.getElementById("v-binder-view-measurer"),Nr===null)){Nr=document.createElement("div"),Nr.id="v-binder-view-measurer";let{style:e}=Nr;e.position="fixed",e.left="0",e.right="0",e.top="0",e.bottom="0",e.pointerEvents="none",e.visibility="hidden",document.body.appendChild(Nr)}return Nr.getBoundingClientRect()}function Wc(e,o){let t=Hc();return{top:o,left:e,height:0,width:0,right:t.width-e,bottom:t.height-o}}function Si(e){let o=e.getBoundingClientRect(),t=Hc();return{left:o.left-t.left,top:o.top-t.top,bottom:t.height+t.top-o.bottom,right:t.width+t.left-o.right,width:o.width,height:o.height}}function MO(e){return e.nodeType===9?null:e.parentNode}function bs(e){if(e===null)return null;let o=MO(e);if(o===null)return null;if(o.nodeType===9)return document;if(o.nodeType===1){let{overflow:t,overflowX:r,overflowY:a}=getComputedStyle(o);if(/(auto|scroll|overlay)/.test(t+a+r))return o}return bs(o)}var BO=le({name:"Binder",props:{syncTargetWithParent:Boolean,syncTarget:{type:Boolean,default:!0}},setup(e){var o;qo("VBinder",(o=St())===null||o===void 0?void 0:o.proxy);let t=Te("VBinder",null),r=Z(null),a=S=>{r.value=S,t&&e.syncTargetWithParent&&t.setTargetRef(S)},l=[],n=()=>{let S=r.value;for(;S=bs(S),S!==null;)l.push(S);for(let D of l)So("scroll",D,f,!0)},i=()=>{for(let S of l)xo("scroll",S,f,!0);l=[]},d=new Set,s=S=>{d.size===0&&n(),d.has(S)||d.add(S)},u=S=>{d.has(S)&&d.delete(S),d.size===0&&i()},f=()=>{Al(c)},c=()=>{d.forEach(S=>S())},p=new Set,x=S=>{p.size===0&&So("resize",window,C),p.has(S)||p.add(S)},T=S=>{p.has(S)&&p.delete(S),p.size===0&&xo("resize",window,C)},C=()=>{p.forEach(S=>S())};return _o(()=>{xo("resize",window,C),i()}),{targetRef:r,setTargetRef:a,addScrollListener:s,removeScrollListener:u,addResizeListener:x,removeResizeListener:T}},render(){return El("binder",this.$slots)}}),gi=BO;var wi=le({name:"Target",setup(){let{setTargetRef:e,syncTarget:o}=Te("VBinder");return{syncTarget:o,setTargetDirective:{mounted:e,updated:e}}},render(){let{syncTarget:e,setTargetDirective:o}=this;return e?qn(Cs("follower",this.$slots),[[o]]):Cs("follower",this.$slots)}});var kL=new Set;function Vc(e,o){console.error(`[vdirs/${e}]: ${o}`)}var zc=class{constructor(){this.elementZIndex=new Map,this.nextZIndex=2e3}get elementCount(){return this.elementZIndex.size}ensureZIndex(o,t){let{elementZIndex:r}=this;if(t!==void 0){o.style.zIndex=`${t}`,r.delete(o);return}let{nextZIndex:a}=this;r.has(o)&&r.get(o)+1===this.nextZIndex||(o.style.zIndex=`${a}`,r.set(o,a),this.nextZIndex=a+1,this.squashState())}unregister(o,t){let{elementZIndex:r}=this;r.has(o)?r.delete(o):t===void 0&&Vc("z-index-manager/unregister-element","Element not found when unregistering."),this.squashState()}squashState(){let{elementCount:o}=this;o||(this.nextZIndex=2e3),this.nextZIndex-o>2500&&this.rearrange()}rearrange(){let o=Array.from(this.elementZIndex.entries());o.sort((t,r)=>t[1]-r[1]),this.nextZIndex=2e3,o.forEach(t=>{let r=t[0],a=this.nextZIndex++;`${a}`!==r.style.zIndex&&(r.style.zIndex=`${a}`)})}},Ti=new zc;var ja="@@ziContext",LO={mounted(e,o){let{value:t={}}=o,{zIndex:r,enabled:a}=t;e[ja]={enabled:!!a,initialized:!1},a&&(Ti.ensureZIndex(e,r),e[ja].initialized=!0)},updated(e,o){let{value:t={}}=o,{zIndex:r,enabled:a}=t,l=e[ja].enabled;a&&!l&&(Ti.ensureZIndex(e,r),e[ja].initialized=!0),e[ja].enabled=!!a},unmounted(e,o){if(!e[ja].initialized)return;let{value:t={}}=o,{zIndex:r}=t;Ti.unregister(e,r)}},ys=LO;var jc=Symbol("@css-render/vue3-ssr");function EO(e,o){return`
'+(r?o:Lo(o,!0))+`
`:"
"+(r?o:Lo(o,!0))+`
`}blockquote(o){return`
@@ -999,12 +999,12 @@ ${a} `}tablecell(o,t){let r=t.header?"th":"td";return(t.align?"<"+r+' align="'+t.align+'">':"<"+r+">")+o+" `}strong(o){return""+o+""}em(o){return""+o+""}codespan(o){return""+o+""}br(){return this.options.xhtml?"
":"
"}del(o){return""+o+""}link(o,t,r){if(o=zw(this.options.sanitize,this.options.baseUrl,o),o===null)return r;let a='",a}image(o,t,r){if(o=zw(this.options.sanitize,this.options.baseUrl,o),o===null)return r;let a=''+r+'":">",a}text(o){return o}},Tp=class{strong(o){return o}em(o){return o}codespan(o){return o}del(o){return o}html(o){return o}text(o){return o}link(o,t,r){return""+r}image(o,t,r){return""+r}br(){return""}},Rp=class{constructor(){this.seen={}}serialize(o){return o.toLowerCase().trim().replace(/<[!\/a-z].*?>/ig,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(o,t){let r=o,a=0;if(this.seen.hasOwnProperty(r)){a=this.seen[o];do a++,r=o+"-"+a;while(this.seen.hasOwnProperty(r))}return t||(this.seen[o]=a,this.seen[r]=0),r}slug(o,t={}){let r=this.serialize(o);return this.getNextSafeSlug(r,t.dryrun)}},or=class{constructor(o){this.options=o||rl,this.options.renderer=this.options.renderer||new Fd,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new Tp,this.slugger=new Rp}static parse(o,t){return new or(t).parse(o)}static parseInline(o,t){return new or(t).parseInline(o)}parse(o,t=!0){let r="",a,l,n,i,d,s,u,f,c,p,x,T,C,S,D,$,O,g,v,w=o.length;for(a=0;a0&&D.tokens[0].type==="paragraph"?(D.tokens[0].text=g+" "+D.tokens[0].text,D.tokens[0].tokens&&D.tokens[0].tokens.length>0&&D.tokens[0].tokens[0].type==="text"&&(D.tokens[0].tokens[0].text=g+" "+D.tokens[0].tokens[0].text)):D.tokens.unshift({type:"text",text:g}):S+=g),S+=this.parse(D.tokens,C),c+=this.renderer.listitem(S,O,$);r+=this.renderer.list(c,x,T);continue}case"html":{r+=this.renderer.html(p.text);continue}case"paragraph":{r+=this.renderer.paragraph(this.parseInline(p.tokens));continue}case"text":{for(c=p.tokens?this.parseInline(p.tokens):p.text;a+1{r(i.text,i.lang,function(d,s){if(d)return l(d);s!=null&&s!==i.text&&(i.text=s,i.escaped=!0),n--,n===0&&l()})},0))}),n===0&&l();return}try{let r=er.lex(e,o);return o.walkTokens&&be.walkTokens(r,o.walkTokens),or.parse(r,o)}catch(r){if(r.message+=` -Please report this to https://github.com/markedjs/marked.`,o.silent)return"

An error occurred:

"+Lo(r.message+"",!0)+"
";throw r}}be.options=be.setOptions=function(e){return Lt(be.defaults,e),vP(be.defaults),be};be.getDefaults=Hw;be.defaults=rl;be.use=function(...e){let o=Lt({},...e),t=be.defaults.extensions||{renderers:{},childTokens:{}},r;e.forEach(a=>{if(a.extensions&&(r=!0,a.extensions.forEach(l=>{if(!l.name)throw new Error("extension name required");if(l.renderer){let n=t.renderers?t.renderers[l.name]:null;n?t.renderers[l.name]=function(...i){let d=l.renderer.apply(this,i);return d===!1&&(d=n.apply(this,i)),d}:t.renderers[l.name]=l.renderer}if(l.tokenizer){if(!l.level||l.level!=="block"&&l.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");t[l.level]?t[l.level].unshift(l.tokenizer):t[l.level]=[l.tokenizer],l.start&&(l.level==="block"?t.startBlock?t.startBlock.push(l.start):t.startBlock=[l.start]:l.level==="inline"&&(t.startInline?t.startInline.push(l.start):t.startInline=[l.start]))}l.childTokens&&(t.childTokens[l.name]=l.childTokens)})),a.renderer){let l=be.defaults.renderer||new Fd;for(let n in a.renderer){let i=l[n];l[n]=(...d)=>{let s=a.renderer[n].apply(l,d);return s===!1&&(s=i.apply(l,d)),s}}o.renderer=l}if(a.tokenizer){let l=be.defaults.tokenizer||new Rd;for(let n in a.tokenizer){let i=l[n];l[n]=(...d)=>{let s=a.tokenizer[n].apply(l,d);return s===!1&&(s=i.apply(l,d)),s}}o.tokenizer=l}if(a.walkTokens){let l=be.defaults.walkTokens;o.walkTokens=function(n){a.walkTokens.call(this,n),l&&l.call(this,n)}}r&&(o.extensions=t),be.setOptions(o)})};be.walkTokens=function(e,o){for(let t of e)switch(o.call(be,t),t.type){case"table":{for(let r of t.header)be.walkTokens(r.tokens,o);for(let r of t.rows)for(let a of r)be.walkTokens(a.tokens,o);break}case"list":{be.walkTokens(t.items,o);break}default:be.defaults.extensions&&be.defaults.extensions.childTokens&&be.defaults.extensions.childTokens[t.type]?be.defaults.extensions.childTokens[t.type].forEach(function(r){be.walkTokens(t[r],o)}):t.tokens&&be.walkTokens(t.tokens,o)}};be.parseInline=function(e,o){if(typeof e=="undefined"||e===null)throw new Error("marked.parseInline(): input parameter is undefined or null");if(typeof e!="string")throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");o=Lt({},be.defaults,o||{}),$w(o);try{let t=er.lexInline(e,o);return o.walkTokens&&be.walkTokens(t,o.walkTokens),or.parseInline(t,o)}catch(t){if(t.message+=` -Please report this to https://github.com/markedjs/marked.`,o.silent)return"

An error occurred:

"+Lo(t.message+"",!0)+"
";throw t}};be.Parser=or;be.parser=or.parse;be.Renderer=Fd;be.TextRenderer=Tp;be.Lexer=er;be.lexer=er.lex;be.Tokenizer=Rd;be.Slugger=Rp;be.parse=be;var Kte=be.options,Gte=be.setOptions,qte=be.use,Qte=be.walkTokens,Zte=be.parseInline;var Yte=or.parse,Xte=er.lex;var al=Oa(require("obsidian"));var oe=Ht({activeView(){this.plugin.activateView(),this.refreshTree()},headers:[],dark:!0,cssChange:!1,markdown:!0,ellipsis:!1,labelDirection:"left",leafChange:!1,searchSupport:!0,levelSwitch:!0,hideUnsearched:!0,regexSearch:!1,autoExpand:!0,dragModify:!1,refreshTree(){this.leafChange=!this.leafChange},patchColor:!1,primaryColorLight:"",primaryColorDark:"",rainbowLine:!1,rainbowColor1:"",rainbowColor2:"",rainbowColor3:"",rainbowColor4:"",rainbowColor5:"",currentNote:null});var qw={name:"formula",level:"inline",start(e){var o;return(o=e.match(/\$/))==null?void 0:o.index},tokenizer(e,o){let r=/^\$([^\$]+)\$/.exec(e);if(r)return{type:"formula",raw:r[0],formula:r[1].trim()}},renderer(e){try{let o=(0,al.renderMath)(e.formula,!1).outerHTML;return(0,al.finishRenderMath)(),o}catch(o){return(0,al.loadMathJax)().then(()=>{oe.refreshTree()}),!1}}},Qw={name:"internal",level:"inline",start(e){var o;return(o=e.match(/\[\[/))==null?void 0:o.index},tokenizer(e,o){let r=/^\[\[([^\[\]]+?)\]\]/.exec(e);if(r){let a=/.*\|(.*)/.exec(r[1]);return{type:"internal",raw:r[0],internal:a?a[1]:r[1]}}},renderer(e){return`${e.internal}`}},Zw={name:"highlight",level:"inline",start(e){var o;return(o=e.match(/==/))==null?void 0:o.index},tokenizer(e,o){let r=/^==([^=]+)==/.exec(e);if(r)return{type:"highlight",raw:r[0],internal:r[1]}},renderer(e){return`${e.internal}`}},Yw={name:"tag",level:"inline",start(e){var o;return(o=e.match(/^#|(?<=\s)#/))==null?void 0:o.index},tokenizer(e,o){let r=/^#([^\[\]{}:;'"`~,.<>?|\\!@#$%^&*()=+\d\s][^\[\]{}:;'"`~,.<>?|\\!@#$%^&*()=+\s]*)/.exec(e);if(r)return{type:"tag",raw:r[0],internal:r[1]}},renderer(e){return`
#${e.internal}`}},Xw=e=>{e.type==="link"&&(e.href="javascript:void(0);")},Jw={list(e,o,t){return o?`

${t}. ${e}

`:`

${e}

`},listitem(e,o,t){return`${e}`}};var Cd=le({__name:"Outline",setup(e,{expose:o}){o(),Jm(m=>({"8de97876-rainbowColor1":ar(d),"8de97876-rainbowColor2":ar(s),"8de97876-rainbowColor3":ar(u),"8de97876-rainbowColor4":ar(f),"8de97876-rainbowColor5":ar(c),"8de97876-locatedColor":ar(i)}));let t=Ht({common:{primaryColor:"",primaryColorHover:""},Slider:{handleSize:"10px",fillColor:"",fillColorHover:"",dotBorderActive:""}}),r=Ht({common:{primaryColor:"",primaryColorHover:""},Slider:{handleSize:"10px",fillColor:"",fillColorHover:"",dotBorderActive:""}}),a=V(()=>oe.dark?cd:null),l=V(()=>oe.dark?{color:"#a3a3a3"}:{color:"#727272"});function n(){let m=document.body.createEl("button",{cls:"mod-cta",attr:{style:"width: 0px; height: 0px;"}}),h=getComputedStyle(m,null).getPropertyValue("background-color");return m.remove(),h}let i=Z(n());Mo(()=>{if(oe.patchColor){t.common.primaryColor=t.common.primaryColorHover=t.Slider.fillColor=t.Slider.fillColorHover=oe.primaryColorLight,t.Slider.dotBorderActive=`2px solid ${oe.primaryColorLight}`,r.common.primaryColor=r.common.primaryColorHover=r.Slider.fillColor=r.Slider.fillColorHover=oe.primaryColorDark,r.Slider.dotBorderActive=`2px solid ${oe.primaryColorDark}`;return}if(oe.cssChange===oe.cssChange){let m=n();t.common.primaryColor=t.common.primaryColorHover=t.Slider.fillColor=t.Slider.fillColorHover=r.common.primaryColor=r.common.primaryColorHover=r.Slider.fillColor=r.Slider.fillColorHover=m,t.Slider.dotBorderActive=r.Slider.dotBorderActive=`2px solid ${m}`,i.value=m}});let d=Z(""),s=Z(""),u=Z(""),f=Z(""),c=Z("");function p(m){return`${parseInt(m.slice(1,3),16)},${parseInt(m.slice(3,5),16)},${parseInt(m.slice(5,7),16)}`}Mo(()=>{if(oe.rainbowLine){d.value=`rgba(${p(oe.rainbowColor1)}, 0.6)`,s.value=`rgba(${p(oe.rainbowColor2)}, 0.6)`,u.value=`rgba(${p(oe.rainbowColor3)}, 0.6)`,f.value=`rgba(${p(oe.rainbowColor4)}, 0.6)`,c.value=`rgba(${p(oe.rainbowColor5)}, 0.6)`;return}oe.cssChange===oe.cssChange&&(d.value=s.value=u.value=f.value=c.value="var(--nav-indentation-guide-color)")}),fo(()=>{addEventListener("quiet-outline-reset",wo)}),oa(()=>{removeEventListener("quiet-outline-reset",wo)});let x=St(),T=x.appContext.config.globalProperties.plugin,C=x.appContext.config.globalProperties.container;fo(()=>{document.addEventListener("scroll",D,!0)}),oa(()=>{document.removeEventListener("scroll",D,!0)});let S=(m,h)=>"item-"+m.level+"-"+h,D=(0,Od.debounce)($,100);function $(m){let h=m.target;if(!h.classList.contains("markdown-preview-view")&&!h.classList.contains("cm-scroller"))return;let k=T.current_note;if(!k)return;let E=k.currentMode.getScroll()+8,I=null,j=oe.headers.length;for(;--j>=0;)if(oe.headers[j].position.start.line<=E){I=oe.headers[j];break}if(!I)return;let U=j;if(T.settings.auto_expand){let H=U0&&(oe.headers[j].level{let H=C.querySelector(`#no-${U}`);H&&(H.addClass("located"),H.scrollIntoView({block:"center",behavior:"smooth"}))},0)}let O=V(()=>m=>{let h=parseInt(m.option.key.split("-")[1]),k=parseInt(m.option.key.split("-")[2]);return{class:`level-${h}`,id:`no-${k}`,"aria-label":oe.ellipsis?m.option.label:"","aria-label-position":oe.labelDirection}}),g=Z(parseInt(T.settings.expand_level)),v=Z([]);F(g.value);function w(m,h){v.value=m}function F(m){v.value=oe.headers.map((h,k)=>"item-"+h.level+"-"+k).filter((h,k,E)=>{let I=j=>parseInt(j.split("-")[1]);return k===E.length-1||I(E[k])>=I(E[k+1])?!1:I(h)<=m})}Ze(g,(m,h)=>{F(m)});let B=Z(0);Ze(()=>oe.leafChange,()=>{let m=g.value,h=ae.value;ae.value="",g.value=parseInt(T.settings.expand_level),m===g.value&&F(g.value),No(()=>{ae.value=h})});let y={0:"",1:"",2:"",3:"",4:"",5:""};function W(m){let h=oe.headers.filter(k=>k.level===m).length;return m>0?`H${m}: ${h}`:"No expand"}let _=V(()=>oe.markdown?Xe:null),ae=Z("");function he(m,h){let k=/.*/;try{k=RegExp(m,"i")}catch(E){}finally{return k.test(h.label)}}function Me(m,h){return h.label.toLowerCase().contains(m.toLowerCase())}let de=V(()=>oe.regexSearch?he:Me),ie=V(()=>oe.headers.filter(m=>{let h={label:m.heading};return de.value(ae.value,h)}).length);function ge(m,h){return $e(this,null,function*(){if(h[0]===void 0)return;let k=h[0].key.split("-"),E=parseInt(k[2]),I=oe.headers[E].position.start.line,j=T.current_note;j&&(j.setEphemeralState({line:I}),setTimeout(()=>{j.setEphemeralState({line:I})},100))})}let Ve=V(()=>Ke(oe.headers));function Ke(m){return He(m)}function He(m){let h={children:[]},k=[{node:h,level:-1}];return m.forEach((E,I)=>{let j={label:E.heading,key:"item-"+E.level+"-"+I,line:E.position.start.line};for(;E.level<=k.last().level;)k.pop();let U=k.last().node;U.children===void 0&&(U.children=[]),U.children.push(j),k.push({node:j,level:E.level})}),h.children}be.use({extensions:[qw,Qw,Zw,Yw]}),be.use({walkTokens:Xw}),be.use({renderer:Jw});function Xe({option:m}){let h=be.parse(m.label).trim(),k=0,E=h.match(/.*?<\/mjx-container>/g);return h=(0,Od.sanitizeHTMLToDom)(`
${h}
`).children[0].innerHTML,h=h.replace(/.*?<\/math>/g,()=>E[k++]),R("div",{innerHTML:h})}function Qe(){return $e(this,null,function*(){let m=T.app.workspace.getActiveFile(),h=(yield T.app.vault.read(m)).split(` +Please report this to https://github.com/markedjs/marked.`,o.silent)return"

An error occurred:

"+Lo(r.message+"",!0)+"
";throw r}}be.options=be.setOptions=function(e){return Lt(be.defaults,e),kP(be.defaults),be};be.getDefaults=Hw;be.defaults=rl;be.use=function(...e){let o=Lt({},...e),t=be.defaults.extensions||{renderers:{},childTokens:{}},r;e.forEach(a=>{if(a.extensions&&(r=!0,a.extensions.forEach(l=>{if(!l.name)throw new Error("extension name required");if(l.renderer){let n=t.renderers?t.renderers[l.name]:null;n?t.renderers[l.name]=function(...i){let d=l.renderer.apply(this,i);return d===!1&&(d=n.apply(this,i)),d}:t.renderers[l.name]=l.renderer}if(l.tokenizer){if(!l.level||l.level!=="block"&&l.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");t[l.level]?t[l.level].unshift(l.tokenizer):t[l.level]=[l.tokenizer],l.start&&(l.level==="block"?t.startBlock?t.startBlock.push(l.start):t.startBlock=[l.start]:l.level==="inline"&&(t.startInline?t.startInline.push(l.start):t.startInline=[l.start]))}l.childTokens&&(t.childTokens[l.name]=l.childTokens)})),a.renderer){let l=be.defaults.renderer||new Fd;for(let n in a.renderer){let i=l[n];l[n]=(...d)=>{let s=a.renderer[n].apply(l,d);return s===!1&&(s=i.apply(l,d)),s}}o.renderer=l}if(a.tokenizer){let l=be.defaults.tokenizer||new Rd;for(let n in a.tokenizer){let i=l[n];l[n]=(...d)=>{let s=a.tokenizer[n].apply(l,d);return s===!1&&(s=i.apply(l,d)),s}}o.tokenizer=l}if(a.walkTokens){let l=be.defaults.walkTokens;o.walkTokens=function(n){a.walkTokens.call(this,n),l&&l.call(this,n)}}r&&(o.extensions=t),be.setOptions(o)})};be.walkTokens=function(e,o){for(let t of e)switch(o.call(be,t),t.type){case"table":{for(let r of t.header)be.walkTokens(r.tokens,o);for(let r of t.rows)for(let a of r)be.walkTokens(a.tokens,o);break}case"list":{be.walkTokens(t.items,o);break}default:be.defaults.extensions&&be.defaults.extensions.childTokens&&be.defaults.extensions.childTokens[t.type]?be.defaults.extensions.childTokens[t.type].forEach(function(r){be.walkTokens(t[r],o)}):t.tokens&&be.walkTokens(t.tokens,o)}};be.parseInline=function(e,o){if(typeof e=="undefined"||e===null)throw new Error("marked.parseInline(): input parameter is undefined or null");if(typeof e!="string")throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");o=Lt({},be.defaults,o||{}),$w(o);try{let t=er.lexInline(e,o);return o.walkTokens&&be.walkTokens(t,o.walkTokens),or.parseInline(t,o)}catch(t){if(t.message+=` +Please report this to https://github.com/markedjs/marked.`,o.silent)return"

An error occurred:

"+Lo(t.message+"",!0)+"
";throw t}};be.Parser=or;be.parser=or.parse;be.Renderer=Fd;be.TextRenderer=Tp;be.Lexer=er;be.lexer=er.lex;be.Tokenizer=Rd;be.Slugger=Rp;be.parse=be;var Gte=be.options,qte=be.setOptions,Qte=be.use,Zte=be.walkTokens,Yte=be.parseInline;var Xte=or.parse,Jte=er.lex;var al=Oa(require("obsidian"));var oe=Ht({activeView(){this.plugin.activateView(),this.refreshTree()},headers:[],dark:!0,cssChange:!1,markdown:!0,ellipsis:!1,labelDirection:"left",leafChange:!1,searchSupport:!0,levelSwitch:!0,hideUnsearched:!0,regexSearch:!1,autoExpand:!0,dragModify:!1,refreshTree(){this.leafChange=!this.leafChange},patchColor:!1,primaryColorLight:"",primaryColorDark:"",rainbowLine:!1,rainbowColor1:"",rainbowColor2:"",rainbowColor3:"",rainbowColor4:"",rainbowColor5:"",currentNote:null});var qw={name:"formula",level:"inline",start(e){var o;return(o=e.match(/\$/))==null?void 0:o.index},tokenizer(e,o){let r=/^\$([^\$]+)\$/.exec(e);if(r)return{type:"formula",raw:r[0],formula:r[1].trim()}},renderer(e){try{let o=(0,al.renderMath)(e.formula,!1).outerHTML;return(0,al.finishRenderMath)(),o}catch(o){return(0,al.loadMathJax)().then(()=>{oe.refreshTree()}),!1}}},Qw={name:"internal",level:"inline",start(e){var o;return(o=e.match(/\[\[/))==null?void 0:o.index},tokenizer(e,o){let r=/^\[\[([^\[\]]+?)\]\]/.exec(e);if(r){let a=/.*\|(.*)/.exec(r[1]);return{type:"internal",raw:r[0],internal:a?a[1]:r[1]}}},renderer(e){return`${e.internal}`}},Zw={name:"ref",level:"inline",start(e){var o;return(o=e.match(/\^/))==null?void 0:o.index},tokenizer(e,o){let r=/^(\^[A-Za-z0-9\-]+)$/.exec(e);if(r)return{type:"ref",raw:r[0],ref:r[1].trim()}},renderer(e){return""}},Yw={name:"highlight",level:"inline",start(e){var o;return(o=e.match(/==/))==null?void 0:o.index},tokenizer(e,o){let r=/^==([^=]+)==/.exec(e);if(r)return{type:"highlight",raw:r[0],internal:r[1]}},renderer(e){return`${e.internal}`}},Xw={name:"tag",level:"inline",start(e){var o;return(o=e.match(/^#|(?<=\s)#/))==null?void 0:o.index},tokenizer(e,o){let r=/^#([^\[\]{}:;'"`~,.<>?|\\!@#$%^&*()=+\d\s][^\[\]{}:;'"`~,.<>?|\\!@#$%^&*()=+\s]*)/.exec(e);if(r)return{type:"tag",raw:r[0],internal:r[1]}},renderer(e){return`#${e.internal}`}},Jw=e=>{e.type==="link"&&(e.href="javascript:void(0);")},eT={list(e,o,t){return o?`

${t}. ${e}

`:`

${e}

`},listitem(e,o,t){return`${e}`}};var Cd=le({__name:"Outline",setup(e,{expose:o}){o(),Jm(m=>({"8de97876-rainbowColor1":ar(d),"8de97876-rainbowColor2":ar(s),"8de97876-rainbowColor3":ar(u),"8de97876-rainbowColor4":ar(f),"8de97876-rainbowColor5":ar(c),"8de97876-locatedColor":ar(i)}));let t=Ht({common:{primaryColor:"",primaryColorHover:""},Slider:{handleSize:"10px",fillColor:"",fillColorHover:"",dotBorderActive:""},Tree:{nodeTextColor:"var(--nav-item-color)"}}),r=Ht({common:{primaryColor:"",primaryColorHover:""},Slider:{handleSize:"10px",fillColor:"",fillColorHover:"",dotBorderActive:""},Tree:{nodeTextColor:"var(--nav-item-color)"}}),a=V(()=>oe.dark?cd:null),l=V(()=>oe.dark?{color:"var(--icon-color)"}:{color:"var(--icon-color)"});function n(){let m=document.body.createEl("button",{cls:"mod-cta",attr:{style:"width: 0px; height: 0px;"}}),h=getComputedStyle(m,null).getPropertyValue("background-color");return m.remove(),h}let i=Z(n());Mo(()=>{if(oe.patchColor){t.common.primaryColor=t.common.primaryColorHover=t.Slider.fillColor=t.Slider.fillColorHover=oe.primaryColorLight,t.Slider.dotBorderActive=`2px solid ${oe.primaryColorLight}`,r.common.primaryColor=r.common.primaryColorHover=r.Slider.fillColor=r.Slider.fillColorHover=oe.primaryColorDark,r.Slider.dotBorderActive=`2px solid ${oe.primaryColorDark}`;return}if(oe.cssChange===oe.cssChange){let m=n();t.common.primaryColor=t.common.primaryColorHover=t.Slider.fillColor=t.Slider.fillColorHover=r.common.primaryColor=r.common.primaryColorHover=r.Slider.fillColor=r.Slider.fillColorHover=m,t.Slider.dotBorderActive=r.Slider.dotBorderActive=`2px solid ${m}`,i.value=m}});let d=Z(""),s=Z(""),u=Z(""),f=Z(""),c=Z("");function p(m){return`${parseInt(m.slice(1,3),16)},${parseInt(m.slice(3,5),16)},${parseInt(m.slice(5,7),16)}`}Mo(()=>{if(oe.rainbowLine){d.value=`rgba(${p(oe.rainbowColor1)}, 0.6)`,s.value=`rgba(${p(oe.rainbowColor2)}, 0.6)`,u.value=`rgba(${p(oe.rainbowColor3)}, 0.6)`,f.value=`rgba(${p(oe.rainbowColor4)}, 0.6)`,c.value=`rgba(${p(oe.rainbowColor5)}, 0.6)`;return}oe.cssChange===oe.cssChange&&(d.value=s.value=u.value=f.value=c.value="var(--nav-indentation-guide-color)")}),fo(()=>{addEventListener("quiet-outline-reset",wo)}),oa(()=>{removeEventListener("quiet-outline-reset",wo)});let x=St(),T=x.appContext.config.globalProperties.plugin,C=x.appContext.config.globalProperties.container;fo(()=>{document.addEventListener("scroll",D,!0)}),oa(()=>{document.removeEventListener("scroll",D,!0)});let S=(m,h)=>"item-"+m.level+"-"+h,D=(0,Od.debounce)($,100);function $(m){let h=m.target;if(!h.classList.contains("markdown-preview-view")&&!h.classList.contains("cm-scroller"))return;let k=T.current_note;if(!k)return;let E=k.currentMode.getScroll()+8,I=null,j=oe.headers.length;for(;--j>=0;)if(oe.headers[j].position.start.line<=E){I=oe.headers[j];break}if(!I)return;let U=j;if(T.settings.auto_expand){let H=U0&&(oe.headers[j].level{let H=C.querySelector(`#no-${U}`);H&&(H.addClass("located"),H.scrollIntoView({block:"center",behavior:"smooth"}))},0)}let O=V(()=>m=>{let h=parseInt(m.option.key.split("-")[1]),k=parseInt(m.option.key.split("-")[2]);return{class:`level-${h}`,id:`no-${k}`,"aria-label":oe.ellipsis?m.option.label:"","aria-label-position":oe.labelDirection}}),g=Z(parseInt(T.settings.expand_level)),v=Z([]);F(g.value);function w(m,h){v.value=m}function F(m){v.value=oe.headers.map((h,k)=>"item-"+h.level+"-"+k).filter((h,k,E)=>{let I=j=>parseInt(j.split("-")[1]);return k===E.length-1||I(E[k])>=I(E[k+1])?!1:I(h)<=m})}Ze(g,(m,h)=>{F(m)});let B=Z(0);Ze(()=>oe.leafChange,()=>{let m=g.value,h=ae.value;ae.value="",g.value=parseInt(T.settings.expand_level),m===g.value&&F(g.value),No(()=>{ae.value=h})});let y={0:"",1:"",2:"",3:"",4:"",5:""};function W(m){let h=oe.headers.filter(k=>k.level===m).length;return m>0?`H${m}: ${h}`:"No expand"}let _=V(()=>oe.markdown?Xe:null),ae=Z("");function he(m,h){let k=/.*/;try{k=RegExp(m,"i")}catch(E){}finally{return k.test(h.label)}}function Me(m,h){return h.label.toLowerCase().contains(m.toLowerCase())}let de=V(()=>oe.regexSearch?he:Me),ie=V(()=>oe.headers.filter(m=>{let h={label:m.heading};return de.value(ae.value,h)}).length);function ge(m,h){return $e(this,null,function*(){if(h[0]===void 0)return;let k=h[0].key.split("-"),E=parseInt(k[2]),I=oe.headers[E].position.start.line,j=T.current_note;j&&(j.setEphemeralState({line:I}),setTimeout(()=>{j.setEphemeralState({line:I})},100))})}let Ve=V(()=>Ke(oe.headers));function Ke(m){return He(m)}function He(m){let h={children:[]},k=[{node:h,level:-1}];return m.forEach((E,I)=>{let j={label:E.heading,key:"item-"+E.level+"-"+I,line:E.position.start.line};for(;E.level<=k.last().level;)k.pop();let U=k.last().node;U.children===void 0&&(U.children=[]),U.children.push(j),k.push({node:j,level:E.level})}),h.children}be.use({extensions:[qw,Qw,Yw,Xw,Zw]}),be.use({walkTokens:Jw}),be.use({renderer:eT});function Xe({option:m}){let h=be.parse(m.label).trim(),k=0,E=h.match(/.*?<\/mjx-container>/g);return h=h.replace(/.*?<\/mjx-container>/g,()=>""),h=(0,Od.sanitizeHTMLToDom)(`
${h}
`).children[0].innerHTML,h=h.replace(/.*?<\/math>/g,()=>E[k++]),R("div",{innerHTML:h})}function Qe(){return $e(this,null,function*(){let m=T.app.workspace.getActiveFile(),h=(yield T.app.vault.read(m)).split(` `),k=T.current_note,E=()=>{k.setEphemeralState({line:h.length-5})};E(),setTimeout(E,100)})}function wo(){ae.value="",g.value=parseInt(T.settings.expand_level),F(g.value)}function Do(E){return $e(this,arguments,function*({node:m,dragNode:h,dropPosition:k}){let I=T.app.workspace.getActiveFile(),j=(yield T.app.vault.read(I)).split(` `),U=Ie(v.value),L=we(h),K=L+to(h)-1,H=0,b=0;switch(k){case"inside":m=m.children.last();case"after":{L>we(m)+to(m)?(H=we(m)+to(m),b=L-1):(H=K+1,b=we(m)+to(m)-1);break}case"before":{L>we(m)?(H=we(m),b=L-1):(H=L+to(h),b=we(m)-1);break}}let N=qe(m)-qe(h);ho(U,L,K,H,b,N),We(j,Be(L)[0],Be(K)[1]||j.length-1,Be(H)[0],Be(b)[1]||j.length-1,N),T.app.vault.modify(I,j.join(` -`))})}function Be(m){var h;return[oe.headers[m].position.start.line,((h=oe.headers[m+1])==null?void 0:h.position.start.line)-1]}function We(m,h,k,E,I,j){let U=0;if(h0?m[L]=Array(j).fill("#").join("")+m[L]:m[L]=m[L].slice(-j))}function ho(m,h,k,E,I,j){let U=0,L=0;h{let b=we(K);h<=b&&b<=k&&(m[H]=`item-${qe(K)+j}-${U+(b-h)}`),E<=b&&b<=I&&(m[H]=`item-${qe(K)}-${L+(b-E)}`)})}function we(m){return typeof m!="string"&&(m=m.key),parseInt(m.split("-")[2])}function qe(m){return typeof m!="string"&&(m=m.key),parseInt(m.split("-")[1])}function to(m){return m.children?m.children.reduce((h,k)=>h+to(k),1):1}let vo={lightThemeConfig:t,darkThemeConfig:r,get theme(){return a},set theme(m){a=m},get iconColor(){return l},set iconColor(m){l=m},getDefaultColor:n,get locatedColor(){return i},set locatedColor(m){i=m},get rainbowColor1(){return d},set rainbowColor1(m){d=m},get rainbowColor2(){return s},set rainbowColor2(m){s=m},get rainbowColor3(){return u},set rainbowColor3(m){u=m},get rainbowColor4(){return f},set rainbowColor4(m){f=m},get rainbowColor5(){return c},set rainbowColor5(m){c=m},hexToRGB:p,get compomentSelf(){return x},set compomentSelf(m){x=m},get plugin(){return T},set plugin(m){T=m},get container(){return C},set container(m){C=m},get toKey(){return S},set toKey(m){S=m},get handleScroll(){return D},set handleScroll(m){D=m},_handleScroll:$,setAttrs:O,get level(){return g},set level(m){g=m},get expanded(){return v},set expanded(m){v=m},expand:w,switchLevel:F,get update_tree(){return B},set update_tree(m){B=m},marks:y,formatTooltip:W,get renderMethod(){return _},set renderMethod(m){_=m},get pattern(){return ae},set pattern(m){ae=m},regexFilter:he,simpleFilter:Me,get filter(){return de},set filter(m){de=m},get matchCount(){return ie},set matchCount(m){ie=m},jump:ge,get data2(){return Ve},set data2(m){Ve=m},makeTree:Ke,arrToTree:He,renderLabel:Xe,toBottom:Qe,reset:wo,onDrop:Do,getLine:Be,moveSection:We,changeExpandKey:ho,getNo:we,getLevel:qe,countTree:to,get NTree(){return dp},get NButton(){return Cu},get NInput(){return hu},get NSlider(){return lp},get NConfigProvider(){return Hu},get Icon(){return Sp},get SettingsBackupRestoreRound(){return wp},get ArrowCircleDownRound(){return gp},get store(){return oe}};return Object.defineProperty(vo,"__isScriptSetup",{enumerable:!1,value:!0}),vo}});var $P={id:"container"},UP={key:0,class:"function-bar"},KP={key:2};function eT(e,o,t,r,a,l){return ht(),kr("div",$P,[mo(r.NConfigProvider,{theme:r.theme,"theme-overrides":r.theme===null?r.lightThemeConfig:r.darkThemeConfig},{default:Jr(()=>[r.store.searchSupport?(ht(),kr("div",UP,[mo(r.NButton,{size:"small",circle:"",onClick:r.toBottom,"aria-label":"To Bottom"},{icon:Jr(()=>[mo(r.Icon,null,{default:Jr(()=>[mo(r.ArrowCircleDownRound,{style:Sr(r.iconColor)},null,8,["style"])]),_:1})]),_:1}),mo(r.NButton,{size:"small",circle:"",onClick:r.reset,"aria-label":"Reset"},{icon:Jr(()=>[mo(r.Icon,null,{default:Jr(()=>[mo(r.SettingsBackupRestoreRound,{style:Sr(r.iconColor)},null,8,["style"])]),_:1})]),_:1}),mo(r.NInput,{value:r.pattern,"onUpdate:value":o[0]||(o[0]=n=>r.pattern=n),placeholder:"Input to search",size:"small",clearable:""},null,8,["value"])])):ei("v-if",!0),r.store.levelSwitch?(ht(),bl(r.NSlider,{key:1,value:r.level,"onUpdate:value":o[1]||(o[1]=n=>r.level=n),marks:r.marks,step:"mark",min:0,max:5,style:{margin:"4px 0"},"format-tooltip":r.formatTooltip},null,8,["value"])):ei("v-if",!0),r.pattern?(ht(),kr("code",KP,vd(r.matchCount)+" result(s): ",1)):ei("v-if",!0),(ht(),bl(r.NTree,{"block-line":"",pattern:r.pattern,data:r.data2,"on-update:selected-keys":r.jump,"render-label":r.renderMethod,"node-props":r.setAttrs,"expanded-keys":r.expanded,"on-update:expanded-keys":r.expand,key:r.update_tree,filter:r.filter,"show-irrelevant-nodes":!r.store.hideUnsearched,class:Gr({ellipsis:r.store.ellipsis}),draggable:r.store.dragModify,onDrop:r.onDrop},null,8,["pattern","data","render-label","node-props","expanded-keys","filter","show-irrelevant-nodes","class","draggable"]))]),_:1},8,["theme","theme-overrides"])])}Cd.render=eT;Cd.__file="src/Outline.vue";var oT=Cd;var Ta="quiet-outline",Fp=class extends tT.ItemView{constructor(o,t){super(o);this.plugin=t}getViewType(){return Ta}getDisplayText(){return"Quiet Outline"}getIcon(){return"lines-of-text"}onOpen(){return $e(this,null,function*(){let o=this.containerEl.children[1];o.empty();let t=o.createEl("div",{cls:"quiet-outline"});this.vueApp=mc(oT),this.vueApp.config.globalProperties.plugin=this.plugin,this.vueApp.config.globalProperties.container=t,this.vueApp.mount(t)})}onClose(){return $e(this,null,function*(){})}onunload(){this.vueApp.unmount()}};var Jo=Oa(require("obsidian"));var rT={"Settings for Quiet Outline.":"Quiet Outline \u7684\u8BBE\u7F6E\u9875\u9762","Set Primary Color":"\u8BBE\u7F6E\u4E3B\u989C\u8272 \u660E/\u6697","Patch default color":"\u7528\u8BBE\u7F6E\u8986\u76D6\u9ED8\u8BA4\u4E3B\u989C\u8272","Set Rainbow Line Color":"\u8BBE\u7F6E\u5F69\u8679\u5927\u7EB2\u7EBF\u989C\u8272","Render Markdown":"\u6E32\u67D3markdown\u5143\u7D20","Render heading string as markdown format.":"\u4EE5markdown\u683C\u5F0F\u6E32\u67D3\u6807\u9898\u6587\u672C","Search Support":"\u5F00\u542F\u641C\u7D22","Add a searching area on the top":"\u5728\u9876\u90E8\u6DFB\u52A0\u4E00\u4E2A\u641C\u7D22\u6846","Level Switch":"\u5C42\u7EA7\u5207\u6362\u5668","Expand headings to certain level.":"\u5C55\u5F00\u6807\u9898\u5230\u7279\u5B9A\u5C42\u7EA7","Default Level":"\u9ED8\u8BA4\u5C42\u7EA7","Default expand level when opening a new note.":"\u6253\u5F00\u65B0\u7B14\u8BB0\u65F6\uFF0C\u6807\u9898\u5C55\u5F00\u5230\u7684\u9ED8\u8BA4\u5C42\u7EA7","No expand":"\u4E0D\u5C55\u5F00","Hide Unsearched":"\u8FC7\u6EE4\u672A\u641C\u7D22\u7684\u6807\u9898","Hide irrelevant headings when searching":"\u641C\u7D22\u65F6\uFF0C\u9690\u85CF\u672A\u547D\u4E2D\u7684\u6807\u9898","Regex Search":"\u6B63\u5219\u641C\u7D22","Search headings using regular expression":"\u652F\u6301\u4F7F\u7528\u6B63\u5219\u8868\u8FBE\u5F0F\u6765\u641C\u7D22","Auto Expand":"\u81EA\u52A8\u5C55\u5F00","Auto expand and collapse headings when scrolling":"\u5F53\u6EDA\u52A8\u9875\u9762\u65F6\uFF0C\u81EA\u52A8\u8DDF\u8E2A\u5F53\u524D\u6240\u5728\u6807\u9898\u5E76\u5C55\u5F00",Ellipsis:"\u7701\u7565\u957F\u6807\u9898","Tooltip direction":"\u5B8C\u6574\u6807\u9898\u663E\u793A\u65B9\u5411","Keep one line per heading":"\u4FDD\u6301\u6807\u9898\u53EA\u6709\u4E00\u884C,\u7701\u7565\u591A\u4F59\u90E8\u5206","Drag headings to modify note":"\u542F\u7528\u62D6\u62FD\u6807\u9898\u6765\u8C03\u6574\u6587\u6863\u7ED3\u679C","\u2757 This will modify note content, be careful.":"\u2757 \u62D6\u62FD\u64CD\u4F5C\u4F1A\u6539\u53D8\u6587\u6863\u5185\u5BB9\uFF0C\u5C0F\u5FC3\u4F7F\u7528"};var Op={"Settings for Quiet Outline.":"Settings for Quiet Outline.","Set Primary Color":"Set Primary Color Light/Dark","Patch default color":"Patch default color","Set Rainbow Line Color":"Set Rainbow Line Color","Render Markdown":"Render Markdown","Render heading string as markdown format.":"Render heading string as markdown format","Search Support":"Search Support","Add a searching area on the top":"Add a search area on the top","Level Switch":"Level Switch","Expand headings to certain level.":"Expand headings to certain level","Default Level":"Default Level","Default expand level when opening a new note.":"Default expand level","No expand":"No expand","Hide Unsearched":"Hide Unsearched","Hide irrelevant headings when searching":"Hide irrelevant headings when searching","Regex Search":"Regex Search","Search headings using regular expression":"Search headings using regular expression","Auto Expand":"Auto Expand","Auto expand and collapse headings when scrolling":"Auto expand and collapse headings when scrolling",Ellipsis:"Ellipsis","Tooltip direction":"Tooltip direction","Keep one line per heading":"Keep one line per heading","Drag headings to modify note":"Drag headings to modify note","\u2757 This will modify note content, be careful.":"\u2757 This will modify note content, be careful"};var aT={"Settings for Quiet Outline.":"Quiet Outline \u7684\u8A2D\u5B9A\u9801\u9762","Render Markdown":"\u6E32\u67D3markdown\u5143\u7D20","Render heading string as markdown format.":"\u4EE5markdown\u683C\u5F0F\u6E32\u67D3\u6A19\u984C\u6587\u5B57","Search Support":"\u958B\u555F\u641C\u7D22","Add a searching area on the top":"\u5728\u9802\u90E8\u65B0\u589E\u4E00\u500B\u641C\u7D22\u6846","Level Switch":"\u5C64\u7D1A\u5207\u63DB","Expand headings to certain level.":"\u5C55\u958B\u6A19\u984C\u5230\u7279\u5B9A\u5C64\u7D1A","Default Level":"\u9810\u8A2D\u5C64\u7D1A","Default expand level when opening a new note.":"\u6253\u958B\u65B0\u7B46\u8A18\u6642\uFF0C\u6A19\u984C\u5C55\u958B\u5230\u7684\u9810\u8A2D\u5C64\u7D1A","No expand":"\u4E0D\u5C55\u958B","Hide Unsearched":"\u904E\u6FFE\u672A\u641C\u7D22\u7684\u6A19\u984C","Hide irrelevant headings when searching":"\u641C\u7D22\u6642\uFF0C\u96B1\u85CF\u672A\u547D\u4E2D\u7684\u6A19\u984C","Regex Search":"\u6B63\u5247\u641C\u7D22","Search headings using regular expression":"\u652F\u63F4\u4F7F\u7528\u6B63\u5247\u904B\u7B97\u5F0F\u4F86\u641C\u7D22","Auto Expand":"\u81EA\u52D5\u5C55\u958B","Auto expand and collapse headings when scrolling":"\u7576\u6372\u52D5\u9801\u9762\u6642\uFF0C\u81EA\u52D5\u8DDF\u96A8\u76EE\u524D\u6240\u5728\u6A19\u984C\u4E26\u5C55\u958B",Ellipsis:"\u7701\u7565\u9577\u6A19\u984C","Keep one line per heading":"\u4FDD\u6301\u6A19\u984C\u53EA\u6709\u4E00\u884C\uFF0C\u7701\u7565\u591A\u9918\u90E8\u5206"};var GP={en:Op,zh:rT,"zh-TW":aT},qP=window.localStorage.getItem("language"),lT=GP[qP||"en"];function po(e){return lT&&lT[e]||Op[e]}var nT={patch_color:!0,primary_color_light:"#18a058",primary_color_dark:"#63e2b7",rainbow_line:!1,rainbow_color_1:"#FD8B1F",rainbow_color_2:"#FFDF00",rainbow_color_3:"#07EB23",rainbow_color_4:"#2D8FF0",rainbow_color_5:"#BC01E2",search_support:!0,level_switch:!0,markdown:!0,expand_level:"0",hide_unsearched:!0,auto_expand:!0,regex_search:!1,ellipsis:!1,label_direction:"left",drag_modify:!1},Cp=class extends Jo.PluginSettingTab{constructor(o,t){super(o,t);this.plugin=t}display(){let{containerEl:o}=this;o.empty(),o.createEl("h2",{text:po("Settings for Quiet Outline.")}),new Jo.Setting(o).setName(po("Set Primary Color")).addToggle(t=>t.setTooltip(po("Patch default color")).setValue(this.plugin.settings.patch_color).onChange(r=>$e(this,null,function*(){this.plugin.settings.patch_color=r,oe.patchColor=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.primary_color_light).onChange(r=>$e(this,null,function*(){this.plugin.settings.primary_color_light=r,oe.primaryColorLight=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.primary_color_dark).onChange(r=>$e(this,null,function*(){this.plugin.settings.primary_color_dark=r,oe.primaryColorDark=r,this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Set Rainbow Line Color")).addToggle(t=>t.setTooltip(po("Patch default color")).setValue(this.plugin.settings.rainbow_line).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_line=r,oe.rainbowLine=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_1).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_1=r,oe.rainbowColor1=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_2).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_2=r,oe.rainbowColor2=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_3).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_3=r,oe.rainbowColor3=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_4).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_4=r,oe.rainbowColor4=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_5).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_5=r,oe.rainbowColor5=r,this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Render Markdown")).setDesc(po("Render heading string as markdown format.")).addToggle(t=>t.setValue(this.plugin.settings.markdown).onChange(r=>$e(this,null,function*(){this.plugin.settings.markdown=r,oe.markdown=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Ellipsis")).setDesc(po("Keep one line per heading")).addToggle(t=>t.setValue(this.plugin.settings.ellipsis).onChange(r=>$e(this,null,function*(){this.plugin.settings.ellipsis=r,oe.ellipsis=r,yield this.plugin.saveSettings(),oe.refreshTree(),this.display()}))),this.plugin.settings.ellipsis&&new Jo.Setting(o).setName(po("Tooltip direction")).addDropdown(t=>t.addOption("left","Left").addOption("right","Right").addOption("top","Top").addOption("bottom","Bottom").setValue(this.plugin.settings.label_direction).onChange(r=>$e(this,null,function*(){this.plugin.settings.label_direction=r,oe.labelDirection=r,yield this.plugin.saveSettings(),oe.refreshTree()}))),new Jo.Setting(o).setName(po("Search Support")).setDesc(po("Add a searching area on the top")).addToggle(t=>t.setValue(this.plugin.settings.search_support).onChange(r=>$e(this,null,function*(){this.plugin.settings.search_support=r,oe.searchSupport=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Level Switch")).setDesc(po("Expand headings to certain level.")).addToggle(t=>t.setValue(this.plugin.settings.level_switch).onChange(r=>$e(this,null,function*(){this.plugin.settings.level_switch=r,oe.levelSwitch=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Default Level")).setDesc(po("Default expand level when opening a new note.")).addDropdown(t=>t.addOption("0",po("No expand")).addOption("1","H1").addOption("2","H2").addOption("3","H3").addOption("4","H4").addOption("5","H5").setValue(this.plugin.settings.expand_level).onChange(r=>$e(this,null,function*(){this.plugin.settings.expand_level=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Hide Unsearched")).setDesc(po("Hide irrelevant headings when searching")).addToggle(t=>t.setValue(this.plugin.settings.hide_unsearched).onChange(r=>$e(this,null,function*(){this.plugin.settings.hide_unsearched=r,oe.hideUnsearched=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Regex Search")).setDesc(po("Search headings using regular expression")).addToggle(t=>t.setValue(this.plugin.settings.regex_search).onChange(r=>$e(this,null,function*(){this.plugin.settings.regex_search=r,oe.regexSearch=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Auto Expand")).setDesc(po("Auto expand and collapse headings when scrolling")).addToggle(t=>t.setValue(this.plugin.settings.auto_expand).onChange(r=>$e(this,null,function*(){this.plugin.settings.auto_expand=r,oe.autoExpand=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Drag headings to modify note")).setDesc(po("\u2757 This will modify note content, be careful.")).addToggle(t=>t.setValue(this.plugin.settings.drag_modify).onChange(r=>$e(this,null,function*(){this.plugin.settings.drag_modify=r,oe.dragModify=r,yield this.plugin.saveSettings()})))}};var bp=class extends Kr.Plugin{onload(){return $e(this,null,function*(){yield this.loadSettings(),this.initStore(),this.registerView(Ta,o=>new Fp(o,this)),this.registerListener(),this.registerCommand(),this.addSettingTab(new Cp(this.app,this))})}initStore(){oe.headers=[],oe.dark=document.body.hasClass("theme-dark"),oe.markdown=this.settings.markdown,oe.ellipsis=this.settings.ellipsis,oe.labelDirection=this.settings.label_direction,oe.leafChange=!1,oe.searchSupport=this.settings.search_support,oe.levelSwitch=this.settings.level_switch,oe.hideUnsearched=this.settings.hide_unsearched,oe.regexSearch=this.settings.regex_search,oe.autoExpand=this.settings.auto_expand,oe.dragModify=this.settings.drag_modify,oe.patchColor=this.settings.patch_color,oe.primaryColorLight=this.settings.primary_color_light,oe.primaryColorDark=this.settings.primary_color_dark,oe.rainbowLine=this.settings.rainbow_line,oe.rainbowColor1=this.settings.rainbow_color_1,oe.rainbowColor2=this.settings.rainbow_color_2,oe.rainbowColor3=this.settings.rainbow_color_3,oe.rainbowColor4=this.settings.rainbow_color_4,oe.rainbowColor5=this.settings.rainbow_color_5}registerListener(){this.registerEvent(this.app.workspace.on("css-change",()=>{oe.dark=document.body.hasClass("theme-dark"),oe.cssChange=!oe.cssChange}));let o=()=>{let r=this.app.workspace.getActiveFile();if(r){let a=this.app.metadataCache.getFileCache(r).headings;if(a){oe.headers=a;return}}oe.headers=[]},t=(0,Kr.debounce)(o,300,!0);this.registerEvent(this.app.metadataCache.on("changed",()=>{t()})),this.registerEvent(this.app.workspace.on("active-leaf-change",r=>$e(this,null,function*(){let a=this.app.workspace.getActiveViewOfType(Kr.MarkdownView);if(a){if(!this.current_note){this.current_note=a,this.current_file=a.file.path,o(),oe.refreshTree();return}a.file.path===this.current_file||oe.refreshTree(),o(),this.current_note=a,this.current_file=a.file.path}})))}registerCommand(){this.addCommand({id:"quiet-outline",name:"Quiet Outline",callback:()=>{this.activateView()}}),this.addCommand({id:"quiet-outline-reset",name:"Reset expanding level",callback:()=>{dispatchEvent(new CustomEvent("quiet-outline-reset"))}}),this.addCommand({id:"quiet-outline-focus-input",name:"Focus on input",callback:()=>{let o=document.querySelector("input.n-input__input-el");o&&o.focus()}}),this.addCommand({id:"quiet-outline-copy-as-text",name:"Copy as plain text",callback:()=>$e(this,null,function*(){let o=oe.headers.map(t=>" ".repeat(t.level-1)+t.heading);yield navigator.clipboard.writeText(o.join(` -`)),new Kr.Notice("Headings copied")})})}onunload(){this.app.workspace.detachLeavesOfType(Ta)}loadSettings(){return $e(this,null,function*(){this.settings=Object.assign({},nT,yield this.loadData())})}saveSettings(){return $e(this,null,function*(){yield this.saveData(this.settings)})}activateView(){return $e(this,null,function*(){this.app.workspace.getLeavesOfType(Ta).length===0&&(yield this.app.workspace.getRightLeaf(!1).setViewState({type:Ta,active:!0})),this.app.workspace.revealLeaf(this.app.workspace.getLeavesOfType(Ta)[0])})}};var QP=bp; +`))})}function Be(m){var h;return[oe.headers[m].position.start.line,((h=oe.headers[m+1])==null?void 0:h.position.start.line)-1]}function We(m,h,k,E,I,j){let U=0;if(h0?m[L]=Array(j).fill("#").join("")+m[L]:m[L]=m[L].slice(-j))}function ho(m,h,k,E,I,j){let U=0,L=0;h{let b=we(K);h<=b&&b<=k&&(m[H]=`item-${qe(K)+j}-${U+(b-h)}`),E<=b&&b<=I&&(m[H]=`item-${qe(K)}-${L+(b-E)}`)})}function we(m){return typeof m!="string"&&(m=m.key),parseInt(m.split("-")[2])}function qe(m){return typeof m!="string"&&(m=m.key),parseInt(m.split("-")[1])}function to(m){return m.children?m.children.reduce((h,k)=>h+to(k),1):1}let vo={lightThemeConfig:t,darkThemeConfig:r,get theme(){return a},set theme(m){a=m},get iconColor(){return l},set iconColor(m){l=m},getDefaultColor:n,get locatedColor(){return i},set locatedColor(m){i=m},get rainbowColor1(){return d},set rainbowColor1(m){d=m},get rainbowColor2(){return s},set rainbowColor2(m){s=m},get rainbowColor3(){return u},set rainbowColor3(m){u=m},get rainbowColor4(){return f},set rainbowColor4(m){f=m},get rainbowColor5(){return c},set rainbowColor5(m){c=m},hexToRGB:p,get compomentSelf(){return x},set compomentSelf(m){x=m},get plugin(){return T},set plugin(m){T=m},get container(){return C},set container(m){C=m},get toKey(){return S},set toKey(m){S=m},get handleScroll(){return D},set handleScroll(m){D=m},_handleScroll:$,setAttrs:O,get level(){return g},set level(m){g=m},get expanded(){return v},set expanded(m){v=m},expand:w,switchLevel:F,get update_tree(){return B},set update_tree(m){B=m},marks:y,formatTooltip:W,get renderMethod(){return _},set renderMethod(m){_=m},get pattern(){return ae},set pattern(m){ae=m},regexFilter:he,simpleFilter:Me,get filter(){return de},set filter(m){de=m},get matchCount(){return ie},set matchCount(m){ie=m},jump:ge,get data2(){return Ve},set data2(m){Ve=m},makeTree:Ke,arrToTree:He,renderLabel:Xe,toBottom:Qe,reset:wo,onDrop:Do,getLine:Be,moveSection:We,changeExpandKey:ho,getNo:we,getLevel:qe,countTree:to,get NTree(){return dp},get NButton(){return Cu},get NInput(){return hu},get NSlider(){return lp},get NConfigProvider(){return Hu},get Icon(){return Sp},get SettingsBackupRestoreRound(){return wp},get ArrowCircleDownRound(){return gp},get store(){return oe}};return Object.defineProperty(vo,"__isScriptSetup",{enumerable:!1,value:!0}),vo}});var UP={id:"container"},KP={key:0,class:"function-bar"},GP={key:2};function oT(e,o,t,r,a,l){return ht(),kr("div",UP,[mo(r.NConfigProvider,{theme:r.theme,"theme-overrides":r.theme===null?r.lightThemeConfig:r.darkThemeConfig},{default:Jr(()=>[r.store.searchSupport?(ht(),kr("div",KP,[mo(r.NButton,{size:"small",circle:"",onClick:r.toBottom,"aria-label":"To Bottom"},{icon:Jr(()=>[mo(r.Icon,null,{default:Jr(()=>[mo(r.ArrowCircleDownRound,{style:Sr(r.iconColor)},null,8,["style"])]),_:1})]),_:1}),mo(r.NButton,{size:"small",circle:"",onClick:r.reset,"aria-label":"Reset"},{icon:Jr(()=>[mo(r.Icon,null,{default:Jr(()=>[mo(r.SettingsBackupRestoreRound,{style:Sr(r.iconColor)},null,8,["style"])]),_:1})]),_:1}),mo(r.NInput,{value:r.pattern,"onUpdate:value":o[0]||(o[0]=n=>r.pattern=n),placeholder:"Input to search",size:"small",clearable:""},null,8,["value"])])):ei("v-if",!0),r.store.levelSwitch?(ht(),bl(r.NSlider,{key:1,value:r.level,"onUpdate:value":o[1]||(o[1]=n=>r.level=n),marks:r.marks,step:"mark",min:0,max:5,style:{margin:"4px 0"},"format-tooltip":r.formatTooltip},null,8,["value"])):ei("v-if",!0),r.pattern?(ht(),kr("code",GP,vd(r.matchCount)+" result(s): ",1)):ei("v-if",!0),(ht(),bl(r.NTree,{"block-line":"",pattern:r.pattern,data:r.data2,"on-update:selected-keys":r.jump,"render-label":r.renderMethod,"node-props":r.setAttrs,"expanded-keys":r.expanded,"on-update:expanded-keys":r.expand,key:r.update_tree,filter:r.filter,"show-irrelevant-nodes":!r.store.hideUnsearched,class:Gr({ellipsis:r.store.ellipsis}),draggable:r.store.dragModify,onDrop:r.onDrop},null,8,["pattern","data","render-label","node-props","expanded-keys","filter","show-irrelevant-nodes","class","draggable"]))]),_:1},8,["theme","theme-overrides"])])}Cd.render=oT;Cd.__file="src/Outline.vue";var tT=Cd;var Ta="quiet-outline",Fp=class extends rT.ItemView{constructor(o,t){super(o);this.plugin=t}getViewType(){return Ta}getDisplayText(){return"Quiet Outline"}getIcon(){return"lines-of-text"}onOpen(){return $e(this,null,function*(){let o=this.containerEl.children[1];o.empty();let t=o.createEl("div",{cls:"quiet-outline"});this.vueApp=mc(tT),this.vueApp.config.globalProperties.plugin=this.plugin,this.vueApp.config.globalProperties.container=t,this.vueApp.mount(t)})}onClose(){return $e(this,null,function*(){})}onunload(){this.vueApp.unmount()}};var Jo=Oa(require("obsidian"));var aT={"Settings for Quiet Outline.":"Quiet Outline \u7684\u8BBE\u7F6E\u9875\u9762","Set Primary Color":"\u8BBE\u7F6E\u4E3B\u989C\u8272 \u660E/\u6697","Patch default color":"\u7528\u8BBE\u7F6E\u8986\u76D6\u9ED8\u8BA4\u4E3B\u989C\u8272","Set Rainbow Line Color":"\u8BBE\u7F6E\u5F69\u8679\u5927\u7EB2\u7EBF\u989C\u8272","Render Markdown":"\u6E32\u67D3markdown\u5143\u7D20","Render heading string as markdown format.":"\u4EE5markdown\u683C\u5F0F\u6E32\u67D3\u6807\u9898\u6587\u672C","Search Support":"\u5F00\u542F\u641C\u7D22","Add a searching area on the top":"\u5728\u9876\u90E8\u6DFB\u52A0\u4E00\u4E2A\u641C\u7D22\u6846","Level Switch":"\u5C42\u7EA7\u5207\u6362\u5668","Expand headings to certain level.":"\u5C55\u5F00\u6807\u9898\u5230\u7279\u5B9A\u5C42\u7EA7","Default Level":"\u9ED8\u8BA4\u5C42\u7EA7","Default expand level when opening a new note.":"\u6253\u5F00\u65B0\u7B14\u8BB0\u65F6\uFF0C\u6807\u9898\u5C55\u5F00\u5230\u7684\u9ED8\u8BA4\u5C42\u7EA7","No expand":"\u4E0D\u5C55\u5F00","Hide Unsearched":"\u8FC7\u6EE4\u672A\u641C\u7D22\u7684\u6807\u9898","Hide irrelevant headings when searching":"\u641C\u7D22\u65F6\uFF0C\u9690\u85CF\u672A\u547D\u4E2D\u7684\u6807\u9898","Regex Search":"\u6B63\u5219\u641C\u7D22","Search headings using regular expression":"\u652F\u6301\u4F7F\u7528\u6B63\u5219\u8868\u8FBE\u5F0F\u6765\u641C\u7D22","Auto Expand":"\u81EA\u52A8\u5C55\u5F00","Auto expand and collapse headings when scrolling":"\u5F53\u6EDA\u52A8\u9875\u9762\u65F6\uFF0C\u81EA\u52A8\u8DDF\u8E2A\u5F53\u524D\u6240\u5728\u6807\u9898\u5E76\u5C55\u5F00",Ellipsis:"\u7701\u7565\u957F\u6807\u9898","Tooltip direction":"\u5B8C\u6574\u6807\u9898\u663E\u793A\u65B9\u5411","Keep one line per heading":"\u4FDD\u6301\u6807\u9898\u53EA\u6709\u4E00\u884C,\u7701\u7565\u591A\u4F59\u90E8\u5206","Drag headings to modify note":"\u542F\u7528\u62D6\u62FD\u6807\u9898\u6765\u8C03\u6574\u6587\u6863\u7ED3\u679C","\u2757 This will modify note content, be careful.":"\u2757 \u62D6\u62FD\u64CD\u4F5C\u4F1A\u6539\u53D8\u6587\u6863\u5185\u5BB9\uFF0C\u5C0F\u5FC3\u4F7F\u7528"};var Op={"Settings for Quiet Outline.":"Settings for Quiet Outline.","Set Primary Color":"Set Primary Color Light/Dark","Patch default color":"Patch default color","Set Rainbow Line Color":"Set Rainbow Line Color","Render Markdown":"Render Markdown","Render heading string as markdown format.":"Render heading string as markdown format","Search Support":"Search Support","Add a searching area on the top":"Add a search area on the top","Level Switch":"Level Switch","Expand headings to certain level.":"Expand headings to certain level","Default Level":"Default Level","Default expand level when opening a new note.":"Default expand level","No expand":"No expand","Hide Unsearched":"Hide Unsearched","Hide irrelevant headings when searching":"Hide irrelevant headings when searching","Regex Search":"Regex Search","Search headings using regular expression":"Search headings using regular expression","Auto Expand":"Auto Expand","Auto expand and collapse headings when scrolling":"Auto expand and collapse headings when scrolling",Ellipsis:"Ellipsis","Tooltip direction":"Tooltip direction","Keep one line per heading":"Keep one line per heading","Drag headings to modify note":"Drag headings to modify note","\u2757 This will modify note content, be careful.":"\u2757 This will modify note content, be careful"};var lT={"Settings for Quiet Outline.":"Quiet Outline \u7684\u8A2D\u5B9A\u9801\u9762","Render Markdown":"\u6E32\u67D3markdown\u5143\u7D20","Render heading string as markdown format.":"\u4EE5markdown\u683C\u5F0F\u6E32\u67D3\u6A19\u984C\u6587\u5B57","Search Support":"\u958B\u555F\u641C\u7D22","Add a searching area on the top":"\u5728\u9802\u90E8\u65B0\u589E\u4E00\u500B\u641C\u7D22\u6846","Level Switch":"\u5C64\u7D1A\u5207\u63DB","Expand headings to certain level.":"\u5C55\u958B\u6A19\u984C\u5230\u7279\u5B9A\u5C64\u7D1A","Default Level":"\u9810\u8A2D\u5C64\u7D1A","Default expand level when opening a new note.":"\u6253\u958B\u65B0\u7B46\u8A18\u6642\uFF0C\u6A19\u984C\u5C55\u958B\u5230\u7684\u9810\u8A2D\u5C64\u7D1A","No expand":"\u4E0D\u5C55\u958B","Hide Unsearched":"\u904E\u6FFE\u672A\u641C\u7D22\u7684\u6A19\u984C","Hide irrelevant headings when searching":"\u641C\u7D22\u6642\uFF0C\u96B1\u85CF\u672A\u547D\u4E2D\u7684\u6A19\u984C","Regex Search":"\u6B63\u5247\u641C\u7D22","Search headings using regular expression":"\u652F\u63F4\u4F7F\u7528\u6B63\u5247\u904B\u7B97\u5F0F\u4F86\u641C\u7D22","Auto Expand":"\u81EA\u52D5\u5C55\u958B","Auto expand and collapse headings when scrolling":"\u7576\u6372\u52D5\u9801\u9762\u6642\uFF0C\u81EA\u52D5\u8DDF\u96A8\u76EE\u524D\u6240\u5728\u6A19\u984C\u4E26\u5C55\u958B",Ellipsis:"\u7701\u7565\u9577\u6A19\u984C","Keep one line per heading":"\u4FDD\u6301\u6A19\u984C\u53EA\u6709\u4E00\u884C\uFF0C\u7701\u7565\u591A\u9918\u90E8\u5206"};var qP={en:Op,zh:aT,"zh-TW":lT},QP=window.localStorage.getItem("language"),nT=qP[QP||"en"];function po(e){return nT&&nT[e]||Op[e]}var iT={patch_color:!0,primary_color_light:"#18a058",primary_color_dark:"#63e2b7",rainbow_line:!1,rainbow_color_1:"#FD8B1F",rainbow_color_2:"#FFDF00",rainbow_color_3:"#07EB23",rainbow_color_4:"#2D8FF0",rainbow_color_5:"#BC01E2",search_support:!0,level_switch:!0,markdown:!0,expand_level:"0",hide_unsearched:!0,auto_expand:!0,regex_search:!1,ellipsis:!1,label_direction:"left",drag_modify:!1},Cp=class extends Jo.PluginSettingTab{constructor(o,t){super(o,t);this.plugin=t}display(){let{containerEl:o}=this;o.empty(),o.createEl("h2",{text:po("Settings for Quiet Outline.")}),new Jo.Setting(o).setName(po("Set Primary Color")).addToggle(t=>t.setTooltip(po("Patch default color")).setValue(this.plugin.settings.patch_color).onChange(r=>$e(this,null,function*(){this.plugin.settings.patch_color=r,oe.patchColor=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.primary_color_light).onChange(r=>$e(this,null,function*(){this.plugin.settings.primary_color_light=r,oe.primaryColorLight=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.primary_color_dark).onChange(r=>$e(this,null,function*(){this.plugin.settings.primary_color_dark=r,oe.primaryColorDark=r,this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Set Rainbow Line Color")).addToggle(t=>t.setTooltip(po("Patch default color")).setValue(this.plugin.settings.rainbow_line).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_line=r,oe.rainbowLine=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_1).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_1=r,oe.rainbowColor1=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_2).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_2=r,oe.rainbowColor2=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_3).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_3=r,oe.rainbowColor3=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_4).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_4=r,oe.rainbowColor4=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_5).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_5=r,oe.rainbowColor5=r,this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Render Markdown")).setDesc(po("Render heading string as markdown format.")).addToggle(t=>t.setValue(this.plugin.settings.markdown).onChange(r=>$e(this,null,function*(){this.plugin.settings.markdown=r,oe.markdown=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Ellipsis")).setDesc(po("Keep one line per heading")).addToggle(t=>t.setValue(this.plugin.settings.ellipsis).onChange(r=>$e(this,null,function*(){this.plugin.settings.ellipsis=r,oe.ellipsis=r,yield this.plugin.saveSettings(),oe.refreshTree(),this.display()}))),this.plugin.settings.ellipsis&&new Jo.Setting(o).setName(po("Tooltip direction")).addDropdown(t=>t.addOption("left","Left").addOption("right","Right").addOption("top","Top").addOption("bottom","Bottom").setValue(this.plugin.settings.label_direction).onChange(r=>$e(this,null,function*(){this.plugin.settings.label_direction=r,oe.labelDirection=r,yield this.plugin.saveSettings(),oe.refreshTree()}))),new Jo.Setting(o).setName(po("Search Support")).setDesc(po("Add a searching area on the top")).addToggle(t=>t.setValue(this.plugin.settings.search_support).onChange(r=>$e(this,null,function*(){this.plugin.settings.search_support=r,oe.searchSupport=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Level Switch")).setDesc(po("Expand headings to certain level.")).addToggle(t=>t.setValue(this.plugin.settings.level_switch).onChange(r=>$e(this,null,function*(){this.plugin.settings.level_switch=r,oe.levelSwitch=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Default Level")).setDesc(po("Default expand level when opening a new note.")).addDropdown(t=>t.addOption("0",po("No expand")).addOption("1","H1").addOption("2","H2").addOption("3","H3").addOption("4","H4").addOption("5","H5").setValue(this.plugin.settings.expand_level).onChange(r=>$e(this,null,function*(){this.plugin.settings.expand_level=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Hide Unsearched")).setDesc(po("Hide irrelevant headings when searching")).addToggle(t=>t.setValue(this.plugin.settings.hide_unsearched).onChange(r=>$e(this,null,function*(){this.plugin.settings.hide_unsearched=r,oe.hideUnsearched=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Regex Search")).setDesc(po("Search headings using regular expression")).addToggle(t=>t.setValue(this.plugin.settings.regex_search).onChange(r=>$e(this,null,function*(){this.plugin.settings.regex_search=r,oe.regexSearch=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Auto Expand")).setDesc(po("Auto expand and collapse headings when scrolling")).addToggle(t=>t.setValue(this.plugin.settings.auto_expand).onChange(r=>$e(this,null,function*(){this.plugin.settings.auto_expand=r,oe.autoExpand=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Drag headings to modify note")).setDesc(po("\u2757 This will modify note content, be careful.")).addToggle(t=>t.setValue(this.plugin.settings.drag_modify).onChange(r=>$e(this,null,function*(){this.plugin.settings.drag_modify=r,oe.dragModify=r,yield this.plugin.saveSettings()})))}};var bp=class extends Kr.Plugin{onload(){return $e(this,null,function*(){yield this.loadSettings(),this.initStore(),this.registerView(Ta,o=>new Fp(o,this)),this.registerListener(),this.registerCommand(),this.addSettingTab(new Cp(this.app,this))})}initStore(){oe.headers=[],oe.dark=document.body.hasClass("theme-dark"),oe.markdown=this.settings.markdown,oe.ellipsis=this.settings.ellipsis,oe.labelDirection=this.settings.label_direction,oe.leafChange=!1,oe.searchSupport=this.settings.search_support,oe.levelSwitch=this.settings.level_switch,oe.hideUnsearched=this.settings.hide_unsearched,oe.regexSearch=this.settings.regex_search,oe.autoExpand=this.settings.auto_expand,oe.dragModify=this.settings.drag_modify,oe.patchColor=this.settings.patch_color,oe.primaryColorLight=this.settings.primary_color_light,oe.primaryColorDark=this.settings.primary_color_dark,oe.rainbowLine=this.settings.rainbow_line,oe.rainbowColor1=this.settings.rainbow_color_1,oe.rainbowColor2=this.settings.rainbow_color_2,oe.rainbowColor3=this.settings.rainbow_color_3,oe.rainbowColor4=this.settings.rainbow_color_4,oe.rainbowColor5=this.settings.rainbow_color_5}registerListener(){this.registerEvent(this.app.workspace.on("css-change",()=>{oe.dark=document.body.hasClass("theme-dark"),oe.cssChange=!oe.cssChange}));let o=()=>{let r=this.app.workspace.getActiveFile();if(r){let a=this.app.metadataCache.getFileCache(r).headings;if(a){oe.headers=a;return}}oe.headers=[]},t=(0,Kr.debounce)(o,300,!0);this.registerEvent(this.app.metadataCache.on("changed",()=>{t()})),this.registerEvent(this.app.workspace.on("active-leaf-change",r=>$e(this,null,function*(){let a=this.app.workspace.getActiveViewOfType(Kr.MarkdownView);if(a){if(!this.current_note){this.current_note=a,this.current_file=a.file.path,o(),oe.refreshTree();return}a.file.path===this.current_file||oe.refreshTree(),o(),this.current_note=a,this.current_file=a.file.path}})))}registerCommand(){this.addCommand({id:"quiet-outline",name:"Quiet Outline",callback:()=>{this.activateView()}}),this.addCommand({id:"quiet-outline-reset",name:"Reset expanding level",callback:()=>{dispatchEvent(new CustomEvent("quiet-outline-reset"))}}),this.addCommand({id:"quiet-outline-focus-input",name:"Focus on input",callback:()=>{let o=document.querySelector("input.n-input__input-el");o&&o.focus()}}),this.addCommand({id:"quiet-outline-copy-as-text",name:"Copy as plain text",callback:()=>$e(this,null,function*(){let o=oe.headers.map(t=>" ".repeat(t.level-1)+t.heading);yield navigator.clipboard.writeText(o.join(` +`)),new Kr.Notice("Headings copied")})})}onunload(){this.app.workspace.detachLeavesOfType(Ta)}loadSettings(){return $e(this,null,function*(){this.settings=Object.assign({},iT,yield this.loadData())})}saveSettings(){return $e(this,null,function*(){yield this.saveData(this.settings)})}activateView(){return $e(this,null,function*(){this.app.workspace.getLeavesOfType(Ta).length===0&&(yield this.app.workspace.getRightLeaf(!1).setViewState({type:Ta,active:!0})),this.app.workspace.revealLeaf(this.app.workspace.getLeavesOfType(Ta)[0])})}};var ZP=bp; /** * @license * Lodash (Custom Build) diff --git a/.obsidian/plugins/obsidian-quiet-outline/manifest.json b/.obsidian/plugins/obsidian-quiet-outline/manifest.json index f2fded5..f49150e 100644 --- a/.obsidian/plugins/obsidian-quiet-outline/manifest.json +++ b/.obsidian/plugins/obsidian-quiet-outline/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-quiet-outline", "name": "Quiet Outline", - "version": "0.3.15", + "version": "0.3.16", "minAppVersion": "0.15.6", "description": "Make outline quiet and more powerful, including no-auto-expand, rendering heading as markdown, and search support.", "author": "the_tree", diff --git a/.obsidian/plugins/obsidian-quiet-outline/styles.css b/.obsidian/plugins/obsidian-quiet-outline/styles.css index d434199..169b588 100644 --- a/.obsidian/plugins/obsidian-quiet-outline/styles.css +++ b/.obsidian/plugins/obsidian-quiet-outline/styles.css @@ -65,7 +65,6 @@ font-size: 22px; } .quiet-outline code { - color: var(--text-color-code, var(--code-normal)); font-weight: bold; font-family: var(--font-monospace); background-color: var(--code-background); diff --git a/.obsidian/plugins/table-editor-obsidian/main.js b/.obsidian/plugins/table-editor-obsidian/main.js index 81956cc..a3dfb9a 100644 --- a/.obsidian/plugins/table-editor-obsidian/main.js +++ b/.obsidian/plugins/table-editor-obsidian/main.js @@ -589,6 +589,4934 @@ const prettyPrintAST = (token, level = 0) => { exports.prettyPrintAST = prettyPrintAST; }); +var decimal = createCommonjsModule(function (module) { +(function (globalScope) { + + + /*! + * decimal.js v10.4.3 + * An arbitrary-precision Decimal type for JavaScript. + * https://github.com/MikeMcl/decimal.js + * Copyright (c) 2022 Michael Mclaughlin + * MIT Licence + */ + + + // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ // + + + // The maximum exponent magnitude. + // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`. + var EXP_LIMIT = 9e15, // 0 to 9e15 + + // The limit on the value of `precision`, and on the value of the first argument to + // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`. + MAX_DIGITS = 1e9, // 0 to 1e9 + + // Base conversion alphabet. + NUMERALS = '0123456789abcdef', + + // The natural logarithm of 10 (1025 digits). + LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058', + + // Pi (1025 digits). + PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789', + + + // The initial configuration properties of the Decimal constructor. + DEFAULTS = { + + // These values must be integers within the stated ranges (inclusive). + // Most of these values can be changed at run-time using the `Decimal.config` method. + + // The maximum number of significant digits of the result of a calculation or base conversion. + // E.g. `Decimal.config({ precision: 20 });` + precision: 20, // 1 to MAX_DIGITS + + // The rounding mode used when rounding to `precision`. + // + // ROUND_UP 0 Away from zero. + // ROUND_DOWN 1 Towards zero. + // ROUND_CEIL 2 Towards +Infinity. + // ROUND_FLOOR 3 Towards -Infinity. + // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up. + // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. + // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. + // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. + // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. + // + // E.g. + // `Decimal.rounding = 4;` + // `Decimal.rounding = Decimal.ROUND_HALF_UP;` + rounding: 4, // 0 to 8 + + // The modulo mode used when calculating the modulus: a mod n. + // The quotient (q = a / n) is calculated according to the corresponding rounding mode. + // The remainder (r) is calculated as: r = a - n * q. + // + // UP 0 The remainder is positive if the dividend is negative, else is negative. + // DOWN 1 The remainder has the same sign as the dividend (JavaScript %). + // FLOOR 3 The remainder has the same sign as the divisor (Python %). + // HALF_EVEN 6 The IEEE 754 remainder function. + // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive. + // + // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian + // division (9) are commonly used for the modulus operation. The other rounding modes can also + // be used, but they may not give useful results. + modulo: 1, // 0 to 9 + + // The exponent value at and beneath which `toString` returns exponential notation. + // JavaScript numbers: -7 + toExpNeg: -7, // 0 to -EXP_LIMIT + + // The exponent value at and above which `toString` returns exponential notation. + // JavaScript numbers: 21 + toExpPos: 21, // 0 to EXP_LIMIT + + // The minimum exponent value, beneath which underflow to zero occurs. + // JavaScript numbers: -324 (5e-324) + minE: -EXP_LIMIT, // -1 to -EXP_LIMIT + + // The maximum exponent value, above which overflow to Infinity occurs. + // JavaScript numbers: 308 (1.7976931348623157e+308) + maxE: EXP_LIMIT, // 1 to EXP_LIMIT + + // Whether to use cryptographically-secure random number generation, if available. + crypto: false // true/false + }, + + + // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- // + + + Decimal, inexact, noConflict, quadrant, + external = true, + + decimalError = '[DecimalError] ', + invalidArgument = decimalError + 'Invalid argument: ', + precisionLimitExceeded = decimalError + 'Precision limit exceeded', + cryptoUnavailable = decimalError + 'crypto unavailable', + tag = '[object Decimal]', + + mathfloor = Math.floor, + mathpow = Math.pow, + + isBinary = /^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i, + isHex = /^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i, + isOctal = /^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i, + isDecimal = /^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i, + + BASE = 1e7, + LOG_BASE = 7, + MAX_SAFE_INTEGER = 9007199254740991, + + LN10_PRECISION = LN10.length - 1, + PI_PRECISION = PI.length - 1, + + // Decimal.prototype object + P = { toStringTag: tag }; + + + // Decimal prototype methods + + + /* + * absoluteValue abs + * ceil + * clampedTo clamp + * comparedTo cmp + * cosine cos + * cubeRoot cbrt + * decimalPlaces dp + * dividedBy div + * dividedToIntegerBy divToInt + * equals eq + * floor + * greaterThan gt + * greaterThanOrEqualTo gte + * hyperbolicCosine cosh + * hyperbolicSine sinh + * hyperbolicTangent tanh + * inverseCosine acos + * inverseHyperbolicCosine acosh + * inverseHyperbolicSine asinh + * inverseHyperbolicTangent atanh + * inverseSine asin + * inverseTangent atan + * isFinite + * isInteger isInt + * isNaN + * isNegative isNeg + * isPositive isPos + * isZero + * lessThan lt + * lessThanOrEqualTo lte + * logarithm log + * [maximum] [max] + * [minimum] [min] + * minus sub + * modulo mod + * naturalExponential exp + * naturalLogarithm ln + * negated neg + * plus add + * precision sd + * round + * sine sin + * squareRoot sqrt + * tangent tan + * times mul + * toBinary + * toDecimalPlaces toDP + * toExponential + * toFixed + * toFraction + * toHexadecimal toHex + * toNearest + * toNumber + * toOctal + * toPower pow + * toPrecision + * toSignificantDigits toSD + * toString + * truncated trunc + * valueOf toJSON + */ + + + /* + * Return a new Decimal whose value is the absolute value of this Decimal. + * + */ + P.absoluteValue = P.abs = function () { + var x = new this.constructor(this); + if (x.s < 0) x.s = 1; + return finalise(x); + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the + * direction of positive Infinity. + * + */ + P.ceil = function () { + return finalise(new this.constructor(this), this.e + 1, 2); + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal clamped to the range + * delineated by `min` and `max`. + * + * min {number|string|Decimal} + * max {number|string|Decimal} + * + */ + P.clampedTo = P.clamp = function (min, max) { + var k, + x = this, + Ctor = x.constructor; + min = new Ctor(min); + max = new Ctor(max); + if (!min.s || !max.s) return new Ctor(NaN); + if (min.gt(max)) throw Error(invalidArgument + max); + k = x.cmp(min); + return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x); + }; + + + /* + * Return + * 1 if the value of this Decimal is greater than the value of `y`, + * -1 if the value of this Decimal is less than the value of `y`, + * 0 if they have the same value, + * NaN if the value of either Decimal is NaN. + * + */ + P.comparedTo = P.cmp = function (y) { + var i, j, xdL, ydL, + x = this, + xd = x.d, + yd = (y = new x.constructor(y)).d, + xs = x.s, + ys = y.s; + + // Either NaN or ±Infinity? + if (!xd || !yd) { + return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1; + } + + // Either zero? + if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0; + + // Signs differ? + if (xs !== ys) return xs; + + // Compare exponents. + if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1; + + xdL = xd.length; + ydL = yd.length; + + // Compare digit by digit. + for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) { + if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1; + } + + // Compare lengths. + return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1; + }; + + + /* + * Return a new Decimal whose value is the cosine of the value in radians of this Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-1, 1] + * + * cos(0) = 1 + * cos(-0) = 1 + * cos(Infinity) = NaN + * cos(-Infinity) = NaN + * cos(NaN) = NaN + * + */ + P.cosine = P.cos = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (!x.d) return new Ctor(NaN); + + // cos(0) = cos(-0) = 1 + if (!x.d[0]) return new Ctor(1); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE; + Ctor.rounding = 1; + + x = cosine(Ctor, toLessThanHalfPi(Ctor, x)); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true); + }; + + + /* + * + * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + * cbrt(0) = 0 + * cbrt(-0) = -0 + * cbrt(1) = 1 + * cbrt(-1) = -1 + * cbrt(N) = N + * cbrt(-I) = -I + * cbrt(I) = I + * + * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3)) + * + */ + P.cubeRoot = P.cbrt = function () { + var e, m, n, r, rep, s, sd, t, t3, t3plusx, + x = this, + Ctor = x.constructor; + + if (!x.isFinite() || x.isZero()) return new Ctor(x); + external = false; + + // Initial estimate. + s = x.s * mathpow(x.s * x, 1 / 3); + + // Math.cbrt underflow/overflow? + // Pass x to Math.pow as integer, then adjust the exponent of the result. + if (!s || Math.abs(s) == 1 / 0) { + n = digitsToString(x.d); + e = x.e; + + // Adjust n exponent so it is a multiple of 3 away from x exponent. + if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00'); + s = mathpow(n, 1 / 3); + + // Rarely, e may be one less than the result exponent value. + e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2)); + + if (s == 1 / 0) { + n = '5e' + e; + } else { + n = s.toExponential(); + n = n.slice(0, n.indexOf('e') + 1) + e; + } + + r = new Ctor(n); + r.s = x.s; + } else { + r = new Ctor(s.toString()); + } + + sd = (e = Ctor.precision) + 3; + + // Halley's method. + // TODO? Compare Newton's method. + for (;;) { + t = r; + t3 = t.times(t).times(t); + t3plusx = t3.plus(x); + r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1); + + // TODO? Replace with for-loop and checkRoundingDigits. + if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) { + n = n.slice(sd - 3, sd + 1); + + // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999 + // , i.e. approaching a rounding boundary, continue the iteration. + if (n == '9999' || !rep && n == '4999') { + + // On the first iteration only, check to see if rounding up gives the exact result as the + // nines may infinitely repeat. + if (!rep) { + finalise(t, e + 1, 0); + + if (t.times(t).times(t).eq(x)) { + r = t; + break; + } + } + + sd += 4; + rep = 1; + } else { + + // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result. + // If not, then there are further digits and m will be truthy. + if (!+n || !+n.slice(1) && n.charAt(0) == '5') { + + // Truncate to the first rounding digit. + finalise(r, e + 1, 1); + m = !r.times(r).times(r).eq(x); + } + + break; + } + } + } + + external = true; + + return finalise(r, e, Ctor.rounding, m); + }; + + + /* + * Return the number of decimal places of the value of this Decimal. + * + */ + P.decimalPlaces = P.dp = function () { + var w, + d = this.d, + n = NaN; + + if (d) { + w = d.length - 1; + n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE; + + // Subtract the number of trailing zeros of the last word. + w = d[w]; + if (w) for (; w % 10 == 0; w /= 10) n--; + if (n < 0) n = 0; + } + + return n; + }; + + + /* + * n / 0 = I + * n / N = N + * n / I = 0 + * 0 / n = 0 + * 0 / 0 = N + * 0 / N = N + * 0 / I = 0 + * N / n = N + * N / 0 = N + * N / N = N + * N / I = N + * I / n = I + * I / 0 = I + * I / N = N + * I / I = N + * + * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + */ + P.dividedBy = P.div = function (y) { + return divide(this, new this.constructor(y)); + }; + + + /* + * Return a new Decimal whose value is the integer part of dividing the value of this Decimal + * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`. + * + */ + P.dividedToIntegerBy = P.divToInt = function (y) { + var x = this, + Ctor = x.constructor; + return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding); + }; + + + /* + * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false. + * + */ + P.equals = P.eq = function (y) { + return this.cmp(y) === 0; + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the + * direction of negative Infinity. + * + */ + P.floor = function () { + return finalise(new this.constructor(this), this.e + 1, 3); + }; + + + /* + * Return true if the value of this Decimal is greater than the value of `y`, otherwise return + * false. + * + */ + P.greaterThan = P.gt = function (y) { + return this.cmp(y) > 0; + }; + + + /* + * Return true if the value of this Decimal is greater than or equal to the value of `y`, + * otherwise return false. + * + */ + P.greaterThanOrEqualTo = P.gte = function (y) { + var k = this.cmp(y); + return k == 1 || k === 0; + }; + + + /* + * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this + * Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [1, Infinity] + * + * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ... + * + * cosh(0) = 1 + * cosh(-0) = 1 + * cosh(Infinity) = Infinity + * cosh(-Infinity) = Infinity + * cosh(NaN) = NaN + * + * x time taken (ms) result + * 1000 9 9.8503555700852349694e+433 + * 10000 25 4.4034091128314607936e+4342 + * 100000 171 1.4033316802130615897e+43429 + * 1000000 3817 1.5166076984010437725e+434294 + * 10000000 abandoned after 2 minute wait + * + * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x)) + * + */ + P.hyperbolicCosine = P.cosh = function () { + var k, n, pr, rm, len, + x = this, + Ctor = x.constructor, + one = new Ctor(1); + + if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN); + if (x.isZero()) return one; + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + 4; + Ctor.rounding = 1; + len = x.d.length; + + // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1 + // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4)) + + // Estimate the optimum number of times to use the argument reduction. + // TODO? Estimation reused from cosine() and may not be optimal here. + if (len < 32) { + k = Math.ceil(len / 3); + n = (1 / tinyPow(4, k)).toString(); + } else { + k = 16; + n = '2.3283064365386962890625e-10'; + } + + x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true); + + // Reverse argument reduction + var cosh2_x, + i = k, + d8 = new Ctor(8); + for (; i--;) { + cosh2_x = x.times(x); + x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8)))); + } + + return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true); + }; + + + /* + * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this + * Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-Infinity, Infinity] + * + * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ... + * + * sinh(0) = 0 + * sinh(-0) = -0 + * sinh(Infinity) = Infinity + * sinh(-Infinity) = -Infinity + * sinh(NaN) = NaN + * + * x time taken (ms) + * 10 2 ms + * 100 5 ms + * 1000 14 ms + * 10000 82 ms + * 100000 886 ms 1.4033316802130615897e+43429 + * 200000 2613 ms + * 300000 5407 ms + * 400000 8824 ms + * 500000 13026 ms 8.7080643612718084129e+217146 + * 1000000 48543 ms + * + * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x)) + * + */ + P.hyperbolicSine = P.sinh = function () { + var k, pr, rm, len, + x = this, + Ctor = x.constructor; + + if (!x.isFinite() || x.isZero()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + 4; + Ctor.rounding = 1; + len = x.d.length; + + if (len < 3) { + x = taylorSeries(Ctor, 2, x, x, true); + } else { + + // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x)) + // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3)) + // 3 multiplications and 1 addition + + // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x))) + // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5))) + // 4 multiplications and 2 additions + + // Estimate the optimum number of times to use the argument reduction. + k = 1.4 * Math.sqrt(len); + k = k > 16 ? 16 : k | 0; + + x = x.times(1 / tinyPow(5, k)); + x = taylorSeries(Ctor, 2, x, x, true); + + // Reverse argument reduction + var sinh2_x, + d5 = new Ctor(5), + d16 = new Ctor(16), + d20 = new Ctor(20); + for (; k--;) { + sinh2_x = x.times(x); + x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20)))); + } + } + + Ctor.precision = pr; + Ctor.rounding = rm; + + return finalise(x, pr, rm, true); + }; + + + /* + * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this + * Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-1, 1] + * + * tanh(x) = sinh(x) / cosh(x) + * + * tanh(0) = 0 + * tanh(-0) = -0 + * tanh(Infinity) = 1 + * tanh(-Infinity) = -1 + * tanh(NaN) = NaN + * + */ + P.hyperbolicTangent = P.tanh = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (!x.isFinite()) return new Ctor(x.s); + if (x.isZero()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + 7; + Ctor.rounding = 1; + + return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm); + }; + + + /* + * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of + * this Decimal. + * + * Domain: [-1, 1] + * Range: [0, pi] + * + * acos(x) = pi/2 - asin(x) + * + * acos(0) = pi/2 + * acos(-0) = pi/2 + * acos(1) = 0 + * acos(-1) = pi + * acos(1/2) = pi/3 + * acos(-1/2) = 2*pi/3 + * acos(|x| > 1) = NaN + * acos(NaN) = NaN + * + */ + P.inverseCosine = P.acos = function () { + var halfPi, + x = this, + Ctor = x.constructor, + k = x.abs().cmp(1), + pr = Ctor.precision, + rm = Ctor.rounding; + + if (k !== -1) { + return k === 0 + // |x| is 1 + ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0) + // |x| > 1 or x is NaN + : new Ctor(NaN); + } + + if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5); + + // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3 + + Ctor.precision = pr + 6; + Ctor.rounding = 1; + + x = x.asin(); + halfPi = getPi(Ctor, pr + 4, rm).times(0.5); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return halfPi.minus(x); + }; + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the + * value of this Decimal. + * + * Domain: [1, Infinity] + * Range: [0, Infinity] + * + * acosh(x) = ln(x + sqrt(x^2 - 1)) + * + * acosh(x < 1) = NaN + * acosh(NaN) = NaN + * acosh(Infinity) = Infinity + * acosh(-Infinity) = NaN + * acosh(0) = NaN + * acosh(-0) = NaN + * acosh(1) = 0 + * acosh(-1) = NaN + * + */ + P.inverseHyperbolicCosine = P.acosh = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN); + if (!x.isFinite()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4; + Ctor.rounding = 1; + external = false; + + x = x.times(x).minus(1).sqrt().plus(x); + + external = true; + Ctor.precision = pr; + Ctor.rounding = rm; + + return x.ln(); + }; + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value + * of this Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-Infinity, Infinity] + * + * asinh(x) = ln(x + sqrt(x^2 + 1)) + * + * asinh(NaN) = NaN + * asinh(Infinity) = Infinity + * asinh(-Infinity) = -Infinity + * asinh(0) = 0 + * asinh(-0) = -0 + * + */ + P.inverseHyperbolicSine = P.asinh = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (!x.isFinite() || x.isZero()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6; + Ctor.rounding = 1; + external = false; + + x = x.times(x).plus(1).sqrt().plus(x); + + external = true; + Ctor.precision = pr; + Ctor.rounding = rm; + + return x.ln(); + }; + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the + * value of this Decimal. + * + * Domain: [-1, 1] + * Range: [-Infinity, Infinity] + * + * atanh(x) = 0.5 * ln((1 + x) / (1 - x)) + * + * atanh(|x| > 1) = NaN + * atanh(NaN) = NaN + * atanh(Infinity) = NaN + * atanh(-Infinity) = NaN + * atanh(0) = 0 + * atanh(-0) = -0 + * atanh(1) = Infinity + * atanh(-1) = -Infinity + * + */ + P.inverseHyperbolicTangent = P.atanh = function () { + var pr, rm, wpr, xsd, + x = this, + Ctor = x.constructor; + + if (!x.isFinite()) return new Ctor(NaN); + if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN); + + pr = Ctor.precision; + rm = Ctor.rounding; + xsd = x.sd(); + + if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true); + + Ctor.precision = wpr = xsd - x.e; + + x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1); + + Ctor.precision = pr + 4; + Ctor.rounding = 1; + + x = x.ln(); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return x.times(0.5); + }; + + + /* + * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this + * Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-pi/2, pi/2] + * + * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2))) + * + * asin(0) = 0 + * asin(-0) = -0 + * asin(1/2) = pi/6 + * asin(-1/2) = -pi/6 + * asin(1) = pi/2 + * asin(-1) = -pi/2 + * asin(|x| > 1) = NaN + * asin(NaN) = NaN + * + * TODO? Compare performance of Taylor series. + * + */ + P.inverseSine = P.asin = function () { + var halfPi, k, + pr, rm, + x = this, + Ctor = x.constructor; + + if (x.isZero()) return new Ctor(x); + + k = x.abs().cmp(1); + pr = Ctor.precision; + rm = Ctor.rounding; + + if (k !== -1) { + + // |x| is 1 + if (k === 0) { + halfPi = getPi(Ctor, pr + 4, rm).times(0.5); + halfPi.s = x.s; + return halfPi; + } + + // |x| > 1 or x is NaN + return new Ctor(NaN); + } + + // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6 + + Ctor.precision = pr + 6; + Ctor.rounding = 1; + + x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan(); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return x.times(2); + }; + + + /* + * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value + * of this Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-pi/2, pi/2] + * + * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ... + * + * atan(0) = 0 + * atan(-0) = -0 + * atan(1) = pi/4 + * atan(-1) = -pi/4 + * atan(Infinity) = pi/2 + * atan(-Infinity) = -pi/2 + * atan(NaN) = NaN + * + */ + P.inverseTangent = P.atan = function () { + var i, j, k, n, px, t, r, wpr, x2, + x = this, + Ctor = x.constructor, + pr = Ctor.precision, + rm = Ctor.rounding; + + if (!x.isFinite()) { + if (!x.s) return new Ctor(NaN); + if (pr + 4 <= PI_PRECISION) { + r = getPi(Ctor, pr + 4, rm).times(0.5); + r.s = x.s; + return r; + } + } else if (x.isZero()) { + return new Ctor(x); + } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) { + r = getPi(Ctor, pr + 4, rm).times(0.25); + r.s = x.s; + return r; + } + + Ctor.precision = wpr = pr + 10; + Ctor.rounding = 1; + + // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x); + + // Argument reduction + // Ensure |x| < 0.42 + // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2))) + + k = Math.min(28, wpr / LOG_BASE + 2 | 0); + + for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1)); + + external = false; + + j = Math.ceil(wpr / LOG_BASE); + n = 1; + x2 = x.times(x); + r = new Ctor(x); + px = x; + + // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ... + for (; i !== -1;) { + px = px.times(x2); + t = r.minus(px.div(n += 2)); + + px = px.times(x2); + r = t.plus(px.div(n += 2)); + + if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;); + } + + if (k) r = r.times(2 << (k - 1)); + + external = true; + + return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true); + }; + + + /* + * Return true if the value of this Decimal is a finite number, otherwise return false. + * + */ + P.isFinite = function () { + return !!this.d; + }; + + + /* + * Return true if the value of this Decimal is an integer, otherwise return false. + * + */ + P.isInteger = P.isInt = function () { + return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2; + }; + + + /* + * Return true if the value of this Decimal is NaN, otherwise return false. + * + */ + P.isNaN = function () { + return !this.s; + }; + + + /* + * Return true if the value of this Decimal is negative, otherwise return false. + * + */ + P.isNegative = P.isNeg = function () { + return this.s < 0; + }; + + + /* + * Return true if the value of this Decimal is positive, otherwise return false. + * + */ + P.isPositive = P.isPos = function () { + return this.s > 0; + }; + + + /* + * Return true if the value of this Decimal is 0 or -0, otherwise return false. + * + */ + P.isZero = function () { + return !!this.d && this.d[0] === 0; + }; + + + /* + * Return true if the value of this Decimal is less than `y`, otherwise return false. + * + */ + P.lessThan = P.lt = function (y) { + return this.cmp(y) < 0; + }; + + + /* + * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false. + * + */ + P.lessThanOrEqualTo = P.lte = function (y) { + return this.cmp(y) < 1; + }; + + + /* + * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * If no base is specified, return log[10](arg). + * + * log[base](arg) = ln(arg) / ln(base) + * + * The result will always be correctly rounded if the base of the log is 10, and 'almost always' + * otherwise: + * + * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen + * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error + * between the result and the correctly rounded result will be one ulp (unit in the last place). + * + * log[-b](a) = NaN + * log[0](a) = NaN + * log[1](a) = NaN + * log[NaN](a) = NaN + * log[Infinity](a) = NaN + * log[b](0) = -Infinity + * log[b](-0) = -Infinity + * log[b](-a) = NaN + * log[b](1) = 0 + * log[b](Infinity) = Infinity + * log[b](NaN) = NaN + * + * [base] {number|string|Decimal} The base of the logarithm. + * + */ + P.logarithm = P.log = function (base) { + var isBase10, d, denominator, k, inf, num, sd, r, + arg = this, + Ctor = arg.constructor, + pr = Ctor.precision, + rm = Ctor.rounding, + guard = 5; + + // Default base is 10. + if (base == null) { + base = new Ctor(10); + isBase10 = true; + } else { + base = new Ctor(base); + d = base.d; + + // Return NaN if base is negative, or non-finite, or is 0 or 1. + if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN); + + isBase10 = base.eq(10); + } + + d = arg.d; + + // Is arg negative, non-finite, 0 or 1? + if (arg.s < 0 || !d || !d[0] || arg.eq(1)) { + return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0); + } + + // The result will have a non-terminating decimal expansion if base is 10 and arg is not an + // integer power of 10. + if (isBase10) { + if (d.length > 1) { + inf = true; + } else { + for (k = d[0]; k % 10 === 0;) k /= 10; + inf = k !== 1; + } + } + + external = false; + sd = pr + guard; + num = naturalLogarithm(arg, sd); + denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd); + + // The result will have 5 rounding digits. + r = divide(num, denominator, sd, 1); + + // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000, + // calculate 10 further digits. + // + // If the result is known to have an infinite decimal expansion, repeat this until it is clear + // that the result is above or below the boundary. Otherwise, if after calculating the 10 + // further digits, the last 14 are nines, round up and assume the result is exact. + // Also assume the result is exact if the last 14 are zero. + // + // Example of a result that will be incorrectly rounded: + // log[1048576](4503599627370502) = 2.60000000000000009610279511444746... + // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it + // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so + // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal + // place is still 2.6. + if (checkRoundingDigits(r.d, k = pr, rm)) { + + do { + sd += 10; + num = naturalLogarithm(arg, sd); + denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd); + r = divide(num, denominator, sd, 1); + + if (!inf) { + + // Check for 14 nines from the 2nd rounding digit, as the first may be 4. + if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) { + r = finalise(r, pr + 1, 0); + } + + break; + } + } while (checkRoundingDigits(r.d, k += 10, rm)); + } + + external = true; + + return finalise(r, pr, rm); + }; + + + /* + * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal. + * + * arguments {number|string|Decimal} + * + P.max = function () { + Array.prototype.push.call(arguments, this); + return maxOrMin(this.constructor, arguments, 'lt'); + }; + */ + + + /* + * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal. + * + * arguments {number|string|Decimal} + * + P.min = function () { + Array.prototype.push.call(arguments, this); + return maxOrMin(this.constructor, arguments, 'gt'); + }; + */ + + + /* + * n - 0 = n + * n - N = N + * n - I = -I + * 0 - n = -n + * 0 - 0 = 0 + * 0 - N = N + * 0 - I = -I + * N - n = N + * N - 0 = N + * N - N = N + * N - I = N + * I - n = I + * I - 0 = I + * I - N = N + * I - I = N + * + * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + */ + P.minus = P.sub = function (y) { + var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd, + x = this, + Ctor = x.constructor; + + y = new Ctor(y); + + // If either is not finite... + if (!x.d || !y.d) { + + // Return NaN if either is NaN. + if (!x.s || !y.s) y = new Ctor(NaN); + + // Return y negated if x is finite and y is ±Infinity. + else if (x.d) y.s = -y.s; + + // Return x if y is finite and x is ±Infinity. + // Return x if both are ±Infinity with different signs. + // Return NaN if both are ±Infinity with the same sign. + else y = new Ctor(y.d || x.s !== y.s ? x : NaN); + + return y; + } + + // If signs differ... + if (x.s != y.s) { + y.s = -y.s; + return x.plus(y); + } + + xd = x.d; + yd = y.d; + pr = Ctor.precision; + rm = Ctor.rounding; + + // If either is zero... + if (!xd[0] || !yd[0]) { + + // Return y negated if x is zero and y is non-zero. + if (yd[0]) y.s = -y.s; + + // Return x if y is zero and x is non-zero. + else if (xd[0]) y = new Ctor(x); + + // Return zero if both are zero. + // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity. + else return new Ctor(rm === 3 ? -0 : 0); + + return external ? finalise(y, pr, rm) : y; + } + + // x and y are finite, non-zero numbers with the same sign. + + // Calculate base 1e7 exponents. + e = mathfloor(y.e / LOG_BASE); + xe = mathfloor(x.e / LOG_BASE); + + xd = xd.slice(); + k = xe - e; + + // If base 1e7 exponents differ... + if (k) { + xLTy = k < 0; + + if (xLTy) { + d = xd; + k = -k; + len = yd.length; + } else { + d = yd; + e = xe; + len = xd.length; + } + + // Numbers with massively different exponents would result in a very high number of + // zeros needing to be prepended, but this can be avoided while still ensuring correct + // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`. + i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2; + + if (k > i) { + k = i; + d.length = 1; + } + + // Prepend zeros to equalise exponents. + d.reverse(); + for (i = k; i--;) d.push(0); + d.reverse(); + + // Base 1e7 exponents equal. + } else { + + // Check digits to determine which is the bigger number. + + i = xd.length; + len = yd.length; + xLTy = i < len; + if (xLTy) len = i; + + for (i = 0; i < len; i++) { + if (xd[i] != yd[i]) { + xLTy = xd[i] < yd[i]; + break; + } + } + + k = 0; + } + + if (xLTy) { + d = xd; + xd = yd; + yd = d; + y.s = -y.s; + } + + len = xd.length; + + // Append zeros to `xd` if shorter. + // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length. + for (i = yd.length - len; i > 0; --i) xd[len++] = 0; + + // Subtract yd from xd. + for (i = yd.length; i > k;) { + + if (xd[--i] < yd[i]) { + for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1; + --xd[j]; + xd[i] += BASE; + } + + xd[i] -= yd[i]; + } + + // Remove trailing zeros. + for (; xd[--len] === 0;) xd.pop(); + + // Remove leading zeros and adjust exponent accordingly. + for (; xd[0] === 0; xd.shift()) --e; + + // Zero? + if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0); + + y.d = xd; + y.e = getBase10Exponent(xd, e); + + return external ? finalise(y, pr, rm) : y; + }; + + + /* + * n % 0 = N + * n % N = N + * n % I = n + * 0 % n = 0 + * -0 % n = -0 + * 0 % 0 = N + * 0 % N = N + * 0 % I = 0 + * N % n = N + * N % 0 = N + * N % N = N + * N % I = N + * I % n = N + * I % 0 = N + * I % N = N + * I % I = N + * + * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + * The result depends on the modulo mode. + * + */ + P.modulo = P.mod = function (y) { + var q, + x = this, + Ctor = x.constructor; + + y = new Ctor(y); + + // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0. + if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN); + + // Return x if y is ±Infinity or x is ±0. + if (!y.d || x.d && !x.d[0]) { + return finalise(new Ctor(x), Ctor.precision, Ctor.rounding); + } + + // Prevent rounding of intermediate calculations. + external = false; + + if (Ctor.modulo == 9) { + + // Euclidian division: q = sign(y) * floor(x / abs(y)) + // result = x - q * y where 0 <= result < abs(y) + q = divide(x, y.abs(), 0, 3, 1); + q.s *= y.s; + } else { + q = divide(x, y, 0, Ctor.modulo, 1); + } + + q = q.times(y); + + external = true; + + return x.minus(q); + }; + + + /* + * Return a new Decimal whose value is the natural exponential of the value of this Decimal, + * i.e. the base e raised to the power the value of this Decimal, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + */ + P.naturalExponential = P.exp = function () { + return naturalExponential(this); + }; + + + /* + * Return a new Decimal whose value is the natural logarithm of the value of this Decimal, + * rounded to `precision` significant digits using rounding mode `rounding`. + * + */ + P.naturalLogarithm = P.ln = function () { + return naturalLogarithm(this); + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by + * -1. + * + */ + P.negated = P.neg = function () { + var x = new this.constructor(this); + x.s = -x.s; + return finalise(x); + }; + + + /* + * n + 0 = n + * n + N = N + * n + I = I + * 0 + n = n + * 0 + 0 = 0 + * 0 + N = N + * 0 + I = I + * N + n = N + * N + 0 = N + * N + N = N + * N + I = N + * I + n = I + * I + 0 = I + * I + N = N + * I + I = I + * + * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + */ + P.plus = P.add = function (y) { + var carry, d, e, i, k, len, pr, rm, xd, yd, + x = this, + Ctor = x.constructor; + + y = new Ctor(y); + + // If either is not finite... + if (!x.d || !y.d) { + + // Return NaN if either is NaN. + if (!x.s || !y.s) y = new Ctor(NaN); + + // Return x if y is finite and x is ±Infinity. + // Return x if both are ±Infinity with the same sign. + // Return NaN if both are ±Infinity with different signs. + // Return y if x is finite and y is ±Infinity. + else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN); + + return y; + } + + // If signs differ... + if (x.s != y.s) { + y.s = -y.s; + return x.minus(y); + } + + xd = x.d; + yd = y.d; + pr = Ctor.precision; + rm = Ctor.rounding; + + // If either is zero... + if (!xd[0] || !yd[0]) { + + // Return x if y is zero. + // Return y if y is non-zero. + if (!yd[0]) y = new Ctor(x); + + return external ? finalise(y, pr, rm) : y; + } + + // x and y are finite, non-zero numbers with the same sign. + + // Calculate base 1e7 exponents. + k = mathfloor(x.e / LOG_BASE); + e = mathfloor(y.e / LOG_BASE); + + xd = xd.slice(); + i = k - e; + + // If base 1e7 exponents differ... + if (i) { + + if (i < 0) { + d = xd; + i = -i; + len = yd.length; + } else { + d = yd; + e = k; + len = xd.length; + } + + // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1. + k = Math.ceil(pr / LOG_BASE); + len = k > len ? k + 1 : len + 1; + + if (i > len) { + i = len; + d.length = 1; + } + + // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts. + d.reverse(); + for (; i--;) d.push(0); + d.reverse(); + } + + len = xd.length; + i = yd.length; + + // If yd is longer than xd, swap xd and yd so xd points to the longer array. + if (len - i < 0) { + i = len; + d = yd; + yd = xd; + xd = d; + } + + // Only start adding at yd.length - 1 as the further digits of xd can be left as they are. + for (carry = 0; i;) { + carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0; + xd[i] %= BASE; + } + + if (carry) { + xd.unshift(carry); + ++e; + } + + // Remove trailing zeros. + // No need to check for zero, as +x + +y != 0 && -x + -y != 0 + for (len = xd.length; xd[--len] == 0;) xd.pop(); + + y.d = xd; + y.e = getBase10Exponent(xd, e); + + return external ? finalise(y, pr, rm) : y; + }; + + + /* + * Return the number of significant digits of the value of this Decimal. + * + * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0. + * + */ + P.precision = P.sd = function (z) { + var k, + x = this; + + if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z); + + if (x.d) { + k = getPrecision(x.d); + if (z && x.e + 1 > k) k = x.e + 1; + } else { + k = NaN; + } + + return k; + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using + * rounding mode `rounding`. + * + */ + P.round = function () { + var x = this, + Ctor = x.constructor; + + return finalise(new Ctor(x), x.e + 1, Ctor.rounding); + }; + + + /* + * Return a new Decimal whose value is the sine of the value in radians of this Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-1, 1] + * + * sin(x) = x - x^3/3! + x^5/5! - ... + * + * sin(0) = 0 + * sin(-0) = -0 + * sin(Infinity) = NaN + * sin(-Infinity) = NaN + * sin(NaN) = NaN + * + */ + P.sine = P.sin = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (!x.isFinite()) return new Ctor(NaN); + if (x.isZero()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE; + Ctor.rounding = 1; + + x = sine(Ctor, toLessThanHalfPi(Ctor, x)); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true); + }; + + + /* + * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * sqrt(-n) = N + * sqrt(N) = N + * sqrt(-I) = N + * sqrt(I) = I + * sqrt(0) = 0 + * sqrt(-0) = -0 + * + */ + P.squareRoot = P.sqrt = function () { + var m, n, sd, r, rep, t, + x = this, + d = x.d, + e = x.e, + s = x.s, + Ctor = x.constructor; + + // Negative/NaN/Infinity/zero? + if (s !== 1 || !d || !d[0]) { + return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0); + } + + external = false; + + // Initial estimate. + s = Math.sqrt(+x); + + // Math.sqrt underflow/overflow? + // Pass x to Math.sqrt as integer, then adjust the exponent of the result. + if (s == 0 || s == 1 / 0) { + n = digitsToString(d); + + if ((n.length + e) % 2 == 0) n += '0'; + s = Math.sqrt(n); + e = mathfloor((e + 1) / 2) - (e < 0 || e % 2); + + if (s == 1 / 0) { + n = '5e' + e; + } else { + n = s.toExponential(); + n = n.slice(0, n.indexOf('e') + 1) + e; + } + + r = new Ctor(n); + } else { + r = new Ctor(s.toString()); + } + + sd = (e = Ctor.precision) + 3; + + // Newton-Raphson iteration. + for (;;) { + t = r; + r = t.plus(divide(x, t, sd + 2, 1)).times(0.5); + + // TODO? Replace with for-loop and checkRoundingDigits. + if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) { + n = n.slice(sd - 3, sd + 1); + + // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or + // 4999, i.e. approaching a rounding boundary, continue the iteration. + if (n == '9999' || !rep && n == '4999') { + + // On the first iteration only, check to see if rounding up gives the exact result as the + // nines may infinitely repeat. + if (!rep) { + finalise(t, e + 1, 0); + + if (t.times(t).eq(x)) { + r = t; + break; + } + } + + sd += 4; + rep = 1; + } else { + + // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result. + // If not, then there are further digits and m will be truthy. + if (!+n || !+n.slice(1) && n.charAt(0) == '5') { + + // Truncate to the first rounding digit. + finalise(r, e + 1, 1); + m = !r.times(r).eq(x); + } + + break; + } + } + } + + external = true; + + return finalise(r, e, Ctor.rounding, m); + }; + + + /* + * Return a new Decimal whose value is the tangent of the value in radians of this Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-Infinity, Infinity] + * + * tan(0) = 0 + * tan(-0) = -0 + * tan(Infinity) = NaN + * tan(-Infinity) = NaN + * tan(NaN) = NaN + * + */ + P.tangent = P.tan = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (!x.isFinite()) return new Ctor(NaN); + if (x.isZero()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + 10; + Ctor.rounding = 1; + + x = x.sin(); + x.s = 1; + x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true); + }; + + + /* + * n * 0 = 0 + * n * N = N + * n * I = I + * 0 * n = 0 + * 0 * 0 = 0 + * 0 * N = N + * 0 * I = N + * N * n = N + * N * 0 = N + * N * N = N + * N * I = N + * I * n = I + * I * 0 = N + * I * N = N + * I * I = I + * + * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + */ + P.times = P.mul = function (y) { + var carry, e, i, k, r, rL, t, xdL, ydL, + x = this, + Ctor = x.constructor, + xd = x.d, + yd = (y = new Ctor(y)).d; + + y.s *= x.s; + + // If either is NaN, ±Infinity or ±0... + if (!xd || !xd[0] || !yd || !yd[0]) { + + return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd + + // Return NaN if either is NaN. + // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity. + ? NaN + + // Return ±Infinity if either is ±Infinity. + // Return ±0 if either is ±0. + : !xd || !yd ? y.s / 0 : y.s * 0); + } + + e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE); + xdL = xd.length; + ydL = yd.length; + + // Ensure xd points to the longer array. + if (xdL < ydL) { + r = xd; + xd = yd; + yd = r; + rL = xdL; + xdL = ydL; + ydL = rL; + } + + // Initialise the result array with zeros. + r = []; + rL = xdL + ydL; + for (i = rL; i--;) r.push(0); + + // Multiply! + for (i = ydL; --i >= 0;) { + carry = 0; + for (k = xdL + i; k > i;) { + t = r[k] + yd[i] * xd[k - i - 1] + carry; + r[k--] = t % BASE | 0; + carry = t / BASE | 0; + } + + r[k] = (r[k] + carry) % BASE | 0; + } + + // Remove trailing zeros. + for (; !r[--rL];) r.pop(); + + if (carry) ++e; + else r.shift(); + + y.d = r; + y.e = getBase10Exponent(r, e); + + return external ? finalise(y, Ctor.precision, Ctor.rounding) : y; + }; + + + /* + * Return a string representing the value of this Decimal in base 2, round to `sd` significant + * digits using rounding mode `rm`. + * + * If the optional `sd` argument is present then return binary exponential notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toBinary = function (sd, rm) { + return toStringBinary(this, 2, sd, rm); + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp` + * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted. + * + * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal. + * + * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toDecimalPlaces = P.toDP = function (dp, rm) { + var x = this, + Ctor = x.constructor; + + x = new Ctor(x); + if (dp === void 0) return x; + + checkInt32(dp, 0, MAX_DIGITS); + + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + + return finalise(x, dp + x.e + 1, rm); + }; + + + /* + * Return a string representing the value of this Decimal in exponential notation rounded to + * `dp` fixed decimal places using rounding mode `rounding`. + * + * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toExponential = function (dp, rm) { + var str, + x = this, + Ctor = x.constructor; + + if (dp === void 0) { + str = finiteToString(x, true); + } else { + checkInt32(dp, 0, MAX_DIGITS); + + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + + x = finalise(new Ctor(x), dp + 1, rm); + str = finiteToString(x, true, dp + 1); + } + + return x.isNeg() && !x.isZero() ? '-' + str : str; + }; + + + /* + * Return a string representing the value of this Decimal in normal (fixed-point) notation to + * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is + * omitted. + * + * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'. + * + * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'. + * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'. + * (-0).toFixed(3) is '0.000'. + * (-0.5).toFixed(0) is '-0'. + * + */ + P.toFixed = function (dp, rm) { + var str, y, + x = this, + Ctor = x.constructor; + + if (dp === void 0) { + str = finiteToString(x); + } else { + checkInt32(dp, 0, MAX_DIGITS); + + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + + y = finalise(new Ctor(x), dp + x.e + 1, rm); + str = finiteToString(y, false, dp + y.e + 1); + } + + // To determine whether to add the minus sign look at the value before it was rounded, + // i.e. look at `x` rather than `y`. + return x.isNeg() && !x.isZero() ? '-' + str : str; + }; + + + /* + * Return an array representing the value of this Decimal as a simple fraction with an integer + * numerator and an integer denominator. + * + * The denominator will be a positive non-zero value less than or equal to the specified maximum + * denominator. If a maximum denominator is not specified, the denominator will be the lowest + * value necessary to represent the number exactly. + * + * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity. + * + */ + P.toFraction = function (maxD) { + var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r, + x = this, + xd = x.d, + Ctor = x.constructor; + + if (!xd) return new Ctor(x); + + n1 = d0 = new Ctor(1); + d1 = n0 = new Ctor(0); + + d = new Ctor(d1); + e = d.e = getPrecision(xd) - x.e - 1; + k = e % LOG_BASE; + d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k); + + if (maxD == null) { + + // d is 10**e, the minimum max-denominator needed. + maxD = e > 0 ? d : n1; + } else { + n = new Ctor(maxD); + if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n); + maxD = n.gt(d) ? (e > 0 ? d : n1) : n; + } + + external = false; + n = new Ctor(digitsToString(xd)); + pr = Ctor.precision; + Ctor.precision = e = xd.length * LOG_BASE * 2; + + for (;;) { + q = divide(n, d, 0, 1, 1); + d2 = d0.plus(q.times(d1)); + if (d2.cmp(maxD) == 1) break; + d0 = d1; + d1 = d2; + d2 = n1; + n1 = n0.plus(q.times(d2)); + n0 = d2; + d2 = d; + d = n.minus(q.times(d2)); + n = d2; + } + + d2 = divide(maxD.minus(d0), d1, 0, 1, 1); + n0 = n0.plus(d2.times(n1)); + d0 = d0.plus(d2.times(d1)); + n0.s = n1.s = x.s; + + // Determine which fraction is closer to x, n0/d0 or n1/d1? + r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1 + ? [n1, d1] : [n0, d0]; + + Ctor.precision = pr; + external = true; + + return r; + }; + + + /* + * Return a string representing the value of this Decimal in base 16, round to `sd` significant + * digits using rounding mode `rm`. + * + * If the optional `sd` argument is present then return binary exponential notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toHexadecimal = P.toHex = function (sd, rm) { + return toStringBinary(this, 16, sd, rm); + }; + + + /* + * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding + * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal. + * + * The return value will always have the same sign as this Decimal, unless either this Decimal + * or `y` is NaN, in which case the return value will be also be NaN. + * + * The return value is not affected by the value of `precision`. + * + * y {number|string|Decimal} The magnitude to round to a multiple of. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * 'toNearest() rounding mode not an integer: {rm}' + * 'toNearest() rounding mode out of range: {rm}' + * + */ + P.toNearest = function (y, rm) { + var x = this, + Ctor = x.constructor; + + x = new Ctor(x); + + if (y == null) { + + // If x is not finite, return x. + if (!x.d) return x; + + y = new Ctor(1); + rm = Ctor.rounding; + } else { + y = new Ctor(y); + if (rm === void 0) { + rm = Ctor.rounding; + } else { + checkInt32(rm, 0, 8); + } + + // If x is not finite, return x if y is not NaN, else NaN. + if (!x.d) return y.s ? x : y; + + // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN. + if (!y.d) { + if (y.s) y.s = x.s; + return y; + } + } + + // If y is not zero, calculate the nearest multiple of y to x. + if (y.d[0]) { + external = false; + x = divide(x, y, 0, rm, 1).times(y); + external = true; + finalise(x); + + // If y is zero, return zero with the sign of x. + } else { + y.s = x.s; + x = y; + } + + return x; + }; + + + /* + * Return the value of this Decimal converted to a number primitive. + * Zero keeps its sign. + * + */ + P.toNumber = function () { + return +this; + }; + + + /* + * Return a string representing the value of this Decimal in base 8, round to `sd` significant + * digits using rounding mode `rm`. + * + * If the optional `sd` argument is present then return binary exponential notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toOctal = function (sd, rm) { + return toStringBinary(this, 8, sd, rm); + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded + * to `precision` significant digits using rounding mode `rounding`. + * + * ECMAScript compliant. + * + * pow(x, NaN) = NaN + * pow(x, ±0) = 1 + + * pow(NaN, non-zero) = NaN + * pow(abs(x) > 1, +Infinity) = +Infinity + * pow(abs(x) > 1, -Infinity) = +0 + * pow(abs(x) == 1, ±Infinity) = NaN + * pow(abs(x) < 1, +Infinity) = +0 + * pow(abs(x) < 1, -Infinity) = +Infinity + * pow(+Infinity, y > 0) = +Infinity + * pow(+Infinity, y < 0) = +0 + * pow(-Infinity, odd integer > 0) = -Infinity + * pow(-Infinity, even integer > 0) = +Infinity + * pow(-Infinity, odd integer < 0) = -0 + * pow(-Infinity, even integer < 0) = +0 + * pow(+0, y > 0) = +0 + * pow(+0, y < 0) = +Infinity + * pow(-0, odd integer > 0) = -0 + * pow(-0, even integer > 0) = +0 + * pow(-0, odd integer < 0) = -Infinity + * pow(-0, even integer < 0) = +Infinity + * pow(finite x < 0, finite non-integer) = NaN + * + * For non-integer or very large exponents pow(x, y) is calculated using + * + * x^y = exp(y*ln(x)) + * + * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the + * probability of an incorrectly rounded result + * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14 + * i.e. 1 in 250,000,000,000,000 + * + * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place). + * + * y {number|string|Decimal} The power to which to raise this Decimal. + * + */ + P.toPower = P.pow = function (y) { + var e, k, pr, r, rm, s, + x = this, + Ctor = x.constructor, + yn = +(y = new Ctor(y)); + + // Either ±Infinity, NaN or ±0? + if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn)); + + x = new Ctor(x); + + if (x.eq(1)) return x; + + pr = Ctor.precision; + rm = Ctor.rounding; + + if (y.eq(1)) return finalise(x, pr, rm); + + // y exponent + e = mathfloor(y.e / LOG_BASE); + + // If y is a small integer use the 'exponentiation by squaring' algorithm. + if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) { + r = intPow(Ctor, x, k, pr); + return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm); + } + + s = x.s; + + // if x is negative + if (s < 0) { + + // if y is not an integer + if (e < y.d.length - 1) return new Ctor(NaN); + + // Result is positive if x is negative and the last digit of integer y is even. + if ((y.d[e] & 1) == 0) s = 1; + + // if x.eq(-1) + if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) { + x.s = s; + return x; + } + } + + // Estimate result exponent. + // x^y = 10^e, where e = y * log10(x) + // log10(x) = log10(x_significand) + x_exponent + // log10(x_significand) = ln(x_significand) / ln(10) + k = mathpow(+x, yn); + e = k == 0 || !isFinite(k) + ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1)) + : new Ctor(k + '').e; + + // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1. + + // Overflow/underflow? + if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0); + + external = false; + Ctor.rounding = x.s = 1; + + // Estimate the extra guard digits needed to ensure five correct rounding digits from + // naturalLogarithm(x). Example of failure without these extra digits (precision: 10): + // new Decimal(2.32456).pow('2087987436534566.46411') + // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815 + k = Math.min(12, (e + '').length); + + // r = x^y = exp(y*ln(x)) + r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr); + + // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40) + if (r.d) { + + // Truncate to the required precision plus five rounding digits. + r = finalise(r, pr + 5, 1); + + // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate + // the result. + if (checkRoundingDigits(r.d, pr, rm)) { + e = pr + 10; + + // Truncate to the increased precision plus five rounding digits. + r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1); + + // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9). + if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) { + r = finalise(r, pr + 1, 0); + } + } + } + + r.s = s; + external = true; + Ctor.rounding = rm; + + return finalise(r, pr, rm); + }; + + + /* + * Return a string representing the value of this Decimal rounded to `sd` significant digits + * using rounding mode `rounding`. + * + * Return exponential notation if `sd` is less than the number of digits necessary to represent + * the integer part of the value in normal notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toPrecision = function (sd, rm) { + var str, + x = this, + Ctor = x.constructor; + + if (sd === void 0) { + str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); + } else { + checkInt32(sd, 1, MAX_DIGITS); + + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + + x = finalise(new Ctor(x), sd, rm); + str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd); + } + + return x.isNeg() && !x.isZero() ? '-' + str : str; + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd` + * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if + * omitted. + * + * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * 'toSD() digits out of range: {sd}' + * 'toSD() digits not an integer: {sd}' + * 'toSD() rounding mode not an integer: {rm}' + * 'toSD() rounding mode out of range: {rm}' + * + */ + P.toSignificantDigits = P.toSD = function (sd, rm) { + var x = this, + Ctor = x.constructor; + + if (sd === void 0) { + sd = Ctor.precision; + rm = Ctor.rounding; + } else { + checkInt32(sd, 1, MAX_DIGITS); + + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + } + + return finalise(new Ctor(x), sd, rm); + }; + + + /* + * Return a string representing the value of this Decimal. + * + * Return exponential notation if this Decimal has a positive exponent equal to or greater than + * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`. + * + */ + P.toString = function () { + var x = this, + Ctor = x.constructor, + str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); + + return x.isNeg() && !x.isZero() ? '-' + str : str; + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal truncated to a whole number. + * + */ + P.truncated = P.trunc = function () { + return finalise(new this.constructor(this), this.e + 1, 1); + }; + + + /* + * Return a string representing the value of this Decimal. + * Unlike `toString`, negative zero will include the minus sign. + * + */ + P.valueOf = P.toJSON = function () { + var x = this, + Ctor = x.constructor, + str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); + + return x.isNeg() ? '-' + str : str; + }; + + + // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers. + + + /* + * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower, + * finiteToString, naturalExponential, naturalLogarithm + * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest, + * P.toPrecision, P.toSignificantDigits, toStringBinary, random + * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm + * convertBase toStringBinary, parseOther + * cos P.cos + * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy, + * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction, + * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm, + * taylorSeries, atan2, parseOther + * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh, + * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus, + * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot, + * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed, + * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits, + * P.truncated, divide, getLn10, getPi, naturalExponential, + * naturalLogarithm, ceil, floor, round, trunc + * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf, + * toStringBinary + * getBase10Exponent P.minus, P.plus, P.times, parseOther + * getLn10 P.logarithm, naturalLogarithm + * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2 + * getPrecision P.precision, P.toFraction + * getZeroString digitsToString, finiteToString + * intPow P.toPower, parseOther + * isOdd toLessThanHalfPi + * maxOrMin max, min + * naturalExponential P.naturalExponential, P.toPower + * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm, + * P.toPower, naturalExponential + * nonFiniteToString finiteToString, toStringBinary + * parseDecimal Decimal + * parseOther Decimal + * sin P.sin + * taylorSeries P.cosh, P.sinh, cos, sin + * toLessThanHalfPi P.cos, P.sin + * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal + * truncate intPow + * + * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi, + * naturalLogarithm, config, parseOther, random, Decimal + */ + + + function digitsToString(d) { + var i, k, ws, + indexOfLastWord = d.length - 1, + str = '', + w = d[0]; + + if (indexOfLastWord > 0) { + str += w; + for (i = 1; i < indexOfLastWord; i++) { + ws = d[i] + ''; + k = LOG_BASE - ws.length; + if (k) str += getZeroString(k); + str += ws; + } + + w = d[i]; + ws = w + ''; + k = LOG_BASE - ws.length; + if (k) str += getZeroString(k); + } else if (w === 0) { + return '0'; + } + + // Remove trailing zeros of last w. + for (; w % 10 === 0;) w /= 10; + + return str + w; + } + + + function checkInt32(i, min, max) { + if (i !== ~~i || i < min || i > max) { + throw Error(invalidArgument + i); + } + } + + + /* + * Check 5 rounding digits if `repeating` is null, 4 otherwise. + * `repeating == null` if caller is `log` or `pow`, + * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`. + */ + function checkRoundingDigits(d, i, rm, repeating) { + var di, k, r, rd; + + // Get the length of the first word of the array d. + for (k = d[0]; k >= 10; k /= 10) --i; + + // Is the rounding digit in the first word of d? + if (--i < 0) { + i += LOG_BASE; + di = 0; + } else { + di = Math.ceil((i + 1) / LOG_BASE); + i %= LOG_BASE; + } + + // i is the index (0 - 6) of the rounding digit. + // E.g. if within the word 3487563 the first rounding digit is 5, + // then i = 4, k = 1000, rd = 3487563 % 1000 = 563 + k = mathpow(10, LOG_BASE - i); + rd = d[di] % k | 0; + + if (repeating == null) { + if (i < 3) { + if (i == 0) rd = rd / 100 | 0; + else if (i == 1) rd = rd / 10 | 0; + r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0; + } else { + r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) && + (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 || + (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0; + } + } else { + if (i < 4) { + if (i == 0) rd = rd / 1000 | 0; + else if (i == 1) rd = rd / 100 | 0; + else if (i == 2) rd = rd / 10 | 0; + r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999; + } else { + r = ((repeating || rm < 4) && rd + 1 == k || + (!repeating && rm > 3) && rd + 1 == k / 2) && + (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1; + } + } + + return r; + } + + + // Convert string of `baseIn` to an array of numbers of `baseOut`. + // Eg. convertBase('255', 10, 16) returns [15, 15]. + // Eg. convertBase('ff', 16, 10) returns [2, 5, 5]. + function convertBase(str, baseIn, baseOut) { + var j, + arr = [0], + arrL, + i = 0, + strL = str.length; + + for (; i < strL;) { + for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn; + arr[0] += NUMERALS.indexOf(str.charAt(i++)); + for (j = 0; j < arr.length; j++) { + if (arr[j] > baseOut - 1) { + if (arr[j + 1] === void 0) arr[j + 1] = 0; + arr[j + 1] += arr[j] / baseOut | 0; + arr[j] %= baseOut; + } + } + } + + return arr.reverse(); + } + + + /* + * cos(x) = 1 - x^2/2! + x^4/4! - ... + * |x| < pi/2 + * + */ + function cosine(Ctor, x) { + var k, len, y; + + if (x.isZero()) return x; + + // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1 + // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1 + + // Estimate the optimum number of times to use the argument reduction. + len = x.d.length; + if (len < 32) { + k = Math.ceil(len / 3); + y = (1 / tinyPow(4, k)).toString(); + } else { + k = 16; + y = '2.3283064365386962890625e-10'; + } + + Ctor.precision += k; + + x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1)); + + // Reverse argument reduction + for (var i = k; i--;) { + var cos2x = x.times(x); + x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1); + } + + Ctor.precision -= k; + + return x; + } + + + /* + * Perform division in the specified base. + */ + var divide = (function () { + + // Assumes non-zero x and k, and hence non-zero result. + function multiplyInteger(x, k, base) { + var temp, + carry = 0, + i = x.length; + + for (x = x.slice(); i--;) { + temp = x[i] * k + carry; + x[i] = temp % base | 0; + carry = temp / base | 0; + } + + if (carry) x.unshift(carry); + + return x; + } + + function compare(a, b, aL, bL) { + var i, r; + + if (aL != bL) { + r = aL > bL ? 1 : -1; + } else { + for (i = r = 0; i < aL; i++) { + if (a[i] != b[i]) { + r = a[i] > b[i] ? 1 : -1; + break; + } + } + } + + return r; + } + + function subtract(a, b, aL, base) { + var i = 0; + + // Subtract b from a. + for (; aL--;) { + a[aL] -= i; + i = a[aL] < b[aL] ? 1 : 0; + a[aL] = i * base + a[aL] - b[aL]; + } + + // Remove leading zeros. + for (; !a[0] && a.length > 1;) a.shift(); + } + + return function (x, y, pr, rm, dp, base) { + var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, + yL, yz, + Ctor = x.constructor, + sign = x.s == y.s ? 1 : -1, + xd = x.d, + yd = y.d; + + // Either NaN, Infinity or 0? + if (!xd || !xd[0] || !yd || !yd[0]) { + + return new Ctor(// Return NaN if either NaN, or both Infinity or 0. + !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN : + + // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0. + xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0); + } + + if (base) { + logBase = 1; + e = x.e - y.e; + } else { + base = BASE; + logBase = LOG_BASE; + e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase); + } + + yL = yd.length; + xL = xd.length; + q = new Ctor(sign); + qd = q.d = []; + + // Result exponent may be one less than e. + // The digit array of a Decimal from toStringBinary may have trailing zeros. + for (i = 0; yd[i] == (xd[i] || 0); i++); + + if (yd[i] > (xd[i] || 0)) e--; + + if (pr == null) { + sd = pr = Ctor.precision; + rm = Ctor.rounding; + } else if (dp) { + sd = pr + (x.e - y.e) + 1; + } else { + sd = pr; + } + + if (sd < 0) { + qd.push(1); + more = true; + } else { + + // Convert precision in number of base 10 digits to base 1e7 digits. + sd = sd / logBase + 2 | 0; + i = 0; + + // divisor < 1e7 + if (yL == 1) { + k = 0; + yd = yd[0]; + sd++; + + // k is the carry. + for (; (i < xL || k) && sd--; i++) { + t = k * base + (xd[i] || 0); + qd[i] = t / yd | 0; + k = t % yd | 0; + } + + more = k || i < xL; + + // divisor >= 1e7 + } else { + + // Normalise xd and yd so highest order digit of yd is >= base/2 + k = base / (yd[0] + 1) | 0; + + if (k > 1) { + yd = multiplyInteger(yd, k, base); + xd = multiplyInteger(xd, k, base); + yL = yd.length; + xL = xd.length; + } + + xi = yL; + rem = xd.slice(0, yL); + remL = rem.length; + + // Add zeros to make remainder as long as divisor. + for (; remL < yL;) rem[remL++] = 0; + + yz = yd.slice(); + yz.unshift(0); + yd0 = yd[0]; + + if (yd[1] >= base / 2) ++yd0; + + do { + k = 0; + + // Compare divisor and remainder. + cmp = compare(yd, rem, yL, remL); + + // If divisor < remainder. + if (cmp < 0) { + + // Calculate trial digit, k. + rem0 = rem[0]; + if (yL != remL) rem0 = rem0 * base + (rem[1] || 0); + + // k will be how many times the divisor goes into the current remainder. + k = rem0 / yd0 | 0; + + // Algorithm: + // 1. product = divisor * trial digit (k) + // 2. if product > remainder: product -= divisor, k-- + // 3. remainder -= product + // 4. if product was < remainder at 2: + // 5. compare new remainder and divisor + // 6. If remainder > divisor: remainder -= divisor, k++ + + if (k > 1) { + if (k >= base) k = base - 1; + + // product = divisor * trial digit. + prod = multiplyInteger(yd, k, base); + prodL = prod.length; + remL = rem.length; + + // Compare product and remainder. + cmp = compare(prod, rem, prodL, remL); + + // product > remainder. + if (cmp == 1) { + k--; + + // Subtract divisor from product. + subtract(prod, yL < prodL ? yz : yd, prodL, base); + } + } else { + + // cmp is -1. + // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1 + // to avoid it. If k is 1 there is a need to compare yd and rem again below. + if (k == 0) cmp = k = 1; + prod = yd.slice(); + } + + prodL = prod.length; + if (prodL < remL) prod.unshift(0); + + // Subtract product from remainder. + subtract(rem, prod, remL, base); + + // If product was < previous remainder. + if (cmp == -1) { + remL = rem.length; + + // Compare divisor and new remainder. + cmp = compare(yd, rem, yL, remL); + + // If divisor < new remainder, subtract divisor from remainder. + if (cmp < 1) { + k++; + + // Subtract divisor from remainder. + subtract(rem, yL < remL ? yz : yd, remL, base); + } + } + + remL = rem.length; + } else if (cmp === 0) { + k++; + rem = [0]; + } // if cmp === 1, k will be 0 + + // Add the next digit, k, to the result array. + qd[i++] = k; + + // Update the remainder. + if (cmp && rem[0]) { + rem[remL++] = xd[xi] || 0; + } else { + rem = [xd[xi]]; + remL = 1; + } + + } while ((xi++ < xL || rem[0] !== void 0) && sd--); + + more = rem[0] !== void 0; + } + + // Leading zero? + if (!qd[0]) qd.shift(); + } + + // logBase is 1 when divide is being used for base conversion. + if (logBase == 1) { + q.e = e; + inexact = more; + } else { + + // To calculate q.e, first get the number of digits of qd[0]. + for (i = 1, k = qd[0]; k >= 10; k /= 10) i++; + q.e = i + e * logBase - 1; + + finalise(q, dp ? pr + q.e + 1 : pr, rm, more); + } + + return q; + }; + })(); + + + /* + * Round `x` to `sd` significant digits using rounding mode `rm`. + * Check for over/under-flow. + */ + function finalise(x, sd, rm, isTruncated) { + var digits, i, j, k, rd, roundUp, w, xd, xdi, + Ctor = x.constructor; + + // Don't round if sd is null or undefined. + out: if (sd != null) { + xd = x.d; + + // Infinity/NaN. + if (!xd) return x; + + // rd: the rounding digit, i.e. the digit after the digit that may be rounded up. + // w: the word of xd containing rd, a base 1e7 number. + // xdi: the index of w within xd. + // digits: the number of digits of w. + // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if + // they had leading zeros) + // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero). + + // Get the length of the first word of the digits array xd. + for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++; + i = sd - digits; + + // Is the rounding digit in the first word of xd? + if (i < 0) { + i += LOG_BASE; + j = sd; + w = xd[xdi = 0]; + + // Get the rounding digit at index j of w. + rd = w / mathpow(10, digits - j - 1) % 10 | 0; + } else { + xdi = Math.ceil((i + 1) / LOG_BASE); + k = xd.length; + if (xdi >= k) { + if (isTruncated) { + + // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`. + for (; k++ <= xdi;) xd.push(0); + w = rd = 0; + digits = 1; + i %= LOG_BASE; + j = i - LOG_BASE + 1; + } else { + break out; + } + } else { + w = k = xd[xdi]; + + // Get the number of digits of w. + for (digits = 1; k >= 10; k /= 10) digits++; + + // Get the index of rd within w. + i %= LOG_BASE; + + // Get the index of rd within w, adjusted for leading zeros. + // The number of leading zeros of w is given by LOG_BASE - digits. + j = i - LOG_BASE + digits; + + // Get the rounding digit at index j of w. + rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0; + } + } + + // Are there any non-zero digits after the rounding digit? + isTruncated = isTruncated || sd < 0 || + xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1)); + + // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right + // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression + // will give 714. + + roundUp = rm < 4 + ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) + : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 && + + // Check whether the digit to the left of the rounding digit is odd. + ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 || + rm == (x.s < 0 ? 8 : 7)); + + if (sd < 1 || !xd[0]) { + xd.length = 0; + if (roundUp) { + + // Convert sd to decimal places. + sd -= x.e + 1; + + // 1, 0.1, 0.01, 0.001, 0.0001 etc. + xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE); + x.e = -sd || 0; + } else { + + // Zero. + xd[0] = x.e = 0; + } + + return x; + } + + // Remove excess digits. + if (i == 0) { + xd.length = xdi; + k = 1; + xdi--; + } else { + xd.length = xdi + 1; + k = mathpow(10, LOG_BASE - i); + + // E.g. 56700 becomes 56000 if 7 is the rounding digit. + // j > 0 means i > number of leading zeros of w. + xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0; + } + + if (roundUp) { + for (;;) { + + // Is the digit to be rounded up in the first word of xd? + if (xdi == 0) { + + // i will be the length of xd[0] before k is added. + for (i = 1, j = xd[0]; j >= 10; j /= 10) i++; + j = xd[0] += k; + for (k = 1; j >= 10; j /= 10) k++; + + // if i != k the length has increased. + if (i != k) { + x.e++; + if (xd[0] == BASE) xd[0] = 1; + } + + break; + } else { + xd[xdi] += k; + if (xd[xdi] != BASE) break; + xd[xdi--] = 0; + k = 1; + } + } + } + + // Remove trailing zeros. + for (i = xd.length; xd[--i] === 0;) xd.pop(); + } + + if (external) { + + // Overflow? + if (x.e > Ctor.maxE) { + + // Infinity. + x.d = null; + x.e = NaN; + + // Underflow? + } else if (x.e < Ctor.minE) { + + // Zero. + x.e = 0; + x.d = [0]; + // Ctor.underflow = true; + } // else Ctor.underflow = false; + } + + return x; + } + + + function finiteToString(x, isExp, sd) { + if (!x.isFinite()) return nonFiniteToString(x); + var k, + e = x.e, + str = digitsToString(x.d), + len = str.length; + + if (isExp) { + if (sd && (k = sd - len) > 0) { + str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k); + } else if (len > 1) { + str = str.charAt(0) + '.' + str.slice(1); + } + + str = str + (x.e < 0 ? 'e' : 'e+') + x.e; + } else if (e < 0) { + str = '0.' + getZeroString(-e - 1) + str; + if (sd && (k = sd - len) > 0) str += getZeroString(k); + } else if (e >= len) { + str += getZeroString(e + 1 - len); + if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k); + } else { + if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k); + if (sd && (k = sd - len) > 0) { + if (e + 1 === len) str += '.'; + str += getZeroString(k); + } + } + + return str; + } + + + // Calculate the base 10 exponent from the base 1e7 exponent. + function getBase10Exponent(digits, e) { + var w = digits[0]; + + // Add the number of digits of the first word of the digits array. + for ( e *= LOG_BASE; w >= 10; w /= 10) e++; + return e; + } + + + function getLn10(Ctor, sd, pr) { + if (sd > LN10_PRECISION) { + + // Reset global state in case the exception is caught. + external = true; + if (pr) Ctor.precision = pr; + throw Error(precisionLimitExceeded); + } + return finalise(new Ctor(LN10), sd, 1, true); + } + + + function getPi(Ctor, sd, rm) { + if (sd > PI_PRECISION) throw Error(precisionLimitExceeded); + return finalise(new Ctor(PI), sd, rm, true); + } + + + function getPrecision(digits) { + var w = digits.length - 1, + len = w * LOG_BASE + 1; + + w = digits[w]; + + // If non-zero... + if (w) { + + // Subtract the number of trailing zeros of the last word. + for (; w % 10 == 0; w /= 10) len--; + + // Add the number of digits of the first word. + for (w = digits[0]; w >= 10; w /= 10) len++; + } + + return len; + } + + + function getZeroString(k) { + var zs = ''; + for (; k--;) zs += '0'; + return zs; + } + + + /* + * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an + * integer of type number. + * + * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`. + * + */ + function intPow(Ctor, x, n, pr) { + var isTruncated, + r = new Ctor(1), + + // Max n of 9007199254740991 takes 53 loop iterations. + // Maximum digits array length; leaves [28, 34] guard digits. + k = Math.ceil(pr / LOG_BASE + 4); + + external = false; + + for (;;) { + if (n % 2) { + r = r.times(x); + if (truncate(r.d, k)) isTruncated = true; + } + + n = mathfloor(n / 2); + if (n === 0) { + + // To ensure correct rounding when r.d is truncated, increment the last word if it is zero. + n = r.d.length - 1; + if (isTruncated && r.d[n] === 0) ++r.d[n]; + break; + } + + x = x.times(x); + truncate(x.d, k); + } + + external = true; + + return r; + } + + + function isOdd(n) { + return n.d[n.d.length - 1] & 1; + } + + + /* + * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'. + */ + function maxOrMin(Ctor, args, ltgt) { + var y, + x = new Ctor(args[0]), + i = 0; + + for (; ++i < args.length;) { + y = new Ctor(args[i]); + if (!y.s) { + x = y; + break; + } else if (x[ltgt](y)) { + x = y; + } + } + + return x; + } + + + /* + * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant + * digits. + * + * Taylor/Maclaurin series. + * + * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ... + * + * Argument reduction: + * Repeat x = x / 32, k += 5, until |x| < 0.1 + * exp(x) = exp(x / 2^k)^(2^k) + * + * Previously, the argument was initially reduced by + * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10) + * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was + * found to be slower than just dividing repeatedly by 32 as above. + * + * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000 + * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000 + * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324) + * + * exp(Infinity) = Infinity + * exp(-Infinity) = 0 + * exp(NaN) = NaN + * exp(±0) = 1 + * + * exp(x) is non-terminating for any finite, non-zero x. + * + * The result will always be correctly rounded. + * + */ + function naturalExponential(x, sd) { + var denominator, guard, j, pow, sum, t, wpr, + rep = 0, + i = 0, + k = 0, + Ctor = x.constructor, + rm = Ctor.rounding, + pr = Ctor.precision; + + // 0/NaN/Infinity? + if (!x.d || !x.d[0] || x.e > 17) { + + return new Ctor(x.d + ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0 + : x.s ? x.s < 0 ? 0 : x : 0 / 0); + } + + if (sd == null) { + external = false; + wpr = pr; + } else { + wpr = sd; + } + + t = new Ctor(0.03125); + + // while abs(x) >= 0.1 + while (x.e > -2) { + + // x = x / 2^5 + x = x.times(t); + k += 5; + } + + // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision + // necessary to ensure the first 4 rounding digits are correct. + guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0; + wpr += guard; + denominator = pow = sum = new Ctor(1); + Ctor.precision = wpr; + + for (;;) { + pow = finalise(pow.times(x), wpr, 1); + denominator = denominator.times(++i); + t = sum.plus(divide(pow, denominator, wpr, 1)); + + if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) { + j = k; + while (j--) sum = finalise(sum.times(sum), wpr, 1); + + // Check to see if the first 4 rounding digits are [49]999. + // If so, repeat the summation with a higher precision, otherwise + // e.g. with precision: 18, rounding: 1 + // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123) + // `wpr - guard` is the index of first rounding digit. + if (sd == null) { + + if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) { + Ctor.precision = wpr += 10; + denominator = pow = t = new Ctor(1); + i = 0; + rep++; + } else { + return finalise(sum, Ctor.precision = pr, rm, external = true); + } + } else { + Ctor.precision = pr; + return sum; + } + } + + sum = t; + } + } + + + /* + * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant + * digits. + * + * ln(-n) = NaN + * ln(0) = -Infinity + * ln(-0) = -Infinity + * ln(1) = 0 + * ln(Infinity) = Infinity + * ln(-Infinity) = NaN + * ln(NaN) = NaN + * + * ln(n) (n != 1) is non-terminating. + * + */ + function naturalLogarithm(y, sd) { + var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2, + n = 1, + guard = 10, + x = y, + xd = x.d, + Ctor = x.constructor, + rm = Ctor.rounding, + pr = Ctor.precision; + + // Is x negative or Infinity, NaN, 0 or 1? + if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) { + return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x); + } + + if (sd == null) { + external = false; + wpr = pr; + } else { + wpr = sd; + } + + Ctor.precision = wpr += guard; + c = digitsToString(xd); + c0 = c.charAt(0); + + if (Math.abs(e = x.e) < 1.5e15) { + + // Argument reduction. + // The series converges faster the closer the argument is to 1, so using + // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b + // multiply the argument by itself until the leading digits of the significand are 7, 8, 9, + // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can + // later be divided by this number, then separate out the power of 10 using + // ln(a*10^b) = ln(a) + b*ln(10). + + // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14). + //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) { + // max n is 6 (gives 0.7 - 1.3) + while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) { + x = x.times(y); + c = digitsToString(x.d); + c0 = c.charAt(0); + n++; + } + + e = x.e; + + if (c0 > 1) { + x = new Ctor('0.' + c); + e++; + } else { + x = new Ctor(c0 + '.' + c.slice(1)); + } + } else { + + // The argument reduction method above may result in overflow if the argument y is a massive + // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this + // function using ln(x*10^e) = ln(x) + e*ln(10). + t = getLn10(Ctor, wpr + 2, pr).times(e + ''); + x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t); + Ctor.precision = pr; + + return sd == null ? finalise(x, pr, rm, external = true) : x; + } + + // x1 is x reduced to a value near 1. + x1 = x; + + // Taylor series. + // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...) + // where x = (y - 1)/(y + 1) (|x| < 1) + sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1); + x2 = finalise(x.times(x), wpr, 1); + denominator = 3; + + for (;;) { + numerator = finalise(numerator.times(x2), wpr, 1); + t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1)); + + if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) { + sum = sum.times(2); + + // Reverse the argument reduction. Check that e is not 0 because, besides preventing an + // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0. + if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + '')); + sum = divide(sum, new Ctor(n), wpr, 1); + + // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has + // been repeated previously) and the first 4 rounding digits 9999? + // If so, restart the summation with a higher precision, otherwise + // e.g. with precision: 12, rounding: 1 + // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463. + // `wpr - guard` is the index of first rounding digit. + if (sd == null) { + if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) { + Ctor.precision = wpr += guard; + t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1); + x2 = finalise(x.times(x), wpr, 1); + denominator = rep = 1; + } else { + return finalise(sum, Ctor.precision = pr, rm, external = true); + } + } else { + Ctor.precision = pr; + return sum; + } + } + + sum = t; + denominator += 2; + } + } + + + // ±Infinity, NaN. + function nonFiniteToString(x) { + // Unsigned. + return String(x.s * x.s / 0); + } + + + /* + * Parse the value of a new Decimal `x` from string `str`. + */ + function parseDecimal(x, str) { + var e, i, len; + + // Decimal point? + if ((e = str.indexOf('.')) > -1) str = str.replace('.', ''); + + // Exponential form? + if ((i = str.search(/e/i)) > 0) { + + // Determine exponent. + if (e < 0) e = i; + e += +str.slice(i + 1); + str = str.substring(0, i); + } else if (e < 0) { + + // Integer. + e = str.length; + } + + // Determine leading zeros. + for (i = 0; str.charCodeAt(i) === 48; i++); + + // Determine trailing zeros. + for (len = str.length; str.charCodeAt(len - 1) === 48; --len); + str = str.slice(i, len); + + if (str) { + len -= i; + x.e = e = e - i - 1; + x.d = []; + + // Transform base + + // e is the base 10 exponent. + // i is where to slice str to get the first word of the digits array. + i = (e + 1) % LOG_BASE; + if (e < 0) i += LOG_BASE; + + if (i < len) { + if (i) x.d.push(+str.slice(0, i)); + for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE)); + str = str.slice(i); + i = LOG_BASE - str.length; + } else { + i -= len; + } + + for (; i--;) str += '0'; + x.d.push(+str); + + if (external) { + + // Overflow? + if (x.e > x.constructor.maxE) { + + // Infinity. + x.d = null; + x.e = NaN; + + // Underflow? + } else if (x.e < x.constructor.minE) { + + // Zero. + x.e = 0; + x.d = [0]; + // x.constructor.underflow = true; + } // else x.constructor.underflow = false; + } + } else { + + // Zero. + x.e = 0; + x.d = [0]; + } + + return x; + } + + + /* + * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value. + */ + function parseOther(x, str) { + var base, Ctor, divisor, i, isFloat, len, p, xd, xe; + + if (str.indexOf('_') > -1) { + str = str.replace(/(\d)_(?=\d)/g, '$1'); + if (isDecimal.test(str)) return parseDecimal(x, str); + } else if (str === 'Infinity' || str === 'NaN') { + if (!+str) x.s = NaN; + x.e = NaN; + x.d = null; + return x; + } + + if (isHex.test(str)) { + base = 16; + str = str.toLowerCase(); + } else if (isBinary.test(str)) { + base = 2; + } else if (isOctal.test(str)) { + base = 8; + } else { + throw Error(invalidArgument + str); + } + + // Is there a binary exponent part? + i = str.search(/p/i); + + if (i > 0) { + p = +str.slice(i + 1); + str = str.substring(2, i); + } else { + str = str.slice(2); + } + + // Convert `str` as an integer then divide the result by `base` raised to a power such that the + // fraction part will be restored. + i = str.indexOf('.'); + isFloat = i >= 0; + Ctor = x.constructor; + + if (isFloat) { + str = str.replace('.', ''); + len = str.length; + i = len - i; + + // log[10](16) = 1.2041... , log[10](88) = 1.9444.... + divisor = intPow(Ctor, new Ctor(base), i, i * 2); + } + + xd = convertBase(str, base, BASE); + xe = xd.length - 1; + + // Remove trailing zeros. + for (i = xe; xd[i] === 0; --i) xd.pop(); + if (i < 0) return new Ctor(x.s * 0); + x.e = getBase10Exponent(xd, xe); + x.d = xd; + external = false; + + // At what precision to perform the division to ensure exact conversion? + // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount) + // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412 + // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits. + // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount + // Therefore using 4 * the number of digits of str will always be enough. + if (isFloat) x = divide(x, divisor, len * 4); + + // Multiply by the binary exponent part if present. + if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p)); + external = true; + + return x; + } + + + /* + * sin(x) = x - x^3/3! + x^5/5! - ... + * |x| < pi/2 + * + */ + function sine(Ctor, x) { + var k, + len = x.d.length; + + if (len < 3) { + return x.isZero() ? x : taylorSeries(Ctor, 2, x, x); + } + + // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x) + // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5) + // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20)) + + // Estimate the optimum number of times to use the argument reduction. + k = 1.4 * Math.sqrt(len); + k = k > 16 ? 16 : k | 0; + + x = x.times(1 / tinyPow(5, k)); + x = taylorSeries(Ctor, 2, x, x); + + // Reverse argument reduction + var sin2_x, + d5 = new Ctor(5), + d16 = new Ctor(16), + d20 = new Ctor(20); + for (; k--;) { + sin2_x = x.times(x); + x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20)))); + } + + return x; + } + + + // Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`. + function taylorSeries(Ctor, n, x, y, isHyperbolic) { + var j, t, u, x2, + pr = Ctor.precision, + k = Math.ceil(pr / LOG_BASE); + + external = false; + x2 = x.times(x); + u = new Ctor(y); + + for (;;) { + t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1); + u = isHyperbolic ? y.plus(t) : y.minus(t); + y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1); + t = u.plus(y); + + if (t.d[k] !== void 0) { + for (j = k; t.d[j] === u.d[j] && j--;); + if (j == -1) break; + } + + j = u; + u = y; + y = t; + t = j; + } + + external = true; + t.d.length = k + 1; + + return t; + } + + + // Exponent e must be positive and non-zero. + function tinyPow(b, e) { + var n = b; + while (--e) n *= b; + return n; + } + + + // Return the absolute value of `x` reduced to less than or equal to half pi. + function toLessThanHalfPi(Ctor, x) { + var t, + isNeg = x.s < 0, + pi = getPi(Ctor, Ctor.precision, 1), + halfPi = pi.times(0.5); + + x = x.abs(); + + if (x.lte(halfPi)) { + quadrant = isNeg ? 4 : 1; + return x; + } + + t = x.divToInt(pi); + + if (t.isZero()) { + quadrant = isNeg ? 3 : 2; + } else { + x = x.minus(t.times(pi)); + + // 0 <= x < pi + if (x.lte(halfPi)) { + quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1); + return x; + } + + quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2); + } + + return x.minus(pi).abs(); + } + + + /* + * Return the value of Decimal `x` as a string in base `baseOut`. + * + * If the optional `sd` argument is present include a binary exponent suffix. + */ + function toStringBinary(x, baseOut, sd, rm) { + var base, e, i, k, len, roundUp, str, xd, y, + Ctor = x.constructor, + isExp = sd !== void 0; + + if (isExp) { + checkInt32(sd, 1, MAX_DIGITS); + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + } else { + sd = Ctor.precision; + rm = Ctor.rounding; + } + + if (!x.isFinite()) { + str = nonFiniteToString(x); + } else { + str = finiteToString(x); + i = str.indexOf('.'); + + // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required: + // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10)) + // minBinaryExponent = floor(decimalExponent * log[2](10)) + // log[2](10) = 3.321928094887362347870319429489390175864 + + if (isExp) { + base = 2; + if (baseOut == 16) { + sd = sd * 4 - 3; + } else if (baseOut == 8) { + sd = sd * 3 - 2; + } + } else { + base = baseOut; + } + + // Convert the number as an integer then divide the result by its base raised to a power such + // that the fraction part will be restored. + + // Non-integer. + if (i >= 0) { + str = str.replace('.', ''); + y = new Ctor(1); + y.e = str.length - i; + y.d = convertBase(finiteToString(y), 10, base); + y.e = y.d.length; + } + + xd = convertBase(str, 10, base); + e = len = xd.length; + + // Remove trailing zeros. + for (; xd[--len] == 0;) xd.pop(); + + if (!xd[0]) { + str = isExp ? '0p+0' : '0'; + } else { + if (i < 0) { + e--; + } else { + x = new Ctor(x); + x.d = xd; + x.e = e; + x = divide(x, y, sd, rm, 0, base); + xd = x.d; + e = x.e; + roundUp = inexact; + } + + // The rounding digit, i.e. the digit after the digit that may be rounded up. + i = xd[sd]; + k = base / 2; + roundUp = roundUp || xd[sd + 1] !== void 0; + + roundUp = rm < 4 + ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2)) + : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 || + rm === (x.s < 0 ? 8 : 7)); + + xd.length = sd; + + if (roundUp) { + + // Rounding up may mean the previous digit has to be rounded up and so on. + for (; ++xd[--sd] > base - 1;) { + xd[sd] = 0; + if (!sd) { + ++e; + xd.unshift(1); + } + } + } + + // Determine trailing zeros. + for (len = xd.length; !xd[len - 1]; --len); + + // E.g. [4, 11, 15] becomes 4bf. + for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]); + + // Add binary exponent suffix? + if (isExp) { + if (len > 1) { + if (baseOut == 16 || baseOut == 8) { + i = baseOut == 16 ? 4 : 3; + for (--len; len % i; len++) str += '0'; + xd = convertBase(str, base, baseOut); + for (len = xd.length; !xd[len - 1]; --len); + + // xd[0] will always be be 1 + for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]); + } else { + str = str.charAt(0) + '.' + str.slice(1); + } + } + + str = str + (e < 0 ? 'p' : 'p+') + e; + } else if (e < 0) { + for (; ++e;) str = '0' + str; + str = '0.' + str; + } else { + if (++e > len) for (e -= len; e-- ;) str += '0'; + else if (e < len) str = str.slice(0, e) + '.' + str.slice(e); + } + } + + str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str; + } + + return x.s < 0 ? '-' + str : str; + } + + + // Does not strip trailing zeros. + function truncate(arr, len) { + if (arr.length > len) { + arr.length = len; + return true; + } + } + + + // Decimal methods + + + /* + * abs + * acos + * acosh + * add + * asin + * asinh + * atan + * atanh + * atan2 + * cbrt + * ceil + * clamp + * clone + * config + * cos + * cosh + * div + * exp + * floor + * hypot + * ln + * log + * log2 + * log10 + * max + * min + * mod + * mul + * pow + * random + * round + * set + * sign + * sin + * sinh + * sqrt + * sub + * sum + * tan + * tanh + * trunc + */ + + + /* + * Return a new Decimal whose value is the absolute value of `x`. + * + * x {number|string|Decimal} + * + */ + function abs(x) { + return new this(x).abs(); + } + + + /* + * Return a new Decimal whose value is the arccosine in radians of `x`. + * + * x {number|string|Decimal} + * + */ + function acos(x) { + return new this(x).acos(); + } + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function acosh(x) { + return new this(x).acosh(); + } + + + /* + * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * y {number|string|Decimal} + * + */ + function add(x, y) { + return new this(x).plus(y); + } + + + /* + * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function asin(x) { + return new this(x).asin(); + } + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function asinh(x) { + return new this(x).asinh(); + } + + + /* + * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function atan(x) { + return new this(x).atan(); + } + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function atanh(x) { + return new this(x).atanh(); + } + + + /* + * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi + * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`. + * + * Domain: [-Infinity, Infinity] + * Range: [-pi, pi] + * + * y {number|string|Decimal} The y-coordinate. + * x {number|string|Decimal} The x-coordinate. + * + * atan2(±0, -0) = ±pi + * atan2(±0, +0) = ±0 + * atan2(±0, -x) = ±pi for x > 0 + * atan2(±0, x) = ±0 for x > 0 + * atan2(-y, ±0) = -pi/2 for y > 0 + * atan2(y, ±0) = pi/2 for y > 0 + * atan2(±y, -Infinity) = ±pi for finite y > 0 + * atan2(±y, +Infinity) = ±0 for finite y > 0 + * atan2(±Infinity, x) = ±pi/2 for finite x + * atan2(±Infinity, -Infinity) = ±3*pi/4 + * atan2(±Infinity, +Infinity) = ±pi/4 + * atan2(NaN, x) = NaN + * atan2(y, NaN) = NaN + * + */ + function atan2(y, x) { + y = new this(y); + x = new this(x); + var r, + pr = this.precision, + rm = this.rounding, + wpr = pr + 4; + + // Either NaN + if (!y.s || !x.s) { + r = new this(NaN); + + // Both ±Infinity + } else if (!y.d && !x.d) { + r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75); + r.s = y.s; + + // x is ±Infinity or y is ±0 + } else if (!x.d || y.isZero()) { + r = x.s < 0 ? getPi(this, pr, rm) : new this(0); + r.s = y.s; + + // y is ±Infinity or x is ±0 + } else if (!y.d || x.isZero()) { + r = getPi(this, wpr, 1).times(0.5); + r.s = y.s; + + // Both non-zero and finite + } else if (x.s < 0) { + this.precision = wpr; + this.rounding = 1; + r = this.atan(divide(y, x, wpr, 1)); + x = getPi(this, wpr, 1); + this.precision = pr; + this.rounding = rm; + r = y.s < 0 ? r.minus(x) : r.plus(x); + } else { + r = this.atan(divide(y, x, wpr, 1)); + } + + return r; + } + + + /* + * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function cbrt(x) { + return new this(x).cbrt(); + } + + + /* + * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`. + * + * x {number|string|Decimal} + * + */ + function ceil(x) { + return finalise(x = new this(x), x.e + 1, 2); + } + + + /* + * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`. + * + * x {number|string|Decimal} + * min {number|string|Decimal} + * max {number|string|Decimal} + * + */ + function clamp(x, min, max) { + return new this(x).clamp(min, max); + } + + + /* + * Configure global settings for a Decimal constructor. + * + * `obj` is an object with one or more of the following properties, + * + * precision {number} + * rounding {number} + * toExpNeg {number} + * toExpPos {number} + * maxE {number} + * minE {number} + * modulo {number} + * crypto {boolean|number} + * defaults {true} + * + * E.g. Decimal.config({ precision: 20, rounding: 4 }) + * + */ + function config(obj) { + if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected'); + var i, p, v, + useDefaults = obj.defaults === true, + ps = [ + 'precision', 1, MAX_DIGITS, + 'rounding', 0, 8, + 'toExpNeg', -EXP_LIMIT, 0, + 'toExpPos', 0, EXP_LIMIT, + 'maxE', 0, EXP_LIMIT, + 'minE', -EXP_LIMIT, 0, + 'modulo', 0, 9 + ]; + + for (i = 0; i < ps.length; i += 3) { + if (p = ps[i], useDefaults) this[p] = DEFAULTS[p]; + if ((v = obj[p]) !== void 0) { + if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v; + else throw Error(invalidArgument + p + ': ' + v); + } + } + + if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p]; + if ((v = obj[p]) !== void 0) { + if (v === true || v === false || v === 0 || v === 1) { + if (v) { + if (typeof crypto != 'undefined' && crypto && + (crypto.getRandomValues || crypto.randomBytes)) { + this[p] = true; + } else { + throw Error(cryptoUnavailable); + } + } else { + this[p] = false; + } + } else { + throw Error(invalidArgument + p + ': ' + v); + } + } + + return this; + } + + + /* + * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function cos(x) { + return new this(x).cos(); + } + + + /* + * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function cosh(x) { + return new this(x).cosh(); + } + + + /* + * Create and return a Decimal constructor with the same configuration properties as this Decimal + * constructor. + * + */ + function clone(obj) { + var i, p, ps; + + /* + * The Decimal constructor and exported function. + * Return a new Decimal instance. + * + * v {number|string|Decimal} A numeric value. + * + */ + function Decimal(v) { + var e, i, t, + x = this; + + // Decimal called without new. + if (!(x instanceof Decimal)) return new Decimal(v); + + // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor + // which points to Object. + x.constructor = Decimal; + + // Duplicate. + if (isDecimalInstance(v)) { + x.s = v.s; + + if (external) { + if (!v.d || v.e > Decimal.maxE) { + + // Infinity. + x.e = NaN; + x.d = null; + } else if (v.e < Decimal.minE) { + + // Zero. + x.e = 0; + x.d = [0]; + } else { + x.e = v.e; + x.d = v.d.slice(); + } + } else { + x.e = v.e; + x.d = v.d ? v.d.slice() : v.d; + } + + return; + } + + t = typeof v; + + if (t === 'number') { + if (v === 0) { + x.s = 1 / v < 0 ? -1 : 1; + x.e = 0; + x.d = [0]; + return; + } + + if (v < 0) { + v = -v; + x.s = -1; + } else { + x.s = 1; + } + + // Fast path for small integers. + if (v === ~~v && v < 1e7) { + for (e = 0, i = v; i >= 10; i /= 10) e++; + + if (external) { + if (e > Decimal.maxE) { + x.e = NaN; + x.d = null; + } else if (e < Decimal.minE) { + x.e = 0; + x.d = [0]; + } else { + x.e = e; + x.d = [v]; + } + } else { + x.e = e; + x.d = [v]; + } + + return; + + // Infinity, NaN. + } else if (v * 0 !== 0) { + if (!v) x.s = NaN; + x.e = NaN; + x.d = null; + return; + } + + return parseDecimal(x, v.toString()); + + } else if (t !== 'string') { + throw Error(invalidArgument + v); + } + + // Minus sign? + if ((i = v.charCodeAt(0)) === 45) { + v = v.slice(1); + x.s = -1; + } else { + // Plus sign? + if (i === 43) v = v.slice(1); + x.s = 1; + } + + return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v); + } + + Decimal.prototype = P; + + Decimal.ROUND_UP = 0; + Decimal.ROUND_DOWN = 1; + Decimal.ROUND_CEIL = 2; + Decimal.ROUND_FLOOR = 3; + Decimal.ROUND_HALF_UP = 4; + Decimal.ROUND_HALF_DOWN = 5; + Decimal.ROUND_HALF_EVEN = 6; + Decimal.ROUND_HALF_CEIL = 7; + Decimal.ROUND_HALF_FLOOR = 8; + Decimal.EUCLID = 9; + + Decimal.config = Decimal.set = config; + Decimal.clone = clone; + Decimal.isDecimal = isDecimalInstance; + + Decimal.abs = abs; + Decimal.acos = acos; + Decimal.acosh = acosh; // ES6 + Decimal.add = add; + Decimal.asin = asin; + Decimal.asinh = asinh; // ES6 + Decimal.atan = atan; + Decimal.atanh = atanh; // ES6 + Decimal.atan2 = atan2; + Decimal.cbrt = cbrt; // ES6 + Decimal.ceil = ceil; + Decimal.clamp = clamp; + Decimal.cos = cos; + Decimal.cosh = cosh; // ES6 + Decimal.div = div; + Decimal.exp = exp; + Decimal.floor = floor; + Decimal.hypot = hypot; // ES6 + Decimal.ln = ln; + Decimal.log = log; + Decimal.log10 = log10; // ES6 + Decimal.log2 = log2; // ES6 + Decimal.max = max; + Decimal.min = min; + Decimal.mod = mod; + Decimal.mul = mul; + Decimal.pow = pow; + Decimal.random = random; + Decimal.round = round; + Decimal.sign = sign; // ES6 + Decimal.sin = sin; + Decimal.sinh = sinh; // ES6 + Decimal.sqrt = sqrt; + Decimal.sub = sub; + Decimal.sum = sum; + Decimal.tan = tan; + Decimal.tanh = tanh; // ES6 + Decimal.trunc = trunc; // ES6 + + if (obj === void 0) obj = {}; + if (obj) { + if (obj.defaults !== true) { + ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto']; + for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p]; + } + } + + Decimal.config(obj); + + return Decimal; + } + + + /* + * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * y {number|string|Decimal} + * + */ + function div(x, y) { + return new this(x).div(y); + } + + + /* + * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} The power to which to raise the base of the natural log. + * + */ + function exp(x) { + return new this(x).exp(); + } + + + /* + * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`. + * + * x {number|string|Decimal} + * + */ + function floor(x) { + return finalise(x = new this(x), x.e + 1, 3); + } + + + /* + * Return a new Decimal whose value is the square root of the sum of the squares of the arguments, + * rounded to `precision` significant digits using rounding mode `rounding`. + * + * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...) + * + * arguments {number|string|Decimal} + * + */ + function hypot() { + var i, n, + t = new this(0); + + external = false; + + for (i = 0; i < arguments.length;) { + n = new this(arguments[i++]); + if (!n.d) { + if (n.s) { + external = true; + return new this(1 / 0); + } + t = n; + } else if (t.d) { + t = t.plus(n.times(n)); + } + } + + external = true; + + return t.sqrt(); + } + + + /* + * Return true if object is a Decimal instance (where Decimal is any Decimal constructor), + * otherwise return false. + * + */ + function isDecimalInstance(obj) { + return obj instanceof Decimal || obj && obj.toStringTag === tag || false; + } + + + /* + * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function ln(x) { + return new this(x).ln(); + } + + + /* + * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base + * is specified, rounded to `precision` significant digits using rounding mode `rounding`. + * + * log[y](x) + * + * x {number|string|Decimal} The argument of the logarithm. + * y {number|string|Decimal} The base of the logarithm. + * + */ + function log(x, y) { + return new this(x).log(y); + } + + + /* + * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function log2(x) { + return new this(x).log(2); + } + + + /* + * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function log10(x) { + return new this(x).log(10); + } + + + /* + * Return a new Decimal whose value is the maximum of the arguments. + * + * arguments {number|string|Decimal} + * + */ + function max() { + return maxOrMin(this, arguments, 'lt'); + } + + + /* + * Return a new Decimal whose value is the minimum of the arguments. + * + * arguments {number|string|Decimal} + * + */ + function min() { + return maxOrMin(this, arguments, 'gt'); + } + + + /* + * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits + * using rounding mode `rounding`. + * + * x {number|string|Decimal} + * y {number|string|Decimal} + * + */ + function mod(x, y) { + return new this(x).mod(y); + } + + + /* + * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * y {number|string|Decimal} + * + */ + function mul(x, y) { + return new this(x).mul(y); + } + + + /* + * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} The base. + * y {number|string|Decimal} The exponent. + * + */ + function pow(x, y) { + return new this(x).pow(y); + } + + + /* + * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with + * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros + * are produced). + * + * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive. + * + */ + function random(sd) { + var d, e, k, n, + i = 0, + r = new this(1), + rd = []; + + if (sd === void 0) sd = this.precision; + else checkInt32(sd, 1, MAX_DIGITS); + + k = Math.ceil(sd / LOG_BASE); + + if (!this.crypto) { + for (; i < k;) rd[i++] = Math.random() * 1e7 | 0; + + // Browsers supporting crypto.getRandomValues. + } else if (crypto.getRandomValues) { + d = crypto.getRandomValues(new Uint32Array(k)); + + for (; i < k;) { + n = d[i]; + + // 0 <= n < 4294967296 + // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865). + if (n >= 4.29e9) { + d[i] = crypto.getRandomValues(new Uint32Array(1))[0]; + } else { + + // 0 <= n <= 4289999999 + // 0 <= (n % 1e7) <= 9999999 + rd[i++] = n % 1e7; + } + } + + // Node.js supporting crypto.randomBytes. + } else if (crypto.randomBytes) { + + // buffer + d = crypto.randomBytes(k *= 4); + + for (; i < k;) { + + // 0 <= n < 2147483648 + n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24); + + // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286). + if (n >= 2.14e9) { + crypto.randomBytes(4).copy(d, i); + } else { + + // 0 <= n <= 2139999999 + // 0 <= (n % 1e7) <= 9999999 + rd.push(n % 1e7); + i += 4; + } + } + + i = k / 4; + } else { + throw Error(cryptoUnavailable); + } + + k = rd[--i]; + sd %= LOG_BASE; + + // Convert trailing digits to zeros according to sd. + if (k && sd) { + n = mathpow(10, LOG_BASE - sd); + rd[i] = (k / n | 0) * n; + } + + // Remove trailing words which are zero. + for (; rd[i] === 0; i--) rd.pop(); + + // Zero? + if (i < 0) { + e = 0; + rd = [0]; + } else { + e = -1; + + // Remove leading words which are zero and adjust exponent accordingly. + for (; rd[0] === 0; e -= LOG_BASE) rd.shift(); + + // Count the digits of the first word of rd to determine leading zeros. + for (k = 1, n = rd[0]; n >= 10; n /= 10) k++; + + // Adjust the exponent for leading zeros of the first word of rd. + if (k < LOG_BASE) e -= LOG_BASE - k; + } + + r.e = e; + r.d = rd; + + return r; + } + + + /* + * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`. + * + * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL). + * + * x {number|string|Decimal} + * + */ + function round(x) { + return finalise(x = new this(x), x.e + 1, this.rounding); + } + + + /* + * Return + * 1 if x > 0, + * -1 if x < 0, + * 0 if x is 0, + * -0 if x is -0, + * NaN otherwise + * + * x {number|string|Decimal} + * + */ + function sign(x) { + x = new this(x); + return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN; + } + + + /* + * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits + * using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function sin(x) { + return new this(x).sin(); + } + + + /* + * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function sinh(x) { + return new this(x).sinh(); + } + + + /* + * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function sqrt(x) { + return new this(x).sqrt(); + } + + + /* + * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits + * using rounding mode `rounding`. + * + * x {number|string|Decimal} + * y {number|string|Decimal} + * + */ + function sub(x, y) { + return new this(x).sub(y); + } + + + /* + * Return a new Decimal whose value is the sum of the arguments, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * Only the result is rounded, not the intermediate calculations. + * + * arguments {number|string|Decimal} + * + */ + function sum() { + var i = 0, + args = arguments, + x = new this(args[i]); + + external = false; + for (; x.s && ++i < args.length;) x = x.plus(args[i]); + external = true; + + return finalise(x, this.precision, this.rounding); + } + + + /* + * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function tan(x) { + return new this(x).tan(); + } + + + /* + * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function tanh(x) { + return new this(x).tanh(); + } + + + /* + * Return a new Decimal whose value is `x` truncated to an integer. + * + * x {number|string|Decimal} + * + */ + function trunc(x) { + return finalise(x = new this(x), x.e + 1, 1); + } + + + // Create and configure initial Decimal constructor. + Decimal = clone(DEFAULTS); + Decimal.prototype.constructor = Decimal; + Decimal['default'] = Decimal.Decimal = Decimal; + + // Create the internal constants from their string values. + LN10 = new Decimal(LN10); + PI = new Decimal(PI); + + + // Export. + + + // AMD. + if ( module.exports) { + if (typeof Symbol == 'function' && typeof Symbol.iterator == 'symbol') { + P[Symbol['for']('nodejs.util.inspect.custom')] = P.toString; + P[Symbol.toStringTag] = 'Decimal'; + } + + module.exports = Decimal; + + // Browser. + } else { + if (!globalScope) { + globalScope = typeof self != 'undefined' && self && self.self == self ? self : window; + } + + noConflict = globalScope.Decimal; + Decimal.noConflict = function () { + globalScope.Decimal = noConflict; + return Decimal; + }; + + globalScope.Decimal = Decimal; + } +})(commonjsGlobal); +}); + var lodash = createCommonjsModule(function (module, exports) { (function() { @@ -17732,9 +22660,26 @@ var lodash = createCommonjsModule(function (module, exports) { }); var results = createCommonjsModule(function (module, exports) { +var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); -exports.Value = exports.Arity = void 0; +exports.Value = exports.Arity = exports.FloatOrMilliseconds = void 0; +const decimal_js_1 = __importDefault(decimal); +const datetimeRe = new RegExp('[1-9][0-9]{3}-[01][0-9]-[0-3][0-9][T ][0-2][0-9]:[0-5][0-9]'); +const FloatOrMilliseconds = (value) => { + const v = value.trim(); + if (v === '') { + return new decimal_js_1.default(0); + } + if (datetimeRe.test(v)) { + return new decimal_js_1.default(new Date(v).valueOf()); + } + const decimalValue = new decimal_js_1.default(v); + return decimalValue.isNaN() ? new decimal_js_1.default(0) : decimalValue; +}; +exports.FloatOrMilliseconds = FloatOrMilliseconds; class Arity { constructor(rows, columns) { this.isRow = () => this.rows > 1 && this.cols === 1; @@ -17748,13 +22693,9 @@ exports.Arity = Arity; class Value { constructor(val) { this.get = (row, column) => this.val[row][column]; - this.getAsFloat = (row, column) => { - const parsed = parseFloat(this.get(row, column)); - return isNaN(parsed) ? 0 : parsed; - }; - this.getAsInt = (row, column) => { - const parsed = parseInt(this.get(row, column)); - return isNaN(parsed) ? 0 : parsed; + this.getAsNumber = (row, column) => { + const value = this.get(row, column); + return exports.FloatOrMilliseconds(value); }; /** * getArity returns the dimensions of the contained value, in rows and columns @@ -17826,30 +22767,24 @@ class AlgebraicOperation { return neverthrow.err(Error(`Right operand in algebraic "${name}" must be a single cell.`)); } if (rightArity.isCell()) { - const rightCellValue = rightValue.value.getAsFloat(0, 0); + const rightCellValue = rightValue.value.getAsNumber(0, 0); const result = lodash.map(leftValue.value.val, (currentRow) => lodash.map(currentRow, (currentCell) => { - let leftCellValue = parseFloat(currentCell); - if (isNaN(leftCellValue)) { - leftCellValue = 0; - } + const leftCellValue = results.FloatOrMilliseconds(currentCell); return fn(leftCellValue, rightCellValue).toString(); })); return neverthrow.ok(new results.Value(result)); } - const leftCellValue = leftValue.value.getAsFloat(0, 0); + const leftCellValue = leftValue.value.getAsNumber(0, 0); const result = lodash.map(rightValue.value.val, (currentRow) => lodash.map(currentRow, (currentCell) => { - let rightCellValue = parseFloat(currentCell); - if (isNaN(leftCellValue)) { - rightCellValue = 0; - } + const rightCellValue = results.FloatOrMilliseconds(currentCell); return fn(leftCellValue, rightCellValue).toString(); })); return neverthrow.ok(new results.Value(result)); }; - this.add = (table, cell) => this.withCellAndRange(table, cell, 'add', true, (left, right) => left + right); - this.subtract = (table, cell) => this.withCellAndRange(table, cell, 'subtract', true, (left, right) => left - right); - this.multiply = (table, cell) => this.withCellAndRange(table, cell, 'multiply', true, (left, right) => left * right); - this.divide = (table, cell) => this.withCellAndRange(table, cell, 'divide', false, (left, right) => left / right); + this.add = (table, cell) => this.withCellAndRange(table, cell, 'add', true, (left, right) => left.plus(right)); + this.subtract = (table, cell) => this.withCellAndRange(table, cell, 'subtract', true, (left, right) => left.minus(right)); + this.multiply = (table, cell) => this.withCellAndRange(table, cell, 'multiply', true, (left, right) => left.times(right)); + this.divide = (table, cell) => this.withCellAndRange(table, cell, 'divide', false, (left, right) => left.dividedBy(right)); const typeErr = ast_utils.checkType(ast, 'algebraic_operation'); if (typeErr) { throw typeErr; @@ -17928,21 +22863,21 @@ class Predicate { if (!rightArity.isCell()) { return neverthrow.err(Error('Can only use comparison operator on a single cell. Right side is not a cell.')); } - const leftVal = leftData.value.getAsFloat(0, 0); - const rightVal = rightData.value.getAsFloat(0, 0); + const leftVal = leftData.value.getAsNumber(0, 0); + const rightVal = rightData.value.getAsNumber(0, 0); switch (this.operator) { case '>': - return neverthrow.ok(leftVal > rightVal); + return neverthrow.ok(leftVal.greaterThan(rightVal)); case '>=': - return neverthrow.ok(leftVal >= rightVal); + return neverthrow.ok(leftVal.greaterThanOrEqualTo(rightVal)); case '<': - return neverthrow.ok(leftVal < rightVal); + return neverthrow.ok(leftVal.lessThan(rightVal)); case '<=': - return neverthrow.ok(leftVal <= rightVal); + return neverthrow.ok(leftVal.lessThanOrEqualTo(rightVal)); case '==': - return neverthrow.ok(leftVal === rightVal); + return neverthrow.ok(leftVal.equals(rightVal)); case '!=': - return neverthrow.ok(leftVal !== rightVal); + return neverthrow.ok(!leftVal.equals(rightVal)); default: return neverthrow.err(Error('Invalid conditional operator: ' + this.operator)); } @@ -18562,11 +23497,19 @@ exports.DefaultFormatter = DefaultFormatter; class DisplayDirective { constructor(ast) { this.format = (num) => { - if (typeof num === 'string') { - const parsedNum = parseFloat(num); - return parsedNum.toFixed(this.decimalLength); + const parsed = typeof num === 'string' ? parseFloat(num) : num; + if (this.displayAsDatetime) { + // Seriously, there's no date formatting functionality in Javascript? + const date = new Date(parsed); + const pad = (v) => `0${v}`.slice(-2); + const y = date.getFullYear(); + const mo = pad(date.getMonth() + 1); + const d = pad(date.getDate()); + const h = pad(date.getHours()); + const min = pad(date.getMinutes()); + return `${y}-${mo}-${d} ${h}:${min}`; } - return num.toFixed(this.decimalLength); + return parsed.toFixed(this.decimalLength); }; let typeError = ast_utils.checkType(ast, 'display_directive'); if (typeError) { @@ -18586,10 +23529,15 @@ class DisplayDirective { throw lengthError; } const formattingDirective = displayDirectiveOption.children[0]; - typeError = ast_utils.checkType(formattingDirective, 'formatting_directive'); + typeError = ast_utils.checkType(formattingDirective, 'formatting_directive', 'datetime_directive'); if (typeError) { throw typeError; } + this.displayAsDatetime = formattingDirective.type === 'datetime_directive'; + if (this.displayAsDatetime) { + this.decimalLength = -1; + return; + } lengthError = ast_utils.checkChildLength(formattingDirective, 1); if (lengthError) { throw lengthError; @@ -18606,12 +23554,16 @@ exports.DisplayDirective = DisplayDirective; }); var single_param_function = createCommonjsModule(function (module, exports) { +var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.SingleParamFunctionCall = void 0; +const decimal_js_1 = __importDefault(decimal); class SingleParamFunctionCall { constructor(ast, table) { this.getValue = (table, cell) => this.param.getValue(table, cell).andThen((sourceData) => @@ -18650,12 +23602,9 @@ exports.SingleParamFunctionCall = SingleParamFunctionCall; */ const sum = (value) => { const total = value.val.reduce((runningTotal, currentRow) => currentRow.reduce((rowTotal, currentCell) => { - let currentCellValue = parseFloat(currentCell); - if (isNaN(currentCellValue)) { - currentCellValue = 0; - } - return rowTotal + currentCellValue; - }, runningTotal), 0); + const currentCellValue = results.FloatOrMilliseconds(currentCell); + return currentCellValue.add(rowTotal); + }, runningTotal), new decimal_js_1.default(0)); return new results.Value([[total.toString()]]); }; /** @@ -20211,8 +25160,9 @@ algebraic_operation ::= "(" source " "? algebraic_operator " "? source ")" algebraic_operator ::= "+" | "-" | "*" | "/" display_directive ::= ";" display_directive_option -display_directive_option ::= formatting_directive +display_directive_option ::= formatting_directive | datetime_directive formatting_directive ::= "%." int "f" +datetime_directive ::= "dt" float ::= "-"? int "." int real ::= "-"? int @@ -20333,7 +25283,8 @@ const parseFormula = (line, table) => { try { do { formulas.push(new Formula(unparsedFormulas[0], table)); - if (unparsedFormulas.length > 1 && unparsedFormulas[1].type === 'formula_list') { + if (unparsedFormulas.length > 1 && + unparsedFormulas[1].type === 'formula_list') { unparsedFormulas = unparsedFormulas[1].children; } else { @@ -24035,4 +28986,4 @@ var buyMeACoffee = "\n\n\n\n\n\n\n\n"; module.exports = TableEditorPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9pY29ucy50cyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL3BvaW50LmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvcmFuZ2UuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9mb2N1cy5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2FsaWdubWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL3RhYmxlLWNlbGwuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi90YWJsZS1yb3cuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9uZXZlcnRocm93L25ldmVydGhyb3cuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL2FzdF91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbG9kYXNoLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9yZXN1bHRzLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9hbGdlYnJhaWNfb3BlcmF0aW9uLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9jb25kaXRpb25hbF9mdW5jdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvY29uc3RhbnQuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL2NvbHVtbi5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvcm93LmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9yZWZlcmVuY2UuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL3JhbmdlLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9kZXN0aW5hdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvZGlzcGxheV9kaXJlY3RpdmUuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL3NpbmdsZV9wYXJhbV9mdW5jdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9lYm5mL2Rpc3QvVG9rZW5FcnJvci5qcyIsIm5vZGVfbW9kdWxlcy9lYm5mL2Rpc3QvUGFyc2VyLmpzIiwibm9kZV9tb2R1bGVzL2VibmYvZGlzdC9TZW1hbnRpY0hlbHBlcnMuanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L0dyYW1tYXJzL0JORi5qcyIsIm5vZGVfbW9kdWxlcy9lYm5mL2Rpc3QvR3JhbW1hcnMvVzNDRUJORi5qcyIsIm5vZGVfbW9kdWxlcy9lYm5mL2Rpc3QvR3JhbW1hcnMvQ3VzdG9tLmpzIiwibm9kZV9tb2R1bGVzL2VibmYvZGlzdC9HcmFtbWFycy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9lYm5mL2Rpc3QvaW5kZXguanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL2NhbGMuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi90YWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL3BhcnNlci5qcyIsIm5vZGVfbW9kdWxlcy9tZWF3L2xpYi9pbmRleC5tanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9mb3JtYXR0ZXIuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9lZGl0LXNjcmlwdC5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL3RleHQtZWRpdG9yLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvb3B0aW9ucy5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL3RhYmxlLWVkaXRvci5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2luZGV4LmpzIiwic3JjL3NldHRpbmdzLnRzIiwic3JjL29ic2lkaWFuLXRleHQtZWRpdG9yLnRzIiwic3JjL3RhYmxlLWVkaXRvci50cyIsInNyYy90YWJsZS1jb250cm9scy12aWV3LnRzIiwic3JjL21haW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfSk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcclxuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xyXG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxyXG4gICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxyXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcclxuICAgIHJldHVybiByO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgcHJpdmF0ZU1hcCkge1xyXG4gICAgaWYgKCFwcml2YXRlTWFwLmhhcyhyZWNlaXZlcikpIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZVwiKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwcml2YXRlTWFwLmdldChyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBwcml2YXRlTWFwLCB2YWx1ZSkge1xyXG4gICAgaWYgKCFwcml2YXRlTWFwLmhhcyhyZWNlaXZlcikpIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIHNldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZVwiKTtcclxuICAgIH1cclxuICAgIHByaXZhdGVNYXAuc2V0KHJlY2VpdmVyLCB2YWx1ZSk7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cclxuIiwiaW1wb3J0IHsgYWRkSWNvbiB9IGZyb20gJ29ic2lkaWFuJztcblxuZXhwb3J0IGNvbnN0IGljb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBzcHJlYWRzaGVldDogYFxuPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCA0ODIuODEgNDgyLjgxXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIm00NTcuNTggMjUuNDY0LTQzMi44MyAwLjQyMTUxYy0xMy42NTggMC4wMTMzMTQtMjQuNzU4IDExLjExNS0yNC43NTcgMjQuNzU3bDAuMDMxMDI0IDM0Ny40NWM3LjQ4MzNlLTQgOC4zODA4IDQuMjExIDE1Ljc3MiAxMC42MDggMjAuMjU5IDMuNDUzMyAyLjQ0OTkgNS4wNzE2IDMuMjkwMSA4Ljg3OSAzLjkwMjIgMS43MDMzIDAuMzczMzMgMy40NTYxIDAuNTk0NzEgNS4yNjkyIDAuNTkyOTRsNDMyLjg0LTAuNDIxNTFjMS44MDktMWUtMyAzLjU2MTgtMC4yMTgyMyA1LjI1NjgtMC41OTI5NGgxLjIxNzR2LTAuMzcxOTZjMTAuNTA1LTIuODcyNyAxOC4yNzktMTIuMzk3IDE4LjI3OC0yMy43ODhsLTAuMDMxLTM0Ny40M2MxZS0zIC0xMy42NDktMTEuMTA3LTI0Ljc2My0yNC43NjgtMjQuNzYzem0zLjU0NTMgMjQuNzYzdjcxLjM0NGgtMTYzLjMxdi03NC44ODZoMTU5Ljc2YzEuOTY0MSAwLjAwMTQgMy41NDY3IDEuNTkyMiAzLjU0NjcgMy41NDI1em0tMS42NzM3IDM1MC4zN2gtMTYxLjZ2LTY3LjIwN2gxNjMuMzF2NjQuMjY4YzFlLTMgMS4yNTcyLTAuNzA1NDkgMi4zMjEtMS43MDMzIDIuOTM4NnptLTQzOC4yMS0yLjUxNzF2LTY0LjI2OGg3Ni42NDZ2NjcuMjA3aC03NC45NDJjLTAuOTk3ODQtMC42MTc2NS0xLjcwMzMtMS42ODE0LTEuNzAzMy0yLjkzODZ6bTI1NS4yOC0xNTUuMTh2NjkuNjg4aC0xNTcuNDJ2LTY5LjY4OHptMCA5MC45MTN2NjcuMjA3aC0xNTcuNDJ2LTY3LjIwN3ptLTAuMDMxLTIxMS44M2gtMTU3LjQydi03NC44ODZoMTU3LjQyem0wIDIxLjIyNnY3Ny44MjZoLTE1Ny40MnYtNzcuODI2em0tMTc4LjY0IDc3LjgyNmgtNzYuNjQ2di03Ny44MjZoNzYuNjQ2em0wLjAzMTAyIDIxLjg2MnY2OS42ODhoLTc2LjY0NnYtNjkuNjg4em0xOTkuOTUgNjkuMjY4di02OS42OTdoMTYzLjMxdjY5LjY5N3ptLTAuMDMxLTkxLjU1MnYtNzcuODI2aDE2My4zMXY3Ny44MjZ6XCIgc3Ryb2tlLXdpZHRoPVwiMS4zNzI1XCIvPlxuPC9zdmc+YCxcbiAgYWxpZ25MZWZ0OiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiBlbmFibGUtYmFja2dyb3VuZD1cIm5ldyAwIDAgNTEyIDUxMlwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxnIHRyYW5zZm9ybT1cIm1hdHJpeCgtMSAwIDAgMSA1MTIgMClcIj5cbiAgICA8cGF0aCBkPVwibTUwMS4zMyAxNzAuNjdoLTMyMGMtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2N3YyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2gzMjBjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42Njd6XCIvPlxuICAgIDxwYXRoIGQ9XCJtNTAxLjMzIDI5OC42N2gtNDkwLjY3Yy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY2djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDQ5MC42N2M1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjLTFlLTMgLTUuODk1LTQuNzcyLTEwLjY2Ni0xMC42NjgtMTAuNjY2elwiLz5cbiAgICA8cGF0aCBkPVwibTUwMS4zMyA0MjYuNjdoLTMyMGMtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2N3YyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2gzMjBjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42Njd6XCIvPlxuICAgIDxwYXRoIGQ9XCJtNTAxLjMzIDQyLjY2N2gtNDkwLjY3Yy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY2djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDQ5MC42N2M1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjLTFlLTMgLTUuODk1LTQuNzcyLTEwLjY2Ni0xMC42NjgtMTAuNjY2elwiLz5cbiAgPC9nPlxuPC9zdmc+YCxcbiAgYWxpZ25DZW50ZXI6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIGVuYWJsZS1iYWNrZ3JvdW5kPVwibmV3IDAgMCA1MTIgNTEyXCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPGcgdHJhbnNmb3JtPVwibWF0cml4KC0xIDAgMCAxIDUxMiAwKVwiPlxuICAgIDxwYXRoIGQ9XCJtNDE2IDE3MC42N2gtMzIwYy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY3djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDMyMGM1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjMC01Ljg5Ni00Ljc3MS0xMC42NjctMTAuNjY3LTEwLjY2N3pcIi8+XG4gICAgPHBhdGggZD1cIm01MDEuMzMgMjk4LjY3aC00OTAuNjdjLTUuODk2IDAtMTAuNjY3IDQuNzcxLTEwLjY2NyAxMC42NjZ2MjEuMzMzYzAgNS44OTYgNC43NzEgMTAuNjY3IDEwLjY2NyAxMC42NjdoNDkwLjY3YzUuODk2IDAgMTAuNjY3LTQuNzcxIDEwLjY2Ny0xMC42Njd2LTIxLjMzM2MtMWUtMyAtNS44OTUtNC43NzItMTAuNjY2LTEwLjY2OC0xMC42NjZ6XCIvPlxuICAgIDxwYXRoIGQ9XCJtNDE2IDQyNi42N2gtMzIwYy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY3djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDMyMGM1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjMC01Ljg5Ni00Ljc3MS0xMC42NjctMTAuNjY3LTEwLjY2N3pcIi8+XG4gICAgPHBhdGggZD1cIm01MDEuMzMgNDIuNjY3aC00OTAuNjdjLTUuODk2IDAtMTAuNjY3IDQuNzcxLTEwLjY2NyAxMC42NjZ2MjEuMzMzYzAgNS44OTYgNC43NzEgMTAuNjY3IDEwLjY2NyAxMC42NjdoNDkwLjY3YzUuODk2IDAgMTAuNjY3LTQuNzcxIDEwLjY2Ny0xMC42Njd2LTIxLjMzM2MtMWUtMyAtNS44OTUtNC43NzItMTAuNjY2LTEwLjY2OC0xMC42NjZ6XCIvPlxuICA8L2c+XG48L3N2Zz5gLFxuICBhbGlnblJpZ2h0OiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiBlbmFibGUtYmFja2dyb3VuZD1cIm5ldyAwIDAgNTEyIDUxMlwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtNTAxLjMzIDE3MC42N2gtMzIwYy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY3djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDMyMGM1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjMC01Ljg5Ni00Ljc3MS0xMC42NjctMTAuNjY3LTEwLjY2N3pcIi8+XG4gIDxwYXRoIGQ9XCJtNTAxLjMzIDI5OC42N2gtNDkwLjY3Yy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY2djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDQ5MC42N2M1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjLTFlLTMgLTUuODk1LTQuNzcyLTEwLjY2Ni0xMC42NjgtMTAuNjY2elwiLz5cbiAgPHBhdGggZD1cIm01MDEuMzMgNDI2LjY3aC0zMjBjLTUuODk2IDAtMTAuNjY3IDQuNzcxLTEwLjY2NyAxMC42Njd2MjEuMzMzYzAgNS44OTYgNC43NzEgMTAuNjY3IDEwLjY2NyAxMC42NjdoMzIwYzUuODk2IDAgMTAuNjY3LTQuNzcxIDEwLjY2Ny0xMC42Njd2LTIxLjMzM2MwLTUuODk2LTQuNzcxLTEwLjY2Ny0xMC42NjctMTAuNjY3elwiLz5cbiAgPHBhdGggZD1cIm01MDEuMzMgNDIuNjY3aC00OTAuNjdjLTUuODk2IDAtMTAuNjY3IDQuNzcxLTEwLjY2NyAxMC42NjZ2MjEuMzMzYzAgNS44OTYgNC43NzEgMTAuNjY3IDEwLjY2NyAxMC42NjdoNDkwLjY3YzUuODk2IDAgMTAuNjY3LTQuNzcxIDEwLjY2Ny0xMC42Njd2LTIxLjMzM2MtMWUtMyAtNS44OTUtNC43NzItMTAuNjY2LTEwLjY2OC0xMC42NjZ6XCIvPlxuPC9zdmc+YCxcbiAgZGVsZXRlQ29sdW1uOiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiBlbmFibGUtYmFja2dyb3VuZD1cIm5ldyAwIDAgMjYgMjZcIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCAyNiAyNlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPHBhdGggZD1cIm0xMy41OTQgMjAuODV2My4xNWgtMTB2LTIyaDEwdjMuMTVjMC42MzMtMC4zMjMgMS4zMDQtMC41NjUgMi0wLjcyN3YtMy40MjNjMC0wLjU1MS0wLjQ0OC0xLTEtMWgtMTJjLTAuNTUgMC0xIDAuNDQ5LTEgMXYyNGMwIDAuNTUxIDAuNDQ5IDEgMSAxaDEyYzAuNTUyIDAgMS0wLjQ0OSAxLTF2LTMuNDI0Yy0wLjY5Ni0wLjE2MS0xLjM2Ny0wLjQwMy0yLTAuNzI2elwiLz5cbiAgPHBhdGggZD1cIm0xNy41OTQgNi4xODhjLTMuNzYyIDAtNi44MTMgMy4wNTEtNi44MTIgNi44MTMtMWUtMyAzLjc2MSAzLjA1IDYuODEyIDYuODEyIDYuODEyczYuODEzLTMuMDUxIDYuODEzLTYuODEzLTMuMDUyLTYuODEyLTYuODEzLTYuODEyem0zLjYzMiA3LjgwMi03LjI2NyAxZS0zdi0xLjk4Mmg3LjI2OGwtMWUtMyAxLjk4MXpcIi8+XG48L3N2Zz5gLFxuICBkZWxldGVSb3c6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIGVuYWJsZS1iYWNrZ3JvdW5kPVwibmV3IDAgMCAxNS4zODEgMTUuMzgxXCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgMTUuMzgxIDE1LjM4MVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPHBhdGggZD1cIk0wLDEuNzMydjcuNzMyaDYuMDUzYzAtMC4wMzUtMC4wMDQtMC4wNy0wLjAwNC0wLjEwNGMwLTAuNDM0LDAuMDYxLTAuODU0LDAuMTY1LTEuMjU1SDEuMzZWMy4wOTIgICAgaDEyLjY2MnYyLjE5MmMwLjU0NiwwLjM5NiwxLjAxLDAuODk3LDEuMzU5LDEuNDc3VjEuNzMySDB6XCIvPlxuICA8cGF0aCBkPVwibTExLjE5NiA1LjI4Yy0yLjMwNyAwLTQuMTgzIDEuODc3LTQuMTgzIDQuMTg0IDAgMi4zMDggMS44NzYgNC4xODUgNC4xODMgNC4xODUgMi4zMDkgMCA0LjE4NS0xLjg3NyA0LjE4NS00LjE4NSAwLTIuMzA3LTEuODc2LTQuMTg0LTQuMTg1LTQuMTg0em0wIDcuMjMzYy0xLjY3OSAwLTMuMDQ3LTEuMzY3LTMuMDQ3LTMuMDQ5IDAtMS42OCAxLjM2OC0zLjA0OSAzLjA0Ny0zLjA0OSAxLjY4NCAwIDMuMDUgMS4zNjkgMy4wNSAzLjA0OSAwIDEuNjgyLTEuMzY2IDMuMDQ5LTMuMDUgMy4wNDl6XCIvPlxuICA8cmVjdCB4PVwiOS4zMTJcIiB5PVwiOC43NTlcIiB3aWR0aD1cIjMuODQ0XCIgaGVpZ2h0PVwiMS4xMDRcIi8+XG48L3N2Zz5gLFxuICBpbnNlcnRDb2x1bW46IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiLTIxIDAgNTEyIDUxMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPHBhdGggZD1cIm0yODggMTA2LjY3Yy0zLjkyNTggMC03Ljg1MTYtMS40Mjk3LTEwLjkyMi00LjMxMjVsLTgwLTc0LjY2NGMtNC44MDA4LTQuNDgwNS02LjM3ODktMTEuNDU3LTMuOTY4OC0xNy41NTkgMi40MTAyLTYuMTAxNiA4LjMyMDMtMTAuMTMzIDE0Ljg5MS0xMC4xMzNoMTYwYzYuNTcwMyAwIDEyLjQ4IDQuMDExNyAxNC44OTEgMTAuMTMzIDIuNDEwMiA2LjEyNSAwLjgzMjAzIDEzLjA3OC0zLjk2ODggMTcuNTU5bC04MCA3NC42NjRjLTMuMDcwMyAyLjg4MjgtNi45OTYxIDQuMzEyNS0xMC45MjIgNC4zMTI1em0tMzkuNDAyLTc0LjY2OCAzOS40MDIgMzYuNzc3IDM5LjQwMi0zNi43Nzd6XCIvPlxuICA8cGF0aCBkPVwibTQzMiA1MTJoLTUzLjMzMmMtMjAuNTkgMC0zNy4zMzYtMTYuNzQ2LTM3LjMzNi0zNy4zMzJ2LTMzMC42N2MwLTIwLjU4NiAxNi43NDYtMzcuMzMyIDM3LjMzNi0zNy4zMzJoNTMuMzMyYzIwLjU4NiAwIDM3LjMzMiAxNi43NDYgMzcuMzMyIDM3LjMzMnYzMzAuNjdjMCAyMC41ODYtMTYuNzQ2IDM3LjMzMi0zNy4zMzIgMzcuMzMyem0tNTMuMzMyLTM3My4zM2MtMi45NDUzIDAtNS4zMzU5IDIuMzg2Ny01LjMzNTkgNS4zMzJ2MzMwLjY3YzAgMi45NDE0IDIuMzkwNiA1LjMzMiA1LjMzNTkgNS4zMzJoNTMuMzMyYzIuOTQ1MyAwIDUuMzMyLTIuMzkwNiA1LjMzMi01LjMzMnYtMzMwLjY3YzAtMi45NDUzLTIuMzg2Ny01LjMzMi01LjMzMi01LjMzMnpcIi8+XG4gIDxwYXRoIGQ9XCJtMTk3LjMzIDUxMmgtMTYwYy0yMC41ODYgMC0zNy4zMzItMTYuNzQ2LTM3LjMzMi0zNy4zMzJ2LTMzMC42N2MwLTIwLjU4NiAxNi43NDYtMzcuMzMyIDM3LjMzMi0zNy4zMzJoMTYwYzIwLjU5IDAgMzcuMzM2IDE2Ljc0NiAzNy4zMzYgMzcuMzMydjMzMC42N2MwIDIwLjU4Ni0xNi43NDYgMzcuMzMyLTM3LjMzNiAzNy4zMzJ6bS0xNjAtMzczLjMzYy0yLjk0MTQgMC01LjMzMiAyLjM4NjctNS4zMzIgNS4zMzJ2MzMwLjY3YzAgMi45NDE0IDIuMzkwNiA1LjMzMiA1LjMzMiA1LjMzMmgxNjBjMi45NDUzIDAgNS4zMzU5LTIuMzkwNiA1LjMzNTktNS4zMzJ2LTMzMC42N2MwLTIuOTQ1My0yLjM5MDYtNS4zMzItNS4zMzU5LTUuMzMyelwiLz5cbiAgPHBhdGggZD1cIm00NTMuMzMgMzI1LjMzaC05NmMtOC44MzIgMC0xNi03LjE2OC0xNi0xNnM3LjE2OC0xNiAxNi0xNmg5NmM4LjgzMiAwIDE2IDcuMTY4IDE2IDE2cy03LjE2OCAxNi0xNiAxNnpcIi8+XG4gIDxwYXRoIGQ9XCJtMjE4LjY3IDMyNS4zM2gtMjAyLjY3Yy04LjgzMiAwLTE2LTcuMTY4LTE2LTE2czcuMTY4LTE2IDE2LTE2aDIwMi42N2M4LjgzMiAwIDE2IDcuMTY4IDE2IDE2cy03LjE2OCAxNi0xNiAxNnpcIi8+XG4gIDxwYXRoIGQ9XCJtMTE3LjMzIDUxMmMtOC44MzIgMC0xNi03LjE2OC0xNi0xNnYtMzczLjMzYzAtOC44MzIgNy4xNjgtMTYgMTYtMTZzMTYgNy4xNjggMTYgMTZ2MzczLjMzYzAgOC44MzItNy4xNjggMTYtMTYgMTZ6XCIvPlxuPC9zdmc+YCxcbiAgaW5zZXJ0Um93OiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgLTIxIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMTYgMjc3LjMzYy0xLjk4NDQgMC0zLjk2ODgtMC4zNjMyOC01Ljg2NzItMS4xMDk0LTYuMTIxMS0yLjQxMDItMTAuMTMzLTguMzIwMy0xMC4xMzMtMTQuODkxdi0xNjBjMC02LjU3MDMgNC4wMTE3LTEyLjQ4IDEwLjEzMy0xNC44OTEgNi4xNDQ1LTIuNDEwMiAxMy4wNzgtMC44NTE1NiAxNy41NTkgMy45Njg4bDc0LjY2NCA4MGM1Ljc2MTcgNi4xNDQ1IDUuNzYxNyAxNS42OCAwIDIxLjgyNGwtNzQuNjY0IDgwYy0zLjA5MzggMy4zMjgxLTcuMzM5OCA1LjA5NzctMTEuNjkxIDUuMDk3N3ptMTYtMTM1LjR2NzguODA1bDM2Ljc3Ny0zOS40MDJ6XCIvPlxuICA8cGF0aCBkPVwibTQ3NC42NyAxMjhoLTMzMC42N2MtMjAuNTg2IDAtMzcuMzMyLTE2Ljc0Ni0zNy4zMzItMzcuMzMydi01My4zMzZjMC0yMC41ODYgMTYuNzQ2LTM3LjMzMiAzNy4zMzItMzcuMzMyaDMzMC42N2MyMC41ODYgMCAzNy4zMzIgMTYuNzQ2IDM3LjMzMiAzNy4zMzJ2NTMuMzM2YzAgMjAuNTg2LTE2Ljc0NiAzNy4zMzItMzcuMzMyIDM3LjMzMnptLTMzMC42Ny05NmMtMi45NDUzIDAtNS4zMzIgMi4zOTA2LTUuMzMyIDUuMzMydjUzLjMzNmMwIDIuOTQxNCAyLjM4NjcgNS4zMzIgNS4zMzIgNS4zMzJoMzMwLjY3YzIuOTQxNCAwIDUuMzMyLTIuMzkwNiA1LjMzMi01LjMzMnYtNTMuMzM2YzAtMi45NDE0LTIuMzkwNi01LjMzMi01LjMzMi01LjMzMnpcIi8+XG4gIDxwYXRoIGQ9XCJtNDc0LjY3IDQ2OS4zM2gtMzMwLjY3Yy0yMC41ODYgMC0zNy4zMzItMTYuNzQ2LTM3LjMzMi0zNy4zMzJ2LTE2MGMwLTIwLjU4NiAxNi43NDYtMzcuMzMyIDM3LjMzMi0zNy4zMzJoMzMwLjY3YzIwLjU4NiAwIDM3LjMzMiAxNi43NDYgMzcuMzMyIDM3LjMzMnYxNjBjMCAyMC41ODYtMTYuNzQ2IDM3LjMzMi0zNy4zMzIgMzcuMzMyem0tMzMwLjY3LTIwMi42NmMtMi45NDUzIDAtNS4zMzIgMi4zODY3LTUuMzMyIDUuMzMydjE2MGMwIDIuOTQ1MyAyLjM4NjcgNS4zMzIgNS4zMzIgNS4zMzJoMzMwLjY3YzIuOTQxNCAwIDUuMzMyLTIuMzg2NyA1LjMzMi01LjMzMnYtMTYwYzAtMi45NDUzLTIuMzkwNi01LjMzMi01LjMzMi01LjMzMnpcIi8+XG4gIDxwYXRoIGQ9XCJtMzA5LjMzIDEyOGMtOC44MzIgMC0xNi03LjE2OC0xNi0xNnYtOTZjMC04LjgzMiA3LjE2OC0xNiAxNi0xNnMxNiA3LjE2OCAxNiAxNnY5NmMwIDguODMyLTcuMTY4IDE2LTE2IDE2elwiLz5cbiAgPHBhdGggZD1cIm0zMDkuMzMgNDY5LjMzYy04LjgzMiAwLTE2LTcuMTY4LTE2LTE2di0yMDIuNjZjMC04LjgzMiA3LjE2OC0xNiAxNi0xNnMxNiA3LjE2OCAxNiAxNnYyMDIuNjZjMCA4LjgzMi03LjE2OCAxNi0xNiAxNnpcIi8+XG4gIDxwYXRoIGQ9XCJtNDk2IDM2OGgtMzczLjMzYy04LjgzMiAwLTE2LTcuMTY4LTE2LTE2czcuMTY4LTE2IDE2LTE2aDM3My4zM2M4LjgzMiAwIDE2IDcuMTY4IDE2IDE2cy03LjE2OCAxNi0xNiAxNnpcIi8+XG48L3N2Zz5gLFxuICBtb3ZlQ29sdW1uTGVmdDogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgNTEyLjAyIDUxMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPHBhdGggZD1cIm0zNTcuMzUgNTEyLjAxaDk2YzMyLjM2MyAwIDU4LjY2OC0yNi4zMDUgNTguNjY4LTU4LjY2OHYtMzk0LjY2YzAtMzIuMzYzLTI2LjMwNS01OC42NjgtNTguNjY4LTU4LjY2OGgtOTZjLTMyLjM2MyAwLTU4LjY2NCAyNi4zMDUtNTguNjY0IDU4LjY2OHYzOTQuNjZjMCAzMi4zNjMgMjYuMzAxIDU4LjY2OCA1OC42NjQgNTguNjY4em05Ni00ODBjMTQuNjk5IDAgMjYuNjY4IDExLjk2OSAyNi42NjggMjYuNjY4djM5NC42NmMwIDE0LjY5OS0xMS45NjkgMjYuNjY4LTI2LjY2OCAyNi42NjhoLTk2Yy0xNC42OTkgMC0yNi42NjQtMTEuOTY5LTI2LjY2NC0yNi42Njh2LTM5NC42NmMwLTE0LjY5OSAxMS45NjUtMjYuNjY4IDI2LjY2NC0yNi42Njh6XCIvPlxuICA8cGF0aCBkPVwibTE2LjAxNiAyNzIuMDFoMjI0YzguODMyIDAgMTYtNy4xNjggMTYtMTZzLTcuMTY4LTE2LTE2LTE2aC0yMjRjLTguODMyIDAtMTYgNy4xNjgtMTYgMTZzNy4xNjggMTYgMTYgMTZ6XCIvPlxuICA8cGF0aCBkPVwibTEwMS4zNSAzNTcuMzRjNC4wOTc2IDAgOC4xOTE0LTEuNTU0NyAxMS4zMDktNC42OTE0IDYuMjUtNi4yNSA2LjI1LTE2LjM4MyAwLTIyLjYzN2wtNzQuMDI3LTc0LjAyMyA3NC4wMjctNzQuMDI3YzYuMjUtNi4yNSA2LjI1LTE2LjM4NyAwLTIyLjYzN3MtMTYuMzgzLTYuMjUtMjIuNjM3IDBsLTg1LjMzMiA4NS4zMzZjLTYuMjUgNi4yNS02LjI1IDE2LjM4MyAwIDIyLjYzM2w4NS4zMzIgODUuMzMyYzMuMTM2NyAzLjE2MDIgNy4yMzQ0IDQuNzE0OCAxMS4zMjggNC43MTQ4elwiLz5cbjwvc3ZnPmAsXG4gIG1vdmVDb2x1bW5SaWdodDogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgNTEyLjAyIDUxMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPHBhdGggZD1cIm0xNTQuNjcgNTEyLjAxaC05NmMtMzIuMzYzIDAtNTguNjY4LTI2LjMwNS01OC42NjgtNTguNjY4di0zOTQuNjZjMC0zMi4zNjMgMjYuMzA1LTU4LjY2OCA1OC42NjgtNTguNjY4aDk2YzMyLjM2MyAwIDU4LjY2NCAyNi4zMDUgNTguNjY0IDU4LjY2OHYzOTQuNjZjMCAzMi4zNjMtMjYuMzAxIDU4LjY2OC01OC42NjQgNTguNjY4em0tOTYtNDgwYy0xNC42OTkgMC0yNi42NjggMTEuOTY5LTI2LjY2OCAyNi42Njh2Mzk0LjY2YzAgMTQuNjk5IDExLjk2OSAyNi42NjggMjYuNjY4IDI2LjY2OGg5NmMxNC42OTkgMCAyNi42NjQtMTEuOTY5IDI2LjY2NC0yNi42Njh2LTM5NC42NmMwLTE0LjY5OS0xMS45NjUtMjYuNjY4LTI2LjY2NC0yNi42Njh6XCIvPlxuICA8cGF0aCBkPVwibTQ5NiAyNzIuMDFoLTIyNGMtOC44MzIgMC0xNi03LjE2OC0xNi0xNiAwLTguODMyIDcuMTY4LTE2IDE2LTE2aDIyNGM4LjgzMiAwIDE2IDcuMTY4IDE2IDE2IDAgOC44MzItNy4xNjggMTYtMTYgMTZ6XCIvPlxuICA8cGF0aCBkPVwibTQxMC42NyAzNTcuMzRjLTQuMDk3NyAwLTguMTkxNC0xLjU1NDctMTEuMzA5LTQuNjkxNC02LjI1LTYuMjUtNi4yNS0xNi4zODMgMC0yMi42MzdsNzQuMDI3LTc0LjAyMy03NC4wMjctNzQuMDI3Yy02LjI1LTYuMjUtNi4yNS0xNi4zODcgMC0yMi42MzdzMTYuMzgzLTYuMjUgMjIuNjM3IDBsODUuMzMyIDg1LjMzNmM2LjI1IDYuMjUgNi4yNSAxNi4zODMgMCAyMi42MzNsLTg1LjMzMiA4NS4zMzJjLTMuMTM2NyAzLjE2MDItNy4yMzQ0IDQuNzE0OC0xMS4zMjggNC43MTQ4elwiLz5cbjwvc3ZnPmAsXG4gIG1vdmVSb3dEb3duOiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBkPVwibTQ1My4zMyAyMTMuMzNoLTM5NC42NmMtMzIuMzYzIDAtNTguNjY4LTI2LjMwMS01OC42NjgtNTguNjY0di05NmMwLTMyLjM2MyAyNi4zMDUtNTguNjY4IDU4LjY2OC01OC42NjhoMzk0LjY2YzMyLjM2MyAwIDU4LjY2OCAyNi4zMDUgNTguNjY4IDU4LjY2OHY5NmMwIDMyLjM2My0yNi4zMDUgNTguNjY0LTU4LjY2OCA1OC42NjR6bS0zOTQuNjYtMTgxLjMzYy0xNC42OTkgMC0yNi42NjggMTEuOTY5LTI2LjY2OCAyNi42Njh2OTZjMCAxNC42OTkgMTEuOTY5IDI2LjY2NCAyNi42NjggMjYuNjY0aDM5NC42NmMxNC42OTkgMCAyNi42NjgtMTEuOTY1IDI2LjY2OC0yNi42NjR2LTk2YzAtMTQuNjk5LTExLjk2OS0yNi42NjgtMjYuNjY4LTI2LjY2OHpcIi8+XG4gIDxwYXRoIGQ9XCJtMjU2IDUxMmMtOC44MzIgMC0xNi03LjE2OC0xNi0xNnYtMjI0YzAtOC44MzIgNy4xNjgtMTYgMTYtMTZzMTYgNy4xNjggMTYgMTZ2MjI0YzAgOC44MzItNy4xNjggMTYtMTYgMTZ6XCIvPlxuICA8cGF0aCBkPVwibTI1NiA1MTJjLTQuMDk3NyAwLTguMTkxNC0xLjU1ODYtMTEuMzA5LTQuNjkxNGwtODUuMzMyLTg1LjMzNmMtNi4yNS02LjI1LTYuMjUtMTYuMzgzIDAtMjIuNjMzczE2LjM4My02LjI1IDIyLjYzNyAwbDc0LjAyMyA3NC4wMjcgNzQuMDI3LTc0LjAyN2M2LjI1LTYuMjUgMTYuMzg3LTYuMjUgMjIuNjM3IDBzNi4yNSAxNi4zODMgMCAyMi42MzNsLTg1LjMzNiA4NS4zMzZjLTMuMTU2MiAzLjEzMjgtNy4yNSA0LjY5MTQtMTEuMzQ4IDQuNjkxNHpcIi8+XG48L3N2Zz5gLFxuICBtb3ZlUm93VXA6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtNDUzLjMzIDI5OC42N2gtMzk0LjY2Yy0zMi4zNjMgMC01OC42NjggMjYuMzAxLTU4LjY2OCA1OC42NjR2OTZjMCAzMi4zNjMgMjYuMzA1IDU4LjY2OCA1OC42NjggNTguNjY4aDM5NC42NmMzMi4zNjMgMCA1OC42NjgtMjYuMzA1IDU4LjY2OC01OC42Njh2LTk2YzAtMzIuMzYzLTI2LjMwNS01OC42NjQtNTguNjY4LTU4LjY2NHptLTM5NC42NiAxODEuMzNjLTE0LjY5OSAwLTI2LjY2OC0xMS45NjktMjYuNjY4LTI2LjY2OHYtOTZjMC0xNC42OTkgMTEuOTY5LTI2LjY2NCAyNi42NjgtMjYuNjY0aDM5NC42NmMxNC42OTkgMCAyNi42NjggMTEuOTY1IDI2LjY2OCAyNi42NjR2OTZjMCAxNC42OTktMTEuOTY5IDI2LjY2OC0yNi42NjggMjYuNjY4elwiLz5cbiAgPHBhdGggZD1cIm0yNTYgMGMtOC44MzIgMC0xNiA3LjE2OC0xNiAxNnYyMjRjMCA4LjgzMiA3LjE2OCAxNiAxNiAxNnMxNi03LjE2OCAxNi0xNnYtMjI0YzAtOC44MzItNy4xNjgtMTYtMTYtMTZ6XCIvPlxuICA8cGF0aCBkPVwibTI1NiAwYy00LjA5NzcgMC04LjE5MTQgMS41NTg2LTExLjMwOSA0LjY5MTRsLTg1LjMzMiA4NS4zMzZjLTYuMjUgNi4yNS02LjI1IDE2LjM4MyAwIDIyLjYzM3MxNi4zODMgNi4yNSAyMi42MzcgMGw3NC4wMjMtNzQuMDI3IDc0LjAyNyA3NC4wMjdjNi4yNSA2LjI1IDE2LjM4NyA2LjI1IDIyLjYzNyAwczYuMjUtMTYuMzgzIDAtMjIuNjMzbC04NS4zMzYtODUuMzM2Yy0zLjE1NjItMy4xMzI4LTcuMjUtNC42OTE0LTExLjM0OC00LjY5MTR6XCIvPlxuPC9zdmc+YCxcbiAgc29ydEFzYzogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPGcgdHJhbnNmb3JtPVwibWF0cml4KDEgMCAwIC0xIDAgNTAxLjE1KVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzM1wiPlxuICAgIDxwYXRoIGQ9XCJtMzUzLjYgNzQuNDg2Yy0xMS43NzYgMC0yMS4zMzMgOS41NTczLTIxLjMzMyAyMS4zMzN2Mjk4LjY3YzAgMTEuNzc2IDkuNTU3MyAyMS4zMzMgMjEuMzMzIDIxLjMzM3MyMS4zMzMtOS41NTczIDIxLjMzMy0yMS4zMzN2LTI5OC42N2MwLTExLjc3Ni05LjU1NzMtMjEuMzMzLTIxLjMzMy0yMS4zMzN6XCIvPlxuICAgIDxwYXRoIGQ9XCJtMzUzLjYgNzQuNDg2Yy01LjQ2MzYgMC0xMC45MjIgMi4wNzgxLTE1LjA3OSA2LjI1NTJsLTExMy43OCAxMTMuNzhjLTguMzMzMyA4LjMzMzMtOC4zMzMzIDIxLjg0NCAwIDMwLjE3NyA4LjMzMzMgOC4zMzMzIDIxLjg0NCA4LjMzMzMgMzAuMTgzIDBsOTguNjk3LTk4LjcwMyA5OC43MDMgOTguNzAzYzguMzMzMyA4LjMzMzMgMjEuODQ5IDguMzMzMyAzMC4xODMgMCA4LjMzMzMtOC4zMzMzIDguMzMzMy0yMS44NDQgMC0zMC4xNzdsLTExMy43OC0xMTMuNzhjLTQuMjA4My00LjE3NzEtOS42NjY3LTYuMjU1Mi0xNS4xMzEtNi4yNTUyelwiLz5cbiAgPC9nPlxuICA8cGF0aCBkPVwibTE2Ni4wNCAyMTAuMTFxLTUuMDk3MS0xMy40OTItOS41OTQ1LTI2LjM4NS00LjQ5NzQtMTMuMTkyLTkuMjk0Ny0yNi42ODVoLTk0LjE0NmwtMTguODg5IDUzLjA3aC0zMC4yODNxMTEuOTkzLTMyLjk4MSAyMi40ODctNjAuODY1IDEwLjQ5NC0yOC4xODQgMjAuMzg4LTUzLjM2OSAxMC4xOTQtMjUuMTg2IDIwLjA4OS00Ny45NzMgOS44OTQzLTIzLjA4NyAyMC42ODgtNDUuNTc0aDI2LjY4NXExMC43OTQgMjIuNDg3IDIwLjY4OCA0NS41NzQgOS44OTQzIDIyLjc4NyAxOS43ODkgNDcuOTczIDEwLjE5NCAyNS4xODYgMjAuNjg4IDUzLjM2OSAxMC40OTQgMjcuODg0IDIyLjQ4NyA2MC44NjV6bS0yNy4yODQtNzcuMDU2cS05LjU5NDUtMjYuMDg1LTE5LjE4OS01MC4zNzEtOS4yOTQ3LTI0LjU4Ni0xOS40ODktNDcuMDczLTEwLjQ5NCAyMi40ODctMjAuMDg5IDQ3LjA3My05LjI5NDcgMjQuMjg2LTE4LjU4OSA1MC4zNzF6XCIvPlxuICA8cGF0aCBkPVwibTE3My4yNCAzMjUuMjVxLTYuODk2IDcuNzk1NS0xNi4xOTEgMTguODg5LTguOTk0OCAxMC43OTQtMTkuMTg5IDI0LjI4Ni0xMC4xOTQgMTMuMTkyLTIwLjk4OCAyOC4xODQtMTAuNzk0IDE0LjY5Mi0yMS4yODggMjkuOTgzLTEwLjE5NCAxNC45OTEtMTkuNDg5IDI5Ljk4My05LjI5NDcgMTQuOTkxLTE2Ljc5IDI4LjQ4NGgxMTYuOTN2MjQuODg2aC0xNTAuODF2LTE5LjQ4OXE2LjI5NjQtMTEuOTkzIDE0LjY5Mi0yNi4zODUgOC42OTUtMTQuMzkyIDE4LjI5LTI5LjM4MyA5Ljg5NDMtMTQuOTkxIDIwLjM4OC0zMC4yODN0MjAuNjg4LTI5LjM4M3ExMC40OTQtMTQuMDkyIDIwLjA4OC0yNi4zODUgOS44OTQzLTEyLjI5MyAxNy45OS0yMS41ODhoLTEwNi43NHYtMjQuODg2aDE0Mi40MnpcIi8+XG48L3N2Zz5gLFxuICBzb3J0RGVzYzogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPGcgdHJhbnNmb3JtPVwibWF0cml4KDEgMCAwIC0xIDAgNTAxLjE1KVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzM1wiPlxuICAgIDxwYXRoIGQ9XCJtMzUzLjYgNzQuNDg2Yy0xMS43NzYgMC0yMS4zMzMgOS41NTczLTIxLjMzMyAyMS4zMzN2Mjk4LjY3YzAgMTEuNzc2IDkuNTU3MyAyMS4zMzMgMjEuMzMzIDIxLjMzM3MyMS4zMzMtOS41NTczIDIxLjMzMy0yMS4zMzN2LTI5OC42N2MwLTExLjc3Ni05LjU1NzMtMjEuMzMzLTIxLjMzMy0yMS4zMzN6XCIvPlxuICAgIDxwYXRoIGQ9XCJtMzUzLjYgNzQuNDg2Yy01LjQ2MzYgMC0xMC45MjIgMi4wNzgxLTE1LjA3OSA2LjI1NTJsLTExMy43OCAxMTMuNzhjLTguMzMzMyA4LjMzMzMtOC4zMzMzIDIxLjg0NCAwIDMwLjE3NyA4LjMzMzMgOC4zMzMzIDIxLjg0NCA4LjMzMzMgMzAuMTgzIDBsOTguNjk3LTk4LjcwMyA5OC43MDMgOTguNzAzYzguMzMzMyA4LjMzMzMgMjEuODQ5IDguMzMzMyAzMC4xODMgMCA4LjMzMzMtOC4zMzMzIDguMzMzMy0yMS44NDQgMC0zMC4xNzdsLTExMy43OC0xMTMuNzhjLTQuMjA4My00LjE3NzEtOS42NjY3LTYuMjU1Mi0xNS4xMzEtNi4yNTUyelwiLz5cbiAgPC9nPlxuICA8cGF0aCBkPVwibTE2OS4xMSA1MDcuNzJxLTUuMDk3MS0xMy40OTItOS41OTQ1LTI2LjM4NS00LjQ5NzQtMTMuMTkyLTkuMjk0Ny0yNi42ODVoLTk0LjE0NmwtMTguODg5IDUzLjA3aC0zMC4yODNxMTEuOTkzLTMyLjk4MSAyMi40ODctNjAuODY1IDEwLjQ5NC0yOC4xODQgMjAuMzg4LTUzLjM2OSAxMC4xOTQtMjUuMTg2IDIwLjA4OC00Ny45NzMgOS44OTQzLTIzLjA4NyAyMC42ODgtNDUuNTc0aDI2LjY4NXExMC43OTQgMjIuNDg3IDIwLjY4OCA0NS41NzQgOS44OTQzIDIyLjc4NyAxOS43ODkgNDcuOTczIDEwLjE5NCAyNS4xODYgMjAuNjg4IDUzLjM2OSAxMC40OTQgMjcuODg0IDIyLjQ4NyA2MC44NjV6bS0yNy4yODQtNzcuMDU2cS05LjU5NDUtMjYuMDg1LTE5LjE4OS01MC4zNzEtOS4yOTQ3LTI0LjU4Ni0xOS40ODktNDcuMDczLTEwLjQ5NCAyMi40ODctMjAuMDg5IDQ3LjA3My05LjI5NDcgMjQuMjg2LTE4LjU4OSA1MC4zNzF6XCIvPlxuICA8cGF0aCBkPVwibTE3Ni4zMSAyNy42MzlxLTYuODk2IDcuNzk1NS0xNi4xOTEgMTguODg5LTguOTk0OCAxMC43OTQtMTkuMTg5IDI0LjI4Ni0xMC4xOTQgMTMuMTkyLTIwLjk4OCAyOC4xODQtMTAuNzk0IDE0LjY5Mi0yMS4yODggMjkuOTgzLTEwLjE5NCAxNC45OTEtMTkuNDg5IDI5Ljk4My05LjI5NDcgMTQuOTkxLTE2Ljc5IDI4LjQ4NGgxMTYuOTN2MjQuODg2aC0xNTAuODF2LTE5LjQ4OXE2LjI5NjQtMTEuOTkzIDE0LjY5Mi0yNi4zODUgOC42OTUtMTQuMzkyIDE4LjI5LTI5LjM4MyA5Ljg5NDMtMTQuOTkxIDIwLjM4OC0zMC4yODMgMTAuNDk0LTE1LjI5MSAyMC42ODgtMjkuMzgzIDEwLjQ5NC0xNC4wOTIgMjAuMDg4LTI2LjM4NSA5Ljg5NDMtMTIuMjkzIDE3Ljk5LTIxLjU4OGgtMTA2Ljc0di0yNC44ODZoMTQyLjQyelwiLz5cbjwvc3ZnPmAsXG4gIGZvcm11bGE6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMjYzLjUxIDYyLjk2N2MxLjY3Mi0xMS4xMzQgOS4zMjYtMjIuOTY3IDIwLjIyMi0yMi45NjcgMTEuMDI4IDAgMjAgOC45NzIgMjAgMjBoNDBjMC0zMy4wODQtMjYuOTE2LTYwLTYwLTYwLTMzLjYyOSAwLTU1LjUyNyAyOC42OTEtNTkuNzg0IDU3LjA3M2wtMTIuODYyIDg2LjkyN2gtNjEuMzU0djQwaDU1LjQzNmwtMzkuMjIgMjY1LjA3LTAuMTE2IDAuOTM3Yy0xLjA2MyAxMC42Mi05LjM5MyAyMS45OS0yMC4xIDIxLjk5LTExLjAyOCAwLTIwLTguOTcyLTIwLTIwaC00MGMwIDMzLjA4NCAyNi45MTYgNjAgNjAgNjAgMzMuNjYxIDAgNTYuNzcxLTI5LjE0MSA1OS44NDgtNTcuNDk2bDQwLjAyMy0yNzAuNWg2MC4xMjl2LTQwaC01NC4yMTFsMTEuOTg5LTgxLjAzM3pcIi8+XG4gIDxwb2x5Z29uIHBvaW50cz1cIjQyNi4yNyAyNDggMzc4LjI0IDI0OCAzNTIuMjUgMjg3LjA4IDMzNC45MiAyNDggMjkxLjE3IDI0OCAzMjYgMzI2LjU3IDI3MC41MiA0MTAgMzE4LjU2IDQxMCAzNDUuMjEgMzY5LjkyIDM2Mi45OCA0MTAgNDA2LjczIDQxMCAzNzEuNDYgMzMwLjQzXCIvPlxuPC9zdmc+YCxcbiAgaGVscDogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPHBhdGggZD1cIm0yNDguMTYgMzQzLjIyYy0xNC42MzkgMC0yNi40OTEgMTIuMi0yNi40OTEgMjYuODQgMCAxNC4yOTEgMTEuNTAzIDI2Ljg0IDI2LjQ5MSAyNi44NHMyNi44NC0xMi41NDggMjYuODQtMjYuODRjMC0xNC42NC0xMi4xOTktMjYuODQtMjYuODQtMjYuODR6XCIvPlxuICA8cGF0aCBkPVwibTI1Mi42OSAxNDBjLTQ3LjA1NyAwLTY4LjY2OCAyNy44ODUtNjguNjY4IDQ2LjcwOCAwIDEzLjU5NSAxMS41MDIgMTkuODY5IDIwLjkxNCAxOS44NjkgMTguODIyIDAgMTEuMTU0LTI2Ljg0IDQ2LjcwOC0yNi44NCAxNy40MjkgMCAzMS4zNzIgNy42NjkgMzEuMzcyIDIzLjcwMyAwIDE4LjgyNC0xOS41MiAyOS42MjktMzEuMDIzIDM5LjM4OS0xMC4xMDggOC43MTQtMjMuMzU0IDIzLjAwNi0yMy4zNTQgNTIuOTgzIDAgMTguMTI1IDQuODc5IDIzLjM1NCAxOS4xNzEgMjMuMzU0IDE3LjA4IDAgMjAuNTY1LTcuNjY4IDIwLjU2NS0xNC4yOTEgMC0xOC4xMjYgMC4zNS0yOC41ODMgMTkuNTIxLTQzLjU3MSA5LjQxMS03LjMyIDM5LjA0LTMxLjAyMyAzOS4wNC02My43ODlzLTI5LjYyOS01Ny41MTUtNzQuMjQ2LTU3LjUxNXpcIi8+XG4gIDxwYXRoIGQ9XCJtMjU2IDBjLTE0MS40OCAwLTI1NiAxMTQuNS0yNTYgMjU2djIzNmMwIDExLjA0NiA4Ljk1NCAyMCAyMCAyMGgyMzZjMTQxLjQ4IDAgMjU2LTExNC41IDI1Ni0yNTYgMC0xNDEuNDgtMTE0LjUtMjU2LTI1Ni0yNTZ6bTAgNDcyaC0yMTZ2LTIxNmMwLTExOS4zOCA5Ni42MDctMjE2IDIxNi0yMTYgMTE5LjM4IDAgMjE2IDk2LjYwNyAyMTYgMjE2IDAgMTE5LjM4LTk2LjYwNyAyMTYtMjE2IDIxNnpcIi8+XG48L3N2Zz5gLFxuICBjc3Y6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuIDxwYXRoIGQ9XCJtNC45OTc5IDl2LThoMTQuNTAybDMuNSAzLjUgMmUtNyAxOC41aC0xOW0xNC0yMnY1aDVtLTE2IDdoLTJjLTEgMC0yIDAuNS0yIDEuNXYxLjVzMWUtOCAwLjUgMCAxLjUgMSAxLjUgMiAxLjVoMm02LjI1LTZoLTIuNWMtMS41IDAtMiAwLjUtMiAxLjVzMC41IDEuNSAyIDEuNSAyIDAuNSAyIDEuNS0wLjUgMS41LTIgMS41aC0yLjVtMTIuMjUtN3YwLjVjMCAwLjUtMi41IDYuNS0yLjUgNi41aC0wLjVzLTIuNS02LTIuNS02LjV2LTAuNVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwidmFyKC0tdGV4dC1tdXRlZClcIiBzdHJva2Utd2lkdGg9XCIxLjVcIi8+XG48L3N2Zz5gLFxuICBhcnJvd2VudGVyOiBgXG48c3ZnIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwibTQuNjQxMTkgMTIuNSAyLjg3MjgzIDIuNzAzOGMuMzAxNjMuMjgzOS4zMTYwMi43NTg2LjAzMjEzIDEuMDYwMi0uMjgzODkuMzAxNy0uNzU4NTQuMzE2LTEuMDYwMTcuMDMyMWwtNC4yNS00Yy0uMTUwNTktLjE0MTctLjIzNTk4LS4zMzkzLS4yMzU5OC0uNTQ2MXMuMDg1MzktLjQwNDQuMjM1OTgtLjU0NjJsNC4yNS0zLjk5OTk1Yy4zMDE2My0uMjgzODkuNzc2MjgtLjI2OTUgMS4wNjAxNy4wMzIxM3MuMjY5NS43NzYyOC0uMDMyMTMgMS4wNjAxN2wtMi44NzI4NCAyLjcwMzg1aDEwLjEwODgyYy45NjY1IDAgMS43NS0uNzgzNSAxLjc1LTEuNzV2LTQuNWMwLS40MTQyMS4zMzU4LS43NS43NS0uNzVzLjc1LjMzNTc5Ljc1Ljc1djQuNWMwIDEuNzk0OS0xLjQ1NTEgMy4yNS0zLjI1IDMuMjV6XCIvPlxuPC9zdmc+YCxcbiAgYXJyb3d0YWI6IGBcbjxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJtMTguMjA3MTA2OCAxMS4yOTI4OTMyLTYuNS02LjQ5OTk5OTk4Yy0uMzkwNTI0My0uMzkwNTI0MjktMS4wMjM2ODkzLS4zOTA1MjQyOS0xLjQxNDIxMzYgMC0uMzYwNDgzOTQuMzYwNDgzOTYtLjM4ODIxMzQ4LjkyNzcxNTAyLS4wODMxODg2IDEuMzIwMDA2MjJsLjA4MzE4ODYuMDk0MjA3MzQgNC43OTMxMDY4IDQuNzkyODkzMjJoLTExLjA4NmMtLjUxMjgzNTg0IDAtLjkzNTUwNzE2LjM4NjA0MDItLjk5MzI3MjI3Ljg4MzM3ODlsLS4wMDY3Mjc3My4xMTY2MjExYzAgLjUxMjgzNTguMzg2MDQwMTkuOTM1NTA3Mi44ODMzNzg4Ny45OTMyNzIzbC4xMTY2MjExMy4wMDY3Mjc3aDExLjA4NmwtNC43OTMxMDY4IDQuNzkyODkzMmMtLjM2MDQ4Mzk0LjM2MDQ4NC0uMzg4MjEzNDguOTI3NzE1LS4wODMxODg2IDEuMzIwMDA2MmwuMDgzMTg4Ni4wOTQyMDc0Yy4zNjA0ODQuMzYwNDgzOS45Mjc3MTUuMzg4MjEzNSAxLjMyMDAwNjIuMDgzMTg4NmwuMDk0MjA3NC0uMDgzMTg4NiA2LjUtNi41Yy4zNjA0ODM5LS4zNjA0ODQuMzg4MjEzNS0uOTI3NzE1LjA4MzE4ODYtMS4zMjAwMDYybC0uMDgzMTg4Ni0uMDk0MjA3NC02LjUtNi40OTk5OTk5OHptMi43OTI4OTMyIDcuMjA3MTA2OHYtMTNjMC0uNTUyMjg0NzUtLjQ0NzcxNTMtMS0xLTFzLTEgLjQ0NzcxNTI1LTEgMXYxM2MwIC41NTIyODQ3LjQ0NzcxNTMgMSAxIDFzMS0uNDQ3NzE1MyAxLTF6XCIgZmlsbD1cIiMyMTIxMjFcIi8+XG48L3N2Zz5gLFxufTtcblxuZXhwb3J0IGNvbnN0IGFkZEljb25zID0gKCk6IHZvaWQgPT4ge1xuICBPYmplY3Qua2V5cyhpY29ucykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgLy8gRG9uJ3QgYWRkIHRoZSAnaGVscCcgaWNvbiBoZXJlIGFzIGl0IHdpbGwgb3ZlcndyaXRlIHRoZSBuYXRpdmUgb25lLlxuICAgIGlmIChrZXkgIT09ICdoZWxwJykge1xuICAgICAgYWRkSWNvbihrZXksIGljb25zW2tleV0pO1xuICAgIH1cbiAgfSk7XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlBvaW50ID0gdm9pZCAwO1xuLyoqXG4gKiBBIGBQb2ludGAgcmVwcmVzZW50cyBhIHBvaW50IGluIHRoZSB0ZXh0IGVkaXRvci5cbiAqL1xuY2xhc3MgUG9pbnQge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYFBvaW50YCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93IC0gUm93IG9mIHRoZSBwb2ludCwgc3RhcnRzIGZyb20gMC5cbiAgICAgKiBAcGFyYW0gY29sdW1uIC0gQ29sdW1uIG9mIHRoZSBwb2ludCwgc3RhcnRzIGZyb20gMC5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihyb3csIGNvbHVtbikge1xuICAgICAgICB0aGlzLnJvdyA9IHJvdztcbiAgICAgICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgcG9pbnQgaXMgZXF1YWwgdG8gYW5vdGhlciBwb2ludC5cbiAgICAgKi9cbiAgICBlcXVhbHMocG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm93ID09PSBwb2ludC5yb3cgJiYgdGhpcy5jb2x1bW4gPT09IHBvaW50LmNvbHVtbjtcbiAgICB9XG59XG5leHBvcnRzLlBvaW50ID0gUG9pbnQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUmFuZ2UgPSB2b2lkIDA7XG4vKipcbiAqIEEgYFJhbmdlYCBvYmplY3QgcmVwcmVzZW50cyBhIHJhbmdlIGluIHRoZSB0ZXh0IGVkaXRvci5cbiAqL1xuY2xhc3MgUmFuZ2Uge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYFJhbmdlYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RhcnQgLSBUaGUgc3RhcnQgcG9pbnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSBlbmQgLSBUaGUgZW5kIHBvaW50IG9mIHRoZSByYW5nZS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihzdGFydCwgZW5kKSB7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICAgICAgdGhpcy5lbmQgPSBlbmQ7XG4gICAgfVxufVxuZXhwb3J0cy5SYW5nZSA9IFJhbmdlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkZvY3VzID0gdm9pZCAwO1xuLyoqXG4gKiBBIGBGb2N1c2Agb2JqZWN0IHJlcHJlc2VudHMgd2hpY2ggY2VsbCBpcyBmb2N1c2VkIGluIHRoZSB0YWJsZS5cbiAqXG4gKiBOb3RlIHRoYXQgYHJvd2AgYW5kIGBjb2x1bW5gIHByb3BlcnRpZXMgc3BlY2lmaXkgYSBjZWxsJ3MgcG9zaXRpb24gaW4gdGhlXG4gKiB0YWJsZSwgbm90IHRoZSBjdXJzb3IncyBwb3NpdGlvbiBpbiB0aGUgdGV4dCBlZGl0b3IgYXMge0BsaW5rIFBvaW50fSBjbGFzcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBGb2N1cyB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBgRm9jdXNgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgLSBSb3cgb2YgdGhlIGZvY3VzZWQgY2VsbC5cbiAgICAgKiBAcGFyYW0gY29sdW1uIC0gQ29sdW1uIG9mIHRoZSBmb2N1c2VkIGNlbGwuXG4gICAgICogQHBhcmFtIG9mZnNldCAtIFJhdyBvZmZzZXQgaW4gdGhlIGNlbGwuXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iocm93LCBjb2x1bW4sIG9mZnNldCkge1xuICAgICAgICB0aGlzLnJvdyA9IHJvdztcbiAgICAgICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdHdvIGZvY3VzZXMgcG9pbnQgdGhlIHNhbWUgY2VsbC5cbiAgICAgKiBPZmZzZXRzIGFyZSBpZ25vcmVkLlxuICAgICAqL1xuICAgIHBvc0VxdWFscyhmb2N1cykge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3cgPT09IGZvY3VzLnJvdyAmJiB0aGlzLmNvbHVtbiA9PT0gZm9jdXMuY29sdW1uO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY29weSBvZiB0aGUgZm9jdXMgb2JqZWN0IGJ5IHNldHRpbmcgaXRzIHJvdyB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvdyAtIFJvdyBvZiB0aGUgZm9jdXNlZCBjZWxsLlxuICAgICAqIEByZXR1cm5zIEEgbmV3IGZvY3VzIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgcm93LlxuICAgICAqL1xuICAgIHNldFJvdyhyb3cpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGb2N1cyhyb3csIHRoaXMuY29sdW1uLCB0aGlzLm9mZnNldCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSBmb2N1cyBvYmplY3QgYnkgc2V0dGluZyBpdHMgY29sdW1uIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29sdW1uIC0gQ29sdW1uIG9mIHRoZSBmb2N1c2VkIGNlbGwuXG4gICAgICogQHJldHVybnMgQSBuZXcgZm9jdXMgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBjb2x1bW4uXG4gICAgICovXG4gICAgc2V0Q29sdW1uKGNvbHVtbikge1xuICAgICAgICByZXR1cm4gbmV3IEZvY3VzKHRoaXMucm93LCBjb2x1bW4sIHRoaXMub2Zmc2V0KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhlIGZvY3VzIG9iamVjdCBieSBzZXR0aW5nIGl0cyBvZmZzZXQgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvZmZzZXQgLSBPZmZzZXQgaW4gdGhlIGZvY3VzZWQgY2VsbC5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyBmb2N1cyBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIG9mZnNldC5cbiAgICAgKi9cbiAgICBzZXRPZmZzZXQob2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiBuZXcgRm9jdXModGhpcy5yb3csIHRoaXMuY29sdW1uLCBvZmZzZXQpO1xuICAgIH1cbn1cbmV4cG9ydHMuRm9jdXMgPSBGb2N1cztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5IZWFkZXJBbGlnbm1lbnQgPSBleHBvcnRzLkRlZmF1bHRBbGlnbm1lbnQgPSBleHBvcnRzLkFsaWdubWVudCA9IHZvaWQgMDtcbi8qKlxuICogUmVwcmVzZW50cyBjb2x1bW4gYWxpZ25tZW50LlxuICpcbiAqIC0gYEFsaWdubWVudC5OT05FYCAtIFVzZSBkZWZhdWx0IGFsaWdubWVudC5cbiAqIC0gYEFsaWdubWVudC5MRUZUYCAtIEFsaWduIGxlZnQuXG4gKiAtIGBBbGlnbm1lbnQuUklHSFRgIC0gQWxpZ24gcmlnaHQuXG4gKiAtIGBBbGlnbm1lbnQuQ0VOVEVSYCAtIEFsaWduIGNlbnRlci5cbiAqXG4gKi9cbnZhciBBbGlnbm1lbnQ7XG4oZnVuY3Rpb24gKEFsaWdubWVudCkge1xuICAgIEFsaWdubWVudFtcIk5PTkVcIl0gPSBcIm5vbmVcIjtcbiAgICBBbGlnbm1lbnRbXCJMRUZUXCJdID0gXCJsZWZ0XCI7XG4gICAgQWxpZ25tZW50W1wiUklHSFRcIl0gPSBcInJpZ2h0XCI7XG4gICAgQWxpZ25tZW50W1wiQ0VOVEVSXCJdID0gXCJjZW50ZXJcIjtcbn0pKEFsaWdubWVudCA9IGV4cG9ydHMuQWxpZ25tZW50IHx8IChleHBvcnRzLkFsaWdubWVudCA9IHt9KSk7XG4vKipcbiAqIFJlcHJlc2VudHMgZGVmYXVsdCBjb2x1bW4gYWxpZ25tZW50XG4gKlxuICogLSBgRGVmYXVsdEFsaWdubWVudC5MRUZUYCAtIEFsaWduIGxlZnQuXG4gKiAtIGBEZWZhdWx0QWxpZ25tZW50LlJJR0hUYCAtIEFsaWduIHJpZ2h0LlxuICogLSBgRGVmYXVsdEFsaWdubWVudC5DRU5URVJgIC0gQWxpZ24gY2VudGVyLlxuICpcbiAqL1xudmFyIERlZmF1bHRBbGlnbm1lbnQ7XG4oZnVuY3Rpb24gKERlZmF1bHRBbGlnbm1lbnQpIHtcbiAgICBEZWZhdWx0QWxpZ25tZW50W1wiTEVGVFwiXSA9IFwibGVmdFwiO1xuICAgIERlZmF1bHRBbGlnbm1lbnRbXCJSSUdIVFwiXSA9IFwicmlnaHRcIjtcbiAgICBEZWZhdWx0QWxpZ25tZW50W1wiQ0VOVEVSXCJdID0gXCJjZW50ZXJcIjtcbn0pKERlZmF1bHRBbGlnbm1lbnQgPSBleHBvcnRzLkRlZmF1bHRBbGlnbm1lbnQgfHwgKGV4cG9ydHMuRGVmYXVsdEFsaWdubWVudCA9IHt9KSk7XG4vKipcbiAqIFJlcHJlc2VudHMgYWxpZ25tZW50IG9mIGhlYWRlciBjZWxscy5cbiAqXG4gKiAtIGBIZWFkZXJBbGlnbm1lbnQuRk9MTE9XYCAtIEZvbGxvdyBjb2x1bW4ncyBhbGlnbm1lbnQuXG4gKiAtIGBIZWFkZXJBbGlnbm1lbnQuTEVGVGAgLSBBbGlnbiBsZWZ0LlxuICogLSBgSGVhZGVyQWxpZ25tZW50LlJJR0hUYCAtIEFsaWduIHJpZ2h0LlxuICogLSBgSGVhZGVyQWxpZ25tZW50LkNFTlRFUmAgLSBBbGlnbiBjZW50ZXIuXG4gKlxuICovXG52YXIgSGVhZGVyQWxpZ25tZW50O1xuKGZ1bmN0aW9uIChIZWFkZXJBbGlnbm1lbnQpIHtcbiAgICBIZWFkZXJBbGlnbm1lbnRbXCJGT0xMT1dcIl0gPSBcImZvbGxvd1wiO1xuICAgIEhlYWRlckFsaWdubWVudFtcIkxFRlRcIl0gPSBcImxlZnRcIjtcbiAgICBIZWFkZXJBbGlnbm1lbnRbXCJSSUdIVFwiXSA9IFwicmlnaHRcIjtcbiAgICBIZWFkZXJBbGlnbm1lbnRbXCJDRU5URVJcIl0gPSBcImNlbnRlclwiO1xufSkoSGVhZGVyQWxpZ25tZW50ID0gZXhwb3J0cy5IZWFkZXJBbGlnbm1lbnQgfHwgKGV4cG9ydHMuSGVhZGVyQWxpZ25tZW50ID0ge30pKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UYWJsZUNlbGwgPSB2b2lkIDA7XG5jb25zdCBhbGlnbm1lbnRfMSA9IHJlcXVpcmUoXCIuL2FsaWdubWVudFwiKTtcbi8qKlxuICogQSBgVGFibGVDZWxsYCBvYmplY3QgcmVwcmVzZW50cyBhIHRhYmxlIGNlbGwuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgVGFibGVDZWxsIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGBUYWJsZUNlbGxgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByYXdDb250ZW50IC0gUmF3IGNvbnRlbnQgb2YgdGhlIGNlbGwuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocmF3Q29udGVudCkge1xuICAgICAgICB0aGlzLnJhd0NvbnRlbnQgPSByYXdDb250ZW50O1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSByYXdDb250ZW50LnRyaW0oKTtcbiAgICAgICAgdGhpcy5wYWRkaW5nTGVmdCA9XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQgPT09ICcnXG4gICAgICAgICAgICAgICAgPyB0aGlzLnJhd0NvbnRlbnQgPT09ICcnXG4gICAgICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgICAgICA6IDFcbiAgICAgICAgICAgICAgICA6IHRoaXMucmF3Q29udGVudC5sZW5ndGggLSB0aGlzLnJhd0NvbnRlbnQudHJpbUxlZnQoKS5sZW5ndGg7XG4gICAgICAgIHRoaXMucGFkZGluZ1JpZ2h0ID1cbiAgICAgICAgICAgIHRoaXMucmF3Q29udGVudC5sZW5ndGggLSB0aGlzLmNvbnRlbnQubGVuZ3RoIC0gdGhpcy5wYWRkaW5nTGVmdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29udmVycyB0aGUgY2VsbCB0byBhIHRleHQgcmVwcmVzZW50YXRpb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgcmF3IGNvbnRlbnQgb2YgdGhlIGNlbGwuXG4gICAgICovXG4gICAgdG9UZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yYXdDb250ZW50O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGNlbGwgaXMgYSBkZWxpbWl0ZXIgaS5lLiBpdCBvbmx5IGNvbnRhaW5zIGh5cGhlbnMgYC1gIHdpdGggb3B0aW9uYWwgb25lXG4gICAgICogbGVhZGluZyBhbmQgdHJhaWxpbmcgY29sb25zIGA6YC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY2VsbCBpcyBhIGRlbGltaXRlci5cbiAgICAgKi9cbiAgICBpc0RlbGltaXRlcigpIHtcbiAgICAgICAgcmV0dXJuIC9eXFxzKjo/LSs6P1xccyokLy50ZXN0KHRoaXMucmF3Q29udGVudCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFsaWdubWVudCB0aGUgY2VsbCByZXByZXNlbnRzLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGFsaWdubWVudCB0aGUgY2VsbCByZXByZXNlbnRzOyBgdW5kZWZpbmVkYCBpZiB0aGUgY2VsbCBpcyBub3QgYSBkZWxpbWl0ZXIuXG4gICAgICovXG4gICAgZ2V0QWxpZ25tZW50KCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNEZWxpbWl0ZXIoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb250ZW50WzBdID09PSAnOicpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnRbdGhpcy5jb250ZW50Lmxlbmd0aCAtIDFdID09PSAnOicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWxpZ25tZW50XzEuQWxpZ25tZW50LkNFTlRFUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTEVGVDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb250ZW50W3RoaXMuY29udGVudC5sZW5ndGggLSAxXSA9PT0gJzonKSB7XG4gICAgICAgICAgICByZXR1cm4gYWxpZ25tZW50XzEuQWxpZ25tZW50LlJJR0hUO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTk9ORTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYSByZWxhdGl2ZSBwb3NpdGlvbiBpbiB0aGUgdHJpbW1lZCBjb250ZW50IGZyb20gdGhhdCBpbiB0aGUgcmF3IGNvbnRlbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmF3T2Zmc2V0IC0gUmVsYXRpdmUgcG9zaXRpb24gaW4gdGhlIHJhdyBjb250ZW50LlxuICAgICAqIEByZXR1cm5zIC0gUmVsYXRpdmUgcG9zaXRpb24gaW4gdGhlIHRyaW1tZWQgY29udGVudC5cbiAgICAgKi9cbiAgICBjb21wdXRlQ29udGVudE9mZnNldChyYXdPZmZzZXQpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudCA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyYXdPZmZzZXQgPCB0aGlzLnBhZGRpbmdMZWZ0KSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmF3T2Zmc2V0IDwgdGhpcy5wYWRkaW5nTGVmdCArIHRoaXMuY29udGVudC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiByYXdPZmZzZXQgLSB0aGlzLnBhZGRpbmdMZWZ0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQubGVuZ3RoO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyBhIHJlbGF0aXZlIHBvc2l0aW9uIGluIHRoZSByYXcgY29udGVudCBmcm9tIHRoYXQgaW4gdGhlIHRyaW1tZWQgY29udGVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250ZW50T2Zmc2V0IC0gUmVsYXRpdmUgcG9zaXRpb24gaW4gdGhlIHRyaW1tZWQgY29udGVudC5cbiAgICAgKiBAcmV0dXJucyAtIFJlbGF0aXZlIHBvc2l0aW9uIGluIHRoZSByYXcgY29udGVudC5cbiAgICAgKi9cbiAgICBjb21wdXRlUmF3T2Zmc2V0KGNvbnRlbnRPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnRPZmZzZXQgKyB0aGlzLnBhZGRpbmdMZWZ0O1xuICAgIH1cbn1cbmV4cG9ydHMuVGFibGVDZWxsID0gVGFibGVDZWxsO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlRhYmxlUm93ID0gdm9pZCAwO1xuY29uc3QgdGFibGVfY2VsbF8xID0gcmVxdWlyZShcIi4vdGFibGUtY2VsbFwiKTtcbi8qKlxuICogQSBgVGFibGVSb3dgIG9iamVjdCByZXByZXNlbnRzIGEgdGFibGUgcm93LlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIFRhYmxlUm93IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGBUYWJsZVJvd2Agb2JqZWMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2VsbHMgLSBDZWxscyB0aGF0IHRoZSByb3cgY29udGFpbnMuXG4gICAgICogQHBhcmFtIG1hcmdpbkxlZnQgLSBNYXJnaW4gc3RyaW5nIGF0IHRoZSBsZWZ0IG9mIHRoZSByb3cuXG4gICAgICogQHBhcmFtIG1hcmdpblJpZ2h0IC0gTWFyZ2luIHN0cmluZyBhdCB0aGUgcmlnaHQgb2YgdGhlIHJvdy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihjZWxscywgbWFyZ2luTGVmdCwgbWFyZ2luUmlnaHQpIHtcbiAgICAgICAgdGhpcy5fY2VsbHMgPSBjZWxscy5zbGljZSgpO1xuICAgICAgICB0aGlzLm1hcmdpbkxlZnQgPSBtYXJnaW5MZWZ0O1xuICAgICAgICB0aGlzLm1hcmdpblJpZ2h0ID0gbWFyZ2luUmlnaHQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG51bWJlciBvZiB0aGUgY2VsbHMgaW4gdGhlIHJvdy5cbiAgICAgKi9cbiAgICBnZXRXaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NlbGxzLmxlbmd0aDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY2VsbHMgdGhhdCB0aGUgcm93IGNvbnRhaW5zLlxuICAgICAqL1xuICAgIGdldENlbGxzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2VsbHMuc2xpY2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyBhIGNlbGwgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmRleCAtIEluZGV4LlxuICAgICAqIEByZXR1cm5zIFRoZSBjZWxsIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggaWYgZXhpc3RzOyBgdW5kZWZpbmVkYCBpZiBubyBjZWxsIGlzIGZvdW5kLlxuICAgICAqL1xuICAgIGdldENlbGxBdChpbmRleCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2VsbHNbaW5kZXhdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIGEgY2VsbCBpbiB0aGUgcm93IHRvIGEgbmV3IHZhbHVlLCByZXR1cm5pbmcgYSBjb3B5IG9mIHRoZSByb3dcbiAgICAgKiB3aXRoIHRoZSBtb2RpZmllZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIElmIGFuIGludmFsaWQgaW5kZXggaXMgcHJvdmlkZWQsIHRoZSByb3cgd2lsbCBiZSB1bmNoYW5nZWQuXG4gICAgICovXG4gICAgc2V0Q2VsbEF0KGluZGV4LCB2YWx1ZSkge1xuICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuZ2V0Q2VsbHMoKTsgLy8gYSBjb3B5XG4gICAgICAgIGNlbGxzW2luZGV4XSA9IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZVJvdyhjZWxscywgdGhpcy5tYXJnaW5MZWZ0LCB0aGlzLm1hcmdpblJpZ2h0KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29udmVycyB0aGUgcm93IHRvIGEgdGV4dCByZXByZXNlbnRhdGlvbi5cbiAgICAgKi9cbiAgICB0b1RleHQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9jZWxscy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1hcmdpbkxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLl9jZWxscy5tYXAoKGNlbGwpID0+IGNlbGwudG9UZXh0KCkpLmpvaW4oJ3wnKTtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMubWFyZ2luTGVmdH18JHtjZWxsc318JHt0aGlzLm1hcmdpblJpZ2h0fWA7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgcm93IGlzIGEgZGVsaW1pdGVyIG9yIG5vdC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcm93IGlzIGEgZGVsaW1pdGVyIGkuZS4gYWxsIHRoZSBjZWxscyBjb250YWluZWQgYXJlIGRlbGltaXRlcnMuXG4gICAgICovXG4gICAgaXNEZWxpbWl0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jZWxscy5ldmVyeSgoY2VsbCkgPT4gY2VsbC5pc0RlbGltaXRlcigpKTtcbiAgICB9XG59XG5leHBvcnRzLlRhYmxlUm93ID0gVGFibGVSb3c7XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogUmV0cmlldmVkIGZyb21cbiAqICAgaHR0cHM6Ly9naXRodWIuY29tL3N1cGVybWFjcm8vbmV2ZXJ0aHJvd1xuICpcbiAqIE1JVCBMaWNlbnNlXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTkgR2lvcmdpbyBEZWxnYWRvXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRXJyID0gZXhwb3J0cy5PayA9IGV4cG9ydHMuZXJyID0gZXhwb3J0cy5vayA9IHZvaWQgMDtcbmNvbnN0IG9rID0gKHZhbHVlKSA9PiBuZXcgT2sodmFsdWUpO1xuZXhwb3J0cy5vayA9IG9rO1xuY29uc3QgZXJyID0gKGVycikgPT4gbmV3IEVycihlcnIpO1xuZXhwb3J0cy5lcnIgPSBlcnI7XG5jbGFzcyBPayB7XG4gICAgY29uc3RydWN0b3IodmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm1hdGNoID0gKG9rLCBfZXJyKSA9PiBvayh0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgaXNPaygpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlzRXJyKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNPaygpO1xuICAgIH1cbiAgICBtYXAoZikge1xuICAgICAgICByZXR1cm4gZXhwb3J0cy5vayhmKHRoaXMudmFsdWUpKTtcbiAgICB9XG4gICAgbWFwRXJyKF9mKSB7XG4gICAgICAgIHJldHVybiBleHBvcnRzLm9rKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgICAvLyBhZGQgaW5mbyBvbiBob3cgdGhpcyBpcyByZWFsbHkgdXNlZnVsIGZvciBjb252ZXJ0aW5nIGFcbiAgICAvLyBSZXN1bHQ8UmVzdWx0PFQsIEUyPiwgRTE+XG4gICAgLy8gaW50byBhIFJlc3VsdDxULCBFMj5cbiAgICBhbmRUaGVuKGYpIHtcbiAgICAgICAgcmV0dXJuIGYodGhpcy52YWx1ZSk7XG4gICAgfVxuICAgIHVud3JhcE9yKF92KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cbiAgICBfdW5zYWZlVW53cmFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG4gICAgX3Vuc2FmZVVud3JhcEVycigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYWxsZWQgYF91bnNhZmVVbndyYXBFcnJgIG9uIGFuIE9rJyk7XG4gICAgfVxufVxuZXhwb3J0cy5PayA9IE9rO1xuY2xhc3MgRXJyIHtcbiAgICBjb25zdHJ1Y3RvcihlcnJvcikge1xuICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7XG4gICAgICAgIHRoaXMubWF0Y2ggPSAoX29rLCBlcnIpID0+IGVycih0aGlzLmVycm9yKTtcbiAgICB9XG4gICAgaXNPaygpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpc0VycigpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzT2soKTtcbiAgICB9XG4gICAgbWFwKF9mKSB7XG4gICAgICAgIHJldHVybiBleHBvcnRzLmVycih0aGlzLmVycm9yKTtcbiAgICB9XG4gICAgbWFwRXJyKGYpIHtcbiAgICAgICAgcmV0dXJuIGV4cG9ydHMuZXJyKGYodGhpcy5lcnJvcikpO1xuICAgIH1cbiAgICBhbmRUaGVuKF9mKSB7XG4gICAgICAgIHJldHVybiBleHBvcnRzLmVycih0aGlzLmVycm9yKTtcbiAgICB9XG4gICAgdW53cmFwT3Iodikge1xuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG4gICAgX3Vuc2FmZVVud3JhcCgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYWxsZWQgYF91bnNhZmVVbndyYXBgIG9uIGFuIEVycicpO1xuICAgIH1cbiAgICBfdW5zYWZlVW53cmFwRXJyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvcjtcbiAgICB9XG59XG5leHBvcnRzLkVyciA9IEVycjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wcmV0dHlQcmludEFTVCA9IGV4cG9ydHMuY2hlY2tDaGlsZExlbmd0aCA9IGV4cG9ydHMuY2hlY2tUeXBlID0gZXhwb3J0cy5lcnJSZWxhdGl2ZVJlZmVyZW5jZUluZGV4ID0gZXhwb3J0cy5lcnJJbmRleDAgPSB2b2lkIDA7XG5leHBvcnRzLmVyckluZGV4MCA9IG5ldyBFcnJvcignSW5kZXggMCB1c2VkIHRvIGNyZWF0ZSBhIHJlZmVyZW5jZScpO1xuZXhwb3J0cy5lcnJSZWxhdGl2ZVJlZmVyZW5jZUluZGV4ID0gbmV3IEVycm9yKCdDYW4gbm90IHVzZSByZWxhdGl2ZSByZWZlcmVuY2Ugd2hlcmUgYWJzb2x1dGUgcmVmZXJlbmNlIGlzIHJlcXVpcmVkJyk7XG5jb25zdCBjaGVja1R5cGUgPSAoYXN0LCAuLi5leHBlY3RlZFR5cGVzKSA9PiB7XG4gICAgaWYgKGV4cGVjdGVkVHlwZXMuaW5kZXhPZihhc3QudHlwZSkgPj0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBuZXcgRXJyb3IoYEZvcm11bGEgZWxlbWVudCAnJHthc3QudGV4dH0nIGlzIGEgJHthc3QudHlwZX0gYnV0IGV4cGVjdGVkIGAgK1xuICAgICAgICBgb25lIG9mICR7ZXhwZWN0ZWRUeXBlc30gaW4gdGhpcyBwb3NpdGlvbi5gKTtcbn07XG5leHBvcnRzLmNoZWNrVHlwZSA9IGNoZWNrVHlwZTtcbmNvbnN0IGNoZWNrQ2hpbGRMZW5ndGggPSAoYXN0LCBsZW4pID0+IHtcbiAgICBpZiAoYXN0LmNoaWxkcmVuLmxlbmd0aCA9PT0gbGVuKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBFcnJvcihgRm9ybXVsYSBlbGVtZW50ICcke2FzdC50ZXh0fScgd2FzIGV4cGVjdGVkIHRvIGhhdmUgJHtsZW59IGAgK1xuICAgICAgICBgZWxlbWVudHMsIGJ1dCBoYWQgJHthc3QuY2hpbGRyZW4ubGVuZ3RofWApO1xufTtcbmV4cG9ydHMuY2hlY2tDaGlsZExlbmd0aCA9IGNoZWNrQ2hpbGRMZW5ndGg7XG5jb25zdCBwcmV0dHlQcmludEFTVCA9ICh0b2tlbiwgbGV2ZWwgPSAwKSA9PiB7XG4gICAgY29uc29sZS5sb2coJyAgJy5yZXBlYXQobGV2ZWwpICtcbiAgICAgICAgYHwtJHt0b2tlbi50eXBlfSR7dG9rZW4uY2hpbGRyZW4ubGVuZ3RoID09PSAwID8gJz0nICsgdG9rZW4udGV4dCA6ICcnfWApO1xuICAgIGlmICh0b2tlbi5jaGlsZHJlbikge1xuICAgICAgICB0b2tlbi5jaGlsZHJlbi5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICBleHBvcnRzLnByZXR0eVByaW50QVNUKGMsIGxldmVsICsgMSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG5leHBvcnRzLnByZXR0eVByaW50QVNUID0gcHJldHR5UHJpbnRBU1Q7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9vcGVuanNmLm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cbjsoZnVuY3Rpb24oKSB7XG5cbiAgLyoqIFVzZWQgYXMgYSBzYWZlIHJlZmVyZW5jZSBmb3IgYHVuZGVmaW5lZGAgaW4gcHJlLUVTNSBlbnZpcm9ubWVudHMuICovXG4gIHZhciB1bmRlZmluZWQ7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyLiAqL1xuICB2YXIgVkVSU0lPTiA9ICc0LjE3LjIwJztcblxuICAvKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbiAgdmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbiAgLyoqIEVycm9yIG1lc3NhZ2UgY29uc3RhbnRzLiAqL1xuICB2YXIgQ09SRV9FUlJPUl9URVhUID0gJ1Vuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLicsXG4gICAgICBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbiAgLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xuICB2YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIG1heGltdW0gbWVtb2l6ZSBjYWNoZSBzaXplLiAqL1xuICB2YXIgTUFYX01FTU9JWkVfU0laRSA9IDUwMDtcblxuICAvKiogVXNlZCBhcyB0aGUgaW50ZXJuYWwgYXJndW1lbnQgcGxhY2Vob2xkZXIuICovXG4gIHZhciBQTEFDRUhPTERFUiA9ICdfX2xvZGFzaF9wbGFjZWhvbGRlcl9fJztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xuICB2YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICAgIENMT05FX0ZMQVRfRkxBRyA9IDIsXG4gICAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xuICB2YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgZnVuY3Rpb24gbWV0YWRhdGEuICovXG4gIHZhciBXUkFQX0JJTkRfRkxBRyA9IDEsXG4gICAgICBXUkFQX0JJTkRfS0VZX0ZMQUcgPSAyLFxuICAgICAgV1JBUF9DVVJSWV9CT1VORF9GTEFHID0gNCxcbiAgICAgIFdSQVBfQ1VSUllfRkxBRyA9IDgsXG4gICAgICBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcgPSAxNixcbiAgICAgIFdSQVBfUEFSVElBTF9GTEFHID0gMzIsXG4gICAgICBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyA9IDY0LFxuICAgICAgV1JBUF9BUllfRkxBRyA9IDEyOCxcbiAgICAgIFdSQVBfUkVBUkdfRkxBRyA9IDI1NixcbiAgICAgIFdSQVBfRkxJUF9GTEFHID0gNTEyO1xuXG4gIC8qKiBVc2VkIGFzIGRlZmF1bHQgb3B0aW9ucyBmb3IgYF8udHJ1bmNhdGVgLiAqL1xuICB2YXIgREVGQVVMVF9UUlVOQ19MRU5HVEggPSAzMCxcbiAgICAgIERFRkFVTFRfVFJVTkNfT01JU1NJT04gPSAnLi4uJztcblxuICAvKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG4gIHZhciBIT1RfQ09VTlQgPSA4MDAsXG4gICAgICBIT1RfU1BBTiA9IDE2O1xuXG4gIC8qKiBVc2VkIHRvIGluZGljYXRlIHRoZSB0eXBlIG9mIGxhenkgaXRlcmF0ZWVzLiAqL1xuICB2YXIgTEFaWV9GSUxURVJfRkxBRyA9IDEsXG4gICAgICBMQVpZX01BUF9GTEFHID0gMixcbiAgICAgIExBWllfV0hJTEVfRkxBRyA9IDM7XG5cbiAgLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG4gIHZhciBJTkZJTklUWSA9IDEgLyAwLFxuICAgICAgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTEsXG4gICAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4LFxuICAgICAgTkFOID0gMCAvIDA7XG5cbiAgLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdGhlIG1heGltdW0gbGVuZ3RoIGFuZCBpbmRleCBvZiBhbiBhcnJheS4gKi9cbiAgdmFyIE1BWF9BUlJBWV9MRU5HVEggPSA0Mjk0OTY3Mjk1LFxuICAgICAgTUFYX0FSUkFZX0lOREVYID0gTUFYX0FSUkFZX0xFTkdUSCAtIDEsXG4gICAgICBIQUxGX01BWF9BUlJBWV9MRU5HVEggPSBNQVhfQVJSQVlfTEVOR1RIID4+PiAxO1xuXG4gIC8qKiBVc2VkIHRvIGFzc29jaWF0ZSB3cmFwIG1ldGhvZHMgd2l0aCB0aGVpciBiaXQgZmxhZ3MuICovXG4gIHZhciB3cmFwRmxhZ3MgPSBbXG4gICAgWydhcnknLCBXUkFQX0FSWV9GTEFHXSxcbiAgICBbJ2JpbmQnLCBXUkFQX0JJTkRfRkxBR10sXG4gICAgWydiaW5kS2V5JywgV1JBUF9CSU5EX0tFWV9GTEFHXSxcbiAgICBbJ2N1cnJ5JywgV1JBUF9DVVJSWV9GTEFHXSxcbiAgICBbJ2N1cnJ5UmlnaHQnLCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUddLFxuICAgIFsnZmxpcCcsIFdSQVBfRkxJUF9GTEFHXSxcbiAgICBbJ3BhcnRpYWwnLCBXUkFQX1BBUlRJQUxfRkxBR10sXG4gICAgWydwYXJ0aWFsUmlnaHQnLCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBR10sXG4gICAgWydyZWFyZycsIFdSQVBfUkVBUkdfRkxBR11cbiAgXTtcblxuICAvKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG4gIHZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgICBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgICAgZG9tRXhjVGFnID0gJ1tvYmplY3QgRE9NRXhjZXB0aW9uXScsXG4gICAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgICAgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgICAgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJyxcbiAgICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJyxcbiAgICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nLFxuICAgICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXScsXG4gICAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nLFxuICAgICAgd2Vha1NldFRhZyA9ICdbb2JqZWN0IFdlYWtTZXRdJztcblxuICB2YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGVtcHR5IHN0cmluZyBsaXRlcmFscyBpbiBjb21waWxlZCB0ZW1wbGF0ZSBzb3VyY2UuICovXG4gIHZhciByZUVtcHR5U3RyaW5nTGVhZGluZyA9IC9cXGJfX3AgXFwrPSAnJzsvZyxcbiAgICAgIHJlRW1wdHlTdHJpbmdNaWRkbGUgPSAvXFxiKF9fcCBcXCs9KSAnJyBcXCsvZyxcbiAgICAgIHJlRW1wdHlTdHJpbmdUcmFpbGluZyA9IC8oX19lXFwoLio/XFwpfFxcYl9fdFxcKSkgXFwrXFxuJyc7L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggSFRNTCBlbnRpdGllcyBhbmQgSFRNTCBjaGFyYWN0ZXJzLiAqL1xuICB2YXIgcmVFc2NhcGVkSHRtbCA9IC8mKD86YW1wfGx0fGd0fHF1b3R8IzM5KTsvZyxcbiAgICAgIHJlVW5lc2NhcGVkSHRtbCA9IC9bJjw+XCInXS9nLFxuICAgICAgcmVIYXNFc2NhcGVkSHRtbCA9IFJlZ0V4cChyZUVzY2FwZWRIdG1sLnNvdXJjZSksXG4gICAgICByZUhhc1VuZXNjYXBlZEh0bWwgPSBSZWdFeHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbiAgdmFyIHJlRXNjYXBlID0gLzwlLShbXFxzXFxTXSs/KSU+L2csXG4gICAgICByZUV2YWx1YXRlID0gLzwlKFtcXHNcXFNdKz8pJT4vZyxcbiAgICAgIHJlSW50ZXJwb2xhdGUgPSAvPCU9KFtcXHNcXFNdKz8pJT4vZztcblxuICAvKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG4gIHZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLFxuICAgICAgcmVJc1BsYWluUHJvcCA9IC9eXFx3KiQvLFxuICAgICAgcmVQcm9wTmFtZSA9IC9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZztcblxuICAvKipcbiAgICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICAgKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAgICovXG4gIHZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2csXG4gICAgICByZUhhc1JlZ0V4cENoYXIgPSBSZWdFeHAocmVSZWdFeHBDaGFyLnNvdXJjZSk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gKi9cbiAgdmFyIHJlVHJpbSA9IC9eXFxzK3xcXHMrJC9nLFxuICAgICAgcmVUcmltU3RhcnQgPSAvXlxccysvLFxuICAgICAgcmVUcmltRW5kID0gL1xccyskLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3cmFwIGRldGFpbCBjb21tZW50cy4gKi9cbiAgdmFyIHJlV3JhcENvbW1lbnQgPSAvXFx7KD86XFxuXFwvXFwqIFxcW3dyYXBwZWQgd2l0aCAuK1xcXSBcXCpcXC8pP1xcbj8vLFxuICAgICAgcmVXcmFwRGV0YWlscyA9IC9cXHtcXG5cXC9cXCogXFxbd3JhcHBlZCB3aXRoICguKylcXF0gXFwqLyxcbiAgICAgIHJlU3BsaXREZXRhaWxzID0gLyw/ICYgLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3b3JkcyBjb21wb3NlZCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4gKi9cbiAgdmFyIHJlQXNjaWlXb3JkID0gL1teXFx4MDAtXFx4MmZcXHgzYS1cXHg0MFxceDViLVxceDYwXFx4N2ItXFx4N2ZdKy9nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL1xuICB2YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2hcbiAgICogW0VTIHRlbXBsYXRlIGRlbGltaXRlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRlbXBsYXRlLWxpdGVyYWwtbGV4aWNhbC1jb21wb25lbnRzKS5cbiAgICovXG4gIHZhciByZUVzVGVtcGxhdGUgPSAvXFwkXFx7KFteXFxcXH1dKig/OlxcXFwuW15cXFxcfV0qKSopXFx9L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUZsYWdzID0gL1xcdyokLztcblxuICAvKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xuICB2YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xuICB2YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIExhdGluIFVuaWNvZGUgbGV0dGVycyAoZXhjbHVkaW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRvcnMpLiAqL1xuICB2YXIgcmVMYXRpbiA9IC9bXFx4YzAtXFx4ZDZcXHhkOC1cXHhmNlxceGY4LVxceGZmXFx1MDEwMC1cXHUwMTdmXS9nO1xuXG4gIC8qKiBVc2VkIHRvIGVuc3VyZSBjYXB0dXJpbmcgb3JkZXIgb2YgdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbiAgdmFyIHJlTm9NYXRjaCA9IC8oJF4pLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB1bmVzY2FwZWQgY2hhcmFjdGVycyBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciByZVVuZXNjYXBlZFN0cmluZyA9IC9bJ1xcblxcclxcdTIwMjhcXHUyMDI5XFxcXF0vZztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG4gIHZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgICAgcnNEaW5nYmF0UmFuZ2UgPSAnXFxcXHUyNzAwLVxcXFx1MjdiZicsXG4gICAgICByc0xvd2VyUmFuZ2UgPSAnYS16XFxcXHhkZi1cXFxceGY2XFxcXHhmOC1cXFxceGZmJyxcbiAgICAgIHJzTWF0aE9wUmFuZ2UgPSAnXFxcXHhhY1xcXFx4YjFcXFxceGQ3XFxcXHhmNycsXG4gICAgICByc05vbkNoYXJSYW5nZSA9ICdcXFxceDAwLVxcXFx4MmZcXFxceDNhLVxcXFx4NDBcXFxceDViLVxcXFx4NjBcXFxceDdiLVxcXFx4YmYnLFxuICAgICAgcnNQdW5jdHVhdGlvblJhbmdlID0gJ1xcXFx1MjAwMC1cXFxcdTIwNmYnLFxuICAgICAgcnNTcGFjZVJhbmdlID0gJyBcXFxcdFxcXFx4MGJcXFxcZlxcXFx4YTBcXFxcdWZlZmZcXFxcblxcXFxyXFxcXHUyMDI4XFxcXHUyMDI5XFxcXHUxNjgwXFxcXHUxODBlXFxcXHUyMDAwXFxcXHUyMDAxXFxcXHUyMDAyXFxcXHUyMDAzXFxcXHUyMDA0XFxcXHUyMDA1XFxcXHUyMDA2XFxcXHUyMDA3XFxcXHUyMDA4XFxcXHUyMDA5XFxcXHUyMDBhXFxcXHUyMDJmXFxcXHUyMDVmXFxcXHUzMDAwJyxcbiAgICAgIHJzVXBwZXJSYW5nZSA9ICdBLVpcXFxceGMwLVxcXFx4ZDZcXFxceGQ4LVxcXFx4ZGUnLFxuICAgICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnLFxuICAgICAgcnNCcmVha1JhbmdlID0gcnNNYXRoT3BSYW5nZSArIHJzTm9uQ2hhclJhbmdlICsgcnNQdW5jdHVhdGlvblJhbmdlICsgcnNTcGFjZVJhbmdlO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbiAgdmFyIHJzQXBvcyA9IFwiWydcXHUyMDE5XVwiLFxuICAgICAgcnNBc3RyYWwgPSAnWycgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgICAgcnNCcmVhayA9ICdbJyArIHJzQnJlYWtSYW5nZSArICddJyxcbiAgICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgICByc0RpZ2l0cyA9ICdcXFxcZCsnLFxuICAgICAgcnNEaW5nYmF0ID0gJ1snICsgcnNEaW5nYmF0UmFuZ2UgKyAnXScsXG4gICAgICByc0xvd2VyID0gJ1snICsgcnNMb3dlclJhbmdlICsgJ10nLFxuICAgICAgcnNNaXNjID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyByc0JyZWFrUmFuZ2UgKyByc0RpZ2l0cyArIHJzRGluZ2JhdFJhbmdlICsgcnNMb3dlclJhbmdlICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgICAgcnNOb25Bc3RyYWwgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgICByc1VwcGVyID0gJ1snICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgcmVnZXhlcy4gKi9cbiAgdmFyIHJzTWlzY0xvd2VyID0gJyg/OicgKyByc0xvd2VyICsgJ3wnICsgcnNNaXNjICsgJyknLFxuICAgICAgcnNNaXNjVXBwZXIgPSAnKD86JyArIHJzVXBwZXIgKyAnfCcgKyByc01pc2MgKyAnKScsXG4gICAgICByc09wdENvbnRyTG93ZXIgPSAnKD86JyArIHJzQXBvcyArICcoPzpkfGxsfG18cmV8c3x0fHZlKSk/JyxcbiAgICAgIHJzT3B0Q29udHJVcHBlciA9ICcoPzonICsgcnNBcG9zICsgJyg/OkR8TEx8TXxSRXxTfFR8VkUpKT8nLFxuICAgICAgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgICAgcnNPcHRWYXIgPSAnWycgKyByc1ZhclJhbmdlICsgJ10/JyxcbiAgICAgIHJzT3B0Sm9pbiA9ICcoPzonICsgcnNaV0ogKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKicsXG4gICAgICByc09yZExvd2VyID0gJ1xcXFxkKig/OjFzdHwybmR8M3JkfCg/IVsxMjNdKVxcXFxkdGgpKD89XFxcXGJ8W0EtWl9dKScsXG4gICAgICByc09yZFVwcGVyID0gJ1xcXFxkKig/OjFTVHwyTkR8M1JEfCg/IVsxMjNdKVxcXFxkVEgpKD89XFxcXGJ8W2Etel9dKScsXG4gICAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgICByc0Vtb2ppID0gJyg/OicgKyBbcnNEaW5nYmF0LCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc1NlcSxcbiAgICAgIHJzU3ltYm9sID0gJyg/OicgKyBbcnNOb25Bc3RyYWwgKyByc0NvbWJvICsgJz8nLCByc0NvbWJvLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyLCByc0FzdHJhbF0uam9pbignfCcpICsgJyknO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGFwb3N0cm9waGVzLiAqL1xuICB2YXIgcmVBcG9zID0gUmVnRXhwKHJzQXBvcywgJ2cnKTtcblxuICAvKipcbiAgICogVXNlZCB0byBtYXRjaCBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpIGFuZFxuICAgKiBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzIGZvciBzeW1ib2xzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3NfZm9yX1N5bWJvbHMpLlxuICAgKi9cbiAgdmFyIHJlQ29tYm9NYXJrID0gUmVnRXhwKHJzQ29tYm8sICdnJyk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggW3N0cmluZyBzeW1ib2xzXShodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC11bmljb2RlKS4gKi9cbiAgdmFyIHJlVW5pY29kZSA9IFJlZ0V4cChyc0ZpdHogKyAnKD89JyArIHJzRml0eiArICcpfCcgKyByc1N5bWJvbCArIHJzU2VxLCAnZycpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGNvbXBsZXggb3IgY29tcG91bmQgd29yZHMuICovXG4gIHZhciByZVVuaWNvZGVXb3JkID0gUmVnRXhwKFtcbiAgICByc1VwcGVyICsgJz8nICsgcnNMb3dlciArICcrJyArIHJzT3B0Q29udHJMb3dlciArICcoPz0nICsgW3JzQnJlYWssIHJzVXBwZXIsICckJ10uam9pbignfCcpICsgJyknLFxuICAgIHJzTWlzY1VwcGVyICsgJysnICsgcnNPcHRDb250clVwcGVyICsgJyg/PScgKyBbcnNCcmVhaywgcnNVcHBlciArIHJzTWlzY0xvd2VyLCAnJCddLmpvaW4oJ3wnKSArICcpJyxcbiAgICByc1VwcGVyICsgJz8nICsgcnNNaXNjTG93ZXIgKyAnKycgKyByc09wdENvbnRyTG93ZXIsXG4gICAgcnNVcHBlciArICcrJyArIHJzT3B0Q29udHJVcHBlcixcbiAgICByc09yZFVwcGVyLFxuICAgIHJzT3JkTG93ZXIsXG4gICAgcnNEaWdpdHMsXG4gICAgcnNFbW9qaVxuICBdLmpvaW4oJ3wnKSwgJ2cnKTtcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbiAgdmFyIHJlSGFzVW5pY29kZSA9IFJlZ0V4cCgnWycgKyByc1pXSiArIHJzQXN0cmFsUmFuZ2UgICsgcnNDb21ib1JhbmdlICsgcnNWYXJSYW5nZSArICddJyk7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3MgdGhhdCBuZWVkIGEgbW9yZSByb2J1c3QgcmVnZXhwIHRvIG1hdGNoIHdvcmRzLiAqL1xuICB2YXIgcmVIYXNVbmljb2RlV29yZCA9IC9bYS16XVtBLVpdfFtBLVpdezJ9W2Etel18WzAtOV1bYS16QS1aXXxbYS16QS1aXVswLTldfFteYS16QS1aMC05IF0vO1xuXG4gIC8qKiBVc2VkIHRvIGFzc2lnbiBkZWZhdWx0IGBjb250ZXh0YCBvYmplY3QgcHJvcGVydGllcy4gKi9cbiAgdmFyIGNvbnRleHRQcm9wcyA9IFtcbiAgICAnQXJyYXknLCAnQnVmZmVyJywgJ0RhdGFWaWV3JywgJ0RhdGUnLCAnRXJyb3InLCAnRmxvYXQzMkFycmF5JywgJ0Zsb2F0NjRBcnJheScsXG4gICAgJ0Z1bmN0aW9uJywgJ0ludDhBcnJheScsICdJbnQxNkFycmF5JywgJ0ludDMyQXJyYXknLCAnTWFwJywgJ01hdGgnLCAnT2JqZWN0JyxcbiAgICAnUHJvbWlzZScsICdSZWdFeHAnLCAnU2V0JywgJ1N0cmluZycsICdTeW1ib2wnLCAnVHlwZUVycm9yJywgJ1VpbnQ4QXJyYXknLFxuICAgICdVaW50OENsYW1wZWRBcnJheScsICdVaW50MTZBcnJheScsICdVaW50MzJBcnJheScsICdXZWFrTWFwJyxcbiAgICAnXycsICdjbGVhclRpbWVvdXQnLCAnaXNGaW5pdGUnLCAncGFyc2VJbnQnLCAnc2V0VGltZW91dCdcbiAgXTtcblxuICAvKiogVXNlZCB0byBtYWtlIHRlbXBsYXRlIHNvdXJjZVVSTHMgZWFzaWVyIHRvIGlkZW50aWZ5LiAqL1xuICB2YXIgdGVtcGxhdGVDb3VudGVyID0gLTE7XG5cbiAgLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xuICB2YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbiAgdHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbiAgdHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxuICB0eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbiAgdHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4gIC8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovXG4gIHZhciBjbG9uZWFibGVUYWdzID0ge307XG4gIGNsb25lYWJsZVRhZ3NbYXJnc1RhZ10gPSBjbG9uZWFibGVUYWdzW2FycmF5VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRhVmlld1RhZ10gPVxuICBjbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbZmxvYXQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW2Zsb2F0NjRUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MTZUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW251bWJlclRhZ10gPSBjbG9uZWFibGVUYWdzW29iamVjdFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPSBjbG9uZWFibGVUYWdzW3NldFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3VpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbdWludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG4gIGNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuICAvKiogVXNlZCB0byBtYXAgTGF0aW4gVW5pY29kZSBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMuICovXG4gIHZhciBkZWJ1cnJlZExldHRlcnMgPSB7XG4gICAgLy8gTGF0aW4tMSBTdXBwbGVtZW50IGJsb2NrLlxuICAgICdcXHhjMCc6ICdBJywgICdcXHhjMSc6ICdBJywgJ1xceGMyJzogJ0EnLCAnXFx4YzMnOiAnQScsICdcXHhjNCc6ICdBJywgJ1xceGM1JzogJ0EnLFxuICAgICdcXHhlMCc6ICdhJywgICdcXHhlMSc6ICdhJywgJ1xceGUyJzogJ2EnLCAnXFx4ZTMnOiAnYScsICdcXHhlNCc6ICdhJywgJ1xceGU1JzogJ2EnLFxuICAgICdcXHhjNyc6ICdDJywgICdcXHhlNyc6ICdjJyxcbiAgICAnXFx4ZDAnOiAnRCcsICAnXFx4ZjAnOiAnZCcsXG4gICAgJ1xceGM4JzogJ0UnLCAgJ1xceGM5JzogJ0UnLCAnXFx4Y2EnOiAnRScsICdcXHhjYic6ICdFJyxcbiAgICAnXFx4ZTgnOiAnZScsICAnXFx4ZTknOiAnZScsICdcXHhlYSc6ICdlJywgJ1xceGViJzogJ2UnLFxuICAgICdcXHhjYyc6ICdJJywgICdcXHhjZCc6ICdJJywgJ1xceGNlJzogJ0knLCAnXFx4Y2YnOiAnSScsXG4gICAgJ1xceGVjJzogJ2knLCAgJ1xceGVkJzogJ2knLCAnXFx4ZWUnOiAnaScsICdcXHhlZic6ICdpJyxcbiAgICAnXFx4ZDEnOiAnTicsICAnXFx4ZjEnOiAnbicsXG4gICAgJ1xceGQyJzogJ08nLCAgJ1xceGQzJzogJ08nLCAnXFx4ZDQnOiAnTycsICdcXHhkNSc6ICdPJywgJ1xceGQ2JzogJ08nLCAnXFx4ZDgnOiAnTycsXG4gICAgJ1xceGYyJzogJ28nLCAgJ1xceGYzJzogJ28nLCAnXFx4ZjQnOiAnbycsICdcXHhmNSc6ICdvJywgJ1xceGY2JzogJ28nLCAnXFx4ZjgnOiAnbycsXG4gICAgJ1xceGQ5JzogJ1UnLCAgJ1xceGRhJzogJ1UnLCAnXFx4ZGInOiAnVScsICdcXHhkYyc6ICdVJyxcbiAgICAnXFx4ZjknOiAndScsICAnXFx4ZmEnOiAndScsICdcXHhmYic6ICd1JywgJ1xceGZjJzogJ3UnLFxuICAgICdcXHhkZCc6ICdZJywgICdcXHhmZCc6ICd5JywgJ1xceGZmJzogJ3knLFxuICAgICdcXHhjNic6ICdBZScsICdcXHhlNic6ICdhZScsXG4gICAgJ1xceGRlJzogJ1RoJywgJ1xceGZlJzogJ3RoJyxcbiAgICAnXFx4ZGYnOiAnc3MnLFxuICAgIC8vIExhdGluIEV4dGVuZGVkLUEgYmxvY2suXG4gICAgJ1xcdTAxMDAnOiAnQScsICAnXFx1MDEwMic6ICdBJywgJ1xcdTAxMDQnOiAnQScsXG4gICAgJ1xcdTAxMDEnOiAnYScsICAnXFx1MDEwMyc6ICdhJywgJ1xcdTAxMDUnOiAnYScsXG4gICAgJ1xcdTAxMDYnOiAnQycsICAnXFx1MDEwOCc6ICdDJywgJ1xcdTAxMGEnOiAnQycsICdcXHUwMTBjJzogJ0MnLFxuICAgICdcXHUwMTA3JzogJ2MnLCAgJ1xcdTAxMDknOiAnYycsICdcXHUwMTBiJzogJ2MnLCAnXFx1MDEwZCc6ICdjJyxcbiAgICAnXFx1MDEwZSc6ICdEJywgICdcXHUwMTEwJzogJ0QnLCAnXFx1MDEwZic6ICdkJywgJ1xcdTAxMTEnOiAnZCcsXG4gICAgJ1xcdTAxMTInOiAnRScsICAnXFx1MDExNCc6ICdFJywgJ1xcdTAxMTYnOiAnRScsICdcXHUwMTE4JzogJ0UnLCAnXFx1MDExYSc6ICdFJyxcbiAgICAnXFx1MDExMyc6ICdlJywgICdcXHUwMTE1JzogJ2UnLCAnXFx1MDExNyc6ICdlJywgJ1xcdTAxMTknOiAnZScsICdcXHUwMTFiJzogJ2UnLFxuICAgICdcXHUwMTFjJzogJ0cnLCAgJ1xcdTAxMWUnOiAnRycsICdcXHUwMTIwJzogJ0cnLCAnXFx1MDEyMic6ICdHJyxcbiAgICAnXFx1MDExZCc6ICdnJywgICdcXHUwMTFmJzogJ2cnLCAnXFx1MDEyMSc6ICdnJywgJ1xcdTAxMjMnOiAnZycsXG4gICAgJ1xcdTAxMjQnOiAnSCcsICAnXFx1MDEyNic6ICdIJywgJ1xcdTAxMjUnOiAnaCcsICdcXHUwMTI3JzogJ2gnLFxuICAgICdcXHUwMTI4JzogJ0knLCAgJ1xcdTAxMmEnOiAnSScsICdcXHUwMTJjJzogJ0knLCAnXFx1MDEyZSc6ICdJJywgJ1xcdTAxMzAnOiAnSScsXG4gICAgJ1xcdTAxMjknOiAnaScsICAnXFx1MDEyYic6ICdpJywgJ1xcdTAxMmQnOiAnaScsICdcXHUwMTJmJzogJ2knLCAnXFx1MDEzMSc6ICdpJyxcbiAgICAnXFx1MDEzNCc6ICdKJywgICdcXHUwMTM1JzogJ2onLFxuICAgICdcXHUwMTM2JzogJ0snLCAgJ1xcdTAxMzcnOiAnaycsICdcXHUwMTM4JzogJ2snLFxuICAgICdcXHUwMTM5JzogJ0wnLCAgJ1xcdTAxM2InOiAnTCcsICdcXHUwMTNkJzogJ0wnLCAnXFx1MDEzZic6ICdMJywgJ1xcdTAxNDEnOiAnTCcsXG4gICAgJ1xcdTAxM2EnOiAnbCcsICAnXFx1MDEzYyc6ICdsJywgJ1xcdTAxM2UnOiAnbCcsICdcXHUwMTQwJzogJ2wnLCAnXFx1MDE0Mic6ICdsJyxcbiAgICAnXFx1MDE0Myc6ICdOJywgICdcXHUwMTQ1JzogJ04nLCAnXFx1MDE0Nyc6ICdOJywgJ1xcdTAxNGEnOiAnTicsXG4gICAgJ1xcdTAxNDQnOiAnbicsICAnXFx1MDE0Nic6ICduJywgJ1xcdTAxNDgnOiAnbicsICdcXHUwMTRiJzogJ24nLFxuICAgICdcXHUwMTRjJzogJ08nLCAgJ1xcdTAxNGUnOiAnTycsICdcXHUwMTUwJzogJ08nLFxuICAgICdcXHUwMTRkJzogJ28nLCAgJ1xcdTAxNGYnOiAnbycsICdcXHUwMTUxJzogJ28nLFxuICAgICdcXHUwMTU0JzogJ1InLCAgJ1xcdTAxNTYnOiAnUicsICdcXHUwMTU4JzogJ1InLFxuICAgICdcXHUwMTU1JzogJ3InLCAgJ1xcdTAxNTcnOiAncicsICdcXHUwMTU5JzogJ3InLFxuICAgICdcXHUwMTVhJzogJ1MnLCAgJ1xcdTAxNWMnOiAnUycsICdcXHUwMTVlJzogJ1MnLCAnXFx1MDE2MCc6ICdTJyxcbiAgICAnXFx1MDE1Yic6ICdzJywgICdcXHUwMTVkJzogJ3MnLCAnXFx1MDE1Zic6ICdzJywgJ1xcdTAxNjEnOiAncycsXG4gICAgJ1xcdTAxNjInOiAnVCcsICAnXFx1MDE2NCc6ICdUJywgJ1xcdTAxNjYnOiAnVCcsXG4gICAgJ1xcdTAxNjMnOiAndCcsICAnXFx1MDE2NSc6ICd0JywgJ1xcdTAxNjcnOiAndCcsXG4gICAgJ1xcdTAxNjgnOiAnVScsICAnXFx1MDE2YSc6ICdVJywgJ1xcdTAxNmMnOiAnVScsICdcXHUwMTZlJzogJ1UnLCAnXFx1MDE3MCc6ICdVJywgJ1xcdTAxNzInOiAnVScsXG4gICAgJ1xcdTAxNjknOiAndScsICAnXFx1MDE2Yic6ICd1JywgJ1xcdTAxNmQnOiAndScsICdcXHUwMTZmJzogJ3UnLCAnXFx1MDE3MSc6ICd1JywgJ1xcdTAxNzMnOiAndScsXG4gICAgJ1xcdTAxNzQnOiAnVycsICAnXFx1MDE3NSc6ICd3JyxcbiAgICAnXFx1MDE3Nic6ICdZJywgICdcXHUwMTc3JzogJ3knLCAnXFx1MDE3OCc6ICdZJyxcbiAgICAnXFx1MDE3OSc6ICdaJywgICdcXHUwMTdiJzogJ1onLCAnXFx1MDE3ZCc6ICdaJyxcbiAgICAnXFx1MDE3YSc6ICd6JywgICdcXHUwMTdjJzogJ3onLCAnXFx1MDE3ZSc6ICd6JyxcbiAgICAnXFx1MDEzMic6ICdJSicsICdcXHUwMTMzJzogJ2lqJyxcbiAgICAnXFx1MDE1Mic6ICdPZScsICdcXHUwMTUzJzogJ29lJyxcbiAgICAnXFx1MDE0OSc6IFwiJ25cIiwgJ1xcdTAxN2YnOiAncydcbiAgfTtcblxuICAvKiogVXNlZCB0byBtYXAgY2hhcmFjdGVycyB0byBIVE1MIGVudGl0aWVzLiAqL1xuICB2YXIgaHRtbEVzY2FwZXMgPSB7XG4gICAgJyYnOiAnJmFtcDsnLFxuICAgICc8JzogJyZsdDsnLFxuICAgICc+JzogJyZndDsnLFxuICAgICdcIic6ICcmcXVvdDsnLFxuICAgIFwiJ1wiOiAnJiMzOTsnXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gbWFwIEhUTUwgZW50aXRpZXMgdG8gY2hhcmFjdGVycy4gKi9cbiAgdmFyIGh0bWxVbmVzY2FwZXMgPSB7XG4gICAgJyZhbXA7JzogJyYnLFxuICAgICcmbHQ7JzogJzwnLFxuICAgICcmZ3Q7JzogJz4nLFxuICAgICcmcXVvdDsnOiAnXCInLFxuICAgICcmIzM5Oyc6IFwiJ1wiXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciBzdHJpbmdFc2NhcGVzID0ge1xuICAgICdcXFxcJzogJ1xcXFwnLFxuICAgIFwiJ1wiOiBcIidcIixcbiAgICAnXFxuJzogJ24nLFxuICAgICdcXHInOiAncicsXG4gICAgJ1xcdTIwMjgnOiAndTIwMjgnLFxuICAgICdcXHUyMDI5JzogJ3UyMDI5J1xuICB9O1xuXG4gIC8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG4gIHZhciBmcmVlUGFyc2VGbG9hdCA9IHBhcnNlRmxvYXQsXG4gICAgICBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xuICB2YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbiAgdmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbiAgLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG4gIHZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG4gIHZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG4gIHZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbiAgLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbiAgdmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG4gIHZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4gIC8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xuICB2YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICAgIGlmICh0eXBlcykge1xuICAgICAgICByZXR1cm4gdHlwZXM7XG4gICAgICB9XG5cbiAgICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfSgpKTtcblxuICAvKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xuICB2YXIgbm9kZUlzQXJyYXlCdWZmZXIgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc0FycmF5QnVmZmVyLFxuICAgICAgbm9kZUlzRGF0ZSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzRGF0ZSxcbiAgICAgIG5vZGVJc01hcCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzTWFwLFxuICAgICAgbm9kZUlzUmVnRXhwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNSZWdFeHAsXG4gICAgICBub2RlSXNTZXQgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1NldCxcbiAgICAgIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgLyoqXG4gICAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAgICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gICAqL1xuICBmdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VBZ2dyZWdhdG9yYCBmb3IgYXJyYXlzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBhZ2dyZWdhdGVkIG9iamVjdC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUFnZ3JlZ2F0b3IoYXJyYXksIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgdmFsdWUsIGl0ZXJhdGVlKHZhbHVlKSwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoUmlnaHRgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFYWNoUmlnaHQoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbbGVuZ3RoXSwgbGVuZ3RoLCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmV2ZXJ5YCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFsbCBlbGVtZW50cyBwYXNzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAqICBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUV2ZXJ5KGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKCFwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZpbHRlcmAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmNsdWRlc2AgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIHNwZWNpZnlpbmcgYW4gaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksIHZhbHVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIHJldHVybiAhIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIDApID4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhcnJheUluY2x1ZGVzYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGEgY29tcGFyYXRvci5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUluY2x1ZGVzV2l0aChhcnJheSwgdmFsdWUsIGNvbXBhcmF0b3IpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGNvbXBhcmF0b3IodmFsdWUsIGFycmF5W2luZGV4XSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICogc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luaXRBY2N1bV0gU3BlY2lmeSB1c2luZyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgIGFzXG4gICAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlSZWR1Y2UoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbKytpbmRleF07XG4gICAgfVxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlUmlnaHRgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YCBhc1xuICAgKiAgdGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5UmVkdWNlUmlnaHQoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIGlmIChpbml0QWNjdW0gJiYgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGFycmF5Wy0tbGVuZ3RoXTtcbiAgICB9XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtsZW5ndGhdLCBsZW5ndGgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICogc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzaXplIG9mIGFuIEFTQ0lJIGBzdHJpbmdgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgaW5zcGVjdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gICAqL1xuICB2YXIgYXNjaWlTaXplID0gYmFzZVByb3BlcnR5KCdsZW5ndGgnKTtcblxuICAvKipcbiAgICogQ29udmVydHMgYW4gQVNDSUkgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGFzY2lpVG9BcnJheShzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLnNwbGl0KCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdHMgYW4gQVNDSUkgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAqL1xuICBmdW5jdGlvbiBhc2NpaVdvcmRzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVBc2NpaVdvcmQpIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5maW5kS2V5YCBhbmQgYF8uZmluZExhc3RLZXlgLFxuICAgKiB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYGNvbGxlY3Rpb25gXG4gICAqIHVzaW5nIGBlYWNoRnVuY2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZvdW5kIGVsZW1lbnQgb3IgaXRzIGtleSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VGaW5kS2V5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZWFjaEZ1bmMpIHtcbiAgICB2YXIgcmVzdWx0O1xuICAgIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGtleSwgY29sbGVjdGlvbikpIHtcbiAgICAgICAgcmVzdWx0ID0ga2V5O1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maW5kSW5kZXhgIGFuZCBgXy5maW5kTGFzdEluZGV4YCB3aXRob3V0XG4gICAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gZnJvbUluZGV4ICsgKGZyb21SaWdodCA/IDEgOiAtMSk7XG5cbiAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5kZXhPZmAgd2l0aG91dCBgZnJvbUluZGV4YCBib3VuZHMgY2hlY2tzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICAgID8gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleClcbiAgICAgIDogYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUlzTmFOLCBmcm9tSW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYmFzZUluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VJbmRleE9mV2l0aChhcnJheSwgdmFsdWUsIGZyb21JbmRleCwgY29tcGFyYXRvcikge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoY29tcGFyYXRvcihhcnJheVtpbmRleF0sIHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hTmAgd2l0aG91dCBzdXBwb3J0IGZvciBudW1iZXIgb2JqZWN0cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSXNOYU4odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lYW5gIGFuZCBgXy5tZWFuQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VNZWFuKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICByZXR1cm4gbGVuZ3RoID8gKGJhc2VTdW0oYXJyYXksIGl0ZXJhdGVlKSAvIGxlbmd0aCkgOiBOQU47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlPZmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVByb3BlcnR5T2Yob2JqZWN0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZWR1Y2VgIGFuZCBgXy5yZWR1Y2VSaWdodGAsIHdpdGhvdXQgc3VwcG9ydFxuICAgKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmAgdXNpbmcgYGVhY2hGdW5jYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaXRBY2N1bSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBvciBsYXN0IGVsZW1lbnQgb2ZcbiAgICogIGBjb2xsZWN0aW9uYCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBgY29sbGVjdGlvbmAuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VSZWR1Y2UoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGVhY2hGdW5jKSB7XG4gICAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGluaXRBY2N1bVxuICAgICAgICA/IChpbml0QWNjdW0gPSBmYWxzZSwgdmFsdWUpXG4gICAgICAgIDogaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRCeWAgd2hpY2ggdXNlcyBgY29tcGFyZXJgIHRvIGRlZmluZSB0aGVcbiAgICogc29ydCBvcmRlciBvZiBgYXJyYXlgIGFuZCByZXBsYWNlcyBjcml0ZXJpYSBvYmplY3RzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZ1xuICAgKiB2YWx1ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJlciBUaGUgZnVuY3Rpb24gdG8gZGVmaW5lIHNvcnQgb3JkZXIuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVNvcnRCeShhcnJheSwgY29tcGFyZXIpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgYXJyYXkuc29ydChjb21wYXJlcik7XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBhcnJheVtsZW5ndGhdID0gYXJyYXlbbGVuZ3RoXS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnN1bWAgYW5kIGBfLnN1bUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VTdW0oYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIHJlc3VsdCxcbiAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBjdXJyZW50ID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdKTtcbiAgICAgIGlmIChjdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBjdXJyZW50IDogKHJlc3VsdCArIGN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAgICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1BhaXJzYCBhbmQgYF8udG9QYWlyc0luYCB3aGljaCBjcmVhdGVzIGFuIGFycmF5XG4gICAqIG9mIGtleS12YWx1ZSBwYWlycyBmb3IgYG9iamVjdGAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXMgb2YgYHByb3BzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZ2V0IHZhbHVlcyBmb3IuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUb1BhaXJzKG9iamVjdCwgcHJvcHMpIHtcbiAgICByZXR1cm4gYXJyYXlNYXAocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIFtrZXksIG9iamVjdFtrZXldXTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnZhbHVlc2AgYW5kIGBfLnZhbHVlc0luYCB3aGljaCBjcmVhdGVzIGFuXG4gICAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICAgKiBvZiBgcHJvcHNgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVZhbHVlcyhvYmplY3QsIHByb3BzKSB7XG4gICAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgIHJldHVybiBvYmplY3Rba2V5XTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBgY2FjaGVgIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjYWNoZSBUaGUgY2FjaGUgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBjYWNoZUhhcyhjYWNoZSwga2V5KSB7XG4gICAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1TdGFydGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgc3RyaW5nIHN5bWJvbFxuICAgKiB0aGF0IGlzIG5vdCBmb3VuZCBpbiB0aGUgY2hhcmFjdGVyIHN5bWJvbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IHN0clN5bWJvbHMgVGhlIHN0cmluZyBzeW1ib2xzIHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7QXJyYXl9IGNoclN5bWJvbHMgVGhlIGNoYXJhY3RlciBzeW1ib2xzIHRvIGZpbmQuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCB1bm1hdGNoZWQgc3RyaW5nIHN5bWJvbC5cbiAgICovXG4gIGZ1bmN0aW9uIGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IHN0clN5bWJvbHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGggJiYgYmFzZUluZGV4T2YoY2hyU3ltYm9scywgc3RyU3ltYm9sc1tpbmRleF0sIDApID4gLTEpIHt9XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgc3RyaW5nIHN5bWJvbFxuICAgKiB0aGF0IGlzIG5vdCBmb3VuZCBpbiB0aGUgY2hhcmFjdGVyIHN5bWJvbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IHN0clN5bWJvbHMgVGhlIHN0cmluZyBzeW1ib2xzIHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7QXJyYXl9IGNoclN5bWJvbHMgVGhlIGNoYXJhY3RlciBzeW1ib2xzIHRvIGZpbmQuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHVubWF0Y2hlZCBzdHJpbmcgc3ltYm9sLlxuICAgKi9cbiAgZnVuY3Rpb24gY2hhcnNFbmRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSB7XG4gICAgdmFyIGluZGV4ID0gc3RyU3ltYm9scy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaW5kZXgtLSAmJiBiYXNlSW5kZXhPZihjaHJTeW1ib2xzLCBzdHJTeW1ib2xzW2luZGV4XSwgMCkgPiAtMSkge31cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbnVtYmVyIG9mIGBwbGFjZWhvbGRlcmAgb2NjdXJyZW5jZXMgaW4gYGFycmF5YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gcGxhY2Vob2xkZXIgVGhlIHBsYWNlaG9sZGVyIHRvIHNlYXJjaCBmb3IuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHBsYWNlaG9sZGVyIGNvdW50LlxuICAgKi9cbiAgZnVuY3Rpb24gY291bnRIb2xkZXJzKGFycmF5LCBwbGFjZWhvbGRlcikge1xuICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdCA9IDA7XG5cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGlmIChhcnJheVtsZW5ndGhdID09PSBwbGFjZWhvbGRlcikge1xuICAgICAgICArK3Jlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLmRlYnVycmAgdG8gY29udmVydCBMYXRpbi0xIFN1cHBsZW1lbnQgYW5kIExhdGluIEV4dGVuZGVkLUFcbiAgICogbGV0dGVycyB0byBiYXNpYyBMYXRpbiBsZXR0ZXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGV0dGVyIFRoZSBtYXRjaGVkIGxldHRlciB0byBkZWJ1cnIuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGRlYnVycmVkIGxldHRlci5cbiAgICovXG4gIHZhciBkZWJ1cnJMZXR0ZXIgPSBiYXNlUHJvcGVydHlPZihkZWJ1cnJlZExldHRlcnMpO1xuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLmVzY2FwZWAgdG8gY29udmVydCBjaGFyYWN0ZXJzIHRvIEhUTUwgZW50aXRpZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICB2YXIgZXNjYXBlSHRtbENoYXIgPSBiYXNlUHJvcGVydHlPZihodG1sRXNjYXBlcyk7XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8udGVtcGxhdGVgIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGZvciBpbmNsdXNpb24gaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byBlc2NhcGUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgY2hhcmFjdGVyLlxuICAgKi9cbiAgZnVuY3Rpb24gZXNjYXBlU3RyaW5nQ2hhcihjaHIpIHtcbiAgICByZXR1cm4gJ1xcXFwnICsgc3RyaW5nRXNjYXBlc1tjaHJdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGBzdHJpbmdgIGNvbnRhaW5zIFVuaWNvZGUgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIHN5bWJvbCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gaGFzVW5pY29kZShzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVIYXNVbmljb2RlLnRlc3Qoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgYSB3b3JkIGNvbXBvc2VkIG9mIFVuaWNvZGUgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIHdvcmQgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGhhc1VuaWNvZGVXb3JkKHN0cmluZykge1xuICAgIHJldHVybiByZUhhc1VuaWNvZGVXb3JkLnRlc3Qoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgaXRlcmF0b3JgIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gaXRlcmF0b3IgVGhlIGl0ZXJhdG9yIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gaXRlcmF0b3JUb0FycmF5KGl0ZXJhdG9yKSB7XG4gICAgdmFyIGRhdGEsXG4gICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgd2hpbGUgKCEoZGF0YSA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgcmVzdWx0LnB1c2goZGF0YS52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYG1hcGAgdG8gaXRzIGtleS12YWx1ZSBwYWlycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICAgKi9cbiAgZnVuY3Rpb24gbWFwVG9BcnJheShtYXApIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkobWFwLnNpemUpO1xuXG4gICAgbWFwLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAgcmVzdWx0WysraW5kZXhdID0gW2tleSwgdmFsdWVdO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICovXG4gIGZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGFyZykge1xuICAgICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZXMgYWxsIGBwbGFjZWhvbGRlcmAgZWxlbWVudHMgaW4gYGFycmF5YCB3aXRoIGFuIGludGVybmFsIHBsYWNlaG9sZGVyXG4gICAqIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRoZWlyIGluZGV4ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAqIEBwYXJhbSB7Kn0gcGxhY2Vob2xkZXIgVGhlIHBsYWNlaG9sZGVyIHRvIHJlcGxhY2UuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAqL1xuICBmdW5jdGlvbiByZXBsYWNlSG9sZGVycyhhcnJheSwgcGxhY2Vob2xkZXIpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gcGxhY2Vob2xkZXIgfHwgdmFsdWUgPT09IFBMQUNFSE9MREVSKSB7XG4gICAgICAgIGFycmF5W2luZGV4XSA9IFBMQUNFSE9MREVSO1xuICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgc2V0YCB0byBhbiBhcnJheSBvZiBpdHMgdmFsdWVzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZXMuXG4gICAqL1xuICBmdW5jdGlvbiBzZXRUb0FycmF5KHNldCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmVzdWx0WysraW5kZXhdID0gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgc2V0YCB0byBpdHMgdmFsdWUtdmFsdWUgcGFpcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlLXZhbHVlIHBhaXJzLlxuICAgKi9cbiAgZnVuY3Rpb24gc2V0VG9QYWlycyhzZXQpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gICAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJlc3VsdFsrK2luZGV4XSA9IFt2YWx1ZSwgdmFsdWVdO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluZGV4T2ZgIHdoaWNoIHBlcmZvcm1zIHN0cmljdCBlcXVhbGl0eVxuICAgKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggLSAxLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFycmF5W2luZGV4XSA9PT0gdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmxhc3RJbmRleE9mYCB3aGljaCBwZXJmb3JtcyBzdHJpY3QgZXF1YWxpdHlcbiAgICogY29tcGFyaXNvbnMgb2YgdmFsdWVzLCBpLmUuIGA9PT1gLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpY3RMYXN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCArIDE7XG4gICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgIGlmIChhcnJheVtpbmRleF0gPT09IHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG51bWJlciBvZiBzeW1ib2xzIGluIGBzdHJpbmdgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpbmdTaXplKHN0cmluZykge1xuICAgIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICAgID8gdW5pY29kZVNpemUoc3RyaW5nKVxuICAgICAgOiBhc2NpaVNpemUoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaW5nVG9BcnJheShzdHJpbmcpIHtcbiAgICByZXR1cm4gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgICA/IHVuaWNvZGVUb0FycmF5KHN0cmluZylcbiAgICAgIDogYXNjaWlUb0FycmF5KHN0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy51bmVzY2FwZWAgdG8gY29udmVydCBIVE1MIGVudGl0aWVzIHRvIGNoYXJhY3RlcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIHVuZXNjYXBlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1bmVzY2FwZWQgY2hhcmFjdGVyLlxuICAgKi9cbiAgdmFyIHVuZXNjYXBlSHRtbENoYXIgPSBiYXNlUHJvcGVydHlPZihodG1sVW5lc2NhcGVzKTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgc2l6ZSBvZiBhIFVuaWNvZGUgYHN0cmluZ2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAgICovXG4gIGZ1bmN0aW9uIHVuaWNvZGVTaXplKHN0cmluZykge1xuICAgIHZhciByZXN1bHQgPSByZVVuaWNvZGUubGFzdEluZGV4ID0gMDtcbiAgICB3aGlsZSAocmVVbmljb2RlLnRlc3Qoc3RyaW5nKSkge1xuICAgICAgKytyZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBVbmljb2RlIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiB1bmljb2RlVG9BcnJheShzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLm1hdGNoKHJlVW5pY29kZSkgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogU3BsaXRzIGEgVW5pY29kZSBgc3RyaW5nYCBpbnRvIGFuIGFycmF5IG9mIGl0cyB3b3Jkcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3b3JkcyBvZiBgc3RyaW5nYC5cbiAgICovXG4gIGZ1bmN0aW9uIHVuaWNvZGVXb3JkcyhzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLm1hdGNoKHJlVW5pY29kZVdvcmQpIHx8IFtdO1xuICB9XG5cbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBwcmlzdGluZSBgbG9kYXNoYCBmdW5jdGlvbiB1c2luZyB0aGUgYGNvbnRleHRgIG9iamVjdC5cbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAbWVtYmVyT2YgX1xuICAgKiBAc2luY2UgMS4xLjBcbiAgICogQGNhdGVnb3J5IFV0aWxcbiAgICogQHBhcmFtIHtPYmplY3R9IFtjb250ZXh0PXJvb3RdIFRoZSBjb250ZXh0IG9iamVjdC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGEgbmV3IGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBfLm1peGluKHsgJ2Zvbyc6IF8uY29uc3RhbnQoJ2ZvbycpIH0pO1xuICAgKlxuICAgKiB2YXIgbG9kYXNoID0gXy5ydW5JbkNvbnRleHQoKTtcbiAgICogbG9kYXNoLm1peGluKHsgJ2Jhcic6IGxvZGFzaC5jb25zdGFudCgnYmFyJykgfSk7XG4gICAqXG4gICAqIF8uaXNGdW5jdGlvbihfLmZvbyk7XG4gICAqIC8vID0+IHRydWVcbiAgICogXy5pc0Z1bmN0aW9uKF8uYmFyKTtcbiAgICogLy8gPT4gZmFsc2VcbiAgICpcbiAgICogbG9kYXNoLmlzRnVuY3Rpb24obG9kYXNoLmZvbyk7XG4gICAqIC8vID0+IGZhbHNlXG4gICAqIGxvZGFzaC5pc0Z1bmN0aW9uKGxvZGFzaC5iYXIpO1xuICAgKiAvLyA9PiB0cnVlXG4gICAqXG4gICAqIC8vIENyZWF0ZSBhIHN1cGVkLXVwIGBkZWZlcmAgaW4gTm9kZS5qcy5cbiAgICogdmFyIGRlZmVyID0gXy5ydW5JbkNvbnRleHQoeyAnc2V0VGltZW91dCc6IHNldEltbWVkaWF0ZSB9KS5kZWZlcjtcbiAgICovXG4gIHZhciBydW5JbkNvbnRleHQgPSAoZnVuY3Rpb24gcnVuSW5Db250ZXh0KGNvbnRleHQpIHtcbiAgICBjb250ZXh0ID0gY29udGV4dCA9PSBudWxsID8gcm9vdCA6IF8uZGVmYXVsdHMocm9vdC5PYmplY3QoKSwgY29udGV4dCwgXy5waWNrKHJvb3QsIGNvbnRleHRQcm9wcykpO1xuXG4gICAgLyoqIEJ1aWx0LWluIGNvbnN0cnVjdG9yIHJlZmVyZW5jZXMuICovXG4gICAgdmFyIEFycmF5ID0gY29udGV4dC5BcnJheSxcbiAgICAgICAgRGF0ZSA9IGNvbnRleHQuRGF0ZSxcbiAgICAgICAgRXJyb3IgPSBjb250ZXh0LkVycm9yLFxuICAgICAgICBGdW5jdGlvbiA9IGNvbnRleHQuRnVuY3Rpb24sXG4gICAgICAgIE1hdGggPSBjb250ZXh0Lk1hdGgsXG4gICAgICAgIE9iamVjdCA9IGNvbnRleHQuT2JqZWN0LFxuICAgICAgICBSZWdFeHAgPSBjb250ZXh0LlJlZ0V4cCxcbiAgICAgICAgU3RyaW5nID0gY29udGV4dC5TdHJpbmcsXG4gICAgICAgIFR5cGVFcnJvciA9IGNvbnRleHQuVHlwZUVycm9yO1xuXG4gICAgLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xuICAgIHZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlLFxuICAgICAgICBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBvdmVycmVhY2hpbmcgY29yZS1qcyBzaGltcy4gKi9cbiAgICB2YXIgY29yZUpzRGF0YSA9IGNvbnRleHRbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG4gICAgLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xuICAgIHZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbiAgICAvKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbiAgICB2YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuICAgIC8qKiBVc2VkIHRvIGdlbmVyYXRlIHVuaXF1ZSBJRHMuICovXG4gICAgdmFyIGlkQ291bnRlciA9IDA7XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xuICAgIHZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHVpZCA9IC9bXi5dKyQvLmV4ZWMoY29yZUpzRGF0YSAmJiBjb3JlSnNEYXRhLmtleXMgJiYgY29yZUpzRGF0YS5rZXlzLklFX1BST1RPIHx8ICcnKTtcbiAgICAgIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbiAgICB9KCkpO1xuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byByZXNvbHZlIHRoZVxuICAgICAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICAgICAqIG9mIHZhbHVlcy5cbiAgICAgKi9cbiAgICB2YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuICAgIC8qKiBVc2VkIHRvIGluZmVyIHRoZSBgT2JqZWN0YCBjb25zdHJ1Y3Rvci4gKi9cbiAgICB2YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cbiAgICAvKiogVXNlZCB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBgX2AgcmVmZXJlbmNlIGluIGBfLm5vQ29uZmxpY3RgLiAqL1xuICAgIHZhciBvbGREYXNoID0gcm9vdC5fO1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbiAgICB2YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgK1xuICAgICAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgICAgIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuICAgICk7XG5cbiAgICAvKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbiAgICB2YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IGNvbnRleHQuQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgICAgICBTeW1ib2wgPSBjb250ZXh0LlN5bWJvbCxcbiAgICAgICAgVWludDhBcnJheSA9IGNvbnRleHQuVWludDhBcnJheSxcbiAgICAgICAgYWxsb2NVbnNhZmUgPSBCdWZmZXIgPyBCdWZmZXIuYWxsb2NVbnNhZmUgOiB1bmRlZmluZWQsXG4gICAgICAgIGdldFByb3RvdHlwZSA9IG92ZXJBcmcoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpLFxuICAgICAgICBvYmplY3RDcmVhdGUgPSBPYmplY3QuY3JlYXRlLFxuICAgICAgICBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlLFxuICAgICAgICBzcGxpY2UgPSBhcnJheVByb3RvLnNwbGljZSxcbiAgICAgICAgc3ByZWFkYWJsZVN5bWJvbCA9IFN5bWJvbCA/IFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bUl0ZXJhdG9yID0gU3ltYm9sID8gU3ltYm9sLml0ZXJhdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuICAgIHZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBmdW5jID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2RlZmluZVByb3BlcnR5Jyk7XG4gICAgICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgICAgIHJldHVybiBmdW5jO1xuICAgICAgfSBjYXRjaCAoZSkge31cbiAgICB9KCkpO1xuXG4gICAgLyoqIE1vY2tlZCBidWlsdC1pbnMuICovXG4gICAgdmFyIGN0eENsZWFyVGltZW91dCA9IGNvbnRleHQuY2xlYXJUaW1lb3V0ICE9PSByb290LmNsZWFyVGltZW91dCAmJiBjb250ZXh0LmNsZWFyVGltZW91dCxcbiAgICAgICAgY3R4Tm93ID0gRGF0ZSAmJiBEYXRlLm5vdyAhPT0gcm9vdC5EYXRlLm5vdyAmJiBEYXRlLm5vdyxcbiAgICAgICAgY3R4U2V0VGltZW91dCA9IGNvbnRleHQuc2V0VGltZW91dCAhPT0gcm9vdC5zZXRUaW1lb3V0ICYmIGNvbnRleHQuc2V0VGltZW91dDtcblxuICAgIC8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbiAgICB2YXIgbmF0aXZlQ2VpbCA9IE1hdGguY2VpbCxcbiAgICAgICAgbmF0aXZlRmxvb3IgPSBNYXRoLmZsb29yLFxuICAgICAgICBuYXRpdmVHZXRTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxcbiAgICAgICAgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIG5hdGl2ZUlzRmluaXRlID0gY29udGV4dC5pc0Zpbml0ZSxcbiAgICAgICAgbmF0aXZlSm9pbiA9IGFycmF5UHJvdG8uam9pbixcbiAgICAgICAgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCksXG4gICAgICAgIG5hdGl2ZU1heCA9IE1hdGgubWF4LFxuICAgICAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbixcbiAgICAgICAgbmF0aXZlTm93ID0gRGF0ZS5ub3csXG4gICAgICAgIG5hdGl2ZVBhcnNlSW50ID0gY29udGV4dC5wYXJzZUludCxcbiAgICAgICAgbmF0aXZlUmFuZG9tID0gTWF0aC5yYW5kb20sXG4gICAgICAgIG5hdGl2ZVJldmVyc2UgPSBhcnJheVByb3RvLnJldmVyc2U7XG5cbiAgICAvKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG4gICAgdmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKGNvbnRleHQsICdEYXRhVmlldycpLFxuICAgICAgICBNYXAgPSBnZXROYXRpdmUoY29udGV4dCwgJ01hcCcpLFxuICAgICAgICBQcm9taXNlID0gZ2V0TmF0aXZlKGNvbnRleHQsICdQcm9taXNlJyksXG4gICAgICAgIFNldCA9IGdldE5hdGl2ZShjb250ZXh0LCAnU2V0JyksXG4gICAgICAgIFdlYWtNYXAgPSBnZXROYXRpdmUoY29udGV4dCwgJ1dlYWtNYXAnKSxcbiAgICAgICAgbmF0aXZlQ3JlYXRlID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2NyZWF0ZScpO1xuXG4gICAgLyoqIFVzZWQgdG8gc3RvcmUgZnVuY3Rpb24gbWV0YWRhdGEuICovXG4gICAgdmFyIG1ldGFNYXAgPSBXZWFrTWFwICYmIG5ldyBXZWFrTWFwO1xuXG4gICAgLyoqIFVzZWQgdG8gbG9va3VwIHVubWluaWZpZWQgZnVuY3Rpb24gbmFtZXMuICovXG4gICAgdmFyIHJlYWxOYW1lcyA9IHt9O1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IG1hcHMsIHNldHMsIGFuZCB3ZWFrbWFwcy4gKi9cbiAgICB2YXIgZGF0YVZpZXdDdG9yU3RyaW5nID0gdG9Tb3VyY2UoRGF0YVZpZXcpLFxuICAgICAgICBtYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoTWFwKSxcbiAgICAgICAgcHJvbWlzZUN0b3JTdHJpbmcgPSB0b1NvdXJjZShQcm9taXNlKSxcbiAgICAgICAgc2V0Q3RvclN0cmluZyA9IHRvU291cmNlKFNldCksXG4gICAgICAgIHdlYWtNYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoV2Vha01hcCk7XG5cbiAgICAvKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbiAgICB2YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgICAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkLFxuICAgICAgICBzeW1ib2xUb1N0cmluZyA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udG9TdHJpbmcgOiB1bmRlZmluZWQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgb2JqZWN0IHdoaWNoIHdyYXBzIGB2YWx1ZWAgdG8gZW5hYmxlIGltcGxpY2l0IG1ldGhvZFxuICAgICAqIGNoYWluIHNlcXVlbmNlcy4gTWV0aG9kcyB0aGF0IG9wZXJhdGUgb24gYW5kIHJldHVybiBhcnJheXMsIGNvbGxlY3Rpb25zLFxuICAgICAqIGFuZCBmdW5jdGlvbnMgY2FuIGJlIGNoYWluZWQgdG9nZXRoZXIuIE1ldGhvZHMgdGhhdCByZXRyaWV2ZSBhIHNpbmdsZSB2YWx1ZVxuICAgICAqIG9yIG1heSByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUgd2lsbCBhdXRvbWF0aWNhbGx5IGVuZCB0aGUgY2hhaW4gc2VxdWVuY2VcbiAgICAgKiBhbmQgcmV0dXJuIHRoZSB1bndyYXBwZWQgdmFsdWUuIE90aGVyd2lzZSwgdGhlIHZhbHVlIG11c3QgYmUgdW53cmFwcGVkXG4gICAgICogd2l0aCBgXyN2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBFeHBsaWNpdCBjaGFpbiBzZXF1ZW5jZXMsIHdoaWNoIG11c3QgYmUgdW53cmFwcGVkIHdpdGggYF8jdmFsdWVgLCBtYXkgYmVcbiAgICAgKiBlbmFibGVkIHVzaW5nIGBfLmNoYWluYC5cbiAgICAgKlxuICAgICAqIFRoZSBleGVjdXRpb24gb2YgY2hhaW5lZCBtZXRob2RzIGlzIGxhenksIHRoYXQgaXMsIGl0J3MgZGVmZXJyZWQgdW50aWxcbiAgICAgKiBgXyN2YWx1ZWAgaXMgaW1wbGljaXRseSBvciBleHBsaWNpdGx5IGNhbGxlZC5cbiAgICAgKlxuICAgICAqIExhenkgZXZhbHVhdGlvbiBhbGxvd3Mgc2V2ZXJhbCBtZXRob2RzIHRvIHN1cHBvcnQgc2hvcnRjdXQgZnVzaW9uLlxuICAgICAqIFNob3J0Y3V0IGZ1c2lvbiBpcyBhbiBvcHRpbWl6YXRpb24gdG8gbWVyZ2UgaXRlcmF0ZWUgY2FsbHM7IHRoaXMgYXZvaWRzXG4gICAgICogdGhlIGNyZWF0aW9uIG9mIGludGVybWVkaWF0ZSBhcnJheXMgYW5kIGNhbiBncmVhdGx5IHJlZHVjZSB0aGUgbnVtYmVyIG9mXG4gICAgICogaXRlcmF0ZWUgZXhlY3V0aW9ucy4gU2VjdGlvbnMgb2YgYSBjaGFpbiBzZXF1ZW5jZSBxdWFsaWZ5IGZvciBzaG9ydGN1dFxuICAgICAqIGZ1c2lvbiBpZiB0aGUgc2VjdGlvbiBpcyBhcHBsaWVkIHRvIGFuIGFycmF5IGFuZCBpdGVyYXRlZXMgYWNjZXB0IG9ubHlcbiAgICAgKiBvbmUgYXJndW1lbnQuIFRoZSBoZXVyaXN0aWMgZm9yIHdoZXRoZXIgYSBzZWN0aW9uIHF1YWxpZmllcyBmb3Igc2hvcnRjdXRcbiAgICAgKiBmdXNpb24gaXMgc3ViamVjdCB0byBjaGFuZ2UuXG4gICAgICpcbiAgICAgKiBDaGFpbmluZyBpcyBzdXBwb3J0ZWQgaW4gY3VzdG9tIGJ1aWxkcyBhcyBsb25nIGFzIHRoZSBgXyN2YWx1ZWAgbWV0aG9kIGlzXG4gICAgICogZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQuXG4gICAgICpcbiAgICAgKiBJbiBhZGRpdGlvbiB0byBsb2Rhc2ggbWV0aG9kcywgd3JhcHBlcnMgaGF2ZSBgQXJyYXlgIGFuZCBgU3RyaW5nYCBtZXRob2RzLlxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgYEFycmF5YCBtZXRob2RzIGFyZTpcbiAgICAgKiBgY29uY2F0YCwgYGpvaW5gLCBgcG9wYCwgYHB1c2hgLCBgc2hpZnRgLCBgc29ydGAsIGBzcGxpY2VgLCBhbmQgYHVuc2hpZnRgXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBgU3RyaW5nYCBtZXRob2RzIGFyZTpcbiAgICAgKiBgcmVwbGFjZWAgYW5kIGBzcGxpdGBcbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIG1ldGhvZHMgdGhhdCBzdXBwb3J0IHNob3J0Y3V0IGZ1c2lvbiBhcmU6XG4gICAgICogYGF0YCwgYGNvbXBhY3RgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLCBgZHJvcFdoaWxlYCwgYGZpbHRlcmAsIGBmaW5kYCxcbiAgICAgKiBgZmluZExhc3RgLCBgaGVhZGAsIGBpbml0aWFsYCwgYGxhc3RgLCBgbWFwYCwgYHJlamVjdGAsIGByZXZlcnNlYCwgYHNsaWNlYCxcbiAgICAgKiBgdGFpbGAsIGB0YWtlYCwgYHRha2VSaWdodGAsIGB0YWtlUmlnaHRXaGlsZWAsIGB0YWtlV2hpbGVgLCBhbmQgYHRvQXJyYXlgXG4gICAgICpcbiAgICAgKiBUaGUgY2hhaW5hYmxlIHdyYXBwZXIgbWV0aG9kcyBhcmU6XG4gICAgICogYGFmdGVyYCwgYGFyeWAsIGBhc3NpZ25gLCBgYXNzaWduSW5gLCBgYXNzaWduSW5XaXRoYCwgYGFzc2lnbldpdGhgLCBgYXRgLFxuICAgICAqIGBiZWZvcmVgLCBgYmluZGAsIGBiaW5kQWxsYCwgYGJpbmRLZXlgLCBgY2FzdEFycmF5YCwgYGNoYWluYCwgYGNodW5rYCxcbiAgICAgKiBgY29tbWl0YCwgYGNvbXBhY3RgLCBgY29uY2F0YCwgYGNvbmZvcm1zYCwgYGNvbnN0YW50YCwgYGNvdW50QnlgLCBgY3JlYXRlYCxcbiAgICAgKiBgY3VycnlgLCBgZGVib3VuY2VgLCBgZGVmYXVsdHNgLCBgZGVmYXVsdHNEZWVwYCwgYGRlZmVyYCwgYGRlbGF5YCxcbiAgICAgKiBgZGlmZmVyZW5jZWAsIGBkaWZmZXJlbmNlQnlgLCBgZGlmZmVyZW5jZVdpdGhgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLFxuICAgICAqIGBkcm9wUmlnaHRXaGlsZWAsIGBkcm9wV2hpbGVgLCBgZXh0ZW5kYCwgYGV4dGVuZFdpdGhgLCBgZmlsbGAsIGBmaWx0ZXJgLFxuICAgICAqIGBmbGF0TWFwYCwgYGZsYXRNYXBEZWVwYCwgYGZsYXRNYXBEZXB0aGAsIGBmbGF0dGVuYCwgYGZsYXR0ZW5EZWVwYCxcbiAgICAgKiBgZmxhdHRlbkRlcHRoYCwgYGZsaXBgLCBgZmxvd2AsIGBmbG93UmlnaHRgLCBgZnJvbVBhaXJzYCwgYGZ1bmN0aW9uc2AsXG4gICAgICogYGZ1bmN0aW9uc0luYCwgYGdyb3VwQnlgLCBgaW5pdGlhbGAsIGBpbnRlcnNlY3Rpb25gLCBgaW50ZXJzZWN0aW9uQnlgLFxuICAgICAqIGBpbnRlcnNlY3Rpb25XaXRoYCwgYGludmVydGAsIGBpbnZlcnRCeWAsIGBpbnZva2VNYXBgLCBgaXRlcmF0ZWVgLCBga2V5QnlgLFxuICAgICAqIGBrZXlzYCwgYGtleXNJbmAsIGBtYXBgLCBgbWFwS2V5c2AsIGBtYXBWYWx1ZXNgLCBgbWF0Y2hlc2AsIGBtYXRjaGVzUHJvcGVydHlgLFxuICAgICAqIGBtZW1vaXplYCwgYG1lcmdlYCwgYG1lcmdlV2l0aGAsIGBtZXRob2RgLCBgbWV0aG9kT2ZgLCBgbWl4aW5gLCBgbmVnYXRlYCxcbiAgICAgKiBgbnRoQXJnYCwgYG9taXRgLCBgb21pdEJ5YCwgYG9uY2VgLCBgb3JkZXJCeWAsIGBvdmVyYCwgYG92ZXJBcmdzYCxcbiAgICAgKiBgb3ZlckV2ZXJ5YCwgYG92ZXJTb21lYCwgYHBhcnRpYWxgLCBgcGFydGlhbFJpZ2h0YCwgYHBhcnRpdGlvbmAsIGBwaWNrYCxcbiAgICAgKiBgcGlja0J5YCwgYHBsYW50YCwgYHByb3BlcnR5YCwgYHByb3BlcnR5T2ZgLCBgcHVsbGAsIGBwdWxsQWxsYCwgYHB1bGxBbGxCeWAsXG4gICAgICogYHB1bGxBbGxXaXRoYCwgYHB1bGxBdGAsIGBwdXNoYCwgYHJhbmdlYCwgYHJhbmdlUmlnaHRgLCBgcmVhcmdgLCBgcmVqZWN0YCxcbiAgICAgKiBgcmVtb3ZlYCwgYHJlc3RgLCBgcmV2ZXJzZWAsIGBzYW1wbGVTaXplYCwgYHNldGAsIGBzZXRXaXRoYCwgYHNodWZmbGVgLFxuICAgICAqIGBzbGljZWAsIGBzb3J0YCwgYHNvcnRCeWAsIGBzcGxpY2VgLCBgc3ByZWFkYCwgYHRhaWxgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLFxuICAgICAqIGB0YWtlUmlnaHRXaGlsZWAsIGB0YWtlV2hpbGVgLCBgdGFwYCwgYHRocm90dGxlYCwgYHRocnVgLCBgdG9BcnJheWAsXG4gICAgICogYHRvUGFpcnNgLCBgdG9QYWlyc0luYCwgYHRvUGF0aGAsIGB0b1BsYWluT2JqZWN0YCwgYHRyYW5zZm9ybWAsIGB1bmFyeWAsXG4gICAgICogYHVuaW9uYCwgYHVuaW9uQnlgLCBgdW5pb25XaXRoYCwgYHVuaXFgLCBgdW5pcUJ5YCwgYHVuaXFXaXRoYCwgYHVuc2V0YCxcbiAgICAgKiBgdW5zaGlmdGAsIGB1bnppcGAsIGB1bnppcFdpdGhgLCBgdXBkYXRlYCwgYHVwZGF0ZVdpdGhgLCBgdmFsdWVzYCxcbiAgICAgKiBgdmFsdWVzSW5gLCBgd2l0aG91dGAsIGB3cmFwYCwgYHhvcmAsIGB4b3JCeWAsIGB4b3JXaXRoYCwgYHppcGAsXG4gICAgICogYHppcE9iamVjdGAsIGB6aXBPYmplY3REZWVwYCwgYW5kIGB6aXBXaXRoYFxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgbWV0aG9kcyB0aGF0IGFyZSAqKm5vdCoqIGNoYWluYWJsZSBieSBkZWZhdWx0IGFyZTpcbiAgICAgKiBgYWRkYCwgYGF0dGVtcHRgLCBgY2FtZWxDYXNlYCwgYGNhcGl0YWxpemVgLCBgY2VpbGAsIGBjbGFtcGAsIGBjbG9uZWAsXG4gICAgICogYGNsb25lRGVlcGAsIGBjbG9uZURlZXBXaXRoYCwgYGNsb25lV2l0aGAsIGBjb25mb3Jtc1RvYCwgYGRlYnVycmAsXG4gICAgICogYGRlZmF1bHRUb2AsIGBkaXZpZGVgLCBgZWFjaGAsIGBlYWNoUmlnaHRgLCBgZW5kc1dpdGhgLCBgZXFgLCBgZXNjYXBlYCxcbiAgICAgKiBgZXNjYXBlUmVnRXhwYCwgYGV2ZXJ5YCwgYGZpbmRgLCBgZmluZEluZGV4YCwgYGZpbmRLZXlgLCBgZmluZExhc3RgLFxuICAgICAqIGBmaW5kTGFzdEluZGV4YCwgYGZpbmRMYXN0S2V5YCwgYGZpcnN0YCwgYGZsb29yYCwgYGZvckVhY2hgLCBgZm9yRWFjaFJpZ2h0YCxcbiAgICAgKiBgZm9ySW5gLCBgZm9ySW5SaWdodGAsIGBmb3JPd25gLCBgZm9yT3duUmlnaHRgLCBgZ2V0YCwgYGd0YCwgYGd0ZWAsIGBoYXNgLFxuICAgICAqIGBoYXNJbmAsIGBoZWFkYCwgYGlkZW50aXR5YCwgYGluY2x1ZGVzYCwgYGluZGV4T2ZgLCBgaW5SYW5nZWAsIGBpbnZva2VgLFxuICAgICAqIGBpc0FyZ3VtZW50c2AsIGBpc0FycmF5YCwgYGlzQXJyYXlCdWZmZXJgLCBgaXNBcnJheUxpa2VgLCBgaXNBcnJheUxpa2VPYmplY3RgLFxuICAgICAqIGBpc0Jvb2xlYW5gLCBgaXNCdWZmZXJgLCBgaXNEYXRlYCwgYGlzRWxlbWVudGAsIGBpc0VtcHR5YCwgYGlzRXF1YWxgLFxuICAgICAqIGBpc0VxdWFsV2l0aGAsIGBpc0Vycm9yYCwgYGlzRmluaXRlYCwgYGlzRnVuY3Rpb25gLCBgaXNJbnRlZ2VyYCwgYGlzTGVuZ3RoYCxcbiAgICAgKiBgaXNNYXBgLCBgaXNNYXRjaGAsIGBpc01hdGNoV2l0aGAsIGBpc05hTmAsIGBpc05hdGl2ZWAsIGBpc05pbGAsIGBpc051bGxgLFxuICAgICAqIGBpc051bWJlcmAsIGBpc09iamVjdGAsIGBpc09iamVjdExpa2VgLCBgaXNQbGFpbk9iamVjdGAsIGBpc1JlZ0V4cGAsXG4gICAgICogYGlzU2FmZUludGVnZXJgLCBgaXNTZXRgLCBgaXNTdHJpbmdgLCBgaXNVbmRlZmluZWRgLCBgaXNUeXBlZEFycmF5YCxcbiAgICAgKiBgaXNXZWFrTWFwYCwgYGlzV2Vha1NldGAsIGBqb2luYCwgYGtlYmFiQ2FzZWAsIGBsYXN0YCwgYGxhc3RJbmRleE9mYCxcbiAgICAgKiBgbG93ZXJDYXNlYCwgYGxvd2VyRmlyc3RgLCBgbHRgLCBgbHRlYCwgYG1heGAsIGBtYXhCeWAsIGBtZWFuYCwgYG1lYW5CeWAsXG4gICAgICogYG1pbmAsIGBtaW5CeWAsIGBtdWx0aXBseWAsIGBub0NvbmZsaWN0YCwgYG5vb3BgLCBgbm93YCwgYG50aGAsIGBwYWRgLFxuICAgICAqIGBwYWRFbmRgLCBgcGFkU3RhcnRgLCBgcGFyc2VJbnRgLCBgcG9wYCwgYHJhbmRvbWAsIGByZWR1Y2VgLCBgcmVkdWNlUmlnaHRgLFxuICAgICAqIGByZXBlYXRgLCBgcmVzdWx0YCwgYHJvdW5kYCwgYHJ1bkluQ29udGV4dGAsIGBzYW1wbGVgLCBgc2hpZnRgLCBgc2l6ZWAsXG4gICAgICogYHNuYWtlQ2FzZWAsIGBzb21lYCwgYHNvcnRlZEluZGV4YCwgYHNvcnRlZEluZGV4QnlgLCBgc29ydGVkTGFzdEluZGV4YCxcbiAgICAgKiBgc29ydGVkTGFzdEluZGV4QnlgLCBgc3RhcnRDYXNlYCwgYHN0YXJ0c1dpdGhgLCBgc3R1YkFycmF5YCwgYHN0dWJGYWxzZWAsXG4gICAgICogYHN0dWJPYmplY3RgLCBgc3R1YlN0cmluZ2AsIGBzdHViVHJ1ZWAsIGBzdWJ0cmFjdGAsIGBzdW1gLCBgc3VtQnlgLFxuICAgICAqIGB0ZW1wbGF0ZWAsIGB0aW1lc2AsIGB0b0Zpbml0ZWAsIGB0b0ludGVnZXJgLCBgdG9KU09OYCwgYHRvTGVuZ3RoYCxcbiAgICAgKiBgdG9Mb3dlcmAsIGB0b051bWJlcmAsIGB0b1NhZmVJbnRlZ2VyYCwgYHRvU3RyaW5nYCwgYHRvVXBwZXJgLCBgdHJpbWAsXG4gICAgICogYHRyaW1FbmRgLCBgdHJpbVN0YXJ0YCwgYHRydW5jYXRlYCwgYHVuZXNjYXBlYCwgYHVuaXF1ZUlkYCwgYHVwcGVyQ2FzZWAsXG4gICAgICogYHVwcGVyRmlyc3RgLCBgdmFsdWVgLCBhbmQgYHdvcmRzYFxuICAgICAqXG4gICAgICogQG5hbWUgX1xuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwIGluIGEgYGxvZGFzaGAgaW5zdGFuY2UuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIHdyYXBwZWQgPSBfKFsxLCAyLCAzXSk7XG4gICAgICpcbiAgICAgKiAvLyBSZXR1cm5zIGFuIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiB3cmFwcGVkLnJlZHVjZShfLmFkZCk7XG4gICAgICogLy8gPT4gNlxuICAgICAqXG4gICAgICogLy8gUmV0dXJucyBhIHdyYXBwZWQgdmFsdWUuXG4gICAgICogdmFyIHNxdWFyZXMgPSB3cmFwcGVkLm1hcChzcXVhcmUpO1xuICAgICAqXG4gICAgICogXy5pc0FycmF5KHNxdWFyZXMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoc3F1YXJlcy52YWx1ZSgpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gbG9kYXNoKHZhbHVlKSB7XG4gICAgICBpZiAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNBcnJheSh2YWx1ZSkgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSkge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBMb2Rhc2hXcmFwcGVyKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnX193cmFwcGVkX18nKSkge1xuICAgICAgICAgIHJldHVybiB3cmFwcGVyQ2xvbmUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNyZWF0ZWAgd2l0aG91dCBzdXBwb3J0IGZvciBhc3NpZ25pbmdcbiAgICAgKiBwcm9wZXJ0aWVzIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHByb3RvIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgdmFyIGJhc2VDcmVhdGUgPSAoZnVuY3Rpb24oKSB7XG4gICAgICBmdW5jdGlvbiBvYmplY3QoKSB7fVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHByb3RvKSB7XG4gICAgICAgIGlmICghaXNPYmplY3QocHJvdG8pKSB7XG4gICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvYmplY3RDcmVhdGUpIHtcbiAgICAgICAgICByZXR1cm4gb2JqZWN0Q3JlYXRlKHByb3RvKTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QucHJvdG90eXBlID0gcHJvdG87XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgb2JqZWN0O1xuICAgICAgICBvYmplY3QucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9KCkpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGZ1bmN0aW9uIHdob3NlIHByb3RvdHlwZSBjaGFpbiBzZXF1ZW5jZSB3cmFwcGVycyBpbmhlcml0IGZyb20uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VMb2Rhc2goKSB7XG4gICAgICAvLyBObyBvcGVyYXRpb24gcGVyZm9ybWVkLlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGNvbnN0cnVjdG9yIGZvciBjcmVhdGluZyBgbG9kYXNoYCB3cmFwcGVyIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbY2hhaW5BbGxdIEVuYWJsZSBleHBsaWNpdCBtZXRob2QgY2hhaW4gc2VxdWVuY2VzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIExvZGFzaFdyYXBwZXIodmFsdWUsIGNoYWluQWxsKSB7XG4gICAgICB0aGlzLl9fd3JhcHBlZF9fID0gdmFsdWU7XG4gICAgICB0aGlzLl9fYWN0aW9uc19fID0gW107XG4gICAgICB0aGlzLl9fY2hhaW5fXyA9ICEhY2hhaW5BbGw7XG4gICAgICB0aGlzLl9faW5kZXhfXyA9IDA7XG4gICAgICB0aGlzLl9fdmFsdWVzX18gPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQnkgZGVmYXVsdCwgdGhlIHRlbXBsYXRlIGRlbGltaXRlcnMgdXNlZCBieSBsb2Rhc2ggYXJlIGxpa2UgdGhvc2UgaW5cbiAgICAgKiBlbWJlZGRlZCBSdWJ5IChFUkIpIGFzIHdlbGwgYXMgRVMyMDE1IHRlbXBsYXRlIHN0cmluZ3MuIENoYW5nZSB0aGVcbiAgICAgKiBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAqL1xuICAgIGxvZGFzaC50ZW1wbGF0ZVNldHRpbmdzID0ge1xuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gZGV0ZWN0IGBkYXRhYCBwcm9wZXJ0eSB2YWx1ZXMgdG8gYmUgSFRNTC1lc2NhcGVkLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtSZWdFeHB9XG4gICAgICAgKi9cbiAgICAgICdlc2NhcGUnOiByZUVzY2FwZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIGRldGVjdCBjb2RlIHRvIGJlIGV2YWx1YXRlZC5cbiAgICAgICAqXG4gICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAgICAgKiBAdHlwZSB7UmVnRXhwfVxuICAgICAgICovXG4gICAgICAnZXZhbHVhdGUnOiByZUV2YWx1YXRlLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gZGV0ZWN0IGBkYXRhYCBwcm9wZXJ0eSB2YWx1ZXMgdG8gaW5qZWN0LlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtSZWdFeHB9XG4gICAgICAgKi9cbiAgICAgICdpbnRlcnBvbGF0ZSc6IHJlSW50ZXJwb2xhdGUsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byByZWZlcmVuY2UgdGhlIGRhdGEgb2JqZWN0IGluIHRoZSB0ZW1wbGF0ZSB0ZXh0LlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgKi9cbiAgICAgICd2YXJpYWJsZSc6ICcnLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gaW1wb3J0IHZhcmlhYmxlcyBpbnRvIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgICAqXG4gICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAgICovXG4gICAgICAnaW1wb3J0cyc6IHtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQSByZWZlcmVuY2UgdG8gdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzLmltcG9ydHNcbiAgICAgICAgICogQHR5cGUge0Z1bmN0aW9ufVxuICAgICAgICAgKi9cbiAgICAgICAgJ18nOiBsb2Rhc2hcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gRW5zdXJlIHdyYXBwZXJzIGFyZSBpbnN0YW5jZXMgb2YgYGJhc2VMb2Rhc2hgLlxuICAgIGxvZGFzaC5wcm90b3R5cGUgPSBiYXNlTG9kYXNoLnByb3RvdHlwZTtcbiAgICBsb2Rhc2gucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gbG9kYXNoO1xuXG4gICAgTG9kYXNoV3JhcHBlci5wcm90b3R5cGUgPSBiYXNlQ3JlYXRlKGJhc2VMb2Rhc2gucHJvdG90eXBlKTtcbiAgICBMb2Rhc2hXcmFwcGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExvZGFzaFdyYXBwZXI7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbGF6eSB3cmFwcGVyIG9iamVjdCB3aGljaCB3cmFwcyBgdmFsdWVgIHRvIGVuYWJsZSBsYXp5IGV2YWx1YXRpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTGF6eVdyYXBwZXIodmFsdWUpIHtcbiAgICAgIHRoaXMuX193cmFwcGVkX18gPSB2YWx1ZTtcbiAgICAgIHRoaXMuX19hY3Rpb25zX18gPSBbXTtcbiAgICAgIHRoaXMuX19kaXJfXyA9IDE7XG4gICAgICB0aGlzLl9fZmlsdGVyZWRfXyA9IGZhbHNlO1xuICAgICAgdGhpcy5fX2l0ZXJhdGVlc19fID0gW107XG4gICAgICB0aGlzLl9fdGFrZUNvdW50X18gPSBNQVhfQVJSQVlfTEVOR1RIO1xuICAgICAgdGhpcy5fX3ZpZXdzX18gPSBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGxhenkgd3JhcHBlciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsb25lXG4gICAgICogQG1lbWJlck9mIExhenlXcmFwcGVyXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGBMYXp5V3JhcHBlcmAgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhenlDbG9uZSgpIHtcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgTGF6eVdyYXBwZXIodGhpcy5fX3dyYXBwZWRfXyk7XG4gICAgICByZXN1bHQuX19hY3Rpb25zX18gPSBjb3B5QXJyYXkodGhpcy5fX2FjdGlvbnNfXyk7XG4gICAgICByZXN1bHQuX19kaXJfXyA9IHRoaXMuX19kaXJfXztcbiAgICAgIHJlc3VsdC5fX2ZpbHRlcmVkX18gPSB0aGlzLl9fZmlsdGVyZWRfXztcbiAgICAgIHJlc3VsdC5fX2l0ZXJhdGVlc19fID0gY29weUFycmF5KHRoaXMuX19pdGVyYXRlZXNfXyk7XG4gICAgICByZXN1bHQuX190YWtlQ291bnRfXyA9IHRoaXMuX190YWtlQ291bnRfXztcbiAgICAgIHJlc3VsdC5fX3ZpZXdzX18gPSBjb3B5QXJyYXkodGhpcy5fX3ZpZXdzX18pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnNlcyB0aGUgZGlyZWN0aW9uIG9mIGxhenkgaXRlcmF0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSByZXZlcnNlXG4gICAgICogQG1lbWJlck9mIExhenlXcmFwcGVyXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHJldmVyc2VkIGBMYXp5V3JhcHBlcmAgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhenlSZXZlcnNlKCkge1xuICAgICAgaWYgKHRoaXMuX19maWx0ZXJlZF9fKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgTGF6eVdyYXBwZXIodGhpcyk7XG4gICAgICAgIHJlc3VsdC5fX2Rpcl9fID0gLTE7XG4gICAgICAgIHJlc3VsdC5fX2ZpbHRlcmVkX18gPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5jbG9uZSgpO1xuICAgICAgICByZXN1bHQuX19kaXJfXyAqPSAtMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXh0cmFjdHMgdGhlIHVud3JhcHBlZCB2YWx1ZSBmcm9tIGl0cyBsYXp5IHdyYXBwZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHZhbHVlXG4gICAgICogQG1lbWJlck9mIExhenlXcmFwcGVyXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXp5VmFsdWUoKSB7XG4gICAgICB2YXIgYXJyYXkgPSB0aGlzLl9fd3JhcHBlZF9fLnZhbHVlKCksXG4gICAgICAgICAgZGlyID0gdGhpcy5fX2Rpcl9fLFxuICAgICAgICAgIGlzQXJyID0gaXNBcnJheShhcnJheSksXG4gICAgICAgICAgaXNSaWdodCA9IGRpciA8IDAsXG4gICAgICAgICAgYXJyTGVuZ3RoID0gaXNBcnIgPyBhcnJheS5sZW5ndGggOiAwLFxuICAgICAgICAgIHZpZXcgPSBnZXRWaWV3KDAsIGFyckxlbmd0aCwgdGhpcy5fX3ZpZXdzX18pLFxuICAgICAgICAgIHN0YXJ0ID0gdmlldy5zdGFydCxcbiAgICAgICAgICBlbmQgPSB2aWV3LmVuZCxcbiAgICAgICAgICBsZW5ndGggPSBlbmQgLSBzdGFydCxcbiAgICAgICAgICBpbmRleCA9IGlzUmlnaHQgPyBlbmQgOiAoc3RhcnQgLSAxKSxcbiAgICAgICAgICBpdGVyYXRlZXMgPSB0aGlzLl9faXRlcmF0ZWVzX18sXG4gICAgICAgICAgaXRlckxlbmd0aCA9IGl0ZXJhdGVlcy5sZW5ndGgsXG4gICAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICAgIHRha2VDb3VudCA9IG5hdGl2ZU1pbihsZW5ndGgsIHRoaXMuX190YWtlQ291bnRfXyk7XG5cbiAgICAgIGlmICghaXNBcnIgfHwgKCFpc1JpZ2h0ICYmIGFyckxlbmd0aCA9PSBsZW5ndGggJiYgdGFrZUNvdW50ID09IGxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VXcmFwcGVyVmFsdWUoYXJyYXksIHRoaXMuX19hY3Rpb25zX18pO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuXG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlIChsZW5ndGgtLSAmJiByZXNJbmRleCA8IHRha2VDb3VudCkge1xuICAgICAgICBpbmRleCArPSBkaXI7XG5cbiAgICAgICAgdmFyIGl0ZXJJbmRleCA9IC0xLFxuICAgICAgICAgICAgdmFsdWUgPSBhcnJheVtpbmRleF07XG5cbiAgICAgICAgd2hpbGUgKCsraXRlckluZGV4IDwgaXRlckxlbmd0aCkge1xuICAgICAgICAgIHZhciBkYXRhID0gaXRlcmF0ZWVzW2l0ZXJJbmRleF0sXG4gICAgICAgICAgICAgIGl0ZXJhdGVlID0gZGF0YS5pdGVyYXRlZSxcbiAgICAgICAgICAgICAgdHlwZSA9IGRhdGEudHlwZSxcbiAgICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICAgICAgICBpZiAodHlwZSA9PSBMQVpZX01BUF9GTEFHKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGNvbXB1dGVkO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWNvbXB1dGVkKSB7XG4gICAgICAgICAgICBpZiAodHlwZSA9PSBMQVpZX0ZJTFRFUl9GTEFHKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYnJlYWsgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgYExhenlXcmFwcGVyYCBpcyBhbiBpbnN0YW5jZSBvZiBgYmFzZUxvZGFzaGAuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlID0gYmFzZUNyZWF0ZShiYXNlTG9kYXNoLnByb3RvdHlwZSk7XG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGF6eVdyYXBwZXI7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgaGFzaCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIEhhc2goZW50cmllcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IG5hdGl2ZUNyZWF0ZSA/IG5hdGl2ZUNyZWF0ZShudWxsKSA6IHt9O1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZGVsZXRlXG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gaGFzaCBUaGUgaGFzaCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICAgICAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIGlmIChuYXRpdmVDcmVhdGUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gSEFTSF9VTkRFRklORUQgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpID8gZGF0YVtrZXldIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIHJldHVybiBuYXRpdmVDcmVhdGUgPyAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQpIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaGFzaCBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gICAgICBkYXRhW2tleV0gPSAobmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbiAgICBIYXNoLnByb3RvdHlwZS5jbGVhciA9IGhhc2hDbGVhcjtcbiAgICBIYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBoYXNoRGVsZXRlO1xuICAgIEhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG4gICAgSGFzaC5wcm90b3R5cGUuaGFzID0gaGFzaEhhcztcbiAgICBIYXNoLnByb3RvdHlwZS5zZXQgPSBoYXNoU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBsaXN0IGNhY2hlIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTGlzdENhY2hlKGVudHJpZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xlYXJcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlQ2xlYXIoKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fID0gW107XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RDYWNoZURlbGV0ZShrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBsYXN0SW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gICAgICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgICAgIGRhdGEucG9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gICAgICB9XG4gICAgICAtLXRoaXMuc2l6ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gICAgICByZXR1cm4gaW5kZXggPCAwID8gdW5kZWZpbmVkIDogZGF0YVtpbmRleF1bMV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RDYWNoZUhhcyhrZXkpIHtcbiAgICAgIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICArK3RoaXMuc2l6ZTtcbiAgICAgICAgZGF0YS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYExpc3RDYWNoZWAuXG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuICAgIExpc3RDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbGlzdENhY2hlRGVsZXRlO1xuICAgIExpc3RDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbGlzdENhY2hlR2V0O1xuICAgIExpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuICAgIExpc3RDYWNoZS5wcm90b3R5cGUuc2V0ID0gbGlzdENhY2hlU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xlYXJcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICAgIHRoaXMuX19kYXRhX18gPSB7XG4gICAgICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgICAgICdtYXAnOiBuZXcgKE1hcCB8fCBMaXN0Q2FjaGUpLFxuICAgICAgICAnc3RyaW5nJzogbmV3IEhhc2hcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZGVsZXRlXG4gICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlRGVsZXRlKGtleSkge1xuICAgICAgdmFyIHJlc3VsdCA9IGdldE1hcERhdGEodGhpcywga2V5KVsnZGVsZXRlJ10oa2V5KTtcbiAgICAgIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbWFwIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlR2V0KGtleSkge1xuICAgICAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5nZXQoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlSGFzKGtleSkge1xuICAgICAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBtYXAgYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IGdldE1hcERhdGEodGhpcywga2V5KSxcbiAgICAgICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gICAgICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgICAgIHRoaXMuc2l6ZSArPSBkYXRhLnNpemUgPT0gc2l6ZSA/IDAgOiAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuICAgIE1hcENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBtYXBDYWNoZURlbGV0ZTtcbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcENhY2hlSGFzO1xuICAgIE1hcENhY2hlLnByb3RvdHlwZS5zZXQgPSBtYXBDYWNoZVNldDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBjYWNoZSBvYmplY3QgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBTZXRDYWNoZSh2YWx1ZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHZhbHVlcyA9PSBudWxsID8gMCA6IHZhbHVlcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB0aGlzLmFkZCh2YWx1ZXNbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGB2YWx1ZWAgdG8gdGhlIGFycmF5IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBhZGRcbiAgICAgKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAgICAgKiBAYWxpYXMgcHVzaFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNhY2hlLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldENhY2hlQWRkKHZhbHVlKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fLnNldCh2YWx1ZSwgSEFTSF9VTkRFRklORUQpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gdGhlIGFycmF5IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRDYWNoZUhhcyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgU2V0Q2FjaGVgLlxuICAgIFNldENhY2hlLnByb3RvdHlwZS5hZGQgPSBTZXRDYWNoZS5wcm90b3R5cGUucHVzaCA9IHNldENhY2hlQWRkO1xuICAgIFNldENhY2hlLnByb3RvdHlwZS5oYXMgPSBzZXRDYWNoZUhhcztcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzdGFjayBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBTdGFjayhlbnRyaWVzKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlKGVudHJpZXMpO1xuICAgICAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZTtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIHN0YWNrLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgU3RhY2tcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICAgICAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBzdGFjayB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLmdldChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0hhcyhrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHN0YWNrIGBrZXlgIHRvIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHNldFxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja1NldChrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIExpc3RDYWNoZSkge1xuICAgICAgICB2YXIgcGFpcnMgPSBkYXRhLl9fZGF0YV9fO1xuICAgICAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICAgICAgcGFpcnMucHVzaChba2V5LCB2YWx1ZV0pO1xuICAgICAgICAgIHRoaXMuc2l6ZSA9ICsrZGF0YS5zaXplO1xuICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlKHBhaXJzKTtcbiAgICAgIH1cbiAgICAgIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYFN0YWNrYC5cbiAgICBTdGFjay5wcm90b3R5cGUuY2xlYXIgPSBzdGFja0NsZWFyO1xuICAgIFN0YWNrLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBzdGFja0RlbGV0ZTtcbiAgICBTdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG4gICAgU3RhY2sucHJvdG90eXBlLmhhcyA9IHN0YWNrSGFzO1xuICAgIFN0YWNrLnByb3RvdHlwZS5zZXQgPSBzdGFja1NldDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBpbmhlcml0ZWQgU3BlY2lmeSByZXR1cm5pbmcgaW5oZXJpdGVkIHByb3BlcnR5IG5hbWVzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJyYXlMaWtlS2V5cyh2YWx1ZSwgaW5oZXJpdGVkKSB7XG4gICAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmICFpc0FyZyAmJiBpc0J1ZmZlcih2YWx1ZSksXG4gICAgICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgICAgIHJlc3VsdCA9IHNraXBJbmRleGVzID8gYmFzZVRpbWVzKHZhbHVlLmxlbmd0aCwgU3RyaW5nKSA6IFtdLFxuICAgICAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgICBpZiAoKGluaGVyaXRlZCB8fCBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSAmJlxuICAgICAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgICAgICBrZXkgPT0gJ2xlbmd0aCcgfHxcbiAgICAgICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgICAgICAvLyBQaGFudG9tSlMgMiBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiB0eXBlZCBhcnJheXMuXG4gICAgICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgICAgIGlzSW5kZXgoa2V5LCBsZW5ndGgpXG4gICAgICAgICAgICApKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNhbXBsZWAgZm9yIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJyYXlTYW1wbGUoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYXJyYXlbYmFzZVJhbmRvbSgwLCBsZW5ndGggLSAxKV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNhbXBsZVNpemVgIGZvciBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzYW1wbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJyYXlTYW1wbGVTaXplKGFycmF5LCBuKSB7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYoY29weUFycmF5KGFycmF5KSwgYmFzZUNsYW1wKG4sIDAsIGFycmF5Lmxlbmd0aCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zaHVmZmxlYCBmb3IgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2h1ZmZsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzaHVmZmxlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNodWZmbGUoYXJyYXkpIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihjb3B5QXJyYXkoYXJyYXkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFzc2lnblZhbHVlYCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IGFzc2lnblxuICAgICAqIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgICAgIGlmICgodmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZXEob2JqZWN0W2tleV0sIHZhbHVlKSkgfHxcbiAgICAgICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIGB2YWx1ZWAgdG8gYGtleWAgb2YgYG9iamVjdGAgaWYgdGhlIGV4aXN0aW5nIHZhbHVlIGlzIG5vdCBlcXVpdmFsZW50XG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gICAgICBpZiAoIShoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBlcShvYmpWYWx1ZSwgdmFsdWUpKSB8fFxuICAgICAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBga2V5YCBpcyBmb3VuZCBpbiBgYXJyYXlgIG9mIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gbGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWdncmVnYXRlcyBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAgb24gYGFjY3VtdWxhdG9yYCB3aXRoIGtleXMgdHJhbnNmb3JtZWRcbiAgICAgKiBieSBgaXRlcmF0ZWVgIGFuZCB2YWx1ZXMgc2V0IGJ5IGBzZXR0ZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYGFjY3VtdWxhdG9yYCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBhZ2dyZWdhdGVkIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGFjY3VtdWxhdG9yYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQWdncmVnYXRvcihjb2xsZWN0aW9uLCBzZXR0ZXIsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgICBzZXR0ZXIoYWNjdW11bGF0b3IsIHZhbHVlLCBpdGVyYXRlZSh2YWx1ZSksIGNvbGxlY3Rpb24pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAgICAgKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25JbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gICAgICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXNzaWduSW4ob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBhc3NpZ25WYWx1ZWAgYW5kIGBhc3NpZ25NZXJnZVZhbHVlYCB3aXRob3V0XG4gICAgICogdmFsdWUgY2hlY2tzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgICBpZiAoa2V5ID09ICdfX3Byb3RvX18nICYmIGRlZmluZVByb3BlcnR5KSB7XG4gICAgICAgIGRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAgICAgJ2VudW1lcmFibGUnOiB0cnVlLFxuICAgICAgICAgICd2YWx1ZSc6IHZhbHVlLFxuICAgICAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmF0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWwgcGF0aHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwaWNrZWQgZWxlbWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUF0KG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGhzLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICAgIHNraXAgPSBvYmplY3QgPT0gbnVsbDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W2luZGV4XSA9IHNraXAgPyB1bmRlZmluZWQgOiBnZXQob2JqZWN0LCBwYXRoc1tpbmRleF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jbGFtcGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2xhbXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsb3dlcl0gVGhlIGxvd2VyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY2xhbXBlZCBudW1iZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNsYW1wKG51bWJlciwgbG93ZXIsIHVwcGVyKSB7XG4gICAgICBpZiAobnVtYmVyID09PSBudW1iZXIpIHtcbiAgICAgICAgaWYgKHVwcGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBudW1iZXIgPSBudW1iZXIgPD0gdXBwZXIgPyBudW1iZXIgOiB1cHBlcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG93ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG51bWJlciA9IG51bWJlciA+PSBsb3dlciA/IG51bWJlciA6IGxvd2VyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsb25lYCBhbmQgYF8uY2xvbmVEZWVwYCB3aGljaCB0cmFja3NcbiAgICAgKiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICAgICAqICAxIC0gRGVlcCBjbG9uZVxuICAgICAqICAyIC0gRmxhdHRlbiBpbmhlcml0ZWQgcHJvcGVydGllc1xuICAgICAqICA0IC0gQ2xvbmUgc3ltYm9sc1xuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtrZXldIFRoZSBrZXkgb2YgYHZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIHBhcmVudCBvYmplY3Qgb2YgYHZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIG9iamVjdHMgYW5kIHRoZWlyIGNsb25lIGNvdW50ZXJwYXJ0cy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VDbG9uZSh2YWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCBvYmplY3QsIHN0YWNrKSB7XG4gICAgICB2YXIgcmVzdWx0LFxuICAgICAgICAgIGlzRGVlcCA9IGJpdG1hc2sgJiBDTE9ORV9ERUVQX0ZMQUcsXG4gICAgICAgICAgaXNGbGF0ID0gYml0bWFzayAmIENMT05FX0ZMQVRfRkxBRyxcbiAgICAgICAgICBpc0Z1bGwgPSBiaXRtYXNrICYgQ0xPTkVfU1lNQk9MU19GTEFHO1xuXG4gICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICByZXN1bHQgPSBvYmplY3QgPyBjdXN0b21pemVyKHZhbHVlLCBrZXksIG9iamVjdCwgc3RhY2spIDogY3VzdG9taXplcih2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpO1xuICAgICAgaWYgKGlzQXJyKSB7XG4gICAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUFycmF5KHZhbHVlKTtcbiAgICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgICByZXR1cm4gY29weUFycmF5KHZhbHVlLCByZXN1bHQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKSxcbiAgICAgICAgICAgIGlzRnVuYyA9IHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWc7XG5cbiAgICAgICAgaWYgKGlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBjbG9uZUJ1ZmZlcih2YWx1ZSwgaXNEZWVwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFnID09IG9iamVjdFRhZyB8fCB0YWcgPT0gYXJnc1RhZyB8fCAoaXNGdW5jICYmICFvYmplY3QpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gKGlzRmxhdCB8fCBpc0Z1bmMpID8ge30gOiBpbml0Q2xvbmVPYmplY3QodmFsdWUpO1xuICAgICAgICAgIGlmICghaXNEZWVwKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNGbGF0XG4gICAgICAgICAgICAgID8gY29weVN5bWJvbHNJbih2YWx1ZSwgYmFzZUFzc2lnbkluKHJlc3VsdCwgdmFsdWUpKVxuICAgICAgICAgICAgICA6IGNvcHlTeW1ib2xzKHZhbHVlLCBiYXNlQXNzaWduKHJlc3VsdCwgdmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFjbG9uZWFibGVUYWdzW3RhZ10pIHtcbiAgICAgICAgICAgIHJldHVybiBvYmplY3QgPyB2YWx1ZSA6IHt9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSBpbml0Q2xvbmVCeVRhZyh2YWx1ZSwgdGFnLCBpc0RlZXApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBDaGVjayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcyBhbmQgcmV0dXJuIGl0cyBjb3JyZXNwb25kaW5nIGNsb25lLlxuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KHZhbHVlKTtcbiAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgIHJldHVybiBzdGFja2VkO1xuICAgICAgfVxuICAgICAgc3RhY2suc2V0KHZhbHVlLCByZXN1bHQpO1xuXG4gICAgICBpZiAoaXNTZXQodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUpIHtcbiAgICAgICAgICByZXN1bHQuYWRkKGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3ViVmFsdWUsIHZhbHVlLCBzdGFjaykpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaXNNYXAodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgICAgICAgIHJlc3VsdC5zZXQoa2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB2YXIga2V5c0Z1bmMgPSBpc0Z1bGxcbiAgICAgICAgPyAoaXNGbGF0ID8gZ2V0QWxsS2V5c0luIDogZ2V0QWxsS2V5cylcbiAgICAgICAgOiAoaXNGbGF0ID8ga2V5c0luIDoga2V5cyk7XG5cbiAgICAgIHZhciBwcm9wcyA9IGlzQXJyID8gdW5kZWZpbmVkIDoga2V5c0Z1bmModmFsdWUpO1xuICAgICAgYXJyYXlFYWNoKHByb3BzIHx8IHZhbHVlLCBmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgIGtleSA9IHN1YlZhbHVlO1xuICAgICAgICAgIHN1YlZhbHVlID0gdmFsdWVba2V5XTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBhc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNvbmZvcm1zYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNvbmZvcm1zKHNvdXJjZSkge1xuICAgICAgdmFyIHByb3BzID0ga2V5cyhzb3VyY2UpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIHByb3BzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY29uZm9ybXNUb2Agd2hpY2ggYWNjZXB0cyBgcHJvcHNgIHRvIGNoZWNrLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBjb25mb3JtcywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VDb25mb3Jtc1RvKG9iamVjdCwgc291cmNlLCBwcm9wcykge1xuICAgICAgdmFyIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gIWxlbmd0aDtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBrZXkgPSBwcm9wc1tsZW5ndGhdLFxuICAgICAgICAgICAgcHJlZGljYXRlID0gc291cmNlW2tleV0sXG4gICAgICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgIGlmICgodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSB8fCAhcHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZGVsYXlgIGFuZCBgXy5kZWZlcmAgd2hpY2ggYWNjZXB0cyBgYXJnc2BcbiAgICAgKiB0byBwcm92aWRlIHRvIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVsYXkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHdhaXQgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkgaW52b2NhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gcHJvdmlkZSB0byBgZnVuY2AuXG4gICAgICogQHJldHVybnMge251bWJlcnxPYmplY3R9IFJldHVybnMgdGhlIHRpbWVyIGlkIG9yIHRpbWVvdXQgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VEZWxheShmdW5jLCB3YWl0LCBhcmdzKSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpIHsgZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3MpOyB9LCB3YWl0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uZGlmZmVyZW5jZWAgd2l0aG91dCBzdXBwb3J0XG4gICAgICogZm9yIGV4Y2x1ZGluZyBtdWx0aXBsZSBhcnJheXMgb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRGlmZmVyZW5jZShhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzLFxuICAgICAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gW10sXG4gICAgICAgICAgdmFsdWVzTGVuZ3RoID0gdmFsdWVzLmxlbmd0aDtcblxuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICB2YWx1ZXMgPSBhcnJheU1hcCh2YWx1ZXMsIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICAgICAgfVxuICAgICAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHZhbHVlcy5sZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgICAgICBpbmNsdWRlcyA9IGNhY2hlSGFzO1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMgPSBuZXcgU2V0Q2FjaGUodmFsdWVzKTtcbiAgICAgIH1cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA9PSBudWxsID8gdmFsdWUgOiBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICAgICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgICAgIGlmIChpc0NvbW1vbiAmJiBjb21wdXRlZCA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICB2YXIgdmFsdWVzSW5kZXggPSB2YWx1ZXNMZW5ndGg7XG4gICAgICAgICAgd2hpbGUgKHZhbHVlc0luZGV4LS0pIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZXNbdmFsdWVzSW5kZXhdID09PSBjb21wdXRlZCkge1xuICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFpbmNsdWRlcyh2YWx1ZXMsIGNvbXB1dGVkLCBjb21wYXJhdG9yKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JFYWNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICAgICAqL1xuICAgIHZhciBiYXNlRWFjaCA9IGNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd24pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yRWFjaFJpZ2h0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICAgICAqL1xuICAgIHZhciBiYXNlRWFjaFJpZ2h0ID0gY3JlYXRlQmFzZUVhY2goYmFzZUZvck93blJpZ2h0LCB0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmV2ZXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYWxsIGVsZW1lbnRzIHBhc3MgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUV2ZXJ5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHRydWU7XG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0ID0gISFwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8ubWF4YCBhbmQgYF8ubWluYCB3aGljaCBhY2NlcHRzIGFcbiAgICAgKiBgY29tcGFyYXRvcmAgdG8gZGV0ZXJtaW5lIHRoZSBleHRyZW11bSB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgdXNlZCB0byBjb21wYXJlIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZXh0cmVtdW0gdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUV4dHJlbXVtKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjdXJyZW50ID0gaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgICAgIGlmIChjdXJyZW50ICE9IG51bGwgJiYgKGNvbXB1dGVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyAoY3VycmVudCA9PT0gY3VycmVudCAmJiAhaXNTeW1ib2woY3VycmVudCkpXG4gICAgICAgICAgICAgIDogY29tcGFyYXRvcihjdXJyZW50LCBjb21wdXRlZClcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICB2YXIgY29tcHV0ZWQgPSBjdXJyZW50LFxuICAgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maWxsYCB3aXRob3V0IGFuIGl0ZXJhdGVlIGNhbGwgZ3VhcmQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmaWxsLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGZpbGwgYGFycmF5YCB3aXRoLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRmlsbChhcnJheSwgdmFsdWUsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIHN0YXJ0ID0gdG9JbnRlZ2VyKHN0YXJ0KTtcbiAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgc3RhcnQgPSAtc3RhcnQgPiBsZW5ndGggPyAwIDogKGxlbmd0aCArIHN0YXJ0KTtcbiAgICAgIH1cbiAgICAgIGVuZCA9IChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiBsZW5ndGgpID8gbGVuZ3RoIDogdG9JbnRlZ2VyKGVuZCk7XG4gICAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgICBlbmQgKz0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgZW5kID0gc3RhcnQgPiBlbmQgPyAwIDogdG9MZW5ndGgoZW5kKTtcbiAgICAgIHdoaWxlIChzdGFydCA8IGVuZCkge1xuICAgICAgICBhcnJheVtzdGFydCsrXSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbHRlcmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZpbHRlcihjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mbGF0dGVuYCB3aXRoIHN1cHBvcnQgZm9yIHJlc3RyaWN0aW5nIGZsYXR0ZW5pbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbcHJlZGljYXRlPWlzRmxhdHRlbmFibGVdIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNTdHJpY3RdIFJlc3RyaWN0IHRvIHZhbHVlcyB0aGF0IHBhc3MgYHByZWRpY2F0ZWAgY2hlY2tzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgICAgIHJlc3VsdCB8fCAocmVzdWx0ID0gW10pO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICAgIGlmIChkZXB0aCA+IDAgJiYgcHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgICAgIGlmIChkZXB0aCA+IDEpIHtcbiAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgICAgICBiYXNlRmxhdHRlbih2YWx1ZSwgZGVwdGggLSAxLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFpc1N0cmljdCkge1xuICAgICAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBiYXNlRm9yT3duYCB3aGljaCBpdGVyYXRlcyBvdmVyIGBvYmplY3RgXG4gICAgICogcHJvcGVydGllcyByZXR1cm5lZCBieSBga2V5c0Z1bmNgIGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuXG4gICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIHZhciBiYXNlRm9yID0gY3JlYXRlQmFzZUZvcigpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBiYXNlRm9yYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIHByb3BlcnRpZXNcbiAgICAgKiBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgdmFyIGJhc2VGb3JSaWdodCA9IGNyZWF0ZUJhc2VGb3IodHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3Iob2JqZWN0LCBpdGVyYXRlZSwga2V5cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yT3duUmlnaHRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZvck93blJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvclJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZ1bmN0aW9uc2Agd2hpY2ggY3JlYXRlcyBhbiBhcnJheSBvZlxuICAgICAqIGBvYmplY3RgIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZpbHRlcmVkIGZyb20gYHByb3BzYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGZpbHRlci5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGdW5jdGlvbnMob2JqZWN0LCBwcm9wcykge1xuICAgICAgcmV0dXJuIGFycmF5RmlsdGVyKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24ob2JqZWN0W2tleV0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZ2V0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZmF1bHQgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUdldChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAob2JqZWN0ICE9IG51bGwgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgb2JqZWN0ID0gb2JqZWN0W3RvS2V5KHBhdGhbaW5kZXgrK10pXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoaW5kZXggJiYgaW5kZXggPT0gbGVuZ3RoKSA/IG9iamVjdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0QWxsS2V5c2AgYW5kIGBnZXRBbGxLZXlzSW5gIHdoaWNoIHVzZXNcbiAgICAgKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAgICAgKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBrZXlzRnVuYyhvYmplY3QpO1xuICAgICAgcmV0dXJuIGlzQXJyYXkob2JqZWN0KSA/IHJlc3VsdCA6IGFycmF5UHVzaChyZXN1bHQsIHN5bWJvbHNGdW5jKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgICAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICAgICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZ3RgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUd0KHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID4gb3RoZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUhhcyhvYmplY3QsIGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc0luYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUhhc0luKG9iamVjdCwga2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYga2V5IGluIE9iamVjdChvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmluUmFuZ2VgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBudW1iZXJgIGlzIGluIHRoZSByYW5nZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJblJhbmdlKG51bWJlciwgc3RhcnQsIGVuZCkge1xuICAgICAgcmV0dXJuIG51bWJlciA+PSBuYXRpdmVNaW4oc3RhcnQsIGVuZCkgJiYgbnVtYmVyIDwgbmF0aXZlTWF4KHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gLCB3aXRob3V0IHN1cHBvcnRcbiAgICAgKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgdGhhdCBhY2NlcHRzIGFuIGFycmF5IG9mIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheXMgVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2Ygc2hhcmVkIHZhbHVlcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW50ZXJzZWN0aW9uKGFycmF5cywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmNsdWRlcyA9IGNvbXBhcmF0b3IgPyBhcnJheUluY2x1ZGVzV2l0aCA6IGFycmF5SW5jbHVkZXMsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXlzWzBdLmxlbmd0aCxcbiAgICAgICAgICBvdGhMZW5ndGggPSBhcnJheXMubGVuZ3RoLFxuICAgICAgICAgIG90aEluZGV4ID0gb3RoTGVuZ3RoLFxuICAgICAgICAgIGNhY2hlcyA9IEFycmF5KG90aExlbmd0aCksXG4gICAgICAgICAgbWF4TGVuZ3RoID0gSW5maW5pdHksXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIHdoaWxlIChvdGhJbmRleC0tKSB7XG4gICAgICAgIHZhciBhcnJheSA9IGFycmF5c1tvdGhJbmRleF07XG4gICAgICAgIGlmIChvdGhJbmRleCAmJiBpdGVyYXRlZSkge1xuICAgICAgICAgIGFycmF5ID0gYXJyYXlNYXAoYXJyYXksIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICAgICAgICB9XG4gICAgICAgIG1heExlbmd0aCA9IG5hdGl2ZU1pbihhcnJheS5sZW5ndGgsIG1heExlbmd0aCk7XG4gICAgICAgIGNhY2hlc1tvdGhJbmRleF0gPSAhY29tcGFyYXRvciAmJiAoaXRlcmF0ZWUgfHwgKGxlbmd0aCA+PSAxMjAgJiYgYXJyYXkubGVuZ3RoID49IDEyMCkpXG4gICAgICAgICAgPyBuZXcgU2V0Q2FjaGUob3RoSW5kZXggJiYgYXJyYXkpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBhcnJheSA9IGFycmF5c1swXTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgc2VlbiA9IGNhY2hlc1swXTtcblxuICAgICAgb3V0ZXI6XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCAmJiByZXN1bHQubGVuZ3RoIDwgbWF4TGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKCEoc2VlblxuICAgICAgICAgICAgICA/IGNhY2hlSGFzKHNlZW4sIGNvbXB1dGVkKVxuICAgICAgICAgICAgICA6IGluY2x1ZGVzKHJlc3VsdCwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgb3RoSW5kZXggPSBvdGhMZW5ndGg7XG4gICAgICAgICAgd2hpbGUgKC0tb3RoSW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBjYWNoZSA9IGNhY2hlc1tvdGhJbmRleF07XG4gICAgICAgICAgICBpZiAoIShjYWNoZVxuICAgICAgICAgICAgICAgICAgPyBjYWNoZUhhcyhjYWNoZSwgY29tcHV0ZWQpXG4gICAgICAgICAgICAgICAgICA6IGluY2x1ZGVzKGFycmF5c1tvdGhJbmRleF0sIGNvbXB1dGVkLCBjb21wYXJhdG9yKSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzZWVuKSB7XG4gICAgICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW52ZXJ0YCBhbmQgYF8uaW52ZXJ0QnlgIHdoaWNoIGludmVydHNcbiAgICAgKiBgb2JqZWN0YCB3aXRoIHZhbHVlcyB0cmFuc2Zvcm1lZCBieSBgaXRlcmF0ZWVgIGFuZCBzZXQgYnkgYHNldHRlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYGFjY3VtdWxhdG9yYCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGludmVydGVkIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGFjY3VtdWxhdG9yYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW52ZXJ0ZXIob2JqZWN0LCBzZXR0ZXIsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgICBzZXR0ZXIoYWNjdW11bGF0b3IsIGl0ZXJhdGVlKHZhbHVlKSwga2V5LCBvYmplY3QpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW52b2tlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAgICAgKiBtZXRob2QgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2UuXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSB0aGUgbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUludm9rZShvYmplY3QsIHBhdGgsIGFyZ3MpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgICAgb2JqZWN0ID0gcGFyZW50KG9iamVjdCwgcGF0aCk7XG4gICAgICB2YXIgZnVuYyA9IG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogb2JqZWN0W3RvS2V5KGxhc3QocGF0aCkpXTtcbiAgICAgIHJldHVybiBmdW5jID09IG51bGwgPyB1bmRlZmluZWQgOiBhcHBseShmdW5jLCBvYmplY3QsIGFyZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJnc1RhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FycmF5QnVmZmVyYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXkgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzQXJyYXlCdWZmZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFycmF5QnVmZmVyVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRGF0ZWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZGF0ZSBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNEYXRlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBkYXRlVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAgICAgKiBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICAgICAqICAxIC0gVW5vcmRlcmVkIGNvbXBhcmlzb25cbiAgICAgKiAgMiAtIFBhcnRpYWwgY29tcGFyaXNvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYHZhbHVlYCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgICAgaWYgKHZhbHVlID09PSBvdGhlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IG90aGVyID09IG51bGwgfHwgKCFpc09iamVjdExpa2UodmFsdWUpICYmICFpc09iamVjdExpa2Uob3RoZXIpKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlSXNFcXVhbERlZXAodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBiYXNlSXNFcXVhbCwgc3RhY2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAgICAgKiBkZWVwIGNvbXBhcmlzb25zIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gICAgICogcmVmZXJlbmNlcyB0byBiZSBjb21wYXJlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgICAgdmFyIG9iaklzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgICAgIG90aElzQXJyID0gaXNBcnJheShvdGhlciksXG4gICAgICAgICAgb2JqVGFnID0gb2JqSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvYmplY3QpLFxuICAgICAgICAgIG90aFRhZyA9IG90aElzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob3RoZXIpO1xuXG4gICAgICBvYmpUYWcgPSBvYmpUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG9ialRhZztcbiAgICAgIG90aFRhZyA9IG90aFRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb3RoVGFnO1xuXG4gICAgICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgICAgIG90aElzT2JqID0gb3RoVGFnID09IG9iamVjdFRhZyxcbiAgICAgICAgICBpc1NhbWVUYWcgPSBvYmpUYWcgPT0gb3RoVGFnO1xuXG4gICAgICBpZiAoaXNTYW1lVGFnICYmIGlzQnVmZmVyKG9iamVjdCkpIHtcbiAgICAgICAgaWYgKCFpc0J1ZmZlcihvdGhlcikpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgb2JqSXNBcnIgPSB0cnVlO1xuICAgICAgICBvYmpJc09iaiA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGlzU2FtZVRhZyAmJiAhb2JqSXNPYmopIHtcbiAgICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgICAgcmV0dXJuIChvYmpJc0FyciB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KSlcbiAgICAgICAgICA/IGVxdWFsQXJyYXlzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spXG4gICAgICAgICAgOiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIG9ialRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgICB9XG4gICAgICBpZiAoIShiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcpKSB7XG4gICAgICAgIHZhciBvYmpJc1dyYXBwZWQgPSBvYmpJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgJ19fd3JhcHBlZF9fJyksXG4gICAgICAgICAgICBvdGhJc1dyYXBwZWQgPSBvdGhJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCAnX193cmFwcGVkX18nKTtcblxuICAgICAgICBpZiAob2JqSXNXcmFwcGVkIHx8IG90aElzV3JhcHBlZCkge1xuICAgICAgICAgIHZhciBvYmpVbndyYXBwZWQgPSBvYmpJc1dyYXBwZWQgPyBvYmplY3QudmFsdWUoKSA6IG9iamVjdCxcbiAgICAgICAgICAgICAgb3RoVW53cmFwcGVkID0gb3RoSXNXcmFwcGVkID8gb3RoZXIudmFsdWUoKSA6IG90aGVyO1xuXG4gICAgICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgICAgICByZXR1cm4gZXF1YWxGdW5jKG9ialVud3JhcHBlZCwgb3RoVW53cmFwcGVkLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghaXNTYW1lVGFnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICByZXR1cm4gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWFwYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNNYXAodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gbWFwVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWF0Y2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBtYXRjaERhdGEgVGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIHRvIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSwgY3VzdG9taXplcikge1xuICAgICAgdmFyIGluZGV4ID0gbWF0Y2hEYXRhLmxlbmd0aCxcbiAgICAgICAgICBsZW5ndGggPSBpbmRleCxcbiAgICAgICAgICBub0N1c3RvbWl6ZXIgPSAhY3VzdG9taXplcjtcblxuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAhbGVuZ3RoO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgICAgIGlmICgobm9DdXN0b21pemVyICYmIGRhdGFbMl0pXG4gICAgICAgICAgICAgID8gZGF0YVsxXSAhPT0gb2JqZWN0W2RhdGFbMF1dXG4gICAgICAgICAgICAgIDogIShkYXRhWzBdIGluIG9iamVjdClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgICAgIHZhciBrZXkgPSBkYXRhWzBdLFxuICAgICAgICAgICAgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgICAgIHNyY1ZhbHVlID0gZGF0YVsxXTtcblxuICAgICAgICBpZiAobm9DdXN0b21pemVyICYmIGRhdGFbMl0pIHtcbiAgICAgICAgICBpZiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBzdGFjayA9IG5ldyBTdGFjaztcbiAgICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjayk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghKHJlc3VsdCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBiYXNlSXNFcXVhbChzcmNWYWx1ZSwgb2JqVmFsdWUsIENPTVBBUkVfUEFSVElBTF9GTEFHIHwgQ09NUEFSRV9VTk9SREVSRURfRkxBRywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICAgICAgICAgOiByZXN1bHRcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYXRpdmVgIHdpdGhvdXQgYmFkIHNoaW0gY2hlY2tzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICAgICAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbih2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yO1xuICAgICAgcmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzUmVnRXhwYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSByZWdleHAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNSZWdFeHAodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHJlZ2V4cFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1NldGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzU2V0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IHNldFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICAgICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW2Jhc2VHZXRUYWcodmFsdWUpXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pdGVyYXRlZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gW3ZhbHVlPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGFuIGl0ZXJhdGVlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgaXRlcmF0ZWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUl0ZXJhdGVlKHZhbHVlKSB7XG4gICAgICAvLyBEb24ndCBzdG9yZSB0aGUgYHR5cGVvZmAgcmVzdWx0IGluIGEgdmFyaWFibGUgdG8gYXZvaWQgYSBKSVQgYnVnIGluIFNhZmFyaSA5LlxuICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwMzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gaWRlbnRpdHk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBpc0FycmF5KHZhbHVlKVxuICAgICAgICAgID8gYmFzZU1hdGNoZXNQcm9wZXJ0eSh2YWx1ZVswXSwgdmFsdWVbMV0pXG4gICAgICAgICAgOiBiYXNlTWF0Y2hlcyh2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gICAgICBpZiAoIWlzUHJvdG90eXBlKG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZUtleXMob2JqZWN0KTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNJbmAgd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCkge1xuICAgICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVLZXlzSW4ob2JqZWN0KTtcbiAgICAgIH1cbiAgICAgIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubHRgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUx0KHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlIDwgb3RoZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWFwYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICByZXN1bHQgPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IEFycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKSA6IFtdO1xuXG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJlc3VsdFsrK2luZGV4XSA9IGl0ZXJhdGVlKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hdGNoZXNgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNvdXJjZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWF0Y2hlcyhzb3VyY2UpIHtcbiAgICAgIHZhciBtYXRjaERhdGEgPSBnZXRNYXRjaERhdGEoc291cmNlKTtcbiAgICAgIGlmIChtYXRjaERhdGEubGVuZ3RoID09IDEgJiYgbWF0Y2hEYXRhWzBdWzJdKSB7XG4gICAgICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShtYXRjaERhdGFbMF1bMF0sIG1hdGNoRGF0YVswXVsxXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPT09IHNvdXJjZSB8fCBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc1Byb3BlcnR5YCB3aGljaCBkb2Vzbid0IGNsb25lIGBzcmNWYWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWF0Y2hlc1Byb3BlcnR5KHBhdGgsIHNyY1ZhbHVlKSB7XG4gICAgICBpZiAoaXNLZXkocGF0aCkgJiYgaXNTdHJpY3RDb21wYXJhYmxlKHNyY1ZhbHVlKSkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUodG9LZXkocGF0aCksIHNyY1ZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgdmFyIG9ialZhbHVlID0gZ2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICAgIHJldHVybiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBvYmpWYWx1ZSA9PT0gc3JjVmFsdWUpXG4gICAgICAgICAgPyBoYXNJbihvYmplY3QsIHBhdGgpXG4gICAgICAgICAgOiBiYXNlSXNFcXVhbChzcmNWYWx1ZSwgb2JqVmFsdWUsIENPTVBBUkVfUEFSVElBTF9GTEFHIHwgQ09NUEFSRV9VTk9SREVSRURfRkxBRyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lcmdlYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgbWVyZ2VkIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplciwgc3RhY2spIHtcbiAgICAgIGlmIChvYmplY3QgPT09IHNvdXJjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBiYXNlRm9yKHNvdXJjZSwgZnVuY3Rpb24oc3JjVmFsdWUsIGtleSkge1xuICAgICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgICBpZiAoaXNPYmplY3Qoc3JjVmFsdWUpKSB7XG4gICAgICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICAgICAgPyBjdXN0b21pemVyKHNhZmVHZXQob2JqZWN0LCBrZXkpLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LCBrZXlzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZU1lcmdlYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gICAgICogZGVlcCBtZXJnZXMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAgICAgKiByZWZlcmVuY2VzIHRvIGJlIG1lcmdlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBtZXJnZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG1lcmdlRnVuYyBUaGUgZnVuY3Rpb24gdG8gbWVyZ2UgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgbWVyZ2VGdW5jLCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgICAgdmFyIG9ialZhbHVlID0gc2FmZUdldChvYmplY3QsIGtleSksXG4gICAgICAgICAgc3JjVmFsdWUgPSBzYWZlR2V0KHNvdXJjZSwga2V5KSxcbiAgICAgICAgICBzdGFja2VkID0gc3RhY2suZ2V0KHNyY1ZhbHVlKTtcblxuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgc3RhY2tlZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgPyBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGlzQ29tbW9uKSB7XG4gICAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkoc3JjVmFsdWUpLFxuICAgICAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmIGlzQnVmZmVyKHNyY1ZhbHVlKSxcbiAgICAgICAgICAgIGlzVHlwZWQgPSAhaXNBcnIgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkoc3JjVmFsdWUpO1xuXG4gICAgICAgIG5ld1ZhbHVlID0gc3JjVmFsdWU7XG4gICAgICAgIGlmIChpc0FyciB8fCBpc0J1ZmYgfHwgaXNUeXBlZCkge1xuICAgICAgICAgIGlmIChpc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoaXNBcnJheUxpa2VPYmplY3Qob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGNvcHlBcnJheShvYmpWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGlzQnVmZikge1xuICAgICAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChpc1R5cGVkKSB7XG4gICAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBjbG9uZVR5cGVkQXJyYXkoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gW107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qoc3JjVmFsdWUpIHx8IGlzQXJndW1lbnRzKHNyY1ZhbHVlKSkge1xuICAgICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICAgICAgaWYgKGlzQXJndW1lbnRzKG9ialZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSB0b1BsYWluT2JqZWN0KG9ialZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoIWlzT2JqZWN0KG9ialZhbHVlKSB8fCBpc0Z1bmN0aW9uKG9ialZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBpbml0Q2xvbmVPYmplY3Qoc3JjVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXNDb21tb24pIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIHN0YWNrLnNldChzcmNWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgICBtZXJnZUZ1bmMobmV3VmFsdWUsIHNyY1ZhbHVlLCBzcmNJbmRleCwgY3VzdG9taXplciwgc3RhY2spO1xuICAgICAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICAgICAgfVxuICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm50aGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJldHVybi5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbnRoIGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTnRoKGFycmF5LCBuKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbiArPSBuIDwgMCA/IGxlbmd0aCA6IDA7XG4gICAgICByZXR1cm4gaXNJbmRleChuLCBsZW5ndGgpID8gYXJyYXlbbl0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ub3JkZXJCeWAgd2l0aG91dCBwYXJhbSBndWFyZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9uW118T2JqZWN0W118c3RyaW5nW119IGl0ZXJhdGVlcyBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gb3JkZXJzIFRoZSBzb3J0IG9yZGVycyBvZiBgaXRlcmF0ZWVzYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgaXRlcmF0ZWVzLCBvcmRlcnMpIHtcbiAgICAgIGlmIChpdGVyYXRlZXMubGVuZ3RoKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgICBpZiAoaXNBcnJheShpdGVyYXRlZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgICByZXR1cm4gYmFzZUdldCh2YWx1ZSwgaXRlcmF0ZWUubGVuZ3RoID09PSAxID8gaXRlcmF0ZWVbMF0gOiBpdGVyYXRlZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpdGVyYXRlZTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVyYXRlZXMgPSBbaWRlbnRpdHldO1xuICAgICAgfVxuXG4gICAgICB2YXIgaW5kZXggPSAtMTtcbiAgICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKTtcblxuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VNYXAoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgICB2YXIgY3JpdGVyaWEgPSBhcnJheU1hcChpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICAgICAgcmV0dXJuIGl0ZXJhdGVlKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7ICdjcml0ZXJpYSc6IGNyaXRlcmlhLCAnaW5kZXgnOiArK2luZGV4LCAndmFsdWUnOiB2YWx1ZSB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBiYXNlU29ydEJ5KHJlc3VsdCwgZnVuY3Rpb24ob2JqZWN0LCBvdGhlcikge1xuICAgICAgICByZXR1cm4gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5waWNrYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAgICAgKiBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgICAgIHJldHVybiBoYXNJbihvYmplY3QsIHBhdGgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgIGBfLnBpY2tCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgcGF0aCA9IHBhdGhzW2luZGV4XSxcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuXG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIHBhdGgpKSB7XG4gICAgICAgICAgYmFzZVNldChyZXN1bHQsIGNhc3RQYXRoKHBhdGgsIG9iamVjdCksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VQcm9wZXJ0eWAgd2hpY2ggc3VwcG9ydHMgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHVsbEFsbEJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gICAgICogc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4T2YgPSBjb21wYXJhdG9yID8gYmFzZUluZGV4T2ZXaXRoIDogYmFzZUluZGV4T2YsXG4gICAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICAgIHNlZW4gPSBhcnJheTtcblxuICAgICAgaWYgKGFycmF5ID09PSB2YWx1ZXMpIHtcbiAgICAgICAgdmFsdWVzID0gY29weUFycmF5KHZhbHVlcyk7XG4gICAgICB9XG4gICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgc2VlbiA9IGFycmF5TWFwKGFycmF5LCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBmcm9tSW5kZXggPSAwLFxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZXNbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHdoaWxlICgoZnJvbUluZGV4ID0gaW5kZXhPZihzZWVuLCBjb21wdXRlZCwgZnJvbUluZGV4LCBjb21wYXJhdG9yKSkgPiAtMSkge1xuICAgICAgICAgIGlmIChzZWVuICE9PSBhcnJheSkge1xuICAgICAgICAgICAgc3BsaWNlLmNhbGwoc2VlbiwgZnJvbUluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3BsaWNlLmNhbGwoYXJyYXksIGZyb21JbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wdWxsQXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIGluZGV4ZXMgb3IgY2FwdHVyaW5nIHRoZSByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IGluZGV4ZXMgVGhlIGluZGV4ZXMgb2YgZWxlbWVudHMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQdWxsQXQoYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA/IGluZGV4ZXMubGVuZ3RoIDogMCxcbiAgICAgICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGluZGV4ID0gaW5kZXhlc1tsZW5ndGhdO1xuICAgICAgICBpZiAobGVuZ3RoID09IGxhc3RJbmRleCB8fCBpbmRleCAhPT0gcHJldmlvdXMpIHtcbiAgICAgICAgICB2YXIgcHJldmlvdXMgPSBpbmRleDtcbiAgICAgICAgICBpZiAoaXNJbmRleChpbmRleCkpIHtcbiAgICAgICAgICAgIHNwbGljZS5jYWxsKGFycmF5LCBpbmRleCwgMSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2VVbnNldChhcnJheSwgaW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmRvbWAgd2l0aG91dCBzdXBwb3J0IGZvciByZXR1cm5pbmdcbiAgICAgKiBmbG9hdGluZy1wb2ludCBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbG93ZXIgVGhlIGxvd2VyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcmFuZG9tIG51bWJlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUmFuZG9tKGxvd2VyLCB1cHBlcikge1xuICAgICAgcmV0dXJuIGxvd2VyICsgbmF0aXZlRmxvb3IobmF0aXZlUmFuZG9tKCkgKiAodXBwZXIgLSBsb3dlciArIDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yYW5nZWAgYW5kIGBfLnJhbmdlUmlnaHRgIHdoaWNoIGRvZXNuJ3RcbiAgICAgKiBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGVwIFRoZSB2YWx1ZSB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUmFuZ2Uoc3RhcnQsIGVuZCwgc3RlcCwgZnJvbVJpZ2h0KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgobmF0aXZlQ2VpbCgoZW5kIC0gc3RhcnQpIC8gKHN0ZXAgfHwgMSkpLCAwKSxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgcmVzdWx0W2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdID0gc3RhcnQ7XG4gICAgICAgIHN0YXJ0ICs9IHN0ZXA7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlcGVhdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gcmVwZWF0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmVwZWF0IHRoZSBzdHJpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmVwZWF0ZWQgc3RyaW5nLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSZXBlYXQoc3RyaW5nLCBuKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgICBpZiAoIXN0cmluZyB8fCBuIDwgMSB8fCBuID4gTUFYX1NBRkVfSU5URUdFUikge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgLy8gTGV2ZXJhZ2UgdGhlIGV4cG9uZW50aWF0aW9uIGJ5IHNxdWFyaW5nIGFsZ29yaXRobSBmb3IgYSBmYXN0ZXIgcmVwZWF0LlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4cG9uZW50aWF0aW9uX2J5X3NxdWFyaW5nIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICBkbyB7XG4gICAgICAgIGlmIChuICUgMikge1xuICAgICAgICAgIHJlc3VsdCArPSBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgbiA9IG5hdGl2ZUZsb29yKG4gLyAyKTtcbiAgICAgICAgaWYgKG4pIHtcbiAgICAgICAgICBzdHJpbmcgKz0gc3RyaW5nO1xuICAgICAgICB9XG4gICAgICB9IHdoaWxlIChuKTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgc3RhcnQsIGlkZW50aXR5KSwgZnVuYyArICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zYW1wbGVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTYW1wbGUoY29sbGVjdGlvbikge1xuICAgICAgcmV0dXJuIGFycmF5U2FtcGxlKHZhbHVlcyhjb2xsZWN0aW9uKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2FtcGxlU2l6ZWAgd2l0aG91dCBwYXJhbSBndWFyZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2FtcGxlU2l6ZShjb2xsZWN0aW9uLCBuKSB7XG4gICAgICB2YXIgYXJyYXkgPSB2YWx1ZXMoY29sbGVjdGlvbik7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYoYXJyYXksIGJhc2VDbGFtcChuLCAwLCBhcnJheS5sZW5ndGgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zZXRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfVxuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDEsXG4gICAgICAgICAgbmVzdGVkID0gb2JqZWN0O1xuXG4gICAgICB3aGlsZSAobmVzdGVkICE9IG51bGwgJiYgKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pLFxuICAgICAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAoa2V5ID09PSAnX19wcm90b19fJyB8fCBrZXkgPT09ICdjb25zdHJ1Y3RvcicgfHwga2V5ID09PSAncHJvdG90eXBlJykge1xuICAgICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZXggIT0gbGFzdEluZGV4KSB7XG4gICAgICAgICAgdmFyIG9ialZhbHVlID0gbmVzdGVkW2tleV07XG4gICAgICAgICAgbmV3VmFsdWUgPSBjdXN0b21pemVyID8gY3VzdG9taXplcihvYmpWYWx1ZSwga2V5LCBuZXN0ZWQpIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGlzT2JqZWN0KG9ialZhbHVlKVxuICAgICAgICAgICAgICA/IG9ialZhbHVlXG4gICAgICAgICAgICAgIDogKGlzSW5kZXgocGF0aFtpbmRleCArIDFdKSA/IFtdIDoge30pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhc3NpZ25WYWx1ZShuZXN0ZWQsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICBuZXN0ZWQgPSBuZXN0ZWRba2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldERhdGFgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSBtZXRhZGF0YSB3aXRoLlxuICAgICAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZVNldERhdGEgPSAhbWV0YU1hcCA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgZGF0YSkge1xuICAgICAgbWV0YU1hcC5zZXQoZnVuYywgZGF0YSk7XG4gICAgICByZXR1cm4gZnVuYztcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldFRvU3RyaW5nYCB3aXRob3V0IHN1cHBvcnQgZm9yIGhvdCBsb29wIHNob3J0aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBiYXNlU2V0VG9TdHJpbmcgPSAhZGVmaW5lUHJvcGVydHkgPyBpZGVudGl0eSA6IGZ1bmN0aW9uKGZ1bmMsIHN0cmluZykge1xuICAgICAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAgICdlbnVtZXJhYmxlJzogZmFsc2UsXG4gICAgICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zaHVmZmxlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2h1ZmZsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzaHVmZmxlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2h1ZmZsZShjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYodmFsdWVzKGNvbGxlY3Rpb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zbGljZWAgd2l0aG91dCBhbiBpdGVyYXRlZSBjYWxsIGd1YXJkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICAgICAgfVxuICAgICAgZW5kID0gZW5kID4gbGVuZ3RoID8gbGVuZ3RoIDogZW5kO1xuICAgICAgaWYgKGVuZCA8IDApIHtcbiAgICAgICAgZW5kICs9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGxlbmd0aCA9IHN0YXJ0ID4gZW5kID8gMCA6ICgoZW5kIC0gc3RhcnQpID4+PiAwKTtcbiAgICAgIHN0YXJ0ID4+Pj0gMDtcblxuICAgICAgdmFyIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbaW5kZXhdID0gYXJyYXlbaW5kZXggKyBzdGFydF07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvbWVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb21lKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdDtcblxuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgICByZXR1cm4gIXJlc3VsdDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuICEhcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRlZEluZGV4YCBhbmQgYF8uc29ydGVkTGFzdEluZGV4YCB3aGljaFxuICAgICAqIHBlcmZvcm1zIGEgYmluYXJ5IHNlYXJjaCBvZiBgYXJyYXlgIHRvIGRldGVybWluZSB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYFxuICAgICAqIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG8gbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXRIaWdoZXN0XSBTcGVjaWZ5IHJldHVybmluZyB0aGUgaGlnaGVzdCBxdWFsaWZpZWQgaW5kZXguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHJldEhpZ2hlc3QpIHtcbiAgICAgIHZhciBsb3cgPSAwLFxuICAgICAgICAgIGhpZ2ggPSBhcnJheSA9PSBudWxsID8gbG93IDogYXJyYXkubGVuZ3RoO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09PSB2YWx1ZSAmJiBoaWdoIDw9IEhBTEZfTUFYX0FSUkFZX0xFTkdUSCkge1xuICAgICAgICB3aGlsZSAobG93IDwgaGlnaCkge1xuICAgICAgICAgIHZhciBtaWQgPSAobG93ICsgaGlnaCkgPj4+IDEsXG4gICAgICAgICAgICAgIGNvbXB1dGVkID0gYXJyYXlbbWlkXTtcblxuICAgICAgICAgIGlmIChjb21wdXRlZCAhPT0gbnVsbCAmJiAhaXNTeW1ib2woY29tcHV0ZWQpICYmXG4gICAgICAgICAgICAgIChyZXRIaWdoZXN0ID8gKGNvbXB1dGVkIDw9IHZhbHVlKSA6IChjb21wdXRlZCA8IHZhbHVlKSkpIHtcbiAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhpZ2ggPSBtaWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoaWdoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaWRlbnRpdHksIHJldEhpZ2hlc3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRlZEluZGV4QnlgIGFuZCBgXy5zb3J0ZWRMYXN0SW5kZXhCeWBcbiAgICAgKiB3aGljaCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGVcbiAgICAgKiB0aGVpciBzb3J0IHJhbmtpbmcuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbcmV0SGlnaGVzdF0gU3BlY2lmeSByZXR1cm5pbmcgdGhlIGhpZ2hlc3QgcXVhbGlmaWVkIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGl0ZXJhdGVlLCByZXRIaWdoZXN0KSB7XG4gICAgICB2YXIgbG93ID0gMCxcbiAgICAgICAgICBoaWdoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoaGlnaCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgdmFsdWUgPSBpdGVyYXRlZSh2YWx1ZSk7XG4gICAgICB2YXIgdmFsSXNOYU4gPSB2YWx1ZSAhPT0gdmFsdWUsXG4gICAgICAgICAgdmFsSXNOdWxsID0gdmFsdWUgPT09IG51bGwsXG4gICAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSksXG4gICAgICAgICAgdmFsSXNVbmRlZmluZWQgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gICAgICB3aGlsZSAobG93IDwgaGlnaCkge1xuICAgICAgICB2YXIgbWlkID0gbmF0aXZlRmxvb3IoKGxvdyArIGhpZ2gpIC8gMiksXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKGFycmF5W21pZF0pLFxuICAgICAgICAgICAgb3RoSXNEZWZpbmVkID0gY29tcHV0ZWQgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG90aElzTnVsbCA9IGNvbXB1dGVkID09PSBudWxsLFxuICAgICAgICAgICAgb3RoSXNSZWZsZXhpdmUgPSBjb21wdXRlZCA9PT0gY29tcHV0ZWQsXG4gICAgICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKGNvbXB1dGVkKTtcblxuICAgICAgICBpZiAodmFsSXNOYU4pIHtcbiAgICAgICAgICB2YXIgc2V0TG93ID0gcmV0SGlnaGVzdCB8fCBvdGhJc1JlZmxleGl2ZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxJc1VuZGVmaW5lZCkge1xuICAgICAgICAgIHNldExvdyA9IG90aElzUmVmbGV4aXZlICYmIChyZXRIaWdoZXN0IHx8IG90aElzRGVmaW5lZCk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsSXNOdWxsKSB7XG4gICAgICAgICAgc2V0TG93ID0gb3RoSXNSZWZsZXhpdmUgJiYgb3RoSXNEZWZpbmVkICYmIChyZXRIaWdoZXN0IHx8ICFvdGhJc051bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbElzU3ltYm9sKSB7XG4gICAgICAgICAgc2V0TG93ID0gb3RoSXNSZWZsZXhpdmUgJiYgb3RoSXNEZWZpbmVkICYmICFvdGhJc051bGwgJiYgKHJldEhpZ2hlc3QgfHwgIW90aElzU3ltYm9sKTtcbiAgICAgICAgfSBlbHNlIGlmIChvdGhJc051bGwgfHwgb3RoSXNTeW1ib2wpIHtcbiAgICAgICAgICBzZXRMb3cgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRMb3cgPSByZXRIaWdoZXN0ID8gKGNvbXB1dGVkIDw9IHZhbHVlKSA6IChjb21wdXRlZCA8IHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2V0TG93KSB7XG4gICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoaWdoID0gbWlkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmF0aXZlTWluKGhpZ2gsIE1BWF9BUlJBWV9JTkRFWCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkVW5pcWAgYW5kIGBfLnNvcnRlZFVuaXFCeWAgd2l0aG91dFxuICAgICAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvcnRlZFVuaXEoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgaWYgKCFpbmRleCB8fCAhZXEoY29tcHV0ZWQsIHNlZW4pKSB7XG4gICAgICAgICAgdmFyIHNlZW4gPSBjb21wdXRlZDtcbiAgICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZSA9PT0gMCA/IDAgOiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b051bWJlcmAgd2hpY2ggZG9lc24ndCBlbnN1cmUgY29ycmVjdFxuICAgICAqIGNvbnZlcnNpb25zIG9mIGJpbmFyeSwgaGV4YWRlY2ltYWwsIG9yIG9jdGFsIHN0cmluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VUb051bWJlcih2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBOQU47XG4gICAgICB9XG4gICAgICByZXR1cm4gK3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvU3RyaW5nYCB3aGljaCBkb2Vzbid0IGNvbnZlcnQgbnVsbGlzaFxuICAgICAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgICAgIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIGJhc2VUb1N0cmluZykgKyAnJztcbiAgICAgIH1cbiAgICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gICAgICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5pcUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXMsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgICAgICByZXN1bHQgPSBbXSxcbiAgICAgICAgICBzZWVuID0gcmVzdWx0O1xuXG4gICAgICBpZiAoY29tcGFyYXRvcikge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAobGVuZ3RoID49IExBUkdFX0FSUkFZX1NJWkUpIHtcbiAgICAgICAgdmFyIHNldCA9IGl0ZXJhdGVlID8gbnVsbCA6IGNyZWF0ZVNldChhcnJheSk7XG4gICAgICAgIGlmIChzZXQpIHtcbiAgICAgICAgICByZXR1cm4gc2V0VG9BcnJheShzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIGluY2x1ZGVzID0gY2FjaGVIYXM7XG4gICAgICAgIHNlZW4gPSBuZXcgU2V0Q2FjaGU7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgc2VlbiA9IGl0ZXJhdGVlID8gW10gOiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgICAgIHZhciBzZWVuSW5kZXggPSBzZWVuLmxlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoc2VlbkluZGV4LS0pIHtcbiAgICAgICAgICAgIGlmIChzZWVuW3NlZW5JbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaW5jbHVkZXMoc2VlbiwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICAgICAgaWYgKHNlZW4gIT09IHJlc3VsdCkge1xuICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuc2V0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcHJvcGVydHkgcGF0aCB0byB1bnNldC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IGlzIGRlbGV0ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVW5zZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICAgIG9iamVjdCA9IHBhcmVudChvYmplY3QsIHBhdGgpO1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsIHx8IGRlbGV0ZSBvYmplY3RbdG9LZXkobGFzdChwYXRoKSldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVwZGF0ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHVwZGF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVXBkYXRlKG9iamVjdCwgcGF0aCwgdXBkYXRlciwgY3VzdG9taXplcikge1xuICAgICAgcmV0dXJuIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB1cGRhdGVyKGJhc2VHZXQob2JqZWN0LCBwYXRoKSksIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5kcm9wV2hpbGVgIGFuZCBgXy50YWtlV2hpbGVgXG4gICAgICogd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEcm9wXSBTcGVjaWZ5IGRyb3BwaW5nIGVsZW1lbnRzIGluc3RlYWQgb2YgdGFraW5nIHRoZW0uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VXaGlsZShhcnJheSwgcHJlZGljYXRlLCBpc0Ryb3AsIGZyb21SaWdodCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xO1xuXG4gICAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSAmJlxuICAgICAgICBwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7fVxuXG4gICAgICByZXR1cm4gaXNEcm9wXG4gICAgICAgID8gYmFzZVNsaWNlKGFycmF5LCAoZnJvbVJpZ2h0ID8gMCA6IGluZGV4KSwgKGZyb21SaWdodCA/IGluZGV4ICsgMSA6IGxlbmd0aCkpXG4gICAgICAgIDogYmFzZVNsaWNlKGFycmF5LCAoZnJvbVJpZ2h0ID8gaW5kZXggKyAxIDogMCksIChmcm9tUmlnaHQgPyBsZW5ndGggOiBpbmRleCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGB3cmFwcGVyVmFsdWVgIHdoaWNoIHJldHVybnMgdGhlIHJlc3VsdCBvZlxuICAgICAqIHBlcmZvcm1pbmcgYSBzZXF1ZW5jZSBvZiBhY3Rpb25zIG9uIHRoZSB1bndyYXBwZWQgYHZhbHVlYCwgd2hlcmUgZWFjaFxuICAgICAqIHN1Y2Nlc3NpdmUgYWN0aW9uIGlzIHN1cHBsaWVkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHByZXZpb3VzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHtBcnJheX0gYWN0aW9ucyBBY3Rpb25zIHRvIHBlcmZvcm0gdG8gcmVzb2x2ZSB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlV3JhcHBlclZhbHVlKHZhbHVlLCBhY3Rpb25zKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdmFsdWU7XG4gICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnZhbHVlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXlSZWR1Y2UoYWN0aW9ucywgZnVuY3Rpb24ocmVzdWx0LCBhY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGFjdGlvbi5mdW5jLmFwcGx5KGFjdGlvbi50aGlzQXJnLCBhcnJheVB1c2goW3Jlc3VsdF0sIGFjdGlvbi5hcmdzKSk7XG4gICAgICB9LCByZXN1bHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy54b3JgLCB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcywgdGhhdCBhY2NlcHRzIGFuIGFycmF5IG9mIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheXMgVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgdmFsdWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VYb3IoYXJyYXlzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5cy5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVVuaXEoYXJyYXlzWzBdKSA6IFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGFycmF5ID0gYXJyYXlzW2luZGV4XSxcbiAgICAgICAgICAgIG90aEluZGV4ID0gLTE7XG5cbiAgICAgICAgd2hpbGUgKCsrb3RoSW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBpZiAob3RoSW5kZXggIT0gaW5kZXgpIHtcbiAgICAgICAgICAgIHJlc3VsdFtpbmRleF0gPSBiYXNlRGlmZmVyZW5jZShyZXN1bHRbaW5kZXhdIHx8IGFycmF5LCBhcnJheXNbb3RoSW5kZXhdLCBpdGVyYXRlZSwgY29tcGFyYXRvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4ocmVzdWx0LCAxKSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy56aXBPYmplY3RgIHdoaWNoIGFzc2lnbnMgdmFsdWVzIHVzaW5nIGBhc3NpZ25GdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbkZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlWmlwT2JqZWN0KHByb3BzLCB2YWx1ZXMsIGFzc2lnbkZ1bmMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aCxcbiAgICAgICAgICB2YWxzTGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSB7fTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5kZXggPCB2YWxzTGVuZ3RoID8gdmFsdWVzW2luZGV4XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgYXNzaWduRnVuYyhyZXN1bHQsIHByb3BzW2luZGV4XSwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIHRvIGFuIGVtcHR5IGFycmF5IGlmIGl0J3Mgbm90IGFuIGFycmF5IGxpa2Ugb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgdGhlIGNhc3QgYXJyYXktbGlrZSBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdEFycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSA/IHZhbHVlIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCB0byBgaWRlbnRpdHlgIGlmIGl0J3Mgbm90IGEgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGNhc3QgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdEZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicgPyB2YWx1ZSA6IGlkZW50aXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RQYXRoKHZhbHVlLCBvYmplY3QpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNLZXkodmFsdWUsIG9iamVjdCkgPyBbdmFsdWVdIDogc3RyaW5nVG9QYXRoKHRvU3RyaW5nKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBgYmFzZVJlc3RgIGFsaWFzIHdoaWNoIGNhbiBiZSByZXBsYWNlZCB3aXRoIGBpZGVudGl0eWAgYnkgbW9kdWxlXG4gICAgICogcmVwbGFjZW1lbnQgcGx1Z2lucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHR5cGUge0Z1bmN0aW9ufVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgdmFyIGNhc3RSZXN0ID0gYmFzZVJlc3Q7XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgYXJyYXlgIHRvIGEgc2xpY2UgaWYgaXQncyBuZWVkZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBzbGljZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0U2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IGVuZDtcbiAgICAgIHJldHVybiAoIXN0YXJ0ICYmIGVuZCA+PSBsZW5ndGgpID8gYXJyYXkgOiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIHRoZSBnbG9iYWwgW2BjbGVhclRpbWVvdXRgXShodHRwczovL21kbi5pby9jbGVhclRpbWVvdXQpLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcnxPYmplY3R9IGlkIFRoZSB0aW1lciBpZCBvciB0aW1lb3V0IG9iamVjdCBvZiB0aGUgdGltZXIgdG8gY2xlYXIuXG4gICAgICovXG4gICAgdmFyIGNsZWFyVGltZW91dCA9IGN0eENsZWFyVGltZW91dCB8fCBmdW5jdGlvbihpZCkge1xuICAgICAgcmV0dXJuIHJvb3QuY2xlYXJUaW1lb3V0KGlkKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mICBgYnVmZmVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmZlciBUaGUgYnVmZmVyIHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICAgICAgaWYgKGlzRGVlcCkge1xuICAgICAgICByZXR1cm4gYnVmZmVyLnNsaWNlKCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBhbGxvY1Vuc2FmZSA/IGFsbG9jVW5zYWZlKGxlbmd0aCkgOiBuZXcgYnVmZmVyLmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgICAgIGJ1ZmZlci5jb3B5KHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgYXJyYXlCdWZmZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBhcnJheUJ1ZmZlciBUaGUgYXJyYXkgYnVmZmVyIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGFycmF5IGJ1ZmZlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IGFycmF5QnVmZmVyLmNvbnN0cnVjdG9yKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGBkYXRhVmlld2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhVmlldyBUaGUgZGF0YSB2aWV3IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGRhdGEgdmlldy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZURhdGFWaWV3KGRhdGFWaWV3LCBpc0RlZXApIHtcbiAgICAgIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcikgOiBkYXRhVmlldy5idWZmZXI7XG4gICAgICByZXR1cm4gbmV3IGRhdGFWaWV3LmNvbnN0cnVjdG9yKGJ1ZmZlciwgZGF0YVZpZXcuYnl0ZU9mZnNldCwgZGF0YVZpZXcuYnl0ZUxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHJlZ2V4cC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgcmVnZXhwLmNvbnN0cnVjdG9yKHJlZ2V4cC5zb3VyY2UsIHJlRmxhZ3MuZXhlYyhyZWdleHApKTtcbiAgICAgIHJlc3VsdC5sYXN0SW5kZXggPSByZWdleHAubGFzdEluZGV4O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGBzeW1ib2xgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHN5bWJvbCBUaGUgc3ltYm9sIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgc3ltYm9sIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVN5bWJvbChzeW1ib2wpIHtcbiAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mID8gT2JqZWN0KHN5bWJvbFZhbHVlT2YuY2FsbChzeW1ib2wpKSA6IHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgdHlwZWRBcnJheWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlZEFycmF5IFRoZSB0eXBlZCBhcnJheSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB0eXBlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSwgaXNEZWVwKSB7XG4gICAgICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcih0eXBlZEFycmF5LmJ1ZmZlcikgOiB0eXBlZEFycmF5LmJ1ZmZlcjtcbiAgICAgIHJldHVybiBuZXcgdHlwZWRBcnJheS5jb25zdHJ1Y3RvcihidWZmZXIsIHR5cGVkQXJyYXkuYnl0ZU9mZnNldCwgdHlwZWRBcnJheS5sZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBhcmVzIHZhbHVlcyB0byBzb3J0IHRoZW0gaW4gYXNjZW5kaW5nIG9yZGVyLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGB2YWx1ZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcGFyZUFzY2VuZGluZyh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gb3RoZXIpIHtcbiAgICAgICAgdmFyIHZhbElzRGVmaW5lZCA9IHZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICB2YWxJc051bGwgPSB2YWx1ZSA9PT0gbnVsbCxcbiAgICAgICAgICAgIHZhbElzUmVmbGV4aXZlID0gdmFsdWUgPT09IHZhbHVlLFxuICAgICAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSk7XG5cbiAgICAgICAgdmFyIG90aElzRGVmaW5lZCA9IG90aGVyICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICBvdGhJc051bGwgPSBvdGhlciA9PT0gbnVsbCxcbiAgICAgICAgICAgIG90aElzUmVmbGV4aXZlID0gb3RoZXIgPT09IG90aGVyLFxuICAgICAgICAgICAgb3RoSXNTeW1ib2wgPSBpc1N5bWJvbChvdGhlcik7XG5cbiAgICAgICAgaWYgKCghb3RoSXNOdWxsICYmICFvdGhJc1N5bWJvbCAmJiAhdmFsSXNTeW1ib2wgJiYgdmFsdWUgPiBvdGhlcikgfHxcbiAgICAgICAgICAgICh2YWxJc1N5bWJvbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUgJiYgIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wpIHx8XG4gICAgICAgICAgICAodmFsSXNOdWxsICYmIG90aElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgICAgICghdmFsSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgIXZhbElzUmVmbGV4aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCghdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCAmJiAhb3RoSXNTeW1ib2wgJiYgdmFsdWUgPCBvdGhlcikgfHxcbiAgICAgICAgICAgIChvdGhJc1N5bWJvbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUgJiYgIXZhbElzTnVsbCAmJiAhdmFsSXNTeW1ib2wpIHx8XG4gICAgICAgICAgICAob3RoSXNOdWxsICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgICAgICghb3RoSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgIW90aElzUmVmbGV4aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGJ5IGBfLm9yZGVyQnlgIHRvIGNvbXBhcmUgbXVsdGlwbGUgcHJvcGVydGllcyBvZiBhIHZhbHVlIHRvIGFub3RoZXJcbiAgICAgKiBhbmQgc3RhYmxlIHNvcnQgdGhlbS5cbiAgICAgKlxuICAgICAqIElmIGBvcmRlcnNgIGlzIHVuc3BlY2lmaWVkLCBhbGwgdmFsdWVzIGFyZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLiBPdGhlcndpc2UsXG4gICAgICogc3BlY2lmeSBhbiBvcmRlciBvZiBcImRlc2NcIiBmb3IgZGVzY2VuZGluZyBvciBcImFzY1wiIGZvciBhc2NlbmRpbmcgc29ydCBvcmRlclxuICAgICAqIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbltdfHN0cmluZ1tdfSBvcmRlcnMgVGhlIG9yZGVyIHRvIHNvcnQgYnkgZm9yIGVhY2ggcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVNdWx0aXBsZShvYmplY3QsIG90aGVyLCBvcmRlcnMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIG9iakNyaXRlcmlhID0gb2JqZWN0LmNyaXRlcmlhLFxuICAgICAgICAgIG90aENyaXRlcmlhID0gb3RoZXIuY3JpdGVyaWEsXG4gICAgICAgICAgbGVuZ3RoID0gb2JqQ3JpdGVyaWEubGVuZ3RoLFxuICAgICAgICAgIG9yZGVyc0xlbmd0aCA9IG9yZGVycy5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjb21wYXJlQXNjZW5kaW5nKG9iakNyaXRlcmlhW2luZGV4XSwgb3RoQ3JpdGVyaWFbaW5kZXhdKTtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIGlmIChpbmRleCA+PSBvcmRlcnNMZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBvcmRlciA9IG9yZGVyc1tpbmRleF07XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdCAqIChvcmRlciA9PSAnZGVzYycgPyAtMSA6IDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBGaXhlcyBhbiBgQXJyYXkjc29ydGAgYnVnIGluIHRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgYXBwbGljYXRpb25zXG4gICAgICAvLyB0aGF0IGNhdXNlcyBpdCwgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCB0byBwcm92aWRlIHRoZSBzYW1lIHZhbHVlIGZvclxuICAgICAgLy8gYG9iamVjdGAgYW5kIGBvdGhlcmAuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvcHVsbC8xMjQ3XG4gICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgLy9cbiAgICAgIC8vIFRoaXMgYWxzbyBlbnN1cmVzIGEgc3RhYmxlIHNvcnQgaW4gVjggYW5kIG90aGVyIGVuZ2luZXMuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9OTAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIHJldHVybiBvYmplY3QuaW5kZXggLSBvdGhlci5pbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IHRoYXQgaXMgdGhlIGNvbXBvc2l0aW9uIG9mIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cyxcbiAgICAgKiBwbGFjZWhvbGRlcnMsIGFuZCBwcm92aWRlZCBhcmd1bWVudHMgaW50byBhIHNpbmdsZSBhcnJheSBvZiBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQuXG4gICAgICogQHBhcmFtIHtBcnJheX0gaG9sZGVycyBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbXMge2Jvb2xlYW59IFtpc0N1cnJpZWRdIFNwZWNpZnkgY29tcG9zaW5nIGZvciBhIGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tcG9zZWQgYXJndW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBvc2VBcmdzKGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpIHtcbiAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGgsXG4gICAgICAgICAgaG9sZGVyc0xlbmd0aCA9IGhvbGRlcnMubGVuZ3RoLFxuICAgICAgICAgIGxlZnRJbmRleCA9IC0xLFxuICAgICAgICAgIGxlZnRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgcmFuZ2VMZW5ndGggPSBuYXRpdmVNYXgoYXJnc0xlbmd0aCAtIGhvbGRlcnNMZW5ndGgsIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlZnRMZW5ndGggKyByYW5nZUxlbmd0aCksXG4gICAgICAgICAgaXNVbmN1cnJpZWQgPSAhaXNDdXJyaWVkO1xuXG4gICAgICB3aGlsZSAoKytsZWZ0SW5kZXggPCBsZWZ0TGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtsZWZ0SW5kZXhdID0gcGFydGlhbHNbbGVmdEluZGV4XTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2FyZ3NJbmRleCA8IGhvbGRlcnNMZW5ndGgpIHtcbiAgICAgICAgaWYgKGlzVW5jdXJyaWVkIHx8IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGgpIHtcbiAgICAgICAgICByZXN1bHRbaG9sZGVyc1thcmdzSW5kZXhdXSA9IGFyZ3NbYXJnc0luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgd2hpbGUgKHJhbmdlTGVuZ3RoLS0pIHtcbiAgICAgICAgcmVzdWx0W2xlZnRJbmRleCsrXSA9IGFyZ3NbYXJnc0luZGV4KytdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGNvbXBvc2VBcmdzYCBleGNlcHQgdGhhdCB0aGUgYXJndW1lbnRzIGNvbXBvc2l0aW9uXG4gICAgICogaXMgdGFpbG9yZWQgZm9yIGBfLnBhcnRpYWxSaWdodGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIGFwcGVuZCB0byB0aG9zZSBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBob2xkZXJzIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtcyB7Ym9vbGVhbn0gW2lzQ3VycmllZF0gU3BlY2lmeSBjb21wb3NpbmcgZm9yIGEgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21wb3NlZCBhcmd1bWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcG9zZUFyZ3NSaWdodChhcmdzLCBwYXJ0aWFscywgaG9sZGVycywgaXNDdXJyaWVkKSB7XG4gICAgICB2YXIgYXJnc0luZGV4ID0gLTEsXG4gICAgICAgICAgYXJnc0xlbmd0aCA9IGFyZ3MubGVuZ3RoLFxuICAgICAgICAgIGhvbGRlcnNJbmRleCA9IC0xLFxuICAgICAgICAgIGhvbGRlcnNMZW5ndGggPSBob2xkZXJzLmxlbmd0aCxcbiAgICAgICAgICByaWdodEluZGV4ID0gLTEsXG4gICAgICAgICAgcmlnaHRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgcmFuZ2VMZW5ndGggPSBuYXRpdmVNYXgoYXJnc0xlbmd0aCAtIGhvbGRlcnNMZW5ndGgsIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KHJhbmdlTGVuZ3RoICsgcmlnaHRMZW5ndGgpLFxuICAgICAgICAgIGlzVW5jdXJyaWVkID0gIWlzQ3VycmllZDtcblxuICAgICAgd2hpbGUgKCsrYXJnc0luZGV4IDwgcmFuZ2VMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W2FyZ3NJbmRleF0gPSBhcmdzW2FyZ3NJbmRleF07XG4gICAgICB9XG4gICAgICB2YXIgb2Zmc2V0ID0gYXJnc0luZGV4O1xuICAgICAgd2hpbGUgKCsrcmlnaHRJbmRleCA8IHJpZ2h0TGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtvZmZzZXQgKyByaWdodEluZGV4XSA9IHBhcnRpYWxzW3JpZ2h0SW5kZXhdO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraG9sZGVyc0luZGV4IDwgaG9sZGVyc0xlbmd0aCkge1xuICAgICAgICBpZiAoaXNVbmN1cnJpZWQgfHwgYXJnc0luZGV4IDwgYXJnc0xlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdFtvZmZzZXQgKyBob2xkZXJzW2hvbGRlcnNJbmRleF1dID0gYXJnc1thcmdzSW5kZXgrK107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIHRoZSB2YWx1ZXMgb2YgYHNvdXJjZWAgdG8gYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyBmcm9tLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheT1bXV0gVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIHRvLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlBcnJheShzb3VyY2UsIGFycmF5KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuXG4gICAgICBhcnJheSB8fCAoYXJyYXkgPSBBcnJheShsZW5ndGgpKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGFycmF5W2luZGV4XSA9IHNvdXJjZVtpbmRleF07XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG8uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gICAgICB2YXIgaXNOZXcgPSAhb2JqZWN0O1xuICAgICAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgICAgPyBjdXN0b21pemVyKG9iamVjdFtrZXldLCBzb3VyY2Vba2V5XSwga2V5LCBvYmplY3QsIHNvdXJjZSlcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG5ld1ZhbHVlID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTmV3KSB7XG4gICAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgb3duIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5U3ltYm9scyhzb3VyY2UsIG9iamVjdCkge1xuICAgICAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIG93biBhbmQgaW5oZXJpdGVkIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5U3ltYm9sc0luKHNvdXJjZSwgb2JqZWN0KSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHNJbihzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmdyb3VwQnlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBhY2N1bXVsYXRvciB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2luaXRpYWxpemVyXSBUaGUgYWNjdW11bGF0b3Igb2JqZWN0IGluaXRpYWxpemVyLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFnZ3JlZ2F0b3IgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQWdncmVnYXRvcihzZXR0ZXIsIGluaXRpYWxpemVyKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlBZ2dyZWdhdG9yIDogYmFzZUFnZ3JlZ2F0b3IsXG4gICAgICAgICAgICBhY2N1bXVsYXRvciA9IGluaXRpYWxpemVyID8gaW5pdGlhbGl6ZXIoKSA6IHt9O1xuXG4gICAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIHNldHRlciwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpLCBhY2N1bXVsYXRvcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFzc2lnbmVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgICAgICBjdXN0b21pemVyID0gbGVuZ3RoID4gMSA/IHNvdXJjZXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgID8gKGxlbmd0aC0tLCBjdXN0b21pemVyKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgICAgICBjdXN0b21pemVyID0gbGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IGN1c3RvbWl6ZXI7XG4gICAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgYmFzZUVhY2hgIG9yIGBiYXNlRWFjaFJpZ2h0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBhIGNvbGxlY3Rpb24uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVCYXNlRWFjaChlYWNoRnVuYywgZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICByZXR1cm4gZWFjaEZ1bmMoY29sbGVjdGlvbiwgaXRlcmF0ZWUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aCxcbiAgICAgICAgICAgIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTEsXG4gICAgICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcblxuICAgICAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgICAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtpbmRleF0sIGluZGV4LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSwga2V5c0Z1bmMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICAgICAgcHJvcHMgPSBrZXlzRnVuYyhvYmplY3QpLFxuICAgICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICAgIHZhciBrZXkgPSBwcm9wc1tmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XTtcbiAgICAgICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVba2V5XSwga2V5LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIHRoZSBvcHRpb25hbCBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIGB0aGlzQXJnYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVCaW5kKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcpIHtcbiAgICAgIHZhciBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgQ3RvciA9IGNyZWF0ZUN0b3IoZnVuYyk7XG5cbiAgICAgIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgICAgIHZhciBmbiA9ICh0aGlzICYmIHRoaXMgIT09IHJvb3QgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpID8gQ3RvciA6IGZ1bmM7XG4gICAgICAgIHJldHVybiBmbi5hcHBseShpc0JpbmQgPyB0aGlzQXJnIDogdGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmxvd2VyRmlyc3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZSBUaGUgbmFtZSBvZiB0aGUgYFN0cmluZ2AgY2FzZSBtZXRob2QgdG8gdXNlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhc2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ2FzZUZpcnN0KG1ldGhvZE5hbWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcblxuICAgICAgICB2YXIgc3RyU3ltYm9scyA9IGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgICAgICAgID8gc3RyaW5nVG9BcnJheShzdHJpbmcpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgdmFyIGNociA9IHN0clN5bWJvbHNcbiAgICAgICAgICA/IHN0clN5bWJvbHNbMF1cbiAgICAgICAgICA6IHN0cmluZy5jaGFyQXQoMCk7XG5cbiAgICAgICAgdmFyIHRyYWlsaW5nID0gc3RyU3ltYm9sc1xuICAgICAgICAgID8gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDEpLmpvaW4oJycpXG4gICAgICAgICAgOiBzdHJpbmcuc2xpY2UoMSk7XG5cbiAgICAgICAgcmV0dXJuIGNoclttZXRob2ROYW1lXSgpICsgdHJhaWxpbmc7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmNhbWVsQ2FzZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBjb21iaW5lIGVhY2ggd29yZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3VuZGVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvdW5kZXIoY2FsbGJhY2spIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGFycmF5UmVkdWNlKHdvcmRzKGRlYnVycihzdHJpbmcpLnJlcGxhY2UocmVBcG9zLCAnJykpLCBjYWxsYmFjaywgJycpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwcm9kdWNlcyBhbiBpbnN0YW5jZSBvZiBgQ3RvcmAgcmVnYXJkbGVzcyBvZlxuICAgICAqIHdoZXRoZXIgaXQgd2FzIGludm9rZWQgYXMgcGFydCBvZiBhIGBuZXdgIGV4cHJlc3Npb24gb3IgYnkgYGNhbGxgIG9yIGBhcHBseWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IEN0b3IgVGhlIGNvbnN0cnVjdG9yIHRvIHdyYXAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDdG9yKEN0b3IpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gVXNlIGEgYHN3aXRjaGAgc3RhdGVtZW50IHRvIHdvcmsgd2l0aCBjbGFzcyBjb25zdHJ1Y3RvcnMuIFNlZVxuICAgICAgICAvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWZ1bmN0aW9uLW9iamVjdHMtY2FsbC10aGlzYXJndW1lbnQtYXJndW1lbnRzbGlzdFxuICAgICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDdG9yO1xuICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0pO1xuICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgICAgICAgIGNhc2UgNDogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pO1xuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0pO1xuICAgICAgICAgIGNhc2UgNjogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0sIGFyZ3NbNV0pO1xuICAgICAgICAgIGNhc2UgNzogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0sIGFyZ3NbNV0sIGFyZ3NbNl0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0aGlzQmluZGluZyA9IGJhc2VDcmVhdGUoQ3Rvci5wcm90b3R5cGUpLFxuICAgICAgICAgICAgcmVzdWx0ID0gQ3Rvci5hcHBseSh0aGlzQmluZGluZywgYXJncyk7XG5cbiAgICAgICAgLy8gTWltaWMgdGhlIGNvbnN0cnVjdG9yJ3MgYHJldHVybmAgYmVoYXZpb3IuXG4gICAgICAgIC8vIFNlZSBodHRwczovL2VzNS5naXRodWIuaW8vI3gxMy4yLjIgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgcmV0dXJuIGlzT2JqZWN0KHJlc3VsdCkgPyByZXN1bHQgOiB0aGlzQmluZGluZztcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGVuYWJsZSBjdXJyeWluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhcml0eSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ3VycnkoZnVuYywgYml0bWFzaywgYXJpdHkpIHtcbiAgICAgIHZhciBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXIgPSBnZXRIb2xkZXIod3JhcHBlcik7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGhvbGRlcnMgPSAobGVuZ3RoIDwgMyAmJiBhcmdzWzBdICE9PSBwbGFjZWhvbGRlciAmJiBhcmdzW2xlbmd0aCAtIDFdICE9PSBwbGFjZWhvbGRlcilcbiAgICAgICAgICA/IFtdXG4gICAgICAgICAgOiByZXBsYWNlSG9sZGVycyhhcmdzLCBwbGFjZWhvbGRlcik7XG5cbiAgICAgICAgbGVuZ3RoIC09IGhvbGRlcnMubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoIDwgYXJpdHkpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlUmVjdXJyeShcbiAgICAgICAgICAgIGZ1bmMsIGJpdG1hc2ssIGNyZWF0ZUh5YnJpZCwgd3JhcHBlci5wbGFjZWhvbGRlciwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgYXJncywgaG9sZGVycywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGFyaXR5IC0gbGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZm4gPSAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSA/IEN0b3IgOiBmdW5jO1xuICAgICAgICByZXR1cm4gYXBwbHkoZm4sIHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLmZpbmRgIG9yIGBfLmZpbmRMYXN0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZmluZEluZGV4RnVuYyBUaGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29sbGVjdGlvbiBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmaW5kIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUZpbmQoZmluZEluZGV4RnVuYykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gICAgICAgIHZhciBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcbiAgICAgICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHZhciBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyk7XG4gICAgICAgICAgY29sbGVjdGlvbiA9IGtleXMoY29sbGVjdGlvbik7XG4gICAgICAgICAgcHJlZGljYXRlID0gZnVuY3Rpb24oa2V5KSB7IHJldHVybiBpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKTsgfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaW5kZXggPSBmaW5kSW5kZXhGdW5jKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KTtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gLTEgPyBpdGVyYWJsZVtpdGVyYXRlZSA/IGNvbGxlY3Rpb25baW5kZXhdIDogaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8uZmxvd2Agb3IgYF8uZmxvd1JpZ2h0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmxvdyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVGbG93KGZyb21SaWdodCkge1xuICAgICAgcmV0dXJuIGZsYXRSZXN0KGZ1bmN0aW9uKGZ1bmNzKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSBmdW5jcy5sZW5ndGgsXG4gICAgICAgICAgICBpbmRleCA9IGxlbmd0aCxcbiAgICAgICAgICAgIHByZXJlcSA9IExvZGFzaFdyYXBwZXIucHJvdG90eXBlLnRocnU7XG5cbiAgICAgICAgaWYgKGZyb21SaWdodCkge1xuICAgICAgICAgIGZ1bmNzLnJldmVyc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICAgIHZhciBmdW5jID0gZnVuY3NbaW5kZXhdO1xuICAgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwcmVyZXEgJiYgIXdyYXBwZXIgJiYgZ2V0RnVuY05hbWUoZnVuYykgPT0gJ3dyYXBwZXInKSB7XG4gICAgICAgICAgICB2YXIgd3JhcHBlciA9IG5ldyBMb2Rhc2hXcmFwcGVyKFtdLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSB3cmFwcGVyID8gaW5kZXggOiBsZW5ndGg7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgZnVuYyA9IGZ1bmNzW2luZGV4XTtcblxuICAgICAgICAgIHZhciBmdW5jTmFtZSA9IGdldEZ1bmNOYW1lKGZ1bmMpLFxuICAgICAgICAgICAgICBkYXRhID0gZnVuY05hbWUgPT0gJ3dyYXBwZXInID8gZ2V0RGF0YShmdW5jKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIGlmIChkYXRhICYmIGlzTGF6aWFibGUoZGF0YVswXSkgJiZcbiAgICAgICAgICAgICAgICBkYXRhWzFdID09IChXUkFQX0FSWV9GTEFHIHwgV1JBUF9DVVJSWV9GTEFHIHwgV1JBUF9QQVJUSUFMX0ZMQUcgfCBXUkFQX1JFQVJHX0ZMQUcpICYmXG4gICAgICAgICAgICAgICAgIWRhdGFbNF0ubGVuZ3RoICYmIGRhdGFbOV0gPT0gMVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgIHdyYXBwZXIgPSB3cmFwcGVyW2dldEZ1bmNOYW1lKGRhdGFbMF0pXS5hcHBseSh3cmFwcGVyLCBkYXRhWzNdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd3JhcHBlciA9IChmdW5jLmxlbmd0aCA9PSAxICYmIGlzTGF6aWFibGUoZnVuYykpXG4gICAgICAgICAgICAgID8gd3JhcHBlcltmdW5jTmFtZV0oKVxuICAgICAgICAgICAgICA6IHdyYXBwZXIudGhydShmdW5jKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgICAgICB2YWx1ZSA9IGFyZ3NbMF07XG5cbiAgICAgICAgICBpZiAod3JhcHBlciAmJiBhcmdzLmxlbmd0aCA9PSAxICYmIGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcHBlci5wbGFudCh2YWx1ZSkudmFsdWUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICAgICAgcmVzdWx0ID0gbGVuZ3RoID8gZnVuY3NbaW5kZXhdLmFwcGx5KHRoaXMsIGFyZ3MpIDogdmFsdWU7XG5cbiAgICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZnVuY3NbaW5kZXhdLmNhbGwodGhpcywgcmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBpbnZva2UgaXQgd2l0aCBvcHRpb25hbCBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIGB0aGlzQXJnYCwgcGFydGlhbCBhcHBsaWNhdGlvbiwgYW5kIGN1cnJ5aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gZnVuYyBUaGUgZnVuY3Rpb24gb3IgbWV0aG9kIG5hbWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNSaWdodF0gVGhlIGFyZ3VtZW50cyB0byBhcHBlbmQgdG8gdGhvc2UgcHJvdmlkZWRcbiAgICAgKiAgdG8gdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc1JpZ2h0XSBUaGUgYHBhcnRpYWxzUmlnaHRgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGhlIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJ5XSBUaGUgYXJpdHkgY2FwIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlSHlicmlkKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQXJ5ID0gYml0bWFzayAmIFdSQVBfQVJZX0ZMQUcsXG4gICAgICAgICAgaXNCaW5kID0gYml0bWFzayAmIFdSQVBfQklORF9GTEFHLFxuICAgICAgICAgIGlzQmluZEtleSA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfS0VZX0ZMQUcsXG4gICAgICAgICAgaXNDdXJyaWVkID0gYml0bWFzayAmIChXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpLFxuICAgICAgICAgIGlzRmxpcCA9IGJpdG1hc2sgJiBXUkFQX0ZMSVBfRkxBRyxcbiAgICAgICAgICBDdG9yID0gaXNCaW5kS2V5ID8gdW5kZWZpbmVkIDogY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgICAgYXJnc1tpbmRleF0gPSBhcmd1bWVudHNbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0N1cnJpZWQpIHtcbiAgICAgICAgICB2YXIgcGxhY2Vob2xkZXIgPSBnZXRIb2xkZXIod3JhcHBlciksXG4gICAgICAgICAgICAgIGhvbGRlcnNDb3VudCA9IGNvdW50SG9sZGVycyhhcmdzLCBwbGFjZWhvbGRlcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnRpYWxzKSB7XG4gICAgICAgICAgYXJncyA9IGNvbXBvc2VBcmdzKGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJ0aWFsc1JpZ2h0KSB7XG4gICAgICAgICAgYXJncyA9IGNvbXBvc2VBcmdzUmlnaHQoYXJncywgcGFydGlhbHNSaWdodCwgaG9sZGVyc1JpZ2h0LCBpc0N1cnJpZWQpO1xuICAgICAgICB9XG4gICAgICAgIGxlbmd0aCAtPSBob2xkZXJzQ291bnQ7XG4gICAgICAgIGlmIChpc0N1cnJpZWQgJiYgbGVuZ3RoIDwgYXJpdHkpIHtcbiAgICAgICAgICB2YXIgbmV3SG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlUmVjdXJyeShcbiAgICAgICAgICAgIGZ1bmMsIGJpdG1hc2ssIGNyZWF0ZUh5YnJpZCwgd3JhcHBlci5wbGFjZWhvbGRlciwgdGhpc0FyZyxcbiAgICAgICAgICAgIGFyZ3MsIG5ld0hvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSAtIGxlbmd0aFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRoaXNCaW5kaW5nID0gaXNCaW5kID8gdGhpc0FyZyA6IHRoaXMsXG4gICAgICAgICAgICBmbiA9IGlzQmluZEtleSA/IHRoaXNCaW5kaW5nW2Z1bmNdIDogZnVuYztcblxuICAgICAgICBsZW5ndGggPSBhcmdzLmxlbmd0aDtcbiAgICAgICAgaWYgKGFyZ1Bvcykge1xuICAgICAgICAgIGFyZ3MgPSByZW9yZGVyKGFyZ3MsIGFyZ1Bvcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNGbGlwICYmIGxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBhcmdzLnJldmVyc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNBcnkgJiYgYXJ5IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJncy5sZW5ndGggPSBhcnk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikge1xuICAgICAgICAgIGZuID0gQ3RvciB8fCBjcmVhdGVDdG9yKGZuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm4uYXBwbHkodGhpc0JpbmRpbmcsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uaW52ZXJ0QnlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBhY2N1bXVsYXRvciB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdG9JdGVyYXRlZSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSBpdGVyYXRlZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgaW52ZXJ0ZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlSW52ZXJ0ZXIoc2V0dGVyLCB0b0l0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgICByZXR1cm4gYmFzZUludmVydGVyKG9iamVjdCwgc2V0dGVyLCB0b0l0ZXJhdGVlKGl0ZXJhdGVlKSwge30pO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gb24gdHdvIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3BlcmF0b3IgVGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHVzZWQgZm9yIGB1bmRlZmluZWRgIGFyZ3VtZW50cy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtYXRoZW1hdGljYWwgb3BlcmF0aW9uIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZU1hdGhPcGVyYXRpb24ob3BlcmF0b3IsIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzdWx0O1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBvdGhlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdGhlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gb3RoZXI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIG90aGVyID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICBvdGhlciA9IGJhc2VUb1N0cmluZyhvdGhlcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZVRvTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICAgIG90aGVyID0gYmFzZVRvTnVtYmVyKG90aGVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gb3BlcmF0b3IodmFsdWUsIG90aGVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5vdmVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXJyYXlGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgaXRlcmF0ZWVzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG92ZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlT3ZlcihhcnJheUZ1bmMpIHtcbiAgICAgIHJldHVybiBmbGF0UmVzdChmdW5jdGlvbihpdGVyYXRlZXMpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuICAgICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICAgIHZhciB0aGlzQXJnID0gdGhpcztcbiAgICAgICAgICByZXR1cm4gYXJyYXlGdW5jKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHBseShpdGVyYXRlZSwgdGhpc0FyZywgYXJncyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyB0aGUgcGFkZGluZyBmb3IgYHN0cmluZ2AgYmFzZWQgb24gYGxlbmd0aGAuIFRoZSBgY2hhcnNgIHN0cmluZ1xuICAgICAqIGlzIHRydW5jYXRlZCBpZiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgZXhjZWVkcyBgbGVuZ3RoYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRpbmcgZm9yIGBzdHJpbmdgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhZGRpbmcobGVuZ3RoLCBjaGFycykge1xuICAgICAgY2hhcnMgPSBjaGFycyA9PT0gdW5kZWZpbmVkID8gJyAnIDogYmFzZVRvU3RyaW5nKGNoYXJzKTtcblxuICAgICAgdmFyIGNoYXJzTGVuZ3RoID0gY2hhcnMubGVuZ3RoO1xuICAgICAgaWYgKGNoYXJzTGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gY2hhcnNMZW5ndGggPyBiYXNlUmVwZWF0KGNoYXJzLCBsZW5ndGgpIDogY2hhcnM7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZVJlcGVhdChjaGFycywgbmF0aXZlQ2VpbChsZW5ndGggLyBzdHJpbmdTaXplKGNoYXJzKSkpO1xuICAgICAgcmV0dXJuIGhhc1VuaWNvZGUoY2hhcnMpXG4gICAgICAgID8gY2FzdFNsaWNlKHN0cmluZ1RvQXJyYXkocmVzdWx0KSwgMCwgbGVuZ3RoKS5qb2luKCcnKVxuICAgICAgICA6IHJlc3VsdC5zbGljZSgwLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBpbnZva2UgaXQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmdcbiAgICAgKiBvZiBgdGhpc0FyZ2AgYW5kIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhcnRpYWwoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgQ3RvciA9IGNyZWF0ZUN0b3IoZnVuYyk7XG5cbiAgICAgIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICAgIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLFxuICAgICAgICAgICAgbGVmdEluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZWZ0TGVuZ3RoID0gcGFydGlhbHMubGVuZ3RoLFxuICAgICAgICAgICAgYXJncyA9IEFycmF5KGxlZnRMZW5ndGggKyBhcmdzTGVuZ3RoKSxcbiAgICAgICAgICAgIGZuID0gKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYztcblxuICAgICAgICB3aGlsZSAoKytsZWZ0SW5kZXggPCBsZWZ0TGVuZ3RoKSB7XG4gICAgICAgICAgYXJnc1tsZWZ0SW5kZXhdID0gcGFydGlhbHNbbGVmdEluZGV4XTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoYXJnc0xlbmd0aC0tKSB7XG4gICAgICAgICAgYXJnc1tsZWZ0SW5kZXgrK10gPSBhcmd1bWVudHNbKythcmdzSW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmbiwgaXNCaW5kID8gdGhpc0FyZyA6IHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLnJhbmdlYCBvciBgXy5yYW5nZVJpZ2h0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmFuZ2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUmFuZ2UoZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oc3RhcnQsIGVuZCwgc3RlcCkge1xuICAgICAgICBpZiAoc3RlcCAmJiB0eXBlb2Ygc3RlcCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChzdGFydCwgZW5kLCBzdGVwKSkge1xuICAgICAgICAgIGVuZCA9IHN0ZXAgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRW5zdXJlIHRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICAgICAgICBzdGFydCA9IHRvRmluaXRlKHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZW5kID0gc3RhcnQ7XG4gICAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVuZCA9IHRvRmluaXRlKGVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RlcCA9IHN0ZXAgPT09IHVuZGVmaW5lZCA/IChzdGFydCA8IGVuZCA/IDEgOiAtMSkgOiB0b0Zpbml0ZShzdGVwKTtcbiAgICAgICAgcmV0dXJuIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHJlbGF0aW9uYWwgb3BlcmF0aW9uIG9uIHR3byB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wZXJhdG9yIFRoZSBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVsYXRpb25hbCBvcGVyYXRpb24gZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihvcGVyYXRvcikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgICBpZiAoISh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgJiYgdHlwZW9mIG90aGVyID09ICdzdHJpbmcnKSkge1xuICAgICAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgIG90aGVyID0gdG9OdW1iZXIob3RoZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcGVyYXRvcih2YWx1ZSwgb3RoZXIpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gY29udGludWUgY3VycnlpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB3cmFwRnVuYyBUaGUgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBgZnVuY2Agd3JhcHBlci5cbiAgICAgKiBAcGFyYW0geyp9IHBsYWNlaG9sZGVyIFRoZSBwbGFjZWhvbGRlciB2YWx1ZS5cbiAgICAgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBwcmVwZW5kIHRvIHRob3NlIHByb3ZpZGVkIHRvXG4gICAgICogIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2hvbGRlcnNdIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGhlIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJ5XSBUaGUgYXJpdHkgY2FwIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUmVjdXJyeShmdW5jLCBiaXRtYXNrLCB3cmFwRnVuYywgcGxhY2Vob2xkZXIsIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBhcmdQb3MsIGFyeSwgYXJpdHkpIHtcbiAgICAgIHZhciBpc0N1cnJ5ID0gYml0bWFzayAmIFdSQVBfQ1VSUllfRkxBRyxcbiAgICAgICAgICBuZXdIb2xkZXJzID0gaXNDdXJyeSA/IGhvbGRlcnMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgbmV3SG9sZGVyc1JpZ2h0ID0gaXNDdXJyeSA/IHVuZGVmaW5lZCA6IGhvbGRlcnMsXG4gICAgICAgICAgbmV3UGFydGlhbHMgPSBpc0N1cnJ5ID8gcGFydGlhbHMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgbmV3UGFydGlhbHNSaWdodCA9IGlzQ3VycnkgPyB1bmRlZmluZWQgOiBwYXJ0aWFscztcblxuICAgICAgYml0bWFzayB8PSAoaXNDdXJyeSA/IFdSQVBfUEFSVElBTF9GTEFHIDogV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcpO1xuICAgICAgYml0bWFzayAmPSB+KGlzQ3VycnkgPyBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyA6IFdSQVBfUEFSVElBTF9GTEFHKTtcblxuICAgICAgaWYgKCEoYml0bWFzayAmIFdSQVBfQ1VSUllfQk9VTkRfRkxBRykpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfQklORF9GTEFHIHwgV1JBUF9CSU5EX0tFWV9GTEFHKTtcbiAgICAgIH1cbiAgICAgIHZhciBuZXdEYXRhID0gW1xuICAgICAgICBmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBuZXdQYXJ0aWFscywgbmV3SG9sZGVycywgbmV3UGFydGlhbHNSaWdodCxcbiAgICAgICAgbmV3SG9sZGVyc1JpZ2h0LCBhcmdQb3MsIGFyeSwgYXJpdHlcbiAgICAgIF07XG5cbiAgICAgIHZhciByZXN1bHQgPSB3cmFwRnVuYy5hcHBseSh1bmRlZmluZWQsIG5ld0RhdGEpO1xuICAgICAgaWYgKGlzTGF6aWFibGUoZnVuYykpIHtcbiAgICAgICAgc2V0RGF0YShyZXN1bHQsIG5ld0RhdGEpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICByZXR1cm4gc2V0V3JhcFRvU3RyaW5nKHJlc3VsdCwgZnVuYywgYml0bWFzayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8ucm91bmRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZSBUaGUgbmFtZSBvZiB0aGUgYE1hdGhgIG1ldGhvZCB0byB1c2Ugd2hlbiByb3VuZGluZy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByb3VuZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSb3VuZChtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgZnVuYyA9IE1hdGhbbWV0aG9kTmFtZV07XG4gICAgICByZXR1cm4gZnVuY3Rpb24obnVtYmVyLCBwcmVjaXNpb24pIHtcbiAgICAgICAgbnVtYmVyID0gdG9OdW1iZXIobnVtYmVyKTtcbiAgICAgICAgcHJlY2lzaW9uID0gcHJlY2lzaW9uID09IG51bGwgPyAwIDogbmF0aXZlTWluKHRvSW50ZWdlcihwcmVjaXNpb24pLCAyOTIpO1xuICAgICAgICBpZiAocHJlY2lzaW9uICYmIG5hdGl2ZUlzRmluaXRlKG51bWJlcikpIHtcbiAgICAgICAgICAvLyBTaGlmdCB3aXRoIGV4cG9uZW50aWFsIG5vdGF0aW9uIHRvIGF2b2lkIGZsb2F0aW5nLXBvaW50IGlzc3Vlcy5cbiAgICAgICAgICAvLyBTZWUgW01ETl0oaHR0cHM6Ly9tZG4uaW8vcm91bmQjRXhhbXBsZXMpIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAgdmFyIHBhaXIgPSAodG9TdHJpbmcobnVtYmVyKSArICdlJykuc3BsaXQoJ2UnKSxcbiAgICAgICAgICAgICAgdmFsdWUgPSBmdW5jKHBhaXJbMF0gKyAnZScgKyAoK3BhaXJbMV0gKyBwcmVjaXNpb24pKTtcblxuICAgICAgICAgIHBhaXIgPSAodG9TdHJpbmcodmFsdWUpICsgJ2UnKS5zcGxpdCgnZScpO1xuICAgICAgICAgIHJldHVybiArKHBhaXJbMF0gKyAnZScgKyAoK3BhaXJbMV0gLSBwcmVjaXNpb24pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuYyhudW1iZXIpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2V0IG9iamVjdCBvZiBgdmFsdWVzYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYWRkIHRvIHRoZSBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHNldC5cbiAgICAgKi9cbiAgICB2YXIgY3JlYXRlU2V0ID0gIShTZXQgJiYgKDEgLyBzZXRUb0FycmF5KG5ldyBTZXQoWywtMF0pKVsxXSkgPT0gSU5GSU5JVFkpID8gbm9vcCA6IGZ1bmN0aW9uKHZhbHVlcykge1xuICAgICAgcmV0dXJuIG5ldyBTZXQodmFsdWVzKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLnRvUGFpcnNgIG9yIGBfLnRvUGFpcnNJbmAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYSBnaXZlbiBvYmplY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFpcnMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlVG9QYWlycyhrZXlzRnVuYykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICB2YXIgdGFnID0gZ2V0VGFnKG9iamVjdCk7XG4gICAgICAgIGlmICh0YWcgPT0gbWFwVGFnKSB7XG4gICAgICAgICAgcmV0dXJuIG1hcFRvQXJyYXkob2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFnID09IHNldFRhZykge1xuICAgICAgICAgIHJldHVybiBzZXRUb1BhaXJzKG9iamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJhc2VUb1BhaXJzKG9iamVjdCwga2V5c0Z1bmMob2JqZWN0KSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGVpdGhlciBjdXJyaWVzIG9yIGludm9rZXMgYGZ1bmNgIHdpdGggb3B0aW9uYWxcbiAgICAgKiBgdGhpc2AgYmluZGluZyBhbmQgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gZnVuYyBUaGUgZnVuY3Rpb24gb3IgbWV0aG9kIG5hbWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAgICAgKiAgICAxIC0gYF8uYmluZGBcbiAgICAgKiAgICAyIC0gYF8uYmluZEtleWBcbiAgICAgKiAgICA0IC0gYF8uY3VycnlgIG9yIGBfLmN1cnJ5UmlnaHRgIG9mIGEgYm91bmQgZnVuY3Rpb25cbiAgICAgKiAgICA4IC0gYF8uY3VycnlgXG4gICAgICogICAxNiAtIGBfLmN1cnJ5UmlnaHRgXG4gICAgICogICAzMiAtIGBfLnBhcnRpYWxgXG4gICAgICogICA2NCAtIGBfLnBhcnRpYWxSaWdodGBcbiAgICAgKiAgMTI4IC0gYF8ucmVhcmdgXG4gICAgICogIDI1NiAtIGBfLmFyeWBcbiAgICAgKiAgNTEyIC0gYF8uZmxpcGBcbiAgICAgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVXcmFwKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBhcmdQb3MsIGFyeSwgYXJpdHkpIHtcbiAgICAgIHZhciBpc0JpbmRLZXkgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0tFWV9GTEFHO1xuICAgICAgaWYgKCFpc0JpbmRLZXkgJiYgdHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gcGFydGlhbHMgPyBwYXJ0aWFscy5sZW5ndGggOiAwO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfUEFSVElBTF9GTEFHIHwgV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcpO1xuICAgICAgICBwYXJ0aWFscyA9IGhvbGRlcnMgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBhcnkgPSBhcnkgPT09IHVuZGVmaW5lZCA/IGFyeSA6IG5hdGl2ZU1heCh0b0ludGVnZXIoYXJ5KSwgMCk7XG4gICAgICBhcml0eSA9IGFyaXR5ID09PSB1bmRlZmluZWQgPyBhcml0eSA6IHRvSW50ZWdlcihhcml0eSk7XG4gICAgICBsZW5ndGggLT0gaG9sZGVycyA/IGhvbGRlcnMubGVuZ3RoIDogMDtcblxuICAgICAgaWYgKGJpdG1hc2sgJiBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRykge1xuICAgICAgICB2YXIgcGFydGlhbHNSaWdodCA9IHBhcnRpYWxzLFxuICAgICAgICAgICAgaG9sZGVyc1JpZ2h0ID0gaG9sZGVycztcblxuICAgICAgICBwYXJ0aWFscyA9IGhvbGRlcnMgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICB2YXIgZGF0YSA9IGlzQmluZEtleSA/IHVuZGVmaW5lZCA6IGdldERhdGEoZnVuYyk7XG5cbiAgICAgIHZhciBuZXdEYXRhID0gW1xuICAgICAgICBmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycywgcGFydGlhbHNSaWdodCwgaG9sZGVyc1JpZ2h0LFxuICAgICAgICBhcmdQb3MsIGFyeSwgYXJpdHlcbiAgICAgIF07XG5cbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIG1lcmdlRGF0YShuZXdEYXRhLCBkYXRhKTtcbiAgICAgIH1cbiAgICAgIGZ1bmMgPSBuZXdEYXRhWzBdO1xuICAgICAgYml0bWFzayA9IG5ld0RhdGFbMV07XG4gICAgICB0aGlzQXJnID0gbmV3RGF0YVsyXTtcbiAgICAgIHBhcnRpYWxzID0gbmV3RGF0YVszXTtcbiAgICAgIGhvbGRlcnMgPSBuZXdEYXRhWzRdO1xuICAgICAgYXJpdHkgPSBuZXdEYXRhWzldID0gbmV3RGF0YVs5XSA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gKGlzQmluZEtleSA/IDAgOiBmdW5jLmxlbmd0aClcbiAgICAgICAgOiBuYXRpdmVNYXgobmV3RGF0YVs5XSAtIGxlbmd0aCwgMCk7XG5cbiAgICAgIGlmICghYXJpdHkgJiYgYml0bWFzayAmIChXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpKSB7XG4gICAgICAgIGJpdG1hc2sgJj0gfihXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpO1xuICAgICAgfVxuICAgICAgaWYgKCFiaXRtYXNrIHx8IGJpdG1hc2sgPT0gV1JBUF9CSU5EX0ZMQUcpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZUJpbmQoZnVuYywgYml0bWFzaywgdGhpc0FyZyk7XG4gICAgICB9IGVsc2UgaWYgKGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9GTEFHIHx8IGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9SSUdIVF9GTEFHKSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZUN1cnJ5KGZ1bmMsIGJpdG1hc2ssIGFyaXR5KTtcbiAgICAgIH0gZWxzZSBpZiAoKGJpdG1hc2sgPT0gV1JBUF9QQVJUSUFMX0ZMQUcgfHwgYml0bWFzayA9PSAoV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX1BBUlRJQUxfRkxBRykpICYmICFob2xkZXJzLmxlbmd0aCkge1xuICAgICAgICByZXN1bHQgPSBjcmVhdGVQYXJ0aWFsKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZUh5YnJpZC5hcHBseSh1bmRlZmluZWQsIG5ld0RhdGEpO1xuICAgICAgfVxuICAgICAgdmFyIHNldHRlciA9IGRhdGEgPyBiYXNlU2V0RGF0YSA6IHNldERhdGE7XG4gICAgICByZXR1cm4gc2V0V3JhcFRvU3RyaW5nKHNldHRlcihyZXN1bHQsIG5ld0RhdGEpLCBmdW5jLCBiaXRtYXNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGJ5IGBfLmRlZmF1bHRzYCB0byBjdXN0b21pemUgaXRzIGBfLmFzc2lnbkluYCB1c2UgdG8gYXNzaWduIHByb3BlcnRpZXNcbiAgICAgKiBvZiBzb3VyY2Ugb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllc1xuICAgICAqIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBvYmpWYWx1ZSBUaGUgZGVzdGluYXRpb24gdmFsdWUuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHBhcmVudCBvYmplY3Qgb2YgYG9ialZhbHVlYC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1c3RvbURlZmF1bHRzQXNzaWduSW4ob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAoZXEob2JqVmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgcmV0dXJuIHNyY1ZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8uZGVmYXVsdHNEZWVwYCB0byBjdXN0b21pemUgaXRzIGBfLm1lcmdlYCB1c2UgdG8gbWVyZ2Ugc291cmNlXG4gICAgICogb2JqZWN0cyBpbnRvIGRlc3RpbmF0aW9uIG9iamVjdHMgdGhhdCBhcmUgcGFzc2VkIHRocnUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gb2JqVmFsdWUgVGhlIGRlc3RpbmF0aW9uIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHNvdXJjZSB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIG1lcmdlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHBhcmVudCBvYmplY3Qgb2YgYG9ialZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBzcmNWYWx1ZWAuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAgICAgKiAgY291bnRlcnBhcnRzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tRGVmYXVsdHNNZXJnZShvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKSB7XG4gICAgICBpZiAoaXNPYmplY3Qob2JqVmFsdWUpICYmIGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBvYmpWYWx1ZSk7XG4gICAgICAgIGJhc2VNZXJnZShvYmpWYWx1ZSwgc3JjVmFsdWUsIHVuZGVmaW5lZCwgY3VzdG9tRGVmYXVsdHNNZXJnZSwgc3RhY2spO1xuICAgICAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8ub21pdGAgdG8gY3VzdG9taXplIGl0cyBgXy5jbG9uZURlZXBgIHVzZSB0byBvbmx5IGNsb25lIHBsYWluXG4gICAgICogb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHVuY2xvbmVkIHZhbHVlIG9yIGB1bmRlZmluZWRgIHRvIGRlZmVyIGNsb25pbmcgdG8gYF8uY2xvbmVEZWVwYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXN0b21PbWl0Q2xvbmUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc1BsYWluT2JqZWN0KHZhbHVlKSA/IHVuZGVmaW5lZCA6IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgYXJyYXlzIHdpdGggc3VwcG9ydCBmb3JcbiAgICAgKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYGFycmF5YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxBcnJheXMoYXJyYXksIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgICAgIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBvdGhMZW5ndGggPSBvdGhlci5sZW5ndGg7XG5cbiAgICAgIGlmIChhcnJMZW5ndGggIT0gb3RoTGVuZ3RoICYmICEoaXNQYXJ0aWFsICYmIG90aExlbmd0aCA+IGFyckxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBhcnJTdGFja2VkID0gc3RhY2suZ2V0KGFycmF5KTtcbiAgICAgIHZhciBvdGhTdGFja2VkID0gc3RhY2suZ2V0KG90aGVyKTtcbiAgICAgIGlmIChhcnJTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIGFyclN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBhcnJheTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHJlc3VsdCA9IHRydWUsXG4gICAgICAgICAgc2VlbiA9IChiaXRtYXNrICYgQ09NUEFSRV9VTk9SREVSRURfRkxBRykgPyBuZXcgU2V0Q2FjaGUgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHN0YWNrLnNldChhcnJheSwgb3RoZXIpO1xuICAgICAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG5cbiAgICAgIC8vIElnbm9yZSBub24taW5kZXggcHJvcGVydGllcy5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIG90aFZhbHVlID0gb3RoZXJbaW5kZXhdO1xuXG4gICAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIGFyclZhbHVlLCBpbmRleCwgb3RoZXIsIGFycmF5LCBzdGFjaylcbiAgICAgICAgICAgIDogY3VzdG9taXplcihhcnJWYWx1ZSwgb3RoVmFsdWUsIGluZGV4LCBhcnJheSwgb3RoZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcGFyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGlmIChzZWVuKSB7XG4gICAgICAgICAgaWYgKCFhcnJheVNvbWUob3RoZXIsIGZ1bmN0aW9uKG90aFZhbHVlLCBvdGhJbmRleCkge1xuICAgICAgICAgICAgICAgIGlmICghY2FjaGVIYXMoc2Vlbiwgb3RoSW5kZXgpICYmXG4gICAgICAgICAgICAgICAgICAgIChhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlZW4ucHVzaChvdGhJbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIShcbiAgICAgICAgICAgICAgYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YWNrWydkZWxldGUnXShhcnJheSk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGNvbXBhcmluZyBvYmplY3RzIG9mXG4gICAgICogdGhlIHNhbWUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY29tcGFyaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAgICAgKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3RzIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgdGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAgICAgKG9iamVjdC5ieXRlT2Zmc2V0ICE9IG90aGVyLmJ5dGVPZmZzZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9iamVjdCA9IG9iamVjdC5idWZmZXI7XG4gICAgICAgICAgb3RoZXIgPSBvdGhlci5idWZmZXI7XG5cbiAgICAgICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgICAgICFlcXVhbEZ1bmMobmV3IFVpbnQ4QXJyYXkob2JqZWN0KSwgbmV3IFVpbnQ4QXJyYXkob3RoZXIpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBjYXNlIGJvb2xUYWc6XG4gICAgICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAgICAgLy8gQ29lcmNlIGJvb2xlYW5zIHRvIGAxYCBvciBgMGAgYW5kIGRhdGVzIHRvIG1pbGxpc2Vjb25kcy5cbiAgICAgICAgICAvLyBJbnZhbGlkIGRhdGVzIGFyZSBjb2VyY2VkIHRvIGBOYU5gLlxuICAgICAgICAgIHJldHVybiBlcSgrb2JqZWN0LCArb3RoZXIpO1xuXG4gICAgICAgIGNhc2UgZXJyb3JUYWc6XG4gICAgICAgICAgcmV0dXJuIG9iamVjdC5uYW1lID09IG90aGVyLm5hbWUgJiYgb2JqZWN0Lm1lc3NhZ2UgPT0gb3RoZXIubWVzc2FnZTtcblxuICAgICAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICAgICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAgICAgLy8gQ29lcmNlIHJlZ2V4ZXMgdG8gc3RyaW5ncyBhbmQgdHJlYXQgc3RyaW5ncywgcHJpbWl0aXZlcyBhbmQgb2JqZWN0cyxcbiAgICAgICAgICAvLyBhcyBlcXVhbC4gU2VlIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1yZWdleHAucHJvdG90eXBlLnRvc3RyaW5nXG4gICAgICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTtcblxuICAgICAgICBjYXNlIG1hcFRhZzpcbiAgICAgICAgICB2YXIgY29udmVydCA9IG1hcFRvQXJyYXk7XG5cbiAgICAgICAgY2FzZSBzZXRUYWc6XG4gICAgICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRztcbiAgICAgICAgICBjb252ZXJ0IHx8IChjb252ZXJ0ID0gc2V0VG9BcnJheSk7XG5cbiAgICAgICAgICBpZiAob2JqZWN0LnNpemUgIT0gb3RoZXIuc2l6ZSAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYml0bWFzayB8PSBDT01QQVJFX1VOT1JERVJFRF9GTEFHO1xuXG4gICAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBlcXVhbEFycmF5cyhjb252ZXJ0KG9iamVjdCksIGNvbnZlcnQob3RoZXIpLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgICAgICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgICAgIGlmIChzeW1ib2xWYWx1ZU9mKSB7XG4gICAgICAgICAgICByZXR1cm4gc3ltYm9sVmFsdWVPZi5jYWxsKG9iamVjdCkgPT0gc3ltYm9sVmFsdWVPZi5jYWxsKG90aGVyKTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAgICAgKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgICAgIG9ialByb3BzID0gZ2V0QWxsS2V5cyhvYmplY3QpLFxuICAgICAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgICAgICBvdGhQcm9wcyA9IGdldEFsbEtleXMob3RoZXIpLFxuICAgICAgICAgIG90aExlbmd0aCA9IG90aFByb3BzLmxlbmd0aDtcblxuICAgICAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICB2YXIga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgICAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBvYmpTdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gICAgICBpZiAob2JqU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgICAgIHJldHVybiBvYmpTdGFja2VkID09IG90aGVyICYmIG90aFN0YWNrZWQgPT0gb2JqZWN0O1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IHRydWU7XG4gICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICBzdGFjay5zZXQob3RoZXIsIG9iamVjdCk7XG5cbiAgICAgIHZhciBza2lwQ3RvciA9IGlzUGFydGlhbDtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgb2JqTGVuZ3RoKSB7XG4gICAgICAgIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICAgICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2tleV07XG5cbiAgICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgb2JqVmFsdWUsIGtleSwgb3RoZXIsIG9iamVjdCwgc3RhY2spXG4gICAgICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IChvYmpWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKG9ialZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKVxuICAgICAgICAgICAgICA6IGNvbXBhcmVkXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc2tpcEN0b3IgfHwgKHNraXBDdG9yID0ga2V5ID09ICdjb25zdHJ1Y3RvcicpO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICAgICAgdmFyIG9iakN0b3IgPSBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgICAgICBvdGhDdG9yID0gb3RoZXIuY29uc3RydWN0b3I7XG5cbiAgICAgICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgICAgIGlmIChvYmpDdG9yICE9IG90aEN0b3IgJiZcbiAgICAgICAgICAgICgnY29uc3RydWN0b3InIGluIG9iamVjdCAmJiAnY29uc3RydWN0b3InIGluIG90aGVyKSAmJlxuICAgICAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgICAgIHR5cGVvZiBvdGhDdG9yID09ICdmdW5jdGlvbicgJiYgb3RoQ3RvciBpbnN0YW5jZW9mIG90aEN0b3IpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggZmxhdHRlbnMgdGhlIHJlc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdFJlc3QoZnVuYykge1xuICAgICAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHVuZGVmaW5lZCwgZmxhdHRlbiksIGZ1bmMgKyAnJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3QpIHtcbiAgICAgIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXMsIGdldFN5bWJvbHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAgICAgKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRBbGxLZXlzSW4ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzSW4sIGdldFN5bWJvbHNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWV0YWRhdGEgZm9yIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgZ2V0RGF0YSA9ICFtZXRhTWFwID8gbm9vcCA6IGZ1bmN0aW9uKGZ1bmMpIHtcbiAgICAgIHJldHVybiBtZXRhTWFwLmdldChmdW5jKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmFtZSBvZiBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0RnVuY05hbWUoZnVuYykge1xuICAgICAgdmFyIHJlc3VsdCA9IChmdW5jLm5hbWUgKyAnJyksXG4gICAgICAgICAgYXJyYXkgPSByZWFsTmFtZXNbcmVzdWx0XSxcbiAgICAgICAgICBsZW5ndGggPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlYWxOYW1lcywgcmVzdWx0KSA/IGFycmF5Lmxlbmd0aCA6IDA7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgZGF0YSA9IGFycmF5W2xlbmd0aF0sXG4gICAgICAgICAgICBvdGhlckZ1bmMgPSBkYXRhLmZ1bmM7XG4gICAgICAgIGlmIChvdGhlckZ1bmMgPT0gbnVsbCB8fCBvdGhlckZ1bmMgPT0gZnVuYykge1xuICAgICAgICAgIHJldHVybiBkYXRhLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgYXJndW1lbnQgcGxhY2Vob2xkZXIgdmFsdWUgZm9yIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0SG9sZGVyKGZ1bmMpIHtcbiAgICAgIHZhciBvYmplY3QgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKGxvZGFzaCwgJ3BsYWNlaG9sZGVyJykgPyBsb2Rhc2ggOiBmdW5jO1xuICAgICAgcmV0dXJuIG9iamVjdC5wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhcHByb3ByaWF0ZSBcIml0ZXJhdGVlXCIgZnVuY3Rpb24uIElmIGBfLml0ZXJhdGVlYCBpcyBjdXN0b21pemVkLFxuICAgICAqIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgY3VzdG9tIG1ldGhvZCwgb3RoZXJ3aXNlIGl0IHJldHVybnMgYGJhc2VJdGVyYXRlZWAuXG4gICAgICogSWYgYXJndW1lbnRzIGFyZSBwcm92aWRlZCwgdGhlIGNob3NlbiBmdW5jdGlvbiBpcyBpbnZva2VkIHdpdGggdGhlbSBhbmRcbiAgICAgKiBpdHMgcmVzdWx0IGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IFt2YWx1ZV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIHRoZSBjcmVhdGVkIGl0ZXJhdGVlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY2hvc2VuIGZ1bmN0aW9uIG9yIGl0cyByZXN1bHQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0SXRlcmF0ZWUoKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbG9kYXNoLml0ZXJhdGVlIHx8IGl0ZXJhdGVlO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0ID09PSBpdGVyYXRlZSA/IGJhc2VJdGVyYXRlZSA6IHJlc3VsdDtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gcmVzdWx0KGFyZ3VtZW50c1swXSwgYXJndW1lbnRzWzFdKSA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIHJlZmVyZW5jZSBrZXkuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE1hcERhdGEobWFwLCBrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICAgICAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgICAgID8gZGF0YVt0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8gJ3N0cmluZycgOiAnaGFzaCddXG4gICAgICAgIDogZGF0YS5tYXA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3Mgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG1hdGNoIGRhdGEgb2YgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0TWF0Y2hEYXRhKG9iamVjdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IGtleXMob2JqZWN0KSxcbiAgICAgICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGtleSA9IHJlc3VsdFtsZW5ndGhdLFxuICAgICAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgICByZXN1bHRbbGVuZ3RoXSA9IFtrZXksIHZhbHVlLCBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBpZiBpdCdzIG5hdGl2ZSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGdldFZhbHVlKG9iamVjdCwga2V5KTtcbiAgICAgIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gICAgICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICAgICAgdGFnID0gdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXG4gICAgICB0cnkge1xuICAgICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgICAgIHZhciB1bm1hc2tlZCA9IHRydWU7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuXG4gICAgICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgICBpZiAodW5tYXNrZWQpIHtcbiAgICAgICAgaWYgKGlzT3duKSB7XG4gICAgICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAgICAgKi9cbiAgICB2YXIgZ2V0U3ltYm9scyA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgICByZXR1cm4gYXJyYXlGaWx0ZXIobmF0aXZlR2V0U3ltYm9scyhvYmplY3QpLCBmdW5jdGlvbihzeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwob2JqZWN0LCBzeW1ib2wpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAgICAgKi9cbiAgICB2YXIgZ2V0U3ltYm9sc0luID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIHdoaWxlIChvYmplY3QpIHtcbiAgICAgICAgYXJyYXlQdXNoKHJlc3VsdCwgZ2V0U3ltYm9scyhvYmplY3QpKTtcbiAgICAgICAgb2JqZWN0ID0gZ2V0UHJvdG90eXBlKG9iamVjdCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gICAgICovXG4gICAgdmFyIGdldFRhZyA9IGJhc2VHZXRUYWc7XG5cbiAgICAvLyBGYWxsYmFjayBmb3IgZGF0YSB2aWV3cywgbWFwcywgc2V0cywgYW5kIHdlYWsgbWFwcyBpbiBJRSAxMSBhbmQgcHJvbWlzZXMgaW4gTm9kZS5qcyA8IDYuXG4gICAgaWYgKChEYXRhVmlldyAmJiBnZXRUYWcobmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxKSkpICE9IGRhdGFWaWV3VGFnKSB8fFxuICAgICAgICAoTWFwICYmIGdldFRhZyhuZXcgTWFwKSAhPSBtYXBUYWcpIHx8XG4gICAgICAgIChQcm9taXNlICYmIGdldFRhZyhQcm9taXNlLnJlc29sdmUoKSkgIT0gcHJvbWlzZVRhZykgfHxcbiAgICAgICAgKFNldCAmJiBnZXRUYWcobmV3IFNldCkgIT0gc2V0VGFnKSB8fFxuICAgICAgICAoV2Vha01hcCAmJiBnZXRUYWcobmV3IFdlYWtNYXApICE9IHdlYWtNYXBUYWcpKSB7XG4gICAgICBnZXRUYWcgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gYmFzZUdldFRhZyh2YWx1ZSksXG4gICAgICAgICAgICBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY3RvclN0cmluZyA9IEN0b3IgPyB0b1NvdXJjZShDdG9yKSA6ICcnO1xuXG4gICAgICAgIGlmIChjdG9yU3RyaW5nKSB7XG4gICAgICAgICAgc3dpdGNoIChjdG9yU3RyaW5nKSB7XG4gICAgICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICAgICAgY2FzZSBtYXBDdG9yU3RyaW5nOiByZXR1cm4gbWFwVGFnO1xuICAgICAgICAgICAgY2FzZSBwcm9taXNlQ3RvclN0cmluZzogcmV0dXJuIHByb21pc2VUYWc7XG4gICAgICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgICAgICBjYXNlIHdlYWtNYXBDdG9yU3RyaW5nOiByZXR1cm4gd2Vha01hcFRhZztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmlldywgYXBwbHlpbmcgYW55IGB0cmFuc2Zvcm1zYCB0byB0aGUgYHN0YXJ0YCBhbmQgYGVuZGAgcG9zaXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSB2aWV3LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgdmlldy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB0cmFuc2Zvcm1zIFRoZSB0cmFuc2Zvcm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIHZpZXcuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgYHN0YXJ0YCBhbmQgYGVuZGBcbiAgICAgKiAgcG9zaXRpb25zIG9mIHRoZSB2aWV3LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldFZpZXcoc3RhcnQsIGVuZCwgdHJhbnNmb3Jtcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gdHJhbnNmb3Jtcy5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBkYXRhID0gdHJhbnNmb3Jtc1tpbmRleF0sXG4gICAgICAgICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gICAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnZHJvcCc6ICAgICAgc3RhcnQgKz0gc2l6ZTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZHJvcFJpZ2h0JzogZW5kIC09IHNpemU7IGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3Rha2UnOiAgICAgIGVuZCA9IG5hdGl2ZU1pbihlbmQsIHN0YXJ0ICsgc2l6ZSk7IGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3Rha2VSaWdodCc6IHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0LCBlbmQgLSBzaXplKTsgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7ICdzdGFydCc6IHN0YXJ0LCAnZW5kJzogZW5kIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXh0cmFjdHMgd3JhcHBlciBkZXRhaWxzIGZyb20gdGhlIGBzb3VyY2VgIGJvZHkgY29tbWVudC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZSBUaGUgc291cmNlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3cmFwcGVyIGRldGFpbHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0V3JhcERldGFpbHMoc291cmNlKSB7XG4gICAgICB2YXIgbWF0Y2ggPSBzb3VyY2UubWF0Y2gocmVXcmFwRGV0YWlscyk7XG4gICAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXS5zcGxpdChyZVNwbGl0RGV0YWlscykgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHBhdGhgIGV4aXN0cyBvbiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGhhc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrIHByb3BlcnRpZXMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgaGFzRnVuYykge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pO1xuICAgICAgICBpZiAoIShyZXN1bHQgPSBvYmplY3QgIT0gbnVsbCAmJiBoYXNGdW5jKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBvYmplY3Rba2V5XTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgfHwgKytpbmRleCAhPSBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGxlbmd0aCA9IG9iamVjdCA9PSBudWxsID8gMCA6IG9iamVjdC5sZW5ndGg7XG4gICAgICByZXR1cm4gISFsZW5ndGggJiYgaXNMZW5ndGgobGVuZ3RoKSAmJiBpc0luZGV4KGtleSwgbGVuZ3RoKSAmJlxuICAgICAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGFuIGFycmF5IGNsb25lLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0Q2xvbmVBcnJheShhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBuZXcgYXJyYXkuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAgICAgLy8gQWRkIHByb3BlcnRpZXMgYXNzaWduZWQgYnkgYFJlZ0V4cCNleGVjYC5cbiAgICAgIGlmIChsZW5ndGggJiYgdHlwZW9mIGFycmF5WzBdID09ICdzdHJpbmcnICYmIGhhc093blByb3BlcnR5LmNhbGwoYXJyYXksICdpbmRleCcpKSB7XG4gICAgICAgIHJlc3VsdC5pbmRleCA9IGFycmF5LmluZGV4O1xuICAgICAgICByZXN1bHQuaW5wdXQgPSBhcnJheS5pbnB1dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5pdENsb25lT2JqZWN0KG9iamVjdCkge1xuICAgICAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgICAgID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSlcbiAgICAgICAgOiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUgYmFzZWQgb24gaXRzIGB0b1N0cmluZ1RhZ2AuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNsb25pbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICAgICAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTWFwYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBgU2V0YCwgb3IgYFN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3QgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0Q2xvbmVCeVRhZyhvYmplY3QsIHRhZywgaXNEZWVwKSB7XG4gICAgICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXIob2JqZWN0KTtcblxuICAgICAgICBjYXNlIGJvb2xUYWc6XG4gICAgICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgICAgICByZXR1cm4gbmV3IEN0b3IoK29iamVjdCk7XG5cbiAgICAgICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVEYXRhVmlldyhvYmplY3QsIGlzRGVlcCk7XG5cbiAgICAgICAgY2FzZSBmbG9hdDMyVGFnOiBjYXNlIGZsb2F0NjRUYWc6XG4gICAgICAgIGNhc2UgaW50OFRhZzogY2FzZSBpbnQxNlRhZzogY2FzZSBpbnQzMlRhZzpcbiAgICAgICAgY2FzZSB1aW50OFRhZzogY2FzZSB1aW50OENsYW1wZWRUYWc6IGNhc2UgdWludDE2VGFnOiBjYXNlIHVpbnQzMlRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVUeXBlZEFycmF5KG9iamVjdCwgaXNEZWVwKTtcblxuICAgICAgICBjYXNlIG1hcFRhZzpcbiAgICAgICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICAgICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3RvcihvYmplY3QpO1xuXG4gICAgICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVJlZ0V4cChvYmplY3QpO1xuXG4gICAgICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgICAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVTeW1ib2wob2JqZWN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIHdyYXBwZXIgYGRldGFpbHNgIGluIGEgY29tbWVudCBhdCB0aGUgdG9wIG9mIHRoZSBgc291cmNlYCBib2R5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlIFRoZSBzb3VyY2UgdG8gbW9kaWZ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gZGV0YWlscyBUaGUgZGV0YWlscyB0byBpbnNlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgbW9kaWZpZWQgc291cmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluc2VydFdyYXBEZXRhaWxzKHNvdXJjZSwgZGV0YWlscykge1xuICAgICAgdmFyIGxlbmd0aCA9IGRldGFpbHMubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICAgIH1cbiAgICAgIHZhciBsYXN0SW5kZXggPSBsZW5ndGggLSAxO1xuICAgICAgZGV0YWlsc1tsYXN0SW5kZXhdID0gKGxlbmd0aCA+IDEgPyAnJiAnIDogJycpICsgZGV0YWlsc1tsYXN0SW5kZXhdO1xuICAgICAgZGV0YWlscyA9IGRldGFpbHMuam9pbihsZW5ndGggPiAyID8gJywgJyA6ICcgJyk7XG4gICAgICByZXR1cm4gc291cmNlLnJlcGxhY2UocmVXcmFwQ29tbWVudCwgJ3tcXG4vKiBbd3JhcHBlZCB3aXRoICcgKyBkZXRhaWxzICsgJ10gKi9cXG4nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGZsYXR0ZW5hYmxlIGBhcmd1bWVudHNgIG9iamVjdCBvciBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZmxhdHRlbmFibGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0ZsYXR0ZW5hYmxlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpIHx8XG4gICAgICAgICEhKHNwcmVhZGFibGVTeW1ib2wgJiYgdmFsdWUgJiYgdmFsdWVbc3ByZWFkYWJsZVN5bWJvbF0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gICAgICByZXR1cm4gISFsZW5ndGggJiZcbiAgICAgICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICAgICAodmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8IGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICAgICAqIEBwYXJhbSB7Kn0gaW5kZXggVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBpbmRleCBvciBrZXkgYXJndW1lbnQuXG4gICAgICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgaW5kZXg7XG4gICAgICBpZiAodHlwZSA9PSAnbnVtYmVyJ1xuICAgICAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgICAgIDogKHR5cGUgPT0gJ3N0cmluZycgJiYgaW5kZXggaW4gb2JqZWN0KVxuICAgICAgICAgICkge1xuICAgICAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSBhbmQgbm90IGEgcHJvcGVydHkgcGF0aC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0tleSh2YWx1ZSwgb2JqZWN0KSB7XG4gICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICBpZiAodHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgICAgdmFsdWUgPT0gbnVsbCB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKSB8fCAhcmVJc0RlZXBQcm9wLnRlc3QodmFsdWUpIHx8XG4gICAgICAgIChvYmplY3QgIT0gbnVsbCAmJiB2YWx1ZSBpbiBPYmplY3Qob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgcmV0dXJuICh0eXBlID09ICdzdHJpbmcnIHx8IHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJylcbiAgICAgICAgPyAodmFsdWUgIT09ICdfX3Byb3RvX18nKVxuICAgICAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgYSBsYXp5IGNvdW50ZXJwYXJ0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGhhcyBhIGxhenkgY291bnRlcnBhcnQsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0xhemlhYmxlKGZ1bmMpIHtcbiAgICAgIHZhciBmdW5jTmFtZSA9IGdldEZ1bmNOYW1lKGZ1bmMpLFxuICAgICAgICAgIG90aGVyID0gbG9kYXNoW2Z1bmNOYW1lXTtcblxuICAgICAgaWYgKHR5cGVvZiBvdGhlciAhPSAnZnVuY3Rpb24nIHx8ICEoZnVuY05hbWUgaW4gTGF6eVdyYXBwZXIucHJvdG90eXBlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoZnVuYyA9PT0gb3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICB2YXIgZGF0YSA9IGdldERhdGEob3RoZXIpO1xuICAgICAgcmV0dXJuICEhZGF0YSAmJiBmdW5jID09PSBkYXRhWzBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2tlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgICAgIHJldHVybiAhIW1hc2tTcmNLZXkgJiYgKG1hc2tTcmNLZXkgaW4gZnVuYyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBmdW5jYCBpcyBjYXBhYmxlIG9mIGJlaW5nIG1hc2tlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrYWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIHZhciBpc01hc2thYmxlID0gY29yZUpzRGF0YSA/IGlzRnVuY3Rpb24gOiBzdHViRmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gICAgICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gICAgICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlmIHN1aXRhYmxlIGZvciBzdHJpY3RcbiAgICAgKiAgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgJiYgIWlzT2JqZWN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYG1hdGNoZXNQcm9wZXJ0eWAgZm9yIHNvdXJjZSB2YWx1ZXMgc3VpdGFibGVcbiAgICAgKiBmb3Igc3RyaWN0IGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpLmUuIGA9PT1gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmplY3Rba2V5XSA9PT0gc3JjVmFsdWUgJiZcbiAgICAgICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tZW1vaXplYCB3aGljaCBjbGVhcnMgdGhlIG1lbW9pemVkIGZ1bmN0aW9uJ3NcbiAgICAgKiBjYWNoZSB3aGVuIGl0IGV4Y2VlZHMgYE1BWF9NRU1PSVpFX1NJWkVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVtb2l6ZUNhcHBlZChmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbWVtb2l6ZShmdW5jLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgaWYgKGNhY2hlLnNpemUgPT09IE1BWF9NRU1PSVpFX1NJWkUpIHtcbiAgICAgICAgICBjYWNoZS5jbGVhcigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgICB9KTtcblxuICAgICAgdmFyIGNhY2hlID0gcmVzdWx0LmNhY2hlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXJnZXMgdGhlIGZ1bmN0aW9uIG1ldGFkYXRhIG9mIGBzb3VyY2VgIGludG8gYGRhdGFgLlxuICAgICAqXG4gICAgICogTWVyZ2luZyBtZXRhZGF0YSByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygd3JhcHBlcnMgdXNlZCB0byBpbnZva2UgYSBmdW5jdGlvbi5cbiAgICAgKiBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgbWV0aG9kcyBsaWtlIGBfLmJpbmRgLCBgXy5jdXJyeWAsIGFuZCBgXy5wYXJ0aWFsYFxuICAgICAqIG1heSBiZSBhcHBsaWVkIHJlZ2FyZGxlc3Mgb2YgZXhlY3V0aW9uIG9yZGVyLiBNZXRob2RzIGxpa2UgYF8uYXJ5YCBhbmRcbiAgICAgKiBgXy5yZWFyZ2AgbW9kaWZ5IGZ1bmN0aW9uIGFyZ3VtZW50cywgbWFraW5nIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZVxuICAgICAqIGV4ZWN1dGVkIGltcG9ydGFudCwgcHJldmVudGluZyB0aGUgbWVyZ2luZyBvZiBtZXRhZGF0YS4gSG93ZXZlciwgd2UgbWFrZVxuICAgICAqIGFuIGV4Y2VwdGlvbiBmb3IgYSBzYWZlIGNvbWJpbmVkIGNhc2Ugd2hlcmUgY3VycmllZCBmdW5jdGlvbnMgaGF2ZSBgXy5hcnlgXG4gICAgICogYW5kIG9yIGBfLnJlYXJnYCBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBkYXRhIFRoZSBkZXN0aW5hdGlvbiBtZXRhZGF0YS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIHNvdXJjZSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGRhdGFgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lcmdlRGF0YShkYXRhLCBzb3VyY2UpIHtcbiAgICAgIHZhciBiaXRtYXNrID0gZGF0YVsxXSxcbiAgICAgICAgICBzcmNCaXRtYXNrID0gc291cmNlWzFdLFxuICAgICAgICAgIG5ld0JpdG1hc2sgPSBiaXRtYXNrIHwgc3JjQml0bWFzayxcbiAgICAgICAgICBpc0NvbW1vbiA9IG5ld0JpdG1hc2sgPCAoV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX0JJTkRfS0VZX0ZMQUcgfCBXUkFQX0FSWV9GTEFHKTtcblxuICAgICAgdmFyIGlzQ29tYm8gPVxuICAgICAgICAoKHNyY0JpdG1hc2sgPT0gV1JBUF9BUllfRkxBRykgJiYgKGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9GTEFHKSkgfHxcbiAgICAgICAgKChzcmNCaXRtYXNrID09IFdSQVBfQVJZX0ZMQUcpICYmIChiaXRtYXNrID09IFdSQVBfUkVBUkdfRkxBRykgJiYgKGRhdGFbN10ubGVuZ3RoIDw9IHNvdXJjZVs4XSkpIHx8XG4gICAgICAgICgoc3JjQml0bWFzayA9PSAoV1JBUF9BUllfRkxBRyB8IFdSQVBfUkVBUkdfRkxBRykpICYmIChzb3VyY2VbN10ubGVuZ3RoIDw9IHNvdXJjZVs4XSkgJiYgKGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9GTEFHKSk7XG5cbiAgICAgIC8vIEV4aXQgZWFybHkgaWYgbWV0YWRhdGEgY2FuJ3QgYmUgbWVyZ2VkLlxuICAgICAgaWYgKCEoaXNDb21tb24gfHwgaXNDb21ibykpIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGB0aGlzQXJnYCBpZiBhdmFpbGFibGUuXG4gICAgICBpZiAoc3JjQml0bWFzayAmIFdSQVBfQklORF9GTEFHKSB7XG4gICAgICAgIGRhdGFbMl0gPSBzb3VyY2VbMl07XG4gICAgICAgIC8vIFNldCB3aGVuIGN1cnJ5aW5nIGEgYm91bmQgZnVuY3Rpb24uXG4gICAgICAgIG5ld0JpdG1hc2sgfD0gYml0bWFzayAmIFdSQVBfQklORF9GTEFHID8gMCA6IFdSQVBfQ1VSUllfQk9VTkRfRkxBRztcbiAgICAgIH1cbiAgICAgIC8vIENvbXBvc2UgcGFydGlhbCBhcmd1bWVudHMuXG4gICAgICB2YXIgdmFsdWUgPSBzb3VyY2VbM107XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdmFyIHBhcnRpYWxzID0gZGF0YVszXTtcbiAgICAgICAgZGF0YVszXSA9IHBhcnRpYWxzID8gY29tcG9zZUFyZ3MocGFydGlhbHMsIHZhbHVlLCBzb3VyY2VbNF0pIDogdmFsdWU7XG4gICAgICAgIGRhdGFbNF0gPSBwYXJ0aWFscyA/IHJlcGxhY2VIb2xkZXJzKGRhdGFbM10sIFBMQUNFSE9MREVSKSA6IHNvdXJjZVs0XTtcbiAgICAgIH1cbiAgICAgIC8vIENvbXBvc2UgcGFydGlhbCByaWdodCBhcmd1bWVudHMuXG4gICAgICB2YWx1ZSA9IHNvdXJjZVs1XTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBwYXJ0aWFscyA9IGRhdGFbNV07XG4gICAgICAgIGRhdGFbNV0gPSBwYXJ0aWFscyA/IGNvbXBvc2VBcmdzUmlnaHQocGFydGlhbHMsIHZhbHVlLCBzb3VyY2VbNl0pIDogdmFsdWU7XG4gICAgICAgIGRhdGFbNl0gPSBwYXJ0aWFscyA/IHJlcGxhY2VIb2xkZXJzKGRhdGFbNV0sIFBMQUNFSE9MREVSKSA6IHNvdXJjZVs2XTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGFyZ1Bvc2AgaWYgYXZhaWxhYmxlLlxuICAgICAgdmFsdWUgPSBzb3VyY2VbN107XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgZGF0YVs3XSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgYXJ5YCBpZiBpdCdzIHNtYWxsZXIuXG4gICAgICBpZiAoc3JjQml0bWFzayAmIFdSQVBfQVJZX0ZMQUcpIHtcbiAgICAgICAgZGF0YVs4XSA9IGRhdGFbOF0gPT0gbnVsbCA/IHNvdXJjZVs4XSA6IG5hdGl2ZU1pbihkYXRhWzhdLCBzb3VyY2VbOF0pO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgYXJpdHlgIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuXG4gICAgICBpZiAoZGF0YVs5XSA9PSBudWxsKSB7XG4gICAgICAgIGRhdGFbOV0gPSBzb3VyY2VbOV07XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBmdW5jYCBhbmQgbWVyZ2UgYml0bWFza3MuXG4gICAgICBkYXRhWzBdID0gc291cmNlWzBdO1xuICAgICAgZGF0YVsxXSA9IG5ld0JpdG1hc2s7XG5cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZVxuICAgICAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAgICAgKiBleGNlcHQgdGhhdCBpdCBpbmNsdWRlcyBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBuYXRpdmVLZXlzSW4ob2JqZWN0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gICAgICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggdHJhbnNmb3JtcyB0aGUgcmVzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvdmVyUmVzdChmdW5jLCBzdGFydCwgdHJhbnNmb3JtKSB7XG4gICAgICBzdGFydCA9IG5hdGl2ZU1heChzdGFydCA9PT0gdW5kZWZpbmVkID8gKGZ1bmMubGVuZ3RoIC0gMSkgOiBzdGFydCwgMCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgICAgIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgICAgICBvdGhlckFyZ3NbaW5kZXhdID0gYXJnc1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgb3RoZXJBcmdzW3N0YXJ0XSA9IHRyYW5zZm9ybShhcnJheSk7XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwYXJlbnQgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGF0aCBUaGUgcGF0aCB0byBnZXQgdGhlIHBhcmVudCB2YWx1ZSBvZi5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcGFyZW50IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhcmVudChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBwYXRoLmxlbmd0aCA8IDIgPyBvYmplY3QgOiBiYXNlR2V0KG9iamVjdCwgYmFzZVNsaWNlKHBhdGgsIDAsIC0xKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVvcmRlciBgYXJyYXlgIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGluZGV4ZXMgd2hlcmUgdGhlIGVsZW1lbnQgYXRcbiAgICAgKiB0aGUgZmlyc3QgaW5kZXggaXMgYXNzaWduZWQgYXMgdGhlIGZpcnN0IGVsZW1lbnQsIHRoZSBlbGVtZW50IGF0XG4gICAgICogdGhlIHNlY29uZCBpbmRleCBpcyBhc3NpZ25lZCBhcyB0aGUgc2Vjb25kIGVsZW1lbnQsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHJlb3JkZXIuXG4gICAgICogQHBhcmFtIHtBcnJheX0gaW5kZXhlcyBUaGUgYXJyYW5nZWQgYXJyYXkgaW5kZXhlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZW9yZGVyKGFycmF5LCBpbmRleGVzKSB7XG4gICAgICB2YXIgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1pbihpbmRleGVzLmxlbmd0aCwgYXJyTGVuZ3RoKSxcbiAgICAgICAgICBvbGRBcnJheSA9IGNvcHlBcnJheShhcnJheSk7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgaW5kZXggPSBpbmRleGVzW2xlbmd0aF07XG4gICAgICAgIGFycmF5W2xlbmd0aF0gPSBpc0luZGV4KGluZGV4LCBhcnJMZW5ndGgpID8gb2xkQXJyYXlbaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgLCB1bmxlc3MgYGtleWAgaXMgXCJfX3Byb3RvX19cIiBvciBcImNvbnN0cnVjdG9yXCIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2FmZUdldChvYmplY3QsIGtleSkge1xuICAgICAgaWYgKGtleSA9PT0gJ2NvbnN0cnVjdG9yJyAmJiB0eXBlb2Ygb2JqZWN0W2tleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoa2V5ID09ICdfX3Byb3RvX18nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgbWV0YWRhdGEgZm9yIGBmdW5jYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiB0aGlzIGZ1bmN0aW9uIGJlY29tZXMgaG90LCBpLmUuIGlzIGludm9rZWQgYSBsb3QgaW4gYSBzaG9ydFxuICAgICAqIHBlcmlvZCBvZiB0aW1lLCBpdCB3aWxsIHRyaXAgaXRzIGJyZWFrZXIgYW5kIHRyYW5zaXRpb24gdG8gYW4gaWRlbnRpdHlcbiAgICAgKiBmdW5jdGlvbiB0byBhdm9pZCBnYXJiYWdlIGNvbGxlY3Rpb24gcGF1c2VzIGluIFY4LiBTZWVcbiAgICAgKiBbVjggaXNzdWUgMjA3MF0oaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjA3MClcbiAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NvY2lhdGUgbWV0YWRhdGEgd2l0aC5cbiAgICAgKiBAcGFyYW0geyp9IGRhdGEgVGhlIG1ldGFkYXRhLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIHNldERhdGEgPSBzaG9ydE91dChiYXNlU2V0RGF0YSk7XG5cbiAgICAvKipcbiAgICAgKiBBIHNpbXBsZSB3cmFwcGVyIGFyb3VuZCB0aGUgZ2xvYmFsIFtgc2V0VGltZW91dGBdKGh0dHBzOi8vbWRuLmlvL3NldFRpbWVvdXQpLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ8T2JqZWN0fSBSZXR1cm5zIHRoZSB0aW1lciBpZCBvciB0aW1lb3V0IG9iamVjdC5cbiAgICAgKi9cbiAgICB2YXIgc2V0VGltZW91dCA9IGN0eFNldFRpbWVvdXQgfHwgZnVuY3Rpb24oZnVuYywgd2FpdCkge1xuICAgICAgcmV0dXJuIHJvb3Quc2V0VGltZW91dChmdW5jLCB3YWl0KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYGZ1bmNgIHRvIHJldHVybiBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgc2V0VG9TdHJpbmcgPSBzaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYHdyYXBwZXJgIHRvIG1pbWljIHRoZSBzb3VyY2Ugb2YgYHJlZmVyZW5jZWBcbiAgICAgKiB3aXRoIHdyYXBwZXIgZGV0YWlscyBpbiBhIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiB0aGUgc291cmNlIGJvZHkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHdyYXBwZXIgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWZlcmVuY2UgVGhlIHJlZmVyZW5jZSBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgd3JhcHBlcmAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0V3JhcFRvU3RyaW5nKHdyYXBwZXIsIHJlZmVyZW5jZSwgYml0bWFzaykge1xuICAgICAgdmFyIHNvdXJjZSA9IChyZWZlcmVuY2UgKyAnJyk7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcod3JhcHBlciwgaW5zZXJ0V3JhcERldGFpbHMoc291cmNlLCB1cGRhdGVXcmFwRGV0YWlscyhnZXRXcmFwRGV0YWlscyhzb3VyY2UpLCBiaXRtYXNrKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0J2xsIHNob3J0IG91dCBhbmQgaW52b2tlIGBpZGVudGl0eWAgaW5zdGVhZFxuICAgICAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICAgICAqIG1pbGxpc2Vjb25kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc2hvcnRhYmxlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNob3J0T3V0KGZ1bmMpIHtcbiAgICAgIHZhciBjb3VudCA9IDAsXG4gICAgICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHN0YW1wID0gbmF0aXZlTm93KCksXG4gICAgICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICAgICAgaWYgKHJlbWFpbmluZyA+IDApIHtcbiAgICAgICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHNbMF07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvdW50ID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zaHVmZmxlYCB3aGljaCBtdXRhdGVzIGFuZCBzZXRzIHRoZSBzaXplIG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzaHVmZmxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc2l6ZT1hcnJheS5sZW5ndGhdIFRoZSBzaXplIG9mIGBhcnJheWAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2h1ZmZsZVNlbGYoYXJyYXksIHNpemUpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxO1xuXG4gICAgICBzaXplID0gc2l6ZSA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogc2l6ZTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgc2l6ZSkge1xuICAgICAgICB2YXIgcmFuZCA9IGJhc2VSYW5kb20oaW5kZXgsIGxhc3RJbmRleCksXG4gICAgICAgICAgICB2YWx1ZSA9IGFycmF5W3JhbmRdO1xuXG4gICAgICAgIGFycmF5W3JhbmRdID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGFycmF5Lmxlbmd0aCA9IHNpemU7XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICovXG4gICAgdmFyIHN0cmluZ1RvUGF0aCA9IG1lbW9pemVDYXBwZWQoZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBpZiAoc3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IDQ2IC8qIC4gKi8pIHtcbiAgICAgICAgcmVzdWx0LnB1c2goJycpO1xuICAgICAgfVxuICAgICAgc3RyaW5nLnJlcGxhY2UocmVQcm9wTmFtZSwgZnVuY3Rpb24obWF0Y2gsIG51bWJlciwgcXVvdGUsIHN1YlN0cmluZykge1xuICAgICAgICByZXN1bHQucHVzaChxdW90ZSA/IHN1YlN0cmluZy5yZXBsYWNlKHJlRXNjYXBlQ2hhciwgJyQxJykgOiAobnVtYmVyIHx8IG1hdGNoKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge3N0cmluZ3xzeW1ib2x9IFJldHVybnMgdGhlIGtleS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgICAgIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgICAgIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZnVuY1RvU3RyaW5nLmNhbGwoZnVuYyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIChmdW5jICsgJycpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgfVxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgd3JhcHBlciBgZGV0YWlsc2AgYmFzZWQgb24gYGJpdG1hc2tgIGZsYWdzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IGRldGFpbHMgVGhlIGRldGFpbHMgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBkZXRhaWxzYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGVXcmFwRGV0YWlscyhkZXRhaWxzLCBiaXRtYXNrKSB7XG4gICAgICBhcnJheUVhY2god3JhcEZsYWdzLCBmdW5jdGlvbihwYWlyKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9ICdfLicgKyBwYWlyWzBdO1xuICAgICAgICBpZiAoKGJpdG1hc2sgJiBwYWlyWzFdKSAmJiAhYXJyYXlJbmNsdWRlcyhkZXRhaWxzLCB2YWx1ZSkpIHtcbiAgICAgICAgICBkZXRhaWxzLnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBkZXRhaWxzLnNvcnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHdyYXBwZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gd3JhcHBlciBUaGUgd3JhcHBlciB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgd3JhcHBlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ2xvbmUod3JhcHBlcikge1xuICAgICAgaWYgKHdyYXBwZXIgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICByZXR1cm4gd3JhcHBlci5jbG9uZSgpO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMb2Rhc2hXcmFwcGVyKHdyYXBwZXIuX193cmFwcGVkX18sIHdyYXBwZXIuX19jaGFpbl9fKTtcbiAgICAgIHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh3cmFwcGVyLl9fYWN0aW9uc19fKTtcbiAgICAgIHJlc3VsdC5fX2luZGV4X18gID0gd3JhcHBlci5fX2luZGV4X187XG4gICAgICByZXN1bHQuX192YWx1ZXNfXyA9IHdyYXBwZXIuX192YWx1ZXNfXztcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cyBzcGxpdCBpbnRvIGdyb3VwcyB0aGUgbGVuZ3RoIG9mIGBzaXplYC5cbiAgICAgKiBJZiBgYXJyYXlgIGNhbid0IGJlIHNwbGl0IGV2ZW5seSwgdGhlIGZpbmFsIGNodW5rIHdpbGwgYmUgdGhlIHJlbWFpbmluZ1xuICAgICAqIGVsZW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHByb2Nlc3MuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzaXplPTFdIFRoZSBsZW5ndGggb2YgZWFjaCBjaHVua1xuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY2h1bmtzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNodW5rKFsnYScsICdiJywgJ2MnLCAnZCddLCAyKTtcbiAgICAgKiAvLyA9PiBbWydhJywgJ2InXSwgWydjJywgJ2QnXV1cbiAgICAgKlxuICAgICAqIF8uY2h1bmsoWydhJywgJ2InLCAnYycsICdkJ10sIDMpO1xuICAgICAqIC8vID0+IFtbJ2EnLCAnYicsICdjJ10sIFsnZCddXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNodW5rKGFycmF5LCBzaXplLCBndWFyZCkge1xuICAgICAgaWYgKChndWFyZCA/IGlzSXRlcmF0ZWVDYWxsKGFycmF5LCBzaXplLCBndWFyZCkgOiBzaXplID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHNpemUgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2l6ZSA9IG5hdGl2ZU1heCh0b0ludGVnZXIoc2l6ZSksIDApO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGggfHwgc2l6ZSA8IDEpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobmF0aXZlQ2VpbChsZW5ndGggLyBzaXplKSk7XG5cbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSBiYXNlU2xpY2UoYXJyYXksIGluZGV4LCAoaW5kZXggKz0gc2l6ZSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IHdpdGggYWxsIGZhbHNleSB2YWx1ZXMgcmVtb3ZlZC4gVGhlIHZhbHVlcyBgZmFsc2VgLCBgbnVsbGAsXG4gICAgICogYDBgLCBgXCJcImAsIGB1bmRlZmluZWRgLCBhbmQgYE5hTmAgYXJlIGZhbHNleS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jb21wYWN0KFswLCAxLCBmYWxzZSwgMiwgJycsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wYWN0KGFycmF5KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBhcnJheSBjb25jYXRlbmF0aW5nIGBhcnJheWAgd2l0aCBhbnkgYWRkaXRpb25hbCBhcnJheXNcbiAgICAgKiBhbmQvb3IgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbmNhdGVuYXRlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBjb25jYXRlbmF0ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBjb25jYXRlbmF0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxXTtcbiAgICAgKiB2YXIgb3RoZXIgPSBfLmNvbmNhdChhcnJheSwgMiwgWzNdLCBbWzRdXSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvdGhlcik7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIFs0XV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25jYXQoKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBhcmdzID0gQXJyYXkobGVuZ3RoIC0gMSksXG4gICAgICAgICAgYXJyYXkgPSBhcmd1bWVudHNbMF0sXG4gICAgICAgICAgaW5kZXggPSBsZW5ndGg7XG5cbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIGFyZ3NbaW5kZXggLSAxXSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXlQdXNoKGlzQXJyYXkoYXJyYXkpID8gY29weUFycmF5KGFycmF5KSA6IFthcnJheV0sIGJhc2VGbGF0dGVuKGFyZ3MsIDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGBhcnJheWAgdmFsdWVzIG5vdCBpbmNsdWRlZCBpbiB0aGUgb3RoZXIgZ2l2ZW4gYXJyYXlzXG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsQWxsYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLndpdGhvdXQsIF8ueG9yXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGlmZmVyZW5jZShbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICovXG4gICAgdmFyIGRpZmZlcmVuY2UgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIGJhc2VGbGF0dGVuKHZhbHVlcywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kaWZmZXJlbmNlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCBhbmQgYHZhbHVlc2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsQWxsQnlgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGlmZmVyZW5jZUJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsxLjJdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRpZmZlcmVuY2VCeShbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sIFt7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZUJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdCh2YWx1ZXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGl0ZXJhdGVlKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgYmFzZUZsYXR0ZW4odmFsdWVzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZGlmZmVyZW5jZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YCB0byBgdmFsdWVzYC4gVGhlIG9yZGVyIGFuZFxuICAgICAqIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBjb21wYXJhdG9yXG4gICAgICogaXMgaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxXaXRoYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgKlxuICAgICAqIF8uZGlmZmVyZW5jZVdpdGgob2JqZWN0cywgW3sgJ3gnOiAxLCAneSc6IDIgfV0sIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZVdpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICB2YXIgY29tcGFyYXRvciA9IGxhc3QodmFsdWVzKTtcbiAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChjb21wYXJhdG9yKSkge1xuICAgICAgICBjb21wYXJhdG9yID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCBiYXNlRmxhdHRlbih2YWx1ZXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC41LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gZHJvcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kcm9wKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzIsIDNdXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbM11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdLCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkcm9wKGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIG4gPCAwID8gMCA6IG4sIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBlbmQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gZHJvcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BSaWdodChhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIG4gPSAoZ3VhcmQgfHwgbiA9PT0gdW5kZWZpbmVkKSA/IDEgOiB0b0ludGVnZXIobik7XG4gICAgICBuID0gbGVuZ3RoIC0gbjtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIDAsIG4gPCAwID8gMCA6IG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIGV4Y2x1ZGluZyBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGVuZC5cbiAgICAgKiBFbGVtZW50cyBhcmUgZHJvcHBlZCB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkcm9wUmlnaHRXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIHRydWUsIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgZXhjbHVkaW5nIGVsZW1lbnRzIGRyb3BwZWQgZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgICAqIEVsZW1lbnRzIGFyZSBkcm9wcGVkIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZHJvcFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsbHMgZWxlbWVudHMgb2YgYGFycmF5YCB3aXRoIGB2YWx1ZWAgZnJvbSBgc3RhcnRgIHVwIHRvLCBidXQgbm90XG4gICAgICogaW5jbHVkaW5nLCBgZW5kYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmlsbC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBmaWxsIGBhcnJheWAgd2l0aC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgKlxuICAgICAqIF8uZmlsbChhcnJheSwgJ2EnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydhJywgJ2EnLCAnYSddXG4gICAgICpcbiAgICAgKiBfLmZpbGwoQXJyYXkoMyksIDIpO1xuICAgICAqIC8vID0+IFsyLCAyLCAyXVxuICAgICAqXG4gICAgICogXy5maWxsKFs0LCA2LCA4LCAxMF0sICcqJywgMSwgMyk7XG4gICAgICogLy8gPT4gWzQsICcqJywgJyonLCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXJ0ICYmIHR5cGVvZiBzdGFydCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChhcnJheSwgdmFsdWUsIHN0YXJ0KSkge1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIGVuZCA9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlRmlsbChhcnJheSwgdmFsdWUsIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0XG4gICAgICogZWxlbWVudCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmb3VuZCBlbGVtZW50LCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXIgPT0gJ2Jhcm5leSc7IH0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnZnJlZCcsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IDJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRJbmRleGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50c1xuICAgICAqIG9mIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9YXJyYXkubGVuZ3RoLTFdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZm91bmQgZWxlbWVudCwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAncGViYmxlcyc7IH0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kTGFzdEluZGV4KHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmluZExhc3RJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IGxlbmd0aCAtIDE7XG4gICAgICBpZiAoZnJvbUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaW5kZXggPSB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgICAgaW5kZXggPSBmcm9tSW5kZXggPCAwXG4gICAgICAgICAgPyBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApXG4gICAgICAgICAgOiBuYXRpdmVNaW4oaW5kZXgsIGxlbmd0aCAtIDEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGluZGV4LCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGbGF0dGVucyBgYXJyYXlgIGEgc2luZ2xlIGxldmVsIGRlZXAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmxhdHRlbihbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICAgICAqIC8vID0+IFsxLCAyLCBbMywgWzRdXSwgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0dGVuKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIDEpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjdXJzaXZlbHkgZmxhdHRlbnMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuRGVlcChbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCA0LCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW5EZWVwKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIElORklOSVRZKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYGFycmF5YCB1cCB0byBgZGVwdGhgIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtkZXB0aD0xXSBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgWzIsIFszLCBbNF1dLCA1XV07XG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZXB0aChhcnJheSwgMSk7XG4gICAgICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuRGVwdGgoYXJyYXksIDIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCBbNF0sIDVdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdHRlbkRlcHRoKGFycmF5LCBkZXB0aCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgZGVwdGggPSBkZXB0aCA9PT0gdW5kZWZpbmVkID8gMSA6IHRvSW50ZWdlcihkZXB0aCk7XG4gICAgICByZXR1cm4gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW52ZXJzZSBvZiBgXy50b1BhaXJzYDsgdGhpcyBtZXRob2QgcmV0dXJucyBhbiBvYmplY3QgY29tcG9zZWRcbiAgICAgKiBmcm9tIGtleS12YWx1ZSBgcGFpcnNgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFpcnMgVGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZyb21QYWlycyhbWydhJywgMV0sIFsnYicsIDJdXSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gZnJvbVBhaXJzKHBhaXJzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYWlycyA9PSBudWxsID8gMCA6IHBhaXJzLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSB7fTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHBhaXIgPSBwYWlyc1tpbmRleF07XG4gICAgICAgIHJlc3VsdFtwYWlyWzBdXSA9IHBhaXJbMV07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyBmaXJzdFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmhlYWQoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiBfLmhlYWQoW10pO1xuICAgICAqIC8vID0+IHVuZGVmaW5lZFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGFycmF5WzBdIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGB2YWx1ZWAgaXMgZm91bmQgaW4gYGFycmF5YFxuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBJZiBgZnJvbUluZGV4YCBpcyBuZWdhdGl2ZSwgaXQncyB1c2VkIGFzIHRoZVxuICAgICAqIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5kZXhPZihbMSwgMiwgMSwgMl0sIDIpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIC8vIFNlYXJjaCBmcm9tIHRoZSBgZnJvbUluZGV4YC5cbiAgICAgKiBfLmluZGV4T2YoWzEsIDIsIDEsIDJdLCAyLCAyKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gZnJvbUluZGV4ID09IG51bGwgPyAwIDogdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIGluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBidXQgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbml0aWFsKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5pdGlhbChhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGJhc2VTbGljZShhcnJheSwgMCwgLTEpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIGFsbCBnaXZlbiBhcnJheXNcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgaW50ZXJzZWN0aW5nIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnRlcnNlY3Rpb24oWzIsIDFdLCBbMiwgM10pO1xuICAgICAqIC8vID0+IFsyXVxuICAgICAqL1xuICAgIHZhciBpbnRlcnNlY3Rpb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb25cbiAgICAgKiBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6XG4gICAgICogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgaW50ZXJzZWN0aW5nIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnRlcnNlY3Rpb25CeShbMi4xLCAxLjJdLCBbMi4zLCAzLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMi4xXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5pbnRlcnNlY3Rpb25CeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgaW50ZXJzZWN0aW9uQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGxhc3QoYXJyYXlzKSxcbiAgICAgICAgICBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuXG4gICAgICBpZiAoaXRlcmF0ZWUgPT09IGxhc3QobWFwcGVkKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcHBlZC5wb3AoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAobWFwcGVkLmxlbmd0aCAmJiBtYXBwZWRbMF0gPT09IGFycmF5c1swXSlcbiAgICAgICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheXNgLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXNcbiAgICAgKiBvZiByZXN1bHQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGNvbXBhcmF0b3IgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH1dXG4gICAgICovXG4gICAgdmFyIGludGVyc2VjdGlvbldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdChhcnJheXMpLFxuICAgICAgICAgIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG5cbiAgICAgIGNvbXBhcmF0b3IgPSB0eXBlb2YgY29tcGFyYXRvciA9PSAnZnVuY3Rpb24nID8gY29tcGFyYXRvciA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIG1hcHBlZC5wb3AoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAobWFwcGVkLmxlbmd0aCAmJiBtYXBwZWRbMF0gPT09IGFycmF5c1swXSlcbiAgICAgICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZCwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYWxsIGVsZW1lbnRzIGluIGBhcnJheWAgaW50byBhIHN0cmluZyBzZXBhcmF0ZWQgYnkgYHNlcGFyYXRvcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29udmVydC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3NlcGFyYXRvcj0nLCddIFRoZSBlbGVtZW50IHNlcGFyYXRvci5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBqb2luZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmpvaW4oWydhJywgJ2InLCAnYyddLCAnficpO1xuICAgICAqIC8vID0+ICdhfmJ+YydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBqb2luKGFycmF5LCBzZXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiBhcnJheSA9PSBudWxsID8gJycgOiBuYXRpdmVKb2luLmNhbGwoYXJyYXksIHNlcGFyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmxhc3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGFzdChhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGFycmF5W2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBhcnJheWAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1hcnJheS5sZW5ndGgtMV0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubGFzdEluZGV4T2YoWzEsIDIsIDEsIDJdLCAyKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiAvLyBTZWFyY2ggZnJvbSB0aGUgYGZyb21JbmRleGAuXG4gICAgICogXy5sYXN0SW5kZXhPZihbMSwgMiwgMSwgMl0sIDIsIDIpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gbGVuZ3RoO1xuICAgICAgaWYgKGZyb21JbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGluZGV4ID0gdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gICAgICAgIGluZGV4ID0gaW5kZXggPCAwID8gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKSA6IG5hdGl2ZU1pbihpbmRleCwgbGVuZ3RoIC0gMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlXG4gICAgICAgID8gc3RyaWN0TGFzdEluZGV4T2YoYXJyYXksIHZhbHVlLCBpbmRleClcbiAgICAgICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGluZGV4LCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBlbGVtZW50IGF0IGluZGV4IGBuYCBvZiBgYXJyYXlgLiBJZiBgbmAgaXMgbmVnYXRpdmUsIHRoZSBudGhcbiAgICAgKiBlbGVtZW50IGZyb20gdGhlIGVuZCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjExLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTBdIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byByZXR1cm4uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG50aCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnZCddO1xuICAgICAqXG4gICAgICogXy5udGgoYXJyYXksIDEpO1xuICAgICAqIC8vID0+ICdiJ1xuICAgICAqXG4gICAgICogXy5udGgoYXJyYXksIC0yKTtcbiAgICAgKiAvLyA9PiAnYyc7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbnRoKGFycmF5LCBuKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlTnRoKGFycmF5LCB0b0ludGVnZXIobikpIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGdpdmVuIHZhbHVlcyBmcm9tIGBhcnJheWAgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ud2l0aG91dGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC4gVXNlIGBfLnJlbW92ZWBcbiAgICAgKiB0byByZW1vdmUgZWxlbWVudHMgZnJvbSBhbiBhcnJheSBieSBwcmVkaWNhdGUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnYScsICdiJywgJ2MnXTtcbiAgICAgKlxuICAgICAqIF8ucHVsbChhcnJheSwgJ2EnLCAnYycpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2InLCAnYiddXG4gICAgICovXG4gICAgdmFyIHB1bGwgPSBiYXNlUmVzdChwdWxsQWxsKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucHVsbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhbiBhcnJheSBvZiB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlYCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnYScsICdiJywgJ2MnXTtcbiAgICAgKlxuICAgICAqIF8ucHVsbEFsbChhcnJheSwgWydhJywgJ2MnXSk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsnYicsICdiJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwdWxsQWxsKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoICYmIHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKVxuICAgICAgICA/IGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsQWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCBhbmQgYHZhbHVlc2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlQnlgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9LCB7ICd4JzogMyB9LCB7ICd4JzogMSB9XTtcbiAgICAgKlxuICAgICAqIF8ucHVsbEFsbEJ5KGFycmF5LCBbeyAneCc6IDEgfSwgeyAneCc6IDMgfV0sICd4Jyk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGxCeShhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGggJiYgdmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpXG4gICAgICAgID8gYmFzZVB1bGxBbGwoYXJyYXksIHZhbHVlcywgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucHVsbEFsbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YCB0byBgdmFsdWVzYC4gVGhlIGNvbXBhcmF0b3IgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZGlmZmVyZW5jZVdpdGhgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC42LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDMsICd5JzogNCB9LCB7ICd4JzogNSwgJ3knOiA2IH1dO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsV2l0aChhcnJheSwgW3sgJ3gnOiAzLCAneSc6IDQgfV0sIF8uaXNFcXVhbCk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiA1LCAneSc6IDYgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwdWxsQWxsV2l0aChhcnJheSwgdmFsdWVzLCBjb21wYXJhdG9yKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCAmJiB2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aClcbiAgICAgICAgPyBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBlbGVtZW50cyBmcm9tIGBhcnJheWAgY29ycmVzcG9uZGluZyB0byBgaW5kZXhlc2AgYW5kIHJldHVybnMgYW5cbiAgICAgKiBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5hdGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHsuLi4obnVtYmVyfG51bWJlcltdKX0gW2luZGV4ZXNdIFRoZSBpbmRleGVzIG9mIGVsZW1lbnRzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2EnLCAnYicsICdjJywgJ2QnXTtcbiAgICAgKiB2YXIgcHVsbGVkID0gXy5wdWxsQXQoYXJyYXksIFsxLCAzXSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydhJywgJ2MnXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cocHVsbGVkKTtcbiAgICAgKiAvLyA9PiBbJ2InLCAnZCddXG4gICAgICovXG4gICAgdmFyIHB1bGxBdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKGFycmF5LCBpbmRleGVzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gYmFzZUF0KGFycmF5LCBpbmRleGVzKTtcblxuICAgICAgYmFzZVB1bGxBdChhcnJheSwgYXJyYXlNYXAoaW5kZXhlcywgZnVuY3Rpb24oaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGlzSW5kZXgoaW5kZXgsIGxlbmd0aCkgPyAraW5kZXggOiBpbmRleDtcbiAgICAgIH0pLnNvcnQoY29tcGFyZUFzY2VuZGluZykpO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgZWxlbWVudHMgZnJvbSBgYXJyYXlgIHRoYXQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yXG4gICAgICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlIHJlbW92ZWQgZWxlbWVudHMuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmZpbHRlcmAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC4gVXNlIGBfLnB1bGxgXG4gICAgICogdG8gcHVsbCBlbGVtZW50cyBmcm9tIGFuIGFycmF5IGJ5IHZhbHVlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVtb3ZlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDMsIDRdO1xuICAgICAqIHZhciBldmVucyA9IF8ucmVtb3ZlKGFycmF5LCBmdW5jdGlvbihuKSB7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgM11cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGV2ZW5zKTtcbiAgICAgKiAvLyA9PiBbMiwgNF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZW1vdmUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaW5kZXhlcyA9IFtdLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgcHJlZGljYXRlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgICBpbmRleGVzLnB1c2goaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBiYXNlUHVsbEF0KGFycmF5LCBpbmRleGVzKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV2ZXJzZXMgYGFycmF5YCBzbyB0aGF0IHRoZSBmaXJzdCBlbGVtZW50IGJlY29tZXMgdGhlIGxhc3QsIHRoZSBzZWNvbmRcbiAgICAgKiBlbGVtZW50IGJlY29tZXMgdGhlIHNlY29uZCB0byBsYXN0LCBhbmQgc28gb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgIGFuZCBpcyBiYXNlZCBvblxuICAgICAqIFtgQXJyYXkjcmV2ZXJzZWBdKGh0dHBzOi8vbWRuLmlvL0FycmF5L3JldmVyc2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXy5yZXZlcnNlKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXZlcnNlKGFycmF5KSB7XG4gICAgICByZXR1cm4gYXJyYXkgPT0gbnVsbCA/IGFycmF5IDogbmF0aXZlUmV2ZXJzZS5jYWxsKGFycmF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBmcm9tIGBzdGFydGAgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGluc3RlYWQgb2ZcbiAgICAgKiBbYEFycmF5I3NsaWNlYF0oaHR0cHM6Ly9tZG4uaW8vQXJyYXkvc2xpY2UpIHRvIGVuc3VyZSBkZW5zZSBhcnJheXMgYXJlXG4gICAgICogcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCAmJiB0eXBlb2YgZW5kICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKGFycmF5LCBzdGFydCwgZW5kKSkge1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIGVuZCA9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBzdGFydCA9IHN0YXJ0ID09IG51bGwgPyAwIDogdG9JbnRlZ2VyKHN0YXJ0KTtcbiAgICAgICAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiB0b0ludGVnZXIoZW5kKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZXMgYSBiaW5hcnkgc2VhcmNoIHRvIGRldGVybWluZSB0aGUgbG93ZXN0IGluZGV4IGF0IHdoaWNoIGB2YWx1ZWBcbiAgICAgKiBzaG91bGQgYmUgaW5zZXJ0ZWQgaW50byBgYXJyYXlgIGluIG9yZGVyIHRvIG1haW50YWluIGl0cyBzb3J0IG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRJbmRleChbMzAsIDUwXSwgNDApO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleChhcnJheSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRlZEluZGV4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIGZvciBgdmFsdWVgIGFuZCBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCB0byBjb21wdXRlIHRoZWlyXG4gICAgICogc29ydCByYW5raW5nLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogNCB9LCB7ICd4JzogNSB9XTtcbiAgICAgKlxuICAgICAqIF8uc29ydGVkSW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCBmdW5jdGlvbihvKSB7IHJldHVybiBvLng7IH0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29ydGVkSW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCAneCcpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbmRleE9mYCBleGNlcHQgdGhhdCBpdCBwZXJmb3JtcyBhIGJpbmFyeVxuICAgICAqIHNlYXJjaCBvbiBhIHNvcnRlZCBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZEluZGV4T2YoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkSW5kZXhPZihhcnJheSwgdmFsdWUpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGgpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSk7XG4gICAgICAgIGlmIChpbmRleCA8IGxlbmd0aCAmJiBlcShhcnJheVtpbmRleF0sIHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkSW5kZXhgIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgdGhlIGhpZ2hlc3RcbiAgICAgKiBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG9cbiAgICAgKiBtYWludGFpbiBpdHMgc29ydCBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4KFs0LCA1LCA1LCA1LCA2XSwgNSk7XG4gICAgICogLy8gPT4gNFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZExhc3RJbmRleChhcnJheSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRlZExhc3RJbmRleGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCBmb3IgYHZhbHVlYCBhbmQgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgdG8gY29tcHV0ZSB0aGVpclxuICAgICAqIHNvcnQgcmFua2luZy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDQgfSwgeyAneCc6IDUgfV07XG4gICAgICpcbiAgICAgKiBfLnNvcnRlZExhc3RJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ueDsgfSk7XG4gICAgICogLy8gPT4gMVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCAneCcpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRMYXN0SW5kZXhCeShhcnJheSwgdmFsdWUsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubGFzdEluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IHBlcmZvcm1zIGEgYmluYXJ5XG4gICAgICogc2VhcmNoIG9uIGEgc29ydGVkIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4T2YoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4T2YoYXJyYXksIHZhbHVlKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHRydWUpIC0gMTtcbiAgICAgICAgaWYgKGVxKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCdzIGRlc2lnbmVkIGFuZCBvcHRpbWl6ZWRcbiAgICAgKiBmb3Igc29ydGVkIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZFVuaXEoWzEsIDEsIDJdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRVbmlxKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlU29ydGVkVW5pcShhcnJheSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFCeWAgZXhjZXB0IHRoYXQgaXQncyBkZXNpZ25lZCBhbmQgb3B0aW1pemVkXG4gICAgICogZm9yIHNvcnRlZCBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZFVuaXFCeShbMS4xLCAxLjIsIDIuMywgMi40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMSwgMi4zXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZFVuaXFCeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTb3J0ZWRVbmlxKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgYnV0IHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRhaWwoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWlsKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVNsaWNlKGFycmF5LCAxLCBsZW5ndGgpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHRha2UuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiBfLnRha2UoWzEsIDIsIDNdLCA1KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZShhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICAgIGlmICghKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIDAsIG4gPCAwID8gMCA6IG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggYG5gIGVsZW1lbnRzIHRha2VuIGZyb20gdGhlIGVuZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byB0YWtlLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqXG4gICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZVJpZ2h0KGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIG4gPSBsZW5ndGggLSBuO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgbiA8IDAgPyAwIDogbiwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGVsZW1lbnRzIHRha2VuIGZyb20gdGhlIGVuZC4gRWxlbWVudHMgYXJlXG4gICAgICogdGFrZW4gdW50aWwgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoXG4gICAgICogdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlUmlnaHRXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGZhbHNlLCB0cnVlKVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgYmVnaW5uaW5nLiBFbGVtZW50c1xuICAgICAqIGFyZSB0YWtlbiB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlV2hpbGUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlV2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRha2VXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzLCBpbiBvcmRlciwgZnJvbSBhbGwgZ2l2ZW4gYXJyYXlzIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaW9uKFsyXSwgWzEsIDJdKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKi9cbiAgICB2YXIgdW5pb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaW9uYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgZWFjaCBgYXJyYXlzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5XG4gICAgICogd2hpY2ggdW5pcXVlbmVzcyBpcyBjb21wdXRlZC4gUmVzdWx0IHZhbHVlcyBhcmUgY2hvc2VuIGZyb20gdGhlIGZpcnN0XG4gICAgICogYXJyYXkgaW4gd2hpY2ggdGhlIHZhbHVlIG9jY3Vycy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6XG4gICAgICogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaW9uQnkoWzIuMV0sIFsxLjIsIDIuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjEsIDEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udW5pb25CeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEgfSwgeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgdW5pb25CeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdChhcnJheXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGl0ZXJhdGVlKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheXNgLiBSZXN1bHQgdmFsdWVzIGFyZSBjaG9zZW4gZnJvbVxuICAgICAqIHRoZSBmaXJzdCBhcnJheSBpbiB3aGljaCB0aGUgdmFsdWUgb2NjdXJzLiBUaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy51bmlvbldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMSB9XVxuICAgICAqL1xuICAgIHZhciB1bmlvbldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdChhcnJheXMpO1xuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGR1cGxpY2F0ZS1mcmVlIHZlcnNpb24gb2YgYW4gYXJyYXksIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGluIHdoaWNoIG9ubHkgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgZWFjaCBlbGVtZW50XG4gICAgICogaXMga2VwdC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1clxuICAgICAqIGluIHRoZSBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXEoWzIsIDEsIDJdKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB1bmlxdWVuZXNzIGlzIGNvbXB1dGVkLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZVxuICAgICAqIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXFCeShbMi4xLCAxLjIsIDIuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjEsIDEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udW5pcUJ5KFt7ICd4JzogMSB9LCB7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEgfSwgeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxQnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXNcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheS5UaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy51bmlxV2l0aChvYmplY3RzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxV2l0aChhcnJheSwgY29tcGFyYXRvcikge1xuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZVVuaXEoYXJyYXksIHVuZGVmaW5lZCwgY29tcGFyYXRvcikgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnppcGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhbiBhcnJheSBvZiBncm91cGVkXG4gICAgICogZWxlbWVudHMgYW5kIGNyZWF0ZXMgYW4gYXJyYXkgcmVncm91cGluZyB0aGUgZWxlbWVudHMgdG8gdGhlaXIgcHJlLXppcFxuICAgICAqIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cyB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHJlZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHppcHBlZCA9IF8uemlwKFsnYScsICdiJ10sIFsxLCAyXSwgW3RydWUsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gW1snYScsIDEsIHRydWVdLCBbJ2InLCAyLCBmYWxzZV1dXG4gICAgICpcbiAgICAgKiBfLnVuemlwKHppcHBlZCk7XG4gICAgICogLy8gPT4gW1snYScsICdiJ10sIFsxLCAyXSwgW3RydWUsIGZhbHNlXV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnppcChhcnJheSkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gMDtcbiAgICAgIGFycmF5ID0gYXJyYXlGaWx0ZXIoYXJyYXksIGZ1bmN0aW9uKGdyb3VwKSB7XG4gICAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChncm91cCkpIHtcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoZ3JvdXAubGVuZ3RoLCBsZW5ndGgpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBiYXNlVGltZXMobGVuZ3RoLCBmdW5jdGlvbihpbmRleCkge1xuICAgICAgICByZXR1cm4gYXJyYXlNYXAoYXJyYXksIGJhc2VQcm9wZXJ0eShpbmRleCkpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bnppcGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHRvIHNwZWNpZnlcbiAgICAgKiBob3cgcmVncm91cGVkIHZhbHVlcyBzaG91bGQgYmUgY29tYmluZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhlXG4gICAgICogZWxlbWVudHMgb2YgZWFjaCBncm91cDogKC4uLmdyb3VwKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjguMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzIHRvIHByb2Nlc3MuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiB0byBjb21iaW5lXG4gICAgICogIHJlZ3JvdXBlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgemlwcGVkID0gXy56aXAoWzEsIDJdLCBbMTAsIDIwXSwgWzEwMCwgMjAwXSk7XG4gICAgICogLy8gPT4gW1sxLCAxMCwgMTAwXSwgWzIsIDIwLCAyMDBdXVxuICAgICAqXG4gICAgICogXy51bnppcFdpdGgoemlwcGVkLCBfLmFkZCk7XG4gICAgICogLy8gPT4gWzMsIDMwLCAzMDBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW56aXBXaXRoKGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gdW56aXAoYXJyYXkpO1xuICAgICAgaWYgKGl0ZXJhdGVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheU1hcChyZXN1bHQsIGZ1bmN0aW9uKGdyb3VwKSB7XG4gICAgICAgIHJldHVybiBhcHBseShpdGVyYXRlZSwgdW5kZWZpbmVkLCBncm91cCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IGV4Y2x1ZGluZyBhbGwgZ2l2ZW4gdmFsdWVzIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBzZWUgXy5kaWZmZXJlbmNlLCBfLnhvclxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLndpdGhvdXQoWzIsIDEsIDIsIDNdLCAxLCAyKTtcbiAgICAgKiAvLyA9PiBbM11cbiAgICAgKi9cbiAgICB2YXIgd2l0aG91dCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgdmFsdWVzKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzIHRoYXQgaXMgdGhlXG4gICAgICogW3N5bW1ldHJpYyBkaWZmZXJlbmNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TeW1tZXRyaWNfZGlmZmVyZW5jZSlcbiAgICAgKiBvZiB0aGUgZ2l2ZW4gYXJyYXlzLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlclxuICAgICAqIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLmRpZmZlcmVuY2UsIF8ud2l0aG91dFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnhvcihbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzEsIDNdXG4gICAgICovXG4gICAgdmFyIHhvciA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgcmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLCBpc0FycmF5TGlrZU9iamVjdCkpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy54b3JgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnlcbiAgICAgKiB3aGljaCBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkXG4gICAgICogYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5cy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmVcbiAgICAgKiBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnhvckJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsxLjIsIDMuNF1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ueG9yQnkoW3sgJ3gnOiAxIH1dLCBbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sICd4Jyk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgdmFyIHhvckJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KGFycmF5cyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLCBpc0FycmF5TGlrZU9iamVjdCksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnhvcmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLiBUaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy54b3JXaXRoKG9iamVjdHMsIG90aGVycywgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAxIH1dXG4gICAgICovXG4gICAgdmFyIHhvcldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdChhcnJheXMpO1xuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLCBpc0FycmF5TGlrZU9iamVjdCksIHVuZGVmaW5lZCwgY29tcGFyYXRvcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMsIHRoZSBmaXJzdCBvZiB3aGljaCBjb250YWlucyB0aGVcbiAgICAgKiBmaXJzdCBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gYXJyYXlzLCB0aGUgc2Vjb25kIG9mIHdoaWNoIGNvbnRhaW5zIHRoZVxuICAgICAqIHNlY29uZCBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gYXJyYXlzLCBhbmQgc28gb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXAoWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMSwgdHJ1ZV0sIFsnYicsIDIsIGZhbHNlXV1cbiAgICAgKi9cbiAgICB2YXIgemlwID0gYmFzZVJlc3QodW56aXApO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mcm9tUGFpcnNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgdHdvIGFycmF5cyxcbiAgICAgKiBvbmUgb2YgcHJvcGVydHkgaWRlbnRpZmllcnMgYW5kIG9uZSBvZiBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjQuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwcm9wcz1bXV0gVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXBPYmplY3QoWydhJywgJ2InXSwgWzEsIDJdKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB6aXBPYmplY3QocHJvcHMsIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGJhc2VaaXBPYmplY3QocHJvcHMgfHwgW10sIHZhbHVlcyB8fCBbXSwgYXNzaWduVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwT2JqZWN0YCBleGNlcHQgdGhhdCBpdCBzdXBwb3J0cyBwcm9wZXJ0eSBwYXRocy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwcm9wcz1bXV0gVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXBPYmplY3REZWVwKFsnYS5iWzBdLmMnLCAnYS5iWzFdLmQnXSwgWzEsIDJdKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnYic6IFt7ICdjJzogMSB9LCB7ICdkJzogMiB9XSB9IH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB6aXBPYmplY3REZWVwKHByb3BzLCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzIHx8IFtdLCB2YWx1ZXMgfHwgW10sIGJhc2VTZXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgdG8gc3BlY2lmeVxuICAgICAqIGhvdyBncm91cGVkIHZhbHVlcyBzaG91bGQgYmUgY29tYmluZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhlXG4gICAgICogZWxlbWVudHMgb2YgZWFjaCBncm91cDogKC4uLmdyb3VwKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjguMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmVcbiAgICAgKiAgZ3JvdXBlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXBXaXRoKFsxLCAyXSwgWzEwLCAyMF0sIFsxMDAsIDIwMF0sIGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBhICsgYiArIGM7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gWzExMSwgMjIyXVxuICAgICAqL1xuICAgIHZhciB6aXBXaXRoID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXlzLmxlbmd0aCxcbiAgICAgICAgICBpdGVyYXRlZSA9IGxlbmd0aCA+IDEgPyBhcnJheXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG5cbiAgICAgIGl0ZXJhdGVlID0gdHlwZW9mIGl0ZXJhdGVlID09ICdmdW5jdGlvbicgPyAoYXJyYXlzLnBvcCgpLCBpdGVyYXRlZSkgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gdW56aXBXaXRoKGFycmF5cywgaXRlcmF0ZWUpO1xuICAgIH0pO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UgdGhhdCB3cmFwcyBgdmFsdWVgIHdpdGggZXhwbGljaXQgbWV0aG9kXG4gICAgICogY2hhaW4gc2VxdWVuY2VzIGVuYWJsZWQuIFRoZSByZXN1bHQgb2Ygc3VjaCBzZXF1ZW5jZXMgbXVzdCBiZSB1bndyYXBwZWRcbiAgICAgKiB3aXRoIGBfI3ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjMuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiB2YXIgeW91bmdlc3QgPSBfXG4gICAgICogICAuY2hhaW4odXNlcnMpXG4gICAgICogICAuc29ydEJ5KCdhZ2UnKVxuICAgICAqICAgLm1hcChmdW5jdGlvbihvKSB7XG4gICAgICogICAgIHJldHVybiBvLnVzZXIgKyAnIGlzICcgKyBvLmFnZTtcbiAgICAgKiAgIH0pXG4gICAgICogICAuaGVhZCgpXG4gICAgICogICAudmFsdWUoKTtcbiAgICAgKiAvLyA9PiAncGViYmxlcyBpcyAxJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNoYWluKHZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbG9kYXNoKHZhbHVlKTtcbiAgICAgIHJlc3VsdC5fX2NoYWluX18gPSB0cnVlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpbnZva2VzIGBpbnRlcmNlcHRvcmAgYW5kIHJldHVybnMgYHZhbHVlYC4gVGhlIGludGVyY2VwdG9yXG4gICAgICogaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKHZhbHVlKS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG9cbiAgICAgKiBcInRhcCBpbnRvXCIgYSBtZXRob2QgY2hhaW4gc2VxdWVuY2UgaW4gb3JkZXIgdG8gbW9kaWZ5IGludGVybWVkaWF0ZSByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb3ZpZGUgdG8gYGludGVyY2VwdG9yYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpbnRlcmNlcHRvciBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8oWzEsIDIsIDNdKVxuICAgICAqICAudGFwKGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgICogICAgLy8gTXV0YXRlIGlucHV0IGFycmF5LlxuICAgICAqICAgIGFycmF5LnBvcCgpO1xuICAgICAqICB9KVxuICAgICAqICAucmV2ZXJzZSgpXG4gICAgICogIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRhcCh2YWx1ZSwgaW50ZXJjZXB0b3IpIHtcbiAgICAgIGludGVyY2VwdG9yKHZhbHVlKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnRhcGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGBpbnRlcmNlcHRvcmAuXG4gICAgICogVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gXCJwYXNzIHRocnVcIiB2YWx1ZXMgcmVwbGFjaW5nIGludGVybWVkaWF0ZVxuICAgICAqIHJlc3VsdHMgaW4gYSBtZXRob2QgY2hhaW4gc2VxdWVuY2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvdmlkZSB0byBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGludGVyY2VwdG9yIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfKCcgIGFiYyAgJylcbiAgICAgKiAgLmNoYWluKClcbiAgICAgKiAgLnRyaW0oKVxuICAgICAqICAudGhydShmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgIHJldHVybiBbdmFsdWVdO1xuICAgICAqICB9KVxuICAgICAqICAudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbJ2FiYyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGhydSh2YWx1ZSwgaW50ZXJjZXB0b3IpIHtcbiAgICAgIHJldHVybiBpbnRlcmNlcHRvcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgdGhlIHdyYXBwZXIgdmVyc2lvbiBvZiBgXy5hdGAuXG4gICAgICpcbiAgICAgKiBAbmFtZSBhdFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH0sIDRdIH07XG4gICAgICpcbiAgICAgKiBfKG9iamVjdCkuYXQoWydhWzBdLmIuYycsICdhWzFdJ10pLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzMsIDRdXG4gICAgICovXG4gICAgdmFyIHdyYXBwZXJBdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKHBhdGhzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHN0YXJ0ID0gbGVuZ3RoID8gcGF0aHNbMF0gOiAwLFxuICAgICAgICAgIHZhbHVlID0gdGhpcy5fX3dyYXBwZWRfXyxcbiAgICAgICAgICBpbnRlcmNlcHRvciA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gYmFzZUF0KG9iamVjdCwgcGF0aHMpOyB9O1xuXG4gICAgICBpZiAobGVuZ3RoID4gMSB8fCB0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCB8fFxuICAgICAgICAgICEodmFsdWUgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikgfHwgIWlzSW5kZXgoc3RhcnQpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRocnUoaW50ZXJjZXB0b3IpO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZShzdGFydCwgK3N0YXJ0ICsgKGxlbmd0aCA/IDEgOiAwKSk7XG4gICAgICB2YWx1ZS5fX2FjdGlvbnNfXy5wdXNoKHtcbiAgICAgICAgJ2Z1bmMnOiB0aHJ1LFxuICAgICAgICAnYXJncyc6IFtpbnRlcmNlcHRvcl0sXG4gICAgICAgICd0aGlzQXJnJzogdW5kZWZpbmVkXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih2YWx1ZSwgdGhpcy5fX2NoYWluX18pLnRocnUoZnVuY3Rpb24oYXJyYXkpIHtcbiAgICAgICAgaWYgKGxlbmd0aCAmJiAhYXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgYXJyYXkucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnJheTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2Ugd2l0aCBleHBsaWNpdCBtZXRob2QgY2hhaW4gc2VxdWVuY2VzIGVuYWJsZWQuXG4gICAgICpcbiAgICAgKiBAbmFtZSBjaGFpblxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBBIHNlcXVlbmNlIHdpdGhvdXQgZXhwbGljaXQgY2hhaW5pbmcuXG4gICAgICogXyh1c2VycykuaGVhZCgpO1xuICAgICAqIC8vID0+IHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH1cbiAgICAgKlxuICAgICAqIC8vIEEgc2VxdWVuY2Ugd2l0aCBleHBsaWNpdCBjaGFpbmluZy5cbiAgICAgKiBfKHVzZXJzKVxuICAgICAqICAgLmNoYWluKClcbiAgICAgKiAgIC5oZWFkKClcbiAgICAgKiAgIC5waWNrKCd1c2VyJylcbiAgICAgKiAgIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IHsgJ3VzZXInOiAnYmFybmV5JyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlckNoYWluKCkge1xuICAgICAgcmV0dXJuIGNoYWluKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIHRoZSBjaGFpbiBzZXF1ZW5jZSBhbmQgcmV0dXJucyB0aGUgd3JhcHBlZCByZXN1bHQuXG4gICAgICpcbiAgICAgKiBAbmFtZSBjb21taXRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDJdO1xuICAgICAqIHZhciB3cmFwcGVkID0gXyhhcnJheSkucHVzaCgzKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQgPSB3cmFwcGVkLmNvbW1pdCgpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIHdyYXBwZWQubGFzdCgpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ29tbWl0KCkge1xuICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHRoaXMudmFsdWUoKSwgdGhpcy5fX2NoYWluX18pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG5leHQgdmFsdWUgb24gYSB3cmFwcGVkIG9iamVjdCBmb2xsb3dpbmcgdGhlXG4gICAgICogW2l0ZXJhdG9yIHByb3RvY29sXShodHRwczovL21kbi5pby9pdGVyYXRpb25fcHJvdG9jb2xzI2l0ZXJhdG9yKS5cbiAgICAgKlxuICAgICAqIEBuYW1lIG5leHRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXh0IGl0ZXJhdG9yIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKTtcbiAgICAgKlxuICAgICAqIHdyYXBwZWQubmV4dCgpO1xuICAgICAqIC8vID0+IHsgJ2RvbmUnOiBmYWxzZSwgJ3ZhbHVlJzogMSB9XG4gICAgICpcbiAgICAgKiB3cmFwcGVkLm5leHQoKTtcbiAgICAgKiAvLyA9PiB7ICdkb25lJzogZmFsc2UsICd2YWx1ZSc6IDIgfVxuICAgICAqXG4gICAgICogd3JhcHBlZC5uZXh0KCk7XG4gICAgICogLy8gPT4geyAnZG9uZSc6IHRydWUsICd2YWx1ZSc6IHVuZGVmaW5lZCB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlck5leHQoKSB7XG4gICAgICBpZiAodGhpcy5fX3ZhbHVlc19fID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fX3ZhbHVlc19fID0gdG9BcnJheSh0aGlzLnZhbHVlKCkpO1xuICAgICAgfVxuICAgICAgdmFyIGRvbmUgPSB0aGlzLl9faW5kZXhfXyA+PSB0aGlzLl9fdmFsdWVzX18ubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlID0gZG9uZSA/IHVuZGVmaW5lZCA6IHRoaXMuX192YWx1ZXNfX1t0aGlzLl9faW5kZXhfXysrXTtcblxuICAgICAgcmV0dXJuIHsgJ2RvbmUnOiBkb25lLCAndmFsdWUnOiB2YWx1ZSB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgdGhlIHdyYXBwZXIgdG8gYmUgaXRlcmFibGUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBTeW1ib2wuaXRlcmF0b3JcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSB3cmFwcGVyIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHdyYXBwZWQgPSBfKFsxLCAyXSk7XG4gICAgICpcbiAgICAgKiB3cmFwcGVkW1N5bWJvbC5pdGVyYXRvcl0oKSA9PT0gd3JhcHBlZDtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBBcnJheS5mcm9tKHdyYXBwZWQpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJUb0l0ZXJhdG9yKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBjaGFpbiBzZXF1ZW5jZSBwbGFudGluZyBgdmFsdWVgIGFzIHRoZSB3cmFwcGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQG5hbWUgcGxhbnRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwbGFudC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKS5tYXAoc3F1YXJlKTtcbiAgICAgKiB2YXIgb3RoZXIgPSB3cmFwcGVkLnBsYW50KFszLCA0XSk7XG4gICAgICpcbiAgICAgKiBvdGhlci52YWx1ZSgpO1xuICAgICAqIC8vID0+IFs5LCAxNl1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMSwgNF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyUGxhbnQodmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQsXG4gICAgICAgICAgcGFyZW50ID0gdGhpcztcblxuICAgICAgd2hpbGUgKHBhcmVudCBpbnN0YW5jZW9mIGJhc2VMb2Rhc2gpIHtcbiAgICAgICAgdmFyIGNsb25lID0gd3JhcHBlckNsb25lKHBhcmVudCk7XG4gICAgICAgIGNsb25lLl9faW5kZXhfXyA9IDA7XG4gICAgICAgIGNsb25lLl9fdmFsdWVzX18gPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICBwcmV2aW91cy5fX3dyYXBwZWRfXyA9IGNsb25lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGNsb25lO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcmV2aW91cyA9IGNsb25lO1xuICAgICAgICBwYXJlbnQgPSBwYXJlbnQuX193cmFwcGVkX187XG4gICAgICB9XG4gICAgICBwcmV2aW91cy5fX3dyYXBwZWRfXyA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgd3JhcHBlciB2ZXJzaW9uIG9mIGBfLnJldmVyc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgdGhlIHdyYXBwZWQgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAbmFtZSByZXZlcnNlXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgKlxuICAgICAqIF8oYXJyYXkpLnJldmVyc2UoKS52YWx1ZSgpXG4gICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclJldmVyc2UoKSB7XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fO1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpIHtcbiAgICAgICAgdmFyIHdyYXBwZWQgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoKSB7XG4gICAgICAgICAgd3JhcHBlZCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB3cmFwcGVkID0gd3JhcHBlZC5yZXZlcnNlKCk7XG4gICAgICAgIHdyYXBwZWQuX19hY3Rpb25zX18ucHVzaCh7XG4gICAgICAgICAgJ2Z1bmMnOiB0aHJ1LFxuICAgICAgICAgICdhcmdzJzogW3JldmVyc2VdLFxuICAgICAgICAgICd0aGlzQXJnJzogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIod3JhcHBlZCwgdGhpcy5fX2NoYWluX18pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMudGhydShyZXZlcnNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyB0aGUgY2hhaW4gc2VxdWVuY2UgdG8gcmVzb2x2ZSB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQG5hbWUgdmFsdWVcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyB0b0pTT04sIHZhbHVlT2ZcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXyhbMSwgMiwgM10pLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclZhbHVlKCkge1xuICAgICAgcmV0dXJuIGJhc2VXcmFwcGVyVmFsdWUodGhpcy5fX3dyYXBwZWRfXywgdGhpcy5fX2FjdGlvbnNfXyk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2Yga2V5cyBnZW5lcmF0ZWQgZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIG9mXG4gICAgICogZWFjaCBrZXkgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUga2V5IHdhcyByZXR1cm5lZCBieSBgaXRlcmF0ZWVgLiBUaGVcbiAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNvdW50QnkoWzYuMSwgNC4yLCA2LjNdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiB7ICc0JzogMSwgJzYnOiAyIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uY291bnRCeShbJ29uZScsICd0d28nLCAndGhyZWUnXSwgJ2xlbmd0aCcpO1xuICAgICAqIC8vID0+IHsgJzMnOiAyLCAnNSc6IDEgfVxuICAgICAqL1xuICAgIHZhciBjb3VudEJ5ID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwga2V5KSkge1xuICAgICAgICArK3Jlc3VsdFtrZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgKiphbGwqKiBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAuXG4gICAgICogSXRlcmF0aW9uIGlzIHN0b3BwZWQgb25jZSBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB0cnVlYCBmb3JcbiAgICAgKiBbZW1wdHkgY29sbGVjdGlvbnNdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VtcHR5X3NldCkgYmVjYXVzZVxuICAgICAqIFtldmVyeXRoaW5nIGlzIHRydWVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZhY3VvdXNfdHJ1dGgpIG9mXG4gICAgICogZWxlbWVudHMgb2YgZW1wdHkgY29sbGVjdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYWxsIGVsZW1lbnRzIHBhc3MgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmV2ZXJ5KFt0cnVlLCAxLCBudWxsLCAneWVzJ10sIEJvb2xlYW4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmV2ZXJ5KHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmV2ZXJ5KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBldmVyeShjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUV2ZXJ5IDogYmFzZUV2ZXJ5O1xuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpKSB7XG4gICAgICAgIHByZWRpY2F0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgYWxsIGVsZW1lbnRzXG4gICAgICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5yZW1vdmVgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgICAqIEBzZWUgXy5yZWplY3RcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBDb21iaW5pbmcgc2V2ZXJhbCBwcmVkaWNhdGVzIHVzaW5nIGBfLm92ZXJFdmVyeWAgb3IgYF8ub3ZlclNvbWVgLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCBfLm92ZXJTb21lKFt7ICdhZ2UnOiAzNiB9LCBbJ2FnZScsIDQwXV0pKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAnYmFybmV5J11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUZpbHRlciA6IGJhc2VGaWx0ZXI7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hdGNoZWQgZWxlbWVudCwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbmQodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ2Jhcm5leSdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kKHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3QgZm9yICdwZWJibGVzJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ2ZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmQodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gICAgICovXG4gICAgdmFyIGZpbmQgPSBjcmVhdGVGaW5kKGZpbmRJbmRleCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBgY29sbGVjdGlvbmAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1jb2xsZWN0aW9uLmxlbmd0aC0xXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hdGNoZWQgZWxlbWVudCwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5maW5kTGFzdChbMSwgMiwgMywgNF0sIGZ1bmN0aW9uKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAxO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICB2YXIgZmluZExhc3QgPSBjcmVhdGVGaW5kKGZpbmRMYXN0SW5kZXgpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZsYXR0ZW5lZCBhcnJheSBvZiB2YWx1ZXMgYnkgcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gXG4gICAgICogdGhydSBgaXRlcmF0ZWVgIGFuZCBmbGF0dGVuaW5nIHRoZSBtYXBwZWQgcmVzdWx0cy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkdXBsaWNhdGUobikge1xuICAgICAqICAgcmV0dXJuIFtuLCBuXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXAoWzEsIDJdLCBkdXBsaWNhdGUpO1xuICAgICAqIC8vID0+IFsxLCAxLCAyLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXRNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpLCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsYXRNYXBgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIHRoZVxuICAgICAqIG1hcHBlZCByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkdXBsaWNhdGUobikge1xuICAgICAqICAgcmV0dXJuIFtbW24sIG5dXV07XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5mbGF0TWFwRGVlcChbMSwgMl0sIGR1cGxpY2F0ZSk7XG4gICAgICogLy8gPT4gWzEsIDEsIDIsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdE1hcERlZXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpLCBJTkZJTklUWSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mbGF0TWFwYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBmbGF0dGVucyB0aGVcbiAgICAgKiBtYXBwZWQgcmVzdWx0cyB1cCB0byBgZGVwdGhgIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtkZXB0aD0xXSBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkdXBsaWNhdGUobikge1xuICAgICAqICAgcmV0dXJuIFtbW24sIG5dXV07XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5mbGF0TWFwRGVwdGgoWzEsIDJdLCBkdXBsaWNhdGUsIDIpO1xuICAgICAqIC8vID0+IFtbMSwgMV0sIFsyLCAyXV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0TWFwRGVwdGgoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGRlcHRoKSB7XG4gICAgICBkZXB0aCA9IGRlcHRoID09PSB1bmRlZmluZWQgPyAxIDogdG9JbnRlZ2VyKGRlcHRoKTtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpLCBkZXB0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBlbGVtZW50LlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEFzIHdpdGggb3RoZXIgXCJDb2xsZWN0aW9uc1wiIG1ldGhvZHMsIG9iamVjdHMgd2l0aCBhIFwibGVuZ3RoXCJcbiAgICAgKiBwcm9wZXJ0eSBhcmUgaXRlcmF0ZWQgbGlrZSBhcnJheXMuIFRvIGF2b2lkIHRoaXMgYmVoYXZpb3IgdXNlIGBfLmZvckluYFxuICAgICAqIG9yIGBfLmZvck93bmAgZm9yIG9iamVjdCBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAYWxpYXMgZWFjaFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICAgICAqIEBzZWUgXy5mb3JFYWNoUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mb3JFYWNoKFsxLCAyXSwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzIGAxYCB0aGVuIGAyYC5cbiAgICAgKlxuICAgICAqIF8uZm9yRWFjaCh7ICdhJzogMSwgJ2InOiAyIH0sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnYScgdGhlbiAnYicgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9yRWFjaChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFYWNoIDogYmFzZUVhY2g7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9yRWFjaGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAYWxpYXMgZWFjaFJpZ2h0XG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICogQHNlZSBfLmZvckVhY2hcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mb3JFYWNoUmlnaHQoWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgYDJgIHRoZW4gYDFgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvckVhY2hSaWdodChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFYWNoUmlnaHQgOiBiYXNlRWFjaFJpZ2h0O1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYC4gVGhlIG9yZGVyIG9mIGdyb3VwZWQgdmFsdWVzXG4gICAgICogaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiBgY29sbGVjdGlvbmAuIFRoZSBjb3JyZXNwb25kaW5nXG4gICAgICogdmFsdWUgb2YgZWFjaCBrZXkgaXMgYW4gYXJyYXkgb2YgZWxlbWVudHMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlXG4gICAgICoga2V5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29tcG9zZWQgYWdncmVnYXRlIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ncm91cEJ5KFs2LjEsIDQuMiwgNi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4geyAnNCc6IFs0LjJdLCAnNic6IFs2LjEsIDYuM10gfVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5ncm91cEJ5KFsnb25lJywgJ3R3bycsICd0aHJlZSddLCAnbGVuZ3RoJyk7XG4gICAgICogLy8gPT4geyAnMyc6IFsnb25lJywgJ3R3byddLCAnNSc6IFsndGhyZWUnXSB9XG4gICAgICovXG4gICAgdmFyIGdyb3VwQnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCBrZXkpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldLnB1c2godmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBbdmFsdWVdKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIGBjb2xsZWN0aW9uYC4gSWYgYGNvbGxlY3Rpb25gIGlzIGEgc3RyaW5nLCBpdCdzXG4gICAgICogY2hlY2tlZCBmb3IgYSBzdWJzdHJpbmcgb2YgYHZhbHVlYCwgb3RoZXJ3aXNlXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBpcyB1c2VkIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gSWYgYGZyb21JbmRleGAgaXMgbmVnYXRpdmUsIGl0J3MgdXNlZCBhc1xuICAgICAqIHRoZSBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R8c3RyaW5nfSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ucmVkdWNlYC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKFsxLCAyLCAzXSwgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pbmNsdWRlcyhbMSwgMiwgM10sIDEsIDIpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKHsgJ2EnOiAxLCAnYic6IDIgfSwgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pbmNsdWRlcygnYWJjZCcsICdiYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbmNsdWRlcyhjb2xsZWN0aW9uLCB2YWx1ZSwgZnJvbUluZGV4LCBndWFyZCkge1xuICAgICAgY29sbGVjdGlvbiA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gY29sbGVjdGlvbiA6IHZhbHVlcyhjb2xsZWN0aW9uKTtcbiAgICAgIGZyb21JbmRleCA9IChmcm9tSW5kZXggJiYgIWd1YXJkKSA/IHRvSW50ZWdlcihmcm9tSW5kZXgpIDogMDtcblxuICAgICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoO1xuICAgICAgaWYgKGZyb21JbmRleCA8IDApIHtcbiAgICAgICAgZnJvbUluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGZyb21JbmRleCwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNTdHJpbmcoY29sbGVjdGlvbilcbiAgICAgICAgPyAoZnJvbUluZGV4IDw9IGxlbmd0aCAmJiBjb2xsZWN0aW9uLmluZGV4T2YodmFsdWUsIGZyb21JbmRleCkgPiAtMSlcbiAgICAgICAgOiAoISFsZW5ndGggJiYgYmFzZUluZGV4T2YoY29sbGVjdGlvbiwgdmFsdWUsIGZyb21JbmRleCkgPiAtMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyB0aGUgbWV0aG9kIGF0IGBwYXRoYCBvZiBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gLCByZXR1cm5pbmdcbiAgICAgKiBhbiBhcnJheSBvZiB0aGUgcmVzdWx0cyBvZiBlYWNoIGludm9rZWQgbWV0aG9kLiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICAgKiBhcmUgcHJvdmlkZWQgdG8gZWFjaCBpbnZva2VkIG1ldGhvZC4gSWYgYHBhdGhgIGlzIGEgZnVuY3Rpb24sIGl0J3MgaW52b2tlZFxuICAgICAqIGZvciwgYW5kIGB0aGlzYCBib3VuZCB0bywgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXJyYXl8RnVuY3Rpb258c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlIG9yXG4gICAgICogIHRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgZWFjaCBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW52b2tlTWFwKFtbNSwgMSwgN10sIFszLCAyLCAxXV0sICdzb3J0Jyk7XG4gICAgICogLy8gPT4gW1sxLCA1LCA3XSwgWzEsIDIsIDNdXVxuICAgICAqXG4gICAgICogXy5pbnZva2VNYXAoWzEyMywgNDU2XSwgU3RyaW5nLnByb3RvdHlwZS5zcGxpdCwgJycpO1xuICAgICAqIC8vID0+IFtbJzEnLCAnMicsICczJ10sIFsnNCcsICc1JywgJzYnXV1cbiAgICAgKi9cbiAgICB2YXIgaW52b2tlTWFwID0gYmFzZVJlc3QoZnVuY3Rpb24oY29sbGVjdGlvbiwgcGF0aCwgYXJncykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaXNGdW5jID0gdHlwZW9mIHBhdGggPT0gJ2Z1bmN0aW9uJyxcbiAgICAgICAgICByZXN1bHQgPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IEFycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKSA6IFtdO1xuXG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXN1bHRbKytpbmRleF0gPSBpc0Z1bmMgPyBhcHBseShwYXRoLCB2YWx1ZSwgYXJncykgOiBiYXNlSW52b2tlKHZhbHVlLCBwYXRoLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZ1xuICAgICAqIGVhY2ggZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgY29ycmVzcG9uZGluZyB2YWx1ZSBvZlxuICAgICAqIGVhY2gga2V5IGlzIHRoZSBsYXN0IGVsZW1lbnQgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlIGtleS4gVGhlXG4gICAgICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29tcG9zZWQgYWdncmVnYXRlIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW1xuICAgICAqICAgeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sXG4gICAgICogICB7ICdkaXInOiAncmlnaHQnLCAnY29kZSc6IDEwMCB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ua2V5QnkoYXJyYXksIGZ1bmN0aW9uKG8pIHtcbiAgICAgKiAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKG8uY29kZSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4geyAnYSc6IHsgJ2Rpcic6ICdsZWZ0JywgJ2NvZGUnOiA5NyB9LCAnZCc6IHsgJ2Rpcic6ICdyaWdodCcsICdjb2RlJzogMTAwIH0gfVxuICAgICAqXG4gICAgICogXy5rZXlCeShhcnJheSwgJ2RpcicpO1xuICAgICAqIC8vID0+IHsgJ2xlZnQnOiB7ICdkaXInOiAnbGVmdCcsICdjb2RlJzogOTcgfSwgJ3JpZ2h0JzogeyAnZGlyJzogJ3JpZ2h0JywgJ2NvZGUnOiAxMDAgfSB9XG4gICAgICovXG4gICAgdmFyIGtleUJ5ID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgdmFsdWUpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB2YWx1ZXMgYnkgcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnVcbiAgICAgKiBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czpcbiAgICAgKiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAgICAgKiBgXy5ldmVyeWAsIGBfLmZpbHRlcmAsIGBfLm1hcGAsIGBfLm1hcFZhbHVlc2AsIGBfLnJlamVjdGAsIGFuZCBgXy5zb21lYC5cbiAgICAgKlxuICAgICAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICAgICAqIGBhcnlgLCBgY2h1bmtgLCBgY3VycnlgLCBgY3VycnlSaWdodGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsIGBldmVyeWAsXG4gICAgICogYGZpbGxgLCBgaW52ZXJ0YCwgYHBhcnNlSW50YCwgYHJhbmRvbWAsIGByYW5nZWAsIGByYW5nZVJpZ2h0YCwgYHJlcGVhdGAsXG4gICAgICogYHNhbXBsZVNpemVgLCBgc2xpY2VgLCBgc29tZWAsIGBzb3J0QnlgLCBgc3BsaXRgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLFxuICAgICAqIGB0ZW1wbGF0ZWAsIGB0cmltYCwgYHRyaW1FbmRgLCBgdHJpbVN0YXJ0YCwgYW5kIGB3b3Jkc2BcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLm1hcChbNCwgOF0sIHNxdWFyZSk7XG4gICAgICogLy8gPT4gWzE2LCA2NF1cbiAgICAgKlxuICAgICAqIF8ubWFwKHsgJ2EnOiA0LCAnYic6IDggfSwgc3F1YXJlKTtcbiAgICAgKiAvLyA9PiBbMTYsIDY0XSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5tYXAodXNlcnMsICd1c2VyJyk7XG4gICAgICogLy8gPT4gWydiYXJuZXknLCAnZnJlZCddXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheU1hcCA6IGJhc2VNYXA7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydEJ5YCBleGNlcHQgdGhhdCBpdCBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgc29ydFxuICAgICAqIG9yZGVycyBvZiB0aGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuIElmIGBvcmRlcnNgIGlzIHVuc3BlY2lmaWVkLCBhbGwgdmFsdWVzXG4gICAgICogYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSwgc3BlY2lmeSBhbiBvcmRlciBvZiBcImRlc2NcIiBmb3JcbiAgICAgKiBkZXNjZW5kaW5nIG9yIFwiYXNjXCIgZm9yIGFzY2VuZGluZyBzb3J0IG9yZGVyIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBcnJheVtdfEZ1bmN0aW9uW118T2JqZWN0W118c3RyaW5nW119IFtpdGVyYXRlZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gW29yZGVyc10gVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLnJlZHVjZWAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0OCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzQgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFNvcnQgYnkgYHVzZXJgIGluIGFzY2VuZGluZyBvcmRlciBhbmQgYnkgYGFnZWAgaW4gZGVzY2VuZGluZyBvcmRlci5cbiAgICAgKiBfLm9yZGVyQnkodXNlcnMsIFsndXNlcicsICdhZ2UnXSwgWydhc2MnLCAnZGVzYyddKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNl0sIFsnYmFybmV5JywgMzRdLCBbJ2ZyZWQnLCA0OF0sIFsnZnJlZCcsIDQwXV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzLCBndWFyZCkge1xuICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoIWlzQXJyYXkoaXRlcmF0ZWVzKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBpdGVyYXRlZXMgPT0gbnVsbCA/IFtdIDogW2l0ZXJhdGVlc107XG4gICAgICB9XG4gICAgICBvcmRlcnMgPSBndWFyZCA/IHVuZGVmaW5lZCA6IG9yZGVycztcbiAgICAgIGlmICghaXNBcnJheShvcmRlcnMpKSB7XG4gICAgICAgIG9yZGVycyA9IG9yZGVycyA9PSBudWxsID8gW10gOiBbb3JkZXJzXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cyBzcGxpdCBpbnRvIHR3byBncm91cHMsIHRoZSBmaXJzdCBvZiB3aGljaFxuICAgICAqIGNvbnRhaW5zIGVsZW1lbnRzIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciwgdGhlIHNlY29uZCBvZiB3aGljaFxuICAgICAqIGNvbnRhaW5zIGVsZW1lbnRzIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5IGZvci4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2ZyZWQnXSwgWydiYXJuZXknLCAncGViYmxlcyddXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ3BlYmJsZXMnXSwgWydiYXJuZXknLCAnZnJlZCddXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgJ3BlYmJsZXMnXSwgWydmcmVkJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2ZyZWQnXSwgWydiYXJuZXknLCAncGViYmxlcyddXVxuICAgICAqL1xuICAgIHZhciBwYXJ0aXRpb24gPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgcmVzdWx0W2tleSA/IDAgOiAxXS5wdXNoKHZhbHVlKTtcbiAgICB9LCBmdW5jdGlvbigpIHsgcmV0dXJuIFtbXSwgW11dOyB9KTtcblxuICAgIC8qKlxuICAgICAqIFJlZHVjZXMgYGNvbGxlY3Rpb25gIHRvIGEgdmFsdWUgd2hpY2ggaXMgdGhlIGFjY3VtdWxhdGVkIHJlc3VsdCBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAsIHdoZXJlIGVhY2ggc3VjY2Vzc2l2ZVxuICAgICAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuIElmIGBhY2N1bXVsYXRvcmBcbiAgICAgKiBpcyBub3QgZ2l2ZW4sIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCBpcyB1c2VkIGFzIHRoZSBpbml0aWFsXG4gICAgICogdmFsdWUuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6XG4gICAgICogKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICAgICAqIGBfLnJlZHVjZWAsIGBfLnJlZHVjZVJpZ2h0YCwgYW5kIGBfLnRyYW5zZm9ybWAuXG4gICAgICpcbiAgICAgKiBUaGUgZ3VhcmRlZCBtZXRob2RzIGFyZTpcbiAgICAgKiBgYXNzaWduYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBpbmNsdWRlc2AsIGBtZXJnZWAsIGBvcmRlckJ5YCxcbiAgICAgKiBhbmQgYHNvcnRCeWBcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLnJlZHVjZVJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmVkdWNlKFsxLCAyXSwgZnVuY3Rpb24oc3VtLCBuKSB7XG4gICAgICogICByZXR1cm4gc3VtICsgbjtcbiAgICAgKiB9LCAwKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnJlZHVjZSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICogICAocmVzdWx0W3ZhbHVlXSB8fCAocmVzdWx0W3ZhbHVlXSA9IFtdKSkucHVzaChrZXkpO1xuICAgICAqICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgKiB9LCB7fSk7XG4gICAgICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5UmVkdWNlIDogYmFzZVJlZHVjZSxcbiAgICAgICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5yZWR1Y2VgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBgY29sbGVjdGlvbmAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8ucmVkdWNlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFtbMCwgMV0sIFsyLCAzXSwgWzQsIDVdXTtcbiAgICAgKlxuICAgICAqIF8ucmVkdWNlUmlnaHQoYXJyYXksIGZ1bmN0aW9uKGZsYXR0ZW5lZCwgb3RoZXIpIHtcbiAgICAgKiAgIHJldHVybiBmbGF0dGVuZWQuY29uY2F0KG90aGVyKTtcbiAgICAgKiB9LCBbXSk7XG4gICAgICogLy8gPT4gWzQsIDUsIDIsIDMsIDAsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVkdWNlUmlnaHQoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVJlZHVjZVJpZ2h0IDogYmFzZVJlZHVjZSxcbiAgICAgICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaFJpZ2h0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8uZmlsdGVyYDsgdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gXG4gICAgICogdGhhdCBgcHJlZGljYXRlYCBkb2VzICoqbm90KiogcmV0dXJuIHRydXRoeSBmb3IuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAgICogQHNlZSBfLmZpbHRlclxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnJlamVjdCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnJlamVjdCh1c2VycywgeyAnYWdlJzogNDAsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnJlamVjdCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnJlamVjdCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWplY3QoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUZpbHRlciA6IGJhc2VGaWx0ZXI7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSByYW5kb20gZWxlbWVudCBmcm9tIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zYW1wbGUoWzEsIDIsIDMsIDRdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2FtcGxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U2FtcGxlIDogYmFzZVNhbXBsZTtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYG5gIHJhbmRvbSBlbGVtZW50cyBhdCB1bmlxdWUga2V5cyBmcm9tIGBjb2xsZWN0aW9uYCB1cCB0byB0aGVcbiAgICAgKiBzaXplIG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNhbXBsZVNpemUoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMywgMV1cbiAgICAgKlxuICAgICAqIF8uc2FtcGxlU2l6ZShbMSwgMiwgM10sIDQpO1xuICAgICAqIC8vID0+IFsyLCAzLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNhbXBsZVNpemUoY29sbGVjdGlvbiwgbiwgZ3VhcmQpIHtcbiAgICAgIGlmICgoZ3VhcmQgPyBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBuLCBndWFyZCkgOiBuID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIG4gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIH1cbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U2FtcGxlU2l6ZSA6IGJhc2VTYW1wbGVTaXplO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBzaHVmZmxlZCB2YWx1ZXMsIHVzaW5nIGEgdmVyc2lvbiBvZiB0aGVcbiAgICAgKiBbRmlzaGVyLVlhdGVzIHNodWZmbGVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Zpc2hlci1ZYXRlc19zaHVmZmxlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2h1ZmZsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzaHVmZmxlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zaHVmZmxlKFsxLCAyLCAzLCA0XSk7XG4gICAgICogLy8gPT4gWzQsIDEsIDMsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2h1ZmZsZShjb2xsZWN0aW9uKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNodWZmbGUgOiBiYXNlU2h1ZmZsZTtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNpemUgb2YgYGNvbGxlY3Rpb25gIGJ5IHJldHVybmluZyBpdHMgbGVuZ3RoIGZvciBhcnJheS1saWtlXG4gICAgICogdmFsdWVzIG9yIHRoZSBudW1iZXIgb2Ygb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgZm9yIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fHN0cmluZ30gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbGxlY3Rpb24gc2l6ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zaXplKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy5zaXplKHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gMlxuICAgICAqXG4gICAgICogXy5zaXplKCdwZWJibGVzJyk7XG4gICAgICogLy8gPT4gN1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNpemUoY29sbGVjdGlvbikge1xuICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIGlmIChpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgICByZXR1cm4gaXNTdHJpbmcoY29sbGVjdGlvbikgPyBzdHJpbmdTaXplKGNvbGxlY3Rpb24pIDogY29sbGVjdGlvbi5sZW5ndGg7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gZ2V0VGFnKGNvbGxlY3Rpb24pO1xuICAgICAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5zaXplO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VLZXlzKGNvbGxlY3Rpb24pLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yICoqYW55KiogZWxlbWVudCBvZiBgY29sbGVjdGlvbmAuXG4gICAgICogSXRlcmF0aW9uIGlzIHN0b3BwZWQgb25jZSBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvbWUoW251bGwsIDAsICd5ZXMnLCBmYWxzZV0sIEJvb2xlYW4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb21lKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb21lKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvbWUoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTb21lIDogYmFzZVNvbWU7XG4gICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkpIHtcbiAgICAgICAgcHJlZGljYXRlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cywgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSB0aGUgcmVzdWx0cyBvZlxuICAgICAqIHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGEgY29sbGVjdGlvbiB0aHJ1IGVhY2ggaXRlcmF0ZWUuIFRoaXMgbWV0aG9kXG4gICAgICogcGVyZm9ybXMgYSBzdGFibGUgc29ydCwgdGhhdCBpcywgaXQgcHJlc2VydmVzIHRoZSBvcmlnaW5hbCBzb3J0IG9yZGVyIG9mXG4gICAgICogZXF1YWwgZWxlbWVudHMuIFRoZSBpdGVyYXRlZXMgYXJlIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQ4IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogMzAgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM0IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5zb3J0QnkodXNlcnMsIFtmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXI7IH1dKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNl0sIFsnYmFybmV5JywgMzRdLCBbJ2ZyZWQnLCA0OF0sIFsnZnJlZCcsIDMwXV1cbiAgICAgKlxuICAgICAqIF8uc29ydEJ5KHVzZXJzLCBbJ3VzZXInLCAnYWdlJ10pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM0XSwgWydiYXJuZXknLCAzNl0sIFsnZnJlZCcsIDMwXSwgWydmcmVkJywgNDhdXVxuICAgICAqL1xuICAgIHZhciBzb3J0QnkgPSBiYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZXMpIHtcbiAgICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IGl0ZXJhdGVlcy5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoID4gMSAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSkpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gW107XG4gICAgICB9IGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaXNJdGVyYXRlZUNhbGwoaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0sIGl0ZXJhdGVlc1syXSkpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gW2l0ZXJhdGVlc1swXV07XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgYmFzZUZsYXR0ZW4oaXRlcmF0ZWVzLCAxKSwgW10pO1xuICAgIH0pO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gICAgICogdGhlIFVuaXggZXBvY2ggKDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgRGF0ZVxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVzdGFtcC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICAgICAqICAgY29uc29sZS5sb2coXy5ub3coKSAtIHN0YW1wKTtcbiAgICAgKiB9LCBfLm5vdygpKTtcbiAgICAgKiAvLyA9PiBMb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBpbnZvY2F0aW9uLlxuICAgICAqL1xuICAgIHZhciBub3cgPSBjdHhOb3cgfHwgZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gcm9vdC5EYXRlLm5vdygpO1xuICAgIH07XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8uYmVmb3JlYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlc1xuICAgICAqIGBmdW5jYCBvbmNlIGl0J3MgY2FsbGVkIGBuYCBvciBtb3JlIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiBjYWxscyBiZWZvcmUgYGZ1bmNgIGlzIGludm9rZWQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVzdHJpY3RlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHNhdmVzID0gWydwcm9maWxlJywgJ3NldHRpbmdzJ107XG4gICAgICpcbiAgICAgKiB2YXIgZG9uZSA9IF8uYWZ0ZXIoc2F2ZXMubGVuZ3RoLCBmdW5jdGlvbigpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKCdkb25lIHNhdmluZyEnKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIF8uZm9yRWFjaChzYXZlcywgZnVuY3Rpb24odHlwZSkge1xuICAgICAqICAgYXN5bmNTYXZlKHsgJ3R5cGUnOiB0eXBlLCAnY29tcGxldGUnOiBkb25lIH0pO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2RvbmUgc2F2aW5nIScgYWZ0ZXIgdGhlIHR3byBhc3luYyBzYXZlcyBoYXZlIGNvbXBsZXRlZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhZnRlcihuLCBmdW5jKSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoLS1uIDwgMSkge1xuICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2AsIHdpdGggdXAgdG8gYG5gIGFyZ3VtZW50cyxcbiAgICAgKiBpZ25vcmluZyBhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249ZnVuYy5sZW5ndGhdIFRoZSBhcml0eSBjYXAuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnNicsICc4JywgJzEwJ10sIF8uYXJ5KHBhcnNlSW50LCAxKSk7XG4gICAgICogLy8gPT4gWzYsIDgsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFyeShmdW5jLCBuLCBndWFyZCkge1xuICAgICAgbiA9IGd1YXJkID8gdW5kZWZpbmVkIDogbjtcbiAgICAgIG4gPSAoZnVuYyAmJiBuID09IG51bGwpID8gZnVuYy5sZW5ndGggOiBuO1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9BUllfRkxBRywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCwgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgYW5kIGFyZ3VtZW50c1xuICAgICAqIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLCB3aGlsZSBpdCdzIGNhbGxlZCBsZXNzIHRoYW4gYG5gIHRpbWVzLiBTdWJzZXF1ZW50XG4gICAgICogY2FsbHMgdG8gdGhlIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgIGludm9jYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGNhbGxzIGF0IHdoaWNoIGBmdW5jYCBpcyBubyBsb25nZXIgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgXy5iZWZvcmUoNSwgYWRkQ29udGFjdFRvTGlzdCkpO1xuICAgICAqIC8vID0+IEFsbG93cyBhZGRpbmcgdXAgdG8gNCBjb250YWN0cyB0byB0aGUgbGlzdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiZWZvcmUobiwgZnVuYykge1xuICAgICAgdmFyIHJlc3VsdDtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICgtLW4gPiAwKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuIDw9IDEpIHtcbiAgICAgICAgICBmdW5jID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYFxuICAgICAqIGFuZCBgcGFydGlhbHNgIHByZXBlbmRlZCB0byB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogVGhlIGBfLmJpbmQucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpYyBidWlsZHMsXG4gICAgICogbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBuYXRpdmUgYEZ1bmN0aW9uI2JpbmRgLCB0aGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIlxuICAgICAqIHByb3BlcnR5IG9mIGJvdW5kIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGJpbmQuXG4gICAgICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYm91bmQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBwdW5jdHVhdGlvbikge1xuICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgdGhpcy51c2VyICsgcHVuY3R1YXRpb247XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ3VzZXInOiAnZnJlZCcgfTtcbiAgICAgKlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZChncmVldCwgb2JqZWN0LCAnaGknKTtcbiAgICAgKiBib3VuZCgnIScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkISdcbiAgICAgKlxuICAgICAqIC8vIEJvdW5kIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZChncmVldCwgb2JqZWN0LCBfLCAnIScpO1xuICAgICAqIGJvdW5kKCdoaScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkISdcbiAgICAgKi9cbiAgICB2YXIgYmluZCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHRoaXNBcmcsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgYml0bWFzayA9IFdSQVBfQklORF9GTEFHO1xuICAgICAgaWYgKHBhcnRpYWxzLmxlbmd0aCkge1xuICAgICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIoYmluZCkpO1xuICAgICAgICBiaXRtYXNrIHw9IFdSQVBfUEFSVElBTF9GTEFHO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgbWV0aG9kIGF0IGBvYmplY3Rba2V5XWAgd2l0aCBgcGFydGlhbHNgXG4gICAgICogcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gYF8uYmluZGAgYnkgYWxsb3dpbmcgYm91bmQgZnVuY3Rpb25zIHRvIHJlZmVyZW5jZVxuICAgICAqIG1ldGhvZHMgdGhhdCBtYXkgYmUgcmVkZWZpbmVkIG9yIGRvbid0IHlldCBleGlzdC4gU2VlXG4gICAgICogW1BldGVyIE1pY2hhdXgncyBhcnRpY2xlXShodHRwOi8vcGV0ZXIubWljaGF1eC5jYS9hcnRpY2xlcy9sYXp5LWZ1bmN0aW9uLWRlZmluaXRpb24tcGF0dGVybilcbiAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqXG4gICAgICogVGhlIGBfLmJpbmRLZXkucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnZva2UgdGhlIG1ldGhvZCBvbi5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBib3VuZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHtcbiAgICAgKiAgICd1c2VyJzogJ2ZyZWQnLFxuICAgICAqICAgJ2dyZWV0JzogZnVuY3Rpb24oZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICAgIHJldHVybiBncmVldGluZyArICcgJyArIHRoaXMudXNlciArIHB1bmN0dWF0aW9uO1xuICAgICAqICAgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiB2YXIgYm91bmQgPSBfLmJpbmRLZXkob2JqZWN0LCAnZ3JlZXQnLCAnaGknKTtcbiAgICAgKiBib3VuZCgnIScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkISdcbiAgICAgKlxuICAgICAqIG9iamVjdC5ncmVldCA9IGZ1bmN0aW9uKGdyZWV0aW5nLCBwdW5jdHVhdGlvbikge1xuICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJ3lhICcgKyB0aGlzLnVzZXIgKyBwdW5jdHVhdGlvbjtcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogYm91bmQoJyEnKTtcbiAgICAgKiAvLyA9PiAnaGl5YSBmcmVkISdcbiAgICAgKlxuICAgICAqIC8vIEJvdW5kIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZEtleShvYmplY3QsICdncmVldCcsIF8sICchJyk7XG4gICAgICogYm91bmQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpeWEgZnJlZCEnXG4gICAgICovXG4gICAgdmFyIGJpbmRLZXkgPSBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIGtleSwgcGFydGlhbHMpIHtcbiAgICAgIHZhciBiaXRtYXNrID0gV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX0JJTkRfS0VZX0ZMQUc7XG4gICAgICBpZiAocGFydGlhbHMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihiaW5kS2V5KSk7XG4gICAgICAgIGJpdG1hc2sgfD0gV1JBUF9QQVJUSUFMX0ZMQUc7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChrZXksIGJpdG1hc2ssIG9iamVjdCwgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhcmd1bWVudHMgb2YgYGZ1bmNgIGFuZCBlaXRoZXIgaW52b2tlc1xuICAgICAqIGBmdW5jYCByZXR1cm5pbmcgaXRzIHJlc3VsdCwgaWYgYXQgbGVhc3QgYGFyaXR5YCBudW1iZXIgb2YgYXJndW1lbnRzIGhhdmVcbiAgICAgKiBiZWVuIHByb3ZpZGVkLCBvciByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSByZW1haW5pbmcgYGZ1bmNgXG4gICAgICogYXJndW1lbnRzLCBhbmQgc28gb24uIFRoZSBhcml0eSBvZiBgZnVuY2AgbWF5IGJlIHNwZWNpZmllZCBpZiBgZnVuYy5sZW5ndGhgXG4gICAgICogaXMgbm90IHN1ZmZpY2llbnQuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uY3VycnkucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpYyBidWlsZHMsXG4gICAgICogbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIGN1cnJpZWQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY3VycnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eT1mdW5jLmxlbmd0aF0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhYmMgPSBmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICogICByZXR1cm4gW2EsIGIsIGNdO1xuICAgICAqIH07XG4gICAgICpcbiAgICAgKiB2YXIgY3VycmllZCA9IF8uY3VycnkoYWJjKTtcbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSkoMikoMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEsIDIpKDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgxLCAyLCAzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIC8vIEN1cnJpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogY3VycmllZCgxKShfLCAzKSgyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXJyeShmdW5jLCBhcml0eSwgZ3VhcmQpIHtcbiAgICAgIGFyaXR5ID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBhcml0eTtcbiAgICAgIHZhciByZXN1bHQgPSBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfQ1VSUllfRkxBRywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGFyaXR5KTtcbiAgICAgIHJlc3VsdC5wbGFjZWhvbGRlciA9IGN1cnJ5LnBsYWNlaG9sZGVyO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmN1cnJ5YCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYXJlIGFwcGxpZWQgdG8gYGZ1bmNgXG4gICAgICogaW4gdGhlIG1hbm5lciBvZiBgXy5wYXJ0aWFsUmlnaHRgIGluc3RlYWQgb2YgYF8ucGFydGlhbGAuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uY3VycnlSaWdodC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgY3VycmllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjdXJyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5PWZ1bmMubGVuZ3RoXSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFiYyA9IGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBjdXJyaWVkID0gXy5jdXJyeVJpZ2h0KGFiYyk7XG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDMpKDIpKDEpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgyLCAzKSgxKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSwgMiwgMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiAvLyBDdXJyaWVkIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIGN1cnJpZWQoMykoMSwgXykoMik7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VycnlSaWdodChmdW5jLCBhcml0eSwgZ3VhcmQpIHtcbiAgICAgIGFyaXR5ID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBhcml0eTtcbiAgICAgIHZhciByZXN1bHQgPSBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfQ1VSUllfUklHSFRfRkxBRywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGFyaXR5KTtcbiAgICAgIHJlc3VsdC5wbGFjZWhvbGRlciA9IGN1cnJ5UmlnaHQucGxhY2Vob2xkZXI7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBkZWJvdW5jZWQgZnVuY3Rpb24gdGhhdCBkZWxheXMgaW52b2tpbmcgYGZ1bmNgIHVudGlsIGFmdGVyIGB3YWl0YFxuICAgICAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICAgICAqIGludm9rZWQuIFRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgIG1ldGhvZCB0byBjYW5jZWxcbiAgICAgKiBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0byBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS5cbiAgICAgKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAgICAgKiBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGAgdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbi4gU3Vic2VxdWVudFxuICAgICAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gICAgICogaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIGRlYm91bmNlZCBmdW5jdGlvblxuICAgICAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAgICAgKlxuICAgICAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICAgICAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAgICAgKlxuICAgICAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICAgICAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8uZGVib3VuY2VgIGFuZCBgXy50aHJvdHRsZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWJvdW5jZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPWZhbHNlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm1heFdhaXRdXG4gICAgICogIFRoZSBtYXhpbXVtIHRpbWUgYGZ1bmNgIGlzIGFsbG93ZWQgdG8gYmUgZGVsYXllZCBiZWZvcmUgaXQncyBpbnZva2VkLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAgICAgKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBkZWJvdW5jZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIEF2b2lkIGNvc3RseSBjYWxjdWxhdGlvbnMgd2hpbGUgdGhlIHdpbmRvdyBzaXplIGlzIGluIGZsdXguXG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAgICAgKlxuICAgICAqIC8vIEludm9rZSBgc2VuZE1haWxgIHdoZW4gY2xpY2tlZCwgZGVib3VuY2luZyBzdWJzZXF1ZW50IGNhbGxzLlxuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAgICAgKiAgICdsZWFkaW5nJzogdHJ1ZSxcbiAgICAgKiAgICd0cmFpbGluZyc6IGZhbHNlXG4gICAgICogfSkpO1xuICAgICAqXG4gICAgICogLy8gRW5zdXJlIGBiYXRjaExvZ2AgaXMgaW52b2tlZCBvbmNlIGFmdGVyIDEgc2Vjb25kIG9mIGRlYm91bmNlZCBjYWxscy5cbiAgICAgKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAgICAgKiB2YXIgc291cmNlID0gbmV3IEV2ZW50U291cmNlKCcvc3RyZWFtJyk7XG4gICAgICogalF1ZXJ5KHNvdXJjZSkub24oJ21lc3NhZ2UnLCBkZWJvdW5jZWQpO1xuICAgICAqXG4gICAgICogLy8gQ2FuY2VsIHRoZSB0cmFpbGluZyBkZWJvdW5jZWQgaW52b2NhdGlvbi5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbigncG9wc3RhdGUnLCBkZWJvdW5jZWQuY2FuY2VsKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkZWJvdW5jZShmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gICAgICB2YXIgbGFzdEFyZ3MsXG4gICAgICAgICAgbGFzdFRoaXMsXG4gICAgICAgICAgbWF4V2FpdCxcbiAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgdGltZXJJZCxcbiAgICAgICAgICBsYXN0Q2FsbFRpbWUsXG4gICAgICAgICAgbGFzdEludm9rZVRpbWUgPSAwLFxuICAgICAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgICAgICBtYXhpbmcgPSBmYWxzZSxcbiAgICAgICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIGxlYWRpbmcgPSAhIW9wdGlvbnMubGVhZGluZztcbiAgICAgICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgICAgIG1heFdhaXQgPSBtYXhpbmcgPyBuYXRpdmVNYXgodG9OdW1iZXIob3B0aW9ucy5tYXhXYWl0KSB8fCAwLCB3YWl0KSA6IG1heFdhaXQ7XG4gICAgICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGludm9rZUZ1bmModGltZSkge1xuICAgICAgICB2YXIgYXJncyA9IGxhc3RBcmdzLFxuICAgICAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgICAgIGxhc3RBcmdzID0gbGFzdFRoaXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgICAgICAvLyBSZXNldCBhbnkgYG1heFdhaXRgIHRpbWVyLlxuICAgICAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgIC8vIEludm9rZSB0aGUgbGVhZGluZyBlZGdlLlxuICAgICAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHJlbWFpbmluZ1dhaXQodGltZSkge1xuICAgICAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZSxcbiAgICAgICAgICAgIHRpbWVXYWl0aW5nID0gd2FpdCAtIHRpbWVTaW5jZUxhc3RDYWxsO1xuXG4gICAgICAgIHJldHVybiBtYXhpbmdcbiAgICAgICAgICA/IG5hdGl2ZU1pbih0aW1lV2FpdGluZywgbWF4V2FpdCAtIHRpbWVTaW5jZUxhc3RJbnZva2UpXG4gICAgICAgICAgOiB0aW1lV2FpdGluZztcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gc2hvdWxkSW52b2tlKHRpbWUpIHtcbiAgICAgICAgdmFyIHRpbWVTaW5jZUxhc3RDYWxsID0gdGltZSAtIGxhc3RDYWxsVGltZSxcbiAgICAgICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAgICAgLy8gRWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwsIGFjdGl2aXR5IGhhcyBzdG9wcGVkIGFuZCB3ZSdyZSBhdCB0aGVcbiAgICAgICAgLy8gdHJhaWxpbmcgZWRnZSwgdGhlIHN5c3RlbSB0aW1lIGhhcyBnb25lIGJhY2t3YXJkcyBhbmQgd2UncmUgdHJlYXRpbmdcbiAgICAgICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgICAgICByZXR1cm4gKGxhc3RDYWxsVGltZSA9PT0gdW5kZWZpbmVkIHx8ICh0aW1lU2luY2VMYXN0Q2FsbCA+PSB3YWl0KSB8fFxuICAgICAgICAgICh0aW1lU2luY2VMYXN0Q2FsbCA8IDApIHx8IChtYXhpbmcgJiYgdGltZVNpbmNlTGFzdEludm9rZSA+PSBtYXhXYWl0KSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHRpbWVyRXhwaXJlZCgpIHtcbiAgICAgICAgdmFyIHRpbWUgPSBub3coKTtcbiAgICAgICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgICAgIHJldHVybiB0cmFpbGluZ0VkZ2UodGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgcmVtYWluaW5nV2FpdCh0aW1lKSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgICAgIHRpbWVySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gT25seSBpbnZva2UgaWYgd2UgaGF2ZSBgbGFzdEFyZ3NgIHdoaWNoIG1lYW5zIGBmdW5jYCBoYXMgYmVlblxuICAgICAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICAgICAgaWYgKHRyYWlsaW5nICYmIGxhc3RBcmdzKSB7XG4gICAgICAgICAgcmV0dXJuIGludm9rZUZ1bmModGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgICAgICBpZiAodGltZXJJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RJbnZva2VUaW1lID0gMDtcbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgICAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZGVib3VuY2VkKCkge1xuICAgICAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICAgICAgaXNJbnZva2luZyA9IHNob3VsZEludm9rZSh0aW1lKTtcblxuICAgICAgICBsYXN0QXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgICAgICBsYXN0Q2FsbFRpbWUgPSB0aW1lO1xuXG4gICAgICAgIGlmIChpc0ludm9raW5nKSB7XG4gICAgICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGxlYWRpbmdFZGdlKGxhc3RDYWxsVGltZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBpbnZvY2F0aW9ucyBpbiBhIHRpZ2h0IGxvb3AuXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICAgICAgcmV0dXJuIGludm9rZUZ1bmMobGFzdENhbGxUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGRlYm91bmNlZC5jYW5jZWwgPSBjYW5jZWw7XG4gICAgICBkZWJvdW5jZWQuZmx1c2ggPSBmbHVzaDtcbiAgICAgIHJldHVybiBkZWJvdW5jZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmZXJzIGludm9raW5nIHRoZSBgZnVuY2AgdW50aWwgdGhlIGN1cnJlbnQgY2FsbCBzdGFjayBoYXMgY2xlYXJlZC4gQW55XG4gICAgICogYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlIHByb3ZpZGVkIHRvIGBmdW5jYCB3aGVuIGl0J3MgaW52b2tlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlZmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVyIGlkLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmVyKGZ1bmN0aW9uKHRleHQpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHRleHQpO1xuICAgICAqIH0sICdkZWZlcnJlZCcpO1xuICAgICAqIC8vID0+IExvZ3MgJ2RlZmVycmVkJyBhZnRlciBvbmUgbWlsbGlzZWNvbmQuXG4gICAgICovXG4gICAgdmFyIGRlZmVyID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgYXJncykge1xuICAgICAgcmV0dXJuIGJhc2VEZWxheShmdW5jLCAxLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgYGZ1bmNgIGFmdGVyIGB3YWl0YCBtaWxsaXNlY29uZHMuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmVcbiAgICAgKiBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVyIGlkLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlbGF5KGZ1bmN0aW9uKHRleHQpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHRleHQpO1xuICAgICAqIH0sIDEwMDAsICdsYXRlcicpO1xuICAgICAqIC8vID0+IExvZ3MgJ2xhdGVyJyBhZnRlciBvbmUgc2Vjb25kLlxuICAgICAqL1xuICAgIHZhciBkZWxheSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHdhaXQsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBiYXNlRGVsYXkoZnVuYywgdG9OdW1iZXIod2FpdCkgfHwgMCwgYXJncyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGFyZ3VtZW50cyByZXZlcnNlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGZsaXAgYXJndW1lbnRzIGZvci5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmbGlwcGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZmxpcHBlZCA9IF8uZmxpcChmdW5jdGlvbigpIHtcbiAgICAgKiAgIHJldHVybiBfLnRvQXJyYXkoYXJndW1lbnRzKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGZsaXBwZWQoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgKiAvLyA9PiBbJ2QnLCAnYycsICdiJywgJ2EnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsaXAoZnVuYykge1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9GTElQX0ZMQUcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gICAgICogcHJvdmlkZWQsIGl0IGRldGVybWluZXMgdGhlIGNhY2hlIGtleSBmb3Igc3RvcmluZyB0aGUgcmVzdWx0IGJhc2VkIG9uIHRoZVxuICAgICAqIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uIEJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBhcmd1bWVudFxuICAgICAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gICAgICogZnVuY3Rpb24uIEl0cyBjcmVhdGlvbiBtYXkgYmUgY3VzdG9taXplZCBieSByZXBsYWNpbmcgdGhlIGBfLm1lbW9pemUuQ2FjaGVgXG4gICAgICogY29uc3RydWN0b3Igd2l0aCBvbmUgd2hvc2UgaW5zdGFuY2VzIGltcGxlbWVudCB0aGVcbiAgICAgKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICAgICAqIG1ldGhvZCBpbnRlcmZhY2Ugb2YgYGNsZWFyYCwgYGRlbGV0ZWAsIGBnZXRgLCBgaGFzYCwgYW5kIGBzZXRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtyZXNvbHZlcl0gVGhlIGZ1bmN0aW9uIHRvIHJlc29sdmUgdGhlIGNhY2hlIGtleS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdjJzogMywgJ2QnOiA0IH07XG4gICAgICpcbiAgICAgKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIHZhbHVlcyhvdGhlcik7XG4gICAgICogLy8gPT4gWzMsIDRdXG4gICAgICpcbiAgICAgKiBvYmplY3QuYSA9IDI7XG4gICAgICogdmFsdWVzKG9iamVjdCk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiAvLyBNb2RpZnkgdGhlIHJlc3VsdCBjYWNoZS5cbiAgICAgKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICogdmFsdWVzKG9iamVjdCk7XG4gICAgICogLy8gPT4gWydhJywgJ2InXVxuICAgICAqXG4gICAgICogLy8gUmVwbGFjZSBgXy5tZW1vaXplLkNhY2hlYC5cbiAgICAgKiBfLm1lbW9pemUuQ2FjaGUgPSBXZWFrTWFwO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lbW9pemUoZnVuYywgcmVzb2x2ZXIpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nIHx8IChyZXNvbHZlciAhPSBudWxsICYmIHR5cGVvZiByZXNvbHZlciAhPSAnZnVuY3Rpb24nKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICBrZXkgPSByZXNvbHZlciA/IHJlc29sdmVyLmFwcGx5KHRoaXMsIGFyZ3MpIDogYXJnc1swXSxcbiAgICAgICAgICAgIGNhY2hlID0gbWVtb2l6ZWQuY2FjaGU7XG5cbiAgICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhY2hlLmdldChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICBtZW1vaXplZC5jYWNoZSA9IGNhY2hlLnNldChrZXksIHJlc3VsdCkgfHwgY2FjaGU7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgbWVtb2l6ZWQuY2FjaGUgPSBuZXcgKG1lbW9pemUuQ2FjaGUgfHwgTWFwQ2FjaGUpO1xuICAgICAgcmV0dXJuIG1lbW9pemVkO1xuICAgIH1cblxuICAgIC8vIEV4cG9zZSBgTWFwQ2FjaGVgLlxuICAgIG1lbW9pemUuQ2FjaGUgPSBNYXBDYWNoZTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG5lZ2F0ZXMgdGhlIHJlc3VsdCBvZiB0aGUgcHJlZGljYXRlIGBmdW5jYC4gVGhlXG4gICAgICogYGZ1bmNgIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlXG4gICAgICogY3JlYXRlZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgcHJlZGljYXRlIHRvIG5lZ2F0ZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBuZWdhdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBpc0V2ZW4obikge1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5maWx0ZXIoWzEsIDIsIDMsIDQsIDUsIDZdLCBfLm5lZ2F0ZShpc0V2ZW4pKTtcbiAgICAgKiAvLyA9PiBbMSwgMywgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBuZWdhdGUocHJlZGljYXRlKSB7XG4gICAgICBpZiAodHlwZW9mIHByZWRpY2F0ZSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDA6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcyk7XG4gICAgICAgICAgY2FzZSAxOiByZXR1cm4gIXByZWRpY2F0ZS5jYWxsKHRoaXMsIGFyZ3NbMF0pO1xuICAgICAgICAgIGNhc2UgMjogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFwcmVkaWNhdGUuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGlzIHJlc3RyaWN0ZWQgdG8gaW52b2tpbmcgYGZ1bmNgIG9uY2UuIFJlcGVhdCBjYWxsc1xuICAgICAqIHRvIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBpbnZvY2F0aW9uLiBUaGUgYGZ1bmNgIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVzdHJpY3RlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGluaXRpYWxpemUgPSBfLm9uY2UoY3JlYXRlQXBwbGljYXRpb24pO1xuICAgICAqIGluaXRpYWxpemUoKTtcbiAgICAgKiBpbml0aWFsaXplKCk7XG4gICAgICogLy8gPT4gYGNyZWF0ZUFwcGxpY2F0aW9uYCBpcyBpbnZva2VkIG9uY2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbmNlKGZ1bmMpIHtcbiAgICAgIHJldHVybiBiZWZvcmUoMiwgZnVuYyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnRzIHRyYW5zZm9ybWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW3RyYW5zZm9ybXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgYXJndW1lbnQgdHJhbnNmb3Jtcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZG91YmxlZChuKSB7XG4gICAgICogICByZXR1cm4gbiAqIDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ub3ZlckFyZ3MoZnVuY3Rpb24oeCwgeSkge1xuICAgICAqICAgcmV0dXJuIFt4LCB5XTtcbiAgICAgKiB9LCBbc3F1YXJlLCBkb3VibGVkXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKDksIDMpO1xuICAgICAqIC8vID0+IFs4MSwgNl1cbiAgICAgKlxuICAgICAqIGZ1bmMoMTAsIDUpO1xuICAgICAqIC8vID0+IFsxMDAsIDEwXVxuICAgICAqL1xuICAgIHZhciBvdmVyQXJncyA9IGNhc3RSZXN0KGZ1bmN0aW9uKGZ1bmMsIHRyYW5zZm9ybXMpIHtcbiAgICAgIHRyYW5zZm9ybXMgPSAodHJhbnNmb3Jtcy5sZW5ndGggPT0gMSAmJiBpc0FycmF5KHRyYW5zZm9ybXNbMF0pKVxuICAgICAgICA/IGFycmF5TWFwKHRyYW5zZm9ybXNbMF0sIGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSlcbiAgICAgICAgOiBhcnJheU1hcChiYXNlRmxhdHRlbih0cmFuc2Zvcm1zLCAxKSwgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKTtcblxuICAgICAgdmFyIGZ1bmNzTGVuZ3RoID0gdHJhbnNmb3Jtcy5sZW5ndGg7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1pbihhcmdzLmxlbmd0aCwgZnVuY3NMZW5ndGgpO1xuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJnc1tpbmRleF0gPSB0cmFuc2Zvcm1zW2luZGV4XS5jYWxsKHRoaXMsIGFyZ3NbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgYXJncyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhlXG4gICAgICogYXJndW1lbnRzIGl0IHJlY2VpdmVzLiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmJpbmRgIGV4Y2VwdCBpdCBkb2VzICoqbm90KipcbiAgICAgKiBhbHRlciB0aGUgYHRoaXNgIGJpbmRpbmcuXG4gICAgICpcbiAgICAgKiBUaGUgYF8ucGFydGlhbC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgcGFydGlhbGx5XG4gICAgICogYXBwbGllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBwYXJ0aWFsbHkgYXBwbHkgYXJndW1lbnRzIHRvLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHBhcnRpYWxseSBhcHBsaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBncmVldChncmVldGluZywgbmFtZSkge1xuICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgbmFtZTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgc2F5SGVsbG9UbyA9IF8ucGFydGlhbChncmVldCwgJ2hlbGxvJyk7XG4gICAgICogc2F5SGVsbG9UbygnZnJlZCcpO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkJ1xuICAgICAqXG4gICAgICogLy8gUGFydGlhbGx5IGFwcGxpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGdyZWV0RnJlZCA9IF8ucGFydGlhbChncmVldCwgXywgJ2ZyZWQnKTtcbiAgICAgKiBncmVldEZyZWQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQnXG4gICAgICovXG4gICAgdmFyIHBhcnRpYWwgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKHBhcnRpYWwpKTtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfUEFSVElBTF9GTEFHLCB1bmRlZmluZWQsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucGFydGlhbGAgZXhjZXB0IHRoYXQgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzXG4gICAgICogYXJlIGFwcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8ucGFydGlhbFJpZ2h0LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBwYXJ0aWFsbHlcbiAgICAgKiBhcHBsaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHBhcnRpYWxseSBhcHBseSBhcmd1bWVudHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFydGlhbGx5IGFwcGxpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBuYW1lKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyBuYW1lO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBncmVldEZyZWQgPSBfLnBhcnRpYWxSaWdodChncmVldCwgJ2ZyZWQnKTtcbiAgICAgKiBncmVldEZyZWQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBQYXJ0aWFsbHkgYXBwbGllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgc2F5SGVsbG9UbyA9IF8ucGFydGlhbFJpZ2h0KGdyZWV0LCAnaGVsbG8nLCBfKTtcbiAgICAgKiBzYXlIZWxsb1RvKCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQnXG4gICAgICovXG4gICAgdmFyIHBhcnRpYWxSaWdodCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIocGFydGlhbFJpZ2h0KSk7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRywgdW5kZWZpbmVkLCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGFyZ3VtZW50cyBhcnJhbmdlZCBhY2NvcmRpbmdcbiAgICAgKiB0byB0aGUgc3BlY2lmaWVkIGBpbmRleGVzYCB3aGVyZSB0aGUgYXJndW1lbnQgdmFsdWUgYXQgdGhlIGZpcnN0IGluZGV4IGlzXG4gICAgICogcHJvdmlkZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LCB0aGUgYXJndW1lbnQgdmFsdWUgYXQgdGhlIHNlY29uZCBpbmRleCBpc1xuICAgICAqIHByb3ZpZGVkIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlYXJyYW5nZSBhcmd1bWVudHMgZm9yLlxuICAgICAqIEBwYXJhbSB7Li4uKG51bWJlcnxudW1iZXJbXSl9IGluZGV4ZXMgVGhlIGFycmFuZ2VkIGFyZ3VtZW50IGluZGV4ZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciByZWFyZ2VkID0gXy5yZWFyZyhmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICogICByZXR1cm4gW2EsIGIsIGNdO1xuICAgICAqIH0sIFsyLCAwLCAxXSk7XG4gICAgICpcbiAgICAgKiByZWFyZ2VkKCdiJywgJ2MnLCAnYScpXG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICovXG4gICAgdmFyIHJlYXJnID0gZmxhdFJlc3QoZnVuY3Rpb24oZnVuYywgaW5kZXhlcykge1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9SRUFSR19GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBpbmRleGVzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZVxuICAgICAqIGNyZWF0ZWQgZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBmcm9tIGBzdGFydGAgYW5kIGJleW9uZCBwcm92aWRlZCBhc1xuICAgICAqIGFuIGFycmF5LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZVxuICAgICAqIFtyZXN0IHBhcmFtZXRlcl0oaHR0cHM6Ly9tZG4uaW8vcmVzdF9wYXJhbWV0ZXJzKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F5ID0gXy5yZXN0KGZ1bmN0aW9uKHdoYXQsIG5hbWVzKSB7XG4gICAgICogICByZXR1cm4gd2hhdCArICcgJyArIF8uaW5pdGlhbChuYW1lcykuam9pbignLCAnKSArXG4gICAgICogICAgIChfLnNpemUobmFtZXMpID4gMSA/ICcsICYgJyA6ICcnKSArIF8ubGFzdChuYW1lcyk7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBzYXkoJ2hlbGxvJywgJ2ZyZWQnLCAnYmFybmV5JywgJ3BlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVzdChmdW5jLCBzdGFydCkge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSBzdGFydCA9PT0gdW5kZWZpbmVkID8gc3RhcnQgOiB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGVcbiAgICAgKiBjcmVhdGUgZnVuY3Rpb24gYW5kIGFuIGFycmF5IG9mIGFyZ3VtZW50cyBtdWNoIGxpa2VcbiAgICAgKiBbYEZ1bmN0aW9uI2FwcGx5YF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gdGhlXG4gICAgICogW3NwcmVhZCBvcGVyYXRvcl0oaHR0cHM6Ly9tZG4uaW8vc3ByZWFkX29wZXJhdG9yKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHNwcmVhZCBhcmd1bWVudHMgb3Zlci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgc3ByZWFkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F5ID0gXy5zcHJlYWQoZnVuY3Rpb24od2hvLCB3aGF0KSB7XG4gICAgICogICByZXR1cm4gd2hvICsgJyBzYXlzICcgKyB3aGF0O1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogc2F5KFsnZnJlZCcsICdoZWxsbyddKTtcbiAgICAgKiAvLyA9PiAnZnJlZCBzYXlzIGhlbGxvJ1xuICAgICAqXG4gICAgICogdmFyIG51bWJlcnMgPSBQcm9taXNlLmFsbChbXG4gICAgICogICBQcm9taXNlLnJlc29sdmUoNDApLFxuICAgICAqICAgUHJvbWlzZS5yZXNvbHZlKDM2KVxuICAgICAqIF0pO1xuICAgICAqXG4gICAgICogbnVtYmVycy50aGVuKF8uc3ByZWFkKGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgKiAgIHJldHVybiB4ICsgeTtcbiAgICAgKiB9KSk7XG4gICAgICogLy8gPT4gYSBQcm9taXNlIG9mIDc2XG4gICAgICovXG4gICAgZnVuY3Rpb24gc3ByZWFkKGZ1bmMsIHN0YXJ0KSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IHN0YXJ0ID09IG51bGwgPyAwIDogbmF0aXZlTWF4KHRvSW50ZWdlcihzdGFydCksIDApO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgdmFyIGFycmF5ID0gYXJnc1tzdGFydF0sXG4gICAgICAgICAgICBvdGhlckFyZ3MgPSBjYXN0U2xpY2UoYXJncywgMCwgc3RhcnQpO1xuXG4gICAgICAgIGlmIChhcnJheSkge1xuICAgICAgICAgIGFycmF5UHVzaChvdGhlckFyZ3MsIGFycmF5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSB0aHJvdHRsZWQgZnVuY3Rpb24gdGhhdCBvbmx5IGludm9rZXMgYGZ1bmNgIGF0IG1vc3Qgb25jZSBwZXJcbiAgICAgKiBldmVyeSBgd2FpdGAgbWlsbGlzZWNvbmRzLiBUaGUgdGhyb3R0bGVkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYFxuICAgICAqIG1ldGhvZCB0byBjYW5jZWwgZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG9cbiAgICAgKiBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS4gUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2BcbiAgICAgKiBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGUgbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgXG4gICAgICogdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZVxuICAgICAqIHRocm90dGxlZCBmdW5jdGlvbi4gU3Vic2VxdWVudCBjYWxscyB0byB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uIHJldHVybiB0aGVcbiAgICAgKiByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgIGludm9jYXRpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gICAgICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb25cbiAgICAgKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gICAgICpcbiAgICAgKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAgICAgKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gICAgICpcbiAgICAgKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAgICAgKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLnRocm90dGxlYCBhbmQgYF8uZGVib3VuY2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gdGhyb3R0bGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRocm90dGxlIGludm9jYXRpb25zIHRvLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHRocm90dGxlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgZXhjZXNzaXZlbHkgdXBkYXRpbmcgdGhlIHBvc2l0aW9uIHdoaWxlIHNjcm9sbGluZy5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbignc2Nyb2xsJywgXy50aHJvdHRsZSh1cGRhdGVQb3NpdGlvbiwgMTAwKSk7XG4gICAgICpcbiAgICAgKiAvLyBJbnZva2UgYHJlbmV3VG9rZW5gIHdoZW4gdGhlIGNsaWNrIGV2ZW50IGlzIGZpcmVkLCBidXQgbm90IG1vcmUgdGhhbiBvbmNlIGV2ZXJ5IDUgbWludXRlcy5cbiAgICAgKiB2YXIgdGhyb3R0bGVkID0gXy50aHJvdHRsZShyZW5ld1Rva2VuLCAzMDAwMDAsIHsgJ3RyYWlsaW5nJzogZmFsc2UgfSk7XG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIHRocm90dGxlZCk7XG4gICAgICpcbiAgICAgKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIHRocm90dGxlZCBpbnZvY2F0aW9uLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIHRocm90dGxlZC5jYW5jZWwpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRocm90dGxlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBsZWFkaW5nID0gdHJ1ZSxcbiAgICAgICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc09iamVjdChvcHRpb25zKSkge1xuICAgICAgICBsZWFkaW5nID0gJ2xlYWRpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMubGVhZGluZyA6IGxlYWRpbmc7XG4gICAgICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGVib3VuY2UoZnVuYywgd2FpdCwge1xuICAgICAgICAnbGVhZGluZyc6IGxlYWRpbmcsXG4gICAgICAgICdtYXhXYWl0Jzogd2FpdCxcbiAgICAgICAgJ3RyYWlsaW5nJzogdHJhaWxpbmdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdXAgdG8gb25lIGFyZ3VtZW50LCBpZ25vcmluZyBhbnlcbiAgICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXAoWyc2JywgJzgnLCAnMTAnXSwgXy51bmFyeShwYXJzZUludCkpO1xuICAgICAqIC8vID0+IFs2LCA4LCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmFyeShmdW5jKSB7XG4gICAgICByZXR1cm4gYXJ5KGZ1bmMsIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHByb3ZpZGVzIGB2YWx1ZWAgdG8gYHdyYXBwZXJgIGFzIGl0cyBmaXJzdFxuICAgICAqIGFyZ3VtZW50LiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIGZ1bmN0aW9uIGFyZSBhcHBlbmRlZFxuICAgICAqIHRvIHRob3NlIHByb3ZpZGVkIHRvIHRoZSBgd3JhcHBlcmAuIFRoZSB3cmFwcGVyIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgXG4gICAgICogYmluZGluZyBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3dyYXBwZXI9aWRlbnRpdHldIFRoZSB3cmFwcGVyIGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgcCA9IF8ud3JhcChfLmVzY2FwZSwgZnVuY3Rpb24oZnVuYywgdGV4dCkge1xuICAgICAqICAgcmV0dXJuICc8cD4nICsgZnVuYyh0ZXh0KSArICc8L3A+JztcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIHAoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gJzxwPmZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlczwvcD4nXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcCh2YWx1ZSwgd3JhcHBlcikge1xuICAgICAgcmV0dXJuIHBhcnRpYWwoY2FzdEZ1bmN0aW9uKHdyYXBwZXIpLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCBhcyBhbiBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgxKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KHsgJ2EnOiAxIH0pO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSB9XVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoJ2FiYycpO1xuICAgICAqIC8vID0+IFsnYWJjJ11cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KG51bGwpO1xuICAgICAqIC8vID0+IFtudWxsXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkodW5kZWZpbmVkKTtcbiAgICAgKiAvLyA9PiBbdW5kZWZpbmVkXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqIGNvbnNvbGUubG9nKF8uY2FzdEFycmF5KGFycmF5KSA9PT0gYXJyYXkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0QXJyYXkoKSB7XG4gICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIHZhbHVlID0gYXJndW1lbnRzWzBdO1xuICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzaGFsbG93IGNsb25lIG9mIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvbiB0aGVcbiAgICAgKiBbc3RydWN0dXJlZCBjbG9uZSBhbGdvcml0aG1dKGh0dHBzOi8vbWRuLmlvL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtKVxuICAgICAqIGFuZCBzdXBwb3J0cyBjbG9uaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsIGRhdGUgb2JqZWN0cywgbWFwcyxcbiAgICAgKiBudW1iZXJzLCBgT2JqZWN0YCBvYmplY3RzLCByZWdleGVzLCBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWRcbiAgICAgKiBhcnJheXMuIFRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBhcmd1bWVudHNgIG9iamVjdHMgYXJlIGNsb25lZFxuICAgICAqIGFzIHBsYWluIG9iamVjdHMuIEFuIGVtcHR5IG9iamVjdCBpcyByZXR1cm5lZCBmb3IgdW5jbG9uZWFibGUgdmFsdWVzIHN1Y2hcbiAgICAgKiBhcyBlcnJvciBvYmplY3RzLCBmdW5jdGlvbnMsIERPTSBub2RlcywgYW5kIFdlYWtNYXBzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZURlZXBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gICAgICpcbiAgICAgKiB2YXIgc2hhbGxvdyA9IF8uY2xvbmUob2JqZWN0cyk7XG4gICAgICogY29uc29sZS5sb2coc2hhbGxvd1swXSA9PT0gb2JqZWN0c1swXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lKHZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBjbG9uZWQgdmFsdWUuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLFxuICAgICAqIGNsb25pbmcgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoXG4gICAgICogdXAgdG8gZm91ciBhcmd1bWVudHM7ICh2YWx1ZSBbLCBpbmRleHxrZXksIG9iamVjdCwgc3RhY2tdKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZURlZXBXaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIodmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHZhbHVlLmNsb25lTm9kZShmYWxzZSk7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGVsID0gXy5jbG9uZVdpdGgoZG9jdW1lbnQuYm9keSwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhlbCA9PT0gZG9jdW1lbnQuYm9keSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gICAgICogLy8gPT4gJ0JPRFknXG4gICAgICogY29uc29sZS5sb2coZWwuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVdpdGgodmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8uY2xvbmVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gICAgICpcbiAgICAgKiB2YXIgZGVlcCA9IF8uY2xvbmVEZWVwKG9iamVjdHMpO1xuICAgICAqIGNvbnNvbGUubG9nKGRlZXBbMF0gPT09IG9iamVjdHNbMF0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVEZWVwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVXaXRoYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZGVlcCBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lV2l0aFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKHZhbHVlKSB7XG4gICAgICogICBpZiAoXy5pc0VsZW1lbnQodmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiB2YWx1ZS5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGVsID0gXy5jbG9uZURlZXBXaXRoKGRvY3VtZW50LmJvZHksIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coZWwgPT09IGRvY3VtZW50LmJvZHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICogY29uc29sZS5sb2coZWwubm9kZU5hbWUpO1xuICAgICAqIC8vID0+ICdCT0RZJ1xuICAgICAqIGNvbnNvbGUubG9nKGVsLmNoaWxkTm9kZXMubGVuZ3RoKTtcbiAgICAgKiAvLyA9PiAyMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lRGVlcFdpdGgodmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBvYmplY3RgIGNvbmZvcm1zIHRvIGBzb3VyY2VgIGJ5IGludm9raW5nIHRoZSBwcmVkaWNhdGVcbiAgICAgKiBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8uY29uZm9ybXNgIHdoZW4gYHNvdXJjZWAgaXNcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjE0LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGNvbmZvcm1zLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gICAgICpcbiAgICAgKiBfLmNvbmZvcm1zVG8ob2JqZWN0LCB7ICdiJzogZnVuY3Rpb24obikgeyByZXR1cm4gbiA+IDE7IH0gfSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5jb25mb3Jtc1RvKG9iamVjdCwgeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAyOyB9IH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIHNvdXJjZSA9PSBudWxsIHx8IGJhc2VDb25mb3Jtc1RvKG9iamVjdCwgc291cmNlLCBrZXlzKHNvdXJjZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGFcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gICAgICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZXEoJ2EnLCAnYScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZXEoTmFOLCBOYU4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8ubHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ndCgzLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0KDMsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmd0KDEsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGd0ID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlR3QpO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG9cbiAgICAgKiAgYG90aGVyYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5sdGVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ndGUoMywgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5ndGUoMywgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5ndGUoMSwgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgZ3RlID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSBvdGhlcjtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAgICAgIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoJ2FiYycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5QnVmZmVyYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5IGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlCdWZmZXIobmV3IEFycmF5QnVmZmVyKDIpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlCdWZmZXIobmV3IEFycmF5KDIpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0FycmF5QnVmZmVyID0gbm9kZUlzQXJyYXlCdWZmZXIgPyBiYXNlVW5hcnkobm9kZUlzQXJyYXlCdWZmZXIpIDogYmFzZUlzQXJyYXlCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gICAgICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICAgICAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNBcnJheUxpa2VgIGV4Y2VwdCB0aGF0IGl0IGFsc28gY2hlY2tzIGlmIGB2YWx1ZWBcbiAgICAgKiBpcyBhbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNBcnJheUxpa2UodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBib29sZWFuIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYm9vbGVhbiwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQm9vbGVhbihmYWxzZSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Jvb2xlYW4obnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Jvb2xlYW4odmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2UgfHxcbiAgICAgICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYm9vbFRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNCdWZmZXIobmV3IEJ1ZmZlcigyKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0J1ZmZlcihuZXcgVWludDhBcnJheSgyKSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNCdWZmZXIgPSBuYXRpdmVJc0J1ZmZlciB8fCBzdHViRmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYERhdGVgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBkYXRlIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRGF0ZShuZXcgRGF0ZSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0RhdGUoJ01vbiBBcHJpbCAyMyAyMDEyJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNEYXRlID0gbm9kZUlzRGF0ZSA/IGJhc2VVbmFyeShub2RlSXNEYXRlKSA6IGJhc2VJc0RhdGU7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBET00gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBET00gZWxlbWVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRWxlbWVudChkb2N1bWVudC5ib2R5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRWxlbWVudCgnPGJvZHk+Jyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSAxICYmICFpc1BsYWluT2JqZWN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBlbXB0eSBvYmplY3QsIGNvbGxlY3Rpb24sIG1hcCwgb3Igc2V0LlxuICAgICAqXG4gICAgICogT2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgbm8gb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkXG4gICAgICogcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEFycmF5LWxpa2UgdmFsdWVzIHN1Y2ggYXMgYGFyZ3VtZW50c2Agb2JqZWN0cywgYXJyYXlzLCBidWZmZXJzLCBzdHJpbmdzLCBvclxuICAgICAqIGpRdWVyeS1saWtlIGNvbGxlY3Rpb25zIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBsZW5ndGhgIG9mIGAwYC5cbiAgICAgKiBTaW1pbGFybHksIG1hcHMgYW5kIHNldHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYHNpemVgIG9mIGAwYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZW1wdHksIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSh0cnVlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkoMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSh7ICdhJzogMSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSAmJlxuICAgICAgICAgIChpc0FycmF5KHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlLnNwbGljZSA9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgICAgICBpc0J1ZmZlcih2YWx1ZSkgfHwgaXNUeXBlZEFycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiAhdmFsdWUubGVuZ3RoO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSk7XG4gICAgICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgIHJldHVybiAhdmFsdWUuc2l6ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1Byb3RvdHlwZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICFiYXNlS2V5cyh2YWx1ZSkubGVuZ3RoO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlXG4gICAgICogZXF1aXZhbGVudC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBzdXBwb3J0cyBjb21wYXJpbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucyxcbiAgICAgKiBkYXRlIG9iamVjdHMsIGVycm9yIG9iamVjdHMsIG1hcHMsIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsXG4gICAgICogc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkIGFycmF5cy4gYE9iamVjdGAgb2JqZWN0cyBhcmUgY29tcGFyZWRcbiAgICAgKiBieSB0aGVpciBvd24sIG5vdCBpbmhlcml0ZWQsIGVudW1lcmFibGUgcHJvcGVydGllcy4gRnVuY3Rpb25zIGFuZCBET01cbiAgICAgKiBub2RlcyBhcmUgY29tcGFyZWQgYnkgc3RyaWN0IGVxdWFsaXR5LCBpLmUuIGA9PT1gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gICAgICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uaXNFcXVhbChvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBvYmplY3QgPT09IG90aGVyO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFcXVhbCh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNFcXVhbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgY29tcGFyaXNvbnNcbiAgICAgKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHVwIHRvXG4gICAgICogc2l4IGFyZ3VtZW50czogKG9ialZhbHVlLCBvdGhWYWx1ZSBbLCBpbmRleHxrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrXSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBpc0dyZWV0aW5nKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlKSB7XG4gICAgICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhvdGhWYWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHRydWU7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydoZWxsbycsICdnb29kYnllJ107XG4gICAgICogdmFyIG90aGVyID0gWydoaScsICdnb29kYnllJ107XG4gICAgICpcbiAgICAgKiBfLmlzRXF1YWxXaXRoKGFycmF5LCBvdGhlciwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRXF1YWxXaXRoKHZhbHVlLCBvdGhlciwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgdmFyIHJlc3VsdCA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKHZhbHVlLCBvdGhlcikgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIHVuZGVmaW5lZCwgY3VzdG9taXplcikgOiAhIXJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBgRXJyb3JgLCBgRXZhbEVycm9yYCwgYFJhbmdlRXJyb3JgLCBgUmVmZXJlbmNlRXJyb3JgLFxuICAgICAqIGBTeW50YXhFcnJvcmAsIGBUeXBlRXJyb3JgLCBvciBgVVJJRXJyb3JgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gZXJyb3Igb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNFcnJvcihuZXcgRXJyb3IpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFcnJvcihFcnJvcik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Vycm9yKHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICAgICAgcmV0dXJuIHRhZyA9PSBlcnJvclRhZyB8fCB0YWcgPT0gZG9tRXhjVGFnIHx8XG4gICAgICAgICh0eXBlb2YgdmFsdWUubWVzc2FnZSA9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUubmFtZSA9PSAnc3RyaW5nJyAmJiAhaXNQbGFpbk9iamVjdCh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmluaXRlIHByaW1pdGl2ZSBudW1iZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc0Zpbml0ZWBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc0Zpbml0ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZmluaXRlIG51bWJlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRmluaXRlKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZShJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRmluaXRlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIG5hdGl2ZUlzRmluaXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0Z1bmN0aW9uKF8pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgICAgIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICAgICAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICAgICAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BOdW1iZXIuaXNJbnRlZ2VyYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzSW50ZWdlcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNJbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSA9PSB0b0ludGVnZXIodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNMZW5ndGgoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNMZW5ndGgoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAgICAgKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gICAgICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdCh7fSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAgICAgKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBNYXBgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc01hcChuZXcgTWFwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTWFwKG5ldyBXZWFrTWFwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc01hcCA9IG5vZGVJc01hcCA/IGJhc2VVbmFyeShub2RlSXNNYXApIDogYmFzZUlzTWFwO1xuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIGBvYmplY3RgIGFuZCBgc291cmNlYCB0b1xuICAgICAqIGRldGVybWluZSBpZiBgb2JqZWN0YCBjb250YWlucyBlcXVpdmFsZW50IHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGBfLm1hdGNoZXNgIHdoZW4gYHNvdXJjZWAgaXNcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0IGBzb3VyY2VgXG4gICAgICogdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWUgYF8uaXNFcXVhbGBcbiAgICAgKiBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICAgICAqXG4gICAgICogXy5pc01hdGNoKG9iamVjdCwgeyAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc01hdGNoKG9iamVjdCwgeyAnYic6IDEgfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc01hdGNoKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIGdldE1hdGNoRGF0YShzb3VyY2UpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzTWF0Y2hgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIGNvbXBhcmlzb25zXG4gICAgICogYXJlIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCBmaXZlXG4gICAgICogYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBpbmRleHxrZXksIG9iamVjdCwgc291cmNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBpc0dyZWV0aW5nKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhzcmNWYWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHRydWU7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2dyZWV0aW5nJzogJ2hlbGxvJyB9O1xuICAgICAqIHZhciBzb3VyY2UgPSB7ICdncmVldGluZyc6ICdoaScgfTtcbiAgICAgKlxuICAgICAqIF8uaXNNYXRjaFdpdGgob2JqZWN0LCBzb3VyY2UsIGN1c3RvbWl6ZXIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc01hdGNoV2l0aChvYmplY3QsIHNvdXJjZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBnZXRNYXRjaERhdGEoc291cmNlKSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYE5hTmAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc05hTmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc05hTikgYW5kIGlzIG5vdCB0aGUgc2FtZSBhc1xuICAgICAqIGdsb2JhbCBbYGlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vaXNOYU4pIHdoaWNoIHJldHVybnMgYHRydWVgIGZvclxuICAgICAqIGB1bmRlZmluZWRgIGFuZCBvdGhlciBub24tbnVtYmVyIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc05hTihOYU4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYU4obmV3IE51bWJlcihOYU4pKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBpc05hTih1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYU4odW5kZWZpbmVkKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTmFOKHZhbHVlKSB7XG4gICAgICAvLyBBbiBgTmFOYCBwcmltaXRpdmUgaXMgdGhlIG9ubHkgdmFsdWUgdGhhdCBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLlxuICAgICAgLy8gUGVyZm9ybSB0aGUgYHRvU3RyaW5nVGFnYCBjaGVjayBmaXJzdCB0byBhdm9pZCBlcnJvcnMgd2l0aCBzb21lXG4gICAgICAvLyBBY3RpdmVYIG9iamVjdHMgaW4gSUUuXG4gICAgICByZXR1cm4gaXNOdW1iZXIodmFsdWUpICYmIHZhbHVlICE9ICt2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByaXN0aW5lIG5hdGl2ZSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBjYW4ndCByZWxpYWJseSBkZXRlY3QgbmF0aXZlIGZ1bmN0aW9ucyBpbiB0aGUgcHJlc2VuY2VcbiAgICAgKiBvZiB0aGUgY29yZS1qcyBwYWNrYWdlIGJlY2F1c2UgY29yZS1qcyBjaXJjdW12ZW50cyB0aGlzIGtpbmQgb2YgZGV0ZWN0aW9uLlxuICAgICAqIERlc3BpdGUgbXVsdGlwbGUgcmVxdWVzdHMsIHRoZSBjb3JlLWpzIG1haW50YWluZXIgaGFzIG1hZGUgaXQgY2xlYXI6IGFueVxuICAgICAqIGF0dGVtcHQgdG8gZml4IHRoZSBkZXRlY3Rpb24gd2lsbCBiZSBvYnN0cnVjdGVkLiBBcyBhIHJlc3VsdCwgd2UncmUgbGVmdFxuICAgICAqIHdpdGggbGl0dGxlIGNob2ljZSBidXQgdG8gdGhyb3cgYW4gZXJyb3IuIFVuZm9ydHVuYXRlbHksIHRoaXMgYWxzbyBhZmZlY3RzXG4gICAgICogcGFja2FnZXMsIGxpa2UgW2JhYmVsLXBvbHlmaWxsXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iYWJlbC1wb2x5ZmlsbCksXG4gICAgICogd2hpY2ggcmVseSBvbiBjb3JlLWpzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmF0aXZlKEFycmF5LnByb3RvdHlwZS5wdXNoKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmF0aXZlKF8pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOYXRpdmUodmFsdWUpIHtcbiAgICAgIGlmIChpc01hc2thYmxlKHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoQ09SRV9FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYG51bGxgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOdWxsKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdWxsKHZvaWQgMCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc051bGwodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG51bGxpc2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc05pbChudWxsKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKHZvaWQgMCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05pbChOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOaWwodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTnVtYmVyYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRvIGV4Y2x1ZGUgYEluZmluaXR5YCwgYC1JbmZpbml0eWAsIGFuZCBgTmFOYCwgd2hpY2ggYXJlXG4gICAgICogY2xhc3NpZmllZCBhcyBudW1iZXJzLCB1c2UgdGhlIGBfLmlzRmluaXRlYCBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbnVtYmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBudW1iZXJUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAgICAgKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC44LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm90byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG4gICAgICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICB2YXIgQ3RvciA9IGhhc093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICAgICAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICAgICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFJlZ0V4cGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHJlZ2V4cCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzUmVnRXhwKC9hYmMvKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzUmVnRXhwKCcvYWJjLycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzUmVnRXhwID0gbm9kZUlzUmVnRXhwID8gYmFzZVVuYXJ5KG5vZGVJc1JlZ0V4cCkgOiBiYXNlSXNSZWdFeHA7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHNhZmUgaW50ZWdlci4gQW4gaW50ZWdlciBpcyBzYWZlIGlmIGl0J3MgYW4gSUVFRS03NTRcbiAgICAgKiBkb3VibGUgcHJlY2lzaW9uIG51bWJlciB3aGljaCBpc24ndCB0aGUgcmVzdWx0IG9mIGEgcm91bmRlZCB1bnNhZmUgaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzU2FmZUludGVnZXJgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNTYWZlSW50ZWdlcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2FmZSBpbnRlZ2VyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU2FmZUludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcignMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTYWZlSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzSW50ZWdlcih2YWx1ZSkgJiYgdmFsdWUgPj0gLU1BWF9TQUZFX0lOVEVHRVIgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFNldGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU2V0KG5ldyBTZXQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNTZXQobmV3IFdlYWtTZXQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzU2V0ID0gbm9kZUlzU2V0ID8gYmFzZVVuYXJ5KG5vZGVJc1NldCkgOiBiYXNlSXNTZXQ7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzdHJpbmcsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1N0cmluZygnYWJjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1N0cmluZygxKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8XG4gICAgICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzVHlwZWRBcnJheSA9IG5vZGVJc1R5cGVkQXJyYXkgPyBiYXNlVW5hcnkobm9kZUlzVHlwZWRBcnJheSkgOiBiYXNlSXNUeXBlZEFycmF5O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNVbmRlZmluZWQodm9pZCAwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzVW5kZWZpbmVkKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgV2Vha01hcGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHdlYWsgbWFwLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrTWFwKG5ldyBXZWFrTWFwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzV2Vha01hcChuZXcgTWFwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzV2Vha01hcCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSB3ZWFrTWFwVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgV2Vha1NldGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHdlYWsgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrU2V0KG5ldyBXZWFrU2V0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzV2Vha1NldChuZXcgU2V0KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzV2Vha1NldCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gd2Vha1NldFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLmd0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubHQoMSwgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdCgzLCAzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5sdCgzLCAxKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBsdCA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oYmFzZUx0KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvXG4gICAgICogIGBvdGhlcmAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8uZ3RlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubHRlKDEsIDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8ubHRlKDMsIDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8ubHRlKDMsIDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGx0ZSA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPD0gb3RoZXI7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvQXJyYXkoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8udG9BcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICpcbiAgICAgKiBfLnRvQXJyYXkoMSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8udG9BcnJheShudWxsKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvQXJyYXkodmFsdWUpIHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gc3RyaW5nVG9BcnJheSh2YWx1ZSkgOiBjb3B5QXJyYXkodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHN5bUl0ZXJhdG9yICYmIHZhbHVlW3N5bUl0ZXJhdG9yXSkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JUb0FycmF5KHZhbHVlW3N5bUl0ZXJhdG9yXSgpKTtcbiAgICAgIH1cbiAgICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICAgIGZ1bmMgPSB0YWcgPT0gbWFwVGFnID8gbWFwVG9BcnJheSA6ICh0YWcgPT0gc2V0VGFnID8gc2V0VG9BcnJheSA6IHZhbHVlcyk7XG5cbiAgICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgZmluaXRlIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEyLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZSgzLjIpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiA1ZS0zMjRcbiAgICAgKlxuICAgICAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKCczLjInKTtcbiAgICAgKiAvLyA9PiAzLjJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6IDA7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gSU5GSU5JVFkgfHwgdmFsdWUgPT09IC1JTkZJTklUWSkge1xuICAgICAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgICAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9JbnRlZ2VyKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcignMy4yJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHRvRmluaXRlKHZhbHVlKSxcbiAgICAgICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gICAgICByZXR1cm4gcmVzdWx0ID09PSByZXN1bHQgPyAocmVtYWluZGVyID8gcmVzdWx0IC0gcmVtYWluZGVyIDogcmVzdWx0KSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyIHN1aXRhYmxlIGZvciB1c2UgYXMgdGhlIGxlbmd0aCBvZiBhblxuICAgICAqIGFycmF5LWxpa2Ugb2JqZWN0LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0xlbmd0aCgzLjIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8udG9MZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogXy50b0xlbmd0aChJbmZpbml0eSk7XG4gICAgICogLy8gPT4gNDI5NDk2NzI5NVxuICAgICAqXG4gICAgICogXy50b0xlbmd0aCgnMy4yJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTGVuZ3RoKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPyBiYXNlQ2xhbXAodG9JbnRlZ2VyKHZhbHVlKSwgMCwgTUFYX0FSUkFZX0xFTkdUSCkgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKDMuMik7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDVlLTMyNFxuICAgICAqXG4gICAgICogXy50b051bWJlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gSW5maW5pdHlcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoJzMuMicpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5BTjtcbiAgICAgIH1cbiAgICAgIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgICAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgICAgIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gICAgICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICAgICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAgICAgKiBrZXllZCBwcm9wZXJ0aWVzIG9mIGB2YWx1ZWAgdG8gb3duIHByb3BlcnRpZXMgb2YgdGhlIHBsYWluIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgcGxhaW4gb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbih7ICdhJzogMSB9LCBuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKlxuICAgICAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIF8udG9QbGFpbk9iamVjdChuZXcgRm9vKSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHNhZmUgaW50ZWdlci4gQSBzYWZlIGludGVnZXIgY2FuIGJlIGNvbXBhcmVkIGFuZFxuICAgICAqIHJlcHJlc2VudGVkIGNvcnJlY3RseS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gOTAwNzE5OTI1NDc0MDk5MVxuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9TYWZlSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgID8gYmFzZUNsYW1wKHRvSW50ZWdlcih2YWx1ZSksIC1NQVhfU0FGRV9JTlRFR0VSLCBNQVhfU0FGRV9JTlRFR0VSKVxuICAgICAgICA6ICh2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAgICAgKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKG51bGwpO1xuICAgICAqIC8vID0+ICcnXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKC0wKTtcbiAgICAgKiAvLyA9PiAnLTAnXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gJzEsMiwzJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZVxuICAgICAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICAgICAqIFN1YnNlcXVlbnQgc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgIGFuZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BPYmplY3QuYXNzaWduYF0oaHR0cHM6Ly9tZG4uaW8vT2JqZWN0L2Fzc2lnbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5hc3NpZ25JblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEJhcigpIHtcbiAgICAgKiAgIHRoaXMuYyA9IDM7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5iID0gMjtcbiAgICAgKiBCYXIucHJvdG90eXBlLmQgPSA0O1xuICAgICAqXG4gICAgICogXy5hc3NpZ24oeyAnYSc6IDAgfSwgbmV3IEZvbywgbmV3IEJhcik7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbiA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlKSB7XG4gICAgICBpZiAoaXNQcm90b3R5cGUoc291cmNlKSB8fCBpc0FycmF5TGlrZShzb3VyY2UpKSB7XG4gICAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHNvdXJjZVtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgb3duIGFuZFxuICAgICAqIGluaGVyaXRlZCBzb3VyY2UgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGV4dGVuZFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gQmFyKCkge1xuICAgICAqICAgdGhpcy5jID0gMztcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmIgPSAyO1xuICAgICAqIEJhci5wcm90b3R5cGUuZCA9IDQ7XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbkluKHsgJ2EnOiAwIH0sIG5ldyBGb28sIG5ldyBCYXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMywgJ2QnOiA0IH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduSW4gPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25JbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGFzc2lnbmVkIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnNcbiAgICAgKiBgdW5kZWZpbmVkYCwgYXNzaWdubWVudCBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYFxuICAgICAqIGlzIGludm9rZWQgd2l0aCBmaXZlIGFyZ3VtZW50czogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBleHRlbmRXaXRoXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnbldpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiBfLmlzVW5kZWZpbmVkKG9ialZhbHVlKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGRlZmF1bHRzID0gXy5wYXJ0aWFsUmlnaHQoXy5hc3NpZ25JbldpdGgsIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbkluV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QsIGN1c3RvbWl6ZXIpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gICAgICogYHVuZGVmaW5lZGAsIGFzc2lnbm1lbnQgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggZml2ZSBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduSW5XaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICByZXR1cm4gXy5pc1VuZGVmaW5lZChvYmpWYWx1ZSkgPyBzcmNWYWx1ZSA6IG9ialZhbHVlO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBkZWZhdWx0cyA9IF8ucGFydGlhbFJpZ2h0KF8uYXNzaWduV2l0aCwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBkZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0LCBjdXN0b21pemVyKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gYHBhdGhzYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwaWNrZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9LCA0XSB9O1xuICAgICAqXG4gICAgICogXy5hdChvYmplY3QsIFsnYVswXS5iLmMnLCAnYVsxXSddKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKi9cbiAgICB2YXIgYXQgPSBmbGF0UmVzdChiYXNlQXQpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgdGhhdCBpbmhlcml0cyBmcm9tIHRoZSBgcHJvdG90eXBlYCBvYmplY3QuIElmIGFcbiAgICAgKiBgcHJvcGVydGllc2Agb2JqZWN0IGlzIGdpdmVuLCBpdHMgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXNcbiAgICAgKiBhcmUgYXNzaWduZWQgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcm90b3R5cGUgVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtwcm9wZXJ0aWVzXSBUaGUgcHJvcGVydGllcyB0byBhc3NpZ24gdG8gdGhlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBTaGFwZSgpIHtcbiAgICAgKiAgIHRoaXMueCA9IDA7XG4gICAgICogICB0aGlzLnkgPSAwO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIENpcmNsZSgpIHtcbiAgICAgKiAgIFNoYXBlLmNhbGwodGhpcyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogQ2lyY2xlLnByb3RvdHlwZSA9IF8uY3JlYXRlKFNoYXBlLnByb3RvdHlwZSwge1xuICAgICAqICAgJ2NvbnN0cnVjdG9yJzogQ2lyY2xlXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiB2YXIgY2lyY2xlID0gbmV3IENpcmNsZTtcbiAgICAgKiBjaXJjbGUgaW5zdGFuY2VvZiBDaXJjbGU7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogY2lyY2xlIGluc3RhbmNlb2YgU2hhcGU7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZShwcm90b3R5cGUsIHByb3BlcnRpZXMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBiYXNlQ3JlYXRlKHByb3RvdHlwZSk7XG4gICAgICByZXR1cm4gcHJvcGVydGllcyA9PSBudWxsID8gcmVzdWx0IDogYmFzZUFzc2lnbihyZXN1bHQsIHByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2VcbiAgICAgKiBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzIHRoYXRcbiAgICAgKiByZXNvbHZlIHRvIGB1bmRlZmluZWRgLiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4gICAgICogT25jZSBhIHByb3BlcnR5IGlzIHNldCwgYWRkaXRpb25hbCB2YWx1ZXMgb2YgdGhlIHNhbWUgcHJvcGVydHkgYXJlIGlnbm9yZWQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZGVmYXVsdHNEZWVwXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGRlZmF1bHRzID0gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTE7XG4gICAgICB2YXIgbGVuZ3RoID0gc291cmNlcy5sZW5ndGg7XG4gICAgICB2YXIgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICAgIHZhciBwcm9wcyA9IGtleXNJbihzb3VyY2UpO1xuICAgICAgICB2YXIgcHJvcHNJbmRleCA9IC0xO1xuICAgICAgICB2YXIgcHJvcHNMZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKCsrcHJvcHNJbmRleCA8IHByb3BzTGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIGtleSA9IHByb3BzW3Byb3BzSW5kZXhdO1xuICAgICAgICAgIHZhciB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgKGVxKHZhbHVlLCBvYmplY3RQcm90b1trZXldKSAmJiAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSB7XG4gICAgICAgICAgICBvYmplY3Rba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kZWZhdWx0c2AgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgYXNzaWduc1xuICAgICAqIGRlZmF1bHQgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZGVmYXVsdHNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZhdWx0c0RlZXAoeyAnYSc6IHsgJ2InOiAyIH0gfSwgeyAnYSc6IHsgJ2InOiAxLCAnYyc6IDMgfSB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnYic6IDIsICdjJzogMyB9IH1cbiAgICAgKi9cbiAgICB2YXIgZGVmYXVsdHNEZWVwID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgYXJncy5wdXNoKHVuZGVmaW5lZCwgY3VzdG9tRGVmYXVsdHNNZXJnZSk7XG4gICAgICByZXR1cm4gYXBwbHkobWVyZ2VXaXRoLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBrZXkgb2YgdGhlIGZpcnN0XG4gICAgICogZWxlbWVudCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSBSZXR1cm5zIHRoZSBrZXkgb2YgdGhlIG1hdGNoZWQgZWxlbWVudCxcbiAgICAgKiAgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0ge1xuICAgICAqICAgJ2Jhcm5leSc6ICB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgICdmcmVkJzogICAgeyAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICAgICAqIC8vID0+ICdiYXJuZXknIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEtleSh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gJ3BlYmJsZXMnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAnYmFybmV5J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRLZXkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBiYXNlRmluZEtleShvYmplY3QsIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGJhc2VGb3JPd24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZEtleWAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGEgY29sbGVjdGlvbiBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSBSZXR1cm5zIHRoZSBrZXkgb2YgdGhlIG1hdGNoZWQgZWxlbWVudCxcbiAgICAgKiAgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0ge1xuICAgICAqICAgJ2Jhcm5leSc6ICB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgICdmcmVkJzogICAgeyAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAgICAgKiAvLyA9PiByZXR1cm5zICdwZWJibGVzJyBhc3N1bWluZyBgXy5maW5kS2V5YCByZXR1cm5zICdiYXJuZXknXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAnZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAncGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kTGFzdEtleShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIGJhc2VGaW5kS2V5KG9iamVjdCwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgYmFzZUZvck93blJpZ2h0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYW5cbiAgICAgKiBvYmplY3QgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdFxuICAgICAqIGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9ySW5SaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5mb3JJbihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2EnLCAnYicsIHRoZW4gJ2MnIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvckluKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbFxuICAgICAgICA/IG9iamVjdFxuICAgICAgICA6IGJhc2VGb3Iob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JJbmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzIG9mXG4gICAgICogYG9iamVjdGAgaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9ySW5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9ySW5SaWdodChuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2MnLCAnYicsIHRoZW4gJ2EnIGFzc3VtaW5nIGBfLmZvckluYCBsb2dzICdhJywgJ2InLCB0aGVuICdjJy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JJblJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbFxuICAgICAgICA/IG9iamVjdFxuICAgICAgICA6IGJhc2VGb3JSaWdodChvYmplY3QsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSwga2V5c0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdCBhbmRcbiAgICAgKiBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uXG4gICAgICogZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvck93blJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvck93bihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2EnIHRoZW4gJ2InIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3JPd24ob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9yT3duYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIHByb3BlcnRpZXMgb2ZcbiAgICAgKiBgb2JqZWN0YCBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5mb3JPd25cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9yT3duUmlnaHQobmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdiJyB0aGVuICdhJyBhc3N1bWluZyBgXy5mb3JPd25gIGxvZ3MgJ2EnIHRoZW4gJ2InLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvck93blJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvck93blJpZ2h0KG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZyb20gb3duIGVudW1lcmFibGUgcHJvcGVydGllc1xuICAgICAqIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICogQHNlZSBfLmZ1bmN0aW9uc0luXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IF8uY29uc3RhbnQoJ2EnKTtcbiAgICAgKiAgIHRoaXMuYiA9IF8uY29uc3RhbnQoJ2InKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSBfLmNvbnN0YW50KCdjJyk7XG4gICAgICpcbiAgICAgKiBfLmZ1bmN0aW9ucyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZnVuY3Rpb25zKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlRnVuY3Rpb25zKG9iamVjdCwga2V5cyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZyb20gb3duIGFuZCBpbmhlcml0ZWRcbiAgICAgKiBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lcy5cbiAgICAgKiBAc2VlIF8uZnVuY3Rpb25zXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IF8uY29uc3RhbnQoJ2EnKTtcbiAgICAgKiAgIHRoaXMuYiA9IF8uY29uc3RhbnQoJ2InKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSBfLmNvbnN0YW50KCdjJyk7XG4gICAgICpcbiAgICAgKiBfLmZ1bmN0aW9uc0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZ1bmN0aW9uc0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlRnVuY3Rpb25zKG9iamVjdCwga2V5c0luKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzXG4gICAgICogYHVuZGVmaW5lZGAsIHRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpbiBpdHMgcGxhY2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgcmV0dXJuZWQgZm9yIGB1bmRlZmluZWRgIHJlc29sdmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsICdhWzBdLmIuYycpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8uZ2V0KG9iamVjdCwgWydhJywgJzAnLCAnYicsICdjJ10pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8uZ2V0KG9iamVjdCwgJ2EuYi5jJywgJ2RlZmF1bHQnKTtcbiAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXQob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IHsgJ2InOiAyIH0gfTtcbiAgICAgKiB2YXIgb3RoZXIgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gICAgICpcbiAgICAgKiBfLmhhcyhvYmplY3QsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCAnYS5iJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhcyhvdGhlciwgJ2EnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhcyhvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBvciBpbmhlcml0ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2EuYicpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzSW4ob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc0luKG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBiYXNlSGFzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBpbnZlcnRlZCBrZXlzIGFuZCB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICogSWYgYG9iamVjdGAgY29udGFpbnMgZHVwbGljYXRlIHZhbHVlcywgc3Vic2VxdWVudCB2YWx1ZXMgb3ZlcndyaXRlXG4gICAgICogcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnZlcnQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGludmVydGVkIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9O1xuICAgICAqXG4gICAgICogXy5pbnZlcnQob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogJ2MnLCAnMic6ICdiJyB9XG4gICAgICovXG4gICAgdmFyIGludmVydCA9IGNyZWF0ZUludmVydGVyKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiZcbiAgICAgICAgICB0eXBlb2YgdmFsdWUudG9TdHJpbmcgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YWx1ZSA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXN1bHRbdmFsdWVdID0ga2V5O1xuICAgIH0sIGNvbnN0YW50KGlkZW50aXR5KSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludmVydGAgZXhjZXB0IHRoYXQgdGhlIGludmVydGVkIG9iamVjdCBpcyBnZW5lcmF0ZWRcbiAgICAgKiBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmcgZWFjaCBlbGVtZW50IG9mIGBvYmplY3RgIHRocnUgYGl0ZXJhdGVlYC4gVGhlXG4gICAgICogY29ycmVzcG9uZGluZyBpbnZlcnRlZCB2YWx1ZSBvZiBlYWNoIGludmVydGVkIGtleSBpcyBhbiBhcnJheSBvZiBrZXlzXG4gICAgICogcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlIGludmVydGVkIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMS4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnZlcnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlZCBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uaW52ZXJ0Qnkob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gICAgICpcbiAgICAgKiBfLmludmVydEJ5KG9iamVjdCwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAnZ3JvdXAnICsgdmFsdWU7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4geyAnZ3JvdXAxJzogWydhJywgJ2MnXSwgJ2dyb3VwMic6IFsnYiddIH1cbiAgICAgKi9cbiAgICB2YXIgaW52ZXJ0QnkgPSBjcmVhdGVJbnZlcnRlcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmXG4gICAgICAgICAgdHlwZW9mIHZhbHVlLnRvU3RyaW5nICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFsdWUgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCB2YWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0W3ZhbHVlXS5wdXNoKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRbdmFsdWVdID0gW2tleV07XG4gICAgICB9XG4gICAgfSwgZ2V0SXRlcmF0ZWUpO1xuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyB0aGUgbWV0aG9kIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2UuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IFsxLCAyLCAzLCA0XSB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLmludm9rZShvYmplY3QsICdhWzBdLmIuYy5zbGljZScsIDEsIDMpO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqL1xuICAgIHZhciBpbnZva2UgPSBiYXNlUmVzdChiYXNlSW52b2tlKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAgICAgKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gICAgICogZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8ua2V5cyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiBfLmtleXMoJ2hpJyk7XG4gICAgICogLy8gPT4gWycwJywgJzEnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0KSA6IGJhc2VLZXlzKG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5rZXlzSW4obmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCwgdHJ1ZSkgOiBiYXNlS2V5c0luKG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLm1hcFZhbHVlc2A7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IHdpdGggdGhlXG4gICAgICogc2FtZSB2YWx1ZXMgYXMgYG9iamVjdGAgYW5kIGtleXMgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgZWFjaCBvd24gZW51bWVyYWJsZVxuICAgICAqIHN0cmluZyBrZXllZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBvYmplY3QuXG4gICAgICogQHNlZSBfLm1hcFZhbHVlc1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1hcEtleXMoeyAnYSc6IDEsICdiJzogMiB9LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICByZXR1cm4ga2V5ICsgdmFsdWU7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4geyAnYTEnOiAxLCAnYjInOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBLZXlzKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpO1xuXG4gICAgICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGl0ZXJhdGVlKHZhbHVlLCBrZXksIG9iamVjdCksIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleXMgYXMgYG9iamVjdGAgYW5kIHZhbHVlcyBnZW5lcmF0ZWRcbiAgICAgKiBieSBydW5uaW5nIGVhY2ggb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IG9mIGBvYmplY3RgIHRocnVcbiAgICAgKiBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czpcbiAgICAgKiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgb2JqZWN0LlxuICAgICAqIEBzZWUgXy5tYXBLZXlzXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgKiAgICdmcmVkJzogICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICAncGViYmxlcyc6IHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5tYXBWYWx1ZXModXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlOyB9KTtcbiAgICAgKiAvLyA9PiB7ICdmcmVkJzogNDAsICdwZWJibGVzJzogMSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcFZhbHVlcyh1c2VycywgJ2FnZScpO1xuICAgICAqIC8vID0+IHsgJ2ZyZWQnOiA0MCwgJ3BlYmJsZXMnOiAxIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBWYWx1ZXMob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgaXRlcmF0ZWUgPSBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyk7XG5cbiAgICAgIGJhc2VGb3JPd24ob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBpdGVyYXRlZSh2YWx1ZSwga2V5LCBvYmplY3QpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgbWVyZ2VzIG93biBhbmRcbiAgICAgKiBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2Ugb2JqZWN0cyBpbnRvIHRoZVxuICAgICAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIHByb3BlcnRpZXMgdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGFyZVxuICAgICAqIHNraXBwZWQgaWYgYSBkZXN0aW5hdGlvbiB2YWx1ZSBleGlzdHMuIEFycmF5IGFuZCBwbGFpbiBvYmplY3QgcHJvcGVydGllc1xuICAgICAqIGFyZSBtZXJnZWQgcmVjdXJzaXZlbHkuIE90aGVyIG9iamVjdHMgYW5kIHZhbHVlIHR5cGVzIGFyZSBvdmVycmlkZGVuIGJ5XG4gICAgICogYXNzaWdubWVudC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBTdWJzZXF1ZW50XG4gICAgICogc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNS4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge1xuICAgICAqICAgJ2EnOiBbeyAnYic6IDIgfSwgeyAnZCc6IDQgfV1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIG90aGVyID0ge1xuICAgICAqICAgJ2EnOiBbeyAnYyc6IDMgfSwgeyAnZSc6IDUgfV1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5tZXJnZShvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogW3sgJ2InOiAyLCAnYyc6IDMgfSwgeyAnZCc6IDQsICdlJzogNSB9XSB9XG4gICAgICovXG4gICAgdmFyIG1lcmdlID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KSB7XG4gICAgICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWVyZ2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBtZXJnZWQgdmFsdWVzIG9mIHRoZSBkZXN0aW5hdGlvbiBhbmQgc291cmNlXG4gICAgICogcHJvcGVydGllcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIG1lcmdpbmcgaXMgaGFuZGxlZCBieSB0aGVcbiAgICAgKiBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggc2l4IGFyZ3VtZW50czpcbiAgICAgKiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjaykuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiBvYmpWYWx1ZS5jb25jYXQoc3JjVmFsdWUpO1xuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogWzFdLCAnYic6IFsyXSB9O1xuICAgICAqIHZhciBvdGhlciA9IHsgJ2EnOiBbM10sICdiJzogWzRdIH07XG4gICAgICpcbiAgICAgKiBfLm1lcmdlV2l0aChvYmplY3QsIG90aGVyLCBjdXN0b21pemVyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogWzEsIDNdLCAnYic6IFsyLCA0XSB9XG4gICAgICovXG4gICAgdmFyIG1lcmdlV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ucGlja2A7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZVxuICAgICAqIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgcGF0aHMgb2YgYG9iamVjdGAgdGhhdCBhcmUgbm90IG9taXR0ZWQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgY29uc2lkZXJhYmx5IHNsb3dlciB0aGFuIGBfLnBpY2tgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gb21pdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ub21pdChvYmplY3QsIFsnYScsICdjJ10pO1xuICAgICAqIC8vID0+IHsgJ2InOiAnMicgfVxuICAgICAqL1xuICAgIHZhciBvbWl0ID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgaXNEZWVwID0gZmFsc2U7XG4gICAgICBwYXRocyA9IGFycmF5TWFwKHBhdGhzLCBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgICAgICBpc0RlZXAgfHwgKGlzRGVlcCA9IHBhdGgubGVuZ3RoID4gMSk7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgfSk7XG4gICAgICBjb3B5T2JqZWN0KG9iamVjdCwgZ2V0QWxsS2V5c0luKG9iamVjdCksIHJlc3VsdCk7XG4gICAgICBpZiAoaXNEZWVwKSB7XG4gICAgICAgIHJlc3VsdCA9IGJhc2VDbG9uZShyZXN1bHQsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX0ZMQVRfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9tT21pdENsb25lKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGg7XG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgYmFzZVVuc2V0KHJlc3VsdCwgcGF0aHNbbGVuZ3RoXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tCeWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mXG4gICAgICogdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYG9iamVjdGAgdGhhdFxuICAgICAqIGBwcmVkaWNhdGVgIGRvZXNuJ3QgcmV0dXJuIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHR3b1xuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBrZXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLm9taXRCeShvYmplY3QsIF8uaXNOdW1iZXIpO1xuICAgICAqIC8vID0+IHsgJ2InOiAnMicgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9taXRCeShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHBpY2tCeShvYmplY3QsIG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIHBpY2tlZCBgb2JqZWN0YCBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ucGljayhvYmplY3QsIFsnYScsICdjJ10pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIHZhciBwaWNrID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8ge30gOiBiYXNlUGljayhvYmplY3QsIHBhdGhzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBgb2JqZWN0YCBwcm9wZXJ0aWVzIGBwcmVkaWNhdGVgIHJldHVybnNcbiAgICAgKiB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAodmFsdWUsIGtleSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ucGlja0J5KG9iamVjdCwgXy5pc051bWJlcik7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gcGlja0J5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgdmFyIHByb3BzID0gYXJyYXlNYXAoZ2V0QWxsS2V5c0luKG9iamVjdCksIGZ1bmN0aW9uKHByb3ApIHtcbiAgICAgICAgcmV0dXJuIFtwcm9wXTtcbiAgICAgIH0pO1xuICAgICAgcHJlZGljYXRlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlKTtcbiAgICAgIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcHJvcHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgICAgIHJldHVybiBwcmVkaWNhdGUodmFsdWUsIHBhdGhbMF0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5nZXRgIGV4Y2VwdCB0aGF0IGlmIHRoZSByZXNvbHZlZCB2YWx1ZSBpcyBhXG4gICAgICogZnVuY3Rpb24gaXQncyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGl0cyBwYXJlbnQgb2JqZWN0IGFuZFxuICAgICAqIGl0cyByZXN1bHQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byByZXNvbHZlLlxuICAgICAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYzEnOiAzLCAnYzInOiBfLmNvbnN0YW50KDQpIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMScpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMicpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMycsICdkZWZhdWx0Jyk7XG4gICAgICogLy8gPT4gJ2RlZmF1bHQnXG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzMnLCBfLmNvbnN0YW50KCdkZWZhdWx0JykpO1xuICAgICAqIC8vID0+ICdkZWZhdWx0J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlc3VsdChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuXG4gICAgICAvLyBFbnN1cmUgdGhlIGxvb3AgaXMgZW50ZXJlZCB3aGVuIHBhdGggaXMgZW1wdHkuXG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgICBvYmplY3QgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFt0b0tleShwYXRoW2luZGV4XSldO1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGluZGV4ID0gbGVuZ3RoO1xuICAgICAgICAgIHZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IGlzRnVuY3Rpb24odmFsdWUpID8gdmFsdWUuY2FsbChvYmplY3QpIDogdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgYSBwb3J0aW9uIG9mIGBwYXRoYCBkb2Vzbid0IGV4aXN0LFxuICAgICAqIGl0J3MgY3JlYXRlZC4gQXJyYXlzIGFyZSBjcmVhdGVkIGZvciBtaXNzaW5nIGluZGV4IHByb3BlcnRpZXMgd2hpbGUgb2JqZWN0c1xuICAgICAqIGFyZSBjcmVhdGVkIGZvciBhbGwgb3RoZXIgbWlzc2luZyBwcm9wZXJ0aWVzLiBVc2UgYF8uc2V0V2l0aGAgdG8gY3VzdG9taXplXG4gICAgICogYHBhdGhgIGNyZWF0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5zZXQob2JqZWN0LCAnYVswXS5iLmMnLCA0KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QuYVswXS5iLmMpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8uc2V0KG9iamVjdCwgWyd4JywgJzAnLCAneScsICd6J10sIDUpO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC54WzBdLnkueik7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldChvYmplY3QsIHBhdGgsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc2V0YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgb2JqZWN0cyBvZiBgcGF0aGAuICBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYFxuICAgICAqIHBhdGggY3JlYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAobnNWYWx1ZSwga2V5LCBuc09iamVjdCkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge307XG4gICAgICpcbiAgICAgKiBfLnNldFdpdGgob2JqZWN0LCAnWzBdWzFdJywgJ2EnLCBPYmplY3QpO1xuICAgICAqIC8vID0+IHsgJzAnOiB7ICcxJzogJ2EnIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldFdpdGgob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZC12YWx1ZSBwYWlycyBmb3IgYG9iamVjdGBcbiAgICAgKiB3aGljaCBjYW4gYmUgY29uc3VtZWQgYnkgYF8uZnJvbVBhaXJzYC4gSWYgYG9iamVjdGAgaXMgYSBtYXAgb3Igc2V0LCBpdHNcbiAgICAgKiBlbnRyaWVzIGFyZSByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBlbnRyaWVzXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udG9QYWlycyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMV0sIFsnYicsIDJdXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIHZhciB0b1BhaXJzID0gY3JlYXRlVG9QYWlycyhrZXlzKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQtdmFsdWUgcGFpcnNcbiAgICAgKiBmb3IgYG9iamVjdGAgd2hpY2ggY2FuIGJlIGNvbnN1bWVkIGJ5IGBfLmZyb21QYWlyc2AuIElmIGBvYmplY3RgIGlzIGEgbWFwXG4gICAgICogb3Igc2V0LCBpdHMgZW50cmllcyBhcmUgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZW50cmllc0luXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udG9QYWlyc0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxXSwgWydiJywgMl0sIFsnYycsIDNdXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIHZhciB0b1BhaXJzSW4gPSBjcmVhdGVUb1BhaXJzKGtleXNJbik7XG5cbiAgICAvKipcbiAgICAgKiBBbiBhbHRlcm5hdGl2ZSB0byBgXy5yZWR1Y2VgOyB0aGlzIG1ldGhvZCB0cmFuc2Zvcm1zIGBvYmplY3RgIHRvIGEgbmV3XG4gICAgICogYGFjY3VtdWxhdG9yYCBvYmplY3Qgd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGVhY2ggb2YgaXRzIG93blxuICAgICAqIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgdGhydSBgaXRlcmF0ZWVgLCB3aXRoIGVhY2ggaW52b2NhdGlvblxuICAgICAqIHBvdGVudGlhbGx5IG11dGF0aW5nIHRoZSBgYWNjdW11bGF0b3JgIG9iamVjdC4gSWYgYGFjY3VtdWxhdG9yYCBpcyBub3RcbiAgICAgKiBwcm92aWRlZCwgYSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgYFtbUHJvdG90eXBlXV1gIHdpbGwgYmUgdXNlZC4gVGhlXG4gICAgICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOiAoYWNjdW11bGF0b3IsIHZhbHVlLCBrZXksIG9iamVjdCkuXG4gICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBjdXN0b20gYWNjdW11bGF0b3IgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyYW5zZm9ybShbMiwgMywgNF0sIGZ1bmN0aW9uKHJlc3VsdCwgbikge1xuICAgICAqICAgcmVzdWx0LnB1c2gobiAqPSBuKTtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICAgICAqIH0sIFtdKTtcbiAgICAgKiAvLyA9PiBbNCwgOV1cbiAgICAgKlxuICAgICAqIF8udHJhbnNmb3JtKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gICAgICogfSwge30pO1xuICAgICAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0cmFuc2Zvcm0ob2JqZWN0LCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgICAgICBpc0Fyckxpa2UgPSBpc0FyciB8fCBpc0J1ZmZlcihvYmplY3QpIHx8IGlzVHlwZWRBcnJheShvYmplY3QpO1xuXG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCA0KTtcbiAgICAgIGlmIChhY2N1bXVsYXRvciA9PSBudWxsKSB7XG4gICAgICAgIHZhciBDdG9yID0gb2JqZWN0ICYmIG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgICAgICAgaWYgKGlzQXJyTGlrZSkge1xuICAgICAgICAgIGFjY3VtdWxhdG9yID0gaXNBcnIgPyBuZXcgQ3RvciA6IFtdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgICBhY2N1bXVsYXRvciA9IGlzRnVuY3Rpb24oQ3RvcikgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKSA6IHt9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGFjY3VtdWxhdG9yID0ge307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIChpc0Fyckxpa2UgPyBhcnJheUVhY2ggOiBiYXNlRm9yT3duKShvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBvYmplY3QpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgcHJvcGVydHkgYXQgYHBhdGhgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gdW5zZXQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWxldGVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogNyB9IH1dIH07XG4gICAgICogXy51bnNldChvYmplY3QsICdhWzBdLmIuYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzoge30gfV0gfTtcbiAgICAgKlxuICAgICAqIF8udW5zZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogW3sgJ2InOiB7fSB9XSB9O1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuc2V0KG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdHJ1ZSA6IGJhc2VVbnNldChvYmplY3QsIHBhdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc2V0YCBleGNlcHQgdGhhdCBhY2NlcHRzIGB1cGRhdGVyYCB0byBwcm9kdWNlIHRoZVxuICAgICAqIHZhbHVlIHRvIHNldC4gVXNlIGBfLnVwZGF0ZVdpdGhgIHRvIGN1c3RvbWl6ZSBgcGF0aGAgY3JlYXRpb24uIFRoZSBgdXBkYXRlcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC42LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHVwZGF0ZXIgVGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgdGhlIHVwZGF0ZWQgdmFsdWUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8udXBkYXRlKG9iamVjdCwgJ2FbMF0uYi5jJywgZnVuY3Rpb24obikgeyByZXR1cm4gbiAqIG47IH0pO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC5hWzBdLmIuYyk7XG4gICAgICogLy8gPT4gOVxuICAgICAqXG4gICAgICogXy51cGRhdGUob2JqZWN0LCAneFswXS55LnonLCBmdW5jdGlvbihuKSB7IHJldHVybiBuID8gbiArIDEgOiAwOyB9KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QueFswXS55LnopO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGUob2JqZWN0LCBwYXRoLCB1cGRhdGVyKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlVXBkYXRlKG9iamVjdCwgcGF0aCwgY2FzdEZ1bmN0aW9uKHVwZGF0ZXIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVwZGF0ZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG9iamVjdHMgb2YgYHBhdGhgLiAgSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGBcbiAgICAgKiBwYXRoIGNyZWF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKG5zVmFsdWUsIGtleSwgbnNPYmplY3QpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC42LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHVwZGF0ZXIgVGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgdGhlIHVwZGF0ZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7fTtcbiAgICAgKlxuICAgICAqIF8udXBkYXRlV2l0aChvYmplY3QsICdbMF1bMV0nLCBfLmNvbnN0YW50KCdhJyksIE9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMCc6IHsgJzEnOiAnYScgfSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gdXBkYXRlV2l0aChvYmplY3QsIHBhdGgsIHVwZGF0ZXIsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VVcGRhdGUob2JqZWN0LCBwYXRoLCBjYXN0RnVuY3Rpb24odXBkYXRlciksIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnZhbHVlcyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbMSwgMl0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIF8udmFsdWVzKCdoaScpO1xuICAgICAqIC8vID0+IFsnaCcsICdpJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB2YWx1ZXMob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5XG4gICAgICogdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy52YWx1ZXNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB2YWx1ZXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZVZhbHVlcyhvYmplY3QsIGtleXNJbihvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDbGFtcHMgYG51bWJlcmAgd2l0aGluIHRoZSBpbmNsdXNpdmUgYGxvd2VyYCBhbmQgYHVwcGVyYCBib3VuZHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTnVtYmVyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNsYW1wLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbG93ZXJdIFRoZSBsb3dlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdXBwZXIgVGhlIHVwcGVyIGJvdW5kLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNsYW1wZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNsYW1wKC0xMCwgLTUsIDUpO1xuICAgICAqIC8vID0+IC01XG4gICAgICpcbiAgICAgKiBfLmNsYW1wKDEwLCAtNSwgNSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsYW1wKG51bWJlciwgbG93ZXIsIHVwcGVyKSB7XG4gICAgICBpZiAodXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cHBlciA9IGxvd2VyO1xuICAgICAgICBsb3dlciA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmICh1cHBlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVwcGVyID0gdG9OdW1iZXIodXBwZXIpO1xuICAgICAgICB1cHBlciA9IHVwcGVyID09PSB1cHBlciA/IHVwcGVyIDogMDtcbiAgICAgIH1cbiAgICAgIGlmIChsb3dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvd2VyID0gdG9OdW1iZXIobG93ZXIpO1xuICAgICAgICBsb3dlciA9IGxvd2VyID09PSBsb3dlciA/IGxvd2VyIDogMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlQ2xhbXAodG9OdW1iZXIobnVtYmVyKSwgbG93ZXIsIHVwcGVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYG5gIGlzIGJldHdlZW4gYHN0YXJ0YCBhbmQgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC4gSWZcbiAgICAgKiBgZW5kYCBpcyBub3Qgc3BlY2lmaWVkLCBpdCdzIHNldCB0byBgc3RhcnRgIHdpdGggYHN0YXJ0YCB0aGVuIHNldCB0byBgMGAuXG4gICAgICogSWYgYHN0YXJ0YCBpcyBncmVhdGVyIHRoYW4gYGVuZGAgdGhlIHBhcmFtcyBhcmUgc3dhcHBlZCB0byBzdXBwb3J0XG4gICAgICogbmVnYXRpdmUgcmFuZ2VzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMy4wXG4gICAgICogQGNhdGVnb3J5IE51bWJlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG51bWJlcmAgaXMgaW4gdGhlIHJhbmdlLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLnJhbmdlLCBfLnJhbmdlUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDMsIDIsIDQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSg0LCA4KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoNCwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgyLCAyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDEuMiwgMik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDUuMiwgNCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgtMywgLTIsIC02KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5SYW5nZShudW1iZXIsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVuZCA9IHN0YXJ0O1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbmQgPSB0b0Zpbml0ZShlbmQpO1xuICAgICAgfVxuICAgICAgbnVtYmVyID0gdG9OdW1iZXIobnVtYmVyKTtcbiAgICAgIHJldHVybiBiYXNlSW5SYW5nZShudW1iZXIsIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2R1Y2VzIGEgcmFuZG9tIG51bWJlciBiZXR3ZWVuIHRoZSBpbmNsdXNpdmUgYGxvd2VyYCBhbmQgYHVwcGVyYCBib3VuZHMuXG4gICAgICogSWYgb25seSBvbmUgYXJndW1lbnQgaXMgcHJvdmlkZWQgYSBudW1iZXIgYmV0d2VlbiBgMGAgYW5kIHRoZSBnaXZlbiBudW1iZXJcbiAgICAgKiBpcyByZXR1cm5lZC4gSWYgYGZsb2F0aW5nYCBpcyBgdHJ1ZWAsIG9yIGVpdGhlciBgbG93ZXJgIG9yIGB1cHBlcmAgYXJlXG4gICAgICogZmxvYXRzLCBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyByZXR1cm5lZCBpbnN0ZWFkIG9mIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSmF2YVNjcmlwdCBmb2xsb3dzIHRoZSBJRUVFLTc1NCBzdGFuZGFyZCBmb3IgcmVzb2x2aW5nXG4gICAgICogZmxvYXRpbmctcG9pbnQgdmFsdWVzIHdoaWNoIGNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjcuMFxuICAgICAqIEBjYXRlZ29yeSBOdW1iZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyPTBdIFRoZSBsb3dlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3VwcGVyPTFdIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmbG9hdGluZ10gU3BlY2lmeSByZXR1cm5pbmcgYSBmbG9hdGluZy1wb2ludCBudW1iZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcmFuZG9tIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yYW5kb20oMCwgNSk7XG4gICAgICogLy8gPT4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDUpO1xuICAgICAqIC8vID0+IGFsc28gYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDUsIHRydWUpO1xuICAgICAqIC8vID0+IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGJldHdlZW4gMCBhbmQgNVxuICAgICAqXG4gICAgICogXy5yYW5kb20oMS4yLCA1LjIpO1xuICAgICAqIC8vID0+IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGJldHdlZW4gMS4yIGFuZCA1LjJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByYW5kb20obG93ZXIsIHVwcGVyLCBmbG9hdGluZykge1xuICAgICAgaWYgKGZsb2F0aW5nICYmIHR5cGVvZiBmbG9hdGluZyAhPSAnYm9vbGVhbicgJiYgaXNJdGVyYXRlZUNhbGwobG93ZXIsIHVwcGVyLCBmbG9hdGluZykpIHtcbiAgICAgICAgdXBwZXIgPSBmbG9hdGluZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmIChmbG9hdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdXBwZXIgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgZmxvYXRpbmcgPSB1cHBlcjtcbiAgICAgICAgICB1cHBlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgbG93ZXIgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgZmxvYXRpbmcgPSBsb3dlcjtcbiAgICAgICAgICBsb3dlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGxvd2VyID09PSB1bmRlZmluZWQgJiYgdXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb3dlciA9IDA7XG4gICAgICAgIHVwcGVyID0gMTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBsb3dlciA9IHRvRmluaXRlKGxvd2VyKTtcbiAgICAgICAgaWYgKHVwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB1cHBlciA9IGxvd2VyO1xuICAgICAgICAgIGxvd2VyID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cHBlciA9IHRvRmluaXRlKHVwcGVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGxvd2VyID4gdXBwZXIpIHtcbiAgICAgICAgdmFyIHRlbXAgPSBsb3dlcjtcbiAgICAgICAgbG93ZXIgPSB1cHBlcjtcbiAgICAgICAgdXBwZXIgPSB0ZW1wO1xuICAgICAgfVxuICAgICAgaWYgKGZsb2F0aW5nIHx8IGxvd2VyICUgMSB8fCB1cHBlciAlIDEpIHtcbiAgICAgICAgdmFyIHJhbmQgPSBuYXRpdmVSYW5kb20oKTtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZU1pbihsb3dlciArIChyYW5kICogKHVwcGVyIC0gbG93ZXIgKyBmcmVlUGFyc2VGbG9hdCgnMWUtJyArICgocmFuZCArICcnKS5sZW5ndGggLSAxKSkpKSwgdXBwZXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VSYW5kb20obG93ZXIsIHVwcGVyKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBbY2FtZWwgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FtZWxDYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNhbWVsIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jYW1lbENhc2UoJ0ZvbyBCYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vQmFyJ1xuICAgICAqXG4gICAgICogXy5jYW1lbENhc2UoJy0tZm9vLWJhci0tJyk7XG4gICAgICogLy8gPT4gJ2Zvb0JhcidcbiAgICAgKlxuICAgICAqIF8uY2FtZWxDYXNlKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdmb29CYXInXG4gICAgICovXG4gICAgdmFyIGNhbWVsQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgd29yZCA9IHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyBjYXBpdGFsaXplKHdvcmQpIDogd29yZCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGBzdHJpbmdgIHRvIHVwcGVyIGNhc2UgYW5kIHRoZSByZW1haW5pbmdcbiAgICAgKiB0byBsb3dlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNhcGl0YWxpemUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY2FwaXRhbGl6ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNhcGl0YWxpemUoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnRnJlZCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXBpdGFsaXplKHN0cmluZykge1xuICAgICAgcmV0dXJuIHVwcGVyRmlyc3QodG9TdHJpbmcoc3RyaW5nKS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWJ1cnJzIGBzdHJpbmdgIGJ5IGNvbnZlcnRpbmdcbiAgICAgKiBbTGF0aW4tMSBTdXBwbGVtZW50XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRpbi0xX1N1cHBsZW1lbnRfKFVuaWNvZGVfYmxvY2spI0NoYXJhY3Rlcl90YWJsZSlcbiAgICAgKiBhbmQgW0xhdGluIEV4dGVuZGVkLUFdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluX0V4dGVuZGVkLUEpXG4gICAgICogbGV0dGVycyB0byBiYXNpYyBMYXRpbiBsZXR0ZXJzIGFuZCByZW1vdmluZ1xuICAgICAqIFtjb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbWJpbmluZ19EaWFjcml0aWNhbF9NYXJrcykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gZGVidXJyLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGRlYnVycmVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWJ1cnIoJ2TDqWrDoCB2dScpO1xuICAgICAqIC8vID0+ICdkZWphIHZ1J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYnVycihzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gc3RyaW5nICYmIHN0cmluZy5yZXBsYWNlKHJlTGF0aW4sIGRlYnVyckxldHRlcikucmVwbGFjZShyZUNvbWJvTWFyaywgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBlbmRzIHdpdGggdGhlIGdpdmVuIHRhcmdldCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3RhcmdldF0gVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcG9zaXRpb249c3RyaW5nLmxlbmd0aF0gVGhlIHBvc2l0aW9uIHRvIHNlYXJjaCB1cCB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHN0cmluZ2AgZW5kcyB3aXRoIGB0YXJnZXRgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZW5kc1dpdGgoJ2FiYycsICdjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2InLCAyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gZW5kc1dpdGgoc3RyaW5nLCB0YXJnZXQsIHBvc2l0aW9uKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgdGFyZ2V0ID0gYmFzZVRvU3RyaW5nKHRhcmdldCk7XG5cbiAgICAgIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbiA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gbGVuZ3RoXG4gICAgICAgIDogYmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksIDAsIGxlbmd0aCk7XG5cbiAgICAgIHZhciBlbmQgPSBwb3NpdGlvbjtcbiAgICAgIHBvc2l0aW9uIC09IHRhcmdldC5sZW5ndGg7XG4gICAgICByZXR1cm4gcG9zaXRpb24gPj0gMCAmJiBzdHJpbmcuc2xpY2UocG9zaXRpb24sIGVuZCkgPT0gdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBjaGFyYWN0ZXJzIFwiJlwiLCBcIjxcIiwgXCI+XCIsICdcIicsIGFuZCBcIidcIiBpbiBgc3RyaW5nYCB0byB0aGVpclxuICAgICAqIGNvcnJlc3BvbmRpbmcgSFRNTCBlbnRpdGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBObyBvdGhlciBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkLiBUbyBlc2NhcGUgYWRkaXRpb25hbFxuICAgICAqIGNoYXJhY3RlcnMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICAgICAqXG4gICAgICogVGhvdWdoIHRoZSBcIj5cIiBjaGFyYWN0ZXIgaXMgZXNjYXBlZCBmb3Igc3ltbWV0cnksIGNoYXJhY3RlcnMgbGlrZVxuICAgICAqIFwiPlwiIGFuZCBcIi9cIiBkb24ndCBuZWVkIGVzY2FwaW5nIGluIEhUTUwgYW5kIGhhdmUgbm8gc3BlY2lhbCBtZWFuaW5nXG4gICAgICogdW5sZXNzIHRoZXkncmUgcGFydCBvZiBhIHRhZyBvciB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUuIFNlZVxuICAgICAqIFtNYXRoaWFzIEJ5bmVucydzIGFydGljbGVdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9hbWJpZ3VvdXMtYW1wZXJzYW5kcylcbiAgICAgKiAodW5kZXIgXCJzZW1pLXJlbGF0ZWQgZnVuIGZhY3RcIikgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIFdoZW4gd29ya2luZyB3aXRoIEhUTUwgeW91IHNob3VsZCBhbHdheXNcbiAgICAgKiBbcXVvdGUgYXR0cmlidXRlIHZhbHVlc10oaHR0cDovL3dvbmtvLmNvbS9wb3N0L2h0bWwtZXNjYXBpbmcpIHRvIHJlZHVjZVxuICAgICAqIFhTUyB2ZWN0b3JzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5lc2NhcGUoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gJ2ZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlc2NhcGUoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNVbmVzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZVVuZXNjYXBlZEh0bWwsIGVzY2FwZUh0bWxDaGFyKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc2NhcGVzIHRoZSBgUmVnRXhwYCBzcGVjaWFsIGNoYXJhY3RlcnMgXCJeXCIsIFwiJFwiLCBcIlxcXCIsIFwiLlwiLCBcIipcIiwgXCIrXCIsXG4gICAgICogXCI/XCIsIFwiKFwiLCBcIilcIiwgXCJbXCIsIFwiXVwiLCBcIntcIiwgXCJ9XCIsIGFuZCBcInxcIiBpbiBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXNjYXBlUmVnRXhwKCdbbG9kYXNoXShodHRwczovL2xvZGFzaC5jb20vKScpO1xuICAgICAqIC8vID0+ICdcXFtsb2Rhc2hcXF1cXChodHRwczovL2xvZGFzaFxcLmNvbS9cXCknXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHJldHVybiAoc3RyaW5nICYmIHJlSGFzUmVnRXhwQ2hhci50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBba2ViYWIgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV0dGVyX2Nhc2UjU3BlY2lhbF9jYXNlX3N0eWxlcykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBrZWJhYiBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ua2ViYWJDYXNlKCdGb28gQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vLWJhcidcbiAgICAgKi9cbiAgICB2YXIga2ViYWJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJy0nIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIHNwYWNlIHNlcGFyYXRlZCB3b3JkcywgdG8gbG93ZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGxvd2VyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sb3dlckNhc2UoJy0tRm9vLUJhci0tJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vIGJhcidcbiAgICAgKi9cbiAgICB2YXIgbG93ZXJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byBsb3dlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sb3dlckZpcnN0KCdGcmVkJyk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiBfLmxvd2VyRmlyc3QoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnZlJFRCdcbiAgICAgKi9cbiAgICB2YXIgbG93ZXJGaXJzdCA9IGNyZWF0ZUNhc2VGaXJzdCgndG9Mb3dlckNhc2UnKTtcblxuICAgIC8qKlxuICAgICAqIFBhZHMgYHN0cmluZ2Agb24gdGhlIGxlZnQgYW5kIHJpZ2h0IHNpZGVzIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLlxuICAgICAqIFBhZGRpbmcgY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgY2FuJ3QgYmUgZXZlbmx5IGRpdmlkZWQgYnkgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWQoJ2FiYycsIDgpO1xuICAgICAqIC8vID0+ICcgIGFiYyAgICdcbiAgICAgKlxuICAgICAqIF8ucGFkKCdhYmMnLCA4LCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnXy1hYmNfLV8nXG4gICAgICpcbiAgICAgKiBfLnBhZCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgaWYgKCFsZW5ndGggfHwgc3RyTGVuZ3RoID49IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIG1pZCA9IChsZW5ndGggLSBzdHJMZW5ndGgpIC8gMjtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGNyZWF0ZVBhZGRpbmcobmF0aXZlRmxvb3IobWlkKSwgY2hhcnMpICtcbiAgICAgICAgc3RyaW5nICtcbiAgICAgICAgY3JlYXRlUGFkZGluZyhuYXRpdmVDZWlsKG1pZCksIGNoYXJzKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSByaWdodCBzaWRlIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLiBQYWRkaW5nXG4gICAgICogY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgZXhjZWVkIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHBhZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD0wXSBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFkRW5kKCdhYmMnLCA2KTtcbiAgICAgKiAvLyA9PiAnYWJjICAgJ1xuICAgICAqXG4gICAgICogXy5wYWRFbmQoJ2FiYycsIDYsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmNfLV8nXG4gICAgICpcbiAgICAgKiBfLnBhZEVuZCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWRFbmQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgcmV0dXJuIChsZW5ndGggJiYgc3RyTGVuZ3RoIDwgbGVuZ3RoKVxuICAgICAgICA/IChzdHJpbmcgKyBjcmVhdGVQYWRkaW5nKGxlbmd0aCAtIHN0ckxlbmd0aCwgY2hhcnMpKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSBsZWZ0IHNpZGUgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuIFBhZGRpbmdcbiAgICAgKiBjaGFyYWN0ZXJzIGFyZSB0cnVuY2F0ZWQgaWYgdGhleSBleGNlZWQgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWRTdGFydCgnYWJjJywgNik7XG4gICAgICogLy8gPT4gJyAgIGFiYydcbiAgICAgKlxuICAgICAqIF8ucGFkU3RhcnQoJ2FiYycsIDYsICdfLScpO1xuICAgICAqIC8vID0+ICdfLV9hYmMnXG4gICAgICpcbiAgICAgKiBfLnBhZFN0YXJ0KCdhYmMnLCAzKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhZFN0YXJ0KHN0cmluZywgbGVuZ3RoLCBjaGFycykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGxlbmd0aCA9IHRvSW50ZWdlcihsZW5ndGgpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gbGVuZ3RoID8gc3RyaW5nU2l6ZShzdHJpbmcpIDogMDtcbiAgICAgIHJldHVybiAobGVuZ3RoICYmIHN0ckxlbmd0aCA8IGxlbmd0aClcbiAgICAgICAgPyAoY3JlYXRlUGFkZGluZyhsZW5ndGggLSBzdHJMZW5ndGgsIGNoYXJzKSArIHN0cmluZylcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYW4gaW50ZWdlciBvZiB0aGUgc3BlY2lmaWVkIHJhZGl4LiBJZiBgcmFkaXhgIGlzXG4gICAgICogYHVuZGVmaW5lZGAgb3IgYDBgLCBhIGByYWRpeGAgb2YgYDEwYCBpcyB1c2VkIHVubGVzcyBgdmFsdWVgIGlzIGFcbiAgICAgKiBoZXhhZGVjaW1hbCwgaW4gd2hpY2ggY2FzZSBhIGByYWRpeGAgb2YgYDE2YCBpcyB1c2VkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGFsaWducyB3aXRoIHRoZVxuICAgICAqIFtFUzUgaW1wbGVtZW50YXRpb25dKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjEuMi4yKSBvZiBgcGFyc2VJbnRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMS4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcmFkaXg9MTBdIFRoZSByYWRpeCB0byBpbnRlcnByZXQgYHZhbHVlYCBieS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhcnNlSW50KCcwOCcpO1xuICAgICAqIC8vID0+IDhcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnNicsICcwOCcsICcxMCddLCBfLnBhcnNlSW50KTtcbiAgICAgKiAvLyA9PiBbNiwgOCwgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFyc2VJbnQoc3RyaW5nLCByYWRpeCwgZ3VhcmQpIHtcbiAgICAgIGlmIChndWFyZCB8fCByYWRpeCA9PSBudWxsKSB7XG4gICAgICAgIHJhZGl4ID0gMDtcbiAgICAgIH0gZWxzZSBpZiAocmFkaXgpIHtcbiAgICAgICAgcmFkaXggPSArcmFkaXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmF0aXZlUGFyc2VJbnQodG9TdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJyksIHJhZGl4IHx8IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGVhdHMgdGhlIGdpdmVuIHN0cmluZyBgbmAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcmVwZWF0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgc3RyaW5nLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmVwZWF0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnKicsIDMpO1xuICAgICAqIC8vID0+ICcqKionXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnYWJjJywgMik7XG4gICAgICogLy8gPT4gJ2FiY2FiYydcbiAgICAgKlxuICAgICAqIF8ucmVwZWF0KCdhYmMnLCAwKTtcbiAgICAgKiAvLyA9PiAnJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlcGVhdChzdHJpbmcsIG4sIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBuLCBndWFyZCkgOiBuID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIG4gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlUmVwZWF0KHRvU3RyaW5nKHN0cmluZyksIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIG1hdGNoZXMgZm9yIGBwYXR0ZXJuYCBpbiBgc3RyaW5nYCB3aXRoIGByZXBsYWNlbWVudGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFN0cmluZyNyZXBsYWNlYF0oaHR0cHM6Ly9tZG4uaW8vU3RyaW5nL3JlcGxhY2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVwbGFjZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gcmVwbGFjZW1lbnQgVGhlIG1hdGNoIHJlcGxhY2VtZW50LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIG1vZGlmaWVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZXBsYWNlKCdIaSBGcmVkJywgJ0ZyZWQnLCAnQmFybmV5Jyk7XG4gICAgICogLy8gPT4gJ0hpIEJhcm5leSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXBsYWNlKCkge1xuICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgc3RyaW5nID0gdG9TdHJpbmcoYXJnc1swXSk7XG5cbiAgICAgIHJldHVybiBhcmdzLmxlbmd0aCA8IDMgPyBzdHJpbmcgOiBzdHJpbmcucmVwbGFjZShhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0b1xuICAgICAqIFtzbmFrZSBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TbmFrZV9jYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNuYWtlIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zbmFrZUNhc2UoJ0ZvbyBCYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCctLUZPTy1CQVItLScpO1xuICAgICAqIC8vID0+ICdmb29fYmFyJ1xuICAgICAqL1xuICAgIHZhciBzbmFrZUNhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnXycgOiAnJykgKyB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBTcGxpdHMgYHN0cmluZ2AgYnkgYHNlcGFyYXRvcmAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFN0cmluZyNzcGxpdGBdKGh0dHBzOi8vbWRuLmlvL1N0cmluZy9zcGxpdCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gc3BsaXQuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBzZXBhcmF0b3IgVGhlIHNlcGFyYXRvciBwYXR0ZXJuIHRvIHNwbGl0IGJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGltaXRdIFRoZSBsZW5ndGggdG8gdHJ1bmNhdGUgcmVzdWx0cyB0by5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHN0cmluZyBzZWdtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zcGxpdCgnYS1iLWMnLCAnLScsIDIpO1xuICAgICAqIC8vID0+IFsnYScsICdiJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzcGxpdChzdHJpbmcsIHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIGlmIChsaW1pdCAmJiB0eXBlb2YgbGltaXQgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbWl0KSkge1xuICAgICAgICBzZXBhcmF0b3IgPSBsaW1pdCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGxpbWl0ID0gbGltaXQgPT09IHVuZGVmaW5lZCA/IE1BWF9BUlJBWV9MRU5HVEggOiBsaW1pdCA+Pj4gMDtcbiAgICAgIGlmICghbGltaXQpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKFxuICAgICAgICAgICAgdHlwZW9mIHNlcGFyYXRvciA9PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgKHNlcGFyYXRvciAhPSBudWxsICYmICFpc1JlZ0V4cChzZXBhcmF0b3IpKVxuICAgICAgICAgICkpIHtcbiAgICAgICAgc2VwYXJhdG9yID0gYmFzZVRvU3RyaW5nKHNlcGFyYXRvcik7XG4gICAgICAgIGlmICghc2VwYXJhdG9yICYmIGhhc1VuaWNvZGUoc3RyaW5nKSkge1xuICAgICAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShzdHJpbmcpLCAwLCBsaW1pdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmcuc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBbc3RhcnQgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV0dGVyX2Nhc2UjU3R5bGlzdGljX29yX3NwZWNpYWxpc2VkX3VzYWdlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0YXJ0IGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdGFydENhc2UoJy0tZm9vLWJhci0tJyk7XG4gICAgICogLy8gPT4gJ0ZvbyBCYXInXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZvbyBCYXInXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnRk9PIEJBUidcbiAgICAgKi9cbiAgICB2YXIgc3RhcnRDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgdXBwZXJGaXJzdCh3b3JkKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gdGFyZ2V0IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdGFyZ2V0XSBUaGUgc3RyaW5nIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3NpdGlvbj0wXSBUaGUgcG9zaXRpb24gdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBzdHJpbmdgIHN0YXJ0cyB3aXRoIGB0YXJnZXRgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0c1dpdGgoJ2FiYycsICdiJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2InLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhcnRzV2l0aChzdHJpbmcsIHRhcmdldCwgcG9zaXRpb24pIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uID09IG51bGxcbiAgICAgICAgPyAwXG4gICAgICAgIDogYmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksIDAsIHN0cmluZy5sZW5ndGgpO1xuXG4gICAgICB0YXJnZXQgPSBiYXNlVG9TdHJpbmcodGFyZ2V0KTtcbiAgICAgIHJldHVybiBzdHJpbmcuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgdGFyZ2V0Lmxlbmd0aCkgPT0gdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbiB0aGF0IGNhbiBpbnRlcnBvbGF0ZSBkYXRhIHByb3BlcnRpZXNcbiAgICAgKiBpbiBcImludGVycG9sYXRlXCIgZGVsaW1pdGVycywgSFRNTC1lc2NhcGUgaW50ZXJwb2xhdGVkIGRhdGEgcHJvcGVydGllcyBpblxuICAgICAqIFwiZXNjYXBlXCIgZGVsaW1pdGVycywgYW5kIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy4gRGF0YVxuICAgICAqIHByb3BlcnRpZXMgbWF5IGJlIGFjY2Vzc2VkIGFzIGZyZWUgdmFyaWFibGVzIGluIHRoZSB0ZW1wbGF0ZS4gSWYgYSBzZXR0aW5nXG4gICAgICogb2JqZWN0IGlzIGdpdmVuLCBpdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYF8udGVtcGxhdGVTZXR0aW5nc2AgdmFsdWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEluIHRoZSBkZXZlbG9wbWVudCBidWlsZCBgXy50ZW1wbGF0ZWAgdXRpbGl6ZXNcbiAgICAgKiBbc291cmNlVVJMc10oaHR0cDovL3d3dy5odG1sNXJvY2tzLmNvbS9lbi90dXRvcmlhbHMvZGV2ZWxvcGVydG9vbHMvc291cmNlbWFwcy8jdG9jLXNvdXJjZXVybClcbiAgICAgKiBmb3IgZWFzaWVyIGRlYnVnZ2luZy5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHByZWNvbXBpbGluZyB0ZW1wbGF0ZXMgc2VlXG4gICAgICogW2xvZGFzaCdzIGN1c3RvbSBidWlsZHMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9sb2Rhc2guY29tL2N1c3RvbS1idWlsZHMpLlxuICAgICAqXG4gICAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQ2hyb21lIGV4dGVuc2lvbiBzYW5kYm94ZXMgc2VlXG4gICAgICogW0Nocm9tZSdzIGV4dGVuc2lvbnMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3NhbmRib3hpbmdFdmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHRlbXBsYXRlIHN0cmluZy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuZXNjYXBlPV8udGVtcGxhdGVTZXR0aW5ncy5lc2NhcGVdXG4gICAgICogIFRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5ldmFsdWF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuZXZhbHVhdGVdXG4gICAgICogIFRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy5pbXBvcnRzPV8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXVxuICAgICAqICBBbiBvYmplY3QgdG8gaW1wb3J0IGludG8gdGhlIHRlbXBsYXRlIGFzIGZyZWUgdmFyaWFibGVzLlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5pbnRlcnBvbGF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuaW50ZXJwb2xhdGVdXG4gICAgICogIFRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zb3VyY2VVUkw9J2xvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbbl0nXVxuICAgICAqICBUaGUgc291cmNlVVJMIG9mIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudmFyaWFibGU9J29iaiddXG4gICAgICogIFRoZSBkYXRhIG9iamVjdCB2YXJpYWJsZSBuYW1lLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyIHRvIGNyZWF0ZSBhIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIDwlPSB1c2VyICU+IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnZnJlZCcgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyIHRvIGVzY2FwZSBkYXRhIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8Yj48JS0gdmFsdWUgJT48L2I+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndmFsdWUnOiAnPHNjcmlwdD4nIH0pO1xuICAgICAqIC8vID0+ICc8Yj4mbHQ7c2NyaXB0Jmd0OzwvYj4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXIgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGFuZCBnZW5lcmF0ZSBIVE1MLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIF8uZm9yRWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcnMnOiBbJ2ZyZWQnLCAnYmFybmV5J10gfSk7XG4gICAgICogLy8gPT4gJzxsaT5mcmVkPC9saT48bGk+YmFybmV5PC9saT4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGludGVybmFsIGBwcmludGAgZnVuY3Rpb24gaW4gXCJldmFsdWF0ZVwiIGRlbGltaXRlcnMuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCUgcHJpbnQoXCJoZWxsbyBcIiArIHVzZXIpOyAlPiEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ2Jhcm5leScgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGJhcm5leSEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIEVTIHRlbXBsYXRlIGxpdGVyYWwgZGVsaW1pdGVyIGFzIGFuIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogLy8gRGlzYWJsZSBzdXBwb3J0IGJ5IHJlcGxhY2luZyB0aGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyAkeyB1c2VyIH0hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdwZWJibGVzJyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gcGViYmxlcyEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgYmFja3NsYXNoZXMgdG8gdHJlYXQgZGVsaW1pdGVycyBhcyBwbGFpbiB0ZXh0LlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlPSBcIlxcXFw8JS0gdmFsdWUgJVxcXFw+XCIgJT4nKTtcbiAgICAgKiBjb21waWxlZCh7ICd2YWx1ZSc6ICdpZ25vcmVkJyB9KTtcbiAgICAgKiAvLyA9PiAnPCUtIHZhbHVlICU+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgaW1wb3J0c2Agb3B0aW9uIHRvIGltcG9ydCBgalF1ZXJ5YCBhcyBganFgLlxuICAgICAqIHZhciB0ZXh0ID0gJzwlIGpxLmVhY2godXNlcnMsIGZ1bmN0aW9uKHVzZXIpIHsgJT48bGk+PCUtIHVzZXIgJT48L2xpPjwlIH0pOyAlPic7XG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSh0ZXh0LCB7ICdpbXBvcnRzJzogeyAnanEnOiBqUXVlcnkgfSB9KTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAgICAgKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYHNvdXJjZVVSTGAgb3B0aW9uIHRvIHNwZWNpZnkgYSBjdXN0b20gc291cmNlVVJMIGZvciB0aGUgdGVtcGxhdGUuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJywgeyAnc291cmNlVVJMJzogJy9iYXNpYy9ncmVldGluZy5qc3QnIH0pO1xuICAgICAqIGNvbXBpbGVkKGRhdGEpO1xuICAgICAqIC8vID0+IEZpbmQgdGhlIHNvdXJjZSBvZiBcImdyZWV0aW5nLmpzdFwiIHVuZGVyIHRoZSBTb3VyY2VzIHRhYiBvciBSZXNvdXJjZXMgcGFuZWwgb2YgdGhlIHdlYiBpbnNwZWN0b3IuXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGB2YXJpYWJsZWAgb3B0aW9uIHRvIGVuc3VyZSBhIHdpdGgtc3RhdGVtZW50IGlzbid0IHVzZWQgaW4gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hpIDwlPSBkYXRhLnVzZXIgJT4hJywgeyAndmFyaWFibGUnOiAnZGF0YScgfSk7XG4gICAgICogY29tcGlsZWQuc291cmNlO1xuICAgICAqIC8vID0+IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgKiAvLyAgIHZhciBfX3QsIF9fcCA9ICcnO1xuICAgICAqIC8vICAgX19wICs9ICdoaSAnICsgKChfX3QgPSAoIGRhdGEudXNlciApKSA9PSBudWxsID8gJycgOiBfX3QpICsgJyEnO1xuICAgICAqIC8vICAgcmV0dXJuIF9fcDtcbiAgICAgKiAvLyB9XG4gICAgICpcbiAgICAgKiAvLyBVc2UgY3VzdG9tIHRlbXBsYXRlIGRlbGltaXRlcnMuXG4gICAgICogXy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlID0gL3t7KFtcXHNcXFNdKz8pfX0vZztcbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyB7eyB1c2VyIH19IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnbXVzdGFjaGUnIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBtdXN0YWNoZSEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGBzb3VyY2VgIHByb3BlcnR5IHRvIGlubGluZSBjb21waWxlZCB0ZW1wbGF0ZXMgZm9yIG1lYW5pbmdmdWxcbiAgICAgKiAvLyBsaW5lIG51bWJlcnMgaW4gZXJyb3IgbWVzc2FnZXMgYW5kIHN0YWNrIHRyYWNlcy5cbiAgICAgKiBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnanN0LmpzJyksICdcXFxuICAgICAqICAgdmFyIEpTVCA9IHtcXFxuICAgICAqICAgICBcIm1haW5cIjogJyArIF8udGVtcGxhdGUobWFpblRleHQpLnNvdXJjZSArICdcXFxuICAgICAqICAgfTtcXFxuICAgICAqICcpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRlbXBsYXRlKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpIHtcbiAgICAgIC8vIEJhc2VkIG9uIEpvaG4gUmVzaWcncyBgdG1wbGAgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIChodHRwOi8vZWpvaG4ub3JnL2Jsb2cvamF2YXNjcmlwdC1taWNyby10ZW1wbGF0aW5nLylcbiAgICAgIC8vIGFuZCBMYXVyYSBEb2t0b3JvdmEncyBkb1QuanMgKGh0dHBzOi8vZ2l0aHViLmNvbS9vbGFkby9kb1QpLlxuICAgICAgdmFyIHNldHRpbmdzID0gbG9kYXNoLnRlbXBsYXRlU2V0dGluZ3M7XG5cbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzdHJpbmcsIG9wdGlvbnMsIGd1YXJkKSkge1xuICAgICAgICBvcHRpb25zID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIG9wdGlvbnMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMsIHNldHRpbmdzLCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKTtcblxuICAgICAgdmFyIGltcG9ydHMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMuaW1wb3J0cywgc2V0dGluZ3MuaW1wb3J0cywgY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiksXG4gICAgICAgICAgaW1wb3J0c0tleXMgPSBrZXlzKGltcG9ydHMpLFxuICAgICAgICAgIGltcG9ydHNWYWx1ZXMgPSBiYXNlVmFsdWVzKGltcG9ydHMsIGltcG9ydHNLZXlzKTtcblxuICAgICAgdmFyIGlzRXNjYXBpbmcsXG4gICAgICAgICAgaXNFdmFsdWF0aW5nLFxuICAgICAgICAgIGluZGV4ID0gMCxcbiAgICAgICAgICBpbnRlcnBvbGF0ZSA9IG9wdGlvbnMuaW50ZXJwb2xhdGUgfHwgcmVOb01hdGNoLFxuICAgICAgICAgIHNvdXJjZSA9IFwiX19wICs9ICdcIjtcblxuICAgICAgLy8gQ29tcGlsZSB0aGUgcmVnZXhwIHRvIG1hdGNoIGVhY2ggZGVsaW1pdGVyLlxuICAgICAgdmFyIHJlRGVsaW1pdGVycyA9IFJlZ0V4cChcbiAgICAgICAgKG9wdGlvbnMuZXNjYXBlIHx8IHJlTm9NYXRjaCkuc291cmNlICsgJ3wnICtcbiAgICAgICAgaW50ZXJwb2xhdGUuc291cmNlICsgJ3wnICtcbiAgICAgICAgKGludGVycG9sYXRlID09PSByZUludGVycG9sYXRlID8gcmVFc1RlbXBsYXRlIDogcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgICAgICAob3B0aW9ucy5ldmFsdWF0ZSB8fCByZU5vTWF0Y2gpLnNvdXJjZSArICd8JCdcbiAgICAgICwgJ2cnKTtcblxuICAgICAgLy8gVXNlIGEgc291cmNlVVJMIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICAgICAgLy8gVGhlIHNvdXJjZVVSTCBnZXRzIGluamVjdGVkIGludG8gdGhlIHNvdXJjZSB0aGF0J3MgZXZhbC1lZCwgc28gYmUgY2FyZWZ1bFxuICAgICAgLy8gdG8gbm9ybWFsaXplIGFsbCBraW5kcyBvZiB3aGl0ZXNwYWNlLCBzbyBlLmcuIG5ld2xpbmVzIChhbmQgdW5pY29kZSB2ZXJzaW9ucyBvZiBpdCkgY2FuJ3Qgc25lYWsgaW5cbiAgICAgIC8vIGFuZCBlc2NhcGUgdGhlIGNvbW1lbnQsIHRodXMgaW5qZWN0aW5nIGNvZGUgdGhhdCBnZXRzIGV2YWxlZC5cbiAgICAgIHZhciBzb3VyY2VVUkwgPSAnLy8jIHNvdXJjZVVSTD0nICtcbiAgICAgICAgKGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3NvdXJjZVVSTCcpXG4gICAgICAgICAgPyAob3B0aW9ucy5zb3VyY2VVUkwgKyAnJykucmVwbGFjZSgvXFxzL2csICcgJylcbiAgICAgICAgICA6ICgnbG9kYXNoLnRlbXBsYXRlU291cmNlc1snICsgKCsrdGVtcGxhdGVDb3VudGVyKSArICddJylcbiAgICAgICAgKSArICdcXG4nO1xuXG4gICAgICBzdHJpbmcucmVwbGFjZShyZURlbGltaXRlcnMsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGVWYWx1ZSwgaW50ZXJwb2xhdGVWYWx1ZSwgZXNUZW1wbGF0ZVZhbHVlLCBldmFsdWF0ZVZhbHVlLCBvZmZzZXQpIHtcbiAgICAgICAgaW50ZXJwb2xhdGVWYWx1ZSB8fCAoaW50ZXJwb2xhdGVWYWx1ZSA9IGVzVGVtcGxhdGVWYWx1ZSk7XG5cbiAgICAgICAgLy8gRXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBjYW4ndCBiZSBpbmNsdWRlZCBpbiBzdHJpbmcgbGl0ZXJhbHMuXG4gICAgICAgIHNvdXJjZSArPSBzdHJpbmcuc2xpY2UoaW5kZXgsIG9mZnNldCkucmVwbGFjZShyZVVuZXNjYXBlZFN0cmluZywgZXNjYXBlU3RyaW5nQ2hhcik7XG5cbiAgICAgICAgLy8gUmVwbGFjZSBkZWxpbWl0ZXJzIHdpdGggc25pcHBldHMuXG4gICAgICAgIGlmIChlc2NhcGVWYWx1ZSkge1xuICAgICAgICAgIGlzRXNjYXBpbmcgPSB0cnVlO1xuICAgICAgICAgIHNvdXJjZSArPSBcIicgK1xcbl9fZShcIiArIGVzY2FwZVZhbHVlICsgXCIpICtcXG4nXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2YWx1YXRlVmFsdWUpIHtcbiAgICAgICAgICBpc0V2YWx1YXRpbmcgPSB0cnVlO1xuICAgICAgICAgIHNvdXJjZSArPSBcIic7XFxuXCIgKyBldmFsdWF0ZVZhbHVlICsgXCI7XFxuX19wICs9ICdcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW50ZXJwb2xhdGVWYWx1ZSkge1xuICAgICAgICAgIHNvdXJjZSArPSBcIicgK1xcbigoX190ID0gKFwiICsgaW50ZXJwb2xhdGVWYWx1ZSArIFwiKSkgPT0gbnVsbCA/ICcnIDogX190KSArXFxuJ1wiO1xuICAgICAgICB9XG4gICAgICAgIGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoO1xuXG4gICAgICAgIC8vIFRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgcHJvZHVjdHMgbmVlZHMgYG1hdGNoYCByZXR1cm5lZCBpblxuICAgICAgICAvLyBvcmRlciB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IGBvZmZzZXRgIHZhbHVlLlxuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9KTtcblxuICAgICAgc291cmNlICs9IFwiJztcXG5cIjtcblxuICAgICAgLy8gSWYgYHZhcmlhYmxlYCBpcyBub3Qgc3BlY2lmaWVkIHdyYXAgYSB3aXRoLXN0YXRlbWVudCBhcm91bmQgdGhlIGdlbmVyYXRlZFxuICAgICAgLy8gY29kZSB0byBhZGQgdGhlIGRhdGEgb2JqZWN0IHRvIHRoZSB0b3Agb2YgdGhlIHNjb3BlIGNoYWluLlxuICAgICAgdmFyIHZhcmlhYmxlID0gaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLCAndmFyaWFibGUnKSAmJiBvcHRpb25zLnZhcmlhYmxlO1xuICAgICAgaWYgKCF2YXJpYWJsZSkge1xuICAgICAgICBzb3VyY2UgPSAnd2l0aCAob2JqKSB7XFxuJyArIHNvdXJjZSArICdcXG59XFxuJztcbiAgICAgIH1cbiAgICAgIC8vIENsZWFudXAgY29kZSBieSBzdHJpcHBpbmcgZW1wdHkgc3RyaW5ncy5cbiAgICAgIHNvdXJjZSA9IChpc0V2YWx1YXRpbmcgPyBzb3VyY2UucmVwbGFjZShyZUVtcHR5U3RyaW5nTGVhZGluZywgJycpIDogc291cmNlKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nTWlkZGxlLCAnJDEnKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nVHJhaWxpbmcsICckMTsnKTtcblxuICAgICAgLy8gRnJhbWUgY29kZSBhcyB0aGUgZnVuY3Rpb24gYm9keS5cbiAgICAgIHNvdXJjZSA9ICdmdW5jdGlvbignICsgKHZhcmlhYmxlIHx8ICdvYmonKSArICcpIHtcXG4nICtcbiAgICAgICAgKHZhcmlhYmxlXG4gICAgICAgICAgPyAnJ1xuICAgICAgICAgIDogJ29iaiB8fCAob2JqID0ge30pO1xcbidcbiAgICAgICAgKSArXG4gICAgICAgIFwidmFyIF9fdCwgX19wID0gJydcIiArXG4gICAgICAgIChpc0VzY2FwaW5nXG4gICAgICAgICAgID8gJywgX19lID0gXy5lc2NhcGUnXG4gICAgICAgICAgIDogJydcbiAgICAgICAgKSArXG4gICAgICAgIChpc0V2YWx1YXRpbmdcbiAgICAgICAgICA/ICcsIF9faiA9IEFycmF5LnByb3RvdHlwZS5qb2luO1xcbicgK1xuICAgICAgICAgICAgXCJmdW5jdGlvbiBwcmludCgpIHsgX19wICs9IF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH1cXG5cIlxuICAgICAgICAgIDogJztcXG4nXG4gICAgICAgICkgK1xuICAgICAgICBzb3VyY2UgK1xuICAgICAgICAncmV0dXJuIF9fcFxcbn0nO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYXR0ZW1wdChmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uKGltcG9ydHNLZXlzLCBzb3VyY2VVUkwgKyAncmV0dXJuICcgKyBzb3VyY2UpXG4gICAgICAgICAgLmFwcGx5KHVuZGVmaW5lZCwgaW1wb3J0c1ZhbHVlcyk7XG4gICAgICB9KTtcblxuICAgICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24ncyBzb3VyY2UgYnkgaXRzIGB0b1N0cmluZ2AgbWV0aG9kIG9yXG4gICAgICAvLyB0aGUgYHNvdXJjZWAgcHJvcGVydHkgYXMgYSBjb252ZW5pZW5jZSBmb3IgaW5saW5pbmcgY29tcGlsZWQgdGVtcGxhdGVzLlxuICAgICAgcmVzdWx0LnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgIGlmIChpc0Vycm9yKHJlc3VsdCkpIHtcbiAgICAgICAgdGhyb3cgcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gbG93ZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvTG93ZXJDYXNlXShodHRwczovL21kbi5pby90b0xvd2VyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBsb3dlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9Mb3dlcignLS1Gb28tQmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1mb28tYmFyLS0nXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb29iYXInXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ19fZm9vX2Jhcl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTG93ZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gdXBwZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvVXBwZXJDYXNlXShodHRwczovL21kbi5pby90b1VwcGVyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1cHBlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9VcHBlcignLS1mb28tYmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1GT08tQkFSLS0nXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGT09CQVInXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICogLy8gPT4gJ19fRk9PX0JBUl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvVXBwZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW0oJyAgYWJjICAnKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy50cmltKCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy5tYXAoWycgIGZvbyAgJywgJyAgYmFyICAnXSwgXy50cmltKTtcbiAgICAgKiAvLyA9PiBbJ2ZvbycsICdiYXInXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyaW0oc3RyaW5nLCBjaGFycywgZ3VhcmQpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBpZiAoc3RyaW5nICYmIChndWFyZCB8fCBjaGFycyA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXN0cmluZyB8fCAhKGNoYXJzID0gYmFzZVRvU3RyaW5nKGNoYXJzKSkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpLFxuICAgICAgICAgIGNoclN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KGNoYXJzKSxcbiAgICAgICAgICBzdGFydCA9IGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSxcbiAgICAgICAgICBlbmQgPSBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpICsgMTtcblxuICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJTeW1ib2xzLCBzdGFydCwgZW5kKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW1FbmQoJyAgYWJjICAnKTtcbiAgICAgKiAvLyA9PiAnICBhYmMnXG4gICAgICpcbiAgICAgKiBfLnRyaW1FbmQoJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICctXy1hYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbUVuZChzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW1FbmQsICcnKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RyaW5nIHx8ICEoY2hhcnMgPSBiYXNlVG9TdHJpbmcoY2hhcnMpKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyksXG4gICAgICAgICAgZW5kID0gY2hhcnNFbmRJbmRleChzdHJTeW1ib2xzLCBzdHJpbmdUb0FycmF5KGNoYXJzKSkgKyAxO1xuXG4gICAgICByZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDAsIGVuZCkuam9pbignJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBsZWFkaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW1TdGFydCgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICdhYmMgICdcbiAgICAgKlxuICAgICAqIF8udHJpbVN0YXJ0KCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjLV8tJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyaW1TdGFydChzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW1TdGFydCwgJycpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdHJpbmcgfHwgIShjaGFycyA9IGJhc2VUb1N0cmluZyhjaGFycykpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgc3RyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoc3RyaW5nKSxcbiAgICAgICAgICBzdGFydCA9IGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBzdHJpbmdUb0FycmF5KGNoYXJzKSk7XG5cbiAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scywgc3RhcnQpLmpvaW4oJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRydW5jYXRlcyBgc3RyaW5nYCBpZiBpdCdzIGxvbmdlciB0aGFuIHRoZSBnaXZlbiBtYXhpbXVtIHN0cmluZyBsZW5ndGguXG4gICAgICogVGhlIGxhc3QgY2hhcmFjdGVycyBvZiB0aGUgdHJ1bmNhdGVkIHN0cmluZyBhcmUgcmVwbGFjZWQgd2l0aCB0aGUgb21pc3Npb25cbiAgICAgKiBzdHJpbmcgd2hpY2ggZGVmYXVsdHMgdG8gXCIuLi5cIi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cnVuY2F0ZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubGVuZ3RoPTMwXSBUaGUgbWF4aW11bSBzdHJpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vbWlzc2lvbj0nLi4uJ10gVGhlIHN0cmluZyB0byBpbmRpY2F0ZSB0ZXh0IGlzIG9taXR0ZWQuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBbb3B0aW9ucy5zZXBhcmF0b3JdIFRoZSBzZXBhcmF0b3IgcGF0dGVybiB0byB0cnVuY2F0ZSB0by5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cnVuY2F0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJyk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hiby4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnbGVuZ3RoJzogMjQsXG4gICAgICogICAnc2VwYXJhdG9yJzogJyAnXG4gICAgICogfSk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZSwuLi4nXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAqICAgJ2xlbmd0aCc6IDI0LFxuICAgICAqICAgJ3NlcGFyYXRvcic6IC8sPyArL1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+ICdoaS1kaWRkbHktaG8gdGhlcmUuLi4nXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAqICAgJ29taXNzaW9uJzogJyBbLi4uXSdcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnIFsuLi5dJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRydW5jYXRlKHN0cmluZywgb3B0aW9ucykge1xuICAgICAgdmFyIGxlbmd0aCA9IERFRkFVTFRfVFJVTkNfTEVOR1RILFxuICAgICAgICAgIG9taXNzaW9uID0gREVGQVVMVF9UUlVOQ19PTUlTU0lPTjtcblxuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIHZhciBzZXBhcmF0b3IgPSAnc2VwYXJhdG9yJyBpbiBvcHRpb25zID8gb3B0aW9ucy5zZXBhcmF0b3IgOiBzZXBhcmF0b3I7XG4gICAgICAgIGxlbmd0aCA9ICdsZW5ndGgnIGluIG9wdGlvbnMgPyB0b0ludGVnZXIob3B0aW9ucy5sZW5ndGgpIDogbGVuZ3RoO1xuICAgICAgICBvbWlzc2lvbiA9ICdvbWlzc2lvbicgaW4gb3B0aW9ucyA/IGJhc2VUb1N0cmluZyhvcHRpb25zLm9taXNzaW9uKSA6IG9taXNzaW9uO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG4gICAgICBpZiAoaGFzVW5pY29kZShzdHJpbmcpKSB7XG4gICAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpO1xuICAgICAgICBzdHJMZW5ndGggPSBzdHJTeW1ib2xzLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGlmIChsZW5ndGggPj0gc3RyTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgZW5kID0gbGVuZ3RoIC0gc3RyaW5nU2l6ZShvbWlzc2lvbik7XG4gICAgICBpZiAoZW5kIDwgMSkge1xuICAgICAgICByZXR1cm4gb21pc3Npb247XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gc3RyU3ltYm9sc1xuICAgICAgICA/IGNhc3RTbGljZShzdHJTeW1ib2xzLCAwLCBlbmQpLmpvaW4oJycpXG4gICAgICAgIDogc3RyaW5nLnNsaWNlKDAsIGVuZCk7XG5cbiAgICAgIGlmIChzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0ICsgb21pc3Npb247XG4gICAgICB9XG4gICAgICBpZiAoc3RyU3ltYm9scykge1xuICAgICAgICBlbmQgKz0gKHJlc3VsdC5sZW5ndGggLSBlbmQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVnRXhwKHNlcGFyYXRvcikpIHtcbiAgICAgICAgaWYgKHN0cmluZy5zbGljZShlbmQpLnNlYXJjaChzZXBhcmF0b3IpKSB7XG4gICAgICAgICAgdmFyIG1hdGNoLFxuICAgICAgICAgICAgICBzdWJzdHJpbmcgPSByZXN1bHQ7XG5cbiAgICAgICAgICBpZiAoIXNlcGFyYXRvci5nbG9iYWwpIHtcbiAgICAgICAgICAgIHNlcGFyYXRvciA9IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCB0b1N0cmluZyhyZUZsYWdzLmV4ZWMoc2VwYXJhdG9yKSkgKyAnZycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXBhcmF0b3IubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICB3aGlsZSAoKG1hdGNoID0gc2VwYXJhdG9yLmV4ZWMoc3Vic3RyaW5nKSkpIHtcbiAgICAgICAgICAgIHZhciBuZXdFbmQgPSBtYXRjaC5pbmRleDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIG5ld0VuZCA9PT0gdW5kZWZpbmVkID8gZW5kIDogbmV3RW5kKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzdHJpbmcuaW5kZXhPZihiYXNlVG9TdHJpbmcoc2VwYXJhdG9yKSwgZW5kKSAhPSBlbmQpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gcmVzdWx0Lmxhc3RJbmRleE9mKHNlcGFyYXRvcik7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdCArIG9taXNzaW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpbnZlcnNlIG9mIGBfLmVzY2FwZWA7IHRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBIVE1MIGVudGl0aWVzXG4gICAgICogYCZhbXA7YCwgYCZsdDtgLCBgJmd0O2AsIGAmcXVvdDtgLCBhbmQgYCYjMzk7YCBpbiBgc3RyaW5nYCB0b1xuICAgICAqIHRoZWlyIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBObyBvdGhlciBIVE1MIGVudGl0aWVzIGFyZSB1bmVzY2FwZWQuIFRvIHVuZXNjYXBlIGFkZGl0aW9uYWxcbiAgICAgKiBIVE1MIGVudGl0aWVzIHVzZSBhIHRoaXJkLXBhcnR5IGxpYnJhcnkgbGlrZSBbX2hlX10oaHR0cHM6Ly9tdGhzLmJlL2hlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjYuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB1bmVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1bmVzY2FwZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuZXNjYXBlKCdmcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5lc2NhcGUoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNFc2NhcGVkSHRtbC50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVFc2NhcGVkSHRtbCwgdW5lc2NhcGVIdG1sQ2hhcilcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIHNwYWNlIHNlcGFyYXRlZCB3b3JkcywgdG8gdXBwZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVwcGVyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJy0tZm9vLWJhcicpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICovXG4gICAgdmFyIHVwcGVyQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICcgJyA6ICcnKSArIHdvcmQudG9VcHBlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gdXBwZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udXBwZXJGaXJzdCgnZnJlZCcpO1xuICAgICAqIC8vID0+ICdGcmVkJ1xuICAgICAqXG4gICAgICogXy51cHBlckZpcnN0KCdGUkVEJyk7XG4gICAgICogLy8gPT4gJ0ZSRUQnXG4gICAgICovXG4gICAgdmFyIHVwcGVyRmlyc3QgPSBjcmVhdGVDYXNlRmlyc3QoJ3RvVXBwZXJDYXNlJyk7XG5cbiAgICAvKipcbiAgICAgKiBTcGxpdHMgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtwYXR0ZXJuXSBUaGUgcGF0dGVybiB0byBtYXRjaCB3b3Jkcy5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gWydmcmVkJywgJ2Jhcm5leScsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJywgL1teLCBdKy9nKTtcbiAgICAgKiAvLyA9PiBbJ2ZyZWQnLCAnYmFybmV5JywgJyYnLCAncGViYmxlcyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gd29yZHMoc3RyaW5nLCBwYXR0ZXJuLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHBhdHRlcm4gPSBndWFyZCA/IHVuZGVmaW5lZCA6IHBhdHRlcm47XG5cbiAgICAgIGlmIChwYXR0ZXJuID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGhhc1VuaWNvZGVXb3JkKHN0cmluZykgPyB1bmljb2RlV29yZHMoc3RyaW5nKSA6IGFzY2lpV29yZHMoc3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmcubWF0Y2gocGF0dGVybikgfHwgW107XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQXR0ZW1wdHMgdG8gaW52b2tlIGBmdW5jYCwgcmV0dXJuaW5nIGVpdGhlciB0aGUgcmVzdWx0IG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAgICAgKiBvYmplY3QuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhdHRlbXB0LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBgZnVuY2AgcmVzdWx0IG9yIGVycm9yIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgdGhyb3dpbmcgZXJyb3JzIGZvciBpbnZhbGlkIHNlbGVjdG9ycy5cbiAgICAgKiB2YXIgZWxlbWVudHMgPSBfLmF0dGVtcHQoZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgICAgKiAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAgICAgKiB9LCAnPl8+Jyk7XG4gICAgICpcbiAgICAgKiBpZiAoXy5pc0Vycm9yKGVsZW1lbnRzKSkge1xuICAgICAqICAgZWxlbWVudHMgPSBbXTtcbiAgICAgKiB9XG4gICAgICovXG4gICAgdmFyIGF0dGVtcHQgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdW5kZWZpbmVkLCBhcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGlzRXJyb3IoZSkgPyBlIDogbmV3IEVycm9yKGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQmluZHMgbWV0aG9kcyBvZiBhbiBvYmplY3QgdG8gdGhlIG9iamVjdCBpdHNlbGYsIG92ZXJ3cml0aW5nIHRoZSBleGlzdGluZ1xuICAgICAqIG1ldGhvZC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBib3VuZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBiaW5kIGFuZCBhc3NpZ24gdGhlIGJvdW5kIG1ldGhvZHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gbWV0aG9kTmFtZXMgVGhlIG9iamVjdCBtZXRob2QgbmFtZXMgdG8gYmluZC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdmlldyA9IHtcbiAgICAgKiAgICdsYWJlbCc6ICdkb2NzJyxcbiAgICAgKiAgICdjbGljayc6IGZ1bmN0aW9uKCkge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnY2xpY2tlZCAnICsgdGhpcy5sYWJlbCk7XG4gICAgICogICB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8uYmluZEFsbCh2aWV3LCBbJ2NsaWNrJ10pO1xuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCB2aWV3LmNsaWNrKTtcbiAgICAgKiAvLyA9PiBMb2dzICdjbGlja2VkIGRvY3MnIHdoZW4gY2xpY2tlZC5cbiAgICAgKi9cbiAgICB2YXIgYmluZEFsbCA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgbWV0aG9kTmFtZXMpIHtcbiAgICAgIGFycmF5RWFjaChtZXRob2ROYW1lcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGtleSA9IHRvS2V5KGtleSk7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgYmluZChvYmplY3Rba2V5XSwgb2JqZWN0KSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpdGVyYXRlcyBvdmVyIGBwYWlyc2AgYW5kIGludm9rZXMgdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgKiBmdW5jdGlvbiBvZiB0aGUgZmlyc3QgcHJlZGljYXRlIHRvIHJldHVybiB0cnV0aHkuIFRoZSBwcmVkaWNhdGUtZnVuY3Rpb25cbiAgICAgKiBwYWlycyBhcmUgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZSBjcmVhdGVkXG4gICAgICogZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhaXJzIFRoZSBwcmVkaWNhdGUtZnVuY3Rpb24gcGFpcnMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8uY29uZChbXG4gICAgICogICBbXy5tYXRjaGVzKHsgJ2EnOiAxIH0pLCAgICAgICAgICAgXy5jb25zdGFudCgnbWF0Y2hlcyBBJyldLFxuICAgICAqICAgW18uY29uZm9ybXMoeyAnYic6IF8uaXNOdW1iZXIgfSksIF8uY29uc3RhbnQoJ21hdGNoZXMgQicpXSxcbiAgICAgKiAgIFtfLnN0dWJUcnVlLCAgICAgICAgICAgICAgICAgICAgICBfLmNvbnN0YW50KCdubyBtYXRjaCcpXVxuICAgICAqIF0pO1xuICAgICAqXG4gICAgICogZnVuYyh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+ICdtYXRjaGVzIEEnXG4gICAgICpcbiAgICAgKiBmdW5jKHsgJ2EnOiAwLCAnYic6IDEgfSk7XG4gICAgICogLy8gPT4gJ21hdGNoZXMgQidcbiAgICAgKlxuICAgICAqIGZ1bmMoeyAnYSc6ICcxJywgJ2InOiAnMicgfSk7XG4gICAgICogLy8gPT4gJ25vIG1hdGNoJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmQocGFpcnMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwYWlycyA9PSBudWxsID8gMCA6IHBhaXJzLmxlbmd0aCxcbiAgICAgICAgICB0b0l0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoKTtcblxuICAgICAgcGFpcnMgPSAhbGVuZ3RoID8gW10gOiBhcnJheU1hcChwYWlycywgZnVuY3Rpb24ocGFpcikge1xuICAgICAgICBpZiAodHlwZW9mIHBhaXJbMV0gIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3RvSXRlcmF0ZWUocGFpclswXSksIHBhaXJbMV1dO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIHZhciBwYWlyID0gcGFpcnNbaW5kZXhdO1xuICAgICAgICAgIGlmIChhcHBseShwYWlyWzBdLCB0aGlzLCBhcmdzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGx5KHBhaXJbMV0sIHRoaXMsIGFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgcHJlZGljYXRlIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgd2l0aFxuICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHZhbHVlcyBvZiBhIGdpdmVuIG9iamVjdCwgcmV0dXJuaW5nIGB0cnVlYCBpZlxuICAgICAqIGFsbCBwcmVkaWNhdGVzIHJldHVybiB0cnV0aHksIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY3JlYXRlZCBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGBfLmNvbmZvcm1zVG9gIHdpdGhcbiAgICAgKiBgc291cmNlYCBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAyLCAnYic6IDEgfSxcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLmNvbmZvcm1zKHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMTsgfSB9KSk7XG4gICAgICogLy8gPT4gW3sgJ2EnOiAxLCAnYic6IDIgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25mb3Jtcyhzb3VyY2UpIHtcbiAgICAgIHJldHVybiBiYXNlQ29uZm9ybXMoYmFzZUNsb25lKHNvdXJjZSwgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbnN0YW50IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IF8udGltZXMoMiwgXy5jb25zdGFudCh7ICdhJzogMSB9KSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEgfSwgeyAnYSc6IDEgfV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBgdmFsdWVgIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZGVmYXVsdCB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQgaW5cbiAgICAgKiBpdHMgcGxhY2UuIFRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBgbnVsbGAsXG4gICAgICogb3IgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0geyp9IGRlZmF1bHRWYWx1ZSBUaGUgZGVmYXVsdCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdFRvKDEsIDEwKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiBfLmRlZmF1bHRUbyh1bmRlZmluZWQsIDEwKTtcbiAgICAgKiAvLyA9PiAxMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlZmF1bHRUbyh2YWx1ZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gKHZhbHVlID09IG51bGwgfHwgdmFsdWUgIT09IHZhbHVlKSA/IGRlZmF1bHRWYWx1ZSA6IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGUgZ2l2ZW4gZnVuY3Rpb25zXG4gICAgICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24sIHdoZXJlIGVhY2ggc3VjY2Vzc2l2ZVxuICAgICAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbZnVuY3NdIFRoZSBmdW5jdGlvbnMgdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvc2l0ZSBmdW5jdGlvbi5cbiAgICAgKiBAc2VlIF8uZmxvd1JpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFkZFNxdWFyZSA9IF8uZmxvdyhbXy5hZGQsIHNxdWFyZV0pO1xuICAgICAqIGFkZFNxdWFyZSgxLCAyKTtcbiAgICAgKiAvLyA9PiA5XG4gICAgICovXG4gICAgdmFyIGZsb3cgPSBjcmVhdGVGbG93KCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsb3dgIGV4Y2VwdCB0aGF0IGl0IGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0XG4gICAgICogaW52b2tlcyB0aGUgZ2l2ZW4gZnVuY3Rpb25zIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtmdW5jc10gVGhlIGZ1bmN0aW9ucyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBzZWUgXy5mbG93XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFkZFNxdWFyZSA9IF8uZmxvd1JpZ2h0KFtzcXVhcmUsIF8uYWRkXSk7XG4gICAgICogYWRkU3F1YXJlKDEsIDIpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKi9cbiAgICB2YXIgZmxvd1JpZ2h0ID0gY3JlYXRlRmxvdyh0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWRcbiAgICAgKiBmdW5jdGlvbi4gSWYgYGZ1bmNgIGlzIGEgcHJvcGVydHkgbmFtZSwgdGhlIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJucyB0aGVcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZSBmb3IgYSBnaXZlbiBlbGVtZW50LiBJZiBgZnVuY2AgaXMgYW4gYXJyYXkgb3Igb2JqZWN0LCB0aGVcbiAgICAgKiBjcmVhdGVkIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgIGZvciBlbGVtZW50cyB0aGF0IGNvbnRhaW4gdGhlIGVxdWl2YWxlbnRcbiAgICAgKiBzb3VyY2UgcHJvcGVydGllcywgb3RoZXJ3aXNlIGl0IHJldHVybnMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsqfSBbZnVuYz1fLmlkZW50aXR5XSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhIGNhbGxiYWNrLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY2FsbGJhY2suXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8uaXRlcmF0ZWUoeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9KSk7XG4gICAgICogLy8gPT4gW3sgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9XVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCBfLml0ZXJhdGVlKFsndXNlcicsICdmcmVkJ10pKTtcbiAgICAgKiAvLyA9PiBbeyAndXNlcic6ICdmcmVkJywgJ2FnZSc6IDQwIH1dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcCh1c2VycywgXy5pdGVyYXRlZSgndXNlcicpKTtcbiAgICAgKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIENyZWF0ZSBjdXN0b20gaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKiBfLml0ZXJhdGVlID0gXy53cmFwKF8uaXRlcmF0ZWUsIGZ1bmN0aW9uKGl0ZXJhdGVlLCBmdW5jKSB7XG4gICAgICogICByZXR1cm4gIV8uaXNSZWdFeHAoZnVuYykgPyBpdGVyYXRlZShmdW5jKSA6IGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAqICAgICByZXR1cm4gZnVuYy50ZXN0KHN0cmluZyk7XG4gICAgICogICB9O1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIoWydhYmMnLCAnZGVmJ10sIC9lZi8pO1xuICAgICAqIC8vID0+IFsnZGVmJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpdGVyYXRlZShmdW5jKSB7XG4gICAgICByZXR1cm4gYmFzZUl0ZXJhdGVlKHR5cGVvZiBmdW5jID09ICdmdW5jdGlvbicgPyBmdW5jIDogYmFzZUNsb25lKGZ1bmMsIENMT05FX0RFRVBfRkxBRykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcGFydGlhbCBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiBhIGdpdmVuXG4gICAgICogb2JqZWN0IGFuZCBgc291cmNlYCwgcmV0dXJuaW5nIGB0cnVlYCBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGhhcyBlcXVpdmFsZW50XG4gICAgICogcHJvcGVydHkgdmFsdWVzLCBlbHNlIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhlIGNyZWF0ZWQgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBgXy5pc01hdGNoYCB3aXRoIGBzb3VyY2VgXG4gICAgICogcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdCBgc291cmNlYFxuICAgICAqIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlIGBfLmlzRXF1YWxgXG4gICAgICogZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTXVsdGlwbGUgdmFsdWVzIGNhbiBiZSBjaGVja2VkIGJ5IGNvbWJpbmluZyBzZXZlcmFsIG1hdGNoZXJzXG4gICAgICogdXNpbmcgYF8ub3ZlclNvbWVgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSxcbiAgICAgKiAgIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8ubWF0Y2hlcyh7ICdhJzogNCwgJ2MnOiA2IH0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1dXG4gICAgICpcbiAgICAgKiAvLyBDaGVja2luZyBmb3Igc2V2ZXJhbCBwb3NzaWJsZSB2YWx1ZXNcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLm92ZXJTb21lKFtfLm1hdGNoZXMoeyAnYSc6IDEgfSksIF8ubWF0Y2hlcyh7ICdhJzogNCB9KV0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hdGNoZXMoc291cmNlKSB7XG4gICAgICByZXR1cm4gYmFzZU1hdGNoZXMoYmFzZUNsb25lKHNvdXJjZSwgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHRoZVxuICAgICAqIHZhbHVlIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdCB0byBgc3JjVmFsdWVgLCByZXR1cm5pbmcgYHRydWVgIGlmIHRoZVxuICAgICAqIG9iamVjdCB2YWx1ZSBpcyBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogUGFydGlhbCBjb21wYXJpc29ucyB3aWxsIG1hdGNoIGVtcHR5IGFycmF5IGFuZCBlbXB0eSBvYmplY3RcbiAgICAgKiBgc3JjVmFsdWVgIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlXG4gICAgICogYF8uaXNFcXVhbGAgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTXVsdGlwbGUgdmFsdWVzIGNhbiBiZSBjaGVja2VkIGJ5IGNvbWJpbmluZyBzZXZlcmFsIG1hdGNoZXJzXG4gICAgICogdXNpbmcgYF8ub3ZlclNvbWVgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSxcbiAgICAgKiAgIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZChvYmplY3RzLCBfLm1hdGNoZXNQcm9wZXJ0eSgnYScsIDQpKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfVxuICAgICAqXG4gICAgICogLy8gQ2hlY2tpbmcgZm9yIHNldmVyYWwgcG9zc2libGUgdmFsdWVzXG4gICAgICogXy5maWx0ZXIob2JqZWN0cywgXy5vdmVyU29tZShbXy5tYXRjaGVzUHJvcGVydHkoJ2EnLCAxKSwgXy5tYXRjaGVzUHJvcGVydHkoJ2EnLCA0KV0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCwgYmFzZUNsb25lKHNyY1ZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBtZXRob2QgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICAgICAqIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZS5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSB0aGUgbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgaW52b2tlciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogeyAnYic6IF8uY29uc3RhbnQoMikgfSB9LFxuICAgICAqICAgeyAnYSc6IHsgJ2InOiBfLmNvbnN0YW50KDEpIH0gfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLm1ldGhvZCgnYS5iJykpO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqXG4gICAgICogXy5tYXAob2JqZWN0cywgXy5tZXRob2QoWydhJywgJ2InXSkpO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIHZhciBtZXRob2QgPSBiYXNlUmVzdChmdW5jdGlvbihwYXRoLCBhcmdzKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncyk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLm1ldGhvZGA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXNcbiAgICAgKiB0aGUgbWV0aG9kIGF0IGEgZ2l2ZW4gcGF0aCBvZiBgb2JqZWN0YC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZVxuICAgICAqIHByb3ZpZGVkIHRvIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjcuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZva2VyIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBfLnRpbWVzKDMsIF8uY29uc3RhbnQpLFxuICAgICAqICAgICBvYmplY3QgPSB7ICdhJzogYXJyYXksICdiJzogYXJyYXksICdjJzogYXJyYXkgfTtcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnYVsyXScsICdjWzBdJ10sIF8ubWV0aG9kT2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICpcbiAgICAgKiBfLm1hcChbWydhJywgJzInXSwgWydjJywgJzAnXV0sIF8ubWV0aG9kT2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICovXG4gICAgdmFyIG1ldGhvZE9mID0gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBhcmdzKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICByZXR1cm4gYmFzZUludm9rZShvYmplY3QsIHBhdGgsIGFyZ3MpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEFkZHMgYWxsIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBmdW5jdGlvbiBwcm9wZXJ0aWVzIG9mIGEgc291cmNlXG4gICAgICogb2JqZWN0IHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QuIElmIGBvYmplY3RgIGlzIGEgZnVuY3Rpb24sIHRoZW4gbWV0aG9kc1xuICAgICAqIGFyZSBhZGRlZCB0byBpdHMgcHJvdG90eXBlIGFzIHdlbGwuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVXNlIGBfLnJ1bkluQ29udGV4dGAgdG8gY3JlYXRlIGEgcHJpc3RpbmUgYGxvZGFzaGAgZnVuY3Rpb24gdG9cbiAgICAgKiBhdm9pZCBjb25mbGljdHMgY2F1c2VkIGJ5IG1vZGlmeWluZyB0aGUgb3JpZ2luYWwuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258T2JqZWN0fSBbb2JqZWN0PWxvZGFzaF0gVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgZnVuY3Rpb25zIHRvIGFkZC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmNoYWluPXRydWVdIFNwZWNpZnkgd2hldGhlciBtaXhpbnMgYXJlIGNoYWluYWJsZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb258T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiB2b3dlbHMoc3RyaW5nKSB7XG4gICAgICogICByZXR1cm4gXy5maWx0ZXIoc3RyaW5nLCBmdW5jdGlvbih2KSB7XG4gICAgICogICAgIHJldHVybiAvW2FlaW91XS9pLnRlc3Qodik7XG4gICAgICogICB9KTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLm1peGluKHsgJ3Zvd2Vscyc6IHZvd2VscyB9KTtcbiAgICAgKiBfLnZvd2VscygnZnJlZCcpO1xuICAgICAqIC8vID0+IFsnZSddXG4gICAgICpcbiAgICAgKiBfKCdmcmVkJykudm93ZWxzKCkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbJ2UnXVxuICAgICAqXG4gICAgICogXy5taXhpbih7ICd2b3dlbHMnOiB2b3dlbHMgfSwgeyAnY2hhaW4nOiBmYWxzZSB9KTtcbiAgICAgKiBfKCdmcmVkJykudm93ZWxzKCk7XG4gICAgICogLy8gPT4gWydlJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtaXhpbihvYmplY3QsIHNvdXJjZSwgb3B0aW9ucykge1xuICAgICAgdmFyIHByb3BzID0ga2V5cyhzb3VyY2UpLFxuICAgICAgICAgIG1ldGhvZE5hbWVzID0gYmFzZUZ1bmN0aW9ucyhzb3VyY2UsIHByb3BzKTtcblxuICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCAmJlxuICAgICAgICAgICEoaXNPYmplY3Qoc291cmNlKSAmJiAobWV0aG9kTmFtZXMubGVuZ3RoIHx8ICFwcm9wcy5sZW5ndGgpKSkge1xuICAgICAgICBvcHRpb25zID0gc291cmNlO1xuICAgICAgICBzb3VyY2UgPSBvYmplY3Q7XG4gICAgICAgIG9iamVjdCA9IHRoaXM7XG4gICAgICAgIG1ldGhvZE5hbWVzID0gYmFzZUZ1bmN0aW9ucyhzb3VyY2UsIGtleXMoc291cmNlKSk7XG4gICAgICB9XG4gICAgICB2YXIgY2hhaW4gPSAhKGlzT2JqZWN0KG9wdGlvbnMpICYmICdjaGFpbicgaW4gb3B0aW9ucykgfHwgISFvcHRpb25zLmNoYWluLFxuICAgICAgICAgIGlzRnVuYyA9IGlzRnVuY3Rpb24ob2JqZWN0KTtcblxuICAgICAgYXJyYXlFYWNoKG1ldGhvZE5hbWVzLCBmdW5jdGlvbihtZXRob2ROYW1lKSB7XG4gICAgICAgIHZhciBmdW5jID0gc291cmNlW21ldGhvZE5hbWVdO1xuICAgICAgICBvYmplY3RbbWV0aG9kTmFtZV0gPSBmdW5jO1xuICAgICAgICBpZiAoaXNGdW5jKSB7XG4gICAgICAgICAgb2JqZWN0LnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGNoYWluQWxsID0gdGhpcy5fX2NoYWluX187XG4gICAgICAgICAgICBpZiAoY2hhaW4gfHwgY2hhaW5BbGwpIHtcbiAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG9iamVjdCh0aGlzLl9fd3JhcHBlZF9fKSxcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnMgPSByZXN1bHQuX19hY3Rpb25zX18gPSBjb3B5QXJyYXkodGhpcy5fX2FjdGlvbnNfXyk7XG5cbiAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHsgJ2Z1bmMnOiBmdW5jLCAnYXJncyc6IGFyZ3VtZW50cywgJ3RoaXNBcmcnOiBvYmplY3QgfSk7XG4gICAgICAgICAgICAgIHJlc3VsdC5fX2NoYWluX18gPSBjaGFpbkFsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KG9iamVjdCwgYXJyYXlQdXNoKFt0aGlzLnZhbHVlKCldLCBhcmd1bWVudHMpKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnRzIHRoZSBgX2AgdmFyaWFibGUgdG8gaXRzIHByZXZpb3VzIHZhbHVlIGFuZCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvXG4gICAgICogdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgbG9kYXNoID0gXy5ub0NvbmZsaWN0KCk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9Db25mbGljdCgpIHtcbiAgICAgIGlmIChyb290Ll8gPT09IHRoaXMpIHtcbiAgICAgICAgcm9vdC5fID0gb2xkRGFzaDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8ubm9vcCk7XG4gICAgICogLy8gPT4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5vb3AoKSB7XG4gICAgICAvLyBObyBvcGVyYXRpb24gcGVyZm9ybWVkLlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIGFyZ3VtZW50IGF0IGluZGV4IGBuYC4gSWYgYG5gIGlzIG5lZ2F0aXZlLFxuICAgICAqIHRoZSBudGggYXJndW1lbnQgZnJvbSB0aGUgZW5kIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MF0gVGhlIGluZGV4IG9mIHRoZSBhcmd1bWVudCB0byByZXR1cm4uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFzcy10aHJ1IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ubnRoQXJnKDEpO1xuICAgICAqIGZ1bmMoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgKiAvLyA9PiAnYidcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5udGhBcmcoLTIpO1xuICAgICAqIGZ1bmMoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgKiAvLyA9PiAnYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBudGhBcmcobikge1xuICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHJldHVybiBiYXNlTnRoKGFyZ3MsIG4pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgaXRlcmF0ZWVzYCB3aXRoIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXNcbiAgICAgKiBhbmQgcmV0dXJucyB0aGVpciByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBpdGVyYXRlZXMgdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ub3ZlcihbTWF0aC5tYXgsIE1hdGgubWluXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKDEsIDIsIDMsIDQpO1xuICAgICAqIC8vID0+IFs0LCAxXVxuICAgICAqL1xuICAgIHZhciBvdmVyID0gY3JlYXRlT3ZlcihhcnJheU1hcCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgKiphbGwqKiBvZiB0aGUgYHByZWRpY2F0ZXNgIHJldHVyblxuICAgICAqIHRydXRoeSB3aGVuIGludm9rZWQgd2l0aCB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogRm9sbG93aW5nIHNob3J0aGFuZHMgYXJlIHBvc3NpYmxlIGZvciBwcm92aWRpbmcgcHJlZGljYXRlcy5cbiAgICAgKiBQYXNzIGFuIGBPYmplY3RgIGFuZCBpdCB3aWxsIGJlIHVzZWQgYXMgYW4gcGFyYW1ldGVyIGZvciBgXy5tYXRjaGVzYCB0byBjcmVhdGUgdGhlIHByZWRpY2F0ZS5cbiAgICAgKiBQYXNzIGFuIGBBcnJheWAgb2YgcGFyYW1ldGVycyBmb3IgYF8ubWF0Y2hlc1Byb3BlcnR5YCBhbmQgdGhlIHByZWRpY2F0ZSB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgdGhlbS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIHByZWRpY2F0ZXMgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyRXZlcnkoW0Jvb2xlYW4sIGlzRmluaXRlXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKCcxJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogZnVuYyhudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogZnVuYyhOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIG92ZXJFdmVyeSA9IGNyZWF0ZU92ZXIoYXJyYXlFdmVyeSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgKiphbnkqKiBvZiB0aGUgYHByZWRpY2F0ZXNgIHJldHVyblxuICAgICAqIHRydXRoeSB3aGVuIGludm9rZWQgd2l0aCB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogRm9sbG93aW5nIHNob3J0aGFuZHMgYXJlIHBvc3NpYmxlIGZvciBwcm92aWRpbmcgcHJlZGljYXRlcy5cbiAgICAgKiBQYXNzIGFuIGBPYmplY3RgIGFuZCBpdCB3aWxsIGJlIHVzZWQgYXMgYW4gcGFyYW1ldGVyIGZvciBgXy5tYXRjaGVzYCB0byBjcmVhdGUgdGhlIHByZWRpY2F0ZS5cbiAgICAgKiBQYXNzIGFuIGBBcnJheWAgb2YgcGFyYW1ldGVycyBmb3IgYF8ubWF0Y2hlc1Byb3BlcnR5YCBhbmQgdGhlIHByZWRpY2F0ZSB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgdGhlbS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIHByZWRpY2F0ZXMgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyU29tZShbQm9vbGVhbiwgaXNGaW5pdGVdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoJzEnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBmdW5jKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGZ1bmMoTmFOKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogdmFyIG1hdGNoZXNGdW5jID0gXy5vdmVyU29tZShbeyAnYSc6IDEgfSwgeyAnYSc6IDIgfV0pXG4gICAgICogdmFyIG1hdGNoZXNQcm9wZXJ0eUZ1bmMgPSBfLm92ZXJTb21lKFtbJ2EnLCAxXSwgWydhJywgMl1dKVxuICAgICAqL1xuICAgIHZhciBvdmVyU29tZSA9IGNyZWF0ZU92ZXIoYXJyYXlTb21lKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogeyAnYic6IDIgfSB9LFxuICAgICAqICAgeyAnYSc6IHsgJ2InOiAxIH0gfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLnByb3BlcnR5KCdhLmInKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICpcbiAgICAgKiBfLm1hcChfLnNvcnRCeShvYmplY3RzLCBfLnByb3BlcnR5KFsnYScsICdiJ10pKSwgJ2EuYicpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb3BlcnR5KHBhdGgpIHtcbiAgICAgIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5wcm9wZXJ0eWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnNcbiAgICAgKiB0aGUgdmFsdWUgYXQgYSBnaXZlbiBwYXRoIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFswLCAxLCAyXSxcbiAgICAgKiAgICAgb2JqZWN0ID0geyAnYSc6IGFycmF5LCAnYic6IGFycmF5LCAnYyc6IGFycmF5IH07XG4gICAgICpcbiAgICAgKiBfLm1hcChbJ2FbMl0nLCAnY1swXSddLCBfLnByb3BlcnR5T2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICpcbiAgICAgKiBfLm1hcChbWydhJywgJzInXSwgWydjJywgJzAnXV0sIF8ucHJvcGVydHlPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwcm9wZXJ0eU9mKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG51bWJlcnMgKHBvc2l0aXZlIGFuZC9vciBuZWdhdGl2ZSkgcHJvZ3Jlc3NpbmcgZnJvbVxuICAgICAqIGBzdGFydGAgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC4gQSBzdGVwIG9mIGAtMWAgaXMgdXNlZCBpZiBhIG5lZ2F0aXZlXG4gICAgICogYHN0YXJ0YCBpcyBzcGVjaWZpZWQgd2l0aG91dCBhbiBgZW5kYCBvciBgc3RlcGAuIElmIGBlbmRgIGlzIG5vdCBzcGVjaWZpZWQsXG4gICAgICogaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEphdmFTY3JpcHQgZm9sbG93cyB0aGUgSUVFRS03NTQgc3RhbmRhcmQgZm9yIHJlc29sdmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0xXSBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gICAgICogQHNlZSBfLmluUmFuZ2UsIF8ucmFuZ2VSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDQpO1xuICAgICAqIC8vID0+IFswLCAxLCAyLCAzXVxuICAgICAqXG4gICAgICogXy5yYW5nZSgtNCk7XG4gICAgICogLy8gPT4gWzAsIC0xLCAtMiwgLTNdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDEsIDUpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCA0XVxuICAgICAqXG4gICAgICogXy5yYW5nZSgwLCAyMCwgNSk7XG4gICAgICogLy8gPT4gWzAsIDUsIDEwLCAxNV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMCwgLTQsIC0xKTtcbiAgICAgKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMSwgNCwgMCk7XG4gICAgICogLy8gPT4gWzEsIDEsIDFdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgdmFyIHJhbmdlID0gY3JlYXRlUmFuZ2UoKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucmFuZ2VgIGV4Y2VwdCB0aGF0IGl0IHBvcHVsYXRlcyB2YWx1ZXMgaW5cbiAgICAgKiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0ZXA9MV0gVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICAgICAqIEBzZWUgXy5pblJhbmdlLCBfLnJhbmdlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCg0KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgtNCk7XG4gICAgICogLy8gPT4gWy0zLCAtMiwgLTEsIDBdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMSwgNSk7XG4gICAgICogLy8gPT4gWzQsIDMsIDIsIDFdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMCwgMjAsIDUpO1xuICAgICAqIC8vID0+IFsxNSwgMTAsIDUsIDBdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMCwgLTQsIC0xKTtcbiAgICAgKiAvLyA9PiBbLTMsIC0yLCAtMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgxLCA0LCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIHZhciByYW5nZVJpZ2h0ID0gY3JlYXRlUmFuZ2UodHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZW1wdHkgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheXMgPSBfLnRpbWVzKDIsIF8uc3R1YkFycmF5KTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gICAgICogLy8gPT4gW1tdLCBbXV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAgICAgKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLnN0dWJPYmplY3QpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0cyk7XG4gICAgICogLy8gPT4gW3t9LCB7fV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1Yk9iamVjdCgpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVtcHR5IHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLnN0dWJTdHJpbmcpO1xuICAgICAqIC8vID0+IFsnJywgJyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YlN0cmluZygpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB0cnVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLnN0dWJUcnVlKTtcbiAgICAgKiAvLyA9PiBbdHJ1ZSwgdHJ1ZV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViVHJ1ZSgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgdGhlIGl0ZXJhdGVlIGBuYCB0aW1lcywgcmV0dXJuaW5nIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mXG4gICAgICogZWFjaCBpbnZvY2F0aW9uLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKGluZGV4KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMywgU3RyaW5nKTtcbiAgICAgKiAvLyA9PiBbJzAnLCAnMScsICcyJ11cbiAgICAgKlxuICAgICAqICBfLnRpbWVzKDQsIF8uY29uc3RhbnQoMCkpO1xuICAgICAqIC8vID0+IFswLCAwLCAwLCAwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgaWYgKG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IE1BWF9BUlJBWV9MRU5HVEgsXG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKG4sIE1BWF9BUlJBWV9MRU5HVEgpO1xuXG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlKTtcbiAgICAgIG4gLT0gTUFYX0FSUkFZX0xFTkdUSDtcblxuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VUaW1lcyhsZW5ndGgsIGl0ZXJhdGVlKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgICAgICBpdGVyYXRlZShpbmRleCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9QYXRoKCdhLmIuYycpO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqXG4gICAgICogXy50b1BhdGgoJ2FbMF0uYi5jJyk7XG4gICAgICogLy8gPT4gWydhJywgJzAnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1BhdGgodmFsdWUpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIHRvS2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1N5bWJvbCh2YWx1ZSkgPyBbdmFsdWVdIDogY29weUFycmF5KHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgSUQuIElmIGBwcmVmaXhgIGlzIGdpdmVuLCB0aGUgSUQgaXMgYXBwZW5kZWQgdG8gaXQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbcHJlZml4PScnXSBUaGUgdmFsdWUgdG8gcHJlZml4IHRoZSBJRCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuaXF1ZSBJRC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51bmlxdWVJZCgnY29udGFjdF8nKTtcbiAgICAgKiAvLyA9PiAnY29udGFjdF8xMDQnXG4gICAgICpcbiAgICAgKiBfLnVuaXF1ZUlkKCk7XG4gICAgICogLy8gPT4gJzEwNSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgICAgIHZhciBpZCA9ICsraWRDb3VudGVyO1xuICAgICAgcmV0dXJuIHRvU3RyaW5nKHByZWZpeCkgKyBpZDtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBZGRzIHR3byBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYXVnZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYW4gYWRkaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFkZGVuZCBUaGUgc2Vjb25kIG51bWJlciBpbiBhbiBhZGRpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0b3RhbC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5hZGQoNiwgNCk7XG4gICAgICogLy8gPT4gMTBcbiAgICAgKi9cbiAgICB2YXIgYWRkID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihhdWdlbmQsIGFkZGVuZCkge1xuICAgICAgcmV0dXJuIGF1Z2VuZCArIGFkZGVuZDtcbiAgICB9LCAwKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgdXAgdG8gYHByZWNpc2lvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gcm91bmQgdXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCB1cCB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIHVwIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jZWlsKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICpcbiAgICAgKiBfLmNlaWwoNi4wMDQsIDIpO1xuICAgICAqIC8vID0+IDYuMDFcbiAgICAgKlxuICAgICAqIF8uY2VpbCg2MDQwLCAtMik7XG4gICAgICogLy8gPT4gNjEwMFxuICAgICAqL1xuICAgIHZhciBjZWlsID0gY3JlYXRlUm91bmQoJ2NlaWwnKTtcblxuICAgIC8qKlxuICAgICAqIERpdmlkZSB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRpdmlkZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBkaXZpc2lvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGl2aXNvciBUaGUgc2Vjb25kIG51bWJlciBpbiBhIGRpdmlzaW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHF1b3RpZW50LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRpdmlkZSg2LCA0KTtcbiAgICAgKiAvLyA9PiAxLjVcbiAgICAgKi9cbiAgICB2YXIgZGl2aWRlID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihkaXZpZGVuZCwgZGl2aXNvcikge1xuICAgICAgcmV0dXJuIGRpdmlkZW5kIC8gZGl2aXNvcjtcbiAgICB9LCAxKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgZG93biB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZCBkb3duLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcHJlY2lzaW9uPTBdIFRoZSBwcmVjaXNpb24gdG8gcm91bmQgZG93biB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIGRvd24gbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZsb29yKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLmZsb29yKDAuMDQ2LCAyKTtcbiAgICAgKiAvLyA9PiAwLjA0XG4gICAgICpcbiAgICAgKiBfLmZsb29yKDQwNjAsIC0yKTtcbiAgICAgKiAvLyA9PiA0MDAwXG4gICAgICovXG4gICAgdmFyIGZsb29yID0gY3JlYXRlUm91bmQoJ2Zsb29yJyk7XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAgICAgKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXgoWzQsIDIsIDgsIDZdKTtcbiAgICAgKiAvLyA9PiA4XG4gICAgICpcbiAgICAgKiBfLm1heChbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF4KGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlR3QpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWF4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWF4Qnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgKiAvLyA9PiB7ICduJzogMiB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1heEJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4geyAnbic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1heEJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGJhc2VHdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIG1lYW4gb2YgdGhlIHZhbHVlcyBpbiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG1lYW4uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWVhbihbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZWFuKGFycmF5KSB7XG4gICAgICByZXR1cm4gYmFzZU1lYW4oYXJyYXksIGlkZW50aXR5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1lYW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0byBiZSBhdmVyYWdlZC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDQgfSwgeyAnbic6IDIgfSwgeyAnbic6IDggfSwgeyAnbic6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLm1lYW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IDVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWVhbkJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lYW5CeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlTWVhbihhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWluaW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAgICAgKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5taW4oWzQsIDIsIDgsIDZdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiBfLm1pbihbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWluKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlTHQpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWluYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWluQnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgKiAvLyA9PiB7ICduJzogMSB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1pbkJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4geyAnbic6IDEgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1pbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGJhc2VMdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTXVsdGlwbHkgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtdWx0aXBsaWVyIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbXVsdGlwbGljYW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgbXVsdGlwbGljYXRpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcHJvZHVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tdWx0aXBseSg2LCA0KTtcbiAgICAgKiAvLyA9PiAyNFxuICAgICAqL1xuICAgIHZhciBtdWx0aXBseSA9IGNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obXVsdGlwbGllciwgbXVsdGlwbGljYW5kKSB7XG4gICAgICByZXR1cm4gbXVsdGlwbGllciAqIG11bHRpcGxpY2FuZDtcbiAgICB9LCAxKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gcm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yb3VuZCg0LjAwNik7XG4gICAgICogLy8gPT4gNFxuICAgICAqXG4gICAgICogXy5yb3VuZCg0LjAwNiwgMik7XG4gICAgICogLy8gPT4gNC4wMVxuICAgICAqXG4gICAgICogXy5yb3VuZCg0MDYwLCAtMik7XG4gICAgICogLy8gPT4gNDEwMFxuICAgICAqL1xuICAgIHZhciByb3VuZCA9IGNyZWF0ZVJvdW5kKCdyb3VuZCcpO1xuXG4gICAgLyoqXG4gICAgICogU3VidHJhY3QgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaW51ZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBzdWJ0cmFjdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3VidHJhaGVuZCBUaGUgc2Vjb25kIG51bWJlciBpbiBhIHN1YnRyYWN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGRpZmZlcmVuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3VidHJhY3QoNiwgNCk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIHZhciBzdWJ0cmFjdCA9IGNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obWludWVuZCwgc3VidHJhaGVuZCkge1xuICAgICAgcmV0dXJuIG1pbnVlbmQgLSBzdWJ0cmFoZW5kO1xuICAgIH0sIDApO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIHN1bSBvZiB0aGUgdmFsdWVzIGluIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3VtLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnN1bShbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDIwXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3VtKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlU3VtKGFycmF5LCBpZGVudGl0eSlcbiAgICAgICAgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc3VtYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgdmFsdWUgdG8gYmUgc3VtbWVkLlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiA0IH0sIHsgJ24nOiAyIH0sIHsgJ24nOiA4IH0sIHsgJ24nOiA2IH1dO1xuICAgICAqXG4gICAgICogXy5zdW1CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IDIwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnN1bUJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdW1CeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiAwO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIEFkZCBtZXRob2RzIHRoYXQgcmV0dXJuIHdyYXBwZWQgdmFsdWVzIGluIGNoYWluIHNlcXVlbmNlcy5cbiAgICBsb2Rhc2guYWZ0ZXIgPSBhZnRlcjtcbiAgICBsb2Rhc2guYXJ5ID0gYXJ5O1xuICAgIGxvZGFzaC5hc3NpZ24gPSBhc3NpZ247XG4gICAgbG9kYXNoLmFzc2lnbkluID0gYXNzaWduSW47XG4gICAgbG9kYXNoLmFzc2lnbkluV2l0aCA9IGFzc2lnbkluV2l0aDtcbiAgICBsb2Rhc2guYXNzaWduV2l0aCA9IGFzc2lnbldpdGg7XG4gICAgbG9kYXNoLmF0ID0gYXQ7XG4gICAgbG9kYXNoLmJlZm9yZSA9IGJlZm9yZTtcbiAgICBsb2Rhc2guYmluZCA9IGJpbmQ7XG4gICAgbG9kYXNoLmJpbmRBbGwgPSBiaW5kQWxsO1xuICAgIGxvZGFzaC5iaW5kS2V5ID0gYmluZEtleTtcbiAgICBsb2Rhc2guY2FzdEFycmF5ID0gY2FzdEFycmF5O1xuICAgIGxvZGFzaC5jaGFpbiA9IGNoYWluO1xuICAgIGxvZGFzaC5jaHVuayA9IGNodW5rO1xuICAgIGxvZGFzaC5jb21wYWN0ID0gY29tcGFjdDtcbiAgICBsb2Rhc2guY29uY2F0ID0gY29uY2F0O1xuICAgIGxvZGFzaC5jb25kID0gY29uZDtcbiAgICBsb2Rhc2guY29uZm9ybXMgPSBjb25mb3JtcztcbiAgICBsb2Rhc2guY29uc3RhbnQgPSBjb25zdGFudDtcbiAgICBsb2Rhc2guY291bnRCeSA9IGNvdW50Qnk7XG4gICAgbG9kYXNoLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgICBsb2Rhc2guY3VycnkgPSBjdXJyeTtcbiAgICBsb2Rhc2guY3VycnlSaWdodCA9IGN1cnJ5UmlnaHQ7XG4gICAgbG9kYXNoLmRlYm91bmNlID0gZGVib3VuY2U7XG4gICAgbG9kYXNoLmRlZmF1bHRzID0gZGVmYXVsdHM7XG4gICAgbG9kYXNoLmRlZmF1bHRzRGVlcCA9IGRlZmF1bHRzRGVlcDtcbiAgICBsb2Rhc2guZGVmZXIgPSBkZWZlcjtcbiAgICBsb2Rhc2guZGVsYXkgPSBkZWxheTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZSA9IGRpZmZlcmVuY2U7XG4gICAgbG9kYXNoLmRpZmZlcmVuY2VCeSA9IGRpZmZlcmVuY2VCeTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZVdpdGggPSBkaWZmZXJlbmNlV2l0aDtcbiAgICBsb2Rhc2guZHJvcCA9IGRyb3A7XG4gICAgbG9kYXNoLmRyb3BSaWdodCA9IGRyb3BSaWdodDtcbiAgICBsb2Rhc2guZHJvcFJpZ2h0V2hpbGUgPSBkcm9wUmlnaHRXaGlsZTtcbiAgICBsb2Rhc2guZHJvcFdoaWxlID0gZHJvcFdoaWxlO1xuICAgIGxvZGFzaC5maWxsID0gZmlsbDtcbiAgICBsb2Rhc2guZmlsdGVyID0gZmlsdGVyO1xuICAgIGxvZGFzaC5mbGF0TWFwID0gZmxhdE1hcDtcbiAgICBsb2Rhc2guZmxhdE1hcERlZXAgPSBmbGF0TWFwRGVlcDtcbiAgICBsb2Rhc2guZmxhdE1hcERlcHRoID0gZmxhdE1hcERlcHRoO1xuICAgIGxvZGFzaC5mbGF0dGVuID0gZmxhdHRlbjtcbiAgICBsb2Rhc2guZmxhdHRlbkRlZXAgPSBmbGF0dGVuRGVlcDtcbiAgICBsb2Rhc2guZmxhdHRlbkRlcHRoID0gZmxhdHRlbkRlcHRoO1xuICAgIGxvZGFzaC5mbGlwID0gZmxpcDtcbiAgICBsb2Rhc2guZmxvdyA9IGZsb3c7XG4gICAgbG9kYXNoLmZsb3dSaWdodCA9IGZsb3dSaWdodDtcbiAgICBsb2Rhc2guZnJvbVBhaXJzID0gZnJvbVBhaXJzO1xuICAgIGxvZGFzaC5mdW5jdGlvbnMgPSBmdW5jdGlvbnM7XG4gICAgbG9kYXNoLmZ1bmN0aW9uc0luID0gZnVuY3Rpb25zSW47XG4gICAgbG9kYXNoLmdyb3VwQnkgPSBncm91cEJ5O1xuICAgIGxvZGFzaC5pbml0aWFsID0gaW5pdGlhbDtcbiAgICBsb2Rhc2guaW50ZXJzZWN0aW9uID0gaW50ZXJzZWN0aW9uO1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb25CeSA9IGludGVyc2VjdGlvbkJ5O1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb25XaXRoID0gaW50ZXJzZWN0aW9uV2l0aDtcbiAgICBsb2Rhc2guaW52ZXJ0ID0gaW52ZXJ0O1xuICAgIGxvZGFzaC5pbnZlcnRCeSA9IGludmVydEJ5O1xuICAgIGxvZGFzaC5pbnZva2VNYXAgPSBpbnZva2VNYXA7XG4gICAgbG9kYXNoLml0ZXJhdGVlID0gaXRlcmF0ZWU7XG4gICAgbG9kYXNoLmtleUJ5ID0ga2V5Qnk7XG4gICAgbG9kYXNoLmtleXMgPSBrZXlzO1xuICAgIGxvZGFzaC5rZXlzSW4gPSBrZXlzSW47XG4gICAgbG9kYXNoLm1hcCA9IG1hcDtcbiAgICBsb2Rhc2gubWFwS2V5cyA9IG1hcEtleXM7XG4gICAgbG9kYXNoLm1hcFZhbHVlcyA9IG1hcFZhbHVlcztcbiAgICBsb2Rhc2gubWF0Y2hlcyA9IG1hdGNoZXM7XG4gICAgbG9kYXNoLm1hdGNoZXNQcm9wZXJ0eSA9IG1hdGNoZXNQcm9wZXJ0eTtcbiAgICBsb2Rhc2gubWVtb2l6ZSA9IG1lbW9pemU7XG4gICAgbG9kYXNoLm1lcmdlID0gbWVyZ2U7XG4gICAgbG9kYXNoLm1lcmdlV2l0aCA9IG1lcmdlV2l0aDtcbiAgICBsb2Rhc2gubWV0aG9kID0gbWV0aG9kO1xuICAgIGxvZGFzaC5tZXRob2RPZiA9IG1ldGhvZE9mO1xuICAgIGxvZGFzaC5taXhpbiA9IG1peGluO1xuICAgIGxvZGFzaC5uZWdhdGUgPSBuZWdhdGU7XG4gICAgbG9kYXNoLm50aEFyZyA9IG50aEFyZztcbiAgICBsb2Rhc2gub21pdCA9IG9taXQ7XG4gICAgbG9kYXNoLm9taXRCeSA9IG9taXRCeTtcbiAgICBsb2Rhc2gub25jZSA9IG9uY2U7XG4gICAgbG9kYXNoLm9yZGVyQnkgPSBvcmRlckJ5O1xuICAgIGxvZGFzaC5vdmVyID0gb3ZlcjtcbiAgICBsb2Rhc2gub3ZlckFyZ3MgPSBvdmVyQXJncztcbiAgICBsb2Rhc2gub3ZlckV2ZXJ5ID0gb3ZlckV2ZXJ5O1xuICAgIGxvZGFzaC5vdmVyU29tZSA9IG92ZXJTb21lO1xuICAgIGxvZGFzaC5wYXJ0aWFsID0gcGFydGlhbDtcbiAgICBsb2Rhc2gucGFydGlhbFJpZ2h0ID0gcGFydGlhbFJpZ2h0O1xuICAgIGxvZGFzaC5wYXJ0aXRpb24gPSBwYXJ0aXRpb247XG4gICAgbG9kYXNoLnBpY2sgPSBwaWNrO1xuICAgIGxvZGFzaC5waWNrQnkgPSBwaWNrQnk7XG4gICAgbG9kYXNoLnByb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgbG9kYXNoLnByb3BlcnR5T2YgPSBwcm9wZXJ0eU9mO1xuICAgIGxvZGFzaC5wdWxsID0gcHVsbDtcbiAgICBsb2Rhc2gucHVsbEFsbCA9IHB1bGxBbGw7XG4gICAgbG9kYXNoLnB1bGxBbGxCeSA9IHB1bGxBbGxCeTtcbiAgICBsb2Rhc2gucHVsbEFsbFdpdGggPSBwdWxsQWxsV2l0aDtcbiAgICBsb2Rhc2gucHVsbEF0ID0gcHVsbEF0O1xuICAgIGxvZGFzaC5yYW5nZSA9IHJhbmdlO1xuICAgIGxvZGFzaC5yYW5nZVJpZ2h0ID0gcmFuZ2VSaWdodDtcbiAgICBsb2Rhc2gucmVhcmcgPSByZWFyZztcbiAgICBsb2Rhc2gucmVqZWN0ID0gcmVqZWN0O1xuICAgIGxvZGFzaC5yZW1vdmUgPSByZW1vdmU7XG4gICAgbG9kYXNoLnJlc3QgPSByZXN0O1xuICAgIGxvZGFzaC5yZXZlcnNlID0gcmV2ZXJzZTtcbiAgICBsb2Rhc2guc2FtcGxlU2l6ZSA9IHNhbXBsZVNpemU7XG4gICAgbG9kYXNoLnNldCA9IHNldDtcbiAgICBsb2Rhc2guc2V0V2l0aCA9IHNldFdpdGg7XG4gICAgbG9kYXNoLnNodWZmbGUgPSBzaHVmZmxlO1xuICAgIGxvZGFzaC5zbGljZSA9IHNsaWNlO1xuICAgIGxvZGFzaC5zb3J0QnkgPSBzb3J0Qnk7XG4gICAgbG9kYXNoLnNvcnRlZFVuaXEgPSBzb3J0ZWRVbmlxO1xuICAgIGxvZGFzaC5zb3J0ZWRVbmlxQnkgPSBzb3J0ZWRVbmlxQnk7XG4gICAgbG9kYXNoLnNwbGl0ID0gc3BsaXQ7XG4gICAgbG9kYXNoLnNwcmVhZCA9IHNwcmVhZDtcbiAgICBsb2Rhc2gudGFpbCA9IHRhaWw7XG4gICAgbG9kYXNoLnRha2UgPSB0YWtlO1xuICAgIGxvZGFzaC50YWtlUmlnaHQgPSB0YWtlUmlnaHQ7XG4gICAgbG9kYXNoLnRha2VSaWdodFdoaWxlID0gdGFrZVJpZ2h0V2hpbGU7XG4gICAgbG9kYXNoLnRha2VXaGlsZSA9IHRha2VXaGlsZTtcbiAgICBsb2Rhc2gudGFwID0gdGFwO1xuICAgIGxvZGFzaC50aHJvdHRsZSA9IHRocm90dGxlO1xuICAgIGxvZGFzaC50aHJ1ID0gdGhydTtcbiAgICBsb2Rhc2gudG9BcnJheSA9IHRvQXJyYXk7XG4gICAgbG9kYXNoLnRvUGFpcnMgPSB0b1BhaXJzO1xuICAgIGxvZGFzaC50b1BhaXJzSW4gPSB0b1BhaXJzSW47XG4gICAgbG9kYXNoLnRvUGF0aCA9IHRvUGF0aDtcbiAgICBsb2Rhc2gudG9QbGFpbk9iamVjdCA9IHRvUGxhaW5PYmplY3Q7XG4gICAgbG9kYXNoLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICBsb2Rhc2gudW5hcnkgPSB1bmFyeTtcbiAgICBsb2Rhc2gudW5pb24gPSB1bmlvbjtcbiAgICBsb2Rhc2gudW5pb25CeSA9IHVuaW9uQnk7XG4gICAgbG9kYXNoLnVuaW9uV2l0aCA9IHVuaW9uV2l0aDtcbiAgICBsb2Rhc2gudW5pcSA9IHVuaXE7XG4gICAgbG9kYXNoLnVuaXFCeSA9IHVuaXFCeTtcbiAgICBsb2Rhc2gudW5pcVdpdGggPSB1bmlxV2l0aDtcbiAgICBsb2Rhc2gudW5zZXQgPSB1bnNldDtcbiAgICBsb2Rhc2gudW56aXAgPSB1bnppcDtcbiAgICBsb2Rhc2gudW56aXBXaXRoID0gdW56aXBXaXRoO1xuICAgIGxvZGFzaC51cGRhdGUgPSB1cGRhdGU7XG4gICAgbG9kYXNoLnVwZGF0ZVdpdGggPSB1cGRhdGVXaXRoO1xuICAgIGxvZGFzaC52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgbG9kYXNoLnZhbHVlc0luID0gdmFsdWVzSW47XG4gICAgbG9kYXNoLndpdGhvdXQgPSB3aXRob3V0O1xuICAgIGxvZGFzaC53b3JkcyA9IHdvcmRzO1xuICAgIGxvZGFzaC53cmFwID0gd3JhcDtcbiAgICBsb2Rhc2gueG9yID0geG9yO1xuICAgIGxvZGFzaC54b3JCeSA9IHhvckJ5O1xuICAgIGxvZGFzaC54b3JXaXRoID0geG9yV2l0aDtcbiAgICBsb2Rhc2guemlwID0gemlwO1xuICAgIGxvZGFzaC56aXBPYmplY3QgPSB6aXBPYmplY3Q7XG4gICAgbG9kYXNoLnppcE9iamVjdERlZXAgPSB6aXBPYmplY3REZWVwO1xuICAgIGxvZGFzaC56aXBXaXRoID0gemlwV2l0aDtcblxuICAgIC8vIEFkZCBhbGlhc2VzLlxuICAgIGxvZGFzaC5lbnRyaWVzID0gdG9QYWlycztcbiAgICBsb2Rhc2guZW50cmllc0luID0gdG9QYWlyc0luO1xuICAgIGxvZGFzaC5leHRlbmQgPSBhc3NpZ25JbjtcbiAgICBsb2Rhc2guZXh0ZW5kV2l0aCA9IGFzc2lnbkluV2l0aDtcblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBsb2Rhc2gucHJvdG90eXBlYC5cbiAgICBtaXhpbihsb2Rhc2gsIGxvZGFzaCk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0aGF0IHJldHVybiB1bndyYXBwZWQgdmFsdWVzIGluIGNoYWluIHNlcXVlbmNlcy5cbiAgICBsb2Rhc2guYWRkID0gYWRkO1xuICAgIGxvZGFzaC5hdHRlbXB0ID0gYXR0ZW1wdDtcbiAgICBsb2Rhc2guY2FtZWxDYXNlID0gY2FtZWxDYXNlO1xuICAgIGxvZGFzaC5jYXBpdGFsaXplID0gY2FwaXRhbGl6ZTtcbiAgICBsb2Rhc2guY2VpbCA9IGNlaWw7XG4gICAgbG9kYXNoLmNsYW1wID0gY2xhbXA7XG4gICAgbG9kYXNoLmNsb25lID0gY2xvbmU7XG4gICAgbG9kYXNoLmNsb25lRGVlcCA9IGNsb25lRGVlcDtcbiAgICBsb2Rhc2guY2xvbmVEZWVwV2l0aCA9IGNsb25lRGVlcFdpdGg7XG4gICAgbG9kYXNoLmNsb25lV2l0aCA9IGNsb25lV2l0aDtcbiAgICBsb2Rhc2guY29uZm9ybXNUbyA9IGNvbmZvcm1zVG87XG4gICAgbG9kYXNoLmRlYnVyciA9IGRlYnVycjtcbiAgICBsb2Rhc2guZGVmYXVsdFRvID0gZGVmYXVsdFRvO1xuICAgIGxvZGFzaC5kaXZpZGUgPSBkaXZpZGU7XG4gICAgbG9kYXNoLmVuZHNXaXRoID0gZW5kc1dpdGg7XG4gICAgbG9kYXNoLmVxID0gZXE7XG4gICAgbG9kYXNoLmVzY2FwZSA9IGVzY2FwZTtcbiAgICBsb2Rhc2guZXNjYXBlUmVnRXhwID0gZXNjYXBlUmVnRXhwO1xuICAgIGxvZGFzaC5ldmVyeSA9IGV2ZXJ5O1xuICAgIGxvZGFzaC5maW5kID0gZmluZDtcbiAgICBsb2Rhc2guZmluZEluZGV4ID0gZmluZEluZGV4O1xuICAgIGxvZGFzaC5maW5kS2V5ID0gZmluZEtleTtcbiAgICBsb2Rhc2guZmluZExhc3QgPSBmaW5kTGFzdDtcbiAgICBsb2Rhc2guZmluZExhc3RJbmRleCA9IGZpbmRMYXN0SW5kZXg7XG4gICAgbG9kYXNoLmZpbmRMYXN0S2V5ID0gZmluZExhc3RLZXk7XG4gICAgbG9kYXNoLmZsb29yID0gZmxvb3I7XG4gICAgbG9kYXNoLmZvckVhY2ggPSBmb3JFYWNoO1xuICAgIGxvZGFzaC5mb3JFYWNoUmlnaHQgPSBmb3JFYWNoUmlnaHQ7XG4gICAgbG9kYXNoLmZvckluID0gZm9ySW47XG4gICAgbG9kYXNoLmZvckluUmlnaHQgPSBmb3JJblJpZ2h0O1xuICAgIGxvZGFzaC5mb3JPd24gPSBmb3JPd247XG4gICAgbG9kYXNoLmZvck93blJpZ2h0ID0gZm9yT3duUmlnaHQ7XG4gICAgbG9kYXNoLmdldCA9IGdldDtcbiAgICBsb2Rhc2guZ3QgPSBndDtcbiAgICBsb2Rhc2guZ3RlID0gZ3RlO1xuICAgIGxvZGFzaC5oYXMgPSBoYXM7XG4gICAgbG9kYXNoLmhhc0luID0gaGFzSW47XG4gICAgbG9kYXNoLmhlYWQgPSBoZWFkO1xuICAgIGxvZGFzaC5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIGxvZGFzaC5pbmNsdWRlcyA9IGluY2x1ZGVzO1xuICAgIGxvZGFzaC5pbmRleE9mID0gaW5kZXhPZjtcbiAgICBsb2Rhc2guaW5SYW5nZSA9IGluUmFuZ2U7XG4gICAgbG9kYXNoLmludm9rZSA9IGludm9rZTtcbiAgICBsb2Rhc2guaXNBcmd1bWVudHMgPSBpc0FyZ3VtZW50cztcbiAgICBsb2Rhc2guaXNBcnJheSA9IGlzQXJyYXk7XG4gICAgbG9kYXNoLmlzQXJyYXlCdWZmZXIgPSBpc0FycmF5QnVmZmVyO1xuICAgIGxvZGFzaC5pc0FycmF5TGlrZSA9IGlzQXJyYXlMaWtlO1xuICAgIGxvZGFzaC5pc0FycmF5TGlrZU9iamVjdCA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuICAgIGxvZGFzaC5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG4gICAgbG9kYXNoLmlzQnVmZmVyID0gaXNCdWZmZXI7XG4gICAgbG9kYXNoLmlzRGF0ZSA9IGlzRGF0ZTtcbiAgICBsb2Rhc2guaXNFbGVtZW50ID0gaXNFbGVtZW50O1xuICAgIGxvZGFzaC5pc0VtcHR5ID0gaXNFbXB0eTtcbiAgICBsb2Rhc2guaXNFcXVhbCA9IGlzRXF1YWw7XG4gICAgbG9kYXNoLmlzRXF1YWxXaXRoID0gaXNFcXVhbFdpdGg7XG4gICAgbG9kYXNoLmlzRXJyb3IgPSBpc0Vycm9yO1xuICAgIGxvZGFzaC5pc0Zpbml0ZSA9IGlzRmluaXRlO1xuICAgIGxvZGFzaC5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjtcbiAgICBsb2Rhc2guaXNJbnRlZ2VyID0gaXNJbnRlZ2VyO1xuICAgIGxvZGFzaC5pc0xlbmd0aCA9IGlzTGVuZ3RoO1xuICAgIGxvZGFzaC5pc01hcCA9IGlzTWFwO1xuICAgIGxvZGFzaC5pc01hdGNoID0gaXNNYXRjaDtcbiAgICBsb2Rhc2guaXNNYXRjaFdpdGggPSBpc01hdGNoV2l0aDtcbiAgICBsb2Rhc2guaXNOYU4gPSBpc05hTjtcbiAgICBsb2Rhc2guaXNOYXRpdmUgPSBpc05hdGl2ZTtcbiAgICBsb2Rhc2guaXNOaWwgPSBpc05pbDtcbiAgICBsb2Rhc2guaXNOdWxsID0gaXNOdWxsO1xuICAgIGxvZGFzaC5pc051bWJlciA9IGlzTnVtYmVyO1xuICAgIGxvZGFzaC5pc09iamVjdCA9IGlzT2JqZWN0O1xuICAgIGxvZGFzaC5pc09iamVjdExpa2UgPSBpc09iamVjdExpa2U7XG4gICAgbG9kYXNoLmlzUGxhaW5PYmplY3QgPSBpc1BsYWluT2JqZWN0O1xuICAgIGxvZGFzaC5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuICAgIGxvZGFzaC5pc1NhZmVJbnRlZ2VyID0gaXNTYWZlSW50ZWdlcjtcbiAgICBsb2Rhc2guaXNTZXQgPSBpc1NldDtcbiAgICBsb2Rhc2guaXNTdHJpbmcgPSBpc1N0cmluZztcbiAgICBsb2Rhc2guaXNTeW1ib2wgPSBpc1N5bWJvbDtcbiAgICBsb2Rhc2guaXNUeXBlZEFycmF5ID0gaXNUeXBlZEFycmF5O1xuICAgIGxvZGFzaC5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkO1xuICAgIGxvZGFzaC5pc1dlYWtNYXAgPSBpc1dlYWtNYXA7XG4gICAgbG9kYXNoLmlzV2Vha1NldCA9IGlzV2Vha1NldDtcbiAgICBsb2Rhc2guam9pbiA9IGpvaW47XG4gICAgbG9kYXNoLmtlYmFiQ2FzZSA9IGtlYmFiQ2FzZTtcbiAgICBsb2Rhc2gubGFzdCA9IGxhc3Q7XG4gICAgbG9kYXNoLmxhc3RJbmRleE9mID0gbGFzdEluZGV4T2Y7XG4gICAgbG9kYXNoLmxvd2VyQ2FzZSA9IGxvd2VyQ2FzZTtcbiAgICBsb2Rhc2gubG93ZXJGaXJzdCA9IGxvd2VyRmlyc3Q7XG4gICAgbG9kYXNoLmx0ID0gbHQ7XG4gICAgbG9kYXNoLmx0ZSA9IGx0ZTtcbiAgICBsb2Rhc2gubWF4ID0gbWF4O1xuICAgIGxvZGFzaC5tYXhCeSA9IG1heEJ5O1xuICAgIGxvZGFzaC5tZWFuID0gbWVhbjtcbiAgICBsb2Rhc2gubWVhbkJ5ID0gbWVhbkJ5O1xuICAgIGxvZGFzaC5taW4gPSBtaW47XG4gICAgbG9kYXNoLm1pbkJ5ID0gbWluQnk7XG4gICAgbG9kYXNoLnN0dWJBcnJheSA9IHN0dWJBcnJheTtcbiAgICBsb2Rhc2guc3R1YkZhbHNlID0gc3R1YkZhbHNlO1xuICAgIGxvZGFzaC5zdHViT2JqZWN0ID0gc3R1Yk9iamVjdDtcbiAgICBsb2Rhc2guc3R1YlN0cmluZyA9IHN0dWJTdHJpbmc7XG4gICAgbG9kYXNoLnN0dWJUcnVlID0gc3R1YlRydWU7XG4gICAgbG9kYXNoLm11bHRpcGx5ID0gbXVsdGlwbHk7XG4gICAgbG9kYXNoLm50aCA9IG50aDtcbiAgICBsb2Rhc2gubm9Db25mbGljdCA9IG5vQ29uZmxpY3Q7XG4gICAgbG9kYXNoLm5vb3AgPSBub29wO1xuICAgIGxvZGFzaC5ub3cgPSBub3c7XG4gICAgbG9kYXNoLnBhZCA9IHBhZDtcbiAgICBsb2Rhc2gucGFkRW5kID0gcGFkRW5kO1xuICAgIGxvZGFzaC5wYWRTdGFydCA9IHBhZFN0YXJ0O1xuICAgIGxvZGFzaC5wYXJzZUludCA9IHBhcnNlSW50O1xuICAgIGxvZGFzaC5yYW5kb20gPSByYW5kb207XG4gICAgbG9kYXNoLnJlZHVjZSA9IHJlZHVjZTtcbiAgICBsb2Rhc2gucmVkdWNlUmlnaHQgPSByZWR1Y2VSaWdodDtcbiAgICBsb2Rhc2gucmVwZWF0ID0gcmVwZWF0O1xuICAgIGxvZGFzaC5yZXBsYWNlID0gcmVwbGFjZTtcbiAgICBsb2Rhc2gucmVzdWx0ID0gcmVzdWx0O1xuICAgIGxvZGFzaC5yb3VuZCA9IHJvdW5kO1xuICAgIGxvZGFzaC5ydW5JbkNvbnRleHQgPSBydW5JbkNvbnRleHQ7XG4gICAgbG9kYXNoLnNhbXBsZSA9IHNhbXBsZTtcbiAgICBsb2Rhc2guc2l6ZSA9IHNpemU7XG4gICAgbG9kYXNoLnNuYWtlQ2FzZSA9IHNuYWtlQ2FzZTtcbiAgICBsb2Rhc2guc29tZSA9IHNvbWU7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4ID0gc29ydGVkSW5kZXg7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4QnkgPSBzb3J0ZWRJbmRleEJ5O1xuICAgIGxvZGFzaC5zb3J0ZWRJbmRleE9mID0gc29ydGVkSW5kZXhPZjtcbiAgICBsb2Rhc2guc29ydGVkTGFzdEluZGV4ID0gc29ydGVkTGFzdEluZGV4O1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXhCeSA9IHNvcnRlZExhc3RJbmRleEJ5O1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXhPZiA9IHNvcnRlZExhc3RJbmRleE9mO1xuICAgIGxvZGFzaC5zdGFydENhc2UgPSBzdGFydENhc2U7XG4gICAgbG9kYXNoLnN0YXJ0c1dpdGggPSBzdGFydHNXaXRoO1xuICAgIGxvZGFzaC5zdWJ0cmFjdCA9IHN1YnRyYWN0O1xuICAgIGxvZGFzaC5zdW0gPSBzdW07XG4gICAgbG9kYXNoLnN1bUJ5ID0gc3VtQnk7XG4gICAgbG9kYXNoLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgbG9kYXNoLnRpbWVzID0gdGltZXM7XG4gICAgbG9kYXNoLnRvRmluaXRlID0gdG9GaW5pdGU7XG4gICAgbG9kYXNoLnRvSW50ZWdlciA9IHRvSW50ZWdlcjtcbiAgICBsb2Rhc2gudG9MZW5ndGggPSB0b0xlbmd0aDtcbiAgICBsb2Rhc2gudG9Mb3dlciA9IHRvTG93ZXI7XG4gICAgbG9kYXNoLnRvTnVtYmVyID0gdG9OdW1iZXI7XG4gICAgbG9kYXNoLnRvU2FmZUludGVnZXIgPSB0b1NhZmVJbnRlZ2VyO1xuICAgIGxvZGFzaC50b1N0cmluZyA9IHRvU3RyaW5nO1xuICAgIGxvZGFzaC50b1VwcGVyID0gdG9VcHBlcjtcbiAgICBsb2Rhc2gudHJpbSA9IHRyaW07XG4gICAgbG9kYXNoLnRyaW1FbmQgPSB0cmltRW5kO1xuICAgIGxvZGFzaC50cmltU3RhcnQgPSB0cmltU3RhcnQ7XG4gICAgbG9kYXNoLnRydW5jYXRlID0gdHJ1bmNhdGU7XG4gICAgbG9kYXNoLnVuZXNjYXBlID0gdW5lc2NhcGU7XG4gICAgbG9kYXNoLnVuaXF1ZUlkID0gdW5pcXVlSWQ7XG4gICAgbG9kYXNoLnVwcGVyQ2FzZSA9IHVwcGVyQ2FzZTtcbiAgICBsb2Rhc2gudXBwZXJGaXJzdCA9IHVwcGVyRmlyc3Q7XG5cbiAgICAvLyBBZGQgYWxpYXNlcy5cbiAgICBsb2Rhc2guZWFjaCA9IGZvckVhY2g7XG4gICAgbG9kYXNoLmVhY2hSaWdodCA9IGZvckVhY2hSaWdodDtcbiAgICBsb2Rhc2guZmlyc3QgPSBoZWFkO1xuXG4gICAgbWl4aW4obG9kYXNoLCAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc291cmNlID0ge307XG4gICAgICBiYXNlRm9yT3duKGxvZGFzaCwgZnVuY3Rpb24oZnVuYywgbWV0aG9kTmFtZSkge1xuICAgICAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLnByb3RvdHlwZSwgbWV0aG9kTmFtZSkpIHtcbiAgICAgICAgICBzb3VyY2VbbWV0aG9kTmFtZV0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfSgpKSwgeyAnY2hhaW4nOiBmYWxzZSB9KTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIFRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgbG9kYXNoLlZFUlNJT04gPSBWRVJTSU9OO1xuXG4gICAgLy8gQXNzaWduIGRlZmF1bHQgcGxhY2Vob2xkZXJzLlxuICAgIGFycmF5RWFjaChbJ2JpbmQnLCAnYmluZEtleScsICdjdXJyeScsICdjdXJyeVJpZ2h0JywgJ3BhcnRpYWwnLCAncGFydGlhbFJpZ2h0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgIGxvZGFzaFttZXRob2ROYW1lXS5wbGFjZWhvbGRlciA9IGxvZGFzaDtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgZm9yIGBfLmRyb3BgIGFuZCBgXy50YWtlYCB2YXJpYW50cy5cbiAgICBhcnJheUVhY2goWydkcm9wJywgJ3Rha2UnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgbiA9IG4gPT09IHVuZGVmaW5lZCA/IDEgOiBuYXRpdmVNYXgodG9JbnRlZ2VyKG4pLCAwKTtcblxuICAgICAgICB2YXIgcmVzdWx0ID0gKHRoaXMuX19maWx0ZXJlZF9fICYmICFpbmRleClcbiAgICAgICAgICA/IG5ldyBMYXp5V3JhcHBlcih0aGlzKVxuICAgICAgICAgIDogdGhpcy5jbG9uZSgpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuX19maWx0ZXJlZF9fKSB7XG4gICAgICAgICAgcmVzdWx0Ll9fdGFrZUNvdW50X18gPSBuYXRpdmVNaW4obiwgcmVzdWx0Ll9fdGFrZUNvdW50X18pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5fX3ZpZXdzX18ucHVzaCh7XG4gICAgICAgICAgICAnc2l6ZSc6IG5hdGl2ZU1pbihuLCBNQVhfQVJSQVlfTEVOR1RIKSxcbiAgICAgICAgICAgICd0eXBlJzogbWV0aG9kTmFtZSArIChyZXN1bHQuX19kaXJfXyA8IDAgPyAnUmlnaHQnIDogJycpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG5cbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lICsgJ1JpZ2h0J10gPSBmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJldmVyc2UoKVttZXRob2ROYW1lXShuKS5yZXZlcnNlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyB0aGF0IGFjY2VwdCBhbiBgaXRlcmF0ZWVgIHZhbHVlLlxuICAgIGFycmF5RWFjaChbJ2ZpbHRlcicsICdtYXAnLCAndGFrZVdoaWxlJ10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgdHlwZSA9IGluZGV4ICsgMSxcbiAgICAgICAgICBpc0ZpbHRlciA9IHR5cGUgPT0gTEFaWV9GSUxURVJfRkxBRyB8fCB0eXBlID09IExBWllfV0hJTEVfRkxBRztcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgICAgcmVzdWx0Ll9faXRlcmF0ZWVzX18ucHVzaCh7XG4gICAgICAgICAgJ2l0ZXJhdGVlJzogZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpLFxuICAgICAgICAgICd0eXBlJzogdHlwZVxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHJlc3VsdC5fX2ZpbHRlcmVkX18gfHwgaXNGaWx0ZXI7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uaGVhZGAgYW5kIGBfLmxhc3RgLlxuICAgIGFycmF5RWFjaChbJ2hlYWQnLCAnbGFzdCddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgdmFyIHRha2VOYW1lID0gJ3Rha2UnICsgKGluZGV4ID8gJ1JpZ2h0JyA6ICcnKTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzW3Rha2VOYW1lXSgxKS52YWx1ZSgpWzBdO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgZm9yIGBfLmluaXRpYWxgIGFuZCBgXy50YWlsYC5cbiAgICBhcnJheUVhY2goWydpbml0aWFsJywgJ3RhaWwnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciBkcm9wTmFtZSA9ICdkcm9wJyArIChpbmRleCA/ICcnIDogJ1JpZ2h0Jyk7XG5cbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fX2ZpbHRlcmVkX18gPyBuZXcgTGF6eVdyYXBwZXIodGhpcykgOiB0aGlzW2Ryb3BOYW1lXSgxKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY29tcGFjdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKGlkZW50aXR5KTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcihwcmVkaWNhdGUpLmhlYWQoKTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmRMYXN0ID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXZlcnNlKCkuZmluZChwcmVkaWNhdGUpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuaW52b2tlTWFwID0gYmFzZVJlc3QoZnVuY3Rpb24ocGF0aCwgYXJncykge1xuICAgICAgaWYgKHR5cGVvZiBwYXRoID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYmFzZUludm9rZSh2YWx1ZSwgcGF0aCwgYXJncyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5yZWplY3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcihuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlKSkpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgICBzdGFydCA9IHRvSW50ZWdlcihzdGFydCk7XG5cbiAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xuICAgICAgaWYgKHJlc3VsdC5fX2ZpbHRlcmVkX18gJiYgKHN0YXJ0ID4gMCB8fCBlbmQgPCAwKSkge1xuICAgICAgICByZXR1cm4gbmV3IExhenlXcmFwcGVyKHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC50YWtlUmlnaHQoLXN0YXJ0KTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnQpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmRyb3Aoc3RhcnQpO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVuZCA9IHRvSW50ZWdlcihlbmQpO1xuICAgICAgICByZXN1bHQgPSBlbmQgPCAwID8gcmVzdWx0LmRyb3BSaWdodCgtZW5kKSA6IHJlc3VsdC50YWtlKGVuZCAtIHN0YXJ0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS50YWtlUmlnaHRXaGlsZSA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZSgpLnRha2VXaGlsZShwcmVkaWNhdGUpLnJldmVyc2UoKTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRha2UoTUFYX0FSUkFZX0xFTkdUSCk7XG4gICAgfTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgdG8gYGxvZGFzaC5wcm90b3R5cGVgLlxuICAgIGJhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgY2hlY2tJdGVyYXRlZSA9IC9eKD86ZmlsdGVyfGZpbmR8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KG1ldGhvZE5hbWUpLFxuICAgICAgICAgIGlzVGFrZXIgPSAvXig/OmhlYWR8bGFzdCkkLy50ZXN0KG1ldGhvZE5hbWUpLFxuICAgICAgICAgIGxvZGFzaEZ1bmMgPSBsb2Rhc2hbaXNUYWtlciA/ICgndGFrZScgKyAobWV0aG9kTmFtZSA9PSAnbGFzdCcgPyAnUmlnaHQnIDogJycpKSA6IG1ldGhvZE5hbWVdLFxuICAgICAgICAgIHJldFVud3JhcHBlZCA9IGlzVGFrZXIgfHwgL15maW5kLy50ZXN0KG1ldGhvZE5hbWUpO1xuXG4gICAgICBpZiAoIWxvZGFzaEZ1bmMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbG9kYXNoLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fLFxuICAgICAgICAgICAgYXJncyA9IGlzVGFrZXIgPyBbMV0gOiBhcmd1bWVudHMsXG4gICAgICAgICAgICBpc0xhenkgPSB2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyLFxuICAgICAgICAgICAgaXRlcmF0ZWUgPSBhcmdzWzBdLFxuICAgICAgICAgICAgdXNlTGF6eSA9IGlzTGF6eSB8fCBpc0FycmF5KHZhbHVlKTtcblxuICAgICAgICB2YXIgaW50ZXJjZXB0b3IgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2hGdW5jLmFwcGx5KGxvZGFzaCwgYXJyYXlQdXNoKFt2YWx1ZV0sIGFyZ3MpKTtcbiAgICAgICAgICByZXR1cm4gKGlzVGFrZXIgJiYgY2hhaW5BbGwpID8gcmVzdWx0WzBdIDogcmVzdWx0O1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh1c2VMYXp5ICYmIGNoZWNrSXRlcmF0ZWUgJiYgdHlwZW9mIGl0ZXJhdGVlID09ICdmdW5jdGlvbicgJiYgaXRlcmF0ZWUubGVuZ3RoICE9IDEpIHtcbiAgICAgICAgICAvLyBBdm9pZCBsYXp5IHVzZSBpZiB0aGUgaXRlcmF0ZWUgaGFzIGEgXCJsZW5ndGhcIiB2YWx1ZSBvdGhlciB0aGFuIGAxYC5cbiAgICAgICAgICBpc0xhenkgPSB1c2VMYXp5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoYWluQWxsID0gdGhpcy5fX2NoYWluX18sXG4gICAgICAgICAgICBpc0h5YnJpZCA9ICEhdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgsXG4gICAgICAgICAgICBpc1Vud3JhcHBlZCA9IHJldFVud3JhcHBlZCAmJiAhY2hhaW5BbGwsXG4gICAgICAgICAgICBvbmx5TGF6eSA9IGlzTGF6eSAmJiAhaXNIeWJyaWQ7XG5cbiAgICAgICAgaWYgKCFyZXRVbndyYXBwZWQgJiYgdXNlTGF6eSkge1xuICAgICAgICAgIHZhbHVlID0gb25seUxhenkgPyB2YWx1ZSA6IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gZnVuYy5hcHBseSh2YWx1ZSwgYXJncyk7XG4gICAgICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fLnB1c2goeyAnZnVuYyc6IHRocnUsICdhcmdzJzogW2ludGVyY2VwdG9yXSwgJ3RoaXNBcmcnOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHJlc3VsdCwgY2hhaW5BbGwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1Vud3JhcHBlZCAmJiBvbmx5TGF6eSkge1xuICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IHRoaXMudGhydShpbnRlcmNlcHRvcik7XG4gICAgICAgIHJldHVybiBpc1Vud3JhcHBlZCA/IChpc1Rha2VyID8gcmVzdWx0LnZhbHVlKClbMF0gOiByZXN1bHQudmFsdWUoKSkgOiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBBcnJheWAgbWV0aG9kcyB0byBgbG9kYXNoLnByb3RvdHlwZWAuXG4gICAgYXJyYXlFYWNoKFsncG9wJywgJ3B1c2gnLCAnc2hpZnQnLCAnc29ydCcsICdzcGxpY2UnLCAndW5zaGlmdCddLCBmdW5jdGlvbihtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgZnVuYyA9IGFycmF5UHJvdG9bbWV0aG9kTmFtZV0sXG4gICAgICAgICAgY2hhaW5OYW1lID0gL14oPzpwdXNofHNvcnR8dW5zaGlmdCkkLy50ZXN0KG1ldGhvZE5hbWUpID8gJ3RhcCcgOiAndGhydScsXG4gICAgICAgICAgcmV0VW53cmFwcGVkID0gL14oPzpwb3B8c2hpZnQpJC8udGVzdChtZXRob2ROYW1lKTtcblxuICAgICAgbG9kYXNoLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgaWYgKHJldFVud3JhcHBlZCAmJiAhdGhpcy5fX2NoYWluX18pIHtcbiAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlKCk7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdLCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1tjaGFpbk5hbWVdKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdLCBhcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gTWFwIG1pbmlmaWVkIG1ldGhvZCBuYW1lcyB0byB0aGVpciByZWFsIG5hbWVzLlxuICAgIGJhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgbG9kYXNoRnVuYyA9IGxvZGFzaFttZXRob2ROYW1lXTtcbiAgICAgIGlmIChsb2Rhc2hGdW5jKSB7XG4gICAgICAgIHZhciBrZXkgPSBsb2Rhc2hGdW5jLm5hbWUgKyAnJztcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlYWxOYW1lcywga2V5KSkge1xuICAgICAgICAgIHJlYWxOYW1lc1trZXldID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcmVhbE5hbWVzW2tleV0ucHVzaCh7ICduYW1lJzogbWV0aG9kTmFtZSwgJ2Z1bmMnOiBsb2Rhc2hGdW5jIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVhbE5hbWVzW2NyZWF0ZUh5YnJpZCh1bmRlZmluZWQsIFdSQVBfQklORF9LRVlfRkxBRykubmFtZV0gPSBbe1xuICAgICAgJ25hbWUnOiAnd3JhcHBlcicsXG4gICAgICAnZnVuYyc6IHVuZGVmaW5lZFxuICAgIH1dO1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYExhenlXcmFwcGVyYC5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY2xvbmUgPSBsYXp5Q2xvbmU7XG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnJldmVyc2UgPSBsYXp5UmV2ZXJzZTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUudmFsdWUgPSBsYXp5VmFsdWU7XG5cbiAgICAvLyBBZGQgY2hhaW4gc2VxdWVuY2UgbWV0aG9kcyB0byB0aGUgYGxvZGFzaGAgd3JhcHBlci5cbiAgICBsb2Rhc2gucHJvdG90eXBlLmF0ID0gd3JhcHBlckF0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUuY2hhaW4gPSB3cmFwcGVyQ2hhaW47XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jb21taXQgPSB3cmFwcGVyQ29tbWl0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUubmV4dCA9IHdyYXBwZXJOZXh0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUucGxhbnQgPSB3cmFwcGVyUGxhbnQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5yZXZlcnNlID0gd3JhcHBlclJldmVyc2U7XG4gICAgbG9kYXNoLnByb3RvdHlwZS50b0pTT04gPSBsb2Rhc2gucHJvdG90eXBlLnZhbHVlT2YgPSBsb2Rhc2gucHJvdG90eXBlLnZhbHVlID0gd3JhcHBlclZhbHVlO1xuXG4gICAgLy8gQWRkIGxhenkgYWxpYXNlcy5cbiAgICBsb2Rhc2gucHJvdG90eXBlLmZpcnN0ID0gbG9kYXNoLnByb3RvdHlwZS5oZWFkO1xuXG4gICAgaWYgKHN5bUl0ZXJhdG9yKSB7XG4gICAgICBsb2Rhc2gucHJvdG90eXBlW3N5bUl0ZXJhdG9yXSA9IHdyYXBwZXJUb0l0ZXJhdG9yO1xuICAgIH1cbiAgICByZXR1cm4gbG9kYXNoO1xuICB9KTtcblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvLyBFeHBvcnQgbG9kYXNoLlxuICB2YXIgXyA9IHJ1bkluQ29udGV4dCgpO1xuXG4gIC8vIFNvbWUgQU1EIGJ1aWxkIG9wdGltaXplcnMsIGxpa2Ugci5qcywgY2hlY2sgZm9yIGNvbmRpdGlvbiBwYXR0ZXJucyBsaWtlOlxuICBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcbiAgICAvLyBFeHBvc2UgTG9kYXNoIG9uIHRoZSBnbG9iYWwgb2JqZWN0IHRvIHByZXZlbnQgZXJyb3JzIHdoZW4gTG9kYXNoIGlzXG4gICAgLy8gbG9hZGVkIGJ5IGEgc2NyaXB0IHRhZyBpbiB0aGUgcHJlc2VuY2Ugb2YgYW4gQU1EIGxvYWRlci5cbiAgICAvLyBTZWUgaHR0cDovL3JlcXVpcmVqcy5vcmcvZG9jcy9lcnJvcnMuaHRtbCNtaXNtYXRjaCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgIC8vIFVzZSBgXy5ub0NvbmZsaWN0YCB0byByZW1vdmUgTG9kYXNoIGZyb20gdGhlIGdsb2JhbCBvYmplY3QuXG4gICAgcm9vdC5fID0gXztcblxuICAgIC8vIERlZmluZSBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlIHNvLCB0aHJvdWdoIHBhdGggbWFwcGluZywgaXQgY2FuIGJlXG4gICAgLy8gcmVmZXJlbmNlZCBhcyB0aGUgXCJ1bmRlcnNjb3JlXCIgbW9kdWxlLlxuICAgIGRlZmluZShmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBfO1xuICAgIH0pO1xuICB9XG4gIC8vIENoZWNrIGZvciBgZXhwb3J0c2AgYWZ0ZXIgYGRlZmluZWAgaW4gY2FzZSBhIGJ1aWxkIG9wdGltaXplciBhZGRzIGl0LlxuICBlbHNlIGlmIChmcmVlTW9kdWxlKSB7XG4gICAgLy8gRXhwb3J0IGZvciBOb2RlLmpzLlxuICAgIChmcmVlTW9kdWxlLmV4cG9ydHMgPSBfKS5fID0gXztcbiAgICAvLyBFeHBvcnQgZm9yIENvbW1vbkpTIHN1cHBvcnQuXG4gICAgZnJlZUV4cG9ydHMuXyA9IF87XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gRXhwb3J0IHRvIHRoZSBnbG9iYWwgb2JqZWN0LlxuICAgIHJvb3QuXyA9IF87XG4gIH1cbn0uY2FsbCh0aGlzKSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVmFsdWUgPSBleHBvcnRzLkFyaXR5ID0gdm9pZCAwO1xuY29uc3QgbG9kYXNoXzEgPSByZXF1aXJlKFwibG9kYXNoXCIpO1xuY2xhc3MgQXJpdHkge1xuICAgIGNvbnN0cnVjdG9yKHJvd3MsIGNvbHVtbnMpIHtcbiAgICAgICAgdGhpcy5pc1JvdyA9ICgpID0+IHRoaXMucm93cyA+IDEgJiYgdGhpcy5jb2xzID09PSAxO1xuICAgICAgICB0aGlzLmlzQ29sdW1uID0gKCkgPT4gdGhpcy5yb3dzID09PSAxICYmIHRoaXMuY29scyA+IDE7XG4gICAgICAgIHRoaXMuaXNDZWxsID0gKCkgPT4gdGhpcy5yb3dzID09PSAxICYmIHRoaXMuY29scyA9PT0gMTtcbiAgICAgICAgdGhpcy5yb3dzID0gcm93cztcbiAgICAgICAgdGhpcy5jb2xzID0gY29sdW1ucztcbiAgICB9XG59XG5leHBvcnRzLkFyaXR5ID0gQXJpdHk7XG5jbGFzcyBWYWx1ZSB7XG4gICAgY29uc3RydWN0b3IodmFsKSB7XG4gICAgICAgIHRoaXMuZ2V0ID0gKHJvdywgY29sdW1uKSA9PiB0aGlzLnZhbFtyb3ddW2NvbHVtbl07XG4gICAgICAgIHRoaXMuZ2V0QXNGbG9hdCA9IChyb3csIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VGbG9hdCh0aGlzLmdldChyb3csIGNvbHVtbikpO1xuICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNlZCkgPyAwIDogcGFyc2VkO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmdldEFzSW50ID0gKHJvdywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUludCh0aGlzLmdldChyb3csIGNvbHVtbikpO1xuICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNlZCkgPyAwIDogcGFyc2VkO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogZ2V0QXJpdHkgcmV0dXJucyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgY29udGFpbmVkIHZhbHVlLCBpbiByb3dzIGFuZCBjb2x1bW5zXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmdldEFyaXR5ID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF4Q29scyA9IHRoaXMudmFsLnJlZHVjZSgobWF4LCBjdXJyZW50Um93KSA9PiBNYXRoLm1heChtYXgsIGN1cnJlbnRSb3cubGVuZ3RoKSwgMCk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFyaXR5KHRoaXMudmFsLmxlbmd0aCwgbWF4Q29scyk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudG9TdHJpbmcgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRBcml0eSgpLmlzQ2VsbCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KDAsIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGBbJHtsb2Rhc2hfMS5mbGF0dGVuKHRoaXMudmFsKVxuICAgICAgICAgICAgICAgIC5tYXAoKHZhbCkgPT4gdmFsLnRyaW0oKSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh2YWwpID0+IHZhbCAhPT0gJycpXG4gICAgICAgICAgICAgICAgLmpvaW4oJywgJyl9XWA7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudmFsID0gdmFsO1xuICAgIH1cbn1cbmV4cG9ydHMuVmFsdWUgPSBWYWx1ZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5BbGdlYnJhaWNPcGVyYXRpb24gPSB2b2lkIDA7XG5jb25zdCBuZXZlcnRocm93XzEgPSByZXF1aXJlKFwiLi4vbmV2ZXJ0aHJvdy9uZXZlcnRocm93XCIpO1xuY29uc3QgYXN0X3V0aWxzXzEgPSByZXF1aXJlKFwiLi9hc3RfdXRpbHNcIik7XG5jb25zdCBjYWxjXzEgPSByZXF1aXJlKFwiLi9jYWxjXCIpO1xuY29uc3QgcmVzdWx0c18xID0gcmVxdWlyZShcIi4vcmVzdWx0c1wiKTtcbmNvbnN0IGxvZGFzaF8xID0gcmVxdWlyZShcImxvZGFzaFwiKTtcbmNsYXNzIEFsZ2VicmFpY09wZXJhdGlvbiB7XG4gICAgY29uc3RydWN0b3IoYXN0LCB0YWJsZSkge1xuICAgICAgICB0aGlzLmdldFZhbHVlID0gKHRhYmxlLCBjZWxsKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMub3BlcmF0b3IpIHtcbiAgICAgICAgICAgICAgICBjYXNlICcrJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKHRhYmxlLCBjZWxsKTtcbiAgICAgICAgICAgICAgICBjYXNlICctJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3VidHJhY3QodGFibGUsIGNlbGwpO1xuICAgICAgICAgICAgICAgIGNhc2UgJyonOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tdWx0aXBseSh0YWJsZSwgY2VsbCk7XG4gICAgICAgICAgICAgICAgY2FzZSAnLyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRpdmlkZSh0YWJsZSwgY2VsbCk7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIoRXJyb3IoJ0ludmFsaWQgYWxnYnJhaWMgb3BlcmF0b3I6ICcgKyB0aGlzLm9wZXJhdG9yKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB3aXRoQ2VsbEFuZFJhbmdlIGFpZHMgaW4gcGVyZm9ybWluZyBhIG51bWVyaWMgb3BlcmF0aW9uIG9uIGNlbGxzIGluIGFcbiAgICAgICAgICogdGFibGUgd2hlcmUgYXQgbGVhc3Qgb25lIG9mIHRoZSB0d28gb3BlcmFuZHMgaXMgYSBzaW5nbGUgY2VsbC4gT3B0aW9uYWxseSxcbiAgICAgICAgICogdGhlIHR3byBzaWRlcyBvZiB0aGUgb3BlcmF0aW9uIGNhbiBiZSBzd2FwcGVkLCBzbyB0aGUgc2luZ2xlIGNlbGwgaXNcbiAgICAgICAgICogYWx3YXlzIG9uIHRoZSByaWdodC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMud2l0aENlbGxBbmRSYW5nZSA9ICh0YWJsZSwgY2VsbCwgbmFtZSwgY2FuSGF2ZVJpZ2h0UmFuZ2UsIGZuKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsZWZ0VmFsdWUgPSB0aGlzLmxlZnRTb3VyY2UuZ2V0VmFsdWUodGFibGUsIGNlbGwpO1xuICAgICAgICAgICAgaWYgKGxlZnRWYWx1ZS5pc0VycigpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIobGVmdFZhbHVlLmVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0VmFsdWUgPSB0aGlzLnJpZ2h0U291cmNlLmdldFZhbHVlKHRhYmxlLCBjZWxsKTtcbiAgICAgICAgICAgIGlmIChyaWdodFZhbHVlLmlzRXJyKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihyaWdodFZhbHVlLmVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxlZnRBcml0eSA9IGxlZnRWYWx1ZS52YWx1ZS5nZXRBcml0eSgpO1xuICAgICAgICAgICAgY29uc3QgcmlnaHRBcml0eSA9IHJpZ2h0VmFsdWUudmFsdWUuZ2V0QXJpdHkoKTtcbiAgICAgICAgICAgIGlmICghcmlnaHRBcml0eS5pc0NlbGwoKSAmJiAhbGVmdEFyaXR5LmlzQ2VsbCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIoRXJyb3IoYEF0IGxlYXN0IG9uZSBvcGVyYW5kIGluIGFsZ2VicmFpYyBcIiR7bmFtZX1cIiBtdXN0IGJlIGEgc2luZ2xlIGNlbGwuYCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyaWdodEFyaXR5LmlzQ2VsbCgpICYmICFjYW5IYXZlUmlnaHRSYW5nZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKEVycm9yKGBSaWdodCBvcGVyYW5kIGluIGFsZ2VicmFpYyBcIiR7bmFtZX1cIiBtdXN0IGJlIGEgc2luZ2xlIGNlbGwuYCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJpZ2h0QXJpdHkuaXNDZWxsKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodENlbGxWYWx1ZSA9IHJpZ2h0VmFsdWUudmFsdWUuZ2V0QXNGbG9hdCgwLCAwKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBsb2Rhc2hfMS5tYXAobGVmdFZhbHVlLnZhbHVlLnZhbCwgKGN1cnJlbnRSb3cpID0+IGxvZGFzaF8xLm1hcChjdXJyZW50Um93LCAoY3VycmVudENlbGwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxlZnRDZWxsVmFsdWUgPSBwYXJzZUZsb2F0KGN1cnJlbnRDZWxsKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTmFOKGxlZnRDZWxsVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0Q2VsbFZhbHVlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm4obGVmdENlbGxWYWx1ZSwgcmlnaHRDZWxsVmFsdWUpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IHJlc3VsdHNfMS5WYWx1ZShyZXN1bHQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxlZnRDZWxsVmFsdWUgPSBsZWZ0VmFsdWUudmFsdWUuZ2V0QXNGbG9hdCgwLCAwKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGxvZGFzaF8xLm1hcChyaWdodFZhbHVlLnZhbHVlLnZhbCwgKGN1cnJlbnRSb3cpID0+IGxvZGFzaF8xLm1hcChjdXJyZW50Um93LCAoY3VycmVudENlbGwpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcmlnaHRDZWxsVmFsdWUgPSBwYXJzZUZsb2F0KGN1cnJlbnRDZWxsKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4obGVmdENlbGxWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRDZWxsVmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZm4obGVmdENlbGxWYWx1ZSwgcmlnaHRDZWxsVmFsdWUpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyByZXN1bHRzXzEuVmFsdWUocmVzdWx0KSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYWRkID0gKHRhYmxlLCBjZWxsKSA9PiB0aGlzLndpdGhDZWxsQW5kUmFuZ2UodGFibGUsIGNlbGwsICdhZGQnLCB0cnVlLCAobGVmdCwgcmlnaHQpID0+IGxlZnQgKyByaWdodCk7XG4gICAgICAgIHRoaXMuc3VidHJhY3QgPSAodGFibGUsIGNlbGwpID0+IHRoaXMud2l0aENlbGxBbmRSYW5nZSh0YWJsZSwgY2VsbCwgJ3N1YnRyYWN0JywgdHJ1ZSwgKGxlZnQsIHJpZ2h0KSA9PiBsZWZ0IC0gcmlnaHQpO1xuICAgICAgICB0aGlzLm11bHRpcGx5ID0gKHRhYmxlLCBjZWxsKSA9PiB0aGlzLndpdGhDZWxsQW5kUmFuZ2UodGFibGUsIGNlbGwsICdtdWx0aXBseScsIHRydWUsIChsZWZ0LCByaWdodCkgPT4gbGVmdCAqIHJpZ2h0KTtcbiAgICAgICAgdGhpcy5kaXZpZGUgPSAodGFibGUsIGNlbGwpID0+IHRoaXMud2l0aENlbGxBbmRSYW5nZSh0YWJsZSwgY2VsbCwgJ2RpdmlkZScsIGZhbHNlLCAobGVmdCwgcmlnaHQpID0+IGxlZnQgLyByaWdodCk7XG4gICAgICAgIGNvbnN0IHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAnYWxnZWJyYWljX29wZXJhdGlvbicpO1xuICAgICAgICBpZiAodHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAzKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGlsZFR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LmNoaWxkcmVuWzFdLCAnYWxnZWJyYWljX29wZXJhdG9yJyk7XG4gICAgICAgIGlmIChjaGlsZFR5cGVFcnIpIHtcbiAgICAgICAgICAgIHRocm93IGNoaWxkVHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZXJhdG9yID0gYXN0LmNoaWxkcmVuWzFdLnRleHQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmxlZnRTb3VyY2UgPSBuZXcgY2FsY18xLlNvdXJjZShhc3QuY2hpbGRyZW5bMF0sIHRhYmxlKTtcbiAgICAgICAgICAgIHRoaXMucmlnaHRTb3VyY2UgPSBuZXcgY2FsY18xLlNvdXJjZShhc3QuY2hpbGRyZW5bMl0sIHRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIFN0aWxsIGluIGEgY29uc3RydWN0b3IsIHNvIG5vdGhpbmcgd2UgY2FuIGRvIGJ1dCB0aHJvdyBhZ2FpblxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLkFsZ2VicmFpY09wZXJhdGlvbiA9IEFsZ2VicmFpY09wZXJhdGlvbjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Db25kaXRpb25hbEZ1bmN0aW9uQ2FsbCA9IHZvaWQgMDtcbmNvbnN0IG5ldmVydGhyb3dfMSA9IHJlcXVpcmUoXCIuLi9uZXZlcnRocm93L25ldmVydGhyb3dcIik7XG5jb25zdCBhc3RfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2FzdF91dGlsc1wiKTtcbmNvbnN0IGNhbGNfMSA9IHJlcXVpcmUoXCIuL2NhbGNcIik7XG5jbGFzcyBDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCB7XG4gICAgY29uc3RydWN0b3IoYXN0LCB0YWJsZSkge1xuICAgICAgICB0aGlzLmdldFZhbHVlID0gKHRhYmxlLCBjZWxsKSA9PiB0aGlzLnByZWRpY2F0ZVxuICAgICAgICAgICAgLmV2YWwodGFibGUsIGNlbGwpXG4gICAgICAgICAgICAuYW5kVGhlbigocHJlZGljYXRlUmVzdWx0KSA9PiBwcmVkaWNhdGVSZXN1bHRcbiAgICAgICAgICAgID8gdGhpcy5sZWZ0U291cmNlLmdldFZhbHVlKHRhYmxlLCBjZWxsKVxuICAgICAgICAgICAgOiB0aGlzLnJpZ2h0U291cmNlLmdldFZhbHVlKHRhYmxlLCBjZWxsKSk7XG4gICAgICAgIGNvbnN0IHR5cGVFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICdjb25kaXRpb25hbF9mdW5jdGlvbl9jYWxsJyk7XG4gICAgICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAzKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5wcmVkaWNhdGUgPSBuZXcgUHJlZGljYXRlKGFzdC5jaGlsZHJlblswXSwgdGFibGUpO1xuICAgICAgICAgICAgdGhpcy5sZWZ0U291cmNlID0gbmV3IGNhbGNfMS5Tb3VyY2UoYXN0LmNoaWxkcmVuWzFdLCB0YWJsZSk7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0U291cmNlID0gbmV3IGNhbGNfMS5Tb3VyY2UoYXN0LmNoaWxkcmVuWzJdLCB0YWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBTdGlsbCBpbiBhIGNvbnN0cnVjdG9yLCBzbyBub3RoaW5nIHdlIGNhbiBkbyBidXQgdGhyb3cgYWdhaW5cbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5Db25kaXRpb25hbEZ1bmN0aW9uQ2FsbCA9IENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsO1xuY2xhc3MgUHJlZGljYXRlIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIHRoaXMuZXZhbCA9ICh0YWJsZSwgY2VsbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGVmdERhdGEgPSB0aGlzLmxlZnRTb3VyY2UuZ2V0VmFsdWUodGFibGUsIGNlbGwpO1xuICAgICAgICAgICAgaWYgKGxlZnREYXRhLmlzRXJyKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihsZWZ0RGF0YS5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByaWdodERhdGEgPSB0aGlzLnJpZ2h0U291cmNlLmdldFZhbHVlKHRhYmxlLCBjZWxsKTtcbiAgICAgICAgICAgIGlmIChyaWdodERhdGEuaXNFcnIoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKHJpZ2h0RGF0YS5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsZWZ0QXJpdHkgPSBsZWZ0RGF0YS52YWx1ZS5nZXRBcml0eSgpO1xuICAgICAgICAgICAgY29uc3QgcmlnaHRBcml0eSA9IHJpZ2h0RGF0YS52YWx1ZS5nZXRBcml0eSgpO1xuICAgICAgICAgICAgaWYgKCFsZWZ0QXJpdHkuaXNDZWxsKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihFcnJvcignQ2FuIG9ubHkgdXNlIGNvbXBhcmlzb24gb3BlcmF0b3Igb24gYSBzaW5nbGUgY2VsbC4gTGVmdCBzaWRlIGlzIG5vdCBhIGNlbGwuJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyaWdodEFyaXR5LmlzQ2VsbCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIoRXJyb3IoJ0NhbiBvbmx5IHVzZSBjb21wYXJpc29uIG9wZXJhdG9yIG9uIGEgc2luZ2xlIGNlbGwuIFJpZ2h0IHNpZGUgaXMgbm90IGEgY2VsbC4nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsZWZ0VmFsID0gbGVmdERhdGEudmFsdWUuZ2V0QXNGbG9hdCgwLCAwKTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0VmFsID0gcmlnaHREYXRhLnZhbHVlLmdldEFzRmxvYXQoMCwgMCk7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMub3BlcmF0b3IpIHtcbiAgICAgICAgICAgICAgICBjYXNlICc+JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhsZWZ0VmFsID4gcmlnaHRWYWwpO1xuICAgICAgICAgICAgICAgIGNhc2UgJz49JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhsZWZ0VmFsID49IHJpZ2h0VmFsKTtcbiAgICAgICAgICAgICAgICBjYXNlICc8JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhsZWZ0VmFsIDwgcmlnaHRWYWwpO1xuICAgICAgICAgICAgICAgIGNhc2UgJzw9JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhsZWZ0VmFsIDw9IHJpZ2h0VmFsKTtcbiAgICAgICAgICAgICAgICBjYXNlICc9PSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobGVmdFZhbCA9PT0gcmlnaHRWYWwpO1xuICAgICAgICAgICAgICAgIGNhc2UgJyE9JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhsZWZ0VmFsICE9PSByaWdodFZhbCk7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIoRXJyb3IoJ0ludmFsaWQgY29uZGl0aW9uYWwgb3BlcmF0b3I6ICcgKyB0aGlzLm9wZXJhdG9yKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHR5cGVFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICdwcmVkaWNhdGUnKTtcbiAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChhc3QsIDMpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoaWxkVHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdC5jaGlsZHJlblsxXSwgJ2NvbmRpdGlvbmFsX29wZXJhdG9yJyk7XG4gICAgICAgIGlmIChjaGlsZFR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgY2hpbGRUeXBlRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcGVyYXRvciA9IGFzdC5jaGlsZHJlblsxXS50ZXh0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5sZWZ0U291cmNlID0gbmV3IGNhbGNfMS5Tb3VyY2UoYXN0LmNoaWxkcmVuWzBdLCB0YWJsZSk7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0U291cmNlID0gbmV3IGNhbGNfMS5Tb3VyY2UoYXN0LmNoaWxkcmVuWzJdLCB0YWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBTdGlsbCBpbiBhIGNvbnN0cnVjdG9yLCBzbyBub3RoaW5nIHdlIGNhbiBkbyBidXQgdGhyb3cgYWdhaW5cbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNvbnN0YW50ID0gdm9pZCAwO1xuY29uc3QgbmV2ZXJ0aHJvd18xID0gcmVxdWlyZShcIi4uL25ldmVydGhyb3cvbmV2ZXJ0aHJvd1wiKTtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY29uc3QgcmVzdWx0c18xID0gcmVxdWlyZShcIi4vcmVzdWx0c1wiKTtcbmNsYXNzIENvbnN0YW50IHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIGNvbnN0IHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAncmVhbCcsICdmbG9hdCcpO1xuICAgICAgICBpZiAodHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gYXN0LnRleHRbMF0gPT09ICctJyA/IC0xIDogMTtcbiAgICAgICAgaWYgKGFzdC50eXBlID09PSAncmVhbCcpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBtdWx0aXBsaWVyICogcGFyc2VJbnQoYXN0LmNoaWxkcmVuWzBdLnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgbXVsdGlwbGllciAqXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQoYXN0LmNoaWxkcmVuWzBdLnRleHQgKyAnLicgKyBhc3QuY2hpbGRyZW5bMV0udGV4dCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0VmFsdWUodGFibGUsIGN1cnJlbnRDZWxsKSB7XG4gICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IHJlc3VsdHNfMS5WYWx1ZShbW3RoaXMudmFsdWUudG9TdHJpbmcoKV1dKSk7XG4gICAgfVxufVxuZXhwb3J0cy5Db25zdGFudCA9IENvbnN0YW50O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkFic29sdXRlQ29sdW1uID0gZXhwb3J0cy5Db2x1bW4gPSBleHBvcnRzLm5ld0NvbHVtbiA9IHZvaWQgMDtcbmNvbnN0IG5ldmVydGhyb3dfMSA9IHJlcXVpcmUoXCIuLi9uZXZlcnRocm93L25ldmVydGhyb3dcIik7XG5jb25zdCBhc3RfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2FzdF91dGlsc1wiKTtcbmNvbnN0IHJlc3VsdHNfMSA9IHJlcXVpcmUoXCIuL3Jlc3VsdHNcIik7XG5jb25zdCBuZXdDb2x1bW4gPSAoYXN0LCB0YWJsZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIHN3aXRjaCAoYXN0LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3JlbGF0aXZlX2NvbHVtbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgUmVsYXRpdmVDb2x1bW4oYXN0LCB0YWJsZSkpO1xuICAgICAgICAgICAgY2FzZSAnYWJzb2x1dGVfY29sdW1uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBBYnNvbHV0ZUNvbHVtbihhc3QsIHRhYmxlKSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKG5ldyBFcnJvcihgRm9ybXVsYSBlbGVtZW50ICcke2FzdC50ZXh0fScgaXMgYSAke2FzdC50eXBlfSBidXQgZXhwZWN0ZWQgYW4gYCArXG4gICAgICAgICAgICAgICAgICAgICdyZWxhdHZlX2NvbHVtbiBvciBhYnNvbHV0ZV9jb2x1bW4gaW4gdGhpcyBwb3NpdGlvbi4nKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKGVycm9yKTtcbiAgICB9XG59O1xuZXhwb3J0cy5uZXdDb2x1bW4gPSBuZXdDb2x1bW47XG5jbGFzcyBDb2x1bW4ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmdldFZhbHVlID0gKHRhYmxlLCBjdXJyZW50Q2VsbCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3QgdmFsID0gKChfYSA9IHRhYmxlLmdldENlbGxBdChjdXJyZW50Q2VsbC5yb3csIHRoaXMuZ2V0SW5kZXgoY3VycmVudENlbGwpKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvVGV4dCgpKSB8fFxuICAgICAgICAgICAgICAgICcnO1xuICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgcmVzdWx0c18xLlZhbHVlKFtbdmFsXV0pKTtcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnRzLkNvbHVtbiA9IENvbHVtbjtcbmNsYXNzIFJlbGF0aXZlQ29sdW1uIGV4dGVuZHMgQ29sdW1uIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZ2V0SW5kZXggPSAoY3VycmVudENlbGwpID0+IGN1cnJlbnRDZWxsLmNvbHVtbiArIHRoaXMub2Zmc2V0O1xuICAgICAgICB0aGlzLmdldEFic29sdXRlSW5kZXggPSAoKSA9PiBuZXZlcnRocm93XzEuZXJyKGFzdF91dGlsc18xLmVyclJlbGF0aXZlUmVmZXJlbmNlSW5kZXgpO1xuICAgICAgICBjb25zdCB0eXBlRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAncmVsYXRpdmVfY29sdW1uJyk7XG4gICAgICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAxKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gYXN0LnRleHRbMV0gPT09ICctJyA/IC0xIDogMTtcbiAgICAgICAgdGhpcy5vZmZzZXQgPSBtdWx0aXBsaWVyICogcGFyc2VJbnQoYXN0LmNoaWxkcmVuWzBdLnRleHQpO1xuICAgIH1cbn1cbmNsYXNzIEFic29sdXRlQ29sdW1uIGV4dGVuZHMgQ29sdW1uIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZ2V0SW5kZXggPSAoY3VycmVudENlbGwpID0+IHRoaXMuaW5kZXg7XG4gICAgICAgIHRoaXMuZ2V0QWJzb2x1dGVJbmRleCA9ICgpID0+IG5ldmVydGhyb3dfMS5vayh0aGlzLmluZGV4KTtcbiAgICAgICAgbGV0IGluZGV4ID0gLTE7XG4gICAgICAgIGxldCBzeW1ib2wgPSAnJztcbiAgICAgICAgc3dpdGNoIChhc3QuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgc3ltYm9sID0gYXN0LnRleHRbMV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdC5jaGlsZHJlblswXSwgJ2ludCcpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV2ZXJ0aHJvd18xLmVycih0eXBlRXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbmRleCA9IHBhcnNlSW50KGFzdC5jaGlsZHJlblswXS50ZXh0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3JtdWxhIGVsZW1lbnQgJyR7YXN0LnRleHR9JyBpcyBhICR7YXN0LnR5cGV9IGJ1dCBleHBlY3RlZCBgICtcbiAgICAgICAgICAgICAgICAgICAgJ2EgXFwnYWJzb2x1dGVfY29sdW1uXFwnIGluIHRoaXMgcG9zaXRpb24uJyk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChzeW1ib2wpIHtcbiAgICAgICAgICAgIGNhc2UgJyc6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICc8JzpcbiAgICAgICAgICAgICAgICBpbmRleCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICc+JzpcbiAgICAgICAgICAgICAgICBpbmRleCA9IHRhYmxlLmdldFdpZHRoKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjb2x1bW4gc3ltYm9sICcke3N5bWJvbH0nYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBhc3RfdXRpbHNfMS5lcnJJbmRleDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbmRleCA9IGluZGV4IC0gMTsgLy8gLTEgZm9yIGJlaW5nIHplcm8gaW5kZXhlZFxuICAgIH1cbn1cbmV4cG9ydHMuQWJzb2x1dGVDb2x1bW4gPSBBYnNvbHV0ZUNvbHVtbjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5BYnNvbHV0ZVJvdyA9IGV4cG9ydHMuUm93ID0gZXhwb3J0cy5uZXdSb3cgPSB2b2lkIDA7XG5jb25zdCBuZXZlcnRocm93XzEgPSByZXF1aXJlKFwiLi4vbmV2ZXJ0aHJvdy9uZXZlcnRocm93XCIpO1xuY29uc3QgYXN0X3V0aWxzXzEgPSByZXF1aXJlKFwiLi9hc3RfdXRpbHNcIik7XG5jb25zdCByZXN1bHRzXzEgPSByZXF1aXJlKFwiLi9yZXN1bHRzXCIpO1xuY29uc3QgbmV3Um93ID0gKGFzdCwgdGFibGUpID0+IHtcbiAgICB0cnkge1xuICAgICAgICBzd2l0Y2ggKGFzdC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdyZWxhdGl2ZV9yb3cnOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IFJlbGF0aXZlUm93KGFzdCwgdGFibGUpKTtcbiAgICAgICAgICAgIGNhc2UgJ2Fic29sdXRlX3Jvdyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgQWJzb2x1dGVSb3coYXN0LCB0YWJsZSkpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihuZXcgRXJyb3IoYEZvcm11bGEgZWxlbWVudCAnJHthc3QudGV4dH0nIGlzIGEgJHthc3QudHlwZX0gYnV0IGV4cGVjdGVkIGFuIGAgK1xuICAgICAgICAgICAgICAgICAgICAncmVsYXR2ZV9yb3cgb3IgYWJzb2x1dGVfcm93ICBpbiB0aGlzIHBvc2l0aW9uLicpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIoZXJyb3IpO1xuICAgIH1cbn07XG5leHBvcnRzLm5ld1JvdyA9IG5ld1JvdztcbmNsYXNzIFJvdyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZ2V0VmFsdWUgPSAodGFibGUsIGN1cnJlbnRDZWxsKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSAoKF9hID0gdGFibGVcbiAgICAgICAgICAgICAgICAuZ2V0Q2VsbEF0KHRoaXMuZ2V0SW5kZXgoY3VycmVudENlbGwpLCBjdXJyZW50Q2VsbC5jb2x1bW4pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG9UZXh0KCkpIHx8ICcnO1xuICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgcmVzdWx0c18xLlZhbHVlKFtbdmFsXV0pKTtcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnRzLlJvdyA9IFJvdztcbmNsYXNzIFJlbGF0aXZlUm93IGV4dGVuZHMgUm93IHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZ2V0SW5kZXggPSAoY3VycmVudENlbGwpID0+IGN1cnJlbnRDZWxsLnJvdyArIHRoaXMub2Zmc2V0O1xuICAgICAgICB0aGlzLmdldEFic29sdXRlSW5kZXggPSAoKSA9PiBuZXZlcnRocm93XzEuZXJyKGFzdF91dGlsc18xLmVyclJlbGF0aXZlUmVmZXJlbmNlSW5kZXgpO1xuICAgICAgICBjb25zdCB0eXBlRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAncmVsYXRpdmVfcm93Jyk7XG4gICAgICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAxKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gYXN0LnRleHRbMV0gPT09ICctJyA/IC0xIDogMTtcbiAgICAgICAgdGhpcy5vZmZzZXQgPSBtdWx0aXBsaWVyICogcGFyc2VJbnQoYXN0LmNoaWxkcmVuWzBdLnRleHQpO1xuICAgIH1cbn1cbmNsYXNzIEFic29sdXRlUm93IGV4dGVuZHMgUm93IHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZ2V0SW5kZXggPSAoY3VycmVudENlbGwpID0+IHRoaXMuaW5kZXg7XG4gICAgICAgIHRoaXMuZ2V0QWJzb2x1dGVJbmRleCA9ICgpID0+IG5ldmVydGhyb3dfMS5vayh0aGlzLmluZGV4KTtcbiAgICAgICAgbGV0IGluZGV4ID0gLTE7XG4gICAgICAgIGxldCBzeW1ib2wgPSAnJztcbiAgICAgICAgc3dpdGNoIChhc3QuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgc3ltYm9sID0gYXN0LnRleHRbMV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdC5jaGlsZHJlblswXSwgJ2ludCcpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV2ZXJ0aHJvd18xLmVycih0eXBlRXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbmRleCA9IHBhcnNlSW50KGFzdC5jaGlsZHJlblswXS50ZXh0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3JtdWxhIGVsZW1lbnQgJyR7YXN0LnRleHR9JyBpcyBhICR7YXN0LnR5cGV9IGJ1dCBleHBlY3RlZCBgICtcbiAgICAgICAgICAgICAgICAgICAgJ2EgXFwnYWJzb2x1dGVfcm93XFwnIGluIHRoaXMgcG9zaXRpb24uJyk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChzeW1ib2wpIHtcbiAgICAgICAgICAgIGNhc2UgJyc6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICc8JzpcbiAgICAgICAgICAgICAgICBpbmRleCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICc+JzpcbiAgICAgICAgICAgICAgICBpbmRleCA9IHRhYmxlLmdldEhlaWdodCgpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0knOlxuICAgICAgICAgICAgICAgIGluZGV4ID0gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJvdyBzeW1ib2wgJyR7c3ltYm9sfSdgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IGFzdF91dGlsc18xLmVyckluZGV4MDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMuaW5kZXggPSAwOyAvLyBhY2NvdW50IGZvciBiZWluZyB6ZXJvIGluZGV4ZWRcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5kZXggPSBpbmRleDsgLy8gLTEgZm9yIGJlaW5nIHplcm8gaW5kZXhlZCwgYnV0IHBsdXMgMSB0byBza2lwIGhlYWRlclxuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5BYnNvbHV0ZVJvdyA9IEFic29sdXRlUm93O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlJlZmVyZW5jZSA9IHZvaWQgMDtcbmNvbnN0IG5ldmVydGhyb3dfMSA9IHJlcXVpcmUoXCIuLi9uZXZlcnRocm93L25ldmVydGhyb3dcIik7XG5jb25zdCBhc3RfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2FzdF91dGlsc1wiKTtcbmNvbnN0IGNvbHVtbl8xID0gcmVxdWlyZShcIi4vY29sdW1uXCIpO1xuY29uc3QgcmVzdWx0c18xID0gcmVxdWlyZShcIi4vcmVzdWx0c1wiKTtcbmNvbnN0IHJvd18xID0gcmVxdWlyZShcIi4vcm93XCIpO1xuY2xhc3MgUmVmZXJlbmNlIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIHRoaXMuZ2V0VmFsdWUgPSAodGFibGUsIGN1cnJlbnRDZWxsKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCBjZWxsID0ge1xuICAgICAgICAgICAgICAgIHJvdzogdGhpcy5yb3cgPyB0aGlzLnJvdy5nZXRJbmRleChjdXJyZW50Q2VsbCkgOiBjdXJyZW50Q2VsbC5yb3csXG4gICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtblxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuY29sdW1uLmdldEluZGV4KGN1cnJlbnRDZWxsKVxuICAgICAgICAgICAgICAgICAgICA6IGN1cnJlbnRDZWxsLmNvbHVtbixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCB2YWwgPSAoKF9hID0gdGFibGUuZ2V0Q2VsbEF0KGNlbGwucm93LCBjZWxsLmNvbHVtbikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1RleHQoKSkgfHwgJyc7XG4gICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyByZXN1bHRzXzEuVmFsdWUoW1t2YWxdXSkpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0eXBlRXJyID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdCwgJ3NvdXJjZV9yZWZlcmVuY2UnLCAnYWJzb2x1dGVfcmVmZXJlbmNlJywgJ3JlbGF0aXZlX3JlZmVyZW5jZScpO1xuICAgICAgICBpZiAodHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFzdC5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBhc3QuY2hpbGRyZW5baV07XG4gICAgICAgICAgICBzd2l0Y2ggKGNoaWxkLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdyZWxhdGl2ZV9yb3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Fic29sdXRlX3Jvdyc6XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJvdyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignUmVmZXJlbmNlIG1heSBvbmx5IGhhdmUgYXQgbW9zdCAxIHJvdywgbW9yZSB0aGFuIDEgcHJvdmlkZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjcmVhdGVkUm93ID0gcm93XzEubmV3Um93KGNoaWxkLCB0YWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjcmVhdGVkUm93LmlzRXJyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjcmVhdGVkUm93LmVycm9yID09PSBhc3RfdXRpbHNfMS5lcnJJbmRleDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgYWN0dWFsbHkgYW4gZXJyb3IsIGp1c3QgaW5kaWNhdGVzIHVzaW5nIGN1cnJlbnQgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGNyZWF0ZWRSb3cuZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3cgPSBjcmVhdGVkUm93LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdyZWxhdGl2ZV9jb2x1bW4nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Fic29sdXRlX2NvbHVtbic6XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignUmVmZXJlbmNlIG1heSBvbmx5IGhhdmUgYXQgbW9zdCAxIGNvbHVtbiwgbW9yZSB0aGFuIDEgcHJvdmlkZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjcmVhdGVkQ29sID0gY29sdW1uXzEubmV3Q29sdW1uKGNoaWxkLCB0YWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjcmVhdGVkQ29sLmlzRXJyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjcmVhdGVkQ29sLmVycm9yID09PSBhc3RfdXRpbHNfMS5lcnJJbmRleDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgYWN0dWFsbHkgYW4gZXJyb3IsIGp1c3QgaW5kaWNhdGVzIHVzaW5nIGN1cnJlbnQgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGNyZWF0ZWRDb2wuZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW4gPSBjcmVhdGVkQ29sLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydHMuUmVmZXJlbmNlID0gUmVmZXJlbmNlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlJhbmdlID0gdm9pZCAwO1xuY29uc3QgbmV2ZXJ0aHJvd18xID0gcmVxdWlyZShcIi4uL25ldmVydGhyb3cvbmV2ZXJ0aHJvd1wiKTtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY29uc3QgcmVmZXJlbmNlXzEgPSByZXF1aXJlKFwiLi9yZWZlcmVuY2VcIik7XG5jb25zdCByZXN1bHRzXzEgPSByZXF1aXJlKFwiLi9yZXN1bHRzXCIpO1xuY29uc3QgbG9kYXNoXzEgPSByZXF1aXJlKFwibG9kYXNoXCIpO1xuY2xhc3MgUmFuZ2Uge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgdGhpcy5nZXRWYWx1ZSA9ICh0YWJsZSwgY3VycmVudENlbGwpID0+IHtcbiAgICAgICAgICAgIC8vIGlmIG5vIHN0YXJ0IGNvbHVtbiBpcyBwcm92aWRlZCwgY29weSBpdCBmcm9tIHRoZSBjdXJyZW50Q2VsbFxuICAgICAgICAgICAgY29uc3Qgc3RhcnRDb2x1bW4gPSB0aGlzLnN0YXJ0Q29sdW1uXG4gICAgICAgICAgICAgICAgPyB0aGlzLnN0YXJ0Q29sdW1uLmdldEluZGV4KGN1cnJlbnRDZWxsKVxuICAgICAgICAgICAgICAgIDogY3VycmVudENlbGwuY29sdW1uO1xuICAgICAgICAgICAgLy8gaWYgdGhlIGNvbHVtbiBpcyBwcm92aWRlZCBpbiB0aGUgZmlyc3Qgc2V0LCBidXQgbm90IHRoZSBzZWNvbmQsIGNvcHkgaXRcbiAgICAgICAgICAgIGNvbnN0IGVuZENvbHVtbiA9IHRoaXMuZW5kQ29sdW1uXG4gICAgICAgICAgICAgICAgPyB0aGlzLmVuZENvbHVtbi5nZXRJbmRleChjdXJyZW50Q2VsbClcbiAgICAgICAgICAgICAgICA6IHN0YXJ0Q29sdW1uO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRSb3cgPSB0aGlzLnN0YXJ0Um93XG4gICAgICAgICAgICAgICAgPyB0aGlzLnN0YXJ0Um93LmdldEluZGV4KGN1cnJlbnRDZWxsKVxuICAgICAgICAgICAgICAgIDogY3VycmVudENlbGwucm93O1xuICAgICAgICAgICAgY29uc3QgZW5kUm93ID0gdGhpcy5lbmRSb3dcbiAgICAgICAgICAgICAgICA/IHRoaXMuZW5kUm93LmdldEluZGV4KGN1cnJlbnRDZWxsKVxuICAgICAgICAgICAgICAgIDogY3VycmVudENlbGwucm93O1xuICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgcmVzdWx0c18xLlZhbHVlKGxvZGFzaF8xLm1hcChsb2Rhc2hfMS5yYW5nZShzdGFydFJvdywgZW5kUm93ICsgMSksIChyb3cpID0+IGxvZGFzaF8xLm1hcChsb2Rhc2hfMS5yYW5nZShzdGFydENvbHVtbiwgZW5kQ29sdW1uICsgMSksIChjb2wpID0+IHsgdmFyIF9hOyByZXR1cm4gKChfYSA9IHRhYmxlLmdldENlbGxBdChyb3csIGNvbCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1RleHQoKSkgfHwgJyc7IH0pKSkpO1xuICAgICAgICB9O1xuICAgICAgICAvLyBUaGVyZSBuZWVkcyB0byBiZSBhIGRpc3RpbmN0aW9uIGJldHdlZW4gcmFuZ2VzIGZvciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uXG4gICAgICAgIC8vIGEgZGVzdGluYXRpb24gcmFuZ2UgZG9lcyBub3QgYWxsb3cgcmVsYXRpdmUgcmVmZXJlbmNlcywgd2hpY2ggd291bGRcbiAgICAgICAgLy8gc29sdmUgdGhpcyBpc3N1ZSB3aXRoIGdldHRpbmcgdGhlIGluZGV4LlxuICAgICAgICB0aGlzLmFzQ2VsbHMgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RhcnRDb2x1bW4gfHwgIXRoaXMuc3RhcnRSb3cgfHwgIXRoaXMuZW5kUm93KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIobmV3IEVycm9yKCdBIHJhbmdlIHVzZWQgYXMgYSBkZXNpbnRhdGlvbiBtdXN0IGRlZmluZSByb3dzIGFuZCBjZWxscycpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIHRoZSBzZWNvbmQgcmVmZXJlbmNlIGluIHRoZSByYW5nZSBkb2VzIG5vdCBpbmNsdWRlIGEgY29sdW1uLFxuICAgICAgICAgICAgLy8gdXNlIHRoZSBzdGFydCBjb2x1bW4uXG4gICAgICAgICAgICBsZXQgZW5kQ29sdW1uID0gdGhpcy5lbmRDb2x1bW47XG4gICAgICAgICAgICBpZiAoIWVuZENvbHVtbikge1xuICAgICAgICAgICAgICAgIGVuZENvbHVtbiA9IHRoaXMuc3RhcnRDb2x1bW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzdGFydFJvd0luZGV4ID0gdGhpcy5zdGFydFJvdy5nZXRBYnNvbHV0ZUluZGV4KCk7XG4gICAgICAgICAgICBjb25zdCBlbmRSb3dJbmRleCA9IHRoaXMuZW5kUm93LmdldEFic29sdXRlSW5kZXgoKTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0Q29sdW1uSW5kZXggPSB0aGlzLnN0YXJ0Q29sdW1uLmdldEFic29sdXRlSW5kZXgoKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZENvbHVtbkluZGV4ID0gZW5kQ29sdW1uLmdldEFic29sdXRlSW5kZXgoKTtcbiAgICAgICAgICAgIGlmIChzdGFydFJvd0luZGV4LmlzRXJyKCkgfHxcbiAgICAgICAgICAgICAgICBlbmRSb3dJbmRleC5pc0VycigpIHx8XG4gICAgICAgICAgICAgICAgc3RhcnRDb2x1bW5JbmRleC5pc0VycigpIHx8XG4gICAgICAgICAgICAgICAgZW5kQ29sdW1uSW5kZXguaXNFcnIoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKG5ldyBFcnJvcignQSByZWxhdGl2ZSByYW5nZSBjYW4gbm90IGJlIHVzZWQgaW4gYSBmb3JtdWxhIGRlc3RpbmF0aW9uJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbWluUm93ID0gTWF0aC5taW4oc3RhcnRSb3dJbmRleC52YWx1ZSwgZW5kUm93SW5kZXgudmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgbWF4Um93ID0gTWF0aC5tYXgoc3RhcnRSb3dJbmRleC52YWx1ZSwgZW5kUm93SW5kZXgudmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgbWluQ29sdW1uID0gTWF0aC5taW4oc3RhcnRDb2x1bW5JbmRleC52YWx1ZSwgZW5kQ29sdW1uSW5kZXgudmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgbWF4Q29sdW1uID0gTWF0aC5tYXgoc3RhcnRDb2x1bW5JbmRleC52YWx1ZSwgZW5kQ29sdW1uSW5kZXgudmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhsb2Rhc2hfMS5mbGF0TWFwKGxvZGFzaF8xLnJhbmdlKG1pblJvdywgbWF4Um93ICsgMSksIChyb3dOdW0pID0+IGxvZGFzaF8xLnJhbmdlKG1pbkNvbHVtbiwgbWF4Q29sdW1uICsgMSkubWFwKChjb2xOdW0pID0+ICh7IHJvdzogcm93TnVtLCBjb2x1bW46IGNvbE51bSB9KSkpKTtcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAncmFuZ2UnKTtcbiAgICAgICAgaWYgKHR5cGVFcnIpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChhc3QsIDIpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0Q2hpbGQgPSBhc3QuY2hpbGRyZW5bMF07XG4gICAgICAgIGNvbnN0IGVuZENoaWxkID0gYXN0LmNoaWxkcmVuWzFdO1xuICAgICAgICB0eXBlRXJyID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKHN0YXJ0Q2hpbGQsICdzb3VyY2VfcmVmZXJlbmNlJyk7XG4gICAgICAgIGlmICh0eXBlRXJyKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyO1xuICAgICAgICB9XG4gICAgICAgIHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoZW5kQ2hpbGQsICdzb3VyY2VfcmVmZXJlbmNlJyk7XG4gICAgICAgIGlmICh0eXBlRXJyKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyO1xuICAgICAgICB9XG4gICAgICAgIGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChzdGFydENoaWxkLCAxKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoZW5kQ2hpbGQsIDEpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IHJlZmVyZW5jZV8xLlJlZmVyZW5jZShzdGFydENoaWxkLmNoaWxkcmVuWzBdLCB0YWJsZSk7XG4gICAgICAgIGNvbnN0IGVuZCA9IG5ldyByZWZlcmVuY2VfMS5SZWZlcmVuY2UoZW5kQ2hpbGQuY2hpbGRyZW5bMF0sIHRhYmxlKTtcbiAgICAgICAgaWYgKChzdGFydC5yb3cgJiYgIWVuZC5yb3cpIHx8IChlbmQucm93ICYmICFzdGFydC5yb3cpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JhbmdlIG11c3QgdXNlIHJlZmVyZW5jZXMgb2YgdGhlIHNhbWUga2luZCcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE11c3QgcHJvdmlkZSBhdCBsZWFzdCBhIHJvdyBvciBhIGNvbHVtbiwgYnV0IGlmIHRoZSBmaXJzdCB2YWx1ZSBoYXMgYVxuICAgICAgICAvLyBjb2x1bW4gYnV0IHRoZSBzZWNvbmQgZG9lcyBub3QsIHRoZW4gY29weSB0aGUgZmlyc3QgY29sIHRvIHNlY29uZC5cbiAgICAgICAgaWYgKCFzdGFydC5yb3cgJiYgIXN0YXJ0LmNvbHVtbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coc3RhcnQpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSYW5nZSBtdXN0IGhhdmUgYSByb3cgb3IgYSBjb2x1bW4gZGVmaW5lZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydC5yb3cpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRSb3cgPSBzdGFydC5yb3c7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0LmNvbHVtbikge1xuICAgICAgICAgICAgdGhpcy5zdGFydENvbHVtbiA9IHN0YXJ0LmNvbHVtbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kLnJvdykge1xuICAgICAgICAgICAgdGhpcy5lbmRSb3cgPSBlbmQucm93O1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmQuY29sdW1uKSB7XG4gICAgICAgICAgICB0aGlzLmVuZENvbHVtbiA9IGVuZC5jb2x1bW47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVuZENvbHVtbiA9IHN0YXJ0LmNvbHVtbjtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydHMuUmFuZ2UgPSBSYW5nZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5SYW5nZURlc3RpbmF0aW9uID0gZXhwb3J0cy5DZWxsRGVzdGluYXRpb24gPSBleHBvcnRzLkNvbHVtbkRlc3RpbmF0aW9uID0gZXhwb3J0cy5Sb3dEZXN0aW5hdGlvbiA9IGV4cG9ydHMubmV3RGVzdGluYXRpb24gPSB2b2lkIDA7XG5jb25zdCBuZXZlcnRocm93XzEgPSByZXF1aXJlKFwiLi4vbmV2ZXJ0aHJvdy9uZXZlcnRocm93XCIpO1xuY29uc3QgYXN0X3V0aWxzXzEgPSByZXF1aXJlKFwiLi9hc3RfdXRpbHNcIik7XG5jb25zdCBjb2x1bW5fMSA9IHJlcXVpcmUoXCIuL2NvbHVtblwiKTtcbmNvbnN0IHJhbmdlXzEgPSByZXF1aXJlKFwiLi9yYW5nZVwiKTtcbmNvbnN0IHJvd18xID0gcmVxdWlyZShcIi4vcm93XCIpO1xuY29uc3QgbG9kYXNoXzEgPSByZXF1aXJlKFwibG9kYXNoXCIpO1xuY29uc3QgbmV3RGVzdGluYXRpb24gPSAoYXN0LCB0YWJsZSwgZm9ybWF0dGVyKSA9PiB7XG4gICAgY29uc3QgdHlwZUVyciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICdkZXN0aW5hdGlvbicpO1xuICAgIGlmICh0eXBlRXJyKSB7XG4gICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKHR5cGVFcnIpO1xuICAgIH1cbiAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAxKTtcbiAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIobGVuZ3RoRXJyb3IpO1xuICAgIH1cbiAgICBjb25zdCBjaGlsZCA9IGFzdC5jaGlsZHJlblswXTtcbiAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBSYW5nZURlc3RpbmF0aW9uKGNoaWxkLCB0YWJsZSwgZm9ybWF0dGVyKSk7XG4gICAgfVxuICAgIC8vIG11c3QgYmUgZWl0aGVyIGFuIGFic29sdXRlX3JlZmVyZW5jZVxuICAgIHRyeSB7XG4gICAgICAgIHN3aXRjaCAoY2hpbGQuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgQ2VsbERlc3RpbmF0aW9uKGNoaWxkLCB0YWJsZSwgZm9ybWF0dGVyKSk7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgY29uc3QgaW5uZXJDaGlsZCA9IGNoaWxkLmNoaWxkcmVuWzBdO1xuICAgICAgICAgICAgICAgIGlmIChpbm5lckNoaWxkLnR5cGUgPT09ICdhYnNvbHV0ZV9yb3cnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IFJvd0Rlc3RpbmF0aW9uKGNoaWxkLCB0YWJsZSwgZm9ybWF0dGVyKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlubmVyQ2hpbGQudHlwZSA9PT0gJ2Fic29sdXRlX2NvbHVtbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgQ29sdW1uRGVzdGluYXRpb24oY2hpbGQsIHRhYmxlLCBmb3JtYXR0ZXIpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKG5ldyBFcnJvcignVW5leHBlY3RlZCBkZXN0aW5hdGlvbiB0eXBlICcgKyBjaGlsZC50eXBlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciA9PT0gYXN0X3V0aWxzXzEuZXJySW5kZXgwKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihuZXcgRXJyb3IoJ0luZGV4IDAgbWF5IG5vdCBiZSB1c2VkIGluIGEgZGVzdGluYXRpb24nKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIoZXJyb3IpO1xuICAgIH1cbn07XG5leHBvcnRzLm5ld0Rlc3RpbmF0aW9uID0gbmV3RGVzdGluYXRpb247XG5jbGFzcyBSb3dEZXN0aW5hdGlvbiB7XG4gICAgY29uc3RydWN0b3IoYXN0LCB0YWJsZSwgZm9ybWF0dGVyKSB7XG4gICAgICAgIHRoaXMubWVyZ2UgPSAoc291cmNlLCB0YWJsZSkgPT4ge1xuICAgICAgICAgICAgLy8gZm9yIGNlbGwgaW4gcm93Li4uXG4gICAgICAgICAgICBjb25zdCBjZWxscyA9IGxvZGFzaF8xLnJhbmdlKDAsIHRhYmxlLmdldFdpZHRoKCkpLm1hcCgoY29sdW1uTnVtKSA9PiAoeyByb3c6IHRoaXMucm93LmluZGV4LCBjb2x1bW46IGNvbHVtbk51bSB9KSk7XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VGb3JDZWxscyhzb3VyY2UsIHRhYmxlLCBjZWxscywgdGhpcy5mb3JtYXR0ZXIpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZvcm1hdHRlciA9IGZvcm1hdHRlcjtcbiAgICAgICAgY29uc3QgdHlwZUVyciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICdhYnNvbHV0ZV9yZWZlcmVuY2UnKTtcbiAgICAgICAgaWYgKHR5cGVFcnIpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGFzdCwgMSk7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2hpbGQgPSBhc3QuY2hpbGRyZW5bMF07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnJvdyA9IG5ldyByb3dfMS5BYnNvbHV0ZVJvdyhjaGlsZCwgdGFibGUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gSW4gYSBjb25zdHJ1Y3Rvciwgc28gd2UgbXVzdCB0aHJvd1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLlJvd0Rlc3RpbmF0aW9uID0gUm93RGVzdGluYXRpb247XG5jbGFzcyBDb2x1bW5EZXN0aW5hdGlvbiB7XG4gICAgY29uc3RydWN0b3IoYXN0LCB0YWJsZSwgZm9ybWF0dGVyKSB7XG4gICAgICAgIHRoaXMubWVyZ2UgPSAoc291cmNlLCB0YWJsZSkgPT4ge1xuICAgICAgICAgICAgLy8gZm9yIGNlbGwgaW4gY29sdW1uIChleGNsdWRpbmcgaGVhZGVyKS4uLlxuICAgICAgICAgICAgY29uc3QgY2VsbHMgPSBsb2Rhc2hfMS5yYW5nZSgyLCB0YWJsZS5nZXRIZWlnaHQoKSkubWFwKChyb3dOdW0pID0+ICh7IHJvdzogcm93TnVtLCBjb2x1bW46IHRoaXMuY29sdW1uLmluZGV4IH0pKTtcbiAgICAgICAgICAgIHJldHVybiBtZXJnZUZvckNlbGxzKHNvdXJjZSwgdGFibGUsIGNlbGxzLCB0aGlzLmZvcm1hdHRlcik7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZm9ybWF0dGVyID0gZm9ybWF0dGVyO1xuICAgICAgICBjb25zdCB0eXBlRXJyID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdCwgJ2Fic29sdXRlX3JlZmVyZW5jZScpO1xuICAgICAgICBpZiAodHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAxKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGlsZCA9IGFzdC5jaGlsZHJlblswXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uID0gbmV3IGNvbHVtbl8xLkFic29sdXRlQ29sdW1uKGNoaWxkLCB0YWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBJbiBhIGNvbnN0cnVjdG9yLCBzbyB3ZSBtdXN0IHRocm93XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydHMuQ29sdW1uRGVzdGluYXRpb24gPSBDb2x1bW5EZXN0aW5hdGlvbjtcbmNsYXNzIENlbGxEZXN0aW5hdGlvbiB7XG4gICAgY29uc3RydWN0b3IoYXN0LCB0YWJsZSwgZm9ybWF0dGVyKSB7XG4gICAgICAgIHRoaXMubWVyZ2UgPSAoc291cmNlLCB0YWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VsbCA9IHsgcm93OiB0aGlzLnJvdy5pbmRleCwgY29sdW1uOiB0aGlzLmNvbHVtbi5pbmRleCB9O1xuICAgICAgICAgICAgcmV0dXJuIG1lcmdlRm9yQ2VsbHMoc291cmNlLCB0YWJsZSwgW2NlbGxdLCB0aGlzLmZvcm1hdHRlcik7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZm9ybWF0dGVyID0gZm9ybWF0dGVyO1xuICAgICAgICBjb25zdCB0eXBlRXJyID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdCwgJ2Fic29sdXRlX3JlZmVyZW5jZScpO1xuICAgICAgICBpZiAodHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBIGNlbGwgbmVlZHMgdG8gaGF2ZSB0d28gY2hpbGRyZW4sIGEgcm93IGFuZCBhIGNvbHVtblxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAyKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByb3dDaGlsZCA9IGFzdC5jaGlsZHJlblswXTtcbiAgICAgICAgY29uc3QgY29sQ2hpbGQgPSBhc3QuY2hpbGRyZW5bMV07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnJvdyA9IG5ldyByb3dfMS5BYnNvbHV0ZVJvdyhyb3dDaGlsZCwgdGFibGUpO1xuICAgICAgICAgICAgdGhpcy5jb2x1bW4gPSBuZXcgY29sdW1uXzEuQWJzb2x1dGVDb2x1bW4oY29sQ2hpbGQsIHRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIEluIGEgY29uc3RydWN0b3IsIHNvIHdlIG11c3QgdGhyb3dcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5DZWxsRGVzdGluYXRpb24gPSBDZWxsRGVzdGluYXRpb247XG5jbGFzcyBSYW5nZURlc3RpbmF0aW9uIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlLCBmb3JtYXR0ZXIpIHtcbiAgICAgICAgdGhpcy5tZXJnZSA9IChzb3VyY2UsIHRhYmxlKSA9PiB0aGlzLnJhbmdlXG4gICAgICAgICAgICAuYXNDZWxscygpXG4gICAgICAgICAgICAuYW5kVGhlbigoY2VsbHMpID0+IG1lcmdlRm9yQ2VsbHMoc291cmNlLCB0YWJsZSwgY2VsbHMsIHRoaXMuZm9ybWF0dGVyKSk7XG4gICAgICAgIHRoaXMuZm9ybWF0dGVyID0gZm9ybWF0dGVyO1xuICAgICAgICBjb25zdCB0eXBlRXJyID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdCwgJ3JhbmdlJyk7XG4gICAgICAgIGlmICh0eXBlRXJyKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChhc3QsIDIpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGFzdC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgbGV0IGNoaWxkVHlwZUVyciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShjaGlsZCwgJ3NvdXJjZV9yZWZlcmVuY2UnKTtcbiAgICAgICAgICAgIGlmIChjaGlsZFR5cGVFcnIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBjaGlsZFR5cGVFcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjaGlsZExlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChjaGlsZCwgMSk7XG4gICAgICAgICAgICBpZiAoY2hpbGRMZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgICAgIHRocm93IGNoaWxkTGVuZ3RoRXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaGlsZFR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoY2hpbGQuY2hpbGRyZW5bMF0sICdhYnNvbHV0ZV9yZWZlcmVuY2UnKTtcbiAgICAgICAgICAgIGlmIChjaGlsZFR5cGVFcnIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBjaGlsZFR5cGVFcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJhbmdlID0gbmV3IHJhbmdlXzEuUmFuZ2UoYXN0LCB0YWJsZSk7XG4gICAgfVxufVxuZXhwb3J0cy5SYW5nZURlc3RpbmF0aW9uID0gUmFuZ2VEZXN0aW5hdGlvbjtcbmNvbnN0IG1lcmdlRm9yQ2VsbHMgPSAoc291cmNlLCB0YWJsZSwgY2VsbHMsIGZvcm1hdHRlcikgPT4gY2VsbHMucmVkdWNlKChjdXJyZW50VGFibGUsIGN1cnJlbnRDZWxsKSA9PiBjdXJyZW50VGFibGUuYW5kVGhlbigodCkgPT4gc291cmNlXG4gICAgLmdldFZhbHVlKHQsIGN1cnJlbnRDZWxsKVxuICAgIC5hbmRUaGVuKCh2YWwpID0+IG5ldmVydGhyb3dfMS5vayh2YWwudG9TdHJpbmcoKSkpXG4gICAgLmFuZFRoZW4oKHZhbCkgPT4gbmV2ZXJ0aHJvd18xLm9rKHZhbC50cmltKCkgPT09ICcnID8gJzAnIDogdmFsKSlcbiAgICAuYW5kVGhlbigodmFsKSA9PiBuZXZlcnRocm93XzEub2sodC5zZXRDZWxsQXQoY3VycmVudENlbGwucm93LCBjdXJyZW50Q2VsbC5jb2x1bW4sIGZvcm1hdHRlci5mb3JtYXQodmFsKSkpKSksIG5ldmVydGhyb3dfMS5vayh0YWJsZSkpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkRpc3BsYXlEaXJlY3RpdmUgPSBleHBvcnRzLkRlZmF1bHRGb3JtYXR0ZXIgPSB2b2lkIDA7XG5jb25zdCBhc3RfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2FzdF91dGlsc1wiKTtcbmNsYXNzIERlZmF1bHRGb3JtYXR0ZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmZvcm1hdCA9IChudW0pID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbnVtID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVtLnRvU3RyaW5nKCk7XG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0cy5EZWZhdWx0Rm9ybWF0dGVyID0gRGVmYXVsdEZvcm1hdHRlcjtcbmNsYXNzIERpc3BsYXlEaXJlY3RpdmUge1xuICAgIGNvbnN0cnVjdG9yKGFzdCkge1xuICAgICAgICB0aGlzLmZvcm1hdCA9IChudW0pID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbnVtID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZE51bSA9IHBhcnNlRmxvYXQobnVtKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VkTnVtLnRvRml4ZWQodGhpcy5kZWNpbWFsTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudW0udG9GaXhlZCh0aGlzLmRlY2ltYWxMZW5ndGgpO1xuICAgICAgICB9O1xuICAgICAgICBsZXQgdHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdCwgJ2Rpc3BsYXlfZGlyZWN0aXZlJyk7XG4gICAgICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGFzdCwgMSk7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlzcGxheURpcmVjdGl2ZU9wdGlvbiA9IGFzdC5jaGlsZHJlblswXTtcbiAgICAgICAgdHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGRpc3BsYXlEaXJlY3RpdmVPcHRpb24sICdkaXNwbGF5X2RpcmVjdGl2ZV9vcHRpb24nKTtcbiAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChkaXNwbGF5RGlyZWN0aXZlT3B0aW9uLCAxKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtYXR0aW5nRGlyZWN0aXZlID0gZGlzcGxheURpcmVjdGl2ZU9wdGlvbi5jaGlsZHJlblswXTtcbiAgICAgICAgdHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGZvcm1hdHRpbmdEaXJlY3RpdmUsICdmb3JtYXR0aW5nX2RpcmVjdGl2ZScpO1xuICAgICAgICBpZiAodHlwZUVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGZvcm1hdHRpbmdEaXJlY3RpdmUsIDEpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1hdHRpbmdEaXJlY3RpdmVMZW5ndGggPSBmb3JtYXR0aW5nRGlyZWN0aXZlLmNoaWxkcmVuWzBdO1xuICAgICAgICB0eXBlRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoZm9ybWF0dGluZ0RpcmVjdGl2ZUxlbmd0aCwgJ2ludCcpO1xuICAgICAgICBpZiAodHlwZUVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZWNpbWFsTGVuZ3RoID0gcGFyc2VJbnQoZm9ybWF0dGluZ0RpcmVjdGl2ZUxlbmd0aC50ZXh0KTtcbiAgICB9XG59XG5leHBvcnRzLkRpc3BsYXlEaXJlY3RpdmUgPSBEaXNwbGF5RGlyZWN0aXZlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlNpbmdsZVBhcmFtRnVuY3Rpb25DYWxsID0gdm9pZCAwO1xuY29uc3QgbmV2ZXJ0aHJvd18xID0gcmVxdWlyZShcIi4uL25ldmVydGhyb3cvbmV2ZXJ0aHJvd1wiKTtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY29uc3QgY2FsY18xID0gcmVxdWlyZShcIi4vY2FsY1wiKTtcbmNvbnN0IHJlc3VsdHNfMSA9IHJlcXVpcmUoXCIuL3Jlc3VsdHNcIik7XG5jbGFzcyBTaW5nbGVQYXJhbUZ1bmN0aW9uQ2FsbCB7XG4gICAgY29uc3RydWN0b3IoYXN0LCB0YWJsZSkge1xuICAgICAgICB0aGlzLmdldFZhbHVlID0gKHRhYmxlLCBjZWxsKSA9PiB0aGlzLnBhcmFtLmdldFZhbHVlKHRhYmxlLCBjZWxsKS5hbmRUaGVuKChzb3VyY2VEYXRhKSA9PiBcbiAgICAgICAgLy8gVGhlIG9wZXJhdGlvbiBmdW5jdGlvbnMgZG8gbm90IHRocm93IGVycm9ycyBiZWNhdXNlIGRhdGEgYXJpdHkgaGFzXG4gICAgICAgIC8vIGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQuXG4gICAgICAgIG5ldmVydGhyb3dfMS5vayh0aGlzLm9wKHNvdXJjZURhdGEpKSk7XG4gICAgICAgIGNvbnN0IHR5cGVFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICdzaW5nbGVfcGFyYW1fZnVuY3Rpb25fY2FsbCcpO1xuICAgICAgICBpZiAodHlwZUVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGFzdCwgMik7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2hpbGRUeXBlRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LmNoaWxkcmVuWzBdLCAnc2luZ2xlX3BhcmFtX2Z1bmN0aW9uJyk7XG4gICAgICAgIGlmIChjaGlsZFR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgY2hpbGRUeXBlRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZnVuY3Rpb25OYW1lID0gYXN0LmNoaWxkcmVuWzBdLnRleHQ7XG4gICAgICAgIHN3aXRjaCAoZnVuY3Rpb25OYW1lKSB7XG4gICAgICAgICAgICBjYXNlICdzdW0nOlxuICAgICAgICAgICAgICAgIHRoaXMub3AgPSBzdW07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtZWFuJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9wID0gbWVhbjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1Vua25vd24gc2luZ2xlIHBhcmFtIGZ1bmN0aW9uIGNhbGw6ICcgKyBmdW5jdGlvbk5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFyYW0gPSBuZXcgY2FsY18xLlNvdXJjZShhc3QuY2hpbGRyZW5bMV0sIHRhYmxlKTtcbiAgICB9XG59XG5leHBvcnRzLlNpbmdsZVBhcmFtRnVuY3Rpb25DYWxsID0gU2luZ2xlUGFyYW1GdW5jdGlvbkNhbGw7XG4vKipcbiAqIFN1bSBhbGwgdGhlIGNlbGxzIGluIHRoZSBpbnB1dCB2YWx1ZSwgcHJvZHVjaW5nIGEgc2luZ2xlIGNlbGwgb3V0cHV0LlxuICovXG5jb25zdCBzdW0gPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCB0b3RhbCA9IHZhbHVlLnZhbC5yZWR1Y2UoKHJ1bm5pbmdUb3RhbCwgY3VycmVudFJvdykgPT4gY3VycmVudFJvdy5yZWR1Y2UoKHJvd1RvdGFsLCBjdXJyZW50Q2VsbCkgPT4ge1xuICAgICAgICBsZXQgY3VycmVudENlbGxWYWx1ZSA9IHBhcnNlRmxvYXQoY3VycmVudENlbGwpO1xuICAgICAgICBpZiAoaXNOYU4oY3VycmVudENlbGxWYWx1ZSkpIHtcbiAgICAgICAgICAgIGN1cnJlbnRDZWxsVmFsdWUgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb3dUb3RhbCArIGN1cnJlbnRDZWxsVmFsdWU7XG4gICAgfSwgcnVubmluZ1RvdGFsKSwgMCk7XG4gICAgcmV0dXJuIG5ldyByZXN1bHRzXzEuVmFsdWUoW1t0b3RhbC50b1N0cmluZygpXV0pO1xufTtcbi8qKlxuICogTWVhbiBvZiBhbGwgdGhlIGNlbGxzIGluIHRoZSBpbnB1dCB2YWx1ZSwgcHJvZHVjaW5nIGEgc2luZ2xlIGNlbGwgb3V0cHV0LlxuICovXG5jb25zdCBtZWFuID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgeyB0b3RhbCwgY291bnQgfSA9IHZhbHVlLnZhbC5yZWR1Y2UoKHsgdG90YWw6IHJ1bm5pbmdUb3RhbDEsIGNvdW50OiBjdXJyZW50Q291bnQxIH0sIGN1cnJlbnRSb3cpID0+IGN1cnJlbnRSb3cucmVkdWNlKCh7IHRvdGFsOiBydW5uaW5nVG90YWwyLCBjb3VudDogY3VycmVudENvdW50MiB9LCBjdXJyZW50Q2VsbCkgPT4gKHtcbiAgICAgICAgdG90YWw6IHJ1bm5pbmdUb3RhbDIgKyArY3VycmVudENlbGwsXG4gICAgICAgIGNvdW50OiBjdXJyZW50Q291bnQyICsgMSxcbiAgICB9KSwgeyB0b3RhbDogcnVubmluZ1RvdGFsMSwgY291bnQ6IGN1cnJlbnRDb3VudDEgfSksIHsgdG90YWw6IDAsIGNvdW50OiAwIH0pO1xuICAgIHJldHVybiBuZXcgcmVzdWx0c18xLlZhbHVlKFtbKHRvdGFsIC8gY291bnQpLnRvU3RyaW5nKCldXSk7XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlRva2VuRXJyb3IgPSB2b2lkIDA7XG5jbGFzcyBUb2tlbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2UsIHRva2VuKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgICAgIGlmICh0b2tlbiAmJiB0b2tlbi5lcnJvcnMpXG4gICAgICAgICAgICB0b2tlbi5lcnJvcnMucHVzaCh0aGlzKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgdGhpcztcbiAgICB9XG4gICAgaW5zcGVjdCgpIHtcbiAgICAgICAgcmV0dXJuICdTeW50YXhFcnJvcjogJyArIHRoaXMubWVzc2FnZTtcbiAgICB9XG59XG5leHBvcnRzLlRva2VuRXJyb3IgPSBUb2tlbkVycm9yO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VG9rZW5FcnJvci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8vIGh0dHBzOi8vd3d3Lmljcy51Y2kuZWR1L35wYXR0aXMvSUNTLTMzL2xlY3R1cmVzL2VibmYucGRmXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlBhcnNlciA9IGV4cG9ydHMuZmluZFJ1bGVCeU5hbWUgPSBleHBvcnRzLnBhcnNlUnVsZU5hbWUgPSBleHBvcnRzLmVzY2FwZVJlZ0V4cCA9IGV4cG9ydHMucmVhZFRva2VuID0gdm9pZCAwO1xuY29uc3QgVVBQRVJfU05BS0VfUkUgPSAvXltBLVowLTlfXSskLztcbmNvbnN0IGRlY29yYXRpb25SRSA9IC8oXFw/fFxcK3xcXCopJC87XG5jb25zdCBwcmVEZWNvcmF0aW9uUkUgPSAvXihAfCZ8ISkvO1xuY29uc3QgV1NfUlVMRSA9ICdXUyc7XG5jb25zdCBUb2tlbkVycm9yXzEgPSByZXF1aXJlKFwiLi9Ub2tlbkVycm9yXCIpO1xuZnVuY3Rpb24gcmVhZFRva2VuKHR4dCwgZXhwcikge1xuICAgIGxldCByZXN1bHQgPSBleHByLmV4ZWModHh0KTtcbiAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5pbmRleCA9PSAwKSB7XG4gICAgICAgIGlmIChyZXN1bHRbMF0ubGVuZ3RoID09IDAgJiYgZXhwci5zb3VyY2UubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgICAgICAgIHRleHQ6IHJlc3VsdFswXSxcbiAgICAgICAgICAgIHJlc3Q6IHR4dC5zdWJzdHIocmVzdWx0WzBdLmxlbmd0aCksXG4gICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgIGVuZDogcmVzdWx0WzBdLmxlbmd0aCAtIDEsXG4gICAgICAgICAgICBmdWxsVGV4dDogcmVzdWx0WzBdLFxuICAgICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgIHBhcmVudDogbnVsbFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmV4cG9ydHMucmVhZFRva2VuID0gcmVhZFRva2VuO1xuZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1xcLVxcW1xcXVxcL1xce1xcfVxcKFxcKVxcKlxcK1xcP1xcLlxcXFxcXF5cXCRcXHxdL2csICdcXFxcJCYnKTtcbn1cbmV4cG9ydHMuZXNjYXBlUmVnRXhwID0gZXNjYXBlUmVnRXhwO1xuZnVuY3Rpb24gZml4UmVzdCh0b2tlbikge1xuICAgIHRva2VuLnJlc3QgPSAnJztcbiAgICB0b2tlbi5jaGlsZHJlbiAmJiB0b2tlbi5jaGlsZHJlbi5mb3JFYWNoKGMgPT4gZml4UmVzdChjKSk7XG59XG5mdW5jdGlvbiBmaXhQb3NpdGlvbnModG9rZW4sIHN0YXJ0KSB7XG4gICAgdG9rZW4uc3RhcnQgKz0gc3RhcnQ7XG4gICAgdG9rZW4uZW5kICs9IHN0YXJ0O1xuICAgIHRva2VuLmNoaWxkcmVuICYmIHRva2VuLmNoaWxkcmVuLmZvckVhY2goYyA9PiBmaXhQb3NpdGlvbnMoYywgdG9rZW4uc3RhcnQpKTtcbn1cbmZ1bmN0aW9uIGFncmVnYXRlRXJyb3JzKGVycm9ycywgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4uZXJyb3JzICYmIHRva2VuLmVycm9ycy5sZW5ndGgpXG4gICAgICAgIHRva2VuLmVycm9ycy5mb3JFYWNoKGVyciA9PiBlcnJvcnMucHVzaChlcnIpKTtcbiAgICB0b2tlbi5jaGlsZHJlbiAmJiB0b2tlbi5jaGlsZHJlbi5mb3JFYWNoKHRvayA9PiBhZ3JlZ2F0ZUVycm9ycyhlcnJvcnMsIHRvaykpO1xufVxuZnVuY3Rpb24gcGFyc2VSdWxlTmFtZShuYW1lKSB7XG4gICAgbGV0IHBvc3REZWNvcmF0aW9uID0gZGVjb3JhdGlvblJFLmV4ZWMobmFtZSk7XG4gICAgbGV0IHByZURlY29yYXRpb24gPSBwcmVEZWNvcmF0aW9uUkUuZXhlYyhuYW1lKTtcbiAgICBsZXQgcG9zdERlY29yYXRpb25UZXh0ID0gKHBvc3REZWNvcmF0aW9uICYmIHBvc3REZWNvcmF0aW9uWzBdKSB8fCAnJztcbiAgICBsZXQgcHJlRGVjb3JhdGlvblRleHQgPSAocHJlRGVjb3JhdGlvbiAmJiBwcmVEZWNvcmF0aW9uWzBdKSB8fCAnJztcbiAgICBsZXQgb3V0ID0ge1xuICAgICAgICByYXc6IG5hbWUsXG4gICAgICAgIG5hbWU6IG5hbWUucmVwbGFjZShkZWNvcmF0aW9uUkUsICcnKS5yZXBsYWNlKHByZURlY29yYXRpb25SRSwgJycpLFxuICAgICAgICBpc09wdGlvbmFsOiBwb3N0RGVjb3JhdGlvblRleHQgPT0gJz8nIHx8IHBvc3REZWNvcmF0aW9uVGV4dCA9PSAnKicsXG4gICAgICAgIGFsbG93UmVwZXRpdGlvbjogcG9zdERlY29yYXRpb25UZXh0ID09ICcrJyB8fCBwb3N0RGVjb3JhdGlvblRleHQgPT0gJyonLFxuICAgICAgICBhdExlYXN0T25lOiBwb3N0RGVjb3JhdGlvblRleHQgPT0gJysnLFxuICAgICAgICBsb29rdXBQb3NpdGl2ZTogcHJlRGVjb3JhdGlvblRleHQgPT0gJyYnLFxuICAgICAgICBsb29rdXBOZWdhdGl2ZTogcHJlRGVjb3JhdGlvblRleHQgPT0gJyEnLFxuICAgICAgICBwaW5uZWQ6IHByZURlY29yYXRpb25UZXh0ID09ICdAJyxcbiAgICAgICAgbG9va3VwOiBmYWxzZSxcbiAgICAgICAgaXNMaXRlcmFsOiBmYWxzZVxuICAgIH07XG4gICAgb3V0LmlzTGl0ZXJhbCA9IG91dC5uYW1lWzBdID09IFwiJ1wiIHx8IG91dC5uYW1lWzBdID09ICdcIic7XG4gICAgb3V0Lmxvb2t1cCA9IG91dC5sb29rdXBOZWdhdGl2ZSB8fCBvdXQubG9va3VwUG9zaXRpdmU7XG4gICAgcmV0dXJuIG91dDtcbn1cbmV4cG9ydHMucGFyc2VSdWxlTmFtZSA9IHBhcnNlUnVsZU5hbWU7XG5mdW5jdGlvbiBmaW5kUnVsZUJ5TmFtZShuYW1lLCBwYXJzZXIpIHtcbiAgICBsZXQgcGFyc2VkID0gcGFyc2VSdWxlTmFtZShuYW1lKTtcbiAgICByZXR1cm4gcGFyc2VyLmNhY2hlZFJ1bGVzW3BhcnNlZC5uYW1lXSB8fCBudWxsO1xufVxuZXhwb3J0cy5maW5kUnVsZUJ5TmFtZSA9IGZpbmRSdWxlQnlOYW1lO1xuLy8vIFJlbW92ZXMgYWxsIHRoZSBub2RlcyBzdGFydGluZyB3aXRoICdSVUxFXydcbmZ1bmN0aW9uIHN0cmlwUnVsZXModG9rZW4sIHJlKSB7XG4gICAgaWYgKHRva2VuLmNoaWxkcmVuKSB7XG4gICAgICAgIGxldCBsb2NhbFJ1bGVzID0gdG9rZW4uY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlICYmIHJlLnRlc3QoeC50eXBlKSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9jYWxSdWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGluZGV4T25DaGlsZHJlbiA9IHRva2VuLmNoaWxkcmVuLmluZGV4T2YobG9jYWxSdWxlc1tpXSk7XG4gICAgICAgICAgICBpZiAoaW5kZXhPbkNoaWxkcmVuICE9IC0xKSB7XG4gICAgICAgICAgICAgICAgdG9rZW4uY2hpbGRyZW4uc3BsaWNlKGluZGV4T25DaGlsZHJlbiwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdG9rZW4uY2hpbGRyZW4uZm9yRWFjaChjID0+IHN0cmlwUnVsZXMoYywgcmUpKTtcbiAgICB9XG59XG5jb25zdCBpZ25vcmVNaXNzaW5nUnVsZXMgPSBbJ0VPRiddO1xuY2xhc3MgUGFyc2VyIHtcbiAgICBjb25zdHJ1Y3RvcihncmFtbWFyUnVsZXMsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5ncmFtbWFyUnVsZXMgPSBncmFtbWFyUnVsZXM7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuY2FjaGVkUnVsZXMgPSB7fTtcbiAgICAgICAgdGhpcy5kZWJ1ZyA9IG9wdGlvbnMgPyBvcHRpb25zLmRlYnVnID09PSB0cnVlIDogZmFsc2U7XG4gICAgICAgIGxldCBlcnJvcnMgPSBbXTtcbiAgICAgICAgbGV0IG5lZWRlZFJ1bGVzID0gW107XG4gICAgICAgIGdyYW1tYXJSdWxlcy5mb3JFYWNoKHJ1bGUgPT4ge1xuICAgICAgICAgICAgbGV0IHBhcnNlZE5hbWUgPSBwYXJzZVJ1bGVOYW1lKHJ1bGUubmFtZSk7XG4gICAgICAgICAgICBpZiAocGFyc2VkTmFtZS5uYW1lIGluIHRoaXMuY2FjaGVkUnVsZXMpIHtcbiAgICAgICAgICAgICAgICBlcnJvcnMucHVzaCgnRHVwbGljYXRlZCBydWxlICcgKyBwYXJzZWROYW1lLm5hbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVkUnVsZXNbcGFyc2VkTmFtZS5uYW1lXSA9IHJ1bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXJ1bGUuYm5mIHx8ICFydWxlLmJuZi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IgPSAnTWlzc2luZyBydWxlIGNvbnRlbnQsIHJ1bGU6ICcgKyBydWxlLm5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9ycy5pbmRleE9mKGVycm9yKSA9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcnVsZS5ibmYuZm9yRWFjaChvcHRpb25zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnNlZCA9IHBhcnNlUnVsZU5hbWUob3B0aW9uc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VkLm5hbWUgPT0gcnVsZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yID0gJ0xlZnQgcmVjdXJzaW9uIGlzIG5vdCBhbGxvd2VkLCBydWxlOiAnICsgcnVsZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcnMuaW5kZXhPZihlcnJvcikgPT0gLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBwYXJzZVJ1bGVOYW1lKG9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuYW1lLmlzTGl0ZXJhbCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkZWRSdWxlcy5pbmRleE9mKG5hbWUubmFtZSkgPT0gLTEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlTWlzc2luZ1J1bGVzLmluZGV4T2YobmFtZS5uYW1lKSA9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZGVkUnVsZXMucHVzaChuYW1lLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChXU19SVUxFID09IHJ1bGUubmFtZSlcbiAgICAgICAgICAgICAgICBydWxlLmltcGxpY2l0V3MgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChydWxlLmltcGxpY2l0V3MpIHtcbiAgICAgICAgICAgICAgICBpZiAobmVlZGVkUnVsZXMuaW5kZXhPZihXU19SVUxFKSA9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgbmVlZGVkUnVsZXMucHVzaChXU19SVUxFKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLnJlY292ZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAobmVlZGVkUnVsZXMuaW5kZXhPZihydWxlLnJlY292ZXIpID09IC0xKVxuICAgICAgICAgICAgICAgICAgICBuZWVkZWRSdWxlcy5wdXNoKHJ1bGUucmVjb3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBuZWVkZWRSdWxlcy5mb3JFYWNoKHJ1bGVOYW1lID0+IHtcbiAgICAgICAgICAgIGlmICghKHJ1bGVOYW1lIGluIHRoaXMuY2FjaGVkUnVsZXMpKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goJ01pc3NpbmcgcnVsZSAnICsgcnVsZU5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gICAgZ2V0QVNUKHR4dCwgdGFyZ2V0KSB7XG4gICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICB0YXJnZXQgPSB0aGlzLmdyYW1tYXJSdWxlcy5maWx0ZXIoeCA9PiAheC5mcmFnbWVudCAmJiB4Lm5hbWUuaW5kZXhPZignJScpICE9IDApWzBdLm5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMucGFyc2UodHh0LCB0YXJnZXQpO1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICBhZ3JlZ2F0ZUVycm9ycyhyZXN1bHQuZXJyb3JzLCByZXN1bHQpO1xuICAgICAgICAgICAgZml4UG9zaXRpb25zKHJlc3VsdCwgMCk7XG4gICAgICAgICAgICAvLyBSRU1PVkUgQUxMIFRIRSBUQUdTIE1BVENISU5HIC9eJS9cbiAgICAgICAgICAgIHN0cmlwUnVsZXMocmVzdWx0LCAvXiUvKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zIHx8ICF0aGlzLm9wdGlvbnMua2VlcFVwcGVyUnVsZXMpXG4gICAgICAgICAgICAgICAgc3RyaXBSdWxlcyhyZXN1bHQsIFVQUEVSX1NOQUtFX1JFKTtcbiAgICAgICAgICAgIGxldCByZXN0ID0gcmVzdWx0LnJlc3Q7XG4gICAgICAgICAgICBpZiAocmVzdCkge1xuICAgICAgICAgICAgICAgIG5ldyBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcignVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQ6IFxcbicgKyByZXN0LCByZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZml4UmVzdChyZXN1bHQpO1xuICAgICAgICAgICAgcmVzdWx0LnJlc3QgPSByZXN0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGVtaXRTb3VyY2UoKSB7XG4gICAgICAgIHJldHVybiAnQ0FOTk9UIEVNSVQgU09VUkNFIEZST00gQkFTRSBQYXJzZXInO1xuICAgIH1cbiAgICBwYXJzZSh0eHQsIHRhcmdldCwgcmVjdXJzaW9uID0gMCkge1xuICAgICAgICBsZXQgb3V0ID0gbnVsbDtcbiAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVJ1bGVOYW1lKHRhcmdldCk7XG4gICAgICAgIGxldCBleHByO1xuICAgICAgICBsZXQgcHJpbnRhYmxlID0gdGhpcy5kZWJ1ZyAmJiAvKiFpc0xpdGVyYWwgJiovICFVUFBFUl9TTkFLRV9SRS50ZXN0KHR5cGUubmFtZSk7XG4gICAgICAgIHByaW50YWJsZSAmJlxuICAgICAgICAgICAgY29uc29sZS5sb2cobmV3IEFycmF5KHJlY3Vyc2lvbikuam9pbign4pSCICAnKSArICdUcnlpbmcgdG8gZ2V0ICcgKyB0YXJnZXQgKyAnIGZyb20gJyArIEpTT04uc3RyaW5naWZ5KHR4dC5zcGxpdCgnXFxuJylbMF0pKTtcbiAgICAgICAgbGV0IHJlYWxUeXBlID0gdHlwZS5uYW1lO1xuICAgICAgICBsZXQgdGFyZ2V0TGV4ID0gZmluZFJ1bGVCeU5hbWUodHlwZS5uYW1lLCB0aGlzKTtcbiAgICAgICAgaWYgKHR5cGUubmFtZSA9PSAnRU9GJykge1xuICAgICAgICAgICAgaWYgKHR4dC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR4dC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdFT0YnLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgcmVzdDogJycsXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICAgICAgICAgICAgICBlbmQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxUZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IG51bGxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIXRhcmdldExleCAmJiB0eXBlLmlzTGl0ZXJhbCkge1xuICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tZXZhbFxuICAgICAgICAgICAgICAgIGxldCBzcmMgPSBldmFsKHR5cGUubmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKHNyYyA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICclJUVNUFRZJSUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN0OiB0eHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxUZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZXhwciA9IG5ldyBSZWdFeHAoZXNjYXBlUmVnRXhwKHNyYykpO1xuICAgICAgICAgICAgICAgIHJlYWxUeXBlID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXhwcikge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHJlYWRUb2tlbih0eHQsIGV4cHIpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gcmVhbFR5cGU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBvcHRpb25zID0gdGFyZ2V0TGV4LmJuZjtcbiAgICAgICAgICAgIGlmIChvcHRpb25zIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmZvckVhY2gocGhhc2VzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG91dClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBpbm5lZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0bXAgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Q6IHR4dFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0TGV4LmZyYWdtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgdG1wLmZyYWdtZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRtcFR4dCA9IHR4dDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gMDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFsbE9wdGlvbmFsID0gcGhhc2VzLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZFNvbWV0aGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBoYXNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwaGFzZXNbaV0gPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jYWxUYXJnZXQgPSBwYXJzZVJ1bGVOYW1lKHBoYXNlc1tpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsT3B0aW9uYWwgPSBhbGxPcHRpb25hbCAmJiBsb2NhbFRhcmdldC5pc09wdGlvbmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBnb3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZvdW5kQXRMZWFzdE9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldExleC5pbXBsaWNpdFdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QgPSB0aGlzLnBhcnNlKHRtcFR4dCwgbG9jYWxUYXJnZXQubmFtZSwgcmVjdXJzaW9uICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWdvdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBXUztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdTID0gdGhpcy5wYXJzZSh0bXBUeHQsIFdTX1JVTEUsIHJlY3Vyc2lvbiArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoV1MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC50ZXh0ID0gdG1wLnRleHQgKyBXUy50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLmVuZCA9IHRtcC50ZXh0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdTLnBhcmVudCA9IHRtcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5jaGlsZHJlbi5wdXNoKFdTKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcFR4dCA9IHRtcFR4dC5zdWJzdHIoV1MudGV4dC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gKz0gV1MudGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKFdTICYmIFdTLnRleHQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QgPSBnb3QgfHwgdGhpcy5wYXJzZSh0bXBUeHQsIGxvY2FsVGFyZ2V0Lm5hbWUsIHJlY3Vyc2lvbiArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBydWxlIDo6PSBcInRydWVcIiAhW2EtekEtWl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmVnYXRpdmUgbG9va3VwLCBpZiBpdCBkb2VzIG5vdCBtYXRjaCwgd2Ugc2hvdWxkIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbFRhcmdldC5sb29rdXBOZWdhdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdvdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogY2FuY2VsIHRoaXMgcGF0aCAqLztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbFRhcmdldC5sb29rdXBQb3NpdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnb3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ290KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxUYXJnZXQuaXNPcHRpb25hbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbFRhcmdldC5hdExlYXN0T25lICYmIGZvdW5kQXRMZWFzdE9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ290ICYmIHRhcmdldExleC5waW5uZWQgPT0gaSArIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZCA9IGdvdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50YWJsZSAmJiBjb25zb2xlLmxvZyhuZXcgQXJyYXkocmVjdXJzaW9uICsgMSkuam9pbign4pSCICAnKSArICfilJTilIAgJyArIGdvdC50eXBlICsgJyBQSU5ORUQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWdvdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdCA9IHRoaXMucGFyc2VSZWNvdmVyeSh0YXJnZXRMZXgsIHRtcFR4dCwgcmVjdXJzaW9uICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ290KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGlubmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gdG1wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1N5bnRheEVycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogdG1wVHh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogdG1wVHh0Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFRleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0OiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcFR4dC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRva2VuRXJyb3JfMS5Ub2tlbkVycm9yKGBVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dC4gRXhwZWN0aW5nICR7bG9jYWxUYXJnZXQubmFtZX0gR290OiAke3RtcFR4dH1gLCBnb3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRva2VuRXJyb3JfMS5Ub2tlbkVycm9yKGBVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dC4gTWlzc2luZyAke2xvY2FsVGFyZ2V0Lm5hbWV9YCwgZ290KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRhYmxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5ldyBBcnJheShyZWN1cnNpb24gKyAxKS5qb2luKCfilIIgICcpICsgJ+KUlOKUgCAnICsgZ290LnR5cGUgKyAnICcgKyBKU09OLnN0cmluZ2lmeShnb3QudGV4dCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kQXRMZWFzdE9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU29tZXRoaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdvdC50eXBlID09ICclJUVNUFRZJSUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3Quc3RhcnQgKz0gcG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdC5lbmQgKz0gcG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9jYWxUYXJnZXQubG9va3VwUG9zaXRpdmUgJiYgZ290LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnb3QuZnJhZ21lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QuY2hpbGRyZW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290LmNoaWxkcmVuLmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LnN0YXJ0ICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5lbmQgKz0gcG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LnBhcmVudCA9IHRtcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5jaGlsZHJlbi5wdXNoKHgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdC5wYXJlbnQgPSB0bXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLmNoaWxkcmVuLnB1c2goZ290KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxUYXJnZXQubG9va3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290Lmxvb2t1cCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50YWJsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobmV3IEFycmF5KHJlY3Vyc2lvbiArIDEpLmpvaW4oJ+KUgiAgJykgKyAn4pSU4pSAICcgKyBnb3QudHlwZSArICcgJyArIEpTT04uc3RyaW5naWZ5KGdvdC50ZXh0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVhdCBpdCBmcm9tIHRoZSBpbnB1dCBzdHJlYW0sIG9ubHkgaWYgaXQgaXMgbm90IGEgbG9va3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9jYWxUYXJnZXQubG9va3VwICYmICFnb3QubG9va3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAudGV4dCA9IHRtcC50ZXh0ICsgZ290LnRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAuZW5kID0gdG1wLnRleHQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wVHh0ID0gdG1wVHh0LnN1YnN0cihnb3QudGV4dC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gKz0gZ290LnRleHQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5yZXN0ID0gdG1wVHh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGdvdCAmJiBsb2NhbFRhcmdldC5hbGxvd1JlcGV0aXRpb24gJiYgdG1wVHh0Lmxlbmd0aCAmJiAhZ290Lmxvb2t1cCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IC8qIElTIEEgUkVHRVhQICovXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ290ID0gcmVhZFRva2VuKHRtcFR4dCwgcGhhc2VzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWdvdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50YWJsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhuZXcgQXJyYXkocmVjdXJzaW9uICsgMSkuam9pbign4pSCICAnKSArICfilJQ+ICcgKyBKU09OLnN0cmluZ2lmeShnb3QudGV4dCkgKyBwaGFzZXNbaV0uc291cmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFNvbWV0aGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290LnN0YXJ0ICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdC5lbmQgKz0gcG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLnRleHQgPSB0bXAudGV4dCArIGdvdC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5lbmQgPSB0bXAudGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wVHh0ID0gdG1wVHh0LnN1YnN0cihnb3QudGV4dC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IGdvdC50ZXh0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAucmVzdCA9IHRtcFR4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRTb21ldGhpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IHRtcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50YWJsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5ldyBBcnJheShyZWN1cnNpb24pLmpvaW4oJ+KUgiAgJykgKyAn4pScPOKUgOKUtDwgUFVTSElORyAnICsgb3V0LnR5cGUgKyAnICcgKyBKU09OLnN0cmluZ2lmeShvdXQudGV4dCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3V0ICYmIHRhcmdldExleC5zaW1wbGlmeVdoZW5PbmVDaGlsZHJlbiAmJiBvdXQuY2hpbGRyZW4ubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgICAgICBvdXQgPSBvdXQuY2hpbGRyZW5bMF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFvdXQpIHtcbiAgICAgICAgICAgIHByaW50YWJsZSAmJiBjb25zb2xlLmxvZyh0YXJnZXQgKyAnIE5PVCBSRVNPTFZFRCBGUk9NICcgKyB0eHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuICAgIHBhcnNlUmVjb3ZlcnkocmVjb3ZlcmFibGVUb2tlbiwgdG1wVHh0LCByZWN1cnNpb24pIHtcbiAgICAgICAgaWYgKHJlY292ZXJhYmxlVG9rZW4ucmVjb3ZlciAmJiB0bXBUeHQubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgcHJpbnRhYmxlID0gdGhpcy5kZWJ1ZztcbiAgICAgICAgICAgIHByaW50YWJsZSAmJlxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5ldyBBcnJheShyZWN1cnNpb24gKyAxKS5qb2luKCfilIIgICcpICtcbiAgICAgICAgICAgICAgICAgICAgJ1RyeWluZyB0byByZWNvdmVyIHVudGlsIHRva2VuICcgK1xuICAgICAgICAgICAgICAgICAgICByZWNvdmVyYWJsZVRva2VuLnJlY292ZXIgK1xuICAgICAgICAgICAgICAgICAgICAnIGZyb20gJyArXG4gICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRtcFR4dC5zcGxpdCgnXFxuJylbMF0gKyB0bXBUeHQuc3BsaXQoJ1xcbicpWzFdKSk7XG4gICAgICAgICAgICBsZXQgdG1wID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdTeW50YXhFcnJvcicsXG4gICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICAgIGVuZDogMCxcbiAgICAgICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgIGZ1bGxUZXh0OiAnJyxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgICAgICAgICAgcmVzdDogJydcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsZXQgZ290O1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIGdvdCA9IHRoaXMucGFyc2UodG1wVHh0LCByZWNvdmVyYWJsZVRva2VuLnJlY292ZXIsIHJlY3Vyc2lvbiArIDEpO1xuICAgICAgICAgICAgICAgIGlmIChnb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3IFRva2VuRXJyb3JfMS5Ub2tlbkVycm9yKCdVbmV4cGVjdGVkIGlucHV0OiBcIicgKyB0bXAudGV4dCArIGBcIiBFeHBlY3Rpbmc6ICR7cmVjb3ZlcmFibGVUb2tlbi5uYW1lfWAsIHRtcCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdG1wLnRleHQgPSB0bXAudGV4dCArIHRtcFR4dFswXTtcbiAgICAgICAgICAgICAgICAgICAgdG1wLmVuZCA9IHRtcC50ZXh0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgdG1wVHh0ID0gdG1wVHh0LnN1YnN0cigxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlICghZ290ICYmIHRtcFR4dC5sZW5ndGggPiAwKTtcbiAgICAgICAgICAgIGlmICh0bXAudGV4dC5sZW5ndGggPiAwICYmIGdvdCkge1xuICAgICAgICAgICAgICAgIHByaW50YWJsZSAmJiBjb25zb2xlLmxvZyhuZXcgQXJyYXkocmVjdXJzaW9uICsgMSkuam9pbign4pSCICAnKSArICdSZWNvdmVyZWQgdGV4dDogJyArIEpTT04uc3RyaW5naWZ5KHRtcC50ZXh0KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRtcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5leHBvcnRzLlBhcnNlciA9IFBhcnNlcjtcbmV4cG9ydHMuZGVmYXVsdCA9IFBhcnNlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBhcnNlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZmluZENoaWxkcmVuQnlUeXBlID0gdm9pZCAwO1xuLyoqXG4gKiBGaW5kcyBhbGwgdGhlIGRpcmVjdCBjaGlsZHMgb2YgYSBzcGVjaWZ5ZWQgdHlwZVxuICovXG5mdW5jdGlvbiBmaW5kQ2hpbGRyZW5CeVR5cGUodG9rZW4sIHR5cGUpIHtcbiAgICByZXR1cm4gdG9rZW4uY2hpbGRyZW4gPyB0b2tlbi5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gdHlwZSkgOiBbXTtcbn1cbmV4cG9ydHMuZmluZENoaWxkcmVuQnlUeXBlID0gZmluZENoaWxkcmVuQnlUeXBlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2VtYW50aWNIZWxwZXJzLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFja3VzJUUyJTgwJTkzTmF1cl9Gb3JtXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKlxuc3ludGF4IDo6PSBSVUxFX0VPTCogcnVsZStcbnJ1bGUgOjo9IFwiIFwiKiBcIjxcIiBydWxlLW5hbWUgXCI+XCIgXCIgXCIqIFwiOjo9XCIgZmlyc3RFeHByZXNzaW9uIG90aGVyRXhwcmVzc2lvbiogXCIgXCIqIFJVTEVfRU9MKyBcIiBcIipcbmZpcnN0RXhwcmVzc2lvbiA6Oj0gXCIgXCIqIGxpc3Rcbm90aGVyRXhwcmVzc2lvbiA6Oj0gXCIgXCIqIFwifFwiIFwiIFwiKiBsaXN0XG5SVUxFX0VPTCA6Oj0gXCJcXHJcIiB8IFwiXFxuXCJcbmxpc3QgOjo9IHRlcm0gXCIgXCIqIGxpc3QgfCB0ZXJtXG50ZXJtIDo6PSBsaXRlcmFsIHwgXCI8XCIgcnVsZS1uYW1lIFwiPlwiXG5saXRlcmFsIDo6PSAnXCInIFJVTEVfQ0hBUkFDVEVSMSogJ1wiJyB8IFwiJ1wiIFJVTEVfQ0hBUkFDVEVSMiogXCInXCJcblJVTEVfQ0hBUkFDVEVSIDo6PSBcIiBcIiB8IFJVTEVfTEVUVEVSIHwgUlVMRV9ESUdJVCB8IFJVTEVfU1lNQk9MXG5SVUxFX0xFVFRFUiA6Oj0gXCJBXCIgfCBcIkJcIiB8IFwiQ1wiIHwgXCJEXCIgfCBcIkVcIiB8IFwiRlwiIHwgXCJHXCIgfCBcIkhcIiB8IFwiSVwiIHwgXCJKXCIgfCBcIktcIiB8IFwiTFwiIHwgXCJNXCIgfCBcIk5cIiB8IFwiT1wiIHwgXCJQXCIgfCBcIlFcIiB8IFwiUlwiIHwgXCJTXCIgfCBcIlRcIiB8IFwiVVwiIHwgXCJWXCIgfCBcIldcIiB8IFwiWFwiIHwgXCJZXCIgfCBcIlpcIiB8IFwiYVwiIHwgXCJiXCIgfCBcImNcIiB8IFwiZFwiIHwgXCJlXCIgfCBcImZcIiB8IFwiZ1wiIHwgXCJoXCIgfCBcImlcIiB8IFwialwiIHwgXCJrXCIgfCBcImxcIiB8IFwibVwiIHwgXCJuXCIgfCBcIm9cIiB8IFwicFwiIHwgXCJxXCIgfCBcInJcIiB8IFwic1wiIHwgXCJ0XCIgfCBcInVcIiB8IFwidlwiIHwgXCJ3XCIgfCBcInhcIiB8IFwieVwiIHwgXCJ6XCJcblJVTEVfRElHSVQgOjo9IFwiMFwiIHwgXCIxXCIgfCBcIjJcIiB8IFwiM1wiIHwgXCI0XCIgfCBcIjVcIiB8IFwiNlwiIHwgXCI3XCIgfCBcIjhcIiB8IFwiOVwiXG5SVUxFX1NZTUJPTCA6Oj0gXCItXCIgfCBcIl9cIiB8IFwiIVwiIHwgXCIjXCIgfCBcIiRcIiB8IFwiJVwiIHwgXCImXCIgfCBcIihcIiB8IFwiKVwiIHwgXCIqXCIgfCBcIitcIiB8IFwiLFwiIHwgXCItXCIgfCBcIi5cIiB8IFwiL1wiIHwgXCI6XCIgfCBcIjtcIiB8IFwiPFwiIHwgXCI9XCIgfCBcIj5cIiB8IFwiP1wiIHwgXCJAXCIgfCBcIltcIiB8IFwiXFxcIiB8IFwiXVwiIHwgXCJeXCIgfCBcIl9cIiB8IFwiYFwiIHwgXCJ7XCIgfCBcInxcIiB8IFwifVwiIHwgXCJ+XCJcblJVTEVfQ0hBUkFDVEVSMSA6Oj0gUlVMRV9DSEFSQUNURVIgfCBcIidcIlxuUlVMRV9DSEFSQUNURVIyIDo6PSBSVUxFX0NIQVJBQ1RFUiB8ICdcIidcbnJ1bGUtbmFtZSA6Oj0gUlVMRV9MRVRURVIgUlVMRV9DSEFSKlxuUlVMRV9DSEFSIDo6PSBSVUxFX0xFVFRFUiB8IFJVTEVfRElHSVQgfCBcIl9cIiB8IFwiLVwiXG4qL1xuY29uc3QgU2VtYW50aWNIZWxwZXJzXzEgPSByZXF1aXJlKFwiLi4vU2VtYW50aWNIZWxwZXJzXCIpO1xuY29uc3QgUGFyc2VyXzEgPSByZXF1aXJlKFwiLi4vUGFyc2VyXCIpO1xudmFyIEJORjtcbihmdW5jdGlvbiAoQk5GKSB7XG4gICAgQk5GLlJVTEVTID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnc3ludGF4JyxcbiAgICAgICAgICAgIGJuZjogW1snUlVMRV9FT0wqJywgJ3J1bGUrJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdydWxlJyxcbiAgICAgICAgICAgIGJuZjogW1xuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgJ1wiIFwiKicsXG4gICAgICAgICAgICAgICAgICAgICdcIjxcIicsXG4gICAgICAgICAgICAgICAgICAgICdydWxlLW5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAnXCI+XCInLFxuICAgICAgICAgICAgICAgICAgICAnXCIgXCIqJyxcbiAgICAgICAgICAgICAgICAgICAgJ1wiOjo9XCInLFxuICAgICAgICAgICAgICAgICAgICAnZmlyc3RFeHByZXNzaW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ290aGVyRXhwcmVzc2lvbionLFxuICAgICAgICAgICAgICAgICAgICAnXCIgXCIqJyxcbiAgICAgICAgICAgICAgICAgICAgJ1JVTEVfRU9MKycsXG4gICAgICAgICAgICAgICAgICAgICdcIiBcIionXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnZmlyc3RFeHByZXNzaW9uJyxcbiAgICAgICAgICAgIGJuZjogW1snXCIgXCIqJywgJ2xpc3QnXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ290aGVyRXhwcmVzc2lvbicsXG4gICAgICAgICAgICBibmY6IFtbJ1wiIFwiKicsICdcInxcIicsICdcIiBcIionLCAnbGlzdCddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9FT0wnLFxuICAgICAgICAgICAgYm5mOiBbWydcIlxcXFxyXCInXSwgWydcIlxcXFxuXCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2xpc3QnLFxuICAgICAgICAgICAgYm5mOiBbWyd0ZXJtJywgJ1wiIFwiKicsICdsaXN0J10sIFsndGVybSddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAndGVybScsXG4gICAgICAgICAgICBibmY6IFtbJ2xpdGVyYWwnXSwgWydcIjxcIicsICdydWxlLW5hbWUnLCAnXCI+XCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICAgICAgYm5mOiBbW2AnXCInYCwgJ1JVTEVfQ0hBUkFDVEVSMSonLCBgJ1wiJ2BdLCBbYFwiJ1wiYCwgJ1JVTEVfQ0hBUkFDVEVSMionLCBgXCInXCJgXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfQ0hBUkFDVEVSJyxcbiAgICAgICAgICAgIGJuZjogW1snXCIgXCInXSwgWydSVUxFX0xFVFRFUiddLCBbJ1JVTEVfRElHSVQnXSwgWydSVUxFX1NZTUJPTCddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9MRVRURVInLFxuICAgICAgICAgICAgYm5mOiBbXG4gICAgICAgICAgICAgICAgWydcIkFcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJCXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiQ1wiJ10sXG4gICAgICAgICAgICAgICAgWydcIkRcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJFXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiRlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIkdcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJIXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiSVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIkpcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJLXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiTFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIk1cIiddLFxuICAgICAgICAgICAgICAgIFsnXCJOXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiT1wiJ10sXG4gICAgICAgICAgICAgICAgWydcIlBcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJRXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiUlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIlNcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJUXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiVVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIlZcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJXXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiWFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIllcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJaXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiYVwiJ10sXG4gICAgICAgICAgICAgICAgWydcImJcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJjXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiZFwiJ10sXG4gICAgICAgICAgICAgICAgWydcImVcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJmXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiZ1wiJ10sXG4gICAgICAgICAgICAgICAgWydcImhcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJpXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wialwiJ10sXG4gICAgICAgICAgICAgICAgWydcImtcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJsXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wibVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIm5cIiddLFxuICAgICAgICAgICAgICAgIFsnXCJvXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wicFwiJ10sXG4gICAgICAgICAgICAgICAgWydcInFcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJyXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wic1wiJ10sXG4gICAgICAgICAgICAgICAgWydcInRcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJ1XCInXSxcbiAgICAgICAgICAgICAgICBbJ1widlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIndcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJ4XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wieVwiJ10sXG4gICAgICAgICAgICAgICAgWydcInpcIiddXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX0RJR0lUJyxcbiAgICAgICAgICAgIGJuZjogW1snXCIwXCInXSwgWydcIjFcIiddLCBbJ1wiMlwiJ10sIFsnXCIzXCInXSwgWydcIjRcIiddLCBbJ1wiNVwiJ10sIFsnXCI2XCInXSwgWydcIjdcIiddLCBbJ1wiOFwiJ10sIFsnXCI5XCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfU1lNQk9MJyxcbiAgICAgICAgICAgIGJuZjogW1xuICAgICAgICAgICAgICAgIFsnXCItXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiX1wiJ10sXG4gICAgICAgICAgICAgICAgWydcIiFcIiddLFxuICAgICAgICAgICAgICAgIFsnXCIjXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiJFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIiVcIiddLFxuICAgICAgICAgICAgICAgIFsnXCImXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiKFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIilcIiddLFxuICAgICAgICAgICAgICAgIFsnXCIqXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiK1wiJ10sXG4gICAgICAgICAgICAgICAgWydcIixcIiddLFxuICAgICAgICAgICAgICAgIFsnXCItXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiLlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIi9cIiddLFxuICAgICAgICAgICAgICAgIFsnXCI6XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiO1wiJ10sXG4gICAgICAgICAgICAgICAgWydcIjxcIiddLFxuICAgICAgICAgICAgICAgIFsnXCI9XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiPlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIj9cIiddLFxuICAgICAgICAgICAgICAgIFsnXCJAXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiW1wiJ10sXG4gICAgICAgICAgICAgICAgWydcIlxcXFxcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJdXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiXlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIl9cIiddLFxuICAgICAgICAgICAgICAgIFsnXCJgXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wie1wiJ10sXG4gICAgICAgICAgICAgICAgWydcInxcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJ9XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiflwiJ11cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfQ0hBUkFDVEVSMScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfQ0hBUkFDVEVSJ10sIFtgXCInXCJgXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfQ0hBUkFDVEVSMicsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfQ0hBUkFDVEVSJ10sIFtgJ1wiJ2BdXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAncnVsZS1uYW1lJyxcbiAgICAgICAgICAgIGJuZjogW1snUlVMRV9MRVRURVInLCAnUlVMRV9DSEFSKiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9DSEFSJyxcbiAgICAgICAgICAgIGJuZjogW1snUlVMRV9MRVRURVInXSwgWydSVUxFX0RJR0lUJ10sIFsnXCJfXCInXSwgWydcIi1cIiddXVxuICAgICAgICB9XG4gICAgXTtcbiAgICBCTkYuZGVmYXVsdFBhcnNlciA9IG5ldyBQYXJzZXJfMS5QYXJzZXIoQk5GLlJVTEVTLCB7IGRlYnVnOiBmYWxzZSB9KTtcbiAgICBmdW5jdGlvbiBnZXRBbGxUZXJtcyhleHByKSB7XG4gICAgICAgIGxldCB0ZXJtcyA9IFNlbWFudGljSGVscGVyc18xLmZpbmRDaGlsZHJlbkJ5VHlwZShleHByLCAndGVybScpLm1hcCh0ZXJtID0+IHtcbiAgICAgICAgICAgIHJldHVybiBTZW1hbnRpY0hlbHBlcnNfMS5maW5kQ2hpbGRyZW5CeVR5cGUodGVybSwgJ2xpdGVyYWwnKS5jb25jYXQoU2VtYW50aWNIZWxwZXJzXzEuZmluZENoaWxkcmVuQnlUeXBlKHRlcm0sICdydWxlLW5hbWUnKSlbMF0udGV4dDtcbiAgICAgICAgfSk7XG4gICAgICAgIFNlbWFudGljSGVscGVyc18xLmZpbmRDaGlsZHJlbkJ5VHlwZShleHByLCAnbGlzdCcpLmZvckVhY2goZXhwciA9PiB7XG4gICAgICAgICAgICB0ZXJtcyA9IHRlcm1zLmNvbmNhdChnZXRBbGxUZXJtcyhleHByKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGVybXM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFJ1bGVzKHNvdXJjZSwgcGFyc2VyID0gQk5GLmRlZmF1bHRQYXJzZXIpIHtcbiAgICAgICAgbGV0IGFzdCA9IHBhcnNlci5nZXRBU1Qoc291cmNlKTtcbiAgICAgICAgaWYgKCFhc3QpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBwYXJzZSAnICsgc291cmNlKTtcbiAgICAgICAgaWYgKGFzdC5lcnJvcnMgJiYgYXN0LmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IGFzdC5lcnJvcnNbMF07XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJ1bGVzID0gU2VtYW50aWNIZWxwZXJzXzEuZmluZENoaWxkcmVuQnlUeXBlKGFzdCwgJ3J1bGUnKTtcbiAgICAgICAgbGV0IHJldCA9IHJ1bGVzLm1hcCgocnVsZSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5hbWUgPSBTZW1hbnRpY0hlbHBlcnNfMS5maW5kQ2hpbGRyZW5CeVR5cGUocnVsZSwgJ3J1bGUtbmFtZScpWzBdLnRleHQ7XG4gICAgICAgICAgICBsZXQgZXhwcmVzc2lvbnMgPSBTZW1hbnRpY0hlbHBlcnNfMS5maW5kQ2hpbGRyZW5CeVR5cGUocnVsZSwgJ2ZpcnN0RXhwcmVzc2lvbicpLmNvbmNhdChTZW1hbnRpY0hlbHBlcnNfMS5maW5kQ2hpbGRyZW5CeVR5cGUocnVsZSwgJ290aGVyRXhwcmVzc2lvbicpKTtcbiAgICAgICAgICAgIGxldCBibmYgPSBbXTtcbiAgICAgICAgICAgIGV4cHJlc3Npb25zLmZvckVhY2goZXhwciA9PiB7XG4gICAgICAgICAgICAgICAgYm5mLnB1c2goZ2V0QWxsVGVybXMoZXhwcikpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgYm5mXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFyZXQuc29tZSh4ID0+IHgubmFtZSA9PSAnRU9MJykpIHtcbiAgICAgICAgICAgIHJldC5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnRU9MJyxcbiAgICAgICAgICAgICAgICBibmY6IFtbJ1wiXFxcXHJcXFxcblwiJywgJ1wiXFxcXHJcIicsICdcIlxcXFxuXCInXV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICAgIEJORi5nZXRSdWxlcyA9IGdldFJ1bGVzO1xuICAgIGZ1bmN0aW9uIFRyYW5zZm9ybShzb3VyY2UsIHN1YlBhcnNlciA9IEJORi5kZWZhdWx0UGFyc2VyKSB7XG4gICAgICAgIHJldHVybiBnZXRSdWxlcyhzb3VyY2Uuam9pbignJyksIHN1YlBhcnNlcik7XG4gICAgfVxuICAgIEJORi5UcmFuc2Zvcm0gPSBUcmFuc2Zvcm07XG4gICAgY2xhc3MgUGFyc2VyIGV4dGVuZHMgUGFyc2VyXzEuUGFyc2VyIHtcbiAgICAgICAgY29uc3RydWN0b3Ioc291cmNlLCBvcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBzdWJQYXJzZXIgPSBvcHRpb25zICYmIG9wdGlvbnMuZGVidWdSdWxlc1BhcnNlciA9PT0gdHJ1ZSA/IG5ldyBQYXJzZXJfMS5QYXJzZXIoQk5GLlJVTEVTLCB7IGRlYnVnOiB0cnVlIH0pIDogQk5GLmRlZmF1bHRQYXJzZXI7XG4gICAgICAgICAgICBzdXBlcihnZXRSdWxlcyhzb3VyY2UsIHN1YlBhcnNlciksIG9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgIH1cbiAgICAgICAgZW1pdFNvdXJjZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNvdXJjZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBCTkYuUGFyc2VyID0gUGFyc2VyO1xufSkoQk5GIHx8IChCTkYgPSB7fSkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQk5GO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Qk5GLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL1JFQy14bWwvI05ULU5hbWVcbi8vIGh0dHA6Ly93d3cuYm90dGxlY2Fwcy5kZS9yci91aVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gR3JhbW1hclx0Ojo9XHRQcm9kdWN0aW9uKlxuLy8gUHJvZHVjdGlvblx0Ojo9XHROQ05hbWUgJzo6PScgQ2hvaWNlXG4vLyBOQ05hbWVcdDo6PVx0W2h0dHA6Ly93d3cudzMub3JnL1RSL3htbC1uYW1lcy8jTlQtTkNOYW1lXVxuLy8gQ2hvaWNlXHQ6Oj1cdFNlcXVlbmNlT3JEaWZmZXJlbmNlICggJ3wnIFNlcXVlbmNlT3JEaWZmZXJlbmNlICkqXG4vLyBTZXF1ZW5jZU9yRGlmZmVyZW5jZVx0Ojo9XHQoSXRlbSAoICctJyBJdGVtIHwgSXRlbSogKSk/XG4vLyBJdGVtXHQ6Oj1cdFByaW1hcnkgKCAnPycgfCAnKicgfCAnKycgKT9cbi8vIFByaW1hcnlcdDo6PVx0TkNOYW1lIHwgU3RyaW5nTGl0ZXJhbCB8IENoYXJDb2RlIHwgQ2hhckNsYXNzIHwgJygnIENob2ljZSAnKSdcbi8vIFN0cmluZ0xpdGVyYWxcdDo6PVx0J1wiJyBbXlwiXSogJ1wiJyB8IFwiJ1wiIFteJ10qIFwiJ1wiXG4vLyBDaGFyQ29kZVx0Ojo9XHQnI3gnIFswLTlhLWZBLUZdK1xuLy8gQ2hhckNsYXNzXHQ6Oj1cdCdbJyAnXic/ICggUlVMRV9DaGFyIHwgQ2hhckNvZGUgfCBDaGFyUmFuZ2UgfCBDaGFyQ29kZVJhbmdlICkrICddJ1xuLy8gUlVMRV9DaGFyXHQ6Oj1cdFtodHRwOi8vd3d3LnczLm9yZy9UUi94bWwjTlQtUlVMRV9DaGFyXVxuLy8gQ2hhclJhbmdlXHQ6Oj1cdFJVTEVfQ2hhciAnLScgKCBSVUxFX0NoYXIgLSAnXScgKVxuLy8gQ2hhckNvZGVSYW5nZVx0Ojo9XHRDaGFyQ29kZSAnLScgQ2hhckNvZGVcbi8vIFJVTEVfV0hJVEVTUEFDRVx0Ojo9XHRSVUxFX1MgfCBDb21tZW50XG4vLyBSVUxFX1NcdDo6PVx0I3g5IHwgI3hBIHwgI3hEIHwgI3gyMFxuLy8gQ29tbWVudFx0Ojo9XHQnLyonICggW14qXSB8ICcqJysgW14qL10gKSogJyonKiAnKi8nXG5jb25zdCBQYXJzZXJfMSA9IHJlcXVpcmUoXCIuLi9QYXJzZXJcIik7XG52YXIgQk5GO1xuKGZ1bmN0aW9uIChCTkYpIHtcbiAgICBCTkYuUlVMRVMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdHcmFtbWFyJyxcbiAgICAgICAgICAgIGJuZjogW1snUlVMRV9TKicsICclQXRvbWljKicsICdFT0YnXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVBdG9taWMnLFxuICAgICAgICAgICAgYm5mOiBbWydQcm9kdWN0aW9uJywgJ1JVTEVfUyonXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUHJvZHVjdGlvbicsXG4gICAgICAgICAgICBibmY6IFtbJ05DTmFtZScsICdSVUxFX1MqJywgJ1wiOjo9XCInLCAnUlVMRV9XSElURVNQQUNFKicsICdDaG9pY2UnLCAnUlVMRV9XSElURVNQQUNFKicsICdSVUxFX0VPTCsnLCAnUlVMRV9TKiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnTkNOYW1lJyxcbiAgICAgICAgICAgIGJuZjogW1svW2EtekEtWl1bYS16QS1aXzAtOV0qL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaG9pY2UnLFxuICAgICAgICAgICAgYm5mOiBbWydTZXF1ZW5jZU9yRGlmZmVyZW5jZScsICclX0Nob2ljZV8xKiddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclX0Nob2ljZV8xJyxcbiAgICAgICAgICAgIGJuZjogW1snUlVMRV9XSElURVNQQUNFKicsICdcInxcIicsICdSVUxFX1dISVRFU1BBQ0UqJywgJ1NlcXVlbmNlT3JEaWZmZXJlbmNlJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1NlcXVlbmNlT3JEaWZmZXJlbmNlJyxcbiAgICAgICAgICAgIGJuZjogW1snSXRlbScsICdSVUxFX1dISVRFU1BBQ0UqJywgJyVfSXRlbV8xPyddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJV9JdGVtXzEnLFxuICAgICAgICAgICAgYm5mOiBbWydNaW51cycsICdJdGVtJ10sIFsnSXRlbSonXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnTWludXMnLFxuICAgICAgICAgICAgYm5mOiBbWydcIi1cIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnSXRlbScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfV0hJVEVTUEFDRSonLCAnJVByaW1hcnknLCAnUHJpbWFyeURlY29yYXRpb24/J11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1ByaW1hcnlEZWNvcmF0aW9uJyxcbiAgICAgICAgICAgIGJuZjogW1snXCI/XCInXSwgWydcIipcIiddLCBbJ1wiK1wiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdEZWNvcmF0aW9uTmFtZScsXG4gICAgICAgICAgICBibmY6IFtbJ1wiZWJuZjovL1wiJywgL1teXFx4NUQjXSsvXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVQcmltYXJ5JyxcbiAgICAgICAgICAgIGJuZjogW1snTkNOYW1lJ10sIFsnU3RyaW5nTGl0ZXJhbCddLCBbJ0NoYXJDb2RlJ10sIFsnQ2hhckNsYXNzJ10sIFsnU3ViSXRlbSddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdTdWJJdGVtJyxcbiAgICAgICAgICAgIGJuZjogW1snXCIoXCInLCAnUlVMRV9XSElURVNQQUNFKicsICdDaG9pY2UnLCAnUlVMRV9XSElURVNQQUNFKicsICdcIilcIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnU3RyaW5nTGl0ZXJhbCcsXG4gICAgICAgICAgICBibmY6IFtbYCdcIidgLCAvW15cIl0qLywgYCdcIidgXSwgW2BcIidcImAsIC9bXiddKi8sIGBcIidcImBdXSxcbiAgICAgICAgICAgIHBpbm5lZDogMVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hhckNvZGUnLFxuICAgICAgICAgICAgYm5mOiBbWydcIiN4XCInLCAvWzAtOWEtekEtWl0rL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGFyQ2xhc3MnLFxuICAgICAgICAgICAgYm5mOiBbW1wiJ1snXCIsIFwiJ14nP1wiLCAnJVJVTEVfQ2hhckNsYXNzXzErJywgJ1wiXVwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclUlVMRV9DaGFyQ2xhc3NfMScsXG4gICAgICAgICAgICBibmY6IFtbJ0NoYXJDb2RlUmFuZ2UnXSwgWydDaGFyUmFuZ2UnXSwgWydDaGFyQ29kZSddLCBbJ1JVTEVfQ2hhciddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX0NoYXInLFxuICAgICAgICAgICAgYm5mOiBbWy9cXHgwOS9dLCBbL1xceDBBL10sIFsvXFx4MEQvXSwgWy9bXFx4MjAtXFx4NWNdL10sIFsvW1xceDVlLVxcdUQ3RkZdL10sIFsvW1xcdUUwMDAtXFx1RkZGRF0vXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0NoYXJSYW5nZScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfQ2hhcicsICdcIi1cIicsICdSVUxFX0NoYXInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0NoYXJDb2RlUmFuZ2UnLFxuICAgICAgICAgICAgYm5mOiBbWydDaGFyQ29kZScsICdcIi1cIicsICdDaGFyQ29kZSddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9XSElURVNQQUNFJyxcbiAgICAgICAgICAgIGJuZjogW1snJVJVTEVfV0hJVEVTUEFDRV9DSEFSKiddLCBbJ0NvbW1lbnQnLCAnUlVMRV9XSElURVNQQUNFKiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9TJyxcbiAgICAgICAgICAgIGJuZjogW1snUlVMRV9XSElURVNQQUNFJywgJ1JVTEVfUyonXSwgWydSVUxFX0VPTCcsICdSVUxFX1MqJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclUlVMRV9XSElURVNQQUNFX0NIQVInLFxuICAgICAgICAgICAgYm5mOiBbWy9cXHgwOS9dLCBbL1xceDIwL11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0NvbW1lbnQnLFxuICAgICAgICAgICAgYm5mOiBbWydcIi8qXCInLCAnJVJVTEVfQ29tbWVudF9Cb2R5KicsICdcIiovXCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVSVUxFX0NvbW1lbnRfQm9keScsXG4gICAgICAgICAgICBibmY6IFtbJyFcIiovXCInLCAvW14qXS9dXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX0VPTCcsXG4gICAgICAgICAgICBibmY6IFtbL1xceDBELywgL1xceDBBL10sIFsvXFx4MEEvXSwgWy9cXHgwRC9dXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnTGluaycsXG4gICAgICAgICAgICBibmY6IFtbXCInWydcIiwgJ1VybCcsIFwiJ10nXCJdXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnVXJsJyxcbiAgICAgICAgICAgIGJuZjogW1svW15cXHg1RDovPyNdLywgJ1wiOi8vXCInLCAvW15cXHg1RCNdKy8sICclVXJsMT8nXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVVcmwxJyxcbiAgICAgICAgICAgIGJuZjogW1snXCIjXCInLCAnTkNOYW1lJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfVxuICAgIF07XG4gICAgQk5GLmRlZmF1bHRQYXJzZXIgPSBuZXcgUGFyc2VyXzEuUGFyc2VyKEJORi5SVUxFUywgeyBkZWJ1ZzogZmFsc2UgfSk7XG4gICAgY29uc3QgcHJlRGVjb3JhdGlvblJFID0gL14oIXwmKS87XG4gICAgY29uc3QgZGVjb3JhdGlvblJFID0gLyhcXD98XFwrfFxcKikkLztcbiAgICBjb25zdCBzdWJFeHByZXNzaW9uUkUgPSAvXiUvO1xuICAgIGZ1bmN0aW9uIGdldEJORlJ1bGUobmFtZSwgcGFyc2VyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbmFtZSA9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKHByZURlY29yYXRpb25SRS50ZXN0KG5hbWUpKVxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIGxldCBzdWJleHByZXNzaW9uID0gc3ViRXhwcmVzc2lvblJFLnRlc3QobmFtZSk7XG4gICAgICAgICAgICBpZiAoc3ViZXhwcmVzc2lvbikge1xuICAgICAgICAgICAgICAgIGxldCBkZWNvcmF0aW9uID0gZGVjb3JhdGlvblJFLmV4ZWMobmFtZSk7XG4gICAgICAgICAgICAgICAgbGV0IGRlY29yYXRpb25UZXh0ID0gZGVjb3JhdGlvbiA/IGRlY29yYXRpb25bMF0gKyAnICcgOiAnJztcbiAgICAgICAgICAgICAgICBsZXQgbG9uZWx5ID0gaXNMb25lbHlSdWxlKG5hbWUsIHBhcnNlcik7XG4gICAgICAgICAgICAgICAgaWYgKGxvbmVseSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldEJORkJvZHkobmFtZSwgcGFyc2VyKSArIGRlY29yYXRpb25UZXh0O1xuICAgICAgICAgICAgICAgIHJldHVybiAnKCcgKyBnZXRCTkZCb2R5KG5hbWUsIHBhcnNlcikgKyAnKScgKyBkZWNvcmF0aW9uVGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5hbWUuc291cmNlXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFwoPzp4fHUpKFthLXpBLVowLTldKykvZywgJyN4JDEnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFtcXFxcKD86eHx1KShbYS16QS1aMC05XSspLVxcXFwoPzp4fHUpKFthLXpBLVowLTldKylcXF0vZywgJ1sjeCQxLSN4JDJdJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcnVsZSBpcyBhIHN0cmluZyBsaXRlcmFsIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRob3V0IGEgZGVzY2VuZGFudCB0cmVlXG4gICAgZnVuY3Rpb24gaXNMb25lbHlSdWxlKG5hbWUsIHBhcnNlcikge1xuICAgICAgICBsZXQgcnVsZSA9IFBhcnNlcl8xLmZpbmRSdWxlQnlOYW1lKG5hbWUsIHBhcnNlcik7XG4gICAgICAgIHJldHVybiAocnVsZSAmJlxuICAgICAgICAgICAgcnVsZS5ibmYubGVuZ3RoID09IDEgJiZcbiAgICAgICAgICAgIHJ1bGUuYm5mWzBdLmxlbmd0aCA9PSAxICYmXG4gICAgICAgICAgICAocnVsZS5ibmZbMF1bMF0gaW5zdGFuY2VvZiBSZWdFeHAgfHwgcnVsZS5ibmZbMF1bMF1bMF0gPT0gJ1wiJyB8fCBydWxlLmJuZlswXVswXVswXSA9PSBcIidcIikpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRCTkZDaG9pY2UocnVsZXMsIHBhcnNlcikge1xuICAgICAgICByZXR1cm4gcnVsZXMubWFwKHggPT4gZ2V0Qk5GUnVsZSh4LCBwYXJzZXIpKS5qb2luKCcgJyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldEJORkJvZHkobmFtZSwgcGFyc2VyKSB7XG4gICAgICAgIGxldCBydWxlID0gUGFyc2VyXzEuZmluZFJ1bGVCeU5hbWUobmFtZSwgcGFyc2VyKTtcbiAgICAgICAgaWYgKHJ1bGUpXG4gICAgICAgICAgICByZXR1cm4gcnVsZS5ibmYubWFwKHggPT4gZ2V0Qk5GQ2hvaWNlKHgsIHBhcnNlcikpLmpvaW4oJyB8ICcpO1xuICAgICAgICByZXR1cm4gJ1JVTEVfTk9UX0ZPVU5EIHsnICsgbmFtZSArICd9JztcbiAgICB9XG4gICAgZnVuY3Rpb24gZW1pdChwYXJzZXIpIHtcbiAgICAgICAgbGV0IGFjdW11bGF0b3IgPSBbXTtcbiAgICAgICAgcGFyc2VyLmdyYW1tYXJSdWxlcy5mb3JFYWNoKGwgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXiUvLnRlc3QobC5uYW1lKSkge1xuICAgICAgICAgICAgICAgIGxldCByZWNvdmVyID0gbC5yZWNvdmVyID8gJyAvKiB7IHJlY292ZXJVbnRpbD0nICsgbC5yZWNvdmVyICsgJyB9ICovJyA6ICcnO1xuICAgICAgICAgICAgICAgIGFjdW11bGF0b3IucHVzaChsLm5hbWUgKyAnIDo6PSAnICsgZ2V0Qk5GQm9keShsLm5hbWUsIHBhcnNlcikgKyByZWNvdmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhY3VtdWxhdG9yLmpvaW4oJ1xcbicpO1xuICAgIH1cbiAgICBCTkYuZW1pdCA9IGVtaXQ7XG4gICAgbGV0IHN1Yml0ZW1zID0gMDtcbiAgICBmdW5jdGlvbiByZXN0YXIodG90YWwsIHJlc3RhKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdyZWJlcmlhIHJlc3RhciAnICsgcmVzdGEgKyAnIGEgJyArIHRvdGFsKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWZmZXJlbmNlIG5vdCBzdXBwb3J0ZWQgeWV0Jyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNvbnZlcnRSZWdleCh0eHQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAodHh0XG4gICAgICAgICAgICAucmVwbGFjZSgvI3goW2EtekEtWjAtOV17NH0pL2csICdcXFxcdSQxJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8jeChbYS16QS1aMC05XXszfSkvZywgJ1xcXFx1MCQxJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8jeChbYS16QS1aMC05XXsyfSkvZywgJ1xcXFx4JDEnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLyN4KFthLXpBLVowLTldezF9KS9nLCAnXFxcXHgwJDEnKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFN1Ykl0ZW1zKHRtcFJ1bGVzLCBzZXEsIHBhcmVudE5hbWUpIHtcbiAgICAgICAgbGV0IGFudGVyaW9yID0gbnVsbDtcbiAgICAgICAgbGV0IGJuZlNlcSA9IFtdO1xuICAgICAgICBzZXEuY2hpbGRyZW4uZm9yRWFjaCgoeCwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKHgudHlwZSA9PSAnTWludXMnKSB7XG4gICAgICAgICAgICAgICAgcmVzdGFyKGFudGVyaW9yLCB4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGRlY29yYXRpb24gPSBzZXEuY2hpbGRyZW5baSArIDFdO1xuICAgICAgICAgICAgZGVjb3JhdGlvbiA9IChkZWNvcmF0aW9uICYmIGRlY29yYXRpb24udHlwZSA9PSAnUHJpbWFyeURlY29yYXRpb24nICYmIGRlY29yYXRpb24udGV4dCkgfHwgJyc7XG4gICAgICAgICAgICBsZXQgcHJlRGVjb3JhdGlvbiA9ICcnO1xuICAgICAgICAgICAgc3dpdGNoICh4LnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdTdWJJdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSAnJScgKyAocGFyZW50TmFtZSArIHN1Yml0ZW1zKyspO1xuICAgICAgICAgICAgICAgICAgICBjcmVhdGVSdWxlKHRtcFJ1bGVzLCB4LCBuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gocHJlRGVjb3JhdGlvbiArIG5hbWUgKyBkZWNvcmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTkNOYW1lJzpcbiAgICAgICAgICAgICAgICBjYXNlICdTdHJpbmdMaXRlcmFsJzpcbiAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gocHJlRGVjb3JhdGlvbiArIHgudGV4dCArIGRlY29yYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdDaGFyQ29kZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnQ2hhckNsYXNzJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlY29yYXRpb24gfHwgcHJlRGVjb3JhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld1J1bGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJyUnICsgKHBhcmVudE5hbWUgKyBzdWJpdGVtcysrKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibmY6IFtbY29udmVydFJlZ2V4KHgudGV4dCldXVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRtcFJ1bGVzLnB1c2gobmV3UnVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBibmZTZXEucHVzaChwcmVEZWNvcmF0aW9uICsgbmV3UnVsZS5uYW1lICsgZGVjb3JhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBibmZTZXEucHVzaChjb252ZXJ0UmVnZXgoeC50ZXh0KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnUHJpbWFyeURlY29yYXRpb24nOlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJyBIT1cgU0hPVUxEIEkgUEFSU0UgVEhJUz8gJyArIHgudHlwZSArICcgLT4gJyArIEpTT04uc3RyaW5naWZ5KHgudGV4dCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYW50ZXJpb3IgPSB4O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGJuZlNlcTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlUnVsZSh0bXBSdWxlcywgdG9rZW4sIG5hbWUpIHtcbiAgICAgICAgbGV0IGJuZiA9IHRva2VuLmNoaWxkcmVuLmZpbHRlcih4ID0+IHgudHlwZSA9PSAnU2VxdWVuY2VPckRpZmZlcmVuY2UnKS5tYXAocyA9PiBnZXRTdWJJdGVtcyh0bXBSdWxlcywgcywgbmFtZSkpO1xuICAgICAgICBsZXQgcnVsZSA9IHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBibmZcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHJlY292ZXIgPSBudWxsO1xuICAgICAgICBibmYuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgIHJlY292ZXIgPSByZWNvdmVyIHx8IHhbJ3JlY292ZXInXTtcbiAgICAgICAgICAgIGRlbGV0ZSB4WydyZWNvdmVyJ107XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobmFtZS5pbmRleE9mKCclJykgPT0gMClcbiAgICAgICAgICAgIHJ1bGUuZnJhZ21lbnQgPSB0cnVlO1xuICAgICAgICBpZiAocmVjb3ZlcilcbiAgICAgICAgICAgIHJ1bGUucmVjb3ZlciA9IHJlY292ZXI7XG4gICAgICAgIHRtcFJ1bGVzLnB1c2gocnVsZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFJ1bGVzKHNvdXJjZSwgcGFyc2VyID0gQk5GLmRlZmF1bHRQYXJzZXIpIHtcbiAgICAgICAgbGV0IGFzdCA9IHBhcnNlci5nZXRBU1Qoc291cmNlKTtcbiAgICAgICAgaWYgKCFhc3QpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBwYXJzZSAnICsgc291cmNlKTtcbiAgICAgICAgaWYgKGFzdC5lcnJvcnMgJiYgYXN0LmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IGFzdC5lcnJvcnNbMF07XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHRtcFJ1bGVzID0gW107XG4gICAgICAgIGFzdC5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ1Byb2R1Y3Rpb24nKS5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgIGxldCBuYW1lID0geC5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ05DTmFtZScpWzBdLnRleHQ7XG4gICAgICAgICAgICBjcmVhdGVSdWxlKHRtcFJ1bGVzLCB4LCBuYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0bXBSdWxlcztcbiAgICB9XG4gICAgQk5GLmdldFJ1bGVzID0gZ2V0UnVsZXM7XG4gICAgZnVuY3Rpb24gVHJhbnNmb3JtKHNvdXJjZSwgc3ViUGFyc2VyID0gQk5GLmRlZmF1bHRQYXJzZXIpIHtcbiAgICAgICAgcmV0dXJuIGdldFJ1bGVzKHNvdXJjZS5qb2luKCcnKSwgc3ViUGFyc2VyKTtcbiAgICB9XG4gICAgQk5GLlRyYW5zZm9ybSA9IFRyYW5zZm9ybTtcbiAgICBjbGFzcyBQYXJzZXIgZXh0ZW5kcyBQYXJzZXJfMS5QYXJzZXIge1xuICAgICAgICBjb25zdHJ1Y3Rvcihzb3VyY2UsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1YlBhcnNlciA9IG9wdGlvbnMgJiYgb3B0aW9ucy5kZWJ1Z1J1bGVzUGFyc2VyID09PSB0cnVlID8gbmV3IFBhcnNlcl8xLlBhcnNlcihCTkYuUlVMRVMsIHsgZGVidWc6IHRydWUgfSkgOiBCTkYuZGVmYXVsdFBhcnNlcjtcbiAgICAgICAgICAgIHN1cGVyKGdldFJ1bGVzKHNvdXJjZSwgc3ViUGFyc2VyKSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZW1pdFNvdXJjZSgpIHtcbiAgICAgICAgICAgIHJldHVybiBlbWl0KHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEJORi5QYXJzZXIgPSBQYXJzZXI7XG59KShCTkYgfHwgKEJORiA9IHt9KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBCTkY7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1XM0NFQk5GLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL1JFQy14bWwvI05ULU5hbWVcbi8vIGh0dHA6Ly93d3cuYm90dGxlY2Fwcy5kZS9yci91aVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gR3JhbW1hclx0Ojo9XHRQcm9kdWN0aW9uKlxuLy8gUHJvZHVjdGlvblx0Ojo9XHROQ05hbWUgJzo6PScgQ2hvaWNlXG4vLyBOQ05hbWVcdDo6PVx0W2h0dHA6Ly93d3cudzMub3JnL1RSL3htbC1uYW1lcy8jTlQtTkNOYW1lXVxuLy8gQ2hvaWNlXHQ6Oj1cdFNlcXVlbmNlT3JEaWZmZXJlbmNlICggJ3wnIFNlcXVlbmNlT3JEaWZmZXJlbmNlICkqXG4vLyBTZXF1ZW5jZU9yRGlmZmVyZW5jZVx0Ojo9XHQoSXRlbSAoICctJyBJdGVtIHwgSXRlbSogKSk/XG4vLyBJdGVtXHQ6Oj1cdFByaW1hcnkgKCAnPycgfCAnKicgfCAnKycgKT9cbi8vIFByaW1hcnlcdDo6PVx0TkNOYW1lIHwgU3RyaW5nTGl0ZXJhbCB8IENoYXJDb2RlIHwgQ2hhckNsYXNzIHwgJygnIENob2ljZSAnKSdcbi8vIFN0cmluZ0xpdGVyYWxcdDo6PVx0J1wiJyBbXlwiXSogJ1wiJyB8IFwiJ1wiIFteJ10qIFwiJ1wiXG4vLyBDaGFyQ29kZVx0Ojo9XHQnI3gnIFswLTlhLWZBLUZdK1xuLy8gQ2hhckNsYXNzXHQ6Oj1cdCdbJyAnXic/ICggUlVMRV9DaGFyIHwgQ2hhckNvZGUgfCBDaGFyUmFuZ2UgfCBDaGFyQ29kZVJhbmdlICkrICddJ1xuLy8gUlVMRV9DaGFyXHQ6Oj1cdFtodHRwOi8vd3d3LnczLm9yZy9UUi94bWwjTlQtUlVMRV9DaGFyXVxuLy8gQ2hhclJhbmdlXHQ6Oj1cdFJVTEVfQ2hhciAnLScgKCBSVUxFX0NoYXIgLSAnXScgKVxuLy8gQ2hhckNvZGVSYW5nZVx0Ojo9XHRDaGFyQ29kZSAnLScgQ2hhckNvZGVcbi8vIFJVTEVfV0hJVEVTUEFDRVx0Ojo9XHRSVUxFX1MgfCBDb21tZW50XG4vLyBSVUxFX1NcdDo6PVx0I3g5IHwgI3hBIHwgI3hEIHwgI3gyMFxuLy8gQ29tbWVudFx0Ojo9XHQnLyonICggW14qXSB8ICcqJysgW14qL10gKSogJyonKiAnKi8nXG5jb25zdCBUb2tlbkVycm9yXzEgPSByZXF1aXJlKFwiLi4vVG9rZW5FcnJvclwiKTtcbmNvbnN0IFBhcnNlcl8xID0gcmVxdWlyZShcIi4uL1BhcnNlclwiKTtcbnZhciBCTkY7XG4oZnVuY3Rpb24gKEJORikge1xuICAgIEJORi5SVUxFUyA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0dyYW1tYXInLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX1MqJywgJ0F0dHJpYnV0ZXM/JywgJ1JVTEVfUyonLCAnJUF0b21pYyonLCAnRU9GJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclQXRvbWljJyxcbiAgICAgICAgICAgIGJuZjogW1snUHJvZHVjdGlvbicsICdSVUxFX1MqJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1Byb2R1Y3Rpb24nLFxuICAgICAgICAgICAgYm5mOiBbXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAnTkNOYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgJ1JVTEVfUyonLFxuICAgICAgICAgICAgICAgICAgICAnXCI6Oj1cIicsXG4gICAgICAgICAgICAgICAgICAgICdSVUxFX1dISVRFU1BBQ0UqJyxcbiAgICAgICAgICAgICAgICAgICAgJyVDaG9pY2UnLFxuICAgICAgICAgICAgICAgICAgICAnUlVMRV9XSElURVNQQUNFKicsXG4gICAgICAgICAgICAgICAgICAgICdBdHRyaWJ1dGVzPycsXG4gICAgICAgICAgICAgICAgICAgICdSVUxFX0VPTCsnLFxuICAgICAgICAgICAgICAgICAgICAnUlVMRV9TKidcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdOQ05hbWUnLFxuICAgICAgICAgICAgYm5mOiBbWy9bYS16QS1aXVthLXpBLVpfMC05XSovXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0F0dHJpYnV0ZXMnLFxuICAgICAgICAgICAgYm5mOiBbWydcIntcIicsICdBdHRyaWJ1dGUnLCAnJUF0dHJpYnV0ZXMqJywgJ1JVTEVfUyonLCAnXCJ9XCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVBdHRyaWJ1dGVzJyxcbiAgICAgICAgICAgIGJuZjogW1snUlVMRV9TKicsICdcIixcIicsICdBdHRyaWJ1dGUnXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQXR0cmlidXRlJyxcbiAgICAgICAgICAgIGJuZjogW1snUlVMRV9TKicsICdOQ05hbWUnLCAnUlVMRV9XSElURVNQQUNFKicsICdcIj1cIicsICdSVUxFX1dISVRFU1BBQ0UqJywgJ0F0dHJpYnV0ZVZhbHVlJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdBdHRyaWJ1dGVWYWx1ZScsXG4gICAgICAgICAgICBibmY6IFtbJ05DTmFtZSddLCBbL1sxLTldWzAtOV0qL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclQ2hvaWNlJyxcbiAgICAgICAgICAgIGJuZjogW1snU2VxdWVuY2VPckRpZmZlcmVuY2UnLCAnJV9DaG9pY2VfMSonXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJV9DaG9pY2VfMScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfUyonLCAnXCJ8XCInLCAnUlVMRV9TKicsICdTZXF1ZW5jZU9yRGlmZmVyZW5jZSddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdTZXF1ZW5jZU9yRGlmZmVyZW5jZScsXG4gICAgICAgICAgICBibmY6IFtbJyVJdGVtJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnJV9JdGVtXzE/J11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclX0l0ZW1fMScsXG4gICAgICAgICAgICBibmY6IFtbJ01pbnVzJywgJyVJdGVtJ10sIFsnJUl0ZW0qJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ01pbnVzJyxcbiAgICAgICAgICAgIGJuZjogW1snXCItXCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVJdGVtJyxcbiAgICAgICAgICAgIGJuZjogW1snUlVMRV9XSElURVNQQUNFKicsICdQcmltYXJ5UHJlRGVjb3JhdGlvbj8nLCAnJVByaW1hcnknLCAnUHJpbWFyeURlY29yYXRpb24/J11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1ByaW1hcnlEZWNvcmF0aW9uJyxcbiAgICAgICAgICAgIGJuZjogW1snXCI/XCInXSwgWydcIipcIiddLCBbJ1wiK1wiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdQcmltYXJ5UHJlRGVjb3JhdGlvbicsXG4gICAgICAgICAgICBibmY6IFtbJ1wiJlwiJ10sIFsnXCIhXCInXSwgWydcIn5cIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVByaW1hcnknLFxuICAgICAgICAgICAgYm5mOiBbWydOQ05hbWUnXSwgWydTdHJpbmdMaXRlcmFsJ10sIFsnQ2hhckNvZGUnXSwgWydDaGFyQ2xhc3MnXSwgWydTdWJJdGVtJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1N1Ykl0ZW0nLFxuICAgICAgICAgICAgYm5mOiBbWydcIihcIicsICdSVUxFX1MqJywgJyVDaG9pY2UnLCAnUlVMRV9TKicsICdcIilcIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnU3RyaW5nTGl0ZXJhbCcsXG4gICAgICAgICAgICBibmY6IFtbYCdcIidgLCAvW15cIl0qLywgYCdcIidgXSwgW2BcIidcImAsIC9bXiddKi8sIGBcIidcImBdXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hhckNvZGUnLFxuICAgICAgICAgICAgYm5mOiBbWydcIiN4XCInLCAvWzAtOWEtekEtWl0rL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGFyQ2xhc3MnLFxuICAgICAgICAgICAgYm5mOiBbW1wiJ1snXCIsIFwiJ14nP1wiLCAnJVJVTEVfQ2hhckNsYXNzXzErJywgJ1wiXVwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclUlVMRV9DaGFyQ2xhc3NfMScsXG4gICAgICAgICAgICBibmY6IFtbJ0NoYXJDb2RlUmFuZ2UnXSwgWydDaGFyUmFuZ2UnXSwgWydDaGFyQ29kZSddLCBbJ1JVTEVfQ2hhciddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX0NoYXInLFxuICAgICAgICAgICAgYm5mOiBbWy9cXHgwOS9dLCBbL1xceDBBL10sIFsvXFx4MEQvXSwgWy9bXFx4MjAtXFx4NWNdL10sIFsvW1xceDVlLVxcdUQ3RkZdL10sIFsvW1xcdUUwMDAtXFx1RkZGRF0vXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0NoYXJSYW5nZScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfQ2hhcicsICdcIi1cIicsICdSVUxFX0NoYXInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0NoYXJDb2RlUmFuZ2UnLFxuICAgICAgICAgICAgYm5mOiBbWydDaGFyQ29kZScsICdcIi1cIicsICdDaGFyQ29kZSddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9XSElURVNQQUNFJyxcbiAgICAgICAgICAgIGJuZjogW1snJVJVTEVfV0hJVEVTUEFDRV9DSEFSKiddLCBbJ0NvbW1lbnQnLCAnUlVMRV9XSElURVNQQUNFKiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9TJyxcbiAgICAgICAgICAgIGJuZjogW1snUlVMRV9XSElURVNQQUNFJywgJ1JVTEVfUyonXSwgWydSVUxFX0VPTCcsICdSVUxFX1MqJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclUlVMRV9XSElURVNQQUNFX0NIQVInLFxuICAgICAgICAgICAgYm5mOiBbWy9cXHgwOS9dLCBbL1xceDIwL11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0NvbW1lbnQnLFxuICAgICAgICAgICAgYm5mOiBbWydcIi8qXCInLCAnJVJVTEVfQ29tbWVudF9Cb2R5KicsICdcIiovXCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVSVUxFX0NvbW1lbnRfQm9keScsXG4gICAgICAgICAgICBibmY6IFtbL1teKl0vXSwgWydcIipcIisnLCAvW14vXSovXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9FT0wnLFxuICAgICAgICAgICAgYm5mOiBbWy9cXHgwRC8sIC9cXHgwQS9dLCBbL1xceDBBL10sIFsvXFx4MEQvXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0xpbmsnLFxuICAgICAgICAgICAgYm5mOiBbW1wiJ1snXCIsICdVcmwnLCBcIiddJ1wiXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1VybCcsXG4gICAgICAgICAgICBibmY6IFtbL1teXFx4NUQ6Lz8jXS8sICdcIjovL1wiJywgL1teXFx4NUQjXSsvLCAnJVVybDE/J11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclVXJsMScsXG4gICAgICAgICAgICBibmY6IFtbJ1wiI1wiJywgJ05DTmFtZSddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH1cbiAgICBdO1xuICAgIEJORi5kZWZhdWx0UGFyc2VyID0gbmV3IFBhcnNlcl8xLlBhcnNlcihCTkYuUlVMRVMsIHsgZGVidWc6IGZhbHNlIH0pO1xuICAgIGNvbnN0IHByZURlY29yYXRpb25SRSA9IC9eKCF8JikvO1xuICAgIGNvbnN0IGRlY29yYXRpb25SRSA9IC8oXFw/fFxcK3xcXCopJC87XG4gICAgY29uc3Qgc3ViRXhwcmVzc2lvblJFID0gL14lLztcbiAgICBmdW5jdGlvbiBnZXRCTkZSdWxlKG5hbWUsIHBhcnNlcikge1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGxldCBkZWNvcmF0aW9uID0gZGVjb3JhdGlvblJFLmV4ZWMobmFtZSk7XG4gICAgICAgICAgICBsZXQgcHJlRGVjb3JhdGlvbiA9IHByZURlY29yYXRpb25SRS5leGVjKG5hbWUpO1xuICAgICAgICAgICAgbGV0IHByZURlY29yYXRpb25UZXh0ID0gcHJlRGVjb3JhdGlvbiA/IHByZURlY29yYXRpb25bMF0gOiAnJztcbiAgICAgICAgICAgIGxldCBkZWNvcmF0aW9uVGV4dCA9IGRlY29yYXRpb24gPyBkZWNvcmF0aW9uWzBdICsgJyAnIDogJyc7XG4gICAgICAgICAgICBsZXQgc3ViZXhwcmVzc2lvbiA9IHN1YkV4cHJlc3Npb25SRS50ZXN0KG5hbWUpO1xuICAgICAgICAgICAgaWYgKHN1YmV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgICAgICBsZXQgbG9uZWx5ID0gaXNMb25lbHlSdWxlKG5hbWUsIHBhcnNlcik7XG4gICAgICAgICAgICAgICAgaWYgKGxvbmVseSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZURlY29yYXRpb25UZXh0ICsgZ2V0Qk5GQm9keShuYW1lLCBwYXJzZXIpICsgZGVjb3JhdGlvblRleHQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZURlY29yYXRpb25UZXh0ICsgJygnICsgZ2V0Qk5GQm9keShuYW1lLCBwYXJzZXIpICsgJyknICsgZGVjb3JhdGlvblRleHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmFtZS5yZXBsYWNlKHByZURlY29yYXRpb25SRSwgcHJlRGVjb3JhdGlvblRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5hbWUuc291cmNlXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFwoPzp4fHUpKFthLXpBLVowLTldKykvZywgJyN4JDEnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFtcXFxcKD86eHx1KShbYS16QS1aMC05XSspLVxcXFwoPzp4fHUpKFthLXpBLVowLTldKylcXF0vZywgJ1sjeCQxLSN4JDJdJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcnVsZSBpcyBhIHN0cmluZyBsaXRlcmFsIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRob3V0IGEgZGVzY2VuZGFudCB0cmVlXG4gICAgZnVuY3Rpb24gaXNMb25lbHlSdWxlKG5hbWUsIHBhcnNlcikge1xuICAgICAgICBsZXQgcnVsZSA9IFBhcnNlcl8xLmZpbmRSdWxlQnlOYW1lKG5hbWUsIHBhcnNlcik7XG4gICAgICAgIHJldHVybiAocnVsZSAmJlxuICAgICAgICAgICAgcnVsZS5ibmYubGVuZ3RoID09IDEgJiZcbiAgICAgICAgICAgIHJ1bGUuYm5mWzBdLmxlbmd0aCA9PSAxICYmXG4gICAgICAgICAgICAocnVsZS5ibmZbMF1bMF0gaW5zdGFuY2VvZiBSZWdFeHAgfHwgcnVsZS5ibmZbMF1bMF1bMF0gPT0gJ1wiJyB8fCBydWxlLmJuZlswXVswXVswXSA9PSBcIidcIikpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRCTkZDaG9pY2UocnVsZXMsIHBhcnNlcikge1xuICAgICAgICByZXR1cm4gcnVsZXMubWFwKHggPT4gZ2V0Qk5GUnVsZSh4LCBwYXJzZXIpKS5qb2luKCcgJyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldEJORkJvZHkobmFtZSwgcGFyc2VyKSB7XG4gICAgICAgIGxldCBydWxlID0gUGFyc2VyXzEuZmluZFJ1bGVCeU5hbWUobmFtZSwgcGFyc2VyKTtcbiAgICAgICAgaWYgKHJ1bGUpXG4gICAgICAgICAgICByZXR1cm4gcnVsZS5ibmYubWFwKHggPT4gZ2V0Qk5GQ2hvaWNlKHgsIHBhcnNlcikpLmpvaW4oJyB8ICcpO1xuICAgICAgICByZXR1cm4gJ1JVTEVfTk9UX0ZPVU5EIHsnICsgbmFtZSArICd9JztcbiAgICB9XG4gICAgZnVuY3Rpb24gZW1pdChwYXJzZXIpIHtcbiAgICAgICAgbGV0IGFjdW11bGF0b3IgPSBbXTtcbiAgICAgICAgcGFyc2VyLmdyYW1tYXJSdWxlcy5mb3JFYWNoKGwgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXiUvLnRlc3QobC5uYW1lKSkge1xuICAgICAgICAgICAgICAgIGxldCByZWNvdmVyID0gbC5yZWNvdmVyID8gJyB7IHJlY292ZXJVbnRpbD0nICsgbC5yZWNvdmVyICsgJyB9JyA6ICcnO1xuICAgICAgICAgICAgICAgIGFjdW11bGF0b3IucHVzaChsLm5hbWUgKyAnIDo6PSAnICsgZ2V0Qk5GQm9keShsLm5hbWUsIHBhcnNlcikgKyByZWNvdmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhY3VtdWxhdG9yLmpvaW4oJ1xcbicpO1xuICAgIH1cbiAgICBCTkYuZW1pdCA9IGVtaXQ7XG4gICAgbGV0IHN1Yml0ZW1zID0gMDtcbiAgICBmdW5jdGlvbiByZXN0YXIodG90YWwsIHJlc3RhKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdyZWJlcmlhIHJlc3RhciAnICsgcmVzdGEgKyAnIGEgJyArIHRvdGFsKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWZmZXJlbmNlIG5vdCBzdXBwb3J0ZWQgeWV0Jyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNvbnZlcnRSZWdleCh0eHQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAodHh0XG4gICAgICAgICAgICAucmVwbGFjZSgvI3goW2EtekEtWjAtOV17NH0pL2csICdcXFxcdSQxJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8jeChbYS16QS1aMC05XXszfSkvZywgJ1xcXFx1MCQxJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8jeChbYS16QS1aMC05XXsyfSkvZywgJ1xcXFx4JDEnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLyN4KFthLXpBLVowLTldezF9KS9nLCAnXFxcXHgwJDEnKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFN1Ykl0ZW1zKHRtcFJ1bGVzLCBzZXEsIHBhcmVudE5hbWUsIHBhcmVudEF0dHJpYnV0ZXMpIHtcbiAgICAgICAgbGV0IGFudGVyaW9yID0gbnVsbDtcbiAgICAgICAgbGV0IGJuZlNlcSA9IFtdO1xuICAgICAgICBzZXEuY2hpbGRyZW4uZm9yRWFjaCgoeCwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKHgudHlwZSA9PSAnTWludXMnKSB7XG4gICAgICAgICAgICAgICAgcmVzdGFyKGFudGVyaW9yLCB4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGRlY29yYXRpb24gPSBzZXEuY2hpbGRyZW5baSArIDFdO1xuICAgICAgICAgICAgZGVjb3JhdGlvbiA9IChkZWNvcmF0aW9uICYmIGRlY29yYXRpb24udHlwZSA9PSAnUHJpbWFyeURlY29yYXRpb24nICYmIGRlY29yYXRpb24udGV4dCkgfHwgJyc7XG4gICAgICAgICAgICBsZXQgcHJlRGVjb3JhdGlvbiA9ICcnO1xuICAgICAgICAgICAgaWYgKGFudGVyaW9yICYmIGFudGVyaW9yLnR5cGUgPT0gJ1ByaW1hcnlQcmVEZWNvcmF0aW9uJykge1xuICAgICAgICAgICAgICAgIHByZURlY29yYXRpb24gPSBhbnRlcmlvci50ZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBpbm5lZCA9IHByZURlY29yYXRpb24gPT0gJ34nID8gMSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChwaW5uZWQpIHtcbiAgICAgICAgICAgICAgICBwcmVEZWNvcmF0aW9uID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzd2l0Y2ggKHgudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ1N1Ykl0ZW0nOlxuICAgICAgICAgICAgICAgICAgICBsZXQgbmFtZSA9ICclJyArIChwYXJlbnROYW1lICsgc3ViaXRlbXMrKyk7XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVJ1bGUodG1wUnVsZXMsIHgsIG5hbWUsIHBhcmVudEF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAgICAgICBibmZTZXEucHVzaChwcmVEZWNvcmF0aW9uICsgbmFtZSArIGRlY29yYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdOQ05hbWUnOlxuICAgICAgICAgICAgICAgICAgICBibmZTZXEucHVzaChwcmVEZWNvcmF0aW9uICsgeC50ZXh0ICsgZGVjb3JhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1N0cmluZ0xpdGVyYWwnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVjb3JhdGlvbiB8fCBwcmVEZWNvcmF0aW9uIHx8ICEvXlsnXCIvKClhLXpBLVowLTkmXy46PSwrKlxcLVxcXlxcXFxdKyQvLnRlc3QoeC50ZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gocHJlRGVjb3JhdGlvbiArIHgudGV4dCArIGRlY29yYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBjIG9mIHgudGV4dC5zbGljZSgxLCAtMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50QXR0cmlidXRlcyAmJiBwYXJlbnRBdHRyaWJ1dGVzW1wiaWdub3JlQ2FzZVwiXSA9PSBcInRydWVcIiAmJiAvW2EtekEtWl0vLnRlc3QoYykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gobmV3IFJlZ0V4cChcIltcIiArIGMudG9VcHBlckNhc2UoKSArIGMudG9Mb3dlckNhc2UoKSArIFwiXVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibmZTZXEucHVzaChuZXcgUmVnRXhwKFBhcnNlcl8xLmVzY2FwZVJlZ0V4cChjKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdDaGFyQ29kZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnQ2hhckNsYXNzJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlY29yYXRpb24gfHwgcHJlRGVjb3JhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld1J1bGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJyUnICsgKHBhcmVudE5hbWUgKyBzdWJpdGVtcysrKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibmY6IFtbY29udmVydFJlZ2V4KHgudGV4dCldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0bXBSdWxlcy5wdXNoKG5ld1J1bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gocHJlRGVjb3JhdGlvbiArIG5ld1J1bGUubmFtZSArIGRlY29yYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2goY29udmVydFJlZ2V4KHgudGV4dCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1ByaW1hcnlQcmVEZWNvcmF0aW9uJzpcbiAgICAgICAgICAgICAgICBjYXNlICdQcmltYXJ5RGVjb3JhdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignIEhPVyBTSE9VTEQgSSBQQVJTRSBUSElTPyAnICsgeC50eXBlICsgJyAtPiAnICsgSlNPTi5zdHJpbmdpZnkoeC50ZXh0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhbnRlcmlvciA9IHg7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYm5mU2VxO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVSdWxlKHRtcFJ1bGVzLCB0b2tlbiwgbmFtZSwgcGFyZW50QXR0cmlidXRlcyA9IHVuZGVmaW5lZCkge1xuICAgICAgICBsZXQgYXR0ck5vZGUgPSB0b2tlbi5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ0F0dHJpYnV0ZXMnKVswXTtcbiAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPSB7fTtcbiAgICAgICAgaWYgKGF0dHJOb2RlKSB7XG4gICAgICAgICAgICBhdHRyTm9kZS5jaGlsZHJlbi5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgICAgICAgIGxldCBuYW1lID0geC5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ05DTmFtZScpWzBdLnRleHQ7XG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgaW4gYXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVG9rZW5FcnJvcl8xLlRva2VuRXJyb3IoJ0R1cGxpY2F0ZWQgYXR0cmlidXRlICcgKyBuYW1lLCB4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNbbmFtZV0gPSB4LmNoaWxkcmVuLmZpbHRlcih4ID0+IHgudHlwZSA9PSAnQXR0cmlidXRlVmFsdWUnKVswXS50ZXh0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGxldCBibmYgPSB0b2tlbi5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ1NlcXVlbmNlT3JEaWZmZXJlbmNlJykubWFwKHMgPT4gZ2V0U3ViSXRlbXModG1wUnVsZXMsIHMsIG5hbWUsIHBhcmVudEF0dHJpYnV0ZXMgPyBwYXJlbnRBdHRyaWJ1dGVzIDogYXR0cmlidXRlcykpO1xuICAgICAgICBsZXQgcnVsZSA9IHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBibmZcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKG5hbWUuaW5kZXhPZignJScpID09IDApXG4gICAgICAgICAgICBydWxlLmZyYWdtZW50ID0gdHJ1ZTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZXNbJ3JlY292ZXJVbnRpbCddKSB7XG4gICAgICAgICAgICBydWxlLnJlY292ZXIgPSBhdHRyaWJ1dGVzWydyZWNvdmVyVW50aWwnXTtcbiAgICAgICAgICAgIGlmIChydWxlLmJuZi5sZW5ndGggPiAxKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcignb25seSBvbmUtb3B0aW9uIHByb2R1Y3Rpb25zIGFyZSBzdWl0YWJsZSBmb3IgZXJyb3IgcmVjb3ZlcmluZycsIHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ3BpbicgaW4gYXR0cmlidXRlcykge1xuICAgICAgICAgICAgbGV0IG51bSA9IHBhcnNlSW50KGF0dHJpYnV0ZXNbJ3BpbiddKTtcbiAgICAgICAgICAgIGlmICghaXNOYU4obnVtKSkge1xuICAgICAgICAgICAgICAgIHJ1bGUucGlubmVkID0gbnVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJ1bGUuYm5mLmxlbmd0aCA+IDEpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRva2VuRXJyb3JfMS5Ub2tlbkVycm9yKCdvbmx5IG9uZS1vcHRpb24gcHJvZHVjdGlvbnMgYXJlIHN1aXRhYmxlIGZvciBwaW5uaW5nJywgdG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIGlmICgnd3MnIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIHJ1bGUuaW1wbGljaXRXcyA9IGF0dHJpYnV0ZXNbJ3dzJ10gIT0gJ2V4cGxpY2l0JztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJ1bGUuaW1wbGljaXRXcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcnVsZS5mcmFnbWVudCA9IHJ1bGUuZnJhZ21lbnQgfHwgYXR0cmlidXRlc1snZnJhZ21lbnQnXSA9PSAndHJ1ZSc7XG4gICAgICAgIHJ1bGUuc2ltcGxpZnlXaGVuT25lQ2hpbGRyZW4gPSBhdHRyaWJ1dGVzWydzaW1wbGlmeVdoZW5PbmVDaGlsZHJlbiddID09ICd0cnVlJztcbiAgICAgICAgdG1wUnVsZXMucHVzaChydWxlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0UnVsZXMoc291cmNlLCBwYXJzZXIgPSBCTkYuZGVmYXVsdFBhcnNlcikge1xuICAgICAgICBsZXQgYXN0ID0gcGFyc2VyLmdldEFTVChzb3VyY2UpO1xuICAgICAgICBpZiAoIWFzdClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHBhcnNlICcgKyBzb3VyY2UpO1xuICAgICAgICBpZiAoYXN0LmVycm9ycyAmJiBhc3QuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgYXN0LmVycm9yc1swXTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaW1wbGljaXRXcyA9IG51bGw7XG4gICAgICAgIGxldCBhdHRyTm9kZSA9IGFzdC5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ0F0dHJpYnV0ZXMnKVswXTtcbiAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPSB7fTtcbiAgICAgICAgaWYgKGF0dHJOb2RlKSB7XG4gICAgICAgICAgICBhdHRyTm9kZS5jaGlsZHJlbi5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgICAgICAgIGxldCBuYW1lID0geC5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ05DTmFtZScpWzBdLnRleHQ7XG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgaW4gYXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVG9rZW5FcnJvcl8xLlRva2VuRXJyb3IoJ0R1cGxpY2F0ZWQgYXR0cmlidXRlICcgKyBuYW1lLCB4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNbbmFtZV0gPSB4LmNoaWxkcmVuLmZpbHRlcih4ID0+IHgudHlwZSA9PSAnQXR0cmlidXRlVmFsdWUnKVswXS50ZXh0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGltcGxpY2l0V3MgPSBhdHRyaWJ1dGVzWyd3cyddID09ICdpbXBsaWNpdCc7XG4gICAgICAgIGxldCB0bXBSdWxlcyA9IFtdO1xuICAgICAgICBhc3QuY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdQcm9kdWN0aW9uJykubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IHguY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdOQ05hbWUnKVswXS50ZXh0O1xuICAgICAgICAgICAgY3JlYXRlUnVsZSh0bXBSdWxlcywgeCwgbmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0bXBSdWxlcy5mb3JFYWNoKHJ1bGUgPT4ge1xuICAgICAgICAgICAgaWYgKHJ1bGUuaW1wbGljaXRXcyA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICBydWxlLmltcGxpY2l0V3MgPSBpbXBsaWNpdFdzO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRtcFJ1bGVzO1xuICAgIH1cbiAgICBCTkYuZ2V0UnVsZXMgPSBnZXRSdWxlcztcbiAgICBmdW5jdGlvbiBUcmFuc2Zvcm0oc291cmNlLCBzdWJQYXJzZXIgPSBCTkYuZGVmYXVsdFBhcnNlcikge1xuICAgICAgICByZXR1cm4gZ2V0UnVsZXMoc291cmNlLmpvaW4oJycpLCBzdWJQYXJzZXIpO1xuICAgIH1cbiAgICBCTkYuVHJhbnNmb3JtID0gVHJhbnNmb3JtO1xuICAgIGNsYXNzIFBhcnNlciBleHRlbmRzIFBhcnNlcl8xLlBhcnNlciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHNvdXJjZSwgb3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3Qgc3ViUGFyc2VyID0gb3B0aW9ucyAmJiBvcHRpb25zLmRlYnVnUnVsZXNQYXJzZXIgPT09IHRydWUgPyBuZXcgUGFyc2VyXzEuUGFyc2VyKEJORi5SVUxFUywgeyBkZWJ1ZzogdHJ1ZSB9KSA6IEJORi5kZWZhdWx0UGFyc2VyO1xuICAgICAgICAgICAgc3VwZXIoZ2V0UnVsZXMoc291cmNlLCBzdWJQYXJzZXIpLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBlbWl0U291cmNlKCkge1xuICAgICAgICAgICAgcmV0dXJuIGVtaXQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQk5GLlBhcnNlciA9IFBhcnNlcjtcbn0pKEJORiB8fCAoQk5GID0ge30pKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEJORjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUN1c3RvbS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBCTkZfMSA9IHJlcXVpcmUoXCIuL0JORlwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkJORlwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQk5GXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBXM0NFQk5GXzEgPSByZXF1aXJlKFwiLi9XM0NFQk5GXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVzNDXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBXM0NFQk5GXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBDdXN0b21fMSA9IHJlcXVpcmUoXCIuL0N1c3RvbVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkN1c3RvbVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQ3VzdG9tXzEuZGVmYXVsdDsgfSB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFBhcnNlcl8xID0gcmVxdWlyZShcIi4vUGFyc2VyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUGFyc2VyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBQYXJzZXJfMS5QYXJzZXI7IH0gfSk7XG52YXIgVG9rZW5FcnJvcl8xID0gcmVxdWlyZShcIi4vVG9rZW5FcnJvclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRva2VuRXJyb3JcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFRva2VuRXJyb3JfMS5Ub2tlbkVycm9yOyB9IH0pO1xuZXhwb3J0cy5HcmFtbWFycyA9IHJlcXVpcmUoXCIuL0dyYW1tYXJzXCIpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnBhcnNlRm9ybXVsYSA9IGV4cG9ydHMucGFyc2VBbmRBcHBseSA9IGV4cG9ydHMuU291cmNlID0gZXhwb3J0cy5Gb3JtdWxhID0gdm9pZCAwO1xuY29uc3QgbmV2ZXJ0aHJvd18xID0gcmVxdWlyZShcIi4uL25ldmVydGhyb3cvbmV2ZXJ0aHJvd1wiKTtcbmNvbnN0IGFsZ2VicmFpY19vcGVyYXRpb25fMSA9IHJlcXVpcmUoXCIuL2FsZ2VicmFpY19vcGVyYXRpb25cIik7XG5jb25zdCBhc3RfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2FzdF91dGlsc1wiKTtcbmNvbnN0IGNvbmRpdGlvbmFsX2Z1bmN0aW9uXzEgPSByZXF1aXJlKFwiLi9jb25kaXRpb25hbF9mdW5jdGlvblwiKTtcbmNvbnN0IGNvbnN0YW50XzEgPSByZXF1aXJlKFwiLi9jb25zdGFudFwiKTtcbmNvbnN0IGRlc3RpbmF0aW9uXzEgPSByZXF1aXJlKFwiLi9kZXN0aW5hdGlvblwiKTtcbmNvbnN0IGRpc3BsYXlfZGlyZWN0aXZlXzEgPSByZXF1aXJlKFwiLi9kaXNwbGF5X2RpcmVjdGl2ZVwiKTtcbmNvbnN0IHJhbmdlXzEgPSByZXF1aXJlKFwiLi9yYW5nZVwiKTtcbmNvbnN0IHJlZmVyZW5jZV8xID0gcmVxdWlyZShcIi4vcmVmZXJlbmNlXCIpO1xuY29uc3Qgc2luZ2xlX3BhcmFtX2Z1bmN0aW9uXzEgPSByZXF1aXJlKFwiLi9zaW5nbGVfcGFyYW1fZnVuY3Rpb25cIik7XG5jb25zdCBlYm5mXzEgPSByZXF1aXJlKFwiZWJuZlwiKTtcbmNvbnN0IGxvZGFzaF8xID0gcmVxdWlyZShcImxvZGFzaFwiKTtcbi8qKlxuICogVzNDIGdyYW1tYXIgZGVzY3JpYmluZyBhIHZhbGlkIGZvcm11bGEgYXQgdGhlIGJvdHRvbSBvZiBhIHRhYmxlLlxuICpcbiAqIFRoZSBsaWJyYXJ5IGJlaW5nIHVzZWQgdG8gcGFyc2UgdGhlIGZvcm11bGEgZG9lcyBub3Qgc3Vwb3J0IEVCTkYsIG9ubHkgQk5GLFxuICogc28gVzNDIHN5bnRheCB3YXMgdXNlZCBpbiBvcmRlciB0byBnZXQgYWNjZXNzIHRvIGV4dGVuZGVkIGZlYXR1cmVzLlxuICpcbiAqIFRoZSBwYXJzZXIgZ2VuZXJhdGVzIGEgUEVHIHBhcnNlciwgd2hpYyBpcyBub3QgYWJsZSB0byBoYW5kbGUgYW1iaWd1aXR5LiBUaGVcbiAqIG9yZGVyIG9mIGNvbnN0cnVjdGlvbnMgaXMgc2lnbmlmaWNhbnQuXG4gKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2x5cy1sYW5nL25vZGUtZWJuZi9pc3N1ZXMvMzRcbiAqL1xuY29uc3QgcGFyc2VyR3JhbW1hciA9IGBcbnRibGZtX2xpbmUgICA6Oj0gXCI8IS0tIFRCTEZNOiBcIiBmb3JtdWxhX2xpc3QgXCIgLS0+XCJcbmZvcm11bGFfbGlzdCA6Oj0gZm9ybXVsYSAoIFwiOjpcIiBmb3JtdWxhX2xpc3QgKT9cbmZvcm11bGEgICAgICA6Oj0gZGVzdGluYXRpb24gXCI9XCIgc291cmNlIGRpc3BsYXlfZGlyZWN0aXZlP1xuXG5zb3VyY2UgICAgICAgICAgIDo6PSByYW5nZSB8IHNvdXJjZV9yZWZlcmVuY2UgfCBzaW5nbGVfcGFyYW1fZnVuY3Rpb25fY2FsbCB8IGNvbmRpdGlvbmFsX2Z1bmN0aW9uX2NhbGwgfCBhbGdlYnJhaWNfb3BlcmF0aW9uIHwgZmxvYXQgfCByZWFsXG5yYW5nZSAgICAgICAgICAgIDo6PSBzb3VyY2VfcmVmZXJlbmNlIFwiLi5cIiBzb3VyY2VfcmVmZXJlbmNlXG5zb3VyY2VfcmVmZXJlbmNlIDo6PSBhYnNvbHV0ZV9yZWZlcmVuY2UgfCByZWxhdGl2ZV9yZWZlcmVuY2VcbmRlc3RpbmF0aW9uICAgICAgOjo9IHJhbmdlIHwgYWJzb2x1dGVfcmVmZXJlbmNlXG5cbnJlbGF0aXZlX3JlZmVyZW5jZSA6Oj0gKHJlbGF0aXZlX3JvdyB8IGFic29sdXRlX3JvdykgKHJlbGF0aXZlX2NvbHVtbiB8IGFic29sdXRlX2NvbHVtbikgfCByZWxhdGl2ZV9yb3cgfCByZWxhdGl2ZV9jb2x1bW5cbnJlbGF0aXZlX3JvdyA6Oj0gXCJAXCIgKCBcIi1cIiB8IFwiK1wiICkgaW50XG5yZWxhdGl2ZV9jb2x1bW4gOjo9IFwiJFwiICggXCItXCIgfCBcIitcIiApIGludFxuXG5hYnNvbHV0ZV9yZWZlcmVuY2UgOjo9IGFic29sdXRlX3JvdyBhYnNvbHV0ZV9jb2x1bW4gfCBhYnNvbHV0ZV9yb3cgfCBhYnNvbHV0ZV9jb2x1bW5cbmFic29sdXRlX3JvdyA6Oj0gXCJAXCIgKCBcIklcIiB8IFwiPFwiIHwgXCI+XCIgfCBpbnQgKVxuYWJzb2x1dGVfY29sdW1uIDo6PSBcIiRcIiAoIFwiPFwiIHwgXCI+XCIgfCBpbnQgKVxuXG5zaW5nbGVfcGFyYW1fZnVuY3Rpb25fY2FsbCA6Oj0gc2luZ2xlX3BhcmFtX2Z1bmN0aW9uIFwiKFwiIHNvdXJjZSBcIilcIiBcbnNpbmdsZV9wYXJhbV9mdW5jdGlvbiAgICAgIDo6PSBcIm1lYW5cIiB8IFwic3VtXCJcblxuY29uZGl0aW9uYWxfZnVuY3Rpb25fY2FsbCA6Oj0gXCJpZihcIiBwcmVkaWNhdGUgXCIsXCIgXCIgXCI/IHNvdXJjZSBcIixcIiBcIiBcIj8gc291cmNlIFwiKVwiXG5wcmVkaWNhdGUgICAgICAgICAgICAgICAgIDo6PSBzb3VyY2Vfd2l0aG91dF9yYW5nZSBjb25kaXRpb25hbF9vcGVyYXRvciBzb3VyY2Vfd2l0aG91dF9yYW5nZVxuc291cmNlX3dpdGhvdXRfcmFuZ2UgICAgICA6Oj0gc291cmNlX3JlZmVyZW5jZSB8IHNpbmdsZV9wYXJhbV9mdW5jdGlvbl9jYWxsIHwgY29uZGl0aW9uYWxfZnVuY3Rpb25fY2FsbCB8IGFsZ2VicmFpY19vcGVyYXRpb24gfCBmbG9hdCB8IHJlYWxcbmNvbmRpdGlvbmFsX29wZXJhdG9yICAgICAgOjo9IFwiPlwiIHwgXCI8XCIgfCBcIj49XCIgfCBcIjw9XCIgfCBcIj09XCIgfCBcIiE9XCJcblxuYWxnZWJyYWljX29wZXJhdGlvbiA6Oj0gXCIoXCIgc291cmNlIFwiIFwiPyBhbGdlYnJhaWNfb3BlcmF0b3IgXCIgXCI/IHNvdXJjZSBcIilcIlxuYWxnZWJyYWljX29wZXJhdG9yICA6Oj0gXCIrXCIgfCBcIi1cIiB8IFwiKlwiIHwgXCIvXCJcblxuZGlzcGxheV9kaXJlY3RpdmUgICAgICAgIDo6PSBcIjtcIiBkaXNwbGF5X2RpcmVjdGl2ZV9vcHRpb25cbmRpc3BsYXlfZGlyZWN0aXZlX29wdGlvbiA6Oj0gZm9ybWF0dGluZ19kaXJlY3RpdmVcbmZvcm1hdHRpbmdfZGlyZWN0aXZlICAgICA6Oj0gXCIlLlwiIGludCBcImZcIlxuXG5mbG9hdCA6Oj0gXCItXCI/IGludCBcIi5cIiBpbnRcbnJlYWwgOjo9IFwiLVwiPyBpbnRcbmludCAgOjo9IFswLTldK1xuYDtcbmNsYXNzIEZvcm11bGEge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgdGhpcy5tZXJnZSA9ICh0YWJsZSkgPT4gdGhpcy5kZXN0aW5hdGlvbi5tZXJnZSh0aGlzLnNvdXJjZSwgdGFibGUpO1xuICAgICAgICBsZXQgZm9ybWF0dGVyID0gbmV3IGRpc3BsYXlfZGlyZWN0aXZlXzEuRGVmYXVsdEZvcm1hdHRlcigpO1xuICAgICAgICBpZiAoYXN0LmNoaWxkcmVuLmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgZm9ybWF0dGVyID0gbmV3IGRpc3BsYXlfZGlyZWN0aXZlXzEuRGlzcGxheURpcmVjdGl2ZShhc3QuY2hpbGRyZW5bMl0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25fMS5uZXdEZXN0aW5hdGlvbihhc3QuY2hpbGRyZW5bMF0sIHRhYmxlLCBmb3JtYXR0ZXIpO1xuICAgICAgICBpZiAoZGVzdGluYXRpb24uaXNFcnIoKSkge1xuICAgICAgICAgICAgdGhyb3cgZGVzdGluYXRpb24uZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uLnZhbHVlO1xuICAgICAgICB0aGlzLnNvdXJjZSA9IG5ldyBTb3VyY2UoYXN0LmNoaWxkcmVuWzFdLCB0YWJsZSk7XG4gICAgfVxufVxuZXhwb3J0cy5Gb3JtdWxhID0gRm9ybXVsYTtcbmNsYXNzIFNvdXJjZSB7XG4gICAgY29uc3RydWN0b3IoYXN0LCB0YWJsZSkge1xuICAgICAgICAvKipcbiAgICAgICAgICogZ2V0VmFsdWUgcmV0dXJucyB0aGUgZXZhbHVhdGVkIHZhbHVlIGZvciB0aGlzIHNvdXJjZSByZWN1cnNpdmVseS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZ2V0VmFsdWUgPSAodGFibGUsIGN1cnJlbnRDZWxsKSA9PiB0aGlzLmxvY2F0aW9uRGVzY3JpcHRvci5nZXRWYWx1ZSh0YWJsZSwgY3VycmVudENlbGwpO1xuICAgICAgICBpZiAoYXN0LnR5cGUgIT09ICdzb3VyY2UnICYmIGFzdC50eXBlICE9PSAnc291cmNlX3dpdGhvdXRfcmFuZ2UnKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignSW52YWxpZCBBU1QgdG9rZW4gdHlwZSBvZiAnICsgYXN0LnR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhc3QuY2hpbGRyZW4ubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignVW5leHBlY3RlZCBjaGlsZHJlbiBsZW5ndGggaW4gU291cmNlJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyYW1DaGlsZCA9IGFzdC5jaGlsZHJlblswXTtcbiAgICAgICAgY29uc3QgdnAgPSBuZXdWYWx1ZVByb3ZpZGVyKHBhcmFtQ2hpbGQsIHRhYmxlKTtcbiAgICAgICAgaWYgKHZwLmlzRXJyKCkpIHtcbiAgICAgICAgICAgIHRocm93IHZwLmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9jYXRpb25EZXNjcmlwdG9yID0gdnAudmFsdWU7XG4gICAgfVxufVxuZXhwb3J0cy5Tb3VyY2UgPSBTb3VyY2U7XG5jb25zdCBuZXdWYWx1ZVByb3ZpZGVyID0gKGFzdCwgdGFibGUpID0+IHtcbiAgICB0cnkge1xuICAgICAgICBzd2l0Y2ggKGFzdC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdyYW5nZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgcmFuZ2VfMS5SYW5nZShhc3QsIHRhYmxlKSk7XG4gICAgICAgICAgICBjYXNlICdzb3VyY2VfcmVmZXJlbmNlJzpcbiAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAxKTtcbiAgICAgICAgICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIobGVuZ3RoRXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyByZWZlcmVuY2VfMS5SZWZlcmVuY2UoYXN0LmNoaWxkcmVuWzBdLCB0YWJsZSkpO1xuICAgICAgICAgICAgY2FzZSAnc2luZ2xlX3BhcmFtX2Z1bmN0aW9uX2NhbGwnOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IHNpbmdsZV9wYXJhbV9mdW5jdGlvbl8xLlNpbmdsZVBhcmFtRnVuY3Rpb25DYWxsKGFzdCwgdGFibGUpKTtcbiAgICAgICAgICAgIGNhc2UgJ2NvbmRpdGlvbmFsX2Z1bmN0aW9uX2NhbGwnOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IGNvbmRpdGlvbmFsX2Z1bmN0aW9uXzEuQ29uZGl0aW9uYWxGdW5jdGlvbkNhbGwoYXN0LCB0YWJsZSkpO1xuICAgICAgICAgICAgY2FzZSAnYWxnZWJyYWljX29wZXJhdGlvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgYWxnZWJyYWljX29wZXJhdGlvbl8xLkFsZ2VicmFpY09wZXJhdGlvbihhc3QsIHRhYmxlKSk7XG4gICAgICAgICAgICBjYXNlICdyZWFsJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBjb25zdGFudF8xLkNvbnN0YW50KGFzdCwgdGFibGUpKTtcbiAgICAgICAgICAgIGNhc2UgJ2Zsb2F0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBjb25zdGFudF8xLkNvbnN0YW50KGFzdCwgdGFibGUpKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1VucmVjb2duaXplZCB2YWx1ZVByb3ZpZGVyIHR5cGUgJyArIGFzdC50eXBlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIoZXJyb3IpO1xuICAgIH1cbn07XG5jb25zdCBwYXJzZUFuZEFwcGx5ID0gKGZvcm11bGFMaW5lcywgdGFibGUpID0+IHtcbiAgICAvLyBQYXJzZSBlYWNoIGZvcm11bGEgbGluZSwgZmxhdHRlbmluZyB0aGUgcmVzdWx0aW5nIGxpc3RzIG9mIGZvcm11bGFzIGludG8gYVxuICAgIC8vIHNpbmdsZSBsaXN0LCBidXQgcmV0dXJuaW5nIGFuIGVycm9yIGlmIGFueSBmb3JtdWxhIGZhaWxzIHRvIHBhcnNlLlxuICAgIGNvbnN0IGZvcm11bGFzID0gZm9ybXVsYUxpbmVzLnJlZHVjZSgocHJldiwgZm9ybXVsYUxpbmUpID0+IHByZXYuYW5kVGhlbigoY3VycmVudEZvcm11bGFzKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0Zvcm11bGFzID0gZXhwb3J0cy5wYXJzZUZvcm11bGEoZm9ybXVsYUxpbmUsIHRhYmxlKTtcbiAgICAgICAgaWYgKG5ld0Zvcm11bGFzLmlzRXJyKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXdGb3JtdWxhcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKGxvZGFzaF8xLmNvbmNhdChuZXdGb3JtdWxhcy52YWx1ZSwgY3VycmVudEZvcm11bGFzKSk7XG4gICAgfSksIG5ldmVydGhyb3dfMS5vayhbXSkpO1xuICAgIC8vIElmIHRoZXJlIGlzIG5vIGVycm9yLFxuICAgIHJldHVybiBmb3JtdWxhcy5hbmRUaGVuKChpbm5lckZvcm11bGFzKSA9PiBcbiAgICAvLyBmb3IgZWFjaCBmb3JtdWxhXG4gICAgaW5uZXJGb3JtdWxhcy5yZWR1Y2VSaWdodCgocHJldlZhbHVlLCBmb3JtdWxhKSA9PiBcbiAgICAvLyBJZiB0aGUgcHJldmlvdXMgZm9ybXVsYSBkaWRuJ3QgZ2l2ZSBhbiBlcnJvclxuICAgIHByZXZWYWx1ZS5hbmRUaGVuKChwcmV2VGFibGUpID0+IFxuICAgIC8vIGF0dGVtcHQgdG8gYXBwbHkgdGhpcyBmb3JtdWxhIHRvIHRoZSB0YWJsZSBhbmQgcmV0dXJuIHRoZSByZXN1bHRcbiAgICBmb3JtdWxhLm1lcmdlKHByZXZUYWJsZSkpLCBcbiAgICAvLyBTdGFydCB3aXRoIHRoZSBjdXJyZW50IHRhYmxlIHN0YXRlXG4gICAgbmV2ZXJ0aHJvd18xLm9rKHRhYmxlKSkpO1xufTtcbmV4cG9ydHMucGFyc2VBbmRBcHBseSA9IHBhcnNlQW5kQXBwbHk7XG4vKipcbiAqIFBhcnNlIHRoZSBwcm92aWRlZCBsaW5lLCByZXR1cm5pbmcgYW55IGZvdW5kIGZvcm11bGFzLiBBIHNpbmdsZSBsaW5lIG1heVxuICogY29udGFpbiB6ZXJvIG9yIG1vcmUgZm9ybXVsYXMuXG4gKlxuICogQHBhcmFtIGxpbmUgQSBsaW5lIG9mIHRoZSBmb3JtIGA8IS0tIFRCRk06IHtGT1JNVUxBfTo6e0ZPUk1VTEF9IC0tPmBcbiAqL1xuY29uc3QgcGFyc2VGb3JtdWxhID0gKGxpbmUsIHRhYmxlKSA9PiB7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IGVibmZfMS5HcmFtbWFycy5XM0MuUGFyc2VyKHBhcnNlckdyYW1tYXIpO1xuICAgIGNvbnN0IGFzdCA9IHBhcnNlci5nZXRBU1QobGluZSk7XG4gICAgLy8gVE9ETzogRGV0ZXJtaW5lIGhvdyB0byByZXR1cm4gZXJyb3JzIHdoZW4gYSBmb3JtdWxhLWxpa2Ugc3RyaW5nXG4gICAgLy8gICAgICAgaXMgbm90IGFjdHVhbGx5IGEgdmFsaWQgZm9ybXVsYS5cbiAgICBpZiAoIWFzdCkge1xuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihuZXcgRXJyb3IoYEZvcm11bGEgJyR7bGluZX0nIGNvdWxkIG5vdCBiZSBwYXJzZWRgKSk7XG4gICAgfVxuICAgIGNvbnN0IHR5cGVFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICd0YmxmbV9saW5lJyk7XG4gICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycih0eXBlRXJyb3IpO1xuICAgIH1cbiAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAxKTtcbiAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIobGVuZ3RoRXJyb3IpO1xuICAgIH1cbiAgICBsZXQgdW5wYXJzZWRGb3JtdWxhcyA9IGFzdC5jaGlsZHJlblswXS5jaGlsZHJlbjtcbiAgICBjb25zdCBmb3JtdWxhcyA9IFtdO1xuICAgIHRyeSB7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGZvcm11bGFzLnB1c2gobmV3IEZvcm11bGEodW5wYXJzZWRGb3JtdWxhc1swXSwgdGFibGUpKTtcbiAgICAgICAgICAgIGlmICh1bnBhcnNlZEZvcm11bGFzLmxlbmd0aCA+IDEgJiYgdW5wYXJzZWRGb3JtdWxhc1sxXS50eXBlID09PSAnZm9ybXVsYV9saXN0Jykge1xuICAgICAgICAgICAgICAgIHVucGFyc2VkRm9ybXVsYXMgPSB1bnBhcnNlZEZvcm11bGFzWzFdLmNoaWxkcmVuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdW5wYXJzZWRGb3JtdWxhcyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlICh1bnBhcnNlZEZvcm11bGFzLmxlbmd0aCA+IDApO1xuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKGZvcm11bGFzKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKGVycm9yKTtcbiAgICB9XG59O1xuZXhwb3J0cy5wYXJzZUZvcm11bGEgPSBwYXJzZUZvcm11bGE7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVGFibGUgPSB2b2lkIDA7XG5jb25zdCBjYWxjXzEgPSByZXF1aXJlKFwiLi9jYWxjL2NhbGNcIik7XG5jb25zdCBmb2N1c18xID0gcmVxdWlyZShcIi4vZm9jdXNcIik7XG5jb25zdCBwb2ludF8xID0gcmVxdWlyZShcIi4vcG9pbnRcIik7XG5jb25zdCByYW5nZV8xID0gcmVxdWlyZShcIi4vcmFuZ2VcIik7XG4vKipcbiAqIEEgYFRhYmxlYCBvYmplY3QgcmVwcmVzZW50cyBhIHRhYmxlLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIFRhYmxlIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGBUYWJsZWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvd3MgLSBBbiBhcnJheSBvZiByb3dzIHRoYXQgdGhlIHRhYmxlIGNvbnRhaW5zLlxuICAgICAqIEBwYXJhbSBmb3JtdWxhcyAtIEFuIGFycmF5IG9mIGZvcm11bGFzIGF0dGFjaGVkIHRvIHRoZSB0YWJsZS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihyb3dzKSB7XG4gICAgICAgIHRoaXMuX3Jvd3MgPSByb3dzLnNsaWNlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG51bWJlciBvZiByb3dzIGluIHRoZSB0YWJsZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2Ygcm93cy5cbiAgICAgKi9cbiAgICBnZXRIZWlnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dzLmxlbmd0aDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbWF4aW11bSB3aWR0aCBvZiB0aGUgcm93cyBpbiB0aGUgdGFibGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgbWF4aW11bSB3aWR0aCBvZiB0aGUgcm93cy5cbiAgICAgKi9cbiAgICBnZXRXaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd3NcbiAgICAgICAgICAgIC5tYXAoKHJvdykgPT4gcm93LmdldFdpZHRoKCkpXG4gICAgICAgICAgICAucmVkdWNlKCh4LCB5KSA9PiBNYXRoLm1heCh4LCB5KSwgMCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHdpZHRoIG9mIHRoZSBoZWFkZXIgcm93LlxuICAgICAqIEFzc3VtZXMgdGhhdCBpdCBpcyBjYWxsZWQgb24gYSB2YWxpZCB0YWJsZSB3aXRoIGEgaGVhZGVyIHJvdy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSB3aWR0aCBvZiB0aGUgaGVhZGVyIHJvd1xuICAgICAqL1xuICAgIGdldEhlYWRlcldpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93c1swXS5nZXRXaWR0aCgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSByb3dzIHRoYXQgdGhlIHRhYmxlIGNvbnRhaW5zLlxuICAgICAqXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgdGhlIHJvd3MuXG4gICAgICovXG4gICAgZ2V0Um93cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd3Muc2xpY2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZGVsaW1pdGVyIHJvdyBvZiB0aGUgdGFibGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgZGVsaW1pdGVyIHJvdzsgYHVuZGVmaW5lZGAgaWYgdGhlcmUgaXMgbm90IGRlbGltaXRlciByb3cuXG4gICAgICovXG4gICAgZ2V0RGVsaW1pdGVyUm93KCkge1xuICAgICAgICBjb25zdCByb3cgPSB0aGlzLl9yb3dzWzFdO1xuICAgICAgICBpZiAocm93ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvdy5pc0RlbGltaXRlcigpKSB7XG4gICAgICAgICAgICByZXR1cm4gcm93O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgYSBjZWxsIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93SW5kZXggLSBSb3cgaW5kZXggb2YgdGhlIGNlbGwuXG4gICAgICogQHBhcmFtIGNvbHVtbkluZGV4IC0gQ29sdW1uIGluZGV4IG9mIHRoZSBjZWxsLlxuICAgICAqIEByZXR1cm5zIFRoZSBjZWxsIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXg7IGB1bmRlZmluZWRgIGlmIG5vdCBmb3VuZC5cbiAgICAgKi9cbiAgICBnZXRDZWxsQXQocm93SW5kZXgsIGNvbHVtbkluZGV4KSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuX3Jvd3Nbcm93SW5kZXhdO1xuICAgICAgICBpZiAocm93ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvdy5nZXRDZWxsQXQoY29sdW1uSW5kZXgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjZWxsIGF0IHRoZSBmb2N1cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb2N1cyAtIEZvY3VzIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyBUaGUgY2VsbCBhdCB0aGUgZm9jdXM7IGB1bmRlZmluZWRgIGlmIG5vdCBmb3VuZC5cbiAgICAgKi9cbiAgICBnZXRGb2N1c2VkQ2VsbChmb2N1cykge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDZWxsQXQoZm9jdXMucm93LCBmb2N1cy5jb2x1bW4pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgdGFibGUgdG8gYW4gYXJyYXkgb2YgdGV4dCByZXByZXNlbnRhdGlvbnMgb2YgdGhlIHJvd3MuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB0ZXh0IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgcm93cy5cbiAgICAgKi9cbiAgICB0b0xpbmVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93cy5tYXAoKHJvdykgPT4gcm93LnRvVGV4dCgpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyBhIGNlbGwgaW4gdGhlIHRhYmxlIHRvIGEgbmV3IHZhbHVlLCByZXR1cm5pbmcgYSBjb3B5IG9mIHRoZSB0YWJsZVxuICAgICAqIHdpdGggdGhlIG1vZGlmaWVkIHZhbHVlLlxuICAgICAqXG4gICAgICogSWYgYW4gaW52YWxpZCBpbmRleCBpcyBwcm92aWRlZCwgdGhlIHRhYmxlIHdpbGwgYmUgdW5jaGFuZ2VkLlxuICAgICAqL1xuICAgIHNldENlbGxBdChyb3dJbmRleCwgY29sdW1uSW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IHJvd3MgPSB0aGlzLmdldFJvd3MoKTsgLy8gYSBjb3B5XG4gICAgICAgIHJvd3Nbcm93SW5kZXhdID0gcm93c1tyb3dJbmRleF0uc2V0Q2VsbEF0KGNvbHVtbkluZGV4LCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGUocm93cyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGEgZm9jdXMgZnJvbSBhIHBvaW50IGluIHRoZSB0ZXh0IGVkaXRvci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwb3MgLSBBIHBvaW50IGluIHRoZSB0ZXh0IGVkaXRvci5cbiAgICAgKiBAcGFyYW0gcm93T2Zmc2V0IC0gVGhlIHJvdyBpbmRleCB3aGVyZSB0aGUgdGFibGUgc3RhcnRzIGluIHRoZSB0ZXh0IGVkaXRvci5cbiAgICAgKiBAcmV0dXJucyBBIGZvY3VzIG9iamVjdCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBzcGVjaWZpZWQgcG9pbnQ7XG4gICAgICogYHVuZGVmaW5lZGAgaWYgdGhlIHJvdyBpbmRleCBpcyBvdXQgb2YgYm91bmRzLlxuICAgICAqL1xuICAgIGZvY3VzT2ZQb3NpdGlvbihwb3MsIHJvd09mZnNldCkge1xuICAgICAgICBjb25zdCByb3dJbmRleCA9IHBvcy5yb3cgLSByb3dPZmZzZXQ7XG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuX3Jvd3Nbcm93SW5kZXhdO1xuICAgICAgICBpZiAocm93ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvcy5jb2x1bW4gPCByb3cubWFyZ2luTGVmdC5sZW5ndGggKyAxKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IGZvY3VzXzEuRm9jdXMocm93SW5kZXgsIC0xLCBwb3MuY29sdW1uKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjZWxsV2lkdGhzID0gcm93LmdldENlbGxzKCkubWFwKChjZWxsKSA9PiBjZWxsLnJhd0NvbnRlbnQubGVuZ3RoKTtcbiAgICAgICAgbGV0IGNvbHVtblBvcyA9IHJvdy5tYXJnaW5MZWZ0Lmxlbmd0aCArIDE7IC8vIGxlZnQgbWFyZ2luICsgYSBwaXBlXG4gICAgICAgIGxldCBjb2x1bW5JbmRleCA9IDA7XG4gICAgICAgIGZvciAoOyBjb2x1bW5JbmRleCA8IGNlbGxXaWR0aHMubGVuZ3RoOyBjb2x1bW5JbmRleCsrKSB7XG4gICAgICAgICAgICBpZiAoY29sdW1uUG9zICsgY2VsbFdpZHRoc1tjb2x1bW5JbmRleF0gKyAxID4gcG9zLmNvbHVtbikge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29sdW1uUG9zICs9IGNlbGxXaWR0aHNbY29sdW1uSW5kZXhdICsgMTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvZmZzZXQgPSBwb3MuY29sdW1uIC0gY29sdW1uUG9zO1xuICAgICAgICByZXR1cm4gbmV3IGZvY3VzXzEuRm9jdXMocm93SW5kZXgsIGNvbHVtbkluZGV4LCBvZmZzZXQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyBhIHBvc2l0aW9uIGluIHRoZSB0ZXh0IGVkaXRvciBmcm9tIGEgZm9jdXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9jdXMgLSBBIGZvY3VzIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gcm93T2Zmc2V0IC0gVGhlIHJvdyBpbmRleCB3aGVyZSB0aGUgdGFibGUgc3RhcnRzIGluIHRoZSB0ZXh0IGVkaXRvci5cbiAgICAgKiBAcmV0dXJucyBBIHBvc2l0aW9uIGluIHRoZSB0ZXh0IGVkaXRvciB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBmb2N1cztcbiAgICAgKiBgdW5kZWZpbmVkYCBpZiB0aGUgZm9jdXNlZCByb3cgIGlzIG91dCBvZiB0aGUgdGFibGUuXG4gICAgICovXG4gICAgcG9zaXRpb25PZkZvY3VzKGZvY3VzLCByb3dPZmZzZXQpIHtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5fcm93c1tmb2N1cy5yb3ddO1xuICAgICAgICBpZiAocm93ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm93UG9zID0gZm9jdXMucm93ICsgcm93T2Zmc2V0O1xuICAgICAgICBpZiAoZm9jdXMuY29sdW1uIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBwb2ludF8xLlBvaW50KHJvd1BvcywgZm9jdXMub2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjZWxsV2lkdGhzID0gcm93LmdldENlbGxzKCkubWFwKChjZWxsKSA9PiBjZWxsLnJhd0NvbnRlbnQubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgbWF4SW5kZXggPSBNYXRoLm1pbihmb2N1cy5jb2x1bW4sIGNlbGxXaWR0aHMubGVuZ3RoKTtcbiAgICAgICAgbGV0IGNvbHVtblBvcyA9IHJvdy5tYXJnaW5MZWZ0Lmxlbmd0aCArIDE7XG4gICAgICAgIGZvciAobGV0IGNvbHVtbkluZGV4ID0gMDsgY29sdW1uSW5kZXggPCBtYXhJbmRleDsgY29sdW1uSW5kZXgrKykge1xuICAgICAgICAgICAgY29sdW1uUG9zICs9IGNlbGxXaWR0aHNbY29sdW1uSW5kZXhdICsgMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IHBvaW50XzEuUG9pbnQocm93UG9zLCBjb2x1bW5Qb3MgKyBmb2N1cy5vZmZzZXQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyBhIHNlbGVjdGlvbiByYW5nZSBmcm9tIGEgZm9jdXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9jdXMgLSBBIGZvY3VzIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gcm93T2Zmc2V0IC0gVGhlIHJvdyBpbmRleCB3aGVyZSB0aGUgdGFibGUgc3RhcnRzIGluIHRoZSB0ZXh0IGVkaXRvci5cbiAgICAgKiBAcmV0dXJucyBBIHJhbmdlIHRvIGJlIHNlbGVjdGVkIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGZvY3VzO1xuICAgICAqIGB1bmRlZmluZWRgIGlmIHRoZSBmb2N1cyBkb2VzIG5vdCBzcGVjaWZ5IGFueSBjZWxsIG9yIHRoZSBzcGVjaWZpZWQgY2VsbCBpcyBlbXB0eS5cbiAgICAgKi9cbiAgICBzZWxlY3Rpb25SYW5nZU9mRm9jdXMoZm9jdXMsIHJvd09mZnNldCkge1xuICAgICAgICBjb25zdCByb3cgPSB0aGlzLl9yb3dzW2ZvY3VzLnJvd107XG4gICAgICAgIGlmIChyb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjZWxsID0gcm93LmdldENlbGxBdChmb2N1cy5jb2x1bW4pO1xuICAgICAgICBpZiAoY2VsbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjZWxsLmNvbnRlbnQgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvd1BvcyA9IGZvY3VzLnJvdyArIHJvd09mZnNldDtcbiAgICAgICAgY29uc3QgY2VsbFdpZHRocyA9IHJvdy5nZXRDZWxscygpLm1hcCgoY2VsbCkgPT4gY2VsbC5yYXdDb250ZW50Lmxlbmd0aCk7XG4gICAgICAgIGxldCBjb2x1bW5Qb3MgPSByb3cubWFyZ2luTGVmdC5sZW5ndGggKyAxO1xuICAgICAgICBmb3IgKGxldCBjb2x1bW5JbmRleCA9IDA7IGNvbHVtbkluZGV4IDwgZm9jdXMuY29sdW1uOyBjb2x1bW5JbmRleCsrKSB7XG4gICAgICAgICAgICBjb2x1bW5Qb3MgKz0gY2VsbFdpZHRoc1tjb2x1bW5JbmRleF0gKyAxO1xuICAgICAgICB9XG4gICAgICAgIGNvbHVtblBvcyArPSBjZWxsLnBhZGRpbmdMZWZ0O1xuICAgICAgICByZXR1cm4gbmV3IHJhbmdlXzEuUmFuZ2UobmV3IHBvaW50XzEuUG9pbnQocm93UG9zLCBjb2x1bW5Qb3MpLCBuZXcgcG9pbnRfMS5Qb2ludChyb3dQb3MsIGNvbHVtblBvcyArIGNlbGwuY29udGVudC5sZW5ndGgpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRXZhbHVhdGUgdGhlIGZvcm11bGEsIGFwcGx5aW5nIHRoZSByZXN1bHRzIHRvIHRoaXMgdGFibGUgYW5kIHJldHVybmluZyB0aGVcbiAgICAgKiBjaGFuZ2VzIGFzIGEgbmV3IHRhYmxlLlxuICAgICAqL1xuICAgIGFwcGx5Rm9ybXVsYXMoZm9ybXVsYUxpbmVzKSB7XG4gICAgICAgIHJldHVybiBjYWxjXzEucGFyc2VBbmRBcHBseShmb3JtdWxhTGluZXMsIHRoaXMpO1xuICAgIH1cbn1cbmV4cG9ydHMuVGFibGUgPSBUYWJsZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5yZWFkVGFibGUgPSBleHBvcnRzLl9tYXJnaW5SZWdleCA9IGV4cG9ydHMubWFyZ2luUmVnZXhTcmMgPSBleHBvcnRzLl9yZWFkUm93ID0gZXhwb3J0cy5fc3BsaXRDZWxscyA9IHZvaWQgMDtcbmNvbnN0IHRhYmxlXzEgPSByZXF1aXJlKFwiLi90YWJsZVwiKTtcbmNvbnN0IHRhYmxlX2NlbGxfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLWNlbGxcIik7XG5jb25zdCB0YWJsZV9yb3dfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLXJvd1wiKTtcbi8qKlxuICogU3BsaXRzIGEgdGV4dCBpbnRvIGNlbGxzLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IF9zcGxpdENlbGxzID0gKHRleHQpID0+IHtcbiAgICBjb25zdCBjZWxscyA9IFtdO1xuICAgIGxldCBidWYgPSAnJztcbiAgICBsZXQgcmVzdCA9IHRleHQ7XG4gICAgd2hpbGUgKHJlc3QgIT09ICcnKSB7XG4gICAgICAgIHN3aXRjaCAocmVzdFswXSkge1xuICAgICAgICAgICAgY2FzZSAnYCc6XG4gICAgICAgICAgICAgICAgLy8gcmVhZCBjb2RlIHNwYW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0TWF0Y2ggPSByZXN0Lm1hdGNoKC9eYCovKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0TWF0Y2ggPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2Ugc3RhdGVtZW50IGVuc3VyZXMgZmlyc3QgY2hhciBpcyBhIGAgYW5kIHdlIGNhbm5vdCBnZXQgaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMganVzdCBzYXRpc2ZpZXMgdGhlIGNvbXBpbGVyLlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBzdGFydE1hdGNoWzBdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgYnVmMSA9IHN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdDEgPSByZXN0LnN1YnN0cihzdGFydC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgY2xvc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChyZXN0MSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN0MVswXSA9PT0gJ2AnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kTWF0Y2ggPSByZXN0MS5tYXRjaCgvXmAqLyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVuZE1hdGNoID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2Ugc3RhdGVtZW50IGVuc3VyZXMgZmlyc3QgY2hhciBpcyBhIGAgYW5kIHdlIGNhbm5vdCBnZXQgaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBqdXN0IHNhdGlzZmllcyB0aGUgY29tcGlsZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmQgPSBlbmRNYXRjaFswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYxICs9IGVuZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0MSA9IHJlc3QxLnN1YnN0cihlbmQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW5kLmxlbmd0aCA9PT0gc3RhcnQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZjEgKz0gcmVzdDFbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdDEgPSByZXN0MS5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsb3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmICs9IGJ1ZjE7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN0ID0gcmVzdDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWYgKz0gJ2AnO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgICAgICAgICAgLy8gZXNjYXBlIG5leHQgY2hhcmFjdGVyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3QubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmICs9IHJlc3Quc3Vic3RyKDAsIDIpO1xuICAgICAgICAgICAgICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHIoMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBidWYgKz0gJ1xcXFwnO1xuICAgICAgICAgICAgICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnWyc6XG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgZW5jb3VudGVyIGEgcmVuYW1lZCBbW2xpbmt8TGlua11dLCBhdXRvbWF0aWNhbGx5IGVzY2FwZSB0aGUgcGlwZVxuICAgICAgICAgICAgICAgIGJ1ZiArPSAnWyc7XG4gICAgICAgICAgICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKDEpO1xuICAgICAgICAgICAgICAgIGlmICgvXFxbW15cXFxcfFxcXV0rXFx8W158XFxdXStdXS8udGVzdChyZXN0KSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZHggPSByZXN0LmluZGV4T2YoJ3wnKTtcbiAgICAgICAgICAgICAgICAgICAgYnVmICs9IHJlc3Quc2xpY2UoMCwgaWR4KTtcbiAgICAgICAgICAgICAgICAgICAgYnVmICs9ICdcXFxcfCc7XG4gICAgICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0LnN1YnN0cihpZHggKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd8JzpcbiAgICAgICAgICAgICAgICAvLyBmbHVzaCBidWZmZXJcbiAgICAgICAgICAgICAgICBjZWxscy5wdXNoKGJ1Zik7XG4gICAgICAgICAgICAgICAgYnVmID0gJyc7XG4gICAgICAgICAgICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBidWYgKz0gcmVzdFswXTtcbiAgICAgICAgICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHIoMSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2VsbHMucHVzaChidWYpO1xuICAgIHJldHVybiBjZWxscztcbn07XG5leHBvcnRzLl9zcGxpdENlbGxzID0gX3NwbGl0Q2VsbHM7XG4vKipcbiAqIFJlYWRzIGEgdGFibGUgcm93LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gdGV4dCAtIEEgdGV4dC5cbiAqIEBwYXJhbSBbbGVmdE1hcmdpblJlZ2V4PS9eXFxzKiQvXSAtIEEgcmVndWxhciBleHByZXNzaW9uIG9iamVjdCB0aGF0IG1hdGNoZXMgbGVmdCBtYXJnaW4uXG4gKi9cbmNvbnN0IF9yZWFkUm93ID0gKHRleHQsIGxlZnRNYXJnaW5SZWdleCA9IC9eXFxzKiQvKSA9PiB7XG4gICAgbGV0IGNlbGxzID0gZXhwb3J0cy5fc3BsaXRDZWxscyh0ZXh0KTtcbiAgICBsZXQgbWFyZ2luTGVmdDtcbiAgICBpZiAoY2VsbHMubGVuZ3RoID4gMCAmJiBsZWZ0TWFyZ2luUmVnZXgudGVzdChjZWxsc1swXSkpIHtcbiAgICAgICAgbWFyZ2luTGVmdCA9IGNlbGxzWzBdO1xuICAgICAgICBjZWxscyA9IGNlbGxzLnNsaWNlKDEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbWFyZ2luTGVmdCA9ICcnO1xuICAgIH1cbiAgICBsZXQgbWFyZ2luUmlnaHQ7XG4gICAgaWYgKGNlbGxzLmxlbmd0aCA+IDEgJiYgL15cXHMqJC8udGVzdChjZWxsc1tjZWxscy5sZW5ndGggLSAxXSkpIHtcbiAgICAgICAgbWFyZ2luUmlnaHQgPSBjZWxsc1tjZWxscy5sZW5ndGggLSAxXTtcbiAgICAgICAgY2VsbHMgPSBjZWxscy5zbGljZSgwLCBjZWxscy5sZW5ndGggLSAxKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIG1hcmdpblJpZ2h0ID0gJyc7XG4gICAgfVxuICAgIHJldHVybiBuZXcgdGFibGVfcm93XzEuVGFibGVSb3coY2VsbHMubWFwKChjZWxsKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbChjZWxsKSksIG1hcmdpbkxlZnQsIG1hcmdpblJpZ2h0KTtcbn07XG5leHBvcnRzLl9yZWFkUm93ID0gX3JlYWRSb3c7XG4vKipcbiAqIENyZWF0ZXMgYSByZWdleCBzb3VyY2Ugc3RyaW5nIG9mIG1hcmdpbiBjaGFyYWN0ZXIgY2xhc3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBjaGFycyAtIEEgc2V0IG9mIGFkZGl0aW9uYWwgbWFyZ2luIGNoYXJhY3RlcnMuXG4gKiBBIHBpcGUgYHxgLCBhIGJhY2tzbGFzaCBgXFxgLCBhbmQgYSBiYWNrcXVvdGUgd2lsbCBiZSBpZ25vcmVkLlxuICogQHJldHVybiBBIHJlZ2V4IHNvdXJjZSBzdHJpbmcuXG4gKi9cbmNvbnN0IG1hcmdpblJlZ2V4U3JjID0gKGNoYXJzKSA9PiB7XG4gICAgbGV0IGNzID0gJyc7XG4gICAgLy8gZm9yIChjb25zdCBjIGNoYXJzLnZhbHVlcygpKSB7XG4gICAgY2hhcnMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICBpZiAoYyAhPT0gJ3wnICYmIGMgIT09ICdcXFxcJyAmJiBjICE9PSAnYCcpIHtcbiAgICAgICAgICAgIGNzICs9IGBcXFxcdXske2MuY29kZVBvaW50QXQoMCkudG9TdHJpbmcoMTYpfX1gO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGBbXFxcXHMke2NzfV0qYDtcbn07XG5leHBvcnRzLm1hcmdpblJlZ2V4U3JjID0gbWFyZ2luUmVnZXhTcmM7XG4vKipcbiAqIENyZWF0ZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0IHRoYXQgbWF0Y2hlcyBtYXJnaW4gb2YgdGFibGVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gY2hhcnMgLSBBIHNldCBvZiBhZGRpdGlvbmFsIG1hcmdpbiBjaGFyYWN0ZXJzLlxuICogQSBwaXBlIGB8YCwgYSBiYWNrc2xhc2ggYFxcYCwgYW5kIGEgYmFja3F1b3RlIHdpbGwgYmUgaWdub3JlZC5cbiAqIEByZXR1cm4gQW4gcmVndWxhciBleHByZXNzaW9uIG9iamVjdCB0aGF0IG1hdGNoZXMgbWFyZ2luIG9mIHRhYmxlcy5cbiAqL1xuY29uc3QgX21hcmdpblJlZ2V4ID0gKGNoYXJzKSA9PiBuZXcgUmVnRXhwKGBeJHtleHBvcnRzLm1hcmdpblJlZ2V4U3JjKGNoYXJzKX0kYCwgJ3UnKTtcbmV4cG9ydHMuX21hcmdpblJlZ2V4ID0gX21hcmdpblJlZ2V4O1xuLyoqXG4gKiBSZWFkcyBhIHRhYmxlIGZyb20gbGluZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBsaW5lcyAtIEFuIGFycmF5IG9mIHRleHRzLCBlYWNoIHRleHQgcmVwcmVzZW50cyBhIHJvdy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgb3B0aW9ucyBmb3IgcGFyc2luZy5cbiAqIEByZXR1cm5zIFRoZSB0YWJsZSByZWFkIGZyb20gdGhlIGxpbmVzLlxuICovXG5jb25zdCByZWFkVGFibGUgPSAobGluZXMsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBsZWZ0TWFyZ2luUmVnZXggPSBleHBvcnRzLl9tYXJnaW5SZWdleChvcHRpb25zLmxlZnRNYXJnaW5DaGFycyk7XG4gICAgcmV0dXJuIG5ldyB0YWJsZV8xLlRhYmxlKGxpbmVzLm1hcCgobGluZSkgPT4gZXhwb3J0cy5fcmVhZFJvdyhsaW5lLCBsZWZ0TWFyZ2luUmVnZXgpKSk7XG59O1xuZXhwb3J0cy5yZWFkVGFibGUgPSByZWFkVGFibGU7XG4iLCIvKlxyXG4gKiBHZW5lcmF0ZWQgYnkgc2NyaXB0LiBETyBOT1QgRURJVCFcclxuICpcclxuICogVGhlIHBhcnQgYmV0d2VlbiBCRUdJTiBhbmQgRU5EIGlzIGRlcml2ZWQgZnJvbSBVbmljb2RlIERhdGEgRmlsZXNcclxuICogYW5kIHByb3ZpZGVkIHVuZGVyIFVuaWNvZGUsIEluYy4gTGljZW5zZSBBZ3JlZW1lbnQuXHJcbiAqL1xyXG4vKiBCRUdJTiAqL1xyXG52YXIgZGVmcyA9IFtcclxuICAgIFswLCAzMSwgXCJOXCJdLFxyXG4gICAgWzMyLCAxMjYsIFwiTmFcIl0sXHJcbiAgICBbMTI3LCAxNjAsIFwiTlwiXSxcclxuICAgIFsxNjEsIDE2MSwgXCJBXCJdLFxyXG4gICAgWzE2MiwgMTYzLCBcIk5hXCJdLFxyXG4gICAgWzE2NCwgMTY0LCBcIkFcIl0sXHJcbiAgICBbMTY1LCAxNjYsIFwiTmFcIl0sXHJcbiAgICBbMTY3LCAxNjgsIFwiQVwiXSxcclxuICAgIFsxNjksIDE2OSwgXCJOXCJdLFxyXG4gICAgWzE3MCwgMTcwLCBcIkFcIl0sXHJcbiAgICBbMTcxLCAxNzEsIFwiTlwiXSxcclxuICAgIFsxNzIsIDE3MiwgXCJOYVwiXSxcclxuICAgIFsxNzMsIDE3NCwgXCJBXCJdLFxyXG4gICAgWzE3NSwgMTc1LCBcIk5hXCJdLFxyXG4gICAgWzE3NiwgMTgwLCBcIkFcIl0sXHJcbiAgICBbMTgxLCAxODEsIFwiTlwiXSxcclxuICAgIFsxODIsIDE4NiwgXCJBXCJdLFxyXG4gICAgWzE4NywgMTg3LCBcIk5cIl0sXHJcbiAgICBbMTg4LCAxOTEsIFwiQVwiXSxcclxuICAgIFsxOTIsIDE5NywgXCJOXCJdLFxyXG4gICAgWzE5OCwgMTk4LCBcIkFcIl0sXHJcbiAgICBbMTk5LCAyMDcsIFwiTlwiXSxcclxuICAgIFsyMDgsIDIwOCwgXCJBXCJdLFxyXG4gICAgWzIwOSwgMjE0LCBcIk5cIl0sXHJcbiAgICBbMjE1LCAyMTYsIFwiQVwiXSxcclxuICAgIFsyMTcsIDIyMSwgXCJOXCJdLFxyXG4gICAgWzIyMiwgMjI1LCBcIkFcIl0sXHJcbiAgICBbMjI2LCAyMjksIFwiTlwiXSxcclxuICAgIFsyMzAsIDIzMCwgXCJBXCJdLFxyXG4gICAgWzIzMSwgMjMxLCBcIk5cIl0sXHJcbiAgICBbMjMyLCAyMzQsIFwiQVwiXSxcclxuICAgIFsyMzUsIDIzNSwgXCJOXCJdLFxyXG4gICAgWzIzNiwgMjM3LCBcIkFcIl0sXHJcbiAgICBbMjM4LCAyMzksIFwiTlwiXSxcclxuICAgIFsyNDAsIDI0MCwgXCJBXCJdLFxyXG4gICAgWzI0MSwgMjQxLCBcIk5cIl0sXHJcbiAgICBbMjQyLCAyNDMsIFwiQVwiXSxcclxuICAgIFsyNDQsIDI0NiwgXCJOXCJdLFxyXG4gICAgWzI0NywgMjUwLCBcIkFcIl0sXHJcbiAgICBbMjUxLCAyNTEsIFwiTlwiXSxcclxuICAgIFsyNTIsIDI1MiwgXCJBXCJdLFxyXG4gICAgWzI1MywgMjUzLCBcIk5cIl0sXHJcbiAgICBbMjU0LCAyNTQsIFwiQVwiXSxcclxuICAgIFsyNTUsIDI1NiwgXCJOXCJdLFxyXG4gICAgWzI1NywgMjU3LCBcIkFcIl0sXHJcbiAgICBbMjU4LCAyNzIsIFwiTlwiXSxcclxuICAgIFsyNzMsIDI3MywgXCJBXCJdLFxyXG4gICAgWzI3NCwgMjc0LCBcIk5cIl0sXHJcbiAgICBbMjc1LCAyNzUsIFwiQVwiXSxcclxuICAgIFsyNzYsIDI4MiwgXCJOXCJdLFxyXG4gICAgWzI4MywgMjgzLCBcIkFcIl0sXHJcbiAgICBbMjg0LCAyOTMsIFwiTlwiXSxcclxuICAgIFsyOTQsIDI5NSwgXCJBXCJdLFxyXG4gICAgWzI5NiwgMjk4LCBcIk5cIl0sXHJcbiAgICBbMjk5LCAyOTksIFwiQVwiXSxcclxuICAgIFszMDAsIDMwNCwgXCJOXCJdLFxyXG4gICAgWzMwNSwgMzA3LCBcIkFcIl0sXHJcbiAgICBbMzA4LCAzMTEsIFwiTlwiXSxcclxuICAgIFszMTIsIDMxMiwgXCJBXCJdLFxyXG4gICAgWzMxMywgMzE4LCBcIk5cIl0sXHJcbiAgICBbMzE5LCAzMjIsIFwiQVwiXSxcclxuICAgIFszMjMsIDMyMywgXCJOXCJdLFxyXG4gICAgWzMyNCwgMzI0LCBcIkFcIl0sXHJcbiAgICBbMzI1LCAzMjcsIFwiTlwiXSxcclxuICAgIFszMjgsIDMzMSwgXCJBXCJdLFxyXG4gICAgWzMzMiwgMzMyLCBcIk5cIl0sXHJcbiAgICBbMzMzLCAzMzMsIFwiQVwiXSxcclxuICAgIFszMzQsIDMzNywgXCJOXCJdLFxyXG4gICAgWzMzOCwgMzM5LCBcIkFcIl0sXHJcbiAgICBbMzQwLCAzNTcsIFwiTlwiXSxcclxuICAgIFszNTgsIDM1OSwgXCJBXCJdLFxyXG4gICAgWzM2MCwgMzYyLCBcIk5cIl0sXHJcbiAgICBbMzYzLCAzNjMsIFwiQVwiXSxcclxuICAgIFszNjQsIDQ2MSwgXCJOXCJdLFxyXG4gICAgWzQ2MiwgNDYyLCBcIkFcIl0sXHJcbiAgICBbNDYzLCA0NjMsIFwiTlwiXSxcclxuICAgIFs0NjQsIDQ2NCwgXCJBXCJdLFxyXG4gICAgWzQ2NSwgNDY1LCBcIk5cIl0sXHJcbiAgICBbNDY2LCA0NjYsIFwiQVwiXSxcclxuICAgIFs0NjcsIDQ2NywgXCJOXCJdLFxyXG4gICAgWzQ2OCwgNDY4LCBcIkFcIl0sXHJcbiAgICBbNDY5LCA0NjksIFwiTlwiXSxcclxuICAgIFs0NzAsIDQ3MCwgXCJBXCJdLFxyXG4gICAgWzQ3MSwgNDcxLCBcIk5cIl0sXHJcbiAgICBbNDcyLCA0NzIsIFwiQVwiXSxcclxuICAgIFs0NzMsIDQ3MywgXCJOXCJdLFxyXG4gICAgWzQ3NCwgNDc0LCBcIkFcIl0sXHJcbiAgICBbNDc1LCA0NzUsIFwiTlwiXSxcclxuICAgIFs0NzYsIDQ3NiwgXCJBXCJdLFxyXG4gICAgWzQ3NywgNTkyLCBcIk5cIl0sXHJcbiAgICBbNTkzLCA1OTMsIFwiQVwiXSxcclxuICAgIFs1OTQsIDYwOCwgXCJOXCJdLFxyXG4gICAgWzYwOSwgNjA5LCBcIkFcIl0sXHJcbiAgICBbNjEwLCA3MDcsIFwiTlwiXSxcclxuICAgIFs3MDgsIDcwOCwgXCJBXCJdLFxyXG4gICAgWzcwOSwgNzEwLCBcIk5cIl0sXHJcbiAgICBbNzExLCA3MTEsIFwiQVwiXSxcclxuICAgIFs3MTIsIDcxMiwgXCJOXCJdLFxyXG4gICAgWzcxMywgNzE1LCBcIkFcIl0sXHJcbiAgICBbNzE2LCA3MTYsIFwiTlwiXSxcclxuICAgIFs3MTcsIDcxNywgXCJBXCJdLFxyXG4gICAgWzcxOCwgNzE5LCBcIk5cIl0sXHJcbiAgICBbNzIwLCA3MjAsIFwiQVwiXSxcclxuICAgIFs3MjEsIDcyNywgXCJOXCJdLFxyXG4gICAgWzcyOCwgNzMxLCBcIkFcIl0sXHJcbiAgICBbNzMyLCA3MzIsIFwiTlwiXSxcclxuICAgIFs3MzMsIDczMywgXCJBXCJdLFxyXG4gICAgWzczNCwgNzM0LCBcIk5cIl0sXHJcbiAgICBbNzM1LCA3MzUsIFwiQVwiXSxcclxuICAgIFs3MzYsIDc2NywgXCJOXCJdLFxyXG4gICAgWzc2OCwgODc5LCBcIkFcIl0sXHJcbiAgICBbODgwLCA5MTIsIFwiTlwiXSxcclxuICAgIFs5MTMsIDkyOSwgXCJBXCJdLFxyXG4gICAgWzkzMCwgOTMwLCBcIk5cIl0sXHJcbiAgICBbOTMxLCA5MzcsIFwiQVwiXSxcclxuICAgIFs5MzgsIDk0NCwgXCJOXCJdLFxyXG4gICAgWzk0NSwgOTYxLCBcIkFcIl0sXHJcbiAgICBbOTYyLCA5NjIsIFwiTlwiXSxcclxuICAgIFs5NjMsIDk2OSwgXCJBXCJdLFxyXG4gICAgWzk3MCwgMTAyNCwgXCJOXCJdLFxyXG4gICAgWzEwMjUsIDEwMjUsIFwiQVwiXSxcclxuICAgIFsxMDI2LCAxMDM5LCBcIk5cIl0sXHJcbiAgICBbMTA0MCwgMTEwMywgXCJBXCJdLFxyXG4gICAgWzExMDQsIDExMDQsIFwiTlwiXSxcclxuICAgIFsxMTA1LCAxMTA1LCBcIkFcIl0sXHJcbiAgICBbMTEwNiwgNDM1MSwgXCJOXCJdLFxyXG4gICAgWzQzNTIsIDQ0NDcsIFwiV1wiXSxcclxuICAgIFs0NDQ4LCA4MjA3LCBcIk5cIl0sXHJcbiAgICBbODIwOCwgODIwOCwgXCJBXCJdLFxyXG4gICAgWzgyMDksIDgyMTAsIFwiTlwiXSxcclxuICAgIFs4MjExLCA4MjE0LCBcIkFcIl0sXHJcbiAgICBbODIxNSwgODIxNSwgXCJOXCJdLFxyXG4gICAgWzgyMTYsIDgyMTcsIFwiQVwiXSxcclxuICAgIFs4MjE4LCA4MjE5LCBcIk5cIl0sXHJcbiAgICBbODIyMCwgODIyMSwgXCJBXCJdLFxyXG4gICAgWzgyMjIsIDgyMjMsIFwiTlwiXSxcclxuICAgIFs4MjI0LCA4MjI2LCBcIkFcIl0sXHJcbiAgICBbODIyNywgODIyNywgXCJOXCJdLFxyXG4gICAgWzgyMjgsIDgyMzEsIFwiQVwiXSxcclxuICAgIFs4MjMyLCA4MjM5LCBcIk5cIl0sXHJcbiAgICBbODI0MCwgODI0MCwgXCJBXCJdLFxyXG4gICAgWzgyNDEsIDgyNDEsIFwiTlwiXSxcclxuICAgIFs4MjQyLCA4MjQzLCBcIkFcIl0sXHJcbiAgICBbODI0NCwgODI0NCwgXCJOXCJdLFxyXG4gICAgWzgyNDUsIDgyNDUsIFwiQVwiXSxcclxuICAgIFs4MjQ2LCA4MjUwLCBcIk5cIl0sXHJcbiAgICBbODI1MSwgODI1MSwgXCJBXCJdLFxyXG4gICAgWzgyNTIsIDgyNTMsIFwiTlwiXSxcclxuICAgIFs4MjU0LCA4MjU0LCBcIkFcIl0sXHJcbiAgICBbODI1NSwgODMwNywgXCJOXCJdLFxyXG4gICAgWzgzMDgsIDgzMDgsIFwiQVwiXSxcclxuICAgIFs4MzA5LCA4MzE4LCBcIk5cIl0sXHJcbiAgICBbODMxOSwgODMxOSwgXCJBXCJdLFxyXG4gICAgWzgzMjAsIDgzMjAsIFwiTlwiXSxcclxuICAgIFs4MzIxLCA4MzI0LCBcIkFcIl0sXHJcbiAgICBbODMyNSwgODM2MCwgXCJOXCJdLFxyXG4gICAgWzgzNjEsIDgzNjEsIFwiSFwiXSxcclxuICAgIFs4MzYyLCA4MzYzLCBcIk5cIl0sXHJcbiAgICBbODM2NCwgODM2NCwgXCJBXCJdLFxyXG4gICAgWzgzNjUsIDg0NTAsIFwiTlwiXSxcclxuICAgIFs4NDUxLCA4NDUxLCBcIkFcIl0sXHJcbiAgICBbODQ1MiwgODQ1MiwgXCJOXCJdLFxyXG4gICAgWzg0NTMsIDg0NTMsIFwiQVwiXSxcclxuICAgIFs4NDU0LCA4NDU2LCBcIk5cIl0sXHJcbiAgICBbODQ1NywgODQ1NywgXCJBXCJdLFxyXG4gICAgWzg0NTgsIDg0NjYsIFwiTlwiXSxcclxuICAgIFs4NDY3LCA4NDY3LCBcIkFcIl0sXHJcbiAgICBbODQ2OCwgODQ2OSwgXCJOXCJdLFxyXG4gICAgWzg0NzAsIDg0NzAsIFwiQVwiXSxcclxuICAgIFs4NDcxLCA4NDgwLCBcIk5cIl0sXHJcbiAgICBbODQ4MSwgODQ4MiwgXCJBXCJdLFxyXG4gICAgWzg0ODMsIDg0ODUsIFwiTlwiXSxcclxuICAgIFs4NDg2LCA4NDg2LCBcIkFcIl0sXHJcbiAgICBbODQ4NywgODQ5MCwgXCJOXCJdLFxyXG4gICAgWzg0OTEsIDg0OTEsIFwiQVwiXSxcclxuICAgIFs4NDkyLCA4NTMwLCBcIk5cIl0sXHJcbiAgICBbODUzMSwgODUzMiwgXCJBXCJdLFxyXG4gICAgWzg1MzMsIDg1MzgsIFwiTlwiXSxcclxuICAgIFs4NTM5LCA4NTQyLCBcIkFcIl0sXHJcbiAgICBbODU0MywgODU0MywgXCJOXCJdLFxyXG4gICAgWzg1NDQsIDg1NTUsIFwiQVwiXSxcclxuICAgIFs4NTU2LCA4NTU5LCBcIk5cIl0sXHJcbiAgICBbODU2MCwgODU2OSwgXCJBXCJdLFxyXG4gICAgWzg1NzAsIDg1ODQsIFwiTlwiXSxcclxuICAgIFs4NTg1LCA4NTg1LCBcIkFcIl0sXHJcbiAgICBbODU4NiwgODU5MSwgXCJOXCJdLFxyXG4gICAgWzg1OTIsIDg2MDEsIFwiQVwiXSxcclxuICAgIFs4NjAyLCA4NjMxLCBcIk5cIl0sXHJcbiAgICBbODYzMiwgODYzMywgXCJBXCJdLFxyXG4gICAgWzg2MzQsIDg2NTcsIFwiTlwiXSxcclxuICAgIFs4NjU4LCA4NjU4LCBcIkFcIl0sXHJcbiAgICBbODY1OSwgODY1OSwgXCJOXCJdLFxyXG4gICAgWzg2NjAsIDg2NjAsIFwiQVwiXSxcclxuICAgIFs4NjYxLCA4Njc4LCBcIk5cIl0sXHJcbiAgICBbODY3OSwgODY3OSwgXCJBXCJdLFxyXG4gICAgWzg2ODAsIDg3MDMsIFwiTlwiXSxcclxuICAgIFs4NzA0LCA4NzA0LCBcIkFcIl0sXHJcbiAgICBbODcwNSwgODcwNSwgXCJOXCJdLFxyXG4gICAgWzg3MDYsIDg3MDcsIFwiQVwiXSxcclxuICAgIFs4NzA4LCA4NzEwLCBcIk5cIl0sXHJcbiAgICBbODcxMSwgODcxMiwgXCJBXCJdLFxyXG4gICAgWzg3MTMsIDg3MTQsIFwiTlwiXSxcclxuICAgIFs4NzE1LCA4NzE1LCBcIkFcIl0sXHJcbiAgICBbODcxNiwgODcxOCwgXCJOXCJdLFxyXG4gICAgWzg3MTksIDg3MTksIFwiQVwiXSxcclxuICAgIFs4NzIwLCA4NzIwLCBcIk5cIl0sXHJcbiAgICBbODcyMSwgODcyMSwgXCJBXCJdLFxyXG4gICAgWzg3MjIsIDg3MjQsIFwiTlwiXSxcclxuICAgIFs4NzI1LCA4NzI1LCBcIkFcIl0sXHJcbiAgICBbODcyNiwgODcyOSwgXCJOXCJdLFxyXG4gICAgWzg3MzAsIDg3MzAsIFwiQVwiXSxcclxuICAgIFs4NzMxLCA4NzMyLCBcIk5cIl0sXHJcbiAgICBbODczMywgODczNiwgXCJBXCJdLFxyXG4gICAgWzg3MzcsIDg3MzgsIFwiTlwiXSxcclxuICAgIFs4NzM5LCA4NzM5LCBcIkFcIl0sXHJcbiAgICBbODc0MCwgODc0MCwgXCJOXCJdLFxyXG4gICAgWzg3NDEsIDg3NDEsIFwiQVwiXSxcclxuICAgIFs4NzQyLCA4NzQyLCBcIk5cIl0sXHJcbiAgICBbODc0MywgODc0OCwgXCJBXCJdLFxyXG4gICAgWzg3NDksIDg3NDksIFwiTlwiXSxcclxuICAgIFs4NzUwLCA4NzUwLCBcIkFcIl0sXHJcbiAgICBbODc1MSwgODc1NSwgXCJOXCJdLFxyXG4gICAgWzg3NTYsIDg3NTksIFwiQVwiXSxcclxuICAgIFs4NzYwLCA4NzYzLCBcIk5cIl0sXHJcbiAgICBbODc2NCwgODc2NSwgXCJBXCJdLFxyXG4gICAgWzg3NjYsIDg3NzUsIFwiTlwiXSxcclxuICAgIFs4Nzc2LCA4Nzc2LCBcIkFcIl0sXHJcbiAgICBbODc3NywgODc3OSwgXCJOXCJdLFxyXG4gICAgWzg3ODAsIDg3ODAsIFwiQVwiXSxcclxuICAgIFs4NzgxLCA4Nzg1LCBcIk5cIl0sXHJcbiAgICBbODc4NiwgODc4NiwgXCJBXCJdLFxyXG4gICAgWzg3ODcsIDg3OTksIFwiTlwiXSxcclxuICAgIFs4ODAwLCA4ODAxLCBcIkFcIl0sXHJcbiAgICBbODgwMiwgODgwMywgXCJOXCJdLFxyXG4gICAgWzg4MDQsIDg4MDcsIFwiQVwiXSxcclxuICAgIFs4ODA4LCA4ODA5LCBcIk5cIl0sXHJcbiAgICBbODgxMCwgODgxMSwgXCJBXCJdLFxyXG4gICAgWzg4MTIsIDg4MTMsIFwiTlwiXSxcclxuICAgIFs4ODE0LCA4ODE1LCBcIkFcIl0sXHJcbiAgICBbODgxNiwgODgzMywgXCJOXCJdLFxyXG4gICAgWzg4MzQsIDg4MzUsIFwiQVwiXSxcclxuICAgIFs4ODM2LCA4ODM3LCBcIk5cIl0sXHJcbiAgICBbODgzOCwgODgzOSwgXCJBXCJdLFxyXG4gICAgWzg4NDAsIDg4NTIsIFwiTlwiXSxcclxuICAgIFs4ODUzLCA4ODUzLCBcIkFcIl0sXHJcbiAgICBbODg1NCwgODg1NiwgXCJOXCJdLFxyXG4gICAgWzg4NTcsIDg4NTcsIFwiQVwiXSxcclxuICAgIFs4ODU4LCA4ODY4LCBcIk5cIl0sXHJcbiAgICBbODg2OSwgODg2OSwgXCJBXCJdLFxyXG4gICAgWzg4NzAsIDg4OTQsIFwiTlwiXSxcclxuICAgIFs4ODk1LCA4ODk1LCBcIkFcIl0sXHJcbiAgICBbODg5NiwgODk3NywgXCJOXCJdLFxyXG4gICAgWzg5NzgsIDg5NzgsIFwiQVwiXSxcclxuICAgIFs4OTc5LCA4OTg1LCBcIk5cIl0sXHJcbiAgICBbODk4NiwgODk4NywgXCJXXCJdLFxyXG4gICAgWzg5ODgsIDkwMDAsIFwiTlwiXSxcclxuICAgIFs5MDAxLCA5MDAyLCBcIldcIl0sXHJcbiAgICBbOTAwMywgOTE5MiwgXCJOXCJdLFxyXG4gICAgWzkxOTMsIDkxOTYsIFwiV1wiXSxcclxuICAgIFs5MTk3LCA5MTk5LCBcIk5cIl0sXHJcbiAgICBbOTIwMCwgOTIwMCwgXCJXXCJdLFxyXG4gICAgWzkyMDEsIDkyMDIsIFwiTlwiXSxcclxuICAgIFs5MjAzLCA5MjAzLCBcIldcIl0sXHJcbiAgICBbOTIwNCwgOTMxMSwgXCJOXCJdLFxyXG4gICAgWzkzMTIsIDk0NDksIFwiQVwiXSxcclxuICAgIFs5NDUwLCA5NDUwLCBcIk5cIl0sXHJcbiAgICBbOTQ1MSwgOTU0NywgXCJBXCJdLFxyXG4gICAgWzk1NDgsIDk1NTEsIFwiTlwiXSxcclxuICAgIFs5NTUyLCA5NTg3LCBcIkFcIl0sXHJcbiAgICBbOTU4OCwgOTU5OSwgXCJOXCJdLFxyXG4gICAgWzk2MDAsIDk2MTUsIFwiQVwiXSxcclxuICAgIFs5NjE2LCA5NjE3LCBcIk5cIl0sXHJcbiAgICBbOTYxOCwgOTYyMSwgXCJBXCJdLFxyXG4gICAgWzk2MjIsIDk2MzEsIFwiTlwiXSxcclxuICAgIFs5NjMyLCA5NjMzLCBcIkFcIl0sXHJcbiAgICBbOTYzNCwgOTYzNCwgXCJOXCJdLFxyXG4gICAgWzk2MzUsIDk2NDEsIFwiQVwiXSxcclxuICAgIFs5NjQyLCA5NjQ5LCBcIk5cIl0sXHJcbiAgICBbOTY1MCwgOTY1MSwgXCJBXCJdLFxyXG4gICAgWzk2NTIsIDk2NTMsIFwiTlwiXSxcclxuICAgIFs5NjU0LCA5NjU1LCBcIkFcIl0sXHJcbiAgICBbOTY1NiwgOTY1OSwgXCJOXCJdLFxyXG4gICAgWzk2NjAsIDk2NjEsIFwiQVwiXSxcclxuICAgIFs5NjYyLCA5NjYzLCBcIk5cIl0sXHJcbiAgICBbOTY2NCwgOTY2NSwgXCJBXCJdLFxyXG4gICAgWzk2NjYsIDk2NjksIFwiTlwiXSxcclxuICAgIFs5NjcwLCA5NjcyLCBcIkFcIl0sXHJcbiAgICBbOTY3MywgOTY3NCwgXCJOXCJdLFxyXG4gICAgWzk2NzUsIDk2NzUsIFwiQVwiXSxcclxuICAgIFs5Njc2LCA5Njc3LCBcIk5cIl0sXHJcbiAgICBbOTY3OCwgOTY4MSwgXCJBXCJdLFxyXG4gICAgWzk2ODIsIDk2OTcsIFwiTlwiXSxcclxuICAgIFs5Njk4LCA5NzAxLCBcIkFcIl0sXHJcbiAgICBbOTcwMiwgOTcxMCwgXCJOXCJdLFxyXG4gICAgWzk3MTEsIDk3MTEsIFwiQVwiXSxcclxuICAgIFs5NzEyLCA5NzI0LCBcIk5cIl0sXHJcbiAgICBbOTcyNSwgOTcyNiwgXCJXXCJdLFxyXG4gICAgWzk3MjcsIDk3MzIsIFwiTlwiXSxcclxuICAgIFs5NzMzLCA5NzM0LCBcIkFcIl0sXHJcbiAgICBbOTczNSwgOTczNiwgXCJOXCJdLFxyXG4gICAgWzk3MzcsIDk3MzcsIFwiQVwiXSxcclxuICAgIFs5NzM4LCA5NzQxLCBcIk5cIl0sXHJcbiAgICBbOTc0MiwgOTc0MywgXCJBXCJdLFxyXG4gICAgWzk3NDQsIDk3NDcsIFwiTlwiXSxcclxuICAgIFs5NzQ4LCA5NzQ5LCBcIldcIl0sXHJcbiAgICBbOTc1MCwgOTc1NSwgXCJOXCJdLFxyXG4gICAgWzk3NTYsIDk3NTYsIFwiQVwiXSxcclxuICAgIFs5NzU3LCA5NzU3LCBcIk5cIl0sXHJcbiAgICBbOTc1OCwgOTc1OCwgXCJBXCJdLFxyXG4gICAgWzk3NTksIDk3OTEsIFwiTlwiXSxcclxuICAgIFs5NzkyLCA5NzkyLCBcIkFcIl0sXHJcbiAgICBbOTc5MywgOTc5MywgXCJOXCJdLFxyXG4gICAgWzk3OTQsIDk3OTQsIFwiQVwiXSxcclxuICAgIFs5Nzk1LCA5Nzk5LCBcIk5cIl0sXHJcbiAgICBbOTgwMCwgOTgxMSwgXCJXXCJdLFxyXG4gICAgWzk4MTIsIDk4MjMsIFwiTlwiXSxcclxuICAgIFs5ODI0LCA5ODI1LCBcIkFcIl0sXHJcbiAgICBbOTgyNiwgOTgyNiwgXCJOXCJdLFxyXG4gICAgWzk4MjcsIDk4MjksIFwiQVwiXSxcclxuICAgIFs5ODMwLCA5ODMwLCBcIk5cIl0sXHJcbiAgICBbOTgzMSwgOTgzNCwgXCJBXCJdLFxyXG4gICAgWzk4MzUsIDk4MzUsIFwiTlwiXSxcclxuICAgIFs5ODM2LCA5ODM3LCBcIkFcIl0sXHJcbiAgICBbOTgzOCwgOTgzOCwgXCJOXCJdLFxyXG4gICAgWzk4MzksIDk4MzksIFwiQVwiXSxcclxuICAgIFs5ODQwLCA5ODU0LCBcIk5cIl0sXHJcbiAgICBbOTg1NSwgOTg1NSwgXCJXXCJdLFxyXG4gICAgWzk4NTYsIDk4NzQsIFwiTlwiXSxcclxuICAgIFs5ODc1LCA5ODc1LCBcIldcIl0sXHJcbiAgICBbOTg3NiwgOTg4NSwgXCJOXCJdLFxyXG4gICAgWzk4ODYsIDk4ODcsIFwiQVwiXSxcclxuICAgIFs5ODg4LCA5ODg4LCBcIk5cIl0sXHJcbiAgICBbOTg4OSwgOTg4OSwgXCJXXCJdLFxyXG4gICAgWzk4OTAsIDk4OTcsIFwiTlwiXSxcclxuICAgIFs5ODk4LCA5ODk5LCBcIldcIl0sXHJcbiAgICBbOTkwMCwgOTkxNiwgXCJOXCJdLFxyXG4gICAgWzk5MTcsIDk5MTgsIFwiV1wiXSxcclxuICAgIFs5OTE5LCA5OTE5LCBcIkFcIl0sXHJcbiAgICBbOTkyMCwgOTkyMywgXCJOXCJdLFxyXG4gICAgWzk5MjQsIDk5MjUsIFwiV1wiXSxcclxuICAgIFs5OTI2LCA5OTMzLCBcIkFcIl0sXHJcbiAgICBbOTkzNCwgOTkzNCwgXCJXXCJdLFxyXG4gICAgWzk5MzUsIDk5MzksIFwiQVwiXSxcclxuICAgIFs5OTQwLCA5OTQwLCBcIldcIl0sXHJcbiAgICBbOTk0MSwgOTk1MywgXCJBXCJdLFxyXG4gICAgWzk5NTQsIDk5NTQsIFwiTlwiXSxcclxuICAgIFs5OTU1LCA5OTU1LCBcIkFcIl0sXHJcbiAgICBbOTk1NiwgOTk1OSwgXCJOXCJdLFxyXG4gICAgWzk5NjAsIDk5NjEsIFwiQVwiXSxcclxuICAgIFs5OTYyLCA5OTYyLCBcIldcIl0sXHJcbiAgICBbOTk2MywgOTk2OSwgXCJBXCJdLFxyXG4gICAgWzk5NzAsIDk5NzEsIFwiV1wiXSxcclxuICAgIFs5OTcyLCA5OTcyLCBcIkFcIl0sXHJcbiAgICBbOTk3MywgOTk3MywgXCJXXCJdLFxyXG4gICAgWzk5NzQsIDk5NzcsIFwiQVwiXSxcclxuICAgIFs5OTc4LCA5OTc4LCBcIldcIl0sXHJcbiAgICBbOTk3OSwgOTk4MCwgXCJBXCJdLFxyXG4gICAgWzk5ODEsIDk5ODEsIFwiV1wiXSxcclxuICAgIFs5OTgyLCA5OTgzLCBcIkFcIl0sXHJcbiAgICBbOTk4NCwgOTk4OCwgXCJOXCJdLFxyXG4gICAgWzk5ODksIDk5ODksIFwiV1wiXSxcclxuICAgIFs5OTkwLCA5OTkzLCBcIk5cIl0sXHJcbiAgICBbOTk5NCwgOTk5NSwgXCJXXCJdLFxyXG4gICAgWzk5OTYsIDEwMDIzLCBcIk5cIl0sXHJcbiAgICBbMTAwMjQsIDEwMDI0LCBcIldcIl0sXHJcbiAgICBbMTAwMjUsIDEwMDQ0LCBcIk5cIl0sXHJcbiAgICBbMTAwNDUsIDEwMDQ1LCBcIkFcIl0sXHJcbiAgICBbMTAwNDYsIDEwMDU5LCBcIk5cIl0sXHJcbiAgICBbMTAwNjAsIDEwMDYwLCBcIldcIl0sXHJcbiAgICBbMTAwNjEsIDEwMDYxLCBcIk5cIl0sXHJcbiAgICBbMTAwNjIsIDEwMDYyLCBcIldcIl0sXHJcbiAgICBbMTAwNjMsIDEwMDY2LCBcIk5cIl0sXHJcbiAgICBbMTAwNjcsIDEwMDY5LCBcIldcIl0sXHJcbiAgICBbMTAwNzAsIDEwMDcwLCBcIk5cIl0sXHJcbiAgICBbMTAwNzEsIDEwMDcxLCBcIldcIl0sXHJcbiAgICBbMTAwNzIsIDEwMTAxLCBcIk5cIl0sXHJcbiAgICBbMTAxMDIsIDEwMTExLCBcIkFcIl0sXHJcbiAgICBbMTAxMTIsIDEwMTMyLCBcIk5cIl0sXHJcbiAgICBbMTAxMzMsIDEwMTM1LCBcIldcIl0sXHJcbiAgICBbMTAxMzYsIDEwMTU5LCBcIk5cIl0sXHJcbiAgICBbMTAxNjAsIDEwMTYwLCBcIldcIl0sXHJcbiAgICBbMTAxNjEsIDEwMTc0LCBcIk5cIl0sXHJcbiAgICBbMTAxNzUsIDEwMTc1LCBcIldcIl0sXHJcbiAgICBbMTAxNzYsIDEwMjEzLCBcIk5cIl0sXHJcbiAgICBbMTAyMTQsIDEwMjIxLCBcIk5hXCJdLFxyXG4gICAgWzEwMjIyLCAxMDYyOCwgXCJOXCJdLFxyXG4gICAgWzEwNjI5LCAxMDYzMCwgXCJOYVwiXSxcclxuICAgIFsxMDYzMSwgMTEwMzQsIFwiTlwiXSxcclxuICAgIFsxMTAzNSwgMTEwMzYsIFwiV1wiXSxcclxuICAgIFsxMTAzNywgMTEwODcsIFwiTlwiXSxcclxuICAgIFsxMTA4OCwgMTEwODgsIFwiV1wiXSxcclxuICAgIFsxMTA4OSwgMTEwOTIsIFwiTlwiXSxcclxuICAgIFsxMTA5MywgMTEwOTMsIFwiV1wiXSxcclxuICAgIFsxMTA5NCwgMTEwOTcsIFwiQVwiXSxcclxuICAgIFsxMTA5OCwgMTE5MDMsIFwiTlwiXSxcclxuICAgIFsxMTkwNCwgMTE5MjksIFwiV1wiXSxcclxuICAgIFsxMTkzMCwgMTE5MzAsIFwiTlwiXSxcclxuICAgIFsxMTkzMSwgMTIwMTksIFwiV1wiXSxcclxuICAgIFsxMjAyMCwgMTIwMzEsIFwiTlwiXSxcclxuICAgIFsxMjAzMiwgMTIyNDUsIFwiV1wiXSxcclxuICAgIFsxMjI0NiwgMTIyNzEsIFwiTlwiXSxcclxuICAgIFsxMjI3MiwgMTIyODMsIFwiV1wiXSxcclxuICAgIFsxMjI4NCwgMTIyODcsIFwiTlwiXSxcclxuICAgIFsxMjI4OCwgMTIyODgsIFwiRlwiXSxcclxuICAgIFsxMjI4OSwgMTIzNTAsIFwiV1wiXSxcclxuICAgIFsxMjM1MSwgMTIzNTIsIFwiTlwiXSxcclxuICAgIFsxMjM1MywgMTI0MzgsIFwiV1wiXSxcclxuICAgIFsxMjQzOSwgMTI0NDAsIFwiTlwiXSxcclxuICAgIFsxMjQ0MSwgMTI1NDMsIFwiV1wiXSxcclxuICAgIFsxMjU0NCwgMTI1NDgsIFwiTlwiXSxcclxuICAgIFsxMjU0OSwgMTI1OTEsIFwiV1wiXSxcclxuICAgIFsxMjU5MiwgMTI1OTIsIFwiTlwiXSxcclxuICAgIFsxMjU5MywgMTI2ODYsIFwiV1wiXSxcclxuICAgIFsxMjY4NywgMTI2ODcsIFwiTlwiXSxcclxuICAgIFsxMjY4OCwgMTI3NzEsIFwiV1wiXSxcclxuICAgIFsxMjc3MiwgMTI3ODMsIFwiTlwiXSxcclxuICAgIFsxMjc4NCwgMTI4MzAsIFwiV1wiXSxcclxuICAgIFsxMjgzMSwgMTI4MzEsIFwiTlwiXSxcclxuICAgIFsxMjgzMiwgMTI4NzEsIFwiV1wiXSxcclxuICAgIFsxMjg3MiwgMTI4NzksIFwiQVwiXSxcclxuICAgIFsxMjg4MCwgMTk5MDMsIFwiV1wiXSxcclxuICAgIFsxOTkwNCwgMTk5NjcsIFwiTlwiXSxcclxuICAgIFsxOTk2OCwgNDIxMjQsIFwiV1wiXSxcclxuICAgIFs0MjEyNSwgNDIxMjcsIFwiTlwiXSxcclxuICAgIFs0MjEyOCwgNDIxODIsIFwiV1wiXSxcclxuICAgIFs0MjE4MywgNDMzNTksIFwiTlwiXSxcclxuICAgIFs0MzM2MCwgNDMzODgsIFwiV1wiXSxcclxuICAgIFs0MzM4OSwgNDQwMzEsIFwiTlwiXSxcclxuICAgIFs0NDAzMiwgNTUyMDMsIFwiV1wiXSxcclxuICAgIFs1NTIwNCwgNTczNDMsIFwiTlwiXSxcclxuICAgIFs1NzM0NCwgNjM3NDMsIFwiQVwiXSxcclxuICAgIFs2Mzc0NCwgNjQyNTUsIFwiV1wiXSxcclxuICAgIFs2NDI1NiwgNjUwMjMsIFwiTlwiXSxcclxuICAgIFs2NTAyNCwgNjUwMzksIFwiQVwiXSxcclxuICAgIFs2NTA0MCwgNjUwNDksIFwiV1wiXSxcclxuICAgIFs2NTA1MCwgNjUwNzEsIFwiTlwiXSxcclxuICAgIFs2NTA3MiwgNjUxMDYsIFwiV1wiXSxcclxuICAgIFs2NTEwNywgNjUxMDcsIFwiTlwiXSxcclxuICAgIFs2NTEwOCwgNjUxMjYsIFwiV1wiXSxcclxuICAgIFs2NTEyNywgNjUxMjcsIFwiTlwiXSxcclxuICAgIFs2NTEyOCwgNjUxMzEsIFwiV1wiXSxcclxuICAgIFs2NTEzMiwgNjUyODAsIFwiTlwiXSxcclxuICAgIFs2NTI4MSwgNjUzNzYsIFwiRlwiXSxcclxuICAgIFs2NTM3NywgNjU0NzAsIFwiSFwiXSxcclxuICAgIFs2NTQ3MSwgNjU0NzMsIFwiTlwiXSxcclxuICAgIFs2NTQ3NCwgNjU0NzksIFwiSFwiXSxcclxuICAgIFs2NTQ4MCwgNjU0ODEsIFwiTlwiXSxcclxuICAgIFs2NTQ4MiwgNjU0ODcsIFwiSFwiXSxcclxuICAgIFs2NTQ4OCwgNjU0ODksIFwiTlwiXSxcclxuICAgIFs2NTQ5MCwgNjU0OTUsIFwiSFwiXSxcclxuICAgIFs2NTQ5NiwgNjU0OTcsIFwiTlwiXSxcclxuICAgIFs2NTQ5OCwgNjU1MDAsIFwiSFwiXSxcclxuICAgIFs2NTUwMSwgNjU1MDMsIFwiTlwiXSxcclxuICAgIFs2NTUwNCwgNjU1MTAsIFwiRlwiXSxcclxuICAgIFs2NTUxMSwgNjU1MTEsIFwiTlwiXSxcclxuICAgIFs2NTUxMiwgNjU1MTgsIFwiSFwiXSxcclxuICAgIFs2NTUxOSwgNjU1MzIsIFwiTlwiXSxcclxuICAgIFs2NTUzMywgNjU1MzMsIFwiQVwiXSxcclxuICAgIFs2NTUzNCwgOTQxNzUsIFwiTlwiXSxcclxuICAgIFs5NDE3NiwgOTQxODAsIFwiV1wiXSxcclxuICAgIFs5NDE4MSwgOTQxOTEsIFwiTlwiXSxcclxuICAgIFs5NDE5MiwgOTQxOTMsIFwiV1wiXSxcclxuICAgIFs5NDE5NCwgOTQyMDcsIFwiTlwiXSxcclxuICAgIFs5NDIwOCwgMTAwMzQzLCBcIldcIl0sXHJcbiAgICBbMTAwMzQ0LCAxMDAzNTEsIFwiTlwiXSxcclxuICAgIFsxMDAzNTIsIDEwMTU4OSwgXCJXXCJdLFxyXG4gICAgWzEwMTU5MCwgMTAxNjMxLCBcIk5cIl0sXHJcbiAgICBbMTAxNjMyLCAxMDE2NDAsIFwiV1wiXSxcclxuICAgIFsxMDE2NDEsIDExMDU5MSwgXCJOXCJdLFxyXG4gICAgWzExMDU5MiwgMTEwODc4LCBcIldcIl0sXHJcbiAgICBbMTEwODc5LCAxMTA5MjcsIFwiTlwiXSxcclxuICAgIFsxMTA5MjgsIDExMDkzMCwgXCJXXCJdLFxyXG4gICAgWzExMDkzMSwgMTEwOTQ3LCBcIk5cIl0sXHJcbiAgICBbMTEwOTQ4LCAxMTA5NTEsIFwiV1wiXSxcclxuICAgIFsxMTA5NTIsIDExMDk1OSwgXCJOXCJdLFxyXG4gICAgWzExMDk2MCwgMTExMzU1LCBcIldcIl0sXHJcbiAgICBbMTExMzU2LCAxMjY5NzksIFwiTlwiXSxcclxuICAgIFsxMjY5ODAsIDEyNjk4MCwgXCJXXCJdLFxyXG4gICAgWzEyNjk4MSwgMTI3MTgyLCBcIk5cIl0sXHJcbiAgICBbMTI3MTgzLCAxMjcxODMsIFwiV1wiXSxcclxuICAgIFsxMjcxODQsIDEyNzIzMSwgXCJOXCJdLFxyXG4gICAgWzEyNzIzMiwgMTI3MjQyLCBcIkFcIl0sXHJcbiAgICBbMTI3MjQzLCAxMjcyNDcsIFwiTlwiXSxcclxuICAgIFsxMjcyNDgsIDEyNzI3NywgXCJBXCJdLFxyXG4gICAgWzEyNzI3OCwgMTI3Mjc5LCBcIk5cIl0sXHJcbiAgICBbMTI3MjgwLCAxMjczMzcsIFwiQVwiXSxcclxuICAgIFsxMjczMzgsIDEyNzM0MywgXCJOXCJdLFxyXG4gICAgWzEyNzM0NCwgMTI3MzczLCBcIkFcIl0sXHJcbiAgICBbMTI3Mzc0LCAxMjczNzQsIFwiV1wiXSxcclxuICAgIFsxMjczNzUsIDEyNzM3NiwgXCJBXCJdLFxyXG4gICAgWzEyNzM3NywgMTI3Mzg2LCBcIldcIl0sXHJcbiAgICBbMTI3Mzg3LCAxMjc0MDQsIFwiQVwiXSxcclxuICAgIFsxMjc0MDUsIDEyNzQ4NywgXCJOXCJdLFxyXG4gICAgWzEyNzQ4OCwgMTI3NDkwLCBcIldcIl0sXHJcbiAgICBbMTI3NDkxLCAxMjc1MDMsIFwiTlwiXSxcclxuICAgIFsxMjc1MDQsIDEyNzU0NywgXCJXXCJdLFxyXG4gICAgWzEyNzU0OCwgMTI3NTUxLCBcIk5cIl0sXHJcbiAgICBbMTI3NTUyLCAxMjc1NjAsIFwiV1wiXSxcclxuICAgIFsxMjc1NjEsIDEyNzU2NywgXCJOXCJdLFxyXG4gICAgWzEyNzU2OCwgMTI3NTY5LCBcIldcIl0sXHJcbiAgICBbMTI3NTcwLCAxMjc1ODMsIFwiTlwiXSxcclxuICAgIFsxMjc1ODQsIDEyNzU4OSwgXCJXXCJdLFxyXG4gICAgWzEyNzU5MCwgMTI3NzQzLCBcIk5cIl0sXHJcbiAgICBbMTI3NzQ0LCAxMjc3NzYsIFwiV1wiXSxcclxuICAgIFsxMjc3NzcsIDEyNzc4OCwgXCJOXCJdLFxyXG4gICAgWzEyNzc4OSwgMTI3Nzk3LCBcIldcIl0sXHJcbiAgICBbMTI3Nzk4LCAxMjc3OTgsIFwiTlwiXSxcclxuICAgIFsxMjc3OTksIDEyNzg2OCwgXCJXXCJdLFxyXG4gICAgWzEyNzg2OSwgMTI3ODY5LCBcIk5cIl0sXHJcbiAgICBbMTI3ODcwLCAxMjc4OTEsIFwiV1wiXSxcclxuICAgIFsxMjc4OTIsIDEyNzkwMywgXCJOXCJdLFxyXG4gICAgWzEyNzkwNCwgMTI3OTQ2LCBcIldcIl0sXHJcbiAgICBbMTI3OTQ3LCAxMjc5NTAsIFwiTlwiXSxcclxuICAgIFsxMjc5NTEsIDEyNzk1NSwgXCJXXCJdLFxyXG4gICAgWzEyNzk1NiwgMTI3OTY3LCBcIk5cIl0sXHJcbiAgICBbMTI3OTY4LCAxMjc5ODQsIFwiV1wiXSxcclxuICAgIFsxMjc5ODUsIDEyNzk4NywgXCJOXCJdLFxyXG4gICAgWzEyNzk4OCwgMTI3OTg4LCBcIldcIl0sXHJcbiAgICBbMTI3OTg5LCAxMjc5OTEsIFwiTlwiXSxcclxuICAgIFsxMjc5OTIsIDEyODA2MiwgXCJXXCJdLFxyXG4gICAgWzEyODA2MywgMTI4MDYzLCBcIk5cIl0sXHJcbiAgICBbMTI4MDY0LCAxMjgwNjQsIFwiV1wiXSxcclxuICAgIFsxMjgwNjUsIDEyODA2NSwgXCJOXCJdLFxyXG4gICAgWzEyODA2NiwgMTI4MjUyLCBcIldcIl0sXHJcbiAgICBbMTI4MjUzLCAxMjgyNTQsIFwiTlwiXSxcclxuICAgIFsxMjgyNTUsIDEyODMxNywgXCJXXCJdLFxyXG4gICAgWzEyODMxOCwgMTI4MzMwLCBcIk5cIl0sXHJcbiAgICBbMTI4MzMxLCAxMjgzMzQsIFwiV1wiXSxcclxuICAgIFsxMjgzMzUsIDEyODMzNSwgXCJOXCJdLFxyXG4gICAgWzEyODMzNiwgMTI4MzU5LCBcIldcIl0sXHJcbiAgICBbMTI4MzYwLCAxMjgzNzcsIFwiTlwiXSxcclxuICAgIFsxMjgzNzgsIDEyODM3OCwgXCJXXCJdLFxyXG4gICAgWzEyODM3OSwgMTI4NDA0LCBcIk5cIl0sXHJcbiAgICBbMTI4NDA1LCAxMjg0MDYsIFwiV1wiXSxcclxuICAgIFsxMjg0MDcsIDEyODQxOSwgXCJOXCJdLFxyXG4gICAgWzEyODQyMCwgMTI4NDIwLCBcIldcIl0sXHJcbiAgICBbMTI4NDIxLCAxMjg1MDYsIFwiTlwiXSxcclxuICAgIFsxMjg1MDcsIDEyODU5MSwgXCJXXCJdLFxyXG4gICAgWzEyODU5MiwgMTI4NjM5LCBcIk5cIl0sXHJcbiAgICBbMTI4NjQwLCAxMjg3MDksIFwiV1wiXSxcclxuICAgIFsxMjg3MTAsIDEyODcxNSwgXCJOXCJdLFxyXG4gICAgWzEyODcxNiwgMTI4NzE2LCBcIldcIl0sXHJcbiAgICBbMTI4NzE3LCAxMjg3MTksIFwiTlwiXSxcclxuICAgIFsxMjg3MjAsIDEyODcyMiwgXCJXXCJdLFxyXG4gICAgWzEyODcyMywgMTI4NzI0LCBcIk5cIl0sXHJcbiAgICBbMTI4NzI1LCAxMjg3MjcsIFwiV1wiXSxcclxuICAgIFsxMjg3MjgsIDEyODc0NiwgXCJOXCJdLFxyXG4gICAgWzEyODc0NywgMTI4NzQ4LCBcIldcIl0sXHJcbiAgICBbMTI4NzQ5LCAxMjg3NTUsIFwiTlwiXSxcclxuICAgIFsxMjg3NTYsIDEyODc2NCwgXCJXXCJdLFxyXG4gICAgWzEyODc2NSwgMTI4OTkxLCBcIk5cIl0sXHJcbiAgICBbMTI4OTkyLCAxMjkwMDMsIFwiV1wiXSxcclxuICAgIFsxMjkwMDQsIDEyOTI5MSwgXCJOXCJdLFxyXG4gICAgWzEyOTI5MiwgMTI5MzM4LCBcIldcIl0sXHJcbiAgICBbMTI5MzM5LCAxMjkzMzksIFwiTlwiXSxcclxuICAgIFsxMjkzNDAsIDEyOTM0OSwgXCJXXCJdLFxyXG4gICAgWzEyOTM1MCwgMTI5MzUwLCBcIk5cIl0sXHJcbiAgICBbMTI5MzUxLCAxMjk0MDAsIFwiV1wiXSxcclxuICAgIFsxMjk0MDEsIDEyOTQwMSwgXCJOXCJdLFxyXG4gICAgWzEyOTQwMiwgMTI5NDgzLCBcIldcIl0sXHJcbiAgICBbMTI5NDg0LCAxMjk0ODQsIFwiTlwiXSxcclxuICAgIFsxMjk0ODUsIDEyOTUzNSwgXCJXXCJdLFxyXG4gICAgWzEyOTUzNiwgMTI5NjQ3LCBcIk5cIl0sXHJcbiAgICBbMTI5NjQ4LCAxMjk2NTIsIFwiV1wiXSxcclxuICAgIFsxMjk2NTMsIDEyOTY1NSwgXCJOXCJdLFxyXG4gICAgWzEyOTY1NiwgMTI5NjU4LCBcIldcIl0sXHJcbiAgICBbMTI5NjU5LCAxMjk2NjMsIFwiTlwiXSxcclxuICAgIFsxMjk2NjQsIDEyOTY3MCwgXCJXXCJdLFxyXG4gICAgWzEyOTY3MSwgMTI5Njc5LCBcIk5cIl0sXHJcbiAgICBbMTI5NjgwLCAxMjk3MDQsIFwiV1wiXSxcclxuICAgIFsxMjk3MDUsIDEyOTcxMSwgXCJOXCJdLFxyXG4gICAgWzEyOTcxMiwgMTI5NzE4LCBcIldcIl0sXHJcbiAgICBbMTI5NzE5LCAxMjk3MjcsIFwiTlwiXSxcclxuICAgIFsxMjk3MjgsIDEyOTczMCwgXCJXXCJdLFxyXG4gICAgWzEyOTczMSwgMTI5NzQzLCBcIk5cIl0sXHJcbiAgICBbMTI5NzQ0LCAxMjk3NTAsIFwiV1wiXSxcclxuICAgIFsxMjk3NTEsIDEzMTA3MSwgXCJOXCJdLFxyXG4gICAgWzEzMTA3MiwgMTk2NjA1LCBcIldcIl0sXHJcbiAgICBbMTk2NjA2LCAxOTY2MDcsIFwiTlwiXSxcclxuICAgIFsxOTY2MDgsIDI2MjE0MSwgXCJXXCJdLFxyXG4gICAgWzI2MjE0MiwgOTE3NzU5LCBcIk5cIl0sXHJcbiAgICBbOTE3NzYwLCA5MTc5OTksIFwiQVwiXSxcclxuICAgIFs5MTgwMDAsIDk4MzAzOSwgXCJOXCJdLFxyXG4gICAgWzk4MzA0MCwgMTA0ODU3MywgXCJBXCJdLFxyXG4gICAgWzEwNDg1NzQsIDEwNDg1NzUsIFwiTlwiXSxcclxuICAgIFsxMDQ4NTc2LCAxMTE0MTA5LCBcIkFcIl0sXHJcbiAgICBbMTExNDExMCwgMTExNDExMSwgXCJOXCJdLFxyXG5dO1xyXG4vKiBFTkQgKi9cclxudmFyIHZlcnNpb24gPSBcIjEzLjAuMFwiO1xuXG4vKipcclxuICogR2V0cyB0aGUgRUFXIHByb3BlcnR5IG9mIGEgY29kZSBwb2ludC5cclxuICogQHBhcmFtIGNvZGVQb2ludCBDb2RlIHBvaW50XHJcbiAqIEByZXR1cm4gVGhlIEVBVyBwcm9wZXJ0eSBvZiB0aGUgY29kZSBwb2ludFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0RUFXT2ZDb2RlUG9pbnQoY29kZVBvaW50KSB7XHJcbiAgICB2YXIgbWluID0gMDtcclxuICAgIHZhciBtYXggPSBkZWZzLmxlbmd0aCAtIDE7XHJcbiAgICB3aGlsZSAobWluICE9PSBtYXgpIHtcclxuICAgICAgICB2YXIgaSA9IG1pbiArICgobWF4IC0gbWluKSA+PiAxKTtcclxuICAgICAgICB2YXIgX2EgPSBkZWZzW2ldLCBzdGFydCA9IF9hWzBdLCBlbmQgPSBfYVsxXSwgcHJvcCA9IF9hWzJdO1xyXG4gICAgICAgIGlmIChjb2RlUG9pbnQgPCBzdGFydCkge1xyXG4gICAgICAgICAgICBtYXggPSBpIC0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY29kZVBvaW50ID4gZW5kKSB7XHJcbiAgICAgICAgICAgIG1pbiA9IGkgKyAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb3A7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlZnNbbWluXVsyXTtcclxufVxyXG4vKipcclxuICogR2V0cyB0aGUgRUFXIHByb3BlcnR5IG9mIGEgY2hhcmFjdGVyLlxyXG4gKiBAcGFyYW0gc3RyIENoYXJhY3RlciBzdHJpbmdcclxuICogQHBhcmFtIHBvcyBDaGFyYWN0ZXIgcG9zaXRpb24gKGluIGNvZGUgdW5pdCkgKGRlZmF1bHQgPSAwKVxyXG4gKiBAcmV0dXJuIFRoZSBFQVcgcHJvcGVydHkgb2YgdGhlIGNoYXJhY3RlclxyXG4gKiBAZXhhbXBsZVxyXG4gKiBpbXBvcnQgeyBnZXRFQVcgfSBmcm9tIFwibWVhd1wiO1xyXG4gKlxyXG4gKiAvLyBOYXJyb3dcclxuICogYXNzZXJ0KGdldEVBVyhcIkFcIikgPT09IFwiTmFcIik7XHJcbiAqIC8vIFdpZGVcclxuICogYXNzZXJ0KGdldEVBVyhcIuOBglwiKSA9PT0gXCJXXCIpO1xyXG4gKiBhc3NlcnQoZ2V0RUFXKFwi5a6JXCIpID09PSBcIldcIik7XHJcbiAqIGFzc2VydChnZXRFQVcoXCLwn42jXCIpID09PSBcIldcIik7XHJcbiAqIC8vIEZ1bGx3aWR0aFxyXG4gKiBhc3NlcnQoZ2V0RUFXKFwi77yhXCIpID09PSBcIkZcIik7XHJcbiAqIC8vIEhhbGZ3aWR0aFxyXG4gKiBhc3NlcnQoZ2V0RUFXKFwi772xXCIpID09PSBcIkhcIik7XHJcbiAqIC8vIEFtYmlndW91c1xyXG4gKiBhc3NlcnQoZ2V0RUFXKFwi4oiAXCIpID09PSBcIkFcIik7XHJcbiAqIGFzc2VydChnZXRFQVcoXCLihpJcIikgPT09IFwiQVwiKTtcclxuICogYXNzZXJ0KGdldEVBVyhcIs6pXCIpID09PSBcIkFcIik7XHJcbiAqIGFzc2VydChnZXRFQVcoXCLQr1wiKSA9PT0gXCJBXCIpO1xyXG4gKiAvLyBOZXV0cmFsXHJcbiAqIGFzc2VydChnZXRFQVcoXCLihLVcIikgPT09IFwiTlwiKTtcclxuICpcclxuICogLy8gY2hhcmFjdGVyIHBvc2l0aW9uIChpbiBjb2RlIHVuaXQpIGNhbiBiZSBzcGVjaWZpZWRcclxuICogYXNzZXJ0KGdldEVBVyhcIuKEtUHjgYLvvKHvvbHiiIBcIiwgMikgPT09IFwiV1wiKTtcclxuICovXHJcbmZ1bmN0aW9uIGdldEVBVyhzdHIsIHBvcykge1xyXG4gICAgaWYgKHBvcyA9PT0gdm9pZCAwKSB7IHBvcyA9IDA7IH1cclxuICAgIHZhciBjb2RlUG9pbnQgPSBzdHIuY29kZVBvaW50QXQocG9zKTtcclxuICAgIGlmIChjb2RlUG9pbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZ2V0RUFXT2ZDb2RlUG9pbnQoY29kZVBvaW50KTtcclxufVxuXG52YXIgZGVmYXVsdFdpZHRocyA9IHtcclxuICAgIE46IDEsXHJcbiAgICBOYTogMSxcclxuICAgIFc6IDIsXHJcbiAgICBGOiAyLFxyXG4gICAgSDogMSxcclxuICAgIEE6IDEsXHJcbn07XHJcbi8qKlxyXG4gKiBDb21wdXRlcyB0aGUgd2lkdGggb2YgYSBzdHJpbmcgYmFzZWQgb24gdGhlIEVBVyBwcm9wZXJ0aWVzIG9mIHRoZSBjaGFyYWN0ZXJzLlxyXG4gKiBCeSBkZWZhdWx0LCBjaGFyYWN0ZXJzIHdpdGggcHJvcGVydHkgV2lkZSAoVykgb3IgRnVsbHdpZHRoIChGKSBhcmUgdHJlYXRlZCBhcyB3aWRlICg9IDIpXHJcbiAqIGFuZCBvdGhlcnMgYXJlIGFzIG5hcnJvdyAoPSAxKS5cclxuICogQHBhcmFtIHN0ciBDaGFyYWN0ZXIgc3RyaW5nXHJcbiAqIEBwYXJhbSB3aWR0aHMgQW4gb2JqZWN0IHRoYXQgbWFwcyBFQVcgcHJvcGVydGllcyB0byBjaGFyYWN0ZXIgd2lkdGhzXHJcbiAqIEByZXR1cm4gVGhlIGNvbXB1dGVkIHdpZHRoXHJcbiAqIEBleGFtcGxlXHJcbiAqIGltcG9ydCB7IGNvbXB1dGVXaWR0aCB9IGZyb20gXCJtZWF3XCI7XHJcbiAqXHJcbiAqIGFzc2VydChjb21wdXRlV2lkdGgoXCJB44GC8J+No86pXCIpID09PSA2KTtcclxuICogLy8gY2hhcmFjdGVyIHdpZHRoIGZvciBlYWNoIEVBVyBwcm9wZXJ0eSBjYW4gYmUgY3VzdG9taXplZFxyXG4gKiBhc3NlcnQoY29tcHV0ZVdpZHRoKFwiQeOBgvCfjaPOqVwiLCB7IFwiQVwiOiAyIH0pID09PSA3KTtcclxuICovXHJcbmZ1bmN0aW9uIGNvbXB1dGVXaWR0aChzdHIsIHdpZHRocykge1xyXG4gICAgdmFyIHdpZHRoID0gMDtcclxuICAgIGZvciAodmFyIF9pID0gMCwgc3RyXzEgPSBzdHI7IF9pIDwgc3RyXzEubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgdmFyIGNoYXIgPSBzdHJfMVtfaV07XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gLS0gY2hhciBjYW5ub3QgYmUgZW1wdHlcclxuICAgICAgICB2YXIgZWF3ID0gZ2V0RUFXKGNoYXIpO1xyXG4gICAgICAgIHdpZHRoICs9ICh3aWR0aHMgJiYgd2lkdGhzW2Vhd10pIHx8IGRlZmF1bHRXaWR0aHNbZWF3XTtcclxuICAgIH1cclxuICAgIHJldHVybiB3aWR0aDtcclxufVxuXG5leHBvcnQgeyBjb21wdXRlV2lkdGgsIHZlcnNpb24gYXMgZWF3VmVyc2lvbiwgZ2V0RUFXIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMubW92ZUNvbHVtbiA9IGV4cG9ydHMuZGVsZXRlQ29sdW1uID0gZXhwb3J0cy5pbnNlcnRDb2x1bW4gPSBleHBvcnRzLm1vdmVSb3cgPSBleHBvcnRzLmRlbGV0ZVJvdyA9IGV4cG9ydHMuaW5zZXJ0Um93ID0gZXhwb3J0cy5hbHRlckFsaWdubWVudCA9IGV4cG9ydHMuZm9ybWF0VGFibGUgPSBleHBvcnRzLkZvcm1hdFR5cGUgPSBleHBvcnRzLl93ZWFrRm9ybWF0VGFibGUgPSBleHBvcnRzLl9mb3JtYXRUYWJsZSA9IGV4cG9ydHMuX3BhZFRleHQgPSBleHBvcnRzLl9hbGlnblRleHQgPSBleHBvcnRzLl9jb21wdXRlVGV4dFdpZHRoID0gZXhwb3J0cy5jb21wbGV0ZVRhYmxlID0gZXhwb3J0cy5fZXh0ZW5kQXJyYXkgPSBleHBvcnRzLl9kZWxpbWl0ZXJUZXh0ID0gdm9pZCAwO1xuY29uc3QgYWxpZ25tZW50XzEgPSByZXF1aXJlKFwiLi9hbGlnbm1lbnRcIik7XG5jb25zdCB0YWJsZV8xID0gcmVxdWlyZShcIi4vdGFibGVcIik7XG5jb25zdCB0YWJsZV9jZWxsXzEgPSByZXF1aXJlKFwiLi90YWJsZS1jZWxsXCIpO1xuY29uc3QgdGFibGVfcm93XzEgPSByZXF1aXJlKFwiLi90YWJsZS1yb3dcIik7XG5jb25zdCBtZWF3XzEgPSByZXF1aXJlKFwibWVhd1wiKTtcbi8qKlxuICogQ3JlYXRlcyBhIGRlbGltaXRlciB0ZXh0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gd2lkdGggLSBXaWR0aCBvZiB0aGUgaG9yaXpvbnRhbCBiYXIgb2YgZGVsaW1pdGVyLlxuICogQHRocm93cyB7RXJyb3J9IFVua25vd24gYWxpZ25tZW50LlxuICovXG5jb25zdCBfZGVsaW1pdGVyVGV4dCA9IChhbGlnbm1lbnQsIHdpZHRoKSA9PiB7XG4gICAgY29uc3QgYmFyID0gJy0nLnJlcGVhdCh3aWR0aCk7XG4gICAgc3dpdGNoIChhbGlnbm1lbnQpIHtcbiAgICAgICAgY2FzZSBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTk9ORTpcbiAgICAgICAgICAgIHJldHVybiBgICR7YmFyfSBgO1xuICAgICAgICBjYXNlIGFsaWdubWVudF8xLkFsaWdubWVudC5MRUZUOlxuICAgICAgICAgICAgcmV0dXJuIGA6JHtiYXJ9IGA7XG4gICAgICAgIGNhc2UgYWxpZ25tZW50XzEuQWxpZ25tZW50LlJJR0hUOlxuICAgICAgICAgICAgcmV0dXJuIGAgJHtiYXJ9OmA7XG4gICAgICAgIGNhc2UgYWxpZ25tZW50XzEuQWxpZ25tZW50LkNFTlRFUjpcbiAgICAgICAgICAgIHJldHVybiBgOiR7YmFyfTpgO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGFsaWdubWVudDogJyArIGFsaWdubWVudCk7XG4gICAgfVxufTtcbmV4cG9ydHMuX2RlbGltaXRlclRleHQgPSBfZGVsaW1pdGVyVGV4dDtcbi8qKlxuICogRXh0ZW5kcyBhcnJheSBzaXplLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBDYWxsYmFjayBmdW5jdGlvbiB0byBmaWxsIG5ld2x5IGNyZWF0ZWQgY2VsbHMuXG4gKiBAcmV0dXJucyBFeHRlbmRlZCBhcnJheS5cbiAqL1xuY29uc3QgX2V4dGVuZEFycmF5ID0gKGFyciwgc2l6ZSwgY2FsbGJhY2spID0+IHtcbiAgICBjb25zdCBleHRlbmRlZCA9IGFyci5zbGljZSgpO1xuICAgIGZvciAobGV0IGkgPSBhcnIubGVuZ3RoOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIGV4dGVuZGVkLnB1c2goY2FsbGJhY2soaSwgYXJyKSk7XG4gICAgfVxuICAgIHJldHVybiBleHRlbmRlZDtcbn07XG5leHBvcnRzLl9leHRlbmRBcnJheSA9IF9leHRlbmRBcnJheTtcbi8qKlxuICogQ29tcGxldGVzIGEgdGFibGUgYnkgYWRkaW5nIG1pc3NpbmcgZGVsaW1pdGVyIGFuZCBjZWxscy5cbiAqIEFmdGVyIGNvbXBsZXRpb24sIGFsbCByb3dzIGluIHRoZSB0YWJsZSBoYXZlIHRoZSBzYW1lIHdpZHRoLlxuICpcbiAqIEBwcml2YXRlXG4gKlxuICogQHRocm93cyB7RXJyb3J9IEVtcHR5IHRhYmxlLlxuICovXG5jb25zdCBjb21wbGV0ZVRhYmxlID0gKHRhYmxlLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgdGFibGVIZWlnaHQgPSB0YWJsZS5nZXRIZWlnaHQoKTtcbiAgICBjb25zdCB0YWJsZVdpZHRoID0gdGFibGUuZ2V0V2lkdGgoKTtcbiAgICBpZiAodGFibGVIZWlnaHQgPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbXB0eSB0YWJsZScpO1xuICAgIH1cbiAgICBjb25zdCByb3dzID0gdGFibGUuZ2V0Um93cygpO1xuICAgIGNvbnN0IG5ld1Jvd3MgPSBbXTtcbiAgICAvLyBoZWFkZXJcbiAgICBjb25zdCBoZWFkZXJSb3cgPSByb3dzWzBdO1xuICAgIGNvbnN0IGhlYWRlckNlbGxzID0gaGVhZGVyUm93LmdldENlbGxzKCk7XG4gICAgbmV3Um93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhleHBvcnRzLl9leHRlbmRBcnJheShoZWFkZXJDZWxscywgdGFibGVXaWR0aCwgKGopID0+IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKGogPT09IGhlYWRlckNlbGxzLmxlbmd0aCA/IGhlYWRlclJvdy5tYXJnaW5SaWdodCA6ICcnKSksIGhlYWRlclJvdy5tYXJnaW5MZWZ0LCBoZWFkZXJDZWxscy5sZW5ndGggPCB0YWJsZVdpZHRoID8gJycgOiBoZWFkZXJSb3cubWFyZ2luUmlnaHQpKTtcbiAgICAvLyBkZWxpbWl0ZXJcbiAgICBjb25zdCBkZWxpbWl0ZXJSb3cgPSB0YWJsZS5nZXREZWxpbWl0ZXJSb3coKTtcbiAgICBpZiAoZGVsaW1pdGVyUm93ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgZGVsaW1pdGVyQ2VsbHMgPSBkZWxpbWl0ZXJSb3cuZ2V0Q2VsbHMoKTtcbiAgICAgICAgbmV3Um93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhleHBvcnRzLl9leHRlbmRBcnJheShkZWxpbWl0ZXJDZWxscywgdGFibGVXaWR0aCwgKGopID0+IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKGV4cG9ydHMuX2RlbGltaXRlclRleHQoYWxpZ25tZW50XzEuQWxpZ25tZW50Lk5PTkUsIGogPT09IGRlbGltaXRlckNlbGxzLmxlbmd0aFxuICAgICAgICAgICAgPyBNYXRoLm1heChvcHRpb25zLm1pbkRlbGltaXRlcldpZHRoLCBkZWxpbWl0ZXJSb3cubWFyZ2luUmlnaHQubGVuZ3RoIC0gMilcbiAgICAgICAgICAgIDogb3B0aW9ucy5taW5EZWxpbWl0ZXJXaWR0aCkpKSwgZGVsaW1pdGVyUm93Lm1hcmdpbkxlZnQsIGRlbGltaXRlckNlbGxzLmxlbmd0aCA8IHRhYmxlV2lkdGggPyAnJyA6IGRlbGltaXRlclJvdy5tYXJnaW5SaWdodCkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbmV3Um93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhleHBvcnRzLl9leHRlbmRBcnJheShbXSwgdGFibGVXaWR0aCwgKCkgPT4gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoZXhwb3J0cy5fZGVsaW1pdGVyVGV4dChhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTk9ORSwgb3B0aW9ucy5taW5EZWxpbWl0ZXJXaWR0aCkpKSwgJycsICcnKSk7XG4gICAgfVxuICAgIC8vIGJvZHlcbiAgICBmb3IgKGxldCBpID0gZGVsaW1pdGVyUm93ICE9PSB1bmRlZmluZWQgPyAyIDogMTsgaSA8IHRhYmxlSGVpZ2h0OyBpKyspIHtcbiAgICAgICAgY29uc3Qgcm93ID0gcm93c1tpXTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSByb3cuZ2V0Q2VsbHMoKTtcbiAgICAgICAgbmV3Um93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhleHBvcnRzLl9leHRlbmRBcnJheShjZWxscywgdGFibGVXaWR0aCwgKGopID0+IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKGogPT09IGNlbGxzLmxlbmd0aCA/IHJvdy5tYXJnaW5SaWdodCA6ICcnKSksIHJvdy5tYXJnaW5MZWZ0LCBjZWxscy5sZW5ndGggPCB0YWJsZVdpZHRoID8gJycgOiByb3cubWFyZ2luUmlnaHQpKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdGFibGU6IG5ldyB0YWJsZV8xLlRhYmxlKG5ld1Jvd3MpLFxuICAgICAgICBkZWxpbWl0ZXJJbnNlcnRlZDogZGVsaW1pdGVyUm93ID09PSB1bmRlZmluZWQsXG4gICAgfTtcbn07XG5leHBvcnRzLmNvbXBsZXRlVGFibGUgPSBjb21wbGV0ZVRhYmxlO1xuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiBhIHRleHQgYmFzZWQgb24gY2hhcmFjdGVycycgRUFXIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqXG4gKiBAcmV0dXJucyBDYWxjdWxhdGVkIHdpZHRoIG9mIHRoZSB0ZXh0LlxuICovXG5jb25zdCBfY29tcHV0ZVRleHRXaWR0aCA9ICh0ZXh0LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG9wdGlvbnMubm9ybWFsaXplID8gdGV4dC5ub3JtYWxpemUoJ05GQycpIDogdGV4dDtcbiAgICBsZXQgdyA9IDA7XG4gICAgZm9yIChjb25zdCBjaGFyIG9mIG5vcm1hbGl6ZWQpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMud2lkZUNoYXJzLmhhcyhjaGFyKSkge1xuICAgICAgICAgICAgdyArPSAyO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMubmFycm93Q2hhcnMuaGFzKGNoYXIpKSB7XG4gICAgICAgICAgICB3ICs9IDE7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKG1lYXdfMS5nZXRFQVcoY2hhcikpIHtcbiAgICAgICAgICAgIGNhc2UgJ0YnOlxuICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgdyArPSAyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQSc6XG4gICAgICAgICAgICAgICAgdyArPSBvcHRpb25zLmFtYmlndW91c0FzV2lkZSA/IDIgOiAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB3ICs9IDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHc7XG59O1xuZXhwb3J0cy5fY29tcHV0ZVRleHRXaWR0aCA9IF9jb21wdXRlVGV4dFdpZHRoO1xuLyoqXG4gKiBSZXR1cm5zIGEgYWxpZ25lZCBjZWxsIGNvbnRlbnQuXG4gKlxuICogQHRocm93cyB7RXJyb3J9IFVua25vd24gYWxpZ25tZW50LlxuICogQHRocm93cyB7RXJyb3J9IFVuZXhwZWN0ZWQgZGVmYXVsdCBhbGlnbm1lbnQuXG4gKi9cbmNvbnN0IF9hbGlnblRleHQgPSAodGV4dCwgd2lkdGgsIGFsaWdubWVudCwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHNwYWNlID0gd2lkdGggLSBleHBvcnRzLl9jb21wdXRlVGV4dFdpZHRoKHRleHQsIG9wdGlvbnMpO1xuICAgIGlmIChzcGFjZSA8IDApIHtcbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7XG4gICAgICAgIGNhc2UgYWxpZ25tZW50XzEuQWxpZ25tZW50Lk5PTkU6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgZGVmYXVsdCBhbGlnbm1lbnQnKTtcbiAgICAgICAgY2FzZSBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTEVGVDpcbiAgICAgICAgICAgIHJldHVybiB0ZXh0ICsgJyAnLnJlcGVhdChzcGFjZSk7XG4gICAgICAgIGNhc2UgYWxpZ25tZW50XzEuQWxpZ25tZW50LlJJR0hUOlxuICAgICAgICAgICAgcmV0dXJuICcgJy5yZXBlYXQoc3BhY2UpICsgdGV4dDtcbiAgICAgICAgY2FzZSBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuQ0VOVEVSOlxuICAgICAgICAgICAgcmV0dXJuICgnICcucmVwZWF0KE1hdGguZmxvb3Ioc3BhY2UgLyAyKSkgK1xuICAgICAgICAgICAgICAgIHRleHQgK1xuICAgICAgICAgICAgICAgICcgJy5yZXBlYXQoTWF0aC5jZWlsKHNwYWNlIC8gMikpKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBhbGlnbm1lbnQ6ICcgKyBhbGlnbm1lbnQpO1xuICAgIH1cbn07XG5leHBvcnRzLl9hbGlnblRleHQgPSBfYWxpZ25UZXh0O1xuLyoqXG4gKiBKdXN0IGFkZHMgb25lIHNwYWNlIHBhZGRpbmdzIHRvIGJvdGggc2lkZXMgb2YgYSB0ZXh0LlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IF9wYWRUZXh0ID0gKHRleHQpID0+IGAgJHt0ZXh0fSBgO1xuZXhwb3J0cy5fcGFkVGV4dCA9IF9wYWRUZXh0O1xuLyoqXG4gKiBGb3JtYXRzIGEgdGFibGUuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgX2Zvcm1hdFRhYmxlID0gKHRhYmxlLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgdGFibGVIZWlnaHQgPSB0YWJsZS5nZXRIZWlnaHQoKTtcbiAgICBjb25zdCB0YWJsZVdpZHRoID0gdGFibGUuZ2V0V2lkdGgoKTtcbiAgICBpZiAodGFibGVIZWlnaHQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgICAgbWFyZ2luTGVmdDogJycsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IG1hcmdpbkxlZnQgPSB0YWJsZS5nZXRSb3dzKClbMF0ubWFyZ2luTGVmdDtcbiAgICBpZiAodGFibGVXaWR0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCByb3dzID0gbmV3IEFycmF5KHRhYmxlSGVpZ2h0KS5maWxsKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhbXSwgbWFyZ2luTGVmdCwgJycpKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhYmxlOiBuZXcgdGFibGVfMS5UYWJsZShyb3dzKSxcbiAgICAgICAgICAgIG1hcmdpbkxlZnQsXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vIGNvbXB1dGUgY29sdW1uIHdpZHRoc1xuICAgIGNvbnN0IGRlbGltaXRlclJvdyA9IHRhYmxlLmdldERlbGltaXRlclJvdygpO1xuICAgIGNvbnN0IGNvbHVtbldpZHRocyA9IG5ldyBBcnJheSh0YWJsZVdpZHRoKS5maWxsKDApO1xuICAgIGlmIChkZWxpbWl0ZXJSb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBkZWxpbWl0ZXJSb3dXaWR0aCA9IGRlbGltaXRlclJvdy5nZXRXaWR0aCgpO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGRlbGltaXRlclJvd1dpZHRoOyBqKyspIHtcbiAgICAgICAgICAgIGNvbHVtbldpZHRoc1tqXSA9IG9wdGlvbnMubWluRGVsaW1pdGVyV2lkdGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWJsZUhlaWdodDsgaSsrKSB7XG4gICAgICAgIGlmIChkZWxpbWl0ZXJSb3cgIT09IHVuZGVmaW5lZCAmJiBpID09PSAxKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByb3cgPSB0YWJsZS5nZXRSb3dzKClbaV07XG4gICAgICAgIGNvbnN0IHJvd1dpZHRoID0gcm93LmdldFdpZHRoKCk7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcm93V2lkdGg7IGorKykge1xuICAgICAgICAgICAgY29sdW1uV2lkdGhzW2pdID0gTWF0aC5tYXgoY29sdW1uV2lkdGhzW2pdLCBleHBvcnRzLl9jb21wdXRlVGV4dFdpZHRoKHJvdy5nZXRDZWxsQXQoaikuY29udGVudCwgb3B0aW9ucy50ZXh0V2lkdGhPcHRpb25zKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gZ2V0IGNvbHVtbiBhbGlnbm1lbnRzXG4gICAgY29uc3QgYWxpZ25tZW50cyA9IGRlbGltaXRlclJvdyAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gZXhwb3J0cy5fZXh0ZW5kQXJyYXkoZGVsaW1pdGVyUm93LmdldENlbGxzKCkubWFwKChjZWxsKSA9PiBjZWxsLmdldEFsaWdubWVudCgpKSwgdGFibGVXaWR0aCwgXG4gICAgICAgIC8vIFNhZmUgY29udmVyc2lvbiBiZWNhdXNlIERlZmF1bHRBbGlnbm1lbnQgaXMgYSBzdWJzZXQgb2YgQWxpZ25tZW50XG4gICAgICAgICgpID0+IG9wdGlvbnMuZGVmYXVsdEFsaWdubWVudClcbiAgICAgICAgOiBuZXcgQXJyYXkodGFibGVXaWR0aCkuZmlsbChvcHRpb25zLmRlZmF1bHRBbGlnbm1lbnQpO1xuICAgIC8vIGZvcm1hdFxuICAgIGNvbnN0IHJvd3MgPSBbXTtcbiAgICAvLyBoZWFkZXJcbiAgICBjb25zdCBoZWFkZXJSb3cgPSB0YWJsZS5nZXRSb3dzKClbMF07XG4gICAgcm93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhoZWFkZXJSb3dcbiAgICAgICAgLmdldENlbGxzKClcbiAgICAgICAgLm1hcCgoY2VsbCwgaikgPT4gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoZXhwb3J0cy5fcGFkVGV4dChleHBvcnRzLl9hbGlnblRleHQoY2VsbC5jb250ZW50LCBjb2x1bW5XaWR0aHNbal0sIG9wdGlvbnMuaGVhZGVyQWxpZ25tZW50ID09PSBhbGlnbm1lbnRfMS5IZWFkZXJBbGlnbm1lbnQuRk9MTE9XXG4gICAgICAgID8gYWxpZ25tZW50c1tqXSA9PT0gYWxpZ25tZW50XzEuQWxpZ25tZW50Lk5PTkVcbiAgICAgICAgICAgID8gb3B0aW9ucy5kZWZhdWx0QWxpZ25tZW50XG4gICAgICAgICAgICA6IGFsaWdubWVudHNbal1cbiAgICAgICAgOiBvcHRpb25zLmhlYWRlckFsaWdubWVudCwgb3B0aW9ucy50ZXh0V2lkdGhPcHRpb25zKSkpKSwgbWFyZ2luTGVmdCwgJycpKTtcbiAgICAvLyBkZWxpbWl0ZXJcbiAgICBpZiAoZGVsaW1pdGVyUm93ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcm93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhkZWxpbWl0ZXJSb3dcbiAgICAgICAgICAgIC5nZXRDZWxscygpXG4gICAgICAgICAgICAubWFwKChjZWxsLCBqKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbChleHBvcnRzLl9kZWxpbWl0ZXJUZXh0KGFsaWdubWVudHNbal0sIGNvbHVtbldpZHRoc1tqXSkpKSwgbWFyZ2luTGVmdCwgJycpKTtcbiAgICB9XG4gICAgLy8gYm9keVxuICAgIGZvciAobGV0IGkgPSBkZWxpbWl0ZXJSb3cgIT09IHVuZGVmaW5lZCA/IDIgOiAxOyBpIDwgdGFibGVIZWlnaHQ7IGkrKykge1xuICAgICAgICBjb25zdCByb3cgPSB0YWJsZS5nZXRSb3dzKClbaV07XG4gICAgICAgIHJvd3MucHVzaChuZXcgdGFibGVfcm93XzEuVGFibGVSb3cocm93XG4gICAgICAgICAgICAuZ2V0Q2VsbHMoKVxuICAgICAgICAgICAgLm1hcCgoY2VsbCwgaikgPT4gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoZXhwb3J0cy5fcGFkVGV4dChleHBvcnRzLl9hbGlnblRleHQoY2VsbC5jb250ZW50LCBjb2x1bW5XaWR0aHNbal0sIGFsaWdubWVudHNbal0gPT09IGFsaWdubWVudF8xLkFsaWdubWVudC5OT05FXG4gICAgICAgICAgICA/IG9wdGlvbnMuZGVmYXVsdEFsaWdubWVudFxuICAgICAgICAgICAgOiBhbGlnbm1lbnRzW2pdLCBvcHRpb25zLnRleHRXaWR0aE9wdGlvbnMpKSkpLCBtYXJnaW5MZWZ0LCAnJykpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB0YWJsZTogbmV3IHRhYmxlXzEuVGFibGUocm93cyksXG4gICAgICAgIG1hcmdpbkxlZnQsXG4gICAgfTtcbn07XG5leHBvcnRzLl9mb3JtYXRUYWJsZSA9IF9mb3JtYXRUYWJsZTtcbi8qKlxuICogRm9ybWF0cyBhIHRhYmxlIHdlYWtseS5cbiAqIFJvd3MgYXJlIGZvcm1hdHRlZCBpbmRlcGVuZGVudGx5IHRvIGVhY2ggb3RoZXIsIGNlbGwgY29udGVudHMgYXJlIGp1c3QgdHJpbW1lZCBhbmQgbm90IGFsaWduZWQuXG4gKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHVzaW5nIGEgbm9uLW1vbm9zcGFjZWQgZm9udCBvciBkZWFsaW5nIHdpdGggd2lkZSB0YWJsZXMuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgX3dlYWtGb3JtYXRUYWJsZSA9ICh0YWJsZSwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHRhYmxlSGVpZ2h0ID0gdGFibGUuZ2V0SGVpZ2h0KCk7XG4gICAgY29uc3QgdGFibGVXaWR0aCA9IHRhYmxlLmdldFdpZHRoKCk7XG4gICAgaWYgKHRhYmxlSGVpZ2h0ID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgIG1hcmdpbkxlZnQ6ICcnLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBtYXJnaW5MZWZ0ID0gdGFibGUuZ2V0Um93cygpWzBdLm1hcmdpbkxlZnQ7XG4gICAgaWYgKHRhYmxlV2lkdGggPT09IDApIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IG5ldyBBcnJheSh0YWJsZUhlaWdodCkuZmlsbChuZXcgdGFibGVfcm93XzEuVGFibGVSb3coW10sIG1hcmdpbkxlZnQsICcnKSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YWJsZTogbmV3IHRhYmxlXzEuVGFibGUocm93cyksXG4gICAgICAgICAgICBtYXJnaW5MZWZ0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBkZWxpbWl0ZXJSb3cgPSB0YWJsZS5nZXREZWxpbWl0ZXJSb3coKTtcbiAgICAvLyBmb3JtYXRcbiAgICBjb25zdCByb3dzID0gW107XG4gICAgLy8gaGVhZGVyXG4gICAgY29uc3QgaGVhZGVyUm93ID0gdGFibGUuZ2V0Um93cygpWzBdO1xuICAgIHJvd3MucHVzaChuZXcgdGFibGVfcm93XzEuVGFibGVSb3coaGVhZGVyUm93LmdldENlbGxzKCkubWFwKChjZWxsKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbChleHBvcnRzLl9wYWRUZXh0KGNlbGwuY29udGVudCkpKSwgbWFyZ2luTGVmdCwgJycpKTtcbiAgICAvLyBkZWxpbWl0ZXJcbiAgICBpZiAoZGVsaW1pdGVyUm93ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcm93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhkZWxpbWl0ZXJSb3dcbiAgICAgICAgICAgIC5nZXRDZWxscygpXG4gICAgICAgICAgICAubWFwKChjZWxsKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbChleHBvcnRzLl9kZWxpbWl0ZXJUZXh0KGNlbGwuZ2V0QWxpZ25tZW50KCksIG9wdGlvbnMubWluRGVsaW1pdGVyV2lkdGgpKSksIG1hcmdpbkxlZnQsICcnKSk7XG4gICAgfVxuICAgIC8vIGJvZHlcbiAgICBmb3IgKGxldCBpID0gZGVsaW1pdGVyUm93ICE9PSB1bmRlZmluZWQgPyAyIDogMTsgaSA8IHRhYmxlSGVpZ2h0OyBpKyspIHtcbiAgICAgICAgY29uc3Qgcm93ID0gdGFibGUuZ2V0Um93cygpW2ldO1xuICAgICAgICByb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KHJvdy5nZXRDZWxscygpLm1hcCgoY2VsbCkgPT4gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoZXhwb3J0cy5fcGFkVGV4dChjZWxsLmNvbnRlbnQpKSksIG1hcmdpbkxlZnQsICcnKSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHRhYmxlOiBuZXcgdGFibGVfMS5UYWJsZShyb3dzKSxcbiAgICAgICAgbWFyZ2luTGVmdCxcbiAgICB9O1xufTtcbmV4cG9ydHMuX3dlYWtGb3JtYXRUYWJsZSA9IF93ZWFrRm9ybWF0VGFibGU7XG4vKipcbiAqIFJlcHJlc2VudHMgdGFibGUgZm9ybWF0IHR5cGUuXG4gKlxuICogLSBgRm9ybWF0VHlwZS5OT1JNQUxgIC0gRm9ybWF0cyB0YWJsZSBub3JtYWxseS5cbiAqIC0gYEZvcm1hdFR5cGUuV0VBS2AgLSBGb3JtYXRzIHRhYmxlIHdlYWtseSwgcm93cyBhcmUgZm9ybWF0dGVkIGluZGVwZW5kZW50bHkgdG8gZWFjaCBvdGhlciwgY2VsbFxuICogICBjb250ZW50cyBhcmUganVzdCB0cmltbWVkIGFuZCBub3QgYWxpZ25lZC5cbiAqL1xudmFyIEZvcm1hdFR5cGU7XG4oZnVuY3Rpb24gKEZvcm1hdFR5cGUpIHtcbiAgICBGb3JtYXRUeXBlW1wiTk9STUFMXCJdID0gXCJub3JtYWxcIjtcbiAgICBGb3JtYXRUeXBlW1wiV0VBS1wiXSA9IFwid2Vha1wiO1xufSkoRm9ybWF0VHlwZSA9IGV4cG9ydHMuRm9ybWF0VHlwZSB8fCAoZXhwb3J0cy5Gb3JtYXRUeXBlID0ge30pKTtcbi8qKlxuICogRm9ybWF0cyBhIHRhYmxlLlxuICpcbiAqIEBwcml2YXRlXG4gKlxuICogQHRocm93cyB7RXJyb3J9IFVua25vd24gZm9ybWF0IHR5cGUuXG4gKi9cbmNvbnN0IGZvcm1hdFRhYmxlID0gKHRhYmxlLCBvcHRpb25zKSA9PiB7XG4gICAgc3dpdGNoIChvcHRpb25zLmZvcm1hdFR5cGUpIHtcbiAgICAgICAgY2FzZSBGb3JtYXRUeXBlLk5PUk1BTDpcbiAgICAgICAgICAgIHJldHVybiBleHBvcnRzLl9mb3JtYXRUYWJsZSh0YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgIGNhc2UgRm9ybWF0VHlwZS5XRUFLOlxuICAgICAgICAgICAgcmV0dXJuIGV4cG9ydHMuX3dlYWtGb3JtYXRUYWJsZSh0YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZm9ybWF0IHR5cGU6ICcgKyBvcHRpb25zLmZvcm1hdFR5cGUpO1xuICAgIH1cbn07XG5leHBvcnRzLmZvcm1hdFRhYmxlID0gZm9ybWF0VGFibGU7XG4vKipcbiAqIEFsdGVycyBhIGNvbHVtbidzIGFsaWdubWVudCBvZiBhIHRhYmxlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gdGFibGUgLSBBIGNvbXBsZXRlZCBub24tZW1wdHkgdGFibGUuXG4gKiBAcGFyYW0gY29sdW1uSW5kZXggLSBBbiBpbmRleCBvZiB0aGUgY29sdW1uLlxuICogQHBhcmFtIGFsaWdubWVudCAtIEEgbmV3IGFsaWdubWVudCBvZiB0aGUgY29sdW1uLlxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3QgY29udGFpbmluZyBvcHRpb25zIGZvciBjb21wbGV0aW9uLlxuICogQHJldHVybnMge1RhYmxlfSBBbiBhbHRlcmVkIHRhYmxlIG9iamVjdC5cbiAqIElmIHRoZSBjb2x1bW4gaW5kZXggaXMgb3V0IG9mIHJhbmdlLCByZXR1cm5zIHRoZSBvcmlnaW5hbCB0YWJsZS5cbiAqL1xuY29uc3QgYWx0ZXJBbGlnbm1lbnQgPSAodGFibGUsIGNvbHVtbkluZGV4LCBhbGlnbm1lbnQsIG9wdGlvbnMpID0+IHtcbiAgICBpZiAodGFibGUuZ2V0SGVpZ2h0KCkgPCAxKSB7XG4gICAgICAgIHJldHVybiB0YWJsZTtcbiAgICB9XG4gICAgY29uc3QgZGVsaW1pdGVyUm93ID0gdGFibGUuZ2V0Um93cygpWzFdO1xuICAgIGlmIChjb2x1bW5JbmRleCA8IDAgfHwgZGVsaW1pdGVyUm93LmdldFdpZHRoKCkgLSAxIDwgY29sdW1uSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHRhYmxlO1xuICAgIH1cbiAgICBjb25zdCBkZWxpbWl0ZXJDZWxscyA9IGRlbGltaXRlclJvdy5nZXRDZWxscygpO1xuICAgIGRlbGltaXRlckNlbGxzW2NvbHVtbkluZGV4XSA9IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKGV4cG9ydHMuX2RlbGltaXRlclRleHQoYWxpZ25tZW50LCBvcHRpb25zLm1pbkRlbGltaXRlcldpZHRoKSk7XG4gICAgY29uc3Qgcm93cyA9IHRhYmxlLmdldFJvd3MoKTtcbiAgICByb3dzWzFdID0gbmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGRlbGltaXRlckNlbGxzLCBkZWxpbWl0ZXJSb3cubWFyZ2luTGVmdCwgZGVsaW1pdGVyUm93Lm1hcmdpblJpZ2h0KTtcbiAgICByZXR1cm4gbmV3IHRhYmxlXzEuVGFibGUocm93cyk7XG59O1xuZXhwb3J0cy5hbHRlckFsaWdubWVudCA9IGFsdGVyQWxpZ25tZW50O1xuLyoqXG4gKiBJbnNlcnRzIGEgcm93IHRvIGEgdGFibGUuXG4gKiBUaGUgcm93IGlzIGFsd2F5cyBpbnNlcnRlZCBhZnRlciB0aGUgaGVhZGVyIGFuZCB0aGUgZGVsaW1pdGVyIHJvd3MsIGV2ZW4gaWYgdGhlIGluZGV4IHNwZWNpZmllc1xuICogdGhlIGhlYWRlciBvciB0aGUgZGVsaW1pdGVyLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gdGFibGUgLSBBIGNvbXBsZXRlZCBub24tZW1wdHkgdGFibGUuXG4gKiBAcGFyYW0gcm93SW5kZXggLSBBbiByb3cgaW5kZXggYXQgd2hpY2ggYSBuZXcgcm93IHdpbGwgYmUgaW5zZXJ0ZWQuXG4gKiBAcGFyYW0gcm93IC0gQSB0YWJsZSByb3cgdG8gYmUgaW5zZXJ0ZWQuXG4gKiBAcmV0dXJucyBBbiBhbHRlcmVkIHRhYmxlIG9iZWpjdC5cbiAqL1xuY29uc3QgaW5zZXJ0Um93ID0gKHRhYmxlLCByb3dJbmRleCwgcm93KSA9PiB7XG4gICAgY29uc3Qgcm93cyA9IHRhYmxlLmdldFJvd3MoKTtcbiAgICByb3dzLnNwbGljZShNYXRoLm1heChyb3dJbmRleCwgMiksIDAsIHJvdyk7XG4gICAgcmV0dXJuIG5ldyB0YWJsZV8xLlRhYmxlKHJvd3MpO1xufTtcbmV4cG9ydHMuaW5zZXJ0Um93ID0gaW5zZXJ0Um93O1xuLyoqXG4gKiBEZWxldGVzIGEgcm93IGluIGEgdGFibGUuXG4gKiBJZiB0aGUgaW5kZXggc3BlY2lmaWVzIHRoZSBoZWFkZXIgcm93LCB0aGUgY2VsbHMgYXJlIGVtcHRpZWQgYnV0IHRoZSByb3cgd2lsbCBub3QgYmUgcmVtb3ZlZC5cbiAqIElmIHRoZSBpbmRleCBzcGVjaWZpZXMgdGhlIGRlbGltaXRlciByb3csIGl0IGRvZXMgbm90aGluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHRhYmxlIC0gQSBjb21wbGV0ZWQgbm9uLWVtcHR5IHRhYmxlLlxuICogQHBhcmFtIHJvd0luZGV4IC0gQW4gaW5kZXggb2YgdGhlIHJvdyB0byBiZSBkZWxldGVkLlxuICogQHJldHVybnMgQW4gYWx0ZXJlZCB0YWJsZSBvYmVqY3QuXG4gKi9cbmNvbnN0IGRlbGV0ZVJvdyA9ICh0YWJsZSwgcm93SW5kZXgpID0+IHtcbiAgICBpZiAocm93SW5kZXggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHRhYmxlO1xuICAgIH1cbiAgICBjb25zdCByb3dzID0gdGFibGUuZ2V0Um93cygpO1xuICAgIGlmIChyb3dJbmRleCA9PT0gMCkge1xuICAgICAgICBjb25zdCBoZWFkZXJSb3cgPSByb3dzWzBdO1xuICAgICAgICByb3dzWzBdID0gbmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KG5ldyBBcnJheShoZWFkZXJSb3cuZ2V0V2lkdGgoKSkuZmlsbChuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCgnJykpLCBoZWFkZXJSb3cubWFyZ2luTGVmdCwgaGVhZGVyUm93Lm1hcmdpblJpZ2h0KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJvd3Muc3BsaWNlKHJvd0luZGV4LCAxKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0YWJsZV8xLlRhYmxlKHJvd3MpO1xufTtcbmV4cG9ydHMuZGVsZXRlUm93ID0gZGVsZXRlUm93O1xuLyoqXG4gKiBNb3ZlcyBhIHJvdyBhdCB0aGUgaW5kZXggdG8gdGhlIHNwZWNpZmllZCBkZXN0aW5hdGlvbi5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHRhYmxlIC0gQSBjb21wbGV0ZWQgbm9uLWVtcHR5IHRhYmxlLlxuICogQHBhcmFtIHJvd0luZGV4IC0gSW5kZXggb2YgdGhlIHJvdyB0byBiZSBtb3ZlZC5cbiAqIEBwYXJhbSBkZXN0SW5kZXggLSBJbmRleCBvZiB0aGUgZGVzdGluYXRpb24uXG4gKiBAcmV0dXJucyBBbiBhbHRlcmVkIHRhYmxlIG9iamVjdC5cbiAqL1xuY29uc3QgbW92ZVJvdyA9ICh0YWJsZSwgcm93SW5kZXgsIGRlc3RJbmRleCkgPT4ge1xuICAgIGlmIChyb3dJbmRleCA8PSAxIHx8IGRlc3RJbmRleCA8PSAxIHx8IHJvd0luZGV4ID09PSBkZXN0SW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHRhYmxlO1xuICAgIH1cbiAgICBjb25zdCByb3dzID0gdGFibGUuZ2V0Um93cygpO1xuICAgIGNvbnN0IHJvdyA9IHJvd3Nbcm93SW5kZXhdO1xuICAgIHJvd3Muc3BsaWNlKHJvd0luZGV4LCAxKTtcbiAgICByb3dzLnNwbGljZShkZXN0SW5kZXgsIDAsIHJvdyk7XG4gICAgcmV0dXJuIG5ldyB0YWJsZV8xLlRhYmxlKHJvd3MpO1xufTtcbmV4cG9ydHMubW92ZVJvdyA9IG1vdmVSb3c7XG4vKipcbiAqIEluc2VydHMgYSBjb2x1bW4gdG8gYSB0YWJsZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHRhYmxlIC0gQSBjb21wbGV0ZWQgbm9uLWVtcHR5IHRhYmxlLlxuICogQHBhcmFtIGNvbHVtbkluZGV4IC0gQW4gY29sdW1uIGluZGV4IGF0IHdoaWNoIHRoZSBuZXcgY29sdW1uIHdpbGwgYmUgaW5zZXJ0ZWQuXG4gKiBAcGFyYW0gY29sdW1uIC0gQW4gYXJyYXkgb2YgY2VsbHMuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCBjb250YWluaW5nIG9wdGlvbnMgZm9yIGNvbXBsZXRpb24uXG4gKiBAcmV0dXJucyBBbiBhbHRlcmVkIHRhYmxlIG9iZWpjdC5cbiAqL1xuY29uc3QgaW5zZXJ0Q29sdW1uID0gKHRhYmxlLCBjb2x1bW5JbmRleCwgY29sdW1uLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgcm93cyA9IHRhYmxlLmdldFJvd3MoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgcm93ID0gcm93c1tpXTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSByb3dzW2ldLmdldENlbGxzKCk7XG4gICAgICAgIGNvbnN0IGNlbGwgPSBpID09PSAxXG4gICAgICAgICAgICA/IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKGV4cG9ydHMuX2RlbGltaXRlclRleHQoYWxpZ25tZW50XzEuQWxpZ25tZW50Lk5PTkUsIG9wdGlvbnMubWluRGVsaW1pdGVyV2lkdGgpKVxuICAgICAgICAgICAgOiBjb2x1bW5baSA+IDEgPyBpIC0gMSA6IGldO1xuICAgICAgICBjZWxscy5zcGxpY2UoY29sdW1uSW5kZXgsIDAsIGNlbGwpO1xuICAgICAgICByb3dzW2ldID0gbmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGNlbGxzLCByb3cubWFyZ2luTGVmdCwgcm93Lm1hcmdpblJpZ2h0KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0YWJsZV8xLlRhYmxlKHJvd3MpO1xufTtcbmV4cG9ydHMuaW5zZXJ0Q29sdW1uID0gaW5zZXJ0Q29sdW1uO1xuLyoqXG4gKiBEZWxldGVzIGEgY29sdW1uIGluIGEgdGFibGUuXG4gKiBJZiB0aGVyZSB3aWxsIGJlIG5vIGNvbHVtbnMgYWZ0ZXIgdGhlIGRlbGV0aW9uLCB0aGUgY2VsbHMgYXJlIGVtcHRpZWQgYnV0IHRoZSBjb2x1bW4gd2lsbCBub3QgYmVcbiAqIHJlbW92ZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0YWJsZSAtIEEgY29tcGxldGVkIG5vbi1lbXB0eSB0YWJsZS5cbiAqIEBwYXJhbSBjb2x1bW5JbmRleCAtIEFuIGluZGV4IG9mIHRoZSBjb2x1bW4gdG8gYmUgZGVsZXRlZC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgb3B0aW9ucyBmb3IgY29tcGxldGlvbi5cbiAqIEByZXR1cm5zIEFuIGFsdGVyZWQgdGFibGUgb2JqZWN0LlxuICovXG5jb25zdCBkZWxldGVDb2x1bW4gPSAodGFibGUsIGNvbHVtbkluZGV4LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgcm93cyA9IHRhYmxlLmdldFJvd3MoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgcm93ID0gcm93c1tpXTtcbiAgICAgICAgbGV0IGNlbGxzID0gcm93LmdldENlbGxzKCk7XG4gICAgICAgIGlmIChjZWxscy5sZW5ndGggPD0gMSkge1xuICAgICAgICAgICAgY2VsbHMgPSBbXG4gICAgICAgICAgICAgICAgbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoaSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICA/IGV4cG9ydHMuX2RlbGltaXRlclRleHQoYWxpZ25tZW50XzEuQWxpZ25tZW50Lk5PTkUsIG9wdGlvbnMubWluRGVsaW1pdGVyV2lkdGgpXG4gICAgICAgICAgICAgICAgICAgIDogJycpLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNlbGxzLnNwbGljZShjb2x1bW5JbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgcm93c1tpXSA9IG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhjZWxscywgcm93Lm1hcmdpbkxlZnQsIHJvdy5tYXJnaW5SaWdodCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgdGFibGVfMS5UYWJsZShyb3dzKTtcbn07XG5leHBvcnRzLmRlbGV0ZUNvbHVtbiA9IGRlbGV0ZUNvbHVtbjtcbi8qKlxuICogTW92ZXMgYSBjb2x1bW4gYXQgdGhlIGluZGV4IHRvIHRoZSBzcGVjaWZpZWQgZGVzdGluYXRpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0YWJsZSAtIEEgY29tcGxldGVkIG5vbi1lbXB0eSB0YWJsZS5cbiAqIEBwYXJhbSBjb2x1bW5JbmRleCAtIEluZGV4IG9mIHRoZSBjb2x1bW4gdG8gYmUgbW92ZWQuXG4gKiBAcGFyYW0gZGVzdEluZGV4IC0gSW5kZXggb2YgdGhlIGRlc3RpbmF0aW9uLlxuICogQHJldHVybnMgQW4gYWx0ZXJlZCB0YWJsZSBvYmplY3QuXG4gKi9cbmNvbnN0IG1vdmVDb2x1bW4gPSAodGFibGUsIGNvbHVtbkluZGV4LCBkZXN0SW5kZXgpID0+IHtcbiAgICBpZiAoY29sdW1uSW5kZXggPT09IGRlc3RJbmRleCkge1xuICAgICAgICByZXR1cm4gdGFibGU7XG4gICAgfVxuICAgIGNvbnN0IHJvd3MgPSB0YWJsZS5nZXRSb3dzKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHJvd3NbaV07XG4gICAgICAgIGNvbnN0IGNlbGxzID0gcm93LmdldENlbGxzKCk7XG4gICAgICAgIGNvbnN0IGNlbGwgPSBjZWxsc1tjb2x1bW5JbmRleF07XG4gICAgICAgIGNlbGxzLnNwbGljZShjb2x1bW5JbmRleCwgMSk7XG4gICAgICAgIGNlbGxzLnNwbGljZShkZXN0SW5kZXgsIDAsIGNlbGwpO1xuICAgICAgICByb3dzW2ldID0gbmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGNlbGxzLCByb3cubWFyZ2luTGVmdCwgcm93Lm1hcmdpblJpZ2h0KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0YWJsZV8xLlRhYmxlKHJvd3MpO1xufTtcbmV4cG9ydHMubW92ZUNvbHVtbiA9IG1vdmVDb2x1bW47XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuc2hvcnRlc3RFZGl0U2NyaXB0ID0gZXhwb3J0cy5hcHBseUVkaXRTY3JpcHQgPSBleHBvcnRzLl9hcHBseUNvbW1hbmQgPSBleHBvcnRzLkRlbGV0ZSA9IGV4cG9ydHMuSW5zZXJ0ID0gdm9pZCAwO1xuLyoqXG4gKiBUaGUgYEluc2VydGAgY2xhc3MgcmVwcmVzZW50cyBhbiBpbnNlcnRpb24gb2YgYSBsaW5lLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIEluc2VydCB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRzIGEgbmV3IGBJbnNlcnRgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgLSBSb3cgaW5kZXgsIHN0YXJ0cyBmcm9tIGAwYC5cbiAgICAgKiBAcGFyYW0gbGluZSAtIEEgc3RyaW5nIHRvIGJlIGluc2VydGVkIGF0IHRoZSByb3cuXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iocm93LCBsaW5lKSB7XG4gICAgICAgIHRoaXMucm93ID0gcm93O1xuICAgICAgICB0aGlzLmxpbmUgPSBsaW5lO1xuICAgIH1cbn1cbmV4cG9ydHMuSW5zZXJ0ID0gSW5zZXJ0O1xuLyoqXG4gKiBUaGUgYERlbGV0ZWAgY2xhc3MgcmVwcmVzZW50cyBhIGRlbGV0aW9uIG9mIGEgbGluZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBEZWxldGUge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYERlbGV0ZWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvdyAtIFJvdyBpbmRleCwgc3RhcnRzIGZyb20gYDBgLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHJvdykge1xuICAgICAgICB0aGlzLnJvdyA9IHJvdztcbiAgICB9XG59XG5leHBvcnRzLkRlbGV0ZSA9IERlbGV0ZTtcbi8qKlxuICogQXBwbGllcyBhIGNvbW1hbmQgdG8gdGhlIHRleHQgZWRpdG9yLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gdGV4dEVkaXRvciAtIEFuIGludGVyZmFjZSB0byB0aGUgdGV4dCBlZGl0b3IuXG4gKiBAcGFyYW0gY29tbWFuZCAtIEEgY29tbWFuZC5cbiAqIEBwYXJhbSByb3dPZmZzZXQgLSBPZmZzZXQgdG8gdGhlIHJvdyBpbmRleCBvZiB0aGUgY29tbWFuZC5cbiAqL1xuY29uc3QgX2FwcGx5Q29tbWFuZCA9ICh0ZXh0RWRpdG9yLCBjb21tYW5kLCByb3dPZmZzZXQpID0+IHtcbiAgICBpZiAoY29tbWFuZCBpbnN0YW5jZW9mIEluc2VydCkge1xuICAgICAgICB0ZXh0RWRpdG9yLmluc2VydExpbmUocm93T2Zmc2V0ICsgY29tbWFuZC5yb3csIGNvbW1hbmQubGluZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNvbW1hbmQgaW5zdGFuY2VvZiBEZWxldGUpIHtcbiAgICAgICAgdGV4dEVkaXRvci5kZWxldGVMaW5lKHJvd09mZnNldCArIGNvbW1hbmQucm93KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBjb21tYW5kJyk7XG4gICAgfVxufTtcbmV4cG9ydHMuX2FwcGx5Q29tbWFuZCA9IF9hcHBseUNvbW1hbmQ7XG4vKipcbiAqIEFwcGx5IGFuIGVkaXQgc2NyaXB0IChhcnJheSBvZiBjb21tYW5kcykgdG8gdGhlIHRleHQgZWRpdG9yLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gdGV4dEVkaXRvciAtIEFuIGludGVyZmFjZSB0byB0aGUgdGV4dCBlZGl0b3IuXG4gKiBAcGFyYW0gc2NyaXB0IC0gQW4gYXJyYXkgb2YgY29tbWFuZHMuXG4gKiBUaGUgY29tbWFuZHMgYXJlIGFwcGxpZWQgc2VxdWVudGlhbGx5IGluIHRoZSBvcmRlciBvZiB0aGUgYXJyYXkuXG4gKiBAcGFyYW0gcm93T2Zmc2V0IC0gT2Zmc2V0IHRvIHRoZSByb3cgaW5kZXggb2YgdGhlIGNvbW1hbmRzLlxuICovXG5jb25zdCBhcHBseUVkaXRTY3JpcHQgPSAodGV4dEVkaXRvciwgc2NyaXB0LCByb3dPZmZzZXQpID0+IHtcbiAgICBmb3IgKGNvbnN0IGNvbW1hbmQgb2Ygc2NyaXB0KSB7XG4gICAgICAgIGV4cG9ydHMuX2FwcGx5Q29tbWFuZCh0ZXh0RWRpdG9yLCBjb21tYW5kLCByb3dPZmZzZXQpO1xuICAgIH1cbn07XG5leHBvcnRzLmFwcGx5RWRpdFNjcmlwdCA9IGFwcGx5RWRpdFNjcmlwdDtcbi8qKlxuICogTGlua2VkIGxpc3QgdXNlZCB0byByZW1lbWJlciBlZGl0IHNjcmlwdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBJTGlzdCB7XG4gICAgZ2V0IGNhcigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG4gICAgZ2V0IGNkcigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG4gICAgaXNFbXB0eSgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG4gICAgdW5zaGlmdCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gbmV3IENvbnModmFsdWUsIHRoaXMpO1xuICAgIH1cbiAgICB0b0FycmF5KCkge1xuICAgICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgICAgbGV0IHJlc3QgPSB0aGlzO1xuICAgICAgICB3aGlsZSAoIXJlc3QuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICBhcnIucHVzaChyZXN0LmNhcik7XG4gICAgICAgICAgICByZXN0ID0gcmVzdC5jZHI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG59XG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIE5pbCBleHRlbmRzIElMaXN0IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG4gICAgZ2V0IGNhcigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbXB0eSBsaXN0Jyk7XG4gICAgfVxuICAgIGdldCBjZHIoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRW1wdHkgbGlzdCcpO1xuICAgIH1cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIENvbnMgZXh0ZW5kcyBJTGlzdCB7XG4gICAgY29uc3RydWN0b3IoY2FyLCBjZHIpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fY2FyID0gY2FyO1xuICAgICAgICB0aGlzLl9jZHIgPSBjZHI7XG4gICAgfVxuICAgIGdldCBjYXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYXI7XG4gICAgfVxuICAgIGdldCBjZHIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jZHI7XG4gICAgfVxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4vKipcbiAqIENvbXB1dGVzIHRoZSBzaG9ydGVzdCBlZGl0IHNjcmlwdCBiZXR3ZWVuIHR3byBhcnJheXMgb2Ygc3RyaW5ncy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIGZyb20gLSBBbiBhcnJheSBvZiBzdHJpbmcgdGhlIGVkaXQgc3RhcnRzIGZyb20uXG4gKiBAcGFyYW0gdG8gLSBBbiBhcnJheSBvZiBzdHJpbmcgdGhlIGVkaXQgZ29lcyB0by5cbiAqIEBwYXJhbSBbbGltaXQ9LTFdIC0gVXBwZXIgbGltaXQgb2YgZWRpdCBkaXN0YW5jZSB0byBiZSBzZWFyY2hlZC5cbiAqIElmIG5lZ2F0aXZlLCB0aGVyZSBpcyBubyBsaW1pdC5cbiAqIEByZXR1cm5zIFRoZSBzaG9ydGVzdCBlZGl0IHNjcmlwdCB0aGF0IHR1cm5zIGBmcm9tYCBpbnRvIGB0b2A7XG4gKiBgdW5kZWZpbmVkYCBpZiBubyBlZGl0IHNjcmlwdCBpcyBmb3VuZCBpbiB0aGUgZ2l2ZW4gcmFuZ2UuXG4gKi9cbmNvbnN0IHNob3J0ZXN0RWRpdFNjcmlwdCA9IChmcm9tLCB0bywgbGltaXQgPSAtMSkgPT4ge1xuICAgIGNvbnN0IGZyb21MZW4gPSBmcm9tLmxlbmd0aDtcbiAgICBjb25zdCB0b0xlbiA9IHRvLmxlbmd0aDtcbiAgICBjb25zdCBtYXhkID0gbGltaXQgPj0gMCA/IE1hdGgubWluKGxpbWl0LCBmcm9tTGVuICsgdG9MZW4pIDogZnJvbUxlbiArIHRvTGVuO1xuICAgIGNvbnN0IG1lbSA9IG5ldyBBcnJheShNYXRoLm1pbihtYXhkLCBmcm9tTGVuKSArIE1hdGgubWluKG1heGQsIHRvTGVuKSArIDEpO1xuICAgIGNvbnN0IG9mZnNldCA9IE1hdGgubWluKG1heGQsIGZyb21MZW4pO1xuICAgIGZvciAobGV0IGQgPSAwOyBkIDw9IG1heGQ7IGQrKykge1xuICAgICAgICBjb25zdCBtaW5rID0gZCA8PSBmcm9tTGVuID8gLWQgOiBkIC0gMiAqIGZyb21MZW47XG4gICAgICAgIGNvbnN0IG1heGsgPSBkIDw9IHRvTGVuID8gZCA6IC1kICsgMiAqIHRvTGVuO1xuICAgICAgICBmb3IgKGxldCBrID0gbWluazsgayA8PSBtYXhrOyBrICs9IDIpIHtcbiAgICAgICAgICAgIGxldCBpO1xuICAgICAgICAgICAgbGV0IHNjcmlwdDtcbiAgICAgICAgICAgIGlmIChkID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaSA9IDA7XG4gICAgICAgICAgICAgICAgc2NyaXB0ID0gbmV3IE5pbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoayA9PT0gLWQpIHtcbiAgICAgICAgICAgICAgICBpID0gbWVtW29mZnNldCArIGsgKyAxXS5pICsgMTtcbiAgICAgICAgICAgICAgICBzY3JpcHQgPSBtZW1bb2Zmc2V0ICsgayArIDFdLnNjcmlwdC51bnNoaWZ0KG5ldyBEZWxldGUoaSArIGspKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGsgPT09IGQpIHtcbiAgICAgICAgICAgICAgICBpID0gbWVtW29mZnNldCArIGsgLSAxXS5pO1xuICAgICAgICAgICAgICAgIHNjcmlwdCA9IG1lbVtvZmZzZXQgKyBrIC0gMV0uc2NyaXB0LnVuc2hpZnQobmV3IEluc2VydChpICsgayAtIDEsIHRvW2kgKyBrIC0gMV0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpID0gbWVtW29mZnNldCArIGsgKyAxXS5pICsgMTtcbiAgICAgICAgICAgICAgICBjb25zdCBoaSA9IG1lbVtvZmZzZXQgKyBrIC0gMV0uaTtcbiAgICAgICAgICAgICAgICBpZiAodmkgPiBoaSkge1xuICAgICAgICAgICAgICAgICAgICBpID0gdmk7XG4gICAgICAgICAgICAgICAgICAgIHNjcmlwdCA9IG1lbVtvZmZzZXQgKyBrICsgMV0uc2NyaXB0LnVuc2hpZnQobmV3IERlbGV0ZShpICsgaykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaSA9IGhpO1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHQgPSBtZW1bb2Zmc2V0ICsgayAtIDFdLnNjcmlwdC51bnNoaWZ0KG5ldyBJbnNlcnQoaSArIGsgLSAxLCB0b1tpICsgayAtIDFdKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKGkgPCBmcm9tTGVuICYmIGkgKyBrIDwgdG9MZW4gJiYgZnJvbVtpXSA9PT0gdG9baSArIGtdKSB7XG4gICAgICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGsgPT09IHRvTGVuIC0gZnJvbUxlbiAmJiBpID09PSBmcm9tTGVuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNjcmlwdC50b0FycmF5KCkucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWVtW29mZnNldCArIGtdID0geyBpLCBzY3JpcHQgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbmV4cG9ydHMuc2hvcnRlc3RFZGl0U2NyaXB0ID0gc2hvcnRlc3RFZGl0U2NyaXB0O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLklUZXh0RWRpdG9yID0gdm9pZCAwO1xuLyoqXG4gKiBUaGUgYElUZXh0RWRpdG9yYCByZXByZXNlbnRzIGFuIGludGVyZmFjZSB0byBhIHRleHQgZWRpdG9yLlxuICpcbiAqIEBpbnRlcmZhY2VcbiAqL1xuY2xhc3MgSVRleHRFZGl0b3Ige1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgQSBwb2ludCBvYmplY3QgdGhhdCByZXByZXNlbnRzIHRoZSBjdXJzb3IgcG9zaXRpb24uXG4gICAgICovXG4gICAgZ2V0Q3Vyc29yUG9zaXRpb24oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkOiBnZXRDdXJzb3JQb3NpdGlvbicpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBjdXJzb3IgcG9zaXRpb24gdG8gYSBzcGVjaWZpZWQgb25lLlxuICAgICAqL1xuICAgIHNldEN1cnNvclBvc2l0aW9uKHBvcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZDogc2V0Q3Vyc29yUG9zaXRpb24nKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgc2VsZWN0aW9uIHJhbmdlLlxuICAgICAqIFRoaXMgbWV0aG9kIGFsc28gZXhwZWN0cyB0aGUgY3Vyc29yIHBvc2l0aW9uIHRvIGJlIG1vdmVkIGFzIHRoZSBlbmQgb2YgdGhlIHNlbGVjdGlvbiByYW5nZS5cbiAgICAgKi9cbiAgICBzZXRTZWxlY3Rpb25SYW5nZShyYW5nZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZDogc2V0U2VsZWN0aW9uUmFuZ2UnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGFzdCByb3cgaW5kZXggb2YgdGhlIHRleHQgZWRpdG9yLlxuICAgICAqL1xuICAgIGdldExhc3RSb3coKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkOiBnZXRMYXN0Um93Jyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZWRpdG9yIGFjY2VwdHMgYSB0YWJsZSBhdCBhIHJvdyB0byBiZSBlZGl0dGVkLlxuICAgICAqIEl0IHNob3VsZCByZXR1cm4gYGZhbHNlYCBpZiwgZm9yIGV4YW1wbGUsIHRoZSByb3cgaXMgaW4gYSBjb2RlIGJsb2NrIChub3QgTWFya2Rvd24pLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvdyAtIEEgcm93IGluZGV4IGluIHRoZSB0ZXh0IGVkaXRvci5cbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHRhYmxlIGF0IHRoZSByb3cgY2FuIGJlIGVkaXR0ZWQuXG4gICAgICovXG4gICAgYWNjZXB0c1RhYmxlRWRpdChyb3cpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQ6IGFjY2VwdHNUYWJsZUVkaXQnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpbmUgc3RyaW5nIGF0IGEgcm93LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvdyAtIFJvdyBpbmRleCwgc3RhcnRzIGZyb20gYDBgLlxuICAgICAqIEByZXR1cm5zIFRoZSBsaW5lIGF0IHRoZSBzcGVjaWZpZWQgcm93LlxuICAgICAqIFRoZSBsaW5lIG11c3Qgbm90IGNvbnRhaW4gYW4gRU9MIGxpa2UgYFwiXFxuXCJgIG9yIGBcIlxcclwiYC5cbiAgICAgKi9cbiAgICBnZXRMaW5lKHJvdykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZDogZ2V0TGluZScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIGEgbGluZSBhdCBhIHNwZWNpZmllZCByb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93IC0gUm93IGluZGV4LCBzdGFydHMgZnJvbSBgMGAuXG4gICAgICogQHBhcmFtIGxpbmUgLSBBIHN0cmluZyB0byBiZSBpbnNlcnRlZC5cbiAgICAgKiBUaGlzIG11c3Qgbm90IGNvbnRhaW4gYW4gRU9MIGxpa2UgYFwiXFxuXCJgIG9yIGBcIlxcclwiYC5cbiAgICAgKi9cbiAgICBpbnNlcnRMaW5lKHJvdywgbGluZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZDogaW5zZXJ0TGluZScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGEgbGluZSBhdCBhIHNwZWNpZmllZCByb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93IC0gUm93IGluZGV4LCBzdGFydHMgZnJvbSBgMGAuXG4gICAgICovXG4gICAgZGVsZXRlTGluZShyb3cpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQ6IGRlbGV0ZUxpbmUnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVwbGFjZSBsaW5lcyBpbiBhIHNwZWNpZmllZCByYW5nZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdGFydFJvdyAtIFN0YXJ0IHJvdyBpbmRleCwgc3RhcnRzIGZyb20gYDBgLlxuICAgICAqIEBwYXJhbSBlbmRSb3cgLSBFbmQgcm93IGluZGV4LlxuICAgICAqIExpbmVzIGZyb20gYHN0YXJ0Um93YCB0byBgZW5kUm93IC0gMWAgaXMgcmVwbGFjZWQuXG4gICAgICogQHBhcmFtIGxpbmVzIC0gQW4gYXJyYXkgb2Ygc3RyaW5nLlxuICAgICAqIEVhY2ggc3RyaW5ncyBtdXN0IG5vdCBjb250YWluIGFuIEVPTCBsaWtlIGBcIlxcblwiYCBvciBgXCJcXHJcImAuXG4gICAgICovXG4gICAgcmVwbGFjZUxpbmVzKHN0YXJ0Um93LCBlbmRSb3csIGxpbmVzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkOiByZXBsYWNlTGluZXMnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQmF0Y2hlcyBtdWx0aXBsZSBvcGVyYXRpb25zIGFzIGEgc2luZ2xlIHVuZG8vcmVkbyBzdGVwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZ1bmMgLSBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgZXhlY3V0ZXMgc29tZSBvcGVyYXRpb25zIG9uIHRoZSB0ZXh0IGVkaXRvci5cbiAgICAgKi9cbiAgICB0cmFuc2FjdChmdW5jKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkOiB0cmFuc2FjdCcpO1xuICAgIH1cbn1cbmV4cG9ydHMuSVRleHRFZGl0b3IgPSBJVGV4dEVkaXRvcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5kZWZhdWx0T3B0aW9ucyA9IGV4cG9ydHMub3B0aW9uc1dpdGhEZWZhdWx0cyA9IHZvaWQgMDtcbmNvbnN0IGFsaWdubWVudF8xID0gcmVxdWlyZShcIi4vYWxpZ25tZW50XCIpO1xuY29uc3QgZm9ybWF0dGVyXzEgPSByZXF1aXJlKFwiLi9mb3JtYXR0ZXJcIik7XG5jb25zdCBERUZBVUxUX1RFWFRfV0lEVEhfT1BUSU9OUyA9IHtcbiAgICBub3JtYWxpemU6IHRydWUsXG4gICAgd2lkZUNoYXJzOiBuZXcgU2V0KCksXG4gICAgbmFycm93Q2hhcnM6IG5ldyBTZXQoKSxcbiAgICBhbWJpZ3VvdXNBc1dpZGU6IGZhbHNlLFxufTtcbmNvbnN0IERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgICBsZWZ0TWFyZ2luQ2hhcnM6IG5ldyBTZXQoKSxcbiAgICBmb3JtYXRUeXBlOiBmb3JtYXR0ZXJfMS5Gb3JtYXRUeXBlLk5PUk1BTCxcbiAgICBtaW5EZWxpbWl0ZXJXaWR0aDogMyxcbiAgICBkZWZhdWx0QWxpZ25tZW50OiBhbGlnbm1lbnRfMS5EZWZhdWx0QWxpZ25tZW50LkxFRlQsXG4gICAgaGVhZGVyQWxpZ25tZW50OiBhbGlnbm1lbnRfMS5IZWFkZXJBbGlnbm1lbnQuRk9MTE9XLFxuICAgIHNtYXJ0Q3Vyc29yOiBmYWxzZSxcbn07XG4vKipcbiAqIENyZWF0ZSBhbiBPcHRpb25zIG9iamVjdCBmb3IgdGhlIGZvcm1hdHRlci5cbiAqIFRoZSBkZWZhdWx0IHZhbHVlcyBhcmUgdXNlZCBmb3Igb3B0aW9ucyB0aGF0IGFyZSBub3Qgc3BlY2lmaWVkLlxuICpcbiAqIFRoZSBhdmFpbGFibGUgb3B0aW9ucyBhbmQgZGVmYXVsdCB2YWx1ZXMgYXJlIGxpc3RlZCBiZWxvdy5cbiAqXG4gKiB8IHByb3BlcnR5IG5hbWUgICAgICAgfCB0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGVmYXVsdCB2YWx1ZSAgICAgICAgICAgIHxcbiAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfFxuICogfCBgbGVmdE1hcmdpbkNoYXJzYCAgIHwge0BsaW5rIFNldH0mbHQ7e0BsaW5rIHN0cmluZ30mZ3Q7IHwgQSBzZXQgb2YgYWRkaXRpb25hbCBsZWZ0IG1hcmdpbiBjaGFyYWN0ZXJzLiAgICAgICAgICAgICB8IGBuZXcgU2V0KClgICAgICAgICAgICAgICB8XG4gKiB8IGBmb3JtYXRUeXBlYCAgICAgICAgfCB7QGxpbmsgRm9ybWF0VHlwZX0gICAgICAgICAgICAgICAgfCBGb3JtYXQgdHlwZSwgbm9ybWFsIG9yIHdlYWsuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEZvcm1hdFR5cGUuTk9STUFMYCAgICAgIHxcbiAqIHwgYG1pbkRlbGltaXRlcldpZHRoYCB8IHtAbGluayBudW1iZXJ9ICAgICAgICAgICAgICAgICAgICB8IE1pbmltdW0gd2lkdGggb2YgZGVsaW1pdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgM2AgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgZGVmYXVsdEFsaWdubWVudGAgIHwge0BsaW5rIERlZmF1bHRBbGlnbm1lbnR9ICAgICAgICAgIHwgRGVmYXVsdCBhbGlnbm1lbnQgb2YgY29sdW1ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBEZWZhdWx0QWxpZ25tZW50LkxFRlRgICB8XG4gKiB8IGBoZWFkZXJBbGlnbm1lbnRgICAgfCB7QGxpbmsgSGVhZGVyQWxpZ25tZW50fSAgICAgICAgICAgfCBBbGlnbm1lbnQgb2YgaGVhZGVyIGNlbGxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEhlYWRlckFsaWdubWVudC5GT0xMT1dgIHxcbiAqIHwgYHRleHRXaWR0aE9wdGlvbnNgICB8IHtAbGluayBUZXh0V2lkdGhPcHRpb25zfSAgICAgICAgICB8IEFuIG9iamVjdCBjb250YWluaW5nIG9wdGlvbnMgZm9yIGNvbXB1dGluZyB0ZXh0IHdpZHRocy4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgc21hcnRDdXJzb3JgICAgICAgIHwge0BsaW5rIGJvb2xlYW59ICAgICAgICAgICAgICAgICAgIHwgRW5hYmxlcyBcIlNtYXJ0IEN1cnNvclwiIGZlYXR1cmUuICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGZhbHNlYCAgICAgICAgICAgICAgICAgIHxcbiAqXG4gKiBUaGUgYXZhaWxhYmxlIG9wdGlvbnMgZm9yIGB0ZXh0V2lkdGhPcHRpb25zYCBhcmUgdGhlIGZvbGxvd2luZyBvbmVzLlxuICpcbiAqIHwgcHJvcGVydHkgbmFtZSAgICAgfCB0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRlZmF1bHQgdmFsdWUgfFxuICogfCAtLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8XG4gKiB8IGBub3JtYWxpemVgICAgICAgIHwge0BsaW5rIGJvb2xlYW59ICAgICAgICAgICAgICAgICAgIHwgTm9ybWFsaXplcyB0ZXh0cyBiZWZvcmUgY29tcHV0aW5nIHRleHQgd2lkdGhzLiAgICAgICAgfCBgdHJ1ZWAgICAgICAgIHxcbiAqIHwgYHdpZGVDaGFyc2AgICAgICAgfCB7QGxpbmsgU2V0fSZsdDt7QGxpbmsgc3RyaW5nfSZndDsgfCBBIHNldCBvZiBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2lkZS4gICB8IGBuZXcgU2V0KClgICAgfFxuICogfCBgbmFycm93Q2hhcnNgICAgICB8IHtAbGluayBTZXR9Jmx0O3tAbGluayBzdHJpbmd9Jmd0OyB8IEEgc2V0IG9mIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZCBhcyBuYXJyb3cuIHwgYG5ldyBTZXQoKWAgICB8XG4gKiB8IGBhbWJpZ3VvdXNBc1dpZGVgIHwge0BsaW5rIGJvb2xlYW59ICAgICAgICAgICAgICAgICAgIHwgVHJlYXRzIEVhc3QgQXNpYW4gQW1iaWd1b3VzIGNoYXJhY3RlcnMgYXMgd2lkZS4gICAgICAgfCBgZmFsc2VgICAgICAgIHxcbiAqXG4gKi9cbmNvbnN0IG9wdGlvbnNXaXRoRGVmYXVsdHMgPSAob3B0aW9ucykgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMpLCBvcHRpb25zKSwgeyB0ZXh0V2lkdGhPcHRpb25zOiBvcHRpb25zLnRleHRXaWR0aE9wdGlvbnNcbiAgICAgICAgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfVEVYVF9XSURUSF9PUFRJT05TKSwgb3B0aW9ucy50ZXh0V2lkdGhPcHRpb25zKSA6IERFRkFVTFRfVEVYVF9XSURUSF9PUFRJT05TIH0pKTtcbmV4cG9ydHMub3B0aW9uc1dpdGhEZWZhdWx0cyA9IG9wdGlvbnNXaXRoRGVmYXVsdHM7XG5leHBvcnRzLmRlZmF1bHRPcHRpb25zID0gZXhwb3J0cy5vcHRpb25zV2l0aERlZmF1bHRzKHt9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UYWJsZUVkaXRvciA9IGV4cG9ydHMuX2NvbXB1dGVOZXdPZmZzZXQgPSBleHBvcnRzLl9jcmVhdGVJc1RhYmxlRm9ybXVsYVJlZ2V4ID0gZXhwb3J0cy5fY3JlYXRlSXNUYWJsZVJvd1JlZ2V4ID0gZXhwb3J0cy5Tb3J0T3JkZXIgPSB2b2lkIDA7XG5jb25zdCBlZGl0X3NjcmlwdF8xID0gcmVxdWlyZShcIi4vZWRpdC1zY3JpcHRcIik7XG5jb25zdCBmb2N1c18xID0gcmVxdWlyZShcIi4vZm9jdXNcIik7XG5jb25zdCBmb3JtYXR0ZXJfMSA9IHJlcXVpcmUoXCIuL2Zvcm1hdHRlclwiKTtcbmNvbnN0IHBhcnNlcl8xID0gcmVxdWlyZShcIi4vcGFyc2VyXCIpO1xuY29uc3QgcG9pbnRfMSA9IHJlcXVpcmUoXCIuL3BvaW50XCIpO1xuY29uc3QgcmFuZ2VfMSA9IHJlcXVpcmUoXCIuL3JhbmdlXCIpO1xuY29uc3QgdGFibGVfMSA9IHJlcXVpcmUoXCIuL3RhYmxlXCIpO1xuY29uc3QgdGFibGVfY2VsbF8xID0gcmVxdWlyZShcIi4vdGFibGUtY2VsbFwiKTtcbmNvbnN0IHRhYmxlX3Jvd18xID0gcmVxdWlyZShcIi4vdGFibGUtcm93XCIpO1xudmFyIFNvcnRPcmRlcjtcbihmdW5jdGlvbiAoU29ydE9yZGVyKSB7XG4gICAgU29ydE9yZGVyW1wiQXNjZW5kaW5nXCJdID0gXCJhc2NlbmRpbmdcIjtcbiAgICBTb3J0T3JkZXJbXCJEZXNjZW5kaW5nXCJdID0gXCJkZXNjZW5kaW5nXCI7XG59KShTb3J0T3JkZXIgPSBleHBvcnRzLlNvcnRPcmRlciB8fCAoZXhwb3J0cy5Tb3J0T3JkZXIgPSB7fSkpO1xuLyoqXG4gKiBDcmVhdGVzIGEgcmVndWxhciBleHByZXNzaW9uIG9iamVjdCB0aGF0IG1hdGNoZXMgYSB0YWJsZSByb3cuXG4gKlxuICogQHBhcmFtIGxlZnRNYXJnaW5DaGFycyAtIEEgc2V0IG9mIGFkZGl0aW9uYWwgbGVmdCBtYXJnaW4gY2hhcmFjdGVycy5cbiAqIEEgcGlwZSBgfGAsIGEgYmFja3NsYXNoIGBcXGAsIGFuZCBhIGJhY2txdW90ZSB3aWxsIGJlIGlnbm9yZWQuXG4gKiBAcmV0dXJucyBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBvYmplY3QgdGhhdCBtYXRjaGVzIGEgdGFibGUgcm93LlxuICovXG5jb25zdCBfY3JlYXRlSXNUYWJsZVJvd1JlZ2V4ID0gKGxlZnRNYXJnaW5DaGFycykgPT4gbmV3IFJlZ0V4cChgXiR7cGFyc2VyXzEubWFyZ2luUmVnZXhTcmMobGVmdE1hcmdpbkNoYXJzKX1cXFxcfGAsICd1Jyk7XG5leHBvcnRzLl9jcmVhdGVJc1RhYmxlUm93UmVnZXggPSBfY3JlYXRlSXNUYWJsZVJvd1JlZ2V4O1xuY29uc3QgX2NyZWF0ZUlzVGFibGVGb3JtdWxhUmVnZXggPSAobGVmdE1hcmdpbkNoYXJzKSA9PiBuZXcgUmVnRXhwKGBeJHtwYXJzZXJfMS5tYXJnaW5SZWdleFNyYyhsZWZ0TWFyZ2luQ2hhcnMpfTwhLS0gPy4rLS0+JGAsICd1Jyk7XG5leHBvcnRzLl9jcmVhdGVJc1RhYmxlRm9ybXVsYVJlZ2V4ID0gX2NyZWF0ZUlzVGFibGVGb3JtdWxhUmVnZXg7XG4vKipcbiAqIENvbXB1dGVzIG5ldyBmb2N1cyBvZmZzZXQgZnJvbSBpbmZvcm1hdGlvbiBvZiBjb21wbGV0ZWQgYW5kIGZvcm1hdHRlZCB0YWJsZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBmb2N1cyAtIEEgZm9jdXMuXG4gKiBAcGFyYW0gdGFibGUgLSBBIGNvbXBsZXRlZCBidXQgbm90IGZvcm1hdHRlZCB0YWJsZSB3aXRoIG9yaWdpbmFsIGNlbGwgY29udGVudHMuXG4gKiBAcGFyYW0gZm9ybWF0dGVkIC0gSW5mb3JtYXRpb24gb2YgdGhlIGZvcm1hdHRlZCB0YWJsZS5cbiAqIEBwYXJhbSBtb3ZlZCAtIEluZGljYXRlcyB3aGV0aGVyIHRoZSBmb2N1cyBwb3NpdGlvbiBpcyBtb3ZlZCBieSBhIGNvbW1hbmQgb3Igbm90LlxuICovXG5jb25zdCBfY29tcHV0ZU5ld09mZnNldCA9IChmb2N1cywgdGFibGUsIGZvcm1hdHRlZCwgbW92ZWQpID0+IHtcbiAgICBpZiAobW92ZWQpIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkRm9jdXNlZENlbGwgPSBmb3JtYXR0ZWQudGFibGUuZ2V0Rm9jdXNlZENlbGwoZm9jdXMpO1xuICAgICAgICBpZiAoZm9ybWF0dGVkRm9jdXNlZENlbGwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZEZvY3VzZWRDZWxsLmNvbXB1dGVSYXdPZmZzZXQoMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvY3VzLmNvbHVtbiA8IDAgPyBmb3JtYXR0ZWQubWFyZ2luTGVmdC5sZW5ndGggOiAwO1xuICAgIH1cbiAgICBjb25zdCBmb2N1c2VkQ2VsbCA9IHRhYmxlLmdldEZvY3VzZWRDZWxsKGZvY3VzKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRGb2N1c2VkQ2VsbCA9IGZvcm1hdHRlZC50YWJsZS5nZXRGb2N1c2VkQ2VsbChmb2N1cyk7XG4gICAgaWYgKGZvY3VzZWRDZWxsICE9PSB1bmRlZmluZWQgJiYgZm9ybWF0dGVkRm9jdXNlZENlbGwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBjb250ZW50T2Zmc2V0ID0gTWF0aC5taW4oZm9jdXNlZENlbGwuY29tcHV0ZUNvbnRlbnRPZmZzZXQoZm9jdXMub2Zmc2V0KSwgZm9ybWF0dGVkRm9jdXNlZENlbGwuY29udGVudC5sZW5ndGgpO1xuICAgICAgICByZXR1cm4gZm9ybWF0dGVkRm9jdXNlZENlbGwuY29tcHV0ZVJhd09mZnNldChjb250ZW50T2Zmc2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIGZvY3VzLmNvbHVtbiA8IDAgPyBmb3JtYXR0ZWQubWFyZ2luTGVmdC5sZW5ndGggOiAwO1xufTtcbmV4cG9ydHMuX2NvbXB1dGVOZXdPZmZzZXQgPSBfY29tcHV0ZU5ld09mZnNldDtcbi8qKlxuICogVGhlIGBUYWJsZUVkaXRvcmAgY2xhc3MgaXMgYXQgdGhlIGNlbnRlciBvZiB0aGUgbWFya2Rvd24tdGFibGUtZWRpdG9yLlxuICogV2hlbiBhIGNvbW1hbmQgaXMgZXhlY3V0ZWQsIGl0IHJlYWRzIGEgdGFibGUgZnJvbSB0aGUgdGV4dCBlZGl0b3IsIGRvZXMgc29tZSBvcGVyYXRpb24gb24gdGhlXG4gKiB0YWJsZSwgYW5kIHRoZW4gYXBwbHkgdGhlIHJlc3VsdCB0byB0aGUgdGV4dCBlZGl0b3IuXG4gKlxuICogVG8gdXNlIHRoaXMgY2xhc3MsIHRoZSB0ZXh0IGVkaXRvciAob3IgYW4gaW50ZXJmYWNlIHRvIGl0KSBtdXN0IGltcGxlbWVudCB7QGxpbmsgSVRleHRFZGl0b3J9LlxuICovXG5jbGFzcyBUYWJsZUVkaXRvciB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB0YWJsZSBlZGl0b3IgaW5zdGFuY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGV4dEVkaXRvciAtIEEgdGV4dCBlZGl0b3IgaW50ZXJmYWNlLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHRleHRFZGl0b3IpIHtcbiAgICAgICAgdGhpcy5fdGV4dEVkaXRvciA9IHRleHRFZGl0b3I7XG4gICAgICAgIC8vIHNtYXJ0IGN1cnNvclxuICAgICAgICB0aGlzLl9zY0FjdGl2ZSA9IGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXNldHMgdGhlIHNtYXJ0IGN1cnNvci5cbiAgICAgKiBDYWxsIHRoaXMgbWV0aG9kIHdoZW4gdGhlIHRhYmxlIGVkaXRvciBpcyBpbmFjdGl2YXRlZC5cbiAgICAgKi9cbiAgICByZXNldFNtYXJ0Q3Vyc29yKCkge1xuICAgICAgICB0aGlzLl9zY0FjdGl2ZSA9IGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGN1cnNvciBpcyBpbiBhIHRhYmxlIHJvdy4gUmV0dXJucyBmYWxzZSBpZiB0aGUgY3Vyc29yIGlzIGluIGFcbiAgICAgKiB0YWJsZSBmb3JtdWxhIHJvdyAoc2VlIGN1cnNvcklzSW5UYWJsZUZvcm11bGEpLlxuICAgICAqIFRoaXMgaXMgdXNlZnVsIHRvIGNoZWNrIHdoZXRoZXIgdGhlIHRhYmxlIGVkaXRvciBzaG91bGQgYmUgYWN0aXZhdGVkIG9yIG5vdC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY3Vyc29yIGlzIGluIGEgdGFibGUgcm93LlxuICAgICAqL1xuICAgIGN1cnNvcklzSW5UYWJsZShvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHJlID0gZXhwb3J0cy5fY3JlYXRlSXNUYWJsZVJvd1JlZ2V4KG9wdGlvbnMubGVmdE1hcmdpbkNoYXJzKTtcbiAgICAgICAgY29uc3QgcG9zID0gdGhpcy5fdGV4dEVkaXRvci5nZXRDdXJzb3JQb3NpdGlvbigpO1xuICAgICAgICByZXR1cm4gKHRoaXMuX3RleHRFZGl0b3IuYWNjZXB0c1RhYmxlRWRpdChwb3Mucm93KSAmJlxuICAgICAgICAgICAgcmUudGVzdCh0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocG9zLnJvdykpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBjdXJzb3IgaXMgaW4gYSBmb3JtdWxhIHJvdyBiZWxvdyBhIHRhYmxlLlxuICAgICAqIFRoaXMgaXMgdXNlZnVsIHRvIGNoZWNrIHdoZXRoZXIgdGhlIHRhYmxlIGVkaXRvciBzaG91bGQgYmUgYWN0aXZhdGVkIG9yIG5vdC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY3Vyc29yIGlzIGluIGEgZm9ybXVsYSByb3cuXG4gICAgICovXG4gICAgY3Vyc29ySXNJblRhYmxlRm9ybXVsYShvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGZvcm11bGFSZSA9IGV4cG9ydHMuX2NyZWF0ZUlzVGFibGVGb3JtdWxhUmVnZXgob3B0aW9ucy5sZWZ0TWFyZ2luQ2hhcnMpO1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLl90ZXh0RWRpdG9yLmdldEN1cnNvclBvc2l0aW9uKCk7XG4gICAgICAgIHJldHVybiAodGhpcy5fdGV4dEVkaXRvci5hY2NlcHRzVGFibGVFZGl0KHBvcy5yb3cpICYmXG4gICAgICAgICAgICBmb3JtdWxhUmUudGVzdCh0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocG9zLnJvdykpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmluZHMgYSB0YWJsZSB1bmRlciB0aGUgY3VycmVudCBjdXJzb3IgcG9zaXRpb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB1bmRlZmluZWQgaWYgdGhlcmUgaXMgbm8gdGFibGUgb3IgdGhlIGRldGVybWluZWQgZm9jdXMgaXMgaW52YWxpZC5cbiAgICAgKi9cbiAgICBfZmluZFRhYmxlKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcmUgPSBleHBvcnRzLl9jcmVhdGVJc1RhYmxlUm93UmVnZXgob3B0aW9ucy5sZWZ0TWFyZ2luQ2hhcnMpO1xuICAgICAgICBjb25zdCBmb3JtdWxhUmUgPSBleHBvcnRzLl9jcmVhdGVJc1RhYmxlRm9ybXVsYVJlZ2V4KG9wdGlvbnMubGVmdE1hcmdpbkNoYXJzKTtcbiAgICAgICAgbGV0IHBvcyA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0Q3Vyc29yUG9zaXRpb24oKTtcbiAgICAgICAgY29uc3QgbGFzdFJvdyA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0TGFzdFJvdygpO1xuICAgICAgICBjb25zdCBsaW5lcyA9IFtdO1xuICAgICAgICBjb25zdCBmb3JtdWxhTGluZXMgPSBbXTtcbiAgICAgICAgbGV0IHN0YXJ0Um93ID0gcG9zLnJvdztcbiAgICAgICAgbGV0IGVuZFJvdyA9IHBvcy5yb3c7IC8vIGVuZFJvdyBpcyBsYXN0IGxpbmUgYmVmb3JlIGZvbXVsYXNcbiAgICAgICAgLy8gaWYgdGhlIGN1cnNvciBpcyBvbiBmb3JtdWxhIGxpbmUsIHdvcmsgdXAgdW50aWwgd2UgZmluZCB0aGUgbGFzdCByb3cgb2YgdGhlIHRhYmxlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBsaW5lID0gdGhpcy5fdGV4dEVkaXRvci5nZXRMaW5lKHBvcy5yb3cpO1xuICAgICAgICAgICAgd2hpbGUgKGZvcm11bGFSZS50ZXN0KGxpbmUpICYmIHBvcy5yb3cgPj0gMCkge1xuICAgICAgICAgICAgICAgIHBvcyA9IG5ldyBwb2ludF8xLlBvaW50KHBvcy5yb3cgLSAxLCBwb3MuY29sdW1uKTtcbiAgICAgICAgICAgICAgICBlbmRSb3ctLTtcbiAgICAgICAgICAgICAgICBsaW5lID0gdGhpcy5fdGV4dEVkaXRvci5nZXRMaW5lKHBvcy5yb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGN1cnJlbnQgbGluZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gdGhpcy5fdGV4dEVkaXRvci5nZXRMaW5lKHBvcy5yb3cpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl90ZXh0RWRpdG9yLmFjY2VwdHNUYWJsZUVkaXQocG9zLnJvdykgfHwgIXJlLnRlc3QobGluZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZXMucHVzaChsaW5lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBwcmV2aW91cyBsaW5lc1xuICAgICAgICBmb3IgKGxldCByb3cgPSBwb3Mucm93IC0gMTsgcm93ID49IDA7IHJvdy0tKSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gdGhpcy5fdGV4dEVkaXRvci5nZXRMaW5lKHJvdyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3RleHRFZGl0b3IuYWNjZXB0c1RhYmxlRWRpdChyb3cpIHx8ICFyZS50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5lcy51bnNoaWZ0KGxpbmUpO1xuICAgICAgICAgICAgc3RhcnRSb3cgPSByb3c7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbmV4dCBsaW5lc1xuICAgICAgICBmb3IgKGxldCByb3cgPSBwb3Mucm93ICsgMTsgcm93IDw9IGxhc3RSb3c7IHJvdysrKSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gdGhpcy5fdGV4dEVkaXRvci5nZXRMaW5lKHJvdyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3RleHRFZGl0b3IuYWNjZXB0c1RhYmxlRWRpdChyb3cpIHx8ICFyZS50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgICAgICAgZW5kUm93ID0gcm93O1xuICAgICAgICB9XG4gICAgICAgIC8vIGZvcm11bGEgbGluZXNcbiAgICAgICAgZm9yIChsZXQgcm93ID0gZW5kUm93ICsgMTsgcm93IDw9IGxhc3RSb3c7IHJvdysrKSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gdGhpcy5fdGV4dEVkaXRvci5nZXRMaW5lKHJvdyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3RleHRFZGl0b3IuYWNjZXB0c1RhYmxlRWRpdChyb3cpIHx8ICFmb3JtdWxhUmUudGVzdChsaW5lKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9ybXVsYUxpbmVzLnB1c2gobGluZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmFuZ2UgPSBuZXcgcmFuZ2VfMS5SYW5nZShuZXcgcG9pbnRfMS5Qb2ludChzdGFydFJvdywgMCksIG5ldyBwb2ludF8xLlBvaW50KGVuZFJvdywgbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoKSk7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gcGFyc2VyXzEucmVhZFRhYmxlKGxpbmVzLCBvcHRpb25zKTtcbiAgICAgICAgY29uc3QgZm9jdXMgPSB0YWJsZS5mb2N1c09mUG9zaXRpb24ocG9zLCBzdGFydFJvdyk7XG4gICAgICAgIGlmIChmb2N1cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBWYWxpZGF0ZSB0aGlzIGZvciBjb3JyZWN0bmVzc1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgdGFibGUsIGZvY3VzIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZpbmRzIGEgdGFibGUgYW5kIGRvZXMgYW4gb3BlcmF0aW9uIHdpdGggaXQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSBmdW5jIC0gQSBmdW5jdGlvbiB0aGF0IGRvZXMgc29tZSBvcGVyYXRpb24gb24gdGFibGUgaW5mb3JtYXRpb24gb2J0YWluZWQgYnlcbiAgICAgKiB7QGxpbmsgVGFibGVFZGl0b3IjX2ZpbmRUYWJsZX0uXG4gICAgICovXG4gICAgX3dpdGhUYWJsZShvcHRpb25zLCBmdW5jKSB7XG4gICAgICAgIGNvbnN0IGluZm8gPSB0aGlzLl9maW5kVGFibGUob3B0aW9ucyk7XG4gICAgICAgIGlmIChpbmZvID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuYyhpbmZvKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBsaW5lcyBpbiBhIGdpdmVuIHJhbmdlIGluIHRoZSB0ZXh0IGVkaXRvci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHN0YXJ0Um93IC0gU3RhcnQgcm93IGluZGV4LCBzdGFydHMgZnJvbSBgMGAuXG4gICAgICogQHBhcmFtIGVuZFJvdyAtIEVuZCByb3cgaW5kZXguXG4gICAgICogTGluZXMgZnJvbSBgc3RhcnRSb3dgIHRvIGBlbmRSb3cgLSAxYCBhcmUgcmVwbGFjZWQuXG4gICAgICogQHBhcmFtIG5ld0xpbmVzIC0gTmV3IGxpbmVzLlxuICAgICAqIEBwYXJhbSBbb2xkTGluZXM9dW5kZWZpbmVkXSAtIE9sZCBsaW5lcyB0byBiZSByZXBsYWNlZC5cbiAgICAgKi9cbiAgICBfdXBkYXRlTGluZXMoc3RhcnRSb3csIGVuZFJvdywgbmV3TGluZXMsIG9sZExpbmVzID0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChvbGRMaW5lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBhcHBseSB0aGUgc2hvcnRlc3QgZWRpdCBzY3JpcHRcbiAgICAgICAgICAgIC8vIGlmIGEgdGFibGUgaXMgZWRpdGVkIGluIGEgbm9ybWFsIG1hbm5lciwgdGhlIGVkaXQgZGlzdGFuY2UgbmV2ZXIgZXhjZWVkcyAzXG4gICAgICAgICAgICBjb25zdCBzZXMgPSBlZGl0X3NjcmlwdF8xLnNob3J0ZXN0RWRpdFNjcmlwdChvbGRMaW5lcywgbmV3TGluZXMsIDMpO1xuICAgICAgICAgICAgaWYgKHNlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZWRpdF9zY3JpcHRfMS5hcHBseUVkaXRTY3JpcHQodGhpcy5fdGV4dEVkaXRvciwgc2VzLCBzdGFydFJvdyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3RleHRFZGl0b3IucmVwbGFjZUxpbmVzKHN0YXJ0Um93LCBlbmRSb3csIG5ld0xpbmVzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTW92ZXMgdGhlIGN1cnNvciBwb3NpdGlvbiB0byB0aGUgZm9jdXNlZCBjZWxsLFxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gc3RhcnRSb3cgLSBSb3cgaW5kZXggd2hlcmUgdGhlIHRhYmxlIHN0YXJ0cyBpbiB0aGUgdGV4dCBlZGl0b3IuXG4gICAgICogQHBhcmFtIHRhYmxlIC0gQSB0YWJsZS5cbiAgICAgKiBAcGFyYW0gZm9jdXMgLSBBIGZvY3VzIHRvIHdoaWNoIHRoZSBjdXJzb3Igd2lsbCBiZSBtb3ZlZC5cbiAgICAgKi9cbiAgICBfbW92ZVRvRm9jdXMoc3RhcnRSb3csIHRhYmxlLCBmb2N1cykge1xuICAgICAgICBjb25zdCBwb3MgPSB0YWJsZS5wb3NpdGlvbk9mRm9jdXMoZm9jdXMsIHN0YXJ0Um93KTtcbiAgICAgICAgaWYgKHBvcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnNldEN1cnNvclBvc2l0aW9uKHBvcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogU2VsZWN0cyB0aGUgZm9jdXNlZCBjZWxsLlxuICAgICAqIElmIHRoZSBjZWxsIGhhcyBubyBjb250ZW50IHRvIGJlIHNlbGVjdGVkLCB0aGVuIGp1c3QgbW92ZXMgdGhlIGN1cnNvciBwb3NpdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHN0YXJ0Um93IC0gUm93IGluZGV4IHdoZXJlIHRoZSB0YWJsZSBzdGFydHMgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEBwYXJhbSB0YWJsZSAtIEEgdGFibGUuXG4gICAgICogQHBhcmFtIGZvY3VzIC0gQSBmb2N1cyB0byBiZSBzZWxlY3RlZC5cbiAgICAgKi9cbiAgICBfc2VsZWN0Rm9jdXMoc3RhcnRSb3csIHRhYmxlLCBmb2N1cykge1xuICAgICAgICBjb25zdCByYW5nZSA9IHRhYmxlLnNlbGVjdGlvblJhbmdlT2ZGb2N1cyhmb2N1cywgc3RhcnRSb3cpO1xuICAgICAgICBpZiAocmFuZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5zZXRTZWxlY3Rpb25SYW5nZShyYW5nZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9tb3ZlVG9Gb2N1cyhzdGFydFJvdywgdGFibGUsIGZvY3VzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBGb3JtYXRzIHRoZSB0YWJsZSB1bmRlciB0aGUgY3Vyc29yLlxuICAgICAqL1xuICAgIGZvcm1hdChvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBhcHBseVxuICAgICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50cmFuc2FjdCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGluZXMocmFuZ2Uuc3RhcnQucm93LCByYW5nZS5lbmQucm93ICsgMSwgdGFibGUudG9MaW5lcygpLCBsaW5lcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW92ZVRvRm9jdXMocmFuZ2Uuc3RhcnQucm93LCB0YWJsZSwgbmV3Rm9jdXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGb3JtYXRzIGFuZCBlc2NhcGVzIGZyb20gdGhlIHRhYmxlLlxuICAgICAqL1xuICAgIGVzY2FwZShvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX3dpdGhUYWJsZShvcHRpb25zLCAoeyByYW5nZSwgbGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICAvLyBjb21wbGV0ZVxuICAgICAgICAgICAgY29uc3QgY29tcGxldGVkID0gZm9ybWF0dGVyXzEuY29tcGxldGVUYWJsZSh0YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAvLyBmb3JtYXRcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1hdHRlcl8xLmZvcm1hdFRhYmxlKGNvbXBsZXRlZC50YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAvLyBhcHBseVxuICAgICAgICAgICAgY29uc3QgbmV3Um93ID0gcmFuZ2UuZW5kLnJvdyArIChjb21wbGV0ZWQuZGVsaW1pdGVySW5zZXJ0ZWQgPyAyIDogMSk7XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCBmb3JtYXR0ZWQudGFibGUudG9MaW5lcygpLCBsaW5lcyk7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1BvcztcbiAgICAgICAgICAgICAgICBpZiAobmV3Um93ID4gdGhpcy5fdGV4dEVkaXRvci5nZXRMYXN0Um93KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5pbnNlcnRMaW5lKG5ld1JvdywgJycpO1xuICAgICAgICAgICAgICAgICAgICBuZXdQb3MgPSBuZXcgcG9pbnRfMS5Qb2ludChuZXdSb3csIDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKGBeJHtwYXJzZXJfMS5tYXJnaW5SZWdleFNyYyhvcHRpb25zLmxlZnRNYXJnaW5DaGFycyl9YCwgJ3UnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dExpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUobmV3Um93KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcmdpbiA9IHJlLmV4ZWMobmV4dExpbmUpWzBdO1xuICAgICAgICAgICAgICAgICAgICBuZXdQb3MgPSBuZXcgcG9pbnRfMS5Qb2ludChuZXdSb3csIG1hcmdpbi5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnNldEN1cnNvclBvc2l0aW9uKG5ld1Bvcyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucmVzZXRTbWFydEN1cnNvcigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQWx0ZXJzIHRoZSBhbGlnbm1lbnQgb2YgdGhlIGZvY3VzZWQgY29sdW1uLlxuICAgICAqL1xuICAgIGFsaWduQ29sdW1uKGFsaWdubWVudCwgb3B0aW9ucykge1xuICAgICAgICB0aGlzLndpdGhDb21wbGV0ZWRUYWJsZShvcHRpb25zLCAoeyByYW5nZSwgbGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIGFsdGVyIGFsaWdubWVudFxuICAgICAgICAgICAgbGV0IGFsdGVyZWQgPSB0YWJsZTtcbiAgICAgICAgICAgIGlmICgwIDw9IG5ld0ZvY3VzLmNvbHVtbiAmJlxuICAgICAgICAgICAgICAgIG5ld0ZvY3VzLmNvbHVtbiA8PSBhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgYWx0ZXJlZCA9IGZvcm1hdHRlcl8xLmFsdGVyQWxpZ25tZW50KHRhYmxlLCBuZXdGb2N1cy5jb2x1bW4sIGFsaWdubWVudCwgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBmb3JtYXRcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1hdHRlcl8xLmZvcm1hdFRhYmxlKGFsdGVyZWQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldChuZXdGb2N1cywgdGFibGUsIGZvcm1hdHRlZCwgZmFsc2UpKTtcbiAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCBmb3JtYXR0ZWQudGFibGUudG9MaW5lcygpLCBsaW5lcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW92ZVRvRm9jdXMocmFuZ2Uuc3RhcnQucm93LCBmb3JtYXR0ZWQudGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2VsZWN0cyB0aGUgZm9jdXNlZCBjZWxsIGNvbnRlbnQuXG4gICAgICovXG4gICAgc2VsZWN0Q2VsbChvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBhcHBseVxuICAgICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50cmFuc2FjdCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGluZXMocmFuZ2Uuc3RhcnQucm93LCByYW5nZS5lbmQucm93ICsgMSwgdGFibGUudG9MaW5lcygpLCBsaW5lcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0Rm9jdXMocmFuZ2Uuc3RhcnQucm93LCB0YWJsZSwgbmV3Rm9jdXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNb3ZlcyB0aGUgZm9jdXMgdG8gYW5vdGhlciBjZWxsLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvd09mZnNldCAtIE9mZnNldCBpbiByb3cuXG4gICAgICogQHBhcmFtIGNvbHVtbk9mZnNldCAtIE9mZnNldCBpbiBjb2x1bW4uXG4gICAgICovXG4gICAgbW92ZUZvY3VzKHJvd09mZnNldCwgY29sdW1uT2Zmc2V0LCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIGxldCBuZXdGb2N1cyA9IGZvY3VzO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRGb2N1cyA9IG5ld0ZvY3VzO1xuICAgICAgICAgICAgLy8gbW92ZSBmb2N1c1xuICAgICAgICAgICAgaWYgKHJvd09mZnNldCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IHRhYmxlLmdldEhlaWdodCgpO1xuICAgICAgICAgICAgICAgIC8vIHNraXAgZGVsaW1pdGVyIHJvd1xuICAgICAgICAgICAgICAgIGNvbnN0IHNraXAgPSBuZXdGb2N1cy5yb3cgPCAxICYmIG5ld0ZvY3VzLnJvdyArIHJvd09mZnNldCA+PSAxXG4gICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICA6IG5ld0ZvY3VzLnJvdyA+IDEgJiYgbmV3Rm9jdXMucm93ICsgcm93T2Zmc2V0IDw9IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdyhNYXRoLm1pbihNYXRoLm1heChuZXdGb2N1cy5yb3cgKyByb3dPZmZzZXQgKyBza2lwLCAwKSwgaGVpZ2h0IDw9IDIgPyAwIDogaGVpZ2h0IC0gMSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbHVtbk9mZnNldCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gdGFibGUuZ2V0SGVhZGVyV2lkdGgoKTtcbiAgICAgICAgICAgICAgICBpZiAoIShuZXdGb2N1cy5jb2x1bW4gPCAwICYmIGNvbHVtbk9mZnNldCA8IDApICYmXG4gICAgICAgICAgICAgICAgICAgICEobmV3Rm9jdXMuY29sdW1uID4gd2lkdGggLSAxICYmIGNvbHVtbk9mZnNldCA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKE1hdGgubWluKE1hdGgubWF4KG5ld0ZvY3VzLmNvbHVtbiArIGNvbHVtbk9mZnNldCwgMCksIHdpZHRoIC0gMSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1vdmVkID0gIW5ld0ZvY3VzLnBvc0VxdWFscyhzdGFydEZvY3VzKTtcbiAgICAgICAgICAgIC8vIGZvcm1hdFxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUodGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldChuZXdGb2N1cywgdGFibGUsIGZvcm1hdHRlZCwgbW92ZWQpKTtcbiAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCBmb3JtYXR0ZWQudGFibGUudG9MaW5lcygpLCBsaW5lcyk7XG4gICAgICAgICAgICAgICAgaWYgKG1vdmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdEZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkLnRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlVG9Gb2N1cyhyYW5nZS5zdGFydC5yb3csIGZvcm1hdHRlZC50YWJsZSwgbmV3Rm9jdXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKG1vdmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldFNtYXJ0Q3Vyc29yKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNb3ZlcyB0aGUgZm9jdXMgdG8gdGhlIG5leHQgY2VsbC5cbiAgICAgKi9cbiAgICBuZXh0Q2VsbChvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX3dpdGhUYWJsZShvcHRpb25zLCAoeyByYW5nZSwgbGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICAvLyByZXNldCBzbWFydCBjdXJzb3IgaWYgbW92ZWRcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzTW92ZWQgPSAodGhpcy5fc2NUYWJsZVBvcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgIXJhbmdlLnN0YXJ0LmVxdWFscyh0aGlzLl9zY1RhYmxlUG9zKSkgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5fc2NMYXN0Rm9jdXMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAhZm9jdXMucG9zRXF1YWxzKHRoaXMuX3NjTGFzdEZvY3VzKSk7XG4gICAgICAgICAgICBpZiAodGhpcy5fc2NBY3RpdmUgJiYgZm9jdXNNb3ZlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRTbWFydEN1cnNvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBjb21wbGV0ZVxuICAgICAgICAgICAgY29uc3QgY29tcGxldGVkID0gZm9ybWF0dGVyXzEuY29tcGxldGVUYWJsZSh0YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkLmRlbGltaXRlckluc2VydGVkICYmIG5ld0ZvY3VzLnJvdyA+IDApIHtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdyhuZXdGb2N1cy5yb3cgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0Rm9jdXMgPSBuZXdGb2N1cztcbiAgICAgICAgICAgIGxldCBhbHRlcmVkID0gY29tcGxldGVkLnRhYmxlO1xuICAgICAgICAgICAgLy8gbW92ZSBmb2N1c1xuICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLnJvdyA9PT0gMSkge1xuICAgICAgICAgICAgICAgIC8vIG1vdmUgdG8gbmV4dCByb3dcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdygyKTtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zbWFydEN1cnNvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3Rm9jdXMuY29sdW1uIDwgMCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpIC0gMSA8IG5ld0ZvY3VzLmNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRDb2x1bW4oMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBpbnNlcnQgYW4gZW1wdHkgcm93IGlmIG5lZWRlZFxuICAgICAgICAgICAgICAgIGlmIChuZXdGb2N1cy5yb3cgPiBhbHRlcmVkLmdldEhlaWdodCgpIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3cgPSBuZXcgQXJyYXkoYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpKS5maWxsKG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKCcnKSk7XG4gICAgICAgICAgICAgICAgICAgIGFsdGVyZWQgPSBmb3JtYXR0ZXJfMS5pbnNlcnRSb3coYWx0ZXJlZCwgYWx0ZXJlZC5nZXRIZWlnaHQoKSwgbmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KHJvdywgJycsICcnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gaW5zZXJ0IGFuIGVtcHR5IGNvbHVtbiBpZiBuZWVkZWRcbiAgICAgICAgICAgICAgICBpZiAobmV3Rm9jdXMuY29sdW1uID4gYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQXJyYXkoYWx0ZXJlZC5nZXRIZWlnaHQoKSAtIDEpLmZpbGwobmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoJycpKTtcbiAgICAgICAgICAgICAgICAgICAgYWx0ZXJlZCA9IGZvcm1hdHRlcl8xLmluc2VydENvbHVtbihhbHRlcmVkLCBhbHRlcmVkLmdldEhlYWRlcldpZHRoKCksIGNvbHVtbiwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIG1vdmUgdG8gbmV4dCBjb2x1bW5cbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbihuZXdGb2N1cy5jb2x1bW4gKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGZvcm1hdFxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUoYWx0ZXJlZCwgb3B0aW9ucyk7XG4gICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldE9mZnNldChleHBvcnRzLl9jb21wdXRlTmV3T2Zmc2V0KG5ld0ZvY3VzLCBhbHRlcmVkLCBmb3JtYXR0ZWQsIHRydWUpKTtcbiAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICBjb25zdCBuZXdMaW5lcyA9IGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCk7XG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMuY29sdW1uID4gZm9ybWF0dGVkLnRhYmxlLmdldEhlYWRlcldpZHRoKCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgLy8gYWRkIG1hcmdpblxuICAgICAgICAgICAgICAgIG5ld0xpbmVzW25ld0ZvY3VzLnJvd10gKz0gJyAnO1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0T2Zmc2V0KDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50cmFuc2FjdCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGluZXMocmFuZ2Uuc3RhcnQucm93LCByYW5nZS5lbmQucm93ICsgMSwgbmV3TGluZXMsIGxpbmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RGb2N1cyhyYW5nZS5zdGFydC5yb3csIGZvcm1hdHRlZC50YWJsZSwgbmV3Rm9jdXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zbWFydEN1cnNvcikge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fc2NBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZhdGUgc21hcnQgY3Vyc29yXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NjQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2NUYWJsZVBvcyA9IHJhbmdlLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRGb2N1cy5jb2x1bW4gPCAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQudGFibGUuZ2V0SGVhZGVyV2lkdGgoKSAtIDEgPCBzdGFydEZvY3VzLmNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2NTdGFydEZvY3VzID0gbmV3IGZvY3VzXzEuRm9jdXMoc3RhcnRGb2N1cy5yb3csIDAsIDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2NTdGFydEZvY3VzID0gc3RhcnRGb2N1cztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9zY0xhc3RGb2N1cyA9IG5ld0ZvY3VzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTW92ZXMgdGhlIGZvY3VzIHRvIHRoZSBwcmV2aW91cyBjZWxsLlxuICAgICAqL1xuICAgIHByZXZpb3VzQ2VsbChvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIGxldCBuZXdGb2N1cyA9IGZvY3VzO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRGb2N1cyA9IG5ld0ZvY3VzO1xuICAgICAgICAgICAgLy8gbW92ZSBmb2N1c1xuICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLnJvdyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChuZXdGb2N1cy5jb2x1bW4gPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKG5ld0ZvY3VzLmNvbHVtbiAtIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG5ld0ZvY3VzLnJvdyA9PT0gMSkge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3IGZvY3VzXzEuRm9jdXMoMCwgdGFibGUuZ2V0SGVhZGVyV2lkdGgoKSAtIDEsIG5ld0ZvY3VzLm9mZnNldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAobmV3Rm9jdXMuY29sdW1uID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbihuZXdGb2N1cy5jb2x1bW4gLSAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3IGZvY3VzXzEuRm9jdXMobmV3Rm9jdXMucm93ID09PSAyID8gMCA6IG5ld0ZvY3VzLnJvdyAtIDEsIHRhYmxlLmdldEhlYWRlcldpZHRoKCkgLSAxLCBuZXdGb2N1cy5vZmZzZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1vdmVkID0gIW5ld0ZvY3VzLnBvc0VxdWFscyhzdGFydEZvY3VzKTtcbiAgICAgICAgICAgIC8vIGZvcm1hdFxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUodGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldChuZXdGb2N1cywgdGFibGUsIGZvcm1hdHRlZCwgbW92ZWQpKTtcbiAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCBmb3JtYXR0ZWQudGFibGUudG9MaW5lcygpLCBsaW5lcyk7XG4gICAgICAgICAgICAgICAgaWYgKG1vdmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdEZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkLnRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlVG9Gb2N1cyhyYW5nZS5zdGFydC5yb3csIGZvcm1hdHRlZC50YWJsZSwgbmV3Rm9jdXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKG1vdmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldFNtYXJ0Q3Vyc29yKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNb3ZlcyB0aGUgZm9jdXMgdG8gdGhlIG5leHQgcm93LlxuICAgICAqL1xuICAgIG5leHRSb3cob3B0aW9ucykge1xuICAgICAgICB0aGlzLl93aXRoVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgLy8gcmVzZXQgc21hcnQgY3Vyc29yIGlmIG1vdmVkXG4gICAgICAgICAgICBjb25zdCBmb2N1c01vdmVkID0gKHRoaXMuX3NjVGFibGVQb3MgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICFyYW5nZS5zdGFydC5lcXVhbHModGhpcy5fc2NUYWJsZVBvcykpIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMuX3NjTGFzdEZvY3VzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgIWZvY3VzLnBvc0VxdWFscyh0aGlzLl9zY0xhc3RGb2N1cykpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3NjQWN0aXZlICYmIGZvY3VzTW92ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U21hcnRDdXJzb3IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBuZXdGb2N1cyA9IGZvY3VzO1xuICAgICAgICAgICAgLy8gY29tcGxldGVcbiAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZCA9IGZvcm1hdHRlcl8xLmNvbXBsZXRlVGFibGUodGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgaWYgKGNvbXBsZXRlZC5kZWxpbWl0ZXJJbnNlcnRlZCAmJiBuZXdGb2N1cy5yb3cgPiAwKSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3cobmV3Rm9jdXMucm93ICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzdGFydEZvY3VzID0gbmV3Rm9jdXM7XG4gICAgICAgICAgICBsZXQgYWx0ZXJlZCA9IGNvbXBsZXRlZC50YWJsZTtcbiAgICAgICAgICAgIC8vIG1vdmUgZm9jdXNcbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5yb3cgPT09IDApIHtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdygyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KG5ld0ZvY3VzLnJvdyArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc21hcnRDdXJzb3IpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2NBY3RpdmUgJiYgdGhpcy5fc2NTdGFydEZvY3VzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRDb2x1bW4odGhpcy5fc2NTdGFydEZvY3VzLmNvbHVtbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5ld0ZvY3VzLmNvbHVtbiA8IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpIC0gMSA8IG5ld0ZvY3VzLmNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbigwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbigwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGluc2VydCBlbXB0eSByb3cgaWYgbmVlZGVkXG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93ID4gYWx0ZXJlZC5nZXRIZWlnaHQoKSAtIDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3cgPSBuZXcgQXJyYXkoYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpKS5maWxsKG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKCcnKSk7XG4gICAgICAgICAgICAgICAgYWx0ZXJlZCA9IGZvcm1hdHRlcl8xLmluc2VydFJvdyhhbHRlcmVkLCBhbHRlcmVkLmdldEhlaWdodCgpLCBuZXcgdGFibGVfcm93XzEuVGFibGVSb3cocm93LCAnJywgJycpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGZvcm1hdFxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUoYWx0ZXJlZCwgb3B0aW9ucyk7XG4gICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldE9mZnNldChleHBvcnRzLl9jb21wdXRlTmV3T2Zmc2V0KG5ld0ZvY3VzLCBhbHRlcmVkLCBmb3JtYXR0ZWQsIHRydWUpKTtcbiAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCBmb3JtYXR0ZWQudGFibGUudG9MaW5lcygpLCBsaW5lcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0Rm9jdXMocmFuZ2Uuc3RhcnQucm93LCBmb3JtYXR0ZWQudGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc21hcnRDdXJzb3IpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3NjQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2YXRlIHNtYXJ0IGN1cnNvclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zY0FjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NjVGFibGVQb3MgPSByYW5nZS5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0Rm9jdXMuY29sdW1uIDwgMCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkLnRhYmxlLmdldEhlYWRlcldpZHRoKCkgLSAxIDwgc3RhcnRGb2N1cy5jb2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NjU3RhcnRGb2N1cyA9IG5ldyBmb2N1c18xLkZvY3VzKHN0YXJ0Rm9jdXMucm93LCAwLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NjU3RhcnRGb2N1cyA9IHN0YXJ0Rm9jdXM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fc2NMYXN0Rm9jdXMgPSBuZXdGb2N1cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluc2VydHMgYW4gZW1wdHkgcm93IGF0IHRoZSBjdXJyZW50IGZvY3VzLlxuICAgICAqL1xuICAgIGluc2VydFJvdyhvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBtb3ZlIGZvY3VzXG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93IDw9IDEpIHtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdygyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKDApO1xuICAgICAgICAgICAgLy8gaW5zZXJ0IGFuIGVtcHR5IHJvd1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gbmV3IEFycmF5KHRhYmxlLmdldEhlYWRlcldpZHRoKCkpLmZpbGwobmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoJycpKTtcbiAgICAgICAgICAgIGNvbnN0IGFsdGVyZWQgPSBmb3JtYXR0ZXJfMS5pbnNlcnRSb3codGFibGUsIG5ld0ZvY3VzLnJvdywgbmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KHJvdywgJycsICcnKSk7XG4gICAgICAgICAgICB0aGlzLmZvcm1hdEFuZEFwcGx5KG9wdGlvbnMsIHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCBhbHRlcmVkLCBuZXdGb2N1cyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGEgcm93IGF0IHRoZSBjdXJyZW50IGZvY3VzLlxuICAgICAqL1xuICAgIGRlbGV0ZVJvdyhvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBkZWxldGUgYSByb3dcbiAgICAgICAgICAgIGxldCBhbHRlcmVkID0gdGFibGU7XG4gICAgICAgICAgICBsZXQgbW92ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5yb3cgIT09IDEpIHtcbiAgICAgICAgICAgICAgICBhbHRlcmVkID0gZm9ybWF0dGVyXzEuZGVsZXRlUm93KGFsdGVyZWQsIG5ld0ZvY3VzLnJvdyk7XG4gICAgICAgICAgICAgICAgbW92ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChuZXdGb2N1cy5yb3cgPiBhbHRlcmVkLmdldEhlaWdodCgpIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdyhuZXdGb2N1cy5yb3cgPT09IDIgPyAwIDogbmV3Rm9jdXMucm93IC0gMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5mb3JtYXRBbmRBcHBseShvcHRpb25zLCByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgYWx0ZXJlZCwgbmV3Rm9jdXMsIG1vdmVkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1vdmVzIHRoZSBmb2N1c2VkIHJvdyBieSB0aGUgc3BlY2lmaWVkIG9mZnNldC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvZmZzZXQgLSBBbiBvZmZzZXQgdGhlIHJvdyBpcyBtb3ZlZCBieS5cbiAgICAgKi9cbiAgICBtb3ZlUm93KG9mZnNldCwgb3B0aW9ucykge1xuICAgICAgICB0aGlzLndpdGhDb21wbGV0ZWRUYWJsZShvcHRpb25zLCAoeyByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIGxldCBuZXdGb2N1cyA9IGZvY3VzO1xuICAgICAgICAgICAgLy8gbW92ZSByb3dcbiAgICAgICAgICAgIGxldCBhbHRlcmVkID0gdGFibGU7XG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93ID4gMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlc3QgPSBNYXRoLm1pbihNYXRoLm1heChuZXdGb2N1cy5yb3cgKyBvZmZzZXQsIDIpLCBhbHRlcmVkLmdldEhlaWdodCgpIC0gMSk7XG4gICAgICAgICAgICAgICAgYWx0ZXJlZCA9IGZvcm1hdHRlcl8xLm1vdmVSb3coYWx0ZXJlZCwgbmV3Rm9jdXMucm93LCBkZXN0KTtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdyhkZXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZm9ybWF0QW5kQXBwbHkob3B0aW9ucywgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIGFsdGVyZWQsIG5ld0ZvY3VzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGV2YWx1YXRlRm9ybXVsYXMob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHRhYmxlLCBmb2N1cywgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGFibGUuYXBwbHlGb3JtdWxhcyhmb3JtdWxhTGluZXMpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0VycigpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5lcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHsgdGFibGU6IGZvcm1hdHRlZFRhYmxlLCBmb2N1czogbmV3Rm9jdXMgfSA9IHRoaXMuZm9ybWF0QW5kQXBwbHkob3B0aW9ucywgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHJlc3VsdC52YWx1ZSwgZm9jdXMsIGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNvcnRzIHJvd3MgYWxwaGFudW1lcmljYWxseSB1c2luZyB0aGUgY29sdW1uIGF0IHRoZSBjdXJyZW50IGZvY3VzLlxuICAgICAqIElmIGFsbCBjZWxscyBpbiB0aGUgc29ydGluZyBjb2x1bW4gYXJlIG51bWJlcnMsIHRoZSBjb2x1bW4gaXMgc29ydGVkXG4gICAgICogbnVtZXJpY2FsbHkuXG4gICAgICovXG4gICAgc29ydFJvd3Moc29ydE9yZGVyLCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYm9keVJvd3MgPSB0YWJsZS5nZXRSb3dzKCkuc2xpY2UoMik7XG4gICAgICAgICAgICBjb25zdCBpc051bWJlciA9IChzKSA9PiAvXlxccypbLStdPygoXFxkKyhcXC5cXGQrKT8pfChcXGQrXFwuKXwoXFwuXFxkKykpKFtlRV1bLStdP1xcZCspP1xccyokLy50ZXN0KHMpO1xuICAgICAgICAgICAgY29uc3Qgbm90QWxsTnVtcyA9IGJvZHlSb3dzXG4gICAgICAgICAgICAgICAgLm1hcCgocm93KSA9PiB7IHZhciBfYTsgcmV0dXJuIChfYSA9IHJvdy5nZXRDZWxsQXQoZm9jdXMuY29sdW1uKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNvbnRlbnQ7IH0pXG4gICAgICAgICAgICAgICAgLnNvbWUoKGNlbGwpID0+IGNlbGwgIT09IHVuZGVmaW5lZCAmJiBjZWxsICE9PSAnJyAmJiAhaXNOdW1iZXIoY2VsbCkpO1xuICAgICAgICAgICAgYm9keVJvd3Muc29ydCgocm93QSwgcm93QikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxBID0gcm93QS5nZXRDZWxsQXQoZm9jdXMuY29sdW1uKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsQiA9IHJvd0IuZ2V0Q2VsbEF0KGZvY3VzLmNvbHVtbik7XG4gICAgICAgICAgICAgICAgaWYgKGNlbGxBID09PSB1bmRlZmluZWQgfHwgY2VsbEEuY29udGVudCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxCID09PSB1bmRlZmluZWQgfHwgY2VsbEIuY29udGVudCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2VsbEIgPT09IHVuZGVmaW5lZCB8fCBjZWxsQi5jb250ZW50ID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudEEgPSBub3RBbGxOdW1zXG4gICAgICAgICAgICAgICAgICAgID8gY2VsbEEuY29udGVudC5yZXBsYWNlKC9bKn5fJF0vZywgJycpXG4gICAgICAgICAgICAgICAgICAgIDogcGFyc2VGbG9hdChjZWxsQS5jb250ZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50QiA9IG5vdEFsbE51bXNcbiAgICAgICAgICAgICAgICAgICAgPyBjZWxsQi5jb250ZW50LnJlcGxhY2UoL1sqfl8kXS9nLCAnJylcbiAgICAgICAgICAgICAgICAgICAgOiBwYXJzZUZsb2F0KGNlbGxCLmNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIGlmIChjb250ZW50QSA9PT0gY29udGVudEIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRlbnRBID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjb250ZW50QiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudEEgPCBjb250ZW50QiA/IC0xIDogMTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHNvcnRPcmRlciA9PT0gU29ydE9yZGVyLkRlc2NlbmRpbmcpIHtcbiAgICAgICAgICAgICAgICBib2R5Um93cy5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhbGxSb3dzID0gdGFibGUuZ2V0Um93cygpLnNsaWNlKDAsIDIpLmNvbmNhdChib2R5Um93cyk7XG4gICAgICAgICAgICBjb25zdCBuZXdUYWJsZSA9IG5ldyB0YWJsZV8xLlRhYmxlKGFsbFJvd3MpO1xuICAgICAgICAgICAgY29uc3QgeyB0YWJsZTogZm9ybWF0dGVkVGFibGUsIGZvY3VzOiBuZXdGb2N1cyB9ID0gdGhpcy5mb3JtYXRBbmRBcHBseShvcHRpb25zLCByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgbmV3VGFibGUsIGZvY3VzLCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuX21vdmVUb0ZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkVGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluc2VydHMgYW4gZW1wdHkgY29sdW1uIGF0IHRoZSBjdXJyZW50IGZvY3VzLlxuICAgICAqL1xuICAgIGluc2VydENvbHVtbihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBtb3ZlIGZvY3VzXG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3coMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMuY29sdW1uIDwgMCkge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaW5zZXJ0IGFuIGVtcHR5IGNvbHVtblxuICAgICAgICAgICAgY29uc3QgY29sdW1uID0gbmV3IEFycmF5KHRhYmxlLmdldEhlaWdodCgpIC0gMSkuZmlsbChuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCgnJykpO1xuICAgICAgICAgICAgY29uc3QgYWx0ZXJlZCA9IGZvcm1hdHRlcl8xLmluc2VydENvbHVtbih0YWJsZSwgbmV3Rm9jdXMuY29sdW1uLCBjb2x1bW4sIG9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5mb3JtYXRBbmRBcHBseShvcHRpb25zLCByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgYWx0ZXJlZCwgbmV3Rm9jdXMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGVsZXRlcyBhIGNvbHVtbiBhdCB0aGUgY3VycmVudCBmb2N1cy5cbiAgICAgKi9cbiAgICBkZWxldGVDb2x1bW4ob3B0aW9ucykge1xuICAgICAgICB0aGlzLndpdGhDb21wbGV0ZWRUYWJsZShvcHRpb25zLCAoeyByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIGxldCBuZXdGb2N1cyA9IGZvY3VzO1xuICAgICAgICAgICAgLy8gbW92ZSBmb2N1c1xuICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLnJvdyA9PT0gMSkge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZGVsZXRlIGEgY29sdW1uXG4gICAgICAgICAgICBsZXQgYWx0ZXJlZCA9IHRhYmxlO1xuICAgICAgICAgICAgbGV0IG1vdmVkID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoMCA8PSBuZXdGb2N1cy5jb2x1bW4gJiZcbiAgICAgICAgICAgICAgICBuZXdGb2N1cy5jb2x1bW4gPD0gYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpIC0gMSkge1xuICAgICAgICAgICAgICAgIGFsdGVyZWQgPSBmb3JtYXR0ZXJfMS5kZWxldGVDb2x1bW4odGFibGUsIG5ld0ZvY3VzLmNvbHVtbiwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgbW92ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChuZXdGb2N1cy5jb2x1bW4gPiBhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKGFsdGVyZWQuZ2V0SGVhZGVyV2lkdGgoKSAtIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZm9ybWF0QW5kQXBwbHkob3B0aW9ucywgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIGFsdGVyZWQsIG5ld0ZvY3VzLCBtb3ZlZCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNb3ZlcyB0aGUgZm9jdXNlZCBjb2x1bW4gYnkgdGhlIHNwZWNpZmllZCBvZmZzZXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2Zmc2V0IC0gQW4gb2Zmc2V0IHRoZSBjb2x1bW4gaXMgbW92ZWQgYnkuXG4gICAgICovXG4gICAgbW92ZUNvbHVtbihvZmZzZXQsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIG1vdmUgY29sdW1uXG4gICAgICAgICAgICBsZXQgYWx0ZXJlZCA9IHRhYmxlO1xuICAgICAgICAgICAgaWYgKDAgPD0gbmV3Rm9jdXMuY29sdW1uICYmXG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMuY29sdW1uIDw9IGFsdGVyZWQuZ2V0SGVhZGVyV2lkdGgoKSAtIDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXN0ID0gTWF0aC5taW4oTWF0aC5tYXgobmV3Rm9jdXMuY29sdW1uICsgb2Zmc2V0LCAwKSwgYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpIC0gMSk7XG4gICAgICAgICAgICAgICAgYWx0ZXJlZCA9IGZvcm1hdHRlcl8xLm1vdmVDb2x1bW4oYWx0ZXJlZCwgbmV3Rm9jdXMuY29sdW1uLCBkZXN0KTtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbihkZXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZm9ybWF0QW5kQXBwbHkob3B0aW9ucywgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIGFsdGVyZWQsIG5ld0ZvY3VzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZvcm1hdHMgYWxsIHRoZSB0YWJsZXMgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqL1xuICAgIGZvcm1hdEFsbChvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmUgPSBleHBvcnRzLl9jcmVhdGVJc1RhYmxlUm93UmVnZXgob3B0aW9ucy5sZWZ0TWFyZ2luQ2hhcnMpO1xuICAgICAgICAgICAgbGV0IHBvcyA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0Q3Vyc29yUG9zaXRpb24oKTtcbiAgICAgICAgICAgIGxldCBsaW5lcyA9IFtdO1xuICAgICAgICAgICAgbGV0IHN0YXJ0Um93ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IGxhc3RSb3cgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExhc3RSb3coKTtcbiAgICAgICAgICAgIC8vIGZpbmQgdGFibGVzXG4gICAgICAgICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPD0gbGFzdFJvdzsgcm93KyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gdGhpcy5fdGV4dEVkaXRvci5nZXRMaW5lKHJvdyk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RleHRFZGl0b3IuYWNjZXB0c1RhYmxlRWRpdChyb3cpICYmIHJlLnRlc3QobGluZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGluZXMucHVzaChsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0Um93ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Um93ID0gcm93O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXJ0Um93ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IHRhYmxlIGluZm9cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kUm93ID0gcm93IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBuZXcgcmFuZ2VfMS5SYW5nZShuZXcgcG9pbnRfMS5Qb2ludChzdGFydFJvdywgMCksIG5ldyBwb2ludF8xLlBvaW50KGVuZFJvdywgbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZvcm11bGFMaW5lcyBlbXB0eSBiZWNhdXNlIGZvcm1hdHRpbmcgZG9lcyBub3QgaW52b2x2ZSBmb3JtdWxhc1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWJsZSA9IHBhcnNlcl8xLnJlYWRUYWJsZShsaW5lcywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvY3VzID0gdGFibGUuZm9jdXNPZlBvc2l0aW9uKHBvcywgc3RhcnRSb3cpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGlmZjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvcm1hdFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0ZWQgPSBmb3JtYXR0ZXJfMS5jb21wbGV0ZVRhYmxlKHRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZWQuZGVsaW1pdGVySW5zZXJ0ZWQgJiYgbmV3Rm9jdXMucm93ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KG5ld0ZvY3VzLnJvdyArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUoY29tcGxldGVkLnRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0T2Zmc2V0KGV4cG9ydHMuX2NvbXB1dGVOZXdPZmZzZXQobmV3Rm9jdXMsIGNvbXBsZXRlZC50YWJsZSwgZm9ybWF0dGVkLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0xpbmVzID0gZm9ybWF0dGVkLnRhYmxlLnRvTGluZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIG5ld0xpbmVzLCBsaW5lcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgY3Vyc29yIHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBkaWZmID0gbmV3TGluZXMubGVuZ3RoIC0gbGluZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gZm9ybWF0dGVkLnRhYmxlLnBvc2l0aW9uT2ZGb2N1cyhuZXdGb2N1cywgc3RhcnRSb3cpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0ZWQgPSBmb3JtYXR0ZXJfMS5jb21wbGV0ZVRhYmxlKHRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1hdHRlcl8xLmZvcm1hdFRhYmxlKGNvbXBsZXRlZC50YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBseVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3TGluZXMgPSBmb3JtYXR0ZWQudGFibGUudG9MaW5lcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGluZXMocmFuZ2Uuc3RhcnQucm93LCByYW5nZS5lbmQucm93ICsgMSwgbmV3TGluZXMsIGxpbmVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBjdXJzb3IgcG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBuZXdMaW5lcy5sZW5ndGggLSBsaW5lcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zLnJvdyA+IGVuZFJvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IG5ldyBwb2ludF8xLlBvaW50KHBvcy5yb3cgKyBkaWZmLCBwb3MuY29sdW1uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyByZXNldFxuICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBzdGFydFJvdyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlXG4gICAgICAgICAgICAgICAgICAgIGxhc3RSb3cgKz0gZGlmZjtcbiAgICAgICAgICAgICAgICAgICAgcm93ICs9IGRpZmY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXJ0Um93ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBnZXQgdGFibGUgaW5mb1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZFJvdyA9IGxhc3RSb3c7XG4gICAgICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBuZXcgcmFuZ2VfMS5SYW5nZShuZXcgcG9pbnRfMS5Qb2ludChzdGFydFJvdywgMCksIG5ldyBwb2ludF8xLlBvaW50KGVuZFJvdywgbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgLy8gZm9ybXVsYUxpbmVzIGVtcHR5IGJlY2F1c2UgZm9ybWF0dGluZyBkb2VzIG5vdCBpbnZvbHZlIGZvcm11bGFzXG4gICAgICAgICAgICAgICAgY29uc3QgdGFibGUgPSBwYXJzZXJfMS5yZWFkVGFibGUobGluZXMsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvY3VzID0gdGFibGUuZm9jdXNPZlBvc2l0aW9uKHBvcywgc3RhcnRSb3cpO1xuICAgICAgICAgICAgICAgIC8vIGZvcm1hdFxuICAgICAgICAgICAgICAgIGxldCBuZXdGb2N1cyA9IGZvY3VzO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZCA9IGZvcm1hdHRlcl8xLmNvbXBsZXRlVGFibGUodGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ET1xuICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZWQuZGVsaW1pdGVySW5zZXJ0ZWQgJiYgbmV3Rm9jdXMucm93ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE9cbiAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3cobmV3Rm9jdXMucm93ICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1hdHRlcl8xLmZvcm1hdFRhYmxlKGNvbXBsZXRlZC50YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPXG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoXG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPXG4gICAgICAgICAgICAgICAgZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldChuZXdGb2N1cywgY29tcGxldGVkLnRhYmxlLCBmb3JtYXR0ZWQsIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdMaW5lcyA9IGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGluZXMocmFuZ2Uuc3RhcnQucm93LCByYW5nZS5lbmQucm93ICsgMSwgbmV3TGluZXMsIGxpbmVzKTtcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE9cbiAgICAgICAgICAgICAgICBwb3MgPSBmb3JtYXR0ZWQudGFibGUucG9zaXRpb25PZkZvY3VzKG5ld0ZvY3VzLCBzdGFydFJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnNldEN1cnNvclBvc2l0aW9uKHBvcyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFeHBvcnRzIHRoZSB0YWJsZSBhcyBhIHR3byBkaW1lbnNpb25hbCBzdHJpbmcgYXJyYXlcbiAgICAgKi9cbiAgICBleHBvcnRUYWJsZSh3aXRodEhlYWRlcnMsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYm9keVJvd3MgPSB0YWJsZS5nZXRSb3dzKCk7XG4gICAgICAgICAgICBpZiAoYm9keVJvd3MubGVuZ3RoID4gMCAmJiAhd2l0aHRIZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgYm9keVJvd3Muc3BsaWNlKDAsIDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZWxzZSBpZihib2R5Um93cy5sZW5ndGggPiAxKSBib2R5Um93cy5zcGxpY2UoMSwgMSk7XG4gICAgICAgICAgICByZXR1cm4gYm9keVJvd3MubWFwKChyb3cpID0+IHJvdy5nZXRDZWxscygpLm1hcCgoY2VsbCkgPT4gY2VsbC5jb250ZW50KSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFeHBvcnRzIHRoZSB0YWJsZSBhcyBhIHR3byBkaW1lbnNpb25hbCBzdHJpbmcgYXJyYXlcbiAgICAgKi9cbiAgICBleHBvcnRDU1Yod2l0aHRIZWFkZXJzLCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLmV4cG9ydFRhYmxlKHdpdGh0SGVhZGVycywgb3B0aW9ucyk7XG4gICAgICAgIHJldHVybiAhciA/IHVuZGVmaW5lZCA6IHIubWFwKChyb3cpID0+IHJvdy5qb2luKCdcXHQnKSkuam9pbignXFxuJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZpbmRzIGEgdGFibGUsIGNvbXBsZXRlcyBpdCwgdGhlbiBkb2VzIGFuIG9wZXJhdGlvbiB3aXRoIGl0LlxuICAgICAqXG4gICAgICogQHBhcmFtIGZ1bmMgLSBBIGZ1bmN0aW9uIHRoYXQgZG9lcyBzb21lIG9wZXJhdGlvbiBvbiB0YWJsZSBpbmZvcm1hdGlvbiBvYnRhaW5lZCBieVxuICAgICAqIHtAbGluayBUYWJsZUVkaXRvciNfZmluZFRhYmxlfS5cbiAgICAgKi9cbiAgICB3aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgZnVuYykge1xuICAgICAgICByZXR1cm4gdGhpcy5fd2l0aFRhYmxlKG9wdGlvbnMsICh0YWJsZUluZm8pID0+IHtcbiAgICAgICAgICAgIGxldCBuZXdGb2N1cyA9IHRhYmxlSW5mby5mb2N1cztcbiAgICAgICAgICAgIC8vIGNvbXBsZXRlXG4gICAgICAgICAgICBjb25zdCBjb21wbGV0ZWQgPSBmb3JtYXR0ZXJfMS5jb21wbGV0ZVRhYmxlKHRhYmxlSW5mby50YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkLmRlbGltaXRlckluc2VydGVkICYmIG5ld0ZvY3VzLnJvdyA+IDApIHtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdyhuZXdGb2N1cy5yb3cgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGZvcm1hdFxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUoY29tcGxldGVkLnRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0T2Zmc2V0KGV4cG9ydHMuX2NvbXB1dGVOZXdPZmZzZXQobmV3Rm9jdXMsIGNvbXBsZXRlZC50YWJsZSwgZm9ybWF0dGVkLCBmYWxzZSkpO1xuICAgICAgICAgICAgdGFibGVJbmZvLnRhYmxlID0gZm9ybWF0dGVkLnRhYmxlO1xuICAgICAgICAgICAgdGFibGVJbmZvLmZvY3VzID0gbmV3Rm9jdXM7XG4gICAgICAgICAgICByZXR1cm4gZnVuYyh0YWJsZUluZm8pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRm9ybWF0cyB0aGUgdGFibGUgYW5kIGFwcGxpZXMgYW55IGNoYW5nZXMgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgYmV0d2VlblxuICAgICAqIG9yaWdpbmFsTGluZXMgYW5kIHRoZSBuZXdUYWJsZS4gU2hvdWxkIGdlbmVyYWxseSBiZSB0aGUgbGFzdCBmdW5jdGlvbiBjYWxsXG4gICAgICogaW4gYSBUYWJsZUVkaXRvciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmb3JtYXRBbmRBcHBseShvcHRpb25zLCByYW5nZSwgb3JpZ2luYWxMaW5lcywgZm9ybXVsYUxpbmVzLCBuZXdUYWJsZSwgbmV3Rm9jdXMsIG1vdmVkID0gZmFsc2UpIHtcbiAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1hdHRlcl8xLmZvcm1hdFRhYmxlKG5ld1RhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldChuZXdGb2N1cywgbmV3VGFibGUsIGZvcm1hdHRlZCwgbW92ZWQpKTtcbiAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50cmFuc2FjdCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCBmb3JtYXR0ZWQudGFibGUudG9MaW5lcygpLCBvcmlnaW5hbExpbmVzKTtcbiAgICAgICAgICAgIGlmIChtb3ZlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdEZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkLnRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlVG9Gb2N1cyhyYW5nZS5zdGFydC5yb3csIGZvcm1hdHRlZC50YWJsZSwgbmV3Rm9jdXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZXNldFNtYXJ0Q3Vyc29yKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByYW5nZSxcbiAgICAgICAgICAgIGxpbmVzOiBvcmlnaW5hbExpbmVzLFxuICAgICAgICAgICAgZm9ybXVsYUxpbmVzLFxuICAgICAgICAgICAgdGFibGU6IGZvcm1hdHRlZC50YWJsZSxcbiAgICAgICAgICAgIGZvY3VzOiBuZXdGb2N1cyxcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnRzLlRhYmxlRWRpdG9yID0gVGFibGVFZGl0b3I7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU29ydE9yZGVyID0gZXhwb3J0cy5UYWJsZUVkaXRvciA9IGV4cG9ydHMub3B0aW9uc1dpdGhEZWZhdWx0cyA9IGV4cG9ydHMuZGVmYXVsdE9wdGlvbnMgPSBleHBvcnRzLklUZXh0RWRpdG9yID0gZXhwb3J0cy5zaG9ydGVzdEVkaXRTY3JpcHQgPSBleHBvcnRzLmFwcGx5RWRpdFNjcmlwdCA9IGV4cG9ydHMuRGVsZXRlID0gZXhwb3J0cy5JbnNlcnQgPSBleHBvcnRzLm1vdmVDb2x1bW4gPSBleHBvcnRzLmRlbGV0ZUNvbHVtbiA9IGV4cG9ydHMuaW5zZXJ0Q29sdW1uID0gZXhwb3J0cy5tb3ZlUm93ID0gZXhwb3J0cy5kZWxldGVSb3cgPSBleHBvcnRzLmluc2VydFJvdyA9IGV4cG9ydHMuYWx0ZXJBbGlnbm1lbnQgPSBleHBvcnRzLmZvcm1hdFRhYmxlID0gZXhwb3J0cy5jb21wbGV0ZVRhYmxlID0gZXhwb3J0cy5Gb3JtYXRUeXBlID0gZXhwb3J0cy5yZWFkVGFibGUgPSBleHBvcnRzLlRhYmxlID0gZXhwb3J0cy5UYWJsZVJvdyA9IGV4cG9ydHMuVGFibGVDZWxsID0gZXhwb3J0cy5IZWFkZXJBbGlnbm1lbnQgPSBleHBvcnRzLkRlZmF1bHRBbGlnbm1lbnQgPSBleHBvcnRzLkFsaWdubWVudCA9IGV4cG9ydHMuRm9jdXMgPSBleHBvcnRzLlJhbmdlID0gZXhwb3J0cy5Qb2ludCA9IHZvaWQgMDtcbnZhciBwb2ludF8xID0gcmVxdWlyZShcIi4vcG9pbnRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJQb2ludFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gcG9pbnRfMS5Qb2ludDsgfSB9KTtcbnZhciByYW5nZV8xID0gcmVxdWlyZShcIi4vcmFuZ2VcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSYW5nZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gcmFuZ2VfMS5SYW5nZTsgfSB9KTtcbnZhciBmb2N1c18xID0gcmVxdWlyZShcIi4vZm9jdXNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJGb2N1c1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9jdXNfMS5Gb2N1czsgfSB9KTtcbnZhciBhbGlnbm1lbnRfMSA9IHJlcXVpcmUoXCIuL2FsaWdubWVudFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFsaWdubWVudFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gYWxpZ25tZW50XzEuQWxpZ25tZW50OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRGVmYXVsdEFsaWdubWVudFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gYWxpZ25tZW50XzEuRGVmYXVsdEFsaWdubWVudDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkhlYWRlckFsaWdubWVudFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gYWxpZ25tZW50XzEuSGVhZGVyQWxpZ25tZW50OyB9IH0pO1xudmFyIHRhYmxlX2NlbGxfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLWNlbGxcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUYWJsZUNlbGxcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRhYmxlX2NlbGxfMS5UYWJsZUNlbGw7IH0gfSk7XG52YXIgdGFibGVfcm93XzEgPSByZXF1aXJlKFwiLi90YWJsZS1yb3dcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUYWJsZVJvd1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGFibGVfcm93XzEuVGFibGVSb3c7IH0gfSk7XG52YXIgdGFibGVfMSA9IHJlcXVpcmUoXCIuL3RhYmxlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGFibGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRhYmxlXzEuVGFibGU7IH0gfSk7XG52YXIgcGFyc2VyXzEgPSByZXF1aXJlKFwiLi9wYXJzZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJyZWFkVGFibGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBhcnNlcl8xLnJlYWRUYWJsZTsgfSB9KTtcbnZhciBmb3JtYXR0ZXJfanNfMSA9IHJlcXVpcmUoXCIuL2Zvcm1hdHRlci5qc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkZvcm1hdFR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1hdHRlcl9qc18xLkZvcm1hdFR5cGU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjb21wbGV0ZVRhYmxlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBmb3JtYXR0ZXJfanNfMS5jb21wbGV0ZVRhYmxlOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZm9ybWF0VGFibGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1hdHRlcl9qc18xLmZvcm1hdFRhYmxlOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiYWx0ZXJBbGlnbm1lbnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1hdHRlcl9qc18xLmFsdGVyQWxpZ25tZW50OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiaW5zZXJ0Um93XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBmb3JtYXR0ZXJfanNfMS5pbnNlcnRSb3c7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWxldGVSb3dcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1hdHRlcl9qc18xLmRlbGV0ZVJvdzsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIm1vdmVSb3dcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1hdHRlcl9qc18xLm1vdmVSb3c7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJpbnNlcnRDb2x1bW5cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1hdHRlcl9qc18xLmluc2VydENvbHVtbjsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlbGV0ZUNvbHVtblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuZGVsZXRlQ29sdW1uOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibW92ZUNvbHVtblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEubW92ZUNvbHVtbjsgfSB9KTtcbnZhciBlZGl0X3NjcmlwdF8xID0gcmVxdWlyZShcIi4vZWRpdC1zY3JpcHRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJJbnNlcnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVkaXRfc2NyaXB0XzEuSW5zZXJ0OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRGVsZXRlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBlZGl0X3NjcmlwdF8xLkRlbGV0ZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImFwcGx5RWRpdFNjcmlwdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZWRpdF9zY3JpcHRfMS5hcHBseUVkaXRTY3JpcHQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJzaG9ydGVzdEVkaXRTY3JpcHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVkaXRfc2NyaXB0XzEuc2hvcnRlc3RFZGl0U2NyaXB0OyB9IH0pO1xudmFyIHRleHRfZWRpdG9yXzEgPSByZXF1aXJlKFwiLi90ZXh0LWVkaXRvclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIklUZXh0RWRpdG9yXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0ZXh0X2VkaXRvcl8xLklUZXh0RWRpdG9yOyB9IH0pO1xudmFyIG9wdGlvbnNfMSA9IHJlcXVpcmUoXCIuL29wdGlvbnNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0T3B0aW9uc1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gb3B0aW9uc18xLmRlZmF1bHRPcHRpb25zOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwib3B0aW9uc1dpdGhEZWZhdWx0c1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gb3B0aW9uc18xLm9wdGlvbnNXaXRoRGVmYXVsdHM7IH0gfSk7XG52YXIgdGFibGVfZWRpdG9yXzEgPSByZXF1aXJlKFwiLi90YWJsZS1lZGl0b3JcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUYWJsZUVkaXRvclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGFibGVfZWRpdG9yXzEuVGFibGVFZGl0b3I7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJTb3J0T3JkZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRhYmxlX2VkaXRvcl8xLlNvcnRPcmRlcjsgfSB9KTtcbiIsImltcG9ydCB7XG4gIEZvcm1hdFR5cGUsXG4gIE9wdGlvbnMsXG4gIG9wdGlvbnNXaXRoRGVmYXVsdHMsXG59IGZyb20gJ0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcyc7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0U2V0dGluZ3M6IFBhcnRpYWw8SVNldHRpbmdzPiA9IHtcbiAgZm9ybWF0VHlwZTogRm9ybWF0VHlwZS5OT1JNQUwsXG4gIHNob3dSaWJib25JY29uOiB0cnVlLFxuICBiaW5kRW50ZXI6IHRydWUsXG4gIGJpbmRUYWI6IHRydWUsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElTZXR0aW5ncyB7XG4gIGZvcm1hdFR5cGU6IEZvcm1hdFR5cGU7XG4gIHNob3dSaWJib25JY29uOiBib29sZWFuO1xuICBiaW5kRW50ZXI6IGJvb2xlYW47XG4gIGJpbmRUYWI6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUVkaXRvclBsdWdpblNldHRpbmdzIGltcGxlbWVudHMgSVNldHRpbmdzIHtcbiAgcHVibGljIGZvcm1hdFR5cGU6IEZvcm1hdFR5cGU7XG4gIHB1YmxpYyBzaG93UmliYm9uSWNvbjogYm9vbGVhbjtcblxuICBwdWJsaWMgYmluZEVudGVyOiBib29sZWFuO1xuICBwdWJsaWMgYmluZFRhYjogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihsb2FkZWREYXRhOiBQYXJ0aWFsPElTZXR0aW5ncz4pIHtcbiAgICBjb25zdCBhbGxGaWVsZHMgPSB7IC4uLmRlZmF1bHRTZXR0aW5ncywgLi4ubG9hZGVkRGF0YSB9O1xuICAgIHRoaXMuZm9ybWF0VHlwZSA9IGFsbEZpZWxkcy5mb3JtYXRUeXBlO1xuICAgIHRoaXMuc2hvd1JpYmJvbkljb24gPSBhbGxGaWVsZHMuc2hvd1JpYmJvbkljb247XG4gICAgdGhpcy5iaW5kRW50ZXIgPSBhbGxGaWVsZHMuYmluZEVudGVyO1xuICAgIHRoaXMuYmluZFRhYiA9IGFsbEZpZWxkcy5iaW5kVGFiO1xuICB9XG5cbiAgcHVibGljIGFzT3B0aW9ucygpOiBPcHRpb25zIHtcbiAgICByZXR1cm4gb3B0aW9uc1dpdGhEZWZhdWx0cyh7IGZvcm1hdFR5cGU6IHRoaXMuZm9ybWF0VHlwZSB9KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUG9pbnQsIFJhbmdlIH0gZnJvbSAnQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzJztcbmltcG9ydCB7IEFwcCwgRWRpdG9yLCBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBPYnNpZGlhblRleHRFZGl0b3IgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIElUZXh0RWRpdG9yIGludGVyZmFjZSBmcm9tXG4gKiB0aGUgbXRlLWtlcm5lbCBsaWJyYXJ5LiBJdCB0ZWFjaGVzIHRoZSB0YWJsZSBlZGl0b3IgbGlicmFyeSBob3cgdG8gaW50ZXJmYWNlXG4gKiB3aXRoIE9ic2lkaWFuLlxuICovXG5leHBvcnQgY2xhc3MgT2JzaWRpYW5UZXh0RWRpdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcHA6IEFwcDtcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlOiBURmlsZTtcbiAgcHJpdmF0ZSByZWFkb25seSBlZGl0b3I6IEVkaXRvcjtcblxuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgZmlsZTogVEZpbGUsIGVkaXRvcjogRWRpdG9yKSB7XG4gICAgdGhpcy5hcHAgPSBhcHA7XG4gICAgdGhpcy5maWxlID0gZmlsZTtcbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJzb3JQb3NpdGlvbiA9ICgpOiBQb2ludCA9PiB7XG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmVkaXRvci5nZXRDdXJzb3IoKTtcbiAgICBjb25zb2xlLmRlYnVnKFxuICAgICAgYGdldEN1cnNvclBvc2l0aW9uIHdhcyBjYWxsZWQ6IGxpbmUgJHtwb3NpdGlvbi5saW5lfSwgY2ggJHtwb3NpdGlvbi5jaH1gLFxuICAgICk7XG4gICAgcmV0dXJuIG5ldyBQb2ludChwb3NpdGlvbi5saW5lLCBwb3NpdGlvbi5jaCk7XG4gIH07XG5cbiAgcHVibGljIHNldEN1cnNvclBvc2l0aW9uID0gKHBvczogUG9pbnQpOiB2b2lkID0+IHtcbiAgICBjb25zb2xlLmRlYnVnKFxuICAgICAgYHNldEN1cnNvclBvc2l0aW9uIHdhcyBjYWxsZWQ6IGxpbmUgJHtwb3Mucm93fSwgY2ggJHtwb3MuY29sdW1ufWAsXG4gICAgKTtcbiAgICB0aGlzLmVkaXRvci5zZXRDdXJzb3IoeyBsaW5lOiBwb3Mucm93LCBjaDogcG9zLmNvbHVtbiB9KTtcbiAgfTtcblxuICBwdWJsaWMgc2V0U2VsZWN0aW9uUmFuZ2UgPSAocmFuZ2U6IFJhbmdlKTogdm9pZCA9PiB7XG4gICAgY29uc29sZS5kZWJ1Zygnc2V0U2VsZWN0aW9uUmFuZ2Ugd2FzIGNhbGxlZCcpO1xuICAgIHRoaXMuZWRpdG9yLnNldFNlbGVjdGlvbihcbiAgICAgIHsgbGluZTogcmFuZ2Uuc3RhcnQucm93LCBjaDogcmFuZ2Uuc3RhcnQuY29sdW1uIH0sXG4gICAgICB7IGxpbmU6IHJhbmdlLmVuZC5yb3csIGNoOiByYW5nZS5lbmQuY29sdW1uIH0sXG4gICAgKTtcbiAgfTtcblxuICBwdWJsaWMgZ2V0TGFzdFJvdyA9ICgpOiBudW1iZXIgPT4ge1xuICAgIGNvbnNvbGUuZGVidWcoJ2dldExhc3RSb3cgd2FzIGNhbGxlZCcpO1xuICAgIHJldHVybiB0aGlzLmVkaXRvci5sYXN0TGluZSgpO1xuICB9O1xuXG4gIHB1YmxpYyBhY2NlcHRzVGFibGVFZGl0ID0gKHJvdzogbnVtYmVyKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc29sZS5kZWJ1ZyhgYWNjZXB0c1RhYmxlRWRpdCB3YXMgY2FsbGVkIG9uIHJvdyAke3Jvd31gKTtcblxuICAgIGNvbnN0IGNhY2hlID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUodGhpcy5maWxlKTtcbiAgICBpZiAoIWNhY2hlLnNlY3Rpb25zKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB0YWJsZSA9IGNhY2hlLnNlY3Rpb25zLmZpbmQoXG4gICAgICAoc2VjdGlvbik6IGJvb2xlYW4gPT5cbiAgICAgICAgc2VjdGlvbi5wb3NpdGlvbi5zdGFydC5saW5lIDw9IHJvdyAmJlxuICAgICAgICBzZWN0aW9uLnBvc2l0aW9uLmVuZC5saW5lID49IHJvdyAmJlxuICAgICAgICBzZWN0aW9uLnR5cGUgIT09ICdjb2RlJyAmJlxuICAgICAgICBzZWN0aW9uLnR5cGUgIT09ICdtYXRoJyxcbiAgICApO1xuICAgIGlmICh0YWJsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdhY2NlcHRzVGFibGVFZGl0IHJldHVybmluZyBmYWxzZSwgdGFibGUgbm90IGZvdW5kJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgdGhhdCB0aGUgdGV4dCBgLXR4LWAgaXMgbm90IG9uIHRoZSBsaW5lIGltbWVkaWF0ZWx5IHByZWNlZWRpbmcgdGhlXG4gICAgLy8gdGFibGUgZm91bmQgaW4gdGhlIHByZXZpb3VzIGNoZWNrLlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90Z3Jvc2luZ2VyL2FkdmFuY2VkLXRhYmxlcy1vYnNpZGlhbi9pc3N1ZXMvMTMzXG4gICAgY29uc3QgcHJlY2VlZGluZ0xpbmVJbmRleCA9IHRhYmxlLnBvc2l0aW9uLnN0YXJ0LmxpbmU7XG4gICAgaWYgKHByZWNlZWRpbmdMaW5lSW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgcHJlY2VlZGluZ0xpbmUgPSB0aGlzLmdldExpbmUocHJlY2VlZGluZ0xpbmVJbmRleCk7XG4gICAgICBpZiAocHJlY2VlZGluZ0xpbmUgPT09ICctdHgtJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgcHVibGljIGdldExpbmUgPSAocm93OiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnNvbGUuZGVidWcoYGdldExpbmUgd2FzIGNhbGxlZCBvbiBsaW5lICR7cm93fWApO1xuICAgIHJldHVybiB0aGlzLmVkaXRvci5nZXRMaW5lKHJvdyk7XG4gIH07XG5cbiAgcHVibGljIGluc2VydExpbmUgPSAocm93OiBudW1iZXIsIGxpbmU6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgIGNvbnNvbGUuZGVidWcoYGluc2VydExpbmUgd2FzIGNhbGxlZCBhdCBsaW5lICR7cm93fWApO1xuICAgIGNvbnNvbGUuZGVidWcoYE5ldyBsaW5lOiAke2xpbmV9YCk7XG5cbiAgICBpZiAocm93ID4gdGhpcy5nZXRMYXN0Um93KCkpIHtcbiAgICAgIHRoaXMuZWRpdG9yLnJlcGxhY2VSYW5nZSgnXFxuJyArIGxpbmUsIHsgbGluZTogcm93LCBjaDogMCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lZGl0b3IucmVwbGFjZVJhbmdlKGxpbmUgKyAnXFxuJywgeyBsaW5lOiByb3csIGNoOiAwIH0pO1xuICAgIH1cbiAgfTtcblxuICBwdWJsaWMgZGVsZXRlTGluZSA9IChyb3c6IG51bWJlcik6IHZvaWQgPT4ge1xuICAgIGNvbnNvbGUuZGVidWcoYGRlbGV0ZUxpbmUgd2FzIGNhbGxlZCBvbiBsaW5lICR7cm93fWApO1xuXG4gICAgLy8gSWYgb24gdGhlIGxhc3QgbGluZSBvZiB0aGUgZmlsZSwgd2UgY2Fubm90IHJlcGxhY2UgdG8gdGhlIG5leHQgcm93LlxuICAgIC8vIEluc3RlYWQsIHJlcGxhY2UgYWxsIHRoZSBjb250ZW50cyBvZiB0aGlzIGxpbmUuXG4gICAgaWYgKHJvdyA9PT0gdGhpcy5nZXRMYXN0Um93KCkpIHtcbiAgICAgIGNvbnN0IHJvd0NvbnRlbnRzID0gdGhpcy5nZXRMaW5lKHJvdyk7XG4gICAgICB0aGlzLmVkaXRvci5yZXBsYWNlUmFuZ2UoXG4gICAgICAgICcnLFxuICAgICAgICB7IGxpbmU6IHJvdywgY2g6IDAgfSxcbiAgICAgICAgeyBsaW5lOiByb3csIGNoOiByb3dDb250ZW50cy5sZW5ndGggfSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZWRpdG9yLnJlcGxhY2VSYW5nZShcbiAgICAgICAgJycsXG4gICAgICAgIHsgbGluZTogcm93LCBjaDogMCB9LFxuICAgICAgICB7IGxpbmU6IHJvdyArIDEsIGNoOiAwIH0sXG4gICAgICApO1xuICAgIH1cbiAgfTtcblxuICBwdWJsaWMgcmVwbGFjZUxpbmVzID0gKFxuICAgIHN0YXJ0Um93OiBudW1iZXIsXG4gICAgZW5kUm93OiBudW1iZXIsXG4gICAgbGluZXM6IHN0cmluZ1tdLFxuICApOiB2b2lkID0+IHtcbiAgICAvLyBUYWtlIG9uZSBvZmYgdGhlIGVuZFJvdyBhbmQgaW5zdGVhZCBnbyB0byB0aGUgZW5kIG9mIHRoYXQgbGluZVxuICAgIGNvbnN0IHJlYWxFbmRSb3cgPSBlbmRSb3cgLSAxO1xuICAgIGNvbnN0IGVuZFJvd0NvbnRlbnRzID0gdGhpcy5lZGl0b3IuZ2V0TGluZShyZWFsRW5kUm93KTtcbiAgICBjb25zdCBlbmRSb3dGaW5hbEluZGV4ID0gZW5kUm93Q29udGVudHMubGVuZ3RoO1xuXG4gICAgdGhpcy5lZGl0b3IucmVwbGFjZVJhbmdlKFxuICAgICAgbGluZXMuam9pbignXFxuJyksXG4gICAgICB7IGxpbmU6IHN0YXJ0Um93LCBjaDogMCB9LFxuICAgICAgeyBsaW5lOiByZWFsRW5kUm93LCBjaDogZW5kUm93RmluYWxJbmRleCB9LFxuICAgICk7XG4gIH07XG5cbiAgcHVibGljIHRyYW5zYWN0ID0gKGZ1bmM6IEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgLypcbiAgICB0aGlzLmVkaXRvci5vcGVyYXRpb24oKCkgPT4ge1xuICAgICAgZnVuYygpO1xuICAgIH0pO1xuICAgICovXG4gICAgZnVuYygpO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgT2JzaWRpYW5UZXh0RWRpdG9yIH0gZnJvbSAnLi9vYnNpZGlhbi10ZXh0LWVkaXRvcic7XG5pbXBvcnQgeyBUYWJsZUVkaXRvclBsdWdpblNldHRpbmdzIH0gZnJvbSAnLi9zZXR0aW5ncyc7XG5pbXBvcnQge1xuICBBbGlnbm1lbnQsXG4gIFNvcnRPcmRlcixcbiAgVGFibGVFZGl0b3IgYXMgTVRFRWRpdG9yLFxufSBmcm9tICdAdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMnO1xuaW1wb3J0IHsgQXBwLCBFZGl0b3IsIE1vZGFsLCBOb3RpY2UsIFRGaWxlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5leHBvcnQgY2xhc3MgVGFibGVFZGl0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IGFwcDogQXBwO1xuICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdzOiBUYWJsZUVkaXRvclBsdWdpblNldHRpbmdzO1xuICBwcml2YXRlIHJlYWRvbmx5IG10ZTogTVRFRWRpdG9yO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFwcDogQXBwLFxuICAgIGZpbGU6IFRGaWxlLFxuICAgIGVkaXRvcjogRWRpdG9yLFxuICAgIHNldHRpbmdzOiBUYWJsZUVkaXRvclBsdWdpblNldHRpbmdzLFxuICApIHtcbiAgICB0aGlzLmFwcCA9IGFwcDtcbiAgICB0aGlzLnNldHRpbmdzID0gc2V0dGluZ3M7XG5cbiAgICBjb25zdCBvdGUgPSBuZXcgT2JzaWRpYW5UZXh0RWRpdG9yKGFwcCwgZmlsZSwgZWRpdG9yKTtcbiAgICB0aGlzLm10ZSA9IG5ldyBNVEVFZGl0b3Iob3RlKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjdXJzb3JJc0luVGFibGVGb3JtdWxhID0gKCk6IGJvb2xlYW4gPT5cbiAgICB0aGlzLm10ZS5jdXJzb3JJc0luVGFibGVGb3JtdWxhKHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjdXJzb3JJc0luVGFibGUgPSAoKTogYm9vbGVhbiA9PlxuICAgIHRoaXMubXRlLmN1cnNvcklzSW5UYWJsZSh0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbmV4dENlbGwgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUubmV4dENlbGwodGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IHByZXZpb3VzQ2VsbCA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5wcmV2aW91c0NlbGwodGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IG5leHRSb3cgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUubmV4dFJvdyh0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybWF0VGFibGUgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUuZm9ybWF0KHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBmb3JtYXRBbGxUYWJsZXMgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUuZm9ybWF0QWxsKHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBpbnNlcnRDb2x1bW4gPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUuaW5zZXJ0Q29sdW1uKHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBpbnNlcnRSb3cgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUuaW5zZXJ0Um93KHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBsZWZ0QWxpZ25Db2x1bW4gPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUuYWxpZ25Db2x1bW4oQWxpZ25tZW50LkxFRlQsIHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBjZW50ZXJBbGlnbkNvbHVtbiA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5hbGlnbkNvbHVtbihBbGlnbm1lbnQuQ0VOVEVSLCB0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcmlnaHRBbGlnbkNvbHVtbiA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5hbGlnbkNvbHVtbihBbGlnbm1lbnQuUklHSFQsIHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBtb3ZlQ29sdW1uTGVmdCA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5tb3ZlQ29sdW1uKC0xLCB0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbW92ZUNvbHVtblJpZ2h0ID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLm1vdmVDb2x1bW4oMSwgdGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IG1vdmVSb3dVcCA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5tb3ZlUm93KC0xLCB0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbW92ZVJvd0Rvd24gPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUubW92ZVJvdygxLCB0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZGVsZXRlQ29sdW1uID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLmRlbGV0ZUNvbHVtbih0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZGVsZXRlUm93ID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLmRlbGV0ZVJvdyh0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc29ydFJvd3NBc2MgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUuc29ydFJvd3MoU29ydE9yZGVyLkFzY2VuZGluZywgdGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IHNvcnRSb3dzRGVzYyA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5zb3J0Um93cyhTb3J0T3JkZXIuRGVzY2VuZGluZywgdGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGVzY2FwZSA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5lc2NhcGUodGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGV2YWx1YXRlRm9ybXVsYXMgPSAoKTogdm9pZCA9PiB7XG4gICAgY29uc3QgZXJyID0gdGhpcy5tdGUuZXZhbHVhdGVGb3JtdWxhcyh0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBuZXcgTm90aWNlKGVyci5tZXNzYWdlKTtcbiAgICB9XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGV4cG9ydENTVk1vZGFsID0gKCk6IHZvaWQgPT4ge1xuICAgIG5ldyBDU1ZNb2RhbCh0aGlzLmFwcCwgdGhpcy5tdGUsIHRoaXMuc2V0dGluZ3MpLm9wZW4oKTtcbiAgfTtcbn1cblxuY2xhc3MgQ1NWTW9kYWwgZXh0ZW5kcyBNb2RhbCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbXRlOiBNVEVFZGl0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0dGluZ3M6IFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3M7XG5cbiAgY29uc3RydWN0b3IoYXBwOiBBcHAsIG10ZTogTVRFRWRpdG9yLCBzZXR0aW5nczogVGFibGVFZGl0b3JQbHVnaW5TZXR0aW5ncykge1xuICAgIHN1cGVyKGFwcCk7XG4gICAgdGhpcy5tdGUgPSBtdGU7XG4gICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzO1xuICB9XG5cbiAgcHVibGljIG9uT3BlbigpOiB2b2lkIHtcbiAgICBjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcbiAgICBjb25zdCBkaXYgPSBjb250ZW50RWwuY3JlYXRlRGl2KHtcbiAgICAgIGNsczogJ2FkdmFuY2VkLXRhYmxlcy1jc3YtZXhwb3J0JyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHRhID0gZGl2LmNyZWF0ZUVsKCd0ZXh0YXJlYScsIHtcbiAgICAgIGF0dHI6IHtcbiAgICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRhLnZhbHVlID0gdGhpcy5tdGUuZXhwb3J0Q1NWKHRydWUsIHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICAgIHRhLm9uQ2xpY2tFdmVudCgoKSA9PiB0YS5zZWxlY3QoKSk7XG5cbiAgICBjb25zdCBsYiA9IGRpdi5jcmVhdGVFbCgnbGFiZWwnKTtcbiAgICBjb25zdCBjYiA9IGxiLmNyZWF0ZUVsKCdpbnB1dCcsIHtcbiAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICBhdHRyOiB7XG4gICAgICAgIGNoZWNrZWQ6IHRydWUsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGxiLmNyZWF0ZVNwYW4oKS5zZXRUZXh0KCdJbmNsdWRlIHRhYmxlIGhlYWRlcnMnKTtcbiAgICBjYi5vbkNsaWNrRXZlbnQoKCkgPT4ge1xuICAgICAgdGEudmFsdWUgPSB0aGlzLm10ZS5leHBvcnRDU1YoY2IuY2hlY2tlZCwgdGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZSgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcbiAgICBjb250ZW50RWwuZW1wdHkoKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgaWNvbnMgfSBmcm9tICcuL2ljb25zJztcbmltcG9ydCB7IFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3MgfSBmcm9tICcuL3NldHRpbmdzJztcbmltcG9ydCB7IFRhYmxlRWRpdG9yIH0gZnJvbSAnLi90YWJsZS1lZGl0b3InO1xuaW1wb3J0IHtcbiAgRWRpdG9yLFxuICBJdGVtVmlldyxcbiAgTWFya2Rvd25WaWV3LFxuICBOb3RpY2UsXG4gIFdvcmtzcGFjZUxlYWYsXG59IGZyb20gJ29ic2lkaWFuJztcblxuZXhwb3J0IGNvbnN0IFRhYmxlQ29udHJvbHNWaWV3VHlwZSA9ICdhZHZhbmNlZC10YWJsZXMtdG9vbGJhcic7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUNvbnRyb2xzVmlldyBleHRlbmRzIEl0ZW1WaWV3IHtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXR0aW5nczogVGFibGVFZGl0b3JQbHVnaW5TZXR0aW5ncztcblxuICBjb25zdHJ1Y3RvcihsZWFmOiBXb3Jrc3BhY2VMZWFmLCBzZXR0aW5nczogVGFibGVFZGl0b3JQbHVnaW5TZXR0aW5ncykge1xuICAgIHN1cGVyKGxlYWYpO1xuICAgIHRoaXMuc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgfVxuXG4gIHB1YmxpYyBnZXRWaWV3VHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBUYWJsZUNvbnRyb2xzVmlld1R5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGlzcGxheVRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ0FkdmFuY2VkIFRhYmxlcyc7XG4gIH1cblxuICBwdWJsaWMgZ2V0SWNvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAnc3ByZWFkc2hlZXQnO1xuICB9XG5cbiAgcHVibGljIGxvYWQoKTogdm9pZCB7XG4gICAgc3VwZXIubG9hZCgpO1xuICAgIHRoaXMuZHJhdygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkcmF3ID0gKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyRWwuY2hpbGRyZW5bMV07XG5cbiAgICBjb25zdCByb290RWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICByb290RWwuYWRkQ2xhc3MoXCJhZHZhbmNlZC10YWJsZXMtYnV0dG9uc1wiKTtcblxuICAgIHJvb3RFbC5jcmVhdGVEaXYoKS5cbiAgICAgIGNyZWF0ZVNwYW4oeyBjbHM6ICd0aXRsZScgfSkuXG4gICAgICBzZXRUZXh0KFwiQWR2YW5jZWQgVGFibGVzXCIpXG5cbiAgICBjb25zdCBuYXZIZWFkZXIgPSByb290RWwuY3JlYXRlRGl2KHsgY2xzOiAnbmF2LWhlYWRlcicgfSk7XG4gICAgY29uc3Qgcm93T25lQnRucyA9IG5hdkhlYWRlci5jcmVhdGVEaXYoeyBjbHM6ICduYXYtYnV0dG9ucy1jb250YWluZXInIH0pO1xuICAgIHJvd09uZUJ0bnMuY3JlYXRlU3Bhbih7IGNsczogJ2FkdmFuY2VkLXRhYmxlcy1yb3ctbGFiZWwnIH0pLnNldFRleHQoXCJBbGlnbjpcIik7XG4gICAgdGhpcy5kcmF3QnRuKHJvd09uZUJ0bnMsICdhbGlnbkxlZnQnLCAnbGVmdCBhbGlnbiBjb2x1bW4nLCAodGUpID0+XG4gICAgICB0ZS5sZWZ0QWxpZ25Db2x1bW4oKSxcbiAgICApO1xuICAgIHRoaXMuZHJhd0J0bihyb3dPbmVCdG5zLCAnYWxpZ25DZW50ZXInLCAnY2VudGVyIGFsaWduIGNvbHVtbicsICh0ZSkgPT5cbiAgICAgIHRlLmNlbnRlckFsaWduQ29sdW1uKCksXG4gICAgKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93T25lQnRucywgJ2FsaWduUmlnaHQnLCAncmlnaHQgYWxpZ24gY29sdW1uJywgKHRlKSA9PlxuICAgICAgdGUucmlnaHRBbGlnbkNvbHVtbigpLFxuICAgICk7XG5cbiAgICBjb25zdCByb3dUd29CdG5zID0gbmF2SGVhZGVyLmNyZWF0ZURpdih7IGNsczogJ25hdi1idXR0b25zLWNvbnRhaW5lcicgfSk7XG4gICAgcm93VHdvQnRucy5jcmVhdGVTcGFuKHsgY2xzOiAnYWR2YW5jZWQtdGFibGVzLXJvdy1sYWJlbCcgfSkuc2V0VGV4dChcIk1vdmU6XCIpO1xuICAgIHRoaXMuZHJhd0J0bihyb3dUd29CdG5zLCAnbW92ZVJvd0Rvd24nLCAnbW92ZSByb3cgZG93bicsICh0ZSkgPT5cbiAgICAgIHRlLm1vdmVSb3dEb3duKCksXG4gICAgKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93VHdvQnRucywgJ21vdmVSb3dVcCcsICdtb3ZlIHJvdyB1cCcsICh0ZSkgPT5cbiAgICAgIHRlLm1vdmVSb3dVcCgpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd1R3b0J0bnMsICdtb3ZlQ29sdW1uUmlnaHQnLCAnbW92ZSBjb2x1bW4gcmlnaHQnLCAodGUpID0+XG4gICAgICB0ZS5tb3ZlQ29sdW1uUmlnaHQoKSxcbiAgICApO1xuICAgIHRoaXMuZHJhd0J0bihyb3dUd29CdG5zLCAnbW92ZUNvbHVtbkxlZnQnLCAnbW92ZSBjb2x1bW4gbGVmdCcsICh0ZSkgPT5cbiAgICAgIHRlLm1vdmVDb2x1bW5MZWZ0KCksXG4gICAgKTtcblxuICAgIGNvbnN0IHJvd1RocmVlQnRucyA9IG5hdkhlYWRlci5jcmVhdGVEaXYoeyBjbHM6ICduYXYtYnV0dG9ucy1jb250YWluZXInIH0pO1xuICAgIHJvd1RocmVlQnRucy5jcmVhdGVTcGFuKHsgY2xzOiAnYWR2YW5jZWQtdGFibGVzLXJvdy1sYWJlbCcgfSkuc2V0VGV4dChcIkVkaXQ6XCIpO1xuICAgIHRoaXMuZHJhd0J0bihyb3dUaHJlZUJ0bnMsICdpbnNlcnRSb3cnLCAnaW5zZXJ0IHJvdyBhYm92ZScsICh0ZSkgPT5cbiAgICAgIHRlLmluc2VydFJvdygpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd1RocmVlQnRucywgJ2luc2VydENvbHVtbicsICdpbnNlcnQgY29sdW1uIGxlZnQnLCAodGUpID0+XG4gICAgICB0ZS5pbnNlcnRDb2x1bW4oKSxcbiAgICApO1xuICAgIHRoaXMuZHJhd0J0bihyb3dUaHJlZUJ0bnMsICdkZWxldGVSb3cnLCAnZGVsZXRlIHJvdycsICh0ZSkgPT5cbiAgICAgIHRlLmRlbGV0ZVJvdygpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd1RocmVlQnRucywgJ2RlbGV0ZUNvbHVtbicsICdkZWxldGUgY29sdW1uJywgKHRlKSA9PlxuICAgICAgdGUuZGVsZXRlQ29sdW1uKCksXG4gICAgKTtcblxuICAgIGNvbnN0IHJvd0ZvdXJCdG5zID0gbmF2SGVhZGVyLmNyZWF0ZURpdih7IGNsczogJ25hdi1idXR0b25zLWNvbnRhaW5lcicgfSk7XG4gICAgcm93Rm91ckJ0bnMuY3JlYXRlU3Bhbih7IGNsczogJ2FkdmFuY2VkLXRhYmxlcy1yb3ctbGFiZWwnIH0pLnNldFRleHQoXCJTb3J0L0Y6XCIpO1xuICAgIHRoaXMuZHJhd0J0bihyb3dGb3VyQnRucywgJ3NvcnRBc2MnLCAnc29ydCBieSBjb2x1bW4gYXNjZW5kaW5nJywgKHRlKSA9PlxuICAgICAgdGUuc29ydFJvd3NBc2MoKSxcbiAgICApO1xuICAgIHRoaXMuZHJhd0J0bihyb3dGb3VyQnRucywgJ3NvcnREZXNjJywgJ3NvcnQgYnkgY29sdW1uIGRlc2NlbmRpbmcnLCAodGUpID0+XG4gICAgICB0ZS5zb3J0Um93c0Rlc2MoKSxcbiAgICApO1xuICAgIHRoaXMuZHJhd0J0bihyb3dGb3VyQnRucywgJ2Zvcm11bGEnLCAnZXZhbHVhdGUgZm9ybXVsYXMnLCAodGUpID0+XG4gICAgICB0ZS5ldmFsdWF0ZUZvcm11bGFzKCksXG4gICAgKTtcblxuICAgIGNvbnN0IHJvd0ZpdmVCdG5zID0gbmF2SGVhZGVyLmNyZWF0ZURpdih7IGNsczogJ25hdi1idXR0b25zLWNvbnRhaW5lcicgfSk7XG4gICAgcm93Rml2ZUJ0bnMuY3JlYXRlU3Bhbih7IGNsczogJ2FkdmFuY2VkLXRhYmxlcy1yb3ctbGFiZWwnIH0pLnNldFRleHQoXCJNaXNjOlwiKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93Rml2ZUJ0bnMsICdjc3YnLCAnZXhwb3J0IGFzIGNzdicsICh0ZSkgPT5cbiAgICAgIHRlLmV4cG9ydENTVk1vZGFsKCksXG4gICAgKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93Rml2ZUJ0bnMsICdoZWxwJywgJ2hlbHAnLCAoKSA9PlxuICAgICAgd2luZG93Lm9wZW4oXG4gICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vdGdyb3Npbmdlci9hZHZhbmNlZC10YWJsZXMtb2JzaWRpYW4vYmxvYi9tYWluL2RvY3MvaGVscC5tZCcsXG4gICAgICApLFxuICAgICk7XG5cbiAgICBjb250YWluZXIuZW1wdHkoKTtcbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQocm9vdEVsKTtcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRyYXdCdG4gPSAoXG4gICAgcGFyZW50OiBIVE1MRGl2RWxlbWVudCxcbiAgICBpY29uTmFtZTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgZm46ICh0ZTogVGFibGVFZGl0b3IpID0+IHZvaWQsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGN1cnNvckNoZWNrID0gKHRlOiBUYWJsZUVkaXRvcik6IGJvb2xlYW4gPT4ge1xuICAgICAgaWYgKHRpdGxlID09PSAnZXZhbHVhdGUgZm9ybXVsYXMnKSB7XG4gICAgICAgIHJldHVybiB0ZS5jdXJzb3JJc0luVGFibGUoKSB8fCB0ZS5jdXJzb3JJc0luVGFibGVGb3JtdWxhKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGUuY3Vyc29ySXNJblRhYmxlKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGJ1dHRvbiA9IHBhcmVudC5jcmVhdGVEaXYoeyBjbHM6ICdhZHZhbmNlZC10YWJsZXMtYnV0dG9uIG5hdi1hY3Rpb24tYnV0dG9uJywgdGl0bGUgfSk7XG4gICAgYnV0dG9uLm9uQ2xpY2tFdmVudCgoKSA9PiB0aGlzLndpdGhURShmbiwgY3Vyc29yQ2hlY2spKTtcbiAgICBidXR0b24uYXBwZW5kQ2hpbGQoRWxlbWVudChpY29uc1tpY29uTmFtZV0pKTtcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHdpdGhURSA9IChcbiAgICBmbjogKHRlOiBUYWJsZUVkaXRvcikgPT4gdm9pZCxcbiAgICBjdXJzb3JDaGVjazogKHRlOiBUYWJsZUVkaXRvcikgPT4gYm9vbGVhbixcbiAgICBhbGVydE9uTm9UYWJsZSA9IHRydWUsXG4gICk6IHZvaWQgPT4ge1xuICAgIGxldCBlZGl0b3I6IEVkaXRvcjtcbiAgICBjb25zdCBsZWFmID0gdGhpcy5hcHAud29ya3NwYWNlLmdldE1vc3RSZWNlbnRMZWFmKCk7XG4gICAgaWYgKGxlYWYudmlldyBpbnN0YW5jZW9mIE1hcmtkb3duVmlldykge1xuICAgICAgZWRpdG9yID0gbGVhZi52aWV3LmVkaXRvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdBZHZhbmNlZCBUYWJsZXM6IFVuYWJsZSB0byBkZXRlcm1pbmUgY3VycmVudCBlZGl0b3IuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGUgPSBuZXcgVGFibGVFZGl0b3IodGhpcy5hcHAsIGxlYWYudmlldy5maWxlLCBlZGl0b3IsIHRoaXMuc2V0dGluZ3MpO1xuICAgIGlmICghY3Vyc29yQ2hlY2sodGUpKSB7XG4gICAgICBpZiAoYWxlcnRPbk5vVGFibGUpIHtcbiAgICAgICAgbmV3IE5vdGljZSgnQWR2YW5jZWQgVGFibGVzOiBDdXJzb3IgbXVzdCBiZSBpbiBhIHRhYmxlLicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZuKHRlKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFuIHN2ZyBzdHJpbmcgaW50byBhbiBIVE1MIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHN2Z1RleHQgc3ZnIGltYWdlIGFzIGEgc3RyaW5nXG4gKi9cbmNvbnN0IEVsZW1lbnQgPSAoc3ZnVGV4dDogc3RyaW5nKTogSFRNTEVsZW1lbnQgPT4ge1xuICBjb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG4gIHJldHVybiBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHN2Z1RleHQsICd0ZXh0L3htbCcpLmRvY3VtZW50RWxlbWVudDtcbn07XG4iLCJpbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJy4vaWNvbnMnO1xuaW1wb3J0IHsgZGVmYXVsdFNldHRpbmdzLCBUYWJsZUVkaXRvclBsdWdpblNldHRpbmdzIH0gZnJvbSAnLi9zZXR0aW5ncyc7XG5pbXBvcnQge1xuICBUYWJsZUNvbnRyb2xzVmlldyxcbiAgVGFibGVDb250cm9sc1ZpZXdUeXBlLFxufSBmcm9tICcuL3RhYmxlLWNvbnRyb2xzLXZpZXcnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuL3RhYmxlLWVkaXRvcic7XG5pbXBvcnQgeyBFeHRlbnNpb24sIFByZWMgfSBmcm9tICdAY29kZW1pcnJvci9zdGF0ZSc7XG5pbXBvcnQgeyBLZXlCaW5kaW5nLCBrZXltYXAgfSBmcm9tICdAY29kZW1pcnJvci92aWV3JztcbmltcG9ydCB7IEZvcm1hdFR5cGUgfSBmcm9tICdAdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMnO1xuaW1wb3J0IHtcbiAgQXBwLFxuICBFZGl0b3IsXG4gIE1hcmtkb3duVmlldyxcbiAgTm90aWNlLFxuICBQbHVnaW4sXG4gIFBsdWdpblNldHRpbmdUYWIsXG4gIFNldHRpbmcsXG59IGZyb20gJ29ic2lkaWFuJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGFibGVFZGl0b3JQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuICBwdWJsaWMgc2V0dGluZ3M6IFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3M7XG5cbiAgLy8gY21FZGl0b3JzIGlzIHVzZWQgZHVyaW5nIHVubG9hZCB0byByZW1vdmUgb3VyIGV2ZW50IGhhbmRsZXJzLlxuICBwcml2YXRlIGNtRWRpdG9yczogQ29kZU1pcnJvci5FZGl0b3JbXTtcblxuICBwcml2YXRlIHRhYmxlQ29udHJvbHNWaWV3OiBUYWJsZUNvbnRyb2xzVmlldztcblxuICBwdWJsaWMgYXN5bmMgb25sb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUubG9nKCdsb2FkaW5nIG1hcmtkb3duLXRhYmxlLWVkaXRvciBwbHVnaW4nKTtcblxuICAgIGF3YWl0IHRoaXMubG9hZFNldHRpbmdzKCk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyVmlldyhcbiAgICAgIFRhYmxlQ29udHJvbHNWaWV3VHlwZSxcbiAgICAgIChsZWFmKSA9PlxuICAgICAgICAodGhpcy50YWJsZUNvbnRyb2xzVmlldyA9IG5ldyBUYWJsZUNvbnRyb2xzVmlldyhsZWFmLCB0aGlzLnNldHRpbmdzKSksXG4gICAgKTtcblxuICAgIGFkZEljb25zKCk7XG5cbiAgICBpZiAodGhpcy5zZXR0aW5ncy5zaG93UmliYm9uSWNvbikge1xuICAgICAgdGhpcy5hZGRSaWJib25JY29uKCdzcHJlYWRzaGVldCcsICdBZHZhbmNlZCBUYWJsZXMgVG9vbGJhcicsICgpID0+IHtcbiAgICAgICAgdGhpcy50b2dnbGVUYWJsZUNvbnRyb2xzVmlldygpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5jbUVkaXRvcnMgPSBbXTtcbiAgICB0aGlzLnJlZ2lzdGVyQ29kZU1pcnJvcigoY20pID0+IHtcbiAgICAgIHRoaXMuY21FZGl0b3JzLnB1c2goY20pO1xuICAgICAgY20ub24oJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleURvd24pO1xuICAgIH0pO1xuXG4gICAgLy8gQ002IGVkaXRvciBleHRlbnNpb24gZm9yIHJlbWFwcGluZyBrZXlzXG4gICAgdGhpcy5yZWdpc3RlckVkaXRvckV4dGVuc2lvbih0aGlzLm1ha2VFZGl0b3JFeHRlbnNpb24oKSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICduZXh0LXJvdycsXG4gICAgICBuYW1lOiAnR28gdG8gbmV4dCByb3cnLFxuICAgICAgaWNvbjogJ2Fycm93ZW50ZXInLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5iaW5kRW50ZXIgJiYgIXRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICBuZXcgTm90aWNlKFxuICAgICAgICAgICAgJ0FkdmFuY2VkIFRhYmxlczogTmV4dCByb3cgYWxzbyBib3VuZCB0byBlbnRlci4gJyArXG4gICAgICAgICAgICAgICdQb3NzaWJseSBwcm9kdWNpbmcgZG91YmxlIGFjdGlvbnMuIFNlZSBBZHZhbmNlZCBUYWJsZXMgc2V0dGluZ3MuJyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRlLm5leHRSb3coKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnbmV4dC1jZWxsJyxcbiAgICAgIG5hbWU6ICdHbyB0byBuZXh0IGNlbGwnLFxuICAgICAgaWNvbjogJ2Fycm93dGFiJyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuYmluZFRhYiAmJiAhdGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgIG5ldyBOb3RpY2UoXG4gICAgICAgICAgICAnQWR2YW5jZWQgVGFibGVzOiBOZXh0IGNlbGwgYWxzbyBib3VuZCB0byB0YWIuICcgK1xuICAgICAgICAgICAgICAnUG9zc2libHkgcHJvZHVjaW5nIGRvdWJsZSBhY3Rpb25zLiBTZWUgQWR2YW5jZWQgVGFibGVzIHNldHRpbmdzLicsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0ZS5uZXh0Q2VsbCgpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdwcmV2aW91cy1jZWxsJyxcbiAgICAgIG5hbWU6ICdHbyB0byBwcmV2aW91cyBjZWxsJyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuYmluZFRhYiAmJiAhdGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgIG5ldyBOb3RpY2UoXG4gICAgICAgICAgICAnQWR2YW5jZWQgVGFibGVzOiBQcmV2aW91cyBjZWxsIGFsc28gYm91bmQgdG8gc2hpZnQrdGFiLiAnICtcbiAgICAgICAgICAgICAgJ1Bvc3NpYmx5IHByb2R1Y2luZyBkb3VibGUgYWN0aW9ucy4gU2VlIEFkdmFuY2VkIFRhYmxlcyBzZXR0aW5ncy4nLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGUucHJldmlvdXNDZWxsKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ2Zvcm1hdC10YWJsZScsXG4gICAgICBuYW1lOiAnRm9ybWF0IHRhYmxlIGF0IHRoZSBjdXJzb3InLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5mb3JtYXRUYWJsZSgpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdmb3JtYXQtYWxsLXRhYmxlcycsXG4gICAgICBuYW1lOiAnRm9ybWF0IGFsbCB0YWJsZXMgaW4gdGhpcyBmaWxlJyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgdGUuZm9ybWF0QWxsVGFibGVzKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ2luc2VydC1jb2x1bW4nLFxuICAgICAgbmFtZTogJ0luc2VydCBjb2x1bW4gYmVmb3JlIGN1cnJlbnQnLFxuICAgICAgaWNvbjogJ2luc2VydENvbHVtbicsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmluc2VydENvbHVtbigpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdpbnNlcnQtcm93JyxcbiAgICAgIG5hbWU6ICdJbnNlcnQgcm93IGJlZm9yZSBjdXJyZW50JyxcbiAgICAgIGljb246ICdpbnNlcnRSb3cnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5pbnNlcnRSb3coKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnZXNjYXBlLXRhYmxlJyxcbiAgICAgIG5hbWU6ICdNb3ZlIGN1cnNvciBvdXQgb2YgdGFibGUnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5lc2NhcGUoKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnbGVmdC1hbGlnbi1jb2x1bW4nLFxuICAgICAgbmFtZTogJ0xlZnQgYWxpZ24gY29sdW1uJyxcbiAgICAgIGljb246ICdhbGlnbkxlZnQnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5sZWZ0QWxpZ25Db2x1bW4oKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnY2VudGVyLWFsaWduLWNvbHVtbicsXG4gICAgICBuYW1lOiAnQ2VudGVyIGFsaWduIGNvbHVtbicsXG4gICAgICBpY29uOiAnYWxpZ25DZW50ZXInLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5jZW50ZXJBbGlnbkNvbHVtbigpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdyaWdodC1hbGlnbi1jb2x1bW4nLFxuICAgICAgbmFtZTogJ1JpZ2h0IGFsaWduIGNvbHVtbicsXG4gICAgICBpY29uOiAnYWxpZ25SaWdodCcsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLnJpZ2h0QWxpZ25Db2x1bW4oKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnbW92ZS1jb2x1bW4tbGVmdCcsXG4gICAgICBuYW1lOiAnTW92ZSBjb2x1bW4gbGVmdCcsXG4gICAgICBpY29uOiAnbW92ZUNvbHVtbkxlZnQnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5tb3ZlQ29sdW1uTGVmdCgpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdtb3ZlLWNvbHVtbi1yaWdodCcsXG4gICAgICBuYW1lOiAnTW92ZSBjb2x1bW4gcmlnaHQnLFxuICAgICAgaWNvbjogJ21vdmVDb2x1bW5SaWdodCcsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLm1vdmVDb2x1bW5SaWdodCgpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdtb3ZlLXJvdy11cCcsXG4gICAgICBuYW1lOiAnTW92ZSByb3cgdXAnLFxuICAgICAgaWNvbjogJ21vdmVSb3dVcCcsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLm1vdmVSb3dVcCgpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdtb3ZlLXJvdy1kb3duJyxcbiAgICAgIG5hbWU6ICdNb3ZlIHJvdyBkb3duJyxcbiAgICAgIGljb246ICdtb3ZlUm93RG93bicsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLm1vdmVSb3dEb3duKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ2RlbGV0ZS1jb2x1bW4nLFxuICAgICAgbmFtZTogJ0RlbGV0ZSBjb2x1bW4nLFxuICAgICAgaWNvbjogJ2RlbGV0ZUNvbHVtbicsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmRlbGV0ZUNvbHVtbigpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdkZWxldGUtcm93JyxcbiAgICAgIG5hbWU6ICdEZWxldGUgcm93JyxcbiAgICAgIGljb246ICdkZWxldGVSb3cnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5kZWxldGVSb3coKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnc29ydC1yb3dzLWFzY2VuZGluZycsXG4gICAgICBuYW1lOiAnU29ydCByb3dzIGFzY2VuZGluZycsXG4gICAgICBpY29uOiAnc29ydEFzYycsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLnNvcnRSb3dzQXNjKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ3NvcnQtcm93cy1kZXNjZW5kaW5nJyxcbiAgICAgIG5hbWU6ICdTb3J0IHJvd3MgZGVzY2VuZGluZycsXG4gICAgICBpY29uOiAnc29ydERlc2MnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5zb3J0Um93c0Rlc2MoKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnZXZhbHVhdGUtZm9ybXVsYXMnLFxuICAgICAgbmFtZTogJ0V2YWx1YXRlIHRhYmxlIGZvcm11bGFzJyxcbiAgICAgIGljb246ICdmb3JtdWxhJyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IChcbiAgICAgICAgY2hlY2tpbmc6IGJvb2xlYW4sXG4gICAgICAgIGVkaXRvcjogRWRpdG9yLFxuICAgICAgICB2aWV3OiBNYXJrZG93blZpZXcsXG4gICAgICApOiBib29sZWFuIHwgdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IHRlID0gbmV3IFRhYmxlRWRpdG9yKHRoaXMuYXBwLCB2aWV3LmZpbGUsIGVkaXRvciwgdGhpcy5zZXR0aW5ncyk7XG4gICAgICAgIGlmIChjaGVja2luZykge1xuICAgICAgICAgIHJldHVybiB0ZS5jdXJzb3JJc0luVGFibGUoKSB8fCB0ZS5jdXJzb3JJc0luVGFibGVGb3JtdWxhKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGUuZXZhbHVhdGVGb3JtdWxhcygpO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ3RhYmxlLWNvbnRyb2wtYmFyJyxcbiAgICAgIG5hbWU6ICdPcGVuIHRhYmxlIGNvbnRyb2xzIHRvb2xiYXInLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbJ01vZCcsICdTaGlmdCddLFxuICAgICAgICAgIGtleTogJ2QnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMudG9nZ2xlVGFibGVDb250cm9sc1ZpZXcoKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFNldHRpbmdUYWIobmV3IFRhYmxlRWRpdG9yU2V0dGluZ3NUYWIodGhpcy5hcHAsIHRoaXMpKTtcbiAgfVxuXG4gIHB1YmxpYyBvbnVubG9hZCgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygndW5sb2FkaW5nIG1hcmtkb3duLXRhYmxlLWVkaXRvciBwbHVnaW4nKTtcblxuICAgIHRoaXMuY21FZGl0b3JzLmZvckVhY2goKGNtKSA9PiB7XG4gICAgICBjbS5vZmYoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleURvd24pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gbWFrZUVkaXRvckV4dGVuc2lvbiBpcyB1c2VkIHRvIGJpbmQgVGFiIGFuZCBFbnRlciBpbiB0aGUgbmV3IENNNiBMaXZlIFByZXZpZXcgZWRpdG9yLlxuICBwcml2YXRlIHJlYWRvbmx5IG1ha2VFZGl0b3JFeHRlbnNpb24gPSAoKTogRXh0ZW5zaW9uID0+IHtcbiAgICBjb25zdCBrZXltYXBzOiBLZXlCaW5kaW5nW10gPSBbXTtcblxuICAgIGlmICh0aGlzLnNldHRpbmdzLmJpbmRFbnRlcikge1xuICAgICAga2V5bWFwcy5wdXNoKHtcbiAgICAgICAga2V5OiAnRW50ZXInLFxuICAgICAgICBydW46ICgpOiBib29sZWFuID0+XG4gICAgICAgICAgdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb25DTTYoKHRlOiBUYWJsZUVkaXRvcikgPT4gdGUubmV4dFJvdygpKSgpLFxuICAgICAgICBwcmV2ZW50RGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNldHRpbmdzLmJpbmRUYWIpIHtcbiAgICAgIGtleW1hcHMucHVzaCh7XG4gICAgICAgIGtleTogJ1RhYicsXG4gICAgICAgIHJ1bjogKCk6IGJvb2xlYW4gPT5cbiAgICAgICAgICB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbkNNNigodGU6IFRhYmxlRWRpdG9yKSA9PiB0ZS5uZXh0Q2VsbCgpKSgpLFxuICAgICAgICBzaGlmdDogKCk6IGJvb2xlYW4gPT5cbiAgICAgICAgICB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbkNNNigodGU6IFRhYmxlRWRpdG9yKSA9PlxuICAgICAgICAgICAgdGUucHJldmlvdXNDZWxsKCksXG4gICAgICAgICAgKSgpLFxuICAgICAgICBwcmV2ZW50RGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBQcmVjLm92ZXJyaWRlKGtleW1hcC5vZihrZXltYXBzKSk7XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBuZXdQZXJmb3JtVGFibGVBY3Rpb25DTTYgPVxuICAgIChmbjogKHRlOiBUYWJsZUVkaXRvcikgPT4gdm9pZCk6ICgoKSA9PiBib29sZWFuKSA9PlxuICAgICgpOiBib29sZWFuID0+IHtcbiAgICAgIGNvbnN0IGxlYWYgPSB0aGlzLmFwcC53b3Jrc3BhY2UuYWN0aXZlTGVhZjtcbiAgICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcpIHtcbiAgICAgICAgY29uc3QgdGUgPSBuZXcgVGFibGVFZGl0b3IoXG4gICAgICAgICAgdGhpcy5hcHAsXG4gICAgICAgICAgbGVhZi52aWV3LmZpbGUsXG4gICAgICAgICAgbGVhZi52aWV3LmVkaXRvcixcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0ZS5jdXJzb3JJc0luVGFibGUoKSkge1xuICAgICAgICAgIGZuKHRlKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBuZXdQZXJmb3JtVGFibGVBY3Rpb24gPVxuICAgIChmbjogKHRlOiBUYWJsZUVkaXRvcikgPT4gdm9pZCwgYWxlcnRPbk5vVGFibGUgPSB0cnVlKSA9PlxuICAgIChjaGVja2luZzogYm9vbGVhbiwgZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldyk6IGJvb2xlYW4gfCB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHRlID0gbmV3IFRhYmxlRWRpdG9yKHRoaXMuYXBwLCB2aWV3LmZpbGUsIGVkaXRvciwgdGhpcy5zZXR0aW5ncyk7XG5cbiAgICAgIGlmIChjaGVja2luZykge1xuICAgICAgICByZXR1cm4gdGUuY3Vyc29ySXNJblRhYmxlKCk7XG4gICAgICB9XG5cbiAgICAgIGZuKHRlKTtcbiAgICB9O1xuXG4gIC8vIGhhbmRsZUtleURvd24gaXMgdXNlZCB0byBiaW5kIHRoZSB0YWIgYW5kIGVudGVyIGtleXMgaW4gdGhlIGxlZ2FjeSBDTTUgZWRpdG9yLlxuICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZUtleURvd24gPSAoXG4gICAgY206IENvZGVNaXJyb3IuRWRpdG9yLFxuICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50LFxuICApOiB2b2lkID0+IHtcbiAgICBpZiAoWydUYWInLCAnRW50ZXInXS5jb250YWlucyhldmVudC5rZXkpKSB7XG4gICAgICBsZXQgZWRpdG9yOiBFZGl0b3I7XG4gICAgICBsZXQgdmlldzogTWFya2Rvd25WaWV3O1xuICAgICAgY29uc3QgYWN0aXZlTGVhZiA9IHRoaXMuYXBwLndvcmtzcGFjZS5hY3RpdmVMZWFmO1xuICAgICAgaWYgKGFjdGl2ZUxlYWYudmlldyBpbnN0YW5jZW9mIE1hcmtkb3duVmlldykge1xuICAgICAgICBlZGl0b3IgPSBhY3RpdmVMZWFmLnZpZXcuZWRpdG9yO1xuICAgICAgICB2aWV3ID0gYWN0aXZlTGVhZi52aWV3O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgICAgIGlmICghdGhpcy5zZXR0aW5ncy5iaW5kVGFiKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgIHRlLnByZXZpb3VzQ2VsbCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGUubmV4dENlbGwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgIGlmICghdGhpcy5zZXR0aW5ncy5iaW5kRW50ZXIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgdGUuZXNjYXBlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5hbHRLZXkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGUubmV4dFJvdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgLy8gQ2hlY2sgZmlyc3QgaWYgd2UgYXJlIGluIGEgdGFibGUsIGlmIHNvLCB0aGVuIGV4ZWN1dGUuXG4gICAgICBpZiAoYWN0aW9uKHRydWUsIGVkaXRvciwgdmlldykpIHtcbiAgICAgICAgYWN0aW9uKGZhbHNlLCBlZGl0b3IsIHZpZXcpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHRvZ2dsZVRhYmxlQ29udHJvbHNWaWV3ID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5hcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShUYWJsZUNvbnRyb2xzVmlld1R5cGUpO1xuICAgIGlmIChleGlzdGluZy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYXBwLndvcmtzcGFjZS5yZXZlYWxMZWFmKGV4aXN0aW5nWzBdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0UmlnaHRMZWFmKGZhbHNlKS5zZXRWaWV3U3RhdGUoe1xuICAgICAgdHlwZTogVGFibGVDb250cm9sc1ZpZXdUeXBlLFxuICAgICAgYWN0aXZlOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hcHAud29ya3NwYWNlLnJldmVhbExlYWYoXG4gICAgICB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFRhYmxlQ29udHJvbHNWaWV3VHlwZSlbMF0sXG4gICAgKTtcbiAgfTtcblxuICBwcml2YXRlIGFzeW5jIGxvYWRTZXR0aW5ncygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZXR0aW5nc09wdGlvbnMgPSBPYmplY3QuYXNzaWduKFxuICAgICAgZGVmYXVsdFNldHRpbmdzLFxuICAgICAgYXdhaXQgdGhpcy5sb2FkRGF0YSgpLFxuICAgICk7XG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBUYWJsZUVkaXRvclBsdWdpblNldHRpbmdzKHNldHRpbmdzT3B0aW9ucyk7XG4gICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGUgPSAoKTogYm9vbGVhbiA9PiAodGhpcy5hcHAgYXMgYW55KS5pc01vYmlsZTtcbn1cblxuY2xhc3MgVGFibGVFZGl0b3JTZXR0aW5nc1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpbjogVGFibGVFZGl0b3JQbHVnaW47XG5cbiAgY29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogVGFibGVFZGl0b3JQbHVnaW4pIHtcbiAgICBzdXBlcihhcHAsIHBsdWdpbik7XG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XG4gIH1cblxuICBwdWJsaWMgZGlzcGxheSgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGNvbnRhaW5lckVsIH0gPSB0aGlzO1xuICAgIGNvbnRhaW5lckVsLmVtcHR5KCk7XG5cbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdBZHZhbmNlZCBUYWJsZXMgUGx1Z2luIC0gU2V0dGluZ3MnIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnQmluZCBlbnRlciB0byB0YWJsZSBuYXZpZ2F0aW9uJylcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICAnUmVxdWlyZXMgcmVzdGFydCBvZiBPYnNpZGlhbi4gSWYgZW5hYmxlZCwgd2hlbiB0aGUgY3Vyc29yIGlzIGluIGEgdGFibGUsIGVudGVyIGFkdmFuY2VzIHRvIHRoZSBuZXh0ICcgK1xuICAgICAgICAgICdyb3cuIERpc2FibGluZyB0aGlzIGNhbiBoZWxwIGF2b2lkIGNvbmZsaWN0aW5nIHdpdGggdGFnIG9yIENKSyAnICtcbiAgICAgICAgICAnYXV0b2NvbXBsZXRpb24uIElmIGRpc2FibGluZywgYmluZCBcIkdvIHRvIC4uLlwiIGluIHRoZSBPYnNpZGlhbiBIb3RrZXlzIHNldHRpbmdzLicsXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XG4gICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5iaW5kRW50ZXIpLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmJpbmRFbnRlciA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcbiAgICAgICAgICB0aGlzLmRpc3BsYXkoKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnQmluZCB0YWIgdG8gdGFibGUgbmF2aWdhdGlvbicpXG4gICAgICAuc2V0RGVzYyhcbiAgICAgICAgJ1JlcXVpcmVzIHJlc3RhcnQgb2YgT2JzaWRpYW4uIElmIGVuYWJsZWQsIHdoZW4gdGhlIGN1cnNvciBpcyBpbiBhIHRhYmxlLCB0YWIvc2hpZnQrdGFiIG5hdmlnYXRlICcgK1xuICAgICAgICAgICdiZXR3ZWVuIGNlbGxzLiBEaXNhYmxpbmcgdGhpcyBjYW4gaGVscCBhdm9pZCBjb25mbGljdGluZyB3aXRoIHRhZyAnICtcbiAgICAgICAgICAnb3IgQ0pLIGF1dG9jb21wbGV0aW9uLiBJZiBkaXNhYmxpbmcsIGJpbmQgXCJHbyB0byAuLi5cIiBpbiB0aGUgT2JzaWRpYW4gSG90a2V5cyBzZXR0aW5ncy4nLFxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxuICAgICAgICB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuYmluZFRhYikub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuYmluZFRhYiA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcbiAgICAgICAgICB0aGlzLmRpc3BsYXkoKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnUGFkIGNlbGwgd2lkdGggdXNpbmcgc3BhY2VzJylcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICAnSWYgZW5hYmxlZCwgdGFibGUgY2VsbHMgd2lsbCBoYXZlIHNwYWNlcyBhZGRlZCB0byBtYXRjaCB0aGUgd2lkdGggb2YgdGhlICcgK1xuICAgICAgICAgICdsb25nZXN0IGNlbGwgaW4gdGhlIGNvbHVtbi4nLFxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxuICAgICAgICB0b2dnbGVcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZm9ybWF0VHlwZSA9PT0gRm9ybWF0VHlwZS5OT1JNQUwpXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZm9ybWF0VHlwZSA9IHZhbHVlXG4gICAgICAgICAgICAgID8gRm9ybWF0VHlwZS5OT1JNQUxcbiAgICAgICAgICAgICAgOiBGb3JtYXRUeXBlLldFQUs7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXkoKTtcbiAgICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdTaG93IGljb24gaW4gc2lkZWJhcicpXG4gICAgICAuc2V0RGVzYyhcbiAgICAgICAgJ0lmIGVuYWJsZWQsIGEgYnV0dG9uIHdoaWNoIG9wZW5zIHRoZSB0YWJsZSBjb250cm9scyB0b29sYmFyIHdpbGwgYmUgYWRkZWQgdG8gdGhlIE9ic2lkaWFuIHNpZGViYXIuICcgK1xuICAgICAgICAgICdUaGUgdG9vbGJhciBjYW4gYWxzbyBiZSBvcGVuZWQgd2l0aCBhIEhvdGtleS4gQ2hhbmdlcyBvbmx5IHRha2UgZWZmZWN0IG9uIHJlbG9hZC4nLFxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxuICAgICAgICB0b2dnbGVcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3Muc2hvd1JpYmJvbkljb24pXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2hvd1JpYmJvbkljb24gPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheSgpO1xuICAgICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgIGNvbnN0IGRpdiA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdkaXYnLCB7XG4gICAgICBjbHM6ICdhZHZhbmNlZC10YWJsZXMtZG9uYXRpb24nLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZG9uYXRlVGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICBkb25hdGVUZXh0LmFwcGVuZFRleHQoXG4gICAgICAnSWYgdGhpcyBwbHVnaW4gYWRkcyB2YWx1ZSBmb3IgeW91IGFuZCB5b3Ugd291bGQgbGlrZSB0byBoZWxwIHN1cHBvcnQgJyArXG4gICAgICAgICdjb250aW51ZWQgZGV2ZWxvcG1lbnQsIHBsZWFzZSB1c2UgdGhlIGJ1dHRvbnMgYmVsb3c6JyxcbiAgICApO1xuICAgIGRpdi5hcHBlbmRDaGlsZChkb25hdGVUZXh0KTtcblxuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcblxuICAgIGRpdi5hcHBlbmRDaGlsZChcbiAgICAgIGNyZWF0ZURvbmF0ZUJ1dHRvbihcbiAgICAgICAgJ2h0dHBzOi8vcGF5cGFsLm1lL3Rncm9zaW5nZXInLFxuICAgICAgICBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHBheXBhbCwgJ3RleHQveG1sJykuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgZGl2LmFwcGVuZENoaWxkKFxuICAgICAgY3JlYXRlRG9uYXRlQnV0dG9uKFxuICAgICAgICAnaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS90Z3Jvc2luZ2VyJyxcbiAgICAgICAgcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhidXlNZUFDb2ZmZWUsICd0ZXh0L3htbCcpLmRvY3VtZW50RWxlbWVudCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBjcmVhdGVEb25hdGVCdXR0b24gPSAobGluazogc3RyaW5nLCBpbWc6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgPT4ge1xuICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICBhLnNldEF0dHJpYnV0ZSgnaHJlZicsIGxpbmspO1xuICBhLmFkZENsYXNzKCdhZHZhbmNlZC10YWJsZXMtZG9uYXRlLWJ1dHRvbicpO1xuICBhLmFwcGVuZENoaWxkKGltZyk7XG4gIHJldHVybiBhO1xufTtcblxuY29uc3QgYnV5TWVBQ29mZmVlID0gYFxuPHN2ZyB3aWR0aD1cIjE1MFwiIGhlaWdodD1cIjQyXCIgdmlld0JveD1cIjAgMCAyNjAgNzNcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxwYXRoIGQ9XCJNMCAxMS42OEMwIDUuMjI5MzIgNS4yMjkzMSAwIDExLjY4IDBIMjQ4LjJDMjU0LjY1MSAwIDI1OS44OCA1LjIyOTMxIDI1OS44OCAxMS42OFY2MS4zMkMyNTkuODggNjcuNzcwNyAyNTQuNjUxIDczIDI0OC4yIDczSDExLjY4QzUuMjI5MzEgNzMgMCA2Ny43NzA3IDAgNjEuMzJWMTEuNjhaXCIgZmlsbD1cIiNGRkREMDBcIi8+XG48cGF0aCBkPVwiTTUyLjI1NjYgMjQuMDA3OEw1Mi4yMjQ2IDIzLjk4ODlMNTIuMTUwNCAyMy45NjYzQzUyLjE4MDIgMjMuOTkxNSA1Mi4yMTc2IDI0LjAwNjEgNTIuMjU2NiAyNC4wMDc4WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk01Mi43MjQ4IDI3LjM0NTdMNTIuNjg5NSAyNy4zNTU2TDUyLjcyNDggMjcuMzQ1N1pcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNNTIuMjcwMSAyNC4wMDI0QzUyLjI2NiAyNC4wMDE5IDUyLjI2MTkgMjQuMDAwOSA1Mi4yNTggMjMuOTk5NUM1Mi4yNTc4IDI0LjAwMjIgNTIuMjU3OCAyNC4wMDQ5IDUyLjI1OCAyNC4wMDc2QzUyLjI2MjQgMjQuMDA3IDUyLjI2NjYgMjQuMDA1MiA1Mi4yNzAxIDI0LjAwMjRaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XG48cGF0aCBkPVwiTTUyLjI1NzggMjQuMDA5NEg1Mi4yNjQzVjI0LjAwNTRMNTIuMjU3OCAyNC4wMDk0WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk01Mi42OTczIDI3LjMzOTRMNTIuNzUxMyAyNy4zMDg2TDUyLjc3MTQgMjcuMjk3M0w1Mi43ODk3IDI3LjI3NzhDNTIuNzU1NCAyNy4yOTI2IDUyLjcyNDEgMjcuMzEzNSA1Mi42OTczIDI3LjMzOTRaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XG48cGF0aCBkPVwiTTUyLjM0ODQgMjQuMDgxMkw1Mi4yOTU2IDI0LjAzMUw1Mi4yNTk4IDI0LjAxMTVDNTIuMjc5IDI0LjA0NTQgNTIuMzEwOCAyNC4wNzA1IDUyLjM0ODQgMjQuMDgxMlpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNMzkuMDY4NCA1Ni40NjlDMzkuMDI2MiA1Ni40ODcyIDM4Ljk4OTMgNTYuNTE1OCAzOC45NjA5IDU2LjU1MkwzOC45OTQzIDU2LjUzMDZDMzkuMDE2OSA1Ni41MDk4IDM5LjA0ODkgNTYuNDg1MyAzOS4wNjg0IDU2LjQ2OVpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNNDYuNzgwMiA1NC45NTE4QzQ2Ljc4MDIgNTQuOTA0MSA0Ni43NTY5IDU0LjkxMjkgNDYuNzYyNiA1NS4wODI2QzQ2Ljc2MjYgNTUuMDY4NyA0Ni43NjgzIDU1LjA1NDkgNDYuNzcwOCA1NS4wNDE3QzQ2Ljc3MzkgNTUuMDExNSA0Ni43NzY0IDU0Ljk4MiA0Ni43ODAyIDU0Ljk1MThaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XG48cGF0aCBkPVwiTTQ1Ljk4NDQgNTYuNDY5QzQ1Ljk0MjIgNTYuNDg3MiA0NS45MDUzIDU2LjUxNTggNDUuODc3IDU2LjU1Mkw0NS45MTAzIDU2LjUzMDZDNDUuOTMyOSA1Ni41MDk4IDQ1Ljk2NDkgNTYuNDg1MyA0NS45ODQ0IDU2LjQ2OVpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNMzMuNjMwNyA1Ni44MzAxQzMzLjU5ODcgNTYuODAyMyAzMy41NTk1IDU2Ljc4NCAzMy41MTc2IDU2Ljc3NzNDMzMuNTUxNSA1Ni43OTM3IDMzLjU4NTUgNTYuODEgMzMuNjA4MSA1Ni44MjI2TDMzLjYzMDcgNTYuODMwMVpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNMzIuNDExOCA1NS42NTk4QzMyLjQwNjggNTUuNjEwMyAzMi4zOTE2IDU1LjU2MjQgMzIuMzY3MiA1NS41MTlDMzIuMzg0NSA1NS41NjQyIDMyLjM5OSA1NS42MTA0IDMyLjQxMDYgNTUuNjU3M0wzMi40MTE4IDU1LjY1OThaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XG48cGF0aCBkPVwiTTQwLjYyMyAzNC43MjIxQzM4Ljk0NDkgMzUuNDQwNSAzNy4wNDA0IDM2LjI1NTEgMzQuNTcyMiAzNi4yNTUxQzMzLjUzOTcgMzYuMjUzMSAzMi41MTIyIDM2LjExMTQgMzEuNTE3NiAzNS44MzRMMzMuMjI0NyA1My4zNjA1QzMzLjI4NTEgNTQuMDkzIDMzLjYxODggNTQuNzc2MSAzNC4xNTk1IDU1LjI3MzlDMzQuNzAwMyA1NS43NzE4IDM1LjQwODUgNTYuMDQ4MiAzNi4xNDM1IDU2LjA0OEMzNi4xNDM1IDU2LjA0OCAzOC41NjQgNTYuMTczNyAzOS4zNzE2IDU2LjE3MzdDNDAuMjQwOSA1Ni4xNzM3IDQyLjg0NzQgNTYuMDQ4IDQyLjg0NzQgNTYuMDQ4QzQzLjU4MjMgNTYuMDQ4IDQ0LjI5MDQgNTUuNzcxNiA0NC44MzEgNTUuMjczN0M0NS4zNzE2IDU0Ljc3NTkgNDUuNzA1MiA1NC4wOTI5IDQ1Ljc2NTYgNTMuMzYwNUw0Ny41OTQgMzMuOTkzQzQ2Ljc3NjkgMzMuNzE0IDQ1Ljk1MjMgMzMuNTI4NiA0NS4wMjI3IDMzLjUyODZDNDMuNDE1IDMzLjUyNzkgNDIuMTE5NiAzNC4wODE3IDQwLjYyMyAzNC43MjIxWlwiIGZpbGw9XCJ3aGl0ZVwiLz5cbjxwYXRoIGQ9XCJNMjYuMjM0NCAyNy4yNDQ5TDI2LjI2MzMgMjcuMjcxOUwyNi4yODIxIDI3LjI4MzJDMjYuMjY3NiAyNy4yNjg4IDI2LjI1MTYgMjcuMjU1OSAyNi4yMzQ0IDI3LjI0NDlaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XG48cGF0aCBkPVwiTTU1LjQ5MDYgMjUuNjI3NEw1NS4yMzM2IDI0LjMzMDdDNTUuMDAyOSAyMy4xNjczIDU0LjQ3OTMgMjIuMDY4IDUzLjI4NTEgMjEuNjQ3NUM1Mi45MDI0IDIxLjUxMyA1Mi40NjggMjEuNDU1MiA1Mi4xNzQ1IDIxLjE3NjhDNTEuODgxIDIwLjg5ODMgNTEuNzk0MyAyMC40NjU5IDUxLjcyNjQgMjAuMDY0OUM1MS42MDA3IDE5LjMyODkgNTEuNDgyNSAxOC41OTIzIDUxLjM1MzcgMTcuODU3NUM1MS4yNDI0IDE3LjIyNTkgNTEuMTU0NCAxNi41MTYzIDUwLjg2NDcgMTUuOTM2OEM1MC40ODc2IDE1LjE1ODYgNDkuNzA1IDE0LjcwMzYgNDguOTI2OSAxNC40MDI1QzQ4LjUyODIgMTQuMjUzNyA0OC4xMjEzIDE0LjEyNzggNDcuNzA4MiAxNC4wMjU0QzQ1Ljc2NDIgMTMuNTEyNSA0My43MjAyIDEzLjMyNCA0MS43MjAyIDEzLjIxNjVDMzkuMzE5NyAxMy4wODQgMzYuOTEyOCAxMy4xMjM5IDM0LjUxOCAxMy4zMzU5QzMyLjczNTUgMTMuNDk4MSAzMC44NTgxIDEzLjY5NDIgMjkuMTY0MiAxNC4zMTA4QzI4LjU0NTEgMTQuNTM2NCAyNy45MDcxIDE0LjgwNzMgMjcuNDM2NCAxNS4yODU2QzI2Ljg1ODcgMTUuODczMyAyNi42NzAyIDE2Ljc4MjEgMjcuMDkxOSAxNy41MTVDMjcuMzkxNyAxOC4wMzU0IDI3Ljg5OTYgMTguNDAzMSAyOC40MzgyIDE4LjY0NjNDMjkuMTM5OCAxOC45NTk3IDI5Ljg3MjYgMTkuMTk4MiAzMC42MjQyIDE5LjM1NzhDMzIuNzE3MiAxOS44MjA0IDM0Ljg4NSAyMC4wMDIxIDM3LjAyMzMgMjAuMDc5NEMzOS4zOTMyIDIwLjE3NSA0MS43NjcgMjAuMDk3NSA0NC4xMjU2IDE5Ljg0NzRDNDQuNzA4OSAxOS43ODMzIDQ1LjI5MTEgMTkuNzA2NCA0NS44NzIzIDE5LjYxNjhDNDYuNTU2OCAxOS41MTE4IDQ2Ljk5NjEgMTguNjE2OCA0Ni43OTQzIDE3Ljk5MzNDNDYuNTUzIDE3LjI0NzkgNDUuOTA0NCAxNi45NTg3IDQ1LjE3MDkgMTcuMDcxMkM0NS4wNjI4IDE3LjA4ODIgNDQuOTU1MyAxNy4xMDM5IDQ0Ljg0NzIgMTcuMTE5Nkw0NC43NjkyIDE3LjEzMUM0NC41MjA4IDE3LjE2MjQgNDQuMjcyMyAxNy4xOTE3IDQ0LjAyMzggMTcuMjE5QzQzLjUxMDUgMTcuMjc0MyA0Mi45OTU5IDE3LjMxOTUgNDIuNDgwMSAxNy4zNTQ3QzQxLjMyNDkgMTcuNDM1MiA0MC4xNjY1IDE3LjQ3MjIgMzkuMDA4OCAxNy40NzQxQzM3Ljg3MTIgMTcuNDc0MSAzNi43MzI5IDE3LjQ0MjEgMzUuNTk3OCAxNy4zNjczQzM1LjA3OTkgMTcuMzMzMyAzNC41NjMyIDE3LjI5MDIgMzQuMDQ3OCAxNy4yMzc4QzMzLjgxMzQgMTcuMjEzMyAzMy41Nzk2IDE3LjE4NzUgMzMuMzQ1OCAxNy4xNTg2TDMzLjEyMzMgMTcuMTMwM0wzMy4wNzQ5IDE3LjEyMzRMMzIuODQ0MiAxNy4wOTAxQzMyLjM3MjggMTcuMDE5MSAzMS45MDE0IDE2LjkzNzQgMzEuNDM1IDE2LjgzODdDMzEuMzg4IDE2LjgyODMgMzEuMzQ1OSAxNi44MDIxIDMxLjMxNTcgMTYuNzY0NUMzMS4yODU2IDE2LjcyNjkgMzEuMjY5MSAxNi42ODAxIDMxLjI2OTEgMTYuNjMxOUMzMS4yNjkxIDE2LjU4MzcgMzEuMjg1NiAxNi41MzY5IDMxLjMxNTcgMTYuNDk5M0MzMS4zNDU5IDE2LjQ2MTcgMzEuMzg4IDE2LjQzNTYgMzEuNDM1IDE2LjQyNTFIMzEuNDQzOEMzMS44NDggMTYuMzM5IDMyLjI1NTMgMTYuMjY1NSAzMi42NjM4IDE2LjIwMTRDMzIuOCAxNi4xOCAzMi45MzY2IDE2LjE1OSAzMy4wNzM2IDE2LjEzODVIMzMuMDc3NEMzMy4zMzMyIDE2LjEyMTUgMzMuNTkwMyAxNi4wNzU3IDMzLjg0NDggMTYuMDQ1NUMzNi4wNTk1IDE1LjgxNTEgMzguMjg3NCAxNS43MzY2IDQwLjUxMjggMTUuODEwNEM0MS41OTMzIDE1Ljg0MTkgNDIuNjczMSAxNS45MDUzIDQzLjc0ODUgMTYuMDE0N0M0My45Nzk4IDE2LjAzODYgNDQuMjA5OCAxNi4wNjM3IDQ0LjQzOTkgMTYuMDkyQzQ0LjUyNzkgMTYuMTAyNyA0NC42MTY1IDE2LjExNTMgNDQuNzA1MSAxNi4xMjU5TDQ0Ljg4MzYgMTYuMTUxN0M0NS40MDQgMTYuMjI5MiA0NS45MjE3IDE2LjMyMzMgNDYuNDM2NyAxNi40MzM5QzQ3LjE5OTcgMTYuNTk5OSA0OC4xNzk2IDE2LjY1MzkgNDguNTE5IDE3LjQ4OThDNDguNjI3MSAxNy43NTUxIDQ4LjY3NjEgMTguMDQ5OSA0OC43MzU5IDE4LjMyODNMNDguODExOSAxOC42ODM0QzQ4LjgxMzkgMTguNjg5OCA0OC44MTU0IDE4LjY5NjMgNDguODE2MyAxOC43MDI5QzQ4Ljk5NjEgMTkuNTQwOSA0OS4xNzYgMjAuMzc5IDQ5LjM1NjIgMjEuMjE3QzQ5LjM2OTQgMjEuMjc4OSA0OS4zNjk3IDIxLjM0MjkgNDkuMzU3MSAyMS40MDQ5QzQ5LjM0NDUgMjEuNDY2OSA0OS4zMTkzIDIxLjUyNTcgNDkuMjgyOSAyMS41Nzc2QzQ5LjI0NjYgMjEuNjI5NCA0OS4yIDIxLjY3MzIgNDkuMTQ2IDIxLjcwNjJDNDkuMDkyIDIxLjczOTIgNDkuMDMxNyAyMS43NjA4IDQ4Ljk2OSAyMS43Njk1SDQ4Ljk2NEw0OC44NTQgMjEuNzg0Nkw0OC43NDUzIDIxLjc5OUM0OC40MDA5IDIxLjg0MzkgNDguMDU2IDIxLjg4NTggNDcuNzEwNyAyMS45MjQ3QzQ3LjAzMDcgMjIuMDAyMiA0Ni4zNDk2IDIyLjA2OTMgNDUuNjY3NCAyMi4xMjU5QzQ0LjMxMTkgMjIuMjM4NiA0Mi45NTM2IDIyLjMxMjUgNDEuNTkyNyAyMi4zNDc3QzQwLjg5OTIgMjIuMzY2MiA0MC4yMDU5IDIyLjM3NDggMzkuNTEyOSAyMi4zNzM1QzM2Ljc1NDMgMjIuMzcxMyAzMy45OTgxIDIyLjIxMSAzMS4yNTc4IDIxLjg5MzNDMzAuOTYxMSAyMS44NTgxIDMwLjY2NDUgMjEuODIwNCAzMC4zNjc4IDIxLjc4MjFDMzAuNTk3OCAyMS44MTE2IDMwLjIwMDYgMjEuNzU5NCAzMC4xMjAyIDIxLjc0ODFDMjkuOTMxNiAyMS43MjE3IDI5Ljc0MzEgMjEuNjk0MyAyOS41NTQ1IDIxLjY2NThDMjguOTIxNiAyMS41NzA5IDI4LjI5MjQgMjEuNDU0IDI3LjY2MDcgMjEuMzUxNUMyNi44OTcxIDIxLjIyNTggMjYuMTY2NyAyMS4yODg3IDI1LjQ3NiAyMS42NjU4QzI0LjkwOSAyMS45NzYgMjQuNDUwMSAyMi40NTE4IDI0LjE2MDUgMjMuMDI5N0MyMy44NjI2IDIzLjY0NTYgMjMuNzczOSAyNC4zMTYzIDIzLjY0MDcgMjQuOTc4MUMyMy41MDc0IDI1LjYzOTkgMjMuMyAyNi4zNTIxIDIzLjM3ODYgMjcuMDMxNUMyMy41NDc3IDI4LjQ5NzkgMjQuNTcyOCAyOS42ODk1IDI2LjA0NzMgMjkuOTU2QzI3LjQzNDUgMzAuMjA3NCAyOC44MjkyIDMwLjQxMTEgMzAuMjI3NiAzMC41ODQ2QzM1LjcyMTIgMzEuMjU3NCA0MS4yNzExIDMxLjMzNzkgNDYuNzgxOCAzMC44MjQ3QzQ3LjIzMDUgMzAuNzgyOCA0Ny42Nzg3IDMwLjczNzEgNDguMTI2MiAzMC42ODc2QzQ4LjI2NiAzMC42NzIzIDQ4LjQwNzQgMzAuNjg4NCA0OC41NDAxIDMwLjczNDhDNDguNjcyOSAzMC43ODEyIDQ4Ljc5MzYgMzAuODU2NiA0OC44OTM0IDMwLjk1NTdDNDguOTkzMiAzMS4wNTQ4IDQ5LjA2OTUgMzEuMTc0OSA0OS4xMTY5IDMxLjMwNzNDNDkuMTY0MiAzMS40Mzk3IDQ5LjE4MTQgMzEuNTgxMSA0OS4xNjcgMzEuNzIwOUw0OS4wMjc1IDMzLjA3NzNDNDguNzQ2MyAzNS44MTgxIDQ4LjQ2NTIgMzguNTU4NyA0OC4xODQgNDEuMjk5QzQ3Ljg5MDcgNDQuMTc2OSA0Ny41OTU1IDQ3LjA1NDUgNDcuMjk4NCA0OS45MzE5QzQ3LjIxNDYgNTAuNzQyMiA0Ny4xMzA4IDUxLjU1MjQgNDcuMDQ3IDUyLjM2MjRDNDYuOTY2NiA1My4xNiA0Ni45NTUyIDUzLjk4MjcgNDYuODAzOCA1NC43NzA5QzQ2LjU2NDkgNTYuMDEwMyA0NS43MjU4IDU2Ljc3MTUgNDQuNTAxNSA1Ny4wNDk5QzQzLjM3OTggNTcuMzA1MiA0Mi4yMzM5IDU3LjQzOTIgNDEuMDgzNiA1Ny40NDk3QzM5LjgwODMgNTcuNDU2NiAzOC41MzM2IDU3LjQgMzcuMjU4MyA1Ny40MDY5QzM1Ljg5NyA1Ny40MTQ1IDM0LjIyOTUgNTcuMjg4NyAzMy4xNzg2IDU2LjI3NTZDMzIuMjU1MyA1NS4zODU2IDMyLjEyNzcgNTMuOTkyMSAzMi4wMDIgNTIuNzg3MkMzMS44MzQ0IDUxLjE5MiAzMS42NjgyIDQ5LjU5NzEgMzEuNTAzNiA0OC4wMDIzTDMwLjU3OTYgMzkuMTM0NEwyOS45ODE5IDMzLjM5NjZDMjkuOTcxOCAzMy4zMDE3IDI5Ljk2MTggMzMuMjA4IDI5Ljk1MjQgMzMuMTEyNUMyOS44ODA3IDMyLjQyOCAyOS4zOTYxIDMxLjc1OCAyOC42MzI0IDMxLjc5MjZDMjcuOTc4OCAzMS44MjE1IDI3LjIzNTkgMzIuMzc3MSAyNy4zMTI1IDMzLjExMjVMMjcuNzU1NyAzNy4zNjY0TDI4LjY3MiA0Ni4xNjU3QzI4LjkzMzEgNDguNjY1MiAyOS4xOTM1IDUxLjE2NSAyOS40NTMzIDUzLjY2NTNDMjkuNTAzNiA1NC4xNDQyIDI5LjU1MDcgNTQuNjI0NCAyOS42MDM1IDU1LjEwMzRDMjkuODkwOCA1Ny43MjA1IDMxLjg4OTUgNTkuMTMxIDM0LjM2NDYgNTkuNTI4MkMzNS44MTAyIDU5Ljc2MDcgMzcuMjkxIDU5LjgwODUgMzguNzU4IDU5LjgzMjRDNDAuNjM4NiA1OS44NjI2IDQyLjUzOCA1OS45MzQ4IDQ0LjM4NzcgNTkuNTk0MkM0Ny4xMjg3IDU5LjA5MTQgNDkuMTg1MyA1Ny4yNjExIDQ5LjQ3ODggNTQuNDIyQzQ5LjU2MjYgNTMuNjAyNCA0OS42NDY0IDUyLjc4MjYgNDkuNzMwMiA1MS45NjI2QzUwLjAwODggNDkuMjUwNyA1MC4yODcxIDQ2LjUzODYgNTAuNTY0OSA0My44MjYzTDUxLjQ3MzcgMzQuOTY0MUw1MS44OTA0IDMwLjkwMjZDNTEuOTExMiAzMC43MDEyIDUxLjk5NjIgMzAuNTExOCA1Mi4xMzMgMzAuMzYyNUM1Mi4yNjk3IDMwLjIxMzIgNTIuNDUwOSAzMC4xMTE5IDUyLjY0OTcgMzAuMDczNkM1My40MzM1IDI5LjkyMDggNTQuMTgyNyAyOS42NiA1NC43NDAyIDI5LjA2MzVDNTUuNjI3NyAyOC4xMTM4IDU1LjgwNDMgMjYuODc1NiA1NS40OTA2IDI1LjYyNzRaTTI2LjAwNzEgMjYuNTAzNUMyNi4wMTkgMjYuNDk3OSAyNS45OTcgMjYuNjAwMyAyNS45ODc2IDI2LjY0ODFDMjUuOTg1NyAyNi41NzU4IDI1Ljk4OTUgMjYuNTExNyAyNi4wMDcxIDI2LjUwMzVaTTI2LjA4MzEgMjcuMDkxOEMyNi4wODk0IDI3LjA4NzQgMjYuMTA4MyAyNy4xMTI2IDI2LjEyNzggMjcuMTQyOEMyNi4wOTgyIDI3LjExNTEgMjYuMDc5NCAyNy4wOTQ0IDI2LjA4MjUgMjcuMDkxOEgyNi4wODMxWk0yNi4xNTc5IDI3LjE5MDVDMjYuMTg1IDI3LjIzNjQgMjYuMTk5NCAyNy4yNjUzIDI2LjE1NzkgMjcuMTkwNVYyNy4xOTA1Wk0yNi4zMDgyIDI3LjMxMjVIMjYuMzExOUMyNi4zMTE5IDI3LjMxNjkgMjYuMzE4OCAyNy4zMjEzIDI2LjMyMTQgMjcuMzI1N0MyNi4zMTcyIDI3LjMyMDggMjYuMzEyNiAyNy4zMTY0IDI2LjMwNzUgMjcuMzEyNUgyNi4zMDgyWk01Mi42MTMyIDI3LjEzMDJDNTIuMzMxNyAyNy4zOTc5IDUxLjkwNzQgMjcuNTIyNCA1MS40ODgyIDI3LjU4NDZDNDYuNzg2OCAyOC4yODIzIDQyLjAxNjkgMjguNjM1NSAzNy4yNjQgMjguNDc5NkMzMy44NjI0IDI4LjM2MzMgMzAuNDk2NyAyNy45ODU2IDI3LjEyOSAyNy41MDk4QzI2Ljc5OSAyNy40NjMzIDI2LjQ0MTQgMjcuNDAzIDI2LjIxNDUgMjcuMTU5N0MyNS43ODcxIDI2LjcwMDkgMjUuOTk3IDI1Ljc3NyAyNi4xMDgzIDI1LjIyMjZDMjYuMjEwMSAyNC43MTQ4IDI2LjQwNSAyNC4wMzc4IDI3LjAwOSAyMy45NjU2QzI3Ljk1MTggMjMuODU0OSAyOS4wNDY2IDI0LjI1MjggMjkuOTc5NCAyNC4zOTQyQzMxLjEwMjMgMjQuNTY1NiAzMi4yMjk1IDI0LjcwMjggMzMuMzYwOSAyNC44MDU5QzM4LjE4OTIgMjUuMjQ1OSA0My4wOTg2IDI1LjE3NzQgNDcuOTA1NiAyNC41MzM3QzQ4Ljc4MTcgMjQuNDE2IDQ5LjY1NDggMjQuMjc5MiA1MC41MjQ2IDI0LjEyMzNDNTEuMjk5NiAyMy45ODQ0IDUyLjE1ODggMjMuNzIzNiA1Mi42MjcxIDI0LjUyNjJDNTIuOTQ4MiAyNS4wNzMgNTIuOTkxIDI1LjgwNDYgNTIuOTQxMyAyNi40MjI1QzUyLjkyNiAyNi42OTE3IDUyLjgwODQgMjYuOTQ0OCA1Mi42MTI2IDI3LjEzMDJINTIuNjEzMlpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk04MS4xMzAyIDQwLjE5MjlDODAuODU1NiA0MC43MTY5IDgwLjQ3ODEgNDEuMTczMiA3OS45OTc4IDQxLjU2MDRDNzkuNTE3NSA0MS45NDc5IDc4Ljk1NzEgNDIuMjYzMyA3OC4zMTY2IDQyLjUwNjJDNzcuNjc2MSA0Mi43NDk3IDc3LjAzMTUgNDIuOTEzMSA3Ni4zODM1IDQyLjk5NjRDNzUuNzM1MiA0My4wNzk5IDc1LjEwNiA0My4wNzI3IDc0LjQ5NjMgNDIuOTczNUM3My44ODYzIDQyLjg3NDkgNzMuMzY3NCA0Mi42NzM3IDcyLjk0MDggNDIuMzY5NUw3My40MjE0IDM3LjM3NzlDNzMuODYzMyAzNy4yMjYxIDc0LjQxOTcgMzcuMDcwMyA3NS4wOTA5IDM2LjkxMDdDNzUuNzYxOSAzNi43NTEzIDc2LjQ1MiAzNi42MzcxIDc3LjE2MTMgMzYuNTY4OUM3Ny44NzA1IDM2LjUwMDMgNzguNTQxMiAzNi41MDg0IDc5LjE3NDQgMzYuNTkxN0M3OS44MDY4IDM2LjY3NTMgODAuMzA2NSAzNi44NzY1IDgwLjY3MjUgMzcuMTk1OEM4MC44NzA3IDM3LjM3OCA4MS4wMzg3IDM3LjU3NTQgODEuMTc2IDM3Ljc4ODNDODEuMzEzIDM4LjAwMTEgODEuMzk2OSAzOC4yMjE0IDgxLjQyNzYgMzguNDQ5M0M4MS41MDM3IDM5LjA4NzUgODEuNDA0NyAzOS42Njg3IDgxLjEzMDIgNDAuMTkyOVpNNzQuMTUzIDI5LjU2MDJDNzQuNDczNCAyOS4zNjI3IDc0Ljg1ODUgMjkuMTg3NyA3NS4zMDgzIDI5LjAzNTZDNzUuNzU4MSAyOC44ODQxIDc2LjIxOTUgMjguNzc3NCA3Ni42OTIzIDI4LjcxNjdDNzcuMTY0OCAyOC42NTYyIDc3LjYyNjIgMjguNjQ4MSA3OC4wNzYzIDI4LjY5MzhDNzguNTI1OCAyOC43Mzk1IDc4LjkyMjggMjguODY0NyA3OS4yNjU5IDI5LjA2OTdDNzkuNjA4OSAyOS4yNzUxIDc5Ljg2NDMgMjkuNTcxNCA4MC4wMzIgMjkuOTU4NkM4MC4xOTk3IDMwLjM0NjQgODAuMjQ1NiAzMC44MzY1IDgwLjE2OTMgMzEuNDI5QzgwLjEwODMgMzEuOTAwMSA3OS45MjExIDMyLjI5OTEgNzkuNjA4OSAzMi42MjU2Qzc5LjI5NjMgMzIuOTUyNiA3OC45MTQ3IDMzLjIyNTkgNzguNDY1MiAzMy40NDYyQzc4LjAxNTQgMzMuNjY2OCA3Ny41Mzg4IDMzLjg0MTUgNzcuMDM1NiAzMy45NzAyQzc2LjUzMjEgMzQuMDk5NyA3Ni4wNDc3IDM0LjE5NDkgNzUuNTgyOCAzNC4yNTUzQzc1LjExNzYgMzQuMzE2MyA3NC43MTM3IDM0LjM1NDUgNzQuMzcwNiAzNC4zNjkyQzc0LjAyNzMgMzQuMzg0NSA3My44MDIxIDM0LjM5MjEgNzMuNjk1NiAzNC4zOTIxTDc0LjE1MyAyOS41NjAyWk04My42MDA3IDM2Ljk2NzZDODMuMzU2NiAzNi40MzYxIDgzLjAyODcgMzUuOTY4OSA4Mi42MTcyIDM1LjU2NThDODIuMjA1NCAzNS4xNjMzIDgxLjcxNyAzNC44NzA5IDgxLjE1MzEgMzQuNjg4NUM4MS4zOTY5IDM0LjQ5MSA4MS42MzcxIDM0LjE3OTUgODEuODczNyAzMy43NTM5QzgyLjEwOTkgMzMuMzI4OCA4Mi4zMTE5IDMyLjg2NSA4Mi40Nzk2IDMyLjM2MzZDODIuNjQ3NCAzMS44NjE5IDgyLjc2MiAzMS4zNTcgODIuODIyOSAzMC44NDc4QzgyLjg4MzYgMzAuMzM4OSA4Mi44NjA3IDI5LjkwMiA4Mi43NTQ0IDI5LjUzN0M4Mi40OTQ3IDI4LjYyNTYgODIuMDg3IDI3LjkxMTQgODEuNTMwMyAyNy4zOTQ2QzgwLjk3MzQgMjYuODc4MiA4MC4zMjU3IDI2LjUyMTEgNzkuNTg2IDI2LjMyMzNDNzguODQ2MiAyNi4xMjY0IDc4LjAzMDQgMjYuMDg0MiA3Ny4xMzgzIDI2LjE5ODFDNzYuMjQ2MiAyNi4zMTIgNzUuMzM0NyAyNi41MzYxIDc0LjQwNDkgMjYuODcwNEM3NC40MDQ5IDI2Ljc5NDYgNzQuNDEyNCAyNi43MTQ4IDc0LjQyNzggMjYuNjMxMkM3NC40NDI2IDI2LjU0OCA3NC40NTA0IDI2LjQ2MDQgNzQuNDUwNCAyNi4zNjlDNzQuNDUwNCAyNi4xNDExIDc0LjMzNjEgMjUuOTQzOSA3NC4xMDc0IDI1Ljc3NjVDNzMuODc4NyAyNS42MDkzIDczLjYxNTUgMjUuNTEwNyA3My4zMTgzIDI1LjQ4MDFDNzMuMDIwOSAyNS40NSA3Mi43MzEgMjUuNTE0MiA3Mi40NDg5IDI1LjY3MzhDNzIuMTY2NSAyNS44MzM0IDcxLjk3MjEgMjYuMTI2NCA3MS44NjU2IDI2LjU1MTFDNzEuNzQzNCAyNy45MTg5IDcxLjYyMTUgMjkuMzM5OCA3MS40OTk2IDMwLjgxMzRDNzEuMzc3NCAzMi4yODc1IDcxLjI0OCAzMy43NzY3IDcxLjExMDcgMzUuMjgxMkM3MC45NzM1IDM2Ljc4NTUgNzAuODM2MiAzOC4yNzg0IDcwLjY5ODkgMzkuNzU5OEM3MC41NjE2IDQxLjI0MTQgNzAuNDI0NCA0Mi42NjU5IDcwLjI4NzEgNDQuMDMzM0M3MC4zMzMgNDQuNDQzNiA3MC40NDczIDQ0Ljc2MjkgNzAuNjMwNCA0NC45OTA3QzcwLjgxMzMgNDUuMjE4OSA3MS4wMjY4IDQ1LjM1NTYgNzEuMjcwOSA0NS40MDFDNzEuNTE0NyA0NS40NDY3IDcxLjc3MDQgNDUuNDA0NSA3Mi4wMzcxIDQ1LjI3NTVDNzIuMzAzOCA0NS4xNDY5IDcyLjUzNjUgNDQuOTIyMiA3Mi43MzUgNDQuNjAzMkM3My4zNDQ3IDQ0LjkzNzUgNzQuMDMxMSA0NS4xNTQxIDc0Ljc5MzggNDUuMjUzQzc1LjU1NjEgNDUuMzUxNiA3Ni4zMjk4IDQ1LjM1MTYgNzcuMTE1NyA0NS4yNTNDNzcuOTAwNyA0NS4xNTQxIDc4LjY3NDcgNDQuOTY4MiA3OS40Mzc0IDQ0LjY5NDNDODAuMTk5NyA0NC40MjExIDgwLjg5MzYgNDQuMDc5IDgxLjUxOSA0My42NjlDODIuMTQ0MSA0My4yNTg2IDgyLjY3MDMgNDIuNzkxMSA4My4wOTc1IDQyLjI2NzFDODMuNTI0NCA0MS43NDI2IDgzLjgwNjUgNDEuMTc2NyA4My45NDM3IDQwLjU2OTFDODQuMDgxIDM5Ljk0NiA4NC4xMTkgMzkuMzIzMSA4NC4wNTgxIDM4LjdDODMuOTk3MSAzOC4wNzcxIDgzLjg0NDUgMzcuNSA4My42MDA3IDM2Ljk2NzZaXCIgZmlsbD1cIiMwRDBDMjNcIi8+XG48cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTA1LjkxNSA0OS4wMDE3QzEwNS44MzIgNDkuNTAzMSAxMDUuNzEzIDUwLjAzMTEgMTA1LjU2MSA1MC41ODZDMTA1LjQwOCA1MS4xNDAzIDEwNS4yMjkgNTEuNjQ1OCAxMDUuMDIzIDUyLjEwMThDMTA0LjgxOCA1Mi41NTc1IDEwNC41ODkgNTIuOTI1NiAxMDQuMzM3IDUzLjIwN0MxMDQuMDg1IDUzLjQ4OCAxMDMuODE1IDUzLjYwNiAxMDMuNTI1IDUzLjU2MDZDMTAzLjI5NiA1My41Mjk3IDEwMy4xNTEgNTMuMzg1NCAxMDMuMDkxIDUzLjEyNzRDMTAzLjAyOSA1Mi44Njg2IDEwMy4wMjkgNTIuNTQ5NyAxMDMuMDkxIDUyLjE3QzEwMy4xNTEgNTEuNzkwMSAxMDMuMjY5IDUxLjM2MDcgMTAzLjQ0NSA1MC44ODIxQzEwMy42MiA1MC40MDM1IDEwMy44MzQgNDkuOTI4NCAxMDQuMDg1IDQ5LjQ1NzdDMTA0LjMzNyA0OC45ODY0IDEwNC42MjMgNDguNTM0NyAxMDQuOTQzIDQ4LjEwMTVDMTA1LjI2NCA0Ny42Njg2IDEwNS41OTkgNDcuMzA3NSAxMDUuOTUgNDcuMDE4OUMxMDYuMDI2IDQ3LjExIDEwNi4wNiA0Ny4zMzc4IDEwNi4wNTMgNDcuNzAyOEMxMDYuMDQ1IDQ4LjA2NzQgMTA1Ljk5OSA0OC41MDA2IDEwNS45MTUgNDkuMDAxN1pNMTEzLjY3IDM5LjEwOTdDMTEzLjQ2NCAzOC44ODE5IDExMy4yMTMgMzguNzUyOSAxMTIuOTE1IDM4LjcyMjNDMTEyLjYxOCAzOC42OTE5IDExMi4zMTcgMzguODU5IDExMi4wMTIgMzkuMjIzN0MxMTEuODEzIDM5LjU4ODMgMTExLjU2MiAzOS45Mzc5IDExMS4yNTcgNDAuMjcyMkMxMTAuOTUyIDQwLjYwNjcgMTEwLjYzNSA0MC45MTAzIDExMC4zMDcgNDEuMTgzOUMxMDkuOTggNDEuNDU3MiAxMDkuNjY3IDQxLjY5MzEgMTA5LjM3IDQxLjg5MDNDMTA5LjA3MiA0Mi4wODgxIDEwOC44NCA0Mi4yMzI0IDEwOC42NzIgNDIuMzIzNUMxMDguNjExIDQxLjgzNzQgMTA4LjU3NiA0MS4zMTMyIDEwOC41NjkgNDAuNzUwN0MxMDguNTYxIDQwLjE4ODYgMTA4LjU3MyAzOS42MTkgMTA4LjYwMyAzOS4wNDE1QzEwOC42NDkgMzguMjIwOSAxMDguNzQ0IDM3LjM5MyAxMDguODg5IDM2LjU1N0MxMDkuMDM0IDM1LjcyMTMgMTA5LjI0NCAzNC45MDA3IDEwOS41MTggMzQuMDk1MUMxMDkuNTE4IDMzLjY3IDEwOS40MTkgMzMuMzI0MiAxMDkuMjIxIDMzLjA1ODJDMTA5LjAyMiAzMi43OTI0IDEwOC43ODIgMzIuNjI1IDEwOC41IDMyLjU1NjdDMTA4LjIxOCAzMi40ODg1IDEwNy45MjkgMzIuNTI2NCAxMDcuNjMxIDMyLjY3MDdDMTA3LjMzNCAzMi44MTUzIDEwNy4wNzggMzMuMDc3NSAxMDYuODY1IDMzLjQ1NjlDMTA2LjY4MiAzMy45NTg2IDEwNi40NzIgMzQuNTIwNyAxMDYuMjM2IDM1LjE0MzZDMTA1Ljk5OSAzNS43NjY3IDEwNS43MzIgMzYuNDAxMiAxMDUuNDM1IDM3LjA0NjlDMTA1LjEzOCAzNy42OTMxIDEwNC44MDYgMzguMzE5NyAxMDQuNDQgMzguOTI3M0MxMDQuMDc0IDM5LjUzNTQgMTAzLjY3NCA0MC4wNzUgMTAzLjIzOSA0MC41NDU3QzEwMi44MDQgNDEuMDE2OCAxMDIuMzMxIDQxLjM4NTQgMTAxLjgyMSA0MS42NTEyQzEwMS4zMSA0MS45MTcyIDEwMC43NTcgNDIuMDM0OSAxMDAuMTYyIDQyLjAwNDVDOTkuODg3NiA0MS45Mjg1IDk5LjY4OTMgNDEuNzIzNSA5OS41Njc1IDQxLjM4ODlDOTkuNDQ1MyA0MS4wNTQ5IDk5LjM3MyA0MC42MzY4IDk5LjM1MDQgNDAuMTM1NEM5OS4zMjc1IDM5LjYzNCA5OS4zNTA0IDM5LjA4MzEgOTkuNDE4OSAzOC40ODI4Qzk5LjQ4NzcgMzcuODgyOCA5OS41NzkxIDM3LjI4NjMgOTkuNjkzNCAzNi42OTM4Qzk5LjgwNzggMzYuMTAxIDk5LjkzMzcgMzUuNTM4OSAxMDAuMDcxIDM1LjAwNzFDMTAwLjIwOCAzNC40NzUzIDEwMC4zMzcgMzQuMDI2OCAxMDAuNDYgMzMuNjYyMkMxMDAuNjQzIDMzLjIyMTggMTAwLjY0MyAzMi44NTI5IDEwMC40NiAzMi41NTY3QzEwMC4yNzcgMzIuMjYwNCAxMDAuMDI1IDMyLjA2MzEgOTkuNzA1IDMxLjk2NEM5OS4zODQ2IDMxLjg2NTQgOTkuMDQ4OSAzMS44Njk0IDk4LjY5ODMgMzEuOTc1NUM5OC4zNDc0IDMyLjA4MTkgOTguMDk1OCAzMi4zMTczIDk3Ljk0MzUgMzIuNjgyQzk3LjY4NCAzMy4zMDU0IDk3LjQ0NzUgMzQuMDA0IDk3LjIzNDIgMzQuNzc5Qzk3LjAyMDYgMzUuNTUzOSA5Ni44NDkxIDM2LjM1NTggOTYuNzE5NyAzNy4xODM2Qzk2LjU4OTYgMzguMDEyMSA5Ni41MTcxIDM4LjgzMjcgOTYuNTAyIDM5LjY0NTZDOTYuNTAxMSAzOS42OTg1IDk2LjUwMzcgMzkuNzQ4OCA5Ni41MDM0IDM5LjgwMTRDOTYuMTcwOSA0MC42ODQ4IDk1Ljg1NCA0MS4zNTI1IDk1LjU1MyA0MS43OTkyQzk1LjE2NDEgNDIuMzc3IDk0LjcyNTMgNDIuNjI3NyA5NC4yMzc1IDQyLjU1MTNDOTQuMDIzNiA0Mi40NjAzIDkzLjg4MzIgNDIuMjQ3NyA5My44MTQ3IDQxLjkxMzJDOTMuNzQ1MyA0MS41NzkyIDkzLjcyMjcgNDEuMTY4OSA5My43NDUzIDQwLjY4MjJDOTMuNzY4OCA0MC4xOTY0IDkzLjgyNiAzOS42NDU2IDkzLjkxNzEgMzkuMDI5OUM5NC4wMDkxIDM4LjQxNDYgOTQuMTIyOSAzNy43NzY0IDk0LjI2MDEgMzcuMTE1NEM5NC4zOTc3IDM2LjQ1NDEgOTQuNTQyNSAzNS43ODk5IDk0LjY5NDkgMzUuMTIxQzk0Ljg0NzIgMzQuNDUyNSA5NC45ODQ1IDMzLjgyMTggOTUuMTA3IDMzLjIyOTFDOTUuMDkxNiAzMi42OTczIDk0LjkzNTIgMzIuMjkxIDk0LjYzNzcgMzIuMDA5N0M5NC4zNDA1IDMxLjcyODkgOTMuOTI0NyAzMS42MTg3IDkzLjM5MTMgMzEuNjc5MUM5My4wMjUzIDMxLjgzMTIgOTIuNzU0MiAzMi4wMjkgOTIuNTc5IDMyLjI3MTlDOTIuNDAzNCAzMi41MTQ4IDkyLjI2MjMgMzIuODI2NSA5Mi4xNTU4IDMzLjIwNjJDOTIuMDk0NiAzMy40MDQgOTIuMDAzMiAzMy43OTkgOTEuODgxMyAzNC4zOTE4QzkxLjc1OTEgMzQuOTg0IDkxLjYwMyAzNS42NjQ0IDkxLjQxMjMgMzYuNDMxNUM5MS4yMjE3IDM3LjE5OTIgOTAuOTk2NyAzOC4wMDA1IDkwLjczNzYgMzguODM2MkM5MC40NzgxIDM5LjY3MTkgOTAuMTg4NSA0MC40MjgzIDg5Ljg2ODQgNDEuMTA0MUM4OS41NDggNDEuNzgwMSA4OS4xOTcyIDQyLjMyMzUgODguODE2MSA0Mi43MzM4Qzg4LjQzNDggNDMuMTQzOCA4OC4wMjMgNDMuMzExMyA4Ny41ODA3IDQzLjIzNTJDODcuMzM2NiA0My4xODk1IDg3LjE4MDUgNDIuOTM4OCA4Ny4xMTIgNDIuNDgzMUM4Ny4wNDMyIDQyLjAyNzEgODcuMDMxOSA0MS40NjUzIDg3LjA3NzUgNDAuNzk2NEM4Ny4xMjMzIDQwLjEyNzkgODcuMjE0OCAzOS4zOTQ2IDg3LjM1MiAzOC41OTcxQzg3LjQ4OTMgMzcuNzk5MyA4Ny42MyAzNy4wNDM0IDg3Ljc3NTIgMzYuMzI4OUM4Ny45MiAzNS42MTQ5IDg4LjA1MzUgMzQuOTg0IDg4LjE3NTYgMzQuNDM3MkM4OC4yOTc1IDMzLjg5MDEgODguMzgxNCAzMy41MjU0IDg4LjQyNzIgMzMuMzQzM0M4OC40MjcyIDMyLjkwMjYgODguMzI3NyAzMi41NDk1IDg4LjEyOTggMzIuMjgzMkM4Ny45MzEzIDMyLjAxNzggODcuNjkxMyAzMS44NTAzIDg3LjQwOTIgMzEuNzgxOEM4Ny4xMjY4IDMxLjcxMzYgODYuODM3MiAzMS43NTE0IDg2LjU0IDMxLjg5NTdDODYuMjQyNiAzMi4wNDAzIDg1Ljk4NzIgMzIuMzAyNiA4NS43NzM2IDMyLjY4MkM4NS42OTczIDMzLjA5MjMgODUuNTk4IDMzLjU2NzQgODUuNDc2MSAzNC4xMDY3Qzg1LjM1MzkgMzQuNjQ1OSA4NS4yMzYxIDM1LjIwMDYgODUuMTIxOCAzNS43NzA1Qzg1LjAwNzQgMzYuMzQwNCA4NC45MDAzIDM2Ljg5ODggODQuODAxNCAzNy40NDU5Qzg0LjcwMjEgMzcuOTkzIDg0LjYyOTkgMzguNDcxNiA4NC41ODQgMzguODgxOUM4NC41NTM2IDM5LjIwMDggODQuNTE5IDM5LjU5MjMgODQuNDgxMyA0MC4wNTU2Qzg0LjQ0MyA0MC41MTk0IDg0LjQyMzggNDEuMDA5MiA4NC40MjM4IDQxLjUyNTdDODQuNDIzOCA0Mi4wNDI3IDg0LjQ2MTggNDIuNTU1NCA4NC41Mzg1IDQzLjA2NDNDODQuNjE0NSA0My41NzM1IDg0Ljc1MTggNDQuMDQwOCA4NC45NSA0NC40NjU5Qzg1LjE0ODIgNDQuODkxNSA4NS40MjY1IDQ1LjI0MDggODUuNzg1MiA0NS41MTQ0Qzg2LjE0MzMgNDUuNzg3OSA4Ni41OTcyIDQ1LjkzOTcgODcuMTQ2MyA0NS45NzA0Qzg3LjcxMDEgNDYuMDAwNSA4OC4yMDIgNDUuOTU5MSA4OC42MjE3IDQ1Ljg0NDlDODkuMDQxIDQ1LjczMSA4OS40MjIxIDQ1LjU1MjMgODkuNzY1NCA0NS4zMDkxQzkwLjEwODQgNDUuMDY2NSA5MC40MjEgNDQuNzc3NiA5MC43MDMzIDQ0LjQ0M0M5MC45ODUxIDQ0LjEwOTEgOTEuMjYzNyA0My43NDQ0IDkxLjUzODMgNDMuMzQ5MUM5MS43OTc0IDQzLjkyNjkgOTIuMTMyOSA0NC4zNzQ4IDkyLjU0NDcgNDQuNjk0QzkyLjk1NjUgNDUuMDEzIDkzLjM5MTMgNDUuMjAzMiA5My44NDg2IDQ1LjI2MzdDOTQuMzA2IDQ1LjMyNDEgOTQuNzcxNSA0NS4yNjAyIDk1LjI0NDIgNDUuMDY5OUM5NS43MTY3IDQ0Ljg4MDMgOTYuMTQzNiA0NC41NTczIDk2LjUyNTIgNDQuMTAxMkM5Ni43NzYyIDQzLjgyMTYgOTcuMDEzMSA0My41MDM4IDk3LjIzNTQgNDMuMTUyNUM5Ny4zMjk3IDQzLjMxNyA5Ny40MzAxIDQzLjQ3NTggOTcuNTQzIDQzLjYyMjRDOTcuOTE2OCA0NC4xMDkxIDk4LjQyNCA0NC40NDMgOTkuMDY0NSA0NC42MjU1Qzk5Ljc1MDYgNDQuODA4IDEwMC40MjEgNDQuODM4NiAxMDEuMDc3IDQ0LjcxNjlDMTAxLjczMyA0NC41OTU0IDEwMi4zNTggNDQuMzc0OCAxMDIuOTUzIDQ0LjA1NTlDMTAzLjU0OCA0My43MzY2IDEwNC4xMDEgNDMuMzUzMiAxMDQuNjEyIDQyLjkwNDdDMTA1LjEyMiA0Mi40NTY1IDEwNS41NjggNDEuOTg5NSAxMDUuOTUgNDEuNTAyOEMxMDUuOTM0IDQxLjg1MjQgMTA1LjkyNyA0Mi4xODMyIDEwNS45MjcgNDIuNDk0NEMxMDUuOTI3IDQyLjgwNjEgMTA1LjkxOSA0My4xNDM4IDEwNS45MDQgNDMuNTA4OEMxMDUuMTQxIDQ0LjA0MDggMTA0LjQyMSA0NC42NzkgMTAzLjc0MiA0NS40MjMzQzEwMy4wNjQgNDYuMTY3NiAxMDIuNDY5IDQ2Ljk2MTYgMTAxLjk1OCA0Ny44MDUxQzEwMS40NDcgNDguNjQ4MyAxMDEuMDQ3IDQ5LjUwMzEgMTAwLjc1NyA1MC4zNjkxQzEwMC40NjcgNTEuMjM1NyAxMDAuMzI2IDUyLjA0NDUgMTAwLjMzNCA1Mi43OTY5QzEwMC4zNDEgNTMuNTQ5IDEwMC41MjEgNTQuMjA2IDEwMC44NzEgNTQuNzY4MUMxMDEuMjIyIDU1LjMzMDYgMTAxLjc5NCA1NS43MzMxIDEwMi41ODcgNTUuOTc2M0MxMDMuNDExIDU2LjIzNDggMTA0LjEzNSA1Ni4yNDIgMTA0Ljc2IDU1Ljk5OTFDMTA1LjM4NiA1NS43NTU5IDEwNS45MzEgNTUuMzUzMSAxMDYuMzk2IDU0Ljc5MUMxMDYuODYxIDU0LjIyODkgMTA3LjI0MiA1My41NDkgMTA3LjU0IDUyLjc1MTJDMTA3LjgzNyA1MS45NTM0IDEwOC4wNzMgNTEuMTIxNSAxMDguMjQ5IDUwLjI1NTVDMTA4LjQyNCA0OS4zODk0IDEwOC41MzUgNDguNTM3OSAxMDguNTggNDcuNzAyOEMxMDguNjI2IDQ2Ljg2NjggMTA4LjYyNiA0Ni4xMjE5IDEwOC41OCA0NS40Njg3QzEwOS44OTIgNDQuOTIxOSAxMTAuOTY3IDQ0LjIzMDUgMTExLjgwNiA0My4zOTQ1QzExMi42NDUgNDIuNTU5NCAxMTMuMzM4IDQxLjY3NzggMTEzLjg4NyA0MC43NTA3QzExNC4wNTUgNDAuNTIyOSAxMTQuMTEyIDQwLjI0OTMgMTE0LjA1OSAzOS45MzA0QzExNC4wMDYgMzkuNjExMSAxMTMuODc2IDM5LjMzNzYgMTEzLjY3IDM5LjEwOTdaXCIgZmlsbD1cIiMwRDBDMjNcIi8+XG48cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTQyLjUzIDM3LjY1MTVDMTQyLjU3NSAzNy4zMDIyIDE0Mi42NDQgMzYuOTMzNSAxNDIuNzM1IDM2LjU0NkMxNDIuODI3IDM2LjE1ODUgMTQyLjk0MSAzNS43ODIzIDE0My4wNzkgMzUuNDE3N0MxNDMuMjE2IDM1LjA1MzEgMTQzLjM3NiAzNC43Mzc5IDE0My41NTkgMzQuNDcxOEMxNDMuNzQyIDM0LjIwNjEgMTQzLjkzNyAzNC4wMTYxIDE0NC4xNDIgMzMuOTAxOUMxNDQuMzQ4IDMzLjc4ODMgMTQ0LjU1OCAzMy43OTk1IDE0NC43NzEgMzMuOTM2QzE0NSAzNC4wNzMxIDE0NS4xNDEgMzQuMzYxNyAxNDUuMTk1IDM0LjgwMjFDMTQ1LjI0OCAzNS4yNDMzIDE0NS4xOTUgMzUuNzE0MSAxNDUuMDM0IDM2LjIxNTVDMTQ0Ljg3NCAzNi43MTcyIDE0NC41ODggMzcuMTg3OSAxNDQuMTc3IDM3LjYyODZDMTQzLjc2NSAzOC4wNjk2IDE0My4yMDggMzguMzU3OSAxNDIuNTA3IDM4LjQ5NDdDMTQyLjQ3NiAzOC4yODI0IDE0Mi40ODQgMzguMDAxMSAxNDIuNTMgMzcuNjUxNVpNMTUwLjQ1NiAzOC41ODU3QzE1MC4yMDQgMzguNTEwMyAxNDkuOTY0IDM4LjUwMjUgMTQ5LjczNSAzOC41NjMyQzE0OS41MDYgMzguNjIzOSAxNDkuMzYxIDM4Ljc4MzUgMTQ5LjMwMSAzOS4wNDJDMTQ5LjE3OCAzOS41MjgxIDE0OC45ODQgNDAuMDI1OCAxNDguNzE3IDQwLjUzNDdDMTQ4LjQ1IDQxLjA0MzkgMTQ4LjEyMiA0MS41MjYyIDE0Ny43MzQgNDEuOTgyMkMxNDcuMzQ1IDQyLjQzOCAxNDYuOTA2IDQyLjg0MDggMTQ2LjQxOCA0My4xOTAxQzE0NS45MyA0My41Mzk3IDE0NS40MTkgNDMuNzkwNCAxNDQuODg2IDQzLjk0MjJDMTQ0LjM1MSA0NC4xMDk2IDE0My45MSA0NC4xMjg0IDE0My41NTkgNDMuOTk5MUMxNDMuMjA4IDQzLjg3MDUgMTQyLjkzIDQzLjY0OTggMTQyLjcyNCA0My4zMzg0QzE0Mi41MTggNDMuMDI3IDE0Mi4zNjkgNDIuNjUwOCAxNDIuMjc4IDQyLjIxMDFDMTQyLjE4NiA0MS43Njk0IDE0Mi4xMzMgNDEuMzEzNyAxNDIuMTE4IDQwLjg0MjRDMTQyLjk4NyA0MC45MDM0IDE0My43NjEgNDAuNzQ3OCAxNDQuNDQgNDAuMzc1MUMxNDUuMTE4IDQwLjAwMzIgMTQ1LjY5NCAzOS41MDkgMTQ2LjE2NyAzOC44OTM3QzE0Ni42MzkgMzguMjc4NCAxNDYuOTk4IDM3LjU4NyAxNDcuMjQyIDM2LjgxOTVDMTQ3LjQ4NSAzNi4wNTI0IDE0Ny42MjMgMzUuMjg4NyAxNDcuNjUzIDM0LjUyODhDMTQ3LjY2OSAzMy44MTQ2IDE0Ny41NjIgMzMuMjEwOCAxNDcuMzMzIDMyLjcxNjlDMTQ3LjEwNSAzMi4yMjMzIDE0Ni43OTYgMzEuODM5IDE0Ni40MDcgMzEuNTY1OEMxNDYuMDE4IDMxLjI5MjIgMTQ1LjU3MiAzMS4xMzI2IDE0NS4wNjkgMzEuMDg3MkMxNDQuNTY2IDMxLjA0MTUgMTQ0LjA1NCAzMS4xMSAxNDMuNTM2IDMxLjI5MjJDMTQyLjkxIDMxLjUwNSAxNDIuMzgxIDMxLjg1MDYgMTQxLjk0NiAzMi4zMjk0QzE0MS41MTIgMzIuODA4IDE0MS4xNDkgMzMuMzYyOSAxNDAuODYgMzMuOTkzM0MxNDAuNTcgMzQuNjIzOSAxNDAuMzQxIDM1LjMwMzggMTQwLjE3MyAzNi4wMzNDMTQwLjAwNSAzNi43NjI2IDEzOS44ODMgMzcuNDgwNiAxMzkuODA3IDM4LjE4NzNDMTM5LjczOSAzOC44MjE0IDEzOS43MDIgMzkuNDI3OCAxMzkuNjg5IDQwLjAxM0MxMzkuNjU3IDQwLjA4NzQgMTM5LjYyNSA0MC4xNTg4IDEzOS41OSA0MC4yMzgzQzEzOS4zNTQgNDAuNzc4MiAxMzkuMDc5IDQxLjMwNjIgMTM4Ljc2NiA0MS44MjI2QzEzOC40NTQgNDIuMzM5NCAxMzguMTA3IDQyLjc3MjUgMTM3LjcyNiA0My4xMjE4QzEzNy4zNDQgNDMuNDcxNCAxMzYuOTQ4IDQzLjU5MjkgMTM2LjUzNiA0My40ODY1QzEzNi4yOTIgNDMuNDI2IDEzNi4xNTkgNDMuMTQ0NCAxMzYuMTM2IDQyLjY0MzNDMTM2LjExMyA0Mi4xNDE2IDEzNi4xMzkgNDEuNTE4NyAxMzYuMjE2IDQwLjc3NDFDMTM2LjI5MiA0MC4wMjk4IDEzNi4zOCAzOS4yMjM5IDEzNi40NzkgMzguMzU3OUMxMzYuNTc4IDM3LjQ5MTggMTM2LjYyOCAzNi42NjQgMTM2LjYyOCAzNS44NzM3QzEzNi42MjggMzUuMTg5OCAxMzYuNDk4IDM0LjUzMjkgMTM2LjIzOSAzMy45MDE5QzEzNS45NzkgMzMuMjcxOCAxMzUuNjI1IDMyLjc0NzMgMTM1LjE3NSAzMi4zMjk0QzEzNC43MjUgMzEuOTExMyAxMzQuMjAzIDMxLjYzNCAxMzMuNjA4IDMxLjQ5NzVDMTMzLjAxMyAzMS4zNjA1IDEzMi4zNzMgMzEuNDUxOCAxMzEuNjg3IDMxLjc3MDhDMTMxIDMyLjA5IDEzMC40NTUgMzIuNTM4MiAxMzAuMDUxIDMzLjExNTdDMTI5LjY0NyAzMy42OTM0IDEyOS4yNzcgMzQuMzAwOSAxMjguOTQyIDM0LjkzOTFDMTI4LjgxOSAzNC40NTI4IDEyOC42NDEgMzQuMDAxMSAxMjguNDA0IDMzLjU4M0MxMjguMTY3IDMzLjE2NTEgMTI3Ljg3OCAzMi44MDA1IDEyNy41MzUgMzIuNDg4OEMxMjcuMTkxIDMyLjE3NzYgMTI2LjgwNiAzMS45MzQ0IDEyNi4zOCAzMS43NTk1QzEyNS45NTMgMzEuNTg1MSAxMjUuNTAyIDMxLjQ5NzUgMTI1LjAzIDMxLjQ5NzVDMTI0LjU3MiAzMS40OTc1IDEyNC4xNDkgMzEuNTg1MSAxMjMuNzYgMzEuNzU5NUMxMjMuMzcxIDMxLjkzNDQgMTIzLjAxNyAzMi4xNTgzIDEyMi42OTYgMzIuNDMxOEMxMjIuMzc2IDMyLjcwNTYgMTIyLjA4NyAzMy4wMTMgMTIxLjgyNyAzMy4zNTUxQzEyMS41NjggMzMuNjk2OSAxMjEuMzM5IDM0LjAzNTIgMTIxLjE0MSAzNC4zNjkyQzEyMS4xMSAzMy45NzQyIDEyMS4wNzYgMzMuNjI4NiAxMjEuMDM4IDMzLjMzMkMxMjEgMzMuMDM1OSAxMjAuOTMxIDMyLjc4NTIgMTIwLjgzMiAzMi41ODAxQzEyMC43MzMgMzIuMzc0OCAxMjAuNTkyIDMyLjIxOTMgMTIwLjQwOSAzMi4xMTI5QzEyMC4yMjYgMzIuMDA2NyAxMTkuOTY3IDMxLjk1MzIgMTE5LjYzMiAzMS45NTMyQzExOS40NjQgMzEuOTUzMiAxMTkuMjk2IDMxLjk4NzQgMTE5LjEyOCAzMi4wNTU2QzExOC45NiAzMi4xMjQxIDExOC44MTEgMzIuMjE5MyAxMTguNjgyIDMyLjM0MDdDMTE4LjU1MiAzMi40NjI3IDExOC40NTMgMzIuNjEwNSAxMTguMzg1IDMyLjc4NTJDMTE4LjMxNiAzMi45NTk4IDExOC4yOTcgMzMuMTYxNCAxMTguMzI3IDMzLjM4OTJDMTE4LjM0MiAzMy41NTY2IDExOC4zODUgMzMuNzU3NiAxMTguNDUzIDMzLjk5MzNDMTE4LjUyMiAzNC4yMjg5IDExOC41ODcgMzQuNTM2OSAxMTguNjQ4IDM0LjkxNjNDMTE4LjcwOCAzNS4yOTYyIDExOC43NTggMzUuNzU2IDExOC43OTYgMzYuMjk1M0MxMTguODM0IDM2LjgzNDkgMTE4Ljg0NiAzNy40OTU5IDExOC44MzEgMzguMjc4NEMxMTguODE1IDM5LjA2MTEgMTE4Ljc1OCAzOS45NzYzIDExOC42NTkgNDEuMDI0OEMxMTguNTYgNDIuMDczMyAxMTguNDAzIDQzLjI4OSAxMTguMTkgNDQuNjcxNEMxMTguMTYgNDQuOTkwNyAxMTguMjgyIDQ1LjI0OTIgMTE4LjU1NiA0NS40NDY3QzExOC44MzEgNDUuNjQzOSAxMTkuMTQzIDQ1Ljc1NzggMTE5LjQ5NCA0NS43ODg1QzExOS44NDUgNDUuODE4OCAxMjAuMTc3IDQ1Ljc1NzggMTIwLjQ4OSA0NS42MDYzQzEyMC44MDIgNDUuNDUzOSAxMjAuOTgxIDQ1LjE4ODIgMTIxLjAyNyA0NC44MDg1QzEyMS4wNzIgNDQuMDk0MyAxMjEuMTYgNDMuMzM0NyAxMjEuMjkgNDIuNTI5QzEyMS40MTkgNDEuNzI0IDEyMS41NzkgNDAuOTI2MiAxMjEuNzcgNDAuMTM1OUMxMjEuOTYxIDM5LjM0NiAxMjIuMTc4IDM4LjU5MzggMTIyLjQyMiAzNy44NzkzQzEyMi42NjYgMzcuMTY1MSAxMjIuOTM3IDM2LjUzNDcgMTIzLjIzNCAzNS45ODc2QzEyMy41MzIgMzUuNDQwNSAxMjMuODQgMzUuMDAzOSAxMjQuMTYxIDM0LjY3NzFDMTI0LjQ4MSAzNC4zNTA0IDEyNC44MTYgMzQuMTg3IDEyNS4xNjcgMzQuMTg3QzEyNS41OTQgMzQuMTg3IDEyNS45MjYgMzQuMzgwNSAxMjYuMTYyIDM0Ljc2NzlDMTI2LjM5OCAzNS4xNTU3IDEyNi41NjYgMzUuNjUzNiAxMjYuNjY2IDM2LjI2MDlDMTI2Ljc2NSAzNi44NjkgMTI2LjgxIDM3LjUzNDEgMTI2LjgwMyAzOC4yNTU1QzEyNi43OTUgMzguOTc3MyAxMjYuNzY1IDM5LjY3MjQgMTI2LjcxMSA0MC4zNDFDMTI2LjY1OCA0MS4wMDk4IDEyNi41OTcgNDEuNjA2IDEyNi41MjggNDIuMTMwM0MxMjYuNDYgNDIuNjU0NSAxMjYuNDEgNDMuMDE1NyAxMjYuMzggNDMuMjEyOUMxMjYuMzggNDMuNTYyNSAxMjYuNTEzIDQzLjgzOTUgMTI2Ljc4IDQ0LjA0NDhDMTI3LjA0NiA0NC4yNDk4IDEyNy4zNDQgNDQuMzcxNiAxMjcuNjcyIDQ0LjQwOTVDMTI4IDQ0LjQ0NzYgMTI4LjMwOSA0NC4zODY2IDEyOC41OTggNDQuMjI3QzEyOC44ODggNDQuMDY3NCAxMjkuMDU2IDQzLjc5ODIgMTI5LjEwMiA0My40MTc5QzEyOS4yNTQgNDIuMzI0IDEyOS40NjQgNDEuMjI2NCAxMjkuNzMxIDQwLjEyNDdDMTI5Ljk5NyAzOS4wMjMgMTMwLjMwMyAzOC4wMzU1IDEzMC42NDYgMzcuMTYxNkMxMzAuOTg5IDM2LjI4NzggMTMxLjM3IDM1LjU3MzUgMTMxLjc5IDM1LjAxODlDMTMyLjIwOSAzNC40NjQ2IDEzMi42NTUgMzQuMTg3IDEzMy4xMjggMzQuMTg3QzEzMy4zNzEgMzQuMTg3IDEzMy41NTkgMzQuMzU0NCAxMzMuNjg4IDM0LjY4ODRDMTMzLjgxOCAzNS4wMjI3IDEzMy44ODMgMzUuNDc4NCAxMzMuODgzIDM2LjA1NTlDMTMzLjg4MyAzNi40ODE1IDEzMy44NDggMzYuOTE4NCAxMzMuNzggMzcuMzY2NkMxMzMuNzExIDM3LjgxNDggMTMzLjYzMSAzOC4yNzg0IDEzMy41NCAzOC43NTY5QzEzMy40NDggMzkuMjM1OCAxMzMuMzY4IDM5LjcyNTYgMTMzLjI5OSA0MC4yMjdDMTMzLjIzMSA0MC43Mjg3IDEzMy4xOTYgNDEuMjUyNyAxMzMuMTk2IDQxLjc5OThDMTMzLjE5NiA0Mi4xNzk3IDEzMy4yMzUgNDIuNjIwNCAxMzMuMzExIDQzLjEyMThDMTMzLjM4NyA0My42MjI5IDEzMy41MzIgNDQuMDk4MyAxMzMuNzQ1IDQ0LjU0NjJDMTMzLjk1OSA0NC45OTQ3IDEzNC4yNTIgNDUuMzc0NCAxMzQuNjI2IDQ1LjY4NThDMTM1IDQ1Ljk5NzMgMTM1LjQ3NiA0Ni4xNTMxIDEzNi4wNTYgNDYuMTUzMUMxMzYuOTI1IDQ2LjE1MzEgMTM3LjY5NSA0NS45NjY5IDEzOC4zNjYgNDUuNTk0N0MxMzkuMDM3IDQ1LjIyMjYgMTM5LjYxMyA0NC43MzY1IDE0MC4wOTMgNDQuMTM2MkMxNDAuMTE4IDQ0LjEwNDcgMTQwLjE0MSA0NC4wNzExIDE0MC4xNjUgNDQuMDM5OUMxNDAuMjAyIDQ0LjEyODcgMTQwLjIzNSA0NC4yMjI3IDE0MC4yNzYgNDQuMzA3MUMxNDAuNjA0IDQ0Ljk3NTYgMTQxLjA1IDQ1LjQ5MjEgMTQxLjYxNSA0NS44NTdDMTQyLjE3OCA0Ni4yMjE2IDE0Mi44NDIgNDYuNDIyOSAxNDMuNjA1IDQ2LjQ2MTFDMTQ0LjM2NyA0Ni40OTg3IDE0NS4xOTggNDYuMzU4MSAxNDYuMDk4IDQ2LjAzOTJDMTQ2Ljc2OSA0NS43OTYgMTQ3LjM1MiA0NS40OTIxIDE0Ny44NDggNDUuMTI3NUMxNDguMzQzIDQ0Ljc2MjggMTQ4Ljc4OSA0NC4zMTg0IDE0OS4xODYgNDMuNzk0MUMxNDkuNTgzIDQzLjI2OTkgMTQ5Ljk0NSA0Mi42NjU4IDE1MC4yNzMgNDEuOTgyMkMxNTAuNjAxIDQxLjI5ODEgMTUwLjkzMiA0MC41MTU5IDE1MS4yNjggMzkuNjM0MkMxNTEuMzI5IDM5LjM5MTYgMTUxLjI3MiAzOS4xNzUxIDE1MS4wOTcgMzguOTg0OEMxNTAuOTIxIDM4Ljc5NTEgMTUwLjcwOCAzOC42NjIxIDE1MC40NTYgMzguNTg1N1pcIiBmaWxsPVwiIzBEMEMyM1wiLz5cbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNjIuODg3IDM2LjA0MzRDMTYyLjgxIDM2LjQ5MTggMTYyLjcwNyAzNi45ODYgMTYyLjU3OCAzNy41MjVDMTYyLjQ0OCAzOC4wNjQ2IDE2Mi4yODQgMzguNjIzIDE2Mi4wODYgMzkuMjAwNEMxNjEuODg4IDM5Ljc3NzkgMTYxLjY0NCA0MC4yOTg0IDE2MS4zNTQgNDAuNzYxNkMxNjEuMDY0IDQxLjIyNTQgMTYwLjczMyA0MS41OTM1IDE2MC4zNTkgNDEuODY3MUMxNTkuOTg1IDQyLjE0MDYgMTU5LjU1NSA0Mi4yNTQ2IDE1OS4wNjYgNDIuMjA4OUMxNTguODIyIDQyLjE3ODggMTU4LjYzNSA0Mi4wMTE3IDE1OC41MDYgNDEuNzA3NUMxNTguMzc2IDQxLjQwMzggMTU4LjMwOCA0MS4wMTYxIDE1OC4zIDQwLjU0NUMxNTguMjkyIDQwLjA3NDMgMTU4LjMzNCAzOS41NTc1IDE1OC40MjYgMzguOTk1MUMxNTguNTE3IDM4LjQzMzMgMTU4LjY1OCAzNy44ODIxIDE1OC44NDkgMzcuMzQyNkMxNTkuMDQgMzYuODAzNiAxNTkuMjcyIDM2LjMwNTYgMTU5LjU0NyAzNS44NDk2QzE1OS44MjEgMzUuMzkzOSAxNjAuMTM4IDM1LjA0MDUgMTYwLjQ5NiAzNC43ODk4QzE2MC44NTQgMzQuNTM5MSAxNjEuMjQ3IDM0LjQyMTcgMTYxLjY3NCAzNC40MzY1QzE2Mi4xMDEgMzQuNDUxOCAxNjIuNTU5IDM0LjY2NDMgMTYzLjA0NyAzNS4wNzQ3QzE2My4wMTYgMzUuMjcyNSAxNjIuOTYzIDM1LjU5NTQgMTYyLjg4NyAzNi4wNDM0Wk0xNzEuMDE5IDM3Ljc4N0MxNzAuNzgyIDM3LjY2NTYgMTcwLjUzOCAzNy42MzkyIDE3MC4yODcgMzcuNzA3NUMxNzAuMDM1IDM3Ljc3NTcgMTY5Ljg1NiAzOC4wMDc2IDE2OS43NDkgMzguNDAyNkMxNjkuNjg4IDM4LjgyODMgMTY5LjU1MSAzOS4zMjk0IDE2OS4zMzggMzkuOTA2OUMxNjkuMTI0IDQwLjQ4NDMgMTY4Ljg2MSA0MS4wMzE3IDE2OC41NDggNDEuNTQ3OEMxNjguMjM2IDQyLjA2NDYgMTY3Ljg3NyA0Mi40OTQgMTY3LjQ3MyA0Mi44MzU4QzE2Ny4wNjkgNDMuMTc3OCAxNjYuNjM4IDQzLjMzMzcgMTY2LjE4MSA0My4zMDI4QzE2NS43OTkgNDMuMjcyNyAxNjUuNTMyIDQzLjA3OSAxNjUuMzggNDIuNzIxOEMxNjUuMjI3IDQyLjM2NDcgMTY1LjE0NyA0MS45MTY4IDE2NS4xNCA0MS4zNzY5QzE2NS4xMzIgNDAuODM4IDE2NS4xODYgNDAuMjMwMSAxNjUuMyAzOS41NTM4QzE2NS40MTQgMzguODc3NyAxNjUuNTUyIDM4LjIwNTQgMTY1LjcxMiAzNy41MzYzQzE2NS44NzIgMzYuODY4IDE2Ni4wMzYgMzYuMjI1OCAxNjYuMjA0IDM1LjYxMDVDMTY2LjM3MSAzNC45OTUxIDE2Ni41MDggMzQuNDc0NyAxNjYuNjE2IDM0LjA0OTNDMTY2LjczOCAzMy42NjkzIDE2Ni42OTkgMzMuMzQ2NiAxNjYuNTAxIDMzLjA4MDNDMTY2LjMwMyAzMi44MTQ5IDE2Ni4wNTUgMzIuNjI0NiAxNjUuNzU4IDMyLjUxMDdDMTY1LjQ2IDMyLjM5NjcgMTY1LjE1OSAzMi4zNjY0IDE2NC44NTQgMzIuNDE5NkMxNjQuNTQ5IDMyLjQ3MjggMTY0LjM1MSAzMi42MzYyIDE2NC4yNTkgMzIuOTA5NEMxNjMuMzU5IDMyLjEzNDUgMTYyLjQ5NCAzMS43MTY2IDE2MS42NjMgMzEuNjU1OUMxNjAuODMxIDMxLjU5NTIgMTYwLjA2NSAzMS43Nzc2IDE1OS4zNjQgMzIuMjAzQzE1OC42NjIgMzIuNjI4NCAxNTguMDQxIDMzLjI0MzcgMTU3LjUgMzQuMDQ5M0MxNTYuOTU4IDM0Ljg1NDkgMTU2LjUyIDM1LjczMjIgMTU2LjE4NCAzNi42ODE4QzE1NS44NDkgMzcuNjMxNCAxNTUuNjM5IDM4LjYwMDQgMTU1LjU1NSAzOS41ODc5QzE1NS40NzEgNDAuNTc1NyAxNTUuNTM2IDQxLjQ3NjEgMTU1Ljc1IDQyLjI4OUMxNTUuOTYzIDQzLjEwMTggMTU2LjM0IDQzLjc2NjkgMTU2Ljg4MiA0NC4yODNDMTU3LjQyMyA0NC43OTk4IDE1OC4xNTkgNDUuMDU4MyAxNTkuMDg5IDQ1LjA1ODNDMTU5LjUwMSA0NS4wNTgzIDE1OS44OTggNDQuOTc0NyAxNjAuMjc5IDQ0LjgwNzZDMTYwLjY2IDQ0LjY0MDEgMTYxLjAxMSA0NC40NDI2IDE2MS4zMzEgNDQuMjE0OEMxNjEuNjUxIDQzLjk4NjkgMTYxLjkzMyA0My43NDc1IDE2Mi4xNzggNDMuNDk2OEMxNjIuNDIxIDQzLjI0NjEgMTYyLjYxMiA0My4wMzczIDE2Mi43NDkgNDIuODY5OUMxNjIuODU2IDQzLjQxNyAxNjMuMDMyIDQzLjg4MDggMTYzLjI3NiA0NC4yNjA1QzE2My41MTkgNDQuNjQwMSAxNjMuNzk4IDQ0Ljk1MjEgMTY0LjExMSA0NS4xOTQ4QzE2NC40MjMgNDUuNDM3NiAxNjQuNzUxIDQ1LjYxNjQgMTY1LjA5NCA0NS43MzA2QzE2NS40MzcgNDUuODQ0NSAxNjUuNzY5IDQ1LjkwMTUgMTY2LjA4OSA0NS45MDE1QzE2Ni44MDYgNDUuOTAxNSAxNjcuNDc3IDQ1LjY1ODMgMTY4LjEwMiA0NS4xNzE5QzE2OC43MjcgNDQuNjg2MSAxNjkuMjg4IDQ0LjA4OTMgMTY5Ljc4NCA0My4zODI5QzE3MC4yNzkgNDIuNjc2MiAxNzAuNjg3IDQxLjkzMTkgMTcxLjAwNyA0MS4xNDkxQzE3MS4zMjggNDAuMzY2NiAxNzEuNTQxIDM5LjY3MTUgMTcxLjY0OCAzOS4wNjM0QzE3MS43NTUgMzguODM1NSAxNzEuNzM1IDM4LjU5NjQgMTcxLjU5MSAzOC4zNDU3QzE3MS40NDYgMzguMDk1IDE3MS4yNTUgMzcuOTA5IDE3MS4wMTkgMzcuNzg3WlwiIGZpbGw9XCIjMEQwQzIzXCIvPlxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTIxMi4xOTQgNTAuMzcwMUMyMTIuMDY0IDUwLjg4NjYgMjExLjg2MiA1MS4zMjM4IDIxMS41ODcgNTEuNjgwNkMyMTEuMzEzIDUyLjAzNzcgMjEwLjk3IDUyLjIyMzkgMjEwLjU1OCA1Mi4yMzkzQzIxMC4yOTkgNTIuMjU0MyAyMTAuMTAxIDUyLjExNzUgMjA5Ljk2MyA1MS44Mjg5QzIwOS44MjYgNTEuNTQwMSAyMDkuNzMxIDUxLjE2NzkgMjA5LjY3OCA1MC43MTIyQzIwOS42MjQgNTAuMjU2MiAyMDkuNjAxIDQ5Ljc0NyAyMDkuNjA5IDQ5LjE4NDlDMjA5LjYxNiA0OC42MjI3IDIwOS42MzkgNDguMDY4MSAyMDkuNjc4IDQ3LjUyMUMyMDkuNzE1IDQ2Ljk3NDIgMjA5Ljc2MSA0Ni40NjQ3IDIwOS44MTUgNDUuOTkzOUMyMDkuODY4IDQ1LjUyMjYgMjA5LjkxIDQ1LjE1ODYgMjA5Ljk0IDQ0LjlDMjEwLjQ1OSA0NC45NjA4IDIxMC44OSA0NS4xODQ2IDIxMS4yMzMgNDUuNTcyM0MyMTEuNTc2IDQ1Ljk1OTggMjExLjgzOSA0Ni40MTkzIDIxMi4wMjIgNDYuOTUxNEMyMTIuMjA1IDQ3LjQ4MzEgMjEyLjMxMiA0OC4wNTY4IDIxMi4zNDMgNDguNjcyMkMyMTIuMzczIDQ5LjI4NzUgMjEyLjMyMyA0OS44NTM0IDIxMi4xOTQgNTAuMzcwMVpNMjAzLjkxMyA1MC4zNzAxQzIwMy43ODMgNTAuODg2NiAyMDMuNTgxIDUxLjMyMzggMjAzLjMwNyA1MS42ODA2QzIwMy4wMzIgNTIuMDM3NyAyMDIuNjg5IDUyLjIyMzkgMjAyLjI3NyA1Mi4yMzkzQzIwMi4wMTggNTIuMjU0MyAyMDEuODIgNTIuMTE3NSAyMDEuNjgzIDUxLjgyODlDMjAxLjU0NSA1MS41NDAxIDIwMS40NSA1MS4xNjc5IDIwMS4zOTcgNTAuNzEyMkMyMDEuMzQzIDUwLjI1NjIgMjAxLjMyIDQ5Ljc0NyAyMDEuMzI4IDQ5LjE4NDlDMjAxLjMzNiA0OC42MjI3IDIwMS4zNTggNDguMDY4MSAyMDEuMzk3IDQ3LjUyMUMyMDEuNDM0IDQ2Ljk3NDIgMjAxLjQ4IDQ2LjQ2NDcgMjAxLjUzNCA0NS45OTM5QzIwMS41ODcgNDUuNTIyNiAyMDEuNjI5IDQ1LjE1ODYgMjAxLjY2IDQ0LjlDMjAyLjE3OCA0NC45NjA4IDIwMi42MDkgNDUuMTg0NiAyMDIuOTUyIDQ1LjU3MjNDMjAzLjI5NSA0NS45NTk4IDIwMy41NTggNDYuNDE5MyAyMDMuNzQxIDQ2Ljk1MTRDMjAzLjkyNCA0Ny40ODMxIDIwNC4wMzEgNDguMDU2OCAyMDQuMDYyIDQ4LjY3MjJDMjA0LjA5MiA0OS4yODc1IDIwNC4wNDIgNDkuODUzNCAyMDMuOTEzIDUwLjM3MDFaTTE5NS40MTUgMzcuNDI0MUMxOTUuMzk5IDM3Ljc4ODQgMTk1LjM2NSAzOC4xMTE0IDE5NS4zMTIgMzguMzkyNUMxOTUuMjU4IDM4LjY3NDEgMTk1LjE4NiAzOC44NTIyIDE5NS4wOTUgMzguOTI4M0MxOTQuOTI3IDM4LjgzNjkgMTk0LjcyMSAzOC42MDE4IDE5NC40NzcgMzguMjIxNkMxOTQuMjMzIDM3Ljg0MTkgMTk0LjA0MiAzNy40MTIyIDE5My45MDUgMzYuOTMzNkMxOTMuNzY4IDM2LjQ1NTEgMTkzLjcyNSAzNS45ODQzIDE5My43NzkgMzUuNTIwNUMxOTMuODMyIDM1LjA1NzMgMTk0LjA3MyAzNC42OTY3IDE5NC41IDM0LjQzNzlDMTk0LjY2NyAzNC4zNDY4IDE5NC44MTIgMzQuMzgwOSAxOTQuOTM0IDM0LjU0MDVDMTk1LjA1NiAzNC43MDAxIDE5NS4xNTUgMzQuOTMxOCAxOTUuMjMyIDM1LjIzNTdDMTk1LjMwOCAzNS41Mzk5IDE5NS4zNjEgMzUuODg5MiAxOTUuMzkyIDM2LjI4NDJDMTk1LjQyMiAzNi42Nzk1IDE5NS40MyAzNy4wNTkxIDE5NS40MTUgMzcuNDI0MVpNMTkzLjM5IDQxLjk3MTFDMTkzLjE1NCA0Mi4yMjE1IDE5Mi44OSA0Mi40MzgxIDE5Mi42MDEgNDIuNjIwNkMxOTIuMzExIDQyLjgwMyAxOTIuMDE0IDQyLjkzOTggMTkxLjcwOSA0My4wMzA5QzE5MS40MDQgNDMuMTIyMyAxOTEuMTI5IDQzLjE0NDggMTkwLjg4NSA0My4wOTkxQzE5MC4xOTkgNDIuOTYyNyAxODkuNjczIDQyLjY2NiAxODkuMzA3IDQyLjIxMDNDMTg4Ljk0MSA0MS43NTQ1IDE4OC43MDggNDEuMjE5IDE4OC42MDkgNDAuNjAzN0MxODguNTEgMzkuOTg4MSAxODguNTIxIDM5LjMzMDggMTg4LjY0NCAzOC42MzE5QzE4OC43NjUgMzcuOTMzIDE4OC45NzEgMzcuMjgzNSAxODkuMjYxIDM2LjY4MzJDMTg5LjU1MSAzNi4wODI5IDE4OS45MDIgMzUuNTY2MiAxOTAuMzEzIDM1LjEzMzNDMTkwLjcyNSAzNC43MDAxIDE5MS4xNzUgMzQuNDMwNiAxOTEuNjYzIDM0LjMyMzlDMTkxLjQ4IDM1LjA5ODkgMTkxLjQxOSAzNS45MDA3IDE5MS40OCAzNi43Mjg2QzE5MS41NDEgMzcuNTU2OCAxOTEuNzM5IDM4LjMzNTUgMTkyLjA3NSAzOS4wNjQ4QzE5Mi4yODggMzkuNTA2IDE5Mi41NDQgMzkuOTA4MiAxOTIuODQxIDQwLjI3MjlDMTkzLjEzOSA0MC42Mzc4IDE5My41MDEgNDAuOTQ5MiAxOTMuOTI4IDQxLjIwNzVDMTkzLjgwNiA0MS40NjYgMTkzLjYyNiA0MS43MjA0IDE5My4zOSA0MS45NzExWk0yMTguNzAyIDM3LjY1MTlDMjE4Ljc0NyAzNy4zMDI2IDIxOC44MTYgMzYuOTMzNiAyMTguOTA4IDM2LjU0NjJDMjE4Ljk5OSAzNi4xNTkgMjE5LjExNCAzNS43ODI4IDIxOS4yNTEgMzUuNDE4MUMyMTkuMzg4IDM1LjA1MzIgMjE5LjU0OCAzNC43MzggMjE5LjczMSAzNC40NzIzQzIxOS45MTQgMzQuMjA2NSAyMjAuMTA4IDM0LjAxNjMgMjIwLjMxNCAzMy45MDI0QzIyMC41MiAzMy43ODg0IDIyMC43MyAzMy43OTk3IDIyMC45NDMgMzMuOTM2NUMyMjEuMTcyIDM0LjA3MzUgMjIxLjMxMyAzNC4zNjIxIDIyMS4zNjcgMzQuODAyNUMyMjEuNDIgMzUuMjQzNSAyMjEuMzY3IDM1LjcxNDIgMjIxLjIwNyAzNi4yMTU5QzIyMS4wNDYgMzYuNzE3MyAyMjAuNzYxIDM3LjE4ODQgMjIwLjM0OSAzNy42Mjg4QzIxOS45MzcgMzguMDcgMjE5LjM4IDM4LjM1ODMgMjE4LjY3OSAzOC40OTUxQzIxOC42NDggMzguMjgyNiAyMTguNjU2IDM4LjAwMTUgMjE4LjcwMiAzNy42NTE5Wk0yMjcuOTIxIDM3LjY1MTlDMjI3Ljk2NiAzNy4zMDI2IDIyOC4wMzUgMzYuOTMzNiAyMjguMTI2IDM2LjU0NjJDMjI4LjIxOCAzNi4xNTkgMjI4LjMzMiAzNS43ODI4IDIyOC40NyAzNS40MTgxQzIyOC42MDcgMzUuMDUzMiAyMjguNzY3IDM0LjczOCAyMjguOTUgMzQuNDcyM0MyMjkuMTMzIDM0LjIwNjUgMjI5LjMyOCAzNC4wMTYzIDIyOS41MzMgMzMuOTAyNEMyMjkuNzM5IDMzLjc4ODQgMjI5Ljk0OSAzMy43OTk3IDIzMC4xNjIgMzMuOTM2NUMyMzAuMzkxIDM0LjA3MzUgMjMwLjUzMiAzNC4zNjIxIDIzMC41ODYgMzQuODAyNUMyMzAuNjM5IDM1LjI0MzUgMjMwLjU4NiAzNS43MTQyIDIzMC40MjUgMzYuMjE1OUMyMzAuMjY1IDM2LjcxNzMgMjI5Ljk3OSAzNy4xODg0IDIyOS41NjggMzcuNjI4OEMyMjkuMTU2IDM4LjA3IDIyOC41OTkgMzguMzU4MyAyMjcuODk4IDM4LjQ5NTFDMjI3Ljg2NyAzOC4yODI2IDIyNy44NzUgMzguMDAxNSAyMjcuOTIxIDM3LjY1MTlaTTIzNi40ODggMzguOTg1MkMyMzYuMzEyIDM4Ljc5NTUgMjM2LjA5OSAzOC42NjI1IDIzNS44NDcgMzguNTg2MkMyMzUuNTk1IDM4LjUxMDQgMjM1LjM1NSAzOC41MDI5IDIzNS4xMjYgMzguNTYzNkMyMzQuODk3IDM4LjYyNDQgMjM0Ljc1MiAzOC43ODQgMjM0LjY5MiAzOS4wNDIyQzIzNC41NyAzOS41Mjg2IDIzNC4zNzUgNDAuMDI2MiAyMzQuMTA4IDQwLjUzNDlDMjMzLjg0MSA0MS4wNDQ0IDIzMy41MTQgNDEuNTI2NyAyMzMuMTI1IDQxLjk4MjRDMjMyLjczNiA0Mi40MzgxIDIzMi4yOTcgNDIuODQxMiAyMzEuODEgNDMuMTkwNUMyMzEuMzIxIDQzLjU0MDEgMjMwLjgxIDQzLjc5MDggMjMwLjI3NyA0My45NDIzQzIyOS43NDMgNDQuMTEwMSAyMjkuMzAxIDQ0LjEyODkgMjI4Ljk1IDQzLjk5OTZDMjI4LjU5OSA0My44NzA2IDIyOC4zMjEgNDMuNjUwMyAyMjguMTE1IDQzLjMzODlDMjI3LjkwOSA0My4wMjcxIDIyNy43NjEgNDIuNjUxMiAyMjcuNjY5IDQyLjIxMDNDMjI3LjU3OCA0MS43Njk5IDIyNy41MjQgNDEuMzE0MiAyMjcuNTA5IDQwLjg0MjhDMjI4LjM3OCA0MC45MDM4IDIyOS4xNTIgNDAuNzQ4MyAyMjkuODMxIDQwLjM3NTVDMjMwLjUwOSA0MC4wMDM0IDIzMS4wODUgMzkuNTA5MiAyMzEuNTU4IDM4Ljg5MzlDMjMyLjAzMSAzOC4yNzg4IDIzMi4zODkgMzcuNTg3NCAyMzIuNjMzIDM2LjgyQzIzMi44NzcgMzYuMDUyNiAyMzMuMDE0IDM1LjI4OTIgMjMzLjA0NSAzNC41MjkzQzIzMy4wNiAzMy44MTUgMjMyLjk1MyAzMy4yMTEgMjMyLjcyNCAzMi43MTcxQzIzMi40OTYgMzIuMjIzNSAyMzIuMTg3IDMxLjgzOTUgMjMxLjc5OCAzMS41NjYyQzIzMS40MDkgMzEuMjkyNCAyMzAuOTYzIDMxLjEzMyAyMzAuNDYgMzEuMDg3NEMyMjkuOTU3IDMxLjA0MTcgMjI5LjQ0NSAzMS4xMTA1IDIyOC45MjcgMzEuMjkyNEMyMjguMzAyIDMxLjUwNTUgMjI3Ljc3MiAzMS44NTEgMjI3LjMzOCAzMi4zMjk2QzIyNi45MDMgMzIuODA4NSAyMjYuNTQgMzMuMzYzNCAyMjYuMjUxIDMzLjk5MzRDMjI1Ljk2MSAzNC42MjQ0IDIyNS43MzIgMzUuMzAzOSAyMjUuNTY0IDM2LjAzMzVDMjI1LjM5NiAzNi43NjI3IDIyNS4yNzQgMzcuNDgxIDIyNS4xOTkgMzguMTg3NEMyMjUuMTI0IDM4Ljg3MyAyMjUuMDg0IDM5LjUyOTIgMjI1LjA3NSA0MC4xNTcyQzIyNS4wMTcgNDAuMjgyNCAyMjQuOTU2IDQwLjQwODIgMjI0Ljg4OSA0MC41MzQ5QzIyNC42MjIgNDEuMDQ0NCAyMjQuMjk1IDQxLjUyNjcgMjIzLjkwNiA0MS45ODI0QzIyMy41MTcgNDIuNDM4MSAyMjMuMDc4IDQyLjg0MTIgMjIyLjU5MSA0My4xOTA1QzIyMi4xMDIgNDMuNTQwMSAyMjEuNTkyIDQzLjc5MDggMjIxLjA1OCA0My45NDIzQzIyMC41MjQgNDQuMTEwMSAyMjAuMDgyIDQ0LjEyODkgMjE5LjczMSA0My45OTk2QzIxOS4zOCA0My44NzA2IDIxOS4xMDIgNDMuNjUwMyAyMTguODk2IDQzLjMzODlDMjE4LjY5MSA0My4wMjcxIDIxOC41NDIgNDIuNjUxMiAyMTguNDUgNDIuMjEwM0MyMTguMzU5IDQxLjc2OTkgMjE4LjMwNSA0MS4zMTQyIDIxOC4yOSA0MC44NDI4QzIxOS4xNTkgNDAuOTAzOCAyMTkuOTMzIDQwLjc0ODMgMjIwLjYxMiA0MC4zNzU1QzIyMS4yOSA0MC4wMDM0IDIyMS44NjYgMzkuNTA5MiAyMjIuMzM5IDM4Ljg5MzlDMjIyLjgxMSAzOC4yNzg4IDIyMy4xNyAzNy41ODc0IDIyMy40MTQgMzYuODJDMjIzLjY1OCAzNi4wNTI2IDIyMy43OTUgMzUuMjg5MiAyMjMuODI2IDM0LjUyOTNDMjIzLjg0MSAzMy44MTUgMjIzLjczNCAzMy4yMTEgMjIzLjUwNiAzMi43MTcxQzIyMy4yNzcgMzIuMjIzNSAyMjIuOTY4IDMxLjgzOTUgMjIyLjU3OSAzMS41NjYyQzIyMi4xOSAzMS4yOTI0IDIyMS43NDQgMzEuMTMzIDIyMS4yNDEgMzEuMDg3NEMyMjAuNzM4IDMxLjA0MTcgMjIwLjIyNyAzMS4xMTA1IDIxOS43MDggMzEuMjkyNEMyMTkuMDgzIDMxLjUwNTUgMjE4LjU1MyAzMS44NTEgMjE4LjExOSAzMi4zMjk2QzIxNy42ODQgMzIuODA4NSAyMTcuMzIxIDMzLjM2MzQgMjE3LjAzMiAzMy45OTM0QzIxNi43NDIgMzQuNjI0NCAyMTYuNTEzIDM1LjMwMzkgMjE2LjM0NiAzNi4wMzM1QzIxNi4xNzggMzYuNzYyNyAyMTYuMDU2IDM3LjQ4MSAyMTUuOTggMzguMTg3NEMyMTUuOTM2IDM4LjU4NTkgMjE1LjkwNyAzOC45NzIyIDIxNS44ODYgMzkuMzUxNkMyMTUuNzM5IDM5LjQ3NjUgMjE1LjU5NSAzOS42MDIzIDIxNS40NDIgMzkuNzI1OEMyMTQuOTE2IDQwLjE1MTQgMjE0LjM2MyA0MC41MzQ5IDIxMy43ODQgNDAuODc2OUMyMTMuMjA0IDQxLjIxOSAyMTIuNjAxIDQxLjUwMDEgMjExLjk3NyA0MS43MjA0QzIxMS4zNTEgNDEuOTQwOCAyMTAuNzEgNDIuMDczOCAyMTAuMDU1IDQyLjExOTJMMjExLjQ3MyAyNi45ODQ3QzIxMS41NjUgMjYuNjY1NSAyMTEuNTE5IDI2LjM4NDcgMjExLjMzNiAyNi4xNDE1QzIxMS4xNTMgMjUuODk4MyAyMTAuOTE2IDI1LjczMTIgMjEwLjYyNyAyNS42NDAxQzIxMC4zMzcgMjUuNTQ4OCAyMTAuMDI4IDI1LjU1NjYgMjA5LjcgMjUuNjYyN0MyMDkuMzcyIDI1Ljc2OTQgMjA5LjEwMiAyNi4wMTI2IDIwOC44ODggMjYuMzkxOUMyMDguNzgxIDI2Ljk2OTcgMjA4LjY3MSAyNy43NTk3IDIwOC41NTcgMjguNzYyNUMyMDguNDQyIDI5Ljc2NTMgMjA4LjMyOCAzMC44NTk1IDIwOC4yMTMgMzIuMDQ0OEMyMDguMDk5IDMzLjIzIDIwNy45ODUgMzQuNDUzMiAyMDcuODcgMzUuNzE0MkMyMDcuNzU2IDM2Ljk3NTkgMjA3LjY1NyAzOC4xNTMzIDIwNy41NzMgMzkuMjQ3MkMyMDcuNTY5IDM5LjI5NTggMjA3LjU2NiAzOS4zMzk4IDIwNy41NjIgMzkuMzg3OEMyMDcuNDI5IDM5LjUwMDUgMjA3LjI5OSAzOS42MTQyIDIwNy4xNjEgMzkuNzI1OEMyMDYuNjM1IDQwLjE1MTQgMjA2LjA4MiA0MC41MzQ5IDIwNS41MDMgNDAuODc2OUMyMDQuOTIzIDQxLjIxOSAyMDQuMzIxIDQxLjUwMDEgMjAzLjY5NiA0MS43MjA0QzIwMy4wNyA0MS45NDA4IDIwMi40MjkgNDIuMDczOCAyMDEuNzc0IDQyLjExOTJMMjAzLjE5MiAyNi45ODQ3QzIwMy4yODQgMjYuNjY1NSAyMDMuMjM4IDI2LjM4NDcgMjAzLjA1NSAyNi4xNDE1QzIwMi44NzIgMjUuODk4MyAyMDIuNjM1IDI1LjczMTIgMjAyLjM0NiAyNS42NDAxQzIwMi4wNTYgMjUuNTQ4OCAyMDEuNzQ3IDI1LjU1NjYgMjAxLjQxOSAyNS42NjI3QzIwMS4wOTEgMjUuNzY5NCAyMDAuODIxIDI2LjAxMjYgMjAwLjYwNyAyNi4zOTE5QzIwMC41MDEgMjYuOTY5NyAyMDAuMzkgMjcuNzU5NyAyMDAuMjc2IDI4Ljc2MjVDMjAwLjE2MSAyOS43NjUzIDIwMC4wNDcgMzAuODU5NSAxOTkuOTMzIDMyLjA0NDhDMTk5LjgxOCAzMy4yMyAxOTkuNzA0IDM0LjQ1MzIgMTk5LjU4OSAzNS43MTQyQzE5OS40NzUgMzYuOTc1OSAxOTkuMzc2IDM4LjE1MzMgMTk5LjI5MiAzOS4yNDcyQzE5OS4yOSAzOS4yNjkyIDE5OS4yODkgMzkuMjg5MSAxOTkuMjg3IDM5LjMxMTFDMTk5LjA0OCAzOS40MjE5IDE5OC43ODYgMzkuNTE5IDE5OC41MDMgMzkuNjAwNkMxOTguMjEzIDM5LjY4NDQgMTk3Ljg4NSAzOS43MzM5IDE5Ny41MTkgMzkuNzQ4OUMxOTcuNTggMzkuNDc1MSAxOTcuNjMgMzkuMTcxMiAxOTcuNjY4IDM4LjgzNjlDMTk3LjcwNiAzOC41MDI5IDE5Ny43MzcgMzguMTUzMyAxOTcuNzYgMzcuNzg4NEMxOTcuNzgyIDM3LjQyNDEgMTk3Ljc5IDM3LjA1OTEgMTk3Ljc4MiAzNi42OTQ1QzE5Ny43NzQgMzYuMzI5NiAxOTcuNzU1IDM1Ljk5NTYgMTk3LjcyNSAzNS42OTE0QzE5Ny42NDkgMzUuMDM4NSAxOTcuNTA4IDM0LjQxOTEgMTk3LjMwMiAzMy44MzM4QzE5Ny4wOTYgMzMuMjQ5MSAxOTYuODE4IDMyLjc1OTMgMTk2LjQ2NyAzMi4zNjM3QzE5Ni4xMTYgMzEuOTY4NyAxOTUuNjc4IDMxLjcwMjcgMTk1LjE1MSAzMS41NjYyQzE5NC42MjYgMzEuNDI5NCAxOTQuMDEyIDMxLjQ3NDggMTkzLjMxIDMxLjcwMjdDMTkyLjI3MyAzMS41NjYyIDE5MS4zMzkgMzEuNjYxMyAxOTAuNTA4IDMxLjk4NzhDMTg5LjY3NyAzMi4zMTQ5IDE4OC45NTYgMzIuNzg5NCAxODguMzQ2IDMzLjQxMjJDMTg3LjczNiAzNC4wMzU3IDE4Ny4yMzcgMzQuNzY4NCAxODYuODQ4IDM1LjYxMTlDMTg2LjQ1OSAzNi40NTUxIDE4Ni4yIDM3LjMyMTQgMTg2LjA3IDM4LjIxQzE4Ni4wMTUgMzguNTg2OCAxODUuOTg4IDM4Ljk2MTggMTg1Ljk4IDM5LjMzNkMxODUuNzQ0IDM5LjgxNzcgMTg1LjQ4NiA0MC4yMzg4IDE4NS4yMDEgNDAuNTkyMUMxODQuNzk3IDQxLjA5MzUgMTg0LjM3NyA0MS41MDM4IDE4My45NDMgNDEuODIyOEMxODMuNTA4IDQyLjE0MiAxODMuMDc3IDQyLjM4NTIgMTgyLjY1IDQyLjU1MjNDMTgyLjIyMyA0Mi43MTk4IDE4MS44NDIgNDIuODMzNyAxODEuNTA3IDQyLjg5NDFDMTgxLjExIDQyLjk3MDIgMTgwLjcyOSA0Mi45NzggMTgwLjM2MyA0Mi45MTdDMTc5Ljk5NyA0Mi44NTY1IDE3OS42NjEgNDIuNjgxNiAxNzkuMzU3IDQyLjM5MjdDMTc5LjExMiA0Mi4xODAyIDE3OC45MjUgNDEuODM4MSAxNzguNzk2IDQxLjM2NzFDMTc4LjY2NiA0MC44OTYgMTc4LjU5IDQwLjM2MDggMTc4LjU2NyAzOS43NjAyQzE3OC41NDQgMzkuMTU5OSAxNzguNTY3IDM4LjUzMyAxNzguNjM2IDM3Ljg3OThDMTc4LjcwNSAzNy4yMjY2IDE3OC44MjIgMzYuNjA3MiAxNzguOTkgMzYuMDIyMkMxNzkuMTU4IDM1LjQzNzIgMTc5LjM3MSAzNC45MTMgMTc5LjYzMSAzNC40NDkyQzE3OS44OSAzMy45ODYyIDE4MC4xOTUgMzMuNjU1NCAxODAuNTQ2IDMzLjQ1NzlDMTgwLjc0NCAzMy40ODg2IDE4MC44NjYgMzMuNjA2IDE4MC45MTIgMzMuODExQzE4MC45NTggMzQuMDE2MyAxODAuOTY5IDM0LjI1OTUgMTgwLjk0NiAzNC41NDA1QzE4MC45MjMgMzQuODIxOSAxODAuODg5IDM1LjExMDUgMTgwLjg0MyAzNS40MDY2QzE4MC43OTcgMzUuNzAzIDE4MC43NzUgMzUuOTUwMiAxODAuNzc1IDM2LjE0NzRDMTgwLjg1MSAzNi41NTc3IDE4MC45OTkgMzYuODc3IDE4MS4yMjEgMzcuMTA0OEMxODEuNDQxIDM3LjMzMjcgMTgxLjY5IDM3LjQ2NiAxODEuOTY0IDM3LjUwMzZDMTgyLjIzOSAzNy41NDE3IDE4Mi41MDkgMzcuNDc3MyAxODIuNzc2IDM3LjMwOThDMTgzLjA0MyAzNy4xNDMgMTgzLjI2IDM2Ljg3NyAxODMuNDI4IDM2LjUxMkMxODMuNDQzIDM2LjUyNzQgMTgzLjQ2NiAzNi41MzQ5IDE4My40OTcgMzYuNTM0OUwxODMuODE3IDMzLjY0MDRDMTgzLjkwOSAzMy4yNDUxIDE4My44NDcgMzIuODk1OCAxODMuNjM0IDMyLjU5MTlDMTgzLjQyIDMyLjI4OCAxODMuMTM4IDMyLjExMyAxODIuNzg4IDMyLjA2NzZDMTgyLjM0NSAzMS40Mjk0IDE4MS43NDcgMzEuMDkxNCAxODAuOTkyIDMxLjA1MzJDMTgwLjIzNyAzMS4wMTU0IDE3OS40NjMgMzEuMjYyMyAxNzguNjcgMzEuNzk0MUMxNzguMTgyIDMyLjE0NCAxNzcuNzUxIDMyLjYyNiAxNzcuMzc4IDMzLjI0MTNDMTc3LjAwNCAzMy44NTcgMTc2LjY5OSAzNC41NDA1IDE3Ni40NjMgMzUuMjkyNkMxNzYuMjI2IDM2LjA0NDggMTc2LjA1OCAzNi44MzkxIDE3NS45NTkgMzcuNjc0OEMxNzUuODYgMzguNTEwNCAxNzUuODQxIDM5LjMyMzYgMTc1LjkwMiA0MC4xMTMzQzE3NS45NjMgNDAuOTAzOCAxNzYuMTA0IDQxLjY0ODQgMTc2LjMyNSA0Mi4zNDdDMTc2LjU0NiA0My4wNDYyIDE3Ni44NTUgNDMuNjMxMiAxNzcuMjUyIDQ0LjEwMkMxNzcuNTg3IDQ0LjUxMjMgMTc3Ljk2OCA0NC44MTI3IDE3OC4zOTUgNDUuMDAyN0MxNzguODIyIDQ1LjE5MjcgMTc5LjI2OCA0NS4zMTAxIDE3OS43MzQgNDUuMzU1OEMxODAuMTk5IDQ1LjQwMTIgMTgwLjY2IDQ1LjM4MjEgMTgxLjExOCA0NS4yOTg4QzE4MS41NzUgNDUuMjE1NSAxODIuMDEgNDUuMDk3OCAxODIuNDIxIDQ0Ljk0NTRDMTgyLjk1NSA0NC43NDgyIDE4My41MDUgNDQuNDk3MiAxODQuMDY5IDQ0LjE5MzNDMTg0LjYzMyA0My44ODk3IDE4NS4xNzQgNDMuNTI0OCAxODUuNjkzIDQzLjA5OTFDMTg1Ljk2NiA0Mi44NzUzIDE4Ni4yMjggNDIuNjMxMyAxODYuNDgyIDQyLjM2OTZDMTg2LjU5OCA0Mi42NTUzIDE4Ni43MjcgNDIuOTMxNyAxODYuODgyIDQzLjE5MDVDMTg3LjI5NCA0My44NzQxIDE4Ny44NSA0NC40MjkgMTg4LjU1MiA0NC44NTQ0QzE4OS4yNTMgNDUuMjc5NyAxOTAuMTE1IDQ1LjQ4NDQgMTkxLjEzNyA0NS40Njk3QzE5Mi4yMzUgNDUuNDU0NCAxOTMuMjQ5IDQ1LjE3NzQgMTk0LjE4IDQ0LjYzNzhDMTk1LjExIDQ0LjA5ODggMTk1Ljg3MiA0My4zMDQyIDE5Ni40NjcgNDIuMjU2QzE5Ny4zNTggNDIuMjU2IDE5OC4yMzQgNDIuMTA5NiAxOTkuMDk2IDQxLjgxOUMxOTkuMDg5IDQxLjkxMSAxOTkuMDgxIDQyLjAwNzkgMTk5LjA3NSA0Mi4wOTY2QzE5OS4wMTQgNDIuOTAxOSAxOTguOTgzIDQzLjQ0ODcgMTk4Ljk4MyA0My43Mzc2QzE5OC45NjggNDQuMjM5IDE5OC45MzQgNDQuODU4MSAxOTguODggNDUuNTk0OUMxOTguODI3IDQ2LjMzMiAxOTguNzkzIDQ3LjEwNjkgMTk4Ljc3OCA0Ny45MTk4QzE5OC43NjMgNDguNzMyNiAxOTguNzkzIDQ5LjU1MzIgMTk4Ljg2OSA1MC4zODE3QzE5OC45NDUgNTEuMjA5NiAxOTkuMTA1IDUxLjk2MiAxOTkuMzQ5IDUyLjYzODNDMTk5LjU5MyA1My4zMTQxIDE5OS45NCA1My44ODc4IDIwMC4zOSA1NC4zNTkxQzIwMC44NCA1NC44Mjk5IDIwMS40MzEgNTUuMTExMiAyMDIuMTYzIDU1LjIwMjNDMjAyLjk0MSA1NS4zMDg0IDIwMy42MTIgNTUuMTcxNyAyMDQuMTc2IDU0Ljc5MkMyMDQuNzQgNTQuNDEyIDIwNS4xOTggNTMuODkxOCAyMDUuNTQ5IDUzLjIzMDhDMjA1Ljg5OSA1Mi41Njk1IDIwNi4xNDcgNTEuODA2MSAyMDYuMjkyIDUwLjk0MDFDMjA2LjQzNyA1MC4wNzQgMjA2LjQ3OSA0OS4yMDM5IDIwNi40MTggNDguMzMwMUMyMDYuMzU3IDQ3LjQ1NjIgMjA2LjE5NiA0Ni42MzIxIDIwNS45MzcgNDUuODU3NUMyMDUuNjc4IDQ1LjA4MjIgMjA1LjMxOSA0NC40NDQgMjA0Ljg2MiA0My45NDIzQzIwNS4xMzcgNDMuODY2OSAyMDUuNDY1IDQzLjcyMjYgMjA1Ljg0NiA0My41MDk1QzIwNi4yMjcgNDMuMjk2OSAyMDYuNjIgNDMuMDU3NSAyMDcuMDI0IDQyLjc5MTVDMjA3LjEyMyA0Mi43MjYxIDIwNy4yMjEgNDIuNjU3MyAyMDcuMzIgNDIuNTkwMkMyMDcuMjgzIDQzLjEyODYgMjA3LjI2NCA0My41MTI2IDIwNy4yNjQgNDMuNzM3NkMyMDcuMjQ5IDQ0LjIzOSAyMDcuMjE1IDQ0Ljg1ODEgMjA3LjE2MSA0NS41OTQ5QzIwNy4xMDggNDYuMzMyIDIwNy4wNzMgNDcuMTA2OSAyMDcuMDU4IDQ3LjkxOThDMjA3LjA0MyA0OC43MzI2IDIwNy4wNzMgNDkuNTUzMiAyMDcuMTUgNTAuMzgxN0MyMDcuMjI2IDUxLjIwOTYgMjA3LjM4NiA1MS45NjIgMjA3LjYzIDUyLjYzODNDMjA3Ljg3NCA1My4zMTQxIDIwOC4yMjEgNTMuODg3OCAyMDguNjcxIDU0LjM1OTFDMjA5LjEyMSA1NC44Mjk5IDIwOS43MTIgNTUuMTExMiAyMTAuNDQ0IDU1LjIwMjNDMjExLjIyMSA1NS4zMDg0IDIxMS44OTIgNTUuMTcxNyAyMTIuNDU3IDU0Ljc5MkMyMTMuMDIxIDU0LjQxMiAyMTMuNDc4IDUzLjg5MTggMjEzLjgzIDUzLjIzMDhDMjE0LjE4IDUyLjU2OTUgMjE0LjQyOCA1MS44MDYxIDIxNC41NzMgNTAuOTQwMUMyMTQuNzE4IDUwLjA3NCAyMTQuNzU5IDQ5LjIwMzkgMjE0LjY5OSA0OC4zMzAxQzIxNC42MzcgNDcuNDU2MiAyMTQuNDc3IDQ2LjYzMjEgMjE0LjIxOCA0NS44NTc1QzIxMy45NTkgNDUuMDgyMiAyMTMuNjAxIDQ0LjQ0NCAyMTMuMTQzIDQzLjk0MjNDMjEzLjQxOCA0My44NjY5IDIxMy43NDUgNDMuNzIyNiAyMTQuMTI3IDQzLjUwOTVDMjE0LjUwOCA0My4yOTY5IDIxNC45IDQzLjA1NzUgMjE1LjMwNSA0Mi43OTE1QzIxNS41MTUgNDIuNjUzMyAyMTUuNzI0IDQyLjUxMDcgMjE1LjkzMiA0Mi4zNjQxQzIxNi4wMSA0My4xMDcyIDIxNi4xNzkgNDMuNzU5IDIxNi40NDggNDQuMzA3M0MyMTYuNzc2IDQ0Ljk3NjEgMjE3LjIyMiA0NS40OTI1IDIxNy43ODcgNDUuODU3NUMyMTguMzUxIDQ2LjIyMTggMjE5LjAxNCA0Ni40MjM0IDIxOS43NzcgNDYuNDYxMkMyMjAuNTM5IDQ2LjQ5ODggMjIxLjM3IDQ2LjM1ODYgMjIyLjI3MSA0Ni4wMzkzQzIyMi45NDEgNDUuNzk2NSAyMjMuNTI1IDQ1LjQ5MjUgMjI0LjAyIDQ1LjEyNzlDMjI0LjUxNiA0NC43NjMgMjI0Ljk2MiA0NC4zMTg1IDIyNS4zNTggNDMuNzk0NkMyMjUuMzgxIDQzLjc2NDIgMjI1LjQwMyA0My43MzEzIDIyNS40MjUgNDMuNzAwNkMyMjUuNDk2IDQzLjkxMzQgMjI1LjU3NCA0NC4xMTc5IDIyNS42NjcgNDQuMzA3M0MyMjUuOTk1IDQ0Ljk3NjEgMjI2LjQ0MSA0NS40OTI1IDIyNy4wMDYgNDUuODU3NUMyMjcuNTY5IDQ2LjIyMTggMjI4LjIzMyA0Ni40MjM0IDIyOC45OTYgNDYuNDYxMkMyMjkuNzU4IDQ2LjQ5ODggMjMwLjU4OSA0Ni4zNTg2IDIzMS40ODkgNDYuMDM5M0MyMzIuMTYgNDUuNzk2NSAyMzIuNzQ0IDQ1LjQ5MjUgMjMzLjIzOSA0NS4xMjc5QzIzMy43MzUgNDQuNzYzIDIzNC4xODEgNDQuMzE4NSAyMzQuNTc3IDQzLjc5NDZDMjM0Ljk3NCA0My4yNyAyMzUuMzM2IDQyLjY2NiAyMzUuNjY0IDQxLjk4MjRDMjM1Ljk5MiA0MS4yOTg1IDIzNi4zMjMgNDAuNTE2NCAyMzYuNjU5IDM5LjYzNDdDMjM2LjcyIDM5LjM5MTggMjM2LjY2MyAzOS4xNzUyIDIzNi40ODggMzguOTg1MlpcIiBmaWxsPVwiIzBEMEMyM1wiLz5cbjwvc3ZnPmA7XG5cbmNvbnN0IHBheXBhbCA9IGBcbjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTUwXCIgaGVpZ2h0PVwiNDBcIj5cbjxwYXRoIGZpbGw9XCIjMjUzQjgwXCIgZD1cIk00Ni4yMTEgNi43NDloLTYuODM5YS45NS45NSAwIDAgMC0uOTM5LjgwMmwtMi43NjYgMTcuNTM3YS41Ny41NyAwIDAgMCAuNTY0LjY1OGgzLjI2NWEuOTUuOTUgMCAwIDAgLjkzOS0uODAzbC43NDYtNC43M2EuOTUuOTUgMCAwIDEgLjkzOC0uODAzaDIuMTY1YzQuNTA1IDAgNy4xMDUtMi4xOCA3Ljc4NC02LjUuMzA2LTEuODkuMDEzLTMuMzc1LS44NzItNC40MTUtLjk3Mi0xLjE0Mi0yLjY5Ni0xLjc0Ni00Ljk4NS0xLjc0NnpNNDcgMTMuMTU0Yy0uMzc0IDIuNDU0LTIuMjQ5IDIuNDU0LTQuMDYyIDIuNDU0aC0xLjAzMmwuNzI0LTQuNTgzYS41Ny41NyAwIDAgMSAuNTYzLS40ODFoLjQ3M2MxLjIzNSAwIDIuNCAwIDMuMDAyLjcwNC4zNTkuNDIuNDY5IDEuMDQ0LjMzMiAxLjkwNnpNNjYuNjU0IDEzLjA3NWgtMy4yNzVhLjU3LjU3IDAgMCAwLS41NjMuNDgxbC0uMTQ1LjkxNi0uMjI5LS4zMzJjLS43MDktMS4wMjktMi4yOS0xLjM3My0zLjg2OC0xLjM3My0zLjYxOSAwLTYuNzEgMi43NDEtNy4zMTIgNi41ODYtLjMxMyAxLjkxOC4xMzIgMy43NTIgMS4yMiA1LjAzMS45OTggMS4xNzYgMi40MjYgMS42NjYgNC4xMjUgMS42NjYgMi45MTYgMCA0LjUzMy0xLjg3NSA0LjUzMy0xLjg3NWwtLjE0Ni45MWEuNTcuNTcgMCAwIDAgLjU2Mi42NmgyLjk1YS45NS45NSAwIDAgMCAuOTM5LS44MDNsMS43Ny0xMS4yMDlhLjU2OC41NjggMCAwIDAtLjU2MS0uNjU4em0tNC41NjUgNi4zNzRjLS4zMTYgMS44NzEtMS44MDEgMy4xMjctMy42OTUgMy4xMjctLjk1MSAwLTEuNzExLS4zMDUtMi4xOTktLjg4My0uNDg0LS41NzQtLjY2OC0xLjM5MS0uNTE0LTIuMzAxLjI5NS0xLjg1NSAxLjgwNS0zLjE1MiAzLjY3LTMuMTUyLjkzIDAgMS42ODYuMzA5IDIuMTg0Ljg5Mi40OTkuNTg5LjY5NyAxLjQxMS41NTQgMi4zMTd6TTg0LjA5NiAxMy4wNzVoLTMuMjkxYS45NTQuOTU0IDAgMCAwLS43ODcuNDE3bC00LjUzOSA2LjY4Ni0xLjkyNC02LjQyNWEuOTUzLjk1MyAwIDAgMC0uOTEyLS42NzhoLTMuMjM0YS41Ny41NyAwIDAgMC0uNTQxLjc1NGwzLjYyNSAxMC42MzgtMy40MDggNC44MTFhLjU3LjU3IDAgMCAwIC40NjUuOWgzLjI4N2EuOTQ5Ljk0OSAwIDAgMCAuNzgxLS40MDhsMTAuOTQ2LTE1LjhhLjU3LjU3IDAgMCAwLS40NjgtLjg5NXpcIi8+XG48cGF0aCBmaWxsPVwiIzE3OUJEN1wiIGQ9XCJNOTQuOTkyIDYuNzQ5aC02Ljg0YS45NS45NSAwIDAgMC0uOTM4LjgwMmwtMi43NjYgMTcuNTM3YS41NjkuNTY5IDAgMCAwIC41NjIuNjU4aDMuNTFhLjY2NS42NjUgMCAwIDAgLjY1Ni0uNTYybC43ODUtNC45NzFhLjk1Ljk1IDAgMCAxIC45MzgtLjgwM2gyLjE2NGM0LjUwNiAwIDcuMTA1LTIuMTggNy43ODUtNi41LjMwNy0xLjg5LjAxMi0zLjM3NS0uODczLTQuNDE1LS45NzEtMS4xNDItMi42OTQtMS43NDYtNC45ODMtMS43NDZ6bS43ODkgNi40MDVjLS4zNzMgMi40NTQtMi4yNDggMi40NTQtNC4wNjIgMi40NTRoLTEuMDMxbC43MjUtNC41ODNhLjU2OC41NjggMCAwIDEgLjU2Mi0uNDgxaC40NzNjMS4yMzQgMCAyLjQgMCAzLjAwMi43MDQuMzU5LjQyLjQ2OCAxLjA0NC4zMzEgMS45MDZ6TTExNS40MzQgMTMuMDc1aC0zLjI3M2EuNTY3LjU2NyAwIDAgMC0uNTYyLjQ4MWwtLjE0NS45MTYtLjIzLS4zMzJjLS43MDktMS4wMjktMi4yODktMS4zNzMtMy44NjctMS4zNzMtMy42MTkgMC02LjcwOSAyLjc0MS03LjMxMSA2LjU4Ni0uMzEyIDEuOTE4LjEzMSAzLjc1MiAxLjIxOSA1LjAzMSAxIDEuMTc2IDIuNDI2IDEuNjY2IDQuMTI1IDEuNjY2IDIuOTE2IDAgNC41MzMtMS44NzUgNC41MzMtMS44NzVsLS4xNDYuOTFhLjU3LjU3IDAgMCAwIC41NjQuNjZoMi45NDlhLjk1Ljk1IDAgMCAwIC45MzgtLjgwM2wxLjc3MS0xMS4yMDlhLjU3MS41NzEgMCAwIDAtLjU2NS0uNjU4em0tNC41NjUgNi4zNzRjLS4zMTQgMS44NzEtMS44MDEgMy4xMjctMy42OTUgMy4xMjctLjk0OSAwLTEuNzExLS4zMDUtMi4xOTktLjg4My0uNDg0LS41NzQtLjY2Ni0xLjM5MS0uNTE0LTIuMzAxLjI5Ny0xLjg1NSAxLjgwNS0zLjE1MiAzLjY3LTMuMTUyLjkzIDAgMS42ODYuMzA5IDIuMTg0Ljg5Mi41MDEuNTg5LjY5OSAxLjQxMS41NTQgMi4zMTd6TTExOS4yOTUgNy4yM2wtMi44MDcgMTcuODU4YS41NjkuNTY5IDAgMCAwIC41NjIuNjU4aDIuODIyYy40NjkgMCAuODY3LS4zNC45MzktLjgwM2wyLjc2OC0xNy41MzZhLjU3LjU3IDAgMCAwLS41NjItLjY1OWgtMy4xNmEuNTcxLjU3MSAwIDAgMC0uNTYyLjQ4MnpcIi8+XG48cGF0aCBmaWxsPVwiIzI1M0I4MFwiIGQ9XCJNNy4yNjYgMjkuMTU0bC41MjMtMy4zMjItMS4xNjUtLjAyN0gxLjA2MUw0LjkyNyAxLjI5MmEuMzE2LjMxNiAwIDAgMSAuMzE0LS4yNjhoOS4zOGMzLjExNCAwIDUuMjYzLjY0OCA2LjM4NSAxLjkyNy41MjYuNi44NjEgMS4yMjcgMS4wMjMgMS45MTcuMTcuNzI0LjE3MyAxLjU4OS4wMDcgMi42NDRsLS4wMTIuMDc3di42NzZsLjUyNi4yOThhMy42OSAzLjY5IDAgMCAxIDEuMDY1LjgxMmMuNDUuNTEzLjc0MSAxLjE2NS44NjQgMS45MzguMTI3Ljc5NS4wODUgMS43NDEtLjEyMyAyLjgxMi0uMjQgMS4yMzItLjYyOCAyLjMwNS0xLjE1MiAzLjE4M2E2LjU0NyA2LjU0NyAwIDAgMS0xLjgyNSAyYy0uNjk2LjQ5NC0xLjUyMy44NjktMi40NTggMS4xMDktLjkwNi4yMzYtMS45MzkuMzU1LTMuMDcyLjM1NWgtLjczYy0uNTIyIDAtMS4wMjkuMTg4LTEuNDI3LjUyNWEyLjIxIDIuMjEgMCAwIDAtLjc0NCAxLjMyOGwtLjA1NS4yOTktLjkyNCA1Ljg1NS0uMDQyLjIxNWMtLjAxMS4wNjgtLjAzLjEwMi0uMDU4LjEyNWEuMTU1LjE1NSAwIDAgMS0uMDk2LjAzNUg3LjI2NnpcIi8+XG48cGF0aCBmaWxsPVwiIzE3OUJEN1wiIGQ9XCJNMjMuMDQ4IDcuNjY3Yy0uMDI4LjE3OS0uMDYuMzYyLS4wOTYuNTUtMS4yMzcgNi4zNTEtNS40NjkgOC41NDUtMTAuODc0IDguNTQ1SDkuMzI2Yy0uNjYxIDAtMS4yMTguNDgtMS4zMjEgMS4xMzJMNi41OTYgMjYuODNsLS4zOTkgMi41MzNhLjcwNC43MDQgMCAwIDAgLjY5NS44MTRoNC44ODFjLjU3OCAwIDEuMDY5LS40MiAxLjE2LS45OWwuMDQ4LS4yNDguOTE5LTUuODMyLjA1OS0uMzJjLjA5LS41NzIuNTgyLS45OTIgMS4xNi0uOTkyaC43M2M0LjcyOSAwIDguNDMxLTEuOTIgOS41MTMtNy40NzYuNDUyLTIuMzIxLjIxOC00LjI1OS0uOTc4LTUuNjIyYTQuNjY3IDQuNjY3IDAgMCAwLTEuMzM2LTEuMDN6XCIvPlxuPHBhdGggZmlsbD1cIiMyMjJENjVcIiBkPVwiTTIxLjc1NCA3LjE1MWE5Ljc1NyA5Ljc1NyAwIDAgMC0xLjIwMy0uMjY3IDE1LjI4NCAxNS4yODQgMCAwIDAtMi40MjYtLjE3N2gtNy4zNTJhMS4xNzIgMS4xNzIgMCAwIDAtMS4xNTkuOTkyTDguMDUgMTcuNjA1bC0uMDQ1LjI4OWExLjMzNiAxLjMzNiAwIDAgMSAxLjMyMS0xLjEzMmgyLjc1MmM1LjQwNSAwIDkuNjM3LTIuMTk1IDEwLjg3NC04LjU0NS4wMzctLjE4OC4wNjgtLjM3MS4wOTYtLjU1YTYuNTk0IDYuNTk0IDAgMCAwLTEuMDE3LS40MjkgOS4wNDUgOS4wNDUgMCAwIDAtLjI3Ny0uMDg3elwiLz5cbjxwYXRoIGZpbGw9XCIjMjUzQjgwXCIgZD1cIk05LjYxNCA3LjY5OWExLjE2OSAxLjE2OSAwIDAgMSAxLjE1OS0uOTkxaDcuMzUyYy44NzEgMCAxLjY4NC4wNTcgMi40MjYuMTc3YTkuNzU3IDkuNzU3IDAgMCAxIDEuNDgxLjM1M2MuMzY1LjEyMS43MDQuMjY0IDEuMDE3LjQyOS4zNjgtMi4zNDctLjAwMy0zLjk0NS0xLjI3Mi01LjM5MkMyMC4zNzguNjgyIDE3Ljg1MyAwIDE0LjYyMiAwaC05LjM4Yy0uNjYgMC0xLjIyMy40OC0xLjMyNSAxLjEzM0wuMDEgMjUuODk4YS44MDYuODA2IDAgMCAwIC43OTUuOTMyaDUuNzkxbDEuNDU0LTkuMjI1IDEuNTY0LTkuOTA2elwiLz5cbjwvc3ZnPmA7XG4iXSwibmFtZXMiOlsiYWRkSWNvbiIsImFsaWdubWVudF8xIiwidGFibGVfY2VsbF8xIiwidW5kZWZpbmVkIiwiZ2xvYmFsIiwidGhpcyIsImxvZGFzaF8xIiwibmV2ZXJ0aHJvd18xIiwicmVzdWx0c18xIiwiYXN0X3V0aWxzXzEiLCJjYWxjXzEiLCJyb3dfMSIsImNvbHVtbl8xIiwicmVmZXJlbmNlXzEiLCJyYW5nZV8xIiwiU2VtYW50aWNIZWxwZXJzXzEiLCJXM0NFQk5GXzEiLCJDdXN0b21fMSIsInJlcXVpcmUkJDAiLCJkaXNwbGF5X2RpcmVjdGl2ZV8xIiwiZGVzdGluYXRpb24iLCJkZXN0aW5hdGlvbl8xIiwic2luZ2xlX3BhcmFtX2Z1bmN0aW9uXzEiLCJjb25kaXRpb25hbF9mdW5jdGlvbl8xIiwiYWxnZWJyYWljX29wZXJhdGlvbl8xIiwiY29uc3RhbnRfMSIsImVibmZfMSIsImZvY3VzXzEiLCJwb2ludF8xIiwidGFibGVfcm93XzEiLCJ0YWJsZV8xIiwiYWxpZ25tZW50IiwidGFibGUiLCJmb3JtYXR0ZXJfMSIsInBhcnNlcl8xIiwicmFuZ2UiLCJlZGl0X3NjcmlwdF8xIiwiZm9jdXMiLCJmb3JtYXR0ZXJfanNfMSIsInRleHRfZWRpdG9yXzEiLCJvcHRpb25zXzEiLCJ0YWJsZV9lZGl0b3JfMSIsIkZvcm1hdFR5cGUiLCJvcHRpb25zV2l0aERlZmF1bHRzIiwiUG9pbnQiLCJBbGlnbm1lbnQiLCJTb3J0T3JkZXIiLCJOb3RpY2UiLCJNVEVFZGl0b3IiLCJNb2RhbCIsIk1hcmtkb3duVmlldyIsIkl0ZW1WaWV3IiwiUHJlYyIsImtleW1hcCIsIlBsdWdpbiIsIlNldHRpbmciLCJQbHVnaW5TZXR0aW5nVGFiIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksYUFBYSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNuQyxJQUFJLGFBQWEsR0FBRyxNQUFNLENBQUMsY0FBYztBQUN6QyxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxZQUFZLEtBQUssSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDcEYsUUFBUSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDMUcsSUFBSSxPQUFPLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDO0FBQ0Y7QUFDTyxTQUFTLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ2hDLElBQUksYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4QixJQUFJLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUMzQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDekYsQ0FBQztBQUNEO0FBQ08sSUFBSSxRQUFRLEdBQUcsV0FBVztBQUNqQyxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUNyRCxRQUFRLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzdELFlBQVksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixZQUFZLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pGLFNBQVM7QUFDVCxRQUFRLE9BQU8sQ0FBQyxDQUFDO0FBQ2pCLE1BQUs7QUFDTCxJQUFJLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDM0MsRUFBQztBQTRCRDtBQUNPLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtBQUM3RCxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sS0FBSyxZQUFZLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUNoSCxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLFVBQVUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUMvRCxRQUFRLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDbkcsUUFBUSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDdEcsUUFBUSxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUU7QUFDdEgsUUFBUSxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUUsS0FBSyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBQ0Q7QUFDTyxTQUFTLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFO0FBQzNDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNySCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLE1BQU0sS0FBSyxVQUFVLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxXQUFXLEVBQUUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdKLElBQUksU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDdEUsSUFBSSxTQUFTLElBQUksQ0FBQyxFQUFFLEVBQUU7QUFDdEIsUUFBUSxJQUFJLENBQUMsRUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUFDdEUsUUFBUSxPQUFPLENBQUMsRUFBRSxJQUFJO0FBQ3RCLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENB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akYsSUFBSSxNQUFNLEVBQUUsR0FBRyxHQUFHLE1BQU0sRUFBRSxHQUFHO0FBQzdCLElBQUksTUFBTSxFQUFFLEdBQUcsR0FBRyxNQUFNLEVBQUUsR0FBRztBQUM3QixJQUFJLE1BQU0sRUFBRSxHQUFHLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHO0FBQ3ZELElBQUksTUFBTSxFQUFFLEdBQUcsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUc7QUFDdkQsSUFBSSxNQUFNLEVBQUUsR0FBRyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRztBQUN2RCxJQUFJLE1BQU0sRUFBRSxHQUFHLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHO0FBQ3ZELElBQUksTUFBTSxFQUFFLEdBQUcsR0FBRyxNQUFNLEVBQUUsR0FBRztBQUM3QixJQUFJLE1BQU0sRUFBRSxHQUFHLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRztBQUNqRixJQUFJLE1BQU0sRUFBRSxHQUFHLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRztBQUNqRixJQUFJLE1BQU0sRUFBRSxHQUFHLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHO0FBQ3ZELElBQUksTUFBTSxFQUFFLEdBQUcsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUc7QUFDdkQsSUFBSSxNQUFNLEVBQUUsR0FBRyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUc7QUFDMUMsSUFBSSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJO0FBQzlCLElBQUksTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSTtBQUM5QixJQUFJLE1BQU0sRUFBRSxJQUFJO0FBQ2hCO0FBQ0EsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDaEQsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDaEQsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUMvRCxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQy9ELElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDL0QsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQzlFLElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUM5RSxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQy9ELElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDL0QsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUMvRCxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDOUUsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQzlFLElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRztBQUNqQyxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUNoRCxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDOUUsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQzlFLElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDL0QsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUMvRCxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUNoRCxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUNoRCxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUNoRCxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUNoRCxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQy9ELElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDL0QsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDaEQsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDaEQsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDN0YsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDN0YsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHO0FBQ2pDLElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQ2hELElB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LEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO0FBQ3ZELElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLFFBQVEsTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDbEQ7QUFDQSxJQUFJLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQzdCLE1BQU0sSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQzNDLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQLEtBQUs7QUFDTCxJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUNyQyxJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNsQixRQUFRLE1BQU0sR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTTtBQUNqRCxRQUFRLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0I7QUFDQSxJQUFJLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQzdCLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNELEtBQUs7QUFDTCxJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDcEMsSUFBSSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDbEIsUUFB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QUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUdBLFdBQVM7QUFDM0QsUUFBUSxhQUFhLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQyxPQUFPLEdBQUdBLFdBQVM7QUFDckUsUUFBUSxjQUFjLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQyxRQUFRLEdBQUdBLFdBQVMsQ0FBQztBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsTUFBTSxDQUFDLEtBQUssRUFBRTtBQUMzQixNQUFNLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxZQUFZLFdBQVcsQ0FBQyxFQUFFO0FBQ3JGLFFBQVEsSUFB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QUM3QixNQUFNLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLE1BQU0sSUFBSSxDQUFDLFFBQVEsR0FBRztBQUN0QixRQUFRLE1BQU0sRUFBRSxJQUFJLElBQUk7QUFDeEIsUUFBUSxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDO0FBQ3JDLFFBQVEsUUFBUSxFQUFFLElBQUksSUFBSTtBQUMxQixPQUFPLENBQUM7QUFDUixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsY0FBYyxDQUFDLEdBQUcsRUFBRTtBQUNqQyxNQUFNLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEQsTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFdBQVcsQ0FBQyxHQUFHLEVBQUU7QUFDOUIsTUFBTSxPQUFPLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFO0FBQzlCLE1BQU0sT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxXQUFXLENB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QUcsQ0FBQyxDQUFDLEVBQUU7QUFDM0QsVUFBVSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbkMsVUFBVSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztBQUNsQyxVQUFVLE9BQU8sSUFBSSxDQUFDO0FBQ3RCLFNBQVM7QUFDVCxRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25ELE9BQU87QUFDUCxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNCLE1BQU0sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzVCLE1BQU0sT0FBTyxJQUFJLENBQUM7QUFDbEIsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQztBQUN2QyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxDQUFDO0FBQzVDLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDO0FBQ25DLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDO0FBQ25DLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7QUFDN0MsTUFBTSxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQ2hDLFVBQVUsS0FBSyxHQUFHLENBQUMsS0FBSyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUM7QUFDOUMsVUFBVSxNQUFNLEdBQUcsQ0FBQyxL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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBQ3JDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDcEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwQyxNQUFNLE9BQU8sTUFBTSxJQUFJLElBQUksSUFBSSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFO0FBQzNELE1BQU0sT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQy9FLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRTtBQUM1RCxNQUFNLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNO0FBQy9CLFVBQVUsS0FBSyxHQUFHLFNBQVMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDMUM7QUFDQSxNQUFNLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEdBQUcsTUFBTTtBQUNwRCxRQUFRLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7QUFD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QzNCLFVBQVUsS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQztBQUNsQyxVQUFVLEtBQUssQ0FBQyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0MsVUFBVSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCxVQUFVLEtBQUssQ0FBQyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RCxVQUFVLEtBQUssQ0FBQyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEUsVUFBVSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRSxVQUFVLEtBQUssQ0FBQyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RixVQUFVLEtBQUssQ0FBQyxFQUFF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LENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsR0FBRyxJQUFJLEdBQUcsU0FBUyxNQUFNLEVBQUU7QUFDeEcsTUFBTSxPQUFPLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdCLEtBQUssQ0FBQztBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsYUFBYSxDQUFDLFFBQVEsRUFBRTtBQUNyQyxNQUFNLE9BQU8sU0FBUyxNQUFNLEVBQUU7QUFDOUIsUUFBUSxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakMsUUFBUSxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUU7QUFDM0IsVUFBVSxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwQyxTQUFTO0FBQ1QsUUFBUSxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUU7QUFDM0IsVUFBVSxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwQyxTQUFTO0FBQ1QsUUFBUSxPQUFPLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckQsT0FBTyxDQUFDO0FBQ1IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDdkYsTUFBTSxJQUFJLFNBQVMsR0FBRyxPQUFPLEdBQUcsa0JBQWtCLENBQUM7QUFDbkQs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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsY0FBYyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7QUFDOUMsTUFBTSxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNO0FBQ25DLFVBQVUsU0FBUyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDakUsVUFBVSxFQUFFLENBQUM7QUFDYixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFO0FBQ3pDLE1BQU0sT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTTtBQUNuQyxVQUFVLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7QUFDM0QsVUFBVSxFQUFFLENBQUM7QUFDYixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDNUMsTUFBTSxJQUFJLE1BQU0s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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFO0FBQzNCLE1BQU0sT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdBLFdBQVMsQ0FBQztBQUNoRixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQ3BDLE1BQU0sT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTTtBQUM5RCxVQUFVLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO0FBQ3BDLFVBQVUsS0FBSyxDQUFDO0FBQ2hCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0FBQ2hELE1BQU0sT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTTtBQUM5RCxVQUFVLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUQsVUFBVSxLQUFLLENBQUM7QUFDaEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUU7QUFDcEQsTUFBTSxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNO0FBQzlELFVBQVUsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUVBLFdBQVMsRUFBRSxVQUFVLENBQUM7QUFDM0QsVUFBVSxLQUFLLENBQUM7QUFDaEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsU0FBUyxLQUFLLEVBQUUsT0FBTyxFQUFFO0FBQ25ELE1BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU07QUFDbkQsVUFBVSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMxQztBQUNBLE1BQU0sVUFBVSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLFNBQVMsS0FBSyxFQUFFO0FBQzFELFFBQVEsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN2RCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0FBQ2pDO0FBQ0EsTUFBTSxPQUFPLE1BQU0sQ0FBQztBQUNwQixLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7QUFDdEMsTUFBTSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxJQUFJLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUNwQyxRQUFRLE9BQU8sTUFBTSxDQUFDO0FBQ3RCLE9BQU87QUFDUCxNQUFNLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNwQixVQUFVLE9BQU8sR0FBRyxFQUFFO0FBQ3RCLFVBQVUsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDaEM7QUFDQSxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVDLE1BQU0sT0FBTyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUU7QUFDL0IsUUFBUSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakMsUUFBUSxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFO0FBQzVDLFVBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QixVQUFVLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUIsU0FBUztBQUNULE9BQU87QUFDUCxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDakMsTUFBTSxPQUFPLE1BQU0sQ0FBQztBQUNwQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDNUIsTUFBTSxPQUFPLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQ3RDLE1BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNwRCxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDbkIsUUFBUSxPQUFPLEVBQUUsQ0FBQztBQUNsQixPQUFPO0FBQ1AsTUFBTSxJQUFJLEdBQUcsSUFBSSxPQUFPLEdBQUcsSUFBSSxRQUFRLElBQUksY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDOUUsUUFBUSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLFFBQVEsR0FBRyxHQUFHLE1BQU0sQ0FBQztBQUNyQixPQUFPO0FBQ1AsV0FBVztBQUNYLFFBQVEsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyRCxRQUFRLEdBQUcsR0FBRyxHQUFHLEtBQUtBLFdBQVMsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFELE9BQU87QUFDUCxNQUFNLE9BQU8sU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUN2QyxNQUFNLE9BQU8sZUFBZSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMzQyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7QUFDbkQsTUFBTSxPQUFPLGlCQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQ3pDLE1BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNwRCxNQUFNLElBQUksTUFBTSxFQUFFO0FBQ2xCLFFBQVEsSUFBSSxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsRCxRQUFRLElBQUksS0FBSyxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO0FBQ3ZELFVBQVUsT0FBTyxLQUFLLENBQUM7QUFDdkIsU0FBUztBQUNULE9BQU87QUFDUCxNQUFNLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDaEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLGVBQWUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQzNDLE1BQU0sT0FBTyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUN2RCxNQUFNLE9BQU8saUJBQWlCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLGlCQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDN0MsTUFBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3BELE1BQU0sSUFBSSxNQUFNLEVBQUU7QUFDbEIsUUFBUSxJQUFJLEtBQUssR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUQsUUFBUSxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUU7QUFDckMsVUFBVSxPQUFPLEtBQUssQ0FBQztBQUN2QixTQUFTO0FBQ1QsT0FBTztBQUNQLE1BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNoQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsVUFBVSxDQUFDLEtBQUssRUFBRTtBQUMvQixNQUFNLE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU07QUFDbkMsVUFBVSxjQUFjLENBQUMsS0FBSyxDQUFDO0FBQy9CLFVBQVUsRUFBRSxDQUFDO0FBQ2IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUU7QUFDM0MsTUFBTSxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNO0FBQ25DLFVBQVUsY0FBYyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3pELFVBQVUsRUFBRSxDQUFDO0FBQ2IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3pCLE1BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNwRCxNQUFNLE9BQU8sTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN2RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUU7QUFDbkMsTUFBTSxJQUFJLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUNwQyxRQUFRLE9BQU8sRUFBRSxDQUFDO0FBQ2xCLE9BQU87QUFDUCxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUtBLFdBQVMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELE1BQU0sT0FBTyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUU7QUFDeEMsTUFBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3BELE1BQU0sSUFBSSxDQUFDLE1BQU0s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QU0sR0FBRyxDQUFDLENBQUMsR0FBR0EsV0FBUyxDQUFDO0FBQ2pFO0FBQ0EsTUFBTSxRQUFRLEdBQUcsT0FBTyxRQUFRLElBQUksVUFBVSxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxRQUFRLElBQUlBLFdBQVMsQ0FBQztBQUN0RixNQUFNLE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN6QyxLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRTtBQUMxQixNQUFNLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqQyxNQUFNLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQzlCLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRTtBQUNyQyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixNQUFNLE9BQU8sS0FBSyxDQUFDO0FBQ25CLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMs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SUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRTtBQUMzQyxNQUFNLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxXQUFXLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRTtBQUMvQyxNQUFNLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDOUQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFlBQVksQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtBQUN2RCxNQUFNLEtBQUssR0FBRyxLQUFLLEtBQUtBLFdBQVMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtB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QUFNLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNFLFdBQVcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQzlELE1BQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLFVBQVUsTUFBTSxHQUFHLE9BQU8sSUFBSSxJQUFJLFVBQVU7QUFDNUMsVUFBVSxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzNFO0FBQ0EsTUFBTSxRQUFRLENBQUMsVUFBVSxFQUFFLFNBQVMsS0FBSyxFQUFFO0FBQzNDLFFBQVEsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzVGLE9BQU8sQ0FBQyxDQUFDO0FBQ1QsTUFBTSxPQUFPLE1BQU0sQ0FBQztBQUNwQixLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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V0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25ILE1BQU0sTUFBTSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO0FBQzdDLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDNUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxHQUFHQSxXQUFTLEdBQUcsS0FBSyxDQUFDO0FBQ3hDLE1BQU0sSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRUEsV0FBUyxFQUFFQSxXQUFTLEVBQUVBLFdBQVMsRUFBRUEsV0FBUyxFQUFFQSxXQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekgsTUFBTSxNQUFNLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7QUFDbEQsTUFBTSxPQUFPLE1BQU0sQ0FBQztBQUNwQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QU0sT0FBTyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0QyxLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ3BELE1BQU0sT0FBTyxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDeEQsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ3hCLE1BQU0sT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQzlDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDckMsTUFBTSxJQUFJLE9BQU8sSUFBSSxJQUFJLFVBQVUsS0FBSyxRQUFRLElBQUksSUFBSSxJQUFJLE9BQU8sUUFBUSxJQUFJLFVBQVUsQ0FBQyxFQUFFO0FBQzVGLFFBQVEsTUFBTSxJQUFJLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUM3QyxPQUFPO0FBQ1AsTUFBTSxJQUFJLFFBQVEsR0FBRyxXQUFXO0FBQ2hDLFFBQVEsSUFBSSxJQUFJLEdBQUcsU0FBUztBQUM1QixZQUFZLEdBQUcsR0FBRyxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNqRSxZQUFZLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO0FBQ25DO0FBQ0EsUUFBUSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDNUIsVUFBVSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEMsU0FBUztBQUNULFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUMsUUFBUSxRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQztBQUN6RCxRQUFRLE9BQU8sTUFBTSxDQUFDO0FBQ3RCLE9BQU8sQ0FBQztBQUNSLE1BQU0sUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLE9BQU8sQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLENBQUM7QUFDdkQsTUFBTSxPQUFPLFFBQVEsQ0FBQztBQUN0QixLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxTQUFTLEVBQUU7QUFDL0IsTUFBTSxJQUFJLE9BQU8sU0FBUyxJQUFJLFVBQVUsRUFBRTtBQUMxQyxRQUFRLE1BQU0sSUFBSSxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDN0MsT0FBTztBQUNQLE1BQU0sT0FBTyxXQUFXO0FBQ3hCLFFBQVEsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDO0FBQzdCLFFBQVEsUUFBUSxJQUFJLENBQUMsTUFBTTtBQUMzQixVQUFVLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9DLFVBQVUsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELFVBQVUsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRSxVQUFVLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFFLFNBQVM7QUFDVCxRQUFRLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM1QyxPQUFPLENBQUM7QUFDUixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRTtBQUN4QixNQUFNLE9BQU8sTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFLFVBQVUsRUFBRTtBQUN2RCxNQUFNLFVBQVUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEUsVUFBVSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQzNELFVBQVUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6RTtBQUNBLE1BQU0sSUFBSSxXQUFXLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUMxQyxNQUFNLE9BQU8sUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFO0FBQ3JDLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLFlBQVksTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3pEO0FBQ0EsUUFBUSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUNqQyxVQUFVLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNsRSxTQUFTO0FBQ1QsUUFBUSxPQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLE9BQU8sQ0FBQyxDQUFDO0FBQ1QsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUNwRCxNQUFNLElBQUksT0FBTyxHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDakUsTUFBTSxPQUFPLFVBQVUsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUVBLFdBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDL0UsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDekQsTUFBTSxJQUFJLE9BQU8sR0FBRyxjQUFjLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLE1BQU0sT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFQSxXQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3JGLEtBQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUNqRCxNQUFNLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUVBLFdBQVMsRUFBRUEsV0FBUyxFQUFFQSxXQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDekYsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQy9CLE1BQU0sSUFBSSxPQUFPLElBQUksSUFBSSxVQUFVLEVBQUU7QUFDckMsUUFBUSxNQUFNLElBQUksU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQzdDLE9BQU87QUFDUCxNQUFNLEtBQUssR0FBRyxLQUFLLEtBQUtBLFdBQVMsR0FBRyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzdELE1BQU0sT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25DLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQ2pDLE1BQU0sSUFBSSxPQUFPLElBQUksSUFBSSxVQUFVLEVBQUU7QUFDckMsUUFBUSxNQUFNLElBQUksU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQzdDLE9BQU87QUFDUCxNQUFNLEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLE1BQU0sT0FBTyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUU7QUFDckMsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQy9CLFlBQVksU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2xEO0FBQ0EsUUFBUSxJQUFJLEtBQUssRUFBRTtBQUNuQixVQUFVLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEMsU0FBUztBQUNULFFBQVEsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM1QyxPQUFPLENBQUMsQ0FBQztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0FBQzNDLE1BQU0sSUFBSSxPQUFPLEdBQUcsSUFBSTtBQUN4QixVQUFVLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDMUI7QUFDQSxNQUFNLElBQUksT0FBTyxJQUFJLElBQUksVUFBVSxFQUFFO0FBQ3JDLFFBQVEsTUFBTSxJQUFJLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUM3QyxPQUFPO0FBQ1AsTUFBTSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUM3QixRQUFRLE9BQU8sR0FBRyxTQUFTLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUNyRSxRQUFRLFFBQVEsR0FBRyxVQUFVLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUN6RSxPQUFPO0FBQ1AsTUFBTSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ2xDLFFBQVEsU0FBUyxFQUFFLE9BQU87QUFDMUIsUUFBUSxTQUFTLEVBQUUsSUFBSTtBQUN2QixRQUFRLFVBQVUsRUFBRSxRQUFRO0FBQzVCLE9BQU8sQ0FBQyxDQUFDO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxJQUFJLEVBQUU7QUFDekIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUU7QUFDbEMsTUFBTSxPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxTQUFTLEdBQUc7QUFDekIsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtBQUM3QixRQUFRLE9BQU8sRUFBRSxDQUFDO0FBQ2xCLE9BQU87QUFDUCxNQUFNLElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQixNQUFNLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRTtBQUMxQixNQUFNLE9BQU8sU0FBUyxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQ2xELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO0FBQzFDLE1BQU0sVUFBVSxHQUFHLE9BQU8sVUFBVSxJQUFJLFVBQVUsR0FBRyxVQUFVLEdBQUdBLFdBQVMsQ0FBQztBQUM1RSxNQUFNLE9BQU8sU0FBUyxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxVQUFVLENBQUMs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QztBQUN2QixTQUFTO0FBQ1QsT0FBTztBQUNQLE1BQU0sT0FBTyxJQUFJLENBQUM7QUFDbEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDbkMsTUFBTSxPQUFPLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7QUFDbkQsTUFBTSxVQUFVLEdBQUcsT0FBTyxVQUFVLElBQUksVUFBVSxHQUFHLFVBQVUsR0FBR0EsV0FBUyxDQUFDO0FBQzVFLE1BQU0sSUFBSSxNQUFNLEdBQUcsVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUdBLFdBQVMsQ0FBQztBQUNyRSxNQUFNLE9BQU8sTUFBTSxLQUFLQSxXQUFTLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUVBLFdBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ2hHLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzVCLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNoQyxRQUFRLE9BQU8sS0FBSyxDQUFDO0FBQ3JCLE9BQU87QUFDUCxNQUFNLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLFFBQVEsSUFBSSxHQUFHLElBQUksU0FBUztBQUNoRCxTQUFTLE9BQU8sS0FBSyxDQUFDLE9BQU8sSUFBSSxRQUFRLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxJQUFJLFFBQVEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3JHLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRTtBQUM3QixNQUFNLE9BQU8sT0FBTyxLQUFLLElBQUksUUFBUSxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFVBQVUsQ0FBQyxLQUFLLEVBQUU7QUFDL0IsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzVCLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sSUFBSSxHQUFHLElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQztBQUNuRixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUU7QUFDOUIsTUFBTSxPQUFPLE9BQU8sS0FBSyxJQUFJLFFBQVEsSUFBSSxLQUFLLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25FLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRTtBQUM3QixNQUFNLE9BQU8sT0FBTyxLQUFLLElBQUksUUFBUTtBQUNyQyxRQUFRLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksZ0JBQWdCLENBQUM7QUFDbEUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRTtBQUM3QixNQUFNLElBQUksSUFBSSxHQUFHLE9BQU8sS0FBSyxDQUFDO0FBQzlCLE1BQU0sT0FBTyxLQUFLLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxRQUFRLElBQUksSUFBSSxJQUFJLFVBQVUsQ0FBQyxDQUFDO0FBQ3ZFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxZQUFZLENBQUMsS0FBSyxFQUFFO0FBQ2pDLE1BQU0sT0FBTyxLQUFLLElBQUksSUFBSSxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsQ0FBQztBQUN2RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3JDLE1BQU0sT0FBTyxNQUFNLEtBQUssTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO0FBQ3JELE1BQU0sVUFBVSxHQUFHLE9BQU8sVUFBVSxJQUFJLFVBQVUsR0FBRyxVQUFVLEdBQUdBLFdBQVMsQ0FBQztBQUM1RSxNQUFNLE9BQU8sV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzNFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUU7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsTUFBTSxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDaEQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0FBQzdCLE1BQU0sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDN0IsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ3pDLE9BQU87QUFDUCxNQUFNLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsTUFBTSxDQUFDLEtBQUssRUFBRTtBQUMzQixNQUFNLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQztBQUM1QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUU7QUFDMUIsTUFBTSxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUM7QUFDM0IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0FBQzdCLE1BQU0sT0FBTyxPQUFPLEtBQUssSUFBSSxRQUFRO0FBQ3JDLFNBQVMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQztBQUNoRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxhQUFhLENBQUMsS0FBSyxFQUFFO0FBQ2xDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxFQUFFO0FBQ2xFLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsT0FBTztBQUNQLE1BQU0sSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDLE1B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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUU7QUFDOUIsTUFBTSxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxDQUFDO0FBQ2hFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRTtBQUM5QixNQUFNLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUM7QUFDcEUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxFQUFFLEdBQUcseUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEdBQUcsR0FBRyx5QkFBeUIsQ0FBQyxTQUFTLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDL0QsTUFBTSxPQUFPLEtBQUssSUFBSSxLQUFLLENBQUM7QUFDNUIsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLFlBQVksR0FBRyxjQUFjLENBQUMsU0FBUyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7QUFDckYsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDN0QsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLFVBQVUsR0FBRyxjQUFjLENBQUMsU0FBUyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7QUFDbkYsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDM0QsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRTtBQUN4QyxNQUFNLE9BQU8sV0FBVyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3hFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUU7QUFDNUMsTUFBTSxPQUFPLFdBQVcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUM3RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTtBQUNyQyxNQUFNLE9BQU8sTUFBTSxJQUFJLElBQUk7QUFDM0IsVUFBVSxNQUFNO0FBQ2hCLFVBQVUsT0FBTyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzVELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDMUMsTUFBTSxPQUFPLE1BQU0sSUFBSSxJQUFJO0FBQzNCLFVBQVUsTUFBTTtBQUNoQixVQUFVLFlBQVksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNqRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTtBQUN0QyxNQUFNLE9BQU8sTUFBTSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDM0MsTUFBTSxPQUFPLE1BQU0sSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxNQUFNLEVBQUU7QUFDL0IsTUFBTSxPQUFPLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdkUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2pDLE1BQU0sT0FBTyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRTtBQUM3QyxNQUFNLElBQUksTUFBTSxHQUFHLE1BQU0sSUFBSSxJQUFJLEdBQUdBLFdBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RFLE1BQU0sT0FBTyxNQUFNLEtBQUtBLFdBQVMsR0FBRyxZQUFZLEdBQUcsTUFBTSxDQUFDO0FBQzFELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtBQUMvQixNQUFNLE9BQU8sTUFBTSxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUM5RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBQ2pDLE1BQU0sT0FBTyxNQUFNLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2hFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFDLFNBQVMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDN0QsTUFBTSxJQUFJLEtBQUssSUFBSSxJQUFJO0FBQ3ZCLFVBQVUsT0FBTyxLQUFLLENBQUMsUUFBUSxJQUFJLFVBQVUsRUFBRTtBQUMvQyxRQUFRLEtBQUssR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakQsT0FBTztBQUNQO0FBQ0EsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQzFCLEtBQUssRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLGNBQWMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQy9ELE1BQU0sSUFBSSxLQUFLLElBQUksSUFBSTtBQUN2QixVQUFVLE9BQU8sS0FBSyxDQUFDLFFBQVEsSUFBSSxVQUFVLEVBQUU7QUFDL0MsUUFBUSxLQUFLLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pELE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRTtBQUM5QyxRQUFRLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEMsT0FBTyxNQUFNO0FBQ2IsUUFBUSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QixPQUFPO0FBQ1AsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQzFCLE1BQU0sT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxNQUFNLEVBQUU7QUFDNUIsTUFBTSxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwRixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDdkMsTUFBTSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxQztBQUNBLE1BQU0sVUFBVSxDQUFDLE1BQU0sRUFBRSxTQUFTLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFO0FBQ3RELFFBQVEsZUFBZSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyRSxPQUFPLENBQUMsQ0FBQztBQUNULE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDekMsTUFBTSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxQztBQUNBLE1BQU0sVUFBVSxDQUFDLE1BQU0sRUFBRSxTQUFTLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFO0FBQ3RELFFBQVEsZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNuRSxPQUFPLENBQUMsQ0FBQztBQUNULE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLGNBQWMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0FBQ2xFLE1BQU0sU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUMsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUFLLEdBQUcsTUFBTSxJQUFJLElBQUksR0FBR0EsV0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RSxRQUFRLElBQUksS0FBSyxLQUFLQSxXQUFTLEVBQUU7QUFDakMsVUFBVSxLQUFLLEdBQUcsTUFBTSxDQUFDO0FBQ3pCLFVBQVUsS0FBSyxHQUFHLFlBQVksQ0FBQztBQUMvQixTQUFTO0FBQ1QsUUFBUSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ2hFLE9BQU87QUFDUCxNQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUN0QyxNQUFNLE9BQU8sTUFBTSxJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDcEUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7QUFDdEQsTUFBTSxVQUFVLEdBQUcsT0FBTyxVQUFVLElBQUksVUFBVSxHQUFHLFVBQVUsR0FBR0EsV0FBUyxDQUFD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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUMzQyxNQUFNLE9BQU8sTUFBTSxJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDdkYsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUU7QUFDM0QsTUFBTSxVQUFVLEdBQUcsT0FBTyxVQUFVLElBQUksVUFBVSxHQUFHLFVBQVUsR0FBR0EsV0FBUyxDQUFDO0FBQzVFLE1BQU0sT0FBTyxNQUFNLElBQUksSUFBSSxHQUFHLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDbkcsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzVCLE1BQU0sT0FBTyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxRQUFRLENBQUMsTUFBTSxFQUFFO0FBQzlCLE1BQU0sT0FBTyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDekMsTUFBTSxJQUFJLEtBQUssS0FBS0EsV0FBUyxFQUFFO0FBQy9CLFFBQVEsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN0QixRQUFRLEtBQUssR0FBR0EsV0FBUyxDQUFDO0FBQzFCLE9BQU87QUFDUCxNQUFNLElBQUksS0FBSyxLQUFLQSxXQUFTLEVBQUU7QUFDL0IsUUFBUSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLFFBQVEsS0FBSyxHQUFHLEtBQUssS0FBSyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUM1QyxPQUFPO0FBQ1AsTUFBTSxJQUFJLEtBQUssS0FBS0EsV0FBUyxFQUFFO0FBQy9CLFFBQVEsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQyxRQUFRLEtBQUssR0FBRyxLQUFLLEtBQUssS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDNUMsT0FBTztBQUNQLE1BQU0sT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN2RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUN6QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUIsTUFBTSxJQUFJLEdBQUcsS0FBS0EsV0FBUyxFQUFFO0FBQzdCLFFBQVEsR0FBRyxHQUFHLEtBQUssQ0FBQztBQUNwQixRQUFRLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDbEIsT0FBTyxNQUFNO0FBQ2IsUUFBUSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLE9BQU87QUFDUCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEMsTUFBTSxPQUFPLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzdDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUM1QyxNQUFNLElBQUksUUFBUSxJQUFJLE9BQU8sUUFBUSxJQUFJ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LENBQUMsS0FBSyxFQUFFLFNBQVMsSUFBSSxFQUFFO0FBQzVELFFBQVEsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUU7QUFDMUMsVUFBVSxNQUFNLElBQUksU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQy9DLFNBQVM7QUFDVCxRQUFRLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsT0FBTyxDQUFDLENBQUM7QUFDVDtBQUNBLE1BQU0sT0FBTyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUU7QUFDckMsUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2QixRQUFRLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQ2pDLFVBQVUsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLFVBQVUsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTtBQUMxQyxZQUFZLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUMsV0FBVztBQUNYLFNBQVM7QUFDVCxPQUFPLENBQUMsQ0FBQztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxRQUFRLENBQUMsTUFBTSxFQUFFO0FBQzlCLE1BQU0sT0FBTyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO0FBQzlELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBTSxPQUFPLFdBQVc7QUFDeEIsUUFBUSxPQUFPLEtBQUssQ0FBQztBQUNyQixPQUFPLENBQUM7QUFDUixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO0FBQzVDLE1BQU0sT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO0FBQ3ZFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLElBQUksR0FBRyxVQUFVLEVBQUUsQ0FBQztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRTtBQUM3QixNQUFNLE9BQU8sS0FBSyxDQUFDO0FBQ25CLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFO0FBQzVCLE1BQU0sT0FBTyxZQUFZLENBQUMsT0FBTyxJQUFJLElBQUksVUFBVSxHQUFHLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7QUFDL0YsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsTUFBTSxFQUFFO0FBQzdCLE1BQU0sT0FBTyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO0FBQzdELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxlQUFlLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUM3QyxNQUFNLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxF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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxDQUFDLEVBQUU7QUFDdkIsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0sT0FBTyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUU7QUFDckMsUUFBUSxPQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEMsT0FBTyxDQUFDLENBQUM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLFNBQVMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLElBQUksRUFBRTtBQUM1QixNQUFNLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRTtBQUNoQyxNQUFNLE9BQU8sU0FBUyxJQUFJLEVBQUU7QUFDNUIsUUFBUSxPQUFPLE1BQU0sSUFBSSxJQUFJLEdBQUdBLFdBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xFLE9BQU8sQ0FBQztBQUNSLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLFVBQVUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsU0FBUyxHQUFHO0FBQ3pCLE1BQU0sT0FBTyxFQUFFLENBQUM7QUFDaEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsU0FBUyxHQUFHO0FBQ3pCLE1BQU0sT0FBTyxLQUFLLENBQUM7QUFDbkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFVBQVUsR0FBRztBQUMxQixNQUFNLE9BQU8sRUFBRSxDQUFDO0FBQ2hCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFVBQVUsR0FBRztBQUMxQixNQUFNLE9BQU8sRUFBRSxDQUFDO0FBQ2hCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsR0FBRztBQUN4QixNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFO0FBQ2hD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SyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENB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RyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUM7QUFDcEIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3BCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN0QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQztBQUN4QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDO0FBQ3hCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDeEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxH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QUNiO0FBQ0EsWUFBWSxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNyRixTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFO0FBQ3JDLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDMUQsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUN0QyxRQUFRLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLEtBQUs7QUFDdkQsWUFBWSxJQUFJLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO0FBQzNDO0FBQ0EsWUFBWSxNQUFNLFNBQVMsR0FBR0YsU0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xGLFlBQVksSUFBSSxTQUFTLENBQUMsaUJBQWlCLElBQUksUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7QUFDakUsZ0JBQWdCLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0QsYUFBYTtBQUNiO0FBQ0EsWUFBWSxNQUFNLFNBQVMsR0FBR0EsU0FB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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9pY29ucy50cyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL3BvaW50LmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvcmFuZ2UuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9mb2N1cy5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2FsaWdubWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL3RhYmxlLWNlbGwuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi90YWJsZS1yb3cuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9uZXZlcnRocm93L25ldmVydGhyb3cuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL2FzdF91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9kZWNpbWFsLmpzL2RlY2ltYWwuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2xvZGFzaC5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvcmVzdWx0cy5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvYWxnZWJyYWljX29wZXJhdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvY29uZGl0aW9uYWxfZnVuY3Rpb24uanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL2NvbnN0YW50LmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9jb2x1bW4uanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL3Jvdy5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvcmVmZXJlbmNlLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9yYW5nZS5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvZGVzdGluYXRpb24uanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL2Rpc3BsYXlfZGlyZWN0aXZlLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9zaW5nbGVfcGFyYW1fZnVuY3Rpb24uanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L1Rva2VuRXJyb3IuanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L1BhcnNlci5qcyIsIm5vZGVfbW9kdWxlcy9lYm5mL2Rpc3QvU2VtYW50aWNIZWxwZXJzLmpzIiwibm9kZV9tb2R1bGVzL2VibmYvZGlzdC9HcmFtbWFycy9CTkYuanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L0dyYW1tYXJzL1czQ0VCTkYuanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L0dyYW1tYXJzL0N1c3RvbS5qcyIsIm5vZGVfbW9kdWxlcy9lYm5mL2Rpc3QvR3JhbW1hcnMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9jYWxjLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvdGFibGUuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9wYXJzZXIuanMiLCJub2RlX21vZHVsZXMvbWVhdy9saWIvaW5kZXgubWpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvZm9ybWF0dGVyLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvZWRpdC1zY3JpcHQuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi90ZXh0LWVkaXRvci5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL29wdGlvbnMuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi90YWJsZS1lZGl0b3IuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9pbmRleC5qcyIsInNyYy9zZXR0aW5ncy50cyIsInNyYy9vYnNpZGlhbi10ZXh0LWVkaXRvci50cyIsInNyYy90YWJsZS1lZGl0b3IudHMiLCJzcmMvdGFibGUtY29udHJvbHMtdmlldy50cyIsInNyYy9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH0pO1xyXG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIG9bazJdID0gbVtrXTtcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XHJcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcclxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcclxuICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICByZXR1cm4gcjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcclxufSkgOiBmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcclxuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHByaXZhdGVNYXApIHtcclxuICAgIGlmICghcHJpdmF0ZU1hcC5oYXMocmVjZWl2ZXIpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2VcIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJpdmF0ZU1hcC5nZXQocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgcHJpdmF0ZU1hcCwgdmFsdWUpIHtcclxuICAgIGlmICghcHJpdmF0ZU1hcC5oYXMocmVjZWl2ZXIpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImF0dGVtcHRlZCB0byBzZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2VcIik7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlTWFwLnNldChyZWNlaXZlciwgdmFsdWUpO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG59XHJcbiIsImltcG9ydCB7IGFkZEljb24gfSBmcm9tICdvYnNpZGlhbic7XG5cbmV4cG9ydCBjb25zdCBpY29uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgc3ByZWFkc2hlZXQ6IGBcbjxzdmcgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgNDgyLjgxIDQ4Mi44MVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJtNDU3LjU4IDI1LjQ2NC00MzIuODMgMC40MjE1MWMtMTMuNjU4IDAuMDEzMzE0LTI0Ljc1OCAxMS4xMTUtMjQuNzU3IDI0Ljc1N2wwLjAzMTAyNCAzNDcuNDVjNy40ODMzZS00IDguMzgwOCA0LjIxMSAxNS43NzIgMTAuNjA4IDIwLjI1OSAzLjQ1MzMgMi40NDk5IDUuMDcxNiAzLjI5MDEgOC44NzkgMy45MDIyIDEuNzAzMyAwLjM3MzMzIDMuNDU2MSAwLjU5NDcxIDUuMjY5MiAwLjU5Mjk0bDQzMi44NC0wLjQyMTUxYzEuODA5LTFlLTMgMy41NjE4LTAuMjE4MjMgNS4yNTY4LTAuNTkyOTRoMS4yMTc0di0wLjM3MTk2YzEwLjUwNS0yLjg3MjcgMTguMjc5LTEyLjM5NyAxOC4yNzgtMjMuNzg4bC0wLjAzMS0zNDcuNDNjMWUtMyAtMTMuNjQ5LTExLjEwNy0yNC43NjMtMjQuNzY4LTI0Ljc2M3ptMy41NDUzIDI0Ljc2M3Y3MS4zNDRoLTE2My4zMXYtNzQuODg2aDE1OS43NmMxLjk2NDEgMC4wMDE0IDMuNTQ2NyAxLjU5MjIgMy41NDY3IDMuNTQyNXptLTEuNjczNyAzNTAuMzdoLTE2MS42di02Ny4yMDdoMTYzLjMxdjY0LjI2OGMxZS0zIDEuMjU3Mi0wLjcwNTQ5IDIuMzIxLTEuNzAzMyAyLjkzODZ6bS00MzguMjEtMi41MTcxdi02NC4yNjhoNzYuNjQ2djY3LjIwN2gtNzQuOTQyYy0wLjk5Nzg0LTAuNjE3NjUtMS43MDMzLTEuNjgxNC0xLjcwMzMtMi45Mzg2em0yNTUuMjgtMTU1LjE4djY5LjY4OGgtMTU3LjQydi02OS42ODh6bTAgOTAuOTEzdjY3LjIwN2gtMTU3LjQydi02Ny4yMDd6bS0wLjAzMS0yMTEuODNoLTE1Ny40MnYtNzQuODg2aDE1Ny40MnptMCAyMS4yMjZ2NzcuODI2aC0xNTcuNDJ2LTc3LjgyNnptLTE3OC42NCA3Ny44MjZoLTc2LjY0NnYtNzcuODI2aDc2LjY0NnptMC4wMzEwMiAyMS44NjJ2NjkuNjg4aC03Ni42NDZ2LTY5LjY4OHptMTk5Ljk1IDY5LjI2OHYtNjkuNjk3aDE2My4zMXY2OS42OTd6bS0wLjAzMS05MS41NTJ2LTc3LjgyNmgxNjMuMzF2NzcuODI2elwiIHN0cm9rZS13aWR0aD1cIjEuMzcyNVwiLz5cbjwvc3ZnPmAsXG4gIGFsaWduTGVmdDogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDUxMiA1MTJcIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8ZyB0cmFuc2Zvcm09XCJtYXRyaXgoLTEgMCAwIDEgNTEyIDApXCI+XG4gICAgPHBhdGggZD1cIm01MDEuMzMgMTcwLjY3aC0zMjBjLTUuODk2IDAtMTAuNjY3IDQuNzcxLTEwLjY2NyAxMC42Njd2MjEuMzMzYzAgNS44OTYgNC43NzEgMTAuNjY3IDEwLjY2NyAxMC42NjdoMzIwYzUuODk2IDAgMTAuNjY3LTQuNzcxIDEwLjY2Ny0xMC42Njd2LTIxLjMzM2MwLTUuODk2LTQuNzcxLTEwLjY2Ny0xMC42NjctMTAuNjY3elwiLz5cbiAgICA8cGF0aCBkPVwibTUwMS4zMyAyOTguNjdoLTQ5MC42N2MtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2NnYyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2g0OTAuNjdjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYy0xZS0zIC01Ljg5NS00Ljc3Mi0xMC42NjYtMTAuNjY4LTEwLjY2NnpcIi8+XG4gICAgPHBhdGggZD1cIm01MDEuMzMgNDI2LjY3aC0zMjBjLTUuODk2IDAtMTAuNjY3IDQuNzcxLTEwLjY2NyAxMC42Njd2MjEuMzMzYzAgNS44OTYgNC43NzEgMTAuNjY3IDEwLjY2NyAxMC42NjdoMzIwYzUuODk2IDAgMTAuNjY3LTQuNzcxIDEwLjY2Ny0xMC42Njd2LTIxLjMzM2MwLTUuODk2LTQuNzcxLTEwLjY2Ny0xMC42NjctMTAuNjY3elwiLz5cbiAgICA8cGF0aCBkPVwibTUwMS4zMyA0Mi42NjdoLTQ5MC42N2MtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2NnYyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2g0OTAuNjdjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYy0xZS0zIC01Ljg5NS00Ljc3Mi0xMC42NjYtMTAuNjY4LTEwLjY2NnpcIi8+XG4gIDwvZz5cbjwvc3ZnPmAsXG4gIGFsaWduQ2VudGVyOiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiBlbmFibGUtYmFja2dyb3VuZD1cIm5ldyAwIDAgNTEyIDUxMlwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxnIHRyYW5zZm9ybT1cIm1hdHJpeCgtMSAwIDAgMSA1MTIgMClcIj5cbiAgICA8cGF0aCBkPVwibTQxNiAxNzAuNjdoLTMyMGMtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2N3YyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2gzMjBjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42Njd6XCIvPlxuICAgIDxwYXRoIGQ9XCJtNTAxLjMzIDI5OC42N2gtNDkwLjY3Yy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY2djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDQ5MC42N2M1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjLTFlLTMgLTUuODk1LTQuNzcyLTEwLjY2Ni0xMC42NjgtMTAuNjY2elwiLz5cbiAgICA8cGF0aCBkPVwibTQxNiA0MjYuNjdoLTMyMGMtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2N3YyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2gzMjBjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42Njd6XCIvPlxuICAgIDxwYXRoIGQ9XCJtNTAxLjMzIDQyLjY2N2gtNDkwLjY3Yy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY2djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDQ5MC42N2M1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjLTFlLTMgLTUuODk1LTQuNzcyLTEwLjY2Ni0xMC42NjgtMTAuNjY2elwiLz5cbiAgPC9nPlxuPC9zdmc+YCxcbiAgYWxpZ25SaWdodDogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDUxMiA1MTJcIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBkPVwibTUwMS4zMyAxNzAuNjdoLTMyMGMtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2N3YyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2gzMjBjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42Njd6XCIvPlxuICA8cGF0aCBkPVwibTUwMS4zMyAyOTguNjdoLTQ5MC42N2MtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2NnYyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2g0OTAuNjdjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYy0xZS0zIC01Ljg5NS00Ljc3Mi0xMC42NjYtMTAuNjY4LTEwLjY2NnpcIi8+XG4gIDxwYXRoIGQ9XCJtNTAxLjMzIDQyNi42N2gtMzIwYy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY3djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDMyMGM1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjMC01Ljg5Ni00Ljc3MS0xMC42NjctMTAuNjY3LTEwLjY2N3pcIi8+XG4gIDxwYXRoIGQ9XCJtNTAxLjMzIDQyLjY2N2gtNDkwLjY3Yy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY2djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDQ5MC42N2M1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjLTFlLTMgLTUuODk1LTQuNzcyLTEwLjY2Ni0xMC42NjgtMTAuNjY2elwiLz5cbjwvc3ZnPmAsXG4gIGRlbGV0ZUNvbHVtbjogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDI2IDI2XCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgMjYgMjZcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMTMuNTk0IDIwLjg1djMuMTVoLTEwdi0yMmgxMHYzLjE1YzAuNjMzLTAuMzIzIDEuMzA0LTAuNTY1IDItMC43Mjd2LTMuNDIzYzAtMC41NTEtMC40NDgtMS0xLTFoLTEyYy0wLjU1IDAtMSAwLjQ0OS0xIDF2MjRjMCAwLjU1MSAwLjQ0OSAxIDEgMWgxMmMwLjU1MiAwIDEtMC40NDkgMS0xdi0zLjQyNGMtMC42OTYtMC4xNjEtMS4zNjctMC40MDMtMi0wLjcyNnpcIi8+XG4gIDxwYXRoIGQ9XCJtMTcuNTk0IDYuMTg4Yy0zLjc2MiAwLTYuODEzIDMuMDUxLTYuODEyIDYuODEzLTFlLTMgMy43NjEgMy4wNSA2LjgxMiA2LjgxMiA2LjgxMnM2LjgxMy0zLjA1MSA2LjgxMy02LjgxMy0zLjA1Mi02LjgxMi02LjgxMy02LjgxMnptMy42MzIgNy44MDItNy4yNjcgMWUtM3YtMS45ODJoNy4yNjhsLTFlLTMgMS45ODF6XCIvPlxuPC9zdmc+YCxcbiAgZGVsZXRlUm93OiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiBlbmFibGUtYmFja2dyb3VuZD1cIm5ldyAwIDAgMTUuMzgxIDE1LjM4MVwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDE1LjM4MSAxNS4zODFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJNMCwxLjczMnY3LjczMmg2LjA1M2MwLTAuMDM1LTAuMDA0LTAuMDctMC4wMDQtMC4xMDRjMC0wLjQzNCwwLjA2MS0wLjg1NCwwLjE2NS0xLjI1NUgxLjM2VjMuMDkyICAgIGgxMi42NjJ2Mi4xOTJjMC41NDYsMC4zOTYsMS4wMSwwLjg5NywxLjM1OSwxLjQ3N1YxLjczMkgwelwiLz5cbiAgPHBhdGggZD1cIm0xMS4xOTYgNS4yOGMtMi4zMDcgMC00LjE4MyAxLjg3Ny00LjE4MyA0LjE4NCAwIDIuMzA4IDEuODc2IDQuMTg1IDQuMTgzIDQuMTg1IDIuMzA5IDAgNC4xODUtMS44NzcgNC4xODUtNC4xODUgMC0yLjMwNy0xLjg3Ni00LjE4NC00LjE4NS00LjE4NHptMCA3LjIzM2MtMS42NzkgMC0zLjA0Ny0xLjM2Ny0zLjA0Ny0zLjA0OSAwLTEuNjggMS4zNjgtMy4wNDkgMy4wNDctMy4wNDkgMS42ODQgMCAzLjA1IDEuMzY5IDMuMDUgMy4wNDkgMCAxLjY4Mi0xLjM2NiAzLjA0OS0zLjA1IDMuMDQ5elwiLz5cbiAgPHJlY3QgeD1cIjkuMzEyXCIgeT1cIjguNzU5XCIgd2lkdGg9XCIzLjg0NFwiIGhlaWdodD1cIjEuMTA0XCIvPlxuPC9zdmc+YCxcbiAgaW5zZXJ0Q29sdW1uOiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIi0yMSAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMjg4IDEwNi42N2MtMy45MjU4IDAtNy44NTE2LTEuNDI5Ny0xMC45MjItNC4zMTI1bC04MC03NC42NjRjLTQuODAwOC00LjQ4MDUtNi4zNzg5LTExLjQ1Ny0zLjk2ODgtMTcuNTU5IDIuNDEwMi02LjEwMTYgOC4zMjAzLTEwLjEzMyAxNC44OTEtMTAuMTMzaDE2MGM2LjU3MDMgMCAxMi40OCA0LjAxMTcgMTQuODkxIDEwLjEzMyAyLjQxMDIgNi4xMjUgMC44MzIwMyAxMy4wNzgtMy45Njg4IDE3LjU1OWwtODAgNzQuNjY0Yy0zLjA3MDMgMi44ODI4LTYuOTk2MSA0LjMxMjUtMTAuOTIyIDQuMzEyNXptLTM5LjQwMi03NC42NjggMzkuNDAyIDM2Ljc3NyAzOS40MDItMzYuNzc3elwiLz5cbiAgPHBhdGggZD1cIm00MzIgNTEyaC01My4zMzJjLTIwLjU5IDAtMzcuMzM2LTE2Ljc0Ni0zNy4zMzYtMzcuMzMydi0zMzAuNjdjMC0yMC41ODYgMTYuNzQ2LTM3LjMzMiAzNy4zMzYtMzcuMzMyaDUzLjMzMmMyMC41ODYgMCAzNy4zMzIgMTYuNzQ2IDM3LjMzMiAzNy4zMzJ2MzMwLjY3YzAgMjAuNTg2LTE2Ljc0NiAzNy4zMzItMzcuMzMyIDM3LjMzMnptLTUzLjMzMi0zNzMuMzNjLTIuOTQ1MyAwLTUuMzM1OSAyLjM4NjctNS4zMzU5IDUuMzMydjMzMC42N2MwIDIuOTQxNCAyLjM5MDYgNS4zMzIgNS4zMzU5IDUuMzMyaDUzLjMzMmMyLjk0NTMgMCA1LjMzMi0yLjM5MDYgNS4zMzItNS4zMzJ2LTMzMC42N2MwLTIuOTQ1My0yLjM4NjctNS4zMzItNS4zMzItNS4zMzJ6XCIvPlxuICA8cGF0aCBkPVwibTE5Ny4zMyA1MTJoLTE2MGMtMjAuNTg2IDAtMzcuMzMyLTE2Ljc0Ni0zNy4zMzItMzcuMzMydi0zMzAuNjdjMC0yMC41ODYgMTYuNzQ2LTM3LjMzMiAzNy4zMzItMzcuMzMyaDE2MGMyMC41OSAwIDM3LjMzNiAxNi43NDYgMzcuMzM2IDM3LjMzMnYzMzAuNjdjMCAyMC41ODYtMTYuNzQ2IDM3LjMzMi0zNy4zMzYgMzcuMzMyem0tMTYwLTM3My4zM2MtMi45NDE0IDAtNS4zMzIgMi4zODY3LTUuMzMyIDUuMzMydjMzMC42N2MwIDIuOTQxNCAyLjM5MDYgNS4zMzIgNS4zMzIgNS4zMzJoMTYwYzIuOTQ1MyAwIDUuMzM1OS0yLjM5MDYgNS4zMzU5LTUuMzMydi0zMzAuNjdjMC0yLjk0NTMtMi4zOTA2LTUuMzMyLTUuMzM1OS01LjMzMnpcIi8+XG4gIDxwYXRoIGQ9XCJtNDUzLjMzIDMyNS4zM2gtOTZjLTguODMyIDAtMTYtNy4xNjgtMTYtMTZzNy4xNjgtMTYgMTYtMTZoOTZjOC44MzIgMCAxNiA3LjE2OCAxNiAxNnMtNy4xNjggMTYtMTYgMTZ6XCIvPlxuICA8cGF0aCBkPVwibTIxOC42NyAzMjUuMzNoLTIwMi42N2MtOC44MzIgMC0xNi03LjE2OC0xNi0xNnM3LjE2OC0xNiAxNi0xNmgyMDIuNjdjOC44MzIgMCAxNiA3LjE2OCAxNiAxNnMtNy4xNjggMTYtMTYgMTZ6XCIvPlxuICA8cGF0aCBkPVwibTExNy4zMyA1MTJjLTguODMyIDAtMTYtNy4xNjgtMTYtMTZ2LTM3My4zM2MwLTguODMyIDcuMTY4LTE2IDE2LTE2czE2IDcuMTY4IDE2IDE2djM3My4zM2MwIDguODMyLTcuMTY4IDE2LTE2IDE2elwiLz5cbjwvc3ZnPmAsXG4gIGluc2VydFJvdzogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIC0yMSA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBkPVwibTE2IDI3Ny4zM2MtMS45ODQ0IDAtMy45Njg4LTAuMzYzMjgtNS44NjcyLTEuMTA5NC02LjEyMTEtMi40MTAyLTEwLjEzMy04LjMyMDMtMTAuMTMzLTE0Ljg5MXYtMTYwYzAtNi41NzAzIDQuMDExNy0xMi40OCAxMC4xMzMtMTQuODkxIDYuMTQ0NS0yLjQxMDIgMTMuMDc4LTAuODUxNTYgMTcuNTU5IDMuOTY4OGw3NC42NjQgODBjNS43NjE3IDYuMTQ0NSA1Ljc2MTcgMTUuNjggMCAyMS44MjRsLTc0LjY2NCA4MGMtMy4wOTM4IDMuMzI4MS03LjMzOTggNS4wOTc3LTExLjY5MSA1LjA5Nzd6bTE2LTEzNS40djc4LjgwNWwzNi43NzctMzkuNDAyelwiLz5cbiAgPHBhdGggZD1cIm00NzQuNjcgMTI4aC0zMzAuNjdjLTIwLjU4NiAwLTM3LjMzMi0xNi43NDYtMzcuMzMyLTM3LjMzMnYtNTMuMzM2YzAtMjAuNTg2IDE2Ljc0Ni0zNy4zMzIgMzcuMzMyLTM3LjMzMmgzMzAuNjdjMjAuNTg2IDAgMzcuMzMyIDE2Ljc0NiAzNy4zMzIgMzcuMzMydjUzLjMzNmMwIDIwLjU4Ni0xNi43NDYgMzcuMzMyLTM3LjMzMiAzNy4zMzJ6bS0zMzAuNjctOTZjLTIuOTQ1MyAwLTUuMzMyIDIuMzkwNi01LjMzMiA1LjMzMnY1My4zMzZjMCAyLjk0MTQgMi4zODY3IDUuMzMyIDUuMzMyIDUuMzMyaDMzMC42N2MyLjk0MTQgMCA1LjMzMi0yLjM5MDYgNS4zMzItNS4zMzJ2LTUzLjMzNmMwLTIuOTQxNC0yLjM5MDYtNS4zMzItNS4zMzItNS4zMzJ6XCIvPlxuICA8cGF0aCBkPVwibTQ3NC42NyA0NjkuMzNoLTMzMC42N2MtMjAuNTg2IDAtMzcuMzMyLTE2Ljc0Ni0zNy4zMzItMzcuMzMydi0xNjBjMC0yMC41ODYgMTYuNzQ2LTM3LjMzMiAzNy4zMzItMzcuMzMyaDMzMC42N2MyMC41ODYgMCAzNy4zMzIgMTYuNzQ2IDM3LjMzMiAzNy4zMzJ2MTYwYzAgMjAuNTg2LTE2Ljc0NiAzNy4zMzItMzcuMzMyIDM3LjMzMnptLTMzMC42Ny0yMDIuNjZjLTIuOTQ1MyAwLTUuMzMyIDIuMzg2Ny01LjMzMiA1LjMzMnYxNjBjMCAyLjk0NTMgMi4zODY3IDUuMzMyIDUuMzMyIDUuMzMyaDMzMC42N2MyLjk0MTQgMCA1LjMzMi0yLjM4NjcgNS4zMzItNS4zMzJ2LTE2MGMwLTIuOTQ1My0yLjM5MDYtNS4zMzItNS4zMzItNS4zMzJ6XCIvPlxuICA8cGF0aCBkPVwibTMwOS4zMyAxMjhjLTguODMyIDAtMTYtNy4xNjgtMTYtMTZ2LTk2YzAtOC44MzIgNy4xNjgtMTYgMTYtMTZzMTYgNy4xNjggMTYgMTZ2OTZjMCA4LjgzMi03LjE2OCAxNi0xNiAxNnpcIi8+XG4gIDxwYXRoIGQ9XCJtMzA5LjMzIDQ2OS4zM2MtOC44MzIgMC0xNi03LjE2OC0xNi0xNnYtMjAyLjY2YzAtOC44MzIgNy4xNjgtMTYgMTYtMTZzMTYgNy4xNjggMTYgMTZ2MjAyLjY2YzAgOC44MzItNy4xNjggMTYtMTYgMTZ6XCIvPlxuICA8cGF0aCBkPVwibTQ5NiAzNjhoLTM3My4zM2MtOC44MzIgMC0xNi03LjE2OC0xNi0xNnM3LjE2OC0xNiAxNi0xNmgzNzMuMzNjOC44MzIgMCAxNiA3LjE2OCAxNiAxNnMtNy4xNjggMTYtMTYgMTZ6XCIvPlxuPC9zdmc+YCxcbiAgbW92ZUNvbHVtbkxlZnQ6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMi4wMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMzU3LjM1IDUxMi4wMWg5NmMzMi4zNjMgMCA1OC42NjgtMjYuMzA1IDU4LjY2OC01OC42Njh2LTM5NC42NmMwLTMyLjM2My0yNi4zMDUtNTguNjY4LTU4LjY2OC01OC42NjhoLTk2Yy0zMi4zNjMgMC01OC42NjQgMjYuMzA1LTU4LjY2NCA1OC42Njh2Mzk0LjY2YzAgMzIuMzYzIDI2LjMwMSA1OC42NjggNTguNjY0IDU4LjY2OHptOTYtNDgwYzE0LjY5OSAwIDI2LjY2OCAxMS45NjkgMjYuNjY4IDI2LjY2OHYzOTQuNjZjMCAxNC42OTktMTEuOTY5IDI2LjY2OC0yNi42NjggMjYuNjY4aC05NmMtMTQuNjk5IDAtMjYuNjY0LTExLjk2OS0yNi42NjQtMjYuNjY4di0zOTQuNjZjMC0xNC42OTkgMTEuOTY1LTI2LjY2OCAyNi42NjQtMjYuNjY4elwiLz5cbiAgPHBhdGggZD1cIm0xNi4wMTYgMjcyLjAxaDIyNGM4LjgzMiAwIDE2LTcuMTY4IDE2LTE2cy03LjE2OC0xNi0xNi0xNmgtMjI0Yy04LjgzMiAwLTE2IDcuMTY4LTE2IDE2czcuMTY4IDE2IDE2IDE2elwiLz5cbiAgPHBhdGggZD1cIm0xMDEuMzUgMzU3LjM0YzQuMDk3NiAwIDguMTkxNC0xLjU1NDcgMTEuMzA5LTQuNjkxNCA2LjI1LTYuMjUgNi4yNS0xNi4zODMgMC0yMi42MzdsLTc0LjAyNy03NC4wMjMgNzQuMDI3LTc0LjAyN2M2LjI1LTYuMjUgNi4yNS0xNi4zODcgMC0yMi42MzdzLTE2LjM4My02LjI1LTIyLjYzNyAwbC04NS4zMzIgODUuMzM2Yy02LjI1IDYuMjUtNi4yNSAxNi4zODMgMCAyMi42MzNsODUuMzMyIDg1LjMzMmMzLjEzNjcgMy4xNjAyIDcuMjM0NCA0LjcxNDggMTEuMzI4IDQuNzE0OHpcIi8+XG48L3N2Zz5gLFxuICBtb3ZlQ29sdW1uUmlnaHQ6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMi4wMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMTU0LjY3IDUxMi4wMWgtOTZjLTMyLjM2MyAwLTU4LjY2OC0yNi4zMDUtNTguNjY4LTU4LjY2OHYtMzk0LjY2YzAtMzIuMzYzIDI2LjMwNS01OC42NjggNTguNjY4LTU4LjY2OGg5NmMzMi4zNjMgMCA1OC42NjQgMjYuMzA1IDU4LjY2NCA1OC42Njh2Mzk0LjY2YzAgMzIuMzYzLTI2LjMwMSA1OC42NjgtNTguNjY0IDU4LjY2OHptLTk2LTQ4MGMtMTQuNjk5IDAtMjYuNjY4IDExLjk2OS0yNi42NjggMjYuNjY4djM5NC42NmMwIDE0LjY5OSAxMS45NjkgMjYuNjY4IDI2LjY2OCAyNi42NjhoOTZjMTQuNjk5IDAgMjYuNjY0LTExLjk2OSAyNi42NjQtMjYuNjY4di0zOTQuNjZjMC0xNC42OTktMTEuOTY1LTI2LjY2OC0yNi42NjQtMjYuNjY4elwiLz5cbiAgPHBhdGggZD1cIm00OTYgMjcyLjAxaC0yMjRjLTguODMyIDAtMTYtNy4xNjgtMTYtMTYgMC04LjgzMiA3LjE2OC0xNiAxNi0xNmgyMjRjOC44MzIgMCAxNiA3LjE2OCAxNiAxNiAwIDguODMyLTcuMTY4IDE2LTE2IDE2elwiLz5cbiAgPHBhdGggZD1cIm00MTAuNjcgMzU3LjM0Yy00LjA5NzcgMC04LjE5MTQtMS41NTQ3LTExLjMwOS00LjY5MTQtNi4yNS02LjI1LTYuMjUtMTYuMzgzIDAtMjIuNjM3bDc0LjAyNy03NC4wMjMtNzQuMDI3LTc0LjAyN2MtNi4yNS02LjI1LTYuMjUtMTYuMzg3IDAtMjIuNjM3czE2LjM4My02LjI1IDIyLjYzNyAwbDg1LjMzMiA4NS4zMzZjNi4yNSA2LjI1IDYuMjUgMTYuMzgzIDAgMjIuNjMzbC04NS4zMzIgODUuMzMyYy0zLjEzNjcgMy4xNjAyLTcuMjM0NCA0LjcxNDgtMTEuMzI4IDQuNzE0OHpcIi8+XG48L3N2Zz5gLFxuICBtb3ZlUm93RG93bjogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPHBhdGggZD1cIm00NTMuMzMgMjEzLjMzaC0zOTQuNjZjLTMyLjM2MyAwLTU4LjY2OC0yNi4zMDEtNTguNjY4LTU4LjY2NHYtOTZjMC0zMi4zNjMgMjYuMzA1LTU4LjY2OCA1OC42NjgtNTguNjY4aDM5NC42NmMzMi4zNjMgMCA1OC42NjggMjYuMzA1IDU4LjY2OCA1OC42Njh2OTZjMCAzMi4zNjMtMjYuMzA1IDU4LjY2NC01OC42NjggNTguNjY0em0tMzk0LjY2LTE4MS4zM2MtMTQuNjk5IDAtMjYuNjY4IDExLjk2OS0yNi42NjggMjYuNjY4djk2YzAgMTQuNjk5IDExLjk2OSAyNi42NjQgMjYuNjY4IDI2LjY2NGgzOTQuNjZjMTQuNjk5IDAgMjYuNjY4LTExLjk2NSAyNi42NjgtMjYuNjY0di05NmMwLTE0LjY5OS0xMS45NjktMjYuNjY4LTI2LjY2OC0yNi42Njh6XCIvPlxuICA8cGF0aCBkPVwibTI1NiA1MTJjLTguODMyIDAtMTYtNy4xNjgtMTYtMTZ2LTIyNGMwLTguODMyIDcuMTY4LTE2IDE2LTE2czE2IDcuMTY4IDE2IDE2djIyNGMwIDguODMyLTcuMTY4IDE2LTE2IDE2elwiLz5cbiAgPHBhdGggZD1cIm0yNTYgNTEyYy00LjA5NzcgMC04LjE5MTQtMS41NTg2LTExLjMwOS00LjY5MTRsLTg1LjMzMi04NS4zMzZjLTYuMjUtNi4yNS02LjI1LTE2LjM4MyAwLTIyLjYzM3MxNi4zODMtNi4yNSAyMi42MzcgMGw3NC4wMjMgNzQuMDI3IDc0LjAyNy03NC4wMjdjNi4yNS02LjI1IDE2LjM4Ny02LjI1IDIyLjYzNyAwczYuMjUgMTYuMzgzIDAgMjIuNjMzbC04NS4zMzYgODUuMzM2Yy0zLjE1NjIgMy4xMzI4LTcuMjUgNC42OTE0LTExLjM0OCA0LjY5MTR6XCIvPlxuPC9zdmc+YCxcbiAgbW92ZVJvd1VwOiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBkPVwibTQ1My4zMyAyOTguNjdoLTM5NC42NmMtMzIuMzYzIDAtNTguNjY4IDI2LjMwMS01OC42NjggNTguNjY0djk2YzAgMzIuMzYzIDI2LjMwNSA1OC42NjggNTguNjY4IDU4LjY2OGgzOTQuNjZjMzIuMzYzIDAgNTguNjY4LTI2LjMwNSA1OC42NjgtNTguNjY4di05NmMwLTMyLjM2My0yNi4zMDUtNTguNjY0LTU4LjY2OC01OC42NjR6bS0zOTQuNjYgMTgxLjMzYy0xNC42OTkgMC0yNi42NjgtMTEuOTY5LTI2LjY2OC0yNi42Njh2LTk2YzAtMTQuNjk5IDExLjk2OS0yNi42NjQgMjYuNjY4LTI2LjY2NGgzOTQuNjZjMTQuNjk5IDAgMjYuNjY4IDExLjk2NSAyNi42NjggMjYuNjY0djk2YzAgMTQuNjk5LTExLjk2OSAyNi42NjgtMjYuNjY4IDI2LjY2OHpcIi8+XG4gIDxwYXRoIGQ9XCJtMjU2IDBjLTguODMyIDAtMTYgNy4xNjgtMTYgMTZ2MjI0YzAgOC44MzIgNy4xNjggMTYgMTYgMTZzMTYtNy4xNjggMTYtMTZ2LTIyNGMwLTguODMyLTcuMTY4LTE2LTE2LTE2elwiLz5cbiAgPHBhdGggZD1cIm0yNTYgMGMtNC4wOTc3IDAtOC4xOTE0IDEuNTU4Ni0xMS4zMDkgNC42OTE0bC04NS4zMzIgODUuMzM2Yy02LjI1IDYuMjUtNi4yNSAxNi4zODMgMCAyMi42MzNzMTYuMzgzIDYuMjUgMjIuNjM3IDBsNzQuMDIzLTc0LjAyNyA3NC4wMjcgNzQuMDI3YzYuMjUgNi4yNSAxNi4zODcgNi4yNSAyMi42MzcgMHM2LjI1LTE2LjM4MyAwLTIyLjYzM2wtODUuMzM2LTg1LjMzNmMtMy4xNTYyLTMuMTMyOC03LjI1LTQuNjkxNC0xMS4zNDgtNC42OTE0elwiLz5cbjwvc3ZnPmAsXG4gIHNvcnRBc2M6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxnIHRyYW5zZm9ybT1cIm1hdHJpeCgxIDAgMCAtMSAwIDUwMS4xNSlcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzNcIj5cbiAgICA8cGF0aCBkPVwibTM1My42IDc0LjQ4NmMtMTEuNzc2IDAtMjEuMzMzIDkuNTU3My0yMS4zMzMgMjEuMzMzdjI5OC42N2MwIDExLjc3NiA5LjU1NzMgMjEuMzMzIDIxLjMzMyAyMS4zMzNzMjEuMzMzLTkuNTU3MyAyMS4zMzMtMjEuMzMzdi0yOTguNjdjMC0xMS43NzYtOS41NTczLTIxLjMzMy0yMS4zMzMtMjEuMzMzelwiLz5cbiAgICA8cGF0aCBkPVwibTM1My42IDc0LjQ4NmMtNS40NjM2IDAtMTAuOTIyIDIuMDc4MS0xNS4wNzkgNi4yNTUybC0xMTMuNzggMTEzLjc4Yy04LjMzMzMgOC4zMzMzLTguMzMzMyAyMS44NDQgMCAzMC4xNzcgOC4zMzMzIDguMzMzMyAyMS44NDQgOC4zMzMzIDMwLjE4MyAwbDk4LjY5Ny05OC43MDMgOTguNzAzIDk4LjcwM2M4LjMzMzMgOC4zMzMzIDIxLjg0OSA4LjMzMzMgMzAuMTgzIDAgOC4zMzMzLTguMzMzMyA4LjMzMzMtMjEuODQ0IDAtMzAuMTc3bC0xMTMuNzgtMTEzLjc4Yy00LjIwODMtNC4xNzcxLTkuNjY2Ny02LjI1NTItMTUuMTMxLTYuMjU1MnpcIi8+XG4gIDwvZz5cbiAgPHBhdGggZD1cIm0xNjYuMDQgMjEwLjExcS01LjA5NzEtMTMuNDkyLTkuNTk0NS0yNi4zODUtNC40OTc0LTEzLjE5Mi05LjI5NDctMjYuNjg1aC05NC4xNDZsLTE4Ljg4OSA1My4wN2gtMzAuMjgzcTExLjk5My0zMi45ODEgMjIuNDg3LTYwLjg2NSAxMC40OTQtMjguMTg0IDIwLjM4OC01My4zNjkgMTAuMTk0LTI1LjE4NiAyMC4wODktNDcuOTczIDkuODk0My0yMy4wODcgMjAuNjg4LTQ1LjU3NGgyNi42ODVxMTAuNzk0IDIyLjQ4NyAyMC42ODggNDUuNTc0IDkuODk0MyAyMi43ODcgMTkuNzg5IDQ3Ljk3MyAxMC4xOTQgMjUuMTg2IDIwLjY4OCA1My4zNjkgMTAuNDk0IDI3Ljg4NCAyMi40ODcgNjAuODY1em0tMjcuMjg0LTc3LjA1NnEtOS41OTQ1LTI2LjA4NS0xOS4xODktNTAuMzcxLTkuMjk0Ny0yNC41ODYtMTkuNDg5LTQ3LjA3My0xMC40OTQgMjIuNDg3LTIwLjA4OSA0Ny4wNzMtOS4yOTQ3IDI0LjI4Ni0xOC41ODkgNTAuMzcxelwiLz5cbiAgPHBhdGggZD1cIm0xNzMuMjQgMzI1LjI1cS02Ljg5NiA3Ljc5NTUtMTYuMTkxIDE4Ljg4OS04Ljk5NDggMTAuNzk0LTE5LjE4OSAyNC4yODYtMTAuMTk0IDEzLjE5Mi0yMC45ODggMjguMTg0LTEwLjc5NCAxNC42OTItMjEuMjg4IDI5Ljk4My0xMC4xOTQgMTQuOTkxLTE5LjQ4OSAyOS45ODMtOS4yOTQ3IDE0Ljk5MS0xNi43OSAyOC40ODRoMTE2LjkzdjI0Ljg4NmgtMTUwLjgxdi0xOS40ODlxNi4yOTY0LTExLjk5MyAxNC42OTItMjYuMzg1IDguNjk1LTE0LjM5MiAxOC4yOS0yOS4zODMgOS44OTQzLTE0Ljk5MSAyMC4zODgtMzAuMjgzdDIwLjY4OC0yOS4zODNxMTAuNDk0LTE0LjA5MiAyMC4wODgtMjYuMzg1IDkuODk0My0xMi4yOTMgMTcuOTktMjEuNTg4aC0xMDYuNzR2LTI0Ljg4NmgxNDIuNDJ6XCIvPlxuPC9zdmc+YCxcbiAgc29ydERlc2M6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxnIHRyYW5zZm9ybT1cIm1hdHJpeCgxIDAgMCAtMSAwIDUwMS4xNSlcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzNcIj5cbiAgICA8cGF0aCBkPVwibTM1My42IDc0LjQ4NmMtMTEuNzc2IDAtMjEuMzMzIDkuNTU3My0yMS4zMzMgMjEuMzMzdjI5OC42N2MwIDExLjc3NiA5LjU1NzMgMjEuMzMzIDIxLjMzMyAyMS4zMzNzMjEuMzMzLTkuNTU3MyAyMS4zMzMtMjEuMzMzdi0yOTguNjdjMC0xMS43NzYtOS41NTczLTIxLjMzMy0yMS4zMzMtMjEuMzMzelwiLz5cbiAgICA8cGF0aCBkPVwibTM1My42IDc0LjQ4NmMtNS40NjM2IDAtMTAuOTIyIDIuMDc4MS0xNS4wNzkgNi4yNTUybC0xMTMuNzggMTEzLjc4Yy04LjMzMzMgOC4zMzMzLTguMzMzMyAyMS44NDQgMCAzMC4xNzcgOC4zMzMzIDguMzMzMyAyMS44NDQgOC4zMzMzIDMwLjE4MyAwbDk4LjY5Ny05OC43MDMgOTguNzAzIDk4LjcwM2M4LjMzMzMgOC4zMzMzIDIxLjg0OSA4LjMzMzMgMzAuMTgzIDAgOC4zMzMzLTguMzMzMyA4LjMzMzMtMjEuODQ0IDAtMzAuMTc3bC0xMTMuNzgtMTEzLjc4Yy00LjIwODMtNC4xNzcxLTkuNjY2Ny02LjI1NTItMTUuMTMxLTYuMjU1MnpcIi8+XG4gIDwvZz5cbiAgPHBhdGggZD1cIm0xNjkuMTEgNTA3LjcycS01LjA5NzEtMTMuNDkyLTkuNTk0NS0yNi4zODUtNC40OTc0LTEzLjE5Mi05LjI5NDctMjYuNjg1aC05NC4xNDZsLTE4Ljg4OSA1My4wN2gtMzAuMjgzcTExLjk5My0zMi45ODEgMjIuNDg3LTYwLjg2NSAxMC40OTQtMjguMTg0IDIwLjM4OC01My4zNjkgMTAuMTk0LTI1LjE4NiAyMC4wODgtNDcuOTczIDkuODk0My0yMy4wODcgMjAuNjg4LTQ1LjU3NGgyNi42ODVxMTAuNzk0IDIyLjQ4NyAyMC42ODggNDUuNTc0IDkuODk0MyAyMi43ODcgMTkuNzg5IDQ3Ljk3MyAxMC4xOTQgMjUuMTg2IDIwLjY4OCA1My4zNjkgMTAuNDk0IDI3Ljg4NCAyMi40ODcgNjAuODY1em0tMjcuMjg0LTc3LjA1NnEtOS41OTQ1LTI2LjA4NS0xOS4xODktNTAuMzcxLTkuMjk0Ny0yNC41ODYtMTkuNDg5LTQ3LjA3My0xMC40OTQgMjIuNDg3LTIwLjA4OSA0Ny4wNzMtOS4yOTQ3IDI0LjI4Ni0xOC41ODkgNTAuMzcxelwiLz5cbiAgPHBhdGggZD1cIm0xNzYuMzEgMjcuNjM5cS02Ljg5NiA3Ljc5NTUtMTYuMTkxIDE4Ljg4OS04Ljk5NDggMTAuNzk0LTE5LjE4OSAyNC4yODYtMTAuMTk0IDEzLjE5Mi0yMC45ODggMjguMTg0LTEwLjc5NCAxNC42OTItMjEuMjg4IDI5Ljk4My0xMC4xOTQgMTQuOTkxLTE5LjQ4OSAyOS45ODMtOS4yOTQ3IDE0Ljk5MS0xNi43OSAyOC40ODRoMTE2LjkzdjI0Ljg4NmgtMTUwLjgxdi0xOS40ODlxNi4yOTY0LTExLjk5MyAxNC42OTItMjYuMzg1IDguNjk1LTE0LjM5MiAxOC4yOS0yOS4zODMgOS44OTQzLTE0Ljk5MSAyMC4zODgtMzAuMjgzIDEwLjQ5NC0xNS4yOTEgMjAuNjg4LTI5LjM4MyAxMC40OTQtMTQuMDkyIDIwLjA4OC0yNi4zODUgOS44OTQzLTEyLjI5MyAxNy45OS0yMS41ODhoLTEwNi43NHYtMjQuODg2aDE0Mi40MnpcIi8+XG48L3N2Zz5gLFxuICBmb3JtdWxhOiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBkPVwibTI2My41MSA2Mi45NjdjMS42NzItMTEuMTM0IDkuMzI2LTIyLjk2NyAyMC4yMjItMjIuOTY3IDExLjAyOCAwIDIwIDguOTcyIDIwIDIwaDQwYzAtMzMuMDg0LTI2LjkxNi02MC02MC02MC0zMy42MjkgMC01NS41MjcgMjguNjkxLTU5Ljc4NCA1Ny4wNzNsLTEyLjg2MiA4Ni45MjdoLTYxLjM1NHY0MGg1NS40MzZsLTM5LjIyIDI2NS4wNy0wLjExNiAwLjkzN2MtMS4wNjMgMTAuNjItOS4zOTMgMjEuOTktMjAuMSAyMS45OS0xMS4wMjggMC0yMC04Ljk3Mi0yMC0yMGgtNDBjMCAzMy4wODQgMjYuOTE2IDYwIDYwIDYwIDMzLjY2MSAwIDU2Ljc3MS0yOS4xNDEgNTkuODQ4LTU3LjQ5Nmw0MC4wMjMtMjcwLjVoNjAuMTI5di00MGgtNTQuMjExbDExLjk4OS04MS4wMzN6XCIvPlxuICA8cG9seWdvbiBwb2ludHM9XCI0MjYuMjcgMjQ4IDM3OC4yNCAyNDggMzUyLjI1IDI4Ny4wOCAzMzQuOTIgMjQ4IDI5MS4xNyAyNDggMzI2IDMyNi41NyAyNzAuNTIgNDEwIDMxOC41NiA0MTAgMzQ1LjIxIDM2OS45MiAzNjIuOTggNDEwIDQwNi43MyA0MTAgMzcxLjQ2IDMzMC40M1wiLz5cbjwvc3ZnPmAsXG4gIGhlbHA6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMjQ4LjE2IDM0My4yMmMtMTQuNjM5IDAtMjYuNDkxIDEyLjItMjYuNDkxIDI2Ljg0IDAgMTQuMjkxIDExLjUwMyAyNi44NCAyNi40OTEgMjYuODRzMjYuODQtMTIuNTQ4IDI2Ljg0LTI2Ljg0YzAtMTQuNjQtMTIuMTk5LTI2Ljg0LTI2Ljg0LTI2Ljg0elwiLz5cbiAgPHBhdGggZD1cIm0yNTIuNjkgMTQwYy00Ny4wNTcgMC02OC42NjggMjcuODg1LTY4LjY2OCA0Ni43MDggMCAxMy41OTUgMTEuNTAyIDE5Ljg2OSAyMC45MTQgMTkuODY5IDE4LjgyMiAwIDExLjE1NC0yNi44NCA0Ni43MDgtMjYuODQgMTcuNDI5IDAgMzEuMzcyIDcuNjY5IDMxLjM3MiAyMy43MDMgMCAxOC44MjQtMTkuNTIgMjkuNjI5LTMxLjAyMyAzOS4zODktMTAuMTA4IDguNzE0LTIzLjM1NCAyMy4wMDYtMjMuMzU0IDUyLjk4MyAwIDE4LjEyNSA0Ljg3OSAyMy4zNTQgMTkuMTcxIDIzLjM1NCAxNy4wOCAwIDIwLjU2NS03LjY2OCAyMC41NjUtMTQuMjkxIDAtMTguMTI2IDAuMzUtMjguNTgzIDE5LjUyMS00My41NzEgOS40MTEtNy4zMiAzOS4wNC0zMS4wMjMgMzkuMDQtNjMuNzg5cy0yOS42MjktNTcuNTE1LTc0LjI0Ni01Ny41MTV6XCIvPlxuICA8cGF0aCBkPVwibTI1NiAwYy0xNDEuNDggMC0yNTYgMTE0LjUtMjU2IDI1NnYyMzZjMCAxMS4wNDYgOC45NTQgMjAgMjAgMjBoMjM2YzE0MS40OCAwIDI1Ni0xMTQuNSAyNTYtMjU2IDAtMTQxLjQ4LTExNC41LTI1Ni0yNTYtMjU2em0wIDQ3MmgtMjE2di0yMTZjMC0xMTkuMzggOTYuNjA3LTIxNiAyMTYtMjE2IDExOS4zOCAwIDIxNiA5Ni42MDcgMjE2IDIxNiAwIDExOS4zOC05Ni42MDcgMjE2LTIxNiAyMTZ6XCIvPlxuPC9zdmc+YCxcbiAgY3N2OiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiA8cGF0aCBkPVwibTQuOTk3OSA5di04aDE0LjUwMmwzLjUgMy41IDJlLTcgMTguNWgtMTltMTQtMjJ2NWg1bS0xNiA3aC0yYy0xIDAtMiAwLjUtMiAxLjV2MS41czFlLTggMC41IDAgMS41IDEgMS41IDIgMS41aDJtNi4yNS02aC0yLjVjLTEuNSAwLTIgMC41LTIgMS41czAuNSAxLjUgMiAxLjUgMiAwLjUgMiAxLjUtMC41IDEuNS0yIDEuNWgtMi41bTEyLjI1LTd2MC41YzAgMC41LTIuNSA2LjUtMi41IDYuNWgtMC41cy0yLjUtNi0yLjUtNi41di0wLjVcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cInZhcigtLXRleHQtbXV0ZWQpXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIvPlxuPC9zdmc+YCxcbiAgYXJyb3dlbnRlcjogYFxuPHN2ZyB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIm00LjY0MTE5IDEyLjUgMi44NzI4MyAyLjcwMzhjLjMwMTYzLjI4MzkuMzE2MDIuNzU4Ni4wMzIxMyAxLjA2MDItLjI4Mzg5LjMwMTctLjc1ODU0LjMxNi0xLjA2MDE3LjAzMjFsLTQuMjUtNGMtLjE1MDU5LS4xNDE3LS4yMzU5OC0uMzM5My0uMjM1OTgtLjU0NjFzLjA4NTM5LS40MDQ0LjIzNTk4LS41NDYybDQuMjUtMy45OTk5NWMuMzAxNjMtLjI4Mzg5Ljc3NjI4LS4yNjk1IDEuMDYwMTcuMDMyMTNzLjI2OTUuNzc2MjgtLjAzMjEzIDEuMDYwMTdsLTIuODcyODQgMi43MDM4NWgxMC4xMDg4MmMuOTY2NSAwIDEuNzUtLjc4MzUgMS43NS0xLjc1di00LjVjMC0uNDE0MjEuMzM1OC0uNzUuNzUtLjc1cy43NS4zMzU3OS43NS43NXY0LjVjMCAxLjc5NDktMS40NTUxIDMuMjUtMy4yNSAzLjI1elwiLz5cbjwvc3ZnPmAsXG4gIGFycm93dGFiOiBgXG48c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwibTE4LjIwNzEwNjggMTEuMjkyODkzMi02LjUtNi40OTk5OTk5OGMtLjM5MDUyNDMtLjM5MDUyNDI5LTEuMDIzNjg5My0uMzkwNTI0MjktMS40MTQyMTM2IDAtLjM2MDQ4Mzk0LjM2MDQ4Mzk2LS4zODgyMTM0OC45Mjc3MTUwMi0uMDgzMTg4NiAxLjMyMDAwNjIybC4wODMxODg2LjA5NDIwNzM0IDQuNzkzMTA2OCA0Ljc5Mjg5MzIyaC0xMS4wODZjLS41MTI4MzU4NCAwLS45MzU1MDcxNi4zODYwNDAyLS45OTMyNzIyNy44ODMzNzg5bC0uMDA2NzI3NzMuMTE2NjIxMWMwIC41MTI4MzU4LjM4NjA0MDE5LjkzNTUwNzIuODgzMzc4ODcuOTkzMjcyM2wuMTE2NjIxMTMuMDA2NzI3N2gxMS4wODZsLTQuNzkzMTA2OCA0Ljc5Mjg5MzJjLS4zNjA0ODM5NC4zNjA0ODQtLjM4ODIxMzQ4LjkyNzcxNS0uMDgzMTg4NiAxLjMyMDAwNjJsLjA4MzE4ODYuMDk0MjA3NGMuMzYwNDg0LjM2MDQ4MzkuOTI3NzE1LjM4ODIxMzUgMS4zMjAwMDYyLjA4MzE4ODZsLjA5NDIwNzQtLjA4MzE4ODYgNi41LTYuNWMuMzYwNDgzOS0uMzYwNDg0LjM4ODIxMzUtLjkyNzcxNS4wODMxODg2LTEuMzIwMDA2MmwtLjA4MzE4ODYtLjA5NDIwNzQtNi41LTYuNDk5OTk5OTh6bTIuNzkyODkzMiA3LjIwNzEwNjh2LTEzYzAtLjU1MjI4NDc1LS40NDc3MTUzLTEtMS0xcy0xIC40NDc3MTUyNS0xIDF2MTNjMCAuNTUyMjg0Ny40NDc3MTUzIDEgMSAxczEtLjQ0NzcxNTMgMS0xelwiIGZpbGw9XCIjMjEyMTIxXCIvPlxuPC9zdmc+YCxcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRJY29ucyA9ICgpOiB2b2lkID0+IHtcbiAgT2JqZWN0LmtleXMoaWNvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIC8vIERvbid0IGFkZCB0aGUgJ2hlbHAnIGljb24gaGVyZSBhcyBpdCB3aWxsIG92ZXJ3cml0ZSB0aGUgbmF0aXZlIG9uZS5cbiAgICBpZiAoa2V5ICE9PSAnaGVscCcpIHtcbiAgICAgIGFkZEljb24oa2V5LCBpY29uc1trZXldKTtcbiAgICB9XG4gIH0pO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Qb2ludCA9IHZvaWQgMDtcbi8qKlxuICogQSBgUG9pbnRgIHJlcHJlc2VudHMgYSBwb2ludCBpbiB0aGUgdGV4dCBlZGl0b3IuXG4gKi9cbmNsYXNzIFBvaW50IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGBQb2ludGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvdyAtIFJvdyBvZiB0aGUgcG9pbnQsIHN0YXJ0cyBmcm9tIDAuXG4gICAgICogQHBhcmFtIGNvbHVtbiAtIENvbHVtbiBvZiB0aGUgcG9pbnQsIHN0YXJ0cyBmcm9tIDAuXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iocm93LCBjb2x1bW4pIHtcbiAgICAgICAgdGhpcy5yb3cgPSByb3c7XG4gICAgICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIHBvaW50IGlzIGVxdWFsIHRvIGFub3RoZXIgcG9pbnQuXG4gICAgICovXG4gICAgZXF1YWxzKHBvaW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdyA9PT0gcG9pbnQucm93ICYmIHRoaXMuY29sdW1uID09PSBwb2ludC5jb2x1bW47XG4gICAgfVxufVxuZXhwb3J0cy5Qb2ludCA9IFBvaW50O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlJhbmdlID0gdm9pZCAwO1xuLyoqXG4gKiBBIGBSYW5nZWAgb2JqZWN0IHJlcHJlc2VudHMgYSByYW5nZSBpbiB0aGUgdGV4dCBlZGl0b3IuXG4gKi9cbmNsYXNzIFJhbmdlIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGBSYW5nZWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0YXJ0IC0gVGhlIHN0YXJ0IHBvaW50IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0gZW5kIC0gVGhlIGVuZCBwb2ludCBvZiB0aGUgcmFuZ2UuXG4gICAgICovXG4gICAgY29uc3RydWN0b3Ioc3RhcnQsIGVuZCkge1xuICAgICAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgICAgIHRoaXMuZW5kID0gZW5kO1xuICAgIH1cbn1cbmV4cG9ydHMuUmFuZ2UgPSBSYW5nZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Gb2N1cyA9IHZvaWQgMDtcbi8qKlxuICogQSBgRm9jdXNgIG9iamVjdCByZXByZXNlbnRzIHdoaWNoIGNlbGwgaXMgZm9jdXNlZCBpbiB0aGUgdGFibGUuXG4gKlxuICogTm90ZSB0aGF0IGByb3dgIGFuZCBgY29sdW1uYCBwcm9wZXJ0aWVzIHNwZWNpZml5IGEgY2VsbCdzIHBvc2l0aW9uIGluIHRoZVxuICogdGFibGUsIG5vdCB0aGUgY3Vyc29yJ3MgcG9zaXRpb24gaW4gdGhlIHRleHQgZWRpdG9yIGFzIHtAbGluayBQb2ludH0gY2xhc3MuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgRm9jdXMge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYEZvY3VzYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93IC0gUm93IG9mIHRoZSBmb2N1c2VkIGNlbGwuXG4gICAgICogQHBhcmFtIGNvbHVtbiAtIENvbHVtbiBvZiB0aGUgZm9jdXNlZCBjZWxsLlxuICAgICAqIEBwYXJhbSBvZmZzZXQgLSBSYXcgb2Zmc2V0IGluIHRoZSBjZWxsLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHJvdywgY29sdW1uLCBvZmZzZXQpIHtcbiAgICAgICAgdGhpcy5yb3cgPSByb3c7XG4gICAgICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xuICAgICAgICB0aGlzLm9mZnNldCA9IG9mZnNldDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHR3byBmb2N1c2VzIHBvaW50IHRoZSBzYW1lIGNlbGwuXG4gICAgICogT2Zmc2V0cyBhcmUgaWdub3JlZC5cbiAgICAgKi9cbiAgICBwb3NFcXVhbHMoZm9jdXMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm93ID09PSBmb2N1cy5yb3cgJiYgdGhpcy5jb2x1bW4gPT09IGZvY3VzLmNvbHVtbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhlIGZvY3VzIG9iamVjdCBieSBzZXR0aW5nIGl0cyByb3cgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgLSBSb3cgb2YgdGhlIGZvY3VzZWQgY2VsbC5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyBmb2N1cyBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIHJvdy5cbiAgICAgKi9cbiAgICBzZXRSb3cocm93KSB7XG4gICAgICAgIHJldHVybiBuZXcgRm9jdXMocm93LCB0aGlzLmNvbHVtbiwgdGhpcy5vZmZzZXQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY29weSBvZiB0aGUgZm9jdXMgb2JqZWN0IGJ5IHNldHRpbmcgaXRzIGNvbHVtbiB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbHVtbiAtIENvbHVtbiBvZiB0aGUgZm9jdXNlZCBjZWxsLlxuICAgICAqIEByZXR1cm5zIEEgbmV3IGZvY3VzIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgY29sdW1uLlxuICAgICAqL1xuICAgIHNldENvbHVtbihjb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGb2N1cyh0aGlzLnJvdywgY29sdW1uLCB0aGlzLm9mZnNldCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSBmb2N1cyBvYmplY3QgYnkgc2V0dGluZyBpdHMgb2Zmc2V0IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2Zmc2V0IC0gT2Zmc2V0IGluIHRoZSBmb2N1c2VkIGNlbGwuXG4gICAgICogQHJldHVybnMgQSBuZXcgZm9jdXMgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBvZmZzZXQuXG4gICAgICovXG4gICAgc2V0T2Zmc2V0KG9mZnNldCkge1xuICAgICAgICByZXR1cm4gbmV3IEZvY3VzKHRoaXMucm93LCB0aGlzLmNvbHVtbiwgb2Zmc2V0KTtcbiAgICB9XG59XG5leHBvcnRzLkZvY3VzID0gRm9jdXM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuSGVhZGVyQWxpZ25tZW50ID0gZXhwb3J0cy5EZWZhdWx0QWxpZ25tZW50ID0gZXhwb3J0cy5BbGlnbm1lbnQgPSB2b2lkIDA7XG4vKipcbiAqIFJlcHJlc2VudHMgY29sdW1uIGFsaWdubWVudC5cbiAqXG4gKiAtIGBBbGlnbm1lbnQuTk9ORWAgLSBVc2UgZGVmYXVsdCBhbGlnbm1lbnQuXG4gKiAtIGBBbGlnbm1lbnQuTEVGVGAgLSBBbGlnbiBsZWZ0LlxuICogLSBgQWxpZ25tZW50LlJJR0hUYCAtIEFsaWduIHJpZ2h0LlxuICogLSBgQWxpZ25tZW50LkNFTlRFUmAgLSBBbGlnbiBjZW50ZXIuXG4gKlxuICovXG52YXIgQWxpZ25tZW50O1xuKGZ1bmN0aW9uIChBbGlnbm1lbnQpIHtcbiAgICBBbGlnbm1lbnRbXCJOT05FXCJdID0gXCJub25lXCI7XG4gICAgQWxpZ25tZW50W1wiTEVGVFwiXSA9IFwibGVmdFwiO1xuICAgIEFsaWdubWVudFtcIlJJR0hUXCJdID0gXCJyaWdodFwiO1xuICAgIEFsaWdubWVudFtcIkNFTlRFUlwiXSA9IFwiY2VudGVyXCI7XG59KShBbGlnbm1lbnQgPSBleHBvcnRzLkFsaWdubWVudCB8fCAoZXhwb3J0cy5BbGlnbm1lbnQgPSB7fSkpO1xuLyoqXG4gKiBSZXByZXNlbnRzIGRlZmF1bHQgY29sdW1uIGFsaWdubWVudFxuICpcbiAqIC0gYERlZmF1bHRBbGlnbm1lbnQuTEVGVGAgLSBBbGlnbiBsZWZ0LlxuICogLSBgRGVmYXVsdEFsaWdubWVudC5SSUdIVGAgLSBBbGlnbiByaWdodC5cbiAqIC0gYERlZmF1bHRBbGlnbm1lbnQuQ0VOVEVSYCAtIEFsaWduIGNlbnRlci5cbiAqXG4gKi9cbnZhciBEZWZhdWx0QWxpZ25tZW50O1xuKGZ1bmN0aW9uIChEZWZhdWx0QWxpZ25tZW50KSB7XG4gICAgRGVmYXVsdEFsaWdubWVudFtcIkxFRlRcIl0gPSBcImxlZnRcIjtcbiAgICBEZWZhdWx0QWxpZ25tZW50W1wiUklHSFRcIl0gPSBcInJpZ2h0XCI7XG4gICAgRGVmYXVsdEFsaWdubWVudFtcIkNFTlRFUlwiXSA9IFwiY2VudGVyXCI7XG59KShEZWZhdWx0QWxpZ25tZW50ID0gZXhwb3J0cy5EZWZhdWx0QWxpZ25tZW50IHx8IChleHBvcnRzLkRlZmF1bHRBbGlnbm1lbnQgPSB7fSkpO1xuLyoqXG4gKiBSZXByZXNlbnRzIGFsaWdubWVudCBvZiBoZWFkZXIgY2VsbHMuXG4gKlxuICogLSBgSGVhZGVyQWxpZ25tZW50LkZPTExPV2AgLSBGb2xsb3cgY29sdW1uJ3MgYWxpZ25tZW50LlxuICogLSBgSGVhZGVyQWxpZ25tZW50LkxFRlRgIC0gQWxpZ24gbGVmdC5cbiAqIC0gYEhlYWRlckFsaWdubWVudC5SSUdIVGAgLSBBbGlnbiByaWdodC5cbiAqIC0gYEhlYWRlckFsaWdubWVudC5DRU5URVJgIC0gQWxpZ24gY2VudGVyLlxuICpcbiAqL1xudmFyIEhlYWRlckFsaWdubWVudDtcbihmdW5jdGlvbiAoSGVhZGVyQWxpZ25tZW50KSB7XG4gICAgSGVhZGVyQWxpZ25tZW50W1wiRk9MTE9XXCJdID0gXCJmb2xsb3dcIjtcbiAgICBIZWFkZXJBbGlnbm1lbnRbXCJMRUZUXCJdID0gXCJsZWZ0XCI7XG4gICAgSGVhZGVyQWxpZ25tZW50W1wiUklHSFRcIl0gPSBcInJpZ2h0XCI7XG4gICAgSGVhZGVyQWxpZ25tZW50W1wiQ0VOVEVSXCJdID0gXCJjZW50ZXJcIjtcbn0pKEhlYWRlckFsaWdubWVudCA9IGV4cG9ydHMuSGVhZGVyQWxpZ25tZW50IHx8IChleHBvcnRzLkhlYWRlckFsaWdubWVudCA9IHt9KSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVGFibGVDZWxsID0gdm9pZCAwO1xuY29uc3QgYWxpZ25tZW50XzEgPSByZXF1aXJlKFwiLi9hbGlnbm1lbnRcIik7XG4vKipcbiAqIEEgYFRhYmxlQ2VsbGAgb2JqZWN0IHJlcHJlc2VudHMgYSB0YWJsZSBjZWxsLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIFRhYmxlQ2VsbCB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBgVGFibGVDZWxsYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmF3Q29udGVudCAtIFJhdyBjb250ZW50IG9mIHRoZSBjZWxsLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHJhd0NvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5yYXdDb250ZW50ID0gcmF3Q29udGVudDtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gcmF3Q29udGVudC50cmltKCk7XG4gICAgICAgIHRoaXMucGFkZGluZ0xlZnQgPVxuICAgICAgICAgICAgdGhpcy5jb250ZW50ID09PSAnJ1xuICAgICAgICAgICAgICAgID8gdGhpcy5yYXdDb250ZW50ID09PSAnJ1xuICAgICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgICAgOiAxXG4gICAgICAgICAgICAgICAgOiB0aGlzLnJhd0NvbnRlbnQubGVuZ3RoIC0gdGhpcy5yYXdDb250ZW50LnRyaW1MZWZ0KCkubGVuZ3RoO1xuICAgICAgICB0aGlzLnBhZGRpbmdSaWdodCA9XG4gICAgICAgICAgICB0aGlzLnJhd0NvbnRlbnQubGVuZ3RoIC0gdGhpcy5jb250ZW50Lmxlbmd0aCAtIHRoaXMucGFkZGluZ0xlZnQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnZlcnMgdGhlIGNlbGwgdG8gYSB0ZXh0IHJlcHJlc2VudGF0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHJhdyBjb250ZW50IG9mIHRoZSBjZWxsLlxuICAgICAqL1xuICAgIHRvVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3Q29udGVudDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBjZWxsIGlzIGEgZGVsaW1pdGVyIGkuZS4gaXQgb25seSBjb250YWlucyBoeXBoZW5zIGAtYCB3aXRoIG9wdGlvbmFsIG9uZVxuICAgICAqIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGNvbG9ucyBgOmAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGNlbGwgaXMgYSBkZWxpbWl0ZXIuXG4gICAgICovXG4gICAgaXNEZWxpbWl0ZXIoKSB7XG4gICAgICAgIHJldHVybiAvXlxccyo6Py0rOj9cXHMqJC8udGVzdCh0aGlzLnJhd0NvbnRlbnQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBhbGlnbm1lbnQgdGhlIGNlbGwgcmVwcmVzZW50cy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBhbGlnbm1lbnQgdGhlIGNlbGwgcmVwcmVzZW50czsgYHVuZGVmaW5lZGAgaWYgdGhlIGNlbGwgaXMgbm90IGEgZGVsaW1pdGVyLlxuICAgICAqL1xuICAgIGdldEFsaWdubWVudCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGVsaW1pdGVyKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29udGVudFswXSA9PT0gJzonKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jb250ZW50W3RoaXMuY29udGVudC5sZW5ndGggLSAxXSA9PT0gJzonKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFsaWdubWVudF8xLkFsaWdubWVudC5DRU5URVI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWxpZ25tZW50XzEuQWxpZ25tZW50LkxFRlQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29udGVudFt0aGlzLmNvbnRlbnQubGVuZ3RoIC0gMV0gPT09ICc6Jykge1xuICAgICAgICAgICAgcmV0dXJuIGFsaWdubWVudF8xLkFsaWdubWVudC5SSUdIVDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWxpZ25tZW50XzEuQWxpZ25tZW50Lk5PTkU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGEgcmVsYXRpdmUgcG9zaXRpb24gaW4gdGhlIHRyaW1tZWQgY29udGVudCBmcm9tIHRoYXQgaW4gdGhlIHJhdyBjb250ZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJhd09mZnNldCAtIFJlbGF0aXZlIHBvc2l0aW9uIGluIHRoZSByYXcgY29udGVudC5cbiAgICAgKiBAcmV0dXJucyAtIFJlbGF0aXZlIHBvc2l0aW9uIGluIHRoZSB0cmltbWVkIGNvbnRlbnQuXG4gICAgICovXG4gICAgY29tcHV0ZUNvbnRlbnRPZmZzZXQocmF3T2Zmc2V0KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnQgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmF3T2Zmc2V0IDwgdGhpcy5wYWRkaW5nTGVmdCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJhd09mZnNldCA8IHRoaXMucGFkZGluZ0xlZnQgKyB0aGlzLmNvbnRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmF3T2Zmc2V0IC0gdGhpcy5wYWRkaW5nTGVmdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50Lmxlbmd0aDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYSByZWxhdGl2ZSBwb3NpdGlvbiBpbiB0aGUgcmF3IGNvbnRlbnQgZnJvbSB0aGF0IGluIHRoZSB0cmltbWVkIGNvbnRlbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGVudE9mZnNldCAtIFJlbGF0aXZlIHBvc2l0aW9uIGluIHRoZSB0cmltbWVkIGNvbnRlbnQuXG4gICAgICogQHJldHVybnMgLSBSZWxhdGl2ZSBwb3NpdGlvbiBpbiB0aGUgcmF3IGNvbnRlbnQuXG4gICAgICovXG4gICAgY29tcHV0ZVJhd09mZnNldChjb250ZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiBjb250ZW50T2Zmc2V0ICsgdGhpcy5wYWRkaW5nTGVmdDtcbiAgICB9XG59XG5leHBvcnRzLlRhYmxlQ2VsbCA9IFRhYmxlQ2VsbDtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UYWJsZVJvdyA9IHZvaWQgMDtcbmNvbnN0IHRhYmxlX2NlbGxfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLWNlbGxcIik7XG4vKipcbiAqIEEgYFRhYmxlUm93YCBvYmplY3QgcmVwcmVzZW50cyBhIHRhYmxlIHJvdy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBUYWJsZVJvdyB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBgVGFibGVSb3dgIG9iamVjLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNlbGxzIC0gQ2VsbHMgdGhhdCB0aGUgcm93IGNvbnRhaW5zLlxuICAgICAqIEBwYXJhbSBtYXJnaW5MZWZ0IC0gTWFyZ2luIHN0cmluZyBhdCB0aGUgbGVmdCBvZiB0aGUgcm93LlxuICAgICAqIEBwYXJhbSBtYXJnaW5SaWdodCAtIE1hcmdpbiBzdHJpbmcgYXQgdGhlIHJpZ2h0IG9mIHRoZSByb3cuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY2VsbHMsIG1hcmdpbkxlZnQsIG1hcmdpblJpZ2h0KSB7XG4gICAgICAgIHRoaXMuX2NlbGxzID0gY2VsbHMuc2xpY2UoKTtcbiAgICAgICAgdGhpcy5tYXJnaW5MZWZ0ID0gbWFyZ2luTGVmdDtcbiAgICAgICAgdGhpcy5tYXJnaW5SaWdodCA9IG1hcmdpblJpZ2h0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgdGhlIGNlbGxzIGluIHRoZSByb3cuXG4gICAgICovXG4gICAgZ2V0V2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jZWxscy5sZW5ndGg7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNlbGxzIHRoYXQgdGhlIHJvdyBjb250YWlucy5cbiAgICAgKi9cbiAgICBnZXRDZWxscygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NlbGxzLnNsaWNlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgYSBjZWxsIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW5kZXggLSBJbmRleC5cbiAgICAgKiBAcmV0dXJucyBUaGUgY2VsbCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IGlmIGV4aXN0czsgYHVuZGVmaW5lZGAgaWYgbm8gY2VsbCBpcyBmb3VuZC5cbiAgICAgKi9cbiAgICBnZXRDZWxsQXQoaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NlbGxzW2luZGV4XTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyBhIGNlbGwgaW4gdGhlIHJvdyB0byBhIG5ldyB2YWx1ZSwgcmV0dXJuaW5nIGEgY29weSBvZiB0aGUgcm93XG4gICAgICogd2l0aCB0aGUgbW9kaWZpZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBJZiBhbiBpbnZhbGlkIGluZGV4IGlzIHByb3ZpZGVkLCB0aGUgcm93IHdpbGwgYmUgdW5jaGFuZ2VkLlxuICAgICAqL1xuICAgIHNldENlbGxBdChpbmRleCwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLmdldENlbGxzKCk7IC8vIGEgY29weVxuICAgICAgICBjZWxsc1tpbmRleF0gPSBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGVSb3coY2VsbHMsIHRoaXMubWFyZ2luTGVmdCwgdGhpcy5tYXJnaW5SaWdodCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnZlcnMgdGhlIHJvdyB0byBhIHRleHQgcmVwcmVzZW50YXRpb24uXG4gICAgICovXG4gICAgdG9UZXh0KCkge1xuICAgICAgICBpZiAodGhpcy5fY2VsbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXJnaW5MZWZ0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5fY2VsbHMubWFwKChjZWxsKSA9PiBjZWxsLnRvVGV4dCgpKS5qb2luKCd8Jyk7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLm1hcmdpbkxlZnR9fCR7Y2VsbHN9fCR7dGhpcy5tYXJnaW5SaWdodH1gO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIHJvdyBpcyBhIGRlbGltaXRlciBvciBub3QuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJvdyBpcyBhIGRlbGltaXRlciBpLmUuIGFsbCB0aGUgY2VsbHMgY29udGFpbmVkIGFyZSBkZWxpbWl0ZXJzLlxuICAgICAqL1xuICAgIGlzRGVsaW1pdGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2VsbHMuZXZlcnkoKGNlbGwpID0+IGNlbGwuaXNEZWxpbWl0ZXIoKSk7XG4gICAgfVxufVxuZXhwb3J0cy5UYWJsZVJvdyA9IFRhYmxlUm93O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFJldHJpZXZlZCBmcm9tXG4gKiAgIGh0dHBzOi8vZ2l0aHViLmNvbS9zdXBlcm1hY3JvL25ldmVydGhyb3dcbiAqXG4gKiBNSVQgTGljZW5zZVxuICogQ29weXJpZ2h0IChjKSAyMDE5IEdpb3JnaW8gRGVsZ2Fkb1xuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkVyciA9IGV4cG9ydHMuT2sgPSBleHBvcnRzLmVyciA9IGV4cG9ydHMub2sgPSB2b2lkIDA7XG5jb25zdCBvayA9ICh2YWx1ZSkgPT4gbmV3IE9rKHZhbHVlKTtcbmV4cG9ydHMub2sgPSBvaztcbmNvbnN0IGVyciA9IChlcnIpID0+IG5ldyBFcnIoZXJyKTtcbmV4cG9ydHMuZXJyID0gZXJyO1xuY2xhc3MgT2sge1xuICAgIGNvbnN0cnVjdG9yKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5tYXRjaCA9IChvaywgX2VycikgPT4gb2sodGhpcy52YWx1ZSk7XG4gICAgfVxuICAgIGlzT2soKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpc0VycigpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzT2soKTtcbiAgICB9XG4gICAgbWFwKGYpIHtcbiAgICAgICAgcmV0dXJuIGV4cG9ydHMub2soZih0aGlzLnZhbHVlKSk7XG4gICAgfVxuICAgIG1hcEVycihfZikge1xuICAgICAgICByZXR1cm4gZXhwb3J0cy5vayh0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgLy8gYWRkIGluZm8gb24gaG93IHRoaXMgaXMgcmVhbGx5IHVzZWZ1bCBmb3IgY29udmVydGluZyBhXG4gICAgLy8gUmVzdWx0PFJlc3VsdDxULCBFMj4sIEUxPlxuICAgIC8vIGludG8gYSBSZXN1bHQ8VCwgRTI+XG4gICAgYW5kVGhlbihmKSB7XG4gICAgICAgIHJldHVybiBmKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgICB1bndyYXBPcihfdikge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG4gICAgX3Vuc2FmZVVud3JhcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICAgIF91bnNhZmVVbndyYXBFcnIoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FsbGVkIGBfdW5zYWZlVW53cmFwRXJyYCBvbiBhbiBPaycpO1xuICAgIH1cbn1cbmV4cG9ydHMuT2sgPSBPaztcbmNsYXNzIEVyciB7XG4gICAgY29uc3RydWN0b3IoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yO1xuICAgICAgICB0aGlzLm1hdGNoID0gKF9vaywgZXJyKSA9PiBlcnIodGhpcy5lcnJvcik7XG4gICAgfVxuICAgIGlzT2soKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaXNFcnIoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pc09rKCk7XG4gICAgfVxuICAgIG1hcChfZikge1xuICAgICAgICByZXR1cm4gZXhwb3J0cy5lcnIodGhpcy5lcnJvcik7XG4gICAgfVxuICAgIG1hcEVycihmKSB7XG4gICAgICAgIHJldHVybiBleHBvcnRzLmVycihmKHRoaXMuZXJyb3IpKTtcbiAgICB9XG4gICAgYW5kVGhlbihfZikge1xuICAgICAgICByZXR1cm4gZXhwb3J0cy5lcnIodGhpcy5lcnJvcik7XG4gICAgfVxuICAgIHVud3JhcE9yKHYpIHtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICAgIF91bnNhZmVVbndyYXAoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FsbGVkIGBfdW5zYWZlVW53cmFwYCBvbiBhbiBFcnInKTtcbiAgICB9XG4gICAgX3Vuc2FmZVVud3JhcEVycigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3I7XG4gICAgfVxufVxuZXhwb3J0cy5FcnIgPSBFcnI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucHJldHR5UHJpbnRBU1QgPSBleHBvcnRzLmNoZWNrQ2hpbGRMZW5ndGggPSBleHBvcnRzLmNoZWNrVHlwZSA9IGV4cG9ydHMuZXJyUmVsYXRpdmVSZWZlcmVuY2VJbmRleCA9IGV4cG9ydHMuZXJySW5kZXgwID0gdm9pZCAwO1xuZXhwb3J0cy5lcnJJbmRleDAgPSBuZXcgRXJyb3IoJ0luZGV4IDAgdXNlZCB0byBjcmVhdGUgYSByZWZlcmVuY2UnKTtcbmV4cG9ydHMuZXJyUmVsYXRpdmVSZWZlcmVuY2VJbmRleCA9IG5ldyBFcnJvcignQ2FuIG5vdCB1c2UgcmVsYXRpdmUgcmVmZXJlbmNlIHdoZXJlIGFic29sdXRlIHJlZmVyZW5jZSBpcyByZXF1aXJlZCcpO1xuY29uc3QgY2hlY2tUeXBlID0gKGFzdCwgLi4uZXhwZWN0ZWRUeXBlcykgPT4ge1xuICAgIGlmIChleHBlY3RlZFR5cGVzLmluZGV4T2YoYXN0LnR5cGUpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEVycm9yKGBGb3JtdWxhIGVsZW1lbnQgJyR7YXN0LnRleHR9JyBpcyBhICR7YXN0LnR5cGV9IGJ1dCBleHBlY3RlZCBgICtcbiAgICAgICAgYG9uZSBvZiAke2V4cGVjdGVkVHlwZXN9IGluIHRoaXMgcG9zaXRpb24uYCk7XG59O1xuZXhwb3J0cy5jaGVja1R5cGUgPSBjaGVja1R5cGU7XG5jb25zdCBjaGVja0NoaWxkTGVuZ3RoID0gKGFzdCwgbGVuKSA9PiB7XG4gICAgaWYgKGFzdC5jaGlsZHJlbi5sZW5ndGggPT09IGxlbikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBuZXcgRXJyb3IoYEZvcm11bGEgZWxlbWVudCAnJHthc3QudGV4dH0nIHdhcyBleHBlY3RlZCB0byBoYXZlICR7bGVufSBgICtcbiAgICAgICAgYGVsZW1lbnRzLCBidXQgaGFkICR7YXN0LmNoaWxkcmVuLmxlbmd0aH1gKTtcbn07XG5leHBvcnRzLmNoZWNrQ2hpbGRMZW5ndGggPSBjaGVja0NoaWxkTGVuZ3RoO1xuY29uc3QgcHJldHR5UHJpbnRBU1QgPSAodG9rZW4sIGxldmVsID0gMCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCcgICcucmVwZWF0KGxldmVsKSArXG4gICAgICAgIGB8LSR7dG9rZW4udHlwZX0ke3Rva2VuLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCA/ICc9JyArIHRva2VuLnRleHQgOiAnJ31gKTtcbiAgICBpZiAodG9rZW4uY2hpbGRyZW4pIHtcbiAgICAgICAgdG9rZW4uY2hpbGRyZW4uZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgZXhwb3J0cy5wcmV0dHlQcmludEFTVChjLCBsZXZlbCArIDEpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuZXhwb3J0cy5wcmV0dHlQcmludEFTVCA9IHByZXR0eVByaW50QVNUO1xuIiwiOyhmdW5jdGlvbiAoZ2xvYmFsU2NvcGUpIHtcclxuICAndXNlIHN0cmljdCc7XHJcblxyXG5cclxuICAvKiFcclxuICAgKiAgZGVjaW1hbC5qcyB2MTAuNC4zXHJcbiAgICogIEFuIGFyYml0cmFyeS1wcmVjaXNpb24gRGVjaW1hbCB0eXBlIGZvciBKYXZhU2NyaXB0LlxyXG4gICAqICBodHRwczovL2dpdGh1Yi5jb20vTWlrZU1jbC9kZWNpbWFsLmpzXHJcbiAgICogIENvcHlyaWdodCAoYykgMjAyMiBNaWNoYWVsIE1jbGF1Z2hsaW4gPE04Y2g4OGxAZ21haWwuY29tPlxyXG4gICAqICBNSVQgTGljZW5jZVxyXG4gICAqL1xyXG5cclxuXHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIEVESVRBQkxFIERFRkFVTFRTICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cclxuXHJcblxyXG4gICAgLy8gVGhlIG1heGltdW0gZXhwb25lbnQgbWFnbml0dWRlLlxyXG4gICAgLy8gVGhlIGxpbWl0IG9uIHRoZSB2YWx1ZSBvZiBgdG9FeHBOZWdgLCBgdG9FeHBQb3NgLCBgbWluRWAgYW5kIGBtYXhFYC5cclxuICB2YXIgRVhQX0xJTUlUID0gOWUxNSwgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byA5ZTE1XHJcblxyXG4gICAgLy8gVGhlIGxpbWl0IG9uIHRoZSB2YWx1ZSBvZiBgcHJlY2lzaW9uYCwgYW5kIG9uIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgYXJndW1lbnQgdG9cclxuICAgIC8vIGB0b0RlY2ltYWxQbGFjZXNgLCBgdG9FeHBvbmVudGlhbGAsIGB0b0ZpeGVkYCwgYHRvUHJlY2lzaW9uYCBhbmQgYHRvU2lnbmlmaWNhbnREaWdpdHNgLlxyXG4gICAgTUFYX0RJR0lUUyA9IDFlOSwgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIDFlOVxyXG5cclxuICAgIC8vIEJhc2UgY29udmVyc2lvbiBhbHBoYWJldC5cclxuICAgIE5VTUVSQUxTID0gJzAxMjM0NTY3ODlhYmNkZWYnLFxyXG5cclxuICAgIC8vIFRoZSBuYXR1cmFsIGxvZ2FyaXRobSBvZiAxMCAoMTAyNSBkaWdpdHMpLlxyXG4gICAgTE4xMCA9ICcyLjMwMjU4NTA5Mjk5NDA0NTY4NDAxNzk5MTQ1NDY4NDM2NDIwNzYwMTEwMTQ4ODYyODc3Mjk3NjAzMzMyNzkwMDk2NzU3MjYwOTY3NzM1MjQ4MDIzNTk5NzIwNTA4OTU5ODI5ODM0MTk2Nzc4NDA0MjI4NjI0ODYzMzQwOTUyNTQ2NTA4MjgwNjc1NjY2NjI4NzM2OTA5ODc4MTY4OTQ4MjkwNzIwODMyNTU1NDY4MDg0Mzc5OTg5NDgyNjIzMzE5ODUyODM5MzUwNTMwODk2NTM3NzczMjYyODg0NjE2MzM2NjIyMjI4NzY5ODIxOTg4Njc0NjU0MzY2NzQ3NDQwNDI0MzI3NDM2NTE1NTA0ODkzNDMxNDkzOTM5MTQ3OTYxOTQwNDQwMDIyMjEwNTEwMTcxNDE3NDgwMDM2ODgwODQwMTI2NDcwODA2ODU1Njc3NDMyMTYyMjgzNTUyMjAxMTQ4MDQ2NjM3MTU2NTkxMjEzNzM0NTA3NDc4NTY5NDc2ODM0NjM2MTY3OTIxMDE4MDY0NDUwNzA2NDgwMDAyNzc1MDI2ODQ5MTY3NDY1NTA1ODY4NTY5MzU2NzM0MjA2NzA1ODExMzY0MjkyMjQ1NTQ0MDU3NTg5MjU3MjQyMDgyNDEzMTQ2OTU2ODkwMTY3NTg5NDAyNTY3NzYzMTEzNTY5MTkyOTIwMzMzNzY1ODcxNDE2NjAyMzAxMDU3MDMwODk2MzQ1NzIwNzU0NDAzNzA4NDc0Njk5NDAxNjgyNjkyODI4MDg0ODExODQyODkzMTQ4NDg1MjQ5NDg2NDQ4NzE5Mjc4MDk2NzYyNzEyNzU3NzUzOTcwMjc2Njg2MDU5NTI0OTY3MTY2NzQxODM0ODU3MDQ0MjI1MDcxOTc5NjUwMDQ3MTQ5NTEwNTA0OTIyMTQ3NzY1Njc2MzY5Mzg2NjI5NzY5Nzk1MjIxMTA3MTgyNjQ1NDk3MzQ3NzI2NjI0MjU3MDk0MjkzMjI1ODI3OTg1MDI1ODU1MDk3ODUyNjUzODMyMDc2MDY3MjYzMTcxNjQzMDk1MDU5OTUwODc4MDc1MjM3MTAzMzMxMDExOTc4NTc1NDczMzE1NDE0MjE4MDg0Mjc1NDM4NjM1OTE3NzgxMTcwNTQzMDk4Mjc0ODIzODUwNDU2NDgwMTkwOTU2MTAyOTkyOTE4MjQzMTgyMzc1MjUzNTc3MDk3NTA1Mzk1NjUxODc2OTc1MTAzNzQ5NzA4ODg2OTIxODAyMDUxODkzMzk1MDcyMzg1MzkyMDUxNDQ2MzQxOTcyNjUyODcyODY5NjUxMTA4NjI1NzE0OTIxOTg4NDk5Nzg3NDg4NzM3NzEzNDU2ODYyMDkxNjcwNTgnLFxyXG5cclxuICAgIC8vIFBpICgxMDI1IGRpZ2l0cykuXHJcbiAgICBQSSA9ICczLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTUwMjg4NDE5NzE2OTM5OTM3NTEwNTgyMDk3NDk0NDU5MjMwNzgxNjQwNjI4NjIwODk5ODYyODAzNDgyNTM0MjExNzA2Nzk4MjE0ODA4NjUxMzI4MjMwNjY0NzA5Mzg0NDYwOTU1MDU4MjIzMTcyNTM1OTQwODEyODQ4MTExNzQ1MDI4NDEwMjcwMTkzODUyMTEwNTU1OTY0NDYyMjk0ODk1NDkzMDM4MTk2NDQyODgxMDk3NTY2NTkzMzQ0NjEyODQ3NTY0ODIzMzc4Njc4MzE2NTI3MTIwMTkwOTE0NTY0ODU2NjkyMzQ2MDM0ODYxMDQ1NDMyNjY0ODIxMzM5MzYwNzI2MDI0OTE0MTI3MzcyNDU4NzAwNjYwNjMxNTU4ODE3NDg4MTUyMDkyMDk2MjgyOTI1NDA5MTcxNTM2NDM2Nzg5MjU5MDM2MDAxMTMzMDUzMDU0ODgyMDQ2NjUyMTM4NDE0Njk1MTk0MTUxMTYwOTQzMzA1NzI3MDM2NTc1OTU5MTk1MzA5MjE4NjExNzM4MTkzMjYxMTc5MzEwNTExODU0ODA3NDQ2MjM3OTk2Mjc0OTU2NzM1MTg4NTc1MjcyNDg5MTIyNzkzODE4MzAxMTk0OTEyOTgzMzY3MzM2MjQ0MDY1NjY0MzA4NjAyMTM5NDk0NjM5NTIyNDczNzE5MDcwMjE3OTg2MDk0MzcwMjc3MDUzOTIxNzE3NjI5MzE3Njc1MjM4NDY3NDgxODQ2NzY2OTQwNTEzMjAwMDU2ODEyNzE0NTI2MzU2MDgyNzc4NTc3MTM0Mjc1Nzc4OTYwOTE3MzYzNzE3ODcyMTQ2ODQ0MDkwMTIyNDk1MzQzMDE0NjU0OTU4NTM3MTA1MDc5MjI3OTY4OTI1ODkyMzU0MjAxOTk1NjExMjEyOTAyMTk2MDg2NDAzNDQxODE1OTgxMzYyOTc3NDc3MTMwOTk2MDUxODcwNzIxMTM0OTk5OTk5ODM3Mjk3ODA0OTk1MTA1OTczMTczMjgxNjA5NjMxODU5NTAyNDQ1OTQ1NTM0NjkwODMwMjY0MjUyMjMwODI1MzM0NDY4NTAzNTI2MTkzMTE4ODE3MTAxMDAwMzEzNzgzODc1Mjg4NjU4NzUzMzIwODM4MTQyMDYxNzE3NzY2OTE0NzMwMzU5ODI1MzQ5MDQyODc1NTQ2ODczMTE1OTU2Mjg2Mzg4MjM1Mzc4NzU5Mzc1MTk1Nzc4MTg1Nzc4MDUzMjE3MTIyNjgwNjYxMzAwMTkyNzg3NjYxMTE5NTkwOTIxNjQyMDE5ODkzODA5NTI1NzIwMTA2NTQ4NTg2MzI3ODknLFxyXG5cclxuXHJcbiAgICAvLyBUaGUgaW5pdGlhbCBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgb2YgdGhlIERlY2ltYWwgY29uc3RydWN0b3IuXHJcbiAgICBERUZBVUxUUyA9IHtcclxuXHJcbiAgICAgIC8vIFRoZXNlIHZhbHVlcyBtdXN0IGJlIGludGVnZXJzIHdpdGhpbiB0aGUgc3RhdGVkIHJhbmdlcyAoaW5jbHVzaXZlKS5cclxuICAgICAgLy8gTW9zdCBvZiB0aGVzZSB2YWx1ZXMgY2FuIGJlIGNoYW5nZWQgYXQgcnVuLXRpbWUgdXNpbmcgdGhlIGBEZWNpbWFsLmNvbmZpZ2AgbWV0aG9kLlxyXG5cclxuICAgICAgLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBvZiB0aGUgcmVzdWx0IG9mIGEgY2FsY3VsYXRpb24gb3IgYmFzZSBjb252ZXJzaW9uLlxyXG4gICAgICAvLyBFLmcuIGBEZWNpbWFsLmNvbmZpZyh7IHByZWNpc2lvbjogMjAgfSk7YFxyXG4gICAgICBwcmVjaXNpb246IDIwLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIHRvIE1BWF9ESUdJVFNcclxuXHJcbiAgICAgIC8vIFRoZSByb3VuZGluZyBtb2RlIHVzZWQgd2hlbiByb3VuZGluZyB0byBgcHJlY2lzaW9uYC5cclxuICAgICAgLy9cclxuICAgICAgLy8gUk9VTkRfVVAgICAgICAgICAwIEF3YXkgZnJvbSB6ZXJvLlxyXG4gICAgICAvLyBST1VORF9ET1dOICAgICAgIDEgVG93YXJkcyB6ZXJvLlxyXG4gICAgICAvLyBST1VORF9DRUlMICAgICAgIDIgVG93YXJkcyArSW5maW5pdHkuXHJcbiAgICAgIC8vIFJPVU5EX0ZMT09SICAgICAgMyBUb3dhcmRzIC1JbmZpbml0eS5cclxuICAgICAgLy8gUk9VTkRfSEFMRl9VUCAgICA0IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCB1cC5cclxuICAgICAgLy8gUk9VTkRfSEFMRl9ET1dOICA1IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCBkb3duLlxyXG4gICAgICAvLyBST1VORF9IQUxGX0VWRU4gIDYgVG93YXJkcyBuZWFyZXN0IG5laWdoYm91ci4gSWYgZXF1aWRpc3RhbnQsIHRvd2FyZHMgZXZlbiBuZWlnaGJvdXIuXHJcbiAgICAgIC8vIFJPVU5EX0hBTEZfQ0VJTCAgNyBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyArSW5maW5pdHkuXHJcbiAgICAgIC8vIFJPVU5EX0hBTEZfRkxPT1IgOCBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyAtSW5maW5pdHkuXHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIEUuZy5cclxuICAgICAgLy8gYERlY2ltYWwucm91bmRpbmcgPSA0O2BcclxuICAgICAgLy8gYERlY2ltYWwucm91bmRpbmcgPSBEZWNpbWFsLlJPVU5EX0hBTEZfVVA7YFxyXG4gICAgICByb3VuZGluZzogNCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIDhcclxuXHJcbiAgICAgIC8vIFRoZSBtb2R1bG8gbW9kZSB1c2VkIHdoZW4gY2FsY3VsYXRpbmcgdGhlIG1vZHVsdXM6IGEgbW9kIG4uXHJcbiAgICAgIC8vIFRoZSBxdW90aWVudCAocSA9IGEgLyBuKSBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyByb3VuZGluZyBtb2RlLlxyXG4gICAgICAvLyBUaGUgcmVtYWluZGVyIChyKSBpcyBjYWxjdWxhdGVkIGFzOiByID0gYSAtIG4gKiBxLlxyXG4gICAgICAvL1xyXG4gICAgICAvLyBVUCAgICAgICAgIDAgVGhlIHJlbWFpbmRlciBpcyBwb3NpdGl2ZSBpZiB0aGUgZGl2aWRlbmQgaXMgbmVnYXRpdmUsIGVsc2UgaXMgbmVnYXRpdmUuXHJcbiAgICAgIC8vIERPV04gICAgICAgMSBUaGUgcmVtYWluZGVyIGhhcyB0aGUgc2FtZSBzaWduIGFzIHRoZSBkaXZpZGVuZCAoSmF2YVNjcmlwdCAlKS5cclxuICAgICAgLy8gRkxPT1IgICAgICAzIFRoZSByZW1haW5kZXIgaGFzIHRoZSBzYW1lIHNpZ24gYXMgdGhlIGRpdmlzb3IgKFB5dGhvbiAlKS5cclxuICAgICAgLy8gSEFMRl9FVkVOICA2IFRoZSBJRUVFIDc1NCByZW1haW5kZXIgZnVuY3Rpb24uXHJcbiAgICAgIC8vIEVVQ0xJRCAgICAgOSBFdWNsaWRpYW4gZGl2aXNpb24uIHEgPSBzaWduKG4pICogZmxvb3IoYSAvIGFicyhuKSkuIEFsd2F5cyBwb3NpdGl2ZS5cclxuICAgICAgLy9cclxuICAgICAgLy8gVHJ1bmNhdGVkIGRpdmlzaW9uICgxKSwgZmxvb3JlZCBkaXZpc2lvbiAoMyksIHRoZSBJRUVFIDc1NCByZW1haW5kZXIgKDYpLCBhbmQgRXVjbGlkaWFuXHJcbiAgICAgIC8vIGRpdmlzaW9uICg5KSBhcmUgY29tbW9ubHkgdXNlZCBmb3IgdGhlIG1vZHVsdXMgb3BlcmF0aW9uLiBUaGUgb3RoZXIgcm91bmRpbmcgbW9kZXMgY2FuIGFsc29cclxuICAgICAgLy8gYmUgdXNlZCwgYnV0IHRoZXkgbWF5IG5vdCBnaXZlIHVzZWZ1bCByZXN1bHRzLlxyXG4gICAgICBtb2R1bG86IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIDlcclxuXHJcbiAgICAgIC8vIFRoZSBleHBvbmVudCB2YWx1ZSBhdCBhbmQgYmVuZWF0aCB3aGljaCBgdG9TdHJpbmdgIHJldHVybnMgZXhwb25lbnRpYWwgbm90YXRpb24uXHJcbiAgICAgIC8vIEphdmFTY3JpcHQgbnVtYmVyczogLTdcclxuICAgICAgdG9FeHBOZWc6IC03LCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byAtRVhQX0xJTUlUXHJcblxyXG4gICAgICAvLyBUaGUgZXhwb25lbnQgdmFsdWUgYXQgYW5kIGFib3ZlIHdoaWNoIGB0b1N0cmluZ2AgcmV0dXJucyBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgICAgLy8gSmF2YVNjcmlwdCBudW1iZXJzOiAyMVxyXG4gICAgICB0b0V4cFBvczogIDIxLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIEVYUF9MSU1JVFxyXG5cclxuICAgICAgLy8gVGhlIG1pbmltdW0gZXhwb25lbnQgdmFsdWUsIGJlbmVhdGggd2hpY2ggdW5kZXJmbG93IHRvIHplcm8gb2NjdXJzLlxyXG4gICAgICAvLyBKYXZhU2NyaXB0IG51bWJlcnM6IC0zMjQgICg1ZS0zMjQpXHJcbiAgICAgIG1pbkU6IC1FWFBfTElNSVQsICAgICAgICAgICAgICAgICAgICAgIC8vIC0xIHRvIC1FWFBfTElNSVRcclxuXHJcbiAgICAgIC8vIFRoZSBtYXhpbXVtIGV4cG9uZW50IHZhbHVlLCBhYm92ZSB3aGljaCBvdmVyZmxvdyB0byBJbmZpbml0eSBvY2N1cnMuXHJcbiAgICAgIC8vIEphdmFTY3JpcHQgbnVtYmVyczogMzA4ICAoMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgpXHJcbiAgICAgIG1heEU6IEVYUF9MSU1JVCwgICAgICAgICAgICAgICAgICAgICAgIC8vIDEgdG8gRVhQX0xJTUlUXHJcblxyXG4gICAgICAvLyBXaGV0aGVyIHRvIHVzZSBjcnlwdG9ncmFwaGljYWxseS1zZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uLCBpZiBhdmFpbGFibGUuXHJcbiAgICAgIGNyeXB0bzogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRydWUvZmFsc2VcclxuICAgIH0sXHJcblxyXG5cclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgT0YgRURJVEFCTEUgREVGQVVMVFMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xyXG5cclxuXHJcbiAgICBEZWNpbWFsLCBpbmV4YWN0LCBub0NvbmZsaWN0LCBxdWFkcmFudCxcclxuICAgIGV4dGVybmFsID0gdHJ1ZSxcclxuXHJcbiAgICBkZWNpbWFsRXJyb3IgPSAnW0RlY2ltYWxFcnJvcl0gJyxcclxuICAgIGludmFsaWRBcmd1bWVudCA9IGRlY2ltYWxFcnJvciArICdJbnZhbGlkIGFyZ3VtZW50OiAnLFxyXG4gICAgcHJlY2lzaW9uTGltaXRFeGNlZWRlZCA9IGRlY2ltYWxFcnJvciArICdQcmVjaXNpb24gbGltaXQgZXhjZWVkZWQnLFxyXG4gICAgY3J5cHRvVW5hdmFpbGFibGUgPSBkZWNpbWFsRXJyb3IgKyAnY3J5cHRvIHVuYXZhaWxhYmxlJyxcclxuICAgIHRhZyA9ICdbb2JqZWN0IERlY2ltYWxdJyxcclxuXHJcbiAgICBtYXRoZmxvb3IgPSBNYXRoLmZsb29yLFxyXG4gICAgbWF0aHBvdyA9IE1hdGgucG93LFxyXG5cclxuICAgIGlzQmluYXJ5ID0gL14wYihbMDFdKyhcXC5bMDFdKik/fFxcLlswMV0rKShwWystXT9cXGQrKT8kL2ksXHJcbiAgICBpc0hleCA9IC9eMHgoWzAtOWEtZl0rKFxcLlswLTlhLWZdKik/fFxcLlswLTlhLWZdKykocFsrLV0/XFxkKyk/JC9pLFxyXG4gICAgaXNPY3RhbCA9IC9eMG8oWzAtN10rKFxcLlswLTddKik/fFxcLlswLTddKykocFsrLV0/XFxkKyk/JC9pLFxyXG4gICAgaXNEZWNpbWFsID0gL14oXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoZVsrLV0/XFxkKyk/JC9pLFxyXG5cclxuICAgIEJBU0UgPSAxZTcsXHJcbiAgICBMT0dfQkFTRSA9IDcsXHJcbiAgICBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MSxcclxuXHJcbiAgICBMTjEwX1BSRUNJU0lPTiA9IExOMTAubGVuZ3RoIC0gMSxcclxuICAgIFBJX1BSRUNJU0lPTiA9IFBJLmxlbmd0aCAtIDEsXHJcblxyXG4gICAgLy8gRGVjaW1hbC5wcm90b3R5cGUgb2JqZWN0XHJcbiAgICBQID0geyB0b1N0cmluZ1RhZzogdGFnIH07XHJcblxyXG5cclxuICAvLyBEZWNpbWFsIHByb3RvdHlwZSBtZXRob2RzXHJcblxyXG5cclxuICAvKlxyXG4gICAqICBhYnNvbHV0ZVZhbHVlICAgICAgICAgICAgIGFic1xyXG4gICAqICBjZWlsXHJcbiAgICogIGNsYW1wZWRUbyAgICAgICAgICAgICAgICAgY2xhbXBcclxuICAgKiAgY29tcGFyZWRUbyAgICAgICAgICAgICAgICBjbXBcclxuICAgKiAgY29zaW5lICAgICAgICAgICAgICAgICAgICBjb3NcclxuICAgKiAgY3ViZVJvb3QgICAgICAgICAgICAgICAgICBjYnJ0XHJcbiAgICogIGRlY2ltYWxQbGFjZXMgICAgICAgICAgICAgZHBcclxuICAgKiAgZGl2aWRlZEJ5ICAgICAgICAgICAgICAgICBkaXZcclxuICAgKiAgZGl2aWRlZFRvSW50ZWdlckJ5ICAgICAgICBkaXZUb0ludFxyXG4gICAqICBlcXVhbHMgICAgICAgICAgICAgICAgICAgIGVxXHJcbiAgICogIGZsb29yXHJcbiAgICogIGdyZWF0ZXJUaGFuICAgICAgICAgICAgICAgZ3RcclxuICAgKiAgZ3JlYXRlclRoYW5PckVxdWFsVG8gICAgICBndGVcclxuICAgKiAgaHlwZXJib2xpY0Nvc2luZSAgICAgICAgICBjb3NoXHJcbiAgICogIGh5cGVyYm9saWNTaW5lICAgICAgICAgICAgc2luaFxyXG4gICAqICBoeXBlcmJvbGljVGFuZ2VudCAgICAgICAgIHRhbmhcclxuICAgKiAgaW52ZXJzZUNvc2luZSAgICAgICAgICAgICBhY29zXHJcbiAgICogIGludmVyc2VIeXBlcmJvbGljQ29zaW5lICAgYWNvc2hcclxuICAgKiAgaW52ZXJzZUh5cGVyYm9saWNTaW5lICAgICBhc2luaFxyXG4gICAqICBpbnZlcnNlSHlwZXJib2xpY1RhbmdlbnQgIGF0YW5oXHJcbiAgICogIGludmVyc2VTaW5lICAgICAgICAgICAgICAgYXNpblxyXG4gICAqICBpbnZlcnNlVGFuZ2VudCAgICAgICAgICAgIGF0YW5cclxuICAgKiAgaXNGaW5pdGVcclxuICAgKiAgaXNJbnRlZ2VyICAgICAgICAgICAgICAgICBpc0ludFxyXG4gICAqICBpc05hTlxyXG4gICAqICBpc05lZ2F0aXZlICAgICAgICAgICAgICAgIGlzTmVnXHJcbiAgICogIGlzUG9zaXRpdmUgICAgICAgICAgICAgICAgaXNQb3NcclxuICAgKiAgaXNaZXJvXHJcbiAgICogIGxlc3NUaGFuICAgICAgICAgICAgICAgICAgbHRcclxuICAgKiAgbGVzc1RoYW5PckVxdWFsVG8gICAgICAgICBsdGVcclxuICAgKiAgbG9nYXJpdGhtICAgICAgICAgICAgICAgICBsb2dcclxuICAgKiAgW21heGltdW1dICAgICAgICAgICAgICAgICBbbWF4XVxyXG4gICAqICBbbWluaW11bV0gICAgICAgICAgICAgICAgIFttaW5dXHJcbiAgICogIG1pbnVzICAgICAgICAgICAgICAgICAgICAgc3ViXHJcbiAgICogIG1vZHVsbyAgICAgICAgICAgICAgICAgICAgbW9kXHJcbiAgICogIG5hdHVyYWxFeHBvbmVudGlhbCAgICAgICAgZXhwXHJcbiAgICogIG5hdHVyYWxMb2dhcml0aG0gICAgICAgICAgbG5cclxuICAgKiAgbmVnYXRlZCAgICAgICAgICAgICAgICAgICBuZWdcclxuICAgKiAgcGx1cyAgICAgICAgICAgICAgICAgICAgICBhZGRcclxuICAgKiAgcHJlY2lzaW9uICAgICAgICAgICAgICAgICBzZFxyXG4gICAqICByb3VuZFxyXG4gICAqICBzaW5lICAgICAgICAgICAgICAgICAgICAgIHNpblxyXG4gICAqICBzcXVhcmVSb290ICAgICAgICAgICAgICAgIHNxcnRcclxuICAgKiAgdGFuZ2VudCAgICAgICAgICAgICAgICAgICB0YW5cclxuICAgKiAgdGltZXMgICAgICAgICAgICAgICAgICAgICBtdWxcclxuICAgKiAgdG9CaW5hcnlcclxuICAgKiAgdG9EZWNpbWFsUGxhY2VzICAgICAgICAgICB0b0RQXHJcbiAgICogIHRvRXhwb25lbnRpYWxcclxuICAgKiAgdG9GaXhlZFxyXG4gICAqICB0b0ZyYWN0aW9uXHJcbiAgICogIHRvSGV4YWRlY2ltYWwgICAgICAgICAgICAgdG9IZXhcclxuICAgKiAgdG9OZWFyZXN0XHJcbiAgICogIHRvTnVtYmVyXHJcbiAgICogIHRvT2N0YWxcclxuICAgKiAgdG9Qb3dlciAgICAgICAgICAgICAgICAgICBwb3dcclxuICAgKiAgdG9QcmVjaXNpb25cclxuICAgKiAgdG9TaWduaWZpY2FudERpZ2l0cyAgICAgICB0b1NEXHJcbiAgICogIHRvU3RyaW5nXHJcbiAgICogIHRydW5jYXRlZCAgICAgICAgICAgICAgICAgdHJ1bmNcclxuICAgKiAgdmFsdWVPZiAgICAgICAgICAgICAgICAgICB0b0pTT05cclxuICAgKi9cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuYWJzb2x1dGVWYWx1ZSA9IFAuYWJzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHggPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzKTtcclxuICAgIGlmICh4LnMgPCAwKSB4LnMgPSAxO1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHgpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgcm91bmRlZCB0byBhIHdob2xlIG51bWJlciBpbiB0aGVcclxuICAgKiBkaXJlY3Rpb24gb2YgcG9zaXRpdmUgSW5maW5pdHkuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmNlaWwgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gZmluYWxpc2UobmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyksIHRoaXMuZSArIDEsIDIpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgY2xhbXBlZCB0byB0aGUgcmFuZ2VcclxuICAgKiBkZWxpbmVhdGVkIGJ5IGBtaW5gIGFuZCBgbWF4YC5cclxuICAgKlxyXG4gICAqIG1pbiB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqIG1heCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5jbGFtcGVkVG8gPSBQLmNsYW1wID0gZnVuY3Rpb24gKG1pbiwgbWF4KSB7XHJcbiAgICB2YXIgayxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG4gICAgbWluID0gbmV3IEN0b3IobWluKTtcclxuICAgIG1heCA9IG5ldyBDdG9yKG1heCk7XHJcbiAgICBpZiAoIW1pbi5zIHx8ICFtYXgucykgcmV0dXJuIG5ldyBDdG9yKE5hTik7XHJcbiAgICBpZiAobWluLmd0KG1heCkpIHRocm93IEVycm9yKGludmFsaWRBcmd1bWVudCArIG1heCk7XHJcbiAgICBrID0geC5jbXAobWluKTtcclxuICAgIHJldHVybiBrIDwgMCA/IG1pbiA6IHguY21wKG1heCkgPiAwID8gbWF4IDogbmV3IEN0b3IoeCk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuXHJcbiAgICogICAxICAgIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaXMgZ3JlYXRlciB0aGFuIHRoZSB2YWx1ZSBvZiBgeWAsXHJcbiAgICogIC0xICAgIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaXMgbGVzcyB0aGFuIHRoZSB2YWx1ZSBvZiBgeWAsXHJcbiAgICogICAwICAgIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSB2YWx1ZSxcclxuICAgKiAgIE5hTiAgaWYgdGhlIHZhbHVlIG9mIGVpdGhlciBEZWNpbWFsIGlzIE5hTi5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuY29tcGFyZWRUbyA9IFAuY21wID0gZnVuY3Rpb24gKHkpIHtcclxuICAgIHZhciBpLCBqLCB4ZEwsIHlkTCxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIHhkID0geC5kLFxyXG4gICAgICB5ZCA9ICh5ID0gbmV3IHguY29uc3RydWN0b3IoeSkpLmQsXHJcbiAgICAgIHhzID0geC5zLFxyXG4gICAgICB5cyA9IHkucztcclxuXHJcbiAgICAvLyBFaXRoZXIgTmFOIG9yIMKxSW5maW5pdHk/XHJcbiAgICBpZiAoIXhkIHx8ICF5ZCkge1xyXG4gICAgICByZXR1cm4gIXhzIHx8ICF5cyA/IE5hTiA6IHhzICE9PSB5cyA/IHhzIDogeGQgPT09IHlkID8gMCA6ICF4ZCBeIHhzIDwgMCA/IDEgOiAtMTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBFaXRoZXIgemVybz9cclxuICAgIGlmICgheGRbMF0gfHwgIXlkWzBdKSByZXR1cm4geGRbMF0gPyB4cyA6IHlkWzBdID8gLXlzIDogMDtcclxuXHJcbiAgICAvLyBTaWducyBkaWZmZXI/XHJcbiAgICBpZiAoeHMgIT09IHlzKSByZXR1cm4geHM7XHJcblxyXG4gICAgLy8gQ29tcGFyZSBleHBvbmVudHMuXHJcbiAgICBpZiAoeC5lICE9PSB5LmUpIHJldHVybiB4LmUgPiB5LmUgXiB4cyA8IDAgPyAxIDogLTE7XHJcblxyXG4gICAgeGRMID0geGQubGVuZ3RoO1xyXG4gICAgeWRMID0geWQubGVuZ3RoO1xyXG5cclxuICAgIC8vIENvbXBhcmUgZGlnaXQgYnkgZGlnaXQuXHJcbiAgICBmb3IgKGkgPSAwLCBqID0geGRMIDwgeWRMID8geGRMIDogeWRMOyBpIDwgajsgKytpKSB7XHJcbiAgICAgIGlmICh4ZFtpXSAhPT0geWRbaV0pIHJldHVybiB4ZFtpXSA+IHlkW2ldIF4geHMgPCAwID8gMSA6IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENvbXBhcmUgbGVuZ3Rocy5cclxuICAgIHJldHVybiB4ZEwgPT09IHlkTCA/IDAgOiB4ZEwgPiB5ZEwgXiB4cyA8IDAgPyAxIDogLTE7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGNvc2luZSBvZiB0aGUgdmFsdWUgaW4gcmFkaWFucyBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBEb21haW46IFstSW5maW5pdHksIEluZmluaXR5XVxyXG4gICAqIFJhbmdlOiBbLTEsIDFdXHJcbiAgICpcclxuICAgKiBjb3MoMCkgICAgICAgICA9IDFcclxuICAgKiBjb3MoLTApICAgICAgICA9IDFcclxuICAgKiBjb3MoSW5maW5pdHkpICA9IE5hTlxyXG4gICAqIGNvcygtSW5maW5pdHkpID0gTmFOXHJcbiAgICogY29zKE5hTikgICAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuY29zaW5lID0gUC5jb3MgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgcHIsIHJtLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKCF4LmQpIHJldHVybiBuZXcgQ3RvcihOYU4pO1xyXG5cclxuICAgIC8vIGNvcygwKSA9IGNvcygtMCkgPSAxXHJcbiAgICBpZiAoIXguZFswXSkgcmV0dXJuIG5ldyBDdG9yKDEpO1xyXG5cclxuICAgIHByID0gQ3Rvci5wcmVjaXNpb247XHJcbiAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByICsgTWF0aC5tYXgoeC5lLCB4LnNkKCkpICsgTE9HX0JBU0U7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuXHJcbiAgICB4ID0gY29zaW5lKEN0b3IsIHRvTGVzc1RoYW5IYWxmUGkoQ3RvciwgeCkpO1xyXG5cclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHI7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gcm07XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHF1YWRyYW50ID09IDIgfHwgcXVhZHJhbnQgPT0gMyA/IHgubmVnKCkgOiB4LCBwciwgcm0sIHRydWUpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGN1YmUgcm9vdCBvZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsLCByb3VuZGVkIHRvXHJcbiAgICogYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqICBjYnJ0KDApICA9ICAwXHJcbiAgICogIGNicnQoLTApID0gLTBcclxuICAgKiAgY2JydCgxKSAgPSAgMVxyXG4gICAqICBjYnJ0KC0xKSA9IC0xXHJcbiAgICogIGNicnQoTikgID0gIE5cclxuICAgKiAgY2JydCgtSSkgPSAtSVxyXG4gICAqICBjYnJ0KEkpICA9ICBJXHJcbiAgICpcclxuICAgKiBNYXRoLmNicnQoeCkgPSAoeCA8IDAgPyAtTWF0aC5wb3coLXgsIDEvMykgOiBNYXRoLnBvdyh4LCAxLzMpKVxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5jdWJlUm9vdCA9IFAuY2JydCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBlLCBtLCBuLCByLCByZXAsIHMsIHNkLCB0LCB0MywgdDNwbHVzeCxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpIHx8IHguaXNaZXJvKCkpIHJldHVybiBuZXcgQ3Rvcih4KTtcclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgLy8gSW5pdGlhbCBlc3RpbWF0ZS5cclxuICAgIHMgPSB4LnMgKiBtYXRocG93KHgucyAqIHgsIDEgLyAzKTtcclxuXHJcbiAgICAgLy8gTWF0aC5jYnJ0IHVuZGVyZmxvdy9vdmVyZmxvdz9cclxuICAgICAvLyBQYXNzIHggdG8gTWF0aC5wb3cgYXMgaW50ZWdlciwgdGhlbiBhZGp1c3QgdGhlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQuXHJcbiAgICBpZiAoIXMgfHwgTWF0aC5hYnMocykgPT0gMSAvIDApIHtcclxuICAgICAgbiA9IGRpZ2l0c1RvU3RyaW5nKHguZCk7XHJcbiAgICAgIGUgPSB4LmU7XHJcblxyXG4gICAgICAvLyBBZGp1c3QgbiBleHBvbmVudCBzbyBpdCBpcyBhIG11bHRpcGxlIG9mIDMgYXdheSBmcm9tIHggZXhwb25lbnQuXHJcbiAgICAgIGlmIChzID0gKGUgLSBuLmxlbmd0aCArIDEpICUgMykgbiArPSAocyA9PSAxIHx8IHMgPT0gLTIgPyAnMCcgOiAnMDAnKTtcclxuICAgICAgcyA9IG1hdGhwb3cobiwgMSAvIDMpO1xyXG5cclxuICAgICAgLy8gUmFyZWx5LCBlIG1heSBiZSBvbmUgbGVzcyB0aGFuIHRoZSByZXN1bHQgZXhwb25lbnQgdmFsdWUuXHJcbiAgICAgIGUgPSBtYXRoZmxvb3IoKGUgKyAxKSAvIDMpIC0gKGUgJSAzID09IChlIDwgMCA/IC0xIDogMikpO1xyXG5cclxuICAgICAgaWYgKHMgPT0gMSAvIDApIHtcclxuICAgICAgICBuID0gJzVlJyArIGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbiA9IHMudG9FeHBvbmVudGlhbCgpO1xyXG4gICAgICAgIG4gPSBuLnNsaWNlKDAsIG4uaW5kZXhPZignZScpICsgMSkgKyBlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByID0gbmV3IEN0b3Iobik7XHJcbiAgICAgIHIucyA9IHgucztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHIgPSBuZXcgQ3RvcihzLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNkID0gKGUgPSBDdG9yLnByZWNpc2lvbikgKyAzO1xyXG5cclxuICAgIC8vIEhhbGxleSdzIG1ldGhvZC5cclxuICAgIC8vIFRPRE8/IENvbXBhcmUgTmV3dG9uJ3MgbWV0aG9kLlxyXG4gICAgZm9yICg7Oykge1xyXG4gICAgICB0ID0gcjtcclxuICAgICAgdDMgPSB0LnRpbWVzKHQpLnRpbWVzKHQpO1xyXG4gICAgICB0M3BsdXN4ID0gdDMucGx1cyh4KTtcclxuICAgICAgciA9IGRpdmlkZSh0M3BsdXN4LnBsdXMoeCkudGltZXModCksIHQzcGx1c3gucGx1cyh0MyksIHNkICsgMiwgMSk7XHJcblxyXG4gICAgICAvLyBUT0RPPyBSZXBsYWNlIHdpdGggZm9yLWxvb3AgYW5kIGNoZWNrUm91bmRpbmdEaWdpdHMuXHJcbiAgICAgIGlmIChkaWdpdHNUb1N0cmluZyh0LmQpLnNsaWNlKDAsIHNkKSA9PT0gKG4gPSBkaWdpdHNUb1N0cmluZyhyLmQpKS5zbGljZSgwLCBzZCkpIHtcclxuICAgICAgICBuID0gbi5zbGljZShzZCAtIDMsIHNkICsgMSk7XHJcblxyXG4gICAgICAgIC8vIFRoZSA0dGggcm91bmRpbmcgZGlnaXQgbWF5IGJlIGluIGVycm9yIGJ5IC0xIHNvIGlmIHRoZSA0IHJvdW5kaW5nIGRpZ2l0cyBhcmUgOTk5OSBvciA0OTk5XHJcbiAgICAgICAgLy8gLCBpLmUuIGFwcHJvYWNoaW5nIGEgcm91bmRpbmcgYm91bmRhcnksIGNvbnRpbnVlIHRoZSBpdGVyYXRpb24uXHJcbiAgICAgICAgaWYgKG4gPT0gJzk5OTknIHx8ICFyZXAgJiYgbiA9PSAnNDk5OScpIHtcclxuXHJcbiAgICAgICAgICAvLyBPbiB0aGUgZmlyc3QgaXRlcmF0aW9uIG9ubHksIGNoZWNrIHRvIHNlZSBpZiByb3VuZGluZyB1cCBnaXZlcyB0aGUgZXhhY3QgcmVzdWx0IGFzIHRoZVxyXG4gICAgICAgICAgLy8gbmluZXMgbWF5IGluZmluaXRlbHkgcmVwZWF0LlxyXG4gICAgICAgICAgaWYgKCFyZXApIHtcclxuICAgICAgICAgICAgZmluYWxpc2UodCwgZSArIDEsIDApO1xyXG5cclxuICAgICAgICAgICAgaWYgKHQudGltZXModCkudGltZXModCkuZXEoeCkpIHtcclxuICAgICAgICAgICAgICByID0gdDtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHNkICs9IDQ7XHJcbiAgICAgICAgICByZXAgPSAxO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgLy8gSWYgdGhlIHJvdW5kaW5nIGRpZ2l0cyBhcmUgbnVsbCwgMHswLDR9IG9yIDUwezAsM30sIGNoZWNrIGZvciBhbiBleGFjdCByZXN1bHQuXHJcbiAgICAgICAgICAvLyBJZiBub3QsIHRoZW4gdGhlcmUgYXJlIGZ1cnRoZXIgZGlnaXRzIGFuZCBtIHdpbGwgYmUgdHJ1dGh5LlxyXG4gICAgICAgICAgaWYgKCErbiB8fCAhK24uc2xpY2UoMSkgJiYgbi5jaGFyQXQoMCkgPT0gJzUnKSB7XHJcblxyXG4gICAgICAgICAgICAvLyBUcnVuY2F0ZSB0byB0aGUgZmlyc3Qgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgICAgICAgIGZpbmFsaXNlKHIsIGUgKyAxLCAxKTtcclxuICAgICAgICAgICAgbSA9ICFyLnRpbWVzKHIpLnRpbWVzKHIpLmVxKHgpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UociwgZSwgQ3Rvci5yb3VuZGluZywgbSk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuZGVjaW1hbFBsYWNlcyA9IFAuZHAgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgdyxcclxuICAgICAgZCA9IHRoaXMuZCxcclxuICAgICAgbiA9IE5hTjtcclxuXHJcbiAgICBpZiAoZCkge1xyXG4gICAgICB3ID0gZC5sZW5ndGggLSAxO1xyXG4gICAgICBuID0gKHcgLSBtYXRoZmxvb3IodGhpcy5lIC8gTE9HX0JBU0UpKSAqIExPR19CQVNFO1xyXG5cclxuICAgICAgLy8gU3VidHJhY3QgdGhlIG51bWJlciBvZiB0cmFpbGluZyB6ZXJvcyBvZiB0aGUgbGFzdCB3b3JkLlxyXG4gICAgICB3ID0gZFt3XTtcclxuICAgICAgaWYgKHcpIGZvciAoOyB3ICUgMTAgPT0gMDsgdyAvPSAxMCkgbi0tO1xyXG4gICAgICBpZiAobiA8IDApIG4gPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqICBuIC8gMCA9IElcclxuICAgKiAgbiAvIE4gPSBOXHJcbiAgICogIG4gLyBJID0gMFxyXG4gICAqICAwIC8gbiA9IDBcclxuICAgKiAgMCAvIDAgPSBOXHJcbiAgICogIDAgLyBOID0gTlxyXG4gICAqICAwIC8gSSA9IDBcclxuICAgKiAgTiAvIG4gPSBOXHJcbiAgICogIE4gLyAwID0gTlxyXG4gICAqICBOIC8gTiA9IE5cclxuICAgKiAgTiAvIEkgPSBOXHJcbiAgICogIEkgLyBuID0gSVxyXG4gICAqICBJIC8gMCA9IElcclxuICAgKiAgSSAvIE4gPSBOXHJcbiAgICogIEkgLyBJID0gTlxyXG4gICAqXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBkaXZpZGVkIGJ5IGB5YCwgcm91bmRlZCB0b1xyXG4gICAqIGBwcmVjaXNpb25gIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmRpdmlkZWRCeSA9IFAuZGl2ID0gZnVuY3Rpb24gKHkpIHtcclxuICAgIHJldHVybiBkaXZpZGUodGhpcywgbmV3IHRoaXMuY29uc3RydWN0b3IoeSkpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBpbnRlZ2VyIHBhcnQgb2YgZGl2aWRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbFxyXG4gICAqIGJ5IHRoZSB2YWx1ZSBvZiBgeWAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuZGl2aWRlZFRvSW50ZWdlckJ5ID0gUC5kaXZUb0ludCA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICB2YXIgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKGRpdmlkZSh4LCBuZXcgQ3Rvcih5KSwgMCwgMSwgMSksIEN0b3IucHJlY2lzaW9uLCBDdG9yLnJvdW5kaW5nKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGlzIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBgeWAsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmVxdWFscyA9IFAuZXEgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgcmV0dXJuIHRoaXMuY21wKHkpID09PSAwO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgcm91bmRlZCB0byBhIHdob2xlIG51bWJlciBpbiB0aGVcclxuICAgKiBkaXJlY3Rpb24gb2YgbmVnYXRpdmUgSW5maW5pdHkuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmZsb29yID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpLCB0aGlzLmUgKyAxLCAzKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGlzIGdyZWF0ZXIgdGhhbiB0aGUgdmFsdWUgb2YgYHlgLCBvdGhlcndpc2UgcmV0dXJuXHJcbiAgICogZmFsc2UuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmdyZWF0ZXJUaGFuID0gUC5ndCA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICByZXR1cm4gdGhpcy5jbXAoeSkgPiAwO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBgeWAsXHJcbiAgICogb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuZ3JlYXRlclRoYW5PckVxdWFsVG8gPSBQLmd0ZSA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICB2YXIgayA9IHRoaXMuY21wKHkpO1xyXG4gICAgcmV0dXJuIGsgPT0gMSB8fCBrID09PSAwO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBoeXBlcmJvbGljIGNvc2luZSBvZiB0aGUgdmFsdWUgaW4gcmFkaWFucyBvZiB0aGlzXHJcbiAgICogRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy1JbmZpbml0eSwgSW5maW5pdHldXHJcbiAgICogUmFuZ2U6IFsxLCBJbmZpbml0eV1cclxuICAgKlxyXG4gICAqIGNvc2goeCkgPSAxICsgeF4yLzIhICsgeF40LzQhICsgeF42LzYhICsgLi4uXHJcbiAgICpcclxuICAgKiBjb3NoKDApICAgICAgICAgPSAxXHJcbiAgICogY29zaCgtMCkgICAgICAgID0gMVxyXG4gICAqIGNvc2goSW5maW5pdHkpICA9IEluZmluaXR5XHJcbiAgICogY29zaCgtSW5maW5pdHkpID0gSW5maW5pdHlcclxuICAgKiBjb3NoKE5hTikgICAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqICB4ICAgICAgICB0aW1lIHRha2VuIChtcykgICByZXN1bHRcclxuICAgKiAxMDAwICAgICAgOSAgICAgICAgICAgICAgICAgOS44NTAzNTU1NzAwODUyMzQ5Njk0ZSs0MzNcclxuICAgKiAxMDAwMCAgICAgMjUgICAgICAgICAgICAgICAgNC40MDM0MDkxMTI4MzE0NjA3OTM2ZSs0MzQyXHJcbiAgICogMTAwMDAwICAgIDE3MSAgICAgICAgICAgICAgIDEuNDAzMzMxNjgwMjEzMDYxNTg5N2UrNDM0MjlcclxuICAgKiAxMDAwMDAwICAgMzgxNyAgICAgICAgICAgICAgMS41MTY2MDc2OTg0MDEwNDM3NzI1ZSs0MzQyOTRcclxuICAgKiAxMDAwMDAwMCAgYWJhbmRvbmVkIGFmdGVyIDIgbWludXRlIHdhaXRcclxuICAgKlxyXG4gICAqIFRPRE8/IENvbXBhcmUgcGVyZm9ybWFuY2Ugb2YgY29zaCh4KSA9IDAuNSAqIChleHAoeCkgKyBleHAoLXgpKVxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5oeXBlcmJvbGljQ29zaW5lID0gUC5jb3NoID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGssIG4sIHByLCBybSwgbGVuLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgIG9uZSA9IG5ldyBDdG9yKDEpO1xyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpKSByZXR1cm4gbmV3IEN0b3IoeC5zID8gMSAvIDAgOiBOYU4pO1xyXG4gICAgaWYgKHguaXNaZXJvKCkpIHJldHVybiBvbmU7XHJcblxyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHIgKyBNYXRoLm1heCh4LmUsIHguc2QoKSkgKyA0O1xyXG4gICAgQ3Rvci5yb3VuZGluZyA9IDE7XHJcbiAgICBsZW4gPSB4LmQubGVuZ3RoO1xyXG5cclxuICAgIC8vIEFyZ3VtZW50IHJlZHVjdGlvbjogY29zKDR4KSA9IDEgLSA4Y29zXjIoeCkgKyA4Y29zXjQoeCkgKyAxXHJcbiAgICAvLyBpLmUuIGNvcyh4KSA9IDEgLSBjb3NeMih4LzQpKDggLSA4Y29zXjIoeC80KSlcclxuXHJcbiAgICAvLyBFc3RpbWF0ZSB0aGUgb3B0aW11bSBudW1iZXIgb2YgdGltZXMgdG8gdXNlIHRoZSBhcmd1bWVudCByZWR1Y3Rpb24uXHJcbiAgICAvLyBUT0RPPyBFc3RpbWF0aW9uIHJldXNlZCBmcm9tIGNvc2luZSgpIGFuZCBtYXkgbm90IGJlIG9wdGltYWwgaGVyZS5cclxuICAgIGlmIChsZW4gPCAzMikge1xyXG4gICAgICBrID0gTWF0aC5jZWlsKGxlbiAvIDMpO1xyXG4gICAgICBuID0gKDEgLyB0aW55UG93KDQsIGspKS50b1N0cmluZygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgayA9IDE2O1xyXG4gICAgICBuID0gJzIuMzI4MzA2NDM2NTM4Njk2Mjg5MDYyNWUtMTAnO1xyXG4gICAgfVxyXG5cclxuICAgIHggPSB0YXlsb3JTZXJpZXMoQ3RvciwgMSwgeC50aW1lcyhuKSwgbmV3IEN0b3IoMSksIHRydWUpO1xyXG5cclxuICAgIC8vIFJldmVyc2UgYXJndW1lbnQgcmVkdWN0aW9uXHJcbiAgICB2YXIgY29zaDJfeCxcclxuICAgICAgaSA9IGssXHJcbiAgICAgIGQ4ID0gbmV3IEN0b3IoOCk7XHJcbiAgICBmb3IgKDsgaS0tOykge1xyXG4gICAgICBjb3NoMl94ID0geC50aW1lcyh4KTtcclxuICAgICAgeCA9IG9uZS5taW51cyhjb3NoMl94LnRpbWVzKGQ4Lm1pbnVzKGNvc2gyX3gudGltZXMoZDgpKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaW5hbGlzZSh4LCBDdG9yLnByZWNpc2lvbiA9IHByLCBDdG9yLnJvdW5kaW5nID0gcm0sIHRydWUpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBoeXBlcmJvbGljIHNpbmUgb2YgdGhlIHZhbHVlIGluIHJhZGlhbnMgb2YgdGhpc1xyXG4gICAqIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBEb21haW46IFstSW5maW5pdHksIEluZmluaXR5XVxyXG4gICAqIFJhbmdlOiBbLUluZmluaXR5LCBJbmZpbml0eV1cclxuICAgKlxyXG4gICAqIHNpbmgoeCkgPSB4ICsgeF4zLzMhICsgeF41LzUhICsgeF43LzchICsgLi4uXHJcbiAgICpcclxuICAgKiBzaW5oKDApICAgICAgICAgPSAwXHJcbiAgICogc2luaCgtMCkgICAgICAgID0gLTBcclxuICAgKiBzaW5oKEluZmluaXR5KSAgPSBJbmZpbml0eVxyXG4gICAqIHNpbmgoLUluZmluaXR5KSA9IC1JbmZpbml0eVxyXG4gICAqIHNpbmgoTmFOKSAgICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICogeCAgICAgICAgdGltZSB0YWtlbiAobXMpXHJcbiAgICogMTAgICAgICAgMiBtc1xyXG4gICAqIDEwMCAgICAgIDUgbXNcclxuICAgKiAxMDAwICAgICAxNCBtc1xyXG4gICAqIDEwMDAwICAgIDgyIG1zXHJcbiAgICogMTAwMDAwICAgODg2IG1zICAgICAgICAgICAgMS40MDMzMzE2ODAyMTMwNjE1ODk3ZSs0MzQyOVxyXG4gICAqIDIwMDAwMCAgIDI2MTMgbXNcclxuICAgKiAzMDAwMDAgICA1NDA3IG1zXHJcbiAgICogNDAwMDAwICAgODgyNCBtc1xyXG4gICAqIDUwMDAwMCAgIDEzMDI2IG1zICAgICAgICAgIDguNzA4MDY0MzYxMjcxODA4NDEyOWUrMjE3MTQ2XHJcbiAgICogMTAwMDAwMCAgNDg1NDMgbXNcclxuICAgKlxyXG4gICAqIFRPRE8/IENvbXBhcmUgcGVyZm9ybWFuY2Ugb2Ygc2luaCh4KSA9IDAuNSAqIChleHAoeCkgLSBleHAoLXgpKVxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5oeXBlcmJvbGljU2luZSA9IFAuc2luaCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBrLCBwciwgcm0sIGxlbixcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpIHx8IHguaXNaZXJvKCkpIHJldHVybiBuZXcgQ3Rvcih4KTtcclxuXHJcbiAgICBwciA9IEN0b3IucHJlY2lzaW9uO1xyXG4gICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwciArIE1hdGgubWF4KHguZSwgeC5zZCgpKSArIDQ7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuICAgIGxlbiA9IHguZC5sZW5ndGg7XHJcblxyXG4gICAgaWYgKGxlbiA8IDMpIHtcclxuICAgICAgeCA9IHRheWxvclNlcmllcyhDdG9yLCAyLCB4LCB4LCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyBBbHRlcm5hdGl2ZSBhcmd1bWVudCByZWR1Y3Rpb246IHNpbmgoM3gpID0gc2luaCh4KSgzICsgNHNpbmheMih4KSlcclxuICAgICAgLy8gaS5lLiBzaW5oKHgpID0gc2luaCh4LzMpKDMgKyA0c2luaF4yKHgvMykpXHJcbiAgICAgIC8vIDMgbXVsdGlwbGljYXRpb25zIGFuZCAxIGFkZGl0aW9uXHJcblxyXG4gICAgICAvLyBBcmd1bWVudCByZWR1Y3Rpb246IHNpbmgoNXgpID0gc2luaCh4KSg1ICsgc2luaF4yKHgpKDIwICsgMTZzaW5oXjIoeCkpKVxyXG4gICAgICAvLyBpLmUuIHNpbmgoeCkgPSBzaW5oKHgvNSkoNSArIHNpbmheMih4LzUpKDIwICsgMTZzaW5oXjIoeC81KSkpXHJcbiAgICAgIC8vIDQgbXVsdGlwbGljYXRpb25zIGFuZCAyIGFkZGl0aW9uc1xyXG5cclxuICAgICAgLy8gRXN0aW1hdGUgdGhlIG9wdGltdW0gbnVtYmVyIG9mIHRpbWVzIHRvIHVzZSB0aGUgYXJndW1lbnQgcmVkdWN0aW9uLlxyXG4gICAgICBrID0gMS40ICogTWF0aC5zcXJ0KGxlbik7XHJcbiAgICAgIGsgPSBrID4gMTYgPyAxNiA6IGsgfCAwO1xyXG5cclxuICAgICAgeCA9IHgudGltZXMoMSAvIHRpbnlQb3coNSwgaykpO1xyXG4gICAgICB4ID0gdGF5bG9yU2VyaWVzKEN0b3IsIDIsIHgsIHgsIHRydWUpO1xyXG5cclxuICAgICAgLy8gUmV2ZXJzZSBhcmd1bWVudCByZWR1Y3Rpb25cclxuICAgICAgdmFyIHNpbmgyX3gsXHJcbiAgICAgICAgZDUgPSBuZXcgQ3Rvcig1KSxcclxuICAgICAgICBkMTYgPSBuZXcgQ3RvcigxNiksXHJcbiAgICAgICAgZDIwID0gbmV3IEN0b3IoMjApO1xyXG4gICAgICBmb3IgKDsgay0tOykge1xyXG4gICAgICAgIHNpbmgyX3ggPSB4LnRpbWVzKHgpO1xyXG4gICAgICAgIHggPSB4LnRpbWVzKGQ1LnBsdXMoc2luaDJfeC50aW1lcyhkMTYudGltZXMoc2luaDJfeCkucGx1cyhkMjApKSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwcjtcclxuICAgIEN0b3Iucm91bmRpbmcgPSBybTtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UoeCwgcHIsIHJtLCB0cnVlKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgaHlwZXJib2xpYyB0YW5nZW50IG9mIHRoZSB2YWx1ZSBpbiByYWRpYW5zIG9mIHRoaXNcclxuICAgKiBEZWNpbWFsLlxyXG4gICAqXHJcbiAgICogRG9tYWluOiBbLUluZmluaXR5LCBJbmZpbml0eV1cclxuICAgKiBSYW5nZTogWy0xLCAxXVxyXG4gICAqXHJcbiAgICogdGFuaCh4KSA9IHNpbmgoeCkgLyBjb3NoKHgpXHJcbiAgICpcclxuICAgKiB0YW5oKDApICAgICAgICAgPSAwXHJcbiAgICogdGFuaCgtMCkgICAgICAgID0gLTBcclxuICAgKiB0YW5oKEluZmluaXR5KSAgPSAxXHJcbiAgICogdGFuaCgtSW5maW5pdHkpID0gLTFcclxuICAgKiB0YW5oKE5hTikgICAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaHlwZXJib2xpY1RhbmdlbnQgPSBQLnRhbmggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgcHIsIHJtLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKCF4LmlzRmluaXRlKCkpIHJldHVybiBuZXcgQ3Rvcih4LnMpO1xyXG4gICAgaWYgKHguaXNaZXJvKCkpIHJldHVybiBuZXcgQ3Rvcih4KTtcclxuXHJcbiAgICBwciA9IEN0b3IucHJlY2lzaW9uO1xyXG4gICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwciArIDc7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuXHJcbiAgICByZXR1cm4gZGl2aWRlKHguc2luaCgpLCB4LmNvc2goKSwgQ3Rvci5wcmVjaXNpb24gPSBwciwgQ3Rvci5yb3VuZGluZyA9IHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgYXJjY29zaW5lIChpbnZlcnNlIGNvc2luZSkgaW4gcmFkaWFucyBvZiB0aGUgdmFsdWUgb2ZcclxuICAgKiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBEb21haW46IFstMSwgMV1cclxuICAgKiBSYW5nZTogWzAsIHBpXVxyXG4gICAqXHJcbiAgICogYWNvcyh4KSA9IHBpLzIgLSBhc2luKHgpXHJcbiAgICpcclxuICAgKiBhY29zKDApICAgICAgID0gcGkvMlxyXG4gICAqIGFjb3MoLTApICAgICAgPSBwaS8yXHJcbiAgICogYWNvcygxKSAgICAgICA9IDBcclxuICAgKiBhY29zKC0xKSAgICAgID0gcGlcclxuICAgKiBhY29zKDEvMikgICAgID0gcGkvM1xyXG4gICAqIGFjb3MoLTEvMikgICAgPSAyKnBpLzNcclxuICAgKiBhY29zKHx4fCA+IDEpID0gTmFOXHJcbiAgICogYWNvcyhOYU4pICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5pbnZlcnNlQ29zaW5lID0gUC5hY29zID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGhhbGZQaSxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yLFxyXG4gICAgICBrID0geC5hYnMoKS5jbXAoMSksXHJcbiAgICAgIHByID0gQ3Rvci5wcmVjaXNpb24sXHJcbiAgICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuXHJcbiAgICBpZiAoayAhPT0gLTEpIHtcclxuICAgICAgcmV0dXJuIGsgPT09IDBcclxuICAgICAgICAvLyB8eHwgaXMgMVxyXG4gICAgICAgID8geC5pc05lZygpID8gZ2V0UGkoQ3RvciwgcHIsIHJtKSA6IG5ldyBDdG9yKDApXHJcbiAgICAgICAgLy8gfHh8ID4gMSBvciB4IGlzIE5hTlxyXG4gICAgICAgIDogbmV3IEN0b3IoTmFOKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoeC5pc1plcm8oKSkgcmV0dXJuIGdldFBpKEN0b3IsIHByICsgNCwgcm0pLnRpbWVzKDAuNSk7XHJcblxyXG4gICAgLy8gVE9ETz8gU3BlY2lhbCBjYXNlIGFjb3MoMC41KSA9IHBpLzMgYW5kIGFjb3MoLTAuNSkgPSAyKnBpLzNcclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByICsgNjtcclxuICAgIEN0b3Iucm91bmRpbmcgPSAxO1xyXG5cclxuICAgIHggPSB4LmFzaW4oKTtcclxuICAgIGhhbGZQaSA9IGdldFBpKEN0b3IsIHByICsgNCwgcm0pLnRpbWVzKDAuNSk7XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwcjtcclxuICAgIEN0b3Iucm91bmRpbmcgPSBybTtcclxuXHJcbiAgICByZXR1cm4gaGFsZlBpLm1pbnVzKHgpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBpbnZlcnNlIG9mIHRoZSBoeXBlcmJvbGljIGNvc2luZSBpbiByYWRpYW5zIG9mIHRoZVxyXG4gICAqIHZhbHVlIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWzEsIEluZmluaXR5XVxyXG4gICAqIFJhbmdlOiBbMCwgSW5maW5pdHldXHJcbiAgICpcclxuICAgKiBhY29zaCh4KSA9IGxuKHggKyBzcXJ0KHheMiAtIDEpKVxyXG4gICAqXHJcbiAgICogYWNvc2goeCA8IDEpICAgICA9IE5hTlxyXG4gICAqIGFjb3NoKE5hTikgICAgICAgPSBOYU5cclxuICAgKiBhY29zaChJbmZpbml0eSkgID0gSW5maW5pdHlcclxuICAgKiBhY29zaCgtSW5maW5pdHkpID0gTmFOXHJcbiAgICogYWNvc2goMCkgICAgICAgICA9IE5hTlxyXG4gICAqIGFjb3NoKC0wKSAgICAgICAgPSBOYU5cclxuICAgKiBhY29zaCgxKSAgICAgICAgID0gMFxyXG4gICAqIGFjb3NoKC0xKSAgICAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaW52ZXJzZUh5cGVyYm9saWNDb3NpbmUgPSBQLmFjb3NoID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHByLCBybSxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmICh4Lmx0ZSgxKSkgcmV0dXJuIG5ldyBDdG9yKHguZXEoMSkgPyAwIDogTmFOKTtcclxuICAgIGlmICgheC5pc0Zpbml0ZSgpKSByZXR1cm4gbmV3IEN0b3IoeCk7XHJcblxyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHIgKyBNYXRoLm1heChNYXRoLmFicyh4LmUpLCB4LnNkKCkpICsgNDtcclxuICAgIEN0b3Iucm91bmRpbmcgPSAxO1xyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuXHJcbiAgICB4ID0geC50aW1lcyh4KS5taW51cygxKS5zcXJ0KCkucGx1cyh4KTtcclxuXHJcbiAgICBleHRlcm5hbCA9IHRydWU7XHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByO1xyXG4gICAgQ3Rvci5yb3VuZGluZyA9IHJtO1xyXG5cclxuICAgIHJldHVybiB4LmxuKCk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGludmVyc2Ugb2YgdGhlIGh5cGVyYm9saWMgc2luZSBpbiByYWRpYW5zIG9mIHRoZSB2YWx1ZVxyXG4gICAqIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy1JbmZpbml0eSwgSW5maW5pdHldXHJcbiAgICogUmFuZ2U6IFstSW5maW5pdHksIEluZmluaXR5XVxyXG4gICAqXHJcbiAgICogYXNpbmgoeCkgPSBsbih4ICsgc3FydCh4XjIgKyAxKSlcclxuICAgKlxyXG4gICAqIGFzaW5oKE5hTikgICAgICAgPSBOYU5cclxuICAgKiBhc2luaChJbmZpbml0eSkgID0gSW5maW5pdHlcclxuICAgKiBhc2luaCgtSW5maW5pdHkpID0gLUluZmluaXR5XHJcbiAgICogYXNpbmgoMCkgICAgICAgICA9IDBcclxuICAgKiBhc2luaCgtMCkgICAgICAgID0gLTBcclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaW52ZXJzZUh5cGVyYm9saWNTaW5lID0gUC5hc2luaCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBwciwgcm0sXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICBpZiAoIXguaXNGaW5pdGUoKSB8fCB4LmlzWmVybygpKSByZXR1cm4gbmV3IEN0b3IoeCk7XHJcblxyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHIgKyAyICogTWF0aC5tYXgoTWF0aC5hYnMoeC5lKSwgeC5zZCgpKSArIDY7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgeCA9IHgudGltZXMoeCkucGx1cygxKS5zcXJ0KCkucGx1cyh4KTtcclxuXHJcbiAgICBleHRlcm5hbCA9IHRydWU7XHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByO1xyXG4gICAgQ3Rvci5yb3VuZGluZyA9IHJtO1xyXG5cclxuICAgIHJldHVybiB4LmxuKCk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGludmVyc2Ugb2YgdGhlIGh5cGVyYm9saWMgdGFuZ2VudCBpbiByYWRpYW5zIG9mIHRoZVxyXG4gICAqIHZhbHVlIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy0xLCAxXVxyXG4gICAqIFJhbmdlOiBbLUluZmluaXR5LCBJbmZpbml0eV1cclxuICAgKlxyXG4gICAqIGF0YW5oKHgpID0gMC41ICogbG4oKDEgKyB4KSAvICgxIC0geCkpXHJcbiAgICpcclxuICAgKiBhdGFuaCh8eHwgPiAxKSAgID0gTmFOXHJcbiAgICogYXRhbmgoTmFOKSAgICAgICA9IE5hTlxyXG4gICAqIGF0YW5oKEluZmluaXR5KSAgPSBOYU5cclxuICAgKiBhdGFuaCgtSW5maW5pdHkpID0gTmFOXHJcbiAgICogYXRhbmgoMCkgICAgICAgICA9IDBcclxuICAgKiBhdGFuaCgtMCkgICAgICAgID0gLTBcclxuICAgKiBhdGFuaCgxKSAgICAgICAgID0gSW5maW5pdHlcclxuICAgKiBhdGFuaCgtMSkgICAgICAgID0gLUluZmluaXR5XHJcbiAgICpcclxuICAgKi9cclxuICBQLmludmVyc2VIeXBlcmJvbGljVGFuZ2VudCA9IFAuYXRhbmggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgcHIsIHJtLCB3cHIsIHhzZCxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpKSByZXR1cm4gbmV3IEN0b3IoTmFOKTtcclxuICAgIGlmICh4LmUgPj0gMCkgcmV0dXJuIG5ldyBDdG9yKHguYWJzKCkuZXEoMSkgPyB4LnMgLyAwIDogeC5pc1plcm8oKSA/IHggOiBOYU4pO1xyXG5cclxuICAgIHByID0gQ3Rvci5wcmVjaXNpb247XHJcbiAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcbiAgICB4c2QgPSB4LnNkKCk7XHJcblxyXG4gICAgaWYgKE1hdGgubWF4KHhzZCwgcHIpIDwgMiAqIC14LmUgLSAxKSByZXR1cm4gZmluYWxpc2UobmV3IEN0b3IoeCksIHByLCBybSwgdHJ1ZSk7XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSB3cHIgPSB4c2QgLSB4LmU7XHJcblxyXG4gICAgeCA9IGRpdmlkZSh4LnBsdXMoMSksIG5ldyBDdG9yKDEpLm1pbnVzKHgpLCB3cHIgKyBwciwgMSk7XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwciArIDQ7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuXHJcbiAgICB4ID0geC5sbigpO1xyXG5cclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHI7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gcm07XHJcblxyXG4gICAgcmV0dXJuIHgudGltZXMoMC41KTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgYXJjc2luZSAoaW52ZXJzZSBzaW5lKSBpbiByYWRpYW5zIG9mIHRoZSB2YWx1ZSBvZiB0aGlzXHJcbiAgICogRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy1JbmZpbml0eSwgSW5maW5pdHldXHJcbiAgICogUmFuZ2U6IFstcGkvMiwgcGkvMl1cclxuICAgKlxyXG4gICAqIGFzaW4oeCkgPSAyKmF0YW4oeC8oMSArIHNxcnQoMSAtIHheMikpKVxyXG4gICAqXHJcbiAgICogYXNpbigwKSAgICAgICA9IDBcclxuICAgKiBhc2luKC0wKSAgICAgID0gLTBcclxuICAgKiBhc2luKDEvMikgICAgID0gcGkvNlxyXG4gICAqIGFzaW4oLTEvMikgICAgPSAtcGkvNlxyXG4gICAqIGFzaW4oMSkgICAgICAgPSBwaS8yXHJcbiAgICogYXNpbigtMSkgICAgICA9IC1waS8yXHJcbiAgICogYXNpbih8eHwgPiAxKSA9IE5hTlxyXG4gICAqIGFzaW4oTmFOKSAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqIFRPRE8/IENvbXBhcmUgcGVyZm9ybWFuY2Ugb2YgVGF5bG9yIHNlcmllcy5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaW52ZXJzZVNpbmUgPSBQLmFzaW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgaGFsZlBpLCBrLFxyXG4gICAgICBwciwgcm0sXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICBpZiAoeC5pc1plcm8oKSkgcmV0dXJuIG5ldyBDdG9yKHgpO1xyXG5cclxuICAgIGsgPSB4LmFicygpLmNtcCgxKTtcclxuICAgIHByID0gQ3Rvci5wcmVjaXNpb247XHJcbiAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcblxyXG4gICAgaWYgKGsgIT09IC0xKSB7XHJcblxyXG4gICAgICAvLyB8eHwgaXMgMVxyXG4gICAgICBpZiAoayA9PT0gMCkge1xyXG4gICAgICAgIGhhbGZQaSA9IGdldFBpKEN0b3IsIHByICsgNCwgcm0pLnRpbWVzKDAuNSk7XHJcbiAgICAgICAgaGFsZlBpLnMgPSB4LnM7XHJcbiAgICAgICAgcmV0dXJuIGhhbGZQaTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gfHh8ID4gMSBvciB4IGlzIE5hTlxyXG4gICAgICByZXR1cm4gbmV3IEN0b3IoTmFOKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUT0RPPyBTcGVjaWFsIGNhc2UgYXNpbigxLzIpID0gcGkvNiBhbmQgYXNpbigtMS8yKSA9IC1waS82XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwciArIDY7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuXHJcbiAgICB4ID0geC5kaXYobmV3IEN0b3IoMSkubWludXMoeC50aW1lcyh4KSkuc3FydCgpLnBsdXMoMSkpLmF0YW4oKTtcclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByO1xyXG4gICAgQ3Rvci5yb3VuZGluZyA9IHJtO1xyXG5cclxuICAgIHJldHVybiB4LnRpbWVzKDIpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBhcmN0YW5nZW50IChpbnZlcnNlIHRhbmdlbnQpIGluIHJhZGlhbnMgb2YgdGhlIHZhbHVlXHJcbiAgICogb2YgdGhpcyBEZWNpbWFsLlxyXG4gICAqXHJcbiAgICogRG9tYWluOiBbLUluZmluaXR5LCBJbmZpbml0eV1cclxuICAgKiBSYW5nZTogWy1waS8yLCBwaS8yXVxyXG4gICAqXHJcbiAgICogYXRhbih4KSA9IHggLSB4XjMvMyArIHheNS81IC0geF43LzcgKyAuLi5cclxuICAgKlxyXG4gICAqIGF0YW4oMCkgICAgICAgICA9IDBcclxuICAgKiBhdGFuKC0wKSAgICAgICAgPSAtMFxyXG4gICAqIGF0YW4oMSkgICAgICAgICA9IHBpLzRcclxuICAgKiBhdGFuKC0xKSAgICAgICAgPSAtcGkvNFxyXG4gICAqIGF0YW4oSW5maW5pdHkpICA9IHBpLzJcclxuICAgKiBhdGFuKC1JbmZpbml0eSkgPSAtcGkvMlxyXG4gICAqIGF0YW4oTmFOKSAgICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5pbnZlcnNlVGFuZ2VudCA9IFAuYXRhbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBpLCBqLCBrLCBuLCBweCwgdCwgciwgd3ByLCB4MixcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yLFxyXG4gICAgICBwciA9IEN0b3IucHJlY2lzaW9uLFxyXG4gICAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcblxyXG4gICAgaWYgKCF4LmlzRmluaXRlKCkpIHtcclxuICAgICAgaWYgKCF4LnMpIHJldHVybiBuZXcgQ3RvcihOYU4pO1xyXG4gICAgICBpZiAocHIgKyA0IDw9IFBJX1BSRUNJU0lPTikge1xyXG4gICAgICAgIHIgPSBnZXRQaShDdG9yLCBwciArIDQsIHJtKS50aW1lcygwLjUpO1xyXG4gICAgICAgIHIucyA9IHgucztcclxuICAgICAgICByZXR1cm4gcjtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh4LmlzWmVybygpKSB7XHJcbiAgICAgIHJldHVybiBuZXcgQ3Rvcih4KTtcclxuICAgIH0gZWxzZSBpZiAoeC5hYnMoKS5lcSgxKSAmJiBwciArIDQgPD0gUElfUFJFQ0lTSU9OKSB7XHJcbiAgICAgIHIgPSBnZXRQaShDdG9yLCBwciArIDQsIHJtKS50aW1lcygwLjI1KTtcclxuICAgICAgci5zID0geC5zO1xyXG4gICAgICByZXR1cm4gcjtcclxuICAgIH1cclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHdwciA9IHByICsgMTA7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuXHJcbiAgICAvLyBUT0RPPyBpZiAoeCA+PSAxICYmIHByIDw9IFBJX1BSRUNJU0lPTikgYXRhbih4KSA9IGhhbGZQaSAqIHgucyAtIGF0YW4oMSAvIHgpO1xyXG5cclxuICAgIC8vIEFyZ3VtZW50IHJlZHVjdGlvblxyXG4gICAgLy8gRW5zdXJlIHx4fCA8IDAuNDJcclxuICAgIC8vIGF0YW4oeCkgPSAyICogYXRhbih4IC8gKDEgKyBzcXJ0KDEgKyB4XjIpKSlcclxuXHJcbiAgICBrID0gTWF0aC5taW4oMjgsIHdwciAvIExPR19CQVNFICsgMiB8IDApO1xyXG5cclxuICAgIGZvciAoaSA9IGs7IGk7IC0taSkgeCA9IHguZGl2KHgudGltZXMoeCkucGx1cygxKS5zcXJ0KCkucGx1cygxKSk7XHJcblxyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuXHJcbiAgICBqID0gTWF0aC5jZWlsKHdwciAvIExPR19CQVNFKTtcclxuICAgIG4gPSAxO1xyXG4gICAgeDIgPSB4LnRpbWVzKHgpO1xyXG4gICAgciA9IG5ldyBDdG9yKHgpO1xyXG4gICAgcHggPSB4O1xyXG5cclxuICAgIC8vIGF0YW4oeCkgPSB4IC0geF4zLzMgKyB4XjUvNSAtIHheNy83ICsgLi4uXHJcbiAgICBmb3IgKDsgaSAhPT0gLTE7KSB7XHJcbiAgICAgIHB4ID0gcHgudGltZXMoeDIpO1xyXG4gICAgICB0ID0gci5taW51cyhweC5kaXYobiArPSAyKSk7XHJcblxyXG4gICAgICBweCA9IHB4LnRpbWVzKHgyKTtcclxuICAgICAgciA9IHQucGx1cyhweC5kaXYobiArPSAyKSk7XHJcblxyXG4gICAgICBpZiAoci5kW2pdICE9PSB2b2lkIDApIGZvciAoaSA9IGo7IHIuZFtpXSA9PT0gdC5kW2ldICYmIGktLTspO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChrKSByID0gci50aW1lcygyIDw8IChrIC0gMSkpO1xyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UociwgQ3Rvci5wcmVjaXNpb24gPSBwciwgQ3Rvci5yb3VuZGluZyA9IHJtLCB0cnVlKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGlzIGEgZmluaXRlIG51bWJlciwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaXNGaW5pdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gISF0aGlzLmQ7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBpcyBhbiBpbnRlZ2VyLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5pc0ludGVnZXIgPSBQLmlzSW50ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuICEhdGhpcy5kICYmIG1hdGhmbG9vcih0aGlzLmUgLyBMT0dfQkFTRSkgPiB0aGlzLmQubGVuZ3RoIC0gMjtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGlzIE5hTiwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaXNOYU4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMucztcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGlzIG5lZ2F0aXZlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5pc05lZ2F0aXZlID0gUC5pc05lZyA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHJldHVybiB0aGlzLnMgPCAwO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaXMgcG9zaXRpdmUsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmlzUG9zaXRpdmUgPSBQLmlzUG9zID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucyA+IDA7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBpcyAwIG9yIC0wLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gISF0aGlzLmQgJiYgdGhpcy5kWzBdID09PSAwO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaXMgbGVzcyB0aGFuIGB5YCwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAubGVzc1RoYW4gPSBQLmx0ID0gZnVuY3Rpb24gKHkpIHtcclxuICAgIHJldHVybiB0aGlzLmNtcCh5KSA8IDA7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYHlgLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5sZXNzVGhhbk9yRXF1YWxUbyA9IFAubHRlID0gZnVuY3Rpb24gKHkpIHtcclxuICAgIHJldHVybiB0aGlzLmNtcCh5KSA8IDE7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRoZSBsb2dhcml0aG0gb2YgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCB0byB0aGUgc3BlY2lmaWVkIGJhc2UsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogSWYgbm8gYmFzZSBpcyBzcGVjaWZpZWQsIHJldHVybiBsb2dbMTBdKGFyZykuXHJcbiAgICpcclxuICAgKiBsb2dbYmFzZV0oYXJnKSA9IGxuKGFyZykgLyBsbihiYXNlKVxyXG4gICAqXHJcbiAgICogVGhlIHJlc3VsdCB3aWxsIGFsd2F5cyBiZSBjb3JyZWN0bHkgcm91bmRlZCBpZiB0aGUgYmFzZSBvZiB0aGUgbG9nIGlzIDEwLCBhbmQgJ2FsbW9zdCBhbHdheXMnXHJcbiAgICogb3RoZXJ3aXNlOlxyXG4gICAqXHJcbiAgICogRGVwZW5kaW5nIG9uIHRoZSByb3VuZGluZyBtb2RlLCB0aGUgcmVzdWx0IG1heSBiZSBpbmNvcnJlY3RseSByb3VuZGVkIGlmIHRoZSBmaXJzdCBmaWZ0ZWVuXHJcbiAgICogcm91bmRpbmcgZGlnaXRzIGFyZSBbNDldOTk5OTk5OTk5OTk5OTkgb3IgWzUwXTAwMDAwMDAwMDAwMDAwLiBJbiB0aGF0IGNhc2UsIHRoZSBtYXhpbXVtIGVycm9yXHJcbiAgICogYmV0d2VlbiB0aGUgcmVzdWx0IGFuZCB0aGUgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0IHdpbGwgYmUgb25lIHVscCAodW5pdCBpbiB0aGUgbGFzdCBwbGFjZSkuXHJcbiAgICpcclxuICAgKiBsb2dbLWJdKGEpICAgICAgID0gTmFOXHJcbiAgICogbG9nWzBdKGEpICAgICAgICA9IE5hTlxyXG4gICAqIGxvZ1sxXShhKSAgICAgICAgPSBOYU5cclxuICAgKiBsb2dbTmFOXShhKSAgICAgID0gTmFOXHJcbiAgICogbG9nW0luZmluaXR5XShhKSA9IE5hTlxyXG4gICAqIGxvZ1tiXSgwKSAgICAgICAgPSAtSW5maW5pdHlcclxuICAgKiBsb2dbYl0oLTApICAgICAgID0gLUluZmluaXR5XHJcbiAgICogbG9nW2JdKC1hKSAgICAgICA9IE5hTlxyXG4gICAqIGxvZ1tiXSgxKSAgICAgICAgPSAwXHJcbiAgICogbG9nW2JdKEluZmluaXR5KSA9IEluZmluaXR5XHJcbiAgICogbG9nW2JdKE5hTikgICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICogW2Jhc2VdIHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IFRoZSBiYXNlIG9mIHRoZSBsb2dhcml0aG0uXHJcbiAgICpcclxuICAgKi9cclxuICBQLmxvZ2FyaXRobSA9IFAubG9nID0gZnVuY3Rpb24gKGJhc2UpIHtcclxuICAgIHZhciBpc0Jhc2UxMCwgZCwgZGVub21pbmF0b3IsIGssIGluZiwgbnVtLCBzZCwgcixcclxuICAgICAgYXJnID0gdGhpcyxcclxuICAgICAgQ3RvciA9IGFyZy5jb25zdHJ1Y3RvcixcclxuICAgICAgcHIgPSBDdG9yLnByZWNpc2lvbixcclxuICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nLFxyXG4gICAgICBndWFyZCA9IDU7XHJcblxyXG4gICAgLy8gRGVmYXVsdCBiYXNlIGlzIDEwLlxyXG4gICAgaWYgKGJhc2UgPT0gbnVsbCkge1xyXG4gICAgICBiYXNlID0gbmV3IEN0b3IoMTApO1xyXG4gICAgICBpc0Jhc2UxMCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBiYXNlID0gbmV3IEN0b3IoYmFzZSk7XHJcbiAgICAgIGQgPSBiYXNlLmQ7XHJcblxyXG4gICAgICAvLyBSZXR1cm4gTmFOIGlmIGJhc2UgaXMgbmVnYXRpdmUsIG9yIG5vbi1maW5pdGUsIG9yIGlzIDAgb3IgMS5cclxuICAgICAgaWYgKGJhc2UucyA8IDAgfHwgIWQgfHwgIWRbMF0gfHwgYmFzZS5lcSgxKSkgcmV0dXJuIG5ldyBDdG9yKE5hTik7XHJcblxyXG4gICAgICBpc0Jhc2UxMCA9IGJhc2UuZXEoMTApO1xyXG4gICAgfVxyXG5cclxuICAgIGQgPSBhcmcuZDtcclxuXHJcbiAgICAvLyBJcyBhcmcgbmVnYXRpdmUsIG5vbi1maW5pdGUsIDAgb3IgMT9cclxuICAgIGlmIChhcmcucyA8IDAgfHwgIWQgfHwgIWRbMF0gfHwgYXJnLmVxKDEpKSB7XHJcbiAgICAgIHJldHVybiBuZXcgQ3RvcihkICYmICFkWzBdID8gLTEgLyAwIDogYXJnLnMgIT0gMSA/IE5hTiA6IGQgPyAwIDogMSAvIDApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRoZSByZXN1bHQgd2lsbCBoYXZlIGEgbm9uLXRlcm1pbmF0aW5nIGRlY2ltYWwgZXhwYW5zaW9uIGlmIGJhc2UgaXMgMTAgYW5kIGFyZyBpcyBub3QgYW5cclxuICAgIC8vIGludGVnZXIgcG93ZXIgb2YgMTAuXHJcbiAgICBpZiAoaXNCYXNlMTApIHtcclxuICAgICAgaWYgKGQubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGluZiA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChrID0gZFswXTsgayAlIDEwID09PSAwOykgayAvPSAxMDtcclxuICAgICAgICBpbmYgPSBrICE9PSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgIHNkID0gcHIgKyBndWFyZDtcclxuICAgIG51bSA9IG5hdHVyYWxMb2dhcml0aG0oYXJnLCBzZCk7XHJcbiAgICBkZW5vbWluYXRvciA9IGlzQmFzZTEwID8gZ2V0TG4xMChDdG9yLCBzZCArIDEwKSA6IG5hdHVyYWxMb2dhcml0aG0oYmFzZSwgc2QpO1xyXG5cclxuICAgIC8vIFRoZSByZXN1bHQgd2lsbCBoYXZlIDUgcm91bmRpbmcgZGlnaXRzLlxyXG4gICAgciA9IGRpdmlkZShudW0sIGRlbm9taW5hdG9yLCBzZCwgMSk7XHJcblxyXG4gICAgLy8gSWYgYXQgYSByb3VuZGluZyBib3VuZGFyeSwgaS5lLiB0aGUgcmVzdWx0J3Mgcm91bmRpbmcgZGlnaXRzIGFyZSBbNDldOTk5OSBvciBbNTBdMDAwMCxcclxuICAgIC8vIGNhbGN1bGF0ZSAxMCBmdXJ0aGVyIGRpZ2l0cy5cclxuICAgIC8vXHJcbiAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIGtub3duIHRvIGhhdmUgYW4gaW5maW5pdGUgZGVjaW1hbCBleHBhbnNpb24sIHJlcGVhdCB0aGlzIHVudGlsIGl0IGlzIGNsZWFyXHJcbiAgICAvLyB0aGF0IHRoZSByZXN1bHQgaXMgYWJvdmUgb3IgYmVsb3cgdGhlIGJvdW5kYXJ5LiBPdGhlcndpc2UsIGlmIGFmdGVyIGNhbGN1bGF0aW5nIHRoZSAxMFxyXG4gICAgLy8gZnVydGhlciBkaWdpdHMsIHRoZSBsYXN0IDE0IGFyZSBuaW5lcywgcm91bmQgdXAgYW5kIGFzc3VtZSB0aGUgcmVzdWx0IGlzIGV4YWN0LlxyXG4gICAgLy8gQWxzbyBhc3N1bWUgdGhlIHJlc3VsdCBpcyBleGFjdCBpZiB0aGUgbGFzdCAxNCBhcmUgemVyby5cclxuICAgIC8vXHJcbiAgICAvLyBFeGFtcGxlIG9mIGEgcmVzdWx0IHRoYXQgd2lsbCBiZSBpbmNvcnJlY3RseSByb3VuZGVkOlxyXG4gICAgLy8gbG9nWzEwNDg1NzZdKDQ1MDM1OTk2MjczNzA1MDIpID0gMi42MDAwMDAwMDAwMDAwMDAwOTYxMDI3OTUxMTQ0NDc0Ni4uLlxyXG4gICAgLy8gVGhlIGFib3ZlIHJlc3VsdCBjb3JyZWN0bHkgcm91bmRlZCB1c2luZyBST1VORF9DRUlMIHRvIDEgZGVjaW1hbCBwbGFjZSBzaG91bGQgYmUgMi43LCBidXQgaXRcclxuICAgIC8vIHdpbGwgYmUgZ2l2ZW4gYXMgMi42IGFzIHRoZXJlIGFyZSAxNSB6ZXJvcyBpbW1lZGlhdGVseSBhZnRlciB0aGUgcmVxdWVzdGVkIGRlY2ltYWwgcGxhY2UsIHNvXHJcbiAgICAvLyB0aGUgZXhhY3QgcmVzdWx0IHdvdWxkIGJlIGFzc3VtZWQgdG8gYmUgMi42LCB3aGljaCByb3VuZGVkIHVzaW5nIFJPVU5EX0NFSUwgdG8gMSBkZWNpbWFsXHJcbiAgICAvLyBwbGFjZSBpcyBzdGlsbCAyLjYuXHJcbiAgICBpZiAoY2hlY2tSb3VuZGluZ0RpZ2l0cyhyLmQsIGsgPSBwciwgcm0pKSB7XHJcblxyXG4gICAgICBkbyB7XHJcbiAgICAgICAgc2QgKz0gMTA7XHJcbiAgICAgICAgbnVtID0gbmF0dXJhbExvZ2FyaXRobShhcmcsIHNkKTtcclxuICAgICAgICBkZW5vbWluYXRvciA9IGlzQmFzZTEwID8gZ2V0TG4xMChDdG9yLCBzZCArIDEwKSA6IG5hdHVyYWxMb2dhcml0aG0oYmFzZSwgc2QpO1xyXG4gICAgICAgIHIgPSBkaXZpZGUobnVtLCBkZW5vbWluYXRvciwgc2QsIDEpO1xyXG5cclxuICAgICAgICBpZiAoIWluZikge1xyXG5cclxuICAgICAgICAgIC8vIENoZWNrIGZvciAxNCBuaW5lcyBmcm9tIHRoZSAybmQgcm91bmRpbmcgZGlnaXQsIGFzIHRoZSBmaXJzdCBtYXkgYmUgNC5cclxuICAgICAgICAgIGlmICgrZGlnaXRzVG9TdHJpbmcoci5kKS5zbGljZShrICsgMSwgayArIDE1KSArIDEgPT0gMWUxNCkge1xyXG4gICAgICAgICAgICByID0gZmluYWxpc2UociwgcHIgKyAxLCAwKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gd2hpbGUgKGNoZWNrUm91bmRpbmdEaWdpdHMoci5kLCBrICs9IDEwLCBybSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UociwgcHIsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgbWF4aW11bSBvZiB0aGUgYXJndW1lbnRzIGFuZCB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsLlxyXG4gICAqXHJcbiAgICogYXJndW1lbnRzIHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICBQLm1heCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmNhbGwoYXJndW1lbnRzLCB0aGlzKTtcclxuICAgIHJldHVybiBtYXhPck1pbih0aGlzLmNvbnN0cnVjdG9yLCBhcmd1bWVudHMsICdsdCcpO1xyXG4gIH07XHJcbiAgICovXHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBtaW5pbXVtIG9mIHRoZSBhcmd1bWVudHMgYW5kIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBhcmd1bWVudHMge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gIFAubWluID0gZnVuY3Rpb24gKCkge1xyXG4gICAgQXJyYXkucHJvdG90eXBlLnB1c2guY2FsbChhcmd1bWVudHMsIHRoaXMpO1xyXG4gICAgcmV0dXJuIG1heE9yTWluKHRoaXMuY29uc3RydWN0b3IsIGFyZ3VtZW50cywgJ2d0Jyk7XHJcbiAgfTtcclxuICAgKi9cclxuXHJcblxyXG4gIC8qXHJcbiAgICogIG4gLSAwID0gblxyXG4gICAqICBuIC0gTiA9IE5cclxuICAgKiAgbiAtIEkgPSAtSVxyXG4gICAqICAwIC0gbiA9IC1uXHJcbiAgICogIDAgLSAwID0gMFxyXG4gICAqICAwIC0gTiA9IE5cclxuICAgKiAgMCAtIEkgPSAtSVxyXG4gICAqICBOIC0gbiA9IE5cclxuICAgKiAgTiAtIDAgPSBOXHJcbiAgICogIE4gLSBOID0gTlxyXG4gICAqICBOIC0gSSA9IE5cclxuICAgKiAgSSAtIG4gPSBJXHJcbiAgICogIEkgLSAwID0gSVxyXG4gICAqICBJIC0gTiA9IE5cclxuICAgKiAgSSAtIEkgPSBOXHJcbiAgICpcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIG1pbnVzIGB5YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYFxyXG4gICAqIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKi9cclxuICBQLm1pbnVzID0gUC5zdWIgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgdmFyIGQsIGUsIGksIGosIGssIGxlbiwgcHIsIHJtLCB4ZCwgeGUsIHhMVHksIHlkLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgeSA9IG5ldyBDdG9yKHkpO1xyXG5cclxuICAgIC8vIElmIGVpdGhlciBpcyBub3QgZmluaXRlLi4uXHJcbiAgICBpZiAoIXguZCB8fCAheS5kKSB7XHJcblxyXG4gICAgICAvLyBSZXR1cm4gTmFOIGlmIGVpdGhlciBpcyBOYU4uXHJcbiAgICAgIGlmICgheC5zIHx8ICF5LnMpIHkgPSBuZXcgQ3RvcihOYU4pO1xyXG5cclxuICAgICAgLy8gUmV0dXJuIHkgbmVnYXRlZCBpZiB4IGlzIGZpbml0ZSBhbmQgeSBpcyDCsUluZmluaXR5LlxyXG4gICAgICBlbHNlIGlmICh4LmQpIHkucyA9IC15LnM7XHJcblxyXG4gICAgICAvLyBSZXR1cm4geCBpZiB5IGlzIGZpbml0ZSBhbmQgeCBpcyDCsUluZmluaXR5LlxyXG4gICAgICAvLyBSZXR1cm4geCBpZiBib3RoIGFyZSDCsUluZmluaXR5IHdpdGggZGlmZmVyZW50IHNpZ25zLlxyXG4gICAgICAvLyBSZXR1cm4gTmFOIGlmIGJvdGggYXJlIMKxSW5maW5pdHkgd2l0aCB0aGUgc2FtZSBzaWduLlxyXG4gICAgICBlbHNlIHkgPSBuZXcgQ3Rvcih5LmQgfHwgeC5zICE9PSB5LnMgPyB4IDogTmFOKTtcclxuXHJcbiAgICAgIHJldHVybiB5O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIHNpZ25zIGRpZmZlci4uLlxyXG4gICAgaWYgKHgucyAhPSB5LnMpIHtcclxuICAgICAgeS5zID0gLXkucztcclxuICAgICAgcmV0dXJuIHgucGx1cyh5KTtcclxuICAgIH1cclxuXHJcbiAgICB4ZCA9IHguZDtcclxuICAgIHlkID0geS5kO1xyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuXHJcbiAgICAvLyBJZiBlaXRoZXIgaXMgemVyby4uLlxyXG4gICAgaWYgKCF4ZFswXSB8fCAheWRbMF0pIHtcclxuXHJcbiAgICAgIC8vIFJldHVybiB5IG5lZ2F0ZWQgaWYgeCBpcyB6ZXJvIGFuZCB5IGlzIG5vbi16ZXJvLlxyXG4gICAgICBpZiAoeWRbMF0pIHkucyA9IC15LnM7XHJcblxyXG4gICAgICAvLyBSZXR1cm4geCBpZiB5IGlzIHplcm8gYW5kIHggaXMgbm9uLXplcm8uXHJcbiAgICAgIGVsc2UgaWYgKHhkWzBdKSB5ID0gbmV3IEN0b3IoeCk7XHJcblxyXG4gICAgICAvLyBSZXR1cm4gemVybyBpZiBib3RoIGFyZSB6ZXJvLlxyXG4gICAgICAvLyBGcm9tIElFRUUgNzU0ICgyMDA4KSA2LjM6IDAgLSAwID0gLTAgLSAtMCA9IC0wIHdoZW4gcm91bmRpbmcgdG8gLUluZmluaXR5LlxyXG4gICAgICBlbHNlIHJldHVybiBuZXcgQ3RvcihybSA9PT0gMyA/IC0wIDogMCk7XHJcblxyXG4gICAgICByZXR1cm4gZXh0ZXJuYWwgPyBmaW5hbGlzZSh5LCBwciwgcm0pIDogeTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB4IGFuZCB5IGFyZSBmaW5pdGUsIG5vbi16ZXJvIG51bWJlcnMgd2l0aCB0aGUgc2FtZSBzaWduLlxyXG5cclxuICAgIC8vIENhbGN1bGF0ZSBiYXNlIDFlNyBleHBvbmVudHMuXHJcbiAgICBlID0gbWF0aGZsb29yKHkuZSAvIExPR19CQVNFKTtcclxuICAgIHhlID0gbWF0aGZsb29yKHguZSAvIExPR19CQVNFKTtcclxuXHJcbiAgICB4ZCA9IHhkLnNsaWNlKCk7XHJcbiAgICBrID0geGUgLSBlO1xyXG5cclxuICAgIC8vIElmIGJhc2UgMWU3IGV4cG9uZW50cyBkaWZmZXIuLi5cclxuICAgIGlmIChrKSB7XHJcbiAgICAgIHhMVHkgPSBrIDwgMDtcclxuXHJcbiAgICAgIGlmICh4TFR5KSB7XHJcbiAgICAgICAgZCA9IHhkO1xyXG4gICAgICAgIGsgPSAtaztcclxuICAgICAgICBsZW4gPSB5ZC5sZW5ndGg7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZCA9IHlkO1xyXG4gICAgICAgIGUgPSB4ZTtcclxuICAgICAgICBsZW4gPSB4ZC5sZW5ndGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE51bWJlcnMgd2l0aCBtYXNzaXZlbHkgZGlmZmVyZW50IGV4cG9uZW50cyB3b3VsZCByZXN1bHQgaW4gYSB2ZXJ5IGhpZ2ggbnVtYmVyIG9mXHJcbiAgICAgIC8vIHplcm9zIG5lZWRpbmcgdG8gYmUgcHJlcGVuZGVkLCBidXQgdGhpcyBjYW4gYmUgYXZvaWRlZCB3aGlsZSBzdGlsbCBlbnN1cmluZyBjb3JyZWN0XHJcbiAgICAgIC8vIHJvdW5kaW5nIGJ5IGxpbWl0aW5nIHRoZSBudW1iZXIgb2YgemVyb3MgdG8gYE1hdGguY2VpbChwciAvIExPR19CQVNFKSArIDJgLlxyXG4gICAgICBpID0gTWF0aC5tYXgoTWF0aC5jZWlsKHByIC8gTE9HX0JBU0UpLCBsZW4pICsgMjtcclxuXHJcbiAgICAgIGlmIChrID4gaSkge1xyXG4gICAgICAgIGsgPSBpO1xyXG4gICAgICAgIGQubGVuZ3RoID0gMTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUHJlcGVuZCB6ZXJvcyB0byBlcXVhbGlzZSBleHBvbmVudHMuXHJcbiAgICAgIGQucmV2ZXJzZSgpO1xyXG4gICAgICBmb3IgKGkgPSBrOyBpLS07KSBkLnB1c2goMCk7XHJcbiAgICAgIGQucmV2ZXJzZSgpO1xyXG5cclxuICAgIC8vIEJhc2UgMWU3IGV4cG9uZW50cyBlcXVhbC5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyBDaGVjayBkaWdpdHMgdG8gZGV0ZXJtaW5lIHdoaWNoIGlzIHRoZSBiaWdnZXIgbnVtYmVyLlxyXG5cclxuICAgICAgaSA9IHhkLmxlbmd0aDtcclxuICAgICAgbGVuID0geWQubGVuZ3RoO1xyXG4gICAgICB4TFR5ID0gaSA8IGxlbjtcclxuICAgICAgaWYgKHhMVHkpIGxlbiA9IGk7XHJcblxyXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICBpZiAoeGRbaV0gIT0geWRbaV0pIHtcclxuICAgICAgICAgIHhMVHkgPSB4ZFtpXSA8IHlkW2ldO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBrID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoeExUeSkge1xyXG4gICAgICBkID0geGQ7XHJcbiAgICAgIHhkID0geWQ7XHJcbiAgICAgIHlkID0gZDtcclxuICAgICAgeS5zID0gLXkucztcclxuICAgIH1cclxuXHJcbiAgICBsZW4gPSB4ZC5sZW5ndGg7XHJcblxyXG4gICAgLy8gQXBwZW5kIHplcm9zIHRvIGB4ZGAgaWYgc2hvcnRlci5cclxuICAgIC8vIERvbid0IGFkZCB6ZXJvcyB0byBgeWRgIGlmIHNob3J0ZXIgYXMgc3VidHJhY3Rpb24gb25seSBuZWVkcyB0byBzdGFydCBhdCBgeWRgIGxlbmd0aC5cclxuICAgIGZvciAoaSA9IHlkLmxlbmd0aCAtIGxlbjsgaSA+IDA7IC0taSkgeGRbbGVuKytdID0gMDtcclxuXHJcbiAgICAvLyBTdWJ0cmFjdCB5ZCBmcm9tIHhkLlxyXG4gICAgZm9yIChpID0geWQubGVuZ3RoOyBpID4gazspIHtcclxuXHJcbiAgICAgIGlmICh4ZFstLWldIDwgeWRbaV0pIHtcclxuICAgICAgICBmb3IgKGogPSBpOyBqICYmIHhkWy0tal0gPT09IDA7KSB4ZFtqXSA9IEJBU0UgLSAxO1xyXG4gICAgICAgIC0teGRbal07XHJcbiAgICAgICAgeGRbaV0gKz0gQkFTRTtcclxuICAgICAgfVxyXG5cclxuICAgICAgeGRbaV0gLT0geWRbaV07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgZm9yICg7IHhkWy0tbGVuXSA9PT0gMDspIHhkLnBvcCgpO1xyXG5cclxuICAgIC8vIFJlbW92ZSBsZWFkaW5nIHplcm9zIGFuZCBhZGp1c3QgZXhwb25lbnQgYWNjb3JkaW5nbHkuXHJcbiAgICBmb3IgKDsgeGRbMF0gPT09IDA7IHhkLnNoaWZ0KCkpIC0tZTtcclxuXHJcbiAgICAvLyBaZXJvP1xyXG4gICAgaWYgKCF4ZFswXSkgcmV0dXJuIG5ldyBDdG9yKHJtID09PSAzID8gLTAgOiAwKTtcclxuXHJcbiAgICB5LmQgPSB4ZDtcclxuICAgIHkuZSA9IGdldEJhc2UxMEV4cG9uZW50KHhkLCBlKTtcclxuXHJcbiAgICByZXR1cm4gZXh0ZXJuYWwgPyBmaW5hbGlzZSh5LCBwciwgcm0pIDogeTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiAgIG4gJSAwID0gIE5cclxuICAgKiAgIG4gJSBOID0gIE5cclxuICAgKiAgIG4gJSBJID0gIG5cclxuICAgKiAgIDAgJSBuID0gIDBcclxuICAgKiAgLTAgJSBuID0gLTBcclxuICAgKiAgIDAgJSAwID0gIE5cclxuICAgKiAgIDAgJSBOID0gIE5cclxuICAgKiAgIDAgJSBJID0gIDBcclxuICAgKiAgIE4gJSBuID0gIE5cclxuICAgKiAgIE4gJSAwID0gIE5cclxuICAgKiAgIE4gJSBOID0gIE5cclxuICAgKiAgIE4gJSBJID0gIE5cclxuICAgKiAgIEkgJSBuID0gIE5cclxuICAgKiAgIEkgJSAwID0gIE5cclxuICAgKiAgIEkgJSBOID0gIE5cclxuICAgKiAgIEkgJSBJID0gIE5cclxuICAgKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgbW9kdWxvIGB5YCwgcm91bmRlZCB0b1xyXG4gICAqIGBwcmVjaXNpb25gIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiBUaGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIG1vZHVsbyBtb2RlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5tb2R1bG8gPSBQLm1vZCA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICB2YXIgcSxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIHkgPSBuZXcgQ3Rvcih5KTtcclxuXHJcbiAgICAvLyBSZXR1cm4gTmFOIGlmIHggaXMgwrFJbmZpbml0eSBvciBOYU4sIG9yIHkgaXMgTmFOIG9yIMKxMC5cclxuICAgIGlmICgheC5kIHx8ICF5LnMgfHwgeS5kICYmICF5LmRbMF0pIHJldHVybiBuZXcgQ3RvcihOYU4pO1xyXG5cclxuICAgIC8vIFJldHVybiB4IGlmIHkgaXMgwrFJbmZpbml0eSBvciB4IGlzIMKxMC5cclxuICAgIGlmICgheS5kIHx8IHguZCAmJiAheC5kWzBdKSB7XHJcbiAgICAgIHJldHVybiBmaW5hbGlzZShuZXcgQ3Rvcih4KSwgQ3Rvci5wcmVjaXNpb24sIEN0b3Iucm91bmRpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFByZXZlbnQgcm91bmRpbmcgb2YgaW50ZXJtZWRpYXRlIGNhbGN1bGF0aW9ucy5cclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKEN0b3IubW9kdWxvID09IDkpIHtcclxuXHJcbiAgICAgIC8vIEV1Y2xpZGlhbiBkaXZpc2lvbjogcSA9IHNpZ24oeSkgKiBmbG9vcih4IC8gYWJzKHkpKVxyXG4gICAgICAvLyByZXN1bHQgPSB4IC0gcSAqIHkgICAgd2hlcmUgIDAgPD0gcmVzdWx0IDwgYWJzKHkpXHJcbiAgICAgIHEgPSBkaXZpZGUoeCwgeS5hYnMoKSwgMCwgMywgMSk7XHJcbiAgICAgIHEucyAqPSB5LnM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxID0gZGl2aWRlKHgsIHksIDAsIEN0b3IubW9kdWxvLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBxID0gcS50aW1lcyh5KTtcclxuXHJcbiAgICBleHRlcm5hbCA9IHRydWU7XHJcblxyXG4gICAgcmV0dXJuIHgubWludXMocSk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG5hdHVyYWwgZXhwb25lbnRpYWwgb2YgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCxcclxuICAgKiBpLmUuIHRoZSBiYXNlIGUgcmFpc2VkIHRvIHRoZSBwb3dlciB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAubmF0dXJhbEV4cG9uZW50aWFsID0gUC5leHAgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gbmF0dXJhbEV4cG9uZW50aWFsKHRoaXMpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBuYXR1cmFsIGxvZ2FyaXRobSBvZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsLFxyXG4gICAqIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAubmF0dXJhbExvZ2FyaXRobSA9IFAubG4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gbmF0dXJhbExvZ2FyaXRobSh0aGlzKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIG5lZ2F0ZWQsIGkuZS4gYXMgaWYgbXVsdGlwbGllZCBieVxyXG4gICAqIC0xLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5uZWdhdGVkID0gUC5uZWcgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgeCA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO1xyXG4gICAgeC5zID0gLXgucztcclxuICAgIHJldHVybiBmaW5hbGlzZSh4KTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiAgbiArIDAgPSBuXHJcbiAgICogIG4gKyBOID0gTlxyXG4gICAqICBuICsgSSA9IElcclxuICAgKiAgMCArIG4gPSBuXHJcbiAgICogIDAgKyAwID0gMFxyXG4gICAqICAwICsgTiA9IE5cclxuICAgKiAgMCArIEkgPSBJXHJcbiAgICogIE4gKyBuID0gTlxyXG4gICAqICBOICsgMCA9IE5cclxuICAgKiAgTiArIE4gPSBOXHJcbiAgICogIE4gKyBJID0gTlxyXG4gICAqICBJICsgbiA9IElcclxuICAgKiAgSSArIDAgPSBJXHJcbiAgICogIEkgKyBOID0gTlxyXG4gICAqICBJICsgSSA9IElcclxuICAgKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgcGx1cyBgeWAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5wbHVzID0gUC5hZGQgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgdmFyIGNhcnJ5LCBkLCBlLCBpLCBrLCBsZW4sIHByLCBybSwgeGQsIHlkLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgeSA9IG5ldyBDdG9yKHkpO1xyXG5cclxuICAgIC8vIElmIGVpdGhlciBpcyBub3QgZmluaXRlLi4uXHJcbiAgICBpZiAoIXguZCB8fCAheS5kKSB7XHJcblxyXG4gICAgICAvLyBSZXR1cm4gTmFOIGlmIGVpdGhlciBpcyBOYU4uXHJcbiAgICAgIGlmICgheC5zIHx8ICF5LnMpIHkgPSBuZXcgQ3RvcihOYU4pO1xyXG5cclxuICAgICAgLy8gUmV0dXJuIHggaWYgeSBpcyBmaW5pdGUgYW5kIHggaXMgwrFJbmZpbml0eS5cclxuICAgICAgLy8gUmV0dXJuIHggaWYgYm90aCBhcmUgwrFJbmZpbml0eSB3aXRoIHRoZSBzYW1lIHNpZ24uXHJcbiAgICAgIC8vIFJldHVybiBOYU4gaWYgYm90aCBhcmUgwrFJbmZpbml0eSB3aXRoIGRpZmZlcmVudCBzaWducy5cclxuICAgICAgLy8gUmV0dXJuIHkgaWYgeCBpcyBmaW5pdGUgYW5kIHkgaXMgwrFJbmZpbml0eS5cclxuICAgICAgZWxzZSBpZiAoIXguZCkgeSA9IG5ldyBDdG9yKHkuZCB8fCB4LnMgPT09IHkucyA/IHggOiBOYU4pO1xyXG5cclxuICAgICAgcmV0dXJuIHk7XHJcbiAgICB9XHJcblxyXG4gICAgIC8vIElmIHNpZ25zIGRpZmZlci4uLlxyXG4gICAgaWYgKHgucyAhPSB5LnMpIHtcclxuICAgICAgeS5zID0gLXkucztcclxuICAgICAgcmV0dXJuIHgubWludXMoeSk7XHJcbiAgICB9XHJcblxyXG4gICAgeGQgPSB4LmQ7XHJcbiAgICB5ZCA9IHkuZDtcclxuICAgIHByID0gQ3Rvci5wcmVjaXNpb247XHJcbiAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcblxyXG4gICAgLy8gSWYgZWl0aGVyIGlzIHplcm8uLi5cclxuICAgIGlmICgheGRbMF0gfHwgIXlkWzBdKSB7XHJcblxyXG4gICAgICAvLyBSZXR1cm4geCBpZiB5IGlzIHplcm8uXHJcbiAgICAgIC8vIFJldHVybiB5IGlmIHkgaXMgbm9uLXplcm8uXHJcbiAgICAgIGlmICgheWRbMF0pIHkgPSBuZXcgQ3Rvcih4KTtcclxuXHJcbiAgICAgIHJldHVybiBleHRlcm5hbCA/IGZpbmFsaXNlKHksIHByLCBybSkgOiB5O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHggYW5kIHkgYXJlIGZpbml0ZSwgbm9uLXplcm8gbnVtYmVycyB3aXRoIHRoZSBzYW1lIHNpZ24uXHJcblxyXG4gICAgLy8gQ2FsY3VsYXRlIGJhc2UgMWU3IGV4cG9uZW50cy5cclxuICAgIGsgPSBtYXRoZmxvb3IoeC5lIC8gTE9HX0JBU0UpO1xyXG4gICAgZSA9IG1hdGhmbG9vcih5LmUgLyBMT0dfQkFTRSk7XHJcblxyXG4gICAgeGQgPSB4ZC5zbGljZSgpO1xyXG4gICAgaSA9IGsgLSBlO1xyXG5cclxuICAgIC8vIElmIGJhc2UgMWU3IGV4cG9uZW50cyBkaWZmZXIuLi5cclxuICAgIGlmIChpKSB7XHJcblxyXG4gICAgICBpZiAoaSA8IDApIHtcclxuICAgICAgICBkID0geGQ7XHJcbiAgICAgICAgaSA9IC1pO1xyXG4gICAgICAgIGxlbiA9IHlkLmxlbmd0aDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkID0geWQ7XHJcbiAgICAgICAgZSA9IGs7XHJcbiAgICAgICAgbGVuID0geGQubGVuZ3RoO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBMaW1pdCBudW1iZXIgb2YgemVyb3MgcHJlcGVuZGVkIHRvIG1heChjZWlsKHByIC8gTE9HX0JBU0UpLCBsZW4pICsgMS5cclxuICAgICAgayA9IE1hdGguY2VpbChwciAvIExPR19CQVNFKTtcclxuICAgICAgbGVuID0gayA+IGxlbiA/IGsgKyAxIDogbGVuICsgMTtcclxuXHJcbiAgICAgIGlmIChpID4gbGVuKSB7XHJcbiAgICAgICAgaSA9IGxlbjtcclxuICAgICAgICBkLmxlbmd0aCA9IDE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFByZXBlbmQgemVyb3MgdG8gZXF1YWxpc2UgZXhwb25lbnRzLiBOb3RlOiBGYXN0ZXIgdG8gdXNlIHJldmVyc2UgdGhlbiBkbyB1bnNoaWZ0cy5cclxuICAgICAgZC5yZXZlcnNlKCk7XHJcbiAgICAgIGZvciAoOyBpLS07KSBkLnB1c2goMCk7XHJcbiAgICAgIGQucmV2ZXJzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxlbiA9IHhkLmxlbmd0aDtcclxuICAgIGkgPSB5ZC5sZW5ndGg7XHJcblxyXG4gICAgLy8gSWYgeWQgaXMgbG9uZ2VyIHRoYW4geGQsIHN3YXAgeGQgYW5kIHlkIHNvIHhkIHBvaW50cyB0byB0aGUgbG9uZ2VyIGFycmF5LlxyXG4gICAgaWYgKGxlbiAtIGkgPCAwKSB7XHJcbiAgICAgIGkgPSBsZW47XHJcbiAgICAgIGQgPSB5ZDtcclxuICAgICAgeWQgPSB4ZDtcclxuICAgICAgeGQgPSBkO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE9ubHkgc3RhcnQgYWRkaW5nIGF0IHlkLmxlbmd0aCAtIDEgYXMgdGhlIGZ1cnRoZXIgZGlnaXRzIG9mIHhkIGNhbiBiZSBsZWZ0IGFzIHRoZXkgYXJlLlxyXG4gICAgZm9yIChjYXJyeSA9IDA7IGk7KSB7XHJcbiAgICAgIGNhcnJ5ID0gKHhkWy0taV0gPSB4ZFtpXSArIHlkW2ldICsgY2FycnkpIC8gQkFTRSB8IDA7XHJcbiAgICAgIHhkW2ldICU9IEJBU0U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNhcnJ5KSB7XHJcbiAgICAgIHhkLnVuc2hpZnQoY2FycnkpO1xyXG4gICAgICArK2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgLy8gTm8gbmVlZCB0byBjaGVjayBmb3IgemVybywgYXMgK3ggKyAreSAhPSAwICYmIC14ICsgLXkgIT0gMFxyXG4gICAgZm9yIChsZW4gPSB4ZC5sZW5ndGg7IHhkWy0tbGVuXSA9PSAwOykgeGQucG9wKCk7XHJcblxyXG4gICAgeS5kID0geGQ7XHJcbiAgICB5LmUgPSBnZXRCYXNlMTBFeHBvbmVudCh4ZCwgZSk7XHJcblxyXG4gICAgcmV0dXJuIGV4dGVybmFsID8gZmluYWxpc2UoeSwgcHIsIHJtKSA6IHk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIG9mIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBbel0ge2Jvb2xlYW58bnVtYmVyfSBXaGV0aGVyIHRvIGNvdW50IGludGVnZXItcGFydCB0cmFpbGluZyB6ZXJvczogdHJ1ZSwgZmFsc2UsIDEgb3IgMC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAucHJlY2lzaW9uID0gUC5zZCA9IGZ1bmN0aW9uICh6KSB7XHJcbiAgICB2YXIgayxcclxuICAgICAgeCA9IHRoaXM7XHJcblxyXG4gICAgaWYgKHogIT09IHZvaWQgMCAmJiB6ICE9PSAhIXogJiYgeiAhPT0gMSAmJiB6ICE9PSAwKSB0aHJvdyBFcnJvcihpbnZhbGlkQXJndW1lbnQgKyB6KTtcclxuXHJcbiAgICBpZiAoeC5kKSB7XHJcbiAgICAgIGsgPSBnZXRQcmVjaXNpb24oeC5kKTtcclxuICAgICAgaWYgKHogJiYgeC5lICsgMSA+IGspIGsgPSB4LmUgKyAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgayA9IE5hTjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaztcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIHJvdW5kZWQgdG8gYSB3aG9sZSBudW1iZXIgdXNpbmdcclxuICAgKiByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnJvdW5kID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UobmV3IEN0b3IoeCksIHguZSArIDEsIEN0b3Iucm91bmRpbmcpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBzaW5lIG9mIHRoZSB2YWx1ZSBpbiByYWRpYW5zIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy1JbmZpbml0eSwgSW5maW5pdHldXHJcbiAgICogUmFuZ2U6IFstMSwgMV1cclxuICAgKlxyXG4gICAqIHNpbih4KSA9IHggLSB4XjMvMyEgKyB4XjUvNSEgLSAuLi5cclxuICAgKlxyXG4gICAqIHNpbigwKSAgICAgICAgID0gMFxyXG4gICAqIHNpbigtMCkgICAgICAgID0gLTBcclxuICAgKiBzaW4oSW5maW5pdHkpICA9IE5hTlxyXG4gICAqIHNpbigtSW5maW5pdHkpID0gTmFOXHJcbiAgICogc2luKE5hTikgICAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuc2luZSA9IFAuc2luID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHByLCBybSxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpKSByZXR1cm4gbmV3IEN0b3IoTmFOKTtcclxuICAgIGlmICh4LmlzWmVybygpKSByZXR1cm4gbmV3IEN0b3IoeCk7XHJcblxyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHIgKyBNYXRoLm1heCh4LmUsIHguc2QoKSkgKyBMT0dfQkFTRTtcclxuICAgIEN0b3Iucm91bmRpbmcgPSAxO1xyXG5cclxuICAgIHggPSBzaW5lKEN0b3IsIHRvTGVzc1RoYW5IYWxmUGkoQ3RvciwgeCkpO1xyXG5cclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHI7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gcm07XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHF1YWRyYW50ID4gMiA/IHgubmVnKCkgOiB4LCBwciwgcm0sIHRydWUpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGlzIERlY2ltYWwsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogIHNxcnQoLW4pID0gIE5cclxuICAgKiAgc3FydChOKSAgPSAgTlxyXG4gICAqICBzcXJ0KC1JKSA9ICBOXHJcbiAgICogIHNxcnQoSSkgID0gIElcclxuICAgKiAgc3FydCgwKSAgPSAgMFxyXG4gICAqICBzcXJ0KC0wKSA9IC0wXHJcbiAgICpcclxuICAgKi9cclxuICBQLnNxdWFyZVJvb3QgPSBQLnNxcnQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgbSwgbiwgc2QsIHIsIHJlcCwgdCxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIGQgPSB4LmQsXHJcbiAgICAgIGUgPSB4LmUsXHJcbiAgICAgIHMgPSB4LnMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIC8vIE5lZ2F0aXZlL05hTi9JbmZpbml0eS96ZXJvP1xyXG4gICAgaWYgKHMgIT09IDEgfHwgIWQgfHwgIWRbMF0pIHtcclxuICAgICAgcmV0dXJuIG5ldyBDdG9yKCFzIHx8IHMgPCAwICYmICghZCB8fCBkWzBdKSA/IE5hTiA6IGQgPyB4IDogMSAvIDApO1xyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgLy8gSW5pdGlhbCBlc3RpbWF0ZS5cclxuICAgIHMgPSBNYXRoLnNxcnQoK3gpO1xyXG5cclxuICAgIC8vIE1hdGguc3FydCB1bmRlcmZsb3cvb3ZlcmZsb3c/XHJcbiAgICAvLyBQYXNzIHggdG8gTWF0aC5zcXJ0IGFzIGludGVnZXIsIHRoZW4gYWRqdXN0IHRoZSBleHBvbmVudCBvZiB0aGUgcmVzdWx0LlxyXG4gICAgaWYgKHMgPT0gMCB8fCBzID09IDEgLyAwKSB7XHJcbiAgICAgIG4gPSBkaWdpdHNUb1N0cmluZyhkKTtcclxuXHJcbiAgICAgIGlmICgobi5sZW5ndGggKyBlKSAlIDIgPT0gMCkgbiArPSAnMCc7XHJcbiAgICAgIHMgPSBNYXRoLnNxcnQobik7XHJcbiAgICAgIGUgPSBtYXRoZmxvb3IoKGUgKyAxKSAvIDIpIC0gKGUgPCAwIHx8IGUgJSAyKTtcclxuXHJcbiAgICAgIGlmIChzID09IDEgLyAwKSB7XHJcbiAgICAgICAgbiA9ICc1ZScgKyBlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG4gPSBzLnRvRXhwb25lbnRpYWwoKTtcclxuICAgICAgICBuID0gbi5zbGljZSgwLCBuLmluZGV4T2YoJ2UnKSArIDEpICsgZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgciA9IG5ldyBDdG9yKG4pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgciA9IG5ldyBDdG9yKHMudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2QgPSAoZSA9IEN0b3IucHJlY2lzaW9uKSArIDM7XHJcblxyXG4gICAgLy8gTmV3dG9uLVJhcGhzb24gaXRlcmF0aW9uLlxyXG4gICAgZm9yICg7Oykge1xyXG4gICAgICB0ID0gcjtcclxuICAgICAgciA9IHQucGx1cyhkaXZpZGUoeCwgdCwgc2QgKyAyLCAxKSkudGltZXMoMC41KTtcclxuXHJcbiAgICAgIC8vIFRPRE8/IFJlcGxhY2Ugd2l0aCBmb3ItbG9vcCBhbmQgY2hlY2tSb3VuZGluZ0RpZ2l0cy5cclxuICAgICAgaWYgKGRpZ2l0c1RvU3RyaW5nKHQuZCkuc2xpY2UoMCwgc2QpID09PSAobiA9IGRpZ2l0c1RvU3RyaW5nKHIuZCkpLnNsaWNlKDAsIHNkKSkge1xyXG4gICAgICAgIG4gPSBuLnNsaWNlKHNkIC0gMywgc2QgKyAxKTtcclxuXHJcbiAgICAgICAgLy8gVGhlIDR0aCByb3VuZGluZyBkaWdpdCBtYXkgYmUgaW4gZXJyb3IgYnkgLTEgc28gaWYgdGhlIDQgcm91bmRpbmcgZGlnaXRzIGFyZSA5OTk5IG9yXHJcbiAgICAgICAgLy8gNDk5OSwgaS5lLiBhcHByb2FjaGluZyBhIHJvdW5kaW5nIGJvdW5kYXJ5LCBjb250aW51ZSB0aGUgaXRlcmF0aW9uLlxyXG4gICAgICAgIGlmIChuID09ICc5OTk5JyB8fCAhcmVwICYmIG4gPT0gJzQ5OTknKSB7XHJcblxyXG4gICAgICAgICAgLy8gT24gdGhlIGZpcnN0IGl0ZXJhdGlvbiBvbmx5LCBjaGVjayB0byBzZWUgaWYgcm91bmRpbmcgdXAgZ2l2ZXMgdGhlIGV4YWN0IHJlc3VsdCBhcyB0aGVcclxuICAgICAgICAgIC8vIG5pbmVzIG1heSBpbmZpbml0ZWx5IHJlcGVhdC5cclxuICAgICAgICAgIGlmICghcmVwKSB7XHJcbiAgICAgICAgICAgIGZpbmFsaXNlKHQsIGUgKyAxLCAwKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0LnRpbWVzKHQpLmVxKHgpKSB7XHJcbiAgICAgICAgICAgICAgciA9IHQ7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBzZCArPSA0O1xyXG4gICAgICAgICAgcmVwID0gMTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIElmIHRoZSByb3VuZGluZyBkaWdpdHMgYXJlIG51bGwsIDB7MCw0fSBvciA1MHswLDN9LCBjaGVjayBmb3IgYW4gZXhhY3QgcmVzdWx0LlxyXG4gICAgICAgICAgLy8gSWYgbm90LCB0aGVuIHRoZXJlIGFyZSBmdXJ0aGVyIGRpZ2l0cyBhbmQgbSB3aWxsIGJlIHRydXRoeS5cclxuICAgICAgICAgIGlmICghK24gfHwgIStuLnNsaWNlKDEpICYmIG4uY2hhckF0KDApID09ICc1Jykge1xyXG5cclxuICAgICAgICAgICAgLy8gVHJ1bmNhdGUgdG8gdGhlIGZpcnN0IHJvdW5kaW5nIGRpZ2l0LlxyXG4gICAgICAgICAgICBmaW5hbGlzZShyLCBlICsgMSwgMSk7XHJcbiAgICAgICAgICAgIG0gPSAhci50aW1lcyhyKS5lcSh4KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHRlcm5hbCA9IHRydWU7XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHIsIGUsIEN0b3Iucm91bmRpbmcsIG0pO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB0YW5nZW50IG9mIHRoZSB2YWx1ZSBpbiByYWRpYW5zIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy1JbmZpbml0eSwgSW5maW5pdHldXHJcbiAgICogUmFuZ2U6IFstSW5maW5pdHksIEluZmluaXR5XVxyXG4gICAqXHJcbiAgICogdGFuKDApICAgICAgICAgPSAwXHJcbiAgICogdGFuKC0wKSAgICAgICAgPSAtMFxyXG4gICAqIHRhbihJbmZpbml0eSkgID0gTmFOXHJcbiAgICogdGFuKC1JbmZpbml0eSkgPSBOYU5cclxuICAgKiB0YW4oTmFOKSAgICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC50YW5nZW50ID0gUC50YW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgcHIsIHJtLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKCF4LmlzRmluaXRlKCkpIHJldHVybiBuZXcgQ3RvcihOYU4pO1xyXG4gICAgaWYgKHguaXNaZXJvKCkpIHJldHVybiBuZXcgQ3Rvcih4KTtcclxuXHJcbiAgICBwciA9IEN0b3IucHJlY2lzaW9uO1xyXG4gICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwciArIDEwO1xyXG4gICAgQ3Rvci5yb3VuZGluZyA9IDE7XHJcblxyXG4gICAgeCA9IHguc2luKCk7XHJcbiAgICB4LnMgPSAxO1xyXG4gICAgeCA9IGRpdmlkZSh4LCBuZXcgQ3RvcigxKS5taW51cyh4LnRpbWVzKHgpKS5zcXJ0KCksIHByICsgMTAsIDApO1xyXG5cclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHI7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gcm07XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHF1YWRyYW50ID09IDIgfHwgcXVhZHJhbnQgPT0gNCA/IHgubmVnKCkgOiB4LCBwciwgcm0sIHRydWUpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqICBuICogMCA9IDBcclxuICAgKiAgbiAqIE4gPSBOXHJcbiAgICogIG4gKiBJID0gSVxyXG4gICAqICAwICogbiA9IDBcclxuICAgKiAgMCAqIDAgPSAwXHJcbiAgICogIDAgKiBOID0gTlxyXG4gICAqICAwICogSSA9IE5cclxuICAgKiAgTiAqIG4gPSBOXHJcbiAgICogIE4gKiAwID0gTlxyXG4gICAqICBOICogTiA9IE5cclxuICAgKiAgTiAqIEkgPSBOXHJcbiAgICogIEkgKiBuID0gSVxyXG4gICAqICBJICogMCA9IE5cclxuICAgKiAgSSAqIE4gPSBOXHJcbiAgICogIEkgKiBJID0gSVxyXG4gICAqXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhpcyBEZWNpbWFsIHRpbWVzIGB5YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYCBzaWduaWZpY2FudFxyXG4gICAqIGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRpbWVzID0gUC5tdWwgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgdmFyIGNhcnJ5LCBlLCBpLCBrLCByLCByTCwgdCwgeGRMLCB5ZEwsXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcixcclxuICAgICAgeGQgPSB4LmQsXHJcbiAgICAgIHlkID0gKHkgPSBuZXcgQ3Rvcih5KSkuZDtcclxuXHJcbiAgICB5LnMgKj0geC5zO1xyXG5cclxuICAgICAvLyBJZiBlaXRoZXIgaXMgTmFOLCDCsUluZmluaXR5IG9yIMKxMC4uLlxyXG4gICAgaWYgKCF4ZCB8fCAheGRbMF0gfHwgIXlkIHx8ICF5ZFswXSkge1xyXG5cclxuICAgICAgcmV0dXJuIG5ldyBDdG9yKCF5LnMgfHwgeGQgJiYgIXhkWzBdICYmICF5ZCB8fCB5ZCAmJiAheWRbMF0gJiYgIXhkXHJcblxyXG4gICAgICAgIC8vIFJldHVybiBOYU4gaWYgZWl0aGVyIGlzIE5hTi5cclxuICAgICAgICAvLyBSZXR1cm4gTmFOIGlmIHggaXMgwrEwIGFuZCB5IGlzIMKxSW5maW5pdHksIG9yIHkgaXMgwrEwIGFuZCB4IGlzIMKxSW5maW5pdHkuXHJcbiAgICAgICAgPyBOYU5cclxuXHJcbiAgICAgICAgLy8gUmV0dXJuIMKxSW5maW5pdHkgaWYgZWl0aGVyIGlzIMKxSW5maW5pdHkuXHJcbiAgICAgICAgLy8gUmV0dXJuIMKxMCBpZiBlaXRoZXIgaXMgwrEwLlxyXG4gICAgICAgIDogIXhkIHx8ICF5ZCA/IHkucyAvIDAgOiB5LnMgKiAwKTtcclxuICAgIH1cclxuXHJcbiAgICBlID0gbWF0aGZsb29yKHguZSAvIExPR19CQVNFKSArIG1hdGhmbG9vcih5LmUgLyBMT0dfQkFTRSk7XHJcbiAgICB4ZEwgPSB4ZC5sZW5ndGg7XHJcbiAgICB5ZEwgPSB5ZC5sZW5ndGg7XHJcblxyXG4gICAgLy8gRW5zdXJlIHhkIHBvaW50cyB0byB0aGUgbG9uZ2VyIGFycmF5LlxyXG4gICAgaWYgKHhkTCA8IHlkTCkge1xyXG4gICAgICByID0geGQ7XHJcbiAgICAgIHhkID0geWQ7XHJcbiAgICAgIHlkID0gcjtcclxuICAgICAgckwgPSB4ZEw7XHJcbiAgICAgIHhkTCA9IHlkTDtcclxuICAgICAgeWRMID0gckw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5pdGlhbGlzZSB0aGUgcmVzdWx0IGFycmF5IHdpdGggemVyb3MuXHJcbiAgICByID0gW107XHJcbiAgICByTCA9IHhkTCArIHlkTDtcclxuICAgIGZvciAoaSA9IHJMOyBpLS07KSByLnB1c2goMCk7XHJcblxyXG4gICAgLy8gTXVsdGlwbHkhXHJcbiAgICBmb3IgKGkgPSB5ZEw7IC0taSA+PSAwOykge1xyXG4gICAgICBjYXJyeSA9IDA7XHJcbiAgICAgIGZvciAoayA9IHhkTCArIGk7IGsgPiBpOykge1xyXG4gICAgICAgIHQgPSByW2tdICsgeWRbaV0gKiB4ZFtrIC0gaSAtIDFdICsgY2Fycnk7XHJcbiAgICAgICAgcltrLS1dID0gdCAlIEJBU0UgfCAwO1xyXG4gICAgICAgIGNhcnJ5ID0gdCAvIEJBU0UgfCAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByW2tdID0gKHJba10gKyBjYXJyeSkgJSBCQVNFIHwgMDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZW1vdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICBmb3IgKDsgIXJbLS1yTF07KSByLnBvcCgpO1xyXG5cclxuICAgIGlmIChjYXJyeSkgKytlO1xyXG4gICAgZWxzZSByLnNoaWZ0KCk7XHJcblxyXG4gICAgeS5kID0gcjtcclxuICAgIHkuZSA9IGdldEJhc2UxMEV4cG9uZW50KHIsIGUpO1xyXG5cclxuICAgIHJldHVybiBleHRlcm5hbCA/IGZpbmFsaXNlKHksIEN0b3IucHJlY2lzaW9uLCBDdG9yLnJvdW5kaW5nKSA6IHk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGluIGJhc2UgMiwgcm91bmQgdG8gYHNkYCBzaWduaWZpY2FudFxyXG4gICAqIGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGBybWAuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgb3B0aW9uYWwgYHNkYCBhcmd1bWVudCBpcyBwcmVzZW50IHRoZW4gcmV0dXJuIGJpbmFyeSBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgKlxyXG4gICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAxIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9CaW5hcnkgPSBmdW5jdGlvbiAoc2QsIHJtKSB7XHJcbiAgICByZXR1cm4gdG9TdHJpbmdCaW5hcnkodGhpcywgMiwgc2QsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIHJvdW5kZWQgdG8gYSBtYXhpbXVtIG9mIGBkcGBcclxuICAgKiBkZWNpbWFsIHBsYWNlcyB1c2luZyByb3VuZGluZyBtb2RlIGBybWAgb3IgYHJvdW5kaW5nYCBpZiBgcm1gIGlzIG9taXR0ZWQuXHJcbiAgICpcclxuICAgKiBJZiBgZHBgIGlzIG9taXR0ZWQsIHJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBbZHBdIHtudW1iZXJ9IERlY2ltYWwgcGxhY2VzLiBJbnRlZ2VyLCAwIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9EZWNpbWFsUGxhY2VzID0gUC50b0RQID0gZnVuY3Rpb24gKGRwLCBybSkge1xyXG4gICAgdmFyIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICB4ID0gbmV3IEN0b3IoeCk7XHJcbiAgICBpZiAoZHAgPT09IHZvaWQgMCkgcmV0dXJuIHg7XHJcblxyXG4gICAgY2hlY2tJbnQzMihkcCwgMCwgTUFYX0RJR0lUUyk7XHJcblxyXG4gICAgaWYgKHJtID09PSB2b2lkIDApIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgIGVsc2UgY2hlY2tJbnQzMihybSwgMCwgOCk7XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHgsIGRwICsgeC5lICsgMSwgcm0pO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBpbiBleHBvbmVudGlhbCBub3RhdGlvbiByb3VuZGVkIHRvXHJcbiAgICogYGRwYCBmaXhlZCBkZWNpbWFsIHBsYWNlcyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiBbZHBdIHtudW1iZXJ9IERlY2ltYWwgcGxhY2VzLiBJbnRlZ2VyLCAwIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9FeHBvbmVudGlhbCA9IGZ1bmN0aW9uIChkcCwgcm0pIHtcclxuICAgIHZhciBzdHIsXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICBpZiAoZHAgPT09IHZvaWQgMCkge1xyXG4gICAgICBzdHIgPSBmaW5pdGVUb1N0cmluZyh4LCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNoZWNrSW50MzIoZHAsIDAsIE1BWF9ESUdJVFMpO1xyXG5cclxuICAgICAgaWYgKHJtID09PSB2b2lkIDApIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgICAgZWxzZSBjaGVja0ludDMyKHJtLCAwLCA4KTtcclxuXHJcbiAgICAgIHggPSBmaW5hbGlzZShuZXcgQ3Rvcih4KSwgZHAgKyAxLCBybSk7XHJcbiAgICAgIHN0ciA9IGZpbml0ZVRvU3RyaW5nKHgsIHRydWUsIGRwICsgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHguaXNOZWcoKSAmJiAheC5pc1plcm8oKSA/ICctJyArIHN0ciA6IHN0cjtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaW4gbm9ybWFsIChmaXhlZC1wb2ludCkgbm90YXRpb24gdG9cclxuICAgKiBgZHBgIGZpeGVkIGRlY2ltYWwgcGxhY2VzIGFuZCByb3VuZGVkIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJtYCBvciBgcm91bmRpbmdgIGlmIGBybWAgaXNcclxuICAgKiBvbWl0dGVkLlxyXG4gICAqXHJcbiAgICogQXMgd2l0aCBKYXZhU2NyaXB0IG51bWJlcnMsICgtMCkudG9GaXhlZCgwKSBpcyAnMCcsIGJ1dCBlLmcuICgtMC4wMDAwMSkudG9GaXhlZCgwKSBpcyAnLTAnLlxyXG4gICAqXHJcbiAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVhfRElHSVRTIGluY2x1c2l2ZS5cclxuICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICpcclxuICAgKiAoLTApLnRvRml4ZWQoMCkgaXMgJzAnLCBidXQgKC0wLjEpLnRvRml4ZWQoMCkgaXMgJy0wJy5cclxuICAgKiAoLTApLnRvRml4ZWQoMSkgaXMgJzAuMCcsIGJ1dCAoLTAuMDEpLnRvRml4ZWQoMSkgaXMgJy0wLjAnLlxyXG4gICAqICgtMCkudG9GaXhlZCgzKSBpcyAnMC4wMDAnLlxyXG4gICAqICgtMC41KS50b0ZpeGVkKDApIGlzICctMCcuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRvRml4ZWQgPSBmdW5jdGlvbiAoZHAsIHJtKSB7XHJcbiAgICB2YXIgc3RyLCB5LFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKGRwID09PSB2b2lkIDApIHtcclxuICAgICAgc3RyID0gZmluaXRlVG9TdHJpbmcoeCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjaGVja0ludDMyKGRwLCAwLCBNQVhfRElHSVRTKTtcclxuXHJcbiAgICAgIGlmIChybSA9PT0gdm9pZCAwKSBybSA9IEN0b3Iucm91bmRpbmc7XHJcbiAgICAgIGVsc2UgY2hlY2tJbnQzMihybSwgMCwgOCk7XHJcblxyXG4gICAgICB5ID0gZmluYWxpc2UobmV3IEN0b3IoeCksIGRwICsgeC5lICsgMSwgcm0pO1xyXG4gICAgICBzdHIgPSBmaW5pdGVUb1N0cmluZyh5LCBmYWxzZSwgZHAgKyB5LmUgKyAxKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUbyBkZXRlcm1pbmUgd2hldGhlciB0byBhZGQgdGhlIG1pbnVzIHNpZ24gbG9vayBhdCB0aGUgdmFsdWUgYmVmb3JlIGl0IHdhcyByb3VuZGVkLFxyXG4gICAgLy8gaS5lLiBsb29rIGF0IGB4YCByYXRoZXIgdGhhbiBgeWAuXHJcbiAgICByZXR1cm4geC5pc05lZygpICYmICF4LmlzWmVybygpID8gJy0nICsgc3RyIDogc3RyO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhbiBhcnJheSByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBhcyBhIHNpbXBsZSBmcmFjdGlvbiB3aXRoIGFuIGludGVnZXJcclxuICAgKiBudW1lcmF0b3IgYW5kIGFuIGludGVnZXIgZGVub21pbmF0b3IuXHJcbiAgICpcclxuICAgKiBUaGUgZGVub21pbmF0b3Igd2lsbCBiZSBhIHBvc2l0aXZlIG5vbi16ZXJvIHZhbHVlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgc3BlY2lmaWVkIG1heGltdW1cclxuICAgKiBkZW5vbWluYXRvci4gSWYgYSBtYXhpbXVtIGRlbm9taW5hdG9yIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZW5vbWluYXRvciB3aWxsIGJlIHRoZSBsb3dlc3RcclxuICAgKiB2YWx1ZSBuZWNlc3NhcnkgdG8gcmVwcmVzZW50IHRoZSBudW1iZXIgZXhhY3RseS5cclxuICAgKlxyXG4gICAqIFttYXhEXSB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBNYXhpbXVtIGRlbm9taW5hdG9yLiBJbnRlZ2VyID49IDEgYW5kIDwgSW5maW5pdHkuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRvRnJhY3Rpb24gPSBmdW5jdGlvbiAobWF4RCkge1xyXG4gICAgdmFyIGQsIGQwLCBkMSwgZDIsIGUsIGssIG4sIG4wLCBuMSwgcHIsIHEsIHIsXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICB4ZCA9IHguZCxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKCF4ZCkgcmV0dXJuIG5ldyBDdG9yKHgpO1xyXG5cclxuICAgIG4xID0gZDAgPSBuZXcgQ3RvcigxKTtcclxuICAgIGQxID0gbjAgPSBuZXcgQ3RvcigwKTtcclxuXHJcbiAgICBkID0gbmV3IEN0b3IoZDEpO1xyXG4gICAgZSA9IGQuZSA9IGdldFByZWNpc2lvbih4ZCkgLSB4LmUgLSAxO1xyXG4gICAgayA9IGUgJSBMT0dfQkFTRTtcclxuICAgIGQuZFswXSA9IG1hdGhwb3coMTAsIGsgPCAwID8gTE9HX0JBU0UgKyBrIDogayk7XHJcblxyXG4gICAgaWYgKG1heEQgPT0gbnVsbCkge1xyXG5cclxuICAgICAgLy8gZCBpcyAxMCoqZSwgdGhlIG1pbmltdW0gbWF4LWRlbm9taW5hdG9yIG5lZWRlZC5cclxuICAgICAgbWF4RCA9IGUgPiAwID8gZCA6IG4xO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbiA9IG5ldyBDdG9yKG1heEQpO1xyXG4gICAgICBpZiAoIW4uaXNJbnQoKSB8fCBuLmx0KG4xKSkgdGhyb3cgRXJyb3IoaW52YWxpZEFyZ3VtZW50ICsgbik7XHJcbiAgICAgIG1heEQgPSBuLmd0KGQpID8gKGUgPiAwID8gZCA6IG4xKSA6IG47XHJcbiAgICB9XHJcblxyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgIG4gPSBuZXcgQ3RvcihkaWdpdHNUb1N0cmluZyh4ZCkpO1xyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIEN0b3IucHJlY2lzaW9uID0gZSA9IHhkLmxlbmd0aCAqIExPR19CQVNFICogMjtcclxuXHJcbiAgICBmb3IgKDs7KSAge1xyXG4gICAgICBxID0gZGl2aWRlKG4sIGQsIDAsIDEsIDEpO1xyXG4gICAgICBkMiA9IGQwLnBsdXMocS50aW1lcyhkMSkpO1xyXG4gICAgICBpZiAoZDIuY21wKG1heEQpID09IDEpIGJyZWFrO1xyXG4gICAgICBkMCA9IGQxO1xyXG4gICAgICBkMSA9IGQyO1xyXG4gICAgICBkMiA9IG4xO1xyXG4gICAgICBuMSA9IG4wLnBsdXMocS50aW1lcyhkMikpO1xyXG4gICAgICBuMCA9IGQyO1xyXG4gICAgICBkMiA9IGQ7XHJcbiAgICAgIGQgPSBuLm1pbnVzKHEudGltZXMoZDIpKTtcclxuICAgICAgbiA9IGQyO1xyXG4gICAgfVxyXG5cclxuICAgIGQyID0gZGl2aWRlKG1heEQubWludXMoZDApLCBkMSwgMCwgMSwgMSk7XHJcbiAgICBuMCA9IG4wLnBsdXMoZDIudGltZXMobjEpKTtcclxuICAgIGQwID0gZDAucGx1cyhkMi50aW1lcyhkMSkpO1xyXG4gICAgbjAucyA9IG4xLnMgPSB4LnM7XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGZyYWN0aW9uIGlzIGNsb3NlciB0byB4LCBuMC9kMCBvciBuMS9kMT9cclxuICAgIHIgPSBkaXZpZGUobjEsIGQxLCBlLCAxKS5taW51cyh4KS5hYnMoKS5jbXAoZGl2aWRlKG4wLCBkMCwgZSwgMSkubWludXMoeCkuYWJzKCkpIDwgMVxyXG4gICAgICAgID8gW24xLCBkMV0gOiBbbjAsIGQwXTtcclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByO1xyXG4gICAgZXh0ZXJuYWwgPSB0cnVlO1xyXG5cclxuICAgIHJldHVybiByO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBpbiBiYXNlIDE2LCByb3VuZCB0byBgc2RgIHNpZ25pZmljYW50XHJcbiAgICogZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJtYC5cclxuICAgKlxyXG4gICAqIElmIHRoZSBvcHRpb25hbCBgc2RgIGFyZ3VtZW50IGlzIHByZXNlbnQgdGhlbiByZXR1cm4gYmluYXJ5IGV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAqXHJcbiAgICogW3NkXSB7bnVtYmVyfSBTaWduaWZpY2FudCBkaWdpdHMuIEludGVnZXIsIDEgdG8gTUFYX0RJR0lUUyBpbmNsdXNpdmUuXHJcbiAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC50b0hleGFkZWNpbWFsID0gUC50b0hleCA9IGZ1bmN0aW9uIChzZCwgcm0pIHtcclxuICAgIHJldHVybiB0b1N0cmluZ0JpbmFyeSh0aGlzLCAxNiwgc2QsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm5zIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG5lYXJlc3QgbXVsdGlwbGUgb2YgYHlgIGluIHRoZSBkaXJlY3Rpb24gb2Ygcm91bmRpbmdcclxuICAgKiBtb2RlIGBybWAsIG9yIGBEZWNpbWFsLnJvdW5kaW5nYCBpZiBgcm1gIGlzIG9taXR0ZWQsIHRvIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYWx3YXlzIGhhdmUgdGhlIHNhbWUgc2lnbiBhcyB0aGlzIERlY2ltYWwsIHVubGVzcyBlaXRoZXIgdGhpcyBEZWNpbWFsXHJcbiAgICogb3IgYHlgIGlzIE5hTiwgaW4gd2hpY2ggY2FzZSB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgYWxzbyBiZSBOYU4uXHJcbiAgICpcclxuICAgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgdmFsdWUgb2YgYHByZWNpc2lvbmAuXHJcbiAgICpcclxuICAgKiB5IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IFRoZSBtYWduaXR1ZGUgdG8gcm91bmQgdG8gYSBtdWx0aXBsZSBvZi5cclxuICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICpcclxuICAgKiAndG9OZWFyZXN0KCkgcm91bmRpbmcgbW9kZSBub3QgYW4gaW50ZWdlcjoge3JtfSdcclxuICAgKiAndG9OZWFyZXN0KCkgcm91bmRpbmcgbW9kZSBvdXQgb2YgcmFuZ2U6IHtybX0nXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRvTmVhcmVzdCA9IGZ1bmN0aW9uICh5LCBybSkge1xyXG4gICAgdmFyIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICB4ID0gbmV3IEN0b3IoeCk7XHJcblxyXG4gICAgaWYgKHkgPT0gbnVsbCkge1xyXG5cclxuICAgICAgLy8gSWYgeCBpcyBub3QgZmluaXRlLCByZXR1cm4geC5cclxuICAgICAgaWYgKCF4LmQpIHJldHVybiB4O1xyXG5cclxuICAgICAgeSA9IG5ldyBDdG9yKDEpO1xyXG4gICAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB5ID0gbmV3IEN0b3IoeSk7XHJcbiAgICAgIGlmIChybSA9PT0gdm9pZCAwKSB7XHJcbiAgICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNoZWNrSW50MzIocm0sIDAsIDgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBJZiB4IGlzIG5vdCBmaW5pdGUsIHJldHVybiB4IGlmIHkgaXMgbm90IE5hTiwgZWxzZSBOYU4uXHJcbiAgICAgIGlmICgheC5kKSByZXR1cm4geS5zID8geCA6IHk7XHJcblxyXG4gICAgICAvLyBJZiB5IGlzIG5vdCBmaW5pdGUsIHJldHVybiBJbmZpbml0eSB3aXRoIHRoZSBzaWduIG9mIHggaWYgeSBpcyBJbmZpbml0eSwgZWxzZSBOYU4uXHJcbiAgICAgIGlmICgheS5kKSB7XHJcbiAgICAgICAgaWYgKHkucykgeS5zID0geC5zO1xyXG4gICAgICAgIHJldHVybiB5O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgeSBpcyBub3QgemVybywgY2FsY3VsYXRlIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIHkgdG8geC5cclxuICAgIGlmICh5LmRbMF0pIHtcclxuICAgICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgICAgeCA9IGRpdmlkZSh4LCB5LCAwLCBybSwgMSkudGltZXMoeSk7XHJcbiAgICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuICAgICAgZmluYWxpc2UoeCk7XHJcblxyXG4gICAgLy8gSWYgeSBpcyB6ZXJvLCByZXR1cm4gemVybyB3aXRoIHRoZSBzaWduIG9mIHguXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB5LnMgPSB4LnM7XHJcbiAgICAgIHggPSB5O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4O1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGNvbnZlcnRlZCB0byBhIG51bWJlciBwcmltaXRpdmUuXHJcbiAgICogWmVybyBrZWVwcyBpdHMgc2lnbi5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9OdW1iZXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gK3RoaXM7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGluIGJhc2UgOCwgcm91bmQgdG8gYHNkYCBzaWduaWZpY2FudFxyXG4gICAqIGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGBybWAuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgb3B0aW9uYWwgYHNkYCBhcmd1bWVudCBpcyBwcmVzZW50IHRoZW4gcmV0dXJuIGJpbmFyeSBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgKlxyXG4gICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAxIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9PY3RhbCA9IGZ1bmN0aW9uIChzZCwgcm0pIHtcclxuICAgIHJldHVybiB0b1N0cmluZ0JpbmFyeSh0aGlzLCA4LCBzZCwgcm0pO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgcmFpc2VkIHRvIHRoZSBwb3dlciBgeWAsIHJvdW5kZWRcclxuICAgKiB0byBgcHJlY2lzaW9uYCBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogRUNNQVNjcmlwdCBjb21wbGlhbnQuXHJcbiAgICpcclxuICAgKiAgIHBvdyh4LCBOYU4pICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBOYU5cclxuICAgKiAgIHBvdyh4LCDCsTApICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMVxyXG5cclxuICAgKiAgIHBvdyhOYU4sIG5vbi16ZXJvKSAgICAgICAgICAgICAgICAgICAgPSBOYU5cclxuICAgKiAgIHBvdyhhYnMoeCkgPiAxLCArSW5maW5pdHkpICAgICAgICAgICAgPSArSW5maW5pdHlcclxuICAgKiAgIHBvdyhhYnMoeCkgPiAxLCAtSW5maW5pdHkpICAgICAgICAgICAgPSArMFxyXG4gICAqICAgcG93KGFicyh4KSA9PSAxLCDCsUluZmluaXR5KSAgICAgICAgICAgPSBOYU5cclxuICAgKiAgIHBvdyhhYnMoeCkgPCAxLCArSW5maW5pdHkpICAgICAgICAgICAgPSArMFxyXG4gICAqICAgcG93KGFicyh4KSA8IDEsIC1JbmZpbml0eSkgICAgICAgICAgICA9ICtJbmZpbml0eVxyXG4gICAqICAgcG93KCtJbmZpbml0eSwgeSA+IDApICAgICAgICAgICAgICAgICA9ICtJbmZpbml0eVxyXG4gICAqICAgcG93KCtJbmZpbml0eSwgeSA8IDApICAgICAgICAgICAgICAgICA9ICswXHJcbiAgICogICBwb3coLUluZmluaXR5LCBvZGQgaW50ZWdlciA+IDApICAgICAgID0gLUluZmluaXR5XHJcbiAgICogICBwb3coLUluZmluaXR5LCBldmVuIGludGVnZXIgPiAwKSAgICAgID0gK0luZmluaXR5XHJcbiAgICogICBwb3coLUluZmluaXR5LCBvZGQgaW50ZWdlciA8IDApICAgICAgID0gLTBcclxuICAgKiAgIHBvdygtSW5maW5pdHksIGV2ZW4gaW50ZWdlciA8IDApICAgICAgPSArMFxyXG4gICAqICAgcG93KCswLCB5ID4gMCkgICAgICAgICAgICAgICAgICAgICAgICA9ICswXHJcbiAgICogICBwb3coKzAsIHkgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgID0gK0luZmluaXR5XHJcbiAgICogICBwb3coLTAsIG9kZCBpbnRlZ2VyID4gMCkgICAgICAgICAgICAgID0gLTBcclxuICAgKiAgIHBvdygtMCwgZXZlbiBpbnRlZ2VyID4gMCkgICAgICAgICAgICAgPSArMFxyXG4gICAqICAgcG93KC0wLCBvZGQgaW50ZWdlciA8IDApICAgICAgICAgICAgICA9IC1JbmZpbml0eVxyXG4gICAqICAgcG93KC0wLCBldmVuIGludGVnZXIgPCAwKSAgICAgICAgICAgICA9ICtJbmZpbml0eVxyXG4gICAqICAgcG93KGZpbml0ZSB4IDwgMCwgZmluaXRlIG5vbi1pbnRlZ2VyKSA9IE5hTlxyXG4gICAqXHJcbiAgICogRm9yIG5vbi1pbnRlZ2VyIG9yIHZlcnkgbGFyZ2UgZXhwb25lbnRzIHBvdyh4LCB5KSBpcyBjYWxjdWxhdGVkIHVzaW5nXHJcbiAgICpcclxuICAgKiAgIHheeSA9IGV4cCh5KmxuKHgpKVxyXG4gICAqXHJcbiAgICogQXNzdW1pbmcgdGhlIGZpcnN0IDE1IHJvdW5kaW5nIGRpZ2l0cyBhcmUgZWFjaCBlcXVhbGx5IGxpa2VseSB0byBiZSBhbnkgZGlnaXQgMC05LCB0aGVcclxuICAgKiBwcm9iYWJpbGl0eSBvZiBhbiBpbmNvcnJlY3RseSByb3VuZGVkIHJlc3VsdFxyXG4gICAqIFAoWzQ5XTl7MTR9IHwgWzUwXTB7MTR9KSA9IDIgKiAwLjIgKiAxMF4tMTQgPSA0ZS0xNSA9IDEvMi41ZSsxNFxyXG4gICAqIGkuZS4gMSBpbiAyNTAsMDAwLDAwMCwwMDAsMDAwXHJcbiAgICpcclxuICAgKiBJZiBhIHJlc3VsdCBpcyBpbmNvcnJlY3RseSByb3VuZGVkIHRoZSBtYXhpbXVtIGVycm9yIHdpbGwgYmUgMSB1bHAgKHVuaXQgaW4gbGFzdCBwbGFjZSkuXHJcbiAgICpcclxuICAgKiB5IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IFRoZSBwb3dlciB0byB3aGljaCB0byByYWlzZSB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRvUG93ZXIgPSBQLnBvdyA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICB2YXIgZSwgaywgcHIsIHIsIHJtLCBzLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgIHluID0gKyh5ID0gbmV3IEN0b3IoeSkpO1xyXG5cclxuICAgIC8vIEVpdGhlciDCsUluZmluaXR5LCBOYU4gb3IgwrEwP1xyXG4gICAgaWYgKCF4LmQgfHwgIXkuZCB8fCAheC5kWzBdIHx8ICF5LmRbMF0pIHJldHVybiBuZXcgQ3RvcihtYXRocG93KCt4LCB5bikpO1xyXG5cclxuICAgIHggPSBuZXcgQ3Rvcih4KTtcclxuXHJcbiAgICBpZiAoeC5lcSgxKSkgcmV0dXJuIHg7XHJcblxyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuXHJcbiAgICBpZiAoeS5lcSgxKSkgcmV0dXJuIGZpbmFsaXNlKHgsIHByLCBybSk7XHJcblxyXG4gICAgLy8geSBleHBvbmVudFxyXG4gICAgZSA9IG1hdGhmbG9vcih5LmUgLyBMT0dfQkFTRSk7XHJcblxyXG4gICAgLy8gSWYgeSBpcyBhIHNtYWxsIGludGVnZXIgdXNlIHRoZSAnZXhwb25lbnRpYXRpb24gYnkgc3F1YXJpbmcnIGFsZ29yaXRobS5cclxuICAgIGlmIChlID49IHkuZC5sZW5ndGggLSAxICYmIChrID0geW4gPCAwID8gLXluIDogeW4pIDw9IE1BWF9TQUZFX0lOVEVHRVIpIHtcclxuICAgICAgciA9IGludFBvdyhDdG9yLCB4LCBrLCBwcik7XHJcbiAgICAgIHJldHVybiB5LnMgPCAwID8gbmV3IEN0b3IoMSkuZGl2KHIpIDogZmluYWxpc2UociwgcHIsIHJtKTtcclxuICAgIH1cclxuXHJcbiAgICBzID0geC5zO1xyXG5cclxuICAgIC8vIGlmIHggaXMgbmVnYXRpdmVcclxuICAgIGlmIChzIDwgMCkge1xyXG5cclxuICAgICAgLy8gaWYgeSBpcyBub3QgYW4gaW50ZWdlclxyXG4gICAgICBpZiAoZSA8IHkuZC5sZW5ndGggLSAxKSByZXR1cm4gbmV3IEN0b3IoTmFOKTtcclxuXHJcbiAgICAgIC8vIFJlc3VsdCBpcyBwb3NpdGl2ZSBpZiB4IGlzIG5lZ2F0aXZlIGFuZCB0aGUgbGFzdCBkaWdpdCBvZiBpbnRlZ2VyIHkgaXMgZXZlbi5cclxuICAgICAgaWYgKCh5LmRbZV0gJiAxKSA9PSAwKSBzID0gMTtcclxuXHJcbiAgICAgIC8vIGlmIHguZXEoLTEpXHJcbiAgICAgIGlmICh4LmUgPT0gMCAmJiB4LmRbMF0gPT0gMSAmJiB4LmQubGVuZ3RoID09IDEpIHtcclxuICAgICAgICB4LnMgPSBzO1xyXG4gICAgICAgIHJldHVybiB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXN0aW1hdGUgcmVzdWx0IGV4cG9uZW50LlxyXG4gICAgLy8geF55ID0gMTBeZSwgIHdoZXJlIGUgPSB5ICogbG9nMTAoeClcclxuICAgIC8vIGxvZzEwKHgpID0gbG9nMTAoeF9zaWduaWZpY2FuZCkgKyB4X2V4cG9uZW50XHJcbiAgICAvLyBsb2cxMCh4X3NpZ25pZmljYW5kKSA9IGxuKHhfc2lnbmlmaWNhbmQpIC8gbG4oMTApXHJcbiAgICBrID0gbWF0aHBvdygreCwgeW4pO1xyXG4gICAgZSA9IGsgPT0gMCB8fCAhaXNGaW5pdGUoaylcclxuICAgICAgPyBtYXRoZmxvb3IoeW4gKiAoTWF0aC5sb2coJzAuJyArIGRpZ2l0c1RvU3RyaW5nKHguZCkpIC8gTWF0aC5MTjEwICsgeC5lICsgMSkpXHJcbiAgICAgIDogbmV3IEN0b3IoayArICcnKS5lO1xyXG5cclxuICAgIC8vIEV4cG9uZW50IGVzdGltYXRlIG1heSBiZSBpbmNvcnJlY3QgZS5nLiB4OiAwLjk5OTk5OTk5OTk5OTk5OTk5OSwgeTogMi4yOSwgZTogMCwgci5lOiAtMS5cclxuXHJcbiAgICAvLyBPdmVyZmxvdy91bmRlcmZsb3c/XHJcbiAgICBpZiAoZSA+IEN0b3IubWF4RSArIDEgfHwgZSA8IEN0b3IubWluRSAtIDEpIHJldHVybiBuZXcgQ3RvcihlID4gMCA/IHMgLyAwIDogMCk7XHJcblxyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgIEN0b3Iucm91bmRpbmcgPSB4LnMgPSAxO1xyXG5cclxuICAgIC8vIEVzdGltYXRlIHRoZSBleHRyYSBndWFyZCBkaWdpdHMgbmVlZGVkIHRvIGVuc3VyZSBmaXZlIGNvcnJlY3Qgcm91bmRpbmcgZGlnaXRzIGZyb21cclxuICAgIC8vIG5hdHVyYWxMb2dhcml0aG0oeCkuIEV4YW1wbGUgb2YgZmFpbHVyZSB3aXRob3V0IHRoZXNlIGV4dHJhIGRpZ2l0cyAocHJlY2lzaW9uOiAxMCk6XHJcbiAgICAvLyBuZXcgRGVjaW1hbCgyLjMyNDU2KS5wb3coJzIwODc5ODc0MzY1MzQ1NjYuNDY0MTEnKVxyXG4gICAgLy8gc2hvdWxkIGJlIDEuMTYyMzc3ODIzZSs3NjQ5MTQ5MDUxNzM4MTUsIGJ1dCBpcyAxLjE2MjM1NTgyM2UrNzY0OTE0OTA1MTczODE1XHJcbiAgICBrID0gTWF0aC5taW4oMTIsIChlICsgJycpLmxlbmd0aCk7XHJcblxyXG4gICAgLy8gciA9IHheeSA9IGV4cCh5KmxuKHgpKVxyXG4gICAgciA9IG5hdHVyYWxFeHBvbmVudGlhbCh5LnRpbWVzKG5hdHVyYWxMb2dhcml0aG0oeCwgcHIgKyBrKSksIHByKTtcclxuXHJcbiAgICAvLyByIG1heSBiZSBJbmZpbml0eSwgZS5nLiAoMC45OTk5OTk5OTk5OTk5OTk5KS5wb3coLTFlKzQwKVxyXG4gICAgaWYgKHIuZCkge1xyXG5cclxuICAgICAgLy8gVHJ1bmNhdGUgdG8gdGhlIHJlcXVpcmVkIHByZWNpc2lvbiBwbHVzIGZpdmUgcm91bmRpbmcgZGlnaXRzLlxyXG4gICAgICByID0gZmluYWxpc2UociwgcHIgKyA1LCAxKTtcclxuXHJcbiAgICAgIC8vIElmIHRoZSByb3VuZGluZyBkaWdpdHMgYXJlIFs0OV05OTk5IG9yIFs1MF0wMDAwIGluY3JlYXNlIHRoZSBwcmVjaXNpb24gYnkgMTAgYW5kIHJlY2FsY3VsYXRlXHJcbiAgICAgIC8vIHRoZSByZXN1bHQuXHJcbiAgICAgIGlmIChjaGVja1JvdW5kaW5nRGlnaXRzKHIuZCwgcHIsIHJtKSkge1xyXG4gICAgICAgIGUgPSBwciArIDEwO1xyXG5cclxuICAgICAgICAvLyBUcnVuY2F0ZSB0byB0aGUgaW5jcmVhc2VkIHByZWNpc2lvbiBwbHVzIGZpdmUgcm91bmRpbmcgZGlnaXRzLlxyXG4gICAgICAgIHIgPSBmaW5hbGlzZShuYXR1cmFsRXhwb25lbnRpYWwoeS50aW1lcyhuYXR1cmFsTG9nYXJpdGhtKHgsIGUgKyBrKSksIGUpLCBlICsgNSwgMSk7XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGZvciAxNCBuaW5lcyBmcm9tIHRoZSAybmQgcm91bmRpbmcgZGlnaXQgKHRoZSBmaXJzdCByb3VuZGluZyBkaWdpdCBtYXkgYmUgNCBvciA5KS5cclxuICAgICAgICBpZiAoK2RpZ2l0c1RvU3RyaW5nKHIuZCkuc2xpY2UocHIgKyAxLCBwciArIDE1KSArIDEgPT0gMWUxNCkge1xyXG4gICAgICAgICAgciA9IGZpbmFsaXNlKHIsIHByICsgMSwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgci5zID0gcztcclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuICAgIEN0b3Iucm91bmRpbmcgPSBybTtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UociwgcHIsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgcm91bmRlZCB0byBgc2RgIHNpZ25pZmljYW50IGRpZ2l0c1xyXG4gICAqIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIFJldHVybiBleHBvbmVudGlhbCBub3RhdGlvbiBpZiBgc2RgIGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBuZWNlc3NhcnkgdG8gcmVwcmVzZW50XHJcbiAgICogdGhlIGludGVnZXIgcGFydCBvZiB0aGUgdmFsdWUgaW4gbm9ybWFsIG5vdGF0aW9uLlxyXG4gICAqXHJcbiAgICogW3NkXSB7bnVtYmVyfSBTaWduaWZpY2FudCBkaWdpdHMuIEludGVnZXIsIDEgdG8gTUFYX0RJR0lUUyBpbmNsdXNpdmUuXHJcbiAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC50b1ByZWNpc2lvbiA9IGZ1bmN0aW9uIChzZCwgcm0pIHtcclxuICAgIHZhciBzdHIsXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICBpZiAoc2QgPT09IHZvaWQgMCkge1xyXG4gICAgICBzdHIgPSBmaW5pdGVUb1N0cmluZyh4LCB4LmUgPD0gQ3Rvci50b0V4cE5lZyB8fCB4LmUgPj0gQ3Rvci50b0V4cFBvcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjaGVja0ludDMyKHNkLCAxLCBNQVhfRElHSVRTKTtcclxuXHJcbiAgICAgIGlmIChybSA9PT0gdm9pZCAwKSBybSA9IEN0b3Iucm91bmRpbmc7XHJcbiAgICAgIGVsc2UgY2hlY2tJbnQzMihybSwgMCwgOCk7XHJcblxyXG4gICAgICB4ID0gZmluYWxpc2UobmV3IEN0b3IoeCksIHNkLCBybSk7XHJcbiAgICAgIHN0ciA9IGZpbml0ZVRvU3RyaW5nKHgsIHNkIDw9IHguZSB8fCB4LmUgPD0gQ3Rvci50b0V4cE5lZywgc2QpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4LmlzTmVnKCkgJiYgIXguaXNaZXJvKCkgPyAnLScgKyBzdHIgOiBzdHI7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCByb3VuZGVkIHRvIGEgbWF4aW11bSBvZiBgc2RgXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJtYCwgb3IgdG8gYHByZWNpc2lvbmAgYW5kIGByb3VuZGluZ2AgcmVzcGVjdGl2ZWx5IGlmXHJcbiAgICogb21pdHRlZC5cclxuICAgKlxyXG4gICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAxIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgKlxyXG4gICAqICd0b1NEKCkgZGlnaXRzIG91dCBvZiByYW5nZToge3NkfSdcclxuICAgKiAndG9TRCgpIGRpZ2l0cyBub3QgYW4gaW50ZWdlcjoge3NkfSdcclxuICAgKiAndG9TRCgpIHJvdW5kaW5nIG1vZGUgbm90IGFuIGludGVnZXI6IHtybX0nXHJcbiAgICogJ3RvU0QoKSByb3VuZGluZyBtb2RlIG91dCBvZiByYW5nZToge3JtfSdcclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9TaWduaWZpY2FudERpZ2l0cyA9IFAudG9TRCA9IGZ1bmN0aW9uIChzZCwgcm0pIHtcclxuICAgIHZhciB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKHNkID09PSB2b2lkIDApIHtcclxuICAgICAgc2QgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2hlY2tJbnQzMihzZCwgMSwgTUFYX0RJR0lUUyk7XHJcblxyXG4gICAgICBpZiAocm0gPT09IHZvaWQgMCkgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgICBlbHNlIGNoZWNrSW50MzIocm0sIDAsIDgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaW5hbGlzZShuZXcgQ3Rvcih4KSwgc2QsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBSZXR1cm4gZXhwb25lbnRpYWwgbm90YXRpb24gaWYgdGhpcyBEZWNpbWFsIGhhcyBhIHBvc2l0aXZlIGV4cG9uZW50IGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhblxyXG4gICAqIGB0b0V4cFBvc2AsIG9yIGEgbmVnYXRpdmUgZXhwb25lbnQgZXF1YWwgdG8gb3IgbGVzcyB0aGFuIGB0b0V4cE5lZ2AuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcixcclxuICAgICAgc3RyID0gZmluaXRlVG9TdHJpbmcoeCwgeC5lIDw9IEN0b3IudG9FeHBOZWcgfHwgeC5lID49IEN0b3IudG9FeHBQb3MpO1xyXG5cclxuICAgIHJldHVybiB4LmlzTmVnKCkgJiYgIXguaXNaZXJvKCkgPyAnLScgKyBzdHIgOiBzdHI7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCB0cnVuY2F0ZWQgdG8gYSB3aG9sZSBudW1iZXIuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRydW5jYXRlZCA9IFAudHJ1bmMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gZmluYWxpc2UobmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyksIHRoaXMuZSArIDEsIDEpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKiBVbmxpa2UgYHRvU3RyaW5nYCwgbmVnYXRpdmUgemVybyB3aWxsIGluY2x1ZGUgdGhlIG1pbnVzIHNpZ24uXHJcbiAgICpcclxuICAgKi9cclxuICBQLnZhbHVlT2YgPSBQLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgIHN0ciA9IGZpbml0ZVRvU3RyaW5nKHgsIHguZSA8PSBDdG9yLnRvRXhwTmVnIHx8IHguZSA+PSBDdG9yLnRvRXhwUG9zKTtcclxuXHJcbiAgICByZXR1cm4geC5pc05lZygpID8gJy0nICsgc3RyIDogc3RyO1xyXG4gIH07XHJcblxyXG5cclxuICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBEZWNpbWFsLnByb3RvdHlwZSAoUCkgYW5kL29yIERlY2ltYWwgbWV0aG9kcywgYW5kIHRoZWlyIGNhbGxlcnMuXHJcblxyXG5cclxuICAvKlxyXG4gICAqICBkaWdpdHNUb1N0cmluZyAgICAgICAgICAgUC5jdWJlUm9vdCwgUC5sb2dhcml0aG0sIFAuc3F1YXJlUm9vdCwgUC50b0ZyYWN0aW9uLCBQLnRvUG93ZXIsXHJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5pdGVUb1N0cmluZywgbmF0dXJhbEV4cG9uZW50aWFsLCBuYXR1cmFsTG9nYXJpdGhtXHJcbiAgICogIGNoZWNrSW50MzIgICAgICAgICAgICAgICBQLnRvRGVjaW1hbFBsYWNlcywgUC50b0V4cG9uZW50aWFsLCBQLnRvRml4ZWQsIFAudG9OZWFyZXN0LFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgUC50b1ByZWNpc2lvbiwgUC50b1NpZ25pZmljYW50RGlnaXRzLCB0b1N0cmluZ0JpbmFyeSwgcmFuZG9tXHJcbiAgICogIGNoZWNrUm91bmRpbmdEaWdpdHMgICAgICBQLmxvZ2FyaXRobSwgUC50b1Bvd2VyLCBuYXR1cmFsRXhwb25lbnRpYWwsIG5hdHVyYWxMb2dhcml0aG1cclxuICAgKiAgY29udmVydEJhc2UgICAgICAgICAgICAgIHRvU3RyaW5nQmluYXJ5LCBwYXJzZU90aGVyXHJcbiAgICogIGNvcyAgICAgICAgICAgICAgICAgICAgICBQLmNvc1xyXG4gICAqICBkaXZpZGUgICAgICAgICAgICAgICAgICAgUC5hdGFuaCwgUC5jdWJlUm9vdCwgUC5kaXZpZGVkQnksIFAuZGl2aWRlZFRvSW50ZWdlckJ5LFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgUC5sb2dhcml0aG0sIFAubW9kdWxvLCBQLnNxdWFyZVJvb3QsIFAudGFuLCBQLnRhbmgsIFAudG9GcmFjdGlvbixcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFAudG9OZWFyZXN0LCB0b1N0cmluZ0JpbmFyeSwgbmF0dXJhbEV4cG9uZW50aWFsLCBuYXR1cmFsTG9nYXJpdGhtLFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF5bG9yU2VyaWVzLCBhdGFuMiwgcGFyc2VPdGhlclxyXG4gICAqICBmaW5hbGlzZSAgICAgICAgICAgICAgICAgUC5hYnNvbHV0ZVZhbHVlLCBQLmF0YW4sIFAuYXRhbmgsIFAuY2VpbCwgUC5jb3MsIFAuY29zaCxcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFAuY3ViZVJvb3QsIFAuZGl2aWRlZFRvSW50ZWdlckJ5LCBQLmZsb29yLCBQLmxvZ2FyaXRobSwgUC5taW51cyxcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFAubW9kdWxvLCBQLm5lZ2F0ZWQsIFAucGx1cywgUC5yb3VuZCwgUC5zaW4sIFAuc2luaCwgUC5zcXVhcmVSb290LFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgUC50YW4sIFAudGltZXMsIFAudG9EZWNpbWFsUGxhY2VzLCBQLnRvRXhwb25lbnRpYWwsIFAudG9GaXhlZCxcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFAudG9OZWFyZXN0LCBQLnRvUG93ZXIsIFAudG9QcmVjaXNpb24sIFAudG9TaWduaWZpY2FudERpZ2l0cyxcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFAudHJ1bmNhdGVkLCBkaXZpZGUsIGdldExuMTAsIGdldFBpLCBuYXR1cmFsRXhwb25lbnRpYWwsXHJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBuYXR1cmFsTG9nYXJpdGhtLCBjZWlsLCBmbG9vciwgcm91bmQsIHRydW5jXHJcbiAgICogIGZpbml0ZVRvU3RyaW5nICAgICAgICAgICBQLnRvRXhwb25lbnRpYWwsIFAudG9GaXhlZCwgUC50b1ByZWNpc2lvbiwgUC50b1N0cmluZywgUC52YWx1ZU9mLFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9TdHJpbmdCaW5hcnlcclxuICAgKiAgZ2V0QmFzZTEwRXhwb25lbnQgICAgICAgIFAubWludXMsIFAucGx1cywgUC50aW1lcywgcGFyc2VPdGhlclxyXG4gICAqICBnZXRMbjEwICAgICAgICAgICAgICAgICAgUC5sb2dhcml0aG0sIG5hdHVyYWxMb2dhcml0aG1cclxuICAgKiAgZ2V0UGkgICAgICAgICAgICAgICAgICAgIFAuYWNvcywgUC5hc2luLCBQLmF0YW4sIHRvTGVzc1RoYW5IYWxmUGksIGF0YW4yXHJcbiAgICogIGdldFByZWNpc2lvbiAgICAgICAgICAgICBQLnByZWNpc2lvbiwgUC50b0ZyYWN0aW9uXHJcbiAgICogIGdldFplcm9TdHJpbmcgICAgICAgICAgICBkaWdpdHNUb1N0cmluZywgZmluaXRlVG9TdHJpbmdcclxuICAgKiAgaW50UG93ICAgICAgICAgICAgICAgICAgIFAudG9Qb3dlciwgcGFyc2VPdGhlclxyXG4gICAqICBpc09kZCAgICAgICAgICAgICAgICAgICAgdG9MZXNzVGhhbkhhbGZQaVxyXG4gICAqICBtYXhPck1pbiAgICAgICAgICAgICAgICAgbWF4LCBtaW5cclxuICAgKiAgbmF0dXJhbEV4cG9uZW50aWFsICAgICAgIFAubmF0dXJhbEV4cG9uZW50aWFsLCBQLnRvUG93ZXJcclxuICAgKiAgbmF0dXJhbExvZ2FyaXRobSAgICAgICAgIFAuYWNvc2gsIFAuYXNpbmgsIFAuYXRhbmgsIFAubG9nYXJpdGhtLCBQLm5hdHVyYWxMb2dhcml0aG0sXHJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBQLnRvUG93ZXIsIG5hdHVyYWxFeHBvbmVudGlhbFxyXG4gICAqICBub25GaW5pdGVUb1N0cmluZyAgICAgICAgZmluaXRlVG9TdHJpbmcsIHRvU3RyaW5nQmluYXJ5XHJcbiAgICogIHBhcnNlRGVjaW1hbCAgICAgICAgICAgICBEZWNpbWFsXHJcbiAgICogIHBhcnNlT3RoZXIgICAgICAgICAgICAgICBEZWNpbWFsXHJcbiAgICogIHNpbiAgICAgICAgICAgICAgICAgICAgICBQLnNpblxyXG4gICAqICB0YXlsb3JTZXJpZXMgICAgICAgICAgICAgUC5jb3NoLCBQLnNpbmgsIGNvcywgc2luXHJcbiAgICogIHRvTGVzc1RoYW5IYWxmUGkgICAgICAgICBQLmNvcywgUC5zaW5cclxuICAgKiAgdG9TdHJpbmdCaW5hcnkgICAgICAgICAgIFAudG9CaW5hcnksIFAudG9IZXhhZGVjaW1hbCwgUC50b09jdGFsXHJcbiAgICogIHRydW5jYXRlICAgICAgICAgICAgICAgICBpbnRQb3dcclxuICAgKlxyXG4gICAqICBUaHJvd3M6ICAgICAgICAgICAgICAgICAgUC5sb2dhcml0aG0sIFAucHJlY2lzaW9uLCBQLnRvRnJhY3Rpb24sIGNoZWNrSW50MzIsIGdldExuMTAsIGdldFBpLFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0dXJhbExvZ2FyaXRobSwgY29uZmlnLCBwYXJzZU90aGVyLCByYW5kb20sIERlY2ltYWxcclxuICAgKi9cclxuXHJcblxyXG4gIGZ1bmN0aW9uIGRpZ2l0c1RvU3RyaW5nKGQpIHtcclxuICAgIHZhciBpLCBrLCB3cyxcclxuICAgICAgaW5kZXhPZkxhc3RXb3JkID0gZC5sZW5ndGggLSAxLFxyXG4gICAgICBzdHIgPSAnJyxcclxuICAgICAgdyA9IGRbMF07XHJcblxyXG4gICAgaWYgKGluZGV4T2ZMYXN0V29yZCA+IDApIHtcclxuICAgICAgc3RyICs9IHc7XHJcbiAgICAgIGZvciAoaSA9IDE7IGkgPCBpbmRleE9mTGFzdFdvcmQ7IGkrKykge1xyXG4gICAgICAgIHdzID0gZFtpXSArICcnO1xyXG4gICAgICAgIGsgPSBMT0dfQkFTRSAtIHdzLmxlbmd0aDtcclxuICAgICAgICBpZiAoaykgc3RyICs9IGdldFplcm9TdHJpbmcoayk7XHJcbiAgICAgICAgc3RyICs9IHdzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB3ID0gZFtpXTtcclxuICAgICAgd3MgPSB3ICsgJyc7XHJcbiAgICAgIGsgPSBMT0dfQkFTRSAtIHdzLmxlbmd0aDtcclxuICAgICAgaWYgKGspIHN0ciArPSBnZXRaZXJvU3RyaW5nKGspO1xyXG4gICAgfSBlbHNlIGlmICh3ID09PSAwKSB7XHJcbiAgICAgIHJldHVybiAnMCc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zIG9mIGxhc3Qgdy5cclxuICAgIGZvciAoOyB3ICUgMTAgPT09IDA7KSB3IC89IDEwO1xyXG5cclxuICAgIHJldHVybiBzdHIgKyB3O1xyXG4gIH1cclxuXHJcblxyXG4gIGZ1bmN0aW9uIGNoZWNrSW50MzIoaSwgbWluLCBtYXgpIHtcclxuICAgIGlmIChpICE9PSB+fmkgfHwgaSA8IG1pbiB8fCBpID4gbWF4KSB7XHJcbiAgICAgIHRocm93IEVycm9yKGludmFsaWRBcmd1bWVudCArIGkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogQ2hlY2sgNSByb3VuZGluZyBkaWdpdHMgaWYgYHJlcGVhdGluZ2AgaXMgbnVsbCwgNCBvdGhlcndpc2UuXHJcbiAgICogYHJlcGVhdGluZyA9PSBudWxsYCBpZiBjYWxsZXIgaXMgYGxvZ2Agb3IgYHBvd2AsXHJcbiAgICogYHJlcGVhdGluZyAhPSBudWxsYCBpZiBjYWxsZXIgaXMgYG5hdHVyYWxMb2dhcml0aG1gIG9yIGBuYXR1cmFsRXhwb25lbnRpYWxgLlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNoZWNrUm91bmRpbmdEaWdpdHMoZCwgaSwgcm0sIHJlcGVhdGluZykge1xyXG4gICAgdmFyIGRpLCBrLCByLCByZDtcclxuXHJcbiAgICAvLyBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgYXJyYXkgZC5cclxuICAgIGZvciAoayA9IGRbMF07IGsgPj0gMTA7IGsgLz0gMTApIC0taTtcclxuXHJcbiAgICAvLyBJcyB0aGUgcm91bmRpbmcgZGlnaXQgaW4gdGhlIGZpcnN0IHdvcmQgb2YgZD9cclxuICAgIGlmICgtLWkgPCAwKSB7XHJcbiAgICAgIGkgKz0gTE9HX0JBU0U7XHJcbiAgICAgIGRpID0gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRpID0gTWF0aC5jZWlsKChpICsgMSkgLyBMT0dfQkFTRSk7XHJcbiAgICAgIGkgJT0gTE9HX0JBU0U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaSBpcyB0aGUgaW5kZXggKDAgLSA2KSBvZiB0aGUgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAvLyBFLmcuIGlmIHdpdGhpbiB0aGUgd29yZCAzNDg3NTYzIHRoZSBmaXJzdCByb3VuZGluZyBkaWdpdCBpcyA1LFxyXG4gICAgLy8gdGhlbiBpID0gNCwgayA9IDEwMDAsIHJkID0gMzQ4NzU2MyAlIDEwMDAgPSA1NjNcclxuICAgIGsgPSBtYXRocG93KDEwLCBMT0dfQkFTRSAtIGkpO1xyXG4gICAgcmQgPSBkW2RpXSAlIGsgfCAwO1xyXG5cclxuICAgIGlmIChyZXBlYXRpbmcgPT0gbnVsbCkge1xyXG4gICAgICBpZiAoaSA8IDMpIHtcclxuICAgICAgICBpZiAoaSA9PSAwKSByZCA9IHJkIC8gMTAwIHwgMDtcclxuICAgICAgICBlbHNlIGlmIChpID09IDEpIHJkID0gcmQgLyAxMCB8IDA7XHJcbiAgICAgICAgciA9IHJtIDwgNCAmJiByZCA9PSA5OTk5OSB8fCBybSA+IDMgJiYgcmQgPT0gNDk5OTkgfHwgcmQgPT0gNTAwMDAgfHwgcmQgPT0gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByID0gKHJtIDwgNCAmJiByZCArIDEgPT0gayB8fCBybSA+IDMgJiYgcmQgKyAxID09IGsgLyAyKSAmJlxyXG4gICAgICAgICAgKGRbZGkgKyAxXSAvIGsgLyAxMDAgfCAwKSA9PSBtYXRocG93KDEwLCBpIC0gMikgLSAxIHx8XHJcbiAgICAgICAgICAgIChyZCA9PSBrIC8gMiB8fCByZCA9PSAwKSAmJiAoZFtkaSArIDFdIC8gayAvIDEwMCB8IDApID09IDA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpIDwgNCkge1xyXG4gICAgICAgIGlmIChpID09IDApIHJkID0gcmQgLyAxMDAwIHwgMDtcclxuICAgICAgICBlbHNlIGlmIChpID09IDEpIHJkID0gcmQgLyAxMDAgfCAwO1xyXG4gICAgICAgIGVsc2UgaWYgKGkgPT0gMikgcmQgPSByZCAvIDEwIHwgMDtcclxuICAgICAgICByID0gKHJlcGVhdGluZyB8fCBybSA8IDQpICYmIHJkID09IDk5OTkgfHwgIXJlcGVhdGluZyAmJiBybSA+IDMgJiYgcmQgPT0gNDk5OTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByID0gKChyZXBlYXRpbmcgfHwgcm0gPCA0KSAmJiByZCArIDEgPT0gayB8fFxyXG4gICAgICAgICghcmVwZWF0aW5nICYmIHJtID4gMykgJiYgcmQgKyAxID09IGsgLyAyKSAmJlxyXG4gICAgICAgICAgKGRbZGkgKyAxXSAvIGsgLyAxMDAwIHwgMCkgPT0gbWF0aHBvdygxMCwgaSAtIDMpIC0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIENvbnZlcnQgc3RyaW5nIG9mIGBiYXNlSW5gIHRvIGFuIGFycmF5IG9mIG51bWJlcnMgb2YgYGJhc2VPdXRgLlxyXG4gIC8vIEVnLiBjb252ZXJ0QmFzZSgnMjU1JywgMTAsIDE2KSByZXR1cm5zIFsxNSwgMTVdLlxyXG4gIC8vIEVnLiBjb252ZXJ0QmFzZSgnZmYnLCAxNiwgMTApIHJldHVybnMgWzIsIDUsIDVdLlxyXG4gIGZ1bmN0aW9uIGNvbnZlcnRCYXNlKHN0ciwgYmFzZUluLCBiYXNlT3V0KSB7XHJcbiAgICB2YXIgaixcclxuICAgICAgYXJyID0gWzBdLFxyXG4gICAgICBhcnJMLFxyXG4gICAgICBpID0gMCxcclxuICAgICAgc3RyTCA9IHN0ci5sZW5ndGg7XHJcblxyXG4gICAgZm9yICg7IGkgPCBzdHJMOykge1xyXG4gICAgICBmb3IgKGFyckwgPSBhcnIubGVuZ3RoOyBhcnJMLS07KSBhcnJbYXJyTF0gKj0gYmFzZUluO1xyXG4gICAgICBhcnJbMF0gKz0gTlVNRVJBTFMuaW5kZXhPZihzdHIuY2hhckF0KGkrKykpO1xyXG4gICAgICBmb3IgKGogPSAwOyBqIDwgYXJyLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgaWYgKGFycltqXSA+IGJhc2VPdXQgLSAxKSB7XHJcbiAgICAgICAgICBpZiAoYXJyW2ogKyAxXSA9PT0gdm9pZCAwKSBhcnJbaiArIDFdID0gMDtcclxuICAgICAgICAgIGFycltqICsgMV0gKz0gYXJyW2pdIC8gYmFzZU91dCB8IDA7XHJcbiAgICAgICAgICBhcnJbal0gJT0gYmFzZU91dDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYXJyLnJldmVyc2UoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIGNvcyh4KSA9IDEgLSB4XjIvMiEgKyB4XjQvNCEgLSAuLi5cclxuICAgKiB8eHwgPCBwaS8yXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBjb3NpbmUoQ3RvciwgeCkge1xyXG4gICAgdmFyIGssIGxlbiwgeTtcclxuXHJcbiAgICBpZiAoeC5pc1plcm8oKSkgcmV0dXJuIHg7XHJcblxyXG4gICAgLy8gQXJndW1lbnQgcmVkdWN0aW9uOiBjb3MoNHgpID0gOCooY29zXjQoeCkgLSBjb3NeMih4KSkgKyAxXHJcbiAgICAvLyBpLmUuIGNvcyh4KSA9IDgqKGNvc140KHgvNCkgLSBjb3NeMih4LzQpKSArIDFcclxuXHJcbiAgICAvLyBFc3RpbWF0ZSB0aGUgb3B0aW11bSBudW1iZXIgb2YgdGltZXMgdG8gdXNlIHRoZSBhcmd1bWVudCByZWR1Y3Rpb24uXHJcbiAgICBsZW4gPSB4LmQubGVuZ3RoO1xyXG4gICAgaWYgKGxlbiA8IDMyKSB7XHJcbiAgICAgIGsgPSBNYXRoLmNlaWwobGVuIC8gMyk7XHJcbiAgICAgIHkgPSAoMSAvIHRpbnlQb3coNCwgaykpLnRvU3RyaW5nKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBrID0gMTY7XHJcbiAgICAgIHkgPSAnMi4zMjgzMDY0MzY1Mzg2OTYyODkwNjI1ZS0xMCc7XHJcbiAgICB9XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gKz0gaztcclxuXHJcbiAgICB4ID0gdGF5bG9yU2VyaWVzKEN0b3IsIDEsIHgudGltZXMoeSksIG5ldyBDdG9yKDEpKTtcclxuXHJcbiAgICAvLyBSZXZlcnNlIGFyZ3VtZW50IHJlZHVjdGlvblxyXG4gICAgZm9yICh2YXIgaSA9IGs7IGktLTspIHtcclxuICAgICAgdmFyIGNvczJ4ID0geC50aW1lcyh4KTtcclxuICAgICAgeCA9IGNvczJ4LnRpbWVzKGNvczJ4KS5taW51cyhjb3MyeCkudGltZXMoOCkucGx1cygxKTtcclxuICAgIH1cclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiAtPSBrO1xyXG5cclxuICAgIHJldHVybiB4O1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUGVyZm9ybSBkaXZpc2lvbiBpbiB0aGUgc3BlY2lmaWVkIGJhc2UuXHJcbiAgICovXHJcbiAgdmFyIGRpdmlkZSA9IChmdW5jdGlvbiAoKSB7XHJcblxyXG4gICAgLy8gQXNzdW1lcyBub24temVybyB4IGFuZCBrLCBhbmQgaGVuY2Ugbm9uLXplcm8gcmVzdWx0LlxyXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlJbnRlZ2VyKHgsIGssIGJhc2UpIHtcclxuICAgICAgdmFyIHRlbXAsXHJcbiAgICAgICAgY2FycnkgPSAwLFxyXG4gICAgICAgIGkgPSB4Lmxlbmd0aDtcclxuXHJcbiAgICAgIGZvciAoeCA9IHguc2xpY2UoKTsgaS0tOykge1xyXG4gICAgICAgIHRlbXAgPSB4W2ldICogayArIGNhcnJ5O1xyXG4gICAgICAgIHhbaV0gPSB0ZW1wICUgYmFzZSB8IDA7XHJcbiAgICAgICAgY2FycnkgPSB0ZW1wIC8gYmFzZSB8IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjYXJyeSkgeC51bnNoaWZ0KGNhcnJ5KTtcclxuXHJcbiAgICAgIHJldHVybiB4O1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGNvbXBhcmUoYSwgYiwgYUwsIGJMKSB7XHJcbiAgICAgIHZhciBpLCByO1xyXG5cclxuICAgICAgaWYgKGFMICE9IGJMKSB7XHJcbiAgICAgICAgciA9IGFMID4gYkwgPyAxIDogLTE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChpID0gciA9IDA7IGkgPCBhTDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoYVtpXSAhPSBiW2ldKSB7XHJcbiAgICAgICAgICAgIHIgPSBhW2ldID4gYltpXSA/IDEgOiAtMTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gcjtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBzdWJ0cmFjdChhLCBiLCBhTCwgYmFzZSkge1xyXG4gICAgICB2YXIgaSA9IDA7XHJcblxyXG4gICAgICAvLyBTdWJ0cmFjdCBiIGZyb20gYS5cclxuICAgICAgZm9yICg7IGFMLS07KSB7XHJcbiAgICAgICAgYVthTF0gLT0gaTtcclxuICAgICAgICBpID0gYVthTF0gPCBiW2FMXSA/IDEgOiAwO1xyXG4gICAgICAgIGFbYUxdID0gaSAqIGJhc2UgKyBhW2FMXSAtIGJbYUxdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZW1vdmUgbGVhZGluZyB6ZXJvcy5cclxuICAgICAgZm9yICg7ICFhWzBdICYmIGEubGVuZ3RoID4gMTspIGEuc2hpZnQoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHgsIHksIHByLCBybSwgZHAsIGJhc2UpIHtcclxuICAgICAgdmFyIGNtcCwgZSwgaSwgaywgbG9nQmFzZSwgbW9yZSwgcHJvZCwgcHJvZEwsIHEsIHFkLCByZW0sIHJlbUwsIHJlbTAsIHNkLCB0LCB4aSwgeEwsIHlkMCxcclxuICAgICAgICB5TCwgeXosXHJcbiAgICAgICAgQ3RvciA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgICAgc2lnbiA9IHgucyA9PSB5LnMgPyAxIDogLTEsXHJcbiAgICAgICAgeGQgPSB4LmQsXHJcbiAgICAgICAgeWQgPSB5LmQ7XHJcblxyXG4gICAgICAvLyBFaXRoZXIgTmFOLCBJbmZpbml0eSBvciAwP1xyXG4gICAgICBpZiAoIXhkIHx8ICF4ZFswXSB8fCAheWQgfHwgIXlkWzBdKSB7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgQ3RvcigvLyBSZXR1cm4gTmFOIGlmIGVpdGhlciBOYU4sIG9yIGJvdGggSW5maW5pdHkgb3IgMC5cclxuICAgICAgICAgICF4LnMgfHwgIXkucyB8fCAoeGQgPyB5ZCAmJiB4ZFswXSA9PSB5ZFswXSA6ICF5ZCkgPyBOYU4gOlxyXG5cclxuICAgICAgICAgIC8vIFJldHVybiDCsTAgaWYgeCBpcyAwIG9yIHkgaXMgwrFJbmZpbml0eSwgb3IgcmV0dXJuIMKxSW5maW5pdHkgYXMgeSBpcyAwLlxyXG4gICAgICAgICAgeGQgJiYgeGRbMF0gPT0gMCB8fCAheWQgPyBzaWduICogMCA6IHNpZ24gLyAwKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGJhc2UpIHtcclxuICAgICAgICBsb2dCYXNlID0gMTtcclxuICAgICAgICBlID0geC5lIC0geS5lO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGJhc2UgPSBCQVNFO1xyXG4gICAgICAgIGxvZ0Jhc2UgPSBMT0dfQkFTRTtcclxuICAgICAgICBlID0gbWF0aGZsb29yKHguZSAvIGxvZ0Jhc2UpIC0gbWF0aGZsb29yKHkuZSAvIGxvZ0Jhc2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB5TCA9IHlkLmxlbmd0aDtcclxuICAgICAgeEwgPSB4ZC5sZW5ndGg7XHJcbiAgICAgIHEgPSBuZXcgQ3RvcihzaWduKTtcclxuICAgICAgcWQgPSBxLmQgPSBbXTtcclxuXHJcbiAgICAgIC8vIFJlc3VsdCBleHBvbmVudCBtYXkgYmUgb25lIGxlc3MgdGhhbiBlLlxyXG4gICAgICAvLyBUaGUgZGlnaXQgYXJyYXkgb2YgYSBEZWNpbWFsIGZyb20gdG9TdHJpbmdCaW5hcnkgbWF5IGhhdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgIGZvciAoaSA9IDA7IHlkW2ldID09ICh4ZFtpXSB8fCAwKTsgaSsrKTtcclxuXHJcbiAgICAgIGlmICh5ZFtpXSA+ICh4ZFtpXSB8fCAwKSkgZS0tO1xyXG5cclxuICAgICAgaWYgKHByID09IG51bGwpIHtcclxuICAgICAgICBzZCA9IHByID0gQ3Rvci5wcmVjaXNpb247XHJcbiAgICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgICB9IGVsc2UgaWYgKGRwKSB7XHJcbiAgICAgICAgc2QgPSBwciArICh4LmUgLSB5LmUpICsgMTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZCA9IHByO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoc2QgPCAwKSB7XHJcbiAgICAgICAgcWQucHVzaCgxKTtcclxuICAgICAgICBtb3JlID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgLy8gQ29udmVydCBwcmVjaXNpb24gaW4gbnVtYmVyIG9mIGJhc2UgMTAgZGlnaXRzIHRvIGJhc2UgMWU3IGRpZ2l0cy5cclxuICAgICAgICBzZCA9IHNkIC8gbG9nQmFzZSArIDIgfCAwO1xyXG4gICAgICAgIGkgPSAwO1xyXG5cclxuICAgICAgICAvLyBkaXZpc29yIDwgMWU3XHJcbiAgICAgICAgaWYgKHlMID09IDEpIHtcclxuICAgICAgICAgIGsgPSAwO1xyXG4gICAgICAgICAgeWQgPSB5ZFswXTtcclxuICAgICAgICAgIHNkKys7XHJcblxyXG4gICAgICAgICAgLy8gayBpcyB0aGUgY2FycnkuXHJcbiAgICAgICAgICBmb3IgKDsgKGkgPCB4TCB8fCBrKSAmJiBzZC0tOyBpKyspIHtcclxuICAgICAgICAgICAgdCA9IGsgKiBiYXNlICsgKHhkW2ldIHx8IDApO1xyXG4gICAgICAgICAgICBxZFtpXSA9IHQgLyB5ZCB8IDA7XHJcbiAgICAgICAgICAgIGsgPSB0ICUgeWQgfCAwO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIG1vcmUgPSBrIHx8IGkgPCB4TDtcclxuXHJcbiAgICAgICAgLy8gZGl2aXNvciA+PSAxZTdcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIE5vcm1hbGlzZSB4ZCBhbmQgeWQgc28gaGlnaGVzdCBvcmRlciBkaWdpdCBvZiB5ZCBpcyA+PSBiYXNlLzJcclxuICAgICAgICAgIGsgPSBiYXNlIC8gKHlkWzBdICsgMSkgfCAwO1xyXG5cclxuICAgICAgICAgIGlmIChrID4gMSkge1xyXG4gICAgICAgICAgICB5ZCA9IG11bHRpcGx5SW50ZWdlcih5ZCwgaywgYmFzZSk7XHJcbiAgICAgICAgICAgIHhkID0gbXVsdGlwbHlJbnRlZ2VyKHhkLCBrLCBiYXNlKTtcclxuICAgICAgICAgICAgeUwgPSB5ZC5sZW5ndGg7XHJcbiAgICAgICAgICAgIHhMID0geGQubGVuZ3RoO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHhpID0geUw7XHJcbiAgICAgICAgICByZW0gPSB4ZC5zbGljZSgwLCB5TCk7XHJcbiAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAvLyBBZGQgemVyb3MgdG8gbWFrZSByZW1haW5kZXIgYXMgbG9uZyBhcyBkaXZpc29yLlxyXG4gICAgICAgICAgZm9yICg7IHJlbUwgPCB5TDspIHJlbVtyZW1MKytdID0gMDtcclxuXHJcbiAgICAgICAgICB5eiA9IHlkLnNsaWNlKCk7XHJcbiAgICAgICAgICB5ei51bnNoaWZ0KDApO1xyXG4gICAgICAgICAgeWQwID0geWRbMF07XHJcblxyXG4gICAgICAgICAgaWYgKHlkWzFdID49IGJhc2UgLyAyKSArK3lkMDtcclxuXHJcbiAgICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgIGsgPSAwO1xyXG5cclxuICAgICAgICAgICAgLy8gQ29tcGFyZSBkaXZpc29yIGFuZCByZW1haW5kZXIuXHJcbiAgICAgICAgICAgIGNtcCA9IGNvbXBhcmUoeWQsIHJlbSwgeUwsIHJlbUwpO1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgZGl2aXNvciA8IHJlbWFpbmRlci5cclxuICAgICAgICAgICAgaWYgKGNtcCA8IDApIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRyaWFsIGRpZ2l0LCBrLlxyXG4gICAgICAgICAgICAgIHJlbTAgPSByZW1bMF07XHJcbiAgICAgICAgICAgICAgaWYgKHlMICE9IHJlbUwpIHJlbTAgPSByZW0wICogYmFzZSArIChyZW1bMV0gfHwgMCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIGsgd2lsbCBiZSBob3cgbWFueSB0aW1lcyB0aGUgZGl2aXNvciBnb2VzIGludG8gdGhlIGN1cnJlbnQgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIGsgPSByZW0wIC8geWQwIHwgMDtcclxuXHJcbiAgICAgICAgICAgICAgLy8gIEFsZ29yaXRobTpcclxuICAgICAgICAgICAgICAvLyAgMS4gcHJvZHVjdCA9IGRpdmlzb3IgKiB0cmlhbCBkaWdpdCAoaylcclxuICAgICAgICAgICAgICAvLyAgMi4gaWYgcHJvZHVjdCA+IHJlbWFpbmRlcjogcHJvZHVjdCAtPSBkaXZpc29yLCBrLS1cclxuICAgICAgICAgICAgICAvLyAgMy4gcmVtYWluZGVyIC09IHByb2R1Y3RcclxuICAgICAgICAgICAgICAvLyAgNC4gaWYgcHJvZHVjdCB3YXMgPCByZW1haW5kZXIgYXQgMjpcclxuICAgICAgICAgICAgICAvLyAgICA1LiBjb21wYXJlIG5ldyByZW1haW5kZXIgYW5kIGRpdmlzb3JcclxuICAgICAgICAgICAgICAvLyAgICA2LiBJZiByZW1haW5kZXIgPiBkaXZpc29yOiByZW1haW5kZXIgLT0gZGl2aXNvciwgaysrXHJcblxyXG4gICAgICAgICAgICAgIGlmIChrID4gMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGsgPj0gYmFzZSkgayA9IGJhc2UgLSAxO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIHByb2R1Y3QgPSBkaXZpc29yICogdHJpYWwgZGlnaXQuXHJcbiAgICAgICAgICAgICAgICBwcm9kID0gbXVsdGlwbHlJbnRlZ2VyKHlkLCBrLCBiYXNlKTtcclxuICAgICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb21wYXJlIHByb2R1Y3QgYW5kIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIGNtcCA9IGNvbXBhcmUocHJvZCwgcmVtLCBwcm9kTCwgcmVtTCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gcHJvZHVjdCA+IHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIGlmIChjbXAgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICBrLS07XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBTdWJ0cmFjdCBkaXZpc29yIGZyb20gcHJvZHVjdC5cclxuICAgICAgICAgICAgICAgICAgc3VidHJhY3QocHJvZCwgeUwgPCBwcm9kTCA/IHl6IDogeWQsIHByb2RMLCBiYXNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGNtcCBpcyAtMS5cclxuICAgICAgICAgICAgICAgIC8vIElmIGsgaXMgMCwgdGhlcmUgaXMgbm8gbmVlZCB0byBjb21wYXJlIHlkIGFuZCByZW0gYWdhaW4gYmVsb3csIHNvIGNoYW5nZSBjbXAgdG8gMVxyXG4gICAgICAgICAgICAgICAgLy8gdG8gYXZvaWQgaXQuIElmIGsgaXMgMSB0aGVyZSBpcyBhIG5lZWQgdG8gY29tcGFyZSB5ZCBhbmQgcmVtIGFnYWluIGJlbG93LlxyXG4gICAgICAgICAgICAgICAgaWYgKGsgPT0gMCkgY21wID0gayA9IDE7XHJcbiAgICAgICAgICAgICAgICBwcm9kID0geWQuc2xpY2UoKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgaWYgKHByb2RMIDwgcmVtTCkgcHJvZC51bnNoaWZ0KDApO1xyXG5cclxuICAgICAgICAgICAgICAvLyBTdWJ0cmFjdCBwcm9kdWN0IGZyb20gcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIHN1YnRyYWN0KHJlbSwgcHJvZCwgcmVtTCwgYmFzZSk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIElmIHByb2R1Y3Qgd2FzIDwgcHJldmlvdXMgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIGlmIChjbXAgPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHJlbUwgPSByZW0ubGVuZ3RoO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENvbXBhcmUgZGl2aXNvciBhbmQgbmV3IHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIGNtcCA9IGNvbXBhcmUoeWQsIHJlbSwgeUwsIHJlbUwpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIElmIGRpdmlzb3IgPCBuZXcgcmVtYWluZGVyLCBzdWJ0cmFjdCBkaXZpc29yIGZyb20gcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgICAgaWYgKGNtcCA8IDEpIHtcclxuICAgICAgICAgICAgICAgICAgaysrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gU3VidHJhY3QgZGl2aXNvciBmcm9tIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgICAgc3VidHJhY3QocmVtLCB5TCA8IHJlbUwgPyB5eiA6IHlkLCByZW1MLCBiYXNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHJlbUwgPSByZW0ubGVuZ3RoO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNtcCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgIGsrKztcclxuICAgICAgICAgICAgICByZW0gPSBbMF07XHJcbiAgICAgICAgICAgIH0gICAgLy8gaWYgY21wID09PSAxLCBrIHdpbGwgYmUgMFxyXG5cclxuICAgICAgICAgICAgLy8gQWRkIHRoZSBuZXh0IGRpZ2l0LCBrLCB0byB0aGUgcmVzdWx0IGFycmF5LlxyXG4gICAgICAgICAgICBxZFtpKytdID0gaztcclxuXHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICBpZiAoY21wICYmIHJlbVswXSkge1xyXG4gICAgICAgICAgICAgIHJlbVtyZW1MKytdID0geGRbeGldIHx8IDA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVtID0gW3hkW3hpXV07XHJcbiAgICAgICAgICAgICAgcmVtTCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9IHdoaWxlICgoeGkrKyA8IHhMIHx8IHJlbVswXSAhPT0gdm9pZCAwKSAmJiBzZC0tKTtcclxuXHJcbiAgICAgICAgICBtb3JlID0gcmVtWzBdICE9PSB2b2lkIDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBMZWFkaW5nIHplcm8/XHJcbiAgICAgICAgaWYgKCFxZFswXSkgcWQuc2hpZnQoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gbG9nQmFzZSBpcyAxIHdoZW4gZGl2aWRlIGlzIGJlaW5nIHVzZWQgZm9yIGJhc2UgY29udmVyc2lvbi5cclxuICAgICAgaWYgKGxvZ0Jhc2UgPT0gMSkge1xyXG4gICAgICAgIHEuZSA9IGU7XHJcbiAgICAgICAgaW5leGFjdCA9IG1vcmU7XHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIC8vIFRvIGNhbGN1bGF0ZSBxLmUsIGZpcnN0IGdldCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBxZFswXS5cclxuICAgICAgICBmb3IgKGkgPSAxLCBrID0gcWRbMF07IGsgPj0gMTA7IGsgLz0gMTApIGkrKztcclxuICAgICAgICBxLmUgPSBpICsgZSAqIGxvZ0Jhc2UgLSAxO1xyXG5cclxuICAgICAgICBmaW5hbGlzZShxLCBkcCA/IHByICsgcS5lICsgMSA6IHByLCBybSwgbW9yZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBxO1xyXG4gICAgfTtcclxuICB9KSgpO1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSb3VuZCBgeGAgdG8gYHNkYCBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm1gLlxyXG4gICAqIENoZWNrIGZvciBvdmVyL3VuZGVyLWZsb3cuXHJcbiAgICovXHJcbiAgIGZ1bmN0aW9uIGZpbmFsaXNlKHgsIHNkLCBybSwgaXNUcnVuY2F0ZWQpIHtcclxuICAgIHZhciBkaWdpdHMsIGksIGosIGssIHJkLCByb3VuZFVwLCB3LCB4ZCwgeGRpLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICAvLyBEb24ndCByb3VuZCBpZiBzZCBpcyBudWxsIG9yIHVuZGVmaW5lZC5cclxuICAgIG91dDogaWYgKHNkICE9IG51bGwpIHtcclxuICAgICAgeGQgPSB4LmQ7XHJcblxyXG4gICAgICAvLyBJbmZpbml0eS9OYU4uXHJcbiAgICAgIGlmICgheGQpIHJldHVybiB4O1xyXG5cclxuICAgICAgLy8gcmQ6IHRoZSByb3VuZGluZyBkaWdpdCwgaS5lLiB0aGUgZGlnaXQgYWZ0ZXIgdGhlIGRpZ2l0IHRoYXQgbWF5IGJlIHJvdW5kZWQgdXAuXHJcbiAgICAgIC8vIHc6IHRoZSB3b3JkIG9mIHhkIGNvbnRhaW5pbmcgcmQsIGEgYmFzZSAxZTcgbnVtYmVyLlxyXG4gICAgICAvLyB4ZGk6IHRoZSBpbmRleCBvZiB3IHdpdGhpbiB4ZC5cclxuICAgICAgLy8gZGlnaXRzOiB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiB3LlxyXG4gICAgICAvLyBpOiB3aGF0IHdvdWxkIGJlIHRoZSBpbmRleCBvZiByZCB3aXRoaW4gdyBpZiBhbGwgdGhlIG51bWJlcnMgd2VyZSA3IGRpZ2l0cyBsb25nIChpLmUuIGlmXHJcbiAgICAgIC8vIHRoZXkgaGFkIGxlYWRpbmcgemVyb3MpXHJcbiAgICAgIC8vIGo6IGlmID4gMCwgdGhlIGFjdHVhbCBpbmRleCBvZiByZCB3aXRoaW4gdyAoaWYgPCAwLCByZCBpcyBhIGxlYWRpbmcgemVybykuXHJcblxyXG4gICAgICAvLyBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgZGlnaXRzIGFycmF5IHhkLlxyXG4gICAgICBmb3IgKGRpZ2l0cyA9IDEsIGsgPSB4ZFswXTsgayA+PSAxMDsgayAvPSAxMCkgZGlnaXRzKys7XHJcbiAgICAgIGkgPSBzZCAtIGRpZ2l0cztcclxuXHJcbiAgICAgIC8vIElzIHRoZSByb3VuZGluZyBkaWdpdCBpbiB0aGUgZmlyc3Qgd29yZCBvZiB4ZD9cclxuICAgICAgaWYgKGkgPCAwKSB7XHJcbiAgICAgICAgaSArPSBMT0dfQkFTRTtcclxuICAgICAgICBqID0gc2Q7XHJcbiAgICAgICAgdyA9IHhkW3hkaSA9IDBdO1xyXG5cclxuICAgICAgICAvLyBHZXQgdGhlIHJvdW5kaW5nIGRpZ2l0IGF0IGluZGV4IGogb2Ygdy5cclxuICAgICAgICByZCA9IHcgLyBtYXRocG93KDEwLCBkaWdpdHMgLSBqIC0gMSkgJSAxMCB8IDA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgeGRpID0gTWF0aC5jZWlsKChpICsgMSkgLyBMT0dfQkFTRSk7XHJcbiAgICAgICAgayA9IHhkLmxlbmd0aDtcclxuICAgICAgICBpZiAoeGRpID49IGspIHtcclxuICAgICAgICAgIGlmIChpc1RydW5jYXRlZCkge1xyXG5cclxuICAgICAgICAgICAgLy8gTmVlZGVkIGJ5IGBuYXR1cmFsRXhwb25lbnRpYWxgLCBgbmF0dXJhbExvZ2FyaXRobWAgYW5kIGBzcXVhcmVSb290YC5cclxuICAgICAgICAgICAgZm9yICg7IGsrKyA8PSB4ZGk7KSB4ZC5wdXNoKDApO1xyXG4gICAgICAgICAgICB3ID0gcmQgPSAwO1xyXG4gICAgICAgICAgICBkaWdpdHMgPSAxO1xyXG4gICAgICAgICAgICBpICU9IExPR19CQVNFO1xyXG4gICAgICAgICAgICBqID0gaSAtIExPR19CQVNFICsgMTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGJyZWFrIG91dDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdyA9IGsgPSB4ZFt4ZGldO1xyXG5cclxuICAgICAgICAgIC8vIEdldCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiB3LlxyXG4gICAgICAgICAgZm9yIChkaWdpdHMgPSAxOyBrID49IDEwOyBrIC89IDEwKSBkaWdpdHMrKztcclxuXHJcbiAgICAgICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHJkIHdpdGhpbiB3LlxyXG4gICAgICAgICAgaSAlPSBMT0dfQkFTRTtcclxuXHJcbiAgICAgICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHJkIHdpdGhpbiB3LCBhZGp1c3RlZCBmb3IgbGVhZGluZyB6ZXJvcy5cclxuICAgICAgICAgIC8vIFRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvcyBvZiB3IGlzIGdpdmVuIGJ5IExPR19CQVNFIC0gZGlnaXRzLlxyXG4gICAgICAgICAgaiA9IGkgLSBMT0dfQkFTRSArIGRpZ2l0cztcclxuXHJcbiAgICAgICAgICAvLyBHZXQgdGhlIHJvdW5kaW5nIGRpZ2l0IGF0IGluZGV4IGogb2Ygdy5cclxuICAgICAgICAgIHJkID0gaiA8IDAgPyAwIDogdyAvIG1hdGhwb3coMTAsIGRpZ2l0cyAtIGogLSAxKSAlIDEwIHwgMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEFyZSB0aGVyZSBhbnkgbm9uLXplcm8gZGlnaXRzIGFmdGVyIHRoZSByb3VuZGluZyBkaWdpdD9cclxuICAgICAgaXNUcnVuY2F0ZWQgPSBpc1RydW5jYXRlZCB8fCBzZCA8IDAgfHxcclxuICAgICAgICB4ZFt4ZGkgKyAxXSAhPT0gdm9pZCAwIHx8IChqIDwgMCA/IHcgOiB3ICUgbWF0aHBvdygxMCwgZGlnaXRzIC0gaiAtIDEpKTtcclxuXHJcbiAgICAgIC8vIFRoZSBleHByZXNzaW9uIGB3ICUgbWF0aHBvdygxMCwgZGlnaXRzIC0gaiAtIDEpYCByZXR1cm5zIGFsbCB0aGUgZGlnaXRzIG9mIHcgdG8gdGhlIHJpZ2h0XHJcbiAgICAgIC8vIG9mIHRoZSBkaWdpdCBhdCAobGVmdC10by1yaWdodCkgaW5kZXggaiwgZS5nLiBpZiB3IGlzIDkwODcxNCBhbmQgaiBpcyAyLCB0aGUgZXhwcmVzc2lvblxyXG4gICAgICAvLyB3aWxsIGdpdmUgNzE0LlxyXG5cclxuICAgICAgcm91bmRVcCA9IHJtIDwgNFxyXG4gICAgICAgID8gKHJkIHx8IGlzVHJ1bmNhdGVkKSAmJiAocm0gPT0gMCB8fCBybSA9PSAoeC5zIDwgMCA/IDMgOiAyKSlcclxuICAgICAgICA6IHJkID4gNSB8fCByZCA9PSA1ICYmIChybSA9PSA0IHx8IGlzVHJ1bmNhdGVkIHx8IHJtID09IDYgJiZcclxuXHJcbiAgICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSBkaWdpdCB0byB0aGUgbGVmdCBvZiB0aGUgcm91bmRpbmcgZGlnaXQgaXMgb2RkLlxyXG4gICAgICAgICAgKChpID4gMCA/IGogPiAwID8gdyAvIG1hdGhwb3coMTAsIGRpZ2l0cyAtIGopIDogMCA6IHhkW3hkaSAtIDFdKSAlIDEwKSAmIDEgfHxcclxuICAgICAgICAgICAgcm0gPT0gKHgucyA8IDAgPyA4IDogNykpO1xyXG5cclxuICAgICAgaWYgKHNkIDwgMSB8fCAheGRbMF0pIHtcclxuICAgICAgICB4ZC5sZW5ndGggPSAwO1xyXG4gICAgICAgIGlmIChyb3VuZFVwKSB7XHJcblxyXG4gICAgICAgICAgLy8gQ29udmVydCBzZCB0byBkZWNpbWFsIHBsYWNlcy5cclxuICAgICAgICAgIHNkIC09IHguZSArIDE7XHJcblxyXG4gICAgICAgICAgLy8gMSwgMC4xLCAwLjAxLCAwLjAwMSwgMC4wMDAxIGV0Yy5cclxuICAgICAgICAgIHhkWzBdID0gbWF0aHBvdygxMCwgKExPR19CQVNFIC0gc2QgJSBMT0dfQkFTRSkgJSBMT0dfQkFTRSk7XHJcbiAgICAgICAgICB4LmUgPSAtc2QgfHwgMDtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgICB4ZFswXSA9IHguZSA9IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUmVtb3ZlIGV4Y2VzcyBkaWdpdHMuXHJcbiAgICAgIGlmIChpID09IDApIHtcclxuICAgICAgICB4ZC5sZW5ndGggPSB4ZGk7XHJcbiAgICAgICAgayA9IDE7XHJcbiAgICAgICAgeGRpLS07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgeGQubGVuZ3RoID0geGRpICsgMTtcclxuICAgICAgICBrID0gbWF0aHBvdygxMCwgTE9HX0JBU0UgLSBpKTtcclxuXHJcbiAgICAgICAgLy8gRS5nLiA1NjcwMCBiZWNvbWVzIDU2MDAwIGlmIDcgaXMgdGhlIHJvdW5kaW5nIGRpZ2l0LlxyXG4gICAgICAgIC8vIGogPiAwIG1lYW5zIGkgPiBudW1iZXIgb2YgbGVhZGluZyB6ZXJvcyBvZiB3LlxyXG4gICAgICAgIHhkW3hkaV0gPSBqID4gMCA/ICh3IC8gbWF0aHBvdygxMCwgZGlnaXRzIC0gaikgJSBtYXRocG93KDEwLCBqKSB8IDApICogayA6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChyb3VuZFVwKSB7XHJcbiAgICAgICAgZm9yICg7Oykge1xyXG5cclxuICAgICAgICAgIC8vIElzIHRoZSBkaWdpdCB0byBiZSByb3VuZGVkIHVwIGluIHRoZSBmaXJzdCB3b3JkIG9mIHhkP1xyXG4gICAgICAgICAgaWYgKHhkaSA9PSAwKSB7XHJcblxyXG4gICAgICAgICAgICAvLyBpIHdpbGwgYmUgdGhlIGxlbmd0aCBvZiB4ZFswXSBiZWZvcmUgayBpcyBhZGRlZC5cclxuICAgICAgICAgICAgZm9yIChpID0gMSwgaiA9IHhkWzBdOyBqID49IDEwOyBqIC89IDEwKSBpKys7XHJcbiAgICAgICAgICAgIGogPSB4ZFswXSArPSBrO1xyXG4gICAgICAgICAgICBmb3IgKGsgPSAxOyBqID49IDEwOyBqIC89IDEwKSBrKys7XHJcblxyXG4gICAgICAgICAgICAvLyBpZiBpICE9IGsgdGhlIGxlbmd0aCBoYXMgaW5jcmVhc2VkLlxyXG4gICAgICAgICAgICBpZiAoaSAhPSBrKSB7XHJcbiAgICAgICAgICAgICAgeC5lKys7XHJcbiAgICAgICAgICAgICAgaWYgKHhkWzBdID09IEJBU0UpIHhkWzBdID0gMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4ZFt4ZGldICs9IGs7XHJcbiAgICAgICAgICAgIGlmICh4ZFt4ZGldICE9IEJBU0UpIGJyZWFrO1xyXG4gICAgICAgICAgICB4ZFt4ZGktLV0gPSAwO1xyXG4gICAgICAgICAgICBrID0gMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFJlbW92ZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgZm9yIChpID0geGQubGVuZ3RoOyB4ZFstLWldID09PSAwOykgeGQucG9wKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGV4dGVybmFsKSB7XHJcblxyXG4gICAgICAvLyBPdmVyZmxvdz9cclxuICAgICAgaWYgKHguZSA+IEN0b3IubWF4RSkge1xyXG5cclxuICAgICAgICAvLyBJbmZpbml0eS5cclxuICAgICAgICB4LmQgPSBudWxsO1xyXG4gICAgICAgIHguZSA9IE5hTjtcclxuXHJcbiAgICAgIC8vIFVuZGVyZmxvdz9cclxuICAgICAgfSBlbHNlIGlmICh4LmUgPCBDdG9yLm1pbkUpIHtcclxuXHJcbiAgICAgICAgLy8gWmVyby5cclxuICAgICAgICB4LmUgPSAwO1xyXG4gICAgICAgIHguZCA9IFswXTtcclxuICAgICAgICAvLyBDdG9yLnVuZGVyZmxvdyA9IHRydWU7XHJcbiAgICAgIH0gLy8gZWxzZSBDdG9yLnVuZGVyZmxvdyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4O1xyXG4gIH1cclxuXHJcblxyXG4gIGZ1bmN0aW9uIGZpbml0ZVRvU3RyaW5nKHgsIGlzRXhwLCBzZCkge1xyXG4gICAgaWYgKCF4LmlzRmluaXRlKCkpIHJldHVybiBub25GaW5pdGVUb1N0cmluZyh4KTtcclxuICAgIHZhciBrLFxyXG4gICAgICBlID0geC5lLFxyXG4gICAgICBzdHIgPSBkaWdpdHNUb1N0cmluZyh4LmQpLFxyXG4gICAgICBsZW4gPSBzdHIubGVuZ3RoO1xyXG5cclxuICAgIGlmIChpc0V4cCkge1xyXG4gICAgICBpZiAoc2QgJiYgKGsgPSBzZCAtIGxlbikgPiAwKSB7XHJcbiAgICAgICAgc3RyID0gc3RyLmNoYXJBdCgwKSArICcuJyArIHN0ci5zbGljZSgxKSArIGdldFplcm9TdHJpbmcoayk7XHJcbiAgICAgIH0gZWxzZSBpZiAobGVuID4gMSkge1xyXG4gICAgICAgIHN0ciA9IHN0ci5jaGFyQXQoMCkgKyAnLicgKyBzdHIuc2xpY2UoMSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0ciA9IHN0ciArICh4LmUgPCAwID8gJ2UnIDogJ2UrJykgKyB4LmU7XHJcbiAgICB9IGVsc2UgaWYgKGUgPCAwKSB7XHJcbiAgICAgIHN0ciA9ICcwLicgKyBnZXRaZXJvU3RyaW5nKC1lIC0gMSkgKyBzdHI7XHJcbiAgICAgIGlmIChzZCAmJiAoayA9IHNkIC0gbGVuKSA+IDApIHN0ciArPSBnZXRaZXJvU3RyaW5nKGspO1xyXG4gICAgfSBlbHNlIGlmIChlID49IGxlbikge1xyXG4gICAgICBzdHIgKz0gZ2V0WmVyb1N0cmluZyhlICsgMSAtIGxlbik7XHJcbiAgICAgIGlmIChzZCAmJiAoayA9IHNkIC0gZSAtIDEpID4gMCkgc3RyID0gc3RyICsgJy4nICsgZ2V0WmVyb1N0cmluZyhrKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICgoayA9IGUgKyAxKSA8IGxlbikgc3RyID0gc3RyLnNsaWNlKDAsIGspICsgJy4nICsgc3RyLnNsaWNlKGspO1xyXG4gICAgICBpZiAoc2QgJiYgKGsgPSBzZCAtIGxlbikgPiAwKSB7XHJcbiAgICAgICAgaWYgKGUgKyAxID09PSBsZW4pIHN0ciArPSAnLic7XHJcbiAgICAgICAgc3RyICs9IGdldFplcm9TdHJpbmcoayk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIENhbGN1bGF0ZSB0aGUgYmFzZSAxMCBleHBvbmVudCBmcm9tIHRoZSBiYXNlIDFlNyBleHBvbmVudC5cclxuICBmdW5jdGlvbiBnZXRCYXNlMTBFeHBvbmVudChkaWdpdHMsIGUpIHtcclxuICAgIHZhciB3ID0gZGlnaXRzWzBdO1xyXG5cclxuICAgIC8vIEFkZCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgZGlnaXRzIGFycmF5LlxyXG4gICAgZm9yICggZSAqPSBMT0dfQkFTRTsgdyA+PSAxMDsgdyAvPSAxMCkgZSsrO1xyXG4gICAgcmV0dXJuIGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgZnVuY3Rpb24gZ2V0TG4xMChDdG9yLCBzZCwgcHIpIHtcclxuICAgIGlmIChzZCA+IExOMTBfUFJFQ0lTSU9OKSB7XHJcblxyXG4gICAgICAvLyBSZXNldCBnbG9iYWwgc3RhdGUgaW4gY2FzZSB0aGUgZXhjZXB0aW9uIGlzIGNhdWdodC5cclxuICAgICAgZXh0ZXJuYWwgPSB0cnVlO1xyXG4gICAgICBpZiAocHIpIEN0b3IucHJlY2lzaW9uID0gcHI7XHJcbiAgICAgIHRocm93IEVycm9yKHByZWNpc2lvbkxpbWl0RXhjZWVkZWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKG5ldyBDdG9yKExOMTApLCBzZCwgMSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZnVuY3Rpb24gZ2V0UGkoQ3Rvciwgc2QsIHJtKSB7XHJcbiAgICBpZiAoc2QgPiBQSV9QUkVDSVNJT04pIHRocm93IEVycm9yKHByZWNpc2lvbkxpbWl0RXhjZWVkZWQpO1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKG5ldyBDdG9yKFBJKSwgc2QsIHJtLCB0cnVlKTtcclxuICB9XHJcblxyXG5cclxuICBmdW5jdGlvbiBnZXRQcmVjaXNpb24oZGlnaXRzKSB7XHJcbiAgICB2YXIgdyA9IGRpZ2l0cy5sZW5ndGggLSAxLFxyXG4gICAgICBsZW4gPSB3ICogTE9HX0JBU0UgKyAxO1xyXG5cclxuICAgIHcgPSBkaWdpdHNbd107XHJcblxyXG4gICAgLy8gSWYgbm9uLXplcm8uLi5cclxuICAgIGlmICh3KSB7XHJcblxyXG4gICAgICAvLyBTdWJ0cmFjdCB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIHplcm9zIG9mIHRoZSBsYXN0IHdvcmQuXHJcbiAgICAgIGZvciAoOyB3ICUgMTAgPT0gMDsgdyAvPSAxMCkgbGVuLS07XHJcblxyXG4gICAgICAvLyBBZGQgdGhlIG51bWJlciBvZiBkaWdpdHMgb2YgdGhlIGZpcnN0IHdvcmQuXHJcbiAgICAgIGZvciAodyA9IGRpZ2l0c1swXTsgdyA+PSAxMDsgdyAvPSAxMCkgbGVuKys7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGxlbjtcclxuICB9XHJcblxyXG5cclxuICBmdW5jdGlvbiBnZXRaZXJvU3RyaW5nKGspIHtcclxuICAgIHZhciB6cyA9ICcnO1xyXG4gICAgZm9yICg7IGstLTspIHpzICs9ICcwJztcclxuICAgIHJldHVybiB6cztcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiBEZWNpbWFsIGB4YCB0byB0aGUgcG93ZXIgYG5gLCB3aGVyZSBgbmAgaXMgYW5cclxuICAgKiBpbnRlZ2VyIG9mIHR5cGUgbnVtYmVyLlxyXG4gICAqXHJcbiAgICogSW1wbGVtZW50cyAnZXhwb25lbnRpYXRpb24gYnkgc3F1YXJpbmcnLiBDYWxsZWQgYnkgYHBvd2AgYW5kIGBwYXJzZU90aGVyYC5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGludFBvdyhDdG9yLCB4LCBuLCBwcikge1xyXG4gICAgdmFyIGlzVHJ1bmNhdGVkLFxyXG4gICAgICByID0gbmV3IEN0b3IoMSksXHJcblxyXG4gICAgICAvLyBNYXggbiBvZiA5MDA3MTk5MjU0NzQwOTkxIHRha2VzIDUzIGxvb3AgaXRlcmF0aW9ucy5cclxuICAgICAgLy8gTWF4aW11bSBkaWdpdHMgYXJyYXkgbGVuZ3RoOyBsZWF2ZXMgWzI4LCAzNF0gZ3VhcmQgZGlnaXRzLlxyXG4gICAgICBrID0gTWF0aC5jZWlsKHByIC8gTE9HX0JBU0UgKyA0KTtcclxuXHJcbiAgICBleHRlcm5hbCA9IGZhbHNlO1xyXG5cclxuICAgIGZvciAoOzspIHtcclxuICAgICAgaWYgKG4gJSAyKSB7XHJcbiAgICAgICAgciA9IHIudGltZXMoeCk7XHJcbiAgICAgICAgaWYgKHRydW5jYXRlKHIuZCwgaykpIGlzVHJ1bmNhdGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbiA9IG1hdGhmbG9vcihuIC8gMik7XHJcbiAgICAgIGlmIChuID09PSAwKSB7XHJcblxyXG4gICAgICAgIC8vIFRvIGVuc3VyZSBjb3JyZWN0IHJvdW5kaW5nIHdoZW4gci5kIGlzIHRydW5jYXRlZCwgaW5jcmVtZW50IHRoZSBsYXN0IHdvcmQgaWYgaXQgaXMgemVyby5cclxuICAgICAgICBuID0gci5kLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgaWYgKGlzVHJ1bmNhdGVkICYmIHIuZFtuXSA9PT0gMCkgKytyLmRbbl07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHggPSB4LnRpbWVzKHgpO1xyXG4gICAgICB0cnVuY2F0ZSh4LmQsIGspO1xyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gcjtcclxuICB9XHJcblxyXG5cclxuICBmdW5jdGlvbiBpc09kZChuKSB7XHJcbiAgICByZXR1cm4gbi5kW24uZC5sZW5ndGggLSAxXSAmIDE7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBIYW5kbGUgYG1heGAgYW5kIGBtaW5gLiBgbHRndGAgaXMgJ2x0JyBvciAnZ3QnLlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIG1heE9yTWluKEN0b3IsIGFyZ3MsIGx0Z3QpIHtcclxuICAgIHZhciB5LFxyXG4gICAgICB4ID0gbmV3IEN0b3IoYXJnc1swXSksXHJcbiAgICAgIGkgPSAwO1xyXG5cclxuICAgIGZvciAoOyArK2kgPCBhcmdzLmxlbmd0aDspIHtcclxuICAgICAgeSA9IG5ldyBDdG9yKGFyZ3NbaV0pO1xyXG4gICAgICBpZiAoIXkucykge1xyXG4gICAgICAgIHggPSB5O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9IGVsc2UgaWYgKHhbbHRndF0oeSkpIHtcclxuICAgICAgICB4ID0geTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4O1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG5hdHVyYWwgZXhwb25lbnRpYWwgb2YgYHhgIHJvdW5kZWQgdG8gYHNkYCBzaWduaWZpY2FudFxyXG4gICAqIGRpZ2l0cy5cclxuICAgKlxyXG4gICAqIFRheWxvci9NYWNsYXVyaW4gc2VyaWVzLlxyXG4gICAqXHJcbiAgICogZXhwKHgpID0geF4wLzAhICsgeF4xLzEhICsgeF4yLzIhICsgeF4zLzMhICsgLi4uXHJcbiAgICpcclxuICAgKiBBcmd1bWVudCByZWR1Y3Rpb246XHJcbiAgICogICBSZXBlYXQgeCA9IHggLyAzMiwgayArPSA1LCB1bnRpbCB8eHwgPCAwLjFcclxuICAgKiAgIGV4cCh4KSA9IGV4cCh4IC8gMl5rKV4oMl5rKVxyXG4gICAqXHJcbiAgICogUHJldmlvdXNseSwgdGhlIGFyZ3VtZW50IHdhcyBpbml0aWFsbHkgcmVkdWNlZCBieVxyXG4gICAqIGV4cCh4KSA9IGV4cChyKSAqIDEwXmsgIHdoZXJlIHIgPSB4IC0gayAqIGxuMTAsIGsgPSBmbG9vcih4IC8gbG4xMClcclxuICAgKiB0byBmaXJzdCBwdXQgciBpbiB0aGUgcmFuZ2UgWzAsIGxuMTBdLCBiZWZvcmUgZGl2aWRpbmcgYnkgMzIgdW50aWwgfHh8IDwgMC4xLCBidXQgdGhpcyB3YXNcclxuICAgKiBmb3VuZCB0byBiZSBzbG93ZXIgdGhhbiBqdXN0IGRpdmlkaW5nIHJlcGVhdGVkbHkgYnkgMzIgYXMgYWJvdmUuXHJcbiAgICpcclxuICAgKiBNYXggaW50ZWdlciBhcmd1bWVudDogZXhwKCcyMDcyMzI2NTgzNjk0NjQxMycpID0gNi4zZSs5MDAwMDAwMDAwMDAwMDAwXHJcbiAgICogTWluIGludGVnZXIgYXJndW1lbnQ6IGV4cCgnLTIwNzIzMjY1ODM2OTQ2NDExJykgPSAxLjJlLTkwMDAwMDAwMDAwMDAwMDBcclxuICAgKiAoTWF0aCBvYmplY3QgaW50ZWdlciBtaW4vbWF4OiBNYXRoLmV4cCg3MDkpID0gOC4yZSszMDcsIE1hdGguZXhwKC03NDUpID0gNWUtMzI0KVxyXG4gICAqXHJcbiAgICogIGV4cChJbmZpbml0eSkgID0gSW5maW5pdHlcclxuICAgKiAgZXhwKC1JbmZpbml0eSkgPSAwXHJcbiAgICogIGV4cChOYU4pICAgICAgID0gTmFOXHJcbiAgICogIGV4cCjCsTApICAgICAgICA9IDFcclxuICAgKlxyXG4gICAqICBleHAoeCkgaXMgbm9uLXRlcm1pbmF0aW5nIGZvciBhbnkgZmluaXRlLCBub24temVybyB4LlxyXG4gICAqXHJcbiAgICogIFRoZSByZXN1bHQgd2lsbCBhbHdheXMgYmUgY29ycmVjdGx5IHJvdW5kZWQuXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBuYXR1cmFsRXhwb25lbnRpYWwoeCwgc2QpIHtcclxuICAgIHZhciBkZW5vbWluYXRvciwgZ3VhcmQsIGosIHBvdywgc3VtLCB0LCB3cHIsXHJcbiAgICAgIHJlcCA9IDAsXHJcbiAgICAgIGkgPSAwLFxyXG4gICAgICBrID0gMCxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgIHJtID0gQ3Rvci5yb3VuZGluZyxcclxuICAgICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuXHJcbiAgICAvLyAwL05hTi9JbmZpbml0eT9cclxuICAgIGlmICgheC5kIHx8ICF4LmRbMF0gfHwgeC5lID4gMTcpIHtcclxuXHJcbiAgICAgIHJldHVybiBuZXcgQ3Rvcih4LmRcclxuICAgICAgICA/ICF4LmRbMF0gPyAxIDogeC5zIDwgMCA/IDAgOiAxIC8gMFxyXG4gICAgICAgIDogeC5zID8geC5zIDwgMCA/IDAgOiB4IDogMCAvIDApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZCA9PSBudWxsKSB7XHJcbiAgICAgIGV4dGVybmFsID0gZmFsc2U7XHJcbiAgICAgIHdwciA9IHByO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgd3ByID0gc2Q7XHJcbiAgICB9XHJcblxyXG4gICAgdCA9IG5ldyBDdG9yKDAuMDMxMjUpO1xyXG5cclxuICAgIC8vIHdoaWxlIGFicyh4KSA+PSAwLjFcclxuICAgIHdoaWxlICh4LmUgPiAtMikge1xyXG5cclxuICAgICAgLy8geCA9IHggLyAyXjVcclxuICAgICAgeCA9IHgudGltZXModCk7XHJcbiAgICAgIGsgKz0gNTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBVc2UgMiAqIGxvZzEwKDJeaykgKyA1IChlbXBpcmljYWxseSBkZXJpdmVkKSB0byBlc3RpbWF0ZSB0aGUgaW5jcmVhc2UgaW4gcHJlY2lzaW9uXHJcbiAgICAvLyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBmaXJzdCA0IHJvdW5kaW5nIGRpZ2l0cyBhcmUgY29ycmVjdC5cclxuICAgIGd1YXJkID0gTWF0aC5sb2cobWF0aHBvdygyLCBrKSkgLyBNYXRoLkxOMTAgKiAyICsgNSB8IDA7XHJcbiAgICB3cHIgKz0gZ3VhcmQ7XHJcbiAgICBkZW5vbWluYXRvciA9IHBvdyA9IHN1bSA9IG5ldyBDdG9yKDEpO1xyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSB3cHI7XHJcblxyXG4gICAgZm9yICg7Oykge1xyXG4gICAgICBwb3cgPSBmaW5hbGlzZShwb3cudGltZXMoeCksIHdwciwgMSk7XHJcbiAgICAgIGRlbm9taW5hdG9yID0gZGVub21pbmF0b3IudGltZXMoKytpKTtcclxuICAgICAgdCA9IHN1bS5wbHVzKGRpdmlkZShwb3csIGRlbm9taW5hdG9yLCB3cHIsIDEpKTtcclxuXHJcbiAgICAgIGlmIChkaWdpdHNUb1N0cmluZyh0LmQpLnNsaWNlKDAsIHdwcikgPT09IGRpZ2l0c1RvU3RyaW5nKHN1bS5kKS5zbGljZSgwLCB3cHIpKSB7XHJcbiAgICAgICAgaiA9IGs7XHJcbiAgICAgICAgd2hpbGUgKGotLSkgc3VtID0gZmluYWxpc2Uoc3VtLnRpbWVzKHN1bSksIHdwciwgMSk7XHJcblxyXG4gICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZmlyc3QgNCByb3VuZGluZyBkaWdpdHMgYXJlIFs0OV05OTkuXHJcbiAgICAgICAgLy8gSWYgc28sIHJlcGVhdCB0aGUgc3VtbWF0aW9uIHdpdGggYSBoaWdoZXIgcHJlY2lzaW9uLCBvdGhlcndpc2VcclxuICAgICAgICAvLyBlLmcuIHdpdGggcHJlY2lzaW9uOiAxOCwgcm91bmRpbmc6IDFcclxuICAgICAgICAvLyBleHAoMTguNDA0MjcyNDYyNTk1MDM0MDgzNTY3NzkzOTE5ODQzNzYxKSA9IDk4MzcyNTYwLjEyMjk5OTk5OTkgKHNob3VsZCBiZSA5ODM3MjU2MC4xMjMpXHJcbiAgICAgICAgLy8gYHdwciAtIGd1YXJkYCBpcyB0aGUgaW5kZXggb2YgZmlyc3Qgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgICAgaWYgKHNkID09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICBpZiAocmVwIDwgMyAmJiBjaGVja1JvdW5kaW5nRGlnaXRzKHN1bS5kLCB3cHIgLSBndWFyZCwgcm0sIHJlcCkpIHtcclxuICAgICAgICAgICAgQ3Rvci5wcmVjaXNpb24gPSB3cHIgKz0gMTA7XHJcbiAgICAgICAgICAgIGRlbm9taW5hdG9yID0gcG93ID0gdCA9IG5ldyBDdG9yKDEpO1xyXG4gICAgICAgICAgICBpID0gMDtcclxuICAgICAgICAgICAgcmVwKys7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmluYWxpc2Uoc3VtLCBDdG9yLnByZWNpc2lvbiA9IHByLCBybSwgZXh0ZXJuYWwgPSB0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgQ3Rvci5wcmVjaXNpb24gPSBwcjtcclxuICAgICAgICAgIHJldHVybiBzdW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBzdW0gPSB0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG5hdHVyYWwgbG9nYXJpdGhtIG9mIGB4YCByb3VuZGVkIHRvIGBzZGAgc2lnbmlmaWNhbnRcclxuICAgKiBkaWdpdHMuXHJcbiAgICpcclxuICAgKiAgbG4oLW4pICAgICAgICA9IE5hTlxyXG4gICAqICBsbigwKSAgICAgICAgID0gLUluZmluaXR5XHJcbiAgICogIGxuKC0wKSAgICAgICAgPSAtSW5maW5pdHlcclxuICAgKiAgbG4oMSkgICAgICAgICA9IDBcclxuICAgKiAgbG4oSW5maW5pdHkpICA9IEluZmluaXR5XHJcbiAgICogIGxuKC1JbmZpbml0eSkgPSBOYU5cclxuICAgKiAgbG4oTmFOKSAgICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICogIGxuKG4pIChuICE9IDEpIGlzIG5vbi10ZXJtaW5hdGluZy5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIG5hdHVyYWxMb2dhcml0aG0oeSwgc2QpIHtcclxuICAgIHZhciBjLCBjMCwgZGVub21pbmF0b3IsIGUsIG51bWVyYXRvciwgcmVwLCBzdW0sIHQsIHdwciwgeDEsIHgyLFxyXG4gICAgICBuID0gMSxcclxuICAgICAgZ3VhcmQgPSAxMCxcclxuICAgICAgeCA9IHksXHJcbiAgICAgIHhkID0geC5kLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcixcclxuICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nLFxyXG4gICAgICBwciA9IEN0b3IucHJlY2lzaW9uO1xyXG5cclxuICAgIC8vIElzIHggbmVnYXRpdmUgb3IgSW5maW5pdHksIE5hTiwgMCBvciAxP1xyXG4gICAgaWYgKHgucyA8IDAgfHwgIXhkIHx8ICF4ZFswXSB8fCAheC5lICYmIHhkWzBdID09IDEgJiYgeGQubGVuZ3RoID09IDEpIHtcclxuICAgICAgcmV0dXJuIG5ldyBDdG9yKHhkICYmICF4ZFswXSA/IC0xIC8gMCA6IHgucyAhPSAxID8gTmFOIDogeGQgPyAwIDogeCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNkID09IG51bGwpIHtcclxuICAgICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgICAgd3ByID0gcHI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB3cHIgPSBzZDtcclxuICAgIH1cclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHdwciArPSBndWFyZDtcclxuICAgIGMgPSBkaWdpdHNUb1N0cmluZyh4ZCk7XHJcbiAgICBjMCA9IGMuY2hhckF0KDApO1xyXG5cclxuICAgIGlmIChNYXRoLmFicyhlID0geC5lKSA8IDEuNWUxNSkge1xyXG5cclxuICAgICAgLy8gQXJndW1lbnQgcmVkdWN0aW9uLlxyXG4gICAgICAvLyBUaGUgc2VyaWVzIGNvbnZlcmdlcyBmYXN0ZXIgdGhlIGNsb3NlciB0aGUgYXJndW1lbnQgaXMgdG8gMSwgc28gdXNpbmdcclxuICAgICAgLy8gbG4oYV5iKSA9IGIgKiBsbihhKSwgICBsbihhKSA9IGxuKGFeYikgLyBiXHJcbiAgICAgIC8vIG11bHRpcGx5IHRoZSBhcmd1bWVudCBieSBpdHNlbGYgdW50aWwgdGhlIGxlYWRpbmcgZGlnaXRzIG9mIHRoZSBzaWduaWZpY2FuZCBhcmUgNywgOCwgOSxcclxuICAgICAgLy8gMTAsIDExLCAxMiBvciAxMywgcmVjb3JkaW5nIHRoZSBudW1iZXIgb2YgbXVsdGlwbGljYXRpb25zIHNvIHRoZSBzdW0gb2YgdGhlIHNlcmllcyBjYW5cclxuICAgICAgLy8gbGF0ZXIgYmUgZGl2aWRlZCBieSB0aGlzIG51bWJlciwgdGhlbiBzZXBhcmF0ZSBvdXQgdGhlIHBvd2VyIG9mIDEwIHVzaW5nXHJcbiAgICAgIC8vIGxuKGEqMTBeYikgPSBsbihhKSArIGIqbG4oMTApLlxyXG5cclxuICAgICAgLy8gbWF4IG4gaXMgMjEgKGdpdmVzIDAuOSwgMS4wIG9yIDEuMSkgKDllMTUgLyAyMSA9IDQuMmUxNCkuXHJcbiAgICAgIC8vd2hpbGUgKGMwIDwgOSAmJiBjMCAhPSAxIHx8IGMwID09IDEgJiYgYy5jaGFyQXQoMSkgPiAxKSB7XHJcbiAgICAgIC8vIG1heCBuIGlzIDYgKGdpdmVzIDAuNyAtIDEuMylcclxuICAgICAgd2hpbGUgKGMwIDwgNyAmJiBjMCAhPSAxIHx8IGMwID09IDEgJiYgYy5jaGFyQXQoMSkgPiAzKSB7XHJcbiAgICAgICAgeCA9IHgudGltZXMoeSk7XHJcbiAgICAgICAgYyA9IGRpZ2l0c1RvU3RyaW5nKHguZCk7XHJcbiAgICAgICAgYzAgPSBjLmNoYXJBdCgwKTtcclxuICAgICAgICBuKys7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGUgPSB4LmU7XHJcblxyXG4gICAgICBpZiAoYzAgPiAxKSB7XHJcbiAgICAgICAgeCA9IG5ldyBDdG9yKCcwLicgKyBjKTtcclxuICAgICAgICBlKys7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgeCA9IG5ldyBDdG9yKGMwICsgJy4nICsgYy5zbGljZSgxKSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyBUaGUgYXJndW1lbnQgcmVkdWN0aW9uIG1ldGhvZCBhYm92ZSBtYXkgcmVzdWx0IGluIG92ZXJmbG93IGlmIHRoZSBhcmd1bWVudCB5IGlzIGEgbWFzc2l2ZVxyXG4gICAgICAvLyBudW1iZXIgd2l0aCBleHBvbmVudCA+PSAxNTAwMDAwMDAwMDAwMDAwICg5ZTE1IC8gNiA9IDEuNWUxNSksIHNvIGluc3RlYWQgcmVjYWxsIHRoaXNcclxuICAgICAgLy8gZnVuY3Rpb24gdXNpbmcgbG4oeCoxMF5lKSA9IGxuKHgpICsgZSpsbigxMCkuXHJcbiAgICAgIHQgPSBnZXRMbjEwKEN0b3IsIHdwciArIDIsIHByKS50aW1lcyhlICsgJycpO1xyXG4gICAgICB4ID0gbmF0dXJhbExvZ2FyaXRobShuZXcgQ3RvcihjMCArICcuJyArIGMuc2xpY2UoMSkpLCB3cHIgLSBndWFyZCkucGx1cyh0KTtcclxuICAgICAgQ3Rvci5wcmVjaXNpb24gPSBwcjtcclxuXHJcbiAgICAgIHJldHVybiBzZCA9PSBudWxsID8gZmluYWxpc2UoeCwgcHIsIHJtLCBleHRlcm5hbCA9IHRydWUpIDogeDtcclxuICAgIH1cclxuXHJcbiAgICAvLyB4MSBpcyB4IHJlZHVjZWQgdG8gYSB2YWx1ZSBuZWFyIDEuXHJcbiAgICB4MSA9IHg7XHJcblxyXG4gICAgLy8gVGF5bG9yIHNlcmllcy5cclxuICAgIC8vIGxuKHkpID0gbG4oKDEgKyB4KS8oMSAtIHgpKSA9IDIoeCArIHheMy8zICsgeF41LzUgKyB4XjcvNyArIC4uLilcclxuICAgIC8vIHdoZXJlIHggPSAoeSAtIDEpLyh5ICsgMSkgICAgKHx4fCA8IDEpXHJcbiAgICBzdW0gPSBudW1lcmF0b3IgPSB4ID0gZGl2aWRlKHgubWludXMoMSksIHgucGx1cygxKSwgd3ByLCAxKTtcclxuICAgIHgyID0gZmluYWxpc2UoeC50aW1lcyh4KSwgd3ByLCAxKTtcclxuICAgIGRlbm9taW5hdG9yID0gMztcclxuXHJcbiAgICBmb3IgKDs7KSB7XHJcbiAgICAgIG51bWVyYXRvciA9IGZpbmFsaXNlKG51bWVyYXRvci50aW1lcyh4MiksIHdwciwgMSk7XHJcbiAgICAgIHQgPSBzdW0ucGx1cyhkaXZpZGUobnVtZXJhdG9yLCBuZXcgQ3RvcihkZW5vbWluYXRvciksIHdwciwgMSkpO1xyXG5cclxuICAgICAgaWYgKGRpZ2l0c1RvU3RyaW5nKHQuZCkuc2xpY2UoMCwgd3ByKSA9PT0gZGlnaXRzVG9TdHJpbmcoc3VtLmQpLnNsaWNlKDAsIHdwcikpIHtcclxuICAgICAgICBzdW0gPSBzdW0udGltZXMoMik7XHJcblxyXG4gICAgICAgIC8vIFJldmVyc2UgdGhlIGFyZ3VtZW50IHJlZHVjdGlvbi4gQ2hlY2sgdGhhdCBlIGlzIG5vdCAwIGJlY2F1c2UsIGJlc2lkZXMgcHJldmVudGluZyBhblxyXG4gICAgICAgIC8vIHVubmVjZXNzYXJ5IGNhbGN1bGF0aW9uLCAtMCArIDAgPSArMCBhbmQgdG8gZW5zdXJlIGNvcnJlY3Qgcm91bmRpbmcgLTAgbmVlZHMgdG8gc3RheSAtMC5cclxuICAgICAgICBpZiAoZSAhPT0gMCkgc3VtID0gc3VtLnBsdXMoZ2V0TG4xMChDdG9yLCB3cHIgKyAyLCBwcikudGltZXMoZSArICcnKSk7XHJcbiAgICAgICAgc3VtID0gZGl2aWRlKHN1bSwgbmV3IEN0b3IobiksIHdwciwgMSk7XHJcblxyXG4gICAgICAgIC8vIElzIHJtID4gMyBhbmQgdGhlIGZpcnN0IDQgcm91bmRpbmcgZGlnaXRzIDQ5OTksIG9yIHJtIDwgNCAob3IgdGhlIHN1bW1hdGlvbiBoYXNcclxuICAgICAgICAvLyBiZWVuIHJlcGVhdGVkIHByZXZpb3VzbHkpIGFuZCB0aGUgZmlyc3QgNCByb3VuZGluZyBkaWdpdHMgOTk5OT9cclxuICAgICAgICAvLyBJZiBzbywgcmVzdGFydCB0aGUgc3VtbWF0aW9uIHdpdGggYSBoaWdoZXIgcHJlY2lzaW9uLCBvdGhlcndpc2VcclxuICAgICAgICAvLyBlLmcuIHdpdGggcHJlY2lzaW9uOiAxMiwgcm91bmRpbmc6IDFcclxuICAgICAgICAvLyBsbigxMzU1MjAwMjguNjEyNjA5MTcxNDI2NTM4MTUzMykgPSAxOC43MjQ2Mjk5OTk5IHdoZW4gaXQgc2hvdWxkIGJlIDE4LjcyNDYzLlxyXG4gICAgICAgIC8vIGB3cHIgLSBndWFyZGAgaXMgdGhlIGluZGV4IG9mIGZpcnN0IHJvdW5kaW5nIGRpZ2l0LlxyXG4gICAgICAgIGlmIChzZCA9PSBudWxsKSB7XHJcbiAgICAgICAgICBpZiAoY2hlY2tSb3VuZGluZ0RpZ2l0cyhzdW0uZCwgd3ByIC0gZ3VhcmQsIHJtLCByZXApKSB7XHJcbiAgICAgICAgICAgIEN0b3IucHJlY2lzaW9uID0gd3ByICs9IGd1YXJkO1xyXG4gICAgICAgICAgICB0ID0gbnVtZXJhdG9yID0geCA9IGRpdmlkZSh4MS5taW51cygxKSwgeDEucGx1cygxKSwgd3ByLCAxKTtcclxuICAgICAgICAgICAgeDIgPSBmaW5hbGlzZSh4LnRpbWVzKHgpLCB3cHIsIDEpO1xyXG4gICAgICAgICAgICBkZW5vbWluYXRvciA9IHJlcCA9IDE7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmluYWxpc2Uoc3VtLCBDdG9yLnByZWNpc2lvbiA9IHByLCBybSwgZXh0ZXJuYWwgPSB0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgQ3Rvci5wcmVjaXNpb24gPSBwcjtcclxuICAgICAgICAgIHJldHVybiBzdW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBzdW0gPSB0O1xyXG4gICAgICBkZW5vbWluYXRvciArPSAyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIMKxSW5maW5pdHksIE5hTi5cclxuICBmdW5jdGlvbiBub25GaW5pdGVUb1N0cmluZyh4KSB7XHJcbiAgICAvLyBVbnNpZ25lZC5cclxuICAgIHJldHVybiBTdHJpbmcoeC5zICogeC5zIC8gMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBQYXJzZSB0aGUgdmFsdWUgb2YgYSBuZXcgRGVjaW1hbCBgeGAgZnJvbSBzdHJpbmcgYHN0cmAuXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gcGFyc2VEZWNpbWFsKHgsIHN0cikge1xyXG4gICAgdmFyIGUsIGksIGxlbjtcclxuXHJcbiAgICAvLyBEZWNpbWFsIHBvaW50P1xyXG4gICAgaWYgKChlID0gc3RyLmluZGV4T2YoJy4nKSkgPiAtMSkgc3RyID0gc3RyLnJlcGxhY2UoJy4nLCAnJyk7XHJcblxyXG4gICAgLy8gRXhwb25lbnRpYWwgZm9ybT9cclxuICAgIGlmICgoaSA9IHN0ci5zZWFyY2goL2UvaSkpID4gMCkge1xyXG5cclxuICAgICAgLy8gRGV0ZXJtaW5lIGV4cG9uZW50LlxyXG4gICAgICBpZiAoZSA8IDApIGUgPSBpO1xyXG4gICAgICBlICs9ICtzdHIuc2xpY2UoaSArIDEpO1xyXG4gICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIGkpO1xyXG4gICAgfSBlbHNlIGlmIChlIDwgMCkge1xyXG5cclxuICAgICAgLy8gSW50ZWdlci5cclxuICAgICAgZSA9IHN0ci5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIGxlYWRpbmcgemVyb3MuXHJcbiAgICBmb3IgKGkgPSAwOyBzdHIuY2hhckNvZGVBdChpKSA9PT0gNDg7IGkrKyk7XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgZm9yIChsZW4gPSBzdHIubGVuZ3RoOyBzdHIuY2hhckNvZGVBdChsZW4gLSAxKSA9PT0gNDg7IC0tbGVuKTtcclxuICAgIHN0ciA9IHN0ci5zbGljZShpLCBsZW4pO1xyXG5cclxuICAgIGlmIChzdHIpIHtcclxuICAgICAgbGVuIC09IGk7XHJcbiAgICAgIHguZSA9IGUgPSBlIC0gaSAtIDE7XHJcbiAgICAgIHguZCA9IFtdO1xyXG5cclxuICAgICAgLy8gVHJhbnNmb3JtIGJhc2VcclxuXHJcbiAgICAgIC8vIGUgaXMgdGhlIGJhc2UgMTAgZXhwb25lbnQuXHJcbiAgICAgIC8vIGkgaXMgd2hlcmUgdG8gc2xpY2Ugc3RyIHRvIGdldCB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgZGlnaXRzIGFycmF5LlxyXG4gICAgICBpID0gKGUgKyAxKSAlIExPR19CQVNFO1xyXG4gICAgICBpZiAoZSA8IDApIGkgKz0gTE9HX0JBU0U7XHJcblxyXG4gICAgICBpZiAoaSA8IGxlbikge1xyXG4gICAgICAgIGlmIChpKSB4LmQucHVzaCgrc3RyLnNsaWNlKDAsIGkpKTtcclxuICAgICAgICBmb3IgKGxlbiAtPSBMT0dfQkFTRTsgaSA8IGxlbjspIHguZC5wdXNoKCtzdHIuc2xpY2UoaSwgaSArPSBMT0dfQkFTRSkpO1xyXG4gICAgICAgIHN0ciA9IHN0ci5zbGljZShpKTtcclxuICAgICAgICBpID0gTE9HX0JBU0UgLSBzdHIubGVuZ3RoO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGkgLT0gbGVuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKDsgaS0tOykgc3RyICs9ICcwJztcclxuICAgICAgeC5kLnB1c2goK3N0cik7XHJcblxyXG4gICAgICBpZiAoZXh0ZXJuYWwpIHtcclxuXHJcbiAgICAgICAgLy8gT3ZlcmZsb3c/XHJcbiAgICAgICAgaWYgKHguZSA+IHguY29uc3RydWN0b3IubWF4RSkge1xyXG5cclxuICAgICAgICAgIC8vIEluZmluaXR5LlxyXG4gICAgICAgICAgeC5kID0gbnVsbDtcclxuICAgICAgICAgIHguZSA9IE5hTjtcclxuXHJcbiAgICAgICAgLy8gVW5kZXJmbG93P1xyXG4gICAgICAgIH0gZWxzZSBpZiAoeC5lIDwgeC5jb25zdHJ1Y3Rvci5taW5FKSB7XHJcblxyXG4gICAgICAgICAgLy8gWmVyby5cclxuICAgICAgICAgIHguZSA9IDA7XHJcbiAgICAgICAgICB4LmQgPSBbMF07XHJcbiAgICAgICAgICAvLyB4LmNvbnN0cnVjdG9yLnVuZGVyZmxvdyA9IHRydWU7XHJcbiAgICAgICAgfSAvLyBlbHNlIHguY29uc3RydWN0b3IudW5kZXJmbG93ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyBaZXJvLlxyXG4gICAgICB4LmUgPSAwO1xyXG4gICAgICB4LmQgPSBbMF07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHg7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBQYXJzZSB0aGUgdmFsdWUgb2YgYSBuZXcgRGVjaW1hbCBgeGAgZnJvbSBhIHN0cmluZyBgc3RyYCwgd2hpY2ggaXMgbm90IGEgZGVjaW1hbCB2YWx1ZS5cclxuICAgKi9cclxuICBmdW5jdGlvbiBwYXJzZU90aGVyKHgsIHN0cikge1xyXG4gICAgdmFyIGJhc2UsIEN0b3IsIGRpdmlzb3IsIGksIGlzRmxvYXQsIGxlbiwgcCwgeGQsIHhlO1xyXG5cclxuICAgIGlmIChzdHIuaW5kZXhPZignXycpID4gLTEpIHtcclxuICAgICAgc3RyID0gc3RyLnJlcGxhY2UoLyhcXGQpXyg/PVxcZCkvZywgJyQxJyk7XHJcbiAgICAgIGlmIChpc0RlY2ltYWwudGVzdChzdHIpKSByZXR1cm4gcGFyc2VEZWNpbWFsKHgsIHN0cik7XHJcbiAgICB9IGVsc2UgaWYgKHN0ciA9PT0gJ0luZmluaXR5JyB8fCBzdHIgPT09ICdOYU4nKSB7XHJcbiAgICAgIGlmICghK3N0cikgeC5zID0gTmFOO1xyXG4gICAgICB4LmUgPSBOYU47XHJcbiAgICAgIHguZCA9IG51bGw7XHJcbiAgICAgIHJldHVybiB4O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc0hleC50ZXN0KHN0cikpICB7XHJcbiAgICAgIGJhc2UgPSAxNjtcclxuICAgICAgc3RyID0gc3RyLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9IGVsc2UgaWYgKGlzQmluYXJ5LnRlc3Qoc3RyKSkgIHtcclxuICAgICAgYmFzZSA9IDI7XHJcbiAgICB9IGVsc2UgaWYgKGlzT2N0YWwudGVzdChzdHIpKSAge1xyXG4gICAgICBiYXNlID0gODtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IEVycm9yKGludmFsaWRBcmd1bWVudCArIHN0cik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSXMgdGhlcmUgYSBiaW5hcnkgZXhwb25lbnQgcGFydD9cclxuICAgIGkgPSBzdHIuc2VhcmNoKC9wL2kpO1xyXG5cclxuICAgIGlmIChpID4gMCkge1xyXG4gICAgICBwID0gK3N0ci5zbGljZShpICsgMSk7XHJcbiAgICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoMiwgaSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdHIgPSBzdHIuc2xpY2UoMik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ29udmVydCBgc3RyYCBhcyBhbiBpbnRlZ2VyIHRoZW4gZGl2aWRlIHRoZSByZXN1bHQgYnkgYGJhc2VgIHJhaXNlZCB0byBhIHBvd2VyIHN1Y2ggdGhhdCB0aGVcclxuICAgIC8vIGZyYWN0aW9uIHBhcnQgd2lsbCBiZSByZXN0b3JlZC5cclxuICAgIGkgPSBzdHIuaW5kZXhPZignLicpO1xyXG4gICAgaXNGbG9hdCA9IGkgPj0gMDtcclxuICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmIChpc0Zsb2F0KSB7XHJcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKCcuJywgJycpO1xyXG4gICAgICBsZW4gPSBzdHIubGVuZ3RoO1xyXG4gICAgICBpID0gbGVuIC0gaTtcclxuXHJcbiAgICAgIC8vIGxvZ1sxMF0oMTYpID0gMS4yMDQxLi4uICwgbG9nWzEwXSg4OCkgPSAxLjk0NDQuLi4uXHJcbiAgICAgIGRpdmlzb3IgPSBpbnRQb3coQ3RvciwgbmV3IEN0b3IoYmFzZSksIGksIGkgKiAyKTtcclxuICAgIH1cclxuXHJcbiAgICB4ZCA9IGNvbnZlcnRCYXNlKHN0ciwgYmFzZSwgQkFTRSk7XHJcbiAgICB4ZSA9IHhkLmxlbmd0aCAtIDE7XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgZm9yIChpID0geGU7IHhkW2ldID09PSAwOyAtLWkpIHhkLnBvcCgpO1xyXG4gICAgaWYgKGkgPCAwKSByZXR1cm4gbmV3IEN0b3IoeC5zICogMCk7XHJcbiAgICB4LmUgPSBnZXRCYXNlMTBFeHBvbmVudCh4ZCwgeGUpO1xyXG4gICAgeC5kID0geGQ7XHJcbiAgICBleHRlcm5hbCA9IGZhbHNlO1xyXG5cclxuICAgIC8vIEF0IHdoYXQgcHJlY2lzaW9uIHRvIHBlcmZvcm0gdGhlIGRpdmlzaW9uIHRvIGVuc3VyZSBleGFjdCBjb252ZXJzaW9uP1xyXG4gICAgLy8gbWF4RGVjaW1hbEludGVnZXJQYXJ0RGlnaXRDb3VudCA9IGNlaWwobG9nWzEwXShiKSAqIG90aGVyQmFzZUludGVnZXJQYXJ0RGlnaXRDb3VudClcclxuICAgIC8vIGxvZ1sxMF0oMikgPSAwLjMwMTAzLCBsb2dbMTBdKDgpID0gMC45MDMwOSwgbG9nWzEwXSgxNikgPSAxLjIwNDEyXHJcbiAgICAvLyBFLmcuIGNlaWwoMS4yICogMykgPSA0LCBzbyB1cCB0byA0IGRlY2ltYWwgZGlnaXRzIGFyZSBuZWVkZWQgdG8gcmVwcmVzZW50IDMgaGV4IGludCBkaWdpdHMuXHJcbiAgICAvLyBtYXhEZWNpbWFsRnJhY3Rpb25QYXJ0RGlnaXRDb3VudCA9IHtIZXg6NHxPY3Q6M3xCaW46MX0gKiBvdGhlckJhc2VGcmFjdGlvblBhcnREaWdpdENvdW50XHJcbiAgICAvLyBUaGVyZWZvcmUgdXNpbmcgNCAqIHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIHN0ciB3aWxsIGFsd2F5cyBiZSBlbm91Z2guXHJcbiAgICBpZiAoaXNGbG9hdCkgeCA9IGRpdmlkZSh4LCBkaXZpc29yLCBsZW4gKiA0KTtcclxuXHJcbiAgICAvLyBNdWx0aXBseSBieSB0aGUgYmluYXJ5IGV4cG9uZW50IHBhcnQgaWYgcHJlc2VudC5cclxuICAgIGlmIChwKSB4ID0geC50aW1lcyhNYXRoLmFicyhwKSA8IDU0ID8gbWF0aHBvdygyLCBwKSA6IERlY2ltYWwucG93KDIsIHApKTtcclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4geDtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIHNpbih4KSA9IHggLSB4XjMvMyEgKyB4XjUvNSEgLSAuLi5cclxuICAgKiB8eHwgPCBwaS8yXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBzaW5lKEN0b3IsIHgpIHtcclxuICAgIHZhciBrLFxyXG4gICAgICBsZW4gPSB4LmQubGVuZ3RoO1xyXG5cclxuICAgIGlmIChsZW4gPCAzKSB7XHJcbiAgICAgIHJldHVybiB4LmlzWmVybygpID8geCA6IHRheWxvclNlcmllcyhDdG9yLCAyLCB4LCB4KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBcmd1bWVudCByZWR1Y3Rpb246IHNpbig1eCkgPSAxNipzaW5eNSh4KSAtIDIwKnNpbl4zKHgpICsgNSpzaW4oeClcclxuICAgIC8vIGkuZS4gc2luKHgpID0gMTYqc2luXjUoeC81KSAtIDIwKnNpbl4zKHgvNSkgKyA1KnNpbih4LzUpXHJcbiAgICAvLyBhbmQgIHNpbih4KSA9IHNpbih4LzUpKDUgKyBzaW5eMih4LzUpKDE2c2luXjIoeC81KSAtIDIwKSlcclxuXHJcbiAgICAvLyBFc3RpbWF0ZSB0aGUgb3B0aW11bSBudW1iZXIgb2YgdGltZXMgdG8gdXNlIHRoZSBhcmd1bWVudCByZWR1Y3Rpb24uXHJcbiAgICBrID0gMS40ICogTWF0aC5zcXJ0KGxlbik7XHJcbiAgICBrID0gayA+IDE2ID8gMTYgOiBrIHwgMDtcclxuXHJcbiAgICB4ID0geC50aW1lcygxIC8gdGlueVBvdyg1LCBrKSk7XHJcbiAgICB4ID0gdGF5bG9yU2VyaWVzKEN0b3IsIDIsIHgsIHgpO1xyXG5cclxuICAgIC8vIFJldmVyc2UgYXJndW1lbnQgcmVkdWN0aW9uXHJcbiAgICB2YXIgc2luMl94LFxyXG4gICAgICBkNSA9IG5ldyBDdG9yKDUpLFxyXG4gICAgICBkMTYgPSBuZXcgQ3RvcigxNiksXHJcbiAgICAgIGQyMCA9IG5ldyBDdG9yKDIwKTtcclxuICAgIGZvciAoOyBrLS07KSB7XHJcbiAgICAgIHNpbjJfeCA9IHgudGltZXMoeCk7XHJcbiAgICAgIHggPSB4LnRpbWVzKGQ1LnBsdXMoc2luMl94LnRpbWVzKGQxNi50aW1lcyhzaW4yX3gpLm1pbnVzKGQyMCkpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHg7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gQ2FsY3VsYXRlIFRheWxvciBzZXJpZXMgZm9yIGBjb3NgLCBgY29zaGAsIGBzaW5gIGFuZCBgc2luaGAuXHJcbiAgZnVuY3Rpb24gdGF5bG9yU2VyaWVzKEN0b3IsIG4sIHgsIHksIGlzSHlwZXJib2xpYykge1xyXG4gICAgdmFyIGosIHQsIHUsIHgyLFxyXG4gICAgICBpID0gMSxcclxuICAgICAgcHIgPSBDdG9yLnByZWNpc2lvbixcclxuICAgICAgayA9IE1hdGguY2VpbChwciAvIExPR19CQVNFKTtcclxuXHJcbiAgICBleHRlcm5hbCA9IGZhbHNlO1xyXG4gICAgeDIgPSB4LnRpbWVzKHgpO1xyXG4gICAgdSA9IG5ldyBDdG9yKHkpO1xyXG5cclxuICAgIGZvciAoOzspIHtcclxuICAgICAgdCA9IGRpdmlkZSh1LnRpbWVzKHgyKSwgbmV3IEN0b3IobisrICogbisrKSwgcHIsIDEpO1xyXG4gICAgICB1ID0gaXNIeXBlcmJvbGljID8geS5wbHVzKHQpIDogeS5taW51cyh0KTtcclxuICAgICAgeSA9IGRpdmlkZSh0LnRpbWVzKHgyKSwgbmV3IEN0b3IobisrICogbisrKSwgcHIsIDEpO1xyXG4gICAgICB0ID0gdS5wbHVzKHkpO1xyXG5cclxuICAgICAgaWYgKHQuZFtrXSAhPT0gdm9pZCAwKSB7XHJcbiAgICAgICAgZm9yIChqID0gazsgdC5kW2pdID09PSB1LmRbal0gJiYgai0tOyk7XHJcbiAgICAgICAgaWYgKGogPT0gLTEpIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBqID0gdTtcclxuICAgICAgdSA9IHk7XHJcbiAgICAgIHkgPSB0O1xyXG4gICAgICB0ID0gajtcclxuICAgICAgaSsrO1xyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuICAgIHQuZC5sZW5ndGggPSBrICsgMTtcclxuXHJcbiAgICByZXR1cm4gdDtcclxuICB9XHJcblxyXG5cclxuICAvLyBFeHBvbmVudCBlIG11c3QgYmUgcG9zaXRpdmUgYW5kIG5vbi16ZXJvLlxyXG4gIGZ1bmN0aW9uIHRpbnlQb3coYiwgZSkge1xyXG4gICAgdmFyIG4gPSBiO1xyXG4gICAgd2hpbGUgKC0tZSkgbiAqPSBiO1xyXG4gICAgcmV0dXJuIG47XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBgeGAgcmVkdWNlZCB0byBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gaGFsZiBwaS5cclxuICBmdW5jdGlvbiB0b0xlc3NUaGFuSGFsZlBpKEN0b3IsIHgpIHtcclxuICAgIHZhciB0LFxyXG4gICAgICBpc05lZyA9IHgucyA8IDAsXHJcbiAgICAgIHBpID0gZ2V0UGkoQ3RvciwgQ3Rvci5wcmVjaXNpb24sIDEpLFxyXG4gICAgICBoYWxmUGkgPSBwaS50aW1lcygwLjUpO1xyXG5cclxuICAgIHggPSB4LmFicygpO1xyXG5cclxuICAgIGlmICh4Lmx0ZShoYWxmUGkpKSB7XHJcbiAgICAgIHF1YWRyYW50ID0gaXNOZWcgPyA0IDogMTtcclxuICAgICAgcmV0dXJuIHg7XHJcbiAgICB9XHJcblxyXG4gICAgdCA9IHguZGl2VG9JbnQocGkpO1xyXG5cclxuICAgIGlmICh0LmlzWmVybygpKSB7XHJcbiAgICAgIHF1YWRyYW50ID0gaXNOZWcgPyAzIDogMjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHggPSB4Lm1pbnVzKHQudGltZXMocGkpKTtcclxuXHJcbiAgICAgIC8vIDAgPD0geCA8IHBpXHJcbiAgICAgIGlmICh4Lmx0ZShoYWxmUGkpKSB7XHJcbiAgICAgICAgcXVhZHJhbnQgPSBpc09kZCh0KSA/IChpc05lZyA/IDIgOiAzKSA6IChpc05lZyA/IDQgOiAxKTtcclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcXVhZHJhbnQgPSBpc09kZCh0KSA/IChpc05lZyA/IDEgOiA0KSA6IChpc05lZyA/IDMgOiAyKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geC5taW51cyhwaSkuYWJzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdGhlIHZhbHVlIG9mIERlY2ltYWwgYHhgIGFzIGEgc3RyaW5nIGluIGJhc2UgYGJhc2VPdXRgLlxyXG4gICAqXHJcbiAgICogSWYgdGhlIG9wdGlvbmFsIGBzZGAgYXJndW1lbnQgaXMgcHJlc2VudCBpbmNsdWRlIGEgYmluYXJ5IGV4cG9uZW50IHN1ZmZpeC5cclxuICAgKi9cclxuICBmdW5jdGlvbiB0b1N0cmluZ0JpbmFyeSh4LCBiYXNlT3V0LCBzZCwgcm0pIHtcclxuICAgIHZhciBiYXNlLCBlLCBpLCBrLCBsZW4sIHJvdW5kVXAsIHN0ciwgeGQsIHksXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yLFxyXG4gICAgICBpc0V4cCA9IHNkICE9PSB2b2lkIDA7XHJcblxyXG4gICAgaWYgKGlzRXhwKSB7XHJcbiAgICAgIGNoZWNrSW50MzIoc2QsIDEsIE1BWF9ESUdJVFMpO1xyXG4gICAgICBpZiAocm0gPT09IHZvaWQgMCkgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgICBlbHNlIGNoZWNrSW50MzIocm0sIDAsIDgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2QgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpKSB7XHJcbiAgICAgIHN0ciA9IG5vbkZpbml0ZVRvU3RyaW5nKHgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3RyID0gZmluaXRlVG9TdHJpbmcoeCk7XHJcbiAgICAgIGkgPSBzdHIuaW5kZXhPZignLicpO1xyXG5cclxuICAgICAgLy8gVXNlIGV4cG9uZW50aWFsIG5vdGF0aW9uIGFjY29yZGluZyB0byBgdG9FeHBQb3NgIGFuZCBgdG9FeHBOZWdgPyBObywgYnV0IGlmIHJlcXVpcmVkOlxyXG4gICAgICAvLyBtYXhCaW5hcnlFeHBvbmVudCA9IGZsb29yKChkZWNpbWFsRXhwb25lbnQgKyAxKSAqIGxvZ1syXSgxMCkpXHJcbiAgICAgIC8vIG1pbkJpbmFyeUV4cG9uZW50ID0gZmxvb3IoZGVjaW1hbEV4cG9uZW50ICogbG9nWzJdKDEwKSlcclxuICAgICAgLy8gbG9nWzJdKDEwKSA9IDMuMzIxOTI4MDk0ODg3MzYyMzQ3ODcwMzE5NDI5NDg5MzkwMTc1ODY0XHJcblxyXG4gICAgICBpZiAoaXNFeHApIHtcclxuICAgICAgICBiYXNlID0gMjtcclxuICAgICAgICBpZiAoYmFzZU91dCA9PSAxNikge1xyXG4gICAgICAgICAgc2QgPSBzZCAqIDQgLSAzO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYmFzZU91dCA9PSA4KSB7XHJcbiAgICAgICAgICBzZCA9IHNkICogMyAtIDI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGJhc2UgPSBiYXNlT3V0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDb252ZXJ0IHRoZSBudW1iZXIgYXMgYW4gaW50ZWdlciB0aGVuIGRpdmlkZSB0aGUgcmVzdWx0IGJ5IGl0cyBiYXNlIHJhaXNlZCB0byBhIHBvd2VyIHN1Y2hcclxuICAgICAgLy8gdGhhdCB0aGUgZnJhY3Rpb24gcGFydCB3aWxsIGJlIHJlc3RvcmVkLlxyXG5cclxuICAgICAgLy8gTm9uLWludGVnZXIuXHJcbiAgICAgIGlmIChpID49IDApIHtcclxuICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgnLicsICcnKTtcclxuICAgICAgICB5ID0gbmV3IEN0b3IoMSk7XHJcbiAgICAgICAgeS5lID0gc3RyLmxlbmd0aCAtIGk7XHJcbiAgICAgICAgeS5kID0gY29udmVydEJhc2UoZmluaXRlVG9TdHJpbmcoeSksIDEwLCBiYXNlKTtcclxuICAgICAgICB5LmUgPSB5LmQubGVuZ3RoO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB4ZCA9IGNvbnZlcnRCYXNlKHN0ciwgMTAsIGJhc2UpO1xyXG4gICAgICBlID0gbGVuID0geGQubGVuZ3RoO1xyXG5cclxuICAgICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgICBmb3IgKDsgeGRbLS1sZW5dID09IDA7KSB4ZC5wb3AoKTtcclxuXHJcbiAgICAgIGlmICgheGRbMF0pIHtcclxuICAgICAgICBzdHIgPSBpc0V4cCA/ICcwcCswJyA6ICcwJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaSA8IDApIHtcclxuICAgICAgICAgIGUtLTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgeCA9IG5ldyBDdG9yKHgpO1xyXG4gICAgICAgICAgeC5kID0geGQ7XHJcbiAgICAgICAgICB4LmUgPSBlO1xyXG4gICAgICAgICAgeCA9IGRpdmlkZSh4LCB5LCBzZCwgcm0sIDAsIGJhc2UpO1xyXG4gICAgICAgICAgeGQgPSB4LmQ7XHJcbiAgICAgICAgICBlID0geC5lO1xyXG4gICAgICAgICAgcm91bmRVcCA9IGluZXhhY3Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBUaGUgcm91bmRpbmcgZGlnaXQsIGkuZS4gdGhlIGRpZ2l0IGFmdGVyIHRoZSBkaWdpdCB0aGF0IG1heSBiZSByb3VuZGVkIHVwLlxyXG4gICAgICAgIGkgPSB4ZFtzZF07XHJcbiAgICAgICAgayA9IGJhc2UgLyAyO1xyXG4gICAgICAgIHJvdW5kVXAgPSByb3VuZFVwIHx8IHhkW3NkICsgMV0gIT09IHZvaWQgMDtcclxuXHJcbiAgICAgICAgcm91bmRVcCA9IHJtIDwgNFxyXG4gICAgICAgICAgPyAoaSAhPT0gdm9pZCAwIHx8IHJvdW5kVXApICYmIChybSA9PT0gMCB8fCBybSA9PT0gKHgucyA8IDAgPyAzIDogMikpXHJcbiAgICAgICAgICA6IGkgPiBrIHx8IGkgPT09IGsgJiYgKHJtID09PSA0IHx8IHJvdW5kVXAgfHwgcm0gPT09IDYgJiYgeGRbc2QgLSAxXSAmIDEgfHxcclxuICAgICAgICAgICAgcm0gPT09ICh4LnMgPCAwID8gOCA6IDcpKTtcclxuXHJcbiAgICAgICAgeGQubGVuZ3RoID0gc2Q7XHJcblxyXG4gICAgICAgIGlmIChyb3VuZFVwKSB7XHJcblxyXG4gICAgICAgICAgLy8gUm91bmRpbmcgdXAgbWF5IG1lYW4gdGhlIHByZXZpb3VzIGRpZ2l0IGhhcyB0byBiZSByb3VuZGVkIHVwIGFuZCBzbyBvbi5cclxuICAgICAgICAgIGZvciAoOyArK3hkWy0tc2RdID4gYmFzZSAtIDE7KSB7XHJcbiAgICAgICAgICAgIHhkW3NkXSA9IDA7XHJcbiAgICAgICAgICAgIGlmICghc2QpIHtcclxuICAgICAgICAgICAgICArK2U7XHJcbiAgICAgICAgICAgICAgeGQudW5zaGlmdCgxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRGV0ZXJtaW5lIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgICAgIGZvciAobGVuID0geGQubGVuZ3RoOyAheGRbbGVuIC0gMV07IC0tbGVuKTtcclxuXHJcbiAgICAgICAgLy8gRS5nLiBbNCwgMTEsIDE1XSBiZWNvbWVzIDRiZi5cclxuICAgICAgICBmb3IgKGkgPSAwLCBzdHIgPSAnJzsgaSA8IGxlbjsgaSsrKSBzdHIgKz0gTlVNRVJBTFMuY2hhckF0KHhkW2ldKTtcclxuXHJcbiAgICAgICAgLy8gQWRkIGJpbmFyeSBleHBvbmVudCBzdWZmaXg/XHJcbiAgICAgICAgaWYgKGlzRXhwKSB7XHJcbiAgICAgICAgICBpZiAobGVuID4gMSkge1xyXG4gICAgICAgICAgICBpZiAoYmFzZU91dCA9PSAxNiB8fCBiYXNlT3V0ID09IDgpIHtcclxuICAgICAgICAgICAgICBpID0gYmFzZU91dCA9PSAxNiA/IDQgOiAzO1xyXG4gICAgICAgICAgICAgIGZvciAoLS1sZW47IGxlbiAlIGk7IGxlbisrKSBzdHIgKz0gJzAnO1xyXG4gICAgICAgICAgICAgIHhkID0gY29udmVydEJhc2Uoc3RyLCBiYXNlLCBiYXNlT3V0KTtcclxuICAgICAgICAgICAgICBmb3IgKGxlbiA9IHhkLmxlbmd0aDsgIXhkW2xlbiAtIDFdOyAtLWxlbik7XHJcblxyXG4gICAgICAgICAgICAgIC8vIHhkWzBdIHdpbGwgYWx3YXlzIGJlIGJlIDFcclxuICAgICAgICAgICAgICBmb3IgKGkgPSAxLCBzdHIgPSAnMS4nOyBpIDwgbGVuOyBpKyspIHN0ciArPSBOVU1FUkFMUy5jaGFyQXQoeGRbaV0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHN0ciA9IHN0ci5jaGFyQXQoMCkgKyAnLicgKyBzdHIuc2xpY2UoMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBzdHIgPSAgc3RyICsgKGUgPCAwID8gJ3AnIDogJ3ArJykgKyBlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZSA8IDApIHtcclxuICAgICAgICAgIGZvciAoOyArK2U7KSBzdHIgPSAnMCcgKyBzdHI7XHJcbiAgICAgICAgICBzdHIgPSAnMC4nICsgc3RyO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoKytlID4gbGVuKSBmb3IgKGUgLT0gbGVuOyBlLS0gOykgc3RyICs9ICcwJztcclxuICAgICAgICAgIGVsc2UgaWYgKGUgPCBsZW4pIHN0ciA9IHN0ci5zbGljZSgwLCBlKSArICcuJyArIHN0ci5zbGljZShlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0ciA9IChiYXNlT3V0ID09IDE2ID8gJzB4JyA6IGJhc2VPdXQgPT0gMiA/ICcwYicgOiBiYXNlT3V0ID09IDggPyAnMG8nIDogJycpICsgc3RyO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4LnMgPCAwID8gJy0nICsgc3RyIDogc3RyO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIERvZXMgbm90IHN0cmlwIHRyYWlsaW5nIHplcm9zLlxyXG4gIGZ1bmN0aW9uIHRydW5jYXRlKGFyciwgbGVuKSB7XHJcbiAgICBpZiAoYXJyLmxlbmd0aCA+IGxlbikge1xyXG4gICAgICBhcnIubGVuZ3RoID0gbGVuO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLyBEZWNpbWFsIG1ldGhvZHNcclxuXHJcblxyXG4gIC8qXHJcbiAgICogIGFic1xyXG4gICAqICBhY29zXHJcbiAgICogIGFjb3NoXHJcbiAgICogIGFkZFxyXG4gICAqICBhc2luXHJcbiAgICogIGFzaW5oXHJcbiAgICogIGF0YW5cclxuICAgKiAgYXRhbmhcclxuICAgKiAgYXRhbjJcclxuICAgKiAgY2JydFxyXG4gICAqICBjZWlsXHJcbiAgICogIGNsYW1wXHJcbiAgICogIGNsb25lXHJcbiAgICogIGNvbmZpZ1xyXG4gICAqICBjb3NcclxuICAgKiAgY29zaFxyXG4gICAqICBkaXZcclxuICAgKiAgZXhwXHJcbiAgICogIGZsb29yXHJcbiAgICogIGh5cG90XHJcbiAgICogIGxuXHJcbiAgICogIGxvZ1xyXG4gICAqICBsb2cyXHJcbiAgICogIGxvZzEwXHJcbiAgICogIG1heFxyXG4gICAqICBtaW5cclxuICAgKiAgbW9kXHJcbiAgICogIG11bFxyXG4gICAqICBwb3dcclxuICAgKiAgcmFuZG9tXHJcbiAgICogIHJvdW5kXHJcbiAgICogIHNldFxyXG4gICAqICBzaWduXHJcbiAgICogIHNpblxyXG4gICAqICBzaW5oXHJcbiAgICogIHNxcnRcclxuICAgKiAgc3ViXHJcbiAgICogIHN1bVxyXG4gICAqICB0YW5cclxuICAgKiAgdGFuaFxyXG4gICAqICB0cnVuY1xyXG4gICAqL1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgYHhgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gYWJzKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5hYnMoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBhcmNjb3NpbmUgaW4gcmFkaWFucyBvZiBgeGAuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBhY29zKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5hY29zKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgaW52ZXJzZSBvZiB0aGUgaHlwZXJib2xpYyBjb3NpbmUgb2YgYHhgLCByb3VuZGVkIHRvXHJcbiAgICogYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gQSB2YWx1ZSBpbiByYWRpYW5zLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gYWNvc2goeCkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLmFjb3NoKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgc3VtIG9mIGB4YCBhbmQgYHlgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gIHNpZ25pZmljYW50XHJcbiAgICogZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKiB5IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBhZGQoeCwgeSkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLnBsdXMoeSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgYXJjc2luZSBpbiByYWRpYW5zIG9mIGB4YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYFxyXG4gICAqIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBhc2luKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5hc2luKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgaW52ZXJzZSBvZiB0aGUgaHlwZXJib2xpYyBzaW5lIG9mIGB4YCwgcm91bmRlZCB0b1xyXG4gICAqIGBwcmVjaXNpb25gIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IEEgdmFsdWUgaW4gcmFkaWFucy5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGFzaW5oKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5hc2luaCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGFyY3RhbmdlbnQgaW4gcmFkaWFucyBvZiBgeGAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gYXRhbih4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuYXRhbigpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGludmVyc2Ugb2YgdGhlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiBgeGAsIHJvdW5kZWQgdG9cclxuICAgKiBgcHJlY2lzaW9uYCBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBBIHZhbHVlIGluIHJhZGlhbnMuXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBhdGFuaCh4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuYXRhbmgoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBhcmN0YW5nZW50IGluIHJhZGlhbnMgb2YgYHkveGAgaW4gdGhlIHJhbmdlIC1waSB0byBwaVxyXG4gICAqIChpbmNsdXNpdmUpLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiBEb21haW46IFstSW5maW5pdHksIEluZmluaXR5XVxyXG4gICAqIFJhbmdlOiBbLXBpLCBwaV1cclxuICAgKlxyXG4gICAqIHkge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gVGhlIHktY29vcmRpbmF0ZS5cclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IFRoZSB4LWNvb3JkaW5hdGUuXHJcbiAgICpcclxuICAgKiBhdGFuMijCsTAsIC0wKSAgICAgICAgICAgICAgID0gwrFwaVxyXG4gICAqIGF0YW4yKMKxMCwgKzApICAgICAgICAgICAgICAgPSDCsTBcclxuICAgKiBhdGFuMijCsTAsIC14KSAgICAgICAgICAgICAgID0gwrFwaSBmb3IgeCA+IDBcclxuICAgKiBhdGFuMijCsTAsIHgpICAgICAgICAgICAgICAgID0gwrEwIGZvciB4ID4gMFxyXG4gICAqIGF0YW4yKC15LCDCsTApICAgICAgICAgICAgICAgPSAtcGkvMiBmb3IgeSA+IDBcclxuICAgKiBhdGFuMih5LCDCsTApICAgICAgICAgICAgICAgID0gcGkvMiBmb3IgeSA+IDBcclxuICAgKiBhdGFuMijCsXksIC1JbmZpbml0eSkgICAgICAgID0gwrFwaSBmb3IgZmluaXRlIHkgPiAwXHJcbiAgICogYXRhbjIowrF5LCArSW5maW5pdHkpICAgICAgICA9IMKxMCBmb3IgZmluaXRlIHkgPiAwXHJcbiAgICogYXRhbjIowrFJbmZpbml0eSwgeCkgICAgICAgICA9IMKxcGkvMiBmb3IgZmluaXRlIHhcclxuICAgKiBhdGFuMijCsUluZmluaXR5LCAtSW5maW5pdHkpID0gwrEzKnBpLzRcclxuICAgKiBhdGFuMijCsUluZmluaXR5LCArSW5maW5pdHkpID0gwrFwaS80XHJcbiAgICogYXRhbjIoTmFOLCB4KSA9IE5hTlxyXG4gICAqIGF0YW4yKHksIE5hTikgPSBOYU5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGF0YW4yKHksIHgpIHtcclxuICAgIHkgPSBuZXcgdGhpcyh5KTtcclxuICAgIHggPSBuZXcgdGhpcyh4KTtcclxuICAgIHZhciByLFxyXG4gICAgICBwciA9IHRoaXMucHJlY2lzaW9uLFxyXG4gICAgICBybSA9IHRoaXMucm91bmRpbmcsXHJcbiAgICAgIHdwciA9IHByICsgNDtcclxuXHJcbiAgICAvLyBFaXRoZXIgTmFOXHJcbiAgICBpZiAoIXkucyB8fCAheC5zKSB7XHJcbiAgICAgIHIgPSBuZXcgdGhpcyhOYU4pO1xyXG5cclxuICAgIC8vIEJvdGggwrFJbmZpbml0eVxyXG4gICAgfSBlbHNlIGlmICgheS5kICYmICF4LmQpIHtcclxuICAgICAgciA9IGdldFBpKHRoaXMsIHdwciwgMSkudGltZXMoeC5zID4gMCA/IDAuMjUgOiAwLjc1KTtcclxuICAgICAgci5zID0geS5zO1xyXG5cclxuICAgIC8vIHggaXMgwrFJbmZpbml0eSBvciB5IGlzIMKxMFxyXG4gICAgfSBlbHNlIGlmICgheC5kIHx8IHkuaXNaZXJvKCkpIHtcclxuICAgICAgciA9IHgucyA8IDAgPyBnZXRQaSh0aGlzLCBwciwgcm0pIDogbmV3IHRoaXMoMCk7XHJcbiAgICAgIHIucyA9IHkucztcclxuXHJcbiAgICAvLyB5IGlzIMKxSW5maW5pdHkgb3IgeCBpcyDCsTBcclxuICAgIH0gZWxzZSBpZiAoIXkuZCB8fCB4LmlzWmVybygpKSB7XHJcbiAgICAgIHIgPSBnZXRQaSh0aGlzLCB3cHIsIDEpLnRpbWVzKDAuNSk7XHJcbiAgICAgIHIucyA9IHkucztcclxuXHJcbiAgICAvLyBCb3RoIG5vbi16ZXJvIGFuZCBmaW5pdGVcclxuICAgIH0gZWxzZSBpZiAoeC5zIDwgMCkge1xyXG4gICAgICB0aGlzLnByZWNpc2lvbiA9IHdwcjtcclxuICAgICAgdGhpcy5yb3VuZGluZyA9IDE7XHJcbiAgICAgIHIgPSB0aGlzLmF0YW4oZGl2aWRlKHksIHgsIHdwciwgMSkpO1xyXG4gICAgICB4ID0gZ2V0UGkodGhpcywgd3ByLCAxKTtcclxuICAgICAgdGhpcy5wcmVjaXNpb24gPSBwcjtcclxuICAgICAgdGhpcy5yb3VuZGluZyA9IHJtO1xyXG4gICAgICByID0geS5zIDwgMCA/IHIubWludXMoeCkgOiByLnBsdXMoeCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByID0gdGhpcy5hdGFuKGRpdmlkZSh5LCB4LCB3cHIsIDEpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcjtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBjdWJlIHJvb3Qgb2YgYHhgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gIHNpZ25pZmljYW50XHJcbiAgICogZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNicnQoeCkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLmNicnQoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIGB4YCByb3VuZGVkIHRvIGFuIGludGVnZXIgdXNpbmcgYFJPVU5EX0NFSUxgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gY2VpbCh4KSB7XHJcbiAgICByZXR1cm4gZmluYWxpc2UoeCA9IG5ldyB0aGlzKHgpLCB4LmUgKyAxLCAyKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIGB4YCBjbGFtcGVkIHRvIHRoZSByYW5nZSBkZWxpbmVhdGVkIGJ5IGBtaW5gIGFuZCBgbWF4YC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKiBtaW4ge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKiBtYXgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNsYW1wKHgsIG1pbiwgbWF4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuY2xhbXAobWluLCBtYXgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogQ29uZmlndXJlIGdsb2JhbCBzZXR0aW5ncyBmb3IgYSBEZWNpbWFsIGNvbnN0cnVjdG9yLlxyXG4gICAqXHJcbiAgICogYG9iamAgaXMgYW4gb2JqZWN0IHdpdGggb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzLFxyXG4gICAqXHJcbiAgICogICBwcmVjaXNpb24gIHtudW1iZXJ9XHJcbiAgICogICByb3VuZGluZyAgIHtudW1iZXJ9XHJcbiAgICogICB0b0V4cE5lZyAgIHtudW1iZXJ9XHJcbiAgICogICB0b0V4cFBvcyAgIHtudW1iZXJ9XHJcbiAgICogICBtYXhFICAgICAgIHtudW1iZXJ9XHJcbiAgICogICBtaW5FICAgICAgIHtudW1iZXJ9XHJcbiAgICogICBtb2R1bG8gICAgIHtudW1iZXJ9XHJcbiAgICogICBjcnlwdG8gICAgIHtib29sZWFufG51bWJlcn1cclxuICAgKiAgIGRlZmF1bHRzICAge3RydWV9XHJcbiAgICpcclxuICAgKiBFLmcuIERlY2ltYWwuY29uZmlnKHsgcHJlY2lzaW9uOiAyMCwgcm91bmRpbmc6IDQgfSlcclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNvbmZpZyhvYmopIHtcclxuICAgIGlmICghb2JqIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB0aHJvdyBFcnJvcihkZWNpbWFsRXJyb3IgKyAnT2JqZWN0IGV4cGVjdGVkJyk7XHJcbiAgICB2YXIgaSwgcCwgdixcclxuICAgICAgdXNlRGVmYXVsdHMgPSBvYmouZGVmYXVsdHMgPT09IHRydWUsXHJcbiAgICAgIHBzID0gW1xyXG4gICAgICAgICdwcmVjaXNpb24nLCAxLCBNQVhfRElHSVRTLFxyXG4gICAgICAgICdyb3VuZGluZycsIDAsIDgsXHJcbiAgICAgICAgJ3RvRXhwTmVnJywgLUVYUF9MSU1JVCwgMCxcclxuICAgICAgICAndG9FeHBQb3MnLCAwLCBFWFBfTElNSVQsXHJcbiAgICAgICAgJ21heEUnLCAwLCBFWFBfTElNSVQsXHJcbiAgICAgICAgJ21pbkUnLCAtRVhQX0xJTUlULCAwLFxyXG4gICAgICAgICdtb2R1bG8nLCAwLCA5XHJcbiAgICAgIF07XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IHBzLmxlbmd0aDsgaSArPSAzKSB7XHJcbiAgICAgIGlmIChwID0gcHNbaV0sIHVzZURlZmF1bHRzKSB0aGlzW3BdID0gREVGQVVMVFNbcF07XHJcbiAgICAgIGlmICgodiA9IG9ialtwXSkgIT09IHZvaWQgMCkge1xyXG4gICAgICAgIGlmIChtYXRoZmxvb3IodikgPT09IHYgJiYgdiA+PSBwc1tpICsgMV0gJiYgdiA8PSBwc1tpICsgMl0pIHRoaXNbcF0gPSB2O1xyXG4gICAgICAgIGVsc2UgdGhyb3cgRXJyb3IoaW52YWxpZEFyZ3VtZW50ICsgcCArICc6ICcgKyB2KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChwID0gJ2NyeXB0bycsIHVzZURlZmF1bHRzKSB0aGlzW3BdID0gREVGQVVMVFNbcF07XHJcbiAgICBpZiAoKHYgPSBvYmpbcF0pICE9PSB2b2lkIDApIHtcclxuICAgICAgaWYgKHYgPT09IHRydWUgfHwgdiA9PT0gZmFsc2UgfHwgdiA9PT0gMCB8fCB2ID09PSAxKSB7XHJcbiAgICAgICAgaWYgKHYpIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgY3J5cHRvICE9ICd1bmRlZmluZWQnICYmIGNyeXB0byAmJlxyXG4gICAgICAgICAgICAoY3J5cHRvLmdldFJhbmRvbVZhbHVlcyB8fCBjcnlwdG8ucmFuZG9tQnl0ZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXNbcF0gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoY3J5cHRvVW5hdmFpbGFibGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzW3BdID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRocm93IEVycm9yKGludmFsaWRBcmd1bWVudCArIHAgKyAnOiAnICsgdik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBjb3NpbmUgb2YgYHhgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gIHNpZ25pZmljYW50XHJcbiAgICogZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gQSB2YWx1ZSBpbiByYWRpYW5zLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gY29zKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5jb3MoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBoeXBlcmJvbGljIGNvc2luZSBvZiBgeGAsIHJvdW5kZWQgdG8gcHJlY2lzaW9uXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gQSB2YWx1ZSBpbiByYWRpYW5zLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gY29zaCh4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuY29zaCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogQ3JlYXRlIGFuZCByZXR1cm4gYSBEZWNpbWFsIGNvbnN0cnVjdG9yIHdpdGggdGhlIHNhbWUgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGFzIHRoaXMgRGVjaW1hbFxyXG4gICAqIGNvbnN0cnVjdG9yLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gY2xvbmUob2JqKSB7XHJcbiAgICB2YXIgaSwgcCwgcHM7XHJcblxyXG4gICAgLypcclxuICAgICAqIFRoZSBEZWNpbWFsIGNvbnN0cnVjdG9yIGFuZCBleHBvcnRlZCBmdW5jdGlvbi5cclxuICAgICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIGluc3RhbmNlLlxyXG4gICAgICpcclxuICAgICAqIHYge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gQSBudW1lcmljIHZhbHVlLlxyXG4gICAgICpcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gRGVjaW1hbCh2KSB7XHJcbiAgICAgIHZhciBlLCBpLCB0LFxyXG4gICAgICAgIHggPSB0aGlzO1xyXG5cclxuICAgICAgLy8gRGVjaW1hbCBjYWxsZWQgd2l0aG91dCBuZXcuXHJcbiAgICAgIGlmICghKHggaW5zdGFuY2VvZiBEZWNpbWFsKSkgcmV0dXJuIG5ldyBEZWNpbWFsKHYpO1xyXG5cclxuICAgICAgLy8gUmV0YWluIGEgcmVmZXJlbmNlIHRvIHRoaXMgRGVjaW1hbCBjb25zdHJ1Y3RvciwgYW5kIHNoYWRvdyBEZWNpbWFsLnByb3RvdHlwZS5jb25zdHJ1Y3RvclxyXG4gICAgICAvLyB3aGljaCBwb2ludHMgdG8gT2JqZWN0LlxyXG4gICAgICB4LmNvbnN0cnVjdG9yID0gRGVjaW1hbDtcclxuXHJcbiAgICAgIC8vIER1cGxpY2F0ZS5cclxuICAgICAgaWYgKGlzRGVjaW1hbEluc3RhbmNlKHYpKSB7XHJcbiAgICAgICAgeC5zID0gdi5zO1xyXG5cclxuICAgICAgICBpZiAoZXh0ZXJuYWwpIHtcclxuICAgICAgICAgIGlmICghdi5kIHx8IHYuZSA+IERlY2ltYWwubWF4RSkge1xyXG5cclxuICAgICAgICAgICAgLy8gSW5maW5pdHkuXHJcbiAgICAgICAgICAgIHguZSA9IE5hTjtcclxuICAgICAgICAgICAgeC5kID0gbnVsbDtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodi5lIDwgRGVjaW1hbC5taW5FKSB7XHJcblxyXG4gICAgICAgICAgICAvLyBaZXJvLlxyXG4gICAgICAgICAgICB4LmUgPSAwO1xyXG4gICAgICAgICAgICB4LmQgPSBbMF07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4LmUgPSB2LmU7XHJcbiAgICAgICAgICAgIHguZCA9IHYuZC5zbGljZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB4LmUgPSB2LmU7XHJcbiAgICAgICAgICB4LmQgPSB2LmQgPyB2LmQuc2xpY2UoKSA6IHYuZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdCA9IHR5cGVvZiB2O1xyXG5cclxuICAgICAgaWYgKHQgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaWYgKHYgPT09IDApIHtcclxuICAgICAgICAgIHgucyA9IDEgLyB2IDwgMCA/IC0xIDogMTtcclxuICAgICAgICAgIHguZSA9IDA7XHJcbiAgICAgICAgICB4LmQgPSBbMF07XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodiA8IDApIHtcclxuICAgICAgICAgIHYgPSAtdjtcclxuICAgICAgICAgIHgucyA9IC0xO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB4LnMgPSAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBzbWFsbCBpbnRlZ2Vycy5cclxuICAgICAgICBpZiAodiA9PT0gfn52ICYmIHYgPCAxZTcpIHtcclxuICAgICAgICAgIGZvciAoZSA9IDAsIGkgPSB2OyBpID49IDEwOyBpIC89IDEwKSBlKys7XHJcblxyXG4gICAgICAgICAgaWYgKGV4dGVybmFsKSB7XHJcbiAgICAgICAgICAgIGlmIChlID4gRGVjaW1hbC5tYXhFKSB7XHJcbiAgICAgICAgICAgICAgeC5lID0gTmFOO1xyXG4gICAgICAgICAgICAgIHguZCA9IG51bGw7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZSA8IERlY2ltYWwubWluRSkge1xyXG4gICAgICAgICAgICAgIHguZSA9IDA7XHJcbiAgICAgICAgICAgICAgeC5kID0gWzBdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHguZSA9IGU7XHJcbiAgICAgICAgICAgICAgeC5kID0gW3ZdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4LmUgPSBlO1xyXG4gICAgICAgICAgICB4LmQgPSBbdl07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAvLyBJbmZpbml0eSwgTmFOLlxyXG4gICAgICAgIH0gZWxzZSBpZiAodiAqIDAgIT09IDApIHtcclxuICAgICAgICAgIGlmICghdikgeC5zID0gTmFOO1xyXG4gICAgICAgICAgeC5lID0gTmFOO1xyXG4gICAgICAgICAgeC5kID0gbnVsbDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBwYXJzZURlY2ltYWwoeCwgdi50b1N0cmluZygpKTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAodCAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICB0aHJvdyBFcnJvcihpbnZhbGlkQXJndW1lbnQgKyB2KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gTWludXMgc2lnbj9cclxuICAgICAgaWYgKChpID0gdi5jaGFyQ29kZUF0KDApKSA9PT0gNDUpIHtcclxuICAgICAgICB2ID0gdi5zbGljZSgxKTtcclxuICAgICAgICB4LnMgPSAtMTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBQbHVzIHNpZ24/XHJcbiAgICAgICAgaWYgKGkgPT09IDQzKSB2ID0gdi5zbGljZSgxKTtcclxuICAgICAgICB4LnMgPSAxO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gaXNEZWNpbWFsLnRlc3QodikgPyBwYXJzZURlY2ltYWwoeCwgdikgOiBwYXJzZU90aGVyKHgsIHYpO1xyXG4gICAgfVxyXG5cclxuICAgIERlY2ltYWwucHJvdG90eXBlID0gUDtcclxuXHJcbiAgICBEZWNpbWFsLlJPVU5EX1VQID0gMDtcclxuICAgIERlY2ltYWwuUk9VTkRfRE9XTiA9IDE7XHJcbiAgICBEZWNpbWFsLlJPVU5EX0NFSUwgPSAyO1xyXG4gICAgRGVjaW1hbC5ST1VORF9GTE9PUiA9IDM7XHJcbiAgICBEZWNpbWFsLlJPVU5EX0hBTEZfVVAgPSA0O1xyXG4gICAgRGVjaW1hbC5ST1VORF9IQUxGX0RPV04gPSA1O1xyXG4gICAgRGVjaW1hbC5ST1VORF9IQUxGX0VWRU4gPSA2O1xyXG4gICAgRGVjaW1hbC5ST1VORF9IQUxGX0NFSUwgPSA3O1xyXG4gICAgRGVjaW1hbC5ST1VORF9IQUxGX0ZMT09SID0gODtcclxuICAgIERlY2ltYWwuRVVDTElEID0gOTtcclxuXHJcbiAgICBEZWNpbWFsLmNvbmZpZyA9IERlY2ltYWwuc2V0ID0gY29uZmlnO1xyXG4gICAgRGVjaW1hbC5jbG9uZSA9IGNsb25lO1xyXG4gICAgRGVjaW1hbC5pc0RlY2ltYWwgPSBpc0RlY2ltYWxJbnN0YW5jZTtcclxuXHJcbiAgICBEZWNpbWFsLmFicyA9IGFicztcclxuICAgIERlY2ltYWwuYWNvcyA9IGFjb3M7XHJcbiAgICBEZWNpbWFsLmFjb3NoID0gYWNvc2g7ICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwuYWRkID0gYWRkO1xyXG4gICAgRGVjaW1hbC5hc2luID0gYXNpbjtcclxuICAgIERlY2ltYWwuYXNpbmggPSBhc2luaDsgICAgICAgIC8vIEVTNlxyXG4gICAgRGVjaW1hbC5hdGFuID0gYXRhbjtcclxuICAgIERlY2ltYWwuYXRhbmggPSBhdGFuaDsgICAgICAgIC8vIEVTNlxyXG4gICAgRGVjaW1hbC5hdGFuMiA9IGF0YW4yO1xyXG4gICAgRGVjaW1hbC5jYnJ0ID0gY2JydDsgICAgICAgICAgLy8gRVM2XHJcbiAgICBEZWNpbWFsLmNlaWwgPSBjZWlsO1xyXG4gICAgRGVjaW1hbC5jbGFtcCA9IGNsYW1wO1xyXG4gICAgRGVjaW1hbC5jb3MgPSBjb3M7XHJcbiAgICBEZWNpbWFsLmNvc2ggPSBjb3NoOyAgICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwuZGl2ID0gZGl2O1xyXG4gICAgRGVjaW1hbC5leHAgPSBleHA7XHJcbiAgICBEZWNpbWFsLmZsb29yID0gZmxvb3I7XHJcbiAgICBEZWNpbWFsLmh5cG90ID0gaHlwb3Q7ICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwubG4gPSBsbjtcclxuICAgIERlY2ltYWwubG9nID0gbG9nO1xyXG4gICAgRGVjaW1hbC5sb2cxMCA9IGxvZzEwOyAgICAgICAgLy8gRVM2XHJcbiAgICBEZWNpbWFsLmxvZzIgPSBsb2cyOyAgICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwubWF4ID0gbWF4O1xyXG4gICAgRGVjaW1hbC5taW4gPSBtaW47XHJcbiAgICBEZWNpbWFsLm1vZCA9IG1vZDtcclxuICAgIERlY2ltYWwubXVsID0gbXVsO1xyXG4gICAgRGVjaW1hbC5wb3cgPSBwb3c7XHJcbiAgICBEZWNpbWFsLnJhbmRvbSA9IHJhbmRvbTtcclxuICAgIERlY2ltYWwucm91bmQgPSByb3VuZDtcclxuICAgIERlY2ltYWwuc2lnbiA9IHNpZ247ICAgICAgICAgIC8vIEVTNlxyXG4gICAgRGVjaW1hbC5zaW4gPSBzaW47XHJcbiAgICBEZWNpbWFsLnNpbmggPSBzaW5oOyAgICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwuc3FydCA9IHNxcnQ7XHJcbiAgICBEZWNpbWFsLnN1YiA9IHN1YjtcclxuICAgIERlY2ltYWwuc3VtID0gc3VtO1xyXG4gICAgRGVjaW1hbC50YW4gPSB0YW47XHJcbiAgICBEZWNpbWFsLnRhbmggPSB0YW5oOyAgICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwudHJ1bmMgPSB0cnVuYzsgICAgICAgIC8vIEVTNlxyXG5cclxuICAgIGlmIChvYmogPT09IHZvaWQgMCkgb2JqID0ge307XHJcbiAgICBpZiAob2JqKSB7XHJcbiAgICAgIGlmIChvYmouZGVmYXVsdHMgIT09IHRydWUpIHtcclxuICAgICAgICBwcyA9IFsncHJlY2lzaW9uJywgJ3JvdW5kaW5nJywgJ3RvRXhwTmVnJywgJ3RvRXhwUG9zJywgJ21heEUnLCAnbWluRScsICdtb2R1bG8nLCAnY3J5cHRvJ107XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHBzLmxlbmd0aDspIGlmICghb2JqLmhhc093blByb3BlcnR5KHAgPSBwc1tpKytdKSkgb2JqW3BdID0gdGhpc1twXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIERlY2ltYWwuY29uZmlnKG9iaik7XHJcblxyXG4gICAgcmV0dXJuIERlY2ltYWw7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyBgeGAgZGl2aWRlZCBieSBgeWAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnRcclxuICAgKiBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqIHkge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGRpdih4LCB5KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuZGl2KHkpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG5hdHVyYWwgZXhwb25lbnRpYWwgb2YgYHhgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gVGhlIHBvd2VyIHRvIHdoaWNoIHRvIHJhaXNlIHRoZSBiYXNlIG9mIHRoZSBuYXR1cmFsIGxvZy5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGV4cCh4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuZXhwKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyBgeGAgcm91bmQgdG8gYW4gaW50ZWdlciB1c2luZyBgUk9VTkRfRkxPT1JgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gZmxvb3IoeCkge1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHggPSBuZXcgdGhpcyh4KSwgeC5lICsgMSwgMyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIHN1bSBvZiB0aGUgc3F1YXJlcyBvZiB0aGUgYXJndW1lbnRzLFxyXG4gICAqIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIGh5cG90KGEsIGIsIC4uLikgPSBzcXJ0KGFeMiArIGJeMiArIC4uLilcclxuICAgKlxyXG4gICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gaHlwb3QoKSB7XHJcbiAgICB2YXIgaSwgbixcclxuICAgICAgdCA9IG5ldyB0aGlzKDApO1xyXG5cclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7KSB7XHJcbiAgICAgIG4gPSBuZXcgdGhpcyhhcmd1bWVudHNbaSsrXSk7XHJcbiAgICAgIGlmICghbi5kKSB7XHJcbiAgICAgICAgaWYgKG4ucykge1xyXG4gICAgICAgICAgZXh0ZXJuYWwgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuIG5ldyB0aGlzKDEgLyAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdCA9IG47XHJcbiAgICAgIH0gZWxzZSBpZiAodC5kKSB7XHJcbiAgICAgICAgdCA9IHQucGx1cyhuLnRpbWVzKG4pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gdC5zcXJ0KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiBvYmplY3QgaXMgYSBEZWNpbWFsIGluc3RhbmNlICh3aGVyZSBEZWNpbWFsIGlzIGFueSBEZWNpbWFsIGNvbnN0cnVjdG9yKSxcclxuICAgKiBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gaXNEZWNpbWFsSW5zdGFuY2Uob2JqKSB7XHJcbiAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRGVjaW1hbCB8fCBvYmogJiYgb2JqLnRvU3RyaW5nVGFnID09PSB0YWcgfHwgZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgbmF0dXJhbCBsb2dhcml0aG0gb2YgYHhgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGxuKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5sbigpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGxvZyBvZiBgeGAgdG8gdGhlIGJhc2UgYHlgLCBvciB0byBiYXNlIDEwIGlmIG5vIGJhc2VcclxuICAgKiBpcyBzcGVjaWZpZWQsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIGxvZ1t5XSh4KVxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBUaGUgYXJndW1lbnQgb2YgdGhlIGxvZ2FyaXRobS5cclxuICAgKiB5IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IFRoZSBiYXNlIG9mIHRoZSBsb2dhcml0aG0uXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBsb2coeCwgeSkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLmxvZyh5KTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBiYXNlIDIgbG9nYXJpdGhtIG9mIGB4YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYFxyXG4gICAqIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBsb2cyKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5sb2coMik7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgYmFzZSAxMCBsb2dhcml0aG0gb2YgYHhgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGxvZzEwKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5sb2coMTApO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG1heGltdW0gb2YgdGhlIGFyZ3VtZW50cy5cclxuICAgKlxyXG4gICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gbWF4KCkge1xyXG4gICAgcmV0dXJuIG1heE9yTWluKHRoaXMsIGFyZ3VtZW50cywgJ2x0Jyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgbWluaW11bSBvZiB0aGUgYXJndW1lbnRzLlxyXG4gICAqXHJcbiAgICogYXJndW1lbnRzIHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBtaW4oKSB7XHJcbiAgICByZXR1cm4gbWF4T3JNaW4odGhpcywgYXJndW1lbnRzLCAnZ3QnKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIGB4YCBtb2R1bG8gYHlgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gIHNpZ25pZmljYW50IGRpZ2l0c1xyXG4gICAqIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKiB5IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBtb2QoeCwgeSkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLm1vZCh5KTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIGB4YCBtdWx0aXBsaWVkIGJ5IGB5YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYCBzaWduaWZpY2FudFxyXG4gICAqIGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICogeSB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gbXVsKHgsIHkpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5tdWwoeSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyBgeGAgcmFpc2VkIHRvIHRoZSBwb3dlciBgeWAsIHJvdW5kZWQgdG8gcHJlY2lzaW9uXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gVGhlIGJhc2UuXHJcbiAgICogeSB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBUaGUgZXhwb25lbnQuXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBwb3coeCwgeSkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLnBvdyh5KTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybnMgYSBuZXcgRGVjaW1hbCB3aXRoIGEgcmFuZG9tIHZhbHVlIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiAwIGFuZCBsZXNzIHRoYW4gMSwgYW5kIHdpdGhcclxuICAgKiBgc2RgLCBvciBgRGVjaW1hbC5wcmVjaXNpb25gIGlmIGBzZGAgaXMgb21pdHRlZCwgc2lnbmlmaWNhbnQgZGlnaXRzIChvciBsZXNzIGlmIHRyYWlsaW5nIHplcm9zXHJcbiAgICogYXJlIHByb2R1Y2VkKS5cclxuICAgKlxyXG4gICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAwIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gcmFuZG9tKHNkKSB7XHJcbiAgICB2YXIgZCwgZSwgaywgbixcclxuICAgICAgaSA9IDAsXHJcbiAgICAgIHIgPSBuZXcgdGhpcygxKSxcclxuICAgICAgcmQgPSBbXTtcclxuXHJcbiAgICBpZiAoc2QgPT09IHZvaWQgMCkgc2QgPSB0aGlzLnByZWNpc2lvbjtcclxuICAgIGVsc2UgY2hlY2tJbnQzMihzZCwgMSwgTUFYX0RJR0lUUyk7XHJcblxyXG4gICAgayA9IE1hdGguY2VpbChzZCAvIExPR19CQVNFKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuY3J5cHRvKSB7XHJcbiAgICAgIGZvciAoOyBpIDwgazspIHJkW2krK10gPSBNYXRoLnJhbmRvbSgpICogMWU3IHwgMDtcclxuXHJcbiAgICAvLyBCcm93c2VycyBzdXBwb3J0aW5nIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMuXHJcbiAgICB9IGVsc2UgaWYgKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcclxuICAgICAgZCA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KGspKTtcclxuXHJcbiAgICAgIGZvciAoOyBpIDwgazspIHtcclxuICAgICAgICBuID0gZFtpXTtcclxuXHJcbiAgICAgICAgLy8gMCA8PSBuIDwgNDI5NDk2NzI5NlxyXG4gICAgICAgIC8vIFByb2JhYmlsaXR5IG4gPj0gNC4yOWU5LCBpcyA0OTY3Mjk2IC8gNDI5NDk2NzI5NiA9IDAuMDAxMTYgKDEgaW4gODY1KS5cclxuICAgICAgICBpZiAobiA+PSA0LjI5ZTkpIHtcclxuICAgICAgICAgIGRbaV0gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgxKSlbMF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyAwIDw9IG4gPD0gNDI4OTk5OTk5OVxyXG4gICAgICAgICAgLy8gMCA8PSAobiAlIDFlNykgPD0gOTk5OTk5OVxyXG4gICAgICAgICAgcmRbaSsrXSA9IG4gJSAxZTc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgLy8gTm9kZS5qcyBzdXBwb3J0aW5nIGNyeXB0by5yYW5kb21CeXRlcy5cclxuICAgIH0gZWxzZSBpZiAoY3J5cHRvLnJhbmRvbUJ5dGVzKSB7XHJcblxyXG4gICAgICAvLyBidWZmZXJcclxuICAgICAgZCA9IGNyeXB0by5yYW5kb21CeXRlcyhrICo9IDQpO1xyXG5cclxuICAgICAgZm9yICg7IGkgPCBrOykge1xyXG5cclxuICAgICAgICAvLyAwIDw9IG4gPCAyMTQ3NDgzNjQ4XHJcbiAgICAgICAgbiA9IGRbaV0gKyAoZFtpICsgMV0gPDwgOCkgKyAoZFtpICsgMl0gPDwgMTYpICsgKChkW2kgKyAzXSAmIDB4N2YpIDw8IDI0KTtcclxuXHJcbiAgICAgICAgLy8gUHJvYmFiaWxpdHkgbiA+PSAyLjE0ZTksIGlzIDc0ODM2NDggLyAyMTQ3NDgzNjQ4ID0gMC4wMDM1ICgxIGluIDI4NikuXHJcbiAgICAgICAgaWYgKG4gPj0gMi4xNGU5KSB7XHJcbiAgICAgICAgICBjcnlwdG8ucmFuZG9tQnl0ZXMoNCkuY29weShkLCBpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIDAgPD0gbiA8PSAyMTM5OTk5OTk5XHJcbiAgICAgICAgICAvLyAwIDw9IChuICUgMWU3KSA8PSA5OTk5OTk5XHJcbiAgICAgICAgICByZC5wdXNoKG4gJSAxZTcpO1xyXG4gICAgICAgICAgaSArPSA0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaSA9IGsgLyA0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgRXJyb3IoY3J5cHRvVW5hdmFpbGFibGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGsgPSByZFstLWldO1xyXG4gICAgc2QgJT0gTE9HX0JBU0U7XHJcblxyXG4gICAgLy8gQ29udmVydCB0cmFpbGluZyBkaWdpdHMgdG8gemVyb3MgYWNjb3JkaW5nIHRvIHNkLlxyXG4gICAgaWYgKGsgJiYgc2QpIHtcclxuICAgICAgbiA9IG1hdGhwb3coMTAsIExPR19CQVNFIC0gc2QpO1xyXG4gICAgICByZFtpXSA9IChrIC8gbiB8IDApICogbjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZW1vdmUgdHJhaWxpbmcgd29yZHMgd2hpY2ggYXJlIHplcm8uXHJcbiAgICBmb3IgKDsgcmRbaV0gPT09IDA7IGktLSkgcmQucG9wKCk7XHJcblxyXG4gICAgLy8gWmVybz9cclxuICAgIGlmIChpIDwgMCkge1xyXG4gICAgICBlID0gMDtcclxuICAgICAgcmQgPSBbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlID0gLTE7XHJcblxyXG4gICAgICAvLyBSZW1vdmUgbGVhZGluZyB3b3JkcyB3aGljaCBhcmUgemVybyBhbmQgYWRqdXN0IGV4cG9uZW50IGFjY29yZGluZ2x5LlxyXG4gICAgICBmb3IgKDsgcmRbMF0gPT09IDA7IGUgLT0gTE9HX0JBU0UpIHJkLnNoaWZ0KCk7XHJcblxyXG4gICAgICAvLyBDb3VudCB0aGUgZGlnaXRzIG9mIHRoZSBmaXJzdCB3b3JkIG9mIHJkIHRvIGRldGVybWluZSBsZWFkaW5nIHplcm9zLlxyXG4gICAgICBmb3IgKGsgPSAxLCBuID0gcmRbMF07IG4gPj0gMTA7IG4gLz0gMTApIGsrKztcclxuXHJcbiAgICAgIC8vIEFkanVzdCB0aGUgZXhwb25lbnQgZm9yIGxlYWRpbmcgemVyb3Mgb2YgdGhlIGZpcnN0IHdvcmQgb2YgcmQuXHJcbiAgICAgIGlmIChrIDwgTE9HX0JBU0UpIGUgLT0gTE9HX0JBU0UgLSBrO1xyXG4gICAgfVxyXG5cclxuICAgIHIuZSA9IGU7XHJcbiAgICByLmQgPSByZDtcclxuXHJcbiAgICByZXR1cm4gcjtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIGB4YCByb3VuZGVkIHRvIGFuIGludGVnZXIgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogVG8gZW11bGF0ZSBgTWF0aC5yb3VuZGAsIHNldCByb3VuZGluZyB0byA3IChST1VORF9IQUxGX0NFSUwpLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gcm91bmQoeCkge1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHggPSBuZXcgdGhpcyh4KSwgeC5lICsgMSwgdGhpcy5yb3VuZGluZyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm5cclxuICAgKiAgIDEgICAgaWYgeCA+IDAsXHJcbiAgICogIC0xICAgIGlmIHggPCAwLFxyXG4gICAqICAgMCAgICBpZiB4IGlzIDAsXHJcbiAgICogIC0wICAgIGlmIHggaXMgLTAsXHJcbiAgICogICBOYU4gIG90aGVyd2lzZVxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gc2lnbih4KSB7XHJcbiAgICB4ID0gbmV3IHRoaXMoeCk7XHJcbiAgICByZXR1cm4geC5kID8gKHguZFswXSA/IHgucyA6IDAgKiB4LnMpIDogeC5zIHx8IE5hTjtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBzaW5lIG9mIGB4YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYCBzaWduaWZpY2FudCBkaWdpdHNcclxuICAgKiB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IEEgdmFsdWUgaW4gcmFkaWFucy5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIHNpbih4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuc2luKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgaHlwZXJib2xpYyBzaW5lIG9mIGB4YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYFxyXG4gICAqIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IEEgdmFsdWUgaW4gcmFkaWFucy5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIHNpbmgoeCkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLnNpbmgoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBzcXVhcmUgcm9vdCBvZiBgeGAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnRcclxuICAgKiBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gc3FydCh4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuc3FydCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgYHhgIG1pbnVzIGB5YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYCBzaWduaWZpY2FudCBkaWdpdHNcclxuICAgKiB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICogeSB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gc3ViKHgsIHkpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5zdWIoeSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgc3VtIG9mIHRoZSBhcmd1bWVudHMsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogT25seSB0aGUgcmVzdWx0IGlzIHJvdW5kZWQsIG5vdCB0aGUgaW50ZXJtZWRpYXRlIGNhbGN1bGF0aW9ucy5cclxuICAgKlxyXG4gICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gc3VtKCkge1xyXG4gICAgdmFyIGkgPSAwLFxyXG4gICAgICBhcmdzID0gYXJndW1lbnRzLFxyXG4gICAgICB4ID0gbmV3IHRoaXMoYXJnc1tpXSk7XHJcblxyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgIGZvciAoOyB4LnMgJiYgKytpIDwgYXJncy5sZW5ndGg7KSB4ID0geC5wbHVzKGFyZ3NbaV0pO1xyXG4gICAgZXh0ZXJuYWwgPSB0cnVlO1xyXG5cclxuICAgIHJldHVybiBmaW5hbGlzZSh4LCB0aGlzLnByZWNpc2lvbiwgdGhpcy5yb3VuZGluZyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgdGFuZ2VudCBvZiBgeGAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnRcclxuICAgKiBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBBIHZhbHVlIGluIHJhZGlhbnMuXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiB0YW4oeCkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLnRhbigpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiBgeGAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBBIHZhbHVlIGluIHJhZGlhbnMuXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiB0YW5oKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS50YW5oKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyBgeGAgdHJ1bmNhdGVkIHRvIGFuIGludGVnZXIuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiB0cnVuYyh4KSB7XHJcbiAgICByZXR1cm4gZmluYWxpc2UoeCA9IG5ldyB0aGlzKHgpLCB4LmUgKyAxLCAxKTtcclxuICB9XHJcblxyXG5cclxuICAvLyBDcmVhdGUgYW5kIGNvbmZpZ3VyZSBpbml0aWFsIERlY2ltYWwgY29uc3RydWN0b3IuXHJcbiAgRGVjaW1hbCA9IGNsb25lKERFRkFVTFRTKTtcclxuICBEZWNpbWFsLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERlY2ltYWw7XHJcbiAgRGVjaW1hbFsnZGVmYXVsdCddID0gRGVjaW1hbC5EZWNpbWFsID0gRGVjaW1hbDtcclxuXHJcbiAgLy8gQ3JlYXRlIHRoZSBpbnRlcm5hbCBjb25zdGFudHMgZnJvbSB0aGVpciBzdHJpbmcgdmFsdWVzLlxyXG4gIExOMTAgPSBuZXcgRGVjaW1hbChMTjEwKTtcclxuICBQSSA9IG5ldyBEZWNpbWFsKFBJKTtcclxuXHJcblxyXG4gIC8vIEV4cG9ydC5cclxuXHJcblxyXG4gIC8vIEFNRC5cclxuICBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcclxuICAgIGRlZmluZShmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBEZWNpbWFsO1xyXG4gICAgfSk7XHJcblxyXG4gIC8vIE5vZGUgYW5kIG90aGVyIGVudmlyb25tZW50cyB0aGF0IHN1cHBvcnQgbW9kdWxlLmV4cG9ydHMuXHJcbiAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XHJcbiAgICBpZiAodHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCcpIHtcclxuICAgICAgUFtTeW1ib2xbJ2ZvciddKCdub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbScpXSA9IFAudG9TdHJpbmc7XHJcbiAgICAgIFBbU3ltYm9sLnRvU3RyaW5nVGFnXSA9ICdEZWNpbWFsJztcclxuICAgIH1cclxuXHJcbiAgICBtb2R1bGUuZXhwb3J0cyA9IERlY2ltYWw7XHJcblxyXG4gIC8vIEJyb3dzZXIuXHJcbiAgfSBlbHNlIHtcclxuICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcclxuICAgICAgZ2xvYmFsU2NvcGUgPSB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmICYmIHNlbGYuc2VsZiA9PSBzZWxmID8gc2VsZiA6IHdpbmRvdztcclxuICAgIH1cclxuXHJcbiAgICBub0NvbmZsaWN0ID0gZ2xvYmFsU2NvcGUuRGVjaW1hbDtcclxuICAgIERlY2ltYWwubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgZ2xvYmFsU2NvcGUuRGVjaW1hbCA9IG5vQ29uZmxpY3Q7XHJcbiAgICAgIHJldHVybiBEZWNpbWFsO1xyXG4gICAgfTtcclxuXHJcbiAgICBnbG9iYWxTY29wZS5EZWNpbWFsID0gRGVjaW1hbDtcclxuICB9XHJcbn0pKHRoaXMpO1xyXG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9vcGVuanNmLm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cbjsoZnVuY3Rpb24oKSB7XG5cbiAgLyoqIFVzZWQgYXMgYSBzYWZlIHJlZmVyZW5jZSBmb3IgYHVuZGVmaW5lZGAgaW4gcHJlLUVTNSBlbnZpcm9ubWVudHMuICovXG4gIHZhciB1bmRlZmluZWQ7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyLiAqL1xuICB2YXIgVkVSU0lPTiA9ICc0LjE3LjIwJztcblxuICAvKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbiAgdmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbiAgLyoqIEVycm9yIG1lc3NhZ2UgY29uc3RhbnRzLiAqL1xuICB2YXIgQ09SRV9FUlJPUl9URVhUID0gJ1Vuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLicsXG4gICAgICBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbiAgLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xuICB2YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIG1heGltdW0gbWVtb2l6ZSBjYWNoZSBzaXplLiAqL1xuICB2YXIgTUFYX01FTU9JWkVfU0laRSA9IDUwMDtcblxuICAvKiogVXNlZCBhcyB0aGUgaW50ZXJuYWwgYXJndW1lbnQgcGxhY2Vob2xkZXIuICovXG4gIHZhciBQTEFDRUhPTERFUiA9ICdfX2xvZGFzaF9wbGFjZWhvbGRlcl9fJztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xuICB2YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICAgIENMT05FX0ZMQVRfRkxBRyA9IDIsXG4gICAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xuICB2YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgZnVuY3Rpb24gbWV0YWRhdGEuICovXG4gIHZhciBXUkFQX0JJTkRfRkxBRyA9IDEsXG4gICAgICBXUkFQX0JJTkRfS0VZX0ZMQUcgPSAyLFxuICAgICAgV1JBUF9DVVJSWV9CT1VORF9GTEFHID0gNCxcbiAgICAgIFdSQVBfQ1VSUllfRkxBRyA9IDgsXG4gICAgICBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcgPSAxNixcbiAgICAgIFdSQVBfUEFSVElBTF9GTEFHID0gMzIsXG4gICAgICBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyA9IDY0LFxuICAgICAgV1JBUF9BUllfRkxBRyA9IDEyOCxcbiAgICAgIFdSQVBfUkVBUkdfRkxBRyA9IDI1NixcbiAgICAgIFdSQVBfRkxJUF9GTEFHID0gNTEyO1xuXG4gIC8qKiBVc2VkIGFzIGRlZmF1bHQgb3B0aW9ucyBmb3IgYF8udHJ1bmNhdGVgLiAqL1xuICB2YXIgREVGQVVMVF9UUlVOQ19MRU5HVEggPSAzMCxcbiAgICAgIERFRkFVTFRfVFJVTkNfT01JU1NJT04gPSAnLi4uJztcblxuICAvKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG4gIHZhciBIT1RfQ09VTlQgPSA4MDAsXG4gICAgICBIT1RfU1BBTiA9IDE2O1xuXG4gIC8qKiBVc2VkIHRvIGluZGljYXRlIHRoZSB0eXBlIG9mIGxhenkgaXRlcmF0ZWVzLiAqL1xuICB2YXIgTEFaWV9GSUxURVJfRkxBRyA9IDEsXG4gICAgICBMQVpZX01BUF9GTEFHID0gMixcbiAgICAgIExBWllfV0hJTEVfRkxBRyA9IDM7XG5cbiAgLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG4gIHZhciBJTkZJTklUWSA9IDEgLyAwLFxuICAgICAgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTEsXG4gICAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4LFxuICAgICAgTkFOID0gMCAvIDA7XG5cbiAgLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdGhlIG1heGltdW0gbGVuZ3RoIGFuZCBpbmRleCBvZiBhbiBhcnJheS4gKi9cbiAgdmFyIE1BWF9BUlJBWV9MRU5HVEggPSA0Mjk0OTY3Mjk1LFxuICAgICAgTUFYX0FSUkFZX0lOREVYID0gTUFYX0FSUkFZX0xFTkdUSCAtIDEsXG4gICAgICBIQUxGX01BWF9BUlJBWV9MRU5HVEggPSBNQVhfQVJSQVlfTEVOR1RIID4+PiAxO1xuXG4gIC8qKiBVc2VkIHRvIGFzc29jaWF0ZSB3cmFwIG1ldGhvZHMgd2l0aCB0aGVpciBiaXQgZmxhZ3MuICovXG4gIHZhciB3cmFwRmxhZ3MgPSBbXG4gICAgWydhcnknLCBXUkFQX0FSWV9GTEFHXSxcbiAgICBbJ2JpbmQnLCBXUkFQX0JJTkRfRkxBR10sXG4gICAgWydiaW5kS2V5JywgV1JBUF9CSU5EX0tFWV9GTEFHXSxcbiAgICBbJ2N1cnJ5JywgV1JBUF9DVVJSWV9GTEFHXSxcbiAgICBbJ2N1cnJ5UmlnaHQnLCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUddLFxuICAgIFsnZmxpcCcsIFdSQVBfRkxJUF9GTEFHXSxcbiAgICBbJ3BhcnRpYWwnLCBXUkFQX1BBUlRJQUxfRkxBR10sXG4gICAgWydwYXJ0aWFsUmlnaHQnLCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBR10sXG4gICAgWydyZWFyZycsIFdSQVBfUkVBUkdfRkxBR11cbiAgXTtcblxuICAvKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG4gIHZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgICBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgICAgZG9tRXhjVGFnID0gJ1tvYmplY3QgRE9NRXhjZXB0aW9uXScsXG4gICAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgICAgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgICAgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJyxcbiAgICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJyxcbiAgICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nLFxuICAgICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXScsXG4gICAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nLFxuICAgICAgd2Vha1NldFRhZyA9ICdbb2JqZWN0IFdlYWtTZXRdJztcblxuICB2YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGVtcHR5IHN0cmluZyBsaXRlcmFscyBpbiBjb21waWxlZCB0ZW1wbGF0ZSBzb3VyY2UuICovXG4gIHZhciByZUVtcHR5U3RyaW5nTGVhZGluZyA9IC9cXGJfX3AgXFwrPSAnJzsvZyxcbiAgICAgIHJlRW1wdHlTdHJpbmdNaWRkbGUgPSAvXFxiKF9fcCBcXCs9KSAnJyBcXCsvZyxcbiAgICAgIHJlRW1wdHlTdHJpbmdUcmFpbGluZyA9IC8oX19lXFwoLio/XFwpfFxcYl9fdFxcKSkgXFwrXFxuJyc7L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggSFRNTCBlbnRpdGllcyBhbmQgSFRNTCBjaGFyYWN0ZXJzLiAqL1xuICB2YXIgcmVFc2NhcGVkSHRtbCA9IC8mKD86YW1wfGx0fGd0fHF1b3R8IzM5KTsvZyxcbiAgICAgIHJlVW5lc2NhcGVkSHRtbCA9IC9bJjw+XCInXS9nLFxuICAgICAgcmVIYXNFc2NhcGVkSHRtbCA9IFJlZ0V4cChyZUVzY2FwZWRIdG1sLnNvdXJjZSksXG4gICAgICByZUhhc1VuZXNjYXBlZEh0bWwgPSBSZWdFeHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbiAgdmFyIHJlRXNjYXBlID0gLzwlLShbXFxzXFxTXSs/KSU+L2csXG4gICAgICByZUV2YWx1YXRlID0gLzwlKFtcXHNcXFNdKz8pJT4vZyxcbiAgICAgIHJlSW50ZXJwb2xhdGUgPSAvPCU9KFtcXHNcXFNdKz8pJT4vZztcblxuICAvKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG4gIHZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLFxuICAgICAgcmVJc1BsYWluUHJvcCA9IC9eXFx3KiQvLFxuICAgICAgcmVQcm9wTmFtZSA9IC9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZztcblxuICAvKipcbiAgICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICAgKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAgICovXG4gIHZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2csXG4gICAgICByZUhhc1JlZ0V4cENoYXIgPSBSZWdFeHAocmVSZWdFeHBDaGFyLnNvdXJjZSk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gKi9cbiAgdmFyIHJlVHJpbSA9IC9eXFxzK3xcXHMrJC9nLFxuICAgICAgcmVUcmltU3RhcnQgPSAvXlxccysvLFxuICAgICAgcmVUcmltRW5kID0gL1xccyskLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3cmFwIGRldGFpbCBjb21tZW50cy4gKi9cbiAgdmFyIHJlV3JhcENvbW1lbnQgPSAvXFx7KD86XFxuXFwvXFwqIFxcW3dyYXBwZWQgd2l0aCAuK1xcXSBcXCpcXC8pP1xcbj8vLFxuICAgICAgcmVXcmFwRGV0YWlscyA9IC9cXHtcXG5cXC9cXCogXFxbd3JhcHBlZCB3aXRoICguKylcXF0gXFwqLyxcbiAgICAgIHJlU3BsaXREZXRhaWxzID0gLyw/ICYgLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3b3JkcyBjb21wb3NlZCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4gKi9cbiAgdmFyIHJlQXNjaWlXb3JkID0gL1teXFx4MDAtXFx4MmZcXHgzYS1cXHg0MFxceDViLVxceDYwXFx4N2ItXFx4N2ZdKy9nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL1xuICB2YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2hcbiAgICogW0VTIHRlbXBsYXRlIGRlbGltaXRlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRlbXBsYXRlLWxpdGVyYWwtbGV4aWNhbC1jb21wb25lbnRzKS5cbiAgICovXG4gIHZhciByZUVzVGVtcGxhdGUgPSAvXFwkXFx7KFteXFxcXH1dKig/OlxcXFwuW15cXFxcfV0qKSopXFx9L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUZsYWdzID0gL1xcdyokLztcblxuICAvKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xuICB2YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xuICB2YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIExhdGluIFVuaWNvZGUgbGV0dGVycyAoZXhjbHVkaW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRvcnMpLiAqL1xuICB2YXIgcmVMYXRpbiA9IC9bXFx4YzAtXFx4ZDZcXHhkOC1cXHhmNlxceGY4LVxceGZmXFx1MDEwMC1cXHUwMTdmXS9nO1xuXG4gIC8qKiBVc2VkIHRvIGVuc3VyZSBjYXB0dXJpbmcgb3JkZXIgb2YgdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbiAgdmFyIHJlTm9NYXRjaCA9IC8oJF4pLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB1bmVzY2FwZWQgY2hhcmFjdGVycyBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciByZVVuZXNjYXBlZFN0cmluZyA9IC9bJ1xcblxcclxcdTIwMjhcXHUyMDI5XFxcXF0vZztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG4gIHZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgICAgcnNEaW5nYmF0UmFuZ2UgPSAnXFxcXHUyNzAwLVxcXFx1MjdiZicsXG4gICAgICByc0xvd2VyUmFuZ2UgPSAnYS16XFxcXHhkZi1cXFxceGY2XFxcXHhmOC1cXFxceGZmJyxcbiAgICAgIHJzTWF0aE9wUmFuZ2UgPSAnXFxcXHhhY1xcXFx4YjFcXFxceGQ3XFxcXHhmNycsXG4gICAgICByc05vbkNoYXJSYW5nZSA9ICdcXFxceDAwLVxcXFx4MmZcXFxceDNhLVxcXFx4NDBcXFxceDViLVxcXFx4NjBcXFxceDdiLVxcXFx4YmYnLFxuICAgICAgcnNQdW5jdHVhdGlvblJhbmdlID0gJ1xcXFx1MjAwMC1cXFxcdTIwNmYnLFxuICAgICAgcnNTcGFjZVJhbmdlID0gJyBcXFxcdFxcXFx4MGJcXFxcZlxcXFx4YTBcXFxcdWZlZmZcXFxcblxcXFxyXFxcXHUyMDI4XFxcXHUyMDI5XFxcXHUxNjgwXFxcXHUxODBlXFxcXHUyMDAwXFxcXHUyMDAxXFxcXHUyMDAyXFxcXHUyMDAzXFxcXHUyMDA0XFxcXHUyMDA1XFxcXHUyMDA2XFxcXHUyMDA3XFxcXHUyMDA4XFxcXHUyMDA5XFxcXHUyMDBhXFxcXHUyMDJmXFxcXHUyMDVmXFxcXHUzMDAwJyxcbiAgICAgIHJzVXBwZXJSYW5nZSA9ICdBLVpcXFxceGMwLVxcXFx4ZDZcXFxceGQ4LVxcXFx4ZGUnLFxuICAgICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnLFxuICAgICAgcnNCcmVha1JhbmdlID0gcnNNYXRoT3BSYW5nZSArIHJzTm9uQ2hhclJhbmdlICsgcnNQdW5jdHVhdGlvblJhbmdlICsgcnNTcGFjZVJhbmdlO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbiAgdmFyIHJzQXBvcyA9IFwiWydcXHUyMDE5XVwiLFxuICAgICAgcnNBc3RyYWwgPSAnWycgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgICAgcnNCcmVhayA9ICdbJyArIHJzQnJlYWtSYW5nZSArICddJyxcbiAgICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgICByc0RpZ2l0cyA9ICdcXFxcZCsnLFxuICAgICAgcnNEaW5nYmF0ID0gJ1snICsgcnNEaW5nYmF0UmFuZ2UgKyAnXScsXG4gICAgICByc0xvd2VyID0gJ1snICsgcnNMb3dlclJhbmdlICsgJ10nLFxuICAgICAgcnNNaXNjID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyByc0JyZWFrUmFuZ2UgKyByc0RpZ2l0cyArIHJzRGluZ2JhdFJhbmdlICsgcnNMb3dlclJhbmdlICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgICAgcnNOb25Bc3RyYWwgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgICByc1VwcGVyID0gJ1snICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgcmVnZXhlcy4gKi9cbiAgdmFyIHJzTWlzY0xvd2VyID0gJyg/OicgKyByc0xvd2VyICsgJ3wnICsgcnNNaXNjICsgJyknLFxuICAgICAgcnNNaXNjVXBwZXIgPSAnKD86JyArIHJzVXBwZXIgKyAnfCcgKyByc01pc2MgKyAnKScsXG4gICAgICByc09wdENvbnRyTG93ZXIgPSAnKD86JyArIHJzQXBvcyArICcoPzpkfGxsfG18cmV8c3x0fHZlKSk/JyxcbiAgICAgIHJzT3B0Q29udHJVcHBlciA9ICcoPzonICsgcnNBcG9zICsgJyg/OkR8TEx8TXxSRXxTfFR8VkUpKT8nLFxuICAgICAgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgICAgcnNPcHRWYXIgPSAnWycgKyByc1ZhclJhbmdlICsgJ10/JyxcbiAgICAgIHJzT3B0Sm9pbiA9ICcoPzonICsgcnNaV0ogKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKicsXG4gICAgICByc09yZExvd2VyID0gJ1xcXFxkKig/OjFzdHwybmR8M3JkfCg/IVsxMjNdKVxcXFxkdGgpKD89XFxcXGJ8W0EtWl9dKScsXG4gICAgICByc09yZFVwcGVyID0gJ1xcXFxkKig/OjFTVHwyTkR8M1JEfCg/IVsxMjNdKVxcXFxkVEgpKD89XFxcXGJ8W2Etel9dKScsXG4gICAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgICByc0Vtb2ppID0gJyg/OicgKyBbcnNEaW5nYmF0LCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc1NlcSxcbiAgICAgIHJzU3ltYm9sID0gJyg/OicgKyBbcnNOb25Bc3RyYWwgKyByc0NvbWJvICsgJz8nLCByc0NvbWJvLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyLCByc0FzdHJhbF0uam9pbignfCcpICsgJyknO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGFwb3N0cm9waGVzLiAqL1xuICB2YXIgcmVBcG9zID0gUmVnRXhwKHJzQXBvcywgJ2cnKTtcblxuICAvKipcbiAgICogVXNlZCB0byBtYXRjaCBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpIGFuZFxuICAgKiBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzIGZvciBzeW1ib2xzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3NfZm9yX1N5bWJvbHMpLlxuICAgKi9cbiAgdmFyIHJlQ29tYm9NYXJrID0gUmVnRXhwKHJzQ29tYm8sICdnJyk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggW3N0cmluZyBzeW1ib2xzXShodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC11bmljb2RlKS4gKi9cbiAgdmFyIHJlVW5pY29kZSA9IFJlZ0V4cChyc0ZpdHogKyAnKD89JyArIHJzRml0eiArICcpfCcgKyByc1N5bWJvbCArIHJzU2VxLCAnZycpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGNvbXBsZXggb3IgY29tcG91bmQgd29yZHMuICovXG4gIHZhciByZVVuaWNvZGVXb3JkID0gUmVnRXhwKFtcbiAgICByc1VwcGVyICsgJz8nICsgcnNMb3dlciArICcrJyArIHJzT3B0Q29udHJMb3dlciArICcoPz0nICsgW3JzQnJlYWssIHJzVXBwZXIsICckJ10uam9pbignfCcpICsgJyknLFxuICAgIHJzTWlzY1VwcGVyICsgJysnICsgcnNPcHRDb250clVwcGVyICsgJyg/PScgKyBbcnNCcmVhaywgcnNVcHBlciArIHJzTWlzY0xvd2VyLCAnJCddLmpvaW4oJ3wnKSArICcpJyxcbiAgICByc1VwcGVyICsgJz8nICsgcnNNaXNjTG93ZXIgKyAnKycgKyByc09wdENvbnRyTG93ZXIsXG4gICAgcnNVcHBlciArICcrJyArIHJzT3B0Q29udHJVcHBlcixcbiAgICByc09yZFVwcGVyLFxuICAgIHJzT3JkTG93ZXIsXG4gICAgcnNEaWdpdHMsXG4gICAgcnNFbW9qaVxuICBdLmpvaW4oJ3wnKSwgJ2cnKTtcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbiAgdmFyIHJlSGFzVW5pY29kZSA9IFJlZ0V4cCgnWycgKyByc1pXSiArIHJzQXN0cmFsUmFuZ2UgICsgcnNDb21ib1JhbmdlICsgcnNWYXJSYW5nZSArICddJyk7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3MgdGhhdCBuZWVkIGEgbW9yZSByb2J1c3QgcmVnZXhwIHRvIG1hdGNoIHdvcmRzLiAqL1xuICB2YXIgcmVIYXNVbmljb2RlV29yZCA9IC9bYS16XVtBLVpdfFtBLVpdezJ9W2Etel18WzAtOV1bYS16QS1aXXxbYS16QS1aXVswLTldfFteYS16QS1aMC05IF0vO1xuXG4gIC8qKiBVc2VkIHRvIGFzc2lnbiBkZWZhdWx0IGBjb250ZXh0YCBvYmplY3QgcHJvcGVydGllcy4gKi9cbiAgdmFyIGNvbnRleHRQcm9wcyA9IFtcbiAgICAnQXJyYXknLCAnQnVmZmVyJywgJ0RhdGFWaWV3JywgJ0RhdGUnLCAnRXJyb3InLCAnRmxvYXQzMkFycmF5JywgJ0Zsb2F0NjRBcnJheScsXG4gICAgJ0Z1bmN0aW9uJywgJ0ludDhBcnJheScsICdJbnQxNkFycmF5JywgJ0ludDMyQXJyYXknLCAnTWFwJywgJ01hdGgnLCAnT2JqZWN0JyxcbiAgICAnUHJvbWlzZScsICdSZWdFeHAnLCAnU2V0JywgJ1N0cmluZycsICdTeW1ib2wnLCAnVHlwZUVycm9yJywgJ1VpbnQ4QXJyYXknLFxuICAgICdVaW50OENsYW1wZWRBcnJheScsICdVaW50MTZBcnJheScsICdVaW50MzJBcnJheScsICdXZWFrTWFwJyxcbiAgICAnXycsICdjbGVhclRpbWVvdXQnLCAnaXNGaW5pdGUnLCAncGFyc2VJbnQnLCAnc2V0VGltZW91dCdcbiAgXTtcblxuICAvKiogVXNlZCB0byBtYWtlIHRlbXBsYXRlIHNvdXJjZVVSTHMgZWFzaWVyIHRvIGlkZW50aWZ5LiAqL1xuICB2YXIgdGVtcGxhdGVDb3VudGVyID0gLTE7XG5cbiAgLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xuICB2YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbiAgdHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbiAgdHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxuICB0eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbiAgdHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4gIC8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovXG4gIHZhciBjbG9uZWFibGVUYWdzID0ge307XG4gIGNsb25lYWJsZVRhZ3NbYXJnc1RhZ10gPSBjbG9uZWFibGVUYWdzW2FycmF5VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRhVmlld1RhZ10gPVxuICBjbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbZmxvYXQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW2Zsb2F0NjRUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MTZUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW251bWJlclRhZ10gPSBjbG9uZWFibGVUYWdzW29iamVjdFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPSBjbG9uZWFibGVUYWdzW3NldFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3VpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbdWludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG4gIGNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuICAvKiogVXNlZCB0byBtYXAgTGF0aW4gVW5pY29kZSBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMuICovXG4gIHZhciBkZWJ1cnJlZExldHRlcnMgPSB7XG4gICAgLy8gTGF0aW4tMSBTdXBwbGVtZW50IGJsb2NrLlxuICAgICdcXHhjMCc6ICdBJywgICdcXHhjMSc6ICdBJywgJ1xceGMyJzogJ0EnLCAnXFx4YzMnOiAnQScsICdcXHhjNCc6ICdBJywgJ1xceGM1JzogJ0EnLFxuICAgICdcXHhlMCc6ICdhJywgICdcXHhlMSc6ICdhJywgJ1xceGUyJzogJ2EnLCAnXFx4ZTMnOiAnYScsICdcXHhlNCc6ICdhJywgJ1xceGU1JzogJ2EnLFxuICAgICdcXHhjNyc6ICdDJywgICdcXHhlNyc6ICdjJyxcbiAgICAnXFx4ZDAnOiAnRCcsICAnXFx4ZjAnOiAnZCcsXG4gICAgJ1xceGM4JzogJ0UnLCAgJ1xceGM5JzogJ0UnLCAnXFx4Y2EnOiAnRScsICdcXHhjYic6ICdFJyxcbiAgICAnXFx4ZTgnOiAnZScsICAnXFx4ZTknOiAnZScsICdcXHhlYSc6ICdlJywgJ1xceGViJzogJ2UnLFxuICAgICdcXHhjYyc6ICdJJywgICdcXHhjZCc6ICdJJywgJ1xceGNlJzogJ0knLCAnXFx4Y2YnOiAnSScsXG4gICAgJ1xceGVjJzogJ2knLCAgJ1xceGVkJzogJ2knLCAnXFx4ZWUnOiAnaScsICdcXHhlZic6ICdpJyxcbiAgICAnXFx4ZDEnOiAnTicsICAnXFx4ZjEnOiAnbicsXG4gICAgJ1xceGQyJzogJ08nLCAgJ1xceGQzJzogJ08nLCAnXFx4ZDQnOiAnTycsICdcXHhkNSc6ICdPJywgJ1xceGQ2JzogJ08nLCAnXFx4ZDgnOiAnTycsXG4gICAgJ1xceGYyJzogJ28nLCAgJ1xceGYzJzogJ28nLCAnXFx4ZjQnOiAnbycsICdcXHhmNSc6ICdvJywgJ1xceGY2JzogJ28nLCAnXFx4ZjgnOiAnbycsXG4gICAgJ1xceGQ5JzogJ1UnLCAgJ1xceGRhJzogJ1UnLCAnXFx4ZGInOiAnVScsICdcXHhkYyc6ICdVJyxcbiAgICAnXFx4ZjknOiAndScsICAnXFx4ZmEnOiAndScsICdcXHhmYic6ICd1JywgJ1xceGZjJzogJ3UnLFxuICAgICdcXHhkZCc6ICdZJywgICdcXHhmZCc6ICd5JywgJ1xceGZmJzogJ3knLFxuICAgICdcXHhjNic6ICdBZScsICdcXHhlNic6ICdhZScsXG4gICAgJ1xceGRlJzogJ1RoJywgJ1xceGZlJzogJ3RoJyxcbiAgICAnXFx4ZGYnOiAnc3MnLFxuICAgIC8vIExhdGluIEV4dGVuZGVkLUEgYmxvY2suXG4gICAgJ1xcdTAxMDAnOiAnQScsICAnXFx1MDEwMic6ICdBJywgJ1xcdTAxMDQnOiAnQScsXG4gICAgJ1xcdTAxMDEnOiAnYScsICAnXFx1MDEwMyc6ICdhJywgJ1xcdTAxMDUnOiAnYScsXG4gICAgJ1xcdTAxMDYnOiAnQycsICAnXFx1MDEwOCc6ICdDJywgJ1xcdTAxMGEnOiAnQycsICdcXHUwMTBjJzogJ0MnLFxuICAgICdcXHUwMTA3JzogJ2MnLCAgJ1xcdTAxMDknOiAnYycsICdcXHUwMTBiJzogJ2MnLCAnXFx1MDEwZCc6ICdjJyxcbiAgICAnXFx1MDEwZSc6ICdEJywgICdcXHUwMTEwJzogJ0QnLCAnXFx1MDEwZic6ICdkJywgJ1xcdTAxMTEnOiAnZCcsXG4gICAgJ1xcdTAxMTInOiAnRScsICAnXFx1MDExNCc6ICdFJywgJ1xcdTAxMTYnOiAnRScsICdcXHUwMTE4JzogJ0UnLCAnXFx1MDExYSc6ICdFJyxcbiAgICAnXFx1MDExMyc6ICdlJywgICdcXHUwMTE1JzogJ2UnLCAnXFx1MDExNyc6ICdlJywgJ1xcdTAxMTknOiAnZScsICdcXHUwMTFiJzogJ2UnLFxuICAgICdcXHUwMTFjJzogJ0cnLCAgJ1xcdTAxMWUnOiAnRycsICdcXHUwMTIwJzogJ0cnLCAnXFx1MDEyMic6ICdHJyxcbiAgICAnXFx1MDExZCc6ICdnJywgICdcXHUwMTFmJzogJ2cnLCAnXFx1MDEyMSc6ICdnJywgJ1xcdTAxMjMnOiAnZycsXG4gICAgJ1xcdTAxMjQnOiAnSCcsICAnXFx1MDEyNic6ICdIJywgJ1xcdTAxMjUnOiAnaCcsICdcXHUwMTI3JzogJ2gnLFxuICAgICdcXHUwMTI4JzogJ0knLCAgJ1xcdTAxMmEnOiAnSScsICdcXHUwMTJjJzogJ0knLCAnXFx1MDEyZSc6ICdJJywgJ1xcdTAxMzAnOiAnSScsXG4gICAgJ1xcdTAxMjknOiAnaScsICAnXFx1MDEyYic6ICdpJywgJ1xcdTAxMmQnOiAnaScsICdcXHUwMTJmJzogJ2knLCAnXFx1MDEzMSc6ICdpJyxcbiAgICAnXFx1MDEzNCc6ICdKJywgICdcXHUwMTM1JzogJ2onLFxuICAgICdcXHUwMTM2JzogJ0snLCAgJ1xcdTAxMzcnOiAnaycsICdcXHUwMTM4JzogJ2snLFxuICAgICdcXHUwMTM5JzogJ0wnLCAgJ1xcdTAxM2InOiAnTCcsICdcXHUwMTNkJzogJ0wnLCAnXFx1MDEzZic6ICdMJywgJ1xcdTAxNDEnOiAnTCcsXG4gICAgJ1xcdTAxM2EnOiAnbCcsICAnXFx1MDEzYyc6ICdsJywgJ1xcdTAxM2UnOiAnbCcsICdcXHUwMTQwJzogJ2wnLCAnXFx1MDE0Mic6ICdsJyxcbiAgICAnXFx1MDE0Myc6ICdOJywgICdcXHUwMTQ1JzogJ04nLCAnXFx1MDE0Nyc6ICdOJywgJ1xcdTAxNGEnOiAnTicsXG4gICAgJ1xcdTAxNDQnOiAnbicsICAnXFx1MDE0Nic6ICduJywgJ1xcdTAxNDgnOiAnbicsICdcXHUwMTRiJzogJ24nLFxuICAgICdcXHUwMTRjJzogJ08nLCAgJ1xcdTAxNGUnOiAnTycsICdcXHUwMTUwJzogJ08nLFxuICAgICdcXHUwMTRkJzogJ28nLCAgJ1xcdTAxNGYnOiAnbycsICdcXHUwMTUxJzogJ28nLFxuICAgICdcXHUwMTU0JzogJ1InLCAgJ1xcdTAxNTYnOiAnUicsICdcXHUwMTU4JzogJ1InLFxuICAgICdcXHUwMTU1JzogJ3InLCAgJ1xcdTAxNTcnOiAncicsICdcXHUwMTU5JzogJ3InLFxuICAgICdcXHUwMTVhJzogJ1MnLCAgJ1xcdTAxNWMnOiAnUycsICdcXHUwMTVlJzogJ1MnLCAnXFx1MDE2MCc6ICdTJyxcbiAgICAnXFx1MDE1Yic6ICdzJywgICdcXHUwMTVkJzogJ3MnLCAnXFx1MDE1Zic6ICdzJywgJ1xcdTAxNjEnOiAncycsXG4gICAgJ1xcdTAxNjInOiAnVCcsICAnXFx1MDE2NCc6ICdUJywgJ1xcdTAxNjYnOiAnVCcsXG4gICAgJ1xcdTAxNjMnOiAndCcsICAnXFx1MDE2NSc6ICd0JywgJ1xcdTAxNjcnOiAndCcsXG4gICAgJ1xcdTAxNjgnOiAnVScsICAnXFx1MDE2YSc6ICdVJywgJ1xcdTAxNmMnOiAnVScsICdcXHUwMTZlJzogJ1UnLCAnXFx1MDE3MCc6ICdVJywgJ1xcdTAxNzInOiAnVScsXG4gICAgJ1xcdTAxNjknOiAndScsICAnXFx1MDE2Yic6ICd1JywgJ1xcdTAxNmQnOiAndScsICdcXHUwMTZmJzogJ3UnLCAnXFx1MDE3MSc6ICd1JywgJ1xcdTAxNzMnOiAndScsXG4gICAgJ1xcdTAxNzQnOiAnVycsICAnXFx1MDE3NSc6ICd3JyxcbiAgICAnXFx1MDE3Nic6ICdZJywgICdcXHUwMTc3JzogJ3knLCAnXFx1MDE3OCc6ICdZJyxcbiAgICAnXFx1MDE3OSc6ICdaJywgICdcXHUwMTdiJzogJ1onLCAnXFx1MDE3ZCc6ICdaJyxcbiAgICAnXFx1MDE3YSc6ICd6JywgICdcXHUwMTdjJzogJ3onLCAnXFx1MDE3ZSc6ICd6JyxcbiAgICAnXFx1MDEzMic6ICdJSicsICdcXHUwMTMzJzogJ2lqJyxcbiAgICAnXFx1MDE1Mic6ICdPZScsICdcXHUwMTUzJzogJ29lJyxcbiAgICAnXFx1MDE0OSc6IFwiJ25cIiwgJ1xcdTAxN2YnOiAncydcbiAgfTtcblxuICAvKiogVXNlZCB0byBtYXAgY2hhcmFjdGVycyB0byBIVE1MIGVudGl0aWVzLiAqL1xuICB2YXIgaHRtbEVzY2FwZXMgPSB7XG4gICAgJyYnOiAnJmFtcDsnLFxuICAgICc8JzogJyZsdDsnLFxuICAgICc+JzogJyZndDsnLFxuICAgICdcIic6ICcmcXVvdDsnLFxuICAgIFwiJ1wiOiAnJiMzOTsnXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gbWFwIEhUTUwgZW50aXRpZXMgdG8gY2hhcmFjdGVycy4gKi9cbiAgdmFyIGh0bWxVbmVzY2FwZXMgPSB7XG4gICAgJyZhbXA7JzogJyYnLFxuICAgICcmbHQ7JzogJzwnLFxuICAgICcmZ3Q7JzogJz4nLFxuICAgICcmcXVvdDsnOiAnXCInLFxuICAgICcmIzM5Oyc6IFwiJ1wiXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciBzdHJpbmdFc2NhcGVzID0ge1xuICAgICdcXFxcJzogJ1xcXFwnLFxuICAgIFwiJ1wiOiBcIidcIixcbiAgICAnXFxuJzogJ24nLFxuICAgICdcXHInOiAncicsXG4gICAgJ1xcdTIwMjgnOiAndTIwMjgnLFxuICAgICdcXHUyMDI5JzogJ3UyMDI5J1xuICB9O1xuXG4gIC8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG4gIHZhciBmcmVlUGFyc2VGbG9hdCA9IHBhcnNlRmxvYXQsXG4gICAgICBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xuICB2YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbiAgdmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbiAgLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG4gIHZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG4gIHZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG4gIHZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbiAgLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbiAgdmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG4gIHZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4gIC8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xuICB2YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICAgIGlmICh0eXBlcykge1xuICAgICAgICByZXR1cm4gdHlwZXM7XG4gICAgICB9XG5cbiAgICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfSgpKTtcblxuICAvKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xuICB2YXIgbm9kZUlzQXJyYXlCdWZmZXIgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc0FycmF5QnVmZmVyLFxuICAgICAgbm9kZUlzRGF0ZSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzRGF0ZSxcbiAgICAgIG5vZGVJc01hcCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzTWFwLFxuICAgICAgbm9kZUlzUmVnRXhwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNSZWdFeHAsXG4gICAgICBub2RlSXNTZXQgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1NldCxcbiAgICAgIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgLyoqXG4gICAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAgICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gICAqL1xuICBmdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VBZ2dyZWdhdG9yYCBmb3IgYXJyYXlzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBhZ2dyZWdhdGVkIG9iamVjdC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUFnZ3JlZ2F0b3IoYXJyYXksIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgdmFsdWUsIGl0ZXJhdGVlKHZhbHVlKSwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoUmlnaHRgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFYWNoUmlnaHQoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbbGVuZ3RoXSwgbGVuZ3RoLCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmV2ZXJ5YCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFsbCBlbGVtZW50cyBwYXNzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAqICBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUV2ZXJ5KGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKCFwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZpbHRlcmAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmNsdWRlc2AgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIHNwZWNpZnlpbmcgYW4gaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksIHZhbHVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIHJldHVybiAhIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIDApID4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhcnJheUluY2x1ZGVzYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGEgY29tcGFyYXRvci5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUluY2x1ZGVzV2l0aChhcnJheSwgdmFsdWUsIGNvbXBhcmF0b3IpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGNvbXBhcmF0b3IodmFsdWUsIGFycmF5W2luZGV4XSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICogc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luaXRBY2N1bV0gU3BlY2lmeSB1c2luZyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgIGFzXG4gICAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlSZWR1Y2UoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbKytpbmRleF07XG4gICAgfVxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlUmlnaHRgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YCBhc1xuICAgKiAgdGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5UmVkdWNlUmlnaHQoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIGlmIChpbml0QWNjdW0gJiYgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGFycmF5Wy0tbGVuZ3RoXTtcbiAgICB9XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtsZW5ndGhdLCBsZW5ndGgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICogc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzaXplIG9mIGFuIEFTQ0lJIGBzdHJpbmdgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgaW5zcGVjdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gICAqL1xuICB2YXIgYXNjaWlTaXplID0gYmFzZVByb3BlcnR5KCdsZW5ndGgnKTtcblxuICAvKipcbiAgICogQ29udmVydHMgYW4gQVNDSUkgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGFzY2lpVG9BcnJheShzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLnNwbGl0KCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdHMgYW4gQVNDSUkgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAqL1xuICBmdW5jdGlvbiBhc2NpaVdvcmRzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVBc2NpaVdvcmQpIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5maW5kS2V5YCBhbmQgYF8uZmluZExhc3RLZXlgLFxuICAgKiB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYGNvbGxlY3Rpb25gXG4gICAqIHVzaW5nIGBlYWNoRnVuY2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZvdW5kIGVsZW1lbnQgb3IgaXRzIGtleSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VGaW5kS2V5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZWFjaEZ1bmMpIHtcbiAgICB2YXIgcmVzdWx0O1xuICAgIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGtleSwgY29sbGVjdGlvbikpIHtcbiAgICAgICAgcmVzdWx0ID0ga2V5O1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maW5kSW5kZXhgIGFuZCBgXy5maW5kTGFzdEluZGV4YCB3aXRob3V0XG4gICAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gZnJvbUluZGV4ICsgKGZyb21SaWdodCA/IDEgOiAtMSk7XG5cbiAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5kZXhPZmAgd2l0aG91dCBgZnJvbUluZGV4YCBib3VuZHMgY2hlY2tzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICAgID8gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleClcbiAgICAgIDogYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUlzTmFOLCBmcm9tSW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYmFzZUluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VJbmRleE9mV2l0aChhcnJheSwgdmFsdWUsIGZyb21JbmRleCwgY29tcGFyYXRvcikge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoY29tcGFyYXRvcihhcnJheVtpbmRleF0sIHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hTmAgd2l0aG91dCBzdXBwb3J0IGZvciBudW1iZXIgb2JqZWN0cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSXNOYU4odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lYW5gIGFuZCBgXy5tZWFuQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VNZWFuKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICByZXR1cm4gbGVuZ3RoID8gKGJhc2VTdW0oYXJyYXksIGl0ZXJhdGVlKSAvIGxlbmd0aCkgOiBOQU47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlPZmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVByb3BlcnR5T2Yob2JqZWN0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZWR1Y2VgIGFuZCBgXy5yZWR1Y2VSaWdodGAsIHdpdGhvdXQgc3VwcG9ydFxuICAgKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmAgdXNpbmcgYGVhY2hGdW5jYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaXRBY2N1bSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBvciBsYXN0IGVsZW1lbnQgb2ZcbiAgICogIGBjb2xsZWN0aW9uYCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBgY29sbGVjdGlvbmAuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VSZWR1Y2UoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGVhY2hGdW5jKSB7XG4gICAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGluaXRBY2N1bVxuICAgICAgICA/IChpbml0QWNjdW0gPSBmYWxzZSwgdmFsdWUpXG4gICAgICAgIDogaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRCeWAgd2hpY2ggdXNlcyBgY29tcGFyZXJgIHRvIGRlZmluZSB0aGVcbiAgICogc29ydCBvcmRlciBvZiBgYXJyYXlgIGFuZCByZXBsYWNlcyBjcml0ZXJpYSBvYmplY3RzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZ1xuICAgKiB2YWx1ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJlciBUaGUgZnVuY3Rpb24gdG8gZGVmaW5lIHNvcnQgb3JkZXIuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVNvcnRCeShhcnJheSwgY29tcGFyZXIpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgYXJyYXkuc29ydChjb21wYXJlcik7XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBhcnJheVtsZW5ndGhdID0gYXJyYXlbbGVuZ3RoXS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnN1bWAgYW5kIGBfLnN1bUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VTdW0oYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIHJlc3VsdCxcbiAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBjdXJyZW50ID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdKTtcbiAgICAgIGlmIChjdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBjdXJyZW50IDogKHJlc3VsdCArIGN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAgICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1BhaXJzYCBhbmQgYF8udG9QYWlyc0luYCB3aGljaCBjcmVhdGVzIGFuIGFycmF5XG4gICAqIG9mIGtleS12YWx1ZSBwYWlycyBmb3IgYG9iamVjdGAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXMgb2YgYHByb3BzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZ2V0IHZhbHVlcyBmb3IuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUb1BhaXJzKG9iamVjdCwgcHJvcHMpIHtcbiAgICByZXR1cm4gYXJyYXlNYXAocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIFtrZXksIG9iamVjdFtrZXldXTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnZhbHVlc2AgYW5kIGBfLnZhbHVlc0luYCB3aGljaCBjcmVhdGVzIGFuXG4gICAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICAgKiBvZiBgcHJvcHNgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVZhbHVlcyhvYmplY3QsIHByb3BzKSB7XG4gICAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgIHJldHVybiBvYmplY3Rba2V5XTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBgY2FjaGVgIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjYWNoZSBUaGUgY2FjaGUgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBjYWNoZUhhcyhjYWNoZSwga2V5KSB7XG4gICAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1TdGFydGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgc3RyaW5nIHN5bWJvbFxuICAgKiB0aGF0IGlzIG5vdCBmb3VuZCBpbiB0aGUgY2hhcmFjdGVyIHN5bWJvbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IHN0clN5bWJvbHMgVGhlIHN0cmluZyBzeW1ib2xzIHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7QXJyYXl9IGNoclN5bWJvbHMgVGhlIGNoYXJhY3RlciBzeW1ib2xzIHRvIGZpbmQuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCB1bm1hdGNoZWQgc3RyaW5nIHN5bWJvbC5cbiAgICovXG4gIGZ1bmN0aW9uIGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IHN0clN5bWJvbHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGggJiYgYmFzZUluZGV4T2YoY2hyU3ltYm9scywgc3RyU3ltYm9sc1tpbmRleF0sIDApID4gLTEpIHt9XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgc3RyaW5nIHN5bWJvbFxuICAgKiB0aGF0IGlzIG5vdCBmb3VuZCBpbiB0aGUgY2hhcmFjdGVyIHN5bWJvbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IHN0clN5bWJvbHMgVGhlIHN0cmluZyBzeW1ib2xzIHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7QXJyYXl9IGNoclN5bWJvbHMgVGhlIGNoYXJhY3RlciBzeW1ib2xzIHRvIGZpbmQuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHVubWF0Y2hlZCBzdHJpbmcgc3ltYm9sLlxuICAgKi9cbiAgZnVuY3Rpb24gY2hhcnNFbmRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSB7XG4gICAgdmFyIGluZGV4ID0gc3RyU3ltYm9scy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaW5kZXgtLSAmJiBiYXNlSW5kZXhPZihjaHJTeW1ib2xzLCBzdHJTeW1ib2xzW2luZGV4XSwgMCkgPiAtMSkge31cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbnVtYmVyIG9mIGBwbGFjZWhvbGRlcmAgb2NjdXJyZW5jZXMgaW4gYGFycmF5YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gcGxhY2Vob2xkZXIgVGhlIHBsYWNlaG9sZGVyIHRvIHNlYXJjaCBmb3IuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHBsYWNlaG9sZGVyIGNvdW50LlxuICAgKi9cbiAgZnVuY3Rpb24gY291bnRIb2xkZXJzKGFycmF5LCBwbGFjZWhvbGRlcikge1xuICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdCA9IDA7XG5cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGlmIChhcnJheVtsZW5ndGhdID09PSBwbGFjZWhvbGRlcikge1xuICAgICAgICArK3Jlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLmRlYnVycmAgdG8gY29udmVydCBMYXRpbi0xIFN1cHBsZW1lbnQgYW5kIExhdGluIEV4dGVuZGVkLUFcbiAgICogbGV0dGVycyB0byBiYXNpYyBMYXRpbiBsZXR0ZXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGV0dGVyIFRoZSBtYXRjaGVkIGxldHRlciB0byBkZWJ1cnIuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGRlYnVycmVkIGxldHRlci5cbiAgICovXG4gIHZhciBkZWJ1cnJMZXR0ZXIgPSBiYXNlUHJvcGVydHlPZihkZWJ1cnJlZExldHRlcnMpO1xuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLmVzY2FwZWAgdG8gY29udmVydCBjaGFyYWN0ZXJzIHRvIEhUTUwgZW50aXRpZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICB2YXIgZXNjYXBlSHRtbENoYXIgPSBiYXNlUHJvcGVydHlPZihodG1sRXNjYXBlcyk7XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8udGVtcGxhdGVgIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGZvciBpbmNsdXNpb24gaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byBlc2NhcGUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgY2hhcmFjdGVyLlxuICAgKi9cbiAgZnVuY3Rpb24gZXNjYXBlU3RyaW5nQ2hhcihjaHIpIHtcbiAgICByZXR1cm4gJ1xcXFwnICsgc3RyaW5nRXNjYXBlc1tjaHJdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGBzdHJpbmdgIGNvbnRhaW5zIFVuaWNvZGUgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIHN5bWJvbCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gaGFzVW5pY29kZShzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVIYXNVbmljb2RlLnRlc3Qoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgYSB3b3JkIGNvbXBvc2VkIG9mIFVuaWNvZGUgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIHdvcmQgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGhhc1VuaWNvZGVXb3JkKHN0cmluZykge1xuICAgIHJldHVybiByZUhhc1VuaWNvZGVXb3JkLnRlc3Qoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgaXRlcmF0b3JgIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gaXRlcmF0b3IgVGhlIGl0ZXJhdG9yIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gaXRlcmF0b3JUb0FycmF5KGl0ZXJhdG9yKSB7XG4gICAgdmFyIGRhdGEsXG4gICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgd2hpbGUgKCEoZGF0YSA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgcmVzdWx0LnB1c2goZGF0YS52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYG1hcGAgdG8gaXRzIGtleS12YWx1ZSBwYWlycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICAgKi9cbiAgZnVuY3Rpb24gbWFwVG9BcnJheShtYXApIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkobWFwLnNpemUpO1xuXG4gICAgbWFwLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAgcmVzdWx0WysraW5kZXhdID0gW2tleSwgdmFsdWVdO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICovXG4gIGZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGFyZykge1xuICAgICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZXMgYWxsIGBwbGFjZWhvbGRlcmAgZWxlbWVudHMgaW4gYGFycmF5YCB3aXRoIGFuIGludGVybmFsIHBsYWNlaG9sZGVyXG4gICAqIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRoZWlyIGluZGV4ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAqIEBwYXJhbSB7Kn0gcGxhY2Vob2xkZXIgVGhlIHBsYWNlaG9sZGVyIHRvIHJlcGxhY2UuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAqL1xuICBmdW5jdGlvbiByZXBsYWNlSG9sZGVycyhhcnJheSwgcGxhY2Vob2xkZXIpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gcGxhY2Vob2xkZXIgfHwgdmFsdWUgPT09IFBMQUNFSE9MREVSKSB7XG4gICAgICAgIGFycmF5W2luZGV4XSA9IFBMQUNFSE9MREVSO1xuICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgc2V0YCB0byBhbiBhcnJheSBvZiBpdHMgdmFsdWVzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZXMuXG4gICAqL1xuICBmdW5jdGlvbiBzZXRUb0FycmF5KHNldCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmVzdWx0WysraW5kZXhdID0gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgc2V0YCB0byBpdHMgdmFsdWUtdmFsdWUgcGFpcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlLXZhbHVlIHBhaXJzLlxuICAgKi9cbiAgZnVuY3Rpb24gc2V0VG9QYWlycyhzZXQpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gICAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJlc3VsdFsrK2luZGV4XSA9IFt2YWx1ZSwgdmFsdWVdO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluZGV4T2ZgIHdoaWNoIHBlcmZvcm1zIHN0cmljdCBlcXVhbGl0eVxuICAgKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggLSAxLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFycmF5W2luZGV4XSA9PT0gdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmxhc3RJbmRleE9mYCB3aGljaCBwZXJmb3JtcyBzdHJpY3QgZXF1YWxpdHlcbiAgICogY29tcGFyaXNvbnMgb2YgdmFsdWVzLCBpLmUuIGA9PT1gLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpY3RMYXN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCArIDE7XG4gICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgIGlmIChhcnJheVtpbmRleF0gPT09IHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG51bWJlciBvZiBzeW1ib2xzIGluIGBzdHJpbmdgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpbmdTaXplKHN0cmluZykge1xuICAgIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICAgID8gdW5pY29kZVNpemUoc3RyaW5nKVxuICAgICAgOiBhc2NpaVNpemUoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaW5nVG9BcnJheShzdHJpbmcpIHtcbiAgICByZXR1cm4gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgICA/IHVuaWNvZGVUb0FycmF5KHN0cmluZylcbiAgICAgIDogYXNjaWlUb0FycmF5KHN0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy51bmVzY2FwZWAgdG8gY29udmVydCBIVE1MIGVudGl0aWVzIHRvIGNoYXJhY3RlcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIHVuZXNjYXBlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1bmVzY2FwZWQgY2hhcmFjdGVyLlxuICAgKi9cbiAgdmFyIHVuZXNjYXBlSHRtbENoYXIgPSBiYXNlUHJvcGVydHlPZihodG1sVW5lc2NhcGVzKTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgc2l6ZSBvZiBhIFVuaWNvZGUgYHN0cmluZ2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAgICovXG4gIGZ1bmN0aW9uIHVuaWNvZGVTaXplKHN0cmluZykge1xuICAgIHZhciByZXN1bHQgPSByZVVuaWNvZGUubGFzdEluZGV4ID0gMDtcbiAgICB3aGlsZSAocmVVbmljb2RlLnRlc3Qoc3RyaW5nKSkge1xuICAgICAgKytyZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBVbmljb2RlIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiB1bmljb2RlVG9BcnJheShzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLm1hdGNoKHJlVW5pY29kZSkgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogU3BsaXRzIGEgVW5pY29kZSBgc3RyaW5nYCBpbnRvIGFuIGFycmF5IG9mIGl0cyB3b3Jkcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3b3JkcyBvZiBgc3RyaW5nYC5cbiAgICovXG4gIGZ1bmN0aW9uIHVuaWNvZGVXb3JkcyhzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLm1hdGNoKHJlVW5pY29kZVdvcmQpIHx8IFtdO1xuICB9XG5cbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBwcmlzdGluZSBgbG9kYXNoYCBmdW5jdGlvbiB1c2luZyB0aGUgYGNvbnRleHRgIG9iamVjdC5cbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAbWVtYmVyT2YgX1xuICAgKiBAc2luY2UgMS4xLjBcbiAgICogQGNhdGVnb3J5IFV0aWxcbiAgICogQHBhcmFtIHtPYmplY3R9IFtjb250ZXh0PXJvb3RdIFRoZSBjb250ZXh0IG9iamVjdC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGEgbmV3IGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBfLm1peGluKHsgJ2Zvbyc6IF8uY29uc3RhbnQoJ2ZvbycpIH0pO1xuICAgKlxuICAgKiB2YXIgbG9kYXNoID0gXy5ydW5JbkNvbnRleHQoKTtcbiAgICogbG9kYXNoLm1peGluKHsgJ2Jhcic6IGxvZGFzaC5jb25zdGFudCgnYmFyJykgfSk7XG4gICAqXG4gICAqIF8uaXNGdW5jdGlvbihfLmZvbyk7XG4gICAqIC8vID0+IHRydWVcbiAgICogXy5pc0Z1bmN0aW9uKF8uYmFyKTtcbiAgICogLy8gPT4gZmFsc2VcbiAgICpcbiAgICogbG9kYXNoLmlzRnVuY3Rpb24obG9kYXNoLmZvbyk7XG4gICAqIC8vID0+IGZhbHNlXG4gICAqIGxvZGFzaC5pc0Z1bmN0aW9uKGxvZGFzaC5iYXIpO1xuICAgKiAvLyA9PiB0cnVlXG4gICAqXG4gICAqIC8vIENyZWF0ZSBhIHN1cGVkLXVwIGBkZWZlcmAgaW4gTm9kZS5qcy5cbiAgICogdmFyIGRlZmVyID0gXy5ydW5JbkNvbnRleHQoeyAnc2V0VGltZW91dCc6IHNldEltbWVkaWF0ZSB9KS5kZWZlcjtcbiAgICovXG4gIHZhciBydW5JbkNvbnRleHQgPSAoZnVuY3Rpb24gcnVuSW5Db250ZXh0KGNvbnRleHQpIHtcbiAgICBjb250ZXh0ID0gY29udGV4dCA9PSBudWxsID8gcm9vdCA6IF8uZGVmYXVsdHMocm9vdC5PYmplY3QoKSwgY29udGV4dCwgXy5waWNrKHJvb3QsIGNvbnRleHRQcm9wcykpO1xuXG4gICAgLyoqIEJ1aWx0LWluIGNvbnN0cnVjdG9yIHJlZmVyZW5jZXMuICovXG4gICAgdmFyIEFycmF5ID0gY29udGV4dC5BcnJheSxcbiAgICAgICAgRGF0ZSA9IGNvbnRleHQuRGF0ZSxcbiAgICAgICAgRXJyb3IgPSBjb250ZXh0LkVycm9yLFxuICAgICAgICBGdW5jdGlvbiA9IGNvbnRleHQuRnVuY3Rpb24sXG4gICAgICAgIE1hdGggPSBjb250ZXh0Lk1hdGgsXG4gICAgICAgIE9iamVjdCA9IGNvbnRleHQuT2JqZWN0LFxuICAgICAgICBSZWdFeHAgPSBjb250ZXh0LlJlZ0V4cCxcbiAgICAgICAgU3RyaW5nID0gY29udGV4dC5TdHJpbmcsXG4gICAgICAgIFR5cGVFcnJvciA9IGNvbnRleHQuVHlwZUVycm9yO1xuXG4gICAgLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xuICAgIHZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlLFxuICAgICAgICBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBvdmVycmVhY2hpbmcgY29yZS1qcyBzaGltcy4gKi9cbiAgICB2YXIgY29yZUpzRGF0YSA9IGNvbnRleHRbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG4gICAgLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xuICAgIHZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbiAgICAvKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbiAgICB2YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuICAgIC8qKiBVc2VkIHRvIGdlbmVyYXRlIHVuaXF1ZSBJRHMuICovXG4gICAgdmFyIGlkQ291bnRlciA9IDA7XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xuICAgIHZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHVpZCA9IC9bXi5dKyQvLmV4ZWMoY29yZUpzRGF0YSAmJiBjb3JlSnNEYXRhLmtleXMgJiYgY29yZUpzRGF0YS5rZXlzLklFX1BST1RPIHx8ICcnKTtcbiAgICAgIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbiAgICB9KCkpO1xuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byByZXNvbHZlIHRoZVxuICAgICAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICAgICAqIG9mIHZhbHVlcy5cbiAgICAgKi9cbiAgICB2YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuICAgIC8qKiBVc2VkIHRvIGluZmVyIHRoZSBgT2JqZWN0YCBjb25zdHJ1Y3Rvci4gKi9cbiAgICB2YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cbiAgICAvKiogVXNlZCB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBgX2AgcmVmZXJlbmNlIGluIGBfLm5vQ29uZmxpY3RgLiAqL1xuICAgIHZhciBvbGREYXNoID0gcm9vdC5fO1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbiAgICB2YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgK1xuICAgICAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgICAgIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuICAgICk7XG5cbiAgICAvKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbiAgICB2YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IGNvbnRleHQuQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgICAgICBTeW1ib2wgPSBjb250ZXh0LlN5bWJvbCxcbiAgICAgICAgVWludDhBcnJheSA9IGNvbnRleHQuVWludDhBcnJheSxcbiAgICAgICAgYWxsb2NVbnNhZmUgPSBCdWZmZXIgPyBCdWZmZXIuYWxsb2NVbnNhZmUgOiB1bmRlZmluZWQsXG4gICAgICAgIGdldFByb3RvdHlwZSA9IG92ZXJBcmcoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpLFxuICAgICAgICBvYmplY3RDcmVhdGUgPSBPYmplY3QuY3JlYXRlLFxuICAgICAgICBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlLFxuICAgICAgICBzcGxpY2UgPSBhcnJheVByb3RvLnNwbGljZSxcbiAgICAgICAgc3ByZWFkYWJsZVN5bWJvbCA9IFN5bWJvbCA/IFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bUl0ZXJhdG9yID0gU3ltYm9sID8gU3ltYm9sLml0ZXJhdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuICAgIHZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBmdW5jID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2RlZmluZVByb3BlcnR5Jyk7XG4gICAgICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgICAgIHJldHVybiBmdW5jO1xuICAgICAgfSBjYXRjaCAoZSkge31cbiAgICB9KCkpO1xuXG4gICAgLyoqIE1vY2tlZCBidWlsdC1pbnMuICovXG4gICAgdmFyIGN0eENsZWFyVGltZW91dCA9IGNvbnRleHQuY2xlYXJUaW1lb3V0ICE9PSByb290LmNsZWFyVGltZW91dCAmJiBjb250ZXh0LmNsZWFyVGltZW91dCxcbiAgICAgICAgY3R4Tm93ID0gRGF0ZSAmJiBEYXRlLm5vdyAhPT0gcm9vdC5EYXRlLm5vdyAmJiBEYXRlLm5vdyxcbiAgICAgICAgY3R4U2V0VGltZW91dCA9IGNvbnRleHQuc2V0VGltZW91dCAhPT0gcm9vdC5zZXRUaW1lb3V0ICYmIGNvbnRleHQuc2V0VGltZW91dDtcblxuICAgIC8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbiAgICB2YXIgbmF0aXZlQ2VpbCA9IE1hdGguY2VpbCxcbiAgICAgICAgbmF0aXZlRmxvb3IgPSBNYXRoLmZsb29yLFxuICAgICAgICBuYXRpdmVHZXRTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxcbiAgICAgICAgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIG5hdGl2ZUlzRmluaXRlID0gY29udGV4dC5pc0Zpbml0ZSxcbiAgICAgICAgbmF0aXZlSm9pbiA9IGFycmF5UHJvdG8uam9pbixcbiAgICAgICAgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCksXG4gICAgICAgIG5hdGl2ZU1heCA9IE1hdGgubWF4LFxuICAgICAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbixcbiAgICAgICAgbmF0aXZlTm93ID0gRGF0ZS5ub3csXG4gICAgICAgIG5hdGl2ZVBhcnNlSW50ID0gY29udGV4dC5wYXJzZUludCxcbiAgICAgICAgbmF0aXZlUmFuZG9tID0gTWF0aC5yYW5kb20sXG4gICAgICAgIG5hdGl2ZVJldmVyc2UgPSBhcnJheVByb3RvLnJldmVyc2U7XG5cbiAgICAvKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG4gICAgdmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKGNvbnRleHQsICdEYXRhVmlldycpLFxuICAgICAgICBNYXAgPSBnZXROYXRpdmUoY29udGV4dCwgJ01hcCcpLFxuICAgICAgICBQcm9taXNlID0gZ2V0TmF0aXZlKGNvbnRleHQsICdQcm9taXNlJyksXG4gICAgICAgIFNldCA9IGdldE5hdGl2ZShjb250ZXh0LCAnU2V0JyksXG4gICAgICAgIFdlYWtNYXAgPSBnZXROYXRpdmUoY29udGV4dCwgJ1dlYWtNYXAnKSxcbiAgICAgICAgbmF0aXZlQ3JlYXRlID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2NyZWF0ZScpO1xuXG4gICAgLyoqIFVzZWQgdG8gc3RvcmUgZnVuY3Rpb24gbWV0YWRhdGEuICovXG4gICAgdmFyIG1ldGFNYXAgPSBXZWFrTWFwICYmIG5ldyBXZWFrTWFwO1xuXG4gICAgLyoqIFVzZWQgdG8gbG9va3VwIHVubWluaWZpZWQgZnVuY3Rpb24gbmFtZXMuICovXG4gICAgdmFyIHJlYWxOYW1lcyA9IHt9O1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IG1hcHMsIHNldHMsIGFuZCB3ZWFrbWFwcy4gKi9cbiAgICB2YXIgZGF0YVZpZXdDdG9yU3RyaW5nID0gdG9Tb3VyY2UoRGF0YVZpZXcpLFxuICAgICAgICBtYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoTWFwKSxcbiAgICAgICAgcHJvbWlzZUN0b3JTdHJpbmcgPSB0b1NvdXJjZShQcm9taXNlKSxcbiAgICAgICAgc2V0Q3RvclN0cmluZyA9IHRvU291cmNlKFNldCksXG4gICAgICAgIHdlYWtNYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoV2Vha01hcCk7XG5cbiAgICAvKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbiAgICB2YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgICAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkLFxuICAgICAgICBzeW1ib2xUb1N0cmluZyA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udG9TdHJpbmcgOiB1bmRlZmluZWQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgb2JqZWN0IHdoaWNoIHdyYXBzIGB2YWx1ZWAgdG8gZW5hYmxlIGltcGxpY2l0IG1ldGhvZFxuICAgICAqIGNoYWluIHNlcXVlbmNlcy4gTWV0aG9kcyB0aGF0IG9wZXJhdGUgb24gYW5kIHJldHVybiBhcnJheXMsIGNvbGxlY3Rpb25zLFxuICAgICAqIGFuZCBmdW5jdGlvbnMgY2FuIGJlIGNoYWluZWQgdG9nZXRoZXIuIE1ldGhvZHMgdGhhdCByZXRyaWV2ZSBhIHNpbmdsZSB2YWx1ZVxuICAgICAqIG9yIG1heSByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUgd2lsbCBhdXRvbWF0aWNhbGx5IGVuZCB0aGUgY2hhaW4gc2VxdWVuY2VcbiAgICAgKiBhbmQgcmV0dXJuIHRoZSB1bndyYXBwZWQgdmFsdWUuIE90aGVyd2lzZSwgdGhlIHZhbHVlIG11c3QgYmUgdW53cmFwcGVkXG4gICAgICogd2l0aCBgXyN2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBFeHBsaWNpdCBjaGFpbiBzZXF1ZW5jZXMsIHdoaWNoIG11c3QgYmUgdW53cmFwcGVkIHdpdGggYF8jdmFsdWVgLCBtYXkgYmVcbiAgICAgKiBlbmFibGVkIHVzaW5nIGBfLmNoYWluYC5cbiAgICAgKlxuICAgICAqIFRoZSBleGVjdXRpb24gb2YgY2hhaW5lZCBtZXRob2RzIGlzIGxhenksIHRoYXQgaXMsIGl0J3MgZGVmZXJyZWQgdW50aWxcbiAgICAgKiBgXyN2YWx1ZWAgaXMgaW1wbGljaXRseSBvciBleHBsaWNpdGx5IGNhbGxlZC5cbiAgICAgKlxuICAgICAqIExhenkgZXZhbHVhdGlvbiBhbGxvd3Mgc2V2ZXJhbCBtZXRob2RzIHRvIHN1cHBvcnQgc2hvcnRjdXQgZnVzaW9uLlxuICAgICAqIFNob3J0Y3V0IGZ1c2lvbiBpcyBhbiBvcHRpbWl6YXRpb24gdG8gbWVyZ2UgaXRlcmF0ZWUgY2FsbHM7IHRoaXMgYXZvaWRzXG4gICAgICogdGhlIGNyZWF0aW9uIG9mIGludGVybWVkaWF0ZSBhcnJheXMgYW5kIGNhbiBncmVhdGx5IHJlZHVjZSB0aGUgbnVtYmVyIG9mXG4gICAgICogaXRlcmF0ZWUgZXhlY3V0aW9ucy4gU2VjdGlvbnMgb2YgYSBjaGFpbiBzZXF1ZW5jZSBxdWFsaWZ5IGZvciBzaG9ydGN1dFxuICAgICAqIGZ1c2lvbiBpZiB0aGUgc2VjdGlvbiBpcyBhcHBsaWVkIHRvIGFuIGFycmF5IGFuZCBpdGVyYXRlZXMgYWNjZXB0IG9ubHlcbiAgICAgKiBvbmUgYXJndW1lbnQuIFRoZSBoZXVyaXN0aWMgZm9yIHdoZXRoZXIgYSBzZWN0aW9uIHF1YWxpZmllcyBmb3Igc2hvcnRjdXRcbiAgICAgKiBmdXNpb24gaXMgc3ViamVjdCB0byBjaGFuZ2UuXG4gICAgICpcbiAgICAgKiBDaGFpbmluZyBpcyBzdXBwb3J0ZWQgaW4gY3VzdG9tIGJ1aWxkcyBhcyBsb25nIGFzIHRoZSBgXyN2YWx1ZWAgbWV0aG9kIGlzXG4gICAgICogZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQuXG4gICAgICpcbiAgICAgKiBJbiBhZGRpdGlvbiB0byBsb2Rhc2ggbWV0aG9kcywgd3JhcHBlcnMgaGF2ZSBgQXJyYXlgIGFuZCBgU3RyaW5nYCBtZXRob2RzLlxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgYEFycmF5YCBtZXRob2RzIGFyZTpcbiAgICAgKiBgY29uY2F0YCwgYGpvaW5gLCBgcG9wYCwgYHB1c2hgLCBgc2hpZnRgLCBgc29ydGAsIGBzcGxpY2VgLCBhbmQgYHVuc2hpZnRgXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBgU3RyaW5nYCBtZXRob2RzIGFyZTpcbiAgICAgKiBgcmVwbGFjZWAgYW5kIGBzcGxpdGBcbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIG1ldGhvZHMgdGhhdCBzdXBwb3J0IHNob3J0Y3V0IGZ1c2lvbiBhcmU6XG4gICAgICogYGF0YCwgYGNvbXBhY3RgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLCBgZHJvcFdoaWxlYCwgYGZpbHRlcmAsIGBmaW5kYCxcbiAgICAgKiBgZmluZExhc3RgLCBgaGVhZGAsIGBpbml0aWFsYCwgYGxhc3RgLCBgbWFwYCwgYHJlamVjdGAsIGByZXZlcnNlYCwgYHNsaWNlYCxcbiAgICAgKiBgdGFpbGAsIGB0YWtlYCwgYHRha2VSaWdodGAsIGB0YWtlUmlnaHRXaGlsZWAsIGB0YWtlV2hpbGVgLCBhbmQgYHRvQXJyYXlgXG4gICAgICpcbiAgICAgKiBUaGUgY2hhaW5hYmxlIHdyYXBwZXIgbWV0aG9kcyBhcmU6XG4gICAgICogYGFmdGVyYCwgYGFyeWAsIGBhc3NpZ25gLCBgYXNzaWduSW5gLCBgYXNzaWduSW5XaXRoYCwgYGFzc2lnbldpdGhgLCBgYXRgLFxuICAgICAqIGBiZWZvcmVgLCBgYmluZGAsIGBiaW5kQWxsYCwgYGJpbmRLZXlgLCBgY2FzdEFycmF5YCwgYGNoYWluYCwgYGNodW5rYCxcbiAgICAgKiBgY29tbWl0YCwgYGNvbXBhY3RgLCBgY29uY2F0YCwgYGNvbmZvcm1zYCwgYGNvbnN0YW50YCwgYGNvdW50QnlgLCBgY3JlYXRlYCxcbiAgICAgKiBgY3VycnlgLCBgZGVib3VuY2VgLCBgZGVmYXVsdHNgLCBgZGVmYXVsdHNEZWVwYCwgYGRlZmVyYCwgYGRlbGF5YCxcbiAgICAgKiBgZGlmZmVyZW5jZWAsIGBkaWZmZXJlbmNlQnlgLCBgZGlmZmVyZW5jZVdpdGhgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLFxuICAgICAqIGBkcm9wUmlnaHRXaGlsZWAsIGBkcm9wV2hpbGVgLCBgZXh0ZW5kYCwgYGV4dGVuZFdpdGhgLCBgZmlsbGAsIGBmaWx0ZXJgLFxuICAgICAqIGBmbGF0TWFwYCwgYGZsYXRNYXBEZWVwYCwgYGZsYXRNYXBEZXB0aGAsIGBmbGF0dGVuYCwgYGZsYXR0ZW5EZWVwYCxcbiAgICAgKiBgZmxhdHRlbkRlcHRoYCwgYGZsaXBgLCBgZmxvd2AsIGBmbG93UmlnaHRgLCBgZnJvbVBhaXJzYCwgYGZ1bmN0aW9uc2AsXG4gICAgICogYGZ1bmN0aW9uc0luYCwgYGdyb3VwQnlgLCBgaW5pdGlhbGAsIGBpbnRlcnNlY3Rpb25gLCBgaW50ZXJzZWN0aW9uQnlgLFxuICAgICAqIGBpbnRlcnNlY3Rpb25XaXRoYCwgYGludmVydGAsIGBpbnZlcnRCeWAsIGBpbnZva2VNYXBgLCBgaXRlcmF0ZWVgLCBga2V5QnlgLFxuICAgICAqIGBrZXlzYCwgYGtleXNJbmAsIGBtYXBgLCBgbWFwS2V5c2AsIGBtYXBWYWx1ZXNgLCBgbWF0Y2hlc2AsIGBtYXRjaGVzUHJvcGVydHlgLFxuICAgICAqIGBtZW1vaXplYCwgYG1lcmdlYCwgYG1lcmdlV2l0aGAsIGBtZXRob2RgLCBgbWV0aG9kT2ZgLCBgbWl4aW5gLCBgbmVnYXRlYCxcbiAgICAgKiBgbnRoQXJnYCwgYG9taXRgLCBgb21pdEJ5YCwgYG9uY2VgLCBgb3JkZXJCeWAsIGBvdmVyYCwgYG92ZXJBcmdzYCxcbiAgICAgKiBgb3ZlckV2ZXJ5YCwgYG92ZXJTb21lYCwgYHBhcnRpYWxgLCBgcGFydGlhbFJpZ2h0YCwgYHBhcnRpdGlvbmAsIGBwaWNrYCxcbiAgICAgKiBgcGlja0J5YCwgYHBsYW50YCwgYHByb3BlcnR5YCwgYHByb3BlcnR5T2ZgLCBgcHVsbGAsIGBwdWxsQWxsYCwgYHB1bGxBbGxCeWAsXG4gICAgICogYHB1bGxBbGxXaXRoYCwgYHB1bGxBdGAsIGBwdXNoYCwgYHJhbmdlYCwgYHJhbmdlUmlnaHRgLCBgcmVhcmdgLCBgcmVqZWN0YCxcbiAgICAgKiBgcmVtb3ZlYCwgYHJlc3RgLCBgcmV2ZXJzZWAsIGBzYW1wbGVTaXplYCwgYHNldGAsIGBzZXRXaXRoYCwgYHNodWZmbGVgLFxuICAgICAqIGBzbGljZWAsIGBzb3J0YCwgYHNvcnRCeWAsIGBzcGxpY2VgLCBgc3ByZWFkYCwgYHRhaWxgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLFxuICAgICAqIGB0YWtlUmlnaHRXaGlsZWAsIGB0YWtlV2hpbGVgLCBgdGFwYCwgYHRocm90dGxlYCwgYHRocnVgLCBgdG9BcnJheWAsXG4gICAgICogYHRvUGFpcnNgLCBgdG9QYWlyc0luYCwgYHRvUGF0aGAsIGB0b1BsYWluT2JqZWN0YCwgYHRyYW5zZm9ybWAsIGB1bmFyeWAsXG4gICAgICogYHVuaW9uYCwgYHVuaW9uQnlgLCBgdW5pb25XaXRoYCwgYHVuaXFgLCBgdW5pcUJ5YCwgYHVuaXFXaXRoYCwgYHVuc2V0YCxcbiAgICAgKiBgdW5zaGlmdGAsIGB1bnppcGAsIGB1bnppcFdpdGhgLCBgdXBkYXRlYCwgYHVwZGF0ZVdpdGhgLCBgdmFsdWVzYCxcbiAgICAgKiBgdmFsdWVzSW5gLCBgd2l0aG91dGAsIGB3cmFwYCwgYHhvcmAsIGB4b3JCeWAsIGB4b3JXaXRoYCwgYHppcGAsXG4gICAgICogYHppcE9iamVjdGAsIGB6aXBPYmplY3REZWVwYCwgYW5kIGB6aXBXaXRoYFxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgbWV0aG9kcyB0aGF0IGFyZSAqKm5vdCoqIGNoYWluYWJsZSBieSBkZWZhdWx0IGFyZTpcbiAgICAgKiBgYWRkYCwgYGF0dGVtcHRgLCBgY2FtZWxDYXNlYCwgYGNhcGl0YWxpemVgLCBgY2VpbGAsIGBjbGFtcGAsIGBjbG9uZWAsXG4gICAgICogYGNsb25lRGVlcGAsIGBjbG9uZURlZXBXaXRoYCwgYGNsb25lV2l0aGAsIGBjb25mb3Jtc1RvYCwgYGRlYnVycmAsXG4gICAgICogYGRlZmF1bHRUb2AsIGBkaXZpZGVgLCBgZWFjaGAsIGBlYWNoUmlnaHRgLCBgZW5kc1dpdGhgLCBgZXFgLCBgZXNjYXBlYCxcbiAgICAgKiBgZXNjYXBlUmVnRXhwYCwgYGV2ZXJ5YCwgYGZpbmRgLCBgZmluZEluZGV4YCwgYGZpbmRLZXlgLCBgZmluZExhc3RgLFxuICAgICAqIGBmaW5kTGFzdEluZGV4YCwgYGZpbmRMYXN0S2V5YCwgYGZpcnN0YCwgYGZsb29yYCwgYGZvckVhY2hgLCBgZm9yRWFjaFJpZ2h0YCxcbiAgICAgKiBgZm9ySW5gLCBgZm9ySW5SaWdodGAsIGBmb3JPd25gLCBgZm9yT3duUmlnaHRgLCBgZ2V0YCwgYGd0YCwgYGd0ZWAsIGBoYXNgLFxuICAgICAqIGBoYXNJbmAsIGBoZWFkYCwgYGlkZW50aXR5YCwgYGluY2x1ZGVzYCwgYGluZGV4T2ZgLCBgaW5SYW5nZWAsIGBpbnZva2VgLFxuICAgICAqIGBpc0FyZ3VtZW50c2AsIGBpc0FycmF5YCwgYGlzQXJyYXlCdWZmZXJgLCBgaXNBcnJheUxpa2VgLCBgaXNBcnJheUxpa2VPYmplY3RgLFxuICAgICAqIGBpc0Jvb2xlYW5gLCBgaXNCdWZmZXJgLCBgaXNEYXRlYCwgYGlzRWxlbWVudGAsIGBpc0VtcHR5YCwgYGlzRXF1YWxgLFxuICAgICAqIGBpc0VxdWFsV2l0aGAsIGBpc0Vycm9yYCwgYGlzRmluaXRlYCwgYGlzRnVuY3Rpb25gLCBgaXNJbnRlZ2VyYCwgYGlzTGVuZ3RoYCxcbiAgICAgKiBgaXNNYXBgLCBgaXNNYXRjaGAsIGBpc01hdGNoV2l0aGAsIGBpc05hTmAsIGBpc05hdGl2ZWAsIGBpc05pbGAsIGBpc051bGxgLFxuICAgICAqIGBpc051bWJlcmAsIGBpc09iamVjdGAsIGBpc09iamVjdExpa2VgLCBgaXNQbGFpbk9iamVjdGAsIGBpc1JlZ0V4cGAsXG4gICAgICogYGlzU2FmZUludGVnZXJgLCBgaXNTZXRgLCBgaXNTdHJpbmdgLCBgaXNVbmRlZmluZWRgLCBgaXNUeXBlZEFycmF5YCxcbiAgICAgKiBgaXNXZWFrTWFwYCwgYGlzV2Vha1NldGAsIGBqb2luYCwgYGtlYmFiQ2FzZWAsIGBsYXN0YCwgYGxhc3RJbmRleE9mYCxcbiAgICAgKiBgbG93ZXJDYXNlYCwgYGxvd2VyRmlyc3RgLCBgbHRgLCBgbHRlYCwgYG1heGAsIGBtYXhCeWAsIGBtZWFuYCwgYG1lYW5CeWAsXG4gICAgICogYG1pbmAsIGBtaW5CeWAsIGBtdWx0aXBseWAsIGBub0NvbmZsaWN0YCwgYG5vb3BgLCBgbm93YCwgYG50aGAsIGBwYWRgLFxuICAgICAqIGBwYWRFbmRgLCBgcGFkU3RhcnRgLCBgcGFyc2VJbnRgLCBgcG9wYCwgYHJhbmRvbWAsIGByZWR1Y2VgLCBgcmVkdWNlUmlnaHRgLFxuICAgICAqIGByZXBlYXRgLCBgcmVzdWx0YCwgYHJvdW5kYCwgYHJ1bkluQ29udGV4dGAsIGBzYW1wbGVgLCBgc2hpZnRgLCBgc2l6ZWAsXG4gICAgICogYHNuYWtlQ2FzZWAsIGBzb21lYCwgYHNvcnRlZEluZGV4YCwgYHNvcnRlZEluZGV4QnlgLCBgc29ydGVkTGFzdEluZGV4YCxcbiAgICAgKiBgc29ydGVkTGFzdEluZGV4QnlgLCBgc3RhcnRDYXNlYCwgYHN0YXJ0c1dpdGhgLCBgc3R1YkFycmF5YCwgYHN0dWJGYWxzZWAsXG4gICAgICogYHN0dWJPYmplY3RgLCBgc3R1YlN0cmluZ2AsIGBzdHViVHJ1ZWAsIGBzdWJ0cmFjdGAsIGBzdW1gLCBgc3VtQnlgLFxuICAgICAqIGB0ZW1wbGF0ZWAsIGB0aW1lc2AsIGB0b0Zpbml0ZWAsIGB0b0ludGVnZXJgLCBgdG9KU09OYCwgYHRvTGVuZ3RoYCxcbiAgICAgKiBgdG9Mb3dlcmAsIGB0b051bWJlcmAsIGB0b1NhZmVJbnRlZ2VyYCwgYHRvU3RyaW5nYCwgYHRvVXBwZXJgLCBgdHJpbWAsXG4gICAgICogYHRyaW1FbmRgLCBgdHJpbVN0YXJ0YCwgYHRydW5jYXRlYCwgYHVuZXNjYXBlYCwgYHVuaXF1ZUlkYCwgYHVwcGVyQ2FzZWAsXG4gICAgICogYHVwcGVyRmlyc3RgLCBgdmFsdWVgLCBhbmQgYHdvcmRzYFxuICAgICAqXG4gICAgICogQG5hbWUgX1xuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwIGluIGEgYGxvZGFzaGAgaW5zdGFuY2UuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIHdyYXBwZWQgPSBfKFsxLCAyLCAzXSk7XG4gICAgICpcbiAgICAgKiAvLyBSZXR1cm5zIGFuIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiB3cmFwcGVkLnJlZHVjZShfLmFkZCk7XG4gICAgICogLy8gPT4gNlxuICAgICAqXG4gICAgICogLy8gUmV0dXJucyBhIHdyYXBwZWQgdmFsdWUuXG4gICAgICogdmFyIHNxdWFyZXMgPSB3cmFwcGVkLm1hcChzcXVhcmUpO1xuICAgICAqXG4gICAgICogXy5pc0FycmF5KHNxdWFyZXMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoc3F1YXJlcy52YWx1ZSgpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gbG9kYXNoKHZhbHVlKSB7XG4gICAgICBpZiAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNBcnJheSh2YWx1ZSkgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSkge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBMb2Rhc2hXcmFwcGVyKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnX193cmFwcGVkX18nKSkge1xuICAgICAgICAgIHJldHVybiB3cmFwcGVyQ2xvbmUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNyZWF0ZWAgd2l0aG91dCBzdXBwb3J0IGZvciBhc3NpZ25pbmdcbiAgICAgKiBwcm9wZXJ0aWVzIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHByb3RvIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgdmFyIGJhc2VDcmVhdGUgPSAoZnVuY3Rpb24oKSB7XG4gICAgICBmdW5jdGlvbiBvYmplY3QoKSB7fVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHByb3RvKSB7XG4gICAgICAgIGlmICghaXNPYmplY3QocHJvdG8pKSB7XG4gICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvYmplY3RDcmVhdGUpIHtcbiAgICAgICAgICByZXR1cm4gb2JqZWN0Q3JlYXRlKHByb3RvKTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QucHJvdG90eXBlID0gcHJvdG87XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgb2JqZWN0O1xuICAgICAgICBvYmplY3QucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9KCkpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGZ1bmN0aW9uIHdob3NlIHByb3RvdHlwZSBjaGFpbiBzZXF1ZW5jZSB3cmFwcGVycyBpbmhlcml0IGZyb20uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VMb2Rhc2goKSB7XG4gICAgICAvLyBObyBvcGVyYXRpb24gcGVyZm9ybWVkLlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGNvbnN0cnVjdG9yIGZvciBjcmVhdGluZyBgbG9kYXNoYCB3cmFwcGVyIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbY2hhaW5BbGxdIEVuYWJsZSBleHBsaWNpdCBtZXRob2QgY2hhaW4gc2VxdWVuY2VzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIExvZGFzaFdyYXBwZXIodmFsdWUsIGNoYWluQWxsKSB7XG4gICAgICB0aGlzLl9fd3JhcHBlZF9fID0gdmFsdWU7XG4gICAgICB0aGlzLl9fYWN0aW9uc19fID0gW107XG4gICAgICB0aGlzLl9fY2hhaW5fXyA9ICEhY2hhaW5BbGw7XG4gICAgICB0aGlzLl9faW5kZXhfXyA9IDA7XG4gICAgICB0aGlzLl9fdmFsdWVzX18gPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQnkgZGVmYXVsdCwgdGhlIHRlbXBsYXRlIGRlbGltaXRlcnMgdXNlZCBieSBsb2Rhc2ggYXJlIGxpa2UgdGhvc2UgaW5cbiAgICAgKiBlbWJlZGRlZCBSdWJ5IChFUkIpIGFzIHdlbGwgYXMgRVMyMDE1IHRlbXBsYXRlIHN0cmluZ3MuIENoYW5nZSB0aGVcbiAgICAgKiBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAqL1xuICAgIGxvZGFzaC50ZW1wbGF0ZVNldHRpbmdzID0ge1xuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gZGV0ZWN0IGBkYXRhYCBwcm9wZXJ0eSB2YWx1ZXMgdG8gYmUgSFRNTC1lc2NhcGVkLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtSZWdFeHB9XG4gICAgICAgKi9cbiAgICAgICdlc2NhcGUnOiByZUVzY2FwZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIGRldGVjdCBjb2RlIHRvIGJlIGV2YWx1YXRlZC5cbiAgICAgICAqXG4gICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAgICAgKiBAdHlwZSB7UmVnRXhwfVxuICAgICAgICovXG4gICAgICAnZXZhbHVhdGUnOiByZUV2YWx1YXRlLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gZGV0ZWN0IGBkYXRhYCBwcm9wZXJ0eSB2YWx1ZXMgdG8gaW5qZWN0LlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtSZWdFeHB9XG4gICAgICAgKi9cbiAgICAgICdpbnRlcnBvbGF0ZSc6IHJlSW50ZXJwb2xhdGUsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byByZWZlcmVuY2UgdGhlIGRhdGEgb2JqZWN0IGluIHRoZSB0ZW1wbGF0ZSB0ZXh0LlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgKi9cbiAgICAgICd2YXJpYWJsZSc6ICcnLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gaW1wb3J0IHZhcmlhYmxlcyBpbnRvIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgICAqXG4gICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAgICovXG4gICAgICAnaW1wb3J0cyc6IHtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQSByZWZlcmVuY2UgdG8gdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzLmltcG9ydHNcbiAgICAgICAgICogQHR5cGUge0Z1bmN0aW9ufVxuICAgICAgICAgKi9cbiAgICAgICAgJ18nOiBsb2Rhc2hcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gRW5zdXJlIHdyYXBwZXJzIGFyZSBpbnN0YW5jZXMgb2YgYGJhc2VMb2Rhc2hgLlxuICAgIGxvZGFzaC5wcm90b3R5cGUgPSBiYXNlTG9kYXNoLnByb3RvdHlwZTtcbiAgICBsb2Rhc2gucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gbG9kYXNoO1xuXG4gICAgTG9kYXNoV3JhcHBlci5wcm90b3R5cGUgPSBiYXNlQ3JlYXRlKGJhc2VMb2Rhc2gucHJvdG90eXBlKTtcbiAgICBMb2Rhc2hXcmFwcGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExvZGFzaFdyYXBwZXI7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbGF6eSB3cmFwcGVyIG9iamVjdCB3aGljaCB3cmFwcyBgdmFsdWVgIHRvIGVuYWJsZSBsYXp5IGV2YWx1YXRpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTGF6eVdyYXBwZXIodmFsdWUpIHtcbiAgICAgIHRoaXMuX193cmFwcGVkX18gPSB2YWx1ZTtcbiAgICAgIHRoaXMuX19hY3Rpb25zX18gPSBbXTtcbiAgICAgIHRoaXMuX19kaXJfXyA9IDE7XG4gICAgICB0aGlzLl9fZmlsdGVyZWRfXyA9IGZhbHNlO1xuICAgICAgdGhpcy5fX2l0ZXJhdGVlc19fID0gW107XG4gICAgICB0aGlzLl9fdGFrZUNvdW50X18gPSBNQVhfQVJSQVlfTEVOR1RIO1xuICAgICAgdGhpcy5fX3ZpZXdzX18gPSBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGxhenkgd3JhcHBlciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsb25lXG4gICAgICogQG1lbWJlck9mIExhenlXcmFwcGVyXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGBMYXp5V3JhcHBlcmAgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhenlDbG9uZSgpIHtcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgTGF6eVdyYXBwZXIodGhpcy5fX3dyYXBwZWRfXyk7XG4gICAgICByZXN1bHQuX19hY3Rpb25zX18gPSBjb3B5QXJyYXkodGhpcy5fX2FjdGlvbnNfXyk7XG4gICAgICByZXN1bHQuX19kaXJfXyA9IHRoaXMuX19kaXJfXztcbiAgICAgIHJlc3VsdC5fX2ZpbHRlcmVkX18gPSB0aGlzLl9fZmlsdGVyZWRfXztcbiAgICAgIHJlc3VsdC5fX2l0ZXJhdGVlc19fID0gY29weUFycmF5KHRoaXMuX19pdGVyYXRlZXNfXyk7XG4gICAgICByZXN1bHQuX190YWtlQ291bnRfXyA9IHRoaXMuX190YWtlQ291bnRfXztcbiAgICAgIHJlc3VsdC5fX3ZpZXdzX18gPSBjb3B5QXJyYXkodGhpcy5fX3ZpZXdzX18pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnNlcyB0aGUgZGlyZWN0aW9uIG9mIGxhenkgaXRlcmF0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSByZXZlcnNlXG4gICAgICogQG1lbWJlck9mIExhenlXcmFwcGVyXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHJldmVyc2VkIGBMYXp5V3JhcHBlcmAgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhenlSZXZlcnNlKCkge1xuICAgICAgaWYgKHRoaXMuX19maWx0ZXJlZF9fKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgTGF6eVdyYXBwZXIodGhpcyk7XG4gICAgICAgIHJlc3VsdC5fX2Rpcl9fID0gLTE7XG4gICAgICAgIHJlc3VsdC5fX2ZpbHRlcmVkX18gPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5jbG9uZSgpO1xuICAgICAgICByZXN1bHQuX19kaXJfXyAqPSAtMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXh0cmFjdHMgdGhlIHVud3JhcHBlZCB2YWx1ZSBmcm9tIGl0cyBsYXp5IHdyYXBwZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHZhbHVlXG4gICAgICogQG1lbWJlck9mIExhenlXcmFwcGVyXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXp5VmFsdWUoKSB7XG4gICAgICB2YXIgYXJyYXkgPSB0aGlzLl9fd3JhcHBlZF9fLnZhbHVlKCksXG4gICAgICAgICAgZGlyID0gdGhpcy5fX2Rpcl9fLFxuICAgICAgICAgIGlzQXJyID0gaXNBcnJheShhcnJheSksXG4gICAgICAgICAgaXNSaWdodCA9IGRpciA8IDAsXG4gICAgICAgICAgYXJyTGVuZ3RoID0gaXNBcnIgPyBhcnJheS5sZW5ndGggOiAwLFxuICAgICAgICAgIHZpZXcgPSBnZXRWaWV3KDAsIGFyckxlbmd0aCwgdGhpcy5fX3ZpZXdzX18pLFxuICAgICAgICAgIHN0YXJ0ID0gdmlldy5zdGFydCxcbiAgICAgICAgICBlbmQgPSB2aWV3LmVuZCxcbiAgICAgICAgICBsZW5ndGggPSBlbmQgLSBzdGFydCxcbiAgICAgICAgICBpbmRleCA9IGlzUmlnaHQgPyBlbmQgOiAoc3RhcnQgLSAxKSxcbiAgICAgICAgICBpdGVyYXRlZXMgPSB0aGlzLl9faXRlcmF0ZWVzX18sXG4gICAgICAgICAgaXRlckxlbmd0aCA9IGl0ZXJhdGVlcy5sZW5ndGgsXG4gICAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICAgIHRha2VDb3VudCA9IG5hdGl2ZU1pbihsZW5ndGgsIHRoaXMuX190YWtlQ291bnRfXyk7XG5cbiAgICAgIGlmICghaXNBcnIgfHwgKCFpc1JpZ2h0ICYmIGFyckxlbmd0aCA9PSBsZW5ndGggJiYgdGFrZUNvdW50ID09IGxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VXcmFwcGVyVmFsdWUoYXJyYXksIHRoaXMuX19hY3Rpb25zX18pO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuXG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlIChsZW5ndGgtLSAmJiByZXNJbmRleCA8IHRha2VDb3VudCkge1xuICAgICAgICBpbmRleCArPSBkaXI7XG5cbiAgICAgICAgdmFyIGl0ZXJJbmRleCA9IC0xLFxuICAgICAgICAgICAgdmFsdWUgPSBhcnJheVtpbmRleF07XG5cbiAgICAgICAgd2hpbGUgKCsraXRlckluZGV4IDwgaXRlckxlbmd0aCkge1xuICAgICAgICAgIHZhciBkYXRhID0gaXRlcmF0ZWVzW2l0ZXJJbmRleF0sXG4gICAgICAgICAgICAgIGl0ZXJhdGVlID0gZGF0YS5pdGVyYXRlZSxcbiAgICAgICAgICAgICAgdHlwZSA9IGRhdGEudHlwZSxcbiAgICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICAgICAgICBpZiAodHlwZSA9PSBMQVpZX01BUF9GTEFHKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGNvbXB1dGVkO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWNvbXB1dGVkKSB7XG4gICAgICAgICAgICBpZiAodHlwZSA9PSBMQVpZX0ZJTFRFUl9GTEFHKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYnJlYWsgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgYExhenlXcmFwcGVyYCBpcyBhbiBpbnN0YW5jZSBvZiBgYmFzZUxvZGFzaGAuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlID0gYmFzZUNyZWF0ZShiYXNlTG9kYXNoLnByb3RvdHlwZSk7XG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGF6eVdyYXBwZXI7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgaGFzaCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIEhhc2goZW50cmllcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IG5hdGl2ZUNyZWF0ZSA/IG5hdGl2ZUNyZWF0ZShudWxsKSA6IHt9O1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZGVsZXRlXG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gaGFzaCBUaGUgaGFzaCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICAgICAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIGlmIChuYXRpdmVDcmVhdGUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gSEFTSF9VTkRFRklORUQgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpID8gZGF0YVtrZXldIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIHJldHVybiBuYXRpdmVDcmVhdGUgPyAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQpIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaGFzaCBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gICAgICBkYXRhW2tleV0gPSAobmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbiAgICBIYXNoLnByb3RvdHlwZS5jbGVhciA9IGhhc2hDbGVhcjtcbiAgICBIYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBoYXNoRGVsZXRlO1xuICAgIEhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG4gICAgSGFzaC5wcm90b3R5cGUuaGFzID0gaGFzaEhhcztcbiAgICBIYXNoLnByb3RvdHlwZS5zZXQgPSBoYXNoU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBsaXN0IGNhY2hlIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTGlzdENhY2hlKGVudHJpZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xlYXJcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlQ2xlYXIoKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fID0gW107XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RDYWNoZURlbGV0ZShrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBsYXN0SW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gICAgICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgICAgIGRhdGEucG9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gICAgICB9XG4gICAgICAtLXRoaXMuc2l6ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gICAgICByZXR1cm4gaW5kZXggPCAwID8gdW5kZWZpbmVkIDogZGF0YVtpbmRleF1bMV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RDYWNoZUhhcyhrZXkpIHtcbiAgICAgIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICArK3RoaXMuc2l6ZTtcbiAgICAgICAgZGF0YS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYExpc3RDYWNoZWAuXG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuICAgIExpc3RDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbGlzdENhY2hlRGVsZXRlO1xuICAgIExpc3RDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbGlzdENhY2hlR2V0O1xuICAgIExpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuICAgIExpc3RDYWNoZS5wcm90b3R5cGUuc2V0ID0gbGlzdENhY2hlU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xlYXJcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICAgIHRoaXMuX19kYXRhX18gPSB7XG4gICAgICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgICAgICdtYXAnOiBuZXcgKE1hcCB8fCBMaXN0Q2FjaGUpLFxuICAgICAgICAnc3RyaW5nJzogbmV3IEhhc2hcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZGVsZXRlXG4gICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlRGVsZXRlKGtleSkge1xuICAgICAgdmFyIHJlc3VsdCA9IGdldE1hcERhdGEodGhpcywga2V5KVsnZGVsZXRlJ10oa2V5KTtcbiAgICAgIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbWFwIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlR2V0KGtleSkge1xuICAgICAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5nZXQoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlSGFzKGtleSkge1xuICAgICAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBtYXAgYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IGdldE1hcERhdGEodGhpcywga2V5KSxcbiAgICAgICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gICAgICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgICAgIHRoaXMuc2l6ZSArPSBkYXRhLnNpemUgPT0gc2l6ZSA/IDAgOiAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuICAgIE1hcENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBtYXBDYWNoZURlbGV0ZTtcbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcENhY2hlSGFzO1xuICAgIE1hcENhY2hlLnByb3RvdHlwZS5zZXQgPSBtYXBDYWNoZVNldDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBjYWNoZSBvYmplY3QgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBTZXRDYWNoZSh2YWx1ZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHZhbHVlcyA9PSBudWxsID8gMCA6IHZhbHVlcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB0aGlzLmFkZCh2YWx1ZXNbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGB2YWx1ZWAgdG8gdGhlIGFycmF5IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBhZGRcbiAgICAgKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAgICAgKiBAYWxpYXMgcHVzaFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNhY2hlLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldENhY2hlQWRkKHZhbHVlKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fLnNldCh2YWx1ZSwgSEFTSF9VTkRFRklORUQpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gdGhlIGFycmF5IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRDYWNoZUhhcyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgU2V0Q2FjaGVgLlxuICAgIFNldENhY2hlLnByb3RvdHlwZS5hZGQgPSBTZXRDYWNoZS5wcm90b3R5cGUucHVzaCA9IHNldENhY2hlQWRkO1xuICAgIFNldENhY2hlLnByb3RvdHlwZS5oYXMgPSBzZXRDYWNoZUhhcztcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzdGFjayBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBTdGFjayhlbnRyaWVzKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlKGVudHJpZXMpO1xuICAgICAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZTtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIHN0YWNrLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgU3RhY2tcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICAgICAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBzdGFjayB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLmdldChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0hhcyhrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHN0YWNrIGBrZXlgIHRvIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHNldFxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja1NldChrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIExpc3RDYWNoZSkge1xuICAgICAgICB2YXIgcGFpcnMgPSBkYXRhLl9fZGF0YV9fO1xuICAgICAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICAgICAgcGFpcnMucHVzaChba2V5LCB2YWx1ZV0pO1xuICAgICAgICAgIHRoaXMuc2l6ZSA9ICsrZGF0YS5zaXplO1xuICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlKHBhaXJzKTtcbiAgICAgIH1cbiAgICAgIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYFN0YWNrYC5cbiAgICBTdGFjay5wcm90b3R5cGUuY2xlYXIgPSBzdGFja0NsZWFyO1xuICAgIFN0YWNrLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBzdGFja0RlbGV0ZTtcbiAgICBTdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG4gICAgU3RhY2sucHJvdG90eXBlLmhhcyA9IHN0YWNrSGFzO1xuICAgIFN0YWNrLnByb3RvdHlwZS5zZXQgPSBzdGFja1NldDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBpbmhlcml0ZWQgU3BlY2lmeSByZXR1cm5pbmcgaW5oZXJpdGVkIHByb3BlcnR5IG5hbWVzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJyYXlMaWtlS2V5cyh2YWx1ZSwgaW5oZXJpdGVkKSB7XG4gICAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmICFpc0FyZyAmJiBpc0J1ZmZlcih2YWx1ZSksXG4gICAgICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgICAgIHJlc3VsdCA9IHNraXBJbmRleGVzID8gYmFzZVRpbWVzKHZhbHVlLmxlbmd0aCwgU3RyaW5nKSA6IFtdLFxuICAgICAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgICBpZiAoKGluaGVyaXRlZCB8fCBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSAmJlxuICAgICAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgICAgICBrZXkgPT0gJ2xlbmd0aCcgfHxcbiAgICAgICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgICAgICAvLyBQaGFudG9tSlMgMiBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiB0eXBlZCBhcnJheXMuXG4gICAgICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgICAgIGlzSW5kZXgoa2V5LCBsZW5ndGgpXG4gICAgICAgICAgICApKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNhbXBsZWAgZm9yIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJyYXlTYW1wbGUoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYXJyYXlbYmFzZVJhbmRvbSgwLCBsZW5ndGggLSAxKV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNhbXBsZVNpemVgIGZvciBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzYW1wbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJyYXlTYW1wbGVTaXplKGFycmF5LCBuKSB7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYoY29weUFycmF5KGFycmF5KSwgYmFzZUNsYW1wKG4sIDAsIGFycmF5Lmxlbmd0aCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zaHVmZmxlYCBmb3IgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2h1ZmZsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzaHVmZmxlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNodWZmbGUoYXJyYXkpIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihjb3B5QXJyYXkoYXJyYXkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFzc2lnblZhbHVlYCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IGFzc2lnblxuICAgICAqIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgICAgIGlmICgodmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZXEob2JqZWN0W2tleV0sIHZhbHVlKSkgfHxcbiAgICAgICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIGB2YWx1ZWAgdG8gYGtleWAgb2YgYG9iamVjdGAgaWYgdGhlIGV4aXN0aW5nIHZhbHVlIGlzIG5vdCBlcXVpdmFsZW50XG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gICAgICBpZiAoIShoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBlcShvYmpWYWx1ZSwgdmFsdWUpKSB8fFxuICAgICAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBga2V5YCBpcyBmb3VuZCBpbiBgYXJyYXlgIG9mIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gbGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWdncmVnYXRlcyBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAgb24gYGFjY3VtdWxhdG9yYCB3aXRoIGtleXMgdHJhbnNmb3JtZWRcbiAgICAgKiBieSBgaXRlcmF0ZWVgIGFuZCB2YWx1ZXMgc2V0IGJ5IGBzZXR0ZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYGFjY3VtdWxhdG9yYCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBhZ2dyZWdhdGVkIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGFjY3VtdWxhdG9yYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQWdncmVnYXRvcihjb2xsZWN0aW9uLCBzZXR0ZXIsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgICBzZXR0ZXIoYWNjdW11bGF0b3IsIHZhbHVlLCBpdGVyYXRlZSh2YWx1ZSksIGNvbGxlY3Rpb24pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAgICAgKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25JbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gICAgICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXNzaWduSW4ob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBhc3NpZ25WYWx1ZWAgYW5kIGBhc3NpZ25NZXJnZVZhbHVlYCB3aXRob3V0XG4gICAgICogdmFsdWUgY2hlY2tzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgICBpZiAoa2V5ID09ICdfX3Byb3RvX18nICYmIGRlZmluZVByb3BlcnR5KSB7XG4gICAgICAgIGRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAgICAgJ2VudW1lcmFibGUnOiB0cnVlLFxuICAgICAgICAgICd2YWx1ZSc6IHZhbHVlLFxuICAgICAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmF0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWwgcGF0aHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwaWNrZWQgZWxlbWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUF0KG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGhzLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICAgIHNraXAgPSBvYmplY3QgPT0gbnVsbDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W2luZGV4XSA9IHNraXAgPyB1bmRlZmluZWQgOiBnZXQob2JqZWN0LCBwYXRoc1tpbmRleF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jbGFtcGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2xhbXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsb3dlcl0gVGhlIGxvd2VyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY2xhbXBlZCBudW1iZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNsYW1wKG51bWJlciwgbG93ZXIsIHVwcGVyKSB7XG4gICAgICBpZiAobnVtYmVyID09PSBudW1iZXIpIHtcbiAgICAgICAgaWYgKHVwcGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBudW1iZXIgPSBudW1iZXIgPD0gdXBwZXIgPyBudW1iZXIgOiB1cHBlcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG93ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG51bWJlciA9IG51bWJlciA+PSBsb3dlciA/IG51bWJlciA6IGxvd2VyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsb25lYCBhbmQgYF8uY2xvbmVEZWVwYCB3aGljaCB0cmFja3NcbiAgICAgKiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICAgICAqICAxIC0gRGVlcCBjbG9uZVxuICAgICAqICAyIC0gRmxhdHRlbiBpbmhlcml0ZWQgcHJvcGVydGllc1xuICAgICAqICA0IC0gQ2xvbmUgc3ltYm9sc1xuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtrZXldIFRoZSBrZXkgb2YgYHZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIHBhcmVudCBvYmplY3Qgb2YgYHZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIG9iamVjdHMgYW5kIHRoZWlyIGNsb25lIGNvdW50ZXJwYXJ0cy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VDbG9uZSh2YWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCBvYmplY3QsIHN0YWNrKSB7XG4gICAgICB2YXIgcmVzdWx0LFxuICAgICAgICAgIGlzRGVlcCA9IGJpdG1hc2sgJiBDTE9ORV9ERUVQX0ZMQUcsXG4gICAgICAgICAgaXNGbGF0ID0gYml0bWFzayAmIENMT05FX0ZMQVRfRkxBRyxcbiAgICAgICAgICBpc0Z1bGwgPSBiaXRtYXNrICYgQ0xPTkVfU1lNQk9MU19GTEFHO1xuXG4gICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICByZXN1bHQgPSBvYmplY3QgPyBjdXN0b21pemVyKHZhbHVlLCBrZXksIG9iamVjdCwgc3RhY2spIDogY3VzdG9taXplcih2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpO1xuICAgICAgaWYgKGlzQXJyKSB7XG4gICAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUFycmF5KHZhbHVlKTtcbiAgICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgICByZXR1cm4gY29weUFycmF5KHZhbHVlLCByZXN1bHQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKSxcbiAgICAgICAgICAgIGlzRnVuYyA9IHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWc7XG5cbiAgICAgICAgaWYgKGlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBjbG9uZUJ1ZmZlcih2YWx1ZSwgaXNEZWVwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFnID09IG9iamVjdFRhZyB8fCB0YWcgPT0gYXJnc1RhZyB8fCAoaXNGdW5jICYmICFvYmplY3QpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gKGlzRmxhdCB8fCBpc0Z1bmMpID8ge30gOiBpbml0Q2xvbmVPYmplY3QodmFsdWUpO1xuICAgICAgICAgIGlmICghaXNEZWVwKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNGbGF0XG4gICAgICAgICAgICAgID8gY29weVN5bWJvbHNJbih2YWx1ZSwgYmFzZUFzc2lnbkluKHJlc3VsdCwgdmFsdWUpKVxuICAgICAgICAgICAgICA6IGNvcHlTeW1ib2xzKHZhbHVlLCBiYXNlQXNzaWduKHJlc3VsdCwgdmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFjbG9uZWFibGVUYWdzW3RhZ10pIHtcbiAgICAgICAgICAgIHJldHVybiBvYmplY3QgPyB2YWx1ZSA6IHt9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSBpbml0Q2xvbmVCeVRhZyh2YWx1ZSwgdGFnLCBpc0RlZXApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBDaGVjayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcyBhbmQgcmV0dXJuIGl0cyBjb3JyZXNwb25kaW5nIGNsb25lLlxuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KHZhbHVlKTtcbiAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgIHJldHVybiBzdGFja2VkO1xuICAgICAgfVxuICAgICAgc3RhY2suc2V0KHZhbHVlLCByZXN1bHQpO1xuXG4gICAgICBpZiAoaXNTZXQodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUpIHtcbiAgICAgICAgICByZXN1bHQuYWRkKGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3ViVmFsdWUsIHZhbHVlLCBzdGFjaykpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaXNNYXAodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgICAgICAgIHJlc3VsdC5zZXQoa2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB2YXIga2V5c0Z1bmMgPSBpc0Z1bGxcbiAgICAgICAgPyAoaXNGbGF0ID8gZ2V0QWxsS2V5c0luIDogZ2V0QWxsS2V5cylcbiAgICAgICAgOiAoaXNGbGF0ID8ga2V5c0luIDoga2V5cyk7XG5cbiAgICAgIHZhciBwcm9wcyA9IGlzQXJyID8gdW5kZWZpbmVkIDoga2V5c0Z1bmModmFsdWUpO1xuICAgICAgYXJyYXlFYWNoKHByb3BzIHx8IHZhbHVlLCBmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgIGtleSA9IHN1YlZhbHVlO1xuICAgICAgICAgIHN1YlZhbHVlID0gdmFsdWVba2V5XTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBhc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNvbmZvcm1zYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNvbmZvcm1zKHNvdXJjZSkge1xuICAgICAgdmFyIHByb3BzID0ga2V5cyhzb3VyY2UpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIHByb3BzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY29uZm9ybXNUb2Agd2hpY2ggYWNjZXB0cyBgcHJvcHNgIHRvIGNoZWNrLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBjb25mb3JtcywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VDb25mb3Jtc1RvKG9iamVjdCwgc291cmNlLCBwcm9wcykge1xuICAgICAgdmFyIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gIWxlbmd0aDtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBrZXkgPSBwcm9wc1tsZW5ndGhdLFxuICAgICAgICAgICAgcHJlZGljYXRlID0gc291cmNlW2tleV0sXG4gICAgICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgIGlmICgodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSB8fCAhcHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZGVsYXlgIGFuZCBgXy5kZWZlcmAgd2hpY2ggYWNjZXB0cyBgYXJnc2BcbiAgICAgKiB0byBwcm92aWRlIHRvIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVsYXkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHdhaXQgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkgaW52b2NhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gcHJvdmlkZSB0byBgZnVuY2AuXG4gICAgICogQHJldHVybnMge251bWJlcnxPYmplY3R9IFJldHVybnMgdGhlIHRpbWVyIGlkIG9yIHRpbWVvdXQgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VEZWxheShmdW5jLCB3YWl0LCBhcmdzKSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpIHsgZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3MpOyB9LCB3YWl0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uZGlmZmVyZW5jZWAgd2l0aG91dCBzdXBwb3J0XG4gICAgICogZm9yIGV4Y2x1ZGluZyBtdWx0aXBsZSBhcnJheXMgb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRGlmZmVyZW5jZShhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzLFxuICAgICAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gW10sXG4gICAgICAgICAgdmFsdWVzTGVuZ3RoID0gdmFsdWVzLmxlbmd0aDtcblxuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICB2YWx1ZXMgPSBhcnJheU1hcCh2YWx1ZXMsIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICAgICAgfVxuICAgICAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHZhbHVlcy5sZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgICAgICBpbmNsdWRlcyA9IGNhY2hlSGFzO1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMgPSBuZXcgU2V0Q2FjaGUodmFsdWVzKTtcbiAgICAgIH1cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA9PSBudWxsID8gdmFsdWUgOiBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICAgICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgICAgIGlmIChpc0NvbW1vbiAmJiBjb21wdXRlZCA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICB2YXIgdmFsdWVzSW5kZXggPSB2YWx1ZXNMZW5ndGg7XG4gICAgICAgICAgd2hpbGUgKHZhbHVlc0luZGV4LS0pIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZXNbdmFsdWVzSW5kZXhdID09PSBjb21wdXRlZCkge1xuICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFpbmNsdWRlcyh2YWx1ZXMsIGNvbXB1dGVkLCBjb21wYXJhdG9yKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JFYWNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICAgICAqL1xuICAgIHZhciBiYXNlRWFjaCA9IGNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd24pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yRWFjaFJpZ2h0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICAgICAqL1xuICAgIHZhciBiYXNlRWFjaFJpZ2h0ID0gY3JlYXRlQmFzZUVhY2goYmFzZUZvck93blJpZ2h0LCB0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmV2ZXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYWxsIGVsZW1lbnRzIHBhc3MgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUV2ZXJ5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHRydWU7XG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0ID0gISFwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8ubWF4YCBhbmQgYF8ubWluYCB3aGljaCBhY2NlcHRzIGFcbiAgICAgKiBgY29tcGFyYXRvcmAgdG8gZGV0ZXJtaW5lIHRoZSBleHRyZW11bSB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgdXNlZCB0byBjb21wYXJlIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZXh0cmVtdW0gdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUV4dHJlbXVtKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjdXJyZW50ID0gaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgICAgIGlmIChjdXJyZW50ICE9IG51bGwgJiYgKGNvbXB1dGVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyAoY3VycmVudCA9PT0gY3VycmVudCAmJiAhaXNTeW1ib2woY3VycmVudCkpXG4gICAgICAgICAgICAgIDogY29tcGFyYXRvcihjdXJyZW50LCBjb21wdXRlZClcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICB2YXIgY29tcHV0ZWQgPSBjdXJyZW50LFxuICAgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maWxsYCB3aXRob3V0IGFuIGl0ZXJhdGVlIGNhbGwgZ3VhcmQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmaWxsLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGZpbGwgYGFycmF5YCB3aXRoLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRmlsbChhcnJheSwgdmFsdWUsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIHN0YXJ0ID0gdG9JbnRlZ2VyKHN0YXJ0KTtcbiAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgc3RhcnQgPSAtc3RhcnQgPiBsZW5ndGggPyAwIDogKGxlbmd0aCArIHN0YXJ0KTtcbiAgICAgIH1cbiAgICAgIGVuZCA9IChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiBsZW5ndGgpID8gbGVuZ3RoIDogdG9JbnRlZ2VyKGVuZCk7XG4gICAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgICBlbmQgKz0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgZW5kID0gc3RhcnQgPiBlbmQgPyAwIDogdG9MZW5ndGgoZW5kKTtcbiAgICAgIHdoaWxlIChzdGFydCA8IGVuZCkge1xuICAgICAgICBhcnJheVtzdGFydCsrXSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbHRlcmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZpbHRlcihjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mbGF0dGVuYCB3aXRoIHN1cHBvcnQgZm9yIHJlc3RyaWN0aW5nIGZsYXR0ZW5pbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbcHJlZGljYXRlPWlzRmxhdHRlbmFibGVdIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNTdHJpY3RdIFJlc3RyaWN0IHRvIHZhbHVlcyB0aGF0IHBhc3MgYHByZWRpY2F0ZWAgY2hlY2tzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgICAgIHJlc3VsdCB8fCAocmVzdWx0ID0gW10pO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICAgIGlmIChkZXB0aCA+IDAgJiYgcHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgICAgIGlmIChkZXB0aCA+IDEpIHtcbiAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgICAgICBiYXNlRmxhdHRlbih2YWx1ZSwgZGVwdGggLSAxLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFpc1N0cmljdCkge1xuICAgICAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBiYXNlRm9yT3duYCB3aGljaCBpdGVyYXRlcyBvdmVyIGBvYmplY3RgXG4gICAgICogcHJvcGVydGllcyByZXR1cm5lZCBieSBga2V5c0Z1bmNgIGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuXG4gICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIHZhciBiYXNlRm9yID0gY3JlYXRlQmFzZUZvcigpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBiYXNlRm9yYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIHByb3BlcnRpZXNcbiAgICAgKiBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgdmFyIGJhc2VGb3JSaWdodCA9IGNyZWF0ZUJhc2VGb3IodHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3Iob2JqZWN0LCBpdGVyYXRlZSwga2V5cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yT3duUmlnaHRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZvck93blJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvclJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZ1bmN0aW9uc2Agd2hpY2ggY3JlYXRlcyBhbiBhcnJheSBvZlxuICAgICAqIGBvYmplY3RgIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZpbHRlcmVkIGZyb20gYHByb3BzYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGZpbHRlci5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGdW5jdGlvbnMob2JqZWN0LCBwcm9wcykge1xuICAgICAgcmV0dXJuIGFycmF5RmlsdGVyKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24ob2JqZWN0W2tleV0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZ2V0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZmF1bHQgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUdldChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAob2JqZWN0ICE9IG51bGwgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgb2JqZWN0ID0gb2JqZWN0W3RvS2V5KHBhdGhbaW5kZXgrK10pXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoaW5kZXggJiYgaW5kZXggPT0gbGVuZ3RoKSA/IG9iamVjdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0QWxsS2V5c2AgYW5kIGBnZXRBbGxLZXlzSW5gIHdoaWNoIHVzZXNcbiAgICAgKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAgICAgKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBrZXlzRnVuYyhvYmplY3QpO1xuICAgICAgcmV0dXJuIGlzQXJyYXkob2JqZWN0KSA/IHJlc3VsdCA6IGFycmF5UHVzaChyZXN1bHQsIHN5bWJvbHNGdW5jKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgICAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICAgICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZ3RgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUd0KHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID4gb3RoZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUhhcyhvYmplY3QsIGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc0luYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUhhc0luKG9iamVjdCwga2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYga2V5IGluIE9iamVjdChvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmluUmFuZ2VgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBudW1iZXJgIGlzIGluIHRoZSByYW5nZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJblJhbmdlKG51bWJlciwgc3RhcnQsIGVuZCkge1xuICAgICAgcmV0dXJuIG51bWJlciA+PSBuYXRpdmVNaW4oc3RhcnQsIGVuZCkgJiYgbnVtYmVyIDwgbmF0aXZlTWF4KHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gLCB3aXRob3V0IHN1cHBvcnRcbiAgICAgKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgdGhhdCBhY2NlcHRzIGFuIGFycmF5IG9mIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheXMgVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2Ygc2hhcmVkIHZhbHVlcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW50ZXJzZWN0aW9uKGFycmF5cywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmNsdWRlcyA9IGNvbXBhcmF0b3IgPyBhcnJheUluY2x1ZGVzV2l0aCA6IGFycmF5SW5jbHVkZXMsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXlzWzBdLmxlbmd0aCxcbiAgICAgICAgICBvdGhMZW5ndGggPSBhcnJheXMubGVuZ3RoLFxuICAgICAgICAgIG90aEluZGV4ID0gb3RoTGVuZ3RoLFxuICAgICAgICAgIGNhY2hlcyA9IEFycmF5KG90aExlbmd0aCksXG4gICAgICAgICAgbWF4TGVuZ3RoID0gSW5maW5pdHksXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIHdoaWxlIChvdGhJbmRleC0tKSB7XG4gICAgICAgIHZhciBhcnJheSA9IGFycmF5c1tvdGhJbmRleF07XG4gICAgICAgIGlmIChvdGhJbmRleCAmJiBpdGVyYXRlZSkge1xuICAgICAgICAgIGFycmF5ID0gYXJyYXlNYXAoYXJyYXksIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICAgICAgICB9XG4gICAgICAgIG1heExlbmd0aCA9IG5hdGl2ZU1pbihhcnJheS5sZW5ndGgsIG1heExlbmd0aCk7XG4gICAgICAgIGNhY2hlc1tvdGhJbmRleF0gPSAhY29tcGFyYXRvciAmJiAoaXRlcmF0ZWUgfHwgKGxlbmd0aCA+PSAxMjAgJiYgYXJyYXkubGVuZ3RoID49IDEyMCkpXG4gICAgICAgICAgPyBuZXcgU2V0Q2FjaGUob3RoSW5kZXggJiYgYXJyYXkpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBhcnJheSA9IGFycmF5c1swXTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgc2VlbiA9IGNhY2hlc1swXTtcblxuICAgICAgb3V0ZXI6XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCAmJiByZXN1bHQubGVuZ3RoIDwgbWF4TGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKCEoc2VlblxuICAgICAgICAgICAgICA/IGNhY2hlSGFzKHNlZW4sIGNvbXB1dGVkKVxuICAgICAgICAgICAgICA6IGluY2x1ZGVzKHJlc3VsdCwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgb3RoSW5kZXggPSBvdGhMZW5ndGg7XG4gICAgICAgICAgd2hpbGUgKC0tb3RoSW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBjYWNoZSA9IGNhY2hlc1tvdGhJbmRleF07XG4gICAgICAgICAgICBpZiAoIShjYWNoZVxuICAgICAgICAgICAgICAgICAgPyBjYWNoZUhhcyhjYWNoZSwgY29tcHV0ZWQpXG4gICAgICAgICAgICAgICAgICA6IGluY2x1ZGVzKGFycmF5c1tvdGhJbmRleF0sIGNvbXB1dGVkLCBjb21wYXJhdG9yKSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzZWVuKSB7XG4gICAgICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW52ZXJ0YCBhbmQgYF8uaW52ZXJ0QnlgIHdoaWNoIGludmVydHNcbiAgICAgKiBgb2JqZWN0YCB3aXRoIHZhbHVlcyB0cmFuc2Zvcm1lZCBieSBgaXRlcmF0ZWVgIGFuZCBzZXQgYnkgYHNldHRlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYGFjY3VtdWxhdG9yYCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGludmVydGVkIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGFjY3VtdWxhdG9yYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW52ZXJ0ZXIob2JqZWN0LCBzZXR0ZXIsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgICBzZXR0ZXIoYWNjdW11bGF0b3IsIGl0ZXJhdGVlKHZhbHVlKSwga2V5LCBvYmplY3QpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW52b2tlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAgICAgKiBtZXRob2QgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2UuXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSB0aGUgbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUludm9rZShvYmplY3QsIHBhdGgsIGFyZ3MpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgICAgb2JqZWN0ID0gcGFyZW50KG9iamVjdCwgcGF0aCk7XG4gICAgICB2YXIgZnVuYyA9IG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogb2JqZWN0W3RvS2V5KGxhc3QocGF0aCkpXTtcbiAgICAgIHJldHVybiBmdW5jID09IG51bGwgPyB1bmRlZmluZWQgOiBhcHBseShmdW5jLCBvYmplY3QsIGFyZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJnc1RhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FycmF5QnVmZmVyYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXkgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzQXJyYXlCdWZmZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFycmF5QnVmZmVyVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRGF0ZWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZGF0ZSBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNEYXRlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBkYXRlVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAgICAgKiBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICAgICAqICAxIC0gVW5vcmRlcmVkIGNvbXBhcmlzb25cbiAgICAgKiAgMiAtIFBhcnRpYWwgY29tcGFyaXNvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYHZhbHVlYCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgICAgaWYgKHZhbHVlID09PSBvdGhlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IG90aGVyID09IG51bGwgfHwgKCFpc09iamVjdExpa2UodmFsdWUpICYmICFpc09iamVjdExpa2Uob3RoZXIpKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlSXNFcXVhbERlZXAodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBiYXNlSXNFcXVhbCwgc3RhY2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAgICAgKiBkZWVwIGNvbXBhcmlzb25zIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gICAgICogcmVmZXJlbmNlcyB0byBiZSBjb21wYXJlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgICAgdmFyIG9iaklzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgICAgIG90aElzQXJyID0gaXNBcnJheShvdGhlciksXG4gICAgICAgICAgb2JqVGFnID0gb2JqSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvYmplY3QpLFxuICAgICAgICAgIG90aFRhZyA9IG90aElzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob3RoZXIpO1xuXG4gICAgICBvYmpUYWcgPSBvYmpUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG9ialRhZztcbiAgICAgIG90aFRhZyA9IG90aFRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb3RoVGFnO1xuXG4gICAgICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgICAgIG90aElzT2JqID0gb3RoVGFnID09IG9iamVjdFRhZyxcbiAgICAgICAgICBpc1NhbWVUYWcgPSBvYmpUYWcgPT0gb3RoVGFnO1xuXG4gICAgICBpZiAoaXNTYW1lVGFnICYmIGlzQnVmZmVyKG9iamVjdCkpIHtcbiAgICAgICAgaWYgKCFpc0J1ZmZlcihvdGhlcikpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgb2JqSXNBcnIgPSB0cnVlO1xuICAgICAgICBvYmpJc09iaiA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGlzU2FtZVRhZyAmJiAhb2JqSXNPYmopIHtcbiAgICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgICAgcmV0dXJuIChvYmpJc0FyciB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KSlcbiAgICAgICAgICA/IGVxdWFsQXJyYXlzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spXG4gICAgICAgICAgOiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIG9ialRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgICB9XG4gICAgICBpZiAoIShiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcpKSB7XG4gICAgICAgIHZhciBvYmpJc1dyYXBwZWQgPSBvYmpJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgJ19fd3JhcHBlZF9fJyksXG4gICAgICAgICAgICBvdGhJc1dyYXBwZWQgPSBvdGhJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCAnX193cmFwcGVkX18nKTtcblxuICAgICAgICBpZiAob2JqSXNXcmFwcGVkIHx8IG90aElzV3JhcHBlZCkge1xuICAgICAgICAgIHZhciBvYmpVbndyYXBwZWQgPSBvYmpJc1dyYXBwZWQgPyBvYmplY3QudmFsdWUoKSA6IG9iamVjdCxcbiAgICAgICAgICAgICAgb3RoVW53cmFwcGVkID0gb3RoSXNXcmFwcGVkID8gb3RoZXIudmFsdWUoKSA6IG90aGVyO1xuXG4gICAgICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgICAgICByZXR1cm4gZXF1YWxGdW5jKG9ialVud3JhcHBlZCwgb3RoVW53cmFwcGVkLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghaXNTYW1lVGFnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICByZXR1cm4gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWFwYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNNYXAodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gbWFwVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWF0Y2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBtYXRjaERhdGEgVGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIHRvIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSwgY3VzdG9taXplcikge1xuICAgICAgdmFyIGluZGV4ID0gbWF0Y2hEYXRhLmxlbmd0aCxcbiAgICAgICAgICBsZW5ndGggPSBpbmRleCxcbiAgICAgICAgICBub0N1c3RvbWl6ZXIgPSAhY3VzdG9taXplcjtcblxuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAhbGVuZ3RoO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgICAgIGlmICgobm9DdXN0b21pemVyICYmIGRhdGFbMl0pXG4gICAgICAgICAgICAgID8gZGF0YVsxXSAhPT0gb2JqZWN0W2RhdGFbMF1dXG4gICAgICAgICAgICAgIDogIShkYXRhWzBdIGluIG9iamVjdClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgICAgIHZhciBrZXkgPSBkYXRhWzBdLFxuICAgICAgICAgICAgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgICAgIHNyY1ZhbHVlID0gZGF0YVsxXTtcblxuICAgICAgICBpZiAobm9DdXN0b21pemVyICYmIGRhdGFbMl0pIHtcbiAgICAgICAgICBpZiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBzdGFjayA9IG5ldyBTdGFjaztcbiAgICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjayk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghKHJlc3VsdCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBiYXNlSXNFcXVhbChzcmNWYWx1ZSwgb2JqVmFsdWUsIENPTVBBUkVfUEFSVElBTF9GTEFHIHwgQ09NUEFSRV9VTk9SREVSRURfRkxBRywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICAgICAgICAgOiByZXN1bHRcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYXRpdmVgIHdpdGhvdXQgYmFkIHNoaW0gY2hlY2tzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICAgICAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbih2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yO1xuICAgICAgcmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzUmVnRXhwYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSByZWdleHAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNSZWdFeHAodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHJlZ2V4cFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1NldGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzU2V0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IHNldFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICAgICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW2Jhc2VHZXRUYWcodmFsdWUpXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pdGVyYXRlZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gW3ZhbHVlPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGFuIGl0ZXJhdGVlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgaXRlcmF0ZWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUl0ZXJhdGVlKHZhbHVlKSB7XG4gICAgICAvLyBEb24ndCBzdG9yZSB0aGUgYHR5cGVvZmAgcmVzdWx0IGluIGEgdmFyaWFibGUgdG8gYXZvaWQgYSBKSVQgYnVnIGluIFNhZmFyaSA5LlxuICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwMzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gaWRlbnRpdHk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBpc0FycmF5KHZhbHVlKVxuICAgICAgICAgID8gYmFzZU1hdGNoZXNQcm9wZXJ0eSh2YWx1ZVswXSwgdmFsdWVbMV0pXG4gICAgICAgICAgOiBiYXNlTWF0Y2hlcyh2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gICAgICBpZiAoIWlzUHJvdG90eXBlKG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZUtleXMob2JqZWN0KTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNJbmAgd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCkge1xuICAgICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVLZXlzSW4ob2JqZWN0KTtcbiAgICAgIH1cbiAgICAgIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubHRgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUx0KHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlIDwgb3RoZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWFwYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICByZXN1bHQgPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IEFycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKSA6IFtdO1xuXG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJlc3VsdFsrK2luZGV4XSA9IGl0ZXJhdGVlKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hdGNoZXNgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNvdXJjZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWF0Y2hlcyhzb3VyY2UpIHtcbiAgICAgIHZhciBtYXRjaERhdGEgPSBnZXRNYXRjaERhdGEoc291cmNlKTtcbiAgICAgIGlmIChtYXRjaERhdGEubGVuZ3RoID09IDEgJiYgbWF0Y2hEYXRhWzBdWzJdKSB7XG4gICAgICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShtYXRjaERhdGFbMF1bMF0sIG1hdGNoRGF0YVswXVsxXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPT09IHNvdXJjZSB8fCBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc1Byb3BlcnR5YCB3aGljaCBkb2Vzbid0IGNsb25lIGBzcmNWYWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWF0Y2hlc1Byb3BlcnR5KHBhdGgsIHNyY1ZhbHVlKSB7XG4gICAgICBpZiAoaXNLZXkocGF0aCkgJiYgaXNTdHJpY3RDb21wYXJhYmxlKHNyY1ZhbHVlKSkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUodG9LZXkocGF0aCksIHNyY1ZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgdmFyIG9ialZhbHVlID0gZ2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICAgIHJldHVybiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBvYmpWYWx1ZSA9PT0gc3JjVmFsdWUpXG4gICAgICAgICAgPyBoYXNJbihvYmplY3QsIHBhdGgpXG4gICAgICAgICAgOiBiYXNlSXNFcXVhbChzcmNWYWx1ZSwgb2JqVmFsdWUsIENPTVBBUkVfUEFSVElBTF9GTEFHIHwgQ09NUEFSRV9VTk9SREVSRURfRkxBRyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lcmdlYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgbWVyZ2VkIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplciwgc3RhY2spIHtcbiAgICAgIGlmIChvYmplY3QgPT09IHNvdXJjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBiYXNlRm9yKHNvdXJjZSwgZnVuY3Rpb24oc3JjVmFsdWUsIGtleSkge1xuICAgICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgICBpZiAoaXNPYmplY3Qoc3JjVmFsdWUpKSB7XG4gICAgICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICAgICAgPyBjdXN0b21pemVyKHNhZmVHZXQob2JqZWN0LCBrZXkpLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LCBrZXlzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZU1lcmdlYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gICAgICogZGVlcCBtZXJnZXMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAgICAgKiByZWZlcmVuY2VzIHRvIGJlIG1lcmdlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBtZXJnZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG1lcmdlRnVuYyBUaGUgZnVuY3Rpb24gdG8gbWVyZ2UgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgbWVyZ2VGdW5jLCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgICAgdmFyIG9ialZhbHVlID0gc2FmZUdldChvYmplY3QsIGtleSksXG4gICAgICAgICAgc3JjVmFsdWUgPSBzYWZlR2V0KHNvdXJjZSwga2V5KSxcbiAgICAgICAgICBzdGFja2VkID0gc3RhY2suZ2V0KHNyY1ZhbHVlKTtcblxuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgc3RhY2tlZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgPyBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGlzQ29tbW9uKSB7XG4gICAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkoc3JjVmFsdWUpLFxuICAgICAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmIGlzQnVmZmVyKHNyY1ZhbHVlKSxcbiAgICAgICAgICAgIGlzVHlwZWQgPSAhaXNBcnIgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkoc3JjVmFsdWUpO1xuXG4gICAgICAgIG5ld1ZhbHVlID0gc3JjVmFsdWU7XG4gICAgICAgIGlmIChpc0FyciB8fCBpc0J1ZmYgfHwgaXNUeXBlZCkge1xuICAgICAgICAgIGlmIChpc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoaXNBcnJheUxpa2VPYmplY3Qob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGNvcHlBcnJheShvYmpWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGlzQnVmZikge1xuICAgICAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChpc1R5cGVkKSB7XG4gICAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBjbG9uZVR5cGVkQXJyYXkoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gW107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qoc3JjVmFsdWUpIHx8IGlzQXJndW1lbnRzKHNyY1ZhbHVlKSkge1xuICAgICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICAgICAgaWYgKGlzQXJndW1lbnRzKG9ialZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSB0b1BsYWluT2JqZWN0KG9ialZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoIWlzT2JqZWN0KG9ialZhbHVlKSB8fCBpc0Z1bmN0aW9uKG9ialZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBpbml0Q2xvbmVPYmplY3Qoc3JjVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXNDb21tb24pIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIHN0YWNrLnNldChzcmNWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgICBtZXJnZUZ1bmMobmV3VmFsdWUsIHNyY1ZhbHVlLCBzcmNJbmRleCwgY3VzdG9taXplciwgc3RhY2spO1xuICAgICAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICAgICAgfVxuICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm50aGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJldHVybi5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbnRoIGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTnRoKGFycmF5LCBuKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbiArPSBuIDwgMCA/IGxlbmd0aCA6IDA7XG4gICAgICByZXR1cm4gaXNJbmRleChuLCBsZW5ndGgpID8gYXJyYXlbbl0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ub3JkZXJCeWAgd2l0aG91dCBwYXJhbSBndWFyZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9uW118T2JqZWN0W118c3RyaW5nW119IGl0ZXJhdGVlcyBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gb3JkZXJzIFRoZSBzb3J0IG9yZGVycyBvZiBgaXRlcmF0ZWVzYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgaXRlcmF0ZWVzLCBvcmRlcnMpIHtcbiAgICAgIGlmIChpdGVyYXRlZXMubGVuZ3RoKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgICBpZiAoaXNBcnJheShpdGVyYXRlZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgICByZXR1cm4gYmFzZUdldCh2YWx1ZSwgaXRlcmF0ZWUubGVuZ3RoID09PSAxID8gaXRlcmF0ZWVbMF0gOiBpdGVyYXRlZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpdGVyYXRlZTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVyYXRlZXMgPSBbaWRlbnRpdHldO1xuICAgICAgfVxuXG4gICAgICB2YXIgaW5kZXggPSAtMTtcbiAgICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKTtcblxuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VNYXAoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgICB2YXIgY3JpdGVyaWEgPSBhcnJheU1hcChpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICAgICAgcmV0dXJuIGl0ZXJhdGVlKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7ICdjcml0ZXJpYSc6IGNyaXRlcmlhLCAnaW5kZXgnOiArK2luZGV4LCAndmFsdWUnOiB2YWx1ZSB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBiYXNlU29ydEJ5KHJlc3VsdCwgZnVuY3Rpb24ob2JqZWN0LCBvdGhlcikge1xuICAgICAgICByZXR1cm4gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5waWNrYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAgICAgKiBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgICAgIHJldHVybiBoYXNJbihvYmplY3QsIHBhdGgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgIGBfLnBpY2tCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgcGF0aCA9IHBhdGhzW2luZGV4XSxcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuXG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIHBhdGgpKSB7XG4gICAgICAgICAgYmFzZVNldChyZXN1bHQsIGNhc3RQYXRoKHBhdGgsIG9iamVjdCksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VQcm9wZXJ0eWAgd2hpY2ggc3VwcG9ydHMgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHVsbEFsbEJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gICAgICogc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4T2YgPSBjb21wYXJhdG9yID8gYmFzZUluZGV4T2ZXaXRoIDogYmFzZUluZGV4T2YsXG4gICAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICAgIHNlZW4gPSBhcnJheTtcblxuICAgICAgaWYgKGFycmF5ID09PSB2YWx1ZXMpIHtcbiAgICAgICAgdmFsdWVzID0gY29weUFycmF5KHZhbHVlcyk7XG4gICAgICB9XG4gICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgc2VlbiA9IGFycmF5TWFwKGFycmF5LCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBmcm9tSW5kZXggPSAwLFxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZXNbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHdoaWxlICgoZnJvbUluZGV4ID0gaW5kZXhPZihzZWVuLCBjb21wdXRlZCwgZnJvbUluZGV4LCBjb21wYXJhdG9yKSkgPiAtMSkge1xuICAgICAgICAgIGlmIChzZWVuICE9PSBhcnJheSkge1xuICAgICAgICAgICAgc3BsaWNlLmNhbGwoc2VlbiwgZnJvbUluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3BsaWNlLmNhbGwoYXJyYXksIGZyb21JbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wdWxsQXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIGluZGV4ZXMgb3IgY2FwdHVyaW5nIHRoZSByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IGluZGV4ZXMgVGhlIGluZGV4ZXMgb2YgZWxlbWVudHMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQdWxsQXQoYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA/IGluZGV4ZXMubGVuZ3RoIDogMCxcbiAgICAgICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGluZGV4ID0gaW5kZXhlc1tsZW5ndGhdO1xuICAgICAgICBpZiAobGVuZ3RoID09IGxhc3RJbmRleCB8fCBpbmRleCAhPT0gcHJldmlvdXMpIHtcbiAgICAgICAgICB2YXIgcHJldmlvdXMgPSBpbmRleDtcbiAgICAgICAgICBpZiAoaXNJbmRleChpbmRleCkpIHtcbiAgICAgICAgICAgIHNwbGljZS5jYWxsKGFycmF5LCBpbmRleCwgMSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2VVbnNldChhcnJheSwgaW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmRvbWAgd2l0aG91dCBzdXBwb3J0IGZvciByZXR1cm5pbmdcbiAgICAgKiBmbG9hdGluZy1wb2ludCBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbG93ZXIgVGhlIGxvd2VyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcmFuZG9tIG51bWJlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUmFuZG9tKGxvd2VyLCB1cHBlcikge1xuICAgICAgcmV0dXJuIGxvd2VyICsgbmF0aXZlRmxvb3IobmF0aXZlUmFuZG9tKCkgKiAodXBwZXIgLSBsb3dlciArIDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yYW5nZWAgYW5kIGBfLnJhbmdlUmlnaHRgIHdoaWNoIGRvZXNuJ3RcbiAgICAgKiBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGVwIFRoZSB2YWx1ZSB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUmFuZ2Uoc3RhcnQsIGVuZCwgc3RlcCwgZnJvbVJpZ2h0KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgobmF0aXZlQ2VpbCgoZW5kIC0gc3RhcnQpIC8gKHN0ZXAgfHwgMSkpLCAwKSxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgcmVzdWx0W2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdID0gc3RhcnQ7XG4gICAgICAgIHN0YXJ0ICs9IHN0ZXA7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlcGVhdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gcmVwZWF0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmVwZWF0IHRoZSBzdHJpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmVwZWF0ZWQgc3RyaW5nLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSZXBlYXQoc3RyaW5nLCBuKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgICBpZiAoIXN0cmluZyB8fCBuIDwgMSB8fCBuID4gTUFYX1NBRkVfSU5URUdFUikge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgLy8gTGV2ZXJhZ2UgdGhlIGV4cG9uZW50aWF0aW9uIGJ5IHNxdWFyaW5nIGFsZ29yaXRobSBmb3IgYSBmYXN0ZXIgcmVwZWF0LlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4cG9uZW50aWF0aW9uX2J5X3NxdWFyaW5nIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICBkbyB7XG4gICAgICAgIGlmIChuICUgMikge1xuICAgICAgICAgIHJlc3VsdCArPSBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgbiA9IG5hdGl2ZUZsb29yKG4gLyAyKTtcbiAgICAgICAgaWYgKG4pIHtcbiAgICAgICAgICBzdHJpbmcgKz0gc3RyaW5nO1xuICAgICAgICB9XG4gICAgICB9IHdoaWxlIChuKTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgc3RhcnQsIGlkZW50aXR5KSwgZnVuYyArICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zYW1wbGVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTYW1wbGUoY29sbGVjdGlvbikge1xuICAgICAgcmV0dXJuIGFycmF5U2FtcGxlKHZhbHVlcyhjb2xsZWN0aW9uKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2FtcGxlU2l6ZWAgd2l0aG91dCBwYXJhbSBndWFyZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2FtcGxlU2l6ZShjb2xsZWN0aW9uLCBuKSB7XG4gICAgICB2YXIgYXJyYXkgPSB2YWx1ZXMoY29sbGVjdGlvbik7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYoYXJyYXksIGJhc2VDbGFtcChuLCAwLCBhcnJheS5sZW5ndGgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zZXRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfVxuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDEsXG4gICAgICAgICAgbmVzdGVkID0gb2JqZWN0O1xuXG4gICAgICB3aGlsZSAobmVzdGVkICE9IG51bGwgJiYgKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pLFxuICAgICAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAoa2V5ID09PSAnX19wcm90b19fJyB8fCBrZXkgPT09ICdjb25zdHJ1Y3RvcicgfHwga2V5ID09PSAncHJvdG90eXBlJykge1xuICAgICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZXggIT0gbGFzdEluZGV4KSB7XG4gICAgICAgICAgdmFyIG9ialZhbHVlID0gbmVzdGVkW2tleV07XG4gICAgICAgICAgbmV3VmFsdWUgPSBjdXN0b21pemVyID8gY3VzdG9taXplcihvYmpWYWx1ZSwga2V5LCBuZXN0ZWQpIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGlzT2JqZWN0KG9ialZhbHVlKVxuICAgICAgICAgICAgICA/IG9ialZhbHVlXG4gICAgICAgICAgICAgIDogKGlzSW5kZXgocGF0aFtpbmRleCArIDFdKSA/IFtdIDoge30pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhc3NpZ25WYWx1ZShuZXN0ZWQsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICBuZXN0ZWQgPSBuZXN0ZWRba2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldERhdGFgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSBtZXRhZGF0YSB3aXRoLlxuICAgICAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZVNldERhdGEgPSAhbWV0YU1hcCA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgZGF0YSkge1xuICAgICAgbWV0YU1hcC5zZXQoZnVuYywgZGF0YSk7XG4gICAgICByZXR1cm4gZnVuYztcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldFRvU3RyaW5nYCB3aXRob3V0IHN1cHBvcnQgZm9yIGhvdCBsb29wIHNob3J0aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBiYXNlU2V0VG9TdHJpbmcgPSAhZGVmaW5lUHJvcGVydHkgPyBpZGVudGl0eSA6IGZ1bmN0aW9uKGZ1bmMsIHN0cmluZykge1xuICAgICAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAgICdlbnVtZXJhYmxlJzogZmFsc2UsXG4gICAgICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zaHVmZmxlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2h1ZmZsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzaHVmZmxlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2h1ZmZsZShjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYodmFsdWVzKGNvbGxlY3Rpb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zbGljZWAgd2l0aG91dCBhbiBpdGVyYXRlZSBjYWxsIGd1YXJkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICAgICAgfVxuICAgICAgZW5kID0gZW5kID4gbGVuZ3RoID8gbGVuZ3RoIDogZW5kO1xuICAgICAgaWYgKGVuZCA8IDApIHtcbiAgICAgICAgZW5kICs9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGxlbmd0aCA9IHN0YXJ0ID4gZW5kID8gMCA6ICgoZW5kIC0gc3RhcnQpID4+PiAwKTtcbiAgICAgIHN0YXJ0ID4+Pj0gMDtcblxuICAgICAgdmFyIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbaW5kZXhdID0gYXJyYXlbaW5kZXggKyBzdGFydF07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvbWVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb21lKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdDtcblxuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgICByZXR1cm4gIXJlc3VsdDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuICEhcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRlZEluZGV4YCBhbmQgYF8uc29ydGVkTGFzdEluZGV4YCB3aGljaFxuICAgICAqIHBlcmZvcm1zIGEgYmluYXJ5IHNlYXJjaCBvZiBgYXJyYXlgIHRvIGRldGVybWluZSB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYFxuICAgICAqIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG8gbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXRIaWdoZXN0XSBTcGVjaWZ5IHJldHVybmluZyB0aGUgaGlnaGVzdCBxdWFsaWZpZWQgaW5kZXguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHJldEhpZ2hlc3QpIHtcbiAgICAgIHZhciBsb3cgPSAwLFxuICAgICAgICAgIGhpZ2ggPSBhcnJheSA9PSBudWxsID8gbG93IDogYXJyYXkubGVuZ3RoO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09PSB2YWx1ZSAmJiBoaWdoIDw9IEhBTEZfTUFYX0FSUkFZX0xFTkdUSCkge1xuICAgICAgICB3aGlsZSAobG93IDwgaGlnaCkge1xuICAgICAgICAgIHZhciBtaWQgPSAobG93ICsgaGlnaCkgPj4+IDEsXG4gICAgICAgICAgICAgIGNvbXB1dGVkID0gYXJyYXlbbWlkXTtcblxuICAgICAgICAgIGlmIChjb21wdXRlZCAhPT0gbnVsbCAmJiAhaXNTeW1ib2woY29tcHV0ZWQpICYmXG4gICAgICAgICAgICAgIChyZXRIaWdoZXN0ID8gKGNvbXB1dGVkIDw9IHZhbHVlKSA6IChjb21wdXRlZCA8IHZhbHVlKSkpIHtcbiAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhpZ2ggPSBtaWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoaWdoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaWRlbnRpdHksIHJldEhpZ2hlc3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRlZEluZGV4QnlgIGFuZCBgXy5zb3J0ZWRMYXN0SW5kZXhCeWBcbiAgICAgKiB3aGljaCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGVcbiAgICAgKiB0aGVpciBzb3J0IHJhbmtpbmcuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbcmV0SGlnaGVzdF0gU3BlY2lmeSByZXR1cm5pbmcgdGhlIGhpZ2hlc3QgcXVhbGlmaWVkIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGl0ZXJhdGVlLCByZXRIaWdoZXN0KSB7XG4gICAgICB2YXIgbG93ID0gMCxcbiAgICAgICAgICBoaWdoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoaGlnaCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgdmFsdWUgPSBpdGVyYXRlZSh2YWx1ZSk7XG4gICAgICB2YXIgdmFsSXNOYU4gPSB2YWx1ZSAhPT0gdmFsdWUsXG4gICAgICAgICAgdmFsSXNOdWxsID0gdmFsdWUgPT09IG51bGwsXG4gICAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSksXG4gICAgICAgICAgdmFsSXNVbmRlZmluZWQgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gICAgICB3aGlsZSAobG93IDwgaGlnaCkge1xuICAgICAgICB2YXIgbWlkID0gbmF0aXZlRmxvb3IoKGxvdyArIGhpZ2gpIC8gMiksXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKGFycmF5W21pZF0pLFxuICAgICAgICAgICAgb3RoSXNEZWZpbmVkID0gY29tcHV0ZWQgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG90aElzTnVsbCA9IGNvbXB1dGVkID09PSBudWxsLFxuICAgICAgICAgICAgb3RoSXNSZWZsZXhpdmUgPSBjb21wdXRlZCA9PT0gY29tcHV0ZWQsXG4gICAgICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKGNvbXB1dGVkKTtcblxuICAgICAgICBpZiAodmFsSXNOYU4pIHtcbiAgICAgICAgICB2YXIgc2V0TG93ID0gcmV0SGlnaGVzdCB8fCBvdGhJc1JlZmxleGl2ZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxJc1VuZGVmaW5lZCkge1xuICAgICAgICAgIHNldExvdyA9IG90aElzUmVmbGV4aXZlICYmIChyZXRIaWdoZXN0IHx8IG90aElzRGVmaW5lZCk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsSXNOdWxsKSB7XG4gICAgICAgICAgc2V0TG93ID0gb3RoSXNSZWZsZXhpdmUgJiYgb3RoSXNEZWZpbmVkICYmIChyZXRIaWdoZXN0IHx8ICFvdGhJc051bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbElzU3ltYm9sKSB7XG4gICAgICAgICAgc2V0TG93ID0gb3RoSXNSZWZsZXhpdmUgJiYgb3RoSXNEZWZpbmVkICYmICFvdGhJc051bGwgJiYgKHJldEhpZ2hlc3QgfHwgIW90aElzU3ltYm9sKTtcbiAgICAgICAgfSBlbHNlIGlmIChvdGhJc051bGwgfHwgb3RoSXNTeW1ib2wpIHtcbiAgICAgICAgICBzZXRMb3cgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRMb3cgPSByZXRIaWdoZXN0ID8gKGNvbXB1dGVkIDw9IHZhbHVlKSA6IChjb21wdXRlZCA8IHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2V0TG93KSB7XG4gICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoaWdoID0gbWlkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmF0aXZlTWluKGhpZ2gsIE1BWF9BUlJBWV9JTkRFWCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkVW5pcWAgYW5kIGBfLnNvcnRlZFVuaXFCeWAgd2l0aG91dFxuICAgICAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvcnRlZFVuaXEoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgaWYgKCFpbmRleCB8fCAhZXEoY29tcHV0ZWQsIHNlZW4pKSB7XG4gICAgICAgICAgdmFyIHNlZW4gPSBjb21wdXRlZDtcbiAgICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZSA9PT0gMCA/IDAgOiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b051bWJlcmAgd2hpY2ggZG9lc24ndCBlbnN1cmUgY29ycmVjdFxuICAgICAqIGNvbnZlcnNpb25zIG9mIGJpbmFyeSwgaGV4YWRlY2ltYWwsIG9yIG9jdGFsIHN0cmluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VUb051bWJlcih2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBOQU47XG4gICAgICB9XG4gICAgICByZXR1cm4gK3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvU3RyaW5nYCB3aGljaCBkb2Vzbid0IGNvbnZlcnQgbnVsbGlzaFxuICAgICAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgICAgIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIGJhc2VUb1N0cmluZykgKyAnJztcbiAgICAgIH1cbiAgICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gICAgICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5pcUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXMsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgICAgICByZXN1bHQgPSBbXSxcbiAgICAgICAgICBzZWVuID0gcmVzdWx0O1xuXG4gICAgICBpZiAoY29tcGFyYXRvcikge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAobGVuZ3RoID49IExBUkdFX0FSUkFZX1NJWkUpIHtcbiAgICAgICAgdmFyIHNldCA9IGl0ZXJhdGVlID8gbnVsbCA6IGNyZWF0ZVNldChhcnJheSk7XG4gICAgICAgIGlmIChzZXQpIHtcbiAgICAgICAgICByZXR1cm4gc2V0VG9BcnJheShzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIGluY2x1ZGVzID0gY2FjaGVIYXM7XG4gICAgICAgIHNlZW4gPSBuZXcgU2V0Q2FjaGU7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgc2VlbiA9IGl0ZXJhdGVlID8gW10gOiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgICAgIHZhciBzZWVuSW5kZXggPSBzZWVuLmxlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoc2VlbkluZGV4LS0pIHtcbiAgICAgICAgICAgIGlmIChzZWVuW3NlZW5JbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaW5jbHVkZXMoc2VlbiwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICAgICAgaWYgKHNlZW4gIT09IHJlc3VsdCkge1xuICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuc2V0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcHJvcGVydHkgcGF0aCB0byB1bnNldC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IGlzIGRlbGV0ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVW5zZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICAgIG9iamVjdCA9IHBhcmVudChvYmplY3QsIHBhdGgpO1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsIHx8IGRlbGV0ZSBvYmplY3RbdG9LZXkobGFzdChwYXRoKSldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVwZGF0ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHVwZGF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVXBkYXRlKG9iamVjdCwgcGF0aCwgdXBkYXRlciwgY3VzdG9taXplcikge1xuICAgICAgcmV0dXJuIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB1cGRhdGVyKGJhc2VHZXQob2JqZWN0LCBwYXRoKSksIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5kcm9wV2hpbGVgIGFuZCBgXy50YWtlV2hpbGVgXG4gICAgICogd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEcm9wXSBTcGVjaWZ5IGRyb3BwaW5nIGVsZW1lbnRzIGluc3RlYWQgb2YgdGFraW5nIHRoZW0uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VXaGlsZShhcnJheSwgcHJlZGljYXRlLCBpc0Ryb3AsIGZyb21SaWdodCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xO1xuXG4gICAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSAmJlxuICAgICAgICBwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7fVxuXG4gICAgICByZXR1cm4gaXNEcm9wXG4gICAgICAgID8gYmFzZVNsaWNlKGFycmF5LCAoZnJvbVJpZ2h0ID8gMCA6IGluZGV4KSwgKGZyb21SaWdodCA/IGluZGV4ICsgMSA6IGxlbmd0aCkpXG4gICAgICAgIDogYmFzZVNsaWNlKGFycmF5LCAoZnJvbVJpZ2h0ID8gaW5kZXggKyAxIDogMCksIChmcm9tUmlnaHQgPyBsZW5ndGggOiBpbmRleCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGB3cmFwcGVyVmFsdWVgIHdoaWNoIHJldHVybnMgdGhlIHJlc3VsdCBvZlxuICAgICAqIHBlcmZvcm1pbmcgYSBzZXF1ZW5jZSBvZiBhY3Rpb25zIG9uIHRoZSB1bndyYXBwZWQgYHZhbHVlYCwgd2hlcmUgZWFjaFxuICAgICAqIHN1Y2Nlc3NpdmUgYWN0aW9uIGlzIHN1cHBsaWVkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHByZXZpb3VzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHtBcnJheX0gYWN0aW9ucyBBY3Rpb25zIHRvIHBlcmZvcm0gdG8gcmVzb2x2ZSB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlV3JhcHBlclZhbHVlKHZhbHVlLCBhY3Rpb25zKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdmFsdWU7XG4gICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnZhbHVlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXlSZWR1Y2UoYWN0aW9ucywgZnVuY3Rpb24ocmVzdWx0LCBhY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGFjdGlvbi5mdW5jLmFwcGx5KGFjdGlvbi50aGlzQXJnLCBhcnJheVB1c2goW3Jlc3VsdF0sIGFjdGlvbi5hcmdzKSk7XG4gICAgICB9LCByZXN1bHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy54b3JgLCB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcywgdGhhdCBhY2NlcHRzIGFuIGFycmF5IG9mIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheXMgVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgdmFsdWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VYb3IoYXJyYXlzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5cy5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVVuaXEoYXJyYXlzWzBdKSA6IFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGFycmF5ID0gYXJyYXlzW2luZGV4XSxcbiAgICAgICAgICAgIG90aEluZGV4ID0gLTE7XG5cbiAgICAgICAgd2hpbGUgKCsrb3RoSW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBpZiAob3RoSW5kZXggIT0gaW5kZXgpIHtcbiAgICAgICAgICAgIHJlc3VsdFtpbmRleF0gPSBiYXNlRGlmZmVyZW5jZShyZXN1bHRbaW5kZXhdIHx8IGFycmF5LCBhcnJheXNbb3RoSW5kZXhdLCBpdGVyYXRlZSwgY29tcGFyYXRvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4ocmVzdWx0LCAxKSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy56aXBPYmplY3RgIHdoaWNoIGFzc2lnbnMgdmFsdWVzIHVzaW5nIGBhc3NpZ25GdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbkZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlWmlwT2JqZWN0KHByb3BzLCB2YWx1ZXMsIGFzc2lnbkZ1bmMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aCxcbiAgICAgICAgICB2YWxzTGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSB7fTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5kZXggPCB2YWxzTGVuZ3RoID8gdmFsdWVzW2luZGV4XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgYXNzaWduRnVuYyhyZXN1bHQsIHByb3BzW2luZGV4XSwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIHRvIGFuIGVtcHR5IGFycmF5IGlmIGl0J3Mgbm90IGFuIGFycmF5IGxpa2Ugb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgdGhlIGNhc3QgYXJyYXktbGlrZSBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdEFycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSA/IHZhbHVlIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCB0byBgaWRlbnRpdHlgIGlmIGl0J3Mgbm90IGEgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGNhc3QgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdEZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicgPyB2YWx1ZSA6IGlkZW50aXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RQYXRoKHZhbHVlLCBvYmplY3QpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNLZXkodmFsdWUsIG9iamVjdCkgPyBbdmFsdWVdIDogc3RyaW5nVG9QYXRoKHRvU3RyaW5nKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBgYmFzZVJlc3RgIGFsaWFzIHdoaWNoIGNhbiBiZSByZXBsYWNlZCB3aXRoIGBpZGVudGl0eWAgYnkgbW9kdWxlXG4gICAgICogcmVwbGFjZW1lbnQgcGx1Z2lucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHR5cGUge0Z1bmN0aW9ufVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgdmFyIGNhc3RSZXN0ID0gYmFzZVJlc3Q7XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgYXJyYXlgIHRvIGEgc2xpY2UgaWYgaXQncyBuZWVkZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBzbGljZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0U2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IGVuZDtcbiAgICAgIHJldHVybiAoIXN0YXJ0ICYmIGVuZCA+PSBsZW5ndGgpID8gYXJyYXkgOiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIHRoZSBnbG9iYWwgW2BjbGVhclRpbWVvdXRgXShodHRwczovL21kbi5pby9jbGVhclRpbWVvdXQpLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcnxPYmplY3R9IGlkIFRoZSB0aW1lciBpZCBvciB0aW1lb3V0IG9iamVjdCBvZiB0aGUgdGltZXIgdG8gY2xlYXIuXG4gICAgICovXG4gICAgdmFyIGNsZWFyVGltZW91dCA9IGN0eENsZWFyVGltZW91dCB8fCBmdW5jdGlvbihpZCkge1xuICAgICAgcmV0dXJuIHJvb3QuY2xlYXJUaW1lb3V0KGlkKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mICBgYnVmZmVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmZlciBUaGUgYnVmZmVyIHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICAgICAgaWYgKGlzRGVlcCkge1xuICAgICAgICByZXR1cm4gYnVmZmVyLnNsaWNlKCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBhbGxvY1Vuc2FmZSA/IGFsbG9jVW5zYWZlKGxlbmd0aCkgOiBuZXcgYnVmZmVyLmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgICAgIGJ1ZmZlci5jb3B5KHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgYXJyYXlCdWZmZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBhcnJheUJ1ZmZlciBUaGUgYXJyYXkgYnVmZmVyIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGFycmF5IGJ1ZmZlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IGFycmF5QnVmZmVyLmNvbnN0cnVjdG9yKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGBkYXRhVmlld2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhVmlldyBUaGUgZGF0YSB2aWV3IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGRhdGEgdmlldy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZURhdGFWaWV3KGRhdGFWaWV3LCBpc0RlZXApIHtcbiAgICAgIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcikgOiBkYXRhVmlldy5idWZmZXI7XG4gICAgICByZXR1cm4gbmV3IGRhdGFWaWV3LmNvbnN0cnVjdG9yKGJ1ZmZlciwgZGF0YVZpZXcuYnl0ZU9mZnNldCwgZGF0YVZpZXcuYnl0ZUxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHJlZ2V4cC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgcmVnZXhwLmNvbnN0cnVjdG9yKHJlZ2V4cC5zb3VyY2UsIHJlRmxhZ3MuZXhlYyhyZWdleHApKTtcbiAgICAgIHJlc3VsdC5sYXN0SW5kZXggPSByZWdleHAubGFzdEluZGV4O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGBzeW1ib2xgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHN5bWJvbCBUaGUgc3ltYm9sIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgc3ltYm9sIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVN5bWJvbChzeW1ib2wpIHtcbiAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mID8gT2JqZWN0KHN5bWJvbFZhbHVlT2YuY2FsbChzeW1ib2wpKSA6IHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgdHlwZWRBcnJheWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlZEFycmF5IFRoZSB0eXBlZCBhcnJheSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB0eXBlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSwgaXNEZWVwKSB7XG4gICAgICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcih0eXBlZEFycmF5LmJ1ZmZlcikgOiB0eXBlZEFycmF5LmJ1ZmZlcjtcbiAgICAgIHJldHVybiBuZXcgdHlwZWRBcnJheS5jb25zdHJ1Y3RvcihidWZmZXIsIHR5cGVkQXJyYXkuYnl0ZU9mZnNldCwgdHlwZWRBcnJheS5sZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBhcmVzIHZhbHVlcyB0byBzb3J0IHRoZW0gaW4gYXNjZW5kaW5nIG9yZGVyLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGB2YWx1ZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcGFyZUFzY2VuZGluZyh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gb3RoZXIpIHtcbiAgICAgICAgdmFyIHZhbElzRGVmaW5lZCA9IHZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICB2YWxJc051bGwgPSB2YWx1ZSA9PT0gbnVsbCxcbiAgICAgICAgICAgIHZhbElzUmVmbGV4aXZlID0gdmFsdWUgPT09IHZhbHVlLFxuICAgICAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSk7XG5cbiAgICAgICAgdmFyIG90aElzRGVmaW5lZCA9IG90aGVyICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICBvdGhJc051bGwgPSBvdGhlciA9PT0gbnVsbCxcbiAgICAgICAgICAgIG90aElzUmVmbGV4aXZlID0gb3RoZXIgPT09IG90aGVyLFxuICAgICAgICAgICAgb3RoSXNTeW1ib2wgPSBpc1N5bWJvbChvdGhlcik7XG5cbiAgICAgICAgaWYgKCghb3RoSXNOdWxsICYmICFvdGhJc1N5bWJvbCAmJiAhdmFsSXNTeW1ib2wgJiYgdmFsdWUgPiBvdGhlcikgfHxcbiAgICAgICAgICAgICh2YWxJc1N5bWJvbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUgJiYgIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wpIHx8XG4gICAgICAgICAgICAodmFsSXNOdWxsICYmIG90aElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgICAgICghdmFsSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgIXZhbElzUmVmbGV4aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCghdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCAmJiAhb3RoSXNTeW1ib2wgJiYgdmFsdWUgPCBvdGhlcikgfHxcbiAgICAgICAgICAgIChvdGhJc1N5bWJvbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUgJiYgIXZhbElzTnVsbCAmJiAhdmFsSXNTeW1ib2wpIHx8XG4gICAgICAgICAgICAob3RoSXNOdWxsICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgICAgICghb3RoSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgIW90aElzUmVmbGV4aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGJ5IGBfLm9yZGVyQnlgIHRvIGNvbXBhcmUgbXVsdGlwbGUgcHJvcGVydGllcyBvZiBhIHZhbHVlIHRvIGFub3RoZXJcbiAgICAgKiBhbmQgc3RhYmxlIHNvcnQgdGhlbS5cbiAgICAgKlxuICAgICAqIElmIGBvcmRlcnNgIGlzIHVuc3BlY2lmaWVkLCBhbGwgdmFsdWVzIGFyZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLiBPdGhlcndpc2UsXG4gICAgICogc3BlY2lmeSBhbiBvcmRlciBvZiBcImRlc2NcIiBmb3IgZGVzY2VuZGluZyBvciBcImFzY1wiIGZvciBhc2NlbmRpbmcgc29ydCBvcmRlclxuICAgICAqIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbltdfHN0cmluZ1tdfSBvcmRlcnMgVGhlIG9yZGVyIHRvIHNvcnQgYnkgZm9yIGVhY2ggcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVNdWx0aXBsZShvYmplY3QsIG90aGVyLCBvcmRlcnMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIG9iakNyaXRlcmlhID0gb2JqZWN0LmNyaXRlcmlhLFxuICAgICAgICAgIG90aENyaXRlcmlhID0gb3RoZXIuY3JpdGVyaWEsXG4gICAgICAgICAgbGVuZ3RoID0gb2JqQ3JpdGVyaWEubGVuZ3RoLFxuICAgICAgICAgIG9yZGVyc0xlbmd0aCA9IG9yZGVycy5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjb21wYXJlQXNjZW5kaW5nKG9iakNyaXRlcmlhW2luZGV4XSwgb3RoQ3JpdGVyaWFbaW5kZXhdKTtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIGlmIChpbmRleCA+PSBvcmRlcnNMZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBvcmRlciA9IG9yZGVyc1tpbmRleF07XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdCAqIChvcmRlciA9PSAnZGVzYycgPyAtMSA6IDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBGaXhlcyBhbiBgQXJyYXkjc29ydGAgYnVnIGluIHRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgYXBwbGljYXRpb25zXG4gICAgICAvLyB0aGF0IGNhdXNlcyBpdCwgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCB0byBwcm92aWRlIHRoZSBzYW1lIHZhbHVlIGZvclxuICAgICAgLy8gYG9iamVjdGAgYW5kIGBvdGhlcmAuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvcHVsbC8xMjQ3XG4gICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgLy9cbiAgICAgIC8vIFRoaXMgYWxzbyBlbnN1cmVzIGEgc3RhYmxlIHNvcnQgaW4gVjggYW5kIG90aGVyIGVuZ2luZXMuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9OTAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIHJldHVybiBvYmplY3QuaW5kZXggLSBvdGhlci5pbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IHRoYXQgaXMgdGhlIGNvbXBvc2l0aW9uIG9mIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cyxcbiAgICAgKiBwbGFjZWhvbGRlcnMsIGFuZCBwcm92aWRlZCBhcmd1bWVudHMgaW50byBhIHNpbmdsZSBhcnJheSBvZiBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQuXG4gICAgICogQHBhcmFtIHtBcnJheX0gaG9sZGVycyBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbXMge2Jvb2xlYW59IFtpc0N1cnJpZWRdIFNwZWNpZnkgY29tcG9zaW5nIGZvciBhIGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tcG9zZWQgYXJndW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBvc2VBcmdzKGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpIHtcbiAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGgsXG4gICAgICAgICAgaG9sZGVyc0xlbmd0aCA9IGhvbGRlcnMubGVuZ3RoLFxuICAgICAgICAgIGxlZnRJbmRleCA9IC0xLFxuICAgICAgICAgIGxlZnRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgcmFuZ2VMZW5ndGggPSBuYXRpdmVNYXgoYXJnc0xlbmd0aCAtIGhvbGRlcnNMZW5ndGgsIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlZnRMZW5ndGggKyByYW5nZUxlbmd0aCksXG4gICAgICAgICAgaXNVbmN1cnJpZWQgPSAhaXNDdXJyaWVkO1xuXG4gICAgICB3aGlsZSAoKytsZWZ0SW5kZXggPCBsZWZ0TGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtsZWZ0SW5kZXhdID0gcGFydGlhbHNbbGVmdEluZGV4XTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2FyZ3NJbmRleCA8IGhvbGRlcnNMZW5ndGgpIHtcbiAgICAgICAgaWYgKGlzVW5jdXJyaWVkIHx8IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGgpIHtcbiAgICAgICAgICByZXN1bHRbaG9sZGVyc1thcmdzSW5kZXhdXSA9IGFyZ3NbYXJnc0luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgd2hpbGUgKHJhbmdlTGVuZ3RoLS0pIHtcbiAgICAgICAgcmVzdWx0W2xlZnRJbmRleCsrXSA9IGFyZ3NbYXJnc0luZGV4KytdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGNvbXBvc2VBcmdzYCBleGNlcHQgdGhhdCB0aGUgYXJndW1lbnRzIGNvbXBvc2l0aW9uXG4gICAgICogaXMgdGFpbG9yZWQgZm9yIGBfLnBhcnRpYWxSaWdodGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIGFwcGVuZCB0byB0aG9zZSBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBob2xkZXJzIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtcyB7Ym9vbGVhbn0gW2lzQ3VycmllZF0gU3BlY2lmeSBjb21wb3NpbmcgZm9yIGEgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21wb3NlZCBhcmd1bWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcG9zZUFyZ3NSaWdodChhcmdzLCBwYXJ0aWFscywgaG9sZGVycywgaXNDdXJyaWVkKSB7XG4gICAgICB2YXIgYXJnc0luZGV4ID0gLTEsXG4gICAgICAgICAgYXJnc0xlbmd0aCA9IGFyZ3MubGVuZ3RoLFxuICAgICAgICAgIGhvbGRlcnNJbmRleCA9IC0xLFxuICAgICAgICAgIGhvbGRlcnNMZW5ndGggPSBob2xkZXJzLmxlbmd0aCxcbiAgICAgICAgICByaWdodEluZGV4ID0gLTEsXG4gICAgICAgICAgcmlnaHRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgcmFuZ2VMZW5ndGggPSBuYXRpdmVNYXgoYXJnc0xlbmd0aCAtIGhvbGRlcnNMZW5ndGgsIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KHJhbmdlTGVuZ3RoICsgcmlnaHRMZW5ndGgpLFxuICAgICAgICAgIGlzVW5jdXJyaWVkID0gIWlzQ3VycmllZDtcblxuICAgICAgd2hpbGUgKCsrYXJnc0luZGV4IDwgcmFuZ2VMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W2FyZ3NJbmRleF0gPSBhcmdzW2FyZ3NJbmRleF07XG4gICAgICB9XG4gICAgICB2YXIgb2Zmc2V0ID0gYXJnc0luZGV4O1xuICAgICAgd2hpbGUgKCsrcmlnaHRJbmRleCA8IHJpZ2h0TGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtvZmZzZXQgKyByaWdodEluZGV4XSA9IHBhcnRpYWxzW3JpZ2h0SW5kZXhdO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraG9sZGVyc0luZGV4IDwgaG9sZGVyc0xlbmd0aCkge1xuICAgICAgICBpZiAoaXNVbmN1cnJpZWQgfHwgYXJnc0luZGV4IDwgYXJnc0xlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdFtvZmZzZXQgKyBob2xkZXJzW2hvbGRlcnNJbmRleF1dID0gYXJnc1thcmdzSW5kZXgrK107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIHRoZSB2YWx1ZXMgb2YgYHNvdXJjZWAgdG8gYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyBmcm9tLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheT1bXV0gVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIHRvLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlBcnJheShzb3VyY2UsIGFycmF5KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuXG4gICAgICBhcnJheSB8fCAoYXJyYXkgPSBBcnJheShsZW5ndGgpKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGFycmF5W2luZGV4XSA9IHNvdXJjZVtpbmRleF07XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG8uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gICAgICB2YXIgaXNOZXcgPSAhb2JqZWN0O1xuICAgICAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgICAgPyBjdXN0b21pemVyKG9iamVjdFtrZXldLCBzb3VyY2Vba2V5XSwga2V5LCBvYmplY3QsIHNvdXJjZSlcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG5ld1ZhbHVlID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTmV3KSB7XG4gICAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgb3duIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5U3ltYm9scyhzb3VyY2UsIG9iamVjdCkge1xuICAgICAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIG93biBhbmQgaW5oZXJpdGVkIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5U3ltYm9sc0luKHNvdXJjZSwgb2JqZWN0KSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHNJbihzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmdyb3VwQnlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBhY2N1bXVsYXRvciB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2luaXRpYWxpemVyXSBUaGUgYWNjdW11bGF0b3Igb2JqZWN0IGluaXRpYWxpemVyLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFnZ3JlZ2F0b3IgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQWdncmVnYXRvcihzZXR0ZXIsIGluaXRpYWxpemVyKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlBZ2dyZWdhdG9yIDogYmFzZUFnZ3JlZ2F0b3IsXG4gICAgICAgICAgICBhY2N1bXVsYXRvciA9IGluaXRpYWxpemVyID8gaW5pdGlhbGl6ZXIoKSA6IHt9O1xuXG4gICAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIHNldHRlciwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpLCBhY2N1bXVsYXRvcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFzc2lnbmVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgICAgICBjdXN0b21pemVyID0gbGVuZ3RoID4gMSA/IHNvdXJjZXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgID8gKGxlbmd0aC0tLCBjdXN0b21pemVyKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgICAgICBjdXN0b21pemVyID0gbGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IGN1c3RvbWl6ZXI7XG4gICAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgYmFzZUVhY2hgIG9yIGBiYXNlRWFjaFJpZ2h0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBhIGNvbGxlY3Rpb24uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVCYXNlRWFjaChlYWNoRnVuYywgZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICByZXR1cm4gZWFjaEZ1bmMoY29sbGVjdGlvbiwgaXRlcmF0ZWUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aCxcbiAgICAgICAgICAgIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTEsXG4gICAgICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcblxuICAgICAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgICAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtpbmRleF0sIGluZGV4LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSwga2V5c0Z1bmMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICAgICAgcHJvcHMgPSBrZXlzRnVuYyhvYmplY3QpLFxuICAgICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICAgIHZhciBrZXkgPSBwcm9wc1tmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XTtcbiAgICAgICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVba2V5XSwga2V5LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIHRoZSBvcHRpb25hbCBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIGB0aGlzQXJnYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVCaW5kKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcpIHtcbiAgICAgIHZhciBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgQ3RvciA9IGNyZWF0ZUN0b3IoZnVuYyk7XG5cbiAgICAgIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgICAgIHZhciBmbiA9ICh0aGlzICYmIHRoaXMgIT09IHJvb3QgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpID8gQ3RvciA6IGZ1bmM7XG4gICAgICAgIHJldHVybiBmbi5hcHBseShpc0JpbmQgPyB0aGlzQXJnIDogdGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmxvd2VyRmlyc3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZSBUaGUgbmFtZSBvZiB0aGUgYFN0cmluZ2AgY2FzZSBtZXRob2QgdG8gdXNlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhc2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ2FzZUZpcnN0KG1ldGhvZE5hbWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcblxuICAgICAgICB2YXIgc3RyU3ltYm9scyA9IGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgICAgICAgID8gc3RyaW5nVG9BcnJheShzdHJpbmcpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgdmFyIGNociA9IHN0clN5bWJvbHNcbiAgICAgICAgICA/IHN0clN5bWJvbHNbMF1cbiAgICAgICAgICA6IHN0cmluZy5jaGFyQXQoMCk7XG5cbiAgICAgICAgdmFyIHRyYWlsaW5nID0gc3RyU3ltYm9sc1xuICAgICAgICAgID8gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDEpLmpvaW4oJycpXG4gICAgICAgICAgOiBzdHJpbmcuc2xpY2UoMSk7XG5cbiAgICAgICAgcmV0dXJuIGNoclttZXRob2ROYW1lXSgpICsgdHJhaWxpbmc7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmNhbWVsQ2FzZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBjb21iaW5lIGVhY2ggd29yZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3VuZGVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvdW5kZXIoY2FsbGJhY2spIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGFycmF5UmVkdWNlKHdvcmRzKGRlYnVycihzdHJpbmcpLnJlcGxhY2UocmVBcG9zLCAnJykpLCBjYWxsYmFjaywgJycpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwcm9kdWNlcyBhbiBpbnN0YW5jZSBvZiBgQ3RvcmAgcmVnYXJkbGVzcyBvZlxuICAgICAqIHdoZXRoZXIgaXQgd2FzIGludm9rZWQgYXMgcGFydCBvZiBhIGBuZXdgIGV4cHJlc3Npb24gb3IgYnkgYGNhbGxgIG9yIGBhcHBseWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IEN0b3IgVGhlIGNvbnN0cnVjdG9yIHRvIHdyYXAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDdG9yKEN0b3IpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gVXNlIGEgYHN3aXRjaGAgc3RhdGVtZW50IHRvIHdvcmsgd2l0aCBjbGFzcyBjb25zdHJ1Y3RvcnMuIFNlZVxuICAgICAgICAvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWZ1bmN0aW9uLW9iamVjdHMtY2FsbC10aGlzYXJndW1lbnQtYXJndW1lbnRzbGlzdFxuICAgICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDdG9yO1xuICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0pO1xuICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgICAgICAgIGNhc2UgNDogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pO1xuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0pO1xuICAgICAgICAgIGNhc2UgNjogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0sIGFyZ3NbNV0pO1xuICAgICAgICAgIGNhc2UgNzogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0sIGFyZ3NbNV0sIGFyZ3NbNl0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0aGlzQmluZGluZyA9IGJhc2VDcmVhdGUoQ3Rvci5wcm90b3R5cGUpLFxuICAgICAgICAgICAgcmVzdWx0ID0gQ3Rvci5hcHBseSh0aGlzQmluZGluZywgYXJncyk7XG5cbiAgICAgICAgLy8gTWltaWMgdGhlIGNvbnN0cnVjdG9yJ3MgYHJldHVybmAgYmVoYXZpb3IuXG4gICAgICAgIC8vIFNlZSBodHRwczovL2VzNS5naXRodWIuaW8vI3gxMy4yLjIgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgcmV0dXJuIGlzT2JqZWN0KHJlc3VsdCkgPyByZXN1bHQgOiB0aGlzQmluZGluZztcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGVuYWJsZSBjdXJyeWluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhcml0eSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ3VycnkoZnVuYywgYml0bWFzaywgYXJpdHkpIHtcbiAgICAgIHZhciBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXIgPSBnZXRIb2xkZXIod3JhcHBlcik7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGhvbGRlcnMgPSAobGVuZ3RoIDwgMyAmJiBhcmdzWzBdICE9PSBwbGFjZWhvbGRlciAmJiBhcmdzW2xlbmd0aCAtIDFdICE9PSBwbGFjZWhvbGRlcilcbiAgICAgICAgICA/IFtdXG4gICAgICAgICAgOiByZXBsYWNlSG9sZGVycyhhcmdzLCBwbGFjZWhvbGRlcik7XG5cbiAgICAgICAgbGVuZ3RoIC09IGhvbGRlcnMubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoIDwgYXJpdHkpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlUmVjdXJyeShcbiAgICAgICAgICAgIGZ1bmMsIGJpdG1hc2ssIGNyZWF0ZUh5YnJpZCwgd3JhcHBlci5wbGFjZWhvbGRlciwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgYXJncywgaG9sZGVycywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGFyaXR5IC0gbGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZm4gPSAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSA/IEN0b3IgOiBmdW5jO1xuICAgICAgICByZXR1cm4gYXBwbHkoZm4sIHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLmZpbmRgIG9yIGBfLmZpbmRMYXN0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZmluZEluZGV4RnVuYyBUaGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29sbGVjdGlvbiBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmaW5kIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUZpbmQoZmluZEluZGV4RnVuYykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gICAgICAgIHZhciBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcbiAgICAgICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHZhciBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyk7XG4gICAgICAgICAgY29sbGVjdGlvbiA9IGtleXMoY29sbGVjdGlvbik7XG4gICAgICAgICAgcHJlZGljYXRlID0gZnVuY3Rpb24oa2V5KSB7IHJldHVybiBpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKTsgfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaW5kZXggPSBmaW5kSW5kZXhGdW5jKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KTtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gLTEgPyBpdGVyYWJsZVtpdGVyYXRlZSA/IGNvbGxlY3Rpb25baW5kZXhdIDogaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8uZmxvd2Agb3IgYF8uZmxvd1JpZ2h0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmxvdyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVGbG93KGZyb21SaWdodCkge1xuICAgICAgcmV0dXJuIGZsYXRSZXN0KGZ1bmN0aW9uKGZ1bmNzKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSBmdW5jcy5sZW5ndGgsXG4gICAgICAgICAgICBpbmRleCA9IGxlbmd0aCxcbiAgICAgICAgICAgIHByZXJlcSA9IExvZGFzaFdyYXBwZXIucHJvdG90eXBlLnRocnU7XG5cbiAgICAgICAgaWYgKGZyb21SaWdodCkge1xuICAgICAgICAgIGZ1bmNzLnJldmVyc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICAgIHZhciBmdW5jID0gZnVuY3NbaW5kZXhdO1xuICAgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwcmVyZXEgJiYgIXdyYXBwZXIgJiYgZ2V0RnVuY05hbWUoZnVuYykgPT0gJ3dyYXBwZXInKSB7XG4gICAgICAgICAgICB2YXIgd3JhcHBlciA9IG5ldyBMb2Rhc2hXcmFwcGVyKFtdLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSB3cmFwcGVyID8gaW5kZXggOiBsZW5ndGg7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgZnVuYyA9IGZ1bmNzW2luZGV4XTtcblxuICAgICAgICAgIHZhciBmdW5jTmFtZSA9IGdldEZ1bmNOYW1lKGZ1bmMpLFxuICAgICAgICAgICAgICBkYXRhID0gZnVuY05hbWUgPT0gJ3dyYXBwZXInID8gZ2V0RGF0YShmdW5jKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIGlmIChkYXRhICYmIGlzTGF6aWFibGUoZGF0YVswXSkgJiZcbiAgICAgICAgICAgICAgICBkYXRhWzFdID09IChXUkFQX0FSWV9GTEFHIHwgV1JBUF9DVVJSWV9GTEFHIHwgV1JBUF9QQVJUSUFMX0ZMQUcgfCBXUkFQX1JFQVJHX0ZMQUcpICYmXG4gICAgICAgICAgICAgICAgIWRhdGFbNF0ubGVuZ3RoICYmIGRhdGFbOV0gPT0gMVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgIHdyYXBwZXIgPSB3cmFwcGVyW2dldEZ1bmNOYW1lKGRhdGFbMF0pXS5hcHBseSh3cmFwcGVyLCBkYXRhWzNdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd3JhcHBlciA9IChmdW5jLmxlbmd0aCA9PSAxICYmIGlzTGF6aWFibGUoZnVuYykpXG4gICAgICAgICAgICAgID8gd3JhcHBlcltmdW5jTmFtZV0oKVxuICAgICAgICAgICAgICA6IHdyYXBwZXIudGhydShmdW5jKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgICAgICB2YWx1ZSA9IGFyZ3NbMF07XG5cbiAgICAgICAgICBpZiAod3JhcHBlciAmJiBhcmdzLmxlbmd0aCA9PSAxICYmIGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcHBlci5wbGFudCh2YWx1ZSkudmFsdWUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICAgICAgcmVzdWx0ID0gbGVuZ3RoID8gZnVuY3NbaW5kZXhdLmFwcGx5KHRoaXMsIGFyZ3MpIDogdmFsdWU7XG5cbiAgICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZnVuY3NbaW5kZXhdLmNhbGwodGhpcywgcmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBpbnZva2UgaXQgd2l0aCBvcHRpb25hbCBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIGB0aGlzQXJnYCwgcGFydGlhbCBhcHBsaWNhdGlvbiwgYW5kIGN1cnJ5aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gZnVuYyBUaGUgZnVuY3Rpb24gb3IgbWV0aG9kIG5hbWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNSaWdodF0gVGhlIGFyZ3VtZW50cyB0byBhcHBlbmQgdG8gdGhvc2UgcHJvdmlkZWRcbiAgICAgKiAgdG8gdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc1JpZ2h0XSBUaGUgYHBhcnRpYWxzUmlnaHRgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGhlIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJ5XSBUaGUgYXJpdHkgY2FwIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlSHlicmlkKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQXJ5ID0gYml0bWFzayAmIFdSQVBfQVJZX0ZMQUcsXG4gICAgICAgICAgaXNCaW5kID0gYml0bWFzayAmIFdSQVBfQklORF9GTEFHLFxuICAgICAgICAgIGlzQmluZEtleSA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfS0VZX0ZMQUcsXG4gICAgICAgICAgaXNDdXJyaWVkID0gYml0bWFzayAmIChXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpLFxuICAgICAgICAgIGlzRmxpcCA9IGJpdG1hc2sgJiBXUkFQX0ZMSVBfRkxBRyxcbiAgICAgICAgICBDdG9yID0gaXNCaW5kS2V5ID8gdW5kZWZpbmVkIDogY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgICAgYXJnc1tpbmRleF0gPSBhcmd1bWVudHNbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0N1cnJpZWQpIHtcbiAgICAgICAgICB2YXIgcGxhY2Vob2xkZXIgPSBnZXRIb2xkZXIod3JhcHBlciksXG4gICAgICAgICAgICAgIGhvbGRlcnNDb3VudCA9IGNvdW50SG9sZGVycyhhcmdzLCBwbGFjZWhvbGRlcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnRpYWxzKSB7XG4gICAgICAgICAgYXJncyA9IGNvbXBvc2VBcmdzKGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJ0aWFsc1JpZ2h0KSB7XG4gICAgICAgICAgYXJncyA9IGNvbXBvc2VBcmdzUmlnaHQoYXJncywgcGFydGlhbHNSaWdodCwgaG9sZGVyc1JpZ2h0LCBpc0N1cnJpZWQpO1xuICAgICAgICB9XG4gICAgICAgIGxlbmd0aCAtPSBob2xkZXJzQ291bnQ7XG4gICAgICAgIGlmIChpc0N1cnJpZWQgJiYgbGVuZ3RoIDwgYXJpdHkpIHtcbiAgICAgICAgICB2YXIgbmV3SG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlUmVjdXJyeShcbiAgICAgICAgICAgIGZ1bmMsIGJpdG1hc2ssIGNyZWF0ZUh5YnJpZCwgd3JhcHBlci5wbGFjZWhvbGRlciwgdGhpc0FyZyxcbiAgICAgICAgICAgIGFyZ3MsIG5ld0hvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSAtIGxlbmd0aFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRoaXNCaW5kaW5nID0gaXNCaW5kID8gdGhpc0FyZyA6IHRoaXMsXG4gICAgICAgICAgICBmbiA9IGlzQmluZEtleSA/IHRoaXNCaW5kaW5nW2Z1bmNdIDogZnVuYztcblxuICAgICAgICBsZW5ndGggPSBhcmdzLmxlbmd0aDtcbiAgICAgICAgaWYgKGFyZ1Bvcykge1xuICAgICAgICAgIGFyZ3MgPSByZW9yZGVyKGFyZ3MsIGFyZ1Bvcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNGbGlwICYmIGxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBhcmdzLnJldmVyc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNBcnkgJiYgYXJ5IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJncy5sZW5ndGggPSBhcnk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikge1xuICAgICAgICAgIGZuID0gQ3RvciB8fCBjcmVhdGVDdG9yKGZuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm4uYXBwbHkodGhpc0JpbmRpbmcsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uaW52ZXJ0QnlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBhY2N1bXVsYXRvciB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdG9JdGVyYXRlZSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSBpdGVyYXRlZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgaW52ZXJ0ZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlSW52ZXJ0ZXIoc2V0dGVyLCB0b0l0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgICByZXR1cm4gYmFzZUludmVydGVyKG9iamVjdCwgc2V0dGVyLCB0b0l0ZXJhdGVlKGl0ZXJhdGVlKSwge30pO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gb24gdHdvIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3BlcmF0b3IgVGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHVzZWQgZm9yIGB1bmRlZmluZWRgIGFyZ3VtZW50cy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtYXRoZW1hdGljYWwgb3BlcmF0aW9uIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZU1hdGhPcGVyYXRpb24ob3BlcmF0b3IsIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzdWx0O1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBvdGhlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdGhlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gb3RoZXI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIG90aGVyID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICBvdGhlciA9IGJhc2VUb1N0cmluZyhvdGhlcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZVRvTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICAgIG90aGVyID0gYmFzZVRvTnVtYmVyKG90aGVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gb3BlcmF0b3IodmFsdWUsIG90aGVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5vdmVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXJyYXlGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgaXRlcmF0ZWVzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG92ZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlT3ZlcihhcnJheUZ1bmMpIHtcbiAgICAgIHJldHVybiBmbGF0UmVzdChmdW5jdGlvbihpdGVyYXRlZXMpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuICAgICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICAgIHZhciB0aGlzQXJnID0gdGhpcztcbiAgICAgICAgICByZXR1cm4gYXJyYXlGdW5jKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHBseShpdGVyYXRlZSwgdGhpc0FyZywgYXJncyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyB0aGUgcGFkZGluZyBmb3IgYHN0cmluZ2AgYmFzZWQgb24gYGxlbmd0aGAuIFRoZSBgY2hhcnNgIHN0cmluZ1xuICAgICAqIGlzIHRydW5jYXRlZCBpZiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgZXhjZWVkcyBgbGVuZ3RoYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRpbmcgZm9yIGBzdHJpbmdgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhZGRpbmcobGVuZ3RoLCBjaGFycykge1xuICAgICAgY2hhcnMgPSBjaGFycyA9PT0gdW5kZWZpbmVkID8gJyAnIDogYmFzZVRvU3RyaW5nKGNoYXJzKTtcblxuICAgICAgdmFyIGNoYXJzTGVuZ3RoID0gY2hhcnMubGVuZ3RoO1xuICAgICAgaWYgKGNoYXJzTGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gY2hhcnNMZW5ndGggPyBiYXNlUmVwZWF0KGNoYXJzLCBsZW5ndGgpIDogY2hhcnM7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZVJlcGVhdChjaGFycywgbmF0aXZlQ2VpbChsZW5ndGggLyBzdHJpbmdTaXplKGNoYXJzKSkpO1xuICAgICAgcmV0dXJuIGhhc1VuaWNvZGUoY2hhcnMpXG4gICAgICAgID8gY2FzdFNsaWNlKHN0cmluZ1RvQXJyYXkocmVzdWx0KSwgMCwgbGVuZ3RoKS5qb2luKCcnKVxuICAgICAgICA6IHJlc3VsdC5zbGljZSgwLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBpbnZva2UgaXQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmdcbiAgICAgKiBvZiBgdGhpc0FyZ2AgYW5kIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhcnRpYWwoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgQ3RvciA9IGNyZWF0ZUN0b3IoZnVuYyk7XG5cbiAgICAgIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICAgIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLFxuICAgICAgICAgICAgbGVmdEluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZWZ0TGVuZ3RoID0gcGFydGlhbHMubGVuZ3RoLFxuICAgICAgICAgICAgYXJncyA9IEFycmF5KGxlZnRMZW5ndGggKyBhcmdzTGVuZ3RoKSxcbiAgICAgICAgICAgIGZuID0gKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYztcblxuICAgICAgICB3aGlsZSAoKytsZWZ0SW5kZXggPCBsZWZ0TGVuZ3RoKSB7XG4gICAgICAgICAgYXJnc1tsZWZ0SW5kZXhdID0gcGFydGlhbHNbbGVmdEluZGV4XTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoYXJnc0xlbmd0aC0tKSB7XG4gICAgICAgICAgYXJnc1tsZWZ0SW5kZXgrK10gPSBhcmd1bWVudHNbKythcmdzSW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmbiwgaXNCaW5kID8gdGhpc0FyZyA6IHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLnJhbmdlYCBvciBgXy5yYW5nZVJpZ2h0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmFuZ2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUmFuZ2UoZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oc3RhcnQsIGVuZCwgc3RlcCkge1xuICAgICAgICBpZiAoc3RlcCAmJiB0eXBlb2Ygc3RlcCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChzdGFydCwgZW5kLCBzdGVwKSkge1xuICAgICAgICAgIGVuZCA9IHN0ZXAgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRW5zdXJlIHRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICAgICAgICBzdGFydCA9IHRvRmluaXRlKHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZW5kID0gc3RhcnQ7XG4gICAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVuZCA9IHRvRmluaXRlKGVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RlcCA9IHN0ZXAgPT09IHVuZGVmaW5lZCA/IChzdGFydCA8IGVuZCA/IDEgOiAtMSkgOiB0b0Zpbml0ZShzdGVwKTtcbiAgICAgICAgcmV0dXJuIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHJlbGF0aW9uYWwgb3BlcmF0aW9uIG9uIHR3byB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wZXJhdG9yIFRoZSBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVsYXRpb25hbCBvcGVyYXRpb24gZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihvcGVyYXRvcikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgICBpZiAoISh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgJiYgdHlwZW9mIG90aGVyID09ICdzdHJpbmcnKSkge1xuICAgICAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgIG90aGVyID0gdG9OdW1iZXIob3RoZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcGVyYXRvcih2YWx1ZSwgb3RoZXIpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gY29udGludWUgY3VycnlpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB3cmFwRnVuYyBUaGUgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBgZnVuY2Agd3JhcHBlci5cbiAgICAgKiBAcGFyYW0geyp9IHBsYWNlaG9sZGVyIFRoZSBwbGFjZWhvbGRlciB2YWx1ZS5cbiAgICAgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBwcmVwZW5kIHRvIHRob3NlIHByb3ZpZGVkIHRvXG4gICAgICogIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2hvbGRlcnNdIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGhlIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJ5XSBUaGUgYXJpdHkgY2FwIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUmVjdXJyeShmdW5jLCBiaXRtYXNrLCB3cmFwRnVuYywgcGxhY2Vob2xkZXIsIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBhcmdQb3MsIGFyeSwgYXJpdHkpIHtcbiAgICAgIHZhciBpc0N1cnJ5ID0gYml0bWFzayAmIFdSQVBfQ1VSUllfRkxBRyxcbiAgICAgICAgICBuZXdIb2xkZXJzID0gaXNDdXJyeSA/IGhvbGRlcnMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgbmV3SG9sZGVyc1JpZ2h0ID0gaXNDdXJyeSA/IHVuZGVmaW5lZCA6IGhvbGRlcnMsXG4gICAgICAgICAgbmV3UGFydGlhbHMgPSBpc0N1cnJ5ID8gcGFydGlhbHMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgbmV3UGFydGlhbHNSaWdodCA9IGlzQ3VycnkgPyB1bmRlZmluZWQgOiBwYXJ0aWFscztcblxuICAgICAgYml0bWFzayB8PSAoaXNDdXJyeSA/IFdSQVBfUEFSVElBTF9GTEFHIDogV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcpO1xuICAgICAgYml0bWFzayAmPSB+KGlzQ3VycnkgPyBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyA6IFdSQVBfUEFSVElBTF9GTEFHKTtcblxuICAgICAgaWYgKCEoYml0bWFzayAmIFdSQVBfQ1VSUllfQk9VTkRfRkxBRykpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfQklORF9GTEFHIHwgV1JBUF9CSU5EX0tFWV9GTEFHKTtcbiAgICAgIH1cbiAgICAgIHZhciBuZXdEYXRhID0gW1xuICAgICAgICBmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBuZXdQYXJ0aWFscywgbmV3SG9sZGVycywgbmV3UGFydGlhbHNSaWdodCxcbiAgICAgICAgbmV3SG9sZGVyc1JpZ2h0LCBhcmdQb3MsIGFyeSwgYXJpdHlcbiAgICAgIF07XG5cbiAgICAgIHZhciByZXN1bHQgPSB3cmFwRnVuYy5hcHBseSh1bmRlZmluZWQsIG5ld0RhdGEpO1xuICAgICAgaWYgKGlzTGF6aWFibGUoZnVuYykpIHtcbiAgICAgICAgc2V0RGF0YShyZXN1bHQsIG5ld0RhdGEpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICByZXR1cm4gc2V0V3JhcFRvU3RyaW5nKHJlc3VsdCwgZnVuYywgYml0bWFzayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8ucm91bmRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZSBUaGUgbmFtZSBvZiB0aGUgYE1hdGhgIG1ldGhvZCB0byB1c2Ugd2hlbiByb3VuZGluZy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByb3VuZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSb3VuZChtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgZnVuYyA9IE1hdGhbbWV0aG9kTmFtZV07XG4gICAgICByZXR1cm4gZnVuY3Rpb24obnVtYmVyLCBwcmVjaXNpb24pIHtcbiAgICAgICAgbnVtYmVyID0gdG9OdW1iZXIobnVtYmVyKTtcbiAgICAgICAgcHJlY2lzaW9uID0gcHJlY2lzaW9uID09IG51bGwgPyAwIDogbmF0aXZlTWluKHRvSW50ZWdlcihwcmVjaXNpb24pLCAyOTIpO1xuICAgICAgICBpZiAocHJlY2lzaW9uICYmIG5hdGl2ZUlzRmluaXRlKG51bWJlcikpIHtcbiAgICAgICAgICAvLyBTaGlmdCB3aXRoIGV4cG9uZW50aWFsIG5vdGF0aW9uIHRvIGF2b2lkIGZsb2F0aW5nLXBvaW50IGlzc3Vlcy5cbiAgICAgICAgICAvLyBTZWUgW01ETl0oaHR0cHM6Ly9tZG4uaW8vcm91bmQjRXhhbXBsZXMpIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAgdmFyIHBhaXIgPSAodG9TdHJpbmcobnVtYmVyKSArICdlJykuc3BsaXQoJ2UnKSxcbiAgICAgICAgICAgICAgdmFsdWUgPSBmdW5jKHBhaXJbMF0gKyAnZScgKyAoK3BhaXJbMV0gKyBwcmVjaXNpb24pKTtcblxuICAgICAgICAgIHBhaXIgPSAodG9TdHJpbmcodmFsdWUpICsgJ2UnKS5zcGxpdCgnZScpO1xuICAgICAgICAgIHJldHVybiArKHBhaXJbMF0gKyAnZScgKyAoK3BhaXJbMV0gLSBwcmVjaXNpb24pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuYyhudW1iZXIpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2V0IG9iamVjdCBvZiBgdmFsdWVzYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYWRkIHRvIHRoZSBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHNldC5cbiAgICAgKi9cbiAgICB2YXIgY3JlYXRlU2V0ID0gIShTZXQgJiYgKDEgLyBzZXRUb0FycmF5KG5ldyBTZXQoWywtMF0pKVsxXSkgPT0gSU5GSU5JVFkpID8gbm9vcCA6IGZ1bmN0aW9uKHZhbHVlcykge1xuICAgICAgcmV0dXJuIG5ldyBTZXQodmFsdWVzKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLnRvUGFpcnNgIG9yIGBfLnRvUGFpcnNJbmAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYSBnaXZlbiBvYmplY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFpcnMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlVG9QYWlycyhrZXlzRnVuYykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICB2YXIgdGFnID0gZ2V0VGFnKG9iamVjdCk7XG4gICAgICAgIGlmICh0YWcgPT0gbWFwVGFnKSB7XG4gICAgICAgICAgcmV0dXJuIG1hcFRvQXJyYXkob2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFnID09IHNldFRhZykge1xuICAgICAgICAgIHJldHVybiBzZXRUb1BhaXJzKG9iamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJhc2VUb1BhaXJzKG9iamVjdCwga2V5c0Z1bmMob2JqZWN0KSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGVpdGhlciBjdXJyaWVzIG9yIGludm9rZXMgYGZ1bmNgIHdpdGggb3B0aW9uYWxcbiAgICAgKiBgdGhpc2AgYmluZGluZyBhbmQgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gZnVuYyBUaGUgZnVuY3Rpb24gb3IgbWV0aG9kIG5hbWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAgICAgKiAgICAxIC0gYF8uYmluZGBcbiAgICAgKiAgICAyIC0gYF8uYmluZEtleWBcbiAgICAgKiAgICA0IC0gYF8uY3VycnlgIG9yIGBfLmN1cnJ5UmlnaHRgIG9mIGEgYm91bmQgZnVuY3Rpb25cbiAgICAgKiAgICA4IC0gYF8uY3VycnlgXG4gICAgICogICAxNiAtIGBfLmN1cnJ5UmlnaHRgXG4gICAgICogICAzMiAtIGBfLnBhcnRpYWxgXG4gICAgICogICA2NCAtIGBfLnBhcnRpYWxSaWdodGBcbiAgICAgKiAgMTI4IC0gYF8ucmVhcmdgXG4gICAgICogIDI1NiAtIGBfLmFyeWBcbiAgICAgKiAgNTEyIC0gYF8uZmxpcGBcbiAgICAgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVXcmFwKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBhcmdQb3MsIGFyeSwgYXJpdHkpIHtcbiAgICAgIHZhciBpc0JpbmRLZXkgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0tFWV9GTEFHO1xuICAgICAgaWYgKCFpc0JpbmRLZXkgJiYgdHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gcGFydGlhbHMgPyBwYXJ0aWFscy5sZW5ndGggOiAwO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfUEFSVElBTF9GTEFHIHwgV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcpO1xuICAgICAgICBwYXJ0aWFscyA9IGhvbGRlcnMgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBhcnkgPSBhcnkgPT09IHVuZGVmaW5lZCA/IGFyeSA6IG5hdGl2ZU1heCh0b0ludGVnZXIoYXJ5KSwgMCk7XG4gICAgICBhcml0eSA9IGFyaXR5ID09PSB1bmRlZmluZWQgPyBhcml0eSA6IHRvSW50ZWdlcihhcml0eSk7XG4gICAgICBsZW5ndGggLT0gaG9sZGVycyA/IGhvbGRlcnMubGVuZ3RoIDogMDtcblxuICAgICAgaWYgKGJpdG1hc2sgJiBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRykge1xuICAgICAgICB2YXIgcGFydGlhbHNSaWdodCA9IHBhcnRpYWxzLFxuICAgICAgICAgICAgaG9sZGVyc1JpZ2h0ID0gaG9sZGVycztcblxuICAgICAgICBwYXJ0aWFscyA9IGhvbGRlcnMgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICB2YXIgZGF0YSA9IGlzQmluZEtleSA/IHVuZGVmaW5lZCA6IGdldERhdGEoZnVuYyk7XG5cbiAgICAgIHZhciBuZXdEYXRhID0gW1xuICAgICAgICBmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycywgcGFydGlhbHNSaWdodCwgaG9sZGVyc1JpZ2h0LFxuICAgICAgICBhcmdQb3MsIGFyeSwgYXJpdHlcbiAgICAgIF07XG5cbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIG1lcmdlRGF0YShuZXdEYXRhLCBkYXRhKTtcbiAgICAgIH1cbiAgICAgIGZ1bmMgPSBuZXdEYXRhWzBdO1xuICAgICAgYml0bWFzayA9IG5ld0RhdGFbMV07XG4gICAgICB0aGlzQXJnID0gbmV3RGF0YVsyXTtcbiAgICAgIHBhcnRpYWxzID0gbmV3RGF0YVszXTtcbiAgICAgIGhvbGRlcnMgPSBuZXdEYXRhWzRdO1xuICAgICAgYXJpdHkgPSBuZXdEYXRhWzldID0gbmV3RGF0YVs5XSA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gKGlzQmluZEtleSA/IDAgOiBmdW5jLmxlbmd0aClcbiAgICAgICAgOiBuYXRpdmVNYXgobmV3RGF0YVs5XSAtIGxlbmd0aCwgMCk7XG5cbiAgICAgIGlmICghYXJpdHkgJiYgYml0bWFzayAmIChXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpKSB7XG4gICAgICAgIGJpdG1hc2sgJj0gfihXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpO1xuICAgICAgfVxuICAgICAgaWYgKCFiaXRtYXNrIHx8IGJpdG1hc2sgPT0gV1JBUF9CSU5EX0ZMQUcpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZUJpbmQoZnVuYywgYml0bWFzaywgdGhpc0FyZyk7XG4gICAgICB9IGVsc2UgaWYgKGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9GTEFHIHx8IGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9SSUdIVF9GTEFHKSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZUN1cnJ5KGZ1bmMsIGJpdG1hc2ssIGFyaXR5KTtcbiAgICAgIH0gZWxzZSBpZiAoKGJpdG1hc2sgPT0gV1JBUF9QQVJUSUFMX0ZMQUcgfHwgYml0bWFzayA9PSAoV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX1BBUlRJQUxfRkxBRykpICYmICFob2xkZXJzLmxlbmd0aCkge1xuICAgICAgICByZXN1bHQgPSBjcmVhdGVQYXJ0aWFsKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZUh5YnJpZC5hcHBseSh1bmRlZmluZWQsIG5ld0RhdGEpO1xuICAgICAgfVxuICAgICAgdmFyIHNldHRlciA9IGRhdGEgPyBiYXNlU2V0RGF0YSA6IHNldERhdGE7XG4gICAgICByZXR1cm4gc2V0V3JhcFRvU3RyaW5nKHNldHRlcihyZXN1bHQsIG5ld0RhdGEpLCBmdW5jLCBiaXRtYXNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGJ5IGBfLmRlZmF1bHRzYCB0byBjdXN0b21pemUgaXRzIGBfLmFzc2lnbkluYCB1c2UgdG8gYXNzaWduIHByb3BlcnRpZXNcbiAgICAgKiBvZiBzb3VyY2Ugb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllc1xuICAgICAqIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBvYmpWYWx1ZSBUaGUgZGVzdGluYXRpb24gdmFsdWUuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHBhcmVudCBvYmplY3Qgb2YgYG9ialZhbHVlYC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1c3RvbURlZmF1bHRzQXNzaWduSW4ob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAoZXEob2JqVmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgcmV0dXJuIHNyY1ZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8uZGVmYXVsdHNEZWVwYCB0byBjdXN0b21pemUgaXRzIGBfLm1lcmdlYCB1c2UgdG8gbWVyZ2Ugc291cmNlXG4gICAgICogb2JqZWN0cyBpbnRvIGRlc3RpbmF0aW9uIG9iamVjdHMgdGhhdCBhcmUgcGFzc2VkIHRocnUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gb2JqVmFsdWUgVGhlIGRlc3RpbmF0aW9uIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHNvdXJjZSB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIG1lcmdlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHBhcmVudCBvYmplY3Qgb2YgYG9ialZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBzcmNWYWx1ZWAuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAgICAgKiAgY291bnRlcnBhcnRzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tRGVmYXVsdHNNZXJnZShvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKSB7XG4gICAgICBpZiAoaXNPYmplY3Qob2JqVmFsdWUpICYmIGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBvYmpWYWx1ZSk7XG4gICAgICAgIGJhc2VNZXJnZShvYmpWYWx1ZSwgc3JjVmFsdWUsIHVuZGVmaW5lZCwgY3VzdG9tRGVmYXVsdHNNZXJnZSwgc3RhY2spO1xuICAgICAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8ub21pdGAgdG8gY3VzdG9taXplIGl0cyBgXy5jbG9uZURlZXBgIHVzZSB0byBvbmx5IGNsb25lIHBsYWluXG4gICAgICogb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHVuY2xvbmVkIHZhbHVlIG9yIGB1bmRlZmluZWRgIHRvIGRlZmVyIGNsb25pbmcgdG8gYF8uY2xvbmVEZWVwYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXN0b21PbWl0Q2xvbmUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc1BsYWluT2JqZWN0KHZhbHVlKSA/IHVuZGVmaW5lZCA6IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgYXJyYXlzIHdpdGggc3VwcG9ydCBmb3JcbiAgICAgKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYGFycmF5YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxBcnJheXMoYXJyYXksIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgICAgIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBvdGhMZW5ndGggPSBvdGhlci5sZW5ndGg7XG5cbiAgICAgIGlmIChhcnJMZW5ndGggIT0gb3RoTGVuZ3RoICYmICEoaXNQYXJ0aWFsICYmIG90aExlbmd0aCA+IGFyckxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBhcnJTdGFja2VkID0gc3RhY2suZ2V0KGFycmF5KTtcbiAgICAgIHZhciBvdGhTdGFja2VkID0gc3RhY2suZ2V0KG90aGVyKTtcbiAgICAgIGlmIChhcnJTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIGFyclN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBhcnJheTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHJlc3VsdCA9IHRydWUsXG4gICAgICAgICAgc2VlbiA9IChiaXRtYXNrICYgQ09NUEFSRV9VTk9SREVSRURfRkxBRykgPyBuZXcgU2V0Q2FjaGUgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHN0YWNrLnNldChhcnJheSwgb3RoZXIpO1xuICAgICAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG5cbiAgICAgIC8vIElnbm9yZSBub24taW5kZXggcHJvcGVydGllcy5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIG90aFZhbHVlID0gb3RoZXJbaW5kZXhdO1xuXG4gICAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIGFyclZhbHVlLCBpbmRleCwgb3RoZXIsIGFycmF5LCBzdGFjaylcbiAgICAgICAgICAgIDogY3VzdG9taXplcihhcnJWYWx1ZSwgb3RoVmFsdWUsIGluZGV4LCBhcnJheSwgb3RoZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcGFyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGlmIChzZWVuKSB7XG4gICAgICAgICAgaWYgKCFhcnJheVNvbWUob3RoZXIsIGZ1bmN0aW9uKG90aFZhbHVlLCBvdGhJbmRleCkge1xuICAgICAgICAgICAgICAgIGlmICghY2FjaGVIYXMoc2Vlbiwgb3RoSW5kZXgpICYmXG4gICAgICAgICAgICAgICAgICAgIChhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlZW4ucHVzaChvdGhJbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIShcbiAgICAgICAgICAgICAgYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YWNrWydkZWxldGUnXShhcnJheSk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGNvbXBhcmluZyBvYmplY3RzIG9mXG4gICAgICogdGhlIHNhbWUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY29tcGFyaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAgICAgKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3RzIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgdGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAgICAgKG9iamVjdC5ieXRlT2Zmc2V0ICE9IG90aGVyLmJ5dGVPZmZzZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9iamVjdCA9IG9iamVjdC5idWZmZXI7XG4gICAgICAgICAgb3RoZXIgPSBvdGhlci5idWZmZXI7XG5cbiAgICAgICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgICAgICFlcXVhbEZ1bmMobmV3IFVpbnQ4QXJyYXkob2JqZWN0KSwgbmV3IFVpbnQ4QXJyYXkob3RoZXIpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBjYXNlIGJvb2xUYWc6XG4gICAgICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAgICAgLy8gQ29lcmNlIGJvb2xlYW5zIHRvIGAxYCBvciBgMGAgYW5kIGRhdGVzIHRvIG1pbGxpc2Vjb25kcy5cbiAgICAgICAgICAvLyBJbnZhbGlkIGRhdGVzIGFyZSBjb2VyY2VkIHRvIGBOYU5gLlxuICAgICAgICAgIHJldHVybiBlcSgrb2JqZWN0LCArb3RoZXIpO1xuXG4gICAgICAgIGNhc2UgZXJyb3JUYWc6XG4gICAgICAgICAgcmV0dXJuIG9iamVjdC5uYW1lID09IG90aGVyLm5hbWUgJiYgb2JqZWN0Lm1lc3NhZ2UgPT0gb3RoZXIubWVzc2FnZTtcblxuICAgICAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICAgICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAgICAgLy8gQ29lcmNlIHJlZ2V4ZXMgdG8gc3RyaW5ncyBhbmQgdHJlYXQgc3RyaW5ncywgcHJpbWl0aXZlcyBhbmQgb2JqZWN0cyxcbiAgICAgICAgICAvLyBhcyBlcXVhbC4gU2VlIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1yZWdleHAucHJvdG90eXBlLnRvc3RyaW5nXG4gICAgICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTtcblxuICAgICAgICBjYXNlIG1hcFRhZzpcbiAgICAgICAgICB2YXIgY29udmVydCA9IG1hcFRvQXJyYXk7XG5cbiAgICAgICAgY2FzZSBzZXRUYWc6XG4gICAgICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRztcbiAgICAgICAgICBjb252ZXJ0IHx8IChjb252ZXJ0ID0gc2V0VG9BcnJheSk7XG5cbiAgICAgICAgICBpZiAob2JqZWN0LnNpemUgIT0gb3RoZXIuc2l6ZSAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYml0bWFzayB8PSBDT01QQVJFX1VOT1JERVJFRF9GTEFHO1xuXG4gICAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBlcXVhbEFycmF5cyhjb252ZXJ0KG9iamVjdCksIGNvbnZlcnQob3RoZXIpLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgICAgICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgICAgIGlmIChzeW1ib2xWYWx1ZU9mKSB7XG4gICAgICAgICAgICByZXR1cm4gc3ltYm9sVmFsdWVPZi5jYWxsKG9iamVjdCkgPT0gc3ltYm9sVmFsdWVPZi5jYWxsKG90aGVyKTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAgICAgKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgICAgIG9ialByb3BzID0gZ2V0QWxsS2V5cyhvYmplY3QpLFxuICAgICAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgICAgICBvdGhQcm9wcyA9IGdldEFsbEtleXMob3RoZXIpLFxuICAgICAgICAgIG90aExlbmd0aCA9IG90aFByb3BzLmxlbmd0aDtcblxuICAgICAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICB2YXIga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgICAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBvYmpTdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gICAgICBpZiAob2JqU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgICAgIHJldHVybiBvYmpTdGFja2VkID09IG90aGVyICYmIG90aFN0YWNrZWQgPT0gb2JqZWN0O1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IHRydWU7XG4gICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICBzdGFjay5zZXQob3RoZXIsIG9iamVjdCk7XG5cbiAgICAgIHZhciBza2lwQ3RvciA9IGlzUGFydGlhbDtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgb2JqTGVuZ3RoKSB7XG4gICAgICAgIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICAgICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2tleV07XG5cbiAgICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgb2JqVmFsdWUsIGtleSwgb3RoZXIsIG9iamVjdCwgc3RhY2spXG4gICAgICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IChvYmpWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKG9ialZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKVxuICAgICAgICAgICAgICA6IGNvbXBhcmVkXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc2tpcEN0b3IgfHwgKHNraXBDdG9yID0ga2V5ID09ICdjb25zdHJ1Y3RvcicpO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICAgICAgdmFyIG9iakN0b3IgPSBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgICAgICBvdGhDdG9yID0gb3RoZXIuY29uc3RydWN0b3I7XG5cbiAgICAgICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgICAgIGlmIChvYmpDdG9yICE9IG90aEN0b3IgJiZcbiAgICAgICAgICAgICgnY29uc3RydWN0b3InIGluIG9iamVjdCAmJiAnY29uc3RydWN0b3InIGluIG90aGVyKSAmJlxuICAgICAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgICAgIHR5cGVvZiBvdGhDdG9yID09ICdmdW5jdGlvbicgJiYgb3RoQ3RvciBpbnN0YW5jZW9mIG90aEN0b3IpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggZmxhdHRlbnMgdGhlIHJlc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdFJlc3QoZnVuYykge1xuICAgICAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHVuZGVmaW5lZCwgZmxhdHRlbiksIGZ1bmMgKyAnJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3QpIHtcbiAgICAgIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXMsIGdldFN5bWJvbHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAgICAgKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRBbGxLZXlzSW4ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzSW4sIGdldFN5bWJvbHNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWV0YWRhdGEgZm9yIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgZ2V0RGF0YSA9ICFtZXRhTWFwID8gbm9vcCA6IGZ1bmN0aW9uKGZ1bmMpIHtcbiAgICAgIHJldHVybiBtZXRhTWFwLmdldChmdW5jKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmFtZSBvZiBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0RnVuY05hbWUoZnVuYykge1xuICAgICAgdmFyIHJlc3VsdCA9IChmdW5jLm5hbWUgKyAnJyksXG4gICAgICAgICAgYXJyYXkgPSByZWFsTmFtZXNbcmVzdWx0XSxcbiAgICAgICAgICBsZW5ndGggPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlYWxOYW1lcywgcmVzdWx0KSA/IGFycmF5Lmxlbmd0aCA6IDA7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgZGF0YSA9IGFycmF5W2xlbmd0aF0sXG4gICAgICAgICAgICBvdGhlckZ1bmMgPSBkYXRhLmZ1bmM7XG4gICAgICAgIGlmIChvdGhlckZ1bmMgPT0gbnVsbCB8fCBvdGhlckZ1bmMgPT0gZnVuYykge1xuICAgICAgICAgIHJldHVybiBkYXRhLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgYXJndW1lbnQgcGxhY2Vob2xkZXIgdmFsdWUgZm9yIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0SG9sZGVyKGZ1bmMpIHtcbiAgICAgIHZhciBvYmplY3QgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKGxvZGFzaCwgJ3BsYWNlaG9sZGVyJykgPyBsb2Rhc2ggOiBmdW5jO1xuICAgICAgcmV0dXJuIG9iamVjdC5wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhcHByb3ByaWF0ZSBcIml0ZXJhdGVlXCIgZnVuY3Rpb24uIElmIGBfLml0ZXJhdGVlYCBpcyBjdXN0b21pemVkLFxuICAgICAqIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgY3VzdG9tIG1ldGhvZCwgb3RoZXJ3aXNlIGl0IHJldHVybnMgYGJhc2VJdGVyYXRlZWAuXG4gICAgICogSWYgYXJndW1lbnRzIGFyZSBwcm92aWRlZCwgdGhlIGNob3NlbiBmdW5jdGlvbiBpcyBpbnZva2VkIHdpdGggdGhlbSBhbmRcbiAgICAgKiBpdHMgcmVzdWx0IGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IFt2YWx1ZV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIHRoZSBjcmVhdGVkIGl0ZXJhdGVlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY2hvc2VuIGZ1bmN0aW9uIG9yIGl0cyByZXN1bHQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0SXRlcmF0ZWUoKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbG9kYXNoLml0ZXJhdGVlIHx8IGl0ZXJhdGVlO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0ID09PSBpdGVyYXRlZSA/IGJhc2VJdGVyYXRlZSA6IHJlc3VsdDtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gcmVzdWx0KGFyZ3VtZW50c1swXSwgYXJndW1lbnRzWzFdKSA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIHJlZmVyZW5jZSBrZXkuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE1hcERhdGEobWFwLCBrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICAgICAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgICAgID8gZGF0YVt0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8gJ3N0cmluZycgOiAnaGFzaCddXG4gICAgICAgIDogZGF0YS5tYXA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3Mgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG1hdGNoIGRhdGEgb2YgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0TWF0Y2hEYXRhKG9iamVjdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IGtleXMob2JqZWN0KSxcbiAgICAgICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGtleSA9IHJlc3VsdFtsZW5ndGhdLFxuICAgICAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgICByZXN1bHRbbGVuZ3RoXSA9IFtrZXksIHZhbHVlLCBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBpZiBpdCdzIG5hdGl2ZSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGdldFZhbHVlKG9iamVjdCwga2V5KTtcbiAgICAgIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gICAgICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICAgICAgdGFnID0gdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXG4gICAgICB0cnkge1xuICAgICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgICAgIHZhciB1bm1hc2tlZCA9IHRydWU7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuXG4gICAgICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgICBpZiAodW5tYXNrZWQpIHtcbiAgICAgICAgaWYgKGlzT3duKSB7XG4gICAgICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAgICAgKi9cbiAgICB2YXIgZ2V0U3ltYm9scyA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgICByZXR1cm4gYXJyYXlGaWx0ZXIobmF0aXZlR2V0U3ltYm9scyhvYmplY3QpLCBmdW5jdGlvbihzeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwob2JqZWN0LCBzeW1ib2wpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAgICAgKi9cbiAgICB2YXIgZ2V0U3ltYm9sc0luID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIHdoaWxlIChvYmplY3QpIHtcbiAgICAgICAgYXJyYXlQdXNoKHJlc3VsdCwgZ2V0U3ltYm9scyhvYmplY3QpKTtcbiAgICAgICAgb2JqZWN0ID0gZ2V0UHJvdG90eXBlKG9iamVjdCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gICAgICovXG4gICAgdmFyIGdldFRhZyA9IGJhc2VHZXRUYWc7XG5cbiAgICAvLyBGYWxsYmFjayBmb3IgZGF0YSB2aWV3cywgbWFwcywgc2V0cywgYW5kIHdlYWsgbWFwcyBpbiBJRSAxMSBhbmQgcHJvbWlzZXMgaW4gTm9kZS5qcyA8IDYuXG4gICAgaWYgKChEYXRhVmlldyAmJiBnZXRUYWcobmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxKSkpICE9IGRhdGFWaWV3VGFnKSB8fFxuICAgICAgICAoTWFwICYmIGdldFRhZyhuZXcgTWFwKSAhPSBtYXBUYWcpIHx8XG4gICAgICAgIChQcm9taXNlICYmIGdldFRhZyhQcm9taXNlLnJlc29sdmUoKSkgIT0gcHJvbWlzZVRhZykgfHxcbiAgICAgICAgKFNldCAmJiBnZXRUYWcobmV3IFNldCkgIT0gc2V0VGFnKSB8fFxuICAgICAgICAoV2Vha01hcCAmJiBnZXRUYWcobmV3IFdlYWtNYXApICE9IHdlYWtNYXBUYWcpKSB7XG4gICAgICBnZXRUYWcgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gYmFzZUdldFRhZyh2YWx1ZSksXG4gICAgICAgICAgICBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY3RvclN0cmluZyA9IEN0b3IgPyB0b1NvdXJjZShDdG9yKSA6ICcnO1xuXG4gICAgICAgIGlmIChjdG9yU3RyaW5nKSB7XG4gICAgICAgICAgc3dpdGNoIChjdG9yU3RyaW5nKSB7XG4gICAgICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICAgICAgY2FzZSBtYXBDdG9yU3RyaW5nOiByZXR1cm4gbWFwVGFnO1xuICAgICAgICAgICAgY2FzZSBwcm9taXNlQ3RvclN0cmluZzogcmV0dXJuIHByb21pc2VUYWc7XG4gICAgICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgICAgICBjYXNlIHdlYWtNYXBDdG9yU3RyaW5nOiByZXR1cm4gd2Vha01hcFRhZztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmlldywgYXBwbHlpbmcgYW55IGB0cmFuc2Zvcm1zYCB0byB0aGUgYHN0YXJ0YCBhbmQgYGVuZGAgcG9zaXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSB2aWV3LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgdmlldy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB0cmFuc2Zvcm1zIFRoZSB0cmFuc2Zvcm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIHZpZXcuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgYHN0YXJ0YCBhbmQgYGVuZGBcbiAgICAgKiAgcG9zaXRpb25zIG9mIHRoZSB2aWV3LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldFZpZXcoc3RhcnQsIGVuZCwgdHJhbnNmb3Jtcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gdHJhbnNmb3Jtcy5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBkYXRhID0gdHJhbnNmb3Jtc1tpbmRleF0sXG4gICAgICAgICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gICAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnZHJvcCc6ICAgICAgc3RhcnQgKz0gc2l6ZTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZHJvcFJpZ2h0JzogZW5kIC09IHNpemU7IGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3Rha2UnOiAgICAgIGVuZCA9IG5hdGl2ZU1pbihlbmQsIHN0YXJ0ICsgc2l6ZSk7IGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3Rha2VSaWdodCc6IHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0LCBlbmQgLSBzaXplKTsgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7ICdzdGFydCc6IHN0YXJ0LCAnZW5kJzogZW5kIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXh0cmFjdHMgd3JhcHBlciBkZXRhaWxzIGZyb20gdGhlIGBzb3VyY2VgIGJvZHkgY29tbWVudC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZSBUaGUgc291cmNlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3cmFwcGVyIGRldGFpbHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0V3JhcERldGFpbHMoc291cmNlKSB7XG4gICAgICB2YXIgbWF0Y2ggPSBzb3VyY2UubWF0Y2gocmVXcmFwRGV0YWlscyk7XG4gICAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXS5zcGxpdChyZVNwbGl0RGV0YWlscykgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHBhdGhgIGV4aXN0cyBvbiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGhhc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrIHByb3BlcnRpZXMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgaGFzRnVuYykge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pO1xuICAgICAgICBpZiAoIShyZXN1bHQgPSBvYmplY3QgIT0gbnVsbCAmJiBoYXNGdW5jKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBvYmplY3Rba2V5XTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgfHwgKytpbmRleCAhPSBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGxlbmd0aCA9IG9iamVjdCA9PSBudWxsID8gMCA6IG9iamVjdC5sZW5ndGg7XG4gICAgICByZXR1cm4gISFsZW5ndGggJiYgaXNMZW5ndGgobGVuZ3RoKSAmJiBpc0luZGV4KGtleSwgbGVuZ3RoKSAmJlxuICAgICAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGFuIGFycmF5IGNsb25lLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0Q2xvbmVBcnJheShhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBuZXcgYXJyYXkuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAgICAgLy8gQWRkIHByb3BlcnRpZXMgYXNzaWduZWQgYnkgYFJlZ0V4cCNleGVjYC5cbiAgICAgIGlmIChsZW5ndGggJiYgdHlwZW9mIGFycmF5WzBdID09ICdzdHJpbmcnICYmIGhhc093blByb3BlcnR5LmNhbGwoYXJyYXksICdpbmRleCcpKSB7XG4gICAgICAgIHJlc3VsdC5pbmRleCA9IGFycmF5LmluZGV4O1xuICAgICAgICByZXN1bHQuaW5wdXQgPSBhcnJheS5pbnB1dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5pdENsb25lT2JqZWN0KG9iamVjdCkge1xuICAgICAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgICAgID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSlcbiAgICAgICAgOiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUgYmFzZWQgb24gaXRzIGB0b1N0cmluZ1RhZ2AuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNsb25pbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICAgICAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTWFwYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBgU2V0YCwgb3IgYFN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3QgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0Q2xvbmVCeVRhZyhvYmplY3QsIHRhZywgaXNEZWVwKSB7XG4gICAgICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXIob2JqZWN0KTtcblxuICAgICAgICBjYXNlIGJvb2xUYWc6XG4gICAgICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgICAgICByZXR1cm4gbmV3IEN0b3IoK29iamVjdCk7XG5cbiAgICAgICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVEYXRhVmlldyhvYmplY3QsIGlzRGVlcCk7XG5cbiAgICAgICAgY2FzZSBmbG9hdDMyVGFnOiBjYXNlIGZsb2F0NjRUYWc6XG4gICAgICAgIGNhc2UgaW50OFRhZzogY2FzZSBpbnQxNlRhZzogY2FzZSBpbnQzMlRhZzpcbiAgICAgICAgY2FzZSB1aW50OFRhZzogY2FzZSB1aW50OENsYW1wZWRUYWc6IGNhc2UgdWludDE2VGFnOiBjYXNlIHVpbnQzMlRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVUeXBlZEFycmF5KG9iamVjdCwgaXNEZWVwKTtcblxuICAgICAgICBjYXNlIG1hcFRhZzpcbiAgICAgICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICAgICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3RvcihvYmplY3QpO1xuXG4gICAgICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVJlZ0V4cChvYmplY3QpO1xuXG4gICAgICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgICAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVTeW1ib2wob2JqZWN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIHdyYXBwZXIgYGRldGFpbHNgIGluIGEgY29tbWVudCBhdCB0aGUgdG9wIG9mIHRoZSBgc291cmNlYCBib2R5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlIFRoZSBzb3VyY2UgdG8gbW9kaWZ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gZGV0YWlscyBUaGUgZGV0YWlscyB0byBpbnNlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgbW9kaWZpZWQgc291cmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluc2VydFdyYXBEZXRhaWxzKHNvdXJjZSwgZGV0YWlscykge1xuICAgICAgdmFyIGxlbmd0aCA9IGRldGFpbHMubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICAgIH1cbiAgICAgIHZhciBsYXN0SW5kZXggPSBsZW5ndGggLSAxO1xuICAgICAgZGV0YWlsc1tsYXN0SW5kZXhdID0gKGxlbmd0aCA+IDEgPyAnJiAnIDogJycpICsgZGV0YWlsc1tsYXN0SW5kZXhdO1xuICAgICAgZGV0YWlscyA9IGRldGFpbHMuam9pbihsZW5ndGggPiAyID8gJywgJyA6ICcgJyk7XG4gICAgICByZXR1cm4gc291cmNlLnJlcGxhY2UocmVXcmFwQ29tbWVudCwgJ3tcXG4vKiBbd3JhcHBlZCB3aXRoICcgKyBkZXRhaWxzICsgJ10gKi9cXG4nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGZsYXR0ZW5hYmxlIGBhcmd1bWVudHNgIG9iamVjdCBvciBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZmxhdHRlbmFibGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0ZsYXR0ZW5hYmxlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpIHx8XG4gICAgICAgICEhKHNwcmVhZGFibGVTeW1ib2wgJiYgdmFsdWUgJiYgdmFsdWVbc3ByZWFkYWJsZVN5bWJvbF0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gICAgICByZXR1cm4gISFsZW5ndGggJiZcbiAgICAgICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICAgICAodmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8IGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICAgICAqIEBwYXJhbSB7Kn0gaW5kZXggVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBpbmRleCBvciBrZXkgYXJndW1lbnQuXG4gICAgICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgaW5kZXg7XG4gICAgICBpZiAodHlwZSA9PSAnbnVtYmVyJ1xuICAgICAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgICAgIDogKHR5cGUgPT0gJ3N0cmluZycgJiYgaW5kZXggaW4gb2JqZWN0KVxuICAgICAgICAgICkge1xuICAgICAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSBhbmQgbm90IGEgcHJvcGVydHkgcGF0aC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0tleSh2YWx1ZSwgb2JqZWN0KSB7XG4gICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICBpZiAodHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgICAgdmFsdWUgPT0gbnVsbCB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKSB8fCAhcmVJc0RlZXBQcm9wLnRlc3QodmFsdWUpIHx8XG4gICAgICAgIChvYmplY3QgIT0gbnVsbCAmJiB2YWx1ZSBpbiBPYmplY3Qob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgcmV0dXJuICh0eXBlID09ICdzdHJpbmcnIHx8IHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJylcbiAgICAgICAgPyAodmFsdWUgIT09ICdfX3Byb3RvX18nKVxuICAgICAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgYSBsYXp5IGNvdW50ZXJwYXJ0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGhhcyBhIGxhenkgY291bnRlcnBhcnQsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0xhemlhYmxlKGZ1bmMpIHtcbiAgICAgIHZhciBmdW5jTmFtZSA9IGdldEZ1bmNOYW1lKGZ1bmMpLFxuICAgICAgICAgIG90aGVyID0gbG9kYXNoW2Z1bmNOYW1lXTtcblxuICAgICAgaWYgKHR5cGVvZiBvdGhlciAhPSAnZnVuY3Rpb24nIHx8ICEoZnVuY05hbWUgaW4gTGF6eVdyYXBwZXIucHJvdG90eXBlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoZnVuYyA9PT0gb3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICB2YXIgZGF0YSA9IGdldERhdGEob3RoZXIpO1xuICAgICAgcmV0dXJuICEhZGF0YSAmJiBmdW5jID09PSBkYXRhWzBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2tlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgICAgIHJldHVybiAhIW1hc2tTcmNLZXkgJiYgKG1hc2tTcmNLZXkgaW4gZnVuYyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBmdW5jYCBpcyBjYXBhYmxlIG9mIGJlaW5nIG1hc2tlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrYWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIHZhciBpc01hc2thYmxlID0gY29yZUpzRGF0YSA/IGlzRnVuY3Rpb24gOiBzdHViRmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gICAgICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gICAgICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlmIHN1aXRhYmxlIGZvciBzdHJpY3RcbiAgICAgKiAgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgJiYgIWlzT2JqZWN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYG1hdGNoZXNQcm9wZXJ0eWAgZm9yIHNvdXJjZSB2YWx1ZXMgc3VpdGFibGVcbiAgICAgKiBmb3Igc3RyaWN0IGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpLmUuIGA9PT1gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmplY3Rba2V5XSA9PT0gc3JjVmFsdWUgJiZcbiAgICAgICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tZW1vaXplYCB3aGljaCBjbGVhcnMgdGhlIG1lbW9pemVkIGZ1bmN0aW9uJ3NcbiAgICAgKiBjYWNoZSB3aGVuIGl0IGV4Y2VlZHMgYE1BWF9NRU1PSVpFX1NJWkVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVtb2l6ZUNhcHBlZChmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbWVtb2l6ZShmdW5jLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgaWYgKGNhY2hlLnNpemUgPT09IE1BWF9NRU1PSVpFX1NJWkUpIHtcbiAgICAgICAgICBjYWNoZS5jbGVhcigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgICB9KTtcblxuICAgICAgdmFyIGNhY2hlID0gcmVzdWx0LmNhY2hlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXJnZXMgdGhlIGZ1bmN0aW9uIG1ldGFkYXRhIG9mIGBzb3VyY2VgIGludG8gYGRhdGFgLlxuICAgICAqXG4gICAgICogTWVyZ2luZyBtZXRhZGF0YSByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygd3JhcHBlcnMgdXNlZCB0byBpbnZva2UgYSBmdW5jdGlvbi5cbiAgICAgKiBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgbWV0aG9kcyBsaWtlIGBfLmJpbmRgLCBgXy5jdXJyeWAsIGFuZCBgXy5wYXJ0aWFsYFxuICAgICAqIG1heSBiZSBhcHBsaWVkIHJlZ2FyZGxlc3Mgb2YgZXhlY3V0aW9uIG9yZGVyLiBNZXRob2RzIGxpa2UgYF8uYXJ5YCBhbmRcbiAgICAgKiBgXy5yZWFyZ2AgbW9kaWZ5IGZ1bmN0aW9uIGFyZ3VtZW50cywgbWFraW5nIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZVxuICAgICAqIGV4ZWN1dGVkIGltcG9ydGFudCwgcHJldmVudGluZyB0aGUgbWVyZ2luZyBvZiBtZXRhZGF0YS4gSG93ZXZlciwgd2UgbWFrZVxuICAgICAqIGFuIGV4Y2VwdGlvbiBmb3IgYSBzYWZlIGNvbWJpbmVkIGNhc2Ugd2hlcmUgY3VycmllZCBmdW5jdGlvbnMgaGF2ZSBgXy5hcnlgXG4gICAgICogYW5kIG9yIGBfLnJlYXJnYCBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBkYXRhIFRoZSBkZXN0aW5hdGlvbiBtZXRhZGF0YS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIHNvdXJjZSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGRhdGFgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lcmdlRGF0YShkYXRhLCBzb3VyY2UpIHtcbiAgICAgIHZhciBiaXRtYXNrID0gZGF0YVsxXSxcbiAgICAgICAgICBzcmNCaXRtYXNrID0gc291cmNlWzFdLFxuICAgICAgICAgIG5ld0JpdG1hc2sgPSBiaXRtYXNrIHwgc3JjQml0bWFzayxcbiAgICAgICAgICBpc0NvbW1vbiA9IG5ld0JpdG1hc2sgPCAoV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX0JJTkRfS0VZX0ZMQUcgfCBXUkFQX0FSWV9GTEFHKTtcblxuICAgICAgdmFyIGlzQ29tYm8gPVxuICAgICAgICAoKHNyY0JpdG1hc2sgPT0gV1JBUF9BUllfRkxBRykgJiYgKGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9GTEFHKSkgfHxcbiAgICAgICAgKChzcmNCaXRtYXNrID09IFdSQVBfQVJZX0ZMQUcpICYmIChiaXRtYXNrID09IFdSQVBfUkVBUkdfRkxBRykgJiYgKGRhdGFbN10ubGVuZ3RoIDw9IHNvdXJjZVs4XSkpIHx8XG4gICAgICAgICgoc3JjQml0bWFzayA9PSAoV1JBUF9BUllfRkxBRyB8IFdSQVBfUkVBUkdfRkxBRykpICYmIChzb3VyY2VbN10ubGVuZ3RoIDw9IHNvdXJjZVs4XSkgJiYgKGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9GTEFHKSk7XG5cbiAgICAgIC8vIEV4aXQgZWFybHkgaWYgbWV0YWRhdGEgY2FuJ3QgYmUgbWVyZ2VkLlxuICAgICAgaWYgKCEoaXNDb21tb24gfHwgaXNDb21ibykpIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGB0aGlzQXJnYCBpZiBhdmFpbGFibGUuXG4gICAgICBpZiAoc3JjQml0bWFzayAmIFdSQVBfQklORF9GTEFHKSB7XG4gICAgICAgIGRhdGFbMl0gPSBzb3VyY2VbMl07XG4gICAgICAgIC8vIFNldCB3aGVuIGN1cnJ5aW5nIGEgYm91bmQgZnVuY3Rpb24uXG4gICAgICAgIG5ld0JpdG1hc2sgfD0gYml0bWFzayAmIFdSQVBfQklORF9GTEFHID8gMCA6IFdSQVBfQ1VSUllfQk9VTkRfRkxBRztcbiAgICAgIH1cbiAgICAgIC8vIENvbXBvc2UgcGFydGlhbCBhcmd1bWVudHMuXG4gICAgICB2YXIgdmFsdWUgPSBzb3VyY2VbM107XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdmFyIHBhcnRpYWxzID0gZGF0YVszXTtcbiAgICAgICAgZGF0YVszXSA9IHBhcnRpYWxzID8gY29tcG9zZUFyZ3MocGFydGlhbHMsIHZhbHVlLCBzb3VyY2VbNF0pIDogdmFsdWU7XG4gICAgICAgIGRhdGFbNF0gPSBwYXJ0aWFscyA/IHJlcGxhY2VIb2xkZXJzKGRhdGFbM10sIFBMQUNFSE9MREVSKSA6IHNvdXJjZVs0XTtcbiAgICAgIH1cbiAgICAgIC8vIENvbXBvc2UgcGFydGlhbCByaWdodCBhcmd1bWVudHMuXG4gICAgICB2YWx1ZSA9IHNvdXJjZVs1XTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBwYXJ0aWFscyA9IGRhdGFbNV07XG4gICAgICAgIGRhdGFbNV0gPSBwYXJ0aWFscyA/IGNvbXBvc2VBcmdzUmlnaHQocGFydGlhbHMsIHZhbHVlLCBzb3VyY2VbNl0pIDogdmFsdWU7XG4gICAgICAgIGRhdGFbNl0gPSBwYXJ0aWFscyA/IHJlcGxhY2VIb2xkZXJzKGRhdGFbNV0sIFBMQUNFSE9MREVSKSA6IHNvdXJjZVs2XTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGFyZ1Bvc2AgaWYgYXZhaWxhYmxlLlxuICAgICAgdmFsdWUgPSBzb3VyY2VbN107XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgZGF0YVs3XSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgYXJ5YCBpZiBpdCdzIHNtYWxsZXIuXG4gICAgICBpZiAoc3JjQml0bWFzayAmIFdSQVBfQVJZX0ZMQUcpIHtcbiAgICAgICAgZGF0YVs4XSA9IGRhdGFbOF0gPT0gbnVsbCA/IHNvdXJjZVs4XSA6IG5hdGl2ZU1pbihkYXRhWzhdLCBzb3VyY2VbOF0pO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgYXJpdHlgIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuXG4gICAgICBpZiAoZGF0YVs5XSA9PSBudWxsKSB7XG4gICAgICAgIGRhdGFbOV0gPSBzb3VyY2VbOV07XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBmdW5jYCBhbmQgbWVyZ2UgYml0bWFza3MuXG4gICAgICBkYXRhWzBdID0gc291cmNlWzBdO1xuICAgICAgZGF0YVsxXSA9IG5ld0JpdG1hc2s7XG5cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZVxuICAgICAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAgICAgKiBleGNlcHQgdGhhdCBpdCBpbmNsdWRlcyBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBuYXRpdmVLZXlzSW4ob2JqZWN0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gICAgICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggdHJhbnNmb3JtcyB0aGUgcmVzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvdmVyUmVzdChmdW5jLCBzdGFydCwgdHJhbnNmb3JtKSB7XG4gICAgICBzdGFydCA9IG5hdGl2ZU1heChzdGFydCA9PT0gdW5kZWZpbmVkID8gKGZ1bmMubGVuZ3RoIC0gMSkgOiBzdGFydCwgMCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgICAgIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgICAgICBvdGhlckFyZ3NbaW5kZXhdID0gYXJnc1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgb3RoZXJBcmdzW3N0YXJ0XSA9IHRyYW5zZm9ybShhcnJheSk7XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwYXJlbnQgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGF0aCBUaGUgcGF0aCB0byBnZXQgdGhlIHBhcmVudCB2YWx1ZSBvZi5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcGFyZW50IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhcmVudChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBwYXRoLmxlbmd0aCA8IDIgPyBvYmplY3QgOiBiYXNlR2V0KG9iamVjdCwgYmFzZVNsaWNlKHBhdGgsIDAsIC0xKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVvcmRlciBgYXJyYXlgIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGluZGV4ZXMgd2hlcmUgdGhlIGVsZW1lbnQgYXRcbiAgICAgKiB0aGUgZmlyc3QgaW5kZXggaXMgYXNzaWduZWQgYXMgdGhlIGZpcnN0IGVsZW1lbnQsIHRoZSBlbGVtZW50IGF0XG4gICAgICogdGhlIHNlY29uZCBpbmRleCBpcyBhc3NpZ25lZCBhcyB0aGUgc2Vjb25kIGVsZW1lbnQsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHJlb3JkZXIuXG4gICAgICogQHBhcmFtIHtBcnJheX0gaW5kZXhlcyBUaGUgYXJyYW5nZWQgYXJyYXkgaW5kZXhlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZW9yZGVyKGFycmF5LCBpbmRleGVzKSB7XG4gICAgICB2YXIgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1pbihpbmRleGVzLmxlbmd0aCwgYXJyTGVuZ3RoKSxcbiAgICAgICAgICBvbGRBcnJheSA9IGNvcHlBcnJheShhcnJheSk7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgaW5kZXggPSBpbmRleGVzW2xlbmd0aF07XG4gICAgICAgIGFycmF5W2xlbmd0aF0gPSBpc0luZGV4KGluZGV4LCBhcnJMZW5ndGgpID8gb2xkQXJyYXlbaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgLCB1bmxlc3MgYGtleWAgaXMgXCJfX3Byb3RvX19cIiBvciBcImNvbnN0cnVjdG9yXCIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2FmZUdldChvYmplY3QsIGtleSkge1xuICAgICAgaWYgKGtleSA9PT0gJ2NvbnN0cnVjdG9yJyAmJiB0eXBlb2Ygb2JqZWN0W2tleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoa2V5ID09ICdfX3Byb3RvX18nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgbWV0YWRhdGEgZm9yIGBmdW5jYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiB0aGlzIGZ1bmN0aW9uIGJlY29tZXMgaG90LCBpLmUuIGlzIGludm9rZWQgYSBsb3QgaW4gYSBzaG9ydFxuICAgICAqIHBlcmlvZCBvZiB0aW1lLCBpdCB3aWxsIHRyaXAgaXRzIGJyZWFrZXIgYW5kIHRyYW5zaXRpb24gdG8gYW4gaWRlbnRpdHlcbiAgICAgKiBmdW5jdGlvbiB0byBhdm9pZCBnYXJiYWdlIGNvbGxlY3Rpb24gcGF1c2VzIGluIFY4LiBTZWVcbiAgICAgKiBbVjggaXNzdWUgMjA3MF0oaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjA3MClcbiAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NvY2lhdGUgbWV0YWRhdGEgd2l0aC5cbiAgICAgKiBAcGFyYW0geyp9IGRhdGEgVGhlIG1ldGFkYXRhLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIHNldERhdGEgPSBzaG9ydE91dChiYXNlU2V0RGF0YSk7XG5cbiAgICAvKipcbiAgICAgKiBBIHNpbXBsZSB3cmFwcGVyIGFyb3VuZCB0aGUgZ2xvYmFsIFtgc2V0VGltZW91dGBdKGh0dHBzOi8vbWRuLmlvL3NldFRpbWVvdXQpLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ8T2JqZWN0fSBSZXR1cm5zIHRoZSB0aW1lciBpZCBvciB0aW1lb3V0IG9iamVjdC5cbiAgICAgKi9cbiAgICB2YXIgc2V0VGltZW91dCA9IGN0eFNldFRpbWVvdXQgfHwgZnVuY3Rpb24oZnVuYywgd2FpdCkge1xuICAgICAgcmV0dXJuIHJvb3Quc2V0VGltZW91dChmdW5jLCB3YWl0KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYGZ1bmNgIHRvIHJldHVybiBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgc2V0VG9TdHJpbmcgPSBzaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYHdyYXBwZXJgIHRvIG1pbWljIHRoZSBzb3VyY2Ugb2YgYHJlZmVyZW5jZWBcbiAgICAgKiB3aXRoIHdyYXBwZXIgZGV0YWlscyBpbiBhIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiB0aGUgc291cmNlIGJvZHkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHdyYXBwZXIgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWZlcmVuY2UgVGhlIHJlZmVyZW5jZSBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgd3JhcHBlcmAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0V3JhcFRvU3RyaW5nKHdyYXBwZXIsIHJlZmVyZW5jZSwgYml0bWFzaykge1xuICAgICAgdmFyIHNvdXJjZSA9IChyZWZlcmVuY2UgKyAnJyk7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcod3JhcHBlciwgaW5zZXJ0V3JhcERldGFpbHMoc291cmNlLCB1cGRhdGVXcmFwRGV0YWlscyhnZXRXcmFwRGV0YWlscyhzb3VyY2UpLCBiaXRtYXNrKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0J2xsIHNob3J0IG91dCBhbmQgaW52b2tlIGBpZGVudGl0eWAgaW5zdGVhZFxuICAgICAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICAgICAqIG1pbGxpc2Vjb25kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc2hvcnRhYmxlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNob3J0T3V0KGZ1bmMpIHtcbiAgICAgIHZhciBjb3VudCA9IDAsXG4gICAgICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHN0YW1wID0gbmF0aXZlTm93KCksXG4gICAgICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICAgICAgaWYgKHJlbWFpbmluZyA+IDApIHtcbiAgICAgICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHNbMF07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvdW50ID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zaHVmZmxlYCB3aGljaCBtdXRhdGVzIGFuZCBzZXRzIHRoZSBzaXplIG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzaHVmZmxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc2l6ZT1hcnJheS5sZW5ndGhdIFRoZSBzaXplIG9mIGBhcnJheWAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2h1ZmZsZVNlbGYoYXJyYXksIHNpemUpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxO1xuXG4gICAgICBzaXplID0gc2l6ZSA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogc2l6ZTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgc2l6ZSkge1xuICAgICAgICB2YXIgcmFuZCA9IGJhc2VSYW5kb20oaW5kZXgsIGxhc3RJbmRleCksXG4gICAgICAgICAgICB2YWx1ZSA9IGFycmF5W3JhbmRdO1xuXG4gICAgICAgIGFycmF5W3JhbmRdID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGFycmF5Lmxlbmd0aCA9IHNpemU7XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICovXG4gICAgdmFyIHN0cmluZ1RvUGF0aCA9IG1lbW9pemVDYXBwZWQoZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBpZiAoc3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IDQ2IC8qIC4gKi8pIHtcbiAgICAgICAgcmVzdWx0LnB1c2goJycpO1xuICAgICAgfVxuICAgICAgc3RyaW5nLnJlcGxhY2UocmVQcm9wTmFtZSwgZnVuY3Rpb24obWF0Y2gsIG51bWJlciwgcXVvdGUsIHN1YlN0cmluZykge1xuICAgICAgICByZXN1bHQucHVzaChxdW90ZSA/IHN1YlN0cmluZy5yZXBsYWNlKHJlRXNjYXBlQ2hhciwgJyQxJykgOiAobnVtYmVyIHx8IG1hdGNoKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge3N0cmluZ3xzeW1ib2x9IFJldHVybnMgdGhlIGtleS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgICAgIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgICAgIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZnVuY1RvU3RyaW5nLmNhbGwoZnVuYyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIChmdW5jICsgJycpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgfVxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgd3JhcHBlciBgZGV0YWlsc2AgYmFzZWQgb24gYGJpdG1hc2tgIGZsYWdzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IGRldGFpbHMgVGhlIGRldGFpbHMgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBkZXRhaWxzYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGVXcmFwRGV0YWlscyhkZXRhaWxzLCBiaXRtYXNrKSB7XG4gICAgICBhcnJheUVhY2god3JhcEZsYWdzLCBmdW5jdGlvbihwYWlyKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9ICdfLicgKyBwYWlyWzBdO1xuICAgICAgICBpZiAoKGJpdG1hc2sgJiBwYWlyWzFdKSAmJiAhYXJyYXlJbmNsdWRlcyhkZXRhaWxzLCB2YWx1ZSkpIHtcbiAgICAgICAgICBkZXRhaWxzLnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBkZXRhaWxzLnNvcnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHdyYXBwZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gd3JhcHBlciBUaGUgd3JhcHBlciB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgd3JhcHBlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ2xvbmUod3JhcHBlcikge1xuICAgICAgaWYgKHdyYXBwZXIgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICByZXR1cm4gd3JhcHBlci5jbG9uZSgpO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMb2Rhc2hXcmFwcGVyKHdyYXBwZXIuX193cmFwcGVkX18sIHdyYXBwZXIuX19jaGFpbl9fKTtcbiAgICAgIHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh3cmFwcGVyLl9fYWN0aW9uc19fKTtcbiAgICAgIHJlc3VsdC5fX2luZGV4X18gID0gd3JhcHBlci5fX2luZGV4X187XG4gICAgICByZXN1bHQuX192YWx1ZXNfXyA9IHdyYXBwZXIuX192YWx1ZXNfXztcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cyBzcGxpdCBpbnRvIGdyb3VwcyB0aGUgbGVuZ3RoIG9mIGBzaXplYC5cbiAgICAgKiBJZiBgYXJyYXlgIGNhbid0IGJlIHNwbGl0IGV2ZW5seSwgdGhlIGZpbmFsIGNodW5rIHdpbGwgYmUgdGhlIHJlbWFpbmluZ1xuICAgICAqIGVsZW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHByb2Nlc3MuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzaXplPTFdIFRoZSBsZW5ndGggb2YgZWFjaCBjaHVua1xuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY2h1bmtzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNodW5rKFsnYScsICdiJywgJ2MnLCAnZCddLCAyKTtcbiAgICAgKiAvLyA9PiBbWydhJywgJ2InXSwgWydjJywgJ2QnXV1cbiAgICAgKlxuICAgICAqIF8uY2h1bmsoWydhJywgJ2InLCAnYycsICdkJ10sIDMpO1xuICAgICAqIC8vID0+IFtbJ2EnLCAnYicsICdjJ10sIFsnZCddXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNodW5rKGFycmF5LCBzaXplLCBndWFyZCkge1xuICAgICAgaWYgKChndWFyZCA/IGlzSXRlcmF0ZWVDYWxsKGFycmF5LCBzaXplLCBndWFyZCkgOiBzaXplID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHNpemUgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2l6ZSA9IG5hdGl2ZU1heCh0b0ludGVnZXIoc2l6ZSksIDApO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGggfHwgc2l6ZSA8IDEpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobmF0aXZlQ2VpbChsZW5ndGggLyBzaXplKSk7XG5cbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSBiYXNlU2xpY2UoYXJyYXksIGluZGV4LCAoaW5kZXggKz0gc2l6ZSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IHdpdGggYWxsIGZhbHNleSB2YWx1ZXMgcmVtb3ZlZC4gVGhlIHZhbHVlcyBgZmFsc2VgLCBgbnVsbGAsXG4gICAgICogYDBgLCBgXCJcImAsIGB1bmRlZmluZWRgLCBhbmQgYE5hTmAgYXJlIGZhbHNleS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jb21wYWN0KFswLCAxLCBmYWxzZSwgMiwgJycsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wYWN0KGFycmF5KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBhcnJheSBjb25jYXRlbmF0aW5nIGBhcnJheWAgd2l0aCBhbnkgYWRkaXRpb25hbCBhcnJheXNcbiAgICAgKiBhbmQvb3IgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbmNhdGVuYXRlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBjb25jYXRlbmF0ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBjb25jYXRlbmF0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxXTtcbiAgICAgKiB2YXIgb3RoZXIgPSBfLmNvbmNhdChhcnJheSwgMiwgWzNdLCBbWzRdXSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvdGhlcik7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIFs0XV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25jYXQoKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBhcmdzID0gQXJyYXkobGVuZ3RoIC0gMSksXG4gICAgICAgICAgYXJyYXkgPSBhcmd1bWVudHNbMF0sXG4gICAgICAgICAgaW5kZXggPSBsZW5ndGg7XG5cbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIGFyZ3NbaW5kZXggLSAxXSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXlQdXNoKGlzQXJyYXkoYXJyYXkpID8gY29weUFycmF5KGFycmF5KSA6IFthcnJheV0sIGJhc2VGbGF0dGVuKGFyZ3MsIDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGBhcnJheWAgdmFsdWVzIG5vdCBpbmNsdWRlZCBpbiB0aGUgb3RoZXIgZ2l2ZW4gYXJyYXlzXG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsQWxsYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLndpdGhvdXQsIF8ueG9yXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGlmZmVyZW5jZShbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICovXG4gICAgdmFyIGRpZmZlcmVuY2UgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIGJhc2VGbGF0dGVuKHZhbHVlcywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kaWZmZXJlbmNlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCBhbmQgYHZhbHVlc2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsQWxsQnlgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGlmZmVyZW5jZUJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsxLjJdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRpZmZlcmVuY2VCeShbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sIFt7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZUJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdCh2YWx1ZXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGl0ZXJhdGVlKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgYmFzZUZsYXR0ZW4odmFsdWVzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZGlmZmVyZW5jZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YCB0byBgdmFsdWVzYC4gVGhlIG9yZGVyIGFuZFxuICAgICAqIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBjb21wYXJhdG9yXG4gICAgICogaXMgaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxXaXRoYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgKlxuICAgICAqIF8uZGlmZmVyZW5jZVdpdGgob2JqZWN0cywgW3sgJ3gnOiAxLCAneSc6IDIgfV0sIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZVdpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICB2YXIgY29tcGFyYXRvciA9IGxhc3QodmFsdWVzKTtcbiAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChjb21wYXJhdG9yKSkge1xuICAgICAgICBjb21wYXJhdG9yID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCBiYXNlRmxhdHRlbih2YWx1ZXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC41LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gZHJvcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kcm9wKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzIsIDNdXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbM11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdLCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkcm9wKGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIG4gPCAwID8gMCA6IG4sIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBlbmQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gZHJvcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BSaWdodChhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIG4gPSAoZ3VhcmQgfHwgbiA9PT0gdW5kZWZpbmVkKSA/IDEgOiB0b0ludGVnZXIobik7XG4gICAgICBuID0gbGVuZ3RoIC0gbjtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIDAsIG4gPCAwID8gMCA6IG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIGV4Y2x1ZGluZyBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGVuZC5cbiAgICAgKiBFbGVtZW50cyBhcmUgZHJvcHBlZCB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkcm9wUmlnaHRXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIHRydWUsIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgZXhjbHVkaW5nIGVsZW1lbnRzIGRyb3BwZWQgZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgICAqIEVsZW1lbnRzIGFyZSBkcm9wcGVkIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZHJvcFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsbHMgZWxlbWVudHMgb2YgYGFycmF5YCB3aXRoIGB2YWx1ZWAgZnJvbSBgc3RhcnRgIHVwIHRvLCBidXQgbm90XG4gICAgICogaW5jbHVkaW5nLCBgZW5kYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmlsbC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBmaWxsIGBhcnJheWAgd2l0aC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgKlxuICAgICAqIF8uZmlsbChhcnJheSwgJ2EnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydhJywgJ2EnLCAnYSddXG4gICAgICpcbiAgICAgKiBfLmZpbGwoQXJyYXkoMyksIDIpO1xuICAgICAqIC8vID0+IFsyLCAyLCAyXVxuICAgICAqXG4gICAgICogXy5maWxsKFs0LCA2LCA4LCAxMF0sICcqJywgMSwgMyk7XG4gICAgICogLy8gPT4gWzQsICcqJywgJyonLCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXJ0ICYmIHR5cGVvZiBzdGFydCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChhcnJheSwgdmFsdWUsIHN0YXJ0KSkge1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIGVuZCA9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlRmlsbChhcnJheSwgdmFsdWUsIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0XG4gICAgICogZWxlbWVudCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmb3VuZCBlbGVtZW50LCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXIgPT0gJ2Jhcm5leSc7IH0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnZnJlZCcsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IDJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRJbmRleGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50c1xuICAgICAqIG9mIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9YXJyYXkubGVuZ3RoLTFdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZm91bmQgZWxlbWVudCwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAncGViYmxlcyc7IH0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kTGFzdEluZGV4KHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmluZExhc3RJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IGxlbmd0aCAtIDE7XG4gICAgICBpZiAoZnJvbUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaW5kZXggPSB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgICAgaW5kZXggPSBmcm9tSW5kZXggPCAwXG4gICAgICAgICAgPyBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApXG4gICAgICAgICAgOiBuYXRpdmVNaW4oaW5kZXgsIGxlbmd0aCAtIDEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGluZGV4LCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGbGF0dGVucyBgYXJyYXlgIGEgc2luZ2xlIGxldmVsIGRlZXAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmxhdHRlbihbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICAgICAqIC8vID0+IFsxLCAyLCBbMywgWzRdXSwgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0dGVuKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIDEpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjdXJzaXZlbHkgZmxhdHRlbnMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuRGVlcChbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCA0LCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW5EZWVwKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIElORklOSVRZKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYGFycmF5YCB1cCB0byBgZGVwdGhgIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtkZXB0aD0xXSBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgWzIsIFszLCBbNF1dLCA1XV07XG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZXB0aChhcnJheSwgMSk7XG4gICAgICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuRGVwdGgoYXJyYXksIDIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCBbNF0sIDVdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdHRlbkRlcHRoKGFycmF5LCBkZXB0aCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgZGVwdGggPSBkZXB0aCA9PT0gdW5kZWZpbmVkID8gMSA6IHRvSW50ZWdlcihkZXB0aCk7XG4gICAgICByZXR1cm4gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW52ZXJzZSBvZiBgXy50b1BhaXJzYDsgdGhpcyBtZXRob2QgcmV0dXJucyBhbiBvYmplY3QgY29tcG9zZWRcbiAgICAgKiBmcm9tIGtleS12YWx1ZSBgcGFpcnNgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFpcnMgVGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZyb21QYWlycyhbWydhJywgMV0sIFsnYicsIDJdXSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gZnJvbVBhaXJzKHBhaXJzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYWlycyA9PSBudWxsID8gMCA6IHBhaXJzLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSB7fTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHBhaXIgPSBwYWlyc1tpbmRleF07XG4gICAgICAgIHJlc3VsdFtwYWlyWzBdXSA9IHBhaXJbMV07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyBmaXJzdFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmhlYWQoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiBfLmhlYWQoW10pO1xuICAgICAqIC8vID0+IHVuZGVmaW5lZFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGFycmF5WzBdIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGB2YWx1ZWAgaXMgZm91bmQgaW4gYGFycmF5YFxuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBJZiBgZnJvbUluZGV4YCBpcyBuZWdhdGl2ZSwgaXQncyB1c2VkIGFzIHRoZVxuICAgICAqIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5kZXhPZihbMSwgMiwgMSwgMl0sIDIpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIC8vIFNlYXJjaCBmcm9tIHRoZSBgZnJvbUluZGV4YC5cbiAgICAgKiBfLmluZGV4T2YoWzEsIDIsIDEsIDJdLCAyLCAyKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gZnJvbUluZGV4ID09IG51bGwgPyAwIDogdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIGluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBidXQgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbml0aWFsKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5pdGlhbChhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGJhc2VTbGljZShhcnJheSwgMCwgLTEpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIGFsbCBnaXZlbiBhcnJheXNcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgaW50ZXJzZWN0aW5nIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnRlcnNlY3Rpb24oWzIsIDFdLCBbMiwgM10pO1xuICAgICAqIC8vID0+IFsyXVxuICAgICAqL1xuICAgIHZhciBpbnRlcnNlY3Rpb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb25cbiAgICAgKiBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6XG4gICAgICogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgaW50ZXJzZWN0aW5nIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnRlcnNlY3Rpb25CeShbMi4xLCAxLjJdLCBbMi4zLCAzLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMi4xXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5pbnRlcnNlY3Rpb25CeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgaW50ZXJzZWN0aW9uQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGxhc3QoYXJyYXlzKSxcbiAgICAgICAgICBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuXG4gICAgICBpZiAoaXRlcmF0ZWUgPT09IGxhc3QobWFwcGVkKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcHBlZC5wb3AoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAobWFwcGVkLmxlbmd0aCAmJiBtYXBwZWRbMF0gPT09IGFycmF5c1swXSlcbiAgICAgICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheXNgLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXNcbiAgICAgKiBvZiByZXN1bHQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGNvbXBhcmF0b3IgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH1dXG4gICAgICovXG4gICAgdmFyIGludGVyc2VjdGlvbldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdChhcnJheXMpLFxuICAgICAgICAgIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG5cbiAgICAgIGNvbXBhcmF0b3IgPSB0eXBlb2YgY29tcGFyYXRvciA9PSAnZnVuY3Rpb24nID8gY29tcGFyYXRvciA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIG1hcHBlZC5wb3AoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAobWFwcGVkLmxlbmd0aCAmJiBtYXBwZWRbMF0gPT09IGFycmF5c1swXSlcbiAgICAgICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZCwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYWxsIGVsZW1lbnRzIGluIGBhcnJheWAgaW50byBhIHN0cmluZyBzZXBhcmF0ZWQgYnkgYHNlcGFyYXRvcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29udmVydC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3NlcGFyYXRvcj0nLCddIFRoZSBlbGVtZW50IHNlcGFyYXRvci5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBqb2luZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmpvaW4oWydhJywgJ2InLCAnYyddLCAnficpO1xuICAgICAqIC8vID0+ICdhfmJ+YydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBqb2luKGFycmF5LCBzZXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiBhcnJheSA9PSBudWxsID8gJycgOiBuYXRpdmVKb2luLmNhbGwoYXJyYXksIHNlcGFyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmxhc3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGFzdChhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGFycmF5W2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBhcnJheWAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1hcnJheS5sZW5ndGgtMV0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubGFzdEluZGV4T2YoWzEsIDIsIDEsIDJdLCAyKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiAvLyBTZWFyY2ggZnJvbSB0aGUgYGZyb21JbmRleGAuXG4gICAgICogXy5sYXN0SW5kZXhPZihbMSwgMiwgMSwgMl0sIDIsIDIpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gbGVuZ3RoO1xuICAgICAgaWYgKGZyb21JbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGluZGV4ID0gdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gICAgICAgIGluZGV4ID0gaW5kZXggPCAwID8gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKSA6IG5hdGl2ZU1pbihpbmRleCwgbGVuZ3RoIC0gMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlXG4gICAgICAgID8gc3RyaWN0TGFzdEluZGV4T2YoYXJyYXksIHZhbHVlLCBpbmRleClcbiAgICAgICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGluZGV4LCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBlbGVtZW50IGF0IGluZGV4IGBuYCBvZiBgYXJyYXlgLiBJZiBgbmAgaXMgbmVnYXRpdmUsIHRoZSBudGhcbiAgICAgKiBlbGVtZW50IGZyb20gdGhlIGVuZCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjExLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTBdIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byByZXR1cm4uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG50aCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnZCddO1xuICAgICAqXG4gICAgICogXy5udGgoYXJyYXksIDEpO1xuICAgICAqIC8vID0+ICdiJ1xuICAgICAqXG4gICAgICogXy5udGgoYXJyYXksIC0yKTtcbiAgICAgKiAvLyA9PiAnYyc7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbnRoKGFycmF5LCBuKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlTnRoKGFycmF5LCB0b0ludGVnZXIobikpIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGdpdmVuIHZhbHVlcyBmcm9tIGBhcnJheWAgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ud2l0aG91dGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC4gVXNlIGBfLnJlbW92ZWBcbiAgICAgKiB0byByZW1vdmUgZWxlbWVudHMgZnJvbSBhbiBhcnJheSBieSBwcmVkaWNhdGUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnYScsICdiJywgJ2MnXTtcbiAgICAgKlxuICAgICAqIF8ucHVsbChhcnJheSwgJ2EnLCAnYycpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2InLCAnYiddXG4gICAgICovXG4gICAgdmFyIHB1bGwgPSBiYXNlUmVzdChwdWxsQWxsKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucHVsbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhbiBhcnJheSBvZiB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlYCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnYScsICdiJywgJ2MnXTtcbiAgICAgKlxuICAgICAqIF8ucHVsbEFsbChhcnJheSwgWydhJywgJ2MnXSk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsnYicsICdiJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwdWxsQWxsKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoICYmIHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKVxuICAgICAgICA/IGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsQWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCBhbmQgYHZhbHVlc2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlQnlgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9LCB7ICd4JzogMyB9LCB7ICd4JzogMSB9XTtcbiAgICAgKlxuICAgICAqIF8ucHVsbEFsbEJ5KGFycmF5LCBbeyAneCc6IDEgfSwgeyAneCc6IDMgfV0sICd4Jyk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGxCeShhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGggJiYgdmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpXG4gICAgICAgID8gYmFzZVB1bGxBbGwoYXJyYXksIHZhbHVlcywgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucHVsbEFsbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YCB0byBgdmFsdWVzYC4gVGhlIGNvbXBhcmF0b3IgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZGlmZmVyZW5jZVdpdGhgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC42LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDMsICd5JzogNCB9LCB7ICd4JzogNSwgJ3knOiA2IH1dO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsV2l0aChhcnJheSwgW3sgJ3gnOiAzLCAneSc6IDQgfV0sIF8uaXNFcXVhbCk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiA1LCAneSc6IDYgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwdWxsQWxsV2l0aChhcnJheSwgdmFsdWVzLCBjb21wYXJhdG9yKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCAmJiB2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aClcbiAgICAgICAgPyBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBlbGVtZW50cyBmcm9tIGBhcnJheWAgY29ycmVzcG9uZGluZyB0byBgaW5kZXhlc2AgYW5kIHJldHVybnMgYW5cbiAgICAgKiBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5hdGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHsuLi4obnVtYmVyfG51bWJlcltdKX0gW2luZGV4ZXNdIFRoZSBpbmRleGVzIG9mIGVsZW1lbnRzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2EnLCAnYicsICdjJywgJ2QnXTtcbiAgICAgKiB2YXIgcHVsbGVkID0gXy5wdWxsQXQoYXJyYXksIFsxLCAzXSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydhJywgJ2MnXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cocHVsbGVkKTtcbiAgICAgKiAvLyA9PiBbJ2InLCAnZCddXG4gICAgICovXG4gICAgdmFyIHB1bGxBdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKGFycmF5LCBpbmRleGVzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gYmFzZUF0KGFycmF5LCBpbmRleGVzKTtcblxuICAgICAgYmFzZVB1bGxBdChhcnJheSwgYXJyYXlNYXAoaW5kZXhlcywgZnVuY3Rpb24oaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGlzSW5kZXgoaW5kZXgsIGxlbmd0aCkgPyAraW5kZXggOiBpbmRleDtcbiAgICAgIH0pLnNvcnQoY29tcGFyZUFzY2VuZGluZykpO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgZWxlbWVudHMgZnJvbSBgYXJyYXlgIHRoYXQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yXG4gICAgICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlIHJlbW92ZWQgZWxlbWVudHMuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmZpbHRlcmAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC4gVXNlIGBfLnB1bGxgXG4gICAgICogdG8gcHVsbCBlbGVtZW50cyBmcm9tIGFuIGFycmF5IGJ5IHZhbHVlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVtb3ZlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDMsIDRdO1xuICAgICAqIHZhciBldmVucyA9IF8ucmVtb3ZlKGFycmF5LCBmdW5jdGlvbihuKSB7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgM11cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGV2ZW5zKTtcbiAgICAgKiAvLyA9PiBbMiwgNF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZW1vdmUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaW5kZXhlcyA9IFtdLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgcHJlZGljYXRlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgICBpbmRleGVzLnB1c2goaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBiYXNlUHVsbEF0KGFycmF5LCBpbmRleGVzKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV2ZXJzZXMgYGFycmF5YCBzbyB0aGF0IHRoZSBmaXJzdCBlbGVtZW50IGJlY29tZXMgdGhlIGxhc3QsIHRoZSBzZWNvbmRcbiAgICAgKiBlbGVtZW50IGJlY29tZXMgdGhlIHNlY29uZCB0byBsYXN0LCBhbmQgc28gb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgIGFuZCBpcyBiYXNlZCBvblxuICAgICAqIFtgQXJyYXkjcmV2ZXJzZWBdKGh0dHBzOi8vbWRuLmlvL0FycmF5L3JldmVyc2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXy5yZXZlcnNlKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXZlcnNlKGFycmF5KSB7XG4gICAgICByZXR1cm4gYXJyYXkgPT0gbnVsbCA/IGFycmF5IDogbmF0aXZlUmV2ZXJzZS5jYWxsKGFycmF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBmcm9tIGBzdGFydGAgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGluc3RlYWQgb2ZcbiAgICAgKiBbYEFycmF5I3NsaWNlYF0oaHR0cHM6Ly9tZG4uaW8vQXJyYXkvc2xpY2UpIHRvIGVuc3VyZSBkZW5zZSBhcnJheXMgYXJlXG4gICAgICogcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCAmJiB0eXBlb2YgZW5kICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKGFycmF5LCBzdGFydCwgZW5kKSkge1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIGVuZCA9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBzdGFydCA9IHN0YXJ0ID09IG51bGwgPyAwIDogdG9JbnRlZ2VyKHN0YXJ0KTtcbiAgICAgICAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiB0b0ludGVnZXIoZW5kKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZXMgYSBiaW5hcnkgc2VhcmNoIHRvIGRldGVybWluZSB0aGUgbG93ZXN0IGluZGV4IGF0IHdoaWNoIGB2YWx1ZWBcbiAgICAgKiBzaG91bGQgYmUgaW5zZXJ0ZWQgaW50byBgYXJyYXlgIGluIG9yZGVyIHRvIG1haW50YWluIGl0cyBzb3J0IG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRJbmRleChbMzAsIDUwXSwgNDApO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleChhcnJheSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRlZEluZGV4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIGZvciBgdmFsdWVgIGFuZCBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCB0byBjb21wdXRlIHRoZWlyXG4gICAgICogc29ydCByYW5raW5nLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogNCB9LCB7ICd4JzogNSB9XTtcbiAgICAgKlxuICAgICAqIF8uc29ydGVkSW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCBmdW5jdGlvbihvKSB7IHJldHVybiBvLng7IH0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29ydGVkSW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCAneCcpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbmRleE9mYCBleGNlcHQgdGhhdCBpdCBwZXJmb3JtcyBhIGJpbmFyeVxuICAgICAqIHNlYXJjaCBvbiBhIHNvcnRlZCBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZEluZGV4T2YoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkSW5kZXhPZihhcnJheSwgdmFsdWUpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGgpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSk7XG4gICAgICAgIGlmIChpbmRleCA8IGxlbmd0aCAmJiBlcShhcnJheVtpbmRleF0sIHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkSW5kZXhgIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgdGhlIGhpZ2hlc3RcbiAgICAgKiBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG9cbiAgICAgKiBtYWludGFpbiBpdHMgc29ydCBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4KFs0LCA1LCA1LCA1LCA2XSwgNSk7XG4gICAgICogLy8gPT4gNFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZExhc3RJbmRleChhcnJheSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRlZExhc3RJbmRleGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCBmb3IgYHZhbHVlYCBhbmQgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgdG8gY29tcHV0ZSB0aGVpclxuICAgICAqIHNvcnQgcmFua2luZy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDQgfSwgeyAneCc6IDUgfV07XG4gICAgICpcbiAgICAgKiBfLnNvcnRlZExhc3RJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ueDsgfSk7XG4gICAgICogLy8gPT4gMVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCAneCcpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRMYXN0SW5kZXhCeShhcnJheSwgdmFsdWUsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubGFzdEluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IHBlcmZvcm1zIGEgYmluYXJ5XG4gICAgICogc2VhcmNoIG9uIGEgc29ydGVkIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4T2YoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4T2YoYXJyYXksIHZhbHVlKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHRydWUpIC0gMTtcbiAgICAgICAgaWYgKGVxKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCdzIGRlc2lnbmVkIGFuZCBvcHRpbWl6ZWRcbiAgICAgKiBmb3Igc29ydGVkIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZFVuaXEoWzEsIDEsIDJdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRVbmlxKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlU29ydGVkVW5pcShhcnJheSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFCeWAgZXhjZXB0IHRoYXQgaXQncyBkZXNpZ25lZCBhbmQgb3B0aW1pemVkXG4gICAgICogZm9yIHNvcnRlZCBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZFVuaXFCeShbMS4xLCAxLjIsIDIuMywgMi40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMSwgMi4zXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZFVuaXFCeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTb3J0ZWRVbmlxKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgYnV0IHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRhaWwoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWlsKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVNsaWNlKGFycmF5LCAxLCBsZW5ndGgpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHRha2UuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiBfLnRha2UoWzEsIDIsIDNdLCA1KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZShhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICAgIGlmICghKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIDAsIG4gPCAwID8gMCA6IG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggYG5gIGVsZW1lbnRzIHRha2VuIGZyb20gdGhlIGVuZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byB0YWtlLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqXG4gICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZVJpZ2h0KGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIG4gPSBsZW5ndGggLSBuO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgbiA8IDAgPyAwIDogbiwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGVsZW1lbnRzIHRha2VuIGZyb20gdGhlIGVuZC4gRWxlbWVudHMgYXJlXG4gICAgICogdGFrZW4gdW50aWwgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoXG4gICAgICogdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlUmlnaHRXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGZhbHNlLCB0cnVlKVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgYmVnaW5uaW5nLiBFbGVtZW50c1xuICAgICAqIGFyZSB0YWtlbiB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlV2hpbGUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlV2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRha2VXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzLCBpbiBvcmRlciwgZnJvbSBhbGwgZ2l2ZW4gYXJyYXlzIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaW9uKFsyXSwgWzEsIDJdKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKi9cbiAgICB2YXIgdW5pb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaW9uYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgZWFjaCBgYXJyYXlzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5XG4gICAgICogd2hpY2ggdW5pcXVlbmVzcyBpcyBjb21wdXRlZC4gUmVzdWx0IHZhbHVlcyBhcmUgY2hvc2VuIGZyb20gdGhlIGZpcnN0XG4gICAgICogYXJyYXkgaW4gd2hpY2ggdGhlIHZhbHVlIG9jY3Vycy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6XG4gICAgICogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaW9uQnkoWzIuMV0sIFsxLjIsIDIuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjEsIDEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udW5pb25CeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEgfSwgeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgdW5pb25CeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdChhcnJheXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGl0ZXJhdGVlKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheXNgLiBSZXN1bHQgdmFsdWVzIGFyZSBjaG9zZW4gZnJvbVxuICAgICAqIHRoZSBmaXJzdCBhcnJheSBpbiB3aGljaCB0aGUgdmFsdWUgb2NjdXJzLiBUaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy51bmlvbldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMSB9XVxuICAgICAqL1xuICAgIHZhciB1bmlvbldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdChhcnJheXMpO1xuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGR1cGxpY2F0ZS1mcmVlIHZlcnNpb24gb2YgYW4gYXJyYXksIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGluIHdoaWNoIG9ubHkgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgZWFjaCBlbGVtZW50XG4gICAgICogaXMga2VwdC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1clxuICAgICAqIGluIHRoZSBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXEoWzIsIDEsIDJdKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB1bmlxdWVuZXNzIGlzIGNvbXB1dGVkLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZVxuICAgICAqIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXFCeShbMi4xLCAxLjIsIDIuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjEsIDEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udW5pcUJ5KFt7ICd4JzogMSB9LCB7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEgfSwgeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxQnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXNcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheS5UaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy51bmlxV2l0aChvYmplY3RzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxV2l0aChhcnJheSwgY29tcGFyYXRvcikge1xuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZVVuaXEoYXJyYXksIHVuZGVmaW5lZCwgY29tcGFyYXRvcikgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnppcGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhbiBhcnJheSBvZiBncm91cGVkXG4gICAgICogZWxlbWVudHMgYW5kIGNyZWF0ZXMgYW4gYXJyYXkgcmVncm91cGluZyB0aGUgZWxlbWVudHMgdG8gdGhlaXIgcHJlLXppcFxuICAgICAqIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cyB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHJlZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHppcHBlZCA9IF8uemlwKFsnYScsICdiJ10sIFsxLCAyXSwgW3RydWUsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gW1snYScsIDEsIHRydWVdLCBbJ2InLCAyLCBmYWxzZV1dXG4gICAgICpcbiAgICAgKiBfLnVuemlwKHppcHBlZCk7XG4gICAgICogLy8gPT4gW1snYScsICdiJ10sIFsxLCAyXSwgW3RydWUsIGZhbHNlXV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnppcChhcnJheSkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gMDtcbiAgICAgIGFycmF5ID0gYXJyYXlGaWx0ZXIoYXJyYXksIGZ1bmN0aW9uKGdyb3VwKSB7XG4gICAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChncm91cCkpIHtcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoZ3JvdXAubGVuZ3RoLCBsZW5ndGgpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBiYXNlVGltZXMobGVuZ3RoLCBmdW5jdGlvbihpbmRleCkge1xuICAgICAgICByZXR1cm4gYXJyYXlNYXAoYXJyYXksIGJhc2VQcm9wZXJ0eShpbmRleCkpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bnppcGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHRvIHNwZWNpZnlcbiAgICAgKiBob3cgcmVncm91cGVkIHZhbHVlcyBzaG91bGQgYmUgY29tYmluZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhlXG4gICAgICogZWxlbWVudHMgb2YgZWFjaCBncm91cDogKC4uLmdyb3VwKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjguMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzIHRvIHByb2Nlc3MuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiB0byBjb21iaW5lXG4gICAgICogIHJlZ3JvdXBlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgemlwcGVkID0gXy56aXAoWzEsIDJdLCBbMTAsIDIwXSwgWzEwMCwgMjAwXSk7XG4gICAgICogLy8gPT4gW1sxLCAxMCwgMTAwXSwgWzIsIDIwLCAyMDBdXVxuICAgICAqXG4gICAgICogXy51bnppcFdpdGgoemlwcGVkLCBfLmFkZCk7XG4gICAgICogLy8gPT4gWzMsIDMwLCAzMDBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW56aXBXaXRoKGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gdW56aXAoYXJyYXkpO1xuICAgICAgaWYgKGl0ZXJhdGVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheU1hcChyZXN1bHQsIGZ1bmN0aW9uKGdyb3VwKSB7XG4gICAgICAgIHJldHVybiBhcHBseShpdGVyYXRlZSwgdW5kZWZpbmVkLCBncm91cCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IGV4Y2x1ZGluZyBhbGwgZ2l2ZW4gdmFsdWVzIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBzZWUgXy5kaWZmZXJlbmNlLCBfLnhvclxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLndpdGhvdXQoWzIsIDEsIDIsIDNdLCAxLCAyKTtcbiAgICAgKiAvLyA9PiBbM11cbiAgICAgKi9cbiAgICB2YXIgd2l0aG91dCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgdmFsdWVzKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzIHRoYXQgaXMgdGhlXG4gICAgICogW3N5bW1ldHJpYyBkaWZmZXJlbmNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TeW1tZXRyaWNfZGlmZmVyZW5jZSlcbiAgICAgKiBvZiB0aGUgZ2l2ZW4gYXJyYXlzLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlclxuICAgICAqIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLmRpZmZlcmVuY2UsIF8ud2l0aG91dFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnhvcihbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzEsIDNdXG4gICAgICovXG4gICAgdmFyIHhvciA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgcmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLCBpc0FycmF5TGlrZU9iamVjdCkpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy54b3JgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnlcbiAgICAgKiB3aGljaCBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkXG4gICAgICogYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5cy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmVcbiAgICAgKiBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnhvckJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsxLjIsIDMuNF1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ueG9yQnkoW3sgJ3gnOiAxIH1dLCBbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sICd4Jyk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgdmFyIHhvckJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KGFycmF5cyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLCBpc0FycmF5TGlrZU9iamVjdCksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnhvcmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLiBUaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy54b3JXaXRoKG9iamVjdHMsIG90aGVycywgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAxIH1dXG4gICAgICovXG4gICAgdmFyIHhvcldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdChhcnJheXMpO1xuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLCBpc0FycmF5TGlrZU9iamVjdCksIHVuZGVmaW5lZCwgY29tcGFyYXRvcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMsIHRoZSBmaXJzdCBvZiB3aGljaCBjb250YWlucyB0aGVcbiAgICAgKiBmaXJzdCBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gYXJyYXlzLCB0aGUgc2Vjb25kIG9mIHdoaWNoIGNvbnRhaW5zIHRoZVxuICAgICAqIHNlY29uZCBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gYXJyYXlzLCBhbmQgc28gb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXAoWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMSwgdHJ1ZV0sIFsnYicsIDIsIGZhbHNlXV1cbiAgICAgKi9cbiAgICB2YXIgemlwID0gYmFzZVJlc3QodW56aXApO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mcm9tUGFpcnNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgdHdvIGFycmF5cyxcbiAgICAgKiBvbmUgb2YgcHJvcGVydHkgaWRlbnRpZmllcnMgYW5kIG9uZSBvZiBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjQuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwcm9wcz1bXV0gVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXBPYmplY3QoWydhJywgJ2InXSwgWzEsIDJdKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB6aXBPYmplY3QocHJvcHMsIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGJhc2VaaXBPYmplY3QocHJvcHMgfHwgW10sIHZhbHVlcyB8fCBbXSwgYXNzaWduVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwT2JqZWN0YCBleGNlcHQgdGhhdCBpdCBzdXBwb3J0cyBwcm9wZXJ0eSBwYXRocy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwcm9wcz1bXV0gVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXBPYmplY3REZWVwKFsnYS5iWzBdLmMnLCAnYS5iWzFdLmQnXSwgWzEsIDJdKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnYic6IFt7ICdjJzogMSB9LCB7ICdkJzogMiB9XSB9IH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB6aXBPYmplY3REZWVwKHByb3BzLCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzIHx8IFtdLCB2YWx1ZXMgfHwgW10sIGJhc2VTZXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgdG8gc3BlY2lmeVxuICAgICAqIGhvdyBncm91cGVkIHZhbHVlcyBzaG91bGQgYmUgY29tYmluZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhlXG4gICAgICogZWxlbWVudHMgb2YgZWFjaCBncm91cDogKC4uLmdyb3VwKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjguMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmVcbiAgICAgKiAgZ3JvdXBlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXBXaXRoKFsxLCAyXSwgWzEwLCAyMF0sIFsxMDAsIDIwMF0sIGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBhICsgYiArIGM7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gWzExMSwgMjIyXVxuICAgICAqL1xuICAgIHZhciB6aXBXaXRoID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXlzLmxlbmd0aCxcbiAgICAgICAgICBpdGVyYXRlZSA9IGxlbmd0aCA+IDEgPyBhcnJheXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG5cbiAgICAgIGl0ZXJhdGVlID0gdHlwZW9mIGl0ZXJhdGVlID09ICdmdW5jdGlvbicgPyAoYXJyYXlzLnBvcCgpLCBpdGVyYXRlZSkgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gdW56aXBXaXRoKGFycmF5cywgaXRlcmF0ZWUpO1xuICAgIH0pO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UgdGhhdCB3cmFwcyBgdmFsdWVgIHdpdGggZXhwbGljaXQgbWV0aG9kXG4gICAgICogY2hhaW4gc2VxdWVuY2VzIGVuYWJsZWQuIFRoZSByZXN1bHQgb2Ygc3VjaCBzZXF1ZW5jZXMgbXVzdCBiZSB1bndyYXBwZWRcbiAgICAgKiB3aXRoIGBfI3ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjMuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiB2YXIgeW91bmdlc3QgPSBfXG4gICAgICogICAuY2hhaW4odXNlcnMpXG4gICAgICogICAuc29ydEJ5KCdhZ2UnKVxuICAgICAqICAgLm1hcChmdW5jdGlvbihvKSB7XG4gICAgICogICAgIHJldHVybiBvLnVzZXIgKyAnIGlzICcgKyBvLmFnZTtcbiAgICAgKiAgIH0pXG4gICAgICogICAuaGVhZCgpXG4gICAgICogICAudmFsdWUoKTtcbiAgICAgKiAvLyA9PiAncGViYmxlcyBpcyAxJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNoYWluKHZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbG9kYXNoKHZhbHVlKTtcbiAgICAgIHJlc3VsdC5fX2NoYWluX18gPSB0cnVlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpbnZva2VzIGBpbnRlcmNlcHRvcmAgYW5kIHJldHVybnMgYHZhbHVlYC4gVGhlIGludGVyY2VwdG9yXG4gICAgICogaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKHZhbHVlKS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG9cbiAgICAgKiBcInRhcCBpbnRvXCIgYSBtZXRob2QgY2hhaW4gc2VxdWVuY2UgaW4gb3JkZXIgdG8gbW9kaWZ5IGludGVybWVkaWF0ZSByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb3ZpZGUgdG8gYGludGVyY2VwdG9yYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpbnRlcmNlcHRvciBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8oWzEsIDIsIDNdKVxuICAgICAqICAudGFwKGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgICogICAgLy8gTXV0YXRlIGlucHV0IGFycmF5LlxuICAgICAqICAgIGFycmF5LnBvcCgpO1xuICAgICAqICB9KVxuICAgICAqICAucmV2ZXJzZSgpXG4gICAgICogIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRhcCh2YWx1ZSwgaW50ZXJjZXB0b3IpIHtcbiAgICAgIGludGVyY2VwdG9yKHZhbHVlKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnRhcGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGBpbnRlcmNlcHRvcmAuXG4gICAgICogVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gXCJwYXNzIHRocnVcIiB2YWx1ZXMgcmVwbGFjaW5nIGludGVybWVkaWF0ZVxuICAgICAqIHJlc3VsdHMgaW4gYSBtZXRob2QgY2hhaW4gc2VxdWVuY2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvdmlkZSB0byBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGludGVyY2VwdG9yIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfKCcgIGFiYyAgJylcbiAgICAgKiAgLmNoYWluKClcbiAgICAgKiAgLnRyaW0oKVxuICAgICAqICAudGhydShmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgIHJldHVybiBbdmFsdWVdO1xuICAgICAqICB9KVxuICAgICAqICAudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbJ2FiYyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGhydSh2YWx1ZSwgaW50ZXJjZXB0b3IpIHtcbiAgICAgIHJldHVybiBpbnRlcmNlcHRvcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgdGhlIHdyYXBwZXIgdmVyc2lvbiBvZiBgXy5hdGAuXG4gICAgICpcbiAgICAgKiBAbmFtZSBhdFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH0sIDRdIH07XG4gICAgICpcbiAgICAgKiBfKG9iamVjdCkuYXQoWydhWzBdLmIuYycsICdhWzFdJ10pLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzMsIDRdXG4gICAgICovXG4gICAgdmFyIHdyYXBwZXJBdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKHBhdGhzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHN0YXJ0ID0gbGVuZ3RoID8gcGF0aHNbMF0gOiAwLFxuICAgICAgICAgIHZhbHVlID0gdGhpcy5fX3dyYXBwZWRfXyxcbiAgICAgICAgICBpbnRlcmNlcHRvciA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gYmFzZUF0KG9iamVjdCwgcGF0aHMpOyB9O1xuXG4gICAgICBpZiAobGVuZ3RoID4gMSB8fCB0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCB8fFxuICAgICAgICAgICEodmFsdWUgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikgfHwgIWlzSW5kZXgoc3RhcnQpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRocnUoaW50ZXJjZXB0b3IpO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZShzdGFydCwgK3N0YXJ0ICsgKGxlbmd0aCA/IDEgOiAwKSk7XG4gICAgICB2YWx1ZS5fX2FjdGlvbnNfXy5wdXNoKHtcbiAgICAgICAgJ2Z1bmMnOiB0aHJ1LFxuICAgICAgICAnYXJncyc6IFtpbnRlcmNlcHRvcl0sXG4gICAgICAgICd0aGlzQXJnJzogdW5kZWZpbmVkXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih2YWx1ZSwgdGhpcy5fX2NoYWluX18pLnRocnUoZnVuY3Rpb24oYXJyYXkpIHtcbiAgICAgICAgaWYgKGxlbmd0aCAmJiAhYXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgYXJyYXkucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnJheTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2Ugd2l0aCBleHBsaWNpdCBtZXRob2QgY2hhaW4gc2VxdWVuY2VzIGVuYWJsZWQuXG4gICAgICpcbiAgICAgKiBAbmFtZSBjaGFpblxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBBIHNlcXVlbmNlIHdpdGhvdXQgZXhwbGljaXQgY2hhaW5pbmcuXG4gICAgICogXyh1c2VycykuaGVhZCgpO1xuICAgICAqIC8vID0+IHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH1cbiAgICAgKlxuICAgICAqIC8vIEEgc2VxdWVuY2Ugd2l0aCBleHBsaWNpdCBjaGFpbmluZy5cbiAgICAgKiBfKHVzZXJzKVxuICAgICAqICAgLmNoYWluKClcbiAgICAgKiAgIC5oZWFkKClcbiAgICAgKiAgIC5waWNrKCd1c2VyJylcbiAgICAgKiAgIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IHsgJ3VzZXInOiAnYmFybmV5JyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlckNoYWluKCkge1xuICAgICAgcmV0dXJuIGNoYWluKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIHRoZSBjaGFpbiBzZXF1ZW5jZSBhbmQgcmV0dXJucyB0aGUgd3JhcHBlZCByZXN1bHQuXG4gICAgICpcbiAgICAgKiBAbmFtZSBjb21taXRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDJdO1xuICAgICAqIHZhciB3cmFwcGVkID0gXyhhcnJheSkucHVzaCgzKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQgPSB3cmFwcGVkLmNvbW1pdCgpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIHdyYXBwZWQubGFzdCgpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ29tbWl0KCkge1xuICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHRoaXMudmFsdWUoKSwgdGhpcy5fX2NoYWluX18pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG5leHQgdmFsdWUgb24gYSB3cmFwcGVkIG9iamVjdCBmb2xsb3dpbmcgdGhlXG4gICAgICogW2l0ZXJhdG9yIHByb3RvY29sXShodHRwczovL21kbi5pby9pdGVyYXRpb25fcHJvdG9jb2xzI2l0ZXJhdG9yKS5cbiAgICAgKlxuICAgICAqIEBuYW1lIG5leHRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXh0IGl0ZXJhdG9yIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKTtcbiAgICAgKlxuICAgICAqIHdyYXBwZWQubmV4dCgpO1xuICAgICAqIC8vID0+IHsgJ2RvbmUnOiBmYWxzZSwgJ3ZhbHVlJzogMSB9XG4gICAgICpcbiAgICAgKiB3cmFwcGVkLm5leHQoKTtcbiAgICAgKiAvLyA9PiB7ICdkb25lJzogZmFsc2UsICd2YWx1ZSc6IDIgfVxuICAgICAqXG4gICAgICogd3JhcHBlZC5uZXh0KCk7XG4gICAgICogLy8gPT4geyAnZG9uZSc6IHRydWUsICd2YWx1ZSc6IHVuZGVmaW5lZCB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlck5leHQoKSB7XG4gICAgICBpZiAodGhpcy5fX3ZhbHVlc19fID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fX3ZhbHVlc19fID0gdG9BcnJheSh0aGlzLnZhbHVlKCkpO1xuICAgICAgfVxuICAgICAgdmFyIGRvbmUgPSB0aGlzLl9faW5kZXhfXyA+PSB0aGlzLl9fdmFsdWVzX18ubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlID0gZG9uZSA/IHVuZGVmaW5lZCA6IHRoaXMuX192YWx1ZXNfX1t0aGlzLl9faW5kZXhfXysrXTtcblxuICAgICAgcmV0dXJuIHsgJ2RvbmUnOiBkb25lLCAndmFsdWUnOiB2YWx1ZSB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgdGhlIHdyYXBwZXIgdG8gYmUgaXRlcmFibGUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBTeW1ib2wuaXRlcmF0b3JcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSB3cmFwcGVyIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHdyYXBwZWQgPSBfKFsxLCAyXSk7XG4gICAgICpcbiAgICAgKiB3cmFwcGVkW1N5bWJvbC5pdGVyYXRvcl0oKSA9PT0gd3JhcHBlZDtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBBcnJheS5mcm9tKHdyYXBwZWQpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJUb0l0ZXJhdG9yKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBjaGFpbiBzZXF1ZW5jZSBwbGFudGluZyBgdmFsdWVgIGFzIHRoZSB3cmFwcGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQG5hbWUgcGxhbnRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwbGFudC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKS5tYXAoc3F1YXJlKTtcbiAgICAgKiB2YXIgb3RoZXIgPSB3cmFwcGVkLnBsYW50KFszLCA0XSk7XG4gICAgICpcbiAgICAgKiBvdGhlci52YWx1ZSgpO1xuICAgICAqIC8vID0+IFs5LCAxNl1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMSwgNF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyUGxhbnQodmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQsXG4gICAgICAgICAgcGFyZW50ID0gdGhpcztcblxuICAgICAgd2hpbGUgKHBhcmVudCBpbnN0YW5jZW9mIGJhc2VMb2Rhc2gpIHtcbiAgICAgICAgdmFyIGNsb25lID0gd3JhcHBlckNsb25lKHBhcmVudCk7XG4gICAgICAgIGNsb25lLl9faW5kZXhfXyA9IDA7XG4gICAgICAgIGNsb25lLl9fdmFsdWVzX18gPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICBwcmV2aW91cy5fX3dyYXBwZWRfXyA9IGNsb25lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGNsb25lO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcmV2aW91cyA9IGNsb25lO1xuICAgICAgICBwYXJlbnQgPSBwYXJlbnQuX193cmFwcGVkX187XG4gICAgICB9XG4gICAgICBwcmV2aW91cy5fX3dyYXBwZWRfXyA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgd3JhcHBlciB2ZXJzaW9uIG9mIGBfLnJldmVyc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgdGhlIHdyYXBwZWQgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAbmFtZSByZXZlcnNlXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgKlxuICAgICAqIF8oYXJyYXkpLnJldmVyc2UoKS52YWx1ZSgpXG4gICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclJldmVyc2UoKSB7XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fO1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpIHtcbiAgICAgICAgdmFyIHdyYXBwZWQgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoKSB7XG4gICAgICAgICAgd3JhcHBlZCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB3cmFwcGVkID0gd3JhcHBlZC5yZXZlcnNlKCk7XG4gICAgICAgIHdyYXBwZWQuX19hY3Rpb25zX18ucHVzaCh7XG4gICAgICAgICAgJ2Z1bmMnOiB0aHJ1LFxuICAgICAgICAgICdhcmdzJzogW3JldmVyc2VdLFxuICAgICAgICAgICd0aGlzQXJnJzogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIod3JhcHBlZCwgdGhpcy5fX2NoYWluX18pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMudGhydShyZXZlcnNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyB0aGUgY2hhaW4gc2VxdWVuY2UgdG8gcmVzb2x2ZSB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQG5hbWUgdmFsdWVcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyB0b0pTT04sIHZhbHVlT2ZcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXyhbMSwgMiwgM10pLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclZhbHVlKCkge1xuICAgICAgcmV0dXJuIGJhc2VXcmFwcGVyVmFsdWUodGhpcy5fX3dyYXBwZWRfXywgdGhpcy5fX2FjdGlvbnNfXyk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2Yga2V5cyBnZW5lcmF0ZWQgZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIG9mXG4gICAgICogZWFjaCBrZXkgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUga2V5IHdhcyByZXR1cm5lZCBieSBgaXRlcmF0ZWVgLiBUaGVcbiAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNvdW50QnkoWzYuMSwgNC4yLCA2LjNdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiB7ICc0JzogMSwgJzYnOiAyIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uY291bnRCeShbJ29uZScsICd0d28nLCAndGhyZWUnXSwgJ2xlbmd0aCcpO1xuICAgICAqIC8vID0+IHsgJzMnOiAyLCAnNSc6IDEgfVxuICAgICAqL1xuICAgIHZhciBjb3VudEJ5ID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwga2V5KSkge1xuICAgICAgICArK3Jlc3VsdFtrZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgKiphbGwqKiBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAuXG4gICAgICogSXRlcmF0aW9uIGlzIHN0b3BwZWQgb25jZSBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB0cnVlYCBmb3JcbiAgICAgKiBbZW1wdHkgY29sbGVjdGlvbnNdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VtcHR5X3NldCkgYmVjYXVzZVxuICAgICAqIFtldmVyeXRoaW5nIGlzIHRydWVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZhY3VvdXNfdHJ1dGgpIG9mXG4gICAgICogZWxlbWVudHMgb2YgZW1wdHkgY29sbGVjdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYWxsIGVsZW1lbnRzIHBhc3MgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmV2ZXJ5KFt0cnVlLCAxLCBudWxsLCAneWVzJ10sIEJvb2xlYW4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmV2ZXJ5KHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmV2ZXJ5KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBldmVyeShjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUV2ZXJ5IDogYmFzZUV2ZXJ5O1xuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpKSB7XG4gICAgICAgIHByZWRpY2F0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgYWxsIGVsZW1lbnRzXG4gICAgICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5yZW1vdmVgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgICAqIEBzZWUgXy5yZWplY3RcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBDb21iaW5pbmcgc2V2ZXJhbCBwcmVkaWNhdGVzIHVzaW5nIGBfLm92ZXJFdmVyeWAgb3IgYF8ub3ZlclNvbWVgLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCBfLm92ZXJTb21lKFt7ICdhZ2UnOiAzNiB9LCBbJ2FnZScsIDQwXV0pKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAnYmFybmV5J11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUZpbHRlciA6IGJhc2VGaWx0ZXI7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hdGNoZWQgZWxlbWVudCwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbmQodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ2Jhcm5leSdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kKHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3QgZm9yICdwZWJibGVzJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ2ZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmQodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gICAgICovXG4gICAgdmFyIGZpbmQgPSBjcmVhdGVGaW5kKGZpbmRJbmRleCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBgY29sbGVjdGlvbmAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1jb2xsZWN0aW9uLmxlbmd0aC0xXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hdGNoZWQgZWxlbWVudCwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5maW5kTGFzdChbMSwgMiwgMywgNF0sIGZ1bmN0aW9uKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAxO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICB2YXIgZmluZExhc3QgPSBjcmVhdGVGaW5kKGZpbmRMYXN0SW5kZXgpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZsYXR0ZW5lZCBhcnJheSBvZiB2YWx1ZXMgYnkgcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gXG4gICAgICogdGhydSBgaXRlcmF0ZWVgIGFuZCBmbGF0dGVuaW5nIHRoZSBtYXBwZWQgcmVzdWx0cy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkdXBsaWNhdGUobikge1xuICAgICAqICAgcmV0dXJuIFtuLCBuXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXAoWzEsIDJdLCBkdXBsaWNhdGUpO1xuICAgICAqIC8vID0+IFsxLCAxLCAyLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXRNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpLCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsYXRNYXBgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIHRoZVxuICAgICAqIG1hcHBlZCByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkdXBsaWNhdGUobikge1xuICAgICAqICAgcmV0dXJuIFtbW24sIG5dXV07XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5mbGF0TWFwRGVlcChbMSwgMl0sIGR1cGxpY2F0ZSk7XG4gICAgICogLy8gPT4gWzEsIDEsIDIsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdE1hcERlZXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpLCBJTkZJTklUWSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mbGF0TWFwYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBmbGF0dGVucyB0aGVcbiAgICAgKiBtYXBwZWQgcmVzdWx0cyB1cCB0byBgZGVwdGhgIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtkZXB0aD0xXSBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkdXBsaWNhdGUobikge1xuICAgICAqICAgcmV0dXJuIFtbW24sIG5dXV07XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5mbGF0TWFwRGVwdGgoWzEsIDJdLCBkdXBsaWNhdGUsIDIpO1xuICAgICAqIC8vID0+IFtbMSwgMV0sIFsyLCAyXV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0TWFwRGVwdGgoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGRlcHRoKSB7XG4gICAgICBkZXB0aCA9IGRlcHRoID09PSB1bmRlZmluZWQgPyAxIDogdG9JbnRlZ2VyKGRlcHRoKTtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpLCBkZXB0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBlbGVtZW50LlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEFzIHdpdGggb3RoZXIgXCJDb2xsZWN0aW9uc1wiIG1ldGhvZHMsIG9iamVjdHMgd2l0aCBhIFwibGVuZ3RoXCJcbiAgICAgKiBwcm9wZXJ0eSBhcmUgaXRlcmF0ZWQgbGlrZSBhcnJheXMuIFRvIGF2b2lkIHRoaXMgYmVoYXZpb3IgdXNlIGBfLmZvckluYFxuICAgICAqIG9yIGBfLmZvck93bmAgZm9yIG9iamVjdCBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAYWxpYXMgZWFjaFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICAgICAqIEBzZWUgXy5mb3JFYWNoUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mb3JFYWNoKFsxLCAyXSwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzIGAxYCB0aGVuIGAyYC5cbiAgICAgKlxuICAgICAqIF8uZm9yRWFjaCh7ICdhJzogMSwgJ2InOiAyIH0sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnYScgdGhlbiAnYicgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9yRWFjaChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFYWNoIDogYmFzZUVhY2g7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9yRWFjaGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAYWxpYXMgZWFjaFJpZ2h0XG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICogQHNlZSBfLmZvckVhY2hcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mb3JFYWNoUmlnaHQoWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgYDJgIHRoZW4gYDFgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvckVhY2hSaWdodChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFYWNoUmlnaHQgOiBiYXNlRWFjaFJpZ2h0O1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYC4gVGhlIG9yZGVyIG9mIGdyb3VwZWQgdmFsdWVzXG4gICAgICogaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiBgY29sbGVjdGlvbmAuIFRoZSBjb3JyZXNwb25kaW5nXG4gICAgICogdmFsdWUgb2YgZWFjaCBrZXkgaXMgYW4gYXJyYXkgb2YgZWxlbWVudHMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlXG4gICAgICoga2V5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29tcG9zZWQgYWdncmVnYXRlIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ncm91cEJ5KFs2LjEsIDQuMiwgNi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4geyAnNCc6IFs0LjJdLCAnNic6IFs2LjEsIDYuM10gfVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5ncm91cEJ5KFsnb25lJywgJ3R3bycsICd0aHJlZSddLCAnbGVuZ3RoJyk7XG4gICAgICogLy8gPT4geyAnMyc6IFsnb25lJywgJ3R3byddLCAnNSc6IFsndGhyZWUnXSB9XG4gICAgICovXG4gICAgdmFyIGdyb3VwQnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCBrZXkpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldLnB1c2godmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBbdmFsdWVdKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIGBjb2xsZWN0aW9uYC4gSWYgYGNvbGxlY3Rpb25gIGlzIGEgc3RyaW5nLCBpdCdzXG4gICAgICogY2hlY2tlZCBmb3IgYSBzdWJzdHJpbmcgb2YgYHZhbHVlYCwgb3RoZXJ3aXNlXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBpcyB1c2VkIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gSWYgYGZyb21JbmRleGAgaXMgbmVnYXRpdmUsIGl0J3MgdXNlZCBhc1xuICAgICAqIHRoZSBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R8c3RyaW5nfSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ucmVkdWNlYC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKFsxLCAyLCAzXSwgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pbmNsdWRlcyhbMSwgMiwgM10sIDEsIDIpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKHsgJ2EnOiAxLCAnYic6IDIgfSwgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pbmNsdWRlcygnYWJjZCcsICdiYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbmNsdWRlcyhjb2xsZWN0aW9uLCB2YWx1ZSwgZnJvbUluZGV4LCBndWFyZCkge1xuICAgICAgY29sbGVjdGlvbiA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gY29sbGVjdGlvbiA6IHZhbHVlcyhjb2xsZWN0aW9uKTtcbiAgICAgIGZyb21JbmRleCA9IChmcm9tSW5kZXggJiYgIWd1YXJkKSA/IHRvSW50ZWdlcihmcm9tSW5kZXgpIDogMDtcblxuICAgICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoO1xuICAgICAgaWYgKGZyb21JbmRleCA8IDApIHtcbiAgICAgICAgZnJvbUluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGZyb21JbmRleCwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNTdHJpbmcoY29sbGVjdGlvbilcbiAgICAgICAgPyAoZnJvbUluZGV4IDw9IGxlbmd0aCAmJiBjb2xsZWN0aW9uLmluZGV4T2YodmFsdWUsIGZyb21JbmRleCkgPiAtMSlcbiAgICAgICAgOiAoISFsZW5ndGggJiYgYmFzZUluZGV4T2YoY29sbGVjdGlvbiwgdmFsdWUsIGZyb21JbmRleCkgPiAtMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyB0aGUgbWV0aG9kIGF0IGBwYXRoYCBvZiBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gLCByZXR1cm5pbmdcbiAgICAgKiBhbiBhcnJheSBvZiB0aGUgcmVzdWx0cyBvZiBlYWNoIGludm9rZWQgbWV0aG9kLiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICAgKiBhcmUgcHJvdmlkZWQgdG8gZWFjaCBpbnZva2VkIG1ldGhvZC4gSWYgYHBhdGhgIGlzIGEgZnVuY3Rpb24sIGl0J3MgaW52b2tlZFxuICAgICAqIGZvciwgYW5kIGB0aGlzYCBib3VuZCB0bywgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXJyYXl8RnVuY3Rpb258c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlIG9yXG4gICAgICogIHRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgZWFjaCBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW52b2tlTWFwKFtbNSwgMSwgN10sIFszLCAyLCAxXV0sICdzb3J0Jyk7XG4gICAgICogLy8gPT4gW1sxLCA1LCA3XSwgWzEsIDIsIDNdXVxuICAgICAqXG4gICAgICogXy5pbnZva2VNYXAoWzEyMywgNDU2XSwgU3RyaW5nLnByb3RvdHlwZS5zcGxpdCwgJycpO1xuICAgICAqIC8vID0+IFtbJzEnLCAnMicsICczJ10sIFsnNCcsICc1JywgJzYnXV1cbiAgICAgKi9cbiAgICB2YXIgaW52b2tlTWFwID0gYmFzZVJlc3QoZnVuY3Rpb24oY29sbGVjdGlvbiwgcGF0aCwgYXJncykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaXNGdW5jID0gdHlwZW9mIHBhdGggPT0gJ2Z1bmN0aW9uJyxcbiAgICAgICAgICByZXN1bHQgPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IEFycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKSA6IFtdO1xuXG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXN1bHRbKytpbmRleF0gPSBpc0Z1bmMgPyBhcHBseShwYXRoLCB2YWx1ZSwgYXJncykgOiBiYXNlSW52b2tlKHZhbHVlLCBwYXRoLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZ1xuICAgICAqIGVhY2ggZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgY29ycmVzcG9uZGluZyB2YWx1ZSBvZlxuICAgICAqIGVhY2gga2V5IGlzIHRoZSBsYXN0IGVsZW1lbnQgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlIGtleS4gVGhlXG4gICAgICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29tcG9zZWQgYWdncmVnYXRlIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW1xuICAgICAqICAgeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sXG4gICAgICogICB7ICdkaXInOiAncmlnaHQnLCAnY29kZSc6IDEwMCB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ua2V5QnkoYXJyYXksIGZ1bmN0aW9uKG8pIHtcbiAgICAgKiAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKG8uY29kZSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4geyAnYSc6IHsgJ2Rpcic6ICdsZWZ0JywgJ2NvZGUnOiA5NyB9LCAnZCc6IHsgJ2Rpcic6ICdyaWdodCcsICdjb2RlJzogMTAwIH0gfVxuICAgICAqXG4gICAgICogXy5rZXlCeShhcnJheSwgJ2RpcicpO1xuICAgICAqIC8vID0+IHsgJ2xlZnQnOiB7ICdkaXInOiAnbGVmdCcsICdjb2RlJzogOTcgfSwgJ3JpZ2h0JzogeyAnZGlyJzogJ3JpZ2h0JywgJ2NvZGUnOiAxMDAgfSB9XG4gICAgICovXG4gICAgdmFyIGtleUJ5ID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgdmFsdWUpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB2YWx1ZXMgYnkgcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnVcbiAgICAgKiBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czpcbiAgICAgKiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAgICAgKiBgXy5ldmVyeWAsIGBfLmZpbHRlcmAsIGBfLm1hcGAsIGBfLm1hcFZhbHVlc2AsIGBfLnJlamVjdGAsIGFuZCBgXy5zb21lYC5cbiAgICAgKlxuICAgICAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICAgICAqIGBhcnlgLCBgY2h1bmtgLCBgY3VycnlgLCBgY3VycnlSaWdodGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsIGBldmVyeWAsXG4gICAgICogYGZpbGxgLCBgaW52ZXJ0YCwgYHBhcnNlSW50YCwgYHJhbmRvbWAsIGByYW5nZWAsIGByYW5nZVJpZ2h0YCwgYHJlcGVhdGAsXG4gICAgICogYHNhbXBsZVNpemVgLCBgc2xpY2VgLCBgc29tZWAsIGBzb3J0QnlgLCBgc3BsaXRgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLFxuICAgICAqIGB0ZW1wbGF0ZWAsIGB0cmltYCwgYHRyaW1FbmRgLCBgdHJpbVN0YXJ0YCwgYW5kIGB3b3Jkc2BcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLm1hcChbNCwgOF0sIHNxdWFyZSk7XG4gICAgICogLy8gPT4gWzE2LCA2NF1cbiAgICAgKlxuICAgICAqIF8ubWFwKHsgJ2EnOiA0LCAnYic6IDggfSwgc3F1YXJlKTtcbiAgICAgKiAvLyA9PiBbMTYsIDY0XSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5tYXAodXNlcnMsICd1c2VyJyk7XG4gICAgICogLy8gPT4gWydiYXJuZXknLCAnZnJlZCddXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheU1hcCA6IGJhc2VNYXA7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydEJ5YCBleGNlcHQgdGhhdCBpdCBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgc29ydFxuICAgICAqIG9yZGVycyBvZiB0aGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuIElmIGBvcmRlcnNgIGlzIHVuc3BlY2lmaWVkLCBhbGwgdmFsdWVzXG4gICAgICogYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSwgc3BlY2lmeSBhbiBvcmRlciBvZiBcImRlc2NcIiBmb3JcbiAgICAgKiBkZXNjZW5kaW5nIG9yIFwiYXNjXCIgZm9yIGFzY2VuZGluZyBzb3J0IG9yZGVyIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBcnJheVtdfEZ1bmN0aW9uW118T2JqZWN0W118c3RyaW5nW119IFtpdGVyYXRlZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gW29yZGVyc10gVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLnJlZHVjZWAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0OCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzQgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFNvcnQgYnkgYHVzZXJgIGluIGFzY2VuZGluZyBvcmRlciBhbmQgYnkgYGFnZWAgaW4gZGVzY2VuZGluZyBvcmRlci5cbiAgICAgKiBfLm9yZGVyQnkodXNlcnMsIFsndXNlcicsICdhZ2UnXSwgWydhc2MnLCAnZGVzYyddKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNl0sIFsnYmFybmV5JywgMzRdLCBbJ2ZyZWQnLCA0OF0sIFsnZnJlZCcsIDQwXV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzLCBndWFyZCkge1xuICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoIWlzQXJyYXkoaXRlcmF0ZWVzKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBpdGVyYXRlZXMgPT0gbnVsbCA/IFtdIDogW2l0ZXJhdGVlc107XG4gICAgICB9XG4gICAgICBvcmRlcnMgPSBndWFyZCA/IHVuZGVmaW5lZCA6IG9yZGVycztcbiAgICAgIGlmICghaXNBcnJheShvcmRlcnMpKSB7XG4gICAgICAgIG9yZGVycyA9IG9yZGVycyA9PSBudWxsID8gW10gOiBbb3JkZXJzXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cyBzcGxpdCBpbnRvIHR3byBncm91cHMsIHRoZSBmaXJzdCBvZiB3aGljaFxuICAgICAqIGNvbnRhaW5zIGVsZW1lbnRzIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciwgdGhlIHNlY29uZCBvZiB3aGljaFxuICAgICAqIGNvbnRhaW5zIGVsZW1lbnRzIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5IGZvci4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2ZyZWQnXSwgWydiYXJuZXknLCAncGViYmxlcyddXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ3BlYmJsZXMnXSwgWydiYXJuZXknLCAnZnJlZCddXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgJ3BlYmJsZXMnXSwgWydmcmVkJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2ZyZWQnXSwgWydiYXJuZXknLCAncGViYmxlcyddXVxuICAgICAqL1xuICAgIHZhciBwYXJ0aXRpb24gPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgcmVzdWx0W2tleSA/IDAgOiAxXS5wdXNoKHZhbHVlKTtcbiAgICB9LCBmdW5jdGlvbigpIHsgcmV0dXJuIFtbXSwgW11dOyB9KTtcblxuICAgIC8qKlxuICAgICAqIFJlZHVjZXMgYGNvbGxlY3Rpb25gIHRvIGEgdmFsdWUgd2hpY2ggaXMgdGhlIGFjY3VtdWxhdGVkIHJlc3VsdCBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAsIHdoZXJlIGVhY2ggc3VjY2Vzc2l2ZVxuICAgICAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuIElmIGBhY2N1bXVsYXRvcmBcbiAgICAgKiBpcyBub3QgZ2l2ZW4sIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCBpcyB1c2VkIGFzIHRoZSBpbml0aWFsXG4gICAgICogdmFsdWUuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6XG4gICAgICogKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICAgICAqIGBfLnJlZHVjZWAsIGBfLnJlZHVjZVJpZ2h0YCwgYW5kIGBfLnRyYW5zZm9ybWAuXG4gICAgICpcbiAgICAgKiBUaGUgZ3VhcmRlZCBtZXRob2RzIGFyZTpcbiAgICAgKiBgYXNzaWduYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBpbmNsdWRlc2AsIGBtZXJnZWAsIGBvcmRlckJ5YCxcbiAgICAgKiBhbmQgYHNvcnRCeWBcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLnJlZHVjZVJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmVkdWNlKFsxLCAyXSwgZnVuY3Rpb24oc3VtLCBuKSB7XG4gICAgICogICByZXR1cm4gc3VtICsgbjtcbiAgICAgKiB9LCAwKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnJlZHVjZSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICogICAocmVzdWx0W3ZhbHVlXSB8fCAocmVzdWx0W3ZhbHVlXSA9IFtdKSkucHVzaChrZXkpO1xuICAgICAqICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgKiB9LCB7fSk7XG4gICAgICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5UmVkdWNlIDogYmFzZVJlZHVjZSxcbiAgICAgICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5yZWR1Y2VgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBgY29sbGVjdGlvbmAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8ucmVkdWNlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFtbMCwgMV0sIFsyLCAzXSwgWzQsIDVdXTtcbiAgICAgKlxuICAgICAqIF8ucmVkdWNlUmlnaHQoYXJyYXksIGZ1bmN0aW9uKGZsYXR0ZW5lZCwgb3RoZXIpIHtcbiAgICAgKiAgIHJldHVybiBmbGF0dGVuZWQuY29uY2F0KG90aGVyKTtcbiAgICAgKiB9LCBbXSk7XG4gICAgICogLy8gPT4gWzQsIDUsIDIsIDMsIDAsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVkdWNlUmlnaHQoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVJlZHVjZVJpZ2h0IDogYmFzZVJlZHVjZSxcbiAgICAgICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaFJpZ2h0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8uZmlsdGVyYDsgdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gXG4gICAgICogdGhhdCBgcHJlZGljYXRlYCBkb2VzICoqbm90KiogcmV0dXJuIHRydXRoeSBmb3IuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAgICogQHNlZSBfLmZpbHRlclxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnJlamVjdCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnJlamVjdCh1c2VycywgeyAnYWdlJzogNDAsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnJlamVjdCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnJlamVjdCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWplY3QoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUZpbHRlciA6IGJhc2VGaWx0ZXI7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSByYW5kb20gZWxlbWVudCBmcm9tIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zYW1wbGUoWzEsIDIsIDMsIDRdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2FtcGxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U2FtcGxlIDogYmFzZVNhbXBsZTtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYG5gIHJhbmRvbSBlbGVtZW50cyBhdCB1bmlxdWUga2V5cyBmcm9tIGBjb2xsZWN0aW9uYCB1cCB0byB0aGVcbiAgICAgKiBzaXplIG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNhbXBsZVNpemUoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMywgMV1cbiAgICAgKlxuICAgICAqIF8uc2FtcGxlU2l6ZShbMSwgMiwgM10sIDQpO1xuICAgICAqIC8vID0+IFsyLCAzLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNhbXBsZVNpemUoY29sbGVjdGlvbiwgbiwgZ3VhcmQpIHtcbiAgICAgIGlmICgoZ3VhcmQgPyBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBuLCBndWFyZCkgOiBuID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIG4gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIH1cbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U2FtcGxlU2l6ZSA6IGJhc2VTYW1wbGVTaXplO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBzaHVmZmxlZCB2YWx1ZXMsIHVzaW5nIGEgdmVyc2lvbiBvZiB0aGVcbiAgICAgKiBbRmlzaGVyLVlhdGVzIHNodWZmbGVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Zpc2hlci1ZYXRlc19zaHVmZmxlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2h1ZmZsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzaHVmZmxlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zaHVmZmxlKFsxLCAyLCAzLCA0XSk7XG4gICAgICogLy8gPT4gWzQsIDEsIDMsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2h1ZmZsZShjb2xsZWN0aW9uKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNodWZmbGUgOiBiYXNlU2h1ZmZsZTtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNpemUgb2YgYGNvbGxlY3Rpb25gIGJ5IHJldHVybmluZyBpdHMgbGVuZ3RoIGZvciBhcnJheS1saWtlXG4gICAgICogdmFsdWVzIG9yIHRoZSBudW1iZXIgb2Ygb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgZm9yIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fHN0cmluZ30gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbGxlY3Rpb24gc2l6ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zaXplKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy5zaXplKHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gMlxuICAgICAqXG4gICAgICogXy5zaXplKCdwZWJibGVzJyk7XG4gICAgICogLy8gPT4gN1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNpemUoY29sbGVjdGlvbikge1xuICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIGlmIChpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgICByZXR1cm4gaXNTdHJpbmcoY29sbGVjdGlvbikgPyBzdHJpbmdTaXplKGNvbGxlY3Rpb24pIDogY29sbGVjdGlvbi5sZW5ndGg7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gZ2V0VGFnKGNvbGxlY3Rpb24pO1xuICAgICAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5zaXplO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VLZXlzKGNvbGxlY3Rpb24pLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yICoqYW55KiogZWxlbWVudCBvZiBgY29sbGVjdGlvbmAuXG4gICAgICogSXRlcmF0aW9uIGlzIHN0b3BwZWQgb25jZSBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvbWUoW251bGwsIDAsICd5ZXMnLCBmYWxzZV0sIEJvb2xlYW4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb21lKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb21lKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvbWUoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTb21lIDogYmFzZVNvbWU7XG4gICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkpIHtcbiAgICAgICAgcHJlZGljYXRlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cywgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSB0aGUgcmVzdWx0cyBvZlxuICAgICAqIHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGEgY29sbGVjdGlvbiB0aHJ1IGVhY2ggaXRlcmF0ZWUuIFRoaXMgbWV0aG9kXG4gICAgICogcGVyZm9ybXMgYSBzdGFibGUgc29ydCwgdGhhdCBpcywgaXQgcHJlc2VydmVzIHRoZSBvcmlnaW5hbCBzb3J0IG9yZGVyIG9mXG4gICAgICogZXF1YWwgZWxlbWVudHMuIFRoZSBpdGVyYXRlZXMgYXJlIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQ4IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogMzAgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM0IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5zb3J0QnkodXNlcnMsIFtmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXI7IH1dKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNl0sIFsnYmFybmV5JywgMzRdLCBbJ2ZyZWQnLCA0OF0sIFsnZnJlZCcsIDMwXV1cbiAgICAgKlxuICAgICAqIF8uc29ydEJ5KHVzZXJzLCBbJ3VzZXInLCAnYWdlJ10pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM0XSwgWydiYXJuZXknLCAzNl0sIFsnZnJlZCcsIDMwXSwgWydmcmVkJywgNDhdXVxuICAgICAqL1xuICAgIHZhciBzb3J0QnkgPSBiYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZXMpIHtcbiAgICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IGl0ZXJhdGVlcy5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoID4gMSAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSkpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gW107XG4gICAgICB9IGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaXNJdGVyYXRlZUNhbGwoaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0sIGl0ZXJhdGVlc1syXSkpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gW2l0ZXJhdGVlc1swXV07XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgYmFzZUZsYXR0ZW4oaXRlcmF0ZWVzLCAxKSwgW10pO1xuICAgIH0pO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gICAgICogdGhlIFVuaXggZXBvY2ggKDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgRGF0ZVxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVzdGFtcC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICAgICAqICAgY29uc29sZS5sb2coXy5ub3coKSAtIHN0YW1wKTtcbiAgICAgKiB9LCBfLm5vdygpKTtcbiAgICAgKiAvLyA9PiBMb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBpbnZvY2F0aW9uLlxuICAgICAqL1xuICAgIHZhciBub3cgPSBjdHhOb3cgfHwgZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gcm9vdC5EYXRlLm5vdygpO1xuICAgIH07XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8uYmVmb3JlYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlc1xuICAgICAqIGBmdW5jYCBvbmNlIGl0J3MgY2FsbGVkIGBuYCBvciBtb3JlIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiBjYWxscyBiZWZvcmUgYGZ1bmNgIGlzIGludm9rZWQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVzdHJpY3RlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHNhdmVzID0gWydwcm9maWxlJywgJ3NldHRpbmdzJ107XG4gICAgICpcbiAgICAgKiB2YXIgZG9uZSA9IF8uYWZ0ZXIoc2F2ZXMubGVuZ3RoLCBmdW5jdGlvbigpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKCdkb25lIHNhdmluZyEnKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIF8uZm9yRWFjaChzYXZlcywgZnVuY3Rpb24odHlwZSkge1xuICAgICAqICAgYXN5bmNTYXZlKHsgJ3R5cGUnOiB0eXBlLCAnY29tcGxldGUnOiBkb25lIH0pO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2RvbmUgc2F2aW5nIScgYWZ0ZXIgdGhlIHR3byBhc3luYyBzYXZlcyBoYXZlIGNvbXBsZXRlZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhZnRlcihuLCBmdW5jKSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoLS1uIDwgMSkge1xuICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2AsIHdpdGggdXAgdG8gYG5gIGFyZ3VtZW50cyxcbiAgICAgKiBpZ25vcmluZyBhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249ZnVuYy5sZW5ndGhdIFRoZSBhcml0eSBjYXAuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnNicsICc4JywgJzEwJ10sIF8uYXJ5KHBhcnNlSW50LCAxKSk7XG4gICAgICogLy8gPT4gWzYsIDgsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFyeShmdW5jLCBuLCBndWFyZCkge1xuICAgICAgbiA9IGd1YXJkID8gdW5kZWZpbmVkIDogbjtcbiAgICAgIG4gPSAoZnVuYyAmJiBuID09IG51bGwpID8gZnVuYy5sZW5ndGggOiBuO1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9BUllfRkxBRywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCwgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgYW5kIGFyZ3VtZW50c1xuICAgICAqIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLCB3aGlsZSBpdCdzIGNhbGxlZCBsZXNzIHRoYW4gYG5gIHRpbWVzLiBTdWJzZXF1ZW50XG4gICAgICogY2FsbHMgdG8gdGhlIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgIGludm9jYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGNhbGxzIGF0IHdoaWNoIGBmdW5jYCBpcyBubyBsb25nZXIgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgXy5iZWZvcmUoNSwgYWRkQ29udGFjdFRvTGlzdCkpO1xuICAgICAqIC8vID0+IEFsbG93cyBhZGRpbmcgdXAgdG8gNCBjb250YWN0cyB0byB0aGUgbGlzdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiZWZvcmUobiwgZnVuYykge1xuICAgICAgdmFyIHJlc3VsdDtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICgtLW4gPiAwKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuIDw9IDEpIHtcbiAgICAgICAgICBmdW5jID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYFxuICAgICAqIGFuZCBgcGFydGlhbHNgIHByZXBlbmRlZCB0byB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogVGhlIGBfLmJpbmQucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpYyBidWlsZHMsXG4gICAgICogbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBuYXRpdmUgYEZ1bmN0aW9uI2JpbmRgLCB0aGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIlxuICAgICAqIHByb3BlcnR5IG9mIGJvdW5kIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGJpbmQuXG4gICAgICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYm91bmQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBwdW5jdHVhdGlvbikge1xuICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgdGhpcy51c2VyICsgcHVuY3R1YXRpb247XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ3VzZXInOiAnZnJlZCcgfTtcbiAgICAgKlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZChncmVldCwgb2JqZWN0LCAnaGknKTtcbiAgICAgKiBib3VuZCgnIScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkISdcbiAgICAgKlxuICAgICAqIC8vIEJvdW5kIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZChncmVldCwgb2JqZWN0LCBfLCAnIScpO1xuICAgICAqIGJvdW5kKCdoaScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkISdcbiAgICAgKi9cbiAgICB2YXIgYmluZCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHRoaXNBcmcsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgYml0bWFzayA9IFdSQVBfQklORF9GTEFHO1xuICAgICAgaWYgKHBhcnRpYWxzLmxlbmd0aCkge1xuICAgICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIoYmluZCkpO1xuICAgICAgICBiaXRtYXNrIHw9IFdSQVBfUEFSVElBTF9GTEFHO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgbWV0aG9kIGF0IGBvYmplY3Rba2V5XWAgd2l0aCBgcGFydGlhbHNgXG4gICAgICogcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gYF8uYmluZGAgYnkgYWxsb3dpbmcgYm91bmQgZnVuY3Rpb25zIHRvIHJlZmVyZW5jZVxuICAgICAqIG1ldGhvZHMgdGhhdCBtYXkgYmUgcmVkZWZpbmVkIG9yIGRvbid0IHlldCBleGlzdC4gU2VlXG4gICAgICogW1BldGVyIE1pY2hhdXgncyBhcnRpY2xlXShodHRwOi8vcGV0ZXIubWljaGF1eC5jYS9hcnRpY2xlcy9sYXp5LWZ1bmN0aW9uLWRlZmluaXRpb24tcGF0dGVybilcbiAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqXG4gICAgICogVGhlIGBfLmJpbmRLZXkucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnZva2UgdGhlIG1ldGhvZCBvbi5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBib3VuZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHtcbiAgICAgKiAgICd1c2VyJzogJ2ZyZWQnLFxuICAgICAqICAgJ2dyZWV0JzogZnVuY3Rpb24oZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICAgIHJldHVybiBncmVldGluZyArICcgJyArIHRoaXMudXNlciArIHB1bmN0dWF0aW9uO1xuICAgICAqICAgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiB2YXIgYm91bmQgPSBfLmJpbmRLZXkob2JqZWN0LCAnZ3JlZXQnLCAnaGknKTtcbiAgICAgKiBib3VuZCgnIScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkISdcbiAgICAgKlxuICAgICAqIG9iamVjdC5ncmVldCA9IGZ1bmN0aW9uKGdyZWV0aW5nLCBwdW5jdHVhdGlvbikge1xuICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJ3lhICcgKyB0aGlzLnVzZXIgKyBwdW5jdHVhdGlvbjtcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogYm91bmQoJyEnKTtcbiAgICAgKiAvLyA9PiAnaGl5YSBmcmVkISdcbiAgICAgKlxuICAgICAqIC8vIEJvdW5kIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZEtleShvYmplY3QsICdncmVldCcsIF8sICchJyk7XG4gICAgICogYm91bmQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpeWEgZnJlZCEnXG4gICAgICovXG4gICAgdmFyIGJpbmRLZXkgPSBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIGtleSwgcGFydGlhbHMpIHtcbiAgICAgIHZhciBiaXRtYXNrID0gV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX0JJTkRfS0VZX0ZMQUc7XG4gICAgICBpZiAocGFydGlhbHMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihiaW5kS2V5KSk7XG4gICAgICAgIGJpdG1hc2sgfD0gV1JBUF9QQVJUSUFMX0ZMQUc7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChrZXksIGJpdG1hc2ssIG9iamVjdCwgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhcmd1bWVudHMgb2YgYGZ1bmNgIGFuZCBlaXRoZXIgaW52b2tlc1xuICAgICAqIGBmdW5jYCByZXR1cm5pbmcgaXRzIHJlc3VsdCwgaWYgYXQgbGVhc3QgYGFyaXR5YCBudW1iZXIgb2YgYXJndW1lbnRzIGhhdmVcbiAgICAgKiBiZWVuIHByb3ZpZGVkLCBvciByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSByZW1haW5pbmcgYGZ1bmNgXG4gICAgICogYXJndW1lbnRzLCBhbmQgc28gb24uIFRoZSBhcml0eSBvZiBgZnVuY2AgbWF5IGJlIHNwZWNpZmllZCBpZiBgZnVuYy5sZW5ndGhgXG4gICAgICogaXMgbm90IHN1ZmZpY2llbnQuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uY3VycnkucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpYyBidWlsZHMsXG4gICAgICogbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIGN1cnJpZWQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY3VycnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eT1mdW5jLmxlbmd0aF0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhYmMgPSBmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICogICByZXR1cm4gW2EsIGIsIGNdO1xuICAgICAqIH07XG4gICAgICpcbiAgICAgKiB2YXIgY3VycmllZCA9IF8uY3VycnkoYWJjKTtcbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSkoMikoMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEsIDIpKDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgxLCAyLCAzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIC8vIEN1cnJpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogY3VycmllZCgxKShfLCAzKSgyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXJyeShmdW5jLCBhcml0eSwgZ3VhcmQpIHtcbiAgICAgIGFyaXR5ID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBhcml0eTtcbiAgICAgIHZhciByZXN1bHQgPSBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfQ1VSUllfRkxBRywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGFyaXR5KTtcbiAgICAgIHJlc3VsdC5wbGFjZWhvbGRlciA9IGN1cnJ5LnBsYWNlaG9sZGVyO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmN1cnJ5YCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYXJlIGFwcGxpZWQgdG8gYGZ1bmNgXG4gICAgICogaW4gdGhlIG1hbm5lciBvZiBgXy5wYXJ0aWFsUmlnaHRgIGluc3RlYWQgb2YgYF8ucGFydGlhbGAuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uY3VycnlSaWdodC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgY3VycmllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjdXJyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5PWZ1bmMubGVuZ3RoXSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFiYyA9IGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBjdXJyaWVkID0gXy5jdXJyeVJpZ2h0KGFiYyk7XG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDMpKDIpKDEpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgyLCAzKSgxKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSwgMiwgMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiAvLyBDdXJyaWVkIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIGN1cnJpZWQoMykoMSwgXykoMik7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VycnlSaWdodChmdW5jLCBhcml0eSwgZ3VhcmQpIHtcbiAgICAgIGFyaXR5ID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBhcml0eTtcbiAgICAgIHZhciByZXN1bHQgPSBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfQ1VSUllfUklHSFRfRkxBRywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGFyaXR5KTtcbiAgICAgIHJlc3VsdC5wbGFjZWhvbGRlciA9IGN1cnJ5UmlnaHQucGxhY2Vob2xkZXI7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBkZWJvdW5jZWQgZnVuY3Rpb24gdGhhdCBkZWxheXMgaW52b2tpbmcgYGZ1bmNgIHVudGlsIGFmdGVyIGB3YWl0YFxuICAgICAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICAgICAqIGludm9rZWQuIFRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgIG1ldGhvZCB0byBjYW5jZWxcbiAgICAgKiBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0byBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS5cbiAgICAgKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAgICAgKiBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGAgdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbi4gU3Vic2VxdWVudFxuICAgICAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gICAgICogaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIGRlYm91bmNlZCBmdW5jdGlvblxuICAgICAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAgICAgKlxuICAgICAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICAgICAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAgICAgKlxuICAgICAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICAgICAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8uZGVib3VuY2VgIGFuZCBgXy50aHJvdHRsZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWJvdW5jZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPWZhbHNlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm1heFdhaXRdXG4gICAgICogIFRoZSBtYXhpbXVtIHRpbWUgYGZ1bmNgIGlzIGFsbG93ZWQgdG8gYmUgZGVsYXllZCBiZWZvcmUgaXQncyBpbnZva2VkLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAgICAgKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBkZWJvdW5jZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIEF2b2lkIGNvc3RseSBjYWxjdWxhdGlvbnMgd2hpbGUgdGhlIHdpbmRvdyBzaXplIGlzIGluIGZsdXguXG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAgICAgKlxuICAgICAqIC8vIEludm9rZSBgc2VuZE1haWxgIHdoZW4gY2xpY2tlZCwgZGVib3VuY2luZyBzdWJzZXF1ZW50IGNhbGxzLlxuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAgICAgKiAgICdsZWFkaW5nJzogdHJ1ZSxcbiAgICAgKiAgICd0cmFpbGluZyc6IGZhbHNlXG4gICAgICogfSkpO1xuICAgICAqXG4gICAgICogLy8gRW5zdXJlIGBiYXRjaExvZ2AgaXMgaW52b2tlZCBvbmNlIGFmdGVyIDEgc2Vjb25kIG9mIGRlYm91bmNlZCBjYWxscy5cbiAgICAgKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAgICAgKiB2YXIgc291cmNlID0gbmV3IEV2ZW50U291cmNlKCcvc3RyZWFtJyk7XG4gICAgICogalF1ZXJ5KHNvdXJjZSkub24oJ21lc3NhZ2UnLCBkZWJvdW5jZWQpO1xuICAgICAqXG4gICAgICogLy8gQ2FuY2VsIHRoZSB0cmFpbGluZyBkZWJvdW5jZWQgaW52b2NhdGlvbi5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbigncG9wc3RhdGUnLCBkZWJvdW5jZWQuY2FuY2VsKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkZWJvdW5jZShmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gICAgICB2YXIgbGFzdEFyZ3MsXG4gICAgICAgICAgbGFzdFRoaXMsXG4gICAgICAgICAgbWF4V2FpdCxcbiAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgdGltZXJJZCxcbiAgICAgICAgICBsYXN0Q2FsbFRpbWUsXG4gICAgICAgICAgbGFzdEludm9rZVRpbWUgPSAwLFxuICAgICAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgICAgICBtYXhpbmcgPSBmYWxzZSxcbiAgICAgICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIGxlYWRpbmcgPSAhIW9wdGlvbnMubGVhZGluZztcbiAgICAgICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgICAgIG1heFdhaXQgPSBtYXhpbmcgPyBuYXRpdmVNYXgodG9OdW1iZXIob3B0aW9ucy5tYXhXYWl0KSB8fCAwLCB3YWl0KSA6IG1heFdhaXQ7XG4gICAgICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGludm9rZUZ1bmModGltZSkge1xuICAgICAgICB2YXIgYXJncyA9IGxhc3RBcmdzLFxuICAgICAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgICAgIGxhc3RBcmdzID0gbGFzdFRoaXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgICAgICAvLyBSZXNldCBhbnkgYG1heFdhaXRgIHRpbWVyLlxuICAgICAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgIC8vIEludm9rZSB0aGUgbGVhZGluZyBlZGdlLlxuICAgICAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHJlbWFpbmluZ1dhaXQodGltZSkge1xuICAgICAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZSxcbiAgICAgICAgICAgIHRpbWVXYWl0aW5nID0gd2FpdCAtIHRpbWVTaW5jZUxhc3RDYWxsO1xuXG4gICAgICAgIHJldHVybiBtYXhpbmdcbiAgICAgICAgICA/IG5hdGl2ZU1pbih0aW1lV2FpdGluZywgbWF4V2FpdCAtIHRpbWVTaW5jZUxhc3RJbnZva2UpXG4gICAgICAgICAgOiB0aW1lV2FpdGluZztcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gc2hvdWxkSW52b2tlKHRpbWUpIHtcbiAgICAgICAgdmFyIHRpbWVTaW5jZUxhc3RDYWxsID0gdGltZSAtIGxhc3RDYWxsVGltZSxcbiAgICAgICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAgICAgLy8gRWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwsIGFjdGl2aXR5IGhhcyBzdG9wcGVkIGFuZCB3ZSdyZSBhdCB0aGVcbiAgICAgICAgLy8gdHJhaWxpbmcgZWRnZSwgdGhlIHN5c3RlbSB0aW1lIGhhcyBnb25lIGJhY2t3YXJkcyBhbmQgd2UncmUgdHJlYXRpbmdcbiAgICAgICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgICAgICByZXR1cm4gKGxhc3RDYWxsVGltZSA9PT0gdW5kZWZpbmVkIHx8ICh0aW1lU2luY2VMYXN0Q2FsbCA+PSB3YWl0KSB8fFxuICAgICAgICAgICh0aW1lU2luY2VMYXN0Q2FsbCA8IDApIHx8IChtYXhpbmcgJiYgdGltZVNpbmNlTGFzdEludm9rZSA+PSBtYXhXYWl0KSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHRpbWVyRXhwaXJlZCgpIHtcbiAgICAgICAgdmFyIHRpbWUgPSBub3coKTtcbiAgICAgICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgICAgIHJldHVybiB0cmFpbGluZ0VkZ2UodGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgcmVtYWluaW5nV2FpdCh0aW1lKSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgICAgIHRpbWVySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gT25seSBpbnZva2UgaWYgd2UgaGF2ZSBgbGFzdEFyZ3NgIHdoaWNoIG1lYW5zIGBmdW5jYCBoYXMgYmVlblxuICAgICAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICAgICAgaWYgKHRyYWlsaW5nICYmIGxhc3RBcmdzKSB7XG4gICAgICAgICAgcmV0dXJuIGludm9rZUZ1bmModGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgICAgICBpZiAodGltZXJJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RJbnZva2VUaW1lID0gMDtcbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgICAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZGVib3VuY2VkKCkge1xuICAgICAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICAgICAgaXNJbnZva2luZyA9IHNob3VsZEludm9rZSh0aW1lKTtcblxuICAgICAgICBsYXN0QXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgICAgICBsYXN0Q2FsbFRpbWUgPSB0aW1lO1xuXG4gICAgICAgIGlmIChpc0ludm9raW5nKSB7XG4gICAgICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGxlYWRpbmdFZGdlKGxhc3RDYWxsVGltZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBpbnZvY2F0aW9ucyBpbiBhIHRpZ2h0IGxvb3AuXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICAgICAgcmV0dXJuIGludm9rZUZ1bmMobGFzdENhbGxUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGRlYm91bmNlZC5jYW5jZWwgPSBjYW5jZWw7XG4gICAgICBkZWJvdW5jZWQuZmx1c2ggPSBmbHVzaDtcbiAgICAgIHJldHVybiBkZWJvdW5jZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmZXJzIGludm9raW5nIHRoZSBgZnVuY2AgdW50aWwgdGhlIGN1cnJlbnQgY2FsbCBzdGFjayBoYXMgY2xlYXJlZC4gQW55XG4gICAgICogYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlIHByb3ZpZGVkIHRvIGBmdW5jYCB3aGVuIGl0J3MgaW52b2tlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlZmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVyIGlkLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmVyKGZ1bmN0aW9uKHRleHQpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHRleHQpO1xuICAgICAqIH0sICdkZWZlcnJlZCcpO1xuICAgICAqIC8vID0+IExvZ3MgJ2RlZmVycmVkJyBhZnRlciBvbmUgbWlsbGlzZWNvbmQuXG4gICAgICovXG4gICAgdmFyIGRlZmVyID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgYXJncykge1xuICAgICAgcmV0dXJuIGJhc2VEZWxheShmdW5jLCAxLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgYGZ1bmNgIGFmdGVyIGB3YWl0YCBtaWxsaXNlY29uZHMuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmVcbiAgICAgKiBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVyIGlkLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlbGF5KGZ1bmN0aW9uKHRleHQpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHRleHQpO1xuICAgICAqIH0sIDEwMDAsICdsYXRlcicpO1xuICAgICAqIC8vID0+IExvZ3MgJ2xhdGVyJyBhZnRlciBvbmUgc2Vjb25kLlxuICAgICAqL1xuICAgIHZhciBkZWxheSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHdhaXQsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBiYXNlRGVsYXkoZnVuYywgdG9OdW1iZXIod2FpdCkgfHwgMCwgYXJncyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGFyZ3VtZW50cyByZXZlcnNlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGZsaXAgYXJndW1lbnRzIGZvci5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmbGlwcGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZmxpcHBlZCA9IF8uZmxpcChmdW5jdGlvbigpIHtcbiAgICAgKiAgIHJldHVybiBfLnRvQXJyYXkoYXJndW1lbnRzKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGZsaXBwZWQoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgKiAvLyA9PiBbJ2QnLCAnYycsICdiJywgJ2EnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsaXAoZnVuYykge1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9GTElQX0ZMQUcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gICAgICogcHJvdmlkZWQsIGl0IGRldGVybWluZXMgdGhlIGNhY2hlIGtleSBmb3Igc3RvcmluZyB0aGUgcmVzdWx0IGJhc2VkIG9uIHRoZVxuICAgICAqIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uIEJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBhcmd1bWVudFxuICAgICAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gICAgICogZnVuY3Rpb24uIEl0cyBjcmVhdGlvbiBtYXkgYmUgY3VzdG9taXplZCBieSByZXBsYWNpbmcgdGhlIGBfLm1lbW9pemUuQ2FjaGVgXG4gICAgICogY29uc3RydWN0b3Igd2l0aCBvbmUgd2hvc2UgaW5zdGFuY2VzIGltcGxlbWVudCB0aGVcbiAgICAgKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICAgICAqIG1ldGhvZCBpbnRlcmZhY2Ugb2YgYGNsZWFyYCwgYGRlbGV0ZWAsIGBnZXRgLCBgaGFzYCwgYW5kIGBzZXRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtyZXNvbHZlcl0gVGhlIGZ1bmN0aW9uIHRvIHJlc29sdmUgdGhlIGNhY2hlIGtleS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdjJzogMywgJ2QnOiA0IH07XG4gICAgICpcbiAgICAgKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIHZhbHVlcyhvdGhlcik7XG4gICAgICogLy8gPT4gWzMsIDRdXG4gICAgICpcbiAgICAgKiBvYmplY3QuYSA9IDI7XG4gICAgICogdmFsdWVzKG9iamVjdCk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiAvLyBNb2RpZnkgdGhlIHJlc3VsdCBjYWNoZS5cbiAgICAgKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICogdmFsdWVzKG9iamVjdCk7XG4gICAgICogLy8gPT4gWydhJywgJ2InXVxuICAgICAqXG4gICAgICogLy8gUmVwbGFjZSBgXy5tZW1vaXplLkNhY2hlYC5cbiAgICAgKiBfLm1lbW9pemUuQ2FjaGUgPSBXZWFrTWFwO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lbW9pemUoZnVuYywgcmVzb2x2ZXIpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nIHx8IChyZXNvbHZlciAhPSBudWxsICYmIHR5cGVvZiByZXNvbHZlciAhPSAnZnVuY3Rpb24nKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICBrZXkgPSByZXNvbHZlciA/IHJlc29sdmVyLmFwcGx5KHRoaXMsIGFyZ3MpIDogYXJnc1swXSxcbiAgICAgICAgICAgIGNhY2hlID0gbWVtb2l6ZWQuY2FjaGU7XG5cbiAgICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhY2hlLmdldChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICBtZW1vaXplZC5jYWNoZSA9IGNhY2hlLnNldChrZXksIHJlc3VsdCkgfHwgY2FjaGU7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgbWVtb2l6ZWQuY2FjaGUgPSBuZXcgKG1lbW9pemUuQ2FjaGUgfHwgTWFwQ2FjaGUpO1xuICAgICAgcmV0dXJuIG1lbW9pemVkO1xuICAgIH1cblxuICAgIC8vIEV4cG9zZSBgTWFwQ2FjaGVgLlxuICAgIG1lbW9pemUuQ2FjaGUgPSBNYXBDYWNoZTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG5lZ2F0ZXMgdGhlIHJlc3VsdCBvZiB0aGUgcHJlZGljYXRlIGBmdW5jYC4gVGhlXG4gICAgICogYGZ1bmNgIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlXG4gICAgICogY3JlYXRlZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgcHJlZGljYXRlIHRvIG5lZ2F0ZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBuZWdhdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBpc0V2ZW4obikge1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5maWx0ZXIoWzEsIDIsIDMsIDQsIDUsIDZdLCBfLm5lZ2F0ZShpc0V2ZW4pKTtcbiAgICAgKiAvLyA9PiBbMSwgMywgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBuZWdhdGUocHJlZGljYXRlKSB7XG4gICAgICBpZiAodHlwZW9mIHByZWRpY2F0ZSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDA6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcyk7XG4gICAgICAgICAgY2FzZSAxOiByZXR1cm4gIXByZWRpY2F0ZS5jYWxsKHRoaXMsIGFyZ3NbMF0pO1xuICAgICAgICAgIGNhc2UgMjogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFwcmVkaWNhdGUuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGlzIHJlc3RyaWN0ZWQgdG8gaW52b2tpbmcgYGZ1bmNgIG9uY2UuIFJlcGVhdCBjYWxsc1xuICAgICAqIHRvIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBpbnZvY2F0aW9uLiBUaGUgYGZ1bmNgIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVzdHJpY3RlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGluaXRpYWxpemUgPSBfLm9uY2UoY3JlYXRlQXBwbGljYXRpb24pO1xuICAgICAqIGluaXRpYWxpemUoKTtcbiAgICAgKiBpbml0aWFsaXplKCk7XG4gICAgICogLy8gPT4gYGNyZWF0ZUFwcGxpY2F0aW9uYCBpcyBpbnZva2VkIG9uY2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbmNlKGZ1bmMpIHtcbiAgICAgIHJldHVybiBiZWZvcmUoMiwgZnVuYyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnRzIHRyYW5zZm9ybWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW3RyYW5zZm9ybXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgYXJndW1lbnQgdHJhbnNmb3Jtcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZG91YmxlZChuKSB7XG4gICAgICogICByZXR1cm4gbiAqIDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ub3ZlckFyZ3MoZnVuY3Rpb24oeCwgeSkge1xuICAgICAqICAgcmV0dXJuIFt4LCB5XTtcbiAgICAgKiB9LCBbc3F1YXJlLCBkb3VibGVkXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKDksIDMpO1xuICAgICAqIC8vID0+IFs4MSwgNl1cbiAgICAgKlxuICAgICAqIGZ1bmMoMTAsIDUpO1xuICAgICAqIC8vID0+IFsxMDAsIDEwXVxuICAgICAqL1xuICAgIHZhciBvdmVyQXJncyA9IGNhc3RSZXN0KGZ1bmN0aW9uKGZ1bmMsIHRyYW5zZm9ybXMpIHtcbiAgICAgIHRyYW5zZm9ybXMgPSAodHJhbnNmb3Jtcy5sZW5ndGggPT0gMSAmJiBpc0FycmF5KHRyYW5zZm9ybXNbMF0pKVxuICAgICAgICA/IGFycmF5TWFwKHRyYW5zZm9ybXNbMF0sIGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSlcbiAgICAgICAgOiBhcnJheU1hcChiYXNlRmxhdHRlbih0cmFuc2Zvcm1zLCAxKSwgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKTtcblxuICAgICAgdmFyIGZ1bmNzTGVuZ3RoID0gdHJhbnNmb3Jtcy5sZW5ndGg7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1pbihhcmdzLmxlbmd0aCwgZnVuY3NMZW5ndGgpO1xuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJnc1tpbmRleF0gPSB0cmFuc2Zvcm1zW2luZGV4XS5jYWxsKHRoaXMsIGFyZ3NbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgYXJncyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhlXG4gICAgICogYXJndW1lbnRzIGl0IHJlY2VpdmVzLiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmJpbmRgIGV4Y2VwdCBpdCBkb2VzICoqbm90KipcbiAgICAgKiBhbHRlciB0aGUgYHRoaXNgIGJpbmRpbmcuXG4gICAgICpcbiAgICAgKiBUaGUgYF8ucGFydGlhbC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgcGFydGlhbGx5XG4gICAgICogYXBwbGllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBwYXJ0aWFsbHkgYXBwbHkgYXJndW1lbnRzIHRvLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHBhcnRpYWxseSBhcHBsaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBncmVldChncmVldGluZywgbmFtZSkge1xuICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgbmFtZTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgc2F5SGVsbG9UbyA9IF8ucGFydGlhbChncmVldCwgJ2hlbGxvJyk7XG4gICAgICogc2F5SGVsbG9UbygnZnJlZCcpO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkJ1xuICAgICAqXG4gICAgICogLy8gUGFydGlhbGx5IGFwcGxpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGdyZWV0RnJlZCA9IF8ucGFydGlhbChncmVldCwgXywgJ2ZyZWQnKTtcbiAgICAgKiBncmVldEZyZWQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQnXG4gICAgICovXG4gICAgdmFyIHBhcnRpYWwgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKHBhcnRpYWwpKTtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfUEFSVElBTF9GTEFHLCB1bmRlZmluZWQsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucGFydGlhbGAgZXhjZXB0IHRoYXQgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzXG4gICAgICogYXJlIGFwcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8ucGFydGlhbFJpZ2h0LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBwYXJ0aWFsbHlcbiAgICAgKiBhcHBsaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHBhcnRpYWxseSBhcHBseSBhcmd1bWVudHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFydGlhbGx5IGFwcGxpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBuYW1lKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyBuYW1lO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBncmVldEZyZWQgPSBfLnBhcnRpYWxSaWdodChncmVldCwgJ2ZyZWQnKTtcbiAgICAgKiBncmVldEZyZWQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBQYXJ0aWFsbHkgYXBwbGllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgc2F5SGVsbG9UbyA9IF8ucGFydGlhbFJpZ2h0KGdyZWV0LCAnaGVsbG8nLCBfKTtcbiAgICAgKiBzYXlIZWxsb1RvKCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQnXG4gICAgICovXG4gICAgdmFyIHBhcnRpYWxSaWdodCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIocGFydGlhbFJpZ2h0KSk7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRywgdW5kZWZpbmVkLCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGFyZ3VtZW50cyBhcnJhbmdlZCBhY2NvcmRpbmdcbiAgICAgKiB0byB0aGUgc3BlY2lmaWVkIGBpbmRleGVzYCB3aGVyZSB0aGUgYXJndW1lbnQgdmFsdWUgYXQgdGhlIGZpcnN0IGluZGV4IGlzXG4gICAgICogcHJvdmlkZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LCB0aGUgYXJndW1lbnQgdmFsdWUgYXQgdGhlIHNlY29uZCBpbmRleCBpc1xuICAgICAqIHByb3ZpZGVkIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlYXJyYW5nZSBhcmd1bWVudHMgZm9yLlxuICAgICAqIEBwYXJhbSB7Li4uKG51bWJlcnxudW1iZXJbXSl9IGluZGV4ZXMgVGhlIGFycmFuZ2VkIGFyZ3VtZW50IGluZGV4ZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciByZWFyZ2VkID0gXy5yZWFyZyhmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICogICByZXR1cm4gW2EsIGIsIGNdO1xuICAgICAqIH0sIFsyLCAwLCAxXSk7XG4gICAgICpcbiAgICAgKiByZWFyZ2VkKCdiJywgJ2MnLCAnYScpXG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICovXG4gICAgdmFyIHJlYXJnID0gZmxhdFJlc3QoZnVuY3Rpb24oZnVuYywgaW5kZXhlcykge1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9SRUFSR19GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBpbmRleGVzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZVxuICAgICAqIGNyZWF0ZWQgZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBmcm9tIGBzdGFydGAgYW5kIGJleW9uZCBwcm92aWRlZCBhc1xuICAgICAqIGFuIGFycmF5LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZVxuICAgICAqIFtyZXN0IHBhcmFtZXRlcl0oaHR0cHM6Ly9tZG4uaW8vcmVzdF9wYXJhbWV0ZXJzKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F5ID0gXy5yZXN0KGZ1bmN0aW9uKHdoYXQsIG5hbWVzKSB7XG4gICAgICogICByZXR1cm4gd2hhdCArICcgJyArIF8uaW5pdGlhbChuYW1lcykuam9pbignLCAnKSArXG4gICAgICogICAgIChfLnNpemUobmFtZXMpID4gMSA/ICcsICYgJyA6ICcnKSArIF8ubGFzdChuYW1lcyk7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBzYXkoJ2hlbGxvJywgJ2ZyZWQnLCAnYmFybmV5JywgJ3BlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVzdChmdW5jLCBzdGFydCkge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSBzdGFydCA9PT0gdW5kZWZpbmVkID8gc3RhcnQgOiB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGVcbiAgICAgKiBjcmVhdGUgZnVuY3Rpb24gYW5kIGFuIGFycmF5IG9mIGFyZ3VtZW50cyBtdWNoIGxpa2VcbiAgICAgKiBbYEZ1bmN0aW9uI2FwcGx5YF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gdGhlXG4gICAgICogW3NwcmVhZCBvcGVyYXRvcl0oaHR0cHM6Ly9tZG4uaW8vc3ByZWFkX29wZXJhdG9yKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHNwcmVhZCBhcmd1bWVudHMgb3Zlci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgc3ByZWFkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F5ID0gXy5zcHJlYWQoZnVuY3Rpb24od2hvLCB3aGF0KSB7XG4gICAgICogICByZXR1cm4gd2hvICsgJyBzYXlzICcgKyB3aGF0O1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogc2F5KFsnZnJlZCcsICdoZWxsbyddKTtcbiAgICAgKiAvLyA9PiAnZnJlZCBzYXlzIGhlbGxvJ1xuICAgICAqXG4gICAgICogdmFyIG51bWJlcnMgPSBQcm9taXNlLmFsbChbXG4gICAgICogICBQcm9taXNlLnJlc29sdmUoNDApLFxuICAgICAqICAgUHJvbWlzZS5yZXNvbHZlKDM2KVxuICAgICAqIF0pO1xuICAgICAqXG4gICAgICogbnVtYmVycy50aGVuKF8uc3ByZWFkKGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgKiAgIHJldHVybiB4ICsgeTtcbiAgICAgKiB9KSk7XG4gICAgICogLy8gPT4gYSBQcm9taXNlIG9mIDc2XG4gICAgICovXG4gICAgZnVuY3Rpb24gc3ByZWFkKGZ1bmMsIHN0YXJ0KSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IHN0YXJ0ID09IG51bGwgPyAwIDogbmF0aXZlTWF4KHRvSW50ZWdlcihzdGFydCksIDApO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgdmFyIGFycmF5ID0gYXJnc1tzdGFydF0sXG4gICAgICAgICAgICBvdGhlckFyZ3MgPSBjYXN0U2xpY2UoYXJncywgMCwgc3RhcnQpO1xuXG4gICAgICAgIGlmIChhcnJheSkge1xuICAgICAgICAgIGFycmF5UHVzaChvdGhlckFyZ3MsIGFycmF5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSB0aHJvdHRsZWQgZnVuY3Rpb24gdGhhdCBvbmx5IGludm9rZXMgYGZ1bmNgIGF0IG1vc3Qgb25jZSBwZXJcbiAgICAgKiBldmVyeSBgd2FpdGAgbWlsbGlzZWNvbmRzLiBUaGUgdGhyb3R0bGVkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYFxuICAgICAqIG1ldGhvZCB0byBjYW5jZWwgZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG9cbiAgICAgKiBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS4gUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2BcbiAgICAgKiBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGUgbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgXG4gICAgICogdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZVxuICAgICAqIHRocm90dGxlZCBmdW5jdGlvbi4gU3Vic2VxdWVudCBjYWxscyB0byB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uIHJldHVybiB0aGVcbiAgICAgKiByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgIGludm9jYXRpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gICAgICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb25cbiAgICAgKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gICAgICpcbiAgICAgKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAgICAgKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gICAgICpcbiAgICAgKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAgICAgKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLnRocm90dGxlYCBhbmQgYF8uZGVib3VuY2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gdGhyb3R0bGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRocm90dGxlIGludm9jYXRpb25zIHRvLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHRocm90dGxlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgZXhjZXNzaXZlbHkgdXBkYXRpbmcgdGhlIHBvc2l0aW9uIHdoaWxlIHNjcm9sbGluZy5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbignc2Nyb2xsJywgXy50aHJvdHRsZSh1cGRhdGVQb3NpdGlvbiwgMTAwKSk7XG4gICAgICpcbiAgICAgKiAvLyBJbnZva2UgYHJlbmV3VG9rZW5gIHdoZW4gdGhlIGNsaWNrIGV2ZW50IGlzIGZpcmVkLCBidXQgbm90IG1vcmUgdGhhbiBvbmNlIGV2ZXJ5IDUgbWludXRlcy5cbiAgICAgKiB2YXIgdGhyb3R0bGVkID0gXy50aHJvdHRsZShyZW5ld1Rva2VuLCAzMDAwMDAsIHsgJ3RyYWlsaW5nJzogZmFsc2UgfSk7XG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIHRocm90dGxlZCk7XG4gICAgICpcbiAgICAgKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIHRocm90dGxlZCBpbnZvY2F0aW9uLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIHRocm90dGxlZC5jYW5jZWwpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRocm90dGxlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBsZWFkaW5nID0gdHJ1ZSxcbiAgICAgICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc09iamVjdChvcHRpb25zKSkge1xuICAgICAgICBsZWFkaW5nID0gJ2xlYWRpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMubGVhZGluZyA6IGxlYWRpbmc7XG4gICAgICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGVib3VuY2UoZnVuYywgd2FpdCwge1xuICAgICAgICAnbGVhZGluZyc6IGxlYWRpbmcsXG4gICAgICAgICdtYXhXYWl0Jzogd2FpdCxcbiAgICAgICAgJ3RyYWlsaW5nJzogdHJhaWxpbmdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdXAgdG8gb25lIGFyZ3VtZW50LCBpZ25vcmluZyBhbnlcbiAgICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXAoWyc2JywgJzgnLCAnMTAnXSwgXy51bmFyeShwYXJzZUludCkpO1xuICAgICAqIC8vID0+IFs2LCA4LCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmFyeShmdW5jKSB7XG4gICAgICByZXR1cm4gYXJ5KGZ1bmMsIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHByb3ZpZGVzIGB2YWx1ZWAgdG8gYHdyYXBwZXJgIGFzIGl0cyBmaXJzdFxuICAgICAqIGFyZ3VtZW50LiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIGZ1bmN0aW9uIGFyZSBhcHBlbmRlZFxuICAgICAqIHRvIHRob3NlIHByb3ZpZGVkIHRvIHRoZSBgd3JhcHBlcmAuIFRoZSB3cmFwcGVyIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgXG4gICAgICogYmluZGluZyBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3dyYXBwZXI9aWRlbnRpdHldIFRoZSB3cmFwcGVyIGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgcCA9IF8ud3JhcChfLmVzY2FwZSwgZnVuY3Rpb24oZnVuYywgdGV4dCkge1xuICAgICAqICAgcmV0dXJuICc8cD4nICsgZnVuYyh0ZXh0KSArICc8L3A+JztcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIHAoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gJzxwPmZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlczwvcD4nXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcCh2YWx1ZSwgd3JhcHBlcikge1xuICAgICAgcmV0dXJuIHBhcnRpYWwoY2FzdEZ1bmN0aW9uKHdyYXBwZXIpLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCBhcyBhbiBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgxKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KHsgJ2EnOiAxIH0pO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSB9XVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoJ2FiYycpO1xuICAgICAqIC8vID0+IFsnYWJjJ11cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KG51bGwpO1xuICAgICAqIC8vID0+IFtudWxsXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkodW5kZWZpbmVkKTtcbiAgICAgKiAvLyA9PiBbdW5kZWZpbmVkXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqIGNvbnNvbGUubG9nKF8uY2FzdEFycmF5KGFycmF5KSA9PT0gYXJyYXkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0QXJyYXkoKSB7XG4gICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIHZhbHVlID0gYXJndW1lbnRzWzBdO1xuICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzaGFsbG93IGNsb25lIG9mIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvbiB0aGVcbiAgICAgKiBbc3RydWN0dXJlZCBjbG9uZSBhbGdvcml0aG1dKGh0dHBzOi8vbWRuLmlvL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtKVxuICAgICAqIGFuZCBzdXBwb3J0cyBjbG9uaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsIGRhdGUgb2JqZWN0cywgbWFwcyxcbiAgICAgKiBudW1iZXJzLCBgT2JqZWN0YCBvYmplY3RzLCByZWdleGVzLCBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWRcbiAgICAgKiBhcnJheXMuIFRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBhcmd1bWVudHNgIG9iamVjdHMgYXJlIGNsb25lZFxuICAgICAqIGFzIHBsYWluIG9iamVjdHMuIEFuIGVtcHR5IG9iamVjdCBpcyByZXR1cm5lZCBmb3IgdW5jbG9uZWFibGUgdmFsdWVzIHN1Y2hcbiAgICAgKiBhcyBlcnJvciBvYmplY3RzLCBmdW5jdGlvbnMsIERPTSBub2RlcywgYW5kIFdlYWtNYXBzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZURlZXBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gICAgICpcbiAgICAgKiB2YXIgc2hhbGxvdyA9IF8uY2xvbmUob2JqZWN0cyk7XG4gICAgICogY29uc29sZS5sb2coc2hhbGxvd1swXSA9PT0gb2JqZWN0c1swXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lKHZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBjbG9uZWQgdmFsdWUuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLFxuICAgICAqIGNsb25pbmcgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoXG4gICAgICogdXAgdG8gZm91ciBhcmd1bWVudHM7ICh2YWx1ZSBbLCBpbmRleHxrZXksIG9iamVjdCwgc3RhY2tdKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZURlZXBXaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIodmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHZhbHVlLmNsb25lTm9kZShmYWxzZSk7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGVsID0gXy5jbG9uZVdpdGgoZG9jdW1lbnQuYm9keSwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhlbCA9PT0gZG9jdW1lbnQuYm9keSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gICAgICogLy8gPT4gJ0JPRFknXG4gICAgICogY29uc29sZS5sb2coZWwuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVdpdGgodmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8uY2xvbmVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gICAgICpcbiAgICAgKiB2YXIgZGVlcCA9IF8uY2xvbmVEZWVwKG9iamVjdHMpO1xuICAgICAqIGNvbnNvbGUubG9nKGRlZXBbMF0gPT09IG9iamVjdHNbMF0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVEZWVwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVXaXRoYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZGVlcCBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lV2l0aFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKHZhbHVlKSB7XG4gICAgICogICBpZiAoXy5pc0VsZW1lbnQodmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiB2YWx1ZS5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGVsID0gXy5jbG9uZURlZXBXaXRoKGRvY3VtZW50LmJvZHksIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coZWwgPT09IGRvY3VtZW50LmJvZHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICogY29uc29sZS5sb2coZWwubm9kZU5hbWUpO1xuICAgICAqIC8vID0+ICdCT0RZJ1xuICAgICAqIGNvbnNvbGUubG9nKGVsLmNoaWxkTm9kZXMubGVuZ3RoKTtcbiAgICAgKiAvLyA9PiAyMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lRGVlcFdpdGgodmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBvYmplY3RgIGNvbmZvcm1zIHRvIGBzb3VyY2VgIGJ5IGludm9raW5nIHRoZSBwcmVkaWNhdGVcbiAgICAgKiBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8uY29uZm9ybXNgIHdoZW4gYHNvdXJjZWAgaXNcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjE0LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGNvbmZvcm1zLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gICAgICpcbiAgICAgKiBfLmNvbmZvcm1zVG8ob2JqZWN0LCB7ICdiJzogZnVuY3Rpb24obikgeyByZXR1cm4gbiA+IDE7IH0gfSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5jb25mb3Jtc1RvKG9iamVjdCwgeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAyOyB9IH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIHNvdXJjZSA9PSBudWxsIHx8IGJhc2VDb25mb3Jtc1RvKG9iamVjdCwgc291cmNlLCBrZXlzKHNvdXJjZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGFcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gICAgICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZXEoJ2EnLCAnYScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZXEoTmFOLCBOYU4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8ubHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ndCgzLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0KDMsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmd0KDEsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGd0ID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlR3QpO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG9cbiAgICAgKiAgYG90aGVyYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5sdGVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ndGUoMywgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5ndGUoMywgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5ndGUoMSwgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgZ3RlID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSBvdGhlcjtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAgICAgIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoJ2FiYycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5QnVmZmVyYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5IGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlCdWZmZXIobmV3IEFycmF5QnVmZmVyKDIpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlCdWZmZXIobmV3IEFycmF5KDIpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0FycmF5QnVmZmVyID0gbm9kZUlzQXJyYXlCdWZmZXIgPyBiYXNlVW5hcnkobm9kZUlzQXJyYXlCdWZmZXIpIDogYmFzZUlzQXJyYXlCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gICAgICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICAgICAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNBcnJheUxpa2VgIGV4Y2VwdCB0aGF0IGl0IGFsc28gY2hlY2tzIGlmIGB2YWx1ZWBcbiAgICAgKiBpcyBhbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNBcnJheUxpa2UodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBib29sZWFuIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYm9vbGVhbiwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQm9vbGVhbihmYWxzZSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Jvb2xlYW4obnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Jvb2xlYW4odmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2UgfHxcbiAgICAgICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYm9vbFRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNCdWZmZXIobmV3IEJ1ZmZlcigyKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0J1ZmZlcihuZXcgVWludDhBcnJheSgyKSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNCdWZmZXIgPSBuYXRpdmVJc0J1ZmZlciB8fCBzdHViRmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYERhdGVgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBkYXRlIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRGF0ZShuZXcgRGF0ZSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0RhdGUoJ01vbiBBcHJpbCAyMyAyMDEyJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNEYXRlID0gbm9kZUlzRGF0ZSA/IGJhc2VVbmFyeShub2RlSXNEYXRlKSA6IGJhc2VJc0RhdGU7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBET00gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBET00gZWxlbWVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRWxlbWVudChkb2N1bWVudC5ib2R5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRWxlbWVudCgnPGJvZHk+Jyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSAxICYmICFpc1BsYWluT2JqZWN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBlbXB0eSBvYmplY3QsIGNvbGxlY3Rpb24sIG1hcCwgb3Igc2V0LlxuICAgICAqXG4gICAgICogT2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgbm8gb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkXG4gICAgICogcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEFycmF5LWxpa2UgdmFsdWVzIHN1Y2ggYXMgYGFyZ3VtZW50c2Agb2JqZWN0cywgYXJyYXlzLCBidWZmZXJzLCBzdHJpbmdzLCBvclxuICAgICAqIGpRdWVyeS1saWtlIGNvbGxlY3Rpb25zIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBsZW5ndGhgIG9mIGAwYC5cbiAgICAgKiBTaW1pbGFybHksIG1hcHMgYW5kIHNldHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYHNpemVgIG9mIGAwYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZW1wdHksIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSh0cnVlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkoMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSh7ICdhJzogMSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSAmJlxuICAgICAgICAgIChpc0FycmF5KHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlLnNwbGljZSA9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgICAgICBpc0J1ZmZlcih2YWx1ZSkgfHwgaXNUeXBlZEFycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiAhdmFsdWUubGVuZ3RoO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSk7XG4gICAgICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgIHJldHVybiAhdmFsdWUuc2l6ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1Byb3RvdHlwZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICFiYXNlS2V5cyh2YWx1ZSkubGVuZ3RoO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlXG4gICAgICogZXF1aXZhbGVudC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBzdXBwb3J0cyBjb21wYXJpbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucyxcbiAgICAgKiBkYXRlIG9iamVjdHMsIGVycm9yIG9iamVjdHMsIG1hcHMsIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsXG4gICAgICogc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkIGFycmF5cy4gYE9iamVjdGAgb2JqZWN0cyBhcmUgY29tcGFyZWRcbiAgICAgKiBieSB0aGVpciBvd24sIG5vdCBpbmhlcml0ZWQsIGVudW1lcmFibGUgcHJvcGVydGllcy4gRnVuY3Rpb25zIGFuZCBET01cbiAgICAgKiBub2RlcyBhcmUgY29tcGFyZWQgYnkgc3RyaWN0IGVxdWFsaXR5LCBpLmUuIGA9PT1gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gICAgICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uaXNFcXVhbChvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBvYmplY3QgPT09IG90aGVyO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFcXVhbCh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNFcXVhbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgY29tcGFyaXNvbnNcbiAgICAgKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHVwIHRvXG4gICAgICogc2l4IGFyZ3VtZW50czogKG9ialZhbHVlLCBvdGhWYWx1ZSBbLCBpbmRleHxrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrXSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBpc0dyZWV0aW5nKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlKSB7XG4gICAgICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhvdGhWYWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHRydWU7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydoZWxsbycsICdnb29kYnllJ107XG4gICAgICogdmFyIG90aGVyID0gWydoaScsICdnb29kYnllJ107XG4gICAgICpcbiAgICAgKiBfLmlzRXF1YWxXaXRoKGFycmF5LCBvdGhlciwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRXF1YWxXaXRoKHZhbHVlLCBvdGhlciwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgdmFyIHJlc3VsdCA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKHZhbHVlLCBvdGhlcikgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIHVuZGVmaW5lZCwgY3VzdG9taXplcikgOiAhIXJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBgRXJyb3JgLCBgRXZhbEVycm9yYCwgYFJhbmdlRXJyb3JgLCBgUmVmZXJlbmNlRXJyb3JgLFxuICAgICAqIGBTeW50YXhFcnJvcmAsIGBUeXBlRXJyb3JgLCBvciBgVVJJRXJyb3JgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gZXJyb3Igb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNFcnJvcihuZXcgRXJyb3IpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFcnJvcihFcnJvcik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Vycm9yKHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICAgICAgcmV0dXJuIHRhZyA9PSBlcnJvclRhZyB8fCB0YWcgPT0gZG9tRXhjVGFnIHx8XG4gICAgICAgICh0eXBlb2YgdmFsdWUubWVzc2FnZSA9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUubmFtZSA9PSAnc3RyaW5nJyAmJiAhaXNQbGFpbk9iamVjdCh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmluaXRlIHByaW1pdGl2ZSBudW1iZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc0Zpbml0ZWBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc0Zpbml0ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZmluaXRlIG51bWJlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRmluaXRlKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZShJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRmluaXRlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIG5hdGl2ZUlzRmluaXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0Z1bmN0aW9uKF8pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgICAgIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICAgICAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICAgICAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BOdW1iZXIuaXNJbnRlZ2VyYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzSW50ZWdlcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNJbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSA9PSB0b0ludGVnZXIodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNMZW5ndGgoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNMZW5ndGgoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAgICAgKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gICAgICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdCh7fSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAgICAgKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBNYXBgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc01hcChuZXcgTWFwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTWFwKG5ldyBXZWFrTWFwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc01hcCA9IG5vZGVJc01hcCA/IGJhc2VVbmFyeShub2RlSXNNYXApIDogYmFzZUlzTWFwO1xuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIGBvYmplY3RgIGFuZCBgc291cmNlYCB0b1xuICAgICAqIGRldGVybWluZSBpZiBgb2JqZWN0YCBjb250YWlucyBlcXVpdmFsZW50IHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGBfLm1hdGNoZXNgIHdoZW4gYHNvdXJjZWAgaXNcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0IGBzb3VyY2VgXG4gICAgICogdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWUgYF8uaXNFcXVhbGBcbiAgICAgKiBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICAgICAqXG4gICAgICogXy5pc01hdGNoKG9iamVjdCwgeyAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc01hdGNoKG9iamVjdCwgeyAnYic6IDEgfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc01hdGNoKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIGdldE1hdGNoRGF0YShzb3VyY2UpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzTWF0Y2hgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIGNvbXBhcmlzb25zXG4gICAgICogYXJlIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCBmaXZlXG4gICAgICogYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBpbmRleHxrZXksIG9iamVjdCwgc291cmNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBpc0dyZWV0aW5nKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhzcmNWYWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHRydWU7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2dyZWV0aW5nJzogJ2hlbGxvJyB9O1xuICAgICAqIHZhciBzb3VyY2UgPSB7ICdncmVldGluZyc6ICdoaScgfTtcbiAgICAgKlxuICAgICAqIF8uaXNNYXRjaFdpdGgob2JqZWN0LCBzb3VyY2UsIGN1c3RvbWl6ZXIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc01hdGNoV2l0aChvYmplY3QsIHNvdXJjZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBnZXRNYXRjaERhdGEoc291cmNlKSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYE5hTmAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc05hTmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc05hTikgYW5kIGlzIG5vdCB0aGUgc2FtZSBhc1xuICAgICAqIGdsb2JhbCBbYGlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vaXNOYU4pIHdoaWNoIHJldHVybnMgYHRydWVgIGZvclxuICAgICAqIGB1bmRlZmluZWRgIGFuZCBvdGhlciBub24tbnVtYmVyIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc05hTihOYU4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYU4obmV3IE51bWJlcihOYU4pKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBpc05hTih1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYU4odW5kZWZpbmVkKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTmFOKHZhbHVlKSB7XG4gICAgICAvLyBBbiBgTmFOYCBwcmltaXRpdmUgaXMgdGhlIG9ubHkgdmFsdWUgdGhhdCBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLlxuICAgICAgLy8gUGVyZm9ybSB0aGUgYHRvU3RyaW5nVGFnYCBjaGVjayBmaXJzdCB0byBhdm9pZCBlcnJvcnMgd2l0aCBzb21lXG4gICAgICAvLyBBY3RpdmVYIG9iamVjdHMgaW4gSUUuXG4gICAgICByZXR1cm4gaXNOdW1iZXIodmFsdWUpICYmIHZhbHVlICE9ICt2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByaXN0aW5lIG5hdGl2ZSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBjYW4ndCByZWxpYWJseSBkZXRlY3QgbmF0aXZlIGZ1bmN0aW9ucyBpbiB0aGUgcHJlc2VuY2VcbiAgICAgKiBvZiB0aGUgY29yZS1qcyBwYWNrYWdlIGJlY2F1c2UgY29yZS1qcyBjaXJjdW12ZW50cyB0aGlzIGtpbmQgb2YgZGV0ZWN0aW9uLlxuICAgICAqIERlc3BpdGUgbXVsdGlwbGUgcmVxdWVzdHMsIHRoZSBjb3JlLWpzIG1haW50YWluZXIgaGFzIG1hZGUgaXQgY2xlYXI6IGFueVxuICAgICAqIGF0dGVtcHQgdG8gZml4IHRoZSBkZXRlY3Rpb24gd2lsbCBiZSBvYnN0cnVjdGVkLiBBcyBhIHJlc3VsdCwgd2UncmUgbGVmdFxuICAgICAqIHdpdGggbGl0dGxlIGNob2ljZSBidXQgdG8gdGhyb3cgYW4gZXJyb3IuIFVuZm9ydHVuYXRlbHksIHRoaXMgYWxzbyBhZmZlY3RzXG4gICAgICogcGFja2FnZXMsIGxpa2UgW2JhYmVsLXBvbHlmaWxsXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iYWJlbC1wb2x5ZmlsbCksXG4gICAgICogd2hpY2ggcmVseSBvbiBjb3JlLWpzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmF0aXZlKEFycmF5LnByb3RvdHlwZS5wdXNoKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmF0aXZlKF8pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOYXRpdmUodmFsdWUpIHtcbiAgICAgIGlmIChpc01hc2thYmxlKHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoQ09SRV9FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYG51bGxgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOdWxsKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdWxsKHZvaWQgMCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc051bGwodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG51bGxpc2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc05pbChudWxsKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKHZvaWQgMCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05pbChOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOaWwodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTnVtYmVyYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRvIGV4Y2x1ZGUgYEluZmluaXR5YCwgYC1JbmZpbml0eWAsIGFuZCBgTmFOYCwgd2hpY2ggYXJlXG4gICAgICogY2xhc3NpZmllZCBhcyBudW1iZXJzLCB1c2UgdGhlIGBfLmlzRmluaXRlYCBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbnVtYmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBudW1iZXJUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAgICAgKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC44LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm90byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG4gICAgICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICB2YXIgQ3RvciA9IGhhc093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICAgICAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICAgICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFJlZ0V4cGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHJlZ2V4cCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzUmVnRXhwKC9hYmMvKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzUmVnRXhwKCcvYWJjLycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzUmVnRXhwID0gbm9kZUlzUmVnRXhwID8gYmFzZVVuYXJ5KG5vZGVJc1JlZ0V4cCkgOiBiYXNlSXNSZWdFeHA7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHNhZmUgaW50ZWdlci4gQW4gaW50ZWdlciBpcyBzYWZlIGlmIGl0J3MgYW4gSUVFRS03NTRcbiAgICAgKiBkb3VibGUgcHJlY2lzaW9uIG51bWJlciB3aGljaCBpc24ndCB0aGUgcmVzdWx0IG9mIGEgcm91bmRlZCB1bnNhZmUgaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzU2FmZUludGVnZXJgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNTYWZlSW50ZWdlcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2FmZSBpbnRlZ2VyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU2FmZUludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcignMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTYWZlSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzSW50ZWdlcih2YWx1ZSkgJiYgdmFsdWUgPj0gLU1BWF9TQUZFX0lOVEVHRVIgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFNldGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU2V0KG5ldyBTZXQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNTZXQobmV3IFdlYWtTZXQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzU2V0ID0gbm9kZUlzU2V0ID8gYmFzZVVuYXJ5KG5vZGVJc1NldCkgOiBiYXNlSXNTZXQ7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzdHJpbmcsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1N0cmluZygnYWJjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1N0cmluZygxKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8XG4gICAgICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzVHlwZWRBcnJheSA9IG5vZGVJc1R5cGVkQXJyYXkgPyBiYXNlVW5hcnkobm9kZUlzVHlwZWRBcnJheSkgOiBiYXNlSXNUeXBlZEFycmF5O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNVbmRlZmluZWQodm9pZCAwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzVW5kZWZpbmVkKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgV2Vha01hcGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHdlYWsgbWFwLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrTWFwKG5ldyBXZWFrTWFwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzV2Vha01hcChuZXcgTWFwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzV2Vha01hcCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSB3ZWFrTWFwVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgV2Vha1NldGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHdlYWsgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrU2V0KG5ldyBXZWFrU2V0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzV2Vha1NldChuZXcgU2V0KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzV2Vha1NldCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gd2Vha1NldFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLmd0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubHQoMSwgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdCgzLCAzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5sdCgzLCAxKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBsdCA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oYmFzZUx0KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvXG4gICAgICogIGBvdGhlcmAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8uZ3RlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubHRlKDEsIDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8ubHRlKDMsIDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8ubHRlKDMsIDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGx0ZSA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPD0gb3RoZXI7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvQXJyYXkoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8udG9BcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICpcbiAgICAgKiBfLnRvQXJyYXkoMSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8udG9BcnJheShudWxsKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvQXJyYXkodmFsdWUpIHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gc3RyaW5nVG9BcnJheSh2YWx1ZSkgOiBjb3B5QXJyYXkodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHN5bUl0ZXJhdG9yICYmIHZhbHVlW3N5bUl0ZXJhdG9yXSkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JUb0FycmF5KHZhbHVlW3N5bUl0ZXJhdG9yXSgpKTtcbiAgICAgIH1cbiAgICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICAgIGZ1bmMgPSB0YWcgPT0gbWFwVGFnID8gbWFwVG9BcnJheSA6ICh0YWcgPT0gc2V0VGFnID8gc2V0VG9BcnJheSA6IHZhbHVlcyk7XG5cbiAgICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgZmluaXRlIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEyLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZSgzLjIpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiA1ZS0zMjRcbiAgICAgKlxuICAgICAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKCczLjInKTtcbiAgICAgKiAvLyA9PiAzLjJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6IDA7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gSU5GSU5JVFkgfHwgdmFsdWUgPT09IC1JTkZJTklUWSkge1xuICAgICAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgICAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9JbnRlZ2VyKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcignMy4yJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHRvRmluaXRlKHZhbHVlKSxcbiAgICAgICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gICAgICByZXR1cm4gcmVzdWx0ID09PSByZXN1bHQgPyAocmVtYWluZGVyID8gcmVzdWx0IC0gcmVtYWluZGVyIDogcmVzdWx0KSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyIHN1aXRhYmxlIGZvciB1c2UgYXMgdGhlIGxlbmd0aCBvZiBhblxuICAgICAqIGFycmF5LWxpa2Ugb2JqZWN0LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0xlbmd0aCgzLjIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8udG9MZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogXy50b0xlbmd0aChJbmZpbml0eSk7XG4gICAgICogLy8gPT4gNDI5NDk2NzI5NVxuICAgICAqXG4gICAgICogXy50b0xlbmd0aCgnMy4yJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTGVuZ3RoKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPyBiYXNlQ2xhbXAodG9JbnRlZ2VyKHZhbHVlKSwgMCwgTUFYX0FSUkFZX0xFTkdUSCkgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKDMuMik7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDVlLTMyNFxuICAgICAqXG4gICAgICogXy50b051bWJlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gSW5maW5pdHlcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoJzMuMicpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5BTjtcbiAgICAgIH1cbiAgICAgIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgICAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgICAgIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gICAgICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICAgICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAgICAgKiBrZXllZCBwcm9wZXJ0aWVzIG9mIGB2YWx1ZWAgdG8gb3duIHByb3BlcnRpZXMgb2YgdGhlIHBsYWluIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgcGxhaW4gb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbih7ICdhJzogMSB9LCBuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKlxuICAgICAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIF8udG9QbGFpbk9iamVjdChuZXcgRm9vKSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHNhZmUgaW50ZWdlci4gQSBzYWZlIGludGVnZXIgY2FuIGJlIGNvbXBhcmVkIGFuZFxuICAgICAqIHJlcHJlc2VudGVkIGNvcnJlY3RseS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gOTAwNzE5OTI1NDc0MDk5MVxuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9TYWZlSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgID8gYmFzZUNsYW1wKHRvSW50ZWdlcih2YWx1ZSksIC1NQVhfU0FGRV9JTlRFR0VSLCBNQVhfU0FGRV9JTlRFR0VSKVxuICAgICAgICA6ICh2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAgICAgKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKG51bGwpO1xuICAgICAqIC8vID0+ICcnXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKC0wKTtcbiAgICAgKiAvLyA9PiAnLTAnXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gJzEsMiwzJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZVxuICAgICAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICAgICAqIFN1YnNlcXVlbnQgc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgIGFuZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BPYmplY3QuYXNzaWduYF0oaHR0cHM6Ly9tZG4uaW8vT2JqZWN0L2Fzc2lnbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5hc3NpZ25JblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEJhcigpIHtcbiAgICAgKiAgIHRoaXMuYyA9IDM7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5iID0gMjtcbiAgICAgKiBCYXIucHJvdG90eXBlLmQgPSA0O1xuICAgICAqXG4gICAgICogXy5hc3NpZ24oeyAnYSc6IDAgfSwgbmV3IEZvbywgbmV3IEJhcik7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbiA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlKSB7XG4gICAgICBpZiAoaXNQcm90b3R5cGUoc291cmNlKSB8fCBpc0FycmF5TGlrZShzb3VyY2UpKSB7XG4gICAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHNvdXJjZVtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgb3duIGFuZFxuICAgICAqIGluaGVyaXRlZCBzb3VyY2UgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGV4dGVuZFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gQmFyKCkge1xuICAgICAqICAgdGhpcy5jID0gMztcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmIgPSAyO1xuICAgICAqIEJhci5wcm90b3R5cGUuZCA9IDQ7XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbkluKHsgJ2EnOiAwIH0sIG5ldyBGb28sIG5ldyBCYXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMywgJ2QnOiA0IH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduSW4gPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25JbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGFzc2lnbmVkIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnNcbiAgICAgKiBgdW5kZWZpbmVkYCwgYXNzaWdubWVudCBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYFxuICAgICAqIGlzIGludm9rZWQgd2l0aCBmaXZlIGFyZ3VtZW50czogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBleHRlbmRXaXRoXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnbldpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiBfLmlzVW5kZWZpbmVkKG9ialZhbHVlKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGRlZmF1bHRzID0gXy5wYXJ0aWFsUmlnaHQoXy5hc3NpZ25JbldpdGgsIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbkluV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QsIGN1c3RvbWl6ZXIpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gICAgICogYHVuZGVmaW5lZGAsIGFzc2lnbm1lbnQgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggZml2ZSBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduSW5XaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICByZXR1cm4gXy5pc1VuZGVmaW5lZChvYmpWYWx1ZSkgPyBzcmNWYWx1ZSA6IG9ialZhbHVlO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBkZWZhdWx0cyA9IF8ucGFydGlhbFJpZ2h0KF8uYXNzaWduV2l0aCwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBkZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0LCBjdXN0b21pemVyKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gYHBhdGhzYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwaWNrZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9LCA0XSB9O1xuICAgICAqXG4gICAgICogXy5hdChvYmplY3QsIFsnYVswXS5iLmMnLCAnYVsxXSddKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKi9cbiAgICB2YXIgYXQgPSBmbGF0UmVzdChiYXNlQXQpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgdGhhdCBpbmhlcml0cyBmcm9tIHRoZSBgcHJvdG90eXBlYCBvYmplY3QuIElmIGFcbiAgICAgKiBgcHJvcGVydGllc2Agb2JqZWN0IGlzIGdpdmVuLCBpdHMgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXNcbiAgICAgKiBhcmUgYXNzaWduZWQgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcm90b3R5cGUgVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtwcm9wZXJ0aWVzXSBUaGUgcHJvcGVydGllcyB0byBhc3NpZ24gdG8gdGhlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBTaGFwZSgpIHtcbiAgICAgKiAgIHRoaXMueCA9IDA7XG4gICAgICogICB0aGlzLnkgPSAwO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIENpcmNsZSgpIHtcbiAgICAgKiAgIFNoYXBlLmNhbGwodGhpcyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogQ2lyY2xlLnByb3RvdHlwZSA9IF8uY3JlYXRlKFNoYXBlLnByb3RvdHlwZSwge1xuICAgICAqICAgJ2NvbnN0cnVjdG9yJzogQ2lyY2xlXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiB2YXIgY2lyY2xlID0gbmV3IENpcmNsZTtcbiAgICAgKiBjaXJjbGUgaW5zdGFuY2VvZiBDaXJjbGU7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogY2lyY2xlIGluc3RhbmNlb2YgU2hhcGU7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZShwcm90b3R5cGUsIHByb3BlcnRpZXMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBiYXNlQ3JlYXRlKHByb3RvdHlwZSk7XG4gICAgICByZXR1cm4gcHJvcGVydGllcyA9PSBudWxsID8gcmVzdWx0IDogYmFzZUFzc2lnbihyZXN1bHQsIHByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2VcbiAgICAgKiBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzIHRoYXRcbiAgICAgKiByZXNvbHZlIHRvIGB1bmRlZmluZWRgLiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4gICAgICogT25jZSBhIHByb3BlcnR5IGlzIHNldCwgYWRkaXRpb25hbCB2YWx1ZXMgb2YgdGhlIHNhbWUgcHJvcGVydHkgYXJlIGlnbm9yZWQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZGVmYXVsdHNEZWVwXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGRlZmF1bHRzID0gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTE7XG4gICAgICB2YXIgbGVuZ3RoID0gc291cmNlcy5sZW5ndGg7XG4gICAgICB2YXIgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICAgIHZhciBwcm9wcyA9IGtleXNJbihzb3VyY2UpO1xuICAgICAgICB2YXIgcHJvcHNJbmRleCA9IC0xO1xuICAgICAgICB2YXIgcHJvcHNMZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKCsrcHJvcHNJbmRleCA8IHByb3BzTGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIGtleSA9IHByb3BzW3Byb3BzSW5kZXhdO1xuICAgICAgICAgIHZhciB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgKGVxKHZhbHVlLCBvYmplY3RQcm90b1trZXldKSAmJiAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSB7XG4gICAgICAgICAgICBvYmplY3Rba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kZWZhdWx0c2AgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgYXNzaWduc1xuICAgICAqIGRlZmF1bHQgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZGVmYXVsdHNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZhdWx0c0RlZXAoeyAnYSc6IHsgJ2InOiAyIH0gfSwgeyAnYSc6IHsgJ2InOiAxLCAnYyc6IDMgfSB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnYic6IDIsICdjJzogMyB9IH1cbiAgICAgKi9cbiAgICB2YXIgZGVmYXVsdHNEZWVwID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgYXJncy5wdXNoKHVuZGVmaW5lZCwgY3VzdG9tRGVmYXVsdHNNZXJnZSk7XG4gICAgICByZXR1cm4gYXBwbHkobWVyZ2VXaXRoLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBrZXkgb2YgdGhlIGZpcnN0XG4gICAgICogZWxlbWVudCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSBSZXR1cm5zIHRoZSBrZXkgb2YgdGhlIG1hdGNoZWQgZWxlbWVudCxcbiAgICAgKiAgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0ge1xuICAgICAqICAgJ2Jhcm5leSc6ICB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgICdmcmVkJzogICAgeyAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICAgICAqIC8vID0+ICdiYXJuZXknIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEtleSh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gJ3BlYmJsZXMnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAnYmFybmV5J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRLZXkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBiYXNlRmluZEtleShvYmplY3QsIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGJhc2VGb3JPd24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZEtleWAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGEgY29sbGVjdGlvbiBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSBSZXR1cm5zIHRoZSBrZXkgb2YgdGhlIG1hdGNoZWQgZWxlbWVudCxcbiAgICAgKiAgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0ge1xuICAgICAqICAgJ2Jhcm5leSc6ICB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgICdmcmVkJzogICAgeyAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAgICAgKiAvLyA9PiByZXR1cm5zICdwZWJibGVzJyBhc3N1bWluZyBgXy5maW5kS2V5YCByZXR1cm5zICdiYXJuZXknXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAnZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAncGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kTGFzdEtleShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIGJhc2VGaW5kS2V5KG9iamVjdCwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgYmFzZUZvck93blJpZ2h0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYW5cbiAgICAgKiBvYmplY3QgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdFxuICAgICAqIGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9ySW5SaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5mb3JJbihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2EnLCAnYicsIHRoZW4gJ2MnIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvckluKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbFxuICAgICAgICA/IG9iamVjdFxuICAgICAgICA6IGJhc2VGb3Iob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JJbmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzIG9mXG4gICAgICogYG9iamVjdGAgaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9ySW5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9ySW5SaWdodChuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2MnLCAnYicsIHRoZW4gJ2EnIGFzc3VtaW5nIGBfLmZvckluYCBsb2dzICdhJywgJ2InLCB0aGVuICdjJy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JJblJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbFxuICAgICAgICA/IG9iamVjdFxuICAgICAgICA6IGJhc2VGb3JSaWdodChvYmplY3QsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSwga2V5c0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdCBhbmRcbiAgICAgKiBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uXG4gICAgICogZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvck93blJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvck93bihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2EnIHRoZW4gJ2InIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3JPd24ob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9yT3duYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIHByb3BlcnRpZXMgb2ZcbiAgICAgKiBgb2JqZWN0YCBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5mb3JPd25cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9yT3duUmlnaHQobmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdiJyB0aGVuICdhJyBhc3N1bWluZyBgXy5mb3JPd25gIGxvZ3MgJ2EnIHRoZW4gJ2InLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvck93blJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvck93blJpZ2h0KG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZyb20gb3duIGVudW1lcmFibGUgcHJvcGVydGllc1xuICAgICAqIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICogQHNlZSBfLmZ1bmN0aW9uc0luXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IF8uY29uc3RhbnQoJ2EnKTtcbiAgICAgKiAgIHRoaXMuYiA9IF8uY29uc3RhbnQoJ2InKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSBfLmNvbnN0YW50KCdjJyk7XG4gICAgICpcbiAgICAgKiBfLmZ1bmN0aW9ucyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZnVuY3Rpb25zKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlRnVuY3Rpb25zKG9iamVjdCwga2V5cyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZyb20gb3duIGFuZCBpbmhlcml0ZWRcbiAgICAgKiBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lcy5cbiAgICAgKiBAc2VlIF8uZnVuY3Rpb25zXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IF8uY29uc3RhbnQoJ2EnKTtcbiAgICAgKiAgIHRoaXMuYiA9IF8uY29uc3RhbnQoJ2InKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSBfLmNvbnN0YW50KCdjJyk7XG4gICAgICpcbiAgICAgKiBfLmZ1bmN0aW9uc0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZ1bmN0aW9uc0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlRnVuY3Rpb25zKG9iamVjdCwga2V5c0luKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzXG4gICAgICogYHVuZGVmaW5lZGAsIHRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpbiBpdHMgcGxhY2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgcmV0dXJuZWQgZm9yIGB1bmRlZmluZWRgIHJlc29sdmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsICdhWzBdLmIuYycpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8uZ2V0KG9iamVjdCwgWydhJywgJzAnLCAnYicsICdjJ10pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8uZ2V0KG9iamVjdCwgJ2EuYi5jJywgJ2RlZmF1bHQnKTtcbiAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXQob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IHsgJ2InOiAyIH0gfTtcbiAgICAgKiB2YXIgb3RoZXIgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gICAgICpcbiAgICAgKiBfLmhhcyhvYmplY3QsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCAnYS5iJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhcyhvdGhlciwgJ2EnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhcyhvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBvciBpbmhlcml0ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2EuYicpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzSW4ob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc0luKG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBiYXNlSGFzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBpbnZlcnRlZCBrZXlzIGFuZCB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICogSWYgYG9iamVjdGAgY29udGFpbnMgZHVwbGljYXRlIHZhbHVlcywgc3Vic2VxdWVudCB2YWx1ZXMgb3ZlcndyaXRlXG4gICAgICogcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnZlcnQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGludmVydGVkIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9O1xuICAgICAqXG4gICAgICogXy5pbnZlcnQob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogJ2MnLCAnMic6ICdiJyB9XG4gICAgICovXG4gICAgdmFyIGludmVydCA9IGNyZWF0ZUludmVydGVyKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiZcbiAgICAgICAgICB0eXBlb2YgdmFsdWUudG9TdHJpbmcgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YWx1ZSA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXN1bHRbdmFsdWVdID0ga2V5O1xuICAgIH0sIGNvbnN0YW50KGlkZW50aXR5KSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludmVydGAgZXhjZXB0IHRoYXQgdGhlIGludmVydGVkIG9iamVjdCBpcyBnZW5lcmF0ZWRcbiAgICAgKiBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmcgZWFjaCBlbGVtZW50IG9mIGBvYmplY3RgIHRocnUgYGl0ZXJhdGVlYC4gVGhlXG4gICAgICogY29ycmVzcG9uZGluZyBpbnZlcnRlZCB2YWx1ZSBvZiBlYWNoIGludmVydGVkIGtleSBpcyBhbiBhcnJheSBvZiBrZXlzXG4gICAgICogcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlIGludmVydGVkIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMS4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnZlcnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlZCBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uaW52ZXJ0Qnkob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gICAgICpcbiAgICAgKiBfLmludmVydEJ5KG9iamVjdCwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAnZ3JvdXAnICsgdmFsdWU7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4geyAnZ3JvdXAxJzogWydhJywgJ2MnXSwgJ2dyb3VwMic6IFsnYiddIH1cbiAgICAgKi9cbiAgICB2YXIgaW52ZXJ0QnkgPSBjcmVhdGVJbnZlcnRlcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmXG4gICAgICAgICAgdHlwZW9mIHZhbHVlLnRvU3RyaW5nICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFsdWUgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCB2YWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0W3ZhbHVlXS5wdXNoKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRbdmFsdWVdID0gW2tleV07XG4gICAgICB9XG4gICAgfSwgZ2V0SXRlcmF0ZWUpO1xuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyB0aGUgbWV0aG9kIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2UuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IFsxLCAyLCAzLCA0XSB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLmludm9rZShvYmplY3QsICdhWzBdLmIuYy5zbGljZScsIDEsIDMpO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqL1xuICAgIHZhciBpbnZva2UgPSBiYXNlUmVzdChiYXNlSW52b2tlKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAgICAgKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gICAgICogZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8ua2V5cyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiBfLmtleXMoJ2hpJyk7XG4gICAgICogLy8gPT4gWycwJywgJzEnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0KSA6IGJhc2VLZXlzKG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5rZXlzSW4obmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCwgdHJ1ZSkgOiBiYXNlS2V5c0luKG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLm1hcFZhbHVlc2A7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IHdpdGggdGhlXG4gICAgICogc2FtZSB2YWx1ZXMgYXMgYG9iamVjdGAgYW5kIGtleXMgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgZWFjaCBvd24gZW51bWVyYWJsZVxuICAgICAqIHN0cmluZyBrZXllZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBvYmplY3QuXG4gICAgICogQHNlZSBfLm1hcFZhbHVlc1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1hcEtleXMoeyAnYSc6IDEsICdiJzogMiB9LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICByZXR1cm4ga2V5ICsgdmFsdWU7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4geyAnYTEnOiAxLCAnYjInOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBLZXlzKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpO1xuXG4gICAgICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGl0ZXJhdGVlKHZhbHVlLCBrZXksIG9iamVjdCksIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleXMgYXMgYG9iamVjdGAgYW5kIHZhbHVlcyBnZW5lcmF0ZWRcbiAgICAgKiBieSBydW5uaW5nIGVhY2ggb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IG9mIGBvYmplY3RgIHRocnVcbiAgICAgKiBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czpcbiAgICAgKiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgb2JqZWN0LlxuICAgICAqIEBzZWUgXy5tYXBLZXlzXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgKiAgICdmcmVkJzogICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICAncGViYmxlcyc6IHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5tYXBWYWx1ZXModXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlOyB9KTtcbiAgICAgKiAvLyA9PiB7ICdmcmVkJzogNDAsICdwZWJibGVzJzogMSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcFZhbHVlcyh1c2VycywgJ2FnZScpO1xuICAgICAqIC8vID0+IHsgJ2ZyZWQnOiA0MCwgJ3BlYmJsZXMnOiAxIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBWYWx1ZXMob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgaXRlcmF0ZWUgPSBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyk7XG5cbiAgICAgIGJhc2VGb3JPd24ob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBpdGVyYXRlZSh2YWx1ZSwga2V5LCBvYmplY3QpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgbWVyZ2VzIG93biBhbmRcbiAgICAgKiBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2Ugb2JqZWN0cyBpbnRvIHRoZVxuICAgICAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIHByb3BlcnRpZXMgdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGFyZVxuICAgICAqIHNraXBwZWQgaWYgYSBkZXN0aW5hdGlvbiB2YWx1ZSBleGlzdHMuIEFycmF5IGFuZCBwbGFpbiBvYmplY3QgcHJvcGVydGllc1xuICAgICAqIGFyZSBtZXJnZWQgcmVjdXJzaXZlbHkuIE90aGVyIG9iamVjdHMgYW5kIHZhbHVlIHR5cGVzIGFyZSBvdmVycmlkZGVuIGJ5XG4gICAgICogYXNzaWdubWVudC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBTdWJzZXF1ZW50XG4gICAgICogc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNS4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge1xuICAgICAqICAgJ2EnOiBbeyAnYic6IDIgfSwgeyAnZCc6IDQgfV1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIG90aGVyID0ge1xuICAgICAqICAgJ2EnOiBbeyAnYyc6IDMgfSwgeyAnZSc6IDUgfV1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5tZXJnZShvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogW3sgJ2InOiAyLCAnYyc6IDMgfSwgeyAnZCc6IDQsICdlJzogNSB9XSB9XG4gICAgICovXG4gICAgdmFyIG1lcmdlID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KSB7XG4gICAgICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWVyZ2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBtZXJnZWQgdmFsdWVzIG9mIHRoZSBkZXN0aW5hdGlvbiBhbmQgc291cmNlXG4gICAgICogcHJvcGVydGllcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIG1lcmdpbmcgaXMgaGFuZGxlZCBieSB0aGVcbiAgICAgKiBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggc2l4IGFyZ3VtZW50czpcbiAgICAgKiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjaykuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiBvYmpWYWx1ZS5jb25jYXQoc3JjVmFsdWUpO1xuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogWzFdLCAnYic6IFsyXSB9O1xuICAgICAqIHZhciBvdGhlciA9IHsgJ2EnOiBbM10sICdiJzogWzRdIH07XG4gICAgICpcbiAgICAgKiBfLm1lcmdlV2l0aChvYmplY3QsIG90aGVyLCBjdXN0b21pemVyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogWzEsIDNdLCAnYic6IFsyLCA0XSB9XG4gICAgICovXG4gICAgdmFyIG1lcmdlV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ucGlja2A7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZVxuICAgICAqIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgcGF0aHMgb2YgYG9iamVjdGAgdGhhdCBhcmUgbm90IG9taXR0ZWQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgY29uc2lkZXJhYmx5IHNsb3dlciB0aGFuIGBfLnBpY2tgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gb21pdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ub21pdChvYmplY3QsIFsnYScsICdjJ10pO1xuICAgICAqIC8vID0+IHsgJ2InOiAnMicgfVxuICAgICAqL1xuICAgIHZhciBvbWl0ID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgaXNEZWVwID0gZmFsc2U7XG4gICAgICBwYXRocyA9IGFycmF5TWFwKHBhdGhzLCBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgICAgICBpc0RlZXAgfHwgKGlzRGVlcCA9IHBhdGgubGVuZ3RoID4gMSk7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgfSk7XG4gICAgICBjb3B5T2JqZWN0KG9iamVjdCwgZ2V0QWxsS2V5c0luKG9iamVjdCksIHJlc3VsdCk7XG4gICAgICBpZiAoaXNEZWVwKSB7XG4gICAgICAgIHJlc3VsdCA9IGJhc2VDbG9uZShyZXN1bHQsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX0ZMQVRfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9tT21pdENsb25lKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGg7XG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgYmFzZVVuc2V0KHJlc3VsdCwgcGF0aHNbbGVuZ3RoXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tCeWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mXG4gICAgICogdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYG9iamVjdGAgdGhhdFxuICAgICAqIGBwcmVkaWNhdGVgIGRvZXNuJ3QgcmV0dXJuIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHR3b1xuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBrZXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLm9taXRCeShvYmplY3QsIF8uaXNOdW1iZXIpO1xuICAgICAqIC8vID0+IHsgJ2InOiAnMicgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9taXRCeShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHBpY2tCeShvYmplY3QsIG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIHBpY2tlZCBgb2JqZWN0YCBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ucGljayhvYmplY3QsIFsnYScsICdjJ10pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIHZhciBwaWNrID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8ge30gOiBiYXNlUGljayhvYmplY3QsIHBhdGhzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBgb2JqZWN0YCBwcm9wZXJ0aWVzIGBwcmVkaWNhdGVgIHJldHVybnNcbiAgICAgKiB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAodmFsdWUsIGtleSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ucGlja0J5KG9iamVjdCwgXy5pc051bWJlcik7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gcGlja0J5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgdmFyIHByb3BzID0gYXJyYXlNYXAoZ2V0QWxsS2V5c0luKG9iamVjdCksIGZ1bmN0aW9uKHByb3ApIHtcbiAgICAgICAgcmV0dXJuIFtwcm9wXTtcbiAgICAgIH0pO1xuICAgICAgcHJlZGljYXRlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlKTtcbiAgICAgIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcHJvcHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgICAgIHJldHVybiBwcmVkaWNhdGUodmFsdWUsIHBhdGhbMF0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5nZXRgIGV4Y2VwdCB0aGF0IGlmIHRoZSByZXNvbHZlZCB2YWx1ZSBpcyBhXG4gICAgICogZnVuY3Rpb24gaXQncyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGl0cyBwYXJlbnQgb2JqZWN0IGFuZFxuICAgICAqIGl0cyByZXN1bHQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byByZXNvbHZlLlxuICAgICAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYzEnOiAzLCAnYzInOiBfLmNvbnN0YW50KDQpIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMScpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMicpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMycsICdkZWZhdWx0Jyk7XG4gICAgICogLy8gPT4gJ2RlZmF1bHQnXG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzMnLCBfLmNvbnN0YW50KCdkZWZhdWx0JykpO1xuICAgICAqIC8vID0+ICdkZWZhdWx0J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlc3VsdChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuXG4gICAgICAvLyBFbnN1cmUgdGhlIGxvb3AgaXMgZW50ZXJlZCB3aGVuIHBhdGggaXMgZW1wdHkuXG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgICBvYmplY3QgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFt0b0tleShwYXRoW2luZGV4XSldO1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGluZGV4ID0gbGVuZ3RoO1xuICAgICAgICAgIHZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IGlzRnVuY3Rpb24odmFsdWUpID8gdmFsdWUuY2FsbChvYmplY3QpIDogdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgYSBwb3J0aW9uIG9mIGBwYXRoYCBkb2Vzbid0IGV4aXN0LFxuICAgICAqIGl0J3MgY3JlYXRlZC4gQXJyYXlzIGFyZSBjcmVhdGVkIGZvciBtaXNzaW5nIGluZGV4IHByb3BlcnRpZXMgd2hpbGUgb2JqZWN0c1xuICAgICAqIGFyZSBjcmVhdGVkIGZvciBhbGwgb3RoZXIgbWlzc2luZyBwcm9wZXJ0aWVzLiBVc2UgYF8uc2V0V2l0aGAgdG8gY3VzdG9taXplXG4gICAgICogYHBhdGhgIGNyZWF0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5zZXQob2JqZWN0LCAnYVswXS5iLmMnLCA0KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QuYVswXS5iLmMpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8uc2V0KG9iamVjdCwgWyd4JywgJzAnLCAneScsICd6J10sIDUpO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC54WzBdLnkueik7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldChvYmplY3QsIHBhdGgsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc2V0YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgb2JqZWN0cyBvZiBgcGF0aGAuICBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYFxuICAgICAqIHBhdGggY3JlYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAobnNWYWx1ZSwga2V5LCBuc09iamVjdCkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge307XG4gICAgICpcbiAgICAgKiBfLnNldFdpdGgob2JqZWN0LCAnWzBdWzFdJywgJ2EnLCBPYmplY3QpO1xuICAgICAqIC8vID0+IHsgJzAnOiB7ICcxJzogJ2EnIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldFdpdGgob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZC12YWx1ZSBwYWlycyBmb3IgYG9iamVjdGBcbiAgICAgKiB3aGljaCBjYW4gYmUgY29uc3VtZWQgYnkgYF8uZnJvbVBhaXJzYC4gSWYgYG9iamVjdGAgaXMgYSBtYXAgb3Igc2V0LCBpdHNcbiAgICAgKiBlbnRyaWVzIGFyZSByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBlbnRyaWVzXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udG9QYWlycyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMV0sIFsnYicsIDJdXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIHZhciB0b1BhaXJzID0gY3JlYXRlVG9QYWlycyhrZXlzKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQtdmFsdWUgcGFpcnNcbiAgICAgKiBmb3IgYG9iamVjdGAgd2hpY2ggY2FuIGJlIGNvbnN1bWVkIGJ5IGBfLmZyb21QYWlyc2AuIElmIGBvYmplY3RgIGlzIGEgbWFwXG4gICAgICogb3Igc2V0LCBpdHMgZW50cmllcyBhcmUgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZW50cmllc0luXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udG9QYWlyc0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxXSwgWydiJywgMl0sIFsnYycsIDNdXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIHZhciB0b1BhaXJzSW4gPSBjcmVhdGVUb1BhaXJzKGtleXNJbik7XG5cbiAgICAvKipcbiAgICAgKiBBbiBhbHRlcm5hdGl2ZSB0byBgXy5yZWR1Y2VgOyB0aGlzIG1ldGhvZCB0cmFuc2Zvcm1zIGBvYmplY3RgIHRvIGEgbmV3XG4gICAgICogYGFjY3VtdWxhdG9yYCBvYmplY3Qgd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGVhY2ggb2YgaXRzIG93blxuICAgICAqIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgdGhydSBgaXRlcmF0ZWVgLCB3aXRoIGVhY2ggaW52b2NhdGlvblxuICAgICAqIHBvdGVudGlhbGx5IG11dGF0aW5nIHRoZSBgYWNjdW11bGF0b3JgIG9iamVjdC4gSWYgYGFjY3VtdWxhdG9yYCBpcyBub3RcbiAgICAgKiBwcm92aWRlZCwgYSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgYFtbUHJvdG90eXBlXV1gIHdpbGwgYmUgdXNlZC4gVGhlXG4gICAgICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOiAoYWNjdW11bGF0b3IsIHZhbHVlLCBrZXksIG9iamVjdCkuXG4gICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBjdXN0b20gYWNjdW11bGF0b3IgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyYW5zZm9ybShbMiwgMywgNF0sIGZ1bmN0aW9uKHJlc3VsdCwgbikge1xuICAgICAqICAgcmVzdWx0LnB1c2gobiAqPSBuKTtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICAgICAqIH0sIFtdKTtcbiAgICAgKiAvLyA9PiBbNCwgOV1cbiAgICAgKlxuICAgICAqIF8udHJhbnNmb3JtKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gICAgICogfSwge30pO1xuICAgICAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0cmFuc2Zvcm0ob2JqZWN0LCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgICAgICBpc0Fyckxpa2UgPSBpc0FyciB8fCBpc0J1ZmZlcihvYmplY3QpIHx8IGlzVHlwZWRBcnJheShvYmplY3QpO1xuXG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCA0KTtcbiAgICAgIGlmIChhY2N1bXVsYXRvciA9PSBudWxsKSB7XG4gICAgICAgIHZhciBDdG9yID0gb2JqZWN0ICYmIG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgICAgICAgaWYgKGlzQXJyTGlrZSkge1xuICAgICAgICAgIGFjY3VtdWxhdG9yID0gaXNBcnIgPyBuZXcgQ3RvciA6IFtdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgICBhY2N1bXVsYXRvciA9IGlzRnVuY3Rpb24oQ3RvcikgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKSA6IHt9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGFjY3VtdWxhdG9yID0ge307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIChpc0Fyckxpa2UgPyBhcnJheUVhY2ggOiBiYXNlRm9yT3duKShvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBvYmplY3QpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgcHJvcGVydHkgYXQgYHBhdGhgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gdW5zZXQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWxldGVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogNyB9IH1dIH07XG4gICAgICogXy51bnNldChvYmplY3QsICdhWzBdLmIuYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzoge30gfV0gfTtcbiAgICAgKlxuICAgICAqIF8udW5zZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogW3sgJ2InOiB7fSB9XSB9O1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuc2V0KG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdHJ1ZSA6IGJhc2VVbnNldChvYmplY3QsIHBhdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc2V0YCBleGNlcHQgdGhhdCBhY2NlcHRzIGB1cGRhdGVyYCB0byBwcm9kdWNlIHRoZVxuICAgICAqIHZhbHVlIHRvIHNldC4gVXNlIGBfLnVwZGF0ZVdpdGhgIHRvIGN1c3RvbWl6ZSBgcGF0aGAgY3JlYXRpb24uIFRoZSBgdXBkYXRlcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC42LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHVwZGF0ZXIgVGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgdGhlIHVwZGF0ZWQgdmFsdWUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8udXBkYXRlKG9iamVjdCwgJ2FbMF0uYi5jJywgZnVuY3Rpb24obikgeyByZXR1cm4gbiAqIG47IH0pO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC5hWzBdLmIuYyk7XG4gICAgICogLy8gPT4gOVxuICAgICAqXG4gICAgICogXy51cGRhdGUob2JqZWN0LCAneFswXS55LnonLCBmdW5jdGlvbihuKSB7IHJldHVybiBuID8gbiArIDEgOiAwOyB9KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QueFswXS55LnopO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGUob2JqZWN0LCBwYXRoLCB1cGRhdGVyKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlVXBkYXRlKG9iamVjdCwgcGF0aCwgY2FzdEZ1bmN0aW9uKHVwZGF0ZXIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVwZGF0ZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG9iamVjdHMgb2YgYHBhdGhgLiAgSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGBcbiAgICAgKiBwYXRoIGNyZWF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKG5zVmFsdWUsIGtleSwgbnNPYmplY3QpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC42LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHVwZGF0ZXIgVGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgdGhlIHVwZGF0ZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7fTtcbiAgICAgKlxuICAgICAqIF8udXBkYXRlV2l0aChvYmplY3QsICdbMF1bMV0nLCBfLmNvbnN0YW50KCdhJyksIE9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMCc6IHsgJzEnOiAnYScgfSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gdXBkYXRlV2l0aChvYmplY3QsIHBhdGgsIHVwZGF0ZXIsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VVcGRhdGUob2JqZWN0LCBwYXRoLCBjYXN0RnVuY3Rpb24odXBkYXRlciksIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnZhbHVlcyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbMSwgMl0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIF8udmFsdWVzKCdoaScpO1xuICAgICAqIC8vID0+IFsnaCcsICdpJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB2YWx1ZXMob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5XG4gICAgICogdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy52YWx1ZXNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB2YWx1ZXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZVZhbHVlcyhvYmplY3QsIGtleXNJbihvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDbGFtcHMgYG51bWJlcmAgd2l0aGluIHRoZSBpbmNsdXNpdmUgYGxvd2VyYCBhbmQgYHVwcGVyYCBib3VuZHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTnVtYmVyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNsYW1wLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbG93ZXJdIFRoZSBsb3dlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdXBwZXIgVGhlIHVwcGVyIGJvdW5kLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNsYW1wZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNsYW1wKC0xMCwgLTUsIDUpO1xuICAgICAqIC8vID0+IC01XG4gICAgICpcbiAgICAgKiBfLmNsYW1wKDEwLCAtNSwgNSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsYW1wKG51bWJlciwgbG93ZXIsIHVwcGVyKSB7XG4gICAgICBpZiAodXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cHBlciA9IGxvd2VyO1xuICAgICAgICBsb3dlciA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmICh1cHBlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVwcGVyID0gdG9OdW1iZXIodXBwZXIpO1xuICAgICAgICB1cHBlciA9IHVwcGVyID09PSB1cHBlciA/IHVwcGVyIDogMDtcbiAgICAgIH1cbiAgICAgIGlmIChsb3dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvd2VyID0gdG9OdW1iZXIobG93ZXIpO1xuICAgICAgICBsb3dlciA9IGxvd2VyID09PSBsb3dlciA/IGxvd2VyIDogMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlQ2xhbXAodG9OdW1iZXIobnVtYmVyKSwgbG93ZXIsIHVwcGVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYG5gIGlzIGJldHdlZW4gYHN0YXJ0YCBhbmQgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC4gSWZcbiAgICAgKiBgZW5kYCBpcyBub3Qgc3BlY2lmaWVkLCBpdCdzIHNldCB0byBgc3RhcnRgIHdpdGggYHN0YXJ0YCB0aGVuIHNldCB0byBgMGAuXG4gICAgICogSWYgYHN0YXJ0YCBpcyBncmVhdGVyIHRoYW4gYGVuZGAgdGhlIHBhcmFtcyBhcmUgc3dhcHBlZCB0byBzdXBwb3J0XG4gICAgICogbmVnYXRpdmUgcmFuZ2VzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMy4wXG4gICAgICogQGNhdGVnb3J5IE51bWJlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG51bWJlcmAgaXMgaW4gdGhlIHJhbmdlLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLnJhbmdlLCBfLnJhbmdlUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDMsIDIsIDQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSg0LCA4KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoNCwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgyLCAyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDEuMiwgMik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDUuMiwgNCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgtMywgLTIsIC02KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5SYW5nZShudW1iZXIsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVuZCA9IHN0YXJ0O1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbmQgPSB0b0Zpbml0ZShlbmQpO1xuICAgICAgfVxuICAgICAgbnVtYmVyID0gdG9OdW1iZXIobnVtYmVyKTtcbiAgICAgIHJldHVybiBiYXNlSW5SYW5nZShudW1iZXIsIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2R1Y2VzIGEgcmFuZG9tIG51bWJlciBiZXR3ZWVuIHRoZSBpbmNsdXNpdmUgYGxvd2VyYCBhbmQgYHVwcGVyYCBib3VuZHMuXG4gICAgICogSWYgb25seSBvbmUgYXJndW1lbnQgaXMgcHJvdmlkZWQgYSBudW1iZXIgYmV0d2VlbiBgMGAgYW5kIHRoZSBnaXZlbiBudW1iZXJcbiAgICAgKiBpcyByZXR1cm5lZC4gSWYgYGZsb2F0aW5nYCBpcyBgdHJ1ZWAsIG9yIGVpdGhlciBgbG93ZXJgIG9yIGB1cHBlcmAgYXJlXG4gICAgICogZmxvYXRzLCBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyByZXR1cm5lZCBpbnN0ZWFkIG9mIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSmF2YVNjcmlwdCBmb2xsb3dzIHRoZSBJRUVFLTc1NCBzdGFuZGFyZCBmb3IgcmVzb2x2aW5nXG4gICAgICogZmxvYXRpbmctcG9pbnQgdmFsdWVzIHdoaWNoIGNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjcuMFxuICAgICAqIEBjYXRlZ29yeSBOdW1iZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyPTBdIFRoZSBsb3dlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3VwcGVyPTFdIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmbG9hdGluZ10gU3BlY2lmeSByZXR1cm5pbmcgYSBmbG9hdGluZy1wb2ludCBudW1iZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcmFuZG9tIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yYW5kb20oMCwgNSk7XG4gICAgICogLy8gPT4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDUpO1xuICAgICAqIC8vID0+IGFsc28gYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDUsIHRydWUpO1xuICAgICAqIC8vID0+IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGJldHdlZW4gMCBhbmQgNVxuICAgICAqXG4gICAgICogXy5yYW5kb20oMS4yLCA1LjIpO1xuICAgICAqIC8vID0+IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGJldHdlZW4gMS4yIGFuZCA1LjJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByYW5kb20obG93ZXIsIHVwcGVyLCBmbG9hdGluZykge1xuICAgICAgaWYgKGZsb2F0aW5nICYmIHR5cGVvZiBmbG9hdGluZyAhPSAnYm9vbGVhbicgJiYgaXNJdGVyYXRlZUNhbGwobG93ZXIsIHVwcGVyLCBmbG9hdGluZykpIHtcbiAgICAgICAgdXBwZXIgPSBmbG9hdGluZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmIChmbG9hdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdXBwZXIgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgZmxvYXRpbmcgPSB1cHBlcjtcbiAgICAgICAgICB1cHBlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgbG93ZXIgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgZmxvYXRpbmcgPSBsb3dlcjtcbiAgICAgICAgICBsb3dlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGxvd2VyID09PSB1bmRlZmluZWQgJiYgdXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb3dlciA9IDA7XG4gICAgICAgIHVwcGVyID0gMTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBsb3dlciA9IHRvRmluaXRlKGxvd2VyKTtcbiAgICAgICAgaWYgKHVwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB1cHBlciA9IGxvd2VyO1xuICAgICAgICAgIGxvd2VyID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cHBlciA9IHRvRmluaXRlKHVwcGVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGxvd2VyID4gdXBwZXIpIHtcbiAgICAgICAgdmFyIHRlbXAgPSBsb3dlcjtcbiAgICAgICAgbG93ZXIgPSB1cHBlcjtcbiAgICAgICAgdXBwZXIgPSB0ZW1wO1xuICAgICAgfVxuICAgICAgaWYgKGZsb2F0aW5nIHx8IGxvd2VyICUgMSB8fCB1cHBlciAlIDEpIHtcbiAgICAgICAgdmFyIHJhbmQgPSBuYXRpdmVSYW5kb20oKTtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZU1pbihsb3dlciArIChyYW5kICogKHVwcGVyIC0gbG93ZXIgKyBmcmVlUGFyc2VGbG9hdCgnMWUtJyArICgocmFuZCArICcnKS5sZW5ndGggLSAxKSkpKSwgdXBwZXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VSYW5kb20obG93ZXIsIHVwcGVyKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBbY2FtZWwgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FtZWxDYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNhbWVsIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jYW1lbENhc2UoJ0ZvbyBCYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vQmFyJ1xuICAgICAqXG4gICAgICogXy5jYW1lbENhc2UoJy0tZm9vLWJhci0tJyk7XG4gICAgICogLy8gPT4gJ2Zvb0JhcidcbiAgICAgKlxuICAgICAqIF8uY2FtZWxDYXNlKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdmb29CYXInXG4gICAgICovXG4gICAgdmFyIGNhbWVsQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgd29yZCA9IHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyBjYXBpdGFsaXplKHdvcmQpIDogd29yZCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGBzdHJpbmdgIHRvIHVwcGVyIGNhc2UgYW5kIHRoZSByZW1haW5pbmdcbiAgICAgKiB0byBsb3dlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNhcGl0YWxpemUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY2FwaXRhbGl6ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNhcGl0YWxpemUoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnRnJlZCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXBpdGFsaXplKHN0cmluZykge1xuICAgICAgcmV0dXJuIHVwcGVyRmlyc3QodG9TdHJpbmcoc3RyaW5nKS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWJ1cnJzIGBzdHJpbmdgIGJ5IGNvbnZlcnRpbmdcbiAgICAgKiBbTGF0aW4tMSBTdXBwbGVtZW50XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRpbi0xX1N1cHBsZW1lbnRfKFVuaWNvZGVfYmxvY2spI0NoYXJhY3Rlcl90YWJsZSlcbiAgICAgKiBhbmQgW0xhdGluIEV4dGVuZGVkLUFdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluX0V4dGVuZGVkLUEpXG4gICAgICogbGV0dGVycyB0byBiYXNpYyBMYXRpbiBsZXR0ZXJzIGFuZCByZW1vdmluZ1xuICAgICAqIFtjb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbWJpbmluZ19EaWFjcml0aWNhbF9NYXJrcykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gZGVidXJyLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGRlYnVycmVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWJ1cnIoJ2TDqWrDoCB2dScpO1xuICAgICAqIC8vID0+ICdkZWphIHZ1J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYnVycihzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gc3RyaW5nICYmIHN0cmluZy5yZXBsYWNlKHJlTGF0aW4sIGRlYnVyckxldHRlcikucmVwbGFjZShyZUNvbWJvTWFyaywgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBlbmRzIHdpdGggdGhlIGdpdmVuIHRhcmdldCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3RhcmdldF0gVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcG9zaXRpb249c3RyaW5nLmxlbmd0aF0gVGhlIHBvc2l0aW9uIHRvIHNlYXJjaCB1cCB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHN0cmluZ2AgZW5kcyB3aXRoIGB0YXJnZXRgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZW5kc1dpdGgoJ2FiYycsICdjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2InLCAyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gZW5kc1dpdGgoc3RyaW5nLCB0YXJnZXQsIHBvc2l0aW9uKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgdGFyZ2V0ID0gYmFzZVRvU3RyaW5nKHRhcmdldCk7XG5cbiAgICAgIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbiA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gbGVuZ3RoXG4gICAgICAgIDogYmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksIDAsIGxlbmd0aCk7XG5cbiAgICAgIHZhciBlbmQgPSBwb3NpdGlvbjtcbiAgICAgIHBvc2l0aW9uIC09IHRhcmdldC5sZW5ndGg7XG4gICAgICByZXR1cm4gcG9zaXRpb24gPj0gMCAmJiBzdHJpbmcuc2xpY2UocG9zaXRpb24sIGVuZCkgPT0gdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBjaGFyYWN0ZXJzIFwiJlwiLCBcIjxcIiwgXCI+XCIsICdcIicsIGFuZCBcIidcIiBpbiBgc3RyaW5nYCB0byB0aGVpclxuICAgICAqIGNvcnJlc3BvbmRpbmcgSFRNTCBlbnRpdGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBObyBvdGhlciBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkLiBUbyBlc2NhcGUgYWRkaXRpb25hbFxuICAgICAqIGNoYXJhY3RlcnMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICAgICAqXG4gICAgICogVGhvdWdoIHRoZSBcIj5cIiBjaGFyYWN0ZXIgaXMgZXNjYXBlZCBmb3Igc3ltbWV0cnksIGNoYXJhY3RlcnMgbGlrZVxuICAgICAqIFwiPlwiIGFuZCBcIi9cIiBkb24ndCBuZWVkIGVzY2FwaW5nIGluIEhUTUwgYW5kIGhhdmUgbm8gc3BlY2lhbCBtZWFuaW5nXG4gICAgICogdW5sZXNzIHRoZXkncmUgcGFydCBvZiBhIHRhZyBvciB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUuIFNlZVxuICAgICAqIFtNYXRoaWFzIEJ5bmVucydzIGFydGljbGVdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9hbWJpZ3VvdXMtYW1wZXJzYW5kcylcbiAgICAgKiAodW5kZXIgXCJzZW1pLXJlbGF0ZWQgZnVuIGZhY3RcIikgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIFdoZW4gd29ya2luZyB3aXRoIEhUTUwgeW91IHNob3VsZCBhbHdheXNcbiAgICAgKiBbcXVvdGUgYXR0cmlidXRlIHZhbHVlc10oaHR0cDovL3dvbmtvLmNvbS9wb3N0L2h0bWwtZXNjYXBpbmcpIHRvIHJlZHVjZVxuICAgICAqIFhTUyB2ZWN0b3JzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5lc2NhcGUoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gJ2ZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlc2NhcGUoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNVbmVzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZVVuZXNjYXBlZEh0bWwsIGVzY2FwZUh0bWxDaGFyKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc2NhcGVzIHRoZSBgUmVnRXhwYCBzcGVjaWFsIGNoYXJhY3RlcnMgXCJeXCIsIFwiJFwiLCBcIlxcXCIsIFwiLlwiLCBcIipcIiwgXCIrXCIsXG4gICAgICogXCI/XCIsIFwiKFwiLCBcIilcIiwgXCJbXCIsIFwiXVwiLCBcIntcIiwgXCJ9XCIsIGFuZCBcInxcIiBpbiBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXNjYXBlUmVnRXhwKCdbbG9kYXNoXShodHRwczovL2xvZGFzaC5jb20vKScpO1xuICAgICAqIC8vID0+ICdcXFtsb2Rhc2hcXF1cXChodHRwczovL2xvZGFzaFxcLmNvbS9cXCknXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHJldHVybiAoc3RyaW5nICYmIHJlSGFzUmVnRXhwQ2hhci50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBba2ViYWIgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV0dGVyX2Nhc2UjU3BlY2lhbF9jYXNlX3N0eWxlcykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBrZWJhYiBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ua2ViYWJDYXNlKCdGb28gQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vLWJhcidcbiAgICAgKi9cbiAgICB2YXIga2ViYWJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJy0nIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIHNwYWNlIHNlcGFyYXRlZCB3b3JkcywgdG8gbG93ZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGxvd2VyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sb3dlckNhc2UoJy0tRm9vLUJhci0tJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vIGJhcidcbiAgICAgKi9cbiAgICB2YXIgbG93ZXJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byBsb3dlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sb3dlckZpcnN0KCdGcmVkJyk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiBfLmxvd2VyRmlyc3QoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnZlJFRCdcbiAgICAgKi9cbiAgICB2YXIgbG93ZXJGaXJzdCA9IGNyZWF0ZUNhc2VGaXJzdCgndG9Mb3dlckNhc2UnKTtcblxuICAgIC8qKlxuICAgICAqIFBhZHMgYHN0cmluZ2Agb24gdGhlIGxlZnQgYW5kIHJpZ2h0IHNpZGVzIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLlxuICAgICAqIFBhZGRpbmcgY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgY2FuJ3QgYmUgZXZlbmx5IGRpdmlkZWQgYnkgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWQoJ2FiYycsIDgpO1xuICAgICAqIC8vID0+ICcgIGFiYyAgICdcbiAgICAgKlxuICAgICAqIF8ucGFkKCdhYmMnLCA4LCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnXy1hYmNfLV8nXG4gICAgICpcbiAgICAgKiBfLnBhZCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgaWYgKCFsZW5ndGggfHwgc3RyTGVuZ3RoID49IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIG1pZCA9IChsZW5ndGggLSBzdHJMZW5ndGgpIC8gMjtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGNyZWF0ZVBhZGRpbmcobmF0aXZlRmxvb3IobWlkKSwgY2hhcnMpICtcbiAgICAgICAgc3RyaW5nICtcbiAgICAgICAgY3JlYXRlUGFkZGluZyhuYXRpdmVDZWlsKG1pZCksIGNoYXJzKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSByaWdodCBzaWRlIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLiBQYWRkaW5nXG4gICAgICogY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgZXhjZWVkIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHBhZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD0wXSBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFkRW5kKCdhYmMnLCA2KTtcbiAgICAgKiAvLyA9PiAnYWJjICAgJ1xuICAgICAqXG4gICAgICogXy5wYWRFbmQoJ2FiYycsIDYsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmNfLV8nXG4gICAgICpcbiAgICAgKiBfLnBhZEVuZCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWRFbmQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgcmV0dXJuIChsZW5ndGggJiYgc3RyTGVuZ3RoIDwgbGVuZ3RoKVxuICAgICAgICA/IChzdHJpbmcgKyBjcmVhdGVQYWRkaW5nKGxlbmd0aCAtIHN0ckxlbmd0aCwgY2hhcnMpKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSBsZWZ0IHNpZGUgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuIFBhZGRpbmdcbiAgICAgKiBjaGFyYWN0ZXJzIGFyZSB0cnVuY2F0ZWQgaWYgdGhleSBleGNlZWQgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWRTdGFydCgnYWJjJywgNik7XG4gICAgICogLy8gPT4gJyAgIGFiYydcbiAgICAgKlxuICAgICAqIF8ucGFkU3RhcnQoJ2FiYycsIDYsICdfLScpO1xuICAgICAqIC8vID0+ICdfLV9hYmMnXG4gICAgICpcbiAgICAgKiBfLnBhZFN0YXJ0KCdhYmMnLCAzKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhZFN0YXJ0KHN0cmluZywgbGVuZ3RoLCBjaGFycykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGxlbmd0aCA9IHRvSW50ZWdlcihsZW5ndGgpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gbGVuZ3RoID8gc3RyaW5nU2l6ZShzdHJpbmcpIDogMDtcbiAgICAgIHJldHVybiAobGVuZ3RoICYmIHN0ckxlbmd0aCA8IGxlbmd0aClcbiAgICAgICAgPyAoY3JlYXRlUGFkZGluZyhsZW5ndGggLSBzdHJMZW5ndGgsIGNoYXJzKSArIHN0cmluZylcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYW4gaW50ZWdlciBvZiB0aGUgc3BlY2lmaWVkIHJhZGl4LiBJZiBgcmFkaXhgIGlzXG4gICAgICogYHVuZGVmaW5lZGAgb3IgYDBgLCBhIGByYWRpeGAgb2YgYDEwYCBpcyB1c2VkIHVubGVzcyBgdmFsdWVgIGlzIGFcbiAgICAgKiBoZXhhZGVjaW1hbCwgaW4gd2hpY2ggY2FzZSBhIGByYWRpeGAgb2YgYDE2YCBpcyB1c2VkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGFsaWducyB3aXRoIHRoZVxuICAgICAqIFtFUzUgaW1wbGVtZW50YXRpb25dKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjEuMi4yKSBvZiBgcGFyc2VJbnRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMS4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcmFkaXg9MTBdIFRoZSByYWRpeCB0byBpbnRlcnByZXQgYHZhbHVlYCBieS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhcnNlSW50KCcwOCcpO1xuICAgICAqIC8vID0+IDhcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnNicsICcwOCcsICcxMCddLCBfLnBhcnNlSW50KTtcbiAgICAgKiAvLyA9PiBbNiwgOCwgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFyc2VJbnQoc3RyaW5nLCByYWRpeCwgZ3VhcmQpIHtcbiAgICAgIGlmIChndWFyZCB8fCByYWRpeCA9PSBudWxsKSB7XG4gICAgICAgIHJhZGl4ID0gMDtcbiAgICAgIH0gZWxzZSBpZiAocmFkaXgpIHtcbiAgICAgICAgcmFkaXggPSArcmFkaXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmF0aXZlUGFyc2VJbnQodG9TdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJyksIHJhZGl4IHx8IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGVhdHMgdGhlIGdpdmVuIHN0cmluZyBgbmAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcmVwZWF0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgc3RyaW5nLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmVwZWF0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnKicsIDMpO1xuICAgICAqIC8vID0+ICcqKionXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnYWJjJywgMik7XG4gICAgICogLy8gPT4gJ2FiY2FiYydcbiAgICAgKlxuICAgICAqIF8ucmVwZWF0KCdhYmMnLCAwKTtcbiAgICAgKiAvLyA9PiAnJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlcGVhdChzdHJpbmcsIG4sIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBuLCBndWFyZCkgOiBuID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIG4gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlUmVwZWF0KHRvU3RyaW5nKHN0cmluZyksIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIG1hdGNoZXMgZm9yIGBwYXR0ZXJuYCBpbiBgc3RyaW5nYCB3aXRoIGByZXBsYWNlbWVudGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFN0cmluZyNyZXBsYWNlYF0oaHR0cHM6Ly9tZG4uaW8vU3RyaW5nL3JlcGxhY2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVwbGFjZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gcmVwbGFjZW1lbnQgVGhlIG1hdGNoIHJlcGxhY2VtZW50LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIG1vZGlmaWVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZXBsYWNlKCdIaSBGcmVkJywgJ0ZyZWQnLCAnQmFybmV5Jyk7XG4gICAgICogLy8gPT4gJ0hpIEJhcm5leSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXBsYWNlKCkge1xuICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgc3RyaW5nID0gdG9TdHJpbmcoYXJnc1swXSk7XG5cbiAgICAgIHJldHVybiBhcmdzLmxlbmd0aCA8IDMgPyBzdHJpbmcgOiBzdHJpbmcucmVwbGFjZShhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0b1xuICAgICAqIFtzbmFrZSBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TbmFrZV9jYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNuYWtlIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zbmFrZUNhc2UoJ0ZvbyBCYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCctLUZPTy1CQVItLScpO1xuICAgICAqIC8vID0+ICdmb29fYmFyJ1xuICAgICAqL1xuICAgIHZhciBzbmFrZUNhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnXycgOiAnJykgKyB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBTcGxpdHMgYHN0cmluZ2AgYnkgYHNlcGFyYXRvcmAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFN0cmluZyNzcGxpdGBdKGh0dHBzOi8vbWRuLmlvL1N0cmluZy9zcGxpdCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gc3BsaXQuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBzZXBhcmF0b3IgVGhlIHNlcGFyYXRvciBwYXR0ZXJuIHRvIHNwbGl0IGJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGltaXRdIFRoZSBsZW5ndGggdG8gdHJ1bmNhdGUgcmVzdWx0cyB0by5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHN0cmluZyBzZWdtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zcGxpdCgnYS1iLWMnLCAnLScsIDIpO1xuICAgICAqIC8vID0+IFsnYScsICdiJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzcGxpdChzdHJpbmcsIHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIGlmIChsaW1pdCAmJiB0eXBlb2YgbGltaXQgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbWl0KSkge1xuICAgICAgICBzZXBhcmF0b3IgPSBsaW1pdCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGxpbWl0ID0gbGltaXQgPT09IHVuZGVmaW5lZCA/IE1BWF9BUlJBWV9MRU5HVEggOiBsaW1pdCA+Pj4gMDtcbiAgICAgIGlmICghbGltaXQpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKFxuICAgICAgICAgICAgdHlwZW9mIHNlcGFyYXRvciA9PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgKHNlcGFyYXRvciAhPSBudWxsICYmICFpc1JlZ0V4cChzZXBhcmF0b3IpKVxuICAgICAgICAgICkpIHtcbiAgICAgICAgc2VwYXJhdG9yID0gYmFzZVRvU3RyaW5nKHNlcGFyYXRvcik7XG4gICAgICAgIGlmICghc2VwYXJhdG9yICYmIGhhc1VuaWNvZGUoc3RyaW5nKSkge1xuICAgICAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShzdHJpbmcpLCAwLCBsaW1pdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmcuc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBbc3RhcnQgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV0dGVyX2Nhc2UjU3R5bGlzdGljX29yX3NwZWNpYWxpc2VkX3VzYWdlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0YXJ0IGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdGFydENhc2UoJy0tZm9vLWJhci0tJyk7XG4gICAgICogLy8gPT4gJ0ZvbyBCYXInXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZvbyBCYXInXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnRk9PIEJBUidcbiAgICAgKi9cbiAgICB2YXIgc3RhcnRDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgdXBwZXJGaXJzdCh3b3JkKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gdGFyZ2V0IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdGFyZ2V0XSBUaGUgc3RyaW5nIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3NpdGlvbj0wXSBUaGUgcG9zaXRpb24gdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBzdHJpbmdgIHN0YXJ0cyB3aXRoIGB0YXJnZXRgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0c1dpdGgoJ2FiYycsICdiJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2InLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhcnRzV2l0aChzdHJpbmcsIHRhcmdldCwgcG9zaXRpb24pIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uID09IG51bGxcbiAgICAgICAgPyAwXG4gICAgICAgIDogYmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksIDAsIHN0cmluZy5sZW5ndGgpO1xuXG4gICAgICB0YXJnZXQgPSBiYXNlVG9TdHJpbmcodGFyZ2V0KTtcbiAgICAgIHJldHVybiBzdHJpbmcuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgdGFyZ2V0Lmxlbmd0aCkgPT0gdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbiB0aGF0IGNhbiBpbnRlcnBvbGF0ZSBkYXRhIHByb3BlcnRpZXNcbiAgICAgKiBpbiBcImludGVycG9sYXRlXCIgZGVsaW1pdGVycywgSFRNTC1lc2NhcGUgaW50ZXJwb2xhdGVkIGRhdGEgcHJvcGVydGllcyBpblxuICAgICAqIFwiZXNjYXBlXCIgZGVsaW1pdGVycywgYW5kIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy4gRGF0YVxuICAgICAqIHByb3BlcnRpZXMgbWF5IGJlIGFjY2Vzc2VkIGFzIGZyZWUgdmFyaWFibGVzIGluIHRoZSB0ZW1wbGF0ZS4gSWYgYSBzZXR0aW5nXG4gICAgICogb2JqZWN0IGlzIGdpdmVuLCBpdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYF8udGVtcGxhdGVTZXR0aW5nc2AgdmFsdWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEluIHRoZSBkZXZlbG9wbWVudCBidWlsZCBgXy50ZW1wbGF0ZWAgdXRpbGl6ZXNcbiAgICAgKiBbc291cmNlVVJMc10oaHR0cDovL3d3dy5odG1sNXJvY2tzLmNvbS9lbi90dXRvcmlhbHMvZGV2ZWxvcGVydG9vbHMvc291cmNlbWFwcy8jdG9jLXNvdXJjZXVybClcbiAgICAgKiBmb3IgZWFzaWVyIGRlYnVnZ2luZy5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHByZWNvbXBpbGluZyB0ZW1wbGF0ZXMgc2VlXG4gICAgICogW2xvZGFzaCdzIGN1c3RvbSBidWlsZHMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9sb2Rhc2guY29tL2N1c3RvbS1idWlsZHMpLlxuICAgICAqXG4gICAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQ2hyb21lIGV4dGVuc2lvbiBzYW5kYm94ZXMgc2VlXG4gICAgICogW0Nocm9tZSdzIGV4dGVuc2lvbnMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3NhbmRib3hpbmdFdmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHRlbXBsYXRlIHN0cmluZy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuZXNjYXBlPV8udGVtcGxhdGVTZXR0aW5ncy5lc2NhcGVdXG4gICAgICogIFRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5ldmFsdWF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuZXZhbHVhdGVdXG4gICAgICogIFRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy5pbXBvcnRzPV8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXVxuICAgICAqICBBbiBvYmplY3QgdG8gaW1wb3J0IGludG8gdGhlIHRlbXBsYXRlIGFzIGZyZWUgdmFyaWFibGVzLlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5pbnRlcnBvbGF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuaW50ZXJwb2xhdGVdXG4gICAgICogIFRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zb3VyY2VVUkw9J2xvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbbl0nXVxuICAgICAqICBUaGUgc291cmNlVVJMIG9mIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudmFyaWFibGU9J29iaiddXG4gICAgICogIFRoZSBkYXRhIG9iamVjdCB2YXJpYWJsZSBuYW1lLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyIHRvIGNyZWF0ZSBhIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIDwlPSB1c2VyICU+IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnZnJlZCcgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyIHRvIGVzY2FwZSBkYXRhIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8Yj48JS0gdmFsdWUgJT48L2I+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndmFsdWUnOiAnPHNjcmlwdD4nIH0pO1xuICAgICAqIC8vID0+ICc8Yj4mbHQ7c2NyaXB0Jmd0OzwvYj4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXIgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGFuZCBnZW5lcmF0ZSBIVE1MLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIF8uZm9yRWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcnMnOiBbJ2ZyZWQnLCAnYmFybmV5J10gfSk7XG4gICAgICogLy8gPT4gJzxsaT5mcmVkPC9saT48bGk+YmFybmV5PC9saT4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGludGVybmFsIGBwcmludGAgZnVuY3Rpb24gaW4gXCJldmFsdWF0ZVwiIGRlbGltaXRlcnMuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCUgcHJpbnQoXCJoZWxsbyBcIiArIHVzZXIpOyAlPiEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ2Jhcm5leScgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGJhcm5leSEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIEVTIHRlbXBsYXRlIGxpdGVyYWwgZGVsaW1pdGVyIGFzIGFuIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogLy8gRGlzYWJsZSBzdXBwb3J0IGJ5IHJlcGxhY2luZyB0aGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyAkeyB1c2VyIH0hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdwZWJibGVzJyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gcGViYmxlcyEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgYmFja3NsYXNoZXMgdG8gdHJlYXQgZGVsaW1pdGVycyBhcyBwbGFpbiB0ZXh0LlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlPSBcIlxcXFw8JS0gdmFsdWUgJVxcXFw+XCIgJT4nKTtcbiAgICAgKiBjb21waWxlZCh7ICd2YWx1ZSc6ICdpZ25vcmVkJyB9KTtcbiAgICAgKiAvLyA9PiAnPCUtIHZhbHVlICU+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgaW1wb3J0c2Agb3B0aW9uIHRvIGltcG9ydCBgalF1ZXJ5YCBhcyBganFgLlxuICAgICAqIHZhciB0ZXh0ID0gJzwlIGpxLmVhY2godXNlcnMsIGZ1bmN0aW9uKHVzZXIpIHsgJT48bGk+PCUtIHVzZXIgJT48L2xpPjwlIH0pOyAlPic7XG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSh0ZXh0LCB7ICdpbXBvcnRzJzogeyAnanEnOiBqUXVlcnkgfSB9KTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAgICAgKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYHNvdXJjZVVSTGAgb3B0aW9uIHRvIHNwZWNpZnkgYSBjdXN0b20gc291cmNlVVJMIGZvciB0aGUgdGVtcGxhdGUuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJywgeyAnc291cmNlVVJMJzogJy9iYXNpYy9ncmVldGluZy5qc3QnIH0pO1xuICAgICAqIGNvbXBpbGVkKGRhdGEpO1xuICAgICAqIC8vID0+IEZpbmQgdGhlIHNvdXJjZSBvZiBcImdyZWV0aW5nLmpzdFwiIHVuZGVyIHRoZSBTb3VyY2VzIHRhYiBvciBSZXNvdXJjZXMgcGFuZWwgb2YgdGhlIHdlYiBpbnNwZWN0b3IuXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGB2YXJpYWJsZWAgb3B0aW9uIHRvIGVuc3VyZSBhIHdpdGgtc3RhdGVtZW50IGlzbid0IHVzZWQgaW4gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hpIDwlPSBkYXRhLnVzZXIgJT4hJywgeyAndmFyaWFibGUnOiAnZGF0YScgfSk7XG4gICAgICogY29tcGlsZWQuc291cmNlO1xuICAgICAqIC8vID0+IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgKiAvLyAgIHZhciBfX3QsIF9fcCA9ICcnO1xuICAgICAqIC8vICAgX19wICs9ICdoaSAnICsgKChfX3QgPSAoIGRhdGEudXNlciApKSA9PSBudWxsID8gJycgOiBfX3QpICsgJyEnO1xuICAgICAqIC8vICAgcmV0dXJuIF9fcDtcbiAgICAgKiAvLyB9XG4gICAgICpcbiAgICAgKiAvLyBVc2UgY3VzdG9tIHRlbXBsYXRlIGRlbGltaXRlcnMuXG4gICAgICogXy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlID0gL3t7KFtcXHNcXFNdKz8pfX0vZztcbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyB7eyB1c2VyIH19IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnbXVzdGFjaGUnIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBtdXN0YWNoZSEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGBzb3VyY2VgIHByb3BlcnR5IHRvIGlubGluZSBjb21waWxlZCB0ZW1wbGF0ZXMgZm9yIG1lYW5pbmdmdWxcbiAgICAgKiAvLyBsaW5lIG51bWJlcnMgaW4gZXJyb3IgbWVzc2FnZXMgYW5kIHN0YWNrIHRyYWNlcy5cbiAgICAgKiBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnanN0LmpzJyksICdcXFxuICAgICAqICAgdmFyIEpTVCA9IHtcXFxuICAgICAqICAgICBcIm1haW5cIjogJyArIF8udGVtcGxhdGUobWFpblRleHQpLnNvdXJjZSArICdcXFxuICAgICAqICAgfTtcXFxuICAgICAqICcpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRlbXBsYXRlKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpIHtcbiAgICAgIC8vIEJhc2VkIG9uIEpvaG4gUmVzaWcncyBgdG1wbGAgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIChodHRwOi8vZWpvaG4ub3JnL2Jsb2cvamF2YXNjcmlwdC1taWNyby10ZW1wbGF0aW5nLylcbiAgICAgIC8vIGFuZCBMYXVyYSBEb2t0b3JvdmEncyBkb1QuanMgKGh0dHBzOi8vZ2l0aHViLmNvbS9vbGFkby9kb1QpLlxuICAgICAgdmFyIHNldHRpbmdzID0gbG9kYXNoLnRlbXBsYXRlU2V0dGluZ3M7XG5cbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzdHJpbmcsIG9wdGlvbnMsIGd1YXJkKSkge1xuICAgICAgICBvcHRpb25zID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIG9wdGlvbnMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMsIHNldHRpbmdzLCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKTtcblxuICAgICAgdmFyIGltcG9ydHMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMuaW1wb3J0cywgc2V0dGluZ3MuaW1wb3J0cywgY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiksXG4gICAgICAgICAgaW1wb3J0c0tleXMgPSBrZXlzKGltcG9ydHMpLFxuICAgICAgICAgIGltcG9ydHNWYWx1ZXMgPSBiYXNlVmFsdWVzKGltcG9ydHMsIGltcG9ydHNLZXlzKTtcblxuICAgICAgdmFyIGlzRXNjYXBpbmcsXG4gICAgICAgICAgaXNFdmFsdWF0aW5nLFxuICAgICAgICAgIGluZGV4ID0gMCxcbiAgICAgICAgICBpbnRlcnBvbGF0ZSA9IG9wdGlvbnMuaW50ZXJwb2xhdGUgfHwgcmVOb01hdGNoLFxuICAgICAgICAgIHNvdXJjZSA9IFwiX19wICs9ICdcIjtcblxuICAgICAgLy8gQ29tcGlsZSB0aGUgcmVnZXhwIHRvIG1hdGNoIGVhY2ggZGVsaW1pdGVyLlxuICAgICAgdmFyIHJlRGVsaW1pdGVycyA9IFJlZ0V4cChcbiAgICAgICAgKG9wdGlvbnMuZXNjYXBlIHx8IHJlTm9NYXRjaCkuc291cmNlICsgJ3wnICtcbiAgICAgICAgaW50ZXJwb2xhdGUuc291cmNlICsgJ3wnICtcbiAgICAgICAgKGludGVycG9sYXRlID09PSByZUludGVycG9sYXRlID8gcmVFc1RlbXBsYXRlIDogcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgICAgICAob3B0aW9ucy5ldmFsdWF0ZSB8fCByZU5vTWF0Y2gpLnNvdXJjZSArICd8JCdcbiAgICAgICwgJ2cnKTtcblxuICAgICAgLy8gVXNlIGEgc291cmNlVVJMIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICAgICAgLy8gVGhlIHNvdXJjZVVSTCBnZXRzIGluamVjdGVkIGludG8gdGhlIHNvdXJjZSB0aGF0J3MgZXZhbC1lZCwgc28gYmUgY2FyZWZ1bFxuICAgICAgLy8gdG8gbm9ybWFsaXplIGFsbCBraW5kcyBvZiB3aGl0ZXNwYWNlLCBzbyBlLmcuIG5ld2xpbmVzIChhbmQgdW5pY29kZSB2ZXJzaW9ucyBvZiBpdCkgY2FuJ3Qgc25lYWsgaW5cbiAgICAgIC8vIGFuZCBlc2NhcGUgdGhlIGNvbW1lbnQsIHRodXMgaW5qZWN0aW5nIGNvZGUgdGhhdCBnZXRzIGV2YWxlZC5cbiAgICAgIHZhciBzb3VyY2VVUkwgPSAnLy8jIHNvdXJjZVVSTD0nICtcbiAgICAgICAgKGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3NvdXJjZVVSTCcpXG4gICAgICAgICAgPyAob3B0aW9ucy5zb3VyY2VVUkwgKyAnJykucmVwbGFjZSgvXFxzL2csICcgJylcbiAgICAgICAgICA6ICgnbG9kYXNoLnRlbXBsYXRlU291cmNlc1snICsgKCsrdGVtcGxhdGVDb3VudGVyKSArICddJylcbiAgICAgICAgKSArICdcXG4nO1xuXG4gICAgICBzdHJpbmcucmVwbGFjZShyZURlbGltaXRlcnMsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGVWYWx1ZSwgaW50ZXJwb2xhdGVWYWx1ZSwgZXNUZW1wbGF0ZVZhbHVlLCBldmFsdWF0ZVZhbHVlLCBvZmZzZXQpIHtcbiAgICAgICAgaW50ZXJwb2xhdGVWYWx1ZSB8fCAoaW50ZXJwb2xhdGVWYWx1ZSA9IGVzVGVtcGxhdGVWYWx1ZSk7XG5cbiAgICAgICAgLy8gRXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBjYW4ndCBiZSBpbmNsdWRlZCBpbiBzdHJpbmcgbGl0ZXJhbHMuXG4gICAgICAgIHNvdXJjZSArPSBzdHJpbmcuc2xpY2UoaW5kZXgsIG9mZnNldCkucmVwbGFjZShyZVVuZXNjYXBlZFN0cmluZywgZXNjYXBlU3RyaW5nQ2hhcik7XG5cbiAgICAgICAgLy8gUmVwbGFjZSBkZWxpbWl0ZXJzIHdpdGggc25pcHBldHMuXG4gICAgICAgIGlmIChlc2NhcGVWYWx1ZSkge1xuICAgICAgICAgIGlzRXNjYXBpbmcgPSB0cnVlO1xuICAgICAgICAgIHNvdXJjZSArPSBcIicgK1xcbl9fZShcIiArIGVzY2FwZVZhbHVlICsgXCIpICtcXG4nXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2YWx1YXRlVmFsdWUpIHtcbiAgICAgICAgICBpc0V2YWx1YXRpbmcgPSB0cnVlO1xuICAgICAgICAgIHNvdXJjZSArPSBcIic7XFxuXCIgKyBldmFsdWF0ZVZhbHVlICsgXCI7XFxuX19wICs9ICdcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW50ZXJwb2xhdGVWYWx1ZSkge1xuICAgICAgICAgIHNvdXJjZSArPSBcIicgK1xcbigoX190ID0gKFwiICsgaW50ZXJwb2xhdGVWYWx1ZSArIFwiKSkgPT0gbnVsbCA/ICcnIDogX190KSArXFxuJ1wiO1xuICAgICAgICB9XG4gICAgICAgIGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoO1xuXG4gICAgICAgIC8vIFRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgcHJvZHVjdHMgbmVlZHMgYG1hdGNoYCByZXR1cm5lZCBpblxuICAgICAgICAvLyBvcmRlciB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IGBvZmZzZXRgIHZhbHVlLlxuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9KTtcblxuICAgICAgc291cmNlICs9IFwiJztcXG5cIjtcblxuICAgICAgLy8gSWYgYHZhcmlhYmxlYCBpcyBub3Qgc3BlY2lmaWVkIHdyYXAgYSB3aXRoLXN0YXRlbWVudCBhcm91bmQgdGhlIGdlbmVyYXRlZFxuICAgICAgLy8gY29kZSB0byBhZGQgdGhlIGRhdGEgb2JqZWN0IHRvIHRoZSB0b3Agb2YgdGhlIHNjb3BlIGNoYWluLlxuICAgICAgdmFyIHZhcmlhYmxlID0gaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLCAndmFyaWFibGUnKSAmJiBvcHRpb25zLnZhcmlhYmxlO1xuICAgICAgaWYgKCF2YXJpYWJsZSkge1xuICAgICAgICBzb3VyY2UgPSAnd2l0aCAob2JqKSB7XFxuJyArIHNvdXJjZSArICdcXG59XFxuJztcbiAgICAgIH1cbiAgICAgIC8vIENsZWFudXAgY29kZSBieSBzdHJpcHBpbmcgZW1wdHkgc3RyaW5ncy5cbiAgICAgIHNvdXJjZSA9IChpc0V2YWx1YXRpbmcgPyBzb3VyY2UucmVwbGFjZShyZUVtcHR5U3RyaW5nTGVhZGluZywgJycpIDogc291cmNlKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nTWlkZGxlLCAnJDEnKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nVHJhaWxpbmcsICckMTsnKTtcblxuICAgICAgLy8gRnJhbWUgY29kZSBhcyB0aGUgZnVuY3Rpb24gYm9keS5cbiAgICAgIHNvdXJjZSA9ICdmdW5jdGlvbignICsgKHZhcmlhYmxlIHx8ICdvYmonKSArICcpIHtcXG4nICtcbiAgICAgICAgKHZhcmlhYmxlXG4gICAgICAgICAgPyAnJ1xuICAgICAgICAgIDogJ29iaiB8fCAob2JqID0ge30pO1xcbidcbiAgICAgICAgKSArXG4gICAgICAgIFwidmFyIF9fdCwgX19wID0gJydcIiArXG4gICAgICAgIChpc0VzY2FwaW5nXG4gICAgICAgICAgID8gJywgX19lID0gXy5lc2NhcGUnXG4gICAgICAgICAgIDogJydcbiAgICAgICAgKSArXG4gICAgICAgIChpc0V2YWx1YXRpbmdcbiAgICAgICAgICA/ICcsIF9faiA9IEFycmF5LnByb3RvdHlwZS5qb2luO1xcbicgK1xuICAgICAgICAgICAgXCJmdW5jdGlvbiBwcmludCgpIHsgX19wICs9IF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH1cXG5cIlxuICAgICAgICAgIDogJztcXG4nXG4gICAgICAgICkgK1xuICAgICAgICBzb3VyY2UgK1xuICAgICAgICAncmV0dXJuIF9fcFxcbn0nO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYXR0ZW1wdChmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uKGltcG9ydHNLZXlzLCBzb3VyY2VVUkwgKyAncmV0dXJuICcgKyBzb3VyY2UpXG4gICAgICAgICAgLmFwcGx5KHVuZGVmaW5lZCwgaW1wb3J0c1ZhbHVlcyk7XG4gICAgICB9KTtcblxuICAgICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24ncyBzb3VyY2UgYnkgaXRzIGB0b1N0cmluZ2AgbWV0aG9kIG9yXG4gICAgICAvLyB0aGUgYHNvdXJjZWAgcHJvcGVydHkgYXMgYSBjb252ZW5pZW5jZSBmb3IgaW5saW5pbmcgY29tcGlsZWQgdGVtcGxhdGVzLlxuICAgICAgcmVzdWx0LnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgIGlmIChpc0Vycm9yKHJlc3VsdCkpIHtcbiAgICAgICAgdGhyb3cgcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gbG93ZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvTG93ZXJDYXNlXShodHRwczovL21kbi5pby90b0xvd2VyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBsb3dlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9Mb3dlcignLS1Gb28tQmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1mb28tYmFyLS0nXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb29iYXInXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ19fZm9vX2Jhcl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTG93ZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gdXBwZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvVXBwZXJDYXNlXShodHRwczovL21kbi5pby90b1VwcGVyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1cHBlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9VcHBlcignLS1mb28tYmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1GT08tQkFSLS0nXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGT09CQVInXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICogLy8gPT4gJ19fRk9PX0JBUl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvVXBwZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW0oJyAgYWJjICAnKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy50cmltKCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy5tYXAoWycgIGZvbyAgJywgJyAgYmFyICAnXSwgXy50cmltKTtcbiAgICAgKiAvLyA9PiBbJ2ZvbycsICdiYXInXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyaW0oc3RyaW5nLCBjaGFycywgZ3VhcmQpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBpZiAoc3RyaW5nICYmIChndWFyZCB8fCBjaGFycyA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXN0cmluZyB8fCAhKGNoYXJzID0gYmFzZVRvU3RyaW5nKGNoYXJzKSkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpLFxuICAgICAgICAgIGNoclN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KGNoYXJzKSxcbiAgICAgICAgICBzdGFydCA9IGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSxcbiAgICAgICAgICBlbmQgPSBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpICsgMTtcblxuICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJTeW1ib2xzLCBzdGFydCwgZW5kKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW1FbmQoJyAgYWJjICAnKTtcbiAgICAgKiAvLyA9PiAnICBhYmMnXG4gICAgICpcbiAgICAgKiBfLnRyaW1FbmQoJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICctXy1hYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbUVuZChzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW1FbmQsICcnKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RyaW5nIHx8ICEoY2hhcnMgPSBiYXNlVG9TdHJpbmcoY2hhcnMpKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyksXG4gICAgICAgICAgZW5kID0gY2hhcnNFbmRJbmRleChzdHJTeW1ib2xzLCBzdHJpbmdUb0FycmF5KGNoYXJzKSkgKyAxO1xuXG4gICAgICByZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDAsIGVuZCkuam9pbignJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBsZWFkaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW1TdGFydCgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICdhYmMgICdcbiAgICAgKlxuICAgICAqIF8udHJpbVN0YXJ0KCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjLV8tJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyaW1TdGFydChzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW1TdGFydCwgJycpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdHJpbmcgfHwgIShjaGFycyA9IGJhc2VUb1N0cmluZyhjaGFycykpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgc3RyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoc3RyaW5nKSxcbiAgICAgICAgICBzdGFydCA9IGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBzdHJpbmdUb0FycmF5KGNoYXJzKSk7XG5cbiAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scywgc3RhcnQpLmpvaW4oJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRydW5jYXRlcyBgc3RyaW5nYCBpZiBpdCdzIGxvbmdlciB0aGFuIHRoZSBnaXZlbiBtYXhpbXVtIHN0cmluZyBsZW5ndGguXG4gICAgICogVGhlIGxhc3QgY2hhcmFjdGVycyBvZiB0aGUgdHJ1bmNhdGVkIHN0cmluZyBhcmUgcmVwbGFjZWQgd2l0aCB0aGUgb21pc3Npb25cbiAgICAgKiBzdHJpbmcgd2hpY2ggZGVmYXVsdHMgdG8gXCIuLi5cIi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cnVuY2F0ZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubGVuZ3RoPTMwXSBUaGUgbWF4aW11bSBzdHJpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vbWlzc2lvbj0nLi4uJ10gVGhlIHN0cmluZyB0byBpbmRpY2F0ZSB0ZXh0IGlzIG9taXR0ZWQuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBbb3B0aW9ucy5zZXBhcmF0b3JdIFRoZSBzZXBhcmF0b3IgcGF0dGVybiB0byB0cnVuY2F0ZSB0by5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cnVuY2F0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJyk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hiby4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnbGVuZ3RoJzogMjQsXG4gICAgICogICAnc2VwYXJhdG9yJzogJyAnXG4gICAgICogfSk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZSwuLi4nXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAqICAgJ2xlbmd0aCc6IDI0LFxuICAgICAqICAgJ3NlcGFyYXRvcic6IC8sPyArL1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+ICdoaS1kaWRkbHktaG8gdGhlcmUuLi4nXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAqICAgJ29taXNzaW9uJzogJyBbLi4uXSdcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnIFsuLi5dJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRydW5jYXRlKHN0cmluZywgb3B0aW9ucykge1xuICAgICAgdmFyIGxlbmd0aCA9IERFRkFVTFRfVFJVTkNfTEVOR1RILFxuICAgICAgICAgIG9taXNzaW9uID0gREVGQVVMVF9UUlVOQ19PTUlTU0lPTjtcblxuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIHZhciBzZXBhcmF0b3IgPSAnc2VwYXJhdG9yJyBpbiBvcHRpb25zID8gb3B0aW9ucy5zZXBhcmF0b3IgOiBzZXBhcmF0b3I7XG4gICAgICAgIGxlbmd0aCA9ICdsZW5ndGgnIGluIG9wdGlvbnMgPyB0b0ludGVnZXIob3B0aW9ucy5sZW5ndGgpIDogbGVuZ3RoO1xuICAgICAgICBvbWlzc2lvbiA9ICdvbWlzc2lvbicgaW4gb3B0aW9ucyA/IGJhc2VUb1N0cmluZyhvcHRpb25zLm9taXNzaW9uKSA6IG9taXNzaW9uO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG4gICAgICBpZiAoaGFzVW5pY29kZShzdHJpbmcpKSB7XG4gICAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpO1xuICAgICAgICBzdHJMZW5ndGggPSBzdHJTeW1ib2xzLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGlmIChsZW5ndGggPj0gc3RyTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgZW5kID0gbGVuZ3RoIC0gc3RyaW5nU2l6ZShvbWlzc2lvbik7XG4gICAgICBpZiAoZW5kIDwgMSkge1xuICAgICAgICByZXR1cm4gb21pc3Npb247XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gc3RyU3ltYm9sc1xuICAgICAgICA/IGNhc3RTbGljZShzdHJTeW1ib2xzLCAwLCBlbmQpLmpvaW4oJycpXG4gICAgICAgIDogc3RyaW5nLnNsaWNlKDAsIGVuZCk7XG5cbiAgICAgIGlmIChzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0ICsgb21pc3Npb247XG4gICAgICB9XG4gICAgICBpZiAoc3RyU3ltYm9scykge1xuICAgICAgICBlbmQgKz0gKHJlc3VsdC5sZW5ndGggLSBlbmQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVnRXhwKHNlcGFyYXRvcikpIHtcbiAgICAgICAgaWYgKHN0cmluZy5zbGljZShlbmQpLnNlYXJjaChzZXBhcmF0b3IpKSB7XG4gICAgICAgICAgdmFyIG1hdGNoLFxuICAgICAgICAgICAgICBzdWJzdHJpbmcgPSByZXN1bHQ7XG5cbiAgICAgICAgICBpZiAoIXNlcGFyYXRvci5nbG9iYWwpIHtcbiAgICAgICAgICAgIHNlcGFyYXRvciA9IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCB0b1N0cmluZyhyZUZsYWdzLmV4ZWMoc2VwYXJhdG9yKSkgKyAnZycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXBhcmF0b3IubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICB3aGlsZSAoKG1hdGNoID0gc2VwYXJhdG9yLmV4ZWMoc3Vic3RyaW5nKSkpIHtcbiAgICAgICAgICAgIHZhciBuZXdFbmQgPSBtYXRjaC5pbmRleDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIG5ld0VuZCA9PT0gdW5kZWZpbmVkID8gZW5kIDogbmV3RW5kKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzdHJpbmcuaW5kZXhPZihiYXNlVG9TdHJpbmcoc2VwYXJhdG9yKSwgZW5kKSAhPSBlbmQpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gcmVzdWx0Lmxhc3RJbmRleE9mKHNlcGFyYXRvcik7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdCArIG9taXNzaW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpbnZlcnNlIG9mIGBfLmVzY2FwZWA7IHRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBIVE1MIGVudGl0aWVzXG4gICAgICogYCZhbXA7YCwgYCZsdDtgLCBgJmd0O2AsIGAmcXVvdDtgLCBhbmQgYCYjMzk7YCBpbiBgc3RyaW5nYCB0b1xuICAgICAqIHRoZWlyIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBObyBvdGhlciBIVE1MIGVudGl0aWVzIGFyZSB1bmVzY2FwZWQuIFRvIHVuZXNjYXBlIGFkZGl0aW9uYWxcbiAgICAgKiBIVE1MIGVudGl0aWVzIHVzZSBhIHRoaXJkLXBhcnR5IGxpYnJhcnkgbGlrZSBbX2hlX10oaHR0cHM6Ly9tdGhzLmJlL2hlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjYuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB1bmVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1bmVzY2FwZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuZXNjYXBlKCdmcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5lc2NhcGUoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNFc2NhcGVkSHRtbC50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVFc2NhcGVkSHRtbCwgdW5lc2NhcGVIdG1sQ2hhcilcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIHNwYWNlIHNlcGFyYXRlZCB3b3JkcywgdG8gdXBwZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVwcGVyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJy0tZm9vLWJhcicpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICovXG4gICAgdmFyIHVwcGVyQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICcgJyA6ICcnKSArIHdvcmQudG9VcHBlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gdXBwZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udXBwZXJGaXJzdCgnZnJlZCcpO1xuICAgICAqIC8vID0+ICdGcmVkJ1xuICAgICAqXG4gICAgICogXy51cHBlckZpcnN0KCdGUkVEJyk7XG4gICAgICogLy8gPT4gJ0ZSRUQnXG4gICAgICovXG4gICAgdmFyIHVwcGVyRmlyc3QgPSBjcmVhdGVDYXNlRmlyc3QoJ3RvVXBwZXJDYXNlJyk7XG5cbiAgICAvKipcbiAgICAgKiBTcGxpdHMgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtwYXR0ZXJuXSBUaGUgcGF0dGVybiB0byBtYXRjaCB3b3Jkcy5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gWydmcmVkJywgJ2Jhcm5leScsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJywgL1teLCBdKy9nKTtcbiAgICAgKiAvLyA9PiBbJ2ZyZWQnLCAnYmFybmV5JywgJyYnLCAncGViYmxlcyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gd29yZHMoc3RyaW5nLCBwYXR0ZXJuLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHBhdHRlcm4gPSBndWFyZCA/IHVuZGVmaW5lZCA6IHBhdHRlcm47XG5cbiAgICAgIGlmIChwYXR0ZXJuID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGhhc1VuaWNvZGVXb3JkKHN0cmluZykgPyB1bmljb2RlV29yZHMoc3RyaW5nKSA6IGFzY2lpV29yZHMoc3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmcubWF0Y2gocGF0dGVybikgfHwgW107XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQXR0ZW1wdHMgdG8gaW52b2tlIGBmdW5jYCwgcmV0dXJuaW5nIGVpdGhlciB0aGUgcmVzdWx0IG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAgICAgKiBvYmplY3QuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhdHRlbXB0LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBgZnVuY2AgcmVzdWx0IG9yIGVycm9yIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgdGhyb3dpbmcgZXJyb3JzIGZvciBpbnZhbGlkIHNlbGVjdG9ycy5cbiAgICAgKiB2YXIgZWxlbWVudHMgPSBfLmF0dGVtcHQoZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgICAgKiAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAgICAgKiB9LCAnPl8+Jyk7XG4gICAgICpcbiAgICAgKiBpZiAoXy5pc0Vycm9yKGVsZW1lbnRzKSkge1xuICAgICAqICAgZWxlbWVudHMgPSBbXTtcbiAgICAgKiB9XG4gICAgICovXG4gICAgdmFyIGF0dGVtcHQgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdW5kZWZpbmVkLCBhcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGlzRXJyb3IoZSkgPyBlIDogbmV3IEVycm9yKGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQmluZHMgbWV0aG9kcyBvZiBhbiBvYmplY3QgdG8gdGhlIG9iamVjdCBpdHNlbGYsIG92ZXJ3cml0aW5nIHRoZSBleGlzdGluZ1xuICAgICAqIG1ldGhvZC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBib3VuZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBiaW5kIGFuZCBhc3NpZ24gdGhlIGJvdW5kIG1ldGhvZHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gbWV0aG9kTmFtZXMgVGhlIG9iamVjdCBtZXRob2QgbmFtZXMgdG8gYmluZC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdmlldyA9IHtcbiAgICAgKiAgICdsYWJlbCc6ICdkb2NzJyxcbiAgICAgKiAgICdjbGljayc6IGZ1bmN0aW9uKCkge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnY2xpY2tlZCAnICsgdGhpcy5sYWJlbCk7XG4gICAgICogICB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8uYmluZEFsbCh2aWV3LCBbJ2NsaWNrJ10pO1xuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCB2aWV3LmNsaWNrKTtcbiAgICAgKiAvLyA9PiBMb2dzICdjbGlja2VkIGRvY3MnIHdoZW4gY2xpY2tlZC5cbiAgICAgKi9cbiAgICB2YXIgYmluZEFsbCA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgbWV0aG9kTmFtZXMpIHtcbiAgICAgIGFycmF5RWFjaChtZXRob2ROYW1lcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGtleSA9IHRvS2V5KGtleSk7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgYmluZChvYmplY3Rba2V5XSwgb2JqZWN0KSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpdGVyYXRlcyBvdmVyIGBwYWlyc2AgYW5kIGludm9rZXMgdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgKiBmdW5jdGlvbiBvZiB0aGUgZmlyc3QgcHJlZGljYXRlIHRvIHJldHVybiB0cnV0aHkuIFRoZSBwcmVkaWNhdGUtZnVuY3Rpb25cbiAgICAgKiBwYWlycyBhcmUgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZSBjcmVhdGVkXG4gICAgICogZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhaXJzIFRoZSBwcmVkaWNhdGUtZnVuY3Rpb24gcGFpcnMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8uY29uZChbXG4gICAgICogICBbXy5tYXRjaGVzKHsgJ2EnOiAxIH0pLCAgICAgICAgICAgXy5jb25zdGFudCgnbWF0Y2hlcyBBJyldLFxuICAgICAqICAgW18uY29uZm9ybXMoeyAnYic6IF8uaXNOdW1iZXIgfSksIF8uY29uc3RhbnQoJ21hdGNoZXMgQicpXSxcbiAgICAgKiAgIFtfLnN0dWJUcnVlLCAgICAgICAgICAgICAgICAgICAgICBfLmNvbnN0YW50KCdubyBtYXRjaCcpXVxuICAgICAqIF0pO1xuICAgICAqXG4gICAgICogZnVuYyh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+ICdtYXRjaGVzIEEnXG4gICAgICpcbiAgICAgKiBmdW5jKHsgJ2EnOiAwLCAnYic6IDEgfSk7XG4gICAgICogLy8gPT4gJ21hdGNoZXMgQidcbiAgICAgKlxuICAgICAqIGZ1bmMoeyAnYSc6ICcxJywgJ2InOiAnMicgfSk7XG4gICAgICogLy8gPT4gJ25vIG1hdGNoJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmQocGFpcnMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwYWlycyA9PSBudWxsID8gMCA6IHBhaXJzLmxlbmd0aCxcbiAgICAgICAgICB0b0l0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoKTtcblxuICAgICAgcGFpcnMgPSAhbGVuZ3RoID8gW10gOiBhcnJheU1hcChwYWlycywgZnVuY3Rpb24ocGFpcikge1xuICAgICAgICBpZiAodHlwZW9mIHBhaXJbMV0gIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3RvSXRlcmF0ZWUocGFpclswXSksIHBhaXJbMV1dO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIHZhciBwYWlyID0gcGFpcnNbaW5kZXhdO1xuICAgICAgICAgIGlmIChhcHBseShwYWlyWzBdLCB0aGlzLCBhcmdzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGx5KHBhaXJbMV0sIHRoaXMsIGFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgcHJlZGljYXRlIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgd2l0aFxuICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHZhbHVlcyBvZiBhIGdpdmVuIG9iamVjdCwgcmV0dXJuaW5nIGB0cnVlYCBpZlxuICAgICAqIGFsbCBwcmVkaWNhdGVzIHJldHVybiB0cnV0aHksIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY3JlYXRlZCBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGBfLmNvbmZvcm1zVG9gIHdpdGhcbiAgICAgKiBgc291cmNlYCBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAyLCAnYic6IDEgfSxcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLmNvbmZvcm1zKHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMTsgfSB9KSk7XG4gICAgICogLy8gPT4gW3sgJ2EnOiAxLCAnYic6IDIgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25mb3Jtcyhzb3VyY2UpIHtcbiAgICAgIHJldHVybiBiYXNlQ29uZm9ybXMoYmFzZUNsb25lKHNvdXJjZSwgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbnN0YW50IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IF8udGltZXMoMiwgXy5jb25zdGFudCh7ICdhJzogMSB9KSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEgfSwgeyAnYSc6IDEgfV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBgdmFsdWVgIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZGVmYXVsdCB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQgaW5cbiAgICAgKiBpdHMgcGxhY2UuIFRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBgbnVsbGAsXG4gICAgICogb3IgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0geyp9IGRlZmF1bHRWYWx1ZSBUaGUgZGVmYXVsdCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdFRvKDEsIDEwKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiBfLmRlZmF1bHRUbyh1bmRlZmluZWQsIDEwKTtcbiAgICAgKiAvLyA9PiAxMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlZmF1bHRUbyh2YWx1ZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gKHZhbHVlID09IG51bGwgfHwgdmFsdWUgIT09IHZhbHVlKSA/IGRlZmF1bHRWYWx1ZSA6IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGUgZ2l2ZW4gZnVuY3Rpb25zXG4gICAgICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24sIHdoZXJlIGVhY2ggc3VjY2Vzc2l2ZVxuICAgICAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbZnVuY3NdIFRoZSBmdW5jdGlvbnMgdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvc2l0ZSBmdW5jdGlvbi5cbiAgICAgKiBAc2VlIF8uZmxvd1JpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFkZFNxdWFyZSA9IF8uZmxvdyhbXy5hZGQsIHNxdWFyZV0pO1xuICAgICAqIGFkZFNxdWFyZSgxLCAyKTtcbiAgICAgKiAvLyA9PiA5XG4gICAgICovXG4gICAgdmFyIGZsb3cgPSBjcmVhdGVGbG93KCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsb3dgIGV4Y2VwdCB0aGF0IGl0IGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0XG4gICAgICogaW52b2tlcyB0aGUgZ2l2ZW4gZnVuY3Rpb25zIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtmdW5jc10gVGhlIGZ1bmN0aW9ucyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBzZWUgXy5mbG93XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFkZFNxdWFyZSA9IF8uZmxvd1JpZ2h0KFtzcXVhcmUsIF8uYWRkXSk7XG4gICAgICogYWRkU3F1YXJlKDEsIDIpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKi9cbiAgICB2YXIgZmxvd1JpZ2h0ID0gY3JlYXRlRmxvdyh0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWRcbiAgICAgKiBmdW5jdGlvbi4gSWYgYGZ1bmNgIGlzIGEgcHJvcGVydHkgbmFtZSwgdGhlIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJucyB0aGVcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZSBmb3IgYSBnaXZlbiBlbGVtZW50LiBJZiBgZnVuY2AgaXMgYW4gYXJyYXkgb3Igb2JqZWN0LCB0aGVcbiAgICAgKiBjcmVhdGVkIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgIGZvciBlbGVtZW50cyB0aGF0IGNvbnRhaW4gdGhlIGVxdWl2YWxlbnRcbiAgICAgKiBzb3VyY2UgcHJvcGVydGllcywgb3RoZXJ3aXNlIGl0IHJldHVybnMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsqfSBbZnVuYz1fLmlkZW50aXR5XSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhIGNhbGxiYWNrLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY2FsbGJhY2suXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8uaXRlcmF0ZWUoeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9KSk7XG4gICAgICogLy8gPT4gW3sgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9XVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCBfLml0ZXJhdGVlKFsndXNlcicsICdmcmVkJ10pKTtcbiAgICAgKiAvLyA9PiBbeyAndXNlcic6ICdmcmVkJywgJ2FnZSc6IDQwIH1dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcCh1c2VycywgXy5pdGVyYXRlZSgndXNlcicpKTtcbiAgICAgKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIENyZWF0ZSBjdXN0b20gaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKiBfLml0ZXJhdGVlID0gXy53cmFwKF8uaXRlcmF0ZWUsIGZ1bmN0aW9uKGl0ZXJhdGVlLCBmdW5jKSB7XG4gICAgICogICByZXR1cm4gIV8uaXNSZWdFeHAoZnVuYykgPyBpdGVyYXRlZShmdW5jKSA6IGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAqICAgICByZXR1cm4gZnVuYy50ZXN0KHN0cmluZyk7XG4gICAgICogICB9O1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIoWydhYmMnLCAnZGVmJ10sIC9lZi8pO1xuICAgICAqIC8vID0+IFsnZGVmJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpdGVyYXRlZShmdW5jKSB7XG4gICAgICByZXR1cm4gYmFzZUl0ZXJhdGVlKHR5cGVvZiBmdW5jID09ICdmdW5jdGlvbicgPyBmdW5jIDogYmFzZUNsb25lKGZ1bmMsIENMT05FX0RFRVBfRkxBRykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcGFydGlhbCBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiBhIGdpdmVuXG4gICAgICogb2JqZWN0IGFuZCBgc291cmNlYCwgcmV0dXJuaW5nIGB0cnVlYCBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGhhcyBlcXVpdmFsZW50XG4gICAgICogcHJvcGVydHkgdmFsdWVzLCBlbHNlIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhlIGNyZWF0ZWQgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBgXy5pc01hdGNoYCB3aXRoIGBzb3VyY2VgXG4gICAgICogcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdCBgc291cmNlYFxuICAgICAqIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlIGBfLmlzRXF1YWxgXG4gICAgICogZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTXVsdGlwbGUgdmFsdWVzIGNhbiBiZSBjaGVja2VkIGJ5IGNvbWJpbmluZyBzZXZlcmFsIG1hdGNoZXJzXG4gICAgICogdXNpbmcgYF8ub3ZlclNvbWVgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSxcbiAgICAgKiAgIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8ubWF0Y2hlcyh7ICdhJzogNCwgJ2MnOiA2IH0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1dXG4gICAgICpcbiAgICAgKiAvLyBDaGVja2luZyBmb3Igc2V2ZXJhbCBwb3NzaWJsZSB2YWx1ZXNcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLm92ZXJTb21lKFtfLm1hdGNoZXMoeyAnYSc6IDEgfSksIF8ubWF0Y2hlcyh7ICdhJzogNCB9KV0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hdGNoZXMoc291cmNlKSB7XG4gICAgICByZXR1cm4gYmFzZU1hdGNoZXMoYmFzZUNsb25lKHNvdXJjZSwgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHRoZVxuICAgICAqIHZhbHVlIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdCB0byBgc3JjVmFsdWVgLCByZXR1cm5pbmcgYHRydWVgIGlmIHRoZVxuICAgICAqIG9iamVjdCB2YWx1ZSBpcyBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogUGFydGlhbCBjb21wYXJpc29ucyB3aWxsIG1hdGNoIGVtcHR5IGFycmF5IGFuZCBlbXB0eSBvYmplY3RcbiAgICAgKiBgc3JjVmFsdWVgIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlXG4gICAgICogYF8uaXNFcXVhbGAgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTXVsdGlwbGUgdmFsdWVzIGNhbiBiZSBjaGVja2VkIGJ5IGNvbWJpbmluZyBzZXZlcmFsIG1hdGNoZXJzXG4gICAgICogdXNpbmcgYF8ub3ZlclNvbWVgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSxcbiAgICAgKiAgIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZChvYmplY3RzLCBfLm1hdGNoZXNQcm9wZXJ0eSgnYScsIDQpKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfVxuICAgICAqXG4gICAgICogLy8gQ2hlY2tpbmcgZm9yIHNldmVyYWwgcG9zc2libGUgdmFsdWVzXG4gICAgICogXy5maWx0ZXIob2JqZWN0cywgXy5vdmVyU29tZShbXy5tYXRjaGVzUHJvcGVydHkoJ2EnLCAxKSwgXy5tYXRjaGVzUHJvcGVydHkoJ2EnLCA0KV0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCwgYmFzZUNsb25lKHNyY1ZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBtZXRob2QgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICAgICAqIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZS5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSB0aGUgbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgaW52b2tlciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogeyAnYic6IF8uY29uc3RhbnQoMikgfSB9LFxuICAgICAqICAgeyAnYSc6IHsgJ2InOiBfLmNvbnN0YW50KDEpIH0gfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLm1ldGhvZCgnYS5iJykpO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqXG4gICAgICogXy5tYXAob2JqZWN0cywgXy5tZXRob2QoWydhJywgJ2InXSkpO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIHZhciBtZXRob2QgPSBiYXNlUmVzdChmdW5jdGlvbihwYXRoLCBhcmdzKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncyk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLm1ldGhvZGA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXNcbiAgICAgKiB0aGUgbWV0aG9kIGF0IGEgZ2l2ZW4gcGF0aCBvZiBgb2JqZWN0YC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZVxuICAgICAqIHByb3ZpZGVkIHRvIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjcuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZva2VyIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBfLnRpbWVzKDMsIF8uY29uc3RhbnQpLFxuICAgICAqICAgICBvYmplY3QgPSB7ICdhJzogYXJyYXksICdiJzogYXJyYXksICdjJzogYXJyYXkgfTtcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnYVsyXScsICdjWzBdJ10sIF8ubWV0aG9kT2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICpcbiAgICAgKiBfLm1hcChbWydhJywgJzInXSwgWydjJywgJzAnXV0sIF8ubWV0aG9kT2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICovXG4gICAgdmFyIG1ldGhvZE9mID0gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBhcmdzKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICByZXR1cm4gYmFzZUludm9rZShvYmplY3QsIHBhdGgsIGFyZ3MpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEFkZHMgYWxsIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBmdW5jdGlvbiBwcm9wZXJ0aWVzIG9mIGEgc291cmNlXG4gICAgICogb2JqZWN0IHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QuIElmIGBvYmplY3RgIGlzIGEgZnVuY3Rpb24sIHRoZW4gbWV0aG9kc1xuICAgICAqIGFyZSBhZGRlZCB0byBpdHMgcHJvdG90eXBlIGFzIHdlbGwuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVXNlIGBfLnJ1bkluQ29udGV4dGAgdG8gY3JlYXRlIGEgcHJpc3RpbmUgYGxvZGFzaGAgZnVuY3Rpb24gdG9cbiAgICAgKiBhdm9pZCBjb25mbGljdHMgY2F1c2VkIGJ5IG1vZGlmeWluZyB0aGUgb3JpZ2luYWwuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258T2JqZWN0fSBbb2JqZWN0PWxvZGFzaF0gVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgZnVuY3Rpb25zIHRvIGFkZC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmNoYWluPXRydWVdIFNwZWNpZnkgd2hldGhlciBtaXhpbnMgYXJlIGNoYWluYWJsZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb258T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiB2b3dlbHMoc3RyaW5nKSB7XG4gICAgICogICByZXR1cm4gXy5maWx0ZXIoc3RyaW5nLCBmdW5jdGlvbih2KSB7XG4gICAgICogICAgIHJldHVybiAvW2FlaW91XS9pLnRlc3Qodik7XG4gICAgICogICB9KTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLm1peGluKHsgJ3Zvd2Vscyc6IHZvd2VscyB9KTtcbiAgICAgKiBfLnZvd2VscygnZnJlZCcpO1xuICAgICAqIC8vID0+IFsnZSddXG4gICAgICpcbiAgICAgKiBfKCdmcmVkJykudm93ZWxzKCkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbJ2UnXVxuICAgICAqXG4gICAgICogXy5taXhpbih7ICd2b3dlbHMnOiB2b3dlbHMgfSwgeyAnY2hhaW4nOiBmYWxzZSB9KTtcbiAgICAgKiBfKCdmcmVkJykudm93ZWxzKCk7XG4gICAgICogLy8gPT4gWydlJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtaXhpbihvYmplY3QsIHNvdXJjZSwgb3B0aW9ucykge1xuICAgICAgdmFyIHByb3BzID0ga2V5cyhzb3VyY2UpLFxuICAgICAgICAgIG1ldGhvZE5hbWVzID0gYmFzZUZ1bmN0aW9ucyhzb3VyY2UsIHByb3BzKTtcblxuICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCAmJlxuICAgICAgICAgICEoaXNPYmplY3Qoc291cmNlKSAmJiAobWV0aG9kTmFtZXMubGVuZ3RoIHx8ICFwcm9wcy5sZW5ndGgpKSkge1xuICAgICAgICBvcHRpb25zID0gc291cmNlO1xuICAgICAgICBzb3VyY2UgPSBvYmplY3Q7XG4gICAgICAgIG9iamVjdCA9IHRoaXM7XG4gICAgICAgIG1ldGhvZE5hbWVzID0gYmFzZUZ1bmN0aW9ucyhzb3VyY2UsIGtleXMoc291cmNlKSk7XG4gICAgICB9XG4gICAgICB2YXIgY2hhaW4gPSAhKGlzT2JqZWN0KG9wdGlvbnMpICYmICdjaGFpbicgaW4gb3B0aW9ucykgfHwgISFvcHRpb25zLmNoYWluLFxuICAgICAgICAgIGlzRnVuYyA9IGlzRnVuY3Rpb24ob2JqZWN0KTtcblxuICAgICAgYXJyYXlFYWNoKG1ldGhvZE5hbWVzLCBmdW5jdGlvbihtZXRob2ROYW1lKSB7XG4gICAgICAgIHZhciBmdW5jID0gc291cmNlW21ldGhvZE5hbWVdO1xuICAgICAgICBvYmplY3RbbWV0aG9kTmFtZV0gPSBmdW5jO1xuICAgICAgICBpZiAoaXNGdW5jKSB7XG4gICAgICAgICAgb2JqZWN0LnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGNoYWluQWxsID0gdGhpcy5fX2NoYWluX187XG4gICAgICAgICAgICBpZiAoY2hhaW4gfHwgY2hhaW5BbGwpIHtcbiAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG9iamVjdCh0aGlzLl9fd3JhcHBlZF9fKSxcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnMgPSByZXN1bHQuX19hY3Rpb25zX18gPSBjb3B5QXJyYXkodGhpcy5fX2FjdGlvbnNfXyk7XG5cbiAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHsgJ2Z1bmMnOiBmdW5jLCAnYXJncyc6IGFyZ3VtZW50cywgJ3RoaXNBcmcnOiBvYmplY3QgfSk7XG4gICAgICAgICAgICAgIHJlc3VsdC5fX2NoYWluX18gPSBjaGFpbkFsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KG9iamVjdCwgYXJyYXlQdXNoKFt0aGlzLnZhbHVlKCldLCBhcmd1bWVudHMpKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnRzIHRoZSBgX2AgdmFyaWFibGUgdG8gaXRzIHByZXZpb3VzIHZhbHVlIGFuZCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvXG4gICAgICogdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgbG9kYXNoID0gXy5ub0NvbmZsaWN0KCk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9Db25mbGljdCgpIHtcbiAgICAgIGlmIChyb290Ll8gPT09IHRoaXMpIHtcbiAgICAgICAgcm9vdC5fID0gb2xkRGFzaDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8ubm9vcCk7XG4gICAgICogLy8gPT4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5vb3AoKSB7XG4gICAgICAvLyBObyBvcGVyYXRpb24gcGVyZm9ybWVkLlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIGFyZ3VtZW50IGF0IGluZGV4IGBuYC4gSWYgYG5gIGlzIG5lZ2F0aXZlLFxuICAgICAqIHRoZSBudGggYXJndW1lbnQgZnJvbSB0aGUgZW5kIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MF0gVGhlIGluZGV4IG9mIHRoZSBhcmd1bWVudCB0byByZXR1cm4uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFzcy10aHJ1IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ubnRoQXJnKDEpO1xuICAgICAqIGZ1bmMoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgKiAvLyA9PiAnYidcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5udGhBcmcoLTIpO1xuICAgICAqIGZ1bmMoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgKiAvLyA9PiAnYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBudGhBcmcobikge1xuICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHJldHVybiBiYXNlTnRoKGFyZ3MsIG4pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgaXRlcmF0ZWVzYCB3aXRoIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXNcbiAgICAgKiBhbmQgcmV0dXJucyB0aGVpciByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBpdGVyYXRlZXMgdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ub3ZlcihbTWF0aC5tYXgsIE1hdGgubWluXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKDEsIDIsIDMsIDQpO1xuICAgICAqIC8vID0+IFs0LCAxXVxuICAgICAqL1xuICAgIHZhciBvdmVyID0gY3JlYXRlT3ZlcihhcnJheU1hcCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgKiphbGwqKiBvZiB0aGUgYHByZWRpY2F0ZXNgIHJldHVyblxuICAgICAqIHRydXRoeSB3aGVuIGludm9rZWQgd2l0aCB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogRm9sbG93aW5nIHNob3J0aGFuZHMgYXJlIHBvc3NpYmxlIGZvciBwcm92aWRpbmcgcHJlZGljYXRlcy5cbiAgICAgKiBQYXNzIGFuIGBPYmplY3RgIGFuZCBpdCB3aWxsIGJlIHVzZWQgYXMgYW4gcGFyYW1ldGVyIGZvciBgXy5tYXRjaGVzYCB0byBjcmVhdGUgdGhlIHByZWRpY2F0ZS5cbiAgICAgKiBQYXNzIGFuIGBBcnJheWAgb2YgcGFyYW1ldGVycyBmb3IgYF8ubWF0Y2hlc1Byb3BlcnR5YCBhbmQgdGhlIHByZWRpY2F0ZSB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgdGhlbS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIHByZWRpY2F0ZXMgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyRXZlcnkoW0Jvb2xlYW4sIGlzRmluaXRlXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKCcxJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogZnVuYyhudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogZnVuYyhOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIG92ZXJFdmVyeSA9IGNyZWF0ZU92ZXIoYXJyYXlFdmVyeSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgKiphbnkqKiBvZiB0aGUgYHByZWRpY2F0ZXNgIHJldHVyblxuICAgICAqIHRydXRoeSB3aGVuIGludm9rZWQgd2l0aCB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogRm9sbG93aW5nIHNob3J0aGFuZHMgYXJlIHBvc3NpYmxlIGZvciBwcm92aWRpbmcgcHJlZGljYXRlcy5cbiAgICAgKiBQYXNzIGFuIGBPYmplY3RgIGFuZCBpdCB3aWxsIGJlIHVzZWQgYXMgYW4gcGFyYW1ldGVyIGZvciBgXy5tYXRjaGVzYCB0byBjcmVhdGUgdGhlIHByZWRpY2F0ZS5cbiAgICAgKiBQYXNzIGFuIGBBcnJheWAgb2YgcGFyYW1ldGVycyBmb3IgYF8ubWF0Y2hlc1Byb3BlcnR5YCBhbmQgdGhlIHByZWRpY2F0ZSB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgdGhlbS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIHByZWRpY2F0ZXMgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyU29tZShbQm9vbGVhbiwgaXNGaW5pdGVdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoJzEnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBmdW5jKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGZ1bmMoTmFOKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogdmFyIG1hdGNoZXNGdW5jID0gXy5vdmVyU29tZShbeyAnYSc6IDEgfSwgeyAnYSc6IDIgfV0pXG4gICAgICogdmFyIG1hdGNoZXNQcm9wZXJ0eUZ1bmMgPSBfLm92ZXJTb21lKFtbJ2EnLCAxXSwgWydhJywgMl1dKVxuICAgICAqL1xuICAgIHZhciBvdmVyU29tZSA9IGNyZWF0ZU92ZXIoYXJyYXlTb21lKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogeyAnYic6IDIgfSB9LFxuICAgICAqICAgeyAnYSc6IHsgJ2InOiAxIH0gfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLnByb3BlcnR5KCdhLmInKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICpcbiAgICAgKiBfLm1hcChfLnNvcnRCeShvYmplY3RzLCBfLnByb3BlcnR5KFsnYScsICdiJ10pKSwgJ2EuYicpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb3BlcnR5KHBhdGgpIHtcbiAgICAgIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5wcm9wZXJ0eWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnNcbiAgICAgKiB0aGUgdmFsdWUgYXQgYSBnaXZlbiBwYXRoIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFswLCAxLCAyXSxcbiAgICAgKiAgICAgb2JqZWN0ID0geyAnYSc6IGFycmF5LCAnYic6IGFycmF5LCAnYyc6IGFycmF5IH07XG4gICAgICpcbiAgICAgKiBfLm1hcChbJ2FbMl0nLCAnY1swXSddLCBfLnByb3BlcnR5T2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICpcbiAgICAgKiBfLm1hcChbWydhJywgJzInXSwgWydjJywgJzAnXV0sIF8ucHJvcGVydHlPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwcm9wZXJ0eU9mKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG51bWJlcnMgKHBvc2l0aXZlIGFuZC9vciBuZWdhdGl2ZSkgcHJvZ3Jlc3NpbmcgZnJvbVxuICAgICAqIGBzdGFydGAgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC4gQSBzdGVwIG9mIGAtMWAgaXMgdXNlZCBpZiBhIG5lZ2F0aXZlXG4gICAgICogYHN0YXJ0YCBpcyBzcGVjaWZpZWQgd2l0aG91dCBhbiBgZW5kYCBvciBgc3RlcGAuIElmIGBlbmRgIGlzIG5vdCBzcGVjaWZpZWQsXG4gICAgICogaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEphdmFTY3JpcHQgZm9sbG93cyB0aGUgSUVFRS03NTQgc3RhbmRhcmQgZm9yIHJlc29sdmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0xXSBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gICAgICogQHNlZSBfLmluUmFuZ2UsIF8ucmFuZ2VSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDQpO1xuICAgICAqIC8vID0+IFswLCAxLCAyLCAzXVxuICAgICAqXG4gICAgICogXy5yYW5nZSgtNCk7XG4gICAgICogLy8gPT4gWzAsIC0xLCAtMiwgLTNdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDEsIDUpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCA0XVxuICAgICAqXG4gICAgICogXy5yYW5nZSgwLCAyMCwgNSk7XG4gICAgICogLy8gPT4gWzAsIDUsIDEwLCAxNV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMCwgLTQsIC0xKTtcbiAgICAgKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMSwgNCwgMCk7XG4gICAgICogLy8gPT4gWzEsIDEsIDFdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgdmFyIHJhbmdlID0gY3JlYXRlUmFuZ2UoKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucmFuZ2VgIGV4Y2VwdCB0aGF0IGl0IHBvcHVsYXRlcyB2YWx1ZXMgaW5cbiAgICAgKiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0ZXA9MV0gVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICAgICAqIEBzZWUgXy5pblJhbmdlLCBfLnJhbmdlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCg0KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgtNCk7XG4gICAgICogLy8gPT4gWy0zLCAtMiwgLTEsIDBdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMSwgNSk7XG4gICAgICogLy8gPT4gWzQsIDMsIDIsIDFdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMCwgMjAsIDUpO1xuICAgICAqIC8vID0+IFsxNSwgMTAsIDUsIDBdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMCwgLTQsIC0xKTtcbiAgICAgKiAvLyA9PiBbLTMsIC0yLCAtMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgxLCA0LCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIHZhciByYW5nZVJpZ2h0ID0gY3JlYXRlUmFuZ2UodHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZW1wdHkgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheXMgPSBfLnRpbWVzKDIsIF8uc3R1YkFycmF5KTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gICAgICogLy8gPT4gW1tdLCBbXV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAgICAgKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLnN0dWJPYmplY3QpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0cyk7XG4gICAgICogLy8gPT4gW3t9LCB7fV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1Yk9iamVjdCgpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVtcHR5IHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLnN0dWJTdHJpbmcpO1xuICAgICAqIC8vID0+IFsnJywgJyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YlN0cmluZygpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB0cnVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLnN0dWJUcnVlKTtcbiAgICAgKiAvLyA9PiBbdHJ1ZSwgdHJ1ZV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViVHJ1ZSgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgdGhlIGl0ZXJhdGVlIGBuYCB0aW1lcywgcmV0dXJuaW5nIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mXG4gICAgICogZWFjaCBpbnZvY2F0aW9uLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKGluZGV4KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMywgU3RyaW5nKTtcbiAgICAgKiAvLyA9PiBbJzAnLCAnMScsICcyJ11cbiAgICAgKlxuICAgICAqICBfLnRpbWVzKDQsIF8uY29uc3RhbnQoMCkpO1xuICAgICAqIC8vID0+IFswLCAwLCAwLCAwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgaWYgKG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IE1BWF9BUlJBWV9MRU5HVEgsXG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKG4sIE1BWF9BUlJBWV9MRU5HVEgpO1xuXG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlKTtcbiAgICAgIG4gLT0gTUFYX0FSUkFZX0xFTkdUSDtcblxuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VUaW1lcyhsZW5ndGgsIGl0ZXJhdGVlKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgICAgICBpdGVyYXRlZShpbmRleCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9QYXRoKCdhLmIuYycpO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqXG4gICAgICogXy50b1BhdGgoJ2FbMF0uYi5jJyk7XG4gICAgICogLy8gPT4gWydhJywgJzAnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1BhdGgodmFsdWUpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIHRvS2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1N5bWJvbCh2YWx1ZSkgPyBbdmFsdWVdIDogY29weUFycmF5KHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgSUQuIElmIGBwcmVmaXhgIGlzIGdpdmVuLCB0aGUgSUQgaXMgYXBwZW5kZWQgdG8gaXQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbcHJlZml4PScnXSBUaGUgdmFsdWUgdG8gcHJlZml4IHRoZSBJRCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuaXF1ZSBJRC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51bmlxdWVJZCgnY29udGFjdF8nKTtcbiAgICAgKiAvLyA9PiAnY29udGFjdF8xMDQnXG4gICAgICpcbiAgICAgKiBfLnVuaXF1ZUlkKCk7XG4gICAgICogLy8gPT4gJzEwNSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgICAgIHZhciBpZCA9ICsraWRDb3VudGVyO1xuICAgICAgcmV0dXJuIHRvU3RyaW5nKHByZWZpeCkgKyBpZDtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBZGRzIHR3byBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYXVnZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYW4gYWRkaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFkZGVuZCBUaGUgc2Vjb25kIG51bWJlciBpbiBhbiBhZGRpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0b3RhbC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5hZGQoNiwgNCk7XG4gICAgICogLy8gPT4gMTBcbiAgICAgKi9cbiAgICB2YXIgYWRkID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihhdWdlbmQsIGFkZGVuZCkge1xuICAgICAgcmV0dXJuIGF1Z2VuZCArIGFkZGVuZDtcbiAgICB9LCAwKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgdXAgdG8gYHByZWNpc2lvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gcm91bmQgdXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCB1cCB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIHVwIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jZWlsKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICpcbiAgICAgKiBfLmNlaWwoNi4wMDQsIDIpO1xuICAgICAqIC8vID0+IDYuMDFcbiAgICAgKlxuICAgICAqIF8uY2VpbCg2MDQwLCAtMik7XG4gICAgICogLy8gPT4gNjEwMFxuICAgICAqL1xuICAgIHZhciBjZWlsID0gY3JlYXRlUm91bmQoJ2NlaWwnKTtcblxuICAgIC8qKlxuICAgICAqIERpdmlkZSB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRpdmlkZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBkaXZpc2lvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGl2aXNvciBUaGUgc2Vjb25kIG51bWJlciBpbiBhIGRpdmlzaW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHF1b3RpZW50LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRpdmlkZSg2LCA0KTtcbiAgICAgKiAvLyA9PiAxLjVcbiAgICAgKi9cbiAgICB2YXIgZGl2aWRlID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihkaXZpZGVuZCwgZGl2aXNvcikge1xuICAgICAgcmV0dXJuIGRpdmlkZW5kIC8gZGl2aXNvcjtcbiAgICB9LCAxKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgZG93biB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZCBkb3duLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcHJlY2lzaW9uPTBdIFRoZSBwcmVjaXNpb24gdG8gcm91bmQgZG93biB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIGRvd24gbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZsb29yKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLmZsb29yKDAuMDQ2LCAyKTtcbiAgICAgKiAvLyA9PiAwLjA0XG4gICAgICpcbiAgICAgKiBfLmZsb29yKDQwNjAsIC0yKTtcbiAgICAgKiAvLyA9PiA0MDAwXG4gICAgICovXG4gICAgdmFyIGZsb29yID0gY3JlYXRlUm91bmQoJ2Zsb29yJyk7XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAgICAgKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXgoWzQsIDIsIDgsIDZdKTtcbiAgICAgKiAvLyA9PiA4XG4gICAgICpcbiAgICAgKiBfLm1heChbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF4KGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlR3QpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWF4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWF4Qnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgKiAvLyA9PiB7ICduJzogMiB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1heEJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4geyAnbic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1heEJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGJhc2VHdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIG1lYW4gb2YgdGhlIHZhbHVlcyBpbiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG1lYW4uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWVhbihbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZWFuKGFycmF5KSB7XG4gICAgICByZXR1cm4gYmFzZU1lYW4oYXJyYXksIGlkZW50aXR5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1lYW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0byBiZSBhdmVyYWdlZC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDQgfSwgeyAnbic6IDIgfSwgeyAnbic6IDggfSwgeyAnbic6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLm1lYW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IDVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWVhbkJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lYW5CeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlTWVhbihhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWluaW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAgICAgKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5taW4oWzQsIDIsIDgsIDZdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiBfLm1pbihbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWluKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlTHQpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWluYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWluQnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgKiAvLyA9PiB7ICduJzogMSB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1pbkJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4geyAnbic6IDEgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1pbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGJhc2VMdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTXVsdGlwbHkgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtdWx0aXBsaWVyIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbXVsdGlwbGljYW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgbXVsdGlwbGljYXRpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcHJvZHVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tdWx0aXBseSg2LCA0KTtcbiAgICAgKiAvLyA9PiAyNFxuICAgICAqL1xuICAgIHZhciBtdWx0aXBseSA9IGNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obXVsdGlwbGllciwgbXVsdGlwbGljYW5kKSB7XG4gICAgICByZXR1cm4gbXVsdGlwbGllciAqIG11bHRpcGxpY2FuZDtcbiAgICB9LCAxKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gcm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yb3VuZCg0LjAwNik7XG4gICAgICogLy8gPT4gNFxuICAgICAqXG4gICAgICogXy5yb3VuZCg0LjAwNiwgMik7XG4gICAgICogLy8gPT4gNC4wMVxuICAgICAqXG4gICAgICogXy5yb3VuZCg0MDYwLCAtMik7XG4gICAgICogLy8gPT4gNDEwMFxuICAgICAqL1xuICAgIHZhciByb3VuZCA9IGNyZWF0ZVJvdW5kKCdyb3VuZCcpO1xuXG4gICAgLyoqXG4gICAgICogU3VidHJhY3QgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaW51ZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBzdWJ0cmFjdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3VidHJhaGVuZCBUaGUgc2Vjb25kIG51bWJlciBpbiBhIHN1YnRyYWN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGRpZmZlcmVuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3VidHJhY3QoNiwgNCk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIHZhciBzdWJ0cmFjdCA9IGNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obWludWVuZCwgc3VidHJhaGVuZCkge1xuICAgICAgcmV0dXJuIG1pbnVlbmQgLSBzdWJ0cmFoZW5kO1xuICAgIH0sIDApO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIHN1bSBvZiB0aGUgdmFsdWVzIGluIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3VtLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnN1bShbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDIwXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3VtKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlU3VtKGFycmF5LCBpZGVudGl0eSlcbiAgICAgICAgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc3VtYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgdmFsdWUgdG8gYmUgc3VtbWVkLlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiA0IH0sIHsgJ24nOiAyIH0sIHsgJ24nOiA4IH0sIHsgJ24nOiA2IH1dO1xuICAgICAqXG4gICAgICogXy5zdW1CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IDIwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnN1bUJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdW1CeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiAwO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIEFkZCBtZXRob2RzIHRoYXQgcmV0dXJuIHdyYXBwZWQgdmFsdWVzIGluIGNoYWluIHNlcXVlbmNlcy5cbiAgICBsb2Rhc2guYWZ0ZXIgPSBhZnRlcjtcbiAgICBsb2Rhc2guYXJ5ID0gYXJ5O1xuICAgIGxvZGFzaC5hc3NpZ24gPSBhc3NpZ247XG4gICAgbG9kYXNoLmFzc2lnbkluID0gYXNzaWduSW47XG4gICAgbG9kYXNoLmFzc2lnbkluV2l0aCA9IGFzc2lnbkluV2l0aDtcbiAgICBsb2Rhc2guYXNzaWduV2l0aCA9IGFzc2lnbldpdGg7XG4gICAgbG9kYXNoLmF0ID0gYXQ7XG4gICAgbG9kYXNoLmJlZm9yZSA9IGJlZm9yZTtcbiAgICBsb2Rhc2guYmluZCA9IGJpbmQ7XG4gICAgbG9kYXNoLmJpbmRBbGwgPSBiaW5kQWxsO1xuICAgIGxvZGFzaC5iaW5kS2V5ID0gYmluZEtleTtcbiAgICBsb2Rhc2guY2FzdEFycmF5ID0gY2FzdEFycmF5O1xuICAgIGxvZGFzaC5jaGFpbiA9IGNoYWluO1xuICAgIGxvZGFzaC5jaHVuayA9IGNodW5rO1xuICAgIGxvZGFzaC5jb21wYWN0ID0gY29tcGFjdDtcbiAgICBsb2Rhc2guY29uY2F0ID0gY29uY2F0O1xuICAgIGxvZGFzaC5jb25kID0gY29uZDtcbiAgICBsb2Rhc2guY29uZm9ybXMgPSBjb25mb3JtcztcbiAgICBsb2Rhc2guY29uc3RhbnQgPSBjb25zdGFudDtcbiAgICBsb2Rhc2guY291bnRCeSA9IGNvdW50Qnk7XG4gICAgbG9kYXNoLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgICBsb2Rhc2guY3VycnkgPSBjdXJyeTtcbiAgICBsb2Rhc2guY3VycnlSaWdodCA9IGN1cnJ5UmlnaHQ7XG4gICAgbG9kYXNoLmRlYm91bmNlID0gZGVib3VuY2U7XG4gICAgbG9kYXNoLmRlZmF1bHRzID0gZGVmYXVsdHM7XG4gICAgbG9kYXNoLmRlZmF1bHRzRGVlcCA9IGRlZmF1bHRzRGVlcDtcbiAgICBsb2Rhc2guZGVmZXIgPSBkZWZlcjtcbiAgICBsb2Rhc2guZGVsYXkgPSBkZWxheTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZSA9IGRpZmZlcmVuY2U7XG4gICAgbG9kYXNoLmRpZmZlcmVuY2VCeSA9IGRpZmZlcmVuY2VCeTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZVdpdGggPSBkaWZmZXJlbmNlV2l0aDtcbiAgICBsb2Rhc2guZHJvcCA9IGRyb3A7XG4gICAgbG9kYXNoLmRyb3BSaWdodCA9IGRyb3BSaWdodDtcbiAgICBsb2Rhc2guZHJvcFJpZ2h0V2hpbGUgPSBkcm9wUmlnaHRXaGlsZTtcbiAgICBsb2Rhc2guZHJvcFdoaWxlID0gZHJvcFdoaWxlO1xuICAgIGxvZGFzaC5maWxsID0gZmlsbDtcbiAgICBsb2Rhc2guZmlsdGVyID0gZmlsdGVyO1xuICAgIGxvZGFzaC5mbGF0TWFwID0gZmxhdE1hcDtcbiAgICBsb2Rhc2guZmxhdE1hcERlZXAgPSBmbGF0TWFwRGVlcDtcbiAgICBsb2Rhc2guZmxhdE1hcERlcHRoID0gZmxhdE1hcERlcHRoO1xuICAgIGxvZGFzaC5mbGF0dGVuID0gZmxhdHRlbjtcbiAgICBsb2Rhc2guZmxhdHRlbkRlZXAgPSBmbGF0dGVuRGVlcDtcbiAgICBsb2Rhc2guZmxhdHRlbkRlcHRoID0gZmxhdHRlbkRlcHRoO1xuICAgIGxvZGFzaC5mbGlwID0gZmxpcDtcbiAgICBsb2Rhc2guZmxvdyA9IGZsb3c7XG4gICAgbG9kYXNoLmZsb3dSaWdodCA9IGZsb3dSaWdodDtcbiAgICBsb2Rhc2guZnJvbVBhaXJzID0gZnJvbVBhaXJzO1xuICAgIGxvZGFzaC5mdW5jdGlvbnMgPSBmdW5jdGlvbnM7XG4gICAgbG9kYXNoLmZ1bmN0aW9uc0luID0gZnVuY3Rpb25zSW47XG4gICAgbG9kYXNoLmdyb3VwQnkgPSBncm91cEJ5O1xuICAgIGxvZGFzaC5pbml0aWFsID0gaW5pdGlhbDtcbiAgICBsb2Rhc2guaW50ZXJzZWN0aW9uID0gaW50ZXJzZWN0aW9uO1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb25CeSA9IGludGVyc2VjdGlvbkJ5O1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb25XaXRoID0gaW50ZXJzZWN0aW9uV2l0aDtcbiAgICBsb2Rhc2guaW52ZXJ0ID0gaW52ZXJ0O1xuICAgIGxvZGFzaC5pbnZlcnRCeSA9IGludmVydEJ5O1xuICAgIGxvZGFzaC5pbnZva2VNYXAgPSBpbnZva2VNYXA7XG4gICAgbG9kYXNoLml0ZXJhdGVlID0gaXRlcmF0ZWU7XG4gICAgbG9kYXNoLmtleUJ5ID0ga2V5Qnk7XG4gICAgbG9kYXNoLmtleXMgPSBrZXlzO1xuICAgIGxvZGFzaC5rZXlzSW4gPSBrZXlzSW47XG4gICAgbG9kYXNoLm1hcCA9IG1hcDtcbiAgICBsb2Rhc2gubWFwS2V5cyA9IG1hcEtleXM7XG4gICAgbG9kYXNoLm1hcFZhbHVlcyA9IG1hcFZhbHVlcztcbiAgICBsb2Rhc2gubWF0Y2hlcyA9IG1hdGNoZXM7XG4gICAgbG9kYXNoLm1hdGNoZXNQcm9wZXJ0eSA9IG1hdGNoZXNQcm9wZXJ0eTtcbiAgICBsb2Rhc2gubWVtb2l6ZSA9IG1lbW9pemU7XG4gICAgbG9kYXNoLm1lcmdlID0gbWVyZ2U7XG4gICAgbG9kYXNoLm1lcmdlV2l0aCA9IG1lcmdlV2l0aDtcbiAgICBsb2Rhc2gubWV0aG9kID0gbWV0aG9kO1xuICAgIGxvZGFzaC5tZXRob2RPZiA9IG1ldGhvZE9mO1xuICAgIGxvZGFzaC5taXhpbiA9IG1peGluO1xuICAgIGxvZGFzaC5uZWdhdGUgPSBuZWdhdGU7XG4gICAgbG9kYXNoLm50aEFyZyA9IG50aEFyZztcbiAgICBsb2Rhc2gub21pdCA9IG9taXQ7XG4gICAgbG9kYXNoLm9taXRCeSA9IG9taXRCeTtcbiAgICBsb2Rhc2gub25jZSA9IG9uY2U7XG4gICAgbG9kYXNoLm9yZGVyQnkgPSBvcmRlckJ5O1xuICAgIGxvZGFzaC5vdmVyID0gb3ZlcjtcbiAgICBsb2Rhc2gub3ZlckFyZ3MgPSBvdmVyQXJncztcbiAgICBsb2Rhc2gub3ZlckV2ZXJ5ID0gb3ZlckV2ZXJ5O1xuICAgIGxvZGFzaC5vdmVyU29tZSA9IG92ZXJTb21lO1xuICAgIGxvZGFzaC5wYXJ0aWFsID0gcGFydGlhbDtcbiAgICBsb2Rhc2gucGFydGlhbFJpZ2h0ID0gcGFydGlhbFJpZ2h0O1xuICAgIGxvZGFzaC5wYXJ0aXRpb24gPSBwYXJ0aXRpb247XG4gICAgbG9kYXNoLnBpY2sgPSBwaWNrO1xuICAgIGxvZGFzaC5waWNrQnkgPSBwaWNrQnk7XG4gICAgbG9kYXNoLnByb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgbG9kYXNoLnByb3BlcnR5T2YgPSBwcm9wZXJ0eU9mO1xuICAgIGxvZGFzaC5wdWxsID0gcHVsbDtcbiAgICBsb2Rhc2gucHVsbEFsbCA9IHB1bGxBbGw7XG4gICAgbG9kYXNoLnB1bGxBbGxCeSA9IHB1bGxBbGxCeTtcbiAgICBsb2Rhc2gucHVsbEFsbFdpdGggPSBwdWxsQWxsV2l0aDtcbiAgICBsb2Rhc2gucHVsbEF0ID0gcHVsbEF0O1xuICAgIGxvZGFzaC5yYW5nZSA9IHJhbmdlO1xuICAgIGxvZGFzaC5yYW5nZVJpZ2h0ID0gcmFuZ2VSaWdodDtcbiAgICBsb2Rhc2gucmVhcmcgPSByZWFyZztcbiAgICBsb2Rhc2gucmVqZWN0ID0gcmVqZWN0O1xuICAgIGxvZGFzaC5yZW1vdmUgPSByZW1vdmU7XG4gICAgbG9kYXNoLnJlc3QgPSByZXN0O1xuICAgIGxvZGFzaC5yZXZlcnNlID0gcmV2ZXJzZTtcbiAgICBsb2Rhc2guc2FtcGxlU2l6ZSA9IHNhbXBsZVNpemU7XG4gICAgbG9kYXNoLnNldCA9IHNldDtcbiAgICBsb2Rhc2guc2V0V2l0aCA9IHNldFdpdGg7XG4gICAgbG9kYXNoLnNodWZmbGUgPSBzaHVmZmxlO1xuICAgIGxvZGFzaC5zbGljZSA9IHNsaWNlO1xuICAgIGxvZGFzaC5zb3J0QnkgPSBzb3J0Qnk7XG4gICAgbG9kYXNoLnNvcnRlZFVuaXEgPSBzb3J0ZWRVbmlxO1xuICAgIGxvZGFzaC5zb3J0ZWRVbmlxQnkgPSBzb3J0ZWRVbmlxQnk7XG4gICAgbG9kYXNoLnNwbGl0ID0gc3BsaXQ7XG4gICAgbG9kYXNoLnNwcmVhZCA9IHNwcmVhZDtcbiAgICBsb2Rhc2gudGFpbCA9IHRhaWw7XG4gICAgbG9kYXNoLnRha2UgPSB0YWtlO1xuICAgIGxvZGFzaC50YWtlUmlnaHQgPSB0YWtlUmlnaHQ7XG4gICAgbG9kYXNoLnRha2VSaWdodFdoaWxlID0gdGFrZVJpZ2h0V2hpbGU7XG4gICAgbG9kYXNoLnRha2VXaGlsZSA9IHRha2VXaGlsZTtcbiAgICBsb2Rhc2gudGFwID0gdGFwO1xuICAgIGxvZGFzaC50aHJvdHRsZSA9IHRocm90dGxlO1xuICAgIGxvZGFzaC50aHJ1ID0gdGhydTtcbiAgICBsb2Rhc2gudG9BcnJheSA9IHRvQXJyYXk7XG4gICAgbG9kYXNoLnRvUGFpcnMgPSB0b1BhaXJzO1xuICAgIGxvZGFzaC50b1BhaXJzSW4gPSB0b1BhaXJzSW47XG4gICAgbG9kYXNoLnRvUGF0aCA9IHRvUGF0aDtcbiAgICBsb2Rhc2gudG9QbGFpbk9iamVjdCA9IHRvUGxhaW5PYmplY3Q7XG4gICAgbG9kYXNoLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICBsb2Rhc2gudW5hcnkgPSB1bmFyeTtcbiAgICBsb2Rhc2gudW5pb24gPSB1bmlvbjtcbiAgICBsb2Rhc2gudW5pb25CeSA9IHVuaW9uQnk7XG4gICAgbG9kYXNoLnVuaW9uV2l0aCA9IHVuaW9uV2l0aDtcbiAgICBsb2Rhc2gudW5pcSA9IHVuaXE7XG4gICAgbG9kYXNoLnVuaXFCeSA9IHVuaXFCeTtcbiAgICBsb2Rhc2gudW5pcVdpdGggPSB1bmlxV2l0aDtcbiAgICBsb2Rhc2gudW5zZXQgPSB1bnNldDtcbiAgICBsb2Rhc2gudW56aXAgPSB1bnppcDtcbiAgICBsb2Rhc2gudW56aXBXaXRoID0gdW56aXBXaXRoO1xuICAgIGxvZGFzaC51cGRhdGUgPSB1cGRhdGU7XG4gICAgbG9kYXNoLnVwZGF0ZVdpdGggPSB1cGRhdGVXaXRoO1xuICAgIGxvZGFzaC52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgbG9kYXNoLnZhbHVlc0luID0gdmFsdWVzSW47XG4gICAgbG9kYXNoLndpdGhvdXQgPSB3aXRob3V0O1xuICAgIGxvZGFzaC53b3JkcyA9IHdvcmRzO1xuICAgIGxvZGFzaC53cmFwID0gd3JhcDtcbiAgICBsb2Rhc2gueG9yID0geG9yO1xuICAgIGxvZGFzaC54b3JCeSA9IHhvckJ5O1xuICAgIGxvZGFzaC54b3JXaXRoID0geG9yV2l0aDtcbiAgICBsb2Rhc2guemlwID0gemlwO1xuICAgIGxvZGFzaC56aXBPYmplY3QgPSB6aXBPYmplY3Q7XG4gICAgbG9kYXNoLnppcE9iamVjdERlZXAgPSB6aXBPYmplY3REZWVwO1xuICAgIGxvZGFzaC56aXBXaXRoID0gemlwV2l0aDtcblxuICAgIC8vIEFkZCBhbGlhc2VzLlxuICAgIGxvZGFzaC5lbnRyaWVzID0gdG9QYWlycztcbiAgICBsb2Rhc2guZW50cmllc0luID0gdG9QYWlyc0luO1xuICAgIGxvZGFzaC5leHRlbmQgPSBhc3NpZ25JbjtcbiAgICBsb2Rhc2guZXh0ZW5kV2l0aCA9IGFzc2lnbkluV2l0aDtcblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBsb2Rhc2gucHJvdG90eXBlYC5cbiAgICBtaXhpbihsb2Rhc2gsIGxvZGFzaCk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0aGF0IHJldHVybiB1bndyYXBwZWQgdmFsdWVzIGluIGNoYWluIHNlcXVlbmNlcy5cbiAgICBsb2Rhc2guYWRkID0gYWRkO1xuICAgIGxvZGFzaC5hdHRlbXB0ID0gYXR0ZW1wdDtcbiAgICBsb2Rhc2guY2FtZWxDYXNlID0gY2FtZWxDYXNlO1xuICAgIGxvZGFzaC5jYXBpdGFsaXplID0gY2FwaXRhbGl6ZTtcbiAgICBsb2Rhc2guY2VpbCA9IGNlaWw7XG4gICAgbG9kYXNoLmNsYW1wID0gY2xhbXA7XG4gICAgbG9kYXNoLmNsb25lID0gY2xvbmU7XG4gICAgbG9kYXNoLmNsb25lRGVlcCA9IGNsb25lRGVlcDtcbiAgICBsb2Rhc2guY2xvbmVEZWVwV2l0aCA9IGNsb25lRGVlcFdpdGg7XG4gICAgbG9kYXNoLmNsb25lV2l0aCA9IGNsb25lV2l0aDtcbiAgICBsb2Rhc2guY29uZm9ybXNUbyA9IGNvbmZvcm1zVG87XG4gICAgbG9kYXNoLmRlYnVyciA9IGRlYnVycjtcbiAgICBsb2Rhc2guZGVmYXVsdFRvID0gZGVmYXVsdFRvO1xuICAgIGxvZGFzaC5kaXZpZGUgPSBkaXZpZGU7XG4gICAgbG9kYXNoLmVuZHNXaXRoID0gZW5kc1dpdGg7XG4gICAgbG9kYXNoLmVxID0gZXE7XG4gICAgbG9kYXNoLmVzY2FwZSA9IGVzY2FwZTtcbiAgICBsb2Rhc2guZXNjYXBlUmVnRXhwID0gZXNjYXBlUmVnRXhwO1xuICAgIGxvZGFzaC5ldmVyeSA9IGV2ZXJ5O1xuICAgIGxvZGFzaC5maW5kID0gZmluZDtcbiAgICBsb2Rhc2guZmluZEluZGV4ID0gZmluZEluZGV4O1xuICAgIGxvZGFzaC5maW5kS2V5ID0gZmluZEtleTtcbiAgICBsb2Rhc2guZmluZExhc3QgPSBmaW5kTGFzdDtcbiAgICBsb2Rhc2guZmluZExhc3RJbmRleCA9IGZpbmRMYXN0SW5kZXg7XG4gICAgbG9kYXNoLmZpbmRMYXN0S2V5ID0gZmluZExhc3RLZXk7XG4gICAgbG9kYXNoLmZsb29yID0gZmxvb3I7XG4gICAgbG9kYXNoLmZvckVhY2ggPSBmb3JFYWNoO1xuICAgIGxvZGFzaC5mb3JFYWNoUmlnaHQgPSBmb3JFYWNoUmlnaHQ7XG4gICAgbG9kYXNoLmZvckluID0gZm9ySW47XG4gICAgbG9kYXNoLmZvckluUmlnaHQgPSBmb3JJblJpZ2h0O1xuICAgIGxvZGFzaC5mb3JPd24gPSBmb3JPd247XG4gICAgbG9kYXNoLmZvck93blJpZ2h0ID0gZm9yT3duUmlnaHQ7XG4gICAgbG9kYXNoLmdldCA9IGdldDtcbiAgICBsb2Rhc2guZ3QgPSBndDtcbiAgICBsb2Rhc2guZ3RlID0gZ3RlO1xuICAgIGxvZGFzaC5oYXMgPSBoYXM7XG4gICAgbG9kYXNoLmhhc0luID0gaGFzSW47XG4gICAgbG9kYXNoLmhlYWQgPSBoZWFkO1xuICAgIGxvZGFzaC5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIGxvZGFzaC5pbmNsdWRlcyA9IGluY2x1ZGVzO1xuICAgIGxvZGFzaC5pbmRleE9mID0gaW5kZXhPZjtcbiAgICBsb2Rhc2guaW5SYW5nZSA9IGluUmFuZ2U7XG4gICAgbG9kYXNoLmludm9rZSA9IGludm9rZTtcbiAgICBsb2Rhc2guaXNBcmd1bWVudHMgPSBpc0FyZ3VtZW50cztcbiAgICBsb2Rhc2guaXNBcnJheSA9IGlzQXJyYXk7XG4gICAgbG9kYXNoLmlzQXJyYXlCdWZmZXIgPSBpc0FycmF5QnVmZmVyO1xuICAgIGxvZGFzaC5pc0FycmF5TGlrZSA9IGlzQXJyYXlMaWtlO1xuICAgIGxvZGFzaC5pc0FycmF5TGlrZU9iamVjdCA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuICAgIGxvZGFzaC5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG4gICAgbG9kYXNoLmlzQnVmZmVyID0gaXNCdWZmZXI7XG4gICAgbG9kYXNoLmlzRGF0ZSA9IGlzRGF0ZTtcbiAgICBsb2Rhc2guaXNFbGVtZW50ID0gaXNFbGVtZW50O1xuICAgIGxvZGFzaC5pc0VtcHR5ID0gaXNFbXB0eTtcbiAgICBsb2Rhc2guaXNFcXVhbCA9IGlzRXF1YWw7XG4gICAgbG9kYXNoLmlzRXF1YWxXaXRoID0gaXNFcXVhbFdpdGg7XG4gICAgbG9kYXNoLmlzRXJyb3IgPSBpc0Vycm9yO1xuICAgIGxvZGFzaC5pc0Zpbml0ZSA9IGlzRmluaXRlO1xuICAgIGxvZGFzaC5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjtcbiAgICBsb2Rhc2guaXNJbnRlZ2VyID0gaXNJbnRlZ2VyO1xuICAgIGxvZGFzaC5pc0xlbmd0aCA9IGlzTGVuZ3RoO1xuICAgIGxvZGFzaC5pc01hcCA9IGlzTWFwO1xuICAgIGxvZGFzaC5pc01hdGNoID0gaXNNYXRjaDtcbiAgICBsb2Rhc2guaXNNYXRjaFdpdGggPSBpc01hdGNoV2l0aDtcbiAgICBsb2Rhc2guaXNOYU4gPSBpc05hTjtcbiAgICBsb2Rhc2guaXNOYXRpdmUgPSBpc05hdGl2ZTtcbiAgICBsb2Rhc2guaXNOaWwgPSBpc05pbDtcbiAgICBsb2Rhc2guaXNOdWxsID0gaXNOdWxsO1xuICAgIGxvZGFzaC5pc051bWJlciA9IGlzTnVtYmVyO1xuICAgIGxvZGFzaC5pc09iamVjdCA9IGlzT2JqZWN0O1xuICAgIGxvZGFzaC5pc09iamVjdExpa2UgPSBpc09iamVjdExpa2U7XG4gICAgbG9kYXNoLmlzUGxhaW5PYmplY3QgPSBpc1BsYWluT2JqZWN0O1xuICAgIGxvZGFzaC5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuICAgIGxvZGFzaC5pc1NhZmVJbnRlZ2VyID0gaXNTYWZlSW50ZWdlcjtcbiAgICBsb2Rhc2guaXNTZXQgPSBpc1NldDtcbiAgICBsb2Rhc2guaXNTdHJpbmcgPSBpc1N0cmluZztcbiAgICBsb2Rhc2guaXNTeW1ib2wgPSBpc1N5bWJvbDtcbiAgICBsb2Rhc2guaXNUeXBlZEFycmF5ID0gaXNUeXBlZEFycmF5O1xuICAgIGxvZGFzaC5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkO1xuICAgIGxvZGFzaC5pc1dlYWtNYXAgPSBpc1dlYWtNYXA7XG4gICAgbG9kYXNoLmlzV2Vha1NldCA9IGlzV2Vha1NldDtcbiAgICBsb2Rhc2guam9pbiA9IGpvaW47XG4gICAgbG9kYXNoLmtlYmFiQ2FzZSA9IGtlYmFiQ2FzZTtcbiAgICBsb2Rhc2gubGFzdCA9IGxhc3Q7XG4gICAgbG9kYXNoLmxhc3RJbmRleE9mID0gbGFzdEluZGV4T2Y7XG4gICAgbG9kYXNoLmxvd2VyQ2FzZSA9IGxvd2VyQ2FzZTtcbiAgICBsb2Rhc2gubG93ZXJGaXJzdCA9IGxvd2VyRmlyc3Q7XG4gICAgbG9kYXNoLmx0ID0gbHQ7XG4gICAgbG9kYXNoLmx0ZSA9IGx0ZTtcbiAgICBsb2Rhc2gubWF4ID0gbWF4O1xuICAgIGxvZGFzaC5tYXhCeSA9IG1heEJ5O1xuICAgIGxvZGFzaC5tZWFuID0gbWVhbjtcbiAgICBsb2Rhc2gubWVhbkJ5ID0gbWVhbkJ5O1xuICAgIGxvZGFzaC5taW4gPSBtaW47XG4gICAgbG9kYXNoLm1pbkJ5ID0gbWluQnk7XG4gICAgbG9kYXNoLnN0dWJBcnJheSA9IHN0dWJBcnJheTtcbiAgICBsb2Rhc2guc3R1YkZhbHNlID0gc3R1YkZhbHNlO1xuICAgIGxvZGFzaC5zdHViT2JqZWN0ID0gc3R1Yk9iamVjdDtcbiAgICBsb2Rhc2guc3R1YlN0cmluZyA9IHN0dWJTdHJpbmc7XG4gICAgbG9kYXNoLnN0dWJUcnVlID0gc3R1YlRydWU7XG4gICAgbG9kYXNoLm11bHRpcGx5ID0gbXVsdGlwbHk7XG4gICAgbG9kYXNoLm50aCA9IG50aDtcbiAgICBsb2Rhc2gubm9Db25mbGljdCA9IG5vQ29uZmxpY3Q7XG4gICAgbG9kYXNoLm5vb3AgPSBub29wO1xuICAgIGxvZGFzaC5ub3cgPSBub3c7XG4gICAgbG9kYXNoLnBhZCA9IHBhZDtcbiAgICBsb2Rhc2gucGFkRW5kID0gcGFkRW5kO1xuICAgIGxvZGFzaC5wYWRTdGFydCA9IHBhZFN0YXJ0O1xuICAgIGxvZGFzaC5wYXJzZUludCA9IHBhcnNlSW50O1xuICAgIGxvZGFzaC5yYW5kb20gPSByYW5kb207XG4gICAgbG9kYXNoLnJlZHVjZSA9IHJlZHVjZTtcbiAgICBsb2Rhc2gucmVkdWNlUmlnaHQgPSByZWR1Y2VSaWdodDtcbiAgICBsb2Rhc2gucmVwZWF0ID0gcmVwZWF0O1xuICAgIGxvZGFzaC5yZXBsYWNlID0gcmVwbGFjZTtcbiAgICBsb2Rhc2gucmVzdWx0ID0gcmVzdWx0O1xuICAgIGxvZGFzaC5yb3VuZCA9IHJvdW5kO1xuICAgIGxvZGFzaC5ydW5JbkNvbnRleHQgPSBydW5JbkNvbnRleHQ7XG4gICAgbG9kYXNoLnNhbXBsZSA9IHNhbXBsZTtcbiAgICBsb2Rhc2guc2l6ZSA9IHNpemU7XG4gICAgbG9kYXNoLnNuYWtlQ2FzZSA9IHNuYWtlQ2FzZTtcbiAgICBsb2Rhc2guc29tZSA9IHNvbWU7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4ID0gc29ydGVkSW5kZXg7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4QnkgPSBzb3J0ZWRJbmRleEJ5O1xuICAgIGxvZGFzaC5zb3J0ZWRJbmRleE9mID0gc29ydGVkSW5kZXhPZjtcbiAgICBsb2Rhc2guc29ydGVkTGFzdEluZGV4ID0gc29ydGVkTGFzdEluZGV4O1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXhCeSA9IHNvcnRlZExhc3RJbmRleEJ5O1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXhPZiA9IHNvcnRlZExhc3RJbmRleE9mO1xuICAgIGxvZGFzaC5zdGFydENhc2UgPSBzdGFydENhc2U7XG4gICAgbG9kYXNoLnN0YXJ0c1dpdGggPSBzdGFydHNXaXRoO1xuICAgIGxvZGFzaC5zdWJ0cmFjdCA9IHN1YnRyYWN0O1xuICAgIGxvZGFzaC5zdW0gPSBzdW07XG4gICAgbG9kYXNoLnN1bUJ5ID0gc3VtQnk7XG4gICAgbG9kYXNoLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgbG9kYXNoLnRpbWVzID0gdGltZXM7XG4gICAgbG9kYXNoLnRvRmluaXRlID0gdG9GaW5pdGU7XG4gICAgbG9kYXNoLnRvSW50ZWdlciA9IHRvSW50ZWdlcjtcbiAgICBsb2Rhc2gudG9MZW5ndGggPSB0b0xlbmd0aDtcbiAgICBsb2Rhc2gudG9Mb3dlciA9IHRvTG93ZXI7XG4gICAgbG9kYXNoLnRvTnVtYmVyID0gdG9OdW1iZXI7XG4gICAgbG9kYXNoLnRvU2FmZUludGVnZXIgPSB0b1NhZmVJbnRlZ2VyO1xuICAgIGxvZGFzaC50b1N0cmluZyA9IHRvU3RyaW5nO1xuICAgIGxvZGFzaC50b1VwcGVyID0gdG9VcHBlcjtcbiAgICBsb2Rhc2gudHJpbSA9IHRyaW07XG4gICAgbG9kYXNoLnRyaW1FbmQgPSB0cmltRW5kO1xuICAgIGxvZGFzaC50cmltU3RhcnQgPSB0cmltU3RhcnQ7XG4gICAgbG9kYXNoLnRydW5jYXRlID0gdHJ1bmNhdGU7XG4gICAgbG9kYXNoLnVuZXNjYXBlID0gdW5lc2NhcGU7XG4gICAgbG9kYXNoLnVuaXF1ZUlkID0gdW5pcXVlSWQ7XG4gICAgbG9kYXNoLnVwcGVyQ2FzZSA9IHVwcGVyQ2FzZTtcbiAgICBsb2Rhc2gudXBwZXJGaXJzdCA9IHVwcGVyRmlyc3Q7XG5cbiAgICAvLyBBZGQgYWxpYXNlcy5cbiAgICBsb2Rhc2guZWFjaCA9IGZvckVhY2g7XG4gICAgbG9kYXNoLmVhY2hSaWdodCA9IGZvckVhY2hSaWdodDtcbiAgICBsb2Rhc2guZmlyc3QgPSBoZWFkO1xuXG4gICAgbWl4aW4obG9kYXNoLCAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc291cmNlID0ge307XG4gICAgICBiYXNlRm9yT3duKGxvZGFzaCwgZnVuY3Rpb24oZnVuYywgbWV0aG9kTmFtZSkge1xuICAgICAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLnByb3RvdHlwZSwgbWV0aG9kTmFtZSkpIHtcbiAgICAgICAgICBzb3VyY2VbbWV0aG9kTmFtZV0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfSgpKSwgeyAnY2hhaW4nOiBmYWxzZSB9KTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIFRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgbG9kYXNoLlZFUlNJT04gPSBWRVJTSU9OO1xuXG4gICAgLy8gQXNzaWduIGRlZmF1bHQgcGxhY2Vob2xkZXJzLlxuICAgIGFycmF5RWFjaChbJ2JpbmQnLCAnYmluZEtleScsICdjdXJyeScsICdjdXJyeVJpZ2h0JywgJ3BhcnRpYWwnLCAncGFydGlhbFJpZ2h0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgIGxvZGFzaFttZXRob2ROYW1lXS5wbGFjZWhvbGRlciA9IGxvZGFzaDtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgZm9yIGBfLmRyb3BgIGFuZCBgXy50YWtlYCB2YXJpYW50cy5cbiAgICBhcnJheUVhY2goWydkcm9wJywgJ3Rha2UnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgbiA9IG4gPT09IHVuZGVmaW5lZCA/IDEgOiBuYXRpdmVNYXgodG9JbnRlZ2VyKG4pLCAwKTtcblxuICAgICAgICB2YXIgcmVzdWx0ID0gKHRoaXMuX19maWx0ZXJlZF9fICYmICFpbmRleClcbiAgICAgICAgICA/IG5ldyBMYXp5V3JhcHBlcih0aGlzKVxuICAgICAgICAgIDogdGhpcy5jbG9uZSgpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuX19maWx0ZXJlZF9fKSB7XG4gICAgICAgICAgcmVzdWx0Ll9fdGFrZUNvdW50X18gPSBuYXRpdmVNaW4obiwgcmVzdWx0Ll9fdGFrZUNvdW50X18pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5fX3ZpZXdzX18ucHVzaCh7XG4gICAgICAgICAgICAnc2l6ZSc6IG5hdGl2ZU1pbihuLCBNQVhfQVJSQVlfTEVOR1RIKSxcbiAgICAgICAgICAgICd0eXBlJzogbWV0aG9kTmFtZSArIChyZXN1bHQuX19kaXJfXyA8IDAgPyAnUmlnaHQnIDogJycpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG5cbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lICsgJ1JpZ2h0J10gPSBmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJldmVyc2UoKVttZXRob2ROYW1lXShuKS5yZXZlcnNlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyB0aGF0IGFjY2VwdCBhbiBgaXRlcmF0ZWVgIHZhbHVlLlxuICAgIGFycmF5RWFjaChbJ2ZpbHRlcicsICdtYXAnLCAndGFrZVdoaWxlJ10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgdHlwZSA9IGluZGV4ICsgMSxcbiAgICAgICAgICBpc0ZpbHRlciA9IHR5cGUgPT0gTEFaWV9GSUxURVJfRkxBRyB8fCB0eXBlID09IExBWllfV0hJTEVfRkxBRztcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgICAgcmVzdWx0Ll9faXRlcmF0ZWVzX18ucHVzaCh7XG4gICAgICAgICAgJ2l0ZXJhdGVlJzogZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpLFxuICAgICAgICAgICd0eXBlJzogdHlwZVxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHJlc3VsdC5fX2ZpbHRlcmVkX18gfHwgaXNGaWx0ZXI7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uaGVhZGAgYW5kIGBfLmxhc3RgLlxuICAgIGFycmF5RWFjaChbJ2hlYWQnLCAnbGFzdCddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgdmFyIHRha2VOYW1lID0gJ3Rha2UnICsgKGluZGV4ID8gJ1JpZ2h0JyA6ICcnKTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzW3Rha2VOYW1lXSgxKS52YWx1ZSgpWzBdO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgZm9yIGBfLmluaXRpYWxgIGFuZCBgXy50YWlsYC5cbiAgICBhcnJheUVhY2goWydpbml0aWFsJywgJ3RhaWwnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciBkcm9wTmFtZSA9ICdkcm9wJyArIChpbmRleCA/ICcnIDogJ1JpZ2h0Jyk7XG5cbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fX2ZpbHRlcmVkX18gPyBuZXcgTGF6eVdyYXBwZXIodGhpcykgOiB0aGlzW2Ryb3BOYW1lXSgxKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY29tcGFjdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKGlkZW50aXR5KTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcihwcmVkaWNhdGUpLmhlYWQoKTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmRMYXN0ID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXZlcnNlKCkuZmluZChwcmVkaWNhdGUpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuaW52b2tlTWFwID0gYmFzZVJlc3QoZnVuY3Rpb24ocGF0aCwgYXJncykge1xuICAgICAgaWYgKHR5cGVvZiBwYXRoID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYmFzZUludm9rZSh2YWx1ZSwgcGF0aCwgYXJncyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5yZWplY3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcihuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlKSkpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgICBzdGFydCA9IHRvSW50ZWdlcihzdGFydCk7XG5cbiAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xuICAgICAgaWYgKHJlc3VsdC5fX2ZpbHRlcmVkX18gJiYgKHN0YXJ0ID4gMCB8fCBlbmQgPCAwKSkge1xuICAgICAgICByZXR1cm4gbmV3IExhenlXcmFwcGVyKHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC50YWtlUmlnaHQoLXN0YXJ0KTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnQpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmRyb3Aoc3RhcnQpO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVuZCA9IHRvSW50ZWdlcihlbmQpO1xuICAgICAgICByZXN1bHQgPSBlbmQgPCAwID8gcmVzdWx0LmRyb3BSaWdodCgtZW5kKSA6IHJlc3VsdC50YWtlKGVuZCAtIHN0YXJ0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS50YWtlUmlnaHRXaGlsZSA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZSgpLnRha2VXaGlsZShwcmVkaWNhdGUpLnJldmVyc2UoKTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRha2UoTUFYX0FSUkFZX0xFTkdUSCk7XG4gICAgfTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgdG8gYGxvZGFzaC5wcm90b3R5cGVgLlxuICAgIGJhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgY2hlY2tJdGVyYXRlZSA9IC9eKD86ZmlsdGVyfGZpbmR8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KG1ldGhvZE5hbWUpLFxuICAgICAgICAgIGlzVGFrZXIgPSAvXig/OmhlYWR8bGFzdCkkLy50ZXN0KG1ldGhvZE5hbWUpLFxuICAgICAgICAgIGxvZGFzaEZ1bmMgPSBsb2Rhc2hbaXNUYWtlciA/ICgndGFrZScgKyAobWV0aG9kTmFtZSA9PSAnbGFzdCcgPyAnUmlnaHQnIDogJycpKSA6IG1ldGhvZE5hbWVdLFxuICAgICAgICAgIHJldFVud3JhcHBlZCA9IGlzVGFrZXIgfHwgL15maW5kLy50ZXN0KG1ldGhvZE5hbWUpO1xuXG4gICAgICBpZiAoIWxvZGFzaEZ1bmMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbG9kYXNoLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fLFxuICAgICAgICAgICAgYXJncyA9IGlzVGFrZXIgPyBbMV0gOiBhcmd1bWVudHMsXG4gICAgICAgICAgICBpc0xhenkgPSB2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyLFxuICAgICAgICAgICAgaXRlcmF0ZWUgPSBhcmdzWzBdLFxuICAgICAgICAgICAgdXNlTGF6eSA9IGlzTGF6eSB8fCBpc0FycmF5KHZhbHVlKTtcblxuICAgICAgICB2YXIgaW50ZXJjZXB0b3IgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2hGdW5jLmFwcGx5KGxvZGFzaCwgYXJyYXlQdXNoKFt2YWx1ZV0sIGFyZ3MpKTtcbiAgICAgICAgICByZXR1cm4gKGlzVGFrZXIgJiYgY2hhaW5BbGwpID8gcmVzdWx0WzBdIDogcmVzdWx0O1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh1c2VMYXp5ICYmIGNoZWNrSXRlcmF0ZWUgJiYgdHlwZW9mIGl0ZXJhdGVlID09ICdmdW5jdGlvbicgJiYgaXRlcmF0ZWUubGVuZ3RoICE9IDEpIHtcbiAgICAgICAgICAvLyBBdm9pZCBsYXp5IHVzZSBpZiB0aGUgaXRlcmF0ZWUgaGFzIGEgXCJsZW5ndGhcIiB2YWx1ZSBvdGhlciB0aGFuIGAxYC5cbiAgICAgICAgICBpc0xhenkgPSB1c2VMYXp5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoYWluQWxsID0gdGhpcy5fX2NoYWluX18sXG4gICAgICAgICAgICBpc0h5YnJpZCA9ICEhdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgsXG4gICAgICAgICAgICBpc1Vud3JhcHBlZCA9IHJldFVud3JhcHBlZCAmJiAhY2hhaW5BbGwsXG4gICAgICAgICAgICBvbmx5TGF6eSA9IGlzTGF6eSAmJiAhaXNIeWJyaWQ7XG5cbiAgICAgICAgaWYgKCFyZXRVbndyYXBwZWQgJiYgdXNlTGF6eSkge1xuICAgICAgICAgIHZhbHVlID0gb25seUxhenkgPyB2YWx1ZSA6IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gZnVuYy5hcHBseSh2YWx1ZSwgYXJncyk7XG4gICAgICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fLnB1c2goeyAnZnVuYyc6IHRocnUsICdhcmdzJzogW2ludGVyY2VwdG9yXSwgJ3RoaXNBcmcnOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHJlc3VsdCwgY2hhaW5BbGwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1Vud3JhcHBlZCAmJiBvbmx5TGF6eSkge1xuICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IHRoaXMudGhydShpbnRlcmNlcHRvcik7XG4gICAgICAgIHJldHVybiBpc1Vud3JhcHBlZCA/IChpc1Rha2VyID8gcmVzdWx0LnZhbHVlKClbMF0gOiByZXN1bHQudmFsdWUoKSkgOiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBBcnJheWAgbWV0aG9kcyB0byBgbG9kYXNoLnByb3RvdHlwZWAuXG4gICAgYXJyYXlFYWNoKFsncG9wJywgJ3B1c2gnLCAnc2hpZnQnLCAnc29ydCcsICdzcGxpY2UnLCAndW5zaGlmdCddLCBmdW5jdGlvbihtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgZnVuYyA9IGFycmF5UHJvdG9bbWV0aG9kTmFtZV0sXG4gICAgICAgICAgY2hhaW5OYW1lID0gL14oPzpwdXNofHNvcnR8dW5zaGlmdCkkLy50ZXN0KG1ldGhvZE5hbWUpID8gJ3RhcCcgOiAndGhydScsXG4gICAgICAgICAgcmV0VW53cmFwcGVkID0gL14oPzpwb3B8c2hpZnQpJC8udGVzdChtZXRob2ROYW1lKTtcblxuICAgICAgbG9kYXNoLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgaWYgKHJldFVud3JhcHBlZCAmJiAhdGhpcy5fX2NoYWluX18pIHtcbiAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlKCk7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdLCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1tjaGFpbk5hbWVdKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdLCBhcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gTWFwIG1pbmlmaWVkIG1ldGhvZCBuYW1lcyB0byB0aGVpciByZWFsIG5hbWVzLlxuICAgIGJhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgbG9kYXNoRnVuYyA9IGxvZGFzaFttZXRob2ROYW1lXTtcbiAgICAgIGlmIChsb2Rhc2hGdW5jKSB7XG4gICAgICAgIHZhciBrZXkgPSBsb2Rhc2hGdW5jLm5hbWUgKyAnJztcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlYWxOYW1lcywga2V5KSkge1xuICAgICAgICAgIHJlYWxOYW1lc1trZXldID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcmVhbE5hbWVzW2tleV0ucHVzaCh7ICduYW1lJzogbWV0aG9kTmFtZSwgJ2Z1bmMnOiBsb2Rhc2hGdW5jIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVhbE5hbWVzW2NyZWF0ZUh5YnJpZCh1bmRlZmluZWQsIFdSQVBfQklORF9LRVlfRkxBRykubmFtZV0gPSBbe1xuICAgICAgJ25hbWUnOiAnd3JhcHBlcicsXG4gICAgICAnZnVuYyc6IHVuZGVmaW5lZFxuICAgIH1dO1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYExhenlXcmFwcGVyYC5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY2xvbmUgPSBsYXp5Q2xvbmU7XG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnJldmVyc2UgPSBsYXp5UmV2ZXJzZTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUudmFsdWUgPSBsYXp5VmFsdWU7XG5cbiAgICAvLyBBZGQgY2hhaW4gc2VxdWVuY2UgbWV0aG9kcyB0byB0aGUgYGxvZGFzaGAgd3JhcHBlci5cbiAgICBsb2Rhc2gucHJvdG90eXBlLmF0ID0gd3JhcHBlckF0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUuY2hhaW4gPSB3cmFwcGVyQ2hhaW47XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jb21taXQgPSB3cmFwcGVyQ29tbWl0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUubmV4dCA9IHdyYXBwZXJOZXh0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUucGxhbnQgPSB3cmFwcGVyUGxhbnQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5yZXZlcnNlID0gd3JhcHBlclJldmVyc2U7XG4gICAgbG9kYXNoLnByb3RvdHlwZS50b0pTT04gPSBsb2Rhc2gucHJvdG90eXBlLnZhbHVlT2YgPSBsb2Rhc2gucHJvdG90eXBlLnZhbHVlID0gd3JhcHBlclZhbHVlO1xuXG4gICAgLy8gQWRkIGxhenkgYWxpYXNlcy5cbiAgICBsb2Rhc2gucHJvdG90eXBlLmZpcnN0ID0gbG9kYXNoLnByb3RvdHlwZS5oZWFkO1xuXG4gICAgaWYgKHN5bUl0ZXJhdG9yKSB7XG4gICAgICBsb2Rhc2gucHJvdG90eXBlW3N5bUl0ZXJhdG9yXSA9IHdyYXBwZXJUb0l0ZXJhdG9yO1xuICAgIH1cbiAgICByZXR1cm4gbG9kYXNoO1xuICB9KTtcblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvLyBFeHBvcnQgbG9kYXNoLlxuICB2YXIgXyA9IHJ1bkluQ29udGV4dCgpO1xuXG4gIC8vIFNvbWUgQU1EIGJ1aWxkIG9wdGltaXplcnMsIGxpa2Ugci5qcywgY2hlY2sgZm9yIGNvbmRpdGlvbiBwYXR0ZXJucyBsaWtlOlxuICBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcbiAgICAvLyBFeHBvc2UgTG9kYXNoIG9uIHRoZSBnbG9iYWwgb2JqZWN0IHRvIHByZXZlbnQgZXJyb3JzIHdoZW4gTG9kYXNoIGlzXG4gICAgLy8gbG9hZGVkIGJ5IGEgc2NyaXB0IHRhZyBpbiB0aGUgcHJlc2VuY2Ugb2YgYW4gQU1EIGxvYWRlci5cbiAgICAvLyBTZWUgaHR0cDovL3JlcXVpcmVqcy5vcmcvZG9jcy9lcnJvcnMuaHRtbCNtaXNtYXRjaCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgIC8vIFVzZSBgXy5ub0NvbmZsaWN0YCB0byByZW1vdmUgTG9kYXNoIGZyb20gdGhlIGdsb2JhbCBvYmplY3QuXG4gICAgcm9vdC5fID0gXztcblxuICAgIC8vIERlZmluZSBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlIHNvLCB0aHJvdWdoIHBhdGggbWFwcGluZywgaXQgY2FuIGJlXG4gICAgLy8gcmVmZXJlbmNlZCBhcyB0aGUgXCJ1bmRlcnNjb3JlXCIgbW9kdWxlLlxuICAgIGRlZmluZShmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBfO1xuICAgIH0pO1xuICB9XG4gIC8vIENoZWNrIGZvciBgZXhwb3J0c2AgYWZ0ZXIgYGRlZmluZWAgaW4gY2FzZSBhIGJ1aWxkIG9wdGltaXplciBhZGRzIGl0LlxuICBlbHNlIGlmIChmcmVlTW9kdWxlKSB7XG4gICAgLy8gRXhwb3J0IGZvciBOb2RlLmpzLlxuICAgIChmcmVlTW9kdWxlLmV4cG9ydHMgPSBfKS5fID0gXztcbiAgICAvLyBFeHBvcnQgZm9yIENvbW1vbkpTIHN1cHBvcnQuXG4gICAgZnJlZUV4cG9ydHMuXyA9IF87XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gRXhwb3J0IHRvIHRoZSBnbG9iYWwgb2JqZWN0LlxuICAgIHJvb3QuXyA9IF87XG4gIH1cbn0uY2FsbCh0aGlzKSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVmFsdWUgPSBleHBvcnRzLkFyaXR5ID0gZXhwb3J0cy5GbG9hdE9yTWlsbGlzZWNvbmRzID0gdm9pZCAwO1xuY29uc3QgZGVjaW1hbF9qc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJkZWNpbWFsLmpzXCIpKTtcbmNvbnN0IGxvZGFzaF8xID0gcmVxdWlyZShcImxvZGFzaFwiKTtcbmNvbnN0IGRhdGV0aW1lUmUgPSBuZXcgUmVnRXhwKCdbMS05XVswLTldezN9LVswMV1bMC05XS1bMC0zXVswLTldW1QgXVswLTJdWzAtOV06WzAtNV1bMC05XScpO1xuY29uc3QgRmxvYXRPck1pbGxpc2Vjb25kcyA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IHYgPSB2YWx1ZS50cmltKCk7XG4gICAgaWYgKHYgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBuZXcgZGVjaW1hbF9qc18xLmRlZmF1bHQoMCk7XG4gICAgfVxuICAgIGlmIChkYXRldGltZVJlLnRlc3QodikpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBkZWNpbWFsX2pzXzEuZGVmYXVsdChuZXcgRGF0ZSh2KS52YWx1ZU9mKCkpO1xuICAgIH1cbiAgICBjb25zdCBkZWNpbWFsVmFsdWUgPSBuZXcgZGVjaW1hbF9qc18xLmRlZmF1bHQodik7XG4gICAgcmV0dXJuIGRlY2ltYWxWYWx1ZS5pc05hTigpID8gbmV3IGRlY2ltYWxfanNfMS5kZWZhdWx0KDApIDogZGVjaW1hbFZhbHVlO1xufTtcbmV4cG9ydHMuRmxvYXRPck1pbGxpc2Vjb25kcyA9IEZsb2F0T3JNaWxsaXNlY29uZHM7XG5jbGFzcyBBcml0eSB7XG4gICAgY29uc3RydWN0b3Iocm93cywgY29sdW1ucykge1xuICAgICAgICB0aGlzLmlzUm93ID0gKCkgPT4gdGhpcy5yb3dzID4gMSAmJiB0aGlzLmNvbHMgPT09IDE7XG4gICAgICAgIHRoaXMuaXNDb2x1bW4gPSAoKSA9PiB0aGlzLnJvd3MgPT09IDEgJiYgdGhpcy5jb2xzID4gMTtcbiAgICAgICAgdGhpcy5pc0NlbGwgPSAoKSA9PiB0aGlzLnJvd3MgPT09IDEgJiYgdGhpcy5jb2xzID09PSAxO1xuICAgICAgICB0aGlzLnJvd3MgPSByb3dzO1xuICAgICAgICB0aGlzLmNvbHMgPSBjb2x1bW5zO1xuICAgIH1cbn1cbmV4cG9ydHMuQXJpdHkgPSBBcml0eTtcbmNsYXNzIFZhbHVlIHtcbiAgICBjb25zdHJ1Y3Rvcih2YWwpIHtcbiAgICAgICAgdGhpcy5nZXQgPSAocm93LCBjb2x1bW4pID0+IHRoaXMudmFsW3Jvd11bY29sdW1uXTtcbiAgICAgICAgdGhpcy5nZXRBc051bWJlciA9IChyb3csIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChyb3csIGNvbHVtbik7XG4gICAgICAgICAgICByZXR1cm4gZXhwb3J0cy5GbG9hdE9yTWlsbGlzZWNvbmRzKHZhbHVlKTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGdldEFyaXR5IHJldHVybnMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGNvbnRhaW5lZCB2YWx1ZSwgaW4gcm93cyBhbmQgY29sdW1uc1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5nZXRBcml0eSA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1heENvbHMgPSB0aGlzLnZhbC5yZWR1Y2UoKG1heCwgY3VycmVudFJvdykgPT4gTWF0aC5tYXgobWF4LCBjdXJyZW50Um93Lmxlbmd0aCksIDApO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBcml0eSh0aGlzLnZhbC5sZW5ndGgsIG1heENvbHMpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRvU3RyaW5nID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0QXJpdHkoKS5pc0NlbGwoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldCgwLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBgWyR7bG9kYXNoXzEuZmxhdHRlbih0aGlzLnZhbClcbiAgICAgICAgICAgICAgICAubWFwKCh2YWwpID0+IHZhbC50cmltKCkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigodmFsKSA9PiB2YWwgIT09ICcnKVxuICAgICAgICAgICAgICAgIC5qb2luKCcsICcpfV1gO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnZhbCA9IHZhbDtcbiAgICB9XG59XG5leHBvcnRzLlZhbHVlID0gVmFsdWU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQWxnZWJyYWljT3BlcmF0aW9uID0gdm9pZCAwO1xuY29uc3QgbmV2ZXJ0aHJvd18xID0gcmVxdWlyZShcIi4uL25ldmVydGhyb3cvbmV2ZXJ0aHJvd1wiKTtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY29uc3QgY2FsY18xID0gcmVxdWlyZShcIi4vY2FsY1wiKTtcbmNvbnN0IHJlc3VsdHNfMSA9IHJlcXVpcmUoXCIuL3Jlc3VsdHNcIik7XG5jb25zdCBsb2Rhc2hfMSA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XG5jbGFzcyBBbGdlYnJhaWNPcGVyYXRpb24ge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgdGhpcy5nZXRWYWx1ZSA9ICh0YWJsZSwgY2VsbCkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLm9wZXJhdG9yKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnKyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZCh0YWJsZSwgY2VsbCk7XG4gICAgICAgICAgICAgICAgY2FzZSAnLSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YnRyYWN0KHRhYmxlLCBjZWxsKTtcbiAgICAgICAgICAgICAgICBjYXNlICcqJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlwbHkodGFibGUsIGNlbGwpO1xuICAgICAgICAgICAgICAgIGNhc2UgJy8nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kaXZpZGUodGFibGUsIGNlbGwpO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKEVycm9yKCdJbnZhbGlkIGFsZ2JyYWljIG9wZXJhdG9yOiAnICsgdGhpcy5vcGVyYXRvcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogd2l0aENlbGxBbmRSYW5nZSBhaWRzIGluIHBlcmZvcm1pbmcgYSBudW1lcmljIG9wZXJhdGlvbiBvbiBjZWxscyBpbiBhXG4gICAgICAgICAqIHRhYmxlIHdoZXJlIGF0IGxlYXN0IG9uZSBvZiB0aGUgdHdvIG9wZXJhbmRzIGlzIGEgc2luZ2xlIGNlbGwuIE9wdGlvbmFsbHksXG4gICAgICAgICAqIHRoZSB0d28gc2lkZXMgb2YgdGhlIG9wZXJhdGlvbiBjYW4gYmUgc3dhcHBlZCwgc28gdGhlIHNpbmdsZSBjZWxsIGlzXG4gICAgICAgICAqIGFsd2F5cyBvbiB0aGUgcmlnaHQuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLndpdGhDZWxsQW5kUmFuZ2UgPSAodGFibGUsIGNlbGwsIG5hbWUsIGNhbkhhdmVSaWdodFJhbmdlLCBmbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGVmdFZhbHVlID0gdGhpcy5sZWZ0U291cmNlLmdldFZhbHVlKHRhYmxlLCBjZWxsKTtcbiAgICAgICAgICAgIGlmIChsZWZ0VmFsdWUuaXNFcnIoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKGxlZnRWYWx1ZS5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByaWdodFZhbHVlID0gdGhpcy5yaWdodFNvdXJjZS5nZXRWYWx1ZSh0YWJsZSwgY2VsbCk7XG4gICAgICAgICAgICBpZiAocmlnaHRWYWx1ZS5pc0VycigpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIocmlnaHRWYWx1ZS5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsZWZ0QXJpdHkgPSBsZWZ0VmFsdWUudmFsdWUuZ2V0QXJpdHkoKTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0QXJpdHkgPSByaWdodFZhbHVlLnZhbHVlLmdldEFyaXR5KCk7XG4gICAgICAgICAgICBpZiAoIXJpZ2h0QXJpdHkuaXNDZWxsKCkgJiYgIWxlZnRBcml0eS5pc0NlbGwoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKEVycm9yKGBBdCBsZWFzdCBvbmUgb3BlcmFuZCBpbiBhbGdlYnJhaWMgXCIke25hbWV9XCIgbXVzdCBiZSBhIHNpbmdsZSBjZWxsLmApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcmlnaHRBcml0eS5pc0NlbGwoKSAmJiAhY2FuSGF2ZVJpZ2h0UmFuZ2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihFcnJvcihgUmlnaHQgb3BlcmFuZCBpbiBhbGdlYnJhaWMgXCIke25hbWV9XCIgbXVzdCBiZSBhIHNpbmdsZSBjZWxsLmApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyaWdodEFyaXR5LmlzQ2VsbCgpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHRDZWxsVmFsdWUgPSByaWdodFZhbHVlLnZhbHVlLmdldEFzTnVtYmVyKDAsIDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGxvZGFzaF8xLm1hcChsZWZ0VmFsdWUudmFsdWUudmFsLCAoY3VycmVudFJvdykgPT4gbG9kYXNoXzEubWFwKGN1cnJlbnRSb3csIChjdXJyZW50Q2VsbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0Q2VsbFZhbHVlID0gcmVzdWx0c18xLkZsb2F0T3JNaWxsaXNlY29uZHMoY3VycmVudENlbGwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm4obGVmdENlbGxWYWx1ZSwgcmlnaHRDZWxsVmFsdWUpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IHJlc3VsdHNfMS5WYWx1ZShyZXN1bHQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxlZnRDZWxsVmFsdWUgPSBsZWZ0VmFsdWUudmFsdWUuZ2V0QXNOdW1iZXIoMCwgMCk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBsb2Rhc2hfMS5tYXAocmlnaHRWYWx1ZS52YWx1ZS52YWwsIChjdXJyZW50Um93KSA9PiBsb2Rhc2hfMS5tYXAoY3VycmVudFJvdywgKGN1cnJlbnRDZWxsKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHRDZWxsVmFsdWUgPSByZXN1bHRzXzEuRmxvYXRPck1pbGxpc2Vjb25kcyhjdXJyZW50Q2VsbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZuKGxlZnRDZWxsVmFsdWUsIHJpZ2h0Q2VsbFZhbHVlKS50b1N0cmluZygpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgcmVzdWx0c18xLlZhbHVlKHJlc3VsdCkpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFkZCA9ICh0YWJsZSwgY2VsbCkgPT4gdGhpcy53aXRoQ2VsbEFuZFJhbmdlKHRhYmxlLCBjZWxsLCAnYWRkJywgdHJ1ZSwgKGxlZnQsIHJpZ2h0KSA9PiBsZWZ0LnBsdXMocmlnaHQpKTtcbiAgICAgICAgdGhpcy5zdWJ0cmFjdCA9ICh0YWJsZSwgY2VsbCkgPT4gdGhpcy53aXRoQ2VsbEFuZFJhbmdlKHRhYmxlLCBjZWxsLCAnc3VidHJhY3QnLCB0cnVlLCAobGVmdCwgcmlnaHQpID0+IGxlZnQubWludXMocmlnaHQpKTtcbiAgICAgICAgdGhpcy5tdWx0aXBseSA9ICh0YWJsZSwgY2VsbCkgPT4gdGhpcy53aXRoQ2VsbEFuZFJhbmdlKHRhYmxlLCBjZWxsLCAnbXVsdGlwbHknLCB0cnVlLCAobGVmdCwgcmlnaHQpID0+IGxlZnQudGltZXMocmlnaHQpKTtcbiAgICAgICAgdGhpcy5kaXZpZGUgPSAodGFibGUsIGNlbGwpID0+IHRoaXMud2l0aENlbGxBbmRSYW5nZSh0YWJsZSwgY2VsbCwgJ2RpdmlkZScsIGZhbHNlLCAobGVmdCwgcmlnaHQpID0+IGxlZnQuZGl2aWRlZEJ5KHJpZ2h0KSk7XG4gICAgICAgIGNvbnN0IHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAnYWxnZWJyYWljX29wZXJhdGlvbicpO1xuICAgICAgICBpZiAodHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAzKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGlsZFR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LmNoaWxkcmVuWzFdLCAnYWxnZWJyYWljX29wZXJhdG9yJyk7XG4gICAgICAgIGlmIChjaGlsZFR5cGVFcnIpIHtcbiAgICAgICAgICAgIHRocm93IGNoaWxkVHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZXJhdG9yID0gYXN0LmNoaWxkcmVuWzFdLnRleHQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmxlZnRTb3VyY2UgPSBuZXcgY2FsY18xLlNvdXJjZShhc3QuY2hpbGRyZW5bMF0sIHRhYmxlKTtcbiAgICAgICAgICAgIHRoaXMucmlnaHRTb3VyY2UgPSBuZXcgY2FsY18xLlNvdXJjZShhc3QuY2hpbGRyZW5bMl0sIHRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIFN0aWxsIGluIGEgY29uc3RydWN0b3IsIHNvIG5vdGhpbmcgd2UgY2FuIGRvIGJ1dCB0aHJvdyBhZ2FpblxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLkFsZ2VicmFpY09wZXJhdGlvbiA9IEFsZ2VicmFpY09wZXJhdGlvbjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Db25kaXRpb25hbEZ1bmN0aW9uQ2FsbCA9IHZvaWQgMDtcbmNvbnN0IG5ldmVydGhyb3dfMSA9IHJlcXVpcmUoXCIuLi9uZXZlcnRocm93L25ldmVydGhyb3dcIik7XG5jb25zdCBhc3RfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2FzdF91dGlsc1wiKTtcbmNvbnN0IGNhbGNfMSA9IHJlcXVpcmUoXCIuL2NhbGNcIik7XG5jbGFzcyBDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCB7XG4gICAgY29uc3RydWN0b3IoYXN0LCB0YWJsZSkge1xuICAgICAgICB0aGlzLmdldFZhbHVlID0gKHRhYmxlLCBjZWxsKSA9PiB0aGlzLnByZWRpY2F0ZVxuICAgICAgICAgICAgLmV2YWwodGFibGUsIGNlbGwpXG4gICAgICAgICAgICAuYW5kVGhlbigocHJlZGljYXRlUmVzdWx0KSA9PiBwcmVkaWNhdGVSZXN1bHRcbiAgICAgICAgICAgID8gdGhpcy5sZWZ0U291cmNlLmdldFZhbHVlKHRhYmxlLCBjZWxsKVxuICAgICAgICAgICAgOiB0aGlzLnJpZ2h0U291cmNlLmdldFZhbHVlKHRhYmxlLCBjZWxsKSk7XG4gICAgICAgIGNvbnN0IHR5cGVFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICdjb25kaXRpb25hbF9mdW5jdGlvbl9jYWxsJyk7XG4gICAgICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAzKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5wcmVkaWNhdGUgPSBuZXcgUHJlZGljYXRlKGFzdC5jaGlsZHJlblswXSwgdGFibGUpO1xuICAgICAgICAgICAgdGhpcy5sZWZ0U291cmNlID0gbmV3IGNhbGNfMS5Tb3VyY2UoYXN0LmNoaWxkcmVuWzFdLCB0YWJsZSk7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0U291cmNlID0gbmV3IGNhbGNfMS5Tb3VyY2UoYXN0LmNoaWxkcmVuWzJdLCB0YWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBTdGlsbCBpbiBhIGNvbnN0cnVjdG9yLCBzbyBub3RoaW5nIHdlIGNhbiBkbyBidXQgdGhyb3cgYWdhaW5cbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5Db25kaXRpb25hbEZ1bmN0aW9uQ2FsbCA9IENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsO1xuY2xhc3MgUHJlZGljYXRlIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIHRoaXMuZXZhbCA9ICh0YWJsZSwgY2VsbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGVmdERhdGEgPSB0aGlzLmxlZnRTb3VyY2UuZ2V0VmFsdWUodGFibGUsIGNlbGwpO1xuICAgICAgICAgICAgaWYgKGxlZnREYXRhLmlzRXJyKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihsZWZ0RGF0YS5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByaWdodERhdGEgPSB0aGlzLnJpZ2h0U291cmNlLmdldFZhbHVlKHRhYmxlLCBjZWxsKTtcbiAgICAgICAgICAgIGlmIChyaWdodERhdGEuaXNFcnIoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKHJpZ2h0RGF0YS5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsZWZ0QXJpdHkgPSBsZWZ0RGF0YS52YWx1ZS5nZXRBcml0eSgpO1xuICAgICAgICAgICAgY29uc3QgcmlnaHRBcml0eSA9IHJpZ2h0RGF0YS52YWx1ZS5nZXRBcml0eSgpO1xuICAgICAgICAgICAgaWYgKCFsZWZ0QXJpdHkuaXNDZWxsKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihFcnJvcignQ2FuIG9ubHkgdXNlIGNvbXBhcmlzb24gb3BlcmF0b3Igb24gYSBzaW5nbGUgY2VsbC4gTGVmdCBzaWRlIGlzIG5vdCBhIGNlbGwuJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyaWdodEFyaXR5LmlzQ2VsbCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIoRXJyb3IoJ0NhbiBvbmx5IHVzZSBjb21wYXJpc29uIG9wZXJhdG9yIG9uIGEgc2luZ2xlIGNlbGwuIFJpZ2h0IHNpZGUgaXMgbm90IGEgY2VsbC4nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsZWZ0VmFsID0gbGVmdERhdGEudmFsdWUuZ2V0QXNOdW1iZXIoMCwgMCk7XG4gICAgICAgICAgICBjb25zdCByaWdodFZhbCA9IHJpZ2h0RGF0YS52YWx1ZS5nZXRBc051bWJlcigwLCAwKTtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5vcGVyYXRvcikge1xuICAgICAgICAgICAgICAgIGNhc2UgJz4nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKGxlZnRWYWwuZ3JlYXRlclRoYW4ocmlnaHRWYWwpKTtcbiAgICAgICAgICAgICAgICBjYXNlICc+PSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobGVmdFZhbC5ncmVhdGVyVGhhbk9yRXF1YWxUbyhyaWdodFZhbCkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJzwnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKGxlZnRWYWwubGVzc1RoYW4ocmlnaHRWYWwpKTtcbiAgICAgICAgICAgICAgICBjYXNlICc8PSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobGVmdFZhbC5sZXNzVGhhbk9yRXF1YWxUbyhyaWdodFZhbCkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJz09JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhsZWZ0VmFsLmVxdWFscyhyaWdodFZhbCkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJyE9JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayghbGVmdFZhbC5lcXVhbHMocmlnaHRWYWwpKTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihFcnJvcignSW52YWxpZCBjb25kaXRpb25hbCBvcGVyYXRvcjogJyArIHRoaXMub3BlcmF0b3IpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdCwgJ3ByZWRpY2F0ZScpO1xuICAgICAgICBpZiAodHlwZUVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGFzdCwgMyk7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2hpbGRUeXBlRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LmNoaWxkcmVuWzFdLCAnY29uZGl0aW9uYWxfb3BlcmF0b3InKTtcbiAgICAgICAgaWYgKGNoaWxkVHlwZUVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBjaGlsZFR5cGVFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZXJhdG9yID0gYXN0LmNoaWxkcmVuWzFdLnRleHQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmxlZnRTb3VyY2UgPSBuZXcgY2FsY18xLlNvdXJjZShhc3QuY2hpbGRyZW5bMF0sIHRhYmxlKTtcbiAgICAgICAgICAgIHRoaXMucmlnaHRTb3VyY2UgPSBuZXcgY2FsY18xLlNvdXJjZShhc3QuY2hpbGRyZW5bMl0sIHRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIFN0aWxsIGluIGEgY29uc3RydWN0b3IsIHNvIG5vdGhpbmcgd2UgY2FuIGRvIGJ1dCB0aHJvdyBhZ2FpblxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQ29uc3RhbnQgPSB2b2lkIDA7XG5jb25zdCBuZXZlcnRocm93XzEgPSByZXF1aXJlKFwiLi4vbmV2ZXJ0aHJvdy9uZXZlcnRocm93XCIpO1xuY29uc3QgYXN0X3V0aWxzXzEgPSByZXF1aXJlKFwiLi9hc3RfdXRpbHNcIik7XG5jb25zdCByZXN1bHRzXzEgPSByZXF1aXJlKFwiLi9yZXN1bHRzXCIpO1xuY2xhc3MgQ29uc3RhbnQge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgY29uc3QgdHlwZUVyciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICdyZWFsJywgJ2Zsb2F0Jyk7XG4gICAgICAgIGlmICh0eXBlRXJyKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBhc3QudGV4dFswXSA9PT0gJy0nID8gLTEgOiAxO1xuICAgICAgICBpZiAoYXN0LnR5cGUgPT09ICdyZWFsJykge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG11bHRpcGxpZXIgKiBwYXJzZUludChhc3QuY2hpbGRyZW5bMF0udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID1cbiAgICAgICAgICAgICAgICBtdWx0aXBsaWVyICpcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChhc3QuY2hpbGRyZW5bMF0udGV4dCArICcuJyArIGFzdC5jaGlsZHJlblsxXS50ZXh0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRWYWx1ZSh0YWJsZSwgY3VycmVudENlbGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgcmVzdWx0c18xLlZhbHVlKFtbdGhpcy52YWx1ZS50b1N0cmluZygpXV0pKTtcbiAgICB9XG59XG5leHBvcnRzLkNvbnN0YW50ID0gQ29uc3RhbnQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQWJzb2x1dGVDb2x1bW4gPSBleHBvcnRzLkNvbHVtbiA9IGV4cG9ydHMubmV3Q29sdW1uID0gdm9pZCAwO1xuY29uc3QgbmV2ZXJ0aHJvd18xID0gcmVxdWlyZShcIi4uL25ldmVydGhyb3cvbmV2ZXJ0aHJvd1wiKTtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY29uc3QgcmVzdWx0c18xID0gcmVxdWlyZShcIi4vcmVzdWx0c1wiKTtcbmNvbnN0IG5ld0NvbHVtbiA9IChhc3QsIHRhYmxlKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgc3dpdGNoIChhc3QudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAncmVsYXRpdmVfY29sdW1uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBSZWxhdGl2ZUNvbHVtbihhc3QsIHRhYmxlKSk7XG4gICAgICAgICAgICBjYXNlICdhYnNvbHV0ZV9jb2x1bW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IEFic29sdXRlQ29sdW1uKGFzdCwgdGFibGUpKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIobmV3IEVycm9yKGBGb3JtdWxhIGVsZW1lbnQgJyR7YXN0LnRleHR9JyBpcyBhICR7YXN0LnR5cGV9IGJ1dCBleHBlY3RlZCBhbiBgICtcbiAgICAgICAgICAgICAgICAgICAgJ3JlbGF0dmVfY29sdW1uIG9yIGFic29sdXRlX2NvbHVtbiBpbiB0aGlzIHBvc2l0aW9uLicpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIoZXJyb3IpO1xuICAgIH1cbn07XG5leHBvcnRzLm5ld0NvbHVtbiA9IG5ld0NvbHVtbjtcbmNsYXNzIENvbHVtbiB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZ2V0VmFsdWUgPSAodGFibGUsIGN1cnJlbnRDZWxsKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSAoKF9hID0gdGFibGUuZ2V0Q2VsbEF0KGN1cnJlbnRDZWxsLnJvdywgdGhpcy5nZXRJbmRleChjdXJyZW50Q2VsbCkpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG9UZXh0KCkpIHx8XG4gICAgICAgICAgICAgICAgJyc7XG4gICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyByZXN1bHRzXzEuVmFsdWUoW1t2YWxdXSkpO1xuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydHMuQ29sdW1uID0gQ29sdW1uO1xuY2xhc3MgUmVsYXRpdmVDb2x1bW4gZXh0ZW5kcyBDb2x1bW4ge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nZXRJbmRleCA9IChjdXJyZW50Q2VsbCkgPT4gY3VycmVudENlbGwuY29sdW1uICsgdGhpcy5vZmZzZXQ7XG4gICAgICAgIHRoaXMuZ2V0QWJzb2x1dGVJbmRleCA9ICgpID0+IG5ldmVydGhyb3dfMS5lcnIoYXN0X3V0aWxzXzEuZXJyUmVsYXRpdmVSZWZlcmVuY2VJbmRleCk7XG4gICAgICAgIGNvbnN0IHR5cGVFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICdyZWxhdGl2ZV9jb2x1bW4nKTtcbiAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChhc3QsIDEpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBhc3QudGV4dFsxXSA9PT0gJy0nID8gLTEgOiAxO1xuICAgICAgICB0aGlzLm9mZnNldCA9IG11bHRpcGxpZXIgKiBwYXJzZUludChhc3QuY2hpbGRyZW5bMF0udGV4dCk7XG4gICAgfVxufVxuY2xhc3MgQWJzb2x1dGVDb2x1bW4gZXh0ZW5kcyBDb2x1bW4ge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nZXRJbmRleCA9IChjdXJyZW50Q2VsbCkgPT4gdGhpcy5pbmRleDtcbiAgICAgICAgdGhpcy5nZXRBYnNvbHV0ZUluZGV4ID0gKCkgPT4gbmV2ZXJ0aHJvd18xLm9rKHRoaXMuaW5kZXgpO1xuICAgICAgICBsZXQgaW5kZXggPSAtMTtcbiAgICAgICAgbGV0IHN5bWJvbCA9ICcnO1xuICAgICAgICBzd2l0Y2ggKGFzdC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBzeW1ib2wgPSBhc3QudGV4dFsxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LmNoaWxkcmVuWzBdLCAnaW50Jyk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXZlcnRocm93XzEuZXJyKHR5cGVFcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluZGV4ID0gcGFyc2VJbnQoYXN0LmNoaWxkcmVuWzBdLnRleHQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvcm11bGEgZWxlbWVudCAnJHthc3QudGV4dH0nIGlzIGEgJHthc3QudHlwZX0gYnV0IGV4cGVjdGVkIGAgK1xuICAgICAgICAgICAgICAgICAgICAnYSBcXCdhYnNvbHV0ZV9jb2x1bW5cXCcgaW4gdGhpcyBwb3NpdGlvbi4nKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHN5bWJvbCkge1xuICAgICAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzwnOlxuICAgICAgICAgICAgICAgIGluZGV4ID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJz4nOlxuICAgICAgICAgICAgICAgIGluZGV4ID0gdGFibGUuZ2V0V2lkdGgoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvbHVtbiBzeW1ib2wgJyR7c3ltYm9sfSdgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IGFzdF91dGlsc18xLmVyckluZGV4MDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluZGV4ID0gaW5kZXggLSAxOyAvLyAtMSBmb3IgYmVpbmcgemVybyBpbmRleGVkXG4gICAgfVxufVxuZXhwb3J0cy5BYnNvbHV0ZUNvbHVtbiA9IEFic29sdXRlQ29sdW1uO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkFic29sdXRlUm93ID0gZXhwb3J0cy5Sb3cgPSBleHBvcnRzLm5ld1JvdyA9IHZvaWQgMDtcbmNvbnN0IG5ldmVydGhyb3dfMSA9IHJlcXVpcmUoXCIuLi9uZXZlcnRocm93L25ldmVydGhyb3dcIik7XG5jb25zdCBhc3RfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2FzdF91dGlsc1wiKTtcbmNvbnN0IHJlc3VsdHNfMSA9IHJlcXVpcmUoXCIuL3Jlc3VsdHNcIik7XG5jb25zdCBuZXdSb3cgPSAoYXN0LCB0YWJsZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIHN3aXRjaCAoYXN0LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3JlbGF0aXZlX3Jvdyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgUmVsYXRpdmVSb3coYXN0LCB0YWJsZSkpO1xuICAgICAgICAgICAgY2FzZSAnYWJzb2x1dGVfcm93JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBBYnNvbHV0ZVJvdyhhc3QsIHRhYmxlKSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKG5ldyBFcnJvcihgRm9ybXVsYSBlbGVtZW50ICcke2FzdC50ZXh0fScgaXMgYSAke2FzdC50eXBlfSBidXQgZXhwZWN0ZWQgYW4gYCArXG4gICAgICAgICAgICAgICAgICAgICdyZWxhdHZlX3JvdyBvciBhYnNvbHV0ZV9yb3cgIGluIHRoaXMgcG9zaXRpb24uJykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihlcnJvcik7XG4gICAgfVxufTtcbmV4cG9ydHMubmV3Um93ID0gbmV3Um93O1xuY2xhc3MgUm93IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5nZXRWYWx1ZSA9ICh0YWJsZSwgY3VycmVudENlbGwpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9ICgoX2EgPSB0YWJsZVxuICAgICAgICAgICAgICAgIC5nZXRDZWxsQXQodGhpcy5nZXRJbmRleChjdXJyZW50Q2VsbCksIGN1cnJlbnRDZWxsLmNvbHVtbikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1RleHQoKSkgfHwgJyc7XG4gICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyByZXN1bHRzXzEuVmFsdWUoW1t2YWxdXSkpO1xuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydHMuUm93ID0gUm93O1xuY2xhc3MgUmVsYXRpdmVSb3cgZXh0ZW5kcyBSb3cge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nZXRJbmRleCA9IChjdXJyZW50Q2VsbCkgPT4gY3VycmVudENlbGwucm93ICsgdGhpcy5vZmZzZXQ7XG4gICAgICAgIHRoaXMuZ2V0QWJzb2x1dGVJbmRleCA9ICgpID0+IG5ldmVydGhyb3dfMS5lcnIoYXN0X3V0aWxzXzEuZXJyUmVsYXRpdmVSZWZlcmVuY2VJbmRleCk7XG4gICAgICAgIGNvbnN0IHR5cGVFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICdyZWxhdGl2ZV9yb3cnKTtcbiAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChhc3QsIDEpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBhc3QudGV4dFsxXSA9PT0gJy0nID8gLTEgOiAxO1xuICAgICAgICB0aGlzLm9mZnNldCA9IG11bHRpcGxpZXIgKiBwYXJzZUludChhc3QuY2hpbGRyZW5bMF0udGV4dCk7XG4gICAgfVxufVxuY2xhc3MgQWJzb2x1dGVSb3cgZXh0ZW5kcyBSb3cge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nZXRJbmRleCA9IChjdXJyZW50Q2VsbCkgPT4gdGhpcy5pbmRleDtcbiAgICAgICAgdGhpcy5nZXRBYnNvbHV0ZUluZGV4ID0gKCkgPT4gbmV2ZXJ0aHJvd18xLm9rKHRoaXMuaW5kZXgpO1xuICAgICAgICBsZXQgaW5kZXggPSAtMTtcbiAgICAgICAgbGV0IHN5bWJvbCA9ICcnO1xuICAgICAgICBzd2l0Y2ggKGFzdC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBzeW1ib2wgPSBhc3QudGV4dFsxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LmNoaWxkcmVuWzBdLCAnaW50Jyk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXZlcnRocm93XzEuZXJyKHR5cGVFcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluZGV4ID0gcGFyc2VJbnQoYXN0LmNoaWxkcmVuWzBdLnRleHQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvcm11bGEgZWxlbWVudCAnJHthc3QudGV4dH0nIGlzIGEgJHthc3QudHlwZX0gYnV0IGV4cGVjdGVkIGAgK1xuICAgICAgICAgICAgICAgICAgICAnYSBcXCdhYnNvbHV0ZV9yb3dcXCcgaW4gdGhpcyBwb3NpdGlvbi4nKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHN5bWJvbCkge1xuICAgICAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzwnOlxuICAgICAgICAgICAgICAgIGluZGV4ID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJz4nOlxuICAgICAgICAgICAgICAgIGluZGV4ID0gdGFibGUuZ2V0SGVpZ2h0KCkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnSSc6XG4gICAgICAgICAgICAgICAgaW5kZXggPSAyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcm93IHN5bWJvbCAnJHtzeW1ib2x9J2ApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgYXN0X3V0aWxzXzEuZXJySW5kZXgwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5pbmRleCA9IDA7IC8vIGFjY291bnQgZm9yIGJlaW5nIHplcm8gaW5kZXhlZFxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbmRleCA9IGluZGV4OyAvLyAtMSBmb3IgYmVpbmcgemVybyBpbmRleGVkLCBidXQgcGx1cyAxIHRvIHNraXAgaGVhZGVyXG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLkFic29sdXRlUm93ID0gQWJzb2x1dGVSb3c7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUmVmZXJlbmNlID0gdm9pZCAwO1xuY29uc3QgbmV2ZXJ0aHJvd18xID0gcmVxdWlyZShcIi4uL25ldmVydGhyb3cvbmV2ZXJ0aHJvd1wiKTtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY29uc3QgY29sdW1uXzEgPSByZXF1aXJlKFwiLi9jb2x1bW5cIik7XG5jb25zdCByZXN1bHRzXzEgPSByZXF1aXJlKFwiLi9yZXN1bHRzXCIpO1xuY29uc3Qgcm93XzEgPSByZXF1aXJlKFwiLi9yb3dcIik7XG5jbGFzcyBSZWZlcmVuY2Uge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgdGhpcy5nZXRWYWx1ZSA9ICh0YWJsZSwgY3VycmVudENlbGwpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGNvbnN0IGNlbGwgPSB7XG4gICAgICAgICAgICAgICAgcm93OiB0aGlzLnJvdyA/IHRoaXMucm93LmdldEluZGV4KGN1cnJlbnRDZWxsKSA6IGN1cnJlbnRDZWxsLnJvdyxcbiAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5jb2x1bW4uZ2V0SW5kZXgoY3VycmVudENlbGwpXG4gICAgICAgICAgICAgICAgICAgIDogY3VycmVudENlbGwuY29sdW1uLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9ICgoX2EgPSB0YWJsZS5nZXRDZWxsQXQoY2VsbC5yb3csIGNlbGwuY29sdW1uKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvVGV4dCgpKSB8fCAnJztcbiAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IHJlc3VsdHNfMS5WYWx1ZShbW3ZhbF1dKSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAnc291cmNlX3JlZmVyZW5jZScsICdhYnNvbHV0ZV9yZWZlcmVuY2UnLCAncmVsYXRpdmVfcmVmZXJlbmNlJyk7XG4gICAgICAgIGlmICh0eXBlRXJyKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXN0LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IGFzdC5jaGlsZHJlbltpXTtcbiAgICAgICAgICAgIHN3aXRjaCAoY2hpbGQudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3JlbGF0aXZlX3Jvdyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnYWJzb2x1dGVfcm93JzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucm93ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdSZWZlcmVuY2UgbWF5IG9ubHkgaGF2ZSBhdCBtb3N0IDEgcm93LCBtb3JlIHRoYW4gMSBwcm92aWRlZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNyZWF0ZWRSb3cgPSByb3dfMS5uZXdSb3coY2hpbGQsIHRhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZWRSb3cuaXNFcnIoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZWRSb3cuZXJyb3IgPT09IGFzdF91dGlsc18xLmVyckluZGV4MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBhY3R1YWxseSBhbiBlcnJvciwganVzdCBpbmRpY2F0ZXMgdXNpbmcgY3VycmVudCBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgY3JlYXRlZFJvdy5lcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdyA9IGNyZWF0ZWRSb3cudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3JlbGF0aXZlX2NvbHVtbic6XG4gICAgICAgICAgICAgICAgY2FzZSAnYWJzb2x1dGVfY29sdW1uJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29sdW1uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdSZWZlcmVuY2UgbWF5IG9ubHkgaGF2ZSBhdCBtb3N0IDEgY29sdW1uLCBtb3JlIHRoYW4gMSBwcm92aWRlZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNyZWF0ZWRDb2wgPSBjb2x1bW5fMS5uZXdDb2x1bW4oY2hpbGQsIHRhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZWRDb2wuaXNFcnIoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZWRDb2wuZXJyb3IgPT09IGFzdF91dGlsc18xLmVyckluZGV4MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBhY3R1YWxseSBhbiBlcnJvciwganVzdCBpbmRpY2F0ZXMgdXNpbmcgY3VycmVudCBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgY3JlYXRlZENvbC5lcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbiA9IGNyZWF0ZWRDb2wudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5SZWZlcmVuY2UgPSBSZWZlcmVuY2U7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUmFuZ2UgPSB2b2lkIDA7XG5jb25zdCBuZXZlcnRocm93XzEgPSByZXF1aXJlKFwiLi4vbmV2ZXJ0aHJvdy9uZXZlcnRocm93XCIpO1xuY29uc3QgYXN0X3V0aWxzXzEgPSByZXF1aXJlKFwiLi9hc3RfdXRpbHNcIik7XG5jb25zdCByZWZlcmVuY2VfMSA9IHJlcXVpcmUoXCIuL3JlZmVyZW5jZVwiKTtcbmNvbnN0IHJlc3VsdHNfMSA9IHJlcXVpcmUoXCIuL3Jlc3VsdHNcIik7XG5jb25zdCBsb2Rhc2hfMSA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XG5jbGFzcyBSYW5nZSB7XG4gICAgY29uc3RydWN0b3IoYXN0LCB0YWJsZSkge1xuICAgICAgICB0aGlzLmdldFZhbHVlID0gKHRhYmxlLCBjdXJyZW50Q2VsbCkgPT4ge1xuICAgICAgICAgICAgLy8gaWYgbm8gc3RhcnQgY29sdW1uIGlzIHByb3ZpZGVkLCBjb3B5IGl0IGZyb20gdGhlIGN1cnJlbnRDZWxsXG4gICAgICAgICAgICBjb25zdCBzdGFydENvbHVtbiA9IHRoaXMuc3RhcnRDb2x1bW5cbiAgICAgICAgICAgICAgICA/IHRoaXMuc3RhcnRDb2x1bW4uZ2V0SW5kZXgoY3VycmVudENlbGwpXG4gICAgICAgICAgICAgICAgOiBjdXJyZW50Q2VsbC5jb2x1bW47XG4gICAgICAgICAgICAvLyBpZiB0aGUgY29sdW1uIGlzIHByb3ZpZGVkIGluIHRoZSBmaXJzdCBzZXQsIGJ1dCBub3QgdGhlIHNlY29uZCwgY29weSBpdFxuICAgICAgICAgICAgY29uc3QgZW5kQ29sdW1uID0gdGhpcy5lbmRDb2x1bW5cbiAgICAgICAgICAgICAgICA/IHRoaXMuZW5kQ29sdW1uLmdldEluZGV4KGN1cnJlbnRDZWxsKVxuICAgICAgICAgICAgICAgIDogc3RhcnRDb2x1bW47XG4gICAgICAgICAgICBjb25zdCBzdGFydFJvdyA9IHRoaXMuc3RhcnRSb3dcbiAgICAgICAgICAgICAgICA/IHRoaXMuc3RhcnRSb3cuZ2V0SW5kZXgoY3VycmVudENlbGwpXG4gICAgICAgICAgICAgICAgOiBjdXJyZW50Q2VsbC5yb3c7XG4gICAgICAgICAgICBjb25zdCBlbmRSb3cgPSB0aGlzLmVuZFJvd1xuICAgICAgICAgICAgICAgID8gdGhpcy5lbmRSb3cuZ2V0SW5kZXgoY3VycmVudENlbGwpXG4gICAgICAgICAgICAgICAgOiBjdXJyZW50Q2VsbC5yb3c7XG4gICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyByZXN1bHRzXzEuVmFsdWUobG9kYXNoXzEubWFwKGxvZGFzaF8xLnJhbmdlKHN0YXJ0Um93LCBlbmRSb3cgKyAxKSwgKHJvdykgPT4gbG9kYXNoXzEubWFwKGxvZGFzaF8xLnJhbmdlKHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4gKyAxKSwgKGNvbCkgPT4geyB2YXIgX2E7IHJldHVybiAoKF9hID0gdGFibGUuZ2V0Q2VsbEF0KHJvdywgY29sKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvVGV4dCgpKSB8fCAnJzsgfSkpKSk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIFRoZXJlIG5lZWRzIHRvIGJlIGEgZGlzdGluY3Rpb24gYmV0d2VlbiByYW5nZXMgZm9yIHNvdXJjZSBhbmQgZGVzdGluYXRpb25cbiAgICAgICAgLy8gYSBkZXN0aW5hdGlvbiByYW5nZSBkb2VzIG5vdCBhbGxvdyByZWxhdGl2ZSByZWZlcmVuY2VzLCB3aGljaCB3b3VsZFxuICAgICAgICAvLyBzb2x2ZSB0aGlzIGlzc3VlIHdpdGggZ2V0dGluZyB0aGUgaW5kZXguXG4gICAgICAgIHRoaXMuYXNDZWxscyA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5zdGFydENvbHVtbiB8fCAhdGhpcy5zdGFydFJvdyB8fCAhdGhpcy5lbmRSb3cpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihuZXcgRXJyb3IoJ0EgcmFuZ2UgdXNlZCBhcyBhIGRlc2ludGF0aW9uIG11c3QgZGVmaW5lIHJvd3MgYW5kIGNlbGxzJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgdGhlIHNlY29uZCByZWZlcmVuY2UgaW4gdGhlIHJhbmdlIGRvZXMgbm90IGluY2x1ZGUgYSBjb2x1bW4sXG4gICAgICAgICAgICAvLyB1c2UgdGhlIHN0YXJ0IGNvbHVtbi5cbiAgICAgICAgICAgIGxldCBlbmRDb2x1bW4gPSB0aGlzLmVuZENvbHVtbjtcbiAgICAgICAgICAgIGlmICghZW5kQ29sdW1uKSB7XG4gICAgICAgICAgICAgICAgZW5kQ29sdW1uID0gdGhpcy5zdGFydENvbHVtbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0Um93SW5kZXggPSB0aGlzLnN0YXJ0Um93LmdldEFic29sdXRlSW5kZXgoKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZFJvd0luZGV4ID0gdGhpcy5lbmRSb3cuZ2V0QWJzb2x1dGVJbmRleCgpO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRDb2x1bW5JbmRleCA9IHRoaXMuc3RhcnRDb2x1bW4uZ2V0QWJzb2x1dGVJbmRleCgpO1xuICAgICAgICAgICAgY29uc3QgZW5kQ29sdW1uSW5kZXggPSBlbmRDb2x1bW4uZ2V0QWJzb2x1dGVJbmRleCgpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0Um93SW5kZXguaXNFcnIoKSB8fFxuICAgICAgICAgICAgICAgIGVuZFJvd0luZGV4LmlzRXJyKCkgfHxcbiAgICAgICAgICAgICAgICBzdGFydENvbHVtbkluZGV4LmlzRXJyKCkgfHxcbiAgICAgICAgICAgICAgICBlbmRDb2x1bW5JbmRleC5pc0VycigpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIobmV3IEVycm9yKCdBIHJlbGF0aXZlIHJhbmdlIGNhbiBub3QgYmUgdXNlZCBpbiBhIGZvcm11bGEgZGVzdGluYXRpb24nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtaW5Sb3cgPSBNYXRoLm1pbihzdGFydFJvd0luZGV4LnZhbHVlLCBlbmRSb3dJbmRleC52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBtYXhSb3cgPSBNYXRoLm1heChzdGFydFJvd0luZGV4LnZhbHVlLCBlbmRSb3dJbmRleC52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBtaW5Db2x1bW4gPSBNYXRoLm1pbihzdGFydENvbHVtbkluZGV4LnZhbHVlLCBlbmRDb2x1bW5JbmRleC52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBtYXhDb2x1bW4gPSBNYXRoLm1heChzdGFydENvbHVtbkluZGV4LnZhbHVlLCBlbmRDb2x1bW5JbmRleC52YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKGxvZGFzaF8xLmZsYXRNYXAobG9kYXNoXzEucmFuZ2UobWluUm93LCBtYXhSb3cgKyAxKSwgKHJvd051bSkgPT4gbG9kYXNoXzEucmFuZ2UobWluQ29sdW1uLCBtYXhDb2x1bW4gKyAxKS5tYXAoKGNvbE51bSkgPT4gKHsgcm93OiByb3dOdW0sIGNvbHVtbjogY29sTnVtIH0pKSkpO1xuICAgICAgICB9O1xuICAgICAgICBsZXQgdHlwZUVyciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICdyYW5nZScpO1xuICAgICAgICBpZiAodHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGFzdCwgMik7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhcnRDaGlsZCA9IGFzdC5jaGlsZHJlblswXTtcbiAgICAgICAgY29uc3QgZW5kQ2hpbGQgPSBhc3QuY2hpbGRyZW5bMV07XG4gICAgICAgIHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoc3RhcnRDaGlsZCwgJ3NvdXJjZV9yZWZlcmVuY2UnKTtcbiAgICAgICAgaWYgKHR5cGVFcnIpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnI7XG4gICAgICAgIH1cbiAgICAgICAgdHlwZUVyciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShlbmRDaGlsZCwgJ3NvdXJjZV9yZWZlcmVuY2UnKTtcbiAgICAgICAgaWYgKHR5cGVFcnIpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnI7XG4gICAgICAgIH1cbiAgICAgICAgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKHN0YXJ0Q2hpbGQsIDEpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChlbmRDaGlsZCwgMSk7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgcmVmZXJlbmNlXzEuUmVmZXJlbmNlKHN0YXJ0Q2hpbGQuY2hpbGRyZW5bMF0sIHRhYmxlKTtcbiAgICAgICAgY29uc3QgZW5kID0gbmV3IHJlZmVyZW5jZV8xLlJlZmVyZW5jZShlbmRDaGlsZC5jaGlsZHJlblswXSwgdGFibGUpO1xuICAgICAgICBpZiAoKHN0YXJ0LnJvdyAmJiAhZW5kLnJvdykgfHwgKGVuZC5yb3cgJiYgIXN0YXJ0LnJvdykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmFuZ2UgbXVzdCB1c2UgcmVmZXJlbmNlcyBvZiB0aGUgc2FtZSBraW5kJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTXVzdCBwcm92aWRlIGF0IGxlYXN0IGEgcm93IG9yIGEgY29sdW1uLCBidXQgaWYgdGhlIGZpcnN0IHZhbHVlIGhhcyBhXG4gICAgICAgIC8vIGNvbHVtbiBidXQgdGhlIHNlY29uZCBkb2VzIG5vdCwgdGhlbiBjb3B5IHRoZSBmaXJzdCBjb2wgdG8gc2Vjb25kLlxuICAgICAgICBpZiAoIXN0YXJ0LnJvdyAmJiAhc3RhcnQuY29sdW1uKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhzdGFydCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JhbmdlIG11c3QgaGF2ZSBhIHJvdyBvciBhIGNvbHVtbiBkZWZpbmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0LnJvdykge1xuICAgICAgICAgICAgdGhpcy5zdGFydFJvdyA9IHN0YXJ0LnJvdztcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnQuY29sdW1uKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0Q29sdW1uID0gc3RhcnQuY29sdW1uO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmQucm93KSB7XG4gICAgICAgICAgICB0aGlzLmVuZFJvdyA9IGVuZC5yb3c7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZC5jb2x1bW4pIHtcbiAgICAgICAgICAgIHRoaXMuZW5kQ29sdW1uID0gZW5kLmNvbHVtbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW5kQ29sdW1uID0gc3RhcnQuY29sdW1uO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5SYW5nZSA9IFJhbmdlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlJhbmdlRGVzdGluYXRpb24gPSBleHBvcnRzLkNlbGxEZXN0aW5hdGlvbiA9IGV4cG9ydHMuQ29sdW1uRGVzdGluYXRpb24gPSBleHBvcnRzLlJvd0Rlc3RpbmF0aW9uID0gZXhwb3J0cy5uZXdEZXN0aW5hdGlvbiA9IHZvaWQgMDtcbmNvbnN0IG5ldmVydGhyb3dfMSA9IHJlcXVpcmUoXCIuLi9uZXZlcnRocm93L25ldmVydGhyb3dcIik7XG5jb25zdCBhc3RfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2FzdF91dGlsc1wiKTtcbmNvbnN0IGNvbHVtbl8xID0gcmVxdWlyZShcIi4vY29sdW1uXCIpO1xuY29uc3QgcmFuZ2VfMSA9IHJlcXVpcmUoXCIuL3JhbmdlXCIpO1xuY29uc3Qgcm93XzEgPSByZXF1aXJlKFwiLi9yb3dcIik7XG5jb25zdCBsb2Rhc2hfMSA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XG5jb25zdCBuZXdEZXN0aW5hdGlvbiA9IChhc3QsIHRhYmxlLCBmb3JtYXR0ZXIpID0+IHtcbiAgICBjb25zdCB0eXBlRXJyID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdCwgJ2Rlc3RpbmF0aW9uJyk7XG4gICAgaWYgKHR5cGVFcnIpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIodHlwZUVycik7XG4gICAgfVxuICAgIGNvbnN0IGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChhc3QsIDEpO1xuICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihsZW5ndGhFcnJvcik7XG4gICAgfVxuICAgIGNvbnN0IGNoaWxkID0gYXN0LmNoaWxkcmVuWzBdO1xuICAgIGlmIChjaGlsZC50eXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IFJhbmdlRGVzdGluYXRpb24oY2hpbGQsIHRhYmxlLCBmb3JtYXR0ZXIpKTtcbiAgICB9XG4gICAgLy8gbXVzdCBiZSBlaXRoZXIgYW4gYWJzb2x1dGVfcmVmZXJlbmNlXG4gICAgdHJ5IHtcbiAgICAgICAgc3dpdGNoIChjaGlsZC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBDZWxsRGVzdGluYXRpb24oY2hpbGQsIHRhYmxlLCBmb3JtYXR0ZXIpKTtcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBjb25zdCBpbm5lckNoaWxkID0gY2hpbGQuY2hpbGRyZW5bMF07XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyQ2hpbGQudHlwZSA9PT0gJ2Fic29sdXRlX3JvdycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgUm93RGVzdGluYXRpb24oY2hpbGQsIHRhYmxlLCBmb3JtYXR0ZXIpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5uZXJDaGlsZC50eXBlID09PSAnYWJzb2x1dGVfY29sdW1uJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBDb2x1bW5EZXN0aW5hdGlvbihjaGlsZCwgdGFibGUsIGZvcm1hdHRlcikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIobmV3IEVycm9yKCdVbmV4cGVjdGVkIGRlc3RpbmF0aW9uIHR5cGUgJyArIGNoaWxkLnR5cGUpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yID09PSBhc3RfdXRpbHNfMS5lcnJJbmRleDApIHtcbiAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKG5ldyBFcnJvcignSW5kZXggMCBtYXkgbm90IGJlIHVzZWQgaW4gYSBkZXN0aW5hdGlvbicpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihlcnJvcik7XG4gICAgfVxufTtcbmV4cG9ydHMubmV3RGVzdGluYXRpb24gPSBuZXdEZXN0aW5hdGlvbjtcbmNsYXNzIFJvd0Rlc3RpbmF0aW9uIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlLCBmb3JtYXR0ZXIpIHtcbiAgICAgICAgdGhpcy5tZXJnZSA9IChzb3VyY2UsIHRhYmxlKSA9PiB7XG4gICAgICAgICAgICAvLyBmb3IgY2VsbCBpbiByb3cuLi5cbiAgICAgICAgICAgIGNvbnN0IGNlbGxzID0gbG9kYXNoXzEucmFuZ2UoMCwgdGFibGUuZ2V0V2lkdGgoKSkubWFwKChjb2x1bW5OdW0pID0+ICh7IHJvdzogdGhpcy5yb3cuaW5kZXgsIGNvbHVtbjogY29sdW1uTnVtIH0pKTtcbiAgICAgICAgICAgIHJldHVybiBtZXJnZUZvckNlbGxzKHNvdXJjZSwgdGFibGUsIGNlbGxzLCB0aGlzLmZvcm1hdHRlcik7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZm9ybWF0dGVyID0gZm9ybWF0dGVyO1xuICAgICAgICBjb25zdCB0eXBlRXJyID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdCwgJ2Fic29sdXRlX3JlZmVyZW5jZScpO1xuICAgICAgICBpZiAodHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAxKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGlsZCA9IGFzdC5jaGlsZHJlblswXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMucm93ID0gbmV3IHJvd18xLkFic29sdXRlUm93KGNoaWxkLCB0YWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBJbiBhIGNvbnN0cnVjdG9yLCBzbyB3ZSBtdXN0IHRocm93XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydHMuUm93RGVzdGluYXRpb24gPSBSb3dEZXN0aW5hdGlvbjtcbmNsYXNzIENvbHVtbkRlc3RpbmF0aW9uIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlLCBmb3JtYXR0ZXIpIHtcbiAgICAgICAgdGhpcy5tZXJnZSA9IChzb3VyY2UsIHRhYmxlKSA9PiB7XG4gICAgICAgICAgICAvLyBmb3IgY2VsbCBpbiBjb2x1bW4gKGV4Y2x1ZGluZyBoZWFkZXIpLi4uXG4gICAgICAgICAgICBjb25zdCBjZWxscyA9IGxvZGFzaF8xLnJhbmdlKDIsIHRhYmxlLmdldEhlaWdodCgpKS5tYXAoKHJvd051bSkgPT4gKHsgcm93OiByb3dOdW0sIGNvbHVtbjogdGhpcy5jb2x1bW4uaW5kZXggfSkpO1xuICAgICAgICAgICAgcmV0dXJuIG1lcmdlRm9yQ2VsbHMoc291cmNlLCB0YWJsZSwgY2VsbHMsIHRoaXMuZm9ybWF0dGVyKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7XG4gICAgICAgIGNvbnN0IHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAnYWJzb2x1dGVfcmVmZXJlbmNlJyk7XG4gICAgICAgIGlmICh0eXBlRXJyKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChhc3QsIDEpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoaWxkID0gYXN0LmNoaWxkcmVuWzBdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW4gPSBuZXcgY29sdW1uXzEuQWJzb2x1dGVDb2x1bW4oY2hpbGQsIHRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIEluIGEgY29uc3RydWN0b3IsIHNvIHdlIG11c3QgdGhyb3dcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5Db2x1bW5EZXN0aW5hdGlvbiA9IENvbHVtbkRlc3RpbmF0aW9uO1xuY2xhc3MgQ2VsbERlc3RpbmF0aW9uIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlLCBmb3JtYXR0ZXIpIHtcbiAgICAgICAgdGhpcy5tZXJnZSA9IChzb3VyY2UsIHRhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjZWxsID0geyByb3c6IHRoaXMucm93LmluZGV4LCBjb2x1bW46IHRoaXMuY29sdW1uLmluZGV4IH07XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VGb3JDZWxscyhzb3VyY2UsIHRhYmxlLCBbY2VsbF0sIHRoaXMuZm9ybWF0dGVyKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7XG4gICAgICAgIGNvbnN0IHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAnYWJzb2x1dGVfcmVmZXJlbmNlJyk7XG4gICAgICAgIGlmICh0eXBlRXJyKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyO1xuICAgICAgICB9XG4gICAgICAgIC8vIEEgY2VsbCBuZWVkcyB0byBoYXZlIHR3byBjaGlsZHJlbiwgYSByb3cgYW5kIGEgY29sdW1uXG4gICAgICAgIGNvbnN0IGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChhc3QsIDIpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvd0NoaWxkID0gYXN0LmNoaWxkcmVuWzBdO1xuICAgICAgICBjb25zdCBjb2xDaGlsZCA9IGFzdC5jaGlsZHJlblsxXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMucm93ID0gbmV3IHJvd18xLkFic29sdXRlUm93KHJvd0NoaWxkLCB0YWJsZSk7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbiA9IG5ldyBjb2x1bW5fMS5BYnNvbHV0ZUNvbHVtbihjb2xDaGlsZCwgdGFibGUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gSW4gYSBjb25zdHJ1Y3Rvciwgc28gd2UgbXVzdCB0aHJvd1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLkNlbGxEZXN0aW5hdGlvbiA9IENlbGxEZXN0aW5hdGlvbjtcbmNsYXNzIFJhbmdlRGVzdGluYXRpb24ge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUsIGZvcm1hdHRlcikge1xuICAgICAgICB0aGlzLm1lcmdlID0gKHNvdXJjZSwgdGFibGUpID0+IHRoaXMucmFuZ2VcbiAgICAgICAgICAgIC5hc0NlbGxzKClcbiAgICAgICAgICAgIC5hbmRUaGVuKChjZWxscykgPT4gbWVyZ2VGb3JDZWxscyhzb3VyY2UsIHRhYmxlLCBjZWxscywgdGhpcy5mb3JtYXR0ZXIpKTtcbiAgICAgICAgdGhpcy5mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7XG4gICAgICAgIGNvbnN0IHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAncmFuZ2UnKTtcbiAgICAgICAgaWYgKHR5cGVFcnIpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGFzdCwgMik7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgYXN0LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICBsZXQgY2hpbGRUeXBlRXJyID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGNoaWxkLCAnc291cmNlX3JlZmVyZW5jZScpO1xuICAgICAgICAgICAgaWYgKGNoaWxkVHlwZUVycikge1xuICAgICAgICAgICAgICAgIHRocm93IGNoaWxkVHlwZUVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGNoaWxkTGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGNoaWxkLCAxKTtcbiAgICAgICAgICAgIGlmIChjaGlsZExlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgY2hpbGRMZW5ndGhFcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNoaWxkVHlwZUVyciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShjaGlsZC5jaGlsZHJlblswXSwgJ2Fic29sdXRlX3JlZmVyZW5jZScpO1xuICAgICAgICAgICAgaWYgKGNoaWxkVHlwZUVycikge1xuICAgICAgICAgICAgICAgIHRocm93IGNoaWxkVHlwZUVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmFuZ2UgPSBuZXcgcmFuZ2VfMS5SYW5nZShhc3QsIHRhYmxlKTtcbiAgICB9XG59XG5leHBvcnRzLlJhbmdlRGVzdGluYXRpb24gPSBSYW5nZURlc3RpbmF0aW9uO1xuY29uc3QgbWVyZ2VGb3JDZWxscyA9IChzb3VyY2UsIHRhYmxlLCBjZWxscywgZm9ybWF0dGVyKSA9PiBjZWxscy5yZWR1Y2UoKGN1cnJlbnRUYWJsZSwgY3VycmVudENlbGwpID0+IGN1cnJlbnRUYWJsZS5hbmRUaGVuKCh0KSA9PiBzb3VyY2VcbiAgICAuZ2V0VmFsdWUodCwgY3VycmVudENlbGwpXG4gICAgLmFuZFRoZW4oKHZhbCkgPT4gbmV2ZXJ0aHJvd18xLm9rKHZhbC50b1N0cmluZygpKSlcbiAgICAuYW5kVGhlbigodmFsKSA9PiBuZXZlcnRocm93XzEub2sodmFsLnRyaW0oKSA9PT0gJycgPyAnMCcgOiB2YWwpKVxuICAgIC5hbmRUaGVuKCh2YWwpID0+IG5ldmVydGhyb3dfMS5vayh0LnNldENlbGxBdChjdXJyZW50Q2VsbC5yb3csIGN1cnJlbnRDZWxsLmNvbHVtbiwgZm9ybWF0dGVyLmZvcm1hdCh2YWwpKSkpKSwgbmV2ZXJ0aHJvd18xLm9rKHRhYmxlKSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRGlzcGxheURpcmVjdGl2ZSA9IGV4cG9ydHMuRGVmYXVsdEZvcm1hdHRlciA9IHZvaWQgMDtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY2xhc3MgRGVmYXVsdEZvcm1hdHRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZm9ybWF0ID0gKG51bSkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBudW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudW0udG9TdHJpbmcoKTtcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnRzLkRlZmF1bHRGb3JtYXR0ZXIgPSBEZWZhdWx0Rm9ybWF0dGVyO1xuY2xhc3MgRGlzcGxheURpcmVjdGl2ZSB7XG4gICAgY29uc3RydWN0b3IoYXN0KSB7XG4gICAgICAgIHRoaXMuZm9ybWF0ID0gKG51bSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gdHlwZW9mIG51bSA9PT0gJ3N0cmluZycgPyBwYXJzZUZsb2F0KG51bSkgOiBudW07XG4gICAgICAgICAgICBpZiAodGhpcy5kaXNwbGF5QXNEYXRldGltZSkge1xuICAgICAgICAgICAgICAgIC8vIFNlcmlvdXNseSwgdGhlcmUncyBubyBkYXRlIGZvcm1hdHRpbmcgZnVuY3Rpb25hbGl0eSBpbiBKYXZhc2NyaXB0P1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShwYXJzZWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhZCA9ICh2KSA9PiBgMCR7dn1gLnNsaWNlKC0yKTtcbiAgICAgICAgICAgICAgICBjb25zdCB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vID0gcGFkKGRhdGUuZ2V0TW9udGgoKSArIDEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBwYWQoZGF0ZS5nZXREYXRlKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGggPSBwYWQoZGF0ZS5nZXRIb3VycygpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBwYWQoZGF0ZS5nZXRNaW51dGVzKCkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHt5fS0ke21vfS0ke2R9ICR7aH06JHttaW59YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJzZWQudG9GaXhlZCh0aGlzLmRlY2ltYWxMZW5ndGgpO1xuICAgICAgICB9O1xuICAgICAgICBsZXQgdHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdCwgJ2Rpc3BsYXlfZGlyZWN0aXZlJyk7XG4gICAgICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGFzdCwgMSk7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlzcGxheURpcmVjdGl2ZU9wdGlvbiA9IGFzdC5jaGlsZHJlblswXTtcbiAgICAgICAgdHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGRpc3BsYXlEaXJlY3RpdmVPcHRpb24sICdkaXNwbGF5X2RpcmVjdGl2ZV9vcHRpb24nKTtcbiAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChkaXNwbGF5RGlyZWN0aXZlT3B0aW9uLCAxKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtYXR0aW5nRGlyZWN0aXZlID0gZGlzcGxheURpcmVjdGl2ZU9wdGlvbi5jaGlsZHJlblswXTtcbiAgICAgICAgdHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGZvcm1hdHRpbmdEaXJlY3RpdmUsICdmb3JtYXR0aW5nX2RpcmVjdGl2ZScsICdkYXRldGltZV9kaXJlY3RpdmUnKTtcbiAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlzcGxheUFzRGF0ZXRpbWUgPSBmb3JtYXR0aW5nRGlyZWN0aXZlLnR5cGUgPT09ICdkYXRldGltZV9kaXJlY3RpdmUnO1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5QXNEYXRldGltZSkge1xuICAgICAgICAgICAgdGhpcy5kZWNpbWFsTGVuZ3RoID0gLTE7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGZvcm1hdHRpbmdEaXJlY3RpdmUsIDEpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1hdHRpbmdEaXJlY3RpdmVMZW5ndGggPSBmb3JtYXR0aW5nRGlyZWN0aXZlLmNoaWxkcmVuWzBdO1xuICAgICAgICB0eXBlRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoZm9ybWF0dGluZ0RpcmVjdGl2ZUxlbmd0aCwgJ2ludCcpO1xuICAgICAgICBpZiAodHlwZUVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZWNpbWFsTGVuZ3RoID0gcGFyc2VJbnQoZm9ybWF0dGluZ0RpcmVjdGl2ZUxlbmd0aC50ZXh0KTtcbiAgICB9XG59XG5leHBvcnRzLkRpc3BsYXlEaXJlY3RpdmUgPSBEaXNwbGF5RGlyZWN0aXZlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlNpbmdsZVBhcmFtRnVuY3Rpb25DYWxsID0gdm9pZCAwO1xuY29uc3QgbmV2ZXJ0aHJvd18xID0gcmVxdWlyZShcIi4uL25ldmVydGhyb3cvbmV2ZXJ0aHJvd1wiKTtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY29uc3QgY2FsY18xID0gcmVxdWlyZShcIi4vY2FsY1wiKTtcbmNvbnN0IHJlc3VsdHNfMSA9IHJlcXVpcmUoXCIuL3Jlc3VsdHNcIik7XG5jb25zdCBkZWNpbWFsX2pzXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImRlY2ltYWwuanNcIikpO1xuY2xhc3MgU2luZ2xlUGFyYW1GdW5jdGlvbkNhbGwge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgdGhpcy5nZXRWYWx1ZSA9ICh0YWJsZSwgY2VsbCkgPT4gdGhpcy5wYXJhbS5nZXRWYWx1ZSh0YWJsZSwgY2VsbCkuYW5kVGhlbigoc291cmNlRGF0YSkgPT4gXG4gICAgICAgIC8vIFRoZSBvcGVyYXRpb24gZnVuY3Rpb25zIGRvIG5vdCB0aHJvdyBlcnJvcnMgYmVjYXVzZSBkYXRhIGFyaXR5IGhhc1xuICAgICAgICAvLyBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkLlxuICAgICAgICBuZXZlcnRocm93XzEub2sodGhpcy5vcChzb3VyY2VEYXRhKSkpO1xuICAgICAgICBjb25zdCB0eXBlRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAnc2luZ2xlX3BhcmFtX2Z1bmN0aW9uX2NhbGwnKTtcbiAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChhc3QsIDIpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoaWxkVHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdC5jaGlsZHJlblswXSwgJ3NpbmdsZV9wYXJhbV9mdW5jdGlvbicpO1xuICAgICAgICBpZiAoY2hpbGRUeXBlRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGNoaWxkVHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IGFzdC5jaGlsZHJlblswXS50ZXh0O1xuICAgICAgICBzd2l0Y2ggKGZ1bmN0aW9uTmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnc3VtJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9wID0gc3VtO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWVhbic6XG4gICAgICAgICAgICAgICAgdGhpcy5vcCA9IG1lYW47XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdVbmtub3duIHNpbmdsZSBwYXJhbSBmdW5jdGlvbiBjYWxsOiAnICsgZnVuY3Rpb25OYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhcmFtID0gbmV3IGNhbGNfMS5Tb3VyY2UoYXN0LmNoaWxkcmVuWzFdLCB0YWJsZSk7XG4gICAgfVxufVxuZXhwb3J0cy5TaW5nbGVQYXJhbUZ1bmN0aW9uQ2FsbCA9IFNpbmdsZVBhcmFtRnVuY3Rpb25DYWxsO1xuLyoqXG4gKiBTdW0gYWxsIHRoZSBjZWxscyBpbiB0aGUgaW5wdXQgdmFsdWUsIHByb2R1Y2luZyBhIHNpbmdsZSBjZWxsIG91dHB1dC5cbiAqL1xuY29uc3Qgc3VtID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgdG90YWwgPSB2YWx1ZS52YWwucmVkdWNlKChydW5uaW5nVG90YWwsIGN1cnJlbnRSb3cpID0+IGN1cnJlbnRSb3cucmVkdWNlKChyb3dUb3RhbCwgY3VycmVudENlbGwpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudENlbGxWYWx1ZSA9IHJlc3VsdHNfMS5GbG9hdE9yTWlsbGlzZWNvbmRzKGN1cnJlbnRDZWxsKTtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRDZWxsVmFsdWUuYWRkKHJvd1RvdGFsKTtcbiAgICB9LCBydW5uaW5nVG90YWwpLCBuZXcgZGVjaW1hbF9qc18xLmRlZmF1bHQoMCkpO1xuICAgIHJldHVybiBuZXcgcmVzdWx0c18xLlZhbHVlKFtbdG90YWwudG9TdHJpbmcoKV1dKTtcbn07XG4vKipcbiAqIE1lYW4gb2YgYWxsIHRoZSBjZWxscyBpbiB0aGUgaW5wdXQgdmFsdWUsIHByb2R1Y2luZyBhIHNpbmdsZSBjZWxsIG91dHB1dC5cbiAqL1xuY29uc3QgbWVhbiA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IHsgdG90YWwsIGNvdW50IH0gPSB2YWx1ZS52YWwucmVkdWNlKCh7IHRvdGFsOiBydW5uaW5nVG90YWwxLCBjb3VudDogY3VycmVudENvdW50MSB9LCBjdXJyZW50Um93KSA9PiBjdXJyZW50Um93LnJlZHVjZSgoeyB0b3RhbDogcnVubmluZ1RvdGFsMiwgY291bnQ6IGN1cnJlbnRDb3VudDIgfSwgY3VycmVudENlbGwpID0+ICh7XG4gICAgICAgIHRvdGFsOiBydW5uaW5nVG90YWwyICsgK2N1cnJlbnRDZWxsLFxuICAgICAgICBjb3VudDogY3VycmVudENvdW50MiArIDEsXG4gICAgfSksIHsgdG90YWw6IHJ1bm5pbmdUb3RhbDEsIGNvdW50OiBjdXJyZW50Q291bnQxIH0pLCB7IHRvdGFsOiAwLCBjb3VudDogMCB9KTtcbiAgICByZXR1cm4gbmV3IHJlc3VsdHNfMS5WYWx1ZShbWyh0b3RhbCAvIGNvdW50KS50b1N0cmluZygpXV0pO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Ub2tlbkVycm9yID0gdm9pZCAwO1xuY2xhc3MgVG9rZW5FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlLCB0b2tlbikge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgICAgICBpZiAodG9rZW4gJiYgdG9rZW4uZXJyb3JzKVxuICAgICAgICAgICAgdG9rZW4uZXJyb3JzLnB1c2godGhpcyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IHRoaXM7XG4gICAgfVxuICAgIGluc3BlY3QoKSB7XG4gICAgICAgIHJldHVybiAnU3ludGF4RXJyb3I6ICcgKyB0aGlzLm1lc3NhZ2U7XG4gICAgfVxufVxuZXhwb3J0cy5Ub2tlbkVycm9yID0gVG9rZW5FcnJvcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRva2VuRXJyb3IuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBodHRwczovL3d3dy5pY3MudWNpLmVkdS9+cGF0dGlzL0lDUy0zMy9sZWN0dXJlcy9lYm5mLnBkZlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5QYXJzZXIgPSBleHBvcnRzLmZpbmRSdWxlQnlOYW1lID0gZXhwb3J0cy5wYXJzZVJ1bGVOYW1lID0gZXhwb3J0cy5lc2NhcGVSZWdFeHAgPSBleHBvcnRzLnJlYWRUb2tlbiA9IHZvaWQgMDtcbmNvbnN0IFVQUEVSX1NOQUtFX1JFID0gL15bQS1aMC05X10rJC87XG5jb25zdCBkZWNvcmF0aW9uUkUgPSAvKFxcP3xcXCt8XFwqKSQvO1xuY29uc3QgcHJlRGVjb3JhdGlvblJFID0gL14oQHwmfCEpLztcbmNvbnN0IFdTX1JVTEUgPSAnV1MnO1xuY29uc3QgVG9rZW5FcnJvcl8xID0gcmVxdWlyZShcIi4vVG9rZW5FcnJvclwiKTtcbmZ1bmN0aW9uIHJlYWRUb2tlbih0eHQsIGV4cHIpIHtcbiAgICBsZXQgcmVzdWx0ID0gZXhwci5leGVjKHR4dCk7XG4gICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuaW5kZXggPT0gMCkge1xuICAgICAgICBpZiAocmVzdWx0WzBdLmxlbmd0aCA9PSAwICYmIGV4cHIuc291cmNlLmxlbmd0aCA+IDApXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IG51bGwsXG4gICAgICAgICAgICB0ZXh0OiByZXN1bHRbMF0sXG4gICAgICAgICAgICByZXN0OiB0eHQuc3Vic3RyKHJlc3VsdFswXS5sZW5ndGgpLFxuICAgICAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgICAgICBlbmQ6IHJlc3VsdFswXS5sZW5ndGggLSAxLFxuICAgICAgICAgICAgZnVsbFRleHQ6IHJlc3VsdFswXSxcbiAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICBwYXJlbnQ6IG51bGxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5leHBvcnRzLnJlYWRUb2tlbiA9IHJlYWRUb2tlbjtcbmZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1tcXC1cXFtcXF1cXC9cXHtcXH1cXChcXClcXCpcXCtcXD9cXC5cXFxcXFxeXFwkXFx8XS9nLCAnXFxcXCQmJyk7XG59XG5leHBvcnRzLmVzY2FwZVJlZ0V4cCA9IGVzY2FwZVJlZ0V4cDtcbmZ1bmN0aW9uIGZpeFJlc3QodG9rZW4pIHtcbiAgICB0b2tlbi5yZXN0ID0gJyc7XG4gICAgdG9rZW4uY2hpbGRyZW4gJiYgdG9rZW4uY2hpbGRyZW4uZm9yRWFjaChjID0+IGZpeFJlc3QoYykpO1xufVxuZnVuY3Rpb24gZml4UG9zaXRpb25zKHRva2VuLCBzdGFydCkge1xuICAgIHRva2VuLnN0YXJ0ICs9IHN0YXJ0O1xuICAgIHRva2VuLmVuZCArPSBzdGFydDtcbiAgICB0b2tlbi5jaGlsZHJlbiAmJiB0b2tlbi5jaGlsZHJlbi5mb3JFYWNoKGMgPT4gZml4UG9zaXRpb25zKGMsIHRva2VuLnN0YXJ0KSk7XG59XG5mdW5jdGlvbiBhZ3JlZ2F0ZUVycm9ycyhlcnJvcnMsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLmVycm9ycyAmJiB0b2tlbi5lcnJvcnMubGVuZ3RoKVxuICAgICAgICB0b2tlbi5lcnJvcnMuZm9yRWFjaChlcnIgPT4gZXJyb3JzLnB1c2goZXJyKSk7XG4gICAgdG9rZW4uY2hpbGRyZW4gJiYgdG9rZW4uY2hpbGRyZW4uZm9yRWFjaCh0b2sgPT4gYWdyZWdhdGVFcnJvcnMoZXJyb3JzLCB0b2spKTtcbn1cbmZ1bmN0aW9uIHBhcnNlUnVsZU5hbWUobmFtZSkge1xuICAgIGxldCBwb3N0RGVjb3JhdGlvbiA9IGRlY29yYXRpb25SRS5leGVjKG5hbWUpO1xuICAgIGxldCBwcmVEZWNvcmF0aW9uID0gcHJlRGVjb3JhdGlvblJFLmV4ZWMobmFtZSk7XG4gICAgbGV0IHBvc3REZWNvcmF0aW9uVGV4dCA9IChwb3N0RGVjb3JhdGlvbiAmJiBwb3N0RGVjb3JhdGlvblswXSkgfHwgJyc7XG4gICAgbGV0IHByZURlY29yYXRpb25UZXh0ID0gKHByZURlY29yYXRpb24gJiYgcHJlRGVjb3JhdGlvblswXSkgfHwgJyc7XG4gICAgbGV0IG91dCA9IHtcbiAgICAgICAgcmF3OiBuYW1lLFxuICAgICAgICBuYW1lOiBuYW1lLnJlcGxhY2UoZGVjb3JhdGlvblJFLCAnJykucmVwbGFjZShwcmVEZWNvcmF0aW9uUkUsICcnKSxcbiAgICAgICAgaXNPcHRpb25hbDogcG9zdERlY29yYXRpb25UZXh0ID09ICc/JyB8fCBwb3N0RGVjb3JhdGlvblRleHQgPT0gJyonLFxuICAgICAgICBhbGxvd1JlcGV0aXRpb246IHBvc3REZWNvcmF0aW9uVGV4dCA9PSAnKycgfHwgcG9zdERlY29yYXRpb25UZXh0ID09ICcqJyxcbiAgICAgICAgYXRMZWFzdE9uZTogcG9zdERlY29yYXRpb25UZXh0ID09ICcrJyxcbiAgICAgICAgbG9va3VwUG9zaXRpdmU6IHByZURlY29yYXRpb25UZXh0ID09ICcmJyxcbiAgICAgICAgbG9va3VwTmVnYXRpdmU6IHByZURlY29yYXRpb25UZXh0ID09ICchJyxcbiAgICAgICAgcGlubmVkOiBwcmVEZWNvcmF0aW9uVGV4dCA9PSAnQCcsXG4gICAgICAgIGxvb2t1cDogZmFsc2UsXG4gICAgICAgIGlzTGl0ZXJhbDogZmFsc2VcbiAgICB9O1xuICAgIG91dC5pc0xpdGVyYWwgPSBvdXQubmFtZVswXSA9PSBcIidcIiB8fCBvdXQubmFtZVswXSA9PSAnXCInO1xuICAgIG91dC5sb29rdXAgPSBvdXQubG9va3VwTmVnYXRpdmUgfHwgb3V0Lmxvb2t1cFBvc2l0aXZlO1xuICAgIHJldHVybiBvdXQ7XG59XG5leHBvcnRzLnBhcnNlUnVsZU5hbWUgPSBwYXJzZVJ1bGVOYW1lO1xuZnVuY3Rpb24gZmluZFJ1bGVCeU5hbWUobmFtZSwgcGFyc2VyKSB7XG4gICAgbGV0IHBhcnNlZCA9IHBhcnNlUnVsZU5hbWUobmFtZSk7XG4gICAgcmV0dXJuIHBhcnNlci5jYWNoZWRSdWxlc1twYXJzZWQubmFtZV0gfHwgbnVsbDtcbn1cbmV4cG9ydHMuZmluZFJ1bGVCeU5hbWUgPSBmaW5kUnVsZUJ5TmFtZTtcbi8vLyBSZW1vdmVzIGFsbCB0aGUgbm9kZXMgc3RhcnRpbmcgd2l0aCAnUlVMRV8nXG5mdW5jdGlvbiBzdHJpcFJ1bGVzKHRva2VuLCByZSkge1xuICAgIGlmICh0b2tlbi5jaGlsZHJlbikge1xuICAgICAgICBsZXQgbG9jYWxSdWxlcyA9IHRva2VuLmNoaWxkcmVuLmZpbHRlcih4ID0+IHgudHlwZSAmJiByZS50ZXN0KHgudHlwZSkpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvY2FsUnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBpbmRleE9uQ2hpbGRyZW4gPSB0b2tlbi5jaGlsZHJlbi5pbmRleE9mKGxvY2FsUnVsZXNbaV0pO1xuICAgICAgICAgICAgaWYgKGluZGV4T25DaGlsZHJlbiAhPSAtMSkge1xuICAgICAgICAgICAgICAgIHRva2VuLmNoaWxkcmVuLnNwbGljZShpbmRleE9uQ2hpbGRyZW4sIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRva2VuLmNoaWxkcmVuLmZvckVhY2goYyA9PiBzdHJpcFJ1bGVzKGMsIHJlKSk7XG4gICAgfVxufVxuY29uc3QgaWdub3JlTWlzc2luZ1J1bGVzID0gWydFT0YnXTtcbmNsYXNzIFBhcnNlciB7XG4gICAgY29uc3RydWN0b3IoZ3JhbW1hclJ1bGVzLCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuZ3JhbW1hclJ1bGVzID0gZ3JhbW1hclJ1bGVzO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLmNhY2hlZFJ1bGVzID0ge307XG4gICAgICAgIHRoaXMuZGVidWcgPSBvcHRpb25zID8gb3B0aW9ucy5kZWJ1ZyA9PT0gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICBsZXQgZXJyb3JzID0gW107XG4gICAgICAgIGxldCBuZWVkZWRSdWxlcyA9IFtdO1xuICAgICAgICBncmFtbWFyUnVsZXMuZm9yRWFjaChydWxlID0+IHtcbiAgICAgICAgICAgIGxldCBwYXJzZWROYW1lID0gcGFyc2VSdWxlTmFtZShydWxlLm5hbWUpO1xuICAgICAgICAgICAgaWYgKHBhcnNlZE5hbWUubmFtZSBpbiB0aGlzLmNhY2hlZFJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goJ0R1cGxpY2F0ZWQgcnVsZSAnICsgcGFyc2VkTmFtZS5uYW1lKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlZFJ1bGVzW3BhcnNlZE5hbWUubmFtZV0gPSBydWxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFydWxlLmJuZiB8fCAhcnVsZS5ibmYubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yID0gJ01pc3NpbmcgcnVsZSBjb250ZW50LCBydWxlOiAnICsgcnVsZS5uYW1lO1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcnMuaW5kZXhPZihlcnJvcikgPT0gLTEpXG4gICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJ1bGUuYm5mLmZvckVhY2gob3B0aW9ucyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJzZWQgPSBwYXJzZVJ1bGVOYW1lKG9wdGlvbnNbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZC5uYW1lID09IHJ1bGUubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciA9ICdMZWZ0IHJlY3Vyc2lvbiBpcyBub3QgYWxsb3dlZCwgcnVsZTogJyArIHJ1bGUubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JzLmluZGV4T2YoZXJyb3IpID09IC0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuYW1lID0gcGFyc2VSdWxlTmFtZShvcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmFtZS5pc0xpdGVyYWwgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZGVkUnVsZXMuaW5kZXhPZihuYW1lLm5hbWUpID09IC0xICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZU1pc3NpbmdSdWxlcy5pbmRleE9mKG5hbWUubmFtZSkgPT0gLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRlZFJ1bGVzLnB1c2gobmFtZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoV1NfUlVMRSA9PSBydWxlLm5hbWUpXG4gICAgICAgICAgICAgICAgcnVsZS5pbXBsaWNpdFdzID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAocnVsZS5pbXBsaWNpdFdzKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5lZWRlZFJ1bGVzLmluZGV4T2YoV1NfUlVMRSkgPT0gLTEpXG4gICAgICAgICAgICAgICAgICAgIG5lZWRlZFJ1bGVzLnB1c2goV1NfUlVMRSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVsZS5yZWNvdmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5lZWRlZFJ1bGVzLmluZGV4T2YocnVsZS5yZWNvdmVyKSA9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgbmVlZGVkUnVsZXMucHVzaChydWxlLnJlY292ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbmVlZGVkUnVsZXMuZm9yRWFjaChydWxlTmFtZSA9PiB7XG4gICAgICAgICAgICBpZiAoIShydWxlTmFtZSBpbiB0aGlzLmNhY2hlZFJ1bGVzKSkge1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKCdNaXNzaW5nIHJ1bGUgJyArIHJ1bGVOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChlcnJvcnMubGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIGdldEFTVCh0eHQsIHRhcmdldCkge1xuICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgdGFyZ2V0ID0gdGhpcy5ncmFtbWFyUnVsZXMuZmlsdGVyKHggPT4gIXguZnJhZ21lbnQgJiYgeC5uYW1lLmluZGV4T2YoJyUnKSAhPSAwKVswXS5uYW1lO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLnBhcnNlKHR4dCwgdGFyZ2V0KTtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgYWdyZWdhdGVFcnJvcnMocmVzdWx0LmVycm9ycywgcmVzdWx0KTtcbiAgICAgICAgICAgIGZpeFBvc2l0aW9ucyhyZXN1bHQsIDApO1xuICAgICAgICAgICAgLy8gUkVNT1ZFIEFMTCBUSEUgVEFHUyBNQVRDSElORyAvXiUvXG4gICAgICAgICAgICBzdHJpcFJ1bGVzKHJlc3VsdCwgL14lLyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucyB8fCAhdGhpcy5vcHRpb25zLmtlZXBVcHBlclJ1bGVzKVxuICAgICAgICAgICAgICAgIHN0cmlwUnVsZXMocmVzdWx0LCBVUFBFUl9TTkFLRV9SRSk7XG4gICAgICAgICAgICBsZXQgcmVzdCA9IHJlc3VsdC5yZXN0O1xuICAgICAgICAgICAgaWYgKHJlc3QpIHtcbiAgICAgICAgICAgICAgICBuZXcgVG9rZW5FcnJvcl8xLlRva2VuRXJyb3IoJ1VuZXhwZWN0ZWQgZW5kIG9mIGlucHV0OiBcXG4nICsgcmVzdCwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpeFJlc3QocmVzdWx0KTtcbiAgICAgICAgICAgIHJlc3VsdC5yZXN0ID0gcmVzdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBlbWl0U291cmNlKCkge1xuICAgICAgICByZXR1cm4gJ0NBTk5PVCBFTUlUIFNPVVJDRSBGUk9NIEJBU0UgUGFyc2VyJztcbiAgICB9XG4gICAgcGFyc2UodHh0LCB0YXJnZXQsIHJlY3Vyc2lvbiA9IDApIHtcbiAgICAgICAgbGV0IG91dCA9IG51bGw7XG4gICAgICAgIGxldCB0eXBlID0gcGFyc2VSdWxlTmFtZSh0YXJnZXQpO1xuICAgICAgICBsZXQgZXhwcjtcbiAgICAgICAgbGV0IHByaW50YWJsZSA9IHRoaXMuZGVidWcgJiYgLyohaXNMaXRlcmFsICYqLyAhVVBQRVJfU05BS0VfUkUudGVzdCh0eXBlLm5hbWUpO1xuICAgICAgICBwcmludGFibGUgJiZcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKG5ldyBBcnJheShyZWN1cnNpb24pLmpvaW4oJ+KUgiAgJykgKyAnVHJ5aW5nIHRvIGdldCAnICsgdGFyZ2V0ICsgJyBmcm9tICcgKyBKU09OLnN0cmluZ2lmeSh0eHQuc3BsaXQoJ1xcbicpWzBdKSk7XG4gICAgICAgIGxldCByZWFsVHlwZSA9IHR5cGUubmFtZTtcbiAgICAgICAgbGV0IHRhcmdldExleCA9IGZpbmRSdWxlQnlOYW1lKHR5cGUubmFtZSwgdGhpcyk7XG4gICAgICAgIGlmICh0eXBlLm5hbWUgPT0gJ0VPRicpIHtcbiAgICAgICAgICAgIGlmICh0eHQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eHQubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnRU9GJyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIHJlc3Q6ICcnLFxuICAgICAgICAgICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgICAgICAgICAgZW5kOiAwLFxuICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCF0YXJnZXRMZXggJiYgdHlwZS5pc0xpdGVyYWwpIHtcbiAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWV2YWxcbiAgICAgICAgICAgICAgICBsZXQgc3JjID0gZXZhbCh0eXBlLm5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChzcmMgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnJSVFTVBUWSUlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdDogdHh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV4cHIgPSBuZXcgUmVnRXhwKGVzY2FwZVJlZ0V4cChzcmMpKTtcbiAgICAgICAgICAgICAgICByZWFsVHlwZSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4cHIpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSByZWFkVG9rZW4odHh0LCBleHByKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQudHlwZSA9IHJlYWxUeXBlO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHRhcmdldExleC5ibmY7XG4gICAgICAgICAgICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5mb3JFYWNoKHBoYXNlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvdXQpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIGxldCBwaW5uZWQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdG1wID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFRleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN0OiB0eHRcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldExleC5mcmFnbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5mcmFnbWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0bXBUeHQgPSB0eHQ7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhbGxPcHRpb25hbCA9IHBoYXNlcy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZm91bmRTb21ldGhpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwaGFzZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGhhc2VzW2ldID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvY2FsVGFyZ2V0ID0gcGFyc2VSdWxlTmFtZShwaGFzZXNbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbE9wdGlvbmFsID0gYWxsT3B0aW9uYWwgJiYgbG9jYWxUYXJnZXQuaXNPcHRpb25hbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ290O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZEF0TGVhc3RPbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRMZXguaW1wbGljaXRXcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290ID0gdGhpcy5wYXJzZSh0bXBUeHQsIGxvY2FsVGFyZ2V0Lm5hbWUsIHJlY3Vyc2lvbiArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgV1M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXUyA9IHRoaXMucGFyc2UodG1wVHh0LCBXU19SVUxFLCByZWN1cnNpb24gKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFdTKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAudGV4dCA9IHRtcC50ZXh0ICsgV1MudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5lbmQgPSB0bXAudGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXUy5wYXJlbnQgPSB0bXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAuY2hpbGRyZW4ucHVzaChXUyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBUeHQgPSB0bXBUeHQuc3Vic3RyKFdTLnRleHQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IFdTLnRleHQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChXUyAmJiBXUy50ZXh0Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290ID0gZ290IHx8IHRoaXMucGFyc2UodG1wVHh0LCBsb2NhbFRhcmdldC5uYW1lLCByZWN1cnNpb24gKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVsZSA6Oj0gXCJ0cnVlXCIgIVthLXpBLVpdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZ2F0aXZlIGxvb2t1cCwgaWYgaXQgZG9lcyBub3QgbWF0Y2gsIHdlIHNob3VsZCBjb250aW51ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxUYXJnZXQubG9va3VwTmVnYXRpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnb3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIGNhbmNlbCB0aGlzIHBhdGggKi87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxUYXJnZXQubG9va3VwUG9zaXRpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ290KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWdvdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsVGFyZ2V0LmlzT3B0aW9uYWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxUYXJnZXQuYXRMZWFzdE9uZSAmJiBmb3VuZEF0TGVhc3RPbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdvdCAmJiB0YXJnZXRMZXgucGlubmVkID09IGkgKyAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWQgPSBnb3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGFibGUgJiYgY29uc29sZS5sb2cobmV3IEFycmF5KHJlY3Vyc2lvbiArIDEpLmpvaW4oJ+KUgiAgJykgKyAn4pSU4pSAICcgKyBnb3QudHlwZSArICcgUElOTkVEJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnb3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QgPSB0aGlzLnBhcnNlUmVjb3ZlcnkodGFyZ2V0TGV4LCB0bXBUeHQsIHJlY3Vyc2lvbiArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWdvdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBpbm5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IHRtcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdTeW50YXhFcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHRtcFR4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IHRtcFR4dC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxUZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXBUeHQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcihgVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQuIEV4cGVjdGluZyAke2xvY2FsVGFyZ2V0Lm5hbWV9IEdvdDogJHt0bXBUeHR9YCwgZ290KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcihgVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQuIE1pc3NpbmcgJHtsb2NhbFRhcmdldC5uYW1lfWAsIGdvdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50YWJsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhuZXcgQXJyYXkocmVjdXJzaW9uICsgMSkuam9pbign4pSCICAnKSArICfilJTilIAgJyArIGdvdC50eXBlICsgJyAnICsgSlNPTi5zdHJpbmdpZnkoZ290LnRleHQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEF0TGVhc3RPbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFNvbWV0aGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnb3QudHlwZSA9PSAnJSVFTVBUWSUlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290LnN0YXJ0ICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QuZW5kICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsVGFyZ2V0Lmxvb2t1cFBvc2l0aXZlICYmIGdvdC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ290LmZyYWdtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290LmNoaWxkcmVuICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdC5jaGlsZHJlbi5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5zdGFydCArPSBwb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHguZW5kICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wYXJlbnQgPSB0bXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAuY2hpbGRyZW4ucHVzaCh4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QucGFyZW50ID0gdG1wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5jaGlsZHJlbi5wdXNoKGdvdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsVGFyZ2V0Lmxvb2t1cClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdC5sb29rdXAgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGFibGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5ldyBBcnJheShyZWN1cnNpb24gKyAxKS5qb2luKCfilIIgICcpICsgJ+KUlOKUgCAnICsgZ290LnR5cGUgKyAnICcgKyBKU09OLnN0cmluZ2lmeShnb3QudGV4dCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFYXQgaXQgZnJvbSB0aGUgaW5wdXQgc3RyZWFtLCBvbmx5IGlmIGl0IGlzIG5vdCBhIGxvb2t1cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsVGFyZ2V0Lmxvb2t1cCAmJiAhZ290Lmxvb2t1cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLnRleHQgPSB0bXAudGV4dCArIGdvdC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLmVuZCA9IHRtcC50ZXh0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcFR4dCA9IHRtcFR4dC5zdWJzdHIoZ290LnRleHQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IGdvdC50ZXh0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAucmVzdCA9IHRtcFR4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChnb3QgJiYgbG9jYWxUYXJnZXQuYWxsb3dSZXBldGl0aW9uICYmIHRtcFR4dC5sZW5ndGggJiYgIWdvdC5sb29rdXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSAvKiBJUyBBIFJFR0VYUCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdvdCA9IHJlYWRUb2tlbih0bXBUeHQsIHBoYXNlc1tpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGFibGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobmV3IEFycmF5KHJlY3Vyc2lvbiArIDEpLmpvaW4oJ+KUgiAgJykgKyAn4pSUPiAnICsgSlNPTi5zdHJpbmdpZnkoZ290LnRleHQpICsgcGhhc2VzW2ldLnNvdXJjZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRTb21ldGhpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdC5zdGFydCArPSBwb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QuZW5kICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC50ZXh0ID0gdG1wLnRleHQgKyBnb3QudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAuZW5kID0gdG1wLnRleHQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcFR4dCA9IHRtcFR4dC5zdWJzdHIoZ290LnRleHQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiArPSBnb3QudGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLnJlc3QgPSB0bXBUeHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kU29tZXRoaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSB0bXA7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmludGFibGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhuZXcgQXJyYXkocmVjdXJzaW9uKS5qb2luKCfilIIgICcpICsgJ+KUnDzilIDilLQ8IFBVU0hJTkcgJyArIG91dC50eXBlICsgJyAnICsgSlNPTi5zdHJpbmdpZnkob3V0LnRleHQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG91dCAmJiB0YXJnZXRMZXguc2ltcGxpZnlXaGVuT25lQ2hpbGRyZW4gJiYgb3V0LmNoaWxkcmVuLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgb3V0ID0gb3V0LmNoaWxkcmVuWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghb3V0KSB7XG4gICAgICAgICAgICBwcmludGFibGUgJiYgY29uc29sZS5sb2codGFyZ2V0ICsgJyBOT1QgUkVTT0xWRUQgRlJPTSAnICsgdHh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICBwYXJzZVJlY292ZXJ5KHJlY292ZXJhYmxlVG9rZW4sIHRtcFR4dCwgcmVjdXJzaW9uKSB7XG4gICAgICAgIGlmIChyZWNvdmVyYWJsZVRva2VuLnJlY292ZXIgJiYgdG1wVHh0Lmxlbmd0aCkge1xuICAgICAgICAgICAgbGV0IHByaW50YWJsZSA9IHRoaXMuZGVidWc7XG4gICAgICAgICAgICBwcmludGFibGUgJiZcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhuZXcgQXJyYXkocmVjdXJzaW9uICsgMSkuam9pbign4pSCICAnKSArXG4gICAgICAgICAgICAgICAgICAgICdUcnlpbmcgdG8gcmVjb3ZlciB1bnRpbCB0b2tlbiAnICtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3ZlcmFibGVUb2tlbi5yZWNvdmVyICtcbiAgICAgICAgICAgICAgICAgICAgJyBmcm9tICcgK1xuICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0bXBUeHQuc3BsaXQoJ1xcbicpWzBdICsgdG1wVHh0LnNwbGl0KCdcXG4nKVsxXSkpO1xuICAgICAgICAgICAgbGV0IHRtcCA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnU3ludGF4RXJyb3InLFxuICAgICAgICAgICAgICAgIHRleHQ6ICcnLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgICAgICBlbmQ6IDAsXG4gICAgICAgICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICBmdWxsVGV4dDogJycsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICAgICAgICAgIHJlc3Q6ICcnXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IGdvdDtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBnb3QgPSB0aGlzLnBhcnNlKHRtcFR4dCwgcmVjb3ZlcmFibGVUb2tlbi5yZWNvdmVyLCByZWN1cnNpb24gKyAxKTtcbiAgICAgICAgICAgICAgICBpZiAoZ290KSB7XG4gICAgICAgICAgICAgICAgICAgIG5ldyBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcignVW5leHBlY3RlZCBpbnB1dDogXCInICsgdG1wLnRleHQgKyBgXCIgRXhwZWN0aW5nOiAke3JlY292ZXJhYmxlVG9rZW4ubmFtZX1gLCB0bXApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRtcC50ZXh0ID0gdG1wLnRleHQgKyB0bXBUeHRbMF07XG4gICAgICAgICAgICAgICAgICAgIHRtcC5lbmQgPSB0bXAudGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHRtcFR4dCA9IHRtcFR4dC5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB3aGlsZSAoIWdvdCAmJiB0bXBUeHQubGVuZ3RoID4gMCk7XG4gICAgICAgICAgICBpZiAodG1wLnRleHQubGVuZ3RoID4gMCAmJiBnb3QpIHtcbiAgICAgICAgICAgICAgICBwcmludGFibGUgJiYgY29uc29sZS5sb2cobmV3IEFycmF5KHJlY3Vyc2lvbiArIDEpLmpvaW4oJ+KUgiAgJykgKyAnUmVjb3ZlcmVkIHRleHQ6ICcgKyBKU09OLnN0cmluZ2lmeSh0bXAudGV4dCkpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0bXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuZXhwb3J0cy5QYXJzZXIgPSBQYXJzZXI7XG5leHBvcnRzLmRlZmF1bHQgPSBQYXJzZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYXJzZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmZpbmRDaGlsZHJlbkJ5VHlwZSA9IHZvaWQgMDtcbi8qKlxuICogRmluZHMgYWxsIHRoZSBkaXJlY3QgY2hpbGRzIG9mIGEgc3BlY2lmeWVkIHR5cGVcbiAqL1xuZnVuY3Rpb24gZmluZENoaWxkcmVuQnlUeXBlKHRva2VuLCB0eXBlKSB7XG4gICAgcmV0dXJuIHRva2VuLmNoaWxkcmVuID8gdG9rZW4uY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09IHR5cGUpIDogW107XG59XG5leHBvcnRzLmZpbmRDaGlsZHJlbkJ5VHlwZSA9IGZpbmRDaGlsZHJlbkJ5VHlwZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNlbWFudGljSGVscGVycy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JhY2t1cyVFMiU4MCU5M05hdXJfRm9ybVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypcbnN5bnRheCA6Oj0gUlVMRV9FT0wqIHJ1bGUrXG5ydWxlIDo6PSBcIiBcIiogXCI8XCIgcnVsZS1uYW1lIFwiPlwiIFwiIFwiKiBcIjo6PVwiIGZpcnN0RXhwcmVzc2lvbiBvdGhlckV4cHJlc3Npb24qIFwiIFwiKiBSVUxFX0VPTCsgXCIgXCIqXG5maXJzdEV4cHJlc3Npb24gOjo9IFwiIFwiKiBsaXN0XG5vdGhlckV4cHJlc3Npb24gOjo9IFwiIFwiKiBcInxcIiBcIiBcIiogbGlzdFxuUlVMRV9FT0wgOjo9IFwiXFxyXCIgfCBcIlxcblwiXG5saXN0IDo6PSB0ZXJtIFwiIFwiKiBsaXN0IHwgdGVybVxudGVybSA6Oj0gbGl0ZXJhbCB8IFwiPFwiIHJ1bGUtbmFtZSBcIj5cIlxubGl0ZXJhbCA6Oj0gJ1wiJyBSVUxFX0NIQVJBQ1RFUjEqICdcIicgfCBcIidcIiBSVUxFX0NIQVJBQ1RFUjIqIFwiJ1wiXG5SVUxFX0NIQVJBQ1RFUiA6Oj0gXCIgXCIgfCBSVUxFX0xFVFRFUiB8IFJVTEVfRElHSVQgfCBSVUxFX1NZTUJPTFxuUlVMRV9MRVRURVIgOjo9IFwiQVwiIHwgXCJCXCIgfCBcIkNcIiB8IFwiRFwiIHwgXCJFXCIgfCBcIkZcIiB8IFwiR1wiIHwgXCJIXCIgfCBcIklcIiB8IFwiSlwiIHwgXCJLXCIgfCBcIkxcIiB8IFwiTVwiIHwgXCJOXCIgfCBcIk9cIiB8IFwiUFwiIHwgXCJRXCIgfCBcIlJcIiB8IFwiU1wiIHwgXCJUXCIgfCBcIlVcIiB8IFwiVlwiIHwgXCJXXCIgfCBcIlhcIiB8IFwiWVwiIHwgXCJaXCIgfCBcImFcIiB8IFwiYlwiIHwgXCJjXCIgfCBcImRcIiB8IFwiZVwiIHwgXCJmXCIgfCBcImdcIiB8IFwiaFwiIHwgXCJpXCIgfCBcImpcIiB8IFwia1wiIHwgXCJsXCIgfCBcIm1cIiB8IFwiblwiIHwgXCJvXCIgfCBcInBcIiB8IFwicVwiIHwgXCJyXCIgfCBcInNcIiB8IFwidFwiIHwgXCJ1XCIgfCBcInZcIiB8IFwid1wiIHwgXCJ4XCIgfCBcInlcIiB8IFwielwiXG5SVUxFX0RJR0lUIDo6PSBcIjBcIiB8IFwiMVwiIHwgXCIyXCIgfCBcIjNcIiB8IFwiNFwiIHwgXCI1XCIgfCBcIjZcIiB8IFwiN1wiIHwgXCI4XCIgfCBcIjlcIlxuUlVMRV9TWU1CT0wgOjo9IFwiLVwiIHwgXCJfXCIgfCBcIiFcIiB8IFwiI1wiIHwgXCIkXCIgfCBcIiVcIiB8IFwiJlwiIHwgXCIoXCIgfCBcIilcIiB8IFwiKlwiIHwgXCIrXCIgfCBcIixcIiB8IFwiLVwiIHwgXCIuXCIgfCBcIi9cIiB8IFwiOlwiIHwgXCI7XCIgfCBcIjxcIiB8IFwiPVwiIHwgXCI+XCIgfCBcIj9cIiB8IFwiQFwiIHwgXCJbXCIgfCBcIlxcXCIgfCBcIl1cIiB8IFwiXlwiIHwgXCJfXCIgfCBcImBcIiB8IFwie1wiIHwgXCJ8XCIgfCBcIn1cIiB8IFwiflwiXG5SVUxFX0NIQVJBQ1RFUjEgOjo9IFJVTEVfQ0hBUkFDVEVSIHwgXCInXCJcblJVTEVfQ0hBUkFDVEVSMiA6Oj0gUlVMRV9DSEFSQUNURVIgfCAnXCInXG5ydWxlLW5hbWUgOjo9IFJVTEVfTEVUVEVSIFJVTEVfQ0hBUipcblJVTEVfQ0hBUiA6Oj0gUlVMRV9MRVRURVIgfCBSVUxFX0RJR0lUIHwgXCJfXCIgfCBcIi1cIlxuKi9cbmNvbnN0IFNlbWFudGljSGVscGVyc18xID0gcmVxdWlyZShcIi4uL1NlbWFudGljSGVscGVyc1wiKTtcbmNvbnN0IFBhcnNlcl8xID0gcmVxdWlyZShcIi4uL1BhcnNlclwiKTtcbnZhciBCTkY7XG4oZnVuY3Rpb24gKEJORikge1xuICAgIEJORi5SVUxFUyA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3N5bnRheCcsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfRU9MKicsICdydWxlKyddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAncnVsZScsXG4gICAgICAgICAgICBibmY6IFtcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICdcIiBcIionLFxuICAgICAgICAgICAgICAgICAgICAnXCI8XCInLFxuICAgICAgICAgICAgICAgICAgICAncnVsZS1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgJ1wiPlwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ1wiIFwiKicsXG4gICAgICAgICAgICAgICAgICAgICdcIjo6PVwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0RXhwcmVzc2lvbicsXG4gICAgICAgICAgICAgICAgICAgICdvdGhlckV4cHJlc3Npb24qJyxcbiAgICAgICAgICAgICAgICAgICAgJ1wiIFwiKicsXG4gICAgICAgICAgICAgICAgICAgICdSVUxFX0VPTCsnLFxuICAgICAgICAgICAgICAgICAgICAnXCIgXCIqJ1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2ZpcnN0RXhwcmVzc2lvbicsXG4gICAgICAgICAgICBibmY6IFtbJ1wiIFwiKicsICdsaXN0J11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdvdGhlckV4cHJlc3Npb24nLFxuICAgICAgICAgICAgYm5mOiBbWydcIiBcIionLCAnXCJ8XCInLCAnXCIgXCIqJywgJ2xpc3QnXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfRU9MJyxcbiAgICAgICAgICAgIGJuZjogW1snXCJcXFxcclwiJ10sIFsnXCJcXFxcblwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdsaXN0JyxcbiAgICAgICAgICAgIGJuZjogW1sndGVybScsICdcIiBcIionLCAnbGlzdCddLCBbJ3Rlcm0nXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3Rlcm0nLFxuICAgICAgICAgICAgYm5mOiBbWydsaXRlcmFsJ10sIFsnXCI8XCInLCAncnVsZS1uYW1lJywgJ1wiPlwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgICAgIGJuZjogW1tgJ1wiJ2AsICdSVUxFX0NIQVJBQ1RFUjEqJywgYCdcIidgXSwgW2BcIidcImAsICdSVUxFX0NIQVJBQ1RFUjIqJywgYFwiJ1wiYF1dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX0NIQVJBQ1RFUicsXG4gICAgICAgICAgICBibmY6IFtbJ1wiIFwiJ10sIFsnUlVMRV9MRVRURVInXSwgWydSVUxFX0RJR0lUJ10sIFsnUlVMRV9TWU1CT0wnXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfTEVUVEVSJyxcbiAgICAgICAgICAgIGJuZjogW1xuICAgICAgICAgICAgICAgIFsnXCJBXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiQlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIkNcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJEXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiRVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIkZcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJHXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiSFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIklcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJKXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiS1wiJ10sXG4gICAgICAgICAgICAgICAgWydcIkxcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJNXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiTlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIk9cIiddLFxuICAgICAgICAgICAgICAgIFsnXCJQXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiUVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIlJcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJTXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiVFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIlVcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJWXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiV1wiJ10sXG4gICAgICAgICAgICAgICAgWydcIlhcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJZXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiWlwiJ10sXG4gICAgICAgICAgICAgICAgWydcImFcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJiXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiY1wiJ10sXG4gICAgICAgICAgICAgICAgWydcImRcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJlXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiZlwiJ10sXG4gICAgICAgICAgICAgICAgWydcImdcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJoXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiaVwiJ10sXG4gICAgICAgICAgICAgICAgWydcImpcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJrXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wibFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIm1cIiddLFxuICAgICAgICAgICAgICAgIFsnXCJuXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wib1wiJ10sXG4gICAgICAgICAgICAgICAgWydcInBcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJxXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiclwiJ10sXG4gICAgICAgICAgICAgICAgWydcInNcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJ0XCInXSxcbiAgICAgICAgICAgICAgICBbJ1widVwiJ10sXG4gICAgICAgICAgICAgICAgWydcInZcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJ3XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wieFwiJ10sXG4gICAgICAgICAgICAgICAgWydcInlcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJ6XCInXVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9ESUdJVCcsXG4gICAgICAgICAgICBibmY6IFtbJ1wiMFwiJ10sIFsnXCIxXCInXSwgWydcIjJcIiddLCBbJ1wiM1wiJ10sIFsnXCI0XCInXSwgWydcIjVcIiddLCBbJ1wiNlwiJ10sIFsnXCI3XCInXSwgWydcIjhcIiddLCBbJ1wiOVwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX1NZTUJPTCcsXG4gICAgICAgICAgICBibmY6IFtcbiAgICAgICAgICAgICAgICBbJ1wiLVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIl9cIiddLFxuICAgICAgICAgICAgICAgIFsnXCIhXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiI1wiJ10sXG4gICAgICAgICAgICAgICAgWydcIiRcIiddLFxuICAgICAgICAgICAgICAgIFsnXCIlXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiJlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIihcIiddLFxuICAgICAgICAgICAgICAgIFsnXCIpXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiKlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIitcIiddLFxuICAgICAgICAgICAgICAgIFsnXCIsXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiLVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIi5cIiddLFxuICAgICAgICAgICAgICAgIFsnXCIvXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiOlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIjtcIiddLFxuICAgICAgICAgICAgICAgIFsnXCI8XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiPVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIj5cIiddLFxuICAgICAgICAgICAgICAgIFsnXCI/XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiQFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIltcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJcXFxcXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiXVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIl5cIiddLFxuICAgICAgICAgICAgICAgIFsnXCJfXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiYFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIntcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJ8XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wifVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIn5cIiddXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX0NIQVJBQ1RFUjEnLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX0NIQVJBQ1RFUiddLCBbYFwiJ1wiYF1dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX0NIQVJBQ1RFUjInLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX0NIQVJBQ1RFUiddLCBbYCdcIidgXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3J1bGUtbmFtZScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfTEVUVEVSJywgJ1JVTEVfQ0hBUionXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfQ0hBUicsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfTEVUVEVSJ10sIFsnUlVMRV9ESUdJVCddLCBbJ1wiX1wiJ10sIFsnXCItXCInXV1cbiAgICAgICAgfVxuICAgIF07XG4gICAgQk5GLmRlZmF1bHRQYXJzZXIgPSBuZXcgUGFyc2VyXzEuUGFyc2VyKEJORi5SVUxFUywgeyBkZWJ1ZzogZmFsc2UgfSk7XG4gICAgZnVuY3Rpb24gZ2V0QWxsVGVybXMoZXhwcikge1xuICAgICAgICBsZXQgdGVybXMgPSBTZW1hbnRpY0hlbHBlcnNfMS5maW5kQ2hpbGRyZW5CeVR5cGUoZXhwciwgJ3Rlcm0nKS5tYXAodGVybSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gU2VtYW50aWNIZWxwZXJzXzEuZmluZENoaWxkcmVuQnlUeXBlKHRlcm0sICdsaXRlcmFsJykuY29uY2F0KFNlbWFudGljSGVscGVyc18xLmZpbmRDaGlsZHJlbkJ5VHlwZSh0ZXJtLCAncnVsZS1uYW1lJykpWzBdLnRleHQ7XG4gICAgICAgIH0pO1xuICAgICAgICBTZW1hbnRpY0hlbHBlcnNfMS5maW5kQ2hpbGRyZW5CeVR5cGUoZXhwciwgJ2xpc3QnKS5mb3JFYWNoKGV4cHIgPT4ge1xuICAgICAgICAgICAgdGVybXMgPSB0ZXJtcy5jb25jYXQoZ2V0QWxsVGVybXMoZXhwcikpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRlcm1zO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRSdWxlcyhzb3VyY2UsIHBhcnNlciA9IEJORi5kZWZhdWx0UGFyc2VyKSB7XG4gICAgICAgIGxldCBhc3QgPSBwYXJzZXIuZ2V0QVNUKHNvdXJjZSk7XG4gICAgICAgIGlmICghYXN0KVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcGFyc2UgJyArIHNvdXJjZSk7XG4gICAgICAgIGlmIChhc3QuZXJyb3JzICYmIGFzdC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBhc3QuZXJyb3JzWzBdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBydWxlcyA9IFNlbWFudGljSGVscGVyc18xLmZpbmRDaGlsZHJlbkJ5VHlwZShhc3QsICdydWxlJyk7XG4gICAgICAgIGxldCByZXQgPSBydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICAgICAgICAgIGxldCBuYW1lID0gU2VtYW50aWNIZWxwZXJzXzEuZmluZENoaWxkcmVuQnlUeXBlKHJ1bGUsICdydWxlLW5hbWUnKVswXS50ZXh0O1xuICAgICAgICAgICAgbGV0IGV4cHJlc3Npb25zID0gU2VtYW50aWNIZWxwZXJzXzEuZmluZENoaWxkcmVuQnlUeXBlKHJ1bGUsICdmaXJzdEV4cHJlc3Npb24nKS5jb25jYXQoU2VtYW50aWNIZWxwZXJzXzEuZmluZENoaWxkcmVuQnlUeXBlKHJ1bGUsICdvdGhlckV4cHJlc3Npb24nKSk7XG4gICAgICAgICAgICBsZXQgYm5mID0gW107XG4gICAgICAgICAgICBleHByZXNzaW9ucy5mb3JFYWNoKGV4cHIgPT4ge1xuICAgICAgICAgICAgICAgIGJuZi5wdXNoKGdldEFsbFRlcm1zKGV4cHIpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgIGJuZlxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcmV0LnNvbWUoeCA9PiB4Lm5hbWUgPT0gJ0VPTCcpKSB7XG4gICAgICAgICAgICByZXQucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0VPTCcsXG4gICAgICAgICAgICAgICAgYm5mOiBbWydcIlxcXFxyXFxcXG5cIicsICdcIlxcXFxyXCInLCAnXCJcXFxcblwiJ11dXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgICBCTkYuZ2V0UnVsZXMgPSBnZXRSdWxlcztcbiAgICBmdW5jdGlvbiBUcmFuc2Zvcm0oc291cmNlLCBzdWJQYXJzZXIgPSBCTkYuZGVmYXVsdFBhcnNlcikge1xuICAgICAgICByZXR1cm4gZ2V0UnVsZXMoc291cmNlLmpvaW4oJycpLCBzdWJQYXJzZXIpO1xuICAgIH1cbiAgICBCTkYuVHJhbnNmb3JtID0gVHJhbnNmb3JtO1xuICAgIGNsYXNzIFBhcnNlciBleHRlbmRzIFBhcnNlcl8xLlBhcnNlciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHNvdXJjZSwgb3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3Qgc3ViUGFyc2VyID0gb3B0aW9ucyAmJiBvcHRpb25zLmRlYnVnUnVsZXNQYXJzZXIgPT09IHRydWUgPyBuZXcgUGFyc2VyXzEuUGFyc2VyKEJORi5SVUxFUywgeyBkZWJ1ZzogdHJ1ZSB9KSA6IEJORi5kZWZhdWx0UGFyc2VyO1xuICAgICAgICAgICAgc3VwZXIoZ2V0UnVsZXMoc291cmNlLCBzdWJQYXJzZXIpLCBvcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgICAgICB9XG4gICAgICAgIGVtaXRTb3VyY2UoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQk5GLlBhcnNlciA9IFBhcnNlcjtcbn0pKEJORiB8fCAoQk5GID0ge30pKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEJORjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJORi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sLyNOVC1OYW1lXG4vLyBodHRwOi8vd3d3LmJvdHRsZWNhcHMuZGUvcnIvdWlcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIEdyYW1tYXJcdDo6PVx0UHJvZHVjdGlvbipcbi8vIFByb2R1Y3Rpb25cdDo6PVx0TkNOYW1lICc6Oj0nIENob2ljZVxuLy8gTkNOYW1lXHQ6Oj1cdFtodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtbmFtZXMvI05ULU5DTmFtZV1cbi8vIENob2ljZVx0Ojo9XHRTZXF1ZW5jZU9yRGlmZmVyZW5jZSAoICd8JyBTZXF1ZW5jZU9yRGlmZmVyZW5jZSApKlxuLy8gU2VxdWVuY2VPckRpZmZlcmVuY2VcdDo6PVx0KEl0ZW0gKCAnLScgSXRlbSB8IEl0ZW0qICkpP1xuLy8gSXRlbVx0Ojo9XHRQcmltYXJ5ICggJz8nIHwgJyonIHwgJysnICk/XG4vLyBQcmltYXJ5XHQ6Oj1cdE5DTmFtZSB8IFN0cmluZ0xpdGVyYWwgfCBDaGFyQ29kZSB8IENoYXJDbGFzcyB8ICcoJyBDaG9pY2UgJyknXG4vLyBTdHJpbmdMaXRlcmFsXHQ6Oj1cdCdcIicgW15cIl0qICdcIicgfCBcIidcIiBbXiddKiBcIidcIlxuLy8gQ2hhckNvZGVcdDo6PVx0JyN4JyBbMC05YS1mQS1GXStcbi8vIENoYXJDbGFzc1x0Ojo9XHQnWycgJ14nPyAoIFJVTEVfQ2hhciB8IENoYXJDb2RlIHwgQ2hhclJhbmdlIHwgQ2hhckNvZGVSYW5nZSApKyAnXSdcbi8vIFJVTEVfQ2hhclx0Ojo9XHRbaHR0cDovL3d3dy53My5vcmcvVFIveG1sI05ULVJVTEVfQ2hhcl1cbi8vIENoYXJSYW5nZVx0Ojo9XHRSVUxFX0NoYXIgJy0nICggUlVMRV9DaGFyIC0gJ10nIClcbi8vIENoYXJDb2RlUmFuZ2VcdDo6PVx0Q2hhckNvZGUgJy0nIENoYXJDb2RlXG4vLyBSVUxFX1dISVRFU1BBQ0VcdDo6PVx0UlVMRV9TIHwgQ29tbWVudFxuLy8gUlVMRV9TXHQ6Oj1cdCN4OSB8ICN4QSB8ICN4RCB8ICN4MjBcbi8vIENvbW1lbnRcdDo6PVx0Jy8qJyAoIFteKl0gfCAnKicrIFteKi9dICkqICcqJyogJyovJ1xuY29uc3QgUGFyc2VyXzEgPSByZXF1aXJlKFwiLi4vUGFyc2VyXCIpO1xudmFyIEJORjtcbihmdW5jdGlvbiAoQk5GKSB7XG4gICAgQk5GLlJVTEVTID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnR3JhbW1hcicsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfUyonLCAnJUF0b21pYyonLCAnRU9GJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclQXRvbWljJyxcbiAgICAgICAgICAgIGJuZjogW1snUHJvZHVjdGlvbicsICdSVUxFX1MqJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1Byb2R1Y3Rpb24nLFxuICAgICAgICAgICAgYm5mOiBbWydOQ05hbWUnLCAnUlVMRV9TKicsICdcIjo6PVwiJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnQ2hvaWNlJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnUlVMRV9FT0wrJywgJ1JVTEVfUyonXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ05DTmFtZScsXG4gICAgICAgICAgICBibmY6IFtbL1thLXpBLVpdW2EtekEtWl8wLTldKi9dXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hvaWNlJyxcbiAgICAgICAgICAgIGJuZjogW1snU2VxdWVuY2VPckRpZmZlcmVuY2UnLCAnJV9DaG9pY2VfMSonXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJV9DaG9pY2VfMScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfV0hJVEVTUEFDRSonLCAnXCJ8XCInLCAnUlVMRV9XSElURVNQQUNFKicsICdTZXF1ZW5jZU9yRGlmZmVyZW5jZSddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdTZXF1ZW5jZU9yRGlmZmVyZW5jZScsXG4gICAgICAgICAgICBibmY6IFtbJ0l0ZW0nLCAnUlVMRV9XSElURVNQQUNFKicsICclX0l0ZW1fMT8nXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVfSXRlbV8xJyxcbiAgICAgICAgICAgIGJuZjogW1snTWludXMnLCAnSXRlbSddLCBbJ0l0ZW0qJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ01pbnVzJyxcbiAgICAgICAgICAgIGJuZjogW1snXCItXCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0l0ZW0nLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX1dISVRFU1BBQ0UqJywgJyVQcmltYXJ5JywgJ1ByaW1hcnlEZWNvcmF0aW9uPyddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdQcmltYXJ5RGVjb3JhdGlvbicsXG4gICAgICAgICAgICBibmY6IFtbJ1wiP1wiJ10sIFsnXCIqXCInXSwgWydcIitcIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnRGVjb3JhdGlvbk5hbWUnLFxuICAgICAgICAgICAgYm5mOiBbWydcImVibmY6Ly9cIicsIC9bXlxceDVEI10rL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclUHJpbWFyeScsXG4gICAgICAgICAgICBibmY6IFtbJ05DTmFtZSddLCBbJ1N0cmluZ0xpdGVyYWwnXSwgWydDaGFyQ29kZSddLCBbJ0NoYXJDbGFzcyddLCBbJ1N1Ykl0ZW0nXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnU3ViSXRlbScsXG4gICAgICAgICAgICBibmY6IFtbJ1wiKFwiJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnQ2hvaWNlJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnXCIpXCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1N0cmluZ0xpdGVyYWwnLFxuICAgICAgICAgICAgYm5mOiBbW2AnXCInYCwgL1teXCJdKi8sIGAnXCInYF0sIFtgXCInXCJgLCAvW14nXSovLCBgXCInXCJgXV0sXG4gICAgICAgICAgICBwaW5uZWQ6IDFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0NoYXJDb2RlJyxcbiAgICAgICAgICAgIGJuZjogW1snXCIjeFwiJywgL1swLTlhLXpBLVpdKy9dXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hhckNsYXNzJyxcbiAgICAgICAgICAgIGJuZjogW1tcIidbJ1wiLCBcIideJz9cIiwgJyVSVUxFX0NoYXJDbGFzc18xKycsICdcIl1cIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVJVTEVfQ2hhckNsYXNzXzEnLFxuICAgICAgICAgICAgYm5mOiBbWydDaGFyQ29kZVJhbmdlJ10sIFsnQ2hhclJhbmdlJ10sIFsnQ2hhckNvZGUnXSwgWydSVUxFX0NoYXInXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9DaGFyJyxcbiAgICAgICAgICAgIGJuZjogW1svXFx4MDkvXSwgWy9cXHgwQS9dLCBbL1xceDBEL10sIFsvW1xceDIwLVxceDVjXS9dLCBbL1tcXHg1ZS1cXHVEN0ZGXS9dLCBbL1tcXHVFMDAwLVxcdUZGRkRdL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGFyUmFuZ2UnLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX0NoYXInLCAnXCItXCInLCAnUlVMRV9DaGFyJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGFyQ29kZVJhbmdlJyxcbiAgICAgICAgICAgIGJuZjogW1snQ2hhckNvZGUnLCAnXCItXCInLCAnQ2hhckNvZGUnXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfV0hJVEVTUEFDRScsXG4gICAgICAgICAgICBibmY6IFtbJyVSVUxFX1dISVRFU1BBQ0VfQ0hBUionXSwgWydDb21tZW50JywgJ1JVTEVfV0hJVEVTUEFDRSonXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfUycsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfV0hJVEVTUEFDRScsICdSVUxFX1MqJ10sIFsnUlVMRV9FT0wnLCAnUlVMRV9TKiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVJVTEVfV0hJVEVTUEFDRV9DSEFSJyxcbiAgICAgICAgICAgIGJuZjogW1svXFx4MDkvXSwgWy9cXHgyMC9dXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDb21tZW50JyxcbiAgICAgICAgICAgIGJuZjogW1snXCIvKlwiJywgJyVSVUxFX0NvbW1lbnRfQm9keSonLCAnXCIqL1wiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclUlVMRV9Db21tZW50X0JvZHknLFxuICAgICAgICAgICAgYm5mOiBbWychXCIqL1wiJywgL1teKl0vXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9FT0wnLFxuICAgICAgICAgICAgYm5mOiBbWy9cXHgwRC8sIC9cXHgwQS9dLCBbL1xceDBBL10sIFsvXFx4MEQvXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0xpbmsnLFxuICAgICAgICAgICAgYm5mOiBbW1wiJ1snXCIsICdVcmwnLCBcIiddJ1wiXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1VybCcsXG4gICAgICAgICAgICBibmY6IFtbL1teXFx4NUQ6Lz8jXS8sICdcIjovL1wiJywgL1teXFx4NUQjXSsvLCAnJVVybDE/J11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclVXJsMScsXG4gICAgICAgICAgICBibmY6IFtbJ1wiI1wiJywgJ05DTmFtZSddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH1cbiAgICBdO1xuICAgIEJORi5kZWZhdWx0UGFyc2VyID0gbmV3IFBhcnNlcl8xLlBhcnNlcihCTkYuUlVMRVMsIHsgZGVidWc6IGZhbHNlIH0pO1xuICAgIGNvbnN0IHByZURlY29yYXRpb25SRSA9IC9eKCF8JikvO1xuICAgIGNvbnN0IGRlY29yYXRpb25SRSA9IC8oXFw/fFxcK3xcXCopJC87XG4gICAgY29uc3Qgc3ViRXhwcmVzc2lvblJFID0gL14lLztcbiAgICBmdW5jdGlvbiBnZXRCTkZSdWxlKG5hbWUsIHBhcnNlcikge1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmIChwcmVEZWNvcmF0aW9uUkUudGVzdChuYW1lKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICBsZXQgc3ViZXhwcmVzc2lvbiA9IHN1YkV4cHJlc3Npb25SRS50ZXN0KG5hbWUpO1xuICAgICAgICAgICAgaWYgKHN1YmV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgICAgICBsZXQgZGVjb3JhdGlvbiA9IGRlY29yYXRpb25SRS5leGVjKG5hbWUpO1xuICAgICAgICAgICAgICAgIGxldCBkZWNvcmF0aW9uVGV4dCA9IGRlY29yYXRpb24gPyBkZWNvcmF0aW9uWzBdICsgJyAnIDogJyc7XG4gICAgICAgICAgICAgICAgbGV0IGxvbmVseSA9IGlzTG9uZWx5UnVsZShuYW1lLCBwYXJzZXIpO1xuICAgICAgICAgICAgICAgIGlmIChsb25lbHkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRCTkZCb2R5KG5hbWUsIHBhcnNlcikgKyBkZWNvcmF0aW9uVGV4dDtcbiAgICAgICAgICAgICAgICByZXR1cm4gJygnICsgZ2V0Qk5GQm9keShuYW1lLCBwYXJzZXIpICsgJyknICsgZGVjb3JhdGlvblRleHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lLnNvdXJjZVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcKD86eHx1KShbYS16QS1aMC05XSspL2csICcjeCQxJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxcXCg/Onh8dSkoW2EtekEtWjAtOV0rKS1cXFxcKD86eHx1KShbYS16QS1aMC05XSspXFxdL2csICdbI3gkMS0jeCQyXScpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHJ1bGUgaXMgYSBzdHJpbmcgbGl0ZXJhbCBvciByZWd1bGFyIGV4cHJlc3Npb24gd2l0aG91dCBhIGRlc2NlbmRhbnQgdHJlZVxuICAgIGZ1bmN0aW9uIGlzTG9uZWx5UnVsZShuYW1lLCBwYXJzZXIpIHtcbiAgICAgICAgbGV0IHJ1bGUgPSBQYXJzZXJfMS5maW5kUnVsZUJ5TmFtZShuYW1lLCBwYXJzZXIpO1xuICAgICAgICByZXR1cm4gKHJ1bGUgJiZcbiAgICAgICAgICAgIHJ1bGUuYm5mLmxlbmd0aCA9PSAxICYmXG4gICAgICAgICAgICBydWxlLmJuZlswXS5sZW5ndGggPT0gMSAmJlxuICAgICAgICAgICAgKHJ1bGUuYm5mWzBdWzBdIGluc3RhbmNlb2YgUmVnRXhwIHx8IHJ1bGUuYm5mWzBdWzBdWzBdID09ICdcIicgfHwgcnVsZS5ibmZbMF1bMF1bMF0gPT0gXCInXCIpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Qk5GQ2hvaWNlKHJ1bGVzLCBwYXJzZXIpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGVzLm1hcCh4ID0+IGdldEJORlJ1bGUoeCwgcGFyc2VyKSkuam9pbignICcpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRCTkZCb2R5KG5hbWUsIHBhcnNlcikge1xuICAgICAgICBsZXQgcnVsZSA9IFBhcnNlcl8xLmZpbmRSdWxlQnlOYW1lKG5hbWUsIHBhcnNlcik7XG4gICAgICAgIGlmIChydWxlKVxuICAgICAgICAgICAgcmV0dXJuIHJ1bGUuYm5mLm1hcCh4ID0+IGdldEJORkNob2ljZSh4LCBwYXJzZXIpKS5qb2luKCcgfCAnKTtcbiAgICAgICAgcmV0dXJuICdSVUxFX05PVF9GT1VORCB7JyArIG5hbWUgKyAnfSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVtaXQocGFyc2VyKSB7XG4gICAgICAgIGxldCBhY3VtdWxhdG9yID0gW107XG4gICAgICAgIHBhcnNlci5ncmFtbWFyUnVsZXMuZm9yRWFjaChsID0+IHtcbiAgICAgICAgICAgIGlmICghL14lLy50ZXN0KGwubmFtZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVjb3ZlciA9IGwucmVjb3ZlciA/ICcgLyogeyByZWNvdmVyVW50aWw9JyArIGwucmVjb3ZlciArICcgfSAqLycgOiAnJztcbiAgICAgICAgICAgICAgICBhY3VtdWxhdG9yLnB1c2gobC5uYW1lICsgJyA6Oj0gJyArIGdldEJORkJvZHkobC5uYW1lLCBwYXJzZXIpICsgcmVjb3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYWN1bXVsYXRvci5qb2luKCdcXG4nKTtcbiAgICB9XG4gICAgQk5GLmVtaXQgPSBlbWl0O1xuICAgIGxldCBzdWJpdGVtcyA9IDA7XG4gICAgZnVuY3Rpb24gcmVzdGFyKHRvdGFsLCByZXN0YSkge1xuICAgICAgICBjb25zb2xlLmxvZygncmViZXJpYSByZXN0YXIgJyArIHJlc3RhICsgJyBhICcgKyB0b3RhbCk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGlmZmVyZW5jZSBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb252ZXJ0UmVnZXgodHh0KSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHR4dFxuICAgICAgICAgICAgLnJlcGxhY2UoLyN4KFthLXpBLVowLTldezR9KS9nLCAnXFxcXHUkMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvI3goW2EtekEtWjAtOV17M30pL2csICdcXFxcdTAkMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvI3goW2EtekEtWjAtOV17Mn0pL2csICdcXFxceCQxJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8jeChbYS16QS1aMC05XXsxfSkvZywgJ1xcXFx4MCQxJykpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRTdWJJdGVtcyh0bXBSdWxlcywgc2VxLCBwYXJlbnROYW1lKSB7XG4gICAgICAgIGxldCBhbnRlcmlvciA9IG51bGw7XG4gICAgICAgIGxldCBibmZTZXEgPSBbXTtcbiAgICAgICAgc2VxLmNoaWxkcmVuLmZvckVhY2goKHgsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICh4LnR5cGUgPT0gJ01pbnVzJykge1xuICAgICAgICAgICAgICAgIHJlc3RhcihhbnRlcmlvciwgeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkZWNvcmF0aW9uID0gc2VxLmNoaWxkcmVuW2kgKyAxXTtcbiAgICAgICAgICAgIGRlY29yYXRpb24gPSAoZGVjb3JhdGlvbiAmJiBkZWNvcmF0aW9uLnR5cGUgPT0gJ1ByaW1hcnlEZWNvcmF0aW9uJyAmJiBkZWNvcmF0aW9uLnRleHQpIHx8ICcnO1xuICAgICAgICAgICAgbGV0IHByZURlY29yYXRpb24gPSAnJztcbiAgICAgICAgICAgIHN3aXRjaCAoeC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnU3ViSXRlbSc6XG4gICAgICAgICAgICAgICAgICAgIGxldCBuYW1lID0gJyUnICsgKHBhcmVudE5hbWUgKyBzdWJpdGVtcysrKTtcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlUnVsZSh0bXBSdWxlcywgeCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKHByZURlY29yYXRpb24gKyBuYW1lICsgZGVjb3JhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ05DTmFtZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6XG4gICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKHByZURlY29yYXRpb24gKyB4LnRleHQgKyBkZWNvcmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQ2hhckNvZGUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0NoYXJDbGFzcyc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWNvcmF0aW9uIHx8IHByZURlY29yYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdSdWxlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICclJyArIChwYXJlbnROYW1lICsgc3ViaXRlbXMrKyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm5mOiBbW2NvbnZlcnRSZWdleCh4LnRleHQpXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0bXBSdWxlcy5wdXNoKG5ld1J1bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gocHJlRGVjb3JhdGlvbiArIG5ld1J1bGUubmFtZSArIGRlY29yYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2goY29udmVydFJlZ2V4KHgudGV4dCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1ByaW1hcnlEZWNvcmF0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCcgSE9XIFNIT1VMRCBJIFBBUlNFIFRISVM/ICcgKyB4LnR5cGUgKyAnIC0+ICcgKyBKU09OLnN0cmluZ2lmeSh4LnRleHQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFudGVyaW9yID0geDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBibmZTZXE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVJ1bGUodG1wUnVsZXMsIHRva2VuLCBuYW1lKSB7XG4gICAgICAgIGxldCBibmYgPSB0b2tlbi5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ1NlcXVlbmNlT3JEaWZmZXJlbmNlJykubWFwKHMgPT4gZ2V0U3ViSXRlbXModG1wUnVsZXMsIHMsIG5hbWUpKTtcbiAgICAgICAgbGV0IHJ1bGUgPSB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgYm5mXG4gICAgICAgIH07XG4gICAgICAgIGxldCByZWNvdmVyID0gbnVsbDtcbiAgICAgICAgYm5mLmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgICByZWNvdmVyID0gcmVjb3ZlciB8fCB4WydyZWNvdmVyJ107XG4gICAgICAgICAgICBkZWxldGUgeFsncmVjb3ZlciddO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG5hbWUuaW5kZXhPZignJScpID09IDApXG4gICAgICAgICAgICBydWxlLmZyYWdtZW50ID0gdHJ1ZTtcbiAgICAgICAgaWYgKHJlY292ZXIpXG4gICAgICAgICAgICBydWxlLnJlY292ZXIgPSByZWNvdmVyO1xuICAgICAgICB0bXBSdWxlcy5wdXNoKHJ1bGUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRSdWxlcyhzb3VyY2UsIHBhcnNlciA9IEJORi5kZWZhdWx0UGFyc2VyKSB7XG4gICAgICAgIGxldCBhc3QgPSBwYXJzZXIuZ2V0QVNUKHNvdXJjZSk7XG4gICAgICAgIGlmICghYXN0KVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcGFyc2UgJyArIHNvdXJjZSk7XG4gICAgICAgIGlmIChhc3QuZXJyb3JzICYmIGFzdC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBhc3QuZXJyb3JzWzBdO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0bXBSdWxlcyA9IFtdO1xuICAgICAgICBhc3QuY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdQcm9kdWN0aW9uJykubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IHguY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdOQ05hbWUnKVswXS50ZXh0O1xuICAgICAgICAgICAgY3JlYXRlUnVsZSh0bXBSdWxlcywgeCwgbmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdG1wUnVsZXM7XG4gICAgfVxuICAgIEJORi5nZXRSdWxlcyA9IGdldFJ1bGVzO1xuICAgIGZ1bmN0aW9uIFRyYW5zZm9ybShzb3VyY2UsIHN1YlBhcnNlciA9IEJORi5kZWZhdWx0UGFyc2VyKSB7XG4gICAgICAgIHJldHVybiBnZXRSdWxlcyhzb3VyY2Uuam9pbignJyksIHN1YlBhcnNlcik7XG4gICAgfVxuICAgIEJORi5UcmFuc2Zvcm0gPSBUcmFuc2Zvcm07XG4gICAgY2xhc3MgUGFyc2VyIGV4dGVuZHMgUGFyc2VyXzEuUGFyc2VyIHtcbiAgICAgICAgY29uc3RydWN0b3Ioc291cmNlLCBvcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBzdWJQYXJzZXIgPSBvcHRpb25zICYmIG9wdGlvbnMuZGVidWdSdWxlc1BhcnNlciA9PT0gdHJ1ZSA/IG5ldyBQYXJzZXJfMS5QYXJzZXIoQk5GLlJVTEVTLCB7IGRlYnVnOiB0cnVlIH0pIDogQk5GLmRlZmF1bHRQYXJzZXI7XG4gICAgICAgICAgICBzdXBlcihnZXRSdWxlcyhzb3VyY2UsIHN1YlBhcnNlciksIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGVtaXRTb3VyY2UoKSB7XG4gICAgICAgICAgICByZXR1cm4gZW1pdCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBCTkYuUGFyc2VyID0gUGFyc2VyO1xufSkoQk5GIHx8IChCTkYgPSB7fSkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQk5GO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VzNDRUJORi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sLyNOVC1OYW1lXG4vLyBodHRwOi8vd3d3LmJvdHRsZWNhcHMuZGUvcnIvdWlcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIEdyYW1tYXJcdDo6PVx0UHJvZHVjdGlvbipcbi8vIFByb2R1Y3Rpb25cdDo6PVx0TkNOYW1lICc6Oj0nIENob2ljZVxuLy8gTkNOYW1lXHQ6Oj1cdFtodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtbmFtZXMvI05ULU5DTmFtZV1cbi8vIENob2ljZVx0Ojo9XHRTZXF1ZW5jZU9yRGlmZmVyZW5jZSAoICd8JyBTZXF1ZW5jZU9yRGlmZmVyZW5jZSApKlxuLy8gU2VxdWVuY2VPckRpZmZlcmVuY2VcdDo6PVx0KEl0ZW0gKCAnLScgSXRlbSB8IEl0ZW0qICkpP1xuLy8gSXRlbVx0Ojo9XHRQcmltYXJ5ICggJz8nIHwgJyonIHwgJysnICk/XG4vLyBQcmltYXJ5XHQ6Oj1cdE5DTmFtZSB8IFN0cmluZ0xpdGVyYWwgfCBDaGFyQ29kZSB8IENoYXJDbGFzcyB8ICcoJyBDaG9pY2UgJyknXG4vLyBTdHJpbmdMaXRlcmFsXHQ6Oj1cdCdcIicgW15cIl0qICdcIicgfCBcIidcIiBbXiddKiBcIidcIlxuLy8gQ2hhckNvZGVcdDo6PVx0JyN4JyBbMC05YS1mQS1GXStcbi8vIENoYXJDbGFzc1x0Ojo9XHQnWycgJ14nPyAoIFJVTEVfQ2hhciB8IENoYXJDb2RlIHwgQ2hhclJhbmdlIHwgQ2hhckNvZGVSYW5nZSApKyAnXSdcbi8vIFJVTEVfQ2hhclx0Ojo9XHRbaHR0cDovL3d3dy53My5vcmcvVFIveG1sI05ULVJVTEVfQ2hhcl1cbi8vIENoYXJSYW5nZVx0Ojo9XHRSVUxFX0NoYXIgJy0nICggUlVMRV9DaGFyIC0gJ10nIClcbi8vIENoYXJDb2RlUmFuZ2VcdDo6PVx0Q2hhckNvZGUgJy0nIENoYXJDb2RlXG4vLyBSVUxFX1dISVRFU1BBQ0VcdDo6PVx0UlVMRV9TIHwgQ29tbWVudFxuLy8gUlVMRV9TXHQ6Oj1cdCN4OSB8ICN4QSB8ICN4RCB8ICN4MjBcbi8vIENvbW1lbnRcdDo6PVx0Jy8qJyAoIFteKl0gfCAnKicrIFteKi9dICkqICcqJyogJyovJ1xuY29uc3QgVG9rZW5FcnJvcl8xID0gcmVxdWlyZShcIi4uL1Rva2VuRXJyb3JcIik7XG5jb25zdCBQYXJzZXJfMSA9IHJlcXVpcmUoXCIuLi9QYXJzZXJcIik7XG52YXIgQk5GO1xuKGZ1bmN0aW9uIChCTkYpIHtcbiAgICBCTkYuUlVMRVMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdHcmFtbWFyJyxcbiAgICAgICAgICAgIGJuZjogW1snUlVMRV9TKicsICdBdHRyaWJ1dGVzPycsICdSVUxFX1MqJywgJyVBdG9taWMqJywgJ0VPRiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJUF0b21pYycsXG4gICAgICAgICAgICBibmY6IFtbJ1Byb2R1Y3Rpb24nLCAnUlVMRV9TKiddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdQcm9kdWN0aW9uJyxcbiAgICAgICAgICAgIGJuZjogW1xuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgJ05DTmFtZScsXG4gICAgICAgICAgICAgICAgICAgICdSVUxFX1MqJyxcbiAgICAgICAgICAgICAgICAgICAgJ1wiOjo9XCInLFxuICAgICAgICAgICAgICAgICAgICAnUlVMRV9XSElURVNQQUNFKicsXG4gICAgICAgICAgICAgICAgICAgICclQ2hvaWNlJyxcbiAgICAgICAgICAgICAgICAgICAgJ1JVTEVfV0hJVEVTUEFDRSonLFxuICAgICAgICAgICAgICAgICAgICAnQXR0cmlidXRlcz8nLFxuICAgICAgICAgICAgICAgICAgICAnUlVMRV9FT0wrJyxcbiAgICAgICAgICAgICAgICAgICAgJ1JVTEVfUyonXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnTkNOYW1lJyxcbiAgICAgICAgICAgIGJuZjogW1svW2EtekEtWl1bYS16QS1aXzAtOV0qL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdBdHRyaWJ1dGVzJyxcbiAgICAgICAgICAgIGJuZjogW1snXCJ7XCInLCAnQXR0cmlidXRlJywgJyVBdHRyaWJ1dGVzKicsICdSVUxFX1MqJywgJ1wifVwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclQXR0cmlidXRlcycsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfUyonLCAnXCIsXCInLCAnQXR0cmlidXRlJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0F0dHJpYnV0ZScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfUyonLCAnTkNOYW1lJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnXCI9XCInLCAnUlVMRV9XSElURVNQQUNFKicsICdBdHRyaWJ1dGVWYWx1ZSddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQXR0cmlidXRlVmFsdWUnLFxuICAgICAgICAgICAgYm5mOiBbWydOQ05hbWUnXSwgWy9bMS05XVswLTldKi9dXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJUNob2ljZScsXG4gICAgICAgICAgICBibmY6IFtbJ1NlcXVlbmNlT3JEaWZmZXJlbmNlJywgJyVfQ2hvaWNlXzEqJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVfQ2hvaWNlXzEnLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX1MqJywgJ1wifFwiJywgJ1JVTEVfUyonLCAnU2VxdWVuY2VPckRpZmZlcmVuY2UnXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnU2VxdWVuY2VPckRpZmZlcmVuY2UnLFxuICAgICAgICAgICAgYm5mOiBbWyclSXRlbScsICdSVUxFX1dISVRFU1BBQ0UqJywgJyVfSXRlbV8xPyddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJV9JdGVtXzEnLFxuICAgICAgICAgICAgYm5mOiBbWydNaW51cycsICclSXRlbSddLCBbJyVJdGVtKiddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdNaW51cycsXG4gICAgICAgICAgICBibmY6IFtbJ1wiLVwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclSXRlbScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfV0hJVEVTUEFDRSonLCAnUHJpbWFyeVByZURlY29yYXRpb24/JywgJyVQcmltYXJ5JywgJ1ByaW1hcnlEZWNvcmF0aW9uPyddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdQcmltYXJ5RGVjb3JhdGlvbicsXG4gICAgICAgICAgICBibmY6IFtbJ1wiP1wiJ10sIFsnXCIqXCInXSwgWydcIitcIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUHJpbWFyeVByZURlY29yYXRpb24nLFxuICAgICAgICAgICAgYm5mOiBbWydcIiZcIiddLCBbJ1wiIVwiJ10sIFsnXCJ+XCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVQcmltYXJ5JyxcbiAgICAgICAgICAgIGJuZjogW1snTkNOYW1lJ10sIFsnU3RyaW5nTGl0ZXJhbCddLCBbJ0NoYXJDb2RlJ10sIFsnQ2hhckNsYXNzJ10sIFsnU3ViSXRlbSddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdTdWJJdGVtJyxcbiAgICAgICAgICAgIGJuZjogW1snXCIoXCInLCAnUlVMRV9TKicsICclQ2hvaWNlJywgJ1JVTEVfUyonLCAnXCIpXCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1N0cmluZ0xpdGVyYWwnLFxuICAgICAgICAgICAgYm5mOiBbW2AnXCInYCwgL1teXCJdKi8sIGAnXCInYF0sIFtgXCInXCJgLCAvW14nXSovLCBgXCInXCJgXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0NoYXJDb2RlJyxcbiAgICAgICAgICAgIGJuZjogW1snXCIjeFwiJywgL1swLTlhLXpBLVpdKy9dXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hhckNsYXNzJyxcbiAgICAgICAgICAgIGJuZjogW1tcIidbJ1wiLCBcIideJz9cIiwgJyVSVUxFX0NoYXJDbGFzc18xKycsICdcIl1cIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVJVTEVfQ2hhckNsYXNzXzEnLFxuICAgICAgICAgICAgYm5mOiBbWydDaGFyQ29kZVJhbmdlJ10sIFsnQ2hhclJhbmdlJ10sIFsnQ2hhckNvZGUnXSwgWydSVUxFX0NoYXInXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9DaGFyJyxcbiAgICAgICAgICAgIGJuZjogW1svXFx4MDkvXSwgWy9cXHgwQS9dLCBbL1xceDBEL10sIFsvW1xceDIwLVxceDVjXS9dLCBbL1tcXHg1ZS1cXHVEN0ZGXS9dLCBbL1tcXHVFMDAwLVxcdUZGRkRdL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGFyUmFuZ2UnLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX0NoYXInLCAnXCItXCInLCAnUlVMRV9DaGFyJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGFyQ29kZVJhbmdlJyxcbiAgICAgICAgICAgIGJuZjogW1snQ2hhckNvZGUnLCAnXCItXCInLCAnQ2hhckNvZGUnXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfV0hJVEVTUEFDRScsXG4gICAgICAgICAgICBibmY6IFtbJyVSVUxFX1dISVRFU1BBQ0VfQ0hBUionXSwgWydDb21tZW50JywgJ1JVTEVfV0hJVEVTUEFDRSonXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfUycsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfV0hJVEVTUEFDRScsICdSVUxFX1MqJ10sIFsnUlVMRV9FT0wnLCAnUlVMRV9TKiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVJVTEVfV0hJVEVTUEFDRV9DSEFSJyxcbiAgICAgICAgICAgIGJuZjogW1svXFx4MDkvXSwgWy9cXHgyMC9dXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDb21tZW50JyxcbiAgICAgICAgICAgIGJuZjogW1snXCIvKlwiJywgJyVSVUxFX0NvbW1lbnRfQm9keSonLCAnXCIqL1wiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclUlVMRV9Db21tZW50X0JvZHknLFxuICAgICAgICAgICAgYm5mOiBbWy9bXipdL10sIFsnXCIqXCIrJywgL1teL10qL11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfRU9MJyxcbiAgICAgICAgICAgIGJuZjogW1svXFx4MEQvLCAvXFx4MEEvXSwgWy9cXHgwQS9dLCBbL1xceDBEL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdMaW5rJyxcbiAgICAgICAgICAgIGJuZjogW1tcIidbJ1wiLCAnVXJsJywgXCInXSdcIl1dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdVcmwnLFxuICAgICAgICAgICAgYm5mOiBbWy9bXlxceDVEOi8/I10vLCAnXCI6Ly9cIicsIC9bXlxceDVEI10rLywgJyVVcmwxPyddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVVybDEnLFxuICAgICAgICAgICAgYm5mOiBbWydcIiNcIicsICdOQ05hbWUnXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9XG4gICAgXTtcbiAgICBCTkYuZGVmYXVsdFBhcnNlciA9IG5ldyBQYXJzZXJfMS5QYXJzZXIoQk5GLlJVTEVTLCB7IGRlYnVnOiBmYWxzZSB9KTtcbiAgICBjb25zdCBwcmVEZWNvcmF0aW9uUkUgPSAvXighfCYpLztcbiAgICBjb25zdCBkZWNvcmF0aW9uUkUgPSAvKFxcP3xcXCt8XFwqKSQvO1xuICAgIGNvbnN0IHN1YkV4cHJlc3Npb25SRSA9IC9eJS87XG4gICAgZnVuY3Rpb24gZ2V0Qk5GUnVsZShuYW1lLCBwYXJzZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBuYW1lID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBsZXQgZGVjb3JhdGlvbiA9IGRlY29yYXRpb25SRS5leGVjKG5hbWUpO1xuICAgICAgICAgICAgbGV0IHByZURlY29yYXRpb24gPSBwcmVEZWNvcmF0aW9uUkUuZXhlYyhuYW1lKTtcbiAgICAgICAgICAgIGxldCBwcmVEZWNvcmF0aW9uVGV4dCA9IHByZURlY29yYXRpb24gPyBwcmVEZWNvcmF0aW9uWzBdIDogJyc7XG4gICAgICAgICAgICBsZXQgZGVjb3JhdGlvblRleHQgPSBkZWNvcmF0aW9uID8gZGVjb3JhdGlvblswXSArICcgJyA6ICcnO1xuICAgICAgICAgICAgbGV0IHN1YmV4cHJlc3Npb24gPSBzdWJFeHByZXNzaW9uUkUudGVzdChuYW1lKTtcbiAgICAgICAgICAgIGlmIChzdWJleHByZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxvbmVseSA9IGlzTG9uZWx5UnVsZShuYW1lLCBwYXJzZXIpO1xuICAgICAgICAgICAgICAgIGlmIChsb25lbHkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmVEZWNvcmF0aW9uVGV4dCArIGdldEJORkJvZHkobmFtZSwgcGFyc2VyKSArIGRlY29yYXRpb25UZXh0O1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmVEZWNvcmF0aW9uVGV4dCArICcoJyArIGdldEJORkJvZHkobmFtZSwgcGFyc2VyKSArICcpJyArIGRlY29yYXRpb25UZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5hbWUucmVwbGFjZShwcmVEZWNvcmF0aW9uUkUsIHByZURlY29yYXRpb25UZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lLnNvdXJjZVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcKD86eHx1KShbYS16QS1aMC05XSspL2csICcjeCQxJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxcXCg/Onh8dSkoW2EtekEtWjAtOV0rKS1cXFxcKD86eHx1KShbYS16QS1aMC05XSspXFxdL2csICdbI3gkMS0jeCQyXScpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHJ1bGUgaXMgYSBzdHJpbmcgbGl0ZXJhbCBvciByZWd1bGFyIGV4cHJlc3Npb24gd2l0aG91dCBhIGRlc2NlbmRhbnQgdHJlZVxuICAgIGZ1bmN0aW9uIGlzTG9uZWx5UnVsZShuYW1lLCBwYXJzZXIpIHtcbiAgICAgICAgbGV0IHJ1bGUgPSBQYXJzZXJfMS5maW5kUnVsZUJ5TmFtZShuYW1lLCBwYXJzZXIpO1xuICAgICAgICByZXR1cm4gKHJ1bGUgJiZcbiAgICAgICAgICAgIHJ1bGUuYm5mLmxlbmd0aCA9PSAxICYmXG4gICAgICAgICAgICBydWxlLmJuZlswXS5sZW5ndGggPT0gMSAmJlxuICAgICAgICAgICAgKHJ1bGUuYm5mWzBdWzBdIGluc3RhbmNlb2YgUmVnRXhwIHx8IHJ1bGUuYm5mWzBdWzBdWzBdID09ICdcIicgfHwgcnVsZS5ibmZbMF1bMF1bMF0gPT0gXCInXCIpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Qk5GQ2hvaWNlKHJ1bGVzLCBwYXJzZXIpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGVzLm1hcCh4ID0+IGdldEJORlJ1bGUoeCwgcGFyc2VyKSkuam9pbignICcpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRCTkZCb2R5KG5hbWUsIHBhcnNlcikge1xuICAgICAgICBsZXQgcnVsZSA9IFBhcnNlcl8xLmZpbmRSdWxlQnlOYW1lKG5hbWUsIHBhcnNlcik7XG4gICAgICAgIGlmIChydWxlKVxuICAgICAgICAgICAgcmV0dXJuIHJ1bGUuYm5mLm1hcCh4ID0+IGdldEJORkNob2ljZSh4LCBwYXJzZXIpKS5qb2luKCcgfCAnKTtcbiAgICAgICAgcmV0dXJuICdSVUxFX05PVF9GT1VORCB7JyArIG5hbWUgKyAnfSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVtaXQocGFyc2VyKSB7XG4gICAgICAgIGxldCBhY3VtdWxhdG9yID0gW107XG4gICAgICAgIHBhcnNlci5ncmFtbWFyUnVsZXMuZm9yRWFjaChsID0+IHtcbiAgICAgICAgICAgIGlmICghL14lLy50ZXN0KGwubmFtZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVjb3ZlciA9IGwucmVjb3ZlciA/ICcgeyByZWNvdmVyVW50aWw9JyArIGwucmVjb3ZlciArICcgfScgOiAnJztcbiAgICAgICAgICAgICAgICBhY3VtdWxhdG9yLnB1c2gobC5uYW1lICsgJyA6Oj0gJyArIGdldEJORkJvZHkobC5uYW1lLCBwYXJzZXIpICsgcmVjb3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYWN1bXVsYXRvci5qb2luKCdcXG4nKTtcbiAgICB9XG4gICAgQk5GLmVtaXQgPSBlbWl0O1xuICAgIGxldCBzdWJpdGVtcyA9IDA7XG4gICAgZnVuY3Rpb24gcmVzdGFyKHRvdGFsLCByZXN0YSkge1xuICAgICAgICBjb25zb2xlLmxvZygncmViZXJpYSByZXN0YXIgJyArIHJlc3RhICsgJyBhICcgKyB0b3RhbCk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGlmZmVyZW5jZSBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb252ZXJ0UmVnZXgodHh0KSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHR4dFxuICAgICAgICAgICAgLnJlcGxhY2UoLyN4KFthLXpBLVowLTldezR9KS9nLCAnXFxcXHUkMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvI3goW2EtekEtWjAtOV17M30pL2csICdcXFxcdTAkMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvI3goW2EtekEtWjAtOV17Mn0pL2csICdcXFxceCQxJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8jeChbYS16QS1aMC05XXsxfSkvZywgJ1xcXFx4MCQxJykpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRTdWJJdGVtcyh0bXBSdWxlcywgc2VxLCBwYXJlbnROYW1lLCBwYXJlbnRBdHRyaWJ1dGVzKSB7XG4gICAgICAgIGxldCBhbnRlcmlvciA9IG51bGw7XG4gICAgICAgIGxldCBibmZTZXEgPSBbXTtcbiAgICAgICAgc2VxLmNoaWxkcmVuLmZvckVhY2goKHgsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICh4LnR5cGUgPT0gJ01pbnVzJykge1xuICAgICAgICAgICAgICAgIHJlc3RhcihhbnRlcmlvciwgeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkZWNvcmF0aW9uID0gc2VxLmNoaWxkcmVuW2kgKyAxXTtcbiAgICAgICAgICAgIGRlY29yYXRpb24gPSAoZGVjb3JhdGlvbiAmJiBkZWNvcmF0aW9uLnR5cGUgPT0gJ1ByaW1hcnlEZWNvcmF0aW9uJyAmJiBkZWNvcmF0aW9uLnRleHQpIHx8ICcnO1xuICAgICAgICAgICAgbGV0IHByZURlY29yYXRpb24gPSAnJztcbiAgICAgICAgICAgIGlmIChhbnRlcmlvciAmJiBhbnRlcmlvci50eXBlID09ICdQcmltYXJ5UHJlRGVjb3JhdGlvbicpIHtcbiAgICAgICAgICAgICAgICBwcmVEZWNvcmF0aW9uID0gYW50ZXJpb3IudGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBwaW5uZWQgPSBwcmVEZWNvcmF0aW9uID09ICd+JyA/IDEgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAocGlubmVkKSB7XG4gICAgICAgICAgICAgICAgcHJlRGVjb3JhdGlvbiA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoICh4LnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdTdWJJdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSAnJScgKyAocGFyZW50TmFtZSArIHN1Yml0ZW1zKyspO1xuICAgICAgICAgICAgICAgICAgICBjcmVhdGVSdWxlKHRtcFJ1bGVzLCB4LCBuYW1lLCBwYXJlbnRBdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gocHJlRGVjb3JhdGlvbiArIG5hbWUgKyBkZWNvcmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTkNOYW1lJzpcbiAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gocHJlRGVjb3JhdGlvbiArIHgudGV4dCArIGRlY29yYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdTdHJpbmdMaXRlcmFsJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlY29yYXRpb24gfHwgcHJlRGVjb3JhdGlvbiB8fCAhL15bJ1wiLygpYS16QS1aMC05Jl8uOj0sKypcXC1cXF5cXFxcXSskLy50ZXN0KHgudGV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKHByZURlY29yYXRpb24gKyB4LnRleHQgKyBkZWNvcmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYyBvZiB4LnRleHQuc2xpY2UoMSwgLTEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudEF0dHJpYnV0ZXMgJiYgcGFyZW50QXR0cmlidXRlc1tcImlnbm9yZUNhc2VcIl0gPT0gXCJ0cnVlXCIgJiYgL1thLXpBLVpdLy50ZXN0KGMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKG5ldyBSZWdFeHAoXCJbXCIgKyBjLnRvVXBwZXJDYXNlKCkgKyBjLnRvTG93ZXJDYXNlKCkgKyBcIl1cIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gobmV3IFJlZ0V4cChQYXJzZXJfMS5lc2NhcGVSZWdFeHAoYykpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQ2hhckNvZGUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0NoYXJDbGFzcyc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWNvcmF0aW9uIHx8IHByZURlY29yYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdSdWxlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICclJyArIChwYXJlbnROYW1lICsgc3ViaXRlbXMrKyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm5mOiBbW2NvbnZlcnRSZWdleCh4LnRleHQpXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdG1wUnVsZXMucHVzaChuZXdSdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKHByZURlY29yYXRpb24gKyBuZXdSdWxlLm5hbWUgKyBkZWNvcmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKGNvbnZlcnRSZWdleCh4LnRleHQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdQcmltYXJ5UHJlRGVjb3JhdGlvbic6XG4gICAgICAgICAgICAgICAgY2FzZSAnUHJpbWFyeURlY29yYXRpb24nOlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJyBIT1cgU0hPVUxEIEkgUEFSU0UgVEhJUz8gJyArIHgudHlwZSArICcgLT4gJyArIEpTT04uc3RyaW5naWZ5KHgudGV4dCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYW50ZXJpb3IgPSB4O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGJuZlNlcTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlUnVsZSh0bXBSdWxlcywgdG9rZW4sIG5hbWUsIHBhcmVudEF0dHJpYnV0ZXMgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IGF0dHJOb2RlID0gdG9rZW4uY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdBdHRyaWJ1dGVzJylbMF07XG4gICAgICAgIGxldCBhdHRyaWJ1dGVzID0ge307XG4gICAgICAgIGlmIChhdHRyTm9kZSkge1xuICAgICAgICAgICAgYXR0ck5vZGUuY2hpbGRyZW4uZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IHguY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdOQ05hbWUnKVswXS50ZXh0O1xuICAgICAgICAgICAgICAgIGlmIChuYW1lIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRva2VuRXJyb3JfMS5Ub2tlbkVycm9yKCdEdXBsaWNhdGVkIGF0dHJpYnV0ZSAnICsgbmFtZSwgeCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW25hbWVdID0geC5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ0F0dHJpYnV0ZVZhbHVlJylbMF0udGV4dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYm5mID0gdG9rZW4uY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdTZXF1ZW5jZU9yRGlmZmVyZW5jZScpLm1hcChzID0+IGdldFN1Ykl0ZW1zKHRtcFJ1bGVzLCBzLCBuYW1lLCBwYXJlbnRBdHRyaWJ1dGVzID8gcGFyZW50QXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMpKTtcbiAgICAgICAgbGV0IHJ1bGUgPSB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgYm5mXG4gICAgICAgIH07XG4gICAgICAgIGlmIChuYW1lLmluZGV4T2YoJyUnKSA9PSAwKVxuICAgICAgICAgICAgcnVsZS5mcmFnbWVudCA9IHRydWU7XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzWydyZWNvdmVyVW50aWwnXSkge1xuICAgICAgICAgICAgcnVsZS5yZWNvdmVyID0gYXR0cmlidXRlc1sncmVjb3ZlclVudGlsJ107XG4gICAgICAgICAgICBpZiAocnVsZS5ibmYubGVuZ3RoID4gMSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVG9rZW5FcnJvcl8xLlRva2VuRXJyb3IoJ29ubHkgb25lLW9wdGlvbiBwcm9kdWN0aW9ucyBhcmUgc3VpdGFibGUgZm9yIGVycm9yIHJlY292ZXJpbmcnLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdwaW4nIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGxldCBudW0gPSBwYXJzZUludChhdHRyaWJ1dGVzWydwaW4nXSk7XG4gICAgICAgICAgICBpZiAoIWlzTmFOKG51bSkpIHtcbiAgICAgICAgICAgICAgICBydWxlLnBpbm5lZCA9IG51bTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLmJuZi5sZW5ndGggPiAxKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcignb25seSBvbmUtb3B0aW9uIHByb2R1Y3Rpb25zIGFyZSBzdWl0YWJsZSBmb3IgcGlubmluZycsIHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ3dzJyBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBydWxlLmltcGxpY2l0V3MgPSBhdHRyaWJ1dGVzWyd3cyddICE9ICdleHBsaWNpdCc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBydWxlLmltcGxpY2l0V3MgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJ1bGUuZnJhZ21lbnQgPSBydWxlLmZyYWdtZW50IHx8IGF0dHJpYnV0ZXNbJ2ZyYWdtZW50J10gPT0gJ3RydWUnO1xuICAgICAgICBydWxlLnNpbXBsaWZ5V2hlbk9uZUNoaWxkcmVuID0gYXR0cmlidXRlc1snc2ltcGxpZnlXaGVuT25lQ2hpbGRyZW4nXSA9PSAndHJ1ZSc7XG4gICAgICAgIHRtcFJ1bGVzLnB1c2gocnVsZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFJ1bGVzKHNvdXJjZSwgcGFyc2VyID0gQk5GLmRlZmF1bHRQYXJzZXIpIHtcbiAgICAgICAgbGV0IGFzdCA9IHBhcnNlci5nZXRBU1Qoc291cmNlKTtcbiAgICAgICAgaWYgKCFhc3QpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBwYXJzZSAnICsgc291cmNlKTtcbiAgICAgICAgaWYgKGFzdC5lcnJvcnMgJiYgYXN0LmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IGFzdC5lcnJvcnNbMF07XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGltcGxpY2l0V3MgPSBudWxsO1xuICAgICAgICBsZXQgYXR0ck5vZGUgPSBhc3QuY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdBdHRyaWJ1dGVzJylbMF07XG4gICAgICAgIGxldCBhdHRyaWJ1dGVzID0ge307XG4gICAgICAgIGlmIChhdHRyTm9kZSkge1xuICAgICAgICAgICAgYXR0ck5vZGUuY2hpbGRyZW4uZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IHguY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdOQ05hbWUnKVswXS50ZXh0O1xuICAgICAgICAgICAgICAgIGlmIChuYW1lIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRva2VuRXJyb3JfMS5Ub2tlbkVycm9yKCdEdXBsaWNhdGVkIGF0dHJpYnV0ZSAnICsgbmFtZSwgeCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW25hbWVdID0geC5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ0F0dHJpYnV0ZVZhbHVlJylbMF0udGV4dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpbXBsaWNpdFdzID0gYXR0cmlidXRlc1snd3MnXSA9PSAnaW1wbGljaXQnO1xuICAgICAgICBsZXQgdG1wUnVsZXMgPSBbXTtcbiAgICAgICAgYXN0LmNoaWxkcmVuLmZpbHRlcih4ID0+IHgudHlwZSA9PSAnUHJvZHVjdGlvbicpLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgbGV0IG5hbWUgPSB4LmNoaWxkcmVuLmZpbHRlcih4ID0+IHgudHlwZSA9PSAnTkNOYW1lJylbMF0udGV4dDtcbiAgICAgICAgICAgIGNyZWF0ZVJ1bGUodG1wUnVsZXMsIHgsIG5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdG1wUnVsZXMuZm9yRWFjaChydWxlID0+IHtcbiAgICAgICAgICAgIGlmIChydWxlLmltcGxpY2l0V3MgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgcnVsZS5pbXBsaWNpdFdzID0gaW1wbGljaXRXcztcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0bXBSdWxlcztcbiAgICB9XG4gICAgQk5GLmdldFJ1bGVzID0gZ2V0UnVsZXM7XG4gICAgZnVuY3Rpb24gVHJhbnNmb3JtKHNvdXJjZSwgc3ViUGFyc2VyID0gQk5GLmRlZmF1bHRQYXJzZXIpIHtcbiAgICAgICAgcmV0dXJuIGdldFJ1bGVzKHNvdXJjZS5qb2luKCcnKSwgc3ViUGFyc2VyKTtcbiAgICB9XG4gICAgQk5GLlRyYW5zZm9ybSA9IFRyYW5zZm9ybTtcbiAgICBjbGFzcyBQYXJzZXIgZXh0ZW5kcyBQYXJzZXJfMS5QYXJzZXIge1xuICAgICAgICBjb25zdHJ1Y3Rvcihzb3VyY2UsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1YlBhcnNlciA9IG9wdGlvbnMgJiYgb3B0aW9ucy5kZWJ1Z1J1bGVzUGFyc2VyID09PSB0cnVlID8gbmV3IFBhcnNlcl8xLlBhcnNlcihCTkYuUlVMRVMsIHsgZGVidWc6IHRydWUgfSkgOiBCTkYuZGVmYXVsdFBhcnNlcjtcbiAgICAgICAgICAgIHN1cGVyKGdldFJ1bGVzKHNvdXJjZSwgc3ViUGFyc2VyKSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZW1pdFNvdXJjZSgpIHtcbiAgICAgICAgICAgIHJldHVybiBlbWl0KHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEJORi5QYXJzZXIgPSBQYXJzZXI7XG59KShCTkYgfHwgKEJORiA9IHt9KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBCTkY7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DdXN0b20uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQk5GXzEgPSByZXF1aXJlKFwiLi9CTkZcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJCTkZcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEJORl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgVzNDRUJORl8xID0gcmVxdWlyZShcIi4vVzNDRUJORlwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlczQ1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gVzNDRUJORl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgQ3VzdG9tXzEgPSByZXF1aXJlKFwiLi9DdXN0b21cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDdXN0b21cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEN1c3RvbV8xLmRlZmF1bHQ7IH0gfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBQYXJzZXJfMSA9IHJlcXVpcmUoXCIuL1BhcnNlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBhcnNlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gUGFyc2VyXzEuUGFyc2VyOyB9IH0pO1xudmFyIFRva2VuRXJyb3JfMSA9IHJlcXVpcmUoXCIuL1Rva2VuRXJyb3JcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUb2tlbkVycm9yXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcjsgfSB9KTtcbmV4cG9ydHMuR3JhbW1hcnMgPSByZXF1aXJlKFwiLi9HcmFtbWFyc1wiKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wYXJzZUZvcm11bGEgPSBleHBvcnRzLnBhcnNlQW5kQXBwbHkgPSBleHBvcnRzLlNvdXJjZSA9IGV4cG9ydHMuRm9ybXVsYSA9IHZvaWQgMDtcbmNvbnN0IG5ldmVydGhyb3dfMSA9IHJlcXVpcmUoXCIuLi9uZXZlcnRocm93L25ldmVydGhyb3dcIik7XG5jb25zdCBhbGdlYnJhaWNfb3BlcmF0aW9uXzEgPSByZXF1aXJlKFwiLi9hbGdlYnJhaWNfb3BlcmF0aW9uXCIpO1xuY29uc3QgYXN0X3V0aWxzXzEgPSByZXF1aXJlKFwiLi9hc3RfdXRpbHNcIik7XG5jb25zdCBjb25kaXRpb25hbF9mdW5jdGlvbl8xID0gcmVxdWlyZShcIi4vY29uZGl0aW9uYWxfZnVuY3Rpb25cIik7XG5jb25zdCBjb25zdGFudF8xID0gcmVxdWlyZShcIi4vY29uc3RhbnRcIik7XG5jb25zdCBkZXN0aW5hdGlvbl8xID0gcmVxdWlyZShcIi4vZGVzdGluYXRpb25cIik7XG5jb25zdCBkaXNwbGF5X2RpcmVjdGl2ZV8xID0gcmVxdWlyZShcIi4vZGlzcGxheV9kaXJlY3RpdmVcIik7XG5jb25zdCByYW5nZV8xID0gcmVxdWlyZShcIi4vcmFuZ2VcIik7XG5jb25zdCByZWZlcmVuY2VfMSA9IHJlcXVpcmUoXCIuL3JlZmVyZW5jZVwiKTtcbmNvbnN0IHNpbmdsZV9wYXJhbV9mdW5jdGlvbl8xID0gcmVxdWlyZShcIi4vc2luZ2xlX3BhcmFtX2Z1bmN0aW9uXCIpO1xuY29uc3QgZWJuZl8xID0gcmVxdWlyZShcImVibmZcIik7XG5jb25zdCBsb2Rhc2hfMSA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XG4vKipcbiAqIFczQyBncmFtbWFyIGRlc2NyaWJpbmcgYSB2YWxpZCBmb3JtdWxhIGF0IHRoZSBib3R0b20gb2YgYSB0YWJsZS5cbiAqXG4gKiBUaGUgbGlicmFyeSBiZWluZyB1c2VkIHRvIHBhcnNlIHRoZSBmb3JtdWxhIGRvZXMgbm90IHN1cG9ydCBFQk5GLCBvbmx5IEJORixcbiAqIHNvIFczQyBzeW50YXggd2FzIHVzZWQgaW4gb3JkZXIgdG8gZ2V0IGFjY2VzcyB0byBleHRlbmRlZCBmZWF0dXJlcy5cbiAqXG4gKiBUaGUgcGFyc2VyIGdlbmVyYXRlcyBhIFBFRyBwYXJzZXIsIHdoaWMgaXMgbm90IGFibGUgdG8gaGFuZGxlIGFtYmlndWl0eS4gVGhlXG4gKiBvcmRlciBvZiBjb25zdHJ1Y3Rpb25zIGlzIHNpZ25pZmljYW50LlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9seXMtbGFuZy9ub2RlLWVibmYvaXNzdWVzLzM0XG4gKi9cbmNvbnN0IHBhcnNlckdyYW1tYXIgPSBgXG50YmxmbV9saW5lICAgOjo9IFwiPCEtLSBUQkxGTTogXCIgZm9ybXVsYV9saXN0IFwiIC0tPlwiXG5mb3JtdWxhX2xpc3QgOjo9IGZvcm11bGEgKCBcIjo6XCIgZm9ybXVsYV9saXN0ICk/XG5mb3JtdWxhICAgICAgOjo9IGRlc3RpbmF0aW9uIFwiPVwiIHNvdXJjZSBkaXNwbGF5X2RpcmVjdGl2ZT9cblxuc291cmNlICAgICAgICAgICA6Oj0gcmFuZ2UgfCBzb3VyY2VfcmVmZXJlbmNlIHwgc2luZ2xlX3BhcmFtX2Z1bmN0aW9uX2NhbGwgfCBjb25kaXRpb25hbF9mdW5jdGlvbl9jYWxsIHwgYWxnZWJyYWljX29wZXJhdGlvbiB8IGZsb2F0IHwgcmVhbFxucmFuZ2UgICAgICAgICAgICA6Oj0gc291cmNlX3JlZmVyZW5jZSBcIi4uXCIgc291cmNlX3JlZmVyZW5jZVxuc291cmNlX3JlZmVyZW5jZSA6Oj0gYWJzb2x1dGVfcmVmZXJlbmNlIHwgcmVsYXRpdmVfcmVmZXJlbmNlXG5kZXN0aW5hdGlvbiAgICAgIDo6PSByYW5nZSB8IGFic29sdXRlX3JlZmVyZW5jZVxuXG5yZWxhdGl2ZV9yZWZlcmVuY2UgOjo9IChyZWxhdGl2ZV9yb3cgfCBhYnNvbHV0ZV9yb3cpIChyZWxhdGl2ZV9jb2x1bW4gfCBhYnNvbHV0ZV9jb2x1bW4pIHwgcmVsYXRpdmVfcm93IHwgcmVsYXRpdmVfY29sdW1uXG5yZWxhdGl2ZV9yb3cgOjo9IFwiQFwiICggXCItXCIgfCBcIitcIiApIGludFxucmVsYXRpdmVfY29sdW1uIDo6PSBcIiRcIiAoIFwiLVwiIHwgXCIrXCIgKSBpbnRcblxuYWJzb2x1dGVfcmVmZXJlbmNlIDo6PSBhYnNvbHV0ZV9yb3cgYWJzb2x1dGVfY29sdW1uIHwgYWJzb2x1dGVfcm93IHwgYWJzb2x1dGVfY29sdW1uXG5hYnNvbHV0ZV9yb3cgOjo9IFwiQFwiICggXCJJXCIgfCBcIjxcIiB8IFwiPlwiIHwgaW50IClcbmFic29sdXRlX2NvbHVtbiA6Oj0gXCIkXCIgKCBcIjxcIiB8IFwiPlwiIHwgaW50IClcblxuc2luZ2xlX3BhcmFtX2Z1bmN0aW9uX2NhbGwgOjo9IHNpbmdsZV9wYXJhbV9mdW5jdGlvbiBcIihcIiBzb3VyY2UgXCIpXCIgXG5zaW5nbGVfcGFyYW1fZnVuY3Rpb24gICAgICA6Oj0gXCJtZWFuXCIgfCBcInN1bVwiXG5cbmNvbmRpdGlvbmFsX2Z1bmN0aW9uX2NhbGwgOjo9IFwiaWYoXCIgcHJlZGljYXRlIFwiLFwiIFwiIFwiPyBzb3VyY2UgXCIsXCIgXCIgXCI/IHNvdXJjZSBcIilcIlxucHJlZGljYXRlICAgICAgICAgICAgICAgICA6Oj0gc291cmNlX3dpdGhvdXRfcmFuZ2UgY29uZGl0aW9uYWxfb3BlcmF0b3Igc291cmNlX3dpdGhvdXRfcmFuZ2VcbnNvdXJjZV93aXRob3V0X3JhbmdlICAgICAgOjo9IHNvdXJjZV9yZWZlcmVuY2UgfCBzaW5nbGVfcGFyYW1fZnVuY3Rpb25fY2FsbCB8IGNvbmRpdGlvbmFsX2Z1bmN0aW9uX2NhbGwgfCBhbGdlYnJhaWNfb3BlcmF0aW9uIHwgZmxvYXQgfCByZWFsXG5jb25kaXRpb25hbF9vcGVyYXRvciAgICAgIDo6PSBcIj5cIiB8IFwiPFwiIHwgXCI+PVwiIHwgXCI8PVwiIHwgXCI9PVwiIHwgXCIhPVwiXG5cbmFsZ2VicmFpY19vcGVyYXRpb24gOjo9IFwiKFwiIHNvdXJjZSBcIiBcIj8gYWxnZWJyYWljX29wZXJhdG9yIFwiIFwiPyBzb3VyY2UgXCIpXCJcbmFsZ2VicmFpY19vcGVyYXRvciAgOjo9IFwiK1wiIHwgXCItXCIgfCBcIipcIiB8IFwiL1wiXG5cbmRpc3BsYXlfZGlyZWN0aXZlICAgICAgICA6Oj0gXCI7XCIgZGlzcGxheV9kaXJlY3RpdmVfb3B0aW9uXG5kaXNwbGF5X2RpcmVjdGl2ZV9vcHRpb24gOjo9IGZvcm1hdHRpbmdfZGlyZWN0aXZlIHwgZGF0ZXRpbWVfZGlyZWN0aXZlXG5mb3JtYXR0aW5nX2RpcmVjdGl2ZSAgICAgOjo9IFwiJS5cIiBpbnQgXCJmXCJcbmRhdGV0aW1lX2RpcmVjdGl2ZSAgICAgICAgICAgOjo9IFwiZHRcIlxuXG5mbG9hdCA6Oj0gXCItXCI/IGludCBcIi5cIiBpbnRcbnJlYWwgOjo9IFwiLVwiPyBpbnRcbmludCAgOjo9IFswLTldK1xuYDtcbmNsYXNzIEZvcm11bGEge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgdGhpcy5tZXJnZSA9ICh0YWJsZSkgPT4gdGhpcy5kZXN0aW5hdGlvbi5tZXJnZSh0aGlzLnNvdXJjZSwgdGFibGUpO1xuICAgICAgICBsZXQgZm9ybWF0dGVyID0gbmV3IGRpc3BsYXlfZGlyZWN0aXZlXzEuRGVmYXVsdEZvcm1hdHRlcigpO1xuICAgICAgICBpZiAoYXN0LmNoaWxkcmVuLmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgZm9ybWF0dGVyID0gbmV3IGRpc3BsYXlfZGlyZWN0aXZlXzEuRGlzcGxheURpcmVjdGl2ZShhc3QuY2hpbGRyZW5bMl0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25fMS5uZXdEZXN0aW5hdGlvbihhc3QuY2hpbGRyZW5bMF0sIHRhYmxlLCBmb3JtYXR0ZXIpO1xuICAgICAgICBpZiAoZGVzdGluYXRpb24uaXNFcnIoKSkge1xuICAgICAgICAgICAgdGhyb3cgZGVzdGluYXRpb24uZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uLnZhbHVlO1xuICAgICAgICB0aGlzLnNvdXJjZSA9IG5ldyBTb3VyY2UoYXN0LmNoaWxkcmVuWzFdLCB0YWJsZSk7XG4gICAgfVxufVxuZXhwb3J0cy5Gb3JtdWxhID0gRm9ybXVsYTtcbmNsYXNzIFNvdXJjZSB7XG4gICAgY29uc3RydWN0b3IoYXN0LCB0YWJsZSkge1xuICAgICAgICAvKipcbiAgICAgICAgICogZ2V0VmFsdWUgcmV0dXJucyB0aGUgZXZhbHVhdGVkIHZhbHVlIGZvciB0aGlzIHNvdXJjZSByZWN1cnNpdmVseS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZ2V0VmFsdWUgPSAodGFibGUsIGN1cnJlbnRDZWxsKSA9PiB0aGlzLmxvY2F0aW9uRGVzY3JpcHRvci5nZXRWYWx1ZSh0YWJsZSwgY3VycmVudENlbGwpO1xuICAgICAgICBpZiAoYXN0LnR5cGUgIT09ICdzb3VyY2UnICYmIGFzdC50eXBlICE9PSAnc291cmNlX3dpdGhvdXRfcmFuZ2UnKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignSW52YWxpZCBBU1QgdG9rZW4gdHlwZSBvZiAnICsgYXN0LnR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhc3QuY2hpbGRyZW4ubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignVW5leHBlY3RlZCBjaGlsZHJlbiBsZW5ndGggaW4gU291cmNlJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyYW1DaGlsZCA9IGFzdC5jaGlsZHJlblswXTtcbiAgICAgICAgY29uc3QgdnAgPSBuZXdWYWx1ZVByb3ZpZGVyKHBhcmFtQ2hpbGQsIHRhYmxlKTtcbiAgICAgICAgaWYgKHZwLmlzRXJyKCkpIHtcbiAgICAgICAgICAgIHRocm93IHZwLmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9jYXRpb25EZXNjcmlwdG9yID0gdnAudmFsdWU7XG4gICAgfVxufVxuZXhwb3J0cy5Tb3VyY2UgPSBTb3VyY2U7XG5jb25zdCBuZXdWYWx1ZVByb3ZpZGVyID0gKGFzdCwgdGFibGUpID0+IHtcbiAgICB0cnkge1xuICAgICAgICBzd2l0Y2ggKGFzdC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdyYW5nZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgcmFuZ2VfMS5SYW5nZShhc3QsIHRhYmxlKSk7XG4gICAgICAgICAgICBjYXNlICdzb3VyY2VfcmVmZXJlbmNlJzpcbiAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAxKTtcbiAgICAgICAgICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIobGVuZ3RoRXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyByZWZlcmVuY2VfMS5SZWZlcmVuY2UoYXN0LmNoaWxkcmVuWzBdLCB0YWJsZSkpO1xuICAgICAgICAgICAgY2FzZSAnc2luZ2xlX3BhcmFtX2Z1bmN0aW9uX2NhbGwnOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IHNpbmdsZV9wYXJhbV9mdW5jdGlvbl8xLlNpbmdsZVBhcmFtRnVuY3Rpb25DYWxsKGFzdCwgdGFibGUpKTtcbiAgICAgICAgICAgIGNhc2UgJ2NvbmRpdGlvbmFsX2Z1bmN0aW9uX2NhbGwnOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IGNvbmRpdGlvbmFsX2Z1bmN0aW9uXzEuQ29uZGl0aW9uYWxGdW5jdGlvbkNhbGwoYXN0LCB0YWJsZSkpO1xuICAgICAgICAgICAgY2FzZSAnYWxnZWJyYWljX29wZXJhdGlvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgYWxnZWJyYWljX29wZXJhdGlvbl8xLkFsZ2VicmFpY09wZXJhdGlvbihhc3QsIHRhYmxlKSk7XG4gICAgICAgICAgICBjYXNlICdyZWFsJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBjb25zdGFudF8xLkNvbnN0YW50KGFzdCwgdGFibGUpKTtcbiAgICAgICAgICAgIGNhc2UgJ2Zsb2F0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBjb25zdGFudF8xLkNvbnN0YW50KGFzdCwgdGFibGUpKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1VucmVjb2duaXplZCB2YWx1ZVByb3ZpZGVyIHR5cGUgJyArIGFzdC50eXBlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIoZXJyb3IpO1xuICAgIH1cbn07XG5jb25zdCBwYXJzZUFuZEFwcGx5ID0gKGZvcm11bGFMaW5lcywgdGFibGUpID0+IHtcbiAgICAvLyBQYXJzZSBlYWNoIGZvcm11bGEgbGluZSwgZmxhdHRlbmluZyB0aGUgcmVzdWx0aW5nIGxpc3RzIG9mIGZvcm11bGFzIGludG8gYVxuICAgIC8vIHNpbmdsZSBsaXN0LCBidXQgcmV0dXJuaW5nIGFuIGVycm9yIGlmIGFueSBmb3JtdWxhIGZhaWxzIHRvIHBhcnNlLlxuICAgIGNvbnN0IGZvcm11bGFzID0gZm9ybXVsYUxpbmVzLnJlZHVjZSgocHJldiwgZm9ybXVsYUxpbmUpID0+IHByZXYuYW5kVGhlbigoY3VycmVudEZvcm11bGFzKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0Zvcm11bGFzID0gZXhwb3J0cy5wYXJzZUZvcm11bGEoZm9ybXVsYUxpbmUsIHRhYmxlKTtcbiAgICAgICAgaWYgKG5ld0Zvcm11bGFzLmlzRXJyKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXdGb3JtdWxhcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKGxvZGFzaF8xLmNvbmNhdChuZXdGb3JtdWxhcy52YWx1ZSwgY3VycmVudEZvcm11bGFzKSk7XG4gICAgfSksIG5ldmVydGhyb3dfMS5vayhbXSkpO1xuICAgIC8vIElmIHRoZXJlIGlzIG5vIGVycm9yLFxuICAgIHJldHVybiBmb3JtdWxhcy5hbmRUaGVuKChpbm5lckZvcm11bGFzKSA9PiBcbiAgICAvLyBmb3IgZWFjaCBmb3JtdWxhXG4gICAgaW5uZXJGb3JtdWxhcy5yZWR1Y2VSaWdodCgocHJldlZhbHVlLCBmb3JtdWxhKSA9PiBcbiAgICAvLyBJZiB0aGUgcHJldmlvdXMgZm9ybXVsYSBkaWRuJ3QgZ2l2ZSBhbiBlcnJvclxuICAgIHByZXZWYWx1ZS5hbmRUaGVuKChwcmV2VGFibGUpID0+IFxuICAgIC8vIGF0dGVtcHQgdG8gYXBwbHkgdGhpcyBmb3JtdWxhIHRvIHRoZSB0YWJsZSBhbmQgcmV0dXJuIHRoZSByZXN1bHRcbiAgICBmb3JtdWxhLm1lcmdlKHByZXZUYWJsZSkpLCBcbiAgICAvLyBTdGFydCB3aXRoIHRoZSBjdXJyZW50IHRhYmxlIHN0YXRlXG4gICAgbmV2ZXJ0aHJvd18xLm9rKHRhYmxlKSkpO1xufTtcbmV4cG9ydHMucGFyc2VBbmRBcHBseSA9IHBhcnNlQW5kQXBwbHk7XG4vKipcbiAqIFBhcnNlIHRoZSBwcm92aWRlZCBsaW5lLCByZXR1cm5pbmcgYW55IGZvdW5kIGZvcm11bGFzLiBBIHNpbmdsZSBsaW5lIG1heVxuICogY29udGFpbiB6ZXJvIG9yIG1vcmUgZm9ybXVsYXMuXG4gKlxuICogQHBhcmFtIGxpbmUgQSBsaW5lIG9mIHRoZSBmb3JtIGA8IS0tIFRCRk06IHtGT1JNVUxBfTo6e0ZPUk1VTEF9IC0tPmBcbiAqL1xuY29uc3QgcGFyc2VGb3JtdWxhID0gKGxpbmUsIHRhYmxlKSA9PiB7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IGVibmZfMS5HcmFtbWFycy5XM0MuUGFyc2VyKHBhcnNlckdyYW1tYXIpO1xuICAgIGNvbnN0IGFzdCA9IHBhcnNlci5nZXRBU1QobGluZSk7XG4gICAgLy8gVE9ETzogRGV0ZXJtaW5lIGhvdyB0byByZXR1cm4gZXJyb3JzIHdoZW4gYSBmb3JtdWxhLWxpa2Ugc3RyaW5nXG4gICAgLy8gICAgICAgaXMgbm90IGFjdHVhbGx5IGEgdmFsaWQgZm9ybXVsYS5cbiAgICBpZiAoIWFzdCkge1xuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihuZXcgRXJyb3IoYEZvcm11bGEgJyR7bGluZX0nIGNvdWxkIG5vdCBiZSBwYXJzZWRgKSk7XG4gICAgfVxuICAgIGNvbnN0IHR5cGVFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICd0YmxmbV9saW5lJyk7XG4gICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycih0eXBlRXJyb3IpO1xuICAgIH1cbiAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAxKTtcbiAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIobGVuZ3RoRXJyb3IpO1xuICAgIH1cbiAgICBsZXQgdW5wYXJzZWRGb3JtdWxhcyA9IGFzdC5jaGlsZHJlblswXS5jaGlsZHJlbjtcbiAgICBjb25zdCBmb3JtdWxhcyA9IFtdO1xuICAgIHRyeSB7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGZvcm11bGFzLnB1c2gobmV3IEZvcm11bGEodW5wYXJzZWRGb3JtdWxhc1swXSwgdGFibGUpKTtcbiAgICAgICAgICAgIGlmICh1bnBhcnNlZEZvcm11bGFzLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgICAgICAgICB1bnBhcnNlZEZvcm11bGFzWzFdLnR5cGUgPT09ICdmb3JtdWxhX2xpc3QnKSB7XG4gICAgICAgICAgICAgICAgdW5wYXJzZWRGb3JtdWxhcyA9IHVucGFyc2VkRm9ybXVsYXNbMV0uY2hpbGRyZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB1bnBhcnNlZEZvcm11bGFzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKHVucGFyc2VkRm9ybXVsYXMubGVuZ3RoID4gMCk7XG4gICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2soZm9ybXVsYXMpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIoZXJyb3IpO1xuICAgIH1cbn07XG5leHBvcnRzLnBhcnNlRm9ybXVsYSA9IHBhcnNlRm9ybXVsYTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UYWJsZSA9IHZvaWQgMDtcbmNvbnN0IGNhbGNfMSA9IHJlcXVpcmUoXCIuL2NhbGMvY2FsY1wiKTtcbmNvbnN0IGZvY3VzXzEgPSByZXF1aXJlKFwiLi9mb2N1c1wiKTtcbmNvbnN0IHBvaW50XzEgPSByZXF1aXJlKFwiLi9wb2ludFwiKTtcbmNvbnN0IHJhbmdlXzEgPSByZXF1aXJlKFwiLi9yYW5nZVwiKTtcbi8qKlxuICogQSBgVGFibGVgIG9iamVjdCByZXByZXNlbnRzIGEgdGFibGUuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgVGFibGUge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYFRhYmxlYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93cyAtIEFuIGFycmF5IG9mIHJvd3MgdGhhdCB0aGUgdGFibGUgY29udGFpbnMuXG4gICAgICogQHBhcmFtIGZvcm11bGFzIC0gQW4gYXJyYXkgb2YgZm9ybXVsYXMgYXR0YWNoZWQgdG8gdGhlIHRhYmxlLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHJvd3MpIHtcbiAgICAgICAgdGhpcy5fcm93cyA9IHJvd3Muc2xpY2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIHRhYmxlLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiByb3dzLlxuICAgICAqL1xuICAgIGdldEhlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd3MubGVuZ3RoO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtYXhpbXVtIHdpZHRoIG9mIHRoZSByb3dzIGluIHRoZSB0YWJsZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBtYXhpbXVtIHdpZHRoIG9mIHRoZSByb3dzLlxuICAgICAqL1xuICAgIGdldFdpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93c1xuICAgICAgICAgICAgLm1hcCgocm93KSA9PiByb3cuZ2V0V2lkdGgoKSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKHgsIHkpID0+IE1hdGgubWF4KHgsIHkpLCAwKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgd2lkdGggb2YgdGhlIGhlYWRlciByb3cuXG4gICAgICogQXNzdW1lcyB0aGF0IGl0IGlzIGNhbGxlZCBvbiBhIHZhbGlkIHRhYmxlIHdpdGggYSBoZWFkZXIgcm93LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHdpZHRoIG9mIHRoZSBoZWFkZXIgcm93XG4gICAgICovXG4gICAgZ2V0SGVhZGVyV2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dzWzBdLmdldFdpZHRoKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHJvd3MgdGhhdCB0aGUgdGFibGUgY29udGFpbnMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB0aGUgcm93cy5cbiAgICAgKi9cbiAgICBnZXRSb3dzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93cy5zbGljZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBkZWxpbWl0ZXIgcm93IG9mIHRoZSB0YWJsZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBkZWxpbWl0ZXIgcm93OyBgdW5kZWZpbmVkYCBpZiB0aGVyZSBpcyBub3QgZGVsaW1pdGVyIHJvdy5cbiAgICAgKi9cbiAgICBnZXREZWxpbWl0ZXJSb3coKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuX3Jvd3NbMV07XG4gICAgICAgIGlmIChyb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocm93LmlzRGVsaW1pdGVyKCkpIHtcbiAgICAgICAgICAgIHJldHVybiByb3c7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyBhIGNlbGwgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3dJbmRleCAtIFJvdyBpbmRleCBvZiB0aGUgY2VsbC5cbiAgICAgKiBAcGFyYW0gY29sdW1uSW5kZXggLSBDb2x1bW4gaW5kZXggb2YgdGhlIGNlbGwuXG4gICAgICogQHJldHVybnMgVGhlIGNlbGwgYXQgdGhlIHNwZWNpZmllZCBpbmRleDsgYHVuZGVmaW5lZGAgaWYgbm90IGZvdW5kLlxuICAgICAqL1xuICAgIGdldENlbGxBdChyb3dJbmRleCwgY29sdW1uSW5kZXgpIHtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5fcm93c1tyb3dJbmRleF07XG4gICAgICAgIGlmIChyb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93LmdldENlbGxBdChjb2x1bW5JbmRleCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGNlbGwgYXQgdGhlIGZvY3VzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvY3VzIC0gRm9jdXMgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIFRoZSBjZWxsIGF0IHRoZSBmb2N1czsgYHVuZGVmaW5lZGAgaWYgbm90IGZvdW5kLlxuICAgICAqL1xuICAgIGdldEZvY3VzZWRDZWxsKGZvY3VzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENlbGxBdChmb2N1cy5yb3csIGZvY3VzLmNvbHVtbik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSB0YWJsZSB0byBhbiBhcnJheSBvZiB0ZXh0IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgcm93cy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHRleHQgcmVwcmVzZW50YXRpb25zIG9mIHRoZSByb3dzLlxuICAgICAqL1xuICAgIHRvTGluZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dzLm1hcCgocm93KSA9PiByb3cudG9UZXh0KCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIGEgY2VsbCBpbiB0aGUgdGFibGUgdG8gYSBuZXcgdmFsdWUsIHJldHVybmluZyBhIGNvcHkgb2YgdGhlIHRhYmxlXG4gICAgICogd2l0aCB0aGUgbW9kaWZpZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBJZiBhbiBpbnZhbGlkIGluZGV4IGlzIHByb3ZpZGVkLCB0aGUgdGFibGUgd2lsbCBiZSB1bmNoYW5nZWQuXG4gICAgICovXG4gICAgc2V0Q2VsbEF0KHJvd0luZGV4LCBjb2x1bW5JbmRleCwgdmFsdWUpIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IHRoaXMuZ2V0Um93cygpOyAvLyBhIGNvcHlcbiAgICAgICAgcm93c1tyb3dJbmRleF0gPSByb3dzW3Jvd0luZGV4XS5zZXRDZWxsQXQoY29sdW1uSW5kZXgsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZShyb3dzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYSBmb2N1cyBmcm9tIGEgcG9pbnQgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBvcyAtIEEgcG9pbnQgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEBwYXJhbSByb3dPZmZzZXQgLSBUaGUgcm93IGluZGV4IHdoZXJlIHRoZSB0YWJsZSBzdGFydHMgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEByZXR1cm5zIEEgZm9jdXMgb2JqZWN0IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIHNwZWNpZmllZCBwb2ludDtcbiAgICAgKiBgdW5kZWZpbmVkYCBpZiB0aGUgcm93IGluZGV4IGlzIG91dCBvZiBib3VuZHMuXG4gICAgICovXG4gICAgZm9jdXNPZlBvc2l0aW9uKHBvcywgcm93T2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IHJvd0luZGV4ID0gcG9zLnJvdyAtIHJvd09mZnNldDtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5fcm93c1tyb3dJbmRleF07XG4gICAgICAgIGlmIChyb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9zLmNvbHVtbiA8IHJvdy5tYXJnaW5MZWZ0Lmxlbmd0aCArIDEpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgZm9jdXNfMS5Gb2N1cyhyb3dJbmRleCwgLTEsIHBvcy5jb2x1bW4pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbGxXaWR0aHMgPSByb3cuZ2V0Q2VsbHMoKS5tYXAoKGNlbGwpID0+IGNlbGwucmF3Q29udGVudC5sZW5ndGgpO1xuICAgICAgICBsZXQgY29sdW1uUG9zID0gcm93Lm1hcmdpbkxlZnQubGVuZ3RoICsgMTsgLy8gbGVmdCBtYXJnaW4gKyBhIHBpcGVcbiAgICAgICAgbGV0IGNvbHVtbkluZGV4ID0gMDtcbiAgICAgICAgZm9yICg7IGNvbHVtbkluZGV4IDwgY2VsbFdpZHRocy5sZW5ndGg7IGNvbHVtbkluZGV4KyspIHtcbiAgICAgICAgICAgIGlmIChjb2x1bW5Qb3MgKyBjZWxsV2lkdGhzW2NvbHVtbkluZGV4XSArIDEgPiBwb3MuY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb2x1bW5Qb3MgKz0gY2VsbFdpZHRoc1tjb2x1bW5JbmRleF0gKyAxO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHBvcy5jb2x1bW4gLSBjb2x1bW5Qb3M7XG4gICAgICAgIHJldHVybiBuZXcgZm9jdXNfMS5Gb2N1cyhyb3dJbmRleCwgY29sdW1uSW5kZXgsIG9mZnNldCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGEgcG9zaXRpb24gaW4gdGhlIHRleHQgZWRpdG9yIGZyb20gYSBmb2N1cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb2N1cyAtIEEgZm9jdXMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSByb3dPZmZzZXQgLSBUaGUgcm93IGluZGV4IHdoZXJlIHRoZSB0YWJsZSBzdGFydHMgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEByZXR1cm5zIEEgcG9zaXRpb24gaW4gdGhlIHRleHQgZWRpdG9yIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGZvY3VzO1xuICAgICAqIGB1bmRlZmluZWRgIGlmIHRoZSBmb2N1c2VkIHJvdyAgaXMgb3V0IG9mIHRoZSB0YWJsZS5cbiAgICAgKi9cbiAgICBwb3NpdGlvbk9mRm9jdXMoZm9jdXMsIHJvd09mZnNldCkge1xuICAgICAgICBjb25zdCByb3cgPSB0aGlzLl9yb3dzW2ZvY3VzLnJvd107XG4gICAgICAgIGlmIChyb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByb3dQb3MgPSBmb2N1cy5yb3cgKyByb3dPZmZzZXQ7XG4gICAgICAgIGlmIChmb2N1cy5jb2x1bW4gPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IHBvaW50XzEuUG9pbnQocm93UG9zLCBmb2N1cy5vZmZzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbGxXaWR0aHMgPSByb3cuZ2V0Q2VsbHMoKS5tYXAoKGNlbGwpID0+IGNlbGwucmF3Q29udGVudC5sZW5ndGgpO1xuICAgICAgICBjb25zdCBtYXhJbmRleCA9IE1hdGgubWluKGZvY3VzLmNvbHVtbiwgY2VsbFdpZHRocy5sZW5ndGgpO1xuICAgICAgICBsZXQgY29sdW1uUG9zID0gcm93Lm1hcmdpbkxlZnQubGVuZ3RoICsgMTtcbiAgICAgICAgZm9yIChsZXQgY29sdW1uSW5kZXggPSAwOyBjb2x1bW5JbmRleCA8IG1heEluZGV4OyBjb2x1bW5JbmRleCsrKSB7XG4gICAgICAgICAgICBjb2x1bW5Qb3MgKz0gY2VsbFdpZHRoc1tjb2x1bW5JbmRleF0gKyAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgcG9pbnRfMS5Qb2ludChyb3dQb3MsIGNvbHVtblBvcyArIGZvY3VzLm9mZnNldCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGEgc2VsZWN0aW9uIHJhbmdlIGZyb20gYSBmb2N1cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb2N1cyAtIEEgZm9jdXMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSByb3dPZmZzZXQgLSBUaGUgcm93IGluZGV4IHdoZXJlIHRoZSB0YWJsZSBzdGFydHMgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEByZXR1cm5zIEEgcmFuZ2UgdG8gYmUgc2VsZWN0ZWQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgZm9jdXM7XG4gICAgICogYHVuZGVmaW5lZGAgaWYgdGhlIGZvY3VzIGRvZXMgbm90IHNwZWNpZnkgYW55IGNlbGwgb3IgdGhlIHNwZWNpZmllZCBjZWxsIGlzIGVtcHR5LlxuICAgICAqL1xuICAgIHNlbGVjdGlvblJhbmdlT2ZGb2N1cyhmb2N1cywgcm93T2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuX3Jvd3NbZm9jdXMucm93XTtcbiAgICAgICAgaWYgKHJvdyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbGwgPSByb3cuZ2V0Q2VsbEF0KGZvY3VzLmNvbHVtbik7XG4gICAgICAgIGlmIChjZWxsID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNlbGwuY29udGVudCA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm93UG9zID0gZm9jdXMucm93ICsgcm93T2Zmc2V0O1xuICAgICAgICBjb25zdCBjZWxsV2lkdGhzID0gcm93LmdldENlbGxzKCkubWFwKChjZWxsKSA9PiBjZWxsLnJhd0NvbnRlbnQubGVuZ3RoKTtcbiAgICAgICAgbGV0IGNvbHVtblBvcyA9IHJvdy5tYXJnaW5MZWZ0Lmxlbmd0aCArIDE7XG4gICAgICAgIGZvciAobGV0IGNvbHVtbkluZGV4ID0gMDsgY29sdW1uSW5kZXggPCBmb2N1cy5jb2x1bW47IGNvbHVtbkluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbHVtblBvcyArPSBjZWxsV2lkdGhzW2NvbHVtbkluZGV4XSArIDE7XG4gICAgICAgIH1cbiAgICAgICAgY29sdW1uUG9zICs9IGNlbGwucGFkZGluZ0xlZnQ7XG4gICAgICAgIHJldHVybiBuZXcgcmFuZ2VfMS5SYW5nZShuZXcgcG9pbnRfMS5Qb2ludChyb3dQb3MsIGNvbHVtblBvcyksIG5ldyBwb2ludF8xLlBvaW50KHJvd1BvcywgY29sdW1uUG9zICsgY2VsbC5jb250ZW50Lmxlbmd0aCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZSB0aGUgZm9ybXVsYSwgYXBwbHlpbmcgdGhlIHJlc3VsdHMgdG8gdGhpcyB0YWJsZSBhbmQgcmV0dXJuaW5nIHRoZVxuICAgICAqIGNoYW5nZXMgYXMgYSBuZXcgdGFibGUuXG4gICAgICovXG4gICAgYXBwbHlGb3JtdWxhcyhmb3JtdWxhTGluZXMpIHtcbiAgICAgICAgcmV0dXJuIGNhbGNfMS5wYXJzZUFuZEFwcGx5KGZvcm11bGFMaW5lcywgdGhpcyk7XG4gICAgfVxufVxuZXhwb3J0cy5UYWJsZSA9IFRhYmxlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnJlYWRUYWJsZSA9IGV4cG9ydHMuX21hcmdpblJlZ2V4ID0gZXhwb3J0cy5tYXJnaW5SZWdleFNyYyA9IGV4cG9ydHMuX3JlYWRSb3cgPSBleHBvcnRzLl9zcGxpdENlbGxzID0gdm9pZCAwO1xuY29uc3QgdGFibGVfMSA9IHJlcXVpcmUoXCIuL3RhYmxlXCIpO1xuY29uc3QgdGFibGVfY2VsbF8xID0gcmVxdWlyZShcIi4vdGFibGUtY2VsbFwiKTtcbmNvbnN0IHRhYmxlX3Jvd18xID0gcmVxdWlyZShcIi4vdGFibGUtcm93XCIpO1xuLyoqXG4gKiBTcGxpdHMgYSB0ZXh0IGludG8gY2VsbHMuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgX3NwbGl0Q2VsbHMgPSAodGV4dCkgPT4ge1xuICAgIGNvbnN0IGNlbGxzID0gW107XG4gICAgbGV0IGJ1ZiA9ICcnO1xuICAgIGxldCByZXN0ID0gdGV4dDtcbiAgICB3aGlsZSAocmVzdCAhPT0gJycpIHtcbiAgICAgICAgc3dpdGNoIChyZXN0WzBdKSB7XG4gICAgICAgICAgICBjYXNlICdgJzpcbiAgICAgICAgICAgICAgICAvLyByZWFkIGNvZGUgc3BhblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRNYXRjaCA9IHJlc3QubWF0Y2goL15gKi8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRNYXRjaCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSBzdGF0ZW1lbnQgZW5zdXJlcyBmaXJzdCBjaGFyIGlzIGEgYCBhbmQgd2UgY2Fubm90IGdldCBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBqdXN0IHNhdGlzZmllcyB0aGUgY29tcGlsZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IHN0YXJ0TWF0Y2hbMF07XG4gICAgICAgICAgICAgICAgICAgIGxldCBidWYxID0gc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXN0MSA9IHJlc3Quc3Vic3RyKHN0YXJ0Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHJlc3QxICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3QxWzBdID09PSAnYCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmRNYXRjaCA9IHJlc3QxLm1hdGNoKC9eYCovKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW5kTWF0Y2ggPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSBzdGF0ZW1lbnQgZW5zdXJlcyBmaXJzdCBjaGFyIGlzIGEgYCBhbmQgd2UgY2Fubm90IGdldCBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGp1c3Qgc2F0aXNmaWVzIHRoZSBjb21waWxlci5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IGVuZE1hdGNoWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZjEgKz0gZW5kO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3QxID0gcmVzdDEuc3Vic3RyKGVuZC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbmQubGVuZ3RoID09PSBzdGFydC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmMSArPSByZXN0MVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0MSA9IHJlc3QxLnN1YnN0cigxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWYgKz0gYnVmMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0MTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiArPSAnYCc7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgICAgICAgICAvLyBlc2NhcGUgbmV4dCBjaGFyYWN0ZXJcbiAgICAgICAgICAgICAgICBpZiAocmVzdC5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgICAgICBidWYgKz0gcmVzdC5zdWJzdHIoMCwgMik7XG4gICAgICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0LnN1YnN0cigyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZiArPSAnXFxcXCc7XG4gICAgICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0LnN1YnN0cigxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdbJzpcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBlbmNvdW50ZXIgYSByZW5hbWVkIFtbbGlua3xMaW5rXV0sIGF1dG9tYXRpY2FsbHkgZXNjYXBlIHRoZSBwaXBlXG4gICAgICAgICAgICAgICAgYnVmICs9ICdbJztcbiAgICAgICAgICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgaWYgKC9cXFtbXlxcXFx8XFxdXStcXHxbXnxcXF1dK11dLy50ZXN0KHJlc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkeCA9IHJlc3QuaW5kZXhPZignfCcpO1xuICAgICAgICAgICAgICAgICAgICBidWYgKz0gcmVzdC5zbGljZSgwLCBpZHgpO1xuICAgICAgICAgICAgICAgICAgICBidWYgKz0gJ1xcXFx8JztcbiAgICAgICAgICAgICAgICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKGlkeCArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3wnOlxuICAgICAgICAgICAgICAgIC8vIGZsdXNoIGJ1ZmZlclxuICAgICAgICAgICAgICAgIGNlbGxzLnB1c2goYnVmKTtcbiAgICAgICAgICAgICAgICBidWYgPSAnJztcbiAgICAgICAgICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJ1ZiArPSByZXN0WzBdO1xuICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0LnN1YnN0cigxKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjZWxscy5wdXNoKGJ1Zik7XG4gICAgcmV0dXJuIGNlbGxzO1xufTtcbmV4cG9ydHMuX3NwbGl0Q2VsbHMgPSBfc3BsaXRDZWxscztcbi8qKlxuICogUmVhZHMgYSB0YWJsZSByb3cuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0ZXh0IC0gQSB0ZXh0LlxuICogQHBhcmFtIFtsZWZ0TWFyZ2luUmVnZXg9L15cXHMqJC9dIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0IHRoYXQgbWF0Y2hlcyBsZWZ0IG1hcmdpbi5cbiAqL1xuY29uc3QgX3JlYWRSb3cgPSAodGV4dCwgbGVmdE1hcmdpblJlZ2V4ID0gL15cXHMqJC8pID0+IHtcbiAgICBsZXQgY2VsbHMgPSBleHBvcnRzLl9zcGxpdENlbGxzKHRleHQpO1xuICAgIGxldCBtYXJnaW5MZWZ0O1xuICAgIGlmIChjZWxscy5sZW5ndGggPiAwICYmIGxlZnRNYXJnaW5SZWdleC50ZXN0KGNlbGxzWzBdKSkge1xuICAgICAgICBtYXJnaW5MZWZ0ID0gY2VsbHNbMF07XG4gICAgICAgIGNlbGxzID0gY2VsbHMuc2xpY2UoMSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBtYXJnaW5MZWZ0ID0gJyc7XG4gICAgfVxuICAgIGxldCBtYXJnaW5SaWdodDtcbiAgICBpZiAoY2VsbHMubGVuZ3RoID4gMSAmJiAvXlxccyokLy50ZXN0KGNlbGxzW2NlbGxzLmxlbmd0aCAtIDFdKSkge1xuICAgICAgICBtYXJnaW5SaWdodCA9IGNlbGxzW2NlbGxzLmxlbmd0aCAtIDFdO1xuICAgICAgICBjZWxscyA9IGNlbGxzLnNsaWNlKDAsIGNlbGxzLmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbWFyZ2luUmlnaHQgPSAnJztcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhjZWxscy5tYXAoKGNlbGwpID0+IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKGNlbGwpKSwgbWFyZ2luTGVmdCwgbWFyZ2luUmlnaHQpO1xufTtcbmV4cG9ydHMuX3JlYWRSb3cgPSBfcmVhZFJvdztcbi8qKlxuICogQ3JlYXRlcyBhIHJlZ2V4IHNvdXJjZSBzdHJpbmcgb2YgbWFyZ2luIGNoYXJhY3RlciBjbGFzcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIGNoYXJzIC0gQSBzZXQgb2YgYWRkaXRpb25hbCBtYXJnaW4gY2hhcmFjdGVycy5cbiAqIEEgcGlwZSBgfGAsIGEgYmFja3NsYXNoIGBcXGAsIGFuZCBhIGJhY2txdW90ZSB3aWxsIGJlIGlnbm9yZWQuXG4gKiBAcmV0dXJuIEEgcmVnZXggc291cmNlIHN0cmluZy5cbiAqL1xuY29uc3QgbWFyZ2luUmVnZXhTcmMgPSAoY2hhcnMpID0+IHtcbiAgICBsZXQgY3MgPSAnJztcbiAgICAvLyBmb3IgKGNvbnN0IGMgY2hhcnMudmFsdWVzKCkpIHtcbiAgICBjaGFycy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIGlmIChjICE9PSAnfCcgJiYgYyAhPT0gJ1xcXFwnICYmIGMgIT09ICdgJykge1xuICAgICAgICAgICAgY3MgKz0gYFxcXFx1eyR7Yy5jb2RlUG9pbnRBdCgwKS50b1N0cmluZygxNil9fWA7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYFtcXFxccyR7Y3N9XSpgO1xufTtcbmV4cG9ydHMubWFyZ2luUmVnZXhTcmMgPSBtYXJnaW5SZWdleFNyYztcbi8qKlxuICogQ3JlYXRlcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBvYmplY3QgdGhhdCBtYXRjaGVzIG1hcmdpbiBvZiB0YWJsZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBjaGFycyAtIEEgc2V0IG9mIGFkZGl0aW9uYWwgbWFyZ2luIGNoYXJhY3RlcnMuXG4gKiBBIHBpcGUgYHxgLCBhIGJhY2tzbGFzaCBgXFxgLCBhbmQgYSBiYWNrcXVvdGUgd2lsbCBiZSBpZ25vcmVkLlxuICogQHJldHVybiBBbiByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0IHRoYXQgbWF0Y2hlcyBtYXJnaW4gb2YgdGFibGVzLlxuICovXG5jb25zdCBfbWFyZ2luUmVnZXggPSAoY2hhcnMpID0+IG5ldyBSZWdFeHAoYF4ke2V4cG9ydHMubWFyZ2luUmVnZXhTcmMoY2hhcnMpfSRgLCAndScpO1xuZXhwb3J0cy5fbWFyZ2luUmVnZXggPSBfbWFyZ2luUmVnZXg7XG4vKipcbiAqIFJlYWRzIGEgdGFibGUgZnJvbSBsaW5lcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIGxpbmVzIC0gQW4gYXJyYXkgb2YgdGV4dHMsIGVhY2ggdGV4dCByZXByZXNlbnRzIGEgcm93LlxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3QgY29udGFpbmluZyBvcHRpb25zIGZvciBwYXJzaW5nLlxuICogQHJldHVybnMgVGhlIHRhYmxlIHJlYWQgZnJvbSB0aGUgbGluZXMuXG4gKi9cbmNvbnN0IHJlYWRUYWJsZSA9IChsaW5lcywgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IGxlZnRNYXJnaW5SZWdleCA9IGV4cG9ydHMuX21hcmdpblJlZ2V4KG9wdGlvbnMubGVmdE1hcmdpbkNoYXJzKTtcbiAgICByZXR1cm4gbmV3IHRhYmxlXzEuVGFibGUobGluZXMubWFwKChsaW5lKSA9PiBleHBvcnRzLl9yZWFkUm93KGxpbmUsIGxlZnRNYXJnaW5SZWdleCkpKTtcbn07XG5leHBvcnRzLnJlYWRUYWJsZSA9IHJlYWRUYWJsZTtcbiIsIi8qXHJcbiAqIEdlbmVyYXRlZCBieSBzY3JpcHQuIERPIE5PVCBFRElUIVxyXG4gKlxyXG4gKiBUaGUgcGFydCBiZXR3ZWVuIEJFR0lOIGFuZCBFTkQgaXMgZGVyaXZlZCBmcm9tIFVuaWNvZGUgRGF0YSBGaWxlc1xyXG4gKiBhbmQgcHJvdmlkZWQgdW5kZXIgVW5pY29kZSwgSW5jLiBMaWNlbnNlIEFncmVlbWVudC5cclxuICovXHJcbi8qIEJFR0lOICovXHJcbnZhciBkZWZzID0gW1xyXG4gICAgWzAsIDMxLCBcIk5cIl0sXHJcbiAgICBbMzIsIDEyNiwgXCJOYVwiXSxcclxuICAgIFsxMjcsIDE2MCwgXCJOXCJdLFxyXG4gICAgWzE2MSwgMTYxLCBcIkFcIl0sXHJcbiAgICBbMTYyLCAxNjMsIFwiTmFcIl0sXHJcbiAgICBbMTY0LCAxNjQsIFwiQVwiXSxcclxuICAgIFsxNjUsIDE2NiwgXCJOYVwiXSxcclxuICAgIFsxNjcsIDE2OCwgXCJBXCJdLFxyXG4gICAgWzE2OSwgMTY5LCBcIk5cIl0sXHJcbiAgICBbMTcwLCAxNzAsIFwiQVwiXSxcclxuICAgIFsxNzEsIDE3MSwgXCJOXCJdLFxyXG4gICAgWzE3MiwgMTcyLCBcIk5hXCJdLFxyXG4gICAgWzE3MywgMTc0LCBcIkFcIl0sXHJcbiAgICBbMTc1LCAxNzUsIFwiTmFcIl0sXHJcbiAgICBbMTc2LCAxODAsIFwiQVwiXSxcclxuICAgIFsxODEsIDE4MSwgXCJOXCJdLFxyXG4gICAgWzE4MiwgMTg2LCBcIkFcIl0sXHJcbiAgICBbMTg3LCAxODcsIFwiTlwiXSxcclxuICAgIFsxODgsIDE5MSwgXCJBXCJdLFxyXG4gICAgWzE5MiwgMTk3LCBcIk5cIl0sXHJcbiAgICBbMTk4LCAxOTgsIFwiQVwiXSxcclxuICAgIFsxOTksIDIwNywgXCJOXCJdLFxyXG4gICAgWzIwOCwgMjA4LCBcIkFcIl0sXHJcbiAgICBbMjA5LCAyMTQsIFwiTlwiXSxcclxuICAgIFsyMTUsIDIxNiwgXCJBXCJdLFxyXG4gICAgWzIxNywgMjIxLCBcIk5cIl0sXHJcbiAgICBbMjIyLCAyMjUsIFwiQVwiXSxcclxuICAgIFsyMjYsIDIyOSwgXCJOXCJdLFxyXG4gICAgWzIzMCwgMjMwLCBcIkFcIl0sXHJcbiAgICBbMjMxLCAyMzEsIFwiTlwiXSxcclxuICAgIFsyMzIsIDIzNCwgXCJBXCJdLFxyXG4gICAgWzIzNSwgMjM1LCBcIk5cIl0sXHJcbiAgICBbMjM2LCAyMzcsIFwiQVwiXSxcclxuICAgIFsyMzgsIDIzOSwgXCJOXCJdLFxyXG4gICAgWzI0MCwgMjQwLCBcIkFcIl0sXHJcbiAgICBbMjQxLCAyNDEsIFwiTlwiXSxcclxuICAgIFsyNDIsIDI0MywgXCJBXCJdLFxyXG4gICAgWzI0NCwgMjQ2LCBcIk5cIl0sXHJcbiAgICBbMjQ3LCAyNTAsIFwiQVwiXSxcclxuICAgIFsyNTEsIDI1MSwgXCJOXCJdLFxyXG4gICAgWzI1MiwgMjUyLCBcIkFcIl0sXHJcbiAgICBbMjUzLCAyNTMsIFwiTlwiXSxcclxuICAgIFsyNTQsIDI1NCwgXCJBXCJdLFxyXG4gICAgWzI1NSwgMjU2LCBcIk5cIl0sXHJcbiAgICBbMjU3LCAyNTcsIFwiQVwiXSxcclxuICAgIFsyNTgsIDI3MiwgXCJOXCJdLFxyXG4gICAgWzI3MywgMjczLCBcIkFcIl0sXHJcbiAgICBbMjc0LCAyNzQsIFwiTlwiXSxcclxuICAgIFsyNzUsIDI3NSwgXCJBXCJdLFxyXG4gICAgWzI3NiwgMjgyLCBcIk5cIl0sXHJcbiAgICBbMjgzLCAyODMsIFwiQVwiXSxcclxuICAgIFsyODQsIDI5MywgXCJOXCJdLFxyXG4gICAgWzI5NCwgMjk1LCBcIkFcIl0sXHJcbiAgICBbMjk2LCAyOTgsIFwiTlwiXSxcclxuICAgIFsyOTksIDI5OSwgXCJBXCJdLFxyXG4gICAgWzMwMCwgMzA0LCBcIk5cIl0sXHJcbiAgICBbMzA1LCAzMDcsIFwiQVwiXSxcclxuICAgIFszMDgsIDMxMSwgXCJOXCJdLFxyXG4gICAgWzMxMiwgMzEyLCBcIkFcIl0sXHJcbiAgICBbMzEzLCAzMTgsIFwiTlwiXSxcclxuICAgIFszMTksIDMyMiwgXCJBXCJdLFxyXG4gICAgWzMyMywgMzIzLCBcIk5cIl0sXHJcbiAgICBbMzI0LCAzMjQsIFwiQVwiXSxcclxuICAgIFszMjUsIDMyNywgXCJOXCJdLFxyXG4gICAgWzMyOCwgMzMxLCBcIkFcIl0sXHJcbiAgICBbMzMyLCAzMzIsIFwiTlwiXSxcclxuICAgIFszMzMsIDMzMywgXCJBXCJdLFxyXG4gICAgWzMzNCwgMzM3LCBcIk5cIl0sXHJcbiAgICBbMzM4LCAzMzksIFwiQVwiXSxcclxuICAgIFszNDAsIDM1NywgXCJOXCJdLFxyXG4gICAgWzM1OCwgMzU5LCBcIkFcIl0sXHJcbiAgICBbMzYwLCAzNjIsIFwiTlwiXSxcclxuICAgIFszNjMsIDM2MywgXCJBXCJdLFxyXG4gICAgWzM2NCwgNDYxLCBcIk5cIl0sXHJcbiAgICBbNDYyLCA0NjIsIFwiQVwiXSxcclxuICAgIFs0NjMsIDQ2MywgXCJOXCJdLFxyXG4gICAgWzQ2NCwgNDY0LCBcIkFcIl0sXHJcbiAgICBbNDY1LCA0NjUsIFwiTlwiXSxcclxuICAgIFs0NjYsIDQ2NiwgXCJBXCJdLFxyXG4gICAgWzQ2NywgNDY3LCBcIk5cIl0sXHJcbiAgICBbNDY4LCA0NjgsIFwiQVwiXSxcclxuICAgIFs0NjksIDQ2OSwgXCJOXCJdLFxyXG4gICAgWzQ3MCwgNDcwLCBcIkFcIl0sXHJcbiAgICBbNDcxLCA0NzEsIFwiTlwiXSxcclxuICAgIFs0NzIsIDQ3MiwgXCJBXCJdLFxyXG4gICAgWzQ3MywgNDczLCBcIk5cIl0sXHJcbiAgICBbNDc0LCA0NzQsIFwiQVwiXSxcclxuICAgIFs0NzUsIDQ3NSwgXCJOXCJdLFxyXG4gICAgWzQ3NiwgNDc2LCBcIkFcIl0sXHJcbiAgICBbNDc3LCA1OTIsIFwiTlwiXSxcclxuICAgIFs1OTMsIDU5MywgXCJBXCJdLFxyXG4gICAgWzU5NCwgNjA4LCBcIk5cIl0sXHJcbiAgICBbNjA5LCA2MDksIFwiQVwiXSxcclxuICAgIFs2MTAsIDcwNywgXCJOXCJdLFxyXG4gICAgWzcwOCwgNzA4LCBcIkFcIl0sXHJcbiAgICBbNzA5LCA3MTAsIFwiTlwiXSxcclxuICAgIFs3MTEsIDcxMSwgXCJBXCJdLFxyXG4gICAgWzcxMiwgNzEyLCBcIk5cIl0sXHJcbiAgICBbNzEzLCA3MTUsIFwiQVwiXSxcclxuICAgIFs3MTYsIDcxNiwgXCJOXCJdLFxyXG4gICAgWzcxNywgNzE3LCBcIkFcIl0sXHJcbiAgICBbNzE4LCA3MTksIFwiTlwiXSxcclxuICAgIFs3MjAsIDcyMCwgXCJBXCJdLFxyXG4gICAgWzcyMSwgNzI3LCBcIk5cIl0sXHJcbiAgICBbNzI4LCA3MzEsIFwiQVwiXSxcclxuICAgIFs3MzIsIDczMiwgXCJOXCJdLFxyXG4gICAgWzczMywgNzMzLCBcIkFcIl0sXHJcbiAgICBbNzM0LCA3MzQsIFwiTlwiXSxcclxuICAgIFs3MzUsIDczNSwgXCJBXCJdLFxyXG4gICAgWzczNiwgNzY3LCBcIk5cIl0sXHJcbiAgICBbNzY4LCA4NzksIFwiQVwiXSxcclxuICAgIFs4ODAsIDkxMiwgXCJOXCJdLFxyXG4gICAgWzkxMywgOTI5LCBcIkFcIl0sXHJcbiAgICBbOTMwLCA5MzAsIFwiTlwiXSxcclxuICAgIFs5MzEsIDkzNywgXCJBXCJdLFxyXG4gICAgWzkzOCwgOTQ0LCBcIk5cIl0sXHJcbiAgICBbOTQ1LCA5NjEsIFwiQVwiXSxcclxuICAgIFs5NjIsIDk2MiwgXCJOXCJdLFxyXG4gICAgWzk2MywgOTY5LCBcIkFcIl0sXHJcbiAgICBbOTcwLCAxMDI0LCBcIk5cIl0sXHJcbiAgICBbMTAyNSwgMTAyNSwgXCJBXCJdLFxyXG4gICAgWzEwMjYsIDEwMzksIFwiTlwiXSxcclxuICAgIFsxMDQwLCAxMTAzLCBcIkFcIl0sXHJcbiAgICBbMTEwNCwgMTEwNCwgXCJOXCJdLFxyXG4gICAgWzExMDUsIDExMDUsIFwiQVwiXSxcclxuICAgIFsxMTA2LCA0MzUxLCBcIk5cIl0sXHJcbiAgICBbNDM1MiwgNDQ0NywgXCJXXCJdLFxyXG4gICAgWzQ0NDgsIDgyMDcsIFwiTlwiXSxcclxuICAgIFs4MjA4LCA4MjA4LCBcIkFcIl0sXHJcbiAgICBbODIwOSwgODIxMCwgXCJOXCJdLFxyXG4gICAgWzgyMTEsIDgyMTQsIFwiQVwiXSxcclxuICAgIFs4MjE1LCA4MjE1LCBcIk5cIl0sXHJcbiAgICBbODIxNiwgODIxNywgXCJBXCJdLFxyXG4gICAgWzgyMTgsIDgyMTksIFwiTlwiXSxcclxuICAgIFs4MjIwLCA4MjIxLCBcIkFcIl0sXHJcbiAgICBbODIyMiwgODIyMywgXCJOXCJdLFxyXG4gICAgWzgyMjQsIDgyMjYsIFwiQVwiXSxcclxuICAgIFs4MjI3LCA4MjI3LCBcIk5cIl0sXHJcbiAgICBbODIyOCwgODIzMSwgXCJBXCJdLFxyXG4gICAgWzgyMzIsIDgyMzksIFwiTlwiXSxcclxuICAgIFs4MjQwLCA4MjQwLCBcIkFcIl0sXHJcbiAgICBbODI0MSwgODI0MSwgXCJOXCJdLFxyXG4gICAgWzgyNDIsIDgyNDMsIFwiQVwiXSxcclxuICAgIFs4MjQ0LCA4MjQ0LCBcIk5cIl0sXHJcbiAgICBbODI0NSwgODI0NSwgXCJBXCJdLFxyXG4gICAgWzgyNDYsIDgyNTAsIFwiTlwiXSxcclxuICAgIFs4MjUxLCA4MjUxLCBcIkFcIl0sXHJcbiAgICBbODI1MiwgODI1MywgXCJOXCJdLFxyXG4gICAgWzgyNTQsIDgyNTQsIFwiQVwiXSxcclxuICAgIFs4MjU1LCA4MzA3LCBcIk5cIl0sXHJcbiAgICBbODMwOCwgODMwOCwgXCJBXCJdLFxyXG4gICAgWzgzMDksIDgzMTgsIFwiTlwiXSxcclxuICAgIFs4MzE5LCA4MzE5LCBcIkFcIl0sXHJcbiAgICBbODMyMCwgODMyMCwgXCJOXCJdLFxyXG4gICAgWzgzMjEsIDgzMjQsIFwiQVwiXSxcclxuICAgIFs4MzI1LCA4MzYwLCBcIk5cIl0sXHJcbiAgICBbODM2MSwgODM2MSwgXCJIXCJdLFxyXG4gICAgWzgzNjIsIDgzNjMsIFwiTlwiXSxcclxuICAgIFs4MzY0LCA4MzY0LCBcIkFcIl0sXHJcbiAgICBbODM2NSwgODQ1MCwgXCJOXCJdLFxyXG4gICAgWzg0NTEsIDg0NTEsIFwiQVwiXSxcclxuICAgIFs4NDUyLCA4NDUyLCBcIk5cIl0sXHJcbiAgICBbODQ1MywgODQ1MywgXCJBXCJdLFxyXG4gICAgWzg0NTQsIDg0NTYsIFwiTlwiXSxcclxuICAgIFs4NDU3LCA4NDU3LCBcIkFcIl0sXHJcbiAgICBbODQ1OCwgODQ2NiwgXCJOXCJdLFxyXG4gICAgWzg0NjcsIDg0NjcsIFwiQVwiXSxcclxuICAgIFs4NDY4LCA4NDY5LCBcIk5cIl0sXHJcbiAgICBbODQ3MCwgODQ3MCwgXCJBXCJdLFxyXG4gICAgWzg0NzEsIDg0ODAsIFwiTlwiXSxcclxuICAgIFs4NDgxLCA4NDgyLCBcIkFcIl0sXHJcbiAgICBbODQ4MywgODQ4NSwgXCJOXCJdLFxyXG4gICAgWzg0ODYsIDg0ODYsIFwiQVwiXSxcclxuICAgIFs4NDg3LCA4NDkwLCBcIk5cIl0sXHJcbiAgICBbODQ5MSwgODQ5MSwgXCJBXCJdLFxyXG4gICAgWzg0OTIsIDg1MzAsIFwiTlwiXSxcclxuICAgIFs4NTMxLCA4NTMyLCBcIkFcIl0sXHJcbiAgICBbODUzMywgODUzOCwgXCJOXCJdLFxyXG4gICAgWzg1MzksIDg1NDIsIFwiQVwiXSxcclxuICAgIFs4NTQzLCA4NTQzLCBcIk5cIl0sXHJcbiAgICBbODU0NCwgODU1NSwgXCJBXCJdLFxyXG4gICAgWzg1NTYsIDg1NTksIFwiTlwiXSxcclxuICAgIFs4NTYwLCA4NTY5LCBcIkFcIl0sXHJcbiAgICBbODU3MCwgODU4NCwgXCJOXCJdLFxyXG4gICAgWzg1ODUsIDg1ODUsIFwiQVwiXSxcclxuICAgIFs4NTg2LCA4NTkxLCBcIk5cIl0sXHJcbiAgICBbODU5MiwgODYwMSwgXCJBXCJdLFxyXG4gICAgWzg2MDIsIDg2MzEsIFwiTlwiXSxcclxuICAgIFs4NjMyLCA4NjMzLCBcIkFcIl0sXHJcbiAgICBbODYzNCwgODY1NywgXCJOXCJdLFxyXG4gICAgWzg2NTgsIDg2NTgsIFwiQVwiXSxcclxuICAgIFs4NjU5LCA4NjU5LCBcIk5cIl0sXHJcbiAgICBbODY2MCwgODY2MCwgXCJBXCJdLFxyXG4gICAgWzg2NjEsIDg2NzgsIFwiTlwiXSxcclxuICAgIFs4Njc5LCA4Njc5LCBcIkFcIl0sXHJcbiAgICBbODY4MCwgODcwMywgXCJOXCJdLFxyXG4gICAgWzg3MDQsIDg3MDQsIFwiQVwiXSxcclxuICAgIFs4NzA1LCA4NzA1LCBcIk5cIl0sXHJcbiAgICBbODcwNiwgODcwNywgXCJBXCJdLFxyXG4gICAgWzg3MDgsIDg3MTAsIFwiTlwiXSxcclxuICAgIFs4NzExLCA4NzEyLCBcIkFcIl0sXHJcbiAgICBbODcxMywgODcxNCwgXCJOXCJdLFxyXG4gICAgWzg3MTUsIDg3MTUsIFwiQVwiXSxcclxuICAgIFs4NzE2LCA4NzE4LCBcIk5cIl0sXHJcbiAgICBbODcxOSwgODcxOSwgXCJBXCJdLFxyXG4gICAgWzg3MjAsIDg3MjAsIFwiTlwiXSxcclxuICAgIFs4NzIxLCA4NzIxLCBcIkFcIl0sXHJcbiAgICBbODcyMiwgODcyNCwgXCJOXCJdLFxyXG4gICAgWzg3MjUsIDg3MjUsIFwiQVwiXSxcclxuICAgIFs4NzI2LCA4NzI5LCBcIk5cIl0sXHJcbiAgICBbODczMCwgODczMCwgXCJBXCJdLFxyXG4gICAgWzg3MzEsIDg3MzIsIFwiTlwiXSxcclxuICAgIFs4NzMzLCA4NzM2LCBcIkFcIl0sXHJcbiAgICBbODczNywgODczOCwgXCJOXCJdLFxyXG4gICAgWzg3MzksIDg3MzksIFwiQVwiXSxcclxuICAgIFs4NzQwLCA4NzQwLCBcIk5cIl0sXHJcbiAgICBbODc0MSwgODc0MSwgXCJBXCJdLFxyXG4gICAgWzg3NDIsIDg3NDIsIFwiTlwiXSxcclxuICAgIFs4NzQzLCA4NzQ4LCBcIkFcIl0sXHJcbiAgICBbODc0OSwgODc0OSwgXCJOXCJdLFxyXG4gICAgWzg3NTAsIDg3NTAsIFwiQVwiXSxcclxuICAgIFs4NzUxLCA4NzU1LCBcIk5cIl0sXHJcbiAgICBbODc1NiwgODc1OSwgXCJBXCJdLFxyXG4gICAgWzg3NjAsIDg3NjMsIFwiTlwiXSxcclxuICAgIFs4NzY0LCA4NzY1LCBcIkFcIl0sXHJcbiAgICBbODc2NiwgODc3NSwgXCJOXCJdLFxyXG4gICAgWzg3NzYsIDg3NzYsIFwiQVwiXSxcclxuICAgIFs4Nzc3LCA4Nzc5LCBcIk5cIl0sXHJcbiAgICBbODc4MCwgODc4MCwgXCJBXCJdLFxyXG4gICAgWzg3ODEsIDg3ODUsIFwiTlwiXSxcclxuICAgIFs4Nzg2LCA4Nzg2LCBcIkFcIl0sXHJcbiAgICBbODc4NywgODc5OSwgXCJOXCJdLFxyXG4gICAgWzg4MDAsIDg4MDEsIFwiQVwiXSxcclxuICAgIFs4ODAyLCA4ODAzLCBcIk5cIl0sXHJcbiAgICBbODgwNCwgODgwNywgXCJBXCJdLFxyXG4gICAgWzg4MDgsIDg4MDksIFwiTlwiXSxcclxuICAgIFs4ODEwLCA4ODExLCBcIkFcIl0sXHJcbiAgICBbODgxMiwgODgxMywgXCJOXCJdLFxyXG4gICAgWzg4MTQsIDg4MTUsIFwiQVwiXSxcclxuICAgIFs4ODE2LCA4ODMzLCBcIk5cIl0sXHJcbiAgICBbODgzNCwgODgzNSwgXCJBXCJdLFxyXG4gICAgWzg4MzYsIDg4MzcsIFwiTlwiXSxcclxuICAgIFs4ODM4LCA4ODM5LCBcIkFcIl0sXHJcbiAgICBbODg0MCwgODg1MiwgXCJOXCJdLFxyXG4gICAgWzg4NTMsIDg4NTMsIFwiQVwiXSxcclxuICAgIFs4ODU0LCA4ODU2LCBcIk5cIl0sXHJcbiAgICBbODg1NywgODg1NywgXCJBXCJdLFxyXG4gICAgWzg4NTgsIDg4NjgsIFwiTlwiXSxcclxuICAgIFs4ODY5LCA4ODY5LCBcIkFcIl0sXHJcbiAgICBbODg3MCwgODg5NCwgXCJOXCJdLFxyXG4gICAgWzg4OTUsIDg4OTUsIFwiQVwiXSxcclxuICAgIFs4ODk2LCA4OTc3LCBcIk5cIl0sXHJcbiAgICBbODk3OCwgODk3OCwgXCJBXCJdLFxyXG4gICAgWzg5NzksIDg5ODUsIFwiTlwiXSxcclxuICAgIFs4OTg2LCA4OTg3LCBcIldcIl0sXHJcbiAgICBbODk4OCwgOTAwMCwgXCJOXCJdLFxyXG4gICAgWzkwMDEsIDkwMDIsIFwiV1wiXSxcclxuICAgIFs5MDAzLCA5MTkyLCBcIk5cIl0sXHJcbiAgICBbOTE5MywgOTE5NiwgXCJXXCJdLFxyXG4gICAgWzkxOTcsIDkxOTksIFwiTlwiXSxcclxuICAgIFs5MjAwLCA5MjAwLCBcIldcIl0sXHJcbiAgICBbOTIwMSwgOTIwMiwgXCJOXCJdLFxyXG4gICAgWzkyMDMsIDkyMDMsIFwiV1wiXSxcclxuICAgIFs5MjA0LCA5MzExLCBcIk5cIl0sXHJcbiAgICBbOTMxMiwgOTQ0OSwgXCJBXCJdLFxyXG4gICAgWzk0NTAsIDk0NTAsIFwiTlwiXSxcclxuICAgIFs5NDUxLCA5NTQ3LCBcIkFcIl0sXHJcbiAgICBbOTU0OCwgOTU1MSwgXCJOXCJdLFxyXG4gICAgWzk1NTIsIDk1ODcsIFwiQVwiXSxcclxuICAgIFs5NTg4LCA5NTk5LCBcIk5cIl0sXHJcbiAgICBbOTYwMCwgOTYxNSwgXCJBXCJdLFxyXG4gICAgWzk2MTYsIDk2MTcsIFwiTlwiXSxcclxuICAgIFs5NjE4LCA5NjIxLCBcIkFcIl0sXHJcbiAgICBbOTYyMiwgOTYzMSwgXCJOXCJdLFxyXG4gICAgWzk2MzIsIDk2MzMsIFwiQVwiXSxcclxuICAgIFs5NjM0LCA5NjM0LCBcIk5cIl0sXHJcbiAgICBbOTYzNSwgOTY0MSwgXCJBXCJdLFxyXG4gICAgWzk2NDIsIDk2NDksIFwiTlwiXSxcclxuICAgIFs5NjUwLCA5NjUxLCBcIkFcIl0sXHJcbiAgICBbOTY1MiwgOTY1MywgXCJOXCJdLFxyXG4gICAgWzk2NTQsIDk2NTUsIFwiQVwiXSxcclxuICAgIFs5NjU2LCA5NjU5LCBcIk5cIl0sXHJcbiAgICBbOTY2MCwgOTY2MSwgXCJBXCJdLFxyXG4gICAgWzk2NjIsIDk2NjMsIFwiTlwiXSxcclxuICAgIFs5NjY0LCA5NjY1LCBcIkFcIl0sXHJcbiAgICBbOTY2NiwgOTY2OSwgXCJOXCJdLFxyXG4gICAgWzk2NzAsIDk2NzIsIFwiQVwiXSxcclxuICAgIFs5NjczLCA5Njc0LCBcIk5cIl0sXHJcbiAgICBbOTY3NSwgOTY3NSwgXCJBXCJdLFxyXG4gICAgWzk2NzYsIDk2NzcsIFwiTlwiXSxcclxuICAgIFs5Njc4LCA5NjgxLCBcIkFcIl0sXHJcbiAgICBbOTY4MiwgOTY5NywgXCJOXCJdLFxyXG4gICAgWzk2OTgsIDk3MDEsIFwiQVwiXSxcclxuICAgIFs5NzAyLCA5NzEwLCBcIk5cIl0sXHJcbiAgICBbOTcxMSwgOTcxMSwgXCJBXCJdLFxyXG4gICAgWzk3MTIsIDk3MjQsIFwiTlwiXSxcclxuICAgIFs5NzI1LCA5NzI2LCBcIldcIl0sXHJcbiAgICBbOTcyNywgOTczMiwgXCJOXCJdLFxyXG4gICAgWzk3MzMsIDk3MzQsIFwiQVwiXSxcclxuICAgIFs5NzM1LCA5NzM2LCBcIk5cIl0sXHJcbiAgICBbOTczNywgOTczNywgXCJBXCJdLFxyXG4gICAgWzk3MzgsIDk3NDEsIFwiTlwiXSxcclxuICAgIFs5NzQyLCA5NzQzLCBcIkFcIl0sXHJcbiAgICBbOTc0NCwgOTc0NywgXCJOXCJdLFxyXG4gICAgWzk3NDgsIDk3NDksIFwiV1wiXSxcclxuICAgIFs5NzUwLCA5NzU1LCBcIk5cIl0sXHJcbiAgICBbOTc1NiwgOTc1NiwgXCJBXCJdLFxyXG4gICAgWzk3NTcsIDk3NTcsIFwiTlwiXSxcclxuICAgIFs5NzU4LCA5NzU4LCBcIkFcIl0sXHJcbiAgICBbOTc1OSwgOTc5MSwgXCJOXCJdLFxyXG4gICAgWzk3OTIsIDk3OTIsIFwiQVwiXSxcclxuICAgIFs5NzkzLCA5NzkzLCBcIk5cIl0sXHJcbiAgICBbOTc5NCwgOTc5NCwgXCJBXCJdLFxyXG4gICAgWzk3OTUsIDk3OTksIFwiTlwiXSxcclxuICAgIFs5ODAwLCA5ODExLCBcIldcIl0sXHJcbiAgICBbOTgxMiwgOTgyMywgXCJOXCJdLFxyXG4gICAgWzk4MjQsIDk4MjUsIFwiQVwiXSxcclxuICAgIFs5ODI2LCA5ODI2LCBcIk5cIl0sXHJcbiAgICBbOTgyNywgOTgyOSwgXCJBXCJdLFxyXG4gICAgWzk4MzAsIDk4MzAsIFwiTlwiXSxcclxuICAgIFs5ODMxLCA5ODM0LCBcIkFcIl0sXHJcbiAgICBbOTgzNSwgOTgzNSwgXCJOXCJdLFxyXG4gICAgWzk4MzYsIDk4MzcsIFwiQVwiXSxcclxuICAgIFs5ODM4LCA5ODM4LCBcIk5cIl0sXHJcbiAgICBbOTgzOSwgOTgzOSwgXCJBXCJdLFxyXG4gICAgWzk4NDAsIDk4NTQsIFwiTlwiXSxcclxuICAgIFs5ODU1LCA5ODU1LCBcIldcIl0sXHJcbiAgICBbOTg1NiwgOTg3NCwgXCJOXCJdLFxyXG4gICAgWzk4NzUsIDk4NzUsIFwiV1wiXSxcclxuICAgIFs5ODc2LCA5ODg1LCBcIk5cIl0sXHJcbiAgICBbOTg4NiwgOTg4NywgXCJBXCJdLFxyXG4gICAgWzk4ODgsIDk4ODgsIFwiTlwiXSxcclxuICAgIFs5ODg5LCA5ODg5LCBcIldcIl0sXHJcbiAgICBbOTg5MCwgOTg5NywgXCJOXCJdLFxyXG4gICAgWzk4OTgsIDk4OTksIFwiV1wiXSxcclxuICAgIFs5OTAwLCA5OTE2LCBcIk5cIl0sXHJcbiAgICBbOTkxNywgOTkxOCwgXCJXXCJdLFxyXG4gICAgWzk5MTksIDk5MTksIFwiQVwiXSxcclxuICAgIFs5OTIwLCA5OTIzLCBcIk5cIl0sXHJcbiAgICBbOTkyNCwgOTkyNSwgXCJXXCJdLFxyXG4gICAgWzk5MjYsIDk5MzMsIFwiQVwiXSxcclxuICAgIFs5OTM0LCA5OTM0LCBcIldcIl0sXHJcbiAgICBbOTkzNSwgOTkzOSwgXCJBXCJdLFxyXG4gICAgWzk5NDAsIDk5NDAsIFwiV1wiXSxcclxuICAgIFs5OTQxLCA5OTUzLCBcIkFcIl0sXHJcbiAgICBbOTk1NCwgOTk1NCwgXCJOXCJdLFxyXG4gICAgWzk5NTUsIDk5NTUsIFwiQVwiXSxcclxuICAgIFs5OTU2LCA5OTU5LCBcIk5cIl0sXHJcbiAgICBbOTk2MCwgOTk2MSwgXCJBXCJdLFxyXG4gICAgWzk5NjIsIDk5NjIsIFwiV1wiXSxcclxuICAgIFs5OTYzLCA5OTY5LCBcIkFcIl0sXHJcbiAgICBbOTk3MCwgOTk3MSwgXCJXXCJdLFxyXG4gICAgWzk5NzIsIDk5NzIsIFwiQVwiXSxcclxuICAgIFs5OTczLCA5OTczLCBcIldcIl0sXHJcbiAgICBbOTk3NCwgOTk3NywgXCJBXCJdLFxyXG4gICAgWzk5NzgsIDk5NzgsIFwiV1wiXSxcclxuICAgIFs5OTc5LCA5OTgwLCBcIkFcIl0sXHJcbiAgICBbOTk4MSwgOTk4MSwgXCJXXCJdLFxyXG4gICAgWzk5ODIsIDk5ODMsIFwiQVwiXSxcclxuICAgIFs5OTg0LCA5OTg4LCBcIk5cIl0sXHJcbiAgICBbOTk4OSwgOTk4OSwgXCJXXCJdLFxyXG4gICAgWzk5OTAsIDk5OTMsIFwiTlwiXSxcclxuICAgIFs5OTk0LCA5OTk1LCBcIldcIl0sXHJcbiAgICBbOTk5NiwgMTAwMjMsIFwiTlwiXSxcclxuICAgIFsxMDAyNCwgMTAwMjQsIFwiV1wiXSxcclxuICAgIFsxMDAyNSwgMTAwNDQsIFwiTlwiXSxcclxuICAgIFsxMDA0NSwgMTAwNDUsIFwiQVwiXSxcclxuICAgIFsxMDA0NiwgMTAwNTksIFwiTlwiXSxcclxuICAgIFsxMDA2MCwgMTAwNjAsIFwiV1wiXSxcclxuICAgIFsxMDA2MSwgMTAwNjEsIFwiTlwiXSxcclxuICAgIFsxMDA2MiwgMTAwNjIsIFwiV1wiXSxcclxuICAgIFsxMDA2MywgMTAwNjYsIFwiTlwiXSxcclxuICAgIFsxMDA2NywgMTAwNjksIFwiV1wiXSxcclxuICAgIFsxMDA3MCwgMTAwNzAsIFwiTlwiXSxcclxuICAgIFsxMDA3MSwgMTAwNzEsIFwiV1wiXSxcclxuICAgIFsxMDA3MiwgMTAxMDEsIFwiTlwiXSxcclxuICAgIFsxMDEwMiwgMTAxMTEsIFwiQVwiXSxcclxuICAgIFsxMDExMiwgMTAxMzIsIFwiTlwiXSxcclxuICAgIFsxMDEzMywgMTAxMzUsIFwiV1wiXSxcclxuICAgIFsxMDEzNiwgMTAxNTksIFwiTlwiXSxcclxuICAgIFsxMDE2MCwgMTAxNjAsIFwiV1wiXSxcclxuICAgIFsxMDE2MSwgMTAxNzQsIFwiTlwiXSxcclxuICAgIFsxMDE3NSwgMTAxNzUsIFwiV1wiXSxcclxuICAgIFsxMDE3NiwgMTAyMTMsIFwiTlwiXSxcclxuICAgIFsxMDIxNCwgMTAyMjEsIFwiTmFcIl0sXHJcbiAgICBbMTAyMjIsIDEwNjI4LCBcIk5cIl0sXHJcbiAgICBbMTA2MjksIDEwNjMwLCBcIk5hXCJdLFxyXG4gICAgWzEwNjMxLCAxMTAzNCwgXCJOXCJdLFxyXG4gICAgWzExMDM1LCAxMTAzNiwgXCJXXCJdLFxyXG4gICAgWzExMDM3LCAxMTA4NywgXCJOXCJdLFxyXG4gICAgWzExMDg4LCAxMTA4OCwgXCJXXCJdLFxyXG4gICAgWzExMDg5LCAxMTA5MiwgXCJOXCJdLFxyXG4gICAgWzExMDkzLCAxMTA5MywgXCJXXCJdLFxyXG4gICAgWzExMDk0LCAxMTA5NywgXCJBXCJdLFxyXG4gICAgWzExMDk4LCAxMTkwMywgXCJOXCJdLFxyXG4gICAgWzExOTA0LCAxMTkyOSwgXCJXXCJdLFxyXG4gICAgWzExOTMwLCAxMTkzMCwgXCJOXCJdLFxyXG4gICAgWzExOTMxLCAxMjAxOSwgXCJXXCJdLFxyXG4gICAgWzEyMDIwLCAxMjAzMSwgXCJOXCJdLFxyXG4gICAgWzEyMDMyLCAxMjI0NSwgXCJXXCJdLFxyXG4gICAgWzEyMjQ2LCAxMjI3MSwgXCJOXCJdLFxyXG4gICAgWzEyMjcyLCAxMjI4MywgXCJXXCJdLFxyXG4gICAgWzEyMjg0LCAxMjI4NywgXCJOXCJdLFxyXG4gICAgWzEyMjg4LCAxMjI4OCwgXCJGXCJdLFxyXG4gICAgWzEyMjg5LCAxMjM1MCwgXCJXXCJdLFxyXG4gICAgWzEyMzUxLCAxMjM1MiwgXCJOXCJdLFxyXG4gICAgWzEyMzUzLCAxMjQzOCwgXCJXXCJdLFxyXG4gICAgWzEyNDM5LCAxMjQ0MCwgXCJOXCJdLFxyXG4gICAgWzEyNDQxLCAxMjU0MywgXCJXXCJdLFxyXG4gICAgWzEyNTQ0LCAxMjU0OCwgXCJOXCJdLFxyXG4gICAgWzEyNTQ5LCAxMjU5MSwgXCJXXCJdLFxyXG4gICAgWzEyNTkyLCAxMjU5MiwgXCJOXCJdLFxyXG4gICAgWzEyNTkzLCAxMjY4NiwgXCJXXCJdLFxyXG4gICAgWzEyNjg3LCAxMjY4NywgXCJOXCJdLFxyXG4gICAgWzEyNjg4LCAxMjc3MSwgXCJXXCJdLFxyXG4gICAgWzEyNzcyLCAxMjc4MywgXCJOXCJdLFxyXG4gICAgWzEyNzg0LCAxMjgzMCwgXCJXXCJdLFxyXG4gICAgWzEyODMxLCAxMjgzMSwgXCJOXCJdLFxyXG4gICAgWzEyODMyLCAxMjg3MSwgXCJXXCJdLFxyXG4gICAgWzEyODcyLCAxMjg3OSwgXCJBXCJdLFxyXG4gICAgWzEyODgwLCAxOTkwMywgXCJXXCJdLFxyXG4gICAgWzE5OTA0LCAxOTk2NywgXCJOXCJdLFxyXG4gICAgWzE5OTY4LCA0MjEyNCwgXCJXXCJdLFxyXG4gICAgWzQyMTI1LCA0MjEyNywgXCJOXCJdLFxyXG4gICAgWzQyMTI4LCA0MjE4MiwgXCJXXCJdLFxyXG4gICAgWzQyMTgzLCA0MzM1OSwgXCJOXCJdLFxyXG4gICAgWzQzMzYwLCA0MzM4OCwgXCJXXCJdLFxyXG4gICAgWzQzMzg5LCA0NDAzMSwgXCJOXCJdLFxyXG4gICAgWzQ0MDMyLCA1NTIwMywgXCJXXCJdLFxyXG4gICAgWzU1MjA0LCA1NzM0MywgXCJOXCJdLFxyXG4gICAgWzU3MzQ0LCA2Mzc0MywgXCJBXCJdLFxyXG4gICAgWzYzNzQ0LCA2NDI1NSwgXCJXXCJdLFxyXG4gICAgWzY0MjU2LCA2NTAyMywgXCJOXCJdLFxyXG4gICAgWzY1MDI0LCA2NTAzOSwgXCJBXCJdLFxyXG4gICAgWzY1MDQwLCA2NTA0OSwgXCJXXCJdLFxyXG4gICAgWzY1MDUwLCA2NTA3MSwgXCJOXCJdLFxyXG4gICAgWzY1MDcyLCA2NTEwNiwgXCJXXCJdLFxyXG4gICAgWzY1MTA3LCA2NTEwNywgXCJOXCJdLFxyXG4gICAgWzY1MTA4LCA2NTEyNiwgXCJXXCJdLFxyXG4gICAgWzY1MTI3LCA2NTEyNywgXCJOXCJdLFxyXG4gICAgWzY1MTI4LCA2NTEzMSwgXCJXXCJdLFxyXG4gICAgWzY1MTMyLCA2NTI4MCwgXCJOXCJdLFxyXG4gICAgWzY1MjgxLCA2NTM3NiwgXCJGXCJdLFxyXG4gICAgWzY1Mzc3LCA2NTQ3MCwgXCJIXCJdLFxyXG4gICAgWzY1NDcxLCA2NTQ3MywgXCJOXCJdLFxyXG4gICAgWzY1NDc0LCA2NTQ3OSwgXCJIXCJdLFxyXG4gICAgWzY1NDgwLCA2NTQ4MSwgXCJOXCJdLFxyXG4gICAgWzY1NDgyLCA2NTQ4NywgXCJIXCJdLFxyXG4gICAgWzY1NDg4LCA2NTQ4OSwgXCJOXCJdLFxyXG4gICAgWzY1NDkwLCA2NTQ5NSwgXCJIXCJdLFxyXG4gICAgWzY1NDk2LCA2NTQ5NywgXCJOXCJdLFxyXG4gICAgWzY1NDk4LCA2NTUwMCwgXCJIXCJdLFxyXG4gICAgWzY1NTAxLCA2NTUwMywgXCJOXCJdLFxyXG4gICAgWzY1NTA0LCA2NTUxMCwgXCJGXCJdLFxyXG4gICAgWzY1NTExLCA2NTUxMSwgXCJOXCJdLFxyXG4gICAgWzY1NTEyLCA2NTUxOCwgXCJIXCJdLFxyXG4gICAgWzY1NTE5LCA2NTUzMiwgXCJOXCJdLFxyXG4gICAgWzY1NTMzLCA2NTUzMywgXCJBXCJdLFxyXG4gICAgWzY1NTM0LCA5NDE3NSwgXCJOXCJdLFxyXG4gICAgWzk0MTc2LCA5NDE4MCwgXCJXXCJdLFxyXG4gICAgWzk0MTgxLCA5NDE5MSwgXCJOXCJdLFxyXG4gICAgWzk0MTkyLCA5NDE5MywgXCJXXCJdLFxyXG4gICAgWzk0MTk0LCA5NDIwNywgXCJOXCJdLFxyXG4gICAgWzk0MjA4LCAxMDAzNDMsIFwiV1wiXSxcclxuICAgIFsxMDAzNDQsIDEwMDM1MSwgXCJOXCJdLFxyXG4gICAgWzEwMDM1MiwgMTAxNTg5LCBcIldcIl0sXHJcbiAgICBbMTAxNTkwLCAxMDE2MzEsIFwiTlwiXSxcclxuICAgIFsxMDE2MzIsIDEwMTY0MCwgXCJXXCJdLFxyXG4gICAgWzEwMTY0MSwgMTEwNTkxLCBcIk5cIl0sXHJcbiAgICBbMTEwNTkyLCAxMTA4NzgsIFwiV1wiXSxcclxuICAgIFsxMTA4NzksIDExMDkyNywgXCJOXCJdLFxyXG4gICAgWzExMDkyOCwgMTEwOTMwLCBcIldcIl0sXHJcbiAgICBbMTEwOTMxLCAxMTA5NDcsIFwiTlwiXSxcclxuICAgIFsxMTA5NDgsIDExMDk1MSwgXCJXXCJdLFxyXG4gICAgWzExMDk1MiwgMTEwOTU5LCBcIk5cIl0sXHJcbiAgICBbMTEwOTYwLCAxMTEzNTUsIFwiV1wiXSxcclxuICAgIFsxMTEzNTYsIDEyNjk3OSwgXCJOXCJdLFxyXG4gICAgWzEyNjk4MCwgMTI2OTgwLCBcIldcIl0sXHJcbiAgICBbMTI2OTgxLCAxMjcxODIsIFwiTlwiXSxcclxuICAgIFsxMjcxODMsIDEyNzE4MywgXCJXXCJdLFxyXG4gICAgWzEyNzE4NCwgMTI3MjMxLCBcIk5cIl0sXHJcbiAgICBbMTI3MjMyLCAxMjcyNDIsIFwiQVwiXSxcclxuICAgIFsxMjcyNDMsIDEyNzI0NywgXCJOXCJdLFxyXG4gICAgWzEyNzI0OCwgMTI3Mjc3LCBcIkFcIl0sXHJcbiAgICBbMTI3Mjc4LCAxMjcyNzksIFwiTlwiXSxcclxuICAgIFsxMjcyODAsIDEyNzMzNywgXCJBXCJdLFxyXG4gICAgWzEyNzMzOCwgMTI3MzQzLCBcIk5cIl0sXHJcbiAgICBbMTI3MzQ0LCAxMjczNzMsIFwiQVwiXSxcclxuICAgIFsxMjczNzQsIDEyNzM3NCwgXCJXXCJdLFxyXG4gICAgWzEyNzM3NSwgMTI3Mzc2LCBcIkFcIl0sXHJcbiAgICBbMTI3Mzc3LCAxMjczODYsIFwiV1wiXSxcclxuICAgIFsxMjczODcsIDEyNzQwNCwgXCJBXCJdLFxyXG4gICAgWzEyNzQwNSwgMTI3NDg3LCBcIk5cIl0sXHJcbiAgICBbMTI3NDg4LCAxMjc0OTAsIFwiV1wiXSxcclxuICAgIFsxMjc0OTEsIDEyNzUwMywgXCJOXCJdLFxyXG4gICAgWzEyNzUwNCwgMTI3NTQ3LCBcIldcIl0sXHJcbiAgICBbMTI3NTQ4LCAxMjc1NTEsIFwiTlwiXSxcclxuICAgIFsxMjc1NTIsIDEyNzU2MCwgXCJXXCJdLFxyXG4gICAgWzEyNzU2MSwgMTI3NTY3LCBcIk5cIl0sXHJcbiAgICBbMTI3NTY4LCAxMjc1NjksIFwiV1wiXSxcclxuICAgIFsxMjc1NzAsIDEyNzU4MywgXCJOXCJdLFxyXG4gICAgWzEyNzU4NCwgMTI3NTg5LCBcIldcIl0sXHJcbiAgICBbMTI3NTkwLCAxMjc3NDMsIFwiTlwiXSxcclxuICAgIFsxMjc3NDQsIDEyNzc3NiwgXCJXXCJdLFxyXG4gICAgWzEyNzc3NywgMTI3Nzg4LCBcIk5cIl0sXHJcbiAgICBbMTI3Nzg5LCAxMjc3OTcsIFwiV1wiXSxcclxuICAgIFsxMjc3OTgsIDEyNzc5OCwgXCJOXCJdLFxyXG4gICAgWzEyNzc5OSwgMTI3ODY4LCBcIldcIl0sXHJcbiAgICBbMTI3ODY5LCAxMjc4NjksIFwiTlwiXSxcclxuICAgIFsxMjc4NzAsIDEyNzg5MSwgXCJXXCJdLFxyXG4gICAgWzEyNzg5MiwgMTI3OTAzLCBcIk5cIl0sXHJcbiAgICBbMTI3OTA0LCAxMjc5NDYsIFwiV1wiXSxcclxuICAgIFsxMjc5NDcsIDEyNzk1MCwgXCJOXCJdLFxyXG4gICAgWzEyNzk1MSwgMTI3OTU1LCBcIldcIl0sXHJcbiAgICBbMTI3OTU2LCAxMjc5NjcsIFwiTlwiXSxcclxuICAgIFsxMjc5NjgsIDEyNzk4NCwgXCJXXCJdLFxyXG4gICAgWzEyNzk4NSwgMTI3OTg3LCBcIk5cIl0sXHJcbiAgICBbMTI3OTg4LCAxMjc5ODgsIFwiV1wiXSxcclxuICAgIFsxMjc5ODksIDEyNzk5MSwgXCJOXCJdLFxyXG4gICAgWzEyNzk5MiwgMTI4MDYyLCBcIldcIl0sXHJcbiAgICBbMTI4MDYzLCAxMjgwNjMsIFwiTlwiXSxcclxuICAgIFsxMjgwNjQsIDEyODA2NCwgXCJXXCJdLFxyXG4gICAgWzEyODA2NSwgMTI4MDY1LCBcIk5cIl0sXHJcbiAgICBbMTI4MDY2LCAxMjgyNTIsIFwiV1wiXSxcclxuICAgIFsxMjgyNTMsIDEyODI1NCwgXCJOXCJdLFxyXG4gICAgWzEyODI1NSwgMTI4MzE3LCBcIldcIl0sXHJcbiAgICBbMTI4MzE4LCAxMjgzMzAsIFwiTlwiXSxcclxuICAgIFsxMjgzMzEsIDEyODMzNCwgXCJXXCJdLFxyXG4gICAgWzEyODMzNSwgMTI4MzM1LCBcIk5cIl0sXHJcbiAgICBbMTI4MzM2LCAxMjgzNTksIFwiV1wiXSxcclxuICAgIFsxMjgzNjAsIDEyODM3NywgXCJOXCJdLFxyXG4gICAgWzEyODM3OCwgMTI4Mzc4LCBcIldcIl0sXHJcbiAgICBbMTI4Mzc5LCAxMjg0MDQsIFwiTlwiXSxcclxuICAgIFsxMjg0MDUsIDEyODQwNiwgXCJXXCJdLFxyXG4gICAgWzEyODQwNywgMTI4NDE5LCBcIk5cIl0sXHJcbiAgICBbMTI4NDIwLCAxMjg0MjAsIFwiV1wiXSxcclxuICAgIFsxMjg0MjEsIDEyODUwNiwgXCJOXCJdLFxyXG4gICAgWzEyODUwNywgMTI4NTkxLCBcIldcIl0sXHJcbiAgICBbMTI4NTkyLCAxMjg2MzksIFwiTlwiXSxcclxuICAgIFsxMjg2NDAsIDEyODcwOSwgXCJXXCJdLFxyXG4gICAgWzEyODcxMCwgMTI4NzE1LCBcIk5cIl0sXHJcbiAgICBbMTI4NzE2LCAxMjg3MTYsIFwiV1wiXSxcclxuICAgIFsxMjg3MTcsIDEyODcxOSwgXCJOXCJdLFxyXG4gICAgWzEyODcyMCwgMTI4NzIyLCBcIldcIl0sXHJcbiAgICBbMTI4NzIzLCAxMjg3MjQsIFwiTlwiXSxcclxuICAgIFsxMjg3MjUsIDEyODcyNywgXCJXXCJdLFxyXG4gICAgWzEyODcyOCwgMTI4NzQ2LCBcIk5cIl0sXHJcbiAgICBbMTI4NzQ3LCAxMjg3NDgsIFwiV1wiXSxcclxuICAgIFsxMjg3NDksIDEyODc1NSwgXCJOXCJdLFxyXG4gICAgWzEyODc1NiwgMTI4NzY0LCBcIldcIl0sXHJcbiAgICBbMTI4NzY1LCAxMjg5OTEsIFwiTlwiXSxcclxuICAgIFsxMjg5OTIsIDEyOTAwMywgXCJXXCJdLFxyXG4gICAgWzEyOTAwNCwgMTI5MjkxLCBcIk5cIl0sXHJcbiAgICBbMTI5MjkyLCAxMjkzMzgsIFwiV1wiXSxcclxuICAgIFsxMjkzMzksIDEyOTMzOSwgXCJOXCJdLFxyXG4gICAgWzEyOTM0MCwgMTI5MzQ5LCBcIldcIl0sXHJcbiAgICBbMTI5MzUwLCAxMjkzNTAsIFwiTlwiXSxcclxuICAgIFsxMjkzNTEsIDEyOTQwMCwgXCJXXCJdLFxyXG4gICAgWzEyOTQwMSwgMTI5NDAxLCBcIk5cIl0sXHJcbiAgICBbMTI5NDAyLCAxMjk0ODMsIFwiV1wiXSxcclxuICAgIFsxMjk0ODQsIDEyOTQ4NCwgXCJOXCJdLFxyXG4gICAgWzEyOTQ4NSwgMTI5NTM1LCBcIldcIl0sXHJcbiAgICBbMTI5NTM2LCAxMjk2NDcsIFwiTlwiXSxcclxuICAgIFsxMjk2NDgsIDEyOTY1MiwgXCJXXCJdLFxyXG4gICAgWzEyOTY1MywgMTI5NjU1LCBcIk5cIl0sXHJcbiAgICBbMTI5NjU2LCAxMjk2NTgsIFwiV1wiXSxcclxuICAgIFsxMjk2NTksIDEyOTY2MywgXCJOXCJdLFxyXG4gICAgWzEyOTY2NCwgMTI5NjcwLCBcIldcIl0sXHJcbiAgICBbMTI5NjcxLCAxMjk2NzksIFwiTlwiXSxcclxuICAgIFsxMjk2ODAsIDEyOTcwNCwgXCJXXCJdLFxyXG4gICAgWzEyOTcwNSwgMTI5NzExLCBcIk5cIl0sXHJcbiAgICBbMTI5NzEyLCAxMjk3MTgsIFwiV1wiXSxcclxuICAgIFsxMjk3MTksIDEyOTcyNywgXCJOXCJdLFxyXG4gICAgWzEyOTcyOCwgMTI5NzMwLCBcIldcIl0sXHJcbiAgICBbMTI5NzMxLCAxMjk3NDMsIFwiTlwiXSxcclxuICAgIFsxMjk3NDQsIDEyOTc1MCwgXCJXXCJdLFxyXG4gICAgWzEyOTc1MSwgMTMxMDcxLCBcIk5cIl0sXHJcbiAgICBbMTMxMDcyLCAxOTY2MDUsIFwiV1wiXSxcclxuICAgIFsxOTY2MDYsIDE5NjYwNywgXCJOXCJdLFxyXG4gICAgWzE5NjYwOCwgMjYyMTQxLCBcIldcIl0sXHJcbiAgICBbMjYyMTQyLCA5MTc3NTksIFwiTlwiXSxcclxuICAgIFs5MTc3NjAsIDkxNzk5OSwgXCJBXCJdLFxyXG4gICAgWzkxODAwMCwgOTgzMDM5LCBcIk5cIl0sXHJcbiAgICBbOTgzMDQwLCAxMDQ4NTczLCBcIkFcIl0sXHJcbiAgICBbMTA0ODU3NCwgMTA0ODU3NSwgXCJOXCJdLFxyXG4gICAgWzEwNDg1NzYsIDExMTQxMDksIFwiQVwiXSxcclxuICAgIFsxMTE0MTEwLCAxMTE0MTExLCBcIk5cIl0sXHJcbl07XHJcbi8qIEVORCAqL1xyXG52YXIgdmVyc2lvbiA9IFwiMTMuMC4wXCI7XG5cbi8qKlxyXG4gKiBHZXRzIHRoZSBFQVcgcHJvcGVydHkgb2YgYSBjb2RlIHBvaW50LlxyXG4gKiBAcGFyYW0gY29kZVBvaW50IENvZGUgcG9pbnRcclxuICogQHJldHVybiBUaGUgRUFXIHByb3BlcnR5IG9mIHRoZSBjb2RlIHBvaW50XHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRFQVdPZkNvZGVQb2ludChjb2RlUG9pbnQpIHtcclxuICAgIHZhciBtaW4gPSAwO1xyXG4gICAgdmFyIG1heCA9IGRlZnMubGVuZ3RoIC0gMTtcclxuICAgIHdoaWxlIChtaW4gIT09IG1heCkge1xyXG4gICAgICAgIHZhciBpID0gbWluICsgKChtYXggLSBtaW4pID4+IDEpO1xyXG4gICAgICAgIHZhciBfYSA9IGRlZnNbaV0sIHN0YXJ0ID0gX2FbMF0sIGVuZCA9IF9hWzFdLCBwcm9wID0gX2FbMl07XHJcbiAgICAgICAgaWYgKGNvZGVQb2ludCA8IHN0YXJ0KSB7XHJcbiAgICAgICAgICAgIG1heCA9IGkgLSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjb2RlUG9pbnQgPiBlbmQpIHtcclxuICAgICAgICAgICAgbWluID0gaSArIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvcDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVmc1ttaW5dWzJdO1xyXG59XHJcbi8qKlxyXG4gKiBHZXRzIHRoZSBFQVcgcHJvcGVydHkgb2YgYSBjaGFyYWN0ZXIuXHJcbiAqIEBwYXJhbSBzdHIgQ2hhcmFjdGVyIHN0cmluZ1xyXG4gKiBAcGFyYW0gcG9zIENoYXJhY3RlciBwb3NpdGlvbiAoaW4gY29kZSB1bml0KSAoZGVmYXVsdCA9IDApXHJcbiAqIEByZXR1cm4gVGhlIEVBVyBwcm9wZXJ0eSBvZiB0aGUgY2hhcmFjdGVyXHJcbiAqIEBleGFtcGxlXHJcbiAqIGltcG9ydCB7IGdldEVBVyB9IGZyb20gXCJtZWF3XCI7XHJcbiAqXHJcbiAqIC8vIE5hcnJvd1xyXG4gKiBhc3NlcnQoZ2V0RUFXKFwiQVwiKSA9PT0gXCJOYVwiKTtcclxuICogLy8gV2lkZVxyXG4gKiBhc3NlcnQoZ2V0RUFXKFwi44GCXCIpID09PSBcIldcIik7XHJcbiAqIGFzc2VydChnZXRFQVcoXCLlrolcIikgPT09IFwiV1wiKTtcclxuICogYXNzZXJ0KGdldEVBVyhcIvCfjaNcIikgPT09IFwiV1wiKTtcclxuICogLy8gRnVsbHdpZHRoXHJcbiAqIGFzc2VydChnZXRFQVcoXCLvvKFcIikgPT09IFwiRlwiKTtcclxuICogLy8gSGFsZndpZHRoXHJcbiAqIGFzc2VydChnZXRFQVcoXCLvvbFcIikgPT09IFwiSFwiKTtcclxuICogLy8gQW1iaWd1b3VzXHJcbiAqIGFzc2VydChnZXRFQVcoXCLiiIBcIikgPT09IFwiQVwiKTtcclxuICogYXNzZXJ0KGdldEVBVyhcIuKGklwiKSA9PT0gXCJBXCIpO1xyXG4gKiBhc3NlcnQoZ2V0RUFXKFwizqlcIikgPT09IFwiQVwiKTtcclxuICogYXNzZXJ0KGdldEVBVyhcItCvXCIpID09PSBcIkFcIik7XHJcbiAqIC8vIE5ldXRyYWxcclxuICogYXNzZXJ0KGdldEVBVyhcIuKEtVwiKSA9PT0gXCJOXCIpO1xyXG4gKlxyXG4gKiAvLyBjaGFyYWN0ZXIgcG9zaXRpb24gKGluIGNvZGUgdW5pdCkgY2FuIGJlIHNwZWNpZmllZFxyXG4gKiBhc3NlcnQoZ2V0RUFXKFwi4oS1QeOBgu+8oe+9seKIgFwiLCAyKSA9PT0gXCJXXCIpO1xyXG4gKi9cclxuZnVuY3Rpb24gZ2V0RUFXKHN0ciwgcG9zKSB7XHJcbiAgICBpZiAocG9zID09PSB2b2lkIDApIHsgcG9zID0gMDsgfVxyXG4gICAgdmFyIGNvZGVQb2ludCA9IHN0ci5jb2RlUG9pbnRBdChwb3MpO1xyXG4gICAgaWYgKGNvZGVQb2ludCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHJldHVybiBnZXRFQVdPZkNvZGVQb2ludChjb2RlUG9pbnQpO1xyXG59XG5cbnZhciBkZWZhdWx0V2lkdGhzID0ge1xyXG4gICAgTjogMSxcclxuICAgIE5hOiAxLFxyXG4gICAgVzogMixcclxuICAgIEY6IDIsXHJcbiAgICBIOiAxLFxyXG4gICAgQTogMSxcclxufTtcclxuLyoqXHJcbiAqIENvbXB1dGVzIHRoZSB3aWR0aCBvZiBhIHN0cmluZyBiYXNlZCBvbiB0aGUgRUFXIHByb3BlcnRpZXMgb2YgdGhlIGNoYXJhY3RlcnMuXHJcbiAqIEJ5IGRlZmF1bHQsIGNoYXJhY3RlcnMgd2l0aCBwcm9wZXJ0eSBXaWRlIChXKSBvciBGdWxsd2lkdGggKEYpIGFyZSB0cmVhdGVkIGFzIHdpZGUgKD0gMilcclxuICogYW5kIG90aGVycyBhcmUgYXMgbmFycm93ICg9IDEpLlxyXG4gKiBAcGFyYW0gc3RyIENoYXJhY3RlciBzdHJpbmdcclxuICogQHBhcmFtIHdpZHRocyBBbiBvYmplY3QgdGhhdCBtYXBzIEVBVyBwcm9wZXJ0aWVzIHRvIGNoYXJhY3RlciB3aWR0aHNcclxuICogQHJldHVybiBUaGUgY29tcHV0ZWQgd2lkdGhcclxuICogQGV4YW1wbGVcclxuICogaW1wb3J0IHsgY29tcHV0ZVdpZHRoIH0gZnJvbSBcIm1lYXdcIjtcclxuICpcclxuICogYXNzZXJ0KGNvbXB1dGVXaWR0aChcIkHjgYLwn42jzqlcIikgPT09IDYpO1xyXG4gKiAvLyBjaGFyYWN0ZXIgd2lkdGggZm9yIGVhY2ggRUFXIHByb3BlcnR5IGNhbiBiZSBjdXN0b21pemVkXHJcbiAqIGFzc2VydChjb21wdXRlV2lkdGgoXCJB44GC8J+No86pXCIsIHsgXCJBXCI6IDIgfSkgPT09IDcpO1xyXG4gKi9cclxuZnVuY3Rpb24gY29tcHV0ZVdpZHRoKHN0ciwgd2lkdGhzKSB7XHJcbiAgICB2YXIgd2lkdGggPSAwO1xyXG4gICAgZm9yICh2YXIgX2kgPSAwLCBzdHJfMSA9IHN0cjsgX2kgPCBzdHJfMS5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICB2YXIgY2hhciA9IHN0cl8xW19pXTtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvbiAtLSBjaGFyIGNhbm5vdCBiZSBlbXB0eVxyXG4gICAgICAgIHZhciBlYXcgPSBnZXRFQVcoY2hhcik7XHJcbiAgICAgICAgd2lkdGggKz0gKHdpZHRocyAmJiB3aWR0aHNbZWF3XSkgfHwgZGVmYXVsdFdpZHRoc1tlYXddO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdpZHRoO1xyXG59XG5cbmV4cG9ydCB7IGNvbXB1dGVXaWR0aCwgdmVyc2lvbiBhcyBlYXdWZXJzaW9uLCBnZXRFQVcgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5tb3ZlQ29sdW1uID0gZXhwb3J0cy5kZWxldGVDb2x1bW4gPSBleHBvcnRzLmluc2VydENvbHVtbiA9IGV4cG9ydHMubW92ZVJvdyA9IGV4cG9ydHMuZGVsZXRlUm93ID0gZXhwb3J0cy5pbnNlcnRSb3cgPSBleHBvcnRzLmFsdGVyQWxpZ25tZW50ID0gZXhwb3J0cy5mb3JtYXRUYWJsZSA9IGV4cG9ydHMuRm9ybWF0VHlwZSA9IGV4cG9ydHMuX3dlYWtGb3JtYXRUYWJsZSA9IGV4cG9ydHMuX2Zvcm1hdFRhYmxlID0gZXhwb3J0cy5fcGFkVGV4dCA9IGV4cG9ydHMuX2FsaWduVGV4dCA9IGV4cG9ydHMuX2NvbXB1dGVUZXh0V2lkdGggPSBleHBvcnRzLmNvbXBsZXRlVGFibGUgPSBleHBvcnRzLl9leHRlbmRBcnJheSA9IGV4cG9ydHMuX2RlbGltaXRlclRleHQgPSB2b2lkIDA7XG5jb25zdCBhbGlnbm1lbnRfMSA9IHJlcXVpcmUoXCIuL2FsaWdubWVudFwiKTtcbmNvbnN0IHRhYmxlXzEgPSByZXF1aXJlKFwiLi90YWJsZVwiKTtcbmNvbnN0IHRhYmxlX2NlbGxfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLWNlbGxcIik7XG5jb25zdCB0YWJsZV9yb3dfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLXJvd1wiKTtcbmNvbnN0IG1lYXdfMSA9IHJlcXVpcmUoXCJtZWF3XCIpO1xuLyoqXG4gKiBDcmVhdGVzIGEgZGVsaW1pdGVyIHRleHQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB3aWR0aCAtIFdpZHRoIG9mIHRoZSBob3Jpem9udGFsIGJhciBvZiBkZWxpbWl0ZXIuXG4gKiBAdGhyb3dzIHtFcnJvcn0gVW5rbm93biBhbGlnbm1lbnQuXG4gKi9cbmNvbnN0IF9kZWxpbWl0ZXJUZXh0ID0gKGFsaWdubWVudCwgd2lkdGgpID0+IHtcbiAgICBjb25zdCBiYXIgPSAnLScucmVwZWF0KHdpZHRoKTtcbiAgICBzd2l0Y2ggKGFsaWdubWVudCkge1xuICAgICAgICBjYXNlIGFsaWdubWVudF8xLkFsaWdubWVudC5OT05FOlxuICAgICAgICAgICAgcmV0dXJuIGAgJHtiYXJ9IGA7XG4gICAgICAgIGNhc2UgYWxpZ25tZW50XzEuQWxpZ25tZW50LkxFRlQ6XG4gICAgICAgICAgICByZXR1cm4gYDoke2Jhcn0gYDtcbiAgICAgICAgY2FzZSBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuUklHSFQ6XG4gICAgICAgICAgICByZXR1cm4gYCAke2Jhcn06YDtcbiAgICAgICAgY2FzZSBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuQ0VOVEVSOlxuICAgICAgICAgICAgcmV0dXJuIGA6JHtiYXJ9OmA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gYWxpZ25tZW50OiAnICsgYWxpZ25tZW50KTtcbiAgICB9XG59O1xuZXhwb3J0cy5fZGVsaW1pdGVyVGV4dCA9IF9kZWxpbWl0ZXJUZXh0O1xuLyoqXG4gKiBFeHRlbmRzIGFycmF5IHNpemUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBjYWxsYmFjayAtIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGZpbGwgbmV3bHkgY3JlYXRlZCBjZWxscy5cbiAqIEByZXR1cm5zIEV4dGVuZGVkIGFycmF5LlxuICovXG5jb25zdCBfZXh0ZW5kQXJyYXkgPSAoYXJyLCBzaXplLCBjYWxsYmFjaykgPT4ge1xuICAgIGNvbnN0IGV4dGVuZGVkID0gYXJyLnNsaWNlKCk7XG4gICAgZm9yIChsZXQgaSA9IGFyci5sZW5ndGg7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZXh0ZW5kZWQucHVzaChjYWxsYmFjayhpLCBhcnIpKTtcbiAgICB9XG4gICAgcmV0dXJuIGV4dGVuZGVkO1xufTtcbmV4cG9ydHMuX2V4dGVuZEFycmF5ID0gX2V4dGVuZEFycmF5O1xuLyoqXG4gKiBDb21wbGV0ZXMgYSB0YWJsZSBieSBhZGRpbmcgbWlzc2luZyBkZWxpbWl0ZXIgYW5kIGNlbGxzLlxuICogQWZ0ZXIgY29tcGxldGlvbiwgYWxsIHJvd3MgaW4gdGhlIHRhYmxlIGhhdmUgdGhlIHNhbWUgd2lkdGguXG4gKlxuICogQHByaXZhdGVcbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gRW1wdHkgdGFibGUuXG4gKi9cbmNvbnN0IGNvbXBsZXRlVGFibGUgPSAodGFibGUsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCB0YWJsZUhlaWdodCA9IHRhYmxlLmdldEhlaWdodCgpO1xuICAgIGNvbnN0IHRhYmxlV2lkdGggPSB0YWJsZS5nZXRXaWR0aCgpO1xuICAgIGlmICh0YWJsZUhlaWdodCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VtcHR5IHRhYmxlJyk7XG4gICAgfVxuICAgIGNvbnN0IHJvd3MgPSB0YWJsZS5nZXRSb3dzKCk7XG4gICAgY29uc3QgbmV3Um93cyA9IFtdO1xuICAgIC8vIGhlYWRlclxuICAgIGNvbnN0IGhlYWRlclJvdyA9IHJvd3NbMF07XG4gICAgY29uc3QgaGVhZGVyQ2VsbHMgPSBoZWFkZXJSb3cuZ2V0Q2VsbHMoKTtcbiAgICBuZXdSb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGV4cG9ydHMuX2V4dGVuZEFycmF5KGhlYWRlckNlbGxzLCB0YWJsZVdpZHRoLCAoaikgPT4gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoaiA9PT0gaGVhZGVyQ2VsbHMubGVuZ3RoID8gaGVhZGVyUm93Lm1hcmdpblJpZ2h0IDogJycpKSwgaGVhZGVyUm93Lm1hcmdpbkxlZnQsIGhlYWRlckNlbGxzLmxlbmd0aCA8IHRhYmxlV2lkdGggPyAnJyA6IGhlYWRlclJvdy5tYXJnaW5SaWdodCkpO1xuICAgIC8vIGRlbGltaXRlclxuICAgIGNvbnN0IGRlbGltaXRlclJvdyA9IHRhYmxlLmdldERlbGltaXRlclJvdygpO1xuICAgIGlmIChkZWxpbWl0ZXJSb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBkZWxpbWl0ZXJDZWxscyA9IGRlbGltaXRlclJvdy5nZXRDZWxscygpO1xuICAgICAgICBuZXdSb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGV4cG9ydHMuX2V4dGVuZEFycmF5KGRlbGltaXRlckNlbGxzLCB0YWJsZVdpZHRoLCAoaikgPT4gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoZXhwb3J0cy5fZGVsaW1pdGVyVGV4dChhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTk9ORSwgaiA9PT0gZGVsaW1pdGVyQ2VsbHMubGVuZ3RoXG4gICAgICAgICAgICA/IE1hdGgubWF4KG9wdGlvbnMubWluRGVsaW1pdGVyV2lkdGgsIGRlbGltaXRlclJvdy5tYXJnaW5SaWdodC5sZW5ndGggLSAyKVxuICAgICAgICAgICAgOiBvcHRpb25zLm1pbkRlbGltaXRlcldpZHRoKSkpLCBkZWxpbWl0ZXJSb3cubWFyZ2luTGVmdCwgZGVsaW1pdGVyQ2VsbHMubGVuZ3RoIDwgdGFibGVXaWR0aCA/ICcnIDogZGVsaW1pdGVyUm93Lm1hcmdpblJpZ2h0KSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBuZXdSb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGV4cG9ydHMuX2V4dGVuZEFycmF5KFtdLCB0YWJsZVdpZHRoLCAoKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbChleHBvcnRzLl9kZWxpbWl0ZXJUZXh0KGFsaWdubWVudF8xLkFsaWdubWVudC5OT05FLCBvcHRpb25zLm1pbkRlbGltaXRlcldpZHRoKSkpLCAnJywgJycpKTtcbiAgICB9XG4gICAgLy8gYm9keVxuICAgIGZvciAobGV0IGkgPSBkZWxpbWl0ZXJSb3cgIT09IHVuZGVmaW5lZCA/IDIgOiAxOyBpIDwgdGFibGVIZWlnaHQ7IGkrKykge1xuICAgICAgICBjb25zdCByb3cgPSByb3dzW2ldO1xuICAgICAgICBjb25zdCBjZWxscyA9IHJvdy5nZXRDZWxscygpO1xuICAgICAgICBuZXdSb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGV4cG9ydHMuX2V4dGVuZEFycmF5KGNlbGxzLCB0YWJsZVdpZHRoLCAoaikgPT4gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoaiA9PT0gY2VsbHMubGVuZ3RoID8gcm93Lm1hcmdpblJpZ2h0IDogJycpKSwgcm93Lm1hcmdpbkxlZnQsIGNlbGxzLmxlbmd0aCA8IHRhYmxlV2lkdGggPyAnJyA6IHJvdy5tYXJnaW5SaWdodCkpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB0YWJsZTogbmV3IHRhYmxlXzEuVGFibGUobmV3Um93cyksXG4gICAgICAgIGRlbGltaXRlckluc2VydGVkOiBkZWxpbWl0ZXJSb3cgPT09IHVuZGVmaW5lZCxcbiAgICB9O1xufTtcbmV4cG9ydHMuY29tcGxldGVUYWJsZSA9IGNvbXBsZXRlVGFibGU7XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIGEgdGV4dCBiYXNlZCBvbiBjaGFyYWN0ZXJzJyBFQVcgcHJvcGVydGllcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICpcbiAqIEByZXR1cm5zIENhbGN1bGF0ZWQgd2lkdGggb2YgdGhlIHRleHQuXG4gKi9cbmNvbnN0IF9jb21wdXRlVGV4dFdpZHRoID0gKHRleHQsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gb3B0aW9ucy5ub3JtYWxpemUgPyB0ZXh0Lm5vcm1hbGl6ZSgnTkZDJykgOiB0ZXh0O1xuICAgIGxldCB3ID0gMDtcbiAgICBmb3IgKGNvbnN0IGNoYXIgb2Ygbm9ybWFsaXplZCkge1xuICAgICAgICBpZiAob3B0aW9ucy53aWRlQ2hhcnMuaGFzKGNoYXIpKSB7XG4gICAgICAgICAgICB3ICs9IDI7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5uYXJyb3dDaGFycy5oYXMoY2hhcikpIHtcbiAgICAgICAgICAgIHcgKz0gMTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAobWVhd18xLmdldEVBVyhjaGFyKSkge1xuICAgICAgICAgICAgY2FzZSAnRic6XG4gICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICB3ICs9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICB3ICs9IG9wdGlvbnMuYW1iaWd1b3VzQXNXaWRlID8gMiA6IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHcgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdztcbn07XG5leHBvcnRzLl9jb21wdXRlVGV4dFdpZHRoID0gX2NvbXB1dGVUZXh0V2lkdGg7XG4vKipcbiAqIFJldHVybnMgYSBhbGlnbmVkIGNlbGwgY29udGVudC5cbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gVW5rbm93biBhbGlnbm1lbnQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gVW5leHBlY3RlZCBkZWZhdWx0IGFsaWdubWVudC5cbiAqL1xuY29uc3QgX2FsaWduVGV4dCA9ICh0ZXh0LCB3aWR0aCwgYWxpZ25tZW50LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgc3BhY2UgPSB3aWR0aCAtIGV4cG9ydHMuX2NvbXB1dGVUZXh0V2lkdGgodGV4dCwgb3B0aW9ucyk7XG4gICAgaWYgKHNwYWNlIDwgMCkge1xuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG4gICAgc3dpdGNoIChhbGlnbm1lbnQpIHtcbiAgICAgICAgY2FzZSBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTk9ORTpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBkZWZhdWx0IGFsaWdubWVudCcpO1xuICAgICAgICBjYXNlIGFsaWdubWVudF8xLkFsaWdubWVudC5MRUZUOlxuICAgICAgICAgICAgcmV0dXJuIHRleHQgKyAnICcucmVwZWF0KHNwYWNlKTtcbiAgICAgICAgY2FzZSBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuUklHSFQ6XG4gICAgICAgICAgICByZXR1cm4gJyAnLnJlcGVhdChzcGFjZSkgKyB0ZXh0O1xuICAgICAgICBjYXNlIGFsaWdubWVudF8xLkFsaWdubWVudC5DRU5URVI6XG4gICAgICAgICAgICByZXR1cm4gKCcgJy5yZXBlYXQoTWF0aC5mbG9vcihzcGFjZSAvIDIpKSArXG4gICAgICAgICAgICAgICAgdGV4dCArXG4gICAgICAgICAgICAgICAgJyAnLnJlcGVhdChNYXRoLmNlaWwoc3BhY2UgLyAyKSkpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGFsaWdubWVudDogJyArIGFsaWdubWVudCk7XG4gICAgfVxufTtcbmV4cG9ydHMuX2FsaWduVGV4dCA9IF9hbGlnblRleHQ7XG4vKipcbiAqIEp1c3QgYWRkcyBvbmUgc3BhY2UgcGFkZGluZ3MgdG8gYm90aCBzaWRlcyBvZiBhIHRleHQuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgX3BhZFRleHQgPSAodGV4dCkgPT4gYCAke3RleHR9IGA7XG5leHBvcnRzLl9wYWRUZXh0ID0gX3BhZFRleHQ7XG4vKipcbiAqIEZvcm1hdHMgYSB0YWJsZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBfZm9ybWF0VGFibGUgPSAodGFibGUsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCB0YWJsZUhlaWdodCA9IHRhYmxlLmdldEhlaWdodCgpO1xuICAgIGNvbnN0IHRhYmxlV2lkdGggPSB0YWJsZS5nZXRXaWR0aCgpO1xuICAgIGlmICh0YWJsZUhlaWdodCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGFibGUsXG4gICAgICAgICAgICBtYXJnaW5MZWZ0OiAnJyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgbWFyZ2luTGVmdCA9IHRhYmxlLmdldFJvd3MoKVswXS5tYXJnaW5MZWZ0O1xuICAgIGlmICh0YWJsZVdpZHRoID09PSAwKSB7XG4gICAgICAgIGNvbnN0IHJvd3MgPSBuZXcgQXJyYXkodGFibGVIZWlnaHQpLmZpbGwobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KFtdLCBtYXJnaW5MZWZ0LCAnJykpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGFibGU6IG5ldyB0YWJsZV8xLlRhYmxlKHJvd3MpLFxuICAgICAgICAgICAgbWFyZ2luTGVmdCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8gY29tcHV0ZSBjb2x1bW4gd2lkdGhzXG4gICAgY29uc3QgZGVsaW1pdGVyUm93ID0gdGFibGUuZ2V0RGVsaW1pdGVyUm93KCk7XG4gICAgY29uc3QgY29sdW1uV2lkdGhzID0gbmV3IEFycmF5KHRhYmxlV2lkdGgpLmZpbGwoMCk7XG4gICAgaWYgKGRlbGltaXRlclJvdyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGRlbGltaXRlclJvd1dpZHRoID0gZGVsaW1pdGVyUm93LmdldFdpZHRoKCk7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGVsaW1pdGVyUm93V2lkdGg7IGorKykge1xuICAgICAgICAgICAgY29sdW1uV2lkdGhzW2pdID0gb3B0aW9ucy5taW5EZWxpbWl0ZXJXaWR0aDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYmxlSGVpZ2h0OyBpKyspIHtcbiAgICAgICAgaWYgKGRlbGltaXRlclJvdyAhPT0gdW5kZWZpbmVkICYmIGkgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvdyA9IHRhYmxlLmdldFJvd3MoKVtpXTtcbiAgICAgICAgY29uc3Qgcm93V2lkdGggPSByb3cuZ2V0V2lkdGgoKTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByb3dXaWR0aDsgaisrKSB7XG4gICAgICAgICAgICBjb2x1bW5XaWR0aHNbal0gPSBNYXRoLm1heChjb2x1bW5XaWR0aHNbal0sIGV4cG9ydHMuX2NvbXB1dGVUZXh0V2lkdGgocm93LmdldENlbGxBdChqKS5jb250ZW50LCBvcHRpb25zLnRleHRXaWR0aE9wdGlvbnMpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBnZXQgY29sdW1uIGFsaWdubWVudHNcbiAgICBjb25zdCBhbGlnbm1lbnRzID0gZGVsaW1pdGVyUm93ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBleHBvcnRzLl9leHRlbmRBcnJheShkZWxpbWl0ZXJSb3cuZ2V0Q2VsbHMoKS5tYXAoKGNlbGwpID0+IGNlbGwuZ2V0QWxpZ25tZW50KCkpLCB0YWJsZVdpZHRoLCBcbiAgICAgICAgLy8gU2FmZSBjb252ZXJzaW9uIGJlY2F1c2UgRGVmYXVsdEFsaWdubWVudCBpcyBhIHN1YnNldCBvZiBBbGlnbm1lbnRcbiAgICAgICAgKCkgPT4gb3B0aW9ucy5kZWZhdWx0QWxpZ25tZW50KVxuICAgICAgICA6IG5ldyBBcnJheSh0YWJsZVdpZHRoKS5maWxsKG9wdGlvbnMuZGVmYXVsdEFsaWdubWVudCk7XG4gICAgLy8gZm9ybWF0XG4gICAgY29uc3Qgcm93cyA9IFtdO1xuICAgIC8vIGhlYWRlclxuICAgIGNvbnN0IGhlYWRlclJvdyA9IHRhYmxlLmdldFJvd3MoKVswXTtcbiAgICByb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGhlYWRlclJvd1xuICAgICAgICAuZ2V0Q2VsbHMoKVxuICAgICAgICAubWFwKChjZWxsLCBqKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbChleHBvcnRzLl9wYWRUZXh0KGV4cG9ydHMuX2FsaWduVGV4dChjZWxsLmNvbnRlbnQsIGNvbHVtbldpZHRoc1tqXSwgb3B0aW9ucy5oZWFkZXJBbGlnbm1lbnQgPT09IGFsaWdubWVudF8xLkhlYWRlckFsaWdubWVudC5GT0xMT1dcbiAgICAgICAgPyBhbGlnbm1lbnRzW2pdID09PSBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTk9ORVxuICAgICAgICAgICAgPyBvcHRpb25zLmRlZmF1bHRBbGlnbm1lbnRcbiAgICAgICAgICAgIDogYWxpZ25tZW50c1tqXVxuICAgICAgICA6IG9wdGlvbnMuaGVhZGVyQWxpZ25tZW50LCBvcHRpb25zLnRleHRXaWR0aE9wdGlvbnMpKSkpLCBtYXJnaW5MZWZ0LCAnJykpO1xuICAgIC8vIGRlbGltaXRlclxuICAgIGlmIChkZWxpbWl0ZXJSb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGRlbGltaXRlclJvd1xuICAgICAgICAgICAgLmdldENlbGxzKClcbiAgICAgICAgICAgIC5tYXAoKGNlbGwsIGopID0+IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKGV4cG9ydHMuX2RlbGltaXRlclRleHQoYWxpZ25tZW50c1tqXSwgY29sdW1uV2lkdGhzW2pdKSkpLCBtYXJnaW5MZWZ0LCAnJykpO1xuICAgIH1cbiAgICAvLyBib2R5XG4gICAgZm9yIChsZXQgaSA9IGRlbGltaXRlclJvdyAhPT0gdW5kZWZpbmVkID8gMiA6IDE7IGkgPCB0YWJsZUhlaWdodDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHRhYmxlLmdldFJvd3MoKVtpXTtcbiAgICAgICAgcm93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhyb3dcbiAgICAgICAgICAgIC5nZXRDZWxscygpXG4gICAgICAgICAgICAubWFwKChjZWxsLCBqKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbChleHBvcnRzLl9wYWRUZXh0KGV4cG9ydHMuX2FsaWduVGV4dChjZWxsLmNvbnRlbnQsIGNvbHVtbldpZHRoc1tqXSwgYWxpZ25tZW50c1tqXSA9PT0gYWxpZ25tZW50XzEuQWxpZ25tZW50Lk5PTkVcbiAgICAgICAgICAgID8gb3B0aW9ucy5kZWZhdWx0QWxpZ25tZW50XG4gICAgICAgICAgICA6IGFsaWdubWVudHNbal0sIG9wdGlvbnMudGV4dFdpZHRoT3B0aW9ucykpKSksIG1hcmdpbkxlZnQsICcnKSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHRhYmxlOiBuZXcgdGFibGVfMS5UYWJsZShyb3dzKSxcbiAgICAgICAgbWFyZ2luTGVmdCxcbiAgICB9O1xufTtcbmV4cG9ydHMuX2Zvcm1hdFRhYmxlID0gX2Zvcm1hdFRhYmxlO1xuLyoqXG4gKiBGb3JtYXRzIGEgdGFibGUgd2Vha2x5LlxuICogUm93cyBhcmUgZm9ybWF0dGVkIGluZGVwZW5kZW50bHkgdG8gZWFjaCBvdGhlciwgY2VsbCBjb250ZW50cyBhcmUganVzdCB0cmltbWVkIGFuZCBub3QgYWxpZ25lZC5cbiAqIFRoaXMgaXMgdXNlZnVsIHdoZW4gdXNpbmcgYSBub24tbW9ub3NwYWNlZCBmb250IG9yIGRlYWxpbmcgd2l0aCB3aWRlIHRhYmxlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBfd2Vha0Zvcm1hdFRhYmxlID0gKHRhYmxlLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgdGFibGVIZWlnaHQgPSB0YWJsZS5nZXRIZWlnaHQoKTtcbiAgICBjb25zdCB0YWJsZVdpZHRoID0gdGFibGUuZ2V0V2lkdGgoKTtcbiAgICBpZiAodGFibGVIZWlnaHQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgICAgbWFyZ2luTGVmdDogJycsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IG1hcmdpbkxlZnQgPSB0YWJsZS5nZXRSb3dzKClbMF0ubWFyZ2luTGVmdDtcbiAgICBpZiAodGFibGVXaWR0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCByb3dzID0gbmV3IEFycmF5KHRhYmxlSGVpZ2h0KS5maWxsKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhbXSwgbWFyZ2luTGVmdCwgJycpKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhYmxlOiBuZXcgdGFibGVfMS5UYWJsZShyb3dzKSxcbiAgICAgICAgICAgIG1hcmdpbkxlZnQsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGRlbGltaXRlclJvdyA9IHRhYmxlLmdldERlbGltaXRlclJvdygpO1xuICAgIC8vIGZvcm1hdFxuICAgIGNvbnN0IHJvd3MgPSBbXTtcbiAgICAvLyBoZWFkZXJcbiAgICBjb25zdCBoZWFkZXJSb3cgPSB0YWJsZS5nZXRSb3dzKClbMF07XG4gICAgcm93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhoZWFkZXJSb3cuZ2V0Q2VsbHMoKS5tYXAoKGNlbGwpID0+IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKGV4cG9ydHMuX3BhZFRleHQoY2VsbC5jb250ZW50KSkpLCBtYXJnaW5MZWZ0LCAnJykpO1xuICAgIC8vIGRlbGltaXRlclxuICAgIGlmIChkZWxpbWl0ZXJSb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGRlbGltaXRlclJvd1xuICAgICAgICAgICAgLmdldENlbGxzKClcbiAgICAgICAgICAgIC5tYXAoKGNlbGwpID0+IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKGV4cG9ydHMuX2RlbGltaXRlclRleHQoY2VsbC5nZXRBbGlnbm1lbnQoKSwgb3B0aW9ucy5taW5EZWxpbWl0ZXJXaWR0aCkpKSwgbWFyZ2luTGVmdCwgJycpKTtcbiAgICB9XG4gICAgLy8gYm9keVxuICAgIGZvciAobGV0IGkgPSBkZWxpbWl0ZXJSb3cgIT09IHVuZGVmaW5lZCA/IDIgOiAxOyBpIDwgdGFibGVIZWlnaHQ7IGkrKykge1xuICAgICAgICBjb25zdCByb3cgPSB0YWJsZS5nZXRSb3dzKClbaV07XG4gICAgICAgIHJvd3MucHVzaChuZXcgdGFibGVfcm93XzEuVGFibGVSb3cocm93LmdldENlbGxzKCkubWFwKChjZWxsKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbChleHBvcnRzLl9wYWRUZXh0KGNlbGwuY29udGVudCkpKSwgbWFyZ2luTGVmdCwgJycpKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdGFibGU6IG5ldyB0YWJsZV8xLlRhYmxlKHJvd3MpLFxuICAgICAgICBtYXJnaW5MZWZ0LFxuICAgIH07XG59O1xuZXhwb3J0cy5fd2Vha0Zvcm1hdFRhYmxlID0gX3dlYWtGb3JtYXRUYWJsZTtcbi8qKlxuICogUmVwcmVzZW50cyB0YWJsZSBmb3JtYXQgdHlwZS5cbiAqXG4gKiAtIGBGb3JtYXRUeXBlLk5PUk1BTGAgLSBGb3JtYXRzIHRhYmxlIG5vcm1hbGx5LlxuICogLSBgRm9ybWF0VHlwZS5XRUFLYCAtIEZvcm1hdHMgdGFibGUgd2Vha2x5LCByb3dzIGFyZSBmb3JtYXR0ZWQgaW5kZXBlbmRlbnRseSB0byBlYWNoIG90aGVyLCBjZWxsXG4gKiAgIGNvbnRlbnRzIGFyZSBqdXN0IHRyaW1tZWQgYW5kIG5vdCBhbGlnbmVkLlxuICovXG52YXIgRm9ybWF0VHlwZTtcbihmdW5jdGlvbiAoRm9ybWF0VHlwZSkge1xuICAgIEZvcm1hdFR5cGVbXCJOT1JNQUxcIl0gPSBcIm5vcm1hbFwiO1xuICAgIEZvcm1hdFR5cGVbXCJXRUFLXCJdID0gXCJ3ZWFrXCI7XG59KShGb3JtYXRUeXBlID0gZXhwb3J0cy5Gb3JtYXRUeXBlIHx8IChleHBvcnRzLkZvcm1hdFR5cGUgPSB7fSkpO1xuLyoqXG4gKiBGb3JtYXRzIGEgdGFibGUuXG4gKlxuICogQHByaXZhdGVcbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gVW5rbm93biBmb3JtYXQgdHlwZS5cbiAqL1xuY29uc3QgZm9ybWF0VGFibGUgPSAodGFibGUsIG9wdGlvbnMpID0+IHtcbiAgICBzd2l0Y2ggKG9wdGlvbnMuZm9ybWF0VHlwZSkge1xuICAgICAgICBjYXNlIEZvcm1hdFR5cGUuTk9STUFMOlxuICAgICAgICAgICAgcmV0dXJuIGV4cG9ydHMuX2Zvcm1hdFRhYmxlKHRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgY2FzZSBGb3JtYXRUeXBlLldFQUs6XG4gICAgICAgICAgICByZXR1cm4gZXhwb3J0cy5fd2Vha0Zvcm1hdFRhYmxlKHRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBmb3JtYXQgdHlwZTogJyArIG9wdGlvbnMuZm9ybWF0VHlwZSk7XG4gICAgfVxufTtcbmV4cG9ydHMuZm9ybWF0VGFibGUgPSBmb3JtYXRUYWJsZTtcbi8qKlxuICogQWx0ZXJzIGEgY29sdW1uJ3MgYWxpZ25tZW50IG9mIGEgdGFibGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0YWJsZSAtIEEgY29tcGxldGVkIG5vbi1lbXB0eSB0YWJsZS5cbiAqIEBwYXJhbSBjb2x1bW5JbmRleCAtIEFuIGluZGV4IG9mIHRoZSBjb2x1bW4uXG4gKiBAcGFyYW0gYWxpZ25tZW50IC0gQSBuZXcgYWxpZ25tZW50IG9mIHRoZSBjb2x1bW4uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCBjb250YWluaW5nIG9wdGlvbnMgZm9yIGNvbXBsZXRpb24uXG4gKiBAcmV0dXJucyB7VGFibGV9IEFuIGFsdGVyZWQgdGFibGUgb2JqZWN0LlxuICogSWYgdGhlIGNvbHVtbiBpbmRleCBpcyBvdXQgb2YgcmFuZ2UsIHJldHVybnMgdGhlIG9yaWdpbmFsIHRhYmxlLlxuICovXG5jb25zdCBhbHRlckFsaWdubWVudCA9ICh0YWJsZSwgY29sdW1uSW5kZXgsIGFsaWdubWVudCwgb3B0aW9ucykgPT4ge1xuICAgIGlmICh0YWJsZS5nZXRIZWlnaHQoKSA8IDEpIHtcbiAgICAgICAgcmV0dXJuIHRhYmxlO1xuICAgIH1cbiAgICBjb25zdCBkZWxpbWl0ZXJSb3cgPSB0YWJsZS5nZXRSb3dzKClbMV07XG4gICAgaWYgKGNvbHVtbkluZGV4IDwgMCB8fCBkZWxpbWl0ZXJSb3cuZ2V0V2lkdGgoKSAtIDEgPCBjb2x1bW5JbmRleCkge1xuICAgICAgICByZXR1cm4gdGFibGU7XG4gICAgfVxuICAgIGNvbnN0IGRlbGltaXRlckNlbGxzID0gZGVsaW1pdGVyUm93LmdldENlbGxzKCk7XG4gICAgZGVsaW1pdGVyQ2VsbHNbY29sdW1uSW5kZXhdID0gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoZXhwb3J0cy5fZGVsaW1pdGVyVGV4dChhbGlnbm1lbnQsIG9wdGlvbnMubWluRGVsaW1pdGVyV2lkdGgpKTtcbiAgICBjb25zdCByb3dzID0gdGFibGUuZ2V0Um93cygpO1xuICAgIHJvd3NbMV0gPSBuZXcgdGFibGVfcm93XzEuVGFibGVSb3coZGVsaW1pdGVyQ2VsbHMsIGRlbGltaXRlclJvdy5tYXJnaW5MZWZ0LCBkZWxpbWl0ZXJSb3cubWFyZ2luUmlnaHQpO1xuICAgIHJldHVybiBuZXcgdGFibGVfMS5UYWJsZShyb3dzKTtcbn07XG5leHBvcnRzLmFsdGVyQWxpZ25tZW50ID0gYWx0ZXJBbGlnbm1lbnQ7XG4vKipcbiAqIEluc2VydHMgYSByb3cgdG8gYSB0YWJsZS5cbiAqIFRoZSByb3cgaXMgYWx3YXlzIGluc2VydGVkIGFmdGVyIHRoZSBoZWFkZXIgYW5kIHRoZSBkZWxpbWl0ZXIgcm93cywgZXZlbiBpZiB0aGUgaW5kZXggc3BlY2lmaWVzXG4gKiB0aGUgaGVhZGVyIG9yIHRoZSBkZWxpbWl0ZXIuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0YWJsZSAtIEEgY29tcGxldGVkIG5vbi1lbXB0eSB0YWJsZS5cbiAqIEBwYXJhbSByb3dJbmRleCAtIEFuIHJvdyBpbmRleCBhdCB3aGljaCBhIG5ldyByb3cgd2lsbCBiZSBpbnNlcnRlZC5cbiAqIEBwYXJhbSByb3cgLSBBIHRhYmxlIHJvdyB0byBiZSBpbnNlcnRlZC5cbiAqIEByZXR1cm5zIEFuIGFsdGVyZWQgdGFibGUgb2JlamN0LlxuICovXG5jb25zdCBpbnNlcnRSb3cgPSAodGFibGUsIHJvd0luZGV4LCByb3cpID0+IHtcbiAgICBjb25zdCByb3dzID0gdGFibGUuZ2V0Um93cygpO1xuICAgIHJvd3Muc3BsaWNlKE1hdGgubWF4KHJvd0luZGV4LCAyKSwgMCwgcm93KTtcbiAgICByZXR1cm4gbmV3IHRhYmxlXzEuVGFibGUocm93cyk7XG59O1xuZXhwb3J0cy5pbnNlcnRSb3cgPSBpbnNlcnRSb3c7XG4vKipcbiAqIERlbGV0ZXMgYSByb3cgaW4gYSB0YWJsZS5cbiAqIElmIHRoZSBpbmRleCBzcGVjaWZpZXMgdGhlIGhlYWRlciByb3csIHRoZSBjZWxscyBhcmUgZW1wdGllZCBidXQgdGhlIHJvdyB3aWxsIG5vdCBiZSByZW1vdmVkLlxuICogSWYgdGhlIGluZGV4IHNwZWNpZmllcyB0aGUgZGVsaW1pdGVyIHJvdywgaXQgZG9lcyBub3RoaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gdGFibGUgLSBBIGNvbXBsZXRlZCBub24tZW1wdHkgdGFibGUuXG4gKiBAcGFyYW0gcm93SW5kZXggLSBBbiBpbmRleCBvZiB0aGUgcm93IHRvIGJlIGRlbGV0ZWQuXG4gKiBAcmV0dXJucyBBbiBhbHRlcmVkIHRhYmxlIG9iZWpjdC5cbiAqL1xuY29uc3QgZGVsZXRlUm93ID0gKHRhYmxlLCByb3dJbmRleCkgPT4ge1xuICAgIGlmIChyb3dJbmRleCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gdGFibGU7XG4gICAgfVxuICAgIGNvbnN0IHJvd3MgPSB0YWJsZS5nZXRSb3dzKCk7XG4gICAgaWYgKHJvd0luZGV4ID09PSAwKSB7XG4gICAgICAgIGNvbnN0IGhlYWRlclJvdyA9IHJvd3NbMF07XG4gICAgICAgIHJvd3NbMF0gPSBuZXcgdGFibGVfcm93XzEuVGFibGVSb3cobmV3IEFycmF5KGhlYWRlclJvdy5nZXRXaWR0aCgpKS5maWxsKG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKCcnKSksIGhlYWRlclJvdy5tYXJnaW5MZWZ0LCBoZWFkZXJSb3cubWFyZ2luUmlnaHQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcm93cy5zcGxpY2Uocm93SW5kZXgsIDEpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IHRhYmxlXzEuVGFibGUocm93cyk7XG59O1xuZXhwb3J0cy5kZWxldGVSb3cgPSBkZWxldGVSb3c7XG4vKipcbiAqIE1vdmVzIGEgcm93IGF0IHRoZSBpbmRleCB0byB0aGUgc3BlY2lmaWVkIGRlc3RpbmF0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gdGFibGUgLSBBIGNvbXBsZXRlZCBub24tZW1wdHkgdGFibGUuXG4gKiBAcGFyYW0gcm93SW5kZXggLSBJbmRleCBvZiB0aGUgcm93IHRvIGJlIG1vdmVkLlxuICogQHBhcmFtIGRlc3RJbmRleCAtIEluZGV4IG9mIHRoZSBkZXN0aW5hdGlvbi5cbiAqIEByZXR1cm5zIEFuIGFsdGVyZWQgdGFibGUgb2JqZWN0LlxuICovXG5jb25zdCBtb3ZlUm93ID0gKHRhYmxlLCByb3dJbmRleCwgZGVzdEluZGV4KSA9PiB7XG4gICAgaWYgKHJvd0luZGV4IDw9IDEgfHwgZGVzdEluZGV4IDw9IDEgfHwgcm93SW5kZXggPT09IGRlc3RJbmRleCkge1xuICAgICAgICByZXR1cm4gdGFibGU7XG4gICAgfVxuICAgIGNvbnN0IHJvd3MgPSB0YWJsZS5nZXRSb3dzKCk7XG4gICAgY29uc3Qgcm93ID0gcm93c1tyb3dJbmRleF07XG4gICAgcm93cy5zcGxpY2Uocm93SW5kZXgsIDEpO1xuICAgIHJvd3Muc3BsaWNlKGRlc3RJbmRleCwgMCwgcm93KTtcbiAgICByZXR1cm4gbmV3IHRhYmxlXzEuVGFibGUocm93cyk7XG59O1xuZXhwb3J0cy5tb3ZlUm93ID0gbW92ZVJvdztcbi8qKlxuICogSW5zZXJ0cyBhIGNvbHVtbiB0byBhIHRhYmxlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gdGFibGUgLSBBIGNvbXBsZXRlZCBub24tZW1wdHkgdGFibGUuXG4gKiBAcGFyYW0gY29sdW1uSW5kZXggLSBBbiBjb2x1bW4gaW5kZXggYXQgd2hpY2ggdGhlIG5ldyBjb2x1bW4gd2lsbCBiZSBpbnNlcnRlZC5cbiAqIEBwYXJhbSBjb2x1bW4gLSBBbiBhcnJheSBvZiBjZWxscy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgb3B0aW9ucyBmb3IgY29tcGxldGlvbi5cbiAqIEByZXR1cm5zIEFuIGFsdGVyZWQgdGFibGUgb2JlamN0LlxuICovXG5jb25zdCBpbnNlcnRDb2x1bW4gPSAodGFibGUsIGNvbHVtbkluZGV4LCBjb2x1bW4sIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCByb3dzID0gdGFibGUuZ2V0Um93cygpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCByb3cgPSByb3dzW2ldO1xuICAgICAgICBjb25zdCBjZWxscyA9IHJvd3NbaV0uZ2V0Q2VsbHMoKTtcbiAgICAgICAgY29uc3QgY2VsbCA9IGkgPT09IDFcbiAgICAgICAgICAgID8gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoZXhwb3J0cy5fZGVsaW1pdGVyVGV4dChhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTk9ORSwgb3B0aW9ucy5taW5EZWxpbWl0ZXJXaWR0aCkpXG4gICAgICAgICAgICA6IGNvbHVtbltpID4gMSA/IGkgLSAxIDogaV07XG4gICAgICAgIGNlbGxzLnNwbGljZShjb2x1bW5JbmRleCwgMCwgY2VsbCk7XG4gICAgICAgIHJvd3NbaV0gPSBuZXcgdGFibGVfcm93XzEuVGFibGVSb3coY2VsbHMsIHJvdy5tYXJnaW5MZWZ0LCByb3cubWFyZ2luUmlnaHQpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IHRhYmxlXzEuVGFibGUocm93cyk7XG59O1xuZXhwb3J0cy5pbnNlcnRDb2x1bW4gPSBpbnNlcnRDb2x1bW47XG4vKipcbiAqIERlbGV0ZXMgYSBjb2x1bW4gaW4gYSB0YWJsZS5cbiAqIElmIHRoZXJlIHdpbGwgYmUgbm8gY29sdW1ucyBhZnRlciB0aGUgZGVsZXRpb24sIHRoZSBjZWxscyBhcmUgZW1wdGllZCBidXQgdGhlIGNvbHVtbiB3aWxsIG5vdCBiZVxuICogcmVtb3ZlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHRhYmxlIC0gQSBjb21wbGV0ZWQgbm9uLWVtcHR5IHRhYmxlLlxuICogQHBhcmFtIGNvbHVtbkluZGV4IC0gQW4gaW5kZXggb2YgdGhlIGNvbHVtbiB0byBiZSBkZWxldGVkLlxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3QgY29udGFpbmluZyBvcHRpb25zIGZvciBjb21wbGV0aW9uLlxuICogQHJldHVybnMgQW4gYWx0ZXJlZCB0YWJsZSBvYmplY3QuXG4gKi9cbmNvbnN0IGRlbGV0ZUNvbHVtbiA9ICh0YWJsZSwgY29sdW1uSW5kZXgsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCByb3dzID0gdGFibGUuZ2V0Um93cygpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCByb3cgPSByb3dzW2ldO1xuICAgICAgICBsZXQgY2VsbHMgPSByb3cuZ2V0Q2VsbHMoKTtcbiAgICAgICAgaWYgKGNlbGxzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICBjZWxscyA9IFtcbiAgICAgICAgICAgICAgICBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbChpID09PSAxXG4gICAgICAgICAgICAgICAgICAgID8gZXhwb3J0cy5fZGVsaW1pdGVyVGV4dChhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTk9ORSwgb3B0aW9ucy5taW5EZWxpbWl0ZXJXaWR0aClcbiAgICAgICAgICAgICAgICAgICAgOiAnJyksXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2VsbHMuc3BsaWNlKGNvbHVtbkluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgICByb3dzW2ldID0gbmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGNlbGxzLCByb3cubWFyZ2luTGVmdCwgcm93Lm1hcmdpblJpZ2h0KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0YWJsZV8xLlRhYmxlKHJvd3MpO1xufTtcbmV4cG9ydHMuZGVsZXRlQ29sdW1uID0gZGVsZXRlQ29sdW1uO1xuLyoqXG4gKiBNb3ZlcyBhIGNvbHVtbiBhdCB0aGUgaW5kZXggdG8gdGhlIHNwZWNpZmllZCBkZXN0aW5hdGlvbi5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHRhYmxlIC0gQSBjb21wbGV0ZWQgbm9uLWVtcHR5IHRhYmxlLlxuICogQHBhcmFtIGNvbHVtbkluZGV4IC0gSW5kZXggb2YgdGhlIGNvbHVtbiB0byBiZSBtb3ZlZC5cbiAqIEBwYXJhbSBkZXN0SW5kZXggLSBJbmRleCBvZiB0aGUgZGVzdGluYXRpb24uXG4gKiBAcmV0dXJucyBBbiBhbHRlcmVkIHRhYmxlIG9iamVjdC5cbiAqL1xuY29uc3QgbW92ZUNvbHVtbiA9ICh0YWJsZSwgY29sdW1uSW5kZXgsIGRlc3RJbmRleCkgPT4ge1xuICAgIGlmIChjb2x1bW5JbmRleCA9PT0gZGVzdEluZGV4KSB7XG4gICAgICAgIHJldHVybiB0YWJsZTtcbiAgICB9XG4gICAgY29uc3Qgcm93cyA9IHRhYmxlLmdldFJvd3MoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgcm93ID0gcm93c1tpXTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSByb3cuZ2V0Q2VsbHMoKTtcbiAgICAgICAgY29uc3QgY2VsbCA9IGNlbGxzW2NvbHVtbkluZGV4XTtcbiAgICAgICAgY2VsbHMuc3BsaWNlKGNvbHVtbkluZGV4LCAxKTtcbiAgICAgICAgY2VsbHMuc3BsaWNlKGRlc3RJbmRleCwgMCwgY2VsbCk7XG4gICAgICAgIHJvd3NbaV0gPSBuZXcgdGFibGVfcm93XzEuVGFibGVSb3coY2VsbHMsIHJvdy5tYXJnaW5MZWZ0LCByb3cubWFyZ2luUmlnaHQpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IHRhYmxlXzEuVGFibGUocm93cyk7XG59O1xuZXhwb3J0cy5tb3ZlQ29sdW1uID0gbW92ZUNvbHVtbjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5zaG9ydGVzdEVkaXRTY3JpcHQgPSBleHBvcnRzLmFwcGx5RWRpdFNjcmlwdCA9IGV4cG9ydHMuX2FwcGx5Q29tbWFuZCA9IGV4cG9ydHMuRGVsZXRlID0gZXhwb3J0cy5JbnNlcnQgPSB2b2lkIDA7XG4vKipcbiAqIFRoZSBgSW5zZXJ0YCBjbGFzcyByZXByZXNlbnRzIGFuIGluc2VydGlvbiBvZiBhIGxpbmUuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgSW5zZXJ0IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdHMgYSBuZXcgYEluc2VydGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvdyAtIFJvdyBpbmRleCwgc3RhcnRzIGZyb20gYDBgLlxuICAgICAqIEBwYXJhbSBsaW5lIC0gQSBzdHJpbmcgdG8gYmUgaW5zZXJ0ZWQgYXQgdGhlIHJvdy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihyb3csIGxpbmUpIHtcbiAgICAgICAgdGhpcy5yb3cgPSByb3c7XG4gICAgICAgIHRoaXMubGluZSA9IGxpbmU7XG4gICAgfVxufVxuZXhwb3J0cy5JbnNlcnQgPSBJbnNlcnQ7XG4vKipcbiAqIFRoZSBgRGVsZXRlYCBjbGFzcyByZXByZXNlbnRzIGEgZGVsZXRpb24gb2YgYSBsaW5lLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIERlbGV0ZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBgRGVsZXRlYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93IC0gUm93IGluZGV4LCBzdGFydHMgZnJvbSBgMGAuXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iocm93KSB7XG4gICAgICAgIHRoaXMucm93ID0gcm93O1xuICAgIH1cbn1cbmV4cG9ydHMuRGVsZXRlID0gRGVsZXRlO1xuLyoqXG4gKiBBcHBsaWVzIGEgY29tbWFuZCB0byB0aGUgdGV4dCBlZGl0b3IuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0ZXh0RWRpdG9yIC0gQW4gaW50ZXJmYWNlIHRvIHRoZSB0ZXh0IGVkaXRvci5cbiAqIEBwYXJhbSBjb21tYW5kIC0gQSBjb21tYW5kLlxuICogQHBhcmFtIHJvd09mZnNldCAtIE9mZnNldCB0byB0aGUgcm93IGluZGV4IG9mIHRoZSBjb21tYW5kLlxuICovXG5jb25zdCBfYXBwbHlDb21tYW5kID0gKHRleHRFZGl0b3IsIGNvbW1hbmQsIHJvd09mZnNldCkgPT4ge1xuICAgIGlmIChjb21tYW5kIGluc3RhbmNlb2YgSW5zZXJ0KSB7XG4gICAgICAgIHRleHRFZGl0b3IuaW5zZXJ0TGluZShyb3dPZmZzZXQgKyBjb21tYW5kLnJvdywgY29tbWFuZC5saW5lKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29tbWFuZCBpbnN0YW5jZW9mIERlbGV0ZSkge1xuICAgICAgICB0ZXh0RWRpdG9yLmRlbGV0ZUxpbmUocm93T2Zmc2V0ICsgY29tbWFuZC5yb3cpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGNvbW1hbmQnKTtcbiAgICB9XG59O1xuZXhwb3J0cy5fYXBwbHlDb21tYW5kID0gX2FwcGx5Q29tbWFuZDtcbi8qKlxuICogQXBwbHkgYW4gZWRpdCBzY3JpcHQgKGFycmF5IG9mIGNvbW1hbmRzKSB0byB0aGUgdGV4dCBlZGl0b3IuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0ZXh0RWRpdG9yIC0gQW4gaW50ZXJmYWNlIHRvIHRoZSB0ZXh0IGVkaXRvci5cbiAqIEBwYXJhbSBzY3JpcHQgLSBBbiBhcnJheSBvZiBjb21tYW5kcy5cbiAqIFRoZSBjb21tYW5kcyBhcmUgYXBwbGllZCBzZXF1ZW50aWFsbHkgaW4gdGhlIG9yZGVyIG9mIHRoZSBhcnJheS5cbiAqIEBwYXJhbSByb3dPZmZzZXQgLSBPZmZzZXQgdG8gdGhlIHJvdyBpbmRleCBvZiB0aGUgY29tbWFuZHMuXG4gKi9cbmNvbnN0IGFwcGx5RWRpdFNjcmlwdCA9ICh0ZXh0RWRpdG9yLCBzY3JpcHQsIHJvd09mZnNldCkgPT4ge1xuICAgIGZvciAoY29uc3QgY29tbWFuZCBvZiBzY3JpcHQpIHtcbiAgICAgICAgZXhwb3J0cy5fYXBwbHlDb21tYW5kKHRleHRFZGl0b3IsIGNvbW1hbmQsIHJvd09mZnNldCk7XG4gICAgfVxufTtcbmV4cG9ydHMuYXBwbHlFZGl0U2NyaXB0ID0gYXBwbHlFZGl0U2NyaXB0O1xuLyoqXG4gKiBMaW5rZWQgbGlzdCB1c2VkIHRvIHJlbWVtYmVyIGVkaXQgc2NyaXB0LlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIElMaXN0IHtcbiAgICBnZXQgY2FyKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cbiAgICBnZXQgY2RyKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cbiAgICB1bnNoaWZ0KHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29ucyh2YWx1ZSwgdGhpcyk7XG4gICAgfVxuICAgIHRvQXJyYXkoKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgICBsZXQgcmVzdCA9IHRoaXM7XG4gICAgICAgIHdoaWxlICghcmVzdC5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIGFyci5wdXNoKHJlc3QuY2FyKTtcbiAgICAgICAgICAgIHJlc3QgPSByZXN0LmNkcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH1cbn1cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgTmlsIGV4dGVuZHMgSUxpc3Qge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbiAgICBnZXQgY2FyKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VtcHR5IGxpc3QnKTtcbiAgICB9XG4gICAgZ2V0IGNkcigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbXB0eSBsaXN0Jyk7XG4gICAgfVxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgQ29ucyBleHRlbmRzIElMaXN0IHtcbiAgICBjb25zdHJ1Y3RvcihjYXIsIGNkcikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9jYXIgPSBjYXI7XG4gICAgICAgIHRoaXMuX2NkciA9IGNkcjtcbiAgICB9XG4gICAgZ2V0IGNhcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcjtcbiAgICB9XG4gICAgZ2V0IGNkcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NkcjtcbiAgICB9XG4gICAgaXNFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbi8qKlxuICogQ29tcHV0ZXMgdGhlIHNob3J0ZXN0IGVkaXQgc2NyaXB0IGJldHdlZW4gdHdvIGFycmF5cyBvZiBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gZnJvbSAtIEFuIGFycmF5IG9mIHN0cmluZyB0aGUgZWRpdCBzdGFydHMgZnJvbS5cbiAqIEBwYXJhbSB0byAtIEFuIGFycmF5IG9mIHN0cmluZyB0aGUgZWRpdCBnb2VzIHRvLlxuICogQHBhcmFtIFtsaW1pdD0tMV0gLSBVcHBlciBsaW1pdCBvZiBlZGl0IGRpc3RhbmNlIHRvIGJlIHNlYXJjaGVkLlxuICogSWYgbmVnYXRpdmUsIHRoZXJlIGlzIG5vIGxpbWl0LlxuICogQHJldHVybnMgVGhlIHNob3J0ZXN0IGVkaXQgc2NyaXB0IHRoYXQgdHVybnMgYGZyb21gIGludG8gYHRvYDtcbiAqIGB1bmRlZmluZWRgIGlmIG5vIGVkaXQgc2NyaXB0IGlzIGZvdW5kIGluIHRoZSBnaXZlbiByYW5nZS5cbiAqL1xuY29uc3Qgc2hvcnRlc3RFZGl0U2NyaXB0ID0gKGZyb20sIHRvLCBsaW1pdCA9IC0xKSA9PiB7XG4gICAgY29uc3QgZnJvbUxlbiA9IGZyb20ubGVuZ3RoO1xuICAgIGNvbnN0IHRvTGVuID0gdG8ubGVuZ3RoO1xuICAgIGNvbnN0IG1heGQgPSBsaW1pdCA+PSAwID8gTWF0aC5taW4obGltaXQsIGZyb21MZW4gKyB0b0xlbikgOiBmcm9tTGVuICsgdG9MZW47XG4gICAgY29uc3QgbWVtID0gbmV3IEFycmF5KE1hdGgubWluKG1heGQsIGZyb21MZW4pICsgTWF0aC5taW4obWF4ZCwgdG9MZW4pICsgMSk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gTWF0aC5taW4obWF4ZCwgZnJvbUxlbik7XG4gICAgZm9yIChsZXQgZCA9IDA7IGQgPD0gbWF4ZDsgZCsrKSB7XG4gICAgICAgIGNvbnN0IG1pbmsgPSBkIDw9IGZyb21MZW4gPyAtZCA6IGQgLSAyICogZnJvbUxlbjtcbiAgICAgICAgY29uc3QgbWF4ayA9IGQgPD0gdG9MZW4gPyBkIDogLWQgKyAyICogdG9MZW47XG4gICAgICAgIGZvciAobGV0IGsgPSBtaW5rOyBrIDw9IG1heGs7IGsgKz0gMikge1xuICAgICAgICAgICAgbGV0IGk7XG4gICAgICAgICAgICBsZXQgc2NyaXB0O1xuICAgICAgICAgICAgaWYgKGQgPT09IDApIHtcbiAgICAgICAgICAgICAgICBpID0gMDtcbiAgICAgICAgICAgICAgICBzY3JpcHQgPSBuZXcgTmlsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChrID09PSAtZCkge1xuICAgICAgICAgICAgICAgIGkgPSBtZW1bb2Zmc2V0ICsgayArIDFdLmkgKyAxO1xuICAgICAgICAgICAgICAgIHNjcmlwdCA9IG1lbVtvZmZzZXQgKyBrICsgMV0uc2NyaXB0LnVuc2hpZnQobmV3IERlbGV0ZShpICsgaykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoayA9PT0gZCkge1xuICAgICAgICAgICAgICAgIGkgPSBtZW1bb2Zmc2V0ICsgayAtIDFdLmk7XG4gICAgICAgICAgICAgICAgc2NyaXB0ID0gbWVtW29mZnNldCArIGsgLSAxXS5zY3JpcHQudW5zaGlmdChuZXcgSW5zZXJ0KGkgKyBrIC0gMSwgdG9baSArIGsgLSAxXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmkgPSBtZW1bb2Zmc2V0ICsgayArIDFdLmkgKyAxO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhpID0gbWVtW29mZnNldCArIGsgLSAxXS5pO1xuICAgICAgICAgICAgICAgIGlmICh2aSA+IGhpKSB7XG4gICAgICAgICAgICAgICAgICAgIGkgPSB2aTtcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0ID0gbWVtW29mZnNldCArIGsgKyAxXS5zY3JpcHQudW5zaGlmdChuZXcgRGVsZXRlKGkgKyBrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpID0gaGk7XG4gICAgICAgICAgICAgICAgICAgIHNjcmlwdCA9IG1lbVtvZmZzZXQgKyBrIC0gMV0uc2NyaXB0LnVuc2hpZnQobmV3IEluc2VydChpICsgayAtIDEsIHRvW2kgKyBrIC0gMV0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoaSA8IGZyb21MZW4gJiYgaSArIGsgPCB0b0xlbiAmJiBmcm9tW2ldID09PSB0b1tpICsga10pIHtcbiAgICAgICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoayA9PT0gdG9MZW4gLSBmcm9tTGVuICYmIGkgPT09IGZyb21MZW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NyaXB0LnRvQXJyYXkoKS5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtZW1bb2Zmc2V0ICsga10gPSB7IGksIHNjcmlwdCB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59O1xuZXhwb3J0cy5zaG9ydGVzdEVkaXRTY3JpcHQgPSBzaG9ydGVzdEVkaXRTY3JpcHQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuSVRleHRFZGl0b3IgPSB2b2lkIDA7XG4vKipcbiAqIFRoZSBgSVRleHRFZGl0b3JgIHJlcHJlc2VudHMgYW4gaW50ZXJmYWNlIHRvIGEgdGV4dCBlZGl0b3IuXG4gKlxuICogQGludGVyZmFjZVxuICovXG5jbGFzcyBJVGV4dEVkaXRvciB7XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgY3VycmVudCBjdXJzb3IgcG9zaXRpb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBIHBvaW50IG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIGN1cnNvciBwb3NpdGlvbi5cbiAgICAgKi9cbiAgICBnZXRDdXJzb3JQb3NpdGlvbigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQ6IGdldEN1cnNvclBvc2l0aW9uJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGN1cnNvciBwb3NpdGlvbiB0byBhIHNwZWNpZmllZCBvbmUuXG4gICAgICovXG4gICAgc2V0Q3Vyc29yUG9zaXRpb24ocG9zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkOiBzZXRDdXJzb3JQb3NpdGlvbicpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzZWxlY3Rpb24gcmFuZ2UuXG4gICAgICogVGhpcyBtZXRob2QgYWxzbyBleHBlY3RzIHRoZSBjdXJzb3IgcG9zaXRpb24gdG8gYmUgbW92ZWQgYXMgdGhlIGVuZCBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlLlxuICAgICAqL1xuICAgIHNldFNlbGVjdGlvblJhbmdlKHJhbmdlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkOiBzZXRTZWxlY3Rpb25SYW5nZScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBsYXN0IHJvdyBpbmRleCBvZiB0aGUgdGV4dCBlZGl0b3IuXG4gICAgICovXG4gICAgZ2V0TGFzdFJvdygpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQ6IGdldExhc3RSb3cnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBlZGl0b3IgYWNjZXB0cyBhIHRhYmxlIGF0IGEgcm93IHRvIGJlIGVkaXR0ZWQuXG4gICAgICogSXQgc2hvdWxkIHJldHVybiBgZmFsc2VgIGlmLCBmb3IgZXhhbXBsZSwgdGhlIHJvdyBpcyBpbiBhIGNvZGUgYmxvY2sgKG5vdCBNYXJrZG93bikuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93IC0gQSByb3cgaW5kZXggaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdGFibGUgYXQgdGhlIHJvdyBjYW4gYmUgZWRpdHRlZC5cbiAgICAgKi9cbiAgICBhY2NlcHRzVGFibGVFZGl0KHJvdykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZDogYWNjZXB0c1RhYmxlRWRpdCcpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGluZSBzdHJpbmcgYXQgYSByb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93IC0gUm93IGluZGV4LCBzdGFydHMgZnJvbSBgMGAuXG4gICAgICogQHJldHVybnMgVGhlIGxpbmUgYXQgdGhlIHNwZWNpZmllZCByb3cuXG4gICAgICogVGhlIGxpbmUgbXVzdCBub3QgY29udGFpbiBhbiBFT0wgbGlrZSBgXCJcXG5cImAgb3IgYFwiXFxyXCJgLlxuICAgICAqL1xuICAgIGdldExpbmUocm93KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkOiBnZXRMaW5lJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluc2VydHMgYSBsaW5lIGF0IGEgc3BlY2lmaWVkIHJvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgLSBSb3cgaW5kZXgsIHN0YXJ0cyBmcm9tIGAwYC5cbiAgICAgKiBAcGFyYW0gbGluZSAtIEEgc3RyaW5nIHRvIGJlIGluc2VydGVkLlxuICAgICAqIFRoaXMgbXVzdCBub3QgY29udGFpbiBhbiBFT0wgbGlrZSBgXCJcXG5cImAgb3IgYFwiXFxyXCJgLlxuICAgICAqL1xuICAgIGluc2VydExpbmUocm93LCBsaW5lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkOiBpbnNlcnRMaW5lJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgYSBsaW5lIGF0IGEgc3BlY2lmaWVkIHJvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgLSBSb3cgaW5kZXgsIHN0YXJ0cyBmcm9tIGAwYC5cbiAgICAgKi9cbiAgICBkZWxldGVMaW5lKHJvdykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZDogZGVsZXRlTGluZScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlIGxpbmVzIGluIGEgc3BlY2lmaWVkIHJhbmdlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0YXJ0Um93IC0gU3RhcnQgcm93IGluZGV4LCBzdGFydHMgZnJvbSBgMGAuXG4gICAgICogQHBhcmFtIGVuZFJvdyAtIEVuZCByb3cgaW5kZXguXG4gICAgICogTGluZXMgZnJvbSBgc3RhcnRSb3dgIHRvIGBlbmRSb3cgLSAxYCBpcyByZXBsYWNlZC5cbiAgICAgKiBAcGFyYW0gbGluZXMgLSBBbiBhcnJheSBvZiBzdHJpbmcuXG4gICAgICogRWFjaCBzdHJpbmdzIG11c3Qgbm90IGNvbnRhaW4gYW4gRU9MIGxpa2UgYFwiXFxuXCJgIG9yIGBcIlxcclwiYC5cbiAgICAgKi9cbiAgICByZXBsYWNlTGluZXMoc3RhcnRSb3csIGVuZFJvdywgbGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQ6IHJlcGxhY2VMaW5lcycpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBCYXRjaGVzIG11bHRpcGxlIG9wZXJhdGlvbnMgYXMgYSBzaW5nbGUgdW5kby9yZWRvIHN0ZXAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZnVuYyAtIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBleGVjdXRlcyBzb21lIG9wZXJhdGlvbnMgb24gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqL1xuICAgIHRyYW5zYWN0KGZ1bmMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQ6IHRyYW5zYWN0Jyk7XG4gICAgfVxufVxuZXhwb3J0cy5JVGV4dEVkaXRvciA9IElUZXh0RWRpdG9yO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRlZmF1bHRPcHRpb25zID0gZXhwb3J0cy5vcHRpb25zV2l0aERlZmF1bHRzID0gdm9pZCAwO1xuY29uc3QgYWxpZ25tZW50XzEgPSByZXF1aXJlKFwiLi9hbGlnbm1lbnRcIik7XG5jb25zdCBmb3JtYXR0ZXJfMSA9IHJlcXVpcmUoXCIuL2Zvcm1hdHRlclwiKTtcbmNvbnN0IERFRkFVTFRfVEVYVF9XSURUSF9PUFRJT05TID0ge1xuICAgIG5vcm1hbGl6ZTogdHJ1ZSxcbiAgICB3aWRlQ2hhcnM6IG5ldyBTZXQoKSxcbiAgICBuYXJyb3dDaGFyczogbmV3IFNldCgpLFxuICAgIGFtYmlndW91c0FzV2lkZTogZmFsc2UsXG59O1xuY29uc3QgREVGQVVMVF9PUFRJT05TID0ge1xuICAgIGxlZnRNYXJnaW5DaGFyczogbmV3IFNldCgpLFxuICAgIGZvcm1hdFR5cGU6IGZvcm1hdHRlcl8xLkZvcm1hdFR5cGUuTk9STUFMLFxuICAgIG1pbkRlbGltaXRlcldpZHRoOiAzLFxuICAgIGRlZmF1bHRBbGlnbm1lbnQ6IGFsaWdubWVudF8xLkRlZmF1bHRBbGlnbm1lbnQuTEVGVCxcbiAgICBoZWFkZXJBbGlnbm1lbnQ6IGFsaWdubWVudF8xLkhlYWRlckFsaWdubWVudC5GT0xMT1csXG4gICAgc21hcnRDdXJzb3I6IGZhbHNlLFxufTtcbi8qKlxuICogQ3JlYXRlIGFuIE9wdGlvbnMgb2JqZWN0IGZvciB0aGUgZm9ybWF0dGVyLlxuICogVGhlIGRlZmF1bHQgdmFsdWVzIGFyZSB1c2VkIGZvciBvcHRpb25zIHRoYXQgYXJlIG5vdCBzcGVjaWZpZWQuXG4gKlxuICogVGhlIGF2YWlsYWJsZSBvcHRpb25zIGFuZCBkZWZhdWx0IHZhbHVlcyBhcmUgbGlzdGVkIGJlbG93LlxuICpcbiAqIHwgcHJvcGVydHkgbmFtZSAgICAgICB8IHR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZWZhdWx0IHZhbHVlICAgICAgICAgICAgfFxuICogfCAtLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gKiB8IGBsZWZ0TWFyZ2luQ2hhcnNgICAgfCB7QGxpbmsgU2V0fSZsdDt7QGxpbmsgc3RyaW5nfSZndDsgfCBBIHNldCBvZiBhZGRpdGlvbmFsIGxlZnQgbWFyZ2luIGNoYXJhY3RlcnMuICAgICAgICAgICAgIHwgYG5ldyBTZXQoKWAgICAgICAgICAgICAgIHxcbiAqIHwgYGZvcm1hdFR5cGVgICAgICAgICB8IHtAbGluayBGb3JtYXRUeXBlfSAgICAgICAgICAgICAgICB8IEZvcm1hdCB0eXBlLCBub3JtYWwgb3Igd2Vhay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgRm9ybWF0VHlwZS5OT1JNQUxgICAgICAgfFxuICogfCBgbWluRGVsaW1pdGVyV2lkdGhgIHwge0BsaW5rIG51bWJlcn0gICAgICAgICAgICAgICAgICAgIHwgTWluaW11bSB3aWR0aCBvZiBkZWxpbWl0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGAzYCAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGBkZWZhdWx0QWxpZ25tZW50YCAgfCB7QGxpbmsgRGVmYXVsdEFsaWdubWVudH0gICAgICAgICAgfCBEZWZhdWx0IGFsaWdubWVudCBvZiBjb2x1bW5zLiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYERlZmF1bHRBbGlnbm1lbnQuTEVGVGAgIHxcbiAqIHwgYGhlYWRlckFsaWdubWVudGAgICB8IHtAbGluayBIZWFkZXJBbGlnbm1lbnR9ICAgICAgICAgICB8IEFsaWdubWVudCBvZiBoZWFkZXIgY2VsbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgSGVhZGVyQWxpZ25tZW50LkZPTExPV2AgfFxuICogfCBgdGV4dFdpZHRoT3B0aW9uc2AgIHwge0BsaW5rIFRleHRXaWR0aE9wdGlvbnN9ICAgICAgICAgIHwgQW4gb2JqZWN0IGNvbnRhaW5pbmcgb3B0aW9ucyBmb3IgY29tcHV0aW5nIHRleHQgd2lkdGhzLiB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGBzbWFydEN1cnNvcmAgICAgICAgfCB7QGxpbmsgYm9vbGVhbn0gICAgICAgICAgICAgICAgICAgfCBFbmFibGVzIFwiU21hcnQgQ3Vyc29yXCIgZmVhdHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgfCBgZmFsc2VgICAgICAgICAgICAgICAgICAgfFxuICpcbiAqIFRoZSBhdmFpbGFibGUgb3B0aW9ucyBmb3IgYHRleHRXaWR0aE9wdGlvbnNgIGFyZSB0aGUgZm9sbG93aW5nIG9uZXMuXG4gKlxuICogfCBwcm9wZXJ0eSBuYW1lICAgICB8IHR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGVmYXVsdCB2YWx1ZSB8XG4gKiB8IC0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHxcbiAqIHwgYG5vcm1hbGl6ZWAgICAgICAgfCB7QGxpbmsgYm9vbGVhbn0gICAgICAgICAgICAgICAgICAgfCBOb3JtYWxpemVzIHRleHRzIGJlZm9yZSBjb21wdXRpbmcgdGV4dCB3aWR0aHMuICAgICAgICB8IGB0cnVlYCAgICAgICAgfFxuICogfCBgd2lkZUNoYXJzYCAgICAgICB8IHtAbGluayBTZXR9Jmx0O3tAbGluayBzdHJpbmd9Jmd0OyB8IEEgc2V0IG9mIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aWRlLiAgIHwgYG5ldyBTZXQoKWAgICB8XG4gKiB8IGBuYXJyb3dDaGFyc2AgICAgIHwge0BsaW5rIFNldH0mbHQ7e0BsaW5rIHN0cmluZ30mZ3Q7IHwgQSBzZXQgb2YgY2hhcmFjdGVycyB0aGF0IHNob3VsZCBiZSB0cmVhdGVkIGFzIG5hcnJvdy4gfCBgbmV3IFNldCgpYCAgIHxcbiAqIHwgYGFtYmlndW91c0FzV2lkZWAgfCB7QGxpbmsgYm9vbGVhbn0gICAgICAgICAgICAgICAgICAgfCBUcmVhdHMgRWFzdCBBc2lhbiBBbWJpZ3VvdXMgY2hhcmFjdGVycyBhcyB3aWRlLiAgICAgICB8IGBmYWxzZWAgICAgICAgfFxuICpcbiAqL1xuY29uc3Qgb3B0aW9uc1dpdGhEZWZhdWx0cyA9IChvcHRpb25zKSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUyksIG9wdGlvbnMpLCB7IHRleHRXaWR0aE9wdGlvbnM6IG9wdGlvbnMudGV4dFdpZHRoT3B0aW9uc1xuICAgICAgICA/IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9URVhUX1dJRFRIX09QVElPTlMpLCBvcHRpb25zLnRleHRXaWR0aE9wdGlvbnMpIDogREVGQVVMVF9URVhUX1dJRFRIX09QVElPTlMgfSkpO1xuZXhwb3J0cy5vcHRpb25zV2l0aERlZmF1bHRzID0gb3B0aW9uc1dpdGhEZWZhdWx0cztcbmV4cG9ydHMuZGVmYXVsdE9wdGlvbnMgPSBleHBvcnRzLm9wdGlvbnNXaXRoRGVmYXVsdHMoe30pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlRhYmxlRWRpdG9yID0gZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldCA9IGV4cG9ydHMuX2NyZWF0ZUlzVGFibGVGb3JtdWxhUmVnZXggPSBleHBvcnRzLl9jcmVhdGVJc1RhYmxlUm93UmVnZXggPSBleHBvcnRzLlNvcnRPcmRlciA9IHZvaWQgMDtcbmNvbnN0IGVkaXRfc2NyaXB0XzEgPSByZXF1aXJlKFwiLi9lZGl0LXNjcmlwdFwiKTtcbmNvbnN0IGZvY3VzXzEgPSByZXF1aXJlKFwiLi9mb2N1c1wiKTtcbmNvbnN0IGZvcm1hdHRlcl8xID0gcmVxdWlyZShcIi4vZm9ybWF0dGVyXCIpO1xuY29uc3QgcGFyc2VyXzEgPSByZXF1aXJlKFwiLi9wYXJzZXJcIik7XG5jb25zdCBwb2ludF8xID0gcmVxdWlyZShcIi4vcG9pbnRcIik7XG5jb25zdCByYW5nZV8xID0gcmVxdWlyZShcIi4vcmFuZ2VcIik7XG5jb25zdCB0YWJsZV8xID0gcmVxdWlyZShcIi4vdGFibGVcIik7XG5jb25zdCB0YWJsZV9jZWxsXzEgPSByZXF1aXJlKFwiLi90YWJsZS1jZWxsXCIpO1xuY29uc3QgdGFibGVfcm93XzEgPSByZXF1aXJlKFwiLi90YWJsZS1yb3dcIik7XG52YXIgU29ydE9yZGVyO1xuKGZ1bmN0aW9uIChTb3J0T3JkZXIpIHtcbiAgICBTb3J0T3JkZXJbXCJBc2NlbmRpbmdcIl0gPSBcImFzY2VuZGluZ1wiO1xuICAgIFNvcnRPcmRlcltcIkRlc2NlbmRpbmdcIl0gPSBcImRlc2NlbmRpbmdcIjtcbn0pKFNvcnRPcmRlciA9IGV4cG9ydHMuU29ydE9yZGVyIHx8IChleHBvcnRzLlNvcnRPcmRlciA9IHt9KSk7XG4vKipcbiAqIENyZWF0ZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0IHRoYXQgbWF0Y2hlcyBhIHRhYmxlIHJvdy5cbiAqXG4gKiBAcGFyYW0gbGVmdE1hcmdpbkNoYXJzIC0gQSBzZXQgb2YgYWRkaXRpb25hbCBsZWZ0IG1hcmdpbiBjaGFyYWN0ZXJzLlxuICogQSBwaXBlIGB8YCwgYSBiYWNrc2xhc2ggYFxcYCwgYW5kIGEgYmFja3F1b3RlIHdpbGwgYmUgaWdub3JlZC5cbiAqIEByZXR1cm5zIEEgcmVndWxhciBleHByZXNzaW9uIG9iamVjdCB0aGF0IG1hdGNoZXMgYSB0YWJsZSByb3cuXG4gKi9cbmNvbnN0IF9jcmVhdGVJc1RhYmxlUm93UmVnZXggPSAobGVmdE1hcmdpbkNoYXJzKSA9PiBuZXcgUmVnRXhwKGBeJHtwYXJzZXJfMS5tYXJnaW5SZWdleFNyYyhsZWZ0TWFyZ2luQ2hhcnMpfVxcXFx8YCwgJ3UnKTtcbmV4cG9ydHMuX2NyZWF0ZUlzVGFibGVSb3dSZWdleCA9IF9jcmVhdGVJc1RhYmxlUm93UmVnZXg7XG5jb25zdCBfY3JlYXRlSXNUYWJsZUZvcm11bGFSZWdleCA9IChsZWZ0TWFyZ2luQ2hhcnMpID0+IG5ldyBSZWdFeHAoYF4ke3BhcnNlcl8xLm1hcmdpblJlZ2V4U3JjKGxlZnRNYXJnaW5DaGFycyl9PCEtLSA/ListLT4kYCwgJ3UnKTtcbmV4cG9ydHMuX2NyZWF0ZUlzVGFibGVGb3JtdWxhUmVnZXggPSBfY3JlYXRlSXNUYWJsZUZvcm11bGFSZWdleDtcbi8qKlxuICogQ29tcHV0ZXMgbmV3IGZvY3VzIG9mZnNldCBmcm9tIGluZm9ybWF0aW9uIG9mIGNvbXBsZXRlZCBhbmQgZm9ybWF0dGVkIHRhYmxlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIGZvY3VzIC0gQSBmb2N1cy5cbiAqIEBwYXJhbSB0YWJsZSAtIEEgY29tcGxldGVkIGJ1dCBub3QgZm9ybWF0dGVkIHRhYmxlIHdpdGggb3JpZ2luYWwgY2VsbCBjb250ZW50cy5cbiAqIEBwYXJhbSBmb3JtYXR0ZWQgLSBJbmZvcm1hdGlvbiBvZiB0aGUgZm9ybWF0dGVkIHRhYmxlLlxuICogQHBhcmFtIG1vdmVkIC0gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGZvY3VzIHBvc2l0aW9uIGlzIG1vdmVkIGJ5IGEgY29tbWFuZCBvciBub3QuXG4gKi9cbmNvbnN0IF9jb21wdXRlTmV3T2Zmc2V0ID0gKGZvY3VzLCB0YWJsZSwgZm9ybWF0dGVkLCBtb3ZlZCkgPT4ge1xuICAgIGlmIChtb3ZlZCkge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRGb2N1c2VkQ2VsbCA9IGZvcm1hdHRlZC50YWJsZS5nZXRGb2N1c2VkQ2VsbChmb2N1cyk7XG4gICAgICAgIGlmIChmb3JtYXR0ZWRGb2N1c2VkQ2VsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkRm9jdXNlZENlbGwuY29tcHV0ZVJhd09mZnNldCgwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9jdXMuY29sdW1uIDwgMCA/IGZvcm1hdHRlZC5tYXJnaW5MZWZ0Lmxlbmd0aCA6IDA7XG4gICAgfVxuICAgIGNvbnN0IGZvY3VzZWRDZWxsID0gdGFibGUuZ2V0Rm9jdXNlZENlbGwoZm9jdXMpO1xuICAgIGNvbnN0IGZvcm1hdHRlZEZvY3VzZWRDZWxsID0gZm9ybWF0dGVkLnRhYmxlLmdldEZvY3VzZWRDZWxsKGZvY3VzKTtcbiAgICBpZiAoZm9jdXNlZENlbGwgIT09IHVuZGVmaW5lZCAmJiBmb3JtYXR0ZWRGb2N1c2VkQ2VsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRPZmZzZXQgPSBNYXRoLm1pbihmb2N1c2VkQ2VsbC5jb21wdXRlQ29udGVudE9mZnNldChmb2N1cy5vZmZzZXQpLCBmb3JtYXR0ZWRGb2N1c2VkQ2VsbC5jb250ZW50Lmxlbmd0aCk7XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRGb2N1c2VkQ2VsbC5jb21wdXRlUmF3T2Zmc2V0KGNvbnRlbnRPZmZzZXQpO1xuICAgIH1cbiAgICByZXR1cm4gZm9jdXMuY29sdW1uIDwgMCA/IGZvcm1hdHRlZC5tYXJnaW5MZWZ0Lmxlbmd0aCA6IDA7XG59O1xuZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldCA9IF9jb21wdXRlTmV3T2Zmc2V0O1xuLyoqXG4gKiBUaGUgYFRhYmxlRWRpdG9yYCBjbGFzcyBpcyBhdCB0aGUgY2VudGVyIG9mIHRoZSBtYXJrZG93bi10YWJsZS1lZGl0b3IuXG4gKiBXaGVuIGEgY29tbWFuZCBpcyBleGVjdXRlZCwgaXQgcmVhZHMgYSB0YWJsZSBmcm9tIHRoZSB0ZXh0IGVkaXRvciwgZG9lcyBzb21lIG9wZXJhdGlvbiBvbiB0aGVcbiAqIHRhYmxlLCBhbmQgdGhlbiBhcHBseSB0aGUgcmVzdWx0IHRvIHRoZSB0ZXh0IGVkaXRvci5cbiAqXG4gKiBUbyB1c2UgdGhpcyBjbGFzcywgdGhlIHRleHQgZWRpdG9yIChvciBhbiBpbnRlcmZhY2UgdG8gaXQpIG11c3QgaW1wbGVtZW50IHtAbGluayBJVGV4dEVkaXRvcn0uXG4gKi9cbmNsYXNzIFRhYmxlRWRpdG9yIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHRhYmxlIGVkaXRvciBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0ZXh0RWRpdG9yIC0gQSB0ZXh0IGVkaXRvciBpbnRlcmZhY2UuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IodGV4dEVkaXRvcikge1xuICAgICAgICB0aGlzLl90ZXh0RWRpdG9yID0gdGV4dEVkaXRvcjtcbiAgICAgICAgLy8gc21hcnQgY3Vyc29yXG4gICAgICAgIHRoaXMuX3NjQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlc2V0cyB0aGUgc21hcnQgY3Vyc29yLlxuICAgICAqIENhbGwgdGhpcyBtZXRob2Qgd2hlbiB0aGUgdGFibGUgZWRpdG9yIGlzIGluYWN0aXZhdGVkLlxuICAgICAqL1xuICAgIHJlc2V0U21hcnRDdXJzb3IoKSB7XG4gICAgICAgIHRoaXMuX3NjQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgY3Vyc29yIGlzIGluIGEgdGFibGUgcm93LiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBjdXJzb3IgaXMgaW4gYVxuICAgICAqIHRhYmxlIGZvcm11bGEgcm93IChzZWUgY3Vyc29ySXNJblRhYmxlRm9ybXVsYSkuXG4gICAgICogVGhpcyBpcyB1c2VmdWwgdG8gY2hlY2sgd2hldGhlciB0aGUgdGFibGUgZWRpdG9yIHNob3VsZCBiZSBhY3RpdmF0ZWQgb3Igbm90LlxuICAgICAqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBjdXJzb3IgaXMgaW4gYSB0YWJsZSByb3cuXG4gICAgICovXG4gICAgY3Vyc29ySXNJblRhYmxlKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcmUgPSBleHBvcnRzLl9jcmVhdGVJc1RhYmxlUm93UmVnZXgob3B0aW9ucy5sZWZ0TWFyZ2luQ2hhcnMpO1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLl90ZXh0RWRpdG9yLmdldEN1cnNvclBvc2l0aW9uKCk7XG4gICAgICAgIHJldHVybiAodGhpcy5fdGV4dEVkaXRvci5hY2NlcHRzVGFibGVFZGl0KHBvcy5yb3cpICYmXG4gICAgICAgICAgICByZS50ZXN0KHRoaXMuX3RleHRFZGl0b3IuZ2V0TGluZShwb3Mucm93KSkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGN1cnNvciBpcyBpbiBhIGZvcm11bGEgcm93IGJlbG93IGEgdGFibGUuXG4gICAgICogVGhpcyBpcyB1c2VmdWwgdG8gY2hlY2sgd2hldGhlciB0aGUgdGFibGUgZWRpdG9yIHNob3VsZCBiZSBhY3RpdmF0ZWQgb3Igbm90LlxuICAgICAqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBjdXJzb3IgaXMgaW4gYSBmb3JtdWxhIHJvdy5cbiAgICAgKi9cbiAgICBjdXJzb3JJc0luVGFibGVGb3JtdWxhKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZm9ybXVsYVJlID0gZXhwb3J0cy5fY3JlYXRlSXNUYWJsZUZvcm11bGFSZWdleChvcHRpb25zLmxlZnRNYXJnaW5DaGFycyk7XG4gICAgICAgIGNvbnN0IHBvcyA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0Q3Vyc29yUG9zaXRpb24oKTtcbiAgICAgICAgcmV0dXJuICh0aGlzLl90ZXh0RWRpdG9yLmFjY2VwdHNUYWJsZUVkaXQocG9zLnJvdykgJiZcbiAgICAgICAgICAgIGZvcm11bGFSZS50ZXN0KHRoaXMuX3RleHRFZGl0b3IuZ2V0TGluZShwb3Mucm93KSkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGaW5kcyBhIHRhYmxlIHVuZGVyIHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHVuZGVmaW5lZCBpZiB0aGVyZSBpcyBubyB0YWJsZSBvciB0aGUgZGV0ZXJtaW5lZCBmb2N1cyBpcyBpbnZhbGlkLlxuICAgICAqL1xuICAgIF9maW5kVGFibGUob3B0aW9ucykge1xuICAgICAgICBjb25zdCByZSA9IGV4cG9ydHMuX2NyZWF0ZUlzVGFibGVSb3dSZWdleChvcHRpb25zLmxlZnRNYXJnaW5DaGFycyk7XG4gICAgICAgIGNvbnN0IGZvcm11bGFSZSA9IGV4cG9ydHMuX2NyZWF0ZUlzVGFibGVGb3JtdWxhUmVnZXgob3B0aW9ucy5sZWZ0TWFyZ2luQ2hhcnMpO1xuICAgICAgICBsZXQgcG9zID0gdGhpcy5fdGV4dEVkaXRvci5nZXRDdXJzb3JQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCBsYXN0Um93ID0gdGhpcy5fdGV4dEVkaXRvci5nZXRMYXN0Um93KCk7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgICAgIGNvbnN0IGZvcm11bGFMaW5lcyA9IFtdO1xuICAgICAgICBsZXQgc3RhcnRSb3cgPSBwb3Mucm93O1xuICAgICAgICBsZXQgZW5kUm93ID0gcG9zLnJvdzsgLy8gZW5kUm93IGlzIGxhc3QgbGluZSBiZWZvcmUgZm9tdWxhc1xuICAgICAgICAvLyBpZiB0aGUgY3Vyc29yIGlzIG9uIGZvcm11bGEgbGluZSwgd29yayB1cCB1bnRpbCB3ZSBmaW5kIHRoZSBsYXN0IHJvdyBvZiB0aGUgdGFibGVcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IGxpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocG9zLnJvdyk7XG4gICAgICAgICAgICB3aGlsZSAoZm9ybXVsYVJlLnRlc3QobGluZSkgJiYgcG9zLnJvdyA+PSAwKSB7XG4gICAgICAgICAgICAgICAgcG9zID0gbmV3IHBvaW50XzEuUG9pbnQocG9zLnJvdyAtIDEsIHBvcy5jb2x1bW4pO1xuICAgICAgICAgICAgICAgIGVuZFJvdy0tO1xuICAgICAgICAgICAgICAgIGxpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocG9zLnJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gY3VycmVudCBsaW5lXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocG9zLnJvdyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3RleHRFZGl0b3IuYWNjZXB0c1RhYmxlRWRpdChwb3Mucm93KSB8fCAhcmUudGVzdChsaW5lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZpb3VzIGxpbmVzXG4gICAgICAgIGZvciAobGV0IHJvdyA9IHBvcy5yb3cgLSAxOyByb3cgPj0gMDsgcm93LS0pIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocm93KTtcbiAgICAgICAgICAgIGlmICghdGhpcy5fdGV4dEVkaXRvci5hY2NlcHRzVGFibGVFZGl0KHJvdykgfHwgIXJlLnRlc3QobGluZSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpbmVzLnVuc2hpZnQobGluZSk7XG4gICAgICAgICAgICBzdGFydFJvdyA9IHJvdztcbiAgICAgICAgfVxuICAgICAgICAvLyBuZXh0IGxpbmVzXG4gICAgICAgIGZvciAobGV0IHJvdyA9IHBvcy5yb3cgKyAxOyByb3cgPD0gbGFzdFJvdzsgcm93KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocm93KTtcbiAgICAgICAgICAgIGlmICghdGhpcy5fdGV4dEVkaXRvci5hY2NlcHRzVGFibGVFZGl0KHJvdykgfHwgIXJlLnRlc3QobGluZSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpbmVzLnB1c2gobGluZSk7XG4gICAgICAgICAgICBlbmRSb3cgPSByb3c7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZm9ybXVsYSBsaW5lc1xuICAgICAgICBmb3IgKGxldCByb3cgPSBlbmRSb3cgKyAxOyByb3cgPD0gbGFzdFJvdzsgcm93KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocm93KTtcbiAgICAgICAgICAgIGlmICghdGhpcy5fdGV4dEVkaXRvci5hY2NlcHRzVGFibGVFZGl0KHJvdykgfHwgIWZvcm11bGFSZS50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3JtdWxhTGluZXMucHVzaChsaW5lKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByYW5nZSA9IG5ldyByYW5nZV8xLlJhbmdlKG5ldyBwb2ludF8xLlBvaW50KHN0YXJ0Um93LCAwKSwgbmV3IHBvaW50XzEuUG9pbnQoZW5kUm93LCBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGgpKTtcbiAgICAgICAgY29uc3QgdGFibGUgPSBwYXJzZXJfMS5yZWFkVGFibGUobGluZXMsIG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBmb2N1cyA9IHRhYmxlLmZvY3VzT2ZQb3NpdGlvbihwb3MsIHN0YXJ0Um93KTtcbiAgICAgICAgaWYgKGZvY3VzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IFZhbGlkYXRlIHRoaXMgZm9yIGNvcnJlY3RuZXNzXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmluZHMgYSB0YWJsZSBhbmQgZG9lcyBhbiBvcGVyYXRpb24gd2l0aCBpdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIGZ1bmMgLSBBIGZ1bmN0aW9uIHRoYXQgZG9lcyBzb21lIG9wZXJhdGlvbiBvbiB0YWJsZSBpbmZvcm1hdGlvbiBvYnRhaW5lZCBieVxuICAgICAqIHtAbGluayBUYWJsZUVkaXRvciNfZmluZFRhYmxlfS5cbiAgICAgKi9cbiAgICBfd2l0aFRhYmxlKG9wdGlvbnMsIGZ1bmMpIHtcbiAgICAgICAgY29uc3QgaW5mbyA9IHRoaXMuX2ZpbmRUYWJsZShvcHRpb25zKTtcbiAgICAgICAgaWYgKGluZm8gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jKGluZm8pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIGxpbmVzIGluIGEgZ2l2ZW4gcmFuZ2UgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gc3RhcnRSb3cgLSBTdGFydCByb3cgaW5kZXgsIHN0YXJ0cyBmcm9tIGAwYC5cbiAgICAgKiBAcGFyYW0gZW5kUm93IC0gRW5kIHJvdyBpbmRleC5cbiAgICAgKiBMaW5lcyBmcm9tIGBzdGFydFJvd2AgdG8gYGVuZFJvdyAtIDFgIGFyZSByZXBsYWNlZC5cbiAgICAgKiBAcGFyYW0gbmV3TGluZXMgLSBOZXcgbGluZXMuXG4gICAgICogQHBhcmFtIFtvbGRMaW5lcz11bmRlZmluZWRdIC0gT2xkIGxpbmVzIHRvIGJlIHJlcGxhY2VkLlxuICAgICAqL1xuICAgIF91cGRhdGVMaW5lcyhzdGFydFJvdywgZW5kUm93LCBuZXdMaW5lcywgb2xkTGluZXMgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIGFwcGx5IHRoZSBzaG9ydGVzdCBlZGl0IHNjcmlwdFxuICAgICAgICAgICAgLy8gaWYgYSB0YWJsZSBpcyBlZGl0ZWQgaW4gYSBub3JtYWwgbWFubmVyLCB0aGUgZWRpdCBkaXN0YW5jZSBuZXZlciBleGNlZWRzIDNcbiAgICAgICAgICAgIGNvbnN0IHNlcyA9IGVkaXRfc2NyaXB0XzEuc2hvcnRlc3RFZGl0U2NyaXB0KG9sZExpbmVzLCBuZXdMaW5lcywgMyk7XG4gICAgICAgICAgICBpZiAoc2VzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBlZGl0X3NjcmlwdF8xLmFwcGx5RWRpdFNjcmlwdCh0aGlzLl90ZXh0RWRpdG9yLCBzZXMsIHN0YXJ0Um93KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5yZXBsYWNlTGluZXMoc3RhcnRSb3csIGVuZFJvdywgbmV3TGluZXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNb3ZlcyB0aGUgY3Vyc29yIHBvc2l0aW9uIHRvIHRoZSBmb2N1c2VkIGNlbGwsXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSBzdGFydFJvdyAtIFJvdyBpbmRleCB3aGVyZSB0aGUgdGFibGUgc3RhcnRzIGluIHRoZSB0ZXh0IGVkaXRvci5cbiAgICAgKiBAcGFyYW0gdGFibGUgLSBBIHRhYmxlLlxuICAgICAqIEBwYXJhbSBmb2N1cyAtIEEgZm9jdXMgdG8gd2hpY2ggdGhlIGN1cnNvciB3aWxsIGJlIG1vdmVkLlxuICAgICAqL1xuICAgIF9tb3ZlVG9Gb2N1cyhzdGFydFJvdywgdGFibGUsIGZvY3VzKSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IHRhYmxlLnBvc2l0aW9uT2ZGb2N1cyhmb2N1cywgc3RhcnRSb3cpO1xuICAgICAgICBpZiAocG9zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2V0Q3Vyc29yUG9zaXRpb24ocG9zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIHRoZSBmb2N1c2VkIGNlbGwuXG4gICAgICogSWYgdGhlIGNlbGwgaGFzIG5vIGNvbnRlbnQgdG8gYmUgc2VsZWN0ZWQsIHRoZW4ganVzdCBtb3ZlcyB0aGUgY3Vyc29yIHBvc2l0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gc3RhcnRSb3cgLSBSb3cgaW5kZXggd2hlcmUgdGhlIHRhYmxlIHN0YXJ0cyBpbiB0aGUgdGV4dCBlZGl0b3IuXG4gICAgICogQHBhcmFtIHRhYmxlIC0gQSB0YWJsZS5cbiAgICAgKiBAcGFyYW0gZm9jdXMgLSBBIGZvY3VzIHRvIGJlIHNlbGVjdGVkLlxuICAgICAqL1xuICAgIF9zZWxlY3RGb2N1cyhzdGFydFJvdywgdGFibGUsIGZvY3VzKSB7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gdGFibGUuc2VsZWN0aW9uUmFuZ2VPZkZvY3VzKGZvY3VzLCBzdGFydFJvdyk7XG4gICAgICAgIGlmIChyYW5nZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnNldFNlbGVjdGlvblJhbmdlKHJhbmdlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX21vdmVUb0ZvY3VzKHN0YXJ0Um93LCB0YWJsZSwgZm9jdXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZvcm1hdHMgdGhlIHRhYmxlIHVuZGVyIHRoZSBjdXJzb3IuXG4gICAgICovXG4gICAgZm9ybWF0KG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCB0YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlVG9Gb2N1cyhyYW5nZS5zdGFydC5yb3csIHRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZvcm1hdHMgYW5kIGVzY2FwZXMgZnJvbSB0aGUgdGFibGUuXG4gICAgICovXG4gICAgZXNjYXBlKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fd2l0aFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIC8vIGNvbXBsZXRlXG4gICAgICAgICAgICBjb25zdCBjb21wbGV0ZWQgPSBmb3JtYXR0ZXJfMS5jb21wbGV0ZVRhYmxlKHRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgIC8vIGZvcm1hdFxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUoY29tcGxldGVkLnRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICBjb25zdCBuZXdSb3cgPSByYW5nZS5lbmQucm93ICsgKGNvbXBsZXRlZC5kZWxpbWl0ZXJJbnNlcnRlZCA/IDIgOiAxKTtcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICBsZXQgbmV3UG9zO1xuICAgICAgICAgICAgICAgIGlmIChuZXdSb3cgPiB0aGlzLl90ZXh0RWRpdG9yLmdldExhc3RSb3coKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmluc2VydExpbmUobmV3Um93LCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIG5ld1BvcyA9IG5ldyBwb2ludF8xLlBvaW50KG5ld1JvdywgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoYF4ke3BhcnNlcl8xLm1hcmdpblJlZ2V4U3JjKG9wdGlvbnMubGVmdE1hcmdpbkNoYXJzKX1gLCAndScpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0TGluZSA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0TGluZShuZXdSb3cpO1xuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE9cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFyZ2luID0gcmUuZXhlYyhuZXh0TGluZSlbMF07XG4gICAgICAgICAgICAgICAgICAgIG5ld1BvcyA9IG5ldyBwb2ludF8xLlBvaW50KG5ld1JvdywgbWFyZ2luLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2V0Q3Vyc29yUG9zaXRpb24obmV3UG9zKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5yZXNldFNtYXJ0Q3Vyc29yKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbHRlcnMgdGhlIGFsaWdubWVudCBvZiB0aGUgZm9jdXNlZCBjb2x1bW4uXG4gICAgICovXG4gICAgYWxpZ25Db2x1bW4oYWxpZ25tZW50LCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIGxldCBuZXdGb2N1cyA9IGZvY3VzO1xuICAgICAgICAgICAgLy8gYWx0ZXIgYWxpZ25tZW50XG4gICAgICAgICAgICBsZXQgYWx0ZXJlZCA9IHRhYmxlO1xuICAgICAgICAgICAgaWYgKDAgPD0gbmV3Rm9jdXMuY29sdW1uICYmXG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMuY29sdW1uIDw9IGFsdGVyZWQuZ2V0SGVhZGVyV2lkdGgoKSAtIDEpIHtcbiAgICAgICAgICAgICAgICBhbHRlcmVkID0gZm9ybWF0dGVyXzEuYWx0ZXJBbGlnbm1lbnQodGFibGUsIG5ld0ZvY3VzLmNvbHVtbiwgYWxpZ25tZW50LCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGZvcm1hdFxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUoYWx0ZXJlZCwgb3B0aW9ucyk7XG4gICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldE9mZnNldChleHBvcnRzLl9jb21wdXRlTmV3T2Zmc2V0KG5ld0ZvY3VzLCB0YWJsZSwgZm9ybWF0dGVkLCBmYWxzZSkpO1xuICAgICAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlVG9Gb2N1cyhyYW5nZS5zdGFydC5yb3csIGZvcm1hdHRlZC50YWJsZSwgbmV3Rm9jdXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIHRoZSBmb2N1c2VkIGNlbGwgY29udGVudC5cbiAgICAgKi9cbiAgICBzZWxlY3RDZWxsKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCB0YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RGb2N1cyhyYW5nZS5zdGFydC5yb3csIHRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1vdmVzIHRoZSBmb2N1cyB0byBhbm90aGVyIGNlbGwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93T2Zmc2V0IC0gT2Zmc2V0IGluIHJvdy5cbiAgICAgKiBAcGFyYW0gY29sdW1uT2Zmc2V0IC0gT2Zmc2V0IGluIGNvbHVtbi5cbiAgICAgKi9cbiAgICBtb3ZlRm9jdXMocm93T2Zmc2V0LCBjb2x1bW5PZmZzZXQsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICBjb25zdCBzdGFydEZvY3VzID0gbmV3Rm9jdXM7XG4gICAgICAgICAgICAvLyBtb3ZlIGZvY3VzXG4gICAgICAgICAgICBpZiAocm93T2Zmc2V0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGFibGUuZ2V0SGVpZ2h0KCk7XG4gICAgICAgICAgICAgICAgLy8gc2tpcCBkZWxpbWl0ZXIgcm93XG4gICAgICAgICAgICAgICAgY29uc3Qgc2tpcCA9IG5ld0ZvY3VzLnJvdyA8IDEgJiYgbmV3Rm9jdXMucm93ICsgcm93T2Zmc2V0ID49IDFcbiAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgIDogbmV3Rm9jdXMucm93ID4gMSAmJiBuZXdGb2N1cy5yb3cgKyByb3dPZmZzZXQgPD0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KE1hdGgubWluKE1hdGgubWF4KG5ld0ZvY3VzLnJvdyArIHJvd09mZnNldCArIHNraXAsIDApLCBoZWlnaHQgPD0gMiA/IDAgOiBoZWlnaHQgLSAxKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uT2Zmc2V0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSB0YWJsZS5nZXRIZWFkZXJXaWR0aCgpO1xuICAgICAgICAgICAgICAgIGlmICghKG5ld0ZvY3VzLmNvbHVtbiA8IDAgJiYgY29sdW1uT2Zmc2V0IDwgMCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIShuZXdGb2N1cy5jb2x1bW4gPiB3aWR0aCAtIDEgJiYgY29sdW1uT2Zmc2V0ID4gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRDb2x1bW4oTWF0aC5taW4oTWF0aC5tYXgobmV3Rm9jdXMuY29sdW1uICsgY29sdW1uT2Zmc2V0LCAwKSwgd2lkdGggLSAxKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbW92ZWQgPSAhbmV3Rm9jdXMucG9zRXF1YWxzKHN0YXJ0Rm9jdXMpO1xuICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZSh0YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldE9mZnNldChleHBvcnRzLl9jb21wdXRlTmV3T2Zmc2V0KG5ld0ZvY3VzLCB0YWJsZSwgZm9ybWF0dGVkLCBtb3ZlZCkpO1xuICAgICAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICBpZiAobW92ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0Rm9jdXMocmFuZ2Uuc3RhcnQucm93LCBmb3JtYXR0ZWQudGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vdmVUb0ZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkLnRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAobW92ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U21hcnRDdXJzb3IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1vdmVzIHRoZSBmb2N1cyB0byB0aGUgbmV4dCBjZWxsLlxuICAgICAqL1xuICAgIG5leHRDZWxsKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fd2l0aFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIC8vIHJlc2V0IHNtYXJ0IGN1cnNvciBpZiBtb3ZlZFxuICAgICAgICAgICAgY29uc3QgZm9jdXNNb3ZlZCA9ICh0aGlzLl9zY1RhYmxlUG9zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAhcmFuZ2Uuc3RhcnQuZXF1YWxzKHRoaXMuX3NjVGFibGVQb3MpKSB8fFxuICAgICAgICAgICAgICAgICh0aGlzLl9zY0xhc3RGb2N1cyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICFmb2N1cy5wb3NFcXVhbHModGhpcy5fc2NMYXN0Rm9jdXMpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zY0FjdGl2ZSAmJiBmb2N1c01vdmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldFNtYXJ0Q3Vyc29yKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIGNvbXBsZXRlXG4gICAgICAgICAgICBjb25zdCBjb21wbGV0ZWQgPSBmb3JtYXR0ZXJfMS5jb21wbGV0ZVRhYmxlKHRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQuZGVsaW1pdGVySW5zZXJ0ZWQgJiYgbmV3Rm9jdXMucm93ID4gMCkge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KG5ld0ZvY3VzLnJvdyArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc3RhcnRGb2N1cyA9IG5ld0ZvY3VzO1xuICAgICAgICAgICAgbGV0IGFsdGVyZWQgPSBjb21wbGV0ZWQudGFibGU7XG4gICAgICAgICAgICAvLyBtb3ZlIGZvY3VzXG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgLy8gbW92ZSB0byBuZXh0IHJvd1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KDIpO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNtYXJ0Q3Vyc29yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdGb2N1cy5jb2x1bW4gPCAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkgLSAxIDwgbmV3Rm9jdXMuY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbigwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRDb2x1bW4oMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGluc2VydCBhbiBlbXB0eSByb3cgaWYgbmVlZGVkXG4gICAgICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLnJvdyA+IGFsdGVyZWQuZ2V0SGVpZ2h0KCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvdyA9IG5ldyBBcnJheShhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkpLmZpbGwobmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoJycpKTtcbiAgICAgICAgICAgICAgICAgICAgYWx0ZXJlZCA9IGZvcm1hdHRlcl8xLmluc2VydFJvdyhhbHRlcmVkLCBhbHRlcmVkLmdldEhlaWdodCgpLCBuZXcgdGFibGVfcm93XzEuVGFibGVSb3cocm93LCAnJywgJycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBpbnNlcnQgYW4gZW1wdHkgY29sdW1uIGlmIG5lZWRlZFxuICAgICAgICAgICAgICAgIGlmIChuZXdGb2N1cy5jb2x1bW4gPiBhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBBcnJheShhbHRlcmVkLmdldEhlaWdodCgpIC0gMSkuZmlsbChuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCgnJykpO1xuICAgICAgICAgICAgICAgICAgICBhbHRlcmVkID0gZm9ybWF0dGVyXzEuaW5zZXJ0Q29sdW1uKGFsdGVyZWQsIGFsdGVyZWQuZ2V0SGVhZGVyV2lkdGgoKSwgY29sdW1uLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gbW92ZSB0byBuZXh0IGNvbHVtblxuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKG5ld0ZvY3VzLmNvbHVtbiArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZShhbHRlcmVkLCBvcHRpb25zKTtcbiAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0T2Zmc2V0KGV4cG9ydHMuX2NvbXB1dGVOZXdPZmZzZXQobmV3Rm9jdXMsIGFsdGVyZWQsIGZvcm1hdHRlZCwgdHJ1ZSkpO1xuICAgICAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgICAgIGNvbnN0IG5ld0xpbmVzID0gZm9ybWF0dGVkLnRhYmxlLnRvTGluZXMoKTtcbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5jb2x1bW4gPiBmb3JtYXR0ZWQudGFibGUuZ2V0SGVhZGVyV2lkdGgoKSAtIDEpIHtcbiAgICAgICAgICAgICAgICAvLyBhZGQgbWFyZ2luXG4gICAgICAgICAgICAgICAgbmV3TGluZXNbbmV3Rm9jdXMucm93XSArPSAnICc7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCBuZXdMaW5lcywgbGluZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdEZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkLnRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnNtYXJ0Q3Vyc29yKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9zY0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBhY3RpdmF0ZSBzbWFydCBjdXJzb3JcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2NBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zY1RhYmxlUG9zID0gcmFuZ2Uuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydEZvY3VzLmNvbHVtbiA8IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZC50YWJsZS5nZXRIZWFkZXJXaWR0aCgpIC0gMSA8IHN0YXJ0Rm9jdXMuY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zY1N0YXJ0Rm9jdXMgPSBuZXcgZm9jdXNfMS5Gb2N1cyhzdGFydEZvY3VzLnJvdywgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zY1N0YXJ0Rm9jdXMgPSBzdGFydEZvY3VzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX3NjTGFzdEZvY3VzID0gbmV3Rm9jdXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNb3ZlcyB0aGUgZm9jdXMgdG8gdGhlIHByZXZpb3VzIGNlbGwuXG4gICAgICovXG4gICAgcHJldmlvdXNDZWxsKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICBjb25zdCBzdGFydEZvY3VzID0gbmV3Rm9jdXM7XG4gICAgICAgICAgICAvLyBtb3ZlIGZvY3VzXG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLmNvbHVtbiA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRDb2x1bW4obmV3Rm9jdXMuY29sdW1uIC0gMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobmV3Rm9jdXMucm93ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXcgZm9jdXNfMS5Gb2N1cygwLCB0YWJsZS5nZXRIZWFkZXJXaWR0aCgpIC0gMSwgbmV3Rm9jdXMub2Zmc2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChuZXdGb2N1cy5jb2x1bW4gPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKG5ld0ZvY3VzLmNvbHVtbiAtIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXcgZm9jdXNfMS5Gb2N1cyhuZXdGb2N1cy5yb3cgPT09IDIgPyAwIDogbmV3Rm9jdXMucm93IC0gMSwgdGFibGUuZ2V0SGVhZGVyV2lkdGgoKSAtIDEsIG5ld0ZvY3VzLm9mZnNldCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbW92ZWQgPSAhbmV3Rm9jdXMucG9zRXF1YWxzKHN0YXJ0Rm9jdXMpO1xuICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZSh0YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldE9mZnNldChleHBvcnRzLl9jb21wdXRlTmV3T2Zmc2V0KG5ld0ZvY3VzLCB0YWJsZSwgZm9ybWF0dGVkLCBtb3ZlZCkpO1xuICAgICAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICBpZiAobW92ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0Rm9jdXMocmFuZ2Uuc3RhcnQucm93LCBmb3JtYXR0ZWQudGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vdmVUb0ZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkLnRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAobW92ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U21hcnRDdXJzb3IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1vdmVzIHRoZSBmb2N1cyB0byB0aGUgbmV4dCByb3cuXG4gICAgICovXG4gICAgbmV4dFJvdyhvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX3dpdGhUYWJsZShvcHRpb25zLCAoeyByYW5nZSwgbGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICAvLyByZXNldCBzbWFydCBjdXJzb3IgaWYgbW92ZWRcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzTW92ZWQgPSAodGhpcy5fc2NUYWJsZVBvcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgIXJhbmdlLnN0YXJ0LmVxdWFscyh0aGlzLl9zY1RhYmxlUG9zKSkgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5fc2NMYXN0Rm9jdXMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAhZm9jdXMucG9zRXF1YWxzKHRoaXMuX3NjTGFzdEZvY3VzKSk7XG4gICAgICAgICAgICBpZiAodGhpcy5fc2NBY3RpdmUgJiYgZm9jdXNNb3ZlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRTbWFydEN1cnNvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBjb21wbGV0ZVxuICAgICAgICAgICAgY29uc3QgY29tcGxldGVkID0gZm9ybWF0dGVyXzEuY29tcGxldGVUYWJsZSh0YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkLmRlbGltaXRlckluc2VydGVkICYmIG5ld0ZvY3VzLnJvdyA+IDApIHtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdyhuZXdGb2N1cy5yb3cgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0Rm9jdXMgPSBuZXdGb2N1cztcbiAgICAgICAgICAgIGxldCBhbHRlcmVkID0gY29tcGxldGVkLnRhYmxlO1xuICAgICAgICAgICAgLy8gbW92ZSBmb2N1c1xuICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLnJvdyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3cobmV3Rm9jdXMucm93ICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zbWFydEN1cnNvcikge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zY0FjdGl2ZSAmJiB0aGlzLl9zY1N0YXJ0Rm9jdXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbih0aGlzLl9zY1N0YXJ0Rm9jdXMuY29sdW1uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobmV3Rm9jdXMuY29sdW1uIDwgMCB8fFxuICAgICAgICAgICAgICAgICAgICBhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkgLSAxIDwgbmV3Rm9jdXMuY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaW5zZXJ0IGVtcHR5IHJvdyBpZiBuZWVkZWRcbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5yb3cgPiBhbHRlcmVkLmdldEhlaWdodCgpIC0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdyA9IG5ldyBBcnJheShhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkpLmZpbGwobmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoJycpKTtcbiAgICAgICAgICAgICAgICBhbHRlcmVkID0gZm9ybWF0dGVyXzEuaW5zZXJ0Um93KGFsdGVyZWQsIGFsdGVyZWQuZ2V0SGVpZ2h0KCksIG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhyb3csICcnLCAnJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZShhbHRlcmVkLCBvcHRpb25zKTtcbiAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0T2Zmc2V0KGV4cG9ydHMuX2NvbXB1dGVOZXdPZmZzZXQobmV3Rm9jdXMsIGFsdGVyZWQsIGZvcm1hdHRlZCwgdHJ1ZSkpO1xuICAgICAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RGb2N1cyhyYW5nZS5zdGFydC5yb3csIGZvcm1hdHRlZC50YWJsZSwgbmV3Rm9jdXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zbWFydEN1cnNvcikge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fc2NBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZhdGUgc21hcnQgY3Vyc29yXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NjQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2NUYWJsZVBvcyA9IHJhbmdlLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRGb2N1cy5jb2x1bW4gPCAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQudGFibGUuZ2V0SGVhZGVyV2lkdGgoKSAtIDEgPCBzdGFydEZvY3VzLmNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2NTdGFydEZvY3VzID0gbmV3IGZvY3VzXzEuRm9jdXMoc3RhcnRGb2N1cy5yb3csIDAsIDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2NTdGFydEZvY3VzID0gc3RhcnRGb2N1cztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9zY0xhc3RGb2N1cyA9IG5ld0ZvY3VzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5zZXJ0cyBhbiBlbXB0eSByb3cgYXQgdGhlIGN1cnJlbnQgZm9jdXMuXG4gICAgICovXG4gICAgaW5zZXJ0Um93KG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIG1vdmUgZm9jdXNcbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5yb3cgPD0gMSkge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRDb2x1bW4oMCk7XG4gICAgICAgICAgICAvLyBpbnNlcnQgYW4gZW1wdHkgcm93XG4gICAgICAgICAgICBjb25zdCByb3cgPSBuZXcgQXJyYXkodGFibGUuZ2V0SGVhZGVyV2lkdGgoKSkuZmlsbChuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCgnJykpO1xuICAgICAgICAgICAgY29uc3QgYWx0ZXJlZCA9IGZvcm1hdHRlcl8xLmluc2VydFJvdyh0YWJsZSwgbmV3Rm9jdXMucm93LCBuZXcgdGFibGVfcm93XzEuVGFibGVSb3cocm93LCAnJywgJycpKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0QW5kQXBwbHkob3B0aW9ucywgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIGFsdGVyZWQsIG5ld0ZvY3VzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgYSByb3cgYXQgdGhlIGN1cnJlbnQgZm9jdXMuXG4gICAgICovXG4gICAgZGVsZXRlUm93KG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIGRlbGV0ZSBhIHJvd1xuICAgICAgICAgICAgbGV0IGFsdGVyZWQgPSB0YWJsZTtcbiAgICAgICAgICAgIGxldCBtb3ZlZCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLnJvdyAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGFsdGVyZWQgPSBmb3JtYXR0ZXJfMS5kZWxldGVSb3coYWx0ZXJlZCwgbmV3Rm9jdXMucm93KTtcbiAgICAgICAgICAgICAgICBtb3ZlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLnJvdyA+IGFsdGVyZWQuZ2V0SGVpZ2h0KCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KG5ld0ZvY3VzLnJvdyA9PT0gMiA/IDAgOiBuZXdGb2N1cy5yb3cgLSAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmZvcm1hdEFuZEFwcGx5KG9wdGlvbnMsIHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCBhbHRlcmVkLCBuZXdGb2N1cywgbW92ZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTW92ZXMgdGhlIGZvY3VzZWQgcm93IGJ5IHRoZSBzcGVjaWZpZWQgb2Zmc2V0LlxuICAgICAqXG4gICAgICogQHBhcmFtIG9mZnNldCAtIEFuIG9mZnNldCB0aGUgcm93IGlzIG1vdmVkIGJ5LlxuICAgICAqL1xuICAgIG1vdmVSb3cob2Zmc2V0LCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBtb3ZlIHJvd1xuICAgICAgICAgICAgbGV0IGFsdGVyZWQgPSB0YWJsZTtcbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5yb3cgPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVzdCA9IE1hdGgubWluKE1hdGgubWF4KG5ld0ZvY3VzLnJvdyArIG9mZnNldCwgMiksIGFsdGVyZWQuZ2V0SGVpZ2h0KCkgLSAxKTtcbiAgICAgICAgICAgICAgICBhbHRlcmVkID0gZm9ybWF0dGVyXzEubW92ZVJvdyhhbHRlcmVkLCBuZXdGb2N1cy5yb3csIGRlc3QpO1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KGRlc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5mb3JtYXRBbmRBcHBseShvcHRpb25zLCByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgYWx0ZXJlZCwgbmV3Rm9jdXMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZXZhbHVhdGVGb3JtdWxhcyhvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhDb21wbGV0ZWRUYWJsZShvcHRpb25zLCAoeyByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgdGFibGUsIGZvY3VzLCB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0YWJsZS5hcHBseUZvcm11bGFzKGZvcm11bGFMaW5lcyk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmlzRXJyKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgeyB0YWJsZTogZm9ybWF0dGVkVGFibGUsIGZvY3VzOiBuZXdGb2N1cyB9ID0gdGhpcy5mb3JtYXRBbmRBcHBseShvcHRpb25zLCByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgcmVzdWx0LnZhbHVlLCBmb2N1cywgZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU29ydHMgcm93cyBhbHBoYW51bWVyaWNhbGx5IHVzaW5nIHRoZSBjb2x1bW4gYXQgdGhlIGN1cnJlbnQgZm9jdXMuXG4gICAgICogSWYgYWxsIGNlbGxzIGluIHRoZSBzb3J0aW5nIGNvbHVtbiBhcmUgbnVtYmVycywgdGhlIGNvbHVtbiBpcyBzb3J0ZWRcbiAgICAgKiBudW1lcmljYWxseS5cbiAgICAgKi9cbiAgICBzb3J0Um93cyhzb3J0T3JkZXIsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBib2R5Um93cyA9IHRhYmxlLmdldFJvd3MoKS5zbGljZSgyKTtcbiAgICAgICAgICAgIGNvbnN0IGlzTnVtYmVyID0gKHMpID0+IC9eXFxzKlstK10/KChcXGQrKFxcLlxcZCspPyl8KFxcZCtcXC4pfChcXC5cXGQrKSkoW2VFXVstK10/XFxkKyk/XFxzKiQvLnRlc3Qocyk7XG4gICAgICAgICAgICBjb25zdCBub3RBbGxOdW1zID0gYm9keVJvd3NcbiAgICAgICAgICAgICAgICAubWFwKChyb3cpID0+IHsgdmFyIF9hOyByZXR1cm4gKF9hID0gcm93LmdldENlbGxBdChmb2N1cy5jb2x1bW4pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29udGVudDsgfSlcbiAgICAgICAgICAgICAgICAuc29tZSgoY2VsbCkgPT4gY2VsbCAhPT0gdW5kZWZpbmVkICYmIGNlbGwgIT09ICcnICYmICFpc051bWJlcihjZWxsKSk7XG4gICAgICAgICAgICBib2R5Um93cy5zb3J0KChyb3dBLCByb3dCKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbEEgPSByb3dBLmdldENlbGxBdChmb2N1cy5jb2x1bW4pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxCID0gcm93Qi5nZXRDZWxsQXQoZm9jdXMuY29sdW1uKTtcbiAgICAgICAgICAgICAgICBpZiAoY2VsbEEgPT09IHVuZGVmaW5lZCB8fCBjZWxsQS5jb250ZW50ID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbEIgPT09IHVuZGVmaW5lZCB8fCBjZWxsQi5jb250ZW50ID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjZWxsQiA9PT0gdW5kZWZpbmVkIHx8IGNlbGxCLmNvbnRlbnQgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50QSA9IG5vdEFsbE51bXNcbiAgICAgICAgICAgICAgICAgICAgPyBjZWxsQS5jb250ZW50LnJlcGxhY2UoL1sqfl8kXS9nLCAnJylcbiAgICAgICAgICAgICAgICAgICAgOiBwYXJzZUZsb2F0KGNlbGxBLmNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRCID0gbm90QWxsTnVtc1xuICAgICAgICAgICAgICAgICAgICA/IGNlbGxCLmNvbnRlbnQucmVwbGFjZSgvWyp+XyRdL2csICcnKVxuICAgICAgICAgICAgICAgICAgICA6IHBhcnNlRmxvYXQoY2VsbEIuY29udGVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRBID09PSBjb250ZW50Qikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY29udGVudEEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRlbnRCID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50QSA8IGNvbnRlbnRCID8gLTEgOiAxO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoc29ydE9yZGVyID09PSBTb3J0T3JkZXIuRGVzY2VuZGluZykge1xuICAgICAgICAgICAgICAgIGJvZHlSb3dzLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFsbFJvd3MgPSB0YWJsZS5nZXRSb3dzKCkuc2xpY2UoMCwgMikuY29uY2F0KGJvZHlSb3dzKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1RhYmxlID0gbmV3IHRhYmxlXzEuVGFibGUoYWxsUm93cyk7XG4gICAgICAgICAgICBjb25zdCB7IHRhYmxlOiBmb3JtYXR0ZWRUYWJsZSwgZm9jdXM6IG5ld0ZvY3VzIH0gPSB0aGlzLmZvcm1hdEFuZEFwcGx5KG9wdGlvbnMsIHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCBuZXdUYWJsZSwgZm9jdXMsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fbW92ZVRvRm9jdXMocmFuZ2Uuc3RhcnQucm93LCBmb3JtYXR0ZWRUYWJsZSwgbmV3Rm9jdXMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5zZXJ0cyBhbiBlbXB0eSBjb2x1bW4gYXQgdGhlIGN1cnJlbnQgZm9jdXMuXG4gICAgICovXG4gICAgaW5zZXJ0Q29sdW1uKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIG1vdmUgZm9jdXNcbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5yb3cgPT09IDEpIHtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdygwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5jb2x1bW4gPCAwKSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRDb2x1bW4oMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpbnNlcnQgYW4gZW1wdHkgY29sdW1uXG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQXJyYXkodGFibGUuZ2V0SGVpZ2h0KCkgLSAxKS5maWxsKG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKCcnKSk7XG4gICAgICAgICAgICBjb25zdCBhbHRlcmVkID0gZm9ybWF0dGVyXzEuaW5zZXJ0Q29sdW1uKHRhYmxlLCBuZXdGb2N1cy5jb2x1bW4sIGNvbHVtbiwgb3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLmZvcm1hdEFuZEFwcGx5KG9wdGlvbnMsIHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCBhbHRlcmVkLCBuZXdGb2N1cyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGEgY29sdW1uIGF0IHRoZSBjdXJyZW50IGZvY3VzLlxuICAgICAqL1xuICAgIGRlbGV0ZUNvbHVtbihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBtb3ZlIGZvY3VzXG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3coMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBkZWxldGUgYSBjb2x1bW5cbiAgICAgICAgICAgIGxldCBhbHRlcmVkID0gdGFibGU7XG4gICAgICAgICAgICBsZXQgbW92ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICgwIDw9IG5ld0ZvY3VzLmNvbHVtbiAmJlxuICAgICAgICAgICAgICAgIG5ld0ZvY3VzLmNvbHVtbiA8PSBhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgYWx0ZXJlZCA9IGZvcm1hdHRlcl8xLmRlbGV0ZUNvbHVtbih0YWJsZSwgbmV3Rm9jdXMuY29sdW1uLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICBtb3ZlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLmNvbHVtbiA+IGFsdGVyZWQuZ2V0SGVhZGVyV2lkdGgoKSAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRDb2x1bW4oYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpIC0gMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5mb3JtYXRBbmRBcHBseShvcHRpb25zLCByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgYWx0ZXJlZCwgbmV3Rm9jdXMsIG1vdmVkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1vdmVzIHRoZSBmb2N1c2VkIGNvbHVtbiBieSB0aGUgc3BlY2lmaWVkIG9mZnNldC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvZmZzZXQgLSBBbiBvZmZzZXQgdGhlIGNvbHVtbiBpcyBtb3ZlZCBieS5cbiAgICAgKi9cbiAgICBtb3ZlQ29sdW1uKG9mZnNldCwgb3B0aW9ucykge1xuICAgICAgICB0aGlzLndpdGhDb21wbGV0ZWRUYWJsZShvcHRpb25zLCAoeyByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIGxldCBuZXdGb2N1cyA9IGZvY3VzO1xuICAgICAgICAgICAgLy8gbW92ZSBjb2x1bW5cbiAgICAgICAgICAgIGxldCBhbHRlcmVkID0gdGFibGU7XG4gICAgICAgICAgICBpZiAoMCA8PSBuZXdGb2N1cy5jb2x1bW4gJiZcbiAgICAgICAgICAgICAgICBuZXdGb2N1cy5jb2x1bW4gPD0gYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpIC0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlc3QgPSBNYXRoLm1pbihNYXRoLm1heChuZXdGb2N1cy5jb2x1bW4gKyBvZmZzZXQsIDApLCBhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkgLSAxKTtcbiAgICAgICAgICAgICAgICBhbHRlcmVkID0gZm9ybWF0dGVyXzEubW92ZUNvbHVtbihhbHRlcmVkLCBuZXdGb2N1cy5jb2x1bW4sIGRlc3QpO1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKGRlc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5mb3JtYXRBbmRBcHBseShvcHRpb25zLCByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgYWx0ZXJlZCwgbmV3Rm9jdXMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRm9ybWF0cyBhbGwgdGhlIHRhYmxlcyBpbiB0aGUgdGV4dCBlZGl0b3IuXG4gICAgICovXG4gICAgZm9ybWF0QWxsKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50cmFuc2FjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZSA9IGV4cG9ydHMuX2NyZWF0ZUlzVGFibGVSb3dSZWdleChvcHRpb25zLmxlZnRNYXJnaW5DaGFycyk7XG4gICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5fdGV4dEVkaXRvci5nZXRDdXJzb3JQb3NpdGlvbigpO1xuICAgICAgICAgICAgbGV0IGxpbmVzID0gW107XG4gICAgICAgICAgICBsZXQgc3RhcnRSb3cgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBsZXQgbGFzdFJvdyA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0TGFzdFJvdygpO1xuICAgICAgICAgICAgLy8gZmluZCB0YWJsZXNcbiAgICAgICAgICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8PSBsYXN0Um93OyByb3crKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocm93KTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGV4dEVkaXRvci5hY2NlcHRzVGFibGVFZGl0KHJvdykgJiYgcmUudGVzdChsaW5lKSkge1xuICAgICAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRSb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRSb3cgPSByb3c7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhcnRSb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBnZXQgdGFibGUgaW5mb1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmRSb3cgPSByb3cgLSAxO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYW5nZSA9IG5ldyByYW5nZV8xLlJhbmdlKG5ldyBwb2ludF8xLlBvaW50KHN0YXJ0Um93LCAwKSwgbmV3IHBvaW50XzEuUG9pbnQoZW5kUm93LCBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gZm9ybXVsYUxpbmVzIGVtcHR5IGJlY2F1c2UgZm9ybWF0dGluZyBkb2VzIG5vdCBpbnZvbHZlIGZvcm11bGFzXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlID0gcGFyc2VyXzEucmVhZFRhYmxlKGxpbmVzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9jdXMgPSB0YWJsZS5mb2N1c09mUG9zaXRpb24ocG9zLCBzdGFydFJvdyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkaWZmO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZm9jdXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZCA9IGZvcm1hdHRlcl8xLmNvbXBsZXRlVGFibGUodGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBsZXRlZC5kZWxpbWl0ZXJJbnNlcnRlZCAmJiBuZXdGb2N1cy5yb3cgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3cobmV3Rm9jdXMucm93ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZShjb21wbGV0ZWQudGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldChuZXdGb2N1cywgY29tcGxldGVkLnRhYmxlLCBmb3JtYXR0ZWQsIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBseVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3TGluZXMgPSBmb3JtYXR0ZWQudGFibGUudG9MaW5lcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGluZXMocmFuZ2Uuc3RhcnQucm93LCByYW5nZS5lbmQucm93ICsgMSwgbmV3TGluZXMsIGxpbmVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBjdXJzb3IgcG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBuZXdMaW5lcy5sZW5ndGggLSBsaW5lcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBmb3JtYXR0ZWQudGFibGUucG9zaXRpb25PZkZvY3VzKG5ld0ZvY3VzLCBzdGFydFJvdyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JtYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZCA9IGZvcm1hdHRlcl8xLmNvbXBsZXRlVGFibGUodGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUoY29tcGxldGVkLnRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMaW5lcyA9IGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCBuZXdMaW5lcywgbGluZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIGN1cnNvciBwb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiA9IG5ld0xpbmVzLmxlbmd0aCAtIGxpbmVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3Mucm93ID4gZW5kUm93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gbmV3IHBvaW50XzEuUG9pbnQocG9zLnJvdyArIGRpZmYsIHBvcy5jb2x1bW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0XG4gICAgICAgICAgICAgICAgICAgIGxpbmVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0Um93ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGVcbiAgICAgICAgICAgICAgICAgICAgbGFzdFJvdyArPSBkaWZmO1xuICAgICAgICAgICAgICAgICAgICByb3cgKz0gZGlmZjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RhcnRSb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIC8vIGdldCB0YWJsZSBpbmZvXG4gICAgICAgICAgICAgICAgY29uc3QgZW5kUm93ID0gbGFzdFJvdztcbiAgICAgICAgICAgICAgICBjb25zdCByYW5nZSA9IG5ldyByYW5nZV8xLlJhbmdlKG5ldyBwb2ludF8xLlBvaW50KHN0YXJ0Um93LCAwKSwgbmV3IHBvaW50XzEuUG9pbnQoZW5kUm93LCBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICAvLyBmb3JtdWxhTGluZXMgZW1wdHkgYmVjYXVzZSBmb3JtYXR0aW5nIGRvZXMgbm90IGludm9sdmUgZm9ybXVsYXNcbiAgICAgICAgICAgICAgICBjb25zdCB0YWJsZSA9IHBhcnNlcl8xLnJlYWRUYWJsZShsaW5lcywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9jdXMgPSB0YWJsZS5mb2N1c09mUG9zaXRpb24ocG9zLCBzdGFydFJvdyk7XG4gICAgICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcGxldGVkID0gZm9ybWF0dGVyXzEuY29tcGxldGVUYWJsZSh0YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPXG4gICAgICAgICAgICAgICAgaWYgKGNvbXBsZXRlZC5kZWxpbWl0ZXJJbnNlcnRlZCAmJiBuZXdGb2N1cy5yb3cgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ET1xuICAgICAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdyhuZXdGb2N1cy5yb3cgKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUoY29tcGxldGVkLnRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE9cbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldE9mZnNldChcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE9cbiAgICAgICAgICAgICAgICBleHBvcnRzLl9jb21wdXRlTmV3T2Zmc2V0KG5ld0ZvY3VzLCBjb21wbGV0ZWQudGFibGUsIGZvcm1hdHRlZCwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAvLyBhcHBseVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0xpbmVzID0gZm9ybWF0dGVkLnRhYmxlLnRvTGluZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCBuZXdMaW5lcywgbGluZXMpO1xuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ET1xuICAgICAgICAgICAgICAgIHBvcyA9IGZvcm1hdHRlZC50YWJsZS5wb3NpdGlvbk9mRm9jdXMobmV3Rm9jdXMsIHN0YXJ0Um93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2V0Q3Vyc29yUG9zaXRpb24ocG9zKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV4cG9ydHMgdGhlIHRhYmxlIGFzIGEgdHdvIGRpbWVuc2lvbmFsIHN0cmluZyBhcnJheVxuICAgICAqL1xuICAgIGV4cG9ydFRhYmxlKHdpdGh0SGVhZGVycywgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBib2R5Um93cyA9IHRhYmxlLmdldFJvd3MoKTtcbiAgICAgICAgICAgIGlmIChib2R5Um93cy5sZW5ndGggPiAwICYmICF3aXRodEhlYWRlcnMpIHtcbiAgICAgICAgICAgICAgICBib2R5Um93cy5zcGxpY2UoMCwgMik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlbHNlIGlmKGJvZHlSb3dzLmxlbmd0aCA+IDEpIGJvZHlSb3dzLnNwbGljZSgxLCAxKTtcbiAgICAgICAgICAgIHJldHVybiBib2R5Um93cy5tYXAoKHJvdykgPT4gcm93LmdldENlbGxzKCkubWFwKChjZWxsKSA9PiBjZWxsLmNvbnRlbnQpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV4cG9ydHMgdGhlIHRhYmxlIGFzIGEgdHdvIGRpbWVuc2lvbmFsIHN0cmluZyBhcnJheVxuICAgICAqL1xuICAgIGV4cG9ydENTVih3aXRodEhlYWRlcnMsIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgciA9IHRoaXMuZXhwb3J0VGFibGUod2l0aHRIZWFkZXJzLCBvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuICFyID8gdW5kZWZpbmVkIDogci5tYXAoKHJvdykgPT4gcm93LmpvaW4oJ1xcdCcpKS5qb2luKCdcXG4nKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmluZHMgYSB0YWJsZSwgY29tcGxldGVzIGl0LCB0aGVuIGRvZXMgYW4gb3BlcmF0aW9uIHdpdGggaXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZnVuYyAtIEEgZnVuY3Rpb24gdGhhdCBkb2VzIHNvbWUgb3BlcmF0aW9uIG9uIHRhYmxlIGluZm9ybWF0aW9uIG9idGFpbmVkIGJ5XG4gICAgICoge0BsaW5rIFRhYmxlRWRpdG9yI19maW5kVGFibGV9LlxuICAgICAqL1xuICAgIHdpdGhDb21wbGV0ZWRUYWJsZShvcHRpb25zLCBmdW5jKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93aXRoVGFibGUob3B0aW9ucywgKHRhYmxlSW5mbykgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gdGFibGVJbmZvLmZvY3VzO1xuICAgICAgICAgICAgLy8gY29tcGxldGVcbiAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZCA9IGZvcm1hdHRlcl8xLmNvbXBsZXRlVGFibGUodGFibGVJbmZvLnRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQuZGVsaW1pdGVySW5zZXJ0ZWQgJiYgbmV3Rm9jdXMucm93ID4gMCkge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KG5ld0ZvY3VzLnJvdyArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZShjb21wbGV0ZWQudGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldChuZXdGb2N1cywgY29tcGxldGVkLnRhYmxlLCBmb3JtYXR0ZWQsIGZhbHNlKSk7XG4gICAgICAgICAgICB0YWJsZUluZm8udGFibGUgPSBmb3JtYXR0ZWQudGFibGU7XG4gICAgICAgICAgICB0YWJsZUluZm8uZm9jdXMgPSBuZXdGb2N1cztcbiAgICAgICAgICAgIHJldHVybiBmdW5jKHRhYmxlSW5mbyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGb3JtYXRzIHRoZSB0YWJsZSBhbmQgYXBwbGllcyBhbnkgY2hhbmdlcyBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuXG4gICAgICogb3JpZ2luYWxMaW5lcyBhbmQgdGhlIG5ld1RhYmxlLiBTaG91bGQgZ2VuZXJhbGx5IGJlIHRoZSBsYXN0IGZ1bmN0aW9uIGNhbGxcbiAgICAgKiBpbiBhIFRhYmxlRWRpdG9yIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZvcm1hdEFuZEFwcGx5KG9wdGlvbnMsIHJhbmdlLCBvcmlnaW5hbExpbmVzLCBmb3JtdWxhTGluZXMsIG5ld1RhYmxlLCBuZXdGb2N1cywgbW92ZWQgPSBmYWxzZSkge1xuICAgICAgICAvLyBmb3JtYXRcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUobmV3VGFibGUsIG9wdGlvbnMpO1xuICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldE9mZnNldChleHBvcnRzLl9jb21wdXRlTmV3T2Zmc2V0KG5ld0ZvY3VzLCBuZXdUYWJsZSwgZm9ybWF0dGVkLCBtb3ZlZCkpO1xuICAgICAgICAvLyBhcHBseVxuICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCksIG9yaWdpbmFsTGluZXMpO1xuICAgICAgICAgICAgaWYgKG1vdmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0Rm9jdXMocmFuZ2Uuc3RhcnQucm93LCBmb3JtYXR0ZWQudGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vdmVUb0ZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkLnRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlc2V0U21hcnRDdXJzb3IoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJhbmdlLFxuICAgICAgICAgICAgbGluZXM6IG9yaWdpbmFsTGluZXMsXG4gICAgICAgICAgICBmb3JtdWxhTGluZXMsXG4gICAgICAgICAgICB0YWJsZTogZm9ybWF0dGVkLnRhYmxlLFxuICAgICAgICAgICAgZm9jdXM6IG5ld0ZvY3VzLFxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydHMuVGFibGVFZGl0b3IgPSBUYWJsZUVkaXRvcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Tb3J0T3JkZXIgPSBleHBvcnRzLlRhYmxlRWRpdG9yID0gZXhwb3J0cy5vcHRpb25zV2l0aERlZmF1bHRzID0gZXhwb3J0cy5kZWZhdWx0T3B0aW9ucyA9IGV4cG9ydHMuSVRleHRFZGl0b3IgPSBleHBvcnRzLnNob3J0ZXN0RWRpdFNjcmlwdCA9IGV4cG9ydHMuYXBwbHlFZGl0U2NyaXB0ID0gZXhwb3J0cy5EZWxldGUgPSBleHBvcnRzLkluc2VydCA9IGV4cG9ydHMubW92ZUNvbHVtbiA9IGV4cG9ydHMuZGVsZXRlQ29sdW1uID0gZXhwb3J0cy5pbnNlcnRDb2x1bW4gPSBleHBvcnRzLm1vdmVSb3cgPSBleHBvcnRzLmRlbGV0ZVJvdyA9IGV4cG9ydHMuaW5zZXJ0Um93ID0gZXhwb3J0cy5hbHRlckFsaWdubWVudCA9IGV4cG9ydHMuZm9ybWF0VGFibGUgPSBleHBvcnRzLmNvbXBsZXRlVGFibGUgPSBleHBvcnRzLkZvcm1hdFR5cGUgPSBleHBvcnRzLnJlYWRUYWJsZSA9IGV4cG9ydHMuVGFibGUgPSBleHBvcnRzLlRhYmxlUm93ID0gZXhwb3J0cy5UYWJsZUNlbGwgPSBleHBvcnRzLkhlYWRlckFsaWdubWVudCA9IGV4cG9ydHMuRGVmYXVsdEFsaWdubWVudCA9IGV4cG9ydHMuQWxpZ25tZW50ID0gZXhwb3J0cy5Gb2N1cyA9IGV4cG9ydHMuUmFuZ2UgPSBleHBvcnRzLlBvaW50ID0gdm9pZCAwO1xudmFyIHBvaW50XzEgPSByZXF1aXJlKFwiLi9wb2ludFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBvaW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBwb2ludF8xLlBvaW50OyB9IH0pO1xudmFyIHJhbmdlXzEgPSByZXF1aXJlKFwiLi9yYW5nZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJhbmdlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiByYW5nZV8xLlJhbmdlOyB9IH0pO1xudmFyIGZvY3VzXzEgPSByZXF1aXJlKFwiLi9mb2N1c1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkZvY3VzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBmb2N1c18xLkZvY3VzOyB9IH0pO1xudmFyIGFsaWdubWVudF8xID0gcmVxdWlyZShcIi4vYWxpZ25tZW50XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQWxpZ25tZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBhbGlnbm1lbnRfMS5BbGlnbm1lbnQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZWZhdWx0QWxpZ25tZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBhbGlnbm1lbnRfMS5EZWZhdWx0QWxpZ25tZW50OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiSGVhZGVyQWxpZ25tZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBhbGlnbm1lbnRfMS5IZWFkZXJBbGlnbm1lbnQ7IH0gfSk7XG52YXIgdGFibGVfY2VsbF8xID0gcmVxdWlyZShcIi4vdGFibGUtY2VsbFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRhYmxlQ2VsbFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGFibGVfY2VsbF8xLlRhYmxlQ2VsbDsgfSB9KTtcbnZhciB0YWJsZV9yb3dfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLXJvd1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRhYmxlUm93XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0YWJsZV9yb3dfMS5UYWJsZVJvdzsgfSB9KTtcbnZhciB0YWJsZV8xID0gcmVxdWlyZShcIi4vdGFibGVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUYWJsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGFibGVfMS5UYWJsZTsgfSB9KTtcbnZhciBwYXJzZXJfMSA9IHJlcXVpcmUoXCIuL3BhcnNlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInJlYWRUYWJsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gcGFyc2VyXzEucmVhZFRhYmxlOyB9IH0pO1xudmFyIGZvcm1hdHRlcl9qc18xID0gcmVxdWlyZShcIi4vZm9ybWF0dGVyLmpzXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRm9ybWF0VHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuRm9ybWF0VHlwZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNvbXBsZXRlVGFibGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1hdHRlcl9qc18xLmNvbXBsZXRlVGFibGU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJmb3JtYXRUYWJsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuZm9ybWF0VGFibGU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJhbHRlckFsaWdubWVudFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuYWx0ZXJBbGlnbm1lbnQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJpbnNlcnRSb3dcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1hdHRlcl9qc18xLmluc2VydFJvdzsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlbGV0ZVJvd1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuZGVsZXRlUm93OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibW92ZVJvd1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEubW92ZVJvdzsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImluc2VydENvbHVtblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuaW5zZXJ0Q29sdW1uOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVsZXRlQ29sdW1uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBmb3JtYXR0ZXJfanNfMS5kZWxldGVDb2x1bW47IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJtb3ZlQ29sdW1uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBmb3JtYXR0ZXJfanNfMS5tb3ZlQ29sdW1uOyB9IH0pO1xudmFyIGVkaXRfc2NyaXB0XzEgPSByZXF1aXJlKFwiLi9lZGl0LXNjcmlwdFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkluc2VydFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZWRpdF9zY3JpcHRfMS5JbnNlcnQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZWxldGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVkaXRfc2NyaXB0XzEuRGVsZXRlOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiYXBwbHlFZGl0U2NyaXB0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBlZGl0X3NjcmlwdF8xLmFwcGx5RWRpdFNjcmlwdDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInNob3J0ZXN0RWRpdFNjcmlwdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZWRpdF9zY3JpcHRfMS5zaG9ydGVzdEVkaXRTY3JpcHQ7IH0gfSk7XG52YXIgdGV4dF9lZGl0b3JfMSA9IHJlcXVpcmUoXCIuL3RleHQtZWRpdG9yXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiSVRleHRFZGl0b3JcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRleHRfZWRpdG9yXzEuSVRleHRFZGl0b3I7IH0gfSk7XG52YXIgb3B0aW9uc18xID0gcmVxdWlyZShcIi4vb3B0aW9uc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRPcHRpb25zXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBvcHRpb25zXzEuZGVmYXVsdE9wdGlvbnM7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJvcHRpb25zV2l0aERlZmF1bHRzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBvcHRpb25zXzEub3B0aW9uc1dpdGhEZWZhdWx0czsgfSB9KTtcbnZhciB0YWJsZV9lZGl0b3JfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLWVkaXRvclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRhYmxlRWRpdG9yXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0YWJsZV9lZGl0b3JfMS5UYWJsZUVkaXRvcjsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlNvcnRPcmRlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGFibGVfZWRpdG9yXzEuU29ydE9yZGVyOyB9IH0pO1xuIiwiaW1wb3J0IHtcbiAgRm9ybWF0VHlwZSxcbiAgT3B0aW9ucyxcbiAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbn0gZnJvbSAnQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRTZXR0aW5nczogUGFydGlhbDxJU2V0dGluZ3M+ID0ge1xuICBmb3JtYXRUeXBlOiBGb3JtYXRUeXBlLk5PUk1BTCxcbiAgc2hvd1JpYmJvbkljb246IHRydWUsXG4gIGJpbmRFbnRlcjogdHJ1ZSxcbiAgYmluZFRhYjogdHJ1ZSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNldHRpbmdzIHtcbiAgZm9ybWF0VHlwZTogRm9ybWF0VHlwZTtcbiAgc2hvd1JpYmJvbkljb246IGJvb2xlYW47XG4gIGJpbmRFbnRlcjogYm9vbGVhbjtcbiAgYmluZFRhYjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3MgaW1wbGVtZW50cyBJU2V0dGluZ3Mge1xuICBwdWJsaWMgZm9ybWF0VHlwZTogRm9ybWF0VHlwZTtcbiAgcHVibGljIHNob3dSaWJib25JY29uOiBib29sZWFuO1xuXG4gIHB1YmxpYyBiaW5kRW50ZXI6IGJvb2xlYW47XG4gIHB1YmxpYyBiaW5kVGFiOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKGxvYWRlZERhdGE6IFBhcnRpYWw8SVNldHRpbmdzPikge1xuICAgIGNvbnN0IGFsbEZpZWxkcyA9IHsgLi4uZGVmYXVsdFNldHRpbmdzLCAuLi5sb2FkZWREYXRhIH07XG4gICAgdGhpcy5mb3JtYXRUeXBlID0gYWxsRmllbGRzLmZvcm1hdFR5cGU7XG4gICAgdGhpcy5zaG93UmliYm9uSWNvbiA9IGFsbEZpZWxkcy5zaG93UmliYm9uSWNvbjtcbiAgICB0aGlzLmJpbmRFbnRlciA9IGFsbEZpZWxkcy5iaW5kRW50ZXI7XG4gICAgdGhpcy5iaW5kVGFiID0gYWxsRmllbGRzLmJpbmRUYWI7XG4gIH1cblxuICBwdWJsaWMgYXNPcHRpb25zKCk6IE9wdGlvbnMge1xuICAgIHJldHVybiBvcHRpb25zV2l0aERlZmF1bHRzKHsgZm9ybWF0VHlwZTogdGhpcy5mb3JtYXRUeXBlIH0pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQb2ludCwgUmFuZ2UgfSBmcm9tICdAdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMnO1xuaW1wb3J0IHsgQXBwLCBFZGl0b3IsIFRGaWxlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIE9ic2lkaWFuVGV4dEVkaXRvciBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSVRleHRFZGl0b3IgaW50ZXJmYWNlIGZyb21cbiAqIHRoZSBtdGUta2VybmVsIGxpYnJhcnkuIEl0IHRlYWNoZXMgdGhlIHRhYmxlIGVkaXRvciBsaWJyYXJ5IGhvdyB0byBpbnRlcmZhY2VcbiAqIHdpdGggT2JzaWRpYW4uXG4gKi9cbmV4cG9ydCBjbGFzcyBPYnNpZGlhblRleHRFZGl0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IGFwcDogQXBwO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGU6IFRGaWxlO1xuICBwcml2YXRlIHJlYWRvbmx5IGVkaXRvcjogRWRpdG9yO1xuXG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBmaWxlOiBURmlsZSwgZWRpdG9yOiBFZGl0b3IpIHtcbiAgICB0aGlzLmFwcCA9IGFwcDtcbiAgICB0aGlzLmZpbGUgPSBmaWxlO1xuICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICB9XG5cbiAgcHVibGljIGdldEN1cnNvclBvc2l0aW9uID0gKCk6IFBvaW50ID0+IHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZWRpdG9yLmdldEN1cnNvcigpO1xuICAgIGNvbnNvbGUuZGVidWcoXG4gICAgICBgZ2V0Q3Vyc29yUG9zaXRpb24gd2FzIGNhbGxlZDogbGluZSAke3Bvc2l0aW9uLmxpbmV9LCBjaCAke3Bvc2l0aW9uLmNofWAsXG4gICAgKTtcbiAgICByZXR1cm4gbmV3IFBvaW50KHBvc2l0aW9uLmxpbmUsIHBvc2l0aW9uLmNoKTtcbiAgfTtcblxuICBwdWJsaWMgc2V0Q3Vyc29yUG9zaXRpb24gPSAocG9zOiBQb2ludCk6IHZvaWQgPT4ge1xuICAgIGNvbnNvbGUuZGVidWcoXG4gICAgICBgc2V0Q3Vyc29yUG9zaXRpb24gd2FzIGNhbGxlZDogbGluZSAke3Bvcy5yb3d9LCBjaCAke3Bvcy5jb2x1bW59YCxcbiAgICApO1xuICAgIHRoaXMuZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IHBvcy5yb3csIGNoOiBwb3MuY29sdW1uIH0pO1xuICB9O1xuXG4gIHB1YmxpYyBzZXRTZWxlY3Rpb25SYW5nZSA9IChyYW5nZTogUmFuZ2UpOiB2b2lkID0+IHtcbiAgICBjb25zb2xlLmRlYnVnKCdzZXRTZWxlY3Rpb25SYW5nZSB3YXMgY2FsbGVkJyk7XG4gICAgdGhpcy5lZGl0b3Iuc2V0U2VsZWN0aW9uKFxuICAgICAgeyBsaW5lOiByYW5nZS5zdGFydC5yb3csIGNoOiByYW5nZS5zdGFydC5jb2x1bW4gfSxcbiAgICAgIHsgbGluZTogcmFuZ2UuZW5kLnJvdywgY2g6IHJhbmdlLmVuZC5jb2x1bW4gfSxcbiAgICApO1xuICB9O1xuXG4gIHB1YmxpYyBnZXRMYXN0Um93ID0gKCk6IG51bWJlciA9PiB7XG4gICAgY29uc29sZS5kZWJ1ZygnZ2V0TGFzdFJvdyB3YXMgY2FsbGVkJyk7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLmxhc3RMaW5lKCk7XG4gIH07XG5cbiAgcHVibGljIGFjY2VwdHNUYWJsZUVkaXQgPSAocm93OiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgICBjb25zb2xlLmRlYnVnKGBhY2NlcHRzVGFibGVFZGl0IHdhcyBjYWxsZWQgb24gcm93ICR7cm93fWApO1xuXG4gICAgY29uc3QgY2FjaGUgPSB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZSh0aGlzLmZpbGUpO1xuICAgIGlmICghY2FjaGUuc2VjdGlvbnMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHRhYmxlID0gY2FjaGUuc2VjdGlvbnMuZmluZChcbiAgICAgIChzZWN0aW9uKTogYm9vbGVhbiA9PlxuICAgICAgICBzZWN0aW9uLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPD0gcm93ICYmXG4gICAgICAgIHNlY3Rpb24ucG9zaXRpb24uZW5kLmxpbmUgPj0gcm93ICYmXG4gICAgICAgIHNlY3Rpb24udHlwZSAhPT0gJ2NvZGUnICYmXG4gICAgICAgIHNlY3Rpb24udHlwZSAhPT0gJ21hdGgnLFxuICAgICk7XG4gICAgaWYgKHRhYmxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ2FjY2VwdHNUYWJsZUVkaXQgcmV0dXJuaW5nIGZhbHNlLCB0YWJsZSBub3QgZm91bmQnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayB0aGF0IHRoZSB0ZXh0IGAtdHgtYCBpcyBub3Qgb24gdGhlIGxpbmUgaW1tZWRpYXRlbHkgcHJlY2VlZGluZyB0aGVcbiAgICAvLyB0YWJsZSBmb3VuZCBpbiB0aGUgcHJldmlvdXMgY2hlY2suXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Rncm9zaW5nZXIvYWR2YW5jZWQtdGFibGVzLW9ic2lkaWFuL2lzc3Vlcy8xMzNcbiAgICBjb25zdCBwcmVjZWVkaW5nTGluZUluZGV4ID0gdGFibGUucG9zaXRpb24uc3RhcnQubGluZTtcbiAgICBpZiAocHJlY2VlZGluZ0xpbmVJbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBwcmVjZWVkaW5nTGluZSA9IHRoaXMuZ2V0TGluZShwcmVjZWVkaW5nTGluZUluZGV4KTtcbiAgICAgIGlmIChwcmVjZWVkaW5nTGluZSA9PT0gJy10eC0nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICBwdWJsaWMgZ2V0TGluZSA9IChyb3c6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gICAgY29uc29sZS5kZWJ1ZyhgZ2V0TGluZSB3YXMgY2FsbGVkIG9uIGxpbmUgJHtyb3d9YCk7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLmdldExpbmUocm93KTtcbiAgfTtcblxuICBwdWJsaWMgaW5zZXJ0TGluZSA9IChyb3c6IG51bWJlciwgbGluZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgY29uc29sZS5kZWJ1ZyhgaW5zZXJ0TGluZSB3YXMgY2FsbGVkIGF0IGxpbmUgJHtyb3d9YCk7XG4gICAgY29uc29sZS5kZWJ1ZyhgTmV3IGxpbmU6ICR7bGluZX1gKTtcblxuICAgIGlmIChyb3cgPiB0aGlzLmdldExhc3RSb3coKSkge1xuICAgICAgdGhpcy5lZGl0b3IucmVwbGFjZVJhbmdlKCdcXG4nICsgbGluZSwgeyBsaW5lOiByb3csIGNoOiAwIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVkaXRvci5yZXBsYWNlUmFuZ2UobGluZSArICdcXG4nLCB7IGxpbmU6IHJvdywgY2g6IDAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHB1YmxpYyBkZWxldGVMaW5lID0gKHJvdzogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgY29uc29sZS5kZWJ1ZyhgZGVsZXRlTGluZSB3YXMgY2FsbGVkIG9uIGxpbmUgJHtyb3d9YCk7XG5cbiAgICAvLyBJZiBvbiB0aGUgbGFzdCBsaW5lIG9mIHRoZSBmaWxlLCB3ZSBjYW5ub3QgcmVwbGFjZSB0byB0aGUgbmV4dCByb3cuXG4gICAgLy8gSW5zdGVhZCwgcmVwbGFjZSBhbGwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgbGluZS5cbiAgICBpZiAocm93ID09PSB0aGlzLmdldExhc3RSb3coKSkge1xuICAgICAgY29uc3Qgcm93Q29udGVudHMgPSB0aGlzLmdldExpbmUocm93KTtcbiAgICAgIHRoaXMuZWRpdG9yLnJlcGxhY2VSYW5nZShcbiAgICAgICAgJycsXG4gICAgICAgIHsgbGluZTogcm93LCBjaDogMCB9LFxuICAgICAgICB7IGxpbmU6IHJvdywgY2g6IHJvd0NvbnRlbnRzLmxlbmd0aCB9LFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lZGl0b3IucmVwbGFjZVJhbmdlKFxuICAgICAgICAnJyxcbiAgICAgICAgeyBsaW5lOiByb3csIGNoOiAwIH0sXG4gICAgICAgIHsgbGluZTogcm93ICsgMSwgY2g6IDAgfSxcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIHB1YmxpYyByZXBsYWNlTGluZXMgPSAoXG4gICAgc3RhcnRSb3c6IG51bWJlcixcbiAgICBlbmRSb3c6IG51bWJlcixcbiAgICBsaW5lczogc3RyaW5nW10sXG4gICk6IHZvaWQgPT4ge1xuICAgIC8vIFRha2Ugb25lIG9mZiB0aGUgZW5kUm93IGFuZCBpbnN0ZWFkIGdvIHRvIHRoZSBlbmQgb2YgdGhhdCBsaW5lXG4gICAgY29uc3QgcmVhbEVuZFJvdyA9IGVuZFJvdyAtIDE7XG4gICAgY29uc3QgZW5kUm93Q29udGVudHMgPSB0aGlzLmVkaXRvci5nZXRMaW5lKHJlYWxFbmRSb3cpO1xuICAgIGNvbnN0IGVuZFJvd0ZpbmFsSW5kZXggPSBlbmRSb3dDb250ZW50cy5sZW5ndGg7XG5cbiAgICB0aGlzLmVkaXRvci5yZXBsYWNlUmFuZ2UoXG4gICAgICBsaW5lcy5qb2luKCdcXG4nKSxcbiAgICAgIHsgbGluZTogc3RhcnRSb3csIGNoOiAwIH0sXG4gICAgICB7IGxpbmU6IHJlYWxFbmRSb3csIGNoOiBlbmRSb3dGaW5hbEluZGV4IH0sXG4gICAgKTtcbiAgfTtcblxuICBwdWJsaWMgdHJhbnNhY3QgPSAoZnVuYzogRnVuY3Rpb24pOiB2b2lkID0+IHtcbiAgICAvKlxuICAgIHRoaXMuZWRpdG9yLm9wZXJhdGlvbigoKSA9PiB7XG4gICAgICBmdW5jKCk7XG4gICAgfSk7XG4gICAgKi9cbiAgICBmdW5jKCk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPYnNpZGlhblRleHRFZGl0b3IgfSBmcm9tICcuL29ic2lkaWFuLXRleHQtZWRpdG9yJztcbmltcG9ydCB7IFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3MgfSBmcm9tICcuL3NldHRpbmdzJztcbmltcG9ydCB7XG4gIEFsaWdubWVudCxcbiAgU29ydE9yZGVyLFxuICBUYWJsZUVkaXRvciBhcyBNVEVFZGl0b3IsXG59IGZyb20gJ0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcyc7XG5pbXBvcnQgeyBBcHAsIEVkaXRvciwgTW9kYWwsIE5vdGljZSwgVEZpbGUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUVkaXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0dGluZ3M6IFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3M7XG4gIHByaXZhdGUgcmVhZG9ubHkgbXRlOiBNVEVFZGl0b3I7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYXBwOiBBcHAsXG4gICAgZmlsZTogVEZpbGUsXG4gICAgZWRpdG9yOiBFZGl0b3IsXG4gICAgc2V0dGluZ3M6IFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3MsXG4gICkge1xuICAgIHRoaXMuYXBwID0gYXBwO1xuICAgIHRoaXMuc2V0dGluZ3MgPSBzZXR0aW5ncztcblxuICAgIGNvbnN0IG90ZSA9IG5ldyBPYnNpZGlhblRleHRFZGl0b3IoYXBwLCBmaWxlLCBlZGl0b3IpO1xuICAgIHRoaXMubXRlID0gbmV3IE1URUVkaXRvcihvdGUpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGN1cnNvcklzSW5UYWJsZUZvcm11bGEgPSAoKTogYm9vbGVhbiA9PlxuICAgIHRoaXMubXRlLmN1cnNvcklzSW5UYWJsZUZvcm11bGEodGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGN1cnNvcklzSW5UYWJsZSA9ICgpOiBib29sZWFuID0+XG4gICAgdGhpcy5tdGUuY3Vyc29ySXNJblRhYmxlKHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuXG4gIHB1YmxpYyByZWFkb25seSBuZXh0Q2VsbCA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5uZXh0Q2VsbCh0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcHJldmlvdXNDZWxsID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLnByZXZpb3VzQ2VsbCh0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbmV4dFJvdyA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5uZXh0Um93KHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBmb3JtYXRUYWJsZSA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5mb3JtYXQodGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGZvcm1hdEFsbFRhYmxlcyA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5mb3JtYXRBbGwodGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGluc2VydENvbHVtbiA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5pbnNlcnRDb2x1bW4odGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGluc2VydFJvdyA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5pbnNlcnRSb3codGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGxlZnRBbGlnbkNvbHVtbiA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5hbGlnbkNvbHVtbihBbGlnbm1lbnQuTEVGVCwgdGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGNlbnRlckFsaWduQ29sdW1uID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLmFsaWduQ29sdW1uKEFsaWdubWVudC5DRU5URVIsIHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSByaWdodEFsaWduQ29sdW1uID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLmFsaWduQ29sdW1uKEFsaWdubWVudC5SSUdIVCwgdGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IG1vdmVDb2x1bW5MZWZ0ID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLm1vdmVDb2x1bW4oLTEsIHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBtb3ZlQ29sdW1uUmlnaHQgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUubW92ZUNvbHVtbigxLCB0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbW92ZVJvd1VwID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLm1vdmVSb3coLTEsIHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBtb3ZlUm93RG93biA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5tb3ZlUm93KDEsIHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVDb2x1bW4gPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUuZGVsZXRlQ29sdW1uKHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVSb3cgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUuZGVsZXRlUm93KHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBzb3J0Um93c0FzYyA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5zb3J0Um93cyhTb3J0T3JkZXIuQXNjZW5kaW5nLCB0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc29ydFJvd3NEZXNjID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLnNvcnRSb3dzKFNvcnRPcmRlci5EZXNjZW5kaW5nLCB0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZXNjYXBlID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLmVzY2FwZSh0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZXZhbHVhdGVGb3JtdWxhcyA9ICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCBlcnIgPSB0aGlzLm10ZS5ldmFsdWF0ZUZvcm11bGFzKHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICAgIGlmIChlcnIpIHtcbiAgICAgIG5ldyBOb3RpY2UoZXJyLm1lc3NhZ2UpO1xuICAgIH1cbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZXhwb3J0Q1NWTW9kYWwgPSAoKTogdm9pZCA9PiB7XG4gICAgbmV3IENTVk1vZGFsKHRoaXMuYXBwLCB0aGlzLm10ZSwgdGhpcy5zZXR0aW5ncykub3BlbigpO1xuICB9O1xufVxuXG5jbGFzcyBDU1ZNb2RhbCBleHRlbmRzIE1vZGFsIHtcbiAgcHJpdmF0ZSByZWFkb25seSBtdGU6IE1URUVkaXRvcjtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXR0aW5nczogVGFibGVFZGl0b3JQbHVnaW5TZXR0aW5ncztcblxuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgbXRlOiBNVEVFZGl0b3IsIHNldHRpbmdzOiBUYWJsZUVkaXRvclBsdWdpblNldHRpbmdzKSB7XG4gICAgc3VwZXIoYXBwKTtcbiAgICB0aGlzLm10ZSA9IG10ZTtcbiAgICB0aGlzLnNldHRpbmdzID0gc2V0dGluZ3M7XG4gIH1cblxuICBwdWJsaWMgb25PcGVuKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuICAgIGNvbnN0IGRpdiA9IGNvbnRlbnRFbC5jcmVhdGVEaXYoe1xuICAgICAgY2xzOiAnYWR2YW5jZWQtdGFibGVzLWNzdi1leHBvcnQnLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdGEgPSBkaXYuY3JlYXRlRWwoJ3RleHRhcmVhJywge1xuICAgICAgYXR0cjoge1xuICAgICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGEudmFsdWUgPSB0aGlzLm10ZS5leHBvcnRDU1YodHJ1ZSwgdGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gICAgdGEub25DbGlja0V2ZW50KCgpID0+IHRhLnNlbGVjdCgpKTtcblxuICAgIGNvbnN0IGxiID0gZGl2LmNyZWF0ZUVsKCdsYWJlbCcpO1xuICAgIGNvbnN0IGNiID0gbGIuY3JlYXRlRWwoJ2lucHV0Jywge1xuICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgIGF0dHI6IHtcbiAgICAgICAgY2hlY2tlZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgbGIuY3JlYXRlU3BhbigpLnNldFRleHQoJ0luY2x1ZGUgdGFibGUgaGVhZGVycycpO1xuICAgIGNiLm9uQ2xpY2tFdmVudCgoKSA9PiB7XG4gICAgICB0YS52YWx1ZSA9IHRoaXMubXRlLmV4cG9ydENTVihjYi5jaGVja2VkLCB0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBpY29ucyB9IGZyb20gJy4vaWNvbnMnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3JQbHVnaW5TZXR0aW5ncyB9IGZyb20gJy4vc2V0dGluZ3MnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuL3RhYmxlLWVkaXRvcic7XG5pbXBvcnQge1xuICBFZGl0b3IsXG4gIEl0ZW1WaWV3LFxuICBNYXJrZG93blZpZXcsXG4gIE5vdGljZSxcbiAgV29ya3NwYWNlTGVhZixcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5leHBvcnQgY29uc3QgVGFibGVDb250cm9sc1ZpZXdUeXBlID0gJ2FkdmFuY2VkLXRhYmxlcy10b29sYmFyJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlQ29udHJvbHNWaWV3IGV4dGVuZHMgSXRlbVZpZXcge1xuICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdzOiBUYWJsZUVkaXRvclBsdWdpblNldHRpbmdzO1xuXG4gIGNvbnN0cnVjdG9yKGxlYWY6IFdvcmtzcGFjZUxlYWYsIHNldHRpbmdzOiBUYWJsZUVkaXRvclBsdWdpblNldHRpbmdzKSB7XG4gICAgc3VwZXIobGVhZik7XG4gICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzO1xuICB9XG5cbiAgcHVibGljIGdldFZpZXdUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRhYmxlQ29udHJvbHNWaWV3VHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREaXNwbGF5VGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnQWR2YW5jZWQgVGFibGVzJztcbiAgfVxuXG4gIHB1YmxpYyBnZXRJY29uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdzcHJlYWRzaGVldCc7XG4gIH1cblxuICBwdWJsaWMgbG9hZCgpOiB2b2lkIHtcbiAgICBzdXBlci5sb2FkKCk7XG4gICAgdGhpcy5kcmF3KCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGRyYXcgPSAoKTogdm9pZCA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXJFbC5jaGlsZHJlblsxXTtcblxuICAgIGNvbnN0IHJvb3RFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJvb3RFbC5hZGRDbGFzcyhcImFkdmFuY2VkLXRhYmxlcy1idXR0b25zXCIpO1xuXG4gICAgcm9vdEVsLmNyZWF0ZURpdigpLlxuICAgICAgY3JlYXRlU3Bhbih7IGNsczogJ3RpdGxlJyB9KS5cbiAgICAgIHNldFRleHQoXCJBZHZhbmNlZCBUYWJsZXNcIilcblxuICAgIGNvbnN0IG5hdkhlYWRlciA9IHJvb3RFbC5jcmVhdGVEaXYoeyBjbHM6ICduYXYtaGVhZGVyJyB9KTtcbiAgICBjb25zdCByb3dPbmVCdG5zID0gbmF2SGVhZGVyLmNyZWF0ZURpdih7IGNsczogJ25hdi1idXR0b25zLWNvbnRhaW5lcicgfSk7XG4gICAgcm93T25lQnRucy5jcmVhdGVTcGFuKHsgY2xzOiAnYWR2YW5jZWQtdGFibGVzLXJvdy1sYWJlbCcgfSkuc2V0VGV4dChcIkFsaWduOlwiKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93T25lQnRucywgJ2FsaWduTGVmdCcsICdsZWZ0IGFsaWduIGNvbHVtbicsICh0ZSkgPT5cbiAgICAgIHRlLmxlZnRBbGlnbkNvbHVtbigpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd09uZUJ0bnMsICdhbGlnbkNlbnRlcicsICdjZW50ZXIgYWxpZ24gY29sdW1uJywgKHRlKSA9PlxuICAgICAgdGUuY2VudGVyQWxpZ25Db2x1bW4oKSxcbiAgICApO1xuICAgIHRoaXMuZHJhd0J0bihyb3dPbmVCdG5zLCAnYWxpZ25SaWdodCcsICdyaWdodCBhbGlnbiBjb2x1bW4nLCAodGUpID0+XG4gICAgICB0ZS5yaWdodEFsaWduQ29sdW1uKCksXG4gICAgKTtcblxuICAgIGNvbnN0IHJvd1R3b0J0bnMgPSBuYXZIZWFkZXIuY3JlYXRlRGl2KHsgY2xzOiAnbmF2LWJ1dHRvbnMtY29udGFpbmVyJyB9KTtcbiAgICByb3dUd29CdG5zLmNyZWF0ZVNwYW4oeyBjbHM6ICdhZHZhbmNlZC10YWJsZXMtcm93LWxhYmVsJyB9KS5zZXRUZXh0KFwiTW92ZTpcIik7XG4gICAgdGhpcy5kcmF3QnRuKHJvd1R3b0J0bnMsICdtb3ZlUm93RG93bicsICdtb3ZlIHJvdyBkb3duJywgKHRlKSA9PlxuICAgICAgdGUubW92ZVJvd0Rvd24oKSxcbiAgICApO1xuICAgIHRoaXMuZHJhd0J0bihyb3dUd29CdG5zLCAnbW92ZVJvd1VwJywgJ21vdmUgcm93IHVwJywgKHRlKSA9PlxuICAgICAgdGUubW92ZVJvd1VwKCksXG4gICAgKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93VHdvQnRucywgJ21vdmVDb2x1bW5SaWdodCcsICdtb3ZlIGNvbHVtbiByaWdodCcsICh0ZSkgPT5cbiAgICAgIHRlLm1vdmVDb2x1bW5SaWdodCgpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd1R3b0J0bnMsICdtb3ZlQ29sdW1uTGVmdCcsICdtb3ZlIGNvbHVtbiBsZWZ0JywgKHRlKSA9PlxuICAgICAgdGUubW92ZUNvbHVtbkxlZnQoKSxcbiAgICApO1xuXG4gICAgY29uc3Qgcm93VGhyZWVCdG5zID0gbmF2SGVhZGVyLmNyZWF0ZURpdih7IGNsczogJ25hdi1idXR0b25zLWNvbnRhaW5lcicgfSk7XG4gICAgcm93VGhyZWVCdG5zLmNyZWF0ZVNwYW4oeyBjbHM6ICdhZHZhbmNlZC10YWJsZXMtcm93LWxhYmVsJyB9KS5zZXRUZXh0KFwiRWRpdDpcIik7XG4gICAgdGhpcy5kcmF3QnRuKHJvd1RocmVlQnRucywgJ2luc2VydFJvdycsICdpbnNlcnQgcm93IGFib3ZlJywgKHRlKSA9PlxuICAgICAgdGUuaW5zZXJ0Um93KCksXG4gICAgKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93VGhyZWVCdG5zLCAnaW5zZXJ0Q29sdW1uJywgJ2luc2VydCBjb2x1bW4gbGVmdCcsICh0ZSkgPT5cbiAgICAgIHRlLmluc2VydENvbHVtbigpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd1RocmVlQnRucywgJ2RlbGV0ZVJvdycsICdkZWxldGUgcm93JywgKHRlKSA9PlxuICAgICAgdGUuZGVsZXRlUm93KCksXG4gICAgKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93VGhyZWVCdG5zLCAnZGVsZXRlQ29sdW1uJywgJ2RlbGV0ZSBjb2x1bW4nLCAodGUpID0+XG4gICAgICB0ZS5kZWxldGVDb2x1bW4oKSxcbiAgICApO1xuXG4gICAgY29uc3Qgcm93Rm91ckJ0bnMgPSBuYXZIZWFkZXIuY3JlYXRlRGl2KHsgY2xzOiAnbmF2LWJ1dHRvbnMtY29udGFpbmVyJyB9KTtcbiAgICByb3dGb3VyQnRucy5jcmVhdGVTcGFuKHsgY2xzOiAnYWR2YW5jZWQtdGFibGVzLXJvdy1sYWJlbCcgfSkuc2V0VGV4dChcIlNvcnQvRjpcIik7XG4gICAgdGhpcy5kcmF3QnRuKHJvd0ZvdXJCdG5zLCAnc29ydEFzYycsICdzb3J0IGJ5IGNvbHVtbiBhc2NlbmRpbmcnLCAodGUpID0+XG4gICAgICB0ZS5zb3J0Um93c0FzYygpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd0ZvdXJCdG5zLCAnc29ydERlc2MnLCAnc29ydCBieSBjb2x1bW4gZGVzY2VuZGluZycsICh0ZSkgPT5cbiAgICAgIHRlLnNvcnRSb3dzRGVzYygpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd0ZvdXJCdG5zLCAnZm9ybXVsYScsICdldmFsdWF0ZSBmb3JtdWxhcycsICh0ZSkgPT5cbiAgICAgIHRlLmV2YWx1YXRlRm9ybXVsYXMoKSxcbiAgICApO1xuXG4gICAgY29uc3Qgcm93Rml2ZUJ0bnMgPSBuYXZIZWFkZXIuY3JlYXRlRGl2KHsgY2xzOiAnbmF2LWJ1dHRvbnMtY29udGFpbmVyJyB9KTtcbiAgICByb3dGaXZlQnRucy5jcmVhdGVTcGFuKHsgY2xzOiAnYWR2YW5jZWQtdGFibGVzLXJvdy1sYWJlbCcgfSkuc2V0VGV4dChcIk1pc2M6XCIpO1xuICAgIHRoaXMuZHJhd0J0bihyb3dGaXZlQnRucywgJ2NzdicsICdleHBvcnQgYXMgY3N2JywgKHRlKSA9PlxuICAgICAgdGUuZXhwb3J0Q1NWTW9kYWwoKSxcbiAgICApO1xuICAgIHRoaXMuZHJhd0J0bihyb3dGaXZlQnRucywgJ2hlbHAnLCAnaGVscCcsICgpID0+XG4gICAgICB3aW5kb3cub3BlbihcbiAgICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS90Z3Jvc2luZ2VyL2FkdmFuY2VkLXRhYmxlcy1vYnNpZGlhbi9ibG9iL21haW4vZG9jcy9oZWxwLm1kJyxcbiAgICAgICksXG4gICAgKTtcblxuICAgIGNvbnRhaW5lci5lbXB0eSgpO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChyb290RWwpO1xuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZHJhd0J0biA9IChcbiAgICBwYXJlbnQ6IEhUTUxEaXZFbGVtZW50LFxuICAgIGljb25OYW1lOiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBmbjogKHRlOiBUYWJsZUVkaXRvcikgPT4gdm9pZCxcbiAgKTogdm9pZCA9PiB7XG4gICAgY29uc3QgY3Vyc29yQ2hlY2sgPSAodGU6IFRhYmxlRWRpdG9yKTogYm9vbGVhbiA9PiB7XG4gICAgICBpZiAodGl0bGUgPT09ICdldmFsdWF0ZSBmb3JtdWxhcycpIHtcbiAgICAgICAgcmV0dXJuIHRlLmN1cnNvcklzSW5UYWJsZSgpIHx8IHRlLmN1cnNvcklzSW5UYWJsZUZvcm11bGEoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0ZS5jdXJzb3JJc0luVGFibGUoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgYnV0dG9uID0gcGFyZW50LmNyZWF0ZURpdih7IGNsczogJ2FkdmFuY2VkLXRhYmxlcy1idXR0b24gbmF2LWFjdGlvbi1idXR0b24nLCB0aXRsZSB9KTtcbiAgICBidXR0b24ub25DbGlja0V2ZW50KCgpID0+IHRoaXMud2l0aFRFKGZuLCBjdXJzb3JDaGVjaykpO1xuICAgIGJ1dHRvbi5hcHBlbmRDaGlsZChFbGVtZW50KGljb25zW2ljb25OYW1lXSkpO1xuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgd2l0aFRFID0gKFxuICAgIGZuOiAodGU6IFRhYmxlRWRpdG9yKSA9PiB2b2lkLFxuICAgIGN1cnNvckNoZWNrOiAodGU6IFRhYmxlRWRpdG9yKSA9PiBib29sZWFuLFxuICAgIGFsZXJ0T25Ob1RhYmxlID0gdHJ1ZSxcbiAgKTogdm9pZCA9PiB7XG4gICAgbGV0IGVkaXRvcjogRWRpdG9yO1xuICAgIGNvbnN0IGxlYWYgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0TW9zdFJlY2VudExlYWYoKTtcbiAgICBpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3KSB7XG4gICAgICBlZGl0b3IgPSBsZWFmLnZpZXcuZWRpdG9yO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0FkdmFuY2VkIFRhYmxlczogVW5hYmxlIHRvIGRldGVybWluZSBjdXJyZW50IGVkaXRvci4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0ZSA9IG5ldyBUYWJsZUVkaXRvcih0aGlzLmFwcCwgbGVhZi52aWV3LmZpbGUsIGVkaXRvciwgdGhpcy5zZXR0aW5ncyk7XG4gICAgaWYgKCFjdXJzb3JDaGVjayh0ZSkpIHtcbiAgICAgIGlmIChhbGVydE9uTm9UYWJsZSkge1xuICAgICAgICBuZXcgTm90aWNlKCdBZHZhbmNlZCBUYWJsZXM6IEN1cnNvciBtdXN0IGJlIGluIGEgdGFibGUuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm4odGUpO1xuICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gc3ZnIHN0cmluZyBpbnRvIGFuIEhUTUwgZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0gc3ZnVGV4dCBzdmcgaW1hZ2UgYXMgYSBzdHJpbmdcbiAqL1xuY29uc3QgRWxlbWVudCA9IChzdmdUZXh0OiBzdHJpbmcpOiBIVE1MRWxlbWVudCA9PiB7XG4gIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbiAgcmV0dXJuIHBhcnNlci5wYXJzZUZyb21TdHJpbmcoc3ZnVGV4dCwgJ3RleHQveG1sJykuZG9jdW1lbnRFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnLi9pY29ucyc7XG5pbXBvcnQgeyBkZWZhdWx0U2V0dGluZ3MsIFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3MgfSBmcm9tICcuL3NldHRpbmdzJztcbmltcG9ydCB7XG4gIFRhYmxlQ29udHJvbHNWaWV3LFxuICBUYWJsZUNvbnRyb2xzVmlld1R5cGUsXG59IGZyb20gJy4vdGFibGUtY29udHJvbHMtdmlldyc7XG5pbXBvcnQgeyBUYWJsZUVkaXRvciB9IGZyb20gJy4vdGFibGUtZWRpdG9yJztcbmltcG9ydCB7IEV4dGVuc2lvbiwgUHJlYyB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IEtleUJpbmRpbmcsIGtleW1hcCB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHsgRm9ybWF0VHlwZSB9IGZyb20gJ0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcyc7XG5pbXBvcnQge1xuICBBcHAsXG4gIEVkaXRvcixcbiAgTWFya2Rvd25WaWV3LFxuICBOb3RpY2UsXG4gIFBsdWdpbixcbiAgUGx1Z2luU2V0dGluZ1RhYixcbiAgU2V0dGluZyxcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYWJsZUVkaXRvclBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG4gIHB1YmxpYyBzZXR0aW5nczogVGFibGVFZGl0b3JQbHVnaW5TZXR0aW5ncztcblxuICAvLyBjbUVkaXRvcnMgaXMgdXNlZCBkdXJpbmcgdW5sb2FkIHRvIHJlbW92ZSBvdXIgZXZlbnQgaGFuZGxlcnMuXG4gIHByaXZhdGUgY21FZGl0b3JzOiBDb2RlTWlycm9yLkVkaXRvcltdO1xuXG4gIHByaXZhdGUgdGFibGVDb250cm9sc1ZpZXc6IFRhYmxlQ29udHJvbHNWaWV3O1xuXG4gIHB1YmxpYyBhc3luYyBvbmxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc29sZS5sb2coJ2xvYWRpbmcgbWFya2Rvd24tdGFibGUtZWRpdG9yIHBsdWdpbicpO1xuXG4gICAgYXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcblxuICAgIHRoaXMucmVnaXN0ZXJWaWV3KFxuICAgICAgVGFibGVDb250cm9sc1ZpZXdUeXBlLFxuICAgICAgKGxlYWYpID0+XG4gICAgICAgICh0aGlzLnRhYmxlQ29udHJvbHNWaWV3ID0gbmV3IFRhYmxlQ29udHJvbHNWaWV3KGxlYWYsIHRoaXMuc2V0dGluZ3MpKSxcbiAgICApO1xuXG4gICAgYWRkSWNvbnMoKTtcblxuICAgIGlmICh0aGlzLnNldHRpbmdzLnNob3dSaWJib25JY29uKSB7XG4gICAgICB0aGlzLmFkZFJpYmJvbkljb24oJ3NwcmVhZHNoZWV0JywgJ0FkdmFuY2VkIFRhYmxlcyBUb29sYmFyJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnRvZ2dsZVRhYmxlQ29udHJvbHNWaWV3KCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNtRWRpdG9ycyA9IFtdO1xuICAgIHRoaXMucmVnaXN0ZXJDb2RlTWlycm9yKChjbSkgPT4ge1xuICAgICAgdGhpcy5jbUVkaXRvcnMucHVzaChjbSk7XG4gICAgICBjbS5vbigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5RG93bik7XG4gICAgfSk7XG5cbiAgICAvLyBDTTYgZWRpdG9yIGV4dGVuc2lvbiBmb3IgcmVtYXBwaW5nIGtleXNcbiAgICB0aGlzLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKHRoaXMubWFrZUVkaXRvckV4dGVuc2lvbigpKTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ25leHQtcm93JyxcbiAgICAgIG5hbWU6ICdHbyB0byBuZXh0IHJvdycsXG4gICAgICBpY29uOiAnYXJyb3dlbnRlcicsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmJpbmRFbnRlciAmJiAhdGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgIG5ldyBOb3RpY2UoXG4gICAgICAgICAgICAnQWR2YW5jZWQgVGFibGVzOiBOZXh0IHJvdyBhbHNvIGJvdW5kIHRvIGVudGVyLiAnICtcbiAgICAgICAgICAgICAgJ1Bvc3NpYmx5IHByb2R1Y2luZyBkb3VibGUgYWN0aW9ucy4gU2VlIEFkdmFuY2VkIFRhYmxlcyBzZXR0aW5ncy4nLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGUubmV4dFJvdygpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICduZXh0LWNlbGwnLFxuICAgICAgbmFtZTogJ0dvIHRvIG5leHQgY2VsbCcsXG4gICAgICBpY29uOiAnYXJyb3d0YWInLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5iaW5kVGFiICYmICF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgbmV3IE5vdGljZShcbiAgICAgICAgICAgICdBZHZhbmNlZCBUYWJsZXM6IE5leHQgY2VsbCBhbHNvIGJvdW5kIHRvIHRhYi4gJyArXG4gICAgICAgICAgICAgICdQb3NzaWJseSBwcm9kdWNpbmcgZG91YmxlIGFjdGlvbnMuIFNlZSBBZHZhbmNlZCBUYWJsZXMgc2V0dGluZ3MuJyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRlLm5leHRDZWxsKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ3ByZXZpb3VzLWNlbGwnLFxuICAgICAgbmFtZTogJ0dvIHRvIHByZXZpb3VzIGNlbGwnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5iaW5kVGFiICYmICF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgbmV3IE5vdGljZShcbiAgICAgICAgICAgICdBZHZhbmNlZCBUYWJsZXM6IFByZXZpb3VzIGNlbGwgYWxzbyBib3VuZCB0byBzaGlmdCt0YWIuICcgK1xuICAgICAgICAgICAgICAnUG9zc2libHkgcHJvZHVjaW5nIGRvdWJsZSBhY3Rpb25zLiBTZWUgQWR2YW5jZWQgVGFibGVzIHNldHRpbmdzLicsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0ZS5wcmV2aW91c0NlbGwoKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnZm9ybWF0LXRhYmxlJyxcbiAgICAgIG5hbWU6ICdGb3JtYXQgdGFibGUgYXQgdGhlIGN1cnNvcicsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmZvcm1hdFRhYmxlKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ2Zvcm1hdC1hbGwtdGFibGVzJyxcbiAgICAgIG5hbWU6ICdGb3JtYXQgYWxsIHRhYmxlcyBpbiB0aGlzIGZpbGUnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5mb3JtYXRBbGxUYWJsZXMoKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnaW5zZXJ0LWNvbHVtbicsXG4gICAgICBuYW1lOiAnSW5zZXJ0IGNvbHVtbiBiZWZvcmUgY3VycmVudCcsXG4gICAgICBpY29uOiAnaW5zZXJ0Q29sdW1uJyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgdGUuaW5zZXJ0Q29sdW1uKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ2luc2VydC1yb3cnLFxuICAgICAgbmFtZTogJ0luc2VydCByb3cgYmVmb3JlIGN1cnJlbnQnLFxuICAgICAgaWNvbjogJ2luc2VydFJvdycsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmluc2VydFJvdygpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdlc2NhcGUtdGFibGUnLFxuICAgICAgbmFtZTogJ01vdmUgY3Vyc29yIG91dCBvZiB0YWJsZScsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmVzY2FwZSgpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdsZWZ0LWFsaWduLWNvbHVtbicsXG4gICAgICBuYW1lOiAnTGVmdCBhbGlnbiBjb2x1bW4nLFxuICAgICAgaWNvbjogJ2FsaWduTGVmdCcsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmxlZnRBbGlnbkNvbHVtbigpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdjZW50ZXItYWxpZ24tY29sdW1uJyxcbiAgICAgIG5hbWU6ICdDZW50ZXIgYWxpZ24gY29sdW1uJyxcbiAgICAgIGljb246ICdhbGlnbkNlbnRlcicsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmNlbnRlckFsaWduQ29sdW1uKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ3JpZ2h0LWFsaWduLWNvbHVtbicsXG4gICAgICBuYW1lOiAnUmlnaHQgYWxpZ24gY29sdW1uJyxcbiAgICAgIGljb246ICdhbGlnblJpZ2h0JyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgdGUucmlnaHRBbGlnbkNvbHVtbigpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdtb3ZlLWNvbHVtbi1sZWZ0JyxcbiAgICAgIG5hbWU6ICdNb3ZlIGNvbHVtbiBsZWZ0JyxcbiAgICAgIGljb246ICdtb3ZlQ29sdW1uTGVmdCcsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLm1vdmVDb2x1bW5MZWZ0KCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ21vdmUtY29sdW1uLXJpZ2h0JyxcbiAgICAgIG5hbWU6ICdNb3ZlIGNvbHVtbiByaWdodCcsXG4gICAgICBpY29uOiAnbW92ZUNvbHVtblJpZ2h0JyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgdGUubW92ZUNvbHVtblJpZ2h0KCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ21vdmUtcm93LXVwJyxcbiAgICAgIG5hbWU6ICdNb3ZlIHJvdyB1cCcsXG4gICAgICBpY29uOiAnbW92ZVJvd1VwJyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgdGUubW92ZVJvd1VwKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ21vdmUtcm93LWRvd24nLFxuICAgICAgbmFtZTogJ01vdmUgcm93IGRvd24nLFxuICAgICAgaWNvbjogJ21vdmVSb3dEb3duJyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgdGUubW92ZVJvd0Rvd24oKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnZGVsZXRlLWNvbHVtbicsXG4gICAgICBuYW1lOiAnRGVsZXRlIGNvbHVtbicsXG4gICAgICBpY29uOiAnZGVsZXRlQ29sdW1uJyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgdGUuZGVsZXRlQ29sdW1uKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ2RlbGV0ZS1yb3cnLFxuICAgICAgbmFtZTogJ0RlbGV0ZSByb3cnLFxuICAgICAgaWNvbjogJ2RlbGV0ZVJvdycsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmRlbGV0ZVJvdygpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdzb3J0LXJvd3MtYXNjZW5kaW5nJyxcbiAgICAgIG5hbWU6ICdTb3J0IHJvd3MgYXNjZW5kaW5nJyxcbiAgICAgIGljb246ICdzb3J0QXNjJyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgdGUuc29ydFJvd3NBc2MoKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnc29ydC1yb3dzLWRlc2NlbmRpbmcnLFxuICAgICAgbmFtZTogJ1NvcnQgcm93cyBkZXNjZW5kaW5nJyxcbiAgICAgIGljb246ICdzb3J0RGVzYycsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLnNvcnRSb3dzRGVzYygpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdldmFsdWF0ZS1mb3JtdWxhcycsXG4gICAgICBuYW1lOiAnRXZhbHVhdGUgdGFibGUgZm9ybXVsYXMnLFxuICAgICAgaWNvbjogJ2Zvcm11bGEnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogKFxuICAgICAgICBjaGVja2luZzogYm9vbGVhbixcbiAgICAgICAgZWRpdG9yOiBFZGl0b3IsXG4gICAgICAgIHZpZXc6IE1hcmtkb3duVmlldyxcbiAgICAgICk6IGJvb2xlYW4gfCB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgdGUgPSBuZXcgVGFibGVFZGl0b3IodGhpcy5hcHAsIHZpZXcuZmlsZSwgZWRpdG9yLCB0aGlzLnNldHRpbmdzKTtcbiAgICAgICAgaWYgKGNoZWNraW5nKSB7XG4gICAgICAgICAgcmV0dXJuIHRlLmN1cnNvcklzSW5UYWJsZSgpIHx8IHRlLmN1cnNvcklzSW5UYWJsZUZvcm11bGEoKTtcbiAgICAgICAgfVxuICAgICAgICB0ZS5ldmFsdWF0ZUZvcm11bGFzKCk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAndGFibGUtY29udHJvbC1iYXInLFxuICAgICAgbmFtZTogJ09wZW4gdGFibGUgY29udHJvbHMgdG9vbGJhcicsXG4gICAgICBob3RrZXlzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtb2RpZmllcnM6IFsnTW9kJywgJ1NoaWZ0J10sXG4gICAgICAgICAga2V5OiAnZCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgdGhpcy50b2dnbGVUYWJsZUNvbnRyb2xzVmlldygpO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgVGFibGVFZGl0b3JTZXR0aW5nc1RhYih0aGlzLmFwcCwgdGhpcykpO1xuICB9XG5cbiAgcHVibGljIG9udW5sb2FkKCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCd1bmxvYWRpbmcgbWFya2Rvd24tdGFibGUtZWRpdG9yIHBsdWdpbicpO1xuXG4gICAgdGhpcy5jbUVkaXRvcnMuZm9yRWFjaCgoY20pID0+IHtcbiAgICAgIGNtLm9mZigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5RG93bik7XG4gICAgfSk7XG4gIH1cblxuICAvLyBtYWtlRWRpdG9yRXh0ZW5zaW9uIGlzIHVzZWQgdG8gYmluZCBUYWIgYW5kIEVudGVyIGluIHRoZSBuZXcgQ002IExpdmUgUHJldmlldyBlZGl0b3IuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFrZUVkaXRvckV4dGVuc2lvbiA9ICgpOiBFeHRlbnNpb24gPT4ge1xuICAgIGNvbnN0IGtleW1hcHM6IEtleUJpbmRpbmdbXSA9IFtdO1xuXG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuYmluZEVudGVyKSB7XG4gICAgICBrZXltYXBzLnB1c2goe1xuICAgICAgICBrZXk6ICdFbnRlcicsXG4gICAgICAgIHJ1bjogKCk6IGJvb2xlYW4gPT5cbiAgICAgICAgICB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbkNNNigodGU6IFRhYmxlRWRpdG9yKSA9PiB0ZS5uZXh0Um93KCkpKCksXG4gICAgICAgIHByZXZlbnREZWZhdWx0OiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuYmluZFRhYikge1xuICAgICAga2V5bWFwcy5wdXNoKHtcbiAgICAgICAga2V5OiAnVGFiJyxcbiAgICAgICAgcnVuOiAoKTogYm9vbGVhbiA9PlxuICAgICAgICAgIHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uQ002KCh0ZTogVGFibGVFZGl0b3IpID0+IHRlLm5leHRDZWxsKCkpKCksXG4gICAgICAgIHNoaWZ0OiAoKTogYm9vbGVhbiA9PlxuICAgICAgICAgIHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uQ002KCh0ZTogVGFibGVFZGl0b3IpID0+XG4gICAgICAgICAgICB0ZS5wcmV2aW91c0NlbGwoKSxcbiAgICAgICAgICApKCksXG4gICAgICAgIHByZXZlbnREZWZhdWx0OiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByZWMub3ZlcnJpZGUoa2V5bWFwLm9mKGtleW1hcHMpKTtcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5ld1BlcmZvcm1UYWJsZUFjdGlvbkNNNiA9XG4gICAgKGZuOiAodGU6IFRhYmxlRWRpdG9yKSA9PiB2b2lkKTogKCgpID0+IGJvb2xlYW4pID0+XG4gICAgKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgY29uc3QgbGVhZiA9IHRoaXMuYXBwLndvcmtzcGFjZS5hY3RpdmVMZWFmO1xuICAgICAgaWYgKGxlYWYudmlldyBpbnN0YW5jZW9mIE1hcmtkb3duVmlldykge1xuICAgICAgICBjb25zdCB0ZSA9IG5ldyBUYWJsZUVkaXRvcihcbiAgICAgICAgICB0aGlzLmFwcCxcbiAgICAgICAgICBsZWFmLnZpZXcuZmlsZSxcbiAgICAgICAgICBsZWFmLnZpZXcuZWRpdG9yLFxuICAgICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRlLmN1cnNvcklzSW5UYWJsZSgpKSB7XG4gICAgICAgICAgZm4odGUpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5ld1BlcmZvcm1UYWJsZUFjdGlvbiA9XG4gICAgKGZuOiAodGU6IFRhYmxlRWRpdG9yKSA9PiB2b2lkLCBhbGVydE9uTm9UYWJsZSA9IHRydWUpID0+XG4gICAgKGNoZWNraW5nOiBib29sZWFuLCBlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KTogYm9vbGVhbiB8IHZvaWQgPT4ge1xuICAgICAgY29uc3QgdGUgPSBuZXcgVGFibGVFZGl0b3IodGhpcy5hcHAsIHZpZXcuZmlsZSwgZWRpdG9yLCB0aGlzLnNldHRpbmdzKTtcblxuICAgICAgaWYgKGNoZWNraW5nKSB7XG4gICAgICAgIHJldHVybiB0ZS5jdXJzb3JJc0luVGFibGUoKTtcbiAgICAgIH1cblxuICAgICAgZm4odGUpO1xuICAgIH07XG5cbiAgLy8gaGFuZGxlS2V5RG93biBpcyB1c2VkIHRvIGJpbmQgdGhlIHRhYiBhbmQgZW50ZXIga2V5cyBpbiB0aGUgbGVnYWN5IENNNSBlZGl0b3IuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlS2V5RG93biA9IChcbiAgICBjbTogQ29kZU1pcnJvci5FZGl0b3IsXG4gICAgZXZlbnQ6IEtleWJvYXJkRXZlbnQsXG4gICk6IHZvaWQgPT4ge1xuICAgIGlmIChbJ1RhYicsICdFbnRlciddLmNvbnRhaW5zKGV2ZW50LmtleSkpIHtcbiAgICAgIGxldCBlZGl0b3I6IEVkaXRvcjtcbiAgICAgIGxldCB2aWV3OiBNYXJrZG93blZpZXc7XG4gICAgICBjb25zdCBhY3RpdmVMZWFmID0gdGhpcy5hcHAud29ya3NwYWNlLmFjdGl2ZUxlYWY7XG4gICAgICBpZiAoYWN0aXZlTGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3KSB7XG4gICAgICAgIGVkaXRvciA9IGFjdGl2ZUxlYWYudmlldy5lZGl0b3I7XG4gICAgICAgIHZpZXcgPSBhY3RpdmVMZWFmLnZpZXc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICBjYXNlICdUYWInOlxuICAgICAgICAgICAgaWYgKCF0aGlzLnNldHRpbmdzLmJpbmRUYWIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgdGUucHJldmlvdXNDZWxsKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0ZS5uZXh0Q2VsbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgaWYgKCF0aGlzLnNldHRpbmdzLmJpbmRFbnRlcikge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICB0ZS5lc2NhcGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0ZS5uZXh0Um93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAvLyBDaGVjayBmaXJzdCBpZiB3ZSBhcmUgaW4gYSB0YWJsZSwgaWYgc28sIHRoZW4gZXhlY3V0ZS5cbiAgICAgIGlmIChhY3Rpb24odHJ1ZSwgZWRpdG9yLCB2aWV3KSkge1xuICAgICAgICBhY3Rpb24oZmFsc2UsIGVkaXRvciwgdmlldyk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdG9nZ2xlVGFibGVDb250cm9sc1ZpZXcgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFRhYmxlQ29udHJvbHNWaWV3VHlwZSk7XG4gICAgaWYgKGV4aXN0aW5nLmxlbmd0aCkge1xuICAgICAgdGhpcy5hcHAud29ya3NwYWNlLnJldmVhbExlYWYoZXhpc3RpbmdbMF0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRSaWdodExlYWYoZmFsc2UpLnNldFZpZXdTdGF0ZSh7XG4gICAgICB0eXBlOiBUYWJsZUNvbnRyb2xzVmlld1R5cGUsXG4gICAgICBhY3RpdmU6IHRydWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFwcC53b3Jrc3BhY2UucmV2ZWFsTGVhZihcbiAgICAgIHRoaXMuYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUoVGFibGVDb250cm9sc1ZpZXdUeXBlKVswXSxcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFNldHRpbmdzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNldHRpbmdzT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICBkZWZhdWx0U2V0dGluZ3MsXG4gICAgICBhd2FpdCB0aGlzLmxvYWREYXRhKCksXG4gICAgKTtcbiAgICB0aGlzLnNldHRpbmdzID0gbmV3IFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3Moc2V0dGluZ3NPcHRpb25zKTtcbiAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpc01vYmlsZSA9ICgpOiBib29sZWFuID0+ICh0aGlzLmFwcCBhcyBhbnkpLmlzTW9iaWxlO1xufVxuXG5jbGFzcyBUYWJsZUVkaXRvclNldHRpbmdzVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luOiBUYWJsZUVkaXRvclBsdWdpbjtcblxuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBUYWJsZUVkaXRvclBsdWdpbikge1xuICAgIHN1cGVyKGFwcCwgcGx1Z2luKTtcbiAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwbGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGFpbmVyRWwgfSA9IHRoaXM7XG4gICAgY29udGFpbmVyRWwuZW1wdHkoKTtcblxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ0FkdmFuY2VkIFRhYmxlcyBQbHVnaW4gLSBTZXR0aW5ncycgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdCaW5kIGVudGVyIHRvIHRhYmxlIG5hdmlnYXRpb24nKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgICdSZXF1aXJlcyByZXN0YXJ0IG9mIE9ic2lkaWFuLiBJZiBlbmFibGVkLCB3aGVuIHRoZSBjdXJzb3IgaXMgaW4gYSB0YWJsZSwgZW50ZXIgYWR2YW5jZXMgdG8gdGhlIG5leHQgJyArXG4gICAgICAgICAgJ3Jvdy4gRGlzYWJsaW5nIHRoaXMgY2FuIGhlbHAgYXZvaWQgY29uZmxpY3Rpbmcgd2l0aCB0YWcgb3IgQ0pLICcgK1xuICAgICAgICAgICdhdXRvY29tcGxldGlvbi4gSWYgZGlzYWJsaW5nLCBiaW5kIFwiR28gdG8gLi4uXCIgaW4gdGhlIE9ic2lkaWFuIEhvdGtleXMgc2V0dGluZ3MuJyxcbiAgICAgIClcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmJpbmRFbnRlcikub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuYmluZEVudGVyID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xuICAgICAgICAgIHRoaXMuZGlzcGxheSgpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdCaW5kIHRhYiB0byB0YWJsZSBuYXZpZ2F0aW9uJylcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICAnUmVxdWlyZXMgcmVzdGFydCBvZiBPYnNpZGlhbi4gSWYgZW5hYmxlZCwgd2hlbiB0aGUgY3Vyc29yIGlzIGluIGEgdGFibGUsIHRhYi9zaGlmdCt0YWIgbmF2aWdhdGUgJyArXG4gICAgICAgICAgJ2JldHdlZW4gY2VsbHMuIERpc2FibGluZyB0aGlzIGNhbiBoZWxwIGF2b2lkIGNvbmZsaWN0aW5nIHdpdGggdGFnICcgK1xuICAgICAgICAgICdvciBDSksgYXV0b2NvbXBsZXRpb24uIElmIGRpc2FibGluZywgYmluZCBcIkdvIHRvIC4uLlwiIGluIHRoZSBPYnNpZGlhbiBIb3RrZXlzIHNldHRpbmdzLicsXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XG4gICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5iaW5kVGFiKS5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5iaW5kVGFiID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xuICAgICAgICAgIHRoaXMuZGlzcGxheSgpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdQYWQgY2VsbCB3aWR0aCB1c2luZyBzcGFjZXMnKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgICdJZiBlbmFibGVkLCB0YWJsZSBjZWxscyB3aWxsIGhhdmUgc3BhY2VzIGFkZGVkIHRvIG1hdGNoIHRoZSB3aWR0aCBvZiB0aGUgJyArXG4gICAgICAgICAgJ2xvbmdlc3QgY2VsbCBpbiB0aGUgY29sdW1uLicsXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5mb3JtYXRUeXBlID09PSBGb3JtYXRUeXBlLk5PUk1BTClcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5mb3JtYXRUeXBlID0gdmFsdWVcbiAgICAgICAgICAgICAgPyBGb3JtYXRUeXBlLk5PUk1BTFxuICAgICAgICAgICAgICA6IEZvcm1hdFR5cGUuV0VBSztcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheSgpO1xuICAgICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ1Nob3cgaWNvbiBpbiBzaWRlYmFyJylcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICAnSWYgZW5hYmxlZCwgYSBidXR0b24gd2hpY2ggb3BlbnMgdGhlIHRhYmxlIGNvbnRyb2xzIHRvb2xiYXIgd2lsbCBiZSBhZGRlZCB0byB0aGUgT2JzaWRpYW4gc2lkZWJhci4gJyArXG4gICAgICAgICAgJ1RoZSB0b29sYmFyIGNhbiBhbHNvIGJlIG9wZW5lZCB3aXRoIGEgSG90a2V5LiBDaGFuZ2VzIG9ubHkgdGFrZSBlZmZlY3Qgb24gcmVsb2FkLicsXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5zaG93UmliYm9uSWNvbilcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5zaG93UmliYm9uSWNvbiA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5KCk7XG4gICAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgY29uc3QgZGl2ID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ2RpdicsIHtcbiAgICAgIGNsczogJ2FkdmFuY2VkLXRhYmxlcy1kb25hdGlvbicsXG4gICAgfSk7XG5cbiAgICBjb25zdCBkb25hdGVUZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICAgIGRvbmF0ZVRleHQuYXBwZW5kVGV4dChcbiAgICAgICdJZiB0aGlzIHBsdWdpbiBhZGRzIHZhbHVlIGZvciB5b3UgYW5kIHlvdSB3b3VsZCBsaWtlIHRvIGhlbHAgc3VwcG9ydCAnICtcbiAgICAgICAgJ2NvbnRpbnVlZCBkZXZlbG9wbWVudCwgcGxlYXNlIHVzZSB0aGUgYnV0dG9ucyBiZWxvdzonLFxuICAgICk7XG4gICAgZGl2LmFwcGVuZENoaWxkKGRvbmF0ZVRleHQpO1xuXG4gICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuXG4gICAgZGl2LmFwcGVuZENoaWxkKFxuICAgICAgY3JlYXRlRG9uYXRlQnV0dG9uKFxuICAgICAgICAnaHR0cHM6Ly9wYXlwYWwubWUvdGdyb3NpbmdlcicsXG4gICAgICAgIHBhcnNlci5wYXJzZUZyb21TdHJpbmcocGF5cGFsLCAndGV4dC94bWwnKS5kb2N1bWVudEVsZW1lbnQsXG4gICAgICApLFxuICAgICk7XG5cbiAgICBkaXYuYXBwZW5kQ2hpbGQoXG4gICAgICBjcmVhdGVEb25hdGVCdXR0b24oXG4gICAgICAgICdodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL3Rncm9zaW5nZXInLFxuICAgICAgICBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGJ1eU1lQUNvZmZlZSwgJ3RleHQveG1sJykuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgKSxcbiAgICApO1xuICB9XG59XG5cbmNvbnN0IGNyZWF0ZURvbmF0ZUJ1dHRvbiA9IChsaW5rOiBzdHJpbmcsIGltZzogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCA9PiB7XG4gIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gIGEuc2V0QXR0cmlidXRlKCdocmVmJywgbGluayk7XG4gIGEuYWRkQ2xhc3MoJ2FkdmFuY2VkLXRhYmxlcy1kb25hdGUtYnV0dG9uJyk7XG4gIGEuYXBwZW5kQ2hpbGQoaW1nKTtcbiAgcmV0dXJuIGE7XG59O1xuXG5jb25zdCBidXlNZUFDb2ZmZWUgPSBgXG48c3ZnIHdpZHRoPVwiMTUwXCIgaGVpZ2h0PVwiNDJcIiB2aWV3Qm94PVwiMCAwIDI2MCA3M1wiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPHBhdGggZD1cIk0wIDExLjY4QzAgNS4yMjkzMiA1LjIyOTMxIDAgMTEuNjggMEgyNDguMkMyNTQuNjUxIDAgMjU5Ljg4IDUuMjI5MzEgMjU5Ljg4IDExLjY4VjYxLjMyQzI1OS44OCA2Ny43NzA3IDI1NC42NTEgNzMgMjQ4LjIgNzNIMTEuNjhDNS4yMjkzMSA3MyAwIDY3Ljc3MDcgMCA2MS4zMlYxMS42OFpcIiBmaWxsPVwiI0ZGREQwMFwiLz5cbjxwYXRoIGQ9XCJNNTIuMjU2NiAyNC4wMDc4TDUyLjIyNDYgMjMuOTg4OUw1Mi4xNTA0IDIzLjk2NjNDNTIuMTgwMiAyMy45OTE1IDUyLjIxNzYgMjQuMDA2MSA1Mi4yNTY2IDI0LjAwNzhaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XG48cGF0aCBkPVwiTTUyLjcyNDggMjcuMzQ1N0w1Mi42ODk1IDI3LjM1NTZMNTIuNzI0OCAyNy4zNDU3WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk01Mi4yNzAxIDI0LjAwMjRDNTIuMjY2IDI0LjAwMTkgNTIuMjYxOSAyNC4wMDA5IDUyLjI1OCAyMy45OTk1QzUyLjI1NzggMjQuMDAyMiA1Mi4yNTc4IDI0LjAwNDkgNTIuMjU4IDI0LjAwNzZDNTIuMjYyNCAyNC4wMDcgNTIuMjY2NiAyNC4wMDUyIDUyLjI3MDEgMjQuMDAyNFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNNTIuMjU3OCAyNC4wMDk0SDUyLjI2NDNWMjQuMDA1NEw1Mi4yNTc4IDI0LjAwOTRaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XG48cGF0aCBkPVwiTTUyLjY5NzMgMjcuMzM5NEw1Mi43NTEzIDI3LjMwODZMNTIuNzcxNCAyNy4yOTczTDUyLjc4OTcgMjcuMjc3OEM1Mi43NTU0IDI3LjI5MjYgNTIuNzI0MSAyNy4zMTM1IDUyLjY5NzMgMjcuMzM5NFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNNTIuMzQ4NCAyNC4wODEyTDUyLjI5NTYgMjQuMDMxTDUyLjI1OTggMjQuMDExNUM1Mi4yNzkgMjQuMDQ1NCA1Mi4zMTA4IDI0LjA3MDUgNTIuMzQ4NCAyNC4wODEyWlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk0zOS4wNjg0IDU2LjQ2OUMzOS4wMjYyIDU2LjQ4NzIgMzguOTg5MyA1Ni41MTU4IDM4Ljk2MDkgNTYuNTUyTDM4Ljk5NDMgNTYuNTMwNkMzOS4wMTY5IDU2LjUwOTggMzkuMDQ4OSA1Ni40ODUzIDM5LjA2ODQgNTYuNDY5WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk00Ni43ODAyIDU0Ljk1MThDNDYuNzgwMiA1NC45MDQxIDQ2Ljc1NjkgNTQuOTEyOSA0Ni43NjI2IDU1LjA4MjZDNDYuNzYyNiA1NS4wNjg3IDQ2Ljc2ODMgNTUuMDU0OSA0Ni43NzA4IDU1LjA0MTdDNDYuNzczOSA1NS4wMTE1IDQ2Ljc3NjQgNTQuOTgyIDQ2Ljc4MDIgNTQuOTUxOFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNNDUuOTg0NCA1Ni40NjlDNDUuOTQyMiA1Ni40ODcyIDQ1LjkwNTMgNTYuNTE1OCA0NS44NzcgNTYuNTUyTDQ1LjkxMDMgNTYuNTMwNkM0NS45MzI5IDU2LjUwOTggNDUuOTY0OSA1Ni40ODUzIDQ1Ljk4NDQgNTYuNDY5WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk0zMy42MzA3IDU2LjgzMDFDMzMuNTk4NyA1Ni44MDIzIDMzLjU1OTUgNTYuNzg0IDMzLjUxNzYgNTYuNzc3M0MzMy41NTE1IDU2Ljc5MzcgMzMuNTg1NSA1Ni44MSAzMy42MDgxIDU2LjgyMjZMMzMuNjMwNyA1Ni44MzAxWlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk0zMi40MTE4IDU1LjY1OThDMzIuNDA2OCA1NS42MTAzIDMyLjM5MTYgNTUuNTYyNCAzMi4zNjcyIDU1LjUxOUMzMi4zODQ1IDU1LjU2NDIgMzIuMzk5IDU1LjYxMDQgMzIuNDEwNiA1NS42NTczTDMyLjQxMTggNTUuNjU5OFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNNDAuNjIzIDM0LjcyMjFDMzguOTQ0OSAzNS40NDA1IDM3LjA0MDQgMzYuMjU1MSAzNC41NzIyIDM2LjI1NTFDMzMuNTM5NyAzNi4yNTMxIDMyLjUxMjIgMzYuMTExNCAzMS41MTc2IDM1LjgzNEwzMy4yMjQ3IDUzLjM2MDVDMzMuMjg1MSA1NC4wOTMgMzMuNjE4OCA1NC43NzYxIDM0LjE1OTUgNTUuMjczOUMzNC43MDAzIDU1Ljc3MTggMzUuNDA4NSA1Ni4wNDgyIDM2LjE0MzUgNTYuMDQ4QzM2LjE0MzUgNTYuMDQ4IDM4LjU2NCA1Ni4xNzM3IDM5LjM3MTYgNTYuMTczN0M0MC4yNDA5IDU2LjE3MzcgNDIuODQ3NCA1Ni4wNDggNDIuODQ3NCA1Ni4wNDhDNDMuNTgyMyA1Ni4wNDggNDQuMjkwNCA1NS43NzE2IDQ0LjgzMSA1NS4yNzM3QzQ1LjM3MTYgNTQuNzc1OSA0NS43MDUyIDU0LjA5MjkgNDUuNzY1NiA1My4zNjA1TDQ3LjU5NCAzMy45OTNDNDYuNzc2OSAzMy43MTQgNDUuOTUyMyAzMy41Mjg2IDQ1LjAyMjcgMzMuNTI4NkM0My40MTUgMzMuNTI3OSA0Mi4xMTk2IDM0LjA4MTcgNDAuNjIzIDM0LjcyMjFaXCIgZmlsbD1cIndoaXRlXCIvPlxuPHBhdGggZD1cIk0yNi4yMzQ0IDI3LjI0NDlMMjYuMjYzMyAyNy4yNzE5TDI2LjI4MjEgMjcuMjgzMkMyNi4yNjc2IDI3LjI2ODggMjYuMjUxNiAyNy4yNTU5IDI2LjIzNDQgMjcuMjQ0OVpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNNTUuNDkwNiAyNS42Mjc0TDU1LjIzMzYgMjQuMzMwN0M1NS4wMDI5IDIzLjE2NzMgNTQuNDc5MyAyMi4wNjggNTMuMjg1MSAyMS42NDc1QzUyLjkwMjQgMjEuNTEzIDUyLjQ2OCAyMS40NTUyIDUyLjE3NDUgMjEuMTc2OEM1MS44ODEgMjAuODk4MyA1MS43OTQzIDIwLjQ2NTkgNTEuNzI2NCAyMC4wNjQ5QzUxLjYwMDcgMTkuMzI4OSA1MS40ODI1IDE4LjU5MjMgNTEuMzUzNyAxNy44NTc1QzUxLjI0MjQgMTcuMjI1OSA1MS4xNTQ0IDE2LjUxNjMgNTAuODY0NyAxNS45MzY4QzUwLjQ4NzYgMTUuMTU4NiA0OS43MDUgMTQuNzAzNiA0OC45MjY5IDE0LjQwMjVDNDguNTI4MiAxNC4yNTM3IDQ4LjEyMTMgMTQuMTI3OCA0Ny43MDgyIDE0LjAyNTRDNDUuNzY0MiAxMy41MTI1IDQzLjcyMDIgMTMuMzI0IDQxLjcyMDIgMTMuMjE2NUMzOS4zMTk3IDEzLjA4NCAzNi45MTI4IDEzLjEyMzkgMzQuNTE4IDEzLjMzNTlDMzIuNzM1NSAxMy40OTgxIDMwLjg1ODEgMTMuNjk0MiAyOS4xNjQyIDE0LjMxMDhDMjguNTQ1MSAxNC41MzY0IDI3LjkwNzEgMTQuODA3MyAyNy40MzY0IDE1LjI4NTZDMjYuODU4NyAxNS44NzMzIDI2LjY3MDIgMTYuNzgyMSAyNy4wOTE5IDE3LjUxNUMyNy4zOTE3IDE4LjAzNTQgMjcuODk5NiAxOC40MDMxIDI4LjQzODIgMTguNjQ2M0MyOS4xMzk4IDE4Ljk1OTcgMjkuODcyNiAxOS4xOTgyIDMwLjYyNDIgMTkuMzU3OEMzMi43MTcyIDE5LjgyMDQgMzQuODg1IDIwLjAwMjEgMzcuMDIzMyAyMC4wNzk0QzM5LjM5MzIgMjAuMTc1IDQxLjc2NyAyMC4wOTc1IDQ0LjEyNTYgMTkuODQ3NEM0NC43MDg5IDE5Ljc4MzMgNDUuMjkxMSAxOS43MDY0IDQ1Ljg3MjMgMTkuNjE2OEM0Ni41NTY4IDE5LjUxMTggNDYuOTk2MSAxOC42MTY4IDQ2Ljc5NDMgMTcuOTkzM0M0Ni41NTMgMTcuMjQ3OSA0NS45MDQ0IDE2Ljk1ODcgNDUuMTcwOSAxNy4wNzEyQzQ1LjA2MjggMTcuMDg4MiA0NC45NTUzIDE3LjEwMzkgNDQuODQ3MiAxNy4xMTk2TDQ0Ljc2OTIgMTcuMTMxQzQ0LjUyMDggMTcuMTYyNCA0NC4yNzIzIDE3LjE5MTcgNDQuMDIzOCAxNy4yMTlDNDMuNTEwNSAxNy4yNzQzIDQyLjk5NTkgMTcuMzE5NSA0Mi40ODAxIDE3LjM1NDdDNDEuMzI0OSAxNy40MzUyIDQwLjE2NjUgMTcuNDcyMiAzOS4wMDg4IDE3LjQ3NDFDMzcuODcxMiAxNy40NzQxIDM2LjczMjkgMTcuNDQyMSAzNS41OTc4IDE3LjM2NzNDMzUuMDc5OSAxNy4zMzMzIDM0LjU2MzIgMTcuMjkwMiAzNC4wNDc4IDE3LjIzNzhDMzMuODEzNCAxNy4yMTMzIDMzLjU3OTYgMTcuMTg3NSAzMy4zNDU4IDE3LjE1ODZMMzMuMTIzMyAxNy4xMzAzTDMzLjA3NDkgMTcuMTIzNEwzMi44NDQyIDE3LjA5MDFDMzIuMzcyOCAxNy4wMTkxIDMxLjkwMTQgMTYuOTM3NCAzMS40MzUgMTYuODM4N0MzMS4zODggMTYuODI4MyAzMS4zNDU5IDE2LjgwMjEgMzEuMzE1NyAxNi43NjQ1QzMxLjI4NTYgMTYuNzI2OSAzMS4yNjkxIDE2LjY4MDEgMzEuMjY5MSAxNi42MzE5QzMxLjI2OTEgMTYuNTgzNyAzMS4yODU2IDE2LjUzNjkgMzEuMzE1NyAxNi40OTkzQzMxLjM0NTkgMTYuNDYxNyAzMS4zODggMTYuNDM1NiAzMS40MzUgMTYuNDI1MUgzMS40NDM4QzMxLjg0OCAxNi4zMzkgMzIuMjU1MyAxNi4yNjU1IDMyLjY2MzggMTYuMjAxNEMzMi44IDE2LjE4IDMyLjkzNjYgMTYuMTU5IDMzLjA3MzYgMTYuMTM4NUgzMy4wNzc0QzMzLjMzMzIgMTYuMTIxNSAzMy41OTAzIDE2LjA3NTcgMzMuODQ0OCAxNi4wNDU1QzM2LjA1OTUgMTUuODE1MSAzOC4yODc0IDE1LjczNjYgNDAuNTEyOCAxNS44MTA0QzQxLjU5MzMgMTUuODQxOSA0Mi42NzMxIDE1LjkwNTMgNDMuNzQ4NSAxNi4wMTQ3QzQzLjk3OTggMTYuMDM4NiA0NC4yMDk4IDE2LjA2MzcgNDQuNDM5OSAxNi4wOTJDNDQuNTI3OSAxNi4xMDI3IDQ0LjYxNjUgMTYuMTE1MyA0NC43MDUxIDE2LjEyNTlMNDQuODgzNiAxNi4xNTE3QzQ1LjQwNCAxNi4yMjkyIDQ1LjkyMTcgMTYuMzIzMyA0Ni40MzY3IDE2LjQzMzlDNDcuMTk5NyAxNi41OTk5IDQ4LjE3OTYgMTYuNjUzOSA0OC41MTkgMTcuNDg5OEM0OC42MjcxIDE3Ljc1NTEgNDguNjc2MSAxOC4wNDk5IDQ4LjczNTkgMTguMzI4M0w0OC44MTE5IDE4LjY4MzRDNDguODEzOSAxOC42ODk4IDQ4LjgxNTQgMTguNjk2MyA0OC44MTYzIDE4LjcwMjlDNDguOTk2MSAxOS41NDA5IDQ5LjE3NiAyMC4zNzkgNDkuMzU2MiAyMS4yMTdDNDkuMzY5NCAyMS4yNzg5IDQ5LjM2OTcgMjEuMzQyOSA0OS4zNTcxIDIxLjQwNDlDNDkuMzQ0NSAyMS40NjY5IDQ5LjMxOTMgMjEuNTI1NyA0OS4yODI5IDIxLjU3NzZDNDkuMjQ2NiAyMS42Mjk0IDQ5LjIgMjEuNjczMiA0OS4xNDYgMjEuNzA2MkM0OS4wOTIgMjEuNzM5MiA0OS4wMzE3IDIxLjc2MDggNDguOTY5IDIxLjc2OTVINDguOTY0TDQ4Ljg1NCAyMS43ODQ2TDQ4Ljc0NTMgMjEuNzk5QzQ4LjQwMDkgMjEuODQzOSA0OC4wNTYgMjEuODg1OCA0Ny43MTA3IDIxLjkyNDdDNDcuMDMwNyAyMi4wMDIyIDQ2LjM0OTYgMjIuMDY5MyA0NS42Njc0IDIyLjEyNTlDNDQuMzExOSAyMi4yMzg2IDQyLjk1MzYgMjIuMzEyNSA0MS41OTI3IDIyLjM0NzdDNDAuODk5MiAyMi4zNjYyIDQwLjIwNTkgMjIuMzc0OCAzOS41MTI5IDIyLjM3MzVDMzYuNzU0MyAyMi4zNzEzIDMzLjk5ODEgMjIuMjExIDMxLjI1NzggMjEuODkzM0MzMC45NjExIDIxLjg1ODEgMzAuNjY0NSAyMS44MjA0IDMwLjM2NzggMjEuNzgyMUMzMC41OTc4IDIxLjgxMTYgMzAuMjAwNiAyMS43NTk0IDMwLjEyMDIgMjEuNzQ4MUMyOS45MzE2IDIxLjcyMTcgMjkuNzQzMSAyMS42OTQzIDI5LjU1NDUgMjEuNjY1OEMyOC45MjE2IDIxLjU3MDkgMjguMjkyNCAyMS40NTQgMjcuNjYwNyAyMS4zNTE1QzI2Ljg5NzEgMjEuMjI1OCAyNi4xNjY3IDIxLjI4ODcgMjUuNDc2IDIxLjY2NThDMjQuOTA5IDIxLjk3NiAyNC40NTAxIDIyLjQ1MTggMjQuMTYwNSAyMy4wMjk3QzIzLjg2MjYgMjMuNjQ1NiAyMy43NzM5IDI0LjMxNjMgMjMuNjQwNyAyNC45NzgxQzIzLjUwNzQgMjUuNjM5OSAyMy4zIDI2LjM1MjEgMjMuMzc4NiAyNy4wMzE1QzIzLjU0NzcgMjguNDk3OSAyNC41NzI4IDI5LjY4OTUgMjYuMDQ3MyAyOS45NTZDMjcuNDM0NSAzMC4yMDc0IDI4LjgyOTIgMzAuNDExMSAzMC4yMjc2IDMwLjU4NDZDMzUuNzIxMiAzMS4yNTc0IDQxLjI3MTEgMzEuMzM3OSA0Ni43ODE4IDMwLjgyNDdDNDcuMjMwNSAzMC43ODI4IDQ3LjY3ODcgMzAuNzM3MSA0OC4xMjYyIDMwLjY4NzZDNDguMjY2IDMwLjY3MjMgNDguNDA3NCAzMC42ODg0IDQ4LjU0MDEgMzAuNzM0OEM0OC42NzI5IDMwLjc4MTIgNDguNzkzNiAzMC44NTY2IDQ4Ljg5MzQgMzAuOTU1N0M0OC45OTMyIDMxLjA1NDggNDkuMDY5NSAzMS4xNzQ5IDQ5LjExNjkgMzEuMzA3M0M0OS4xNjQyIDMxLjQzOTcgNDkuMTgxNCAzMS41ODExIDQ5LjE2NyAzMS43MjA5TDQ5LjAyNzUgMzMuMDc3M0M0OC43NDYzIDM1LjgxODEgNDguNDY1MiAzOC41NTg3IDQ4LjE4NCA0MS4yOTlDNDcuODkwNyA0NC4xNzY5IDQ3LjU5NTUgNDcuMDU0NSA0Ny4yOTg0IDQ5LjkzMTlDNDcuMjE0NiA1MC43NDIyIDQ3LjEzMDggNTEuNTUyNCA0Ny4wNDcgNTIuMzYyNEM0Ni45NjY2IDUzLjE2IDQ2Ljk1NTIgNTMuOTgyNyA0Ni44MDM4IDU0Ljc3MDlDNDYuNTY0OSA1Ni4wMTAzIDQ1LjcyNTggNTYuNzcxNSA0NC41MDE1IDU3LjA0OTlDNDMuMzc5OCA1Ny4zMDUyIDQyLjIzMzkgNTcuNDM5MiA0MS4wODM2IDU3LjQ0OTdDMzkuODA4MyA1Ny40NTY2IDM4LjUzMzYgNTcuNCAzNy4yNTgzIDU3LjQwNjlDMzUuODk3IDU3LjQxNDUgMzQuMjI5NSA1Ny4yODg3IDMzLjE3ODYgNTYuMjc1NkMzMi4yNTUzIDU1LjM4NTYgMzIuMTI3NyA1My45OTIxIDMyLjAwMiA1Mi43ODcyQzMxLjgzNDQgNTEuMTkyIDMxLjY2ODIgNDkuNTk3MSAzMS41MDM2IDQ4LjAwMjNMMzAuNTc5NiAzOS4xMzQ0TDI5Ljk4MTkgMzMuMzk2NkMyOS45NzE4IDMzLjMwMTcgMjkuOTYxOCAzMy4yMDggMjkuOTUyNCAzMy4xMTI1QzI5Ljg4MDcgMzIuNDI4IDI5LjM5NjEgMzEuNzU4IDI4LjYzMjQgMzEuNzkyNkMyNy45Nzg4IDMxLjgyMTUgMjcuMjM1OSAzMi4zNzcxIDI3LjMxMjUgMzMuMTEyNUwyNy43NTU3IDM3LjM2NjRMMjguNjcyIDQ2LjE2NTdDMjguOTMzMSA0OC42NjUyIDI5LjE5MzUgNTEuMTY1IDI5LjQ1MzMgNTMuNjY1M0MyOS41MDM2IDU0LjE0NDIgMjkuNTUwNyA1NC42MjQ0IDI5LjYwMzUgNTUuMTAzNEMyOS44OTA4IDU3LjcyMDUgMzEuODg5NSA1OS4xMzEgMzQuMzY0NiA1OS41MjgyQzM1LjgxMDIgNTkuNzYwNyAzNy4yOTEgNTkuODA4NSAzOC43NTggNTkuODMyNEM0MC42Mzg2IDU5Ljg2MjYgNDIuNTM4IDU5LjkzNDggNDQuMzg3NyA1OS41OTQyQzQ3LjEyODcgNTkuMDkxNCA0OS4xODUzIDU3LjI2MTEgNDkuNDc4OCA1NC40MjJDNDkuNTYyNiA1My42MDI0IDQ5LjY0NjQgNTIuNzgyNiA0OS43MzAyIDUxLjk2MjZDNTAuMDA4OCA0OS4yNTA3IDUwLjI4NzEgNDYuNTM4NiA1MC41NjQ5IDQzLjgyNjNMNTEuNDczNyAzNC45NjQxTDUxLjg5MDQgMzAuOTAyNkM1MS45MTEyIDMwLjcwMTIgNTEuOTk2MiAzMC41MTE4IDUyLjEzMyAzMC4zNjI1QzUyLjI2OTcgMzAuMjEzMiA1Mi40NTA5IDMwLjExMTkgNTIuNjQ5NyAzMC4wNzM2QzUzLjQzMzUgMjkuOTIwOCA1NC4xODI3IDI5LjY2IDU0Ljc0MDIgMjkuMDYzNUM1NS42Mjc3IDI4LjExMzggNTUuODA0MyAyNi44NzU2IDU1LjQ5MDYgMjUuNjI3NFpNMjYuMDA3MSAyNi41MDM1QzI2LjAxOSAyNi40OTc5IDI1Ljk5NyAyNi42MDAzIDI1Ljk4NzYgMjYuNjQ4MUMyNS45ODU3IDI2LjU3NTggMjUuOTg5NSAyNi41MTE3IDI2LjAwNzEgMjYuNTAzNVpNMjYuMDgzMSAyNy4wOTE4QzI2LjA4OTQgMjcuMDg3NCAyNi4xMDgzIDI3LjExMjYgMjYuMTI3OCAyNy4xNDI4QzI2LjA5ODIgMjcuMTE1MSAyNi4wNzk0IDI3LjA5NDQgMjYuMDgyNSAyNy4wOTE4SDI2LjA4MzFaTTI2LjE1NzkgMjcuMTkwNUMyNi4xODUgMjcuMjM2NCAyNi4xOTk0IDI3LjI2NTMgMjYuMTU3OSAyNy4xOTA1VjI3LjE5MDVaTTI2LjMwODIgMjcuMzEyNUgyNi4zMTE5QzI2LjMxMTkgMjcuMzE2OSAyNi4zMTg4IDI3LjMyMTMgMjYuMzIxNCAyNy4zMjU3QzI2LjMxNzIgMjcuMzIwOCAyNi4zMTI2IDI3LjMxNjQgMjYuMzA3NSAyNy4zMTI1SDI2LjMwODJaTTUyLjYxMzIgMjcuMTMwMkM1Mi4zMzE3IDI3LjM5NzkgNTEuOTA3NCAyNy41MjI0IDUxLjQ4ODIgMjcuNTg0NkM0Ni43ODY4IDI4LjI4MjMgNDIuMDE2OSAyOC42MzU1IDM3LjI2NCAyOC40Nzk2QzMzLjg2MjQgMjguMzYzMyAzMC40OTY3IDI3Ljk4NTYgMjcuMTI5IDI3LjUwOThDMjYuNzk5IDI3LjQ2MzMgMjYuNDQxNCAyNy40MDMgMjYuMjE0NSAyNy4xNTk3QzI1Ljc4NzEgMjYuNzAwOSAyNS45OTcgMjUuNzc3IDI2LjEwODMgMjUuMjIyNkMyNi4yMTAxIDI0LjcxNDggMjYuNDA1IDI0LjAzNzggMjcuMDA5IDIzLjk2NTZDMjcuOTUxOCAyMy44NTQ5IDI5LjA0NjYgMjQuMjUyOCAyOS45Nzk0IDI0LjM5NDJDMzEuMTAyMyAyNC41NjU2IDMyLjIyOTUgMjQuNzAyOCAzMy4zNjA5IDI0LjgwNTlDMzguMTg5MiAyNS4yNDU5IDQzLjA5ODYgMjUuMTc3NCA0Ny45MDU2IDI0LjUzMzdDNDguNzgxNyAyNC40MTYgNDkuNjU0OCAyNC4yNzkyIDUwLjUyNDYgMjQuMTIzM0M1MS4yOTk2IDIzLjk4NDQgNTIuMTU4OCAyMy43MjM2IDUyLjYyNzEgMjQuNTI2MkM1Mi45NDgyIDI1LjA3MyA1Mi45OTEgMjUuODA0NiA1Mi45NDEzIDI2LjQyMjVDNTIuOTI2IDI2LjY5MTcgNTIuODA4NCAyNi45NDQ4IDUyLjYxMjYgMjcuMTMwMkg1Mi42MTMyWlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTgxLjEzMDIgNDAuMTkyOUM4MC44NTU2IDQwLjcxNjkgODAuNDc4MSA0MS4xNzMyIDc5Ljk5NzggNDEuNTYwNEM3OS41MTc1IDQxLjk0NzkgNzguOTU3MSA0Mi4yNjMzIDc4LjMxNjYgNDIuNTA2MkM3Ny42NzYxIDQyLjc0OTcgNzcuMDMxNSA0Mi45MTMxIDc2LjM4MzUgNDIuOTk2NEM3NS43MzUyIDQzLjA3OTkgNzUuMTA2IDQzLjA3MjcgNzQuNDk2MyA0Mi45NzM1QzczLjg4NjMgNDIuODc0OSA3My4zNjc0IDQyLjY3MzcgNzIuOTQwOCA0Mi4zNjk1TDczLjQyMTQgMzcuMzc3OUM3My44NjMzIDM3LjIyNjEgNzQuNDE5NyAzNy4wNzAzIDc1LjA5MDkgMzYuOTEwN0M3NS43NjE5IDM2Ljc1MTMgNzYuNDUyIDM2LjYzNzEgNzcuMTYxMyAzNi41Njg5Qzc3Ljg3MDUgMzYuNTAwMyA3OC41NDEyIDM2LjUwODQgNzkuMTc0NCAzNi41OTE3Qzc5LjgwNjggMzYuNjc1MyA4MC4zMDY1IDM2Ljg3NjUgODAuNjcyNSAzNy4xOTU4QzgwLjg3MDcgMzcuMzc4IDgxLjAzODcgMzcuNTc1NCA4MS4xNzYgMzcuNzg4M0M4MS4zMTMgMzguMDAxMSA4MS4zOTY5IDM4LjIyMTQgODEuNDI3NiAzOC40NDkzQzgxLjUwMzcgMzkuMDg3NSA4MS40MDQ3IDM5LjY2ODcgODEuMTMwMiA0MC4xOTI5Wk03NC4xNTMgMjkuNTYwMkM3NC40NzM0IDI5LjM2MjcgNzQuODU4NSAyOS4xODc3IDc1LjMwODMgMjkuMDM1NkM3NS43NTgxIDI4Ljg4NDEgNzYuMjE5NSAyOC43Nzc0IDc2LjY5MjMgMjguNzE2N0M3Ny4xNjQ4IDI4LjY1NjIgNzcuNjI2MiAyOC42NDgxIDc4LjA3NjMgMjguNjkzOEM3OC41MjU4IDI4LjczOTUgNzguOTIyOCAyOC44NjQ3IDc5LjI2NTkgMjkuMDY5N0M3OS42MDg5IDI5LjI3NTEgNzkuODY0MyAyOS41NzE0IDgwLjAzMiAyOS45NTg2QzgwLjE5OTcgMzAuMzQ2NCA4MC4yNDU2IDMwLjgzNjUgODAuMTY5MyAzMS40MjlDODAuMTA4MyAzMS45MDAxIDc5LjkyMTEgMzIuMjk5MSA3OS42MDg5IDMyLjYyNTZDNzkuMjk2MyAzMi45NTI2IDc4LjkxNDcgMzMuMjI1OSA3OC40NjUyIDMzLjQ0NjJDNzguMDE1NCAzMy42NjY4IDc3LjUzODggMzMuODQxNSA3Ny4wMzU2IDMzLjk3MDJDNzYuNTMyMSAzNC4wOTk3IDc2LjA0NzcgMzQuMTk0OSA3NS41ODI4IDM0LjI1NTNDNzUuMTE3NiAzNC4zMTYzIDc0LjcxMzcgMzQuMzU0NSA3NC4zNzA2IDM0LjM2OTJDNzQuMDI3MyAzNC4zODQ1IDczLjgwMjEgMzQuMzkyMSA3My42OTU2IDM0LjM5MjFMNzQuMTUzIDI5LjU2MDJaTTgzLjYwMDcgMzYuOTY3NkM4My4zNTY2IDM2LjQzNjEgODMuMDI4NyAzNS45Njg5IDgyLjYxNzIgMzUuNTY1OEM4Mi4yMDU0IDM1LjE2MzMgODEuNzE3IDM0Ljg3MDkgODEuMTUzMSAzNC42ODg1QzgxLjM5NjkgMzQuNDkxIDgxLjYzNzEgMzQuMTc5NSA4MS44NzM3IDMzLjc1MzlDODIuMTA5OSAzMy4zMjg4IDgyLjMxMTkgMzIuODY1IDgyLjQ3OTYgMzIuMzYzNkM4Mi42NDc0IDMxLjg2MTkgODIuNzYyIDMxLjM1NyA4Mi44MjI5IDMwLjg0NzhDODIuODgzNiAzMC4zMzg5IDgyLjg2MDcgMjkuOTAyIDgyLjc1NDQgMjkuNTM3QzgyLjQ5NDcgMjguNjI1NiA4Mi4wODcgMjcuOTExNCA4MS41MzAzIDI3LjM5NDZDODAuOTczNCAyNi44NzgyIDgwLjMyNTcgMjYuNTIxMSA3OS41ODYgMjYuMzIzM0M3OC44NDYyIDI2LjEyNjQgNzguMDMwNCAyNi4wODQyIDc3LjEzODMgMjYuMTk4MUM3Ni4yNDYyIDI2LjMxMiA3NS4zMzQ3IDI2LjUzNjEgNzQuNDA0OSAyNi44NzA0Qzc0LjQwNDkgMjYuNzk0NiA3NC40MTI0IDI2LjcxNDggNzQuNDI3OCAyNi42MzEyQzc0LjQ0MjYgMjYuNTQ4IDc0LjQ1MDQgMjYuNDYwNCA3NC40NTA0IDI2LjM2OUM3NC40NTA0IDI2LjE0MTEgNzQuMzM2MSAyNS45NDM5IDc0LjEwNzQgMjUuNzc2NUM3My44Nzg3IDI1LjYwOTMgNzMuNjE1NSAyNS41MTA3IDczLjMxODMgMjUuNDgwMUM3My4wMjA5IDI1LjQ1IDcyLjczMSAyNS41MTQyIDcyLjQ0ODkgMjUuNjczOEM3Mi4xNjY1IDI1LjgzMzQgNzEuOTcyMSAyNi4xMjY0IDcxLjg2NTYgMjYuNTUxMUM3MS43NDM0IDI3LjkxODkgNzEuNjIxNSAyOS4zMzk4IDcxLjQ5OTYgMzAuODEzNEM3MS4zNzc0IDMyLjI4NzUgNzEuMjQ4IDMzLjc3NjcgNzEuMTEwNyAzNS4yODEyQzcwLjk3MzUgMzYuNzg1NSA3MC44MzYyIDM4LjI3ODQgNzAuNjk4OSAzOS43NTk4QzcwLjU2MTYgNDEuMjQxNCA3MC40MjQ0IDQyLjY2NTkgNzAuMjg3MSA0NC4wMzMzQzcwLjMzMyA0NC40NDM2IDcwLjQ0NzMgNDQuNzYyOSA3MC42MzA0IDQ0Ljk5MDdDNzAuODEzMyA0NS4yMTg5IDcxLjAyNjggNDUuMzU1NiA3MS4yNzA5IDQ1LjQwMUM3MS41MTQ3IDQ1LjQ0NjcgNzEuNzcwNCA0NS40MDQ1IDcyLjAzNzEgNDUuMjc1NUM3Mi4zMDM4IDQ1LjE0NjkgNzIuNTM2NSA0NC45MjIyIDcyLjczNSA0NC42MDMyQzczLjM0NDcgNDQuOTM3NSA3NC4wMzExIDQ1LjE1NDEgNzQuNzkzOCA0NS4yNTNDNzUuNTU2MSA0NS4zNTE2IDc2LjMyOTggNDUuMzUxNiA3Ny4xMTU3IDQ1LjI1M0M3Ny45MDA3IDQ1LjE1NDEgNzguNjc0NyA0NC45NjgyIDc5LjQzNzQgNDQuNjk0M0M4MC4xOTk3IDQ0LjQyMTEgODAuODkzNiA0NC4wNzkgODEuNTE5IDQzLjY2OUM4Mi4xNDQxIDQzLjI1ODYgODIuNjcwMyA0Mi43OTExIDgzLjA5NzUgNDIuMjY3MUM4My41MjQ0IDQxLjc0MjYgODMuODA2NSA0MS4xNzY3IDgzLjk0MzcgNDAuNTY5MUM4NC4wODEgMzkuOTQ2IDg0LjExOSAzOS4zMjMxIDg0LjA1ODEgMzguN0M4My45OTcxIDM4LjA3NzEgODMuODQ0NSAzNy41IDgzLjYwMDcgMzYuOTY3NlpcIiBmaWxsPVwiIzBEMEMyM1wiLz5cbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xMDUuOTE1IDQ5LjAwMTdDMTA1LjgzMiA0OS41MDMxIDEwNS43MTMgNTAuMDMxMSAxMDUuNTYxIDUwLjU4NkMxMDUuNDA4IDUxLjE0MDMgMTA1LjIyOSA1MS42NDU4IDEwNS4wMjMgNTIuMTAxOEMxMDQuODE4IDUyLjU1NzUgMTA0LjU4OSA1Mi45MjU2IDEwNC4zMzcgNTMuMjA3QzEwNC4wODUgNTMuNDg4IDEwMy44MTUgNTMuNjA2IDEwMy41MjUgNTMuNTYwNkMxMDMuMjk2IDUzLjUyOTcgMTAzLjE1MSA1My4zODU0IDEwMy4wOTEgNTMuMTI3NEMxMDMuMDI5IDUyLjg2ODYgMTAzLjAyOSA1Mi41NDk3IDEwMy4wOTEgNTIuMTdDMTAzLjE1MSA1MS43OTAxIDEwMy4yNjkgNTEuMzYwNyAxMDMuNDQ1IDUwLjg4MjFDMTAzLjYyIDUwLjQwMzUgMTAzLjgzNCA0OS45Mjg0IDEwNC4wODUgNDkuNDU3N0MxMDQuMzM3IDQ4Ljk4NjQgMTA0LjYyMyA0OC41MzQ3IDEwNC45NDMgNDguMTAxNUMxMDUuMjY0IDQ3LjY2ODYgMTA1LjU5OSA0Ny4zMDc1IDEwNS45NSA0Ny4wMTg5QzEwNi4wMjYgNDcuMTEgMTA2LjA2IDQ3LjMzNzggMTA2LjA1MyA0Ny43MDI4QzEwNi4wNDUgNDguMDY3NCAxMDUuOTk5IDQ4LjUwMDYgMTA1LjkxNSA0OS4wMDE3Wk0xMTMuNjcgMzkuMTA5N0MxMTMuNDY0IDM4Ljg4MTkgMTEzLjIxMyAzOC43NTI5IDExMi45MTUgMzguNzIyM0MxMTIuNjE4IDM4LjY5MTkgMTEyLjMxNyAzOC44NTkgMTEyLjAxMiAzOS4yMjM3QzExMS44MTMgMzkuNTg4MyAxMTEuNTYyIDM5LjkzNzkgMTExLjI1NyA0MC4yNzIyQzExMC45NTIgNDAuNjA2NyAxMTAuNjM1IDQwLjkxMDMgMTEwLjMwNyA0MS4xODM5QzEwOS45OCA0MS40NTcyIDEwOS42NjcgNDEuNjkzMSAxMDkuMzcgNDEuODkwM0MxMDkuMDcyIDQyLjA4ODEgMTA4Ljg0IDQyLjIzMjQgMTA4LjY3MiA0Mi4zMjM1QzEwOC42MTEgNDEuODM3NCAxMDguNTc2IDQxLjMxMzIgMTA4LjU2OSA0MC43NTA3QzEwOC41NjEgNDAuMTg4NiAxMDguNTczIDM5LjYxOSAxMDguNjAzIDM5LjA0MTVDMTA4LjY0OSAzOC4yMjA5IDEwOC43NDQgMzcuMzkzIDEwOC44ODkgMzYuNTU3QzEwOS4wMzQgMzUuNzIxMyAxMDkuMjQ0IDM0LjkwMDcgMTA5LjUxOCAzNC4wOTUxQzEwOS41MTggMzMuNjcgMTA5LjQxOSAzMy4zMjQyIDEwOS4yMjEgMzMuMDU4MkMxMDkuMDIyIDMyLjc5MjQgMTA4Ljc4MiAzMi42MjUgMTA4LjUgMzIuNTU2N0MxMDguMjE4IDMyLjQ4ODUgMTA3LjkyOSAzMi41MjY0IDEwNy42MzEgMzIuNjcwN0MxMDcuMzM0IDMyLjgxNTMgMTA3LjA3OCAzMy4wNzc1IDEwNi44NjUgMzMuNDU2OUMxMDYuNjgyIDMzLjk1ODYgMTA2LjQ3MiAzNC41MjA3IDEwNi4yMzYgMzUuMTQzNkMxMDUuOTk5IDM1Ljc2NjcgMTA1LjczMiAzNi40MDEyIDEwNS40MzUgMzcuMDQ2OUMxMDUuMTM4IDM3LjY5MzEgMTA0LjgwNiAzOC4zMTk3IDEwNC40NCAzOC45MjczQzEwNC4wNzQgMzkuNTM1NCAxMDMuNjc0IDQwLjA3NSAxMDMuMjM5IDQwLjU0NTdDMTAyLjgwNCA0MS4wMTY4IDEwMi4zMzEgNDEuMzg1NCAxMDEuODIxIDQxLjY1MTJDMTAxLjMxIDQxLjkxNzIgMTAwLjc1NyA0Mi4wMzQ5IDEwMC4xNjIgNDIuMDA0NUM5OS44ODc2IDQxLjkyODUgOTkuNjg5MyA0MS43MjM1IDk5LjU2NzUgNDEuMzg4OUM5OS40NDUzIDQxLjA1NDkgOTkuMzczIDQwLjYzNjggOTkuMzUwNCA0MC4xMzU0Qzk5LjMyNzUgMzkuNjM0IDk5LjM1MDQgMzkuMDgzMSA5OS40MTg5IDM4LjQ4MjhDOTkuNDg3NyAzNy44ODI4IDk5LjU3OTEgMzcuMjg2MyA5OS42OTM0IDM2LjY5MzhDOTkuODA3OCAzNi4xMDEgOTkuOTMzNyAzNS41Mzg5IDEwMC4wNzEgMzUuMDA3MUMxMDAuMjA4IDM0LjQ3NTMgMTAwLjMzNyAzNC4wMjY4IDEwMC40NiAzMy42NjIyQzEwMC42NDMgMzMuMjIxOCAxMDAuNjQzIDMyLjg1MjkgMTAwLjQ2IDMyLjU1NjdDMTAwLjI3NyAzMi4yNjA0IDEwMC4wMjUgMzIuMDYzMSA5OS43MDUgMzEuOTY0Qzk5LjM4NDYgMzEuODY1NCA5OS4wNDg5IDMxLjg2OTQgOTguNjk4MyAzMS45NzU1Qzk4LjM0NzQgMzIuMDgxOSA5OC4wOTU4IDMyLjMxNzMgOTcuOTQzNSAzMi42ODJDOTcuNjg0IDMzLjMwNTQgOTcuNDQ3NSAzNC4wMDQgOTcuMjM0MiAzNC43NzlDOTcuMDIwNiAzNS41NTM5IDk2Ljg0OTEgMzYuMzU1OCA5Ni43MTk3IDM3LjE4MzZDOTYuNTg5NiAzOC4wMTIxIDk2LjUxNzEgMzguODMyNyA5Ni41MDIgMzkuNjQ1NkM5Ni41MDExIDM5LjY5ODUgOTYuNTAzNyAzOS43NDg4IDk2LjUwMzQgMzkuODAxNEM5Ni4xNzA5IDQwLjY4NDggOTUuODU0IDQxLjM1MjUgOTUuNTUzIDQxLjc5OTJDOTUuMTY0MSA0Mi4zNzcgOTQuNzI1MyA0Mi42Mjc3IDk0LjIzNzUgNDIuNTUxM0M5NC4wMjM2IDQyLjQ2MDMgOTMuODgzMiA0Mi4yNDc3IDkzLjgxNDcgNDEuOTEzMkM5My43NDUzIDQxLjU3OTIgOTMuNzIyNyA0MS4xNjg5IDkzLjc0NTMgNDAuNjgyMkM5My43Njg4IDQwLjE5NjQgOTMuODI2IDM5LjY0NTYgOTMuOTE3MSAzOS4wMjk5Qzk0LjAwOTEgMzguNDE0NiA5NC4xMjI5IDM3Ljc3NjQgOTQuMjYwMSAzNy4xMTU0Qzk0LjM5NzcgMzYuNDU0MSA5NC41NDI1IDM1Ljc4OTkgOTQuNjk0OSAzNS4xMjFDOTQuODQ3MiAzNC40NTI1IDk0Ljk4NDUgMzMuODIxOCA5NS4xMDcgMzMuMjI5MUM5NS4wOTE2IDMyLjY5NzMgOTQuOTM1MiAzMi4yOTEgOTQuNjM3NyAzMi4wMDk3Qzk0LjM0MDUgMzEuNzI4OSA5My45MjQ3IDMxLjYxODcgOTMuMzkxMyAzMS42NzkxQzkzLjAyNTMgMzEuODMxMiA5Mi43NTQyIDMyLjAyOSA5Mi41NzkgMzIuMjcxOUM5Mi40MDM0IDMyLjUxNDggOTIuMjYyMyAzMi44MjY1IDkyLjE1NTggMzMuMjA2MkM5Mi4wOTQ2IDMzLjQwNCA5Mi4wMDMyIDMzLjc5OSA5MS44ODEzIDM0LjM5MThDOTEuNzU5MSAzNC45ODQgOTEuNjAzIDM1LjY2NDQgOTEuNDEyMyAzNi40MzE1QzkxLjIyMTcgMzcuMTk5MiA5MC45OTY3IDM4LjAwMDUgOTAuNzM3NiAzOC44MzYyQzkwLjQ3ODEgMzkuNjcxOSA5MC4xODg1IDQwLjQyODMgODkuODY4NCA0MS4xMDQxQzg5LjU0OCA0MS43ODAxIDg5LjE5NzIgNDIuMzIzNSA4OC44MTYxIDQyLjczMzhDODguNDM0OCA0My4xNDM4IDg4LjAyMyA0My4zMTEzIDg3LjU4MDcgNDMuMjM1MkM4Ny4zMzY2IDQzLjE4OTUgODcuMTgwNSA0Mi45Mzg4IDg3LjExMiA0Mi40ODMxQzg3LjA0MzIgNDIuMDI3MSA4Ny4wMzE5IDQxLjQ2NTMgODcuMDc3NSA0MC43OTY0Qzg3LjEyMzMgNDAuMTI3OSA4Ny4yMTQ4IDM5LjM5NDYgODcuMzUyIDM4LjU5NzFDODcuNDg5MyAzNy43OTkzIDg3LjYzIDM3LjA0MzQgODcuNzc1MiAzNi4zMjg5Qzg3LjkyIDM1LjYxNDkgODguMDUzNSAzNC45ODQgODguMTc1NiAzNC40MzcyQzg4LjI5NzUgMzMuODkwMSA4OC4zODE0IDMzLjUyNTQgODguNDI3MiAzMy4zNDMzQzg4LjQyNzIgMzIuOTAyNiA4OC4zMjc3IDMyLjU0OTUgODguMTI5OCAzMi4yODMyQzg3LjkzMTMgMzIuMDE3OCA4Ny42OTEzIDMxLjg1MDMgODcuNDA5MiAzMS43ODE4Qzg3LjEyNjggMzEuNzEzNiA4Ni44MzcyIDMxLjc1MTQgODYuNTQgMzEuODk1N0M4Ni4yNDI2IDMyLjA0MDMgODUuOTg3MiAzMi4zMDI2IDg1Ljc3MzYgMzIuNjgyQzg1LjY5NzMgMzMuMDkyMyA4NS41OTggMzMuNTY3NCA4NS40NzYxIDM0LjEwNjdDODUuMzUzOSAzNC42NDU5IDg1LjIzNjEgMzUuMjAwNiA4NS4xMjE4IDM1Ljc3MDVDODUuMDA3NCAzNi4zNDA0IDg0LjkwMDMgMzYuODk4OCA4NC44MDE0IDM3LjQ0NTlDODQuNzAyMSAzNy45OTMgODQuNjI5OSAzOC40NzE2IDg0LjU4NCAzOC44ODE5Qzg0LjU1MzYgMzkuMjAwOCA4NC41MTkgMzkuNTkyMyA4NC40ODEzIDQwLjA1NTZDODQuNDQzIDQwLjUxOTQgODQuNDIzOCA0MS4wMDkyIDg0LjQyMzggNDEuNTI1N0M4NC40MjM4IDQyLjA0MjcgODQuNDYxOCA0Mi41NTU0IDg0LjUzODUgNDMuMDY0M0M4NC42MTQ1IDQzLjU3MzUgODQuNzUxOCA0NC4wNDA4IDg0Ljk1IDQ0LjQ2NTlDODUuMTQ4MiA0NC44OTE1IDg1LjQyNjUgNDUuMjQwOCA4NS43ODUyIDQ1LjUxNDRDODYuMTQzMyA0NS43ODc5IDg2LjU5NzIgNDUuOTM5NyA4Ny4xNDYzIDQ1Ljk3MDRDODcuNzEwMSA0Ni4wMDA1IDg4LjIwMiA0NS45NTkxIDg4LjYyMTcgNDUuODQ0OUM4OS4wNDEgNDUuNzMxIDg5LjQyMjEgNDUuNTUyMyA4OS43NjU0IDQ1LjMwOTFDOTAuMTA4NCA0NS4wNjY1IDkwLjQyMSA0NC43Nzc2IDkwLjcwMzMgNDQuNDQzQzkwLjk4NTEgNDQuMTA5MSA5MS4yNjM3IDQzLjc0NDQgOTEuNTM4MyA0My4zNDkxQzkxLjc5NzQgNDMuOTI2OSA5Mi4xMzI5IDQ0LjM3NDggOTIuNTQ0NyA0NC42OTRDOTIuOTU2NSA0NS4wMTMgOTMuMzkxMyA0NS4yMDMyIDkzLjg0ODYgNDUuMjYzN0M5NC4zMDYgNDUuMzI0MSA5NC43NzE1IDQ1LjI2MDIgOTUuMjQ0MiA0NS4wNjk5Qzk1LjcxNjcgNDQuODgwMyA5Ni4xNDM2IDQ0LjU1NzMgOTYuNTI1MiA0NC4xMDEyQzk2Ljc3NjIgNDMuODIxNiA5Ny4wMTMxIDQzLjUwMzggOTcuMjM1NCA0My4xNTI1Qzk3LjMyOTcgNDMuMzE3IDk3LjQzMDEgNDMuNDc1OCA5Ny41NDMgNDMuNjIyNEM5Ny45MTY4IDQ0LjEwOTEgOTguNDI0IDQ0LjQ0MyA5OS4wNjQ1IDQ0LjYyNTVDOTkuNzUwNiA0NC44MDggMTAwLjQyMSA0NC44Mzg2IDEwMS4wNzcgNDQuNzE2OUMxMDEuNzMzIDQ0LjU5NTQgMTAyLjM1OCA0NC4zNzQ4IDEwMi45NTMgNDQuMDU1OUMxMDMuNTQ4IDQzLjczNjYgMTA0LjEwMSA0My4zNTMyIDEwNC42MTIgNDIuOTA0N0MxMDUuMTIyIDQyLjQ1NjUgMTA1LjU2OCA0MS45ODk1IDEwNS45NSA0MS41MDI4QzEwNS45MzQgNDEuODUyNCAxMDUuOTI3IDQyLjE4MzIgMTA1LjkyNyA0Mi40OTQ0QzEwNS45MjcgNDIuODA2MSAxMDUuOTE5IDQzLjE0MzggMTA1LjkwNCA0My41MDg4QzEwNS4xNDEgNDQuMDQwOCAxMDQuNDIxIDQ0LjY3OSAxMDMuNzQyIDQ1LjQyMzNDMTAzLjA2NCA0Ni4xNjc2IDEwMi40NjkgNDYuOTYxNiAxMDEuOTU4IDQ3LjgwNTFDMTAxLjQ0NyA0OC42NDgzIDEwMS4wNDcgNDkuNTAzMSAxMDAuNzU3IDUwLjM2OTFDMTAwLjQ2NyA1MS4yMzU3IDEwMC4zMjYgNTIuMDQ0NSAxMDAuMzM0IDUyLjc5NjlDMTAwLjM0MSA1My41NDkgMTAwLjUyMSA1NC4yMDYgMTAwLjg3MSA1NC43NjgxQzEwMS4yMjIgNTUuMzMwNiAxMDEuNzk0IDU1LjczMzEgMTAyLjU4NyA1NS45NzYzQzEwMy40MTEgNTYuMjM0OCAxMDQuMTM1IDU2LjI0MiAxMDQuNzYgNTUuOTk5MUMxMDUuMzg2IDU1Ljc1NTkgMTA1LjkzMSA1NS4zNTMxIDEwNi4zOTYgNTQuNzkxQzEwNi44NjEgNTQuMjI4OSAxMDcuMjQyIDUzLjU0OSAxMDcuNTQgNTIuNzUxMkMxMDcuODM3IDUxLjk1MzQgMTA4LjA3MyA1MS4xMjE1IDEwOC4yNDkgNTAuMjU1NUMxMDguNDI0IDQ5LjM4OTQgMTA4LjUzNSA0OC41Mzc5IDEwOC41OCA0Ny43MDI4QzEwOC42MjYgNDYuODY2OCAxMDguNjI2IDQ2LjEyMTkgMTA4LjU4IDQ1LjQ2ODdDMTA5Ljg5MiA0NC45MjE5IDExMC45NjcgNDQuMjMwNSAxMTEuODA2IDQzLjM5NDVDMTEyLjY0NSA0Mi41NTk0IDExMy4zMzggNDEuNjc3OCAxMTMuODg3IDQwLjc1MDdDMTE0LjA1NSA0MC41MjI5IDExNC4xMTIgNDAuMjQ5MyAxMTQuMDU5IDM5LjkzMDRDMTE0LjAwNiAzOS42MTExIDExMy44NzYgMzkuMzM3NiAxMTMuNjcgMzkuMTA5N1pcIiBmaWxsPVwiIzBEMEMyM1wiLz5cbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNDIuNTMgMzcuNjUxNUMxNDIuNTc1IDM3LjMwMjIgMTQyLjY0NCAzNi45MzM1IDE0Mi43MzUgMzYuNTQ2QzE0Mi44MjcgMzYuMTU4NSAxNDIuOTQxIDM1Ljc4MjMgMTQzLjA3OSAzNS40MTc3QzE0My4yMTYgMzUuMDUzMSAxNDMuMzc2IDM0LjczNzkgMTQzLjU1OSAzNC40NzE4QzE0My43NDIgMzQuMjA2MSAxNDMuOTM3IDM0LjAxNjEgMTQ0LjE0MiAzMy45MDE5QzE0NC4zNDggMzMuNzg4MyAxNDQuNTU4IDMzLjc5OTUgMTQ0Ljc3MSAzMy45MzZDMTQ1IDM0LjA3MzEgMTQ1LjE0MSAzNC4zNjE3IDE0NS4xOTUgMzQuODAyMUMxNDUuMjQ4IDM1LjI0MzMgMTQ1LjE5NSAzNS43MTQxIDE0NS4wMzQgMzYuMjE1NUMxNDQuODc0IDM2LjcxNzIgMTQ0LjU4OCAzNy4xODc5IDE0NC4xNzcgMzcuNjI4NkMxNDMuNzY1IDM4LjA2OTYgMTQzLjIwOCAzOC4zNTc5IDE0Mi41MDcgMzguNDk0N0MxNDIuNDc2IDM4LjI4MjQgMTQyLjQ4NCAzOC4wMDExIDE0Mi41MyAzNy42NTE1Wk0xNTAuNDU2IDM4LjU4NTdDMTUwLjIwNCAzOC41MTAzIDE0OS45NjQgMzguNTAyNSAxNDkuNzM1IDM4LjU2MzJDMTQ5LjUwNiAzOC42MjM5IDE0OS4zNjEgMzguNzgzNSAxNDkuMzAxIDM5LjA0MkMxNDkuMTc4IDM5LjUyODEgMTQ4Ljk4NCA0MC4wMjU4IDE0OC43MTcgNDAuNTM0N0MxNDguNDUgNDEuMDQzOSAxNDguMTIyIDQxLjUyNjIgMTQ3LjczNCA0MS45ODIyQzE0Ny4zNDUgNDIuNDM4IDE0Ni45MDYgNDIuODQwOCAxNDYuNDE4IDQzLjE5MDFDMTQ1LjkzIDQzLjUzOTcgMTQ1LjQxOSA0My43OTA0IDE0NC44ODYgNDMuOTQyMkMxNDQuMzUxIDQ0LjEwOTYgMTQzLjkxIDQ0LjEyODQgMTQzLjU1OSA0My45OTkxQzE0My4yMDggNDMuODcwNSAxNDIuOTMgNDMuNjQ5OCAxNDIuNzI0IDQzLjMzODRDMTQyLjUxOCA0My4wMjcgMTQyLjM2OSA0Mi42NTA4IDE0Mi4yNzggNDIuMjEwMUMxNDIuMTg2IDQxLjc2OTQgMTQyLjEzMyA0MS4zMTM3IDE0Mi4xMTggNDAuODQyNEMxNDIuOTg3IDQwLjkwMzQgMTQzLjc2MSA0MC43NDc4IDE0NC40NCA0MC4zNzUxQzE0NS4xMTggNDAuMDAzMiAxNDUuNjk0IDM5LjUwOSAxNDYuMTY3IDM4Ljg5MzdDMTQ2LjYzOSAzOC4yNzg0IDE0Ni45OTggMzcuNTg3IDE0Ny4yNDIgMzYuODE5NUMxNDcuNDg1IDM2LjA1MjQgMTQ3LjYyMyAzNS4yODg3IDE0Ny42NTMgMzQuNTI4OEMxNDcuNjY5IDMzLjgxNDYgMTQ3LjU2MiAzMy4yMTA4IDE0Ny4zMzMgMzIuNzE2OUMxNDcuMTA1IDMyLjIyMzMgMTQ2Ljc5NiAzMS44MzkgMTQ2LjQwNyAzMS41NjU4QzE0Ni4wMTggMzEuMjkyMiAxNDUuNTcyIDMxLjEzMjYgMTQ1LjA2OSAzMS4wODcyQzE0NC41NjYgMzEuMDQxNSAxNDQuMDU0IDMxLjExIDE0My41MzYgMzEuMjkyMkMxNDIuOTEgMzEuNTA1IDE0Mi4zODEgMzEuODUwNiAxNDEuOTQ2IDMyLjMyOTRDMTQxLjUxMiAzMi44MDggMTQxLjE0OSAzMy4zNjI5IDE0MC44NiAzMy45OTMzQzE0MC41NyAzNC42MjM5IDE0MC4zNDEgMzUuMzAzOCAxNDAuMTczIDM2LjAzM0MxNDAuMDA1IDM2Ljc2MjYgMTM5Ljg4MyAzNy40ODA2IDEzOS44MDcgMzguMTg3M0MxMzkuNzM5IDM4LjgyMTQgMTM5LjcwMiAzOS40Mjc4IDEzOS42ODkgNDAuMDEzQzEzOS42NTcgNDAuMDg3NCAxMzkuNjI1IDQwLjE1ODggMTM5LjU5IDQwLjIzODNDMTM5LjM1NCA0MC43NzgyIDEzOS4wNzkgNDEuMzA2MiAxMzguNzY2IDQxLjgyMjZDMTM4LjQ1NCA0Mi4zMzk0IDEzOC4xMDcgNDIuNzcyNSAxMzcuNzI2IDQzLjEyMThDMTM3LjM0NCA0My40NzE0IDEzNi45NDggNDMuNTkyOSAxMzYuNTM2IDQzLjQ4NjVDMTM2LjI5MiA0My40MjYgMTM2LjE1OSA0My4xNDQ0IDEzNi4xMzYgNDIuNjQzM0MxMzYuMTEzIDQyLjE0MTYgMTM2LjEzOSA0MS41MTg3IDEzNi4yMTYgNDAuNzc0MUMxMzYuMjkyIDQwLjAyOTggMTM2LjM4IDM5LjIyMzkgMTM2LjQ3OSAzOC4zNTc5QzEzNi41NzggMzcuNDkxOCAxMzYuNjI4IDM2LjY2NCAxMzYuNjI4IDM1Ljg3MzdDMTM2LjYyOCAzNS4xODk4IDEzNi40OTggMzQuNTMyOSAxMzYuMjM5IDMzLjkwMTlDMTM1Ljk3OSAzMy4yNzE4IDEzNS42MjUgMzIuNzQ3MyAxMzUuMTc1IDMyLjMyOTRDMTM0LjcyNSAzMS45MTEzIDEzNC4yMDMgMzEuNjM0IDEzMy42MDggMzEuNDk3NUMxMzMuMDEzIDMxLjM2MDUgMTMyLjM3MyAzMS40NTE4IDEzMS42ODcgMzEuNzcwOEMxMzEgMzIuMDkgMTMwLjQ1NSAzMi41MzgyIDEzMC4wNTEgMzMuMTE1N0MxMjkuNjQ3IDMzLjY5MzQgMTI5LjI3NyAzNC4zMDA5IDEyOC45NDIgMzQuOTM5MUMxMjguODE5IDM0LjQ1MjggMTI4LjY0MSAzNC4wMDExIDEyOC40MDQgMzMuNTgzQzEyOC4xNjcgMzMuMTY1MSAxMjcuODc4IDMyLjgwMDUgMTI3LjUzNSAzMi40ODg4QzEyNy4xOTEgMzIuMTc3NiAxMjYuODA2IDMxLjkzNDQgMTI2LjM4IDMxLjc1OTVDMTI1Ljk1MyAzMS41ODUxIDEyNS41MDIgMzEuNDk3NSAxMjUuMDMgMzEuNDk3NUMxMjQuNTcyIDMxLjQ5NzUgMTI0LjE0OSAzMS41ODUxIDEyMy43NiAzMS43NTk1QzEyMy4zNzEgMzEuOTM0NCAxMjMuMDE3IDMyLjE1ODMgMTIyLjY5NiAzMi40MzE4QzEyMi4zNzYgMzIuNzA1NiAxMjIuMDg3IDMzLjAxMyAxMjEuODI3IDMzLjM1NTFDMTIxLjU2OCAzMy42OTY5IDEyMS4zMzkgMzQuMDM1MiAxMjEuMTQxIDM0LjM2OTJDMTIxLjExIDMzLjk3NDIgMTIxLjA3NiAzMy42Mjg2IDEyMS4wMzggMzMuMzMyQzEyMSAzMy4wMzU5IDEyMC45MzEgMzIuNzg1MiAxMjAuODMyIDMyLjU4MDFDMTIwLjczMyAzMi4zNzQ4IDEyMC41OTIgMzIuMjE5MyAxMjAuNDA5IDMyLjExMjlDMTIwLjIyNiAzMi4wMDY3IDExOS45NjcgMzEuOTUzMiAxMTkuNjMyIDMxLjk1MzJDMTE5LjQ2NCAzMS45NTMyIDExOS4yOTYgMzEuOTg3NCAxMTkuMTI4IDMyLjA1NTZDMTE4Ljk2IDMyLjEyNDEgMTE4LjgxMSAzMi4yMTkzIDExOC42ODIgMzIuMzQwN0MxMTguNTUyIDMyLjQ2MjcgMTE4LjQ1MyAzMi42MTA1IDExOC4zODUgMzIuNzg1MkMxMTguMzE2IDMyLjk1OTggMTE4LjI5NyAzMy4xNjE0IDExOC4zMjcgMzMuMzg5MkMxMTguMzQyIDMzLjU1NjYgMTE4LjM4NSAzMy43NTc2IDExOC40NTMgMzMuOTkzM0MxMTguNTIyIDM0LjIyODkgMTE4LjU4NyAzNC41MzY5IDExOC42NDggMzQuOTE2M0MxMTguNzA4IDM1LjI5NjIgMTE4Ljc1OCAzNS43NTYgMTE4Ljc5NiAzNi4yOTUzQzExOC44MzQgMzYuODM0OSAxMTguODQ2IDM3LjQ5NTkgMTE4LjgzMSAzOC4yNzg0QzExOC44MTUgMzkuMDYxMSAxMTguNzU4IDM5Ljk3NjMgMTE4LjY1OSA0MS4wMjQ4QzExOC41NiA0Mi4wNzMzIDExOC40MDMgNDMuMjg5IDExOC4xOSA0NC42NzE0QzExOC4xNiA0NC45OTA3IDExOC4yODIgNDUuMjQ5MiAxMTguNTU2IDQ1LjQ0NjdDMTE4LjgzMSA0NS42NDM5IDExOS4xNDMgNDUuNzU3OCAxMTkuNDk0IDQ1Ljc4ODVDMTE5Ljg0NSA0NS44MTg4IDEyMC4xNzcgNDUuNzU3OCAxMjAuNDg5IDQ1LjYwNjNDMTIwLjgwMiA0NS40NTM5IDEyMC45ODEgNDUuMTg4MiAxMjEuMDI3IDQ0LjgwODVDMTIxLjA3MiA0NC4wOTQzIDEyMS4xNiA0My4zMzQ3IDEyMS4yOSA0Mi41MjlDMTIxLjQxOSA0MS43MjQgMTIxLjU3OSA0MC45MjYyIDEyMS43NyA0MC4xMzU5QzEyMS45NjEgMzkuMzQ2IDEyMi4xNzggMzguNTkzOCAxMjIuNDIyIDM3Ljg3OTNDMTIyLjY2NiAzNy4xNjUxIDEyMi45MzcgMzYuNTM0NyAxMjMuMjM0IDM1Ljk4NzZDMTIzLjUzMiAzNS40NDA1IDEyMy44NCAzNS4wMDM5IDEyNC4xNjEgMzQuNjc3MUMxMjQuNDgxIDM0LjM1MDQgMTI0LjgxNiAzNC4xODcgMTI1LjE2NyAzNC4xODdDMTI1LjU5NCAzNC4xODcgMTI1LjkyNiAzNC4zODA1IDEyNi4xNjIgMzQuNzY3OUMxMjYuMzk4IDM1LjE1NTcgMTI2LjU2NiAzNS42NTM2IDEyNi42NjYgMzYuMjYwOUMxMjYuNzY1IDM2Ljg2OSAxMjYuODEgMzcuNTM0MSAxMjYuODAzIDM4LjI1NTVDMTI2Ljc5NSAzOC45NzczIDEyNi43NjUgMzkuNjcyNCAxMjYuNzExIDQwLjM0MUMxMjYuNjU4IDQxLjAwOTggMTI2LjU5NyA0MS42MDYgMTI2LjUyOCA0Mi4xMzAzQzEyNi40NiA0Mi42NTQ1IDEyNi40MSA0My4wMTU3IDEyNi4zOCA0My4yMTI5QzEyNi4zOCA0My41NjI1IDEyNi41MTMgNDMuODM5NSAxMjYuNzggNDQuMDQ0OEMxMjcuMDQ2IDQ0LjI0OTggMTI3LjM0NCA0NC4zNzE2IDEyNy42NzIgNDQuNDA5NUMxMjggNDQuNDQ3NiAxMjguMzA5IDQ0LjM4NjYgMTI4LjU5OCA0NC4yMjdDMTI4Ljg4OCA0NC4wNjc0IDEyOS4wNTYgNDMuNzk4MiAxMjkuMTAyIDQzLjQxNzlDMTI5LjI1NCA0Mi4zMjQgMTI5LjQ2NCA0MS4yMjY0IDEyOS43MzEgNDAuMTI0N0MxMjkuOTk3IDM5LjAyMyAxMzAuMzAzIDM4LjAzNTUgMTMwLjY0NiAzNy4xNjE2QzEzMC45ODkgMzYuMjg3OCAxMzEuMzcgMzUuNTczNSAxMzEuNzkgMzUuMDE4OUMxMzIuMjA5IDM0LjQ2NDYgMTMyLjY1NSAzNC4xODcgMTMzLjEyOCAzNC4xODdDMTMzLjM3MSAzNC4xODcgMTMzLjU1OSAzNC4zNTQ0IDEzMy42ODggMzQuNjg4NEMxMzMuODE4IDM1LjAyMjcgMTMzLjg4MyAzNS40Nzg0IDEzMy44ODMgMzYuMDU1OUMxMzMuODgzIDM2LjQ4MTUgMTMzLjg0OCAzNi45MTg0IDEzMy43OCAzNy4zNjY2QzEzMy43MTEgMzcuODE0OCAxMzMuNjMxIDM4LjI3ODQgMTMzLjU0IDM4Ljc1NjlDMTMzLjQ0OCAzOS4yMzU4IDEzMy4zNjggMzkuNzI1NiAxMzMuMjk5IDQwLjIyN0MxMzMuMjMxIDQwLjcyODcgMTMzLjE5NiA0MS4yNTI3IDEzMy4xOTYgNDEuNzk5OEMxMzMuMTk2IDQyLjE3OTcgMTMzLjIzNSA0Mi42MjA0IDEzMy4zMTEgNDMuMTIxOEMxMzMuMzg3IDQzLjYyMjkgMTMzLjUzMiA0NC4wOTgzIDEzMy43NDUgNDQuNTQ2MkMxMzMuOTU5IDQ0Ljk5NDcgMTM0LjI1MiA0NS4zNzQ0IDEzNC42MjYgNDUuNjg1OEMxMzUgNDUuOTk3MyAxMzUuNDc2IDQ2LjE1MzEgMTM2LjA1NiA0Ni4xNTMxQzEzNi45MjUgNDYuMTUzMSAxMzcuNjk1IDQ1Ljk2NjkgMTM4LjM2NiA0NS41OTQ3QzEzOS4wMzcgNDUuMjIyNiAxMzkuNjEzIDQ0LjczNjUgMTQwLjA5MyA0NC4xMzYyQzE0MC4xMTggNDQuMTA0NyAxNDAuMTQxIDQ0LjA3MTEgMTQwLjE2NSA0NC4wMzk5QzE0MC4yMDIgNDQuMTI4NyAxNDAuMjM1IDQ0LjIyMjcgMTQwLjI3NiA0NC4zMDcxQzE0MC42MDQgNDQuOTc1NiAxNDEuMDUgNDUuNDkyMSAxNDEuNjE1IDQ1Ljg1N0MxNDIuMTc4IDQ2LjIyMTYgMTQyLjg0MiA0Ni40MjI5IDE0My42MDUgNDYuNDYxMUMxNDQuMzY3IDQ2LjQ5ODcgMTQ1LjE5OCA0Ni4zNTgxIDE0Ni4wOTggNDYuMDM5MkMxNDYuNzY5IDQ1Ljc5NiAxNDcuMzUyIDQ1LjQ5MjEgMTQ3Ljg0OCA0NS4xMjc1QzE0OC4zNDMgNDQuNzYyOCAxNDguNzg5IDQ0LjMxODQgMTQ5LjE4NiA0My43OTQxQzE0OS41ODMgNDMuMjY5OSAxNDkuOTQ1IDQyLjY2NTggMTUwLjI3MyA0MS45ODIyQzE1MC42MDEgNDEuMjk4MSAxNTAuOTMyIDQwLjUxNTkgMTUxLjI2OCAzOS42MzQyQzE1MS4zMjkgMzkuMzkxNiAxNTEuMjcyIDM5LjE3NTEgMTUxLjA5NyAzOC45ODQ4QzE1MC45MjEgMzguNzk1MSAxNTAuNzA4IDM4LjY2MjEgMTUwLjQ1NiAzOC41ODU3WlwiIGZpbGw9XCIjMEQwQzIzXCIvPlxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE2Mi44ODcgMzYuMDQzNEMxNjIuODEgMzYuNDkxOCAxNjIuNzA3IDM2Ljk4NiAxNjIuNTc4IDM3LjUyNUMxNjIuNDQ4IDM4LjA2NDYgMTYyLjI4NCAzOC42MjMgMTYyLjA4NiAzOS4yMDA0QzE2MS44ODggMzkuNzc3OSAxNjEuNjQ0IDQwLjI5ODQgMTYxLjM1NCA0MC43NjE2QzE2MS4wNjQgNDEuMjI1NCAxNjAuNzMzIDQxLjU5MzUgMTYwLjM1OSA0MS44NjcxQzE1OS45ODUgNDIuMTQwNiAxNTkuNTU1IDQyLjI1NDYgMTU5LjA2NiA0Mi4yMDg5QzE1OC44MjIgNDIuMTc4OCAxNTguNjM1IDQyLjAxMTcgMTU4LjUwNiA0MS43MDc1QzE1OC4zNzYgNDEuNDAzOCAxNTguMzA4IDQxLjAxNjEgMTU4LjMgNDAuNTQ1QzE1OC4yOTIgNDAuMDc0MyAxNTguMzM0IDM5LjU1NzUgMTU4LjQyNiAzOC45OTUxQzE1OC41MTcgMzguNDMzMyAxNTguNjU4IDM3Ljg4MjEgMTU4Ljg0OSAzNy4zNDI2QzE1OS4wNCAzNi44MDM2IDE1OS4yNzIgMzYuMzA1NiAxNTkuNTQ3IDM1Ljg0OTZDMTU5LjgyMSAzNS4zOTM5IDE2MC4xMzggMzUuMDQwNSAxNjAuNDk2IDM0Ljc4OThDMTYwLjg1NCAzNC41MzkxIDE2MS4yNDcgMzQuNDIxNyAxNjEuNjc0IDM0LjQzNjVDMTYyLjEwMSAzNC40NTE4IDE2Mi41NTkgMzQuNjY0MyAxNjMuMDQ3IDM1LjA3NDdDMTYzLjAxNiAzNS4yNzI1IDE2Mi45NjMgMzUuNTk1NCAxNjIuODg3IDM2LjA0MzRaTTE3MS4wMTkgMzcuNzg3QzE3MC43ODIgMzcuNjY1NiAxNzAuNTM4IDM3LjYzOTIgMTcwLjI4NyAzNy43MDc1QzE3MC4wMzUgMzcuNzc1NyAxNjkuODU2IDM4LjAwNzYgMTY5Ljc0OSAzOC40MDI2QzE2OS42ODggMzguODI4MyAxNjkuNTUxIDM5LjMyOTQgMTY5LjMzOCAzOS45MDY5QzE2OS4xMjQgNDAuNDg0MyAxNjguODYxIDQxLjAzMTcgMTY4LjU0OCA0MS41NDc4QzE2OC4yMzYgNDIuMDY0NiAxNjcuODc3IDQyLjQ5NCAxNjcuNDczIDQyLjgzNThDMTY3LjA2OSA0My4xNzc4IDE2Ni42MzggNDMuMzMzNyAxNjYuMTgxIDQzLjMwMjhDMTY1Ljc5OSA0My4yNzI3IDE2NS41MzIgNDMuMDc5IDE2NS4zOCA0Mi43MjE4QzE2NS4yMjcgNDIuMzY0NyAxNjUuMTQ3IDQxLjkxNjggMTY1LjE0IDQxLjM3NjlDMTY1LjEzMiA0MC44MzggMTY1LjE4NiA0MC4yMzAxIDE2NS4zIDM5LjU1MzhDMTY1LjQxNCAzOC44Nzc3IDE2NS41NTIgMzguMjA1NCAxNjUuNzEyIDM3LjUzNjNDMTY1Ljg3MiAzNi44NjggMTY2LjAzNiAzNi4yMjU4IDE2Ni4yMDQgMzUuNjEwNUMxNjYuMzcxIDM0Ljk5NTEgMTY2LjUwOCAzNC40NzQ3IDE2Ni42MTYgMzQuMDQ5M0MxNjYuNzM4IDMzLjY2OTMgMTY2LjY5OSAzMy4zNDY2IDE2Ni41MDEgMzMuMDgwM0MxNjYuMzAzIDMyLjgxNDkgMTY2LjA1NSAzMi42MjQ2IDE2NS43NTggMzIuNTEwN0MxNjUuNDYgMzIuMzk2NyAxNjUuMTU5IDMyLjM2NjQgMTY0Ljg1NCAzMi40MTk2QzE2NC41NDkgMzIuNDcyOCAxNjQuMzUxIDMyLjYzNjIgMTY0LjI1OSAzMi45MDk0QzE2My4zNTkgMzIuMTM0NSAxNjIuNDk0IDMxLjcxNjYgMTYxLjY2MyAzMS42NTU5QzE2MC44MzEgMzEuNTk1MiAxNjAuMDY1IDMxLjc3NzYgMTU5LjM2NCAzMi4yMDNDMTU4LjY2MiAzMi42Mjg0IDE1OC4wNDEgMzMuMjQzNyAxNTcuNSAzNC4wNDkzQzE1Ni45NTggMzQuODU0OSAxNTYuNTIgMzUuNzMyMiAxNTYuMTg0IDM2LjY4MThDMTU1Ljg0OSAzNy42MzE0IDE1NS42MzkgMzguNjAwNCAxNTUuNTU1IDM5LjU4NzlDMTU1LjQ3MSA0MC41NzU3IDE1NS41MzYgNDEuNDc2MSAxNTUuNzUgNDIuMjg5QzE1NS45NjMgNDMuMTAxOCAxNTYuMzQgNDMuNzY2OSAxNTYuODgyIDQ0LjI4M0MxNTcuNDIzIDQ0Ljc5OTggMTU4LjE1OSA0NS4wNTgzIDE1OS4wODkgNDUuMDU4M0MxNTkuNTAxIDQ1LjA1ODMgMTU5Ljg5OCA0NC45NzQ3IDE2MC4yNzkgNDQuODA3NkMxNjAuNjYgNDQuNjQwMSAxNjEuMDExIDQ0LjQ0MjYgMTYxLjMzMSA0NC4yMTQ4QzE2MS42NTEgNDMuOTg2OSAxNjEuOTMzIDQzLjc0NzUgMTYyLjE3OCA0My40OTY4QzE2Mi40MjEgNDMuMjQ2MSAxNjIuNjEyIDQzLjAzNzMgMTYyLjc0OSA0Mi44Njk5QzE2Mi44NTYgNDMuNDE3IDE2My4wMzIgNDMuODgwOCAxNjMuMjc2IDQ0LjI2MDVDMTYzLjUxOSA0NC42NDAxIDE2My43OTggNDQuOTUyMSAxNjQuMTExIDQ1LjE5NDhDMTY0LjQyMyA0NS40Mzc2IDE2NC43NTEgNDUuNjE2NCAxNjUuMDk0IDQ1LjczMDZDMTY1LjQzNyA0NS44NDQ1IDE2NS43NjkgNDUuOTAxNSAxNjYuMDg5IDQ1LjkwMTVDMTY2LjgwNiA0NS45MDE1IDE2Ny40NzcgNDUuNjU4MyAxNjguMTAyIDQ1LjE3MTlDMTY4LjcyNyA0NC42ODYxIDE2OS4yODggNDQuMDg5MyAxNjkuNzg0IDQzLjM4MjlDMTcwLjI3OSA0Mi42NzYyIDE3MC42ODcgNDEuOTMxOSAxNzEuMDA3IDQxLjE0OTFDMTcxLjMyOCA0MC4zNjY2IDE3MS41NDEgMzkuNjcxNSAxNzEuNjQ4IDM5LjA2MzRDMTcxLjc1NSAzOC44MzU1IDE3MS43MzUgMzguNTk2NCAxNzEuNTkxIDM4LjM0NTdDMTcxLjQ0NiAzOC4wOTUgMTcxLjI1NSAzNy45MDkgMTcxLjAxOSAzNy43ODdaXCIgZmlsbD1cIiMwRDBDMjNcIi8+XG48cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMjEyLjE5NCA1MC4zNzAxQzIxMi4wNjQgNTAuODg2NiAyMTEuODYyIDUxLjMyMzggMjExLjU4NyA1MS42ODA2QzIxMS4zMTMgNTIuMDM3NyAyMTAuOTcgNTIuMjIzOSAyMTAuNTU4IDUyLjIzOTNDMjEwLjI5OSA1Mi4yNTQzIDIxMC4xMDEgNTIuMTE3NSAyMDkuOTYzIDUxLjgyODlDMjA5LjgyNiA1MS41NDAxIDIwOS43MzEgNTEuMTY3OSAyMDkuNjc4IDUwLjcxMjJDMjA5LjYyNCA1MC4yNTYyIDIwOS42MDEgNDkuNzQ3IDIwOS42MDkgNDkuMTg0OUMyMDkuNjE2IDQ4LjYyMjcgMjA5LjYzOSA0OC4wNjgxIDIwOS42NzggNDcuNTIxQzIwOS43MTUgNDYuOTc0MiAyMDkuNzYxIDQ2LjQ2NDcgMjA5LjgxNSA0NS45OTM5QzIwOS44NjggNDUuNTIyNiAyMDkuOTEgNDUuMTU4NiAyMDkuOTQgNDQuOUMyMTAuNDU5IDQ0Ljk2MDggMjEwLjg5IDQ1LjE4NDYgMjExLjIzMyA0NS41NzIzQzIxMS41NzYgNDUuOTU5OCAyMTEuODM5IDQ2LjQxOTMgMjEyLjAyMiA0Ni45NTE0QzIxMi4yMDUgNDcuNDgzMSAyMTIuMzEyIDQ4LjA1NjggMjEyLjM0MyA0OC42NzIyQzIxMi4zNzMgNDkuMjg3NSAyMTIuMzIzIDQ5Ljg1MzQgMjEyLjE5NCA1MC4zNzAxWk0yMDMuOTEzIDUwLjM3MDFDMjAzLjc4MyA1MC44ODY2IDIwMy41ODEgNTEuMzIzOCAyMDMuMzA3IDUxLjY4MDZDMjAzLjAzMiA1Mi4wMzc3IDIwMi42ODkgNTIuMjIzOSAyMDIuMjc3IDUyLjIzOTNDMjAyLjAxOCA1Mi4yNTQzIDIwMS44MiA1Mi4xMTc1IDIwMS42ODMgNTEuODI4OUMyMDEuNTQ1IDUxLjU0MDEgMjAxLjQ1IDUxLjE2NzkgMjAxLjM5NyA1MC43MTIyQzIwMS4zNDMgNTAuMjU2MiAyMDEuMzIgNDkuNzQ3IDIwMS4zMjggNDkuMTg0OUMyMDEuMzM2IDQ4LjYyMjcgMjAxLjM1OCA0OC4wNjgxIDIwMS4zOTcgNDcuNTIxQzIwMS40MzQgNDYuOTc0MiAyMDEuNDggNDYuNDY0NyAyMDEuNTM0IDQ1Ljk5MzlDMjAxLjU4NyA0NS41MjI2IDIwMS42MjkgNDUuMTU4NiAyMDEuNjYgNDQuOUMyMDIuMTc4IDQ0Ljk2MDggMjAyLjYwOSA0NS4xODQ2IDIwMi45NTIgNDUuNTcyM0MyMDMuMjk1IDQ1Ljk1OTggMjAzLjU1OCA0Ni40MTkzIDIwMy43NDEgNDYuOTUxNEMyMDMuOTI0IDQ3LjQ4MzEgMjA0LjAzMSA0OC4wNTY4IDIwNC4wNjIgNDguNjcyMkMyMDQuMDkyIDQ5LjI4NzUgMjA0LjA0MiA0OS44NTM0IDIwMy45MTMgNTAuMzcwMVpNMTk1LjQxNSAzNy40MjQxQzE5NS4zOTkgMzcuNzg4NCAxOTUuMzY1IDM4LjExMTQgMTk1LjMxMiAzOC4zOTI1QzE5NS4yNTggMzguNjc0MSAxOTUuMTg2IDM4Ljg1MjIgMTk1LjA5NSAzOC45MjgzQzE5NC45MjcgMzguODM2OSAxOTQuNzIxIDM4LjYwMTggMTk0LjQ3NyAzOC4yMjE2QzE5NC4yMzMgMzcuODQxOSAxOTQuMDQyIDM3LjQxMjIgMTkzLjkwNSAzNi45MzM2QzE5My43NjggMzYuNDU1MSAxOTMuNzI1IDM1Ljk4NDMgMTkzLjc3OSAzNS41MjA1QzE5My44MzIgMzUuMDU3MyAxOTQuMDczIDM0LjY5NjcgMTk0LjUgMzQuNDM3OUMxOTQuNjY3IDM0LjM0NjggMTk0LjgxMiAzNC4zODA5IDE5NC45MzQgMzQuNTQwNUMxOTUuMDU2IDM0LjcwMDEgMTk1LjE1NSAzNC45MzE4IDE5NS4yMzIgMzUuMjM1N0MxOTUuMzA4IDM1LjUzOTkgMTk1LjM2MSAzNS44ODkyIDE5NS4zOTIgMzYuMjg0MkMxOTUuNDIyIDM2LjY3OTUgMTk1LjQzIDM3LjA1OTEgMTk1LjQxNSAzNy40MjQxWk0xOTMuMzkgNDEuOTcxMUMxOTMuMTU0IDQyLjIyMTUgMTkyLjg5IDQyLjQzODEgMTkyLjYwMSA0Mi42MjA2QzE5Mi4zMTEgNDIuODAzIDE5Mi4wMTQgNDIuOTM5OCAxOTEuNzA5IDQzLjAzMDlDMTkxLjQwNCA0My4xMjIzIDE5MS4xMjkgNDMuMTQ0OCAxOTAuODg1IDQzLjA5OTFDMTkwLjE5OSA0Mi45NjI3IDE4OS42NzMgNDIuNjY2IDE4OS4zMDcgNDIuMjEwM0MxODguOTQxIDQxLjc1NDUgMTg4LjcwOCA0MS4yMTkgMTg4LjYwOSA0MC42MDM3QzE4OC41MSAzOS45ODgxIDE4OC41MjEgMzkuMzMwOCAxODguNjQ0IDM4LjYzMTlDMTg4Ljc2NSAzNy45MzMgMTg4Ljk3MSAzNy4yODM1IDE4OS4yNjEgMzYuNjgzMkMxODkuNTUxIDM2LjA4MjkgMTg5LjkwMiAzNS41NjYyIDE5MC4zMTMgMzUuMTMzM0MxOTAuNzI1IDM0LjcwMDEgMTkxLjE3NSAzNC40MzA2IDE5MS42NjMgMzQuMzIzOUMxOTEuNDggMzUuMDk4OSAxOTEuNDE5IDM1LjkwMDcgMTkxLjQ4IDM2LjcyODZDMTkxLjU0MSAzNy41NTY4IDE5MS43MzkgMzguMzM1NSAxOTIuMDc1IDM5LjA2NDhDMTkyLjI4OCAzOS41MDYgMTkyLjU0NCAzOS45MDgyIDE5Mi44NDEgNDAuMjcyOUMxOTMuMTM5IDQwLjYzNzggMTkzLjUwMSA0MC45NDkyIDE5My45MjggNDEuMjA3NUMxOTMuODA2IDQxLjQ2NiAxOTMuNjI2IDQxLjcyMDQgMTkzLjM5IDQxLjk3MTFaTTIxOC43MDIgMzcuNjUxOUMyMTguNzQ3IDM3LjMwMjYgMjE4LjgxNiAzNi45MzM2IDIxOC45MDggMzYuNTQ2MkMyMTguOTk5IDM2LjE1OSAyMTkuMTE0IDM1Ljc4MjggMjE5LjI1MSAzNS40MTgxQzIxOS4zODggMzUuMDUzMiAyMTkuNTQ4IDM0LjczOCAyMTkuNzMxIDM0LjQ3MjNDMjE5LjkxNCAzNC4yMDY1IDIyMC4xMDggMzQuMDE2MyAyMjAuMzE0IDMzLjkwMjRDMjIwLjUyIDMzLjc4ODQgMjIwLjczIDMzLjc5OTcgMjIwLjk0MyAzMy45MzY1QzIyMS4xNzIgMzQuMDczNSAyMjEuMzEzIDM0LjM2MjEgMjIxLjM2NyAzNC44MDI1QzIyMS40MiAzNS4yNDM1IDIyMS4zNjcgMzUuNzE0MiAyMjEuMjA3IDM2LjIxNTlDMjIxLjA0NiAzNi43MTczIDIyMC43NjEgMzcuMTg4NCAyMjAuMzQ5IDM3LjYyODhDMjE5LjkzNyAzOC4wNyAyMTkuMzggMzguMzU4MyAyMTguNjc5IDM4LjQ5NTFDMjE4LjY0OCAzOC4yODI2IDIxOC42NTYgMzguMDAxNSAyMTguNzAyIDM3LjY1MTlaTTIyNy45MjEgMzcuNjUxOUMyMjcuOTY2IDM3LjMwMjYgMjI4LjAzNSAzNi45MzM2IDIyOC4xMjYgMzYuNTQ2MkMyMjguMjE4IDM2LjE1OSAyMjguMzMyIDM1Ljc4MjggMjI4LjQ3IDM1LjQxODFDMjI4LjYwNyAzNS4wNTMyIDIyOC43NjcgMzQuNzM4IDIyOC45NSAzNC40NzIzQzIyOS4xMzMgMzQuMjA2NSAyMjkuMzI4IDM0LjAxNjMgMjI5LjUzMyAzMy45MDI0QzIyOS43MzkgMzMuNzg4NCAyMjkuOTQ5IDMzLjc5OTcgMjMwLjE2MiAzMy45MzY1QzIzMC4zOTEgMzQuMDczNSAyMzAuNTMyIDM0LjM2MjEgMjMwLjU4NiAzNC44MDI1QzIzMC42MzkgMzUuMjQzNSAyMzAuNTg2IDM1LjcxNDIgMjMwLjQyNSAzNi4yMTU5QzIzMC4yNjUgMzYuNzE3MyAyMjkuOTc5IDM3LjE4ODQgMjI5LjU2OCAzNy42Mjg4QzIyOS4xNTYgMzguMDcgMjI4LjU5OSAzOC4zNTgzIDIyNy44OTggMzguNDk1MUMyMjcuODY3IDM4LjI4MjYgMjI3Ljg3NSAzOC4wMDE1IDIyNy45MjEgMzcuNjUxOVpNMjM2LjQ4OCAzOC45ODUyQzIzNi4zMTIgMzguNzk1NSAyMzYuMDk5IDM4LjY2MjUgMjM1Ljg0NyAzOC41ODYyQzIzNS41OTUgMzguNTEwNCAyMzUuMzU1IDM4LjUwMjkgMjM1LjEyNiAzOC41NjM2QzIzNC44OTcgMzguNjI0NCAyMzQuNzUyIDM4Ljc4NCAyMzQuNjkyIDM5LjA0MjJDMjM0LjU3IDM5LjUyODYgMjM0LjM3NSA0MC4wMjYyIDIzNC4xMDggNDAuNTM0OUMyMzMuODQxIDQxLjA0NDQgMjMzLjUxNCA0MS41MjY3IDIzMy4xMjUgNDEuOTgyNEMyMzIuNzM2IDQyLjQzODEgMjMyLjI5NyA0Mi44NDEyIDIzMS44MSA0My4xOTA1QzIzMS4zMjEgNDMuNTQwMSAyMzAuODEgNDMuNzkwOCAyMzAuMjc3IDQzLjk0MjNDMjI5Ljc0MyA0NC4xMTAxIDIyOS4zMDEgNDQuMTI4OSAyMjguOTUgNDMuOTk5NkMyMjguNTk5IDQzLjg3MDYgMjI4LjMyMSA0My42NTAzIDIyOC4xMTUgNDMuMzM4OUMyMjcuOTA5IDQzLjAyNzEgMjI3Ljc2MSA0Mi42NTEyIDIyNy42NjkgNDIuMjEwM0MyMjcuNTc4IDQxLjc2OTkgMjI3LjUyNCA0MS4zMTQyIDIyNy41MDkgNDAuODQyOEMyMjguMzc4IDQwLjkwMzggMjI5LjE1MiA0MC43NDgzIDIyOS44MzEgNDAuMzc1NUMyMzAuNTA5IDQwLjAwMzQgMjMxLjA4NSAzOS41MDkyIDIzMS41NTggMzguODkzOUMyMzIuMDMxIDM4LjI3ODggMjMyLjM4OSAzNy41ODc0IDIzMi42MzMgMzYuODJDMjMyLjg3NyAzNi4wNTI2IDIzMy4wMTQgMzUuMjg5MiAyMzMuMDQ1IDM0LjUyOTNDMjMzLjA2IDMzLjgxNSAyMzIuOTUzIDMzLjIxMSAyMzIuNzI0IDMyLjcxNzFDMjMyLjQ5NiAzMi4yMjM1IDIzMi4xODcgMzEuODM5NSAyMzEuNzk4IDMxLjU2NjJDMjMxLjQwOSAzMS4yOTI0IDIzMC45NjMgMzEuMTMzIDIzMC40NiAzMS4wODc0QzIyOS45NTcgMzEuMDQxNyAyMjkuNDQ1IDMxLjExMDUgMjI4LjkyNyAzMS4yOTI0QzIyOC4zMDIgMzEuNTA1NSAyMjcuNzcyIDMxLjg1MSAyMjcuMzM4IDMyLjMyOTZDMjI2LjkwMyAzMi44MDg1IDIyNi41NCAzMy4zNjM0IDIyNi4yNTEgMzMuOTkzNEMyMjUuOTYxIDM0LjYyNDQgMjI1LjczMiAzNS4zMDM5IDIyNS41NjQgMzYuMDMzNUMyMjUuMzk2IDM2Ljc2MjcgMjI1LjI3NCAzNy40ODEgMjI1LjE5OSAzOC4xODc0QzIyNS4xMjQgMzguODczIDIyNS4wODQgMzkuNTI5MiAyMjUuMDc1IDQwLjE1NzJDMjI1LjAxNyA0MC4yODI0IDIyNC45NTYgNDAuNDA4MiAyMjQuODg5IDQwLjUzNDlDMjI0LjYyMiA0MS4wNDQ0IDIyNC4yOTUgNDEuNTI2NyAyMjMuOTA2IDQxLjk4MjRDMjIzLjUxNyA0Mi40MzgxIDIyMy4wNzggNDIuODQxMiAyMjIuNTkxIDQzLjE5MDVDMjIyLjEwMiA0My41NDAxIDIyMS41OTIgNDMuNzkwOCAyMjEuMDU4IDQzLjk0MjNDMjIwLjUyNCA0NC4xMTAxIDIyMC4wODIgNDQuMTI4OSAyMTkuNzMxIDQzLjk5OTZDMjE5LjM4IDQzLjg3MDYgMjE5LjEwMiA0My42NTAzIDIxOC44OTYgNDMuMzM4OUMyMTguNjkxIDQzLjAyNzEgMjE4LjU0MiA0Mi42NTEyIDIxOC40NSA0Mi4yMTAzQzIxOC4zNTkgNDEuNzY5OSAyMTguMzA1IDQxLjMxNDIgMjE4LjI5IDQwLjg0MjhDMjE5LjE1OSA0MC45MDM4IDIxOS45MzMgNDAuNzQ4MyAyMjAuNjEyIDQwLjM3NTVDMjIxLjI5IDQwLjAwMzQgMjIxLjg2NiAzOS41MDkyIDIyMi4zMzkgMzguODkzOUMyMjIuODExIDM4LjI3ODggMjIzLjE3IDM3LjU4NzQgMjIzLjQxNCAzNi44MkMyMjMuNjU4IDM2LjA1MjYgMjIzLjc5NSAzNS4yODkyIDIyMy44MjYgMzQuNTI5M0MyMjMuODQxIDMzLjgxNSAyMjMuNzM0IDMzLjIxMSAyMjMuNTA2IDMyLjcxNzFDMjIzLjI3NyAzMi4yMjM1IDIyMi45NjggMzEuODM5NSAyMjIuNTc5IDMxLjU2NjJDMjIyLjE5IDMxLjI5MjQgMjIxLjc0NCAzMS4xMzMgMjIxLjI0MSAzMS4wODc0QzIyMC43MzggMzEuMDQxNyAyMjAuMjI3IDMxLjExMDUgMjE5LjcwOCAzMS4yOTI0QzIxOS4wODMgMzEuNTA1NSAyMTguNTUzIDMxLjg1MSAyMTguMTE5IDMyLjMyOTZDMjE3LjY4NCAzMi44MDg1IDIxNy4zMjEgMzMuMzYzNCAyMTcuMDMyIDMzLjk5MzRDMjE2Ljc0MiAzNC42MjQ0IDIxNi41MTMgMzUuMzAzOSAyMTYuMzQ2IDM2LjAzMzVDMjE2LjE3OCAzNi43NjI3IDIxNi4wNTYgMzcuNDgxIDIxNS45OCAzOC4xODc0QzIxNS45MzYgMzguNTg1OSAyMTUuOTA3IDM4Ljk3MjIgMjE1Ljg4NiAzOS4zNTE2QzIxNS43MzkgMzkuNDc2NSAyMTUuNTk1IDM5LjYwMjMgMjE1LjQ0MiAzOS43MjU4QzIxNC45MTYgNDAuMTUxNCAyMTQuMzYzIDQwLjUzNDkgMjEzLjc4NCA0MC44NzY5QzIxMy4yMDQgNDEuMjE5IDIxMi42MDEgNDEuNTAwMSAyMTEuOTc3IDQxLjcyMDRDMjExLjM1MSA0MS45NDA4IDIxMC43MSA0Mi4wNzM4IDIxMC4wNTUgNDIuMTE5MkwyMTEuNDczIDI2Ljk4NDdDMjExLjU2NSAyNi42NjU1IDIxMS41MTkgMjYuMzg0NyAyMTEuMzM2IDI2LjE0MTVDMjExLjE1MyAyNS44OTgzIDIxMC45MTYgMjUuNzMxMiAyMTAuNjI3IDI1LjY0MDFDMjEwLjMzNyAyNS41NDg4IDIxMC4wMjggMjUuNTU2NiAyMDkuNyAyNS42NjI3QzIwOS4zNzIgMjUuNzY5NCAyMDkuMTAyIDI2LjAxMjYgMjA4Ljg4OCAyNi4zOTE5QzIwOC43ODEgMjYuOTY5NyAyMDguNjcxIDI3Ljc1OTcgMjA4LjU1NyAyOC43NjI1QzIwOC40NDIgMjkuNzY1MyAyMDguMzI4IDMwLjg1OTUgMjA4LjIxMyAzMi4wNDQ4QzIwOC4wOTkgMzMuMjMgMjA3Ljk4NSAzNC40NTMyIDIwNy44NyAzNS43MTQyQzIwNy43NTYgMzYuOTc1OSAyMDcuNjU3IDM4LjE1MzMgMjA3LjU3MyAzOS4yNDcyQzIwNy41NjkgMzkuMjk1OCAyMDcuNTY2IDM5LjMzOTggMjA3LjU2MiAzOS4zODc4QzIwNy40MjkgMzkuNTAwNSAyMDcuMjk5IDM5LjYxNDIgMjA3LjE2MSAzOS43MjU4QzIwNi42MzUgNDAuMTUxNCAyMDYuMDgyIDQwLjUzNDkgMjA1LjUwMyA0MC44NzY5QzIwNC45MjMgNDEuMjE5IDIwNC4zMjEgNDEuNTAwMSAyMDMuNjk2IDQxLjcyMDRDMjAzLjA3IDQxLjk0MDggMjAyLjQyOSA0Mi4wNzM4IDIwMS43NzQgNDIuMTE5MkwyMDMuMTkyIDI2Ljk4NDdDMjAzLjI4NCAyNi42NjU1IDIwMy4yMzggMjYuMzg0NyAyMDMuMDU1IDI2LjE0MTVDMjAyLjg3MiAyNS44OTgzIDIwMi42MzUgMjUuNzMxMiAyMDIuMzQ2IDI1LjY0MDFDMjAyLjA1NiAyNS41NDg4IDIwMS43NDcgMjUuNTU2NiAyMDEuNDE5IDI1LjY2MjdDMjAxLjA5MSAyNS43Njk0IDIwMC44MjEgMjYuMDEyNiAyMDAuNjA3IDI2LjM5MTlDMjAwLjUwMSAyNi45Njk3IDIwMC4zOSAyNy43NTk3IDIwMC4yNzYgMjguNzYyNUMyMDAuMTYxIDI5Ljc2NTMgMjAwLjA0NyAzMC44NTk1IDE5OS45MzMgMzIuMDQ0OEMxOTkuODE4IDMzLjIzIDE5OS43MDQgMzQuNDUzMiAxOTkuNTg5IDM1LjcxNDJDMTk5LjQ3NSAzNi45NzU5IDE5OS4zNzYgMzguMTUzMyAxOTkuMjkyIDM5LjI0NzJDMTk5LjI5IDM5LjI2OTIgMTk5LjI4OSAzOS4yODkxIDE5OS4yODcgMzkuMzExMUMxOTkuMDQ4IDM5LjQyMTkgMTk4Ljc4NiAzOS41MTkgMTk4LjUwMyAzOS42MDA2QzE5OC4yMTMgMzkuNjg0NCAxOTcuODg1IDM5LjczMzkgMTk3LjUxOSAzOS43NDg5QzE5Ny41OCAzOS40NzUxIDE5Ny42MyAzOS4xNzEyIDE5Ny42NjggMzguODM2OUMxOTcuNzA2IDM4LjUwMjkgMTk3LjczNyAzOC4xNTMzIDE5Ny43NiAzNy43ODg0QzE5Ny43ODIgMzcuNDI0MSAxOTcuNzkgMzcuMDU5MSAxOTcuNzgyIDM2LjY5NDVDMTk3Ljc3NCAzNi4zMjk2IDE5Ny43NTUgMzUuOTk1NiAxOTcuNzI1IDM1LjY5MTRDMTk3LjY0OSAzNS4wMzg1IDE5Ny41MDggMzQuNDE5MSAxOTcuMzAyIDMzLjgzMzhDMTk3LjA5NiAzMy4yNDkxIDE5Ni44MTggMzIuNzU5MyAxOTYuNDY3IDMyLjM2MzdDMTk2LjExNiAzMS45Njg3IDE5NS42NzggMzEuNzAyNyAxOTUuMTUxIDMxLjU2NjJDMTk0LjYyNiAzMS40Mjk0IDE5NC4wMTIgMzEuNDc0OCAxOTMuMzEgMzEuNzAyN0MxOTIuMjczIDMxLjU2NjIgMTkxLjMzOSAzMS42NjEzIDE5MC41MDggMzEuOTg3OEMxODkuNjc3IDMyLjMxNDkgMTg4Ljk1NiAzMi43ODk0IDE4OC4zNDYgMzMuNDEyMkMxODcuNzM2IDM0LjAzNTcgMTg3LjIzNyAzNC43Njg0IDE4Ni44NDggMzUuNjExOUMxODYuNDU5IDM2LjQ1NTEgMTg2LjIgMzcuMzIxNCAxODYuMDcgMzguMjFDMTg2LjAxNSAzOC41ODY4IDE4NS45ODggMzguOTYxOCAxODUuOTggMzkuMzM2QzE4NS43NDQgMzkuODE3NyAxODUuNDg2IDQwLjIzODggMTg1LjIwMSA0MC41OTIxQzE4NC43OTcgNDEuMDkzNSAxODQuMzc3IDQxLjUwMzggMTgzLjk0MyA0MS44MjI4QzE4My41MDggNDIuMTQyIDE4My4wNzcgNDIuMzg1MiAxODIuNjUgNDIuNTUyM0MxODIuMjIzIDQyLjcxOTggMTgxLjg0MiA0Mi44MzM3IDE4MS41MDcgNDIuODk0MUMxODEuMTEgNDIuOTcwMiAxODAuNzI5IDQyLjk3OCAxODAuMzYzIDQyLjkxN0MxNzkuOTk3IDQyLjg1NjUgMTc5LjY2MSA0Mi42ODE2IDE3OS4zNTcgNDIuMzkyN0MxNzkuMTEyIDQyLjE4MDIgMTc4LjkyNSA0MS44MzgxIDE3OC43OTYgNDEuMzY3MUMxNzguNjY2IDQwLjg5NiAxNzguNTkgNDAuMzYwOCAxNzguNTY3IDM5Ljc2MDJDMTc4LjU0NCAzOS4xNTk5IDE3OC41NjcgMzguNTMzIDE3OC42MzYgMzcuODc5OEMxNzguNzA1IDM3LjIyNjYgMTc4LjgyMiAzNi42MDcyIDE3OC45OSAzNi4wMjIyQzE3OS4xNTggMzUuNDM3MiAxNzkuMzcxIDM0LjkxMyAxNzkuNjMxIDM0LjQ0OTJDMTc5Ljg5IDMzLjk4NjIgMTgwLjE5NSAzMy42NTU0IDE4MC41NDYgMzMuNDU3OUMxODAuNzQ0IDMzLjQ4ODYgMTgwLjg2NiAzMy42MDYgMTgwLjkxMiAzMy44MTFDMTgwLjk1OCAzNC4wMTYzIDE4MC45NjkgMzQuMjU5NSAxODAuOTQ2IDM0LjU0MDVDMTgwLjkyMyAzNC44MjE5IDE4MC44ODkgMzUuMTEwNSAxODAuODQzIDM1LjQwNjZDMTgwLjc5NyAzNS43MDMgMTgwLjc3NSAzNS45NTAyIDE4MC43NzUgMzYuMTQ3NEMxODAuODUxIDM2LjU1NzcgMTgwLjk5OSAzNi44NzcgMTgxLjIyMSAzNy4xMDQ4QzE4MS40NDEgMzcuMzMyNyAxODEuNjkgMzcuNDY2IDE4MS45NjQgMzcuNTAzNkMxODIuMjM5IDM3LjU0MTcgMTgyLjUwOSAzNy40NzczIDE4Mi43NzYgMzcuMzA5OEMxODMuMDQzIDM3LjE0MyAxODMuMjYgMzYuODc3IDE4My40MjggMzYuNTEyQzE4My40NDMgMzYuNTI3NCAxODMuNDY2IDM2LjUzNDkgMTgzLjQ5NyAzNi41MzQ5TDE4My44MTcgMzMuNjQwNEMxODMuOTA5IDMzLjI0NTEgMTgzLjg0NyAzMi44OTU4IDE4My42MzQgMzIuNTkxOUMxODMuNDIgMzIuMjg4IDE4My4xMzggMzIuMTEzIDE4Mi43ODggMzIuMDY3NkMxODIuMzQ1IDMxLjQyOTQgMTgxLjc0NyAzMS4wOTE0IDE4MC45OTIgMzEuMDUzMkMxODAuMjM3IDMxLjAxNTQgMTc5LjQ2MyAzMS4yNjIzIDE3OC42NyAzMS43OTQxQzE3OC4xODIgMzIuMTQ0IDE3Ny43NTEgMzIuNjI2IDE3Ny4zNzggMzMuMjQxM0MxNzcuMDA0IDMzLjg1NyAxNzYuNjk5IDM0LjU0MDUgMTc2LjQ2MyAzNS4yOTI2QzE3Ni4yMjYgMzYuMDQ0OCAxNzYuMDU4IDM2LjgzOTEgMTc1Ljk1OSAzNy42NzQ4QzE3NS44NiAzOC41MTA0IDE3NS44NDEgMzkuMzIzNiAxNzUuOTAyIDQwLjExMzNDMTc1Ljk2MyA0MC45MDM4IDE3Ni4xMDQgNDEuNjQ4NCAxNzYuMzI1IDQyLjM0N0MxNzYuNTQ2IDQzLjA0NjIgMTc2Ljg1NSA0My42MzEyIDE3Ny4yNTIgNDQuMTAyQzE3Ny41ODcgNDQuNTEyMyAxNzcuOTY4IDQ0LjgxMjcgMTc4LjM5NSA0NS4wMDI3QzE3OC44MjIgNDUuMTkyNyAxNzkuMjY4IDQ1LjMxMDEgMTc5LjczNCA0NS4zNTU4QzE4MC4xOTkgNDUuNDAxMiAxODAuNjYgNDUuMzgyMSAxODEuMTE4IDQ1LjI5ODhDMTgxLjU3NSA0NS4yMTU1IDE4Mi4wMSA0NS4wOTc4IDE4Mi40MjEgNDQuOTQ1NEMxODIuOTU1IDQ0Ljc0ODIgMTgzLjUwNSA0NC40OTcyIDE4NC4wNjkgNDQuMTkzM0MxODQuNjMzIDQzLjg4OTcgMTg1LjE3NCA0My41MjQ4IDE4NS42OTMgNDMuMDk5MUMxODUuOTY2IDQyLjg3NTMgMTg2LjIyOCA0Mi42MzEzIDE4Ni40ODIgNDIuMzY5NkMxODYuNTk4IDQyLjY1NTMgMTg2LjcyNyA0Mi45MzE3IDE4Ni44ODIgNDMuMTkwNUMxODcuMjk0IDQzLjg3NDEgMTg3Ljg1IDQ0LjQyOSAxODguNTUyIDQ0Ljg1NDRDMTg5LjI1MyA0NS4yNzk3IDE5MC4xMTUgNDUuNDg0NCAxOTEuMTM3IDQ1LjQ2OTdDMTkyLjIzNSA0NS40NTQ0IDE5My4yNDkgNDUuMTc3NCAxOTQuMTggNDQuNjM3OEMxOTUuMTEgNDQuMDk4OCAxOTUuODcyIDQzLjMwNDIgMTk2LjQ2NyA0Mi4yNTZDMTk3LjM1OCA0Mi4yNTYgMTk4LjIzNCA0Mi4xMDk2IDE5OS4wOTYgNDEuODE5QzE5OS4wODkgNDEuOTExIDE5OS4wODEgNDIuMDA3OSAxOTkuMDc1IDQyLjA5NjZDMTk5LjAxNCA0Mi45MDE5IDE5OC45ODMgNDMuNDQ4NyAxOTguOTgzIDQzLjczNzZDMTk4Ljk2OCA0NC4yMzkgMTk4LjkzNCA0NC44NTgxIDE5OC44OCA0NS41OTQ5QzE5OC44MjcgNDYuMzMyIDE5OC43OTMgNDcuMTA2OSAxOTguNzc4IDQ3LjkxOThDMTk4Ljc2MyA0OC43MzI2IDE5OC43OTMgNDkuNTUzMiAxOTguODY5IDUwLjM4MTdDMTk4Ljk0NSA1MS4yMDk2IDE5OS4xMDUgNTEuOTYyIDE5OS4zNDkgNTIuNjM4M0MxOTkuNTkzIDUzLjMxNDEgMTk5Ljk0IDUzLjg4NzggMjAwLjM5IDU0LjM1OTFDMjAwLjg0IDU0LjgyOTkgMjAxLjQzMSA1NS4xMTEyIDIwMi4xNjMgNTUuMjAyM0MyMDIuOTQxIDU1LjMwODQgMjAzLjYxMiA1NS4xNzE3IDIwNC4xNzYgNTQuNzkyQzIwNC43NCA1NC40MTIgMjA1LjE5OCA1My44OTE4IDIwNS41NDkgNTMuMjMwOEMyMDUuODk5IDUyLjU2OTUgMjA2LjE0NyA1MS44MDYxIDIwNi4yOTIgNTAuOTQwMUMyMDYuNDM3IDUwLjA3NCAyMDYuNDc5IDQ5LjIwMzkgMjA2LjQxOCA0OC4zMzAxQzIwNi4zNTcgNDcuNDU2MiAyMDYuMTk2IDQ2LjYzMjEgMjA1LjkzNyA0NS44NTc1QzIwNS42NzggNDUuMDgyMiAyMDUuMzE5IDQ0LjQ0NCAyMDQuODYyIDQzLjk0MjNDMjA1LjEzNyA0My44NjY5IDIwNS40NjUgNDMuNzIyNiAyMDUuODQ2IDQzLjUwOTVDMjA2LjIyNyA0My4yOTY5IDIwNi42MiA0My4wNTc1IDIwNy4wMjQgNDIuNzkxNUMyMDcuMTIzIDQyLjcyNjEgMjA3LjIyMSA0Mi42NTczIDIwNy4zMiA0Mi41OTAyQzIwNy4yODMgNDMuMTI4NiAyMDcuMjY0IDQzLjUxMjYgMjA3LjI2NCA0My43Mzc2QzIwNy4yNDkgNDQuMjM5IDIwNy4yMTUgNDQuODU4MSAyMDcuMTYxIDQ1LjU5NDlDMjA3LjEwOCA0Ni4zMzIgMjA3LjA3MyA0Ny4xMDY5IDIwNy4wNTggNDcuOTE5OEMyMDcuMDQzIDQ4LjczMjYgMjA3LjA3MyA0OS41NTMyIDIwNy4xNSA1MC4zODE3QzIwNy4yMjYgNTEuMjA5NiAyMDcuMzg2IDUxLjk2MiAyMDcuNjMgNTIuNjM4M0MyMDcuODc0IDUzLjMxNDEgMjA4LjIyMSA1My44ODc4IDIwOC42NzEgNTQuMzU5MUMyMDkuMTIxIDU0LjgyOTkgMjA5LjcxMiA1NS4xMTEyIDIxMC40NDQgNTUuMjAyM0MyMTEuMjIxIDU1LjMwODQgMjExLjg5MiA1NS4xNzE3IDIxMi40NTcgNTQuNzkyQzIxMy4wMjEgNTQuNDEyIDIxMy40NzggNTMuODkxOCAyMTMuODMgNTMuMjMwOEMyMTQuMTggNTIuNTY5NSAyMTQuNDI4IDUxLjgwNjEgMjE0LjU3MyA1MC45NDAxQzIxNC43MTggNTAuMDc0IDIxNC43NTkgNDkuMjAzOSAyMTQuNjk5IDQ4LjMzMDFDMjE0LjYzNyA0Ny40NTYyIDIxNC40NzcgNDYuNjMyMSAyMTQuMjE4IDQ1Ljg1NzVDMjEzLjk1OSA0NS4wODIyIDIxMy42MDEgNDQuNDQ0IDIxMy4xNDMgNDMuOTQyM0MyMTMuNDE4IDQzLjg2NjkgMjEzLjc0NSA0My43MjI2IDIxNC4xMjcgNDMuNTA5NUMyMTQuNTA4IDQzLjI5NjkgMjE0LjkgNDMuMDU3NSAyMTUuMzA1IDQyLjc5MTVDMjE1LjUxNSA0Mi42NTMzIDIxNS43MjQgNDIuNTEwNyAyMTUuOTMyIDQyLjM2NDFDMjE2LjAxIDQzLjEwNzIgMjE2LjE3OSA0My43NTkgMjE2LjQ0OCA0NC4zMDczQzIxNi43NzYgNDQuOTc2MSAyMTcuMjIyIDQ1LjQ5MjUgMjE3Ljc4NyA0NS44NTc1QzIxOC4zNTEgNDYuMjIxOCAyMTkuMDE0IDQ2LjQyMzQgMjE5Ljc3NyA0Ni40NjEyQzIyMC41MzkgNDYuNDk4OCAyMjEuMzcgNDYuMzU4NiAyMjIuMjcxIDQ2LjAzOTNDMjIyLjk0MSA0NS43OTY1IDIyMy41MjUgNDUuNDkyNSAyMjQuMDIgNDUuMTI3OUMyMjQuNTE2IDQ0Ljc2MyAyMjQuOTYyIDQ0LjMxODUgMjI1LjM1OCA0My43OTQ2QzIyNS4zODEgNDMuNzY0MiAyMjUuNDAzIDQzLjczMTMgMjI1LjQyNSA0My43MDA2QzIyNS40OTYgNDMuOTEzNCAyMjUuNTc0IDQ0LjExNzkgMjI1LjY2NyA0NC4zMDczQzIyNS45OTUgNDQuOTc2MSAyMjYuNDQxIDQ1LjQ5MjUgMjI3LjAwNiA0NS44NTc1QzIyNy41NjkgNDYuMjIxOCAyMjguMjMzIDQ2LjQyMzQgMjI4Ljk5NiA0Ni40NjEyQzIyOS43NTggNDYuNDk4OCAyMzAuNTg5IDQ2LjM1ODYgMjMxLjQ4OSA0Ni4wMzkzQzIzMi4xNiA0NS43OTY1IDIzMi43NDQgNDUuNDkyNSAyMzMuMjM5IDQ1LjEyNzlDMjMzLjczNSA0NC43NjMgMjM0LjE4MSA0NC4zMTg1IDIzNC41NzcgNDMuNzk0NkMyMzQuOTc0IDQzLjI3IDIzNS4zMzYgNDIuNjY2IDIzNS42NjQgNDEuOTgyNEMyMzUuOTkyIDQxLjI5ODUgMjM2LjMyMyA0MC41MTY0IDIzNi42NTkgMzkuNjM0N0MyMzYuNzIgMzkuMzkxOCAyMzYuNjYzIDM5LjE3NTIgMjM2LjQ4OCAzOC45ODUyWlwiIGZpbGw9XCIjMEQwQzIzXCIvPlxuPC9zdmc+YDtcblxuY29uc3QgcGF5cGFsID0gYFxuPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNTBcIiBoZWlnaHQ9XCI0MFwiPlxuPHBhdGggZmlsbD1cIiMyNTNCODBcIiBkPVwiTTQ2LjIxMSA2Ljc0OWgtNi44MzlhLjk1Ljk1IDAgMCAwLS45MzkuODAybC0yLjc2NiAxNy41MzdhLjU3LjU3IDAgMCAwIC41NjQuNjU4aDMuMjY1YS45NS45NSAwIDAgMCAuOTM5LS44MDNsLjc0Ni00LjczYS45NS45NSAwIDAgMSAuOTM4LS44MDNoMi4xNjVjNC41MDUgMCA3LjEwNS0yLjE4IDcuNzg0LTYuNS4zMDYtMS44OS4wMTMtMy4zNzUtLjg3Mi00LjQxNS0uOTcyLTEuMTQyLTIuNjk2LTEuNzQ2LTQuOTg1LTEuNzQ2ek00NyAxMy4xNTRjLS4zNzQgMi40NTQtMi4yNDkgMi40NTQtNC4wNjIgMi40NTRoLTEuMDMybC43MjQtNC41ODNhLjU3LjU3IDAgMCAxIC41NjMtLjQ4MWguNDczYzEuMjM1IDAgMi40IDAgMy4wMDIuNzA0LjM1OS40Mi40NjkgMS4wNDQuMzMyIDEuOTA2ek02Ni42NTQgMTMuMDc1aC0zLjI3NWEuNTcuNTcgMCAwIDAtLjU2My40ODFsLS4xNDUuOTE2LS4yMjktLjMzMmMtLjcwOS0xLjAyOS0yLjI5LTEuMzczLTMuODY4LTEuMzczLTMuNjE5IDAtNi43MSAyLjc0MS03LjMxMiA2LjU4Ni0uMzEzIDEuOTE4LjEzMiAzLjc1MiAxLjIyIDUuMDMxLjk5OCAxLjE3NiAyLjQyNiAxLjY2NiA0LjEyNSAxLjY2NiAyLjkxNiAwIDQuNTMzLTEuODc1IDQuNTMzLTEuODc1bC0uMTQ2LjkxYS41Ny41NyAwIDAgMCAuNTYyLjY2aDIuOTVhLjk1Ljk1IDAgMCAwIC45MzktLjgwM2wxLjc3LTExLjIwOWEuNTY4LjU2OCAwIDAgMC0uNTYxLS42NTh6bS00LjU2NSA2LjM3NGMtLjMxNiAxLjg3MS0xLjgwMSAzLjEyNy0zLjY5NSAzLjEyNy0uOTUxIDAtMS43MTEtLjMwNS0yLjE5OS0uODgzLS40ODQtLjU3NC0uNjY4LTEuMzkxLS41MTQtMi4zMDEuMjk1LTEuODU1IDEuODA1LTMuMTUyIDMuNjctMy4xNTIuOTMgMCAxLjY4Ni4zMDkgMi4xODQuODkyLjQ5OS41ODkuNjk3IDEuNDExLjU1NCAyLjMxN3pNODQuMDk2IDEzLjA3NWgtMy4yOTFhLjk1NC45NTQgMCAwIDAtLjc4Ny40MTdsLTQuNTM5IDYuNjg2LTEuOTI0LTYuNDI1YS45NTMuOTUzIDAgMCAwLS45MTItLjY3OGgtMy4yMzRhLjU3LjU3IDAgMCAwLS41NDEuNzU0bDMuNjI1IDEwLjYzOC0zLjQwOCA0LjgxMWEuNTcuNTcgMCAwIDAgLjQ2NS45aDMuMjg3YS45NDkuOTQ5IDAgMCAwIC43ODEtLjQwOGwxMC45NDYtMTUuOGEuNTcuNTcgMCAwIDAtLjQ2OC0uODk1elwiLz5cbjxwYXRoIGZpbGw9XCIjMTc5QkQ3XCIgZD1cIk05NC45OTIgNi43NDloLTYuODRhLjk1Ljk1IDAgMCAwLS45MzguODAybC0yLjc2NiAxNy41MzdhLjU2OS41NjkgMCAwIDAgLjU2Mi42NThoMy41MWEuNjY1LjY2NSAwIDAgMCAuNjU2LS41NjJsLjc4NS00Ljk3MWEuOTUuOTUgMCAwIDEgLjkzOC0uODAzaDIuMTY0YzQuNTA2IDAgNy4xMDUtMi4xOCA3Ljc4NS02LjUuMzA3LTEuODkuMDEyLTMuMzc1LS44NzMtNC40MTUtLjk3MS0xLjE0Mi0yLjY5NC0xLjc0Ni00Ljk4My0xLjc0NnptLjc4OSA2LjQwNWMtLjM3MyAyLjQ1NC0yLjI0OCAyLjQ1NC00LjA2MiAyLjQ1NGgtMS4wMzFsLjcyNS00LjU4M2EuNTY4LjU2OCAwIDAgMSAuNTYyLS40ODFoLjQ3M2MxLjIzNCAwIDIuNCAwIDMuMDAyLjcwNC4zNTkuNDIuNDY4IDEuMDQ0LjMzMSAxLjkwNnpNMTE1LjQzNCAxMy4wNzVoLTMuMjczYS41NjcuNTY3IDAgMCAwLS41NjIuNDgxbC0uMTQ1LjkxNi0uMjMtLjMzMmMtLjcwOS0xLjAyOS0yLjI4OS0xLjM3My0zLjg2Ny0xLjM3My0zLjYxOSAwLTYuNzA5IDIuNzQxLTcuMzExIDYuNTg2LS4zMTIgMS45MTguMTMxIDMuNzUyIDEuMjE5IDUuMDMxIDEgMS4xNzYgMi40MjYgMS42NjYgNC4xMjUgMS42NjYgMi45MTYgMCA0LjUzMy0xLjg3NSA0LjUzMy0xLjg3NWwtLjE0Ni45MWEuNTcuNTcgMCAwIDAgLjU2NC42NmgyLjk0OWEuOTUuOTUgMCAwIDAgLjkzOC0uODAzbDEuNzcxLTExLjIwOWEuNTcxLjU3MSAwIDAgMC0uNTY1LS42NTh6bS00LjU2NSA2LjM3NGMtLjMxNCAxLjg3MS0xLjgwMSAzLjEyNy0zLjY5NSAzLjEyNy0uOTQ5IDAtMS43MTEtLjMwNS0yLjE5OS0uODgzLS40ODQtLjU3NC0uNjY2LTEuMzkxLS41MTQtMi4zMDEuMjk3LTEuODU1IDEuODA1LTMuMTUyIDMuNjctMy4xNTIuOTMgMCAxLjY4Ni4zMDkgMi4xODQuODkyLjUwMS41ODkuNjk5IDEuNDExLjU1NCAyLjMxN3pNMTE5LjI5NSA3LjIzbC0yLjgwNyAxNy44NThhLjU2OS41NjkgMCAwIDAgLjU2Mi42NThoMi44MjJjLjQ2OSAwIC44NjctLjM0LjkzOS0uODAzbDIuNzY4LTE3LjUzNmEuNTcuNTcgMCAwIDAtLjU2Mi0uNjU5aC0zLjE2YS41NzEuNTcxIDAgMCAwLS41NjIuNDgyelwiLz5cbjxwYXRoIGZpbGw9XCIjMjUzQjgwXCIgZD1cIk03LjI2NiAyOS4xNTRsLjUyMy0zLjMyMi0xLjE2NS0uMDI3SDEuMDYxTDQuOTI3IDEuMjkyYS4zMTYuMzE2IDAgMCAxIC4zMTQtLjI2OGg5LjM4YzMuMTE0IDAgNS4yNjMuNjQ4IDYuMzg1IDEuOTI3LjUyNi42Ljg2MSAxLjIyNyAxLjAyMyAxLjkxNy4xNy43MjQuMTczIDEuNTg5LjAwNyAyLjY0NGwtLjAxMi4wNzd2LjY3NmwuNTI2LjI5OGEzLjY5IDMuNjkgMCAwIDEgMS4wNjUuODEyYy40NS41MTMuNzQxIDEuMTY1Ljg2NCAxLjkzOC4xMjcuNzk1LjA4NSAxLjc0MS0uMTIzIDIuODEyLS4yNCAxLjIzMi0uNjI4IDIuMzA1LTEuMTUyIDMuMTgzYTYuNTQ3IDYuNTQ3IDAgMCAxLTEuODI1IDJjLS42OTYuNDk0LTEuNTIzLjg2OS0yLjQ1OCAxLjEwOS0uOTA2LjIzNi0xLjkzOS4zNTUtMy4wNzIuMzU1aC0uNzNjLS41MjIgMC0xLjAyOS4xODgtMS40MjcuNTI1YTIuMjEgMi4yMSAwIDAgMC0uNzQ0IDEuMzI4bC0uMDU1LjI5OS0uOTI0IDUuODU1LS4wNDIuMjE1Yy0uMDExLjA2OC0uMDMuMTAyLS4wNTguMTI1YS4xNTUuMTU1IDAgMCAxLS4wOTYuMDM1SDcuMjY2elwiLz5cbjxwYXRoIGZpbGw9XCIjMTc5QkQ3XCIgZD1cIk0yMy4wNDggNy42NjdjLS4wMjguMTc5LS4wNi4zNjItLjA5Ni41NS0xLjIzNyA2LjM1MS01LjQ2OSA4LjU0NS0xMC44NzQgOC41NDVIOS4zMjZjLS42NjEgMC0xLjIxOC40OC0xLjMyMSAxLjEzMkw2LjU5NiAyNi44M2wtLjM5OSAyLjUzM2EuNzA0LjcwNCAwIDAgMCAuNjk1LjgxNGg0Ljg4MWMuNTc4IDAgMS4wNjktLjQyIDEuMTYtLjk5bC4wNDgtLjI0OC45MTktNS44MzIuMDU5LS4zMmMuMDktLjU3Mi41ODItLjk5MiAxLjE2LS45OTJoLjczYzQuNzI5IDAgOC40MzEtMS45MiA5LjUxMy03LjQ3Ni40NTItMi4zMjEuMjE4LTQuMjU5LS45NzgtNS42MjJhNC42NjcgNC42NjcgMCAwIDAtMS4zMzYtMS4wM3pcIi8+XG48cGF0aCBmaWxsPVwiIzIyMkQ2NVwiIGQ9XCJNMjEuNzU0IDcuMTUxYTkuNzU3IDkuNzU3IDAgMCAwLTEuMjAzLS4yNjcgMTUuMjg0IDE1LjI4NCAwIDAgMC0yLjQyNi0uMTc3aC03LjM1MmExLjE3MiAxLjE3MiAwIDAgMC0xLjE1OS45OTJMOC4wNSAxNy42MDVsLS4wNDUuMjg5YTEuMzM2IDEuMzM2IDAgMCAxIDEuMzIxLTEuMTMyaDIuNzUyYzUuNDA1IDAgOS42MzctMi4xOTUgMTAuODc0LTguNTQ1LjAzNy0uMTg4LjA2OC0uMzcxLjA5Ni0uNTVhNi41OTQgNi41OTQgMCAwIDAtMS4wMTctLjQyOSA5LjA0NSA5LjA0NSAwIDAgMC0uMjc3LS4wODd6XCIvPlxuPHBhdGggZmlsbD1cIiMyNTNCODBcIiBkPVwiTTkuNjE0IDcuNjk5YTEuMTY5IDEuMTY5IDAgMCAxIDEuMTU5LS45OTFoNy4zNTJjLjg3MSAwIDEuNjg0LjA1NyAyLjQyNi4xNzdhOS43NTcgOS43NTcgMCAwIDEgMS40ODEuMzUzYy4zNjUuMTIxLjcwNC4yNjQgMS4wMTcuNDI5LjM2OC0yLjM0Ny0uMDAzLTMuOTQ1LTEuMjcyLTUuMzkyQzIwLjM3OC42ODIgMTcuODUzIDAgMTQuNjIyIDBoLTkuMzhjLS42NiAwLTEuMjIzLjQ4LTEuMzI1IDEuMTMzTC4wMSAyNS44OThhLjgwNi44MDYgMCAwIDAgLjc5NS45MzJoNS43OTFsMS40NTQtOS4yMjUgMS41NjQtOS45MDZ6XCIvPlxuPC9zdmc+YDtcbiJdLCJuYW1lcyI6WyJhZGRJY29uIiwiYWxpZ25tZW50XzEiLCJ0YWJsZV9jZWxsXzEiLCJ0aGlzIiwidW5kZWZpbmVkIiwiZ2xvYmFsIiwicmVxdWlyZSQkMCIsImxvZGFzaF8xIiwibmV2ZXJ0aHJvd18xIiwicmVzdWx0c18xIiwiYXN0X3V0aWxzXzEiLCJjYWxjXzEiLCJyb3dfMSIsImNvbHVtbl8xIiwicmVmZXJlbmNlXzEiLCJyYW5nZV8xIiwiU2VtYW50aWNIZWxwZXJzXzEiLCJXM0NFQk5GXzEiLCJDdXN0b21fMSIsImRpc3BsYXlfZGlyZWN0aXZlXzEiLCJkZXN0aW5hdGlvbiIsImRlc3RpbmF0aW9uXzEiLCJzaW5nbGVfcGFyYW1fZnVuY3Rpb25fMSIsImNvbmRpdGlvbmFsX2Z1bmN0aW9uXzEiLCJhbGdlYnJhaWNfb3BlcmF0aW9uXzEiLCJjb25zdGFudF8xIiwiZWJuZl8xIiwiZm9jdXNfMSIsInBvaW50XzEiLCJ0YWJsZV9yb3dfMSIsInRhYmxlXzEiLCJhbGlnbm1lbnQiLCJ0YWJsZSIsImZvcm1hdHRlcl8xIiwicGFyc2VyXzEiLCJyYW5nZSIsImVkaXRfc2NyaXB0XzEiLCJmb2N1cyIsImZvcm1hdHRlcl9qc18xIiwidGV4dF9lZGl0b3JfMSIsIm9wdGlvbnNfMSIsInRhYmxlX2VkaXRvcl8xIiwiRm9ybWF0VHlwZSIsIm9wdGlvbnNXaXRoRGVmYXVsdHMiLCJQb2ludCIsIkFsaWdubWVudCIsIlNvcnRPcmRlciIsIk5vdGljZSIsIk1URUVkaXRvciIsIk1vZGFsIiwiTWFya2Rvd25WaWV3IiwiSXRlbVZpZXciLCJQcmVjIiwia2V5bWFwIiwiUGx1Z2luIiwiU2V0dGluZyIsIlBsdWdpblNldHRpbmdUYWIiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ25DLElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxj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QUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN0RyxRQUFRLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUN0SCxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RSxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUFDRDtBQUNPLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDM0MsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JILElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sTUFBTSxLQUFLLFVBQVUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFdBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0osSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN0RSxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRTtBQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUN0RSxRQUFRLE9BQU8sQ0FBQyxFQUFFLElBQUk7QUFDdEIsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN6SyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEQsWUFBWSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekIsZ0JBQWdCLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU07QUFDOUMsZ0JBQWdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUN4RSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztBQUNqRSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUztBQUNqRSxnQkFBZ0I7QUFDaEIsb0JBQW9CLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDaEksb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxD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QUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQzlDLElBQUksSUFBSSxDQUFDO0FBQ1QsTUFBTSxDQUFDLEdBQUcsSUFBSTtBQUNkLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFDM0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEIsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVELEdBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDdEMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUc7QUFDdEIsTUFBTSxDQUFDLEdBQUcsSUFBSTtBQUNkLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2QsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdB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LENBQUMsQ0FBQztBQUN4RCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDckI7QUFDQTtBQUNBLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0QztBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3BDLE1BQU0sQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNkO0FBQ0E7QUFDQSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQzVFLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVCO0FBQ0E7QUFDQSxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9EO0FBQ0EsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFFBQVEsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFDckIsT0FBTyxNQUFNO0FBQ2IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFD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QUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUN4QixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQ3ZCLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUQsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUN0QixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDckI7QUFDQSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0M7QUFDQSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDcEIsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCO0FBQ0EsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNsQixHQUFHLENBQUM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLFlBQVk7QUFD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STtBQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDYixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNiLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFDM0I7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ2hDLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6RSxLQUFLO0FBQ0w7QUFDQSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDckI7QUFDQTtBQUNBLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QjtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUM5QixNQUFNLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDNUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFH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SSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDO0FBQ0E7QUFDQSxJQUFJLEtBQUssQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUc7QUFDN0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLE1BQU0sS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHO0FBQ2hDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ2pELFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFDOUIsUUFBUSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFDN0IsT0FBTztBQUNQO0FBQ0EsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDOUI7QUFDQSxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ25CLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNaLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEM7QUFDQSxJQUFJLE9BQU8sUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JFLEdBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDakMsSUFBSSxPQUFPLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMzQyxHQUFHLENBQUM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDakQsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJO0FBQ2hCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFDM0I7QUFDQSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQixJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hDO0FBQ0EsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNsQztBQUNBLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDMUMsU0FBUyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QjtBQUNBLElBQUksT0FBTyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN6QyxHQUFHLENBQUM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsQ0FBQyxDQUFDLGFBQWEsR0FBRyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDdEMsSUFBSSxJQUFJLEdBQUc7QUFDWCxNQUFNLENBQUMsR0FBRyxJQUFJO0FBQ2QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztBQUMzQjtBQUNBLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUU7QUFDdkIsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwQyxLQUFLLE1BQU07QUFDWCxNQUFNLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3BDO0FBQ0EsTUFBTSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUM1QyxXQUFXLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hDO0FBQ0EsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDNUMsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVDLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEQsR0FBRyxDQUFDO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUNoQyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7QUFDZCxNQUFNLENBQUMsR0FBRyxJQUFJO0FBQ2QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztBQUMzQjtBQUNBLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUU7QUFDdkIsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLEtBQUssTUFBTTtBQUNYLE1BQU0sVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDcEM7QUFDQSxNQUFNLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQzVDLFdBQVcsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEM7QUFDQSxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25ELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3RELEdBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxDQUFDLENBQUMsVUFBVSxHQUFHLFVBQVUsSUFBSSxFQUFFO0FBQ2pDLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDaEQsTUFBTSxDQUFDLEdBQUcsSUFBSTtBQUNkLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztBQUMzQjtBQUNBLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDO0FBQ0EsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQjtBQUNBLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDckIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25EO0FBQ0EsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7QUFDdEI7QUFDQTtBQUNBLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM1QixLQUFLLE1BQU07QUFDWCxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QixNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzVDLEtBQUs7QUFDTDtBQUNBLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztBQUNyQixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ3hCLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ2xEO0FBQ0EsSUFBSSxVQUFVO0FBQ2QsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoQyxNQUFNLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTTtBQUNuQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDZCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDZCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDZCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDZCxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDYixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDYixLQUFLO0FBQ0w7QUFDQSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3QyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCO0FBQ0E7QUFDQSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztBQUN4RixVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUN4QixJ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QyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3RTtBQUNBLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDMUI7QUFDQSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ3hCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDdkI7QUFDQSxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzVDO0FBQ0E7QUFDQSxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztBQUNsQztBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssZ0JBQWdCLEVBQUU7QUFDNUUsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pDLE1BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDaEUsS0FBSztBQUNMO0FBQ0EsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNaO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNmO0FBQ0E7QUFDQSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25EO0FBQ0E7QUFDQSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQztBQUNBO0FBQ0EsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtBQUN0RCxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLFFBQVEsT0FBTyxDQUFDLENBQUM7QUFDakIsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQzlCLFFBQVEsU0FBUyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElB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SUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLElBQUksRUFBRSxJQUFJLEtBQUssSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JGLE9BQU8sTUFBTTtBQUNiLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDL0QsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUM3RCxZQUFZLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZFLE9BQU87QUFDUCxLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNqQixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFDdkMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDO0FBQ3RGLE9BQU8sTUFBTTtBQUNiLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDakQsUUFBUSxDQUFDLENBQUMsU0FBUyxJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNqRCxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxDQUFDLENBQUM7QUFDYixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7QUFDN0MsSUFBSSxJQUFJLENBQUM7QUFDVCxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNmLE1BQU0sSUFBSTtBQUNWLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDWCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQ3hCO0FBQ0EsSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUc7QUFDdEIsTUFBTSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUM7QUFDM0QsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsRCxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxRQUFRLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLEVBQUU7QUFDbEMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEQsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQzdDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUM1QixTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDekIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0FBQzNCLElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNsQjtBQUNBLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3JCLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxFQUFFO0FBQ2xCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDekMs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QyxJQUFJLElBQUksV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRztBQUMvQyxNQUFNLEdBQUcsR0FBRyxDQUFDO0FBQ2IsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUNYLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDWCxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVztBQUMxQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUTtBQUN4QixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQzFCO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtBQUNyQztBQUNBLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0FBQzNDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6QyxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtBQUNwQixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDdkIsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ2YsS0FBSyxNQUFNO0FBQ1gsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ2YsS0FBSztBQUNMO0FBQ0EsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDMUI7QUFDQTtBQUNBLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQ3JCO0FBQ0E7QUFDQSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNiLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVELElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQztBQUNqQixJQUFJLFdBQVcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7QUFDekI7QUFDQSxJQUFJLFNBQVM7QUFDYixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0MsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckQ7QUFDQSxNQUFNLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtBQUNyRixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFRLE9BQU8sQ0FBQyxFQUFFLEVBQUUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtBQUN4QjtBQUNBLFVBQVUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0UsWUFBWSxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsSUFBSSxFQUFFLENBQUM7QUFDdkMsWUFBWSxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEIsWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUNsQixXQUFXLE1BQU07QUFDakIsWUFBWSxPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMzRSxXQUFXO0FBQ1gsU0FBUyxNQUFNO0FBQ2YsVUFBVSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUM5QixVQUFVLE9BQU8sR0FBRyxDQUFDO0FBQ3JCLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDZCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtBQUNuQyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDbEUsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUNYLE1BQU0sS0FBSyxHQUFHLEVBQUU7QUFDaEIsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUNYLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVc7QUFDMUIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVE7QUFDeEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUMxQjtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQzFFLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNFLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO0FBQ3BCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQztBQUN2QixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDZixLQUFLLE1BQU07QUFDWCxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDZixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQztBQUNsQyxJQUFJLENBQUMsR0FBRyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQjtBQUNBLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUM5RCxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLFFBQVEsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixRQUFRLENBQUMsRUFBRSxDQUFDO0FBQ1osT0FBTztBQUNQO0FBQ0EsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNkO0FBQ0EsTUFBTSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDbEIsUUFBUSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQy9CLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDWixPQUFPLE1BQU07QUFDYixRQUFRLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QyxPQUFPO0FBQ1AsS0FBSyxNQUFNO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNuRCxNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pGLE1BQU0sSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDMUI7QUFDQSxNQUFNLE9BQU8sRUFBRSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuRSxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxHQUFHLEdBQUcsU0FBUyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoRSxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxTQUFTO0FBQ2IsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hELE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRTtBQUNBLE1BQU0sSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO0FBQ3JGLFFBQVEsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5RSxRQUFRLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO0FBQ3hCLFVBQVUsSUFBSSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFO0FBQ2hFLFlBQVksSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDO0FBQzFDLFlBQVksQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDeEUsWUFBWSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlDLFlBQVksV0FBVyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDbEMsV0FBVyxNQUFNO0FBQ2pCLFlBQVksT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDM0UsV0FBVztBQUNYLFNBQVMsTUFBTTtBQUNmLFVBQVUsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDOUIsVUFBVSxPQUFPLEdBQUcsQ0FBQztBQUNyQixTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsTUFBTSxXQUFXLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLGlCQUFpQixDQUFDLENBQUMsRUFBRTtBQUNoQztBQUNBLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLFlBQVksQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFO0FBQ2hDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztBQUNsQjtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hFO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDcEM7QUFDQTtBQUNBLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3QixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoQyxLQUFLLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCO0FBQ0E7QUFDQSxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQ3JCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztBQUNBO0FBQ0EsSUFBSSxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2xFLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsSUFBSSxJQUFJLEdBQUcsRUFBRTtBQUNiLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNmLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDO0FBQzdCLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUM7QUFDL0I7QUFDQSxNQUFNLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRTtBQUNuQixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQyxRQUFRLEtBQUssR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDL0UsUUFBUSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixRQUFRLENBQUMsR0FBRyxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUNsQyxPQUFPLE1BQU07QUFDYixRQUFRLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxPQUFPLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUM7QUFDOUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCO0FBQ0EsTUFBTSxJQUFJLFFBQVEsRUFBRTtBQUNwQjtBQUNBO0FBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUU7QUFDdEM7QUFDQTtBQUNBLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckIsVUFBVSxDQUFDLENBQUMsQ0FB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QUFDLENBQUM7QUFDcEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEI7QUFDQSxJQUFJLFNBQVM7QUFDYixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxRCxNQUFNLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEI7QUFDQSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRTtBQUM3QixRQUFRLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMvQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLE1BQU07QUFDM0IsT0FBTztBQUNQO0FBQ0EsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRVosS0FBSztBQUNMO0FBQ0EsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QjtBQUNBLElBQUksT0FBTyxDQUFDLENBQUM7QUFDYixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3pCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsSUFBSSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkIsSUFBSSxPQUFPLENBQUMsQ0FBQztBQUNiLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtBQUNyQyxJQUFJLElBQUksQ0FBQztBQUNULE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNyQixNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0I7QUFDQSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDaEI7QUFDQSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUN2QixNQUFNLFFBQVEsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQixNQUFNLE9BQU8sQ0FBQyxDQUFDO0FBQ2YsS0FBSztBQUNMO0FBQ0EsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2QjtBQUNBLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7QUFDcEIsTUFBTSxRQUFRLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsS0FBSyxNQUFNO0FBQ1gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0I7QUFDQTtBQUNBLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ3pCLFFBQVEsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLFFBQVEsT0FBTyxDQUFDLENBQUM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUQsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDN0IsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLGNBQWMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDOUMsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUMvQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVztBQUMxQixNQUFNLEtBQUssR0FBRyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUM7QUFDNUI7QUFDQSxJQUFJLElBQUksS0FBSyxFQUFFO0FBQ2YsTUFBTSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNwQyxNQUFNLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQzVDLFdBQVcsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEMsS0FBSyxNQUFNO0FBQ1gsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUMxQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQ3pCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtBQUN2QixNQUFNLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxLQUFLLE1BQU07QUFDWCxNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLElBQUksS0FBSyxFQUFFO0FBQ2pCLFFBQVEsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNqQixRQUFRLElBQUksT0FBTyxJQUFJLEVBQUUsRUFBRTtBQUMzQixVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQixTQUFTLE1BQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFO0FBQ2pDLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLFNBQVM7QUFDVCxPQUFPLE1BQU07QUFDYixRQUFRLElBQUksR0FBRyxPQUFPLENBQUM7QUFDdkIsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNsQixRQUFRLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuQyxRQUFRLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QixRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDN0IsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZELFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN6QixPQUFPO0FBQ1A7QUFDQSxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0QyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUMxQjtBQUNBO0FBQ0EsTUFBTSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDdkM7QUFDQSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDbEIsUUFBUSxHQUFHLEdBQUcsS0FBSyxHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUM7QUFDbkMsT0FBTyxNQUFNO0FBQ2IsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDbkIsVUFBVSxDQUFDLEVBQUUsQ0FBQztBQUNkLFNBQVMsTUFBTTtBQUNmLFVBQVUsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDbkIsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixVQUFVLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM1QyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsVUFBVSxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQzVCLFNBQVM7QUFDVDtBQUNBO0FBQ0EsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ25CLFFBQVEsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFDckIsUUFBUSxPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7QUFDbkQ7QUFDQSxRQUFRLE9BQU8sR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUN4QixZQUFZLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLE9BQU8sTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0UsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxPQUFPLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDbEYsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEM7QUFDQSxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCO0FBQ0EsUUFBUSxJQUFJLE9BQU8sRUFBRTtBQUNyQjtBQUNBO0FBQ0EsVUFBVSxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRztBQUN6QyxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsWUFBWSxJQUFJLENBQUMsRUFBRSxFQUFFO0FBQ3JCLGNBQWMsRUFBRSxDQUFDLENBQUM7QUFDbEIsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLGFBQWE7QUFDYixXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbkQ7QUFDQTtBQUNBLFFBQVEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRTtBQUNBO0FBQ0EsUUFBUSxJQUFJLEtBQUssRUFBRTtBQUNuQixVQUFVLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRTtBQUN2QixZQUFZLElBQUksT0FBTyxJQUFJLEVBQUUsSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFO0FBQy9DLGNBQWMsQ0FBQyxHQUFHLE9BQU8sSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4QyxjQUFjLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDO0FBQ3JELGNBQWMsRUFBRSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25ELGNBQWMsS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN6RDtBQUNBO0FBQ0EsY0FBYyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLGFBQWEsTUFBTTtBQUNuQixjQUFjLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELGFBQWE7QUFDYixXQUFXO0FBQ1g7QUFDQSxVQUFVLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hELFNBQVMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDMUIsVUFBVSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3ZDLFVBQVUsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7QUFDM0IsU0FBUyxNQUFNO0FBQ2YsVUFBVSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQztBQUMxRCxlQUFlLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkUsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsR0FBRyxJQUFJLEdBQUcsT0FBTyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsT0FBTyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQztBQUMxRixLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDckMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUM5QixJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7QUFDMUIsTUFBTSxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUN2QixNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQ2xCLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM3QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQ25CLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM5QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDcEIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQy9CLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNyQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUNuQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDOUIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQ3BCLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMvQixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDbkIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzlCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUNwQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDL0IsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQixJQUFJLElBQUksQ0FBQztBQUNULE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTO0FBQ3pCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRO0FBQ3hCLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbkI7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3RCLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCO0FBQ0E7QUFDQSxLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzdCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDM0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEI7QUFDQTtBQUNBLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7QUFDbkMsTUFB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T0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDMUIsSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUMxQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLElBQUksT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDeEIsSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUMxQixJQUFJLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3RCLElBQUksT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDeEIsSUFBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUN0QixJQUFJLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3RCLElBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDMUIsSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUMxQixJQUFJLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLElBQUksT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEIsSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUMxQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLElBQUksT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEIsSUFBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUN0QixJQUFJLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3RCLElBQUksT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEIsSUFBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUN0QixJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQzVCLElBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDMUIsSUFB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QUMsQ0FBQyxDQUFDLEVBQUU7QUFDaEIsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDakIsVUFBVSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzFCLFVBQVUsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakMsU0FBUztBQUNULFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNkLE9BQU8sTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDdEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQztBQUNwQjtBQUNBLElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDcEIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNsQyxJQUFJLE9BQU8sR0FBRyxZQUFZLE9BQU8sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDO0FBQzdFLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUNqQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDNUIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNyQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUNuQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUNwQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLEdBQUcsR0FBRztBQUNqQixJQUFJLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDM0MsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQ2pCLElBQUksT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMzQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDckIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDckIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDckIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsTUFBTSxDQUFDLEVBQUUsRUFBRTtBQUN0QixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNsQixNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ1gsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNkO0FBQ0EsSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUMzQyxTQUFTLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3ZDO0FBQ0EsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7QUFDakM7QUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3RCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZEO0FBQ0E7QUFDQSxLQUFLLE1BQU0sSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFF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S0FBSyxDQUFDO0FBQ3JCLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxPQUFPLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdEQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQ2xCLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM3QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDbkIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzlCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDcEIsSUFBSSxPQUFPLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEVBQUUsT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM1QixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztBQUMxQyxFQUFFLE9BQU8sQ0FB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QUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUM5RSxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDOUUsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUMvRCxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQy9ELElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDL0QsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQzlFLElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUM5RSxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUc7QUFDakMsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDaEQsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQzlFLElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUM5RSxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQy9ELElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDL0QsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDaEQsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDaEQsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDaEQsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDaEQsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUMvRCxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQy9ELElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQ2hELElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQ2hELElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUs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TSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDeEMsTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pELE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkUsS0FBSztBQUNMLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxlQUFlLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0FBQ2pFLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLFFBQVEsTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDbEQ7QUFDQSxJQUFJLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQzdCLE1BQU0sSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLE1BQU0sTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pELEtB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QUcsTUFBTSxFQUFFO0FBQzdCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0RSxLQUFLO0FBQ0wsSUFBSSxPQUFPLFdBQVcsQ0FBQztBQUN2QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFO0FBQ3JFLElBQUksSUFBSSxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNsRCxJQUFJLElBQUksU0FBUyxJQUFJLE1BQU0sRUFBRTtBQUM3QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwQyxLQUFLO0FBQ0wsSUFBSSxPQUFPLE1BQU0sRUFBRSxFQUFFO0FBQ3JCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN4RSxLQUFLO0FBQ0wsSUFBSSxPQUFPLFdBQVcsQ0FBQztBQUN2QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRTtBQUN2QyxJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNsQixRQUFRLE1BQU0sR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2xEO0FBQ0EsSUFBSSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUM3QixNQUFNLElBQUksU0FBUyxD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QUFLLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQztBQUNBLE1BQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO0FBQ3JCLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsT0FBTztBQUNQLE1BQU0sSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDdEMsTUFBTSxJQUFJLEtBQUssSUFBSSxTQUFTLEVBQUU7QUFDOUIsUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDbkIsT0FBTyxNQUFNO0FBQ2IsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEMsT0FBTztBQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ2xCLE1BQU0sT0FBTyxJQUFJLENBQUM7QUFDbEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFlBQVksQ0FBQyxHQUFHLEVBQUU7QUFDL0IsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUTtBQUM5QixVQUFVLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsTUFBTSxPQUFPLEtBQUssR0FBRyxDQUFDLEdBQUdBLFdBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFlBQVksQ0FBQyxHQUFHLEVBQUU7QUFDL0IsTUFBTSxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25ELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUssQ0FBQyxPQUFPLEVBQUU7QUFDNUIsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3hELE1BQU0sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzVCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFVBQVUsR0FBRztBQUMxQixNQUFNLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxTQUFTLENBQUM7QUFDcEMsTUFBTSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNwQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUM5QixNQUFNLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRO0FBQzlCLFVBQVUsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QztBQUNBLE1BQU0sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzVCLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxHQUFHLEVBQUU7QUFDM0IsTUFBTSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxRQUFRLENBQUMsR0FBRyxFQUFFO0FBQzNCLE1BQU0sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FB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R0FBRyxFQUFFLENBQUM7QUFDdEI7QUFDQSxNQUFNLEtBQUssSUFBSSxHQUFHLElBQUksTUFBTSxFQUFFO0FBQzlCLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxhQUFhLEtBQUssT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3ZGLFVBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixTQUFTO0FBQ1QsT0FBTztBQUNQLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQ2xDLE1BQU0sT0FBTyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzNCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUU7QUFDM0MsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsVUFBVSxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzNFO0FBQ0EsTUFBTSxRQUFRLENBQUMsVUFBVSxFQUFFLFNBQVMsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7QUFDNUQsUUFBUSxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUMzRCxPQUFPLENBQUMsQ0FBQztBQUNULE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNB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TUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEYsT0FBTyxDQUFDO0FBQ1IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFO0FBQzlCLE1BQU0sT0FBTyxXQUFXO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDO0FBQzdCLFFBQVEsUUFBUSxJQUFJLENBQUMsTUFBTTtBQUMzQixVQUFVLEtBQUssQ0FBQyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUM7QUFDbEMsVUFBVSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLFVBQVUsS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsVUFBVSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsVUFBVSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLFVBQVUsS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0UsVUFBVSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEYsVUFBVSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pHLFNBQVM7QUFDVCxRQUFRLElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ3BELFlBQVksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLFFBQVEsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxHQUFHLFdBQVcsQ0FBQztBQUN2RCxPQUFPLENBQUM7QUFDUixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO0FBQy9DLE1BQU0sSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDO0FB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QUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO0FBQzNELFVBQVUsRUFBRSxDQUFDO0FBQ2IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQzVDLE1BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNwRCxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDbkIsUUFBUSxPQUFPLEVBQUUsQ0FBQztBQUNsQixPQUFPO0FBQ1AsTUFBTSxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssSUFBSSxRQUFRLElBQUksY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7QUFDcEYsUUFBUSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLFFBQVEsR0FBRyxHQUFHLE1BQU0sQ0FBQztBQUNyQixPQUFPO0FBQ1AsTUFBTSxPQUFPLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNoRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRTtBQUNwRCxNQUFNLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDcEQsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ25CLFFBQVEsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNsQixPQUFPO0FBQ1AsTUFBTSxJQUFJLEtBQUssR0FBRyxTQUFTLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDL0QsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7QUFDckIsUUFBUSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0MsT0FBTztBQUNQLE1BQU0sT0FBTyxhQUFhLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDcEUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxhQUFhLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUU7QUFDeEQsTUFBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3BELE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNuQixRQUFRLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDbEIsT0FBTztBQUNQLE1BQU0sSUFBSSxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUM3QixNQUFNLElBQUksU0FBUyxLQUFLQSxXQUFTLEVBQUU7QUFDbkMsUUFBUSxLQUFLLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3JDLFFBQVEsS0FBSyxHQUFHLFNBQVMsR0FBRyxDQUFDO0FBQzdCLFlBQVksU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3hDLFlBQVksU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDekMsT0FBTztBQUNQLE1BQU0sT0FBTyxhQUFhLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRTtBQUM1QixNQUFNLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDcEQsTUFBTSxPQUFPLE1BQU0sR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNqRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUU7QUFDaEMsTUFBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3BELE1BQU0sT0FBTyxNQUFNLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDeEQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUN4QyxNQUFNLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDcEQsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ25CLFFBQVEsT0FBTyxFQUFFLENBQUM7QUFDbEIsT0FBTztBQUNQLE1BQU0sS0FBSyxHQUFHLEtBQUssS0FBS0EsV0FBUyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekQsTUFBTSxPQUFPLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUU7QUFDOUIsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsVUFBVSxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU07QUFDbkQsVUFBVSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3RCO0FBQ0EsTUFBTSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUMvQixRQUFRLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQyxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEMsT0FBTztBQUNQLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDekIsTUFBTSxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFTLENBQUM7QUFDNUQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7QUFDOUMsTUFBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3BELE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNuQixRQUFRLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDbEIsT0FBTztBQUNQLE1BQU0sSUFBSSxLQUFLLEdBQUcsU0FBUyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQy9ELE1BQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO0FBQ3JCLFFBQVEsS0FBSyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdDLE9BQU87QUFDUCxNQUFNLE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzVCLE1BQU0sSUFBSSxNQUFN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SUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU07QUFDOUQsVUFBVSxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztBQUNwQyxVQUFVLEtBQUssQ0FBQztBQUNoQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtBQUNoRCxNQUFNLE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU07QUFDOUQsVUFBVSxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlELFVBQVUsS0FBSyxDQUFDO0FBQ2hCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO0FBQ3BELE1BQU0sT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTTtBQUM5RCxVQUFVLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFQSxXQUFTLEVBQUUsVUFBVSxDQUFDO0FBQzNELFVBQVUsS0FBSyxDQUFDO0FBQ2hCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLFNBQVMsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUNuRCxNQUFNLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNO0FBQ25ELFVBQVUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDMUM7QUFDQSxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxTQUFTLEtBQUssRUFBRTtBQUMxRCxRQUFRLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDdkQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztBQUNqQztBQUNBLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFO0FBQ3RDLE1BQU0sSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLE1BQU0sSUFBSSxFQUFFLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEMsUUFBUSxPQUFPLE1BQU0sQ0FBQztBQUN0QixPQUFPO0FBQ1AsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsVUFBVSxPQUFPLEdBQUcsRUFBRTtBQUN0QixVQUFVLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2hDO0FBQ0EsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxNQUFNLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQy9CLFFBQVEsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLFFBQVEsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtBQUM1QyxVQUFVLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0IsVUFBVSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLFNBQVM7QUFDVCxPQUFPO0FBQ1AsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pDLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzVCLE1BQU0sT0FBTyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9ELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUN0QyxNQUFNLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDcEQsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ25C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QUFXLEdBQUcsVUFBVSxDQUFDO0FBQ2hFLE1BQU0sT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLFFBQVEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUU7QUFDM0MsTUFBTSxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUU7QUFDL0MsTUFBTSxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzlELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxZQUFZLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7QUFDdkQsTUFBTSxLQUFLLEdBQUcsS0FBSyxLQUFLQSxXQUFTLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6RCxNQUFNLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDM0QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFO0FBQzNDLE1BQU0sSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFNBQVMsR0FBRyxRQUFRLENBQUM7QUFDNUQsTUFBTSxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsWUFBWSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUU7QUFDaEQsTUFBTSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsY0FBYyxHQUFHLGFBQWEsQ0FBQztBQUN0RSxNQUFNLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUNoRSxNQUFNLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDNUMsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLE9BQU8sTUFBTTtBQUNiLFFBQVEsZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzlDLE9BQU87QUFDUCxLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7QUFDM0QsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDN0UsTUFBTSxTQUFTLEdBQUcsQ0FBQyxTQUFTLElBQUksQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuRTtBQUNBLE1BQU0sSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxNQUFNLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRTtBQUN6QixRQUFRLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyRCxPQUFPO0FBQ1AsTUFBTSxPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUM7QUFDakMsV0FBVyxTQUFTLElBQUksTUFBTSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzRSxXQUFXLENBQUMsQ0FBQyxNQUFNLElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUM5RCxNQUFNLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNwQixVQUFVLE1BQU0sR0FBRyxPQUFPLElBQUksSUFBSSxVQUFVO0FBQzVDLFVBQVUsTUFBTSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMzRTtBQUNBLE1BQU0sUUFBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLEtBQUssRUFBRTtBQUMzQyxRQUFRLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM1RixPQUFPLENBQUMsQ0FBQztBQUNULE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQzlELE1BQU0sZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUMsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRTtBQUN2QyxNQUFNLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQzFELE1BQU0sT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE9BQU8sQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFDM0QsTUFBTSxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7QUFDOUIsUUFBUSxPQUFPLEVBQUUsQ0FBQztBQUNsQixPQUFPO0FBQ1AsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO0FBQy9CLFFBQVEsU0FBUyxHQUFHLFNBQVMsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekQsT0FBTztBQUNQLE1BQU0sTUFBTSxHQUFHLEtBQUssR0FBR0EsV0FBUyxHQUFHLE1BQU0sQ0FBQztBQUMxQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDNUIsUUFBUSxNQUFNLEdBQUcsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRCxPQUFPO0FBQ1AsTUFBTSxPQUFPLFdBQVcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3hELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUNsRSxNQUFNLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0QyxLQUFLLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7QUFDdkQsTUFBTSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsV0FBVyxHQUFHLFVBQVU7QUFDL0QsVUFBVSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDM0M7QUFDQSxNQUFNLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUYsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0FBQzVELE1BQU0sSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLGdCQUFnQixHQUFHLFVB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQ3ZDLE1BQU0sS0FBSyxHQUFHLEtBQUssR0FBR0EsV0FBUyxHQUFHLEtBQUssQ0FBQztBQUN4QyxNQUFNLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFQSxXQUFTLEVBQUVBLFdBQVMsRUFBRUEsV0FBUyxFQUFFQSxXQUFTLEVBQUVBLFdBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuSCxNQUFNLE1BQU0sQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztBQUM3QyxNQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQzVDLE1BQU0sS0FBSyxHQUFHLEtBQUssR0FBR0EsV0FBUyxHQUFHLEtBQUssQ0FBQztBQUN4QyxNQUFNLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUVBLFdBQVMsRUFBRUEsV0FBUyxFQUFFQSxXQUFTLEVBQUVBLFdBQVMsRUFBRUEsV0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pILE1BQU0sTUFBTSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDO0FBQ2xE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QUFTO0FBQ1QsUUFBUSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUMsT0FBTyxDQUFDO0FBQ1IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDeEIsTUFBTSxPQUFPLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksRUFBRSxVQUFVLEVBQUU7QUFDdkQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLFVBQVUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUMzRCxVQUFVLFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekU7QUFDQSxNQUFNLElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7QUFDMUMsTUFBTSxPQUFPLFFBQVEsQ0FBQyxTQUFTLElBQUksRUFBRTtBQUNyQyxRQUFRLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUN0QixZ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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUMzQyxNQUFNLElBQUksT0FBTyxHQUFHLElBQUk7QUFDeEIsVUFBVSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzFCO0FBQ0EsTUFBTSxJQUFJLE9BQU8sSUFBSSxJQUFJLFVBQVUsRUFBRTtBQUNyQyxRQUFRLE1BQU0sSUFBSSxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDN0MsT0FBTztBQUNQLE1BQU0sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDN0IsUUFBUSxPQUFPLEdBQUcsU0FBUyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDckUsUUFBUSxRQUFRLEdBQUcsVUFBVSxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7QUFDekUsT0FBTztBQUNQLE1BQU0sT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtBQUNsQyxRQUFRLFNBQVMsRUFBRSxPQUFPO0FBQzFCLFFBQVEsU0FBUyxFQUFFLElBQUk7QUFDdkIsUUFBUSxVQUFVLEVBQUUsUUFBUTtBQUM1QixPQUFPLENBQUMsQ0FBQztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxLQUFLLENBQUMsSUFBSSxFQUFFO0FBQ3pCLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDeEMsTUFBTSxPQUFPLE1BQU0sSUFBSSxJQUFJLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDNUUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUM5QixNQUFNLE9BQU8sS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztBQUNyRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEVBQUUsR0FBRyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksR0FBRyxHQUFHLHlCQUF5QixDQUFDLFNBQVMsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUMv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RyxJQUFJLE1BQU0sRUFBRTtBQUMxQyxRQUFRLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQzNCLE9BQU87QUFDUCxNQUFNLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzlCLFFBQVEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDdkMsT0FBTztBQUNQLE1BQU0sS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUU7QUFDN0IsUUFBUSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO0FBQzdDLFVBQVUsT0FBTyxLQUFLLENBQUM7QUFDdkIsU0FBUztBQUNULE9BQU87QUFDUCxNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQ25DLE1BQU0sT0FBTyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO0FBQ25ELE1BQU0sVUFBVSxHQUFHLE9BQU8sVUFBVSxJQUFJLFVBQVUsR0FBRyxVQUFVLEdBQUdBLFdBQVMsQ0FBQztBQUM1RSxNQUFNLElBQUksTUFBTSxHQUFHLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHQSxXQUFTLENBQUM7QUFDckUsTUFBTSxPQUFPLE1BQU0sS0FBS0EsV0FBUyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFQSxXQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNoRyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRTtBQUM1QixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDaEMsUUFBUSxPQUFPLEtBQUssQ0FBQztBQUNyQixPQUFPO0FBQ1AsTUFBTSxJQUFJLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxRQUFRLElBQUksR0FBRyxJQUFJLFNBQVM7QUFDaEQsU0FBUyxPQUFPLEtBQUssQ0FBQyxPQUFPLElBQUksUUFBUSxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksSUFBSSxRQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNyRyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBTSxPQUFPLE9BQU8sS0FBSyxJQUFJLFFBQVEsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFO0FBQy9CLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUM1QixRQUFRLE9BQU8sS0FBSyxDQUFDO0FBQ3JCLE9BQU87QUFDUDtBQUNBO0FBQ0EsTUFBTSxJQUFJLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLElBQUksR0FBRyxJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUM7QUFDbkYsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFO0FBQzlCLE1BQU0sT0FBTyxPQUFPLEtBQUssSUFBSSxRQUFRLElBQUksS0FBSyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBTSxPQUFPLE9BQU8sS0FBSyxJQUFJLFFBQVE7QUFDckMsUUFBUSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLGdCQUFnQixDQUFDO0FBQ2xFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBTSxJQUFJLElBQUksR0FBRyxPQUFPLEtBQUssQ0FBQztBQUM5QixNQUFNLE9BQU8sS0FBSyxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksSUFBSSxVQUFVLENBQUMsQ0FBQztBQUN2RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsWUFBWSxDQUFDLEtBQUssRUFBRTtBQUNqQyxNQUFNLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxPQUFPLEtBQUssSUFBSSxRQUFRLENBQUM7QUFDdkQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNyQyxNQUFNLE9BQU8sTUFBTSxLQUFLLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNwRixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRTtBQUNyRCxNQUFNLFVBQVUsR0FBRyxPQUFPLFVBQVUsSUFBSSxVQUFVLEdBQUcsVUFBVSxHQUFHQSxXQUFTLENBQUM7QUFDNUUsTUFBTSxPQUFPLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUMzRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLE1BQU0sT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ2hELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRTtBQUM3QixNQUFNLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzdCLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUN6QyxPQUFPO0FBQ1AsTUFBTSxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqQyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUU7QUFDM0IsTUFBTSxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUM7QUFDNUIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFO0FBQzFCLE1BQU0sT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDO0FBQzNCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRTtBQUM3QixNQUFNLE9BQU8sT0FBTyxLQUFLLElBQUksUUFBUTtBQUNyQyxTQUFTLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUM7QUFDaEUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLGNBQWMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDM0QsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNqRCxLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxZQUFZLEdBQUcsY0FBYyxDQUFDLFNBQVMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFO0FBQ3JGLE1BQU0sVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzdELEtBQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxVQUFVLEdBQUcsY0FBYyxDQUFDLFNBQVMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFO0FBQ25GLE1BQU0sVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzNELEtBQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxNQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRTtBQUMzQyxNQUFNLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QyxNQUFNLE9BQU8sVUFBVSxJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUMxRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLE1BQU0sRUFBRSxPQUFPLEVBQUU7QUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyQixNQUFNLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDbEMsTUFBTSxJQUFJLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxD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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDckMsTUFBTSxPQUFPLE1BQU0sSUFBSSxJQUFJO0FBQzNCLFVBQVUsTUFBTTtBQUNoQixVQUFVLE9BQU8sQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM1RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFO0FBQzFDLE1BQU0sT0FBTyxNQUFNLElBQUksSUFBSTtBQUMzQixVQUFVLE1BQU07QUFDaEIsVUFBVSxZQUFZLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDakUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDdEMsTUFBTSxPQUFPLE1BQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFO0FBQzNDLE1BQU0sT0FBTyxNQUFNLElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxTQUFTLENBQUMsTUFBTSxFQUFFO0FBQy9CLE1BQU0sT0FBTyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRTtBQUNqQyxNQUFNLE9BQU8sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN6RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7QUFDN0MsTUFBTSxJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksSUFBSSxHQUFHQSxXQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0RSxNQUFNLE9BQU8sTUFBTSxLQUFLQSxXQUFTLEdBQUcsWUFBWSxHQUFHLE1BQU0sQ0FBQztBQUMxRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUU7QUFDL0IsTUFBTSxPQUFPLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDOUQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtBQUNqQyxNQUFNLE9BQU8sTUFBTSxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNoRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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O0FBQ3RCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUM7QUFDQSxNQUFNLFVBQVUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtBQUN0RCxRQUFRLGVBQWUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckUsT0FBTyxDQUFDLENBQUM7QUFDVCxNQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFO0FBQ3pDLE1BQU0sSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUM7QUFDQSxNQUFNLFVBQVUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtBQUN0RCxRQUFRLGVBQWUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDbkUsT0FBTyxDQUFDLENBQUM7QUFDVCxNQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxjQUFjLENBQUMsU0FBUyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtBQUNsRSxNQUFNLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzFDLEtBQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsY0FBYyxDQUFDLFNBQVMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFO0FBQ2xGLE1BQU0sU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3RELEtBQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsU0FBUyxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQ2hELE1BQU0sSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQzFCLFFBQVEsT0FBTyxNQUFNLENBQUM7QUFDdEIsT0FBTztBQUNQLE1BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxJQUFJLEVBQUU7QUFDN0MsUUFBUSxJQUFJLEdBQUcsUUFB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QUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO0FBQ3RELE1BQU0sVUFBVSxHQUFHLE9BQU8sVUFBVSxJQUFJLFVBQVUsR0FBRyxVQUFVLEdBQUdBLFdBQVMsQ0FBQztBQUM1RSxNQUFNLE9BQU8sTUFBTSxJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ2hGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxPQUFPLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLFNBQVMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0FBQ3RELE1BQU0sSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUNqQyxVQUFVLFNBQVMsR0FBRyxLQUFLLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4RTtBQUNBLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUMsTUFBTSxJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUU7QUFDL0IsUUFBUSxJQUFJLElBQUksR0FBRyxNQUFNLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQztBQUNoRCxRQUFRLElBQUksU0FBUyxFQUFFO0FBQ3ZCLFVBQVUsV0FBVyxHQUFHLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7QUFDOUMsU0FBUztBQUNULGFBQWEsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDbkMsVUFBVSxXQUFXLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDakYsU0FBUztBQUNULGFBQWE7QUFDYixVQUFVLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDM0IsU0FBUztBQUNULE9BQU87QUFDUCxNQUFNLENBQUMsU0FBUyxHQUFHLFNBQVMsR0FBRyxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDbEYsUUFBUSxPQUFPLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMzRCxPQUFPLENBQUMsQ0FBQztBQUNULE1BQU0sT0FBTyxXQUFXLENBQUM7QUFDekIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBQ2pDLE1BQU0sT0FBTyxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDM0MsTUFBTSxPQUFPLE1BQU0sSUFBSSxJQUFJLEdBQUcsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFO0FBQzNELE1BQU0sVUFBVSxHQUFHLE9BQU8sVUFBVSxJQUFJLFVBQVUsR0FBRyxVQUFVLEdBQUdBLFdBQVMsQ0FBQztBQUM1RSxNQUFNLE9BQU8sTUFBTSxJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFB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QVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzRDtBQUNBLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwQyxNQUFNLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUM7QUFDeEUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsTUFBTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7QUFDN0M7QUFDQSxNQUFNLElBQUksS0FBSyxJQUFJLGNBQWMs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V0FBVyxLQUFLLENBQUNBLFdBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUMzQyxPQUFPLENBQUMsQ0FBQztBQUNUO0FBQ0E7QUFDQTtBQUNBLE1BQU0sTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDN0IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMzQixRQUFRLE1BQU0sTUFBTSxDQUFDO0FBQ3JCLE9BQU87QUFDUCxNQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzVCLE1BQU0sT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDM0MsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDNUIsTUFBTSxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUMzQyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDeEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hDLE1BQU0sSUFBSSxNQUFNLEtBQUssS0FB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3pCLE1BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU07QUFDbkQsVUFBVSxVQUFVLEdBQUcsV0FBVyxFQUFFLENBQUM7QUFDckM7QUFDQSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFTLElBQUksRUFBRTtBQUM1RCxRQUFRLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFO0FBQzFDLFVBQVUsTUFBTSxJQUFJLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUMvQyxTQUFTO0FBQ1QsUUFBUSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlDLE9BQU8sQ0FBQyxDQUFDO0FBQ1Q7QUFDQSxNQUFNLE9BQU8sUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFO0FBQ3JDLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkIsUUFBUSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUNqQyxVQUFVLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQyxVQUFVLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7QUFDMUMsWUFBWSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlDLFdBQVc7QUFDWCxTQUFTO0FBQ1QsT0FBTyxDQUFDLENBQUM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLE1BQU0sRUFBRTtBQUM5QixNQUFNLE9BQU8sWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUM5RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0FBQzdCLE1BQU0sT0FBTyxXQUFXO0FBQ3hCLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsT0FBTyxDQUFDO0FBQ1IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtBQUM1QyxNQUFNLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztBQUN2RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxJQUFJLEdBQUcsVUFBVSxFQUFFLENBQUM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBTSxPQUFPLEtBQUssQ0FBQztBQUNuQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLElBQUksRUFBRTtBQUM1QixNQUFNLE9BQU8sWUFBWSxDQUFDLE9BQU8sSUFBSSxJQUFJLFVBQVUsR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO0FBQy9GLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLE1BQU0sRUFBRTtBQUM3QixNQUFNLE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUM3RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsZUFBZSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDN0MsTUFBTSxPQUFPLG1CQUFtQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7QUFDN0UsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQy9DLE1BQU0sT0FBTyxTQUFTLE1BQU0sRUFBRTtBQUM5QixRQUFRLE9BQU8sVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUMsT0FBTyxDQUFDO0FBQ1IsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLE1BQU0sRUFBRSxJQUFJLEVBQUU7QUFDbkQsTUFBTSxPQUFPLFNBQVMsSUFBSSxFQUFFO0FBQzVCLFFBQVEsT0FBTyxVQUFV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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxJQUFJLEVBQUU7QUFDNUIsTUFBTSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDaEMsTUFBTSxPQUFPLFNBQVMsSUFBSSxFQUFFO0FBQzVCLFFBQVEsT0FBTyxNQUFNLElBQUksSUFBSSxHQUFHQSxXQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsRSxPQUFPLENBQUM7QUFDUixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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LFNBQVMsTUFBTSxDQUFDLEtBQUssRUFBRTtBQUMzQixNQUFNLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzFCLFFBQVEsT0FBTyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RDLE9BQU87QUFDUCxNQUFNLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLE1BQU0sRUFBRTtBQUM5QixNQUFNLElBQUksRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDO0FBQzNCLE1BQU0sT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ25DLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksR0FBRyxHQUFHLG1CQUFtQixDQUFDLFNBQVMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUMzRCxNQUFNLE9BQU8sTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUM3QixLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLFFBQVEsRUFBRSxPQUFPLEVBQUU7QUFDakUsTUFBTSxPQUFPLFFBQVEsR0FBRyxPQUFPLENBQUM7QUFDaEMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFFO0FBQ3hCLE1BQU0sT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTTtBQUNuQyxVQUFVLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQztBQUMvQyxVQUFVQSxXQUFTLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUNwQyxNQUFNLE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU07QUFDbkMsVUFBVSxZQUFZLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDO0FBQy9ELFVBQVVBLFdBQVMsQ0FBQztBQUNwQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDekIsTUFBTSxPQUFPLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUNyQyxNQUFNLE9BQU8sUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUU7QUFDeEIsTUFBTSxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNO0FBQ25DLFVBQVUsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO0FBQy9DLFVBQVVBLFdBQVMsQ0FBQztBQUNwQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFO0FBQ3BDLE1BQU0sT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENB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QixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixhQUFhO0FBQ2IsU0FBUztBQUNULFFBQVE7QUFDUixZQUFZLElBQUksRUFBRSxZQUFZO0FBQzlCLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzRyxTQUFTO0FBQ1QsUUFBUTtBQUNSLFlBQVksSUFBSSxFQUFFLGFBQWE7QUFDL0IsWUFBWSxHQUFHLEVBQUU7QUFDakIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7QUFDeEIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixhQUFh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SUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQztBQUNwQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUM7QUFDcEIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3BCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN0QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQztBQUN4QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDO0FBQ3hCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDeEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFB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 diff --git a/.obsidian/plugins/table-editor-obsidian/manifest.json b/.obsidian/plugins/table-editor-obsidian/manifest.json index ff20147..efde080 100644 --- a/.obsidian/plugins/table-editor-obsidian/manifest.json +++ b/.obsidian/plugins/table-editor-obsidian/manifest.json @@ -6,7 +6,12 @@ "description": "Improved table navigation, formatting, manipulation, and formulas", "isDesktopOnly": false, "minAppVersion": "1.0.0", - "version": "0.18.1", + "version": "0.19.1", "js": "main.js", + "fundingUrl": { + "Github Sponsor": "https://github.com/sponsors/tgrosinger", + "Buy me a Coffee": "https://buymeacoffee.com/tgrosinger", + "Paypal": "https://paypal.me/tgrosinger" + }, "donation": "https://buymeacoffee.com/tgrosinger" } \ No newline at end of file diff --git a/.obsidian/themes/Minimal/manifest.json b/.obsidian/themes/Minimal/manifest.json index 827acb3..3120345 100644 --- a/.obsidian/themes/Minimal/manifest.json +++ b/.obsidian/themes/Minimal/manifest.json @@ -1,7 +1,7 @@ { "name": "Minimal", - "version": "6.3.3", - "minAppVersion": "1.1.0", + "version": "7.2.3", + "minAppVersion": "1.1.9", "author": "@kepano", "authorUrl": "https://twitter.com/kepano", "fundingUrl": "https://www.buymeacoffee.com/kepano" diff --git a/.obsidian/themes/Minimal/theme.css b/.obsidian/themes/Minimal/theme.css index b32fc09..babcf19 100644 --- a/.obsidian/themes/Minimal/theme.css +++ b/.obsidian/themes/Minimal/theme.css @@ -38,7 +38,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -body{--font-text-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-editor-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-monospace-theme:Menlo,SFMono-Regular,Consolas,"Roboto Mono",monospace;--font-interface-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-editor:var(--font-editor-override),var(--font-text-override),var(--font-editor-theme)}body{--blockquote-style:normal;--blockquote-color:var(--text-muted);--blockquote-border-thickness:1px;--blockquote-border-color:var(--quote-opening-modifier);--embed-block-shadow-hover:none;--font-ui-smaller:12px;--normal-weight:400;--bold-weight:600;--link-weight:inherit;--h1-size:1.125em;--h2-size:1.05em;--h3-size:1em;--h4-size:0.90em;--h5-size:0.85em;--h6-size:0.85em;--h1-weight:600;--h2-weight:600;--h3-weight:500;--h4-weight:500;--h5-weight:500;--h6-weight:400;--h1-variant:normal;--h2-variant:normal;--h3-variant:normal;--h4-variant:normal;--h5-variant:small-caps;--h6-variant:small-caps;--h1-style:normal;--h2-style:normal;--h3-style:normal;--h4-style:normal;--h5-style:normal;--h6-style:normal;--line-width:40rem;--line-height:1.5;--max-width:88%;--max-col-width:18em;--icon-muted:0.5;--border-width:1px;--nested-padding:1.1em;--folding-offset:10px;--list-edit-offset:0.5em;--list-indent:2em;--list-spacing:0.075em;--input-height:32px;--header-height:40px;--mobile-left-sidebar-width:280pt;--mobile-right-sidebar-width:240pt;--top-left-padding-y:0px;--image-muted:0.7;--spacing-p:0.75em}.mod-macos{--top-left-padding-y:24px}body{--base-h:0;--base-s:0%;--base-l:96%;--accent-h:201;--accent-s:17%;--accent-l:50%}.theme-dark,.theme-light{--color-red-rgb:208,66,85;--color-orange-rgb:213,118,63;--color-yellow-rgb:229,181,103;--color-green-rgb:168,195,115;--color-cyan-rgb:115,187,178;--color-blue-rgb:108,153,187;--color-purple-rgb:158,134,200;--color-pink-rgb:176,82,121;--color-red:#d04255;--color-orange:#d5763f;--color-yellow:#e5b567;--color-green:#a8c373;--color-cyan:#73bbb2;--color-blue:#6c99bb;--color-purple:#9e86c8;--color-pink:#b05279}.theme-light,.theme-light.minimal-default-light,body .excalidraw{--bg1:white;--bg2:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) - 50%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 20%) );--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 90%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) - 45%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 25%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 60%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 6%) );--hl1:hsla( var(--accent-h), 50%, calc(var(--base-l) - 20%), 30% );--hl2:rgba(255, 225, 0, 0.5);--sp1:white}.excalidraw.theme--dark,.theme-dark,.theme-dark.minimal-default-dark,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-l:60%;--base-l:15%;--bg1:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 2%) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) + 40%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 20%) );--tx1:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 67%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) + 45%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 20%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 50%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 5%) );--hl1:hsla( var(--accent-h), 50%, 40%, 30% );--hl2:rgba(255, 177, 80, 0.3);--sp1:white}.theme-light.minimal-light-white{--background-primary:white;--background-secondary:white;--background-secondary-alt:white;--ribbon-background:white;--bg1:white}.theme-dark.minimal-dark-black{--base-d:0%;--titlebar-background:black;--background-primary:black;--background-secondary:black;--background-secondary-alt:black;--ribbon-background:black;--background-modifier-hover:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 10%));--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 75%) );--tx2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 50%) );--tx3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 25%) );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 12%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 20%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 30%) )}.theme-light{--mono100:black;--mono0:white}.theme-dark{--mono100:white;--mono0:black}.theme-dark,.theme-light,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.is-mobile .workspace-drawer.mod-left,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--background-modifier-accent:var(--ax3);--background-modifier-border-focus:var(--ui3);--background-modifier-border-hover:var(--ui2);--background-modifier-border:var(--ui1);--background-modifier-form-field-highlighted:var(--bg1);--background-modifier-form-field:var(--bg1);--background-modifier-success:var(--color-green);--background-modifier-hover:var(--bg3);--background-modifier-active-hover:var(--bg3);--background-primary:var(--bg1);--background-primary-alt:var(--bg2);--background-secondary:var(--bg2);--background-secondary-alt:var(--bg1);--background-table-rows:var(--bg2);--checkbox-color:var(--ax3);--code-normal:var(--tx1);--divider-color:var(--ui1);--frame-divider-color:var(--ui1);--icon-color-active:var(--tx1);--icon-color-focused:var(--tx1);--icon-color-hover:var(--tx2);--icon-color:var(--tx2);--icon-hex:var(--mono0);--interactive-accent-hover:var(--ax1);--interactive-accent:var(--ax3);--interactive-hover:var(--ui1);--list-marker-color:var(--tx3);--modal-border-color:var(--ui2);--nav-item-background-active:var(--bg3);--nav-item-background-hover:var(--bg3);--nav-item-color:var(--tx2);--nav-item-color-active:var(--tx1);--nav-item-color-hover:var(--tx1);--nav-collapse-icon-color:var(--tx2);--nav-collapse-icon-color-collapsed:var(--tx2);--nav-indentation-guide-color:var(--ui1);--prompt-border-color:var(--ui3);--quote-opening-modifier:var(--ui2);--ribbon-background:var(--bg2);--scrollbar-active-thumb-bg:var(--ui3);--scrollbar-bg:transparent;--scrollbar-thumb-bg:var(--ui1);--search-result-background:var(--bg1);--tab-text-color-focused-active:var(--tx1);--tab-outline-color:var(--ui1);--text-accent-hover:var(--ax2);--text-accent:var(--ax1);--text-blockquote:var(--tx2);--text-bold:var(--tx1);--text-code:var(--tx4);--text-error:var(--color-red);--text-faint:var(--tx3);--text-highlight-bg:var(--hl2);--text-italic:var(--tx1);--text-muted:var(--tx2);--text-normal:var(--tx1);--text-on-accent:var(--sp1);--text-selection:var(--hl1);--title-color-inactive:var(--tx2);--title-color:var(--tx1);--titlebar-background:var(--bg2);--titlebar-background-focused:var(--bg2);--titlebar-text-color-focused:var(--tx1);--workspace-background-translucent:hsla(var(--base-h),var(--base-s), var(--base-l), 0.7)}.theme-light.minimal-light-contrast{--workspace-background-translucent:rgba(0,0,0,0.6)}.theme-light.minimal-light-contrast .theme-dark{--tab-container-background:var(--bg2);--ribbon-background-collapsed:var(--bg2)}.theme-light{--interactive-normal:var(--bg1);--interactive-accent-rgb:220,220,220;--active-line-bg:rgba(0,0,0,0.035);--background-modifier-cover:hsla(var(--base-h),calc(var(--base-s) - 70%),calc(var(--base-l) - 20%),0.5);--text-highlight-bg-active:rgba(0, 0, 0, 0.1);--background-modifier-error:rgba(255,0,0,0.14);--background-modifier-error-hover:rgba(255,0,0,0.08);--shadow-color:rgba(0, 0, 0, 0.1);--btn-shadow-color:rgba(0, 0, 0, 0.05)}.theme-dark{--interactive-normal:var(--bg3);--interactive-accent-rgb:66,66,66;--active-line-bg:rgba(255,255,255,0.04);--background-modifier-cover:hsla(var(--base-h),var(--base-s), calc(var(--base-l) - 12%), 0.5);--text-highlight-bg-active:rgba(255, 255, 255, 0.1);--background-modifier-error:rgba(255,20,20,0.12);--background-modifier-error-hover:rgba(255,20,20,0.18);--background-modifier-box-shadow:rgba(0, 0, 0, 0.3);--shadow-color:rgba(0, 0, 0, 0.3);--btn-shadow-color:rgba(0, 0, 0, 0.2)}.theme-light.minimal-light-white{--background-table-rows:var(--bg2)}.theme-light.minimal-light-tonal{--background-primary:var(--bg2);--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-tonal{--ribbon-background:var(--bg1);--background-secondary:var(--bg1);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-black{--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3);--modal-border:var(--ui2);--active-line-bg:rgba(255,255,255,0.085);--background-modifier-form-field:var(--bg3);--background-modifier-cover:hsla(var(--base-h),var(--base-s),calc(var(--base-d) + 8%),0.9);--background-modifier-box-shadow:rgba(0, 0, 0, 1)}body{--font-adaptive-normal:var(--font-text-size,var(--editor-font-size));--font-adaptive-small:var(--font-ui-medium);--font-adaptive-smaller:var(--font-ui-small);--font-adaptive-smallest:11px;--line-width-adaptive:var(--line-width);--line-width-wide:calc(var(--line-width) + 12.5%);--font-code:calc(var(--font-adaptive-normal) * 0.9);--table-text-size:calc(var(--font-adaptive-normal) * 0.875)}.minimal-dev-block-width .mod-root .workspace-leaf-content:after{display:flex;align-items:flex-end;content:"\00a0pane\00a0";font-size:12px;color:gray;font-family:var(--font-monospace);width:100%;max-width:100%;height:100vh;top:0;z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:max(calc(50% - var(--line-width-adaptive)/ 2 - 1px),calc(50% - var(--max-width)/ 2 - 1px));z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable-off .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:calc(50% - var(--max-width)/ 2 - 1px);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width .mod-root .view-content:before{display:flex;align-items:flex-end;content:"\00a0max\00a0";font-size:12px;color:red;width:var(--max-width);height:100vh;border-left:1px solid red;border-right:1px solid red;top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-header:before{display:flex;align-items:flex-end;content:"\00a0wide\00a0";font-size:12px;color:orange;font-family:var(--font-monospace);width:var(--line-width-wide);max-width:var(--max-width);height:100vh;border-left:1px solid orange;border-right:1px solid orange;background-color:rgba(255,165,0,.05);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-content:after{display:flex;align-items:flex-end;color:#00f;font-size:12px;font-family:var(--font-monospace);content:"\00a0normal";width:var(--line-width-adaptive);max-width:var(--max-width);height:100vh;border-left:1px solid #00f;border-right:1px solid #00f;background-color:rgba(0,0,255,.08);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.CodeMirror-wrap>div>textarea{opacity:0}.markdown-source-view.mod-cm6 hr{border-width:2px}.mod-cm6 .cm-editor .cm-line{padding:0}.cm-editor .cm-content{padding-top:.5em}.markdown-source-view{color:var(--text-normal)}.markdown-reading-view>.markdown-preview-view{padding-top:18px}.markdown-source-view.mod-cm6 .cm-scroller{padding-top:18px;padding-left:0;padding-right:0}body:not(.is-mobile) .markdown-source-view.mod-cm6 .cm-gutters{position:absolute!important;z-index:0;margin-left:0}.cm-editor .cm-lineNumbers .cm-gutterElement{min-width:25px}@media (max-width:400pt){.cm-editor .cm-lineNumbers .cm-gutterElement{padding-right:4px;padding-left:8px}}.cm-editor .cm-lineNumbers .cm-gutterElement{font-variant-numeric:tabular-nums}.cm-editor .cm-gutterElement.cm-active .cm-heading-marker,.cm-editor .cm-lineNumbers .cm-gutterElement.cm-active{color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button{cursor:var(--cursor);color:var(--text-faint);background-color:var(--background-primary);top:0;right:auto;left:0;opacity:0;transition:opacity .2s;padding:4px 4px 4px 9px}.markdown-source-view.mod-cm6 .edit-block-button svg{margin:0!important}.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.edit-block-button{width:30px!important;padding-left:7px!important;transform:none!important;margin-left:0!important}.is-live-preview:not(.is-readable-line-width) .cm-embed-block>.edit-block-button{padding-left:0!important;margin-left:0!important;transform:none!important;right:0;left:auto;padding:4px}.markdown-source-view.mod-cm6 .edit-block-button:hover{background-color:var(--background-primary);color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button svg{opacity:1}.markdown-source-view.mod-cm6 .edit-block-button:hover svg{opacity:1}.markdown-source-view.mod-cm6 .cm-embed-block{padding:0;border:0;border-radius:0}.markdown-source-view.mod-cm6 .cm-embed-block:hover{border:0}.theme-light .cm-link,.theme-light .cm-operator,.theme-light .cm-string,.theme-light .cm-string-2,.theme-light .language-css .token.string,.theme-light .style .token.string,.theme-light .token.entity,.theme-light .token.operator,.theme-light .token.url{background-color:transparent}.markdown-source-view,.markdown-source-view.mod-cm5,.markdown-source-view.mod-cm6{padding:0}.cm-s-obsidian .CodeMirror-code{padding-right:0}.CodeMirror-lines{padding-bottom:170px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding-left:0;padding-right:0}.cm-s-obsidian pre.HyperMD-list-line{padding-top:0}.workspace .markdown-preview-view .markdown-embed{margin:0}.workspace .markdown-preview-view .markdown-embed-content{max-height:none}.internal-embed .markdown-preview-section,.markdown-embed-title{max-width:100%}.CodeMirror-linenumber{font-size:var(--font-adaptive-small)!important;font-feature-settings:'tnum';color:var(--text-faint);padding-top:3px}.cm-s-obsidian .cm-active span.cm-link.cm-hmd-barelink.cm-formatting-link-start,.cm-s-obsidian .cm-formatting-link+span.cm-link.cm-formatting.cm-formatting-link-end,.cm-s-obsidian span.cm-footref.cm-formatting.cm-formatting-link.cm-formatting-link-end,.cm-s-obsidian span.cm-formatting-link,.cm-s-obsidian span.cm-link.cm-hmd-barelink.cm-formatting-link-start,span.cm-image-marker{color:var(--text-faint)}.cm-formatting-quote{color:var(--text-faint)!important}figure{margin-inline-start:0;margin-inline-end:0}.markdown-preview-view blockquote,.markdown-preview-view ol,.markdown-preview-view p,.markdown-preview-view ul{margin-block-start:var(--spacing-p);margin-block-end:var(--spacing-p)}.markdown-preview-view ol ol,.markdown-preview-view ol ul,.markdown-preview-view ul ol,.markdown-preview-view ul ul{margin-block-start:0em;margin-block-end:0em}.markdown-preview-view h1,.markdown-preview-view h2,.markdown-preview-view h3,.markdown-preview-view h4,.markdown-preview-view h5,.markdown-preview-view h6{margin-block-start:1em;margin-block-end:var(--spacing-p)}.markdown-preview-view .mod-highlighted{transition:background-color .3s ease;background-color:var(--text-selection);color:inherit}.workspace-leaf-content>.view-content{--file-margins:0}.inline-title{padding-top:16px}.minimal-status-off .status-bar{--status-bar-position:static;--status-bar-radius:0;--status-bar-border-width:1px 0 0 0;--status-bar-background:var(--background-secondary);--status-bar-border-color:var(--ui1)}body:not(.minimal-status-off) .status-bar{background-color:var(--background-primary);--status-bar-border-width:0}.status-bar{transition:color .2s linear;color:var(--text-faint);font-size:var(--font-adaptive-smallest)}.status-bar .sync-status-icon.mod-success,.status-bar .sync-status-icon.mod-working{color:var(--text-faint)}.status-bar:hover,.status-bar:hover .sync-status-icon.mod-success,.status-bar:hover .sync-status-icon.mod-working{color:var(--text-muted);transition:color .2s linear}.status-bar .plugin-sync:hover .sync-status-icon.mod-success,.status-bar .plugin-sync:hover .sync-status-icon.mod-working{color:var(--text-normal)}.status-bar .status-bar-item{cursor:var(--cursor)!important}.status-bar .status-bar-item.cMenu-statusbar-button:hover,.status-bar .status-bar-item.mod-clickable:hover,.status-bar .status-bar-item.plugin-editor-status:hover,.status-bar .status-bar-item.plugin-sync:hover{text-align:center;background-color:var(--background-modifier-hover)!important}.tab-stack-top-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:right}.tab-stack-center{--tab-stacked-text-align:center}.tab-stack-center-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:center}.tab-stack-bottom{--tab-stacked-text-transform:rotate(180deg)}.tab-stack-bottom-flipped{--tab-stacked-text-align:right}.view-header-title,.view-header-title-parent{text-overflow:ellipsis}.view-header-title-container:not(.mod-at-end):after{display:none}body:not(.is-mobile) .view-actions .view-action:last-child{margin-left:-1px}.minimal-focus-mode .workspace-ribbon:not(.is-collapsed)~.mod-root .view-header:hover .view-actions,.mod-right.is-collapsed~.mod-root .view-header:hover .view-actions,.view-action.is-active:hover,.workspace-ribbon.mod-left.is-collapsed~.mod-root .view-header:hover .view-actions,body:not(.minimal-focus-mode) .workspace-ribbon:not(.is-collapsed)~.mod-root .view-actions{opacity:1;transition:opacity .25s ease-in-out}.view-header-title-container{opacity:0;transition:opacity .1s ease-in-out}.view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.view-header:hover .view-header-title-container,.workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:1;transition:opacity .1s ease-in-out}.is-phone .view-header-title-container,.minimal-tab-title-visible .view-header-title-container{opacity:1}.minimal-tab-title-hidden .view-header-title-container{opacity:0}.minimal-tab-title-hidden .view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.minimal-tab-title-hidden .view-header:hover .view-header-title-container,.minimal-tab-title-hidden .workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:0}body.window-title-off .titlebar-text{display:none}.titlebar-button-container.mod-right{background-color:transparent!important}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame){--titlebar-background:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-tabs.mod-top,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame).is-focused .workspace-tabs.mod-top{--titlebar-background-focused:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed){--titlebar-background:var(--bg2)}.mod-macos.is-hidden-frameless:not(.is-popout-window) .sidebar-toggle-button.mod-right{right:0;padding-right:var(--size-4-2)}body.is-focused{--titlebar-background-focused:var(--background-secondary)}.is-hidden-frameless:not(.colorful-frame) .mod-left-split .mod-top .workspace-tab-header-container{--tab-container-background:var(--background-secondary)}.mod-root .workspace-tab-header-status-icon{color:var(--text-muted)}.modal button:not(.mod-warning),.modal.mod-settings button:not(.mod-cta):not(.mod-warning),.modal.mod-settings button:not(.mod-warning){white-space:nowrap;transition:background-color .2s ease-out,border-color .2s ease-out}button.mod-warning{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 1px 1px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}button.mod-warning:hover{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 2px 3px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}.document-replace,.document-search{max-width:100%}.document-search-container{margin:0 auto;max-width:var(--max-width);width:var(--line-width-adaptive)}.is-mobile .CodeMirror-foldgutter-open:after,.is-mobile span[title="Fold line"]:after{transform:translateX(-2px)!important}body.is-mobile .CodeMirror-foldgutter-folded:after,body.is-mobile span[title="Unfold line"]:after{content:"›";font-family:sans-serif;transform:translateY(-2px);transform:rotate(-90deg) translateY(2px) translateX(-.45em)}body.is-mobile .CodeMirror-foldgutter-open:after,body.is-mobile span[title="Fold line"]:after{content:"›";font-family:sans-serif;transform:rotate(360deg)}body{--ig-adjust-reading:-0.95em;--ig-adjust-edit:2px}.markdown-rendered.show-indentation-guide li.task-list-item>ol::before,.markdown-rendered.show-indentation-guide li.task-list-item>ul::before,.markdown-rendered.show-indentation-guide li>ol::before,.markdown-rendered.show-indentation-guide li>ul::before{left:var(--ig-adjust-reading)}.markdown-source-view.mod-cm6 .cm-indent::before{transform:translateX(var(--ig-adjust-edit))}.is-mobile .markdown-rendered.show-indentation-guide li>ol::before,.is-mobile .markdown-rendered.show-indentation-guide li>ul::before{left:calc(0em + var(--ig-adjust-reading))}.is-mobile .markdown-source-view.mod-cm6 .cm-indent::before{transform:translateX(calc(2px + var(--ig-adjust-edit)))}.modal-button-container .mod-checkbox{--checkbox-radius:4px}.modal-container.mod-confirmation .modal{width:480px;min-width:0}.theme-light{--progress-outline:rgba(0,0,0,0.05)}.theme-dark{--progress-outline:rgba(255,255,255,0.04)}.markdown-preview-view progress,.markdown-rendered progress,.markdown-source-view.is-live-preview progress{width:220px}.markdown-preview-view progress[value]::-webkit-progress-bar,.markdown-rendered progress[value]::-webkit-progress-bar,.markdown-source-view.is-live-preview progress[value]::-webkit-progress-bar{box-shadow:inset 0 0 0 var(--border-width) var(--progress-outline)}.markdown-preview-view progress[value^='1']::-webkit-progress-value,.markdown-preview-view progress[value^='2']::-webkit-progress-value,.markdown-preview-view progress[value^='3']::-webkit-progress-value,.markdown-rendered progress[value^='1']::-webkit-progress-value,.markdown-rendered progress[value^='2']::-webkit-progress-value,.markdown-rendered progress[value^='3']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='1']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='2']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='3']::-webkit-progress-value{background-color:var(--color-red)}.markdown-preview-view progress[value^='4']::-webkit-progress-value,.markdown-preview-view progress[value^='5']::-webkit-progress-value,.markdown-rendered progress[value^='4']::-webkit-progress-value,.markdown-rendered progress[value^='5']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='4']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='5']::-webkit-progress-value{background-color:var(--color-orange)}.markdown-preview-view progress[value^='6']::-webkit-progress-value,.markdown-preview-view progress[value^='7']::-webkit-progress-value,.markdown-rendered progress[value^='6']::-webkit-progress-value,.markdown-rendered progress[value^='7']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='6']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='7']::-webkit-progress-value{background-color:var(--color-yellow)}.markdown-preview-view progress[value^='8']::-webkit-progress-value,.markdown-preview-view progress[value^='9']::-webkit-progress-value,.markdown-rendered progress[value^='8']::-webkit-progress-value,.markdown-rendered progress[value^='9']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='8']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='9']::-webkit-progress-value{background-color:var(--color-green)}.markdown-preview-view progress[value='1']::-webkit-progress-value,.markdown-preview-view progress[value='100']::-webkit-progress-value,.markdown-rendered progress[value='1']::-webkit-progress-value,.markdown-rendered progress[value='100']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='1']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='100']::-webkit-progress-value{background-color:var(--text-accent)}.markdown-preview-view progress[value='0']::-webkit-progress-value,.markdown-preview-view progress[value='2']::-webkit-progress-value,.markdown-preview-view progress[value='3']::-webkit-progress-value,.markdown-preview-view progress[value='4']::-webkit-progress-value,.markdown-preview-view progress[value='5']::-webkit-progress-value,.markdown-preview-view progress[value='6']::-webkit-progress-value,.markdown-preview-view progress[value='7']::-webkit-progress-value,.markdown-preview-view progress[value='8']::-webkit-progress-value,.markdown-preview-view progress[value='9']::-webkit-progress-value,.markdown-rendered progress[value='0']::-webkit-progress-value,.markdown-rendered progress[value='2']::-webkit-progress-value,.markdown-rendered progress[value='3']::-webkit-progress-value,.markdown-rendered progress[value='4']::-webkit-progress-value,.markdown-rendered progress[value='5']::-webkit-progress-value,.markdown-rendered progress[value='6']::-webkit-progress-value,.markdown-rendered progress[value='7']::-webkit-progress-value,.markdown-rendered progress[value='8']::-webkit-progress-value,.markdown-rendered progress[value='9']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='0']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='2']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='3']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='4']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='5']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='6']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='7']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='8']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='9']::-webkit-progress-value{background-color:var(--color-red)}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar,body:not(.native-scrollbars) ::-webkit-scrollbar{width:11px;background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar:horizontal,body:not(.native-scrollbars) ::-webkit-scrollbar:horizontal{height:11px}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-corner,body:not(.native-scrollbars) ::-webkit-scrollbar-corner{background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-track,body:not(.native-scrollbars) ::-webkit-scrollbar-track{background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb{background-clip:padding-box;border-radius:20px;border:3px solid transparent;background-color:var(--background-modifier-border);border-width:3px 3px 3px 3px;min-height:45px}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:hover{background-color:var(--background-modifier-border-hover)}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:active{background-color:var(--background-modifier-border-focus)}.tooltip{transition:none;animation:none}.tooltip.mod-left,.tooltip.mod-right{transform:none;animation:none}.tooltip.mod-error{color:var(--text-error)}.markdown-preview-view blockquote{padding:0 0 0 var(--nested-padding);font-size:var(--blockquote-size)}.markdown-source-view.mod-cm6 .HyperMD-quote,.markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote{font-size:var(--blockquote-size)}.is-live-preview .cm-hmd-indent-in-quote{color:var(--text-faint)}.is-live-preview.is-readable-line-width>.cm-callout .callout{max-width:var(--max-width);margin:0 auto}.callouts-outlined .callout .callout-title{background-color:var(--background-primary);margin-top:-24px;z-index:200;width:fit-content;padding:0 .5em;margin-left:-.75em;letter-spacing:.05em;font-variant-caps:all-small-caps}.callouts-outlined .callout{overflow:visible;--callout-border-width:1px;--callout-border-opacity:0.5;--callout-title-size:0.8em;--callout-blend-mode:normal;background-color:transparent}.callouts-outlined .cm-embed-block.cm-callout{padding-top:12px}.callouts-outlined .callout-content .callout{margin-top:18px}body{--checkbox-radius:50%;--checkbox-top:2px;--checkbox-left:0px;--checkbox-margin:0px 6px 0px -2em}.checkbox-square{--checkbox-size:calc(var(--font-text-size) * 0.85);--checkbox-radius:4px;--checkbox-top:1px;--checkbox-left:0px;--checkbox-margin:0px 8px 0px -2em}body.minimal-strike-lists{--checklist-done-decoration:line-through}body:not(.minimal-strike-lists){--checklist-done-decoration:none;--checklist-done-color:var(--text-normal)}input[type=checkbox]{padding:0;margin:0 6px 0 0}.markdown-preview-section>.contains-task-list{padding-bottom:.5em}.mod-cm6 .HyperMD-task-line[data-task] .cm-formatting-list-ol~.task-list-label .task-list-item-checkbox{margin:1px}.markdown-preview-view .task-list-item-checkbox{position:relative;top:var(--checkbox-top);left:var(--checkbox-left);line-height:0}.markdown-preview-view ul>li.task-list-item{text-indent:0;line-height:var(--line-height)}.is-mobile .mod-cm6 .HyperMD-task-line[data-task] .task-list-item-checkbox{margin-left:-.4em}.is-mobile .markdown-preview-view input[type=checkbox].task-list-item-checkbox{top:.2em}.minimal-code-scroll{--code-white-space:pre}.minimal-code-scroll .HyperMD-codeblock.HyperMD-codeblock-bg{overflow-y:scroll;white-space:pre}.minimal-code-scroll .cm-hmd-codeblock{white-space:pre!important}@media print{.print{--code-background:#eee!important}}body{--embed-max-height:none;--embed-decoration-style:solid;--embed-decoration-color:var(--background-modifier-border-hover)}.embed-strict{--embed-background:transparent;--embed-border-left:0;--embed-padding:0}.embed-strict .markdown-embed-content{--folding-offset:0px}.embed-strict .el-embed-heading.el-p>p{margin-block-start:0;margin-block-end:0}.embed-strict .internal-embed .markdown-embed,.embed-strict .markdown-preview-view .markdown-embed,.embed-strict.markdown-preview-view .markdown-embed{padding:0}.embed-strict .internal-embed .markdown-embed .markdown-embed-title,.embed-strict .markdown-embed-title{display:none}.embed-strict .internal-embed:not([src*="#^"]) .markdown-embed-link{width:24px;opacity:0}.embed-underline .internal-embed{text-decoration-line:underline;text-decoration-style:var(--embed-decoration-style);text-decoration-color:var(--embed-decoration-color)}.embed-hide-title .markdown-embed-title{display:none}.contextual-typography .embed-strict .internal-embed .markdown-preview-view .markdown-preview-sizer>div,.embed-strict.contextual-typography .internal-embed .markdown-preview-view .markdown-preview-sizer>div{margin:0;width:100%}.markdown-embed .markdown-preview-view .markdown-preview-sizer{padding-bottom:0!important}.markdown-preview-view.is-readable-line-width .markdown-embed .markdown-preview-sizer,.markdown-preview-view.markdown-embed .markdown-preview-sizer{max-width:100%;width:100%;min-height:0!important;padding-bottom:0!important}.markdown-embed .markdown-preview-section div:last-child p,.markdown-embed .markdown-preview-section div:last-child ul{margin-block-end:2px}.markdown-preview-view .markdown-embed{margin-top:var(--nested-padding);padding:0 calc(var(--nested-padding)/ 2) 0 var(--nested-padding)}.internal-embed:not([src*="#^"]) .markdown-embed-link{right:0;width:100%}.file-embed-link,.markdown-embed-link{top:0;right:0;text-align:right;justify-content:flex-end}.file-embed-link svg,.markdown-embed-link svg{width:16px;height:16px}.markdown-embed .file-embed-link,.markdown-embed .markdown-embed-link{opacity:.6;transition:opacity .1s linear}.markdown-embed .file-embed-link:hover,.markdown-embed .markdown-embed-link:hover{opacity:1}.markdown-embed .file-embed-link:hover:hover,.markdown-embed .markdown-embed-link:hover:hover{background-color:transparent;--icon-color:var(--text-accent)}.file-embed-link:hover,.markdown-embed-link:hover{color:var(--text-muted)}.markdown-embed .markdown-preview-view{padding:0}.internal-embed .markdown-embed{border:0;border-left:1px solid var(--quote-opening-modifier);border-radius:0}a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,")}.theme-dark a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,")}div>ol,div>ul{padding-inline-start:1.4em}ul>li{min-height:1.4em}ol>li{margin-left:0}ol{margin-left:0;list-style:default}.markdown-source-view.mod-cm6 .cm-content .HyperMD-list-line{margin-left:var(--list-edit-offset)!important}.markdown-preview-view ol>li,.markdown-preview-view ul>li,.markdown-source-view ol>li,.markdown-source-view ul>li,.mod-cm6 .HyperMD-list-line.cm-line{padding-top:var(--list-spacing);padding-bottom:var(--list-spacing)}.is-mobile ul>li:not(.task-list-item)::marker{font-size:.8em}.is-mobile .markdown-rendered ol,.is-mobile .markdown-rendered ul{padding-inline-start:var(--list-indent)}.is-mobile .markdown-rendered div>ol,.is-mobile .markdown-rendered div>ul{padding-inline-start:2em}.is-mobile .el-ol>ol,.is-mobile .el-ul>ul{margin-left:0}.is-mobile .workspace-leaf-content:not([data-type=search]) .workspace-leaf-content[data-type=markdown] .nav-buttons-container{border-bottom:none;padding-top:5px}.is-mobile .mod-root .workspace-leaf-content[data-type=markdown] .search-input-container{width:calc(100% - 160px)}.embedded-backlinks .nav-header~.search-input-container{width:calc(100% - 140px);margin-top:12px}.embedded-backlinks .nav-buttons-container{position:absolute;right:0;top:14px}.embedded-backlinks .backlink-pane>.tree-item-self,.embedded-backlinks .backlink-pane>.tree-item-self:hover{text-transform:none;color:var(--text-normal);font-size:var(--font-adaptive-normal);font-weight:500;letter-spacing:unset}body{--pdf-dark-opacity:1}.theme-dark:not(.pdf-shadows-on),.theme-light:not(.pdf-shadows-on){--pdf-shadow:none;--pdf-thumbnail-shadow:none}.theme-dark:not(.pdf-shadows-on) .pdf-viewer .page,.theme-light:not(.pdf-shadows-on) .pdf-viewer .page{border:0}.theme-dark:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnailSelectionRing,.theme-light:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnailSelectionRing{padding:0}.theme-dark:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnail::after,.theme-light:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnail::after{right:var(--size-4-2);bottom:var(--size-4-2)}.theme-dark{--pdf-thumbnail-shadow:0 0 1px 0 rgba(0,0,0,0.6);--pdf-shadow:0 0 1px 0 rgba(0,0,0,0.6)}.theme-dark .pdf-viewer .canvasWrapper{opacity:var(--pdf-dark-opacity)}.theme-dark.pdf-invert-dark .pdf-thumbnail-view .thumbnailImage,.theme-dark.pdf-invert-dark .pdf-viewer .canvasWrapper{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.theme-light.pdf-blend-light .pdf-thumbnail-view .thumbnailImage,.theme-light.pdf-blend-light .pdf-viewer .canvasWrapper{mix-blend-mode:multiply}.markdown-source-view.mod-cm6 table{border-collapse:collapse}.markdown-preview-view table{margin-block-start:1em}.markdown-preview-view table,.markdown-source-view.mod-cm6 table{border:1px solid var(--border-color);border-collapse:collapse}.markdown-preview-view td,.markdown-preview-view th,.markdown-source-view.mod-cm6 td,.markdown-source-view.mod-cm6 th{padding:4px 10px}.markdown-preview-view td:first-child,.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 td:first-child,.markdown-source-view.mod-cm6 th:first-child{padding-left:0}.markdown-preview-view th,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,.table-view-table>thead>tr>th{padding:4px 10px}.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th:first-child,.table-view-table>thead>tr>th:first-child{padding-left:0}body{--table-header-border-width:0 1px;--table-column-first-border-width:0;--table-column-last-border-width:0;--table-row-last-border-width:0}.is-live-preview .el-table{width:100%;max-width:100%}.cm-hmd-table-sep-dummy,.cm-s-obsidian .HyperMD-table-row span.cm-hmd-table-sep{color:var(--text-faint);font-weight:400}body.minimal-unstyled-tags{--tag-background:transparent;--tag-background-hover:transparent;--tag-border-width:0px;--tag-padding-x:0;--tag-padding-y:0;--tag-size:inherit;--tag-color-hover:var(--text-accent-hover)}body.minimal-unstyled-tags.is-mobile.theme-dark{--tag-background:transparent}body:not(.minimal-unstyled-tags){--tag-size:0.8em;--tag-padding-y:0.2em;--tag-background:transparent;--tag-background-hover:transparent;--tag-color:var(--text-muted);--tag-border-width:1px;--tag-border-color:var(--background-modifier-border);--tag-border-color-hover:var(--background-modifier-border-hover);--tag-color-hover:var(--text-normal)}body.is-mobile.theme-dark{--tag-background:transparent}h1,h2,h3,h4{letter-spacing:-.02em}body,button,input{font-family:var(--font-interface)}.cm-s-obsidian span.cm-error{color:var(--color-red)}.markdown-preview-view,.popover,.workspace-leaf-content[data-type=markdown]{font-family:var(--font-text)}.cm-s-obsidian,.markdown-preview-view,.markdown-source-view.mod-cm6.is-live-preview .cm-scroller,body{font-size:var(--font-adaptive-normal);font-weight:var(--normal-weight);line-height:var(--line-height)}.cm-s-obsidian,.markdown-source-view,.markdown-source-view.mod-cm6 .cm-scroller{line-height:var(--line-height);font-family:var(--font-editor)}.cm-s-obsidian span.cm-formatting-task{line-height:var(--line-height)}.mod-cm6 .cm-editor .HyperMD-header-1,.mod-cm6 .cm-editor .HyperMD-header-2,.mod-cm6 .cm-editor .HyperMD-header-3,.mod-cm6 .cm-editor .HyperMD-header-4,.mod-cm6 .cm-editor .HyperMD-header-5,.mod-cm6 .cm-editor .HyperMD-header-6{padding-top:.5em}.active-line-on .cm-line.cm-active,.active-line-on .markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote.cm-active{background-color:var(--active-line-bg);box-shadow:-25vw 0 var(--active-line-bg),25vw 0 var(--active-line-bg)}.borders-none{--divider-width:0px;--tab-outline-width:0px}:root{--cards-min-width:180px;--cards-max-width:1fr;--cards-mobile-width:120px;--cards-image-height:400px;--cards-padding:1.2em;--cards-image-fit:contain;--cards-background:transparent;--cards-border-width:1px;--cards-aspect-ratio:auto;--cards-columns:repeat(auto-fit, minmax(var(--cards-min-width), var(--cards-max-width)))}@media (max-width:400pt){:root{--cards-min-width:var(--cards-mobile-width)}}.cards.table-100 table.dataview tbody,.table-100 .cards table.dataview tbody{padding:.25rem .75rem}.cards table.dataview tbody{clear:both;padding:.5rem 0;display:grid;grid-template-columns:var(--cards-columns);grid-column-gap:0.75rem;grid-row-gap:0.75rem}.cards table.dataview>tbody>tr{background-color:var(--cards-background);border:var(--cards-border-width) solid var(--background-modifier-border);display:flex;flex-direction:column;margin:0;padding:0 0 calc(var(--cards-padding)/3) 0;border-radius:6px;overflow:hidden;transition:box-shadow .15s linear;max-width:var(--cards-max-width)}.cards table.dataview>tbody>tr:hover{border:var(--cards-border-width) solid var(--background-modifier-border-hover);box-shadow:0 4px 6px 0 rgba(0,0,0,.05),0 1px 3px 1px rgba(0,0,0,.025);transition:box-shadow .15s linear}.cards table.dataview tbody>tr>td:first-child{font-weight:var(--bold-weight)}.cards table.dataview tbody>tr>td:first-child a{padding:0 0 calc(var(--cards-padding)/3);display:block}.cards table.dataview tbody>tr>td:not(:first-child){font-size:90%;color:var(--text-muted)}.cards table.dataview tbody>tr>td .el-p{display:block;width:100%}.cards table.dataview tbody>tr>td>:not(.el-embed-image){padding:calc(var(--cards-padding)/3) 0}.cards table.dataview tbody>tr>td:not(:last-child):not(:first-child)>.el-p:not(.el-embed-image){border-bottom:1px solid var(--background-modifier-border);width:100%}.cards table.dataview tbody>tr>td a{text-decoration:none}.cards table.dataview tbody>tr>td>button{width:100%;margin:calc(var(--cards-padding)/2) 0}.cards table.dataview tbody>tr>td:last-child>button{margin-bottom:calc(var(--cards-padding)/6)}.cards table.dataview tbody>tr>td>ul{width:100%;padding:.25em 0!important;margin:0 auto!important}.cards table.dataview tbody>tr>td:not(:last-child)>ul{border-bottom:1px solid var(--background-modifier-border)}.cards table.dataview tbody>tr>td .el-embed-image{background-color:var(--background-secondary);display:block;margin:0 calc(var(--cards-padding)/-2) 0 calc(var(--cards-padding)/-2);width:calc(100% + var(--cards-padding))}.cards table.dataview tbody>tr>td img{aspect-ratio:var(--cards-aspect-ratio);width:100%;object-fit:var(--cards-image-fit);max-height:var(--cards-image-height);background-color:var(--background-secondary);vertical-align:bottom}.markdown-source-view.mod-cm6.cards .dataview.table-view-table>tbody>tr>td,.trim-cols .cards table.dataview tbody>tr>td{white-space:normal}.cards .dataview.table-view-table>tbody>tr>td,.cards table.dataview tbody>tr>td,.markdown-source-view.mod-cm6.cards .dataview.table-view-table>tbody>tr>td,.markdown-source-view.mod-cm6.cards table.dataview tbody>tr>td{border-bottom:none;padding:0!important;line-height:1.2;width:calc(100% - var(--cards-padding));margin:0 auto;overflow:visible!important;max-width:100%;display:flex}.links-int-on .cards table.dataview tbody>tr>td a{text-decoration:none}.markdown-source-view.mod-cm6.cards .edit-block-button{top:0}.cards.table-100 table.dataview thead>tr,.table-100 .cards table.dataview thead>tr{right:.75rem}.cards.table-100 table.dataview thead:before,.table-100 .cards table.dataview thead:before{margin-right:.75rem}.theme-light .cards table.dataview thead:before{background-image:url('data:image/svg+xml;utf8,')}.cards .el-pre+.el-lang-dataview .table-view-thead{padding-top:8px}.cards table.dataview thead{user-select:none;width:180px;display:block;float:right;position:relative;text-align:right;height:24px;padding-bottom:4px}.cards table.dataview thead:hover:before{opacity:.5;background-color:var(--background-modifier-hover)}.cards table.dataview thead:before{content:'';position:absolute;right:0;top:0;width:10px;height:16px;background-repeat:no-repeat;cursor:var(--cursor);text-align:right;padding:var(--size-4-1) var(--size-4-2);margin-bottom:2px;border-radius:var(--radius-s);font-weight:500;font-size:var(--font-adaptive-small);opacity:.25;background-position:center center;background-size:16px;background-image:url('data:image/svg+xml;utf8,')}.cards table.dataview thead>tr{top:-1px;position:absolute;display:none;z-index:9;border:1px solid var(--background-modifier-border-hover);background-color:var(--background-secondary);box-shadow:var(--shadow-s);padding:6px;border-radius:var(--radius-m);flex-direction:column;margin:26px 0 0 0;width:100%}.cards table.dataview thead:hover>tr{display:flex}.cards table.dataview thead>tr>th{display:block;padding:3px 30px 3px 6px!important;border-radius:var(--radius-s);width:100%;font-weight:400;color:var(--text-normal);cursor:var(--cursor);border:none;font-size:var(--font-ui-small)}.cards table.dataview thead>tr>th[sortable-style=sortable-asc],.cards table.dataview thead>tr>th[sortable-style=sortable-desc]{color:var(--text-normal)}.cards table.dataview thead>tr>th:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}.cards.cards-16-9{--cards-aspect-ratio:16/9}.cards.cards-1-1{--cards-aspect-ratio:1/1}.cards.cards-2-1{--cards-aspect-ratio:2/1}.cards.cards-2-3{--cards-aspect-ratio:2/3}.cards.cards-cols-1{--cards-columns:repeat(1, minmax(0, 1fr))}.cards.cards-cols-2{--cards-columns:repeat(2, minmax(0, 1fr))}.cards.cards-cover table.dataview tbody>tr>td img{object-fit:cover}.cards.cards-align-bottom table.dataview tbody>tr>td:last-child{align-items:flex-end;flex-grow:1}@media (max-width:400pt){.cards table.dataview tbody>tr>td:not(:first-child){font-size:80%}}@media (min-width:400pt){.cards-cols-3{--cards-columns:repeat(3, minmax(0, 1fr))}.cards-cols-4{--cards-columns:repeat(4, minmax(0, 1fr))}.cards-cols-5{--cards-columns:repeat(5, minmax(0, 1fr))}.cards-cols-6{--cards-columns:repeat(6, minmax(0, 1fr))}.cards-cols-7{--cards-columns:repeat(7, minmax(0, 1fr))}.cards-cols-8{--cards-columns:repeat(8, minmax(0, 1fr))}}.cm-formatting.cm-formatting-task.cm-property{font-family:var(--font-monospace);font-size:90%}input[data-task="!"]:checked,input[data-task="*"]:checked,input[data-task="-"]:checked,input[data-task="<"]:checked,input[data-task=">"]:checked,input[data-task="I"]:checked,input[data-task="b"]:checked,input[data-task="c"]:checked,input[data-task="d"]:checked,input[data-task="f"]:checked,input[data-task="k"]:checked,input[data-task="l"]:checked,input[data-task="p"]:checked,input[data-task="u"]:checked,input[data-task="w"]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked,li[data-task="I"]>input:checked,li[data-task="I"]>p>input:checked,li[data-task="b"]>input:checked,li[data-task="b"]>p>input:checked,li[data-task="c"]>input:checked,li[data-task="c"]>p>input:checked,li[data-task="d"]>input:checked,li[data-task="d"]>p>input:checked,li[data-task="f"]>input:checked,li[data-task="f"]>p>input:checked,li[data-task="k"]>input:checked,li[data-task="k"]>p>input:checked,li[data-task="l"]>input:checked,li[data-task="l"]>p>input:checked,li[data-task="p"]>input:checked,li[data-task="p"]>p>input:checked,li[data-task="u"]>input:checked,li[data-task="u"]>p>input:checked,li[data-task="w"]>input:checked,li[data-task="w"]>p>input:checked{--checkbox-marker-color:transparent;border:none;border-radius:0;background-image:none;background-color:currentColor;-webkit-mask-size:var(--checkbox-icon);-webkit-mask-position:50% 50%}input[data-task=">"]:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked{color:var(--text-faint);transform:rotate(90deg);-webkit-mask-position:50% 100%;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M10.894 2.553a1 1 0 00-1.788 0l-7 14a1 1 0 001.169 1.409l5-1.429A1 1 0 009 15.571V11a1 1 0 112 0v4.571a1 1 0 00.725.962l5 1.428a1 1 0 001.17-1.408l-7-14z' /%3E%3C/svg%3E")}input[data-task="<"]:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z' clip-rule='evenodd' /%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="?"]:checked,li[data-task="?"]>input:checked,li[data-task="?"]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-yellow);border-color:var(--color-yellow);background-position:50% 50%;background-size:200% 90%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="white" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="?"]:checked,.theme-dark li[data-task="?"]>input:checked,.theme-dark li[data-task="?"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="black" fill-opacity="0.8" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}input[data-task="/"]:checked,li[data-task="/"]>input:checked,li[data-task="/"]>p>input:checked{background-image:none;background-color:transparent;position:relative;overflow:hidden}input[data-task="/"]:checked:after,li[data-task="/"]>input:checked:after,li[data-task="/"]>p>input:checked:after{top:0;left:0;content:" ";display:block;position:absolute;background-color:var(--background-modifier-accent);width:calc(50% - .5px);height:100%;-webkit-mask-image:none}input[data-task="!"]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="\""]:checked,input[data-task="“"]:checked,li[data-task="\""]>input:checked,li[data-task="\""]>p>input:checked,li[data-task="“"]>input:checked,li[data-task="“"]>p>input:checked{--checkbox-marker-color:transparent;background-position:50% 50%;background-color:var(--color-cyan);border-color:var(--color-cyan);background-size:75%;background-repeat:no-repeat;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="white" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="\""]:checked,.theme-dark input[data-task="“"]:checked,.theme-dark li[data-task="\""]>input:checked,.theme-dark li[data-task="\""]>p>input:checked,.theme-dark li[data-task="“"]>input:checked,.theme-dark li[data-task="“"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="black" fill-opacity="0.7" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}input[data-task="-"]:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}body:not(.tasks) .markdown-preview-view ul li[data-task="-"].task-list-item.is-checked,body:not(.tasks) .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task]:is([data-task="-"]),body:not(.tasks) li[data-task="-"].task-list-item.is-checked{color:var(--text-faint);text-decoration:line-through solid var(--text-faint) 1px}input[data-task="*"]:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z' /%3E%3C/svg%3E")}input[data-task="l"]:checked,li[data-task="l"]>input:checked,li[data-task="l"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="i"]:checked,li[data-task="i"]>input:checked,li[data-task="i"]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-blue);border-color:var(--color-blue);background-position:50%;background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="white" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="i"]:checked,.theme-dark li[data-task="i"]>input:checked,.theme-dark li[data-task="i"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="black" fill-opacity="0.8" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}input[data-task="S"]:checked,li[data-task="S"]>input:checked,li[data-task="S"]>p>input:checked{--checkbox-marker-color:transparent;border-color:var(--color-green);background-color:var(--color-green);background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill="white" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="S"]:checked,.theme-dark li[data-task="S"]>input:checked,.theme-dark li[data-task="S"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill-opacity="0.8" fill="black" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}input[data-task="I"]:checked,li[data-task="I"]>input:checked,li[data-task="I"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M11 3a1 1 0 10-2 0v1a1 1 0 102 0V3zM15.657 5.757a1 1 0 00-1.414-1.414l-.707.707a1 1 0 001.414 1.414l.707-.707zM18 10a1 1 0 01-1 1h-1a1 1 0 110-2h1a1 1 0 011 1zM5.05 6.464A1 1 0 106.464 5.05l-.707-.707a1 1 0 00-1.414 1.414l.707.707zM5 10a1 1 0 01-1 1H3a1 1 0 110-2h1a1 1 0 011 1zM8 16v-1h4v1a2 2 0 11-4 0zM12 14c.015-.34.208-.646.477-.859a4 4 0 10-4.954 0c.27.213.462.519.476.859h4.002z' /%3E%3C/svg%3E")}input[data-task="f"]:checked,li[data-task="f"]>input:checked,li[data-task="f"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.395 2.553a1 1 0 00-1.45-.385c-.345.23-.614.558-.822.88-.214.33-.403.713-.57 1.116-.334.804-.614 1.768-.84 2.734a31.365 31.365 0 00-.613 3.58 2.64 2.64 0 01-.945-1.067c-.328-.68-.398-1.534-.398-2.654A1 1 0 005.05 6.05 6.981 6.981 0 003 11a7 7 0 1011.95-4.95c-.592-.591-.98-.985-1.348-1.467-.363-.476-.724-1.063-1.207-2.03zM12.12 15.12A3 3 0 017 13s.879.5 2.5.5c0-1 .5-4 1.25-4.5.5 1 .786 1.293 1.371 1.879A2.99 2.99 0 0113 13a2.99 2.99 0 01-.879 2.121z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="k"]:checked,li[data-task="k"]>input:checked,li[data-task="k"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M18 8a6 6 0 01-7.743 5.743L10 14l-1 1-1 1H6v2H2v-4l4.257-4.257A6 6 0 1118 8zm-6-4a1 1 0 100 2 2 2 0 012 2 1 1 0 102 0 4 4 0 00-4-4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="u"]:checked,li[data-task="u"]>input:checked,li[data-task="u"]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 7a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0V8.414l-4.293 4.293a1 1 0 01-1.414 0L8 10.414l-4.293 4.293a1 1 0 01-1.414-1.414l5-5a1 1 0 011.414 0L11 10.586 14.586 7H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="d"]:checked,li[data-task="d"]>input:checked,li[data-task="d"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 13a1 1 0 100 2h5a1 1 0 001-1V9a1 1 0 10-2 0v2.586l-4.293-4.293a1 1 0 00-1.414 0L8 9.586 3.707 5.293a1 1 0 00-1.414 1.414l5 5a1 1 0 001.414 0L11 9.414 14.586 13H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="w"]:checked,li[data-task="w"]>input:checked,li[data-task="w"]>p>input:checked{color:var(--color-purple);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 3a1 1 0 011-1h.01a1 1 0 010 2H7a1 1 0 01-1-1zm2 3a1 1 0 00-2 0v1a2 2 0 00-2 2v1a2 2 0 00-2 2v.683a3.7 3.7 0 011.055.485 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0A3.7 3.7 0 0118 12.683V12a2 2 0 00-2-2V9a2 2 0 00-2-2V6a1 1 0 10-2 0v1h-1V6a1 1 0 10-2 0v1H8V6zm10 8.868a3.704 3.704 0 01-4.055-.036 1.704 1.704 0 00-1.89 0 3.704 3.704 0 01-4.11 0 1.704 1.704 0 00-1.89 0A3.704 3.704 0 012 14.868V17a1 1 0 001 1h14a1 1 0 001-1v-2.132zM9 3a1 1 0 011-1h.01a1 1 0 110 2H10a1 1 0 01-1-1zm3 0a1 1 0 011-1h.01a1 1 0 110 2H13a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="p"]:checked,li[data-task="p"]>input:checked,li[data-task="p"]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M2 10.5a1.5 1.5 0 113 0v6a1.5 1.5 0 01-3 0v-6zM6 10.333v5.43a2 2 0 001.106 1.79l.05.025A4 4 0 008.943 18h5.416a2 2 0 001.962-1.608l1.2-6A2 2 0 0015.56 8H12V4a2 2 0 00-2-2 1 1 0 00-1 1v.667a4 4 0 01-.8 2.4L6.8 7.933a4 4 0 00-.8 2.4z' /%3E%3C/svg%3E")}input[data-task="c"]:checked,li[data-task="c"]>input:checked,li[data-task="c"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M18 9.5a1.5 1.5 0 11-3 0v-6a1.5 1.5 0 013 0v6zM14 9.667v-5.43a2 2 0 00-1.105-1.79l-.05-.025A4 4 0 0011.055 2H5.64a2 2 0 00-1.962 1.608l-1.2 6A2 2 0 004.44 12H8v4a2 2 0 002 2 1 1 0 001-1v-.667a4 4 0 01.8-2.4l1.4-1.866a4 4 0 00.8-2.4z' /%3E%3C/svg%3E")}input[data-task="b"]:checked,li[data-task="b"]>input:checked,li[data-task="b"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M5 4a2 2 0 012-2h6a2 2 0 012 2v14l-5-2.5L5 18V4z' /%3E%3C/svg%3E")}.colorful-active .nav-files-container{--nav-item-background-active:var(--interactive-accent);--nav-item-color-active:var(--text-on-accent)}.colorful-active #calendar-container .active,.colorful-active #calendar-container .active.today,.colorful-active #calendar-container .active:hover,.colorful-active #calendar-container .day:active{background-color:var(--interactive-accent);color:var(--text-on-accent)}.colorful-active #calendar-container .active .dot,.colorful-active #calendar-container .day:active .dot,.colorful-active #calendar-container .today.active .dot{fill:var(--text-on-accent)}body:not(.colorful-active) .horizontal-tab-nav-item.is-active,body:not(.colorful-active) .vertical-tab-nav-item.is-active{background-color:var(--background-modifier-hover);color:var(--text-normal)}body{--frame-background:hsl( var(--frame-background-h), var(--frame-background-s), var(--frame-background-l));--frame-icon-color:var(--frame-muted-color)}.theme-light{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) + 30%);--frame-outline-color:hsla( var(--frame-background-h), var(--frame-background-s), calc(var(--frame-background-l) - 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) - 35%))}.theme-dark{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) - 25%);--frame-outline-color:hsla( var(--frame-background-h), calc(var(--frame-background-s) - 2%), calc(var(--frame-background-l) + 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) + 25%))}.colorful-frame.theme-dark{--tab-outline-width:0px}.colorful-frame,.colorful-frame.is-focused{--frame-divider-color:var(--frame-outline-color);--titlebar-background:var(--frame-background);--titlebar-background-focused:var(--frame-background);--titlebar-text-color:var(--frame-muted-color);--minimal-tab-text-color:var(--frame-muted-color)}.colorful-frame .workspace-tabs:not(.mod-stacked),.colorful-frame.is-focused .workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color)}.colorful-frame .mod-top .workspace-tab-header-container,.colorful-frame .titlebar,.colorful-frame .workspace-ribbon.mod-left:before,.colorful-frame.is-focused .mod-top .workspace-tab-header-container,.colorful-frame.is-focused .titlebar,.colorful-frame.is-focused .workspace-ribbon.mod-left:before{--tab-outline-color:var(--frame-outline-color);--tab-divider-color:var(--frame-outline-color)}.colorful-frame .mod-root .workspace-tab-header .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-root .workspace-tab-header .workspace-tab-header-inner-icon{--icon-color:var(--minimal-tab-text-color-active);--icon-color-hover:var(--minimal-tab-text-color-active);--icon-color-active:var(--minimal-tab-text-color-active);--icon-color-focused:var(--minimal-tab-text-color-active)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header,.colorful-frame .mod-right-split .mod-top .workspace-tab-header,.colorful-frame .sidebar-toggle-button,.colorful-frame .workspace-tab-header-new-tab,.colorful-frame .workspace-tab-header-tab-list,.colorful-frame .workspace-tab-header:not(.is-active),.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .sidebar-toggle-button,.colorful-frame.is-focused .workspace-tab-header-new-tab,.colorful-frame.is-focused .workspace-tab-header-tab-list,.colorful-frame.is-focused .workspace-tab-header:not(.is-active){--background-modifier-hover:var(--frame-outline-color);--icon-color:var(--frame-icon-color);--icon-color-hover:var(--frame-icon-color);--icon-color-active:var(--frame-icon-color);--icon-color-focused:var(--frame-icon-color);--icon-color-focus:var(--frame-icon-color)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon{color:var(--frame-icon-color)}.workspace-leaf-resize-handle{transition:none}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle{-webkit-app-region:no-drag;border:0;z-index:15}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{content:"";height:100%;width:1px;background:linear-gradient(180deg,var(--frame-outline-color) var(--header-height),var(--divider-color) var(--header-height));top:0;position:absolute}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:hover:after{background:var(--divider-color-hover)}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after{left:0}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{right:0}body.colorful-headings{--h1-color:var(--color-red);--h2-color:var(--color-orange);--h3-color:var(--color-yellow);--h4-color:var(--color-green);--h5-color:var(--color-blue);--h6-color:var(--color-purple)}body.colorful-headings .modal{--h1-color:var(--text-normal);--h2-color:var(--text-normal);--h3-color:var(--text-normal);--h4-color:var(--text-normal);--h5-color:var(--text-normal);--h6-color:var(--text-normal)}.is-mobile .tree-item-self .collapse-icon{width:20px}body:not(.minimal-icons-off) svg.calendar-day,body:not(.minimal-icons-off) svg.excalidraw-icon,body:not(.minimal-icons-off) svg.globe,body:not(.minimal-icons-off) svg.longform,body:not(.minimal-icons-off) svg.obsidian-leaflet-plugin-icon-map{background-color:currentColor}body:not(.minimal-icons-off) svg.excalidraw-icon path{display:none}body:not(.minimal-icons-off) svg.bar-graph{-webkit-mask-image:url('data:image/svg+xml;utf8,')}body:not(.minimal-icons-off) svg.excalidraw-icon{-webkit-mask-image:url('data:image/svg+xml;utf8,')}body:not(.minimal-icons-off) svg.longform{-webkit-mask-image:url('data:image/svg+xml;utf8,')}.fancy-cursor .CodeMirror-cursor{border:none;border-left:2px solid var(--text-accent)}.cm-fat-cursor .CodeMirror-cursor{background-color:var(--text-accent);opacity:.5;width:5px}.cm-animate-fat-cursor{background-color:var(--text-accent);opacity:.5;width:5px}body .markdown-source-view.mod-cm6 .cm-content{caret-color:unset}body.fancy-cursor .markdown-source-view.mod-cm6 .cm-content,body.fancy-cursor .mod-cm6 .cm-line{caret-color:var(--text-accent)}.fancy-cursor input.prompt-input{caret-color:var(--text-accent)}.workspace-ribbon.mod-left{border-left:0;transition:none}.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed,.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary)!important}.minimal-focus-mode .workspace-ribbon.mod-left{transition:background-color 0s linear 0s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed{border-color:transparent;background-color:var(--background-primary)}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary);border-color:transparent}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-settings{opacity:0;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-settings{opacity:1;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode.borders-title .workspace-ribbon.mod-left.is-collapsed{border-right:none}.minimal-focus-mode .mod-top-right-space .sidebar-toggle-button.mod-right{opacity:0}.minimal-focus-mode:not(.minimal-status-off) .status-bar{opacity:0;transition:opacity .2s ease-in-out}.minimal-focus-mode .status-bar:hover{opacity:1;transition:opacity .2s ease-in-out}.minimal-focus-mode .mod-root .workspace-tabs{position:relative}.minimal-focus-mode .mod-root .workspace-tabs:before:hover{background-color:#00f}.minimal-focus-mode .mod-root .workspace-tab-header-container{height:0;transition:all .1s linear .6s;--tab-outline-width:0px}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-tab-list{opacity:0;transition:opacity .1s linear .6s}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-spacer:before{width:100%;content:" ";background-color:transparent;height:15px;position:absolute;z-index:100;top:0;left:0}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{height:var(--header-height);--tab-outline-width:1px;transition:all .1s linear 50ms}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-tab-list{opacity:1;transition:opacity .1s linear 50ms}.minimal-focus-mode.mod-macos:not(.is-fullscreen) .workspace:not(.is-left-sidedock-open) .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner{padding-top:30px}body.show-view-header .app-container .workspace-split.mod-root>.workspace-leaf .view-header{transition:height .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header{height:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .view-header::after{width:100%;content:" ";background-color:transparent;height:40px;position:absolute;z-index:-9;top:0}body.minimal-focus-mode.show-view-header .view-actions,body.minimal-focus-mode.show-view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header-title-container{opacity:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:focus-within,body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:hover,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header{height:calc(var(--header-height) + 2px);transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-actions,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-actions,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:hover .view-actions,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-title-container{opacity:1;transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .view-content{height:100%}.full-width-media .image-embed img:not(.emoji):not([width]),.full-width-media .markdown-preview-view .image-embed img:not(.emoji):not([width]),.full-width-media .markdown-preview-view audio,.full-width-media .markdown-preview-view video{width:100%}.table-small table:not(.calendar){--table-text-size:85%}.table-tiny table:not(.calendar){--table-text-size:75%}.row-alt table:not(.calendar) tbody>tr>td:first-child,.row-alt table:not(.calendar) th:first-child,.row-alt.markdown-source-view.mod-cm6 td:first-child,.row-alt.markdown-source-view.mod-cm6 th:first-child,.row-hover th:first-child,.table-lines table:not(.calendar) tbody>tr>td:first-child,.table-lines table:not(.calendar) thead>tr>th:first-child,.table-lines.markdown-source-view.mod-cm6 td:first-child,.table-lines.markdown-source-view.mod-cm6 th:first-child{padding-left:10px}.row-alt{--table-row-alt-background:var(--background-table-rows)}.col-alt{--table-column-alt-background:var(--background-table-rows)}.table-tabular table:not(.calendar){font-variant-numeric:tabular-nums}.table-lines{--table-border-width:1px;--table-header-border-width:1px;--table-column-first-border-width:1px;--table-column-last-border-width:1px;--table-row-last-border-width:1px}.table-nowrap{--table-white-space:nowrap}.table-nowrap .table-wrap,.trim-cols{--table-white-space:normal}.table-numbers table:not(.calendar){counter-reset:section}.table-numbers table:not(.calendar)>thead>tr>th:first-child::before{content:" ";padding-right:.5em;display:inline-block;min-width:2em}.table-numbers table:not(.calendar)>tbody>tr>td:first-child::before{counter-increment:section;content:counter(section) " ";text-align:center;padding-right:.5em;display:inline-block;min-width:2em;color:var(--text-faint);font-variant-numeric:tabular-nums}.row-lines .table-view-table>tbody>tr>td,.row-lines table:not(.calendar) tbody>tr>td{border-bottom:1px solid var(--background-modifier-border)}.row-lines table:not(.calendar) tbody>tr:last-child>td{border-bottom:none}.col-lines .table-view-table thead>tr>th:not(:last-child),.col-lines .table-view-table>tbody>tr>td:not(:last-child),.col-lines table:not(.calendar) tbody>tr>td:not(:last-child){border-right:1px solid var(--background-modifier-border)}.row-hover{--table-row-background-hover:hsla( var(--accent-h), 50%, 80%, 20% )}.theme-dark .row-hover,.theme-dark.row-hover{--table-row-background-hover:hsla( var(--accent-h), 30%, 40%, 20% )}.theme-dark .markdown-preview-view img,.theme-dark .markdown-source-view img{opacity:var(--image-muted);transition:opacity .25s linear}@media print{body{--image-muted:1}}.theme-dark .markdown-preview-view img:hover,.theme-dark .markdown-source-view img:hover,.theme-dark .print-preview img{opacity:1;transition:opacity .25s linear}div[src$="#invert"],div[src$="#multiply"]{background-color:var(--background-primary)}.theme-dark div[src$="#invert"] img,.theme-dark img[src$="#invert"],.theme-dark span[src$="#invert"] img{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.theme-dark div[src$="#multiply"] img,.theme-dark img[src$="#multiply"],.theme-dark span[src$="#multiply"] img{mix-blend-mode:screen}.theme-light div[src$="#multiply"] img,.theme-light img[src$="#multiply"],.theme-light span[src$="#multiply"] img{mix-blend-mode:multiply}.theme-light div[src$="#invertW"] img,.theme-light img[src$="#invertW"],.theme-light span[src$=invertW] img{filter:invert(1) hue-rotate(180deg)}img[src$="#circle"],span[src$="#circle"] img,span[src$="#round"] img{border-radius:50%;aspect-ratio:1/1}img[src$="#outline"],span[src$="#outline"] img{border:1px solid var(--ui1)}img[src$="#interface"],span[src$="#interface"] img{border:1px solid var(--ui1);box-shadow:0 .5px .9px rgba(0,0,0,.021),0 1.3px 2.5px rgba(0,0,0,.03),0 3px 6px rgba(0,0,0,.039),0 10px 20px rgba(0,0,0,.06);margin-top:10px;margin-bottom:15px;border-radius:var(--radius-m)}body{--image-grid-fit:cover;--image-grid-background:transparent}.image-embed.is-loaded{line-height:0}.image-embed.is-loaded img{background-color:var(--image-grid-background)}.image-embed.is-loaded img:active{background-color:transparent}div:not(.el-embed-image)+.el-embed-image{margin-top:1rem}.el-embed-image{margin-top:.5rem}.contextual-typography .markdown-preview-section>.el-embed-image>p{margin-block-start:0;margin-block-end:0}.img-grid .markdown-preview-section .el-embed-image img:not(.emoji):not([width]),.img-grid .markdown-preview-section video{width:100%}.img-grid .markdown-preview-section>.el-embed-image>p{display:grid;grid-column-gap:0.5rem;grid-row-gap:0;grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.img-grid .markdown-preview-section>.el-embed-image>p>br{display:none}.img-grid .markdown-preview-section>.el-embed-image>p>img{object-fit:var(--image-grid-fit);align-self:stretch}.img-grid .markdown-preview-section>.el-embed-image>p>.internal-embed img{object-fit:var(--image-grid-fit);height:100%}.img-grid .img-grid-ratio .markdown-preview-section>.el-embed-image>p>.internal-embed img,.img-grid.img-grid-ratio .markdown-preview-section>.el-embed-image>p>.internal-embed img{object-fit:contain;height:100%;align-self:center}@media (max-width:400pt){.el-embed-image{margin-top:.25rem}.img-grid .markdown-preview-section>.el-embed-image>p{grid-column-gap:0.25rem}}body:not(.zoom-off) .view-content div:not(.canvas-node-content) img{max-width:100%;cursor:zoom-in}body:not(.zoom-off) .view-content img:active{cursor:zoom-out}body:not(.zoom-off) .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{background-color:var(--background-primary);padding:10px}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active,body:not(.zoom-off) .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{aspect-ratio:unset;cursor:zoom-out;display:block;z-index:200;position:fixed;max-height:calc(100% + 1px);max-width:100%;height:calc(100% + 1px);width:100%;object-fit:contain;margin:-.5px auto 0!important;text-align:center;padding:0;left:0;right:0;bottom:0}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active:after{background-color:var(--background-primary);opacity:.9;content:" ";height:calc(100% + 1px);width:100%;position:fixed;left:0;right:1px;z-index:0}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active img{aspect-ratio:unset;top:50%;z-index:99;transform:translateY(-50%);padding:0;margin:0 auto;width:calc(100% - 20px);max-height:95vh;object-fit:contain;left:0;right:0;bottom:0;position:absolute;opacity:1}.labeled-nav.is-fullscreen:not(.colorful-frame){--labeled-nav-top-margin:0}.labeled-nav{--labeled-nav-top-margin:var(--header-height)}.labeled-nav.is-translucent .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{background-color:transparent}.labeled-nav.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav.mod-macos .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before{-webkit-app-region:drag;position:absolute;width:calc(100% - var(--divider-width));height:calc(var(--header-height) - var(--tab-outline-width));border-bottom:0 solid var(--tab-outline-color)}.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed){border:none;--tab-outline-width:0px}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos:not(.hider-ribbon) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{border-bottom:var(--tab-outline-width) solid var(--tab-outline-color)}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav.mod-macos:not(.hider-ribbon) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav:not(.is-hidden-frameless) .workspace-ribbon.mod-left:not(.is-collapsed){--tab-outline-width:1px}.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{position:absolute;top:0;content:" "}.labeled-nav.hider-ribbon.mod-macos.is-hidden-frameless:not(.is-fullscreen):not(.is-popout-window) .mod-left-split:not(.is-sidedock-collapsed) .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav:not(.is-grabbing):not(.is-fullscreen).is-hidden-frameless .mod-top .workspace-tab-header-container{-webkit-app-region:no-drag}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-spacer{display:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-inner-title{display:inline-block;font-weight:500;font-size:var(--font-adaptive-smaller)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{position:relative;flex-direction:column-reverse!important;height:auto;width:100%}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .sidebar-toggle-button.mod-left{position:absolute;justify-content:flex-end;padding-right:var(--size-4-2);top:0;right:0}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{padding-top:var(--size-4-2);margin-top:var(--labeled-nav-top-margin);flex-direction:column!important;background-color:var(--background-secondary)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-container-inner{flex-grow:1;gap:0;padding:var(--size-4-2) var(--size-4-3)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header{--icon-color:var(--text-muted);--tab-text-color:var(--text-muted);--tab-text-color-focused:var(--text-muted);padding:0;margin-bottom:2px;border:none;height:auto}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:not(:hover){background-color:transparent}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover{opacity:1;--tab-text-color-active:var(--text-normal);--tab-text-color-focused:var(--text-normal);--tab-text-color-focused-active:var(--text-normal);--tab-text-color-focused-active-current:var(--text-normal);--icon-color:var(--text-normal)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header .workspace-tab-header-inner{gap:var(--size-2-3);padding:var(--size-4-1) var(--size-4-2);box-shadow:none;border:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.has-active-menu:hover,.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover{background-color:transparent}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover .workspace-tab-header-inner,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:var(--nav-item-background-hover)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover .workspace-tab-header-inner-icon{color:var(--icon-color-active)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{border:none;padding:0}body{--table-max-width:var(--max-width);--left-margin-table:auto}.maximize-tables-auto{--table-max-width:auto;--left-margin-table:max( calc(50% + var(--folding-offset)/2 - var(--line-width-adaptive)/2), calc(50% + var(--folding-offset)/2 - var(--max-width)/2) )}.maximize-tables-auto.table-100,.maximize-tables-auto.table-max,.maximize-tables-auto.table-wide{--table-max-width:var(--max-width);--left-margin-table:auto}.maximize-tables-off{--table-max-width:auto;--left-margin-table:max( calc(50% + var(--folding-offset)/2 - var(--line-width-adaptive)/2), calc(50% + var(--folding-offset)/2 - var(--max-width)/2))}.maximize-tables-off.table-wide{--left-margin-table:max( calc(50% + var(--folding-offset)/2 - var(--line-width-wide)/2), calc(50% + var(--folding-offset)/2 - var(--max-width)/2))}.maximize-tables-off.table-max{--left-margin-table:calc(50% + var(--folding-offset)/2 - var(--max-width)/2)}.maximize-tables-off.table-100{--left-margin-table:0}.contextual-typography .markdown-preview-view.markdown-preview-view.is-readable-line-width .markdown-preview-sizer{display:flex;flex-direction:column;width:100%;max-width:100%;padding-left:0;padding-top:0}.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-preview-sizer{align-items:center;padding-left:0}.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div{margin-left:auto;margin-right:auto;max-width:var(--max-width);width:var(--line-width-adaptive)}.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-embed .markdown-preview-sizer>div{max-width:100%}.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataview,.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataviewjs,.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-table{width:100%;max-width:100%;overflow-x:auto}.el-lang-dataview .block-language-dataview .contains-task-list,.el-lang-dataviewjs .block-language-dataviewjs .contains-task-list{max-width:100%}.is-readable-line-width .el-lang-dataview .dataview.table-view-table,.is-readable-line-width .el-lang-dataviewjs .dataview.table-view-table,.is-readable-line-width .el-table table{width:var(--table-max-width);max-width:var(--line-width-adaptive);margin:0 auto .5rem}.markdown-embed .el-lang-dataview .dataview.table-view-table,.markdown-embed .el-table table{width:100%}.markdown-preview-view.table-100.is-readable-line-width .el-lang-dataview .dataview.table-view-table,.markdown-preview-view.table-100.is-readable-line-width .el-lang-dataviewjs .dataview.table-view-table,.markdown-preview-view.table-100.is-readable-line-width .el-table table,.table-100 .el-lang-dataview .dataview.table-view-table,.table-100 .el-lang-dataviewjs .dataview.table-view-table,.table-100 .el-table table{max-width:100%!important;width:100%!important}.markdown-preview-view.table-max .el-lang-dataview .dataview.table-view-table,.markdown-preview-view.table-max .el-lang-dataviewjs .dataview.table-view-table,.markdown-preview-view.table-max .el-table table,.table-max .el-lang-dataview .dataview.table-view-table,.table-max .el-lang-dataviewjs .dataview.table-view-table,.table-max .el-table table{max-width:100%!important}.markdown-preview-view.is-readable-line-width.table-wide .el-lang-dataview .dataview.table-view-table,.markdown-preview-view.is-readable-line-width.table-wide .el-lang-dataviewjs .dataview.table-view-table,.markdown-preview-view.is-readable-line-width.table-wide .el-table table,.table-wide .markdown-preview-view.is-readable-line-width .el-lang-dataview .dataview.table-view-table,.table-wide .markdown-preview-view.is-readable-line-width .el-lang-dataviewjs .dataview.table-view-table,.table-wide .markdown-preview-view.is-readable-line-width .el-table table{max-width:var(--line-width-wide)!important}.table-100 .dataview.table-view-table td:first-child,.table-100 .dataview.table-view-table th:first-child,.table-100 .markdown-source-view.mod-cm6 td:first-child,.table-100 .markdown-source-view.mod-cm6 th:first-child,.table-100 table td:first-child,.table-100 table th:first-child{padding-left:20px!important}.table-100 .dataview.table-view-table td:last-child,.table-100 .dataview.table-view-table th:last-child,.table-100 table td:last-child,.table-100 table th:last-child{padding-right:20px}.contextual-typography .chart-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography .chart-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography .chart-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography .chart-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography .iframe-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography .iframe-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography .iframe-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography .iframe-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography .img-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography .img-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography .img-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography .img-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography .map-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography .map-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography .map-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography .map-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.chart-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.chart-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.chart-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.chart-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.iframe-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.iframe-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.iframe-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.iframe-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.img-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.img-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.img-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.img-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.map-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.map-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.map-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.map-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet{width:100%}.contextual-typography .markdown-preview-view.is-readable-line-width.chart-wide .markdown-preview-sizer>.el-lang-chart,.contextual-typography .markdown-preview-view.is-readable-line-width.iframe-wide .markdown-preview-sizer>.el-iframe,.contextual-typography .markdown-preview-view.is-readable-line-width.img-wide .markdown-preview-sizer>.el-embed-image,.contextual-typography .markdown-preview-view.is-readable-line-width.map-wide .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.chart-wide .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.iframe-wide .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.img-wide .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.map-wide .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet{width:var(--line-width-wide)}.contextual-typography .markdown-preview-view.iframe-100 .markdown-preview-sizer>.el-iframe,.contextual-typography .markdown-preview-view.img-100 .markdown-preview-sizer>.el-embed-image,.contextual-typography .markdown-preview-view.is-readable-line-width.chart-100 .markdown-preview-sizer>.el-lang-chart,.contextual-typography .markdown-preview-view.is-readable-line-width.map-100 .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.chart-100 .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.iframe-100 .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.img-100 .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.map-100 .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet{width:100%;max-width:100%}.is-readable-line-width .el-lang-dataview .dataview.table-view-table,.is-readable-line-width .el-lang-dataviewjs .dataview.table-view-table,.is-readable-line-width .el-table table{max-width:calc(var(--line-width-adaptive) - var(--folding-offset));margin-left:var(--left-margin-table)!important}.chart-100 .el-lang-chart,.chart-max .el-lang-chart,.chart-wide .el-lang-chart,.embed-strict .el-embed-page p,.iframe-100 .el-iframe,.iframe-max .el-iframe,.iframe-wide .el-iframe,.img-100 .el-embed-image,.img-max .el-embed-image,.img-wide .el-embed-image,.map-100 .el-lang-leaflet,.map-max .el-lang-leaflet,.map-wide .el-lang-leaflet,.table-100 .el-lang-dataview,.table-100 .el-lang-dataviewjs,.table-100 .el-table,.table-max .el-lang-dataview,.table-max .el-lang-dataviewjs,.table-max .el-table,.table-wide .el-lang-dataview,.table-wide .el-lang-dataviewjs,.table-wide .el-table{--folding-offset:0px}.chart-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.chart-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.img-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.img-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.map-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.map-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.table-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-table-widget>table,.table-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-table-widget>table{width:var(--max-width)!important;max-width:var(--max-width)!important;transform:none!important;padding-left:0;margin:0 auto!important}.chart-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.chart-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.img-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.img-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.map-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.map-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.table-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-table-widget>table,.table-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-table-widget>table{width:var(--line-width-wide)!important;max-width:var(--max-width);transform:none!important;padding-left:0;margin:0 auto!important}.chart-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.chart-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.img-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.img-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.map-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.map-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.table-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width table,.table-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width table{width:100%!important;max-width:100%!important;transform:none!important;margin:0 auto!important;padding-left:0}@media (max-width:400pt){.markdown-preview-view .el-lang-dataview td:first-child .markdown-preview-view .el-lang-dataviewjs th:first-child,.markdown-preview-view .el-lang-dataview th:first-child,.markdown-preview-view .el-lang-dataviewjs td:first-child,.markdown-preview-view .el-table td:first-child,.markdown-preview-view .el-table th:first-child{padding-left:6vw}.markdown-preview-view .el-lang-dataview td:last-child,.markdown-preview-view .el-lang-dataview th:last-child,.markdown-preview-view .el-lang-dataviewjs td:last-child,.markdown-preview-view .el-lang-dataviewjs th:last-child,.markdown-preview-view .el-table td:last-child,.markdown-preview-view .el-table th:last-child{padding-right:6vw}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataview .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataviewjs,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-table{padding-left:0;padding-right:0}.markdown-preview-view .table-view-table table,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataview .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataviewjs,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-table{width:100%}}@media (max-width:400pt){.is-mobile{--folding-offset:0px}}.markdown-preview-view.wide,.markdown-source-view.wide{--line-width-adaptive:var(--line-width-wide)}.markdown-preview-view.max,.markdown-source-view.max{--line-width-adaptive:300em;--line-width-wide:300em}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer{max-width:var(--max-width);width:var(--line-width-adaptive);padding-left:0}.markdown-source-view.is-readable-line-width .CodeMirror{padding-left:0;padding-right:0;margin:0 auto 0 auto;width:var(--line-width-adaptive);max-width:var(--max-width)}.markdown-reading-view .markdown-preview-view:not(.is-readable-line-width)>.markdown-preview-sizer{max-width:var(--max-width);margin:0 auto;padding-left:var(--folding-offset)}.is-mobile .markdown-source-view.mod-cm6 .cm-gutters{padding-right:0}.minimal-readable-off .view-header-title-container{width:var(--max-width)}.markdown-source-view.mod-cm6:not(.is-readable-line-width) .cm-contentContainer,.markdown-source-view.mod-cm6:not(.is-readable-line-width) .inline-title{max-width:var(--max-width);margin:0 0 0 calc(50% - var(--max-width)/ 2)!important;padding-left:var(--folding-offset)}.markdown-source-view.mod-cm6 .cm-content>.cm-embed-block[contenteditable=false]{overflow-x:auto}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div[data-block-language=dataview],.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div[data-block-language=dataviewjs]{padding-left:var(--folding-offset)}.internal-embed>.markdown-embed,.popover:not(.hover-editor){--folding-offset:0}.markdown-source-view.mod-cm6.is-readable-line-width .inline-title{width:calc(var(--line-width-adaptive) - var(--folding-offset));max-width:calc(var(--max-width) - var(--folding-offset));margin-right:auto;margin-left:max(calc(50% + var(--folding-offset) - var(--line-width-adaptive)/ 2),calc(50% + var(--folding-offset) - var(--max-width)/ 2))!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-content,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer{max-width:100%}.markdown-source-view.mod-cm6.is-readable-line-width .cm-line:not(.HyperMD-table-row){max-width:calc(var(--max-width) - var(--folding-offset))}.is-live-preview.is-readable-line-width .cm-embed-block table.dataview,.is-live-preview.is-readable-line-width.embed-strict .internal-embed .markdown-preview-sizer,.is-readable-line-width .block-language-dataview table.dataview,.is-readable-line-width .block-language-dataviewjs table.dataview,.markdown-preview-view.is-readable-line-width .dataview.result-group .contains-task-list,.markdown-source-view.is-live-preview.is-readable-line-width table.NLT__table{width:100%;max-width:100%;transform:none;margin-left:auto!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-line.HyperMD-list-line .internal-embed.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-line>.internal-embed{margin-left:0!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-content>.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-content>img:not([width]),.markdown-source-view.mod-cm6.is-readable-line-width .cm-embed-block.cm-callout>.callout,.markdown-source-view.mod-cm6.is-readable-line-width .cm-html-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-line,.markdown-source-view.mod-cm6.is-readable-line-width .cm-line.HyperMD-codeblock,.markdown-source-view.mod-cm6.is-readable-line-width .cm-line.HyperMD-quote,.markdown-source-view.mod-cm6.is-readable-line-width .embedded-backlinks,.markdown-source-view.mod-cm6.is-readable-line-width .internal-embed,.markdown-source-view.mod-cm6.is-readable-line-width table{width:calc(var(--line-width-adaptive) - var(--folding-offset));max-width:calc(var(--max-width) - var(--folding-offset));margin-right:auto;margin-left:max(calc(50% + var(--folding-offset) - var(--line-width-adaptive)/ 2),calc(50% + var(--folding-offset) - var(--max-width)/ 2))!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-line>.cm-html-embed{--folding-offset:0}.markdown-source-view.mod-cm6.is-readable-line-width .cm-content>img[width]{max-width:var(--max-width);margin-left:max(calc(50% + var(--folding-offset) - var(--line-width-adaptive)/ 2),calc(50% + var(--folding-offset) - var(--max-width)/ 2))!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-embed-block>div,.markdown-source-view.mod-cm6.is-readable-line-width .cm-embed-block>mjx-container,.markdown-source-view.mod-cm6.is-readable-line-width .mod-empty{width:calc(var(--line-width-adaptive) - var(--folding-offset))!important;max-width:calc(var(--max-width) - var(--folding-offset));margin-right:auto;margin-left:max(calc(50% + var(--folding-offset) - var(--line-width-adaptive)/ 2),calc(50% + var(--folding-offset) - var(--max-width)/ 2))!important}.markdown-source-view.mod-cm6.is-readable-line-width .HyperMD-list-line{width:calc(var(--line-width-adaptive) - var(--folding-offset) - var(--list-edit-offset));max-width:calc(var(--max-width) - var(--folding-offset) - var(--list-edit-offset));margin-right:auto;margin-left:max(calc(50% + var(--list-edit-offset) + var(--folding-offset) - var(--line-width-adaptive)/ 2),calc(50% + var(--list-edit-offset) + var(--folding-offset) - var(--max-width)/ 2))!important}body:not(.table-100):not(.table-max):not(.table-wide) .is-live-preview.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.dataview-container>.contains-task-list,body:not(.table-100):not(.table-max):not(.table-wide) .is-live-preview.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.list-view-ul,body:not(.table-100):not(.table-max):not(.table-wide) .is-live-preview.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.result-group>.contains-task-list,body:not(.table-100):not(.table-max):not(.table-wide) .is-live-preview.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview>h4{max-width:100%;margin-right:auto;margin-left:auto;transform:none}body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataview h4,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataview>h4,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs h4,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs>h1,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs>h2,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs>h3,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs>h4,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs>p,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.dataview-container>.contains-task-list,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.dataview-error,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.list-view-ul,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.result-group{width:calc(var(--line-width-adaptive) - var(--folding-offset));max-width:var(--max-width);margin-right:auto;margin-left:auto}.is-live-preview.is-readable-line-width .block-language-dataviewjs h4,.is-live-preview.is-readable-line-width .dataview .contains-task-list,.is-live-preview.is-readable-line-width .dataview.dataview-container .contains-task-list,.is-live-preview.is-readable-line-width .dataview.list-view-ul,.is-live-preview.is-readable-line-width .dataview>h4{--folding-offset:10px;width:calc(var(--line-width-adaptive) - var(--folding-offset));max-width:calc(100% - var(--folding-offset));transform:translateX(calc(var(--folding-offset)/2));margin-right:auto;margin-left:auto}.table-100 .is-live-preview.is-readable-line-width .dataview .contains-task-list,.table-100 .is-live-preview.is-readable-line-width .dataview.list-view-ul,.table-100 .is-live-preview.is-readable-line-width .dataview>h4,.table-100.is-live-preview.is-readable-line-width .dataview .contains-task-list,.table-100.is-live-preview.is-readable-line-width .dataview.list-view-ul,.table-100.is-live-preview.is-readable-line-width .dataview>h4{max-width:calc(var(--max-width) - var(--folding-offset))}.markdown-preview-view.is-readable-line-width .block-language-dataview h4,.markdown-preview-view.is-readable-line-width .block-language-dataview>h4,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs h4,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs>h1,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs>h2,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs>h3,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs>h4,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs>p,.markdown-preview-view.is-readable-line-width .dataview .contains-task-list,.markdown-preview-view.is-readable-line-width .dataview.dataview-error,.markdown-preview-view.is-readable-line-width .dataview.list-view-ul,.markdown-preview-view.is-readable-line-width .dataview.result-group{--folding-offset:10px;width:calc(var(--line-width-adaptive) - var(--folding-offset));max-width:calc(var(--max-width) - var(--folding-offset));margin-left:auto;margin-right:max(calc(50% - var(--line-width-adaptive)/ 2),calc(50% - var(--max-width)/ 2))}body:not(.links-int-on){--link-decoration:none}body:not(.links-ext-on){--link-external-decoration:none}body:not(.sidebar-color) .mod-right-split{--background-secondary:var(--background-primary)}body:not(.sidebar-color) .mod-right-split :not(.mod-top) .workspace-tab-header-container{--tab-container-background:var(--background-primary)}body{--minimal-tab-text-color:var(--text-muted);--minimal-tab-text-color-active:var(--text-normal)}.workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color);--tab-text-color-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active-current:var(--minimal-tab-text-color-active)}.tabs-square .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0}.tabs-underline .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0;--tab-outline-width:0px;--tab-background-active:transparent}.tabs-underline .mod-root .workspace-tab-header-container{border-bottom:1px solid var(--divider-color)}.tabs-underline .mod-root .workspace-tab-header{border-bottom:2px solid transparent}.tabs-underline .mod-root .workspace-tab-header:hover{border-bottom:2px solid var(--ui2)}.tabs-underline .mod-root .workspace-tab-header:hover .workspace-tab-header-inner{background-color:transparent}.tabs-underline .mod-root .workspace-tab-header.is-active{border-bottom:2px solid var(--ax3)}.tabs-underline .mod-root .workspace-tab-header-inner:hover{background-color:transparent}body:not(.sidebar-tabs-underline):not(.sidebar-tabs-index):not(.sidebar-tabs-square) .workspace>.workspace-split:not(.mod-root) .workspace-tabs:not(.mod-top) .workspace-tab-header-container{--tab-outline-width:0}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked){--tab-background:var(--frame-outline-color);--tab-outline-width:1px}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-close-button,.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover .workspace-tab-header-inner-close-button{color:var(--minimal-tab-text-color-active)}.tabs-modern.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{--tab-outline-width:0px}.tabs-modern .mod-root{--tab-container-background:var(--background-primary)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked){--tab-background:var(--background-modifier-hover);--tab-height:calc(var(--header-height) - 14px);--tab-outline-width:0px}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::before{display:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-container-inner{align-items:center;margin:0;padding:2px var(--size-4-2) 0 var(--size-4-1)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner-title{text-overflow:ellipsis;-webkit-mask-image:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header{background:0 0;border-radius:5px;border:none;box-shadow:none;height:var(--tab-height);margin-left:var(--size-4-1);padding:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-title{color:var(--tab-text-color-active)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active.mod-active,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover{opacity:1;background-color:var(--tab-background)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-new-tab{margin-right:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner{padding:0 var(--size-4-1) 0 var(--size-4-2);border:1px solid transparent}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:transparent}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active:not(.mod-active) .workspace-tab-header-inner,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(:hover):not(.mod-active) .workspace-tab-header-inner{border:1px solid var(--tab-outline-color)}.tabs-modern.sidebar-tabs-default .mod-right-split,.tabs-modern.sidebar-tabs-wide .mod-right-split{--tab-outline-width:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:0;margin:0;flex-grow:1;gap:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header{flex-grow:1;border-radius:0;max-width:100px}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover{background-color:transparent}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner{background-color:transparent}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner{border-bottom:2px solid transparent;border-radius:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover{border-color:var(--ui2)}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner{border-color:var(--ax3);padding-top:1px}.sidebar-tabs-square .mod-left-split,.sidebar-tabs-square .mod-right-split{--tab-radius:0px}.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-index:not(.labeled-nav) .mod-left-split,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-square:not(.labeled-nav) .mod-left-split{--tab-background-active:var(--background-secondary)}.sidebar-tabs-index .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner,.sidebar-tabs-square .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:1px var(--size-4-2) 0;margin:6px 0 calc(var(--tab-outline-width) * -1);flex-grow:1}.sidebar-tabs-index .mod-right-split .workspace-tab-header,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header,.sidebar-tabs-square .mod-right-split .workspace-tab-header,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1;max-width:100px;border-radius:var(--tab-radius) var(--tab-radius) 0 0}.sidebar-tabs-index .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active,.sidebar-tabs-square .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{box-shadow:0 0 0 var(--tab-outline-width) var(--tab-outline-color);color:var(--tab-text-color-active);background-color:var(--tab-background-active)}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{flex-grow:1;border:1px solid var(--tab-outline-color);padding:3px;margin:6px 8px 6px;border-radius:4px}.sidebar-tabs-wide .mod-right-split .workspace-tab-header,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1}.sidebar-tabs-wide .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{border-color:transparent}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.full-file-names{--nav-item-white-space:normal}body:not(.full-file-names) .tree-item-inner{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;align-self:center}.theme-dark,.theme-light{--h1l:var(--ui1);--h2l:var(--ui1);--h3l:var(--ui1);--h4l:var(--ui1);--h5l:var(--ui1);--h6l:var(--ui1)}.h1-l .markdown-reading-view h1:not(.embedded-note-title),.h1-l .mod-cm6 .cm-editor .HyperMD-header-1{border-bottom:1px solid var(--h1l);padding-bottom:.4em;margin-block-end:0.6em}.h2-l .markdown-reading-view h2,.h2-l .mod-cm6 .cm-editor .HyperMD-header-2{border-bottom:1px solid var(--h2l);padding-bottom:.4em;margin-block-end:0.6em}.h3-l .markdown-reading-view h3,.h3-l .mod-cm6 .cm-editor .HyperMD-header-3{border-bottom:1px solid var(--h3l);padding-bottom:.4em;margin-block-end:0.6em}.h4-l .markdown-reading-view h4,.h4-l .mod-cm6 .cm-editor .HyperMD-header-4{border-bottom:1px solid var(--h4l);padding-bottom:.4em;margin-block-end:0.6em}.h5-l .markdown-reading-view h5,.h5-l .mod-cm6 .cm-editor .HyperMD-header-5{border-bottom:1px solid var(--h5l);padding-bottom:.4em;margin-block-end:0.6em}.h6-l .markdown-reading-view h6,.h6-l .mod-cm6 .cm-editor .HyperMD-header-6{border-bottom:1px solid var(--h6l);padding-bottom:.4em;margin-block-end:0.6em}.is-tablet .workspace-drawer{padding-top:0}.is-tablet .workspace-drawer:not(.is-pinned){margin:30px 16px 0;height:calc(100vh - 48px);border-radius:15px;border:none}.is-tablet .workspace-drawer-ribbon{background-color:var(--background-primary);border-right:1px solid var(--background-modifier-border)}.is-tablet .workspace-drawer-header{padding-top:var(--size-4-4)}.is-mobile{--interactive-normal:var(--background-secondary);--background-modifier-form-field:var(--background-secondary);--background-modifier-form-field-highlighted:var(--background-secondary)}.is-mobile .markdown-source-view.mod-cm6 .cm-gutters{margin-left:0}.is-mobile .workspace-drawer.mod-left.is-pinned{max-width:var(--mobile-left-sidebar-width);min-width:150pt}.is-mobile .workspace-drawer.mod-right.is-pinned{max-width:var(--mobile-right-sidebar-width);min-width:150pt}.backlink-pane>.tree-item-self,.backlink-pane>.tree-item-self:hover,.outgoing-link-pane>.tree-item-self,.outgoing-link-pane>.tree-item-self:hover{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500}body{--canvas-dot-pattern:var(--background-modifier-border-hover)}.canvas-node-label{font-size:var(--font-adaptive-small)}.canvas-edges :not(.is-themed) path.canvas-display-path{stroke:var(--background-modifier-border-focus)}.canvas-edges :not(.is-themed) polyline.canvas-path-end{stroke:var(--background-modifier-border-focus);fill:var(--background-modifier-border-focus)}.canvas-node-container{border:1.5px solid var(--background-modifier-border-focus)}.node-insert-event.mod-inside-iframe{--max-width:100%;--folding-offset:0px}.node-insert-event.mod-inside-iframe .cm-editor .cm-content{padding-top:0}.is-mobile .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{display:none}body:not(.is-mobile) .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest)}.nav-buttons-container{justify-content:flex-start}.nav-file-tag{padding-top:.2em;background-color:transparent;color:var(--text-faint)}.nav-file .is-active .nav-file-tag,.nav-file:hover .nav-file-tag{color:var(--text-muted)}input.prompt-input,input.prompt-input:focus,input.prompt-input:focus-visible,input.prompt-input:hover{border-color:rgba(var(--mono-rgb-100),.05)}.is-mobile .mod-publish .modal-content{display:unset;padding:10px 10px 10px;margin-bottom:120px;overflow-x:hidden}.is-mobile .mod-publish .button-container,.is-mobile .modal.mod-publish .modal-button-container{padding:10px 15px 30px;margin-left:0;left:0}.is-mobile .modal.mod-publish .modal-title{padding:10px 20px;margin:0 -10px;border-bottom:1px solid var(--background-modifier-border)}.is-mobile .publish-site-settings-container{margin-right:0;padding:0}.is-mobile .modal.mod-publish .modal-content .publish-sections-container{margin-right:0;padding-right:0}@media (max-width:400pt){.is-mobile .publish-changes-info,.is-mobile .publish-section-header{flex-wrap:wrap;border:none}.is-mobile .publish-changes-info .publish-changes-add-linked-btn{flex-basis:100%;margin-top:10px}.is-mobile .publish-section-header-text{flex-basis:100%;margin-bottom:10px;margin-left:20px;margin-top:-8px}.is-mobile .publish-section{background:var(--background-secondary);border-radius:10px;padding:12px 12px 1px}.is-mobile .publish-changes-switch-site{flex-grow:0;margin-right:10px}}.release-notes-view .cm-scroller.is-readable-line-width{width:var(--line-width-adaptive);max-width:var(--max-width);margin:0 auto}.search-results-info{border-bottom:none}@media (max-width:400pt){.is-mobile .modal.mod-sync-log{width:100vw;height:100vh;max-height:calc(100vh - 32px);box-shadow:0 -32px 0 32px var(--background-primary);bottom:0;padding-bottom:10px}}.obsidian-banner.solid{border-bottom:var(--divider-width) solid var(--divider-color)}.contextual-typography .markdown-preview-view div.has-banner-icon.obsidian-banner-wrapper{overflow:visible}.theme-dark .markdown-preview-view img.emoji{opacity:1}body.theme-dark .button-default,body.theme-light .button-default{border:none;box-shadow:none;height:var(--input-height);background:var(--background-modifier-hover);color:var(--text-normal);font-size:revert;font-weight:500;transform:none;transition:all .1s linear;padding:0 20px}body.theme-dark .button-default:hover,body.theme-light .button-default:hover{border:none;background:var(--background-modifier-border-hover);box-shadow:none;transform:none;transition:all .1s linear}body.theme-dark .button-default:active,body.theme-dark .button-default:focus,body.theme-light .button-default:active,body.theme-light .button-default:focus{box-shadow:none}body .button-default.blue{background-color:var(--color-blue)!important}.button-default.red{background-color:var(--color-red)!important}.button-default.green{background-color:var(--color-green)!important}.button-default.yellow{background-color:var(--color-yellow)!important}.button-default.purple{background-color:var(--color-purple)!important}.workspace-leaf-content[data-type=calendar] .view-content{padding:5px 0 0 0}.mod-root #calendar-container{width:var(--line-width-adaptive);max-width:var(--max-width);margin:0 auto;padding:0}#calendar-container{padding:0 var(--size-4-4) var(--size-4-1);--color-background-day-empty:var(--background-secondary-alt);--color-background-day-active:var(--background-modifier-hover);--color-background-day-hover:var(--background-modifier-hover);--color-dot:var(--text-faint);--color-text-title:var(--text-normal);--color-text-heading:var(--text-muted);--color-text-day:var(--text-normal);--color-text-today:var(--text-normal);--color-arrow:var(--text-faint);--color-background-day-empty:transparent}#calendar-container .table{border-collapse:separate;table-layout:fixed}#calendar-container h2{font-weight:400;font-size:var(--h2)}#calendar-container .arrow{cursor:var(--cursor);width:22px;border-radius:4px;padding:3px 7px}#calendar-container .arrow svg{width:12px;height:12px;color:var(--text-faint);opacity:.7}#calendar-container .arrow:hover{fill:var(--text-muted);color:var(--text-muted);background-color:var(--background-modifier-hover)}#calendar-container .arrow:hover svg{color:var(--text-muted);opacity:1}#calendar-container tr th{padding:2px 0 4px;font-weight:500;letter-spacing:.1em;font-size:var(--font-adaptive-smallest)}#calendar-container tr th:first-child{padding-left:0!important}#calendar-container tr td{padding:2px 0 0 0;border-radius:var(--radius-m);cursor:var(--cursor);border:1px solid transparent;transition:none}#calendar-container tr td:first-child{padding-left:0!important}#calendar-container .nav{padding:0;margin:var(--size-4-2) var(--size-4-1)}#calendar-container .dot{margin:0}#calendar-container .month,#calendar-container .title,#calendar-container .year{font-size:var(--font-adaptive-normal);font-weight:400;color:var(--text-normal)}#calendar-container .today,#calendar-container .today.active{color:var(--text-accent);font-weight:600}#calendar-container .today .dot,#calendar-container .today.active .dot{fill:var(--text-accent)}#calendar-container .active .task{stroke:var(--text-faint)}#calendar-container .active{color:var(--text-normal)}#calendar-container .reset-button{text-transform:none;letter-spacing:0;font-size:var(--font-adaptive-smaller);font-weight:500;color:var(--text-muted);border-radius:4px;margin:0;padding:2px 8px}#calendar-container .reset-button:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}#calendar-container .day,#calendar-container .reset-button{cursor:var(--cursor)}#calendar-container .day.adjacent-month{color:var(--text-faint);opacity:1}#calendar-container .day{padding:2px 4px 4px;font-size:calc(var(--font-adaptive-normal) - 2px)}#calendar-container .active,#calendar-container .active.today,#calendar-container .day:hover,#calendar-container .week-num:hover{background-color:var(--color-background-day-active)}#calendar-container .active .dot{fill:var(--text-faint)}#calendar-container .active .task{stroke:var(--text-faint)}.block-language-chart canvas,.block-language-dataviewjs canvas{margin:1em 0}.theme-dark,.theme-light{--chart-color-1:var(--color-blue);--chart-color-2:var(--color-red);--chart-color-3:var(--color-yellow);--chart-color-4:var(--color-green);--chart-color-5:var(--color-orange);--chart-color-6:var(--color-purple);--chart-color-7:var(--color-cyan);--chart-color-8:var(--color-pink)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact,.checklist-plugin-main .group .page,.checklist-plugin-main .group svg{cursor:var(--cursor)}.workspace .view-content .checklist-plugin-main{padding:10px 10px 15px 15px;--todoList-togglePadding--compact:2px;--todoList-listItemMargin--compact:2px}.checklist-plugin-main .title{font-weight:400;color:var(--text-muted);font-size:var(--font-adaptive-small)}.checklist-plugin-main .group svg{fill:var(--text-faint)}.checklist-plugin-main .group svg:hover{fill:var(--text-normal)}.checklist-plugin-main .group .title:hover{color:var(--text-normal)}.checklist-plugin-main .group:not(:last-child){border-bottom:1px solid var(--background-modifier-border)}.checklist-plugin-main .group{padding:0 0 2px 0}.checklist-plugin-main .group .classic:last-child,.checklist-plugin-main .group .compact:last-child{margin-bottom:10px}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{font-size:var(--font-adaptive-small)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{background:0 0;border-radius:0;margin:1px auto;padding:0}.checklist-plugin-main .group .classic .content{padding:0}.checklist-plugin-main .group .classic:hover,.checklist-plugin-main .group .compact:hover{background:0 0}.markdown-preview-view.checklist-plugin-main ul>li:not(.task-list-item)::before{display:none}.checklist-plugin-main .group .compact>.toggle .checked{background:var(--text-accent);top:-1px;left:-1px;height:18px;width:18px}.checklist-plugin-main .compact .toggle:hover{opacity:1!important}.checklist-plugin-main .group .count{font-size:var(--font-adaptive-smaller);padding:0;background:0 0;font-weight:400;color:var(--text-faint)}.checklist-plugin-main .group .group-header:hover .count{color:var(--text-muted)}.checklist-plugin-main .group .checkbox{border:1px solid var(--background-modifier-border-hover);min-height:18px;min-width:18px;height:18px;width:18px}.checklist-plugin-main .group .checkbox:hover{border:1px solid var(--background-modifier-border-focus)}.checklist-plugin-main button:active,.checklist-plugin-main button:focus,.checklist-plugin-main button:hover{box-shadow:none!important}.checklist-plugin-main button.collapse{padding:0}body:not(.is-mobile) .checklist-plugin-main button.collapse svg{width:18px;height:18px}.is-mobile .checklist-plugin-main .group-header .title{flex-grow:1;flex-shrink:0}.is-mobile .checklist-plugin-main button{width:auto}.is-mobile .checklist-plugin-main.markdown-preview-view ul{padding-inline-start:0}.is-mobile .workspace .view-content .checklist-plugin-main{padding-bottom:50px}body #cMenuModalBar{box-shadow:0 2px 20px var(--shadow-color)}body #cMenuModalBar .cMenuCommandItem{cursor:var(--cursor)}body #cMenuModalBar button.cMenuCommandItem:hover{background-color:var(--background-modifier-hover)}.MiniSettings-statusbar-button{padding-top:0;padding-bottom:0}.el-hr hr{margin:1rem 0}.el-p+.el-h1,.el-p+.el-h2{margin-top:.75rem}.el-h1+.el-h1,.el-h1+.el-h2,.el-h2+.el-h2,.el-hr+.el-h1,.el-hr+.el-h2{margin-top:0}.el-lang-dataview+.el-p,.el-lang-dataviewjs+.el-p,.el-ol+.el-lang-dataview,.el-ol+.el-lang-dataviewjs,.el-ol+.el-table,.el-p+.el-table,.el-p:not(.el-lang-dataview)+.el-lang-dataview,.el-p:not(.el-lang-dataviewjs)+.el-lang-dataviewjs,.el-ul+.el-lang-dataview,.el-ul+.el-lang-dataviewjs,.el-ul+.el-table{margin-top:var(--spacing-p)}.el-div+.el-h1,.el-embed-image+.el-p:not(.el-embed-image),.el-iframe+.el-p,.el-lang-leaflet,.el-lang-leaflet+*,.el-p+.el-iframe,.el-p:not(.el-embed-image)+.el-embed-image,.el-pre+.el-h1{margin-top:1rem}.markdown-preview-view .table-view-table>thead>tr>th,body .table-view-table>thead>tr>th{font-weight:400;font-size:var(--table-text-size);color:var(--text-muted);border-bottom:1px solid var(--background-modifier-border);cursor:var(--cursor)}table.dataview ul.dataview-ul{list-style:none;padding-inline-start:0;margin-block-start:0em!important;margin-block-end:0em!important}.markdown-preview-view .table-view-table>tbody>tr>td,.markdown-source-view.mod-cm6 .table-view-table>tbody>tr>td{max-width:var(--max-col-width)}body .dataview.small-text{color:var(--text-faint)}body:not(.row-hover) .dataview.task-list-basic-item:hover,body:not(.row-hover) .dataview.task-list-item:hover,body:not(.row-hover) .table-view-table>tbody>tr:hover{background-color:transparent!important;box-shadow:none}body.row-hover .dataview.task-list-basic-item:hover,body.row-hover .dataview.task-list-item:hover,body.row-hover .table-view-table>tbody>tr:hover{background-color:var(--table-row-background-hover)!important}body .dataview-error{margin-top:16px;background-color:transparent}.dataview.dataview-error,.markdown-source-view.mod-cm6 .cm-content .dataview.dataview-error{color:var(--text-muted)}body div.dataview-error-box{min-height:0;border:none;background-color:transparent;font-size:var(--table-text-size);border-radius:var(--radius-m);padding:15px 0}body div.dataview-error-box p{margin-block-start:0;margin-block-end:0;color:var(--text-faint)}.markdown-source-view div.dataview-error-box{margin-top:15px}.trim-cols .markdown-preview-view .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>thead>tr>th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}ul .dataview .task-list-basic-item:hover,ul .dataview .task-list-item:hover{background-color:transparent;box-shadow:none}body .dataview.result-group{padding-left:0}body .dataview .inline-field-standalone-value,body .dataview.inline-field-key,body .dataview.inline-field-value{font-family:var(--font-text);font-size:calc(var(--font-adaptive-normal) - 2px);background:0 0;color:var(--text-muted)}body .dataview.inline-field-key{padding:0}body .dataview .inline-field-standalone-value{padding:0}body .dataview.inline-field-key::after{margin-left:3px;content:"|";color:var(--background-modifier-border)}body .dataview.inline-field-value{padding:0 1px 0 3px}.markdown-preview-view .block-language-dataview table.calendar th{border:none;cursor:default;background-image:none}.markdown-preview-view .block-language-dataview table.calendar .day{font-size:var(--font-adaptive-small)}.database-plugin__navbar,.database-plugin__scroll-container,.database-plugin__table{width:100%}.dbfolder-table-container{--font-adaptive-normal:var(--table-text-size);--font-size-text:12px}.database-plugin__cell_size_wide .database-plugin__td{padding:.15rem}.database-plugin__table{border-spacing:0!important}.MuiAppBar-root{background-color:transparent!important}.workspace-leaf-content .view-content.dictionary-view-content{padding:0}div[data-type=dictionary-view] .contents{padding-bottom:2rem}div[data-type=dictionary-view] .results>.container{background-color:transparent;margin-top:0;max-width:none;padding:0 10px}div[data-type=dictionary-view] .error,div[data-type=dictionary-view] .errorDescription{text-align:left;font-size:var(--font-adaptive-small);padding:10px 12px 0;margin:0}div[data-type=dictionary-view] .results>.container h3{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 0 2px;margin-bottom:6px}div[data-type=dictionary-view] .container .main{border-radius:0;background-color:transparent;font-size:var(--font-adaptive-smaller);line-height:1.3;color:var(--text-muted);padding:5px 0 0}div[data-type=dictionary-view] .main .definition{padding:10px;border:1px solid var(--background-modifier-border);border-radius:5px;margin:10px 0 5px;background-color:var(--background-primary)}div[data-type=dictionary-view] .main .definition:last-child{border:1px solid var(--background-modifier-border)}div[data-type=dictionary-view] .main .synonyms{padding:10px 0 0}div[data-type=dictionary-view] .main .synonyms p{margin:0}div[data-type=dictionary-view] .main .definition>blockquote{margin:0}div[data-type=dictionary-view] .main .label{color:var(--text-normal);margin-bottom:2px;font-size:var(--font-adaptive-smaller);font-weight:500}div[data-type=dictionary-view] .main .mark{color:var(--text-normal);background-color:var(--text-selection);box-shadow:none}div[data-type=dictionary-view] .main>.opener{font-size:var(--font-adaptive-small);color:var(--text-normal);padding-left:5px}body .excalidraw,body .excalidraw.theme--dark{--color-primary-light:var(--text-selection);--color-primary:var(--interactive-accent);--color-primary-darker:var(--interactive-accent-hover);--color-primary-darkest:var(--interactive-accent-hover);--ui-font:var(--font-interface);--island-bg-color:var(--background-secondary);--icon-fill-color:var(--text-normal);--button-hover:var(--background-modifier-hover);--button-gray-1:var(--background-modifier-hover);--button-gray-2:var(--background-modifier-hover);--focus-highlight-color:var(--background-modifier-border-focus);--default-bg-color:var(--background-primary);--default-border-color:var(--background-modifier-border);--input-border-color:var(--background-modifier-border);--link-color:var(--text-accent);--overlay-bg-color:rgba(255, 255, 255, 0.88);--text-primary-color:var(--text-normal)}.git-view-body .opener{text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 5px 10px;margin-bottom:6px}.git-view-body .file-view .opener{text-transform:none;letter-spacing:normal;font-size:var(--font-adaptive-smallest);font-weight:400;padding:initial;margin-bottom:0}.git-view-body .file-view .opener .collapse-icon{display:flex!important;margin-left:-7px}.git-view-body{margin-top:6px}.git-view-body .file-view{margin-left:4px}.git-view-body .file-view main:hover{color:var(--text-normal)}.git-view-body .file-view .tools .type{display:none!important}.git-view-body .file-view .tools{opacity:0;transition:opacity .1s}.git-view-body .file-view main:hover>.tools{opacity:1}.git-view-body .staged{margin-bottom:12px}.git-view-body .opener.open{color:var(--text-normal)}div[data-type=git-view] .search-input-container{margin-left:0;width:100%}.git-view-body .opener .collapse-icon{display:none!important}.git-view-body main{background-color:var(--background-primary)!important;width:initial!important}.git-view-body .file-view>main:not(.topLevel){margin-left:7px}div[data-type=git-view] .commit-msg{min-height:2.5em!important;height:2.5em!important;padding:6.5px 8px!important}div[data-type=git-view] .search-input-clear-button{bottom:5.5px}.mod-macos.hider-frameless .workspace-ribbon{border:none}.hider-ribbon:not(.is-mobile) .workspace-ribbon-collapse-btn{display:none}.hider-ribbon:not(.is-mobile) .workspace-ribbon.mod-right{pointer-events:none}.hider-ribbon:not(.is-mobile) .workspace-ribbon.mod-left{position:absolute;border-right:0px;margin:0;height:var(--header-height);overflow:visible;flex-basis:0;bottom:0;top:auto;display:flex!important;flex-direction:row;z-index:17;opacity:0;transition:opacity .25s ease-in-out;filter:drop-shadow(2px 10px 30px rgba(0,0,0,.2));gap:0}.hider-ribbon:not(.is-mobile) .side-dock-actions,.hider-ribbon:not(.is-mobile) .side-dock-settings{flex-direction:row;display:flex;border-top:var(--border-width) solid var(--background-modifier-border);background:var(--background-secondary);margin:0;position:relative;gap:var(--size-2-2)}.hider-ribbon:not(.is-mobile) .side-dock-actions{padding-left:8px}.hider-ribbon:not(.is-mobile) .side-dock-settings{border-right:var(--border-width) solid var(--background-modifier-border);border-top-right-radius:var(--radius-m);padding:0 var(--size-2-2)}.hider-ribbon:not(.is-mobile) .workspace-ribbon.mod-left .side-dock-ribbon-action{display:flex;margin:7px 0 8px}.hider-ribbon:not(.is-mobile) .workspace-ribbon.mod-left:hover{opacity:1;transition:opacity .25s ease-in-out}.hider-ribbon:not(.is-mobile) .workspace-ribbon.mod-left .workspace-ribbon-collapse-btn{opacity:0}.hider-ribbon:not(.is-mobile) .workspace-split.mod-left-split{margin:0}.hider-ribbon:not(.is-mobile) .workspace-leaf-content .item-list{padding-bottom:40px}.hider-ribbon .workspace-ribbon{padding:0}.popover.hover-editor{--folding-offset:10px}.theme-dark,.theme-light{--he-title-bar-inactive-bg:var(--background-secondary);--he-title-bar-inactive-pinned-bg:var(--background-secondary);--he-title-bar-active-pinned-bg:var(--background-secondary);--he-title-bar-active-bg:var(--background-secondary);--he-title-bar-inactive-fg:var(--text-muted);--he-title-bar-active-fg:var(--text-normal);--he-title-bar-font-size:14px}.theme-light{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.032),0px 5.9px 8.7px rgba(0, 0, 0, 0.052),0px 10.4px 18.1px rgba(0, 0, 0, 0.071),0px 20px 40px rgba(0, 0, 0, 0.11)}.theme-dark{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.081),0px 5.9px 8.7px rgba(0, 0, 0, 0.131),0px 10.4px 18.1px rgba(0, 0, 0, 0.18),0px 20px 40px rgba(0, 0, 0, 0.28)}.popover.hover-editor:not(.snap-to-viewport){--max-width:92%}.popover.hover-editor:not(.snap-to-viewport) .markdown-preview-view,.popover.hover-editor:not(.snap-to-viewport) .markdown-source-view .cm-content{font-size:90%}body .popover.hover-editor:not(.is-loaded){box-shadow:var(--popover-shadow)}body .popover.hover-editor:not(.is-loaded) .markdown-preview-view{padding:15px 0 0 0}body .popover.hover-editor:not(.is-loaded) .view-content{height:100%;background-color:var(--background-primary)}body .popover.hover-editor:not(.is-loaded) .view-actions{height:auto}body .popover.hover-editor:not(.is-loaded) .popover-content{border:1px solid var(--background-modifier-border-hover)}body .popover.hover-editor:not(.is-loaded) .popover-titlebar{padding:0 4px}body .popover.hover-editor:not(.is-loaded) .popover-titlebar .popover-title{padding-left:4px;letter-spacing:-.02em;font-weight:var(--title-weight)}body .popover.hover-editor:not(.is-loaded) .markdown-embed{height:auto;font-size:unset;line-height:unset}body .popover.hover-editor:not(.is-loaded) .markdown-embed .markdown-preview-view{padding:0}body .popover.hover-editor:not(.is-loaded).show-navbar .popover-titlebar{border-bottom:var(--border-width) solid var(--background-modifier-border)}body .popover.hover-editor:not(.is-loaded) .popover-action,body .popover.hover-editor:not(.is-loaded) .popover-header-icon{cursor:var(--cursor);margin:4px 0;padding:4px 3px;border-radius:var(--radius-m);color:var(--icon-color)}body .popover.hover-editor:not(.is-loaded) .popover-action.mod-pin-popover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.mod-pin-popover{padding:4px 2px}body .popover.hover-editor:not(.is-loaded) .popover-action svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon svg{opacity:var(--icon-muted)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover{background-color:var(--background-modifier-hover);color:var(--icon-color-hover)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover svg{opacity:1;transition:opacity .1s ease-in-out}body .popover.hover-editor:not(.is-loaded) .popover-action.is-active,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.is-active{color:var(--icon-color)}body.minimal-dark-black.theme-dark,body.minimal-dark-tonal.theme-dark,body.minimal-light-tonal.theme-light,body.minimal-light-white.theme-light,body.theme-dark{--kanban-border:0px}body:not(.is-mobile) .kanban-plugin__grow-wrap>textarea:focus{box-shadow:none}body:not(.minimal-icons-off) .kanban-plugin svg.cross{height:14px;width:14px}body .kanban-plugin__icon>svg,body .kanban-plugin__lane-settings-button svg{width:18px;height:18px}body .kanban-plugin{--kanban-border:var(--border-width);--interactive-accent:var(--text-selection);--interactive-accent-hover:var(--background-modifier-hover);--text-on-accent:var(--text-normal);background-color:var(--background-primary)}body .kanban-plugin__markdown-preview-view{font-family:var(--font-text)}body .kanban-plugin__board>div{margin:0 auto}body .kanban-plugin__checkbox-label{color:var(--text-muted)}body .kanban-plugin__item-markdown ul{margin:0}body .kanban-plugin__item-content-wrapper{box-shadow:none}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea{padding:0;border:0;border-radius:0}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__item-title p,body .kanban-plugin__markdown-preview-view{font-size:var(--font-ui-medium);line-height:1.3}body .kanban-plugin__item{background-color:var(--background-primary)}body .kanban-plugin__item-title-wrapper{align-items:center}body .kanban-plugin__lane-form-wrapper{border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane-header-wrapper{border-bottom:0}body .kanban-plugin__lane-header-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-input-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-title p{background:0 0;color:var(--text-normal);font-size:var(--font-ui-medium);font-weight:500}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea{padding:0;border-radius:0;height:auto}body .kanban-plugin__item-form .kanban-plugin__grow-wrap{background-color:var(--background-primary)}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea::placeholder{color:var(--text-faint)}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button,body .kanban-plugin__item button.kanban-plugin__item-edit-button,body .kanban-plugin__item-settings-actions>button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane-action-wrapper>button{background:0 0;transition:color .1s ease-in-out}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button:hover,body .kanban-plugin__item button.kanban-plugin__item-edit-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-edit-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{color:var(--text-normal);transition:color .1s ease-in-out;background:0 0}body .kanban-plugin__new-lane-button-wrapper{position:fixed;bottom:30px}body .kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{border:1px dashed var(--background-modifier-border);height:2em}body .kanban-plugin__item-postfix-button-wrapper{align-self:flex-start}body .kanban-plugin__item button.kanban-plugin__item-postfix-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-prefix-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled{color:var(--text-muted)}body .kanban-plugin button{box-shadow:none;cursor:var(--cursor);height:auto}body .kanban-plugin__item button.kanban-plugin__item-postfix-button:hover,body .kanban-plugin__item button.kanban-plugin__item-prefix-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{background-color:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button{color:var(--text-muted);font-weight:400;background:0 0;height:32px}body .kanban-plugin__item-button-wrapper>button:hover{color:var(--text-normal);background:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button:focus{box-shadow:none}body .kanban-plugin__item-button-wrapper{padding:1px 6px 5px;border-top:none}body .kanban-plugin__lane-setting-wrapper>div:last-child{border:none;margin:0}body .kanban-plugin.something-is-dragging{cursor:grabbing;cursor:-webkit-grabbing}body .kanban-plugin__item.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15),0 0 0 2px var(--text-selection)}body .kanban-plugin__lane{background:0 0;padding:0;border:var(--border-width) solid transparent}body .kanban-plugin__lane.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15);border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane-items{border:var(--kanban-border) solid var(--background-modifier-border);border-bottom:none;padding:0 4px;border-top-left-radius:8px;border-top-right-radius:8px;margin:0;background-color:var(--background-secondary)}body .kanban-plugin__item-input-wrapper{border:0;padding-top:1px;flex-grow:1}body .kanban-plugin__item-button-wrapper,body .kanban-plugin__item-form{background-color:var(--background-secondary);border:var(--kanban-border) solid var(--background-modifier-border);border-top:none;border-bottom-left-radius:8px;border-bottom-right-radius:8px}body .kanban-plugin__item-form{padding:0 4px 5px}body .kanban-plugin__markdown-preview-view ol,body .kanban-plugin__markdown-preview-view ol.contains-task-list .contains-task-list,body .kanban-plugin__markdown-preview-view ul,body .kanban-plugin__markdown-preview-view ul.contains-task-list .contains-task-list{padding-inline-start:1.8em!important}@media (max-width:400pt){.kanban-plugin__board{flex-direction:column!important}.kanban-plugin__lane{width:100%!important;margin-bottom:1rem!important}}body .cm-heading-marker{cursor:var(--cursor);padding-left:10px}.theme-light{--leaflet-buttons:var(--bg1);--leaflet-borders:rgba(0,0,0,0.1)}.theme-dark{--leaflet-buttons:var(--bg2);--leaflet-borders:rgba(255,255,255,0.1)}.leaflet-top{transition:top .1s linear}.mod-macos.minimal-focus-mode .mod-root .map-100 .markdown-preview-sizer.markdown-preview-section .el-lang-leaflet:nth-child(3) .leaflet-top{top:calc(18px + var(--ewt-traffic-light-y));transition:top .1s linear}body .leaflet-container{background-color:var(--background-secondary);font-family:var(--font-interface)}.map-100 .markdown-preview-sizer.markdown-preview-section .el-lang-leaflet:nth-child(3){margin-top:-16px}.leaflet-control-attribution{display:none}.leaflet-popup-content{margin:10px}.block-language-leaflet{border-radius:var(--radius-m);overflow:hidden;border:var(--border-width) solid var(--background-modifier-border)}.map-wide .block-language-leaflet{border-radius:var(--radius-l)}.map-max .block-language-leaflet{border-radius:var(--radius-xl)}.workspace-leaf-content[data-type=obsidian-leaflet-map-view] .block-language-leaflet{border-radius:0;border:none}.map-100 .block-language-leaflet{border-radius:0;border-left:none;border-right:none}.block-language-leaflet .leaflet-control-expandable-list .input-container .input-item>input{appearance:none}body .block-language-leaflet .leaflet-bar.disabled>a{background-color:transparent;opacity:.3}body .leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}body .leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}body .leaflet-control-layers-toggle{border-radius:4px}body .block-language-leaflet .leaflet-control-expandable,body .block-language-leaflet .leaflet-control-has-actions .control-actions.expanded,body .block-language-leaflet .leaflet-distance-control,body .leaflet-bar,body .leaflet-bar a,body .leaflet-control-layers-expanded,body .leaflet-control-layers-toggle{background-color:var(--leaflet-buttons);color:var(--text-muted);border:none;user-select:none}body .leaflet-bar a.leaflet-disabled,body .leaflet-bar a.leaflet-disabled:hover{background-color:var(--leaflet-buttons);color:var(--text-faint);opacity:.6;cursor:not-allowed}body .leaflet-control a{cursor:var(--cursor);color:var(--text-normal)}body .leaflet-bar a:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);border:none}body .leaflet-touch .leaflet-control-layers{background-color:var(--leaflet-buttons)}body .leaflet-touch .leaflet-bar,body .leaflet-touch .leaflet-control-layers{border-radius:5px;box-shadow:2px 0 8px 0 rgba(0,0,0,.1);border:1px solid var(--ui1)}body .block-language-leaflet .leaflet-control-has-actions .control-actions{box-shadow:0;border:1px solid var(--ui1)}body .leaflet-control-expandable-list .leaflet-bar{box-shadow:none;border-radius:0}body .block-language-leaflet .leaflet-distance-control{padding:4px 10px;height:auto;cursor:var(--cursor)!important}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper>*{font-size:var(--font-adaptive-small);font-family:var(--font-interface)}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper{padding:4px 10px!important}.leaflet-marker-icon svg path{stroke:var(--background-primary);stroke-width:18px}.map-view-marker-name{font-weight:400}.workspace-leaf-content[data-type=map] .graph-controls{background-color:var(--background-primary)}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-split.mod-root .workspace-leaf-content[data-type=map] .view-header{position:fixed;background:0 0!important;width:100%;z-index:99}body:not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-header-title{display:none}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-actions{background:0 0}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-content{height:100%}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .leaflet-top.leaflet-right{top:var(--header-height)}.obsidian-metatable{--metatable-font-size:calc(var(--font-adaptive-normal) - 2px);--metatable-font-family:var(--font-interface);--metatable-background:transparent;--metatable-foreground:var(--text-faint);--metatable-key-background:transparent;--metatable-key-border-width:0;--metatable-key-border-color:transparent;--metatable-value-background:transparent;padding-bottom:.5rem}.obsidian-metatable::part(key),.obsidian-metatable::part(value){border-bottom:0 solid var(--background-modifier-border);padding:.1rem 0;text-overflow:ellipsis;overflow:hidden}.obsidian-metatable::part(key){font-weight:400;color:var(--tx3);font-size:calc(var(--font-adaptive-normal) - 2px)}.obsidian-metatable::part(value){font-size:calc(var(--font-adaptive-normal) - 2px);color:var(--tx1)}body .NLT__header-menu-header-container{font-size:85%}body .NLT__button{background:0 0;box-shadow:none;color:var(--text-muted)}body .NLT__button:active,body .NLT__button:focus,body .NLT__button:hover{background:0 0;color:var(--text-normal);box-shadow:none}.NLT__app .NLT__button{background:0 0;border:1px solid var(--background-modifier-border);box-shadow:0 .5px 1px 0 var(--btn-shadow-color);color:var(--text-muted);padding:2px 8px}.NLT__app .NLT__button:active,.NLT__app .NLT__button:focus,.NLT__app .NLT__button:hover{background:0 0;border-color:var(--background-modifier-border-hover);color:var(--text-normal);box-shadow:0 .5px 1px 0 var(--btn-shadow-color)}.NLT__td:nth-last-child(2),.NLT__th:nth-last-child(2){border-right:0}.NLT__app .NLT__td:last-child,.NLT__app .NLT__th:last-child{padding-right:0}.NLT__app .NLT__th{background-image:none!important}.NLT__app th.NLT__selectable:hover{background-color:transparent;cursor:var(--cursor)}.NLT__menu .NLT__menu-container{background-color:var(--background-secondary)}.NLT__menu .NLT__header-menu-item{font-size:var(--font-adaptive-small)}.NLT__menu .NLT__header-menu{padding:6px 4px}.NLT__menu .NLT__drag-menu{font-size:var(--font-adaptive-small);padding:6px 4px}.NLT__menu svg{color:var(--text-faint);margin-right:6px}.NLT__menu .NLT__selectable:hover,.NLT__menu .NLT__selected{background:0 0}.NLT__menu .NLT__selected>.NLT__selectable{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__selectable{cursor:var(--cursor)}.NLT__menu div.NLT__selectable{min-width:110px;border-radius:var(--radius-m);padding:3px 8px 3px 4px;margin:1px 2px 1px;cursor:var(--cursor);height:auto;line-height:20px}.NLT__menu div.NLT__selectable:hover{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__textarea{font-size:var(--table-text-size)}.NLT__tfoot tr:hover td{background-color:transparent}.modal .quickAddPrompt>h1,.modal .quickAddYesNoPrompt h1{margin-top:0;text-align:left!important;font-size:var(--h1);font-weight:600}.modal .quickAddYesNoPrompt p{text-align:left!important}.modal .quickAddYesNoPrompt button{font-size:var(--font-ui-small)}.modal .yesNoPromptButtonContainer{font-size:var(--font-ui-small);justify-content:flex-end}.quickAddModal .modal-content{padding:20px 2px 5px}div#quick-explorer{display:flex}div#quick-explorer span.explorable{align-items:center;color:var(--text-muted);display:flex;font-size:var(--font-adaptive-smaller);line-height:16px}div#quick-explorer span.explorable:last-of-type{font-size:var(--font-adaptive-smaller)}div#quick-explorer span.explorable.selected,div#quick-explorer span.explorable:hover{background-color:unset!important}div#quick-explorer span.explorable.selected .explorable-name,div#quick-explorer span.explorable:hover .explorable-name{color:var(--text-normal)}div#quick-explorer span.explorable.selected .explorable-separator,div#quick-explorer span.explorable:hover .explorable-separator{color:var(--text-normal)}div#quick-explorer .explorable-name{padding:0 4px;border-radius:4px}div#quick-explorer .explorable-separator::before{content:"\00a0›"!important;font-size:1.3em;font-weight:400;margin:0}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover{background-color:var(--background-modifier-hover);color:var(--text-normal)}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected .menu-item-icon,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover .menu-item-icon{color:var(--text-normal)}.workspace-leaf-content[data-type=recent-files] .view-content{padding-top:10px}.mod-root .workspace-leaf-content[data-type=reminder-list] main{max-width:var(--max-width);margin:0 auto;padding:0}.modal .reminder-actions .later-select{font-size:var(--font-settings-small);vertical-align:bottom;margin-left:3px}.modal .reminder-actions .icon{line-height:1}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main{margin:0 auto;padding:15px}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .group-name{font-weight:500;color:var(--text-muted);font-size:var(--font-adaptive-small);padding-bottom:.5em;border-bottom:1px solid var(--background-modifier-border)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-list-item{line-height:1.3;font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .no-reminders{color:var(--text-faint)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-time{font-family:var(--font-text);font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-file{color:var(--text-faint)}body .modal .dtchooser{background-color:transparent}body .modal .dtchooser .reminder-calendar .year-month{font-weight:400;font-size:var(--font-adaptive-normal);padding-bottom:10px}body .modal .dtchooser .reminder-calendar .year-month .month,body .modal .dtchooser .reminder-calendar .year-month .year{color:var(--text-normal)}body .modal .dtchooser .reminder-calendar .year-month .month-nav:first-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav:last-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav{-webkit-mask-size:20px 20px;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;color:var(--text-faint);cursor:var(--cursor);border-radius:var(--radius-m);padding:0;width:30px;display:inline-block}body .modal .dtchooser .reminder-calendar .year-month .month-nav:hover{color:var(--text-muted)}body .modal .dtchooser .reminder-calendar th{padding:.5em 0;font-size:var(--font-adaptive-smallest);font-weight:500;text-transform:uppercase;letter-spacing:.1em}body .modal .dtchooser .reminder-calendar .calendar-date{transition:background-color .1s ease-in;padding:.3em 0;border-radius:var(--radius-m)}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected,body .modal .dtchooser .reminder-calendar .calendar-date:hover{transition:background-color .1s ease-in;background-color:var(--background-modifier-hover)!important}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected{font-weight:var(--bold-weight);color:var(--text-accent)!important}body .markdown-preview-view th,body .markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,body .table-view-table>thead>tr>th{cursor:var(--cursor);background-image:none}.markdown-source-view.mod-cm6 th{background-repeat:no-repeat;background-position:right}.style-settings-container[data-level="2"]{background:var(--background-secondary);border:1px solid var(--ui1);border-radius:5px;padding:10px 20px;margin:2px 0 2px -20px}.workspace-leaf-content[data-type=style-settings] .view-content{padding:var(--size-4-4) 0 var(--size-4-4) var(--folding-offset)}.workspace-leaf-content[data-type=style-settings] .view-content>div{width:var(--line-width-adaptive);max-width:var(--max-width);margin:0 auto}.workspace-leaf-content[data-type=style-settings] .style-settings-heading[data-level="0"] .setting-item-name{padding-left:17px}.workspace-leaf-content[data-type=style-settings] .setting-item{max-width:100%;margin:0 auto}.workspace-leaf-content[data-type=style-settings] .setting-item-name{position:relative}.workspace-leaf-content[data-type=style-settings] .style-settings-collapse-indicator{position:absolute;left:0}.setting-item-heading.style-settings-heading,.style-settings-container .style-settings-heading{cursor:var(--cursor)}.modal.mod-settings .setting-item .pickr button.pcr-button{box-shadow:none;border-radius:40px;height:24px;width:24px}.setting-item .pickr .pcr-button:after,.setting-item .pickr .pcr-button:before{border-radius:40px;box-shadow:none;border:none}.setting-item.setting-item-heading.style-settings-heading.is-collapsed{border-bottom:1px solid var(--background-modifier-border)}.setting-item.setting-item-heading.style-settings-heading{border:0;padding:10px 0 5px;margin-bottom:0}.mod-root .workspace-leaf-content[data-type=style-settings] .style-settings-container .setting-item:not(.setting-item-heading){flex-direction:row;align-items:center;padding:.5em 0}.workspace-split:not(.mod-root) .workspace-leaf-content[data-type=style-settings] .setting-item-name{font-size:var(--font-adaptive-smaller)}.setting-item .style-settings-export,.setting-item .style-settings-import{text-decoration:none;font-size:var(--font-ui-small);font-weight:500;color:var(--text-muted);margin:0;padding:2px 8px;border-radius:5px;cursor:var(--cursor)}.style-settings-export:hover,.style-settings-import:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);cursor:var(--cursor)}.themed-color-wrapper>div+div{margin-top:0;margin-left:6px}.theme-light .themed-color-wrapper>.theme-light{background-color:transparent}.theme-light .themed-color-wrapper>.theme-dark{background-color:rgba(0,0,0,.8)}.theme-dark .themed-color-wrapper>.theme-dark{background-color:transparent}body .todoist-query-title{display:inline;font-size:var(--h4);font-variant:var(--h4-variant);letter-spacing:.02em;color:var(--h4-color);font-weight:var(--h4-weight);font-style:var(--h4-style)}body .is-live-preview .block-language-todoist{padding-left:0}ul.todoist-task-list>li.task-list-item .task-list-item-checkbox{margin:0}body .todoist-refresh-button{display:inline;float:right;background:0 0;padding:5px 6px 0;margin-right:0}body .is-live-preview .todoist-refresh-button{margin-right:30px}body .todoist-refresh-button:hover{box-shadow:none;background-color:var(--background-modifier-hover)}.todoist-refresh-button svg{width:15px;height:15px;opacity:var(--icon-muted)}ul.todoist-task-list{margin-left:-.25em}.is-live-preview ul.todoist-task-list{padding-left:0;margin-left:.5em;margin-block-start:0;margin-block-end:0}.contains-task-list.todoist-task-list .task-metadata{font-size:var(--font-adaptive-small);display:flex;color:var(--text-muted);justify-content:space-between;margin-left:.1em;margin-bottom:.25rem}.is-live-preview .contains-task-list.todoist-task-list .task-metadata{padding-left:calc(var(--checkbox-size) + .6em)}.todoist-task-list .task-date.task-overdue{color:var(--color-orange)}body .todoist-p1>input[type=checkbox]{border:1px solid var(--color-red)}body .todoist-p1>input[type=checkbox]:hover{opacity:.8}body .todoist-p2>input[type=checkbox]{border:1px solid var(--color-yellow)}body .todoist-p2>input[type=checkbox]:hover{opacity:.8}body .todoist-p3>input[type=checkbox]{border:1px solid var(--color-blue)}body .todoist-p3>input[type=checkbox]:hover{opacity:.8}body.theme-light{--color-axis-label:var(--tx1);--color-tick-label:var(--tx2);--color-dot-fill:var(--ax1);--color-line:var(--ui1)}.tracker-axis-label{font-family:var(--font-interface)}.tracker-axis{color:var(--ui2)}.tabs-manager .chat-view{--assistant-message-color:var(--background-primary);--padding-md:var(--size-4-2) var(--size-4-3);--padding-lg:var(--size-4-3) var(--size-4-3);--chat-box-color:var(--background-primary)}.tabs-manager .chat-view .ow-dialogue-timeline{padding:var(--size-4-4) var(--size-4-3) var(--size-4-8)}.tabs-manager .chat-view .ow-dialogue-timeline .ow-message-bubble .ow-content-wrapper{box-shadow:none;border-color:var(--background-modifier-border);border-radius:var(--radius-m)}.tabs-manager .chat-view .ow-dialogue-timeline .ow-message-bubble.ow-user-bubble .ow-content-wrapper{border-width:0;background-color:var(--interactive-accent)}.tabs-manager .chat-view .input-area .input-form .chat-box{border-radius:0;box-shadow:none;grid-row:1;grid-column:1/3;height:100px;border:none;padding:var(--size-4-3) var(--size-4-4) var(--size-4-2)}.tabs-manager .chat-view .input-area .input-form .chat-box:hover{height:100px}.tabs-manager .chat-view .input-area{padding:0;gap:0}.tabs-manager .chat-view .header{border-bottom:1px solid var(--background-modifier-border)}.tabs-manager .chat-view .input-form{border-top:1px solid var(--background-modifier-border)}.tabs-manager .chat-view .input-area .input-form .chat-box .info-bar span{color:var(--text-faint)}.tabs-manager .chat-view .input-area .input-form .btn-new-chat{display:none}.theme-dark.minimal-atom-dark{--color-red-rgb:225,109,118;--color-orange-rgb:209,154,102;--color-yellow-rgb:206,193,103;--color-green-rgb:152,195,121;--color-cyan-rgb:88,182,194;--color-blue-rgb:98,175,239;--color-purple-rgb:198,120,222;--color-pink-rgb:225,109,118;--color-red:#e16d76;--color-orange:#d19a66;--color-yellow:#cec167;--color-green:#98c379;--color-cyan:#58b6c2;--color-blue:#62afef;--color-purple:#c678de;--color-pink:#e16d76}.theme-light.minimal-atom-light{--color-red-rgb:228,87,73;--color-orange-rgb:183,107,2;--color-yellow-rgb:193,131,2;--color-green-rgb:80,161,80;--color-cyan-rgb:13,151,179;--color-blue-rgb:98,175,239;--color-purple-rgb:166,38,164;--color-pink-rgb:228,87,73;--color-red:#e45749;--color-orange:#b76b02;--color-yellow:#c18302;--color-green:#50a150;--color-cyan:#0d97b3;--color-blue:#62afef;--color-purple:#a626a4;--color-pink:#e45749}.theme-light.minimal-atom-light{--base-h:106;--base-s:0%;--base-l:98%;--accent-h:231;--accent-s:76%;--accent-l:62%;--bg1:#fafafa;--bg2:#eaeaeb;--bg3:rgba(0,0,0,.1);--ui1:#dbdbdc;--ui2:#d8d8d9;--tx1:#232324;--tx2:#8e8e90;--tx3:#a0a1a8;--hl1:rgba(180,180,183,0.3);--hl2:rgba(209,154,102,0.35)}.theme-light.minimal-atom-light.minimal-light-white{--bg3:#eaeaeb}.theme-dark.minimal-atom-dark,.theme-light.minimal-atom-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-atom-light.minimal-light-contrast .titlebar,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-atom-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:12%;--base-l:18%;--accent-h:220;--accent-s:86%;--accent-l:65%;--bg1:#282c34;--bg2:#21252c;--bg3:#3a3f4b;--divider-color:#181a1f;--tab-outline-color:#181a1f;--tx1:#d8dae1;--tx2:#898f9d;--tx3:#5d6370;--hl1:rgba(114,123,141,0.3);--hl2:rgba(209,154,102,0.3);--sp1:#fff}.theme-dark.minimal-atom-dark.minimal-dark-black{--base-d:5%;--bg3:#282c34;--divider-color:#282c34;--tab-outline-color:#282c34}.theme-light.minimal-ayu-light{--color-red-rgb:230,80,80;--color-orange-rgb:250,141,62;--color-yellow-rgb:242,174,73;--color-green-rgb:108,191,67;--color-cyan-rgb:76,191,153;--color-blue-rgb:57,158,230;--color-purple-rgb:163,122,204;--color-pink-rgb:255,115,131;--color-red:#e65050;--color-orange:#fa8d3e;--color-yellow:#f2ae49;--color-green:#6CBF43;--color-cyan:#4cbf99;--color-blue:#399ee6;--color-purple:#a37acc;--color-pink:#ff7383}.theme-dark.minimal-ayu-dark{--color-red-rgb:255,102,102;--color-orange-rgb:250,173,102;--color-yellow-rgb:255,209,55;--color-green-rgb:135,217,108;--color-cyan-rgb:149,230,203;--color-blue-rgb:115,208,255;--color-purple-rgb:223,191,255;--color-pink-rgb:242,121,131;--color-red:#ff6666;--color-orange:#ffad66;--color-yellow:#ffd137;--color-green:#87D96C;--color-cyan:#95e6cb;--color-blue:#73d0ff;--color-purple:#dfbfff;--color-pink:#f27983}.theme-light.minimal-ayu-light{--base-h:210;--base-s:17%;--base-l:98%;--accent-h:36;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f8f9fa;--bg3:rgba(209,218,224,0.5);--ui1:#E6EAED;--tx1:#5C6165;--tx2:#8A9199;--tx3:#AAAEB0;--hl1:rgba(3,91,214,0.15)}.theme-dark.minimal-ayu-dark,.theme-light.minimal-ayu-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-ayu-light.minimal-light-contrast .titlebar,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-ayu-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:222;--base-s:22%;--base-l:15%;--accent-h:35;--accent-s:100%;--accent-l:60%;--bg1:#232937;--bg2:#1E2431;--bg3:rgba(51,61,80,0.5);--ui1:#333C4A;--ui2:#333C4A;--ui3:#333C4A;--tx1:#cccac2;--tx2:#707A8C;--tx3:#495063;--hl1:rgba(64,159,255,0.25)}.theme-dark.minimal-ayu-dark.minimal-dark-black{--accent-h:40;--accent-s:75%;--accent-l:61%;--bg3:#0E1017;--tx1:#BFBDB6;--divider-color:#11151C;--tab-outline-color:#11151C}.theme-light.minimal-catppuccin-light{--color-red-rgb:230,69,83;--color-orange-rgb:254,100,12;--color-yellow-rgb:223,142,29;--color-green-rgb:64,160,43;--color-cyan-rgb:23,146,154;--color-blue-rgb:33,102,246;--color-purple-rgb:137,56,239;--color-pink-rgb:234,119,203;--color-red:#E64553;--color-orange:#FE640C;--color-yellow:#DF8E1D;--color-green:#40A02B;--color-cyan:#17929A;--color-blue:#2166F6;--color-purple:#8938EF;--color-pink:#EA77CB}.theme-dark.minimal-catppuccin-dark{--color-red-rgb:235,153,156;--color-orange-rgb:239,160,118;--color-yellow-rgb:229,200,144;--color-green-rgb:166,209,138;--color-cyan-rgb:129,200,190;--color-blue-rgb:140,170,238;--color-purple-rgb:202,158,230;--color-pink-rgb:244,185,229;--color-red:#EB999C;--color-orange:#EFA076;--color-yellow:#E5C890;--color-green:#A6D18A;--color-cyan:#81C8BE;--color-blue:#8CAAEE;--color-purple:#CA9EE6;--color-pink:#F4B9E5}.theme-light.minimal-catppuccin-light{--base-h:228;--base-s:20%;--base-l:95%;--accent-h:11;--accent-s:59%;--accent-l:67%;--bg1:#F0F1F5;--bg2:#DCE0E8;--bg3:hsla(228,11%,65%,.25);--ui1:#CCD0DA;--ui2:#BCC0CC;--ui3:#ACB0BE;--tx1:#4D4F69;--tx2:#5D5F77;--tx3:#8D8FA2;--hl1:rgba(172,176,190,.3);--hl2:rgba(223,142,29,.3)}.theme-light.minimal-catppuccin-light.minimal-light-tonal{--bg2:#DCE0E8}.theme-light.minimal-catppuccin-light.minimal-light-white{--bg3:#F0F1F5;--ui1:#DCE0E8}.theme-dark.minimal-catppuccin-dark,.theme-light.minimal-catppuccin-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-catppuccin-light.minimal-light-contrast .titlebar,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-catppuccin-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:229;--base-s:19%;--base-l:23%;--accent-h:10;--accent-s:57%;--accent-l:88%;--bg1:#303446;--bg2:#242634;--bg3:hsla(229,13%,52%,0.25);--ui1:#41455A;--ui2:#51576D;--ui3:#626880;--tx1:#C6D0F5;--tx2:#A6ADCE;--tx3:#848BA7;--sp1:#242634;--hl1:rgba(98,104,128,.5);--hl2:rgba(223,142,29,.4)}.theme-dark.minimal-catppuccin-dark.minimal-dark-black{--ui1:#303446;--hl2:rgba(223,142,29,.5)}.theme-dark.minimal-dracula-dark{--color-red-rgb:255,85,85;--color-orange-rgb:255,184,108;--color-yellow-rgb:241,250,140;--color-green-rgb:80,250,123;--color-cyan-rgb:139,233,253;--color-blue-rgb:98,114,164;--color-purple-rgb:189,147,249;--color-pink-rgb:255,121,198;--color-red:#ff5555;--color-orange:#ffb86c;--color-yellow:#f1fa8c;--color-green:#50fa7b;--color-cyan:#8be9fd;--color-blue:#6272a4;--color-purple:#bd93f9;--color-pink:#ff79c6}.theme-dark.minimal-dracula-dark,.theme-light.minimal-dracula-light.minimal-light-contrast .titlebar,.theme-light.minimal-dracula-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-dracula-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:232;--base-s:16%;--base-l:19%;--accent-h:265;--accent-s:89%;--accent-l:78%;--bg1:#282a37;--bg2:#21222c;--ui2:#44475a;--ui3:#6272a4;--tx1:#f8f8f2;--tx2:#949FBE;--tx3:#6272a4;--hl1:rgba(134, 140, 170, 0.3);--hl2:rgba(189, 147, 249, 0.35)}.theme-dark.minimal-dracula-dark.minimal-dark-black{--ui1:#282a36}.theme-light.minimal-everforest-light{--color-red-rgb:248,85,82;--color-orange-rgb:245,125,38;--color-yellow-rgb:223,160,0;--color-green-rgb:141,161,1;--color-cyan-rgb:53,167,124;--color-blue-rgb:56,148,196;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#f85552;--color-orange:#f57d26;--color-yellow:#dfa000;--color-green:#8da101;--color-cyan:#35a77c;--color-blue:#3795C5;--color-purple:#df69ba;--color-pink:#df69ba}.theme-dark.minimal-everforest-dark{--color-red-rgb:230,126,128;--color-orange-rgb:230,152,117;--color-yellow-rgb:219,188,127;--color-green-rgb:167,192,128;--color-cyan-rgb:131,192,146;--color-blue-rgb:127,187,179;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#e67e80;--color-orange:#e69875;--color-yellow:#dbbc7f;--color-green:#a7c080;--color-cyan:#83c092;--color-blue:#7fbbb3;--color-purple:#d699b6;--color-pink:#d699b6}.theme-light.minimal-everforest-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:83;--accent-s:36%;--accent-l:53%;--bg1:#fdf6e3;--bg2:#efebd4;--bg3:rgba(226,222,198,.5);--ui1:#e0dcc7;--ui2:#bec5b2;--ui3:#bec5b2;--tx1:#5C6A72;--tx2:#829181;--tx3:#a6b0a0;--hl1:rgba(198,214,152,.4);--hl2:rgba(222,179,51,.3)}.theme-light.minimal-everforest-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-light.minimal-everforest-light.minimal-light-white{--bg3:#f3efda;--ui1:#edead5}.theme-dark.minimal-everforest-dark,.theme-light.minimal-everforest-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-everforest-light.minimal-light-contrast .titlebar,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-everforest-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:15%;--base-l:23%;--accent-h:81;--accent-s:34%;--accent-l:63%;--bg1:#2d353b;--bg2:#232a2e;--bg3:rgba(71,82,88,0.5);--ui1:#475258;--ui2:#4f585e;--ui3:#525c62;--tx1:#d3c6aa;--tx2:#9da9a0;--tx3:#7a8478;--hl1:rgba(134,70,93,.5);--hl2:rgba(147,185,96,.3)}.theme-dark.minimal-everforest-dark.minimal-dark-black{--hl1:rgba(134,70,93,.4);--ui1:#2b3339}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light{--color-red-rgb:204,36,29;--color-orange-rgb:214,93,14;--color-yellow-rgb:215,153,33;--color-green-rgb:152,151,26;--color-cyan-rgb:104,157,106;--color-blue-rgb:69,133,136;--color-purple-rgb:177,98,134;--color-pink-rgb:177,98,134;--color-red:#cc241d;--color-orange:#d65d0e;--color-yellow:#d79921;--color-green:#98971a;--color-cyan:#689d6a;--color-blue:#458588;--color-purple:#b16286;--color-pink:#b16286}.theme-light.minimal-gruvbox-light{--base-h:49;--base-s:92%;--base-l:89%;--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#fcf2c7;--bg2:#f2e6bd;--bg3:#ebd9b3;--ui1:#ebdbb2;--ui2:#d5c4a1;--ui3:#bdae93;--tx1:#282828;--tx2:#7c7065;--tx3:#a89a85;--hl1:rgba(192,165,125,.3);--hl2:rgba(215,153,33,.4)}.theme-light.minimal-gruvbox-light.minimal-light-tonal{--bg2:#fcf2c7}.theme-light.minimal-gruvbox-light.minimal-light-white{--bg3:#faf5d7;--ui1:#f2e6bd}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-gruvbox-light.minimal-light-contrast .titlebar,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-gruvbox-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#282828;--bg2:#1e2021;--bg3:#3d3836;--bg3:rgba(62,57,55,0.5);--ui1:#3c3836;--ui2:#504945;--ui3:#665c54;--tx1:#fbf1c7;--tx2:#bdae93;--tx3:#7c6f64;--hl1:rgba(173,149,139,0.3);--hl2:rgba(215,153,33,.4)}.theme-dark.minimal-gruvbox-dark.minimal-dark-black{--hl1:rgba(173,149,139,0.4);--ui1:#282828}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light{--color-red-rgb:255,59,49;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,204,0;--color-green-rgb:42,205,65;--color-cyan-rgb:2,199,190;--color-blue-rgb:2,122,255;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#ff3b31;--color-orange:#ff9502;--color-yellow:#ffcc00;--color-green:#2acd41;--color-cyan:#02c7be;--color-blue:#027aff;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-macos-light{--base-h:106;--base-s:0%;--base-l:94%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f0f0f0;--bg3:rgba(0,0,0,.1);--ui1:#e7e7e7;--tx1:#454545;--tx2:#808080;--tx3:#b0b0b0;--hl1:#b3d7ff}.theme-light.minimal-macos-light.minimal-light-tonal{--bg1:#f0f0f0;--bg2:#f0f0f0}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-macos-light.minimal-light-contrast .titlebar,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-macos-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:106;--base-s:0%;--base-l:12%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#1e1e1e;--bg2:#282828;--bg3:rgba(255,255,255,0.11);--divider-color:#000;--tab-outline-color:#000;--ui1:#373737;--ui2:#515151;--ui3:#595959;--tx1:#dcdcdc;--tx2:#8c8c8c;--tx3:#686868;--hl1:rgba(98,169,252,0.5);--sp1:#fff}.theme-dark.minimal-macos-dark.minimal-dark-black{--divider-color:#1e1e1e;--tab-outline-color:#1e1e1e}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light{--color-red-rgb:191,97,106;--color-orange-rgb:208,138,112;--color-yellow-rgb:235,203,139;--color-green-rgb:163,190,140;--color-cyan-rgb:136,192,208;--color-blue-rgb:129,161,193;--color-purple-rgb:180,142,173;--color-pink-rgb:180,142,173;--color-red:#BF616A;--color-orange:#D08770;--color-yellow:#EBCB8B;--color-green:#A3BE8C;--color-cyan:#88C0D0;--color-blue:#81A1C1;--color-purple:#B48EAD;--color-pink:#B48EAD}.theme-light.minimal-nord-light{--base-h:221;--base-s:27%;--base-l:94%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#fff;--bg2:#eceff4;--bg3:rgba(157,174,206,0.25);--ui1:#d8dee9;--ui2:#BBCADC;--ui3:#81a1c1;--tx1:#2e3440;--tx2:#7D8697;--tx3:#ADB1B8;--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-nord-light.minimal-light-contrast .titlebar,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-nord-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:16%;--base-l:22%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#2e3440;--bg2:#3b4252;--bg3:rgba(135,152,190,0.15);--ui1:#434c5e;--ui2:#58647b;--ui3:#58647b;--tx1:#d8dee9;--tx2:#9eafcc;--tx3:#4c566a;--hl1:rgba(129,142,180,0.3);--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark.minimal-dark-black{--ui1:#2e3440}.theme-light.minimal-notion-light{--base-h:39;--base-s:18%;--base-d:96%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg2:#f7f6f4;--bg3:#e8e7e4;--ui1:#ededec;--ui2:#dbdbda;--ui3:#aaa9a5;--tx1:#37352f;--tx2:#72706c;--tx3:#aaa9a5;--hl1:rgba(131,201,229,0.3);--link-weight:500}.theme-dark.minimal-notion-dark,.theme-light.minimal-notion-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-notion-light.minimal-light-contrast .titlebar,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-notion-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:8%;--base-d:20%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg1:#2f3437;--bg2:#373c3f;--bg3:#4b5053;--ui1:#3e4245;--ui2:#585d5f;--ui3:#585d5f;--tx1:#ebebeb;--tx2:#909295;--tx3:#585d5f;--hl1:rgba(57,134,164,0.3);--link-weight:500}.theme-dark.minimal-notion-dark.minimal-dark-black{--base-d:5%;--bg3:#232729;--ui1:#2f3437}.theme-light.minimal-rose-pine-light{--color-red-rgb:180,99,122;--color-orange-rgb:215,130,125;--color-yellow-rgb:234,157,53;--color-green-rgb:40,105,131;--color-cyan-rgb:87,147,159;--color-blue-rgb:87,147,159;--color-purple-rgb:144,122,169;--color-pink-rgb:144,122,169;--color-red:#b4637a;--color-orange:#d7827e;--color-yellow:#ea9d34;--color-green:#286983;--color-cyan:#56949f;--color-blue:#56949f;--color-purple:#907aa9;--color-pink:#907aa9}.theme-dark.minimal-rose-pine-dark{--color-red-rgb:234,111,146;--color-orange-rgb:233,155,151;--color-yellow-rgb:246,193,119;--color-green-rgb:47,116,143;--color-cyan-rgb:157,207,215;--color-blue-rgb:157,207,215;--color-purple-rgb:196,167,231;--color-pink-rgb:196,167,231;--color-red:#eb6f92;--color-orange:#ea9a97;--color-yellow:#f6c177;--color-green:#31748f;--color-cyan:#9ccfd8;--color-blue:#9ccfd8;--color-purple:#c4a7e7;--color-pink:#c4a7e7}.theme-light.minimal-rose-pine-light{--base-h:32;--base-s:57%;--base-l:95%;--accent-h:3;--accent-s:53%;--accent-l:67%;--bg1:#fffaf3;--bg2:#faf4ed;--bg3:rgba(233,223,218,0.5);--ui1:#EAE3E1;--ui2:#dfdad9;--ui3:#cecacd;--tx1:#575279;--tx2:#797593;--tx3:#9893a5;--hl1:#EAE3E1}.theme-dark.minimal-rose-pine-dark,.theme-light.minimal-rose-pine-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-rose-pine-light.minimal-light-contrast .titlebar,.theme-light.minimal-rose-pine-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-rose-pine-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-rose-pine-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:247;--base-s:23%;--base-l:15%;--accent-h:2;--accent-s:55%;--accent-l:83%;--bg1:#1f1d2e;--bg2:#191724;--bg3:rgba(68,66,86,0.5);--ui1:#312F41;--ui2:#403d52;--ui3:#524f67;--tx1:#e0def4;--tx2:#908caa;--tx3:#6e6a86;--hl1:#403d52}.theme-dark.minimal-rose-pine-dark.minimal-dark-black{--ui1:#21202e}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light{--color-red-rgb:220,50,47;--color-orange-rgb:203,77,22;--color-yellow-rgb:181,137,0;--color-green-rgb:133,153,0;--color-cyan-rgb:42,161,152;--color-blue-rgb:38,139,210;--color-purple-rgb:108,113,196;--color-pink-rgb:211,54,130;--color-red:#dc322f;--color-orange:#cb4b16;--color-yellow:#b58900;--color-green:#859900;--color-cyan:#2aa198;--color-blue:#268bd2;--color-purple:#6c71c4;--color-pink:#d33682}.theme-light.minimal-solarized-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:205;--accent-s:70%;--accent-l:48%;--bg1:#fdf6e3;--bg2:#eee8d5;--bg3:rgba(0,0,0,0.062);--ui1:#e9e1c8;--ui2:#d0cab8;--ui3:#d0cab8;--tx1:#073642;--tx2:#586e75;--tx3:#ABB2AC;--tx4:#586e75;--hl1:rgba(202,197,182,0.3);--hl2:rgba(203,75,22,0.3)}.theme-light.minimal-solarized-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-solarized-light.minimal-light-contrast .titlebar,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-solarized-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:205;--accent-s:70%;--accent-l:48%;--base-h:193;--base-s:98%;--base-l:11%;--bg1:#002b36;--bg2:#073642;--bg3:rgba(255,255,255,0.062);--ui1:#19414B;--ui2:#274850;--ui3:#31535B;--tx1:#93a1a1;--tx2:#657b83;--tx3:#31535B;--tx4:#657b83;--hl1:rgba(15,81,98,0.3);--hl2:rgba(203, 75, 22, 0.35)}.theme-dark.minimal-solarized-dark.minimal-dark-black{--hl1:rgba(15,81,98,0.55);--ui1:#002b36}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light{--color-red-rgb:255,48,108;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,213,0;--color-green-rgb:75,191,94;--color-cyan-rgb:73,174,164;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#FF306C;--color-orange:#ff9502;--color-yellow:#FFD500;--color-green:#4BBF5E;--color-cyan:#49AEA4;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-things-light{--color-blue-rgb:27,97,194;--color-blue:#1b61c2}.theme-dark.minimal-things-dark{--color-blue-rgb:77,149,247;--color-blue:#4d95f7}.theme-light.minimal-things-light{--accent-h:215;--accent-s:76%;--accent-l:43%;--bg1:white;--bg2:#f5f6f8;--bg3:rgba(162,177,187,0.25);--ui1:#eef0f4;--ui2:#D8DADD;--ui3:#c1c3c6;--tx1:#26272b;--tx2:#7D7F84;--tx3:#a9abb0;--hl1:#cae2ff}.theme-light.minimal-things-light.minimal-light-tonal{--ui1:#e6e8ec}.theme-light.minimal-things-light.minimal-light-white{--bg3:#f5f6f8}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-things-light.minimal-light-contrast .titlebar,.theme-light.minimal-things-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-things-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-things-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:218;--base-s:9%;--base-l:15%;--accent-h:215;--accent-s:91%;--accent-l:64%;--bg1:#24262a;--bg2:#202225;--bg3:#3d3f41;--divider-color:#17191c;--tab-outline-color:#17191c;--ui1:#3A3B3F;--ui2:#45464a;--ui3:#6c6e70;--tx1:#fbfbfb;--tx2:#CBCCCD;--tx3:#6c6e70;--hl1:rgba(40,119,236,0.35);--sp1:#fff}.theme-dark.minimal-things-dark.minimal-dark-black{--base-d:5%;--bg3:#24262a;--divider-color:#24262a;--tab-outline-color:#24262a} +body{--font-editor-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-editor:var(--font-editor-override),var(--font-text-override),var(--font-editor-theme)}body{--blockquote-style:normal;--blockquote-color:var(--text-muted);--blockquote-border-thickness:1px;--blockquote-border-color:var(--quote-opening-modifier);--embed-block-shadow-hover:none;--font-ui-smaller:11px;--normal-weight:400;--bold-weight:600;--link-weight:inherit;--inline-title-margin-bottom:1rem;--h1-size:1.125em;--h2-size:1.05em;--h3-size:1em;--h4-size:0.90em;--h5-size:0.85em;--h6-size:0.85em;--h1-weight:600;--h2-weight:600;--h3-weight:500;--h4-weight:500;--h5-weight:500;--h6-weight:400;--h1-variant:normal;--h2-variant:normal;--h3-variant:normal;--h4-variant:normal;--h5-variant:small-caps;--h6-variant:small-caps;--h1-style:normal;--h2-style:normal;--h3-style:normal;--h4-style:normal;--h5-style:normal;--h6-style:normal;--line-width:40rem;--line-height:1.5;--max-width:88%;--max-col-width:18em;--icon-muted:0.5;--nested-padding:1.1em;--folding-offset:32px;--list-edit-offset:0.5em;--list-indent:2em;--list-spacing:0.075em;--input-height:32px;--header-height:40px;--metadata-label-width:9rem;--metadata-label-font-size:var(--font-adaptive-small);--metadata-input-font-size:var(--font-adaptive-small);--mobile-left-sidebar-width:280pt;--mobile-right-sidebar-width:240pt;--top-left-padding-y:0px;--image-muted:0.7;--image-radius:4px;--heading-spacing:2em;--p-spacing:1.75rem;--border-width:1px;--table-border-width:var(--border-width);--file-margins:var(--size-4-2) var(--size-4-12)}.mod-macos{--top-left-padding-y:24px}.is-phone{--metadata-label-font-size:var(--font-adaptive-smaller);--metadata-input-font-size:var(--font-adaptive-smaller)}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.is-phone{--border-width:0.75px}}body{--base-h:0;--base-s:0%;--base-l:96%;--accent-h:201;--accent-s:17%;--accent-l:50%}.theme-dark,.theme-light{--color-red-rgb:208,66,85;--color-orange-rgb:213,118,63;--color-yellow-rgb:229,181,103;--color-green-rgb:168,195,115;--color-cyan-rgb:115,187,178;--color-blue-rgb:108,153,187;--color-purple-rgb:158,134,200;--color-pink-rgb:176,82,121;--color-red:#d04255;--color-orange:#d5763f;--color-yellow:#e5b567;--color-green:#a8c373;--color-cyan:#73bbb2;--color-blue:#6c99bb;--color-purple:#9e86c8;--color-pink:#b05279}.theme-light,.theme-light.minimal-default-light,body .excalidraw{--bg1:white;--bg2:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) - 50%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 20%) );--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 90%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) - 45%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 25%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 60%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 6%) );--hl1:hsla( var(--accent-h), 50%, calc(var(--base-l) - 20%), 30% );--hl2:rgba(255, 225, 0, 0.5);--sp1:white}.excalidraw.theme--dark,.theme-dark,.theme-dark.minimal-default-dark,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-l:60%;--base-l:15%;--bg1:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 2%) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) + 40%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 20%) );--tx1:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 67%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) + 45%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 20%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 50%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 5%) );--hl1:hsla( var(--accent-h), 50%, 40%, 30% );--hl2:rgba(255, 177, 80, 0.3);--sp1:white}.theme-light.minimal-light-white{--background-primary:white;--background-secondary:white;--background-secondary-alt:white;--ribbon-background:white;--bg1:white}.theme-dark.minimal-dark-black{--base-d:0%;--titlebar-background:black;--background-primary:black;--background-secondary:black;--background-secondary-alt:black;--ribbon-background:black;--background-modifier-hover:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 10%));--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 75%) );--tx2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 50%) );--tx3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 25%) );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 12%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 20%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 30%) )}.theme-light{--mono100:black;--mono0:white}.theme-dark{--mono100:white;--mono0:black}.theme-dark,.theme-light,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.is-mobile .workspace-drawer.mod-left,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--background-modifier-accent:var(--ax3);--background-modifier-border-focus:var(--ui3);--background-modifier-border-hover:var(--ui2);--background-modifier-border:var(--ui1);--background-modifier-form-field-highlighted:var(--bg1);--background-modifier-form-field:var(--bg1);--background-modifier-success:var(--color-green);--background-modifier-hover:var(--bg3);--background-modifier-active-hover:var(--bg3);--background-primary:var(--bg1);--background-primary-alt:var(--bg2);--background-secondary:var(--bg2);--background-secondary-alt:var(--bg1);--background-table-rows:var(--bg2);--checkbox-color:var(--ax3);--code-normal:var(--tx1);--divider-color:var(--ui1);--frame-divider-color:var(--ui1);--icon-color-active:var(--tx1);--icon-color-focused:var(--tx1);--icon-color-hover:var(--tx2);--icon-color:var(--tx2);--icon-hex:var(--mono0);--interactive-accent-hover:var(--ax1);--interactive-accent:var(--ax3);--interactive-hover:var(--ui1);--list-marker-color:var(--tx3);--modal-border-color:var(--ui2);--nav-item-background-active:var(--bg3);--nav-item-background-hover:var(--bg3);--nav-item-color:var(--tx2);--nav-item-color-active:var(--tx1);--nav-item-color-hover:var(--tx1);--nav-collapse-icon-color:var(--tx2);--nav-collapse-icon-color-collapsed:var(--tx2);--nav-indentation-guide-color:var(--ui1);--prompt-border-color:var(--ui3);--quote-opening-modifier:var(--ui2);--ribbon-background:var(--bg2);--scrollbar-active-thumb-bg:var(--ui3);--scrollbar-bg:transparent;--scrollbar-thumb-bg:var(--ui1);--search-result-background:var(--bg1);--tab-text-color-focused-active:var(--tx1);--tab-outline-color:var(--ui1);--text-accent-hover:var(--ax2);--text-accent:var(--ax1);--text-blockquote:var(--tx2);--text-bold:var(--tx1);--text-code:var(--tx4);--text-error:var(--color-red);--text-faint:var(--tx3);--text-highlight-bg:var(--hl2);--text-italic:var(--tx1);--text-muted:var(--tx2);--text-normal:var(--tx1);--text-on-accent:var(--sp1);--text-selection:var(--hl1);--title-color-inactive:var(--tx2);--title-color:var(--tx1);--titlebar-background:var(--bg2);--titlebar-background-focused:var(--bg2);--titlebar-text-color-focused:var(--tx1);--workspace-background-translucent:hsla(var(--base-h),var(--base-s), var(--base-l), 0.7)}.theme-light.minimal-light-contrast{--workspace-background-translucent:rgba(0,0,0,0.6)}.theme-light.minimal-light-contrast .theme-dark{--tab-container-background:var(--bg2);--ribbon-background-collapsed:var(--bg2)}.theme-light{--interactive-normal:var(--bg1);--interactive-accent-rgb:220,220,220;--active-line-bg:rgba(0,0,0,0.035);--background-modifier-cover:hsla(var(--base-h),calc(var(--base-s) - 70%),calc(var(--base-l) - 20%),0.5);--text-highlight-bg-active:rgba(0, 0, 0, 0.1);--background-modifier-error:rgba(255,0,0,0.14);--background-modifier-error-hover:rgba(255,0,0,0.08);--shadow-color:rgba(0, 0, 0, 0.1);--btn-shadow-color:rgba(0, 0, 0, 0.05)}.theme-dark{--interactive-normal:var(--bg3);--interactive-accent-rgb:66,66,66;--active-line-bg:rgba(255,255,255,0.04);--background-modifier-cover:hsla(var(--base-h),var(--base-s), calc(var(--base-l) - 12%), 0.5);--text-highlight-bg-active:rgba(255, 255, 255, 0.1);--background-modifier-error:rgba(255,20,20,0.12);--background-modifier-error-hover:rgba(255,20,20,0.18);--background-modifier-box-shadow:rgba(0, 0, 0, 0.3);--shadow-color:rgba(0, 0, 0, 0.3);--btn-shadow-color:rgba(0, 0, 0, 0.2)}.theme-light.minimal-light-white{--background-table-rows:var(--bg2)}.theme-light.minimal-light-tonal{--background-primary:var(--bg2);--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-tonal{--ribbon-background:var(--bg1);--background-secondary:var(--bg1);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-black{--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3);--modal-border:var(--ui2);--active-line-bg:rgba(255,255,255,0.085);--background-modifier-form-field:var(--bg3);--background-modifier-cover:hsla(var(--base-h),var(--base-s),calc(var(--base-d) + 8%),0.9);--background-modifier-box-shadow:rgba(0, 0, 0, 1)}body{--font-adaptive-normal:var(--font-text-size,var(--editor-font-size));--font-adaptive-small:calc(var(--font-ui-small) * 1.07);--font-adaptive-smaller:var(--font-ui-small);--font-adaptive-smallest:var(--font-ui-smaller);--line-width-wide:calc(var(--line-width) + 12.5%);--font-code:calc(var(--font-adaptive-normal) * 0.9);--table-text-size:calc(var(--font-adaptive-normal) * 0.875)}.minimal-dev-block-width .mod-root .workspace-leaf-content:after{display:flex;align-items:flex-end;content:"\00a0pane\00a0";font-size:12px;color:gray;font-family:var(--font-monospace);width:100%;max-width:100%;height:100vh;top:0;z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:max(calc(50% - var(--line-width)/ 2 - 1px),calc(50% - var(--max-width)/ 2 - 1px));z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable-off .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:calc(50% - var(--max-width)/ 2 - 1px);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width .mod-root .view-content:before{display:flex;align-items:flex-end;content:"\00a0max\00a0";font-size:12px;color:red;width:var(--max-width);height:100vh;border-left:1px solid red;border-right:1px solid red;top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-header:before{display:flex;align-items:flex-end;content:"\00a0wide\00a0";font-size:12px;color:orange;font-family:var(--font-monospace);width:var(--line-width-wide);max-width:var(--max-width);height:100vh;border-left:1px solid orange;border-right:1px solid orange;background-color:rgba(255,165,0,.05);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-content:after{display:flex;align-items:flex-end;color:#00f;font-size:12px;font-family:var(--font-monospace);content:"\00a0normal";width:var(--line-width);max-width:var(--max-width);height:100vh;border-left:1px solid #00f;border-right:1px solid #00f;background-color:rgba(0,0,255,.08);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.CodeMirror-wrap>div>textarea{opacity:0}.markdown-source-view.mod-cm6 hr{border-width:2px}.mod-cm6 .cm-editor .cm-line{padding-left:0;padding-right:0}.cm-editor .cm-content{padding-top:.5em}.markdown-source-view{color:var(--text-normal)}.markdown-source-view.mod-cm6 .cm-sizer{display:block}.markdown-source-view.mod-cm6 .cm-scroller{padding-left:0;padding-right:0}.cm-s-obsidian .cm-line.HyperMD-header{padding-top:calc(var(--p-spacing)/ 2)}.markdown-rendered .mod-header+div>*{margin-block-start:0}body :not(.canvas-node) .markdown-source-view.mod-cm6 .cm-gutters{position:absolute!important;z-index:0;margin-inline-end:0}body :not(.canvas-node) .markdown-source-view.mod-cm6.is-rtl .cm-gutters{right:0}body{--line-number-color:var(--text-faint);--line-number-color-active:var(--text-muted)}.markdown-source-view.mod-cm6 .cm-gutters{color:var(--line-number-color)!important}.markdown-source-view.mod-cm6 .cm-editor .cm-gutterElement.cm-active .cm-heading-marker,.markdown-source-view.mod-cm6 .cm-editor .cm-lineNumbers .cm-gutterElement.cm-active{color:var(--line-number-color-active)}.cm-editor .cm-lineNumbers{background-color:var(--gutter-background)}.cm-editor .cm-lineNumbers .cm-gutterElement{min-width:var(--folding-offset);padding-inline-end:0.5em}.is-rtl .cm-editor .cm-lineNumbers .cm-gutterElement{text-align:left}@media (max-width:400pt){.cm-editor .cm-lineNumbers .cm-gutterElement{padding-inline-end:4px;padding-inline-start:8px}}.cm-editor .cm-lineNumbers .cm-gutterElement{font-variant-numeric:tabular-nums}.cm-editor .cm-gutterElement.cm-active .cm-heading-marker,.cm-editor .cm-lineNumbers .cm-gutterElement.cm-active{color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button{cursor:var(--cursor);color:var(--text-faint);background-color:var(--background-primary);top:0;opacity:0;transition:opacity .2s;padding:4px 4px 4px 9px}.markdown-source-view.mod-cm6 .edit-block-button svg{margin:0!important}.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.edit-block-button{width:30px!important;padding-left:7px!important}.is-live-preview:not(.is-readable-line-width) .cm-embed-block>.edit-block-button{padding-left:0!important;margin-left:0!important;padding:4px}.markdown-source-view.mod-cm6 .edit-block-button:hover{background-color:var(--background-primary);color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button svg{opacity:1}.markdown-source-view.mod-cm6 .edit-block-button:hover svg{opacity:1}.markdown-source-view.mod-cm6 .cm-embed-block{padding:0;border:0;border-radius:0}.markdown-source-view.mod-cm6 .cm-embed-block:hover{border:0}.metadata-container{--input-height:2rem}.markdown-source-view .metadata-container{transform:translateX(-4px)}body.metadata-heading-off .metadata-properties-heading{display:none}.metadata-add-property-off .mod-root .metadata-add-button{display:none}.metadata-dividers{--metadata-divider-width:1px;--metadata-gap:0px}.metadata-icons-off .workspace-leaf-content[data-type=all-properties] .tree-item-inner{margin-left:-16px}.metadata-icons-off .workspace-leaf-content[data-type=all-properties] .tree-item-icon{display:none}.metadata-icons-off .metadata-property-icon{display:none}figure{margin-inline-start:0;margin-inline-end:0}.markdown-preview-view .mod-highlighted{transition:background-color .3s ease;background-color:var(--text-selection);color:inherit}.inline-title{padding-top:16px}.minimal-status-off .status-bar{--status-bar-position:static;--status-bar-radius:0;--status-bar-border-width:1px 0 0 0;--status-bar-background:var(--background-secondary);--status-bar-border-color:var(--ui1)}body:not(.minimal-status-off) .status-bar{background-color:var(--background-primary);--status-bar-border-width:0}.status-bar{transition:color .2s linear;color:var(--text-faint);font-size:var(--font-adaptive-smallest)}.status-bar .sync-status-icon.mod-success,.status-bar .sync-status-icon.mod-working{color:var(--text-faint)}.status-bar:hover,.status-bar:hover .sync-status-icon.mod-success,.status-bar:hover .sync-status-icon.mod-working{color:var(--text-muted);transition:color .2s linear}.status-bar .plugin-sync:hover .sync-status-icon.mod-success,.status-bar .plugin-sync:hover .sync-status-icon.mod-working{color:var(--text-normal)}.status-bar .status-bar-item{cursor:var(--cursor)!important}.status-bar .status-bar-item.cMenu-statusbar-button:hover,.status-bar .status-bar-item.mod-clickable:hover,.status-bar .status-bar-item.plugin-editor-status:hover,.status-bar .status-bar-item.plugin-sync:hover{text-align:center;background-color:var(--background-modifier-hover)!important}.tab-stack-top-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:right}.tab-stack-center{--tab-stacked-text-align:center}.tab-stack-center-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:center}.tab-stack-bottom{--tab-stacked-text-transform:rotate(180deg)}.tab-stack-bottom-flipped{--tab-stacked-text-align:right}.view-header-title,.view-header-title-parent{text-overflow:ellipsis}.view-header-title-container:not(.mod-at-end):after{display:none}body:not(.is-mobile) .view-actions .view-action:last-child{margin-left:-1px}.minimal-focus-mode .workspace-ribbon:not(.is-collapsed)~.mod-root .view-header:hover .view-actions,.mod-right.is-collapsed~.mod-root .view-header:hover .view-actions,.view-action.is-active:hover,.workspace-ribbon.mod-left.is-collapsed~.mod-root .view-header:hover .view-actions,body:not(.minimal-focus-mode) .workspace-ribbon:not(.is-collapsed)~.mod-root .view-actions{opacity:1;transition:opacity .25s ease-in-out}.view-header-title-container{opacity:0;transition:opacity .1s ease-in-out}.view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.view-header:hover .view-header-title-container,.workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:1;transition:opacity .1s ease-in-out}.is-phone .view-header-title-container,.minimal-tab-title-visible .view-header-title-container{opacity:1}.minimal-tab-title-hidden .view-header-title-container{opacity:0}.minimal-tab-title-hidden .view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.minimal-tab-title-hidden .view-header:hover .view-header-title-container,.minimal-tab-title-hidden .workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:0}body.window-title-off .titlebar-text{display:none}.titlebar-button-container.mod-right{background-color:transparent!important}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame){--titlebar-background:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-tabs.mod-top,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame).is-focused .workspace-tabs.mod-top{--titlebar-background-focused:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed){--titlebar-background:var(--bg2)}.mod-macos.is-hidden-frameless:not(.is-popout-window) .sidebar-toggle-button.mod-right{right:0;padding-right:var(--size-4-2)}body.is-focused{--titlebar-background-focused:var(--background-secondary)}.is-hidden-frameless:not(.colorful-frame) .mod-left-split .mod-top .workspace-tab-header-container{--tab-container-background:var(--background-secondary)}.mod-root .workspace-tab-header-status-icon{color:var(--text-muted)}.modal button:not(.mod-warning),.modal.mod-settings button:not(.mod-cta):not(.mod-warning),.modal.mod-settings button:not(.mod-warning){white-space:nowrap;transition:background-color .2s ease-out,border-color .2s ease-out}button.mod-warning{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 1px 1px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}button.mod-warning:hover{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 2px 3px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}.document-replace,.document-search{max-width:100%;padding:0}.document-search-container{margin:0 auto;max-width:var(--max-width);width:var(--line-width)}.is-mobile .CodeMirror-foldgutter-open:after,.is-mobile span[title="Fold line"]:after{transform:translateX(-2px)!important}body.is-mobile .CodeMirror-foldgutter-folded:after,body.is-mobile span[title="Unfold line"]:after{content:"›";font-family:sans-serif;transform:translateY(-2px);transform:rotate(-90deg) translateY(2px) translateX(-.45em)}body.is-mobile .CodeMirror-foldgutter-open:after,body.is-mobile span[title="Fold line"]:after{content:"›";font-family:sans-serif;transform:rotate(360deg)}body{--ig-adjust-reading:-0.95em;--ig-adjust-edit:2px}.markdown-rendered.show-indentation-guide li.task-list-item>ol::before,.markdown-rendered.show-indentation-guide li.task-list-item>ul::before,.markdown-rendered.show-indentation-guide li>ol::before,.markdown-rendered.show-indentation-guide li>ul::before{left:var(--ig-adjust-reading)}.markdown-source-view.mod-cm6 .cm-indent::before{transform:translateX(var(--ig-adjust-edit))}.is-mobile .markdown-rendered.show-indentation-guide li>ol::before,.is-mobile .markdown-rendered.show-indentation-guide li>ul::before{left:calc(0em + var(--ig-adjust-reading))}.is-mobile .markdown-source-view.mod-cm6 .cm-indent::before{transform:translateX(calc(2px + var(--ig-adjust-edit)))}.modal-button-container .mod-checkbox{--checkbox-radius:4px}.modal-container.mod-confirmation .modal{width:480px;min-width:0}.theme-light{--progress-outline:rgba(0,0,0,0.05)}.theme-dark{--progress-outline:rgba(255,255,255,0.04)}body{--progress-complete:var(--text-accent)}.markdown-preview-view progress,.markdown-rendered progress,.markdown-source-view.is-live-preview progress{width:220px}.markdown-preview-view progress[value]::-webkit-progress-bar,.markdown-rendered progress[value]::-webkit-progress-bar,.markdown-source-view.is-live-preview progress[value]::-webkit-progress-bar{box-shadow:inset 0 0 0 var(--border-width) var(--progress-outline)}.markdown-preview-view progress[value^='1']::-webkit-progress-value,.markdown-preview-view progress[value^='2']::-webkit-progress-value,.markdown-preview-view progress[value^='3']::-webkit-progress-value,.markdown-rendered progress[value^='1']::-webkit-progress-value,.markdown-rendered progress[value^='2']::-webkit-progress-value,.markdown-rendered progress[value^='3']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='1']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='2']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='3']::-webkit-progress-value{background-color:var(--color-red)}.markdown-preview-view progress[value^='4']::-webkit-progress-value,.markdown-preview-view progress[value^='5']::-webkit-progress-value,.markdown-rendered progress[value^='4']::-webkit-progress-value,.markdown-rendered progress[value^='5']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='4']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='5']::-webkit-progress-value{background-color:var(--color-orange)}.markdown-preview-view progress[value^='6']::-webkit-progress-value,.markdown-preview-view progress[value^='7']::-webkit-progress-value,.markdown-rendered progress[value^='6']::-webkit-progress-value,.markdown-rendered progress[value^='7']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='6']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='7']::-webkit-progress-value{background-color:var(--color-yellow)}.markdown-preview-view progress[value^='8']::-webkit-progress-value,.markdown-preview-view progress[value^='9']::-webkit-progress-value,.markdown-rendered progress[value^='8']::-webkit-progress-value,.markdown-rendered progress[value^='9']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='8']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='9']::-webkit-progress-value{background-color:var(--color-green)}.markdown-preview-view progress[value='1']::-webkit-progress-value,.markdown-preview-view progress[value='100']::-webkit-progress-value,.markdown-rendered progress[value='1']::-webkit-progress-value,.markdown-rendered progress[value='100']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='1']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='100']::-webkit-progress-value{background-color:var(--progress-complete)}.markdown-preview-view progress[value='0']::-webkit-progress-value,.markdown-preview-view progress[value='2']::-webkit-progress-value,.markdown-preview-view progress[value='3']::-webkit-progress-value,.markdown-preview-view progress[value='4']::-webkit-progress-value,.markdown-preview-view progress[value='5']::-webkit-progress-value,.markdown-preview-view progress[value='6']::-webkit-progress-value,.markdown-preview-view progress[value='7']::-webkit-progress-value,.markdown-preview-view progress[value='8']::-webkit-progress-value,.markdown-preview-view progress[value='9']::-webkit-progress-value,.markdown-rendered progress[value='0']::-webkit-progress-value,.markdown-rendered progress[value='2']::-webkit-progress-value,.markdown-rendered progress[value='3']::-webkit-progress-value,.markdown-rendered progress[value='4']::-webkit-progress-value,.markdown-rendered progress[value='5']::-webkit-progress-value,.markdown-rendered progress[value='6']::-webkit-progress-value,.markdown-rendered progress[value='7']::-webkit-progress-value,.markdown-rendered progress[value='8']::-webkit-progress-value,.markdown-rendered progress[value='9']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='0']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='2']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='3']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='4']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='5']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='6']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='7']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='8']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='9']::-webkit-progress-value{background-color:var(--color-red)}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar,body:not(.native-scrollbars) ::-webkit-scrollbar{width:11px;background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar:horizontal,body:not(.native-scrollbars) ::-webkit-scrollbar:horizontal{height:11px}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-corner,body:not(.native-scrollbars) ::-webkit-scrollbar-corner{background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-track,body:not(.native-scrollbars) ::-webkit-scrollbar-track{background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb{background-clip:padding-box;border-radius:20px;border:3px solid transparent;background-color:var(--background-modifier-border);border-width:3px 3px 3px 3px;min-height:45px}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:hover{background-color:var(--background-modifier-border-hover)}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:active{background-color:var(--background-modifier-border-focus)}.tooltip{transition:none;animation:none}.tooltip.mod-left,.tooltip.mod-right{transform:none;animation:none}.tooltip.mod-error{color:var(--text-error)}.markdown-preview-view blockquote{padding:0 0 0 var(--nested-padding);font-size:var(--blockquote-size)}.markdown-source-view.mod-cm6 .HyperMD-quote,.markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote{font-size:var(--blockquote-size)}.is-live-preview .cm-hmd-indent-in-quote{color:var(--text-faint)}.is-live-preview.is-readable-line-width>.cm-callout .callout{max-width:var(--max-width);margin:0 auto}.callouts-outlined .callout .callout-title{background-color:var(--background-primary);margin-top:-24px;z-index:200;width:fit-content;padding:0 .5em;margin-left:-.75em;letter-spacing:.05em;font-variant-caps:all-small-caps}.callouts-outlined .callout{overflow:visible;--callout-border-width:1px;--callout-border-opacity:0.5;--callout-title-size:0.8em;--callout-blend-mode:normal;background-color:transparent}.callouts-outlined .cm-embed-block.cm-callout{padding-top:12px}.callouts-outlined .callout-content .callout{margin-top:18px}body{--checkbox-radius:50%;--checkbox-top:2px;--checkbox-left:0px;--checkbox-margin:0px 6px 0px -2em}.checkbox-square{--checkbox-size:calc(var(--font-text-size) * 0.85);--checkbox-radius:4px;--checkbox-top:1px;--checkbox-left:0px;--checkbox-margin:0px 8px 0px -2em}body.minimal-strike-lists{--checklist-done-decoration:line-through}body:not(.minimal-strike-lists){--checklist-done-decoration:none;--checklist-done-color:var(--text-normal)}.markdown-preview-section>.contains-task-list{padding-bottom:.5em}.mod-cm6 .HyperMD-task-line[data-task] .cm-formatting-list-ol~.task-list-label .task-list-item-checkbox{margin:1px}.markdown-preview-view .task-list-item-checkbox{position:relative;top:var(--checkbox-top);left:var(--checkbox-left);line-height:0}.markdown-preview-view ul>li.task-list-item{text-indent:0;line-height:var(--line-height)}.is-mobile .mod-cm6 .HyperMD-task-line[data-task] .task-list-item-checkbox{margin-inline-start:-.4em}.is-mobile .markdown-preview-view input[type=checkbox].task-list-item-checkbox{top:.2em}.minimal-code-scroll{--code-white-space:pre}.minimal-code-scroll .HyperMD-codeblock.HyperMD-codeblock-bg{overflow-y:scroll;white-space:pre}.minimal-code-scroll .cm-hmd-codeblock{white-space:pre!important}@media print{.print{--code-background:#eee!important}}body{--embed-max-height:none;--embed-decoration-style:solid;--embed-decoration-color:var(--background-modifier-border-hover)}.embed-strict{--embed-background:transparent;--embed-border-left:0;--embed-padding:0}.embed-strict .markdown-embed-content{--folding-offset:0px}.embed-strict .el-embed-heading.el-p>p{margin-block-start:0;margin-block-end:0}.embed-strict .internal-embed .markdown-embed,.embed-strict .markdown-preview-view .markdown-embed,.embed-strict.markdown-preview-view .markdown-embed{padding:0}.embed-strict .internal-embed .markdown-embed .markdown-embed-title,.embed-strict .markdown-embed-title{display:none}.embed-strict .internal-embed:not([src*="#^"]) .markdown-embed-link{width:24px;opacity:0}.embed-underline .internal-embed:not(.pdf-embed){text-decoration-line:underline;text-decoration-style:var(--embed-decoration-style);text-decoration-color:var(--embed-decoration-color)}.embed-hide-title .markdown-embed-title{display:none}.contextual-typography .embed-strict .internal-embed .markdown-preview-view .markdown-preview-sizer>div,.embed-strict.contextual-typography .internal-embed .markdown-preview-view .markdown-preview-sizer>div{margin:0;width:100%}.markdown-embed .markdown-preview-view .markdown-preview-sizer{padding-bottom:0!important}.markdown-preview-view.is-readable-line-width .markdown-embed .markdown-preview-sizer,.markdown-preview-view.markdown-embed .markdown-preview-sizer{max-width:100%;width:100%;min-height:0!important;padding-bottom:0!important}.markdown-embed .markdown-preview-section div:last-child p,.markdown-embed .markdown-preview-section div:last-child ul{margin-block-end:2px}.markdown-preview-view .markdown-embed{margin-top:var(--nested-padding);padding:0 calc(var(--nested-padding)/ 2) 0 var(--nested-padding)}.internal-embed:not([src*="#^"]) .markdown-embed-link{right:0;width:100%}.file-embed-link,.markdown-embed-link{top:0;right:0;text-align:right;justify-content:flex-end}.file-embed-link svg,.markdown-embed-link svg{width:16px;height:16px}.markdown-embed .file-embed-link,.markdown-embed .markdown-embed-link{opacity:.6;transition:opacity .1s linear}.markdown-embed .file-embed-link:hover,.markdown-embed .markdown-embed-link:hover{opacity:1}.markdown-embed .file-embed-link:hover:hover,.markdown-embed .markdown-embed-link:hover:hover{background-color:transparent;--icon-color:var(--text-accent)}.file-embed-link:hover,.markdown-embed-link:hover{color:var(--text-muted)}.markdown-embed .markdown-preview-view{padding:0}.internal-embed .markdown-embed{border:0;border-left:1px solid var(--quote-opening-modifier);border-radius:0}a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,")}.theme-dark a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,")}div>ol,div>ul{padding-inline-start:1.4em}ul>li{min-height:1.4em}ol>li{margin-inline-start:0}ol{margin-inline-start:0;list-style:default}body{--adaptive-list-edit-offset:var(--list-edit-offset)}.is-rtl{--adaptive-list-edit-offset:calc(var(--list-edit-offset)*-1)}.markdown-source-view.mod-cm6 .cm-content .HyperMD-list-line{transform:translateX(var(--adaptive-list-edit-offset))}.markdown-preview-view ol>li,.markdown-preview-view ul>li,.markdown-source-view ol>li,.markdown-source-view ul>li,.mod-cm6 .HyperMD-list-line.cm-line{padding-top:var(--list-spacing);padding-bottom:var(--list-spacing)}.is-mobile ul>li:not(.task-list-item)::marker{font-size:.8em}.is-mobile .markdown-rendered ol,.is-mobile .markdown-rendered ul{padding-inline-start:var(--list-indent)}.is-mobile .markdown-rendered div>ol,.is-mobile .markdown-rendered div>ul{padding-inline-start:2em}.is-mobile .el-ol>ol,.is-mobile .el-ul>ul{margin-inline-start:0}.is-mobile .workspace-leaf-content:not([data-type=search]) .workspace-leaf-content[data-type=markdown] .nav-buttons-container{border-bottom:none;padding-top:5px}.is-mobile .mod-root .workspace-leaf-content[data-type=markdown] .search-input-container{width:calc(100% - 160px)}.embedded-backlinks .nav-header~.search-input-container{width:calc(100% - 140px);margin-top:12px}.embedded-backlinks .nav-buttons-container{position:absolute;right:0;top:14px}.embedded-backlinks .backlink-pane>.tree-item-self,.embedded-backlinks .backlink-pane>.tree-item-self:hover{text-transform:none;color:var(--text-normal);font-size:var(--font-adaptive-normal);font-weight:500;letter-spacing:unset}body{--pdf-dark-opacity:1}.theme-dark:not(.pdf-shadows-on),.theme-light:not(.pdf-shadows-on){--pdf-shadow:none;--pdf-thumbnail-shadow:none}.theme-dark:not(.pdf-shadows-on) .pdf-viewer .page,.theme-light:not(.pdf-shadows-on) .pdf-viewer .page{border:0}.theme-dark:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnailSelectionRing,.theme-light:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnailSelectionRing{padding:0}.theme-dark:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnail::after,.theme-light:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnail::after{right:var(--size-4-2);bottom:var(--size-4-2)}.theme-dark{--pdf-thumbnail-shadow:0 0 1px 0 rgba(0,0,0,0.6);--pdf-shadow:0 0 1px 0 rgba(0,0,0,0.6)}.theme-dark .pdf-viewer .canvasWrapper{opacity:var(--pdf-dark-opacity)}.theme-dark.pdf-invert-dark .workspace-leaf-content[data-type=pdf] .pdf-thumbnail-view .thumbnailImage,.theme-dark.pdf-invert-dark .workspace-leaf-content[data-type=pdf] .pdf-viewer .canvasWrapper{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.theme-light.pdf-blend-light .workspace-leaf-content[data-type=pdf] .pdf-thumbnail-view .thumbnailImage,.theme-light.pdf-blend-light .workspace-leaf-content[data-type=pdf] .pdf-viewer .canvasWrapper{mix-blend-mode:multiply}body{--table-header-border-width:0;--table-column-first-border-width:0;--table-column-last-border-width:0;--table-row-last-border-width:0;--table-edge-cell-padding-first:0;--table-edge-cell-padding-last:10px;--table-cell-padding:4px 10px;--table-header-size:var(--table-text-size)}.markdown-source-view.mod-cm6 table{border-collapse:collapse}.markdown-preview-view table,.markdown-source-view.mod-cm6 table{border:var(--border-width) solid var(--border-color);border-collapse:collapse}.markdown-preview-view td,.markdown-preview-view th,.markdown-source-view.mod-cm6 td,.markdown-source-view.mod-cm6 th{padding:var(--table-cell-padding)}.markdown-preview-view td:first-child,.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 td:first-child,.markdown-source-view.mod-cm6 th:first-child{padding-left:var(--table-edge-cell-padding-first)}.markdown-preview-view td:last-child,.markdown-preview-view th:last-child,.markdown-source-view.mod-cm6 td:last-child,.markdown-source-view.mod-cm6 th:last-child{padding-right:var(--table-edge-cell-padding-last)}.markdown-preview-view th,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,.table-view-table>thead>tr>th{padding:var(--table-cell-padding)}.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th:first-child,.table-view-table>thead>tr>th:first-child{padding-left:var(--table-edge-cell-padding-first)}.markdown-preview-view th:last-child,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th:last-child,.table-view-table>thead>tr>th:last-child{padding-right:var(--table-edge-cell-padding-last)}.is-live-preview .el-table{width:100%;max-width:100%}.cm-hmd-table-sep-dummy,.cm-s-obsidian .HyperMD-table-row span.cm-hmd-table-sep{color:var(--text-faint);font-weight:400}body.minimal-unstyled-tags{--tag-background:transparent;--tag-background-hover:transparent;--tag-border-width:0px;--tag-padding-x:0;--tag-padding-y:0;--tag-size:inherit;--tag-color-hover:var(--text-accent-hover)}body.minimal-unstyled-tags.is-mobile.theme-dark{--tag-background:transparent}body:not(.minimal-unstyled-tags){--tag-size:0.8em;--tag-padding-y:0.2em;--tag-background:transparent;--tag-background-hover:transparent;--tag-color:var(--text-muted);--tag-border-width:1px;--tag-border-color:var(--background-modifier-border);--tag-border-color-hover:var(--background-modifier-border-hover);--tag-color-hover:var(--text-normal)}body.is-mobile.theme-dark{--tag-background:transparent}h1,h2,h3,h4{letter-spacing:-.02em}body,button,input{font-family:var(--font-interface)}.cm-s-obsidian span.cm-error{color:var(--color-red)}.markdown-preview-view,.popover,.workspace-leaf-content[data-type=markdown]{font-family:var(--font-text)}.cm-s-obsidian,.markdown-preview-view,.markdown-source-view.mod-cm6.is-live-preview .cm-scroller,body{font-size:var(--font-adaptive-normal);font-weight:var(--normal-weight);line-height:var(--line-height)}.cm-s-obsidian,.markdown-source-view,.markdown-source-view.mod-cm6 .cm-scroller{line-height:var(--line-height);font-family:var(--font-editor)}.cm-s-obsidian span.cm-formatting-task{line-height:var(--line-height)}.active-line-on .cm-line.cm-active,.active-line-on .markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote.cm-active{background-color:var(--active-line-bg);box-shadow:-25vw 0 var(--active-line-bg),25vw 0 var(--active-line-bg)}body{--content-margin:auto;--content-margin-start:max( calc(50% - var(--line-width)/2), calc(50% - var(--max-width)/2) );--content-line-width:min(var(--line-width), var(--max-width))}.markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer{max-width:100%;margin-inline:auto;width:100%}.markdown-source-view.mod-cm6.is-readable-line-width .cm-content,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer{max-width:100%;width:100%}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer>.embedded-backlinks,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer>.inline-title,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer>.metadata-container{max-width:var(--max-width);width:var(--line-width);margin-inline:var(--content-margin)!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>:not(div){max-width:var(--content-line-width);margin-inline-start:var(--content-margin-start)!important}.is-readable-line-width{--file-margins:1rem 0 0 0}.is-mobile .markdown-preview-view{--folding-offset:0}.minimal-line-nums .workspace-leaf-content[data-type=markdown]{--file-margins:var(--size-4-8) var(--size-4-8) var(--size-4-8) 48px}.minimal-line-nums .workspace-leaf-content[data-type=markdown].is-rtl{--file-margins:var(--size-4-8) 48px var(--size-4-8) var(--size-4-8)}.minimal-line-nums .workspace-leaf-content[data-type=markdown] .is-readable-line-width{--file-margins:1rem 0 0 var(--folding-offset)}.minimal-line-nums .workspace-leaf-content[data-type=markdown] .is-readable-line-width.is-rtl{--file-margins:1rem var(--folding-offset) 0 0}.minimal-line-nums .mod-left-split .markdown-preview-view,.minimal-line-nums .mod-left-split .markdown-source-view.mod-cm6 .cm-scroller,.minimal-line-nums .mod-right-split .markdown-preview-view,.minimal-line-nums .mod-right-split .markdown-source-view.mod-cm6 .cm-scroller{--file-margins:var(--size-4-5) var(--size-4-5) var(--size-4-5) 48px}.markdown-preview-view .inline-embed{--max-width:100%}body{--container-table-width:var(--line-width);--container-table-max-width:var(--max-width);--table-max-width:none;--table-width:auto;--table-margin:inherit;--container-img-width:var(--line-width);--container-img-max-width:var(--max-width);--img-max-width:100%;--img-width:auto;--img-margin-start:var(--content-margin-start);--img-line-width:var(--content-line-width);--container-chart-width:var(--line-width);--container-chart-max-width:var(--max-width);--chart-max-width:none;--chart-width:auto;--container-map-width:var(--line-width);--container-map-max-width:var(--max-width);--map-max-width:none;--map-width:auto;--container-iframe-width:var(--line-width);--container-iframe-max-width:var(--max-width);--iframe-max-width:none;--iframe-width:auto}body .wide{--line-width:var(--line-width-wide);--container-table-width:var(--line-width-wide);--container-img-width:var(--line-width-wide);--container-iframe-width:var(--line-width-wide);--container-map-width:var(--line-width-wide);--container-chart-width:var(--line-width-wide)}body .max{--line-width:var(--max-width);--container-table-width:var(--max-width);--container-img-width:var(--max-width);--container-iframe-width:var(--max-width);--container-map-width:var(--max-width);--container-chart-width:var(--max-width)}table.dataview{--table-min-width:min(var(--line-width),var(--max-width))}.cards table.dataview{--table-width:100%;--table-min-width:none}.maximize-tables-auto{--container-table-max-width:100%;--container-table-width:100%;--table-max-width:100%;--table-margin:var(--content-margin-start) auto;--table-width:auto}.maximize-tables-auto .cards{--container-table-max-width:var(--max-width)}.maximize-tables-auto .cards .block-language-dataview{--table-margin:auto}.maximize-tables{--container-table-max-width:100%;--container-table-width:100%;--table-min-width:min(var(--line-width), var(--max-width));--table-max-width:100%;--table-margin:auto;--table-width:auto;--table-edge-cell-padding-first:10px}.table-100,.table-max,.table-wide{--table-max-width:100%;--table-width:100%}.table-wide{--container-table-width:var(--line-width-wide);--table-edge-cell-padding-first:0px}.table-max{--container-table-width:var(--max-width);--table-edge-cell-padding-first:0px;--table-margin:0}.table-100{--container-table-width:100%;--container-table-max-width:100%;--table-edge-cell-padding-first:20px;--table-margin:0}.table-100 .dataview.list-view-ul{max-width:var(--max-width);width:var(--line-width);margin-inline:auto}.img-100,.img-max,.img-wide{--img-max-width:100%;--img-width:100%}.img-wide{--container-img-width:var(--line-width-wide);--img-line-width:var(--line-width-wide);--img-margin-start:calc(50% - var(--line-width-wide)/2)}.img-max{--container-img-width:var(--max-width);--img-line-width:var(--max-width);--img-margin-start:calc(50% - var(--max-width)/2)}.img-100{--container-img-width:100%;--container-img-max-width:100%;--img-line-width:100%;--img-margin-start:0}.map-100,.map-max,.map-wide{--map-max-width:100%;--map-width:100%}.map-wide{--container-map-width:var(--line-width-wide)}.map-max{--container-map-width:var(--max-width)}.map-100{--container-map-width:100%;--container-map-max-width:100%}.chart-100,.chart-max,.chart-wide{--chart-max-width:100%;--chart-width:100%}.chart-wide{--container-chart-width:var(--line-width-wide)}.chart-max{--container-chart-width:var(--max-width)}.chart-100{--container-chart-width:100%;--container-chart-max-width:100%}.iframe-100,.iframe-max,.iframe-wide{--iframe-max-width:100%;--iframe-width:100%}.iframe-wide{--container-iframe-width:var(--line-width-wide)}.iframe-max{--container-iframe-width:var(--max-width)}.iframe-100{--container-iframe-width:100%;--container-iframe-max-width:100%}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .cm-table-widget,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>.block-language-dataview>table),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>.block-language-dataviewjs),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>table),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .cm-table-widget,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>.block-language-dataview>table),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>.block-language-dataviewjs),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>table){width:var(--container-table-width);max-width:var(--container-table-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer table,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content table{width:var(--table-width);max-width:var(--table-max-width);margin-inline:var(--table-margin);min-width:var(--table-min-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .block-language-dataviewjs>:is(p,h1,h2,h3,h4,h5,h6),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .block-language-dataviewjs>:is(p,h1,h2,h3,h4,h5,h6){width:var(--line-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .block-language-dataviewjs>.dataview-error,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .block-language-dataviewjs>.dataview-error{margin:0 auto;width:var(--content-line-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .dataview.dataview-error-box,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .dataview.dataview-error-box{margin-inline:var(--table-margin)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>.image-embed{padding-top:.25rem;padding-bottom:.25rem}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.image-embed,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(.image-embed),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(.image-embed){width:var(--container-img-width);max-width:var(--container-img-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.image-embed img,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(.image-embed) img,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>.image-embed img,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(.image-embed) img{max-width:var(--img-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>img,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>img{max-width:var(--img-line-width);margin-inline-start:var(--img-margin-start)!important}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-chart),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-dataviewjs canvas),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-chart),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-dataviewjs canvas){width:var(--container-chart-width);max-width:var(--container-chart-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-chart) canvas,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-dataviewjs canvas) canvas,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-chart) canvas,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-dataviewjs canvas) canvas{max-width:var(--map-chart-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-leaflet),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-leaflet){width:var(--container-map-width);max-width:var(--container-map-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-leaflet) iframe,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-leaflet) iframe{max-width:var(--map-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.cm-html-embed),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>iframe),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.cm-html-embed),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>iframe){width:var(--container-iframe-width);max-width:var(--container-iframe-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.cm-html-embed) iframe,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>iframe) iframe,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.cm-html-embed) iframe,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>iframe) iframe{max-width:var(--iframe-max-width);width:var(--iframe-width)}.borders-none{--divider-width:0px;--tab-outline-width:0px}body{--cards-min-width:180px;--cards-max-width:1fr;--cards-mobile-width:120px;--cards-image-height:400px;--cards-padding:1.2em;--cards-image-fit:contain;--cards-background:transparent;--cards-border-width:1px;--cards-aspect-ratio:auto;--cards-columns:repeat(auto-fit, minmax(var(--cards-min-width), var(--cards-max-width)))}@media (max-width:400pt){body{--cards-min-width:var(--cards-mobile-width)}}.cards.table-100 table.dataview tbody,.table-100 .cards table.dataview tbody{padding:.25rem .75rem}.cards table.dataview{--table-width:100%;--table-edge-cell-padding-first:calc(var(--cards-padding)/2);--table-edge-cell-padding-last:calc(var(--cards-padding)/2);--table-cell-padding:calc(var(--cards-padding)/3) calc(var(--cards-padding)/2);line-height:1.3}.cards table.dataview tbody{clear:both;padding:.5rem 0;display:grid;grid-template-columns:var(--cards-columns);grid-column-gap:0.75rem;grid-row-gap:0.75rem}.cards table.dataview>tbody>tr{background-color:var(--cards-background);border:var(--cards-border-width) solid var(--background-modifier-border);display:flex;flex-direction:column;margin:0;padding:0 0 calc(var(--cards-padding)/3) 0;border-radius:6px;overflow:hidden;transition:box-shadow .15s linear;max-width:var(--cards-max-width)}.cards table.dataview>tbody>tr:hover{border:var(--cards-border-width) solid var(--background-modifier-border-hover);box-shadow:0 4px 6px 0 rgba(0,0,0,.05),0 1px 3px 1px rgba(0,0,0,.025);transition:box-shadow .15s linear}.cards table.dataview tbody>tr>td:first-child{font-weight:var(--bold-weight);border:none}.cards table.dataview tbody>tr>td:first-child a{display:block}.cards table.dataview tbody>tr>td:last-child{border:none}.cards table.dataview tbody>tr>td:not(:first-child){font-size:calc(var(--table-text-size) * .9);color:var(--text-muted)}.cards table.dataview tbody>tr>td>*{padding:calc(var(--cards-padding)/3) 0}.cards table.dataview tbody>tr>td:not(:last-child):not(:first-child){padding:4px 0;border-bottom:1px solid var(--background-modifier-border);width:calc(100% - var(--cards-padding));margin:0 calc(var(--cards-padding)/2)}.cards table.dataview tbody>tr>td a{text-decoration:none}.cards table.dataview tbody>tr>td>button{width:100%;margin:calc(var(--cards-padding)/2) 0}.cards table.dataview tbody>tr>td:last-child>button{margin-bottom:calc(var(--cards-padding)/6)}.cards table.dataview tbody>tr>td>ul{width:100%;padding:.25em 0!important;margin:0 auto!important}.cards table.dataview tbody>tr>td:has(img){padding:0!important;background-color:var(--background-secondary);display:block;margin:0;width:100%}.cards table.dataview tbody>tr>td img{aspect-ratio:var(--cards-aspect-ratio);width:100%;object-fit:var(--cards-image-fit);max-height:var(--cards-image-height);background-color:var(--background-secondary);vertical-align:bottom}.markdown-source-view.mod-cm6.cards .dataview.table-view-table>tbody>tr>td,.trim-cols .cards table.dataview tbody>tr>td{white-space:normal}.links-int-on .cards table{--link-decoration:none}.markdown-source-view.mod-cm6.cards .edit-block-button{top:0}.cards.table-100 table.dataview thead>tr,.table-100 .cards table.dataview thead>tr{right:.75rem}.cards.table-100 table.dataview thead:before,.table-100 .cards table.dataview thead:before{margin-right:.75rem}.theme-light .cards table.dataview thead:before{background-image:url('data:image/svg+xml;utf8,')}.cards table.dataview thead{user-select:none;width:180px;display:block;float:right;position:relative;text-align:right;height:24px;padding-bottom:0}.cards table.dataview thead:hover:before{opacity:.5;background-color:var(--background-modifier-hover)}.cards table.dataview thead:before{content:'';position:absolute;right:0;top:0;width:10px;height:16px;background-repeat:no-repeat;cursor:var(--cursor);text-align:right;padding:var(--size-4-1) var(--size-4-2);margin-bottom:2px;border-radius:var(--radius-s);font-weight:500;font-size:var(--font-adaptive-small);opacity:.25;background-position:center center;background-size:16px;background-image:url('data:image/svg+xml;utf8,')}.cards table.dataview thead>tr{top:-1px;position:absolute;display:none;z-index:9;border:1px solid var(--background-modifier-border-hover);background-color:var(--background-secondary);box-shadow:var(--shadow-s);padding:6px;border-radius:var(--radius-m);flex-direction:column;margin:24px 0 0 0;width:100%}.cards table.dataview thead:hover>tr{display:flex}.cards table.dataview thead>tr>th{display:block;padding:3px 30px 3px 6px!important;border-radius:var(--radius-s);width:100%;font-weight:400;color:var(--text-normal);cursor:var(--cursor);border:none;font-size:var(--font-ui-small)}.cards table.dataview thead>tr>th[sortable-style=sortable-asc],.cards table.dataview thead>tr>th[sortable-style=sortable-desc]{color:var(--text-normal)}.cards table.dataview thead>tr>th:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}.list-cards.markdown-preview-view .list-bullet,.list-cards.markdown-preview-view .list-collapse-indicator,.list-cards.markdown-preview-view.markdown-rendered.show-indentation-guide li>ul::before{display:none}.list-cards.markdown-preview-view div>ul{display:grid;gap:.75rem;grid-template-columns:var(--cards-columns);padding:0;line-height:var(--line-height-tight)}.list-cards.markdown-preview-view div>ul>li{background-color:var(--cards-background);padding:calc(var(--cards-padding)/2);border-radius:var(--radius-s);border:var(--cards-border-width) solid var(--background-modifier-border);overflow:hidden}.list-cards.markdown-preview-view div>ul .image-embed{padding:0;display:block;background-color:var(--background-secondary);border-radius:var(--image-radius)}.list-cards.markdown-preview-view div>ul .image-embed img{aspect-ratio:var(--cards-aspect-ratio);object-fit:var(--cards-image-fit);max-height:var(--cards-image-height);background-color:var(--background-secondary);vertical-align:bottom}.list-cards.markdown-preview-view div>ul>li>a{--link-decoration:none;--link-external-decoration:none;font-weight:var(--bold-weight)}.list-cards.markdown-preview-view div ul>li:hover{border-color:var(--background-modifier-border-hover)}.list-cards.markdown-preview-view div ul ul{display:block;width:100%;color:var(--text-muted);font-size:var(--font-smallest);margin:calc(var(--cards-padding)/-4) 0;padding:calc(var(--cards-padding)/2) 0}.list-cards.markdown-preview-view div ul ul ul{padding-bottom:calc(var(--cards-padding)/4)}.list-cards.markdown-preview-view div ul ul>li{display:block}.cards.cards-16-9,.list-cards.cards-16-9{--cards-aspect-ratio:16/9}.cards.cards-1-1,.list-cards.cards-1-1{--cards-aspect-ratio:1/1}.cards.cards-2-1,.list-cards.cards-2-1{--cards-aspect-ratio:2/1}.cards.cards-2-3,.list-cards.cards-2-3{--cards-aspect-ratio:2/3}.cards.cards-cols-1,.list-cards.cards-cols-1{--cards-columns:repeat(1, minmax(0, 1fr))}.cards.cards-cols-2,.list-cards.cards-cols-2{--cards-columns:repeat(2, minmax(0, 1fr))}.cards.cards-cover,.list-cards.cards-cover{--cards-image-fit:cover}.cards.cards-align-bottom table.dataview tbody>tr>td:last-child,.list-cards.cards-align-bottom table.dataview tbody>tr>td:last-child{margin-top:auto}@media (max-width:400pt){.cards table.dataview tbody>tr>td:not(:first-child){font-size:80%}}@media (min-width:400pt){.cards-cols-3{--cards-columns:repeat(3, minmax(0, 1fr))}.cards-cols-4{--cards-columns:repeat(4, minmax(0, 1fr))}.cards-cols-5{--cards-columns:repeat(5, minmax(0, 1fr))}.cards-cols-6{--cards-columns:repeat(6, minmax(0, 1fr))}.cards-cols-7{--cards-columns:repeat(7, minmax(0, 1fr))}.cards-cols-8{--cards-columns:repeat(8, minmax(0, 1fr))}}.cm-formatting.cm-formatting-task.cm-property{font-family:var(--font-monospace);font-size:90%}input[data-task="!"]:checked,input[data-task="*"]:checked,input[data-task="-"]:checked,input[data-task="<"]:checked,input[data-task=">"]:checked,input[data-task="I"]:checked,input[data-task="b"]:checked,input[data-task="c"]:checked,input[data-task="d"]:checked,input[data-task="f"]:checked,input[data-task="k"]:checked,input[data-task="l"]:checked,input[data-task="p"]:checked,input[data-task="u"]:checked,input[data-task="w"]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked,li[data-task="I"]>input:checked,li[data-task="I"]>p>input:checked,li[data-task="b"]>input:checked,li[data-task="b"]>p>input:checked,li[data-task="c"]>input:checked,li[data-task="c"]>p>input:checked,li[data-task="d"]>input:checked,li[data-task="d"]>p>input:checked,li[data-task="f"]>input:checked,li[data-task="f"]>p>input:checked,li[data-task="k"]>input:checked,li[data-task="k"]>p>input:checked,li[data-task="l"]>input:checked,li[data-task="l"]>p>input:checked,li[data-task="p"]>input:checked,li[data-task="p"]>p>input:checked,li[data-task="u"]>input:checked,li[data-task="u"]>p>input:checked,li[data-task="w"]>input:checked,li[data-task="w"]>p>input:checked{--checkbox-marker-color:transparent;border:none;border-radius:0;background-image:none;background-color:currentColor;-webkit-mask-size:var(--checkbox-icon);-webkit-mask-position:50% 50%}input[data-task=">"]:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked{color:var(--text-faint);transform:rotate(90deg);-webkit-mask-position:50% 100%;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M10.894 2.553a1 1 0 00-1.788 0l-7 14a1 1 0 001.169 1.409l5-1.429A1 1 0 009 15.571V11a1 1 0 112 0v4.571a1 1 0 00.725.962l5 1.428a1 1 0 001.17-1.408l-7-14z' /%3E%3C/svg%3E")}input[data-task="<"]:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z' clip-rule='evenodd' /%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="?"]:checked,li[data-task="?"]>input:checked,li[data-task="?"]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-yellow);border-color:var(--color-yellow);background-position:50% 50%;background-size:200% 90%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="white" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="?"]:checked,.theme-dark li[data-task="?"]>input:checked,.theme-dark li[data-task="?"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="black" fill-opacity="0.8" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}input[data-task="/"]:checked,li[data-task="/"]>input:checked,li[data-task="/"]>p>input:checked{background-image:none;background-color:transparent;position:relative;overflow:hidden}input[data-task="/"]:checked:after,li[data-task="/"]>input:checked:after,li[data-task="/"]>p>input:checked:after{top:0;left:0;content:" ";display:block;position:absolute;background-color:var(--background-modifier-accent);width:calc(50% - .5px);height:100%;-webkit-mask-image:none}input[data-task="!"]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="\""]:checked,input[data-task="“"]:checked,li[data-task="\""]>input:checked,li[data-task="\""]>p>input:checked,li[data-task="“"]>input:checked,li[data-task="“"]>p>input:checked{--checkbox-marker-color:transparent;background-position:50% 50%;background-color:var(--color-cyan);border-color:var(--color-cyan);background-size:75%;background-repeat:no-repeat;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="white" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="\""]:checked,.theme-dark input[data-task="“"]:checked,.theme-dark li[data-task="\""]>input:checked,.theme-dark li[data-task="\""]>p>input:checked,.theme-dark li[data-task="“"]>input:checked,.theme-dark li[data-task="“"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="black" fill-opacity="0.7" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}input[data-task="-"]:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}body:not(.tasks) .markdown-preview-view ul li[data-task="-"].task-list-item.is-checked,body:not(.tasks) .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task]:is([data-task="-"]),body:not(.tasks) li[data-task="-"].task-list-item.is-checked{color:var(--text-faint);text-decoration:line-through solid var(--text-faint) 1px}input[data-task="*"]:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z' /%3E%3C/svg%3E")}input[data-task="l"]:checked,li[data-task="l"]>input:checked,li[data-task="l"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="i"]:checked,li[data-task="i"]>input:checked,li[data-task="i"]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-blue);border-color:var(--color-blue);background-position:50%;background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="white" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="i"]:checked,.theme-dark li[data-task="i"]>input:checked,.theme-dark li[data-task="i"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="black" fill-opacity="0.8" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}input[data-task="S"]:checked,li[data-task="S"]>input:checked,li[data-task="S"]>p>input:checked{--checkbox-marker-color:transparent;border-color:var(--color-green);background-color:var(--color-green);background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill="white" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="S"]:checked,.theme-dark li[data-task="S"]>input:checked,.theme-dark li[data-task="S"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill-opacity="0.8" fill="black" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}input[data-task="I"]:checked,li[data-task="I"]>input:checked,li[data-task="I"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M11 3a1 1 0 10-2 0v1a1 1 0 102 0V3zM15.657 5.757a1 1 0 00-1.414-1.414l-.707.707a1 1 0 001.414 1.414l.707-.707zM18 10a1 1 0 01-1 1h-1a1 1 0 110-2h1a1 1 0 011 1zM5.05 6.464A1 1 0 106.464 5.05l-.707-.707a1 1 0 00-1.414 1.414l.707.707zM5 10a1 1 0 01-1 1H3a1 1 0 110-2h1a1 1 0 011 1zM8 16v-1h4v1a2 2 0 11-4 0zM12 14c.015-.34.208-.646.477-.859a4 4 0 10-4.954 0c.27.213.462.519.476.859h4.002z' /%3E%3C/svg%3E")}input[data-task="f"]:checked,li[data-task="f"]>input:checked,li[data-task="f"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.395 2.553a1 1 0 00-1.45-.385c-.345.23-.614.558-.822.88-.214.33-.403.713-.57 1.116-.334.804-.614 1.768-.84 2.734a31.365 31.365 0 00-.613 3.58 2.64 2.64 0 01-.945-1.067c-.328-.68-.398-1.534-.398-2.654A1 1 0 005.05 6.05 6.981 6.981 0 003 11a7 7 0 1011.95-4.95c-.592-.591-.98-.985-1.348-1.467-.363-.476-.724-1.063-1.207-2.03zM12.12 15.12A3 3 0 017 13s.879.5 2.5.5c0-1 .5-4 1.25-4.5.5 1 .786 1.293 1.371 1.879A2.99 2.99 0 0113 13a2.99 2.99 0 01-.879 2.121z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="k"]:checked,li[data-task="k"]>input:checked,li[data-task="k"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M18 8a6 6 0 01-7.743 5.743L10 14l-1 1-1 1H6v2H2v-4l4.257-4.257A6 6 0 1118 8zm-6-4a1 1 0 100 2 2 2 0 012 2 1 1 0 102 0 4 4 0 00-4-4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="u"]:checked,li[data-task="u"]>input:checked,li[data-task="u"]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 7a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0V8.414l-4.293 4.293a1 1 0 01-1.414 0L8 10.414l-4.293 4.293a1 1 0 01-1.414-1.414l5-5a1 1 0 011.414 0L11 10.586 14.586 7H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="d"]:checked,li[data-task="d"]>input:checked,li[data-task="d"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 13a1 1 0 100 2h5a1 1 0 001-1V9a1 1 0 10-2 0v2.586l-4.293-4.293a1 1 0 00-1.414 0L8 9.586 3.707 5.293a1 1 0 00-1.414 1.414l5 5a1 1 0 001.414 0L11 9.414 14.586 13H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="w"]:checked,li[data-task="w"]>input:checked,li[data-task="w"]>p>input:checked{color:var(--color-purple);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 3a1 1 0 011-1h.01a1 1 0 010 2H7a1 1 0 01-1-1zm2 3a1 1 0 00-2 0v1a2 2 0 00-2 2v1a2 2 0 00-2 2v.683a3.7 3.7 0 011.055.485 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0A3.7 3.7 0 0118 12.683V12a2 2 0 00-2-2V9a2 2 0 00-2-2V6a1 1 0 10-2 0v1h-1V6a1 1 0 10-2 0v1H8V6zm10 8.868a3.704 3.704 0 01-4.055-.036 1.704 1.704 0 00-1.89 0 3.704 3.704 0 01-4.11 0 1.704 1.704 0 00-1.89 0A3.704 3.704 0 012 14.868V17a1 1 0 001 1h14a1 1 0 001-1v-2.132zM9 3a1 1 0 011-1h.01a1 1 0 110 2H10a1 1 0 01-1-1zm3 0a1 1 0 011-1h.01a1 1 0 110 2H13a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="p"]:checked,li[data-task="p"]>input:checked,li[data-task="p"]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M2 10.5a1.5 1.5 0 113 0v6a1.5 1.5 0 01-3 0v-6zM6 10.333v5.43a2 2 0 001.106 1.79l.05.025A4 4 0 008.943 18h5.416a2 2 0 001.962-1.608l1.2-6A2 2 0 0015.56 8H12V4a2 2 0 00-2-2 1 1 0 00-1 1v.667a4 4 0 01-.8 2.4L6.8 7.933a4 4 0 00-.8 2.4z' /%3E%3C/svg%3E")}input[data-task="c"]:checked,li[data-task="c"]>input:checked,li[data-task="c"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M18 9.5a1.5 1.5 0 11-3 0v-6a1.5 1.5 0 013 0v6zM14 9.667v-5.43a2 2 0 00-1.105-1.79l-.05-.025A4 4 0 0011.055 2H5.64a2 2 0 00-1.962 1.608l-1.2 6A2 2 0 004.44 12H8v4a2 2 0 002 2 1 1 0 001-1v-.667a4 4 0 01.8-2.4l1.4-1.866a4 4 0 00.8-2.4z' /%3E%3C/svg%3E")}input[data-task="b"]:checked,li[data-task="b"]>input:checked,li[data-task="b"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M5 4a2 2 0 012-2h6a2 2 0 012 2v14l-5-2.5L5 18V4z' /%3E%3C/svg%3E")}.colorful-active .nav-files-container{--nav-item-background-active:var(--interactive-accent);--nav-item-color-active:var(--text-on-accent)}.colorful-active #calendar-container .active,.colorful-active #calendar-container .active.today,.colorful-active #calendar-container .active:hover,.colorful-active #calendar-container .day:active{background-color:var(--interactive-accent);color:var(--text-on-accent)}.colorful-active #calendar-container .active .dot,.colorful-active #calendar-container .day:active .dot,.colorful-active #calendar-container .today.active .dot{fill:var(--text-on-accent)}body:not(.colorful-active) .horizontal-tab-nav-item.is-active,body:not(.colorful-active) .vertical-tab-nav-item.is-active{background-color:var(--background-modifier-hover);color:var(--text-normal)}body{--frame-background:hsl( var(--frame-background-h), var(--frame-background-s), var(--frame-background-l));--frame-icon-color:var(--frame-muted-color)}.theme-light{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) + 30%);--frame-outline-color:hsla( var(--frame-background-h), var(--frame-background-s), calc(var(--frame-background-l) - 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) - 35%))}.theme-dark{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) - 25%);--frame-outline-color:hsla( var(--frame-background-h), calc(var(--frame-background-s) - 2%), calc(var(--frame-background-l) + 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) + 25%))}.colorful-frame.theme-dark{--tab-outline-width:0px}.colorful-frame,.colorful-frame.is-focused{--frame-divider-color:var(--frame-outline-color);--titlebar-background:var(--frame-background);--titlebar-background-focused:var(--frame-background);--titlebar-text-color:var(--frame-muted-color);--minimal-tab-text-color:var(--frame-muted-color)}.colorful-frame .workspace-tabs:not(.mod-stacked),.colorful-frame.is-focused .workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color)}.colorful-frame .mod-top .workspace-tab-header-container,.colorful-frame .titlebar,.colorful-frame .workspace-ribbon.mod-left:before,.colorful-frame.is-focused .mod-top .workspace-tab-header-container,.colorful-frame.is-focused .titlebar,.colorful-frame.is-focused .workspace-ribbon.mod-left:before{--tab-outline-color:var(--frame-outline-color);--tab-divider-color:var(--frame-outline-color)}.colorful-frame .mod-root .workspace-tab-header .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-root .workspace-tab-header .workspace-tab-header-inner-icon{--icon-color:var(--minimal-tab-text-color-active);--icon-color-hover:var(--minimal-tab-text-color-active);--icon-color-active:var(--minimal-tab-text-color-active);--icon-color-focused:var(--minimal-tab-text-color-active)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header,.colorful-frame .mod-right-split .mod-top .workspace-tab-header,.colorful-frame .sidebar-toggle-button,.colorful-frame .workspace-tab-header-new-tab,.colorful-frame .workspace-tab-header-tab-list,.colorful-frame .workspace-tab-header:not(.is-active),.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .sidebar-toggle-button,.colorful-frame.is-focused .workspace-tab-header-new-tab,.colorful-frame.is-focused .workspace-tab-header-tab-list,.colorful-frame.is-focused .workspace-tab-header:not(.is-active){--background-modifier-hover:var(--frame-outline-color);--icon-color:var(--frame-icon-color);--icon-color-hover:var(--frame-icon-color);--icon-color-active:var(--frame-icon-color);--icon-color-focused:var(--frame-icon-color);--icon-color-focus:var(--frame-icon-color)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon{color:var(--frame-icon-color)}.workspace-leaf-resize-handle{transition:none}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle{-webkit-app-region:no-drag;border:0;z-index:15}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{content:"";height:100%;width:1px;background:linear-gradient(180deg,var(--frame-outline-color) var(--header-height),var(--divider-color) var(--header-height));top:0;position:absolute}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:hover:after{background:var(--divider-color-hover)}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after{left:0}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{right:0}body.colorful-headings{--h1-color:var(--color-red);--h2-color:var(--color-orange);--h3-color:var(--color-yellow);--h4-color:var(--color-green);--h5-color:var(--color-blue);--h6-color:var(--color-purple)}body.colorful-headings .modal{--h1-color:var(--text-normal);--h2-color:var(--text-normal);--h3-color:var(--text-normal);--h4-color:var(--text-normal);--h5-color:var(--text-normal);--h6-color:var(--text-normal)}.is-mobile .tree-item-self .collapse-icon{width:20px}body:not(.minimal-icons-off) svg.calendar-day,body:not(.minimal-icons-off) svg.excalidraw-icon,body:not(.minimal-icons-off) svg.globe,body:not(.minimal-icons-off) svg.longform,body:not(.minimal-icons-off) svg.obsidian-leaflet-plugin-icon-map{background-color:currentColor}body:not(.minimal-icons-off) svg.excalidraw-icon path{display:none}body:not(.minimal-icons-off) svg.bar-graph{-webkit-mask-image:url('data:image/svg+xml;utf8,')}body:not(.minimal-icons-off) svg.excalidraw-icon{-webkit-mask-image:url('data:image/svg+xml;utf8,')}body:not(.minimal-icons-off) svg.longform{-webkit-mask-image:url('data:image/svg+xml;utf8,')}.workspace-ribbon.mod-left{border-left:0;transition:none}.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed,.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary)!important}.minimal-focus-mode .workspace-ribbon.mod-left{transition:background-color 0s linear 0s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed{border-color:transparent;background-color:var(--background-primary)}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary);border-color:transparent}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-settings{opacity:0;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-settings{opacity:1;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode.borders-title .workspace-ribbon.mod-left.is-collapsed{border-right:none}.minimal-focus-mode .mod-top-right-space .sidebar-toggle-button.mod-right{opacity:0}.minimal-focus-mode:not(.minimal-status-off) .status-bar{opacity:0;transition:opacity .2s ease-in-out}.minimal-focus-mode .status-bar:hover{opacity:1;transition:opacity .2s ease-in-out}.minimal-focus-mode .mod-root .workspace-tabs{position:relative}.minimal-focus-mode .mod-root .workspace-tabs:before:hover{background-color:#00f}.minimal-focus-mode .mod-root .workspace-tab-header-container{height:0;transition:all .1s linear .6s;--tab-outline-width:0px}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-tab-list{opacity:0;transition:opacity .1s linear .6s}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-spacer:before{width:100%;content:" ";background-color:transparent;height:15px;position:absolute;z-index:100;top:0;left:0}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{height:var(--header-height);--tab-outline-width:1px;transition:all .1s linear 50ms}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-tab-list{opacity:1;transition:opacity .1s linear 50ms}.minimal-focus-mode.mod-macos:not(.is-fullscreen) .workspace:not(.is-left-sidedock-open) .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner{padding-top:30px}body.show-view-header .app-container .workspace-split.mod-root>.workspace-leaf .view-header{transition:height .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header{height:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .view-header::after{width:100%;content:" ";background-color:transparent;height:40px;position:absolute;z-index:-9;top:0}body.minimal-focus-mode.show-view-header .view-actions,body.minimal-focus-mode.show-view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header-title-container{opacity:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:focus-within,body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:hover,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header{height:calc(var(--header-height) + 2px);transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-actions,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-actions,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:hover .view-actions,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-title-container{opacity:1;transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .view-content{height:100%}.full-width-media{--iframe-width:100%}.full-width-media .markdown-preview-view .external-embed,.full-width-media .markdown-preview-view .image-embed img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-preview-view audio,.full-width-media .markdown-preview-view img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-preview-view p:has(.external-embed),.full-width-media .markdown-preview-view video,.full-width-media .markdown-source-view .external-embed,.full-width-media .markdown-source-view .image-embed img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-source-view audio,.full-width-media .markdown-source-view img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-source-view p:has(.external-embed),.full-width-media .markdown-source-view video{width:100%}.markdown-rendered img:not(.emoji),.markdown-rendered video,.markdown-source-view img:not(.emoji),.markdown-source-view video{border-radius:var(--image-radius)}.table-small table:not(.calendar){--table-text-size:85%}.table-tiny table:not(.calendar){--table-text-size:75%}.row-hover{--table-edge-cell-padding-first:10px}.row-alt{--table-row-alt-background:var(--background-table-rows);--table-edge-cell-padding-first:10px}.col-alt .markdown-rendered:not(.cards){--table-column-alt-background:var(--background-table-rows)}.table-tabular table:not(.calendar){font-variant-numeric:tabular-nums}.table-lines{--table-border-width:var(--border-width);--table-header-border-width:var(--border-width);--table-column-first-border-width:var(--border-width);--table-column-last-border-width:var(--border-width);--table-row-last-border-width:var(--border-width);--table-edge-cell-padding:10px}.table-nowrap{--table-white-space:nowrap}.table-nowrap .table-wrap,.trim-cols{--table-white-space:normal}.table-numbers table:not(.calendar){counter-reset:section}.table-numbers table:not(.calendar)>thead>tr>th:first-child::before{content:" ";padding-right:.5em;display:inline-block;min-width:2em}.table-numbers table:not(.calendar)>tbody>tr>td:first-child::before{counter-increment:section;content:counter(section) " ";text-align:center;padding-right:.5em;display:inline-block;min-width:2em;color:var(--text-faint);font-variant-numeric:tabular-nums}.row-lines-off .table-view-table>tbody>tr>td,.row-lines-off table:not(.calendar) tbody>tr:last-child>td,.row-lines-off table:not(.calendar) tbody>tr>td{border-bottom:none}.row-lines .table-view-table>tbody>tr>td,.row-lines table:not(.calendar) tbody>tr>td{border-bottom:var(--table-border-width) solid var(--table-border-color)}.row-lines table:not(.calendar) tbody>tr:last-child>td{border-bottom:none}.col-lines .table-view-table thead>tr>th:not(:last-child),.col-lines .table-view-table>tbody>tr>td:not(:last-child),.col-lines table:not(.calendar) tbody>tr>td:not(:last-child){border-right:var(--table-border-width) solid var(--background-modifier-border)}.row-hover{--table-row-background-hover:hsla( var(--accent-h), 50%, 80%, 20% )}.theme-dark .row-hover,.theme-dark.row-hover{--table-row-background-hover:hsla( var(--accent-h), 30%, 40%, 20% )}:root{--image-mix:normal}.image-blend-light{--image-mix:multiply}.theme-dark .markdown-preview-view img,.theme-dark .markdown-source-view img{opacity:var(--image-muted);transition:opacity .25s linear}@media print{body{--image-muted:1}}.theme-dark .markdown-preview-view img:hover,.theme-dark .markdown-source-view img:hover,.theme-dark .print-preview img{opacity:1;transition:opacity .25s linear}.theme-light img{mix-blend-mode:var(--image-mix)}div[src$="#invert"],div[src$="#multiply"]{background-color:var(--background-primary)}.theme-dark div[src$="#invert"] img,.theme-dark img[src$="#invert"],.theme-dark span[src$="#invert"] img{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.theme-dark div[src$="#multiply"] img,.theme-dark img[src$="#multiply"],.theme-dark span[src$="#multiply"] img{mix-blend-mode:screen}.theme-light div[src$="#multiply"] img,.theme-light img[src$="#multiply"],.theme-light span[src$="#multiply"] img{mix-blend-mode:multiply}.theme-light div[src$="#invertW"] img,.theme-light img[src$="#invertW"],.theme-light span[src$=invertW] img{filter:invert(1) hue-rotate(180deg)}img[src$="#circle"],span[src$="#circle"] img,span[src$="#round"] img{border-radius:50%;aspect-ratio:1/1}img[src$="#outline"],span[src$="#outline"] img{border:1px solid var(--ui1)}img[src$="#interface"],span[src$="#interface"] img{border:1px solid var(--ui1);box-shadow:0 .5px .9px rgba(0,0,0,.021),0 1.3px 2.5px rgba(0,0,0,.03),0 3px 6px rgba(0,0,0,.039),0 10px 20px rgba(0,0,0,.06);margin-top:10px;margin-bottom:15px;border-radius:var(--radius-m)}body{--image-grid-fit:cover;--image-grid-background:transparent;--img-grid-gap:0.5rem}@media (max-width:400pt){body{--img-grid-gap:0.25rem}}.img-grid-ratio{--image-grid-fit:contain}.img-grid .image-embed.is-loaded{line-height:0}.img-grid .image-embed.is-loaded img{background-color:var(--image-grid-background)}.img-grid .image-embed.is-loaded img:active{background-color:transparent}.img-grid .markdown-preview-section>div:has(.image-embed)>p{display:grid;margin-block-start:var(--img-grid-gap);margin-block-end:var(--img-grid-gap);grid-column-gap:var(--img-grid-gap);grid-row-gap:0;grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.img-grid .markdown-preview-section>div:has(.image-embed)>p>br{display:none}.img-grid .markdown-preview-section>div:has(.image-embed)>p>img{object-fit:var(--image-grid-fit);align-self:stretch}.img-grid .markdown-preview-section>div:has(.image-embed)>p>.internal-embed img{object-fit:var(--image-grid-fit);height:100%;align-self:center}body:not(.zoom-off) .view-content div:not(.canvas-node-content) img{max-width:100%;cursor:zoom-in}body:not(.zoom-off) .view-content img:active{cursor:zoom-out}body:not(.zoom-off) .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{background-color:var(--background-primary);padding:10px}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active,body:not(.zoom-off) .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{--container-img-width:100%;--container-img-max-width:100%;aspect-ratio:unset;cursor:zoom-out;display:block;z-index:200;position:fixed;max-height:calc(100% + 1px);max-width:100%;height:calc(100% + 1px);width:100%;object-fit:contain;margin:-.5px auto 0!important;text-align:center;padding:0;left:0;right:0;bottom:0}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active:after{background-color:var(--background-primary);opacity:.9;content:" ";height:calc(100% + 1px);width:100%;position:fixed;left:0;right:1px;z-index:0}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active img{aspect-ratio:unset;top:50%;z-index:99;transform:translateY(-50%);padding:0;margin:0 auto;width:calc(100% - 20px);max-height:95vh;object-fit:contain;left:0;right:0;bottom:0;position:absolute;opacity:1}.labeled-nav.is-fullscreen:not(.colorful-frame),.labeled-nav.mod-windows{--labeled-nav-top-margin:0}.labeled-nav{--labeled-nav-top-margin:var(--header-height)}.labeled-nav.is-translucent .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{background-color:transparent}.labeled-nav.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav.mod-macos .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before{-webkit-app-region:drag;position:absolute;width:calc(100% - var(--divider-width));height:calc(var(--header-height) - var(--tab-outline-width));border-bottom:0 solid var(--tab-outline-color)}.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed){border:none;--tab-outline-width:0px}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos:not(.hider-ribbon) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{border-bottom:var(--tab-outline-width) solid var(--tab-outline-color)}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav.mod-macos:not(.hider-ribbon) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav:not(.is-hidden-frameless) .workspace-ribbon.mod-left:not(.is-collapsed){--tab-outline-width:1px}.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{position:absolute;top:0;content:" "}.labeled-nav.hider-ribbon.mod-macos.is-hidden-frameless:not(.is-fullscreen):not(.is-popout-window) .mod-left-split:not(.is-sidedock-collapsed) .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav:not(.is-grabbing):not(.is-fullscreen).is-hidden-frameless .mod-top .workspace-tab-header-container{-webkit-app-region:no-drag}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-spacer{display:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-inner-title{display:inline-block;font-weight:500;font-size:var(--font-adaptive-smaller)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{position:relative;flex-direction:column-reverse!important;height:auto;width:100%}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .sidebar-toggle-button.mod-left{position:absolute;justify-content:flex-end;padding-right:var(--size-4-2);top:0;right:0}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{padding-top:var(--size-4-2);margin-top:var(--labeled-nav-top-margin);flex-direction:column!important;background-color:var(--background-secondary)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-container-inner{flex-grow:1;gap:0;padding:var(--size-4-2) var(--size-4-3)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header{--icon-color:var(--text-muted);--tab-text-color:var(--text-muted);--tab-text-color-focused:var(--text-muted);padding:0;margin-bottom:2px;border:none;height:auto}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:not(:hover){background-color:transparent}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover{opacity:1;--tab-text-color-active:var(--text-normal);--tab-text-color-focused:var(--text-normal);--tab-text-color-focused-active:var(--text-normal);--tab-text-color-focused-active-current:var(--text-normal);--icon-color:var(--text-normal)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header .workspace-tab-header-inner{gap:var(--size-2-3);padding:var(--size-4-1) var(--size-4-2);box-shadow:none;border:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.has-active-menu:hover,.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover{background-color:transparent}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover .workspace-tab-header-inner,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:var(--nav-item-background-hover)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover .workspace-tab-header-inner-icon{color:var(--icon-color-active)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{border:none;padding:0}body:not(.links-int-on){--link-decoration:none}body:not(.links-ext-on){--link-external-decoration:none}body:not(.sidebar-color) .mod-right-split{--background-secondary:var(--background-primary)}body:not(.sidebar-color) .mod-right-split :not(.mod-top) .workspace-tab-header-container{--tab-container-background:var(--background-primary)}body{--minimal-tab-text-color:var(--text-muted);--minimal-tab-text-color-active:var(--text-normal)}.workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color);--tab-text-color-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active-current:var(--minimal-tab-text-color-active)}.tabs-plain-square .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0}.tabs-plain-square .mod-root .workspace-tab-header-container{padding-right:0}.tabs-plain-square .mod-root .workspace-tab-header-container-inner{margin-top:-1px;margin-left:-15px}.tabs-plain-square .mod-root .workspace-tab-header{padding:0}.tabs-plain-square .mod-root .workspace-tab-header-inner{padding:0 8px}.tabs-square .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0}.tabs-underline .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0;--tab-outline-width:0px;--tab-background-active:transparent}.tabs-underline .mod-root .workspace-tab-header-container{border-bottom:1px solid var(--divider-color)}.tabs-underline .mod-root .workspace-tab-header{border-bottom:2px solid transparent}.tabs-underline .mod-root .workspace-tab-header:hover{border-bottom:2px solid var(--ui2)}.tabs-underline .mod-root .workspace-tab-header:hover .workspace-tab-header-inner{background-color:transparent}.tabs-underline .mod-root .workspace-tab-header.is-active{border-bottom:2px solid var(--ax3)}.tabs-underline .mod-root .workspace-tab-header-inner:hover{background-color:transparent}body:not(.sidebar-tabs-underline):not(.sidebar-tabs-index):not(.sidebar-tabs-square) .workspace>.workspace-split:not(.mod-root) .workspace-tabs:not(.mod-top) .workspace-tab-header-container{--tab-outline-width:0}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked){--tab-background:var(--frame-outline-color);--tab-outline-width:1px}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-close-button,.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover .workspace-tab-header-inner-close-button{color:var(--minimal-tab-text-color-active)}.tabs-modern.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{--tab-outline-width:0px}.tabs-modern .mod-root{--tab-container-background:var(--background-primary)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked){--tab-background:var(--background-modifier-hover);--tab-height:calc(var(--header-height) - 14px);--tab-outline-width:0px}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::before{display:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-container-inner{align-items:center;margin:0;padding:2px var(--size-4-2) 0 var(--size-4-1)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner-title{text-overflow:ellipsis;-webkit-mask-image:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header{background:0 0;border-radius:5px;border:none;box-shadow:none;height:var(--tab-height);margin-left:var(--size-4-1);padding:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-title{color:var(--tab-text-color-active)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active.mod-active,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover{opacity:1;background-color:var(--tab-background)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-new-tab{margin-right:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner{padding:0 var(--size-4-1) 0 var(--size-4-2);border:1px solid transparent}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:transparent}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active:not(.mod-active) .workspace-tab-header-inner,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(:hover):not(.mod-active) .workspace-tab-header-inner{border:1px solid var(--tab-outline-color)}.tabs-modern.sidebar-tabs-default .mod-right-split,.tabs-modern.sidebar-tabs-wide .mod-right-split{--tab-outline-width:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:0;margin:0;flex-grow:1;gap:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header{flex-grow:1;border-radius:0;max-width:100px}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover{background-color:transparent}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner{background-color:transparent}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner{border-bottom:2px solid transparent;border-radius:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover{border-color:var(--ui2)}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner{border-color:var(--ax3);padding-top:1px}.sidebar-tabs-square .mod-left-split,.sidebar-tabs-square .mod-right-split{--tab-radius:0px}.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-index:not(.labeled-nav) .mod-left-split,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-square:not(.labeled-nav) .mod-left-split{--tab-background-active:var(--background-secondary)}.sidebar-tabs-index .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner,.sidebar-tabs-square .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:1px var(--size-4-2) 0;margin:6px 0 calc(var(--tab-outline-width) * -1);flex-grow:1}.sidebar-tabs-index .mod-right-split .workspace-tab-header,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header,.sidebar-tabs-square .mod-right-split .workspace-tab-header,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1;max-width:100px;border-radius:var(--tab-radius) var(--tab-radius) 0 0}.sidebar-tabs-index .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active,.sidebar-tabs-square .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{box-shadow:0 0 0 var(--tab-outline-width) var(--tab-outline-color);color:var(--tab-text-color-active);background-color:var(--tab-background-active)}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{flex-grow:1;border:1px solid var(--tab-outline-color);padding:3px;margin:6px 8px 6px;border-radius:4px}.sidebar-tabs-wide .mod-right-split .workspace-tab-header,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1}.sidebar-tabs-wide .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{border-color:transparent}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.full-file-names{--nav-item-white-space:normal}body:not(.full-file-names){--nav-item-white-space:nowrap}body:not(.full-file-names) .tree-item-self{white-space:nowrap}body:not(.full-file-names) .tree-item-inner{text-overflow:ellipsis;overflow:hidden}.theme-dark,.theme-light{--h1l:var(--ui1);--h2l:var(--ui1);--h3l:var(--ui1);--h4l:var(--ui1);--h5l:var(--ui1);--h6l:var(--ui1)}.h1-l .markdown-reading-view h1:not(.embedded-note-title),.h1-l .mod-cm6 .cm-editor .HyperMD-header-1{border-bottom:1px solid var(--h1l);padding-bottom:.4em;margin-block-end:0.6em}.h2-l .markdown-reading-view h2,.h2-l .mod-cm6 .cm-editor .HyperMD-header-2{border-bottom:1px solid var(--h2l);padding-bottom:.4em;margin-block-end:0.6em}.h3-l .markdown-reading-view h3,.h3-l .mod-cm6 .cm-editor .HyperMD-header-3{border-bottom:1px solid var(--h3l);padding-bottom:.4em;margin-block-end:0.6em}.h4-l .markdown-reading-view h4,.h4-l .mod-cm6 .cm-editor .HyperMD-header-4{border-bottom:1px solid var(--h4l);padding-bottom:.4em;margin-block-end:0.6em}.h5-l .markdown-reading-view h5,.h5-l .mod-cm6 .cm-editor .HyperMD-header-5{border-bottom:1px solid var(--h5l);padding-bottom:.4em;margin-block-end:0.6em}.h6-l .markdown-reading-view h6,.h6-l .mod-cm6 .cm-editor .HyperMD-header-6{border-bottom:1px solid var(--h6l);padding-bottom:.4em;margin-block-end:0.6em}.is-tablet .workspace-drawer{padding-top:0}.is-tablet .workspace-drawer:not(.is-pinned){margin:30px 16px 0;height:calc(100vh - 48px);border-radius:15px;border:none}.is-tablet .workspace-drawer-ribbon{background-color:var(--background-primary);border-right:1px solid var(--background-modifier-border)}.is-tablet .workspace-drawer-header,.is-tablet .workspace-drawer.is-pinned .workspace-drawer-header{padding-top:var(--size-4-4)}.is-mobile{--font-bold:600;--font-ui-medium:var(--font-adaptive-small);--interactive-normal:var(--background-secondary);--background-modifier-form-field:var(--background-secondary);--background-modifier-form-field-highlighted:var(--background-secondary)}.is-mobile .markdown-source-view.mod-cm6 .cm-gutters{margin-left:0}.is-mobile .workspace-drawer.mod-left.is-pinned{max-width:var(--mobile-left-sidebar-width);min-width:150pt}.is-mobile .workspace-drawer.mod-right.is-pinned{max-width:var(--mobile-right-sidebar-width);min-width:150pt}.backlink-pane>.tree-item-self,.backlink-pane>.tree-item-self:hover,.outgoing-link-pane>.tree-item-self,.outgoing-link-pane>.tree-item-self:hover{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500}body{--canvas-dot-pattern:var(--background-modifier-border-hover)}.canvas-node-label{font-size:var(--font-adaptive-small)}.canvas-edges :not(.is-themed) path.canvas-display-path{stroke:var(--background-modifier-border-focus)}.canvas-edges :not(.is-themed) polyline.canvas-path-end{stroke:var(--background-modifier-border-focus);fill:var(--background-modifier-border-focus)}.canvas-node-container{border:1.5px solid var(--background-modifier-border-focus)}.node-insert-event.mod-inside-iframe{--max-width:100%;--folding-offset:0px}.node-insert-event.mod-inside-iframe .cm-editor .cm-content{padding-top:0}.is-mobile .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{display:none}body:not(.is-mobile) .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest)}.nav-buttons-container{justify-content:flex-start}.nav-file-tag{padding-top:.2em;background-color:transparent;color:var(--text-faint)}.nav-file .is-active .nav-file-tag,.nav-file:hover .nav-file-tag{color:var(--text-muted)}input.prompt-input,input.prompt-input:focus,input.prompt-input:focus-visible,input.prompt-input:hover{border-color:rgba(var(--mono-rgb-100),.05)}.is-mobile .mod-publish .modal-content{display:unset;padding:10px 10px 10px;margin-bottom:120px;overflow-x:hidden}.is-mobile .mod-publish .button-container,.is-mobile .modal.mod-publish .modal-button-container{padding:10px 15px 30px;margin-left:0;left:0}.is-mobile .modal.mod-publish .modal-title{padding:10px 20px;margin:0 -10px;border-bottom:1px solid var(--background-modifier-border)}.is-mobile .publish-site-settings-container{margin-right:0;padding:0}.is-mobile .modal.mod-publish .modal-content .publish-sections-container{margin-right:0;padding-right:0}@media (max-width:400pt){.is-mobile .publish-changes-info,.is-mobile .publish-section-header{flex-wrap:wrap;border:none}.is-mobile .publish-changes-info .publish-changes-add-linked-btn{flex-basis:100%;margin-top:10px}.is-mobile .publish-section-header-text{flex-basis:100%;margin-bottom:10px;margin-left:20px;margin-top:-8px}.is-mobile .publish-section{background:var(--background-secondary);border-radius:10px;padding:12px 12px 1px}.is-mobile .publish-changes-switch-site{flex-grow:0;margin-right:10px}}.release-notes-view .cm-scroller.is-readable-line-width{width:var(--line-width);max-width:var(--max-width);margin:0 auto}.search-results-info{border-bottom:none}@media (max-width:400pt){.is-mobile .modal.mod-sync-log{width:100vw;height:100vh;max-height:calc(100vh - 32px);box-shadow:0 -32px 0 32px var(--background-primary);bottom:0;padding-bottom:10px}}.obsidian-banner.solid{border-bottom:var(--divider-width) solid var(--divider-color)}.contextual-typography .markdown-preview-view div.has-banner-icon.obsidian-banner-wrapper{overflow:visible}.theme-dark .markdown-preview-view img.emoji{opacity:1}body.theme-dark .button-default,body.theme-light .button-default{border:none;box-shadow:none;height:var(--input-height);background:var(--background-modifier-hover);color:var(--text-normal);font-size:revert;font-weight:500;transform:none;transition:all .1s linear;padding:0 20px}body.theme-dark .button-default:hover,body.theme-light .button-default:hover{border:none;background:var(--background-modifier-border-hover);box-shadow:none;transform:none;transition:all .1s linear}body.theme-dark .button-default:active,body.theme-dark .button-default:focus,body.theme-light .button-default:active,body.theme-light .button-default:focus{box-shadow:none}body .button-default.blue{background-color:var(--color-blue)!important}.button-default.red{background-color:var(--color-red)!important}.button-default.green{background-color:var(--color-green)!important}.button-default.yellow{background-color:var(--color-yellow)!important}.button-default.purple{background-color:var(--color-purple)!important}.workspace-leaf-content[data-type=calendar] .view-content{padding:5px 0 0 0}.mod-root #calendar-container{width:var(--line-width);max-width:var(--max-width);margin:0 auto;padding:0}body{--calendar-dot-active:var(--text-faint);--calendar-dot-today:var(--text-accent)}#calendar-container{padding:0 var(--size-4-4) var(--size-4-1);--color-background-day-empty:var(--background-secondary-alt);--color-background-day-active:var(--background-modifier-hover);--color-background-day-hover:var(--background-modifier-hover);--color-dot:var(--text-faint);--calendar-text-active:inherit;--color-text-title:var(--text-normal);--color-text-heading:var(--text-muted);--color-text-day:var(--text-normal);--color-text-today:var(--text-normal);--color-arrow:var(--text-faint);--color-background-day-empty:transparent}#calendar-container .table{border-collapse:separate;table-layout:fixed}#calendar-container h2{font-weight:400;font-size:var(--h2)}#calendar-container .arrow{cursor:var(--cursor);width:22px;border-radius:4px;padding:3px 7px}#calendar-container .arrow svg{width:12px;height:12px;color:var(--text-faint);opacity:.7}#calendar-container .arrow:hover{fill:var(--text-muted);color:var(--text-muted);background-color:var(--background-modifier-hover)}#calendar-container .arrow:hover svg{color:var(--text-muted);opacity:1}#calendar-container tr th{padding:2px 0 4px;font-weight:500;letter-spacing:.1em;font-size:var(--font-adaptive-smallest)}#calendar-container tr th:first-child{padding-left:0!important}#calendar-container tr td{padding:2px 0 0 0;border-radius:var(--radius-m);cursor:var(--cursor);border:1px solid transparent;transition:none}#calendar-container tr td:first-child{padding-left:0!important}#calendar-container .nav{padding:0;margin:var(--size-4-2) var(--size-4-1)}#calendar-container .dot{margin:0}#calendar-container .month,#calendar-container .title,#calendar-container .year{font-size:calc(var(--font-adaptive-small) + 2px);font-weight:400;color:var(--text-normal)}#calendar-container .today,#calendar-container .today.active{color:var(--text-accent);font-weight:600}#calendar-container .today .dot,#calendar-container .today.active .dot{fill:var(--calendar-dot-today)}#calendar-container .active .task{stroke:var(--text-faint)}#calendar-container .active{color:var(--text-normal)}#calendar-container .reset-button{text-transform:none;letter-spacing:0;font-size:var(--font-adaptive-smaller);font-weight:500;color:var(--text-muted);border-radius:4px;margin:0;padding:2px 8px}#calendar-container .reset-button:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}#calendar-container .day,#calendar-container .reset-button,#calendar-container .week-num{cursor:var(--cursor)}#calendar-container .day.adjacent-month{color:var(--text-faint);opacity:1}#calendar-container .day{padding:2px 4px 4px}#calendar-container .day,#calendar-container .week-num{font-size:calc(var(--font-adaptive-smaller) + 5%)}#calendar-container .active,#calendar-container .active.today,#calendar-container .day:hover,#calendar-container .week-num:hover{background-color:var(--color-background-day-active);color:var(--calendar-text-active)}#calendar-container .active .dot{fill:var(--calendar-dot-active)}#calendar-container .active .task{stroke:var(--text-faint)}.block-language-chart canvas,.block-language-dataviewjs canvas{margin:1em 0}.theme-dark,.theme-light{--chart-color-1:var(--color-blue);--chart-color-2:var(--color-red);--chart-color-3:var(--color-yellow);--chart-color-4:var(--color-green);--chart-color-5:var(--color-orange);--chart-color-6:var(--color-purple);--chart-color-7:var(--color-cyan);--chart-color-8:var(--color-pink)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact,.checklist-plugin-main .group .page,.checklist-plugin-main .group svg{cursor:var(--cursor)}.workspace .view-content .checklist-plugin-main{padding:10px 10px 15px 15px;--todoList-togglePadding--compact:2px;--todoList-listItemMargin--compact:2px}.checklist-plugin-main .title{font-weight:400;color:var(--text-muted);font-size:var(--font-adaptive-small)}.checklist-plugin-main .group svg{fill:var(--text-faint)}.checklist-plugin-main .group svg:hover{fill:var(--text-normal)}.checklist-plugin-main .group .title:hover{color:var(--text-normal)}.checklist-plugin-main .group:not(:last-child){border-bottom:1px solid var(--background-modifier-border)}.checklist-plugin-main .group{padding:0 0 2px 0}.checklist-plugin-main .group .classic:last-child,.checklist-plugin-main .group .compact:last-child{margin-bottom:10px}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{font-size:var(--font-adaptive-small)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{background:0 0;border-radius:0;margin:1px auto;padding:0}.checklist-plugin-main .group .classic .content{padding:0}.checklist-plugin-main .group .classic:hover,.checklist-plugin-main .group .compact:hover{background:0 0}.markdown-preview-view.checklist-plugin-main ul>li:not(.task-list-item)::before{display:none}.checklist-plugin-main .group .compact>.toggle .checked{background:var(--text-accent);top:-1px;left:-1px;height:18px;width:18px}.checklist-plugin-main .compact .toggle:hover{opacity:1!important}.checklist-plugin-main .group .count{font-size:var(--font-adaptive-smaller);padding:0;background:0 0;font-weight:400;color:var(--text-faint)}.checklist-plugin-main .group .group-header:hover .count{color:var(--text-muted)}.checklist-plugin-main .group .checkbox{border:1px solid var(--background-modifier-border-hover);min-height:18px;min-width:18px;height:18px;width:18px}.checklist-plugin-main .group .checkbox:hover{border:1px solid var(--background-modifier-border-focus)}.checklist-plugin-main button:active,.checklist-plugin-main button:focus,.checklist-plugin-main button:hover{box-shadow:none!important}.checklist-plugin-main button.collapse{padding:0}body:not(.is-mobile) .checklist-plugin-main button.collapse svg{width:18px;height:18px}.is-mobile .checklist-plugin-main .group-header .title{flex-grow:1;flex-shrink:0}.is-mobile .checklist-plugin-main button{width:auto}.is-mobile .checklist-plugin-main.markdown-preview-view ul{padding-inline-start:0}.is-mobile .workspace .view-content .checklist-plugin-main{padding-bottom:50px}body #cMenuModalBar{box-shadow:0 2px 20px var(--shadow-color)}body #cMenuModalBar .cMenuCommandItem{cursor:var(--cursor)}body #cMenuModalBar button.cMenuCommandItem:hover{background-color:var(--background-modifier-hover)}.MiniSettings-statusbar-button{padding-top:0;padding-bottom:0}.dataview-inline-lists .markdown-preview-view .dataview-ul,.dataview-inline-lists .markdown-source-view .dataview-ul{--list-spacing:0}.dataview-inline-lists .markdown-preview-view .dataview-ul li:not(:last-child):after,.dataview-inline-lists .markdown-source-view .dataview-ul li:not(:last-child):after{content:", "}.dataview-inline-lists .markdown-preview-view ul.dataview-ul>li::before,.dataview-inline-lists .markdown-source-view ul.dataview-ul>li::before{display:none}.dataview-inline-lists .markdown-preview-view .dataview-ul li,.dataview-inline-lists .markdown-source-view .dataview-ul li{display:inline-block;padding-right:.25em}.markdown-preview-view .table-view-table>thead>tr>th,body .table-view-table>thead>tr>th{font-weight:400;font-size:var(--table-text-size);color:var(--text-muted);border-bottom:var(--table-border-width) solid var(--table-border-color);cursor:var(--cursor)}table.dataview ul.dataview-ul{list-style:none;padding-inline-start:0;margin-block-start:0em!important;margin-block-end:0em!important}.markdown-preview-view:not(.cards) .table-view-table>tbody>tr>td,.markdown-source-view.mod-cm6:not(.cards) .table-view-table>tbody>tr>td{max-width:var(--max-col-width)}body .dataview.small-text{color:var(--text-faint)}body:not(.row-hover) .dataview.task-list-basic-item:hover,body:not(.row-hover) .dataview.task-list-item:hover,body:not(.row-hover) .table-view-table>tbody>tr:hover{background-color:transparent!important;box-shadow:none}body.row-hover .dataview.task-list-basic-item:hover,body.row-hover .dataview.task-list-item:hover,body.row-hover .table-view-table>tbody>tr:hover{background-color:var(--table-row-background-hover)!important}body .dataview-error{background-color:transparent}.dataview.dataview-error,.markdown-source-view.mod-cm6 .cm-content .dataview.dataview-error{color:var(--text-muted)}body div.dataview-error-box{min-height:0;border:none;background-color:transparent;font-size:var(--table-text-size);border-radius:var(--radius-m);padding:15px 0;justify-content:flex-start}body div.dataview-error-box p{margin-block-start:0;margin-block-end:0;color:var(--text-faint)}.block-language-dataviewjs:has(.dataview-error-box) table.dataview{display:none}.trim-cols .markdown-preview-view .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>thead>tr>th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}ul .dataview .task-list-basic-item:hover,ul .dataview .task-list-item:hover{background-color:transparent;box-shadow:none}body .dataview.result-group{padding-left:0}body .dataview .inline-field-standalone-value,body .dataview.inline-field-key,body .dataview.inline-field-value{font-family:var(--font-text);font-size:calc(var(--font-adaptive-normal) - 2px);background:0 0;color:var(--text-muted)}body .dataview.inline-field-key{padding:0}body .dataview .inline-field-standalone-value{padding:0}body .dataview.inline-field-key::after{margin-left:3px;content:"|";color:var(--background-modifier-border)}body .dataview.inline-field-value{padding:0 1px 0 3px}.markdown-preview-view .block-language-dataview table.calendar th{border:none;cursor:default;background-image:none}.markdown-preview-view .block-language-dataview table.calendar .day{font-size:var(--font-adaptive-small)}.database-plugin__navbar,.database-plugin__scroll-container,.database-plugin__table{width:100%}.dbfolder-table-container{--font-adaptive-normal:var(--table-text-size);--font-size-text:12px}.database-plugin__cell_size_wide .database-plugin__td{padding:.15rem}.database-plugin__table{border-spacing:0!important}.MuiAppBar-root{background-color:transparent!important}.workspace-leaf-content .view-content.dictionary-view-content{padding:0}div[data-type=dictionary-view] .contents{padding-bottom:2rem}div[data-type=dictionary-view] .results>.container{background-color:transparent;margin-top:0;max-width:none;padding:0 10px}div[data-type=dictionary-view] .error,div[data-type=dictionary-view] .errorDescription{text-align:left;font-size:var(--font-adaptive-small);padding:10px 12px 0;margin:0}div[data-type=dictionary-view] .results>.container h3{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 0 2px;margin-bottom:6px}div[data-type=dictionary-view] .container .main{border-radius:0;background-color:transparent;font-size:var(--font-adaptive-smaller);line-height:1.3;color:var(--text-muted);padding:5px 0 0}div[data-type=dictionary-view] .main .definition{padding:10px;border:1px solid var(--background-modifier-border);border-radius:5px;margin:10px 0 5px;background-color:var(--background-primary)}div[data-type=dictionary-view] .main .definition:last-child{border:1px solid var(--background-modifier-border)}div[data-type=dictionary-view] .main .synonyms{padding:10px 0 0}div[data-type=dictionary-view] .main .synonyms p{margin:0}div[data-type=dictionary-view] .main .definition>blockquote{margin:0}div[data-type=dictionary-view] .main .label{color:var(--text-normal);margin-bottom:2px;font-size:var(--font-adaptive-smaller);font-weight:500}div[data-type=dictionary-view] .main .mark{color:var(--text-normal);background-color:var(--text-selection);box-shadow:none}div[data-type=dictionary-view] .main>.opener{font-size:var(--font-adaptive-small);color:var(--text-normal);padding-left:5px}body .excalidraw,body .excalidraw.theme--dark{--color-primary-light:var(--text-selection);--color-primary:var(--interactive-accent);--color-primary-darker:var(--interactive-accent-hover);--color-primary-darkest:var(--interactive-accent-hover);--ui-font:var(--font-interface);--island-bg-color:var(--background-secondary);--icon-fill-color:var(--text-normal);--button-hover:var(--background-modifier-hover);--button-gray-1:var(--background-modifier-hover);--button-gray-2:var(--background-modifier-hover);--focus-highlight-color:var(--background-modifier-border-focus);--default-bg-color:var(--background-primary);--default-border-color:var(--background-modifier-border);--input-border-color:var(--background-modifier-border);--link-color:var(--text-accent);--overlay-bg-color:rgba(255, 255, 255, 0.88);--text-primary-color:var(--text-normal)}.git-view-body .opener{text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 5px 10px;margin-bottom:6px}.git-view-body .file-view .opener{text-transform:none;letter-spacing:normal;font-size:var(--font-adaptive-smallest);font-weight:400;padding:initial;margin-bottom:0}.git-view-body .file-view .opener .collapse-icon{display:flex!important;margin-left:-7px}.git-view-body{margin-top:6px}.git-view-body .file-view{margin-left:4px}.git-view-body .file-view main:hover{color:var(--text-normal)}.git-view-body .file-view .tools .type{display:none!important}.git-view-body .file-view .tools{opacity:0;transition:opacity .1s}.git-view-body .file-view main:hover>.tools{opacity:1}.git-view-body .staged{margin-bottom:12px}.git-view-body .opener.open{color:var(--text-normal)}div[data-type=git-view] .search-input-container{margin-left:0;width:100%}.git-view-body .opener .collapse-icon{display:none!important}.git-view-body main{background-color:var(--background-primary)!important;width:initial!important}.git-view-body .file-view>main:not(.topLevel){margin-left:7px}div[data-type=git-view] .commit-msg{min-height:2.5em!important;height:2.5em!important;padding:6.5px 8px!important}div[data-type=git-view] .search-input-clear-button{bottom:5.5px}.mod-macos.hider-frameless .workspace-ribbon{border:none}.is-tablet.hider-ribbon{--ribbon-width:0px}.is-tablet.hider-ribbon .side-dock-ribbon{display:none}.hider-ribbon .workspace-ribbon{padding:0}:root{--hider-ribbon-display:none}.ribbon-bottom-left-hover:not(.is-mobile){--hider-ribbon-display:flex}.hider-ribbon .workspace-ribbon-collapse-btn{display:none}.hider-ribbon .workspace-ribbon.mod-right{pointer-events:none}.hider-ribbon .workspace-ribbon.mod-left{position:absolute;border-right:0px;margin:0;height:var(--header-height);overflow:visible;flex-basis:0;bottom:0;top:auto;display:var(--hider-ribbon-display)!important;flex-direction:row;z-index:17;opacity:0;transition:opacity .25s ease-in-out;filter:drop-shadow(2px 10px 30px rgba(0,0,0,.2));gap:0}.hider-ribbon .side-dock-actions,.hider-ribbon .side-dock-settings{flex-direction:row;display:var(--hider-ribbon-display);border-top:var(--border-width) solid var(--background-modifier-border);background:var(--background-secondary);margin:0;position:relative;gap:var(--size-2-2)}.hider-ribbon .side-dock-actions{padding-left:8px}.hider-ribbon .side-dock-settings{border-right:var(--border-width) solid var(--background-modifier-border);border-top-right-radius:var(--radius-m);padding:0 var(--size-2-2)}.hider-ribbon .workspace-ribbon.mod-left .side-dock-ribbon-action{display:var(--hider-ribbon-display);margin:7px 0 8px}.hider-ribbon .workspace-ribbon.mod-left:hover{opacity:1;transition:opacity .25s ease-in-out}.hider-ribbon .workspace-ribbon.mod-left .workspace-ribbon-collapse-btn{opacity:0}.hider-ribbon .workspace-split.mod-left-split{margin:0}.hider-ribbon .workspace-leaf-content .item-list{padding-bottom:40px}.popover.hover-editor{--folding-offset:10px}.theme-dark,.theme-light{--he-title-bar-inactive-bg:var(--background-secondary);--he-title-bar-inactive-pinned-bg:var(--background-secondary);--he-title-bar-active-pinned-bg:var(--background-secondary);--he-title-bar-active-bg:var(--background-secondary);--he-title-bar-inactive-fg:var(--text-muted);--he-title-bar-active-fg:var(--text-normal);--he-title-bar-font-size:14px}.theme-light{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.032),0px 5.9px 8.7px rgba(0, 0, 0, 0.052),0px 10.4px 18.1px rgba(0, 0, 0, 0.071),0px 20px 40px rgba(0, 0, 0, 0.11)}.theme-dark{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.081),0px 5.9px 8.7px rgba(0, 0, 0, 0.131),0px 10.4px 18.1px rgba(0, 0, 0, 0.18),0px 20px 40px rgba(0, 0, 0, 0.28)}.popover.hover-editor:not(.snap-to-viewport){--max-width:92%}.popover.hover-editor:not(.snap-to-viewport) .markdown-preview-view,.popover.hover-editor:not(.snap-to-viewport) .markdown-source-view .cm-content{font-size:90%}body .popover.hover-editor:not(.is-loaded){box-shadow:var(--popover-shadow)}body .popover.hover-editor:not(.is-loaded) .markdown-preview-view{padding:15px 0 0 0}body .popover.hover-editor:not(.is-loaded) .view-content{height:100%;background-color:var(--background-primary)}body .popover.hover-editor:not(.is-loaded) .view-actions{height:auto}body .popover.hover-editor:not(.is-loaded) .popover-content{border:1px solid var(--background-modifier-border-hover)}body .popover.hover-editor:not(.is-loaded) .popover-titlebar{padding:0 4px}body .popover.hover-editor:not(.is-loaded) .popover-titlebar .popover-title{padding-left:4px;letter-spacing:-.02em;font-weight:var(--title-weight)}body .popover.hover-editor:not(.is-loaded) .markdown-embed{height:auto;font-size:unset;line-height:unset}body .popover.hover-editor:not(.is-loaded) .markdown-embed .markdown-preview-view{padding:0}body .popover.hover-editor:not(.is-loaded).show-navbar .popover-titlebar{border-bottom:var(--border-width) solid var(--background-modifier-border)}body .popover.hover-editor:not(.is-loaded) .popover-action,body .popover.hover-editor:not(.is-loaded) .popover-header-icon{cursor:var(--cursor);margin:4px 0;padding:4px 3px;border-radius:var(--radius-m);color:var(--icon-color)}body .popover.hover-editor:not(.is-loaded) .popover-action.mod-pin-popover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.mod-pin-popover{padding:4px 2px}body .popover.hover-editor:not(.is-loaded) .popover-action svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon svg{opacity:var(--icon-muted)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover{background-color:var(--background-modifier-hover);color:var(--icon-color-hover)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover svg{opacity:1;transition:opacity .1s ease-in-out}body .popover.hover-editor:not(.is-loaded) .popover-action.is-active,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.is-active{color:var(--icon-color)}body.minimal-dark-black.theme-dark,body.minimal-dark-tonal.theme-dark,body.minimal-light-tonal.theme-light,body.minimal-light-white.theme-light,body.theme-dark{--kanban-border:0px}body:not(.is-mobile) .kanban-plugin__grow-wrap>textarea:focus{box-shadow:none}body:not(.minimal-icons-off) .kanban-plugin svg.cross{height:14px;width:14px}body .kanban-plugin__icon>svg,body .kanban-plugin__lane-settings-button svg{width:18px;height:18px}body .kanban-plugin{--kanban-border:var(--border-width);--interactive-accent:var(--text-selection);--interactive-accent-hover:var(--background-modifier-hover);--text-on-accent:var(--text-normal);background-color:var(--background-primary)}body .kanban-plugin__markdown-preview-view{font-family:var(--font-text)}body .kanban-plugin__board>div{margin:0 auto}body .kanban-plugin__checkbox-label{color:var(--text-muted)}body .kanban-plugin__item-markdown ul{margin:0}body .kanban-plugin__item-content-wrapper{box-shadow:none}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea{padding:0;border:0;border-radius:0}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__item-title p,body .kanban-plugin__markdown-preview-view{font-size:var(--font-ui-medium);line-height:1.3}body .kanban-plugin__item{background-color:var(--background-primary)}body .kanban-plugin__item-title-wrapper{align-items:center}body .kanban-plugin__lane-form-wrapper{border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane-header-wrapper{border-bottom:0}body .kanban-plugin__lane-header-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-input-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-title p{background:0 0;color:var(--text-normal);font-size:var(--font-ui-medium);font-weight:500}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea{padding:0;border-radius:0;height:auto}body .kanban-plugin__item-form .kanban-plugin__grow-wrap{background-color:var(--background-primary)}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea::placeholder{color:var(--text-faint)}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button,body .kanban-plugin__item button.kanban-plugin__item-edit-button,body .kanban-plugin__item-settings-actions>button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane-action-wrapper>button{background:0 0;transition:color .1s ease-in-out}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button:hover,body .kanban-plugin__item button.kanban-plugin__item-edit-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-edit-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{color:var(--text-normal);transition:color .1s ease-in-out;background:0 0}body .kanban-plugin__new-lane-button-wrapper{position:fixed;bottom:30px}body .kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{border:1px dashed var(--background-modifier-border);height:2em}body .kanban-plugin__item-postfix-button-wrapper{align-self:flex-start}body .kanban-plugin__item button.kanban-plugin__item-postfix-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-prefix-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled{color:var(--text-muted)}body .kanban-plugin button{box-shadow:none;cursor:var(--cursor);height:auto}body .kanban-plugin__item button.kanban-plugin__item-postfix-button:hover,body .kanban-plugin__item button.kanban-plugin__item-prefix-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{background-color:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button{color:var(--text-muted);font-weight:400;background:0 0;min-height:calc(var(--input-height) + 8px)}body .kanban-plugin__item-button-wrapper>button:hover{color:var(--text-normal);background:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button:focus{box-shadow:none}body .kanban-plugin__item-button-wrapper{padding:1px 6px 5px;border-top:none}body .kanban-plugin__lane-setting-wrapper>div:last-child{border:none;margin:0}body .kanban-plugin.something-is-dragging{cursor:grabbing;cursor:-webkit-grabbing}body .kanban-plugin__item.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15),0 0 0 2px var(--text-selection)}body .kanban-plugin__lane-items{border:var(--kanban-border) solid var(--background-modifier-border);padding:0 4px;margin:0;background-color:var(--background-secondary)}body .kanban-plugin__lane{background:0 0;padding:0;border:var(--border-width) solid transparent}body .kanban-plugin__lane.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15);border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane .kanban-plugin__item-button-wrapper{border-top-left-radius:8px;border-top-right-radius:8px;border-top:1px solid var(--background-modifier-border);border-bottom-width:0;padding:4px 4px 0 4px}body .kanban-plugin__lane.will-prepend .kanban-plugin__lane-items{border-radius:8px}body .kanban-plugin__lane.will-prepend .kanban-plugin__item-form{border-top:1px solid var(--background-modifier-border);border-radius:8px 8px 0 0;padding:4px 4px 0;border-bottom-width:0}body .kanban-plugin__lane.will-prepend .kanban-plugin__item-form+.kanban-plugin__lane-items{border-top-width:0;border-radius:0 0 8px 8px}body .kanban-plugin__lane.will-prepend .kanban-plugin__item-button-wrapper+.kanban-plugin__lane-items{border-top-width:0;border-radius:0 0 8px 8px}body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__item-button-wrapper,body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__item-form{border-top:none;border-radius:0 0 8px 8px}body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__item-button-wrapper{padding:0 4px 4px 4px;border-bottom-width:1px}body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__lane-items{border-bottom:none;border-top-width:1px;border-radius:8px 8px 0 0}body .kanban-plugin__item-form .kanban-plugin__item-input-wrapper{min-height:calc(var(--input-height) + 8px);display:flex;justify-content:center}body .kanban-plugin__item-button-wrapper,body .kanban-plugin__item-form{background-color:var(--background-secondary);border:var(--kanban-border) solid var(--background-modifier-border)}body .kanban-plugin__item-form{padding:0 4px 5px}body .kanban-plugin__markdown-preview-view ol,body .kanban-plugin__markdown-preview-view ol.contains-task-list .contains-task-list,body .kanban-plugin__markdown-preview-view ul,body .kanban-plugin__markdown-preview-view ul.contains-task-list .contains-task-list{padding-inline-start:1.8em!important}@media (max-width:400pt){.kanban-plugin__board{flex-direction:column!important}.kanban-plugin__lane{width:100%!important;margin-bottom:1rem!important}}body .cm-heading-marker{cursor:var(--cursor);padding-left:10px}.theme-light{--leaflet-buttons:var(--bg1);--leaflet-borders:rgba(0,0,0,0.1)}.theme-dark{--leaflet-buttons:var(--bg2);--leaflet-borders:rgba(255,255,255,0.1)}.leaflet-top{transition:top .1s linear}.mod-macos.minimal-focus-mode .mod-root .map-100 .markdown-preview-sizer.markdown-preview-section .el-lang-leaflet:nth-child(3) .leaflet-top{top:calc(18px + var(--ewt-traffic-light-y));transition:top .1s linear}body .leaflet-container{background-color:var(--background-secondary);font-family:var(--font-interface)}.map-100 .markdown-preview-sizer.markdown-preview-section .el-lang-leaflet:nth-child(3){margin-top:-16px}.leaflet-control-attribution{display:none}.leaflet-popup-content{margin:10px}.block-language-leaflet{border-radius:var(--radius-m);overflow:hidden;border:var(--border-width) solid var(--background-modifier-border)}.map-wide .block-language-leaflet{border-radius:var(--radius-l)}.map-max .block-language-leaflet{border-radius:var(--radius-xl)}.workspace-leaf-content[data-type=obsidian-leaflet-map-view] .block-language-leaflet{border-radius:0;border:none}.map-100 .block-language-leaflet{border-radius:0;border-left:none;border-right:none}.block-language-leaflet .leaflet-control-expandable-list .input-container .input-item>input{appearance:none}body .block-language-leaflet .leaflet-bar.disabled>a{background-color:transparent;opacity:.3}body .leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}body .leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}body .leaflet-control-layers-toggle{border-radius:4px}body .block-language-leaflet .leaflet-control-expandable,body .block-language-leaflet .leaflet-control-has-actions .control-actions.expanded,body .block-language-leaflet .leaflet-distance-control,body .leaflet-bar,body .leaflet-bar a,body .leaflet-control-layers-expanded,body .leaflet-control-layers-toggle{background-color:var(--leaflet-buttons);color:var(--text-muted);border:none;user-select:none}body .leaflet-bar a.leaflet-disabled,body .leaflet-bar a.leaflet-disabled:hover{background-color:var(--leaflet-buttons);color:var(--text-faint);opacity:.6;cursor:not-allowed}body .leaflet-control a{cursor:var(--cursor);color:var(--text-normal)}body .leaflet-bar a:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);border:none}body .leaflet-touch .leaflet-control-layers{background-color:var(--leaflet-buttons)}body .leaflet-touch .leaflet-bar,body .leaflet-touch .leaflet-control-layers{border-radius:5px;box-shadow:2px 0 8px 0 rgba(0,0,0,.1);border:1px solid var(--ui1)}body .block-language-leaflet .leaflet-control-has-actions .control-actions{box-shadow:0;border:1px solid var(--ui1)}body .leaflet-control-expandable-list .leaflet-bar{box-shadow:none;border-radius:0}body .block-language-leaflet .leaflet-distance-control{padding:4px 10px;height:auto;cursor:var(--cursor)!important}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper>*{font-size:var(--font-adaptive-small);font-family:var(--font-interface)}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper{padding:4px 10px!important}.leaflet-marker-icon svg path{stroke:var(--background-primary);stroke-width:18px}.map-view-marker-name{font-weight:400}.workspace-leaf-content[data-type=map] .graph-controls{background-color:var(--background-primary)}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-split.mod-root .workspace-leaf-content[data-type=map] .view-header{position:fixed;background:0 0!important;width:100%;z-index:99}body:not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-header-title{display:none}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-actions{background:0 0}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-content{height:100%}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .leaflet-top.leaflet-right{top:var(--header-height)}.obsidian-metatable{--metatable-font-size:calc(var(--font-adaptive-normal) - 2px);--metatable-font-family:var(--font-interface);--metatable-background:transparent;--metatable-foreground:var(--text-faint);--metatable-key-background:transparent;--metatable-key-border-width:0;--metatable-key-border-color:transparent;--metatable-value-background:transparent;padding-bottom:.5rem}.obsidian-metatable::part(key),.obsidian-metatable::part(value){border-bottom:0 solid var(--background-modifier-border);padding:.1rem 0;text-overflow:ellipsis;overflow:hidden}.obsidian-metatable::part(key){font-weight:400;color:var(--tx3);font-size:calc(var(--font-adaptive-normal) - 2px)}.obsidian-metatable::part(value){font-size:calc(var(--font-adaptive-normal) - 2px);color:var(--tx1)}body .NLT__header-menu-header-container{font-size:85%}body .NLT__button{background:0 0;box-shadow:none;color:var(--text-muted)}body .NLT__button:active,body .NLT__button:focus,body .NLT__button:hover{background:0 0;color:var(--text-normal);box-shadow:none}.NLT__app .NLT__button{background:0 0;border:1px solid var(--background-modifier-border);box-shadow:0 .5px 1px 0 var(--btn-shadow-color);color:var(--text-muted);padding:2px 8px}.NLT__app .NLT__button:active,.NLT__app .NLT__button:focus,.NLT__app .NLT__button:hover{background:0 0;border-color:var(--background-modifier-border-hover);color:var(--text-normal);box-shadow:0 .5px 1px 0 var(--btn-shadow-color)}.NLT__td:nth-last-child(2),.NLT__th:nth-last-child(2){border-right:0}.NLT__app .NLT__td:last-child,.NLT__app .NLT__th:last-child{padding-right:0}.NLT__app .NLT__th{background-image:none!important}.NLT__app th.NLT__selectable:hover{background-color:transparent;cursor:var(--cursor)}.NLT__menu .NLT__menu-container{background-color:var(--background-secondary)}.NLT__menu .NLT__header-menu-item{font-size:var(--font-adaptive-small)}.NLT__menu .NLT__header-menu{padding:6px 4px}.NLT__menu .NLT__drag-menu{font-size:var(--font-adaptive-small);padding:6px 4px}.NLT__menu svg{color:var(--text-faint);margin-right:6px}.NLT__menu .NLT__selectable:hover,.NLT__menu .NLT__selected{background:0 0}.NLT__menu .NLT__selected>.NLT__selectable{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__selectable{cursor:var(--cursor)}.NLT__menu div.NLT__selectable{min-width:110px;border-radius:var(--radius-m);padding:3px 8px 3px 4px;margin:1px 2px 1px;cursor:var(--cursor);height:auto;line-height:20px}.NLT__menu div.NLT__selectable:hover{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__textarea{font-size:var(--table-text-size)}.NLT__tfoot tr:hover td{background-color:transparent}.modal .quickAddPrompt>h1,.modal .quickAddYesNoPrompt h1{margin-top:0;text-align:left!important;font-size:var(--h1);font-weight:600}.modal .quickAddYesNoPrompt p{text-align:left!important}.modal .quickAddYesNoPrompt button{font-size:var(--font-ui-small)}.modal .yesNoPromptButtonContainer{font-size:var(--font-ui-small);justify-content:flex-end}.quickAddModal .modal-content{padding:20px 2px 5px}div#quick-explorer{display:flex}div#quick-explorer span.explorable{align-items:center;color:var(--text-muted);display:flex;font-size:var(--font-adaptive-smaller);line-height:16px}div#quick-explorer span.explorable:last-of-type{font-size:var(--font-adaptive-smaller)}div#quick-explorer span.explorable.selected,div#quick-explorer span.explorable:hover{background-color:unset!important}div#quick-explorer span.explorable.selected .explorable-name,div#quick-explorer span.explorable:hover .explorable-name{color:var(--text-normal)}div#quick-explorer span.explorable.selected .explorable-separator,div#quick-explorer span.explorable:hover .explorable-separator{color:var(--text-normal)}div#quick-explorer .explorable-name{padding:0 4px;border-radius:4px}div#quick-explorer .explorable-separator::before{content:"\00a0›"!important;font-size:1.3em;font-weight:400;margin:0}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover{background-color:var(--background-modifier-hover);color:var(--text-normal)}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected .menu-item-icon,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover .menu-item-icon{color:var(--text-normal)}.workspace-leaf-content[data-type=recent-files] .view-content{padding-top:10px}.mod-root .workspace-leaf-content[data-type=reminder-list] main{max-width:var(--max-width);margin:0 auto;padding:0}.modal .reminder-actions .later-select{font-size:var(--font-settings-small);vertical-align:bottom;margin-left:3px}.modal .reminder-actions .icon{line-height:1}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main{margin:0 auto;padding:15px}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .group-name{font-weight:500;color:var(--text-muted);font-size:var(--font-adaptive-small);padding-bottom:.5em;border-bottom:1px solid var(--background-modifier-border)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-list-item{line-height:1.3;font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .no-reminders{color:var(--text-faint)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-time{font-family:var(--font-text);font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-file{color:var(--text-faint)}body .modal .dtchooser{background-color:transparent}body .modal .dtchooser .reminder-calendar .year-month{font-weight:400;font-size:var(--font-adaptive-normal);padding-bottom:10px}body .modal .dtchooser .reminder-calendar .year-month .month,body .modal .dtchooser .reminder-calendar .year-month .year{color:var(--text-normal)}body .modal .dtchooser .reminder-calendar .year-month .month-nav:first-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav:last-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav{-webkit-mask-size:20px 20px;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;color:var(--text-faint);cursor:var(--cursor);border-radius:var(--radius-m);padding:0;width:30px;display:inline-block}body .modal .dtchooser .reminder-calendar .year-month .month-nav:hover{color:var(--text-muted)}body .modal .dtchooser .reminder-calendar th{padding:.5em 0;font-size:var(--font-adaptive-smallest);font-weight:500;text-transform:uppercase;letter-spacing:.1em}body .modal .dtchooser .reminder-calendar .calendar-date{transition:background-color .1s ease-in;padding:.3em 0;border-radius:var(--radius-m)}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected,body .modal .dtchooser .reminder-calendar .calendar-date:hover{transition:background-color .1s ease-in;background-color:var(--background-modifier-hover)!important}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected{font-weight:var(--bold-weight);color:var(--text-accent)!important}body .markdown-preview-view th,body .markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,body .table-view-table>thead>tr>th{cursor:var(--cursor);background-image:none}.markdown-source-view.mod-cm6 th{background-repeat:no-repeat;background-position:right}.style-settings-container[data-level="2"]{background:var(--background-secondary);border:1px solid var(--ui1);border-radius:5px;padding:10px 20px;margin:2px 0 2px -20px}.workspace-leaf-content[data-type=style-settings] div[data-id=instructions] .setting-item-name{display:none}.workspace-leaf-content[data-type=style-settings] div[data-id=instructions] .setting-item-description{color:var(--text-normal);font-size:var(--font-adaptive-smaller);padding-bottom:.5em}.workspace-leaf-content[data-type=style-settings] .view-content{padding:var(--size-4-4) 0}.workspace-leaf-content[data-type=style-settings] .view-content>div{width:var(--line-width);max-width:var(--max-width);margin:0 auto}.workspace-leaf-content[data-type=style-settings] .style-settings-heading[data-level="0"] .setting-item-name{padding-left:17px}.workspace-leaf-content[data-type=style-settings] .setting-item{max-width:100%;margin:0 auto}.workspace-leaf-content[data-type=style-settings] .setting-item-name{position:relative}.workspace-leaf-content[data-type=style-settings] .style-settings-collapse-indicator{position:absolute;left:0}.setting-item-heading.style-settings-heading,.style-settings-container .style-settings-heading{cursor:var(--cursor)}.modal.mod-settings .setting-item .pickr button.pcr-button{box-shadow:none;border-radius:40px;height:24px;width:24px}.setting-item .pickr .pcr-button:after,.setting-item .pickr .pcr-button:before{border-radius:40px;box-shadow:none;border:none}.setting-item.setting-item-heading.style-settings-heading.is-collapsed{border-bottom:1px solid var(--background-modifier-border)}.setting-item.setting-item-heading.style-settings-heading{border:0;padding:10px 0 5px;margin-bottom:0}.setting-item .style-settings-export,.setting-item .style-settings-import{text-decoration:none;font-size:var(--font-ui-small);font-weight:500;color:var(--text-muted);margin:0;padding:2px 8px;border-radius:5px;cursor:var(--cursor)}.setting-item .style-settings-export:hover,.setting-item .style-settings-import:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);cursor:var(--cursor)}.mod-root .workspace-leaf-content[data-type=style-settings] .style-settings-container .setting-item:not(.setting-item-heading){flex-direction:row;align-items:center;padding:.5em 0}.workspace-split:not(.mod-root) .workspace-leaf-content[data-type=style-settings] .setting-item-name{font-size:var(--font-adaptive-smaller)}.themed-color-wrapper>div+div{margin-top:0;margin-left:6px}.theme-light .themed-color-wrapper>.theme-light{background-color:transparent}.theme-light .themed-color-wrapper>.theme-dark{background-color:rgba(0,0,0,.8)}.theme-dark .themed-color-wrapper>.theme-dark{background-color:transparent}@media (max-width:400pt){.workspace-leaf-content[data-type=style-settings] .setting-item-name{font-size:var(--font-adaptive-small)}.workspace-leaf-content[data-type=style-settings] .setting-item-info:has(.search-input-container){width:100%;margin-right:0}}body .todoist-query-title{display:inline;font-size:var(--h4);font-variant:var(--h4-variant);letter-spacing:.02em;color:var(--h4-color);font-weight:var(--h4-weight);font-style:var(--h4-style)}body .is-live-preview .block-language-todoist{padding-left:0}ul.todoist-task-list>li.task-list-item .task-list-item-checkbox{margin:0}body .todoist-refresh-button{display:inline;float:right;background:0 0;padding:5px 6px 0;margin-right:0}body .is-live-preview .todoist-refresh-button{margin-right:30px}body .todoist-refresh-button:hover{box-shadow:none;background-color:var(--background-modifier-hover)}.todoist-refresh-button svg{width:15px;height:15px;opacity:var(--icon-muted)}ul.todoist-task-list{margin-left:-.25em}.is-live-preview ul.todoist-task-list{padding-left:0;margin-left:.5em;margin-block-start:0;margin-block-end:0}.contains-task-list.todoist-task-list .task-metadata{font-size:var(--font-adaptive-small);display:flex;color:var(--text-muted);justify-content:space-between;margin-left:.1em;margin-bottom:.25rem}.is-live-preview .contains-task-list.todoist-task-list .task-metadata{padding-left:calc(var(--checkbox-size) + .6em)}.todoist-task-list .task-date.task-overdue{color:var(--color-orange)}body .todoist-p1>input[type=checkbox]{border:1px solid var(--color-red)}body .todoist-p1>input[type=checkbox]:hover{opacity:.8}body .todoist-p2>input[type=checkbox]{border:1px solid var(--color-yellow)}body .todoist-p2>input[type=checkbox]:hover{opacity:.8}body .todoist-p3>input[type=checkbox]{border:1px solid var(--color-blue)}body .todoist-p3>input[type=checkbox]:hover{opacity:.8}body.theme-light{--color-axis-label:var(--tx1);--color-tick-label:var(--tx2);--color-dot-fill:var(--ax1);--color-line:var(--ui1)}.tracker-axis-label{font-family:var(--font-interface)}.tracker-axis{color:var(--ui2)}.tabs-manager .chat-view{--assistant-message-color:var(--background-primary);--padding-md:var(--size-4-2) var(--size-4-3);--padding-lg:var(--size-4-3) var(--size-4-3);--chat-box-color:var(--background-primary)}.tabs-manager .chat-view .ow-dialogue-timeline{padding:var(--size-4-4) var(--size-4-3) var(--size-4-8)}.tabs-manager .chat-view .ow-dialogue-timeline .ow-message-bubble .ow-content-wrapper{box-shadow:none;border-color:var(--background-modifier-border);border-radius:var(--radius-m)}.tabs-manager .chat-view .ow-dialogue-timeline .ow-message-bubble.ow-user-bubble .ow-content-wrapper{border-width:0;background-color:var(--interactive-accent)}.tabs-manager .chat-view .input-area .input-form .chat-box{border-radius:0;box-shadow:none;grid-row:1;grid-column:1/3;height:100px;border:none;padding:var(--size-4-3) var(--size-4-4) var(--size-4-2)}.tabs-manager .chat-view .input-area .input-form .chat-box:hover{height:100px}.tabs-manager .chat-view .input-area{padding:0;gap:0}.tabs-manager .chat-view .header{border-bottom:1px solid var(--background-modifier-border)}.tabs-manager .chat-view .input-form{border-top:1px solid var(--background-modifier-border)}.tabs-manager .chat-view .input-area .input-form .chat-box .info-bar span{color:var(--text-faint)}.tabs-manager .chat-view .input-area .input-form .btn-new-chat{display:none}.zoom-plugin-header{--link-color:var(--text-normal);--link-decoration:none;font-size:var(--font-ui-small);padding:0;justify-content:center;margin:var(--size-4-2) auto;max-width:var(--max-width)}.zoom-plugin-header>.zoom-plugin-title{text-decoration:none;max-width:15em;overflow:hidden}.zoom-plugin-header>.zoom-plugin-delimiter{color:var(--text-faint);padding:0 var(--size-4-1)}.theme-dark.minimal-atom-dark{--color-red-rgb:225,109,118;--color-orange-rgb:209,154,102;--color-yellow-rgb:206,193,103;--color-green-rgb:152,195,121;--color-cyan-rgb:88,182,194;--color-blue-rgb:98,175,239;--color-purple-rgb:198,120,222;--color-pink-rgb:225,109,118;--color-red:#e16d76;--color-orange:#d19a66;--color-yellow:#cec167;--color-green:#98c379;--color-cyan:#58b6c2;--color-blue:#62afef;--color-purple:#c678de;--color-pink:#e16d76}.theme-light.minimal-atom-light{--color-red-rgb:228,87,73;--color-orange-rgb:183,107,2;--color-yellow-rgb:193,131,2;--color-green-rgb:80,161,80;--color-cyan-rgb:13,151,179;--color-blue-rgb:98,175,239;--color-purple-rgb:166,38,164;--color-pink-rgb:228,87,73;--color-red:#e45749;--color-orange:#b76b02;--color-yellow:#c18302;--color-green:#50a150;--color-cyan:#0d97b3;--color-blue:#62afef;--color-purple:#a626a4;--color-pink:#e45749}.theme-light.minimal-atom-light{--base-h:106;--base-s:0%;--base-l:98%;--accent-h:231;--accent-s:76%;--accent-l:62%;--bg1:#fafafa;--bg2:#eaeaeb;--bg3:rgba(0,0,0,.1);--ui1:#dbdbdc;--ui2:#d8d8d9;--tx1:#232324;--tx2:#8e8e90;--tx3:#a0a1a8;--hl1:rgba(180,180,183,0.3);--hl2:rgba(209,154,102,0.35)}.theme-light.minimal-atom-light.minimal-light-white{--bg3:#eaeaeb}.theme-dark.minimal-atom-dark,.theme-light.minimal-atom-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-atom-light.minimal-light-contrast .titlebar,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-atom-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:12%;--base-l:18%;--accent-h:220;--accent-s:86%;--accent-l:65%;--bg1:#282c34;--bg2:#21252c;--bg3:#3a3f4b;--divider-color:#181a1f;--tab-outline-color:#181a1f;--tx1:#d8dae1;--tx2:#898f9d;--tx3:#5d6370;--hl1:rgba(114,123,141,0.3);--hl2:rgba(209,154,102,0.3);--sp1:#fff}.theme-dark.minimal-atom-dark.minimal-dark-black{--base-d:5%;--bg3:#282c34;--divider-color:#282c34;--tab-outline-color:#282c34}.theme-light.minimal-ayu-light{--color-red-rgb:230,80,80;--color-orange-rgb:250,141,62;--color-yellow-rgb:242,174,73;--color-green-rgb:108,191,67;--color-cyan-rgb:76,191,153;--color-blue-rgb:57,158,230;--color-purple-rgb:163,122,204;--color-pink-rgb:255,115,131;--color-red:#e65050;--color-orange:#fa8d3e;--color-yellow:#f2ae49;--color-green:#6CBF43;--color-cyan:#4cbf99;--color-blue:#399ee6;--color-purple:#a37acc;--color-pink:#ff7383}.theme-dark.minimal-ayu-dark{--color-red-rgb:255,102,102;--color-orange-rgb:250,173,102;--color-yellow-rgb:255,209,55;--color-green-rgb:135,217,108;--color-cyan-rgb:149,230,203;--color-blue-rgb:115,208,255;--color-purple-rgb:223,191,255;--color-pink-rgb:242,121,131;--color-red:#ff6666;--color-orange:#ffad66;--color-yellow:#ffd137;--color-green:#87D96C;--color-cyan:#95e6cb;--color-blue:#73d0ff;--color-purple:#dfbfff;--color-pink:#f27983}.theme-light.minimal-ayu-light{--base-h:210;--base-s:17%;--base-l:98%;--accent-h:36;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f8f9fa;--bg3:rgba(209,218,224,0.5);--ui1:#E6EAED;--tx1:#5C6165;--tx2:#8A9199;--tx3:#AAAEB0;--hl1:rgba(3,91,214,0.15)}.theme-dark.minimal-ayu-dark,.theme-light.minimal-ayu-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-ayu-light.minimal-light-contrast .titlebar,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-ayu-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:222;--base-s:22%;--base-l:15%;--accent-h:35;--accent-s:100%;--accent-l:60%;--bg1:#232937;--bg2:#1E2431;--bg3:rgba(51,61,80,0.5);--ui1:#333C4A;--ui2:#333C4A;--ui3:#333C4A;--tx1:#cccac2;--tx2:#707A8C;--tx3:#495063;--hl1:rgba(64,159,255,0.25)}.theme-dark.minimal-ayu-dark.minimal-dark-black{--accent-h:40;--accent-s:75%;--accent-l:61%;--bg3:#0E1017;--tx1:#BFBDB6;--divider-color:#11151C;--tab-outline-color:#11151C}.theme-light.minimal-catppuccin-light{--color-red-rgb:230,69,83;--color-orange-rgb:254,100,12;--color-yellow-rgb:223,142,29;--color-green-rgb:64,160,43;--color-cyan-rgb:23,146,154;--color-blue-rgb:33,102,246;--color-purple-rgb:137,56,239;--color-pink-rgb:234,119,203;--color-red:#E64553;--color-orange:#FE640C;--color-yellow:#DF8E1D;--color-green:#40A02B;--color-cyan:#17929A;--color-blue:#2166F6;--color-purple:#8938EF;--color-pink:#EA77CB}.theme-dark.minimal-catppuccin-dark{--color-red-rgb:235,153,156;--color-orange-rgb:239,160,118;--color-yellow-rgb:229,200,144;--color-green-rgb:166,209,138;--color-cyan-rgb:129,200,190;--color-blue-rgb:140,170,238;--color-purple-rgb:202,158,230;--color-pink-rgb:244,185,229;--color-red:#EB999C;--color-orange:#EFA076;--color-yellow:#E5C890;--color-green:#A6D18A;--color-cyan:#81C8BE;--color-blue:#8CAAEE;--color-purple:#CA9EE6;--color-pink:#F4B9E5}.theme-light.minimal-catppuccin-light{--base-h:228;--base-s:20%;--base-l:95%;--accent-h:11;--accent-s:59%;--accent-l:67%;--bg1:#F0F1F5;--bg2:#DCE0E8;--bg3:hsla(228,11%,65%,.25);--ui1:#CCD0DA;--ui2:#BCC0CC;--ui3:#ACB0BE;--tx1:#4D4F69;--tx2:#5D5F77;--tx3:#8D8FA2;--hl1:rgba(172,176,190,.3);--hl2:rgba(223,142,29,.3)}.theme-light.minimal-catppuccin-light.minimal-light-tonal{--bg2:#DCE0E8}.theme-light.minimal-catppuccin-light.minimal-light-white{--bg3:#F0F1F5;--ui1:#DCE0E8}.theme-dark.minimal-catppuccin-dark,.theme-light.minimal-catppuccin-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-catppuccin-light.minimal-light-contrast .titlebar,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-catppuccin-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:229;--base-s:19%;--base-l:23%;--accent-h:10;--accent-s:57%;--accent-l:88%;--bg1:#303446;--bg2:#242634;--bg3:hsla(229,13%,52%,0.25);--ui1:#41455A;--ui2:#51576D;--ui3:#626880;--tx1:#C6D0F5;--tx2:#A6ADCE;--tx3:#848BA7;--sp1:#242634;--hl1:rgba(98,104,128,.5);--hl2:rgba(223,142,29,.4)}.theme-dark.minimal-catppuccin-dark.minimal-dark-black{--ui1:#303446;--hl2:rgba(223,142,29,.5)}.theme-dark.minimal-dracula-dark{--color-red-rgb:255,85,85;--color-orange-rgb:255,184,108;--color-yellow-rgb:241,250,140;--color-green-rgb:80,250,123;--color-cyan-rgb:139,233,253;--color-blue-rgb:98,114,164;--color-purple-rgb:189,147,249;--color-pink-rgb:255,121,198;--color-red:#ff5555;--color-orange:#ffb86c;--color-yellow:#f1fa8c;--color-green:#50fa7b;--color-cyan:#8be9fd;--color-blue:#6272a4;--color-purple:#bd93f9;--color-pink:#ff79c6}.theme-dark.minimal-dracula-dark,.theme-light.minimal-dracula-light.minimal-light-contrast .titlebar,.theme-light.minimal-dracula-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-dracula-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:232;--base-s:16%;--base-l:19%;--accent-h:265;--accent-s:89%;--accent-l:78%;--bg1:#282a37;--bg2:#21222c;--ui2:#44475a;--ui3:#6272a4;--tx1:#f8f8f2;--tx2:#949FBE;--tx3:#6272a4;--hl1:rgba(134, 140, 170, 0.3);--hl2:rgba(189, 147, 249, 0.35)}.theme-dark.minimal-dracula-dark.minimal-dark-black{--ui1:#282a36}.theme-dark.minimal-eink-dark,.theme-light.minimal-eink-light{--collapse-icon-color:var(--text-normal);--icon-color-active:var(--bg1);--icon-color-hover:var(--bg1);--icon-color-focused:var(--bg1);--icon-opacity:1;--indentation-guide-color:var(--tx1);--indentation-guide-color-active:var(--tx1);--indentation-guide-width-active:3px;--interactive-normal:var(--bg1);--input-shadow:0 0 0 1px var(--tx1);--link-unresolved-opacity:1;--link-unresolved-decoration-style:dashed;--link-unresolved-decoration-color:var(--tx1);--metadata-label-background-active:var(--bg1);--metadata-input-background-active:var(--bg1);--modal-border-color:var(--tx1);--modal-border-width:2px;--nav-item-color-hover:var(--bg1);--nav-item-color-active:var(--bg1);--prompt-border-color:var(--tx1);--prompt-border-width:2px;--calendar-dot-active:var(--bg1);--calendar-dot-today:var(--bg1);--calendar-text-active:var(--bg1);--tag-border-width:1.25px;--tag-background:transparent;--tag-background-hover:transparent;--tag-border-color:var(--tx1);--tag-border-color-hover:var(--tx1);--text-on-accent:var(--bg1);--text-on-accent-inverted:var(--bg1)}.theme-dark.minimal-eink-dark.tabs-modern,.theme-light.minimal-eink-light.tabs-modern{--minimal-tab-text-color-active:var(--bg1);--tab-text-color-focused-active-current:var(--bg1)}.theme-dark.minimal-eink-dark .suggestion-container,.theme-light.minimal-eink-light .suggestion-container{border-width:3px}.theme-dark.minimal-eink-dark .cm-s-obsidian span.cm-inline-code,.theme-dark.minimal-eink-dark .markdown-rendered code,.theme-light.minimal-eink-light .cm-s-obsidian span.cm-inline-code,.theme-light.minimal-eink-light .markdown-rendered code{font-weight:600}.theme-dark.minimal-eink-dark .metadata-property-icon,.theme-light.minimal-eink-light .metadata-property-icon{--icon-color-focused:var(--tx1)}.theme-dark.minimal-eink-dark .checkbox-container,.theme-light.minimal-eink-light .checkbox-container{background-color:var(--bg1);box-shadow:0 0 0 1px var(--tx1);--toggle-thumb-color:var(--tx1)}.theme-dark.minimal-eink-dark .checkbox-container.is-enabled,.theme-light.minimal-eink-light .checkbox-container.is-enabled{background-color:var(--tx1);--toggle-thumb-color:var(--bg1)}.theme-dark.minimal-eink-dark .cm-s-obsidian span.cm-formatting-highlight,.theme-dark.minimal-eink-dark .cm-s-obsidian span.cm-highlight,.theme-dark.minimal-eink-dark .community-item .suggestion-highlight,.theme-dark.minimal-eink-dark .dropdown:hover,.theme-dark.minimal-eink-dark .horizontal-tab-nav-item:hover,.theme-dark.minimal-eink-dark .markdown-rendered mark,.theme-dark.minimal-eink-dark .status-bar .plugin-sync:hover .sync-status-icon.mod-success,.theme-dark.minimal-eink-dark .status-bar .plugin-sync:hover .sync-status-icon.mod-working,.theme-dark.minimal-eink-dark .status-bar-item.mod-clickable:hover,.theme-dark.minimal-eink-dark .suggestion-item.is-selected,.theme-dark.minimal-eink-dark .text-icon-button:hover,.theme-dark.minimal-eink-dark .vertical-tab-nav-item:hover,.theme-dark.minimal-eink-dark button,.theme-dark.minimal-eink-dark select:hover,.theme-dark.minimal-eink-dark:not(.colorful-active) .horizontal-tab-nav-item.is-active,.theme-dark.minimal-eink-dark:not(.colorful-active) .vertical-tab-nav-item.is-active,.theme-light.minimal-eink-light .cm-s-obsidian span.cm-formatting-highlight,.theme-light.minimal-eink-light .cm-s-obsidian span.cm-highlight,.theme-light.minimal-eink-light .community-item .suggestion-highlight,.theme-light.minimal-eink-light .dropdown:hover,.theme-light.minimal-eink-light .horizontal-tab-nav-item:hover,.theme-light.minimal-eink-light .markdown-rendered mark,.theme-light.minimal-eink-light .status-bar .plugin-sync:hover .sync-status-icon.mod-success,.theme-light.minimal-eink-light .status-bar .plugin-sync:hover .sync-status-icon.mod-working,.theme-light.minimal-eink-light .status-bar-item.mod-clickable:hover,.theme-light.minimal-eink-light .suggestion-item.is-selected,.theme-light.minimal-eink-light .text-icon-button:hover,.theme-light.minimal-eink-light .vertical-tab-nav-item:hover,.theme-light.minimal-eink-light button,.theme-light.minimal-eink-light select:hover,.theme-light.minimal-eink-light:not(.colorful-active) .horizontal-tab-nav-item.is-active,.theme-light.minimal-eink-light:not(.colorful-active) .vertical-tab-nav-item.is-active{color:var(--bg1)}.theme-light.minimal-eink-light{--base-h:0;--base-s:0%;--base-l:100%;--accent-h:0;--accent-s:0%;--accent-l:0%;--ax3:#000;--bg1:#fff;--bg2:#fff;--bg3:#000;--ui1:#000;--ui2:#000;--ui3:#000;--tx1:#000;--tx2:#000;--tx3:#000;--hl1:#000;--hl2:#000;--sp1:#fff;--text-on-accent:#fff;--background-modifier-cover:rgba(235,235,235,1)}.theme-light.minimal-eink-light.minimal-light-white{--bg3:#fff}.theme-dark.minimal-eink-dark,.theme-light.minimal-eink-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-eink-light.minimal-light-contrast .titlebar,.theme-light.minimal-eink-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-eink-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-eink-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:0;--base-s:0%;--base-l:0%;--accent-h:0;--accent-s:0%;--accent-l:100%;--ax3:#fff;--bg1:#000;--bg2:#000;--bg3:#fff;--ui1:#fff;--ui2:#fff;--ui3:#fff;--tx1:#fff;--tx2:#fff;--tx3:#fff;--hl1:#fff;--hl2:#fff;--sp1:#000;--background-modifier-cover:rgba(20,20,20,1)}.theme-light.minimal-eink-light.minimal-light-tonal{--bg3:#bbb;--ui1:#bbb;--modal-border-color:var(--ui1);--prompt-border-color:var(--ui1)}.theme-dark.minimal-eink-dark.minimal-dark-tonal{--bg3:#444;--ui1:#444;--modal-border-color:var(--ui1);--prompt-border-color:var(--ui1)}.theme-light.minimal-everforest-light{--color-red-rgb:248,85,82;--color-orange-rgb:245,125,38;--color-yellow-rgb:223,160,0;--color-green-rgb:141,161,1;--color-cyan-rgb:53,167,124;--color-blue-rgb:56,148,196;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#f85552;--color-orange:#f57d26;--color-yellow:#dfa000;--color-green:#8da101;--color-cyan:#35a77c;--color-blue:#3795C5;--color-purple:#df69ba;--color-pink:#df69ba}.theme-dark.minimal-everforest-dark{--color-red-rgb:230,126,128;--color-orange-rgb:230,152,117;--color-yellow-rgb:219,188,127;--color-green-rgb:167,192,128;--color-cyan-rgb:131,192,146;--color-blue-rgb:127,187,179;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#e67e80;--color-orange:#e69875;--color-yellow:#dbbc7f;--color-green:#a7c080;--color-cyan:#83c092;--color-blue:#7fbbb3;--color-purple:#d699b6;--color-pink:#d699b6}.theme-light.minimal-everforest-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:83;--accent-s:36%;--accent-l:53%;--bg1:#fdf6e3;--bg2:#efebd4;--bg3:rgba(226,222,198,.5);--ui1:#e0dcc7;--ui2:#bec5b2;--ui3:#bec5b2;--tx1:#5C6A72;--tx2:#829181;--tx3:#a6b0a0;--hl1:rgba(198,214,152,.4);--hl2:rgba(222,179,51,.3)}.theme-light.minimal-everforest-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-light.minimal-everforest-light.minimal-light-white{--bg3:#f3efda;--ui1:#edead5}.theme-dark.minimal-everforest-dark,.theme-light.minimal-everforest-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-everforest-light.minimal-light-contrast .titlebar,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-everforest-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:15%;--base-l:23%;--accent-h:81;--accent-s:34%;--accent-l:63%;--bg1:#2d353b;--bg2:#232a2e;--bg3:rgba(71,82,88,0.5);--ui1:#475258;--ui2:#4f585e;--ui3:#525c62;--tx1:#d3c6aa;--tx2:#9da9a0;--tx3:#7a8478;--hl1:rgba(134,70,93,.5);--hl2:rgba(147,185,96,.3)}.theme-dark.minimal-everforest-dark.minimal-dark-black{--hl1:rgba(134,70,93,.4);--ui1:#2b3339}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light{--color-red-rgb:204,36,29;--color-orange-rgb:214,93,14;--color-yellow-rgb:215,153,33;--color-green-rgb:152,151,26;--color-cyan-rgb:104,157,106;--color-blue-rgb:69,133,136;--color-purple-rgb:177,98,134;--color-pink-rgb:177,98,134;--color-red:#cc241d;--color-orange:#d65d0e;--color-yellow:#d79921;--color-green:#98971a;--color-cyan:#689d6a;--color-blue:#458588;--color-purple:#b16286;--color-pink:#b16286}.theme-light.minimal-gruvbox-light{--base-h:49;--base-s:92%;--base-l:89%;--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#fcf2c7;--bg2:#f2e6bd;--bg3:#ebd9b3;--ui1:#ebdbb2;--ui2:#d5c4a1;--ui3:#bdae93;--tx1:#282828;--tx2:#7c7065;--tx3:#a89a85;--hl1:rgba(192,165,125,.3);--hl2:rgba(215,153,33,.4)}.theme-light.minimal-gruvbox-light.minimal-light-tonal{--bg2:#fcf2c7}.theme-light.minimal-gruvbox-light.minimal-light-white{--bg3:#faf5d7;--ui1:#f2e6bd}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-gruvbox-light.minimal-light-contrast .titlebar,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-gruvbox-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#282828;--bg2:#1e2021;--bg3:#3d3836;--bg3:rgba(62,57,55,0.5);--ui1:#3c3836;--ui2:#504945;--ui3:#665c54;--tx1:#fbf1c7;--tx2:#bdae93;--tx3:#7c6f64;--hl1:rgba(173,149,139,0.3);--hl2:rgba(215,153,33,.4)}.theme-dark.minimal-gruvbox-dark.minimal-dark-black{--hl1:rgba(173,149,139,0.4);--ui1:#282828}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light{--color-red-rgb:255,59,49;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,204,0;--color-green-rgb:42,205,65;--color-cyan-rgb:2,199,190;--color-blue-rgb:2,122,255;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#ff3b31;--color-orange:#ff9502;--color-yellow:#ffcc00;--color-green:#2acd41;--color-cyan:#02c7be;--color-blue:#027aff;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-macos-light{--base-h:106;--base-s:0%;--base-l:94%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f0f0f0;--bg3:rgba(0,0,0,.1);--ui1:#e7e7e7;--tx1:#454545;--tx2:#808080;--tx3:#b0b0b0;--hl1:#b3d7ff}.theme-light.minimal-macos-light.minimal-light-tonal{--bg1:#f0f0f0;--bg2:#f0f0f0}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-macos-light.minimal-light-contrast .titlebar,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-macos-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:106;--base-s:0%;--base-l:12%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#1e1e1e;--bg2:#282828;--bg3:rgba(255,255,255,0.11);--divider-color:#000;--tab-outline-color:#000;--ui1:#373737;--ui2:#515151;--ui3:#595959;--tx1:#dcdcdc;--tx2:#8c8c8c;--tx3:#686868;--hl1:rgba(98,169,252,0.5);--sp1:#fff}.theme-dark.minimal-macos-dark.minimal-dark-black{--divider-color:#1e1e1e;--tab-outline-color:#1e1e1e}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light{--color-red-rgb:191,97,106;--color-orange-rgb:208,138,112;--color-yellow-rgb:235,203,139;--color-green-rgb:163,190,140;--color-cyan-rgb:136,192,208;--color-blue-rgb:129,161,193;--color-purple-rgb:180,142,173;--color-pink-rgb:180,142,173;--color-red:#BF616A;--color-orange:#D08770;--color-yellow:#EBCB8B;--color-green:#A3BE8C;--color-cyan:#88C0D0;--color-blue:#81A1C1;--color-purple:#B48EAD;--color-pink:#B48EAD}.theme-light.minimal-nord-light{--base-h:221;--base-s:27%;--base-l:94%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#fff;--bg2:#eceff4;--bg3:rgba(157,174,206,0.25);--ui1:#d8dee9;--ui2:#BBCADC;--ui3:#81a1c1;--tx1:#2e3440;--tx2:#7D8697;--tx3:#ADB1B8;--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-nord-light.minimal-light-contrast .titlebar,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-nord-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:16%;--base-l:22%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#2e3440;--bg2:#3b4252;--bg3:rgba(135,152,190,0.15);--ui1:#434c5e;--ui2:#58647b;--ui3:#58647b;--tx1:#d8dee9;--tx2:#9eafcc;--tx3:#4c566a;--hl1:rgba(129,142,180,0.3);--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark.minimal-dark-black{--ui1:#2e3440}.theme-light.minimal-notion-light{--base-h:39;--base-s:18%;--base-d:96%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg2:#f7f6f4;--bg3:#e8e7e4;--ui1:#ededec;--ui2:#dbdbda;--ui3:#aaa9a5;--tx1:#37352f;--tx2:#72706c;--tx3:#aaa9a5;--hl1:rgba(131,201,229,0.3);--link-weight:500}.theme-dark.minimal-notion-dark,.theme-light.minimal-notion-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-notion-light.minimal-light-contrast .titlebar,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-notion-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:8%;--base-d:20%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg1:#2f3437;--bg2:#373c3f;--bg3:#4b5053;--ui1:#3e4245;--ui2:#585d5f;--ui3:#585d5f;--tx1:#ebebeb;--tx2:#909295;--tx3:#585d5f;--hl1:rgba(57,134,164,0.3);--link-weight:500}.theme-dark.minimal-notion-dark.minimal-dark-black{--base-d:5%;--bg3:#232729;--ui1:#2f3437}.theme-light.minimal-rose-pine-light{--color-red-rgb:180,99,122;--color-orange-rgb:215,130,125;--color-yellow-rgb:234,157,53;--color-green-rgb:40,105,131;--color-cyan-rgb:87,147,159;--color-blue-rgb:87,147,159;--color-purple-rgb:144,122,169;--color-pink-rgb:144,122,169;--color-red:#b4637a;--color-orange:#d7827e;--color-yellow:#ea9d34;--color-green:#286983;--color-cyan:#56949f;--color-blue:#56949f;--color-purple:#907aa9;--color-pink:#907aa9}.theme-dark.minimal-rose-pine-dark{--color-red-rgb:234,111,146;--color-orange-rgb:233,155,151;--color-yellow-rgb:246,193,119;--color-green-rgb:47,116,143;--color-cyan-rgb:157,207,215;--color-blue-rgb:157,207,215;--color-purple-rgb:196,167,231;--color-pink-rgb:196,167,231;--color-red:#eb6f92;--color-orange:#ea9a97;--color-yellow:#f6c177;--color-green:#31748f;--color-cyan:#9ccfd8;--color-blue:#9ccfd8;--color-purple:#c4a7e7;--color-pink:#c4a7e7}.theme-light.minimal-rose-pine-light{--base-h:32;--base-s:57%;--base-l:95%;--accent-h:3;--accent-s:53%;--accent-l:67%;--bg1:#fffaf3;--bg2:#faf4ed;--bg3:rgba(233,223,218,0.5);--ui1:#EAE3E1;--ui2:#dfdad9;--ui3:#cecacd;--tx1:#575279;--tx2:#797593;--tx3:#9893a5;--hl1:#EAE3E1}.theme-dark.minimal-rose-pine-dark,.theme-light.minimal-rose-pine-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-rose-pine-light.minimal-light-contrast .titlebar,.theme-light.minimal-rose-pine-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-rose-pine-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-rose-pine-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:247;--base-s:23%;--base-l:15%;--accent-h:2;--accent-s:55%;--accent-l:83%;--bg1:#1f1d2e;--bg2:#191724;--bg3:rgba(68,66,86,0.5);--ui1:#312F41;--ui2:#403d52;--ui3:#524f67;--tx1:#e0def4;--tx2:#908caa;--tx3:#6e6a86;--hl1:#403d52}.theme-dark.minimal-rose-pine-dark.minimal-dark-black{--ui1:#21202e}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light{--color-red-rgb:220,50,47;--color-orange-rgb:203,77,22;--color-yellow-rgb:181,137,0;--color-green-rgb:133,153,0;--color-cyan-rgb:42,161,152;--color-blue-rgb:38,139,210;--color-purple-rgb:108,113,196;--color-pink-rgb:211,54,130;--color-red:#dc322f;--color-orange:#cb4b16;--color-yellow:#b58900;--color-green:#859900;--color-cyan:#2aa198;--color-blue:#268bd2;--color-purple:#6c71c4;--color-pink:#d33682}.theme-light.minimal-solarized-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:205;--accent-s:70%;--accent-l:48%;--bg1:#fdf6e3;--bg2:#eee8d5;--bg3:rgba(0,0,0,0.062);--ui1:#e9e1c8;--ui2:#d0cab8;--ui3:#d0cab8;--tx1:#073642;--tx2:#586e75;--tx3:#ABB2AC;--tx4:#586e75;--hl1:rgba(202,197,182,0.3);--hl2:rgba(203,75,22,0.3)}.theme-light.minimal-solarized-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-solarized-light.minimal-light-contrast .titlebar,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-solarized-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:205;--accent-s:70%;--accent-l:48%;--base-h:193;--base-s:98%;--base-l:11%;--bg1:#002b36;--bg2:#073642;--bg3:rgba(255,255,255,0.062);--ui1:#19414B;--ui2:#274850;--ui3:#31535B;--tx1:#93a1a1;--tx2:#657b83;--tx3:#31535B;--tx4:#657b83;--hl1:rgba(15,81,98,0.3);--hl2:rgba(203, 75, 22, 0.35)}.theme-dark.minimal-solarized-dark.minimal-dark-black{--hl1:rgba(15,81,98,0.55);--ui1:#002b36}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light{--color-red-rgb:255,48,108;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,213,0;--color-green-rgb:75,191,94;--color-cyan-rgb:73,174,164;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#FF306C;--color-orange:#ff9502;--color-yellow:#FFD500;--color-green:#4BBF5E;--color-cyan:#49AEA4;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-things-light{--color-blue-rgb:27,97,194;--color-blue:#1b61c2}.theme-dark.minimal-things-dark{--color-blue-rgb:77,149,247;--color-blue:#4d95f7}.theme-light.minimal-things-light{--accent-h:215;--accent-s:76%;--accent-l:43%;--bg1:white;--bg2:#f5f6f8;--bg3:rgba(162,177,187,0.25);--ui1:#eef0f4;--ui2:#D8DADD;--ui3:#c1c3c6;--tx1:#26272b;--tx2:#7D7F84;--tx3:#a9abb0;--hl1:#cae2ff}.theme-light.minimal-things-light.minimal-light-tonal{--ui1:#e6e8ec}.theme-light.minimal-things-light.minimal-light-white{--bg3:#f5f6f8}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-things-light.minimal-light-contrast .titlebar,.theme-light.minimal-things-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-things-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-things-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:218;--base-s:9%;--base-l:15%;--accent-h:215;--accent-s:91%;--accent-l:64%;--bg1:#24262a;--bg2:#202225;--bg3:#3d3f41;--divider-color:#17191c;--tab-outline-color:#17191c;--ui1:#3A3B3F;--ui2:#45464a;--ui3:#6c6e70;--tx1:#fbfbfb;--tx2:#CBCCCD;--tx3:#6c6e70;--hl1:rgba(40,119,236,0.35);--sp1:#fff}.theme-dark.minimal-things-dark.minimal-dark-black{--base-d:5%;--bg3:#24262a;--divider-color:#24262a;--tab-outline-color:#24262a} /* Plugin compatibility */ /* @plugins @@ -90,11 +90,11 @@ id: minimal-style settings: - id: instructions - title: Welcome 👋 + title: Documentation type: heading level: 2 collapsed: true - description: Use the Minimal Theme Settings plugin to access hotkeys, adjust features, select fonts, and choose from preset color schemes. Use the settings below for more granular customization. Visit minimal.guide for documentation. + description: Use the Minimal Theme Settings plugin to set hotkeys, adjust features, select fonts, and choose from preset color schemes. Use the settings below for more granular customization. Go to https://minimal.guide for documentation. - id: interface title: Interface colors @@ -270,27 +270,6 @@ settings: format: hex default-light: '#' default-dark: '#' - - - id: active-line - title: Active line - type: heading - level: 2 - collapsed: true - - - id: active-line-on - title: Highlight active line - description: Adds a background to current line in editor - type: class-toggle - default: false - - - id: active-line-bg - title: Active line background - description: Using a low opacity color is recommended to avoid conflicting with highlights - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - id: blockquotes title: Blockquotes @@ -525,6 +504,12 @@ settings: description: Disables word wrapping in table cells, and trims long text type: class-toggle default: true + - + id: dataview-inline-lists + title: Force tables lists inline + description: Makes lists inside of table cells inline and comma separated + type: class-toggle + default: false - id: max-col-width title: Dataview maximum column width @@ -546,7 +531,7 @@ settings: - id: embed-hide-title title: Hide embed titles - description: Hide title of the transcluded file + description: Hide title of the transcluded file (if strict embed is off) type: class-toggle default: false - @@ -555,6 +540,12 @@ settings: description: Transcluded text is underlined. Can be enabled per file using the embed-underline helper class type: class-toggle default: false + - + id: embed-max-height + title: Maximum height of embeds + type: variable-text + description: For transcluded text, accepts valid CSS units + default: '' - id: embed-decoration-style title: Embedded text underline style @@ -586,6 +577,14 @@ settings: format: hex default-light: '#' default-dark: '#' + - + id: embed-background + title: Embed background + type: variable-themed-color + opacity: true + format: hex + default-light: '#' + default-dark: '#' - id: graphs title: Graphs @@ -1110,6 +1109,22 @@ settings: min: 0.25 max: 1 step: 0.05 + - + id: image-radius + title: Image radius + description: Rounded corners for images + type: variable-number-slider + default: 4 + min: 0 + max: 16 + step: 1 + format: px + - + id: image-blend-light + title: Blend images in light mode + description: Allow images to blend into the color scheme background color + type: class-toggle + default: false - id: zoom-off title: Disable image zoom @@ -1246,6 +1261,58 @@ settings: format: hex default-light: '#' default-dark: '#' + - + id: active-line + title: Line numbers + type: heading + level: 2 + collapsed: true + - + id: active-line-on + title: Highlight active line + description: Adds a background to current line in editor + type: class-toggle + default: false + - + id: folding-offset + title: Gutter offset + description: Width of the file margin used for gutter + type: variable-number-slider + default: 32 + min: 0 + max: 60 + step: 1 + format: px + - + id: gutter-background + title: Gutter background + type: variable-themed-color + format: hex + default-light: '#' + default-dark: '#' + - + id: line-number-color + title: Line number color + type: variable-themed-color + format: hex + default-light: '#' + default-dark: '#' + - + id: line-number-color-active + title: Active line number color + type: variable-themed-color + format: hex + default-light: '#' + default-dark: '#' + - + id: active-line-bg + title: Active line background + description: Using a low opacity color is recommended to avoid conflicting with highlights + type: variable-themed-color + opacity: true + format: hex + default-light: '#' + default-dark: '#' - id: lists title: Lists and tasks @@ -1340,6 +1407,60 @@ settings: min: 0.25 max: 1 step: 0.05 + - + id: progress + title: Progress bars + type: heading + level: 2 + collapsed: true + - + id: progress-complete + title: Completed progress bar color + description: Defaults to your accent color + type: variable-themed-color + format: hex + default-light: '#' + default-dark: '#' + - + id: properties + title: Properties + type: heading + level: 2 + collapsed: true + - + id: metadata-heading-off + title: Hide properties heading + description: Hide "Properties" heading above properties + type: class-toggle + default: false + - + id: metadata-add-property-off + title: Hide "Add property" button + description: Hide "Add property" button below properties + type: class-toggle + default: false + - + id: metadata-icons-off + title: Hide property icons + description: Hide icons next to property names + type: class-toggle + default: false + - + id: metadata-dividers + title: Property row lines + description: Display borders between properties + type: class-toggle + default: false + - + id: metadata-label-width + title: Property name width + description: Width for the name of the property + type: variable-number-slider + format: rem + default: 8 + min: 4 + max: 12 + step: 0.25 - id: sidebars title: Sidebars @@ -1348,7 +1469,7 @@ settings: collapsed: true - id: sidebar-lines-off - title: Disable sidebar relationship lines + title: Hide sidebar relationship lines description: Turns off lines in file navigation type: class-toggle - @@ -1373,6 +1494,7 @@ settings: - label: Underline value: sidebar-tabs-underline + - id: mobile-left-sidebar-width title: Mobile left sidebar width @@ -1387,6 +1509,26 @@ settings: type: variable-number default: 240 format: pt + - + id: ribbon + title: Ribbon + type: heading + level: 2 + collapsed: true + - + id: ribbon-style + title: Ribbon style + description: Ribbon menu can be hidden using the Hider plugin + type: class-select + allowEmpty: false + default: ribbon-hidden + options: + - + label: Default + value: ribbon-hidden + - + label: Bottom left hover + value: ribbon-bottom-left-hover - id: tables title: Tables @@ -1401,21 +1543,21 @@ settings: default: 1em - id: maximize-tables-off - title: Maximize table width (beta) - description: Tables fill the width of the line + title: Maximize table width + description: Determines how wide tables should behave when they become wider than the line width type: class-select allowEmpty: false - default: maximize-tables + default: maximize-tables-off options: - - label: Always - value: maximize-tables + label: Fit to line width + value: maximize-tables-off - - label: Automatic + label: Overflow line width value: maximize-tables-auto - - label: Never - value: maximize-tables-off + label: Always fill + value: maximize-tables - id: row-lines title: Row lines @@ -1506,6 +1648,9 @@ settings: - label: Modern value: tabs-modern + - + label: Square + value: tabs-plain-square - label: Underline value: tabs-underline @@ -1707,11 +1852,17 @@ settings: max: 900 step: 100 - - id: spacing-p + id: p-spacing title: Paragraph spacing - description: Space between paragraphs in reading mode + description: Space between paragraphs in reading mode (Obsidian 1.3.7+) type: variable-text - default: 0.75em + default: 1.75rem + - + id: heading-spacing + title: Heading spacing + description: Space between paragraphs and headings in reading mode (Obsidian 1.3.7+) + type: variable-text + default: 2em - id: titles title: Titles @@ -1979,15 +2130,5 @@ settings: type: variable-number default: 11 format: px - - - id: folding-offset - title: Folding offset - description: Width of the left margin used for folding indicators - type: variable-number-slider - default: 10 - min: 0 - max: 30 - step: 1 - format: px */ diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 22ca0f8..eba794c 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,24 +13,13 @@ "state": { "type": "markdown", "state": { - "file": "Books/从零开始深入学习Spring/IoC.md", + "file": "Books/动手学深度学习/引言.md", "mode": "source", "source": false } } - }, - { - "id": "0f9b62500f9637c6", - "type": "leaf", - "state": { - "type": "release-notes", - "state": { - "currentVersion": "1.3.5" - } - } } - ], - "currentTab": 1 + ] } ], "direction": "vertical" @@ -104,7 +93,7 @@ "state": { "type": "backlink", "state": { - "file": "Books/从零开始深入学习Spring/IoC.md", + "file": "Books/动手学深度学习/引言.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -121,7 +110,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "Books/从零开始深入学习Spring/IoC.md", + "file": "Books/动手学深度学习/引言.md", "linksCollapsed": false, "unlinkedCollapsed": true } @@ -144,7 +133,7 @@ "state": { "type": "outline", "state": { - "file": "Books/从零开始深入学习Spring/IoC.md" + "file": "Books/动手学深度学习/引言.md" } } }, @@ -165,25 +154,27 @@ }, "left-ribbon": { "hiddenItems": { - "switcher:打开快速切换": false, - "graph:查看关系图谱": false, - "templates:插入模板": false, - "command-palette:打开命令面板": false, + "switcher:Open quick switcher": false, + "graph:Open graph view": false, + "templates:Insert template": false, + "command-palette:Open command palette": false, "oz-clear-unused-images:Clear Unused Images": false, - "table-editor-obsidian:Advanced Tables Toolbar": false, - "obsidian-excalidraw-plugin:新建 Excalidraw 绘图": false + "obsidian-excalidraw-plugin:Create new drawing": false, + "notion-like-tables:Create Notion-Like table": false, + "table-editor-obsidian:Advanced Tables Toolbar": false } }, - "active": "0f9b62500f9637c6", + "active": "82a60b2f86acd8d6", "lastOpenFiles": [ + "Books/Java Guide/基础语法.md", + "Books/Java并发编程/Java并发编程.md", "Books/动手学深度学习/引言.md", "Books/从零开始深入学习Spring/IoC.md", + "Books/Vim实用技巧/一、入门导读.md", "Books/从零开始深入学习Spring", - "Books/Java Guide/基础语法.md", "Books/Java Guide", "Temp/Interview.md", "Books/代码随想录/代码随想录.md", - "Books/Vim实用技巧/一、入门导读.md", "Books/代码随想录/().md", "_notion-like-tables/table-id-ncD19n.md", "未命名.md", diff --git a/Books/Java Guide/基础语法.md b/Books/Java Guide/基础语法.md deleted file mode 100644 index df5aed1..0000000 --- a/Books/Java Guide/基础语法.md +++ /dev/null @@ -1 +0,0 @@ -重写:两同两小一大 \ No newline at end of file diff --git a/Books/Java并发编程/Java并发编程.md b/Books/Java并发编程/Java并发编程.md deleted file mode 100644 index e69de29..0000000 diff --git a/Books/从零开始深入学习Spring/IoC.md b/Books/从零开始深入学习Spring/IoC.md deleted file mode 100644 index 630bb3e..0000000 --- a/Books/从零开始深入学习Spring/IoC.md +++ /dev/null @@ -1 +0,0 @@ -Inverse of Control,将对象的控制权转交给 Spring 框架,由框架创建和管理对象。 \ No newline at end of file